summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorØyvind Grønnesby <oyving@verizonmedia.com>2021-10-08 12:50:02 +0200
committerØyvind Grønnesby <oyving@verizonmedia.com>2021-10-08 12:50:02 +0200
commit77ef010b968fca024196928eff7fba6ea092bc6e (patch)
tree78cece60ce6a2fc273afac191062145bd6f2363d
parent66f9d8574f87089d18df88358b381b4890ce7fe5 (diff)
parentdaaf9321988ba1ba0fd81ee3853fdd51dc692f26 (diff)
Merge remote-tracking branch 'origin/master' into ogronnesby/billing-service
-rw-r--r--.copr/Makefile22
-rw-r--r--.gitignore1
-rw-r--r--CMakeLists.txt4
-rw-r--r--CONTRIBUTING.md62
-rw-r--r--Code-of-Conduct.md2
-rw-r--r--ERRATA.md2
-rw-r--r--GOVERNANCE.md58
-rw-r--r--NOTICES2
-rw-r--r--README-cmake.md2
-rw-r--r--README.md6
-rw-r--r--TODO.md2
-rw-r--r--abi-check-plugin/pom.xml2
-rw-r--r--ann_benchmark/CMakeLists.txt2
-rw-r--r--ann_benchmark/src/tests/ann_benchmark/CMakeLists.txt2
-rw-r--r--ann_benchmark/src/tests/ann_benchmark/test_angular.py2
-rw-r--r--ann_benchmark/src/tests/ann_benchmark/test_euclidean.py2
-rw-r--r--ann_benchmark/src/vespa/ann_benchmark/CMakeLists.txt2
-rw-r--r--ann_benchmark/src/vespa/ann_benchmark/setup.py2
-rw-r--r--ann_benchmark/src/vespa/ann_benchmark/vespa_ann_benchmark.cpp2
-rw-r--r--annotations/pom.xml2
-rw-r--r--annotations/src/main/java/com/yahoo/api/annotations/PublicApi.java2
-rw-r--r--annotations/src/main/java/com/yahoo/api/annotations/package-info.java2
-rw-r--r--annotations/src/main/java/com/yahoo/osgi/annotation/ExportPackage.java2
-rw-r--r--annotations/src/main/java/com/yahoo/osgi/annotation/Version.java2
-rw-r--r--annotations/src/main/java/com/yahoo/osgi/annotation/package-info.java2
-rw-r--r--application-model/CMakeLists.txt2
-rw-r--r--application-model/pom.xml2
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstance.java2
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceId.java5
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceReference.java2
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/ClusterId.java4
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/ConfigId.java2
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/HostName.java2
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceCluster.java28
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceClusterKey.java2
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceInstance.java2
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceStatus.java9
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceType.java2
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/TenantId.java2
-rw-r--r--application-model/src/main/java/com/yahoo/vespa/applicationmodel/package-info.java2
-rw-r--r--application-preprocessor/CMakeLists.txt2
-rw-r--r--application-preprocessor/pom.xml2
-rw-r--r--application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java2
-rw-r--r--application-preprocessor/src/main/sh/vespa-preprocess-application2
-rw-r--r--application-preprocessor/src/test/java/com/yahoo/application/preprocessor/ApplicationPreprocessorTest.java2
-rw-r--r--application-preprocessor/src/test/resources/simple/hosts.xml2
-rw-r--r--application-preprocessor/src/test/resources/simple/schemas/music.sd2
-rw-r--r--application-preprocessor/src/test/resources/simple/services.xml2
-rw-r--r--application/pom.xml33
-rw-r--r--application/src/main/java/com/yahoo/application/Application.java20
-rw-r--r--application/src/main/java/com/yahoo/application/ApplicationBuilder.java2
-rw-r--r--application/src/main/java/com/yahoo/application/Networking.java2
-rw-r--r--application/src/main/java/com/yahoo/application/container/ApplicationException.java2
-rw-r--r--application/src/main/java/com/yahoo/application/container/DocumentAccesses.java2
-rw-r--r--application/src/main/java/com/yahoo/application/container/DocumentProcessing.java2
-rw-r--r--application/src/main/java/com/yahoo/application/container/JDisc.java2
-rw-r--r--application/src/main/java/com/yahoo/application/container/Processing.java2
-rw-r--r--application/src/main/java/com/yahoo/application/container/ProcessingBase.java2
-rw-r--r--application/src/main/java/com/yahoo/application/container/Search.java2
-rw-r--r--application/src/main/java/com/yahoo/application/container/SynchronousRequestResponseHandler.java2
-rw-r--r--application/src/main/java/com/yahoo/application/container/handler/Headers.java2
-rw-r--r--application/src/main/java/com/yahoo/application/container/handler/Request.java2
-rw-r--r--application/src/main/java/com/yahoo/application/container/handler/Response.java2
-rw-r--r--application/src/main/java/com/yahoo/application/container/handler/package-info.java2
-rw-r--r--application/src/main/java/com/yahoo/application/container/package-info.java2
-rw-r--r--application/src/main/java/com/yahoo/application/content/ContentCluster.java2
-rw-r--r--application/src/main/java/com/yahoo/application/package-info.java2
-rw-r--r--application/src/test/app-packages/athenz-in-deployment-xml/services.xml2
-rw-r--r--application/src/test/app-packages/filedistribution/services.xml2
-rw-r--r--application/src/test/app-packages/searcher-app/services.xml2
-rw-r--r--application/src/test/app-packages/withcontent/schemas/mydoc.sd2
-rw-r--r--application/src/test/app-packages/withcontent/services.xml2
-rw-r--r--application/src/test/java/com/yahoo/application/ApplicationBuilderTest.java2
-rw-r--r--application/src/test/java/com/yahoo/application/ApplicationFacade.java2
-rw-r--r--application/src/test/java/com/yahoo/application/ApplicationTest.java2
-rw-r--r--application/src/test/java/com/yahoo/application/MockResultSearcher.java2
-rw-r--r--application/src/test/java/com/yahoo/application/TestDocProc.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/ContainerDocprocTest.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/ContainerProcessingTest.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/ContainerRequestTest.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/ContainerSearchTest.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/ContainerTest.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/MockClient.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/MockServer.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/docprocs/MockDispatchDocproc.java4
-rw-r--r--application/src/test/java/com/yahoo/application/container/docprocs/MockDocproc.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/docprocs/Rot13DocumentProcessor.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/handler/HeadersTestCase.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/handler/ResponseTestCase.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/handlers/DelayedThrowingInWriteRequestHandler.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/handlers/DelayedWriteException.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/handlers/EchoRequestHandler.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/handlers/HeaderEchoRequestHandler.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/handlers/MockHttpHandler.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/handlers/TestHandler.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/handlers/ThrowingInWriteRequestHandler.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/handlers/WriteException.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/jersey/JerseyTest.java195
-rw-r--r--application/src/test/java/com/yahoo/application/container/jersey/resources/TestResource.java14
-rw-r--r--application/src/test/java/com/yahoo/application/container/jersey/resources/nestedpackage1/NestedTestResource1.java14
-rw-r--r--application/src/test/java/com/yahoo/application/container/jersey/resources/nestedpackage2/NestedTestResource2.java14
-rw-r--r--application/src/test/java/com/yahoo/application/container/processors/Rot13Processor.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/renderers/MockRenderer.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/searchers/AddHitSearcher.java2
-rw-r--r--application/src/test/java/com/yahoo/application/container/searchers/MockSearcher.java2
-rw-r--r--application/src/test/resources/configdefinitions/application.mock-application.def2
-rw-r--r--application/src/test/resources/test.sd2
-rw-r--r--athenz-identity-provider-service/pom.xml2
-rw-r--r--athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/CertificateExpiryMetricUpdater.java2
-rw-r--r--athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/CkmsKeyProvider.java2
-rw-r--r--athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/ConfigserverSslContextFactoryProvider.java2
-rw-r--r--athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/IdentityDocumentGenerator.java2
-rw-r--r--athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/IdentityProviderRequestHandler.java2
-rw-r--r--athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/InstanceConfirmation.java2
-rw-r--r--athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/InstanceValidator.java2
-rw-r--r--athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/KeyProvider.java2
-rw-r--r--athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/Utils.java2
-rw-r--r--athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/package-info.java2
-rw-r--r--athenz-identity-provider-service/src/test/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/AutoGeneratedKeyProvider.java2
-rw-r--r--athenz-identity-provider-service/src/test/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/IdentityDocumentGeneratorTest.java2
-rw-r--r--athenz-identity-provider-service/src/test/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/InstanceValidatorTest.java2
-rw-r--r--athenz-identity-provider-service/src/test/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/TestUtils.java2
-rwxr-xr-xbootstrap-cmake.sh2
-rwxr-xr-xbootstrap.sh2
-rw-r--r--build_settings.cmake2
-rw-r--r--bundle-plugin-test/README.md2
-rw-r--r--bundle-plugin-test/integration-test/pom.xml8
-rw-r--r--bundle-plugin-test/integration-test/src/test/java/com/yahoo/container/plugin/BundleTest.java41
-rw-r--r--bundle-plugin-test/integration-test/src/test/java/com/yahoo/container/plugin/ExportPackageVersionTest.java2
-rw-r--r--bundle-plugin-test/pom.xml4
-rw-r--r--bundle-plugin-test/test-bundles/artifact-version-for-exports-dep/pom.xml2
-rw-r--r--bundle-plugin-test/test-bundles/artifact-version-for-exports-dep/src/main/java/ai/vespa/explicitversion_dep/package-info.java2
-rw-r--r--bundle-plugin-test/test-bundles/artifact-version-for-exports-dep/src/main/java/ai/vespa/noversion_dep/package-info.java2
-rw-r--r--bundle-plugin-test/test-bundles/artifact-version-for-exports/pom.xml2
-rw-r--r--bundle-plugin-test/test-bundles/artifact-version-for-exports/src/main/java/ai/vespa/explicitversion/package-info.java2
-rw-r--r--bundle-plugin-test/test-bundles/artifact-version-for-exports/src/main/java/ai/vespa/noversion/package-info.java2
-rw-r--r--bundle-plugin-test/test-bundles/main/pom.xml28
-rw-r--r--bundle-plugin-test/test-bundles/main/src/main/java/InDefaultPackage.java2
-rw-r--r--bundle-plugin-test/test-bundles/main/src/main/java/com/yahoo/test/SimpleSearcher.java2
-rw-r--r--bundle-plugin-test/test-bundles/main/src/main/java/com/yahoo/test/SimpleSearcher2.java2
-rw-r--r--bundle-plugin-test/test-bundles/main/src/main/java/com/yahoo/test/package-info.java2
-rw-r--r--bundle-plugin-test/test-bundles/main/src/main/resources/configdefinitions/example.test.def2
-rw-r--r--bundle-plugin-test/test-bundles/pom.xml10
-rw-r--r--bundle-plugin/README.md2
-rw-r--r--bundle-plugin/pom.xml2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/bundle/AnalyzeBundle.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/bundle/TransformExportPackages.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/Analyze.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassVisitor.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeFieldVisitor.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodVisitor.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeSignatureVisitor.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ClassFileMetaData.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ExportPackageAnnotation.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ImportCollector.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/PackageTally.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/Packages.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AbstractAssembleBundleMojo.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AbstractGenerateOsgiManifestMojo.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AssembleContainerPluginMojo.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AssembleTestBundleMojo.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateBundleClassPathMappingsMojo.java116
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateOsgiManifestMojo.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateSourcesMojo.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateTestBundleOsgiManifestMojo.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/osgi/ExportPackageParser.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/osgi/ExportPackages.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/osgi/ImportPackages.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/osgi/ProjectBundleClassPaths.java80
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/util/Artifacts.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/util/Files.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/util/IO.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/util/JarFiles.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/util/Maps.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/util/Strings.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/util/TestBundleDependencyScopeTranslator.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/util/TestBundleUtils.java2
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/util/ThrowingFunction.java2
-rw-r--r--bundle-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml2
-rw-r--r--bundle-plugin/src/main/resources/META-INF/plexus/components.xml2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/bundle/AnalyzeBundleTest.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassTest.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodBodyTest.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/PackageTallyTest.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/TestUtilities.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Base.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/CatchException.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/ClassAnnotation.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/ClassReference.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/ClassWithMethod.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Derived.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Dummy.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/DummyAnnotation.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Fields.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Interface1.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Interface2.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/MethodAnnotation.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/MethodInvocation.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Methods.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/invalid/package-info.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/package-info.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/mojo/GenerateSourcesMojoTest.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/osgi/ExportPackageParserTest.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/osgi/ImportPackageTest.java2
-rw-r--r--bundle-plugin/src/test/java/com/yahoo/container/plugin/util/TestBundleDependencyScopeTranslatorTest.java2
-rw-r--r--client/README.md2
-rw-r--r--client/go/.gitattributes1
-rw-r--r--client/go/.gitignore6
-rw-r--r--client/go/Makefile113
-rw-r--r--client/go/README.md6
-rw-r--r--client/go/build/build.go4
-rw-r--r--client/go/cmd/api_key.go82
-rw-r--r--client/go/cmd/api_key_test.go23
-rw-r--r--client/go/cmd/cert.go100
-rw-r--r--client/go/cmd/cert_test.go71
-rw-r--r--client/go/cmd/clone.go195
-rw-r--r--client/go/cmd/clone_list.go86
-rw-r--r--client/go/cmd/clone_list_test.go68
-rw-r--r--client/go/cmd/clone_test.go37
-rw-r--r--client/go/cmd/command_tester.go130
-rw-r--r--client/go/cmd/config.go250
-rw-r--r--client/go/cmd/config_test.go42
-rw-r--r--client/go/cmd/curl.go75
-rw-r--r--client/go/cmd/curl_test.go21
-rw-r--r--client/go/cmd/deploy.go160
-rw-r--r--client/go/cmd/deploy_test.go178
-rw-r--r--client/go/cmd/document.go163
-rw-r--r--client/go/cmd/document_test.go165
-rw-r--r--client/go/cmd/helpers.go244
-rw-r--r--client/go/cmd/log.go98
-rw-r--r--client/go/cmd/log_test.go28
-rw-r--r--client/go/cmd/man.go28
-rw-r--r--client/go/cmd/man_test.go18
-rw-r--r--client/go/cmd/prod.go349
-rw-r--r--client/go/cmd/prod_test.go166
-rw-r--r--client/go/cmd/query.go74
-rw-r--r--client/go/cmd/query_test.go79
-rw-r--r--client/go/cmd/root.go109
-rw-r--r--client/go/cmd/status.go60
-rw-r--r--client/go/cmd/status_test.go88
-rw-r--r--client/go/cmd/testdata/A-Head-Full-of-Dreams-Put.json15
-rw-r--r--client/go/cmd/testdata/A-Head-Full-of-Dreams-Remove.json3
-rw-r--r--client/go/cmd/testdata/A-Head-Full-of-Dreams-Update.json12
-rw-r--r--client/go/cmd/testdata/A-Head-Full-of-Dreams-Without-Operation.json14
-rw-r--r--client/go/cmd/testdata/applications/withDeployment/target/application-test.zipbin0 -> 23061 bytes
-rw-r--r--client/go/cmd/testdata/applications/withDeployment/target/application.zipbin0 -> 11942 bytes
-rw-r--r--client/go/cmd/testdata/applications/withEmptyTarget/pom.xml1
-rw-r--r--client/go/cmd/testdata/applications/withEmptyTarget/target/placeholder (renamed from container-messagebus/src/test/resources/config/clientprovider/slobroks.cfg)0
-rw-r--r--client/go/cmd/testdata/applications/withSource/src/main/application/hosts.xml8
-rw-r--r--client/go/cmd/testdata/applications/withSource/src/main/application/schemas/msmarco.sd299
-rw-r--r--client/go/cmd/testdata/applications/withSource/src/main/application/services.xml61
-rw-r--r--client/go/cmd/testdata/applications/withTarget/pom.xml1
-rw-r--r--client/go/cmd/testdata/applications/withTarget/target/application.zipbin0 -> 2305 bytes
-rw-r--r--client/go/cmd/testdata/sample-apps-contents.json610
-rw-r--r--client/go/cmd/testdata/sample-apps-master.zipbin0 -> 4253469 bytes
-rw-r--r--client/go/cmd/testdata/sample-apps-news.json178
-rw-r--r--client/go/cmd/testdata/sample-apps-operations.json18
-rw-r--r--client/go/cmd/testdata/sample-apps-vespa-cloud.json130
-rw-r--r--client/go/cmd/version.go145
-rw-r--r--client/go/cmd/version_test.go52
-rw-r--r--client/go/cmd/vespa/main.go13
-rw-r--r--client/go/curl/curl.go104
-rw-r--r--client/go/curl/curl_test.go45
-rw-r--r--client/go/go.mod14
-rw-r--r--client/go/go.sum600
-rw-r--r--client/go/util/http.go67
-rw-r--r--client/go/util/http_test.go51
-rw-r--r--client/go/util/io.go68
-rw-r--r--client/go/util/operation_result.go32
-rw-r--r--client/go/version/version.go93
-rw-r--r--client/go/version/version_test.go67
-rw-r--r--client/go/vespa/crypto.go217
-rw-r--r--client/go/vespa/crypto_test.go92
-rw-r--r--client/go/vespa/deploy.go473
-rw-r--r--client/go/vespa/deploy_test.go83
-rw-r--r--client/go/vespa/document.go194
-rw-r--r--client/go/vespa/id.go46
-rw-r--r--client/go/vespa/id_test.go20
-rw-r--r--client/go/vespa/log.go100
-rw-r--r--client/go/vespa/log_test.go32
-rw-r--r--client/go/vespa/target.go487
-rw-r--r--client/go/vespa/target_test.go179
-rw-r--r--client/go/vespa/version.go5
-rw-r--r--client/go/vespa/xml/config.go341
-rw-r--r--client/go/vespa/xml/config_test.go297
-rw-r--r--client/pom.xml2
-rw-r--r--client/src/main/java/ai/vespa/client/dsl/Annotation.java4
-rw-r--r--client/src/main/java/ai/vespa/client/dsl/GeoLocation.java44
-rw-r--r--client/src/main/java/ai/vespa/client/dsl/NearestNeighbor.java52
-rw-r--r--client/src/main/java/ai/vespa/client/dsl/Q.java26
-rw-r--r--client/src/main/java/ai/vespa/client/dsl/Text.java2
-rw-r--r--client/src/test/groovy/ai/vespa/client/dsl/QTest.groovy40
-rw-r--r--cloud-tenant-base-dependencies-enforcer/README.md2
-rw-r--r--cloud-tenant-base-dependencies-enforcer/pom.xml11
-rw-r--r--cloud-tenant-cd/CMakeLists.txt2
-rw-r--r--cloud-tenant-cd/pom.xml2
-rw-r--r--cloud-tenant-cd/src/main/java/ai/vespa/hosted/cd/cloud/impl/VespaTestRuntime.java2
-rw-r--r--cloud-tenant-cd/src/main/java/ai/vespa/hosted/cd/cloud/impl/VespaTestRuntimeProvider.java2
-rw-r--r--cloud-tenant-cd/src/main/resources/META-INF/services/ai.vespa.hosted.cd.TestRuntime2
-rw-r--r--clustercontroller-apps/CMakeLists.txt2
-rw-r--r--clustercontroller-apps/pom.xml2
-rw-r--r--clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterController.java2
-rw-r--r--clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterControllerClusterConfigurer.java2
-rw-r--r--clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StateRestApiV2Handler.java2
-rw-r--r--clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StatusHandler.java2
-rw-r--r--clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscHttpRequestHandler.java2
-rw-r--r--clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscMetricWrapper.java2
-rw-r--r--clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/package-info.java2
-rw-r--r--clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterControllerClusterConfigurerTest.java2
-rw-r--r--clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterControllerTest.java2
-rw-r--r--clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StateRestApiV2HandlerTest.java2
-rw-r--r--clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StatusHandlerTest.java2
-rw-r--r--clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscHttpRequestHandlerTest.java2
-rw-r--r--clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscMetricWrapperTest.java2
-rw-r--r--clustercontroller-core/CMakeLists.txt2
-rw-r--r--clustercontroller-core/pom.xml2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AggregatedClusterStats.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AggregatedStatsMergePendingChecker.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AnnotatedClusterState.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterEvent.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterInfo.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundle.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateDeriver.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateGenerator.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateHistory.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateHistoryEntry.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateReason.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateView.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsAggregator.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsChangeTracker.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/Communicator.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ContentCluster.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ContentClusterStats.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ContentNodeStats.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/DistributorNodeInfo.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/Event.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/EventDiffCalculator.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/EventLog.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/EventLogInterface.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetControllerOptions.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/GetNodeStateRequest.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/GroupAvailabilityCalculator.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/HierarchicalGroupVisiting.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/HierarchicalGroupVisitingAdapter.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/LeafGroups.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MaintenanceTransitionConstraint.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MaintenanceWhenPendingGlobalMerges.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MasterElectionHandler.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MasterInterface.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MergePendingChecker.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MetricUpdater.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeEvent.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeInfo.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeLookup.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeResourceExhaustion.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeStateChangeChecker.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeStateGatherer.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeStateReason.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/RealTimer.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/RemoteClusterControllerTask.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/RemoteClusterControllerTaskScheduler.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ResourceExhaustionCalculator.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ResourceUsageStats.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/SetClusterStateRequest.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StateChangeHandler.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StateVersionTracker.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StorageNodeInfo.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/SystemStateBroadcaster.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/Timer.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/UpEdgeMaintenanceTransitionConstraint.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/VersionDependentTaskCompletion.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/CasWriteFailed.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/Database.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/DatabaseFactory.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/DatabaseHandler.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/MasterDataGatherer.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/ZooKeeperDatabase.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/ZooKeeperDatabaseFactory.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/ContentNode.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/Distributor.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/HostInfo.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/Metrics.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/ResourceUsage.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/StorageNode.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/StorageNodeStatsBridge.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/Vtag.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/listeners/NodeAddedOrRemovedListener.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/listeners/NodeStateOrHostInfoChangeHandler.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/listeners/SystemStateListener.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/package-info.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterControllerStateRestAPI.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/Id.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/MissingIdException.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/OtherMasterIndexException.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/Request.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/Response.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/UnitPathResolver.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/package-info.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/ClusterListRequest.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/ClusterStateRequest.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/NodeStateRequest.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/PartitionStateRequest.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/ServiceStateRequest.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStateRequest.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStatesForClusterRequest.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/VerboseReport.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/WantedStateSetter.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/ClusterStateBundleCodec.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/EncodedClusterStateBundle.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/EnvelopedClusterStateBundleCodec.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicator.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCGetNodeStateRequest.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCGetNodeStateWaiter.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCSetClusterStateRequest.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCSetClusterStateWaiter.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RpcServer.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlimeClusterStateBundleCodec.java11
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlobrokClient.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/ClusterStateRequestHandler.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/LegacyIndexPageRequestHandler.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/LegacyNodePageRequestHandler.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/NodeHealthRequestHandler.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/RunDataExtractor.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/StatusHandler.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/package-info.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/HtmlTable.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageResponse.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageServer.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageServerInterface.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/VdsClusterHtmlRenderer.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/package-info.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/AggregatedStatsMergePendingCheckerTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFeedBlockTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFixture.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundleTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundleUtil.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateGeneratorTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateViewTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsAggregatorTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsChangeTrackerTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentClusterHtmlRendererTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentClusterStatsBuilder.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentNodeStatsBuilder.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentNodeStatsTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseHandlerTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DistributionBitCountTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DistributionBuilder.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyCommunicator.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyVdsNode.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyVdsNodeOptions.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/EventDiffCalculatorTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/EventLogTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FakeTimer.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FeedBlockUtil.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAutoTakedownLiveConfigTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAutoTakedownTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAvailabilityCalculatorTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/LeafGroupsTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MaintenanceWhenPendingGlobalMergesTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MasterElectionTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MetricReporterTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NoZooKeeperTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeInfoTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeSlobrokConfigurationMembershipTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeStateChangeCheckerTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceExhaustionCalculatorTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceUsageStatsTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcServerTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcVersionAutoDowngradeTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/SlobrokTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeHandlerTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateGatherTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateMapping.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateVersionTrackerTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/SystemStateBroadcasterTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/UpEdgeMaintenanceTransitionConstraintTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/WantedStateTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ZooKeeperDatabaseTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ZooKeeperTestServer.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/hostinfo/HostInfoTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/hostinfo/StorageNodeStatsBridgeTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/ClusterEventWithDescription.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/EventForNode.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/EventTimeIs.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/EventTypeIs.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/HasMetricContext.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/HasStateReasonForNode.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/NodeEventForBucketSpace.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/NodeEventWithDescription.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/mocks/TestEventLog.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterControllerMock.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterListTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/NodeTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/NotMasterTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/PartitionTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/RequestTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ServiceTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/SetNodeStateTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/StateRestApiTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStateRequestTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicatorTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCUtil.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/SlimeClusterStateBundleCodecTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/LogFormatter.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/StateWaiter.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/WaitCondition.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/WaitTask.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/Waiter.java2
-rw-r--r--clustercontroller-reindexer/CMakeLists.txt2
-rw-r--r--clustercontroller-reindexer/pom.xml2
-rw-r--r--clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/Reindexer.java4
-rw-r--r--clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/Reindexing.java2
-rw-r--r--clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingCurator.java2
-rw-r--r--clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingMaintainer.java2
-rw-r--r--clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingMetrics.java2
-rw-r--r--clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/http/ReindexingV1ApiHandler.java2
-rw-r--r--clustercontroller-reindexer/src/test/java/ai/vespa/reindexing/ReindexerTest.java2
-rw-r--r--clustercontroller-reindexer/src/test/java/ai/vespa/reindexing/ReindexingCuratorTest.java2
-rw-r--r--clustercontroller-reindexer/src/test/java/ai/vespa/reindexing/ReindexingMaintainerTest.java2
-rw-r--r--clustercontroller-reindexer/src/test/java/ai/vespa/reindexing/http/ReindexingV1ApiTest.java2
-rw-r--r--clustercontroller-reindexer/src/test/resources/schemas/music.sd2
-rw-r--r--clustercontroller-utils/CMakeLists.txt2
-rw-r--r--clustercontroller-utils/pom.xml2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncCallback.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncOperation.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncOperationImpl.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncOperationListenImpl.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncUtils.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/PipedAsyncOperation.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/RedirectedAsyncOperation.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/SuccessfulAsyncCallback.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/package-info.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpRequest.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpRequestHandler.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpResult.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/JsonHttpResult.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/package-info.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/writer/HttpWriter.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/StateRestAPI.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/DeadlineExceededException.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/InternalFailure.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/InvalidContentException.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/InvalidOptionValueException.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/MissingResourceException.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/MissingUnitException.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/NotMasterException.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/OperationNotSupportedForUnitException.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/OtherMasterException.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/StateRestApiException.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/UnknownMasterException.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/package-info.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/package-info.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/requests/SetUnitStateRequest.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/requests/UnitRequest.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/requests/UnitStateRequest.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/requests/package-info.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/CurrentUnitState.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/DistributionState.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/DistributionStates.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/SetResponse.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/SubUnitList.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitAttributes.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitMetrics.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitResponse.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitState.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/package-info.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/JsonReader.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/JsonWriter.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/RestApiHandler.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/package-info.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/CertainlyCloneable.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/Clock.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/ComponentMetricReporter.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/JSONObjectWrapper.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/MetricReporter.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/NoMetricReporter.java2
-rw-r--r--clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/package-info.java2
-rw-r--r--clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncTest.java2
-rw-r--r--clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpRequestTest.java2
-rw-r--r--clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpResultTest.java2
-rw-r--r--clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/JsonHttpResultTest.java2
-rw-r--r--clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/writer/HttpWriterTest.java2
-rw-r--r--clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/DummyBackend.java2
-rw-r--r--clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/DummyStateApi.java2
-rw-r--r--clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/StateRestAPITest.java2
-rw-r--r--clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/RestApiHandlerTest.java2
-rw-r--r--clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/test/AsyncHttpClient.java2
-rw-r--r--clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/test/TestTransport.java2
-rw-r--r--clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/util/CertainlyCloneableTest.java2
-rw-r--r--clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/util/ClockTest.java2
-rw-r--r--clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/util/JSONObjectWrapperTest.java2
-rw-r--r--clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/util/MetricReporterTest.java2
-rw-r--r--cmake/FindRE2.cmake2
-rw-r--r--component/README.md2
-rwxr-xr-xcomponent/pom.xml2
-rw-r--r--component/src/main/java/com/yahoo/component/AbstractComponent.java2
-rw-r--r--component/src/main/java/com/yahoo/component/Component.java2
-rw-r--r--component/src/main/java/com/yahoo/component/ComponentId.java2
-rw-r--r--component/src/main/java/com/yahoo/component/ComponentSpecification.java2
-rw-r--r--component/src/main/java/com/yahoo/component/Deconstructable.java2
-rw-r--r--component/src/main/java/com/yahoo/component/Spec.java2
-rw-r--r--component/src/main/java/com/yahoo/component/SpecSplitter.java2
-rw-r--r--component/src/main/java/com/yahoo/component/Version.java2
-rw-r--r--component/src/main/java/com/yahoo/component/VersionSpecification.java2
-rw-r--r--component/src/main/java/com/yahoo/component/package-info.java2
-rw-r--r--component/src/main/java/com/yahoo/component/provider/ComponentRegistry.java2
-rw-r--r--component/src/main/java/com/yahoo/component/provider/Freezable.java2
-rw-r--r--component/src/main/java/com/yahoo/component/provider/FreezableClass.java2
-rw-r--r--component/src/main/java/com/yahoo/component/provider/FreezableComponent.java2
-rw-r--r--component/src/main/java/com/yahoo/component/provider/FreezableSimpleComponent.java2
-rw-r--r--component/src/main/java/com/yahoo/component/provider/ListenableFreezable.java2
-rw-r--r--component/src/main/java/com/yahoo/component/provider/ListenableFreezableClass.java2
-rw-r--r--component/src/main/java/com/yahoo/component/provider/package-info.java2
-rw-r--r--component/src/main/java/com/yahoo/container/di/componentgraph/Provider.java2
-rw-r--r--component/src/main/java/com/yahoo/container/di/componentgraph/package-info.java2
-rw-r--r--component/src/test/java/com/yahoo/component/VersionSpecificationTestCase.java2
-rw-r--r--component/src/test/java/com/yahoo/component/VersionTestCase.java2
-rw-r--r--config-application-package/pom.xml2
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/application/ConfigDefinitionDir.java2
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/application/FileSystemWrapper.java2
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/application/IncludeProcessor.java2
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java2
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/application/PreProcessor.java2
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/application/PropertiesProcessor.java2
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/application/Xml.java2
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/application/XmlPreProcessor.java2
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/application/package-info.java2
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/package-info.java2
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/AppSubDirs.java2
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/ApplicationPackageXmlFilesValidator.java2
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/BaseDeployLogger.java2
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/Bundle.java2
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/DeployData.java2
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationFile.java2
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java15
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/IncludeDirs.java2
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/MockFileRegistry.java16
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistry.java107
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidator.java2
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidators.java2
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/SimpleApplicationValidator.java2
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/StaticConfigDefinitionRepo.java2
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/package-info.java2
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/application/ConfigDefinitionDirTest.java2
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorTest.java2
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/application/IncludeProcessorTest.java2
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/application/MultiOverrideProcessorTest.java2
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/application/OverrideProcessorTest.java2
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/application/PropertiesProcessorTest.java2
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/application/TestBase.java2
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/application/XmlPreprocessorTest.java2
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationFileTest.java2
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java2
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistryTestCase.java41
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/model/application/provider/StaticConfigDefinitionRepoTest.java2
-rw-r--r--config-application-package/src/test/resources/app-pinning-major-version/deployment.xml2
-rw-r--r--config-application-package/src/test/resources/app-pinning-major-version/hosts.xml2
-rw-r--r--config-application-package/src/test/resources/app-pinning-major-version/schemas/music.sd2
-rw-r--r--config-application-package/src/test/resources/app-pinning-major-version/services.xml2
-rw-r--r--config-application-package/src/test/resources/app-with-deployment/deployment.xml2
-rw-r--r--config-application-package/src/test/resources/app-with-deployment/hosts.xml2
-rw-r--r--config-application-package/src/test/resources/app-with-deployment/schemas/music.sd2
-rw-r--r--config-application-package/src/test/resources/app-with-deployment/services.xml2
-rw-r--r--config-application-package/src/test/resources/multienvapp/content/content_foo.xml2
-rw-r--r--config-application-package/src/test/resources/multienvapp/content/content_nodes.xml2
-rw-r--r--config-application-package/src/test/resources/multienvapp/hosts.xml2
-rw-r--r--config-application-package/src/test/resources/multienvapp/jdisc.xml2
-rw-r--r--config-application-package/src/test/resources/multienvapp/schemas/music.sd2
-rw-r--r--config-application-package/src/test/resources/multienvapp/services.xml2
-rw-r--r--config-application-package/src/test/resources/multienvapp_failrequired/services.xml2
-rw-r--r--config-bundle/CMakeLists.txt2
-rw-r--r--config-bundle/pom.xml2
-rw-r--r--config-bundle/src/main/javadoc/README1
-rw-r--r--config-class-plugin/README.md2
-rw-r--r--config-class-plugin/pom.xml2
-rw-r--r--config-class-plugin/src/main/java/com/yahoo/vespa/ConfigGenMojo.java2
-rw-r--r--config-class-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml2
-rw-r--r--config-lib/README.md2
-rw-r--r--config-lib/pom.xml2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/BooleanNode.java2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/ChangesRequiringRestart.java2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/ConfigBuilder.java2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/ConfigInstance.java2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/ConfigurationRuntimeException.java2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/DoubleNode.java2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/EnumNode.java2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/FileNode.java2
-rwxr-xr-xconfig-lib/src/main/java/com/yahoo/config/FileReference.java2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/InnerNode.java2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/InnerNodeVector.java2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/IntegerNode.java2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/LeafNode.java2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/LeafNodeMaps.java2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/LeafNodeVector.java2
-rwxr-xr-xconfig-lib/src/main/java/com/yahoo/config/LongNode.java2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/Node.java2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/NodeVector.java2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/PathNode.java2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/ReferenceNode.java2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/Serializer.java2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/StringNode.java2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/UrlNode.java2
-rwxr-xr-xconfig-lib/src/main/java/com/yahoo/config/UrlReference.java2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/package-info.java2
-rw-r--r--config-lib/src/main/java/com/yahoo/config/text/StringUtilities.java2
-rw-r--r--config-lib/src/test/java/com/yahoo/config/BooleanNodeTest.java2
-rw-r--r--config-lib/src/test/java/com/yahoo/config/ConfigInstanceBuilderTest.java2
-rw-r--r--config-lib/src/test/java/com/yahoo/config/ConfigInstanceEqualsTest.java2
-rw-r--r--config-lib/src/test/java/com/yahoo/config/DoubleNodeTest.java2
-rw-r--r--config-lib/src/test/java/com/yahoo/config/EnumNodeTest.java2
-rw-r--r--config-lib/src/test/java/com/yahoo/config/FileNodeTest.java2
-rw-r--r--config-lib/src/test/java/com/yahoo/config/IntegerNodeTest.java2
-rw-r--r--config-lib/src/test/java/com/yahoo/config/LongNodeTest.java2
-rw-r--r--config-lib/src/test/java/com/yahoo/config/NodeVectorTest.java2
-rw-r--r--config-lib/src/test/java/com/yahoo/config/PathNodeTest.java2
-rw-r--r--config-lib/src/test/java/com/yahoo/config/StringNodeTest.java2
-rw-r--r--config-lib/src/test/java/com/yahoo/config/UrlNodeTest.java2
-rw-r--r--config-lib/src/test/java/com/yahoo/config/codegen/NamespaceAndPackageTest.java2
-rw-r--r--config-lib/src/test/resources/configdefinitions/foo.maptypes.def2
-rw-r--r--config-lib/src/test/resources/configdefinitions/foo.structtypes.def2
-rw-r--r--config-lib/src/test/resources/configdefinitions/my.namespace.namespace-and-package.def2
-rw-r--r--config-lib/src/test/resources/configdefinitions/my.namespace.namespace.def2
-rw-r--r--config-lib/src/test/resources/configdefinitions/package.def2
-rw-r--r--config-lib/src/test/resources/configdefinitions/test.app.def2
-rw-r--r--config-lib/src/test/resources/configdefinitions/test.function-test.def2
-rwxr-xr-xconfig-lib/src/test/resources/configdefinitions/test.int.def2
-rwxr-xr-xconfig-lib/src/test/resources/configdefinitions/test.restart.def2
-rw-r--r--config-model-api/CMakeLists.txt2
-rw-r--r--config-model-api/abi-spec.json28
-rw-r--r--config-model-api/pom.xml2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationFile.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationMetaData.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/ComponentInfo.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/DeployLogger.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentInstanceSpec.java9
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java14
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/FileRegistry.java26
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/TimeWindow.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/UnparsedConfigDefinition.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/ValidationId.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/package-info.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java27
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationInfo.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationRoles.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ConfigChangeAction.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ConfigChangeRefeedAction.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ConfigChangeReindexAction.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ConfigChangeRestartAction.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ConfigDefinitionRepo.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ConfigDefinitionStore.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ConfigModelPlugin.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ConfigServerSpec.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ContainerEndpoint.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/EndpointCertificateMetadata.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/FileDistribution.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/HostInfo.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/HostProvisioner.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/Model.java10
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java31
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ModelCreateResult.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ModelFactory.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ModelState.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/PortInfo.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/Provisioned.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/Quota.java6
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/Reindexing.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ServiceInfo.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/SuperModel.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/SuperModelListener.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/SuperModelProvider.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/TenantSecretStore.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ValidationParameters.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/container/package-info.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/package-info.java2
-rw-r--r--config-model-api/src/test/java/com/yahoo/config/application/api/ApplicationFileTest.java2
-rw-r--r--config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecTest.java35
-rw-r--r--config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecWithoutInstanceTest.java20
-rw-r--r--config-model-api/src/test/java/com/yahoo/config/application/api/TimeWindowTest.java2
-rw-r--r--config-model-api/src/test/java/com/yahoo/config/application/api/ValidationOverrideTest.java2
-rw-r--r--config-model-api/src/test/java/com/yahoo/config/model/api/HostInfoTest.java2
-rw-r--r--config-model-api/src/test/java/com/yahoo/config/model/api/ModelContextTest.java2
-rw-r--r--config-model-api/src/test/java/com/yahoo/config/model/api/PortInfoTest.java2
-rw-r--r--config-model-api/src/test/java/com/yahoo/config/model/api/QuotaTest.java2
-rw-r--r--config-model-api/src/test/java/com/yahoo/config/model/api/ServiceInfoTest.java2
-rw-r--r--config-model-fat/CMakeLists.txt2
-rw-r--r--config-model-fat/pom.xml2
-rw-r--r--config-model-fat/src/main/javadoc/README1
-rw-r--r--config-model-fat/src/main/resources/config-models.xml2
-rw-r--r--config-model/CMakeLists.txt2
-rw-r--r--config-model/pom.xml6
-rw-r--r--config-model/src/main/Makefile2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/CommonConfigsProducer.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/ConfigModel.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/ConfigModelInstanceFactory.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/ConfigModelRegistry.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/ConfigModelRepo.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/ConfigModelRepoAdder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/MapConfigModelRegistry.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/NullConfigModelRegistry.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java3
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelId.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/builder/xml/XmlHelper.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/builder/xml/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/ConfigDefinitionStore.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java27
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/SearchDocumentModel.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java67
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/graph/ModelGraph.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/graph/ModelGraphBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/graph/ModelNode.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java12
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducerRoot.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/producer/UserConfigRepo.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/producer/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/provision/Host.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/provision/Hosts.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/provision/HostsXmlProvisioner.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/provision/SingleNodeProvisioner.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/provision/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/test/MockApplicationPackage.java4
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java26
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/test/TestDriver.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/test/TestRoot.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/test/TestUtil.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/test/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/documentmodel/DataTypeCollection.java2
-rw-r--r--config-model/src/main/java/com/yahoo/documentmodel/DataTypeRepo.java2
-rw-r--r--config-model/src/main/java/com/yahoo/documentmodel/DocumentTypeCollection.java2
-rw-r--r--config-model/src/main/java/com/yahoo/documentmodel/DocumentTypeRepo.java2
-rw-r--r--config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java2
-rw-r--r--config-model/src/main/java/com/yahoo/documentmodel/VespaDocumentType.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/DefaultRankProfile.java6
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/DistributableResource.java55
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/DocumentGraphValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/DocumentOnlySearch.java7
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/DocumentReference.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/DocumentReferenceResolver.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/DocumentReferences.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/DocumentsOnlyRankProfile.java7
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/FeatureNames.java28
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/FieldOperationApplier.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/FieldOperationApplierForSearch.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/FieldOperationApplierForStructs.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/FieldSets.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/ImmutableSearch.java5
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/Index.java5
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/LargeRankExpressions.java31
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/MapEvaluationTypeContext.java11
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/OnnxModel.java40
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/OnnxModels.java9
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java142
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/RankProfileRegistry.java72
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/RankingConstant.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/RankingConstants.java32
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/SDDocumentTypeOrderer.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/Search.java25
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java43
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/UnrankedRankProfile.java7
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java5
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/Derived.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/DerivedConfiguration.java21
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/Deriver.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/Exportable.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/FieldRankSettings.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/FieldResultTransform.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/ImportedFields.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/Index.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexSchema.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexingScript.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/Juniperrc.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/NativeRankTypeDefinition.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/NativeRankTypeDefinitionSet.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/NativeTable.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java92
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/RawRankProfile.java34
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/SearchOrderer.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/Summaries.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryClass.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryClassField.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryMap.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/VsmFields.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/VsmSummary.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/validation/IndexStructureValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/validation/Validation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/validation/Validator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/Attribute.java34
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/BooleanIndexDefinition.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/Case.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtils.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/Dictionary.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/FieldSet.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableImportedComplexSDField.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableImportedSDField.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableSDField.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/ImportedComplexField.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/ImportedField.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/ImportedFields.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/ImportedSimpleField.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/Matching.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/NormalizeLevel.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/RankType.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/Ranking.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/SDDocumentType.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/SDField.java11
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/Sorting.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/Stemming.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/TemporaryImportedField.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/TemporaryImportedFields.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/TemporarySDDocumentType.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/TemporarySDField.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/TypedKey.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/annotation/SDAnnotationType.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/annotation/TemporaryAnnotationReferenceDataType.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/ConstantTensorTransformer.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/ExpressionTransforms.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/FunctionInliner.java3
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/FunctionShadower.java7
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/OnnxFeatureConverter.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/OnnxModelTransformer.java4
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/RankProfileTransformContext.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/TensorFlowFeatureConverter.java4
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/TokenTransformer.java4
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/XgboostFeatureConverter.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/AliasOperation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/AttributeOperation.java11
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/BoldingOperation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/DictionaryOperation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/FieldOperation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/FieldOperationContainer.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/IdOperation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/IndexOperation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/IndexingOperation.java14
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/IndexingRewriteOperation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/MatchOperation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/NormalizingOperation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/QueryCommandOperation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/RankOperation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/RankTypeOperation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SortingOperation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/StemmingOperation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/StructFieldOperation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SummaryInFieldLongOperation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SummaryInFieldOperation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SummaryInFieldShortOperation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SummaryToOperation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/WeightOperation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/WeightedSetOperation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/SimpleCharStream.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFields.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/AddExtraFieldsToDocument.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/AdjustPositionSummaryFields.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/AttributeProperties.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/AttributesImplicitWord.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/Bolding.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/BoolAttributeValidator.java36
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/BuiltInFieldSets.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/CreatePositionZCurve.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/DictionaryProcessor.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/DisallowComplexMapAndWsetKeyTypes.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/DiversitySettingsValidator.java4
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ExactMatch.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/FastAccessValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/FieldSetSettings.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/FilterFieldNames.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ImplicitSummaries.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ImplicitSummaryFields.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolver.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexFieldNames.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingInputs.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingOutputs.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValidation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValues.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/IntegerIndex2Attribute.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/LiteralBoost.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeAliases.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeDefaultSummaryTheSuperSet.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/MatchConsistency.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/MatchPhaseSettingsValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/MultifieldIndexHarmonizer.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/MutableAttributes.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/NGramMatch.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/OnnxModelConfigGenerator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/OnnxModelTypeResolver.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/OptimizeIlscript.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/PagedAttributeValidator.java52
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/PredicateProcessor.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/Processing.java4
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/Processor.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/RankingExpressionTypeResolver.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ReferenceFieldsProcessor.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ReservedDocumentNames.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ReservedFunctionNames.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/SearchMustHaveDocument.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/SetRankTypeEmptyOnFilters.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/SortingSettings.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/StringSettingsOnNonStringFields.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryConsistency.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryDynamicStructsArrays.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSource.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryNamesFieldCollisions.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/TagType.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/TensorFieldProcessor.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/TextMatch.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/TypedTransformProvider.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/UriHack.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/UrlFieldValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldTypes.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesDocumentsOnly.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldWithIndexSettingsCreatesIndex.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/WordMatch.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/IndexCommandResolver.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/MultiFieldResolver.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/RankProfileTypeSettingsProcessor.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/RankTypeResolver.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/StemmingResolver.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentModel.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentSummary.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/documentmodel/FieldView.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/documentmodel/SearchDef.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/documentmodel/SearchField.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/documentmodel/SearchManager.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryField.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryTransform.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java23
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/Affinity.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/Client.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/ConfigProducer.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/ConfigProducerRoot.java8
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/ConfigProxy.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/Host.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/HostResource.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/InstanceResolver.java31
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/Logd.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/PortsMeta.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/RecentLogFilter.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/Service.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/ServiceProvider.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/SimpleConfigProducer.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/VespaConfigModelRegistry.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java147
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java27
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java50
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainer.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainerCluster.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/ModelConfigProvider.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java9
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/ZooKeepersConfigProvider.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerCluster.java11
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerComponent.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerConfigurer.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainerCluster.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ReindexingContext.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/ConsumersConfigGenerator.java7
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java7
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/AutoscalingMetrics.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/CloudWatch.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultMonitoring.java14
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultVespaMetrics.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/Metric.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricSet.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricsConsumer.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/Monitoring.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/NetworkMetrics.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/SystemMetrics.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java17
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/Metrics.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/PredefinedMetricSets.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/CloudWatchBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/MetricsBuilder.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/AwsAccessControlValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/CloudWatchValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/ComplexAttributeFieldsValidator.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/ComponentValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/ConstantTensorJsonValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/DeploymentSpecValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/NoPrefixForIndexes.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/QuotaValidator.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankSetupValidator.java123
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/RestartConfigs.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/RoutingSelectorValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/RoutingValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/SchemasDirValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/SearchDataTypeValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/SecretStoreValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/StreamingValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/UriBindingsValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/ValidationOverridesValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ChangeValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ClusterSizeReductionValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/GlobalDocumentChangeValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexedSearchClusterChangeValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/NodeResourceChangeValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RedundancyIncreaseValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StreamingSearchClusterChangeValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaConfigChangeAction.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaRefeedAction.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaReindexAction.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaRestartAction.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidator.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/ChangeMessageBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/DocumentDatabaseChangeValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/DocumentTypeChangeValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeMessageBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/StructFieldAttributeChangeValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/first/AccessControlOnFirstDeploymentValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/first/RedundancyOnFirstDeploymentValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/UserConfigBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/VespaModelBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/BinaryScaledAmountParser.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/BinaryUnit.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java44
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java89
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java20
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientProviderBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientsBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomConfigPayloadBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomHandlerBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomRoutingBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomV20ClientsBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/ModelElement.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/ServletBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainSpecificationBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainedComponentModelBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainsBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ComponentsBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DependenciesBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomBuilderCreator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainBuilderBase.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainsBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/GenericChainedComponentModelBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/InheritanceBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DocprocChainsBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DocumentProcessorModelBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainsBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocumentProcessorBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingChainBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessorBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/ProcessingChainsBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomGenericTargetBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomProviderBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearcherBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSourceBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/FederationOptionsBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/SearchChainsBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/TimeParser.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/clients/Clients.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java22
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainer.java8
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java16
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/Container.java17
-rwxr-xr-xconfig-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java24
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModel.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/ContainerThreadpool.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/DefaultThreadpoolProvider.java19
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/IdentityProvider.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/PlatformBundles.java134
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/SecretStore.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/AccessLogComponent.java23
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/BindingPattern.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/Component.java8
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/ComponentGroup.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/ComponentsConfigGenerator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/ConfigProducerGroup.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/ConnectionLogComponent.java21
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/ContainerSubsystem.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/DiscBindingsConfigGenerator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/FileStatusHandlerComponent.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/Handler.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/HttpFilter.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/Servlet.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/ServletProvider.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/SimpleComponent.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/StatisticsComponent.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/SystemBindingPattern.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/UserBindingPattern.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/Chain.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ChainedComponent.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ChainedComponentConfigGenerator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/Chains.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ChainsConfigGenerator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ProcessingHandler.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/configserver/option/CloudConfigOptions.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/configserver/option/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/docproc/ContainerDocproc.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocprocChain.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocprocChains.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocumentProcessor.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/docproc/MbusClient.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/docproc/model/DocumentProcessorModel.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/AccessControl.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/BlockFeedGlobalEndpointsFilter.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/ConnectorFactory.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/Filter.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/FilterChains.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/FilterConfigProvider.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/Http.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/JettyHttpServer.java11
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/CustomSslProvider.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/DefaultSslProvider.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/HostedSslConnectorFactory.java27
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/SslProvider.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainsBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyHttpServerBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTester.java76
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/ml/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChain.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChains.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/processing/Processor.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/DeclaredQueryProfileVariants.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/DispatcherComponent.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/GUIHandler.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/PageTemplates.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/QrsCache.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/QueryProfiles.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/QueryProfilesBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/RpcResourcePoolComponent.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/SemanticRuleBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/SemanticRules.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/FederationSearcher.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/GenericProvider.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/GenericTarget.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/LocalProvider.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Provider.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SearchChain.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SearchChains.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Searcher.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Source.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SourceGroup.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SourceGroupRegistry.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/defaultsearchchains/LocalClustersCreator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/defaultsearchchains/VespaSearchChainsCreator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/BundleInstantiationSpecificationBuilder.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/CloudSecretStore.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java34
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerServiceBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/DocprocOptionsBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/DocumentApiOptionsBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/InconsistentSchemaAndCodeError.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/PlatformBundles.java119
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/SearchHandler.java20
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/document/DocumentFactoryBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/BucketSplitting.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ClusterResourceLimits.java15
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/Content.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ContentNode.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearch.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/DispatchSpec.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/DispatchTuning.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/DistributionBitCalculator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/Distributor.java28
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/DistributorCluster.java14
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/DocumentTypeVisitor.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/GlobalDistributionValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/IndexedHierarchicDistributionValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/Redundancy.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ReservedDocumentTypeNameValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ResourceLimits.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/SearchCoverage.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java36
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/TopologicalDocumentTypeSorter.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java18
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DocumentSelectionBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomContentSearchBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomDispatchBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomResourceLimitsBuilder.java21
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomSearchCoverageBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomTuningDispatchBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/EngineFactoryBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/GlobalDistributionBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/RedundancyBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/SearchDefinitionBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/engines/DummyPersistence.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/engines/PersistenceEngine.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/engines/ProtonEngine.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/engines/ProtonProvider.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/engines/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/FileStorProducer.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/IntegrityCheckerProducer.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/PersistenceProducer.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorServerProducer.java7
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorVisitorProducer.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorageCluster.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileDistributionConfigProducer.java20
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileDistributionConfigProvider.java32
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileDistributor.java124
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileReferencesRepository.java26
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/filedistribution/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/generic/GenericServicesBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/generic/GenericServicesModel.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomModuleBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomServiceBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomServiceClusterBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/generic/builder/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/generic/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/generic/service/Module.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/generic/service/Service.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/generic/service/ServiceCluster.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/generic/service/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/ml/ConvertedModel.java52
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/ml/FeatureArguments.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/ml/ModelName.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/ml/OnnxModelInfo.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/routing/DocumentProtocol.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/routing/Protocol.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/routing/Routing.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/AbstractSearchCluster.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroup.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroupBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/DocumentSelectionConverter.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java8
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/IndexingDocprocChain.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/IndexingProcessor.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/MultilevelDispatchValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/NamedSchema.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/NodeResourcesTuning.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/NodeSpec.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/SchemaDefinitionXMLHandler.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/SearchCluster.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/SearchInterface.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/SearchNodeWrapper.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/StreamingSearchCluster.java7
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/TransactionLogServer.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/Tuning.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/utils/Duration.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/utils/FileSender.java97
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/utils/FreezableMap.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/utils/internal/ReflectionUtil.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/utils/package-info.java2
-rw-r--r--config-model/src/main/javacc/SDParser.jj41
-rwxr-xr-xconfig-model/src/main/perl/vespa-deploy3
-rwxr-xr-xconfig-model/src/main/perl/vespa-expand-config.pl2
-rw-r--r--config-model/src/main/python/ES_Vespa_parser.py2
-rw-r--r--config-model/src/main/resources/schema/admin.rnc2
-rw-r--r--config-model/src/main/resources/schema/clients-v2.rnc2
-rw-r--r--config-model/src/main/resources/schema/clients.rnc2
-rw-r--r--config-model/src/main/resources/schema/common.rnc2
-rw-r--r--config-model/src/main/resources/schema/container-include.rnc2
-rw-r--r--config-model/src/main/resources/schema/container.rnc2
-rw-r--r--config-model/src/main/resources/schema/containercluster.rnc13
-rw-r--r--config-model/src/main/resources/schema/content.rnc2
-rw-r--r--config-model/src/main/resources/schema/deployment.rnc5
-rw-r--r--config-model/src/main/resources/schema/docproc-standalone.rnc2
-rw-r--r--config-model/src/main/resources/schema/docproc.rnc2
-rw-r--r--config-model/src/main/resources/schema/federation.rnc2
-rw-r--r--config-model/src/main/resources/schema/genericcluster.rnc2
-rw-r--r--config-model/src/main/resources/schema/genericmodule.rnc2
-rw-r--r--config-model/src/main/resources/schema/hosts.rnc2
-rw-r--r--config-model/src/main/resources/schema/legacygenericcluster.rnc2
-rw-r--r--config-model/src/main/resources/schema/legacygenericmodule.rnc2
-rw-r--r--config-model/src/main/resources/schema/processing.rnc2
-rw-r--r--config-model/src/main/resources/schema/routing-standalone.rnc2
-rw-r--r--config-model/src/main/resources/schema/routing.rnc2
-rw-r--r--config-model/src/main/resources/schema/schemas.xml2
-rw-r--r--config-model/src/main/resources/schema/searchchains-standalone.rnc2
-rw-r--r--config-model/src/main/resources/schema/searchchains.rnc2
-rw-r--r--config-model/src/main/resources/schema/services.rnc2
-rw-r--r--config-model/src/main/resources/schema/validation-overrides.rnc2
-rw-r--r--config-model/src/test/cfg/admin/adminconfig20/hosts.xml2
-rw-r--r--config-model/src/test/cfg/admin/adminconfig20/services.xml2
-rw-r--r--config-model/src/test/cfg/admin/adminconfigbaseport/hosts.xml2
-rw-r--r--config-model/src/test/cfg/admin/adminconfigbaseport/services.xml2
-rw-r--r--config-model/src/test/cfg/admin/metricconfig/hosts.xml2
-rw-r--r--config-model/src/test/cfg/admin/metricconfig/schemas/music.sd2
-rw-r--r--config-model/src/test/cfg/admin/metricconfig/services.xml2
-rw-r--r--config-model/src/test/cfg/admin/multipleconfigservers/hosts.xml2
-rw-r--r--config-model/src/test/cfg/admin/multipleconfigservers/services.xml2
-rw-r--r--config-model/src/test/cfg/admin/simpleadminconfig20/hosts.xml2
-rw-r--r--config-model/src/test/cfg/admin/simpleadminconfig20/services.xml2
-rw-r--r--config-model/src/test/cfg/admin/userconfigs/functiontest-defaultvalues.xml2
-rw-r--r--config-model/src/test/cfg/admin/userconfigs/test.function-test.def2
-rw-r--r--config-model/src/test/cfg/admin/userconfigs/whitespace-test.xml2
-rw-r--r--config-model/src/test/cfg/application/app1/deployment.xml2
-rw-r--r--config-model/src/test/cfg/application/app1/hosts.xml2
-rw-r--r--config-model/src/test/cfg/application/app1/schemas/laptop.sd2
-rw-r--r--config-model/src/test/cfg/application/app1/schemas/music.sd2
-rw-r--r--config-model/src/test/cfg/application/app1/schemas/pc.sd2
-rw-r--r--config-model/src/test/cfg/application/app1/schemas/product.sd2
-rw-r--r--config-model/src/test/cfg/application/app1/schemas/sock.sd2
-rw-r--r--config-model/src/test/cfg/application/app1/services.xml2
-rw-r--r--config-model/src/test/cfg/application/app_complicated_deployment_spec/hosts.xml2
-rw-r--r--config-model/src/test/cfg/application/app_complicated_deployment_spec/schemas/music.sd2
-rw-r--r--config-model/src/test/cfg/application/app_complicated_deployment_spec/services.xml2
-rw-r--r--config-model/src/test/cfg/application/app_genericservices/hosts.xml2
-rw-r--r--config-model/src/test/cfg/application/app_genericservices/schemas/music.sd2
-rw-r--r--config-model/src/test/cfg/application/app_genericservices/services.xml2
-rw-r--r--config-model/src/test/cfg/application/app_invalid_deployment_xml/deployment.xml2
-rw-r--r--config-model/src/test/cfg/application/app_invalid_deployment_xml/hosts.xml2
-rw-r--r--config-model/src/test/cfg/application/app_invalid_deployment_xml/services.xml2
-rw-r--r--config-model/src/test/cfg/application/app_nohosts/schemas/mail.sd2
-rw-r--r--config-model/src/test/cfg/application/app_nohosts/schemas/mailbox.sd2
-rw-r--r--config-model/src/test/cfg/application/app_nohosts/schemas/message.sd2
-rw-r--r--config-model/src/test/cfg/application/app_nohosts/services.xml2
-rw-r--r--config-model/src/test/cfg/application/app_permanent/permanent-services.xml2
-rw-r--r--config-model/src/test/cfg/application/app_qrserverandgw/hosts.xml2
-rw-r--r--config-model/src/test/cfg/application/app_qrserverandgw/schemas/message.sd2
-rw-r--r--config-model/src/test/cfg/application/app_qrserverandgw/services.xml2
-rw-r--r--config-model/src/test/cfg/application/classes/vespa.config.search.attributes.def2
-rw-r--r--config-model/src/test/cfg/application/configdeftest/configdefinitions/config.foo.def2
-rw-r--r--config-model/src/test/cfg/application/configdeftest/configdefinitions/config.xyzzy.def2
-rw-r--r--config-model/src/test/cfg/application/configdeftest/configdefinitions/qux.qux.foo.def2
-rw-r--r--config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.bar.def2
-rw-r--r--config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.baz.def2
-rw-r--r--config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.xyzzy.bar.def2
-rw-r--r--config-model/src/test/cfg/application/configuredportconfig/hosts.xml2
-rw-r--r--config-model/src/test/cfg/application/configuredportconfig/services.xml2
-rw-r--r--config-model/src/test/cfg/application/custompropconfig/hosts.xml2
-rw-r--r--config-model/src/test/cfg/application/custompropconfig/services.xml2
-rw-r--r--config-model/src/test/cfg/application/deprecated_features_app/hosts.xml2
-rw-r--r--config-model/src/test/cfg/application/deprecated_features_app/searchdefinitions/message.sd2
-rw-r--r--config-model/src/test/cfg/application/deprecated_features_app/services.xml2
-rw-r--r--config-model/src/test/cfg/application/doubleconfig/hosts.xml2
-rw-r--r--config-model/src/test/cfg/application/doubleconfig/services.xml2
-rw-r--r--config-model/src/test/cfg/application/empty_prod_region_in_deployment_xml/deployment.xml2
-rw-r--r--config-model/src/test/cfg/application/empty_prod_region_in_deployment_xml/hosts.xml2
-rw-r--r--config-model/src/test/cfg/application/empty_prod_region_in_deployment_xml/services.xml2
-rw-r--r--config-model/src/test/cfg/application/include_dirs/dir1/default.xml2
-rw-r--r--config-model/src/test/cfg/application/include_dirs/dir2/chain2.xml2
-rw-r--r--config-model/src/test/cfg/application/include_dirs/dir2/chain3.xml2
-rw-r--r--config-model/src/test/cfg/application/include_dirs/jdisc_dir/jdisc1.xml2
-rw-r--r--config-model/src/test/cfg/application/include_dirs/services.xml2
-rw-r--r--config-model/src/test/cfg/application/invalid_parallel_deployment_xml/deployment.xml2
-rw-r--r--config-model/src/test/cfg/application/invalid_parallel_deployment_xml/hosts.xml2
-rw-r--r--config-model/src/test/cfg/application/invalid_parallel_deployment_xml/services.xml2
-rw-r--r--config-model/src/test/cfg/application/metricsconfig/hosts.xml2
-rw-r--r--config-model/src/test/cfg/application/metricsconfig/services.xml2
-rw-r--r--config-model/src/test/cfg/application/ml_models/schemas/test.sd2
-rw-r--r--config-model/src/test/cfg/application/ml_models/services.xml2
-rw-r--r--config-model/src/test/cfg/application/ml_serving/models/sqrt.py2
-rw-r--r--config-model/src/test/cfg/application/ml_serving/services.xml2
-rw-r--r--config-model/src/test/cfg/application/ml_serving_not_activated/services.xml2
-rw-r--r--config-model/src/test/cfg/application/newfilenames/hosts.xml2
-rw-r--r--config-model/src/test/cfg/application/newfilenames/services.xml2
-rwxr-xr-xconfig-model/src/test/cfg/application/onnx/files/add.py2
-rwxr-xr-xconfig-model/src/test/cfg/application/onnx/models/mul.py2
-rw-r--r--config-model/src/test/cfg/application/onnx/schemas/test.sd2
-rw-r--r--config-model/src/test/cfg/application/onnx/services.xml16
-rw-r--r--config-model/src/test/cfg/application/onnx_name_collision/models/barfoo.onnx16
-rwxr-xr-xconfig-model/src/test/cfg/application/onnx_name_collision/models/barfoo.py26
-rw-r--r--config-model/src/test/cfg/application/onnx_name_collision/models/foobar.onnx16
-rwxr-xr-xconfig-model/src/test/cfg/application/onnx_name_collision/models/foobar.py26
-rw-r--r--config-model/src/test/cfg/application/onnx_name_collision/services.xml12
-rw-r--r--config-model/src/test/cfg/application/plugins/hosts.xml2
-rw-r--r--config-model/src/test/cfg/application/plugins/services.xml2
-rw-r--r--config-model/src/test/cfg/application/sdfilenametest/schemas/notmusic.sd2
-rw-r--r--config-model/src/test/cfg/application/sdfilenametest/services.xml2
-rw-r--r--config-model/src/test/cfg/application/serverdefs/vespa.config.search.attributes.def2
-rw-r--r--config-model/src/test/cfg/application/simpleconfig/hosts.xml2
-rw-r--r--config-model/src/test/cfg/application/simpleconfig/services.xml2
-rw-r--r--config-model/src/test/cfg/application/stateless_eval/lightgbm_regression.json275
-rwxr-xr-xconfig-model/src/test/cfg/application/stateless_eval/mul.py2
-rw-r--r--config-model/src/test/cfg/application/treeconfig/hosts.xml2
-rw-r--r--config-model/src/test/cfg/application/treeconfig/services.xml2
-rw-r--r--config-model/src/test/cfg/application/validation/document_references_validation/hosts.xml2
-rw-r--r--config-model/src/test/cfg/application/validation/document_references_validation/schemas/ad.sd2
-rw-r--r--config-model/src/test/cfg/application/validation/document_references_validation/schemas/campaign.sd2
-rw-r--r--config-model/src/test/cfg/application/validation/document_references_validation/services.xml2
-rw-r--r--config-model/src/test/cfg/application/validation/global_distribution_validation/hosts.xml2
-rw-r--r--config-model/src/test/cfg/application/validation/global_distribution_validation/schemas/parent.sd2
-rw-r--r--config-model/src/test/cfg/application/validation/global_distribution_validation/schemas/simple.sd2
-rw-r--r--config-model/src/test/cfg/application/validation/global_distribution_validation/services.xml2
-rw-r--r--config-model/src/test/cfg/application/validation/index_struct/schemas/simple.sd2
-rw-r--r--config-model/src/test/cfg/application/validation/index_struct/services.xml2
-rw-r--r--config-model/src/test/cfg/application/validation/prefix/schemas/simple.sd2
-rw-r--r--config-model/src/test/cfg/application/validation/prefix/services.xml2
-rw-r--r--config-model/src/test/cfg/application/validation/prefix_index/schemas/simple.sd2
-rw-r--r--config-model/src/test/cfg/application/validation/prefix_index/services.xml2
-rw-r--r--config-model/src/test/cfg/application/validation/prefix_index_and_attribute/schemas/simple.sd2
-rw-r--r--config-model/src/test/cfg/application/validation/prefix_index_and_attribute/services.xml2
-rw-r--r--config-model/src/test/cfg/application/validation/prefix_streaming/schemas/simple.sd2
-rw-r--r--config-model/src/test/cfg/application/validation/prefix_streaming/services.xml2
-rw-r--r--config-model/src/test/cfg/application/validation/ranking_constants_fail/schemas/simple.sd2
-rw-r--r--config-model/src/test/cfg/application/validation/ranking_constants_fail/services.xml2
-rw-r--r--config-model/src/test/cfg/application/validation/ranking_constants_ok/schemas/simple.sd2
-rw-r--r--config-model/src/test/cfg/application/validation/ranking_constants_ok/services.xml2
-rw-r--r--config-model/src/test/cfg/application/validation/search_alltypes/hosts.xml2
-rw-r--r--config-model/src/test/cfg/application/validation/search_alltypes/schemas/parent.sd2
-rw-r--r--config-model/src/test/cfg/application/validation/search_alltypes/schemas/simple.sd2
-rw-r--r--config-model/src/test/cfg/application/validation/search_alltypes/services.xml2
-rw-r--r--config-model/src/test/cfg/application/validation/search_empty_content/hosts.xml2
-rw-r--r--config-model/src/test/cfg/application/validation/search_empty_content/schemas/simple.sd2
-rw-r--r--config-model/src/test/cfg/application/validation/search_empty_content/services.xml2
-rw-r--r--config-model/src/test/cfg/application/validation/search_struct/hosts.xml2
-rw-r--r--config-model/src/test/cfg/application/validation/search_struct/schemas/simple.sd2
-rw-r--r--config-model/src/test/cfg/application/validation/search_struct/services.xml2
-rw-r--r--config-model/src/test/cfg/container/data/configserverinclude/hosted-vespa/hosted.xml2
-rw-r--r--config-model/src/test/cfg/container/data/configserverinclude/services.xml2
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude/docprocinclude1/foo/bar/docprocinclude1.xml2
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude/hosts.xml2
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude/processinginclude1/processinginclude1.xml2
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude/searchinclude1/contents/includedsearch1.xml2
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude/searchinclude1/contents/includedsearch2.xml2
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude/searchinclude2/includedsearch3.xml2
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude/services.xml2
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude2/hosts.xml2
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude2/services.xml2
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude3/hosts.xml2
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude3/services.xml2
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude4/hosts.xml2
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude4/services.xml2
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude5/searchinclude/processing.xml2
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude5/services.xml2
-rw-r--r--config-model/src/test/cfg/container/data/containerinclude6/services.xml2
-rw-r--r--config-model/src/test/cfg/container/data/include_xml_error/dir1/default.xml2
-rw-r--r--config-model/src/test/cfg/container/data/include_xml_error/services.xml2
-rw-r--r--config-model/src/test/cfg/routing/content_two_clusters/hosts.xml2
-rw-r--r--config-model/src/test/cfg/routing/content_two_clusters/schemas/mobile.sd2
-rw-r--r--config-model/src/test/cfg/routing/content_two_clusters/schemas/music.sd2
-rw-r--r--config-model/src/test/cfg/routing/content_two_clusters/services.xml2
-rw-r--r--config-model/src/test/cfg/routing/contentsimpleconfig/hosts.xml2
-rw-r--r--config-model/src/test/cfg/routing/contentsimpleconfig/schemas/music.sd2
-rw-r--r--config-model/src/test/cfg/routing/contentsimpleconfig/services.xml2
-rwxr-xr-xconfig-model/src/test/cfg/routing/defaultconfig/hosts.xml2
-rwxr-xr-xconfig-model/src/test/cfg/routing/defaultconfig/services.xml2
-rw-r--r--config-model/src/test/cfg/routing/duplicatehop/hosts.xml2
-rwxr-xr-xconfig-model/src/test/cfg/routing/duplicatehop/services.xml2
-rw-r--r--config-model/src/test/cfg/routing/duplicateroute/hosts.xml2
-rwxr-xr-xconfig-model/src/test/cfg/routing/duplicateroute/services.xml2
-rw-r--r--config-model/src/test/cfg/routing/emptyhop/hosts.xml2
-rw-r--r--config-model/src/test/cfg/routing/emptyhop/services.xml2
-rw-r--r--config-model/src/test/cfg/routing/emptyroute/hosts.xml2
-rw-r--r--config-model/src/test/cfg/routing/emptyroute/services.xml2
-rwxr-xr-xconfig-model/src/test/cfg/routing/hopconfig/hosts.xml2
-rwxr-xr-xconfig-model/src/test/cfg/routing/hopconfig/services.xml2
-rw-r--r--config-model/src/test/cfg/routing/hoperror/hosts.xml2
-rw-r--r--config-model/src/test/cfg/routing/hoperror/services.xml2
-rw-r--r--config-model/src/test/cfg/routing/hoperrorinrecipient/hosts.xml2
-rw-r--r--config-model/src/test/cfg/routing/hoperrorinrecipient/services.xml2
-rw-r--r--config-model/src/test/cfg/routing/hoperrorinroute/hosts.xml2
-rw-r--r--config-model/src/test/cfg/routing/hoperrorinroute/services.xml2
-rw-r--r--config-model/src/test/cfg/routing/hopnotfound/hosts.xml2
-rw-r--r--config-model/src/test/cfg/routing/hopnotfound/services.xml2
-rw-r--r--config-model/src/test/cfg/routing/invalidstoragepolicy/hosts.xml2
-rw-r--r--config-model/src/test/cfg/routing/invalidstoragepolicy/services.xml2
-rw-r--r--config-model/src/test/cfg/routing/mismatchedrecipient/hosts.xml2
-rw-r--r--config-model/src/test/cfg/routing/mismatchedrecipient/services.xml2
-rwxr-xr-xconfig-model/src/test/cfg/routing/replacehop/hosts.xml2
-rwxr-xr-xconfig-model/src/test/cfg/routing/replacehop/schemas/music.sd2
-rwxr-xr-xconfig-model/src/test/cfg/routing/replacehop/services.xml2
-rwxr-xr-xconfig-model/src/test/cfg/routing/replaceroute/hosts.xml2
-rwxr-xr-xconfig-model/src/test/cfg/routing/replaceroute/schemas/music.sd2
-rwxr-xr-xconfig-model/src/test/cfg/routing/replaceroute/services.xml2
-rwxr-xr-xconfig-model/src/test/cfg/routing/routeconfig/hosts.xml2
-rwxr-xr-xconfig-model/src/test/cfg/routing/routeconfig/services.xml2
-rw-r--r--config-model/src/test/cfg/routing/routenotfound/hosts.xml2
-rw-r--r--config-model/src/test/cfg/routing/routenotfound/services.xml2
-rw-r--r--config-model/src/test/cfg/routing/routenotfoundinroute/hosts.xml2
-rw-r--r--config-model/src/test/cfg/routing/routenotfoundinroute/services.xml2
-rw-r--r--config-model/src/test/cfg/routing/servicenotfound/hosts.xml2
-rw-r--r--config-model/src/test/cfg/routing/servicenotfound/services.xml2
-rw-r--r--config-model/src/test/cfg/routing/unexpectedrecipient/hosts.xml2
-rw-r--r--config-model/src/test/cfg/routing/unexpectedrecipient/services.xml2
-rw-r--r--config-model/src/test/cfg/search/data/travel/schemas/TTData.sd2
-rw-r--r--config-model/src/test/cfg/search/data/travel/schemas/TTEdge.sd2
-rw-r--r--config-model/src/test/cfg/search/data/travel/schemas/TTPOI.sd2
-rw-r--r--config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/schemas/base.sd2
-rw-r--r--config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/schemas/left.sd2
-rw-r--r--config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/schemas/music.sd2
-rw-r--r--config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/schemas/right.sd2
-rw-r--r--config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/services.xml2
-rw-r--r--config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/hosts.xml2
-rw-r--r--config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/schemas/music.sd2
-rw-r--r--config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/services.xml2
-rw-r--r--config-model/src/test/cfg/storage/clustercontroller_advanced/hosts.xml2
-rw-r--r--config-model/src/test/cfg/storage/clustercontroller_advanced/schemas/music.sd2
-rw-r--r--config-model/src/test/cfg/storage/clustercontroller_advanced/services.xml2
-rw-r--r--config-model/src/test/configmodel/types/other_doc.sd2
-rw-r--r--config-model/src/test/configmodel/types/type_with_doc_field.sd2
-rw-r--r--config-model/src/test/configmodel/types/types.sd2
-rw-r--r--config-model/src/test/derived/advanced/advanced.sd2
-rw-r--r--config-model/src/test/derived/advanced/attributes.cfg1
-rwxr-xr-xconfig-model/src/test/derived/annotationsimplicitstruct/annotationsimplicitstruct.sd2
-rwxr-xr-xconfig-model/src/test/derived/annotationsinheritance/annotationsinheritance.sd2
-rwxr-xr-xconfig-model/src/test/derived/annotationsinheritance2/annotationsinheritance2.sd2
-rw-r--r--config-model/src/test/derived/annotationsoutsideofdocument/annotationsoutsideofdocument.sd2
-rw-r--r--config-model/src/test/derived/annotationspolymorphy/annotationspolymorphy.sd2
-rwxr-xr-xconfig-model/src/test/derived/annotationsreference/annotationsreference.sd2
-rw-r--r--config-model/src/test/derived/annotationsreference2/annotationsreference2.sd2
-rwxr-xr-xconfig-model/src/test/derived/annotationssimple/annotationssimple.sd2
-rw-r--r--config-model/src/test/derived/annotationsstruct/annotationsstruct.sd2
-rw-r--r--config-model/src/test/derived/annotationsstructarray/annotationsstructarray.sd2
-rw-r--r--config-model/src/test/derived/array_of_struct_attribute/attributes.cfg2
-rw-r--r--config-model/src/test/derived/array_of_struct_attribute/test.sd2
-rw-r--r--config-model/src/test/derived/arrays/arrays.sd2
-rw-r--r--config-model/src/test/derived/attributeprefetch/attributeprefetch.sd2
-rw-r--r--config-model/src/test/derived/attributeprefetch/attributes.cfg18
-rw-r--r--config-model/src/test/derived/attributerank/attributerank.sd4
-rw-r--r--config-model/src/test/derived/attributes/attributes.cfg18
-rw-r--r--config-model/src/test/derived/attributes/attributes.sd2
-rw-r--r--config-model/src/test/derived/combinedattributeandindexsearch/combinedattributeandindexsearch.sd2
-rw-r--r--config-model/src/test/derived/complex/attributes.cfg9
-rw-r--r--config-model/src/test/derived/complex/complex.sd2
-rw-r--r--config-model/src/test/derived/deriver/child.sd2
-rw-r--r--config-model/src/test/derived/deriver/grandparent.sd2
-rw-r--r--config-model/src/test/derived/deriver/parent.sd2
-rw-r--r--config-model/src/test/derived/emptychild/child.sd2
-rw-r--r--config-model/src/test/derived/emptychild/parent.sd2
-rw-r--r--config-model/src/test/derived/emptydefault/emptydefault.sd2
-rw-r--r--config-model/src/test/derived/exactmatch/exactmatch.sd2
-rwxr-xr-xconfig-model/src/test/derived/flickr/flickrphotos.sd2
-rw-r--r--config-model/src/test/derived/function_arguments/test.sd2
-rw-r--r--config-model/src/test/derived/function_arguments_with_expressions/test.sd2
-rw-r--r--config-model/src/test/derived/gemini2/gemini.sd2
-rw-r--r--config-model/src/test/derived/hnsw_index/attributes.cfg2
-rw-r--r--config-model/src/test/derived/hnsw_index/test.sd2
-rw-r--r--config-model/src/test/derived/id/id.sd2
-rw-r--r--config-model/src/test/derived/imported_fields_inherited_reference/attributes.cfg4
-rw-r--r--config-model/src/test/derived/imported_fields_inherited_reference/child_a.sd2
-rw-r--r--config-model/src/test/derived/imported_fields_inherited_reference/child_b.sd2
-rw-r--r--config-model/src/test/derived/imported_fields_inherited_reference/child_c.sd2
-rw-r--r--config-model/src/test/derived/imported_fields_inherited_reference/parent.sd2
-rw-r--r--config-model/src/test/derived/imported_position_field/attributes.cfg2
-rw-r--r--config-model/src/test/derived/imported_position_field/child.sd2
-rw-r--r--config-model/src/test/derived/imported_position_field/parent.sd2
-rw-r--r--config-model/src/test/derived/imported_position_field_summary/child.sd2
-rw-r--r--config-model/src/test/derived/imported_position_field_summary/parent.sd2
-rw-r--r--config-model/src/test/derived/imported_struct_fields/attributes.cfg8
-rw-r--r--config-model/src/test/derived/imported_struct_fields/child.sd2
-rw-r--r--config-model/src/test/derived/imported_struct_fields/parent.sd2
-rw-r--r--config-model/src/test/derived/importedfields/attributes.cfg8
-rw-r--r--config-model/src/test/derived/importedfields/child.sd2
-rw-r--r--config-model/src/test/derived/importedfields/grandparent.sd2
-rw-r--r--config-model/src/test/derived/importedfields/parent_a.sd2
-rw-r--r--config-model/src/test/derived/importedfields/parent_b.sd2
-rw-r--r--config-model/src/test/derived/indexinfo_fieldsets/indexinfo_fieldsets.sd2
-rw-r--r--config-model/src/test/derived/indexinfo_lowercase/indexinfo_lowercase.sd2
-rw-r--r--config-model/src/test/derived/indexschema/indexschema.sd2
-rw-r--r--config-model/src/test/derived/indexswitches/indexswitches.sd2
-rw-r--r--config-model/src/test/derived/inheritance/attributes.cfg3
-rw-r--r--config-model/src/test/derived/inheritance/child.sd2
-rw-r--r--config-model/src/test/derived/inheritance/father.sd2
-rw-r--r--config-model/src/test/derived/inheritance/grandparent.sd2
-rw-r--r--config-model/src/test/derived/inheritance/mother.sd2
-rw-r--r--config-model/src/test/derived/inheritdiamond/child.sd2
-rw-r--r--config-model/src/test/derived/inheritdiamond/father.sd2
-rw-r--r--config-model/src/test/derived/inheritdiamond/grandparent.sd2
-rw-r--r--config-model/src/test/derived/inheritdiamond/mother.sd2
-rw-r--r--config-model/src/test/derived/inheritfromgrandparent/child.sd2
-rw-r--r--config-model/src/test/derived/inheritfromgrandparent/grandparent.sd2
-rw-r--r--config-model/src/test/derived/inheritfromgrandparent/parent.sd2
-rw-r--r--config-model/src/test/derived/inheritfromnull/inheritfromnull.sd2
-rw-r--r--config-model/src/test/derived/inheritfromparent/attributes.cfg1
-rw-r--r--config-model/src/test/derived/inheritfromparent/child.sd2
-rw-r--r--config-model/src/test/derived/inheritfromparent/parent.sd2
-rw-r--r--config-model/src/test/derived/inheritstruct/child.sd2
-rw-r--r--config-model/src/test/derived/inheritstruct/parent.sd2
-rw-r--r--config-model/src/test/derived/integerattributetostringindex/integerattributetostringindex.sd2
-rw-r--r--config-model/src/test/derived/language/language.sd2
-rw-r--r--config-model/src/test/derived/mail/mail.sd2
-rw-r--r--config-model/src/test/derived/map_attribute/attributes.cfg3
-rw-r--r--config-model/src/test/derived/map_attribute/test.sd2
-rw-r--r--config-model/src/test/derived/map_of_struct_attribute/attributes.cfg5
-rw-r--r--config-model/src/test/derived/map_of_struct_attribute/test.sd2
-rw-r--r--config-model/src/test/derived/mlr/mlr.sd2
-rw-r--r--config-model/src/test/derived/multiplesummaries/multiplesummaries.sd2
-rw-r--r--config-model/src/test/derived/music/attributes.cfg11
-rw-r--r--config-model/src/test/derived/music/defs/document.config.documentmanager.def2
-rw-r--r--config-model/src/test/derived/music/defs/test.extra.def2
-rw-r--r--config-model/src/test/derived/music/defs/vespa.config.search.attributes.def2
-rw-r--r--config-model/src/test/derived/music/defs/vespa.config.search.rank-profiles.def2
-rw-r--r--config-model/src/test/derived/music/defs/vespa.config.search.summarymap.def2
-rw-r--r--config-model/src/test/derived/music/defs/vespa.configdefinition.ilscripts.def2
-rw-r--r--config-model/src/test/derived/music/music.sd2
-rw-r--r--config-model/src/test/derived/music3/music3.sd2
-rw-r--r--config-model/src/test/derived/namecollision/collision.sd2
-rw-r--r--config-model/src/test/derived/namecollision/collisionstruct.sd2
-rw-r--r--config-model/src/test/derived/nearestneighbor/query-profiles/default.xml2
-rw-r--r--config-model/src/test/derived/nearestneighbor/query-profiles/types/root.xml2
-rw-r--r--config-model/src/test/derived/nearestneighbor/test.sd2
-rw-r--r--config-model/src/test/derived/newrank/attributes.cfg10
-rw-r--r--config-model/src/test/derived/newrank/defs/document.config.documentmanager.def2
-rw-r--r--config-model/src/test/derived/newrank/defs/test.extra.def2
-rw-r--r--config-model/src/test/derived/newrank/defs/vespa.config.search.attributes.def2
-rw-r--r--config-model/src/test/derived/newrank/defs/vespa.config.search.rank-profiles.def2
-rw-r--r--config-model/src/test/derived/newrank/defs/vespa.config.search.summarymap.def2
-rw-r--r--config-model/src/test/derived/newrank/defs/vespa.configdefinition.ilscripts.def2
-rw-r--r--config-model/src/test/derived/newrank/newrank.sd2
-rw-r--r--config-model/src/test/derived/nuwa/newsindex.sd2
-rwxr-xr-xconfig-model/src/test/derived/orderilscripts/orderilscripts.sd2
-rw-r--r--config-model/src/test/derived/position_array/position_array.sd2
-rw-r--r--config-model/src/test/derived/position_attribute/position_attribute.sd2
-rw-r--r--config-model/src/test/derived/position_extra/position_extra.sd2
-rw-r--r--config-model/src/test/derived/position_nosummary/position_nosummary.sd2
-rw-r--r--config-model/src/test/derived/position_summary/position_summary.sd2
-rw-r--r--config-model/src/test/derived/predicate_attribute/attributes.cfg1
-rw-r--r--config-model/src/test/derived/predicate_attribute/predicate_attribute.sd2
-rw-r--r--config-model/src/test/derived/prefixexactattribute/attributes.cfg2
-rw-r--r--config-model/src/test/derived/prefixexactattribute/prefixexactattribute.sd2
-rw-r--r--config-model/src/test/derived/rankexpression/rank-profiles.cfg4
-rw-r--r--config-model/src/test/derived/rankexpression/rankexpression.sd2
-rw-r--r--config-model/src/test/derived/rankprofileinheritance/child.sd2
-rw-r--r--config-model/src/test/derived/rankprofileinheritance/parent1.sd2
-rw-r--r--config-model/src/test/derived/rankprofileinheritance/parent2.sd2
-rw-r--r--config-model/src/test/derived/rankprofiles/rankprofiles.sd2
-rw-r--r--config-model/src/test/derived/rankproperties/rankproperties.sd2
-rw-r--r--config-model/src/test/derived/ranktypes/ranktypes.sd2
-rw-r--r--config-model/src/test/derived/reference_fields/ad.sd2
-rw-r--r--config-model/src/test/derived/reference_fields/attributes.cfg3
-rw-r--r--config-model/src/test/derived/reference_fields/campaign.sd2
-rw-r--r--config-model/src/test/derived/reserved_position/reserved_position.sd2
-rw-r--r--config-model/src/test/derived/sorting/attributes.cfg3
-rw-r--r--config-model/src/test/derived/sorting/sorting.sd2
-rw-r--r--config-model/src/test/derived/streamingjuniper/streamingjuniper.sd2
-rw-r--r--config-model/src/test/derived/streamingstruct/streamingstruct.sd2
-rw-r--r--config-model/src/test/derived/streamingstructdefault/streamingstructdefault.sd2
-rwxr-xr-xconfig-model/src/test/derived/structanyorder/structanyorder.sd2
-rw-r--r--config-model/src/test/derived/tensor/attributes.cfg5
-rw-r--r--config-model/src/test/derived/tensor/tensor.sd2
-rw-r--r--config-model/src/test/derived/tensor2/first.sd2
-rw-r--r--config-model/src/test/derived/tensor2/second.sd2
-rw-r--r--config-model/src/test/derived/twostreamingstructs/streamingstruct.sd2
-rw-r--r--config-model/src/test/derived/twostreamingstructs/whatever.sd2
-rw-r--r--config-model/src/test/derived/types/attributes.cfg13
-rw-r--r--config-model/src/test/derived/types/types.sd2
-rw-r--r--config-model/src/test/derived/uri_array/uri_array.sd2
-rw-r--r--config-model/src/test/derived/uri_wset/uri_wset.sd2
-rw-r--r--config-model/src/test/examples/arrays.sd2
-rw-r--r--config-model/src/test/examples/arraysweightedsets.sd2
-rwxr-xr-xconfig-model/src/test/examples/attributeposition.sd2
-rw-r--r--config-model/src/test/examples/attributesettings.sd2
-rw-r--r--config-model/src/test/examples/attributesexactmatch.sd2
-rwxr-xr-xconfig-model/src/test/examples/badstruct.sd2
-rw-r--r--config-model/src/test/examples/casing.sd2
-rw-r--r--config-model/src/test/examples/child.sd2
-rw-r--r--config-model/src/test/examples/comment.sd2
-rw-r--r--config-model/src/test/examples/documentidinsummary.sd2
-rw-r--r--config-model/src/test/examples/documents.sd2
-rw-r--r--config-model/src/test/examples/fieldoftypedocument.sd2
-rw-r--r--config-model/src/test/examples/implicitsummaries_attribute.sd2
-rw-r--r--config-model/src/test/examples/implicitsummaryfields.sd2
-rw-r--r--config-model/src/test/examples/importing.sd2
-rw-r--r--config-model/src/test/examples/incorrectrankingexpressionfileref.sd2
-rw-r--r--config-model/src/test/examples/indexing.sd2
-rw-r--r--config-model/src/test/examples/indexing_attribute_changed.sd2
-rw-r--r--config-model/src/test/examples/indexing_attribute_other.sd2
-rw-r--r--config-model/src/test/examples/indexing_extra.sd2
-rw-r--r--config-model/src/test/examples/indexing_extra_field_input_extra_field.sd2
-rw-r--r--config-model/src/test/examples/indexing_extra_field_input_implicit.sd2
-rw-r--r--config-model/src/test/examples/indexing_extra_field_input_null.sd2
-rw-r--r--config-model/src/test/examples/indexing_extra_field_input_self.sd2
-rw-r--r--config-model/src/test/examples/indexing_index_changed.sd2
-rw-r--r--config-model/src/test/examples/indexing_index_other.sd2
-rw-r--r--config-model/src/test/examples/indexing_input_other_field.sd2
-rw-r--r--config-model/src/test/examples/indexing_invalid_expression.sd2
-rw-r--r--config-model/src/test/examples/indexing_modify_field_no_output.sd2
-rw-r--r--config-model/src/test/examples/indexing_multiline_output_conflict.sd2
-rw-r--r--config-model/src/test/examples/indexing_output_conflict.sd2
-rw-r--r--config-model/src/test/examples/indexing_output_other_field.sd2
-rw-r--r--config-model/src/test/examples/indexing_summary_changed.sd2
-rw-r--r--config-model/src/test/examples/indexing_summary_other.sd2
-rw-r--r--config-model/src/test/examples/indexrewrite.sd2
-rw-r--r--config-model/src/test/examples/indexsettings.sd2
-rw-r--r--config-model/src/test/examples/integerindex2attribute.sd2
-rw-r--r--config-model/src/test/examples/invalid_sd_construct.sd2
-rw-r--r--config-model/src/test/examples/invalid_sd_junk_at_end.sd2
-rw-r--r--config-model/src/test/examples/invalid_sd_lexical_error.sd2
-rw-r--r--config-model/src/test/examples/invalid_sd_missing_document.sd2
-rw-r--r--config-model/src/test/examples/invalid_sd_no_closing_bracket.sd2
-rw-r--r--config-model/src/test/examples/invalidimplicitsummarysource.sd2
-rw-r--r--config-model/src/test/examples/invalidngram1.sd2
-rw-r--r--config-model/src/test/examples/invalidngram2.sd2
-rw-r--r--config-model/src/test/examples/invalidngram3.sd2
-rw-r--r--config-model/src/test/examples/invalidselfreferringsummary.sd2
-rw-r--r--config-model/src/test/examples/invalidsummarysource.sd2
-rw-r--r--config-model/src/test/examples/largerankingexpressions/rankexpression.sd64
-rw-r--r--config-model/src/test/examples/matchphase/non_existing_attribute.sd2
-rw-r--r--config-model/src/test/examples/matchphase/non_fast_search_attribute.sd2
-rw-r--r--config-model/src/test/examples/matchphase/wrong_collection_type_attribute.sd2
-rw-r--r--config-model/src/test/examples/matchphase/wrong_data_type_attribute.sd2
-rw-r--r--config-model/src/test/examples/multiplesummaries.sd2
-rw-r--r--config-model/src/test/examples/music.sd2
-rw-r--r--config-model/src/test/examples/nextgen/boldedsummaryfields.sd2
-rw-r--r--config-model/src/test/examples/nextgen/dynamicsummaryfields.sd2
-rw-r--r--config-model/src/test/examples/nextgen/extrafield.sd2
-rw-r--r--config-model/src/test/examples/nextgen/implicitstructtypes.sd2
-rw-r--r--config-model/src/test/examples/nextgen/simple.sd2
-rw-r--r--config-model/src/test/examples/nextgen/summaryfield.sd2
-rw-r--r--config-model/src/test/examples/nextgen/toggleon.sd2
-rw-r--r--config-model/src/test/examples/nextgen/untransformedsummaryfields.sd2
-rw-r--r--config-model/src/test/examples/nextgen/unusedfields.sd2
-rw-r--r--config-model/src/test/examples/nextgen/uri_array.sd2
-rw-r--r--config-model/src/test/examples/nextgen/uri_simple.sd2
-rw-r--r--config-model/src/test/examples/nextgen/uri_wset.sd2
-rw-r--r--config-model/src/test/examples/ngram.sd2
-rw-r--r--config-model/src/test/examples/outsidedoc.sd2
-rw-r--r--config-model/src/test/examples/outsidesummary.sd2
-rw-r--r--config-model/src/test/examples/position_array.sd2
-rw-r--r--config-model/src/test/examples/position_attribute.sd2
-rw-r--r--config-model/src/test/examples/position_base.sd2
-rw-r--r--config-model/src/test/examples/position_extra.sd2
-rw-r--r--config-model/src/test/examples/position_index.sd2
-rw-r--r--config-model/src/test/examples/position_inherited.sd2
-rw-r--r--config-model/src/test/examples/position_summary.sd2
-rw-r--r--config-model/src/test/examples/rankingexpressionfunction/rankingexpressionfunction.sd2
-rw-r--r--config-model/src/test/examples/rankingexpressioninfile/rankingexpressioninfile.sd2
-rw-r--r--config-model/src/test/examples/rankmodifier/literal.sd2
-rw-r--r--config-model/src/test/examples/rankpropvars.sd2
-rw-r--r--config-model/src/test/examples/reserved_words_as_field_names.sd2
-rw-r--r--config-model/src/test/examples/simple.sd2
-rw-r--r--config-model/src/test/examples/stemmingdefault.sd2
-rw-r--r--config-model/src/test/examples/stemmingresolver.sd2
-rw-r--r--config-model/src/test/examples/stemmingsetting.sd2
-rw-r--r--config-model/src/test/examples/strange.sd2
-rwxr-xr-xconfig-model/src/test/examples/struct.sd2
-rw-r--r--config-model/src/test/examples/struct_outside.sd2
-rwxr-xr-xconfig-model/src/test/examples/structanddocumentwithsamenames.sd2
-rw-r--r--config-model/src/test/examples/structoutsideofdocument.sd2
-rw-r--r--config-model/src/test/examples/summaryfieldcollision.sd2
-rw-r--r--config-model/src/test/examples/weightedset-summaryto.sd2
-rwxr-xr-xconfig-model/src/test/integration/onnx-model/files/create_dynamic_model.py2
-rwxr-xr-xconfig-model/src/test/integration/onnx-model/files/create_model.py2
-rwxr-xr-xconfig-model/src/test/integration/onnx-model/files/create_unbound_model.py2
-rw-r--r--config-model/src/test/integration/onnx-model/schemas/test.sd2
-rw-r--r--config-model/src/test/integration/onnx-model/services.xml2
-rwxr-xr-xconfig-model/src/test/integration/onnx/models/small_constants_and_functions.py2
-rw-r--r--config-model/src/test/integration/onnx/services.xml2
-rw-r--r--config-model/src/test/integration/vespa/services.xml2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/ApplicationPackageTester.java2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/ConfigModelBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/ConfigModelContextTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/ConfigModelUtilsTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/MapConfigModelRegistryTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/MockModelContext.java8
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/QrserverAndGatewayPortAllocationTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/application/provider/SchemaValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/builder/xml/ConfigModelIdTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/builder/xml/test/DomBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/deploy/DeployStateTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/deploy/SystemModelTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/graph/GraphMock.java2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/graph/ModelGraphTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/producer/AbstractConfigProducerTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/provision/HostSpecTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/provision/HostsXmlProvisionerTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java19
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/provision/SingleNodeProvisionerTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/test/MockHosts.java2
-rw-r--r--config-model/src/test/java/com/yahoo/document/test/SDDocumentTypeTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/document/test/SDFieldTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/ArraysTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/ArraysWeightedSetsTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/AttributeSettingsTestCase.java41
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/CommentTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/DiversityTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/DocumentGraphValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/DocumentReferenceResolverTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/FeatureNamesTestCase.java50
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/FieldOfTypeDocumentTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/IncorrectRankingExpressionFileRefTestCase.java7
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/IncorrectSummaryTypesTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/IndexSettingsTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/IndexingParsingTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/MultipleSummariesTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/NameFieldCheckTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/OutsideTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/PredicateDataTypeTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/RankProfileRegistryTest.java6
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/RankProfileTestCase.java245
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/RankPropertiesTestCase.java10
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/RankingConstantTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionConstantsTestCase.java12
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionInliningTestCase.java58
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionLoopDetectionTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionShadowingTestCase.java33
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionValidationTestCase.java8
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/ReservedWordsAsFieldNamesTestCase.java2
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/searchdefinition/SDDocumentTypeOrdererTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/SchemaParsingTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/SchemaTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/SearchImporterTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/StemmingSettingTestCase.java2
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/searchdefinition/StructTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/UrlFieldValidationTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/AbstractExportingTestCase.java11
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/searchdefinition/derived/AnnotationsTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/ArraysTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributeListTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributesTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/CasingTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/CombinedAttributeAndIndexSearchTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/DeriverTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/EmptyRankProfileTestCase.java5
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/ExactMatchTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/ExportingTestCase.java4
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/ExpressionsAsArgsTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/GeminiTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/IdTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/ImportedFieldsTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/IndexSchemaTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/InheritanceTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/IntegerAttributeToStringIndexTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/LiteralBoostTestCase.java13
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/LowercaseTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/MailTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/MultipleSummariesTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/NameCollisionTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/NativeRankTypeDefinitionsTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/NuwaTestCase.java2
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/searchdefinition/derived/OrderIlscriptsTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/PrefixExactAttributeTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/RankProfilesTestCase.java5
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/RankPropertiesTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/ReferenceFieldsTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/SearchOrdererTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/SimpleInheritTestCase.java9
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/SortingTestCase.java2
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/searchdefinition/derived/StreamingStructTestCase.java2
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/searchdefinition/derived/StructAnyOrderTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/TestableDeployLogger.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/TwoStreamingStructsTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/TypeConversionTestCase.java6
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/TypesTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/VsmFieldsTestCase.java5
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtilsTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/document/HnswIndexParamsTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFieldsTest.java11
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/AdjustPositionSummaryFieldsTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/AssertIndexingScript.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/AssertSearchBuilder.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/AttributesExactMatchTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/BoldingTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/BoolAttributeValidatorTestCase.java49
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/DictionaryTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/DisallowComplexMapAndWsetKeyTypesTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/FastAccessValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSearchFieldsTestCase.java8
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitStructTypesTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummariesTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummaryFieldsTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolverTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsTestCase.java68
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingInputsTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingOutputsTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingScriptRewriterTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingValidationTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingValuesTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/IntegerIndex2AttributeTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/MatchPhaseSettingsValidatorTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/NGramTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/PagedAttributeValidatorTestCase.java50
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ParentChildSearchModel.java5
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/PositionTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/RankModifierTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/RankProfileSearchFixture.java16
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/RankPropertyVariablesTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionTypeResolverTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithOnnxModelTestCase.java22
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithOnnxTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithTensorTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithTransformerTokensTestCase.java5
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithXGBoostTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionsTestCase.java74
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ReferenceFieldTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ReservedDocumentNamesTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ReservedRankingExpressionFunctionNamesTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/SearchMustHaveDocumentTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSourceTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorFieldTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorTransformTestCase.java8
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesTest.java11
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/WeightedSetSummaryToTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderReferenceTypeTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/HostPortsTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/InstanceResolverTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/RecentLogFilterTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsConsumersTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java5
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java29
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MonitoringElementTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/TelegrafTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/monitoring/MetricSetTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/monitoring/MetricTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/AccessControlFilterValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/AccessControlValidatorTestBase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/AwsAccessControlValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/CloudWatchValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/ComplexAttributeFieldsValidatorTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/ComponentValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/ConstantTensorJsonValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/DeploymentSpecValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/EndpointCertificateSecretsValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/NoPrefixForIndexesTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/QuotaValidatorTest.java11
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/SearchDataTypeValidatorTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/SecretStoreValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/StreamingValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/UriBindingsValidatorTest.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationOverridesValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationTester.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ClusterSizeReductionValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigChangeTestUtils.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/GlobalDocumentChangeValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexedSearchClusterChangeValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/NodeResourceChangeValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/RedundancyIncreaseValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/RestartChangesDefersConfigChangesTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StreamingSearchClusterChangeValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/ContentClusterFixture.java9
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/DocumentDatabaseChangeValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/DocumentTypeChangeValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidatorTest.java48
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/StructFieldAttributeChangeValidatorTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/AccessControlOnFirstDeploymentValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/RedundancyOnFirstDeploymentValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/UserConfigBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/Bug6068056Test.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java54
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2BuilderTest.java10
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomConfigPayloadBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilderTest.java2
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/DependenciesBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearcherBuilderTest.java2
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java58
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/ContainerIncludeTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/HostProvisionerWithCustomRealResource.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/component/BindingPatternTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/configserver/TestOptions.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/docproc/StandaloneDocprocContainerTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/http/BlockFeedGlobalEndpointsFilterTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/http/DefaultFilterTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterBindingsTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterChainsTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterConfigTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/http/StrictFilteringTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTest.java10
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/processing/test/ProcessingChainsTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/ImplicitIndexingClusterTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/SemanticRulesTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/Federation2Test.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/FederationSearcherTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/FederationTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/MockSearchClusters.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTest2.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTestBase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SourceGroupTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/semanticrules/rules/common.sr2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/semanticrules/rules/other.sr2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/PageTemplatesTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/QueryProfileVariantsTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/QueryProfilesTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/newsbesimple/scthumbnail.xml2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/newsfesimple/backend_news.xml2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/newsfesimple/default.xml2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/footer.xml2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/header.xml2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/pages.cfg10
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/richSerp.xml2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/richerSerp.xml2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/slottingSerp.xml2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants/variants1.xml2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants/variants2.xml2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants/wparent2.xml2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants2/default.xml2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants2/multi.xml2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants2/querybest.xml2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants2/querylove.xml2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/variants/default.xml2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/variants/inherited.xml2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/variants/main.xml2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessControlTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/BundleInstantiationSpecificationBuilderTest.java3
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerDocumentApiBuilderTest.java9
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java77
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/DocprocBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/IdentityBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/RoutingBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/SearchBuilderTest.java8
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java72
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/ContentBaseTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java107
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/ContentSearchClusterTest.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/ContentSearchTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/DispatchTuningTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/DistributorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java38
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/GenericConfigTest.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/GlobalDistributionValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/IndexedHierarchicDistributionTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/IndexedSearchNodeNamingTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/IndexedTest.java6
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/IndexingAndDocprocRoutingTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/MonitoringConfigSnoopTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/RedundancyTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/ReservedDocumentTypeNameValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/SearchCoverageTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java36
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/StorageContentTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/StorageGroupTest.java8
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/TopologicalDocumentTypeSorterTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/cluster/DomContentSearchBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/cluster/DomDispatchTuningBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/cluster/DomSearchCoverageBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/cluster/GlobalDistributionBuilderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/utils/ApplicationPackageBuilder.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterBuilder.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterUtils.java18
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/utils/DocType.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/utils/SchemaBuilder.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/filedistribution/FileDistributorTestCase.java61
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/filedistribution/FileReferencesRepositoryTestCase.java34
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/generic/GenericServicesModelTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/generic/GenericServicesTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/ml/ImportedModelTester.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/ml/MlModelsTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/ml/ModelEvaluationTest.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/ml/StatelessOnnxEvaluationTest.java33
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/vespa/model/routing/test/RoutingTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/search/NodeResourcesTuningTest.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/search/test/DocumentDatabaseTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/search/test/DocumentSelectionConverterTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchClusterTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/storage/DistributionBitCalculatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/storage/test/StorageModelTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/ApiConfigModel.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/ApiService.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/DomTestServiceBuilder.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/ModelConfigProviderTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/ParentService.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/PortsMetaTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/SimpleConfigModel.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/SimpleService.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/TestApi.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/utils/ApplicationPackageUtils.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/utils/DeployLoggerStub.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithFilePkg.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithMockPkg.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/utils/DurationTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/utils/FileSenderTest.java85
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/utils/internal/ReflectionUtilTest.java2
-rw-r--r--config-model/src/test/java/helpers/CompareConfigTestHelper.java2
-rw-r--r--config-model/src/test/resources/configdefinitions/test.anotherrestart.def2
-rw-r--r--config-model/src/test/resources/configdefinitions/test.arraytypes.def2
-rw-r--r--config-model/src/test/resources/configdefinitions/test.function-test.def2
-rw-r--r--config-model/src/test/resources/configdefinitions/test.nonrestart.def2
-rw-r--r--config-model/src/test/resources/configdefinitions/test.restart.def2
-rw-r--r--config-model/src/test/resources/configdefinitions/test.simpletypes.def2
-rw-r--r--config-model/src/test/resources/configdefinitions/test.standard.def2
-rw-r--r--config-model/src/test/schema-test-files/deployment.xml2
-rwxr-xr-xconfig-model/src/test/schema-test-files/hosts.xml2
-rw-r--r--config-model/src/test/schema-test-files/services-hosted-infrastructure.xml2
-rw-r--r--config-model/src/test/schema-test-files/services-hosted.xml2
-rw-r--r--config-model/src/test/schema-test-files/services.xml2
-rw-r--r--config-model/src/test/schema-test-files/standalone-container.xml2
-rw-r--r--config-model/src/test/schema-test-files/validation-overrides.xml2
-rwxr-xr-xconfig-model/src/test/sh/test-schema.sh2
-rw-r--r--config-provisioning/CMakeLists.txt2
-rw-r--r--config-provisioning/pom.xml2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/ActivationContext.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/AllocatedHosts.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationId.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationLockException.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationName.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationTransaction.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/AthenzDomain.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/AthenzService.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/Capacity.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/Cloud.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/CloudName.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/ClusterMembership.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/ClusterResources.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/Deployer.java6
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/Deployment.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/DockerImage.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/Environment.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/HostFilter.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/HostLivenessTracker.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/HostName.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/HostSpec.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/InstanceName.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/NodeFlavors.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java8
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/NodeType.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/OutOfCapacityException.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/ProvisionLock.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/ProvisionLogger.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/Provisioner.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/RegionName.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/SystemName.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/TenantName.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/exception/package-info.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/package-info.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/serialization/AllocatedHostsSerializer.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/zone/UpgradePolicy.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/zone/ZoneId.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/zone/ZoneList.java2
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provisioning/package-info.java2
-rw-r--r--config-provisioning/src/main/resources/configdefinitions/config.provisioning.cloud.def2
-rw-r--r--config-provisioning/src/main/resources/configdefinitions/config.provisioning.flavors.def2
-rw-r--r--config-provisioning/src/main/resources/configdefinitions/config.provisioning.node-repository.def2
-rw-r--r--config-provisioning/src/test/java/com/yahoo/config/provision/ApplicationIdTest.java2
-rw-r--r--config-provisioning/src/test/java/com/yahoo/config/provision/ApplicationNameTest.java2
-rw-r--r--config-provisioning/src/test/java/com/yahoo/config/provision/CapacityTest.java2
-rw-r--r--config-provisioning/src/test/java/com/yahoo/config/provision/ClusterMembershipTest.java2
-rw-r--r--config-provisioning/src/test/java/com/yahoo/config/provision/ClusterResourcesTest.java2
-rw-r--r--config-provisioning/src/test/java/com/yahoo/config/provision/ClusterSpecTest.java2
-rw-r--r--config-provisioning/src/test/java/com/yahoo/config/provision/DockerImageTest.java2
-rw-r--r--config-provisioning/src/test/java/com/yahoo/config/provision/HostFilterTest.java2
-rw-r--r--config-provisioning/src/test/java/com/yahoo/config/provision/IdentifierTestBase.java2
-rw-r--r--config-provisioning/src/test/java/com/yahoo/config/provision/InstanceNameTest.java2
-rw-r--r--config-provisioning/src/test/java/com/yahoo/config/provision/NodeFlavorsTest.java2
-rw-r--r--config-provisioning/src/test/java/com/yahoo/config/provision/NodeResourcesTest.java2
-rw-r--r--config-provisioning/src/test/java/com/yahoo/config/provision/RegionTest.java2
-rw-r--r--config-provisioning/src/test/java/com/yahoo/config/provision/TenantTest.java2
-rw-r--r--config-provisioning/src/test/java/com/yahoo/config/provision/serialization/AllocatedHostsSerializerTest.java2
-rw-r--r--config-proxy/CMakeLists.txt2
-rw-r--r--config-proxy/pom.xml2
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ConfigProxyRpcServer.java12
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ConfigSourceClient.java2
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ConfigVerification.java (renamed from config/src/main/java/com/yahoo/vespa/config/ConfigVerification.java)4
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/DelayedResponse.java2
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/DelayedResponseHandler.java10
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/DelayedResponses.java2
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/MemoryCache.java14
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/MemoryCacheConfigClient.java2
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/Mode.java2
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ProxyServer.java2
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/RpcConfigSourceClient.java110
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/RpcServer.java2
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/Subscriber.java20
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileDistributionAndUrlDownload.java4
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileDistributionRpcServer.java2
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/package-info.java2
-rwxr-xr-xconfig-proxy/src/main/sh/vespa-config-ctl.sh4
-rw-r--r--config-proxy/src/main/sh/vespa-config-loadtester.sh2
-rw-r--r--config-proxy/src/main/sh/vespa-config-verification.sh4
-rw-r--r--config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ConfigProxyRpcServerTest.java6
-rw-r--r--config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ConfigTester.java33
-rw-r--r--config-proxy/src/test/java/com/yahoo/vespa/config/proxy/DelayedResponseHandlerTest.java2
-rw-r--r--config-proxy/src/test/java/com/yahoo/vespa/config/proxy/DelayedResponseTest.java2
-rw-r--r--config-proxy/src/test/java/com/yahoo/vespa/config/proxy/DelayedResponsesTest.java2
-rw-r--r--config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MemoryCacheConfigClientTest.java2
-rw-r--r--config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MemoryCacheTest.java25
-rw-r--r--config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MockConfigSource.java2
-rw-r--r--config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MockConfigSourceClient.java2
-rw-r--r--config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MockRpcServer.java2
-rw-r--r--config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ProxyServerTest.java8
-rw-r--r--config-proxy/src/test/java/com/yahoo/vespa/config/proxy/RpcConfigSourceClientTest.java2
-rw-r--r--config/CMakeLists.txt2
-rw-r--r--config/README.md2
-rwxr-xr-xconfig/pom.xml8
-rw-r--r--config/src/Doxyfile2
-rwxr-xr-xconfig/src/apps/vespa-config/vespa-config.pl2
-rw-r--r--config/src/apps/vespa-configproxy-cmd/CMakeLists.txt2
-rw-r--r--config/src/apps/vespa-configproxy-cmd/main.cpp2
-rw-r--r--config/src/apps/vespa-configproxy-cmd/methods.cpp2
-rw-r--r--config/src/apps/vespa-configproxy-cmd/methods.h2
-rw-r--r--config/src/apps/vespa-configproxy-cmd/proxycmd.cpp2
-rw-r--r--config/src/apps/vespa-configproxy-cmd/proxycmd.h2
-rw-r--r--config/src/apps/vespa-get-config/CMakeLists.txt2
-rw-r--r--config/src/apps/vespa-get-config/getconfig.cpp4
-rw-r--r--config/src/apps/vespa-ping-configproxy/CMakeLists.txt2
-rw-r--r--config/src/apps/vespa-ping-configproxy/pingproxy.cpp2
-rw-r--r--config/src/main/java/com/yahoo/config/codegen/package-info.java2
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/CfgConfigPayloadBuilder.java2
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/ConfigDebug.java2
-rwxr-xr-xconfig/src/main/java/com/yahoo/config/subscription/ConfigGetter.java2
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/ConfigHandle.java2
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/ConfigInstanceSerializer.java2
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/ConfigInstanceUtil.java2
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/ConfigInterruptedException.java2
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/ConfigSet.java2
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/ConfigSource.java2
-rwxr-xr-xconfig/src/main/java/com/yahoo/config/subscription/ConfigSourceSet.java2
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java4
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/ConfigURI.java2
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/DirSource.java2
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/FileSource.java2
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/JarSource.java2
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/RawSource.java2
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/ConfigSetSubscription.java9
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/ConfigSubscription.java103
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/FileConfigSubscription.java12
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/GenericConfigHandle.java2
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/GenericConfigSubscriber.java2
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/GenericJRTConfigSubscription.java9
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigRequester.java125
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigSubscription.java90
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/JRTManagedConnectionPools.java2
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/JarConfigSubscription.java28
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/MockConnection.java9
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/RawConfigSubscription.java9
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/package-info.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/ConfigCacheKey.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/ConfigDefinition.java45
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/ConfigDefinitionBuilder.java4
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/ConfigDefinitionKey.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/ConfigFileFormat.java2
-rwxr-xr-xconfig/src/main/java/com/yahoo/vespa/config/ConfigKey.java20
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/ConfigPayload.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/ConfigPayloadApplier.java9
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/ConfigPayloadBuilder.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/ConfigTransformer.java10
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/Connection.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/ConnectionPool.java11
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/DefaultValueApplier.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/ErrorCode.java5
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/ErrorType.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/GenerationCounter.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/GenericConfig.java3
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/GetConfigRequest.java16
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/JRTConnection.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/JRTConnectionPool.java22
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/JRTMethods.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/LZ4PayloadCompressor.java14
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/PayloadChecksum.java91
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/PayloadChecksums.java93
-rwxr-xr-xconfig/src/main/java/com/yahoo/vespa/config/RawConfig.java54
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/TimingValues.java64
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/UnknownConfigIdException.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/UrlDownloader.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/benchmark/LoadTester.java7
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/benchmark/StressTester.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/benchmark/Tester.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/buildergen/ConfigDefinition.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/buildergen/package-info.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/package-info.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/parser/package-info.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/CompressionInfo.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/CompressionType.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/ConfigResponse.java16
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/DefContent.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/JRTClientConfigRequest.java10
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/JRTClientConfigRequestV3.java92
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/JRTConfigRequest.java40
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/JRTConfigRequestFactory.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/JRTServerConfigRequest.java22
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/JRTServerConfigRequestV3.java57
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/NoCopyByteArrayOutputStream.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/Payload.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/RequestValidation.java42
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/SlimeConfigResponse.java42
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/SlimeRequestData.java38
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/SlimeResponseData.java27
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/SlimeTraceDeserializer.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/SlimeTraceSerializer.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/Trace.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/VespaVersion.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/package-info.java2
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/util/ConfigUtils.java58
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/util/package-info.java2
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/AppService.java2
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/BasicTest.java2
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/CfgConfigPayloadBuilderTest.java2
-rwxr-xr-xconfig/src/test/java/com/yahoo/config/subscription/ConfigApiTest.java2
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/ConfigGetterTest.java2
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/ConfigInstancePayloadTest.java2
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/ConfigInstanceSerializationTest.java2
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/ConfigInstanceSerializerTest.java2
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/ConfigInstanceTest.java2
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/ConfigInstanceUtilTest.java2
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/ConfigInterruptedExceptionTest.java2
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/ConfigSetSubscriptionTest.java2
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/ConfigSetTest.java2
-rwxr-xr-xconfig/src/test/java/com/yahoo/config/subscription/ConfigSourceSetTest.java2
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/ConfigSourceTest.java2
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/ConfigSubscriptionTest.java2
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/ConfigURITest.java2
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/DefaultConfigTest.java2
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/FunctionTest.java2
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/GenericConfigSubscriberTest.java2
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/NamespaceTest.java2
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/UnicodeTest.java2
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/impl/FileConfigSubscriptionTest.java2
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/impl/JRTConfigRequesterTest.java96
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/ConfigBuilderMergeTest.java2
-rwxr-xr-xconfig/src/test/java/com/yahoo/vespa/config/ConfigCacheKeyTest.java2
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/ConfigDefinitionBuilderTest.java2
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/ConfigDefinitionKeyTest.java2
-rwxr-xr-xconfig/src/test/java/com/yahoo/vespa/config/ConfigDefinitionTest.java10
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/ConfigFileFormatterTest.java2
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/ConfigKeyTest.java11
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/ConfigPayloadBuilderTest.java4
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/ConfigPayloadTest.java2
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/DefaultValueApplierTest.java2
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/ErrorCodeTest.java2
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/ErrorTypeTest.java2
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/GenericConfigBuilderTest.java2
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/JRTConnectionPoolTest.java15
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/LZ4PayloadCompressorTest.java2
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/RawConfigTest.java52
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/RequestValidationTest.java15
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/protocol/ConfigResponseTest.java21
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/protocol/JRTConfigRequestFactoryTest.java2
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/protocol/JRTConfigRequestV3Test.java100
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/protocol/PayloadTest.java2
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/protocol/SlimeTraceSerializerTest.java2
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/protocol/TraceTest.java2
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/util/ConfigUtilsTest.java131
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/xml/whitespace-test.xml2
-rw-r--r--config/src/test/resources/configdefinitions/bar.def2
-rw-r--r--config/src/test/resources/configdefinitions/baz.def2
-rw-r--r--config/src/test/resources/configdefinitions/bootstrap.def2
-rw-r--r--config/src/test/resources/configdefinitions/foo.def2
-rw-r--r--config/src/test/resources/configdefinitions/foobar.def2
-rw-r--r--config/src/test/resources/configdefinitions/foodefault.def2
-rw-r--r--config/src/test/resources/configdefinitions/function-test.def2
-rw-r--r--config/src/test/resources/configdefinitions/motd.def2
-rw-r--r--config/src/test/resources/configdefinitions/my.def2
-rw-r--r--config/src/test/resources/configs/def-files-nogen/app.def2
-rw-r--r--config/src/test/resources/configs/def-files/app.def2
-rw-r--r--config/src/test/resources/configs/def-files/arraytypes.def2
-rw-r--r--config/src/test/resources/configs/def-files/defaulttest.def2
-rw-r--r--config/src/test/resources/configs/def-files/function-test.def2
-rwxr-xr-xconfig/src/test/resources/configs/def-files/int.def2
-rw-r--r--config/src/test/resources/configs/def-files/maptypes.def2
-rw-r--r--config/src/test/resources/configs/def-files/namespace.def2
-rw-r--r--config/src/test/resources/configs/def-files/simpletypes.def2
-rw-r--r--config/src/test/resources/configs/def-files/specialtypes.def2
-rwxr-xr-xconfig/src/test/resources/configs/def-files/string.def2
-rw-r--r--config/src/test/resources/configs/def-files/structtypes.def2
-rw-r--r--config/src/test/resources/configs/def-files/test-nodefs.def2
-rw-r--r--config/src/test/resources/configs/def-files/test-nonstring.def2
-rw-r--r--config/src/test/resources/configs/def-files/test-reference.def2
-rw-r--r--config/src/test/resources/configs/def-files/testnamespace.def2
-rw-r--r--config/src/test/resources/configs/def-files/unicode.def2
-rw-r--r--config/src/test/resources/configs/function-test/defaultvalues.xml2
-rw-r--r--config/src/tests/api/CMakeLists.txt2
-rw-r--r--config/src/tests/api/api.cpp2
-rw-r--r--config/src/tests/configagent/CMakeLists.txt2
-rw-r--r--config/src/tests/configagent/configagent.cpp22
-rw-r--r--config/src/tests/configfetcher/CMakeLists.txt2
-rw-r--r--config/src/tests/configfetcher/configfetcher.cpp2
-rw-r--r--config/src/tests/configformat/CMakeLists.txt2
-rw-r--r--config/src/tests/configformat/configformat.cpp2
-rw-r--r--config/src/tests/configgen/CMakeLists.txt2
-rw-r--r--config/src/tests/configgen/configgen.cpp2
-rw-r--r--config/src/tests/configgen/map_inserter.cpp2
-rw-r--r--config/src/tests/configgen/value_converter.cpp2
-rw-r--r--config/src/tests/configgen/vector_inserter.cpp2
-rw-r--r--config/src/tests/configholder/CMakeLists.txt2
-rw-r--r--config/src/tests/configholder/configholder.cpp2
-rw-r--r--config/src/tests/configmanager/CMakeLists.txt2
-rw-r--r--config/src/tests/configmanager/configmanager.cpp2
-rw-r--r--config/src/tests/configparser/CMakeLists.txt2
-rw-r--r--config/src/tests/configparser/configparser.cpp2
-rw-r--r--config/src/tests/configretriever/CMakeLists.txt2
-rw-r--r--config/src/tests/configretriever/configretriever.cpp2
-rw-r--r--config/src/tests/configuri/CMakeLists.txt2
-rw-r--r--config/src/tests/configuri/configuri_test.cpp2
-rw-r--r--config/src/tests/failover/CMakeLists.txt2
-rw-r--r--config/src/tests/failover/failover.cpp4
-rw-r--r--config/src/tests/file_acquirer/CMakeLists.txt2
-rw-r--r--config/src/tests/file_acquirer/file_acquirer_test.cpp2
-rw-r--r--config/src/tests/file_subscription/CMakeLists.txt2
-rw-r--r--config/src/tests/file_subscription/file_subscription.cpp2
-rw-r--r--config/src/tests/frt/CMakeLists.txt2
-rw-r--r--config/src/tests/frt/frt.cpp24
-rw-r--r--config/src/tests/frtconnectionpool/CMakeLists.txt2
-rw-r--r--config/src/tests/frtconnectionpool/frtconnectionpool.cpp2
-rw-r--r--config/src/tests/functiontest/CMakeLists.txt2
-rw-r--r--config/src/tests/functiontest/defaultvalues.xml2
-rw-r--r--config/src/tests/functiontest/functiontest.cpp2
-rw-r--r--config/src/tests/getconfig/CMakeLists.txt2
-rw-r--r--config/src/tests/getconfig/getconfig.cpp2
-rw-r--r--config/src/tests/legacysubscriber/CMakeLists.txt2
-rw-r--r--config/src/tests/legacysubscriber/legacysubscriber.cpp2
-rw-r--r--config/src/tests/misc/CMakeLists.txt2
-rw-r--r--config/src/tests/misc/configsystem.cpp2
-rw-r--r--config/src/tests/misc/misc.cpp29
-rw-r--r--config/src/tests/payload_converter/CMakeLists.txt2
-rw-r--r--config/src/tests/payload_converter/payload_converter.cpp2
-rw-r--r--config/src/tests/print/CMakeLists.txt2
-rw-r--r--config/src/tests/print/print.cpp2
-rw-r--r--config/src/tests/raw_subscription/CMakeLists.txt2
-rw-r--r--config/src/tests/raw_subscription/raw_subscription.cpp2
-rw-r--r--config/src/tests/subscriber/CMakeLists.txt2
-rw-r--r--config/src/tests/subscriber/subscriber.cpp4
-rw-r--r--config/src/tests/subscription/CMakeLists.txt2
-rw-r--r--config/src/tests/subscription/subscription.cpp2
-rw-r--r--config/src/tests/trace/CMakeLists.txt2
-rw-r--r--config/src/tests/trace/trace.cpp2
-rw-r--r--config/src/tests/unittest/CMakeLists.txt2
-rw-r--r--config/src/tests/unittest/unittest.cpp2
-rw-r--r--config/src/vespa/config/CMakeLists.txt2
-rw-r--r--config/src/vespa/config/common/CMakeLists.txt2
-rw-r--r--config/src/vespa/config/common/cancelhandler.h2
-rw-r--r--config/src/vespa/config/common/compressiontype.cpp2
-rw-r--r--config/src/vespa/config/common/compressiontype.h2
-rw-r--r--config/src/vespa/config/common/configcontext.cpp2
-rw-r--r--config/src/vespa/config/common/configcontext.h2
-rw-r--r--config/src/vespa/config/common/configdefinition.cpp2
-rw-r--r--config/src/vespa/config/common/configdefinition.h2
-rw-r--r--config/src/vespa/config/common/configholder.cpp2
-rw-r--r--config/src/vespa/config/common/configholder.h2
-rw-r--r--config/src/vespa/config/common/configkey.cpp2
-rw-r--r--config/src/vespa/config/common/configkey.h2
-rw-r--r--config/src/vespa/config/common/configmanager.cpp2
-rw-r--r--config/src/vespa/config/common/configmanager.h2
-rw-r--r--config/src/vespa/config/common/configparser.cpp2
-rw-r--r--config/src/vespa/config/common/configparser.h2
-rw-r--r--config/src/vespa/config/common/configrequest.h2
-rw-r--r--config/src/vespa/config/common/configresponse.h2
-rw-r--r--config/src/vespa/config/common/configstate.h12
-rw-r--r--config/src/vespa/config/common/configsystem.cpp2
-rw-r--r--config/src/vespa/config/common/configsystem.h2
-rw-r--r--config/src/vespa/config/common/configupdate.cpp2
-rw-r--r--config/src/vespa/config/common/configupdate.h2
-rw-r--r--config/src/vespa/config/common/configvalue.cpp14
-rw-r--r--config/src/vespa/config/common/configvalue.h10
-rw-r--r--config/src/vespa/config/common/configvalue.hpp2
-rw-r--r--config/src/vespa/config/common/errorcode.cpp2
-rw-r--r--config/src/vespa/config/common/errorcode.h2
-rw-r--r--config/src/vespa/config/common/exceptions.cpp2
-rw-r--r--config/src/vespa/config/common/exceptions.h2
-rw-r--r--config/src/vespa/config/common/handler.h2
-rw-r--r--config/src/vespa/config/common/iconfigcontext.h2
-rw-r--r--config/src/vespa/config/common/iconfigholder.h2
-rw-r--r--config/src/vespa/config/common/iconfigmanager.h2
-rw-r--r--config/src/vespa/config/common/interruptable.h2
-rw-r--r--config/src/vespa/config/common/misc.cpp25
-rw-r--r--config/src/vespa/config/common/misc.h4
-rw-r--r--config/src/vespa/config/common/payload_converter.cpp2
-rw-r--r--config/src/vespa/config/common/payload_converter.h2
-rw-r--r--config/src/vespa/config/common/pollable.h2
-rw-r--r--config/src/vespa/config/common/provider.h2
-rw-r--r--config/src/vespa/config/common/reloadhandler.h2
-rw-r--r--config/src/vespa/config/common/source.h2
-rw-r--r--config/src/vespa/config/common/sourcefactory.h2
-rw-r--r--config/src/vespa/config/common/subscribehandler.h2
-rw-r--r--config/src/vespa/config/common/timingvalues.cpp2
-rw-r--r--config/src/vespa/config/common/timingvalues.h2
-rw-r--r--config/src/vespa/config/common/trace.cpp2
-rw-r--r--config/src/vespa/config/common/trace.h2
-rw-r--r--config/src/vespa/config/common/vespa_version.cpp2
-rw-r--r--config/src/vespa/config/common/vespa_version.h2
-rw-r--r--config/src/vespa/config/common/waitable.h2
-rw-r--r--config/src/vespa/config/config.h2
-rw-r--r--config/src/vespa/config/configgen/CMakeLists.txt2
-rw-r--r--config/src/vespa/config/configgen/configinstance.h2
-rw-r--r--config/src/vespa/config/configgen/configpayload.h2
-rw-r--r--config/src/vespa/config/configgen/map_inserter.h2
-rw-r--r--config/src/vespa/config/configgen/map_inserter.hpp2
-rw-r--r--config/src/vespa/config/configgen/value_converter.cpp2
-rw-r--r--config/src/vespa/config/configgen/value_converter.h2
-rw-r--r--config/src/vespa/config/configgen/vector_inserter.h2
-rw-r--r--config/src/vespa/config/configgen/vector_inserter.hpp2
-rw-r--r--config/src/vespa/config/file/CMakeLists.txt2
-rw-r--r--config/src/vespa/config/file/filesource.cpp6
-rw-r--r--config/src/vespa/config/file/filesource.h2
-rw-r--r--config/src/vespa/config/file/filesourcefactory.cpp2
-rw-r--r--config/src/vespa/config/file/filesourcefactory.h2
-rw-r--r--config/src/vespa/config/file_acquirer/CMakeLists.txt2
-rw-r--r--config/src/vespa/config/file_acquirer/file_acquirer.cpp2
-rw-r--r--config/src/vespa/config/file_acquirer/file_acquirer.h2
-rw-r--r--config/src/vespa/config/frt/CMakeLists.txt2
-rw-r--r--config/src/vespa/config/frt/compressioninfo.cpp2
-rw-r--r--config/src/vespa/config/frt/compressioninfo.h2
-rw-r--r--config/src/vespa/config/frt/connection.h2
-rw-r--r--config/src/vespa/config/frt/connectionfactory.h2
-rw-r--r--config/src/vespa/config/frt/frtconfigagent.cpp12
-rw-r--r--config/src/vespa/config/frt/frtconfigagent.h2
-rw-r--r--config/src/vespa/config/frt/frtconfigrequest.cpp2
-rw-r--r--config/src/vespa/config/frt/frtconfigrequest.h2
-rw-r--r--config/src/vespa/config/frt/frtconfigrequestfactory.cpp4
-rw-r--r--config/src/vespa/config/frt/frtconfigrequestfactory.h2
-rw-r--r--config/src/vespa/config/frt/frtconfigrequestv3.cpp2
-rw-r--r--config/src/vespa/config/frt/frtconfigrequestv3.h2
-rw-r--r--config/src/vespa/config/frt/frtconfigresponse.cpp2
-rw-r--r--config/src/vespa/config/frt/frtconfigresponse.h2
-rw-r--r--config/src/vespa/config/frt/frtconfigresponsev3.cpp8
-rw-r--r--config/src/vespa/config/frt/frtconfigresponsev3.h2
-rw-r--r--config/src/vespa/config/frt/frtconnection.cpp2
-rw-r--r--config/src/vespa/config/frt/frtconnection.h2
-rw-r--r--config/src/vespa/config/frt/frtconnectionpool.cpp2
-rw-r--r--config/src/vespa/config/frt/frtconnectionpool.h2
-rw-r--r--config/src/vespa/config/frt/frtsource.cpp2
-rw-r--r--config/src/vespa/config/frt/frtsource.h2
-rw-r--r--config/src/vespa/config/frt/frtsourcefactory.cpp2
-rw-r--r--config/src/vespa/config/frt/frtsourcefactory.h2
-rw-r--r--config/src/vespa/config/frt/protocol.cpp5
-rw-r--r--config/src/vespa/config/frt/protocol.h6
-rw-r--r--config/src/vespa/config/frt/slimeconfigrequest.cpp12
-rw-r--r--config/src/vespa/config/frt/slimeconfigrequest.h6
-rw-r--r--config/src/vespa/config/frt/slimeconfigresponse.cpp4
-rw-r--r--config/src/vespa/config/frt/slimeconfigresponse.h2
-rw-r--r--config/src/vespa/config/helper/CMakeLists.txt2
-rw-r--r--config/src/vespa/config/helper/configfetcher.cpp2
-rw-r--r--config/src/vespa/config/helper/configfetcher.h2
-rw-r--r--config/src/vespa/config/helper/configfetcher.hpp2
-rw-r--r--config/src/vespa/config/helper/configgetter.h2
-rw-r--r--config/src/vespa/config/helper/configgetter.hpp2
-rw-r--r--config/src/vespa/config/helper/configpoller.cpp2
-rw-r--r--config/src/vespa/config/helper/configpoller.h2
-rw-r--r--config/src/vespa/config/helper/configpoller.hpp2
-rw-r--r--config/src/vespa/config/helper/ifetchercallback.h2
-rw-r--r--config/src/vespa/config/helper/ihandle.h2
-rw-r--r--config/src/vespa/config/helper/legacy.cpp2
-rw-r--r--config/src/vespa/config/helper/legacy.h2
-rw-r--r--config/src/vespa/config/helper/legacysubscriber.cpp2
-rw-r--r--config/src/vespa/config/helper/legacysubscriber.h2
-rw-r--r--config/src/vespa/config/helper/legacysubscriber.hpp2
-rw-r--r--config/src/vespa/config/print.h2
-rw-r--r--config/src/vespa/config/print/CMakeLists.txt2
-rw-r--r--config/src/vespa/config/print/asciiconfigreader.h2
-rw-r--r--config/src/vespa/config/print/asciiconfigreader.hpp4
-rw-r--r--config/src/vespa/config/print/asciiconfigsnapshotreader.cpp2
-rw-r--r--config/src/vespa/config/print/asciiconfigsnapshotreader.h2
-rw-r--r--config/src/vespa/config/print/asciiconfigsnapshotwriter.cpp2
-rw-r--r--config/src/vespa/config/print/asciiconfigsnapshotwriter.h2
-rw-r--r--config/src/vespa/config/print/asciiconfigwriter.cpp2
-rw-r--r--config/src/vespa/config/print/asciiconfigwriter.h2
-rw-r--r--config/src/vespa/config/print/configdatabuffer.cpp2
-rw-r--r--config/src/vespa/config/print/configdatabuffer.h2
-rw-r--r--config/src/vespa/config/print/configformatter.h2
-rw-r--r--config/src/vespa/config/print/configreader.h2
-rw-r--r--config/src/vespa/config/print/configsnapshotreader.h2
-rw-r--r--config/src/vespa/config/print/configsnapshotwriter.h2
-rw-r--r--config/src/vespa/config/print/configwriter.h2
-rw-r--r--config/src/vespa/config/print/fileconfigformatter.cpp2
-rw-r--r--config/src/vespa/config/print/fileconfigformatter.h2
-rw-r--r--config/src/vespa/config/print/fileconfigreader.h2
-rw-r--r--config/src/vespa/config/print/fileconfigreader.hpp4
-rw-r--r--config/src/vespa/config/print/fileconfigsnapshotreader.cpp2
-rw-r--r--config/src/vespa/config/print/fileconfigsnapshotreader.h2
-rw-r--r--config/src/vespa/config/print/fileconfigsnapshotwriter.cpp2
-rw-r--r--config/src/vespa/config/print/fileconfigsnapshotwriter.h2
-rw-r--r--config/src/vespa/config/print/fileconfigwriter.cpp2
-rw-r--r--config/src/vespa/config/print/fileconfigwriter.h2
-rw-r--r--config/src/vespa/config/print/istreamconfigreader.h2
-rw-r--r--config/src/vespa/config/print/istreamconfigreader.hpp4
-rw-r--r--config/src/vespa/config/print/jsonconfigformatter.cpp2
-rw-r--r--config/src/vespa/config/print/jsonconfigformatter.h2
-rw-r--r--config/src/vespa/config/print/ostreamconfigwriter.cpp2
-rw-r--r--config/src/vespa/config/print/ostreamconfigwriter.h2
-rw-r--r--config/src/vespa/config/raw/CMakeLists.txt2
-rw-r--r--config/src/vespa/config/raw/rawsource.cpp4
-rw-r--r--config/src/vespa/config/raw/rawsource.h2
-rw-r--r--config/src/vespa/config/raw/rawsourcefactory.cpp2
-rw-r--r--config/src/vespa/config/raw/rawsourcefactory.h2
-rw-r--r--config/src/vespa/config/retriever/CMakeLists.txt2
-rw-r--r--config/src/vespa/config/retriever/configkeyset.cpp2
-rw-r--r--config/src/vespa/config/retriever/configkeyset.h2
-rw-r--r--config/src/vespa/config/retriever/configkeyset.hpp2
-rw-r--r--config/src/vespa/config/retriever/configretriever.cpp2
-rw-r--r--config/src/vespa/config/retriever/configretriever.h2
-rw-r--r--config/src/vespa/config/retriever/configsnapshot.cpp10
-rw-r--r--config/src/vespa/config/retriever/configsnapshot.h2
-rw-r--r--config/src/vespa/config/retriever/configsnapshot.hpp2
-rw-r--r--config/src/vespa/config/retriever/fixedconfigsubscriber.cpp2
-rw-r--r--config/src/vespa/config/retriever/fixedconfigsubscriber.h2
-rw-r--r--config/src/vespa/config/retriever/genericconfigsubscriber.cpp2
-rw-r--r--config/src/vespa/config/retriever/genericconfigsubscriber.h2
-rw-r--r--config/src/vespa/config/retriever/simpleconfigretriever.cpp2
-rw-r--r--config/src/vespa/config/retriever/simpleconfigretriever.h2
-rw-r--r--config/src/vespa/config/retriever/simpleconfigurer.cpp2
-rw-r--r--config/src/vespa/config/retriever/simpleconfigurer.h2
-rw-r--r--config/src/vespa/config/set/CMakeLists.txt2
-rw-r--r--config/src/vespa/config/set/configinstancesourcefactory.cpp6
-rw-r--r--config/src/vespa/config/set/configinstancesourcefactory.h2
-rw-r--r--config/src/vespa/config/set/configsetsource.cpp12
-rw-r--r--config/src/vespa/config/set/configsetsource.h2
-rw-r--r--config/src/vespa/config/set/configsetsourcefactory.cpp2
-rw-r--r--config/src/vespa/config/set/configsetsourcefactory.h2
-rw-r--r--config/src/vespa/config/subscription/CMakeLists.txt2
-rw-r--r--config/src/vespa/config/subscription/confighandle.h2
-rw-r--r--config/src/vespa/config/subscription/confighandle.hpp2
-rw-r--r--config/src/vespa/config/subscription/configinstancespec.h2
-rw-r--r--config/src/vespa/config/subscription/configprovider.h2
-rw-r--r--config/src/vespa/config/subscription/configsubscriber.cpp2
-rw-r--r--config/src/vespa/config/subscription/configsubscriber.h2
-rw-r--r--config/src/vespa/config/subscription/configsubscriber.hpp2
-rw-r--r--config/src/vespa/config/subscription/configsubscription.cpp2
-rw-r--r--config/src/vespa/config/subscription/configsubscription.h2
-rw-r--r--config/src/vespa/config/subscription/configsubscriptionset.cpp2
-rw-r--r--config/src/vespa/config/subscription/configsubscriptionset.h2
-rw-r--r--config/src/vespa/config/subscription/configuri.cpp2
-rw-r--r--config/src/vespa/config/subscription/configuri.h2
-rw-r--r--config/src/vespa/config/subscription/sourcespec.cpp2
-rw-r--r--config/src/vespa/config/subscription/sourcespec.h2
-rw-r--r--config/src/vespa/config/subscription/subscriptionid.h2
-rw-r--r--config_test/README.md2
-rw-r--r--config_test/pom.xml4
-rw-r--r--config_test/src/main/java/com/yahoo/configtest/Demo.java2
-rw-r--r--config_test/src/main/resources/configdefinitions/configtest.greeting.def2
-rw-r--r--configd/CMakeLists.txt2
-rw-r--r--configd/src/apps/cmd/CMakeLists.txt2
-rw-r--r--configd/src/apps/sentinel/CMakeLists.txt2
-rw-r--r--configd/src/apps/sentinel/cc-result.h2
-rw-r--r--configd/src/apps/sentinel/check-completion-handler.cpp2
-rw-r--r--configd/src/apps/sentinel/check-completion-handler.h2
-rw-r--r--configd/src/apps/sentinel/config-owner.cpp2
-rw-r--r--configd/src/apps/sentinel/config-owner.h2
-rw-r--r--configd/src/apps/sentinel/connectivity.cpp12
-rw-r--r--configd/src/apps/sentinel/connectivity.h2
-rw-r--r--configd/src/apps/sentinel/env.cpp2
-rw-r--r--configd/src/apps/sentinel/env.h2
-rw-r--r--configd/src/apps/sentinel/line-splitter.cpp2
-rw-r--r--configd/src/apps/sentinel/line-splitter.h2
-rw-r--r--configd/src/apps/sentinel/manager.cpp2
-rw-r--r--configd/src/apps/sentinel/manager.h2
-rw-r--r--configd/src/apps/sentinel/metrics.cpp2
-rw-r--r--configd/src/apps/sentinel/metrics.h2
-rw-r--r--configd/src/apps/sentinel/model-owner.cpp2
-rw-r--r--configd/src/apps/sentinel/model-owner.h2
-rw-r--r--configd/src/apps/sentinel/output-connection.cpp2
-rw-r--r--configd/src/apps/sentinel/output-connection.h2
-rw-r--r--configd/src/apps/sentinel/outward-check.cpp10
-rw-r--r--configd/src/apps/sentinel/outward-check.h4
-rw-r--r--configd/src/apps/sentinel/peer-check.cpp2
-rw-r--r--configd/src/apps/sentinel/peer-check.h2
-rw-r--r--configd/src/apps/sentinel/report-connectivity.cpp3
-rw-r--r--configd/src/apps/sentinel/report-connectivity.h2
-rwxr-xr-xconfigd/src/apps/sentinel/sentinel-tester.sh2
-rw-r--r--configd/src/apps/sentinel/sentinel.cpp2
-rw-r--r--configd/src/apps/sentinel/service.cpp4
-rw-r--r--configd/src/apps/sentinel/service.h2
-rw-r--r--configd/src/apps/sentinel/state-api.cpp2
-rw-r--r--configd/src/apps/sentinel/state-api.h2
-rw-r--r--configd/src/apps/sentinel/status-callback.cpp2
-rw-r--r--configd/src/apps/sentinel/status-callback.h2
-rw-r--r--configd/src/apps/su/CMakeLists.txt2
-rw-r--r--configd/src/apps/su/main.cpp25
-rw-r--r--configd/src/tests/configd/CMakeLists.txt2
-rwxr-xr-xconfigd/src/tests/configd/run-sentinel.sh2
-rw-r--r--configd/src/tests/messages/CMakeLists.txt2
-rw-r--r--configd/src/tests/messages/messages.cpp2
-rw-r--r--configdefinitions/CMakeLists.txt2
-rw-r--r--configdefinitions/pom.xml2
-rw-r--r--configdefinitions/src/main/java/com/yahoo/cloud/config/package-info.java2
-rw-r--r--configdefinitions/src/main/java/com/yahoo/vespa/config/content/core/package-info.java2
-rw-r--r--configdefinitions/src/main/java/com/yahoo/vespa/config/content/package-info.java2
-rw-r--r--configdefinitions/src/main/java/com/yahoo/vespa/config/content/reindexing/package-info.java2
-rw-r--r--configdefinitions/src/main/java/com/yahoo/vespa/config/core/package-info.java2
-rw-r--r--configdefinitions/src/main/java/com/yahoo/vespa/config/search/package-info.java2
-rw-r--r--configdefinitions/src/main/java/com/yahoo/vespa/config/storage/package-info.java2
-rw-r--r--configdefinitions/src/main/java/com/yahoo/vespa/configdefinition/package-info.java2
-rw-r--r--configdefinitions/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/config/package-info.java2
-rw-r--r--configdefinitions/src/main/java/com/yahoo/vespa/orchestrator/config/package-info.java2
-rw-r--r--configdefinitions/src/vespa/CMakeLists.txt4
-rw-r--r--configdefinitions/src/vespa/all-clusters-bucket-spaces.def2
-rw-r--r--configdefinitions/src/vespa/application-id.def2
-rw-r--r--configdefinitions/src/vespa/athenz-provider-service.def2
-rw-r--r--configdefinitions/src/vespa/attributes.def3
-rw-r--r--configdefinitions/src/vespa/bucketspaces.def2
-rw-r--r--configdefinitions/src/vespa/cluster-info.def3
-rw-r--r--configdefinitions/src/vespa/cluster-list.def2
-rw-r--r--configdefinitions/src/vespa/configserver.def2
-rw-r--r--configdefinitions/src/vespa/curator.def2
-rw-r--r--configdefinitions/src/vespa/dispatch.def2
-rw-r--r--configdefinitions/src/vespa/distribution.def2
-rw-r--r--configdefinitions/src/vespa/filereferences.def3
-rw-r--r--configdefinitions/src/vespa/fleetcontroller.def2
-rw-r--r--configdefinitions/src/vespa/ilscripts.def2
-rw-r--r--configdefinitions/src/vespa/imported-fields.def2
-rw-r--r--configdefinitions/src/vespa/indexschema.def2
-rw-r--r--configdefinitions/src/vespa/lb-services.def2
-rw-r--r--configdefinitions/src/vespa/load-type.def2
-rw-r--r--configdefinitions/src/vespa/logforwarder.def2
-rw-r--r--configdefinitions/src/vespa/messagetyperouteselectorpolicy.def2
-rw-r--r--configdefinitions/src/vespa/model.def2
-rw-r--r--configdefinitions/src/vespa/orchestrator.def5
-rw-r--r--configdefinitions/src/vespa/persistence.def2
-rw-r--r--configdefinitions/src/vespa/rank-profiles.def2
-rw-r--r--configdefinitions/src/vespa/reindexing.def2
-rw-r--r--configdefinitions/src/vespa/sentinel.def6
-rw-r--r--configdefinitions/src/vespa/slobroks.def2
-rw-r--r--configdefinitions/src/vespa/specialtokens.def2
-rw-r--r--configdefinitions/src/vespa/stateserver.def2
-rw-r--r--configdefinitions/src/vespa/stor-distribution.def2
-rw-r--r--configdefinitions/src/vespa/stor-filestor.def2
-rw-r--r--configdefinitions/src/vespa/summary.def2
-rw-r--r--configdefinitions/src/vespa/summarymap.def2
-rw-r--r--configdefinitions/src/vespa/upgrading.def2
-rw-r--r--configdefinitions/src/vespa/zookeeper-server.def2
-rw-r--r--configdefinitions/src/vespa/zookeepers.def2
-rw-r--r--configgen/CMakeLists.txt2
-rw-r--r--configgen/pom.xml2
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java2
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/CNode.java6
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/ClassBuilder.java2
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/CodegenRuntimeException.java2
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/ConfigGenerator.java2
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/ConfiggenUtil.java2
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java10
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/DefLine.java2
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/DefParser.java17
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/DefaultValue.java2
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/InnerCNode.java2
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/JavaClassBuilder.java4
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/LeafCNode.java2
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/MakeConfig.java2
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/MakeConfigProperties.java2
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/NormalizedDefinition.java2
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/PropertyException.java2
-rw-r--r--configgen/src/main/java/com/yahoo/config/codegen/ReservedWords.java2
-rw-r--r--configgen/src/test/java/com/yahoo/config/codegen/DefLineParsingTest.java2
-rw-r--r--configgen/src/test/java/com/yahoo/config/codegen/DefParserNamespaceTest.java2
-rw-r--r--configgen/src/test/java/com/yahoo/config/codegen/DefParserPackageTest.java2
-rw-r--r--configgen/src/test/java/com/yahoo/config/codegen/DefParserTest.java15
-rw-r--r--configgen/src/test/java/com/yahoo/config/codegen/JavaClassBuilderTest.java2
-rw-r--r--configgen/src/test/java/com/yahoo/config/codegen/MakeConfigTest.java2
-rw-r--r--configgen/src/test/java/com/yahoo/config/codegen/NormalizedDefinitionTest.java2
-rw-r--r--configgen/src/test/resources/allfeatures.reference2
-rw-r--r--configgen/src/test/resources/baz.bar.foo.def2
-rw-r--r--configgen/src/test/resources/configgen.allfeatures.def2
-rw-r--r--configserver-client/pom.xml9
-rw-r--r--configserver-client/src/main/java/ai/vespa/hosted/client/AbstractConfigServerClient.java2
-rw-r--r--configserver-client/src/main/java/ai/vespa/hosted/client/ConfigServerClient.java2
-rw-r--r--configserver-client/src/main/java/ai/vespa/hosted/client/ForwardingInputStream.java2
-rw-r--r--configserver-client/src/main/java/ai/vespa/hosted/client/HttpConfigServerClient.java2
-rw-r--r--configserver-client/src/main/java/ai/vespa/hosted/client/MockConfigServerClient.java2
-rw-r--r--configserver-client/src/test/java/ai/vespa/hosted/client/HttpConfigServerClientTest.java2
-rw-r--r--configserver-client/src/test/java/ai/vespa/hosted/client/WireMockExtension.java2
-rw-r--r--configserver-flags/CMakeLists.txt2
-rw-r--r--configserver-flags/README.md2
-rw-r--r--configserver-flags/pom.xml2
-rw-r--r--configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/ConfigServerFlagSource.java2
-rw-r--r--configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/FlagsDb.java2
-rw-r--r--configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/db/FlagsDbImpl.java2
-rw-r--r--configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/db/ZooKeeperFlagSource.java2
-rw-r--r--configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/DefinedFlag.java2
-rw-r--r--configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/DefinedFlags.java2
-rw-r--r--configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/FlagDataListResponse.java2
-rw-r--r--configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/FlagDataResponse.java2
-rw-r--r--configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/FlagsHandler.java2
-rw-r--r--configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/OKResponse.java2
-rw-r--r--configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/V1Response.java2
-rw-r--r--configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/package-info.java2
-rw-r--r--configserver-flags/src/test/java/com/yahoo/vespa/configserver/flags/db/FlagsDbImplTest.java2
-rw-r--r--configserver-flags/src/test/java/com/yahoo/vespa/configserver/flags/http/FlagsHandlerTest.java2
-rw-r--r--configserver/CMakeLists.txt2
-rw-r--r--configserver/pom.xml8
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ActivationConflictException.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java6
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerBootstrap.java23
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerDB.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerSpec.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/GetConfigContext.java8
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/NotFoundException.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ReloadListener.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/RequestHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ServerCache.java29
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/StaticConfigDefinitionRepo.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelController.java7
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelGenerationCounter.java4
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelManager.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelRequestHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/TimeoutBudget.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/UnknownConfigDefinitionException.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/UserConfigDefinitionRepo.java19
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/Application.java42
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationCuratorDatabase.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationMapper.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationReindexing.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationSet.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/ClusterReindexing.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/ClusterReindexingStatusClient.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigConvergenceChecker.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigInstanceBuilder.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigNotConvergedException.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/DefaultClusterReindexingStatusClient.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/FileDistributionStatus.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/HttpProxy.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/PermanentApplicationPackage.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java7
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/VersionDoesNotExistException.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActions.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActionsSlimeConverter.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RefeedActions.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RefeedActionsFormatter.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ReindexActions.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ReindexActionsFormatter.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RestartActions.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RestartActionsFormatter.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLogger.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/deploy/InfraDeployerProvider.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java79
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/deploy/TenantFileSystemDirs.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClient.java62
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ZooKeeperDeployer.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/AddFileInterface.java7
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/ApplicationFileManager.java82
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDBRegistry.java103
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDirectory.java25
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionFactory.java27
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionImpl.java11
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionProvider.java45
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionUtil.java11
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/MockFileDistribution.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/MockFileManager.java34
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/host/ConfigRequestHostLivenessTracker.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/host/HostRegistry.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/host/HostValidator.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/BadRequestException.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/ContentHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/ContentRequest.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpConfigRequest.java20
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpConfigResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpErrorResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpFetcher.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpGetConfigHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpListConfigsHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpListNamedConfigsHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/InternalServerException.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/InvalidApplicationException.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/JSONResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/LogRetriever.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/NotFoundException.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/RequestTimeoutException.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/SecretStoreValidator.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionContentListResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionContentReadResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionContentStatusListResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionContentStatusResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/SimpleHttpFetcher.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/StaticResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/TesterClient.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/UnknownVespaVersionException.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/Utils.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/status/StatusHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationApiHandler.java4
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/HostHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/HttpGetConfigHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/HttpListConfigsHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/HttpListNamedConfigsHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ListApplicationsHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/PrepareResult.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/TenantHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/ApplicationContentRequest.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/HttpConfigRequests.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/HttpListConfigsRequest.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/SessionContentRequestV2.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/TenantRequest.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ApplicationSuspendedResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/DeleteApplicationResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/GetApplicationResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ListApplicationsResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ListTenantsResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ProtonMetricsResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/QuotaUsageResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ReindexingResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionActiveResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionCreateResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionPrepareAndActivateResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionPrepareResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/TenantCreateResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/TenantDeleteResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/TenantGetResponse.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ApplicationPackageMaintainer.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintainer.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintenance.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/FileDistributionMaintainer.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ReindexingMaintainer.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/SessionsMaintainer.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainer.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ClusterProtonMetricsRetriever.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ProtonMetricsAggregator.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ProtonMetricsRetriever.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/model/LbServicesProducer.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/model/SuperModelConfigProvider.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java20
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelFactoryRegistry.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelResult.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelsBuilder.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java25
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/monitoring/MetricUpdater.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/monitoring/MetricUpdaterFactory.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/monitoring/Metrics.java7
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/monitoring/ZKMetricUpdater.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/provision/HostProvisionerProvider.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/provision/ProvisionerAdapter.java5
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/provision/StaticProvisioner.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/rpc/ConfigResponseFactory.java48
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/rpc/DelayedConfigResponses.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/rpc/GetConfigProcessor.java26
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/rpc/LZ4ConfigResponseFactory.java11
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcRequestHandlerProvider.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java33
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/rpc/UncompressedConfigResponseFactory.java11
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/rpc/security/DefaultRpcAuthorizerProvider.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/rpc/security/MultiTenantRpcAuthorizer.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/LocalSession.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/PrepareParams.java16
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/RemoteSession.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java4
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java45
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java90
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionStateWatcher.java19
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java150
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SilentDeployLogger.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ApplicationRolesSerializer.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ApplicationRolesStore.java4
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointSerializer.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointsCache.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/EndpointCertificateMetadataSerializer.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/EndpointCertificateMetadataStore.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/EndpointCertificateRetriever.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/OperatorCertificateSerializer.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/SecretStoreExternalIdRetriever.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenant.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantDebugger.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantListener.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantMetaData.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java63
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantSecretStoreSerializer.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/version/VersionState.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ConfigCurator.java255
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/InitializedCounter.java32
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/SessionCounter.java11
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplication.java127
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationFile.java41
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackage.java95
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/package-info.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/serviceview/Cluster.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/serviceview/ProxyErrorMapper.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/serviceview/Service.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/serviceview/ServiceModel.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/serviceview/StateRequestHandler.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/serviceview/package-info.java2
-rw-r--r--configserver/src/main/resources/configserver-app/services.xml8
-rwxr-xr-xconfigserver/src/main/sh/start-configserver3
-rw-r--r--configserver/src/main/sh/start-logd2
-rwxr-xr-xconfigserver/src/main/sh/stop-configserver2
-rwxr-xr-xconfigserver/src/main/sh/vespa-configserver-remove-state16
-rw-r--r--configserver/src/test/apps/app-jdisc-only-restart/hosts.xml2
-rw-r--r--configserver/src/test/apps/app-jdisc-only-restart/schemas/music.sd2
-rw-r--r--configserver/src/test/apps/app-jdisc-only-restart/services.xml2
-rw-r--r--configserver/src/test/apps/app-jdisc-only/hosts.xml2
-rw-r--r--configserver/src/test/apps/app-jdisc-only/schemas/music.sd2
-rw-r--r--configserver/src/test/apps/app-jdisc-only/services.xml2
-rw-r--r--configserver/src/test/apps/app-logserver-with-container/hosts.xml2
-rw-r--r--configserver/src/test/apps/app-logserver-with-container/services.xml2
-rw-r--r--configserver/src/test/apps/app-major-version-2/deployment.xml2
-rw-r--r--configserver/src/test/apps/app-major-version-2/hosts.xml2
-rw-r--r--configserver/src/test/apps/app-major-version-2/schemas/music.sd2
-rw-r--r--configserver/src/test/apps/app-major-version-2/services.xml2
-rw-r--r--configserver/src/test/apps/app-with-multiple-clusters/hosts.xml2
-rw-r--r--configserver/src/test/apps/app-with-multiple-clusters/schemas/bar.sd2
-rw-r--r--configserver/src/test/apps/app-with-multiple-clusters/schemas/bax.sd2
-rw-r--r--configserver/src/test/apps/app-with-multiple-clusters/schemas/baz.sd2
-rw-r--r--configserver/src/test/apps/app-with-multiple-clusters/services.xml2
-rw-r--r--configserver/src/test/apps/app/hosts.xml2
-rw-r--r--configserver/src/test/apps/app/schemas/music.sd2
-rw-r--r--configserver/src/test/apps/app/services.xml2
-rw-r--r--configserver/src/test/apps/app_sdbundles/hosts.xml2
-rw-r--r--configserver/src/test/apps/app_sdbundles/services.xml2
-rw-r--r--configserver/src/test/apps/content/schemas/music.sd2
-rw-r--r--configserver/src/test/apps/content/services.xml2
-rw-r--r--configserver/src/test/apps/content2/schemas/music.sd2
-rw-r--r--configserver/src/test/apps/content2/services.xml2
-rw-r--r--configserver/src/test/apps/cs1/hosts.xml2
-rw-r--r--configserver/src/test/apps/cs1/services.xml2
-rw-r--r--configserver/src/test/apps/cs2/hosts.xml2
-rw-r--r--configserver/src/test/apps/cs2/services.xml2
-rw-r--r--configserver/src/test/apps/deprecated-features-app/hosts.xml2
-rw-r--r--configserver/src/test/apps/deprecated-features-app/searchdefinitions/music.sd2
-rw-r--r--configserver/src/test/apps/deprecated-features-app/services.xml2
-rw-r--r--configserver/src/test/apps/hosted-no-write-access-control/schemas/music.sd2
-rw-r--r--configserver/src/test/apps/hosted-no-write-access-control/services.xml2
-rw-r--r--configserver/src/test/apps/hosted-routing-app/services.xml2
-rw-r--r--configserver/src/test/apps/hosted/schemas/music.sd2
-rw-r--r--configserver/src/test/apps/hosted/services.xml2
-rw-r--r--configserver/src/test/apps/illegalApp/services.xml2
-rw-r--r--configserver/src/test/apps/legalApp/services.xml2
-rw-r--r--configserver/src/test/apps/serverdb/serverdefs/config.attributes.def2
-rw-r--r--configserver/src/test/apps/validationOverride/services.xml2
-rw-r--r--configserver/src/test/apps/validationOverride/validation-overrides.xml2
-rw-r--r--configserver/src/test/apps/zkapp/deployment.xml2
-rw-r--r--configserver/src/test/apps/zkapp/hosts.xml2
-rw-r--r--configserver/src/test/apps/zkapp/schemas/laptop.sd2
-rw-r--r--configserver/src/test/apps/zkapp/schemas/music.sd2
-rw-r--r--configserver/src/test/apps/zkapp/schemas/pc.sd2
-rw-r--r--configserver/src/test/apps/zkapp/schemas/product.sd2
-rw-r--r--configserver/src/test/apps/zkapp/schemas/sock.sd2
-rw-r--r--configserver/src/test/apps/zkapp/services.xml2
-rw-r--r--configserver/src/test/apps/zkfeed/configdefinitions/a.b.a.b.test2.def2
-rw-r--r--configserver/src/test/apps/zkfeed/dir1/default.xml2
-rw-r--r--configserver/src/test/apps/zkfeed/hosts.xml2
-rw-r--r--configserver/src/test/apps/zkfeed/nested/dir2/chain2.xml2
-rw-r--r--configserver/src/test/apps/zkfeed/nested/dir2/chain3.xml2
-rw-r--r--configserver/src/test/apps/zkfeed/schemas/laptop.sd2
-rw-r--r--configserver/src/test/apps/zkfeed/schemas/pc.sd2
-rw-r--r--configserver/src/test/apps/zkfeed/schemas/product.sd2
-rw-r--r--configserver/src/test/apps/zkfeed/schemas/sock.sd2
-rw-r--r--configserver/src/test/apps/zkfeed/search/chains/dir1/default.xml2
-rw-r--r--configserver/src/test/apps/zkfeed/search/chains/dir2/chain2.xml2
-rw-r--r--configserver/src/test/apps/zkfeed/search/chains/dir2/chain3.xml2
-rw-r--r--configserver/src/test/apps/zkfeed/services.xml2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java67
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerBootstrapTest.java11
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerDBTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/MemoryGenerationCounter.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/MiscTestCase.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/MockProvisioner.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/MockSecretStoreValidator.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java5
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ModelFactoryRegistryTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ModelStub.java7
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/PortRangeAllocator.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ServerCacheTest.java8
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/SuperModelControllerTest.java16
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/SuperModelRequestHandlerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/TestConfigDefinitionRepo.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/TimeoutBudgetTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationCuratorDatabaseTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationMapperTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationReindexingTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationSetTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationTest.java31
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/application/ConfigConvergenceCheckerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/application/DefaultClusterReindexingStatusClientTest.java4
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/application/FileDistributionStatusTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/application/HttpProxyTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/application/MockModel.java11
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/application/PermanentApplicationPackageTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/application/TenantApplicationsTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActionsBuilder.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActionsSlimeConverterTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/configchange/MockConfigChangeAction.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/configchange/MockRefeedAction.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/configchange/RefeedActionsFormatterTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/configchange/RefeedActionsTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/configchange/ReindexActionsFormatterTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/configchange/RestartActionsFormatterTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/configchange/RestartActionsTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/configchange/Utils.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/a.def2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/b.def2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/c.def2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/compositeinclude.def2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/d.def2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/e.def2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/recursiveinclude.def2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLoggerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java26
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java40
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/deploy/RedeployTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClientTest.java66
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/deploy/ZooKeeperDeployerTest.java22
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/FileDBRegistryTestCase.java67
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/FileDirectoryTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/FileServerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/MockFileDistributionFactory.java12
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/MockFileDistributionProvider.java16
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/MockFileRegistry.java26
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/host/HostRegistryTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/ContentHandlerTestBase.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/HandlerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpConfigRequestTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpConfigResponseTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpErrorResponseTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpGetConfigHandlerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpHandlerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpListConfigsHandlerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/SecretStoreValidatorTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/SessionHandlerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/status/StatusHandlerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HostHandlerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HttpGetConfigHandlerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HttpListConfigsHandlerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ListApplicationsHandlerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandlerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandlerTest.java9
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/TenantHandlerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/MaintainerTester.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/ReindexingMaintainerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/metrics/DeploymentMetricsRetrieverTest.java7
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/metrics/ProtonMetricsRetrieverTest.java12
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/model/LbServicesProducerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/model/TestModelFactory.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/monitoring/ZKMetricUpdaterTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/provision/StaticProvisionerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/rpc/ConfigResponseFactoryTest.java57
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/rpc/DelayedConfigResponseTest.java26
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/rpc/MockRpcServer.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcServerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcTester.java6
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/rpc/security/MultiTenantRpcAuthorizerTest.java4
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/DummyTransaction.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/MockSessionZKClient.java55
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/PrepareParamsTest.java25
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java19
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java6
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionTest.java6
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java25
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/tenant/ApplicationRolesStoreTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointsCacheTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/tenant/MockTenantListener.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/tenant/OperatorCertificateSerializerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TenantRepositoryTest.java9
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TenantTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TestTenantRepository.java9
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/version/VersionStateTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/ConfigCuratorTest.java243
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/InitializedCounterTest.java14
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationFileTest.java19
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackageTest.java39
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/serviceview/ServiceModelTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/serviceview/StateRequestHandlerTest.java2
-rw-r--r--configserver/src/test/resources/configdefinitions/config.app.def2
-rw-r--r--configserver/src/test/resources/configdefinitions/config.md5test.def2
-rw-r--r--configserver/src/test/resources/configdefinitions/config.simpletypes.def2
-rw-r--r--configserver/src/test/resources/deploy/advancedapp/deployment.xml2
-rw-r--r--configserver/src/test/resources/deploy/advancedapp/hosts.xml2
-rw-r--r--configserver/src/test/resources/deploy/advancedapp/schemas/keyvalue.sd2
-rw-r--r--configserver/src/test/resources/deploy/advancedapp/services.xml2
-rw-r--r--configserver/src/test/resources/deploy/app/deployment.xml2
-rw-r--r--configserver/src/test/resources/deploy/app/services.xml2
-rw-r--r--configserver/src/test/resources/deploy/validapp/deployment.xml2
-rw-r--r--configserver/src/test/resources/deploy/validapp/hosts.xml2
-rw-r--r--configserver/src/test/resources/deploy/validapp/services.xml2
-rw-r--r--configutil/CMakeLists.txt2
-rw-r--r--configutil/README.md2
-rw-r--r--configutil/src/apps/configstatus/CMakeLists.txt2
-rw-r--r--configutil/src/apps/configstatus/main.cpp2
-rw-r--r--configutil/src/apps/modelinspect/CMakeLists.txt2
-rw-r--r--configutil/src/apps/modelinspect/main.cpp2
-rw-r--r--configutil/src/lib/CMakeLists.txt2
-rw-r--r--configutil/src/lib/configstatus.cpp2
-rw-r--r--configutil/src/lib/configstatus.h2
-rw-r--r--configutil/src/lib/hostfilter.h2
-rw-r--r--configutil/src/lib/modelinspect.cpp2
-rw-r--r--configutil/src/lib/modelinspect.h2
-rw-r--r--configutil/src/lib/tags.cpp2
-rw-r--r--configutil/src/lib/tags.h2
-rw-r--r--configutil/src/tests/config_status/CMakeLists.txt2
-rw-r--r--configutil/src/tests/config_status/config_status_test.cpp2
-rw-r--r--configutil/src/tests/host_filter/CMakeLists.txt2
-rw-r--r--configutil/src/tests/host_filter/host_filter_test.cpp2
-rw-r--r--configutil/src/tests/model_inspect/CMakeLists.txt2
-rw-r--r--configutil/src/tests/model_inspect/model_inspect_test.cpp2
-rw-r--r--configutil/src/tests/tags/CMakeLists.txt2
-rw-r--r--configutil/src/tests/tags/tags_test.cpp2
-rw-r--r--container-apache-http-client-bundle/CMakeLists.txt2
-rw-r--r--container-apache-http-client-bundle/pom.xml2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/async/methods/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/async/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/classic/methods/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/classic/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/config/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/entity/mime/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/entity/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/async/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/classic/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/io/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/nio/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/io/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/nio/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/protocol/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/routing/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/socket/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/ssl/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/concurrent/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/config/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/io/entity/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/io/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/io/support/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/message/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/nio/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/nio/ssl/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/nio/support/classic/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/nio/support/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/protocol/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http2/config/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http2/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/net/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/reactor/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/util/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/annotation/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/auth/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/client/config/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/client/entity/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/client/methods/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/client/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/client/protocol/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/client/utils/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/config/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/conn/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/conn/routing/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/conn/socket/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/conn/ssl/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/entity/mime/content/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/entity/mime/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/entity/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/impl/client/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/impl/conn/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/impl/io/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/impl/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/message/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/params/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/pool/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/protocol/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/java/org/apache/http/util/package-info.java2
-rw-r--r--container-apache-http-client-bundle/src/main/javadoc/README1
-rw-r--r--container-core/CMakeLists.txt4
-rw-r--r--container-core/README.md2
-rw-r--r--container-core/pom.xml11
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/Chain.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/ChainedComponent.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/ChainsConfigurer.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/Phase.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/dependencies/After.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/dependencies/Before.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/dependencies/Dependencies.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/dependencies/Provides.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/ChainBuilder.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/ComponentNameProvider.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/ComponentNode.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/ConflictingNodeTypeException.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/CycleDependenciesException.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/NameProvider.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/Node.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/OrderedReadyNodes.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/PhaseNameProvider.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/dependencies/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/model/ChainSpecification.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/model/ChainedComponentModel.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/model/ChainsModel.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/model/ChainsModelBuilder.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/model/ComponentAdaptor.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/model/Resolver.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/model/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/component/chain/package-info.java2
-rwxr-xr-xcontainer-core/src/main/java/com/yahoo/container/Container.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/bundle/BundleInstantiationSpecification.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/bundle/MockBundle.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/bundle/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/core/HandlerMetricContextUtil.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/core/config/BundleStarter.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java29
-rw-r--r--container-core/src/main/java/com/yahoo/container/core/config/PlatformBundleLoader.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/core/config/testutil/HandlersConfigurerTestWrapper.java4
-rw-r--r--container-core/src/main/java/com/yahoo/container/core/document/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/core/documentapi/DocumentAccessProvider.java10
-rw-r--r--container-core/src/main/java/com/yahoo/container/core/documentapi/VespaDocumentAccess.java6
-rw-r--r--container-core/src/main/java/com/yahoo/container/core/http/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/core/identity/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/core/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/CloudSubscriberFactory.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/ComponentDeconstructor.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/ConfigRetriever.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/Container.java13
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/Osgi.java7
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/componentgraph/core/ComponentGraph.java7
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/componentgraph/core/ComponentNode.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/componentgraph/core/ComponentRegistryNode.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/componentgraph/core/Exceptions.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/componentgraph/core/GuiceNode.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/componentgraph/core/JerseyNode.java92
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/componentgraph/core/Keys.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/componentgraph/core/Node.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/componentgraph/core/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/config/ResolveDependencyException.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/config/RestApiContext.java98
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/config/Subscriber.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/config/SubscriberFactory.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/config/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/osgi/BundleClasses.java27
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/osgi/OsgiUtil.java168
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/osgi/package-info.java8
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/AccessLogRequestHandler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/ClustersStatus.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/Coverage.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/FilterBackingRequestHandler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/LogHandler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/LogReader.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/Prefix.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/ThreadPoolProvider.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/Timing.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/VipStatus.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/VipStatusHandler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/metrics/PrometheusV1Handler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/metrics/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/test/MockService.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/test/MockServiceHandler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/test/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/threadpool/ContainerThreadPool.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/threadpool/DefaultContainerThreadpool.java64
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/threadpool/ExecutorServiceWrapper.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/threadpool/ThreadPoolMetric.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/threadpool/WorkerCompletionTimingThreadPoolExecutor.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/threadpool/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/http/AccessLogUtil.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/http/BenchmarkingHeaders.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/http/filter/FilterChainRepository.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/http/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/AclMapping.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/AsyncHttpResponse.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/ContentChannelOutputStream.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/EmptyResponse.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/ExtendedResponse.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/HttpMethodAclMapping.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/HttpRequest.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/HttpRequestBuilder.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/HttpRequestHandler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/HttpResponse.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/LoggingCompletionHandler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/MetricConsumerFactory.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/RequestHandlerSpec.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/RequestHandlerTestDriver.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/RequestView.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java4
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/VespaHeaders.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/state/CountMetric.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/state/GaugeMetric.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/state/JsonUtil.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/state/MetricDimensions.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/state/MetricSet.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/state/MetricSnapshot.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/state/MetricValue.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/state/MetricsPacketsHandler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/state/SnapshotProvider.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/state/StateHandler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/state/StateMetricContext.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/state/StateMonitor.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/state/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/AccessLog.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/AccessLogEntry.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/AccessLogHandler.java10
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/CircularArrayAccessLogKeeper.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/ConnectionLog.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/ConnectionLogEntry.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/ConnectionLogHandler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/FileConnectionLog.java10
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/FormatUtil.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/HitCounts.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/JSONAccessLog.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/JSONFormatter.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/JsonConnectionLogWriter.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/LogFileHandler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/LogFormatter.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/LogWriter.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/RequestLog.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/RequestLogEntry.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/RequestLogHandler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/TraceRenderer.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/VespaAccessLog.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/protect/Error.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/protect/ProcessTerminator.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/protect/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/servlet/ServletProvider.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/servlet/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/xml/bind/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/xml/providers/DatatypeFactoryProvider.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/xml/providers/DocumentBuilderFactoryProvider.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/xml/providers/SAXParserFactoryProvider.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/xml/providers/SchemaFactoryProvider.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/xml/providers/TransformerFactoryProvider.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/xml/providers/XMLEventFactoryProvider.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/xml/providers/XMLInputFactoryProvider.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/xml/providers/XMLOutputFactoryProvider.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/xml/providers/XPathFactoryProvider.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/xml/providers/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/CertificateStore.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/Cookie.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/CookieHelper.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/HttpHeaders.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/HttpRequest.java8
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/HttpResponse.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/SecretStore.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/cloud/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/DiscFilterRequest.java4
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/DiscFilterResponse.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/FilterConfig.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/JDiscCookieWrapper.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/JdiscFilterRequest.java3
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/JdiscFilterResponse.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/RequestFilter.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/RequestFilterBase.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/RequestView.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/ResponseFilter.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/ResponseFilterBase.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityFilterInvoker.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityRequestFilter.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityRequestFilterChain.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityResponseFilter.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityResponseFilterChain.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/ServletFilterRequest.java3
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/ServletFilterResponse.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/EmptyRequestFilter.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/EmptyResponseFilter.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/RequestFilterChain.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/ResponseFilterChain.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/ResponseHandlerGuard.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/util/FilterUtils.java72
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/util/package-info.java5
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLog.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLoggingRequestHandler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AsyncCompleteListener.java22
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/CompletionHandlerUtils.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/CompletionHandlers.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectionMetricAggregator.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectionThrottler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactory.java97
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ErrorResponseContentCreator.java9
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ExceptionWrapper.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterBindings.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterInvoker.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterInvokingPrintWriter.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterInvokingServletOutputStream.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterResolver.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilteringRequestHandler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FormPostRequestHandler.java4
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestDispatch.java216
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestFactory.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpResponseStatisticsCollector.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscContext.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscFilterInvokerFilter.java4
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscHttpServlet.java4
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscServerConnector.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/Janitor.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyConnectionLogger.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java17
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/MetricDefinitions.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/OneTimeRunnable.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ReferenceCountingRequestHandler.java13
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/RequestException.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/RequestMetricReporter.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/RequestUtils.java9
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/SecuredRedirectHandler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServerMetricReporter.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletOutputStreamWriter.java64
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletRequestReader.java222
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletResponseController.java195
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/SimpleConcurrentIdentityHashMap.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/SslHandshakeFailure.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/UnsupportedFilterInvoker.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/VoidConnectionLog.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/VoidRequestLog.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/testutils/ConnectorFactoryRegistryModule.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/testutils/ServletModule.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/testutils/TestDriver.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/servlet/ServletOrJdiscHttpRequest.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/servlet/ServletOrJdiscHttpResponse.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/servlet/ServletRequest.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/servlet/ServletResponse.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/servlet/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/ssl/SslContextFactoryProvider.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/ssl/impl/DefaultSslContextFactoryProvider.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/ssl/impl/JDiscSslContextFactory.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/ssl/impl/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/ssl/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/language/provider/DefaultEmbedderProvider.java26
-rw-r--r--container-core/src/main/java/com/yahoo/language/provider/DefaultLinguisticsProvider.java2
-rw-r--r--container-core/src/main/java/com/yahoo/language/provider/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/Bucket.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/Counter.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/DimensionCache.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/Gauge.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/Identifier.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/Measurement.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/MetricAggregator.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/MetricManager.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/MetricReceiver.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/MetricSettings.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/MetricUpdater.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/Point.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/PointBuilder.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/Sample.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/UnitTestSetup.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/UntypedMetric.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/Value.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/jdisc/JdiscMetricsFactory.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/jdisc/SimpleMetricConsumer.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/jdisc/SnapshotConverter.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/jdisc/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/runtime/MetricProperties.java2
-rw-r--r--container-core/src/main/java/com/yahoo/metrics/simple/runtime/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/osgi/MockOsgi.java2
-rw-r--r--container-core/src/main/java/com/yahoo/osgi/Osgi.java2
-rw-r--r--container-core/src/main/java/com/yahoo/osgi/OsgiImpl.java2
-rw-r--r--container-core/src/main/java/com/yahoo/osgi/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/osgi/provider/model/ComponentModel.java2
-rw-r--r--container-core/src/main/java/com/yahoo/osgi/provider/model/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/IllegalInputException.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/Processor.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/Request.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/Response.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/execution/AsyncExecution.java14
-rw-r--r--container-core/src/main/java/com/yahoo/processing/execution/Execution.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/execution/ExecutionWithResponse.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/execution/ResponseReceiver.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/execution/RunnableExecution.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/execution/chain/ChainRegistry.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/execution/chain/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/execution/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/handler/AbstractProcessingHandler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/handler/ProcessingHandler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/handler/ProcessingResponse.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/handler/ProcessingTestDriver.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/handler/ResponseHeaders.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/handler/ResponseStatus.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/handler/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/processors/RequestPropertyTracer.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/rendering/AsynchronousRenderer.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/rendering/AsynchronousSectionedRenderer.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/rendering/ProcessingRenderer.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/rendering/Renderer.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/rendering/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/request/CloneHelper.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/request/CompoundName.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/request/ErrorMessage.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/request/Properties.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/request/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/request/properties/PropertyMap.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/request/properties/PublicCloneable.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/request/properties/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/response/AbstractData.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/response/AbstractDataList.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/response/ArrayDataList.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/response/Data.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/response/DataList.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/response/DefaultIncomingData.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/response/FutureResponse.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/response/IncomingData.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/response/Ordered.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/response/Streamed.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/response/package-info.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/test/ProcessorLibrary.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/test/Responses.java2
-rw-r--r--container-core/src/main/java/com/yahoo/restapi/ByteArrayResponse.java26
-rw-r--r--container-core/src/main/java/com/yahoo/restapi/ErrorResponse.java2
-rw-r--r--container-core/src/main/java/com/yahoo/restapi/JacksonJsonMapper.java2
-rw-r--r--container-core/src/main/java/com/yahoo/restapi/MessageResponse.java2
-rw-r--r--container-core/src/main/java/com/yahoo/restapi/Path.java2
-rw-r--r--container-core/src/main/java/com/yahoo/restapi/RedirectResponse.java2
-rw-r--r--container-core/src/main/java/com/yahoo/restapi/RestApi.java69
-rw-r--r--container-core/src/main/java/com/yahoo/restapi/RestApiException.java8
-rw-r--r--container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java371
-rw-r--r--container-core/src/main/java/com/yahoo/restapi/RestApiMappers.java172
-rw-r--r--container-core/src/main/java/com/yahoo/restapi/RestApiRequestHandler.java4
-rw-r--r--container-core/src/main/java/com/yahoo/restapi/RestApiTestDriver.java2
-rw-r--r--container-core/src/main/java/com/yahoo/restapi/SlimeJsonResponse.java2
-rw-r--r--container-core/src/main/java/com/yahoo/restapi/StringResponse.java20
-rw-r--r--container-core/src/main/java/com/yahoo/restapi/UriBuilder.java2
-rw-r--r--container-core/src/main/java/com/yahoo/restapi/package-info.java2
-rw-r--r--container-core/src/main/java/org/json/package-info.java2
-rw-r--r--container-core/src/main/resources/configdefinitions/application-bundles.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/container.components.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/container.core.access-log.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/container.core.application-metadata.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/container.core.chains.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/container.core.container-http.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/container.core.document.container-document.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/container.core.http.http-filter.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/container.core.identity.identity.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/container.core.log-handler.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/container.core.vip-status.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/container.di.config.jersey-bundles.def8
-rw-r--r--container-core/src/main/resources/configdefinitions/container.di.config.jersey-injection.def5
-rw-r--r--container-core/src/main/resources/configdefinitions/container.handler.test.mockservice.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/container.handler.threadpool.container-threadpool.def5
-rw-r--r--container-core/src/main/resources/configdefinitions/container.handler.threadpool.def9
-rw-r--r--container-core/src/main/resources/configdefinitions/container.jdisc.config.health-monitor.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/container.jdisc.state.metrics-packets-handler.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/container.logging.connection-log.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/container.qr-searchers.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/container.qr.def13
-rw-r--r--container-core/src/main/resources/configdefinitions/container.servlet.servlet-config.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/jdisc.http.client.jdisc.http.client.http-client.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.connector.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.server.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.servlet-paths.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/metrics.manager.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/metrics.metrics-presentation.def2
-rw-r--r--container-core/src/main/resources/configdefinitions/platform-bundles.def2
-rwxr-xr-xcontainer-core/src/main/sh/find-pid105
-rwxr-xr-xcontainer-core/src/main/sh/vespa-jvm-dumper120
-rw-r--r--container-core/src/test/java/com/yahoo/component/ComponentSpecTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/component/chain/dependencies/ordering/ChainBuilderTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/component/chain/dependencies/ordering/OrderedReadyNodesTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/component/chain/model/ChainsModelBuilderTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/component/provider/test/ComponentRegistryTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/component/test/ComponentIdTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/core/config/PlatformBundleLoaderTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/di/ConfigRetrieverTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/di/ContainerTest.java63
-rw-r--r--container-core/src/test/java/com/yahoo/container/di/ContainerTestBase.java8
-rw-r--r--container-core/src/test/java/com/yahoo/container/di/DirConfigSource.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ComponentGraphTest.java25
-rw-r--r--container-core/src/test/java/com/yahoo/container/di/componentgraph/core/FallbackToGuiceInjectorTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/di/componentgraph/core/JerseyNodeTest.java68
-rw-r--r--container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ReuseComponentsTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/handler/AccessLogRequestHandlerTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/handler/LogHandlerTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/handler/LogReaderTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/handler/VipStatusHandlerTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/handler/VipStatusTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/handler/test/MockServiceTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/handler/threadpool/DefaultContainerThreadPoolTest.java31
-rw-r--r--container-core/src/test/java/com/yahoo/container/jdisc/ExtendedResponseTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/jdisc/HttpRequestTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/jdisc/HttpResponseTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/jdisc/LoggingRequestHandlerTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/jdisc/LoggingTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/jdisc/RequestBuilderTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandlerTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/jdisc/ThreadedRequestHandlerTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/jdisc/state/MetricSnapshotTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/jdisc/state/MetricsPacketsHandlerTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/jdisc/state/MockSnapshotProvider.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/jdisc/state/StateHandlerTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/logging/CircularArrayAccessLogKeeperTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/logging/JSONLogTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/logging/JsonConnectionLogWriterTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/logging/LogFileHandlerTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/logging/test/LogFormatterTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/container/xml/providers/XMLProviderTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/CookieTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/HttpHeadersTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java4
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/HttpResponseTestCase.java3
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/filter/DiscFilterRequestTest.java45
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/filter/DiscFilterResponseTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/filter/EmptyRequestFilterTestCase.java3
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/filter/EmptyResponseFilterTestCase.java3
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/filter/JDiscCookieWrapperTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/filter/RequestViewImplTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/filter/ResponseHeaderFilter.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/filter/SecurityRequestFilterChainTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/filter/SecurityResponseFilterChainTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/filter/ServletFilterRequestTest.java3
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/filter/ServletFilterResponseTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/filter/util/FilterUtilsTest.java48
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLogTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/BlockingQueueRequestLog.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ConnectionThrottlerTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactoryTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/EchoRequestHandler.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ErrorResponseContentCreatorTest.java5
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ExceptionWrapperTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/FilterTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/Http2Test.java67
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpRequestFactoryTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpResponseStatisticsCollectorTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerConformanceTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java101
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/InMemoryConnectionLog.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/InMemoryRequestLog.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/JDiscHttpServletTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/JettyMockRequestBuilder.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/JettyMockResponseBuilder.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/JettyTestDriver.java3
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/MetricConsumerMock.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ProxyProtocolTest.java3
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/SimpleHttpClient.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/SslHandshakeFailedListenerTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/SslHandshakeMetricsTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/Utils.java19
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/servlet/JDiscFilterForServletTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/servlet/ServletAccessLoggingTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/servlet/ServletTestBase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/metrics/simple/BucketTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/metrics/simple/CounterTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/metrics/simple/DimensionsCacheTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/metrics/simple/GaugeTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/metrics/simple/MetricsTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/metrics/simple/PointTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/metrics/simple/jdisc/SnapshotConverterTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/osgi/provider/model/ComponentModelTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/processing/ResponseTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/processing/execution/test/AsyncExecutionTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/processing/execution/test/ExecutionContextTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/processing/execution/test/FutureDataTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/processing/execution/test/StreamingTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/processing/handler/ProcessingHandlerTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/processing/processors/MockUserDatabaseClient.java2
-rw-r--r--container-core/src/test/java/com/yahoo/processing/processors/MockUserDatabaseClientTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/processing/rendering/AsynchronousSectionedRendererTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/processing/rendering/TestContentChannel.java2
-rw-r--r--container-core/src/test/java/com/yahoo/processing/request/CompoundNameTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/processing/request/test/CompoundNameBenchmark.java2
-rw-r--r--container-core/src/test/java/com/yahoo/processing/request/test/CompoundNameTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/processing/request/test/ErrorMessageTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/processing/request/test/PropertyMapTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/processing/request/test/RequestTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/processing/test/DocumentationTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/processing/test/ProcessingTestCase.java2
-rw-r--r--container-core/src/test/java/com/yahoo/processing/test/documentation/AsyncDataProcessingInitiator.java2
-rw-r--r--container-core/src/test/java/com/yahoo/processing/test/documentation/AsyncDataProducer.java2
-rw-r--r--container-core/src/test/java/com/yahoo/processing/test/documentation/ExampleProcessor.java2
-rw-r--r--container-core/src/test/java/com/yahoo/processing/test/documentation/Federator.java2
-rw-r--r--container-core/src/test/java/com/yahoo/restapi/PathTest.java2
-rw-r--r--container-core/src/test/java/com/yahoo/restapi/RestApiImplTest.java64
-rw-r--r--container-core/src/test/vespa-configdef/config.core.int.def2
-rw-r--r--container-core/src/test/vespa-configdef/config.core.string.def2
-rw-r--r--container-core/src/test/vespa-configdef/config.di.int.def2
-rw-r--r--container-core/src/test/vespa-configdef/config.di.string.def2
-rw-r--r--container-core/src/test/vespa-configdef/config.test.bootstrap1.def2
-rw-r--r--container-core/src/test/vespa-configdef/config.test.bootstrap2.def2
-rw-r--r--container-core/src/test/vespa-configdef/config.test.components1.def2
-rw-r--r--container-core/src/test/vespa-configdef/config.test.test.def2
-rw-r--r--container-core/src/test/vespa-configdef/config.test.test2.def2
-rw-r--r--container-core/src/test/vespa-configdef/config.test.thread-pool.def2
-rw-r--r--container-dependencies-enforcer/README.md2
-rw-r--r--container-dependencies-enforcer/pom.xml11
-rw-r--r--container-dependency-versions/pom.xml63
-rw-r--r--container-dev/README.md2
-rw-r--r--container-dev/pom.xml6
-rw-r--r--container-dev/src/main/javadoc/README1
-rw-r--r--container-disc/CMakeLists.txt2
-rw-r--r--container-disc/README.md2
-rw-r--r--container-disc/pom.xml41
-rw-r--r--container-disc/src/main/java/com/yahoo/container/FilterConfigProvider.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/config/jersey/package-info.java5
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/CertificateStoreProvider.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java47
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/ContainerThreadFactory.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/DeprecatedSecretStoreProvider.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/DisableOsgiFramework.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/DisabledConnectionLogProvider.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/FilterBindingsProvider.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/RestrictedBundleContext.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/SystemInfoProvider.java12
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/athenz/AthenzIdentityProvider.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/athenz/AthenzIdentityProviderException.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/athenz/package-info.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/component/Deconstructor.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/config/package-info.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/metric/DisableGuiceMetric.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/metric/ForwardingMetricConsumer.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/metric/GarbageCollectionMetrics.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricConsumerProvider.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricConsumerProviderProvider.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricProvider.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/metric/package-info.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/metric/state/package-info.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/secretstore/SecretNotFoundException.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/secretstore/SecretStore.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/secretstore/package-info.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/usability/BindingsOverviewHandler.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/usability/package-info.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/jdisc/metrics/yamasconsumer/cloud/package-info.java2
-rw-r--r--container-disc/src/main/resources/configdefinitions/container.config.jersey.jersey-connection.def7
-rw-r--r--container-disc/src/main/resources/configdefinitions/container.config.jersey.jersey-web-app-pool.def8
-rw-r--r--container-disc/src/main/resources/configdefinitions/container.jdisc.jdisc-bindings.def2
-rw-r--r--container-disc/src/main/resources/configdefinitions/container.jdisc.secretstore.secret-store.def2
-rwxr-xr-xcontainer-disc/src/main/sh/vespa-start-container-daemon.sh30
-rw-r--r--container-disc/src/test/java/com/yahoo/container/jdisc/ConfiguredApplicationTest.java14
-rw-r--r--container-disc/src/test/java/com/yahoo/container/jdisc/ContainerThreadFactoryTest.java2
-rw-r--r--container-disc/src/test/java/com/yahoo/container/jdisc/DisableOsgiFrameworkTest.java2
-rw-r--r--container-disc/src/test/java/com/yahoo/container/jdisc/FilterBindingsProviderTest.java2
-rw-r--r--container-disc/src/test/java/com/yahoo/container/jdisc/component/DeconstructorTest.java2
-rw-r--r--container-disc/src/test/java/com/yahoo/container/jdisc/metric/ForwardingMetricConsumerTest.java2
-rw-r--r--container-disc/src/test/java/com/yahoo/container/jdisc/metric/GarbageCollectionMetricsTest.java2
-rw-r--r--container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricConsumerFactories.java2
-rw-r--r--container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricConsumerProviderTest.java2
-rw-r--r--container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricConsumerProviders.java2
-rw-r--r--container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricProviderTest.java2
-rw-r--r--container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricProviders.java2
-rw-r--r--container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricUpdaterTest.java2
-rw-r--r--container-documentapi/README.md2
-rw-r--r--container-documentapi/pom.xml2
-rw-r--r--container-integration-test/README.md2
-rw-r--r--container-integration-test/pom.xml2
-rw-r--r--container-integration-test/src/test/java/com/yahoo/search/query/gui/GUIHandlerTest.java4
-rw-r--r--container-messagebus/CMakeLists.txt2
-rw-r--r--container-messagebus/README.md2
-rw-r--r--container-messagebus/pom.xml2
-rw-r--r--container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/MbusClientProvider.java2
-rw-r--r--container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/MbusServerProvider.java2
-rw-r--r--container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/NetworkMultiplexerHolder.java49
-rw-r--r--container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/NetworkMultiplexerProvider.java56
-rw-r--r--container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/SessionCache.java135
-rw-r--r--container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/package-info.java2
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/IgnoredCompletionHandler.java2
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusClient.java8
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusRequest.java7
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusRequestHandler.java2
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusResponse.java2
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusServer.java33
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/StatusCodes.java2
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/package-info.java2
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/ClientTestDriver.java14
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/MessageQueue.java2
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/RemoteClient.java36
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/RemoteServer.java41
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/ReplyQueue.java2
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/ServerTestDriver.java11
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/TestUtils.java21
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/network/package-info.java2
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/network/rpc/package-info.java2
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/package-info.java2
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/routing/package-info.java2
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/shared/ClientSession.java4
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/shared/NullNetwork.java6
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/shared/ServerSession.java16
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/shared/SharedDestinationSession.java9
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/shared/SharedIntermediateSession.java11
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/shared/SharedMessageBus.java10
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/shared/SharedSourceSession.java2
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/shared/package-info.java2
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/test/package-info.java2
-rw-r--r--container-messagebus/src/main/resources/configdefinitions/container.jdisc.config.session.def2
-rw-r--r--container-messagebus/src/main/resources/configdefinitions/container.jdisc.container-mbus.def2
-rw-r--r--container-messagebus/src/test/java/com/yahoo/container/jdisc/messagebus/MbusClientProviderTest.java21
-rw-r--r--container-messagebus/src/test/java/com/yahoo/container/jdisc/messagebus/MbusSessionKeyTestCase.java4
-rw-r--r--container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/ClientThreadingTestCase.java6
-rw-r--r--container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusClientTestCase.java2
-rw-r--r--container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusRequestHandlerTestCase.java2
-rw-r--r--container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusRequestTestCase.java2
-rw-r--r--container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusResponseTestCase.java2
-rw-r--r--container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusServerConformanceTest.java3
-rw-r--r--container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusServerTestCase.java20
-rw-r--r--container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/ServerThreadingTestCase.java2
-rw-r--r--container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/test/ClientTestDriverTestCase.java8
-rw-r--r--container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/test/ServerTestDriverTestCase.java7
-rw-r--r--container-messagebus/src/test/java/com/yahoo/messagebus/shared/SharedDestinationSessionTestCase.java12
-rw-r--r--container-messagebus/src/test/java/com/yahoo/messagebus/shared/SharedIntermediateSessionTestCase.java16
-rw-r--r--container-messagebus/src/test/java/com/yahoo/messagebus/shared/SharedMessageBusTestCase.java2
-rw-r--r--container-messagebus/src/test/java/com/yahoo/messagebus/shared/SharedSourceSessionTestCase.java12
-rw-r--r--container-messagebus/src/test/resources/config/clientprovider/container-mbus.cfg0
-rw-r--r--container-messagebus/src/test/resources/config/clientprovider/documentmanager.cfg0
-rw-r--r--container-messagebus/src/test/resources/config/clientprovider/load-type.cfg0
-rw-r--r--container-messagebus/src/test/resources/config/clientprovider/messagebus.cfg0
-rw-r--r--container-search-and-docproc/CMakeLists.txt2
-rw-r--r--container-search-and-docproc/README.md2
-rw-r--r--container-search-and-docproc/pom.xml2
-rw-r--r--container-search-and-docproc/src/main/java/com/yahoo/container/handler/observability/ApplicationStatusHandler.java2
-rw-r--r--container-search-and-docproc/src/main/java/com/yahoo/container/handler/observability/package-info.java2
-rw-r--r--container-search-and-docproc/src/main/resources/configdefinitions/container.handler.observability.application-userdata.def2
-rw-r--r--container-search-and-docproc/src/test/java/com/yahoo/container/handler/observability/ApplicationStatusHandlerTest.java2
-rw-r--r--container-search-gui/CMakeLists.txt2
-rw-r--r--container-search-gui/pom.xml2
-rw-r--r--container-search-gui/src/main/java/com/yahoo/search/query/gui/GUIHandler.java2
-rw-r--r--container-search-gui/src/main/java/com/yahoo/search/query/restapi/ErrorResponse.java2
-rw-r--r--container-search-gui/src/main/resources/gui/_includes/css/vespa.css2
-rw-r--r--container-search-gui/src/main/resources/gui/_includes/index.html4
-rw-r--r--container-search-gui/src/main/resources/gui/_includes/search-api-reference.html8
-rwxr-xr-xcontainer-search-gui/src/main/resources/gui/editarea/edit_area/reg_syntax/yql.js2
-rw-r--r--container-search-gui/src/main/resources/gui/icons/browserconfig.xml2
-rw-r--r--container-search/CMakeLists.txt2
-rw-r--r--container-search/abi-spec.json55
-rw-r--r--container-search/pom.xml2
-rw-r--r--container-search/src/main/antlr4/com/yahoo/search/yql/yqlplus.g42
-rw-r--r--container-search/src/main/java/com/yahoo/data/JsonProducer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/data/XmlProducer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/data/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/fs4/DocsumPacket.java2
-rw-r--r--container-search/src/main/java/com/yahoo/fs4/GetDocSumsPacket.java2
-rw-r--r--container-search/src/main/java/com/yahoo/fs4/MapEncoder.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/ConfigurationException.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/Freshness.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/Index.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/IndexFacts.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/IndexModel.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/Location.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/Ping.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/Pong.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/SearchDefinition.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java67
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/cluster/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/BoolField.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/ByteField.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/ClusterParams.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/DataField.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinition.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/DocumentDatabase.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/DoubleField.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/FeatureDataField.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/Float16Field.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/FloatField.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/GroupingListHit.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/Int64Field.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/IntegerField.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/LongstringField.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/RankProfile.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/ShortField.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/StringField.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/StructDataField.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/SummaryParameters.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/TensorField.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/TimeoutException.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/XMLField.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/AnnotateStringFieldPart.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/BoldCloseFieldPart.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/BoldOpenFieldPart.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/FieldIterator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/FieldPart.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/HitField.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/ImmutableFieldPart.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/JSONString.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/MarkupFieldPart.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/RawData.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/SeparatorFieldPart.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/StringFieldPart.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/TokenFieldIterator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/XMLString.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/XmlRenderer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/AndItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/AndSegmentItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/BlockItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/CompositeIndexedItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/CompositeItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/CompositeTaggableItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/DotProductItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/EquivItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/ExactStringItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/FalseItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/GeoLocationItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/HasIndexItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/Highlight.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/IndexedItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/IndexedSegmentItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/IntItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/Item.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/ItemHelper.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/Limit.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/MarkerWordItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/NearItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/NonReducibleCompositeItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/NotItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/NullItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/ONearItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/OrItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/PhraseItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/PhraseSegmentItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/PredicateQueryItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/PrefixItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/PureWeightedInteger.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/PureWeightedItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/PureWeightedString.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/QueryCanonicalizer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/QueryException.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/RangeItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/RankItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/RegExpItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/SameElementItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/SegmentItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/SegmentingRule.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/SimpleIndexedItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/SimpleTaggableItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/Substring.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/SubstringItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/SuffixItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/TaggableItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/TaggableSegmentItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/TermItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/TermType.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/ToolBox.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/WandItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/WeakAndItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/WeightedSetItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/WordAlternativesItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/WordItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/AbstractParser.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/AdvancedParser.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/AllParser.java6
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/AnyParser.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/CustomParser.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/ParseException.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/PhraseParser.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/ProgrammaticParser.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/SimpleParser.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/StructuredParser.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/Token.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/TokenPosition.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/Tokenizer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/UnicodePropertyDump.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/WebParser.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/textualrepresentation/Discloser.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/textualrepresentation/TextualQueryRepresentation.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/querytransform/CJKSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/querytransform/CollapsePhraseSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/querytransform/LiteralBoostSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/querytransform/NoRankingSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/querytransform/NonPhrasingSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/querytransform/NormalizingSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/querytransform/PhraseMatcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/querytransform/PhrasingSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/querytransform/QueryRewrite.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/querytransform/RecallSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/querytransform/StemmingSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/querytransform/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/searcher/BlendingSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/searcher/FieldCollapsingSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/searcher/FillSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/searcher/JSONDebugSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/searcher/JuniperSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/searcher/MultipleResultsSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/searcher/PosSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/searcher/QuotingSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/searcher/ValidatePredicateSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/searcher/ValidateSortingSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/searcher/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/RuleBase.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/RuleBaseException.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/RuleImporter.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/SemanticSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/benchmark/RuleBaseBenchmark.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/benchmark/rules.sr2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/config/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/engine/Choicepoint.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/engine/Evaluation.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/engine/EvaluationException.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/engine/FlattenedItem.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/engine/Match.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/engine/NameSpace.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/engine/ParameterNameSpace.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/engine/ReferencedMatches.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/engine/RuleEngine.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/engine/RuleEvaluation.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/parser/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/AddingProductionRule.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/AndCondition.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/ChoiceCondition.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/ComparisonCondition.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/CompositeCondition.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/CompositeItemCondition.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/Condition.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/ConditionReference.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/EllipsisCondition.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/LiteralCondition.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/LiteralPhraseProduction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/LiteralTermProduction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/NamedCondition.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/NamespaceProduction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/NotCondition.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/Production.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/ProductionList.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/ProductionRule.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/ReferenceTermProduction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/ReplacingProductionRule.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/SequenceCondition.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/SuperCondition.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/TermCondition.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/TermProduction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/statistics/StatisticsSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/statistics/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/Query.java81
-rw-r--r--container-search/src/main/java/com/yahoo/search/Result.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/Searcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/cluster/BaseNodeMonitor.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/cluster/ClusterMonitor.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/cluster/ClusterSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/cluster/Hasher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/cluster/MonitorConfiguration.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/cluster/NodeManager.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/cluster/PingableSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/cluster/TrafficNodeMonitor.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/cluster/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/config/dispatchprototype/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/config/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/CloseableInvoker.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java8
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/FillInvoker.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/InterleavedSearchInvoker.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/LoadBalancer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/ResponseMonitor.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/SearchErrorInvoker.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/SearchInvoker.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/SearchPath.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/TopKEstimator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/rpc/Client.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/rpc/ProtobufSerialization.java9
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcClient.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcFillInvoker.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcPingFactory.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcProtobufFillInvoker.java9
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcResourcePool.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcSearchInvoker.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/Group.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/Node.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/PongHandler.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchCluster.java24
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/CommonFields.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/FederationResult.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/FederationSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/ForwardingSearcher.java3
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/TimeoutException.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/selection/FederationTarget.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/selection/TargetSelector.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/selection/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/sourceref/SearchChainInvocationSpec.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/sourceref/SearchChainResolver.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/sourceref/SingleTarget.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/sourceref/SourceRefResolver.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/sourceref/SourcesTarget.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/sourceref/Target.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedProviderException.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedSearchChainException.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedSourceRefException.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/Continuation.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/GroupingQueryParser.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/GroupingRequest.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/GroupingValidator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/UnavailableAttributeException.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/UniqueGroupingSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/AddFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/AggregatorNode.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/AllOperation.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/AndFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ArrayAtLookup.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/AttributeFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/AttributeMapLookupValue.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/AttributeValue.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/AvgAggregator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/AvgFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/BooleanValue.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/BucketResolver.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/BucketValue.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/CatFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ConstantValue.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ConstantValueComparator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/CountAggregator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/DateFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/DayOfMonthFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/DayOfWeekFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/DayOfYearFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/DebugWaitFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/DivFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/DocIdNsSpecificValue.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/DocumentValue.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/DoubleBucket.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/DoublePredefined.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/DoubleValue.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/EachOperation.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ExpressionVisitor.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/FixedWidthFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/FunctionNode.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/GroupingExpression.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/GroupingNode.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/GroupingOperation.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/HourOfDayFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/Infinite.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/InfiniteValue.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/InterpolatedLookup.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/LongBucket.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/LongPredefined.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/LongValue.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathACosFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathACosHFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathASinFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathASinHFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathATanFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathATanHFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathCbrtFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathCosFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathCosHFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathExpFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathFloorFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathFunctions.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathHypotFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathLog10Function.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathLog1pFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathLogFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathPowFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathResolver.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathSinFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathSinHFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathSqrtFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathTanFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathTanHFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MaxAggregator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MaxFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/Md5Function.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MinAggregator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MinFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MinuteOfHourFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ModFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MonthOfYearFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MulFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/NegFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/NormalizeSubjectFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/NowFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/OrFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/PredefinedFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/RawBucket.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/RawBuffer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/RawPredefined.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/RawValue.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/RelevanceValue.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ReverseFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/SecondOfMinuteFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/SizeFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/SortFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/StandardDeviationAggregator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/StrCatFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/StrLenFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/StringBucket.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/StringPredefined.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/StringValue.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/SubFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/SumAggregator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/SummaryValue.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/TimeFunctions.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ToDoubleFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ToLongFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ToRawFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ToStringFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/UcaFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/XorAggregator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/XorBitFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/XorFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/YearFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ZCurveXFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ZCurveYFunction.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/parser/GroupingParserInput.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/AbstractList.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/BoolId.java2
-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/DoubleBucketId.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/DoubleId.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/Group.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/GroupId.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/GroupList.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/HitList.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/HitRenderer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/LongBucketId.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/LongId.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/NullId.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/RawBucketId.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/RawId.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/RootGroup.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/RootId.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/StringBucketId.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/StringId.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/ValueGroupId.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/vespa/CompositeContinuation.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/vespa/ContinuationDecoder.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/vespa/EncodableContinuation.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/vespa/ExpressionConverter.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingTransform.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/vespa/HitConverter.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/vespa/IntegerDecoder.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/vespa/IntegerEncoder.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/vespa/OffsetContinuation.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/vespa/RequestBuilder.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/vespa/ResultBuilder.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/vespa/ResultId.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/handler/HttpSearchResponse.java7
-rw-r--r--container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java44
-rw-r--r--container-search/src/main/java/com/yahoo/search/handler/SearchResponse.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/handler/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/intent/model/Intent.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/intent/model/IntentModel.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/intent/model/IntentNode.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/intent/model/InterpretationNode.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/intent/model/Node.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/intent/model/ParentNode.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/intent/model/Source.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/intent/model/SourceNode.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/intent/model/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/match/DocumentDb.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/PageTemplate.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/PageTemplateRegistry.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/PageTemplateSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/PlaceholderMappingVisitor.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/PlaceholderReferenceCreatingVisitor.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/SourceVisitor.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/config/PageTemplateConfigurer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/config/PageTemplateXMLReader.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/config/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/engine/Organizer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/engine/RelevanceComparator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/engine/Resolution.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/engine/Resolver.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/engine/SourceOrderComparator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/engine/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/DeterministicResolver.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/RandomResolver.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/ResolverRegistry.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/model/AbstractChoice.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/model/Choice.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/model/Layout.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/model/MapChoice.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/model/PageElement.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/model/PageTemplateVisitor.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/model/Placeholder.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/model/Renderer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/model/Section.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/model/Source.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/model/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/result/SectionHitGroup.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/result/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/Model.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/ParameterParser.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/Presentation.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/Properties.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/QueryHelper.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/QueryTree.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/Ranking.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/Select.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/SelectParser.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/SessionId.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/Sorting.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/UniqueRequestId.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/context/QueryContext.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/context/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/parser/Parsable.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/parser/Parser.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/parser/ParserEnvironment.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/parser/ParserFactory.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/parser/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/AllValuesQueryProfileVisitor.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/BackedOverridableQueryProfile.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/CompoundNameChildCache.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/CopyOnWriteContent.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/DimensionBinding.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/DimensionValues.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/DumpTool.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/FieldDescriptionQueryProfileVisitor.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/ModelObjectMap.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/OverridableQueryProfile.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/PrefixQueryProfileVisitor.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/QueryProfile.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileCompiler.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileProperties.java18
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileRegistry.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileVariant.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileVariants.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileVisitor.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/SingleValueQueryProfileVisitor.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/SubstituteString.java2
-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/query/profile/compiled/CompiledQueryProfile.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfileRegistry.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/compiled/DimensionalMap.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/compiled/DimensionalValue.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/compiled/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/config/QueryProfileConfigurer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/config/QueryProfileXMLReader.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/config/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/types/ConversionContext.java46
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/types/FieldDescription.java6
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/types/FieldType.java7
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/types/PrimitiveFieldType.java5
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/types/QueryFieldType.java5
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileFieldType.java7
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileType.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileTypeRegistry.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/types/TensorFieldType.java22
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/types/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/properties/CloneHelper.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/properties/DefaultProperties.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/properties/PropertyAliases.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/properties/PropertyMap.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/properties/QueryProperties.java32
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/properties/QueryPropertyAliases.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/properties/RequestContextProperties.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/properties/SubProperties.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/properties/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/ranking/Diversity.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/ranking/MatchPhase.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/ranking/Matching.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/ranking/RankFeatures.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/ranking/RankProperties.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/ranking/SoftTimeout.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/ranking/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/rewrite/QueryRewriteSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/rewrite/RewriterConstants.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/rewrite/RewriterFeatures.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/rewrite/RewriterUtils.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/rewrite/SearchChainDispatcherSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/rewrite/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/rewrite/rewriters/GenericExpansionRewriter.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/rewrite/rewriters/MisspellRewriter.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/rewrite/rewriters/NameRewriter.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/rewrite/rewriters/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/TextSerialize.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/item/AndNotRestConverter.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/item/CompositeConverter.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/item/ExactStringConverter.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/item/IntConverter.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemArguments.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemContext.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemExecutorRegistry.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemFormConverter.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemFormHandler.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemInitializer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/item/ListUtil.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/item/NearConverter.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/item/PrefixConverter.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/item/SubStringConverter.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/item/SuffixConverter.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/item/TermConverter.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/item/TypeCheck.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/item/WordConverter.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/parser/DispatchFormHandler.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/serializer/DispatchForm.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/serializer/ItemIdMapper.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/serializer/QueryTreeSerializer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/textserialize/serializer/Serializer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/AllLowercasingSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/BooleanAttributeParser.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/BooleanSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/DefaultPositionSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/LowercasingSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/NGramSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/QueryTreeUtil.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/RangeQueryOptimizer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/SortingDegrader.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/VespaLowercasingSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/WandSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/WeakAndReplacementSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java117
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/Renderer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/RendererRegistry.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/SectionedRenderer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/SyncDefaultRenderer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/XmlRenderer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/ChainableComparator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/Coverage.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/DeepHitIterator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/DefaultErrorHit.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/ErrorHit.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/ErrorMessage.java16
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/FeatureData.java22
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/FieldComparator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/Hit.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/HitGroup.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/HitGroupsLastComparator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/HitIterator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/HitOrderer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/HitSortOrderer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/MetaHitsFirstComparator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/NanNumber.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/PositionsData.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/Relevance.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/StructuredData.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/AsyncExecution.java14
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/Execution.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/ForkingSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/FutureResult.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/PhaseNames.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/SearchChain.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/SearchChainRegistry.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/SearcherRegistry.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/example/ExampleSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/model/VespaSearchers.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/model/federation/FederationOptions.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/model/federation/FederationSearcherModel.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/model/federation/LocalProviderSpec.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/model/federation/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/model/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/testutil/DocumentSourceSearcher.java8
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchers/CacheControlSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchers/ConnectionControlSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchers/ContainerLatencySearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchers/InputCheckingSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchers/QueryValidator.java2
-rwxr-xr-xcontainer-search/src/main/java/com/yahoo/search/searchers/RateLimitingSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchers/ValidateMatchPhaseSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchers/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/statistics/ElapsedTime.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/statistics/PeakQpsSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/statistics/TimeTracker.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/statistics/TimingSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/statistics/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/ArgumentsTypeChecker.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/CaseInsensitiveFileStream.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/CaseInsensitiveInputStream.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/ExpressionOperator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/FieldFiller.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/FieldFilter.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/JavaListTypeChecker.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/JavaTypeChecker.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/JavaUnionTypeChecker.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/Location.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/MinimalQueryInserter.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/NodeTypeChecker.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/NullItemException.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/Operator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/OperatorNode.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/OperatorNodeListTypeChecker.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/OperatorTypeChecker.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/OperatorVisitor.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/ParserBase.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/ProgramCompileException.java27
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/ProgramParser.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/ProjectOperator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/ProjectionBuilder.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/SequenceOperator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/SortOperator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/StatementOperator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/StringUnescaper.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/TypeCheckers.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/TypeOperator.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/VespaGroupingStep.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/YqlParser.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/YqlQuery.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/text/interpretation/AnnotationClass.java2
-rw-r--r--container-search/src/main/java/com/yahoo/text/interpretation/Annotations.java2
-rw-r--r--container-search/src/main/java/com/yahoo/text/interpretation/Interpretation.java2
-rw-r--r--container-search/src/main/java/com/yahoo/text/interpretation/Modification.java2
-rw-r--r--container-search/src/main/java/com/yahoo/text/interpretation/Span.java2
-rw-r--r--container-search/src/main/java/com/yahoo/text/interpretation/package-info.java2
-rw-r--r--container-search/src/main/java/com/yahoo/vespa/streamingvisitors/ListMerger.java2
-rw-r--r--container-search/src/main/java/com/yahoo/vespa/streamingvisitors/MetricsSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsStreamingSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsVisitor.java2
-rw-r--r--container-search/src/main/java/com/yahoo/vespa/streamingvisitors/Visitor.java2
-rw-r--r--container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VisitorFactory.java2
-rw-r--r--container-search/src/main/javacc/com/yahoo/prelude/semantics/parser/SemanticsParser.jj2
-rw-r--r--container-search/src/main/javacc/com/yahoo/search/grouping/request/parser/GroupingParser.jj2
-rw-r--r--container-search/src/main/javacc/com/yahoo/search/query/textserialize/parser/Parser.jj2
-rw-r--r--container-search/src/main/resources/configdefinitions/container.search.fs4.def2
-rw-r--r--container-search/src/main/resources/configdefinitions/prelude.cluster.qr-monitor.def2
-rw-r--r--container-search/src/main/resources/configdefinitions/prelude.emulation.def2
-rw-r--r--container-search/src/main/resources/configdefinitions/prelude.fastsearch.documentdb-info.def2
-rw-r--r--container-search/src/main/resources/configdefinitions/prelude.searcher.keyvalue.def2
-rw-r--r--container-search/src/main/resources/configdefinitions/prelude.searcher.qr-quotetable.def2
-rw-r--r--container-search/src/main/resources/configdefinitions/prelude.semantics.semantic-rules.def2
-rw-r--r--container-search/src/main/resources/configdefinitions/search.config.cluster.def2
-rw-r--r--container-search/src/main/resources/configdefinitions/search.config.index-info.def2
-rw-r--r--container-search/src/main/resources/configdefinitions/search.config.qr-start.def2
-rw-r--r--container-search/src/main/resources/configdefinitions/search.config.rate-limiting.def2
-rw-r--r--container-search/src/main/resources/configdefinitions/search.federation.federation.def2
-rw-r--r--container-search/src/main/resources/configdefinitions/search.federation.provider.def2
-rw-r--r--container-search/src/main/resources/configdefinitions/search.federation.searchchain-forward.def2
-rw-r--r--container-search/src/main/resources/configdefinitions/search.federation.strict-contracts.def2
-rw-r--r--container-search/src/main/resources/configdefinitions/search.handler.search-with-renderer-handler.def2
-rw-r--r--container-search/src/main/resources/configdefinitions/search.pagetemplates.page-templates.def2
-rw-r--r--container-search/src/main/resources/configdefinitions/search.pagetemplates.resolvers.def2
-rw-r--r--container-search/src/main/resources/configdefinitions/search.query.profile.config.query-profiles.def2
-rw-r--r--container-search/src/main/resources/configdefinitions/search.query.rewrite.rewrites.def2
-rw-r--r--container-search/src/main/resources/configdefinitions/search.querytransform.lowercasing.def2
-rw-r--r--container-search/src/main/resources/configdefinitions/search.statistics.measure-qps.def2
-rw-r--r--container-search/src/main/resources/configdefinitions/search.statistics.timing-searcher.def2
-rw-r--r--container-search/src/test/java/com/yahoo/container/test/ConstantFile.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/IndexFactsFactory.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java18
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/fastsearch/SlimeSummaryTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/fastsearch/test/DocsumDefinitionTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/fastsearch/test/MockDispatcher.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/fastsearch/test/PartialFillTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/hitfield/XmlRendererTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/hitfield/test/HitFieldTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/hitfield/test/JSONStringTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/hitfield/test/TokenFieldIteratorTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/ItemHelperTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/ItemLabelTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/ItemsCommonStuffTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/TaggableItemsTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/WordAlternativesItemTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/parser/TestLinguistics.java6
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/parser/TestSegmenter.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/parser/UnicodePropertyDumpTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/parser/test/ExactMatchAndDefaultIndexTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/parser/test/ParseTestCase.java9
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/parser/test/ParsingTester.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/parser/test/SubstringTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/parser/test/TokenizerTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/parser/test/WashPhrasesTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/test/DotProductItemTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/test/IntItemTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/test/ItemEncodingTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/test/PhraseItemTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/test/PredicateQueryItemTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/test/QueryCanonicalizerMicroBenchmark.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/test/QueryCanonicalizerTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/test/QueryLanguageTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/test/QueryTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/test/RangeItemTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/test/SameElementItemTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/test/SegmentItemTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/test/WandItemTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/test/WeightedSetItemTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/query/textualrepresentation/test/TextualQueryRepresentationTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/querytransform/test/CJKSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/querytransform/test/CollapsePhraseSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/querytransform/test/LiteralBoostSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/querytransform/test/NoRankingSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/querytransform/test/NonPhrasingSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/querytransform/test/NormalizingSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/querytransform/test/PhraseMatcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/querytransform/test/PhrasingSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/querytransform/test/QueryRewriteTestCase.java2
-rwxr-xr-xcontainer-search/src/test/java/com/yahoo/prelude/querytransform/test/RecallSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/querytransform/test/StemmingSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/searcher/test/BlendingSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/searcher/test/FieldCollapsingSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/searcher/test/JSONDebugSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/searcher/test/JuniperSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/searcher/test/MultipleResultsTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/searcher/test/PosSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/searcher/test/QuotingSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/searcher/test/ValidatePredicateSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/searcher/test/ValidateSortingSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/searcher/test/testhit.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/parser/test/SemanticsParserTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/parser/test/rules.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/AlibabaTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/AnchorTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/AutomataNotTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/AutomataTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/BacktrackingTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/BlendingTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/CJKTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/ComparisonTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/ComparisonsTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/ConditionTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/ConfigurationTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/DuplicateRuleTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/Ellipsis2TestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/EllipsisTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/ExactMatchTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/ExactMatchTrickTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/ExpansionTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/InheritanceTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/LabelMatchingTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/MatchAllTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/MatchOnlyIfNotOnlyTermTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/NoStemmingTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/NotTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/NumbersTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/NumericTermsTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/OrPhraseTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/Parameter2TestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/ParameterTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/PhraseMatchTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/ProductionRuleTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/RuleBaseAbstractTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/SegmentSubstitutionTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/SemanticSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/StemmingTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/StopwordTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/UrlTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/WeightingTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/alibaba.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/anchor.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/automatanot.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/automatarules.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/backtrackingrules.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/blending.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/cjk.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/comparison.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/comparisons.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/duplicaterules.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/ellipsis.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/ellipsis2.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/exactmatch.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/exactmatchtrick.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/expansion.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/child1.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/child2.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/cjk.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/grandchild.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/grandfather.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/grandmother.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/parent.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/labelmatching.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/match-only-if-not-only-term.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/matchall.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/nostemming.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/not.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/numbers.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/numericterms.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/orphrase.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/parameter.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/parameter2.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/phrasematch.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/rules.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/semantic-rules.cfg14
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/stemming.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/stopwords.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/substitution.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/url.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/weighting.sr2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/test/DummySearcher.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/test/GetRawWordTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/test/IndexFactsTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/test/IntegrationTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/test/LocationTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/test/NullSetMemberTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/test/QueryTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/test/ResultTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/test/integration/FirstSearcher.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/test/integration/SecondSearcher.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/test/integration/ThirdSearcher.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/cluster/test/ClusterSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/cluster/test/ClusteredConnectionTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/DispatcherTest.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/InterleavedSearchInvokerTest.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/LoadBalancerTest.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/MockInvoker.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/MockSearchCluster.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/SearchPathTest.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/TopKEstimatorTest.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/rpc/FillTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/rpc/MockClient.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterCoverageTest.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTest.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTester.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/FederationResultTest.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/sourceref/test/SearchChainResolverTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/sourceref/test/SourceRefResolverTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/test/AddHitsWithRelevanceSearcher.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/test/BlockingSearcher.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/test/DuplicateSourceTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/test/FederationSearcherTest.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/test/FederationSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/test/FederationTester.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/test/HitCountTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/test/SetHitCountsSearcher.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/ContinuationTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/GroupingQueryParserTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/GroupingRequestTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/GroupingValidatorTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/UniqueGroupingSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/request/BucketResolverTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/request/ExpressionVisitorTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/request/GroupingOperationTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/request/MathFunctionsTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/request/MathResolverTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/request/RawBufferTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/request/RequestTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/request/parser/GroupingParserBenchmarkTest.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/request/parser/GroupingParserTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/result/GroupIdTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/result/GroupListTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/result/GroupTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/result/HitListTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/result/HitRendererTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/vespa/CompositeContinuationTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingExecutorTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingTransformTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/vespa/HitConverterTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/vespa/IntegerDecoderTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/vespa/IntegerEmbedderTestCase.java (renamed from container-search/src/test/java/com/yahoo/search/grouping/vespa/IntegerEncoderTestCase.java)4
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/vespa/OffsetContinuationTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/vespa/RequestBuilderTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/vespa/ResultBuilderTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/vespa/ResultIdTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/handler/SearchHandlerTest.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/handler/test/JSONSearchHandlerTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/match/test/DocumentDbTest.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/MapPageTemplateXMLReadingTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/PageTemplateXMLReadingTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/choiceFooter.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/choiceHeader.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/footer.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/generic.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/header.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/includer.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/invalidfilename/invalid.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/mapexamples/map1.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/richSerp.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/richerSerp.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/serp.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/slottingSerp.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/AnySource.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/AnySourceResult.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/AnySourceTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfRenderers.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfRenderersResult.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfRenderersTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsections.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsectionsResult.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsectionsTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfTwoSources.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfTwoSourcesResult.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfTwoSourcesTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/Choices.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoicesResult.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoicesTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ExecutionAbstractTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSectionsToSections.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSectionsToSectionsResult.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSectionsToSectionsTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSourcesToSections.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSourcesToSectionsResult.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSourcesToSectionsTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/Page.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageResult.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlending.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlendingResult.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlendingTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRenderer.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRendererResult.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRendererTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoice.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoiceResult.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoiceTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/TwoSectionsFourSources.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/TwoSectionsFourSourcesResult.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/TwoSectionsFourSourcesTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/test/PageTemplateSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/test/SourceParameters.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/test/SourceParametersTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/MatchingTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/SoftTimeoutTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/SortingTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/context/test/ConcurrentTraceTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/context/test/LoggingTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/context/test/PropertiesTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/context/test/TraceTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/compiled/BindingTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfileRegistryTest.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/MultiProfileTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/QueryProfileConfigurationTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/QueryProfileIntegrationTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/TypedProfilesConfigurationTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/XmlReadingTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/inheritance/child.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/inheritance/parent.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/invalidxml1/illegalSetting.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/invalidxml2/unparseable.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/invalidxml3/default.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/klee/production.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/klee/twitter_dd-us-0.2.4.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/klee/twitter_dd-us.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/klee/twitter_dd.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/multiprofile/multiprofile1.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/multiprofile/multiprofileDimensions.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/multiprofile/parent1.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/multiprofile/parent2.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/news/default.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/news/yahoo_uk.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/news/yahoo_uk_test.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase1/default.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase1/parent.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase2/default.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase2/parent.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase3/default.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase3/parent.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase4/default.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase4/parent.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/newsfe/backend_news.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/newsfe/default.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/newsfe2/backend.news.provider.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/newsfe2/default.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/default.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/mandatory.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/mandatorySpecified.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/multi.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/multiDimensions.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/querybest.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/querylove.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/referingQuerybest.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/root.unoverridableIndex.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/root.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/rootChild.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/rootStrict.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/rootWithFilter.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/test.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/types/forbidding.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/types/mandatory.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/types/root.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/types/rootStrict.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverride/MyProfile1.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverride/MyProfile2.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverride/default.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverridetyped/MyProfile1.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverridetyped/MyProfile2.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverridetyped/default.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverridetyped/types/default.xml2
-rwxr-xr-xcontainer-search/src/test/java/com/yahoo/search/query/profile/config/test/sourceprovider/common.xml2
-rwxr-xr-xcontainer-search/src/test/java/com/yahoo/search/query/profile/config/test/sourceprovider/myprofile.xml2
-rwxr-xr-xcontainer-search/src/test/java/com/yahoo/search/query/profile/config/test/sourceprovider/provider.xml2
-rwxr-xr-xcontainer-search/src/test/java/com/yahoo/search/query/profile/config/test/sourceprovider/source.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/systemtest/default.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/tensortypes/profile1.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/tensortypes/profile2.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/tensortypes/types/type1.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/tensortypes/types/type2.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/default.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/modelSettings.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/referencingModelSettings.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/root.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/someUser.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/types/rootType.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/types/user.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/variants/default.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/variants/inherited.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/variants/main.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/versionrefs/MyProfile-1.0.0.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/versionrefs/MyProfile-1.0.2.a.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/versionrefs/MyProfile-1.0.2.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/versionrefs/default.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/versions/testprofile-1.20.100.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/config/test/versions/testprofile.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/test/CloningTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/test/DimensionBindingTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/test/DumpToolTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/test/QueryFromProfileTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileCloneMicroBenchmark.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileGetInComplexStructureMicroBenchmark.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileGetMicroBenchmark.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileListPropertiesMicroBenchmark.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileSubstitutionTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileVariantsCloneTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileVariantsTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/types/test/FieldTypeTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/types/test/MandatoryTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/types/test/NameTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/types/test/NativePropertiesTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/types/test/OverrideTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/types/test/PatchMatchingTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/types/test/QueryProfileTypeInheritanceTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/types/test/QueryProfileTypeTestCase.java99
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/properties/test/PropertyMapTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/properties/test/RequestContextPropertiesTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/properties/test/SubPropertiesTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/rewrite/RewriterFeaturesTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/rewrite/test/GenericExpansionRewriterTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/rewrite/test/MisspellRewriterTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/rewrite/test/NameRewriterTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/rewrite/test/QueryRewriteSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/rewrite/test/QueryRewriteSearcherTestUtils.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/rewrite/test/SearchChainDispatcherSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/test/ModelTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/test/ParametersTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/test/PresentationTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/test/QueryCloneMicroBenchmark.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/test/RankFeaturesTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/test/RankingTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/textserialize/item/test/ParseItemTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/textserialize/serializer/test/SerializeItemTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/querytransform/BooleanAttributeParserTest.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/querytransform/BooleanSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/querytransform/LowercasingTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/querytransform/TestUtils.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/querytransform/WandSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/querytransform/WeakAndReplacementSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/querytransform/test/NGramSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/querytransform/test/RangeQueryOptimizerTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/querytransform/test/SortingDegraderTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/rendering/AsyncGroupPopulationTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java101
-rw-r--r--container-search/src/test/java/com/yahoo/search/rendering/SyncDefaultRendererTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/rendering/XMLRendererTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/result/DefaultErrorHitTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/result/NanNumberTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/result/PositionsDataTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/result/test/CoverageTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/result/test/DeepHitIteratorTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/result/test/FillingTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/result/test/HitGroupTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchchain/config/test/DependencyConfigTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchchain/config/test/SearchChainConfigurerTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchchain/test/AsyncExecutionOfOneChainTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchchain/test/AsyncExecutionTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchchain/test/ExecutionTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchchain/test/FutureDataTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchchain/test/SearchChainTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchchain/test/SimpleSearchChain.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchchain/test/TraceTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchchain/test/VespaAsyncSearcherTest.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchers/test/CacheControlSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchers/test/ConnectionControlSearcherTestCase.java19
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchers/test/InputCheckingSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchers/test/MockMetric.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchers/test/QueryValidatorTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchers/test/RateLimitingBenchmark.java2
-rwxr-xr-xcontainer-search/src/test/java/com/yahoo/search/searchers/test/RateLimitingSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchers/test/ValidateMatchPhaseSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/statistics/ElapsedTimeTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/statistics/PeakQpsTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/statistics/TimingSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/test/QueryBenchmark.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/test/QueryTestCase.java12
-rw-r--r--container-search/src/test/java/com/yahoo/search/test/RequestParameterPreservationTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/test/ResultBenchmark.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/FieldFilterTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/MinimalQueryInserterTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/UserInputTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/VespaSerializerTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/YqlFieldAndSourceTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/select/SelectTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/text/interpretation/test/AnnotationTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/vespa/streamingvisitors/ListMergerTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/vespa/streamingvisitors/MetricsSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/vespa/streamingvisitors/VdsStreamingSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/vespa/streamingvisitors/VdsVisitorTestCase.java2
-rw-r--r--container-search/src/test/vespa-configdef/config.search.int.def2
-rw-r--r--container-search/src/test/vespa-configdef/config.search.string.def2
-rw-r--r--container-test-jars/OWNERS1
-rw-r--r--container-test-jars/README.md4
-rw-r--r--container-test-jars/bundle-with-provided-bundle/pom.xml49
-rw-r--r--container-test-jars/jersey-resources/pom.xml41
-rw-r--r--container-test-jars/jersey-resources/src/main/java/com/yahoo/container/test/jars/jersey/resources/TestResource.java12
-rw-r--r--container-test-jars/jersey-resources/src/main/java/com/yahoo/container/test/jars/jersey/resources/TestResourceBase.java22
-rw-r--r--container-test-jars/jersey-resources/src/main/java/com/yahoo/container/test/jars/jersey/resources/nestedpackage1/NestedTestResource1.java13
-rw-r--r--container-test-jars/jersey-resources/src/main/java/com/yahoo/container/test/jars/jersey/resources/nestedpackage2/NestedTestResource2.java13
-rw-r--r--container-test-jars/pom.xml28
-rw-r--r--container-test/README.md2
-rw-r--r--container-test/pom.xml2
-rw-r--r--container-test/src/main/javadoc/README1
-rw-r--r--container/README.md2
-rw-r--r--container/pom.xml2
-rw-r--r--container/src/main/javadoc/README1
-rw-r--r--controller-api/pom.xml2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/ApplicationApi.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/ApplicationResource.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/EnvironmentResource.java20
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/ServiceViewResource.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/TenantResource.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/ApplicationReference.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/DeployResult.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/DeploymentData.java29
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/DeploymentReference.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/EndpointStatus.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/InstanceInformation.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/InstanceReference.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/InstancesReply.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/JsonResponse.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/LogEntry.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/ProtonMetrics.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/SubmitOptions.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/SubmitResult.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantCreateOptions.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantInfo.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantMetaData.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantType.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantUpdateOptions.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantWithApplications.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/ConfigChangeActions.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/RefeedAction.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/ReindexAction.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/RestartAction.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/ServiceInfo.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/configserver/Environment.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/configserver/Region.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/configserver/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/ApplicationId.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/DeploymentId.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/EnvironmentId.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/GitBranch.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/GitCommit.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/GitRepository.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/Hostname.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/Identifier.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/InstanceId.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/MetricsType.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/NonDefaultIdentifier.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/Property.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/PropertyId.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/RegionId.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/RevisionId.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/ScrewdriverId.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/SerializedIdentifier.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/TenantId.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/UserGroup.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/UserId.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/LogEntry.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/RunDataStore.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/ServiceRegistry.java4
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/ArchiveBucket.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/ArchiveService.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/MockArchiveService.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AccessControlService.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/ApplicationAction.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AthenzAccessControlService.java10
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AthenzClientFactory.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AthenzClientFactoryMock.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AthenzDbMock.java102
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/MockAccessControlService.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/ZmsClientMock.java106
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/ZtsClientMock.java4
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/CloudEventFetcher.java (renamed from controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/AwsEventFetcher.java)7
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockAwsEventFetcher.java34
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockCloudEventFetcher.java25
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockRoleService.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/NoopRoleService.java7
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/RoleService.java5
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/TenantRoles.java16
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Bill.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingController.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/CollectionMethod.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/CollectionResult.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/CostCalculator.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/InstrumentList.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/InstrumentOwner.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/MockBillingController.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/PaymentInstrument.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Plan.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/PlanId.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/PlanResult.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Quota.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/QuotaCalculator.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateException.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateMetadata.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateMock.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateValidator.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateValidatorImpl.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateValidatorMock.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Application.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ApplicationReindexing.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ApplicationStats.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Cluster.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServer.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServerException.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServerVersion.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/FlagsV1Api.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Load.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Log.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java369
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeFilter.java86
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepoStats.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java212
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/PrepareResponse.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ProxyResponse.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/QuotaUsage.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ServiceConvergence.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/ContainerImage.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/ContainerRegistry.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationStore.java27
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationVersion.java52
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ArtifactRepository.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java12
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/RunId.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/SourceRevision.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/StableOsVersion.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/TestReport.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/TesterCloud.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/AliasTarget.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/LatencyAliasTarget.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/MemoryNameService.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/NameService.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/Record.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/RecordData.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/RecordName.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/WeightedAliasTarget.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/entity/EntityService.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/entity/MemoryEntityService.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/entity/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/horizon/HorizonClient.java12
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/horizon/HorizonResponse.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/horizon/MockHorizonClient.java23
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/horizon/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/Jira.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/JiraComment.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/JiraCreateIssue.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/JiraIssue.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/JiraIssues.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ApplicationData.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ApplicationPatch.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ApplicationStatsData.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ArchiveList.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ArchivePatch.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/Capacity.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ClusterData.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ClusterResourcesData.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ClusterUtilizationData.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/LoadData.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/MaintenanceJobList.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/MaintenanceJobName.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeEnvironment.java11
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeHistory.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeList.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeMembership.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeOwner.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepoStatsData.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepositoryNode.java48
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeState.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeType.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeUpgrade.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/OrchestratorStatus.java15
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ProvisionResource.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/RestartFilter.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ScalingEventData.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/Contact.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/DeploymentIssues.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/Issue.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/IssueHandler.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/IssueId.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockContactRetriever.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockIssueHandler.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/OwnershipIssues.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/SystemMonitor.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/User.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/repair/RepairTicketReport.java7
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/repair/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/ResourceUsage.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/routing/MemoryGlobalRoutingService.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/routing/RotationStatus.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/routing/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/NoopTenantSecretService.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/TenantSecretService.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/TenantSecretStore.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/DummyOwnershipIssues.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/DummySystemMonitor.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/LoggingDeploymentIssues.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockRunDataStore.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockTesterCloud.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockUserManagement.java6
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/user/UserManagement.java3
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequest.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequestClient.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequestSource.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/HostAction.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/MockChangeRequestClient.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/VcmrReport.java (renamed from controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/VCMRReport.java)45
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/VespaChangeRequest.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneRegistry.java6
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/package-info.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java5
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/Policy.java6
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchive.java5
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/AthenzTenant.java (renamed from controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/AthenzTenant.java)2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/CloudTenant.java (renamed from controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/CloudTenant.java)0
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/DeletedTenant.java39
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/LastLoginInfo.java (renamed from controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/LastLoginInfo.java)2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/Tenant.java (renamed from controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/Tenant.java)7
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantInfo.java (renamed from controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantInfo.java)4
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantInfoAddress.java (renamed from controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantInfoAddress.java)0
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantInfoBillingContact.java (renamed from controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantInfoBillingContact.java)0
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/package-info.java (renamed from controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/package-info.java)2
-rw-r--r--controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/identifiers/IdentifierTest.java2
-rw-r--r--controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobTypeTest.java2
-rw-r--r--controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/integration/dns/AliasTargetTest.java2
-rw-r--r--controller-server/pom.xml9
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Application.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java37
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Controller.java10
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Instance.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedApplication.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedTenant.java36
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/NotExistsException.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/TenantController.java60
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ActivateResult.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationActivity.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationList.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/Change.java4
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/Deployment.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentActivity.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentMetrics.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentQuotaCalculator.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/InstanceList.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/QuotaUsage.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/package-info.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackage.java (renamed from controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationPackage.java)9
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageDiff.java112
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageValidator.java (renamed from controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationPackageValidator.java)5
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/LinesComparator.java246
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ZipStreamReader.java (renamed from controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ZipStreamReader.java)34
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/archive/CuratorArchiveBucketDb.java20
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/athenz/HostedAthenzIdentities.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/athenz/config/package-info.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/athenz/impl/AthenzClientFactoryImpl.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/athenz/impl/AthenzFacade.java34
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/certificate/EndpointCertificates.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/concurrent/Once.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentSteps.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java133
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java26
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java66
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobProfile.java6
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/LockedStep.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/NodeList.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/NodeWithServices.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RetriggerEntry.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RetriggerEntrySerializer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/Run.java29
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RunLog.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RunStatus.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/Step.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/StepRunner.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/Versions.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/ZipBuilder.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/package-info.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/dns/CreateRecords.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/dns/NameServiceForwarder.java8
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ApplicationMetaDataGarbageCollector.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ApplicationOwnershipConfirmer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveAccessMaintainer.java64
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveUriUpdater.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeManagementAssessor.java61
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeRequestMaintainer.java20
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTracker.java (renamed from controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventReporter.java)19
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ContactInformationMaintainer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ContainerImageExpirer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintainer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintenance.java11
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentExpirer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentIssueReporter.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentMetricsMaintainer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentUpgrader.java12
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/EndpointCertificateMaintainer.java15
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/HostInfoUpdater.java47
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/InfrastructureUpgrader.java3
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java6
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeScheduler.java15
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgrader.java8
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsVersionStatusUpdater.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ReadyJobsTrigger.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ReindexingTriggerer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java3
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainer.java4
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/RetriggerMaintainer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/SystemRoutingPolicyMaintainer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgrader.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/TenantRoleMaintainer.java24
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/TrafficShareUpdater.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/UserManagementMaintainer.java68
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/VcmrMaintainer.java (renamed from controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/VCMRMaintainer.java)65
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/VersionStatusUpdater.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/package-info.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/metric/CostCalculator.java3
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/notification/Notification.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/notification/NotificationSource.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/notification/NotificationsDb.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/package-info.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java10
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ArchiveBucketsSerializer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/BufferedLogStore.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ChangeRequestSerializer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ConfidenceOverrideSerializer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ControllerVersionSerializer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/EndpointCertificateMetadataSerializer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/JobControlFlags.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/LogSerializer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/MockCuratorDb.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/NotificationsSerializer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionSerializer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionStatusSerializer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionTargetSerializer.java8
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializer.java15
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/SupportAccessSerializer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java44
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/package-info.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ConfigServerRestExecutor.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ConfigServerRestExecutorImpl.java6
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ProxyRequest.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ProxyResponse.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/package-info.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java208
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/EmptyResponse.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java52
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/MultipartParser.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ServiceApiResponse.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/athenz/AthenzApiHandler.java92
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandler.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandlerV2.java21
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/ChangeManagementApiHandler.java12
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/AccessRequestResponse.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiHandler.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/JobsResponse.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/StatsResponse.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/UpgraderResponse.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/BadgeApiHandler.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/Badges.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/filter/ControllerAuthorizationFilter.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/filter/LastLoginUpdateFilter.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/horizon/HorizonApiHandler.java64
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/horizon/TsdbQueryRewriter.java20
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/routing/RoutingApiHandler.java116
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/systemflags/SystemFlagsDeployResult.java10
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/systemflags/SystemFlagsDeployer.java16
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiHandler.java18
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/user/UserFlagsSerializer.java86
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiHandler.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/package-info.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiHandler.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/package-info.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/Rotation.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/RotationId.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/RotationLock.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/RotationRepository.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/RotationState.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/RoutingPolicies.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/security/Auth0Credentials.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/security/CloudAccessControl.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/support/access/SupportAccess.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/support/access/SupportAccessChange.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/support/access/SupportAccessControl.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/support/access/SupportAccessGrant.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tls/ControllerSslContextFactoryProvider.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tls/package-info.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/DeploymentStatistics.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersion.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersionStatus.java3
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersionTarget.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VersionStatus.java3
-rw-r--r--controller-server/src/main/resources/configdefinitions/vespa.hosted.controller.athenz.config.athenz.def2
-rw-r--r--controller-server/src/main/resources/configdefinitions/vespa.hosted.controller.config.controller.def2
-rw-r--r--controller-server/src/main/resources/configdefinitions/vespa.hosted.controller.tls.config.tls.def2
-rw-r--r--controller-server/src/main/resources/configdefinitions/vespa.hosted.rotation.config.rotations.def2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java6
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/DeploymentQuotaCalculatorTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageDiffTest.java128
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageTest.java (renamed from controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/ApplicationPackageTest.java)8
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/pkg/LinesComparatorTest.java112
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/pkg/ZipStreamReaderTest.java (renamed from controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/ZipStreamReaderTest.java)10
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/certificate/EndpointCertificatesTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/concurrent/OnceTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/ApplicationPackageBuilder.java19
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentContext.java16
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java91
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunnerTest.java13
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/QuotaUsageTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/ZipBuilderTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/dns/NameServiceQueueTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ApplicationStoreMock.java57
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ArtifactRepositoryMock.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/AthenzFilterMock.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java84
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerProxyMock.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ContainerRegistryMock.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/MetricsMock.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java356
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/SecretStoreMock.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ServiceRegistryMock.java6
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneRegistryMock.java3
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ApplicationOwnershipConfirmerTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveUriUpdaterTest.java4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeManagementAssessorTest.java92
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeRequestMaintainerTest.java31
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTrackerTest.java (renamed from controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventReporterTest.java)44
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirerTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ContactInformationMaintainerTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ContainerImageExpirerTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintainerTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CostReportMaintainerTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentExpirerTest.java4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentIssueReporterTest.java4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentMetricsMaintainerTest.java4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentUpgraderTest.java24
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/EndpointCertificateMaintainerTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/HostInfoUpdaterTest.java17
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunnerTest.java4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/MetricsReporterTest.java20
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java33
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgraderTest.java15
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsVersionStatusUpdaterTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployerTest.java4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ReindexingTriggererTest.java5
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainerTest.java36
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainerTest.java39
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/RetriggerMaintainerTest.java4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/SystemRoutingPolicyMaintainerTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgraderTest.java9
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/TenantRoleMaintainerTest.java13
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/TrafficShareUpdaterTest.java4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UpgraderTest.java6
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UserManagementMaintainerTest.java46
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/VcmrMaintainerTest.java (renamed from controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/VCMRMaintainerTest.java)55
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/VersionStatusUpdaterTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/notification/NotificationsDbTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java5
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/BufferedLogStoreTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/EndpointCertificateMetadataSerializerTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/LogSerializerTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/NameServiceQueueSerializerTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/NotificationsSerializerTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionSerializerTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionStatusSerializerTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionTargetSerializerTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializerTest.java18
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/SupportAccessSerializerTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java15
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/testdata/run-status.json4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/proxy/ConfigServerRestExecutorImplTest.java5
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/proxy/ProxyRequestTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/proxy/ProxyResponseTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ApplicationRequestToDiscFilterRequestWrapper.java3
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ContainerTester.java1
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ResponseHandlerToApplicationResponseWrapper.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiCloudTest.java64
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java198
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelperTest.java20
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/MultipartParserTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ServiceApiResponseTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-overview.json8
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-aws-us-east-2a-runs.json49
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-overview.json34
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-us-east-1-log-first-part.json2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-us-east-1.json1
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs.json35
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview-user-instance.json4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/staging-runs.json622
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/staging-test-log.json32
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-details.json32
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-log.json32
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/tenant1-deleted.json9
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandlerTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/ChangeManagementApiHandlerTest.java84
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/maintenance.json7
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/BadgeApiTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/filter/ControllerAuthorizationFilterTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/filter/LastLoginUpdateFilterTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/horizon/HorizonApiTest.java64
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/horizon/TsdbQueryRewriterTest.java19
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/os/OsApiTest.java5
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/routing/RoutingApiTest.java15
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/routing/responses/endpoint/endpoints.json31
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/systemflags/SystemFlagsDeployerTest.java4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiOnPremTest.java58
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiTest.java116
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/UserFlagsSerializerTest.java133
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-with-applications-athenz.json4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-with-applications-cloud.json4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-without-applications.json4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-without-trial-capacity-cloud.json4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/rotation/RotationRepositoryTest.java8
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/routing/RoutingPoliciesTest.java4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/tls/Keys.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/tls/SecretStoreMock.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/tls/SecureContainerTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java13
-rw-r--r--default_build_settings.cmake40
-rw-r--r--defaults/CMakeLists.txt4
-rw-r--r--defaults/pom.xml2
-rw-r--r--defaults/src/apps/printdefault/CMakeLists.txt2
-rw-r--r--defaults/src/apps/printdefault/printdefault.cpp2
-rw-r--r--defaults/src/main/java/com/yahoo/vespa/defaults/Defaults.java2
-rw-r--r--defaults/src/main/java/com/yahoo/vespa/defaults/package-info.java2
-rw-r--r--defaults/src/test/java/com/yahoo/vespa/defaults/DefaultsTestCase.java2
-rw-r--r--defaults/src/vespa/CMakeLists.txt2
-rw-r--r--defaults/src/vespa/defaults.cpp2
-rw-r--r--defaults/src/vespa/defaults.h2
-rwxr-xr-xdist.sh2
-rw-r--r--dist/README.md2
-rwxr-xr-xdist/build-rpm.sh2
-rwxr-xr-xdist/getversion.pl2
-rwxr-xr-xdist/release-vespa-rpm.sh48
-rw-r--r--dist/vespa.spec116
-rw-r--r--docker/README.md2
-rwxr-xr-xdocker/build-vespa.sh2
-rwxr-xr-xdocker/build/build-vespa-internal.sh2
-rw-r--r--docproc/CMakeLists.txt2
-rw-r--r--docproc/pom.xml2
-rw-r--r--docproc/src/main/java/com/yahoo/config/docproc/package-info.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/AbstractConcreteDocumentFactory.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/Accesses.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/Call.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/CallStack.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/DocprocExecutor.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/DocprocService.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/DocumentOperationWrapper.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/DocumentProcessor.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/HandledProcessingException.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/Processing.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/ProcessingEndpoint.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/SimpleDocumentProcessor.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/TransientFailureException.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingHandler.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerParameters.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingTask.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/jdisc/RequestContext.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/MbusRequestContext.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/MessageFactory.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/ProcessingFactory.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/ResponseMerger.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/package-info.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/jdisc/metric/NullMetric.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/jdisc/package-info.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/package-info.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocument.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocumentUpdate.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/proxy/SchemaMap.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/util/JoinerDocumentProcessor.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/util/SplitterDocumentProcessor.java2
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/util/package-info.java2
-rw-r--r--docproc/src/main/resources/configdefinitions/config.docproc.docproc.def2
-rw-r--r--docproc/src/main/resources/configdefinitions/config.docproc.schemamapping.def2
-rw-r--r--docproc/src/main/resources/configdefinitions/config.docproc.splitter-joiner-document-processor.def2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/AccessesAnnotationTestCase.java2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/CallStackTestCase.java2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/CallbackTestCase.java2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/DocumentProcessingAbstractTestCase.java2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/EmptyProcessingTestCase.java2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/FailingDocumentProcessingTestCase.java2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/FailingDocumentProcessingWithoutExceptionTestCase.java2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/FailingPermanentlyDocumentProcessingTestCase.java2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/FailingWithErrorTestCase.java2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/IncrementingDocumentProcessor.java2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/NotAcceptingNewProcessingsTestCase.java2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/ProcessingTestCase.java2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/ProcessingUpdateTestCase.java2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/SimpleDocumentProcessingTestCase.java2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/SimpleDocumentProcessorTestCase.java2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/TransientFailureTestCase.java2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerAllMessageTypesTestCase.java4
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerBasicTestCase.java2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerForkTestCase.java2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerTestBase.java23
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerTransformingMessagesTestCase.java2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/proxy/SchemaMappingAndAccessesTest.java2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/util/SplitterJoinerTestCase.java2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/util/docindoc.sd2
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/util/outerdoc.sd2
-rw-r--r--docproc/src/test/vespa-configdef/config.docproc.string.def2
-rw-r--r--docprocs/CMakeLists.txt2
-rw-r--r--docprocs/pom.xml2
-rw-r--r--docprocs/src/main/java/com/yahoo/docprocs/indexing/DocumentScript.java2
-rw-r--r--docprocs/src/main/java/com/yahoo/docprocs/indexing/FastLogger.java2
-rw-r--r--docprocs/src/main/java/com/yahoo/docprocs/indexing/IndexingProcessor.java9
-rw-r--r--docprocs/src/main/java/com/yahoo/docprocs/indexing/ScriptManager.java26
-rw-r--r--docprocs/src/test/java/com/yahoo/docprocs/indexing/DocumentScriptTestCase.java2
-rw-r--r--docprocs/src/test/java/com/yahoo/docprocs/indexing/IndexingProcessorTestCase.java6
-rw-r--r--docprocs/src/test/java/com/yahoo/docprocs/indexing/ScriptManagerTestCase.java15
-rw-r--r--document/CMakeLists.txt2
-rw-r--r--document/doc/document-format.html2
-rw-r--r--document/pom.xml2
-rw-r--r--document/src/main/java/com/yahoo/document/ArrayDataType.java2
-rwxr-xr-xdocument/src/main/java/com/yahoo/document/BaseStructDataType.java2
-rw-r--r--document/src/main/java/com/yahoo/document/BucketDistribution.java2
-rwxr-xr-xdocument/src/main/java/com/yahoo/document/BucketId.java2
-rw-r--r--document/src/main/java/com/yahoo/document/BucketIdFactory.java2
-rw-r--r--document/src/main/java/com/yahoo/document/CollectionDataType.java2
-rw-r--r--document/src/main/java/com/yahoo/document/CompressionConfig.java2
-rw-r--r--document/src/main/java/com/yahoo/document/DataType.java2
-rw-r--r--document/src/main/java/com/yahoo/document/DataTypeName.java6
-rw-r--r--document/src/main/java/com/yahoo/document/Document.java2
-rw-r--r--document/src/main/java/com/yahoo/document/DocumentCalculator.java2
-rw-r--r--document/src/main/java/com/yahoo/document/DocumentGet.java2
-rw-r--r--document/src/main/java/com/yahoo/document/DocumentId.java2
-rw-r--r--document/src/main/java/com/yahoo/document/DocumentOperation.java2
-rw-r--r--document/src/main/java/com/yahoo/document/DocumentPut.java2
-rw-r--r--document/src/main/java/com/yahoo/document/DocumentRemove.java2
-rwxr-xr-xdocument/src/main/java/com/yahoo/document/DocumentType.java2
-rw-r--r--document/src/main/java/com/yahoo/document/DocumentTypeId.java2
-rw-r--r--document/src/main/java/com/yahoo/document/DocumentTypeManager.java2
-rw-r--r--document/src/main/java/com/yahoo/document/DocumentTypeManagerConfigurer.java2
-rw-r--r--document/src/main/java/com/yahoo/document/DocumentUpdate.java2
-rw-r--r--document/src/main/java/com/yahoo/document/DocumentUtil.java2
-rw-r--r--document/src/main/java/com/yahoo/document/ExtendedField.java2
-rw-r--r--document/src/main/java/com/yahoo/document/ExtendedStringField.java2
-rw-r--r--document/src/main/java/com/yahoo/document/Field.java2
-rwxr-xr-xdocument/src/main/java/com/yahoo/document/FieldPath.java2
-rwxr-xr-xdocument/src/main/java/com/yahoo/document/FieldPathEntry.java2
-rw-r--r--document/src/main/java/com/yahoo/document/FixedBucketSpaces.java2
-rw-r--r--document/src/main/java/com/yahoo/document/Generated.java2
-rw-r--r--document/src/main/java/com/yahoo/document/GlobalId.java2
-rw-r--r--document/src/main/java/com/yahoo/document/MapDataType.java2
-rw-r--r--document/src/main/java/com/yahoo/document/NumericDataType.java2
-rw-r--r--document/src/main/java/com/yahoo/document/PositionDataType.java2
-rw-r--r--document/src/main/java/com/yahoo/document/PrimitiveDataType.java2
-rw-r--r--document/src/main/java/com/yahoo/document/ReferenceDataType.java2
-rw-r--r--document/src/main/java/com/yahoo/document/SimpleDocument.java2
-rw-r--r--document/src/main/java/com/yahoo/document/StructDataType.java2
-rw-r--r--document/src/main/java/com/yahoo/document/StructuredDataType.java2
-rw-r--r--document/src/main/java/com/yahoo/document/TemporaryDataType.java2
-rw-r--r--document/src/main/java/com/yahoo/document/TemporaryStructuredDataType.java2
-rw-r--r--document/src/main/java/com/yahoo/document/TensorDataType.java5
-rw-r--r--document/src/main/java/com/yahoo/document/TestAndSetCondition.java2
-rw-r--r--document/src/main/java/com/yahoo/document/WeightedSetDataType.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/AlternateSpanList.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/Annotation.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/AnnotationContainer.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/AnnotationReference.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/AnnotationReferenceDataType.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/AnnotationType.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/AnnotationType2AnnotationContainer.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/AnnotationTypeRegistry.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/AnnotationTypes.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/DummySpanNode.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/InvalidatingIterator.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/IteratingAnnotationContainer.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/ListAnnotationContainer.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/PeekableListIterator.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/RecursiveNodeIterator.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/SerialIterator.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/Span.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/SpanList.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/SpanNode.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/SpanNode2AnnotationContainer.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/SpanNodeParent.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/SpanTree.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/SpanTrees.java2
-rw-r--r--document/src/main/java/com/yahoo/document/annotation/package-info.java2
-rw-r--r--document/src/main/java/com/yahoo/document/config/package-info.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/Array.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/BoolFieldValue.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/ByteFieldValue.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/CollectionFieldValue.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/CompositeFieldValue.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/DoubleFieldValue.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/FieldPathIteratorHandler.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/FieldValue.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/Float16FieldValue.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/FloatFieldValue.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/IntegerFieldValue.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/LongFieldValue.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/MapFieldValue.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/NumericFieldValue.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/PredicateFieldValue.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/Raw.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/ReferenceFieldValue.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/StringFieldValue.java3
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/Struct.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/StructuredFieldValue.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/TensorFieldValue.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/UriFieldValue.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/WeightedSet.java2
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/package-info.java2
-rw-r--r--document/src/main/java/com/yahoo/document/fieldpathupdate/AddFieldPathUpdate.java5
-rw-r--r--document/src/main/java/com/yahoo/document/fieldpathupdate/AssignFieldPathUpdate.java2
-rw-r--r--document/src/main/java/com/yahoo/document/fieldpathupdate/FieldPathUpdate.java2
-rw-r--r--document/src/main/java/com/yahoo/document/fieldpathupdate/RemoveFieldPathUpdate.java2
-rw-r--r--document/src/main/java/com/yahoo/document/fieldpathupdate/package-info.java2
-rw-r--r--document/src/main/java/com/yahoo/document/fieldset/AllFields.java2
-rw-r--r--document/src/main/java/com/yahoo/document/fieldset/DocIdOnly.java2
-rw-r--r--document/src/main/java/com/yahoo/document/fieldset/FieldCollection.java2
-rw-r--r--document/src/main/java/com/yahoo/document/fieldset/FieldSet.java2
-rw-r--r--document/src/main/java/com/yahoo/document/fieldset/FieldSetRepo.java2
-rw-r--r--document/src/main/java/com/yahoo/document/fieldset/NoFields.java2
-rw-r--r--document/src/main/java/com/yahoo/document/fieldset/package-info.java2
-rw-r--r--document/src/main/java/com/yahoo/document/idstring/IdIdString.java2
-rw-r--r--document/src/main/java/com/yahoo/document/idstring/IdString.java2
-rw-r--r--document/src/main/java/com/yahoo/document/idstring/package-info.java2
-rw-r--r--document/src/main/java/com/yahoo/document/json/DocumentOperationType.java2
-rw-r--r--document/src/main/java/com/yahoo/document/json/DocumentUpdateJsonSerializer.java2
-rw-r--r--document/src/main/java/com/yahoo/document/json/JsonFeedReader.java2
-rw-r--r--document/src/main/java/com/yahoo/document/json/JsonReader.java2
-rw-r--r--document/src/main/java/com/yahoo/document/json/JsonReaderException.java2
-rw-r--r--document/src/main/java/com/yahoo/document/json/JsonSerializationHelper.java2
-rw-r--r--document/src/main/java/com/yahoo/document/json/JsonWriter.java2
-rw-r--r--document/src/main/java/com/yahoo/document/json/TokenBuffer.java2
-rw-r--r--document/src/main/java/com/yahoo/document/json/document/DocumentParser.java2
-rw-r--r--document/src/main/java/com/yahoo/document/json/package-info.java2
-rw-r--r--document/src/main/java/com/yahoo/document/json/readers/AddRemoveCreator.java2
-rw-r--r--document/src/main/java/com/yahoo/document/json/readers/ArrayReader.java2
-rw-r--r--document/src/main/java/com/yahoo/document/json/readers/CompositeReader.java2
-rw-r--r--document/src/main/java/com/yahoo/document/json/readers/DocumentParseInfo.java2
-rw-r--r--document/src/main/java/com/yahoo/document/json/readers/JsonParserHelpers.java2
-rw-r--r--document/src/main/java/com/yahoo/document/json/readers/MapReader.java2
-rw-r--r--document/src/main/java/com/yahoo/document/json/readers/SingleValueReader.java2
-rw-r--r--document/src/main/java/com/yahoo/document/json/readers/StructReader.java2
-rw-r--r--document/src/main/java/com/yahoo/document/json/readers/TensorReader.java6
-rw-r--r--document/src/main/java/com/yahoo/document/json/readers/VespaJsonDocumentReader.java2
-rw-r--r--document/src/main/java/com/yahoo/document/json/readers/WeightedSetReader.java2
-rw-r--r--document/src/main/java/com/yahoo/document/package-info.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/BucketSelector.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/BucketSet.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/Context.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/DocumentSelector.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/NowCheckVisitor.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/Result.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/ResultList.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/Visitor.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/convert/NowQueryExpression.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/convert/NowQueryNode.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/convert/SelectionExpressionConverter.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/convert/package-info.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/package-info.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/parser/SelectInput.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/parser/SelectParserUtils.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/parser/package-info.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/ArithmeticNode.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/AttributeNode.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/ComparisonNode.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/DocumentNode.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/EmbracedNode.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/ExpressionNode.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/IdNode.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/LiteralNode.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/LogicNode.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/NegationNode.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/NowNode.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/VariableNode.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/rule/package-info.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/simple/IdSpecParser.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/simple/IntegerParser.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/simple/OperatorParser.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/simple/Parser.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/simple/SelectionParser.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/simple/StringParser.java2
-rw-r--r--document/src/main/java/com/yahoo/document/select/simple/package-info.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/AnnotationReader.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/AnnotationWriter.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/DeserializationException.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/DocumentDeserializer.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/DocumentDeserializerFactory.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/DocumentReader.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/DocumentSerializer.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/DocumentSerializerFactory.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/DocumentUpdateFlags.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/DocumentUpdateReader.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/DocumentUpdateWriter.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/DocumentWriter.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/FieldReader.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/FieldWriter.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/SerializationException.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/SpanNodeReader.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/SpanNodeWriter.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/SpanTreeReader.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/SpanTreeWriter.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer6.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializerHead.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer6.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializerHead.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/XmlDocumentWriter.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/XmlSerializationHelper.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/XmlStream.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/package-info.java2
-rw-r--r--document/src/main/java/com/yahoo/document/update/AddValueUpdate.java2
-rw-r--r--document/src/main/java/com/yahoo/document/update/ArithmeticValueUpdate.java2
-rw-r--r--document/src/main/java/com/yahoo/document/update/AssignValueUpdate.java2
-rw-r--r--document/src/main/java/com/yahoo/document/update/ClearValueUpdate.java2
-rw-r--r--document/src/main/java/com/yahoo/document/update/FieldUpdate.java2
-rw-r--r--document/src/main/java/com/yahoo/document/update/MapValueUpdate.java2
-rw-r--r--document/src/main/java/com/yahoo/document/update/RemoveValueUpdate.java2
-rw-r--r--document/src/main/java/com/yahoo/document/update/ValueUpdate.java2
-rw-r--r--document/src/main/java/com/yahoo/document/update/package-info.java2
-rw-r--r--document/src/main/java/com/yahoo/vespaxmlparser/FeedReader.java2
-rw-r--r--document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLDocumentReader.java2
-rw-r--r--document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLFeedReader.java2
-rw-r--r--document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLFieldReader.java2
-rw-r--r--document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLReader.java2
-rw-r--r--document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLUpdateReader.java2
-rw-r--r--document/src/main/java/com/yahoo/vespaxmlparser/package-info.java2
-rwxr-xr-xdocument/src/main/javacc/SelectParser.jj2
-rw-r--r--document/src/test/java/com/yahoo/document/BucketIdFactoryTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/DataTypeNameTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/DataTypeTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/DocInDocTestCase.java2
-rwxr-xr-xdocument/src/test/java/com/yahoo/document/DocumentCalculatorTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/DocumentIdTestCase.java2
-rwxr-xr-xdocument/src/test/java/com/yahoo/document/DocumentPathUpdateTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/DocumentRemoveTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/DocumentSerializationTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/DocumentTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/DocumentTestCaseBase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/DocumentTypeIdTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/DocumentTypeManagerTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/DocumentTypeTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/DocumentUpdateTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/FieldPathEntryTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/FieldTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/GlobalIdTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/IdIdStringTest.java2
-rw-r--r--document/src/test/java/com/yahoo/document/IncompatibleFieldTypesTest.java2
-rw-r--r--document/src/test/java/com/yahoo/document/NumericDataTypeTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/PositionTypeTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/ReferenceDataTypeTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/SimpleDocumentTestCase.java2
-rwxr-xr-xdocument/src/test/java/com/yahoo/document/StructDataTypeTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/TemporaryDataTypeTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/TemporaryStructuredDataTypeTestCase.java2
-rwxr-xr-xdocument/src/test/java/com/yahoo/document/annotation/AbstractTypesTest.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/AlternateSpanListAdvTestCase.java2
-rwxr-xr-xdocument/src/test/java/com/yahoo/document/annotation/AlternateSpanListTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/AnnotationTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/AnnotationTypeRegistryTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/AnnotationTypeTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/AnnotationTypesTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/Bug4155865TestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/Bug4164299TestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/Bug4259784TestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/Bug4261985TestCase.java2
-rwxr-xr-xdocument/src/test/java/com/yahoo/document/annotation/Bug4475379TestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/Bug6394548TestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/Bug6425939TestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/DocTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/DummySpanNodeTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/IndexKeyAnnotationTypeSpanTreeAdvTest.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/IndexKeyAnnotationTypeSpanTreeTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/IndexKeySpanNodeSpanTreeAdvTest.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/IndexKeySpanNodeSpanTreeTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/IndexKeySpanTreeTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/PeekableListIteratorTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/SpanListAdvTestCase.java2
-rwxr-xr-xdocument/src/test/java/com/yahoo/document/annotation/SpanListTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/SpanNodeAdvTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/SpanNodeTestCase.java2
-rwxr-xr-xdocument/src/test/java/com/yahoo/document/annotation/SpanTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/annotation/SpanTreeAdvTest.java2
-rwxr-xr-xdocument/src/test/java/com/yahoo/document/annotation/SpanTreeTestCase.java2
-rwxr-xr-xdocument/src/test/java/com/yahoo/document/annotation/SystemTestCase.java2
-rwxr-xr-xdocument/src/test/java/com/yahoo/document/datatypes/ArrayTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/datatypes/MapTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/datatypes/NumericFieldValueTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/datatypes/PredicateFieldValueTest.java2
-rw-r--r--document/src/test/java/com/yahoo/document/datatypes/RawTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/datatypes/ReferenceFieldValueTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/datatypes/StringFieldValueTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/datatypes/StringTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/datatypes/StructTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/datatypes/TensorFieldValueTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/datatypes/UriFieldValueTest.java2
-rw-r--r--document/src/test/java/com/yahoo/document/datatypes/WeightedSetTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/datatypes/blog.sd2
-rw-r--r--document/src/test/java/com/yahoo/document/datatypes/documentmanager.blog.sd2
-rw-r--r--document/src/test/java/com/yahoo/document/docindoc.sd2
-rw-r--r--document/src/test/java/com/yahoo/document/fieldset/FieldSetTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/json/DocumentUpdateJsonSerializerTest.java2
-rw-r--r--document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java27
-rw-r--r--document/src/test/java/com/yahoo/document/json/JsonWriterTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/outerdoc.sd2
-rw-r--r--document/src/test/java/com/yahoo/document/select/BucketSelectorTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/select/DocumentSelectorTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/serialization/PredicateFieldValueSerializationTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/serialization/ReferenceFieldValueSerializationTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/serialization/SerializationHelperTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/serialization/SerializationTestUtils.java2
-rw-r--r--document/src/test/java/com/yahoo/document/serialization/SerializeAnnotationsTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/serialization/TensorFieldValueSerializationTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/serialization/TestDocumentFactory.java2
-rw-r--r--document/src/test/java/com/yahoo/document/serialization/VespaDocumentSerializerTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/serialization/XmlDocumentWriterTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/serialization/XmlStreamTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/update/FieldUpdateTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/update/SerializationTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/document/update/ValueUpdateTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/vespaxmlparser/PositionParserTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/vespaxmlparser/UriParserTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/vespaxmlparser/VespaXMLReaderTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/vespaxmlparser/VespaXmlFieldReaderTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/vespaxmlparser/VespaXmlUpdateReaderTestCase.java2
-rw-r--r--document/src/test/java/com/yahoo/vespaxmlparser/XMLNumericFieldErrorMsgTestCase.java2
-rw-r--r--document/src/test/vespaxmlparser/test01.xml2
-rw-r--r--document/src/test/vespaxmlparser/test02.xml2
-rw-r--r--document/src/test/vespaxmlparser/test03.xml2
-rw-r--r--document/src/test/vespaxmlparser/test04.xml2
-rw-r--r--document/src/test/vespaxmlparser/test05.xml2
-rw-r--r--document/src/test/vespaxmlparser/test06.xml2
-rw-r--r--document/src/test/vespaxmlparser/test07.xml2
-rw-r--r--document/src/test/vespaxmlparser/test08.xml2
-rw-r--r--document/src/test/vespaxmlparser/test09.xml2
-rw-r--r--document/src/test/vespaxmlparser/test10.xml2
-rw-r--r--document/src/test/vespaxmlparser/test12.xml2
-rw-r--r--document/src/test/vespaxmlparser/test13.xml2
-rw-r--r--document/src/test/vespaxmlparser/testXMLfile.xml2
-rw-r--r--document/src/test/vespaxmlparser/test_docindoc.xml2
-rw-r--r--document/src/test/vespaxmlparser/test_position.xml2
-rw-r--r--document/src/test/vespaxmlparser/test_uri.xml2
-rw-r--r--document/src/test/vespaxmlparser/test_url.xml2
-rw-r--r--document/src/test/vespaxmlparser/testalltypes.xml2
-rw-r--r--document/src/test/vespaxmlparser/testandset.xml2
-rw-r--r--document/src/test/vespaxmlparser/testmapnokey.xml2
-rw-r--r--document/src/test/vespaxmlparser/testmapnovalue.xml2
-rw-r--r--document/src/tests/CMakeLists.txt2
-rw-r--r--document/src/tests/annotation/CMakeLists.txt2
-rw-r--r--document/src/tests/annotation/annotation_test.cpp2
-rw-r--r--document/src/tests/arrayfieldvaluetest.cpp2
-rw-r--r--document/src/tests/base/CMakeLists.txt2
-rw-r--r--document/src/tests/base/documentid_benchmark.cpp2
-rw-r--r--document/src/tests/base/documentid_test.cpp2
-rw-r--r--document/src/tests/bucketselectortest.cpp2
-rw-r--r--document/src/tests/buckettest.cpp2
-rw-r--r--document/src/tests/datatype/CMakeLists.txt2
-rw-r--r--document/src/tests/datatype/datatype_test.cpp2
-rw-r--r--document/src/tests/datatype/referencedatatype_test.cpp2
-rw-r--r--document/src/tests/document_type_repo_factory/CMakeLists.txt2
-rw-r--r--document/src/tests/document_type_repo_factory/document_type_repo_factory_test.cpp2
-rw-r--r--document/src/tests/documentcalculatortestcase.cpp2
-rw-r--r--document/src/tests/documentidtest.cpp2
-rw-r--r--document/src/tests/documentselectparsertest.cpp2
-rw-r--r--document/src/tests/documenttestcase.cpp2
-rw-r--r--document/src/tests/documenttypetestcase.cpp2
-rw-r--r--document/src/tests/documentupdatetestcase.cpp2
-rw-r--r--document/src/tests/feed_reject_helper_test.cpp2
-rw-r--r--document/src/tests/fieldpathupdatetestcase.cpp2
-rw-r--r--document/src/tests/fieldsettest.cpp2
-rw-r--r--document/src/tests/fieldvalue/CMakeLists.txt2
-rw-r--r--document/src/tests/fieldvalue/document_test.cpp2
-rw-r--r--document/src/tests/fieldvalue/fieldvalue_test.cpp2
-rw-r--r--document/src/tests/fieldvalue/predicatefieldvalue_test.cpp2
-rw-r--r--document/src/tests/fieldvalue/referencefieldvalue_test.cpp2
-rw-r--r--document/src/tests/fixed_bucket_spaces_test.cpp2
-rw-r--r--document/src/tests/forcelinktest.cpp2
-rw-r--r--document/src/tests/gid_filter_test.cpp2
-rw-r--r--document/src/tests/globalidtest.cpp2
-rw-r--r--document/src/tests/positiontypetest.cpp2
-rw-r--r--document/src/tests/predicate/CMakeLists.txt2
-rw-r--r--document/src/tests/predicate/predicate_builder_test.cpp2
-rw-r--r--document/src/tests/predicate/predicate_printer_test.cpp2
-rw-r--r--document/src/tests/predicate/predicate_test.cpp2
-rw-r--r--document/src/tests/primitivefieldvaluetest.cpp2
-rw-r--r--document/src/tests/repo/CMakeLists.txt2
-rw-r--r--document/src/tests/repo/documenttyperepo_test.cpp2
-rw-r--r--document/src/tests/select/CMakeLists.txt2
-rw-r--r--document/src/tests/select/select_test.cpp2
-rw-r--r--document/src/tests/serialization/CMakeLists.txt2
-rw-r--r--document/src/tests/serialization/annotationserializer_test.cpp2
-rw-r--r--document/src/tests/serialization/vespadocumentserializer_test.cpp2
-rw-r--r--document/src/tests/stringtokenizertest.cpp2
-rw-r--r--document/src/tests/struct_anno/CMakeLists.txt2
-rw-r--r--document/src/tests/struct_anno/struct_anno_test.cpp2
-rw-r--r--document/src/tests/structfieldvaluetest.cpp2
-rw-r--r--document/src/tests/tensor_fieldvalue/CMakeLists.txt2
-rw-r--r--document/src/tests/tensor_fieldvalue/partial_add/CMakeLists.txt2
-rw-r--r--document/src/tests/tensor_fieldvalue/partial_add/partial_add_test.cpp2
-rw-r--r--document/src/tests/tensor_fieldvalue/partial_modify/CMakeLists.txt2
-rw-r--r--document/src/tests/tensor_fieldvalue/partial_modify/partial_modify_test.cpp2
-rw-r--r--document/src/tests/tensor_fieldvalue/partial_remove/CMakeLists.txt2
-rw-r--r--document/src/tests/tensor_fieldvalue/partial_remove/partial_remove_test.cpp2
-rw-r--r--document/src/tests/tensor_fieldvalue/tensor_fieldvalue_test.cpp2
-rw-r--r--document/src/tests/testbytebuffer.cpp2
-rw-r--r--document/src/tests/testdocmantest.cpp2
-rw-r--r--document/src/tests/teststringutil.cpp2
-rw-r--r--document/src/tests/testxml.cpp2
-rw-r--r--document/src/tests/urltypetest.cpp2
-rw-r--r--document/src/tests/vespaxml/fieldpathupdates.xml2
-rw-r--r--document/src/tests/weightedsetfieldvaluetest.cpp2
-rw-r--r--document/src/vespa/document/CMakeLists.txt2
-rw-r--r--document/src/vespa/document/annotation/CMakeLists.txt2
-rw-r--r--document/src/vespa/document/annotation/alternatespanlist.cpp2
-rw-r--r--document/src/vespa/document/annotation/alternatespanlist.h2
-rw-r--r--document/src/vespa/document/annotation/annotation.cpp2
-rw-r--r--document/src/vespa/document/annotation/annotation.h2
-rw-r--r--document/src/vespa/document/annotation/span.cpp2
-rw-r--r--document/src/vespa/document/annotation/span.h2
-rw-r--r--document/src/vespa/document/annotation/spanlist.cpp2
-rw-r--r--document/src/vespa/document/annotation/spanlist.h2
-rw-r--r--document/src/vespa/document/annotation/spannode.cpp2
-rw-r--r--document/src/vespa/document/annotation/spannode.h2
-rw-r--r--document/src/vespa/document/annotation/spantree.cpp2
-rw-r--r--document/src/vespa/document/annotation/spantree.h2
-rw-r--r--document/src/vespa/document/annotation/spantreevisitor.h2
-rw-r--r--document/src/vespa/document/base/CMakeLists.txt2
-rw-r--r--document/src/vespa/document/base/documentcalculator.cpp2
-rw-r--r--document/src/vespa/document/base/documentcalculator.h2
-rw-r--r--document/src/vespa/document/base/documentid.cpp2
-rw-r--r--document/src/vespa/document/base/documentid.h2
-rw-r--r--document/src/vespa/document/base/exceptions.cpp2
-rw-r--r--document/src/vespa/document/base/exceptions.h2
-rw-r--r--document/src/vespa/document/base/field.cpp2
-rw-r--r--document/src/vespa/document/base/field.h2
-rw-r--r--document/src/vespa/document/base/fieldpath.cpp2
-rw-r--r--document/src/vespa/document/base/fieldpath.h2
-rw-r--r--document/src/vespa/document/base/forcelink.cpp2
-rw-r--r--document/src/vespa/document/base/forcelink.h2
-rw-r--r--document/src/vespa/document/base/globalid.cpp2
-rw-r--r--document/src/vespa/document/base/globalid.h2
-rw-r--r--document/src/vespa/document/base/idstring.cpp2
-rw-r--r--document/src/vespa/document/base/idstring.h2
-rw-r--r--document/src/vespa/document/base/idstringexception.h2
-rw-r--r--document/src/vespa/document/base/testdocman.cpp2
-rw-r--r--document/src/vespa/document/base/testdocman.h2
-rw-r--r--document/src/vespa/document/base/testdocrepo.cpp2
-rw-r--r--document/src/vespa/document/base/testdocrepo.h2
-rw-r--r--document/src/vespa/document/bucket/CMakeLists.txt2
-rw-r--r--document/src/vespa/document/bucket/bucket.cpp2
-rw-r--r--document/src/vespa/document/bucket/bucket.h2
-rw-r--r--document/src/vespa/document/bucket/bucketid.cpp2
-rw-r--r--document/src/vespa/document/bucket/bucketid.h2
-rw-r--r--document/src/vespa/document/bucket/bucketidfactory.cpp2
-rw-r--r--document/src/vespa/document/bucket/bucketidfactory.h2
-rw-r--r--document/src/vespa/document/bucket/bucketidlist.cpp2
-rw-r--r--document/src/vespa/document/bucket/bucketidlist.h2
-rw-r--r--document/src/vespa/document/bucket/bucketselector.cpp2
-rw-r--r--document/src/vespa/document/bucket/bucketselector.h2
-rw-r--r--document/src/vespa/document/bucket/bucketspace.cpp2
-rw-r--r--document/src/vespa/document/bucket/bucketspace.h2
-rw-r--r--document/src/vespa/document/bucket/fixed_bucket_spaces.cpp2
-rw-r--r--document/src/vespa/document/bucket/fixed_bucket_spaces.h2
-rw-r--r--document/src/vespa/document/config/CMakeLists.txt2
-rw-r--r--document/src/vespa/document/config/documentmanager.def2
-rw-r--r--document/src/vespa/document/config/documenttypes.def2
-rw-r--r--document/src/vespa/document/datatype/CMakeLists.txt2
-rw-r--r--document/src/vespa/document/datatype/annotationreferencedatatype.cpp2
-rw-r--r--document/src/vespa/document/datatype/annotationreferencedatatype.h2
-rw-r--r--document/src/vespa/document/datatype/annotationtype.cpp2
-rw-r--r--document/src/vespa/document/datatype/annotationtype.h2
-rw-r--r--document/src/vespa/document/datatype/arraydatatype.cpp2
-rw-r--r--document/src/vespa/document/datatype/arraydatatype.h2
-rw-r--r--document/src/vespa/document/datatype/collectiondatatype.cpp2
-rw-r--r--document/src/vespa/document/datatype/collectiondatatype.h2
-rw-r--r--document/src/vespa/document/datatype/datatype.cpp2
-rw-r--r--document/src/vespa/document/datatype/datatype.h2
-rw-r--r--document/src/vespa/document/datatype/datatypes.h2
-rw-r--r--document/src/vespa/document/datatype/documenttype.cpp2
-rw-r--r--document/src/vespa/document/datatype/documenttype.h2
-rw-r--r--document/src/vespa/document/datatype/mapdatatype.cpp2
-rw-r--r--document/src/vespa/document/datatype/mapdatatype.h2
-rw-r--r--document/src/vespa/document/datatype/numericdatatype.cpp2
-rw-r--r--document/src/vespa/document/datatype/numericdatatype.h2
-rw-r--r--document/src/vespa/document/datatype/positiondatatype.cpp2
-rw-r--r--document/src/vespa/document/datatype/positiondatatype.h2
-rw-r--r--document/src/vespa/document/datatype/primitivedatatype.cpp2
-rw-r--r--document/src/vespa/document/datatype/primitivedatatype.h2
-rw-r--r--document/src/vespa/document/datatype/referencedatatype.cpp2
-rw-r--r--document/src/vespa/document/datatype/referencedatatype.h2
-rw-r--r--document/src/vespa/document/datatype/structdatatype.cpp2
-rw-r--r--document/src/vespa/document/datatype/structdatatype.h2
-rw-r--r--document/src/vespa/document/datatype/structureddatatype.cpp2
-rw-r--r--document/src/vespa/document/datatype/structureddatatype.h2
-rw-r--r--document/src/vespa/document/datatype/urldatatype.cpp2
-rw-r--r--document/src/vespa/document/datatype/urldatatype.h2
-rw-r--r--document/src/vespa/document/datatype/weightedsetdatatype.cpp2
-rw-r--r--document/src/vespa/document/datatype/weightedsetdatatype.h2
-rw-r--r--document/src/vespa/document/document.h2
-rw-r--r--document/src/vespa/document/fieldset/CMakeLists.txt2
-rw-r--r--document/src/vespa/document/fieldset/fieldset.h2
-rw-r--r--document/src/vespa/document/fieldset/fieldsetrepo.cpp2
-rw-r--r--document/src/vespa/document/fieldset/fieldsetrepo.h2
-rw-r--r--document/src/vespa/document/fieldset/fieldsets.cpp2
-rw-r--r--document/src/vespa/document/fieldset/fieldsets.h2
-rw-r--r--document/src/vespa/document/fieldvalue/CMakeLists.txt2
-rw-r--r--document/src/vespa/document/fieldvalue/annotationreferencefieldvalue.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/annotationreferencefieldvalue.h2
-rw-r--r--document/src/vespa/document/fieldvalue/arrayfieldvalue.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/arrayfieldvalue.h2
-rw-r--r--document/src/vespa/document/fieldvalue/boolfieldvalue.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/boolfieldvalue.h2
-rw-r--r--document/src/vespa/document/fieldvalue/bytefieldvalue.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/bytefieldvalue.h2
-rw-r--r--document/src/vespa/document/fieldvalue/collectionfieldvalue.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/collectionfieldvalue.h2
-rw-r--r--document/src/vespa/document/fieldvalue/document.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/document.h2
-rw-r--r--document/src/vespa/document/fieldvalue/doublefieldvalue.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/doublefieldvalue.h2
-rw-r--r--document/src/vespa/document/fieldvalue/fieldvalue.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/fieldvalue.h2
-rw-r--r--document/src/vespa/document/fieldvalue/fieldvalues.h2
-rw-r--r--document/src/vespa/document/fieldvalue/fieldvaluevisitor.h2
-rw-r--r--document/src/vespa/document/fieldvalue/fieldvaluewriter.h2
-rw-r--r--document/src/vespa/document/fieldvalue/floatfieldvalue.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/floatfieldvalue.h2
-rw-r--r--document/src/vespa/document/fieldvalue/intfieldvalue.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/intfieldvalue.h2
-rw-r--r--document/src/vespa/document/fieldvalue/iteratorhandler.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/iteratorhandler.h2
-rw-r--r--document/src/vespa/document/fieldvalue/literalfieldvalue.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/literalfieldvalue.h2
-rw-r--r--document/src/vespa/document/fieldvalue/literalfieldvalue.hpp2
-rw-r--r--document/src/vespa/document/fieldvalue/longfieldvalue.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/longfieldvalue.h2
-rw-r--r--document/src/vespa/document/fieldvalue/mapfieldvalue.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/mapfieldvalue.h2
-rw-r--r--document/src/vespa/document/fieldvalue/modificationstatus.h2
-rw-r--r--document/src/vespa/document/fieldvalue/numericfieldvalue.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/numericfieldvalue.h2
-rw-r--r--document/src/vespa/document/fieldvalue/numericfieldvalue.hpp2
-rw-r--r--document/src/vespa/document/fieldvalue/predicatefieldvalue.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/predicatefieldvalue.h2
-rw-r--r--document/src/vespa/document/fieldvalue/rawfieldvalue.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/rawfieldvalue.h2
-rw-r--r--document/src/vespa/document/fieldvalue/referencefieldvalue.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/referencefieldvalue.h2
-rw-r--r--document/src/vespa/document/fieldvalue/serializablearray.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/serializablearray.h2
-rw-r--r--document/src/vespa/document/fieldvalue/shortfieldvalue.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/shortfieldvalue.h2
-rw-r--r--document/src/vespa/document/fieldvalue/stringfieldvalue.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/stringfieldvalue.h2
-rw-r--r--document/src/vespa/document/fieldvalue/structfieldvalue.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/structfieldvalue.h2
-rw-r--r--document/src/vespa/document/fieldvalue/structuredcache.h2
-rw-r--r--document/src/vespa/document/fieldvalue/structuredfieldvalue.cpp4
-rw-r--r--document/src/vespa/document/fieldvalue/structuredfieldvalue.h2
-rw-r--r--document/src/vespa/document/fieldvalue/structuredfieldvalue.hpp2
-rw-r--r--document/src/vespa/document/fieldvalue/tensorfieldvalue.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/tensorfieldvalue.h2
-rw-r--r--document/src/vespa/document/fieldvalue/variablemap.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/variablemap.h2
-rw-r--r--document/src/vespa/document/fieldvalue/weightedsetfieldvalue.cpp2
-rw-r--r--document/src/vespa/document/fieldvalue/weightedsetfieldvalue.h2
-rw-r--r--document/src/vespa/document/predicate/CMakeLists.txt2
-rw-r--r--document/src/vespa/document/predicate/predicate.cpp6
-rw-r--r--document/src/vespa/document/predicate/predicate.h6
-rw-r--r--document/src/vespa/document/predicate/predicate_builder.cpp2
-rw-r--r--document/src/vespa/document/predicate/predicate_builder.h2
-rw-r--r--document/src/vespa/document/predicate/predicate_printer.cpp2
-rw-r--r--document/src/vespa/document/predicate/predicate_printer.h2
-rw-r--r--document/src/vespa/document/predicate/predicate_slime_builder.cpp2
-rw-r--r--document/src/vespa/document/predicate/predicate_slime_builder.h2
-rw-r--r--document/src/vespa/document/predicate/predicate_slime_visitor.cpp2
-rw-r--r--document/src/vespa/document/predicate/predicate_slime_visitor.h2
-rw-r--r--document/src/vespa/document/repo/CMakeLists.txt2
-rw-r--r--document/src/vespa/document/repo/configbuilder.cpp2
-rw-r--r--document/src/vespa/document/repo/configbuilder.h2
-rw-r--r--document/src/vespa/document/repo/document_type_repo_factory.cpp2
-rw-r--r--document/src/vespa/document/repo/document_type_repo_factory.h2
-rw-r--r--document/src/vespa/document/repo/documenttyperepo.cpp18
-rw-r--r--document/src/vespa/document/repo/documenttyperepo.h2
-rw-r--r--document/src/vespa/document/repo/fixedtyperepo.cpp2
-rw-r--r--document/src/vespa/document/repo/fixedtyperepo.h2
-rw-r--r--document/src/vespa/document/select/CMakeLists.txt2
-rw-r--r--document/src/vespa/document/select/bodyfielddetector.cpp2
-rw-r--r--document/src/vespa/document/select/bodyfielddetector.h2
-rw-r--r--document/src/vespa/document/select/branch.cpp2
-rw-r--r--document/src/vespa/document/select/branch.h2
-rw-r--r--document/src/vespa/document/select/cloningvisitor.cpp2
-rw-r--r--document/src/vespa/document/select/cloningvisitor.h2
-rw-r--r--document/src/vespa/document/select/compare.cpp2
-rw-r--r--document/src/vespa/document/select/compare.h2
-rw-r--r--document/src/vespa/document/select/constant.cpp2
-rw-r--r--document/src/vespa/document/select/constant.h2
-rw-r--r--document/src/vespa/document/select/context.cpp2
-rw-r--r--document/src/vespa/document/select/context.h2
-rw-r--r--document/src/vespa/document/select/doctype.cpp2
-rw-r--r--document/src/vespa/document/select/doctype.h2
-rw-r--r--document/src/vespa/document/select/gid_filter.cpp2
-rw-r--r--document/src/vespa/document/select/gid_filter.h2
-rw-r--r--document/src/vespa/document/select/grammar/lexer.ll2
-rw-r--r--document/src/vespa/document/select/grammar/parser.yy2
-rw-r--r--document/src/vespa/document/select/invalidconstant.cpp2
-rw-r--r--document/src/vespa/document/select/invalidconstant.h2
-rw-r--r--document/src/vespa/document/select/node.h2
-rw-r--r--document/src/vespa/document/select/operator.cpp2
-rw-r--r--document/src/vespa/document/select/operator.h2
-rw-r--r--document/src/vespa/document/select/parse_utils.cpp2
-rw-r--r--document/src/vespa/document/select/parse_utils.h2
-rw-r--r--document/src/vespa/document/select/parser.cpp2
-rw-r--r--document/src/vespa/document/select/parser.h2
-rw-r--r--document/src/vespa/document/select/parser_limits.cpp2
-rw-r--r--document/src/vespa/document/select/parser_limits.h2
-rw-r--r--document/src/vespa/document/select/parsing_failed_exception.cpp2
-rw-r--r--document/src/vespa/document/select/parsing_failed_exception.h2
-rw-r--r--document/src/vespa/document/select/result.cpp2
-rw-r--r--document/src/vespa/document/select/result.h2
-rw-r--r--document/src/vespa/document/select/resultlist.cpp2
-rw-r--r--document/src/vespa/document/select/resultlist.h2
-rw-r--r--document/src/vespa/document/select/resultset.cpp2
-rw-r--r--document/src/vespa/document/select/resultset.h2
-rw-r--r--document/src/vespa/document/select/scanner.h2
-rw-r--r--document/src/vespa/document/select/simpleparser.cpp2
-rw-r--r--document/src/vespa/document/select/simpleparser.h2
-rw-r--r--document/src/vespa/document/select/traversingvisitor.cpp2
-rw-r--r--document/src/vespa/document/select/traversingvisitor.h2
-rw-r--r--document/src/vespa/document/select/value.cpp2
-rw-r--r--document/src/vespa/document/select/value.h2
-rw-r--r--document/src/vespa/document/select/valuenode.cpp2
-rw-r--r--document/src/vespa/document/select/valuenode.h2
-rw-r--r--document/src/vespa/document/select/valuenodes.cpp2
-rw-r--r--document/src/vespa/document/select/valuenodes.h2
-rw-r--r--document/src/vespa/document/select/variablemap.h2
-rw-r--r--document/src/vespa/document/select/visitor.h2
-rw-r--r--document/src/vespa/document/serialization/CMakeLists.txt2
-rw-r--r--document/src/vespa/document/serialization/annotationdeserializer.cpp2
-rw-r--r--document/src/vespa/document/serialization/annotationdeserializer.h2
-rw-r--r--document/src/vespa/document/serialization/annotationserializer.cpp2
-rw-r--r--document/src/vespa/document/serialization/annotationserializer.h2
-rw-r--r--document/src/vespa/document/serialization/documentreader.h2
-rw-r--r--document/src/vespa/document/serialization/documentwriter.h2
-rw-r--r--document/src/vespa/document/serialization/fieldreader.h2
-rw-r--r--document/src/vespa/document/serialization/fieldwriter.h2
-rw-r--r--document/src/vespa/document/serialization/slime_output_to_vector.cpp2
-rw-r--r--document/src/vespa/document/serialization/slime_output_to_vector.h2
-rw-r--r--document/src/vespa/document/serialization/util.h2
-rw-r--r--document/src/vespa/document/serialization/vespadocumentdeserializer.cpp2
-rw-r--r--document/src/vespa/document/serialization/vespadocumentdeserializer.h2
-rw-r--r--document/src/vespa/document/serialization/vespadocumentserializer.cpp2
-rw-r--r--document/src/vespa/document/serialization/vespadocumentserializer.h2
-rw-r--r--document/src/vespa/document/test/CMakeLists.txt2
-rw-r--r--document/src/vespa/document/test/make_bucket_space.cpp2
-rw-r--r--document/src/vespa/document/test/make_bucket_space.h2
-rw-r--r--document/src/vespa/document/test/make_document_bucket.cpp2
-rw-r--r--document/src/vespa/document/test/make_document_bucket.h2
-rw-r--r--document/src/vespa/document/update/CMakeLists.txt2
-rw-r--r--document/src/vespa/document/update/addfieldpathupdate.cpp2
-rw-r--r--document/src/vespa/document/update/addfieldpathupdate.h2
-rw-r--r--document/src/vespa/document/update/addvalueupdate.cpp2
-rw-r--r--document/src/vespa/document/update/addvalueupdate.h2
-rw-r--r--document/src/vespa/document/update/arithmeticvalueupdate.cpp2
-rw-r--r--document/src/vespa/document/update/arithmeticvalueupdate.h2
-rw-r--r--document/src/vespa/document/update/assignfieldpathupdate.cpp2
-rw-r--r--document/src/vespa/document/update/assignfieldpathupdate.h2
-rw-r--r--document/src/vespa/document/update/assignvalueupdate.cpp2
-rw-r--r--document/src/vespa/document/update/assignvalueupdate.h2
-rw-r--r--document/src/vespa/document/update/clearvalueupdate.cpp2
-rw-r--r--document/src/vespa/document/update/clearvalueupdate.h2
-rw-r--r--document/src/vespa/document/update/documentupdate.cpp2
-rw-r--r--document/src/vespa/document/update/documentupdate.h2
-rw-r--r--document/src/vespa/document/update/documentupdateflags.h2
-rw-r--r--document/src/vespa/document/update/fieldpathupdate.cpp2
-rw-r--r--document/src/vespa/document/update/fieldpathupdate.h2
-rw-r--r--document/src/vespa/document/update/fieldpathupdates.h2
-rw-r--r--document/src/vespa/document/update/fieldupdate.cpp2
-rw-r--r--document/src/vespa/document/update/fieldupdate.h2
-rw-r--r--document/src/vespa/document/update/mapvalueupdate.cpp2
-rw-r--r--document/src/vespa/document/update/mapvalueupdate.h2
-rw-r--r--document/src/vespa/document/update/removefieldpathupdate.cpp2
-rw-r--r--document/src/vespa/document/update/removefieldpathupdate.h2
-rw-r--r--document/src/vespa/document/update/removevalueupdate.cpp2
-rw-r--r--document/src/vespa/document/update/removevalueupdate.h2
-rw-r--r--document/src/vespa/document/update/tensor_partial_update.cpp2
-rw-r--r--document/src/vespa/document/update/tensor_partial_update.h2
-rw-r--r--document/src/vespa/document/update/tensor_update.h2
-rw-r--r--document/src/vespa/document/update/updates.h2
-rw-r--r--document/src/vespa/document/update/updatevisitor.h2
-rw-r--r--document/src/vespa/document/update/valueupdate.cpp2
-rw-r--r--document/src/vespa/document/update/valueupdate.h2
-rw-r--r--document/src/vespa/document/util/CMakeLists.txt2
-rw-r--r--document/src/vespa/document/util/bufferexceptions.h2
-rw-r--r--document/src/vespa/document/util/bytebuffer.cpp2
-rw-r--r--document/src/vespa/document/util/bytebuffer.h2
-rw-r--r--document/src/vespa/document/util/feed_reject_helper.cpp2
-rw-r--r--document/src/vespa/document/util/feed_reject_helper.h2
-rw-r--r--document/src/vespa/document/util/identifiableid.h2
-rw-r--r--document/src/vespa/document/util/printable.cpp2
-rw-r--r--document/src/vespa/document/util/printable.h2
-rw-r--r--document/src/vespa/document/util/queue.h2
-rw-r--r--document/src/vespa/document/util/serializableexceptions.cpp2
-rw-r--r--document/src/vespa/document/util/serializableexceptions.h2
-rw-r--r--document/src/vespa/document/util/stringutil.cpp2
-rw-r--r--document/src/vespa/document/util/stringutil.h2
-rw-r--r--document/src/vespa/document/util/xmlserializable.h2
-rw-r--r--documentapi-dependencies/README.md2
-rw-r--r--documentapi-dependencies/pom.xml2
-rw-r--r--documentapi/CMakeLists.txt2
-rw-r--r--documentapi/pom.xml2
-rw-r--r--documentapi/src/Doxyfile2
-rw-r--r--documentapi/src/main/docapi-with-dependencies.xml2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/AckToken.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/AsyncParameters.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/AsyncSession.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/BucketListVisitorResponse.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/DocumentAccess.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/DocumentAccessException.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/DocumentAccessParams.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/DocumentIdResponse.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/DocumentOpVisitorResponse.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/DocumentOperationParameters.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/DocumentResponse.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/DocumentUpdateResponse.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/DocumentVisitor.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/DumpVisitorDataHandler.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/EmptyBucketsVisitorResponse.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/Parameters.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/ProgressToken.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/RemoveResponse.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/Response.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/ResponseHandler.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/Result.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/Session.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/SimpleVisitorDocumentQueue.java7
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/SubscriptionParameters.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/SubscriptionSession.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/SyncParameters.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/SyncSession.java4
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/UpdateResponse.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/VisitorControlHandler.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/VisitorControlSession.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/VisitorDataHandler.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/VisitorDataQueue.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/VisitorDestinationParameters.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/VisitorDestinationSession.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/VisitorIterator.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/VisitorParameters.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/VisitorResponse.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/VisitorSession.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/local/LocalAsyncSession.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/local/LocalDocumentAccess.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/local/LocalSyncSession.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/local/LocalVisitorSession.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/local/package-info.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusDocumentAccess.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusParams.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSession.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSyncSession.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusVisitorDestinationSession.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusVisitorSession.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/ScheduledEventQueue.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/loadtypes/LoadType.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/loadtypes/LoadTypeSet.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/loadtypes/package-info.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/package-info.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ANDPolicy.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/AbstractRoutableFactory.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/AdaptiveLoadBalancer.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ContentPolicy.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/CreateVisitorMessage.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/CreateVisitorReply.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DestroyVisitorMessage.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentAcceptedReply.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentIgnoredReply.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentListEntry.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentListMessage.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentMessage.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentProtocol.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentProtocolRoutingPolicy.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentReply.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentRouteSelectorPolicy.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentState.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentSummaryMessage.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/EmptyBucketsMessage.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ErrorPolicy.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ExternPolicy.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetBucketListMessage.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetBucketListReply.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetBucketStateMessage.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetBucketStateReply.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetDocumentMessage.java9
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetDocumentReply.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LazyDecoder.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancer.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancerPolicy.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LocalServicePolicy.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/MapVisitorMessage.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/MessageTypePolicy.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/PutDocumentMessage.java9
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/QueryResultMessage.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RemoveDocumentMessage.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RemoveDocumentReply.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RemoveLocationMessage.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ReplyMerger.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoundRobinPolicy.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories60.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactory.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableRepository.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyFactories.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyFactory.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepository.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/SearchResultMessage.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/SlobrokPolicy.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/StatBucketMessage.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/StatBucketReply.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/SubsetServicePolicy.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/TestAndSetMessage.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/UpdateDocumentMessage.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/UpdateDocumentReply.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/VisitorInfoMessage.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/VisitorMessage.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/VisitorReply.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/WriteDocumentReply.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/WrongDistributionReply.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/package-info.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/systemstate/rule/Argument.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/systemstate/rule/Location.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/systemstate/rule/NodeState.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/package-info.java2
-rwxr-xr-xdocumentapi/src/main/javacc/StateParser.jj2
-rw-r--r--documentapi/src/main/resources/configdefinitions/document-protocol-policies.def2
-rw-r--r--documentapi/src/main/resources/configdefinitions/documentrouteselectorpolicy.def2
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/VisitorDataQueueTest.java2
-rwxr-xr-xdocumentapi/src/test/java/com/yahoo/documentapi/VisitorIteratorTestCase.java2
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/VisitorParametersTestCase.java2
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/local/LocalDocumentApiTestCase.java2
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/messagebus/loadtypes/test/LoadTypesTestCase.java2
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancerTestCase.java2
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/MessageSequencingTest.java2
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/ReplyMergerTestCase.java2
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepositoryTest.java2
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/TargetCachingSlobrokHostFetcherTest.java2
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/ErrorCodesTest.java2
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/Messages60TestCase.java2
-rwxr-xr-xdocumentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/MessagesTestBase.java2
-rwxr-xr-xdocumentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyFactoryTestCase.java2
-rwxr-xr-xdocumentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestCase.java2
-rwxr-xr-xdocumentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestFrame.java2
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PriorityTestCase.java2
-rwxr-xr-xdocumentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/RoutableFactoryTestCase.java2
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/TestFileUtil.java2
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/storagepolicy/BasicTests.java2
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/storagepolicy/ContentPolicyTest.java2
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/storagepolicy/ContentPolicyTestEnvironment.java2
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/storagepolicy/Simulator.java2
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/Destination.java2
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/MessageBusDocumentApiTestCase.java2
-rwxr-xr-xdocumentapi/src/test/java/com/yahoo/documentapi/messagebus/test/MessageBusVisitorSessionTestCase.java2
-rwxr-xr-xdocumentapi/src/test/java/com/yahoo/documentapi/messagebus/test/ScheduledEventQueueTestCase.java2
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/VisitorControlHandlerTest.java2
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/test/AbstractDocumentApiTestCase.java2
-rw-r--r--documentapi/src/tests/messagebus/CMakeLists.txt2
-rw-r--r--documentapi/src/tests/messagebus/messagebus_test.cpp2
-rw-r--r--documentapi/src/tests/messages/CMakeLists.txt2
-rw-r--r--documentapi/src/tests/messages/error_codes_test.cpp2
-rw-r--r--documentapi/src/tests/messages/messages60app.cpp2
-rw-r--r--documentapi/src/tests/messages/messages60test.cpp2
-rw-r--r--documentapi/src/tests/messages/messages60test.h2
-rw-r--r--documentapi/src/tests/messages/testbase.cpp2
-rw-r--r--documentapi/src/tests/messages/testbase.h2
-rw-r--r--documentapi/src/tests/policies/CMakeLists.txt2
-rw-r--r--documentapi/src/tests/policies/policies_test.cpp2
-rw-r--r--documentapi/src/tests/policies/testframe.cpp2
-rw-r--r--documentapi/src/tests/policies/testframe.h2
-rw-r--r--documentapi/src/tests/policyfactory/CMakeLists.txt2
-rw-r--r--documentapi/src/tests/policyfactory/policyfactory.cpp2
-rw-r--r--documentapi/src/tests/priority/CMakeLists.txt2
-rw-r--r--documentapi/src/tests/priority/priority.cpp2
-rw-r--r--documentapi/src/tests/replymerger/CMakeLists.txt2
-rw-r--r--documentapi/src/tests/replymerger/replymerger_test.cpp2
-rw-r--r--documentapi/src/tests/routablefactory/CMakeLists.txt2
-rw-r--r--documentapi/src/tests/routablefactory/routablefactory.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/CMakeLists.txt2
-rw-r--r--documentapi/src/vespa/documentapi/common.h2
-rw-r--r--documentapi/src/vespa/documentapi/documentapi.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/CMakeLists.txt2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/documentprotocol.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/documentprotocol.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/iroutablefactory.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/iroutingpolicyfactory.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/CMakeLists.txt2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/documentacceptedreply.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/documentignoredreply.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/documentignoredreply.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/documentmessage.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/documentmessage.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/documentreply.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/documentreply.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/documentstate.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/documentstate.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/documentsummarymessage.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/documentsummarymessage.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/emptybucketsmessage.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/emptybucketsmessage.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/feedanswer.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/feedanswer.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/feedmessage.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/feedmessage.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/feedreply.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/feedreply.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/getbucketlistmessage.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/getbucketlistmessage.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/getbucketlistreply.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/getbucketlistreply.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/getbucketstatemessage.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/getbucketstatemessage.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/getbucketstatereply.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/getbucketstatereply.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/getdocumentmessage.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/getdocumentmessage.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/getdocumentreply.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/getdocumentreply.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/queryresultmessage.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/queryresultmessage.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/removedocumentmessage.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/removedocumentmessage.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/removedocumentreply.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/removedocumentreply.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/searchresultmessage.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/searchresultmessage.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/statbucketmessage.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/statbucketmessage.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/statbucketreply.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/statbucketreply.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/testandsetcondition.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/testandsetmessage.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/testandsetmessage.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentmessage.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentmessage.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentreply.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentreply.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/visitor.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/writedocumentreply.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/wrongdistributionreply.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/wrongdistributionreply.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/CMakeLists.txt2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/andpolicy.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/andpolicy.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/asyncinitializationpolicy.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/asyncinitializationpolicy.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/contentpolicy.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/contentpolicy.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/documentrouteselectorpolicy.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/documentrouteselectorpolicy.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/errorpolicy.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/errorpolicy.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/externpolicy.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/externpolicy.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/externslobrokpolicy.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/externslobrokpolicy.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/loadbalancer.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/loadbalancer.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/loadbalancerpolicy.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/loadbalancerpolicy.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/localservicepolicy.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/localservicepolicy.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/messagetypepolicy.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/messagetypepolicy.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/roundrobinpolicy.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/roundrobinpolicy.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/subsetservicepolicy.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/subsetservicepolicy.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/priority.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/replymerger.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/replymerger.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/routablefactories60.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/routablerepository.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/routablerepository.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/routingpolicyfactories.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/routingpolicyfactories.h2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/routingpolicyrepository.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/routingpolicyrepository.h2
-rw-r--r--documentgen-test/etc/complex/book.sd2
-rw-r--r--documentgen-test/etc/complex/class.sd2
-rw-r--r--documentgen-test/etc/complex/common.sd2
-rw-r--r--documentgen-test/etc/complex/common2.sd2
-rw-r--r--documentgen-test/etc/complex/music.sd2
-rw-r--r--documentgen-test/etc/complex/music2.sd2
-rw-r--r--documentgen-test/etc/complex/music3.sd2
-rw-r--r--documentgen-test/etc/complex/music4.sd2
-rw-r--r--documentgen-test/etc/complex/parent.sd2
-rw-r--r--documentgen-test/etc/complex/video.sd2
-rw-r--r--documentgen-test/pom.xml9
-rw-r--r--documentgen-test/src/main/java/com/yahoo/vespa/document/NodeImpl.java2
-rw-r--r--documentgen-test/src/main/java/com/yahoo/vespa/document/dom/DocumentImpl.java2
-rw-r--r--documentgen-test/src/test/java/com/yahoo/vespa/config/DocumentGenPluginTest.java2
-rw-r--r--eval/CMakeLists.txt7
-rw-r--r--eval/src/apps/analyze_onnx_model/CMakeLists.txt2
-rw-r--r--eval/src/apps/analyze_onnx_model/analyze_onnx_model.cpp2
-rw-r--r--eval/src/apps/eval_expr/CMakeLists.txt4
-rw-r--r--eval/src/apps/eval_expr/eval_expr.cpp425
-rw-r--r--eval/src/apps/make_tensor_binary_format_test_spec/CMakeLists.txt2
-rw-r--r--eval/src/apps/make_tensor_binary_format_test_spec/make_tensor_binary_format_test_spec.cpp2
-rw-r--r--eval/src/apps/tensor_conformance/CMakeLists.txt2
-rw-r--r--eval/src/apps/tensor_conformance/generate.cpp21
-rw-r--r--eval/src/apps/tensor_conformance/generate.h7
-rw-r--r--eval/src/apps/tensor_conformance/tensor_conformance.cpp11
-rw-r--r--eval/src/tests/ann/bruteforce-nns.h2
-rw-r--r--eval/src/tests/ann/hnsw-like.h2
-rw-r--r--eval/src/tests/ann/point-vector.h2
-rw-r--r--eval/src/tests/ann/read-vecs.h2
-rw-r--r--eval/src/tests/ann/time-util.h2
-rw-r--r--eval/src/tests/apps/eval_expr/CMakeLists.txt9
-rw-r--r--eval/src/tests/apps/eval_expr/eval_expr_test.cpp252
-rw-r--r--eval/src/tests/eval/addr_to_symbol/CMakeLists.txt9
-rw-r--r--eval/src/tests/eval/addr_to_symbol/addr_to_symbol_test.cpp25
-rw-r--r--eval/src/tests/eval/aggr/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/aggr/aggr_test.cpp2
-rw-r--r--eval/src/tests/eval/array_array_map/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/array_array_map/array_array_map_test.cpp2
-rw-r--r--eval/src/tests/eval/cell_type_space/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/cell_type_space/cell_type_space_test.cpp2
-rw-r--r--eval/src/tests/eval/compile_cache/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/compile_cache/compile_cache_test.cpp2
-rw-r--r--eval/src/tests/eval/compiled_function/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/compiled_function/compiled_function_test.cpp2
-rw-r--r--eval/src/tests/eval/fast_value/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/fast_value/fast_value_test.cpp2
-rw-r--r--eval/src/tests/eval/feature_name_extractor/.gitignore (renamed from searchlib/src/tests/rankingexpression/feature_name_extractor/.gitignore)0
-rw-r--r--eval/src/tests/eval/feature_name_extractor/CMakeLists.txt8
-rw-r--r--eval/src/tests/eval/feature_name_extractor/feature_name_extractor_test.cpp (renamed from searchlib/src/tests/rankingexpression/feature_name_extractor/feature_name_extractor_test.cpp)6
-rw-r--r--eval/src/tests/eval/function/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/function/function_test.cpp2
-rw-r--r--eval/src/tests/eval/function_speed/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/function_speed/function_speed_test.cpp2
-rw-r--r--eval/src/tests/eval/gbdt/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/gbdt/gbdt_benchmark.cpp2
-rw-r--r--eval/src/tests/eval/gbdt/gbdt_test.cpp2
-rw-r--r--eval/src/tests/eval/gbdt/model.cpp2
-rw-r--r--eval/src/tests/eval/gen_spec/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/gen_spec/gen_spec_test.cpp2
-rw-r--r--eval/src/tests/eval/inline_operation/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/inline_operation/inline_operation_test.cpp3
-rw-r--r--eval/src/tests/eval/int8float/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/int8float/int8float_test.cpp2
-rw-r--r--eval/src/tests/eval/interpreted_function/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/interpreted_function/interpreted_function_test.cpp23
-rw-r--r--eval/src/tests/eval/multiply_add/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/multiply_add/multiply_add_test.cpp2
-rw-r--r--eval/src/tests/eval/nested_loop/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/nested_loop/nested_loop_bench.cpp2
-rw-r--r--eval/src/tests/eval/nested_loop/nested_loop_test.cpp2
-rw-r--r--eval/src/tests/eval/node_tools/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/node_tools/node_tools_test.cpp3
-rw-r--r--eval/src/tests/eval/node_types/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/node_types/node_types_test.cpp3
-rw-r--r--eval/src/tests/eval/param_usage/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/param_usage/param_usage_test.cpp2
-rw-r--r--eval/src/tests/eval/reference_evaluation/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/reference_evaluation/reference_evaluation_test.cpp2
-rw-r--r--eval/src/tests/eval/reference_operations/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/reference_operations/reference_operations_test.cpp2
-rw-r--r--eval/src/tests/eval/simple_value/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/simple_value/simple_value_test.cpp2
-rw-r--r--eval/src/tests/eval/tensor_function/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/tensor_function/tensor_function_test.cpp16
-rw-r--r--eval/src/tests/eval/tensor_lambda/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/tensor_lambda/tensor_lambda_test.cpp2
-rw-r--r--eval/src/tests/eval/tensor_spec/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/tensor_spec/tensor_spec_test.cpp13
-rw-r--r--eval/src/tests/eval/typed_cells/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/typed_cells/typed_cells_test.cpp2
-rw-r--r--eval/src/tests/eval/value_cache/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/value_cache/tensor_loader_test.cpp2
-rw-r--r--eval/src/tests/eval/value_cache/value_cache_test.cpp2
-rw-r--r--eval/src/tests/eval/value_codec/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/value_codec/value_codec_test.cpp2
-rw-r--r--eval/src/tests/eval/value_type/CMakeLists.txt2
-rw-r--r--eval/src/tests/eval/value_type/value_type_test.cpp2
-rw-r--r--eval/src/tests/gp/ponder_nov2017/CMakeLists.txt2
-rw-r--r--eval/src/tests/gp/ponder_nov2017/ponder_nov2017.cpp2
-rw-r--r--eval/src/tests/instruction/add_trivial_dimension_optimizer/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/add_trivial_dimension_optimizer/add_trivial_dimension_optimizer_test.cpp2
-rw-r--r--eval/src/tests/instruction/best_similarity_function/CMakeLists.txt9
-rw-r--r--eval/src/tests/instruction/best_similarity_function/best_similarity_function_test.cpp155
-rw-r--r--eval/src/tests/instruction/dense_dot_product_function/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/dense_dot_product_function/dense_dot_product_function_test.cpp2
-rw-r--r--eval/src/tests/instruction/dense_hamming_distance/CMakeLists.txt9
-rw-r--r--eval/src/tests/instruction/dense_hamming_distance/dense_hamming_distance_test.cpp91
-rw-r--r--eval/src/tests/instruction/dense_inplace_join_function/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/dense_inplace_join_function/dense_inplace_join_function_test.cpp2
-rw-r--r--eval/src/tests/instruction/dense_multi_matmul_function/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/dense_multi_matmul_function/dense_multi_matmul_function_test.cpp2
-rw-r--r--eval/src/tests/instruction/dense_replace_type_function/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/dense_replace_type_function/dense_replace_type_function_test.cpp2
-rw-r--r--eval/src/tests/instruction/dense_simple_expand_function/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/dense_simple_expand_function/dense_simple_expand_function_test.cpp2
-rw-r--r--eval/src/tests/instruction/dense_single_reduce_function/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/dense_single_reduce_function/dense_single_reduce_function_test.cpp2
-rw-r--r--eval/src/tests/instruction/dense_xw_product_function/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/dense_xw_product_function/dense_xw_product_function_test.cpp2
-rw-r--r--eval/src/tests/instruction/fast_rename_optimizer/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/fast_rename_optimizer/fast_rename_optimizer_test.cpp2
-rw-r--r--eval/src/tests/instruction/generic_cell_cast/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/generic_cell_cast/generic_cell_cast_test.cpp2
-rw-r--r--eval/src/tests/instruction/generic_concat/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/generic_concat/generic_concat_test.cpp2
-rw-r--r--eval/src/tests/instruction/generic_create/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/generic_create/generic_create_test.cpp2
-rw-r--r--eval/src/tests/instruction/generic_join/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/generic_join/generic_join_test.cpp2
-rw-r--r--eval/src/tests/instruction/generic_map/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/generic_map/generic_map_test.cpp2
-rw-r--r--eval/src/tests/instruction/generic_merge/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/generic_merge/generic_merge_test.cpp2
-rw-r--r--eval/src/tests/instruction/generic_peek/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/generic_peek/generic_peek_test.cpp2
-rw-r--r--eval/src/tests/instruction/generic_reduce/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/generic_reduce/generic_reduce_test.cpp2
-rw-r--r--eval/src/tests/instruction/generic_rename/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/generic_rename/generic_rename_test.cpp2
-rw-r--r--eval/src/tests/instruction/index_lookup_table/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/index_lookup_table/index_lookup_table_test.cpp2
-rw-r--r--eval/src/tests/instruction/inplace_map_function/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/inplace_map_function/inplace_map_function_test.cpp2
-rw-r--r--eval/src/tests/instruction/join_with_number/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/join_with_number/join_with_number_function_test.cpp2
-rw-r--r--eval/src/tests/instruction/mixed_inner_product_function/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/mixed_inner_product_function/mixed_inner_product_function_test.cpp2
-rw-r--r--eval/src/tests/instruction/mixed_simple_join_function/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/mixed_simple_join_function/mixed_simple_join_function_test.cpp2
-rw-r--r--eval/src/tests/instruction/pow_as_map_optimizer/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/pow_as_map_optimizer/pow_as_map_optimizer_test.cpp2
-rw-r--r--eval/src/tests/instruction/remove_trivial_dimension_optimizer/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/remove_trivial_dimension_optimizer/remove_trivial_dimension_optimizer_test.cpp2
-rw-r--r--eval/src/tests/instruction/sparse_dot_product_function/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/sparse_dot_product_function/sparse_dot_product_function_test.cpp2
-rw-r--r--eval/src/tests/instruction/sparse_full_overlap_join_function/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/sparse_full_overlap_join_function/sparse_full_overlap_join_function_test.cpp2
-rw-r--r--eval/src/tests/instruction/sparse_merge_function/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/sparse_merge_function/sparse_merge_function_test.cpp2
-rw-r--r--eval/src/tests/instruction/sparse_no_overlap_join_function/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/sparse_no_overlap_join_function/sparse_no_overlap_join_function_test.cpp2
-rw-r--r--eval/src/tests/instruction/sum_max_dot_product_function/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/sum_max_dot_product_function/sum_max_dot_product_function_test.cpp4
-rw-r--r--eval/src/tests/instruction/unpack_bits_function/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/unpack_bits_function/unpack_bits_function_test.cpp2
-rw-r--r--eval/src/tests/instruction/vector_from_doubles_function/CMakeLists.txt2
-rw-r--r--eval/src/tests/instruction/vector_from_doubles_function/vector_from_doubles_function_test.cpp2
-rw-r--r--eval/src/tests/streamed/value/CMakeLists.txt2
-rw-r--r--eval/src/tests/streamed/value/streamed_value_test.cpp2
-rw-r--r--eval/src/tests/tensor/binary_format/CMakeLists.txt2
-rw-r--r--eval/src/tests/tensor/binary_format/binary_format_test.cpp2
-rw-r--r--eval/src/tests/tensor/instruction_benchmark/CMakeLists.txt2
-rw-r--r--eval/src/tests/tensor/instruction_benchmark/instruction_benchmark.cpp2
-rw-r--r--eval/src/tests/tensor/onnx_wrapper/CMakeLists.txt2
-rwxr-xr-xeval/src/tests/tensor/onnx_wrapper/dynamic.py2
-rwxr-xr-xeval/src/tests/tensor/onnx_wrapper/float_to_int8.py2
-rwxr-xr-xeval/src/tests/tensor/onnx_wrapper/guess_batch.py2
-rwxr-xr-xeval/src/tests/tensor/onnx_wrapper/int_types.py2
-rw-r--r--eval/src/tests/tensor/onnx_wrapper/onnx_wrapper_test.cpp36
-rwxr-xr-xeval/src/tests/tensor/onnx_wrapper/simple.py2
-rwxr-xr-xeval/src/tests/tensor/onnx_wrapper/unstable_types.py2
-rw-r--r--eval/src/tests/tensor/tensor_conformance/CMakeLists.txt2
-rw-r--r--eval/src/tests/tensor/tensor_conformance/tensor_conformance_test.cpp2
-rw-r--r--eval/src/vespa/eval/CMakeLists.txt2
-rw-r--r--eval/src/vespa/eval/eval/CMakeLists.txt3
-rw-r--r--eval/src/vespa/eval/eval/aggr.cpp2
-rw-r--r--eval/src/vespa/eval/eval/aggr.h2
-rw-r--r--eval/src/vespa/eval/eval/array_array_map.cpp2
-rw-r--r--eval/src/vespa/eval/eval/array_array_map.h2
-rw-r--r--eval/src/vespa/eval/eval/basic_nodes.cpp2
-rw-r--r--eval/src/vespa/eval/eval/basic_nodes.h2
-rw-r--r--eval/src/vespa/eval/eval/call_nodes.cpp3
-rw-r--r--eval/src/vespa/eval/eval/call_nodes.h3
-rw-r--r--eval/src/vespa/eval/eval/cell_type.cpp2
-rw-r--r--eval/src/vespa/eval/eval/cell_type.h2
-rw-r--r--eval/src/vespa/eval/eval/check_type.h2
-rw-r--r--eval/src/vespa/eval/eval/compile_tensor_function.cpp32
-rw-r--r--eval/src/vespa/eval/eval/compile_tensor_function.h31
-rw-r--r--eval/src/vespa/eval/eval/delete_node.cpp2
-rw-r--r--eval/src/vespa/eval/eval/delete_node.h2
-rw-r--r--eval/src/vespa/eval/eval/dense_cells_value.cpp2
-rw-r--r--eval/src/vespa/eval/eval/dense_cells_value.h2
-rw-r--r--eval/src/vespa/eval/eval/double_value_builder.cpp2
-rw-r--r--eval/src/vespa/eval/eval/double_value_builder.h2
-rw-r--r--eval/src/vespa/eval/eval/extract_bit.h2
-rw-r--r--eval/src/vespa/eval/eval/fast_addr_map.cpp2
-rw-r--r--eval/src/vespa/eval/eval/fast_addr_map.h2
-rw-r--r--eval/src/vespa/eval/eval/fast_value.cpp2
-rw-r--r--eval/src/vespa/eval/eval/fast_value.h2
-rw-r--r--eval/src/vespa/eval/eval/fast_value.hpp2
-rw-r--r--eval/src/vespa/eval/eval/feature_name_extractor.cpp (renamed from searchlib/src/vespa/searchlib/features/rankingexpression/feature_name_extractor.cpp)10
-rw-r--r--eval/src/vespa/eval/eval/feature_name_extractor.h18
-rw-r--r--eval/src/vespa/eval/eval/function.cpp2
-rw-r--r--eval/src/vespa/eval/eval/function.h2
-rw-r--r--eval/src/vespa/eval/eval/gbdt.cpp2
-rw-r--r--eval/src/vespa/eval/eval/gbdt.h2
-rw-r--r--eval/src/vespa/eval/eval/hamming_distance.h13
-rw-r--r--eval/src/vespa/eval/eval/inline_operation.h2
-rw-r--r--eval/src/vespa/eval/eval/int8float.cpp2
-rw-r--r--eval/src/vespa/eval/eval/int8float.h2
-rw-r--r--eval/src/vespa/eval/eval/interpreted_function.cpp18
-rw-r--r--eval/src/vespa/eval/eval/interpreted_function.h8
-rw-r--r--eval/src/vespa/eval/eval/key_gen.cpp3
-rw-r--r--eval/src/vespa/eval/eval/key_gen.h2
-rw-r--r--eval/src/vespa/eval/eval/lazy_params.cpp2
-rw-r--r--eval/src/vespa/eval/eval/lazy_params.h2
-rw-r--r--eval/src/vespa/eval/eval/llvm/CMakeLists.txt3
-rw-r--r--eval/src/vespa/eval/eval/llvm/addr_to_symbol.cpp66
-rw-r--r--eval/src/vespa/eval/eval/llvm/addr_to_symbol.h19
-rw-r--r--eval/src/vespa/eval/eval/llvm/compile_cache.cpp2
-rw-r--r--eval/src/vespa/eval/eval/llvm/compile_cache.h2
-rw-r--r--eval/src/vespa/eval/eval/llvm/compiled_function.cpp2
-rw-r--r--eval/src/vespa/eval/eval/llvm/compiled_function.h2
-rw-r--r--eval/src/vespa/eval/eval/llvm/deinline_forest.cpp2
-rw-r--r--eval/src/vespa/eval/eval/llvm/deinline_forest.h2
-rw-r--r--eval/src/vespa/eval/eval/llvm/llvm_wrapper.cpp11
-rw-r--r--eval/src/vespa/eval/eval/llvm/llvm_wrapper.h3
-rw-r--r--eval/src/vespa/eval/eval/make_tensor_function.cpp5
-rw-r--r--eval/src/vespa/eval/eval/make_tensor_function.h2
-rw-r--r--eval/src/vespa/eval/eval/memory_usage_stuff.h2
-rw-r--r--eval/src/vespa/eval/eval/nested_loop.h2
-rw-r--r--eval/src/vespa/eval/eval/node_tools.cpp3
-rw-r--r--eval/src/vespa/eval/eval/node_tools.h2
-rw-r--r--eval/src/vespa/eval/eval/node_traverser.h2
-rw-r--r--eval/src/vespa/eval/eval/node_types.cpp3
-rw-r--r--eval/src/vespa/eval/eval/node_types.h2
-rw-r--r--eval/src/vespa/eval/eval/node_visitor.h4
-rw-r--r--eval/src/vespa/eval/eval/operation.cpp5
-rw-r--r--eval/src/vespa/eval/eval/operation.h3
-rw-r--r--eval/src/vespa/eval/eval/operator_nodes.cpp2
-rw-r--r--eval/src/vespa/eval/eval/operator_nodes.h2
-rw-r--r--eval/src/vespa/eval/eval/optimize_tensor_function.cpp101
-rw-r--r--eval/src/vespa/eval/eval/optimize_tensor_function.h2
-rw-r--r--eval/src/vespa/eval/eval/param_usage.cpp2
-rw-r--r--eval/src/vespa/eval/eval/param_usage.h2
-rw-r--r--eval/src/vespa/eval/eval/simple_value.cpp2
-rw-r--r--eval/src/vespa/eval/eval/simple_value.h2
-rw-r--r--eval/src/vespa/eval/eval/tensor_function.cpp8
-rw-r--r--eval/src/vespa/eval/eval/tensor_function.h2
-rw-r--r--eval/src/vespa/eval/eval/tensor_nodes.cpp2
-rw-r--r--eval/src/vespa/eval/eval/tensor_nodes.h2
-rw-r--r--eval/src/vespa/eval/eval/tensor_spec.cpp19
-rw-r--r--eval/src/vespa/eval/eval/tensor_spec.h3
-rw-r--r--eval/src/vespa/eval/eval/test/CMakeLists.txt2
-rw-r--r--eval/src/vespa/eval/eval/test/cell_type_space.cpp2
-rw-r--r--eval/src/vespa/eval/eval/test/cell_type_space.h2
-rw-r--r--eval/src/vespa/eval/eval/test/eval_fixture.cpp2
-rw-r--r--eval/src/vespa/eval/eval/test/eval_fixture.h2
-rw-r--r--eval/src/vespa/eval/eval/test/eval_spec.cpp23
-rw-r--r--eval/src/vespa/eval/eval/test/eval_spec.h2
-rw-r--r--eval/src/vespa/eval/eval/test/gen_spec.cpp2
-rw-r--r--eval/src/vespa/eval/eval/test/gen_spec.h2
-rw-r--r--eval/src/vespa/eval/eval/test/reference_evaluation.cpp5
-rw-r--r--eval/src/vespa/eval/eval/test/reference_evaluation.h2
-rw-r--r--eval/src/vespa/eval/eval/test/reference_operations.cpp2
-rw-r--r--eval/src/vespa/eval/eval/test/reference_operations.h2
-rw-r--r--eval/src/vespa/eval/eval/test/test_io.cpp35
-rw-r--r--eval/src/vespa/eval/eval/test/test_io.h19
-rw-r--r--eval/src/vespa/eval/eval/test/value_compare.cpp2
-rw-r--r--eval/src/vespa/eval/eval/test/value_compare.h2
-rw-r--r--eval/src/vespa/eval/eval/value.cpp21
-rw-r--r--eval/src/vespa/eval/eval/value.h15
-rw-r--r--eval/src/vespa/eval/eval/value_cache/CMakeLists.txt2
-rw-r--r--eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.cpp2
-rw-r--r--eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.h2
-rw-r--r--eval/src/vespa/eval/eval/value_cache/constant_value.h2
-rw-r--r--eval/src/vespa/eval/eval/value_cache/constant_value_cache.cpp2
-rw-r--r--eval/src/vespa/eval/eval/value_cache/constant_value_cache.h2
-rw-r--r--eval/src/vespa/eval/eval/value_codec.cpp2
-rw-r--r--eval/src/vespa/eval/eval/value_codec.h2
-rw-r--r--eval/src/vespa/eval/eval/value_type.cpp2
-rw-r--r--eval/src/vespa/eval/eval/value_type.h2
-rw-r--r--eval/src/vespa/eval/eval/value_type_spec.cpp2
-rw-r--r--eval/src/vespa/eval/eval/value_type_spec.h2
-rw-r--r--eval/src/vespa/eval/eval/visit_stuff.cpp3
-rw-r--r--eval/src/vespa/eval/eval/visit_stuff.h2
-rw-r--r--eval/src/vespa/eval/eval/vm_forest.cpp2
-rw-r--r--eval/src/vespa/eval/eval/vm_forest.h2
-rw-r--r--eval/src/vespa/eval/eval/wrap_param.h2
-rw-r--r--eval/src/vespa/eval/gp/CMakeLists.txt2
-rw-r--r--eval/src/vespa/eval/gp/gp.cpp2
-rw-r--r--eval/src/vespa/eval/gp/gp.h2
-rw-r--r--eval/src/vespa/eval/instruction/CMakeLists.txt4
-rw-r--r--eval/src/vespa/eval/instruction/add_trivial_dimension_optimizer.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/add_trivial_dimension_optimizer.h2
-rw-r--r--eval/src/vespa/eval/instruction/best_similarity_function.cpp225
-rw-r--r--eval/src/vespa/eval/instruction/best_similarity_function.h38
-rw-r--r--eval/src/vespa/eval/instruction/dense_cell_range_function.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/dense_cell_range_function.h2
-rw-r--r--eval/src/vespa/eval/instruction/dense_dot_product_function.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/dense_dot_product_function.h2
-rw-r--r--eval/src/vespa/eval/instruction/dense_hamming_distance.cpp71
-rw-r--r--eval/src/vespa/eval/instruction/dense_hamming_distance.h22
-rw-r--r--eval/src/vespa/eval/instruction/dense_lambda_peek_function.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/dense_lambda_peek_function.h2
-rw-r--r--eval/src/vespa/eval/instruction/dense_lambda_peek_optimizer.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/dense_lambda_peek_optimizer.h2
-rw-r--r--eval/src/vespa/eval/instruction/dense_multi_matmul_function.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/dense_multi_matmul_function.h2
-rw-r--r--eval/src/vespa/eval/instruction/dense_simple_expand_function.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/dense_simple_expand_function.h2
-rw-r--r--eval/src/vespa/eval/instruction/dense_single_reduce_function.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/dense_single_reduce_function.h2
-rw-r--r--eval/src/vespa/eval/instruction/dense_xw_product_function.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/dense_xw_product_function.h2
-rw-r--r--eval/src/vespa/eval/instruction/fast_rename_optimizer.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/fast_rename_optimizer.h2
-rw-r--r--eval/src/vespa/eval/instruction/generic_cell_cast.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/generic_cell_cast.h2
-rw-r--r--eval/src/vespa/eval/instruction/generic_concat.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/generic_concat.h2
-rw-r--r--eval/src/vespa/eval/instruction/generic_create.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/generic_create.h2
-rw-r--r--eval/src/vespa/eval/instruction/generic_join.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/generic_join.h2
-rw-r--r--eval/src/vespa/eval/instruction/generic_lambda.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/generic_lambda.h2
-rw-r--r--eval/src/vespa/eval/instruction/generic_map.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/generic_map.h2
-rw-r--r--eval/src/vespa/eval/instruction/generic_merge.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/generic_merge.h2
-rw-r--r--eval/src/vespa/eval/instruction/generic_peek.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/generic_peek.h2
-rw-r--r--eval/src/vespa/eval/instruction/generic_reduce.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/generic_reduce.h2
-rw-r--r--eval/src/vespa/eval/instruction/generic_rename.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/generic_rename.h2
-rw-r--r--eval/src/vespa/eval/instruction/index_lookup_table.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/index_lookup_table.h2
-rw-r--r--eval/src/vespa/eval/instruction/inplace_map_function.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/inplace_map_function.h2
-rw-r--r--eval/src/vespa/eval/instruction/join_with_number_function.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/join_with_number_function.h2
-rw-r--r--eval/src/vespa/eval/instruction/mixed_inner_product_function.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/mixed_inner_product_function.h2
-rw-r--r--eval/src/vespa/eval/instruction/mixed_simple_join_function.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/mixed_simple_join_function.h2
-rw-r--r--eval/src/vespa/eval/instruction/pow_as_map_optimizer.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/pow_as_map_optimizer.h2
-rw-r--r--eval/src/vespa/eval/instruction/remove_trivial_dimension_optimizer.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/remove_trivial_dimension_optimizer.h2
-rw-r--r--eval/src/vespa/eval/instruction/replace_type_function.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/replace_type_function.h2
-rw-r--r--eval/src/vespa/eval/instruction/sparse_dot_product_function.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/sparse_dot_product_function.h2
-rw-r--r--eval/src/vespa/eval/instruction/sparse_full_overlap_join_function.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/sparse_full_overlap_join_function.h2
-rw-r--r--eval/src/vespa/eval/instruction/sparse_merge_function.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/sparse_merge_function.h2
-rw-r--r--eval/src/vespa/eval/instruction/sparse_no_overlap_join_function.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/sparse_no_overlap_join_function.h2
-rw-r--r--eval/src/vespa/eval/instruction/sum_max_dot_product_function.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/sum_max_dot_product_function.h2
-rw-r--r--eval/src/vespa/eval/instruction/unpack_bits_function.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/unpack_bits_function.h2
-rw-r--r--eval/src/vespa/eval/instruction/vector_from_doubles_function.cpp2
-rw-r--r--eval/src/vespa/eval/instruction/vector_from_doubles_function.h2
-rw-r--r--eval/src/vespa/eval/onnx/CMakeLists.txt2
-rw-r--r--eval/src/vespa/eval/onnx/onnx_model_cache.cpp2
-rw-r--r--eval/src/vespa/eval/onnx/onnx_model_cache.h2
-rw-r--r--eval/src/vespa/eval/onnx/onnx_wrapper.cpp23
-rw-r--r--eval/src/vespa/eval/onnx/onnx_wrapper.h3
-rw-r--r--eval/src/vespa/eval/streamed/CMakeLists.txt2
-rw-r--r--eval/src/vespa/eval/streamed/streamed_value.cpp2
-rw-r--r--eval/src/vespa/eval/streamed/streamed_value.h2
-rw-r--r--eval/src/vespa/eval/streamed/streamed_value_builder.cpp2
-rw-r--r--eval/src/vespa/eval/streamed/streamed_value_builder.h2
-rw-r--r--eval/src/vespa/eval/streamed/streamed_value_builder_factory.cpp2
-rw-r--r--eval/src/vespa/eval/streamed/streamed_value_builder_factory.h2
-rw-r--r--eval/src/vespa/eval/streamed/streamed_value_index.cpp2
-rw-r--r--eval/src/vespa/eval/streamed/streamed_value_index.h2
-rw-r--r--eval/src/vespa/eval/streamed/streamed_value_utils.cpp2
-rw-r--r--eval/src/vespa/eval/streamed/streamed_value_utils.h2
-rw-r--r--eval/src/vespa/eval/streamed/streamed_value_view.cpp2
-rw-r--r--eval/src/vespa/eval/streamed/streamed_value_view.h2
-rw-r--r--fastlib/CMakeLists.txt2
-rw-r--r--fastlib/common_config/install.sh2
-rw-r--r--fastlib/common_config/make.sh2
-rw-r--r--fastlib/current/release/buildspec2
-rw-r--r--fastlib/src/Doxyfile2
-rw-r--r--fastlib/src/vespa/fastlib/io/CMakeLists.txt2
-rw-r--r--fastlib/src/vespa/fastlib/io/bufferedfile.cpp2
-rw-r--r--fastlib/src/vespa/fastlib/io/bufferedfile.h2
-rw-r--r--fastlib/src/vespa/fastlib/io/tests/CMakeLists.txt2
-rw-r--r--fastlib/src/vespa/fastlib/io/tests/bufferedfiletest.cpp2
-rw-r--r--fastlib/src/vespa/fastlib/testsuite/CMakeLists.txt2
-rw-r--r--fastlib/src/vespa/fastlib/testsuite/cpptest.el2
-rw-r--r--fastlib/src/vespa/fastlib/testsuite/suite.h2
-rw-r--r--fastlib/src/vespa/fastlib/testsuite/test.cpp2
-rw-r--r--fastlib/src/vespa/fastlib/testsuite/test.h2
-rw-r--r--fastlib/src/vespa/fastlib/testsuite/testproject.el2
-rw-r--r--fastlib/src/vespa/fastlib/text/CMakeLists.txt2
-rw-r--r--fastlib/src/vespa/fastlib/text/alphasort/AlphaSort1_0.dtd2
-rw-r--r--fastlib/src/vespa/fastlib/text/alphasort/AlphaSortMasterFile.xml2
-rw-r--r--fastlib/src/vespa/fastlib/text/alphasort/Arabic.xml2
-rw-r--r--fastlib/src/vespa/fastlib/text/alphasort/Cyrillic.xml2
-rw-r--r--fastlib/src/vespa/fastlib/text/alphasort/Greek.xml2
-rw-r--r--fastlib/src/vespa/fastlib/text/alphasort/Hangul.xml2
-rw-r--r--fastlib/src/vespa/fastlib/text/alphasort/Hanzi-simplified-by-pinyin.xml2
-rw-r--r--fastlib/src/vespa/fastlib/text/alphasort/Hanzi-simplified-by-radical.xml2
-rw-r--r--fastlib/src/vespa/fastlib/text/alphasort/Hanzi-traditional-by-pinyin.xml2
-rw-r--r--fastlib/src/vespa/fastlib/text/alphasort/Hanzi-traditional-by-radical.xml2
-rw-r--r--fastlib/src/vespa/fastlib/text/alphasort/Hanzi-traditional-by-stroke.xml2
-rw-r--r--fastlib/src/vespa/fastlib/text/alphasort/Hebrew.xml2
-rw-r--r--fastlib/src/vespa/fastlib/text/alphasort/Kana.xml2
-rw-r--r--fastlib/src/vespa/fastlib/text/alphasort/Kanji-by-radical.xml2
-rw-r--r--fastlib/src/vespa/fastlib/text/alphasort/Latin.xml2
-rw-r--r--fastlib/src/vespa/fastlib/text/alphasort/Numbers.xml2
-rw-r--r--fastlib/src/vespa/fastlib/text/alphasort/SortMaster1_0.dtd2
-rw-r--r--fastlib/src/vespa/fastlib/text/alphasort/Space.xml2
-rw-r--r--fastlib/src/vespa/fastlib/text/apps/CMakeLists.txt2
-rw-r--r--fastlib/src/vespa/fastlib/text/apps/extcase.cpp2
-rw-r--r--fastlib/src/vespa/fastlib/text/apps/unicode_propertydump.cpp2
-rw-r--r--fastlib/src/vespa/fastlib/text/apps/unicode_tolowerdump.cpp2
-rw-r--r--fastlib/src/vespa/fastlib/text/latintokenizer.h2
-rw-r--r--fastlib/src/vespa/fastlib/text/normwordfolder.cpp2
-rw-r--r--fastlib/src/vespa/fastlib/text/normwordfolder.h2
-rw-r--r--fastlib/src/vespa/fastlib/text/tests/CMakeLists.txt2
-rw-r--r--fastlib/src/vespa/fastlib/text/tests/characterclasstest.cpp2
-rw-r--r--fastlib/src/vespa/fastlib/text/tests/latintokenizertest.cpp2
-rw-r--r--fastlib/src/vespa/fastlib/text/tests/latintokenizertest.h2
-rw-r--r--fastlib/src/vespa/fastlib/text/tests/unicodeutiltest.cpp2
-rw-r--r--fastlib/src/vespa/fastlib/text/tests/unicodeutiltest.h2
-rw-r--r--fastlib/src/vespa/fastlib/text/tests/wordfolderstest.cpp2
-rw-r--r--fastlib/src/vespa/fastlib/text/tests/wordfolderstest.h2
-rw-r--r--fastlib/src/vespa/fastlib/text/unicodeutil-charprops.cpp2
-rw-r--r--fastlib/src/vespa/fastlib/text/unicodeutil-lowercase.cpp2
-rw-r--r--fastlib/src/vespa/fastlib/text/unicodeutil.cpp2
-rw-r--r--fastlib/src/vespa/fastlib/text/unicodeutil.h2
-rw-r--r--fastlib/src/vespa/fastlib/text/wordfolder.cpp2
-rw-r--r--fastlib/src/vespa/fastlib/text/wordfolder.h2
-rw-r--r--fastlib/src/vespa/fastlib/util/CMakeLists.txt2
-rw-r--r--fastlib/src/vespa/fastlib/util/testproject.el2
-rw-r--r--fastlib/src/vespa/fastlib/util/tests/CMakeLists.txt2
-rw-r--r--fastlib/src/vespa/fastlib/util/tests/wildcard_match_test.cpp2
-rw-r--r--fastlib/src/vespa/fastlib/util/wildcard_match.h2
-rw-r--r--fastlib/src/vespa/packages/CMakeLists.txt2
-rw-r--r--fastos/CMakeLists.txt2
-rw-r--r--fastos/src/tests/CMakeLists.txt2
-rw-r--r--fastos/src/tests/backtracetest.cpp2
-rw-r--r--fastos/src/tests/coretest.cpp2
-rw-r--r--fastos/src/tests/coretest2.cpp2
-rw-r--r--fastos/src/tests/filetest.cpp2
-rw-r--r--fastos/src/tests/job.h2
-rw-r--r--fastos/src/tests/mazeserver.cpp2
-rw-r--r--fastos/src/tests/performancetest.cpp2
-rw-r--r--fastos/src/tests/processtest.cpp2
-rw-r--r--fastos/src/tests/tests.h2
-rw-r--r--fastos/src/tests/thread_joinwait_test.cpp2
-rw-r--r--fastos/src/tests/thread_stats_test.cpp2
-rw-r--r--fastos/src/tests/thread_test_base.hpp2
-rw-r--r--fastos/src/tests/threadtest.cpp2
-rw-r--r--fastos/src/tests/typetest.cpp2
-rw-r--r--fastos/src/vespa/fastos/CMakeLists.txt2
-rw-r--r--fastos/src/vespa/fastos/app.cpp2
-rw-r--r--fastos/src/vespa/fastos/app.h2
-rw-r--r--fastos/src/vespa/fastos/backtrace.c2
-rw-r--r--fastos/src/vespa/fastos/backtrace.h2
-rw-r--r--fastos/src/vespa/fastos/dynamiclibrary.h2
-rw-r--r--fastos/src/vespa/fastos/file.cpp2
-rw-r--r--fastos/src/vespa/fastos/file.h2
-rw-r--r--fastos/src/vespa/fastos/file_rw_ops.cpp2
-rw-r--r--fastos/src/vespa/fastos/file_rw_ops.h2
-rw-r--r--fastos/src/vespa/fastos/linux_file.cpp2
-rw-r--r--fastos/src/vespa/fastos/linux_file.h2
-rw-r--r--fastos/src/vespa/fastos/process.cpp2
-rw-r--r--fastos/src/vespa/fastos/process.h2
-rw-r--r--fastos/src/vespa/fastos/ringbuffer.h2
-rw-r--r--fastos/src/vespa/fastos/thread.cpp2
-rw-r--r--fastos/src/vespa/fastos/thread.h2
-rw-r--r--fastos/src/vespa/fastos/types.h2
-rw-r--r--fastos/src/vespa/fastos/unix_app.cpp33
-rw-r--r--fastos/src/vespa/fastos/unix_app.h2
-rw-r--r--fastos/src/vespa/fastos/unix_dynamiclibrary.cpp2
-rw-r--r--fastos/src/vespa/fastos/unix_dynamiclibrary.h2
-rw-r--r--fastos/src/vespa/fastos/unix_file.cpp2
-rw-r--r--fastos/src/vespa/fastos/unix_file.h2
-rw-r--r--fastos/src/vespa/fastos/unix_ipc.cpp98
-rw-r--r--fastos/src/vespa/fastos/unix_ipc.h5
-rw-r--r--fastos/src/vespa/fastos/unix_process.cpp584
-rw-r--r--fastos/src/vespa/fastos/unix_process.h47
-rw-r--r--fastos/src/vespa/fastos/unix_thread.cpp2
-rw-r--r--fastos/src/vespa/fastos/unix_thread.h2
-rw-r--r--fat-model-dependencies/pom.xml2
-rw-r--r--fbench/CMakeLists.txt2
-rw-r--r--fbench/src/fbench/CMakeLists.txt2
-rw-r--r--fbench/src/fbench/client.cpp2
-rw-r--r--fbench/src/fbench/client.h2
-rw-r--r--fbench/src/fbench/description.html2
-rw-r--r--fbench/src/fbench/fbench.cpp2
-rw-r--r--fbench/src/fbench/fbench.h2
-rw-r--r--fbench/src/filterfile/CMakeLists.txt2
-rw-r--r--fbench/src/filterfile/description.html2
-rw-r--r--fbench/src/filterfile/filterfile.cpp2
-rw-r--r--fbench/src/geturl/CMakeLists.txt2
-rw-r--r--fbench/src/geturl/description.html2
-rw-r--r--fbench/src/geturl/geturl.cpp2
-rw-r--r--fbench/src/httpclient/CMakeLists.txt2
-rw-r--r--fbench/src/httpclient/httpclient.cpp2
-rw-r--r--fbench/src/httpclient/httpclient.h2
-rw-r--r--fbench/src/splitfile/CMakeLists.txt2
-rw-r--r--fbench/src/splitfile/description.html2
-rw-r--r--fbench/src/splitfile/splitfile.cpp2
-rw-r--r--fbench/src/test/CMakeLists.txt2
-rw-r--r--fbench/src/test/clientstatus.cpp2
-rw-r--r--fbench/src/test/filereader.cpp2
-rw-r--r--fbench/src/test/httpclient.cpp2
-rw-r--r--fbench/src/test/httpclient_splitstring.cpp2
-rw-r--r--fbench/src/util/CMakeLists.txt2
-rw-r--r--fbench/src/util/clientstatus.cpp2
-rw-r--r--fbench/src/util/clientstatus.h2
-rw-r--r--fbench/src/util/description.html2
-rw-r--r--fbench/src/util/filereader.cpp2
-rw-r--r--fbench/src/util/filereader.h2
-rw-r--r--fbench/src/util/timer.cpp2
-rw-r--r--fbench/src/util/timer.h2
-rwxr-xr-xfbench/util/plot.pl2
-rwxr-xr-xfbench/util/pretest.sh2
-rwxr-xr-xfbench/util/resultfilter.pl2
-rwxr-xr-xfbench/util/runtests.sh2
-rwxr-xr-xfbench/util/separate.pl2
-rw-r--r--fileacquirer/CMakeLists.txt2
-rw-r--r--fileacquirer/pom.xml2
-rw-r--r--fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirer.java2
-rw-r--r--fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirerFactory.java2
-rw-r--r--fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirerImpl.java2
-rw-r--r--fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileReferenceDoesNotExistException.java2
-rw-r--r--fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileReferenceRemovedException.java2
-rw-r--r--fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/MockFileAcquirer.java2
-rw-r--r--fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/TimeoutException.java2
-rw-r--r--fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/Timer.java2
-rw-r--r--fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/package-info.java2
-rw-r--r--fileacquirer/src/main/resources/configdefinitions/filedistributorrpc.def2
-rw-r--r--fileacquirer/src/test/java/MockFileAcquirerTest.java2
-rw-r--r--fileacquirer/src/vespa/fileacquirer/CMakeLists.txt2
-rw-r--r--filedistribution/CMakeLists.txt2
-rw-r--r--filedistribution/pom.xml9
-rw-r--r--filedistribution/src/main/java/com/yahoo/vespa/filedistribution/CompressedFileReference.java2
-rw-r--r--filedistribution/src/main/java/com/yahoo/vespa/filedistribution/Downloads.java2
-rw-r--r--filedistribution/src/main/java/com/yahoo/vespa/filedistribution/EmptyFileReferenceData.java2
-rw-r--r--filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDownloader.java2
-rw-r--r--filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReceiver.java2
-rw-r--r--filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceData.java2
-rw-r--r--filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownload.java2
-rw-r--r--filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java11
-rw-r--r--filedistribution/src/main/java/com/yahoo/vespa/filedistribution/LazyFileReferenceData.java2
-rw-r--r--filedistribution/src/main/java/com/yahoo/vespa/filedistribution/LazyTemporaryStorageFileReferenceData.java2
-rw-r--r--filedistribution/src/main/java/com/yahoo/vespa/filedistribution/RpcTester.java2
-rw-r--r--filedistribution/src/main/java/com/yahoo/vespa/filedistribution/status/FileDistributionStatusClient.java43
-rw-r--r--filedistribution/src/main/sh/vespa-status-filedistribution.sh10
-rw-r--r--filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java5
-rw-r--r--filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileReceiverTest.java2
-rw-r--r--filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileReferenceDataTest.java2
-rw-r--r--filedistribution/src/test/java/com/yahoo/vespa/filedistribution/status/FileDistributionStatusClientTest.java2
-rw-r--r--flags/CMakeLists.txt2
-rw-r--r--flags/README.md2
-rw-r--r--flags/pom.xml2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/BooleanFlag.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/Deserializer.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/DoubleFlag.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/FetchVector.java14
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/Flag.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/FlagDefinition.java23
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/FlagId.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/FlagImpl.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/FlagRepository.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/FlagSerializer.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/FlagSource.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/Flags.java264
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/InMemoryFlagSource.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/IntFlag.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/JacksonArraySerializer.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/JacksonFlag.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/JacksonSerializer.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/JsonNodeRawFlag.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/ListFlag.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/LongFlag.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/OrderedFlagSource.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java22
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/RawFlag.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/Serializer.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/SimpleFlagSerializer.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/StringFlag.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/UnboundBooleanFlag.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/UnboundDoubleFlag.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/UnboundFlag.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/UnboundFlagImpl.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/UnboundIntFlag.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/UnboundJacksonFlag.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/UnboundListFlag.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/UnboundLongFlag.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/UnboundStringFlag.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/custom/HostResources.java25
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/custom/SharedHost.java6
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/file/FlagDbFile.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/file/package-info.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/json/Condition.java24
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/json/DimensionHelper.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/json/FetchVectorHelper.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/json/FlagData.java17
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/json/ListCondition.java15
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/json/RelationalCondition.java15
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/json/Rule.java21
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/json/package-info.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/json/wire/WireCondition.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/json/wire/WireFlagData.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/json/wire/WireFlagDataList.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/json/wire/WireRule.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/json/wire/package-info.java2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/package-info.java2
-rw-r--r--flags/src/test/java/com/yahoo/vespa/flags/FlagsTest.java2
-rw-r--r--flags/src/test/java/com/yahoo/vespa/flags/OrderedFlagSourceTest.java2
-rw-r--r--flags/src/test/java/com/yahoo/vespa/flags/PermanentFlagsTest.java4
-rw-r--r--flags/src/test/java/com/yahoo/vespa/flags/custom/ClusterCapacityTest.java2
-rw-r--r--flags/src/test/java/com/yahoo/vespa/flags/custom/SharedHostTest.java6
-rw-r--r--flags/src/test/java/com/yahoo/vespa/flags/file/FlagDbFileTest.java2
-rw-r--r--flags/src/test/java/com/yahoo/vespa/flags/json/ConditionTest.java2
-rw-r--r--flags/src/test/java/com/yahoo/vespa/flags/json/FlagDataTest.java2
-rw-r--r--flags/src/test/java/com/yahoo/vespa/flags/json/SerializationTest.java2
-rw-r--r--fnet/CMakeLists.txt3
-rw-r--r--fnet/ethereal/Makefile.am2
-rw-r--r--fnet/ethereal/Makefile.nmake2
-rw-r--r--fnet/ethereal/moduleinfo.h2
-rw-r--r--fnet/ethereal/packet-fnetrpc.c2
-rw-r--r--fnet/index.html2
-rw-r--r--fnet/src/Doxyfile2
-rw-r--r--fnet/src/examples/frt/rpc/CMakeLists.txt2
-rw-r--r--fnet/src/examples/frt/rpc/echo_client.cpp2
-rw-r--r--fnet/src/examples/frt/rpc/rpc_callback_client.cpp2
-rw-r--r--fnet/src/examples/frt/rpc/rpc_callback_server.cpp2
-rw-r--r--fnet/src/examples/frt/rpc/rpc_client.cpp2
-rw-r--r--fnet/src/examples/frt/rpc/rpc_info.cpp2
-rw-r--r--fnet/src/examples/frt/rpc/rpc_invoke.cpp2
-rw-r--r--fnet/src/examples/frt/rpc/rpc_proxy.cpp2
-rw-r--r--fnet/src/examples/frt/rpc/rpc_server.cpp2
-rw-r--r--fnet/src/examples/ping/CMakeLists.txt2
-rw-r--r--fnet/src/examples/ping/packets.cpp2
-rw-r--r--fnet/src/examples/ping/packets.h2
-rw-r--r--fnet/src/examples/ping/pingclient.cpp2
-rw-r--r--fnet/src/examples/ping/pingserver.cpp2
-rw-r--r--fnet/src/examples/proxy/CMakeLists.txt2
-rw-r--r--fnet/src/examples/proxy/proxy.cpp2
-rw-r--r--fnet/src/examples/timeout/CMakeLists.txt2
-rw-r--r--fnet/src/examples/timeout/timeout.cpp2
-rw-r--r--fnet/src/tests/connect/CMakeLists.txt2
-rw-r--r--fnet/src/tests/connect/connect_test.cpp2
-rw-r--r--fnet/src/tests/connection_spread/CMakeLists.txt2
-rw-r--r--fnet/src/tests/connection_spread/connection_spread_test.cpp2
-rw-r--r--fnet/src/tests/databuffer/CMakeLists.txt2
-rw-r--r--fnet/src/tests/databuffer/databuffer.cpp2
-rw-r--r--fnet/src/tests/examples/CMakeLists.txt2
-rw-r--r--fnet/src/tests/examples/examples_test.cpp2
-rw-r--r--fnet/src/tests/frt/method_pt/CMakeLists.txt2
-rw-r--r--fnet/src/tests/frt/method_pt/method_pt.cpp2
-rw-r--r--fnet/src/tests/frt/parallel_rpc/CMakeLists.txt2
-rw-r--r--fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp2
-rw-r--r--fnet/src/tests/frt/rpc/CMakeLists.txt2
-rw-r--r--fnet/src/tests/frt/rpc/detach_return_invoke.cpp2
-rw-r--r--fnet/src/tests/frt/rpc/invoke.cpp2
-rw-r--r--fnet/src/tests/frt/rpc/my_crypto_engine.hpp2
-rw-r--r--fnet/src/tests/frt/rpc/session.cpp2
-rw-r--r--fnet/src/tests/frt/rpc/sharedblob.cpp2
-rw-r--r--fnet/src/tests/frt/values/CMakeLists.txt2
-rw-r--r--fnet/src/tests/frt/values/values_test.cpp2
-rw-r--r--fnet/src/tests/info/CMakeLists.txt2
-rw-r--r--fnet/src/tests/info/info.cpp2
-rw-r--r--fnet/src/tests/locking/CMakeLists.txt2
-rw-r--r--fnet/src/tests/locking/castspeed.cpp2
-rw-r--r--fnet/src/tests/locking/drainpackets.cpp2
-rw-r--r--fnet/src/tests/locking/dummy.cpp2
-rw-r--r--fnet/src/tests/locking/dummy.h2
-rw-r--r--fnet/src/tests/locking/lockspeed.cpp2
-rw-r--r--fnet/src/tests/printstuff/CMakeLists.txt2
-rw-r--r--fnet/src/tests/printstuff/printstuff_test.cpp2
-rw-r--r--fnet/src/tests/scheduling/CMakeLists.txt2
-rw-r--r--fnet/src/tests/scheduling/schedule.cpp4
-rw-r--r--fnet/src/tests/scheduling/sloweventloop.cpp4
-rw-r--r--fnet/src/tests/sync_execute/CMakeLists.txt2
-rw-r--r--fnet/src/tests/sync_execute/sync_execute.cpp2
-rw-r--r--fnet/src/tests/thread_selection/CMakeLists.txt2
-rw-r--r--fnet/src/tests/thread_selection/thread_selection_test.cpp2
-rw-r--r--fnet/src/tests/time/CMakeLists.txt2
-rw-r--r--fnet/src/tests/time/timespeed.cpp2
-rw-r--r--fnet/src/tests/transport_debugger/CMakeLists.txt8
-rw-r--r--fnet/src/tests/transport_debugger/transport_debugger_test.cpp121
-rw-r--r--fnet/src/vespa/fnet/CMakeLists.txt3
-rw-r--r--fnet/src/vespa/fnet/channel.cpp2
-rw-r--r--fnet/src/vespa/fnet/channel.h2
-rw-r--r--fnet/src/vespa/fnet/channellookup.cpp2
-rw-r--r--fnet/src/vespa/fnet/channellookup.h2
-rw-r--r--fnet/src/vespa/fnet/config.cpp2
-rw-r--r--fnet/src/vespa/fnet/config.h2
-rw-r--r--fnet/src/vespa/fnet/connection.cpp2
-rw-r--r--fnet/src/vespa/fnet/connection.h2
-rw-r--r--fnet/src/vespa/fnet/connector.cpp2
-rw-r--r--fnet/src/vespa/fnet/connector.h2
-rw-r--r--fnet/src/vespa/fnet/context.cpp2
-rw-r--r--fnet/src/vespa/fnet/context.h2
-rw-r--r--fnet/src/vespa/fnet/controlpacket.cpp2
-rw-r--r--fnet/src/vespa/fnet/controlpacket.h2
-rw-r--r--fnet/src/vespa/fnet/databuffer.cpp2
-rw-r--r--fnet/src/vespa/fnet/databuffer.h2
-rw-r--r--fnet/src/vespa/fnet/dummypacket.cpp2
-rw-r--r--fnet/src/vespa/fnet/dummypacket.h2
-rw-r--r--fnet/src/vespa/fnet/frt/CMakeLists.txt2
-rw-r--r--fnet/src/vespa/fnet/frt/error.cpp2
-rw-r--r--fnet/src/vespa/fnet/frt/error.h2
-rw-r--r--fnet/src/vespa/fnet/frt/invokable.h2
-rw-r--r--fnet/src/vespa/fnet/frt/invoker.cpp2
-rw-r--r--fnet/src/vespa/fnet/frt/invoker.h2
-rw-r--r--fnet/src/vespa/fnet/frt/isharedblob.h2
-rw-r--r--fnet/src/vespa/fnet/frt/packets.cpp2
-rw-r--r--fnet/src/vespa/fnet/frt/packets.h2
-rw-r--r--fnet/src/vespa/fnet/frt/reflection.cpp2
-rw-r--r--fnet/src/vespa/fnet/frt/reflection.h2
-rw-r--r--fnet/src/vespa/fnet/frt/rpcrequest.cpp2
-rw-r--r--fnet/src/vespa/fnet/frt/rpcrequest.h2
-rw-r--r--fnet/src/vespa/fnet/frt/supervisor.cpp21
-rw-r--r--fnet/src/vespa/fnet/frt/supervisor.h7
-rw-r--r--fnet/src/vespa/fnet/frt/target.cpp2
-rw-r--r--fnet/src/vespa/fnet/frt/target.h2
-rw-r--r--fnet/src/vespa/fnet/frt/values.cpp2
-rw-r--r--fnet/src/vespa/fnet/frt/values.h2
-rw-r--r--fnet/src/vespa/fnet/iexecutable.h2
-rw-r--r--fnet/src/vespa/fnet/info.cpp2
-rw-r--r--fnet/src/vespa/fnet/info.h2
-rw-r--r--fnet/src/vespa/fnet/iocomponent.cpp2
-rw-r--r--fnet/src/vespa/fnet/iocomponent.h2
-rw-r--r--fnet/src/vespa/fnet/ipacketfactory.h2
-rw-r--r--fnet/src/vespa/fnet/ipackethandler.h2
-rw-r--r--fnet/src/vespa/fnet/ipacketstreamer.h2
-rw-r--r--fnet/src/vespa/fnet/iserveradapter.h2
-rw-r--r--fnet/src/vespa/fnet/packet.cpp2
-rw-r--r--fnet/src/vespa/fnet/packet.h2
-rw-r--r--fnet/src/vespa/fnet/packetqueue.cpp2
-rw-r--r--fnet/src/vespa/fnet/packetqueue.h2
-rw-r--r--fnet/src/vespa/fnet/scheduler.cpp20
-rw-r--r--fnet/src/vespa/fnet/scheduler.h10
-rw-r--r--fnet/src/vespa/fnet/signalshutdown.cpp2
-rw-r--r--fnet/src/vespa/fnet/signalshutdown.h2
-rw-r--r--fnet/src/vespa/fnet/simplepacketstreamer.cpp2
-rw-r--r--fnet/src/vespa/fnet/simplepacketstreamer.h2
-rw-r--r--fnet/src/vespa/fnet/task.cpp2
-rw-r--r--fnet/src/vespa/fnet/task.h2
-rw-r--r--fnet/src/vespa/fnet/transport.cpp94
-rw-r--r--fnet/src/vespa/fnet/transport.h58
-rw-r--r--fnet/src/vespa/fnet/transport_debugger.cpp69
-rw-r--r--fnet/src/vespa/fnet/transport_debugger.h68
-rw-r--r--fnet/src/vespa/fnet/transport_thread.cpp16
-rw-r--r--fnet/src/vespa/fnet/transport_thread.h5
-rw-r--r--fsa/CMakeLists.txt2
-rw-r--r--fsa/doc/Doxyfile2
-rw-r--r--fsa/doc/docbook/fsadump.xml2
-rw-r--r--fsa/doc/docbook/fsainfo.xml2
-rw-r--r--fsa/doc/docbook/makefsa.xml2
-rw-r--r--fsa/doc/fsa_file_format.html2
-rw-r--r--fsa/pom.xml2
-rw-r--r--fsa/queryproc/count_plain_grams.cpp2
-rw-r--r--fsa/queryproc/count_sorted_grams.cpp2
-rw-r--r--fsa/queryproc/p2s_ratio.cpp2
-rw-r--r--fsa/queryproc/permute_query.cpp2
-rw-r--r--fsa/queryproc/sort_grams.cpp2
-rw-r--r--fsa/src/alltest/CMakeLists.txt2
-rwxr-xr-xfsa/src/alltest/alltest.sh2
-rw-r--r--fsa/src/alltest/conceptnet_test.cpp2
-rw-r--r--fsa/src/alltest/detector_test.cpp2
-rwxr-xr-xfsa/src/alltest/detector_test.sh2
-rw-r--r--fsa/src/alltest/fsa_create_test.cpp2
-rw-r--r--fsa/src/alltest/fsa_perftest.cpp2
-rw-r--r--fsa/src/alltest/fsa_test.cpp2
-rwxr-xr-xfsa/src/alltest/fsa_test.sh2
-rw-r--r--fsa/src/alltest/fsamanager_test.cpp2
-rw-r--r--fsa/src/alltest/lookup_test.cpp2
-rwxr-xr-xfsa/src/alltest/lookup_test.sh2
-rw-r--r--fsa/src/alltest/ngram_test.cpp2
-rwxr-xr-xfsa/src/alltest/ngram_test.sh2
-rw-r--r--fsa/src/alltest/segmenter_test.cpp2
-rwxr-xr-xfsa/src/alltest/segmenter_test.sh2
-rw-r--r--fsa/src/alltest/vectorizer_perftest.cpp2
-rw-r--r--fsa/src/alltest/vectorizer_test.cpp2
-rwxr-xr-xfsa/src/alltest/vectorizer_test.sh2
-rw-r--r--fsa/src/apps/fsadump/CMakeLists.txt2
-rw-r--r--fsa/src/apps/fsadump/fsadump.cpp2
-rw-r--r--fsa/src/apps/fsainfo/CMakeLists.txt2
-rw-r--r--fsa/src/apps/fsainfo/fsainfo.cpp2
-rw-r--r--fsa/src/apps/makefsa/CMakeLists.txt2
-rw-r--r--fsa/src/apps/makefsa/makefsa.cpp2
-rw-r--r--fsa/src/libfsa/automaton-alternate.h2
-rw-r--r--fsa/src/main/java/com/yahoo/fsa/FSA.java2
-rw-r--r--fsa/src/main/java/com/yahoo/fsa/MetaData.java2
-rw-r--r--fsa/src/main/java/com/yahoo/fsa/conceptnet/ConceptNet.java2
-rw-r--r--fsa/src/main/java/com/yahoo/fsa/package-info.java2
-rw-r--r--fsa/src/main/java/com/yahoo/fsa/segmenter/Segment.java2
-rw-r--r--fsa/src/main/java/com/yahoo/fsa/segmenter/Segmenter.java2
-rw-r--r--fsa/src/main/java/com/yahoo/fsa/segmenter/Segments.java2
-rw-r--r--fsa/src/main/java/com/yahoo/fsa/topicpredictor/PredictedTopic.java2
-rw-r--r--fsa/src/main/java/com/yahoo/fsa/topicpredictor/TopicPredictor.java2
-rw-r--r--fsa/src/test/java/com/yahoo/fsa/test/FSADataTestCase.java2
-rw-r--r--fsa/src/test/java/com/yahoo/fsa/test/FSAIteratorTestCase.java2
-rw-r--r--fsa/src/test/java/com/yahoo/fsa/test/FSATestCase.java2
-rw-r--r--fsa/src/test/java/com/yahoo/fsa/test/UTF8TestCase.java2
-rwxr-xr-xfsa/src/util/cn_txt2xml2
-rwxr-xr-xfsa/src/util/cn_xml2dat2
-rw-r--r--fsa/src/vespa/fsa/CMakeLists.txt2
-rw-r--r--fsa/src/vespa/fsa/automaton-alternate.cpp2
-rw-r--r--fsa/src/vespa/fsa/automaton.cpp2
-rw-r--r--fsa/src/vespa/fsa/automaton.h2
-rw-r--r--fsa/src/vespa/fsa/base64.cpp2
-rw-r--r--fsa/src/vespa/fsa/base64.h2
-rw-r--r--fsa/src/vespa/fsa/blob.cpp2
-rw-r--r--fsa/src/vespa/fsa/blob.h2
-rw-r--r--fsa/src/vespa/fsa/checksum.h2
-rw-r--r--fsa/src/vespa/fsa/conceptnet.cpp2
-rw-r--r--fsa/src/vespa/fsa/conceptnet.h2
-rw-r--r--fsa/src/vespa/fsa/detector.cpp2
-rw-r--r--fsa/src/vespa/fsa/detector.h2
-rw-r--r--fsa/src/vespa/fsa/file.h2
-rw-r--r--fsa/src/vespa/fsa/fsa.cpp2
-rw-r--r--fsa/src/vespa/fsa/fsa.h2
-rw-r--r--fsa/src/vespa/fsa/metadata.cpp2
-rw-r--r--fsa/src/vespa/fsa/metadata.h2
-rw-r--r--fsa/src/vespa/fsa/ngram.cpp2
-rw-r--r--fsa/src/vespa/fsa/ngram.h2
-rw-r--r--fsa/src/vespa/fsa/permuter.cpp2
-rw-r--r--fsa/src/vespa/fsa/permuter.h2
-rw-r--r--fsa/src/vespa/fsa/segmenter.cpp2
-rw-r--r--fsa/src/vespa/fsa/segmenter.h2
-rw-r--r--fsa/src/vespa/fsa/selector.cpp2
-rw-r--r--fsa/src/vespa/fsa/selector.h2
-rw-r--r--fsa/src/vespa/fsa/timestamp.h2
-rw-r--r--fsa/src/vespa/fsa/tokenizer.h2
-rw-r--r--fsa/src/vespa/fsa/unicode.cpp2
-rw-r--r--fsa/src/vespa/fsa/unicode.h2
-rw-r--r--fsa/src/vespa/fsa/unicode_charprops.cpp2
-rw-r--r--fsa/src/vespa/fsa/unicode_lowercase.cpp2
-rw-r--r--fsa/src/vespa/fsa/unicode_tables.cpp2
-rw-r--r--fsa/src/vespa/fsa/vectorizer.cpp2
-rw-r--r--fsa/src/vespa/fsa/vectorizer.h2
-rw-r--r--fsa/src/vespa/fsa/wordchartokenizer.cpp2
-rw-r--r--fsa/src/vespa/fsa/wordchartokenizer.h2
-rw-r--r--fsa/src/vespa/fsamanagers/CMakeLists.txt2
-rw-r--r--fsa/src/vespa/fsamanagers/conceptnethandle.h2
-rw-r--r--fsa/src/vespa/fsamanagers/conceptnetmanager.cpp2
-rw-r--r--fsa/src/vespa/fsamanagers/conceptnetmanager.h2
-rw-r--r--fsa/src/vespa/fsamanagers/fsahandle.h2
-rw-r--r--fsa/src/vespa/fsamanagers/fsamanager.cpp2
-rw-r--r--fsa/src/vespa/fsamanagers/fsamanager.h2
-rw-r--r--fsa/src/vespa/fsamanagers/metadatahandle.h2
-rw-r--r--fsa/src/vespa/fsamanagers/metadatamanager.cpp2
-rw-r--r--fsa/src/vespa/fsamanagers/metadatamanager.h2
-rw-r--r--fsa/src/vespa/fsamanagers/mutex.cpp2
-rw-r--r--fsa/src/vespa/fsamanagers/mutex.h2
-rw-r--r--fsa/src/vespa/fsamanagers/refcountable.h2
-rw-r--r--fsa/src/vespa/fsamanagers/rwlock.cpp2
-rw-r--r--fsa/src/vespa/fsamanagers/rwlock.h2
-rw-r--r--fsa/src/vespa/fsamanagers/singleton.cpp2
-rw-r--r--fsa/src/vespa/fsamanagers/singleton.h2
-rw-r--r--functions.cmake19
-rw-r--r--hosted-api/src/main/java/ai/vespa/hosted/api/ControllerHttpClient.java71
-rw-r--r--hosted-api/src/main/java/ai/vespa/hosted/api/Deployment.java17
-rw-r--r--hosted-api/src/main/java/ai/vespa/hosted/api/TestDescriptor.java2
-rw-r--r--hosted-api/src/test/java/ai/vespa/hosted/api/TestDescriptorTest.java2
-rw-r--r--hosted-tenant-base/pom.xml46
-rw-r--r--hosted-zone-api/CMakeLists.txt2
-rw-r--r--hosted-zone-api/abi-spec.json35
-rw-r--r--hosted-zone-api/pom.xml2
-rw-r--r--hosted-zone-api/src/main/java/ai/vespa/cloud/Cluster.java45
-rw-r--r--hosted-zone-api/src/main/java/ai/vespa/cloud/Environment.java2
-rw-r--r--hosted-zone-api/src/main/java/ai/vespa/cloud/Node.java34
-rw-r--r--hosted-zone-api/src/main/java/ai/vespa/cloud/SystemInfo.java19
-rw-r--r--hosted-zone-api/src/main/java/ai/vespa/cloud/Zone.java4
-rw-r--r--hosted-zone-api/src/main/java/ai/vespa/cloud/package-info.java2
-rw-r--r--hosted-zone-api/src/test/java/ai/vespa/cloud/SystemInfoTest.java27
-rw-r--r--http-utils/OWNERS1
-rw-r--r--http-utils/README.md2
-rw-r--r--http-utils/pom.xml91
-rw-r--r--indexinglanguage/pom.xml2
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/AdapterFactory.java7
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/DocumentAdapter.java7
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ExpressionConverter.java3
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ExpressionOptimizer.java4
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ExpressionSearcher.java3
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ExpressionVisitor.java2
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateAdapter.java3
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateHelper.java3
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldUpdateAdapter.java3
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldUpdateHelper.java3
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldValueConverter.java12
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/IdentityFieldPathUpdateAdapter.java3
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ScriptParser.java16
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ScriptParserContext.java13
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactory.java5
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleDocumentAdapter.java4
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/StringFieldConverter.java3
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/TypedExpressionConverter.java3
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/UpdateAdapter.java7
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ValueTransformProvider.java3
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticExpression.java16
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/AttributeExpression.java2
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Base64DecodeExpression.java12
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Base64EncodeExpression.java10
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CatExpression.java20
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ClearStateExpression.java7
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CompositeExpression.java3
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EchoExpression.java6
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EmbedExpression.java77
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExactExpression.java8
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExecutionContext.java3
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java31
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionList.java10
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FieldTypeAdapter.java7
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FieldValueAdapter.java9
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FlattenExpression.java10
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ForEachExpression.java35
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldExpression.java12
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetVarExpression.java8
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GuardExpression.java16
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HexDecodeExpression.java12
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HexEncodeExpression.java10
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HostNameExpression.java9
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenExpression.java41
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/IndexExpression.java2
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java11
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/JoinExpression.java12
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/LiteralBoolExpression.java4
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/LowerCaseExpression.java8
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/MathResolver.java2
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NGramExpression.java20
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NormalizeExpression.java39
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NowExpression.java8
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OptimizePredicateExpression.java16
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OutputExpression.java33
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ParenthesisExpression.java12
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/PassthroughExpression.java2
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/RandomExpression.java10
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java23
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SelectInputExpression.java25
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetLanguageExpression.java6
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetValueExpression.java8
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetVarExpression.java8
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SplitExpression.java10
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/StatementExpression.java26
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SubstringExpression.java10
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SummaryExpression.java2
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SwitchExpression.java26
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ThisExpression.java5
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToArrayExpression.java10
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToBoolExpression.java6
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToByteExpression.java8
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToDoubleExpression.java8
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToFloatExpression.java8
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToIntegerExpression.java8
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToLongExpression.java8
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToPositionExpression.java9
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToStringExpression.java8
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToWsetExpression.java10
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/TokenizeExpression.java2
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/TrimExpression.java9
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/UnresolvedDataType.java3
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/UnresolvedFieldValue.java2
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationContext.java18
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationException.java2
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ZCurveExpression.java12
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/package-info.java2
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/linguistics/AnnotatorConfig.java2
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/linguistics/LinguisticsAnnotator.java2
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/linguistics/package-info.java2
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/package-info.java2
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/parser/IndexingInput.java2
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/parser/package-info.java2
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/predicate/package-info.java2
-rw-r--r--indexinglanguage/src/main/javacc/IndexingParser.jj18
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/DocumentTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/DocumentToPathUpdateTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/DocumentToValueUpdateTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/DocumentUpdateTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionConverterTestCase.java4
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionOptimizerTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionSearcherTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionVisitorTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/FieldValueConverterTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/PathUpdateToDocumentTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptParserTestCase.java5
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java61
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactoryTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/SimpleDocumentAdapterTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/SimpleTestAdapter.java12
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/TypedExpressionConverterTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ValueTransformProviderTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ValueUpdateToDocumentTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/AttributeExpressionTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/Base64DecodeTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/Base64EncodeTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/CatTestCase.java4
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ClearStateTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/CompositeExpressionTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/EchoTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExactTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExecutionContextTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionAssert.java8
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionAssertTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/FlattenTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ForEachTestCase.java8
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/GetVarTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/GuardTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/HexDecodeTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/HexEncodeTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/HostNameTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/IndexExpressionTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/InputTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/JoinTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/LiteralBoolExpressionTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/LowerCaseTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/MathResolverTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/NGramTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/NormalizeTestCase.java63
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/NowTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/OptimizePredicateTestCase.java4
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/OutputAssert.java6
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/OutputAssertTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ParenthesisTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/RandomTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SelectInputTestCase.java4
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SetLanguageTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SetValueTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SetVarTestCase.java8
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpression.java8
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpressionTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SplitTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/StatementTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SubstringTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SummaryExpressionTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SwitchTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ThisTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToArrayTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToBoolTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToByteTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToDoubleTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToFloatTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToIntegerTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToLongTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToPositionTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToStringTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToWsetTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/TokenizeTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/TrimTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/UnresolvedDataTypeTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/UnresolvedFieldValueTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationContextTestCase.java10
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationExceptionTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ZCurveTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/linguistics/AnnotatorConfigTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/linguistics/LinguisticsAnnotatorTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/DefaultFieldNameTestCase.java7
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/ExpressionTestCase.java7
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/FieldNameTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/IdentifierTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/MathTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/NumberTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/PrecedenceTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/ScriptTestCase.java2
-rw-r--r--jaxrs_client_utils/README.md2
-rw-r--r--jaxrs_client_utils/pom.xml2
-rw-r--r--jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsClientFactory.java2
-rw-r--r--jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsStrategy.java2
-rw-r--r--jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsStrategyFactory.java2
-rw-r--r--jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JerseyJaxRsClientFactory.java2
-rw-r--r--jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/LocalPassThroughJaxRsStrategy.java2
-rw-r--r--jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/NoRetryJaxRsStrategy.java2
-rw-r--r--jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/RetryingJaxRsStrategy.java2
-rw-r--r--jaxrs_client_utils/src/test/java/com/yahoo/vespa/jaxrs/client/HttpPatchTest.java2
-rw-r--r--jaxrs_client_utils/src/test/java/com/yahoo/vespa/jaxrs/client/NoRetryJaxRsStrategyTest.java2
-rw-r--r--jaxrs_client_utils/src/test/java/com/yahoo/vespa/jaxrs/client/RetryingJaxRsStrategyTest.java2
-rw-r--r--jaxrs_utils/pom.xml2
-rw-r--r--jaxrs_utils/src/main/java/com/yahoo/vespa/jaxrs/annotation/PATCH.java2
-rw-r--r--jdisc-cloud-aws/CMakeLists.txt2
-rw-r--r--jdisc-cloud-aws/pom.xml2
-rw-r--r--jdisc-cloud-aws/src/main/java/com/yahoo/jdisc/cloud/aws/AwsParameterStore.java2
-rw-r--r--jdisc-cloud-aws/src/main/java/com/yahoo/jdisc/cloud/aws/AwsParameterStoreValidationHandler.java2
-rw-r--r--jdisc-cloud-aws/src/main/java/com/yahoo/jdisc/cloud/aws/VespaAwsCredentialsProvider.java2
-rw-r--r--jdisc-security-filters/CMakeLists.txt2
-rw-r--r--jdisc-security-filters/README.md2
-rw-r--r--jdisc-security-filters/pom.xml2
-rw-r--r--jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzAuthorizationFilter.java2
-rw-r--r--jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzPrincipalFilter.java2
-rw-r--r--jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/RequestResourceMapper.java2
-rw-r--r--jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/StaticRequestResourceMapper.java2
-rw-r--r--jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/package-info.java2
-rw-r--r--jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/base/JsonSecurityRequestFilterBase.java2
-rw-r--r--jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/base/package-info.java2
-rw-r--r--jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cors/CorsLogic.java2
-rw-r--r--jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cors/CorsPreflightRequestFilter.java2
-rw-r--r--jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cors/CorsResponseFilter.java2
-rw-r--r--jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cors/package-info.java2
-rw-r--r--jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/LocalhostFilter.java2
-rw-r--r--jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/NoopFilter.java2
-rw-r--r--jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/SecurityHeadersResponseFilter.java2
-rw-r--r--jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/package-info.java2
-rw-r--r--jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/rule/RuleBasedRequestFilter.java2
-rw-r--r--jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/rule/package-info.java2
-rw-r--r--jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.athenz.athenz-authorization-filter.def2
-rw-r--r--jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.athenz.athenz-principal-filter.def2
-rw-r--r--jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.athenz.static-request-resource-mapper.def2
-rw-r--r--jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.cors.cors-filter.def2
-rw-r--r--jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.rule.rule-based-filter.def2
-rw-r--r--jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzAuthorizationFilterTest.java2
-rw-r--r--jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzPrincipalFilterTest.java2
-rw-r--r--jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/base/JsonSecurityRequestFilterBaseTest.java2
-rw-r--r--jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/cors/CorsPreflightRequestFilterTest.java2
-rw-r--r--jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/cors/CorsResponseFilterTest.java2
-rw-r--r--jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/misc/LocalhostFilterTest.java2
-rw-r--r--jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/rule/RuleBasedRequestFilterTest.java2
-rw-r--r--jdisc_core/CMakeLists.txt2
-rw-r--r--jdisc_core/README.md2
-rw-r--r--jdisc_core/pom.xml2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/AbstractResource.java179
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/Container.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/HeaderFields.java7
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/Metric.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/NoopSharedResource.java6
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/ProxyRequestHandler.java13
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/ReferencedResource.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/References.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/Request.java20
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/ResourceReference.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/Response.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/SharedResource.java37
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/TimeoutManager.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/Timer.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/AbstractApplication.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/Application.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/ApplicationNotReadyException.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/BindingMatch.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/BindingRepository.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/BindingSet.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/BindingSetSelector.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/BundleInstallationException.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/BundleInstaller.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerActivator.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerBuilder.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerThread.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/DeactivatedContainer.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/GlobPattern.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/GuiceRepository.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/MetricConsumer.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/MetricImpl.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/MetricNullProvider.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/MetricProvider.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/OsgiFramework.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/OsgiHeader.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/ResourcePool.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/ServerRepository.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/UriPattern.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/package-info.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/client/AbstractClientApplication.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/client/ClientApplication.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/client/ClientDriver.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/client/package-info.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/ActiveContainer.java6
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationConfigModule.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationEnvironmentModule.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationLoader.java6
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/BootstrapLoader.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/BundleLocationResolver.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/ConsoleLogFormatter.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/ConsoleLogListener.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/ConsoleLogManager.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerSnapshot.java11
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerTermination.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerWatchdog.java42
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/DefaultBindingSelector.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/ExportPackages.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/FelixFramework.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/FelixParams.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/Main.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/OsgiLogHandler.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/OsgiLogManager.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/OsgiLogService.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/ScheduledQueue.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/StandaloneMain.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/SystemTimer.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/TimeoutManagerImpl.java7
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/AbstractContentOutputStream.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/AbstractRequestHandler.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/BindingNotFoundException.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/BlockingContentWriter.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/BufferedContentChannel.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/CallableRequestDispatch.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/CallableResponseDispatch.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/CompletionHandler.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/ContentChannel.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/ContentInputStream.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/DelegatedRequestHandler.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/FastContentOutputStream.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/FastContentWriter.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/FutureCompletion.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/FutureConjunction.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/FutureResponse.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/NullContent.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/OverloadException.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/ReadableContentChannel.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestDeniedException.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestDispatch.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestHandler.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/ResponseDispatch.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/ResponseHandler.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/ThreadedRequestHandler.java4
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/UnsafeContentInputStream.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/package-info.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/package-info.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/refcount/CloseableOnce.java27
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/refcount/DebugReferencesByContextMap.java80
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/refcount/DebugReferencesWithStack.java114
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/refcount/DestructableResource.java11
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/refcount/References.java22
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/refcount/ReferencesByCount.java83
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/refcount/package-info.java4
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/service/AbstractClientProvider.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/service/AbstractServerProvider.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/service/BindingSetNotFoundException.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/service/ClientProvider.java8
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/service/ContainerNotReadyException.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/service/CurrentContainer.java12
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/service/NoBindingSetSelectedException.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/service/ServerProvider.java6
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/service/package-info.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/statistics/ContainerWatchdogMetrics.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/statistics/package-info.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/test/MockMetric.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingClientProvider.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingCompletionHandler.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingContentChannel.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingOsgiFramework.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingRequest.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingRequestHandler.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingResponseHandler.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingServerProvider.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/test/ServerProviderConformanceTest.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/test/TestDriver.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/test/TestTimer.java2
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/test/package-info.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/AbstractResourceTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/ContainerTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/HeaderFieldsTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/ProxyRequestHandlerTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/ReferencedResourceTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/ReferencesTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/RequestTestCase.java4
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/ResponseTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/application/AbstractApplicationTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/application/ApplicationNotReadyTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/application/BindingMatchTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/application/BindingRepositoryTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/application/BindingSetTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/application/BundleInstallationExceptionTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/application/ContainerBuilderTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/application/ContainerThreadTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/application/GlobPatternTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/application/GuiceRepositoryTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/application/MetricImplTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/application/OsgiHeaderTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/application/OsgiRepositoryTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/application/ResourcePoolTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/application/ServerRepositoryTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/application/UriPatternTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/benchmark/BindingMatchingTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/benchmark/LatencyTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/benchmark/ThroughputTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/benchmark/UriMatchingTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/client/AbstractClientApplicationTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/client/ClientDriverTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ActiveContainerTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationConfigModuleTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationEnvironmentModuleTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationLoaderTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationRestartTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationShutdownTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/BundleLocationResolverTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogFormatterTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogListenerTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogManagerTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerResourceTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerShutdownTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerSnapshotTestCase.java20
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerTerminationTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerWatchdogTest.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/DefaultBindingSelectorTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ExportPackagesTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/FelixFrameworkTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/FelixParamsTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogHandlerTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogManagerTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogServiceTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ScheduledQueueTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/SystemTimerTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/TimeoutManagerImplTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/handler/AbstractContentOutputStreamTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/handler/AbstractRequestHandlerTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/handler/BindingNotFoundTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/handler/BlockingContentWriterTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/handler/BufferedContentChannelTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/handler/CallableRequestDispatchTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/handler/CallableResponseDispatchTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/handler/ContentInputStreamTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/handler/FastContentOutputStreamTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/handler/FastContentWriterTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/handler/FutureCompletionTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/handler/FutureConjunctionTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/handler/FutureResponseTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/handler/NullContentTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/handler/ReadableContentChannelTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/handler/RequestDeniedTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/handler/RequestDispatchTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/handler/ResponseDispatchTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/handler/RunnableLatch.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/handler/ThreadedRequestHandlerTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/handler/UnsafeContentInputStreamTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/service/AbstractClientProviderTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/service/AbstractServerProviderTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/service/BindingSetNotFoundTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/service/ConnectToHandlerTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/service/ContainerNotReadyTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/service/CurrentContainerTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/service/NoBindingSetSelectedTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingClientTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingCompletionHandlerTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingContentChannelTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingOsgiFrameworkTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingRequestHandlerTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingRequestTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingResponseHandlerTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingServerTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/test/ServerProviderConformanceTestTest.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/test/TestDriverTestCase.java2
-rw-r--r--jdisc_core_test/README.md2
-rw-r--r--jdisc_core_test/integration_test/pom.xml2
-rw-r--r--jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/AbstractApplicationTestCase.java2
-rw-r--r--jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/BundleActivatorIntegrationTest.java2
-rw-r--r--jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/BundleInstallerIntegrationTest.java2
-rw-r--r--jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/GuiceRepositoryIntegrationTest.java2
-rw-r--r--jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/ServerRepositoryIntegrationTest.java2
-rw-r--r--jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/client/ClientDriverIntegrationTest.java2
-rw-r--r--jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/ApplicationLoaderIntegrationTest.java2
-rw-r--r--jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/ExportPackagesIntegrationTest.java2
-rw-r--r--jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/FelixFrameworkIntegrationTest.java2
-rw-r--r--jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/OsgiLogManagerIntegrationTest.java2
-rw-r--r--jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/OsgiLogServiceIntegrationTest.java2
-rw-r--r--jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/test/TestDriverIntegrationTest.java2
-rw-r--r--jdisc_core_test/pom.xml4
-rw-r--r--jdisc_core_test/test_bundles/app-a/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/app-a/src/main/java/com/yahoo/jdisc/bundle/ApplicationA.java2
-rw-r--r--jdisc_core_test/test_bundles/app-b-priv/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/app-b-priv/src/main/java/com/yahoo/jdisc/bundle/ApplicationB.java2
-rw-r--r--jdisc_core_test/test_bundles/app-ca/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/app-ca/src/main/java/com/yahoo/jdisc/bundle/ApplicationC.java2
-rw-r--r--jdisc_core_test/test_bundles/app-dj/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/app-dj/src/main/java/com/yahoo/jdisc/bundle/ApplicationD.java2
-rw-r--r--jdisc_core_test/test_bundles/app-ej-priv/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/app-ej-priv/src/main/java/com/yahoo/jdisc/bundle/ApplicationE.java2
-rw-r--r--jdisc_core_test/test_bundles/app-f-more/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/app-f-more/src/main/java/com/yahoo/jdisc/bundle/ApplicationF.java2
-rw-r--r--jdisc_core_test/test_bundles/app-g-act/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/app-g-act/src/main/java/com/yahoo/jdisc/bundle/g_act/ApplicationG.java2
-rw-r--r--jdisc_core_test/test_bundles/app-g-act/src/main/java/com/yahoo/jdisc/bundle/g_act/MyBundleActivator.java2
-rw-r--r--jdisc_core_test/test_bundles/app-g-act/src/main/java/com/yahoo/jdisc/bundle/g_act/MyService.java2
-rw-r--r--jdisc_core_test/test_bundles/app-h-log/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/app-h-log/src/main/java/com/yahoo/jdisc/bundle/ApplicationH.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-a/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-a/src/main/java/com/yahoo/jdisc/bundle/a/CertificateA.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-b/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-b/src/main/java/com/yahoo/jdisc/bundle/b/CertificateB.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-b/src/main/java/com/yahoo/jdisc/bundle/b/package-info.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-ca/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-ca/src/main/java/com/yahoo/jdisc/bundle/c/CertificateC.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-dc/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-dc/src/main/java/com/yahoo/jdisc/bundle/d/CertificateD.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-eab/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-eab/src/main/java/com/yahoo/jdisc/bundle/e/CertificateE.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-fac/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-fac/src/main/java/com/yahoo/jdisc/bundle/f/CertificateF.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-gg/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-gg/src/main/java/com/yahoo/jdisc/bundle/g/CertificateG.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-hi/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-hi/src/main/java/com/yahoo/jdisc/bundle/h/CertificateH.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-ih/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-ih/src/main/java/com/yahoo/jdisc/bundle/i/CertificateI.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-j-priv/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-j-priv/src/main/java/com/yahoo/jdisc/bundle/j/CertificateJ.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-k-pkgs/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-k-pkgs/src/main/java/com/yahoo/jdisc/bundle/k/CertificateK.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-l1-dup/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-l1-dup/src/main/java/com/yahoo/jdisc/bundle/l/CertificateL.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-l1/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-l1/src/main/java/com/yahoo/jdisc/bundle/l/CertificateL.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-l2/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-l2/src/main/java/com/yahoo/jdisc/bundle/l/CertificateL.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-ml-dup/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-ml-dup/src/main/java/com/yahoo/jdisc/bundle/m/CertificateM.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-ml/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-ml/src/main/java/com/yahoo/jdisc/bundle/m/CertificateM.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-nac/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-nac/src/main/java/com/yahoo/jdisc/bundle/n/CertificateN.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-oa-path/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-oa-path/src/main/java/com/yahoo/jdisc/bundle/o/CertificateO.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-p-jar/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-p-jar/src/main/java/com/yahoo/jdisc/bundle/p/CertificateP.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-q-frag/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-q-frag/src/main/java/com/yahoo/jdisc/bundle/q/CertificateQ.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-rq/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-rq/src/main/java/com/yahoo/jdisc/bundle/r/CertificateR.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-s-act/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-s-act/src/main/java/com/yahoo/jdisc/bundle/s/CertificateS.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-s-act/src/main/java/com/yahoo/jdisc/bundle/s/MyBundleActivator.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-tp/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-tp/src/main/java/com/yahoo/jdisc/bundle/t/CertificateT.java2
-rw-r--r--jdisc_core_test/test_bundles/cert-us/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/cert-us/src/main/java/com/yahoo/jdisc/bundle/u/CertificateU.java2
-rw-r--r--jdisc_core_test/test_bundles/my-bundle-activator/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/my-bundle-activator/src/main/java/com/yahoo/jdisc/bundle/my_act/MyBundleActivator.java2
-rw-r--r--jdisc_core_test/test_bundles/my-bundle-activator/src/main/java/com/yahoo/jdisc/bundle/my_act/MyService.java2
-rw-r--r--jdisc_core_test/test_bundles/my-guice-module/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/my-guice-module/src/main/java/com/yahoo/jdisc/bundle/MyGuiceModule.java2
-rw-r--r--jdisc_core_test/test_bundles/my-server-provider/pom.xml2
-rw-r--r--jdisc_core_test/test_bundles/my-server-provider/src/main/java/com/yahoo/jdisc/bundle/MyServerProvider.java2
-rw-r--r--jdisc_core_test/test_bundles/pom.xml2
-rw-r--r--jdisc_jetty/CMakeLists.txt2
-rw-r--r--jdisc_jetty/pom.xml2
-rw-r--r--jdisc_jetty/src/main/javadoc/README1
-rw-r--r--jrt/examples/SimpleClient.java2
-rw-r--r--jrt/examples/SimpleServer.java2
-rw-r--r--jrt/pom.xml2
-rwxr-xr-xjrt/runexample.sh2
-rw-r--r--jrt/src/com/yahoo/jrt/Acceptor.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Buffer.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Connection.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Connector.java2
-rw-r--r--jrt/src/com/yahoo/jrt/CryptoEngine.java2
-rw-r--r--jrt/src/com/yahoo/jrt/CryptoSocket.java2
-rw-r--r--jrt/src/com/yahoo/jrt/DataArray.java2
-rw-r--r--jrt/src/com/yahoo/jrt/DataValue.java2
-rw-r--r--jrt/src/com/yahoo/jrt/DoubleArray.java2
-rw-r--r--jrt/src/com/yahoo/jrt/DoubleValue.java2
-rw-r--r--jrt/src/com/yahoo/jrt/EndOfQueueException.java2
-rw-r--r--jrt/src/com/yahoo/jrt/ErrorCode.java2
-rw-r--r--jrt/src/com/yahoo/jrt/ErrorPacket.java2
-rw-r--r--jrt/src/com/yahoo/jrt/FatalErrorHandler.java2
-rw-r--r--jrt/src/com/yahoo/jrt/FloatArray.java2
-rw-r--r--jrt/src/com/yahoo/jrt/FloatValue.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Int16Array.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Int16Value.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Int32Array.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Int32Value.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Int64Array.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Int64Value.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Int8Array.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Int8Value.java2
-rw-r--r--jrt/src/com/yahoo/jrt/InvocationClient.java2
-rw-r--r--jrt/src/com/yahoo/jrt/InvocationServer.java2
-rw-r--r--jrt/src/com/yahoo/jrt/InvokeProxy.java2
-rw-r--r--jrt/src/com/yahoo/jrt/ListenFailedException.java2
-rw-r--r--jrt/src/com/yahoo/jrt/MandatoryMethods.java2
-rw-r--r--jrt/src/com/yahoo/jrt/MaybeTlsCryptoEngine.java2
-rw-r--r--jrt/src/com/yahoo/jrt/MaybeTlsCryptoSocket.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Method.java2
-rw-r--r--jrt/src/com/yahoo/jrt/MethodCreateException.java2
-rw-r--r--jrt/src/com/yahoo/jrt/MethodHandler.java2
-rw-r--r--jrt/src/com/yahoo/jrt/NullCryptoEngine.java2
-rw-r--r--jrt/src/com/yahoo/jrt/NullCryptoSocket.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Packet.java2
-rw-r--r--jrt/src/com/yahoo/jrt/PacketInfo.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Queue.java2
-rw-r--r--jrt/src/com/yahoo/jrt/ReplyHandler.java2
-rw-r--r--jrt/src/com/yahoo/jrt/ReplyPacket.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Request.java2
-rw-r--r--jrt/src/com/yahoo/jrt/RequestPacket.java2
-rw-r--r--jrt/src/com/yahoo/jrt/RequestWaiter.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Scheduler.java2
-rw-r--r--jrt/src/com/yahoo/jrt/SessionHandler.java2
-rw-r--r--jrt/src/com/yahoo/jrt/SingleRequestWaiter.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Spec.java2
-rw-r--r--jrt/src/com/yahoo/jrt/StringArray.java2
-rw-r--r--jrt/src/com/yahoo/jrt/StringValue.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Supervisor.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Target.java2
-rw-r--r--jrt/src/com/yahoo/jrt/TargetWatcher.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Task.java2
-rw-r--r--jrt/src/com/yahoo/jrt/ThreadQueue.java2
-rw-r--r--jrt/src/com/yahoo/jrt/TieBreaker.java2
-rw-r--r--jrt/src/com/yahoo/jrt/TlsCryptoEngine.java2
-rw-r--r--jrt/src/com/yahoo/jrt/TlsCryptoSocket.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Transport.java4
-rw-r--r--jrt/src/com/yahoo/jrt/TransportMetrics.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Value.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Values.java2
-rw-r--r--jrt/src/com/yahoo/jrt/Worker.java2
-rw-r--r--jrt/src/com/yahoo/jrt/XorCryptoEngine.java2
-rw-r--r--jrt/src/com/yahoo/jrt/XorCryptoSocket.java2
-rw-r--r--jrt/src/com/yahoo/jrt/package-info.java2
-rw-r--r--jrt/src/com/yahoo/jrt/slobrok/api/BackOff.java2
-rw-r--r--jrt/src/com/yahoo/jrt/slobrok/api/BackOffPolicy.java2
-rw-r--r--jrt/src/com/yahoo/jrt/slobrok/api/IMirror.java2
-rw-r--r--jrt/src/com/yahoo/jrt/slobrok/api/Mirror.java2
-rw-r--r--jrt/src/com/yahoo/jrt/slobrok/api/Register.java2
-rw-r--r--jrt/src/com/yahoo/jrt/slobrok/api/SlobrokList.java2
-rw-r--r--jrt/src/com/yahoo/jrt/slobrok/api/package-info.java2
-rw-r--r--jrt/src/com/yahoo/jrt/slobrok/package-info.java2
-rw-r--r--jrt/src/com/yahoo/jrt/slobrok/server/Slobrok.java2
-rw-r--r--jrt/src/com/yahoo/jrt/slobrok/server/package-info.java2
-rw-r--r--jrt/src/com/yahoo/jrt/tool/RpcInvoker.java2
-rw-r--r--jrt/src/com/yahoo/jrt/tool/package-info.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/AbortTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/BackTargetTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/BufferTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/ConnectTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/CryptoUtils.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/DetachTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/EchoTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/InvokeAsyncTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/InvokeErrorTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/InvokeSyncTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/InvokeVoidTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/ListenTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/MandatoryMethodsTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/PacketTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/QueueTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/SchedulerTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/SessionTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/SlobrokTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/SpecTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/Test.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/TimeoutTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/TlsDetectionTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/ValuesTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/WatcherTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/slobrok/api/BackOffTestCase.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/slobrok/api/MirrorTest.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/slobrok/api/SlobrokListTestCase.java2
-rw-r--r--jrt/tests/com/yahoo/jrt/tool/RpcInvokerTest.java2
-rw-r--r--jrt_test/CMakeLists.txt2
-rw-r--r--jrt_test/src/binref/CMakeLists.txt2
-rwxr-xr-xjrt_test/src/binref/compilejava.in2
-rw-r--r--jrt_test/src/binref/env.sh.in2
-rwxr-xr-xjrt_test/src/binref/runjava.in2
-rw-r--r--jrt_test/src/java/CMakeLists.txt2
-rw-r--r--jrt_test/src/java/DummySlobrokService.java2
-rw-r--r--jrt_test/src/java/HelloWorld.java2
-rw-r--r--jrt_test/src/java/PollRPCServer.java2
-rw-r--r--jrt_test/src/java/SimpleServer.java2
-rw-r--r--jrt_test/src/jrt-test/simpleserver/CMakeLists.txt2
-rw-r--r--jrt_test/src/jrt-test/simpleserver/simpleserver.cpp2
-rw-r--r--jrt_test/src/tests/connect-close/CMakeLists.txt2
-rw-r--r--jrt_test/src/tests/connect-close/Test.java2
-rw-r--r--jrt_test/src/tests/echo/CMakeLists.txt2
-rw-r--r--jrt_test/src/tests/echo/dotest.sh2
-rw-r--r--jrt_test/src/tests/echo/echo-client.cpp2
-rwxr-xr-xjrt_test/src/tests/echo/echo_test.sh2
-rw-r--r--jrt_test/src/tests/echo/progdefs.sh2
-rw-r--r--jrt_test/src/tests/garbage/CMakeLists.txt2
-rw-r--r--jrt_test/src/tests/garbage/Garbage.java2
-rw-r--r--jrt_test/src/tests/hello-world/CMakeLists.txt2
-rw-r--r--jrt_test/src/tests/mandatory-methods/CMakeLists.txt2
-rw-r--r--jrt_test/src/tests/mandatory-methods/RPCServer.java2
-rw-r--r--jrt_test/src/tests/mandatory-methods/dotest.sh2
-rw-r--r--jrt_test/src/tests/mandatory-methods/extract-reflection.cpp2
-rwxr-xr-xjrt_test/src/tests/mandatory-methods/mandatory-methods_test.sh2
-rw-r--r--jrt_test/src/tests/mandatory-methods/progdefs.sh2
-rw-r--r--jrt_test/src/tests/mockup-invoke/CMakeLists.txt2
-rw-r--r--jrt_test/src/tests/mockup-invoke/MockupInvoke.java2
-rw-r--r--jrt_test/src/tests/mockup-invoke/dotest.sh2
-rwxr-xr-xjrt_test/src/tests/mockup-invoke/mockup-invoke_test.sh2
-rw-r--r--jrt_test/src/tests/mockup-invoke/mockup-server.cpp2
-rw-r--r--jrt_test/src/tests/mockup-invoke/progdefs.sh2
-rw-r--r--jrt_test/src/tests/rpc-error/CMakeLists.txt2
-rw-r--r--jrt_test/src/tests/rpc-error/TestErrors.java2
-rw-r--r--jrt_test/src/tests/rpc-error/dotest.sh2
-rw-r--r--jrt_test/src/tests/rpc-error/progdefs.sh2
-rwxr-xr-xjrt_test/src/tests/rpc-error/rpc-error_test.sh2
-rw-r--r--jrt_test/src/tests/rpc-error/test-errors.cpp2
-rw-r--r--jrt_test/src/tests/slobrok-api/CMakeLists.txt2
-rw-r--r--jrt_test/src/tests/slobrok-api/SlobrokAPITest.java2
-rwxr-xr-xjrt_test/src/tests/slobrok-api/dotest.sh2
-rw-r--r--jrt_test/src/tests/slobrok-api/progdefs.sh2
-rw-r--r--juniper/CMakeLists.txt2
-rw-r--r--juniper/doc/written/fsearchparams.html2
-rw-r--r--juniper/src/Doxyfile2
-rw-r--r--juniper/src/rpclient/testclient.rc2
-rw-r--r--juniper/src/test/CMakeLists.txt2
-rw-r--r--juniper/src/test/SrcTestSuite.cpp2
-rw-r--r--juniper/src/test/appender_test.cpp2
-rw-r--r--juniper/src/test/auxTest.cpp2
-rw-r--r--juniper/src/test/auxTest.h2
-rw-r--r--juniper/src/test/auxTestApp.cpp2
-rw-r--r--juniper/src/test/fakerewriter.cpp2
-rw-r--r--juniper/src/test/fakerewriter.h2
-rw-r--r--juniper/src/test/matchobjectTest.cpp2
-rw-r--r--juniper/src/test/matchobjectTest.h2
-rw-r--r--juniper/src/test/matchobjectTestApp.cpp2
-rw-r--r--juniper/src/test/mcandTest.cpp2
-rw-r--r--juniper/src/test/mcandTest.h2
-rw-r--r--juniper/src/test/mcandTestApp.cpp2
-rw-r--r--juniper/src/test/queryparserTest.cpp2
-rw-r--r--juniper/src/test/queryparserTest.h2
-rw-r--r--juniper/src/test/queryparserTestApp.cpp2
-rw-r--r--juniper/src/test/queryvisitor_test.cpp2
-rw-r--r--juniper/src/test/testenv.cpp2
-rw-r--r--juniper/src/test/testenv.h2
-rw-r--r--juniper/src/testproject.el2
-rw-r--r--juniper/src/vespa/juniper/CMakeLists.txt2
-rw-r--r--juniper/src/vespa/juniper/IJuniperProperties.h2
-rw-r--r--juniper/src/vespa/juniper/ITokenProcessor.h2
-rw-r--r--juniper/src/vespa/juniper/Matcher.cpp2
-rw-r--r--juniper/src/vespa/juniper/Matcher.h2
-rw-r--r--juniper/src/vespa/juniper/SummaryConfig.cpp2
-rw-r--r--juniper/src/vespa/juniper/SummaryConfig.h2
-rw-r--r--juniper/src/vespa/juniper/appender.h2
-rw-r--r--juniper/src/vespa/juniper/charutil.h2
-rw-r--r--juniper/src/vespa/juniper/config.cpp2
-rw-r--r--juniper/src/vespa/juniper/config.h2
-rw-r--r--juniper/src/vespa/juniper/dpinterface.cpp2
-rw-r--r--juniper/src/vespa/juniper/dpinterface.h2
-rw-r--r--juniper/src/vespa/juniper/expcache.cpp2
-rw-r--r--juniper/src/vespa/juniper/expcache.h2
-rw-r--r--juniper/src/vespa/juniper/foreach_utils.h2
-rw-r--r--juniper/src/vespa/juniper/hashbase.h2
-rw-r--r--juniper/src/vespa/juniper/juniperdebug.h2
-rw-r--r--juniper/src/vespa/juniper/juniperparams.cpp2
-rw-r--r--juniper/src/vespa/juniper/juniperparams.h2
-rw-r--r--juniper/src/vespa/juniper/keyocc.cpp2
-rw-r--r--juniper/src/vespa/juniper/keyocc.h2
-rw-r--r--juniper/src/vespa/juniper/matchelem.cpp2
-rw-r--r--juniper/src/vespa/juniper/matchelem.h2
-rw-r--r--juniper/src/vespa/juniper/matchobject.cpp2
-rw-r--r--juniper/src/vespa/juniper/matchobject.h2
-rw-r--r--juniper/src/vespa/juniper/mcand.cpp2
-rw-r--r--juniper/src/vespa/juniper/mcand.h2
-rw-r--r--juniper/src/vespa/juniper/propreader.cpp2
-rw-r--r--juniper/src/vespa/juniper/propreader.h2
-rw-r--r--juniper/src/vespa/juniper/query.h2
-rw-r--r--juniper/src/vespa/juniper/queryhandle.cpp2
-rw-r--r--juniper/src/vespa/juniper/queryhandle.h2
-rw-r--r--juniper/src/vespa/juniper/querymodifier.cpp2
-rw-r--r--juniper/src/vespa/juniper/querymodifier.h2
-rw-r--r--juniper/src/vespa/juniper/querynode.cpp2
-rw-r--r--juniper/src/vespa/juniper/querynode.h2
-rw-r--r--juniper/src/vespa/juniper/queryparser.cpp2
-rw-r--r--juniper/src/vespa/juniper/queryparser.h2
-rw-r--r--juniper/src/vespa/juniper/queryvisitor.cpp2
-rw-r--r--juniper/src/vespa/juniper/queryvisitor.h2
-rw-r--r--juniper/src/vespa/juniper/reducematcher.cpp2
-rw-r--r--juniper/src/vespa/juniper/reducematcher.h2
-rw-r--r--juniper/src/vespa/juniper/result.cpp2
-rw-r--r--juniper/src/vespa/juniper/result.h2
-rw-r--r--juniper/src/vespa/juniper/rewriter.h2
-rw-r--r--juniper/src/vespa/juniper/rpinterface.cpp2
-rw-r--r--juniper/src/vespa/juniper/rpinterface.h2
-rw-r--r--juniper/src/vespa/juniper/simplemap.h2
-rw-r--r--juniper/src/vespa/juniper/specialtokenregistry.cpp2
-rw-r--r--juniper/src/vespa/juniper/specialtokenregistry.h2
-rw-r--r--juniper/src/vespa/juniper/stringmap.cpp2
-rw-r--r--juniper/src/vespa/juniper/stringmap.h2
-rw-r--r--juniper/src/vespa/juniper/sumdesc.cpp2
-rw-r--r--juniper/src/vespa/juniper/sumdesc.h2
-rw-r--r--juniper/src/vespa/juniper/tokenizer.cpp2
-rw-r--r--juniper/src/vespa/juniper/tokenizer.h2
-rw-r--r--linguistics-components/.gitignore5
-rw-r--r--linguistics-components/CMakeLists.txt5
-rw-r--r--linguistics-components/OWNERS2
-rw-r--r--linguistics-components/README4
-rw-r--r--linguistics-components/abi-spec.json189
-rw-r--r--linguistics-components/pom.xml80
-rw-r--r--linguistics-components/src/main/java/com/yahoo/language/sentencepiece/Model.java60
-rw-r--r--linguistics-components/src/main/java/com/yahoo/language/sentencepiece/ResultBuilder.java47
-rw-r--r--linguistics-components/src/main/java/com/yahoo/language/sentencepiece/Scoring.java17
-rw-r--r--linguistics-components/src/main/java/com/yahoo/language/sentencepiece/SentencePieceAlgorithm.java90
-rw-r--r--linguistics-components/src/main/java/com/yahoo/language/sentencepiece/SentencePieceEmbedder.java223
-rw-r--r--linguistics-components/src/main/java/com/yahoo/language/sentencepiece/TokenType.java13
-rw-r--r--linguistics-components/src/main/java/com/yahoo/language/sentencepiece/Trie.java36
-rw-r--r--linguistics-components/src/main/java/com/yahoo/language/sentencepiece/package-info.java7
-rw-r--r--linguistics-components/src/main/protobuf/sentencepiece_model.proto310
-rw-r--r--linguistics-components/src/main/resources/configdefinitions/language.sentencepiece.sentence-piece.def18
-rw-r--r--linguistics-components/src/test/java/com/yahoo/language/sentencepiece/SentencePieceConfigurationTest.java59
-rw-r--r--linguistics-components/src/test/java/com/yahoo/language/sentencepiece/SentencePieceTest.java89
-rw-r--r--linguistics-components/src/test/java/com/yahoo/language/sentencepiece/SentencePieceTester.java50
-rw-r--r--linguistics-components/src/test/models/sentencepiece/en.wiki.bpe.vs10000.modelbin0 -> 400869 bytes
-rw-r--r--linguistics-components/src/test/models/sentencepiece/ja.wiki.bpe.vs5000.modelbin0 -> 300865 bytes
-rw-r--r--linguistics/abi-spec.json49
-rw-r--r--linguistics/pom.xml6
-rw-r--r--linguistics/src/main/java/com/yahoo/language/Language.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/Linguistics.java5
-rw-r--r--linguistics/src/main/java/com/yahoo/language/LinguisticsCase.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/LocaleFactory.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/detect/AbstractDetector.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/detect/Detection.java3
-rw-r--r--linguistics/src/main/java/com/yahoo/language/detect/DetectionException.java5
-rw-r--r--linguistics/src/main/java/com/yahoo/language/detect/Detector.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/detect/Hint.java7
-rw-r--r--linguistics/src/main/java/com/yahoo/language/detect/package-info.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/opennlp/OpenNlpLinguistics.java6
-rw-r--r--linguistics/src/main/java/com/yahoo/language/opennlp/OpenNlpTokenizer.java5
-rw-r--r--linguistics/src/main/java/com/yahoo/language/opennlp/OptimaizeDetector.java10
-rw-r--r--linguistics/src/main/java/com/yahoo/language/opennlp/package-info.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/package-info.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/process/CharacterClasses.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/process/Embedder.java96
-rw-r--r--linguistics/src/main/java/com/yahoo/language/process/GramSplitter.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/process/Normalizer.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/process/ProcessingException.java3
-rw-r--r--linguistics/src/main/java/com/yahoo/language/process/Segmenter.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/process/SegmenterImpl.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/process/SpecialTokenRegistry.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/process/SpecialTokens.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/process/StemList.java6
-rw-r--r--linguistics/src/main/java/com/yahoo/language/process/StemMode.java18
-rw-r--r--linguistics/src/main/java/com/yahoo/language/process/Stemmer.java8
-rw-r--r--linguistics/src/main/java/com/yahoo/language/process/StemmerImpl.java3
-rw-r--r--linguistics/src/main/java/com/yahoo/language/process/Token.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/process/TokenScript.java4
-rw-r--r--linguistics/src/main/java/com/yahoo/language/process/TokenType.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/process/Tokenizer.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/process/Transformer.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/process/package-info.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/SimpleDetector.java11
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/SimpleLinguistics.java5
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/SimpleNormalizer.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/SimpleToken.java7
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/SimpleTokenType.java3
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/SimpleTokenizer.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/SimpleTransformer.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/kstem/CharArrayMap.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/kstem/CharArraySet.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/kstem/CharacterUtils.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData1.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData2.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData3.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData4.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData5.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData6.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData7.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData8.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemmer.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/kstem/OpenStringBuilder.java2
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/package-info.java2
-rw-r--r--linguistics/src/main/resources/configdefinitions/language.opennlp.opennlp-linguistics.def2
-rw-r--r--linguistics/src/test/java/com/yahoo/language/LanguageTestCase.java2
-rw-r--r--linguistics/src/test/java/com/yahoo/language/LocaleFactoryTestCase.java2
-rw-r--r--linguistics/src/test/java/com/yahoo/language/detect/AbstractDetectorTestCase.java2
-rw-r--r--linguistics/src/test/java/com/yahoo/language/opennlp/OpenNlpTokenizationTestCase.java2
-rw-r--r--linguistics/src/test/java/com/yahoo/language/process/AbstractTokenizerTestCase.java2
-rw-r--r--linguistics/src/test/java/com/yahoo/language/process/GramSplitterTestCase.java2
-rw-r--r--linguistics/src/test/java/com/yahoo/language/process/NormalizationTestCase.java2
-rw-r--r--linguistics/src/test/java/com/yahoo/language/process/ProcessingExceptionTestCase.java2
-rw-r--r--linguistics/src/test/java/com/yahoo/language/process/SegmenterImplTestCase.java2
-rw-r--r--linguistics/src/test/java/com/yahoo/language/process/SpecialTokensTestCase.java2
-rw-r--r--linguistics/src/test/java/com/yahoo/language/process/StemListTestCase.java2
-rw-r--r--linguistics/src/test/java/com/yahoo/language/process/StemmerImplTestCase.java2
-rw-r--r--linguistics/src/test/java/com/yahoo/language/process/TokenTypeTestCase.java2
-rw-r--r--linguistics/src/test/java/com/yahoo/language/process/TokenizationTestCase.java2
-rw-r--r--linguistics/src/test/java/com/yahoo/language/simple/SimpleDetectorTestCase.java2
-rw-r--r--linguistics/src/test/java/com/yahoo/language/simple/SimpleNormalizerTestCase.java2
-rw-r--r--linguistics/src/test/java/com/yahoo/language/simple/SimpleTokenTestCase.java2
-rw-r--r--linguistics/src/test/java/com/yahoo/language/simple/SimpleTokenTypeTestCase.java2
-rw-r--r--linguistics/src/test/java/com/yahoo/language/simple/SimpleTokenizerTestCase.java2
-rw-r--r--linguistics/src/test/java/com/yahoo/language/simple/SimpleTransformerTestCase.java2
-rw-r--r--linguistics/src/test/java/com/yahoo/language/simple/TokenizerTester.java2
-rw-r--r--logd/CMakeLists.txt2
-rw-r--r--logd/pom.xml2
-rw-r--r--logd/src/apps/logd/CMakeLists.txt2
-rw-r--r--logd/src/apps/logd/main.cpp2
-rwxr-xr-xlogd/src/apps/retention/retention-enforcer.sh2
-rw-r--r--logd/src/logd/CMakeLists.txt2
-rw-r--r--logd/src/logd/config_subscriber.cpp2
-rw-r--r--logd/src/logd/config_subscriber.h2
-rw-r--r--logd/src/logd/empty_forwarder.cpp2
-rw-r--r--logd/src/logd/empty_forwarder.h2
-rw-r--r--logd/src/logd/exceptions.h2
-rw-r--r--logd/src/logd/log_protocol_proto.h2
-rw-r--r--logd/src/logd/metrics.cpp2
-rw-r--r--logd/src/logd/metrics.h2
-rw-r--r--logd/src/logd/state_reporter.cpp2
-rw-r--r--logd/src/logd/state_reporter.h2
-rw-r--r--logd/src/logd/watcher.cpp2
-rw-r--r--logd/src/logd/watcher.h2
-rw-r--r--logd/src/main/resources/configdefinitions/logd.def4
-rw-r--r--logd/src/tests/empty_forwarder/CMakeLists.txt2
-rw-r--r--logd/src/tests/empty_forwarder/empty_forwarder_test.cpp2
-rw-r--r--logd/src/tests/rotate/CMakeLists.txt2
-rwxr-xr-xlogd/src/tests/rotate/create_configfile.sh2
-rw-r--r--logd/src/tests/rotate/dummylogger.cpp2
-rw-r--r--logd/src/tests/rotate/dummyserver.cpp2
-rwxr-xr-xlogd/src/tests/rotate/rotate_test.sh2
-rw-r--r--logforwarder/CMakeLists.txt2
-rw-r--r--logforwarder/src/apps/vespa-logforwarder-start/CMakeLists.txt2
-rw-r--r--logforwarder/src/apps/vespa-logforwarder-start/cf-handler.cpp2
-rw-r--r--logforwarder/src/apps/vespa-logforwarder-start/cf-handler.h2
-rw-r--r--logforwarder/src/apps/vespa-logforwarder-start/child-handler.cpp2
-rw-r--r--logforwarder/src/apps/vespa-logforwarder-start/child-handler.h2
-rw-r--r--logforwarder/src/apps/vespa-logforwarder-start/main.cpp2
-rw-r--r--logserver/CMakeLists.txt2
-rwxr-xr-xlogserver/bin/logserver-start.sh2
-rw-r--r--logserver/pom.xml2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/AbstractPluginLoader.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/BuiltinPluginLoader.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/Flusher.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/LogDispatcher.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/PluginLoader.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/Server.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/filter/LevelFilter.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/filter/LogFilter.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/filter/LogFilterManager.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/filter/MetricsFilter.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/filter/MuteFilter.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/filter/NoMetricsFilter.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/filter/NullFilter.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/handlers/AbstractLogHandler.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/handlers/HandlerThread.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/handlers/LogHandler.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/handlers/archive/ArchiverHandler.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/handlers/archive/ArchiverPlugin.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/handlers/archive/LogWriter.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/handlers/archive/LogWriterLRUCache.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/handlers/logmetrics/LogMetricsHandler.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/handlers/logmetrics/LogMetricsPlugin.java2
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/testutils/VerifyLogfile.java2
-rw-r--r--logserver/src/main/java/com/yahoo/plugin/Config.java2
-rw-r--r--logserver/src/main/java/com/yahoo/plugin/Plugin.java2
-rw-r--r--logserver/src/main/java/com/yahoo/plugin/SystemPropertyConfig.java2
-rw-r--r--logserver/src/test/java/com/yahoo/logserver/FlusherTestCase.java2
-rw-r--r--logserver/src/test/java/com/yahoo/logserver/ServerTestCase.java2
-rw-r--r--logserver/src/test/java/com/yahoo/logserver/filter/test/LogFilterManagerTestCase.java2
-rw-r--r--logserver/src/test/java/com/yahoo/logserver/filter/test/MetricsFilterTestCase.java2
-rw-r--r--logserver/src/test/java/com/yahoo/logserver/filter/test/NoMetricsFilterTestCase.java2
-rw-r--r--logserver/src/test/java/com/yahoo/logserver/handlers/HandlerThreadTestCase.java2
-rw-r--r--logserver/src/test/java/com/yahoo/logserver/handlers/archive/ArchiverHandlerTestCase.java2
-rw-r--r--logserver/src/test/java/com/yahoo/logserver/handlers/logmetrics/test/LogMetricsTestCase.java2
-rw-r--r--logserver/src/test/java/com/yahoo/logserver/test/LogDispatcherTestCase.java2
-rw-r--r--lowercasing_test/CMakeLists.txt2
-rw-r--r--lowercasing_test/src/binref/CMakeLists.txt2
-rwxr-xr-xlowercasing_test/src/binref/compilejava.in2
-rw-r--r--lowercasing_test/src/binref/env.sh.in2
-rwxr-xr-xlowercasing_test/src/binref/runjava.in2
-rw-r--r--lowercasing_test/src/tests/lowercasing/CMakeLists.txt2
-rw-r--r--lowercasing_test/src/tests/lowercasing/CasingVariants.java2
-rw-r--r--lowercasing_test/src/tests/lowercasing/casingvariants_fastlib.cpp2
-rw-r--r--lowercasing_test/src/tests/lowercasing/casingvariants_vespalib.cpp2
-rwxr-xr-xlowercasing_test/src/tests/lowercasing/dotest.sh2
-rw-r--r--lowercasing_test/src/tests/lowercasing/fetchletters.py2
-rwxr-xr-xlowercasing_test/src/tests/lowercasing/lowercasing_test.sh2
-rw-r--r--maven-plugins/pom.xml7
-rw-r--r--messagebus/CMakeLists.txt2
-rw-r--r--messagebus/abi-spec.json28
-rw-r--r--messagebus/pom.xml2
-rw-r--r--messagebus/src/Doxyfile2
-rw-r--r--messagebus/src/apps/printversion/CMakeLists.txt2
-rw-r--r--messagebus/src/apps/printversion/printversion.cpp2
-rw-r--r--messagebus/src/main/config/messagebus.def2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/AllPassThrottlePolicy.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/CallStack.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/ConfigAgent.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/ConfigHandler.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/Connectable.java13
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/DestinationSession.java9
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/DestinationSessionParams.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/DynamicThrottlePolicy.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/EmptyReply.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/Error.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/ErrorCode.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/IntermediateSession.java9
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/IntermediateSessionParams.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/Message.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java68
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/MessageBusParams.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/MessageHandler.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/Messenger.java25
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/NetworkMessageBus.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/Protocol.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/ProtocolRepository.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/RPCMessageBus.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/RateThrottlingPolicy.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/Reply.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/ReplyHandler.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/Result.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/Routable.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/SendProxy.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/SourceSession.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/SourceSessionParams.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/StaticThrottlePolicy.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/ThrottlePolicy.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/Trace.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/TraceLevel.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/TraceNode.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/Identity.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/Network.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/NetworkMultiplexer.java148
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/NetworkOwner.java13
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/ServiceAddress.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalNetwork.java4
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalServiceAddress.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalWire.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/package-info.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/rpc/NamedRPCService.java48
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCNetwork.java22
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCNetworkParams.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCSend.java54
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCSendAdapter.java9
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCSendV1.java5
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCSendV2.java11
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCService.java62
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCServiceAddress.java9
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCServicePool.java37
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCTarget.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCTargetPool.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/network/rpc/SlobrokConfigSubscriber.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/rpc/TcpRPCService.java23
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/rpc/package-info.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/network/rpc/test/SlobrokState.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/rpc/test/TestServer.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/rpc/test/package-info.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/package-info.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/routing/ApplicationSpec.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/routing/ErrorDirective.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/routing/Hop.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/routing/HopBlueprint.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/routing/HopDirective.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/routing/HopSpec.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/routing/PolicyDirective.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/routing/Resender.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/routing/RetryPolicy.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/routing/RetryTransientErrorsPolicy.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/routing/Route.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/routing/RouteDirective.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/routing/RouteParser.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/routing/RouteSpec.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/routing/RoutingContext.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/routing/RoutingNode.java10
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/routing/RoutingNodeIterator.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingPolicy.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingSpec.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingTable.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingTableSpec.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/routing/TcpDirective.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/routing/VerbatimDirective.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/routing/package-info.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/routing/test/CustomPolicy.java2
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/routing/test/CustomPolicyFactory.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/test/QueueAdapter.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/test/Receptor.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/test/SimpleMessage.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/test/SimpleProtocol.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/test/SimpleReply.java2
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/test/package-info.java2
-rwxr-xr-xmessagebus/src/test/java/com/yahoo/messagebus/ChokeTestCase.java2
-rwxr-xr-xmessagebus/src/test/java/com/yahoo/messagebus/ConfigAgentTestCase.java2
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/CustomTimer.java2
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/DynamicThrottlePolicyTest.java10
-rwxr-xr-xmessagebus/src/test/java/com/yahoo/messagebus/ErrorTestCase.java2
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/MessageBusTestCase.java2
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/MessengerTestCase.java2
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/ProtocolRepositoryTestCase.java2
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/RateThrottlingTestCase.java2
-rwxr-xr-xmessagebus/src/test/java/com/yahoo/messagebus/RoutableTestCase.java2
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/SendProxyTestCase.java2
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java2
-rwxr-xr-xmessagebus/src/test/java/com/yahoo/messagebus/SimpleTripTestCase.java2
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/ThrottlerTestCase.java2
-rwxr-xr-xmessagebus/src/test/java/com/yahoo/messagebus/TimeoutTestCase.java2
-rwxr-xr-xmessagebus/src/test/java/com/yahoo/messagebus/TraceTestCase.java2
-rwxr-xr-xmessagebus/src/test/java/com/yahoo/messagebus/TraceTripTestCase.java2
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/network/IdentityTestCase.java2
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/network/NetworkMultiplexerTest.java196
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/network/local/LocalNetworkTest.java2
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/network/rpc/BasicNetworkTestCase.java2
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/network/rpc/LoadBalanceTestCase.java2
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/network/rpc/RPCNetworkTestCase.java2
-rwxr-xr-xmessagebus/src/test/java/com/yahoo/messagebus/network/rpc/SendAdapterTestCase.java2
-rwxr-xr-xmessagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServiceAddressTestCase.java6
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServicePoolTestCase.java2
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/network/rpc/SlobrokTestCase.java2
-rwxr-xr-xmessagebus/src/test/java/com/yahoo/messagebus/network/rpc/TargetPoolTestCase.java2
-rwxr-xr-xmessagebus/src/test/java/com/yahoo/messagebus/routing/AdvancedRoutingTestCase.java2
-rwxr-xr-xmessagebus/src/test/java/com/yahoo/messagebus/routing/ResenderTestCase.java2
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/routing/RetryPolicyTestCase.java2
-rwxr-xr-xmessagebus/src/test/java/com/yahoo/messagebus/routing/RouteParserTestCase.java2
-rwxr-xr-xmessagebus/src/test/java/com/yahoo/messagebus/routing/RoutingContextTestCase.java2
-rwxr-xr-xmessagebus/src/test/java/com/yahoo/messagebus/routing/RoutingSpecTestCase.java2
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingTestCase.java2
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/test/QueueAdapterTestCase.java2
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/test/ReceptorTestCase.java2
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/test/SimpleMessageTestCase.java2
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/test/SimpleProtocolTestCase.java2
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/test/SimpleReplyTestCase.java2
-rw-r--r--messagebus/src/tests/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/advancedrouting/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/advancedrouting/advancedrouting.cpp2
-rw-r--r--messagebus/src/tests/auto-reply/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/auto-reply/auto-reply.cpp2
-rw-r--r--messagebus/src/tests/blob/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/blob/blob.cpp2
-rw-r--r--messagebus/src/tests/bucketsequence/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/bucketsequence/bucketsequence.cpp2
-rw-r--r--messagebus/src/tests/choke/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/choke/choke.cpp2
-rw-r--r--messagebus/src/tests/configagent/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/configagent/configagent.cpp2
-rw-r--r--messagebus/src/tests/context/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/context/context.cpp2
-rw-r--r--messagebus/src/tests/emptyreply/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/emptyreply/emptyreply.cpp2
-rw-r--r--messagebus/src/tests/error/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/error/error.cpp2
-rw-r--r--messagebus/src/tests/identity/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/identity/identity.cpp2
-rw-r--r--messagebus/src/tests/messagebus/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/messagebus/messagebus.cpp2
-rw-r--r--messagebus/src/tests/messageordering/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/messageordering/messageordering.cpp2
-rw-r--r--messagebus/src/tests/messenger/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/messenger/messenger.cpp2
-rw-r--r--messagebus/src/tests/protocolrepository/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/protocolrepository/protocolrepository.cpp2
-rw-r--r--messagebus/src/tests/queue/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/queue/queue.cpp2
-rw-r--r--messagebus/src/tests/replygate/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/replygate/replygate.cpp2
-rw-r--r--messagebus/src/tests/resender/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/resender/resender.cpp2
-rw-r--r--messagebus/src/tests/result/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/result/result.cpp2
-rw-r--r--messagebus/src/tests/retrypolicy/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/retrypolicy/retrypolicy.cpp2
-rw-r--r--messagebus/src/tests/routable/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/routable/routable.cpp2
-rw-r--r--messagebus/src/tests/routablequeue/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/routablequeue/routablequeue.cpp2
-rw-r--r--messagebus/src/tests/routeparser/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/routeparser/routeparser.cpp2
-rw-r--r--messagebus/src/tests/routing/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/routing/routing.cpp2
-rw-r--r--messagebus/src/tests/routingcontext/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/routingcontext/routingcontext.cpp2
-rw-r--r--messagebus/src/tests/routingspec/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/routingspec/routingspec.cpp2
-rw-r--r--messagebus/src/tests/rpcserviceaddress/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/rpcserviceaddress/rpcserviceaddress.cpp2
-rw-r--r--messagebus/src/tests/sendadapter/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/sendadapter/sendadapter.cpp2
-rw-r--r--messagebus/src/tests/sequencer/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/sequencer/sequencer.cpp2
-rw-r--r--messagebus/src/tests/serviceaddress/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/serviceaddress/serviceaddress.cpp2
-rw-r--r--messagebus/src/tests/servicepool/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/servicepool/servicepool.cpp2
-rw-r--r--messagebus/src/tests/shutdown/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/shutdown/shutdown.cpp2
-rw-r--r--messagebus/src/tests/simple-roundtrip/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/simple-roundtrip/simple-roundtrip.cpp2
-rw-r--r--messagebus/src/tests/simpleprotocol/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/simpleprotocol/simpleprotocol.cpp2
-rw-r--r--messagebus/src/tests/slobrok/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/slobrok/slobrok.cpp2
-rw-r--r--messagebus/src/tests/sourcesession/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/sourcesession/sourcesession.cpp2
-rw-r--r--messagebus/src/tests/targetpool/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/targetpool/targetpool.cpp2
-rw-r--r--messagebus/src/tests/throttling/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/throttling/throttling.cpp2
-rw-r--r--messagebus/src/tests/timeout/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/timeout/timeout.cpp2
-rw-r--r--messagebus/src/tests/trace-roundtrip/CMakeLists.txt2
-rw-r--r--messagebus/src/tests/trace-roundtrip/trace-roundtrip.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/CMakeLists.txt2
-rw-r--r--messagebus/src/vespa/messagebus/blob.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/blob.h2
-rw-r--r--messagebus/src/vespa/messagebus/blobref.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/blobref.h2
-rw-r--r--messagebus/src/vespa/messagebus/callstack.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/callstack.h2
-rw-r--r--messagebus/src/vespa/messagebus/common.h2
-rw-r--r--messagebus/src/vespa/messagebus/configagent.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/configagent.h2
-rw-r--r--messagebus/src/vespa/messagebus/context.h2
-rwxr-xr-xmessagebus/src/vespa/messagebus/create-class-cpp.sh4
-rwxr-xr-xmessagebus/src/vespa/messagebus/create-class-h.sh4
-rwxr-xr-xmessagebus/src/vespa/messagebus/create-interface.sh4
-rw-r--r--messagebus/src/vespa/messagebus/destinationsession.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/destinationsession.h2
-rw-r--r--messagebus/src/vespa/messagebus/destinationsessionparams.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/destinationsessionparams.h2
-rw-r--r--messagebus/src/vespa/messagebus/dynamicthrottlepolicy.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/dynamicthrottlepolicy.h2
-rw-r--r--messagebus/src/vespa/messagebus/emptyreply.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/emptyreply.h2
-rw-r--r--messagebus/src/vespa/messagebus/error.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/error.h2
-rw-r--r--messagebus/src/vespa/messagebus/errorcode.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/errorcode.h2
-rw-r--r--messagebus/src/vespa/messagebus/iconfighandler.h2
-rw-r--r--messagebus/src/vespa/messagebus/idiscardhandler.h2
-rw-r--r--messagebus/src/vespa/messagebus/imessagehandler.h2
-rw-r--r--messagebus/src/vespa/messagebus/intermediatesession.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/intermediatesession.h2
-rw-r--r--messagebus/src/vespa/messagebus/intermediatesessionparams.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/intermediatesessionparams.h2
-rw-r--r--messagebus/src/vespa/messagebus/iprotocol.h2
-rw-r--r--messagebus/src/vespa/messagebus/ireplyhandler.h2
-rw-r--r--messagebus/src/vespa/messagebus/ithrottlepolicy.h2
-rw-r--r--messagebus/src/vespa/messagebus/itimer.h2
-rw-r--r--messagebus/src/vespa/messagebus/message.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/message.h2
-rw-r--r--messagebus/src/vespa/messagebus/messagebus.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/messagebus.h2
-rw-r--r--messagebus/src/vespa/messagebus/messagebusparams.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/messagebusparams.h2
-rw-r--r--messagebus/src/vespa/messagebus/messenger.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/messenger.h2
-rw-r--r--messagebus/src/vespa/messagebus/network/CMakeLists.txt2
-rw-r--r--messagebus/src/vespa/messagebus/network/identity.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/network/identity.h2
-rw-r--r--messagebus/src/vespa/messagebus/network/inetwork.h2
-rw-r--r--messagebus/src/vespa/messagebus/network/inetworkowner.h2
-rw-r--r--messagebus/src/vespa/messagebus/network/iserviceaddress.h2
-rw-r--r--messagebus/src/vespa/messagebus/network/rpcnetwork.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/network/rpcnetwork.h2
-rw-r--r--messagebus/src/vespa/messagebus/network/rpcnetworkparams.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/network/rpcnetworkparams.h2
-rw-r--r--messagebus/src/vespa/messagebus/network/rpcsend.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/network/rpcsend.h2
-rw-r--r--messagebus/src/vespa/messagebus/network/rpcsend_private.h2
-rw-r--r--messagebus/src/vespa/messagebus/network/rpcsendadapter.h2
-rw-r--r--messagebus/src/vespa/messagebus/network/rpcsendv1.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/network/rpcsendv1.h2
-rw-r--r--messagebus/src/vespa/messagebus/network/rpcsendv2.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/network/rpcsendv2.h2
-rw-r--r--messagebus/src/vespa/messagebus/network/rpcservice.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/network/rpcservice.h2
-rw-r--r--messagebus/src/vespa/messagebus/network/rpcserviceaddress.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/network/rpcserviceaddress.h2
-rw-r--r--messagebus/src/vespa/messagebus/network/rpcservicepool.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/network/rpcservicepool.h2
-rw-r--r--messagebus/src/vespa/messagebus/network/rpctarget.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/network/rpctarget.h2
-rw-r--r--messagebus/src/vespa/messagebus/network/rpctargetpool.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/network/rpctargetpool.h2
-rw-r--r--messagebus/src/vespa/messagebus/protocolrepository.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/protocolrepository.h2
-rw-r--r--messagebus/src/vespa/messagebus/protocolset.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/protocolset.h2
-rw-r--r--messagebus/src/vespa/messagebus/queue.h2
-rw-r--r--messagebus/src/vespa/messagebus/reply.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/reply.h2
-rw-r--r--messagebus/src/vespa/messagebus/replygate.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/replygate.h2
-rw-r--r--messagebus/src/vespa/messagebus/result.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/result.h2
-rw-r--r--messagebus/src/vespa/messagebus/routable.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/routable.h2
-rw-r--r--messagebus/src/vespa/messagebus/routablequeue.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/routablequeue.h2
-rw-r--r--messagebus/src/vespa/messagebus/routing/CMakeLists.txt2
-rw-r--r--messagebus/src/vespa/messagebus/routing/errordirective.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/routing/errordirective.h2
-rw-r--r--messagebus/src/vespa/messagebus/routing/hop.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/routing/hop.h2
-rw-r--r--messagebus/src/vespa/messagebus/routing/hopblueprint.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/routing/hopblueprint.h2
-rw-r--r--messagebus/src/vespa/messagebus/routing/hopspec.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/routing/hopspec.h2
-rw-r--r--messagebus/src/vespa/messagebus/routing/ihopdirective.h2
-rw-r--r--messagebus/src/vespa/messagebus/routing/iretrypolicy.h2
-rw-r--r--messagebus/src/vespa/messagebus/routing/iroutingpolicy.h2
-rw-r--r--messagebus/src/vespa/messagebus/routing/policydirective.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/routing/policydirective.h2
-rw-r--r--messagebus/src/vespa/messagebus/routing/resender.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/routing/resender.h2
-rw-r--r--messagebus/src/vespa/messagebus/routing/retrytransienterrorspolicy.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/routing/retrytransienterrorspolicy.h2
-rw-r--r--messagebus/src/vespa/messagebus/routing/route.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/routing/route.h2
-rw-r--r--messagebus/src/vespa/messagebus/routing/routedirective.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/routing/routedirective.h2
-rw-r--r--messagebus/src/vespa/messagebus/routing/routeparser.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/routing/routeparser.h2
-rw-r--r--messagebus/src/vespa/messagebus/routing/routespec.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/routing/routespec.h2
-rw-r--r--messagebus/src/vespa/messagebus/routing/routingcontext.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/routing/routingcontext.h2
-rw-r--r--messagebus/src/vespa/messagebus/routing/routingnode.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/routing/routingnode.h2
-rw-r--r--messagebus/src/vespa/messagebus/routing/routingnodeiterator.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/routing/routingnodeiterator.h2
-rw-r--r--messagebus/src/vespa/messagebus/routing/routingspec.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/routing/routingspec.h2
-rw-r--r--messagebus/src/vespa/messagebus/routing/routingtable.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/routing/routingtable.h2
-rw-r--r--messagebus/src/vespa/messagebus/routing/routingtablespec.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/routing/routingtablespec.h2
-rw-r--r--messagebus/src/vespa/messagebus/routing/tcpdirective.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/routing/tcpdirective.h2
-rw-r--r--messagebus/src/vespa/messagebus/routing/verbatimdirective.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/routing/verbatimdirective.h2
-rw-r--r--messagebus/src/vespa/messagebus/rpcmessagebus.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/rpcmessagebus.h2
-rw-r--r--messagebus/src/vespa/messagebus/sendproxy.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/sendproxy.h2
-rw-r--r--messagebus/src/vespa/messagebus/sequencer.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/sequencer.h2
-rw-r--r--messagebus/src/vespa/messagebus/sourcesession.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/sourcesession.h2
-rw-r--r--messagebus/src/vespa/messagebus/sourcesessionparams.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/sourcesessionparams.h2
-rw-r--r--messagebus/src/vespa/messagebus/staticthrottlepolicy.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/staticthrottlepolicy.h2
-rw-r--r--messagebus/src/vespa/messagebus/steadytimer.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/steadytimer.h2
-rw-r--r--messagebus/src/vespa/messagebus/testlib/CMakeLists.txt2
-rwxr-xr-xmessagebus/src/vespa/messagebus/testlib/create-class-cpp.sh4
-rwxr-xr-xmessagebus/src/vespa/messagebus/testlib/create-class-h.sh4
-rwxr-xr-xmessagebus/src/vespa/messagebus/testlib/create-interface.sh4
-rw-r--r--messagebus/src/vespa/messagebus/testlib/custompolicy.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/testlib/custompolicy.h2
-rw-r--r--messagebus/src/vespa/messagebus/testlib/receptor.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/testlib/receptor.h2
-rw-r--r--messagebus/src/vespa/messagebus/testlib/simplemessage.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/testlib/simplemessage.h2
-rw-r--r--messagebus/src/vespa/messagebus/testlib/simpleprotocol.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/testlib/simpleprotocol.h2
-rw-r--r--messagebus/src/vespa/messagebus/testlib/simplereply.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/testlib/simplereply.h2
-rw-r--r--messagebus/src/vespa/messagebus/testlib/slobrok.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/testlib/slobrok.h2
-rw-r--r--messagebus/src/vespa/messagebus/testlib/slobrokstate.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/testlib/slobrokstate.h2
-rw-r--r--messagebus/src/vespa/messagebus/testlib/testserver.cpp2
-rw-r--r--messagebus/src/vespa/messagebus/testlib/testserver.h2
-rw-r--r--messagebus/src/vespa/messagebus/trace.h2
-rw-r--r--messagebus/src/vespa/messagebus/tracelevel.h2
-rw-r--r--messagebus_test/CMakeLists.txt2
-rw-r--r--messagebus_test/src/binref/CMakeLists.txt2
-rwxr-xr-xmessagebus_test/src/binref/compilejava.in2
-rw-r--r--messagebus_test/src/binref/env.sh.in2
-rwxr-xr-xmessagebus_test/src/binref/runjava.in2
-rw-r--r--messagebus_test/src/tests/compile-cpp/CMakeLists.txt2
-rw-r--r--messagebus_test/src/tests/compile-cpp/compile-cpp.cpp2
-rw-r--r--messagebus_test/src/tests/compile-java/CMakeLists.txt2
-rw-r--r--messagebus_test/src/tests/compile-java/TestCompile.java2
-rwxr-xr-xmessagebus_test/src/tests/compile-java/compile-java_test.sh2
-rw-r--r--messagebus_test/src/tests/error/CMakeLists.txt2
-rw-r--r--messagebus_test/src/tests/error/JavaClient.java2
-rw-r--r--messagebus_test/src/tests/error/JavaServer.java2
-rw-r--r--messagebus_test/src/tests/error/cpp-client.cpp2
-rw-r--r--messagebus_test/src/tests/error/cpp-server.cpp2
-rwxr-xr-xmessagebus_test/src/tests/error/ctl.sh2
-rw-r--r--messagebus_test/src/tests/error/error.cpp2
-rwxr-xr-xmessagebus_test/src/tests/error/error_test.sh2
-rw-r--r--messagebus_test/src/tests/error/progdefs.sh2
-rw-r--r--messagebus_test/src/tests/errorcodes/CMakeLists.txt2
-rw-r--r--messagebus_test/src/tests/errorcodes/DumpCodes.java2
-rw-r--r--messagebus_test/src/tests/errorcodes/dumpcodes.cpp2
-rwxr-xr-xmessagebus_test/src/tests/errorcodes/errorcodes_test.sh2
-rw-r--r--messagebus_test/src/tests/speed/CMakeLists.txt2
-rw-r--r--messagebus_test/src/tests/speed/JavaClient.java2
-rw-r--r--messagebus_test/src/tests/speed/JavaServer.java2
-rw-r--r--messagebus_test/src/tests/speed/cpp-client.cpp2
-rw-r--r--messagebus_test/src/tests/speed/cpp-server.cpp2
-rwxr-xr-xmessagebus_test/src/tests/speed/ctl.sh2
-rw-r--r--messagebus_test/src/tests/speed/progdefs.sh2
-rw-r--r--messagebus_test/src/tests/speed/speed.cpp2
-rwxr-xr-xmessagebus_test/src/tests/speed/speed_test.sh2
-rw-r--r--messagebus_test/src/tests/trace/CMakeLists.txt2
-rw-r--r--messagebus_test/src/tests/trace/JavaServer.java2
-rw-r--r--messagebus_test/src/tests/trace/cpp-server.cpp2
-rwxr-xr-xmessagebus_test/src/tests/trace/ctl.sh2
-rw-r--r--messagebus_test/src/tests/trace/progdefs.sh2
-rw-r--r--messagebus_test/src/tests/trace/trace.cpp2
-rwxr-xr-xmessagebus_test/src/tests/trace/trace_test.sh2
-rw-r--r--metrics-proxy/CMakeLists.txt2
-rw-r--r--metrics-proxy/pom.xml7
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/ConfiguredMetric.java41
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsConsumers.java30
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java6
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java234
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsException.java14
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandler.java1
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsRetriever.java165
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ClusterIdDimensionProcessor.java2
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/Node.java6
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/NodeMetricsClient.java87
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/PublicDimensionsProcessor.java2
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ServiceIdDimensionProcessor.java2
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/yamas/YamasHandler.java4
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/yamas/YamasResponse.java34
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/AggregationKey.java4
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/ExternalMetrics.java25
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/Metric.java15
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/Metrics.java4
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/dimensions/PublicDimensions.java2
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ConsumerId.java4
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/Dimension.java13
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/DimensionId.java14
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricId.java13
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java26
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ServiceId.java4
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java3
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModel.java5
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java4
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/processing/MetricsProcessor.java2
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/ServiceHealthGatherer.java15
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/ConfigSentinelClient.java44
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/DummyMetricsFetcher.java5
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/HttpMetricFetcher.java2
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/MetricsParser.java56
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteHealthMetricFetcher.java11
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteMetricsFetcher.java24
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/SystemPoller.java8
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/VespaService.java30
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/VespaServices.java2
-rw-r--r--metrics-proxy/src/main/sh/start-telegraf.sh2
-rw-r--r--metrics-proxy/src/main/sh/stop-telegraf.sh2
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/core/MetricsManagerTest.java11
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/HttpHandlerTestBase.java3
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandlerTest.java4
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsRetrieverTest.java40
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ClusterIdDimensionProcessorTest.java2
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/NodeMetricsClientTest.java54
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/PublicDimensionsProcessorTest.java2
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ServiceIdDimensionProcessorTest.java2
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/MetricsTest.java13
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/MetricsPacketTest.java21
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcHealthMetricsTest.java2
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java17
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/ContainerServiceTest.java3
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/DownService.java3
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/DummyService.java12
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/MetricsFetcherTest.java34
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/VespaServiceTest.java3
-rw-r--r--metrics/CMakeLists.txt2
-rw-r--r--metrics/pom.xml2
-rw-r--r--metrics/src/tests/CMakeLists.txt2
-rw-r--r--metrics/src/tests/countmetrictest.cpp2
-rw-r--r--metrics/src/tests/metric_timer_test.cpp2
-rw-r--r--metrics/src/tests/metricmanagertest.cpp2
-rw-r--r--metrics/src/tests/metricsettest.cpp2
-rw-r--r--metrics/src/tests/metrictest.cpp2
-rw-r--r--metrics/src/tests/snapshottest.cpp2
-rw-r--r--metrics/src/tests/stresstest.cpp2
-rw-r--r--metrics/src/tests/summetrictest.cpp2
-rw-r--r--metrics/src/tests/valuemetrictest.cpp2
-rw-r--r--metrics/src/vespa/metrics/CMakeLists.txt2
-rw-r--r--metrics/src/vespa/metrics/common/CMakeLists.txt2
-rw-r--r--metrics/src/vespa/metrics/common/memory_usage_metrics.cpp2
-rw-r--r--metrics/src/vespa/metrics/common/memory_usage_metrics.h2
-rw-r--r--metrics/src/vespa/metrics/countmetric.cpp2
-rw-r--r--metrics/src/vespa/metrics/countmetric.h2
-rw-r--r--metrics/src/vespa/metrics/countmetric.hpp2
-rw-r--r--metrics/src/vespa/metrics/countmetricvalues.cpp2
-rw-r--r--metrics/src/vespa/metrics/countmetricvalues.h2
-rw-r--r--metrics/src/vespa/metrics/countmetricvalues.hpp2
-rw-r--r--metrics/src/vespa/metrics/jsonwriter.cpp2
-rw-r--r--metrics/src/vespa/metrics/jsonwriter.h2
-rw-r--r--metrics/src/vespa/metrics/memoryconsumption.cpp2
-rw-r--r--metrics/src/vespa/metrics/memoryconsumption.h2
-rw-r--r--metrics/src/vespa/metrics/metric.cpp2
-rw-r--r--metrics/src/vespa/metrics/metric.h2
-rw-r--r--metrics/src/vespa/metrics/metricmanager.cpp2
-rw-r--r--metrics/src/vespa/metrics/metricmanager.h4
-rw-r--r--metrics/src/vespa/metrics/metrics.h2
-rw-r--r--metrics/src/vespa/metrics/metricset.cpp2
-rw-r--r--metrics/src/vespa/metrics/metricset.h2
-rw-r--r--metrics/src/vespa/metrics/metricsmanager.def2
-rw-r--r--metrics/src/vespa/metrics/metricsnapshot.cpp2
-rw-r--r--metrics/src/vespa/metrics/metricsnapshot.h2
-rw-r--r--metrics/src/vespa/metrics/metrictimer.cpp2
-rw-r--r--metrics/src/vespa/metrics/metrictimer.h2
-rw-r--r--metrics/src/vespa/metrics/metricvalueset.cpp2
-rw-r--r--metrics/src/vespa/metrics/metricvalueset.h2
-rw-r--r--metrics/src/vespa/metrics/metricvalueset.hpp2
-rw-r--r--metrics/src/vespa/metrics/name_repo.cpp2
-rw-r--r--metrics/src/vespa/metrics/name_repo.h2
-rw-r--r--metrics/src/vespa/metrics/state_api_adapter.cpp2
-rw-r--r--metrics/src/vespa/metrics/state_api_adapter.h2
-rw-r--r--metrics/src/vespa/metrics/summetric.cpp2
-rw-r--r--metrics/src/vespa/metrics/summetric.h2
-rw-r--r--metrics/src/vespa/metrics/summetric.hpp2
-rw-r--r--metrics/src/vespa/metrics/textwriter.cpp2
-rw-r--r--metrics/src/vespa/metrics/textwriter.h2
-rw-r--r--metrics/src/vespa/metrics/updatehook.cpp2
-rw-r--r--metrics/src/vespa/metrics/updatehook.h2
-rw-r--r--metrics/src/vespa/metrics/valuemetric.cpp2
-rw-r--r--metrics/src/vespa/metrics/valuemetric.h2
-rw-r--r--metrics/src/vespa/metrics/valuemetric.hpp2
-rw-r--r--metrics/src/vespa/metrics/valuemetricvalues.cpp2
-rw-r--r--metrics/src/vespa/metrics/valuemetricvalues.h2
-rw-r--r--metrics/src/vespa/metrics/valuemetricvalues.hpp2
-rw-r--r--metrics/src/vespa/metrics/xmlwriter.cpp2
-rw-r--r--metrics/src/vespa/metrics/xmlwriter.h2
-rw-r--r--model-evaluation/CMakeLists.txt2
-rw-r--r--model-evaluation/abi-spec.json4
-rw-r--r--model-evaluation/pom.xml2
-rw-r--r--model-evaluation/src/main/java/ai/vespa/models/evaluation/Constant.java2
-rw-r--r--model-evaluation/src/main/java/ai/vespa/models/evaluation/FunctionEvaluator.java2
-rw-r--r--model-evaluation/src/main/java/ai/vespa/models/evaluation/FunctionReference.java15
-rw-r--r--model-evaluation/src/main/java/ai/vespa/models/evaluation/LazyArrayContext.java2
-rw-r--r--model-evaluation/src/main/java/ai/vespa/models/evaluation/LazyValue.java2
-rw-r--r--model-evaluation/src/main/java/ai/vespa/models/evaluation/Model.java2
-rw-r--r--model-evaluation/src/main/java/ai/vespa/models/evaluation/ModelsEvaluator.java15
-rw-r--r--model-evaluation/src/main/java/ai/vespa/models/evaluation/OnnxModel.java9
-rw-r--r--model-evaluation/src/main/java/ai/vespa/models/evaluation/RankProfilesConfigImporter.java61
-rw-r--r--model-evaluation/src/main/java/ai/vespa/models/evaluation/package-info.java2
-rw-r--r--model-evaluation/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java22
-rw-r--r--model-evaluation/src/test/java/ai/vespa/models/evaluation/MlModelsImportingTest.java4
-rw-r--r--model-evaluation/src/test/java/ai/vespa/models/evaluation/ModelTester.java32
-rw-r--r--model-evaluation/src/test/java/ai/vespa/models/evaluation/ModelsEvaluatorTest.java5
-rw-r--r--model-evaluation/src/test/java/ai/vespa/models/evaluation/OnnxEvaluatorTest.java2
-rw-r--r--model-evaluation/src/test/java/ai/vespa/models/evaluation/RankProfileImportingTest.java2
-rw-r--r--model-evaluation/src/test/java/ai/vespa/models/evaluation/RankProfilesConfigImporterWithMockedConstants.java51
-rw-r--r--model-evaluation/src/test/java/ai/vespa/models/evaluation/SmallConstantImportingTest.java2
-rw-r--r--model-evaluation/src/test/java/ai/vespa/models/handler/HandlerTester.java14
-rw-r--r--model-evaluation/src/test/java/ai/vespa/models/handler/ModelsEvaluationHandlerTest.java83
-rw-r--r--model-evaluation/src/test/java/ai/vespa/models/handler/OnnxEvaluationHandlerTest.java2
-rw-r--r--model-evaluation/src/test/resources/config/models/rank-profiles.cfg9
-rwxr-xr-xmodel-evaluation/src/test/resources/config/onnx/models/add_mul.py2
-rwxr-xr-xmodel-evaluation/src/test/resources/config/onnx/models/pytorch_one_layer.py2
-rw-r--r--model-evaluation/src/test/resources/config/rankexpression/constants/overflow.firstphase.expr1
-rw-r--r--model-evaluation/src/test/resources/config/rankexpression/constants/overflow.firstphase.expr.lz4bin0 -> 1520 bytes
-rw-r--r--model-evaluation/src/test/resources/config/rankexpression/rank-profiles.cfg10
-rw-r--r--model-evaluation/src/test/resources/config/rankexpression/rankexpression.sd2
-rw-r--r--model-evaluation/src/test/resources/config/rankexpression/ranking-expressions.cfg4
-rw-r--r--model-evaluation/src/test/resources/config/smallconstant/smallconstant.sd2
-rw-r--r--model-integration/CMakeLists.txt2
-rw-r--r--model-integration/README2
-rw-r--r--model-integration/pom.xml35
-rw-r--r--model-integration/src/main/config/model-integration.xml7
-rw-r--r--model-integration/src/main/java/ai/vespa/modelintegration/evaluator/OnnxEvaluator.java25
-rw-r--r--model-integration/src/main/java/ai/vespa/modelintegration/evaluator/OnnxEvaluatorOptions.java58
-rw-r--r--model-integration/src/main/java/ai/vespa/modelintegration/evaluator/TensorConverter.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/modelintegration/evaluator/package-info.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/DimensionRenamer.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/ImportedModel.java3
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/ImportedModels.java99
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/IntermediateGraph.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/ModelImporter.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/OrderedTensorType.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/configmodelview/ImportedMlFunction.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/configmodelview/ImportedMlModel.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/configmodelview/ImportedMlModels.java60
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/lightgbm/LightGBMImporter.java12
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/onnx/GraphImporter.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/onnx/OnnxImporter.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/onnx/TensorConverter.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/onnx/TypeConverter.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Argument.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/ConcatV2.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Const.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Constant.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/ConstantOfShape.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Expand.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/ExpandDims.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Identity.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/IntermediateOperation.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Join.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Map.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/MatMul.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Mean.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Merge.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/NoOp.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/OnnxConstant.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/PlaceholderWithDefault.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Range.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Reshape.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Select.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Shape.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Split.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Squeeze.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Sum.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Switch.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Tile.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Transpose.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/AttributeConverter.java87
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/GraphImporter.java254
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TensorConverter.java238
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TensorFlowImporter.java20
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TypeConverter.java128
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/VariableConverter.java59
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/xgboost/XGBoostImporter.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/xgboost/XGBoostParser.java2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/xgboost/XGBoostTree.java2
-rw-r--r--model-integration/src/main/java/org/tensorflow/package-info.java7
-rwxr-xr-xmodel-integration/src/main/python/vespa-convert-tf2onnx.py2
-rw-r--r--model-integration/src/test/java/ai/vespa/modelintegration/evaluator/OnnxEvaluatorTest.java2
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/DimensionRenamerTest.java2
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/OrderedTensorTypeTestCase.java2
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/OnnxMnistSoftmaxImportTestCase.java8
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/TestableModel.java40
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/Tf2OnnxImportTestCase.java153
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BatchNormImportTestCase.java43
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BlogEvaluationBenchmark.java116
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BlogEvaluationTestCase.java28
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/DropoutImportTestCase.java43
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/Issue9662TestCase.java28
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/MnistImportTestCase.java30
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/RegressionTestCase.java79
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/SoftmaxImportTestCase.java29
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/TensorFlowMnistSoftmaxImportTestCase.java73
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/TestableTensorFlowModel.java173
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/Tf2OnnxImportTestCase.java61
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/VariableConverterTestCase.java21
-rwxr-xr-xmodel-integration/src/test/models/lightgbm/train_lightgbm_classification.py2
-rwxr-xr-xmodel-integration/src/test/models/lightgbm/train_lightgbm_regression.py2
-rwxr-xr-xmodel-integration/src/test/models/onnx/add_double.py2
-rwxr-xr-xmodel-integration/src/test/models/onnx/add_float.py2
-rwxr-xr-xmodel-integration/src/test/models/onnx/add_int64.py2
-rwxr-xr-xmodel-integration/src/test/models/onnx/cast_bfloat16_float.py2
-rwxr-xr-xmodel-integration/src/test/models/onnx/cast_float_int8.py2
-rwxr-xr-xmodel-integration/src/test/models/onnx/cast_int8_float.py2
-rwxr-xr-xmodel-integration/src/test/models/onnx/pytorch/pytorch_one_layer.py2
-rwxr-xr-xmodel-integration/src/test/models/onnx/simple/concat.py2
-rw-r--r--model-integration/src/test/models/tensorflow/9662/saved_model.pbtxt1318
-rw-r--r--model-integration/src/test/models/tensorflow/batch_norm/batch_normalization_mnist.py95
-rw-r--r--model-integration/src/test/models/tensorflow/batch_norm/saved/saved_model.pbtxt32648
-rw-r--r--model-integration/src/test/models/tensorflow/batch_norm/saved/variables/variables.data-00000-of-00001bin1073000 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/batch_norm/saved/variables/variables.indexbin686 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/blog/saved/saved_model.pbtxt14726
-rw-r--r--model-integration/src/test/models/tensorflow/blog/saved/variables/variables.data-00000-of-00001bin1579020 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/blog/saved/variables/variables.indexbin520 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/dropout/dropout.py44
-rw-r--r--model-integration/src/test/models/tensorflow/dropout/saved/saved_model.pbtxt2875
-rw-r--r--model-integration/src/test/models/tensorflow/dropout/saved/variables/variables.data-00000-of-00001bin31400 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/dropout/saved/variables/variables.indexbin165 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/external/Model_A/optimized_v2/saved_model.pbtxt1368
-rw-r--r--model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/optimized/saved_model.pbtxt1368
-rw-r--r--model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/saved_model.pbtxt11403
-rw-r--r--model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/variables/variables.data-00000-of-00001bin48 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/variables/variables.indexbin393 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/optimized/saved_model.pbtxt959
-rw-r--r--model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/saved_model.pbtxt8622
-rw-r--r--model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/variables/variables.data-00000-of-00001bin24 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/variables/variables.indexbin209 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/external/modelv1/saved_model.pbbin170845 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/external/modelv1/variables/variables.data-00000-of-00001bin56124 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/external/modelv1/variables/variables.indexbin896 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/external/modelv2/saved_model.pbbin194189 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/external/modelv2/variables/variables.data-00000-of-00001bin56932 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/external/modelv2/variables/variables.indexbin1046 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/external/train.py53
-rw-r--r--model-integration/src/test/models/tensorflow/external/train_embed.py66
-rw-r--r--model-integration/src/test/models/tensorflow/mnist/saved/saved_model.pbtxt7982
-rw-r--r--model-integration/src/test/models/tensorflow/mnist/saved/variables/variables.data-00000-of-00001bin1066440 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/mnist/saved/variables/variables.indexbin308 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/mnist/simple_mnist.py98
-rw-r--r--model-integration/src/test/models/tensorflow/mnist_softmax/mnist_sftmax_with_saving.py90
-rw-r--r--model-integration/src/test/models/tensorflow/mnist_softmax/saved/saved_model.pbtxt5039
-rw-r--r--model-integration/src/test/models/tensorflow/mnist_softmax/saved/variables/variables.data-00000-of-00001bin31400 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/mnist_softmax/saved/variables/variables.indexbin159 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/saved_model.pbtxt5039
-rw-r--r--model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/variables/variables.data-00000-of-00001bin31400 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/variables/variables.indexbin159 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/regression/test1/saved_model.pbtxt6172
-rw-r--r--model-integration/src/test/models/tensorflow/regression/test1/variables/variables.data-00000-of-00001bin86072 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/regression/test1/variables/variables.indexbin159 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/regression/test2/saved_model.pbtxt389
-rw-r--r--model-integration/src/test/models/tensorflow/softmax/saved/saved_model.pbtxt1999
-rw-r--r--model-integration/src/test/models/tensorflow/softmax/saved/variables/variables.data-00000-of-00001bin72 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/softmax/saved/variables/variables.indexbin155 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/softmax/softmax.py29
-rw-r--r--node-admin/README.md2
-rw-r--r--node-admin/pom.xml12
-rw-r--r--node-admin/src/main/application/services.xml2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/ConfigServerInfo.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/IdempotentTask.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TaskContext.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TestTaskContext.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApi.java53
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApiImpl.java60
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerClients.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/HttpException.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/RealConfigServerClients.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/flags/RealFlagRepository.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/flags/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/Acl.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/AddNode.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/Event.java54
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NoSuchNodeException.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java20
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeMembership.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeRepository.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeRepositoryException.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java106
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/OrchestratorStatus.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java38
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/TrustStoreItem.java48
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/GetAclResponse.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/GetNodesResponse.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeMessageResponse.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java44
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/Orchestrator.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/OrchestratorException.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/OrchestratorImpl.java38
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/OrchestratorNotFoundException.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/HealthCode.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/State.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/StateImpl.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/bindings/HealthResponse.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/Cgroup.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/Container.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngine.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerId.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerName.java6
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerNetworkMode.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerOperations.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerResources.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerStats.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerStatsCollector.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/PartialContainer.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/RegistryCredentials.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/RegistryCredentialsProvider.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImageDownloader.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImagePruner.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/image/Image.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/image/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/DimensionMetrics.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/Metrics.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java4
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainer.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/FilterTableLineEditor.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/NatTableLineEditor.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollector.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpHandler.java16
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpReporter.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/CoredumpCleanupRule.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/DiskCleanup.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/DiskCleanupRule.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/LinearCleanupRule.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/AthenzCredentialsMaintainer.java16
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/AbstractProducer.java68
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/ArtifactProducer.java22
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/JavaFlightRecorder.java51
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/JvmDumpProducer.java30
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/PerfReportProducer.java40
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/ServiceDumpReport.java133
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumper.java13
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImpl.java185
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/package-info.java8
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/SyncClient.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/SyncFileInfo.java22
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/ZstdCompressingInputStream.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/ConvergenceException.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdmin.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImpl.java14
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java15
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/ContainerData.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgent.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContext.java6
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextFactory.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java51
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextManager.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextSupplier.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentFactory.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java13
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentScheduler.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentTask.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/UserNamespace.java53
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/DebugHandlerHelper.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/NodeAdminDebugHandler.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Cursor.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/CursorImpl.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/FileEditor.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Mark.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Match.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Position.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/StringEditor.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/TextBuffer.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/TextBufferImpl.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/TextUtil.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Version.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/AttributeSync.java54
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/DiskSize.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Editor.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/EditorFactory.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileAttributes.java55
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileAttributesCache.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileContentCache.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileFinder.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileSync.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileWriter.java10
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/IOExceptionUtil.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/LineEdit.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/LineEditor.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/MakeDirectory.java6
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/PartialFileData.java33
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/StoredInteger.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Template.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java41
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPAddresses.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPAddressesImpl.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPVersion.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcess2.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcess2Impl.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcessException.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcessFailureException.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/CommandLine.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/CommandResult.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/LargeOutputChildProcessException.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessApi2.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessApi2Impl.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessFactory.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessFactoryImpl.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessStarter.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessStarterImpl.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/Terminal.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TerminalImpl.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TestChildProcess2.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TestProcessFactory.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TestTerminal.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TimeoutChildProcessException.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/UnexpectedOutputException.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/UnkillableChildProcessException.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/systemd/SystemCtl.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/systemd/package-info.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/Yum.java4
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumCommand.java11
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java19
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/package-info.java2
-rwxr-xr-xnode-admin/src/main/sh/node-admin.sh2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApiImplTest.java4
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/flags/RealFlagRepositoryTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/AclTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/OrchestratorImplTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/state/HealthResponseTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/state/StateImplTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngineMock.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerNameTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerOperationsTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerStatsCollectorTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImageDownloaderTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImagePrunerTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/metrics/MetricsTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/ContainerFailTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/ContainerTester.java12
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/MultiContainerTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/NodeRepoMock.java61
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/RebootTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/RestartTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java6
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainerTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollectorTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpHandlerTest.java4
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/CoredumpCleanupRuleTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/DiskCleanupTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/LinearCleanupRuleTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImplTest.java191
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/SyncFileInfoTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/ZstdCompressingInputStreamTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImplTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java58
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextManagerTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java14
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/provider/DebugHandlerHelperTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/StringEditorTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/TextBufferImplTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/DiskSizeTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/EditorTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileAttributesCacheTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileContentCacheTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileFinderTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileSyncTest.java28
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileWriterTest.java14
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/MakeDirectoryTest.java22
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/TemplateTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPathTest.java26
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPAddressesMock.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPAddressesTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcess2ImplTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/CommandLineTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessFactoryImplTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/systemd/SystemCtlTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageNameTest.java8
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java31
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTesterTest.java13
-rw-r--r--node-repository/CMakeLists.txt2
-rw-r--r--node-repository/pom.xml10
-rw-r--r--node-repository/src/main/config/node-repository.xml2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/LockedNodeList.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NoSuchNodeException.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java112
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeMutex.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepoStats.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java6
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Nodelike.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodesAndHosts.java83
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Application.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Applications.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Cluster.java4
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/ScalingEvent.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Status.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java10
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocationOptimizer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Autoscaler.java25
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterMetricSnapshot.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterModel.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterNodesTimeseries.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterTimeseries.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Limits.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Load.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MemoryMetricsDb.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsDb.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsFetcher.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsResponse.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsV2MetricsFetcher.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricSnapshot.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/NodeTimeseries.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/QuestMetricsDb.java33
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ResourceTarget.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerId.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerService.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerServiceMock.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerSpec.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancers.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/Real.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerService.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/package-info.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java24
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainer.java11
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DirtyExpirer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java13
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ExpeditedChangeApplicationMaintainer.java68
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Expirer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java12
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypter.java5
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveExpirer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureProvisioner.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureVersions.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java8
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java5
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java20
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeHealthTracker.java5
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMetricsDbMaintainer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMover.java39
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooter.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintainer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainer.java13
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ProvisionedExpirer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Rebalancer.java17
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ScalingSuggestionsMaintainer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainer.java15
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/SwitchRebalancer.java13
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Address.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Agent.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Allocation.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/ClusterId.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Generation.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/History.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/IP.java23
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/NodeAcl.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java6
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Status.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/TrustStoreItem.java68
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ApplicationFilter.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeHostFilter.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeListFilter.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeOsVersionFilter.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeTypeFilter.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ParentHostFilter.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/StateFilter.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/package-info.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/DelegatingOsUpgrader.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsUpgrader.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersionChange.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersionTarget.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersions.java5
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RebuildingOsUpgrader.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringOsUpgrader.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/package-info.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/ApplicationSerializer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CacheStats.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabase.java4
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java6
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/DnsNameResolver.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/JobControlFlags.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/LoadBalancerSerializer.java5
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NameResolver.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeResourcesSerializer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java46
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeVersionsSerializer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/OsVersionChangeSerializer.java6
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/TenantArchiveUriSerializer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Activator.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ArchiveUris.java4
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java10
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/EmptyProvisionServiceProvider.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FlavorConfigBuilder.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java67
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostCapacity.java92
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostProvisioner.java5
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostResourcesCalculator.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java28
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeCandidate.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeIndices.java5
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java75
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java6
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeResourceLimits.java7
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java11
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java30
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionedHost.java23
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/package-info.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationPatcher.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationSerializer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ArchiveResponse.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/HostCapacityResponse.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/JobsResponse.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/LoadBalancersResponse.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/LoadBalancersV1ApiHandler.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/LocksResponse.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeAclResponse.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java19
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeResourcesSerializer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeSerializer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java20
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java4
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NotFoundException.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/UpgradeResponse.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ContainerConfig.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDeployer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDuperModel.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java7
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockMetricsFetcher.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNameResolver.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeFlavors.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockProvisioner.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/OrchestratorMock.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/README.md2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/TestHostLivenessTracker.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeListMicroBenchmarkTest.java106
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepoStatsTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTester.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/RealDataScenarioTest.java23
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/applications/ApplicationsTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingIntegrationTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java9
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java6
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterModelTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterTimeseriesTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsV2MetricsFetcherTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsDbTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/QuestMetricsDbTest.java29
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerServiceTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTester.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DirtyExpirerTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ExpeditedChangeApplicationMaintainerTest.java12
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypterTest.java8
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java8
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureVersionsTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java3
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java39
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailerTest.java164
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMetricsDbMaintainerTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooterTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RebalancerTest.java15
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirerTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ScalingSuggestionsMaintainerTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SwitchRebalancerTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/TestMetric.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/node/IPTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/ApplicationSerializerTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClientTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/LoadBalancerSerializerTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializerTest.java25
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeVersionsSerializerTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/OsVersionChangeSerializerTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/TenantArchiveUriSerializerTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationSimulator.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationSnapshot.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationVisualizer.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ArchiveUrisTest.java7
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicAllocationTest.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicProvisioningTest.java11
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/HostCapacityTest.java43
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InPlaceResizeProvisionTest.java27
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeIncidesTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java29
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java19
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ResourceCapacityTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningCompleteHostCalculatorTest.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java30
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationPatcherTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/LoadBalancersV1ApiTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodeSerializerTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java30
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/RestApiTester.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg1.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg2.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/controller1.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-container1.json2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-os-upgrade-complete.json2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-2.json11
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-3.json11
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-4.json11
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports.json11
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1.json2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node2.json2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node3.json2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node4.json2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node5.json2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/dockerhost1-with-firmware-data.json2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/dockerhost6.json10
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node1.json2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node10.json2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node11.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node13.json2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node14.json2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node2.json2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node3.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node4-after-changes.json2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node4-with-hostnames.json2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node4.json2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node5-after-changes.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node5.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node55.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node6.json2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node7.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node8.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node9.json1
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/parent2.json1
-rw-r--r--node-repository/src/test/resources/hosts.xml2
-rw-r--r--node-repository/src/test/resources/services.xml2
-rw-r--r--orchestrator-restapi/README.md2
-rw-r--r--orchestrator-restapi/pom.xml2
-rw-r--r--orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/BatchOperationResult.java2
-rw-r--r--orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/GetHostResponse.java2
-rw-r--r--orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/HostService.java2
-rw-r--r--orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/HostStateChangeDenialReason.java2
-rw-r--r--orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/PatchHostRequest.java2
-rw-r--r--orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/PatchHostResponse.java2
-rw-r--r--orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/SlobrokEntryResponse.java2
-rw-r--r--orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/UpdateHostResponse.java2
-rw-r--r--orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/WireHostInfo.java2
-rw-r--r--orchestrator/CMakeLists.txt2
-rw-r--r--orchestrator/README.md2
-rw-r--r--orchestrator/pom.xml2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/ApplicationIdNotFoundException.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/ApplicationStateChangeDeniedException.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/BatchHostNameNotFoundException.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/BatchInternalErrorException.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/Host.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/HostNameNotFoundException.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestrationException.java4
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/Orchestrator.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorContext.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorImpl.java46
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorUtil.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClient.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientFactory.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientImpl.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerJaxRsApi.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerNodeState.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerStateRequest.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerStateResponse.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/RetryingClusterControllerClientFactory.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ApplicationApi.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ApplicationApiFactory.java13
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ApplicationApiImpl.java11
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ClusterApi.java20
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ClusterApiImpl.java76
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/NodeGroup.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/StorageNode.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/StorageNodeImpl.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/VespaModelUtil.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/package-info.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/ApplicationParams.java68
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/BatchHostStateChangeDeniedException.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/ClusterParams.java61
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/ClusterPolicy.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/ConcurrentSuspensionLimitForCluster.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostStateChangeDeniedException.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaClusterPolicy.java236
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaOrchestration.java95
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaPolicy.java3
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/OrchestrationParams.java53
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/Policy.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/SuspensionReasons.java9
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionRequestHandler.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/HealthRequestHandler.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandler.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/HostSuspensionRequestHandler.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandler.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceStatusResponse.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/ApplicationInstanceStatus.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/ApplicationLock.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/HostInfosCache.java5
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/HostInfosServiceImpl.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/HostStatus.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/StatusService.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/ZkApplicationLock.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/ZkStatusService.java2
-rw-r--r--orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/package-info.java2
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/DummyAntiServiceMonitor.java2
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/DummyServiceMonitor.java2
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorImplTest.java4
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorTest.java10
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorUtilTest.java2
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/TestIds.java2
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/TestUtil.java2
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientFactoryMock.java2
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientTest.java2
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ApplicationApiImplTest.java4
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ClusterApiImplTest.java152
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ModelTestUtils.java22
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/NodeGroupTest.java2
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ScopedApplicationApi.java2
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/VespaModelUtilTest.java2
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/policy/HostedVespaClusterPolicyTest.java76
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/policy/HostedVespaPolicyTest.java4
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/policy/SuspensionReasonsTest.java2
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionRequestHandlerTest.java6
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java4
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostSuspensionRequestHandlerTest.java2
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandlerTest.java2
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/status/InMemoryStatusService.java2
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/status/ZkStatusServiceTest.java2
-rw-r--r--parent/pom.xml57
-rw-r--r--persistence/CMakeLists.txt2
-rw-r--r--persistence/src/Doxyfile2
-rw-r--r--persistence/src/tests/CMakeLists.txt2
-rw-r--r--persistence/src/tests/dummyimpl/CMakeLists.txt2
-rw-r--r--persistence/src/tests/dummyimpl/dummyimpltest.cpp2
-rw-r--r--persistence/src/tests/dummyimpl/dummypersistence_test.cpp2
-rw-r--r--persistence/src/tests/spi/CMakeLists.txt2
-rw-r--r--persistence/src/tests/spi/clusterstatetest.cpp2
-rw-r--r--persistence/src/tests/testrunner.cpp2
-rw-r--r--persistence/src/vespa/persistence/CMakeLists.txt2
-rw-r--r--persistence/src/vespa/persistence/conformancetest/CMakeLists.txt2
-rw-r--r--persistence/src/vespa/persistence/conformancetest/conformancetest.cpp2
-rw-r--r--persistence/src/vespa/persistence/conformancetest/conformancetest.h2
-rw-r--r--persistence/src/vespa/persistence/dummyimpl/CMakeLists.txt2
-rw-r--r--persistence/src/vespa/persistence/dummyimpl/dummy_bucket_executor.cpp2
-rw-r--r--persistence/src/vespa/persistence/dummyimpl/dummy_bucket_executor.h2
-rw-r--r--persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp2
-rw-r--r--persistence/src/vespa/persistence/dummyimpl/dummypersistence.h2
-rw-r--r--persistence/src/vespa/persistence/spi/CMakeLists.txt2
-rw-r--r--persistence/src/vespa/persistence/spi/abstractpersistenceprovider.cpp2
-rw-r--r--persistence/src/vespa/persistence/spi/abstractpersistenceprovider.h2
-rw-r--r--persistence/src/vespa/persistence/spi/attribute_resource_usage.cpp2
-rw-r--r--persistence/src/vespa/persistence/spi/attribute_resource_usage.h4
-rw-r--r--persistence/src/vespa/persistence/spi/bucket.cpp2
-rw-r--r--persistence/src/vespa/persistence/spi/bucket.h2
-rw-r--r--persistence/src/vespa/persistence/spi/bucket_limits.h2
-rw-r--r--persistence/src/vespa/persistence/spi/bucket_tasks.h2
-rw-r--r--persistence/src/vespa/persistence/spi/bucketexecutor.h2
-rw-r--r--persistence/src/vespa/persistence/spi/bucketinfo.cpp2
-rw-r--r--persistence/src/vespa/persistence/spi/bucketinfo.h2
-rw-r--r--persistence/src/vespa/persistence/spi/clusterstate.cpp2
-rw-r--r--persistence/src/vespa/persistence/spi/clusterstate.h2
-rw-r--r--persistence/src/vespa/persistence/spi/context.cpp2
-rw-r--r--persistence/src/vespa/persistence/spi/context.h2
-rw-r--r--persistence/src/vespa/persistence/spi/docentry.cpp2
-rw-r--r--persistence/src/vespa/persistence/spi/docentry.h2
-rw-r--r--persistence/src/vespa/persistence/spi/documentselection.h2
-rw-r--r--persistence/src/vespa/persistence/spi/exceptions.cpp2
-rw-r--r--persistence/src/vespa/persistence/spi/exceptions.h2
-rw-r--r--persistence/src/vespa/persistence/spi/i_resource_usage_listener.h2
-rw-r--r--persistence/src/vespa/persistence/spi/operationcomplete.h2
-rw-r--r--persistence/src/vespa/persistence/spi/persistenceprovider.cpp2
-rw-r--r--persistence/src/vespa/persistence/spi/persistenceprovider.h2
-rw-r--r--persistence/src/vespa/persistence/spi/read_consistency.cpp2
-rw-r--r--persistence/src/vespa/persistence/spi/read_consistency.h2
-rw-r--r--persistence/src/vespa/persistence/spi/resource_usage.cpp5
-rw-r--r--persistence/src/vespa/persistence/spi/resource_usage.h19
-rw-r--r--persistence/src/vespa/persistence/spi/resource_usage_listener.cpp2
-rw-r--r--persistence/src/vespa/persistence/spi/resource_usage_listener.h2
-rw-r--r--persistence/src/vespa/persistence/spi/result.cpp2
-rw-r--r--persistence/src/vespa/persistence/spi/result.h2
-rw-r--r--persistence/src/vespa/persistence/spi/selection.cpp2
-rw-r--r--persistence/src/vespa/persistence/spi/selection.h2
-rw-r--r--persistence/src/vespa/persistence/spi/test.cpp2
-rw-r--r--persistence/src/vespa/persistence/spi/test.h2
-rw-r--r--persistencetypes/CMakeLists.txt2
-rw-r--r--persistencetypes/src/persistence/CMakeLists.txt2
-rw-r--r--persistencetypes/src/persistence/spi/CMakeLists.txt2
-rw-r--r--persistencetypes/src/persistence/spi/types.cpp2
-rw-r--r--persistencetypes/src/persistence/spi/types.h2
-rw-r--r--pom.xml12
-rw-r--r--predicate-search-core/README.md2
-rw-r--r--predicate-search-core/pom.xml2
-rw-r--r--predicate-search-core/src/main/antlr3/com/yahoo/document/predicate/parser/Predicate.g2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/document/predicate/BinaryFormat.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/document/predicate/BooleanPredicate.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/document/predicate/Conjunction.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/document/predicate/Disjunction.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/document/predicate/FeatureConjunction.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/document/predicate/FeatureRange.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/document/predicate/FeatureSet.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/document/predicate/Negation.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/document/predicate/Predicate.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/document/predicate/PredicateHash.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/document/predicate/PredicateOperator.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/document/predicate/PredicateValue.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/document/predicate/Predicates.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/document/predicate/RangeEdgePartition.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/document/predicate/RangePartition.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/document/predicate/SimplePredicates.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/document/predicate/package-info.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/search/predicate/PredicateQueryParser.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/search/predicate/SubqueryBitmap.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/AndOrSimplifier.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/BooleanSimplifier.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/ComplexNodeTransformer.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/NotNodeReorderer.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/OrSimplifier.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/PredicateOptions.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/PredicateProcessor.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/package-info.java2
-rw-r--r--predicate-search-core/src/main/java/com/yahoo/search/predicate/package-info.java2
-rw-r--r--predicate-search-core/src/test/java/com/yahoo/document/predicate/BinaryFormatTest.java2
-rw-r--r--predicate-search-core/src/test/java/com/yahoo/document/predicate/BooleanPredicateTest.java2
-rw-r--r--predicate-search-core/src/test/java/com/yahoo/document/predicate/ConjunctionTest.java2
-rw-r--r--predicate-search-core/src/test/java/com/yahoo/document/predicate/DisjunctionTest.java2
-rw-r--r--predicate-search-core/src/test/java/com/yahoo/document/predicate/FeatureConjunctionTest.java2
-rw-r--r--predicate-search-core/src/test/java/com/yahoo/document/predicate/FeatureRangeTest.java2
-rw-r--r--predicate-search-core/src/test/java/com/yahoo/document/predicate/FeatureSetTest.java2
-rw-r--r--predicate-search-core/src/test/java/com/yahoo/document/predicate/NegationTest.java2
-rw-r--r--predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateHashTest.java2
-rw-r--r--predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateOperatorTest.java2
-rw-r--r--predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateParserTest.java2
-rw-r--r--predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateTest.java2
-rw-r--r--predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateValueTest.java2
-rw-r--r--predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicatesTest.java2
-rw-r--r--predicate-search-core/src/test/java/com/yahoo/document/predicate/RangeEdgePartitionTest.java2
-rw-r--r--predicate-search-core/src/test/java/com/yahoo/document/predicate/RangePartitionTest.java2
-rw-r--r--predicate-search-core/src/test/java/com/yahoo/search/predicate/PredicateQueryParserTest.java2
-rw-r--r--predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/AndOrSimplifierTest.java2
-rw-r--r--predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/BooleanSimplifierTest.java2
-rw-r--r--predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/ComplexNodeTransformerTest.java2
-rw-r--r--predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/NotNodeReordererTest.java2
-rw-r--r--predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/OrSimplifierTest.java2
-rw-r--r--predicate-search/README.md2
-rw-r--r--predicate-search/pom.xml2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/Config.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/Hit.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/PredicateIndex.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/PredicateIndexBuilder.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/PredicateQuery.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/annotator/PredicateTreeAnalyzer.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/annotator/PredicateTreeAnalyzerResult.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/annotator/PredicateTreeAnnotations.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/annotator/PredicateTreeAnnotator.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/benchmarks/HitsVerificationBenchmark.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/benchmarks/PredicateIndexBenchmark.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/benchmarks/ResultMetrics.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/BoundsPostingList.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/CachedPostingListCounter.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/Feature.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/Interval.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/IntervalPostingList.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/IntervalWithBounds.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/MultiIntervalPostingList.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/Posting.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/PostingList.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/PredicateIntervalStore.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/PredicateOptimizer.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/PredicateRangeTermExpander.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/PredicateSearch.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/SimpleIndex.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/ZeroConstraintPostingList.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/ZstarCompressedPostingList.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionHit.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionId.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIdIterator.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIndex.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIndexBuilder.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/IndexableFeatureConjunction.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/optimization/FeatureConjunctionTransformer.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/package-info.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/serialization/PredicateQuerySerializer.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/serialization/SerializationHelper.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/utils/PostingListSearch.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/utils/PrimitiveArraySorter.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/utils/TargetingQueryFileConverter.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/utils/VespaFeedParser.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/utils/VespaFeedWriter.java2
-rw-r--r--predicate-search/src/main/java/com/yahoo/search/predicate/utils/VespaQueryParser.java2
-rw-r--r--predicate-search/src/test/java/com/yahoo/search/predicate/PredicateIndexBuilderTest.java2
-rw-r--r--predicate-search/src/test/java/com/yahoo/search/predicate/PredicateIndexTest.java2
-rw-r--r--predicate-search/src/test/java/com/yahoo/search/predicate/annotator/PredicateTreeAnalyzerTest.java2
-rw-r--r--predicate-search/src/test/java/com/yahoo/search/predicate/annotator/PredicateTreeAnnotatorTest.java2
-rw-r--r--predicate-search/src/test/java/com/yahoo/search/predicate/index/BoundsPostingListTest.java2
-rw-r--r--predicate-search/src/test/java/com/yahoo/search/predicate/index/CachedPostingListCounterTest.java2
-rw-r--r--predicate-search/src/test/java/com/yahoo/search/predicate/index/IntervalPostingListTest.java2
-rw-r--r--predicate-search/src/test/java/com/yahoo/search/predicate/index/PredicateIntervalStoreTest.java2
-rw-r--r--predicate-search/src/test/java/com/yahoo/search/predicate/index/PredicateRangeTermExpanderTest.java2
-rw-r--r--predicate-search/src/test/java/com/yahoo/search/predicate/index/PredicateSearchTest.java2
-rw-r--r--predicate-search/src/test/java/com/yahoo/search/predicate/index/SimpleIndexTest.java2
-rw-r--r--predicate-search/src/test/java/com/yahoo/search/predicate/index/ZeroConstraintPostingListTest.java2
-rw-r--r--predicate-search/src/test/java/com/yahoo/search/predicate/index/ZstarCompressedPostingListTest.java2
-rw-r--r--predicate-search/src/test/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIdIteratorTest.java2
-rw-r--r--predicate-search/src/test/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIndexTest.java2
-rw-r--r--predicate-search/src/test/java/com/yahoo/search/predicate/optimization/FeatureConjunctionTransformerTest.java2
-rw-r--r--predicate-search/src/test/java/com/yahoo/search/predicate/serialization/PredicateQuerySerializerTest.java2
-rw-r--r--predicate-search/src/test/java/com/yahoo/search/predicate/serialization/SerializationHelperTest.java2
-rw-r--r--predicate-search/src/test/java/com/yahoo/search/predicate/serialization/SerializationTestHelper.java2
-rw-r--r--predicate-search/src/test/java/com/yahoo/search/predicate/utils/PostingListSearchTest.java2
-rw-r--r--predicate-search/src/test/java/com/yahoo/search/predicate/utils/PrimitiveArraySorterTest.java2
-rw-r--r--protocols/README.md2
-rw-r--r--provided-dependencies/README.md2
-rwxr-xr-xprovided-dependencies/pom.xml2
-rw-r--r--provided-dependencies/src/main/javadoc/README1
-rw-r--r--screwdriver.yaml71
-rwxr-xr-xscrewdriver/build-vespa.sh8
-rwxr-xr-xscrewdriver/delete-old-artifactory-artifacts.sh40
-rwxr-xr-xscrewdriver/detect-what-to-build.sh4
-rwxr-xr-xscrewdriver/publish-unpublished-rpms-to-jfrog-cloud.sh72
-rw-r--r--screwdriver/pubring.gpg.encbin0 -> 2848 bytes
-rw-r--r--screwdriver/secring.gpg.encbin0 -> 5520 bytes
-rw-r--r--screwdriver/settings-publish.xml36
-rwxr-xr-xscrewdriver/upload-rpm-to-artifactory.sh26
-rw-r--r--searchcommon/CMakeLists.txt2
-rw-r--r--searchcommon/src/tests/attribute/config/CMakeLists.txt2
-rw-r--r--searchcommon/src/tests/attribute/config/attribute_config_test.cpp2
-rw-r--r--searchcommon/src/tests/schema/CMakeLists.txt2
-rw-r--r--searchcommon/src/tests/schema/schema_test.cpp2
-rw-r--r--searchcommon/src/vespa/searchcommon/CMakeLists.txt2
-rw-r--r--searchcommon/src/vespa/searchcommon/attribute/CMakeLists.txt2
-rw-r--r--searchcommon/src/vespa/searchcommon/attribute/attributecontent.h2
-rw-r--r--searchcommon/src/vespa/searchcommon/attribute/basictype.cpp2
-rw-r--r--searchcommon/src/vespa/searchcommon/attribute/basictype.h2
-rw-r--r--searchcommon/src/vespa/searchcommon/attribute/collectiontype.cpp2
-rw-r--r--searchcommon/src/vespa/searchcommon/attribute/collectiontype.h2
-rw-r--r--searchcommon/src/vespa/searchcommon/attribute/config.cpp39
-rw-r--r--searchcommon/src/vespa/searchcommon/attribute/config.h5
-rw-r--r--searchcommon/src/vespa/searchcommon/attribute/distance_metric.h2
-rw-r--r--searchcommon/src/vespa/searchcommon/attribute/i_attribute_functor.h2
-rw-r--r--searchcommon/src/vespa/searchcommon/attribute/i_search_context.h2
-rw-r--r--searchcommon/src/vespa/searchcommon/attribute/iattributecontext.h2
-rw-r--r--searchcommon/src/vespa/searchcommon/attribute/iattributevector.h2
-rw-r--r--searchcommon/src/vespa/searchcommon/attribute/persistent_predicate_params.h2
-rw-r--r--searchcommon/src/vespa/searchcommon/attribute/predicate_params.h2
-rw-r--r--searchcommon/src/vespa/searchcommon/attribute/search_context_params.cpp2
-rw-r--r--searchcommon/src/vespa/searchcommon/attribute/search_context_params.h2
-rw-r--r--searchcommon/src/vespa/searchcommon/attribute/status.cpp2
-rw-r--r--searchcommon/src/vespa/searchcommon/attribute/status.h2
-rw-r--r--searchcommon/src/vespa/searchcommon/common/CMakeLists.txt2
-rw-r--r--searchcommon/src/vespa/searchcommon/common/compaction_strategy.cpp2
-rw-r--r--searchcommon/src/vespa/searchcommon/common/compaction_strategy.h2
-rw-r--r--searchcommon/src/vespa/searchcommon/common/datatype.cpp2
-rw-r--r--searchcommon/src/vespa/searchcommon/common/datatype.h2
-rw-r--r--searchcommon/src/vespa/searchcommon/common/dictionary_config.cpp2
-rw-r--r--searchcommon/src/vespa/searchcommon/common/dictionary_config.h2
-rw-r--r--searchcommon/src/vespa/searchcommon/common/growstrategy.cpp2
-rw-r--r--searchcommon/src/vespa/searchcommon/common/growstrategy.h2
-rw-r--r--searchcommon/src/vespa/searchcommon/common/iblobconverter.h2
-rw-r--r--searchcommon/src/vespa/searchcommon/common/range.h2
-rw-r--r--searchcommon/src/vespa/searchcommon/common/schema.cpp2
-rw-r--r--searchcommon/src/vespa/searchcommon/common/schema.h2
-rw-r--r--searchcommon/src/vespa/searchcommon/common/schemaconfigurer.cpp2
-rw-r--r--searchcommon/src/vespa/searchcommon/common/schemaconfigurer.h2
-rw-r--r--searchcommon/src/vespa/searchcommon/common/undefinedvalues.h2
-rw-r--r--searchcommon/src/vespa/searchcommon/config/CMakeLists.txt2
-rw-r--r--searchcommon/src/vespa/searchcommon/config/subscriptionproxyng.h2
-rw-r--r--searchcore/CMakeLists.txt5
-rw-r--r--searchcore/pom.xml2
-rw-r--r--searchcore/src/apps/proton/CMakeLists.txt2
-rw-r--r--searchcore/src/apps/proton/proton.cpp2
-rw-r--r--searchcore/src/apps/tests/CMakeLists.txt2
-rw-r--r--searchcore/src/apps/tests/persistenceconformance_test.cpp2
-rw-r--r--searchcore/src/apps/verify_ranksetup/CMakeLists.txt2
-rw-r--r--searchcore/src/apps/verify_ranksetup/verify-ranksetup.def2
-rw-r--r--searchcore/src/apps/verify_ranksetup/verify_ranksetup.cpp4
-rw-r--r--searchcore/src/apps/vespa-dump-feed/CMakeLists.txt2
-rw-r--r--searchcore/src/apps/vespa-dump-feed/vespa-dump-feed.cpp2
-rw-r--r--searchcore/src/apps/vespa-feed-bm/CMakeLists.txt36
-rw-r--r--searchcore/src/apps/vespa-feed-bm/bm_cluster_controller.h21
-rw-r--r--searchcore/src/apps/vespa-feed-bm/bucket_info_queue.cpp38
-rwxr-xr-xsearchcore/src/apps/vespa-feed-bm/runtest.sh2
-rw-r--r--searchcore/src/apps/vespa-feed-bm/storage_api_chain_bm_feed_handler.cpp108
-rw-r--r--searchcore/src/apps/vespa-feed-bm/storage_api_chain_bm_feed_handler.h38
-rw-r--r--searchcore/src/apps/vespa-feed-bm/storage_api_message_bus_bm_feed_handler.cpp94
-rw-r--r--searchcore/src/apps/vespa-feed-bm/storage_api_message_bus_bm_feed_handler.h44
-rw-r--r--searchcore/src/apps/vespa-feed-bm/storage_api_rpc_bm_feed_handler.cpp143
-rw-r--r--searchcore/src/apps/vespa-feed-bm/storage_api_rpc_bm_feed_handler.h53
-rw-r--r--searchcore/src/apps/vespa-feed-bm/vespa_feed_bm.cpp1361
-rw-r--r--searchcore/src/apps/vespa-gen-testdocs/CMakeLists.txt2
-rw-r--r--searchcore/src/apps/vespa-gen-testdocs/vespa-gen-testdocs.cpp2
-rw-r--r--searchcore/src/apps/vespa-proton-cmd/CMakeLists.txt2
-rw-r--r--searchcore/src/apps/vespa-proton-cmd/vespa-proton-cmd.cpp2
-rw-r--r--searchcore/src/apps/vespa-redistribute-bm/.gitignore1
-rw-r--r--searchcore/src/apps/vespa-redistribute-bm/CMakeLists.txt8
-rw-r--r--searchcore/src/apps/vespa-redistribute-bm/vespa_redistribute_bm.cpp688
-rwxr-xr-xsearchcore/src/apps/vespa-remove-indexes/vespa-remove-index.sh2
-rw-r--r--searchcore/src/apps/vespa-transactionlog-inspect/CMakeLists.txt2
-rw-r--r--searchcore/src/apps/vespa-transactionlog-inspect/vespa-transactionlog-inspect.cpp2
-rw-r--r--searchcore/src/main/java/com/yahoo/vespa/config/search/core/package-info.java2
-rw-r--r--searchcore/src/tests/grouping/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/grouping/grouping.cpp2
-rw-r--r--searchcore/src/tests/proton/attribute/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_aspect_delayer/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_aspect_delayer/attribute_aspect_delayer_test.cpp2
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_directory/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_directory/attribute_directory_test.cpp2
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_initializer/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_initializer/attribute_initializer_test.cpp9
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_manager/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_manager/attribute_manager_test.cpp2
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_populator/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_populator/attribute_populator_test.cpp2
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_test.cpp40
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_usage_filter/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_usage_filter/attribute_usage_filter_test.cpp80
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_usage_sampler_functor/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_usage_sampler_functor/attribute_usage_sampler_functor_test.cpp2
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_usage_stats/CMakeLists.txt9
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_usage_stats/attribute_usage_stats_test.cpp47
-rw-r--r--searchcore/src/tests/proton/attribute/attributeflush_test.cpp2
-rwxr-xr-xsearchcore/src/tests/proton/attribute/attributeflush_test.sh2
-rw-r--r--searchcore/src/tests/proton/attribute/attributes_state_explorer/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/attribute/attributes_state_explorer/attributes_state_explorer_test.cpp2
-rw-r--r--searchcore/src/tests/proton/attribute/document_field_extractor/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/attribute/document_field_extractor/document_field_extractor_test.cpp2
-rw-r--r--searchcore/src/tests/proton/attribute/document_field_populator/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/attribute/document_field_populator/document_field_populator_test.cpp2
-rw-r--r--searchcore/src/tests/proton/attribute/exclusive_attribute_read_accessor/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/attribute/exclusive_attribute_read_accessor/exclusive_attribute_read_accessor_test.cpp2
-rw-r--r--searchcore/src/tests/proton/attribute/imported_attributes_context/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/attribute/imported_attributes_context/imported_attributes_context_test.cpp2
-rw-r--r--searchcore/src/tests/proton/attribute/imported_attributes_repo/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/attribute/imported_attributes_repo/imported_attributes_repo_test.cpp2
-rw-r--r--searchcore/src/tests/proton/bucketdb/bucketdb/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/bucketdb/bucketdb/bucketdb_test.cpp2
-rwxr-xr-xsearchcore/src/tests/proton/clean_tests.sh2
-rw-r--r--searchcore/src/tests/proton/common/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/common/alloc_config/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/common/alloc_config/alloc_config_test.cpp2
-rw-r--r--searchcore/src/tests/proton/common/attribute_updater/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/common/attribute_updater/attribute_updater_test.cpp2
-rw-r--r--searchcore/src/tests/proton/common/cachedselect_test.cpp2
-rw-r--r--searchcore/src/tests/proton/common/document_type_inspector/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/common/document_type_inspector/document_type_inspector_test.cpp2
-rw-r--r--searchcore/src/tests/proton/common/dummydbowner.h2
-rw-r--r--searchcore/src/tests/proton/common/hw_info_sampler/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/common/hw_info_sampler/hw_info_sampler_test.cpp2
-rw-r--r--searchcore/src/tests/proton/common/operation_rate_tracker/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/common/operation_rate_tracker/operation_rate_tracker_test.cpp2
-rw-r--r--searchcore/src/tests/proton/common/pendinglidtracker_test.cpp2
-rw-r--r--searchcore/src/tests/proton/common/selectpruner_test.cpp2
-rw-r--r--searchcore/src/tests/proton/common/state_reporter_utils/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/common/state_reporter_utils/state_reporter_utils_test.cpp2
-rw-r--r--searchcore/src/tests/proton/docsummary/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/docsummary/docsummary.cpp2
-rwxr-xr-xsearchcore/src/tests/proton/docsummary/docsummary_test.sh2
-rw-r--r--searchcore/src/tests/proton/docsummary/summaryfieldconverter_test.cpp2
-rw-r--r--searchcore/src/tests/proton/document_iterator/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp2
-rw-r--r--searchcore/src/tests/proton/documentdb/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/documentdb/buckethandler/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/documentdb/buckethandler/buckethandler_test.cpp2
-rw-r--r--searchcore/src/tests/proton/documentdb/clusterstatehandler/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/documentdb/clusterstatehandler/clusterstatehandler_test.cpp2
-rw-r--r--searchcore/src/tests/proton/documentdb/combiningfeedview/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/documentdb/combiningfeedview/combiningfeedview_test.cpp2
-rw-r--r--searchcore/src/tests/proton/documentdb/configurer/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp2
-rw-r--r--searchcore/src/tests/proton/documentdb/document_scan_iterator/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/documentdb/document_scan_iterator/document_scan_iterator_test.cpp2
-rw-r--r--searchcore/src/tests/proton/documentdb/document_subdbs/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp2
-rw-r--r--searchcore/src/tests/proton/documentdb/documentbucketmover/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.cpp2
-rw-r--r--searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h2
-rw-r--r--searchcore/src/tests/proton/documentdb/documentbucketmover/documentbucketmover_test.cpp2
-rw-r--r--searchcore/src/tests/proton/documentdb/documentbucketmover/documentmover_test.cpp2
-rw-r--r--searchcore/src/tests/proton/documentdb/documentbucketmover/scaniterator_test.cpp2
-rw-r--r--searchcore/src/tests/proton/documentdb/documentdb_test.cpp2
-rwxr-xr-xsearchcore/src/tests/proton/documentdb/documentdb_test.sh2
-rw-r--r--searchcore/src/tests/proton/documentdb/documentdbconfig/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/documentdb/documentdbconfig/documentdbconfig_test.cpp2
-rw-r--r--searchcore/src/tests/proton/documentdb/documentdbconfigscout/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/documentdb/documentdbconfigscout/documentdbconfigscout_test.cpp12
-rw-r--r--searchcore/src/tests/proton/documentdb/feedhandler/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/documentdb/feedhandler/feedhandler_test.cpp2
-rwxr-xr-xsearchcore/src/tests/proton/documentdb/feedhandler/feedhandler_test.sh2
-rw-r--r--searchcore/src/tests/proton/documentdb/feedview/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp2
-rw-r--r--searchcore/src/tests/proton/documentdb/fileconfigmanager/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/documentdb/fileconfigmanager/fileconfigmanager_test.cpp2
-rwxr-xr-xsearchcore/src/tests/proton/documentdb/fileconfigmanager/fileconfigmanager_test.sh2
-rw-r--r--searchcore/src/tests/proton/documentdb/fileconfigmanager/mycfg.def2
-rw-r--r--searchcore/src/tests/proton/documentdb/job_tracked_maintenance_job/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/documentdb/job_tracked_maintenance_job/job_tracked_maintenance_job_test.cpp2
-rw-r--r--searchcore/src/tests/proton/documentdb/lid_space_compaction/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_common.cpp2
-rw-r--r--searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_common.h2
-rw-r--r--searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_compaction_test.cpp2
-rw-r--r--searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_handler_test.cpp2
-rw-r--r--searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_jobtest.cpp2
-rw-r--r--searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_jobtest.h2
-rw-r--r--searchcore/src/tests/proton/documentdb/maintenancecontroller/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp2
-rw-r--r--searchcore/src/tests/proton/documentdb/move_operation_limiter/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/documentdb/move_operation_limiter/move_operation_limiter_test.cpp2
-rw-r--r--searchcore/src/tests/proton/documentdb/storeonlyfeedview/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp2
-rw-r--r--searchcore/src/tests/proton/documentdb/threading_service_config/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/documentdb/threading_service_config/threading_service_config_test.cpp2
-rw-r--r--searchcore/src/tests/proton/documentmetastore/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/documentmetastore/documentmetastore_test.cpp2
-rwxr-xr-xsearchcore/src/tests/proton/documentmetastore/documentmetastore_test.sh2
-rw-r--r--searchcore/src/tests/proton/documentmetastore/lidreusedelayer/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/documentmetastore/lidreusedelayer/lidreusedelayer_test.cpp2
-rw-r--r--searchcore/src/tests/proton/feed_and_search/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/feed_and_search/feed_and_search.cpp2
-rw-r--r--searchcore/src/tests/proton/feedoperation/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/feedoperation/feedoperation_test.cpp2
-rw-r--r--searchcore/src/tests/proton/feedtoken/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/feedtoken/feedtoken.cpp2
-rw-r--r--searchcore/src/tests/proton/flushengine/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/flushengine/flushengine_test.cpp2
-rw-r--r--searchcore/src/tests/proton/flushengine/prepare_restart_flush_strategy/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/flushengine/prepare_restart_flush_strategy/prepare_restart_flush_strategy_test.cpp2
-rw-r--r--searchcore/src/tests/proton/flushengine/shrink_lid_space_flush_target/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/flushengine/shrink_lid_space_flush_target/shrink_lid_space_flush_target_test.cpp2
-rw-r--r--searchcore/src/tests/proton/index/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/index/diskindexcleaner_test.cpp2
-rw-r--r--searchcore/src/tests/proton/index/fusionrunner_test.cpp2
-rw-r--r--searchcore/src/tests/proton/index/index_writer/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/index/index_writer/index_writer_test.cpp2
-rw-r--r--searchcore/src/tests/proton/index/indexcollection_test.cpp2
-rw-r--r--searchcore/src/tests/proton/index/indexmanager_test.cpp2
-rw-r--r--searchcore/src/tests/proton/initializer/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/initializer/task_runner_test.cpp2
-rw-r--r--searchcore/src/tests/proton/matchengine/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/matchengine/matchengine.cpp2
-rw-r--r--searchcore/src/tests/proton/matching/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/matching/constant_value_repo/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/matching/constant_value_repo/constant_value_repo_test.cpp2
-rw-r--r--searchcore/src/tests/proton/matching/docid_range_scheduler/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/matching/docid_range_scheduler/docid_range_scheduler_bench.cpp2
-rw-r--r--searchcore/src/tests/proton/matching/docid_range_scheduler/docid_range_scheduler_test.cpp2
-rw-r--r--searchcore/src/tests/proton/matching/index_environment/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/matching/index_environment/index_environment_test.cpp2
-rw-r--r--searchcore/src/tests/proton/matching/match_loop_communicator/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/matching/match_loop_communicator/match_loop_communicator_test.cpp2
-rw-r--r--searchcore/src/tests/proton/matching/match_phase_limiter/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/matching/match_phase_limiter/match_phase_limiter_test.cpp2
-rw-r--r--searchcore/src/tests/proton/matching/matching_stats_test.cpp2
-rw-r--r--searchcore/src/tests/proton/matching/matching_test.cpp2
-rw-r--r--searchcore/src/tests/proton/matching/partial_result/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/matching/partial_result/partial_result_test.cpp2
-rw-r--r--searchcore/src/tests/proton/matching/query_test.cpp2
-rw-r--r--searchcore/src/tests/proton/matching/querynodes_test.cpp2
-rw-r--r--searchcore/src/tests/proton/matching/resolveviewvisitor_test.cpp2
-rw-r--r--searchcore/src/tests/proton/matching/same_element_builder/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/matching/same_element_builder/same_element_builder_test.cpp2
-rw-r--r--searchcore/src/tests/proton/matching/sessionmanager_test.cpp2
-rw-r--r--searchcore/src/tests/proton/matching/termdataextractor_test.cpp2
-rw-r--r--searchcore/src/tests/proton/matching/unpacking_iterators_optimizer/unpacking_iterators_optimizer_test.cpp2
-rw-r--r--searchcore/src/tests/proton/metrics/documentdb_job_trackers/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/metrics/documentdb_job_trackers/documentdb_job_trackers_test.cpp2
-rw-r--r--searchcore/src/tests/proton/metrics/job_load_sampler/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/metrics/job_load_sampler/job_load_sampler_test.cpp2
-rw-r--r--searchcore/src/tests/proton/metrics/job_tracked_flush/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/metrics/job_tracked_flush/job_tracked_flush_test.cpp2
-rw-r--r--searchcore/src/tests/proton/metrics/metrics_engine/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/metrics/metrics_engine/metrics_engine_test.cpp2
-rw-r--r--searchcore/src/tests/proton/persistenceconformance/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/persistenceengine/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/persistenceengine/persistence_handler_map/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/persistenceengine/persistence_handler_map/persistence_handler_map_test.cpp2
-rw-r--r--searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp2
-rw-r--r--searchcore/src/tests/proton/persistenceengine/resource_usage_tracker/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/persistenceengine/resource_usage_tracker/resource_usage_tracker_test.cpp52
-rw-r--r--searchcore/src/tests/proton/proton/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/proton_config_fetcher/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/proton_config_fetcher/proton_config_fetcher_test.cpp2
-rw-r--r--searchcore/src/tests/proton/proton_configurer/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/proton_configurer/proton_configurer_test.cpp2
-rw-r--r--searchcore/src/tests/proton/proton_disk_layout/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/proton_disk_layout/proton_disk_layout_test.cpp2
-rw-r--r--searchcore/src/tests/proton/reference/document_db_reference/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/reference/document_db_reference/document_db_reference_test.cpp2
-rw-r--r--searchcore/src/tests/proton/reference/document_db_reference_registry/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/reference/document_db_reference_registry/document_db_reference_registry_test.cpp2
-rw-r--r--searchcore/src/tests/proton/reference/document_db_reference_resolver/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/reference/document_db_reference_resolver/document_db_reference_resolver_test.cpp2
-rw-r--r--searchcore/src/tests/proton/reference/gid_to_lid_change_handler/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/reference/gid_to_lid_change_handler/gid_to_lid_change_handler_test.cpp2
-rw-r--r--searchcore/src/tests/proton/reference/gid_to_lid_change_listener/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/reference/gid_to_lid_change_listener/gid_to_lid_change_listener_test.cpp2
-rw-r--r--searchcore/src/tests/proton/reference/gid_to_lid_change_registrator/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/reference/gid_to_lid_change_registrator/gid_to_lid_change_registrator_test.cpp2
-rw-r--r--searchcore/src/tests/proton/reference/gid_to_lid_mapper/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/reference/gid_to_lid_mapper/gid_to_lid_mapper_test.cpp2
-rw-r--r--searchcore/src/tests/proton/reprocessing/attribute_reprocessing_initializer/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/reprocessing/attribute_reprocessing_initializer/attribute_reprocessing_initializer_test.cpp2
-rw-r--r--searchcore/src/tests/proton/reprocessing/document_reprocessing_handler/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/reprocessing/document_reprocessing_handler/document_reprocessing_handler_test.cpp2
-rw-r--r--searchcore/src/tests/proton/reprocessing/reprocessing_runner/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/reprocessing/reprocessing_runner/reprocessing_runner_test.cpp2
-rw-r--r--searchcore/src/tests/proton/server/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/server/disk_mem_usage_filter/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/server/disk_mem_usage_filter/disk_mem_usage_filter_test.cpp2
-rw-r--r--searchcore/src/tests/proton/server/disk_mem_usage_metrics/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/server/disk_mem_usage_metrics/disk_mem_usage_metrics_test.cpp2
-rw-r--r--searchcore/src/tests/proton/server/disk_mem_usage_sampler/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/server/disk_mem_usage_sampler/disk_mem_usage_sampler_test.cpp8
-rw-r--r--searchcore/src/tests/proton/server/documentretriever_test.cpp2
-rw-r--r--searchcore/src/tests/proton/server/feeddebugger_test.cpp2
-rw-r--r--searchcore/src/tests/proton/server/feedstates_test.cpp2
-rw-r--r--searchcore/src/tests/proton/server/health_adapter/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/server/health_adapter/health_adapter_test.cpp2
-rw-r--r--searchcore/src/tests/proton/server/memory_flush_config_updater/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/server/memory_flush_config_updater/memory_flush_config_updater_test.cpp2
-rw-r--r--searchcore/src/tests/proton/server/memoryconfigstore_test.cpp2
-rw-r--r--searchcore/src/tests/proton/server/memoryflush/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/server/memoryflush/memoryflush_test.cpp2
-rw-r--r--searchcore/src/tests/proton/statusreport/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/statusreport/statusreport.cpp2
-rw-r--r--searchcore/src/tests/proton/summaryengine/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/summaryengine/summaryengine.cpp2
-rw-r--r--searchcore/src/tests/proton/verify_ranksetup/CMakeLists.txt2
-rw-r--r--searchcore/src/tests/proton/verify_ranksetup/verify_ranksetup_test.cpp2
-rwxr-xr-xsearchcore/src/tests/proton/verify_ranksetup/verify_ranksetup_test.sh2
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/CMakeLists.txt55
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/avg_sampler.h27
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_buckets_stats.cpp38
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_buckets_stats.h29
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_cluster.cpp456
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_cluster.h101
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_cluster_controller.cpp (renamed from searchcore/src/apps/vespa-feed-bm/bm_cluster_controller.cpp)46
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_cluster_controller.h26
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_cluster_params.cpp84
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_cluster_params.h105
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_distribution.cpp164
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_distribution.h38
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_document_db_stats.cpp42
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_document_db_stats.h32
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_feed.cpp164
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_feed.h60
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_feed_operation.h15
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_feed_params.cpp42
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_feed_params.h37
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_feeder.cpp151
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_feeder.h52
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_merge_stats.cpp36
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_merge_stats.h27
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_message_bus.cpp (renamed from searchcore/src/apps/vespa-feed-bm/bm_message_bus.cpp)8
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_message_bus.h (renamed from searchcore/src/apps/vespa-feed-bm/bm_message_bus.h)6
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_message_bus_routes.cpp19
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_message_bus_routes.h24
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_node.cpp802
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_node.h58
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_node_stats.cpp79
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_node_stats.h33
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_node_stats_reporter.cpp163
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_node_stats_reporter.h42
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_range.h24
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_storage_chain_builder.cpp (renamed from searchcore/src/apps/vespa-feed-bm/bm_storage_chain_builder.cpp)4
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_storage_chain_builder.h (renamed from searchcore/src/apps/vespa-feed-bm/bm_storage_chain_builder.h)4
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_storage_link.cpp (renamed from searchcore/src/apps/vespa-feed-bm/bm_storage_link.cpp)4
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_storage_link.h (renamed from searchcore/src/apps/vespa-feed-bm/bm_storage_link.h)4
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_storage_link_context.h (renamed from searchcore/src/apps/vespa-feed-bm/bm_storage_link_context.h)4
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_storage_message_addresses.cpp27
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_storage_message_addresses.h28
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot.cpp74
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot.h32
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot_vector.cpp91
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot_vector.h26
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bucket_info_queue.cpp36
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bucket_info_queue.h (renamed from searchcore/src/apps/vespa-feed-bm/bucket_info_queue.h)14
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bucket_selector.h28
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/document_api_message_bus_bm_feed_handler.cpp (renamed from searchcore/src/apps/vespa-feed-bm/document_api_message_bus_bm_feed_handler.cpp)44
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/document_api_message_bus_bm_feed_handler.h (renamed from searchcore/src/apps/vespa-feed-bm/document_api_message_bus_bm_feed_handler.h)23
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/i_bm_distribution.h34
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/i_bm_feed_handler.h (renamed from searchcore/src/apps/vespa-feed-bm/i_bm_feed_handler.h)4
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/pending_tracker.cpp (renamed from searchcore/src/apps/vespa-feed-bm/pending_tracker.cpp)8
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/pending_tracker.h (renamed from searchcore/src/apps/vespa-feed-bm/pending_tracker.h)8
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/pending_tracker_hash.cpp (renamed from searchcore/src/apps/vespa-feed-bm/pending_tracker_hash.cpp)4
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/pending_tracker_hash.h (renamed from searchcore/src/apps/vespa-feed-bm/pending_tracker_hash.h)4
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/spi_bm_feed_handler.cpp (renamed from searchcore/src/apps/vespa-feed-bm/spi_bm_feed_handler.cpp)80
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/spi_bm_feed_handler.h (renamed from searchcore/src/apps/vespa-feed-bm/spi_bm_feed_handler.h)23
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/storage_api_bm_feed_handler_base.cpp72
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/storage_api_bm_feed_handler_base.h37
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/storage_api_chain_bm_feed_handler.cpp52
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/storage_api_chain_bm_feed_handler.h34
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/storage_api_message_bus_bm_feed_handler.cpp44
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/storage_api_message_bus_bm_feed_handler.h33
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/storage_api_rpc_bm_feed_handler.cpp96
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/storage_api_rpc_bm_feed_handler.h50
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/storage_reply_error_checker.cpp (renamed from searchcore/src/apps/vespa-feed-bm/storage_reply_error_checker.cpp)4
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/storage_reply_error_checker.h (renamed from searchcore/src/apps/vespa-feed-bm/storage_reply_error_checker.h)7
-rw-r--r--searchcore/src/vespa/searchcore/config/CMakeLists.txt2
-rw-r--r--searchcore/src/vespa/searchcore/config/fdispatchrc.def2
-rw-r--r--searchcore/src/vespa/searchcore/config/hwinfo.def2
-rw-r--r--searchcore/src/vespa/searchcore/config/onnx-models.def19
-rw-r--r--searchcore/src/vespa/searchcore/config/proton.def12
-rw-r--r--searchcore/src/vespa/searchcore/config/ranking-constants.def2
-rw-r--r--searchcore/src/vespa/searchcore/config/ranking-expressions.def2
-rw-r--r--searchcore/src/vespa/searchcore/grouping/CMakeLists.txt2
-rw-r--r--searchcore/src/vespa/searchcore/grouping/groupingcontext.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/grouping/groupingcontext.h2
-rw-r--r--searchcore/src/vespa/searchcore/grouping/groupingmanager.cpp15
-rw-r--r--searchcore/src/vespa/searchcore/grouping/groupingmanager.h2
-rw-r--r--searchcore/src/vespa/searchcore/grouping/groupingsession.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/grouping/groupingsession.h2
-rw-r--r--searchcore/src/vespa/searchcore/grouping/sessionid.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/CMakeLists.txt2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/address_space_usage_stats.cpp6
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/address_space_usage_stats.h11
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_aspect_delayer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_aspect_delayer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec_factory.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec_factory.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_config_inspector.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_config_inspector.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_directory.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_directory.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_factory.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_factory.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.cpp9
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.h7
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer_result.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer_result.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_explorer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_explorer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_populator.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_populator.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_spec.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_spec.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_transient_memory_calculator.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_transient_memory_calculator.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_type_matcher.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_type_matcher.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_filter.cpp67
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_filter.h4
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_filter_config.h23
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_sampler_context.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_sampler_context.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_sampler_functor.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_sampler_functor.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_stats.cpp18
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_stats.h17
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_vector_explorer.cpp9
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_vector_explorer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp108
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.h17
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attributedisklayout.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attributedisklayout.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp12
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attributes_initializer_base.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attributes_initializer_base.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attributesconfigscout.cpp3
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attributesconfigscout.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/document_field_extractor.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/document_field_extractor.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/document_field_populator.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/document_field_populator.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/document_field_retriever.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/document_field_retriever.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/exclusive_attribute_read_accessor.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/exclusive_attribute_read_accessor.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/filter_attribute_manager.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/filter_attribute_manager.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/flushableattribute.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/flushableattribute.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/i_attribute_factory.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/i_attribute_initializer_registry.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/i_attribute_manager.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/i_attribute_usage_listener.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/i_attribute_writer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/ifieldupdatecallback.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/imported_attributes_context.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/imported_attributes_context.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/imported_attributes_repo.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/imported_attributes_repo.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/initialized_attributes_result.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/initialized_attributes_result.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/sequential_attributes_initializer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/sequential_attributes_initializer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/CMakeLists.txt2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/bucket_create_notifier.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/bucket_create_notifier.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/bucket_db_explorer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/bucket_db_explorer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/bucket_db_owner.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/bucket_db_owner.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/bucketdb.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/bucketdb.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/bucketdbhandler.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/bucketdbhandler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/bucketdeltapair.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/bucketscaniterator.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/bucketscaniterator.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/bucketsessionbase.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/bucketsessionbase.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/bucketstate.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/bucketstate.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/i_bucket_create_listener.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/i_bucket_create_notifier.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/ibucketdbhandler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/ibucketdbhandlerinitializer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/joinbucketssession.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/joinbucketssession.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/splitbucketsession.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/bucketdb/splitbucketsession.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/CMakeLists.txt2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/alloc_config.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/alloc_config.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/alloc_strategy.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/alloc_strategy.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/attribute_updater.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/attribute_updater.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/attributefieldvaluenode.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/attributefieldvaluenode.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/cachedselect.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/cachedselect.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/commit_time_tracker.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/commit_time_tracker.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/config_hash.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/config_hash.hpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/dbdocumentid.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/dbdocumentid.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/docid_limit.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/doctypename.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/doctypename.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/document_type_inspector.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/document_type_inspector.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/eventlogger.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/eventlogger.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/feeddebugger.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/feeddebugger.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/feedtoken.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/feedtoken.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/handlermap.hpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/hw_info.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/hw_info_sampler.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/hw_info_sampler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/i_document_type_inspector.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/i_indexschema_inspector.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/i_transient_resource_usage_provider.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/indexschema_inspector.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/indexschema_inspector.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/ipendinglidtracker.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/ipendinglidtracker.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/monitored_refcount.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/monitored_refcount.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/operation_rate_tracker.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/operation_rate_tracker.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/pendinglidtracker.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/pendinglidtracker.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/select_utils.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/select_utils.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/selectcontext.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/selectcontext.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/selectpruner.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/selectpruner.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/state_reporter_utils.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/state_reporter_utils.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/statusreport.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/statusreport.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/subdbtype.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/transient_resource_usage_provider.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/common/transient_resource_usage_provider.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/create-base.sh4
-rwxr-xr-xsearchcore/src/vespa/searchcore/proton/create-class-cpp.sh2
-rw-r--r--searchcore/src/vespa/searchcore/proton/create-class-h.sh2
-rw-r--r--searchcore/src/vespa/searchcore/proton/create-interface.sh2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/CMakeLists.txt2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/document_store_explorer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/document_store_explorer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/fieldcache.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/fieldcache.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/fieldcacherepo.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/fieldcacherepo.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/isummarymanager.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/summarycompacttarget.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/summarycompacttarget.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/summaryflushtarget.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/summaryflushtarget.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/summarymanagerinitializer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/summarymanagerinitializer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/CMakeLists.txt2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_adapter.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_explorer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_explorer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_initializer_result.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_initializer_result.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_versions.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.cpp44
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.h4
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreattribute.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreattribute.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastorecontext.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastorecontext.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreflushtarget.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreflushtarget.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreinitializer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreinitializer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoresaver.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoresaver.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/gid_to_lid_map_key.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/gid_to_lid_map_key.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/i_bucket_handler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/i_document_meta_store.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/i_document_meta_store_context.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/i_simple_document_meta_store.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/i_store.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/lid_allocator.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/lid_allocator.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/lid_gid_key_comparator.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/lid_gid_key_comparator.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/lid_hold_list.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/lid_hold_list.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/lidreusedelayer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/lidreusedelayer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/lidstatevector.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/lidstatevector.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/operation_listener.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/raw_document_meta_data.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/search_context.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/search_context.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/CMakeLists.txt2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/compact_lid_space_operation.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/compact_lid_space_operation.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/createbucketoperation.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/createbucketoperation.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/deletebucketoperation.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/deletebucketoperation.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/documentoperation.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/documentoperation.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/feedoperation.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/joinbucketsoperation.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/joinbucketsoperation.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/lidvectorcontext.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/lidvectorcontext.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/moveoperation.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/moveoperation.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/newconfigoperation.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/newconfigoperation.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/noopoperation.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/noopoperation.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/operations.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/pruneremoveddocumentsoperation.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/pruneremoveddocumentsoperation.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/putoperation.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/putoperation.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/removedocumentsoperation.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/removedocumentsoperation.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/removeoperation.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/removeoperation.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/splitbucketoperation.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/splitbucketoperation.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/updateoperation.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/feedoperation/updateoperation.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/fix_log_setup.rb2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/CMakeLists.txt2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/cachedflushtarget.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/cachedflushtarget.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/flush_all_strategy.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/flush_all_strategy.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/flush_engine_explorer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/flush_engine_explorer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/flush_target_candidate.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/flush_target_candidate.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/flush_target_candidates.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/flush_target_candidates.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/flushcontext.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/flushcontext.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/flushengine.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/flushengine.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/flushtargetproxy.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/flushtargetproxy.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/flushtask.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/flushtask.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/i_tls_stats_factory.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/iflushhandler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/iflushstrategy.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/prepare_restart_flush_strategy.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/prepare_restart_flush_strategy.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/shrink_lid_space_flush_target.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/shrink_lid_space_flush_target.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/threadedflushtarget.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/threadedflushtarget.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/tls_stats.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/tls_stats_factory.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/tls_stats_factory.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/tls_stats_map.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/flushengine/tls_stats_map.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/index/CMakeLists.txt2
-rw-r--r--searchcore/src/vespa/searchcore/proton/index/diskindexwrapper.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/index/diskindexwrapper.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/index/i_index_writer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/index/index_manager_initializer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/index/index_manager_initializer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/index/index_writer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/index/index_writer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/index/indexmanager.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/index/indexmanager.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/index/memoryindexwrapper.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/index/memoryindexwrapper.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/initializer/CMakeLists.txt2
-rw-r--r--searchcore/src/vespa/searchcore/proton/initializer/initializer_task.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/initializer/initializer_task.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/initializer/task_runner.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/initializer/task_runner.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matchengine/CMakeLists.txt2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matchengine/matchengine.cpp6
-rw-r--r--searchcore/src/vespa/searchcore/proton/matchengine/matchengine.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/.create-overrides.sh2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/CMakeLists.txt2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/attribute_limiter.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/attribute_limiter.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/constant_value_repo.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/constant_value_repo.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/docid_range_scheduler.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/docid_range_scheduler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/document_scorer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/document_scorer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/fakesearchcontext.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/fakesearchcontext.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/handlerecorder.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/handlerecorder.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/i_constant_value_repo.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/i_match_loop_communicator.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/i_match_loop_communicator.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/indexenvironment.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/indexenvironment.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/isearchcontext.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/isessioncachepruner.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/match_context.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/match_loop_communicator.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/match_loop_communicator.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/match_master.cpp5
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/match_master.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/match_params.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/match_params.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/match_phase_limit_calculator.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/match_phase_limit_calculator.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/match_phase_limiter.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/match_phase_limiter.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/match_thread.cpp6
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/match_thread.h6
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/match_tools.cpp7
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/match_tools.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/matchdatareservevisitor.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/matcher.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/matcher.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/matching_stats.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/matching_stats.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/onnx_models.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/onnx_models.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/partial_result.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/partial_result.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/query.cpp25
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/query.h4
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/queryenvironment.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/queryenvironment.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/querylimiter.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/querylimiter.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/querynodes.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/querynodes.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/ranking_constants.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/ranking_constants.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/ranking_expressions.cpp4
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/ranking_expressions.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/requestcontext.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/requestcontext.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/resolveviewvisitor.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/resolveviewvisitor.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/result_processor.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/result_processor.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/same_element_builder.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/same_element_builder.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/sameelementmodifier.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/sameelementmodifier.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/search_session.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/search_session.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/session_manager_explorer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/session_manager_explorer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/sessionmanager.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/sessionmanager.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/termdataextractor.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/termdataextractor.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/termdatafromnode.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/termdatafromnode.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/viewresolver.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/viewresolver.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/CMakeLists.txt2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/attribute_metrics.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/attribute_metrics.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/content_proton_metrics.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/content_proton_metrics.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/documentdb_job_trackers.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/documentdb_job_trackers.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/documentdb_tagged_metrics.cpp10
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/documentdb_tagged_metrics.h5
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/executor_metrics.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/executor_metrics.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/executor_threading_service_metrics.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/executor_threading_service_metrics.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/executor_threading_service_stats.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/executor_threading_service_stats.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/i_job_tracker.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/job_load_sampler.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/job_load_sampler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/job_tracked_flush_target.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/job_tracked_flush_target.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/job_tracked_flush_task.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/job_tracked_flush_task.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/job_tracker.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/job_tracker.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/memory_usage_metrics.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/metrics_engine.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/metrics_engine.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/metricswireservice.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/sessionmanager_metrics.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/sessionmanager_metrics.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/trans_log_server_metrics.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/trans_log_server_metrics.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/CMakeLists.txt2
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/commit_and_wait_document_retriever.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/commit_and_wait_document_retriever.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/document_iterator.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/document_iterator.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/i_document_retriever.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/i_document_retriever.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/i_resource_write_filter.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistenceengineowner.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistencehandler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/persistence_handler_map.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/persistence_handler_map.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/resource_usage_tracker.cpp42
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/resource_usage_tracker.h8
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/resulthandler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/transport_latch.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/transport_latch.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/CMakeLists.txt2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/document_db_reference.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/document_db_reference.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/document_db_reference_registry.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/document_db_reference_registry.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/document_db_reference_resolver.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/document_db_reference_resolver.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_handler.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_handler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_registrator.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_registrator.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper_factory.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper_factory.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/i_document_db_reference.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/i_document_db_reference_registry.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/i_document_db_reference_resolver.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/i_gid_to_lid_change_handler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/i_gid_to_lid_change_listener.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/i_pending_gid_to_lid_changes.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/pending_gid_to_lid_change.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/pending_gid_to_lid_changes.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/pending_gid_to_lid_changes.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reprocessing/CMakeLists.txt2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reprocessing/attribute_reprocessing_initializer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reprocessing/attribute_reprocessing_initializer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reprocessing/document_reprocessing_handler.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reprocessing/document_reprocessing_handler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_handler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_initializer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_reader.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_rewriter.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_task.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reprocessing/reprocess_documents_task.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reprocessing/reprocess_documents_task.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reprocessing/reprocessingrunner.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reprocessing/reprocessingrunner.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/CMakeLists.txt2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/attribute_writer_factory.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/blockable_maintenance_job.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/blockable_maintenance_job.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/bootstrapconfig.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/bootstrapconfig.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/bootstrapconfigmanager.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/bootstrapconfigmanager.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/buckethandler.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/buckethandler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/bucketmovejob.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/bucketmovejob.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/clusterstatehandler.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/clusterstatehandler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/combiningfeedview.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/combiningfeedview.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/configstore.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/ddbstate.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/ddbstate.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_filter.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_filter.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_forwarder.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_forwarder.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_metrics.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_metrics.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_sampler.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_sampler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_state.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/docstorevalidator.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/docstorevalidator.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_db_config_owner.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_db_config_owner.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_db_directory_holder.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_db_directory_holder.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_db_explorer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_db_explorer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_db_flush_config.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_db_flush_config.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_db_maintenance_config.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_db_maintenance_config.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_meta_store_read_guards.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_meta_store_read_guards.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_scan_iterator.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_scan_iterator.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_subdb_collection_explorer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_subdb_collection_explorer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_subdb_collection_initializer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_subdb_collection_initializer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_subdb_explorer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_subdb_explorer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_subdb_initializer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_subdb_initializer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_subdb_initializer_result.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_subdb_initializer_result.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentbucketmover.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentbucketmover.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdb.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdb.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdb_metrics_updater.cpp10
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdb_metrics_updater.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdbconfig.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdbconfig.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.cpp10
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdbconfigscout.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdbconfigscout.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentretriever.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentretriever.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentsubdbcollection.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentsubdbcollection.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/emptysearchview.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/emptysearchview.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/executor_explorer_utils.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/executor_explorer_utils.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/executor_thread_service.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/executor_thread_service.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/executor_threading_service_explorer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/executor_threading_service_explorer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/executorthreadingservice.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/executorthreadingservice.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/fast_access_document_retriever.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/fast_access_document_retriever.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/fast_access_feed_view.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/fast_access_feed_view.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/feedconfigstore.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/feedhandler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/feedstate.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/feedstate.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/feedstates.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/feedstates.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/fileconfigmanager.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/fileconfigmanager.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/flushhandlerproxy.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/flushhandlerproxy.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/forcecommitcontext.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/forcecommitcontext.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/forcecommitdonetask.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/forcecommitdonetask.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/health_adapter.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/health_adapter.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/heart_beat_job.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/heart_beat_job.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/i_attribute_writer_factory.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/i_blockable_maintenance_job.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/i_disk_mem_usage_listener.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/i_disk_mem_usage_notifier.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/i_document_db_config_owner.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/i_document_scan_iterator.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/i_document_subdb_owner.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/i_feed_handler_owner.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/i_inc_serial_num.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/i_lid_space_compaction_handler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/i_maintenance_job.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/i_move_operation_limiter.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/i_operation_storer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/i_proton_configurer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/i_proton_configurer_owner.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/i_proton_disk_layout.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/ibucketfreezelistener.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/ibucketfreezer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/ibucketmodifiedhandler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/ibucketstatecalculator.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/ibucketstatechangedhandler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/ibucketstatechangednotifier.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/iclusterstatechangedhandler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/iclusterstatechangednotifier.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/idocumentdbowner.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/idocumentdbowner.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/idocumentmovehandler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/idocumentsubdb.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/ifeedview.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/igetserialnum.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/iheartbeathandler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/imaintenancejobrunner.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/ipruneremoveddocumentshandler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/ireplayconfig.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/ireplayconfig.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/ireplaypackethandler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/isummaryadapter.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/itlssyncer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/job_tracked_maintenance_job.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/job_tracked_maintenance_job.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_handler.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_handler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/maintenance_controller_explorer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/maintenance_controller_explorer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/maintenancedocumentsubdb.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/maintenancedocumentsubdb.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/maintenancejobrunner.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/maintenancejobrunner.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/matchers.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/matchers.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/matchview.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/matchview.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/memory_flush_config_updater.cpp6
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/memory_flush_config_updater.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/memoryconfigstore.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/memoryconfigstore.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/memoryflush.cpp14
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/memoryflush.h3
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/minimal_document_retriever.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/minimal_document_retriever.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/move_operation_limiter.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/move_operation_limiter.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/operationdonecontext.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/operationdonecontext.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/packetwrapper.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/prepare_restart_handler.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/prepare_restart_handler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/proton.cpp7
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/proton.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/proton_config_fetcher.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/proton_config_fetcher.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/proton_config_snapshot.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/proton_config_snapshot.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/proton_configurer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/proton_configurer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/proton_disk_layout.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/proton_disk_layout.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/proton_thread_pools_explorer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/proton_thread_pools_explorer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/prune_session_cache_job.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/prune_session_cache_job.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/pruneremoveddocumentsjob.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/pruneremoveddocumentsjob.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/putdonecontext.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/putdonecontext.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/reconfig_params.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/reconfig_params.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/remove_operations_rate_tracker.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/remove_operations_rate_tracker.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/removedonecontext.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/removedonecontext.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/removedonetask.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/removedonetask.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/replaypacketdispatcher.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/replaypacketdispatcher.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/resource_usage_explorer.cpp26
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/resource_usage_explorer.h9
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/resource_usage_state.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/rpc_hooks.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/rpc_hooks.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/sample_attribute_usage_job.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/sample_attribute_usage_job.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchcontext.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchcontext.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchhandlerproxy.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchhandlerproxy.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchview.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchview.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/simpleflush.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/simpleflush.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/summaryadapter.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/summaryadapter.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/threading_service_config.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/threading_service_config.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/tls_replay_progress.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/tlssyncer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/tlssyncer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/tlswriter.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/transactionlogmanager.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/transactionlogmanager.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/transactionlogmanagerbase.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/transactionlogmanagerbase.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/updatedonecontext.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/updatedonecontext.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/summaryengine/CMakeLists.txt2
-rw-r--r--searchcore/src/vespa/searchcore/proton/summaryengine/docsum_by_slime.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/summaryengine/docsum_by_slime.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/summaryengine/isearchhandler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/summaryengine/summaryengine.cpp6
-rw-r--r--searchcore/src/vespa/searchcore/proton/summaryengine/summaryengine.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/CMakeLists.txt2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/attribute_utils.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/attribute_vectors.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/bucketdocuments.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/bucketfactory.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/bucketfactory.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/buckethandler.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/buckethandler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/bucketstatecalculator.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/clusterstatehandler.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/clusterstatehandler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/disk_mem_usage_notifier.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/document.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/document_meta_store_context_observer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/document_meta_store_observer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/documentdb_config_builder.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/documentdb_config_builder.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/dummy_document_store.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/dummy_document_sub_db.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/dummy_feed_view.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/dummy_feed_view.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/dummy_flush_handler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/dummy_flush_target.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/dummy_summary_manager.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/executor_observer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/mock_attribute_manager.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/mock_document_db_reference.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/mock_gid_to_lid_change_handler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/mock_index_manager.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/mock_index_writer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/mock_summary_adapter.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/resulthandler.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/simple_job_tracker.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/simple_thread_service.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/simple_threading_service.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/test.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/thread_service_observer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/thread_utils.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/threading_service_observer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/threading_service_observer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/userdocuments.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/userdocumentsbuilder.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/userdocumentsbuilder.h2
-rw-r--r--searchcore/util/showschema.pl2
-rw-r--r--searchcorespi/CMakeLists.txt2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/CMakeLists.txt2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/flush/CMakeLists.txt2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/flush/flushstats.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/flush/flushstats.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/flush/flushtask.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/flush/iflushtarget.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/flush/lambdaflushtask.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/CMakeLists.txt2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/activediskindexes.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/activediskindexes.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/disk_index_stats.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/disk_index_stats.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/diskindexcleaner.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/diskindexcleaner.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/eventlogger.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/eventlogger.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/fakeindexsearchable.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/fusionrunner.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/fusionrunner.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/fusionspec.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/i_thread_service.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/idiskindex.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/iindexcollection.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/iindexcollection.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/iindexmaintaineroperations.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/iindexmanager.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/iindexmanager.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/imemoryindex.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/index_manager_explorer.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/index_manager_explorer.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/index_manager_stats.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/index_manager_stats.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/index_searchable_stats.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/index_searchable_stats.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexcollection.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexcollection.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexdisklayout.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexdisklayout.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexflushtarget.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexflushtarget.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexfusiontarget.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexfusiontarget.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexmaintainerconfig.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexmaintainerconfig.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexmaintainercontext.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexmaintainercontext.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexmanagerconfig.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexmanagerconfig.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexreadutilities.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexreadutilities.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexsearchable.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexsearchablevisitor.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexwriteutilities.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexwriteutilities.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/isearchableindexcollection.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/isearchableindexcollection.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/ithreadingservice.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/memory_index_stats.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/warmupconfig.h2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.cpp2
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.h2
-rw-r--r--searchlib/CMakeLists.txt4
-rw-r--r--searchlib/abi-spec.json7
-rw-r--r--searchlib/pom.xml2
-rw-r--r--searchlib/src/Doxyfile2
-rw-r--r--searchlib/src/apps/docstore/CMakeLists.txt2
-rw-r--r--searchlib/src/apps/docstore/benchmarkdatastore.cpp2
-rw-r--r--searchlib/src/apps/docstore/create-idx-from-dat.cpp2
-rw-r--r--searchlib/src/apps/docstore/documentstoreinspect.cpp2
-rw-r--r--searchlib/src/apps/docstore/verifylogdatastore.cpp2
-rw-r--r--searchlib/src/apps/tests/CMakeLists.txt2
-rw-r--r--searchlib/src/apps/tests/biglogtest.cpp2
-rw-r--r--searchlib/src/apps/tests/btreestress_test.cpp2
-rw-r--r--searchlib/src/apps/tests/document_weight_attribute_lookup_stress_test.cpp2
-rw-r--r--searchlib/src/apps/tests/memoryindexstress_test.cpp2
-rw-r--r--searchlib/src/apps/uniform/CMakeLists.txt2
-rw-r--r--searchlib/src/apps/uniform/uniform.cpp2
-rw-r--r--searchlib/src/apps/vespa-attribute-inspect/CMakeLists.txt2
-rw-r--r--searchlib/src/apps/vespa-attribute-inspect/loadattribute.rb2
-rw-r--r--searchlib/src/apps/vespa-attribute-inspect/vespa-attribute-inspect.cpp2
-rw-r--r--searchlib/src/apps/vespa-fileheader-inspect/CMakeLists.txt2
-rw-r--r--searchlib/src/apps/vespa-fileheader-inspect/vespa-fileheader-inspect.cpp2
-rw-r--r--searchlib/src/apps/vespa-index-inspect/CMakeLists.txt2
-rw-r--r--searchlib/src/apps/vespa-index-inspect/vespa-index-inspect.cpp2
-rw-r--r--searchlib/src/apps/vespa-ranking-expression-analyzer/CMakeLists.txt2
-rw-r--r--searchlib/src/apps/vespa-ranking-expression-analyzer/vespa-ranking-expression-analyzer.cpp2
-rwxr-xr-xsearchlib/src/forcelink.sh2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/AggregationResult.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/AverageAggregationResult.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/CountAggregationResult.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/ExpressionCountAggregationResult.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/FS4Hit.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/ForceLoad.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/Group.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/Grouping.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/GroupingLevel.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/Hit.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/HitsAggregationResult.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/MaxAggregationResult.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/MinAggregationResult.java2
-rwxr-xr-xsearchlib/src/main/java/com/yahoo/searchlib/aggregation/RawData.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/StandardDeviationAggregationResult.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/SumAggregationResult.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/VdsHit.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/XorAggregationResult.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/BiasEstimator.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/HyperLogLog.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/HyperLogLogEstimator.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/NormalSketch.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/Sketch.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/SketchMerger.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/SparseSketch.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/UniqueCountEstimator.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/aggregation/package-info.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/document/package-info.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/AddFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/AggregationRefNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/AndFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/ArithmeticTypeConversion.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/ArrayAtLookupNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/AttributeMapLookupNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/AttributeNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/BitFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/BoolResultNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/BoolResultNodeVector.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/BucketResultNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/CatFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/ConstantNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/DebugWaitFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/DivideFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/DocumentAccessorNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/DocumentFieldNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/ExpressionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/FixedWidthBucketFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/FloatBucketResultNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/FloatBucketResultNodeVector.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/FloatResultNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/FloatResultNodeVector.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/ForceLoad.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/FunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/GetDocIdNamespaceSpecificFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/Int16ResultNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/Int16ResultNodeVector.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/Int32ResultNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/Int32ResultNodeVector.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/Int8ResultNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/Int8ResultNodeVector.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerBucketResultNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerBucketResultNodeVector.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerResultNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerResultNodeVector.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/InterpolatedLookupNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/MD5BitFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/MathFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/MaxFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/MinFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/ModuloFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/MultiArgFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/MultiplyFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/NegateFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/NormalizeSubjectFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/NullResultNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/NumElemFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/NumericFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/NumericResultNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/OrFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/PositiveInfinityResultNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/RangeBucketPreDefFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/RawBucketResultNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/RawBucketResultNodeVector.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/RawResultNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/RawResultNodeVector.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/RelevanceNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/ResultNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/ResultNodeVector.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/ReverseFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/SingleResultNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/SortFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/StrCatFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/StrLenFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/StringBucketResultNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/StringBucketResultNodeVector.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/StringResultNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/StringResultNodeVector.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/TimeStampFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/ToFloatFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/ToIntFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/ToRawFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/ToStringFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/UcaFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/UnaryBitFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/UnaryFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/XorBitFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/XorFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/ZCurveFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/package-info.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/gbdt/CategoryFeatureNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/gbdt/FeatureNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/gbdt/GbdtConverter.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/gbdt/GbdtModel.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/gbdt/NumericFeatureNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/gbdt/ResponseNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/gbdt/TreeNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/gbdt/XmlHelper.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/package-info.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/ranking/features/ElementCompleteness.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/ranking/features/Features.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/ranking/features/FieldTermMatch.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/Field.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/FieldMatchMetrics.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/FieldMatchMetricsComputer.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/FieldMatchMetricsParameters.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/Main.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/Query.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/QueryTerm.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/SegmentStartPoint.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/Trace.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/package-info.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/ranking/features/package-info.java2
-rwxr-xr-xsearchlib/src/main/java/com/yahoo/searchlib/rankingexpression/ExpressionFunction.java2
-rwxr-xr-xsearchlib/src/main/java/com/yahoo/searchlib/rankingexpression/FeatureList.java2
-rwxr-xr-xsearchlib/src/main/java/com/yahoo/searchlib/rankingexpression/RankingExpression.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/Reference.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/AbstractArrayContext.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/ArrayContext.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/BooleanValue.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/Context.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/ContextIndex.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/DoubleCompatibleValue.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/DoubleOnlyArrayContext.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/DoubleValue.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/ExpressionOptimizer.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/MapContext.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/MapTypeContext.java4
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/OptimizationReport.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/Optimizer.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/StringValue.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/TensorValue.java3
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/Value.java4
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTForestNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTForestOptimizer.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTOptimizer.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/package-info.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/tensoroptimization/TensorOptimizer.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/package-info.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/parser/package-info.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Arguments.java5
-rwxr-xr-xsearchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ArithmeticNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ArithmeticOperator.java2
-rwxr-xr-xsearchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/BooleanNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ComparisonNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/CompositeNode.java2
-rwxr-xr-xsearchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ConstantNode.java2
-rwxr-xr-xsearchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/EmbracedNode.java2
-rwxr-xr-xsearchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ExpressionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Function.java5
-rwxr-xr-xsearchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/FunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/FunctionReferenceContext.java10
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/GeneratorLambdaFunctionNode.java2
-rwxr-xr-xsearchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/IfNode.java14
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/LambdaFunctionNode.java2
-rwxr-xr-xsearchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/NameNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/NegativeNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/NotNode.java2
-rwxr-xr-xsearchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ReferenceNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SetMembershipNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TensorFunctionNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TruthOperator.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/package-info.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/ConstantDereferencer.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/ExpressionTransformer.java20
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/Simplifier.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/TensorMaxMinTransformer.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/TransformContext.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/package-info.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/tensor/EvaluateTensorConformance.java2
-rwxr-xr-xsearchlib/src/main/java/com/yahoo/searchlib/treenet/TreeNetConverter.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/treenet/package-info.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/treenet/parser/package-info.java2
-rwxr-xr-xsearchlib/src/main/java/com/yahoo/searchlib/treenet/rule/ComparisonCondition.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/Condition.java2
-rwxr-xr-xsearchlib/src/main/java/com/yahoo/searchlib/treenet/rule/Response.java2
-rwxr-xr-xsearchlib/src/main/java/com/yahoo/searchlib/treenet/rule/SetMembershipCondition.java2
-rwxr-xr-xsearchlib/src/main/java/com/yahoo/searchlib/treenet/rule/Tree.java2
-rwxr-xr-xsearchlib/src/main/java/com/yahoo/searchlib/treenet/rule/TreeNet.java2
-rwxr-xr-xsearchlib/src/main/java/com/yahoo/searchlib/treenet/rule/TreeNode.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/package-info.java2
-rwxr-xr-xsearchlib/src/main/javacc/RankingExpressionParser.jj21
-rwxr-xr-xsearchlib/src/main/javacc/TreeNetParser.jj2
-rwxr-xr-xsearchlib/src/main/sh/evaluation-benchmark2
-rwxr-xr-xsearchlib/src/main/sh/vespa-evaluate-tensor-conformance.sh2
-rwxr-xr-xsearchlib/src/main/sh/vespa-gbdt-converter2
-rwxr-xr-xsearchlib/src/main/sh/vespa-treenet-converter2
-rw-r--r--searchlib/src/protobuf/search_protocol.proto6
-rw-r--r--searchlib/src/test/files/gbdt.ext.xml2
-rw-r--r--searchlib/src/test/files/gbdt.xml2
-rw-r--r--searchlib/src/test/files/gbdt_empty_tree.xml2
-rw-r--r--searchlib/src/test/files/gbdt_err.xml2
-rw-r--r--searchlib/src/test/files/gbdt_set_inclusion_test.xml2
-rw-r--r--searchlib/src/test/files/gbdt_tree_response.xml2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/aggregation/AggregationTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/aggregation/ExpressionCountAggregationResultTest.java2
-rwxr-xr-xsearchlib/src/test/java/com/yahoo/searchlib/aggregation/ForceLoadTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/aggregation/GroupTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/aggregation/GroupingSerializationTest.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/aggregation/GroupingTestCase.java2
-rwxr-xr-xsearchlib/src/test/java/com/yahoo/searchlib/aggregation/MergeTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/aggregation/StandardDeviationAggregationResultTest.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/BiasEstimatorTest.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/HyperLogLogEstimatorTest.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/HyperLogLogPrecisionBenchmark.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/NormalSketchTest.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/SketchMergerTest.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/SketchUtils.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/SparseSketchTest.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/expression/ExpressionTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/expression/FixedWidthBucketFunctionTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/expression/FloatBucketResultNodeTestCase.java2
-rwxr-xr-xsearchlib/src/test/java/com/yahoo/searchlib/expression/ForceLoadTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/expression/IntegerBucketResultNodeTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/expression/IntegerResultNodeTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/expression/NullResultNodeTestCase.java2
-rwxr-xr-xsearchlib/src/test/java/com/yahoo/searchlib/expression/ObjectVisitorTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/expression/RangeBucketPreDefFunctionTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/expression/RawBucketResultNodeTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/expression/ResultNodeTest.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/expression/ResultNodeVectorTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/expression/StringBucketResultNodeTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/expression/TimeStampFunctionTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/expression/ZCurveFunctionTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/gbdt/GbdtConverterTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/gbdt/GbdtModelTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/gbdt/ReferenceNodeTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/gbdt/ResponseNodeTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/gbdt/TreeNodeTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/gbdt/XmlHelperTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/ranking/features/ElementCompletenessTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/ranking/features/FieldTermMatchTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/SemanticDistanceTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/reference/OptimalStringAlignmentDistance.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/reference/TextbookLevenshteinDistance.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/reference/test/OptimalStringAlignmentTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/test/FieldMatchMetricsTestCase.java2
-rwxr-xr-xsearchlib/src/test/java/com/yahoo/searchlib/rankingexpression/FeatureListTestCase.java2
-rwxr-xr-xsearchlib/src/test/java/com/yahoo/searchlib/rankingexpression/RankingExpressionTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/ReferenceTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/Benchmark.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationBenchmark.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java12
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTester.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/NeuralNetEvaluationTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/StreamEvaluationBenchmark.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/TypeResolutionTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/ContextReuseTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTForestOptimizerTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTOptimizerTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/tensoroptimization/TensorOptimizerTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/rule/ArgumentsTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/rule/ReferenceNodeTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/ConstantDereferencerTestCase.java2
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/SimplifierTestCase.java2
-rwxr-xr-xsearchlib/src/test/java/com/yahoo/searchlib/treenet/TreeNetParserTestCase.java2
-rw-r--r--searchlib/src/tests/aggregator/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/aggregator/attr_test.cpp2
-rw-r--r--searchlib/src/tests/aggregator/perdocexpr.cpp2
-rw-r--r--searchlib/src/tests/alignment/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/alignment/alignment.cpp2
-rw-r--r--searchlib/src/tests/attribute/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/attribute_header/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/attribute_header/attribute_header_test.cpp2
-rw-r--r--searchlib/src/tests/attribute/attribute_operation/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/attribute_operation/attribute_operation_test.cpp2
-rw-r--r--searchlib/src/tests/attribute/attribute_test.cpp43
-rw-r--r--searchlib/src/tests/attribute/attributefilewriter/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/attributefilewriter/attributefilewriter_test.cpp2
-rw-r--r--searchlib/src/tests/attribute/attributemanager/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/attributemanager/attributemanager_test.cpp112
-rw-r--r--searchlib/src/tests/attribute/benchmark/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/benchmark/attributebenchmark.cpp2
-rw-r--r--searchlib/src/tests/attribute/benchmark/attributebenchmark.rb2
-rw-r--r--searchlib/src/tests/attribute/benchmark/attributesearcher.h2
-rw-r--r--searchlib/src/tests/attribute/benchmark/attributeupdater.h2
-rw-r--r--searchlib/src/tests/attribute/benchmark/benchmarkplotter.rb2
-rw-r--r--searchlib/src/tests/attribute/bitvector/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/bitvector/bitvector_test.cpp2
-rw-r--r--searchlib/src/tests/attribute/bitvector_search_cache/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/bitvector_search_cache/bitvector_search_cache_test.cpp2
-rw-r--r--searchlib/src/tests/attribute/changevector/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/changevector/changevector_test.cpp2
-rwxr-xr-xsearchlib/src/tests/attribute/changevector/changevector_test.sh2
-rw-r--r--searchlib/src/tests/attribute/compaction/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/compaction/attribute_compaction_test.cpp4
-rw-r--r--searchlib/src/tests/attribute/document_weight_iterator/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/document_weight_iterator/document_weight_iterator_test.cpp2
-rw-r--r--searchlib/src/tests/attribute/document_weight_or_filter_search/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/document_weight_or_filter_search/document_weight_or_filter_search_test.cpp2
-rw-r--r--searchlib/src/tests/attribute/enum_comparator/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/enum_comparator/enum_comparator_test.cpp2
-rw-r--r--searchlib/src/tests/attribute/enumeratedsave/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/enumeratedsave/enumeratedsave_test.cpp11
-rw-r--r--searchlib/src/tests/attribute/enumstore/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/enumstore/enumstore_test.cpp2
-rw-r--r--searchlib/src/tests/attribute/extendattributes/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/extendattributes/extendattribute.cpp2
-rwxr-xr-xsearchlib/src/tests/attribute/extendattributes/extendattribute_test.sh2
-rw-r--r--searchlib/src/tests/attribute/guard/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/guard/attributeguard.cpp2
-rwxr-xr-xsearchlib/src/tests/attribute/guard/attributeguard_test.sh2
-rw-r--r--searchlib/src/tests/attribute/imported_attribute_vector/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/imported_attribute_vector/imported_attribute_vector_test.cpp2
-rw-r--r--searchlib/src/tests/attribute/imported_search_context/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/imported_search_context/imported_search_context_test.cpp2
-rw-r--r--searchlib/src/tests/attribute/multi_value_mapping/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/multi_value_mapping/multi_value_mapping_test.cpp2
-rw-r--r--searchlib/src/tests/attribute/posting_list_merger/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/posting_list_merger/posting_list_merger_test.cpp2
-rw-r--r--searchlib/src/tests/attribute/posting_store/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/posting_store/posting_store_test.cpp2
-rw-r--r--searchlib/src/tests/attribute/postinglist/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/postinglist/postinglist.cpp2
-rw-r--r--searchlib/src/tests/attribute/postinglistattribute/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/postinglistattribute/postinglistattribute_test.cpp2
-rwxr-xr-xsearchlib/src/tests/attribute/postinglistattribute/postinglistattribute_test.sh2
-rw-r--r--searchlib/src/tests/attribute/reference_attribute/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp2
-rw-r--r--searchlib/src/tests/attribute/save_target/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/save_target/attribute_save_target_test.cpp2
-rw-r--r--searchlib/src/tests/attribute/searchable/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/searchable/attribute_searchable_adapter_test.cpp2
-rw-r--r--searchlib/src/tests/attribute/searchable/attribute_weighted_set_blueprint_test.cpp2
-rw-r--r--searchlib/src/tests/attribute/searchable/attributeblueprint_test.cpp2
-rw-r--r--searchlib/src/tests/attribute/searchcontext/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/searchcontext/searchcontext_test.cpp2
-rwxr-xr-xsearchlib/src/tests/attribute/searchcontext/searchcontext_test.sh2
-rw-r--r--searchlib/src/tests/attribute/searchcontextelementiterator/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/searchcontextelementiterator/searchcontextelementiterator_test.cpp2
-rw-r--r--searchlib/src/tests/attribute/sourceselector/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/sourceselector/sourceselector_test.cpp2
-rw-r--r--searchlib/src/tests/attribute/stringattribute/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/stringattribute/stringattribute_test.cpp2
-rwxr-xr-xsearchlib/src/tests/attribute/stringattribute/stringattribute_test.sh2
-rw-r--r--searchlib/src/tests/attribute/tensorattribute/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/tensorattribute/tensorattribute_test.cpp180
-rw-r--r--searchlib/src/tests/bitcompression/expgolomb/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/bitcompression/expgolomb/expgolomb_test.cpp2
-rw-r--r--searchlib/src/tests/bitvector/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/bitvector/bitvectorbenchmark.cpp2
-rw-r--r--searchlib/src/tests/btree/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/btree/scanspeed.cpp2
-rw-r--r--searchlib/src/tests/common/bitvector/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/common/bitvector/bitvector_benchmark.cpp2
-rw-r--r--searchlib/src/tests/common/bitvector/bitvector_test.cpp2
-rw-r--r--searchlib/src/tests/common/bitvector/condensedbitvector_test.cpp2
-rw-r--r--searchlib/src/tests/common/location/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/common/location/geo_location_test.cpp2
-rw-r--r--searchlib/src/tests/common/location_iterator/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/common/location_iterator/location_iterator_test.cpp2
-rw-r--r--searchlib/src/tests/common/resultset/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/common/resultset/resultset_test.cpp2
-rw-r--r--searchlib/src/tests/common/summaryfeatures/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/common/summaryfeatures/summaryfeatures.cpp2
-rw-r--r--searchlib/src/tests/diskindex/bitvector/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/diskindex/bitvector/bitvector_test.cpp2
-rw-r--r--searchlib/src/tests/diskindex/diskindex/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/diskindex/diskindex/diskindex_test.cpp2
-rw-r--r--searchlib/src/tests/diskindex/fieldwriter/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/diskindex/fieldwriter/fieldwriter_test.cpp2
-rw-r--r--searchlib/src/tests/diskindex/fusion/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/diskindex/fusion/fusion_test.cpp2
-rwxr-xr-xsearchlib/src/tests/diskindex/fusion/fusion_test.sh2
-rw-r--r--searchlib/src/tests/diskindex/pagedict4/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/diskindex/pagedict4/pagedict4_hugeword_cornercase_test.cpp2
-rw-r--r--searchlib/src/tests/diskindex/pagedict4/pagedict4test.cpp2
-rw-r--r--searchlib/src/tests/docstore/chunk/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/docstore/chunk/chunk_test.cpp2
-rw-r--r--searchlib/src/tests/docstore/document_store/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/docstore/document_store/document_store_test.cpp2
-rw-r--r--searchlib/src/tests/docstore/document_store/visitcache_test.cpp2
-rw-r--r--searchlib/src/tests/docstore/document_store_visitor/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/docstore/document_store_visitor/document_store_visitor_test.cpp2
-rw-r--r--searchlib/src/tests/docstore/file_chunk/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/docstore/file_chunk/file_chunk_test.cpp2
-rw-r--r--searchlib/src/tests/docstore/lid_info/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/docstore/lid_info/lid_info_test.cpp2
-rw-r--r--searchlib/src/tests/docstore/logdatastore/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp2
-rwxr-xr-xsearchlib/src/tests/docstore/logdatastore/logdatastore_test.sh2
-rw-r--r--searchlib/src/tests/docstore/store_by_bucket/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/docstore/store_by_bucket/store_by_bucket_test.cpp2
-rw-r--r--searchlib/src/tests/engine/proto_converter/proto_converter_test.cpp29
-rw-r--r--searchlib/src/tests/expression/attributenode/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/expression/attributenode/attribute_node_test.cpp2
-rw-r--r--searchlib/src/tests/features/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/features/benchmark/fieldmatch/plot.rb2
-rw-r--r--searchlib/src/tests/features/benchmark/fieldmatch/run.rb2
-rw-r--r--searchlib/src/tests/features/benchmark/plotlib.rb2
-rw-r--r--searchlib/src/tests/features/benchmark/rankingexpression/plot.rb2
-rw-r--r--searchlib/src/tests/features/benchmark/rankingexpression/run.rb2
-rw-r--r--searchlib/src/tests/features/beta/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/features/beta/beta_features.cpp2
-rw-r--r--searchlib/src/tests/features/constant/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/features/constant/constant_test.cpp2
-rw-r--r--searchlib/src/tests/features/element_completeness/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/features/element_completeness/element_completeness_test.cpp2
-rw-r--r--searchlib/src/tests/features/element_similarity_feature/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/features/element_similarity_feature/element_similarity_feature_test.cpp2
-rw-r--r--searchlib/src/tests/features/euclidean_distance/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/features/euclidean_distance/euclidean_distance_test.cpp2
-rw-r--r--searchlib/src/tests/features/featurebenchmark.cpp2
-rw-r--r--searchlib/src/tests/features/imported_dot_product/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/features/imported_dot_product/imported_dot_product_test.cpp2
-rw-r--r--searchlib/src/tests/features/internal_max_reduce_prod_join_feature/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/features/internal_max_reduce_prod_join_feature/internal_max_reduce_prod_join_feature_test.cpp2
-rw-r--r--searchlib/src/tests/features/item_raw_score/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/features/item_raw_score/item_raw_score_test.cpp2
-rw-r--r--searchlib/src/tests/features/max_reduce_prod_join_replacer/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/features/max_reduce_prod_join_replacer/max_reduce_prod_join_replacer_test.cpp2
-rw-r--r--searchlib/src/tests/features/native_dot_product/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/features/native_dot_product/native_dot_product_test.cpp2
-rw-r--r--searchlib/src/tests/features/nns_closeness/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/features/nns_closeness/nns_closeness_test.cpp2
-rw-r--r--searchlib/src/tests/features/nns_distance/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/features/nns_distance/nns_distance_test.cpp2
-rw-r--r--searchlib/src/tests/features/onnx_feature/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/features/onnx_feature/fragile.onnx11
-rwxr-xr-xsearchlib/src/tests/features/onnx_feature/fragile.py4
-rw-r--r--searchlib/src/tests/features/onnx_feature/onnx_feature_test.cpp10
-rwxr-xr-xsearchlib/src/tests/features/onnx_feature/strange_names.py2
-rw-r--r--searchlib/src/tests/features/prod_features.cpp2
-rw-r--r--searchlib/src/tests/features/prod_features.h2
-rw-r--r--searchlib/src/tests/features/prod_features_attributematch.cpp2
-rw-r--r--searchlib/src/tests/features/prod_features_fieldmatch.cpp2
-rw-r--r--searchlib/src/tests/features/prod_features_fieldtermmatch.cpp2
-rw-r--r--searchlib/src/tests/features/prod_features_framework.cpp2
-rwxr-xr-xsearchlib/src/tests/features/prod_features_test.sh2
-rw-r--r--searchlib/src/tests/features/ranking_expression/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/features/ranking_expression/ranking_expression_test.cpp2
-rw-r--r--searchlib/src/tests/features/raw_score/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/features/raw_score/raw_score_test.cpp2
-rw-r--r--searchlib/src/tests/features/subqueries/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/features/subqueries/subqueries_test.cpp2
-rw-r--r--searchlib/src/tests/features/tensor/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/features/tensor/tensor_test.cpp2
-rw-r--r--searchlib/src/tests/features/tensor_from_labels/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/features/tensor_from_labels/tensor_from_labels_test.cpp2
-rw-r--r--searchlib/src/tests/features/tensor_from_weighted_set/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/features/tensor_from_weighted_set/tensor_from_weighted_set_test.cpp2
-rw-r--r--searchlib/src/tests/features/text_similarity_feature/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/features/text_similarity_feature/text_similarity_feature_test.cpp2
-rw-r--r--searchlib/src/tests/features/util/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/features/util/util_test.cpp2
-rw-r--r--searchlib/src/tests/fef/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/fef/attributecontent/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/fef/attributecontent/attributecontent_test.cpp2
-rw-r--r--searchlib/src/tests/fef/featurenamebuilder/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/fef/featurenamebuilder/featurenamebuilder_test.cpp2
-rw-r--r--searchlib/src/tests/fef/featurenameparser/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/fef/featurenameparser/featurenameparser_test.cpp2
-rw-r--r--searchlib/src/tests/fef/featureoverride/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/fef/featureoverride/featureoverride.cpp2
-rw-r--r--searchlib/src/tests/fef/fef_test.cpp2
-rw-r--r--searchlib/src/tests/fef/object_passing/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/fef/object_passing/object_passing_test.cpp2
-rw-r--r--searchlib/src/tests/fef/parameter/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/fef/parameter/parameter_test.cpp2
-rw-r--r--searchlib/src/tests/fef/phrasesplitter/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/fef/phrasesplitter/benchmark.cpp2
-rw-r--r--searchlib/src/tests/fef/phrasesplitter/phrasesplitter_test.cpp2
-rw-r--r--searchlib/src/tests/fef/properties/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/fef/properties/properties_test.cpp2
-rw-r--r--searchlib/src/tests/fef/rank_program/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/fef/rank_program/rank_program_test.cpp2
-rw-r--r--searchlib/src/tests/fef/resolver/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/fef/resolver/resolver_test.cpp2
-rw-r--r--searchlib/src/tests/fef/table/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/fef/table/table_test.cpp2
-rw-r--r--searchlib/src/tests/fef/termfieldmodel/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/fef/termfieldmodel/termfieldmodel_test.cpp2
-rw-r--r--searchlib/src/tests/fef/termmatchdatamerger/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/fef/termmatchdatamerger/termmatchdatamerger_test.cpp2
-rw-r--r--searchlib/src/tests/fileheadertk/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/fileheadertk/fileheadertk_test.cpp2
-rw-r--r--searchlib/src/tests/forcelink/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/forcelink/forcelink.cpp2
-rw-r--r--searchlib/src/tests/grouping/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/grouping/grouping_serialization_test.cpp2
-rw-r--r--searchlib/src/tests/grouping/grouping_test.cpp2
-rw-r--r--searchlib/src/tests/grouping/hyperloglog_test.cpp2
-rw-r--r--searchlib/src/tests/grouping/sketch_test.cpp2
-rw-r--r--searchlib/src/tests/groupingengine/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/groupingengine/groupingengine_benchmark.cpp2
-rw-r--r--searchlib/src/tests/groupingengine/groupingengine_test.cpp2
-rw-r--r--searchlib/src/tests/hitcollector/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/hitcollector/hitcollector_test.cpp2
-rw-r--r--searchlib/src/tests/hitcollector/sorted_hit_sequence_test.cpp2
-rw-r--r--searchlib/src/tests/index/docbuilder/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/index/docbuilder/docbuilder_test.cpp2
-rw-r--r--searchlib/src/tests/index/doctypebuilder/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/index/doctypebuilder/doctypebuilder_test.cpp2
-rw-r--r--searchlib/src/tests/indexmetainfo/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/indexmetainfo/indexmetainfo_test.cpp2
-rw-r--r--searchlib/src/tests/ld-library-path/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/ld-library-path/ld-library-path.cpp2
-rw-r--r--searchlib/src/tests/memoryindex/compact_words_store/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/memoryindex/compact_words_store/compact_words_store_test.cpp2
-rw-r--r--searchlib/src/tests/memoryindex/datastore/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/memoryindex/datastore/feature_store_test.cpp2
-rw-r--r--searchlib/src/tests/memoryindex/datastore/word_store_test.cpp2
-rw-r--r--searchlib/src/tests/memoryindex/document_inverter/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/memoryindex/document_inverter/document_inverter_test.cpp2
-rw-r--r--searchlib/src/tests/memoryindex/field_index/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/memoryindex/field_index/field_index_test.cpp2
-rw-r--r--searchlib/src/tests/memoryindex/field_index_remover/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/memoryindex/field_index_remover/field_index_remover_test.cpp2
-rw-r--r--searchlib/src/tests/memoryindex/field_inverter/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/memoryindex/field_inverter/field_inverter_test.cpp2
-rw-r--r--searchlib/src/tests/memoryindex/memory_index/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/memoryindex/memory_index/memory_index_test.cpp2
-rw-r--r--searchlib/src/tests/memoryindex/url_field_inverter/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/memoryindex/url_field_inverter/url_field_inverter_test.cpp2
-rw-r--r--searchlib/src/tests/nativerank/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/nativerank/nativerank.cpp2
-rw-r--r--searchlib/src/tests/nearsearch/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/nearsearch/nearsearch_test.cpp2
-rw-r--r--searchlib/src/tests/postinglistbm/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/postinglistbm/postinglistbm.cpp2
-rw-r--r--searchlib/src/tests/postinglistbm/stress_runner.cpp2
-rw-r--r--searchlib/src/tests/postinglistbm/stress_runner.h2
-rw-r--r--searchlib/src/tests/predicate/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/predicate/document_features_store_test.cpp2
-rw-r--r--searchlib/src/tests/predicate/predicate_bounds_posting_list_test.cpp2
-rw-r--r--searchlib/src/tests/predicate/predicate_index_test.cpp40
-rw-r--r--searchlib/src/tests/predicate/predicate_interval_posting_list_test.cpp2
-rw-r--r--searchlib/src/tests/predicate/predicate_interval_store_test.cpp2
-rw-r--r--searchlib/src/tests/predicate/predicate_range_term_expander_test.cpp2
-rw-r--r--searchlib/src/tests/predicate/predicate_ref_cache_test.cpp2
-rw-r--r--searchlib/src/tests/predicate/predicate_tree_analyzer_test.cpp2
-rw-r--r--searchlib/src/tests/predicate/predicate_tree_annotator_test.cpp41
-rw-r--r--searchlib/src/tests/predicate/predicate_zero_constraint_posting_list_test.cpp2
-rw-r--r--searchlib/src/tests/predicate/predicate_zstar_compressed_posting_list_test.cpp2
-rw-r--r--searchlib/src/tests/predicate/simple_index_test.cpp2
-rw-r--r--searchlib/src/tests/predicate/tree_crumbs_test.cpp2
-rw-r--r--searchlib/src/tests/prettyfloat/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/prettyfloat/prettyfloat.cpp2
-rw-r--r--searchlib/src/tests/query/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/query/customtypevisitor_test.cpp2
-rw-r--r--searchlib/src/tests/query/query_visitor_test.cpp2
-rw-r--r--searchlib/src/tests/query/querybuilder_test.cpp2
-rw-r--r--searchlib/src/tests/query/stackdumpquerycreator_test.cpp2
-rw-r--r--searchlib/src/tests/query/streaming_query_large_test.cpp2
-rw-r--r--searchlib/src/tests/query/streaming_query_test.cpp2
-rw-r--r--searchlib/src/tests/query/templatetermvisitor_test.cpp2
-rw-r--r--searchlib/src/tests/queryeval/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/queryeval/blueprint/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/queryeval/blueprint/blueprint_test.cpp2
-rw-r--r--searchlib/src/tests/queryeval/blueprint/intermediate_blueprints_test.cpp18
-rw-r--r--searchlib/src/tests/queryeval/blueprint/leaf_blueprints_test.cpp2
-rw-r--r--searchlib/src/tests/queryeval/blueprint/mysearch.h2
-rw-r--r--searchlib/src/tests/queryeval/dot_product/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/queryeval/dot_product/dot_product_test.cpp2
-rw-r--r--searchlib/src/tests/queryeval/equiv/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/queryeval/equiv/equiv_test.cpp2
-rw-r--r--searchlib/src/tests/queryeval/fake_searchable/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/queryeval/fake_searchable/fake_searchable_test.cpp2
-rw-r--r--searchlib/src/tests/queryeval/getnodeweight/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/queryeval/getnodeweight/getnodeweight_test.cpp2
-rw-r--r--searchlib/src/tests/queryeval/matching_elements_search/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/queryeval/matching_elements_search/matching_elements_search_test.cpp2
-rw-r--r--searchlib/src/tests/queryeval/monitoring_search_iterator/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/queryeval/monitoring_search_iterator/monitoring_search_iterator_test.cpp2
-rw-r--r--searchlib/src/tests/queryeval/multibitvectoriterator/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/queryeval/multibitvectoriterator/multibitvectoriterator_bench.cpp2
-rw-r--r--searchlib/src/tests/queryeval/multibitvectoriterator/multibitvectoriterator_test.cpp2
-rw-r--r--searchlib/src/tests/queryeval/parallel_weak_and/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/queryeval/parallel_weak_and/parallel_weak_and_test.cpp2
-rw-r--r--searchlib/src/tests/queryeval/predicate/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/queryeval/predicate/predicate_blueprint_test.cpp2
-rw-r--r--searchlib/src/tests/queryeval/predicate/predicate_search_test.cpp2
-rw-r--r--searchlib/src/tests/queryeval/queryeval.cpp2
-rw-r--r--searchlib/src/tests/queryeval/same_element/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/queryeval/same_element/same_element_test.cpp2
-rw-r--r--searchlib/src/tests/queryeval/simple_phrase/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/queryeval/simple_phrase/simple_phrase_test.cpp2
-rw-r--r--searchlib/src/tests/queryeval/sourceblender/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/queryeval/sourceblender/sourceblender.cpp2
-rw-r--r--searchlib/src/tests/queryeval/sparse_vector_benchmark/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/queryeval/sparse_vector_benchmark/sparse_vector_benchmark_test.cpp2
-rw-r--r--searchlib/src/tests/queryeval/termwise_eval/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/queryeval/termwise_eval/termwise_eval_test.cpp2
-rw-r--r--searchlib/src/tests/queryeval/weak_and/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/queryeval/weak_and/parallel_weak_and_bench.cpp2
-rw-r--r--searchlib/src/tests/queryeval/weak_and/rise_wand.h2
-rw-r--r--searchlib/src/tests/queryeval/weak_and/rise_wand.hpp2
-rw-r--r--searchlib/src/tests/queryeval/weak_and/wand_bench_setup.hpp2
-rw-r--r--searchlib/src/tests/queryeval/weak_and/weak_and_bench.cpp2
-rw-r--r--searchlib/src/tests/queryeval/weak_and/weak_and_test.cpp2
-rw-r--r--searchlib/src/tests/queryeval/weak_and/weak_and_test_expensive.cpp2
-rw-r--r--searchlib/src/tests/queryeval/weak_and_heap/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/queryeval/weak_and_heap/weak_and_heap_test.cpp2
-rw-r--r--searchlib/src/tests/queryeval/weak_and_scorers/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/queryeval/weak_and_scorers/weak_and_scorers_test.cpp2
-rw-r--r--searchlib/src/tests/queryeval/weighted_set_term/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/queryeval/weighted_set_term/weighted_set_term_test.cpp2
-rw-r--r--searchlib/src/tests/queryeval/wrappers/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/queryeval/wrappers/wrappers_test.cpp2
-rw-r--r--searchlib/src/tests/rankingexpression/feature_name_extractor/CMakeLists.txt8
-rw-r--r--searchlib/src/tests/rankingexpression/intrinsic_blueprint_adapter/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/rankingexpression/intrinsic_blueprint_adapter/intrinsic_blueprint_adapter_test.cpp2
-rw-r--r--searchlib/src/tests/rankingexpression/rankingexpressionlist1
-rw-r--r--searchlib/src/tests/ranksetup/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/ranksetup/ranksetup_test.cpp2
-rw-r--r--searchlib/src/tests/ranksetup/verify_feature/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/ranksetup/verify_feature/verify_feature_test.cpp2
-rw-r--r--searchlib/src/tests/sort/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/sort/sort_test.cpp2
-rw-r--r--searchlib/src/tests/sort/sortbenchmark.cpp2
-rw-r--r--searchlib/src/tests/sort/uca.cpp2
-rw-r--r--searchlib/src/tests/sortresults/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/sortresults/sorttest.cpp2
-rw-r--r--searchlib/src/tests/sortspec/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/sortspec/multilevelsort.cpp2
-rw-r--r--searchlib/src/tests/stringenum/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/stringenum/stringenum_test.cpp2
-rw-r--r--searchlib/src/tests/tensor/dense_tensor_store/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/tensor/dense_tensor_store/dense_tensor_store_test.cpp10
-rw-r--r--searchlib/src/tests/tensor/direct_tensor_store/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/tensor/direct_tensor_store/direct_tensor_store_test.cpp2
-rw-r--r--searchlib/src/tests/tensor/distance_functions/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/tensor/distance_functions/distance_functions_test.cpp2
-rw-r--r--searchlib/src/tests/tensor/hnsw_index/hnsw_index_test.cpp118
-rw-r--r--searchlib/src/tests/tensor/hnsw_index/stress_hnsw_mt.cpp2
-rw-r--r--searchlib/src/tests/tensor/hnsw_saver/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/tensor/hnsw_saver/hnsw_save_load_test.cpp25
-rw-r--r--searchlib/src/tests/transactionlog/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/transactionlog/chunks_test.cpp2
-rw-r--r--searchlib/src/tests/transactionlog/translogclient_test.cpp2
-rwxr-xr-xsearchlib/src/tests/transactionlog/translogclient_test.sh2
-rw-r--r--searchlib/src/tests/transactionlogstress/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/transactionlogstress/translogstress.cpp2
-rwxr-xr-xsearchlib/src/tests/transactionlogstress/translogstress_test.sh2
-rw-r--r--searchlib/src/tests/true/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/true/true.cpp2
-rw-r--r--searchlib/src/tests/url/CMakeLists.txt2
-rwxr-xr-xsearchlib/src/tests/url/dotest.sh2
-rw-r--r--searchlib/src/tests/url/testurl.cpp2
-rw-r--r--searchlib/src/tests/util/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/util/bufferwriter/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/util/bufferwriter/bufferwriter_test.cpp2
-rw-r--r--searchlib/src/tests/util/rawbuf_test.cpp2
-rw-r--r--searchlib/src/tests/util/searchable_stats/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/util/searchable_stats/searchable_stats_test.cpp2
-rw-r--r--searchlib/src/tests/util/slime_output_raw_buf_adapter/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/util/slime_output_raw_buf_adapter/slime_output_raw_buf_adapter_test.cpp2
-rw-r--r--searchlib/src/tests/vespa-fileheader-inspect/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/vespa-fileheader-inspect/vespa-fileheader-inspect_test.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/aggregation.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/aggregation.h2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/aggregationresult.h2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/averageaggregationresult.h2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/countaggregationresult.h2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/expressioncountaggregationresult.h2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/forcelink.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/fs4hit.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/fs4hit.h2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/group.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/group.h2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/grouping.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/grouping.h2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/groupinglevel.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/groupinglevel.h2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/hit.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/hit.h2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/hitlist.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/hitlist.h2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/hitsaggregationresult.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/hitsaggregationresult.h2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/maxaggregationresult.h2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/minaggregationresult.h2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/modifiers.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/modifiers.h2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/perdocexpression.h2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/predicates.h2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/rawrank.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/rawrank.h2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/standarddeviationaggregationresult.h2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/sumaggregationresult.h2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/vdshit.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/vdshit.h2
-rw-r--r--searchlib/src/vespa/searchlib/aggregation/xoraggregationresult.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/CMakeLists.txt3
-rw-r--r--searchlib/src/vespa/searchlib/attribute/address_space_components.cpp25
-rw-r--r--searchlib/src/vespa/searchlib/attribute/address_space_components.h25
-rw-r--r--searchlib/src/vespa/searchlib/attribute/address_space_usage.cpp36
-rw-r--r--searchlib/src/vespa/searchlib/attribute/address_space_usage.h25
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attribute.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attribute.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attribute_blueprint_params.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attribute_header.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attribute_header.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attribute_operation.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attribute_operation.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attribute_read_guard.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attribute_read_guard.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributecontext.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributecontext.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributefactory.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributefactory.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributefilebufferwriter.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributefilebufferwriter.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributefilesavetarget.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributefilesavetarget.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributefilewriter.cpp24
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributefilewriter.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributeguard.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributeguard.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributeiterators.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributeiterators.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributeiterators.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributemanager.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributemanager.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributememoryfilebufferwriter.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributememoryfilebufferwriter.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributememoryfilewriter.cpp13
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributememoryfilewriter.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributememorysavetarget.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributememorysavetarget.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributesaver.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributesaver.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributevector.cpp44
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributevector.h25
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributevector.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attrvector.cpp4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attrvector.h6
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attrvector.hpp4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/bitvector_search_cache.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/bitvector_search_cache.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/changevector.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/changevector.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/changevector.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/componentguard.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/componentguard.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/configconverter.cpp3
-rw-r--r--searchlib/src/vespa/searchlib/attribute/configconverter.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/createarrayfastsearch.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/createarraystd.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/createsetfastsearch.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/createsetstd.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/createsinglefastsearch.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/createsinglestd.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/defines.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/defines.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/diversity.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/diversity.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/diversity.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/dociditerator.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/dociditerator.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/document_weight_or_filter_search.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/document_weight_or_filter_search.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enumattribute.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enumattribute.h4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enumattribute.hpp10
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enumattributesaver.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enumattributesaver.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enumcomparator.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enumcomparator.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enumhintsearchcontext.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enumhintsearchcontext.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enumstore.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enumstore.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enumstore.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/extendableattributes.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/extendableattributes.h10
-rw-r--r--searchlib/src/vespa/searchlib/attribute/fixedsourceselector.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/fixedsourceselector.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/flagattribute.cpp6
-rw-r--r--searchlib/src/vespa/searchlib/attribute/flagattribute.h4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/floatbase.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/floatbase.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/floatbase.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/i_document_weight_attribute.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/i_document_weight_attribute.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/iattributefilewriter.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/iattributemanager.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/iattributemanager.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/iattributesavetarget.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/iattributesavetarget.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/imported_attribute_vector.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/imported_attribute_vector.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/imported_attribute_vector_factory.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/imported_attribute_vector_factory.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/imported_attribute_vector_read_guard.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/imported_attribute_vector_read_guard.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/imported_search_context.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/imported_search_context.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/integerbase.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/integerbase.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/integerbase.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/interlock.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/ipostinglistattributebase.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/ipostinglistsearchcontext.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/ipostinglistsearchcontext.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/iterator_pack.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/iterator_pack.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/load_utils.cpp4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/load_utils.h5
-rw-r--r--searchlib/src/vespa/searchlib/attribute/load_utils.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/loadedenumvalue.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/loadedenumvalue.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/loadednumericvalue.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/loadednumericvalue.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/loadedvalue.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/loadedvalue.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multi_value_mapping.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multi_value_mapping.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multi_value_mapping.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multi_value_mapping_base.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multi_value_mapping_base.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multienumattribute.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multienumattribute.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multienumattribute.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multienumattributesaver.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multienumattributesaver.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multinumericattribute.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multinumericattribute.h4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multinumericattribute.hpp4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multinumericenumattribute.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multinumericenumattribute.h4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multinumericenumattribute.hpp4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multinumericpostattribute.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multinumericpostattribute.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multinumericpostattribute.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multistringattribute.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multistringattribute.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multistringattribute.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multistringpostattribute.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multistringpostattribute.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multistringpostattribute.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multivalue.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multivalueattribute.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multivalueattribute.h4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multivalueattribute.hpp11
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multivalueattributesaver.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multivalueattributesaver.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multivalueattributesaverutils.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multivalueattributesaverutils.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/not_implemented_attribute.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/not_implemented_attribute.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/numericbase.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/numericbase.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/numericbase.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/posting_list_merger.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/posting_list_merger.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/posting_list_traverser.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/postingchange.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/postingchange.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/postingdata.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/postinglistattribute.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/postinglistattribute.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/postinglisttraits.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/postinglisttraits.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/postingstore.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/postingstore.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/postingstore.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/predicate_attribute.cpp4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/predicate_attribute.h4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/primitivereader.h4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/readable_attribute_vector.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/readerbase.cpp77
-rw-r--r--searchlib/src/vespa/searchlib/attribute/readerbase.h26
-rw-r--r--searchlib/src/vespa/searchlib/attribute/reference.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/reference_attribute.h4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/reference_attribute_saver.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/reference_attribute_saver.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/reference_mappings.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/reference_mappings.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/searchcontextelementiterator.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/searchcontextelementiterator.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singleboolattribute.cpp13
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singleboolattribute.h4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singleenumattribute.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singleenumattribute.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singleenumattribute.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singleenumattributesaver.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singleenumattributesaver.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singlenumericattribute.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singlenumericattribute.h4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singlenumericattribute.hpp4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singlenumericattributesaver.cpp18
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singlenumericattributesaver.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.h4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.hpp4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singlenumericpostattribute.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singlenumericpostattribute.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singlenumericpostattribute.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singlesmallnumericattribute.cpp13
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singlesmallnumericattribute.h4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singlestringattribute.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singlestringattribute.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singlestringattribute.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singlestringpostattribute.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singlestringpostattribute.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/singlestringpostattribute.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/sourceselector.cpp5
-rw-r--r--searchlib/src/vespa/searchlib/attribute/sourceselector.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/stringattribute.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/stringattribute.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/stringbase.cpp4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/stringbase.h4
-rw-r--r--searchlib/src/vespa/searchlib/bitcompression/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/bitcompression/compression.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/bitcompression/compression.h2
-rw-r--r--searchlib/src/vespa/searchlib/bitcompression/countcompression.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/bitcompression/countcompression.h2
-rw-r--r--searchlib/src/vespa/searchlib/bitcompression/pagedict4.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/bitcompression/pagedict4.h2
-rw-r--r--searchlib/src/vespa/searchlib/bitcompression/posocccompression.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/bitcompression/posocccompression.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/CMakeLists.txt5
-rw-r--r--searchlib/src/vespa/searchlib/common/allocatedbitvector.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/allocatedbitvector.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/base.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/bitvector.cpp9
-rw-r--r--searchlib/src/vespa/searchlib/common/bitvector.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/bitvectorcache.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/bitvectorcache.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/bitvectoriterator.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/bitvectoriterator.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/bitword.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/bitword.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/commit_param.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/condensedbitvectors.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/condensedbitvectors.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/converters.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/docstamp.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/documentlocations.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/documentlocations.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/documentsummary.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/documentsummary.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/feature.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/featureset.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/featureset.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/fileheadercontext.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/fileheadercontext.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/flush_token.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/flush_token.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/fslimits.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/geo_location.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/geo_location.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/geo_location_parser.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/geo_location_parser.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/geo_location_spec.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/geo_location_spec.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/gid.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/growablebitvector.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/growablebitvector.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/hitrank.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/i_compactable_lid_space.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/i_document_meta_store_context.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/i_flush_token.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/i_gid_to_lid_mapper.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/i_gid_to_lid_mapper_factory.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/identifiable.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/idocumentmetastore.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/indexmetainfo.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/indexmetainfo.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/lid_usage_stats.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/location.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/location.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/locationiterators.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/locationiterators.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/mapnames.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/mapnames.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/packets.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/packets.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/partialbitvector.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/partialbitvector.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/rankedhit.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/reserved.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/resultset.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/resultset.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/scheduletaskcallback.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/serialnum.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/serialnumfileheadercontext.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/serialnumfileheadercontext.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/sort.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/sort.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/sortdata.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/sortdata.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/sortresults.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/sortresults.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/sortspec.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/sortspec.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/threaded_compactable_lid_space.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/threaded_compactable_lid_space.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/tunefileinfo.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/tunefileinfo.h2
-rw-r--r--searchlib/src/vespa/searchlib/common/tunefileinfo.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/common/unique_issues.cpp13
-rw-r--r--searchlib/src/vespa/searchlib/common/unique_issues.h28
-rw-r--r--searchlib/src/vespa/searchlib/config/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/config/translogserver.def2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/bitvectordictionary.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/bitvectordictionary.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/bitvectorfile.cpp11
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/bitvectorfile.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/bitvectoridxfile.cpp11
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/bitvectoridxfile.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/bitvectorkeyscope.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/bitvectorkeyscope.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/dictionarywordreader.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/dictionarywordreader.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/diskindex.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/diskindex.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/disktermblueprint.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/disktermblueprint.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/docidmapper.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/docidmapper.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/extposocc.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/extposocc.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/fieldreader.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/fieldreader.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/fieldwriter.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/fieldwriter.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/fileheader.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/fileheader.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/fusion.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/fusion.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/indexbuilder.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/indexbuilder.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/pagedict4file.cpp22
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/pagedict4file.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/pagedict4randread.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/pagedict4randread.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/wordnummapper.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/wordnummapper.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/zcbuf.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/zcbuf.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/zcposocc.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/zcposocc.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/zcposocciterators.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/zcposocciterators.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/zcposoccrandread.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/zcposoccrandread.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/zcposting.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/zcposting.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/zcpostingiterators.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/zcpostingiterators.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/cachestats.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/chunk.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/chunk.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/chunkformat.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/chunkformat.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/chunkformats.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/chunkformats.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/compacter.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/compacter.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/data_store_file_chunk_id.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/data_store_file_chunk_id.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/data_store_file_chunk_stats.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/data_store_storage_stats.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/document_store_visitor_progress.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/document_store_visitor_progress.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/documentstore.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/documentstore.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/filechunk.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/filechunk.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/ibucketizer.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/idatastore.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/idatastore.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/idocumentstore.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/idocumentstore.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/lid_info.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/lid_info.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/liddatastore.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/logdatastore.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/logdatastore.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/logdocumentstore.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/logdocumentstore.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/randread.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/randreaders.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/randreaders.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/storebybucket.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/storebybucket.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/summaryexceptions.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/summaryexceptions.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/value.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/value.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/visitcache.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/visitcache.h2
-rw-r--r--searchlib/src/vespa/searchlib/docstore/writeablefilechunk.cpp22
-rw-r--r--searchlib/src/vespa/searchlib/docstore/writeablefilechunk.h2
-rw-r--r--searchlib/src/vespa/searchlib/engine/CMakeLists.txt2
-rwxr-xr-xsearchlib/src/vespa/searchlib/engine/create-class-cpp.sh4
-rw-r--r--searchlib/src/vespa/searchlib/engine/create-class-h.sh4
-rw-r--r--searchlib/src/vespa/searchlib/engine/create-interface.sh4
-rw-r--r--searchlib/src/vespa/searchlib/engine/docsumapi.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/engine/docsumapi.h2
-rw-r--r--searchlib/src/vespa/searchlib/engine/docsumreply.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/engine/docsumreply.h4
-rw-r--r--searchlib/src/vespa/searchlib/engine/docsumrequest.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/engine/docsumrequest.h2
-rw-r--r--searchlib/src/vespa/searchlib/engine/monitorapi.h2
-rw-r--r--searchlib/src/vespa/searchlib/engine/monitorreply.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/engine/monitorreply.h2
-rw-r--r--searchlib/src/vespa/searchlib/engine/monitorrequest.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/engine/monitorrequest.h2
-rw-r--r--searchlib/src/vespa/searchlib/engine/propertiesmap.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/engine/propertiesmap.h2
-rw-r--r--searchlib/src/vespa/searchlib/engine/proto_converter.cpp14
-rw-r--r--searchlib/src/vespa/searchlib/engine/request.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/engine/request.h2
-rw-r--r--searchlib/src/vespa/searchlib/engine/search_protocol_proto.h2
-rw-r--r--searchlib/src/vespa/searchlib/engine/searchapi.h2
-rw-r--r--searchlib/src/vespa/searchlib/engine/searchreply.cpp8
-rw-r--r--searchlib/src/vespa/searchlib/engine/searchreply.h4
-rw-r--r--searchlib/src/vespa/searchlib/engine/searchrequest.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/engine/searchrequest.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/expression/addfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/aggregationrefnode.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/aggregationrefnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/andfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/arrayatlookupfunctionnode.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/arrayatlookupfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/arrayoperationnode.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/arrayoperationnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/attribute_map_lookup_node.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/attribute_map_lookup_node.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/attributenode.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/attributenode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/attributeresult.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/attributeresult.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/binaryfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/bitfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/bucketresultnode.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/bucketresultnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/catfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/catserializer.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/catserializer.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/constantnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/debugwaitfunctionnode.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/debugwaitfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/dividefunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/documentaccessornode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/documentfieldnode.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/documentfieldnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/enumattributeresult.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/enumattributeresult.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/enumresultnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/expressionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/expressiontree.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/expressiontree.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/fixedwidthbucketfunctionnode.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/fixedwidthbucketfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/floatbucketresultnode.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/floatbucketresultnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/floatresultnode.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/floatresultnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/forcelink.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/functionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/functionnodes.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/getdocidnamespacespecificfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/getymumchecksumfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/integerbucketresultnode.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/integerbucketresultnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/integerresultnode.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/integerresultnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/interpolatedlookupfunctionnode.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/interpolatedlookupfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/mathfunctionnode.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/mathfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/maxfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/md5bitfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/minfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/modulofunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/multiargfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/multiplyfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/negatefunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/normalizesubjectfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/nullresultnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/numelemfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/numericfunctionnode.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/numericfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/numericresultnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/orfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/perdocexpression.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/positiveinfinityresultnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/rangebucketpredef.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/rangebucketpredef.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/rawbucketresultnode.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/rawbucketresultnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/rawresultnode.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/rawresultnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/relevancenode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/resultnode.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/resultnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/resultnodes.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/resultvector.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/resultvector.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/reversefunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/serializer.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/singleresultnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/sortfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/strcatfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/strcatserializer.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/strcatserializer.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/stringbucketresultnode.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/stringbucketresultnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/stringresultnode.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/stringresultnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/strlenfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/timestamp.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/timestamp.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/tofloatfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/tointfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/torawfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/tostringfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/unarybitfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/unaryfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/xorbitfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/xorfunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/expression/zcurve.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/expression/zcurve.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/features/agefeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/agefeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/array_parser.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/array_parser.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/array_parser.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/attributefeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/attributefeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/attributematchfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/attributematchfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/closenessfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/closenessfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/constant_feature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/constant_feature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/constant_tensor_executor.h2
-rwxr-xr-xsearchlib/src/vespa/searchlib/features/create-class-cpp.sh4
-rw-r--r--searchlib/src/vespa/searchlib/features/create-class-h.sh4
-rw-r--r--searchlib/src/vespa/searchlib/features/debug_attribute_wait.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/debug_attribute_wait.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/debug_wait.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/debug_wait.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/direct_tensor_attribute_executor.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/direct_tensor_attribute_executor.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/distancefeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/distancefeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/distancetopathfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/distancetopathfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/documenttestutils.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/dotproductfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/dotproductfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/element_completeness_feature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/element_completeness_feature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/element_similarity_feature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/element_similarity_feature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/euclidean_distance_feature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/euclidean_distance_feature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldinfofeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldinfofeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldlengthfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldlengthfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldmatch/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldmatch/computer.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldmatch/computer.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldmatch/computer_shared_state.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldmatch/computer_shared_state.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldmatch/metrics.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldmatch/metrics.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldmatch/params.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldmatch/params.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldmatch/segmentstart.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldmatch/segmentstart.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldmatch/simplemetrics.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldmatch/simplemetrics.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldmatchfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldmatchfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldtermmatchfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldtermmatchfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/firstphasefeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/firstphasefeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/flow_completeness_feature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/flow_completeness_feature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/foreachfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/foreachfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/freshnessfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/freshnessfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/global_sequence_feature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/global_sequence_feature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/internal_max_reduce_prod_join_feature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/internal_max_reduce_prod_join_feature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/item_raw_score_feature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/item_raw_score_feature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/jarowinklerdistancefeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/jarowinklerdistancefeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/logarithmcalculator.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/matchcountfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/matchcountfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/matchesfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/matchesfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/matchfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/matchfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/max_reduce_prod_join_replacer.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/max_reduce_prod_join_replacer.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/mutable_dense_value_view.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/mutable_dense_value_view.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/native_dot_product_feature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/native_dot_product_feature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/nativeattributematchfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/nativeattributematchfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/nativefieldmatchfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/nativefieldmatchfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/nativeproximityfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/nativeproximityfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/nativerankfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/nativerankfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/nowfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/nowfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/onnx_feature.cpp11
-rw-r--r--searchlib/src/vespa/searchlib/features/onnx_feature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/proximityfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/proximityfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/querycompletenessfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/querycompletenessfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/queryfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/queryfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/queryterm.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/queryterm.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/querytermcountfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/querytermcountfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/random_normal_feature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/random_normal_feature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/random_normal_stable_feature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/random_normal_stable_feature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/randomfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/randomfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/rankingexpression/CMakeLists.txt3
-rw-r--r--searchlib/src/vespa/searchlib/features/rankingexpression/expression_replacer.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/rankingexpression/expression_replacer.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/rankingexpression/feature_name_extractor.h22
-rw-r--r--searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_blueprint_adapter.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_blueprint_adapter.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_expression.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_expression.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/rankingexpressionfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/rankingexpressionfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/raw_score_feature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/raw_score_feature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/reverseproximityfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/reverseproximityfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/setup.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/setup.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/subqueries_feature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/subqueries_feature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/tensor_attribute_executor.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/tensor_attribute_executor.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/tensor_factory_blueprint.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/tensor_factory_blueprint.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/tensor_from_attribute_executor.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/tensor_from_labels_feature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/tensor_from_labels_feature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/tensor_from_weighted_set_feature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/tensor_from_weighted_set_feature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/term_field_md_feature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/term_field_md_feature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/termdistancecalculator.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/termdistancecalculator.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/termdistancefeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/termdistancefeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/termeditdistancefeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/termeditdistancefeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/termfeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/termfeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/terminfofeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/terminfofeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/text_similarity_feature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/text_similarity_feature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/utils.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/utils.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/utils.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/valuefeature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/valuefeature.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/weighted_set_parser.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/weighted_set_parser.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/weighted_set_parser.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/fef/Doxyfile2
-rw-r--r--searchlib/src/vespa/searchlib/fef/blueprint.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/blueprint.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/blueprintfactory.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/blueprintfactory.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/blueprintresolver.cpp14
-rw-r--r--searchlib/src/vespa/searchlib/fef/blueprintresolver.h2
-rwxr-xr-xsearchlib/src/vespa/searchlib/fef/create-class-cpp.sh4
-rw-r--r--searchlib/src/vespa/searchlib/fef/create-class-h.sh4
-rw-r--r--searchlib/src/vespa/searchlib/fef/create-fef-includes.sh4
-rw-r--r--searchlib/src/vespa/searchlib/fef/create-interface.sh4
-rwxr-xr-xsearchlib/src/vespa/searchlib/fef/dist_doc_hp.sh2
-rw-r--r--searchlib/src/vespa/searchlib/fef/feature_resolver.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/feature_resolver.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/feature_type.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/feature_type.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/featureexecutor.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/featureexecutor.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/featurenamebuilder.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/featurenamebuilder.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/featurenameparser.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/featurenameparser.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/featureoverrider.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/featureoverrider.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/fef.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/fef.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/fieldinfo.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/fieldinfo.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/fieldpositionsiterator.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/fieldpositionsiterator.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/fieldtype.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/filetablefactory.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/filetablefactory.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/functiontablefactory.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/functiontablefactory.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/handle.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/iblueprintregistry.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/idumpfeaturevisitor.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/iindexenvironment.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/indexproperties.cpp26
-rw-r--r--searchlib/src/vespa/searchlib/fef/indexproperties.h21
-rw-r--r--searchlib/src/vespa/searchlib/fef/iqueryenvironment.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/itablefactory.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/itablemanager.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/itermdata.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/itermfielddata.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/matchdata.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/matchdata.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/matchdatalayout.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/matchdatalayout.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/number_or_object.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/objectstore.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/objectstore.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/onnx_model.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/onnx_model.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/parameter.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/parameter.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/parameterdescriptions.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/parameterdescriptions.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/parametervalidator.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/parametervalidator.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/phrase_splitter_query_env.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/phrase_splitter_query_env.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/phrasesplitter.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/phrasesplitter.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/properties.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/properties.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/queryproperties.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/queryproperties.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/rank_program.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/rank_program.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/ranksetup.cpp8
-rw-r--r--searchlib/src/vespa/searchlib/fef/ranksetup.h11
-rw-r--r--searchlib/src/vespa/searchlib/fef/simpletermdata.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/simpletermdata.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/simpletermfielddata.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/simpletermfielddata.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/symmetrictable.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/symmetrictable.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/table.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/table.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/tablemanager.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/tablemanager.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/termfieldmatchdata.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/termfieldmatchdata.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/termfieldmatchdataposition.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/termfieldmatchdataposition.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/termmatchdatamerger.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/termmatchdatamerger.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/attribute_map.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/attribute_map.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/dummy_dependency_handler.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/dummy_dependency_handler.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/featuretest.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/featuretest.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/ftlib.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/ftlib.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/indexenvironment.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/indexenvironment.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/indexenvironmentbuilder.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/indexenvironmentbuilder.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/labels.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/labels.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/matchdatabuilder.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/matchdatabuilder.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/mock_attribute_context.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/mock_attribute_context.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/plugin/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/plugin/cfgvalue.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/plugin/cfgvalue.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/plugin/chain.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/plugin/chain.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/plugin/double.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/plugin/double.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/plugin/query.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/plugin/query.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/plugin/setup.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/plugin/setup.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/plugin/staticrank.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/plugin/staticrank.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/plugin/sum.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/plugin/sum.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/plugin/unbox.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/plugin/unbox.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/queryenvironment.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/queryenvironment.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/queryenvironmentbuilder.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/queryenvironmentbuilder.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/rankresult.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/rankresult.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/test_features.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/test_features.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/utils.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/utils.h2
-rw-r--r--searchlib/src/vespa/searchlib/fef/verify_feature.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/fef/verify_feature.h2
-rw-r--r--searchlib/src/vespa/searchlib/grouping/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/grouping/collect.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/grouping/collect.h2
-rw-r--r--searchlib/src/vespa/searchlib/grouping/forcelink.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/grouping/groupandcollectengine.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/grouping/groupandcollectengine.h2
-rw-r--r--searchlib/src/vespa/searchlib/grouping/groupengine.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/grouping/groupengine.h2
-rw-r--r--searchlib/src/vespa/searchlib/grouping/groupingengine.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/grouping/groupingengine.h2
-rw-r--r--searchlib/src/vespa/searchlib/grouping/groupref.h2
-rw-r--r--searchlib/src/vespa/searchlib/grouping/hyperloglog.h2
-rw-r--r--searchlib/src/vespa/searchlib/grouping/sketch.h2
-rw-r--r--searchlib/src/vespa/searchlib/index/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/index/bitvectorkeys.h2
-rw-r--r--searchlib/src/vespa/searchlib/index/dictionaryfile.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/index/dictionaryfile.h2
-rw-r--r--searchlib/src/vespa/searchlib/index/docbuilder.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/index/docbuilder.h2
-rw-r--r--searchlib/src/vespa/searchlib/index/docidandfeatures.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/index/docidandfeatures.h2
-rw-r--r--searchlib/src/vespa/searchlib/index/doctypebuilder.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/index/doctypebuilder.h2
-rw-r--r--searchlib/src/vespa/searchlib/index/dummyfileheadercontext.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/index/dummyfileheadercontext.h2
-rw-r--r--searchlib/src/vespa/searchlib/index/indexbuilder.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/index/indexbuilder.h2
-rw-r--r--searchlib/src/vespa/searchlib/index/postinglistcountfile.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/index/postinglistcountfile.h2
-rw-r--r--searchlib/src/vespa/searchlib/index/postinglistcounts.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/index/postinglistcounts.h2
-rw-r--r--searchlib/src/vespa/searchlib/index/postinglistfile.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/index/postinglistfile.h2
-rw-r--r--searchlib/src/vespa/searchlib/index/postinglisthandle.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/index/postinglisthandle.h2
-rw-r--r--searchlib/src/vespa/searchlib/index/postinglistparams.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/index/postinglistparams.h2
-rw-r--r--searchlib/src/vespa/searchlib/index/schemautil.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/index/schemautil.h2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/compact_words_store.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/compact_words_store.h2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/document_inverter.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/document_inverter.h2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/feature_store.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/feature_store.h2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/field_index.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/field_index.h2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/field_index_collection.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/field_index_collection.h2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/field_index_remover.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/field_index_remover.h2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/field_inverter.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/field_inverter.h2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/i_field_index_insert_listener.h2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/i_field_index_remove_listener.h2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/i_ordered_field_index_inserter.h2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/memory_index.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/memory_index.h2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/ordered_field_index_inserter.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/ordered_field_index_inserter.h2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/posting_iterator.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/posting_iterator.h2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/url_field_inverter.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/url_field_inverter.h2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/word_store.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/word_store.h2
-rw-r--r--searchlib/src/vespa/searchlib/parsequery/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/parsequery/parse.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/parsequery/parse.h2
-rw-r--r--searchlib/src/vespa/searchlib/parsequery/stackdumpiterator.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/parsequery/stackdumpiterator.h2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/common.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/common.h2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/document_features_store.cpp7
-rw-r--r--searchlib/src/vespa/searchlib/predicate/document_features_store.h2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/predicate_bounds_posting_list.h2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/predicate_hash.h2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/predicate_index.cpp16
-rw-r--r--searchlib/src/vespa/searchlib/predicate/predicate_index.h2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/predicate_interval.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/predicate_interval.h2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/predicate_interval_posting_list.h2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/predicate_interval_store.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/predicate_interval_store.h12
-rw-r--r--searchlib/src/vespa/searchlib/predicate/predicate_posting_list.h2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/predicate_range_expander.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/predicate_range_expander.h2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/predicate_range_term_expander.h2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/predicate_ref_cache.h2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/predicate_tree_analyzer.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/predicate_tree_analyzer.h2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/predicate_tree_annotator.cpp106
-rw-r--r--searchlib/src/vespa/searchlib/predicate/predicate_tree_annotator.h2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/predicate_zero_constraint_posting_list.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/predicate_zero_constraint_posting_list.h2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/predicate_zstar_compressed_posting_list.h2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/simple_index.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/simple_index.h2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/simple_index.hpp5
-rw-r--r--searchlib/src/vespa/searchlib/predicate/tree_crumbs.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/query/base.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/query_term_decoder.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/query/query_term_decoder.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/streaming/hit.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/streaming/query.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/query/streaming/query.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/streaming/querynode.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/query/streaming/querynode.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/streaming/querynoderesultbase.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/query/streaming/querynoderesultbase.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/streaming/queryterm.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/query/streaming/queryterm.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/customtypetermvisitor.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/customtypevisitor.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/intermediate.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/intermediate.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/intermediatenodes.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/intermediatenodes.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/location.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/location.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/node.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/point.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/predicate_query_term.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/querybuilder.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/querybuilder.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/querynodemixin.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/queryreplicator.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/querytreecreator.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/queryvisitor.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/range.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/range.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/rectangle.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/simplequery.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/stackdumpcreator.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/stackdumpcreator.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/stackdumpquerycreator.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/templatetermvisitor.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/term.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/term.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/termnodes.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/termnodes.h2
-rw-r--r--searchlib/src/vespa/searchlib/query/weight.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/andnotsearch.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/andnotsearch.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/andsearch.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/andsearch.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/andsearchnostrict.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/andsearchstrict.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/begin_and_end_id.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/blueprint.cpp29
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/blueprint.h10
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/booleanmatchiteratorwrapper.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/booleanmatchiteratorwrapper.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/children_iterators.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/children_iterators.h2
-rwxr-xr-xsearchlib/src/vespa/searchlib/queryeval/create-class-cpp.sh4
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/create-class-h.sh4
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/create-interface.sh4
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/document_weight_search_iterator.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/document_weight_search_iterator.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/dot_product_search.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/dot_product_search.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/elementiterator.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/elementiterator.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/emptysearch.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/emptysearch.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/equivsearch.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/equivsearch.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/executeinfo.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/fake_requestcontext.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/fake_requestcontext.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/fake_result.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/fake_result.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/fake_search.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/fake_search.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/fake_searchable.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/fake_searchable.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/field_spec.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/field_spec.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/field_spec.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/filter_wrapper.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/filter_wrapper.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/full_search.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/full_search.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/get_weight_from_node.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/get_weight_from_node.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/global_filter.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/global_filter.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/hitcollector.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/hitcollector.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/idiversifier.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp9
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/irequestcontext.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/isourceselector.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/isourceselector.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/iterator_pack.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/iterator_pack.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/iterators.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/iterators.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/matching_elements_search.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/matching_elements_search.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/monitoring_dump_iterator.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/monitoring_dump_iterator.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/monitoring_search_iterator.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/monitoring_search_iterator.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/multibitvectoriterator.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/multibitvectoriterator.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/multisearch.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/multisearch.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/nearest_neighbor_blueprint.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/nearest_neighbor_distance_heap.h18
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/nearsearch.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/nearsearch.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/orlikesearch.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/orsearch.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/orsearch.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/posting_info.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/predicate_blueprint.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/predicate_blueprint.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/predicate_search.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/predicate_search.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/ranksearch.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/ranksearch.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/same_element_search.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/same_element_search.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/scores.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/searchable.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/searchable.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/searchiterator.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/searchiterator.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/simpleresult.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/simpleresult.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/simplesearch.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/simplesearch.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/sorted_hit_sequence.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/sorted_hit_sequence.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/sourceblendersearch.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/sourceblendersearch.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/split_float.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/split_float.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/termasstring.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/termasstring.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/termwise_blueprint_helper.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/termwise_blueprint_helper.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/termwise_helper.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/termwise_search.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/termwise_search.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/test/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/test/eagerchild.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/test/leafspec.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/test/searchhistory.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/test/trackedsearch.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/test/wandspec.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/truesearch.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/truesearch.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/unpackinfo.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/unpackinfo.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/wand/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/wand/wand_parts.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/wand/wand_parts.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/wand/weak_and_search.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/wand/weak_and_search.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/weighted_set_term_blueprint.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/weighted_set_term_blueprint.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.h2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/CMakeLists.txt6
-rw-r--r--searchlib/src/vespa/searchlib/tensor/angular_distance.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/angular_distance.h2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/bitvector_visited_tracker.cpp14
-rw-r--r--searchlib/src/vespa/searchlib/tensor/bitvector_visited_tracker.h32
-rw-r--r--searchlib/src/vespa/searchlib/tensor/blob_sequence_reader.h6
-rw-r--r--searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute.cpp278
-rw-r--r--searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute.h12
-rw-r--r--searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute_saver.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute_saver.h2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/dense_tensor_store.cpp17
-rw-r--r--searchlib/src/vespa/searchlib/tensor/dense_tensor_store.h8
-rw-r--r--searchlib/src/vespa/searchlib/tensor/direct_tensor_attribute.cpp4
-rw-r--r--searchlib/src/vespa/searchlib/tensor/direct_tensor_attribute.h4
-rw-r--r--searchlib/src/vespa/searchlib/tensor/direct_tensor_saver.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/direct_tensor_saver.h2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/direct_tensor_store.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/direct_tensor_store.h2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/distance_function.h2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/distance_function_factory.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/distance_function_factory.h2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/distance_functions.h2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/euclidean_distance.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/euclidean_distance.h2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/geo_degrees_distance.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/geo_degrees_distance.h2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/hamming_distance.cpp21
-rw-r--r--searchlib/src/vespa/searchlib/tensor/hamming_distance.h2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/hash_set_visited_tracker.cpp14
-rw-r--r--searchlib/src/vespa/searchlib/tensor/hash_set_visited_tracker.h27
-rw-r--r--searchlib/src/vespa/searchlib/tensor/hnsw_graph.cpp19
-rw-r--r--searchlib/src/vespa/searchlib/tensor/hnsw_graph.h16
-rw-r--r--searchlib/src/vespa/searchlib/tensor/hnsw_index.cpp241
-rw-r--r--searchlib/src/vespa/searchlib/tensor/hnsw_index.h24
-rw-r--r--searchlib/src/vespa/searchlib/tensor/hnsw_index_loader.cpp48
-rw-r--r--searchlib/src/vespa/searchlib/tensor/hnsw_index_loader.h40
-rw-r--r--searchlib/src/vespa/searchlib/tensor/hnsw_index_loader.hpp69
-rw-r--r--searchlib/src/vespa/searchlib/tensor/hnsw_index_saver.cpp53
-rw-r--r--searchlib/src/vespa/searchlib/tensor/hnsw_index_saver.h14
-rw-r--r--searchlib/src/vespa/searchlib/tensor/i_tensor_attribute.h2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/imported_tensor_attribute_vector.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/imported_tensor_attribute_vector.h2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/imported_tensor_attribute_vector_read_guard.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/imported_tensor_attribute_vector_read_guard.h2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/inner_product_distance.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/inner_product_distance.h2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/inv_log_level_generator.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/inv_log_level_generator.h2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/nearest_neighbor_index.h21
-rw-r--r--searchlib/src/vespa/searchlib/tensor/nearest_neighbor_index_loader.h23
-rw-r--r--searchlib/src/vespa/searchlib/tensor/nearest_neighbor_index_saver.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/nearest_neighbor_index_saver.h2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/prepare_result.h2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/reusable_set_visited_tracker.cpp15
-rw-r--r--searchlib/src/vespa/searchlib/tensor/reusable_set_visited_tracker.h31
-rw-r--r--searchlib/src/vespa/searchlib/tensor/serialized_fast_value_attribute.cpp4
-rw-r--r--searchlib/src/vespa/searchlib/tensor/serialized_fast_value_attribute.h4
-rw-r--r--searchlib/src/vespa/searchlib/tensor/streamed_value_saver.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/streamed_value_saver.h2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/streamed_value_store.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/streamed_value_store.h2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/tensor_attribute.cpp19
-rw-r--r--searchlib/src/vespa/searchlib/tensor/tensor_attribute.h4
-rw-r--r--searchlib/src/vespa/searchlib/tensor/tensor_attribute.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/tensor_deserialize.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/tensor_deserialize.h2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/tensor_store.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/tensor/tensor_store.h6
-rw-r--r--searchlib/src/vespa/searchlib/test/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/test/directory_handler.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/diskindex/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/test/diskindex/pagedict4_decoders.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/diskindex/pagedict4_decoders.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/diskindex/pagedict4_encoders.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/diskindex/pagedict4_encoders.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_rand_reader.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_rand_reader.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_seq_reader.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_seq_reader.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_writer.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_writer.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/diskindex/testdiskindex.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/diskindex/testdiskindex.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/diskindex/threelevelcountbuffers.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/diskindex/threelevelcountbuffers.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/document_weight_attribute_helper.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/document_weight_attribute_helper.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/bitdecode64.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/bitdecode64.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/bitencode64.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/bitencode64.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/fakeegcompr64filterocc.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/fakeegcompr64filterocc.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/fakefilterocc.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/fakefilterocc.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/fakememtreeocc.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/fakememtreeocc.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/fakeposting.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/fakeposting.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/fakeword.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/fakeword.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/fakewordset.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/fakewordset.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/fakezcbfilterocc.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/fakezcbfilterocc.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/fakezcfilterocc.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/fakezcfilterocc.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/fpfactory.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/fakedata/fpfactory.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/imported_attribute_fixture.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/imported_attribute_fixture.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/initrange.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/initrange.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/make_attribute_map_lookup_node.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/make_attribute_map_lookup_node.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/memoryindex/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/test/memoryindex/ordered_field_index_inserter.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/mock_attribute_context.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/mock_attribute_context.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/mock_attribute_manager.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/mock_attribute_manager.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/mock_gid_to_lid_mapping.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/searchiteratorverifier.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/test/searchiteratorverifier.h2
-rw-r--r--searchlib/src/vespa/searchlib/test/weightedchildrenverifiers.h2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/chunks.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/chunks.h2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/client_common.h2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/client_session.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/client_session.h2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/common.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/common.h2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/domain.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/domain.h2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/domainconfig.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/domainconfig.h2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/domainpart.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/domainpart.h2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/ichunk.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/ichunk.h2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/nosyncproxy.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/nosyncproxy.h2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/session.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/session.h2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/syncproxy.h2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/trans_log_server_explorer.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/trans_log_server_explorer.h2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/translogclient.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/translogclient.h2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/translogserver.h2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/translogserverapp.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/translogserverapp.h2
-rw-r--r--searchlib/src/vespa/searchlib/uca/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/uca/ucaconverter.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/uca/ucaconverter.h2
-rw-r--r--searchlib/src/vespa/searchlib/uca/ucafunctionnode.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/uca/ucafunctionnode.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/CMakeLists.txt3
-rw-r--r--searchlib/src/vespa/searchlib/util/bufferwriter.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/util/bufferwriter.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/comprbuffer.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/util/comprbuffer.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/comprfile.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/util/comprfile.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/dirtraverse.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/util/dirtraverse.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/drainingbufferwriter.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/util/drainingbufferwriter.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/file_settings.h17
-rw-r--r--searchlib/src/vespa/searchlib/util/file_with_header.cpp59
-rw-r--r--searchlib/src/vespa/searchlib/util/file_with_header.h38
-rw-r--r--searchlib/src/vespa/searchlib/util/filealign.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/util/filealign.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/fileheadertk.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/util/fileheadertk.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/filekit.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/util/filekit.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/filesizecalculator.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/util/filesizecalculator.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/fileutil.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/util/fileutil.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/fileutil.hpp2
-rw-r--r--searchlib/src/vespa/searchlib/util/foldedstringcompare.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/util/foldedstringcompare.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/inline.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/logutil.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/util/logutil.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/postingpriorityqueue.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/random_normal.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/randomgenerator.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/rawbuf.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/util/rawbuf.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/runnable.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/searchable_stats.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/slime_output_raw_buf_adapter.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/util/slime_output_raw_buf_adapter.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/sort.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/state_explorer_utils.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/util/state_explorer_utils.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/stringenum.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/util/stringenum.h2
-rw-r--r--searchlib/src/vespa/searchlib/util/url.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/util/url.h2
-rw-r--r--searchsummary/CMakeLists.txt2
-rw-r--r--searchsummary/pom.xml2
-rw-r--r--searchsummary/src/tests/docsumformat/CMakeLists.txt2
-rw-r--r--searchsummary/src/tests/docsumformat/docsum-pack.cpp2
-rwxr-xr-xsearchsummary/src/tests/docsumformat/dotest.sh2
-rw-r--r--searchsummary/src/tests/docsummary/CMakeLists.txt2
-rw-r--r--searchsummary/src/tests/docsummary/attribute_combiner/CMakeLists.txt2
-rw-r--r--searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp2
-rw-r--r--searchsummary/src/tests/docsummary/attributedfw/CMakeLists.txt2
-rw-r--r--searchsummary/src/tests/docsummary/attributedfw/attributedfw_test.cpp2
-rw-r--r--searchsummary/src/tests/docsummary/positionsdfw_test.cpp2
-rw-r--r--searchsummary/src/tests/docsummary/slime_summary/CMakeLists.txt2
-rw-r--r--searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp2
-rw-r--r--searchsummary/src/tests/extractkeywords/CMakeLists.txt2
-rw-r--r--searchsummary/src/tests/extractkeywords/extractkeywordstest.cpp2
-rw-r--r--searchsummary/src/tests/extractkeywords/extractkeywordstest.h2
-rwxr-xr-xsearchsummary/src/tests/extractkeywords/runtests.sh2
-rw-r--r--searchsummary/src/tests/extractkeywords/simplequerystack.cpp2
-rw-r--r--searchsummary/src/tests/extractkeywords/simplequerystack.h2
-rw-r--r--searchsummary/src/tests/extractkeywords/simplequerystackitem.cpp2
-rw-r--r--searchsummary/src/tests/extractkeywords/simplequerystackitem.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/CMakeLists.txt2
-rw-r--r--searchsummary/src/vespa/searchsummary/config/CMakeLists.txt2
-rw-r--r--searchsummary/src/vespa/searchsummary/config/juniperrc.def2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/CMakeLists.txt2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/attribute_combiner_dfw.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/attribute_combiner_dfw.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/attribute_field_writer.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/attribute_field_writer.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/attributedfw.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/attributedfw.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer_state.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumfieldwriter.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumfieldwriter.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumstate.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumstore.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumstorevalue.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/general_result.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/general_result.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/getdocsumargs.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/getdocsumargs.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/idocsumenvironment.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/itokenizer.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/juniperdfw.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/juniperproperties.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/juniperproperties.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/linguisticsannotation.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/linguisticsannotation.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/resultclass.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/resultclass.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/resultconfig.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/resultconfig.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/resultpacker.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/resultpacker.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/searchdatatype.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/searchdatatype.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/struct_map_attribute_combiner_dfw.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/struct_map_attribute_combiner_dfw.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/textextractordfw.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/textextractordfw.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/tokenizer.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/tokenizer.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/test/CMakeLists.txt2
-rw-r--r--searchsummary/src/vespa/searchsummary/test/mock_attribute_manager.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/test/mock_attribute_manager.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/test/mock_state_callback.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/test/slime_value.h2
-rw-r--r--security-utils/CMakeLists.txt4
-rw-r--r--security-utils/pom.xml43
-rw-r--r--security-utils/src/main/java/com/yahoo/security/BasicConstraintsExtension.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/BouncyCastleProviderHolder.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/Extension.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/KeyAlgorithm.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/KeyStoreBuilder.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/KeyStoreType.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/KeyStoreUtils.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/KeyUtils.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/Pkcs10Csr.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/Pkcs10CsrBuilder.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/Pkcs10CsrUtils.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/SignatureAlgorithm.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/SslContextBuilder.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/SubjectAlternativeName.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/X509CertificateBuilder.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/X509CertificateUtils.java17
-rw-r--r--security-utils/src/main/java/com/yahoo/security/X509CertificateWithKey.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/package-info.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/AuthorizationMode.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/ConfigFileBasedTlsContext.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/DefaultTlsContext.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/MixedMode.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/TlsContext.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/TransportSecurityOptions.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/TransportSecurityUtils.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/TrustAllX509TrustManager.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/authz/AuthorizationResult.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/authz/PeerAuthorizer.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/authz/PeerAuthorizerTrustManager.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/authz/package-info.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/json/TransportSecurityOptionsEntity.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/json/TransportSecurityOptionsJsonSerializer.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/json/package-info.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/package-info.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/policy/AuthorizedPeers.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/policy/HostGlobPattern.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/policy/PeerPolicy.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/policy/RequiredPeerCredential.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/policy/Role.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/policy/UriPattern.java2
-rw-r--r--security-utils/src/main/java/com/yahoo/security/tls/policy/package-info.java2
-rw-r--r--security-utils/src/test/java/com/yahoo/security/KeyStoreBuilderTest.java2
-rw-r--r--security-utils/src/test/java/com/yahoo/security/KeyUtilsTest.java2
-rw-r--r--security-utils/src/test/java/com/yahoo/security/Pkcs10CsrBuilderTest.java2
-rw-r--r--security-utils/src/test/java/com/yahoo/security/Pkcs10CsrTest.java2
-rw-r--r--security-utils/src/test/java/com/yahoo/security/Pkcs10CsrUtilsTest.java2
-rw-r--r--security-utils/src/test/java/com/yahoo/security/SslContextBuilderTest.java2
-rw-r--r--security-utils/src/test/java/com/yahoo/security/TestUtils.java2
-rw-r--r--security-utils/src/test/java/com/yahoo/security/X509CertificateBuilderTest.java2
-rw-r--r--security-utils/src/test/java/com/yahoo/security/X509CertificateUtilsTest.java2
-rw-r--r--security-utils/src/test/java/com/yahoo/security/tls/DefaultTlsContextTest.java2
-rw-r--r--security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsTest.java2
-rw-r--r--security-utils/src/test/java/com/yahoo/security/tls/authz/PeerAuthorizerTest.java2
-rw-r--r--security-utils/src/test/java/com/yahoo/security/tls/json/TransportSecurityOptionsJsonSerializerTest.java2
-rw-r--r--security-utils/src/test/java/com/yahoo/security/tls/policy/AuthorizedPeersTest.java2
-rw-r--r--security-utils/src/test/java/com/yahoo/security/tls/policy/HostGlobPatternTest.java2
-rw-r--r--service-monitor/CMakeLists.txt2
-rw-r--r--service-monitor/pom.xml14
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerApplication.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerHostApplication.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerLikeApplication.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/ControllerApplication.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/ControllerHostApplication.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/CriticalRegionChecker.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/DuperModel.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/DuperModelManager.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/HostAdminApplication.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/HostsModel.java9
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/InfraApplication.java4
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/ProxyHostApplication.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/executor/Cancellable.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/executor/CancellableImpl.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/executor/Runlet.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/executor/RunletExecutor.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/executor/RunletExecutorImpl.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/health/ApacheHttpClient.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/health/ApplicationHealthMonitor.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/health/ApplicationHealthMonitorFactory.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthEndpoint.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthInfo.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthMonitor.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthMonitorManager.java12
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthResponse.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthUpdater.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthClient.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthEndpoint.java4
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthModel.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthMonitor.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthUpdater.java4
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/manager/MonitorManager.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/manager/UnionMonitorManager.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/model/ApplicationInstanceGenerator.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/model/LatencyMeasurement.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/model/ModelGenerator.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceHostListenerAdapter.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorImpl.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorMetrics.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/AntiServiceMonitor.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/CriticalRegion.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/DuperModelInfraApi.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/DuperModelListener.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/DuperModelProvider.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/InfraApplicationApi.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceHostListener.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceId.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceModel.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceStatusProvider.java6
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/SlobrokApi.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/package-info.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/slobrok/SlobrokMonitor.java2
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/slobrok/SlobrokMonitorManagerImpl.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/duper/DuperModelManagerTest.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/duper/DuperModelTest.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/executor/CancellableImplTest.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/executor/RunletExecutorImplTest.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/executor/TestExecutor.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/executor/TestRunlet.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/health/ApplicationHealthMonitorTest.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/health/HealthMonitorManagerTest.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthModelTest.java12
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthMonitorTest.java4
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthUpdaterTest.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/manager/UnionMonitorManagerTest.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/model/ApplicationInstanceGeneratorTest.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/model/ExampleModel.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/model/ExampleModelTest.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/model/LatencyMeasurementTest.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/model/ModelGeneratorTest.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/model/ServiceHostListenerAdapterTest.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/model/ServiceMonitorImplTest.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/model/ServiceMonitorMetricsTest.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/monitor/ConfigserverUtil.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/slobrok/SlobrokMonitorManagerImplTest.java2
-rw-r--r--service-monitor/src/test/java/com/yahoo/vespa/service/slobrok/SlobrokMonitorTest.java2
-rw-r--r--serviceview/README.md2
-rw-r--r--serviceview/pom.xml2
-rw-r--r--serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ApplicationView.java2
-rw-r--r--serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ClusterView.java2
-rw-r--r--serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ConfigClient.java2
-rw-r--r--serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/HealthClient.java2
-rw-r--r--serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/HostService.java2
-rw-r--r--serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ModelResponse.java2
-rw-r--r--serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/Service.java2
-rw-r--r--serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ServicePort.java2
-rw-r--r--serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ServiceView.java2
-rw-r--r--serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/StateClient.java2
-rw-r--r--serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/package-info.java2
-rw-r--r--serviceview/src/test/java/com/yahoo/vespa/serviceview/bindings/ServicePortTest.java2
-rw-r--r--slobrok/CMakeLists.txt6
-rw-r--r--slobrok/src/Doxyfile2
-rw-r--r--slobrok/src/apps/check_slobrok/CMakeLists.txt2
-rw-r--r--slobrok/src/apps/check_slobrok/check_slobrok.cpp2
-rw-r--r--slobrok/src/apps/sbcmd/CMakeLists.txt2
-rw-r--r--slobrok/src/apps/sbcmd/sbcmd.cpp2
-rw-r--r--slobrok/src/apps/slobrok/CMakeLists.txt2
-rw-r--r--slobrok/src/apps/slobrok/slobrok.cpp7
-rw-r--r--slobrok/src/tests/backoff/CMakeLists.txt2
-rw-r--r--slobrok/src/tests/backoff/testbackoff.cpp2
-rw-r--r--slobrok/src/tests/configure/CMakeLists.txt2
-rw-r--r--slobrok/src/tests/configure/configure.cpp2
-rw-r--r--slobrok/src/tests/configure/gencfg.cpp2
-rw-r--r--slobrok/src/tests/local_rpc_monitor_map/CMakeLists.txt9
-rw-r--r--slobrok/src/tests/local_rpc_monitor_map/local_rpc_monitor_map_test.cpp331
-rw-r--r--slobrok/src/tests/mirrorapi/CMakeLists.txt2
-rw-r--r--slobrok/src/tests/mirrorapi/match_test.cpp2
-rw-r--r--slobrok/src/tests/mirrorapi/mirrorapi.cpp2
-rw-r--r--slobrok/src/tests/registerapi/CMakeLists.txt2
-rw-r--r--slobrok/src/tests/registerapi/registerapi.cpp2
-rw-r--r--slobrok/src/tests/rpc_mapping_monitor/CMakeLists.txt9
-rw-r--r--slobrok/src/tests/rpc_mapping_monitor/rpc_mapping_monitor_test.cpp224
-rw-r--r--slobrok/src/tests/service_map_history/CMakeLists.txt2
-rw-r--r--slobrok/src/tests/service_map_history/service_map_history_test.cpp12
-rw-r--r--slobrok/src/tests/service_map_mirror/CMakeLists.txt9
-rw-r--r--slobrok/src/tests/service_map_mirror/service_map_mirror_test.cpp141
-rw-r--r--slobrok/src/tests/standalone/CMakeLists.txt2
-rw-r--r--slobrok/src/tests/standalone/standalone.cpp6
-rw-r--r--slobrok/src/tests/startsome/.gitignore1
-rw-r--r--slobrok/src/tests/startsome/CMakeLists.txt2
-rw-r--r--slobrok/src/tests/startsome/rpc_info.cpp2
-rwxr-xr-xslobrok/src/tests/startsome/startsome.sh13
-rw-r--r--slobrok/src/tests/startsome/tstdst.cpp2
-rw-r--r--slobrok/src/tests/startup/CMakeLists.txt2
-rwxr-xr-xslobrok/src/tests/startup/run.sh2
-rw-r--r--slobrok/src/tests/union_service_map/CMakeLists.txt9
-rw-r--r--slobrok/src/tests/union_service_map/union_service_map_test.cpp143
-rw-r--r--slobrok/src/vespa/slobrok/CMakeLists.txt2
-rw-r--r--slobrok/src/vespa/slobrok/backoff.cpp2
-rw-r--r--slobrok/src/vespa/slobrok/backoff.h2
-rw-r--r--slobrok/src/vespa/slobrok/cfg.cpp2
-rw-r--r--slobrok/src/vespa/slobrok/cfg.h2
-rw-r--r--slobrok/src/vespa/slobrok/imirrorapi.h2
-rw-r--r--slobrok/src/vespa/slobrok/sblist.cpp2
-rw-r--r--slobrok/src/vespa/slobrok/sblist.h2
-rw-r--r--slobrok/src/vespa/slobrok/sbmirror.cpp2
-rw-r--r--slobrok/src/vespa/slobrok/sbmirror.h2
-rw-r--r--slobrok/src/vespa/slobrok/sbregister.cpp2
-rw-r--r--slobrok/src/vespa/slobrok/sbregister.h2
-rw-r--r--slobrok/src/vespa/slobrok/server/CMakeLists.txt15
-rw-r--r--slobrok/src/vespa/slobrok/server/cmd.cpp139
-rw-r--r--slobrok/src/vespa/slobrok/server/cmd.h34
-rw-r--r--slobrok/src/vespa/slobrok/server/configshim.cpp2
-rw-r--r--slobrok/src/vespa/slobrok/server/configshim.h2
-rw-r--r--slobrok/src/vespa/slobrok/server/exchange_manager.cpp107
-rw-r--r--slobrok/src/vespa/slobrok/server/exchange_manager.h32
-rw-r--r--slobrok/src/vespa/slobrok/server/i_monitored_server.cpp2
-rw-r--r--slobrok/src/vespa/slobrok/server/i_monitored_server.h2
-rw-r--r--slobrok/src/vespa/slobrok/server/i_rpc_server_manager.cpp2
-rw-r--r--slobrok/src/vespa/slobrok/server/i_rpc_server_manager.h2
-rw-r--r--slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.cpp276
-rw-r--r--slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.h145
-rw-r--r--slobrok/src/vespa/slobrok/server/managed_rpc_server.cpp6
-rw-r--r--slobrok/src/vespa/slobrok/server/managed_rpc_server.h2
-rw-r--r--slobrok/src/vespa/slobrok/server/map_diff.cpp2
-rw-r--r--slobrok/src/vespa/slobrok/server/map_diff.h2
-rw-r--r--slobrok/src/vespa/slobrok/server/map_listener.cpp21
-rw-r--r--slobrok/src/vespa/slobrok/server/map_listener.h21
-rw-r--r--slobrok/src/vespa/slobrok/server/map_source.cpp28
-rw-r--r--slobrok/src/vespa/slobrok/server/map_source.h42
-rw-r--r--slobrok/src/vespa/slobrok/server/mapping_monitor.cpp8
-rw-r--r--slobrok/src/vespa/slobrok/server/mapping_monitor.h28
-rw-r--r--slobrok/src/vespa/slobrok/server/metrics_producer.cpp2
-rw-r--r--slobrok/src/vespa/slobrok/server/metrics_producer.h2
-rw-r--r--slobrok/src/vespa/slobrok/server/mock_map_listener.cpp28
-rw-r--r--slobrok/src/vespa/slobrok/server/mock_map_listener.h26
-rw-r--r--slobrok/src/vespa/slobrok/server/monitor.cpp2
-rw-r--r--slobrok/src/vespa/slobrok/server/monitor.h2
-rw-r--r--slobrok/src/vespa/slobrok/server/named_service.cpp2
-rw-r--r--slobrok/src/vespa/slobrok/server/named_service.h2
-rw-r--r--slobrok/src/vespa/slobrok/server/ok_state.h2
-rw-r--r--slobrok/src/vespa/slobrok/server/proxy_map_source.cpp44
-rw-r--r--slobrok/src/vespa/slobrok/server/proxy_map_source.h28
-rw-r--r--slobrok/src/vespa/slobrok/server/random.h2
-rw-r--r--slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.cpp2
-rw-r--r--slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.h2
-rw-r--r--slobrok/src/vespa/slobrok/server/remote_check.cpp11
-rw-r--r--slobrok/src/vespa/slobrok/server/remote_check.h9
-rw-r--r--slobrok/src/vespa/slobrok/server/remote_slobrok.cpp259
-rw-r--r--slobrok/src/vespa/slobrok/server/remote_slobrok.h21
-rw-r--r--slobrok/src/vespa/slobrok/server/request_completion_handler.cpp30
-rw-r--r--slobrok/src/vespa/slobrok/server/request_completion_handler.h28
-rw-r--r--slobrok/src/vespa/slobrok/server/reserved_name.cpp2
-rw-r--r--slobrok/src/vespa/slobrok/server/reserved_name.h2
-rw-r--r--slobrok/src/vespa/slobrok/server/rpc_mapping_monitor.cpp72
-rw-r--r--slobrok/src/vespa/slobrok/server/rpc_mapping_monitor.h61
-rw-r--r--slobrok/src/vespa/slobrok/server/rpc_server_manager.cpp343
-rw-r--r--slobrok/src/vespa/slobrok/server/rpc_server_manager.h79
-rw-r--r--slobrok/src/vespa/slobrok/server/rpc_server_map.cpp171
-rw-r--r--slobrok/src/vespa/slobrok/server/rpc_server_map.h69
-rw-r--r--slobrok/src/vespa/slobrok/server/rpchooks.cpp324
-rw-r--r--slobrok/src/vespa/slobrok/server/rpchooks.h26
-rw-r--r--slobrok/src/vespa/slobrok/server/rpcmirror.cpp2
-rw-r--r--slobrok/src/vespa/slobrok/server/rpcmirror.h2
-rw-r--r--slobrok/src/vespa/slobrok/server/sbenv.cpp49
-rw-r--r--slobrok/src/vespa/slobrok/server/sbenv.h40
-rw-r--r--slobrok/src/vespa/slobrok/server/service_map_history.cpp52
-rw-r--r--slobrok/src/vespa/slobrok/server/service_map_history.h22
-rw-r--r--slobrok/src/vespa/slobrok/server/service_map_mirror.cpp83
-rw-r--r--slobrok/src/vespa/slobrok/server/service_map_mirror.h49
-rw-r--r--slobrok/src/vespa/slobrok/server/service_mapping.cpp2
-rw-r--r--slobrok/src/vespa/slobrok/server/service_mapping.h12
-rw-r--r--slobrok/src/vespa/slobrok/server/slobrokserver.cpp2
-rw-r--r--slobrok/src/vespa/slobrok/server/slobrokserver.h2
-rw-r--r--slobrok/src/vespa/slobrok/server/union_service_map.cpp110
-rw-r--r--slobrok/src/vespa/slobrok/server/union_service_map.h48
-rw-r--r--socket_test/README.md2
-rw-r--r--socket_test/pom.xml5
-rw-r--r--socket_test/src/main/java/com/yahoo/socket/test/SocketTestApp.java2
-rw-r--r--staging_vespalib/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/Doxyfile2
-rw-r--r--staging_vespalib/src/tests/array/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/array/allocinarray_benchmark.cpp2
-rw-r--r--staging_vespalib/src/tests/array/allocinarray_test.cpp2
-rw-r--r--staging_vespalib/src/tests/array/sort_benchmark.cpp2
-rw-r--r--staging_vespalib/src/tests/benchmark/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/benchmark/benchmark.cpp2
-rwxr-xr-xstaging_vespalib/src/tests/benchmark/benchmark_test.sh2
-rw-r--r--staging_vespalib/src/tests/benchmark/testbase.cpp2
-rw-r--r--staging_vespalib/src/tests/benchmark/testbase.h2
-rw-r--r--staging_vespalib/src/tests/bits/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/bits/bits_test.cpp2
-rw-r--r--staging_vespalib/src/tests/clock/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/clock/clock_benchmark.cpp2
-rw-r--r--staging_vespalib/src/tests/clock/clock_test.cpp2
-rw-r--r--staging_vespalib/src/tests/crc/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/crc/crc_test.cpp2
-rw-r--r--staging_vespalib/src/tests/directio/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/directio/directio.cpp2
-rw-r--r--staging_vespalib/src/tests/encoding/base64/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/encoding/base64/base64_test.cpp2
-rw-r--r--staging_vespalib/src/tests/fileheader/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/fileheader/fileheader_test.cpp2
-rw-r--r--staging_vespalib/src/tests/floatingpointtype/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/floatingpointtype/floatingpointtypetest.cpp2
-rw-r--r--staging_vespalib/src/tests/growablebytebuffer/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/growablebytebuffer/growablebytebuffer_test.cpp2
-rw-r--r--staging_vespalib/src/tests/json/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/json/json.cpp2
-rw-r--r--staging_vespalib/src/tests/memorydatastore/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/memorydatastore/memorydatastore.cpp2
-rw-r--r--staging_vespalib/src/tests/metrics/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/metrics/mock_tick.cpp2
-rw-r--r--staging_vespalib/src/tests/metrics/mock_tick.h2
-rw-r--r--staging_vespalib/src/tests/metrics/simple_metrics_test.cpp2
-rw-r--r--staging_vespalib/src/tests/metrics/stable_store_test.cpp2
-rw-r--r--staging_vespalib/src/tests/objectdump/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/objectdump/objectdump.cpp2
-rw-r--r--staging_vespalib/src/tests/objects/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/objects/identifiable_test.cpp2
-rw-r--r--staging_vespalib/src/tests/objectselection/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/objectselection/objectselection.cpp2
-rw-r--r--staging_vespalib/src/tests/polymorphicarray/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/polymorphicarray/polymorphicarray_test.cpp2
-rw-r--r--staging_vespalib/src/tests/programoptions/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/programoptions/programoptions_test.cpp2
-rw-r--r--staging_vespalib/src/tests/rusage/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/rusage/rusage_test.cpp2
-rw-r--r--staging_vespalib/src/tests/sequencedtaskexecutor/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/sequencedtaskexecutor/foregroundtaskexecutor_test.cpp2
-rw-r--r--staging_vespalib/src/tests/sequencedtaskexecutor/sequencedtaskexecutor_test.cpp2
-rw-r--r--staging_vespalib/src/tests/shutdownguard/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/shutdownguard/shutdownguard_test.cpp2
-rw-r--r--staging_vespalib/src/tests/singleexecutor/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/singleexecutor/singleexecutor_test.cpp2
-rw-r--r--staging_vespalib/src/tests/state_server/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/state_server/state_server_test.cpp2
-rw-r--r--staging_vespalib/src/tests/stllike/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/stllike/cache_test.cpp2
-rw-r--r--staging_vespalib/src/tests/stllike/lrucache.cpp2
-rw-r--r--staging_vespalib/src/tests/timer/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/timer/timer_test.cpp2
-rw-r--r--staging_vespalib/src/tests/util/process_memory_stats/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/util/process_memory_stats/process_memory_stats_test.cpp2
-rwxr-xr-xstaging_vespalib/src/tests/util/process_memory_stats/process_memory_stats_test.sh2
-rw-r--r--staging_vespalib/src/tests/xmlserializable/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/tests/xmlserializable/xmlserializabletest.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/vespa/vespalib/data/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/vespa/vespalib/data/fileheader.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/data/fileheader.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/encoding/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/vespa/vespalib/encoding/base64.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/encoding/base64.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/bucket.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/bucket.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/clock.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/clock.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/counter.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/counter.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/counter_aggregator.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/counter_aggregator.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/current_samples.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/current_samples.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/dimension.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/dimension.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/dummy_metrics_manager.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/dummy_metrics_manager.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/gauge.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/gauge.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/gauge_aggregator.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/gauge_aggregator.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/handle.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/handle.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/json_formatter.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/json_formatter.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/label.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/label.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/metric_id.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/metric_id.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/metric_types.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/metric_types.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/metrics_manager.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/metrics_manager.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/name_collection.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/name_collection.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/name_repo.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/name_repo.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/point.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/point.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/point_builder.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/point_builder.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/point_map.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/point_map.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/point_map_collection.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/point_map_collection.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/producer.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/producer.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/simple_metrics.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/simple_metrics.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/simple_metrics_manager.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/simple_metrics_manager.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/simple_tick.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/simple_tick.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/snapshots.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/snapshots.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/stable_store.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/stable_store.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/component_config_producer.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/component_config_producer.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/generic_state_handler.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/generic_state_handler.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/health_producer.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/http_server.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/http_server.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/json_get_handler.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/json_handler_repo.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/json_handler_repo.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/metrics_producer.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/simple_component_config_producer.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/simple_component_config_producer.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/simple_health_producer.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/simple_health_producer.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/simple_metric_snapshot.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/simple_metric_snapshot.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/simple_metrics_producer.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/simple_metrics_producer.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/slime_explorer.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/slime_explorer.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/state_api.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/state_api.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/state_explorer.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/state_explorer.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/state_server.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/net/state_server.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/asciiserializer.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/asciiserializer.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/cloneable.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/deserializer.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/deserializer.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/deserializer.hpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/floatingpointtype.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/floatingpointtype.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/identifiable.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/identifiable.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/identifiable.hpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/ids.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/memberinfo.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/namedobject.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/namedobject.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/nboserializer.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/nboserializer.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/objectdumper.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/objectdumper.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/objectoperation.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/objectoperation.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/objectpredicate.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/objectpredicate.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/objectvisitor.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/objectvisitor.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/serializer.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/serializer.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/serializer.hpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/simpledynamicdata.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/valuetype.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/visit.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/visit.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/objects/visit.hpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/stllike/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/vespa/vespalib/stllike/cache.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/stllike/cache.hpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/stllike/lrucache_map.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/stllike/lrucache_map.hpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/CMakeLists.txt2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/allocinarray.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/bits.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/bits.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/clock.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/clock.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/crc.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/crc.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/document_runnable.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/document_runnable.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/doom.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/doom.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/foreground_thread_executor.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/foregroundtaskexecutor.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/foregroundtaskexecutor.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/growablebytebuffer.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/growablebytebuffer.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/isequencedtaskexecutor.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/isequencedtaskexecutor.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/jsonexception.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/jsonexception.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/jsonstream.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/jsonstream.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/jsonwriter.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/jsonwriter.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/overview.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/polymorphicarray.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/polymorphicarraybase.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/polymorphicarrays.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/process_memory_stats.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/process_memory_stats.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/programoptions.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/programoptions.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/programoptions_testutils.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/programoptions_testutils.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/rusage.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/rusage.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/scheduledexecutor.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/scheduledexecutor.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutor.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutor.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutorobserver.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutorobserver.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/shutdownguard.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/shutdownguard.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/singleexecutor.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/singleexecutor.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/sort.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/varholder.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/xmlserializable.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/xmlserializable.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/xmlstream.cpp2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/xmlstream.h2
-rw-r--r--staging_vespalib/src/vespa/vespalib/util/xmlstream.hpp2
-rw-r--r--standalone-container/CMakeLists.txt2
-rw-r--r--standalone-container/pom.xml2
-rw-r--r--standalone-container/src/main/java/com/yahoo/application/container/impl/ClassLoaderOsgiFramework.java2
-rw-r--r--standalone-container/src/main/java/com/yahoo/application/container/impl/StandaloneContainerRunner.java2
-rw-r--r--standalone-container/src/main/java/com/yahoo/container/standalone/CloudConfigInstallVariables.java2
-rw-r--r--standalone-container/src/main/java/com/yahoo/container/standalone/LocalFileDb.java50
-rw-r--r--standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneContainerApplication.java2
-rw-r--r--standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneSubscriberFactory.java2
-rwxr-xr-xstandalone-container/src/main/sh/standalone-container.sh3
-rw-r--r--standalone-container/src/test/java/com/yahoo/container/standalone/CloudConfigInstallVariablesTest.java2
-rw-r--r--standalone-container/src/test/java/com/yahoo/container/standalone/StandaloneContainer.java6
-rw-r--r--standalone-container/src/test/java/com/yahoo/container/standalone/StandaloneContainerTest.java2
-rw-r--r--standalone-container/src/test/java/com/yahoo/container/standalone/StandaloneSubscriberTest.java2
-rw-r--r--statistics/CMakeLists.txt2
-rw-r--r--statistics/pom.xml2
-rw-r--r--statistics/src/main/java/com/yahoo/statistics/Axis.java2
-rw-r--r--statistics/src/main/java/com/yahoo/statistics/Bucket.java2
-rw-r--r--statistics/src/main/java/com/yahoo/statistics/Callback.java2
-rw-r--r--statistics/src/main/java/com/yahoo/statistics/Counter.java2
-rw-r--r--statistics/src/main/java/com/yahoo/statistics/CounterGroup.java2
-rw-r--r--statistics/src/main/java/com/yahoo/statistics/CounterProxy.java2
-rw-r--r--statistics/src/main/java/com/yahoo/statistics/Group.java2
-rw-r--r--statistics/src/main/java/com/yahoo/statistics/Handle.java2
-rw-r--r--statistics/src/main/java/com/yahoo/statistics/Histogram.java2
-rw-r--r--statistics/src/main/java/com/yahoo/statistics/HistogramType.java2
-rw-r--r--statistics/src/main/java/com/yahoo/statistics/Limits.java2
-rw-r--r--statistics/src/main/java/com/yahoo/statistics/Proxy.java2
-rw-r--r--statistics/src/main/java/com/yahoo/statistics/SampleDirectory.java2
-rw-r--r--statistics/src/main/java/com/yahoo/statistics/SampleSet.java2
-rw-r--r--statistics/src/main/java/com/yahoo/statistics/Statistics.java2
-rw-r--r--statistics/src/main/java/com/yahoo/statistics/StatisticsImpl.java2
-rw-r--r--statistics/src/main/java/com/yahoo/statistics/Sum.java2
-rw-r--r--statistics/src/main/java/com/yahoo/statistics/Value.java2
-rw-r--r--statistics/src/main/java/com/yahoo/statistics/ValueGroup.java2
-rw-r--r--statistics/src/main/java/com/yahoo/statistics/ValueProxy.java2
-rw-r--r--statistics/src/main/java/com/yahoo/statistics/package-info.java2
-rw-r--r--statistics/src/main/resources/configdefinitions/container.statistics.def2
-rw-r--r--statistics/src/test/java/com/yahoo/statistics/CounterGroupTestCase.java2
-rw-r--r--statistics/src/test/java/com/yahoo/statistics/CounterTestCase.java2
-rw-r--r--statistics/src/test/java/com/yahoo/statistics/HistogramTestCase.java2
-rw-r--r--statistics/src/test/java/com/yahoo/statistics/ProxyTestCase.java2
-rw-r--r--statistics/src/test/java/com/yahoo/statistics/StatisticsImplTestCase.java2
-rw-r--r--statistics/src/test/java/com/yahoo/statistics/ValueGroupTestCase.java2
-rw-r--r--statistics/src/test/java/com/yahoo/statistics/ValueTestCase.java2
-rw-r--r--storage/CMakeLists.txt2
-rw-r--r--storage/pom.xml2
-rw-r--r--storage/src/Doxyfile2
-rw-r--r--storage/src/tests/CMakeLists.txt2
-rw-r--r--storage/src/tests/bucketdb/CMakeLists.txt2
-rw-r--r--storage/src/tests/bucketdb/bucketinfotest.cpp2
-rw-r--r--storage/src/tests/bucketdb/bucketmanagertest.cpp2
-rw-r--r--storage/src/tests/bucketdb/lockablemaptest.cpp2
-rw-r--r--storage/src/tests/common/CMakeLists.txt2
-rw-r--r--storage/src/tests/common/bucket_stripe_utils_test.cpp15
-rw-r--r--storage/src/tests/common/bucket_utils_test.cpp2
-rw-r--r--storage/src/tests/common/dummystoragelink.cpp2
-rw-r--r--storage/src/tests/common/dummystoragelink.h2
-rw-r--r--storage/src/tests/common/global_bucket_space_distribution_converter_test.cpp2
-rw-r--r--storage/src/tests/common/hostreporter/CMakeLists.txt2
-rw-r--r--storage/src/tests/common/hostreporter/hostinfotest.cpp2
-rw-r--r--storage/src/tests/common/hostreporter/util.cpp2
-rw-r--r--storage/src/tests/common/hostreporter/util.h2
-rw-r--r--storage/src/tests/common/hostreporter/versionreportertest.cpp2
-rw-r--r--storage/src/tests/common/message_sender_stub.cpp2
-rw-r--r--storage/src/tests/common/message_sender_stub.h6
-rw-r--r--storage/src/tests/common/metricstest.cpp2
-rw-r--r--storage/src/tests/common/storagelinktest.cpp2
-rw-r--r--storage/src/tests/common/testhelper.cpp2
-rw-r--r--storage/src/tests/common/testhelper.h2
-rw-r--r--storage/src/tests/common/testnodestateupdater.cpp2
-rw-r--r--storage/src/tests/common/testnodestateupdater.h2
-rw-r--r--storage/src/tests/common/teststorageapp.cpp2
-rw-r--r--storage/src/tests/common/teststorageapp.h2
-rw-r--r--storage/src/tests/distributor/CMakeLists.txt8
-rw-r--r--storage/src/tests/distributor/blockingoperationstartertest.cpp4
-rw-r--r--storage/src/tests/distributor/bucketdatabasetest.cpp2
-rw-r--r--storage/src/tests/distributor/bucketdatabasetest.h2
-rw-r--r--storage/src/tests/distributor/bucketdbmetricupdatertest.cpp2
-rw-r--r--storage/src/tests/distributor/bucketgctimecalculatortest.cpp2
-rw-r--r--storage/src/tests/distributor/bucketstateoperationtest.cpp8
-rw-r--r--storage/src/tests/distributor/distributor_bucket_space_test.cpp2
-rw-r--r--storage/src/tests/distributor/distributor_host_info_reporter_test.cpp2
-rw-r--r--storage/src/tests/distributor/distributor_stripe_pool_test.cpp2
-rw-r--r--storage/src/tests/distributor/distributor_stripe_test.cpp283
-rw-r--r--storage/src/tests/distributor/distributor_stripe_test_util.cpp54
-rw-r--r--storage/src/tests/distributor/distributor_stripe_test_util.h12
-rw-r--r--storage/src/tests/distributor/distributortestutil.cpp512
-rw-r--r--storage/src/tests/distributor/distributortestutil.h248
-rw-r--r--storage/src/tests/distributor/dummy_cluster_context.h2
-rw-r--r--storage/src/tests/distributor/externaloperationhandlertest.cpp78
-rw-r--r--storage/src/tests/distributor/garbagecollectiontest.cpp22
-rw-r--r--storage/src/tests/distributor/getoperationtest.cpp22
-rw-r--r--storage/src/tests/distributor/idealstatemanagertest.cpp54
-rw-r--r--storage/src/tests/distributor/joinbuckettest.cpp30
-rw-r--r--storage/src/tests/distributor/legacy_bucket_db_updater_test.cpp2818
-rw-r--r--storage/src/tests/distributor/legacy_distributor_test.cpp1312
-rw-r--r--storage/src/tests/distributor/maintenancemocks.h2
-rw-r--r--storage/src/tests/distributor/maintenanceschedulertest.cpp2
-rw-r--r--storage/src/tests/distributor/mergelimitertest.cpp2
-rw-r--r--storage/src/tests/distributor/mergeoperationtest.cpp38
-rw-r--r--storage/src/tests/distributor/mock_tickable_stripe.h4
-rw-r--r--storage/src/tests/distributor/multi_thread_stripe_access_guard_test.cpp22
-rw-r--r--storage/src/tests/distributor/nodeinfotest.cpp2
-rw-r--r--storage/src/tests/distributor/nodemaintenancestatstrackertest.cpp2
-rw-r--r--storage/src/tests/distributor/operation_sequencer_test.cpp2
-rw-r--r--storage/src/tests/distributor/operationtargetresolvertest.cpp44
-rw-r--r--storage/src/tests/distributor/ownership_transfer_safe_time_point_calculator_test.cpp2
-rw-r--r--storage/src/tests/distributor/pendingmessagetrackertest.cpp20
-rw-r--r--storage/src/tests/distributor/persistence_metrics_set_test.cpp2
-rw-r--r--storage/src/tests/distributor/putoperationtest.cpp88
-rw-r--r--storage/src/tests/distributor/read_for_write_visitor_operation_test.cpp16
-rw-r--r--storage/src/tests/distributor/removebucketoperationtest.cpp26
-rw-r--r--storage/src/tests/distributor/removelocationtest.cpp17
-rw-r--r--storage/src/tests/distributor/removeoperationtest.cpp20
-rw-r--r--storage/src/tests/distributor/simplebucketprioritydatabasetest.cpp2
-rw-r--r--storage/src/tests/distributor/simplemaintenancescannertest.cpp10
-rw-r--r--storage/src/tests/distributor/splitbuckettest.cpp30
-rw-r--r--storage/src/tests/distributor/statecheckerstest.cpp204
-rw-r--r--storage/src/tests/distributor/statoperationtest.cpp25
-rw-r--r--storage/src/tests/distributor/statusreporterdelegatetest.cpp4
-rw-r--r--storage/src/tests/distributor/throttlingoperationstartertest.cpp2
-rw-r--r--storage/src/tests/distributor/top_level_bucket_db_updater_test.cpp2665
-rw-r--r--storage/src/tests/distributor/top_level_distributor_test.cpp605
-rw-r--r--storage/src/tests/distributor/top_level_distributor_test_util.cpp489
-rw-r--r--storage/src/tests/distributor/top_level_distributor_test_util.h176
-rw-r--r--storage/src/tests/distributor/twophaseupdateoperationtest.cpp194
-rw-r--r--storage/src/tests/distributor/updateoperationtest.cpp60
-rw-r--r--storage/src/tests/distributor/visitoroperationtest.cpp99
-rw-r--r--storage/src/tests/frameworkimpl/status/CMakeLists.txt2
-rw-r--r--storage/src/tests/frameworkimpl/status/htmltabletest.cpp2
-rw-r--r--storage/src/tests/frameworkimpl/status/statustest.cpp2
-rw-r--r--storage/src/tests/persistence/CMakeLists.txt2
-rw-r--r--storage/src/tests/persistence/apply_bucket_diff_entry_result_test.cpp2
-rw-r--r--storage/src/tests/persistence/bucketownershipnotifiertest.cpp2
-rw-r--r--storage/src/tests/persistence/common/CMakeLists.txt2
-rw-r--r--storage/src/tests/persistence/common/filestortestfixture.cpp2
-rw-r--r--storage/src/tests/persistence/common/filestortestfixture.h2
-rw-r--r--storage/src/tests/persistence/common/persistenceproviderwrapper.cpp2
-rw-r--r--storage/src/tests/persistence/common/persistenceproviderwrapper.h2
-rw-r--r--storage/src/tests/persistence/filestorage/CMakeLists.txt2
-rw-r--r--storage/src/tests/persistence/filestorage/deactivatebucketstest.cpp2
-rw-r--r--storage/src/tests/persistence/filestorage/deletebuckettest.cpp2
-rw-r--r--storage/src/tests/persistence/filestorage/filestormanagertest.cpp2
-rw-r--r--storage/src/tests/persistence/filestorage/filestormodifiedbucketstest.cpp2
-rw-r--r--storage/src/tests/persistence/filestorage/forwardingmessagesender.h2
-rw-r--r--storage/src/tests/persistence/filestorage/mergeblockingtest.cpp2
-rw-r--r--storage/src/tests/persistence/filestorage/modifiedbucketcheckertest.cpp2
-rw-r--r--storage/src/tests/persistence/filestorage/operationabortingtest.cpp2
-rw-r--r--storage/src/tests/persistence/filestorage/sanitycheckeddeletetest.cpp2
-rw-r--r--storage/src/tests/persistence/filestorage/service_layer_host_info_reporter_test.cpp46
-rw-r--r--storage/src/tests/persistence/filestorage/singlebucketjointest.cpp2
-rw-r--r--storage/src/tests/persistence/has_mask_remapper_test.cpp2
-rw-r--r--storage/src/tests/persistence/mergehandlertest.cpp2
-rw-r--r--storage/src/tests/persistence/persistencequeuetest.cpp2
-rw-r--r--storage/src/tests/persistence/persistencetestutils.cpp2
-rw-r--r--storage/src/tests/persistence/persistencetestutils.h2
-rw-r--r--storage/src/tests/persistence/persistencethread_splittest.cpp2
-rw-r--r--storage/src/tests/persistence/processalltest.cpp2
-rw-r--r--storage/src/tests/persistence/provider_error_wrapper_test.cpp2
-rw-r--r--storage/src/tests/persistence/splitbitdetectortest.cpp2
-rw-r--r--storage/src/tests/persistence/testandsettest.cpp2
-rwxr-xr-xstorage/src/tests/pstack_testrunner2
-rw-r--r--storage/src/tests/storageserver/CMakeLists.txt2
-rw-r--r--storage/src/tests/storageserver/bouncertest.cpp2
-rw-r--r--storage/src/tests/storageserver/changedbucketownershiphandlertest.cpp2
-rw-r--r--storage/src/tests/storageserver/communicationmanagertest.cpp2
-rw-r--r--storage/src/tests/storageserver/configurable_bucket_resolver_test.cpp2
-rw-r--r--storage/src/tests/storageserver/documentapiconvertertest.cpp2
-rw-r--r--storage/src/tests/storageserver/mergethrottlertest.cpp228
-rw-r--r--storage/src/tests/storageserver/priorityconvertertest.cpp2
-rw-r--r--storage/src/tests/storageserver/rpc/CMakeLists.txt2
-rw-r--r--storage/src/tests/storageserver/rpc/caching_rpc_target_resolver_test.cpp2
-rw-r--r--storage/src/tests/storageserver/rpc/cluster_controller_rpc_api_service_test.cpp2
-rw-r--r--storage/src/tests/storageserver/rpc/gtest_runner.cpp2
-rw-r--r--storage/src/tests/storageserver/rpc/message_codec_provider_test.cpp2
-rw-r--r--storage/src/tests/storageserver/rpc/storage_api_rpc_service_test.cpp2
-rw-r--r--storage/src/tests/storageserver/service_layer_error_listener_test.cpp2
-rw-r--r--storage/src/tests/storageserver/statemanagertest.cpp2
-rw-r--r--storage/src/tests/storageserver/statereportertest.cpp2
-rw-r--r--storage/src/tests/storageserver/testvisitormessagesession.cpp2
-rw-r--r--storage/src/tests/storageserver/testvisitormessagesession.h2
-rw-r--r--storage/src/tests/visiting/CMakeLists.txt2
-rw-r--r--storage/src/tests/visiting/commandqueuetest.cpp2
-rw-r--r--storage/src/tests/visiting/memory_bounded_trace_test.cpp2
-rw-r--r--storage/src/tests/visiting/visitormanagertest.cpp2
-rw-r--r--storage/src/tests/visiting/visitortest.cpp2
-rw-r--r--storage/src/vespa/storage/CMakeLists.txt2
-rw-r--r--storage/src/vespa/storage/bucketdb/CMakeLists.txt2
-rw-r--r--storage/src/vespa/storage/bucketdb/abstract_bucket_map.h2
-rw-r--r--storage/src/vespa/storage/bucketdb/btree_lockable_map.cpp2
-rw-r--r--storage/src/vespa/storage/bucketdb/btree_lockable_map.h2
-rw-r--r--storage/src/vespa/storage/bucketdb/btree_lockable_map.hpp2
-rw-r--r--storage/src/vespa/storage/bucketdb/bucketcopy.cpp2
-rw-r--r--storage/src/vespa/storage/bucketdb/bucketcopy.h2
-rw-r--r--storage/src/vespa/storage/bucketdb/bucketdatabase.cpp2
-rw-r--r--storage/src/vespa/storage/bucketdb/bucketdatabase.h2
-rw-r--r--storage/src/vespa/storage/bucketdb/bucketinfo.cpp2
-rw-r--r--storage/src/vespa/storage/bucketdb/bucketinfo.h6
-rw-r--r--storage/src/vespa/storage/bucketdb/bucketmanager.cpp2
-rw-r--r--storage/src/vespa/storage/bucketdb/bucketmanager.h2
-rw-r--r--storage/src/vespa/storage/bucketdb/bucketmanagermetrics.cpp2
-rw-r--r--storage/src/vespa/storage/bucketdb/bucketmanagermetrics.h2
-rw-r--r--storage/src/vespa/storage/bucketdb/const_iterator.h2
-rw-r--r--storage/src/vespa/storage/bucketdb/db_merger.h2
-rw-r--r--storage/src/vespa/storage/bucketdb/generic_btree_bucket_database.cpp2
-rw-r--r--storage/src/vespa/storage/bucketdb/generic_btree_bucket_database.h2
-rw-r--r--storage/src/vespa/storage/bucketdb/generic_btree_bucket_database.hpp2
-rw-r--r--storage/src/vespa/storage/bucketdb/minimumusedbitstracker.h2
-rw-r--r--storage/src/vespa/storage/bucketdb/read_guard.h2
-rw-r--r--storage/src/vespa/storage/bucketdb/stor-bucket-init.def2
-rw-r--r--storage/src/vespa/storage/bucketdb/stor-bucketdb.def2
-rw-r--r--storage/src/vespa/storage/bucketdb/storagebucketinfo.h2
-rw-r--r--storage/src/vespa/storage/bucketdb/storbucketdb.cpp2
-rw-r--r--storage/src/vespa/storage/bucketdb/storbucketdb.h2
-rw-r--r--storage/src/vespa/storage/bucketdb/striped_btree_lockable_map.cpp2
-rw-r--r--storage/src/vespa/storage/bucketdb/striped_btree_lockable_map.h2
-rw-r--r--storage/src/vespa/storage/bucketdb/striped_btree_lockable_map.hpp2
-rw-r--r--storage/src/vespa/storage/common/CMakeLists.txt2
-rw-r--r--storage/src/vespa/storage/common/bucket_resolver.h2
-rw-r--r--storage/src/vespa/storage/common/bucket_stripe_utils.cpp19
-rw-r--r--storage/src/vespa/storage/common/bucket_stripe_utils.h7
-rw-r--r--storage/src/vespa/storage/common/bucket_utils.h2
-rw-r--r--storage/src/vespa/storage/common/bucketmessages.cpp2
-rw-r--r--storage/src/vespa/storage/common/bucketmessages.h2
-rw-r--r--storage/src/vespa/storage/common/cluster_context.h2
-rw-r--r--storage/src/vespa/storage/common/content_bucket_db_options.h2
-rw-r--r--storage/src/vespa/storage/common/content_bucket_space.cpp2
-rw-r--r--storage/src/vespa/storage/common/content_bucket_space.h2
-rw-r--r--storage/src/vespa/storage/common/content_bucket_space_repo.cpp2
-rw-r--r--storage/src/vespa/storage/common/content_bucket_space_repo.h2
-rw-r--r--storage/src/vespa/storage/common/distributorcomponent.cpp2
-rw-r--r--storage/src/vespa/storage/common/distributorcomponent.h10
-rw-r--r--storage/src/vespa/storage/common/doneinitializehandler.h2
-rw-r--r--storage/src/vespa/storage/common/global_bucket_space_distribution_converter.cpp2
-rw-r--r--storage/src/vespa/storage/common/global_bucket_space_distribution_converter.h2
-rw-r--r--storage/src/vespa/storage/common/hostreporter/CMakeLists.txt2
-rw-r--r--storage/src/vespa/storage/common/hostreporter/hostinfo.cpp2
-rw-r--r--storage/src/vespa/storage/common/hostreporter/hostinfo.h2
-rw-r--r--storage/src/vespa/storage/common/hostreporter/hostreporter.h2
-rw-r--r--storage/src/vespa/storage/common/hostreporter/kernelmetrictool.cpp2
-rw-r--r--storage/src/vespa/storage/common/hostreporter/kernelmetrictool.h2
-rw-r--r--storage/src/vespa/storage/common/hostreporter/versionreporter.cpp2
-rw-r--r--storage/src/vespa/storage/common/hostreporter/versionreporter.h2
-rw-r--r--storage/src/vespa/storage/common/i_storage_chain_builder.h2
-rw-r--r--storage/src/vespa/storage/common/messagebucket.cpp2
-rw-r--r--storage/src/vespa/storage/common/messagebucket.h2
-rw-r--r--storage/src/vespa/storage/common/messagesender.cpp2
-rw-r--r--storage/src/vespa/storage/common/messagesender.h2
-rw-r--r--storage/src/vespa/storage/common/node_identity.cpp2
-rw-r--r--storage/src/vespa/storage/common/node_identity.h2
-rw-r--r--storage/src/vespa/storage/common/nodestateupdater.h2
-rw-r--r--storage/src/vespa/storage/common/reindexing_constants.cpp2
-rw-r--r--storage/src/vespa/storage/common/reindexing_constants.h2
-rw-r--r--storage/src/vespa/storage/common/servicelayercomponent.cpp2
-rw-r--r--storage/src/vespa/storage/common/servicelayercomponent.h2
-rw-r--r--storage/src/vespa/storage/common/statusmessages.cpp2
-rw-r--r--storage/src/vespa/storage/common/statusmessages.h2
-rw-r--r--storage/src/vespa/storage/common/statusmetricconsumer.cpp2
-rw-r--r--storage/src/vespa/storage/common/statusmetricconsumer.h2
-rw-r--r--storage/src/vespa/storage/common/storage_chain_builder.cpp2
-rw-r--r--storage/src/vespa/storage/common/storage_chain_builder.h2
-rw-r--r--storage/src/vespa/storage/common/storagecomponent.cpp2
-rw-r--r--storage/src/vespa/storage/common/storagecomponent.h2
-rw-r--r--storage/src/vespa/storage/common/storagelink.cpp2
-rw-r--r--storage/src/vespa/storage/common/storagelink.h2
-rw-r--r--storage/src/vespa/storage/common/storagelinkqueued.cpp2
-rw-r--r--storage/src/vespa/storage/common/storagelinkqueued.h2
-rw-r--r--storage/src/vespa/storage/common/storagelinkqueued.hpp2
-rw-r--r--storage/src/vespa/storage/common/vectorprinter.h2
-rw-r--r--storage/src/vespa/storage/common/visitorfactory.h2
-rw-r--r--storage/src/vespa/storage/config/CMakeLists.txt2
-rw-r--r--storage/src/vespa/storage/config/distributorconfiguration.cpp2
-rw-r--r--storage/src/vespa/storage/config/distributorconfiguration.h6
-rw-r--r--storage/src/vespa/storage/config/rpc-provider.def2
-rw-r--r--storage/src/vespa/storage/config/stor-bouncer.def2
-rw-r--r--storage/src/vespa/storage/config/stor-bucketmover.def2
-rw-r--r--storage/src/vespa/storage/config/stor-communicationmanager.def2
-rw-r--r--storage/src/vespa/storage/config/stor-distributormanager.def9
-rw-r--r--storage/src/vespa/storage/config/stor-integritychecker.def2
-rw-r--r--storage/src/vespa/storage/config/stor-messageforwarder.def2
-rw-r--r--storage/src/vespa/storage/config/stor-opslogger.def2
-rw-r--r--storage/src/vespa/storage/config/stor-prioritymapping.def2
-rw-r--r--storage/src/vespa/storage/config/stor-server.def10
-rw-r--r--storage/src/vespa/storage/config/stor-status.def2
-rw-r--r--storage/src/vespa/storage/config/stor-visitordispatcher.def2
-rw-r--r--storage/src/vespa/storage/distributor/CMakeLists.txt6
-rw-r--r--storage/src/vespa/storage/distributor/activecopy.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/activecopy.h2
-rw-r--r--storage/src/vespa/storage/distributor/blockingoperationstarter.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/blockingoperationstarter.h2
-rw-r--r--storage/src/vespa/storage/distributor/bucket_ownership_flags.h2
-rw-r--r--storage/src/vespa/storage/distributor/bucket_space_distribution_configs.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/bucket_space_distribution_configs.h2
-rw-r--r--storage/src/vespa/storage/distributor/bucket_space_state_map.cpp18
-rw-r--r--storage/src/vespa/storage/distributor/bucket_space_state_map.h6
-rw-r--r--storage/src/vespa/storage/distributor/bucket_spaces_stats_provider.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/bucket_spaces_stats_provider.h2
-rw-r--r--storage/src/vespa/storage/distributor/bucketdb/CMakeLists.txt2
-rw-r--r--storage/src/vespa/storage/distributor/bucketdb/bucketdbmetricupdater.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/bucketdb/bucketdbmetricupdater.h2
-rw-r--r--storage/src/vespa/storage/distributor/bucketgctimecalculator.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/bucketgctimecalculator.h2
-rw-r--r--storage/src/vespa/storage/distributor/bucketlistmerger.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/bucketlistmerger.h2
-rw-r--r--storage/src/vespa/storage/distributor/bucketownership.h2
-rw-r--r--storage/src/vespa/storage/distributor/cluster_state_bundle_activation_listener.h24
-rw-r--r--storage/src/vespa/storage/distributor/clusterinformation.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/clusterinformation.h2
-rw-r--r--storage/src/vespa/storage/distributor/crypto_uuid_generator.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/crypto_uuid_generator.h2
-rw-r--r--storage/src/vespa/storage/distributor/delegatedstatusrequest.h2
-rw-r--r--storage/src/vespa/storage/distributor/distributor.cpp826
-rw-r--r--storage/src/vespa/storage/distributor/distributor_bucket_space.cpp8
-rw-r--r--storage/src/vespa/storage/distributor/distributor_bucket_space.h5
-rw-r--r--storage/src/vespa/storage/distributor/distributor_bucket_space_repo.cpp8
-rw-r--r--storage/src/vespa/storage/distributor/distributor_bucket_space_repo.h5
-rw-r--r--storage/src/vespa/storage/distributor/distributor_component.cpp5
-rw-r--r--storage/src/vespa/storage/distributor/distributor_component.h24
-rw-r--r--storage/src/vespa/storage/distributor/distributor_host_info_reporter.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/distributor_host_info_reporter.h2
-rw-r--r--storage/src/vespa/storage/distributor/distributor_interface.h2
-rw-r--r--storage/src/vespa/storage/distributor/distributor_node_context.h2
-rw-r--r--storage/src/vespa/storage/distributor/distributor_operation_context.h11
-rw-r--r--storage/src/vespa/storage/distributor/distributor_status.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/distributor_status.h2
-rw-r--r--storage/src/vespa/storage/distributor/distributor_stripe.cpp258
-rw-r--r--storage/src/vespa/storage/distributor/distributor_stripe.h64
-rw-r--r--storage/src/vespa/storage/distributor/distributor_stripe_component.cpp3
-rw-r--r--storage/src/vespa/storage/distributor/distributor_stripe_component.h2
-rw-r--r--storage/src/vespa/storage/distributor/distributor_stripe_interface.h2
-rw-r--r--storage/src/vespa/storage/distributor/distributor_stripe_operation_context.h14
-rw-r--r--storage/src/vespa/storage/distributor/distributor_stripe_pool.cpp38
-rw-r--r--storage/src/vespa/storage/distributor/distributor_stripe_pool.h8
-rw-r--r--storage/src/vespa/storage/distributor/distributor_stripe_thread.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/distributor_stripe_thread.h2
-rw-r--r--storage/src/vespa/storage/distributor/distributor_total_metrics.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/distributor_total_metrics.h2
-rw-r--r--storage/src/vespa/storage/distributor/distributormessagesender.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/distributormessagesender.h2
-rw-r--r--storage/src/vespa/storage/distributor/distributormetricsset.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/distributormetricsset.h2
-rw-r--r--storage/src/vespa/storage/distributor/document_selection_parser.h2
-rw-r--r--storage/src/vespa/storage/distributor/externaloperationhandler.cpp4
-rw-r--r--storage/src/vespa/storage/distributor/externaloperationhandler.h4
-rw-r--r--storage/src/vespa/storage/distributor/ideal_service_layer_nodes_bundle.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/ideal_service_layer_nodes_bundle.h2
-rw-r--r--storage/src/vespa/storage/distributor/ideal_state_total_metrics.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/ideal_state_total_metrics.h2
-rw-r--r--storage/src/vespa/storage/distributor/idealstatemanager.cpp10
-rw-r--r--storage/src/vespa/storage/distributor/idealstatemanager.h2
-rw-r--r--storage/src/vespa/storage/distributor/idealstatemetricsset.cpp18
-rw-r--r--storage/src/vespa/storage/distributor/idealstatemetricsset.h9
-rw-r--r--storage/src/vespa/storage/distributor/maintenance/CMakeLists.txt2
-rw-r--r--storage/src/vespa/storage/distributor/maintenance/bucketprioritydatabase.h2
-rw-r--r--storage/src/vespa/storage/distributor/maintenance/maintenanceoperation.h2
-rw-r--r--storage/src/vespa/storage/distributor/maintenance/maintenanceoperationgenerator.h2
-rw-r--r--storage/src/vespa/storage/distributor/maintenance/maintenancepriority.h2
-rw-r--r--storage/src/vespa/storage/distributor/maintenance/maintenancepriorityandtype.h2
-rw-r--r--storage/src/vespa/storage/distributor/maintenance/maintenanceprioritygenerator.h2
-rw-r--r--storage/src/vespa/storage/distributor/maintenance/maintenancescanner.h2
-rw-r--r--storage/src/vespa/storage/distributor/maintenance/maintenancescheduler.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/maintenance/maintenancescheduler.h2
-rw-r--r--storage/src/vespa/storage/distributor/maintenance/node_maintenance_stats_tracker.cpp6
-rw-r--r--storage/src/vespa/storage/distributor/maintenance/node_maintenance_stats_tracker.h35
-rw-r--r--storage/src/vespa/storage/distributor/maintenance/prioritizedbucket.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/maintenance/prioritizedbucket.h2
-rw-r--r--storage/src/vespa/storage/distributor/maintenance/simplebucketprioritydatabase.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/maintenance/simplebucketprioritydatabase.h2
-rw-r--r--storage/src/vespa/storage/distributor/maintenance/simplemaintenancescanner.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/maintenance/simplemaintenancescanner.h2
-rw-r--r--storage/src/vespa/storage/distributor/messageguard.h2
-rw-r--r--storage/src/vespa/storage/distributor/messagetracker.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/messagetracker.h2
-rw-r--r--storage/src/vespa/storage/distributor/min_replica_provider.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/min_replica_provider.h2
-rw-r--r--storage/src/vespa/storage/distributor/multi_threaded_stripe_access_guard.cpp23
-rw-r--r--storage/src/vespa/storage/distributor/multi_threaded_stripe_access_guard.h9
-rw-r--r--storage/src/vespa/storage/distributor/nodeinfo.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/nodeinfo.h2
-rw-r--r--storage/src/vespa/storage/distributor/operation_sequencer.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/operation_sequencer.h2
-rw-r--r--storage/src/vespa/storage/distributor/operationowner.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/operationowner.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/CMakeLists.txt2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/CMakeLists.txt2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/getoperation.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/getoperation.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/newest_replica.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/newest_replica.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/putoperation.cpp7
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/putoperation.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/read_for_write_visitor_operation.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/read_for_write_visitor_operation.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/removelocationoperation.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/removelocationoperation.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/removeoperation.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/removeoperation.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/statbucketlistoperation.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/statbucketlistoperation.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/statbucketoperation.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/statbucketoperation.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/updateoperation.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/updateoperation.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/visitoroperation.cpp4
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/visitoroperation.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/visitororder.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/idealstate/CMakeLists.txt2
-rw-r--r--storage/src/vespa/storage/distributor/operations/idealstate/garbagecollectionoperation.cpp4
-rw-r--r--storage/src/vespa/storage/distributor/operations/idealstate/garbagecollectionoperation.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/idealstate/idealstateoperation.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/operations/idealstate/idealstateoperation.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/idealstate/joinoperation.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/operations/idealstate/joinoperation.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/idealstate/mergelimiter.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/operations/idealstate/mergelimiter.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/idealstate/mergemetadata.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/operations/idealstate/mergemetadata.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/idealstate/mergeoperation.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/operations/idealstate/mergeoperation.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/idealstate/removebucketoperation.cpp4
-rw-r--r--storage/src/vespa/storage/distributor/operations/idealstate/removebucketoperation.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/idealstate/setbucketstateoperation.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/operations/idealstate/setbucketstateoperation.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/idealstate/splitoperation.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/operations/idealstate/splitoperation.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/operation.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/operations/operation.h2
-rw-r--r--storage/src/vespa/storage/distributor/operations/sequenced_operation.h2
-rw-r--r--storage/src/vespa/storage/distributor/operationstarter.h2
-rw-r--r--storage/src/vespa/storage/distributor/operationtargetresolver.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/operationtargetresolver.h2
-rw-r--r--storage/src/vespa/storage/distributor/operationtargetresolverimpl.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/operationtargetresolverimpl.h2
-rw-r--r--storage/src/vespa/storage/distributor/outdated_nodes.h2
-rw-r--r--storage/src/vespa/storage/distributor/outdated_nodes_map.h2
-rw-r--r--storage/src/vespa/storage/distributor/ownership_transfer_safe_time_point_calculator.cpp8
-rw-r--r--storage/src/vespa/storage/distributor/ownership_transfer_safe_time_point_calculator.h7
-rw-r--r--storage/src/vespa/storage/distributor/pending_bucket_space_db_transition.cpp31
-rw-r--r--storage/src/vespa/storage/distributor/pending_bucket_space_db_transition.h9
-rw-r--r--storage/src/vespa/storage/distributor/pending_bucket_space_db_transition_entry.h2
-rw-r--r--storage/src/vespa/storage/distributor/pendingclusterstate.cpp41
-rw-r--r--storage/src/vespa/storage/distributor/pendingclusterstate.h21
-rw-r--r--storage/src/vespa/storage/distributor/pendingmessagetracker.cpp9
-rw-r--r--storage/src/vespa/storage/distributor/pendingmessagetracker.h4
-rw-r--r--storage/src/vespa/storage/distributor/persistence_operation_metric_set.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/persistence_operation_metric_set.h2
-rw-r--r--storage/src/vespa/storage/distributor/persistencemessagetracker.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/persistencemessagetracker.h2
-rw-r--r--storage/src/vespa/storage/distributor/potential_data_loss_report.h2
-rw-r--r--storage/src/vespa/storage/distributor/sentmessagemap.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/sentmessagemap.h2
-rw-r--r--storage/src/vespa/storage/distributor/simpleclusterinformation.h2
-rw-r--r--storage/src/vespa/storage/distributor/statechecker.cpp7
-rw-r--r--storage/src/vespa/storage/distributor/statechecker.h2
-rw-r--r--storage/src/vespa/storage/distributor/statecheckers.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/statecheckers.h2
-rw-r--r--storage/src/vespa/storage/distributor/statusdelegator.h2
-rw-r--r--storage/src/vespa/storage/distributor/statusreporterdelegate.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/statusreporterdelegate.h2
-rw-r--r--storage/src/vespa/storage/distributor/storage_node_up_states.h2
-rw-r--r--storage/src/vespa/storage/distributor/stripe_access_guard.h13
-rw-r--r--storage/src/vespa/storage/distributor/stripe_bucket_db_updater.cpp379
-rw-r--r--storage/src/vespa/storage/distributor/stripe_bucket_db_updater.h97
-rw-r--r--storage/src/vespa/storage/distributor/stripe_host_info_notifier.h2
-rw-r--r--storage/src/vespa/storage/distributor/throttlingoperationstarter.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/throttlingoperationstarter.h2
-rw-r--r--storage/src/vespa/storage/distributor/tickable_stripe.h7
-rw-r--r--storage/src/vespa/storage/distributor/top_level_bucket_db_updater.cpp (renamed from storage/src/vespa/storage/distributor/bucketdbupdater.cpp)149
-rw-r--r--storage/src/vespa/storage/distributor/top_level_bucket_db_updater.h (renamed from storage/src/vespa/storage/distributor/bucketdbupdater.h)34
-rw-r--r--storage/src/vespa/storage/distributor/top_level_distributor.cpp645
-rw-r--r--storage/src/vespa/storage/distributor/top_level_distributor.h (renamed from storage/src/vespa/storage/distributor/distributor.h)102
-rw-r--r--storage/src/vespa/storage/distributor/update_metric_set.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/update_metric_set.h2
-rw-r--r--storage/src/vespa/storage/distributor/uuid_generator.h2
-rw-r--r--storage/src/vespa/storage/distributor/visitormetricsset.cpp2
-rw-r--r--storage/src/vespa/storage/distributor/visitormetricsset.h2
-rw-r--r--storage/src/vespa/storage/frameworkimpl/component/CMakeLists.txt2
-rw-r--r--storage/src/vespa/storage/frameworkimpl/component/distributorcomponentregisterimpl.cpp2
-rw-r--r--storage/src/vespa/storage/frameworkimpl/component/distributorcomponentregisterimpl.h2
-rw-r--r--storage/src/vespa/storage/frameworkimpl/component/servicelayercomponentregisterimpl.cpp2
-rw-r--r--storage/src/vespa/storage/frameworkimpl/component/servicelayercomponentregisterimpl.h2
-rw-r--r--storage/src/vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.cpp2
-rw-r--r--storage/src/vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.h2
-rw-r--r--storage/src/vespa/storage/frameworkimpl/status/CMakeLists.txt2
-rw-r--r--storage/src/vespa/storage/frameworkimpl/status/statuswebserver.cpp2
-rw-r--r--storage/src/vespa/storage/frameworkimpl/status/statuswebserver.h2
-rw-r--r--storage/src/vespa/storage/frameworkimpl/thread/CMakeLists.txt2
-rw-r--r--storage/src/vespa/storage/frameworkimpl/thread/appkiller.cpp2
-rw-r--r--storage/src/vespa/storage/frameworkimpl/thread/appkiller.h2
-rw-r--r--storage/src/vespa/storage/frameworkimpl/thread/deadlockdetector.cpp2
-rw-r--r--storage/src/vespa/storage/frameworkimpl/thread/deadlockdetector.h2
-rw-r--r--storage/src/vespa/storage/frameworkimpl/thread/htmltable.cpp2
-rw-r--r--storage/src/vespa/storage/frameworkimpl/thread/htmltable.h2
-rw-r--r--storage/src/vespa/storage/persistence/CMakeLists.txt2
-rw-r--r--storage/src/vespa/storage/persistence/apply_bucket_diff_entry_complete.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/apply_bucket_diff_entry_complete.h2
-rw-r--r--storage/src/vespa/storage/persistence/apply_bucket_diff_entry_result.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/apply_bucket_diff_entry_result.h2
-rw-r--r--storage/src/vespa/storage/persistence/asynchandler.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/asynchandler.h2
-rw-r--r--storage/src/vespa/storage/persistence/bucketownershipnotifier.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/bucketownershipnotifier.h2
-rw-r--r--storage/src/vespa/storage/persistence/bucketprocessor.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/bucketprocessor.h2
-rw-r--r--storage/src/vespa/storage/persistence/diskthread.h2
-rw-r--r--storage/src/vespa/storage/persistence/fieldvisitor.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/fieldvisitor.h2
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/CMakeLists.txt2
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/debugverifications.h2
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/filestorhandler.h2
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/filestorhandlerimpl.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/filestorhandlerimpl.h2
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/filestormanager.h2
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/filestormetrics.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/filestormetrics.h2
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/has_mask_remapper.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/has_mask_remapper.h2
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/merge_handler_metrics.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/merge_handler_metrics.h2
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/mergestatus.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/mergestatus.h2
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/modifiedbucketchecker.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/modifiedbucketchecker.h2
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/service_layer_host_info_reporter.cpp23
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/service_layer_host_info_reporter.h2
-rw-r--r--storage/src/vespa/storage/persistence/mergehandler.cpp4
-rw-r--r--storage/src/vespa/storage/persistence/mergehandler.h2
-rw-r--r--storage/src/vespa/storage/persistence/messages.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/messages.h2
-rw-r--r--storage/src/vespa/storage/persistence/persistencehandler.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/persistencehandler.h2
-rw-r--r--storage/src/vespa/storage/persistence/persistencethread.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/persistencethread.h2
-rw-r--r--storage/src/vespa/storage/persistence/persistenceutil.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/persistenceutil.h2
-rw-r--r--storage/src/vespa/storage/persistence/processallhandler.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/processallhandler.h2
-rw-r--r--storage/src/vespa/storage/persistence/provider_error_wrapper.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/provider_error_wrapper.h2
-rw-r--r--storage/src/vespa/storage/persistence/simplemessagehandler.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/simplemessagehandler.h2
-rw-r--r--storage/src/vespa/storage/persistence/splitbitdetector.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/splitbitdetector.h2
-rw-r--r--storage/src/vespa/storage/persistence/splitjoinhandler.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/splitjoinhandler.h2
-rw-r--r--storage/src/vespa/storage/persistence/testandsethelper.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/testandsethelper.h2
-rw-r--r--storage/src/vespa/storage/persistence/types.cpp2
-rw-r--r--storage/src/vespa/storage/persistence/types.h2
-rw-r--r--storage/src/vespa/storage/storageserver/CMakeLists.txt2
-rw-r--r--storage/src/vespa/storage/storageserver/applicationgenerationfetcher.h2
-rw-r--r--storage/src/vespa/storage/storageserver/bouncer.cpp4
-rw-r--r--storage/src/vespa/storage/storageserver/bouncer.h2
-rw-r--r--storage/src/vespa/storage/storageserver/bouncer_metrics.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/bouncer_metrics.h2
-rw-r--r--storage/src/vespa/storage/storageserver/changedbucketownershiphandler.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/changedbucketownershiphandler.h2
-rw-r--r--storage/src/vespa/storage/storageserver/communicationmanager.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/communicationmanager.h2
-rw-r--r--storage/src/vespa/storage/storageserver/communicationmanagermetrics.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/communicationmanagermetrics.h2
-rw-r--r--storage/src/vespa/storage/storageserver/config_logging.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/config_logging.h2
-rw-r--r--storage/src/vespa/storage/storageserver/configurable_bucket_resolver.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/configurable_bucket_resolver.h2
-rw-r--r--storage/src/vespa/storage/storageserver/distributornode.cpp14
-rw-r--r--storage/src/vespa/storage/storageserver/distributornode.h2
-rw-r--r--storage/src/vespa/storage/storageserver/distributornodecontext.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/distributornodecontext.h2
-rw-r--r--storage/src/vespa/storage/storageserver/documentapiconverter.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/documentapiconverter.h2
-rw-r--r--storage/src/vespa/storage/storageserver/mergethrottler.cpp99
-rw-r--r--storage/src/vespa/storage/storageserver/mergethrottler.h9
-rw-r--r--storage/src/vespa/storage/storageserver/message_dispatcher.h2
-rw-r--r--storage/src/vespa/storage/storageserver/messagesink.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/messagesink.h2
-rw-r--r--storage/src/vespa/storage/storageserver/opslogger.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/opslogger.h2
-rw-r--r--storage/src/vespa/storage/storageserver/priorityconverter.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/priorityconverter.h2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/CMakeLists.txt2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/caching_rpc_target_resolver.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/caching_rpc_target_resolver.h2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/cluster_controller_api_rpc_service.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/cluster_controller_api_rpc_service.h2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/cluster_state_bundle_codec.h2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/encoded_cluster_state_bundle.h2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/message_codec_provider.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/message_codec_provider.h2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/protobuf/rpc_envelope.proto2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/rpc_envelope_proto.h4
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/rpc_target.h2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/rpc_target_factory.h2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/rpc_target_pool.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/rpc_target_pool.h2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.h2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/slime_cluster_state_bundle_codec.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/slime_cluster_state_bundle_codec.h2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/storage_api_rpc_service.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/rpc/storage_api_rpc_service.h2
-rw-r--r--storage/src/vespa/storage/storageserver/rpcrequestwrapper.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/rpcrequestwrapper.h2
-rw-r--r--storage/src/vespa/storage/storageserver/service_layer_error_listener.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/service_layer_error_listener.h2
-rw-r--r--storage/src/vespa/storage/storageserver/servicelayernode.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/servicelayernode.h2
-rw-r--r--storage/src/vespa/storage/storageserver/servicelayernodecontext.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/servicelayernodecontext.h2
-rw-r--r--storage/src/vespa/storage/storageserver/statemanager.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/statemanager.h2
-rw-r--r--storage/src/vespa/storage/storageserver/statereporter.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/statereporter.h2
-rw-r--r--storage/src/vespa/storage/storageserver/storagemetricsset.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/storagemetricsset.h2
-rw-r--r--storage/src/vespa/storage/storageserver/storagenode.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/storagenode.h2
-rw-r--r--storage/src/vespa/storage/storageserver/storagenodecontext.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/storagenodecontext.h2
-rw-r--r--storage/src/vespa/storage/storageserver/tls_statistics_metrics_wrapper.cpp2
-rw-r--r--storage/src/vespa/storage/storageserver/tls_statistics_metrics_wrapper.h2
-rw-r--r--storage/src/vespa/storage/storageutil/CMakeLists.txt2
-rw-r--r--storage/src/vespa/storage/storageutil/bloomfilter.cpp2
-rw-r--r--storage/src/vespa/storage/storageutil/bloomfilter.h2
-rw-r--r--storage/src/vespa/storage/storageutil/distributorstatecache.h2
-rw-r--r--storage/src/vespa/storage/storageutil/resumeguard.h2
-rw-r--r--storage/src/vespa/storage/storageutil/utils.h2
-rw-r--r--storage/src/vespa/storage/tools/CMakeLists.txt2
-rwxr-xr-xstorage/src/vespa/storage/tools/generate_distribution_doc.sh2
-rw-r--r--storage/src/vespa/storage/tools/generatedistributionbits.cpp2
-rw-r--r--storage/src/vespa/storage/tools/getidealstate.cpp2
-rw-r--r--storage/src/vespa/storage/tools/storage-cmd.cpp2
-rw-r--r--storage/src/vespa/storage/visiting/CMakeLists.txt2
-rw-r--r--storage/src/vespa/storage/visiting/commandqueue.h2
-rw-r--r--storage/src/vespa/storage/visiting/countvisitor.cpp2
-rw-r--r--storage/src/vespa/storage/visiting/countvisitor.h2
-rw-r--r--storage/src/vespa/storage/visiting/dumpvisitorsingle.cpp2
-rw-r--r--storage/src/vespa/storage/visiting/dumpvisitorsingle.h2
-rw-r--r--storage/src/vespa/storage/visiting/memory_bounded_trace.cpp2
-rw-r--r--storage/src/vespa/storage/visiting/memory_bounded_trace.h2
-rw-r--r--storage/src/vespa/storage/visiting/messagebusvisitormessagesession.h2
-rw-r--r--storage/src/vespa/storage/visiting/messages.h2
-rw-r--r--storage/src/vespa/storage/visiting/recoveryvisitor.cpp2
-rw-r--r--storage/src/vespa/storage/visiting/recoveryvisitor.h2
-rw-r--r--storage/src/vespa/storage/visiting/reindexing_visitor.cpp2
-rw-r--r--storage/src/vespa/storage/visiting/reindexing_visitor.h2
-rw-r--r--storage/src/vespa/storage/visiting/stor-visitor.def2
-rw-r--r--storage/src/vespa/storage/visiting/testvisitor.cpp2
-rw-r--r--storage/src/vespa/storage/visiting/testvisitor.h2
-rw-r--r--storage/src/vespa/storage/visiting/visitor.cpp2
-rw-r--r--storage/src/vespa/storage/visiting/visitor.h2
-rw-r--r--storage/src/vespa/storage/visiting/visitormanager.cpp2
-rw-r--r--storage/src/vespa/storage/visiting/visitormanager.h2
-rw-r--r--storage/src/vespa/storage/visiting/visitormessagesession.h2
-rw-r--r--storage/src/vespa/storage/visiting/visitormessagesessionfactory.h2
-rw-r--r--storage/src/vespa/storage/visiting/visitormetrics.cpp2
-rw-r--r--storage/src/vespa/storage/visiting/visitormetrics.h2
-rw-r--r--storage/src/vespa/storage/visiting/visitorthread.cpp2
-rw-r--r--storage/src/vespa/storage/visiting/visitorthread.h2
-rw-r--r--storage/src/vespa/storage/visiting/visitorthreadmetrics.cpp2
-rw-r--r--storage/src/vespa/storage/visiting/visitorthreadmetrics.h2
-rw-r--r--storageapi/CMakeLists.txt2
-rw-r--r--storageapi/src/tests/CMakeLists.txt2
-rw-r--r--storageapi/src/tests/buckets/CMakeLists.txt2
-rw-r--r--storageapi/src/tests/buckets/bucketinfotest.cpp2
-rw-r--r--storageapi/src/tests/mbusprot/CMakeLists.txt2
-rw-r--r--storageapi/src/tests/mbusprot/storageprotocoltest.cpp2
-rw-r--r--storageapi/src/tests/messageapi/CMakeLists.txt2
-rw-r--r--storageapi/src/tests/messageapi/storage_message_address_test.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/CMakeLists.txt2
-rw-r--r--storageapi/src/vespa/storageapi/app/CMakeLists.txt2
-rw-r--r--storageapi/src/vespa/storageapi/app/getbucketid.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/buckets/CMakeLists.txt2
-rw-r--r--storageapi/src/vespa/storageapi/buckets/bucketinfo.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/buckets/bucketinfo.h2
-rw-r--r--storageapi/src/vespa/storageapi/defs.h2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/CMakeLists.txt2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/oldreturncodemapper.h2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protobuf/inspect.proto2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protobuf_includes.h8
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization.h2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.h2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.h2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.h2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_2.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_2.h2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization6_0.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization6_0.h2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/serializationhelper.h2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/storagecommand.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/storagecommand.h2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/storagemessage.h2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/storageprotocol.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/storageprotocol.h2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/storagereply.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/storagereply.h2
-rw-r--r--storageapi/src/vespa/storageapi/message/CMakeLists.txt2
-rw-r--r--storageapi/src/vespa/storageapi/message/bucket.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/message/bucket.h2
-rw-r--r--storageapi/src/vespa/storageapi/message/bucketsplitting.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/message/bucketsplitting.h2
-rw-r--r--storageapi/src/vespa/storageapi/message/datagram.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/message/datagram.h2
-rw-r--r--storageapi/src/vespa/storageapi/message/documentsummary.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/message/documentsummary.h2
-rw-r--r--storageapi/src/vespa/storageapi/message/internal.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/message/internal.h2
-rw-r--r--storageapi/src/vespa/storageapi/message/persistence.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/message/persistence.h2
-rw-r--r--storageapi/src/vespa/storageapi/message/queryresult.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/message/queryresult.h2
-rw-r--r--storageapi/src/vespa/storageapi/message/removelocation.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/message/removelocation.h2
-rw-r--r--storageapi/src/vespa/storageapi/message/searchresult.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/message/searchresult.h2
-rw-r--r--storageapi/src/vespa/storageapi/message/stat.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/message/stat.h2
-rw-r--r--storageapi/src/vespa/storageapi/message/state.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/message/state.h2
-rw-r--r--storageapi/src/vespa/storageapi/message/visitor.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/message/visitor.h2
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/CMakeLists.txt2
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/bucketcommand.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/bucketcommand.h2
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/bucketinfocommand.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/bucketinfocommand.h2
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/bucketinforeply.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/bucketinforeply.h2
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/bucketreply.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/bucketreply.h2
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/maintenancecommand.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/maintenancecommand.h2
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/messagehandler.h2
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/returncode.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/returncode.h2
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/storagecommand.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/storagecommand.h2
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/storagemessage.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/storagemessage.h2
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/storagereply.cpp2
-rw-r--r--storageapi/src/vespa/storageapi/messageapi/storagereply.h2
-rw-r--r--storageframework/CMakeLists.txt2
-rw-r--r--storageframework/src/tests/CMakeLists.txt2
-rw-r--r--storageframework/src/tests/clock/CMakeLists.txt2
-rw-r--r--storageframework/src/tests/clock/timetest.cpp2
-rw-r--r--storageframework/src/tests/thread/CMakeLists.txt2
-rw-r--r--storageframework/src/tests/thread/taskthreadtest.cpp2
-rw-r--r--storageframework/src/tests/thread/tickingthreadtest.cpp2
-rw-r--r--storageframework/src/vespa/storageframework/CMakeLists.txt2
-rw-r--r--storageframework/src/vespa/storageframework/defaultimplementation/CMakeLists.txt2
-rw-r--r--storageframework/src/vespa/storageframework/defaultimplementation/clock/CMakeLists.txt2
-rw-r--r--storageframework/src/vespa/storageframework/defaultimplementation/clock/fakeclock.cpp2
-rw-r--r--storageframework/src/vespa/storageframework/defaultimplementation/clock/fakeclock.h2
-rw-r--r--storageframework/src/vespa/storageframework/defaultimplementation/clock/realclock.cpp2
-rw-r--r--storageframework/src/vespa/storageframework/defaultimplementation/clock/realclock.h2
-rw-r--r--storageframework/src/vespa/storageframework/defaultimplementation/component/CMakeLists.txt2
-rw-r--r--storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.cpp2
-rw-r--r--storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.h2
-rw-r--r--storageframework/src/vespa/storageframework/defaultimplementation/component/testcomponentregister.cpp2
-rw-r--r--storageframework/src/vespa/storageframework/defaultimplementation/component/testcomponentregister.h2
-rw-r--r--storageframework/src/vespa/storageframework/defaultimplementation/thread/CMakeLists.txt2
-rw-r--r--storageframework/src/vespa/storageframework/defaultimplementation/thread/threadimpl.cpp2
-rw-r--r--storageframework/src/vespa/storageframework/defaultimplementation/thread/threadimpl.h2
-rw-r--r--storageframework/src/vespa/storageframework/defaultimplementation/thread/threadpoolimpl.cpp2
-rw-r--r--storageframework/src/vespa/storageframework/defaultimplementation/thread/threadpoolimpl.h2
-rw-r--r--storageframework/src/vespa/storageframework/generic/CMakeLists.txt2
-rw-r--r--storageframework/src/vespa/storageframework/generic/clock/CMakeLists.txt2
-rw-r--r--storageframework/src/vespa/storageframework/generic/clock/clock.h2
-rw-r--r--storageframework/src/vespa/storageframework/generic/clock/time.cpp2
-rw-r--r--storageframework/src/vespa/storageframework/generic/clock/time.h2
-rw-r--r--storageframework/src/vespa/storageframework/generic/clock/time.hpp2
-rw-r--r--storageframework/src/vespa/storageframework/generic/clock/timer.h2
-rw-r--r--storageframework/src/vespa/storageframework/generic/component/CMakeLists.txt2
-rw-r--r--storageframework/src/vespa/storageframework/generic/component/component.cpp2
-rw-r--r--storageframework/src/vespa/storageframework/generic/component/component.h2
-rw-r--r--storageframework/src/vespa/storageframework/generic/component/componentregister.h2
-rw-r--r--storageframework/src/vespa/storageframework/generic/component/managedcomponent.h2
-rw-r--r--storageframework/src/vespa/storageframework/generic/metric/CMakeLists.txt2
-rw-r--r--storageframework/src/vespa/storageframework/generic/metric/metricregistrator.h2
-rw-r--r--storageframework/src/vespa/storageframework/generic/metric/metricupdatehook.h2
-rw-r--r--storageframework/src/vespa/storageframework/generic/status/CMakeLists.txt2
-rw-r--r--storageframework/src/vespa/storageframework/generic/status/htmlstatusreporter.cpp2
-rw-r--r--storageframework/src/vespa/storageframework/generic/status/htmlstatusreporter.h2
-rw-r--r--storageframework/src/vespa/storageframework/generic/status/httpurlpath.cpp2
-rw-r--r--storageframework/src/vespa/storageframework/generic/status/httpurlpath.h2
-rw-r--r--storageframework/src/vespa/storageframework/generic/status/statusreporter.cpp2
-rw-r--r--storageframework/src/vespa/storageframework/generic/status/statusreporter.h2
-rw-r--r--storageframework/src/vespa/storageframework/generic/status/statusreportermap.h2
-rw-r--r--storageframework/src/vespa/storageframework/generic/status/xmlstatusreporter.cpp2
-rw-r--r--storageframework/src/vespa/storageframework/generic/status/xmlstatusreporter.h2
-rw-r--r--storageframework/src/vespa/storageframework/generic/thread/CMakeLists.txt2
-rw-r--r--storageframework/src/vespa/storageframework/generic/thread/runnable.h2
-rw-r--r--storageframework/src/vespa/storageframework/generic/thread/taskthread.h2
-rw-r--r--storageframework/src/vespa/storageframework/generic/thread/thread.cpp2
-rw-r--r--storageframework/src/vespa/storageframework/generic/thread/thread.h2
-rw-r--r--storageframework/src/vespa/storageframework/generic/thread/threadpool.cpp2
-rw-r--r--storageframework/src/vespa/storageframework/generic/thread/threadpool.h2
-rw-r--r--storageframework/src/vespa/storageframework/generic/thread/tickingthread.cpp2
-rw-r--r--storageframework/src/vespa/storageframework/generic/thread/tickingthread.h3
-rw-r--r--storageframework/src/vespa/storageframework/storageframework.h2
-rw-r--r--storageserver/CMakeLists.txt2
-rw-r--r--storageserver/src/apps/storaged/CMakeLists.txt2
-rw-r--r--storageserver/src/apps/storaged/forcelink.cpp2
-rw-r--r--storageserver/src/apps/storaged/forcelink.h2
-rw-r--r--storageserver/src/apps/storaged/storage.cpp2
-rw-r--r--storageserver/src/tests/CMakeLists.txt2
-rw-r--r--storageserver/src/tests/storageservertest.cpp2
-rw-r--r--storageserver/src/tests/testhelper.cpp2
-rw-r--r--storageserver/src/tests/testhelper.h2
-rw-r--r--storageserver/src/vespa/storageserver/app/CMakeLists.txt2
-rw-r--r--storageserver/src/vespa/storageserver/app/distributorprocess.cpp20
-rw-r--r--storageserver/src/vespa/storageserver/app/distributorprocess.h2
-rw-r--r--storageserver/src/vespa/storageserver/app/dummyservicelayerprocess.cpp2
-rw-r--r--storageserver/src/vespa/storageserver/app/dummyservicelayerprocess.h2
-rw-r--r--storageserver/src/vespa/storageserver/app/process.cpp2
-rw-r--r--storageserver/src/vespa/storageserver/app/process.h2
-rw-r--r--storageserver/src/vespa/storageserver/app/servicelayerprocess.cpp2
-rw-r--r--storageserver/src/vespa/storageserver/app/servicelayerprocess.h2
-rw-r--r--streamingvisitors/CMakeLists.txt2
-rw-r--r--streamingvisitors/doc/SearchVisitorProtocol.html2
-rw-r--r--streamingvisitors/src/tests/hitcollector/CMakeLists.txt2
-rw-r--r--streamingvisitors/src/tests/hitcollector/hitcollector_test.cpp2
-rw-r--r--streamingvisitors/src/tests/querywrapper/CMakeLists.txt2
-rw-r--r--streamingvisitors/src/tests/querywrapper/querywrapper_test.cpp2
-rw-r--r--streamingvisitors/src/tests/searchvisitor/CMakeLists.txt2
-rw-r--r--streamingvisitors/src/tests/searchvisitor/searchvisitor_test.cpp2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/CMakeLists.txt2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/hitcollector.h2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/indexenvironment.cpp2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/indexenvironment.h2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/queryenvironment.cpp2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/queryenvironment.h2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/querytermdata.cpp2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/querytermdata.h2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/querywrapper.cpp2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/querywrapper.h2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/rankmanager.cpp2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/rankmanager.h2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/rankprocessor.h2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/searchenvironment.cpp6
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/searchenvironment.h2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp18
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/searchvisitor.h2
-rw-r--r--tenant-base/pom.xml11
-rw-r--r--tenant-cd-api/CMakeLists.txt2
-rw-r--r--tenant-cd-api/pom.xml2
-rw-r--r--tenant-cd-api/src/main/java/ai/vespa/hosted/cd/IntegrationTest.java2
-rw-r--r--tenant-cd-api/src/main/java/ai/vespa/hosted/cd/ProductionTest.java2
-rw-r--r--tenant-cd-api/src/main/java/ai/vespa/hosted/cd/StagingSetup.java2
-rw-r--r--tenant-cd-api/src/main/java/ai/vespa/hosted/cd/StagingTest.java2
-rw-r--r--tenant-cd-api/src/main/java/ai/vespa/hosted/cd/SystemTest.java2
-rw-r--r--tenant-cd-api/src/main/java/ai/vespa/hosted/cd/internal/TestRuntimeProvider.java2
-rw-r--r--tenant-cd-api/src/main/java/ai/vespa/hosted/cd/internal/package-info.java2
-rw-r--r--tenant-cd-api/src/main/java/ai/vespa/hosted/cd/package-info.java2
-rw-r--r--tenant-cd-api/src/main/java/org/junit/jupiter/api/condition/package-info.java2
-rw-r--r--tenant-cd-api/src/main/java/org/junit/jupiter/api/extension/package-info.java2
-rw-r--r--tenant-cd-api/src/main/java/org/junit/jupiter/api/function/package-info.java2
-rw-r--r--tenant-cd-api/src/main/java/org/junit/jupiter/api/io/package-info.java2
-rw-r--r--tenant-cd-api/src/main/java/org/junit/jupiter/api/package-info.java2
-rw-r--r--tenant-cd-api/src/main/java/org/junit/jupiter/api/parallel/package-info.java2
-rw-r--r--tenant-cd-commons/README.md2
-rw-r--r--tenant-cd-commons/pom.xml2
-rw-r--r--tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/HttpDeployment.java2
-rw-r--r--tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/HttpEndpoint.java2
-rw-r--r--testutil/pom.xml2
-rw-r--r--testutil/src/main/java/com/yahoo/test/LinePatternMatcher.java2
-rw-r--r--testutil/src/main/java/com/yahoo/test/ManualClock.java9
-rw-r--r--testutil/src/main/java/com/yahoo/test/Matchers.java2
-rw-r--r--testutil/src/main/java/com/yahoo/test/OrderTester.java2
-rw-r--r--testutil/src/main/java/com/yahoo/test/PartialOrderTester.java2
-rw-r--r--testutil/src/main/java/com/yahoo/test/TotalOrderTester.java2
-rw-r--r--testutil/src/main/java/com/yahoo/test/json/JsonTestHelper.java2
-rw-r--r--testutil/src/main/java/com/yahoo/vespa/test/file/TestFileSystem.java7
-rw-r--r--testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java161
-rw-r--r--testutil/src/test/java/com/yahoo/test/MatchersTestCase.java2
-rw-r--r--testutil/src/test/java/com/yahoo/test/OrderTesterTest.java2
-rw-r--r--valgrind-suppressions.txt28
-rw-r--r--vbench/CMakeLists.txt2
-rw-r--r--vbench/src/apps/dumpurl/CMakeLists.txt2
-rw-r--r--vbench/src/apps/dumpurl/dumpurl.cpp2
-rw-r--r--vbench/src/apps/vbench/CMakeLists.txt2
-rwxr-xr-xvbench/src/apps/vbench/run.sh2
-rw-r--r--vbench/src/apps/vbench/vbench.cpp2
-rw-r--r--vbench/src/tests/app_dumpurl/CMakeLists.txt2
-rw-r--r--vbench/src/tests/app_dumpurl/app_dumpurl_test.cpp2
-rw-r--r--vbench/src/tests/app_vbench/CMakeLists.txt2
-rw-r--r--vbench/src/tests/app_vbench/app_vbench_test.cpp2
-rw-r--r--vbench/src/tests/benchmark_headers/CMakeLists.txt2
-rw-r--r--vbench/src/tests/benchmark_headers/benchmark_headers_test.cpp2
-rw-r--r--vbench/src/tests/dispatcher/CMakeLists.txt2
-rw-r--r--vbench/src/tests/dispatcher/dispatcher_test.cpp2
-rw-r--r--vbench/src/tests/dropped_tagger/CMakeLists.txt2
-rw-r--r--vbench/src/tests/dropped_tagger/dropped_tagger_test.cpp2
-rw-r--r--vbench/src/tests/handler_thread/CMakeLists.txt2
-rw-r--r--vbench/src/tests/handler_thread/handler_thread_test.cpp2
-rw-r--r--vbench/src/tests/hex_number/CMakeLists.txt2
-rw-r--r--vbench/src/tests/hex_number/hex_number_test.cpp2
-rw-r--r--vbench/src/tests/http_client/CMakeLists.txt2
-rw-r--r--vbench/src/tests/http_client/http_client_test.cpp2
-rw-r--r--vbench/src/tests/http_connection/CMakeLists.txt2
-rw-r--r--vbench/src/tests/http_connection/http_connection_test.cpp2
-rw-r--r--vbench/src/tests/http_connection_pool/CMakeLists.txt2
-rw-r--r--vbench/src/tests/http_connection_pool/http_connection_pool_test.cpp2
-rw-r--r--vbench/src/tests/input_file_reader/CMakeLists.txt2
-rw-r--r--vbench/src/tests/input_file_reader/input_file_reader_test.cpp2
-rw-r--r--vbench/src/tests/latency_analyzer/CMakeLists.txt2
-rw-r--r--vbench/src/tests/latency_analyzer/latency_analyzer_test.cpp2
-rw-r--r--vbench/src/tests/line_reader/CMakeLists.txt2
-rw-r--r--vbench/src/tests/line_reader/line_reader_test.cpp2
-rw-r--r--vbench/src/tests/qps_analyzer/CMakeLists.txt2
-rw-r--r--vbench/src/tests/qps_analyzer/qps_analyzer_test.cpp2
-rw-r--r--vbench/src/tests/qps_tagger/CMakeLists.txt2
-rw-r--r--vbench/src/tests/qps_tagger/qps_tagger_test.cpp2
-rw-r--r--vbench/src/tests/request_dumper/CMakeLists.txt2
-rw-r--r--vbench/src/tests/request_dumper/request_dumper_test.cpp2
-rw-r--r--vbench/src/tests/request_generator/CMakeLists.txt2
-rw-r--r--vbench/src/tests/request_generator/request_generator_test.cpp2
-rw-r--r--vbench/src/tests/request_sink/CMakeLists.txt2
-rw-r--r--vbench/src/tests/request_sink/request_sink_test.cpp2
-rw-r--r--vbench/src/tests/server_spec/CMakeLists.txt2
-rw-r--r--vbench/src/tests/server_spec/server_spec_test.cpp2
-rw-r--r--vbench/src/tests/server_tagger/CMakeLists.txt2
-rw-r--r--vbench/src/tests/server_tagger/server_tagger_test.cpp2
-rw-r--r--vbench/src/tests/socket/CMakeLists.txt2
-rw-r--r--vbench/src/tests/socket/socket_test.cpp2
-rw-r--r--vbench/src/tests/taint/CMakeLists.txt2
-rw-r--r--vbench/src/tests/taint/taint_test.cpp2
-rw-r--r--vbench/src/tests/time_queue/CMakeLists.txt2
-rw-r--r--vbench/src/tests/time_queue/time_queue_test.cpp2
-rw-r--r--vbench/src/tests/timer/CMakeLists.txt2
-rw-r--r--vbench/src/tests/timer/timer_test.cpp2
-rw-r--r--vbench/src/vbench/CMakeLists.txt2
-rw-r--r--vbench/src/vbench/core/CMakeLists.txt2
-rw-r--r--vbench/src/vbench/core/Doxyfile2
-rw-r--r--vbench/src/vbench/core/closeable.cpp2
-rw-r--r--vbench/src/vbench/core/closeable.h2
-rw-r--r--vbench/src/vbench/core/dispatcher.cpp2
-rw-r--r--vbench/src/vbench/core/dispatcher.h2
-rw-r--r--vbench/src/vbench/core/dispatcher.hpp2
-rw-r--r--vbench/src/vbench/core/handler.cpp2
-rw-r--r--vbench/src/vbench/core/handler.h2
-rw-r--r--vbench/src/vbench/core/handler_thread.cpp2
-rw-r--r--vbench/src/vbench/core/handler_thread.h2
-rw-r--r--vbench/src/vbench/core/handler_thread.hpp2
-rw-r--r--vbench/src/vbench/core/input_file_reader.cpp2
-rw-r--r--vbench/src/vbench/core/input_file_reader.h2
-rw-r--r--vbench/src/vbench/core/line_reader.cpp2
-rw-r--r--vbench/src/vbench/core/line_reader.h2
-rw-r--r--vbench/src/vbench/core/provider.cpp2
-rw-r--r--vbench/src/vbench/core/provider.h2
-rw-r--r--vbench/src/vbench/core/socket.cpp2
-rw-r--r--vbench/src/vbench/core/socket.h2
-rw-r--r--vbench/src/vbench/core/stream.cpp2
-rw-r--r--vbench/src/vbench/core/stream.h2
-rw-r--r--vbench/src/vbench/core/string.cpp2
-rw-r--r--vbench/src/vbench/core/string.h2
-rw-r--r--vbench/src/vbench/core/taint.cpp2
-rw-r--r--vbench/src/vbench/core/taint.h2
-rw-r--r--vbench/src/vbench/core/taintable.cpp2
-rw-r--r--vbench/src/vbench/core/taintable.h2
-rw-r--r--vbench/src/vbench/core/time_queue.cpp2
-rw-r--r--vbench/src/vbench/core/time_queue.h2
-rw-r--r--vbench/src/vbench/core/time_queue.hpp2
-rw-r--r--vbench/src/vbench/core/timer.cpp2
-rw-r--r--vbench/src/vbench/core/timer.h2
-rw-r--r--vbench/src/vbench/http/CMakeLists.txt2
-rw-r--r--vbench/src/vbench/http/benchmark_headers.cpp2
-rw-r--r--vbench/src/vbench/http/benchmark_headers.h2
-rw-r--r--vbench/src/vbench/http/hex_number.cpp2
-rw-r--r--vbench/src/vbench/http/hex_number.h2
-rw-r--r--vbench/src/vbench/http/http_client.cpp2
-rw-r--r--vbench/src/vbench/http/http_client.h2
-rw-r--r--vbench/src/vbench/http/http_connection.cpp2
-rw-r--r--vbench/src/vbench/http/http_connection.h2
-rw-r--r--vbench/src/vbench/http/http_connection_pool.cpp2
-rw-r--r--vbench/src/vbench/http/http_connection_pool.h2
-rw-r--r--vbench/src/vbench/http/http_result_handler.cpp2
-rw-r--r--vbench/src/vbench/http/http_result_handler.h2
-rw-r--r--vbench/src/vbench/http/server_spec.cpp2
-rw-r--r--vbench/src/vbench/http/server_spec.h2
-rw-r--r--vbench/src/vbench/test/CMakeLists.txt2
-rw-r--r--vbench/src/vbench/test/all.h2
-rw-r--r--vbench/src/vbench/test/create-all-h.sh4
-rw-r--r--vbench/src/vbench/test/request_receptor.cpp2
-rw-r--r--vbench/src/vbench/test/request_receptor.h2
-rw-r--r--vbench/src/vbench/test/simple_http_result_handler.cpp2
-rw-r--r--vbench/src/vbench/test/simple_http_result_handler.h2
-rw-r--r--vbench/src/vbench/vbench/CMakeLists.txt2
-rw-r--r--vbench/src/vbench/vbench/analyzer.cpp2
-rw-r--r--vbench/src/vbench/vbench/analyzer.h2
-rw-r--r--vbench/src/vbench/vbench/dropped_tagger.cpp2
-rw-r--r--vbench/src/vbench/vbench/dropped_tagger.h2
-rw-r--r--vbench/src/vbench/vbench/generator.cpp2
-rw-r--r--vbench/src/vbench/vbench/generator.h2
-rw-r--r--vbench/src/vbench/vbench/ignore_before.cpp2
-rw-r--r--vbench/src/vbench/vbench/ignore_before.h2
-rw-r--r--vbench/src/vbench/vbench/latency_analyzer.cpp2
-rw-r--r--vbench/src/vbench/vbench/latency_analyzer.h2
-rw-r--r--vbench/src/vbench/vbench/native_factory.cpp2
-rw-r--r--vbench/src/vbench/vbench/native_factory.h2
-rw-r--r--vbench/src/vbench/vbench/qps_analyzer.cpp2
-rw-r--r--vbench/src/vbench/vbench/qps_analyzer.h2
-rw-r--r--vbench/src/vbench/vbench/qps_tagger.cpp2
-rw-r--r--vbench/src/vbench/vbench/qps_tagger.h2
-rw-r--r--vbench/src/vbench/vbench/request.cpp2
-rw-r--r--vbench/src/vbench/vbench/request.h2
-rw-r--r--vbench/src/vbench/vbench/request_dumper.cpp2
-rw-r--r--vbench/src/vbench/vbench/request_dumper.h2
-rw-r--r--vbench/src/vbench/vbench/request_generator.cpp2
-rw-r--r--vbench/src/vbench/vbench/request_generator.h2
-rw-r--r--vbench/src/vbench/vbench/request_scheduler.cpp2
-rw-r--r--vbench/src/vbench/vbench/request_scheduler.h2
-rw-r--r--vbench/src/vbench/vbench/request_sink.cpp2
-rw-r--r--vbench/src/vbench/vbench/request_sink.h2
-rw-r--r--vbench/src/vbench/vbench/server_tagger.cpp2
-rw-r--r--vbench/src/vbench/vbench/server_tagger.h2
-rw-r--r--vbench/src/vbench/vbench/tagger.cpp2
-rw-r--r--vbench/src/vbench/vbench/tagger.h2
-rw-r--r--vbench/src/vbench/vbench/vbench.cpp2
-rw-r--r--vbench/src/vbench/vbench/vbench.h2
-rw-r--r--vbench/src/vbench/vbench/worker.cpp2
-rw-r--r--vbench/src/vbench/vbench/worker.h2
-rw-r--r--vdslib/CMakeLists.txt2
-rw-r--r--vdslib/pom.xml2
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/BucketDistribution.java2
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/DocumentSummary.java2
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/MetaEntry.java2
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/SearchResult.java2
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/VisitorStatistics.java2
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/distribution/ConfiguredNode.java2
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/distribution/Distribution.java2
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/distribution/Group.java2
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/distribution/GroupVisitor.java2
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/distribution/RandomGen.java2
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/distribution/package-info.java2
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/package-info.java2
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/state/ClusterState.java310
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/state/Diff.java2
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/state/Node.java2
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/state/NodeState.java3
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/state/NodeType.java2
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/state/State.java2
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/state/package-info.java2
-rw-r--r--vdslib/src/test/java/com/yahoo/vdslib/BucketDistributionTestCase.java2
-rw-r--r--vdslib/src/test/java/com/yahoo/vdslib/SearchResultTestCase.java2
-rw-r--r--vdslib/src/test/java/com/yahoo/vdslib/distribution/CrossPlatformTestFactory.java2
-rw-r--r--vdslib/src/test/java/com/yahoo/vdslib/distribution/DistributionTestCase.java2
-rw-r--r--vdslib/src/test/java/com/yahoo/vdslib/distribution/DistributionTestFactory.java2
-rw-r--r--vdslib/src/test/java/com/yahoo/vdslib/distribution/GroupTestCase.java2
-rw-r--r--vdslib/src/test/java/com/yahoo/vdslib/state/ClusterStateTestCase.java14
-rw-r--r--vdslib/src/test/java/com/yahoo/vdslib/state/NodeStateTestCase.java2
-rw-r--r--vdslib/src/test/java/com/yahoo/vdslib/state/NodeTest.java2
-rw-r--r--vdslib/src/tests/CMakeLists.txt2
-rw-r--r--vdslib/src/tests/container/CMakeLists.txt2
-rw-r--r--vdslib/src/tests/container/documentsummarytest.cpp2
-rw-r--r--vdslib/src/tests/container/parameterstest.cpp2
-rw-r--r--vdslib/src/tests/container/searchresulttest.cpp2
-rw-r--r--vdslib/src/tests/distribution/CMakeLists.txt2
-rw-r--r--vdslib/src/tests/distribution/distributiontest.cpp2
-rw-r--r--vdslib/src/tests/distribution/grouptest.cpp2
-rw-r--r--vdslib/src/tests/distribution/idealnodecalculatorimpltest.cpp2
-rw-r--r--vdslib/src/tests/state/CMakeLists.txt2
-rw-r--r--vdslib/src/tests/state/cluster_state_bundle_test.cpp2
-rw-r--r--vdslib/src/tests/state/clusterstatetest.cpp2
-rwxr-xr-xvdslib/src/tests/state/generate_plots.sh2
-rw-r--r--vdslib/src/tests/state/grouptest.cpp2
-rw-r--r--vdslib/src/tests/state/nodestatetest.cpp2
-rw-r--r--vdslib/src/vespa/vdslib/CMakeLists.txt2
-rw-r--r--vdslib/src/vespa/vdslib/container/CMakeLists.txt2
-rw-r--r--vdslib/src/vespa/vdslib/container/documentsummary.cpp2
-rw-r--r--vdslib/src/vespa/vdslib/container/documentsummary.h2
-rw-r--r--vdslib/src/vespa/vdslib/container/dummycppfile.cpp2
-rw-r--r--vdslib/src/vespa/vdslib/container/parameters.cpp2
-rw-r--r--vdslib/src/vespa/vdslib/container/parameters.h2
-rw-r--r--vdslib/src/vespa/vdslib/container/parameters.hpp2
-rw-r--r--vdslib/src/vespa/vdslib/container/searchresult.cpp2
-rw-r--r--vdslib/src/vespa/vdslib/container/searchresult.h2
-rw-r--r--vdslib/src/vespa/vdslib/container/visitorstatistics.cpp2
-rw-r--r--vdslib/src/vespa/vdslib/container/visitorstatistics.h2
-rw-r--r--vdslib/src/vespa/vdslib/defs.h2
-rw-r--r--vdslib/src/vespa/vdslib/distribution/CMakeLists.txt2
-rw-r--r--vdslib/src/vespa/vdslib/distribution/distribution.cpp2
-rw-r--r--vdslib/src/vespa/vdslib/distribution/distribution.h2
-rw-r--r--vdslib/src/vespa/vdslib/distribution/distribution_config_util.cpp2
-rw-r--r--vdslib/src/vespa/vdslib/distribution/distribution_config_util.h2
-rw-r--r--vdslib/src/vespa/vdslib/distribution/group.cpp2
-rw-r--r--vdslib/src/vespa/vdslib/distribution/group.h2
-rw-r--r--vdslib/src/vespa/vdslib/distribution/idealnodecalculator.h2
-rw-r--r--vdslib/src/vespa/vdslib/distribution/idealnodecalculatorimpl.cpp2
-rw-r--r--vdslib/src/vespa/vdslib/distribution/idealnodecalculatorimpl.h2
-rw-r--r--vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.cpp2
-rw-r--r--vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.h2
-rw-r--r--vdslib/src/vespa/vdslib/state/CMakeLists.txt2
-rw-r--r--vdslib/src/vespa/vdslib/state/cluster_state_bundle.cpp2
-rw-r--r--vdslib/src/vespa/vdslib/state/cluster_state_bundle.h2
-rw-r--r--vdslib/src/vespa/vdslib/state/clusterstate.cpp2
-rw-r--r--vdslib/src/vespa/vdslib/state/clusterstate.h2
-rw-r--r--vdslib/src/vespa/vdslib/state/node.cpp2
-rw-r--r--vdslib/src/vespa/vdslib/state/node.h2
-rw-r--r--vdslib/src/vespa/vdslib/state/nodestate.cpp2
-rw-r--r--vdslib/src/vespa/vdslib/state/nodestate.h2
-rw-r--r--vdslib/src/vespa/vdslib/state/nodetype.cpp2
-rw-r--r--vdslib/src/vespa/vdslib/state/nodetype.h2
-rw-r--r--vdslib/src/vespa/vdslib/state/random.h2
-rw-r--r--vdslib/src/vespa/vdslib/state/state.cpp2
-rw-r--r--vdslib/src/vespa/vdslib/state/state.h2
-rw-r--r--vdstestlib/CMakeLists.txt2
-rw-r--r--vdstestlib/src/tests/dirconfig/CMakeLists.txt2
-rw-r--r--vdstestlib/src/tests/dirconfig/dirconfigtest.cpp2
-rw-r--r--vdstestlib/src/vespa/vdstestlib/CMakeLists.txt2
-rw-r--r--vdstestlib/src/vespa/vdstestlib/config/CMakeLists.txt2
-rw-r--r--vdstestlib/src/vespa/vdstestlib/config/dirconfig.cpp2
-rw-r--r--vdstestlib/src/vespa/vdstestlib/config/dirconfig.h2
-rw-r--r--vdstestlib/src/vespa/vdstestlib/config/dirconfig.hpp2
-rw-r--r--vespa-application-maven-plugin/README.md2
-rw-r--r--vespa-application-maven-plugin/pom.xml2
-rw-r--r--vespa-application-maven-plugin/src/main/java/com/yahoo/container/plugin/mojo/ApplicationMojo.java2
-rw-r--r--vespa-application-maven-plugin/src/main/java/com/yahoo/container/plugin/mojo/Compression.java2
-rw-r--r--vespa-athenz/CMakeLists.txt2
-rw-r--r--vespa-athenz/README.md2
-rw-r--r--vespa-athenz/pom.xml2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzAssertion.java80
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzDomain.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzGroup.java19
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzIdentity.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzPolicy.java42
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzPrincipal.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzResourceGroup.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzResourceName.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzRole.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzRoleCertificate.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzService.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzUser.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/NToken.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/OktaAccessToken.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/ZToken.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/package-info.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/aws/AwsCredentials.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/aws/package-info.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/ErrorHandler.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/ClientBase.java4
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/bindings/ErrorResponseEntity.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/serializers/Pkcs10CsrSerializer.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/serializers/X509CertificateDeserializer.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/serializers/X509CertificateListDeserializer.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/serializers/package-info.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/package-info.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/DefaultZmsClient.java164
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/RoleAction.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/ZmsClient.java31
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/ZmsClientException.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/AccessResponseEntity.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/AssertionEntity.java8
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/DomainListResponseEntity.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/MembershipEntity.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/PolicyEntity.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/ProviderResourceGroupRolesRequestEntity.java56
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/ResourceGroupRolesEntity.java70
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/ResponseListEntity.java19
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/RoleEntity.java10
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/ServiceEntity.java25
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/ServiceListResponseEntity.java21
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/TenancyRequestEntity.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/package-info.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/DefaultZtsClient.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/Identity.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/InstanceIdentity.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/ZtsClient.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/ZtsClientException.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/IdentityRefreshRequestEntity.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/IdentityResponseEntity.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/InstanceIdentityCredentials.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/InstanceRefreshInformation.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/InstanceRegisterInformation.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/RoleCertificateRequestEntity.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/RoleCertificateResponseEntity.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/RoleTokenResponseEntity.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/TenantDomainsResponseEntity.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/package-info.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/utils/IdentityCsrGenerator.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/utils/RoleCsrGenerator.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/utils/package-info.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/ServiceIdentityProvider.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/ServiceIdentitySslSocketFactory.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/SiaIdentityProvider.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/package-info.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/EntityBindingsMapper.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/IdentityDocumentClient.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/IdentityType.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/SignedIdentityDocument.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/VespaUniqueInstanceId.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/bindings/SignedIdentityDocumentEntity.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/bindings/package-info.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/package-info.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzCredentials.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzCredentialsService.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/CsrGenerator.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/DefaultIdentityDocumentClient.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/IdentityDocumentSigner.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/package-info.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/tls/AthenzIdentityVerifier.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/tls/AthenzX509CertificateUtils.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/tls/package-info.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/utils/AthenzIdentities.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/utils/SiaUtils.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/utils/package-info.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/zpe/AuthorizationResult.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/zpe/DefaultZpe.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/zpe/Zpe.java2
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/zpe/package-info.java2
-rw-r--r--vespa-athenz/src/main/resources/configdefinitions/vespa.athenz.identity.sia-provider.def2
-rw-r--r--vespa-athenz/src/test/java/com/yahoo/vespa/athenz/api/AthenzDomainTest.java2
-rw-r--r--vespa-athenz/src/test/java/com/yahoo/vespa/athenz/api/AthenzResourceNameTest.java2
-rw-r--r--vespa-athenz/src/test/java/com/yahoo/vespa/athenz/aws/AwsCredentialsTest.java2
-rw-r--r--vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identity/SiaIdentityProviderTest.java2
-rw-r--r--vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identityprovider/api/VespaUniqueInstanceIdTest.java2
-rw-r--r--vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzIdentityProviderImplTest.java2
-rw-r--r--vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identityprovider/client/IdentityDocumentSignerTest.java2
-rw-r--r--vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identityprovider/client/InstanceCsrGeneratorTest.java2
-rw-r--r--vespa-athenz/src/test/java/com/yahoo/vespa/athenz/utils/AthenzIdentitiesTest.java2
-rw-r--r--vespa-athenz/src/test/java/com/yahoo/vespa/athenz/utils/AthenzIdentityVerifierTest.java2
-rw-r--r--vespa-athenz/src/test/java/com/yahoo/vespa/athenz/utils/SiaUtilsTest.java2
-rw-r--r--vespa-documentgen-plugin/etc/complex/book.sd2
-rw-r--r--vespa-documentgen-plugin/etc/complex/common.sd2
-rw-r--r--vespa-documentgen-plugin/etc/complex/common2.sd2
-rw-r--r--vespa-documentgen-plugin/etc/complex/music2.sd2
-rw-r--r--vespa-documentgen-plugin/etc/complex/music3.sd2
-rw-r--r--vespa-documentgen-plugin/etc/complex/video.sd2
-rw-r--r--vespa-documentgen-plugin/etc/localapp/book.sd2
-rw-r--r--vespa-documentgen-plugin/etc/localapp/common.sd2
-rw-r--r--vespa-documentgen-plugin/etc/localapp/music.sd2
-rw-r--r--vespa-documentgen-plugin/etc/localapp/video.sd2
-rw-r--r--vespa-documentgen-plugin/etc/music/music.sd2
-rw-r--r--vespa-documentgen-plugin/pom.xml2
-rw-r--r--vespa-documentgen-plugin/src/main/java/com/yahoo/vespa/Annotation.java2
-rw-r--r--vespa-documentgen-plugin/src/main/java/com/yahoo/vespa/DocumentGenMojo.java2
-rw-r--r--vespa-documentgen-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml2
-rw-r--r--vespa-documentgen-plugin/src/test/java/com/yahoo/vespa/DocumentGenTest.java3
-rw-r--r--vespa-feed-client-cli/CMakeLists.txt2
-rw-r--r--vespa-feed-client-cli/pom.xml3
-rw-r--r--vespa-feed-client-cli/src/main/java/ai/vespa/feed/client/CliArguments.java2
-rw-r--r--vespa-feed-client-cli/src/main/java/ai/vespa/feed/client/CliClient.java74
-rw-r--r--vespa-feed-client-cli/src/main/javadoc/README1
-rwxr-xr-xvespa-feed-client-cli/src/main/sh/vespa-feed-client-standalone.sh6
-rwxr-xr-xvespa-feed-client-cli/src/main/sh/vespa-feed-client.sh2
-rw-r--r--vespa-feed-client-cli/src/maven/create-zip.xml2
-rw-r--r--vespa-feed-client-cli/src/test/java/ai/vespa/feed/client/CliArgumentsTest.java2
-rw-r--r--vespa-feed-client/CMakeLists.txt2
-rw-r--r--vespa-feed-client/abi-spec.json6
-rw-r--r--vespa-feed-client/pom.xml2
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/ApacheCluster.java10
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/BenchmarkingCluster.java13
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/Cluster.java2
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/DocumentId.java2
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/DryrunCluster.java2
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/DynamicThrottler.java2
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/FeedClient.java20
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/FeedClientBuilder.java4
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/FeedException.java2
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/GracePeriodCircuitBreaker.java27
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpFeedClient.java2
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpRequest.java2
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpRequestStrategy.java10
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpResponse.java2
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/JsonFeeder.java2
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/OperationParameters.java2
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/OperationParseException.java2
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/OperationStats.java15
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/RequestStrategy.java2
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/Result.java2
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/ResultException.java2
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/ResultParseException.java2
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/SslContextBuilder.java2
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/StaticThrottler.java2
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/Throttler.java2
-rw-r--r--vespa-feed-client/src/main/java/ai/vespa/feed/client/package-info.java2
-rwxr-xr-xvespa-feed-client/src/main/sh/vespa-version-generator.sh2
-rw-r--r--vespa-feed-client/src/test/java/ai/vespa/feed/client/GracePeriodCircuitBreakerTest.java7
-rw-r--r--vespa-feed-client/src/test/java/ai/vespa/feed/client/HttpFeedClientTest.java2
-rw-r--r--vespa-feed-client/src/test/java/ai/vespa/feed/client/HttpRequestStrategyTest.java2
-rw-r--r--vespa-feed-client/src/test/java/ai/vespa/feed/client/JsonFeederTest.java2
-rw-r--r--vespa-feed-client/src/test/java/ai/vespa/feed/client/SslContextBuilderTest.java2
-rw-r--r--vespa-feed-client/src/test/java/ai/vespa/feed/client/examples/JsonFileFeederExample.java2
-rw-r--r--vespa-feed-client/src/test/java/ai/vespa/feed/client/examples/JsonStreamFeederExample.java2
-rw-r--r--vespa-feed-client/src/test/java/ai/vespa/feed/client/examples/SimpleExample.java2
-rw-r--r--vespa-hadoop/pom.xml2
-rw-r--r--vespa-hadoop/src/main/java/ai/vespa/feed/client/DryrunResult.java2
-rw-r--r--vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/LegacyVespaRecordWriter.java2
-rw-r--r--vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaOutputCommitter.java2
-rw-r--r--vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaOutputFormat.java2
-rw-r--r--vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaRecordWriter.java2
-rw-r--r--vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaSimpleJsonInputFormat.java2
-rw-r--r--vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/package-info.java2
-rw-r--r--vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/TupleTools.java2
-rw-r--r--vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/VespaConfiguration.java2
-rw-r--r--vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/VespaCounters.java2
-rw-r--r--vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/VespaHttpClient.java2
-rw-r--r--vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/VespaQuerySchema.java2
-rw-r--r--vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/package-info.java2
-rw-r--r--vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperation.java2
-rw-r--r--vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaQuery.java2
-rw-r--r--vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaSimpleJsonLoader.java2
-rw-r--r--vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaStorage.java2
-rw-r--r--vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/package-info.java2
-rw-r--r--vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/MapReduceTest.java2
-rw-r--r--vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperationTest.java2
-rw-r--r--vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaQueryTest.java2
-rw-r--r--vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaStorageTest.java2
-rw-r--r--vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/util/MockQueryHandler.java2
-rw-r--r--vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/util/TupleToolsTest.java2
-rw-r--r--vespa-hadoop/src/test/pig/feed_create_operations.pig2
-rw-r--r--vespa-hadoop/src/test/pig/feed_create_operations_short_form.pig2
-rw-r--r--vespa-hadoop/src/test/pig/feed_multiline_operations.pig2
-rw-r--r--vespa-hadoop/src/test/pig/feed_operations.pig2
-rw-r--r--vespa-hadoop/src/test/pig/feed_operations_with_json_loader.pig2
-rw-r--r--vespa-hadoop/src/test/pig/feed_operations_xml.pig2
-rw-r--r--vespa-hadoop/src/test/pig/feed_visit_data.pig2
-rw-r--r--vespa-hadoop/src/test/pig/query.pig2
-rw-r--r--vespa-hadoop/src/test/pig/query_alt_root.pig2
-rw-r--r--vespa-hadoop/src/test/resources/operations_data.xml2
-rw-r--r--vespa-http-client/CMakeLists.txt2
-rw-r--r--vespa-http-client/pom.xml23
-rwxr-xr-xvespa-http-client/src/main/bin/versiontagger.sh2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedClient.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedClientFactory.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedConnectException.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedEndpointException.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedProtocolException.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/Result.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/Session.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/SessionFactory.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/SimpleLoggerResultCallback.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/Cluster.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/ConnectionParams.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/Endpoint.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/FeedParams.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/SessionParams.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/package-info.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/Document.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/Encoder.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/EndpointResult.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/ErrorCode.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/Exceptions.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/Headers.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/JsonReader.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/OperationStatus.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/ServerResponseException.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/ThrottlePolicy.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/XmlFeedReader.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/api/FeedClientImpl.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/api/MultiClusterSessionOutputStream.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/api/SessionImpl.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ApacheGatewayConnection.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ApacheGatewayConnectionFactory.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ByteBufferInputStream.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ClusterConnection.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/DocumentQueue.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/DryRunGatewayConnection.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/DryRunGatewayConnectionFactory.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/EndpointIOException.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/EndpointResultQueue.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/GatewayConnection.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/GatewayConnectionFactory.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/GatewayThrottler.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/IOThread.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/ConcurrentDocumentOperationBlocker.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/DocumentSendInfo.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/EndPointResultFactory.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/IncompleteResultsThrottler.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationProcessor.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationStats.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/package-info.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/package-info.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/CommandLineArguments.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/FormatInputStream.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/Runner.java2
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/package-info.java2
-rw-r--r--vespa-http-client/src/test/java/ExampleUsageFeedClientTest.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/FeedClientTest.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/ManualClock.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/Server.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/SimpleLoggerResultCallbackTest.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/TestDocument.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/TestUtils.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/config/ClusterTest.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/config/ConnectionParamsTest.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/config/EndpointTest.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/config/FeedParamsTest.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/DocumentTest.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/EncoderTestCase.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/OperationProcessorTester.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/ThrottlePolicyTest.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/XmlFeedReaderTest.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/api/FeedClientImplTest.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/ApacheGatewayConnectionTest.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/ByteBufferInputStreamTest.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/CloseableQTestCase.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/EndpointResultQueueTest.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/GatewayThrottlerTest.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/IOThreadTest.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/operationProcessor/ConcurrentDocumentOperationBlockerTest.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/operationProcessor/IncompleteResultsThrottlerTest.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationProcessorTest.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/handlers/V3MockParsingRequestHandler.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/runner/CommandLineArgumentsTest.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/runner/FormatInputStreamTest.java2
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/runner/JsonReaderTest.java2
-rw-r--r--vespa-http-client/src/test/resources/vespacorpfeed-prod-sample.xml2
-rw-r--r--vespa-http-client/src/test/resources/xml-challenge.xml2
-rw-r--r--vespa-http-client/src/test/resources/xml-challenge2.xml2
-rw-r--r--vespa-http-client/src/test/resources/xml-challenge3.xml2
-rw-r--r--vespa-maven-plugin/pom.xml2
-rw-r--r--vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/AbstractVespaMojo.java21
-rw-r--r--vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/GenerateTestDescriptorMojo.java2
-rw-r--r--vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/TestAnnotationAnalyzer.java2
-rw-r--r--vespa-maven-plugin/src/test/resources/effective-services/dev.xml2
-rw-r--r--vespa-maven-plugin/src/test/resources/effective-services/prod_us-east-3.xml2
-rw-r--r--vespa-maven-plugin/src/test/resources/effective-services/prod_us-west-1.xml2
-rw-r--r--vespa-maven-plugin/src/test/resources/effective-services/services.xml2
-rw-r--r--vespa-maven-plugin/src/test/resources/effective-services/test_us-east-1.xml2
-rw-r--r--vespa-osgi-testrunner/CMakeLists.txt2
-rw-r--r--vespa-osgi-testrunner/pom.xml2
-rw-r--r--vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/JunitRunner.java2
-rw-r--r--vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/TestReport.java2
-rw-r--r--vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/TestRunner.java2
-rw-r--r--vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/TestRunnerHandler.java2
-rw-r--r--vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/VespaJunitLogListener.java2
-rw-r--r--vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/legacy/LegacyTestRunner.java2
-rw-r--r--vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/legacy/TestProfile.java2
-rw-r--r--vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/legacy/package-info.java2
-rw-r--r--vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/package-info.java2
-rw-r--r--vespa-osgi-testrunner/src/main/resources/configdefinitions/junit-test-runner.def2
-rw-r--r--vespa-osgi-testrunner/src/test/java/com/yahoo/vespa/testrunner/TestRunnerHandlerTest.java2
-rw-r--r--vespa_feed_perf/CMakeLists.txt2
-rw-r--r--vespa_feed_perf/pom.xml2
-rw-r--r--vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/FeederParams.java2
-rw-r--r--vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java2
-rwxr-xr-xvespa_feed_perf/src/main/sh/vespa-feed-perf2
-rw-r--r--vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/FeederParamsTest.java2
-rw-r--r--vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/SimpleFeederTest.java2
-rw-r--r--vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/SimpleServer.java2
-rw-r--r--vespa_jersey2/CMakeLists.txt2
-rw-r--r--vespa_jersey2/pom.xml31
-rw-r--r--vespabase/CMakeLists.txt2
-rw-r--r--vespabase/conf/default-env.txt.in2
-rw-r--r--vespabase/src/Defaults.pm2
-rwxr-xr-xvespabase/src/common-env.sh33
-rwxr-xr-xvespabase/src/rhel-prestart.sh2
-rwxr-xr-xvespabase/src/start-cbinaries.sh20
-rwxr-xr-xvespabase/src/start-tool.sh2
-rwxr-xr-xvespabase/src/start-vespa-base.sh2
-rwxr-xr-xvespabase/src/stop-vespa-base.sh2
-rw-r--r--vespabase/src/vespa-configserver.service.in2
-rwxr-xr-xvespabase/src/vespa-start-configserver.sh2
-rwxr-xr-xvespabase/src/vespa-start-services.sh2
-rwxr-xr-xvespabase/src/vespa-stop-configserver.sh2
-rwxr-xr-xvespabase/src/vespa-stop-services.sh2
-rw-r--r--vespabase/src/vespa.service.in2
-rw-r--r--vespaclient-container-plugin/CMakeLists.txt2
-rw-r--r--vespaclient-container-plugin/pom.xml27
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/RestApi.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/package-info.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/documentapi/metrics/DocumentApiMetrics.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/documentapi/metrics/DocumentOperationStatus.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/documentapi/metrics/DocumentOperationType.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/ClientFeederV3.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/ClientState.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/DocumentOperationMessageV3.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/ErrorHttpResponse.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedHandler.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedHandlerV3.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReaderFactory.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReplyReader.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedResponse.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeederSettings.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/MetricNames.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/ReplyContext.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/StreamReaderV3.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/UnknownClientException.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/package-info.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/util/ByteLimitedInputStream.java2
-rw-r--r--vespaclient-container-plugin/src/main/resources/configdefinitions/document-operation-executor.def2
-rw-r--r--vespaclient-container-plugin/src/test/cfg/music.sd2
-rw-r--r--vespaclient-container-plugin/src/test/files/feedhandler/test10.xml2
-rw-r--r--vespaclient-container-plugin/src/test/files/feedhandler/test10b.xml2
-rw-r--r--vespaclient-container-plugin/src/test/files/feedhandler/test_bogus_docid.xml2
-rwxr-xr-xvespaclient-container-plugin/src/test/files/feedhandler/test_bogus_docid_first.xml2
-rwxr-xr-xvespaclient-container-plugin/src/test/files/feedhandler/test_bogus_xml.xml2
-rw-r--r--vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java2
-rw-r--r--vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/DummyMetric.java2
-rw-r--r--vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedHandlerCompressionTest.java2
-rw-r--r--vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedHandlerTest.java2
-rw-r--r--vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedHandlerV3Test.java2
-rw-r--r--vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedReaderFactoryTestCase.java2
-rw-r--r--vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/MetaStream.java2
-rw-r--r--vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/MockNetwork.java2
-rw-r--r--vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/MockReply.java2
-rw-r--r--vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/VersionsTestCase.java2
-rw-r--r--vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/util/ByteLimitedInputStreamTestCase.java2
-rw-r--r--vespaclient-container-plugin/src/test/java/com/yahoo/vespaxmlparser/MockFeedReaderFactory.java2
-rw-r--r--vespaclient-container-plugin/src/test/java/com/yahoo/vespaxmlparser/MockReader.java2
-rw-r--r--vespaclient-core/CMakeLists.txt2
-rw-r--r--vespaclient-core/pom.xml2
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/clientmetrics/ClientMetrics.java2
-rw-r--r--vespaclient-core/src/main/java/com/yahoo/clientmetrics/MessageTypeMetricSet.java2
-rw-r--r--vespaclient-core/src/main/java/com/yahoo/clientmetrics/RouteMetricSet.java2
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedapi/DummySessionFactory.java2
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedapi/FeedContext.java2
-rw-r--r--vespaclient-core/src/main/java/com/yahoo/feedapi/Feeder.java2
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedapi/FeederOptions.java2
-rw-r--r--vespaclient-core/src/main/java/com/yahoo/feedapi/JsonFeeder.java2
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedapi/MessageBusSessionFactory.java2
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedapi/MessageProcessor.java2
-rw-r--r--vespaclient-core/src/main/java/com/yahoo/feedapi/MessagePropertyProcessor.java2
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedapi/SendSession.java2
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedapi/SessionFactory.java2
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedapi/SharedSender.java2
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedapi/SimpleFeedAccess.java2
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedapi/SingleSender.java2
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedapi/VespaFeedSender.java2
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedapi/XMLFeeder.java2
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedhandler/FeedResponse.java2
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandler.java2
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerBase.java2
-rw-r--r--vespaclient-core/src/main/java/com/yahoo/feedhandler/package-info.java2
-rw-r--r--vespaclient-core/src/main/java/com/yahoo/vespaclient/ClusterDef.java2
-rw-r--r--vespaclient-core/src/main/java/com/yahoo/vespaclient/ClusterList.java2
-rw-r--r--vespaclient-core/src/main/resources/configdefinitions/vespaclient.config.feeder.def2
-rw-r--r--vespaclient-core/src/test/java/com/yahoo/feedapi/FeederOptionsTestCase.java2
-rw-r--r--vespaclient-java/CMakeLists.txt2
-rw-r--r--vespaclient-java/README.md2
-rw-r--r--vespaclient-java/pom.xml2
-rwxr-xr-xvespaclient-java/src/main/java/com/yahoo/dummyreceiver/DummyReceiver.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespafeeder/Arguments.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespafeeder/BenchmarkProgressPrinter.java2
-rwxr-xr-xvespaclient-java/src/main/java/com/yahoo/vespafeeder/FileRequest.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespafeeder/InputStreamRequest.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespafeeder/ProgressPrinter.java2
-rwxr-xr-xvespaclient-java/src/main/java/com/yahoo/vespafeeder/VespaFeeder.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespaget/ClientParameters.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespaget/CommandLineOptions.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespaget/DocumentAccessFactory.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespaget/DocumentRetriever.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespaget/DocumentRetrieverException.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespaget/Main.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespastat/BucketStatsException.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespastat/BucketStatsPrinter.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespastat/BucketStatsRetriever.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespastat/ClientParameters.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespastat/CommandLineOptions.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespastat/DocumentAccessFactory.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespastat/Main.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespasummarybenchmark/VespaSummaryBenchmark.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespavisit/StdOutVisitorHandler.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisit.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisitHandler.java2
-rw-r--r--vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisitTarget.java2
-rwxr-xr-xvespaclient-java/src/main/sh/vespa-destination.sh2
-rwxr-xr-xvespaclient-java/src/main/sh/vespa-document-statistics.sh2
-rwxr-xr-xvespaclient-java/src/main/sh/vespa-feeder.sh4
-rw-r--r--vespaclient-java/src/main/sh/vespa-get.sh2
-rwxr-xr-xvespaclient-java/src/main/sh/vespa-query-profile-dump-tool.sh2
-rw-r--r--vespaclient-java/src/main/sh/vespa-stat.sh2
-rwxr-xr-xvespaclient-java/src/main/sh/vespa-summary-benchmark.sh2
-rw-r--r--vespaclient-java/src/main/sh/vespa-visit-target.12
-rwxr-xr-xvespaclient-java/src/main/sh/vespa-visit-target.sh2
-rw-r--r--vespaclient-java/src/main/sh/vespa-visit.12
-rwxr-xr-xvespaclient-java/src/main/sh/vespa-visit.sh2
-rw-r--r--vespaclient-java/src/test/files/myfeed.xml2
-rw-r--r--vespaclient-java/src/test/java/com/yahoo/vespafeeder/BenchmarkProgressPrinterTest.java2
-rw-r--r--vespaclient-java/src/test/java/com/yahoo/vespafeeder/ProgressPrinterTest.java2
-rw-r--r--vespaclient-java/src/test/java/com/yahoo/vespafeeder/VespaFeederTestCase.java2
-rw-r--r--vespaclient-java/src/test/java/com/yahoo/vespaget/CommandLineOptionsTest.java2
-rw-r--r--vespaclient-java/src/test/java/com/yahoo/vespaget/DocumentRetrieverTest.java2
-rw-r--r--vespaclient-java/src/test/java/com/yahoo/vespastat/BucketStatsPrinterTest.java2
-rw-r--r--vespaclient-java/src/test/java/com/yahoo/vespastat/BucketStatsRetrieverTest.java2
-rw-r--r--vespaclient-java/src/test/java/com/yahoo/vespastat/CommandLineOptionsTest.java2
-rw-r--r--vespaclient-java/src/test/java/com/yahoo/vespavisit/StdOutVisitorHandlerTest.java2
-rw-r--r--vespaclient-java/src/test/java/com/yahoo/vespavisit/VdsVisitTargetTestCase.java2
-rw-r--r--vespaclient-java/src/test/java/com/yahoo/vespavisit/VdsVisitTestCase.java2
-rw-r--r--vespaclient/CMakeLists.txt2
-rwxr-xr-xvespaclient/bin/vdsgetsystemstate.sh2
-rw-r--r--vespaclient/man/vespastat.12
-rwxr-xr-xvespaclient/src/perl/bin/GetClusterState.pl2
-rwxr-xr-xvespaclient/src/perl/bin/GetNodeState.pl2
-rwxr-xr-xvespaclient/src/perl/bin/SetNodeState.pl2
-rw-r--r--vespaclient/src/perl/lib/Yahoo/Vespa/ArgParser.pm2
-rw-r--r--vespaclient/src/perl/lib/Yahoo/Vespa/Bin/GetClusterState.pm2
-rw-r--r--vespaclient/src/perl/lib/Yahoo/Vespa/Bin/GetNodeState.pm2
-rw-r--r--vespaclient/src/perl/lib/Yahoo/Vespa/Bin/SetNodeState.pm2
-rw-r--r--vespaclient/src/perl/lib/Yahoo/Vespa/ClusterController.pm2
-rw-r--r--vespaclient/src/perl/lib/Yahoo/Vespa/ClusterState.pm2
-rw-r--r--vespaclient/src/perl/lib/Yahoo/Vespa/ConsoleOutput.pm2
-rw-r--r--vespaclient/src/perl/lib/Yahoo/Vespa/ContentNodeSelection.pm2
-rw-r--r--vespaclient/src/perl/lib/Yahoo/Vespa/Http.pm2
-rw-r--r--vespaclient/src/perl/lib/Yahoo/Vespa/Json.pm2
-rw-r--r--vespaclient/src/perl/lib/Yahoo/Vespa/Utils.pm2
-rw-r--r--vespaclient/src/perl/lib/Yahoo/Vespa/VespaModel.pm2
-rw-r--r--vespaclient/src/perl/test/Generic/UseTest.pl2
-rw-r--r--vespaclient/src/perl/test/TestUtils/OutputCapturer.pm2
-rw-r--r--vespaclient/src/perl/test/TestUtils/VespaTest.pm2
-rw-r--r--vespaclient/src/perl/test/Yahoo/Vespa/ArgParserTest.pl2
-rw-r--r--vespaclient/src/perl/test/Yahoo/Vespa/Bin/GetClusterStateTest.pl2
-rw-r--r--vespaclient/src/perl/test/Yahoo/Vespa/Bin/GetNodeStateTest.pl2
-rw-r--r--vespaclient/src/perl/test/Yahoo/Vespa/Bin/SetNodeStateTest.pl2
-rw-r--r--vespaclient/src/perl/test/Yahoo/Vespa/ClusterControllerTest.pl2
-rw-r--r--vespaclient/src/perl/test/Yahoo/Vespa/ConsoleOutputTest.pl2
-rw-r--r--vespaclient/src/perl/test/Yahoo/Vespa/HttpTest.pl2
-rw-r--r--vespaclient/src/perl/test/Yahoo/Vespa/JsonTest.pl2
-rw-r--r--vespaclient/src/perl/test/Yahoo/Vespa/Mocks/ClusterControllerMock.pm2
-rw-r--r--vespaclient/src/perl/test/Yahoo/Vespa/Mocks/HttpClientMock.pm2
-rw-r--r--vespaclient/src/perl/test/Yahoo/Vespa/Mocks/HttpServerMock.pm2
-rw-r--r--vespaclient/src/perl/test/Yahoo/Vespa/Mocks/VespaModelMock.pm2
-rw-r--r--vespaclient/src/perl/test/Yahoo/Vespa/VespaModelTest.pl2
-rw-r--r--vespaclient/src/perl/test/testrunner.pl2
-rw-r--r--vespaclient/src/vespa/vespaclient/clusterlist/CMakeLists.txt2
-rw-r--r--vespaclient/src/vespa/vespaclient/clusterlist/clusterlist.cpp2
-rw-r--r--vespaclient/src/vespa/vespaclient/clusterlist/clusterlist.h2
-rw-r--r--vespaclient/src/vespa/vespaclient/vdsstates/CMakeLists.txt2
-rw-r--r--vespaclient/src/vespa/vespaclient/vdsstates/statesapp.cpp2
-rw-r--r--vespaclient/src/vespa/vespaclient/vesparoute/CMakeLists.txt2
-rw-r--r--vespaclient/src/vespa/vespaclient/vesparoute/application.cpp2
-rw-r--r--vespaclient/src/vespa/vespaclient/vesparoute/application.h2
-rw-r--r--vespaclient/src/vespa/vespaclient/vesparoute/main.cpp2
-rw-r--r--vespaclient/src/vespa/vespaclient/vesparoute/mynetwork.cpp2
-rw-r--r--vespaclient/src/vespa/vespaclient/vesparoute/mynetwork.h2
-rw-r--r--vespaclient/src/vespa/vespaclient/vesparoute/params.cpp2
-rw-r--r--vespaclient/src/vespa/vespaclient/vesparoute/params.h2
-rw-r--r--vespajlib/CMakeLists.txt2
-rw-r--r--vespajlib/abi-spec.json54
-rw-r--r--vespajlib/developernotes/CharClassStats.java2
-rw-r--r--vespajlib/developernotes/CopyOnWriteHashMapBenchmark.java2
-rw-r--r--vespajlib/developernotes/ThreadLocalDirectoryBenchmark.java2
-rw-r--r--vespajlib/developernotes/Utf8MicroBencmark.java2
-rw-r--r--vespajlib/developernotes/XMLMicroBenchmark.java2
-rw-r--r--vespajlib/developernotes/XMLWriterMicroBenchmark.java2
-rw-r--r--vespajlib/pom.xml25
-rw-r--r--vespajlib/src/main/java/ai/vespa/util/http/hc4/VespaHttpClientBuilder.java (renamed from http-utils/src/main/java/ai/vespa/util/http/hc4/VespaHttpClientBuilder.java)0
-rw-r--r--vespajlib/src/main/java/ai/vespa/util/http/hc4/package-info.java5
-rw-r--r--vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/DelaySupplier.java (renamed from http-utils/src/main/java/ai/vespa/util/http/hc4/retry/DelaySupplier.java)0
-rw-r--r--vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/DelayedConnectionLevelRetryHandler.java (renamed from http-utils/src/main/java/ai/vespa/util/http/hc4/retry/DelayedConnectionLevelRetryHandler.java)0
-rw-r--r--vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/DelayedResponseLevelRetryHandler.java (renamed from http-utils/src/main/java/ai/vespa/util/http/hc4/retry/DelayedResponseLevelRetryHandler.java)0
-rw-r--r--vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/RetryConsumer.java (renamed from http-utils/src/main/java/ai/vespa/util/http/hc4/retry/RetryConsumer.java)0
-rw-r--r--vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/RetryFailedConsumer.java (renamed from http-utils/src/main/java/ai/vespa/util/http/hc4/retry/RetryFailedConsumer.java)0
-rw-r--r--vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/RetryPredicate.java (renamed from http-utils/src/main/java/ai/vespa/util/http/hc4/retry/RetryPredicate.java)0
-rw-r--r--vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/Sleeper.java (renamed from http-utils/src/main/java/ai/vespa/util/http/hc4/retry/Sleeper.java)0
-rw-r--r--vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/package-info.java5
-rw-r--r--vespajlib/src/main/java/ai/vespa/util/http/hc5/HttpToHttpsRoutePlanner.java (renamed from http-utils/src/main/java/ai/vespa/util/http/hc5/HttpToHttpsRoutePlanner.java)2
-rw-r--r--vespajlib/src/main/java/ai/vespa/util/http/hc5/VespaAsyncHttpClientBuilder.java (renamed from http-utils/src/main/java/ai/vespa/util/http/hc5/VespaAsyncHttpClientBuilder.java)2
-rw-r--r--vespajlib/src/main/java/ai/vespa/util/http/hc5/VespaHttpClientBuilder.java (renamed from http-utils/src/main/java/ai/vespa/util/http/hc5/VespaHttpClientBuilder.java)2
-rw-r--r--vespajlib/src/main/java/ai/vespa/util/http/hc5/package-info.java5
-rw-r--r--vespajlib/src/main/java/com/yahoo/api/annotations/PackageMarker.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/binaryprefix/BinaryPrefix.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/binaryprefix/BinaryScaledAmount.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/binaryprefix/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/collections/AbstractFilteringList.java6
-rw-r--r--vespajlib/src/main/java/com/yahoo/collections/ArraySet.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/collections/BobHash.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/collections/ByteArrayComparator.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/collections/CollectionComparator.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/collections/CollectionUtil.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/collections/Comparables.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/collections/CopyOnWriteHashMap.java4
-rw-r--r--vespajlib/src/main/java/com/yahoo/collections/FreezableArrayList.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/collections/Hashlet.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/collections/IntArrayComparator.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/collections/LazyMap.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/collections/LazySet.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/collections/ListMap.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/collections/ListenableArrayList.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/collections/MD5.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/collections/MethodCache.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/collections/Pair.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/collections/TinyIdentitySet.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/collections/Tuple2.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/collections/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/compress/CompressionType.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/compress/Compressor.java42
-rw-r--r--vespajlib/src/main/java/com/yahoo/compress/IntegerCompressor.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/compress/ZstdCompressor.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/compress/ZstdOuputStream.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/compress/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/CompletableFutures.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/CopyOnWriteHashMap.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/DaemonThreadFactory.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/EventBarrier.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/LocalInstance.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/Lock.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/Locks.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/Receiver.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/SystemTimer.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/ThreadFactoryFactory.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/ThreadLocalDirectory.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/ThreadRobustList.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/Timer.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/classlock/ClassLock.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/classlock/ClassLocking.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/classlock/LockInterruptException.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/classlock/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobControl.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobControlState.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobMetrics.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/maintenance/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/data/access/ArrayTraverser.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/data/access/Inspectable.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/data/access/Inspector.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/data/access/ObjectTraverser.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/data/access/Type.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/data/access/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/data/access/simple/JsonRender.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/data/access/simple/Value.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/data/access/simple/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/data/access/slime/SlimeAdapter.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/data/access/slime/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/errorhandling/Results.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/errorhandling/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/geo/BoundingBoxParser.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/geo/DegreesParser.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/geo/DistanceParser.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/geo/OneDegreeParser.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/geo/ParsedDegree.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/geo/ZCurve.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/geo/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/io/AbstractByteWriter.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/io/BufferChain.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/io/ByteWriter.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/io/FatalErrorHandler.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/io/GrowableBufferOutputStream.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/io/GrowableByteBuffer.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/io/HexDump.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/io/IOUtils.java33
-rw-r--r--vespajlib/src/main/java/com/yahoo/io/NativeIO.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/io/TeeInputStream.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/io/WritableByteTransmitter.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/io/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/io/reader/NamedReader.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/io/reader/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/javacc/FastCharStream.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/javacc/UnicodeUtilities.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/javacc/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/lang/CachedSupplier.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/lang/MutableBoolean.java8
-rw-r--r--vespajlib/src/main/java/com/yahoo/lang/MutableInteger.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/lang/MutableLong.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/lang/SettableOptional.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/lang/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/net/HostName.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/net/URI.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/net/UriTools.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/net/Url.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/net/UrlToken.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/net/UrlTokenizer.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/net/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/osgi/maven/ProjectBundleClassPaths.java128
-rw-r--r--vespajlib/src/main/java/com/yahoo/path/Path.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/path/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/protect/ClassValidator.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/protect/ErrorMessage.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/protect/Process.java20
-rw-r--r--vespajlib/src/main/java/com/yahoo/protect/Validator.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/protect/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/reflection/Casting.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/reflection/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/ArrayInserter.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/ArrayTraverser.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/ArrayValue.java22
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/BinaryDecoder.java12
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java22
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/BinaryFormat.java17
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/BoolValue.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/BufferedInput.java26
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/BufferedOutput.java30
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/Cursor.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/DataValue.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/DoubleValue.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/Inserter.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/Inspector.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/JsonDecoder.java49
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/JsonFormat.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/JsonParseException.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/LongValue.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/NixValue.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/ObjectSymbolInserter.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/ObjectSymbolTraverser.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/ObjectTraverser.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/ObjectValue.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/Slime.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/SlimeFormat.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/SlimeInserter.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/SlimeUtils.java6
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/StringValue.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/SymbolTable.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/Type.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/Utf8Codec.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/Utf8Value.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/Value.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/Visitor.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/stream/CustomCollectors.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/stream/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/system/CommandLineParser.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/system/ForceLoad.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/system/ForceLoadError.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/system/ProcessExecuter.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/system/execution/ProcessExecutor.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/system/execution/ProcessResult.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/system/execution/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/system/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/DimensionSizes.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java6
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/MappedTensor.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/PartialAddress.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/Tensor.java12
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java4
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/TensorParser.java85
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/TensorType.java4
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/TensorTypeParser.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/TypeResolver.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/evaluation/EvaluationContext.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/evaluation/MapEvaluationContext.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/evaluation/TypeContext.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/evaluation/VariableTensor.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/evaluation/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/Argmax.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/Argmin.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/CellCast.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/CompositeTensorFunction.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/Concat.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/ConstantTensor.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/Diag.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/Expand.java48
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/Generate.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/Join.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/L1Normalize.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/L2Normalize.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/Map.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/Matmul.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/PrimitiveTensorFunction.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/Random.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/Range.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/Reduce.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/ReduceJoin.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/Rename.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/ScalarFunctions.java39
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/Softmax.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/TensorFunction.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/ToStringContext.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/XwPlusB.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/serialization/BinaryFormat.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/serialization/DenseBinaryFormat.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/serialization/JsonFormat.java133
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/serialization/MixedBinaryFormat.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/serialization/SparseBinaryFormat.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/serialization/TypedBinaryFormat.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/serialization/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/AbstractUtf8Array.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/Ascii.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/BooleanParser.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/CaseInsensitiveIdentifier.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/DataTypeIdentifier.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/ForwardWriter.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/GenericWriter.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/HTML.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/Identifier.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/JSON.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/JSONWriter.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/JavaWriterWriter.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/Lowercase.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/LowercaseIdentifier.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/MapParser.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/PositionedString.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/SimpleMapParser.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/StringUtilities.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/Text.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/Utf8.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/Utf8Array.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/Utf8PartialArray.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/Utf8String.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/XML.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/XMLWriter.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/time/TimeBudget.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/time/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/transaction/AbstractTransaction.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/transaction/Mutex.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/transaction/NestedTransaction.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/transaction/Transaction.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/transaction/package-info.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/vespa/VersionTagger.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/vespa/objects/BufferSerializer.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/vespa/objects/Deserializer.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/vespa/objects/FieldBase.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/vespa/objects/Identifiable.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/vespa/objects/Ids.java2
-rwxr-xr-xvespajlib/src/main/java/com/yahoo/vespa/objects/ObjectDumper.java2
-rwxr-xr-xvespajlib/src/main/java/com/yahoo/vespa/objects/ObjectOperation.java2
-rwxr-xr-xvespajlib/src/main/java/com/yahoo/vespa/objects/ObjectPredicate.java2
-rwxr-xr-xvespajlib/src/main/java/com/yahoo/vespa/objects/ObjectVisitor.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/vespa/objects/Selectable.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/vespa/objects/Serializer.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/vespa/objects/package-info.java2
-rw-r--r--vespajlib/src/main/java/net/jpountz/lz4/package-info.java2
-rw-r--r--vespajlib/src/test/java/ai/vespa/util/http/hc4/VespaHttpClientBuilderTest.java (renamed from http-utils/src/test/java/ai/vespa/util/http/hc4/VespaHttpClientBuilderTest.java)0
-rw-r--r--vespajlib/src/test/java/ai/vespa/util/http/hc4/retry/DelayedConnectionLevelRetryHandlerTest.java (renamed from http-utils/src/test/java/ai/vespa/util/http/hc4/retry/DelayedConnectionLevelRetryHandlerTest.java)0
-rw-r--r--vespajlib/src/test/java/ai/vespa/util/http/hc4/retry/DelayedResponseLevelRetryHandlerTest.java (renamed from http-utils/src/test/java/ai/vespa/util/http/hc4/retry/DelayedResponseLevelRetryHandlerTest.java)2
-rw-r--r--vespajlib/src/test/java/ai/vespa/util/http/hc5/HttpToHttpsRoutePlannerTest.java (renamed from http-utils/src/test/java/ai/vespa/util/http/hc5/HttpToHttpsRoutePlannerTest.java)2
-rw-r--r--vespajlib/src/test/java/com/yahoo/binaryprefix/BinaryScaledAmountTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/collections/ArraySetTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/collections/BobHashTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/collections/ByteArrayComparatorTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/collections/CollectionComparatorTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/collections/CollectionUtilTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/collections/CollectionsBenchMark.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/collections/ComparablesTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/collections/CopyOnWriteHashMapTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/collections/FreezableArrayListListener.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/collections/HashletTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/collections/IntArrayComparatorTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/collections/LazyMapTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/collections/LazySetTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/collections/ListMapTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/collections/ListenableArrayListTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/collections/MD5TestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/collections/TinyIdentitySetTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/collections/TupleTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/compress/CompressorTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/compress/IntegerCompressorTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/compress/LZ4CompressorTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/compress/ZstdCompressorTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/compress/ZstdOuputStreamTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/concurrent/CompletableFuturesTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/concurrent/CopyOnWriteHashMapTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/concurrent/EventBarrierTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/concurrent/ExecutorsTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/concurrent/ReceiverTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/concurrent/ThreadFactoryFactoryTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/concurrent/ThreadLocalDirectoryTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/concurrent/ThreadRobustListTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/concurrent/maintenance/JobControlStateMock.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/concurrent/maintenance/JobControlTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/concurrent/maintenance/MaintainerTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/concurrent/maintenance/TestMaintainer.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/data/access/InspectorConformanceTestBase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/data/access/simple/SimpleConformanceTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/data/access/slime/SlimeConformanceTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/geo/BoundingBoxParserTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/geo/DegreesParserTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/geo/OneDegreeParserTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/geo/ZCurveTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/io/ByteWriterTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/io/FatalErrorHandlerTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/io/FileReadTestCase.java6
-rw-r--r--vespajlib/src/test/java/com/yahoo/io/GrowableBufferOutputStreamTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/io/GrowableByteBufferTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/io/HexDumpTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/io/IOUtilsTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/io/NativeIOTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/io/TeeInputStreamTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/io/reader/NamedReaderTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/javacc/FastCharStreamTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/javacc/UnicodeUtilitiesTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/lang/CachedSupplierTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/net/HostNameTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/net/URITestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/net/UriToolsTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/net/UrlTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/net/UrlTokenTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/net/UrlTokenizerTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/osgi/maven/ProjectBundleClassPathsTest.java36
-rw-r--r--vespajlib/src/test/java/com/yahoo/path/PathTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/protect/TestErrorMessage.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/protect/ValidatorTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/reflection/CastingTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/slime/BinaryFormatTestCase.java44
-rw-r--r--vespajlib/src/test/java/com/yahoo/slime/JsonBenchmark.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/slime/JsonFormatTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/slime/SlimeTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/slime/SlimeUtilsTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/slime/VisitorTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/stream/CustomCollectorsTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/system/Bar.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/system/CommandLineParserTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/system/Foo.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/system/ForceLoadTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/system/ProcessExecuterTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/system/execution/ProcessExecutorTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/IndexedTensorTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/MappedTensorTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/MatrixDotProductBenchmark.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/MixedTensorTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/TensorFunctionBenchmark.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/TensorParserTestCase.java49
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/TensorTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/TensorTypeTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/TypeResolverTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/functions/CellCastTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/functions/ConcatTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/functions/JoinTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/functions/MatmulTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/functions/ReduceTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/functions/ScalarFunctionsTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/functions/TensorFunctionTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/serialization/DenseBinaryFormatTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/serialization/JsonFormatTestCase.java91
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/serialization/MixedBinaryFormatTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/serialization/SerializationTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/tensor/serialization/SparseBinaryFormatTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/AsciiTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/Benchmark.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/BooleanParserTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/CaseInsensitiveIdentifierTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/DataTypeIdentifierTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/ForwardWriterTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/GenericWriterTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/HTMLTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/IdentifierTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/JSONTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/JSONWriterTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/JsonMicroBenchmarkTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/LowercaseIdentifierTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/LowercaseTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/MapParserMicroBenchmark.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/MapParserTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/StringAppendMicroBenchmarkTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/StringUtilitiesTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/TextTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/Utf8ArrayTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/Utf8TestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/XMLTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/text/XMLWriterTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/time/TimeBudgetTest.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/transaction/NestedTransactionTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/vespa/objects/BigIdClass.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/vespa/objects/FieldBaseTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/vespa/objects/FooBarIdClass.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/vespa/objects/ObjectDumperTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/vespa/objects/SerializeTestCase.java2
-rw-r--r--vespajlib/src/test/java/com/yahoo/vespa/objects/SomeIdClass.java2
-rw-r--r--vespalib/CMakeLists.txt4
-rw-r--r--vespalib/src/Doxyfile2
-rw-r--r--vespalib/src/apps/make_fixture_macros/CMakeLists.txt2
-rw-r--r--vespalib/src/apps/make_fixture_macros/make_fixture_macros.cpp4
-rw-r--r--vespalib/src/apps/vespa-detect-hostname/CMakeLists.txt2
-rw-r--r--vespalib/src/apps/vespa-detect-hostname/detect_hostname.cpp2
-rw-r--r--vespalib/src/apps/vespa-drop-file-from-cache/CMakeLists.txt2
-rw-r--r--vespalib/src/apps/vespa-drop-file-from-cache/drop_file_from_cache.cpp2
-rw-r--r--vespalib/src/apps/vespa-validate-hostname/CMakeLists.txt2
-rw-r--r--vespalib/src/apps/vespa-validate-hostname/validate_hostname.cpp2
-rw-r--r--vespalib/src/tests/alloc/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/alloc/alloc_test.cpp2
-rw-r--r--vespalib/src/tests/alloc/allocate_and_core.cpp2
-rw-r--r--vespalib/src/tests/approx/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/approx/approx_test.cpp2
-rw-r--r--vespalib/src/tests/array/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/array/array_test.cpp2
-rw-r--r--vespalib/src/tests/arrayqueue/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/arrayqueue/arrayqueue.cpp2
-rw-r--r--vespalib/src/tests/arrayref/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/arrayref/arrayref_test.cpp2
-rw-r--r--vespalib/src/tests/assert/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/assert/assert_test.cpp2
-rw-r--r--vespalib/src/tests/assert/asserter.cpp2
-rw-r--r--vespalib/src/tests/barrier/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/barrier/barrier_test.cpp2
-rw-r--r--vespalib/src/tests/benchmark_timer/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/benchmark_timer/benchmark_timer_test.cpp2
-rw-r--r--vespalib/src/tests/box/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/box/box_test.cpp2
-rw-r--r--vespalib/src/tests/btree/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/btree/btree_store/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/btree/btree_store/btree_store_test.cpp2
-rw-r--r--vespalib/src/tests/btree/btree_test.cpp2
-rw-r--r--vespalib/src/tests/btree/btreeaggregation_test.cpp2
-rw-r--r--vespalib/src/tests/btree/frozenbtree_test.cpp2
-rw-r--r--vespalib/src/tests/btree/iteratespeed.cpp2
-rw-r--r--vespalib/src/tests/child_process/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/child_process/child_process_test.cpp2
-rw-r--r--vespalib/src/tests/component/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/component/component.cpp2
-rw-r--r--vespalib/src/tests/compress/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/compress/compress_test.cpp2
-rw-r--r--vespalib/src/tests/compression/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/compression/compression_test.cpp2
-rw-r--r--vespalib/src/tests/data/databuffer/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/data/databuffer/databuffer_test.cpp2
-rw-r--r--vespalib/src/tests/data/input_reader/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/data/input_reader/input_reader_test.cpp2
-rw-r--r--vespalib/src/tests/data/lz4_encode_decode/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/data/lz4_encode_decode/lz4_encode_decode_test.cpp2
-rw-r--r--vespalib/src/tests/data/memory_input/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/data/memory_input/memory_input_test.cpp2
-rw-r--r--vespalib/src/tests/data/output_writer/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/data/output_writer/output_writer_test.cpp2
-rw-r--r--vespalib/src/tests/data/simple_buffer/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/data/simple_buffer/simple_buffer_test.cpp2
-rw-r--r--vespalib/src/tests/data/smart_buffer/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/data/smart_buffer/smart_buffer_test.cpp2
-rw-r--r--vespalib/src/tests/datastore/array_store/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/datastore/array_store/array_store_test.cpp52
-rw-r--r--vespalib/src/tests/datastore/array_store_config/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/datastore/array_store_config/array_store_config_test.cpp2
-rw-r--r--vespalib/src/tests/datastore/buffer_type/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/datastore/buffer_type/buffer_type_test.cpp28
-rw-r--r--vespalib/src/tests/datastore/datastore/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/datastore/datastore/datastore_test.cpp54
-rw-r--r--vespalib/src/tests/datastore/fixed_size_hash_map/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/datastore/fixed_size_hash_map/fixed_size_hash_map_test.cpp2
-rw-r--r--vespalib/src/tests/datastore/sharded_hash_map/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/datastore/sharded_hash_map/sharded_hash_map_test.cpp2
-rw-r--r--vespalib/src/tests/datastore/unique_store/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/datastore/unique_store/unique_store_test.cpp2
-rw-r--r--vespalib/src/tests/detect_type_benchmark/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/detect_type_benchmark/detect_type_benchmark.cpp2
-rw-r--r--vespalib/src/tests/dotproduct/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/dotproduct/dotproductbenchmark.cpp7
-rw-r--r--vespalib/src/tests/drop-file-from-cache/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/drop-file-from-cache/drop_file_from_cache_test.cpp2
-rw-r--r--vespalib/src/tests/dual_merge_director/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/dual_merge_director/dual_merge_director_test.cpp2
-rw-r--r--vespalib/src/tests/eventbarrier/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/eventbarrier/eventbarrier.cpp2
-rw-r--r--vespalib/src/tests/exception_classes/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/exception_classes/caught_uncaught.cpp2
-rw-r--r--vespalib/src/tests/exception_classes/exception_classes_test.cpp2
-rw-r--r--vespalib/src/tests/exception_classes/mmap.cpp2
-rw-r--r--vespalib/src/tests/exception_classes/silenceuncaught_test.cpp2
-rw-r--r--vespalib/src/tests/executor/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/executor/blocking_executor_stress.cpp2
-rw-r--r--vespalib/src/tests/executor/blockingthreadstackexecutor_test.cpp2
-rw-r--r--vespalib/src/tests/executor/executor_test.cpp2
-rw-r--r--vespalib/src/tests/executor/stress_test.cpp2
-rw-r--r--vespalib/src/tests/executor/threadstackexecutor_test.cpp2
-rw-r--r--vespalib/src/tests/explore_modern_cpp/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/explore_modern_cpp/explore_modern_cpp_test.cpp2
-rw-r--r--vespalib/src/tests/false/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/false/false.cpp2
-rw-r--r--vespalib/src/tests/fiddle/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/fiddle/fiddle_test.cpp2
-rw-r--r--vespalib/src/tests/gencnt/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/gencnt/gencnt_test.cpp2
-rw-r--r--vespalib/src/tests/guard/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/guard/guard_test.cpp2
-rw-r--r--vespalib/src/tests/host_name/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/host_name/host_name_test.cpp2
-rw-r--r--vespalib/src/tests/hwaccelrated/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/hwaccelrated/hwaccelrated_test.cpp2
-rw-r--r--vespalib/src/tests/io/fileutil/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/io/fileutil/fileutiltest.cpp2
-rw-r--r--vespalib/src/tests/io/mapped_file_input/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/io/mapped_file_input/mapped_file_input_test.cpp2
-rw-r--r--vespalib/src/tests/issue/CMakeLists.txt9
-rw-r--r--vespalib/src/tests/issue/issue_test.cpp68
-rw-r--r--vespalib/src/tests/latch/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/latch/latch_test.cpp2
-rw-r--r--vespalib/src/tests/left_right_heap/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/left_right_heap/left_right_heap_bench.cpp2
-rw-r--r--vespalib/src/tests/left_right_heap/left_right_heap_test.cpp2
-rw-r--r--vespalib/src/tests/make_fixture_macros/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/make_fixture_macros/make_fixture_macros_test.cpp2
-rw-r--r--vespalib/src/tests/memory/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/memory/memory_test.cpp2
-rw-r--r--vespalib/src/tests/net/async_resolver/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/net/async_resolver/async_resolver_test.cpp2
-rw-r--r--vespalib/src/tests/net/crypto_socket/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/net/crypto_socket/crypto_socket_test.cpp2
-rw-r--r--vespalib/src/tests/net/selector/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/net/selector/selector_test.cpp2
-rw-r--r--vespalib/src/tests/net/send_fd/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/net/send_fd/send_fd_test.cpp2
-rw-r--r--vespalib/src/tests/net/socket/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/net/socket/socket_client.cpp2
-rw-r--r--vespalib/src/tests/net/socket/socket_server.cpp2
-rw-r--r--vespalib/src/tests/net/socket/socket_test.cpp2
-rw-r--r--vespalib/src/tests/net/socket_spec/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/net/socket_spec/socket_spec_test.cpp2
-rw-r--r--vespalib/src/tests/net/sync_crypto_socket/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/net/sync_crypto_socket/sync_crypto_socket_test.cpp2
-rw-r--r--vespalib/src/tests/net/tls/auto_reloading_tls_crypto_engine/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/net/tls/auto_reloading_tls_crypto_engine/auto_reloading_tls_crypto_engine_test.cpp2
-rw-r--r--vespalib/src/tests/net/tls/direct_buffer_bio/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/net/tls/direct_buffer_bio/direct_buffer_bio_test.cpp2
-rw-r--r--vespalib/src/tests/net/tls/openssl_impl/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/net/tls/openssl_impl/openssl_impl_test.cpp2
-rw-r--r--vespalib/src/tests/net/tls/policy_checking_certificate_verifier/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/net/tls/policy_checking_certificate_verifier/policy_checking_certificate_verifier_test.cpp2
-rw-r--r--vespalib/src/tests/net/tls/protocol_snooping/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/net/tls/protocol_snooping/protocol_snooping_test.cpp2
-rw-r--r--vespalib/src/tests/net/tls/transport_options/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/net/tls/transport_options/transport_options_reading_test.cpp2
-rw-r--r--vespalib/src/tests/objects/nbostream/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/objects/nbostream/nbostream_test.cpp2
-rw-r--r--vespalib/src/tests/optimized/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/optimized/optimized_test.cpp2
-rw-r--r--vespalib/src/tests/portal/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/portal/handle_manager/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/portal/handle_manager/handle_manager_test.cpp2
-rw-r--r--vespalib/src/tests/portal/http_request/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/portal/http_request/http_request_test.cpp2
-rw-r--r--vespalib/src/tests/portal/portal_test.cpp2
-rw-r--r--vespalib/src/tests/portal/reactor/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/portal/reactor/reactor_test.cpp2
-rw-r--r--vespalib/src/tests/printable/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/printable/printabletest.cpp2
-rw-r--r--vespalib/src/tests/priority_queue/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/priority_queue/priority_queue_test.cpp2
-rw-r--r--vespalib/src/tests/random/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/random/Tr.java2
-rw-r--r--vespalib/src/tests/random/friendfinder.cpp2
-rw-r--r--vespalib/src/tests/random/random_test.cpp2
-rw-r--r--vespalib/src/tests/referencecounter/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/referencecounter/referencecounter_test.cpp2
-rw-r--r--vespalib/src/tests/regex/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/regex/regex.cpp2
-rw-r--r--vespalib/src/tests/rendezvous/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/rendezvous/rendezvous_test.cpp2
-rw-r--r--vespalib/src/tests/require/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/require/require_test.cpp2
-rw-r--r--vespalib/src/tests/runnable_pair/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/runnable_pair/runnable_pair_test.cpp2
-rw-r--r--vespalib/src/tests/sha1/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/sha1/rfc_sha1.cpp2
-rw-r--r--vespalib/src/tests/sha1/rfc_sha1.h2
-rw-r--r--vespalib/src/tests/sha1/sha1_test.cpp2
-rw-r--r--vespalib/src/tests/shared_string_repo/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/shared_string_repo/shared_string_repo_test.cpp2
-rw-r--r--vespalib/src/tests/sharedptr/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/sharedptr/ptrholder.cpp2
-rw-r--r--vespalib/src/tests/signalhandler/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/signalhandler/signalhandler_test.cpp2
-rw-r--r--vespalib/src/tests/signalhandler/victim.cpp2
-rw-r--r--vespalib/src/tests/simple_thread_bundle/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/simple_thread_bundle/simple_thread_bundle_test.cpp2
-rw-r--r--vespalib/src/tests/simple_thread_bundle/threading_speed_test.cpp2
-rw-r--r--vespalib/src/tests/slime/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/slime/external_data_value/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/slime/external_data_value/external_data_value_test.cpp2
-rw-r--r--vespalib/src/tests/slime/json_slime_benchmark.cpp2
-rw-r--r--vespalib/src/tests/slime/slime_binary_format_test.cpp2
-rw-r--r--vespalib/src/tests/slime/slime_inject_test.cpp2
-rw-r--r--vespalib/src/tests/slime/slime_json_format_test.cpp2
-rw-r--r--vespalib/src/tests/slime/slime_test.cpp2
-rw-r--r--vespalib/src/tests/slime/summary-feature-benchmark/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/slime/summary-feature-benchmark/summary-feature-benchmark.cpp2
-rw-r--r--vespalib/src/tests/slime/type_traits.cpp2
-rw-r--r--vespalib/src/tests/slime/type_traits.h2
-rw-r--r--vespalib/src/tests/small_vector/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/small_vector/small_vector_test.cpp2
-rw-r--r--vespalib/src/tests/spin_lock/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/spin_lock/spin_lock_test.cpp2
-rw-r--r--vespalib/src/tests/stash/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/stash/stash.cpp2
-rw-r--r--vespalib/src/tests/stllike/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/stllike/asciistream_test.cpp2
-rw-r--r--vespalib/src/tests/stllike/hash_test.cpp2
-rw-r--r--vespalib/src/tests/stllike/hashtable_test.cpp2
-rw-r--r--vespalib/src/tests/stllike/lookup_benchmark.cpp2
-rw-r--r--vespalib/src/tests/stllike/replace_variable_test.cpp2
-rw-r--r--vespalib/src/tests/stllike/string_test.cpp2
-rw-r--r--vespalib/src/tests/stllike/uniq_by_sort_map_hash.cpp2
-rw-r--r--vespalib/src/tests/stllike/vector_map_test.cpp2
-rw-r--r--vespalib/src/tests/stringfmt/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/stringfmt/fmt.cpp2
-rw-r--r--vespalib/src/tests/sync/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/sync/sync_test.cpp2
-rw-r--r--vespalib/src/tests/testapp-debug/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/testapp-debug/debugtest.cpp2
-rw-r--r--vespalib/src/tests/testapp-debug/testapp-debug.cpp2
-rw-r--r--vespalib/src/tests/testapp-generic/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/testapp-generic/testapp-generic.cpp2
-rw-r--r--vespalib/src/tests/testapp-main/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/testapp-main/testapp-main_test.cpp2
-rw-r--r--vespalib/src/tests/testapp-state/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/testapp-state/statetest.cpp2
-rw-r--r--vespalib/src/tests/testapp-state/testapp-state.cpp2
-rw-r--r--vespalib/src/tests/testkit-mt/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/testkit-mt/testkit-mt_test.cpp2
-rw-r--r--vespalib/src/tests/testkit-subset/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/testkit-subset/testkit-subset_extra.cpp2
-rw-r--r--vespalib/src/tests/testkit-subset/testkit-subset_test.cpp2
-rwxr-xr-xvespalib/src/tests/testkit-subset/testkit-subset_test.sh2
-rw-r--r--vespalib/src/tests/testkit-testhook/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/testkit-testhook/testkit-testhook_test.cpp2
-rw-r--r--vespalib/src/tests/testkit-time_bomb/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/testkit-time_bomb/testkit-time_bomb_test.cpp2
-rw-r--r--vespalib/src/tests/text/lowercase/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/text/lowercase/lowercase_test.cpp2
-rwxr-xr-xvespalib/src/tests/text/lowercase/to-c-code.pl2
-rw-r--r--vespalib/src/tests/text/stringtokenizer/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/text/stringtokenizer/stringtokenizer_test.cpp2
-rw-r--r--vespalib/src/tests/text/utf8/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/text/utf8/make_url.cpp2
-rw-r--r--vespalib/src/tests/text/utf8/utf8_test.cpp2
-rw-r--r--vespalib/src/tests/thread/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/thread/thread_test.cpp2
-rw-r--r--vespalib/src/tests/time/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/time/time_box_test.cpp2
-rw-r--r--vespalib/src/tests/trace/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/trace/trace.cpp2
-rw-r--r--vespalib/src/tests/trace/trace_serialization.cpp2
-rw-r--r--vespalib/src/tests/traits/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/traits/traits_test.cpp2
-rw-r--r--vespalib/src/tests/true/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/true/true.cpp2
-rw-r--r--vespalib/src/tests/tutorial/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/tutorial/checks/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/tutorial/checks/checks_test.cpp2
-rwxr-xr-xvespalib/src/tests/tutorial/compare-tutorials.sh2
-rw-r--r--vespalib/src/tests/tutorial/fixtures/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/tutorial/fixtures/fixtures_test.cpp2
-rwxr-xr-xvespalib/src/tests/tutorial/make_example.sh2
-rwxr-xr-xvespalib/src/tests/tutorial/make_source.sh2
-rw-r--r--vespalib/src/tests/tutorial/make_tutorial.cpp2
-rw-r--r--vespalib/src/tests/tutorial/minimal/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/tutorial/minimal/minimal_test.cpp2
-rw-r--r--vespalib/src/tests/tutorial/simple/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/tutorial/simple/simple_test.cpp2
-rw-r--r--vespalib/src/tests/tutorial/style.inc2
-rw-r--r--vespalib/src/tests/tutorial/threads/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/tutorial/threads/threads_test.cpp2
-rw-r--r--vespalib/src/tests/tutorial/tutorial.html20
-rw-r--r--vespalib/src/tests/tutorial/tutorial_source.html2
-rw-r--r--vespalib/src/tests/tutorial/xml_escape.cpp2
-rw-r--r--vespalib/src/tests/typify/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/typify/typify_test.cpp2
-rw-r--r--vespalib/src/tests/unwind_message/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/unwind_message/unwind_message_test.cpp2
-rw-r--r--vespalib/src/tests/util/bfloat16/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/util/bfloat16/bfloat16_test.cpp2
-rw-r--r--vespalib/src/tests/util/file_area_freelist/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/util/file_area_freelist/file_area_freelist_test.cpp2
-rw-r--r--vespalib/src/tests/util/generationhandler/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/util/generationhandler/generationhandler_test.cpp2
-rw-r--r--vespalib/src/tests/util/generationhandler_stress/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/util/generationhandler_stress/generation_handler_stress_test.cpp2
-rw-r--r--vespalib/src/tests/util/hamming/CMakeLists.txt9
-rw-r--r--vespalib/src/tests/util/hamming/hamming_test.cpp97
-rw-r--r--vespalib/src/tests/util/md5/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/util/md5/md5_test.cpp2
-rw-r--r--vespalib/src/tests/util/mmap_file_allocator/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/util/mmap_file_allocator/mmap_file_allocator_test.cpp2
-rw-r--r--vespalib/src/tests/util/mmap_file_allocator_factory/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/util/mmap_file_allocator_factory/mmap_file_allocator_factory_test.cpp2
-rw-r--r--vespalib/src/tests/util/rcuvector/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/util/rcuvector/rcuvector_test.cpp2
-rw-r--r--vespalib/src/tests/util/reusable_set/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/util/reusable_set/reusable_set_test.cpp2
-rw-r--r--vespalib/src/tests/util/size_literals/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/util/size_literals/size_literals_test.cpp2
-rw-r--r--vespalib/src/tests/valgrind/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/valgrind/valgrind_test.cpp2
-rw-r--r--vespalib/src/tests/websocket/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/websocket/index.html2
-rw-r--r--vespalib/src/tests/websocket/test.html2
-rw-r--r--vespalib/src/tests/websocket/websocket_server.cpp2
-rw-r--r--vespalib/src/tests/websocket/websocket_test.cpp2
-rw-r--r--vespalib/src/tests/zcurve/CMakeLists.txt2
-rw-r--r--vespalib/src/tests/zcurve/zcurve_ranges_test.cpp2
-rw-r--r--vespalib/src/tests/zcurve/zcurve_test.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/btree/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btree.h2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btree.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btree_key_data.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btree_key_data.h2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreeaggregator.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreeaggregator.h2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreeaggregator.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreebuilder.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreebuilder.h2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreebuilder.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreeinserter.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreeinserter.h2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreeinserter.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreeiterator.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreeiterator.h2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreeiterator.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreenode.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreenode.h2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreenode.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreenodeallocator.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreenodeallocator.h2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreenodeallocator.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreenodestore.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreenodestore.h2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreenodestore.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreeremover.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreeremover.h2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreeremover.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreeroot.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreeroot.h2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreeroot.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreerootbase.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreerootbase.h2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreerootbase.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreestore.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreestore.h2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreestore.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/btree/btreetraits.h2
-rw-r--r--vespalib/src/vespa/vespalib/btree/minmaxaggrcalc.h2
-rw-r--r--vespalib/src/vespa/vespalib/btree/minmaxaggregated.h2
-rw-r--r--vespalib/src/vespa/vespalib/btree/noaggrcalc.h2
-rw-r--r--vespalib/src/vespa/vespalib/btree/noaggregated.h2
-rw-r--r--vespalib/src/vespa/vespalib/component/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/component/version.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/component/version.h2
-rw-r--r--vespalib/src/vespa/vespalib/component/versionspecification.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/component/versionspecification.h2
-rw-r--r--vespalib/src/vespa/vespalib/component/vtag.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/component/vtag.h2
-rw-r--r--vespalib/src/vespa/vespalib/crypto/crypto_exception.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/crypto/crypto_exception.h2
-rw-r--r--vespalib/src/vespa/vespalib/crypto/openssl_typedefs.h2
-rw-r--r--vespalib/src/vespa/vespalib/crypto/random.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/crypto/random.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/data/databuffer.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/databuffer.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/input.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/input.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/input_reader.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/input_reader.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/lz4_input_decoder.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/lz4_input_decoder.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/lz4_output_encoder.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/lz4_output_encoder.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/memory.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/memory.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/memory_input.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/memory_input.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/memorydatastore.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/memorydatastore.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/output.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/output.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/output_writer.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/output_writer.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/simple_buffer.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/simple_buffer.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/array_traverser.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/array_traverser.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/array_value.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/array_value.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/basic_value.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/basic_value.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/basic_value_factory.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/basic_value_factory.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/binary_format.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/binary_format.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/convenience.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/convenience.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/cursor.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/cursor.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/empty_value_factory.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/empty_value_factory.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/external_data_value.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/external_data_value.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/external_data_value_factory.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/external_data_value_factory.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/external_memory.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/external_memory.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/inject.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/inject.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/inserter.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/inserter.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/inspector.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/inspector.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/json_format.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/json_format.h2
-rwxr-xr-xvespalib/src/vespa/vespalib/data/slime/make_dist.sh2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/named_symbol_inserter.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/named_symbol_inserter.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/named_symbol_lookup.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/named_symbol_lookup.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/nix_value.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/nix_value.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/object_traverser.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/object_traverser.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/object_value.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/object_value.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/resolved_symbol.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/resolved_symbol.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/root_value.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/root_value.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/slime.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/slime.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/strfmt.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/strfmt.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/symbol.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/symbol.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/symbol_inserter.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/symbol_inserter.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/symbol_lookup.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/symbol_lookup.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/symbol_table.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/symbol_table.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/type.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/type.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/value.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/value.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/value_factory.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/value_factory.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/smart_buffer.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/smart_buffer.h2
-rw-r--r--vespalib/src/vespa/vespalib/data/writable_memory.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/data/writable_memory.h2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/allocator.h2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/allocator.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/array_store.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/array_store.h2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/array_store.hpp16
-rw-r--r--vespalib/src/vespa/vespalib/datastore/array_store_config.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/array_store_config.h2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/buffer_type.cpp54
-rw-r--r--vespalib/src/vespa/vespalib/datastore/buffer_type.h12
-rw-r--r--vespalib/src/vespa/vespalib/datastore/buffer_type.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/bufferstate.cpp16
-rw-r--r--vespalib/src/vespa/vespalib/datastore/bufferstate.h7
-rw-r--r--vespalib/src/vespa/vespalib/datastore/datastore.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/datastore.h2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/datastore.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/datastorebase.cpp71
-rw-r--r--vespalib/src/vespa/vespalib/datastore/datastorebase.h3
-rw-r--r--vespalib/src/vespa/vespalib/datastore/entryref.cpp3
-rw-r--r--vespalib/src/vespa/vespalib/datastore/entryref.h2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/entryref.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/fixed_size_hash_map.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/fixed_size_hash_map.h2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/free_list_allocator.h2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/free_list_allocator.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/handle.h2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/i_compaction_context.h3
-rw-r--r--vespalib/src/vespa/vespalib/datastore/i_unique_store_dictionary_read_snapshot.h2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/raw_allocator.h2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/raw_allocator.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/sharded_hash_map.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/sharded_hash_map.h2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/unique_store.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/unique_store.h2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/unique_store.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/unique_store_btree_dictionary_read_snapshot.h2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/unique_store_btree_dictionary_read_snapshot.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/unique_store_builder.h2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/unique_store_builder.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/unique_store_enumerator.h2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/unique_store_enumerator.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/unique_store_hash_dictionary_read_snapshot.h2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/unique_store_hash_dictionary_read_snapshot.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/geo/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/geo/zcurve.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/geo/zcurve.h2
-rw-r--r--vespalib/src/vespa/vespalib/hwaccelrated/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/hwaccelrated/avx2.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/hwaccelrated/avx2.h2
-rw-r--r--vespalib/src/vespa/vespalib/hwaccelrated/avx512.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/hwaccelrated/avx512.h2
-rw-r--r--vespalib/src/vespa/vespalib/hwaccelrated/avxprivate.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/hwaccelrated/generic.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/hwaccelrated/generic.h2
-rw-r--r--vespalib/src/vespa/vespalib/hwaccelrated/iaccelrated.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/hwaccelrated/iaccelrated.h2
-rw-r--r--vespalib/src/vespa/vespalib/hwaccelrated/private_helpers.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/io/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/io/fileutil.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/io/fileutil.h2
-rw-r--r--vespalib/src/vespa/vespalib/io/mapped_file_input.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/io/mapped_file_input.h2
-rw-r--r--vespalib/src/vespa/vespalib/locale/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/locale/c.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/locale/c.h2
-rw-r--r--vespalib/src/vespa/vespalib/locale/locale.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/locale/locale.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/net/async_resolver.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/async_resolver.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/crypto_engine.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/crypto_engine.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/crypto_socket.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/crypto_socket.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/selector.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/selector.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/server_socket.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/server_socket.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/socket.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/socket.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/socket_address.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/socket_address.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/socket_handle.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/socket_handle.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/socket_options.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/socket_options.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/socket_spec.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/socket_spec.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/sync_crypto_socket.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/sync_crypto_socket.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/authorization_mode.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/authorization_mode.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/auto_reloading_tls_crypto_engine.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/auto_reloading_tls_crypto_engine.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/certificate_verification_callback.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/crypto_codec.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/crypto_codec.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/crypto_codec_adapter.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/crypto_codec_adapter.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/impl/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/impl/direct_buffer_bio.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/impl/direct_buffer_bio.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/impl/openssl_crypto_codec_impl.cpp5
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/impl/openssl_crypto_codec_impl.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/impl/openssl_tls_context_impl.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/impl/openssl_tls_context_impl.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/maybe_tls_crypto_engine.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/maybe_tls_crypto_engine.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/maybe_tls_crypto_socket.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/maybe_tls_crypto_socket.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/peer_credentials.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/peer_credentials.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/peer_policies.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/peer_policies.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/policy_checking_certificate_verifier.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/policy_checking_certificate_verifier.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/protocol_snooping.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/protocol_snooping.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/statistics.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/statistics.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/tls_context.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/tls_context.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/tls_crypto_engine.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/tls_crypto_engine.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/tls_crypto_socket.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/tls_crypto_socket.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/transport_security_options.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/transport_security_options.h2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/transport_security_options_reading.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/transport_security_options_reading.h2
-rw-r--r--vespalib/src/vespa/vespalib/objects/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/objects/hexdump.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/objects/hexdump.h2
-rw-r--r--vespalib/src/vespa/vespalib/objects/nbo.h2
-rw-r--r--vespalib/src/vespa/vespalib/objects/nbostream.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/objects/nbostream.h2
-rw-r--r--vespalib/src/vespa/vespalib/portal/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/portal/handle_manager.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/portal/handle_manager.h2
-rw-r--r--vespalib/src/vespa/vespalib/portal/http_connection.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/portal/http_connection.h2
-rw-r--r--vespalib/src/vespa/vespalib/portal/http_request.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/portal/http_request.h2
-rw-r--r--vespalib/src/vespa/vespalib/portal/listener.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/portal/listener.h2
-rw-r--r--vespalib/src/vespa/vespalib/portal/portal.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/portal/portal.h2
-rw-r--r--vespalib/src/vespa/vespalib/portal/reactor.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/portal/reactor.h2
-rw-r--r--vespalib/src/vespa/vespalib/regex/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/regex/regex.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/regex/regex.h2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/allocator.h3
-rw-r--r--vespalib/src/vespa/vespalib/stllike/asciistream.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/asciistream.h2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/hash_fun.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/hash_fun.h2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/hash_map.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/hash_map.h2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/hash_map.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/hash_map_equal.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/hash_map_insert.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/hash_set.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/hash_set.h2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/hash_set.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/hash_set_insert.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/hashtable.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/hashtable.h2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/hashtable.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/lexical_cast.h2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/replace_variable.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/replace_variable.h2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/string.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/string.h2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/string.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/vector_map.h2
-rw-r--r--vespalib/src/vespa/vespalib/test/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/test/btree/aggregated_printer.h2
-rw-r--r--vespalib/src/vespa/vespalib/test/btree/btree_printer.h2
-rw-r--r--vespalib/src/vespa/vespalib/test/btree/data_printer.h2
-rw-r--r--vespalib/src/vespa/vespalib/test/chunked_input.h2
-rw-r--r--vespalib/src/vespa/vespalib/test/datastore/memstats.h2
-rw-r--r--vespalib/src/vespa/vespalib/test/insertion_operators.h2
-rw-r--r--vespalib/src/vespa/vespalib/test/make_tls_options_for_testing.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/test/make_tls_options_for_testing.h2
-rw-r--r--vespalib/src/vespa/vespalib/test/memory_allocator_observer.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/test/memory_allocator_observer.h2
-rw-r--r--vespalib/src/vespa/vespalib/test/peer_policy_utils.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/test/peer_policy_utils.h2
-rw-r--r--vespalib/src/vespa/vespalib/test/socket_options_verifier.h2
-rw-r--r--vespalib/src/vespa/vespalib/testkit/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/testkit/generated_fixture_macros.h2
-rwxr-xr-xvespalib/src/vespa/vespalib/testkit/progctl.sh2
-rw-r--r--vespalib/src/vespa/vespalib/testkit/test_comparators.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/testkit/test_comparators.h2
-rw-r--r--vespalib/src/vespa/vespalib/testkit/test_hook.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/testkit/test_hook.h2
-rw-r--r--vespalib/src/vespa/vespalib/testkit/test_kit.h2
-rw-r--r--vespalib/src/vespa/vespalib/testkit/test_macros.h2
-rw-r--r--vespalib/src/vespa/vespalib/testkit/test_master.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/testkit/test_master.h2
-rw-r--r--vespalib/src/vespa/vespalib/testkit/test_master.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/testkit/test_state_guard.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/testkit/test_state_guard.h2
-rw-r--r--vespalib/src/vespa/vespalib/testkit/testapp.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/testkit/testapp.h2
-rw-r--r--vespalib/src/vespa/vespalib/testkit/time_bomb.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/testkit/time_bomb.h2
-rw-r--r--vespalib/src/vespa/vespalib/text/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/text/lowercase.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/text/lowercase.h2
-rw-r--r--vespalib/src/vespa/vespalib/text/stringtokenizer.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/text/stringtokenizer.h2
-rw-r--r--vespalib/src/vespa/vespalib/text/utf8.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/text/utf8.h2
-rw-r--r--vespalib/src/vespa/vespalib/time/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/time/time_box.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/time/time_box.h2
-rw-r--r--vespalib/src/vespa/vespalib/trace/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/trace/slime_trace_deserializer.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/trace/slime_trace_deserializer.h2
-rw-r--r--vespalib/src/vespa/vespalib/trace/slime_trace_serializer.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/trace/slime_trace_serializer.h2
-rw-r--r--vespalib/src/vespa/vespalib/trace/trace.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/trace/trace.h2
-rw-r--r--vespalib/src/vespa/vespalib/trace/tracelevel.h2
-rw-r--r--vespalib/src/vespa/vespalib/trace/tracenode.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/trace/tracenode.h2
-rw-r--r--vespalib/src/vespa/vespalib/trace/tracevisitor.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/CMakeLists.txt4
-rw-r--r--vespalib/src/vespa/vespalib/util/active.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/active.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/address_space.cpp9
-rw-r--r--vespalib/src/vespa/vespalib/util/address_space.h3
-rw-r--r--vespalib/src/vespa/vespalib/util/alloc.cpp7
-rw-r--r--vespalib/src/vespa/vespalib/util/alloc.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/approx.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/approx.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/array.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/array.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/array.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/array_equal.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/arrayqueue.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/arrayref.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/arraysize.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/assert.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/assert.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/backtrace.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/backtrace.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/barrier.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/barrier.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/benchmark_timer.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/benchmark_timer.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/bfloat16.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/bfloat16.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/binary_hamming_distance.cpp33
-rw-r--r--vespalib/src/vespa/vespalib/util/binary_hamming_distance.h14
-rw-r--r--vespalib/src/vespa/vespalib/util/blockingthreadstackexecutor.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/blockingthreadstackexecutor.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/bobhash.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/box.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/box.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/buffer.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/child_process.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/child_process.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/classname.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/classname.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/compress.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/compress.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/compressionconfig.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/compressor.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/compressor.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/count_down_latch.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/destructor_callbacks.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/destructor_callbacks.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/dual_merge_director.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/dual_merge_director.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/error.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/error.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/eventbarrier.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/exception.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/exception.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/exceptions.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/exceptions.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/executor.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/executor_stats.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/fiddle.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/file_area_freelist.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/file_area_freelist.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/gate.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/gencnt.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/gencnt.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/generationhandler.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/generationhandler.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/generationholder.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/generationholder.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/guard.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/hdr_abort.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/hdr_abort.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/host_name.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/host_name.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/idestructorcallback.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/inline.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/issue.cpp65
-rw-r--r--vespalib/src/vespa/vespalib/util/issue.h66
-rw-r--r--vespalib/src/vespa/vespalib/util/joinable.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/joinable.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/lambdatask.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/latch.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/latch.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/left_right_heap.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/left_right_heap.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/left_right_heap.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/lz4compressor.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/lz4compressor.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/macro.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/md5.c2
-rw-r--r--vespalib/src/vespa/vespalib/util/md5.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/memory.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/memory_allocator.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/memoryusage.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/memoryusage.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/mmap_file_allocator.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/mmap_file_allocator.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/mmap_file_allocator_factory.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/mmap_file_allocator_factory.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/noncopyable.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/optimized.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/overview.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/printable.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/printable.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/printable.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/priority_queue.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/priority_queue.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/ptrholder.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/rand48.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/random.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/random.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/rcuvector.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/rcuvector.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/rcuvector.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/referencecounter.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/regexp.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/regexp.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/rendezvous.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/rendezvous.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/require.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/require.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/reusable_set.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/reusable_set.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/reusable_set_handle.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/reusable_set_handle.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/reusable_set_pool.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/reusable_set_pool.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/round_up_to_page_size.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/round_up_to_page_size.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/runnable.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/runnable.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/runnable_pair.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/runnable_pair.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/sequence.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/sequence.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/sha1.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/sha1.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/shared_string_repo.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/shared_string_repo.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/sig_catch.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/sig_catch.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/signalhandler.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/signalhandler.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/simple_thread_bundle.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/simple_thread_bundle.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/size_literals.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/small_vector.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/small_vector.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/spin_lock.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/stash.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/stash.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/string_hash.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/string_hash.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/string_id.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/stringfmt.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/stringfmt.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/syncable.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/thread.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/thread.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/thread_bundle.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/thread_bundle.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/threadexecutor.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/threadstackexecutor.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/threadstackexecutor.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/threadstackexecutorbase.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/threadstackexecutorbase.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/traits.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/trinary.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/typify.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/unwind_message.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/unwind_message.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/valgrind.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/valgrind.h2
-rw-r--r--vespalib/src/vespa/vespalib/util/zstdcompressor.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/util/zstdcompressor.h2
-rw-r--r--vespalib/src/vespa/vespalib/websocket/CMakeLists.txt2
-rw-r--r--vespalib/src/vespa/vespalib/websocket/acceptor.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/websocket/acceptor.h2
-rw-r--r--vespalib/src/vespa/vespalib/websocket/buffer.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/websocket/buffer.h2
-rw-r--r--vespalib/src/vespa/vespalib/websocket/connection.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/websocket/connection.h2
-rw-r--r--vespalib/src/vespa/vespalib/websocket/frame.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/websocket/frame.h2
-rw-r--r--vespalib/src/vespa/vespalib/websocket/handler.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/websocket/handler.h2
-rw-r--r--vespalib/src/vespa/vespalib/websocket/key.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/websocket/key.h2
-rw-r--r--vespalib/src/vespa/vespalib/websocket/request.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/websocket/request.h2
-rw-r--r--vespalib/src/vespa/vespalib/websocket/websocket_server.cpp2
-rw-r--r--vespalib/src/vespa/vespalib/websocket/websocket_server.h2
-rw-r--r--vespalog/CMakeLists.txt2
-rw-r--r--vespalog/pom.xml2
-rw-r--r--vespalog/src/Log.pm2
-rw-r--r--vespalog/src/logctl/CMakeLists.txt2
-rw-r--r--vespalog/src/logctl/logctl.cpp2
-rw-r--r--vespalog/src/logger/CMakeLists.txt2
-rw-r--r--vespalog/src/logger/llreader.cpp2
-rw-r--r--vespalog/src/logger/llreader.h2
-rw-r--r--vespalog/src/logger/logger.cpp2
-rw-r--r--vespalog/src/logger/logreplay.c2
-rw-r--r--vespalog/src/logger/runserver.cpp2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/DefaultLevelController.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/FileLogTarget.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/InvalidLogFormatException.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/LevelController.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/LevelControllerRepo.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/LogFileDb.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/LogLevel.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/LogMessage.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/LogMessageTimeComparator.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/LogSetup.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/LogTarget.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/LogUtil.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/MappedLevelController.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/MappedLevelControllerRepo.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/RejectFilter.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/StderrLogTarget.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/StdoutLogTarget.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/UncloseableOutputStream.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/Util.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/VespaFormat.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/VespaFormatter.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/VespaLevelControllerRepo.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/VespaLogHandler.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/event/Collection.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/event/Count.java2
-rwxr-xr-xvespalog/src/main/java/com/yahoo/log/event/CountGroup.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/event/Crash.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/event/Event.java2
-rwxr-xr-xvespalog/src/main/java/com/yahoo/log/event/Histogram.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/event/MalformedEventException.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/event/Progress.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/event/Reloaded.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/event/Reloading.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/event/Started.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/event/Starting.java2
-rwxr-xr-xvespalog/src/main/java/com/yahoo/log/event/State.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/event/Stopped.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/event/Stopping.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/event/Unknown.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/event/Value.java2
-rwxr-xr-xvespalog/src/main/java/com/yahoo/log/event/ValueGroup.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/event/package-info.java2
-rw-r--r--vespalog/src/main/java/com/yahoo/log/package-info.java2
-rw-r--r--vespalog/src/test/CMakeLists.txt2
-rw-r--r--vespalog/src/test/bufferedlogskiptest.cpp2
-rwxr-xr-xvespalog/src/test/bufferedlogskiptest_test.sh2
-rw-r--r--vespalog/src/test/bufferedlogtest.cpp2
-rw-r--r--vespalog/src/test/bufferedlogtest.logger1.cpp2
-rw-r--r--vespalog/src/test/bufferedlogtest.logger1.h2
-rw-r--r--vespalog/src/test/bufferedlogtest.logger2.cpp2
-rw-r--r--vespalog/src/test/bufferedlogtest.logger2.h2
-rwxr-xr-xvespalog/src/test/bufferedlogtest_test.sh2
-rw-r--r--vespalog/src/test/java/com/yahoo/log/FileLogTargetTest.java2
-rw-r--r--vespalog/src/test/java/com/yahoo/log/LogFileDbTest.java2
-rw-r--r--vespalog/src/test/java/com/yahoo/log/LogLevelTestCase.java2
-rw-r--r--vespalog/src/test/java/com/yahoo/log/LogMessageTestCase.java2
-rw-r--r--vespalog/src/test/java/com/yahoo/log/LogSetupTestCase.java2
-rw-r--r--vespalog/src/test/java/com/yahoo/log/LogUtilTest.java2
-rw-r--r--vespalog/src/test/java/com/yahoo/log/RejectFilterTest.java2
-rw-r--r--vespalog/src/test/java/com/yahoo/log/TimeComparatorTestCase.java2
-rw-r--r--vespalog/src/test/java/com/yahoo/log/UncloseableOutputStreamTestCase.java2
-rw-r--r--vespalog/src/test/java/com/yahoo/log/UtilTestCase.java2
-rw-r--r--vespalog/src/test/java/com/yahoo/log/VespaFormatterTestCase.java2
-rw-r--r--vespalog/src/test/java/com/yahoo/log/VespaLevelControllerRepoTest.java2
-rw-r--r--vespalog/src/test/java/com/yahoo/log/VespaLogHandlerTestCase.java2
-rw-r--r--vespalog/src/test/java/com/yahoo/log/event/EventTestCase.java2
-rw-r--r--vespalog/src/test/java/com/yahoo/log/event/SingleHandler.java2
-rw-r--r--vespalog/src/test/logtest.cpp2
-rw-r--r--vespalog/src/test/rejectfiltertest.cpp2
-rw-r--r--vespalog/src/test/simple/CMakeLists.txt2
-rw-r--r--vespalog/src/test/simple/logtest.cpp2
-rw-r--r--vespalog/src/test/threads/CMakeLists.txt2
-rw-r--r--vespalog/src/test/threads/testthreads.cpp2
-rw-r--r--vespalog/src/vespa-logfmt/logfilter.c2
-rw-r--r--vespalog/src/vespa-logfmt/vespa-logfmt.12
-rwxr-xr-xvespalog/src/vespa-logfmt/vespa-logfmt.pl2
-rw-r--r--vespalog/src/vespa/log/CMakeLists.txt2
-rw-r--r--vespalog/src/vespa/log/bufferedlogger.cpp2
-rw-r--r--vespalog/src/vespa/log/bufferedlogger.h2
-rw-r--r--vespalog/src/vespa/log/component.cpp2
-rw-r--r--vespalog/src/vespa/log/component.h2
-rw-r--r--vespalog/src/vespa/log/control-file.cpp2
-rw-r--r--vespalog/src/vespa/log/control-file.h2
-rwxr-xr-xvespalog/src/vespa/log/create-multiarg-file.pl2
-rw-r--r--vespalog/src/vespa/log/event-count-multiarg.cpp2
-rw-r--r--vespalog/src/vespa/log/event-count-multiarg.h2
-rw-r--r--vespalog/src/vespa/log/event-value-multiarg.cpp2
-rw-r--r--vespalog/src/vespa/log/event-value-multiarg.h2
-rw-r--r--vespalog/src/vespa/log/internal.cpp2
-rw-r--r--vespalog/src/vespa/log/internal.h2
-rw-r--r--vespalog/src/vespa/log/llparser.cpp2
-rw-r--r--vespalog/src/vespa/log/llparser.h2
-rw-r--r--vespalog/src/vespa/log/lock.cpp2
-rw-r--r--vespalog/src/vespa/log/lock.h2
-rw-r--r--vespalog/src/vespa/log/log-assert.cpp2
-rw-r--r--vespalog/src/vespa/log/log-target-fd.cpp2
-rw-r--r--vespalog/src/vespa/log/log-target-fd.h2
-rw-r--r--vespalog/src/vespa/log/log-target-file.cpp2
-rw-r--r--vespalog/src/vespa/log/log-target-file.h2
-rw-r--r--vespalog/src/vespa/log/log-target.cpp2
-rw-r--r--vespalog/src/vespa/log/log-target.h2
-rw-r--r--vespalog/src/vespa/log/log.cpp4
-rw-r--r--vespalog/src/vespa/log/log.h2
-rwxr-xr-xvespalog/src/vespa/log/mknm.pl2
-rw-r--r--vespalog/src/vespa/log/reject-filter.cpp2
-rw-r--r--vespalog/src/vespa/log/reject-filter.h2
-rw-r--r--vespamalloc/CMakeLists.txt2
-rwxr-xr-xvespamalloc/bin/parsememorydump.pl2
-rw-r--r--vespamalloc/src/tests/CMakeLists.txt2
-rw-r--r--vespamalloc/src/tests/allocfree/CMakeLists.txt2
-rw-r--r--vespamalloc/src/tests/allocfree/allocfree.cpp2
-rwxr-xr-xvespamalloc/src/tests/allocfree/allocfree_benchmark.sh2
-rwxr-xr-xvespamalloc/src/tests/allocfree/allocfree_test.sh2
-rw-r--r--vespamalloc/src/tests/allocfree/creatingmanythreads.cpp2
-rwxr-xr-xvespamalloc/src/tests/allocfree/generate_testtable.sh2
-rw-r--r--vespamalloc/src/tests/allocfree/linklist.cpp4
-rw-r--r--vespamalloc/src/tests/allocfree/producerconsumer.cpp2
-rw-r--r--vespamalloc/src/tests/allocfree/producerconsumer.h2
-rw-r--r--vespamalloc/src/tests/allocfree/queue.h2
-rw-r--r--vespamalloc/src/tests/allocfree/realloc.cpp2
-rwxr-xr-xvespamalloc/src/tests/allocfree/timeusage.sh2
-rw-r--r--vespamalloc/src/tests/doubledelete/CMakeLists.txt2
-rw-r--r--vespamalloc/src/tests/doubledelete/doubledelete.cpp2
-rwxr-xr-xvespamalloc/src/tests/doubledelete/doubledelete_test.sh2
-rw-r--r--vespamalloc/src/tests/doubledelete/expectsignal.cpp2
-rw-r--r--vespamalloc/src/tests/overwrite/CMakeLists.txt2
-rw-r--r--vespamalloc/src/tests/overwrite/expectsignal.cpp2
-rw-r--r--vespamalloc/src/tests/overwrite/overwrite.cpp2
-rwxr-xr-xvespamalloc/src/tests/overwrite/overwrite_test.sh2
-rw-r--r--vespamalloc/src/tests/stacktrace/CMakeLists.txt2
-rw-r--r--vespamalloc/src/tests/stacktrace/stacktrace.cpp2
-rw-r--r--vespamalloc/src/tests/test.cpp2
-rw-r--r--vespamalloc/src/tests/test1/CMakeLists.txt2
-rw-r--r--vespamalloc/src/tests/test1/new_test.cpp2
-rw-r--r--vespamalloc/src/tests/test1/testatomic.cpp2
-rw-r--r--vespamalloc/src/tests/test2/CMakeLists.txt2
-rw-r--r--vespamalloc/src/tests/test2/testgraph.cpp2
-rw-r--r--vespamalloc/src/tests/thread/CMakeLists.txt2
-rw-r--r--vespamalloc/src/tests/thread/racemanythreads.cpp2
-rw-r--r--vespamalloc/src/tests/thread/thread.cpp2
-rwxr-xr-xvespamalloc/src/tests/thread/thread_test.sh2
-rw-r--r--vespamalloc/src/vespamalloc/CMakeLists.txt2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/CMakeLists.txt2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/allocchunk.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/allocchunk.h2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/common.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/common.h2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/datasegment.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/datasegment.h2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/datasegment.hpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/datasegmentd.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/datasegmentdst.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/globalpool.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/globalpool.h2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/globalpool.hpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/globalpoold.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/globalpooldst.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/malloc.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/malloc.h2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/mallocd.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/mallocd.h2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/mallocdst.h2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/mallocdst16.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/mallocdst16_nl.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/memblock.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/memblock.h2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/memblock.hpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/memblockboundscheck.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/memblockboundscheck.h2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/memblockboundscheck.hpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/memblockboundscheck_d.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/memblockboundscheck_d.h2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/memblockboundscheck_dst.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/memblockboundscheck_dst.h2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/memorywatcher.h2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/mmap.cpp6
-rw-r--r--vespamalloc/src/vespamalloc/malloc/overload.h2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/stat.h2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/threadlist.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/threadlist.h2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/threadlist.hpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/threadlistd.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/threadlistdst.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/threadpool.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/threadpool.h2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/threadpool.hpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/threadpoold.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/threadpooldst.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/threadproxy.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/malloc/threadproxy.h2
-rw-r--r--vespamalloc/src/vespamalloc/util/CMakeLists.txt2
-rw-r--r--vespamalloc/src/vespamalloc/util/callgraph.h2
-rw-r--r--vespamalloc/src/vespamalloc/util/callstack.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/util/callstack.h2
-rw-r--r--vespamalloc/src/vespamalloc/util/index.h2
-rw-r--r--vespamalloc/src/vespamalloc/util/osmem.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/util/osmem.h2
-rw-r--r--vespamalloc/src/vespamalloc/util/stream.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/util/stream.h2
-rw-r--r--vespamalloc/src/vespamalloc/util/traceutil.cpp2
-rw-r--r--vespamalloc/src/vespamalloc/util/traceutil.h2
-rw-r--r--vsm/CMakeLists.txt2
-rw-r--r--vsm/pom.xml2
-rw-r--r--vsm/src/tests/charbuffer/CMakeLists.txt2
-rw-r--r--vsm/src/tests/charbuffer/charbuffer.cpp2
-rw-r--r--vsm/src/tests/docsum/CMakeLists.txt2
-rw-r--r--vsm/src/tests/docsum/docsum.cpp2
-rw-r--r--vsm/src/tests/document/CMakeLists.txt2
-rw-r--r--vsm/src/tests/document/document.cpp2
-rw-r--r--vsm/src/tests/searcher/CMakeLists.txt2
-rw-r--r--vsm/src/tests/searcher/searcher_test.cpp2
-rw-r--r--vsm/src/tests/textutil/CMakeLists.txt2
-rw-r--r--vsm/src/tests/textutil/textutil.cpp2
-rw-r--r--vsm/src/vespa/vsm/CMakeLists.txt2
-rw-r--r--vsm/src/vespa/vsm/common/CMakeLists.txt2
-rw-r--r--vsm/src/vespa/vsm/common/charbuffer.cpp2
-rw-r--r--vsm/src/vespa/vsm/common/charbuffer.h2
-rw-r--r--vsm/src/vespa/vsm/common/docsum.h2
-rw-r--r--vsm/src/vespa/vsm/common/document.cpp2
-rw-r--r--vsm/src/vespa/vsm/common/document.h2
-rw-r--r--vsm/src/vespa/vsm/common/documenttypemapping.cpp2
-rw-r--r--vsm/src/vespa/vsm/common/documenttypemapping.h2
-rw-r--r--vsm/src/vespa/vsm/common/fieldmodifier.cpp2
-rw-r--r--vsm/src/vespa/vsm/common/fieldmodifier.h2
-rw-r--r--vsm/src/vespa/vsm/common/storagedocument.cpp2
-rw-r--r--vsm/src/vespa/vsm/common/storagedocument.h2
-rw-r--r--vsm/src/vespa/vsm/config/CMakeLists.txt2
-rw-r--r--vsm/src/vespa/vsm/config/vsm-cfif.h2
-rw-r--r--vsm/src/vespa/vsm/config/vsm.def2
-rw-r--r--vsm/src/vespa/vsm/config/vsmfields.def2
-rw-r--r--vsm/src/vespa/vsm/config/vsmsummary.def2
-rw-r--r--vsm/src/vespa/vsm/searcher/CMakeLists.txt2
-rw-r--r--vsm/src/vespa/vsm/searcher/boolfieldsearcher.cpp2
-rw-r--r--vsm/src/vespa/vsm/searcher/boolfieldsearcher.h2
-rw-r--r--vsm/src/vespa/vsm/searcher/fieldsearcher.cpp2
-rw-r--r--vsm/src/vespa/vsm/searcher/fieldsearcher.h2
-rw-r--r--vsm/src/vespa/vsm/searcher/floatfieldsearcher.cpp2
-rw-r--r--vsm/src/vespa/vsm/searcher/floatfieldsearcher.h2
-rw-r--r--vsm/src/vespa/vsm/searcher/fold.cpp2
-rw-r--r--vsm/src/vespa/vsm/searcher/fold.h2
-rw-r--r--vsm/src/vespa/vsm/searcher/futf8strchrfieldsearcher.cpp2
-rw-r--r--vsm/src/vespa/vsm/searcher/futf8strchrfieldsearcher.h2
-rw-r--r--vsm/src/vespa/vsm/searcher/intfieldsearcher.cpp2
-rw-r--r--vsm/src/vespa/vsm/searcher/intfieldsearcher.h2
-rw-r--r--vsm/src/vespa/vsm/searcher/strchrfieldsearcher.cpp2
-rw-r--r--vsm/src/vespa/vsm/searcher/strchrfieldsearcher.h2
-rw-r--r--vsm/src/vespa/vsm/searcher/utf8exactstringfieldsearcher.cpp2
-rw-r--r--vsm/src/vespa/vsm/searcher/utf8exactstringfieldsearcher.h2
-rw-r--r--vsm/src/vespa/vsm/searcher/utf8flexiblestringfieldsearcher.cpp2
-rw-r--r--vsm/src/vespa/vsm/searcher/utf8flexiblestringfieldsearcher.h2
-rw-r--r--vsm/src/vespa/vsm/searcher/utf8strchrfieldsearcher.cpp2
-rw-r--r--vsm/src/vespa/vsm/searcher/utf8strchrfieldsearcher.h2
-rw-r--r--vsm/src/vespa/vsm/searcher/utf8stringfieldsearcherbase.cpp2
-rw-r--r--vsm/src/vespa/vsm/searcher/utf8stringfieldsearcherbase.h2
-rw-r--r--vsm/src/vespa/vsm/searcher/utf8substringsearcher.cpp2
-rw-r--r--vsm/src/vespa/vsm/searcher/utf8substringsearcher.h2
-rw-r--r--vsm/src/vespa/vsm/searcher/utf8substringsnippetmodifier.cpp2
-rw-r--r--vsm/src/vespa/vsm/searcher/utf8substringsnippetmodifier.h2
-rw-r--r--vsm/src/vespa/vsm/searcher/utf8suffixstringfieldsearcher.cpp2
-rw-r--r--vsm/src/vespa/vsm/searcher/utf8suffixstringfieldsearcher.h2
-rw-r--r--vsm/src/vespa/vsm/vsm/CMakeLists.txt2
-rw-r--r--vsm/src/vespa/vsm/vsm/docsumconfig.cpp2
-rw-r--r--vsm/src/vespa/vsm/vsm/docsumconfig.h2
-rw-r--r--vsm/src/vespa/vsm/vsm/docsumfieldspec.cpp2
-rw-r--r--vsm/src/vespa/vsm/vsm/docsumfieldspec.h2
-rw-r--r--vsm/src/vespa/vsm/vsm/docsumfilter.cpp2
-rw-r--r--vsm/src/vespa/vsm/vsm/docsumfilter.h2
-rw-r--r--vsm/src/vespa/vsm/vsm/fieldsearchspec.cpp2
-rw-r--r--vsm/src/vespa/vsm/vsm/fieldsearchspec.h2
-rw-r--r--vsm/src/vespa/vsm/vsm/flattendocsumwriter.cpp2
-rw-r--r--vsm/src/vespa/vsm/vsm/flattendocsumwriter.h2
-rw-r--r--vsm/src/vespa/vsm/vsm/slimefieldwriter.cpp2
-rw-r--r--vsm/src/vespa/vsm/vsm/slimefieldwriter.h2
-rw-r--r--vsm/src/vespa/vsm/vsm/snippetmodifier.cpp2
-rw-r--r--vsm/src/vespa/vsm/vsm/snippetmodifier.h2
-rw-r--r--vsm/src/vespa/vsm/vsm/vsm-adapter.cpp2
-rw-r--r--vsm/src/vespa/vsm/vsm/vsm-adapter.h2
-rw-r--r--vtag.cmake2
-rwxr-xr-xyolean/README.sh2
-rw-r--r--yolean/abi-spec.json51
-rw-r--r--yolean/pom.xml2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/Exceptions.java20
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/UncheckedInterruptedException.java27
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/chain/After.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/chain/Before.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/chain/Chain.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/chain/ChainBuilder.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/chain/ChainCycleException.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/chain/Dependencies.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/chain/DirectedGraph.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/chain/EnumeratedIdentitySet.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/chain/Provides.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/chain/Vertex.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/chain/package-info.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/concurrent/ConcurrentResourcePool.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/concurrent/CopyOnWriteHashMap.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/concurrent/ResourceFactory.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/concurrent/ResourcePool.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/concurrent/Sleeper.java29
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/concurrent/ThreadRobustList.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/concurrent/package-info.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/function/ThrowingConsumer.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/function/ThrowingFunction.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/function/ThrowingSupplier.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/function/package-info.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/package-info.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/system/CatchSignals.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/system/package-info.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/trace/TraceNode.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/trace/TraceVisitor.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/trace/package-info.java2
-rw-r--r--yolean/src/test/java/com/yahoo/yolean/ExceptionsTestCase.java2
-rw-r--r--yolean/src/test/java/com/yahoo/yolean/chain/ChainBuilderTest.java2
-rw-r--r--yolean/src/test/java/com/yahoo/yolean/chain/ChainTest.java2
-rw-r--r--yolean/src/test/java/com/yahoo/yolean/chain/DirectedGraphTest.java2
-rw-r--r--yolean/src/test/java/com/yahoo/yolean/chain/EnumeratedIdentitySetTest.java2
-rw-r--r--yolean/src/test/java/com/yahoo/yolean/concurrent/CopyOnWriteHashMapTest.java2
-rw-r--r--yolean/src/test/java/com/yahoo/yolean/concurrent/ThreadRobustListTestCase.java2
-rw-r--r--yolean/src/test/java/com/yahoo/yolean/system/CatchSignalsTestCase.java2
-rw-r--r--yolean/src/test/java/com/yahoo/yolean/trace/TraceNodeTestCase.java2
-rw-r--r--yolean/src/test/java/com/yahoo/yolean/trace/TraceVisitorTestCase.java2
-rw-r--r--zkfacade/CMakeLists.txt2
-rw-r--r--zkfacade/pom.xml2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/CompletionTimeoutException.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/ConnectionSpec.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/CuratorCompletionWaiter.java20
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/Lock.java2
-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.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/api/VespaCurator.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/api/package-info.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MemoryFileSystem.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCurator.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCuratorFramework.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/mock/package-info.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/package-info.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/recipes/CuratorCounter.java10
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/recipes/CuratorLockException.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/recipes/package-info.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LatencyMetrics.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LatencyStats.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LockAttempt.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LockAttemptSamples.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LockMetrics.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LockStats.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/stats/RecordedLockAttempts.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/stats/ThreadLockStats.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/stats/package-info.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorCreateOperation.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorDeleteOperation.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorOperation.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorOperations.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorSetDataOperation.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorTransaction.java4
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/TransactionChanges.java2
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/package-info.java2
-rw-r--r--zkfacade/src/main/java/org/apache/curator/Dummy.java2
-rw-r--r--zkfacade/src/main/java/org/apache/curator/framework/api/package-info.java2
-rw-r--r--zkfacade/src/main/java/org/apache/curator/framework/api/transaction/package-info.java2
-rw-r--r--zkfacade/src/main/java/org/apache/curator/framework/listen/package-info.java2
-rw-r--r--zkfacade/src/main/java/org/apache/curator/framework/package-info.java2
-rw-r--r--zkfacade/src/main/java/org/apache/curator/framework/recipes/atomic/package-info.java2
-rw-r--r--zkfacade/src/main/java/org/apache/curator/framework/recipes/barriers/package-info.java2
-rw-r--r--zkfacade/src/main/java/org/apache/curator/framework/recipes/cache/package-info.java2
-rw-r--r--zkfacade/src/main/java/org/apache/curator/framework/recipes/locks/package-info.java2
-rw-r--r--zkfacade/src/main/java/org/apache/curator/framework/state/package-info.java2
-rw-r--r--zkfacade/src/main/java/org/apache/curator/package-info.java2
-rw-r--r--zkfacade/src/main/java/org/apache/curator/retry/package-info.java2
-rw-r--r--zkfacade/src/main/java/org/apache/zookeeper/client/package-info.java2
-rw-r--r--zkfacade/src/main/java/org/apache/zookeeper/common/package-info.java2
-rw-r--r--zkfacade/src/main/java/org/apache/zookeeper/data/package-info.java2
-rw-r--r--zkfacade/src/main/java/org/apache/zookeeper/package-info.java2
-rw-r--r--zkfacade/src/main/java/org/apache/zookeeper/server/quorum/package-info.java2
-rw-r--r--zkfacade/src/test/java/com/yahoo/vespa/curator/ConnectionSpecTest.java2
-rw-r--r--zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorCompletionWaiterTest.java2
-rw-r--r--zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorCounterTest.java9
-rw-r--r--zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorTest.java2
-rw-r--r--zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LatencyStatsTest.java2
-rw-r--r--zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockAttemptSamplesTest.java2
-rw-r--r--zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockTest.java2
-rw-r--r--zookeeper-client-common/README.md2
-rw-r--r--zookeeper-client-common/src/main/java/com/yahoo/vespa/zookeeper/client/VespaSslContextProvider.java2
-rw-r--r--zookeeper-client-common/src/main/java/com/yahoo/vespa/zookeeper/client/ZkClientConfigBuilder.java2
-rw-r--r--zookeeper-client-common/src/test/java/com/yahoo/vespa/zookeeper/client/ZkClientConfigBuilderTest.java2
-rw-r--r--zookeeper-command-line-client/pom.xml2
-rw-r--r--zookeeper-command-line-client/src/main/java/com/yahoo/vespa/zookeeper/cli/FourLetterWordMain.java2
-rw-r--r--zookeeper-command-line-client/src/main/java/com/yahoo/vespa/zookeeper/cli/Main.java2
-rwxr-xr-xzookeeper-command-line-client/src/main/sh/vespa-zkcat2
-rwxr-xr-xzookeeper-command-line-client/src/main/sh/vespa-zkcli2
-rwxr-xr-xzookeeper-command-line-client/src/main/sh/vespa-zkctl2
-rw-r--r--zookeeper-command-line-client/src/main/sh/vespa-zkflw2
-rwxr-xr-xzookeeper-command-line-client/src/main/sh/vespa-zkls2
-rw-r--r--zookeeper-server/CMakeLists.txt2
-rw-r--r--zookeeper-server/pom.xml2
-rw-r--r--zookeeper-server/zookeeper-server-3.6.2/CMakeLists.txt2
-rw-r--r--zookeeper-server/zookeeper-server-3.6.2/pom.xml2
-rw-r--r--zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java2
-rw-r--r--zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaMtlsAuthenticationProvider.java2
-rw-r--r--zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaQuorumPeer.java2
-rw-r--r--zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java2
-rw-r--r--zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java2
-rw-r--r--zookeeper-server/zookeeper-server-3.6.2/src/main/java/org/apache/zookeeper/common/NetUtils.java2
-rw-r--r--zookeeper-server/zookeeper-server-3.6.2/src/main/java/org/apache/zookeeper/server/VespaNettyServerCnxnFactory.java2
-rw-r--r--zookeeper-server/zookeeper-server-3.6.3/CMakeLists.txt2
-rw-r--r--zookeeper-server/zookeeper-server-3.6.3/pom.xml2
-rw-r--r--zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java2
-rw-r--r--zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/VespaMtlsAuthenticationProvider.java2
-rw-r--r--zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/VespaQuorumPeer.java2
-rw-r--r--zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java2
-rw-r--r--zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java2
-rw-r--r--zookeeper-server/zookeeper-server-3.6.3/src/main/java/org/apache/zookeeper/common/NetUtils.java2
-rw-r--r--zookeeper-server/zookeeper-server-3.6.3/src/main/java/org/apache/zookeeper/server/VespaNettyServerCnxnFactory.java2
-rw-r--r--zookeeper-server/zookeeper-server-common/pom.xml2
-rw-r--r--zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Configurator.java2
-rw-r--r--zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/DummyVespaZooKeeperServer.java2
-rw-r--r--zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/ExponentialBackoff.java2
-rw-r--r--zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/QuorumPeer.java2
-rw-r--r--zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/ReconfigException.java2
-rw-r--r--zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java2
-rw-r--r--zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Sleeper.java2
-rw-r--r--zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaSslContextProvider.java2
-rw-r--r--zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdmin.java2
-rw-r--r--zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServer.java2
-rw-r--r--zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperRunner.java2
-rw-r--r--zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/package-info.java2
-rw-r--r--zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ConfiguratorTest.java2
-rw-r--r--zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ExponentialBackoffTest.java2
-rw-r--r--zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java2
17538 files changed, 68530 insertions, 146813 deletions
diff --git a/.copr/Makefile b/.copr/Makefile
new file mode 100644
index 00000000000..d515053b8bc
--- /dev/null
+++ b/.copr/Makefile
@@ -0,0 +1,22 @@
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+TOP = $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
+
+RPMTOPDIR := $(HOME)/rpmbuild
+SOURCEDIR := $(RPMTOPDIR)/SOURCES
+SPECDIR := $(RPMTOPDIR)/SPECS
+SPECFILE := $(SPECDIR)/vespa-$(VESPA_VERSION).spec
+
+deps:
+ dnf install -y git rpmdevtools
+
+srpm: VESPA_VERSION = $$(git tag --points-at HEAD | grep -oP "\d+\.\d+\.\d+" | sort -V | tail -1)
+srpm: deps
+ $(TOP)/../dist.sh $(VESPA_VERSION)
+ spectool -g -C $(SOURCEDIR) $(SPECDIR)/vespa-$(VESPA_VERSION).spec
+ rpmbuild -bs --define "_topdir $(RPMTOPDIR)" $(SPECDIR)/vespa-$(VESPA_VERSION).spec
+ cp -a $(RPMTOPDIR)/SRPMS/* $(outdir)
+
+clean:
+ -rm -rf $(RPMTOPDIR)
+
+.PHONY: clean deps srpm
diff --git a/.gitignore b/.gitignore
index 989a338737d..0b2fba8c9ed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -45,3 +45,4 @@ Testing
.DS_Store
install_manifest.txt
*.cbp
+!/.copr/Makefile
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3598d259144..ea469733695 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# @author Vegard Sjonfjell
# @author Eirik Nygaard
# @author Arnstein Ressem
@@ -58,7 +58,6 @@ add_subdirectory(config)
add_subdirectory(config-model-fat)
add_subdirectory(configd)
add_subdirectory(configdefinitions)
-add_subdirectory(configgen)
add_subdirectory(configserver)
add_subdirectory(configserver-flags)
add_subdirectory(configutil)
@@ -96,6 +95,7 @@ add_subdirectory(jdisc_jetty)
add_subdirectory(jrt_test)
add_subdirectory(juniper)
add_subdirectory(linguistics)
+add_subdirectory(linguistics-components)
add_subdirectory(logd)
add_subdirectory(logserver)
add_subdirectory(logforwarder)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 3a86f99d17c..9e18ffbf487 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,5 +1,7 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+
# Contributing to Vespa
+
Contributions to [Vespa](http://github.com/vespa-engine/vespa),
[Vespa system tests](http://github.com/vespa-engine/system-test),
[Vespa samples](https://github.com/vespa-engine/sample-apps)
@@ -7,58 +9,74 @@ and the [Vespa documentation](http://github.com/vespa-engine/documentation) are
This documents tells you what you need to know to contribute.
## Open development
+
All work on Vespa happens directly on Github,
using the [Github flow model](https://guides.github.com/introduction/flow/).
-We release the master branch a few times a week and you should expect it to almost always work.
-In addition to the [public Screwdriver build](https://cd.screwdriver.cd/pipelines/6386)
-we have a large acceptance and performance test suite which
-is also run continuously. We plan to add this to the open source code base later.
+We release the master branch four times a week and you should expect it to always work.
+The continuous build of Vespa is at [https://factory.vespa.oath.cloud](https://factory.vespa.oath.cloud).
+You can follow the fate of each commit there.
-All pull requests are reviewed by a member of the Vespa Committers team.
+All pull requests must be approved by a
+[Vespa Committer](https://github.com/orgs/vespa-engine/people).
You can find a suitable reviewer in the OWNERS file upward in the source tree from
-where you are making the change (the OWNERS have a special responsibility for
+where you are making the change (OWNERS have a special responsibility for
ensuring the long-term integrity of a portion of the code).
-If you want to become a committer/OWNER making some quality contributions is the way to start.
+The way to become a committer (and OWNER) is to make some quality contributions
+to an area of the code. See [GOVERNANCE](GOVERNANCE.md) for more details.
-***Creating a Pull Request***
+### Creating a Pull Request
-Please follow [best practices](https://github.com/trein/dev-best-practices/wiki/Git-Commit-Best-Practices) for creating git commits.
+Please follow
+[best practices](https://github.com/trein/dev-best-practices/wiki/Git-Commit-Best-Practices)
+for creating git commits.
-When your code is ready to be submitted, [submit a pull request](https://help.github.com/articles/creating-a-pull-request/) to begin the code review process.
+When your code is ready to be submitted,
+[submit a pull request](https://help.github.com/articles/creating-a-pull-request/)
+to request a code review.
-We only seek to accept code that you are authorized to contribute to the project. We have added a pull request template on our projects so that your contributions are made with the following confirmation:
+We only seek to accept code that you are authorized to contribute to the project.
+We have added a pull request template on our projects so that your contributions are made
+with the following confirmation:
> I confirm that this contribution is made under the terms of the license found in the root directory of this repository's source tree and that I have the authority necessary to make this contribution on behalf of its copyright owner.
## Versioning
+
Vespa uses semantic versioning - see
[vespa versions](http://docs.vespa.ai/en/vespa-versions.html).
Notice in particular that any Java API in a package having a @PublicAPI
-annotation in the package-info file cannot be changed in an incompatible way
-between major versions: Existing types and method signatures must be preserved
+annotation in the package-info, and no @Beta annotation on the class,
+cannot be changed in an incompatible way between major versions:
+Existing types and method signatures must be preserved
(but can be marked deprecated).
+We verify ABI compatibility during the regular Java build you'll run with Maven (mvn install).
+This build step will also fail if you *add* to public API's, which is fine if there's a good reason
+to do it. In that case update the ABI spec as instructed in the error message.
+
## Issues
+
We track issues in [GitHub issues](https://github.com/vespa-engine/vespa/issues).
It is fine to submit issues also for feature requests and ideas, whether or not you intend to work on them.
-There is also a [ToDo list](TODO.md) for larger things which nobody are working on yet.
+There is also a [ToDo list](TODO.md) for larger things nobody are working on yet.
## Community
-If you have questions, want to share your experience or help others, please join our community on [Stack Overflow](http://stackoverflow.com/questions/tagged/vespa).
+
+If you have questions, want to share your experience or help others,
+join our [Slack channel](http://slack.vespa.ai).
+See also [Stack Overflow questions tagged Vespa](http://stackoverflow.com/questions/tagged/vespa),
+and feel free to add your own.
### Getting started
-See [README](README.md) for how to build and test Vespa.
-For an overview of the modules, see [Code-map.md](Code-map.md).
+See [README](README.md) for how to build and test Vespa.
+[Code-map.md](Code-map.md) provides an overview of the modules of Vespa.
More details are in the READMEs of each module.
## License and copyright
+
If you add new files you are welcome to use your own copyright.
In any case the code (or documentation) you submit will be licensed
under the Apache 2.0 license.
-
-## Code of Conduct
-
-We encourage inclusive and professional interactions on our project. We welcome everyone to open an issue, improve the documentation, report bug or submit a pull request. By participating in this project, you agree to abide by the [Verizon Media Code of Conduct](Code-of-Conduct.md). If you feel there is a conduct issue related to this project, please raise it per the Code of Conduct process and we will address it.
diff --git a/Code-of-Conduct.md b/Code-of-Conduct.md
index 59729463e62..2b04099b2ca 100644
--- a/Code-of-Conduct.md
+++ b/Code-of-Conduct.md
@@ -1,4 +1,4 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Verizon Media Open Source Code of Conduct
diff --git a/ERRATA.md b/ERRATA.md
index 5091fb70d6a..d08ba3f8689 100644
--- a/ERRATA.md
+++ b/ERRATA.md
@@ -1,4 +1,4 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
## Errata
diff --git a/GOVERNANCE.md b/GOVERNANCE.md
new file mode 100644
index 00000000000..617f2d3c27c
--- /dev/null
+++ b/GOVERNANCE.md
@@ -0,0 +1,58 @@
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+
+# Vespa Governance
+
+Anyone is welcome to contribute to Vespa, by [creating pull requests](CONTRIBUTING.md)
+or taking part in discussions about features, e.g in [GitHub issues](https://github.com/vespa-engine/vespa/issues).
+
+This document defines who has authority to do what on the Vespa open source project.
+
+While a formal assignment of authority is necessary as a fallback mechanism, it is
+not the way decisions regarding Vespa are usually made, or expected to be made.
+The community sees disagreement as good as a diversity of perspectives having influence
+leads to better decisions. We seek to resolve disagreement by reaching
+consensus based on the merit of technical arguments, with no regards to status or
+formal role. This almost always works.
+
+# Vespa roles
+
+There are two formal roles in Vespa:
+
+* __Vespa Committers__ have the right to merge pull requests into the Vespa repo.
+* __The Vespa Board__ has final authority over all decisions made on the project.
+
+# Vespa committers
+
+A __Vespa committer__ is able to merge pull requests into the Vespa repositories under
+[https://github.com/vespa-engine](https://github.com/vespa-engine), including into
+the master branch which is released to production.
+
+To become a Vespa Committer, start making PR's that are approved. When a sufficient
+trust is built through working on Vespa this way, any current Vespa Committer can nominate
+you to the Vespa board for the committer role.
+
+Every pull requests must be approved by a Vespa Committer which is different from the
+author of the request, either by clicking "approve", by making a comment indicating agreement,
+or simply merging it. As a rule, approval should happen before merge, but this is not strictly
+required as the approver can revert.
+
+The Vespa committers are listed here:
+[https://github.com/orgs/vespa-engine/people](https://github.com/orgs/vespa-engine/people)
+
+# The Vespa board
+
+The __Vespa board__ has final authority over all decisions regarding the Vespa project,
+including
+
+* whether to merge (or keep) a PR in the event of any dispute,
+* who should be committers and who should be members of the board, and
+* whether to make any changes to the governance policy (this document).
+
+The board consists of 4 people, and makes decisions by majority vote.
+On a tie the leader of the board has a double vote.
+
+The board members are:
+* Jon Bratseth (bratseth) - leader
+* Kristian Aune (kkraune)
+* Kim Johansen (johans1)
+* Frode Lundgren (frodelu)
diff --git a/NOTICES b/NOTICES
index e61f713521b..3490cb3333f 100644
--- a/NOTICES
+++ b/NOTICES
@@ -1,5 +1,5 @@
Vespa, the open big data serving engine
-Copyright Verizon Media. Code licensed under the Apache 2.0 license.
+Copyright Yahoo. Code licensed under the Apache 2.0 license.
Open-Source Vespa uses several third-party Open-Source libraries
with permissive licenses. These are included here.
diff --git a/README-cmake.md b/README-cmake.md
index 756162b1dfe..214eaaa94a9 100644
--- a/README-cmake.md
+++ b/README-cmake.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
CMake Guide
===========
diff --git a/README.md b/README.md
index 7d3be172cb5..64bd0897d74 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
[![#Vespa](https://vespa.ai/assets/vespa-logo-color.png)](https://vespa.ai)
@@ -6,7 +6,7 @@ The open big data serving engine - Store, search, organize and make machine-lear
over big data at serving time.
This is the primary repository for Vespa where all development is happening.
-New production releases from this repository's master branch are made each weekday from Monday to Thursday.
+New production releases from this repository's master branch are made each weekday from Monday through Thursday.
* Home page: [https://vespa.ai](https://vespa.ai)
* Documentation: [https://docs.vespa.ai](https://docs.vespa.ai)
@@ -50,7 +50,7 @@ Or deploy your Vespa applications to the cloud service: [https://cloud.vespa.ai]
- Explore the [sample applications](https://github.com/vespa-engine/sample-apps/tree/master)
- Follow the [Vespa Blog](https://blog.vespa.ai/) for feature updates / use cases
-Full documentation is available on [https://docs.vespa.ai](https://docs.vespa.ai).
+Full documentation is at [https://docs.vespa.ai](https://docs.vespa.ai).
## Contribute
diff --git a/TODO.md b/TODO.md
index b4339293d00..95be9a0b056 100644
--- a/TODO.md
+++ b/TODO.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# List of possible future enhancements and features
This lists some possible improvements to Vespa which have been considered or requested, can be developed relatively
diff --git a/abi-check-plugin/pom.xml b/abi-check-plugin/pom.xml
index 6931e0b9b2d..7317205816c 100644
--- a/abi-check-plugin/pom.xml
+++ b/abi-check-plugin/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/ann_benchmark/CMakeLists.txt b/ann_benchmark/CMakeLists.txt
index d34329667e3..b8e42e7b5d8 100644
--- a/ann_benchmark/CMakeLists.txt
+++ b/ann_benchmark/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
searchlib
diff --git a/ann_benchmark/src/tests/ann_benchmark/CMakeLists.txt b/ann_benchmark/src/tests/ann_benchmark/CMakeLists.txt
index 6553cd071fb..cee859c070c 100644
--- a/ann_benchmark/src/tests/ann_benchmark/CMakeLists.txt
+++ b/ann_benchmark/src/tests/ann_benchmark/CMakeLists.txt
@@ -1,3 +1,3 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_test(NAME ann_benchmark_test NO_VALGRIND COMMAND ${PYTHON_EXECUTABLE} -m pytest WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS vespa_ann_benchmark)
diff --git a/ann_benchmark/src/tests/ann_benchmark/test_angular.py b/ann_benchmark/src/tests/ann_benchmark/test_angular.py
index 3e48a6bd970..6fe15bf3c58 100644
--- a/ann_benchmark/src/tests/ann_benchmark/test_angular.py
+++ b/ann_benchmark/src/tests/ann_benchmark/test_angular.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import pytest
import sys
diff --git a/ann_benchmark/src/tests/ann_benchmark/test_euclidean.py b/ann_benchmark/src/tests/ann_benchmark/test_euclidean.py
index b6fb06cb029..6663e1929ec 100644
--- a/ann_benchmark/src/tests/ann_benchmark/test_euclidean.py
+++ b/ann_benchmark/src/tests/ann_benchmark/test_euclidean.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import pytest
import sys
diff --git a/ann_benchmark/src/vespa/ann_benchmark/CMakeLists.txt b/ann_benchmark/src/vespa/ann_benchmark/CMakeLists.txt
index a9a8ceb3660..79ef4a8ae67 100644
--- a/ann_benchmark/src/vespa/ann_benchmark/CMakeLists.txt
+++ b/ann_benchmark/src/vespa/ann_benchmark/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install(DIRECTORY DESTINATION libexec/vespa_ann_benchmark)
vespa_add_library(vespa_ann_benchmark
diff --git a/ann_benchmark/src/vespa/ann_benchmark/setup.py b/ann_benchmark/src/vespa/ann_benchmark/setup.py
index e19dada5fff..2991c225823 100644
--- a/ann_benchmark/src/vespa/ann_benchmark/setup.py
+++ b/ann_benchmark/src/vespa/ann_benchmark/setup.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import os
import sys
diff --git a/ann_benchmark/src/vespa/ann_benchmark/vespa_ann_benchmark.cpp b/ann_benchmark/src/vespa/ann_benchmark/vespa_ann_benchmark.cpp
index 3304e598862..c62f140d944 100644
--- a/ann_benchmark/src/vespa/ann_benchmark/vespa_ann_benchmark.cpp
+++ b/ann_benchmark/src/vespa/ann_benchmark/vespa_ann_benchmark.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <pybind11/pybind11.h>
#include <pybind11/stl.h>
diff --git a/annotations/pom.xml b/annotations/pom.xml
index df4b000372a..8a002f7c0f7 100644
--- a/annotations/pom.xml
+++ b/annotations/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/annotations/src/main/java/com/yahoo/api/annotations/PublicApi.java b/annotations/src/main/java/com/yahoo/api/annotations/PublicApi.java
index 261915ac3d9..8ae6f856501 100644
--- a/annotations/src/main/java/com/yahoo/api/annotations/PublicApi.java
+++ b/annotations/src/main/java/com/yahoo/api/annotations/PublicApi.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.api.annotations;
import java.lang.annotation.Documented;
diff --git a/annotations/src/main/java/com/yahoo/api/annotations/package-info.java b/annotations/src/main/java/com/yahoo/api/annotations/package-info.java
index 03af75cbbed..2d94bca17af 100644
--- a/annotations/src/main/java/com/yahoo/api/annotations/package-info.java
+++ b/annotations/src/main/java/com/yahoo/api/annotations/package-info.java
@@ -1,3 +1,3 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@PublicApi
package com.yahoo.api.annotations;
diff --git a/annotations/src/main/java/com/yahoo/osgi/annotation/ExportPackage.java b/annotations/src/main/java/com/yahoo/osgi/annotation/ExportPackage.java
index f34c9545c69..2f6aa902b42 100644
--- a/annotations/src/main/java/com/yahoo/osgi/annotation/ExportPackage.java
+++ b/annotations/src/main/java/com/yahoo/osgi/annotation/ExportPackage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.osgi.annotation;
import java.lang.annotation.Documented;
diff --git a/annotations/src/main/java/com/yahoo/osgi/annotation/Version.java b/annotations/src/main/java/com/yahoo/osgi/annotation/Version.java
index 9d71f5d16dc..89e2cb51e4d 100644
--- a/annotations/src/main/java/com/yahoo/osgi/annotation/Version.java
+++ b/annotations/src/main/java/com/yahoo/osgi/annotation/Version.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.osgi.annotation;
/**
diff --git a/annotations/src/main/java/com/yahoo/osgi/annotation/package-info.java b/annotations/src/main/java/com/yahoo/osgi/annotation/package-info.java
index 5243c0feaa0..cc2c38b999c 100644
--- a/annotations/src/main/java/com/yahoo/osgi/annotation/package-info.java
+++ b/annotations/src/main/java/com/yahoo/osgi/annotation/package-info.java
@@ -1,3 +1,3 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@com.yahoo.api.annotations.PublicApi
package com.yahoo.osgi.annotation;
diff --git a/application-model/CMakeLists.txt b/application-model/CMakeLists.txt
index d37deefffe9..3bc7d65bd67 100644
--- a/application-model/CMakeLists.txt
+++ b/application-model/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(application-model)
diff --git a/application-model/pom.xml b/application-model/pom.xml
index ebea834aec3..4937bc54a34 100644
--- a/application-model/pom.xml
+++ b/application-model/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstance.java b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstance.java
index 1d230d6cb47..2d36a25fcb8 100644
--- a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstance.java
+++ b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstance.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.applicationmodel;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceId.java b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceId.java
index 801213dcf40..76605a8d6b2 100644
--- a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceId.java
+++ b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.applicationmodel;
import com.fasterxml.jackson.annotation.JsonValue;
@@ -16,6 +16,9 @@ public class ApplicationInstanceId {
public boolean isConfigServerHost() { return id.startsWith("configserver-host:"); }
public static final ApplicationInstanceId CONTROLLER_HOST = new ApplicationInstanceId("controller-host:prod:default:default");
public boolean isTenantHost() { return id.startsWith("tenant-host:"); }
+ public boolean isProxyHost() { return id.startsWith("proxy-host:"); }
+ // Routing application instance ID is of the form: routing:prod:eu-west-1:default
+ public boolean isProxy() { return id.startsWith("routing:"); }
private final String id;
diff --git a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceReference.java b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceReference.java
index f0b2c46d460..f9bc0cec0b0 100644
--- a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceReference.java
+++ b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ApplicationInstanceReference.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.applicationmodel;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ClusterId.java b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ClusterId.java
index d7995b41616..e193c32b16b 100644
--- a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ClusterId.java
+++ b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ClusterId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.applicationmodel;
import com.fasterxml.jackson.annotation.JsonValue;
@@ -14,6 +14,8 @@ public class ClusterId {
public static final ClusterId CONTROLLER = new ClusterId("controller");
public static final ClusterId CONFIG_SERVER_HOST = new ClusterId("configserver-host");
public static final ClusterId CONTROLLER_HOST = new ClusterId("controller-host");
+ public static final ClusterId PROXY_HOST = new ClusterId("proxy-host");
+ public static final ClusterId ROUTING = new ClusterId("routing");
public static final ClusterId TENANT_HOST = new ClusterId("tenant-host");
private final String id;
diff --git a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ConfigId.java b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ConfigId.java
index 3a9db7b84c0..d0fb93d7bea 100644
--- a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ConfigId.java
+++ b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ConfigId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.applicationmodel;
import com.fasterxml.jackson.annotation.JsonValue;
diff --git a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/HostName.java b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/HostName.java
index 66e79917ccf..263258fbcff 100644
--- a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/HostName.java
+++ b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/HostName.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.applicationmodel;
import com.fasterxml.jackson.annotation.JsonValue;
diff --git a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceCluster.java b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceCluster.java
index baede298896..fe1cfd78986 100644
--- a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceCluster.java
+++ b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceCluster.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.applicationmodel;
import com.fasterxml.jackson.annotation.JsonIgnore;
@@ -98,14 +98,38 @@ public class ServiceCluster {
Objects.equals(serviceType, ServiceType.HOST_ADMIN);
}
+ @JsonIgnore
+ public boolean isProxy() {
+ return isHostedVespaApplicationWithPredicate(ApplicationInstanceId::isProxy) &&
+ Objects.equals(clusterId, ClusterId.ROUTING) &&
+ Objects.equals(serviceType, ServiceType.CONTAINER);
+ }
+
+ @JsonIgnore
+ public boolean isProxyHost() {
+ return isHostedVespaApplicationWithPredicate(ApplicationInstanceId::isProxyHost) &&
+ Objects.equals(clusterId, ClusterId.PROXY_HOST) &&
+ Objects.equals(serviceType, ServiceType.HOST_ADMIN);
+ }
+
public String nodeDescription(boolean plural) {
+ return entityDescription("node", plural);
+ }
+
+ public String serviceDescription(boolean plural) {
+ return entityDescription("service", plural);
+ }
+
+ private String entityDescription(String entity, boolean plural) {
String pluralSuffix = plural ? "s" : "";
return isConfigServer() ? "config server" + pluralSuffix :
isConfigServerHost() ? "config server host" + pluralSuffix :
isController() ? "controller" + pluralSuffix :
isControllerHost() ? "controller host" + pluralSuffix :
+ isProxy() ? (plural ? "proxies" : "proxy") :
+ isProxyHost() ? "proxy host" + pluralSuffix :
isTenantHost() ? "tenant host" + pluralSuffix :
- "node" + pluralSuffix + " of {" + serviceType + "," + clusterId + "}";
+ entity + pluralSuffix + " of {" + serviceType + "," + clusterId + "}";
}
private boolean isHostedVespaApplicationWithId(ApplicationInstanceId id) {
diff --git a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceClusterKey.java b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceClusterKey.java
index 843cbdd775b..a331e5b8df2 100644
--- a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceClusterKey.java
+++ b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceClusterKey.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.applicationmodel;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceInstance.java b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceInstance.java
index d75d3abd5da..b310d592777 100644
--- a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceInstance.java
+++ b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceInstance.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.applicationmodel;
import com.fasterxml.jackson.annotation.JsonIgnore;
diff --git a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceStatus.java b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceStatus.java
index a30ae29e1b6..7d06f4b7127 100644
--- a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceStatus.java
+++ b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceStatus.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.applicationmodel;
/**
@@ -7,5 +7,10 @@ package com.yahoo.vespa.applicationmodel;
public enum ServiceStatus {
UP,
DOWN,
- NOT_CHECKED;
+
+ /** The status has not yet been probed or has expired. A status of UP or DOWN is expected shortly. */
+ UNKNOWN,
+
+ /** The service is not monitored for health, and will never get any other status than NOT_CHECKED. */
+ NOT_CHECKED
}
diff --git a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceType.java b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceType.java
index 92bdd0f21a0..28a8b030fa6 100644
--- a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceType.java
+++ b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/ServiceType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.applicationmodel;
import com.fasterxml.jackson.annotation.JsonValue;
diff --git a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/TenantId.java b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/TenantId.java
index 0fb3db28448..9789f1ac9f9 100644
--- a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/TenantId.java
+++ b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/TenantId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.applicationmodel;
import com.fasterxml.jackson.annotation.JsonValue;
diff --git a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/package-info.java b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/package-info.java
index 2d89dfb609d..3e4a20a60be 100644
--- a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/package-info.java
+++ b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.applicationmodel;
diff --git a/application-preprocessor/CMakeLists.txt b/application-preprocessor/CMakeLists.txt
index e40fd4a6736..479f0c64350 100644
--- a/application-preprocessor/CMakeLists.txt
+++ b/application-preprocessor/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(application-preprocessor)
vespa_install_script(src/main/sh/vespa-preprocess-application bin)
diff --git a/application-preprocessor/pom.xml b/application-preprocessor/pom.xml
index 613a2747c35..8eaf8bc6ac1 100644
--- a/application-preprocessor/pom.xml
+++ b/application-preprocessor/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java b/application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java
index 1988c8a2fff..785e6d9b61b 100644
--- a/application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java
+++ b/application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.preprocessor;
import com.yahoo.config.application.api.ApplicationPackage;
diff --git a/application-preprocessor/src/main/sh/vespa-preprocess-application b/application-preprocessor/src/main/sh/vespa-preprocess-application
index 42e08411fe9..fa0545f7c20 100644
--- a/application-preprocessor/src/main/sh/vespa-preprocess-application
+++ b/application-preprocessor/src/main/sh/vespa-preprocess-application
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/application-preprocessor/src/test/java/com/yahoo/application/preprocessor/ApplicationPreprocessorTest.java b/application-preprocessor/src/test/java/com/yahoo/application/preprocessor/ApplicationPreprocessorTest.java
index ada52031863..1fc4d08b405 100644
--- a/application-preprocessor/src/test/java/com/yahoo/application/preprocessor/ApplicationPreprocessorTest.java
+++ b/application-preprocessor/src/test/java/com/yahoo/application/preprocessor/ApplicationPreprocessorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.preprocessor;
import org.junit.Rule;
diff --git a/application-preprocessor/src/test/resources/simple/hosts.xml b/application-preprocessor/src/test/resources/simple/hosts.xml
index 40bd6492894..1b433ca4178 100644
--- a/application-preprocessor/src/test/resources/simple/hosts.xml
+++ b/application-preprocessor/src/test/resources/simple/hosts.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts xmlns:deploy="vespa" xmlns:preprocess="properties">
<host name="localhost">
<alias>node1</alias>
diff --git a/application-preprocessor/src/test/resources/simple/schemas/music.sd b/application-preprocessor/src/test/resources/simple/schemas/music.sd
index c0190a4a7a8..7da7c49c162 100644
--- a/application-preprocessor/src/test/resources/simple/schemas/music.sd
+++ b/application-preprocessor/src/test/resources/simple/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music {
field f type string {
diff --git a/application-preprocessor/src/test/resources/simple/services.xml b/application-preprocessor/src/test/resources/simple/services.xml
index 9ff708b9931..5cdf288bfb4 100644
--- a/application-preprocessor/src/test/resources/simple/services.xml
+++ b/application-preprocessor/src/test/resources/simple/services.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version='1.0' xmlns:deploy="vespa" xmlns:preprocess="properties">
<preprocess:properties>
<qrs.port>4099</qrs.port>
diff --git a/application/pom.xml b/application/pom.xml
index c0bef61f57d..f990988c77e 100644
--- a/application/pom.xml
+++ b/application/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -83,12 +83,6 @@
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>com.yahoo.vespa.container-test-jars</groupId>
- <artifactId>jersey-resources</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- </dependency>
<!-- All dependencies that should be visible in test classpath, but not compile classpath,
for user projects must be added in compile scope here.
@@ -183,31 +177,6 @@
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <executions>
- <execution>
- <id>copy</id>
- <phase>process-test-resources</phase>
- <goals>
- <goal>copy</goal>
- </goals>
- <configuration>
- <artifactItems>
- <artifactItem>
- <groupId>com.yahoo.vespa.container-test-jars</groupId>
- <artifactId>jersey-resources</artifactId>
- <version>${project.version}</version>
- <type>jar</type>
- <outputDirectory>target/test-jars</outputDirectory>
- <destFileName>jersey-resources.jar</destFileName>
- </artifactItem>
- </artifactItems>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkCount>2</forkCount>
diff --git a/application/src/main/java/com/yahoo/application/Application.java b/application/src/main/java/com/yahoo/application/Application.java
index 87e82a3fdeb..c3ae7e3770c 100644
--- a/application/src/main/java/com/yahoo/application/Application.java
+++ b/application/src/main/java/com/yahoo/application/Application.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application;
import ai.vespa.rankingexpression.importer.configmodelview.MlModelImporter;
@@ -11,7 +11,11 @@ import com.google.common.annotations.Beta;
import com.yahoo.application.container.JDisc;
import com.yahoo.application.container.impl.StandaloneContainerRunner;
import com.yahoo.application.content.ContentCluster;
-import com.yahoo.config.*;
+import com.yahoo.config.ConfigInstance;
+import com.yahoo.config.InnerNode;
+import com.yahoo.config.InnerNodeVector;
+import com.yahoo.config.LeafNode;
+import com.yahoo.config.LeafNodeVector;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.NullConfigModelRegistry;
import com.yahoo.config.model.application.provider.FilesApplicationPackage;
@@ -37,7 +41,13 @@ import java.net.BindException;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Random;
/**
* Contains one or more containers built from services.xml.
@@ -118,8 +128,8 @@ public final class Application implements AutoCloseable {
List<MlModelImporter> modelImporters = List.of(new VespaImporter(),
new TensorFlowImporter(),
new OnnxImporter(),
- new LightGBMImporter(),
- new XGBoostImporter());
+ new XGBoostImporter(),
+ new LightGBMImporter());
DeployState deployState = new DeployState.Builder()
.applicationPackage(FilesApplicationPackage.fromFile(path.toFile(), true))
.modelImporters(modelImporters)
diff --git a/application/src/main/java/com/yahoo/application/ApplicationBuilder.java b/application/src/main/java/com/yahoo/application/ApplicationBuilder.java
index ac64ae188e5..639d546a442 100644
--- a/application/src/main/java/com/yahoo/application/ApplicationBuilder.java
+++ b/application/src/main/java/com/yahoo/application/ApplicationBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application;
import com.google.common.annotations.Beta;
diff --git a/application/src/main/java/com/yahoo/application/Networking.java b/application/src/main/java/com/yahoo/application/Networking.java
index 8dd77c6b0f6..af1849c903f 100644
--- a/application/src/main/java/com/yahoo/application/Networking.java
+++ b/application/src/main/java/com/yahoo/application/Networking.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application;
/**
diff --git a/application/src/main/java/com/yahoo/application/container/ApplicationException.java b/application/src/main/java/com/yahoo/application/container/ApplicationException.java
index 424c66313a7..969d0e0f3a5 100644
--- a/application/src/main/java/com/yahoo/application/container/ApplicationException.java
+++ b/application/src/main/java/com/yahoo/application/container/ApplicationException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container;
/**
diff --git a/application/src/main/java/com/yahoo/application/container/DocumentAccesses.java b/application/src/main/java/com/yahoo/application/container/DocumentAccesses.java
index c0edad2baa6..1b2226c7a17 100644
--- a/application/src/main/java/com/yahoo/application/container/DocumentAccesses.java
+++ b/application/src/main/java/com/yahoo/application/container/DocumentAccesses.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container;
import com.yahoo.document.config.DocumentmanagerConfig;
diff --git a/application/src/main/java/com/yahoo/application/container/DocumentProcessing.java b/application/src/main/java/com/yahoo/application/container/DocumentProcessing.java
index 8e9180f00c7..1dcf138f9a9 100644
--- a/application/src/main/java/com/yahoo/application/container/DocumentProcessing.java
+++ b/application/src/main/java/com/yahoo/application/container/DocumentProcessing.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container;
import com.google.common.annotations.Beta;
diff --git a/application/src/main/java/com/yahoo/application/container/JDisc.java b/application/src/main/java/com/yahoo/application/container/JDisc.java
index ee22c58a56f..1b04445d6d5 100644
--- a/application/src/main/java/com/yahoo/application/container/JDisc.java
+++ b/application/src/main/java/com/yahoo/application/container/JDisc.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container;
import com.google.common.annotations.Beta;
diff --git a/application/src/main/java/com/yahoo/application/container/Processing.java b/application/src/main/java/com/yahoo/application/container/Processing.java
index f0ee3cdd1b9..49432f2706a 100644
--- a/application/src/main/java/com/yahoo/application/container/Processing.java
+++ b/application/src/main/java/com/yahoo/application/container/Processing.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container;
import com.google.common.annotations.Beta;
diff --git a/application/src/main/java/com/yahoo/application/container/ProcessingBase.java b/application/src/main/java/com/yahoo/application/container/ProcessingBase.java
index aaeddfe8aef..5ee791ca3d1 100644
--- a/application/src/main/java/com/yahoo/application/container/ProcessingBase.java
+++ b/application/src/main/java/com/yahoo/application/container/ProcessingBase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container;
import com.google.common.annotations.Beta;
diff --git a/application/src/main/java/com/yahoo/application/container/Search.java b/application/src/main/java/com/yahoo/application/container/Search.java
index 0e241c27949..34e6e30e47a 100644
--- a/application/src/main/java/com/yahoo/application/container/Search.java
+++ b/application/src/main/java/com/yahoo/application/container/Search.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container;
import com.google.common.annotations.Beta;
diff --git a/application/src/main/java/com/yahoo/application/container/SynchronousRequestResponseHandler.java b/application/src/main/java/com/yahoo/application/container/SynchronousRequestResponseHandler.java
index 7b806642e39..a53a4bdf97c 100644
--- a/application/src/main/java/com/yahoo/application/container/SynchronousRequestResponseHandler.java
+++ b/application/src/main/java/com/yahoo/application/container/SynchronousRequestResponseHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container;
import com.google.common.annotations.Beta;
diff --git a/application/src/main/java/com/yahoo/application/container/handler/Headers.java b/application/src/main/java/com/yahoo/application/container/handler/Headers.java
index ed3018eb430..e5264d08dd5 100644
--- a/application/src/main/java/com/yahoo/application/container/handler/Headers.java
+++ b/application/src/main/java/com/yahoo/application/container/handler/Headers.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container.handler;
import com.google.common.annotations.Beta;
diff --git a/application/src/main/java/com/yahoo/application/container/handler/Request.java b/application/src/main/java/com/yahoo/application/container/handler/Request.java
index 87543c7db9a..620d6080037 100644
--- a/application/src/main/java/com/yahoo/application/container/handler/Request.java
+++ b/application/src/main/java/com/yahoo/application/container/handler/Request.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container.handler;
import com.google.common.annotations.Beta;
diff --git a/application/src/main/java/com/yahoo/application/container/handler/Response.java b/application/src/main/java/com/yahoo/application/container/handler/Response.java
index 35d42e3e147..0fc1261197c 100644
--- a/application/src/main/java/com/yahoo/application/container/handler/Response.java
+++ b/application/src/main/java/com/yahoo/application/container/handler/Response.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container.handler;
import com.google.common.annotations.Beta;
diff --git a/application/src/main/java/com/yahoo/application/container/handler/package-info.java b/application/src/main/java/com/yahoo/application/container/handler/package-info.java
index bededff50c5..faeb059c5f8 100644
--- a/application/src/main/java/com/yahoo/application/container/handler/package-info.java
+++ b/application/src/main/java/com/yahoo/application/container/handler/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* API for passing requests and inspecting responses to a locally instantiated container.
*/
diff --git a/application/src/main/java/com/yahoo/application/container/package-info.java b/application/src/main/java/com/yahoo/application/container/package-info.java
index 1c9d200d19a..41ee94be6ee 100644
--- a/application/src/main/java/com/yahoo/application/container/package-info.java
+++ b/application/src/main/java/com/yahoo/application/container/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* API for interacting with a locally instantiated jDisc container.
*/
diff --git a/application/src/main/java/com/yahoo/application/content/ContentCluster.java b/application/src/main/java/com/yahoo/application/content/ContentCluster.java
index 93c83f3b323..ca26971ef93 100644
--- a/application/src/main/java/com/yahoo/application/content/ContentCluster.java
+++ b/application/src/main/java/com/yahoo/application/content/ContentCluster.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.content;
import com.google.common.annotations.Beta;
diff --git a/application/src/main/java/com/yahoo/application/package-info.java b/application/src/main/java/com/yahoo/application/package-info.java
index f786129dd5c..a34a4fa55ab 100644
--- a/application/src/main/java/com/yahoo/application/package-info.java
+++ b/application/src/main/java/com/yahoo/application/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* This package provides an API for building Vespa or jDisc applications programmatically or from
* an application package source, and instantiating those applications inside the current Java runtime.
diff --git a/application/src/test/app-packages/athenz-in-deployment-xml/services.xml b/application/src/test/app-packages/athenz-in-deployment-xml/services.xml
index a70b41a5417..1b60f9163d8 100644
--- a/application/src/test/app-packages/athenz-in-deployment-xml/services.xml
+++ b/application/src/test/app-packages/athenz-in-deployment-xml/services.xml
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<container version='1.0'>
<!-- Avoid using DefaultLinguisticsProvider -->
<component id="com.yahoo.language.simple.SimpleLinguistics" />
diff --git a/application/src/test/app-packages/filedistribution/services.xml b/application/src/test/app-packages/filedistribution/services.xml
index 20172f88ac6..e29f09ccd47 100644
--- a/application/src/test/app-packages/filedistribution/services.xml
+++ b/application/src/test/app-packages/filedistribution/services.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<container version="1.0">
<component id="com.yahoo.example.MyComponent" bundle="basic-application">
<config name="example.my-component">
diff --git a/application/src/test/app-packages/searcher-app/services.xml b/application/src/test/app-packages/searcher-app/services.xml
index 8f0abe40e5b..1bbf9606eff 100644
--- a/application/src/test/app-packages/searcher-app/services.xml
+++ b/application/src/test/app-packages/searcher-app/services.xml
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<container version='1.0'>
<!-- Avoid using DefaultLinguisticsProvider -->
<component id="com.yahoo.language.simple.SimpleLinguistics" />
diff --git a/application/src/test/app-packages/withcontent/schemas/mydoc.sd b/application/src/test/app-packages/withcontent/schemas/mydoc.sd
index 3a0b829d60c..ca6fa37a8e6 100644
--- a/application/src/test/app-packages/withcontent/schemas/mydoc.sd
+++ b/application/src/test/app-packages/withcontent/schemas/mydoc.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search mydoc {
document mydoc {
diff --git a/application/src/test/app-packages/withcontent/services.xml b/application/src/test/app-packages/withcontent/services.xml
index 7b3216a697f..5776d65d1e1 100644
--- a/application/src/test/app-packages/withcontent/services.xml
+++ b/application/src/test/app-packages/withcontent/services.xml
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<container version="1.0">
diff --git a/application/src/test/java/com/yahoo/application/ApplicationBuilderTest.java b/application/src/test/java/com/yahoo/application/ApplicationBuilderTest.java
index a0c2ec9983b..215b0961509 100644
--- a/application/src/test/java/com/yahoo/application/ApplicationBuilderTest.java
+++ b/application/src/test/java/com/yahoo/application/ApplicationBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application;
import com.yahoo.io.IOUtils;
diff --git a/application/src/test/java/com/yahoo/application/ApplicationFacade.java b/application/src/test/java/com/yahoo/application/ApplicationFacade.java
index 744ebb138c9..c84f7fca3f2 100644
--- a/application/src/test/java/com/yahoo/application/ApplicationFacade.java
+++ b/application/src/test/java/com/yahoo/application/ApplicationFacade.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application;
import com.google.common.annotations.Beta;
diff --git a/application/src/test/java/com/yahoo/application/ApplicationTest.java b/application/src/test/java/com/yahoo/application/ApplicationTest.java
index 29ef0c7c4cf..86873033b8a 100644
--- a/application/src/test/java/com/yahoo/application/ApplicationTest.java
+++ b/application/src/test/java/com/yahoo/application/ApplicationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application;
import com.yahoo.application.container.MockClient;
diff --git a/application/src/test/java/com/yahoo/application/MockResultSearcher.java b/application/src/test/java/com/yahoo/application/MockResultSearcher.java
index ac837d8cfa5..75a0d964e14 100644
--- a/application/src/test/java/com/yahoo/application/MockResultSearcher.java
+++ b/application/src/test/java/com/yahoo/application/MockResultSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application;
import com.yahoo.search.Query;
diff --git a/application/src/test/java/com/yahoo/application/TestDocProc.java b/application/src/test/java/com/yahoo/application/TestDocProc.java
index 492b1ebe6bd..37d428c773e 100644
--- a/application/src/test/java/com/yahoo/application/TestDocProc.java
+++ b/application/src/test/java/com/yahoo/application/TestDocProc.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application;
import com.yahoo.config.subscription.ConfigSubscriber;
diff --git a/application/src/test/java/com/yahoo/application/container/ContainerDocprocTest.java b/application/src/test/java/com/yahoo/application/container/ContainerDocprocTest.java
index 81f5a681f1a..855a56293d0 100644
--- a/application/src/test/java/com/yahoo/application/container/ContainerDocprocTest.java
+++ b/application/src/test/java/com/yahoo/application/container/ContainerDocprocTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container;
import com.yahoo.application.Application;
diff --git a/application/src/test/java/com/yahoo/application/container/ContainerProcessingTest.java b/application/src/test/java/com/yahoo/application/container/ContainerProcessingTest.java
index 22c307c0a0c..e0385543022 100644
--- a/application/src/test/java/com/yahoo/application/container/ContainerProcessingTest.java
+++ b/application/src/test/java/com/yahoo/application/container/ContainerProcessingTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container;
import com.yahoo.application.Networking;
diff --git a/application/src/test/java/com/yahoo/application/container/ContainerRequestTest.java b/application/src/test/java/com/yahoo/application/container/ContainerRequestTest.java
index a66547e6ed9..98f35d5ed6c 100644
--- a/application/src/test/java/com/yahoo/application/container/ContainerRequestTest.java
+++ b/application/src/test/java/com/yahoo/application/container/ContainerRequestTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container;
import com.yahoo.application.Networking;
diff --git a/application/src/test/java/com/yahoo/application/container/ContainerSearchTest.java b/application/src/test/java/com/yahoo/application/container/ContainerSearchTest.java
index 793ee9ab094..f65cf4e2675 100644
--- a/application/src/test/java/com/yahoo/application/container/ContainerSearchTest.java
+++ b/application/src/test/java/com/yahoo/application/container/ContainerSearchTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container;
import com.yahoo.application.Networking;
diff --git a/application/src/test/java/com/yahoo/application/container/ContainerTest.java b/application/src/test/java/com/yahoo/application/container/ContainerTest.java
index 29f895ce176..a46ae6e1ef5 100644
--- a/application/src/test/java/com/yahoo/application/container/ContainerTest.java
+++ b/application/src/test/java/com/yahoo/application/container/ContainerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container;
import com.yahoo.application.Application;
diff --git a/application/src/test/java/com/yahoo/application/container/MockClient.java b/application/src/test/java/com/yahoo/application/container/MockClient.java
index 6909b1059ff..95811b67b70 100644
--- a/application/src/test/java/com/yahoo/application/container/MockClient.java
+++ b/application/src/test/java/com/yahoo/application/container/MockClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container;
import com.yahoo.jdisc.Request;
diff --git a/application/src/test/java/com/yahoo/application/container/MockServer.java b/application/src/test/java/com/yahoo/application/container/MockServer.java
index cdb320fd69e..0d71c80a721 100644
--- a/application/src/test/java/com/yahoo/application/container/MockServer.java
+++ b/application/src/test/java/com/yahoo/application/container/MockServer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container;
import com.yahoo.jdisc.service.AbstractServerProvider;
diff --git a/application/src/test/java/com/yahoo/application/container/docprocs/MockDispatchDocproc.java b/application/src/test/java/com/yahoo/application/container/docprocs/MockDispatchDocproc.java
index d91522ee5ed..d8c86728160 100644
--- a/application/src/test/java/com/yahoo/application/container/docprocs/MockDispatchDocproc.java
+++ b/application/src/test/java/com/yahoo/application/container/docprocs/MockDispatchDocproc.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container.docprocs;
import com.google.common.util.concurrent.ListenableFuture;
@@ -54,7 +54,7 @@ public class MockDispatchDocproc extends DocumentProcessor {
return new RequestDispatch() {
@Override
protected Request newRequest() {
- return new MbusRequest(currentContainer, uri, message.setRoute(route)).setServerRequest(false);
+ return new MbusRequest(currentContainer, uri, message.setRoute(route), false);
}
};
}
diff --git a/application/src/test/java/com/yahoo/application/container/docprocs/MockDocproc.java b/application/src/test/java/com/yahoo/application/container/docprocs/MockDocproc.java
index 8d2e2fead46..3950b98ef58 100644
--- a/application/src/test/java/com/yahoo/application/container/docprocs/MockDocproc.java
+++ b/application/src/test/java/com/yahoo/application/container/docprocs/MockDocproc.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container.docprocs;
import com.google.inject.Inject;
diff --git a/application/src/test/java/com/yahoo/application/container/docprocs/Rot13DocumentProcessor.java b/application/src/test/java/com/yahoo/application/container/docprocs/Rot13DocumentProcessor.java
index ca221fa5199..bf7d501a0b4 100644
--- a/application/src/test/java/com/yahoo/application/container/docprocs/Rot13DocumentProcessor.java
+++ b/application/src/test/java/com/yahoo/application/container/docprocs/Rot13DocumentProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container.docprocs;
import com.yahoo.docproc.DocumentProcessor;
diff --git a/application/src/test/java/com/yahoo/application/container/handler/HeadersTestCase.java b/application/src/test/java/com/yahoo/application/container/handler/HeadersTestCase.java
index e747329722d..d88d69f247e 100644
--- a/application/src/test/java/com/yahoo/application/container/handler/HeadersTestCase.java
+++ b/application/src/test/java/com/yahoo/application/container/handler/HeadersTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container.handler;
import org.junit.Test;
diff --git a/application/src/test/java/com/yahoo/application/container/handler/ResponseTestCase.java b/application/src/test/java/com/yahoo/application/container/handler/ResponseTestCase.java
index ccae305c6d3..315ccb9d708 100644
--- a/application/src/test/java/com/yahoo/application/container/handler/ResponseTestCase.java
+++ b/application/src/test/java/com/yahoo/application/container/handler/ResponseTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container.handler;
import org.junit.Test;
diff --git a/application/src/test/java/com/yahoo/application/container/handlers/DelayedThrowingInWriteRequestHandler.java b/application/src/test/java/com/yahoo/application/container/handlers/DelayedThrowingInWriteRequestHandler.java
index d99fc0c2b9a..4935b131c54 100644
--- a/application/src/test/java/com/yahoo/application/container/handlers/DelayedThrowingInWriteRequestHandler.java
+++ b/application/src/test/java/com/yahoo/application/container/handlers/DelayedThrowingInWriteRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container.handlers;
import com.yahoo.jdisc.handler.AbstractRequestHandler;
diff --git a/application/src/test/java/com/yahoo/application/container/handlers/DelayedWriteException.java b/application/src/test/java/com/yahoo/application/container/handlers/DelayedWriteException.java
index 054a63fef66..30fab0c831a 100644
--- a/application/src/test/java/com/yahoo/application/container/handlers/DelayedWriteException.java
+++ b/application/src/test/java/com/yahoo/application/container/handlers/DelayedWriteException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container.handlers;
/**
diff --git a/application/src/test/java/com/yahoo/application/container/handlers/EchoRequestHandler.java b/application/src/test/java/com/yahoo/application/container/handlers/EchoRequestHandler.java
index 25d5921b299..4188d7008c6 100644
--- a/application/src/test/java/com/yahoo/application/container/handlers/EchoRequestHandler.java
+++ b/application/src/test/java/com/yahoo/application/container/handlers/EchoRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container.handlers;
import com.yahoo.jdisc.Response;
diff --git a/application/src/test/java/com/yahoo/application/container/handlers/HeaderEchoRequestHandler.java b/application/src/test/java/com/yahoo/application/container/handlers/HeaderEchoRequestHandler.java
index c47d0afdd02..8b6607ef9ec 100644
--- a/application/src/test/java/com/yahoo/application/container/handlers/HeaderEchoRequestHandler.java
+++ b/application/src/test/java/com/yahoo/application/container/handlers/HeaderEchoRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container.handlers;
import com.yahoo.jdisc.Request;
diff --git a/application/src/test/java/com/yahoo/application/container/handlers/MockHttpHandler.java b/application/src/test/java/com/yahoo/application/container/handlers/MockHttpHandler.java
index 643205e9c57..1916059de25 100644
--- a/application/src/test/java/com/yahoo/application/container/handlers/MockHttpHandler.java
+++ b/application/src/test/java/com/yahoo/application/container/handlers/MockHttpHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container.handlers;
import com.yahoo.container.jdisc.HttpRequest;
diff --git a/application/src/test/java/com/yahoo/application/container/handlers/TestHandler.java b/application/src/test/java/com/yahoo/application/container/handlers/TestHandler.java
index c31df43bf72..311f9853db2 100644
--- a/application/src/test/java/com/yahoo/application/container/handlers/TestHandler.java
+++ b/application/src/test/java/com/yahoo/application/container/handlers/TestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container.handlers;
import com.yahoo.jdisc.handler.AbstractRequestHandler;
diff --git a/application/src/test/java/com/yahoo/application/container/handlers/ThrowingInWriteRequestHandler.java b/application/src/test/java/com/yahoo/application/container/handlers/ThrowingInWriteRequestHandler.java
index b1f0480adc7..7a2b688b684 100644
--- a/application/src/test/java/com/yahoo/application/container/handlers/ThrowingInWriteRequestHandler.java
+++ b/application/src/test/java/com/yahoo/application/container/handlers/ThrowingInWriteRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container.handlers;
import com.yahoo.jdisc.handler.AbstractRequestHandler;
diff --git a/application/src/test/java/com/yahoo/application/container/handlers/WriteException.java b/application/src/test/java/com/yahoo/application/container/handlers/WriteException.java
index 22ce6652c87..97bbd2a6c08 100644
--- a/application/src/test/java/com/yahoo/application/container/handlers/WriteException.java
+++ b/application/src/test/java/com/yahoo/application/container/handlers/WriteException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container.handlers;
/**
diff --git a/application/src/test/java/com/yahoo/application/container/jersey/JerseyTest.java b/application/src/test/java/com/yahoo/application/container/jersey/JerseyTest.java
deleted file mode 100644
index 18e206c7add..00000000000
--- a/application/src/test/java/com/yahoo/application/container/jersey/JerseyTest.java
+++ /dev/null
@@ -1,195 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.application.container.jersey;
-
-import com.yahoo.application.Networking;
-import com.yahoo.application.container.JDisc;
-import com.yahoo.application.container.ContainerTest;
-import com.yahoo.application.container.jersey.resources.TestResource;
-import com.yahoo.application.container.jersey.resources.nestedpackage1.NestedTestResource1;
-import com.yahoo.application.container.jersey.resources.nestedpackage2.NestedTestResource2;
-import com.yahoo.container.test.jars.jersey.resources.TestResourceBase;
-import com.yahoo.osgi.maven.ProjectBundleClassPaths;
-import com.yahoo.osgi.maven.ProjectBundleClassPaths.BundleClasspathMapping;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.util.EntityUtils;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import javax.ws.rs.core.UriBuilder;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import static java.util.Collections.emptyList;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-
-/**
- * @author Tony Vaagenes
- * @author ollivir
- */
-@Ignore // TODO: remove test
-public class JerseyTest {
- private final Path testJar = Paths.get("target/test-jars/jersey-resources.jar");
- private final String testClassesDirectory = "target/test-classes";
- private final String bundleSymbolicName = "myBundle";
-
- private final Set<Class<? extends TestResourceBase>> classPathResources;
- private final Set<Class<? extends TestResourceBase>> jarFileResources;
-
- public JerseyTest() {
- classPathResources = new HashSet<>();
- classPathResources.add(TestResource.class);
- classPathResources.add(NestedTestResource1.class);
- classPathResources.add(NestedTestResource2.class);
-
- jarFileResources = new HashSet<>();
- jarFileResources.add(com.yahoo.container.test.jars.jersey.resources.TestResource.class);
- jarFileResources.add(com.yahoo.container.test.jars.jersey.resources.nestedpackage1.NestedTestResource1.class);
- jarFileResources.add(com.yahoo.container.test.jars.jersey.resources.nestedpackage2.NestedTestResource2.class);
- }
-
- @Test
- public void jersey_resources_on_classpath_can_be_invoked_from_application() throws Exception {
- saveMainBundleClassPathMappings(testClassesDirectory);
-
- with_jersey_resources(emptyList(), httpGetter -> assertResourcesResponds(classPathResources, httpGetter));
- }
-
- @Test
- public void jersey_resources_in_provided_dependencies_can_be_invoked_from_application() throws Exception {
- BundleClasspathMapping providedDependency =
- new BundleClasspathMapping(bundleSymbolicName, List.of(testClassesDirectory));
-
- save(new ProjectBundleClassPaths(new BundleClasspathMapping("main", emptyList()), List.of(providedDependency)));
- with_jersey_resources(emptyList(), httpGetter -> assertResourcesResponds(classPathResources, httpGetter));
- }
-
- @Test
- public void jersey_resource_on_classpath_can_be_filtered_using_packages() throws Exception {
- saveMainBundleClassPathMappings(testClassesDirectory);
-
- with_jersey_resources(Arrays.asList("com.yahoo.application.container.jersey.resources",
- "com.yahoo.application.container.jersey.resources.nestedpackage1"), httpGetter -> {
- Class<NestedTestResource2> nestedResource2 = NestedTestResource2.class;
- assertDoesNotRespond(nestedResource2, httpGetter);
- assertResourcesResponds(copySetExcept(classPathResources, nestedResource2), httpGetter);
- });
- }
-
- @Test
- public void jersey_resource_in_jar_can_be_invoked_from_application() throws Exception {
- saveMainBundleJarClassPathMappings(testJar);
-
- with_jersey_resources(emptyList(), httpGetter -> assertResourcesResponds(jarFileResources, httpGetter));
- }
-
- @Test
- public void jersey_resource_in_jar_can_be_filtered_using_packages() throws Exception {
- saveMainBundleJarClassPathMappings(testJar);
-
- with_jersey_resources(Arrays.asList("com.yahoo.container.test.jars.jersey.resources",
- "com.yahoo.container.test.jars.jersey.resources.nestedpackage1"), httpGetter -> {
- Class<com.yahoo.container.test.jars.jersey.resources.nestedpackage2.NestedTestResource2> nestedResource2 = com.yahoo.container.test.jars.jersey.resources.nestedpackage2.NestedTestResource2.class;
-
- assertDoesNotRespond(nestedResource2, httpGetter);
- assertResourcesResponds(copySetExcept(jarFileResources, nestedResource2), httpGetter);
- });
- }
-
- private static <T> Set<T> copySetExcept(Set<T> in, T except) {
- Set<T> ret = new HashSet<>(in);
- ret.remove(except);
- return ret;
- }
-
- private interface ThrowingConsumer<T> {
- void accept(T arg) throws Exception;
- }
-
- private interface HttpGetter {
- HttpResponse get(String path) throws Exception;
- }
-
- @SuppressWarnings("try") // jdisc unreferenced inside try
- private void with_jersey_resources(List<String> packagesToScan, ThrowingConsumer<HttpGetter> f) throws Exception {
- StringBuilder packageElements = new StringBuilder();
- for (String p : packagesToScan) {
- packageElements.append("<package>");
- packageElements.append(p);
- packageElements.append("</package>");
- }
-
- try (JDisc jdisc = JDisc.fromServicesXml(
- "<services>" + //
- "<container version=\"1.0\" id=\"default\" jetty=\"true\">" + //
- "<rest-api path=\"rest-api\" jersey2=\"true\">" + //
- "<components bundle=\"" + bundleSymbolicName + "\">" + //
- packageElements + //
- "</components>" + //
- "</rest-api>" + //
- "<http>" + //
- "<server id=\"mainServer\" port=\"0\" />" + //
- "</http>" + //
- "<accesslog type=\"disabled\" />" +
- "</container>" + //
- "</services>", //
- Networking.enable)) {
- final int port = ContainerTest.getListenPort();
- f.accept(path -> {
- String p = path.startsWith("/") ? path.substring(1) : path;
- CloseableHttpClient client = HttpClientBuilder.create().build();
- return client.execute(new HttpGet("http://localhost:" + port + "/rest-api/" + p));
- });
- }
- }
-
- public void assertResourcesResponds(Collection<Class<? extends TestResourceBase>> resourceClasses,
- HttpGetter httpGetter) throws Exception {
- for (Class<? extends TestResourceBase> resource : resourceClasses) {
- HttpResponse response = httpGetter.get(path(resource));
- assertThat("Failed sending response to " + resource, response.getStatusLine().getStatusCode(), is(200));
-
- String content = new String(response.getEntity().getContent().readAllBytes(), StandardCharsets.UTF_8);
- assertThat(content, is(TestResourceBase.content(resource)));
- }
- }
-
- public void assertDoesNotRespond(Class<? extends TestResourceBase> resourceClass, HttpGetter httpGetter)
- throws Exception {
- HttpResponse response = httpGetter.get(path(resourceClass));
- assertThat(response.getStatusLine().getStatusCode(), is(404));
- EntityUtils.consume(response.getEntity());
- }
-
- public void saveMainBundleJarClassPathMappings(Path jarFile) throws Exception {
- assertTrue("Couldn't find file " + jarFile + ", please remember to run mvn process-test-resources first.",
- Files.isRegularFile(jarFile));
- saveMainBundleClassPathMappings(jarFile.toAbsolutePath().toString());
- }
-
- public void saveMainBundleClassPathMappings(String classPathElement) throws Exception {
- BundleClasspathMapping mainBundleClassPathMappings =
- new BundleClasspathMapping(bundleSymbolicName, List.of(classPathElement));
- save(new ProjectBundleClassPaths(mainBundleClassPathMappings, emptyList()));
- }
-
- public void save(ProjectBundleClassPaths projectBundleClassPaths) throws Exception {
- Path path = Paths.get(testClassesDirectory).resolve(ProjectBundleClassPaths.CLASSPATH_MAPPINGS_FILENAME);
- ProjectBundleClassPaths.save(path, projectBundleClassPaths);
- }
-
- public String path(Class<?> resourceClass) {
- return UriBuilder.fromResource(resourceClass).build().toString();
- }
-}
diff --git a/application/src/test/java/com/yahoo/application/container/jersey/resources/TestResource.java b/application/src/test/java/com/yahoo/application/container/jersey/resources/TestResource.java
deleted file mode 100644
index 5b6f1fa9c35..00000000000
--- a/application/src/test/java/com/yahoo/application/container/jersey/resources/TestResource.java
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.application.container.jersey.resources;
-
-import com.yahoo.container.test.jars.jersey.resources.TestResourceBase;
-
-import javax.ws.rs.Path;
-
-/**
- * @author Tony Vaagenes
- * @author ollivir
- */
-@Path("/test-resource")
-public class TestResource extends TestResourceBase {
-}
diff --git a/application/src/test/java/com/yahoo/application/container/jersey/resources/nestedpackage1/NestedTestResource1.java b/application/src/test/java/com/yahoo/application/container/jersey/resources/nestedpackage1/NestedTestResource1.java
deleted file mode 100644
index d4901995152..00000000000
--- a/application/src/test/java/com/yahoo/application/container/jersey/resources/nestedpackage1/NestedTestResource1.java
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.application.container.jersey.resources.nestedpackage1;
-
-import com.yahoo.container.test.jars.jersey.resources.TestResourceBase;
-
-import javax.ws.rs.Path;
-
-/**
- * @author Tony Vaagenes
- * @author ollivir
- */
-@Path("/nested-test-resource1")
-public class NestedTestResource1 extends TestResourceBase {
-}
diff --git a/application/src/test/java/com/yahoo/application/container/jersey/resources/nestedpackage2/NestedTestResource2.java b/application/src/test/java/com/yahoo/application/container/jersey/resources/nestedpackage2/NestedTestResource2.java
deleted file mode 100644
index 1763023a533..00000000000
--- a/application/src/test/java/com/yahoo/application/container/jersey/resources/nestedpackage2/NestedTestResource2.java
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.application.container.jersey.resources.nestedpackage2;
-
-import com.yahoo.container.test.jars.jersey.resources.TestResourceBase;
-
-import javax.ws.rs.Path;
-
-/**
- * @author Tony Vaagenes
- * @author ollivir
- */
-@Path("/nested-test-resource2")
-public class NestedTestResource2 extends TestResourceBase {
-}
diff --git a/application/src/test/java/com/yahoo/application/container/processors/Rot13Processor.java b/application/src/test/java/com/yahoo/application/container/processors/Rot13Processor.java
index 6560017d554..e8d04de5338 100644
--- a/application/src/test/java/com/yahoo/application/container/processors/Rot13Processor.java
+++ b/application/src/test/java/com/yahoo/application/container/processors/Rot13Processor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container.processors;
import com.yahoo.processing.Processor;
diff --git a/application/src/test/java/com/yahoo/application/container/renderers/MockRenderer.java b/application/src/test/java/com/yahoo/application/container/renderers/MockRenderer.java
index 99bb6c7b067..63d829c5e5d 100644
--- a/application/src/test/java/com/yahoo/application/container/renderers/MockRenderer.java
+++ b/application/src/test/java/com/yahoo/application/container/renderers/MockRenderer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container.renderers;
import com.yahoo.search.Result;
diff --git a/application/src/test/java/com/yahoo/application/container/searchers/AddHitSearcher.java b/application/src/test/java/com/yahoo/application/container/searchers/AddHitSearcher.java
index 274c37bcfc1..e16b1775ed8 100644
--- a/application/src/test/java/com/yahoo/application/container/searchers/AddHitSearcher.java
+++ b/application/src/test/java/com/yahoo/application/container/searchers/AddHitSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container.searchers;
import com.yahoo.search.Query;
diff --git a/application/src/test/java/com/yahoo/application/container/searchers/MockSearcher.java b/application/src/test/java/com/yahoo/application/container/searchers/MockSearcher.java
index 34913a1beb5..c38ffe23294 100644
--- a/application/src/test/java/com/yahoo/application/container/searchers/MockSearcher.java
+++ b/application/src/test/java/com/yahoo/application/container/searchers/MockSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container.searchers;
import com.yahoo.search.Query;
diff --git a/application/src/test/resources/configdefinitions/application.mock-application.def b/application/src/test/resources/configdefinitions/application.mock-application.def
index fa3a48bae96..1761d0447a9 100644
--- a/application/src/test/resources/configdefinitions/application.mock-application.def
+++ b/application/src/test/resources/configdefinitions/application.mock-application.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=application
mystruct.id string
diff --git a/application/src/test/resources/test.sd b/application/src/test/resources/test.sd
index 81d10391294..535f5621caf 100644
--- a/application/src/test/resources/test.sd
+++ b/application/src/test/resources/test.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search test {
document test {
diff --git a/athenz-identity-provider-service/pom.xml b/athenz-identity-provider-service/pom.xml
index 3c5f96a1fec..65777957d86 100644
--- a/athenz-identity-provider-service/pom.xml
+++ b/athenz-identity-provider-service/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/CertificateExpiryMetricUpdater.java b/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/CertificateExpiryMetricUpdater.java
index cd69099ea80..0661f73b497 100644
--- a/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/CertificateExpiryMetricUpdater.java
+++ b/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/CertificateExpiryMetricUpdater.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.athenz.instanceproviderservice;
import com.google.inject.Inject;
diff --git a/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/CkmsKeyProvider.java b/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/CkmsKeyProvider.java
index 88603dff57d..322a262206a 100644
--- a/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/CkmsKeyProvider.java
+++ b/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/CkmsKeyProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.athenz.instanceproviderservice;
import com.google.inject.Inject;
diff --git a/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/ConfigserverSslContextFactoryProvider.java b/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/ConfigserverSslContextFactoryProvider.java
index 880646e37e5..962a2c27dab 100644
--- a/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/ConfigserverSslContextFactoryProvider.java
+++ b/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/ConfigserverSslContextFactoryProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.athenz.instanceproviderservice;
import com.google.inject.Inject;
diff --git a/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/IdentityDocumentGenerator.java b/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/IdentityDocumentGenerator.java
index 3ea8eb1f538..9b853604537 100644
--- a/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/IdentityDocumentGenerator.java
+++ b/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/IdentityDocumentGenerator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.athenz.instanceproviderservice;
import com.google.inject.Inject;
diff --git a/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/IdentityProviderRequestHandler.java b/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/IdentityProviderRequestHandler.java
index afb3b1211a4..4d37d263fab 100644
--- a/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/IdentityProviderRequestHandler.java
+++ b/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/IdentityProviderRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.athenz.instanceproviderservice;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/InstanceConfirmation.java b/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/InstanceConfirmation.java
index 5641eb51668..6c09a35ee3d 100644
--- a/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/InstanceConfirmation.java
+++ b/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/InstanceConfirmation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.athenz.instanceproviderservice;
import com.fasterxml.jackson.annotation.JsonAnySetter;
diff --git a/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/InstanceValidator.java b/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/InstanceValidator.java
index 816da5d095d..148d52c3f33 100644
--- a/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/InstanceValidator.java
+++ b/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/InstanceValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.athenz.instanceproviderservice;
import com.google.common.net.InetAddresses;
diff --git a/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/KeyProvider.java b/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/KeyProvider.java
index 1d141099428..324f927fd73 100644
--- a/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/KeyProvider.java
+++ b/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/KeyProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.athenz.instanceproviderservice;
import java.security.KeyPair;
diff --git a/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/Utils.java b/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/Utils.java
index 4ee64044da8..5c4942f37cb 100644
--- a/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/Utils.java
+++ b/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/Utils.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.athenz.instanceproviderservice;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/package-info.java b/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/package-info.java
index 3024d1e0115..0cb5c9d4f82 100644
--- a/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/package-info.java
+++ b/athenz-identity-provider-service/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/athenz-identity-provider-service/src/test/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/AutoGeneratedKeyProvider.java b/athenz-identity-provider-service/src/test/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/AutoGeneratedKeyProvider.java
index 74e9b02e150..67e5caa0c18 100644
--- a/athenz-identity-provider-service/src/test/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/AutoGeneratedKeyProvider.java
+++ b/athenz-identity-provider-service/src/test/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/AutoGeneratedKeyProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.athenz.instanceproviderservice;
import com.yahoo.security.KeyAlgorithm;
diff --git a/athenz-identity-provider-service/src/test/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/IdentityDocumentGeneratorTest.java b/athenz-identity-provider-service/src/test/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/IdentityDocumentGeneratorTest.java
index 74289c7a451..508124935c1 100644
--- a/athenz-identity-provider-service/src/test/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/IdentityDocumentGeneratorTest.java
+++ b/athenz-identity-provider-service/src/test/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/IdentityDocumentGeneratorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.athenz.instanceproviderservice;
import com.yahoo.component.Version;
diff --git a/athenz-identity-provider-service/src/test/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/InstanceValidatorTest.java b/athenz-identity-provider-service/src/test/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/InstanceValidatorTest.java
index 9e6e10fbf6d..6dc2e58059f 100644
--- a/athenz-identity-provider-service/src/test/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/InstanceValidatorTest.java
+++ b/athenz-identity-provider-service/src/test/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/InstanceValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.athenz.instanceproviderservice;
import com.google.common.collect.ImmutableList;
diff --git a/athenz-identity-provider-service/src/test/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/TestUtils.java b/athenz-identity-provider-service/src/test/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/TestUtils.java
index 4a97ea7b09c..7573b5690e7 100644
--- a/athenz-identity-provider-service/src/test/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/TestUtils.java
+++ b/athenz-identity-provider-service/src/test/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/TestUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.athenz.instanceproviderservice;
import com.yahoo.vespa.hosted.athenz.instanceproviderservice.config.AthenzProviderServiceConfig;
diff --git a/bootstrap-cmake.sh b/bootstrap-cmake.sh
index dbe27f5b8bf..836cba3ef1e 100755
--- a/bootstrap-cmake.sh
+++ b/bootstrap-cmake.sh
@@ -1,5 +1,5 @@
#!/bin/bash -e
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
usage() {
echo "Usage: $0 [-u] <source-dir> [<extra-cmake-args>]" >&2
diff --git a/bootstrap.sh b/bootstrap.sh
index c9d24d9076c..9db11693774 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -1,5 +1,5 @@
#!/bin/bash -e
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
usage() {
echo "Usage: $0 [full | java | default]" >&2
diff --git a/build_settings.cmake b/build_settings.cmake
index 8dcef41caff..ea085721bdc 100644
--- a/build_settings.cmake
+++ b/build_settings.cmake
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# @author Vegard Sjonfjell
include(${CMAKE_CURRENT_LIST_DIR}/vtag.cmake)
diff --git a/bundle-plugin-test/README.md b/bundle-plugin-test/README.md
index 241db9bfea3..cef590e61f6 100644
--- a/bundle-plugin-test/README.md
+++ b/bundle-plugin-test/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Bundle plugin test
Integration tests for the JDisc bundle plugin.
diff --git a/bundle-plugin-test/integration-test/pom.xml b/bundle-plugin-test/integration-test/pom.xml
index e65cf077d62..5f9192b064b 100644
--- a/bundle-plugin-test/integration-test/pom.xml
+++ b/bundle-plugin-test/integration-test/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
@@ -88,4 +88,10 @@
</plugin>
</plugins>
</build>
+
+ <properties>
+ <maven.javadoc.skip>true</maven.javadoc.skip>
+ <maven.deploy.skip>true</maven.deploy.skip>
+ </properties>
+
</project>
diff --git a/bundle-plugin-test/integration-test/src/test/java/com/yahoo/container/plugin/BundleTest.java b/bundle-plugin-test/integration-test/src/test/java/com/yahoo/container/plugin/BundleTest.java
index 35a95ed3d89..dbfac4e730f 100644
--- a/bundle-plugin-test/integration-test/src/test/java/com/yahoo/container/plugin/BundleTest.java
+++ b/bundle-plugin-test/integration-test/src/test/java/com/yahoo/container/plugin/BundleTest.java
@@ -1,19 +1,15 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin;
-import com.yahoo.osgi.maven.ProjectBundleClassPaths;
import com.yahoo.vespa.config.VespaVersion;
import org.junit.Before;
-import org.junit.Rule;
import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.util.Collection;
import java.util.Enumeration;
import java.util.jar.Attributes;
import java.util.jar.JarEntry;
@@ -22,13 +18,7 @@ import java.util.jar.Manifest;
import java.util.regex.Pattern;
import java.util.zip.ZipEntry;
-import static com.yahoo.osgi.maven.ProjectBundleClassPaths.CLASSPATH_MAPPINGS_FILENAME;
-import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
-import static org.hamcrest.CoreMatchers.allOf;
-import static org.hamcrest.CoreMatchers.anyOf;
import static org.hamcrest.CoreMatchers.containsString;
-import static org.hamcrest.CoreMatchers.endsWith;
-import static org.hamcrest.CoreMatchers.hasItems;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
@@ -152,33 +142,4 @@ public class BundleTest {
assertThat(webInfUrl, containsString("/WEB-INF/web.xml"));
}
- // TODO Vespa 8: Remove, the classpath mappings file is only needed for jersey resources to work in the application test framework.
- // When this test is removed, also remove the maven-resources-plugin from the 'main' test bundle's pom.
- @Rule
- public TemporaryFolder tempFolder = new TemporaryFolder();
- @SuppressWarnings("unchecked")
- @Test
- public void bundle_class_path_mappings_are_generated() throws Exception {
- ZipEntry classpathMappingsEntry = jarFile.getEntry(CLASSPATH_MAPPINGS_FILENAME);
-
- assertNotNull(
- "Could not find " + CLASSPATH_MAPPINGS_FILENAME + " in the test bundle",
- classpathMappingsEntry);
-
- Path mappingsFile = tempFolder.newFile(CLASSPATH_MAPPINGS_FILENAME).toPath();
- Files.copy(jarFile.getInputStream(classpathMappingsEntry), mappingsFile, REPLACE_EXISTING);
-
- ProjectBundleClassPaths bundleClassPaths = ProjectBundleClassPaths.load(mappingsFile);
-
- assertThat(bundleClassPaths.mainBundle.bundleSymbolicName, is("main"));
-
- Collection<String> mainBundleClassPaths = bundleClassPaths.mainBundle.classPathElements;
-
- assertThat(mainBundleClassPaths,
- hasItems(
- endsWith("target/classes"),
- anyOf(
- allOf(containsString("/jrt-"), containsString(".jar")),
- containsString("/jrt.jar"))));
- }
}
diff --git a/bundle-plugin-test/integration-test/src/test/java/com/yahoo/container/plugin/ExportPackageVersionTest.java b/bundle-plugin-test/integration-test/src/test/java/com/yahoo/container/plugin/ExportPackageVersionTest.java
index 66f36e32f39..36d3faba81f 100644
--- a/bundle-plugin-test/integration-test/src/test/java/com/yahoo/container/plugin/ExportPackageVersionTest.java
+++ b/bundle-plugin-test/integration-test/src/test/java/com/yahoo/container/plugin/ExportPackageVersionTest.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin;
import org.junit.BeforeClass;
diff --git a/bundle-plugin-test/pom.xml b/bundle-plugin-test/pom.xml
index 67e869a841d..0500e69acb3 100644
--- a/bundle-plugin-test/pom.xml
+++ b/bundle-plugin-test/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
@@ -23,6 +23,8 @@
<properties>
<!-- This project only builds test artifacts -->
<maven.deploy.skip>true</maven.deploy.skip>
+ <maven.javadoc.skip>true</maven.javadoc.skip>
+ <skipNexusStagingDeployMojo>true</skipNexusStagingDeployMojo>
</properties>
</project>
diff --git a/bundle-plugin-test/test-bundles/artifact-version-for-exports-dep/pom.xml b/bundle-plugin-test/test-bundles/artifact-version-for-exports-dep/pom.xml
index 34b250ae927..e4ef18d179d 100644
--- a/bundle-plugin-test/test-bundles/artifact-version-for-exports-dep/pom.xml
+++ b/bundle-plugin-test/test-bundles/artifact-version-for-exports-dep/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/bundle-plugin-test/test-bundles/artifact-version-for-exports-dep/src/main/java/ai/vespa/explicitversion_dep/package-info.java b/bundle-plugin-test/test-bundles/artifact-version-for-exports-dep/src/main/java/ai/vespa/explicitversion_dep/package-info.java
index 3eea8b11f1e..af0086e81d1 100644
--- a/bundle-plugin-test/test-bundles/artifact-version-for-exports-dep/src/main/java/ai/vespa/explicitversion_dep/package-info.java
+++ b/bundle-plugin-test/test-bundles/artifact-version-for-exports-dep/src/main/java/ai/vespa/explicitversion_dep/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage(version = @Version(major = 3, minor = 6, micro = 9, qualifier = "RELEASE"))
package ai.vespa.explicitversion_dep;
diff --git a/bundle-plugin-test/test-bundles/artifact-version-for-exports-dep/src/main/java/ai/vespa/noversion_dep/package-info.java b/bundle-plugin-test/test-bundles/artifact-version-for-exports-dep/src/main/java/ai/vespa/noversion_dep/package-info.java
index 794e177f7e7..d055cd09193 100644
--- a/bundle-plugin-test/test-bundles/artifact-version-for-exports-dep/src/main/java/ai/vespa/noversion_dep/package-info.java
+++ b/bundle-plugin-test/test-bundles/artifact-version-for-exports-dep/src/main/java/ai/vespa/noversion_dep/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package ai.vespa.noversion_dep;
diff --git a/bundle-plugin-test/test-bundles/artifact-version-for-exports/pom.xml b/bundle-plugin-test/test-bundles/artifact-version-for-exports/pom.xml
index 619189cd874..ede831adfbc 100644
--- a/bundle-plugin-test/test-bundles/artifact-version-for-exports/pom.xml
+++ b/bundle-plugin-test/test-bundles/artifact-version-for-exports/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/bundle-plugin-test/test-bundles/artifact-version-for-exports/src/main/java/ai/vespa/explicitversion/package-info.java b/bundle-plugin-test/test-bundles/artifact-version-for-exports/src/main/java/ai/vespa/explicitversion/package-info.java
index 96cf6a3bf85..d284a1d6ebc 100644
--- a/bundle-plugin-test/test-bundles/artifact-version-for-exports/src/main/java/ai/vespa/explicitversion/package-info.java
+++ b/bundle-plugin-test/test-bundles/artifact-version-for-exports/src/main/java/ai/vespa/explicitversion/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage(version = @Version(major = 2, minor = 4, micro = 6, qualifier = "RELEASE"))
package ai.vespa.explicitversion;
diff --git a/bundle-plugin-test/test-bundles/artifact-version-for-exports/src/main/java/ai/vespa/noversion/package-info.java b/bundle-plugin-test/test-bundles/artifact-version-for-exports/src/main/java/ai/vespa/noversion/package-info.java
index e7e11e39889..371d1d9c196 100644
--- a/bundle-plugin-test/test-bundles/artifact-version-for-exports/src/main/java/ai/vespa/noversion/package-info.java
+++ b/bundle-plugin-test/test-bundles/artifact-version-for-exports/src/main/java/ai/vespa/noversion/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package ai.vespa.noversion;
diff --git a/bundle-plugin-test/test-bundles/main/pom.xml b/bundle-plugin-test/test-bundles/main/pom.xml
index 190e1c9d90f..8153d46bcb7 100644
--- a/bundle-plugin-test/test-bundles/main/pom.xml
+++ b/bundle-plugin-test/test-bundles/main/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
@@ -42,32 +42,6 @@
<WebInfUrl>/WEB-INF/web.xml</WebInfUrl>
</configuration>
</plugin>
- <plugin>
- <!-- Trick to copy bundle-plugin.bundle-classpath-mappings.json from target/test-classes to target/classes -->
- <artifactId>maven-resources-plugin</artifactId>
- <executions>
- <execution>
- <id>copy-bundle-classpath-mappings-from-test-to-main</id>
- <!-- NOTE: Must be done after generating classpath-mappings and before assembling the bundle (see the test-bundles pom) -->
- <phase>process-test-sources</phase>
- <goals>
- <goal>copy-resources</goal>
- </goals>
- <configuration>
- <outputDirectory>${project.build.outputDirectory}</outputDirectory>
- <overwrite>true</overwrite>
- <resources>
- <resource>
- <directory>${project.build.testOutputDirectory}</directory>
- <includes>
- <include>bundle-plugin.bundle-classpath-mappings.json</include>
- </includes>
- </resource>
- </resources>
- </configuration>
- </execution>
- </executions>
- </plugin>
</plugins>
</build>
</project>
diff --git a/bundle-plugin-test/test-bundles/main/src/main/java/InDefaultPackage.java b/bundle-plugin-test/test-bundles/main/src/main/java/InDefaultPackage.java
index a650916d653..d8f54aadc8d 100644
--- a/bundle-plugin-test/test-bundles/main/src/main/java/InDefaultPackage.java
+++ b/bundle-plugin-test/test-bundles/main/src/main/java/InDefaultPackage.java
@@ -1,3 +1,3 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
public class InDefaultPackage {}
diff --git a/bundle-plugin-test/test-bundles/main/src/main/java/com/yahoo/test/SimpleSearcher.java b/bundle-plugin-test/test-bundles/main/src/main/java/com/yahoo/test/SimpleSearcher.java
index ae9644aa010..01c650f587f 100644
--- a/bundle-plugin-test/test-bundles/main/src/main/java/com/yahoo/test/SimpleSearcher.java
+++ b/bundle-plugin-test/test-bundles/main/src/main/java/com/yahoo/test/SimpleSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.test;
import com.yahoo.prelude.hitfield.XMLString;
diff --git a/bundle-plugin-test/test-bundles/main/src/main/java/com/yahoo/test/SimpleSearcher2.java b/bundle-plugin-test/test-bundles/main/src/main/java/com/yahoo/test/SimpleSearcher2.java
index 3220171de13..db6b50ae8ef 100644
--- a/bundle-plugin-test/test-bundles/main/src/main/java/com/yahoo/test/SimpleSearcher2.java
+++ b/bundle-plugin-test/test-bundles/main/src/main/java/com/yahoo/test/SimpleSearcher2.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.test;
diff --git a/bundle-plugin-test/test-bundles/main/src/main/java/com/yahoo/test/package-info.java b/bundle-plugin-test/test-bundles/main/src/main/java/com/yahoo/test/package-info.java
index 5774fc8d5f2..852a8387cfe 100644
--- a/bundle-plugin-test/test-bundles/main/src/main/java/com/yahoo/test/package-info.java
+++ b/bundle-plugin-test/test-bundles/main/src/main/java/com/yahoo/test/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage(version = @Version(major = 1, minor = 2, micro = 3, qualifier = "RELEASE"))
package com.yahoo.test;
diff --git a/bundle-plugin-test/test-bundles/main/src/main/resources/configdefinitions/example.test.def b/bundle-plugin-test/test-bundles/main/src/main/resources/configdefinitions/example.test.def
index b4ba9ec518a..0bcf6501dbd 100644
--- a/bundle-plugin-test/test-bundles/main/src/main/resources/configdefinitions/example.test.def
+++ b/bundle-plugin-test/test-bundles/main/src/main/resources/configdefinitions/example.test.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=example
exampleKey string default="exampleValue"
diff --git a/bundle-plugin-test/test-bundles/pom.xml b/bundle-plugin-test/test-bundles/pom.xml
index 712ccb5542e..faddeafc76d 100644
--- a/bundle-plugin-test/test-bundles/pom.xml
+++ b/bundle-plugin-test/test-bundles/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
@@ -30,13 +30,6 @@
<version>${project.version}</version>
<executions>
<execution>
- <id>generate-classpath-mappings</id>
- <phase>generate-test-sources</phase>
- <goals>
- <goal>generate-bundle-classpath-mappings</goal>
- </goals>
- </execution>
- <execution>
<id>package-test-bundles</id>
<!-- Must be done after generating classpath-mappings and copying it in the 'main' bundle. -->
<phase>test-compile</phase>
@@ -71,5 +64,6 @@
<properties>
<maven.javadoc.skip>true</maven.javadoc.skip>
+ <maven.deploy.skip>true</maven.deploy.skip>
</properties>
</project>
diff --git a/bundle-plugin/README.md b/bundle-plugin/README.md
index 64a8038b9fc..88ad7b2639f 100644
--- a/bundle-plugin/README.md
+++ b/bundle-plugin/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# JDisc bundle plugin
Maven plugin for building OSGi bundles for JDisc.
diff --git a/bundle-plugin/pom.xml b/bundle-plugin/pom.xml
index 611753528c3..07811d23581 100644
--- a/bundle-plugin/pom.xml
+++ b/bundle-plugin/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/bundle/AnalyzeBundle.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/bundle/AnalyzeBundle.java
index 8920acd431b..2e44e69bac6 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/bundle/AnalyzeBundle.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/bundle/AnalyzeBundle.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.bundle;
import com.yahoo.container.plugin.osgi.ExportPackageParser;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/bundle/TransformExportPackages.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/bundle/TransformExportPackages.java
index 8686fef0a55..092fdc75a4d 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/bundle/TransformExportPackages.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/bundle/TransformExportPackages.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.bundle;
import com.yahoo.container.plugin.osgi.ExportPackages.Export;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/Analyze.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/Analyze.java
index d586f324f77..054e820b1a4 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/Analyze.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/Analyze.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis;
import org.apache.maven.artifact.versioning.ArtifactVersion;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassVisitor.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassVisitor.java
index e37a9caa7cc..88b752ae945 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassVisitor.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis;
import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeFieldVisitor.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeFieldVisitor.java
index 1966c602479..b4c44c9ed40 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeFieldVisitor.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeFieldVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis;
import org.objectweb.asm.AnnotationVisitor;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodVisitor.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodVisitor.java
index 6a769b26295..b7d1291d54a 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodVisitor.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis;
import org.objectweb.asm.AnnotationVisitor;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeSignatureVisitor.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeSignatureVisitor.java
index c20d7d47de0..d3c32e11201 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeSignatureVisitor.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/AnalyzeSignatureVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis;
import org.objectweb.asm.Opcodes;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ClassFileMetaData.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ClassFileMetaData.java
index 198618cabc4..4195f342e92 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ClassFileMetaData.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ClassFileMetaData.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis;
import java.util.Optional;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ExportPackageAnnotation.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ExportPackageAnnotation.java
index d2da9b5a226..955056b2306 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ExportPackageAnnotation.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ExportPackageAnnotation.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis;
import java.util.Objects;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ImportCollector.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ImportCollector.java
index 3946fe297f9..1dc1e49897d 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ImportCollector.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/ImportCollector.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis;
import org.objectweb.asm.Type;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/PackageTally.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/PackageTally.java
index 9f5fd2236e7..2ad77e2433b 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/PackageTally.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/PackageTally.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis;
import com.google.common.annotations.VisibleForTesting;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/Packages.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/Packages.java
index f9c6503c475..3d20bfd54df 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/Packages.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/Packages.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis;
import java.util.HashSet;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AbstractAssembleBundleMojo.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AbstractAssembleBundleMojo.java
index 622cb9a49b0..f5978148d1a 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AbstractAssembleBundleMojo.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AbstractAssembleBundleMojo.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.mojo;
import com.yahoo.container.plugin.util.Files;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AbstractGenerateOsgiManifestMojo.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AbstractGenerateOsgiManifestMojo.java
index d648d9ca258..8816aa9f1c5 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AbstractGenerateOsgiManifestMojo.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AbstractGenerateOsgiManifestMojo.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.mojo;
import com.yahoo.container.plugin.classanalysis.Analyze;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AssembleContainerPluginMojo.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AssembleContainerPluginMojo.java
index 441d7b5a7b8..a1d3cd13b3a 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AssembleContainerPluginMojo.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AssembleContainerPluginMojo.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.mojo;
import com.yahoo.container.plugin.util.Artifacts;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AssembleTestBundleMojo.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AssembleTestBundleMojo.java
index 98176e62b93..117d2cdc87e 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AssembleTestBundleMojo.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AssembleTestBundleMojo.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.mojo;
import com.yahoo.container.plugin.util.Artifacts;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateBundleClassPathMappingsMojo.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateBundleClassPathMappingsMojo.java
deleted file mode 100644
index e94e05512aa..00000000000
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateBundleClassPathMappingsMojo.java
+++ /dev/null
@@ -1,116 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.container.plugin.mojo;
-
-import com.google.common.base.Preconditions;
-import com.yahoo.container.plugin.bundle.AnalyzeBundle;
-import com.yahoo.container.plugin.osgi.ProjectBundleClassPaths;
-import com.yahoo.container.plugin.osgi.ProjectBundleClassPaths.BundleClasspathMapping;
-import com.yahoo.container.plugin.util.Artifacts;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.plugins.annotations.ResolutionScope;
-import org.apache.maven.project.MavenProject;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Optional;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-/**
- * Generates mapping from Bundle-SymbolicName to classpath elements, e.g myBundle -&gt; [.m2/repository/com/mylib/Mylib.jar,
- * myBundleProject/target/classes] The mapping in stored in a json file.
- *
- * @author Tony Vaagenes
- * @author ollivir
- */
-@Mojo(name = "generate-bundle-classpath-mappings", requiresDependencyResolution = ResolutionScope.COMPILE_PLUS_RUNTIME, threadSafe = true)
-public class GenerateBundleClassPathMappingsMojo extends AbstractMojo {
- @Parameter(defaultValue = "${project}")
- private MavenProject project = null;
-
- //TODO: Combine with com.yahoo.container.plugin.mojo.GenerateOsgiManifestMojo.bundleSymbolicName
- @Parameter(alias = "Bundle-SymbolicName", defaultValue = "${project.artifactId}")
- private String bundleSymbolicName = null;
-
- /* Sample output -- target/test-classes/bundle-plugin.bundle-classpath-mappings.json
- {
- "mainBundle": {
- "bundleSymbolicName": "bundle-plugin-test",
- "classPathElements": [
- "/Users/tonyv/Repos/vespa/bundle-plugin-test/target/classes",
- "/Users/tonyv/.m2/repository/com/yahoo/vespa/jrt/7-SNAPSHOT/jrt-7-SNAPSHOT.jar",
- "/Users/tonyv/.m2/repository/com/yahoo/vespa/annotations/7-SNAPSHOT/annotations-7-SNAPSHOT.jar"
- ]
- },
- "providedDependencies": [
- {
- "bundleSymbolicName": "jrt",
- "classPathElements": [
- "/Users/tonyv/.m2/repository/com/yahoo/vespa/jrt/7-SNAPSHOT/jrt-7-SNAPSHOT.jar"
- ]
- }
- ]
- }
- */
- @Override
- public void execute() throws MojoExecutionException {
- Preconditions.checkNotNull(bundleSymbolicName);
-
- Artifacts.ArtifactSet artifacts = Artifacts.getArtifacts(project);
- List<Artifact> embeddedArtifacts = artifacts.getJarArtifactsToInclude();
- List<Artifact> providedJarArtifacts = artifacts.getJarArtifactsProvided();
-
- List<File> embeddedArtifactsFiles = embeddedArtifacts.stream().map(Artifact::getFile).collect(Collectors.toList());
-
- List<String> classPathElements = Stream.concat(Stream.of(outputDirectory()), embeddedArtifactsFiles.stream())
- .map(File::getAbsolutePath).collect(Collectors.toList());
-
- ProjectBundleClassPaths classPathMappings = new ProjectBundleClassPaths(
- new BundleClasspathMapping(bundleSymbolicName, classPathElements),
- providedJarArtifacts.stream().map(f -> createDependencyClasspathMapping(f)).filter(Optional::isPresent).map(Optional::get)
- .collect(Collectors.toList()));
-
- try {
- ProjectBundleClassPaths.save(testOutputPath().resolve(ProjectBundleClassPaths.CLASSPATH_MAPPINGS_FILENAME), classPathMappings);
- } catch (IOException e) {
- throw new MojoExecutionException("Error saving to file " + testOutputPath(), e);
- }
- }
-
- private File outputDirectory() {
- return new File(project.getBuild().getOutputDirectory());
- }
-
- private Path testOutputPath() {
- return Paths.get(project.getBuild().getTestOutputDirectory());
- }
-
- /* TODO:
- * 1) add the dependencies of the artifact in the future(i.e. dependencies of dependencies)
- * or
- * 2) obtain bundles with embedded dependencies from the maven repository,
- * and support loading classes from the nested jar files in those bundles.
- */
- Optional<BundleClasspathMapping> createDependencyClasspathMapping(Artifact artifact) {
- return bundleSymbolicNameForArtifact(artifact)
- .map(name -> new BundleClasspathMapping(name, Arrays.asList(artifact.getFile().getAbsolutePath())));
- }
-
- private static Optional<String> bundleSymbolicNameForArtifact(Artifact artifact) {
- if (artifact.getFile().getName().endsWith(".jar")) {
- return AnalyzeBundle.bundleSymbolicName(artifact.getFile());
- } else {
- // Not the best heuristic. The other alternatives are parsing the pom file or
- // storing information in target/classes when building the provided bundles.
- return Optional.of(artifact.getArtifactId());
- }
- }
-}
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateOsgiManifestMojo.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateOsgiManifestMojo.java
index e1d199c4c9b..7e5ba3d91ce 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateOsgiManifestMojo.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateOsgiManifestMojo.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.mojo;
import com.google.common.collect.Sets;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateSourcesMojo.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateSourcesMojo.java
index 2d174f6bb4b..5fd9f574946 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateSourcesMojo.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateSourcesMojo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.mojo;
import org.apache.maven.execution.MavenSession;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateTestBundleOsgiManifestMojo.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateTestBundleOsgiManifestMojo.java
index 819b47aa417..2241f19d5d7 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateTestBundleOsgiManifestMojo.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateTestBundleOsgiManifestMojo.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.mojo;
import com.yahoo.container.plugin.classanalysis.Analyze;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/osgi/ExportPackageParser.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/osgi/ExportPackageParser.java
index f5e9a1b21a7..194b764afff 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/osgi/ExportPackageParser.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/osgi/ExportPackageParser.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.osgi;
import java.util.ArrayList;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/osgi/ExportPackages.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/osgi/ExportPackages.java
index fd2d098d74a..3b2aa2369ef 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/osgi/ExportPackages.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/osgi/ExportPackages.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.osgi;
import java.util.Collection;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/osgi/ImportPackages.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/osgi/ImportPackages.java
index a3031cb7ad7..7532e9b7e53 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/osgi/ImportPackages.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/osgi/ImportPackages.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.osgi;
import com.google.common.collect.Sets;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/osgi/ProjectBundleClassPaths.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/osgi/ProjectBundleClassPaths.java
deleted file mode 100644
index 42033f6ac73..00000000000
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/osgi/ProjectBundleClassPaths.java
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.container.plugin.osgi;
-
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * Represents the bundles in a maven project and the classpath elements
- * corresponding to code that would end up in the bundle.
- *
- * @author Tony Vaagenes
- * @author bjorncs
- */
-public class ProjectBundleClassPaths {
- public static final String CLASSPATH_MAPPINGS_FILENAME = "bundle-plugin.bundle-classpath-mappings.json";
-
- private static final ObjectMapper mapper = new ObjectMapper();
-
- @JsonProperty("mainBundle") public final BundleClasspathMapping mainBundle;
- @JsonProperty("providedDependencies") public final List<BundleClasspathMapping> providedDependencies;
-
- @JsonCreator
- public ProjectBundleClassPaths(@JsonProperty("mainBundle") BundleClasspathMapping mainBundle,
- @JsonProperty("providedDependencies") List<BundleClasspathMapping> providedDependencies) {
- this.mainBundle = mainBundle;
- this.providedDependencies = providedDependencies;
- }
-
- public static void save(Path path, ProjectBundleClassPaths mappings) throws IOException {
- Files.createDirectories(path.getParent());
- mapper.writeValue(path.toFile(), mappings);
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- ProjectBundleClassPaths that = (ProjectBundleClassPaths) o;
- return Objects.equals(mainBundle, that.mainBundle) &&
- Objects.equals(providedDependencies, that.providedDependencies);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(mainBundle, providedDependencies);
- }
-
- public static class BundleClasspathMapping {
- @JsonProperty("bundleSymbolicName") public final String bundleSymbolicName;
- @JsonProperty("classPathElements") public final List<String> classPathElements;
-
- @JsonCreator
- public BundleClasspathMapping(@JsonProperty("bundleSymbolicName") String bundleSymbolicName,
- @JsonProperty("classPathElements") List<String> classPathElements) {
- this.bundleSymbolicName = bundleSymbolicName;
- this.classPathElements = classPathElements;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- BundleClasspathMapping that = (BundleClasspathMapping) o;
- return Objects.equals(bundleSymbolicName, that.bundleSymbolicName) &&
- Objects.equals(classPathElements, that.classPathElements);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(bundleSymbolicName, classPathElements);
- }
- }
-}
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/Artifacts.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/Artifacts.java
index fc771e23fa7..bde0c124229 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/Artifacts.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/Artifacts.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.util;
import org.apache.maven.artifact.Artifact;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/Files.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/Files.java
index bcd5d3768f3..3439fc819b8 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/Files.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/Files.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.util;
import java.io.File;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/IO.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/IO.java
index 654fb700a43..fb15c83bdb9 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/IO.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/IO.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.util;
import java.io.File;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/JarFiles.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/JarFiles.java
index 398b2f5a72a..72d2adae13e 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/JarFiles.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/JarFiles.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.util;
import java.io.File;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/Maps.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/Maps.java
index 5aa14402d4e..7b80a00d893 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/Maps.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/Maps.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.util;
import java.util.HashMap;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/Strings.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/Strings.java
index 15bdfb153ad..f7f35d8e3da 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/Strings.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/Strings.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.util;
import java.util.Optional;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/TestBundleDependencyScopeTranslator.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/TestBundleDependencyScopeTranslator.java
index 04ede59e2fe..d922b63c24c 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/TestBundleDependencyScopeTranslator.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/TestBundleDependencyScopeTranslator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.util;
import org.apache.maven.artifact.Artifact;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/TestBundleUtils.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/TestBundleUtils.java
index b8824952995..39c9cdeb847 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/TestBundleUtils.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/TestBundleUtils.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.util;
import org.apache.maven.project.MavenProject;
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/ThrowingFunction.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/ThrowingFunction.java
index 9ca64aabd73..7fc8cbe89b5 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/ThrowingFunction.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/ThrowingFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.util;
/* Equivalent to java.util.function.Function, but allows throwing of Exceptions */
diff --git a/bundle-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml b/bundle-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml
index 14c9a8a71fe..79488b1e2c1 100644
--- a/bundle-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml
+++ b/bundle-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
diff --git a/bundle-plugin/src/main/resources/META-INF/plexus/components.xml b/bundle-plugin/src/main/resources/META-INF/plexus/components.xml
index f305d02c4ae..e8e6dbd247b 100644
--- a/bundle-plugin/src/main/resources/META-INF/plexus/components.xml
+++ b/bundle-plugin/src/main/resources/META-INF/plexus/components.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<component-set>
<components>
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/bundle/AnalyzeBundleTest.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/bundle/AnalyzeBundleTest.java
index 133cca164f8..8fba5983049 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/bundle/AnalyzeBundleTest.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/bundle/AnalyzeBundleTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.bundle;
import com.yahoo.container.plugin.osgi.ExportPackages;
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassTest.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassTest.java
index e9df42f24f4..44ef26646f0 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassTest.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeClassTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis;
import com.yahoo.container.plugin.classanalysis.sampleclasses.Base;
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodBodyTest.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodBodyTest.java
index 5ca8ed349a4..b7565a4dad8 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodBodyTest.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodBodyTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis;
import com.yahoo.container.plugin.classanalysis.sampleclasses.Base;
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/PackageTallyTest.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/PackageTallyTest.java
index e80562c2c13..cfee980cb91 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/PackageTallyTest.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/PackageTallyTest.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis;
import org.junit.Test;
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/TestUtilities.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/TestUtilities.java
index 6ff6bafd816..f0784cf80bc 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/TestUtilities.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/TestUtilities.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis;
import org.hamcrest.Description;
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Base.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Base.java
index cdada15a96f..ba5d1f2c5d1 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Base.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Base.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis.sampleclasses;
import java.awt.*;
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/CatchException.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/CatchException.java
index d4687120ab3..f25fc781b93 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/CatchException.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/CatchException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis.sampleclasses;
import javax.security.auth.login.LoginException;
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/ClassAnnotation.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/ClassAnnotation.java
index fc6a3de7b80..5ce05483d62 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/ClassAnnotation.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/ClassAnnotation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis.sampleclasses;
/**
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/ClassReference.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/ClassReference.java
index 0da35015861..70f88b9d95b 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/ClassReference.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/ClassReference.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis.sampleclasses;
/**
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/ClassWithMethod.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/ClassWithMethod.java
index c3a4ad8639d..715578bb346 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/ClassWithMethod.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/ClassWithMethod.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis.sampleclasses;
/**
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Derived.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Derived.java
index 8b542c6d407..a92dae8888a 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Derived.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Derived.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis.sampleclasses;
/**
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Dummy.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Dummy.java
index b0ee9e7be88..066ff5a9996 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Dummy.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Dummy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis.sampleclasses;
/**
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/DummyAnnotation.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/DummyAnnotation.java
index 14c360c26d6..a07b2917bd4 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/DummyAnnotation.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/DummyAnnotation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis.sampleclasses;
/**
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Fields.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Fields.java
index c080a4d410b..5ec1c19b46e 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Fields.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Fields.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis.sampleclasses;
import java.util.List;
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Interface1.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Interface1.java
index a1d6de8be73..f74ce7938d5 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Interface1.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Interface1.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis.sampleclasses;
import java.awt.*;
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Interface2.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Interface2.java
index 977638c9550..5b639179b12 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Interface2.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Interface2.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis.sampleclasses;
/**
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/MethodAnnotation.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/MethodAnnotation.java
index fb6d4bb6e6a..0beb9939c65 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/MethodAnnotation.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/MethodAnnotation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis.sampleclasses;
/**
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/MethodInvocation.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/MethodInvocation.java
index 7343a1f1a79..4b8b9b6e825 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/MethodInvocation.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/MethodInvocation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis.sampleclasses;
/**
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Methods.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Methods.java
index ca8050698c0..fcc7057dac8 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Methods.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/Methods.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.classanalysis.sampleclasses;
import java.util.List;
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/invalid/package-info.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/invalid/package-info.java
index 8890dc41ffc..c457f39ffef 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/invalid/package-info.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/invalid/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage(version = @Version(qualifier = "EXAMPLE INVALID QUALIFIER"))
package com.yahoo.container.plugin.classanalysis.sampleclasses.invalid;
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/package-info.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/package-info.java
index 449174a5d3c..d0d1db97c26 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/package-info.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/sampleclasses/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage(version = @Version(major = 3, minor = 1, micro = 4, qualifier = "TEST_QUALIFIER-2"))
package com.yahoo.container.plugin.classanalysis.sampleclasses;
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/mojo/GenerateSourcesMojoTest.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/mojo/GenerateSourcesMojoTest.java
index 640bfa07c71..9aaf06aa357 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/mojo/GenerateSourcesMojoTest.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/mojo/GenerateSourcesMojoTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.mojo;
import org.apache.maven.plugin.MojoExecutionException;
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/osgi/ExportPackageParserTest.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/osgi/ExportPackageParserTest.java
index 45f2ef54f7f..cb976e46655 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/osgi/ExportPackageParserTest.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/osgi/ExportPackageParserTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.osgi;
import com.yahoo.container.plugin.osgi.ExportPackages.Export;
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/osgi/ImportPackageTest.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/osgi/ImportPackageTest.java
index b76151c790e..d6b5b0fe9e0 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/osgi/ImportPackageTest.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/osgi/ImportPackageTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.osgi;
import com.yahoo.container.plugin.osgi.ExportPackages.Export;
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/util/TestBundleDependencyScopeTranslatorTest.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/util/TestBundleDependencyScopeTranslatorTest.java
index e01477eb22a..d5986b00077 100644
--- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/util/TestBundleDependencyScopeTranslatorTest.java
+++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/util/TestBundleDependencyScopeTranslatorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.util;
diff --git a/client/README.md b/client/README.md
index 047276455ec..dd149aa4948 100644
--- a/client/README.md
+++ b/client/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# vespa_query_dsl
This lib is used for composing vespa YQL queries
diff --git a/client/go/.gitattributes b/client/go/.gitattributes
new file mode 100644
index 00000000000..6767a69b3b1
--- /dev/null
+++ b/client/go/.gitattributes
@@ -0,0 +1 @@
+**/testdata/* linguist-vendored
diff --git a/client/go/.gitignore b/client/go/.gitignore
new file mode 100644
index 00000000000..eb679add05e
--- /dev/null
+++ b/client/go/.gitignore
@@ -0,0 +1,6 @@
+bin/
+dist/
+share/
+!Makefile
+!build/
+!target/
diff --git a/client/go/Makefile b/client/go/Makefile
new file mode 100644
index 00000000000..08f88960e4a
--- /dev/null
+++ b/client/go/Makefile
@@ -0,0 +1,113 @@
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+# The version to release. Defaults to the current tag or revision.
+# Use env VERSION=X.Y.Z make ... to override
+VERSION ?= $(shell git describe --tags --exact-match 2> /dev/null | sed "s/^v//")
+DEVEL_VERSION := $(shell echo "0.0.0-`git rev-parse --short HEAD`")
+ifeq ($(VERSION),)
+ VERSION = $(DEVEL_VERSION)
+endif
+
+BIN ?= $(CURDIR)/bin
+SHARE ?= $(CURDIR)/share
+DIST ?= $(CURDIR)/dist
+
+GO_FLAGS := -ldflags "-X github.com/vespa-engine/vespa/client/go/build.Version=$(VERSION)"
+GIT_ROOT := $(shell git rev-parse --show-toplevel)
+DIST_TARGETS := dist-mac dist-mac-arm64 dist-linux dist-win32 dist-win64
+
+all: test checkfmt install
+
+#
+# Dist targets
+#
+
+# Bump the version of the vespa-cli formula and create a pull request to Homebrew repository.
+#
+# Example:
+#
+# $ git checkout vX.Y.Z
+# $ make dist-homebrew
+dist-homebrew: dist-version
+ brew bump-formula-pr --tag v$(VERSION) vespa-cli
+
+# Create a GitHub release draft for all platforms. Note that this only creates a
+# draft, which is not publicly visible until it's explicitly published.
+#
+# Once the release has been created this prints an URL to the release draft.
+#
+# This requires the GitHub CLI to be installed: brew install gh
+#
+# Example:
+#
+# $ git checkout vX.Y.Z
+# $ make dist-github
+dist-github: dist
+ gh release create v$(VERSION) --repo vespa-engine/vespa --notes-file $(CURDIR)/README.md --draft --title "Vespa CLI $(VERSION)" \
+ $(DIST)/vespa-cli_$(VERSION)_sha256sums.txt \
+ $(DIST)/vespa-cli_$(VERSION)_*.{zip,tar.gz}
+
+#
+# Cross-platform build targets
+#
+
+dist: $(DIST_TARGETS) dist-sha256sums
+
+dist-mac: GOOS=darwin
+dist-mac: GOARCH=amd64
+
+dist-mac-arm64: GOOS=darwin
+dist-mac-arm64: GOARCH=arm64
+
+dist-linux: GOOS=linux
+dist-linux: GOARCH=amd64
+
+dist-win32: GOOS=windows
+dist-win32: GOARCH=386
+
+dist-win64: GOOS=windows
+dist-win64: GOARCH=amd64
+
+$(DIST_TARGETS): DIST_NAME=vespa-cli_$(VERSION)_$(GOOS)_$(GOARCH)
+$(DIST_TARGETS): dist-version manpages
+$(DIST_TARGETS):
+ mkdir -p $(DIST)/$(DIST_NAME)/bin
+ env GOOS=$(GOOS) GOARCH=$(GOARCH) go build -o $(DIST)/$(DIST_NAME)/bin $(GO_FLAGS) ./...
+ cp -a $(GIT_ROOT)/LICENSE $(DIST)/$(DIST_NAME)
+ if [ "$(GOOS)" = "windows" ]; then \
+ cd $(DIST) && zip -r $(DIST)/$(DIST_NAME).zip $(DIST_NAME); \
+ else \
+ cp -a share $(DIST)/$(DIST_NAME); \
+ tar -czvf $(DIST)/$(DIST_NAME).tar.gz -C $(DIST) $(DIST_NAME); \
+ fi
+
+dist-sha256sums:
+ cd $(DIST) && sha256sum vespa-cli_$(VERSION)_*.{zip,tar.gz} > vespa-cli_$(VERSION)_sha256sums.txt
+
+dist-version:
+ifeq ($(VERSION),$(DEVEL_VERSION))
+ $(error Invalid release version: $(VERSION). Try 'git checkout vX.Y.Z' or 'env VERSION=X.Y.Z make ...')
+endif
+
+#
+# Development targets
+#
+
+install:
+ env GOBIN=$(BIN) go install $(GO_FLAGS) ./...
+
+manpages: install
+ mkdir -p $(SHARE)/man/man1
+ $(BIN)/vespa man $(SHARE)/man/man1
+
+clean:
+ rm -rf $(BIN) $(SHARE) $(DIST)
+
+test:
+ go test ./...
+
+checkfmt:
+ @bash -c "diff --line-format='%L' <(echo -n) <(gofmt -l .)" || { echo "one or more files need to be formatted: try make fmt to fix this automatically"; exit 1; }
+
+fmt:
+ gofmt -w .
diff --git a/client/go/README.md b/client/go/README.md
new file mode 100644
index 00000000000..7b5b222503c
--- /dev/null
+++ b/client/go/README.md
@@ -0,0 +1,6 @@
+The command-line tool for Vespa.ai.
+
+Use it on Vespa instances running locally, remotely or in the cloud.
+Prefer web service API's to this in production.
+
+Vespa documentation: https://docs.vespa.ai
diff --git a/client/go/build/build.go b/client/go/build/build.go
new file mode 100644
index 00000000000..a8342a9fb1e
--- /dev/null
+++ b/client/go/build/build.go
@@ -0,0 +1,4 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package build
+
+var Version string = "0.0.0-devel" // Overriden by linker flag as part of build
diff --git a/client/go/cmd/api_key.go b/client/go/cmd/api_key.go
new file mode 100644
index 00000000000..ba2df8c40dc
--- /dev/null
+++ b/client/go/cmd/api_key.go
@@ -0,0 +1,82 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// vespa api-key command
+// Author: mpolden
+package cmd
+
+import (
+ "fmt"
+ "io/ioutil"
+ "log"
+
+ "github.com/spf13/cobra"
+ "github.com/vespa-engine/vespa/client/go/util"
+ "github.com/vespa-engine/vespa/client/go/vespa"
+)
+
+var overwriteKey bool
+
+func init() {
+ rootCmd.AddCommand(apiKeyCmd)
+ apiKeyCmd.Flags().BoolVarP(&overwriteKey, "force", "f", false, "Force overwrite of existing API key")
+ apiKeyCmd.MarkPersistentFlagRequired(applicationFlag)
+}
+
+var apiKeyCmd = &cobra.Command{
+ Use: "api-key",
+ Short: "Create a new user API key for authentication with Vespa Cloud",
+ Example: "$ vespa api-key -a my-tenant.my-app.my-instance",
+ DisableAutoGenTag: true,
+ Args: cobra.ExactArgs(0),
+ Run: func(cmd *cobra.Command, args []string) {
+ cfg, err := LoadConfig()
+ if err != nil {
+ fatalErr(err, "Could not load config")
+ return
+ }
+ app := getApplication()
+ apiKeyFile := cfg.APIKeyPath(app.Tenant)
+ if util.PathExists(apiKeyFile) && !overwriteKey {
+ printErrHint(fmt.Errorf("File %s already exists", apiKeyFile), "Use -f to overwrite it")
+ printPublicKey(apiKeyFile, app.Tenant)
+ return
+ }
+ apiKey, err := vespa.CreateAPIKey()
+ if err != nil {
+ fatalErr(err, "Could not create API key")
+ return
+ }
+ if err := ioutil.WriteFile(apiKeyFile, apiKey, 0600); err == nil {
+ printSuccess("API private key written to ", apiKeyFile)
+ printPublicKey(apiKeyFile, app.Tenant)
+ } else {
+ fatalErr(err, "Failed to write ", apiKeyFile)
+ }
+ },
+}
+
+func printPublicKey(apiKeyFile, tenant string) {
+ pemKeyData, err := ioutil.ReadFile(apiKeyFile)
+ if err != nil {
+ fatalErr(err, "Failed to read ", apiKeyFile)
+ return
+ }
+ key, err := vespa.ECPrivateKeyFrom(pemKeyData)
+ if err != nil {
+ fatalErr(err, "Failed to load key")
+ return
+ }
+ pemPublicKey, err := vespa.PEMPublicKeyFrom(key)
+ if err != nil {
+ fatalErr(err, "Failed to extract public key")
+ return
+ }
+ fingerprint, err := vespa.FingerprintMD5(pemPublicKey)
+ if err != nil {
+ fatalErr(err, "Failed to extract fingerprint")
+ }
+ log.Printf("\nThis is your public key:\n%s", color.Green(pemPublicKey))
+ log.Printf("Its fingerprint is:\n%s\n", color.Cyan(fingerprint))
+ log.Print("\nTo use this key in Vespa Cloud click 'Add custom key' at")
+ log.Printf(color.Cyan("%s/tenant/%s/keys").String(), getConsoleURL(), tenant)
+ log.Print("and paste the entire public key including the BEGIN and END lines.")
+}
diff --git a/client/go/cmd/api_key_test.go b/client/go/cmd/api_key_test.go
new file mode 100644
index 00000000000..b08758ae21d
--- /dev/null
+++ b/client/go/cmd/api_key_test.go
@@ -0,0 +1,23 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Author: mpolden
+
+package cmd
+
+import (
+ "path/filepath"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestAPIKey(t *testing.T) {
+ homeDir := filepath.Join(t.TempDir(), ".vespa")
+ keyFile := filepath.Join(homeDir, "t1.api-key.pem")
+
+ out, _ := execute(command{args: []string{"api-key", "-a", "t1.a1.i1"}, homeDir: homeDir}, t, nil)
+ assert.Contains(t, out, "Success: API private key written to "+keyFile+"\n")
+
+ out, outErr := execute(command{args: []string{"api-key", "-a", "t1.a1.i1"}, homeDir: homeDir}, t, nil)
+ assert.Contains(t, outErr, "Error: File "+keyFile+" already exists\nHint: Use -f to overwrite it\n")
+ assert.Contains(t, out, "This is your public key")
+}
diff --git a/client/go/cmd/cert.go b/client/go/cmd/cert.go
new file mode 100644
index 00000000000..eaf3fc564dd
--- /dev/null
+++ b/client/go/cmd/cert.go
@@ -0,0 +1,100 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// vespa cert command
+// Author: mpolden
+package cmd
+
+import (
+ "fmt"
+ "os"
+ "path/filepath"
+
+ "github.com/spf13/cobra"
+ "github.com/vespa-engine/vespa/client/go/util"
+ "github.com/vespa-engine/vespa/client/go/vespa"
+)
+
+var overwriteCertificate bool
+
+func init() {
+ rootCmd.AddCommand(certCmd)
+ certCmd.Flags().BoolVarP(&overwriteCertificate, "force", "f", false, "Force overwrite of existing certificate and private key")
+ certCmd.MarkPersistentFlagRequired(applicationFlag)
+}
+
+var certCmd = &cobra.Command{
+ Use: "cert",
+ Short: "Create a new private key and self-signed certificate for Vespa Cloud deployment",
+ Example: "$ vespa cert -a my-tenant.my-app.my-instance",
+ DisableAutoGenTag: true,
+ Args: cobra.MaximumNArgs(1),
+ Run: func(cmd *cobra.Command, args []string) {
+ app := getApplication()
+ pkg, err := vespa.FindApplicationPackage(applicationSource(args), false)
+ if err != nil {
+ fatalErr(err)
+ return
+ }
+ cfg, err := LoadConfig()
+ if err != nil {
+ fatalErr(err)
+ return
+ }
+ privateKeyFile, err := cfg.PrivateKeyPath(app)
+ if err != nil {
+ fatalErr(err)
+ return
+ }
+ certificateFile, err := cfg.CertificatePath(app)
+ if err != nil {
+ fatalErr(err)
+ return
+ }
+
+ if !overwriteCertificate {
+ hint := "Use -f flag to force overwriting"
+ if pkg.HasCertificate() {
+ fatalErrHint(fmt.Errorf("Application package %s already contains a certificate", pkg.Path), hint)
+ return
+ }
+ if util.PathExists(privateKeyFile) {
+ fatalErrHint(fmt.Errorf("Private key %s already exists", color.Cyan(privateKeyFile)), hint)
+ return
+ }
+ if util.PathExists(certificateFile) {
+ fatalErrHint(fmt.Errorf("Certificate %s already exists", color.Cyan(certificateFile)), hint)
+ return
+ }
+ }
+ if pkg.IsZip() {
+ fatalErrHint(fmt.Errorf("Cannot add certificate to compressed application package %s", pkg.Path),
+ "Try running 'mvn clean' before 'vespa cert', and then 'mvn package'")
+ return
+ }
+
+ keyPair, err := vespa.CreateKeyPair()
+ if err != nil {
+ fatalErr(err, "Could not create key pair")
+ return
+ }
+ pkgCertificateFile := filepath.Join(pkg.Path, "security", "clients.pem")
+ if err := os.MkdirAll(filepath.Dir(pkgCertificateFile), 0755); err != nil {
+ fatalErr(err, "Could not create security directory")
+ return
+ }
+ if err := keyPair.WriteCertificateFile(pkgCertificateFile, overwriteCertificate); err != nil {
+ fatalErr(err, "Could not write certificate")
+ return
+ }
+ if err := keyPair.WriteCertificateFile(certificateFile, overwriteCertificate); err != nil {
+ fatalErr(err, "Could not write certificate")
+ return
+ }
+ if err := keyPair.WritePrivateKeyFile(privateKeyFile, overwriteCertificate); err != nil {
+ fatalErr(err, "Could not write private key")
+ return
+ }
+ printSuccess("Certificate written to ", color.Cyan(pkgCertificateFile))
+ printSuccess("Certificate written to ", color.Cyan(certificateFile))
+ printSuccess("Private key written to ", color.Cyan(privateKeyFile))
+ },
+}
diff --git a/client/go/cmd/cert_test.go b/client/go/cmd/cert_test.go
new file mode 100644
index 00000000000..96b626b5c98
--- /dev/null
+++ b/client/go/cmd/cert_test.go
@@ -0,0 +1,71 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Author: mpolden
+
+package cmd
+
+import (
+ "fmt"
+ "os"
+ "path/filepath"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/vespa-engine/vespa/client/go/vespa"
+)
+
+func TestCert(t *testing.T) {
+ homeDir := filepath.Join(t.TempDir(), ".vespa")
+ pkgDir := mockApplicationPackage(t, false)
+ out, _ := execute(command{args: []string{"cert", "-a", "t1.a1.i1", pkgDir}, homeDir: homeDir}, t, nil)
+
+ app, err := vespa.ApplicationFromString("t1.a1.i1")
+ assert.Nil(t, err)
+
+ appDir := filepath.Join(pkgDir, "src", "main", "application")
+ pkgCertificate := filepath.Join(appDir, "security", "clients.pem")
+ certificate := filepath.Join(homeDir, app.String(), "data-plane-public-cert.pem")
+ privateKey := filepath.Join(homeDir, app.String(), "data-plane-private-key.pem")
+
+ assert.Equal(t, fmt.Sprintf("Success: Certificate written to %s\nSuccess: Certificate written to %s\nSuccess: Private key written to %s\n", pkgCertificate, certificate, privateKey), out)
+
+ _, outErr := execute(command{args: []string{"cert", "-a", "t1.a1.i1", pkgDir}, homeDir: homeDir}, t, nil)
+ assert.Contains(t, outErr, fmt.Sprintf("Error: Application package %s already contains a certificate", appDir))
+}
+
+func TestCertCompressedPackage(t *testing.T) {
+ homeDir := filepath.Join(t.TempDir(), ".vespa")
+ pkgDir := mockApplicationPackage(t, true)
+ zipFile := filepath.Join(pkgDir, "target", "application.zip")
+ err := os.MkdirAll(filepath.Dir(zipFile), 0755)
+ assert.Nil(t, err)
+ _, err = os.Create(zipFile)
+ assert.Nil(t, err)
+
+ _, outErr := execute(command{args: []string{"cert", "-a", "t1.a1.i1", pkgDir}, homeDir: homeDir}, t, nil)
+ assert.Contains(t, outErr, "Error: Cannot add certificate to compressed application package")
+
+ err = os.Remove(zipFile)
+ assert.Nil(t, err)
+
+ out, _ := execute(command{args: []string{"cert", "-f", "-a", "t1.a1.i1", pkgDir}, homeDir: homeDir}, t, nil)
+ assert.Contains(t, out, "Success: Certificate written to")
+ assert.Contains(t, out, "Success: Private key written to")
+}
+
+func mockApplicationPackage(t *testing.T, java bool) string {
+ dir := t.TempDir()
+ appDir := filepath.Join(dir, "src", "main", "application")
+ if err := os.MkdirAll(appDir, 0755); err != nil {
+ t.Fatal(err)
+ }
+ servicesXML := filepath.Join(appDir, "services.xml")
+ if _, err := os.Create(servicesXML); err != nil {
+ t.Fatal(err)
+ }
+ if java {
+ if _, err := os.Create(filepath.Join(dir, "pom.xml")); err != nil {
+ t.Fatal(err)
+ }
+ }
+ return dir
+}
diff --git a/client/go/cmd/clone.go b/client/go/cmd/clone.go
new file mode 100644
index 00000000000..e7d77c83ebb
--- /dev/null
+++ b/client/go/cmd/clone.go
@@ -0,0 +1,195 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// vespa clone command
+// author: bratseth
+
+package cmd
+
+import (
+ "archive/zip"
+ "errors"
+ "io"
+ "log"
+ "net/http"
+ "os"
+ "path/filepath"
+ "strings"
+ "time"
+
+ "github.com/spf13/cobra"
+ "github.com/vespa-engine/vespa/client/go/util"
+)
+
+const sampleAppsCacheTTL = time.Hour * 168 // 1 week
+
+var listApps bool
+var forceClone bool
+
+func init() {
+ rootCmd.AddCommand(cloneCmd)
+ cloneCmd.Flags().BoolVarP(&listApps, "list", "l", false, "List available sample applications")
+ cloneCmd.Flags().BoolVarP(&forceClone, "force", "f", false, "Ignore cache and force downloading the latest sample application from GitHub")
+}
+
+var cloneCmd = &cobra.Command{
+ Use: "clone sample-application-path target-directory",
+ Short: "Create files and directory structure for a new Vespa application from a sample application",
+ Long: `Create files and directory structure for a new Vespa application
+from a sample application.
+
+Sample applications are downloaded from
+https://github.com/vespa-engine/sample-apps.
+
+By default sample applications are cached in the user's cache directory. This
+directory can be overriden by setting the VESPA_CLI_CACHE_DIR environment
+variable.`,
+ Example: "$ vespa clone vespa-cloud/album-recommendation my-app",
+ DisableAutoGenTag: true,
+ Run: func(cmd *cobra.Command, args []string) {
+ if listApps {
+ apps, err := listSampleApps()
+ if err != nil {
+ fatalErr(err, "Could not list sample applications")
+ return
+ }
+ for _, app := range apps {
+ log.Print(app)
+ }
+ } else {
+ if len(args) != 2 {
+ fatalErr(nil, "Expected exactly 2 arguments")
+ return
+ }
+ cloneApplication(args[0], args[1])
+ }
+ },
+}
+
+func cloneApplication(source string, name string) {
+ zipFile := getSampleAppsZip()
+ defer zipFile.Close()
+
+ zipReader, zipOpenError := zip.OpenReader(zipFile.Name())
+ if zipOpenError != nil {
+ fatalErr(zipOpenError, "Could not open sample apps zip '", color.Cyan(zipFile.Name()), "'")
+ return
+ }
+ defer zipReader.Close()
+
+ found := false
+ for _, f := range zipReader.File {
+ zipEntryPrefix := "sample-apps-master/" + source + "/"
+ if strings.HasPrefix(f.Name, zipEntryPrefix) {
+ if !found { // Create destination directory lazily when source is found
+ createErr := os.Mkdir(name, 0755)
+ if createErr != nil {
+ fatalErr(createErr, "Could not create directory '", color.Cyan(name), "'")
+ return
+ }
+ }
+ found = true
+
+ copyError := copy(f, name, zipEntryPrefix)
+ if copyError != nil {
+ fatalErr(copyError, "Could not copy zip entry '", color.Cyan(f.Name), "' to ", color.Cyan(name))
+ return
+ }
+ }
+ }
+ if !found {
+ fatalErr(nil, "Could not find source application '", color.Cyan(source), "'")
+ } else {
+ log.Print("Created ", color.Cyan(name))
+ }
+}
+
+func openOutputFile() (*os.File, error) {
+ cacheDir, err := vespaCliCacheDir()
+ if err != nil {
+ return nil, err
+ }
+ cacheFile := filepath.Join(cacheDir, "sample-apps-master.zip")
+ return os.OpenFile(cacheFile, os.O_RDWR|os.O_CREATE, 0755)
+}
+
+func useCache(cacheFile *os.File) (bool, error) {
+ if forceClone {
+ return false, nil
+ }
+ stat, err := cacheFile.Stat()
+ if errors.Is(err, os.ErrNotExist) {
+ return false, nil
+ } else if err != nil {
+ return false, err
+ }
+ expiry := stat.ModTime().Add(sampleAppsCacheTTL)
+ return stat.Size() > 0 && time.Now().Before(expiry), nil
+}
+
+func getSampleAppsZip() *os.File {
+ f, err := openOutputFile()
+ if err != nil {
+ fatalErr(err, "Could not determine location of cache file")
+ return nil
+ }
+ useCache, err := useCache(f)
+ if err != nil {
+ fatalErr(err, "Could not determine cache status", "Try ignoring the cache with the -f flag")
+ return nil
+ }
+ if useCache {
+ log.Print(color.Yellow("Using cached sample apps ..."))
+ return f
+ }
+
+ log.Print(color.Yellow("Downloading sample apps ...")) // TODO: Spawn thread to indicate progress
+ request, err := http.NewRequest("GET", "https://github.com/vespa-engine/sample-apps/archive/refs/heads/master.zip", nil)
+ if err != nil {
+ fatalErr(err, "Invalid URL")
+ return nil
+ }
+ response, err := util.HttpDo(request, time.Minute*60, "GitHub")
+ if err != nil {
+ fatalErr(err, "Could not download sample apps from GitHub")
+ return nil
+ }
+ defer response.Body.Close()
+ if response.StatusCode != 200 {
+ fatalErr(nil, "Could not download sample apps from GitHub: ", response.StatusCode)
+ return nil
+ }
+
+ if _, err := io.Copy(f, response.Body); err != nil {
+ fatalErr(err, "Could not write sample apps to file: ", f.Name())
+ return nil
+ }
+ return f
+}
+
+func copy(f *zip.File, destinationDir string, zipEntryPrefix string) error {
+ destinationPath := filepath.Join(destinationDir, filepath.FromSlash(strings.TrimPrefix(f.Name, zipEntryPrefix)))
+ if strings.HasSuffix(f.Name, "/") {
+ if f.Name != zipEntryPrefix { // root is already created
+ createError := os.Mkdir(destinationPath, 0755)
+ if createError != nil {
+ return createError
+ }
+ }
+ } else {
+ zipEntry, zipEntryOpenError := f.Open()
+ if zipEntryOpenError != nil {
+ return zipEntryOpenError
+ }
+ defer zipEntry.Close()
+
+ destination, createError := os.Create(destinationPath)
+ if createError != nil {
+ return createError
+ }
+
+ _, copyError := io.Copy(destination, zipEntry)
+ if copyError != nil {
+ return copyError
+ }
+ }
+ return nil
+}
diff --git a/client/go/cmd/clone_list.go b/client/go/cmd/clone_list.go
new file mode 100644
index 00000000000..cb8e1acf4e9
--- /dev/null
+++ b/client/go/cmd/clone_list.go
@@ -0,0 +1,86 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package cmd
+
+import (
+ "encoding/json"
+ "net/http"
+ "sort"
+ "time"
+
+ "github.com/vespa-engine/vespa/client/go/util"
+)
+
+func listSampleApps() ([]string, error) {
+ return listSampleAppsAt("https://api.github.com/repos/vespa-engine/sample-apps/contents/")
+}
+
+func listSampleAppsAt(url string) ([]string, error) {
+ rfs, err := getRepositoryFiles(url)
+ if err != nil {
+ return nil, err
+ }
+ var apps []string
+ for _, rf := range rfs {
+ isApp, follow := isApp(rf)
+ if isApp {
+ apps = append(apps, rf.Path)
+ } else if follow {
+ apps2, err := listSampleAppsAt(rf.URL)
+ if err != nil {
+ return nil, err
+ }
+ apps = append(apps, apps2...)
+ }
+ }
+ sort.Strings(apps)
+ return apps, nil
+}
+
+func getRepositoryFiles(url string) ([]repositoryFile, error) {
+ req, err := http.NewRequest("GET", url, nil)
+ if err != nil {
+ return nil, err
+ }
+ response, err := util.HttpDo(req, time.Minute, "GitHub")
+ if err != nil {
+ return nil, err
+ }
+ defer response.Body.Close()
+ var files []repositoryFile
+ dec := json.NewDecoder(response.Body)
+ if err := dec.Decode(&files); err != nil {
+ return nil, err
+ }
+ return files, nil
+}
+
+func isApp(rf repositoryFile) (ok bool, follow bool) {
+ if rf.Type != "dir" {
+ return false, false
+ }
+ if rf.Path == "" {
+ return false, false
+ }
+ if rf.Path[0] == '_' || rf.Path[0] == '.' {
+ return false, false
+ }
+ // These are just heuristics and must be updated if we add more directories that are not applications, or that
+ // contain multiple applications inside
+ switch rf.Name {
+ case "test", "bin", "src":
+ return false, false
+ }
+ switch rf.Path {
+ case "news", "operations", "vespa-cloud":
+ return false, true
+ }
+ return true, false
+}
+
+type repositoryFile struct {
+ Path string `json:"path"`
+ Name string `json:"name"`
+ Type string `json:"type"`
+ URL string `json:"url"`
+ HtmlURL string `json:"html_url"`
+}
diff --git a/client/go/cmd/clone_list_test.go b/client/go/cmd/clone_list_test.go
new file mode 100644
index 00000000000..1138e5de064
--- /dev/null
+++ b/client/go/cmd/clone_list_test.go
@@ -0,0 +1,68 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package cmd
+
+import (
+ "io/ioutil"
+ "path/filepath"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/vespa-engine/vespa/client/go/util"
+)
+
+func TestListSampleApps(t *testing.T) {
+ c := &mockHttpClient{}
+ c.NextResponse(200, readTestData(t, "sample-apps-contents.json"))
+ c.NextResponse(200, readTestData(t, "sample-apps-news.json"))
+ c.NextResponse(200, readTestData(t, "sample-apps-operations.json"))
+ c.NextResponse(200, readTestData(t, "sample-apps-vespa-cloud.json"))
+ util.ActiveHttpClient = c
+
+ apps, err := listSampleApps()
+ assert.Nil(t, err)
+ expected := []string{
+ "album-recommendation-monitoring",
+ "album-recommendation-selfhosted",
+ "basic-search-on-gke",
+ "boolean-search",
+ "dense-passage-retrieval-with-ann",
+ "generic-request-processing",
+ "http-api-using-request-handlers-and-processors",
+ "incremental-search",
+ "model-evaluation",
+ "msmarco-ranking",
+ "multiple-bundles",
+ "multiple-bundles-lib",
+ "news/app-1-getting-started",
+ "news/app-2-feed-and-query",
+ "news/app-3-searching",
+ "news/app-5-recommendation",
+ "news/app-6-recommendation-with-searchers",
+ "news/app-7-parent-child",
+ "operations/multinode",
+ "part-purchases-demo",
+ "secure-vespa-with-mtls",
+ "semantic-qa-retrieval",
+ "tensor-playground",
+ "text-search",
+ "transformers",
+ "use-case-shopping",
+ "vespa-chinese-linguistics",
+ "vespa-cloud/album-recommendation",
+ "vespa-cloud/album-recommendation-docproc",
+ "vespa-cloud/album-recommendation-prod",
+ "vespa-cloud/album-recommendation-searcher",
+ "vespa-cloud/cord-19-search",
+ "vespa-cloud/joins",
+ "vespa-cloud/vespa-documentation-search",
+ }
+ assert.Equal(t, expected, apps)
+}
+
+func readTestData(t *testing.T, name string) string {
+ contents, err := ioutil.ReadFile(filepath.Join("testdata", name))
+ if err != nil {
+ t.Fatal(err)
+ }
+ return string(contents)
+}
diff --git a/client/go/cmd/clone_test.go b/client/go/cmd/clone_test.go
new file mode 100644
index 00000000000..054dc7b21fb
--- /dev/null
+++ b/client/go/cmd/clone_test.go
@@ -0,0 +1,37 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// init command tests
+// Author: bratseth
+
+package cmd
+
+import (
+ "os"
+ "path/filepath"
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/vespa-engine/vespa/client/go/util"
+)
+
+func TestClone(t *testing.T) {
+ assertCreated("album-recommendation-selfhosted", "mytestapp", t)
+}
+
+func assertCreated(sampleAppName string, app string, t *testing.T) {
+ testFile := filepath.Join("testdata", "sample-apps-master.zip")
+ now := time.Now()
+ if err := os.Chtimes(testFile, now, now); err != nil { // Ensure test file is considered new enough by cache mechanism
+ t.Fatal(err)
+ }
+ out, _ := execute(command{cacheDir: filepath.Dir(testFile), args: []string{"clone", sampleAppName, app}}, t, nil)
+ defer os.RemoveAll(app)
+ assert.Equal(t, "Using cached sample apps ...\nCreated "+app+"\n", out)
+ assert.True(t, util.PathExists(filepath.Join(app, "README.md")))
+ assert.True(t, util.PathExists(filepath.Join(app, "src", "main", "application")))
+ assert.True(t, util.IsDirectory(filepath.Join(app, "src", "main", "application")))
+
+ servicesStat, _ := os.Stat(filepath.Join(app, "src", "main", "application", "services.xml"))
+ servicesSize := int64(2474)
+ assert.Equal(t, servicesSize, servicesStat.Size())
+}
diff --git a/client/go/cmd/command_tester.go b/client/go/cmd/command_tester.go
new file mode 100644
index 00000000000..2d2de6a201c
--- /dev/null
+++ b/client/go/cmd/command_tester.go
@@ -0,0 +1,130 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// A helper for testing commands
+// Author: bratseth
+
+package cmd
+
+import (
+ "bytes"
+ "crypto/tls"
+ "io"
+ "io/ioutil"
+ "net/http"
+ "os"
+ "path/filepath"
+ "strconv"
+ "testing"
+ "time"
+
+ "github.com/spf13/pflag"
+ "github.com/spf13/viper"
+ "github.com/vespa-engine/vespa/client/go/util"
+)
+
+type command struct {
+ homeDir string
+ cacheDir string
+ stdin io.ReadWriter
+ args []string
+ moreArgs []string
+}
+
+func resetFlag(f *pflag.Flag) {
+ switch v := f.Value.(type) {
+ case pflag.SliceValue:
+ _ = v.Replace([]string{})
+ default:
+ switch v.Type() {
+ case "bool", "string", "int":
+ _ = v.Set(f.DefValue)
+ }
+ }
+}
+
+func execute(cmd command, t *testing.T, client *mockHttpClient) (string, string) {
+ if client != nil {
+ util.ActiveHttpClient = client
+ }
+
+ // Set Vespa CLI directories. Use a separate one per test if none is specified
+ if cmd.homeDir == "" {
+ cmd.homeDir = filepath.Join(t.TempDir(), ".vespa")
+ viper.Reset()
+ }
+ if cmd.cacheDir == "" {
+ cmd.cacheDir = filepath.Join(t.TempDir(), ".cache", "vespa")
+ }
+ os.Setenv("VESPA_CLI_HOME", cmd.homeDir)
+ os.Setenv("VESPA_CLI_CACHE_DIR", cmd.cacheDir)
+
+ // Reset flags to their default value - persistent flags in Cobra persists over tests
+ // TODO: Due to the bad design of viper, the only proper fix is to get rid of global state by moving each command to
+ // their own sub-package
+ rootCmd.Flags().VisitAll(resetFlag)
+ documentCmd.Flags().VisitAll(resetFlag)
+
+ // Do not exit in tests
+ exitFunc = func(code int) {}
+
+ // Capture stdout and execute command
+ var capturedOut bytes.Buffer
+ var capturedErr bytes.Buffer
+ stdout = &capturedOut
+ stderr = &capturedErr
+ if cmd.stdin != nil {
+ stdin = cmd.stdin
+ } else {
+ stdin = os.Stdin
+ }
+
+ // Execute command and return output
+ rootCmd.SetArgs(append(cmd.args, cmd.moreArgs...))
+ rootCmd.Execute()
+ return capturedOut.String(), capturedErr.String()
+}
+
+func executeCommand(t *testing.T, client *mockHttpClient, args []string, moreArgs []string) string {
+ out, _ := execute(command{args: args, moreArgs: moreArgs}, t, client)
+ return out
+}
+
+type mockHttpClient struct {
+ // The responses to return for future requests. Once a response is consumed, it's removed from this array
+ nextResponses []mockResponse
+
+ // A recording of the last HTTP request made through this
+ lastRequest *http.Request
+
+ // All requests made through this
+ requests []*http.Request
+}
+
+type mockResponse struct {
+ status int
+ body string
+}
+
+func (c *mockHttpClient) NextStatus(status int) { c.NextResponse(status, "") }
+
+func (c *mockHttpClient) NextResponse(status int, body string) {
+ c.nextResponses = append(c.nextResponses, mockResponse{status: status, body: body})
+}
+
+func (c *mockHttpClient) Do(request *http.Request, timeout time.Duration) (*http.Response, error) {
+ response := mockResponse{status: 200}
+ if len(c.nextResponses) > 0 {
+ response = c.nextResponses[0]
+ c.nextResponses = c.nextResponses[1:]
+ }
+ c.lastRequest = request
+ c.requests = append(c.requests, request)
+ return &http.Response{
+ Status: "Status " + strconv.Itoa(response.status),
+ StatusCode: response.status,
+ Body: ioutil.NopCloser(bytes.NewBufferString(response.body)),
+ Header: make(http.Header),
+ },
+ nil
+}
+
+func (c *mockHttpClient) UseCertificate(certificate tls.Certificate) {}
diff --git a/client/go/cmd/config.go b/client/go/cmd/config.go
new file mode 100644
index 00000000000..d10f66c83c6
--- /dev/null
+++ b/client/go/cmd/config.go
@@ -0,0 +1,250 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// vespa config command
+// author: bratseth
+
+package cmd
+
+import (
+ "fmt"
+ "io/ioutil"
+ "log"
+ "os"
+ "path/filepath"
+ "sort"
+ "strconv"
+ "strings"
+
+ "github.com/spf13/cobra"
+ "github.com/spf13/viper"
+ "github.com/vespa-engine/vespa/client/go/util"
+ "github.com/vespa-engine/vespa/client/go/vespa"
+)
+
+const (
+ configName = "config"
+ configType = "yaml"
+)
+
+var flagToConfigBindings map[string]*cobra.Command = make(map[string]*cobra.Command)
+
+func init() {
+ rootCmd.AddCommand(configCmd)
+ configCmd.AddCommand(setConfigCmd)
+ configCmd.AddCommand(getConfigCmd)
+}
+
+var configCmd = &cobra.Command{
+ Use: "config",
+ Short: "Configure persistent values for flags",
+ Long: `Configure persistent values for flags.
+
+This command allows setting a persistent value for a given flag. On future
+invocations the flag can then be omitted as it is read from the config file
+instead.
+
+Configuration is written to $HOME/.vespa by default. This path can be
+overridden by setting the VESPA_CLI_HOME environment variable.`,
+ DisableAutoGenTag: true,
+ Run: func(cmd *cobra.Command, args []string) {
+ // Root command does nothing
+ cmd.Help()
+ exitFunc(1)
+ },
+}
+
+var setConfigCmd = &cobra.Command{
+ Use: "set option-name value",
+ Short: "Set a configuration option.",
+ Example: "$ vespa config set target cloud",
+ DisableAutoGenTag: true,
+ Args: cobra.ExactArgs(2),
+ Run: func(cmd *cobra.Command, args []string) {
+ cfg, err := LoadConfig()
+ if err != nil {
+ fatalErr(err, "Could not load config")
+ return
+ }
+ if err := cfg.Set(args[0], args[1]); err != nil {
+ fatalErr(err)
+ } else {
+ if err := cfg.Write(); err != nil {
+ fatalErr(err)
+ }
+ }
+ },
+}
+
+var getConfigCmd = &cobra.Command{
+ Use: "get option-name",
+ Short: "Get a configuration option",
+ Example: "$ vespa config get target",
+ Args: cobra.MaximumNArgs(1),
+ DisableAutoGenTag: true,
+ Run: func(cmd *cobra.Command, args []string) {
+ cfg, err := LoadConfig()
+ if err != nil {
+ fatalErr(err, "Could not load config")
+ return
+ }
+
+ if len(args) == 0 { // Print all values
+ var flags []string
+ for flag := range flagToConfigBindings {
+ flags = append(flags, flag)
+ }
+ sort.Strings(flags)
+ for _, flag := range flags {
+ printOption(cfg, flag)
+ }
+ } else {
+ printOption(cfg, args[0])
+ }
+ },
+}
+
+type Config struct {
+ Home string
+ createDirs bool
+}
+
+func LoadConfig() (*Config, error) {
+ home, err := vespaCliHome()
+ if err != nil {
+ return nil, err
+ }
+ c := &Config{Home: home, createDirs: true}
+ if err := c.load(); err != nil {
+ return nil, err
+ }
+ return c, nil
+}
+
+func (c *Config) Write() error {
+ if err := os.MkdirAll(c.Home, 0700); err != nil {
+ return err
+ }
+ configFile := filepath.Join(c.Home, configName+"."+configType)
+ if !util.PathExists(configFile) {
+ if _, err := os.Create(configFile); err != nil {
+ return err
+ }
+ }
+ return viper.WriteConfig()
+}
+
+func (c *Config) CertificatePath(app vespa.ApplicationID) (string, error) {
+ return c.applicationFilePath(app, "data-plane-public-cert.pem")
+}
+
+func (c *Config) PrivateKeyPath(app vespa.ApplicationID) (string, error) {
+ return c.applicationFilePath(app, "data-plane-private-key.pem")
+}
+
+func (c *Config) APIKeyPath(tenantName string) string {
+ return filepath.Join(c.Home, tenantName+".api-key.pem")
+}
+
+func (c *Config) ReadAPIKey(tenantName string) ([]byte, error) {
+ return ioutil.ReadFile(c.APIKeyPath(tenantName))
+}
+
+func (c *Config) ReadSessionID(app vespa.ApplicationID) (int64, error) {
+ sessionPath, err := c.applicationFilePath(app, "session_id")
+ if err != nil {
+ return 0, err
+ }
+ b, err := ioutil.ReadFile(sessionPath)
+ if err != nil {
+ return 0, err
+ }
+ return strconv.ParseInt(strings.TrimSpace(string(b)), 10, 64)
+}
+
+func (c *Config) WriteSessionID(app vespa.ApplicationID, sessionID int64) error {
+ sessionPath, err := c.applicationFilePath(app, "session_id")
+ if err != nil {
+ return err
+ }
+ return ioutil.WriteFile(sessionPath, []byte(fmt.Sprintf("%d\n", sessionID)), 0600)
+}
+
+func (c *Config) applicationFilePath(app vespa.ApplicationID, name string) (string, error) {
+ appDir := filepath.Join(c.Home, app.String())
+ if c.createDirs {
+ if err := os.MkdirAll(appDir, 0700); err != nil {
+ return "", err
+ }
+ }
+ return filepath.Join(appDir, name), nil
+}
+
+func (c *Config) load() error {
+ viper.SetConfigName(configName)
+ viper.SetConfigType(configType)
+ viper.AddConfigPath(c.Home)
+ viper.AutomaticEnv()
+ for option, command := range flagToConfigBindings {
+ viper.BindPFlag(option, command.PersistentFlags().Lookup(option))
+ }
+ err := viper.ReadInConfig()
+ if _, ok := err.(viper.ConfigFileNotFoundError); ok {
+ return nil
+ }
+ return err
+}
+
+func (c *Config) Get(option string) (string, error) {
+ value := viper.GetString(option)
+ if value == "" {
+ return "", fmt.Errorf("no such option: %q", option)
+ }
+ return value, nil
+}
+
+func (c *Config) Set(option, value string) error {
+ switch option {
+ case targetFlag:
+ switch value {
+ case "local", "cloud":
+ viper.Set(option, value)
+ return nil
+ }
+ if strings.HasPrefix(value, "http://") || strings.HasPrefix(value, "https://") {
+ viper.Set(option, value)
+ return nil
+ }
+ case applicationFlag:
+ if _, err := vespa.ApplicationFromString(value); err != nil {
+ return err
+ }
+ viper.Set(option, value)
+ return nil
+ case waitFlag:
+ if _, err := strconv.ParseUint(value, 10, 32); err != nil {
+ return fmt.Errorf("%s option must be an integer >= 0, got %q", option, value)
+ }
+ viper.Set(option, value)
+ return nil
+ case colorFlag:
+ switch value {
+ case "auto", "never", "always":
+ viper.Set(option, value)
+ return nil
+ }
+ }
+ return fmt.Errorf("invalid option or value: %q: %q", option, value)
+}
+
+func printOption(cfg *Config, option string) {
+ value, err := cfg.Get(option)
+ if err != nil {
+ value = color.Faint("<unset>").String()
+ } else {
+ value = color.Cyan(value).String()
+ }
+ log.Printf("%s = %s", option, value)
+}
+
+func bindFlagToConfig(option string, command *cobra.Command) {
+ flagToConfigBindings[option] = command
+}
diff --git a/client/go/cmd/config_test.go b/client/go/cmd/config_test.go
new file mode 100644
index 00000000000..0e74e53c5e5
--- /dev/null
+++ b/client/go/cmd/config_test.go
@@ -0,0 +1,42 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package cmd
+
+import (
+ "path/filepath"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestConfig(t *testing.T) {
+ homeDir := filepath.Join(t.TempDir(), ".vespa")
+ assertConfigCommandErr(t, "invalid option or value: \"foo\": \"bar\"\n", homeDir, "config", "set", "foo", "bar")
+ assertConfigCommand(t, "foo = <unset>\n", homeDir, "config", "get", "foo")
+ assertConfigCommand(t, "target = local\n", homeDir, "config", "get", "target")
+ assertConfigCommand(t, "", homeDir, "config", "set", "target", "cloud")
+ assertConfigCommand(t, "target = cloud\n", homeDir, "config", "get", "target")
+ assertConfigCommand(t, "", homeDir, "config", "set", "target", "http://127.0.0.1:8080")
+ assertConfigCommand(t, "", homeDir, "config", "set", "target", "https://127.0.0.1")
+ assertConfigCommand(t, "target = https://127.0.0.1\n", homeDir, "config", "get", "target")
+
+ assertConfigCommandErr(t, "invalid application: \"foo\"\n", homeDir, "config", "set", "application", "foo")
+ assertConfigCommand(t, "application = <unset>\n", homeDir, "config", "get", "application")
+ assertConfigCommand(t, "", homeDir, "config", "set", "application", "t1.a1.i1")
+ assertConfigCommand(t, "application = t1.a1.i1\n", homeDir, "config", "get", "application")
+
+ assertConfigCommand(t, "application = t1.a1.i1\ncolor = auto\nquiet = false\ntarget = https://127.0.0.1\nwait = 0\n", homeDir, "config", "get")
+
+ assertConfigCommand(t, "", homeDir, "config", "set", "wait", "60")
+ assertConfigCommandErr(t, "wait option must be an integer >= 0, got \"foo\"\n", homeDir, "config", "set", "wait", "foo")
+ assertConfigCommand(t, "wait = 60\n", homeDir, "config", "get", "wait")
+}
+
+func assertConfigCommand(t *testing.T, expected, homeDir string, args ...string) {
+ out, _ := execute(command{homeDir: homeDir, args: args}, t, nil)
+ assert.Equal(t, expected, out)
+}
+
+func assertConfigCommandErr(t *testing.T, expected, homeDir string, args ...string) {
+ _, outErr := execute(command{homeDir: homeDir, args: args}, t, nil)
+ assert.Equal(t, expected, outErr)
+}
diff --git a/client/go/cmd/curl.go b/client/go/cmd/curl.go
new file mode 100644
index 00000000000..bd9fad1b47e
--- /dev/null
+++ b/client/go/cmd/curl.go
@@ -0,0 +1,75 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package cmd
+
+import (
+ "log"
+ "os"
+ "strings"
+
+ "github.com/spf13/cobra"
+ "github.com/vespa-engine/vespa/client/go/curl"
+)
+
+var curlDryRun bool
+
+func init() {
+ rootCmd.AddCommand(curlCmd)
+ curlCmd.Flags().BoolVarP(&curlDryRun, "dry-run", "n", false, "Print the curl command that would be executed")
+}
+
+var curlCmd = &cobra.Command{
+ Use: "curl [curl-options] path",
+ Short: "Query Vespa using curl",
+ Long: `Query Vespa using curl.
+
+Execute curl with the appropriate URL, certificate and private key for your application.`,
+ Example: `$ vespa curl /search/?yql=query
+$ vespa curl -- -v --data-urlencode "yql=select * from sources * where title contains 'foo';" /search/
+$ vespa curl -t local -- -v /search/?yql=query
+`,
+ DisableAutoGenTag: true,
+ Args: cobra.MinimumNArgs(1),
+ Run: func(cmd *cobra.Command, args []string) {
+ cfg, err := LoadConfig()
+ if err != nil {
+ fatalErr(err, "Could not load config")
+ return
+ }
+ app := getApplication()
+ privateKeyFile, err := cfg.PrivateKeyPath(app)
+ if err != nil {
+ fatalErr(err)
+ return
+ }
+ certificateFile, err := cfg.CertificatePath(app)
+ if err != nil {
+ fatalErr(err)
+ return
+ }
+ service := getService("query", 0)
+ url := joinURL(service.BaseURL, args[len(args)-1])
+ rawArgs := args[:len(args)-1]
+ c, err := curl.RawArgs(url, rawArgs...)
+ if err != nil {
+ fatalErr(err)
+ return
+ }
+ c.PrivateKey = privateKeyFile
+ c.Certificate = certificateFile
+
+ if curlDryRun {
+ log.Print(c.String())
+ } else {
+ if err := c.Run(os.Stdout, os.Stderr); err != nil {
+ fatalErr(err, "Failed to run curl")
+ return
+ }
+ }
+ },
+}
+
+func joinURL(baseURL, path string) string {
+ baseURL = strings.TrimSuffix(baseURL, "/")
+ path = strings.TrimPrefix(path, "/")
+ return baseURL + "/" + path
+}
diff --git a/client/go/cmd/curl_test.go b/client/go/cmd/curl_test.go
new file mode 100644
index 00000000000..d5021e19cf2
--- /dev/null
+++ b/client/go/cmd/curl_test.go
@@ -0,0 +1,21 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package cmd
+
+import (
+ "fmt"
+ "path/filepath"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestCurl(t *testing.T) {
+ homeDir := filepath.Join(t.TempDir(), ".vespa")
+ httpClient := &mockHttpClient{}
+ out, _ := execute(command{homeDir: homeDir, args: []string{"curl", "-n", "-a", "t1.a1.i1", "--", "-v", "--data-urlencode", "arg=with space", "/search"}}, t, httpClient)
+
+ expected := fmt.Sprintf("curl --key %s --cert %s -v --data-urlencode 'arg=with space' https://127.0.0.1:8080/search\n",
+ filepath.Join(homeDir, "t1.a1.i1", "data-plane-private-key.pem"),
+ filepath.Join(homeDir, "t1.a1.i1", "data-plane-public-cert.pem"))
+ assert.Equal(t, expected, out)
+}
diff --git a/client/go/cmd/deploy.go b/client/go/cmd/deploy.go
new file mode 100644
index 00000000000..034dac2e67b
--- /dev/null
+++ b/client/go/cmd/deploy.go
@@ -0,0 +1,160 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// vespa deploy command
+// Author: bratseth
+
+package cmd
+
+import (
+ "fmt"
+ "log"
+
+ "github.com/spf13/cobra"
+ "github.com/vespa-engine/vespa/client/go/vespa"
+)
+
+const (
+ zoneFlag = "zone"
+ logLevelFlag = "log-level"
+)
+
+var (
+ zoneArg string
+ logLevelArg string
+)
+
+func init() {
+ rootCmd.AddCommand(deployCmd)
+ rootCmd.AddCommand(prepareCmd)
+ rootCmd.AddCommand(activateCmd)
+ deployCmd.PersistentFlags().StringVarP(&zoneArg, zoneFlag, "z", "dev.aws-us-east-1c", "The zone to use for deployment")
+ deployCmd.PersistentFlags().StringVarP(&logLevelArg, logLevelFlag, "l", "error", `Log level for Vespa logs. Must be "error", "warning", "info" or "debug"`)
+}
+
+var deployCmd = &cobra.Command{
+ Use: "deploy [application-directory]",
+ Short: "Deploy (prepare and activate) an application package",
+ Long: `Deploy (prepare and activate) an application package.
+
+When this returns successfully the application package has been validated
+and activated on config servers. The process of applying it on individual nodes
+has started but may not have completed.
+
+If application directory is not specified, it defaults to working directory.
+
+When deploying to Vespa Cloud the system can be overridden by setting the
+environment variable VESPA_CLI_CLOUD_SYSTEM. This is intended for internal use
+only.`,
+ Example: `$ vespa deploy .
+$ vespa deploy -t cloud
+$ vespa deploy -t cloud -z dev.aws-us-east-1c # -z can be omitted here as this zone is the default
+$ vespa deploy -t cloud -z perf.aws-us-east-1c`,
+ Args: cobra.MaximumNArgs(1),
+ DisableAutoGenTag: true,
+ Run: func(cmd *cobra.Command, args []string) {
+ pkg, err := vespa.FindApplicationPackage(applicationSource(args), true)
+ if err != nil {
+ fatalErr(nil, err.Error())
+ return
+ }
+ cfg, err := LoadConfig()
+ if err != nil {
+ fatalErr(err, "Could not load config")
+ return
+ }
+ target := getTarget()
+ opts := getDeploymentOpts(cfg, pkg, target)
+ if sessionOrRunID, err := vespa.Deploy(opts); err == nil {
+ if opts.IsCloud() {
+ printSuccess("Triggered deployment of ", color.Cyan(pkg.Path), " with run ID ", color.Cyan(sessionOrRunID))
+ } else {
+ printSuccess("Deployed ", color.Cyan(pkg.Path))
+ }
+ if opts.IsCloud() {
+ log.Printf("\nUse %s for deployment status, or follow this deployment at", color.Cyan("vespa status"))
+ log.Print(color.Cyan(fmt.Sprintf("%s/tenant/%s/application/%s/dev/instance/%s/job/%s-%s/run/%d",
+ getConsoleURL(),
+ opts.Deployment.Application.Tenant, opts.Deployment.Application.Application, opts.Deployment.Application.Instance,
+ opts.Deployment.Zone.Environment, opts.Deployment.Zone.Region,
+ sessionOrRunID)))
+ }
+ waitForQueryService(sessionOrRunID)
+ } else {
+ fatalErr(nil, err.Error())
+ }
+ },
+}
+
+var prepareCmd = &cobra.Command{
+ Use: "prepare application-directory",
+ Short: "Prepare an application package for activation",
+ Args: cobra.MaximumNArgs(1),
+ DisableAutoGenTag: true,
+ Run: func(cmd *cobra.Command, args []string) {
+ pkg, err := vespa.FindApplicationPackage(applicationSource(args), true)
+ if err != nil {
+ fatalErr(err, "Could not find application package")
+ return
+ }
+ cfg, err := LoadConfig()
+ if err != nil {
+ fatalErr(err, "Could not load config")
+ return
+ }
+ target := getTarget()
+ sessionID, err := vespa.Prepare(vespa.DeploymentOpts{
+ ApplicationPackage: pkg,
+ Target: target,
+ })
+ if err == nil {
+ if err := cfg.WriteSessionID(vespa.DefaultApplication, sessionID); err != nil {
+ fatalErr(err, "Could not write session ID")
+ return
+ }
+ printSuccess("Prepared ", color.Cyan(pkg.Path), " with session ", sessionID)
+ } else {
+ fatalErr(nil, err.Error())
+ }
+ },
+}
+
+var activateCmd = &cobra.Command{
+ Use: "activate",
+ Short: "Activate (deploy) a previously prepared application package",
+ Args: cobra.MaximumNArgs(1),
+ DisableAutoGenTag: true,
+ Run: func(cmd *cobra.Command, args []string) {
+ pkg, err := vespa.FindApplicationPackage(applicationSource(args), true)
+ if err != nil {
+ fatalErr(err, "Could not find application package")
+ return
+ }
+ cfg, err := LoadConfig()
+ if err != nil {
+ fatalErr(err, "Could not load config")
+ return
+ }
+ sessionID, err := cfg.ReadSessionID(vespa.DefaultApplication)
+ if err != nil {
+ fatalErr(err, "Could not read session ID")
+ return
+ }
+ target := getTarget()
+ err = vespa.Activate(sessionID, vespa.DeploymentOpts{
+ ApplicationPackage: pkg,
+ Target: target,
+ })
+ if err == nil {
+ printSuccess("Activated ", color.Cyan(pkg.Path), " with session ", sessionID)
+ waitForQueryService(sessionID)
+ } else {
+ fatalErr(nil, err.Error())
+ }
+ },
+}
+
+func waitForQueryService(sessionOrRunID int64) {
+ if waitSecsArg > 0 {
+ log.Println()
+ waitForService("query", sessionOrRunID)
+ }
+}
diff --git a/client/go/cmd/deploy_test.go b/client/go/cmd/deploy_test.go
new file mode 100644
index 00000000000..5bb45e70fad
--- /dev/null
+++ b/client/go/cmd/deploy_test.go
@@ -0,0 +1,178 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// deploy command tests
+// Author: bratseth
+
+package cmd
+
+import (
+ "path/filepath"
+ "strconv"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/vespa-engine/vespa/client/go/vespa"
+)
+
+func TestPrepareZip(t *testing.T) {
+ assertPrepare("testdata/applications/withTarget/target/application.zip",
+ []string{"prepare", "testdata/applications/withTarget/target/application.zip"}, t)
+}
+
+func TestActivateZip(t *testing.T) {
+ assertActivate("testdata/applications/withTarget/target/application.zip",
+ []string{"activate", "testdata/applications/withTarget/target/application.zip"}, t)
+}
+
+func TestDeployZip(t *testing.T) {
+ assertDeploy("testdata/applications/withTarget/target/application.zip",
+ []string{"deploy", "testdata/applications/withTarget/target/application.zip"}, t)
+}
+
+func TestDeployZipWithURLTargetArgument(t *testing.T) {
+ applicationPackage := "testdata/applications/withTarget/target/application.zip"
+ arguments := []string{"deploy", "testdata/applications/withTarget/target/application.zip", "-t", "http://target:19071"}
+
+ client := &mockHttpClient{}
+ assert.Equal(t,
+ "Success: Deployed "+applicationPackage+"\n",
+ executeCommand(t, client, arguments, []string{}))
+ assertDeployRequestMade("http://target:19071", client, t)
+}
+
+func TestDeployZipWitLocalTargetArgument(t *testing.T) {
+ assertDeploy("testdata/applications/withTarget/target/application.zip",
+ []string{"deploy", "testdata/applications/withTarget/target/application.zip", "-t", "local"}, t)
+}
+
+func TestDeploySourceDirectory(t *testing.T) {
+ assertDeploy("testdata/applications/withSource/src/main/application",
+ []string{"deploy", "testdata/applications/withSource/src/main/application"}, t)
+}
+
+func TestDeployApplicationDirectoryWithSource(t *testing.T) {
+ assertDeploy("testdata/applications/withSource/src/main/application",
+ []string{"deploy", "testdata/applications/withSource"}, t)
+}
+
+func TestDeployApplicationDirectoryWithPomAndTarget(t *testing.T) {
+ assertDeploy("testdata/applications/withTarget/target/application.zip",
+ []string{"deploy", "testdata/applications/withTarget"}, t)
+}
+
+func TestDeployApplicationDirectoryWithPomAndEmptyTarget(t *testing.T) {
+ client := &mockHttpClient{}
+ _, outErr := execute(command{args: []string{"deploy", "testdata/applications/withEmptyTarget"}}, t, client)
+ assert.Equal(t,
+ "Error: pom.xml exists but no target/application.zip. Run mvn package first\n",
+ outErr)
+}
+
+func TestDeployApplicationPackageErrorWithUnexpectedNonJson(t *testing.T) {
+ assertApplicationPackageError(t, "deploy", 401,
+ "Raw text error",
+ "Raw text error")
+}
+
+func TestDeployApplicationPackageErrorWithUnexpectedJson(t *testing.T) {
+ assertApplicationPackageError(t, "deploy", 401,
+ `{
+ "some-unexpected-json": "Invalid XML, error in services.xml: element \"nosuch\" not allowed here"
+}`,
+ `{"some-unexpected-json": "Invalid XML, error in services.xml: element \"nosuch\" not allowed here"}`)
+}
+
+func TestDeployApplicationPackageErrorWithExpectedFormat(t *testing.T) {
+ assertApplicationPackageError(t, "deploy", 400,
+ "Invalid XML, error in services.xml:\nelement \"nosuch\" not allowed here",
+ `{
+ "error-code": "INVALID_APPLICATION_PACKAGE",
+ "message": "Invalid XML, error in services.xml: element \"nosuch\" not allowed here"
+ }`)
+}
+
+func TestPrepareApplicationPackageErrorWithExpectedFormat(t *testing.T) {
+ assertApplicationPackageError(t, "prepare", 400,
+ "Invalid XML, error in services.xml:\nelement \"nosuch\" not allowed here",
+ `{
+ "error-code": "INVALID_APPLICATION_PACKAGE",
+ "message": "Invalid XML, error in services.xml: element \"nosuch\" not allowed here"
+ }`)
+}
+
+func TestDeployError(t *testing.T) {
+ assertDeployServerError(t, 501, "Deploy service error")
+}
+
+func assertDeploy(applicationPackage string, arguments []string, t *testing.T) {
+ client := &mockHttpClient{}
+ assert.Equal(t,
+ "Success: Deployed "+applicationPackage+"\n",
+ executeCommand(t, client, arguments, []string{}))
+ assertDeployRequestMade("http://127.0.0.1:19071", client, t)
+}
+
+func assertPrepare(applicationPackage string, arguments []string, t *testing.T) {
+ client := &mockHttpClient{}
+ client.NextResponse(200, `{"session-id":"42"}`)
+ assert.Equal(t,
+ "Success: Prepared "+applicationPackage+" with session 42\n",
+ executeCommand(t, client, arguments, []string{}))
+
+ assertPackageUpload(0, "http://127.0.0.1:19071/application/v2/tenant/default/session", client, t)
+ sessionURL := "http://127.0.0.1:19071/application/v2/tenant/default/session/42/prepared"
+ assert.Equal(t, sessionURL, client.requests[1].URL.String())
+ assert.Equal(t, "PUT", client.requests[1].Method)
+}
+
+func assertActivate(applicationPackage string, arguments []string, t *testing.T) {
+ client := &mockHttpClient{}
+ homeDir := t.TempDir()
+ cfg := Config{Home: filepath.Join(homeDir, ".vespa"), createDirs: true}
+ if err := cfg.WriteSessionID(vespa.DefaultApplication, 42); err != nil {
+ t.Fatal(err)
+ }
+ out, _ := execute(command{args: arguments, homeDir: cfg.Home}, t, client)
+ assert.Equal(t,
+ "Success: Activated "+applicationPackage+" with session 42\n",
+ out)
+ url := "http://127.0.0.1:19071/application/v2/tenant/default/session/42/active"
+ assert.Equal(t, url, client.lastRequest.URL.String())
+ assert.Equal(t, "PUT", client.lastRequest.Method)
+}
+
+func assertPackageUpload(requestNumber int, url string, client *mockHttpClient, t *testing.T) {
+ req := client.lastRequest
+ if requestNumber >= 0 {
+ req = client.requests[requestNumber]
+ }
+ assert.Equal(t, url, req.URL.String())
+ assert.Equal(t, "application/zip", req.Header.Get("Content-Type"))
+ assert.Equal(t, "POST", req.Method)
+ var body = req.Body
+ assert.NotNil(t, body)
+ buf := make([]byte, 7) // Just check the first few bytes
+ body.Read(buf)
+ assert.Equal(t, "PK\x03\x04\x14\x00\b", string(buf))
+}
+
+func assertDeployRequestMade(target string, client *mockHttpClient, t *testing.T) {
+ assertPackageUpload(-1, target+"/application/v2/tenant/default/prepareandactivate", client, t)
+}
+
+func assertApplicationPackageError(t *testing.T, cmd string, status int, expectedMessage string, returnBody string) {
+ client := &mockHttpClient{}
+ client.NextResponse(status, returnBody)
+ _, outErr := execute(command{args: []string{cmd, "testdata/applications/withTarget/target/application.zip"}}, t, client)
+ assert.Equal(t,
+ "Error: Invalid application package (Status "+strconv.Itoa(status)+")\n\n"+expectedMessage+"\n",
+ outErr)
+}
+
+func assertDeployServerError(t *testing.T, status int, errorMessage string) {
+ client := &mockHttpClient{}
+ client.NextResponse(status, errorMessage)
+ _, outErr := execute(command{args: []string{"deploy", "testdata/applications/withTarget/target/application.zip"}}, t, client)
+ assert.Equal(t,
+ "Error: Error from deploy service at 127.0.0.1:19071 (Status "+strconv.Itoa(status)+"):\n"+errorMessage+"\n",
+ outErr)
+}
diff --git a/client/go/cmd/document.go b/client/go/cmd/document.go
new file mode 100644
index 00000000000..cd0170684cf
--- /dev/null
+++ b/client/go/cmd/document.go
@@ -0,0 +1,163 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// vespa document command
+// author: bratseth
+
+package cmd
+
+import (
+ "fmt"
+ "io"
+ "io/ioutil"
+ "strings"
+ "time"
+
+ "github.com/spf13/cobra"
+ "github.com/vespa-engine/vespa/client/go/util"
+ "github.com/vespa-engine/vespa/client/go/vespa"
+)
+
+var (
+ printCurl bool
+ docTimeoutSecs int
+)
+
+func init() {
+ rootCmd.AddCommand(documentCmd)
+ documentCmd.AddCommand(documentPutCmd)
+ documentCmd.AddCommand(documentUpdateCmd)
+ documentCmd.AddCommand(documentRemoveCmd)
+ documentCmd.AddCommand(documentGetCmd)
+ documentCmd.PersistentFlags().BoolVarP(&printCurl, "verbose", "v", false, "Print the equivalent curl command for the document operation")
+ documentCmd.PersistentFlags().IntVarP(&docTimeoutSecs, "timeout", "T", 60, "Timeout for the document request in seconds")
+}
+
+var documentCmd = &cobra.Command{
+ Use: "document json-file",
+ Short: "Issue a document operation to Vespa",
+ Long: `Issue a document operation to Vespa.
+
+The operation must be on the format documented in
+https://docs.vespa.ai/en/reference/document-json-format.html#document-operations
+
+When this returns successfully, the document is guaranteed to be visible in any
+subsequent get or query operation.
+
+To feed with high throughput, https://docs.vespa.ai/en/vespa-feed-client.html
+should be used instead of this.`,
+ Example: `$ vespa document src/test/resources/A-Head-Full-of-Dreams.json`,
+ DisableAutoGenTag: true,
+ Args: cobra.ExactArgs(1),
+ Run: func(cmd *cobra.Command, args []string) {
+ printResult(vespa.Send(args[0], documentService(), operationOptions()), false)
+ },
+}
+
+var documentPutCmd = &cobra.Command{
+ Use: "put [id] json-file",
+ Short: "Writes a document to Vespa",
+ Long: `Writes the document in the given file to Vespa.
+If the document already exists, all its values will be replaced by this document.
+If the document id is specified both as an argument and in the file the argument takes precedence.`,
+ Args: cobra.RangeArgs(1, 2),
+ Example: `$ vespa document put src/test/resources/A-Head-Full-of-Dreams.json
+$ vespa document put id:mynamespace:music::a-head-full-of-dreams src/test/resources/A-Head-Full-of-Dreams.json`,
+ DisableAutoGenTag: true,
+ Run: func(cmd *cobra.Command, args []string) {
+ if len(args) == 1 {
+ printResult(vespa.Put("", args[0], documentService(), operationOptions()), false)
+ } else {
+ printResult(vespa.Put(args[0], args[1], documentService(), operationOptions()), false)
+ }
+ },
+}
+
+var documentUpdateCmd = &cobra.Command{
+ Use: "update [id] json-file",
+ Short: "Modifies some fields of an existing document",
+ Long: `Updates the values of the fields given in a json file as specified in the file.
+If the document id is specified both as an argument and in the file the argument takes precedence.`,
+ Args: cobra.RangeArgs(1, 2),
+ Example: `$ vespa document update src/test/resources/A-Head-Full-of-Dreams-Update.json
+$ vespa document update id:mynamespace:music::a-head-full-of-dreams src/test/resources/A-Head-Full-of-Dreams.json`,
+ DisableAutoGenTag: true,
+ Run: func(cmd *cobra.Command, args []string) {
+ if len(args) == 1 {
+ printResult(vespa.Update("", args[0], documentService(), operationOptions()), false)
+ } else {
+ printResult(vespa.Update(args[0], args[1], documentService(), operationOptions()), false)
+ }
+ },
+}
+
+var documentRemoveCmd = &cobra.Command{
+ Use: "remove id | json-file",
+ Short: "Removes a document from Vespa",
+ Long: `Removes the document specified either as a document id or given in the json file.
+If the document id is specified both as an argument and in the file the argument takes precedence.`,
+ Args: cobra.ExactArgs(1),
+ Example: `$ vespa document remove src/test/resources/A-Head-Full-of-Dreams-Remove.json
+$ vespa document remove id:mynamespace:music::a-head-full-of-dreams`,
+ DisableAutoGenTag: true,
+ Run: func(cmd *cobra.Command, args []string) {
+ if strings.HasPrefix(args[0], "id:") {
+ printResult(vespa.RemoveId(args[0], documentService(), operationOptions()), false)
+ } else {
+ printResult(vespa.RemoveOperation(args[0], documentService(), operationOptions()), false)
+ }
+ },
+}
+
+var documentGetCmd = &cobra.Command{
+ Use: "get id",
+ Short: "Gets a document",
+ Args: cobra.ExactArgs(1),
+ DisableAutoGenTag: true,
+ Example: `$ vespa document get id:mynamespace:music::a-head-full-of-dreams`,
+ Run: func(cmd *cobra.Command, args []string) {
+ printResult(vespa.Get(args[0], documentService(), operationOptions()), true)
+ },
+}
+
+func documentService() *vespa.Service { return getService("document", 0) }
+
+func operationOptions() vespa.OperationOptions {
+ return vespa.OperationOptions{
+ CurlOutput: curlOutput(),
+ Timeout: time.Second * time.Duration(docTimeoutSecs),
+ }
+}
+
+func curlOutput() io.Writer {
+ if printCurl {
+ return stderr
+ }
+ return ioutil.Discard
+}
+
+func printResult(result util.OperationResult, payloadOnlyOnSuccess bool) {
+ out := stdout
+ if !result.Success {
+ out = stderr
+ }
+
+ if !result.Success {
+ fmt.Fprintln(out, color.Red("Error:"), result.Message)
+ } else if !(payloadOnlyOnSuccess && result.Payload != "") {
+ fmt.Fprintln(out, color.Green("Success:"), result.Message)
+ }
+
+ if result.Detail != "" {
+ fmt.Fprintln(out, color.Yellow(result.Detail))
+ }
+
+ if result.Payload != "" {
+ if !payloadOnlyOnSuccess {
+ fmt.Fprintln(out)
+ }
+ fmt.Fprintln(out, result.Payload)
+ }
+
+ if !result.Success {
+ exitFunc(1)
+ }
+}
diff --git a/client/go/cmd/document_test.go b/client/go/cmd/document_test.go
new file mode 100644
index 00000000000..649aca8703a
--- /dev/null
+++ b/client/go/cmd/document_test.go
@@ -0,0 +1,165 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// document command tests
+// Author: bratseth
+
+package cmd
+
+import (
+ "io/ioutil"
+ "strconv"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/vespa-engine/vespa/client/go/util"
+ "github.com/vespa-engine/vespa/client/go/vespa"
+)
+
+func TestDocumentSendPut(t *testing.T) {
+ assertDocumentSend([]string{"document", "testdata/A-Head-Full-of-Dreams-Put.json"},
+ "put", "POST", "id:mynamespace:music::a-head-full-of-dreams", "testdata/A-Head-Full-of-Dreams-Put.json", t)
+}
+
+func TestDocumentSendPutVerbose(t *testing.T) {
+ assertDocumentSend([]string{"document", "-v", "testdata/A-Head-Full-of-Dreams-Put.json"},
+ "put", "POST", "id:mynamespace:music::a-head-full-of-dreams", "testdata/A-Head-Full-of-Dreams-Put.json", t)
+}
+
+func TestDocumentSendUpdate(t *testing.T) {
+ assertDocumentSend([]string{"document", "testdata/A-Head-Full-of-Dreams-Update.json"},
+ "update", "PUT", "id:mynamespace:music::a-head-full-of-dreams", "testdata/A-Head-Full-of-Dreams-Update.json", t)
+}
+
+func TestDocumentSendRemove(t *testing.T) {
+ assertDocumentSend([]string{"document", "testdata/A-Head-Full-of-Dreams-Remove.json"},
+ "remove", "DELETE", "id:mynamespace:music::a-head-full-of-dreams", "testdata/A-Head-Full-of-Dreams-Remove.json", t)
+}
+
+func TestDocumentPutWithIdArg(t *testing.T) {
+ assertDocumentSend([]string{"document", "put", "id:mynamespace:music::a-head-full-of-dreams", "testdata/A-Head-Full-of-Dreams-Without-Operation.json"},
+ "put", "POST", "id:mynamespace:music::a-head-full-of-dreams", "testdata/A-Head-Full-of-Dreams-Without-Operation.json", t)
+}
+
+func TestDocumentPutWithoutIdArg(t *testing.T) {
+ assertDocumentSend([]string{"document", "put", "testdata/A-Head-Full-of-Dreams-Put.json"},
+ "put", "POST", "id:mynamespace:music::a-head-full-of-dreams", "testdata/A-Head-Full-of-Dreams-Put.json", t)
+}
+
+func TestDocumentUpdateWithIdArg(t *testing.T) {
+ assertDocumentSend([]string{"document", "update", "id:mynamespace:music::a-head-full-of-dreams", "testdata/A-Head-Full-of-Dreams-Without-Operation.json"},
+ "update", "PUT", "id:mynamespace:music::a-head-full-of-dreams", "testdata/A-Head-Full-of-Dreams-Without-Operation.json", t)
+}
+
+func TestDocumentUpdateWithoutIdArg(t *testing.T) {
+ assertDocumentSend([]string{"document", "update", "testdata/A-Head-Full-of-Dreams-Update.json"},
+ "update", "PUT", "id:mynamespace:music::a-head-full-of-dreams", "testdata/A-Head-Full-of-Dreams-Update.json", t)
+}
+
+func TestDocumentRemoveWithIdArg(t *testing.T) {
+ assertDocumentSend([]string{"document", "remove", "id:mynamespace:music::a-head-full-of-dreams"},
+ "remove", "DELETE", "id:mynamespace:music::a-head-full-of-dreams", "testdata/A-Head-Full-of-Dreams-Remove.json", t)
+}
+
+func TestDocumentRemoveWithoutIdArg(t *testing.T) {
+ assertDocumentSend([]string{"document", "remove", "testdata/A-Head-Full-of-Dreams-Remove.json"},
+ "remove", "DELETE", "id:mynamespace:music::a-head-full-of-dreams", "testdata/A-Head-Full-of-Dreams-Remove.json", t)
+}
+
+func TestDocumentSendMissingId(t *testing.T) {
+ arguments := []string{"document", "put", "testdata/A-Head-Full-of-Dreams-Without-Operation.json"}
+ client := &mockHttpClient{}
+ _, outErr := execute(command{args: arguments}, t, client)
+ assert.Equal(t,
+ "Error: No document id given neither as argument or as a 'put' key in the json file\n",
+ outErr)
+}
+
+func TestDocumentSendWithDisagreeingOperations(t *testing.T) {
+ arguments := []string{"document", "update", "testdata/A-Head-Full-of-Dreams-Put.json"}
+ client := &mockHttpClient{}
+ _, outErr := execute(command{args: arguments}, t, client)
+ assert.Equal(t,
+ "Error: Wanted document operation is update but the JSON file specifies put\n",
+ outErr)
+}
+
+func TestDocumentPutDocumentError(t *testing.T) {
+ assertDocumentError(t, 401, "Document error")
+}
+
+func TestDocumentPutServerError(t *testing.T) {
+ assertDocumentServerError(t, 501, "Server error")
+}
+
+func TestDocumentGet(t *testing.T) {
+ assertDocumentGet([]string{"document", "get", "id:mynamespace:music::a-head-full-of-dreams"},
+ "id:mynamespace:music::a-head-full-of-dreams", t)
+}
+
+func assertDocumentSend(arguments []string, expectedOperation string, expectedMethod string, expectedDocumentId string, expectedPayloadFile string, t *testing.T) {
+ client := &mockHttpClient{}
+ documentURL := documentServiceURL(client)
+ expectedPath, _ := vespa.IdToURLPath(expectedDocumentId)
+ expectedURL := documentURL + "/document/v1/" + expectedPath
+ out, errOut := execute(command{args: arguments}, t, client)
+
+ verbose := false
+ for _, a := range arguments {
+ if a == "-v" {
+ verbose = true
+ }
+ }
+ if verbose {
+ expectedCurl := "curl -X " + expectedMethod + " -H 'Content-Type: application/json' --data-binary @" + expectedPayloadFile + " " + expectedURL + "\n"
+ assert.Equal(t, expectedCurl, errOut)
+ }
+ assert.Equal(t, "Success: "+expectedOperation+" "+expectedDocumentId+"\n", out)
+ assert.Equal(t, expectedURL, client.lastRequest.URL.String())
+ assert.Equal(t, "application/json", client.lastRequest.Header.Get("Content-Type"))
+ assert.Equal(t, expectedMethod, client.lastRequest.Method)
+
+ expectedPayload, _ := ioutil.ReadFile(expectedPayloadFile)
+ assert.Equal(t, string(expectedPayload), util.ReaderToString(client.lastRequest.Body))
+}
+
+func assertDocumentGet(arguments []string, documentId string, t *testing.T) {
+ client := &mockHttpClient{}
+ documentURL := documentServiceURL(client)
+ client.NextResponse(200, "{\"fields\":{\"foo\":\"bar\"}}")
+ assert.Equal(t,
+ `{
+ "fields": {
+ "foo": "bar"
+ }
+}
+`,
+ executeCommand(t, client, arguments, []string{}))
+ expectedPath, _ := vespa.IdToURLPath(documentId)
+ assert.Equal(t, documentURL+"/document/v1/"+expectedPath, client.lastRequest.URL.String())
+ assert.Equal(t, "GET", client.lastRequest.Method)
+}
+
+func assertDocumentError(t *testing.T, status int, errorMessage string) {
+ client := &mockHttpClient{}
+ client.NextResponse(status, errorMessage)
+ _, outErr := execute(command{args: []string{"document", "put",
+ "id:mynamespace:music::a-head-full-of-dreams",
+ "testdata/A-Head-Full-of-Dreams-Put.json"}}, t, client)
+ assert.Equal(t,
+ "Error: Invalid document operation: Status "+strconv.Itoa(status)+"\n\n"+errorMessage+"\n",
+ outErr)
+}
+
+func assertDocumentServerError(t *testing.T, status int, errorMessage string) {
+ client := &mockHttpClient{}
+ client.NextResponse(status, errorMessage)
+ _, outErr := execute(command{args: []string{"document", "put",
+ "id:mynamespace:music::a-head-full-of-dreams",
+ "testdata/A-Head-Full-of-Dreams-Put.json"}}, t, client)
+ assert.Equal(t,
+ "Error: Container (document API) at 127.0.0.1:8080: Status "+strconv.Itoa(status)+"\n\n"+errorMessage+"\n",
+ outErr)
+}
+
+func documentServiceURL(client *mockHttpClient) string {
+ return getService("document", 0).BaseURL
+}
diff --git a/client/go/cmd/helpers.go b/client/go/cmd/helpers.go
new file mode 100644
index 00000000000..4768290e33e
--- /dev/null
+++ b/client/go/cmd/helpers.go
@@ -0,0 +1,244 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Helpers used by multiple sub-commands.
+// Author: mpolden
+
+package cmd
+
+import (
+ "crypto/tls"
+ "fmt"
+ "io/ioutil"
+ "log"
+ "os"
+ "path/filepath"
+ "strings"
+ "time"
+
+ "github.com/vespa-engine/vespa/client/go/vespa"
+)
+
+var exitFunc = os.Exit // To allow overriding Exit in tests
+
+func fatalErrHint(err error, hints ...string) {
+ printErrHint(err, hints...)
+ exitFunc(1)
+}
+
+func fatalErr(err error, msg ...interface{}) {
+ printErr(err, msg...)
+ exitFunc(1)
+}
+
+func printErrHint(err error, hints ...string) {
+ if err != nil {
+ printErr(nil, err.Error())
+ }
+ for _, hint := range hints {
+ fmt.Fprintln(stderr, color.Cyan("Hint:"), hint)
+ }
+}
+
+func printErr(err error, msg ...interface{}) {
+ if len(msg) > 0 {
+ fmt.Fprintln(stderr, color.Red("Error:"), fmt.Sprint(msg...))
+ }
+ if err != nil {
+ fmt.Fprintln(stderr, color.Yellow(err))
+ }
+}
+
+func printSuccess(msg ...interface{}) {
+ log.Print(color.Green("Success: "), fmt.Sprint(msg...))
+}
+
+func vespaCliHome() (string, error) {
+ home := os.Getenv("VESPA_CLI_HOME")
+ if home == "" {
+ userHome, err := os.UserHomeDir()
+ if err != nil {
+ return "", err
+ }
+ home = filepath.Join(userHome, ".vespa")
+ }
+ if err := os.MkdirAll(home, 0700); err != nil {
+ return "", err
+ }
+ return home, nil
+}
+
+func vespaCliCacheDir() (string, error) {
+ cacheDir := os.Getenv("VESPA_CLI_CACHE_DIR")
+ if cacheDir == "" {
+ userCacheDir, err := os.UserCacheDir()
+ if err != nil {
+ return "", err
+ }
+ cacheDir = filepath.Join(userCacheDir, "vespa")
+ }
+ if err := os.MkdirAll(cacheDir, 0755); err != nil {
+ return "", err
+ }
+ return cacheDir, nil
+}
+
+func deploymentFromArgs() vespa.Deployment {
+ zone, err := vespa.ZoneFromString(zoneArg)
+ if err != nil {
+ fatalErrHint(err, "Zone format is <env>.<region>")
+ }
+ app := getApplication()
+ return vespa.Deployment{Application: app, Zone: zone}
+}
+
+func applicationSource(args []string) string {
+ if len(args) > 0 {
+ return args[0]
+ }
+ return "."
+}
+
+func getApplication() vespa.ApplicationID {
+ cfg, err := LoadConfig()
+ if err != nil {
+ fatalErr(err, "Could not load config")
+ return vespa.ApplicationID{}
+ }
+ app, err := cfg.Get(applicationFlag)
+ if err != nil {
+ fatalErrHint(err, "No application specified. Try the --"+applicationFlag+" flag")
+ return vespa.ApplicationID{}
+ }
+ application, err := vespa.ApplicationFromString(app)
+ if err != nil {
+ fatalErrHint(err, "Application format is <tenant>.<app>.<instance>")
+ return vespa.ApplicationID{}
+ }
+ return application
+}
+
+func getTargetType() string {
+ cfg, err := LoadConfig()
+ if err != nil {
+ fatalErr(err, "Could not load config")
+ return ""
+ }
+ target, err := cfg.Get(targetFlag)
+ if err != nil {
+ fatalErr(err, "A valid target must be specified")
+ }
+ return target
+}
+
+func getService(service string, sessionOrRunID int64) *vespa.Service {
+ t := getTarget()
+ timeout := time.Duration(waitSecsArg) * time.Second
+ if timeout > 0 {
+ log.Printf("Waiting up to %d %s for service to become available ...", color.Cyan(waitSecsArg), color.Cyan("seconds"))
+ }
+ s, err := t.Service(service, timeout, sessionOrRunID)
+ if err != nil {
+ fatalErr(err, "Invalid service: ", service)
+ }
+ return s
+}
+
+func getSystem() string { return os.Getenv("VESPA_CLI_CLOUD_SYSTEM") }
+
+func getConsoleURL() string {
+ if getSystem() == "publiccd" {
+ return "https://console-cd.vespa.oath.cloud"
+ }
+ return "https://console.vespa.oath.cloud"
+
+}
+
+func getApiURL() string {
+ if getSystem() == "publiccd" {
+ return "https://api.vespa-external-cd.aws.oath.cloud:4443"
+ }
+ return "https://api.vespa-external.aws.oath.cloud:4443"
+}
+
+func getTarget() vespa.Target {
+ targetType := getTargetType()
+ if strings.HasPrefix(targetType, "http") {
+ return vespa.CustomTarget(targetType)
+ }
+ switch targetType {
+ case "local":
+ return vespa.LocalTarget()
+ case "cloud":
+ deployment := deploymentFromArgs()
+ cfg, err := LoadConfig()
+ if err != nil {
+ fatalErr(err, "Could not load config")
+ return nil
+ }
+ apiKey, err := ioutil.ReadFile(cfg.APIKeyPath(deployment.Application.Tenant))
+ if err != nil {
+ fatalErrHint(err, "Deployment to cloud requires an API key. Try 'vespa api-key'")
+ }
+ privateKeyFile, err := cfg.PrivateKeyPath(deployment.Application)
+ if err != nil {
+ fatalErr(err)
+ return nil
+ }
+ certificateFile, err := cfg.CertificatePath(deployment.Application)
+ if err != nil {
+ fatalErr(err)
+ return nil
+ }
+ kp, err := tls.LoadX509KeyPair(certificateFile, privateKeyFile)
+ if err != nil {
+ fatalErrHint(err, "Deployment to cloud requires a certificate. Try 'vespa cert'")
+ }
+ return vespa.CloudTarget(getApiURL(), deployment, apiKey,
+ vespa.TLSOptions{
+ KeyPair: kp,
+ CertificateFile: certificateFile,
+ PrivateKeyFile: privateKeyFile,
+ },
+ vespa.LogOptions{
+ Writer: stdout,
+ Level: vespa.LogLevel(logLevelArg),
+ })
+ }
+ fatalErrHint(fmt.Errorf("Invalid target: %s", targetType), "Valid targets are 'local', 'cloud' or an URL")
+ return nil
+}
+
+func waitForService(service string, sessionOrRunID int64) {
+ s := getService(service, sessionOrRunID)
+ timeout := time.Duration(waitSecsArg) * time.Second
+ if timeout > 0 {
+ log.Printf("Waiting up to %d %s for service to become ready ...", color.Cyan(waitSecsArg), color.Cyan("seconds"))
+ }
+ status, err := s.Wait(timeout)
+ if status/100 == 2 {
+ log.Print(s.Description(), " at ", color.Cyan(s.BaseURL), " is ", color.Green("ready"))
+ } else {
+ if err == nil {
+ err = fmt.Errorf("Status %d", status)
+ }
+ fatalErr(err, s.Description(), " at ", color.Cyan(s.BaseURL), " is ", color.Red("not ready"))
+ }
+}
+
+func getDeploymentOpts(cfg *Config, pkg vespa.ApplicationPackage, target vespa.Target) vespa.DeploymentOpts {
+ opts := vespa.DeploymentOpts{ApplicationPackage: pkg, Target: target}
+ if opts.IsCloud() {
+ deployment := deploymentFromArgs()
+ if !opts.ApplicationPackage.HasCertificate() {
+ fatalErrHint(fmt.Errorf("Missing certificate in application package"), "Applications in Vespa Cloud require a certificate", "Try 'vespa cert'")
+ return opts
+ }
+ var err error
+ opts.APIKey, err = cfg.ReadAPIKey(deployment.Application.Tenant)
+ if err != nil {
+ fatalErrHint(err, "Deployment to cloud requires an API key. Try 'vespa api-key'")
+ return opts
+ }
+ opts.Deployment = deployment
+ }
+ return opts
+}
diff --git a/client/go/cmd/log.go b/client/go/cmd/log.go
new file mode 100644
index 00000000000..4577e890959
--- /dev/null
+++ b/client/go/cmd/log.go
@@ -0,0 +1,98 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package cmd
+
+import (
+ "fmt"
+ "time"
+
+ "github.com/spf13/cobra"
+ "github.com/vespa-engine/vespa/client/go/vespa"
+)
+
+var (
+ fromArg string
+ toArg string
+ levelArg string
+ followArg bool
+ dequoteArg bool
+)
+
+func init() {
+ rootCmd.AddCommand(logCmd)
+ logCmd.Flags().StringVarP(&fromArg, "from", "F", "", "Include logs since this timestamp (RFC3339 format)")
+ logCmd.Flags().StringVarP(&toArg, "to", "T", "", "Include logs until this timestamp (RFC3339 format)")
+ logCmd.Flags().StringVarP(&levelArg, "level", "l", "debug", `The maximum log level to show. Must be "error", "warning", "info" or "debug"`)
+ logCmd.Flags().BoolVarP(&followArg, "follow", "f", false, "Follow logs")
+ logCmd.Flags().BoolVarP(&dequoteArg, "nldequote", "n", true, "Dequote LF and TAB characters in log messages")
+}
+
+var logCmd = &cobra.Command{
+ Use: "log [relative-period]",
+ Short: "Show the Vespa log",
+ Long: `Show the Vespa log.
+
+The logs shown can be limited to a relative or fixed period. All timestamps are shown in UTC.
+`,
+ Example: `$ vespa log 1h
+$ vespa log --nldequote=false 10m
+$ vespa log --from 2021-08-25T15:00:00Z --to 2021-08-26T02:00:00Z
+$ vespa log --follow`,
+ DisableAutoGenTag: true,
+ Args: cobra.MaximumNArgs(1),
+ Run: func(cmd *cobra.Command, args []string) {
+ target := getTarget()
+ options := vespa.LogOptions{
+ Level: vespa.LogLevel(levelArg),
+ Follow: followArg,
+ Writer: stdout,
+ Dequote: dequoteArg,
+ }
+ if options.Follow {
+ if fromArg != "" || toArg != "" || len(args) > 0 {
+ fatalErr(fmt.Errorf("cannot combine --from/--to or relative time with --follow"), "Could not follow logs")
+ }
+ options.From = time.Now().Add(-5 * time.Minute)
+ } else {
+ from, to, err := parsePeriod(args)
+ if err != nil {
+ fatalErr(err, "Invalid period")
+ return
+ }
+ options.From = from
+ options.To = to
+ }
+ if err := target.PrintLog(options); err != nil {
+ fatalErr(err, "Could not retrieve logs")
+ }
+ },
+}
+
+func parsePeriod(args []string) (time.Time, time.Time, error) {
+ if len(args) == 1 {
+ if fromArg != "" || toArg != "" {
+ return time.Time{}, time.Time{}, fmt.Errorf("cannot combine --from/--to with relative value: %s", args[0])
+ }
+ d, err := time.ParseDuration(args[0])
+ if err != nil {
+ return time.Time{}, time.Time{}, err
+ }
+ if d > 0 {
+ d = -d
+ }
+ to := time.Now()
+ from := to.Add(d)
+ return from, to, nil
+ }
+ from, err := time.Parse(time.RFC3339, fromArg)
+ if err != nil {
+ return time.Time{}, time.Time{}, err
+ }
+ to, err := time.Parse(time.RFC3339, toArg)
+ if err != nil {
+ return time.Time{}, time.Time{}, err
+ }
+ if !to.After(from) {
+ return time.Time{}, time.Time{}, fmt.Errorf("--to must specify a time after --from")
+ }
+ return from, to, nil
+}
diff --git a/client/go/cmd/log_test.go b/client/go/cmd/log_test.go
new file mode 100644
index 00000000000..f239bebc488
--- /dev/null
+++ b/client/go/cmd/log_test.go
@@ -0,0 +1,28 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package cmd
+
+import (
+ "path/filepath"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestLog(t *testing.T) {
+ homeDir := filepath.Join(t.TempDir(), ".vespa")
+ pkgDir := mockApplicationPackage(t, false)
+ httpClient := &mockHttpClient{}
+ httpClient.NextResponse(200, `1632738690.905535 host1a.dev.aws-us-east-1c 806/53 logserver-container Container.com.yahoo.container.jdisc.ConfiguredApplication info Switching to the latest deployed set of configurations and components. Application config generation: 52532`)
+ execute(command{homeDir: homeDir, args: []string{"config", "set", "application", "t1.a1.i1"}}, t, httpClient)
+ execute(command{homeDir: homeDir, args: []string{"config", "set", "target", "cloud"}}, t, httpClient)
+ execute(command{homeDir: homeDir, args: []string{"api-key"}}, t, httpClient)
+ execute(command{homeDir: homeDir, args: []string{"cert", pkgDir}}, t, httpClient)
+
+ out, _ := execute(command{homeDir: homeDir, args: []string{"log", "--from", "2021-09-27T10:00:00Z", "--to", "2021-09-27T11:00:00Z"}}, t, httpClient)
+
+ expected := "[2021-09-27 10:31:30.905535] host1a.dev.aws-us-east-1c info logserver-container Container.com.yahoo.container.jdisc.ConfiguredApplication Switching to the latest deployed set of configurations and components. Application config generation: 52532\n"
+ assert.Equal(t, expected, out)
+
+ _, errOut := execute(command{homeDir: homeDir, args: []string{"log", "--from", "2021-09-27T13:12:49Z", "--to", "2021-09-27T13:15:00", "1h"}}, t, httpClient)
+ assert.Equal(t, "Error: Invalid period\ncannot combine --from/--to with relative value: 1h\n", errOut)
+}
diff --git a/client/go/cmd/man.go b/client/go/cmd/man.go
new file mode 100644
index 00000000000..d90898117de
--- /dev/null
+++ b/client/go/cmd/man.go
@@ -0,0 +1,28 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package cmd
+
+import (
+ "github.com/spf13/cobra"
+ "github.com/spf13/cobra/doc"
+)
+
+func init() {
+ rootCmd.AddCommand(manCmd)
+}
+
+var manCmd = &cobra.Command{
+ Use: "man directory",
+ Short: "Generate man pages and write them to given directory",
+ Args: cobra.ExactArgs(1),
+ Hidden: true, // Not intended to be called by users
+ DisableAutoGenTag: true,
+ Run: func(cmd *cobra.Command, args []string) {
+ dir := args[0]
+ err := doc.GenManTree(rootCmd, nil, dir)
+ if err != nil {
+ fatalErr(err, "Failed to write man pages")
+ return
+ }
+ printSuccess("Man pages written to ", dir)
+ },
+}
diff --git a/client/go/cmd/man_test.go b/client/go/cmd/man_test.go
new file mode 100644
index 00000000000..dfbe04f4c8e
--- /dev/null
+++ b/client/go/cmd/man_test.go
@@ -0,0 +1,18 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package cmd
+
+import (
+ "fmt"
+ "path/filepath"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/vespa-engine/vespa/client/go/util"
+)
+
+func TestMan(t *testing.T) {
+ tmpDir := t.TempDir()
+ out, _ := execute(command{args: []string{"man", tmpDir}}, t, nil)
+ assert.Equal(t, fmt.Sprintf("Success: Man pages written to %s\n", tmpDir), out)
+ assert.True(t, util.PathExists(filepath.Join(tmpDir, "vespa.1")))
+}
diff --git a/client/go/cmd/prod.go b/client/go/cmd/prod.go
new file mode 100644
index 00000000000..382ede0fae8
--- /dev/null
+++ b/client/go/cmd/prod.go
@@ -0,0 +1,349 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package cmd
+
+import (
+ "bufio"
+ "bytes"
+ "errors"
+ "fmt"
+ "io/ioutil"
+ "log"
+ "os"
+ "path/filepath"
+ "strings"
+
+ "github.com/spf13/cobra"
+ "github.com/vespa-engine/vespa/client/go/util"
+ "github.com/vespa-engine/vespa/client/go/vespa"
+ "github.com/vespa-engine/vespa/client/go/vespa/xml"
+)
+
+func init() {
+ rootCmd.AddCommand(prodCmd)
+ prodCmd.AddCommand(prodInitCmd)
+ prodCmd.AddCommand(prodSubmitCmd)
+}
+
+var prodCmd = &cobra.Command{
+ Use: "prod",
+ Short: "Deploy an application package to production in Vespa Cloud",
+ Long: `Deploy an application package to production in Vespa Cloud.
+
+Configure and deploy your application package to production in Vespa Cloud.`,
+ Example: `$ vespa prod init
+$ vespa prod submit`,
+ DisableAutoGenTag: true,
+ Run: func(cmd *cobra.Command, args []string) {
+ // Root command does nothing
+ cmd.Help()
+ exitFunc(1)
+ },
+}
+
+var prodInitCmd = &cobra.Command{
+ Use: "init",
+ Short: "Modify service.xml and deployment.xml for production deployment",
+ Long: `Modify service.xml and deployment.xml for production deployment.
+
+Only basic deployment configuration is available through this command. For
+advanced configuration see the relevant Vespa Cloud documentation and make
+changes to deployment.xml and services.xml directly.
+
+Reference:
+https://cloud.vespa.ai/en/reference/services
+https://cloud.vespa.ai/en/reference/deployment`,
+ DisableAutoGenTag: true,
+ Run: func(cmd *cobra.Command, args []string) {
+ appSource := applicationSource(args)
+ pkg, err := vespa.FindApplicationPackage(appSource, false)
+ if err != nil {
+ fatalErr(err)
+ return
+ }
+ if pkg.IsZip() {
+ fatalErrHint(fmt.Errorf("Cannot modify compressed application package %s", pkg.Path),
+ "Try running 'mvn clean' and run this command again")
+ return
+ }
+
+ deploymentXML, err := readDeploymentXML(pkg)
+ if err != nil {
+ fatalErr(err, "Could not read deployment.xml")
+ return
+ }
+ servicesXML, err := readServicesXML(pkg)
+ if err != nil {
+ fatalErr(err, "A services.xml declaring your cluster(s) must exist")
+ return
+ }
+
+ fmt.Fprint(stdout, "This will modify any existing ", color.Yellow("deployment.xml"), " and ", color.Yellow("services.xml"),
+ "!\nBefore modification a backup of the original file will be created.\n\n")
+ fmt.Fprint(stdout, "A default value is suggested (shown inside brackets) based on\nthe files' existing contents. Press enter to use it.\n\n")
+ fmt.Fprint(stdout, "Abort the configuration at any time by pressing Ctrl-C. The\nfiles will remain untouched.\n\n")
+ r := bufio.NewReader(stdin)
+ deploymentXML = updateRegions(r, deploymentXML)
+ servicesXML = updateNodes(r, servicesXML)
+
+ fmt.Fprintln(stdout)
+ if err := writeWithBackup(pkg, "deployment.xml", deploymentXML.String()); err != nil {
+ fatalErr(err)
+ return
+ }
+ if err := writeWithBackup(pkg, "services.xml", servicesXML.String()); err != nil {
+ fatalErr(err)
+ return
+ }
+ },
+}
+
+var prodSubmitCmd = &cobra.Command{
+ Use: "submit",
+ Short: "Submit your application for production deployment",
+ Long: `Submit your application for production deployment.
+
+This commands uploads your application package to Vespa Cloud and deploys it to
+the production zones specified in deployment.xml.
+
+Nodes are allocated to your application according to resources specified in
+services.xml.
+
+While submitting an application from a local development environment is
+supported, it's strongly recommended that production deployments are performed
+by a continuous build system.
+
+For more information about production deployments in Vespa Cloud see:
+https://cloud.vespa.ai/en/getting-to-production
+https://cloud.vespa.ai/en/automated-deployments`,
+ DisableAutoGenTag: true,
+ Example: `$ mvn package
+$ vespa prod submit`,
+ Run: func(cmd *cobra.Command, args []string) {
+ target := getTarget()
+ if target.Type() != "cloud" {
+ fatalErr(fmt.Errorf("%s target cannot deploy to Vespa Cloud", target.Type()))
+ return
+ }
+ appSource := applicationSource(args)
+ pkg, err := vespa.FindApplicationPackage(appSource, true)
+ if err != nil {
+ fatalErr(err)
+ return
+ }
+ cfg, err := LoadConfig()
+ if err != nil {
+ fatalErr(err, "Could not load config")
+ return
+ }
+ if !pkg.HasDeployment() {
+ fatalErrHint(fmt.Errorf("No deployment.xml found"), "Try creating one with vespa prod init")
+ return
+ }
+ if !pkg.IsJava() {
+ // TODO: Loosen this requirement when we start supporting applications with Java in production
+ fatalErrHint(fmt.Errorf("No jar files found in %s", pkg.Path), "Only applications containing Java components are currently supported")
+ return
+ }
+ isCI := os.Getenv("CI") != ""
+ if !isCI {
+ fmt.Fprintln(stderr, color.Yellow("Warning:"), "Submitting from a non-CI environment is discouraged")
+ printErrHint(nil, "See https://cloud.vespa.ai/en/getting-to-production for best practices")
+ }
+ opts := getDeploymentOpts(cfg, pkg, target)
+ if err := vespa.Submit(opts); err != nil {
+ fatalErr(err, "Could not submit application for deployment")
+ } else {
+ printSuccess("Submitted ", color.Cyan(pkg.Path), " for deployment")
+ log.Printf("See %s for deployment progress\n", color.Cyan(fmt.Sprintf("%s/tenant/%s/application/%s/prod/deployment",
+ getConsoleURL(), opts.Deployment.Application.Tenant, opts.Deployment.Application.Application)))
+ }
+ },
+}
+
+func writeWithBackup(pkg vespa.ApplicationPackage, filename, contents string) error {
+ dst := filepath.Join(pkg.Path, filename)
+ if util.PathExists(dst) {
+ data, err := ioutil.ReadFile(dst)
+ if err != nil {
+ return err
+ }
+ if bytes.Equal(data, []byte(contents)) {
+ fmt.Fprintf(stdout, "Not writing %s: File is unchanged\n", color.Yellow(filename))
+ return nil
+ }
+ renamed := false
+ for i := 1; i <= 1000; i++ {
+ bak := fmt.Sprintf("%s.%d.bak", dst, i)
+ if !util.PathExists(bak) {
+ fmt.Fprintf(stdout, "Backing up existing %s to %s\n", color.Yellow(filename), color.Yellow(bak))
+ if err := os.Rename(dst, bak); err != nil {
+ return err
+ }
+ renamed = true
+ break
+ }
+ }
+ if !renamed {
+ return fmt.Errorf("could not find an unused backup name for %s", dst)
+ }
+ }
+ fmt.Fprintf(stdout, "Writing %s\n", color.Green(dst))
+ return ioutil.WriteFile(dst, []byte(contents), 0644)
+}
+
+func updateRegions(r *bufio.Reader, deploymentXML xml.Deployment) xml.Deployment {
+ regions := promptRegions(r, deploymentXML)
+ parts := strings.Split(regions, ",")
+ regionElements := xml.Regions(parts...)
+ if err := deploymentXML.Replace("prod", "region", regionElements); err != nil {
+ fatalErr(err, "Could not update region elements in deployment.xml")
+ }
+ // TODO: Some sample apps come with production <test> elements, but not necessarily working production tests, we
+ // therefore remove <test> elements here.
+ // This can be improved by supporting <test> elements in xml package and allow specifying testing as part of
+ // region prompt, e.g. region1;test,region2
+ if err := deploymentXML.Replace("prod", "test", nil); err != nil {
+ fatalErr(err, "Could not remove test elements in deployment.xml")
+ }
+ return deploymentXML
+}
+
+func promptRegions(r *bufio.Reader, deploymentXML xml.Deployment) string {
+ fmt.Fprintln(stdout, color.Cyan("> Deployment regions"))
+ fmt.Fprintf(stdout, "Documentation: %s\n", color.Green("https://cloud.vespa.ai/en/reference/zones"))
+ fmt.Fprintf(stdout, "Example: %s\n\n", color.Yellow("aws-us-east-1c,aws-us-west-2a"))
+ var currentRegions []string
+ for _, r := range deploymentXML.Prod.Regions {
+ currentRegions = append(currentRegions, r.Name)
+ }
+ if len(deploymentXML.Instance) > 0 {
+ for _, r := range deploymentXML.Instance[0].Prod.Regions {
+ currentRegions = append(currentRegions, r.Name)
+ }
+ }
+ validator := func(input string) error {
+ regions := strings.Split(input, ",")
+ for _, r := range regions {
+ if !xml.IsProdRegion(r, getSystem()) {
+ return fmt.Errorf("invalid region %s", r)
+ }
+ }
+ return nil
+ }
+ return prompt(r, "Which regions do you wish to deploy in?", strings.Join(currentRegions, ","), validator)
+}
+
+func updateNodes(r *bufio.Reader, servicesXML xml.Services) xml.Services {
+ for _, c := range servicesXML.Container {
+ nodes := promptNodes(r, c.ID, c.Nodes)
+ if err := servicesXML.Replace("container#"+c.ID, "nodes", nodes); err != nil {
+ fatalErr(err)
+ return xml.Services{}
+ }
+ }
+ for _, c := range servicesXML.Content {
+ nodes := promptNodes(r, c.ID, c.Nodes)
+ if err := servicesXML.Replace("content#"+c.ID, "nodes", nodes); err != nil {
+ fatalErr(err)
+ return xml.Services{}
+ }
+ }
+ return servicesXML
+}
+
+func promptNodes(r *bufio.Reader, clusterID string, defaultValue xml.Nodes) xml.Nodes {
+ count := promptNodeCount(r, clusterID, defaultValue.Count)
+ const autoSpec = "auto"
+ defaultSpec := autoSpec
+ resources := defaultValue.Resources
+ if resources != nil {
+ defaultSpec = defaultValue.Resources.String()
+ }
+ spec := promptResources(r, clusterID, defaultSpec)
+ if spec == autoSpec {
+ resources = nil
+ } else {
+ r, err := xml.ParseResources(spec)
+ if err != nil {
+ fatalErr(err) // Should not happen as resources have already been validated
+ return xml.Nodes{}
+ }
+ resources = &r
+ }
+ return xml.Nodes{Count: count, Resources: resources}
+}
+
+func promptNodeCount(r *bufio.Reader, clusterID string, nodeCount string) string {
+ fmt.Fprintln(stdout, color.Cyan("\n> Node count: "+clusterID+" cluster"))
+ fmt.Fprintf(stdout, "Documentation: %s\n", color.Green("https://cloud.vespa.ai/en/reference/services"))
+ fmt.Fprintf(stdout, "Example: %s\nExample: %s\n\n", color.Yellow("4"), color.Yellow("[2,8]"))
+ validator := func(input string) error {
+ _, _, err := xml.ParseNodeCount(input)
+ return err
+ }
+ return prompt(r, fmt.Sprintf("How many nodes should the %s cluster have?", color.Cyan(clusterID)), nodeCount, validator)
+}
+
+func promptResources(r *bufio.Reader, clusterID string, resources string) string {
+ fmt.Fprintln(stdout, color.Cyan("\n> Node resources: "+clusterID+" cluster"))
+ fmt.Fprintf(stdout, "Documentation: %s\n", color.Green("https://cloud.vespa.ai/en/reference/services"))
+ fmt.Fprintf(stdout, "Example: %s\nExample: %s\n\n", color.Yellow("auto"), color.Yellow("vcpu=4,memory=8Gb,disk=100Gb"))
+ validator := func(input string) error {
+ if input == "auto" {
+ return nil
+ }
+ _, err := xml.ParseResources(input)
+ return err
+ }
+ return prompt(r, fmt.Sprintf("Which resources should each node in the %s cluster have?", color.Cyan(clusterID)), resources, validator)
+}
+
+func readDeploymentXML(pkg vespa.ApplicationPackage) (xml.Deployment, error) {
+ f, err := os.Open(filepath.Join(pkg.Path, "deployment.xml"))
+ if errors.Is(err, os.ErrNotExist) {
+ // Return a default value if there is no current deployment.xml
+ return xml.DefaultDeployment, nil
+ } else if err != nil {
+ return xml.Deployment{}, err
+ }
+ defer f.Close()
+ return xml.ReadDeployment(f)
+}
+
+func readServicesXML(pkg vespa.ApplicationPackage) (xml.Services, error) {
+ f, err := os.Open(filepath.Join(pkg.Path, "services.xml"))
+ if err != nil {
+ return xml.Services{}, err
+ }
+ defer f.Close()
+ return xml.ReadServices(f)
+}
+
+func prompt(r *bufio.Reader, question, defaultAnswer string, validator func(input string) error) string {
+ var input string
+ for input == "" {
+ fmt.Fprint(stdout, question)
+ if defaultAnswer != "" {
+ fmt.Fprint(stdout, " [", color.Yellow(defaultAnswer), "]")
+ }
+ fmt.Fprint(stdout, " ")
+
+ var err error
+ input, err = r.ReadString('\n')
+ if err != nil {
+ fatalErr(err)
+ return ""
+ }
+ input = strings.TrimSpace(input)
+ if input == "" {
+ input = defaultAnswer
+ }
+
+ if err := validator(input); err != nil {
+ printErr(err)
+ fmt.Fprintln(stderr)
+ input = ""
+ }
+ }
+ return input
+}
diff --git a/client/go/cmd/prod_test.go b/client/go/cmd/prod_test.go
new file mode 100644
index 00000000000..4ce6112122a
--- /dev/null
+++ b/client/go/cmd/prod_test.go
@@ -0,0 +1,166 @@
+package cmd
+
+import (
+ "bytes"
+ "io"
+ "io/ioutil"
+ "os"
+ "path/filepath"
+ "strings"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/vespa-engine/vespa/client/go/util"
+)
+
+func TestProdInit(t *testing.T) {
+ homeDir := filepath.Join(t.TempDir(), ".vespa")
+ pkgDir := filepath.Join(t.TempDir(), "app")
+ createApplication(t, pkgDir)
+
+ answers := []string{
+ // Regions
+ "invalid input",
+ "aws-us-west-2a,aws-eu-west-1a",
+
+ // Node count: qrs
+ "invalid input",
+ "4",
+
+ // Node resources: qrs
+ "invalid input",
+ "auto",
+
+ // Node count: music
+ "invalid input",
+ "6",
+
+ // Node resources: music
+ "invalid input",
+ "vcpu=16,memory=64Gb,disk=100Gb",
+ }
+ var buf bytes.Buffer
+ buf.WriteString(strings.Join(answers, "\n") + "\n")
+ execute(command{stdin: &buf, homeDir: homeDir, args: []string{"prod", "init", pkgDir}}, t, nil)
+
+ // Verify contents
+ deploymentPath := filepath.Join(pkgDir, "src", "main", "application", "deployment.xml")
+ deploymentXML := readFileString(t, deploymentPath)
+ assert.Contains(t, deploymentXML, `<region active="true">aws-us-west-2a</region>`)
+ assert.Contains(t, deploymentXML, `<region active="true">aws-eu-west-1a</region>`)
+
+ servicesPath := filepath.Join(pkgDir, "src", "main", "application", "services.xml")
+ servicesXML := readFileString(t, servicesPath)
+ containerFragment := `<container id="qrs" version="1.0">
+ <document-api></document-api>
+ <search></search>
+ <nodes count="4"></nodes>
+ </container>`
+ assert.Contains(t, servicesXML, containerFragment)
+ contentFragment := `<content id="music" version="1.0">
+ <redundancy>2</redundancy>
+ <documents>
+ <document type="music" mode="index"></document>
+ </documents>
+ <nodes count="6">
+ <resources vcpu="16" memory="64Gb" disk="100Gb"></resources>
+ </nodes>
+ </content>`
+ assert.Contains(t, servicesXML, contentFragment)
+
+ // Backups are created
+ assert.True(t, util.PathExists(deploymentPath+".1.bak"))
+ assert.True(t, util.PathExists(servicesPath+".1.bak"))
+}
+
+func readFileString(t *testing.T, filename string) string {
+ content, err := ioutil.ReadFile(filename)
+ if err != nil {
+ t.Fatal(err)
+ }
+ return string(content)
+}
+
+func createApplication(t *testing.T, pkgDir string) {
+ appDir := filepath.Join(pkgDir, "src", "main", "application")
+ targetDir := filepath.Join(pkgDir, "target")
+ if err := os.MkdirAll(appDir, 0755); err != nil {
+ t.Fatal(err)
+ }
+
+ deploymentXML := `<deployment version="1.0">
+ <prod>
+ <region active="true">aws-us-east-1c</region>
+ </prod>
+</deployment>`
+ if err := ioutil.WriteFile(filepath.Join(appDir, "deployment.xml"), []byte(deploymentXML), 0644); err != nil {
+ t.Fatal(err)
+ }
+
+ servicesXML := `<services version="1.0" xmlns:deploy="vespa" xmlns:preprocess="properties">
+ <container id="qrs" version="1.0">
+ <document-api/>
+ <search/>
+ <nodes count="2">
+ <resources vcpu="4" memory="8Gb" disk="100Gb"/>
+ </nodes>
+ </container>
+ <content id="music" version="1.0">
+ <redundancy>2</redundancy>
+ <documents>
+ <document type="music" mode="index"></document>
+ </documents>
+ <nodes count="4"></nodes>
+ </content>
+</services>`
+
+ if err := ioutil.WriteFile(filepath.Join(appDir, "services.xml"), []byte(servicesXML), 0644); err != nil {
+ t.Fatal(err)
+ }
+ if err := os.MkdirAll(targetDir, 0755); err != nil {
+ t.Fatal(err)
+ }
+ if err := ioutil.WriteFile(filepath.Join(pkgDir, "pom.xml"), []byte(""), 0644); err != nil {
+ t.Fatal(err)
+ }
+}
+
+func TestProdSubmit(t *testing.T) {
+ homeDir := filepath.Join(t.TempDir(), ".vespa")
+ pkgDir := filepath.Join(t.TempDir(), "app")
+ createApplication(t, pkgDir)
+
+ httpClient := &mockHttpClient{}
+ httpClient.NextResponse(200, `ok`)
+ execute(command{homeDir: homeDir, args: []string{"config", "set", "application", "t1.a1.i1"}}, t, httpClient)
+ execute(command{homeDir: homeDir, args: []string{"config", "set", "target", "cloud"}}, t, httpClient)
+ execute(command{homeDir: homeDir, args: []string{"api-key"}}, t, httpClient)
+ execute(command{homeDir: homeDir, args: []string{"cert", pkgDir}}, t, httpClient)
+
+ // Copy an application package pre-assambled with mvn package
+ testAppDir := filepath.Join("testdata", "applications", "withDeployment", "target")
+ zipFile := filepath.Join(testAppDir, "application.zip")
+ copyFile(t, filepath.Join(pkgDir, "target", "application.zip"), zipFile)
+ testZipFile := filepath.Join(testAppDir, "application-test.zip")
+ copyFile(t, filepath.Join(pkgDir, "target", "application-test.zip"), testZipFile)
+
+ out, _ := execute(command{homeDir: homeDir, args: []string{"prod", "submit", pkgDir}}, t, httpClient)
+ assert.Contains(t, out, "Success: Submitted")
+ assert.Contains(t, out, "See https://console.vespa.oath.cloud/tenant/t1/application/a1/prod/deployment for deployment progress")
+}
+
+func copyFile(t *testing.T, dstFilename, srcFilename string) {
+ dst, err := os.Create(dstFilename)
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer dst.Close()
+ src, err := os.Open(srcFilename)
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer src.Close()
+ if _, err := io.Copy(dst, src); err != nil {
+ t.Fatal(err)
+ }
+}
diff --git a/client/go/cmd/query.go b/client/go/cmd/query.go
new file mode 100644
index 00000000000..76688438fb4
--- /dev/null
+++ b/client/go/cmd/query.go
@@ -0,0 +1,74 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// vespa query command
+// author: bratseth
+
+package cmd
+
+import (
+ "log"
+ "net/http"
+ "net/url"
+ "strings"
+ "time"
+
+ "github.com/spf13/cobra"
+ "github.com/vespa-engine/vespa/client/go/util"
+)
+
+var queryTimeoutSecs int
+
+func init() {
+ rootCmd.AddCommand(queryCmd)
+ queryCmd.Flags().IntVarP(&queryTimeoutSecs, "timeout", "T", 10, "Timeout for the query request in seconds")
+}
+
+var queryCmd = &cobra.Command{
+ Use: "query query-parameters",
+ Short: "Issue a query to Vespa",
+ Example: `$ vespa query "yql=select * from sources * where title contains 'foo';" hits=5`,
+ Long: `Issue a query to Vespa.
+
+Any parameter from https://docs.vespa.ai/en/reference/query-api-reference.html
+can be set by the syntax [parameter-name]=[value].`,
+ // TODO: Support referencing a query json file
+ DisableAutoGenTag: true,
+ Args: cobra.MinimumNArgs(1),
+ Run: func(cmd *cobra.Command, args []string) {
+ query(args)
+ },
+}
+
+func query(arguments []string) {
+ service := getService("query", 0)
+ url, _ := url.Parse(service.BaseURL + "/search/")
+ urlQuery := url.Query()
+ for i := 0; i < len(arguments); i++ {
+ key, value := splitArg(arguments[i])
+ urlQuery.Set(key, value)
+ }
+ url.RawQuery = urlQuery.Encode()
+
+ response, err := service.Do(&http.Request{URL: url}, time.Second*time.Duration(queryTimeoutSecs))
+ if err != nil {
+ fatalErr(nil, "Request failed: ", err)
+ return
+ }
+ defer response.Body.Close()
+
+ if response.StatusCode == 200 {
+ log.Print(util.ReaderToJSON(response.Body))
+ } else if response.StatusCode/100 == 4 {
+ fatalErr(nil, "Invalid query: ", response.Status, "\n", util.ReaderToJSON(response.Body))
+ } else {
+ fatalErr(nil, response.Status, " from container at ", color.Cyan(url.Host), "\n", util.ReaderToJSON(response.Body))
+ }
+}
+
+func splitArg(argument string) (string, string) {
+ equalsIndex := strings.Index(argument, "=")
+ if equalsIndex < 1 {
+ return "yql", argument
+ } else {
+ return argument[0:equalsIndex], argument[equalsIndex+1:]
+ }
+}
diff --git a/client/go/cmd/query_test.go b/client/go/cmd/query_test.go
new file mode 100644
index 00000000000..ec6c3063906
--- /dev/null
+++ b/client/go/cmd/query_test.go
@@ -0,0 +1,79 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// query command tests
+// Author: bratseth
+
+package cmd
+
+import (
+ "strconv"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestQuery(t *testing.T) {
+ assertQuery(t,
+ "?yql=select+from+sources+%2A+where+title+contains+%27foo%27",
+ "select from sources * where title contains 'foo'")
+}
+
+func TestQueryNonJsonResult(t *testing.T) {
+ assertQuery(t,
+ "?yql=select+from+sources+%2A+where+title+contains+%27foo%27",
+ "select from sources * where title contains 'foo'")
+}
+
+func TestQueryWithMultipleParameters(t *testing.T) {
+ assertQuery(t,
+ "?hits=5&yql=select+from+sources+%2A+where+title+contains+%27foo%27",
+ "select from sources * where title contains 'foo'", "hits=5")
+}
+
+func TestQueryWithExplicitYqlParameter(t *testing.T) {
+ assertQuery(t,
+ "?yql=select+from+sources+%2A+where+title+contains+%27foo%27",
+ "yql=select from sources * where title contains 'foo'")
+}
+
+func TestIllegalQuery(t *testing.T) {
+ assertQueryError(t, 401, "query error message")
+}
+
+func TestServerError(t *testing.T) {
+ assertQueryServiceError(t, 501, "server error message")
+}
+
+func assertQuery(t *testing.T, expectedQuery string, query ...string) {
+ client := &mockHttpClient{}
+ client.NextResponse(200, "{\"query\":\"result\"}")
+ assert.Equal(t,
+ "{\n \"query\": \"result\"\n}\n",
+ executeCommand(t, client, []string{"query"}, query),
+ "query output")
+ queryURL := queryServiceURL(client)
+ assert.Equal(t, queryURL+"/search/"+expectedQuery, client.lastRequest.URL.String())
+}
+
+func assertQueryError(t *testing.T, status int, errorMessage string) {
+ client := &mockHttpClient{}
+ client.NextResponse(status, errorMessage)
+ _, outErr := execute(command{args: []string{"query", "yql=select from sources * where title contains 'foo'"}}, t, client)
+ assert.Equal(t,
+ "Error: Invalid query: Status "+strconv.Itoa(status)+"\n"+errorMessage+"\n",
+ outErr,
+ "error output")
+}
+
+func assertQueryServiceError(t *testing.T, status int, errorMessage string) {
+ client := &mockHttpClient{}
+ client.NextResponse(status, errorMessage)
+ _, outErr := execute(command{args: []string{"query", "yql=select from sources * where title contains 'foo'"}}, t, client)
+ assert.Equal(t,
+ "Error: Status "+strconv.Itoa(status)+" from container at 127.0.0.1:8080\n"+errorMessage+"\n",
+ outErr,
+ "error output")
+}
+
+func queryServiceURL(client *mockHttpClient) string {
+ return getService("query", 0).BaseURL
+}
diff --git a/client/go/cmd/root.go b/client/go/cmd/root.go
new file mode 100644
index 00000000000..5aae55ab6e4
--- /dev/null
+++ b/client/go/cmd/root.go
@@ -0,0 +1,109 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Root Cobra command: vespa
+// author: bratseth
+
+package cmd
+
+import (
+ "fmt"
+ "io"
+ "io/ioutil"
+ "log"
+ "os"
+
+ "github.com/logrusorgru/aurora/v3"
+ "github.com/mattn/go-colorable"
+ "github.com/mattn/go-isatty"
+ "github.com/spf13/cobra"
+)
+
+var (
+ rootCmd = &cobra.Command{
+ Use: "vespa command-name",
+ Short: "The command-line tool for Vespa.ai",
+ Long: `The command-line tool for Vespa.ai.
+
+Use it on Vespa instances running locally, remotely or in the cloud.
+Prefer web service API's to this in production.
+
+Vespa documentation: https://docs.vespa.ai`,
+ DisableAutoGenTag: true,
+ PersistentPreRun: func(cmd *cobra.Command, args []string) {
+ configureOutput()
+ },
+ }
+
+ targetArg string
+ applicationArg string
+ waitSecsArg int
+ colorArg string
+ quietArg bool
+ stdin io.ReadWriter = os.Stdin
+
+ color = aurora.NewAurora(false)
+ stdout = colorable.NewColorableStdout()
+ stderr = colorable.NewColorableStderr()
+)
+
+const (
+ applicationFlag = "application"
+ targetFlag = "target"
+ waitFlag = "wait"
+ colorFlag = "color"
+ quietFlag = "quiet"
+)
+
+func isTerminal() bool {
+ if f, ok := stdout.(*os.File); ok {
+ return isatty.IsTerminal(f.Fd())
+ }
+ if f, ok := stderr.(*os.File); ok {
+ return isatty.IsTerminal(f.Fd())
+ }
+ return false
+}
+
+func configureOutput() {
+ if quietArg {
+ stdout = ioutil.Discard
+ }
+ log.SetFlags(0) // No timestamps
+ log.SetOutput(stdout)
+
+ config, err := LoadConfig()
+ if err != nil {
+ fatalErr(err, "Could not load config")
+ }
+ colorValue, err := config.Get(colorFlag)
+ if err != nil {
+ fatalErr(err)
+ }
+
+ colorize := false
+ switch colorValue {
+ case "auto":
+ colorize = isTerminal()
+ case "always":
+ colorize = true
+ case "never":
+ default:
+ fatalErrHint(fmt.Errorf("Invalid value for %s option", colorFlag), "Must be \"auto\", \"never\" or \"always\"")
+ }
+ color = aurora.NewAurora(colorize)
+}
+
+func init() {
+ rootCmd.PersistentFlags().StringVarP(&targetArg, targetFlag, "t", "local", "The name or URL of the recipient of this command")
+ rootCmd.PersistentFlags().StringVarP(&applicationArg, applicationFlag, "a", "", "The application to manage")
+ rootCmd.PersistentFlags().IntVarP(&waitSecsArg, waitFlag, "w", 0, "Number of seconds to wait for a service to become ready")
+ rootCmd.PersistentFlags().StringVarP(&colorArg, colorFlag, "c", "auto", "Whether to use colors in output. Can be \"auto\", \"never\" or \"always\"")
+ rootCmd.PersistentFlags().BoolVarP(&quietArg, quietFlag, "q", false, "Quiet mode. Only errors are printed.")
+ bindFlagToConfig(targetFlag, rootCmd)
+ bindFlagToConfig(applicationFlag, rootCmd)
+ bindFlagToConfig(waitFlag, rootCmd)
+ bindFlagToConfig(colorFlag, rootCmd)
+ bindFlagToConfig(quietFlag, rootCmd)
+}
+
+// Execute executes the root command.
+func Execute() error { return rootCmd.Execute() }
diff --git a/client/go/cmd/status.go b/client/go/cmd/status.go
new file mode 100644
index 00000000000..c72df481547
--- /dev/null
+++ b/client/go/cmd/status.go
@@ -0,0 +1,60 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// vespa status command
+// author: bratseth
+
+package cmd
+
+import (
+ "github.com/spf13/cobra"
+)
+
+func init() {
+ rootCmd.AddCommand(statusCmd)
+ statusCmd.AddCommand(statusQueryCmd)
+ statusCmd.AddCommand(statusDocumentCmd)
+ statusCmd.AddCommand(statusDeployCmd)
+}
+
+var statusCmd = &cobra.Command{
+ Use: "status",
+ Short: "Verify that a service is ready to use (query by default)",
+ Example: `$ vespa status query`,
+ DisableAutoGenTag: true,
+ Args: cobra.MaximumNArgs(1),
+ Run: func(cmd *cobra.Command, args []string) {
+ waitForService("query", 0)
+ },
+}
+
+var statusQueryCmd = &cobra.Command{
+ Use: "query",
+ Short: "Verify that the query service is ready to use (default)",
+ Example: `$ vespa status query`,
+ DisableAutoGenTag: true,
+ Args: cobra.ExactArgs(0),
+ Run: func(cmd *cobra.Command, args []string) {
+ waitForService("query", 0)
+ },
+}
+
+var statusDocumentCmd = &cobra.Command{
+ Use: "document",
+ Short: "Verify that the document service is ready to use",
+ Example: `$ vespa status document`,
+ DisableAutoGenTag: true,
+ Args: cobra.ExactArgs(0),
+ Run: func(cmd *cobra.Command, args []string) {
+ waitForService("document", 0)
+ },
+}
+
+var statusDeployCmd = &cobra.Command{
+ Use: "deploy",
+ Short: "Verify that the deploy service is ready to use",
+ Example: `$ vespa status deploy`,
+ DisableAutoGenTag: true,
+ Args: cobra.ExactArgs(0),
+ Run: func(cmd *cobra.Command, args []string) {
+ waitForService("deploy", 0)
+ },
+}
diff --git a/client/go/cmd/status_test.go b/client/go/cmd/status_test.go
new file mode 100644
index 00000000000..757ef5f3b06
--- /dev/null
+++ b/client/go/cmd/status_test.go
@@ -0,0 +1,88 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// status command tests
+// Author: bratseth
+
+package cmd
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestStatusDeployCommand(t *testing.T) {
+ assertDeployStatus("http://127.0.0.1:19071", []string{}, t)
+}
+
+func TestStatusDeployCommandWithURLTarget(t *testing.T) {
+ assertDeployStatus("http://mydeploytarget:19071", []string{"-t", "http://mydeploytarget"}, t)
+}
+
+func TestStatusDeployCommandWithLocalTarget(t *testing.T) {
+ assertDeployStatus("http://127.0.0.1:19071", []string{"-t", "local"}, t)
+}
+
+func TestStatusQueryCommand(t *testing.T) {
+ assertQueryStatus("http://127.0.0.1:8080", []string{}, t)
+}
+
+func TestStatusQueryCommandWithUrlTarget(t *testing.T) {
+ assertQueryStatus("http://mycontainertarget:8080", []string{"-t", "http://mycontainertarget"}, t)
+}
+
+func TestStatusQueryCommandWithLocalTarget(t *testing.T) {
+ assertQueryStatus("http://127.0.0.1:8080", []string{"-t", "local"}, t)
+}
+
+func TestStatusDocumentCommandWithLocalTarget(t *testing.T) {
+ assertDocumentStatus("http://127.0.0.1:8080", []string{"-t", "local"}, t)
+}
+
+func TestStatusErrorResponse(t *testing.T) {
+ assertQueryStatusError("http://127.0.0.1:8080", []string{}, t)
+}
+
+func assertDeployStatus(target string, args []string, t *testing.T) {
+ client := &mockHttpClient{}
+ assert.Equal(t,
+ "Deploy API at "+target+" is ready\n",
+ executeCommand(t, client, []string{"status", "deploy"}, args),
+ "vespa status config-server")
+ assert.Equal(t, target+"/status.html", client.lastRequest.URL.String())
+}
+
+func assertQueryStatus(target string, args []string, t *testing.T) {
+ client := &mockHttpClient{}
+ assert.Equal(t,
+ "Container (query API) at "+target+" is ready\n",
+ executeCommand(t, client, []string{"status", "query"}, args),
+ "vespa status container")
+ assert.Equal(t, target+"/ApplicationStatus", client.lastRequest.URL.String())
+
+ assert.Equal(t,
+ "Container (query API) at "+target+" is ready\n",
+ executeCommand(t, client, []string{"status"}, args),
+ "vespa status (the default)")
+ assert.Equal(t, target+"/ApplicationStatus", client.lastRequest.URL.String())
+}
+
+func assertDocumentStatus(target string, args []string, t *testing.T) {
+ client := &mockHttpClient{}
+ assert.Equal(t,
+ "Container (document API) at "+target+" is ready\n",
+ executeCommand(t, client, []string{"status", "document"}, args),
+ "vespa status container")
+ assert.Equal(t, target+"/ApplicationStatus", client.lastRequest.URL.String())
+}
+
+func assertQueryStatusError(target string, args []string, t *testing.T) {
+ client := &mockHttpClient{}
+ client.NextStatus(500)
+ cmd := []string{"status", "container"}
+ cmd = append(cmd, args...)
+ _, outErr := execute(command{args: cmd}, t, client)
+ assert.Equal(t,
+ "Error: Container (query API) at "+target+" is not ready\nStatus 500\n",
+ outErr,
+ "vespa status container")
+}
diff --git a/client/go/cmd/testdata/A-Head-Full-of-Dreams-Put.json b/client/go/cmd/testdata/A-Head-Full-of-Dreams-Put.json
new file mode 100644
index 00000000000..c67b90664d6
--- /dev/null
+++ b/client/go/cmd/testdata/A-Head-Full-of-Dreams-Put.json
@@ -0,0 +1,15 @@
+{
+ "put": "id:mynamespace:music::a-head-full-of-dreams",
+ "fields": {
+ "album": "A Head Full of Dreams",
+ "artist": "Coldplay",
+ "year": 2015,
+ "category_scores": {
+ "cells": [
+ { "address" : { "cat" : "pop" }, "value": 1 },
+ { "address" : { "cat" : "rock" }, "value": 0.2 },
+ { "address" : { "cat" : "jazz" }, "value": 0 }
+ ]
+ }
+ }
+}
diff --git a/client/go/cmd/testdata/A-Head-Full-of-Dreams-Remove.json b/client/go/cmd/testdata/A-Head-Full-of-Dreams-Remove.json
new file mode 100644
index 00000000000..8eeb19cbaa6
--- /dev/null
+++ b/client/go/cmd/testdata/A-Head-Full-of-Dreams-Remove.json
@@ -0,0 +1,3 @@
+{
+ "remove": "id:mynamespace:music::a-head-full-of-dreams"
+}
diff --git a/client/go/cmd/testdata/A-Head-Full-of-Dreams-Update.json b/client/go/cmd/testdata/A-Head-Full-of-Dreams-Update.json
new file mode 100644
index 00000000000..0f5e35c3fd5
--- /dev/null
+++ b/client/go/cmd/testdata/A-Head-Full-of-Dreams-Update.json
@@ -0,0 +1,12 @@
+{
+ "update": "id:mynamespace:music::a-head-full-of-dreams",
+ "fields": {
+ "category_scores": {
+ "cells": [
+ { "address" : { "cat" : "pop" }, "value": 1 },
+ { "address" : { "cat" : "rock" }, "value": 0.2 },
+ { "address" : { "cat" : "jazz" }, "value": 0 }
+ ]
+ }
+ }
+}
diff --git a/client/go/cmd/testdata/A-Head-Full-of-Dreams-Without-Operation.json b/client/go/cmd/testdata/A-Head-Full-of-Dreams-Without-Operation.json
new file mode 100644
index 00000000000..b68872a961e
--- /dev/null
+++ b/client/go/cmd/testdata/A-Head-Full-of-Dreams-Without-Operation.json
@@ -0,0 +1,14 @@
+{
+ "fields": {
+ "album": "A Head Full of Dreams",
+ "artist": "Coldplay",
+ "year": 2015,
+ "category_scores": {
+ "cells": [
+ { "address" : { "cat" : "pop" }, "value": 1 },
+ { "address" : { "cat" : "rock" }, "value": 0.2 },
+ { "address" : { "cat" : "jazz" }, "value": 0 }
+ ]
+ }
+ }
+}
diff --git a/client/go/cmd/testdata/applications/withDeployment/target/application-test.zip b/client/go/cmd/testdata/applications/withDeployment/target/application-test.zip
new file mode 100644
index 00000000000..8a1707b9cee
--- /dev/null
+++ b/client/go/cmd/testdata/applications/withDeployment/target/application-test.zip
Binary files differ
diff --git a/client/go/cmd/testdata/applications/withDeployment/target/application.zip b/client/go/cmd/testdata/applications/withDeployment/target/application.zip
new file mode 100644
index 00000000000..da23c2ff437
--- /dev/null
+++ b/client/go/cmd/testdata/applications/withDeployment/target/application.zip
Binary files differ
diff --git a/client/go/cmd/testdata/applications/withEmptyTarget/pom.xml b/client/go/cmd/testdata/applications/withEmptyTarget/pom.xml
new file mode 100644
index 00000000000..2b1875a5532
--- /dev/null
+++ b/client/go/cmd/testdata/applications/withEmptyTarget/pom.xml
@@ -0,0 +1 @@
+<services/> \ No newline at end of file
diff --git a/container-messagebus/src/test/resources/config/clientprovider/slobroks.cfg b/client/go/cmd/testdata/applications/withEmptyTarget/target/placeholder
index e69de29bb2d..e69de29bb2d 100644
--- a/container-messagebus/src/test/resources/config/clientprovider/slobroks.cfg
+++ b/client/go/cmd/testdata/applications/withEmptyTarget/target/placeholder
diff --git a/client/go/cmd/testdata/applications/withSource/src/main/application/hosts.xml b/client/go/cmd/testdata/applications/withSource/src/main/application/hosts.xml
new file mode 100644
index 00000000000..5dd3ed0dded
--- /dev/null
+++ b/client/go/cmd/testdata/applications/withSource/src/main/application/hosts.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts>
+ <host name="localhost">
+ <alias>node1</alias>
+ </host>
+</hosts>
+
diff --git a/client/go/cmd/testdata/applications/withSource/src/main/application/schemas/msmarco.sd b/client/go/cmd/testdata/applications/withSource/src/main/application/schemas/msmarco.sd
new file mode 100644
index 00000000000..183e1a6421f
--- /dev/null
+++ b/client/go/cmd/testdata/applications/withSource/src/main/application/schemas/msmarco.sd
@@ -0,0 +1,299 @@
+# Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+schema msmarco {
+ document msmarco {
+
+ field id type string {
+ indexing: summary | attribute
+ }
+
+ field title type string {
+ indexing: index | summary
+ index: enable-bm25
+ stemming: best
+ }
+
+ field url type string {
+ indexing: index | summary
+ }
+
+ field body type string {
+ indexing: index | summary
+ index: enable-bm25
+ summary: dynamic
+ stemming: best
+ }
+
+ field title_word2vec type tensor<float>(x[500]) {
+ indexing: attribute
+ }
+
+ field body_word2vec type tensor<float>(x[500]) {
+ indexing: attribute
+ }
+
+ field title_gse type tensor<float>(x[512]) {
+ indexing: attribute
+ }
+
+ field body_gse type tensor<float>(x[512]) {
+ indexing: attribute
+ }
+
+ field title_bert type tensor<float>(x[768]) {
+ indexing: attribute
+ }
+
+ field body_bert type tensor<float>(x[768]) {
+ indexing: attribute
+ }
+
+ }
+
+ document-summary minimal {
+ summary id type string {}
+ }
+
+ fieldset default {
+ fields: title, body
+ }
+
+ rank-profile default {
+ first-phase {
+ expression: nativeRank(title, body)
+ }
+ }
+
+ rank-profile bm25 inherits default {
+ first-phase {
+ expression: bm25(title) + bm25(body)
+ }
+ }
+
+ rank-profile word2vec_title_body_all inherits default {
+ function dot_product_title() {
+ expression: sum(query(tensor)*attribute(title_word2vec))
+ }
+ function dot_product_body() {
+ expression: sum(query(tensor)*attribute(body_word2vec))
+ }
+ first-phase {
+ expression: dot_product_title() + dot_product_body()
+ }
+ ignore-default-rank-features
+ rank-features {
+ rankingExpression(dot_product_title)
+ rankingExpression(dot_product_body)
+ }
+ }
+
+ rank-profile gse_title_body_all inherits default {
+ function dot_product_title() {
+ expression: sum(query(tensor_gse)*attribute(title_gse))
+ }
+ function dot_product_body() {
+ expression: sum(query(tensor_gse)*attribute(body_gse))
+ }
+ first-phase {
+ expression: dot_product_title() + dot_product_body()
+ }
+ ignore-default-rank-features
+ rank-features {
+ rankingExpression(dot_product_title)
+ rankingExpression(dot_product_body)
+ }
+ }
+
+ rank-profile bert_title_body_all inherits default {
+ function dot_product_title() {
+ expression: sum(query(tensor_bert)*attribute(title_bert))
+ }
+ function dot_product_body() {
+ expression: sum(query(tensor_bert)*attribute(body_bert))
+ }
+ first-phase {
+ expression: dot_product_title() + dot_product_body()
+ }
+ ignore-default-rank-features
+ rank-features {
+ rankingExpression(dot_product_title)
+ rankingExpression(dot_product_body)
+ }
+ }
+
+ rank-profile bm25_word2vec_title_body_all inherits default {
+ function dot_product_title() {
+ expression: sum(query(tensor)*attribute(title_word2vec))
+ }
+ function dot_product_body() {
+ expression: sum(query(tensor)*attribute(body_word2vec))
+ }
+ first-phase {
+ expression: bm25(title) + bm25(body) + dot_product_title() + dot_product_body()
+ }
+ ignore-default-rank-features
+ rank-features {
+ bm25(title)
+ bm25(body)
+ rankingExpression(dot_product_title)
+ rankingExpression(dot_product_body)
+ }
+ }
+
+ rank-profile bm25_gse_title_body_all inherits default {
+ function dot_product_title() {
+ expression: sum(query(tensor_gse)*attribute(title_gse))
+ }
+ function dot_product_body() {
+ expression: sum(query(tensor_gse)*attribute(body_gse))
+ }
+ first-phase {
+ expression: bm25(title) + bm25(body) + dot_product_title() + dot_product_body()
+ }
+ ignore-default-rank-features
+ rank-features {
+ bm25(title)
+ bm25(body)
+ rankingExpression(dot_product_title)
+ rankingExpression(dot_product_body)
+ }
+ }
+
+ rank-profile bm25_bert_title_body_all inherits default {
+ function dot_product_title() {
+ expression: sum(query(tensor_bert)*attribute(title_bert))
+ }
+ function dot_product_body() {
+ expression: sum(query(tensor_bert)*attribute(body_bert))
+ }
+ first-phase {
+ expression: bm25(title) + bm25(body) + dot_product_title() + dot_product_body()
+ }
+ ignore-default-rank-features
+ rank-features {
+ bm25(title)
+ bm25(body)
+ rankingExpression(dot_product_title)
+ rankingExpression(dot_product_body)
+ }
+ }
+
+ rank-profile listwise_bm25_bert_title_body_all inherits default {
+ function dot_product_title() {
+ expression: sum(query(tensor_bert)*attribute(title_bert))
+ }
+ function dot_product_body() {
+ expression: sum(query(tensor_bert)*attribute(body_bert))
+ }
+ first-phase {
+ expression: 0.9005951 * bm25(title) + 2.2043643 * bm25(body) + 0.13506432 * dot_product_title() + 0.5840874 * dot_product_body()
+ }
+ ignore-default-rank-features
+ rank-features {
+ bm25(title)
+ bm25(body)
+ rankingExpression(dot_product_title)
+ rankingExpression(dot_product_body)
+ }
+ }
+
+ rank-profile listwise_linear_bm25_gse_title_body_and inherits default {
+ function dot_product_title() {
+ expression: sum(query(tensor_gse)*attribute(title_gse))
+ }
+ function dot_product_body() {
+ expression: sum(query(tensor_gse)*attribute(body_gse))
+ }
+ first-phase {
+ expression: 0.12408562 * bm25(title) + 0.36673144 * bm25(body) + 6.2273498 * dot_product_title() + 5.671119 * dot_product_body()
+ }
+ ignore-default-rank-features
+ rank-features {
+ bm25(title)
+ bm25(body)
+ rankingExpression(dot_product_title)
+ rankingExpression(dot_product_body)
+ }
+ }
+
+ rank-profile listwise_linear_bm25_gse_title_body_or inherits default {
+ function dot_product_title() {
+ expression: sum(query(tensor_gse)*attribute(title_gse))
+ }
+ function dot_product_body() {
+ expression: sum(query(tensor_gse)*attribute(body_gse))
+ }
+ first-phase {
+ expression: 0.7150663 * bm25(title) + 0.9480147 * bm25(body) + 1.560068 * dot_product_title() + 1.5062317 * dot_product_body()
+ }
+ ignore-default-rank-features
+ rank-features {
+ bm25(title)
+ bm25(body)
+ rankingExpression(dot_product_title)
+ rankingExpression(dot_product_body)
+ }
+ }
+
+ rank-profile pointwise_linear_bm25 inherits default {
+ first-phase {
+ expression: 0.22499913 * bm25(title) + 0.07596389 * bm25(body)
+ }
+ }
+
+ rank-profile listwise_linear_bm25 inherits default {
+ first-phase {
+ expression: 0.13446581 * bm25(title) + 0.5716889 * bm25(body)
+ }
+ }
+
+ rank-profile collect_rank_features_embeddings inherits default {
+ function dot_product_title_word2vec() {
+ expression: sum(query(tensor)*attribute(title_word2vec))
+ }
+ function dot_product_body_word2vec() {
+ expression: sum(query(tensor)*attribute(body_word2vec))
+ }
+ function dot_product_title_gse() {
+ expression: sum(query(tensor_gse)*attribute(title_gse))
+ }
+ function dot_product_body_gse() {
+ expression: sum(query(tensor_gse)*attribute(body_gse))
+ }
+ function dot_product_title_bert() {
+ expression: sum(query(tensor_bert)*attribute(title_bert))
+ }
+ function dot_product_body_bert() {
+ expression: sum(query(tensor_bert)*attribute(body_bert))
+ }
+ first-phase {
+ expression: random
+ }
+ ignore-default-rank-features
+ rank-features {
+ bm25(title)
+ bm25(body)
+ nativeRank(title)
+ nativeRank(body)
+ rankingExpression(dot_product_title_word2vec)
+ rankingExpression(dot_product_body_word2vec)
+ rankingExpression(dot_product_title_gse)
+ rankingExpression(dot_product_body_gse)
+ rankingExpression(dot_product_title_bert)
+ rankingExpression(dot_product_body_bert)
+ }
+ }
+
+ rank-profile collect_rank_features inherits default {
+ first-phase {
+ expression: random
+ }
+ ignore-default-rank-features
+ rank-features {
+ bm25(title)
+ bm25(body)
+ nativeRank(title)
+ nativeRank(body)
+ }
+ }
+}
diff --git a/client/go/cmd/testdata/applications/withSource/src/main/application/services.xml b/client/go/cmd/testdata/applications/withSource/src/main/application/services.xml
new file mode 100644
index 00000000000..766434798f0
--- /dev/null
+++ b/client/go/cmd/testdata/applications/withSource/src/main/application/services.xml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+
+<services version="1.0">
+
+ <container id="text_search" version="1.0">
+ <document-api/>
+ <search>
+
+ <!-- Config for bolding in search result snippets -->
+ <config name="container.qr-searchers">
+ <tag>
+ <bold>
+ <open>&lt;strong&gt;</open>
+ <close>&lt;/strong&gt;</close>
+ </bold>
+ <separator>...</separator>
+ </tag>
+ </config>
+
+ </search>
+ <document-processing/>
+
+ <component id="com.yahoo.language.simple.SimpleLinguistics"/>
+
+ <handler id="ai.vespa.example.text_search.site.SiteHandler" bundle="text-search">
+ <binding>http://*/site/*</binding>
+ <binding>http://*/site</binding>
+ <config name="ai.vespa.example.text_search.site.site-handler">
+ <vespaHostName>localhost</vespaHostName>
+ <vespaHostPort>8080</vespaHostPort>
+ </config>
+ </handler>
+
+ <nodes jvmargs="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=*:8998">
+ <node hostalias="node1" />
+ </nodes>
+
+ </container>
+
+ <content id="msmarco" version="1.0">
+
+ <!-- Config for search result snippets -->
+ <config name="vespa.config.search.summary.juniperrc">
+ <max_matches>2</max_matches>
+ <length>1000</length>
+ <surround_max>500</surround_max>
+ <min_length>300</min_length>
+ </config>
+
+ <redundancy>2</redundancy>
+ <documents>
+ <document type='msmarco' mode="index"/>
+ <document-processing cluster="text_search"/>
+ </documents>
+ <nodes>
+ <node distribution-key='0' hostalias='node1'/>
+ </nodes>
+ </content>
+
+</services>
diff --git a/client/go/cmd/testdata/applications/withTarget/pom.xml b/client/go/cmd/testdata/applications/withTarget/pom.xml
new file mode 100644
index 00000000000..2b1875a5532
--- /dev/null
+++ b/client/go/cmd/testdata/applications/withTarget/pom.xml
@@ -0,0 +1 @@
+<services/> \ No newline at end of file
diff --git a/client/go/cmd/testdata/applications/withTarget/target/application.zip b/client/go/cmd/testdata/applications/withTarget/target/application.zip
new file mode 100644
index 00000000000..b017db6472d
--- /dev/null
+++ b/client/go/cmd/testdata/applications/withTarget/target/application.zip
Binary files differ
diff --git a/client/go/cmd/testdata/sample-apps-contents.json b/client/go/cmd/testdata/sample-apps-contents.json
new file mode 100644
index 00000000000..02824f01147
--- /dev/null
+++ b/client/go/cmd/testdata/sample-apps-contents.json
@@ -0,0 +1,610 @@
+[
+ {
+ "name": ".github",
+ "path": ".github",
+ "sha": "6bcd814282757c3ca7ba265972f000bc62a76aa8",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/.github?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/.github",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/6bcd814282757c3ca7ba265972f000bc62a76aa8",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/.github?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/6bcd814282757c3ca7ba265972f000bc62a76aa8",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/.github"
+ }
+ },
+ {
+ "name": ".gitignore",
+ "path": ".gitignore",
+ "sha": "e33d8f27d17a696ae99b12063f553a53d0d08510",
+ "size": 163,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/.gitignore?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/blob/master/.gitignore",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/e33d8f27d17a696ae99b12063f553a53d0d08510",
+ "download_url": "https://raw.githubusercontent.com/vespa-engine/sample-apps/master/.gitignore",
+ "type": "file",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/.gitignore?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/e33d8f27d17a696ae99b12063f553a53d0d08510",
+ "html": "https://github.com/vespa-engine/sample-apps/blob/master/.gitignore"
+ }
+ },
+ {
+ "name": "CONTRIBUTING.md",
+ "path": "CONTRIBUTING.md",
+ "sha": "56d974d3c4d9b5b8f1739c24fc293f822e2fcec8",
+ "size": 3814,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/CONTRIBUTING.md?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/blob/master/CONTRIBUTING.md",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/56d974d3c4d9b5b8f1739c24fc293f822e2fcec8",
+ "download_url": "https://raw.githubusercontent.com/vespa-engine/sample-apps/master/CONTRIBUTING.md",
+ "type": "file",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/CONTRIBUTING.md?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/56d974d3c4d9b5b8f1739c24fc293f822e2fcec8",
+ "html": "https://github.com/vespa-engine/sample-apps/blob/master/CONTRIBUTING.md"
+ }
+ },
+ {
+ "name": "Code-of-Conduct.md",
+ "path": "Code-of-Conduct.md",
+ "sha": "a812e1cfa8e464fc4a0ba6743030662efa1e4244",
+ "size": 7414,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/Code-of-Conduct.md?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/blob/master/Code-of-Conduct.md",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/a812e1cfa8e464fc4a0ba6743030662efa1e4244",
+ "download_url": "https://raw.githubusercontent.com/vespa-engine/sample-apps/master/Code-of-Conduct.md",
+ "type": "file",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/Code-of-Conduct.md?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/a812e1cfa8e464fc4a0ba6743030662efa1e4244",
+ "html": "https://github.com/vespa-engine/sample-apps/blob/master/Code-of-Conduct.md"
+ }
+ },
+ {
+ "name": "Gemfile",
+ "path": "Gemfile",
+ "sha": "a7befcbb3c5a4ff65d51ee222c27bc3aef92bdc8",
+ "size": 308,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/Gemfile?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/blob/master/Gemfile",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/a7befcbb3c5a4ff65d51ee222c27bc3aef92bdc8",
+ "download_url": "https://raw.githubusercontent.com/vespa-engine/sample-apps/master/Gemfile",
+ "type": "file",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/Gemfile?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/a7befcbb3c5a4ff65d51ee222c27bc3aef92bdc8",
+ "html": "https://github.com/vespa-engine/sample-apps/blob/master/Gemfile"
+ }
+ },
+ {
+ "name": "LICENSE",
+ "path": "LICENSE",
+ "sha": "df0bb94aeb6578299d1995c791da29f8f00f0cbc",
+ "size": 11354,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/LICENSE?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/blob/master/LICENSE",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/df0bb94aeb6578299d1995c791da29f8f00f0cbc",
+ "download_url": "https://raw.githubusercontent.com/vespa-engine/sample-apps/master/LICENSE",
+ "type": "file",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/LICENSE?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/df0bb94aeb6578299d1995c791da29f8f00f0cbc",
+ "html": "https://github.com/vespa-engine/sample-apps/blob/master/LICENSE"
+ }
+ },
+ {
+ "name": "README.md",
+ "path": "README.md",
+ "sha": "44b3d846b1c594196d1362a44c965b91482fb806",
+ "size": 8401,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/README.md?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/blob/master/README.md",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/44b3d846b1c594196d1362a44c965b91482fb806",
+ "download_url": "https://raw.githubusercontent.com/vespa-engine/sample-apps/master/README.md",
+ "type": "file",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/README.md?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/44b3d846b1c594196d1362a44c965b91482fb806",
+ "html": "https://github.com/vespa-engine/sample-apps/blob/master/README.md"
+ }
+ },
+ {
+ "name": "Vagrantfile",
+ "path": "Vagrantfile",
+ "sha": "0cb4b6dbe12404fb0bfa67e8e950287cdad722f4",
+ "size": 913,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/Vagrantfile?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/blob/master/Vagrantfile",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/0cb4b6dbe12404fb0bfa67e8e950287cdad722f4",
+ "download_url": "https://raw.githubusercontent.com/vespa-engine/sample-apps/master/Vagrantfile",
+ "type": "file",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/Vagrantfile?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/0cb4b6dbe12404fb0bfa67e8e950287cdad722f4",
+ "html": "https://github.com/vespa-engine/sample-apps/blob/master/Vagrantfile"
+ }
+ },
+ {
+ "name": "_config.yml",
+ "path": "_config.yml",
+ "sha": "d0a1af407e12cd80401d55679b5566538a925cc6",
+ "size": 630,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/_config.yml?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/blob/master/_config.yml",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/d0a1af407e12cd80401d55679b5566538a925cc6",
+ "download_url": "https://raw.githubusercontent.com/vespa-engine/sample-apps/master/_config.yml",
+ "type": "file",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/_config.yml?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/d0a1af407e12cd80401d55679b5566538a925cc6",
+ "html": "https://github.com/vespa-engine/sample-apps/blob/master/_config.yml"
+ }
+ },
+ {
+ "name": "_plugins-vespafeed",
+ "path": "_plugins-vespafeed",
+ "sha": "34a1dec1e26d0905f461a70ebdea5213e8510eea",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/_plugins-vespafeed?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/_plugins-vespafeed",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/34a1dec1e26d0905f461a70ebdea5213e8510eea",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/_plugins-vespafeed?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/34a1dec1e26d0905f461a70ebdea5213e8510eea",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/_plugins-vespafeed"
+ }
+ },
+ {
+ "name": "album-recommendation-monitoring",
+ "path": "album-recommendation-monitoring",
+ "sha": "f2f816138535aae9c1080c8dca20e544b0a8fbde",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/album-recommendation-monitoring?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/album-recommendation-monitoring",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/f2f816138535aae9c1080c8dca20e544b0a8fbde",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/album-recommendation-monitoring?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/f2f816138535aae9c1080c8dca20e544b0a8fbde",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/album-recommendation-monitoring"
+ }
+ },
+ {
+ "name": "album-recommendation-selfhosted",
+ "path": "album-recommendation-selfhosted",
+ "sha": "1355199dee65aba689b784a8c92977886e8b0dcb",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/album-recommendation-selfhosted?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/album-recommendation-selfhosted",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/1355199dee65aba689b784a8c92977886e8b0dcb",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/album-recommendation-selfhosted?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/1355199dee65aba689b784a8c92977886e8b0dcb",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/album-recommendation-selfhosted"
+ }
+ },
+ {
+ "name": "aws_bootstrap.sh",
+ "path": "aws_bootstrap.sh",
+ "sha": "4451c011e7d84d31bda78c6bb64d1b39bf79543c",
+ "size": 945,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/aws_bootstrap.sh?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/blob/master/aws_bootstrap.sh",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/4451c011e7d84d31bda78c6bb64d1b39bf79543c",
+ "download_url": "https://raw.githubusercontent.com/vespa-engine/sample-apps/master/aws_bootstrap.sh",
+ "type": "file",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/aws_bootstrap.sh?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/4451c011e7d84d31bda78c6bb64d1b39bf79543c",
+ "html": "https://github.com/vespa-engine/sample-apps/blob/master/aws_bootstrap.sh"
+ }
+ },
+ {
+ "name": "basic-search-on-gke",
+ "path": "basic-search-on-gke",
+ "sha": "e3045c5e7e3d5a9604fe5d6e79e28276341e3190",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/basic-search-on-gke?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/basic-search-on-gke",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/e3045c5e7e3d5a9604fe5d6e79e28276341e3190",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/basic-search-on-gke?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/e3045c5e7e3d5a9604fe5d6e79e28276341e3190",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/basic-search-on-gke"
+ }
+ },
+ {
+ "name": "boolean-search",
+ "path": "boolean-search",
+ "sha": "f698016bfba3492e36251bfdc7af27f3157dcb58",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/boolean-search?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/boolean-search",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/f698016bfba3492e36251bfdc7af27f3157dcb58",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/boolean-search?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/f698016bfba3492e36251bfdc7af27f3157dcb58",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/boolean-search"
+ }
+ },
+ {
+ "name": "dense-passage-retrieval-with-ann",
+ "path": "dense-passage-retrieval-with-ann",
+ "sha": "3281faf0e968e5dda398f784b0f370b93a94dd7d",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/dense-passage-retrieval-with-ann?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/dense-passage-retrieval-with-ann",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/3281faf0e968e5dda398f784b0f370b93a94dd7d",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/dense-passage-retrieval-with-ann?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/3281faf0e968e5dda398f784b0f370b93a94dd7d",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/dense-passage-retrieval-with-ann"
+ }
+ },
+ {
+ "name": "feed_to_vespa.py",
+ "path": "feed_to_vespa.py",
+ "sha": "ca825ded90c8c2300b29f6c016b8875c5547f6b6",
+ "size": 6825,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/feed_to_vespa.py?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/blob/master/feed_to_vespa.py",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/ca825ded90c8c2300b29f6c016b8875c5547f6b6",
+ "download_url": "https://raw.githubusercontent.com/vespa-engine/sample-apps/master/feed_to_vespa.py",
+ "type": "file",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/feed_to_vespa.py?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/ca825ded90c8c2300b29f6c016b8875c5547f6b6",
+ "html": "https://github.com/vespa-engine/sample-apps/blob/master/feed_to_vespa.py"
+ }
+ },
+ {
+ "name": "generic-request-processing",
+ "path": "generic-request-processing",
+ "sha": "ae922ab9efebf6cc9f8ee9726e48693b794eb235",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/generic-request-processing?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/generic-request-processing",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/ae922ab9efebf6cc9f8ee9726e48693b794eb235",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/generic-request-processing?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/ae922ab9efebf6cc9f8ee9726e48693b794eb235",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/generic-request-processing"
+ }
+ },
+ {
+ "name": "http-api-using-request-handlers-and-processors",
+ "path": "http-api-using-request-handlers-and-processors",
+ "sha": "b8403feb85fe2a113114a2bd086057aec0538e46",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/http-api-using-request-handlers-and-processors?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/http-api-using-request-handlers-and-processors",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/b8403feb85fe2a113114a2bd086057aec0538e46",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/http-api-using-request-handlers-and-processors?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/b8403feb85fe2a113114a2bd086057aec0538e46",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/http-api-using-request-handlers-and-processors"
+ }
+ },
+ {
+ "name": "incremental-search",
+ "path": "incremental-search",
+ "sha": "6d38eb194e4a8f6565a66591758a17bf8e6459e9",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/incremental-search?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/incremental-search",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/6d38eb194e4a8f6565a66591758a17bf8e6459e9",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/incremental-search?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/6d38eb194e4a8f6565a66591758a17bf8e6459e9",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/incremental-search"
+ }
+ },
+ {
+ "name": "model-evaluation",
+ "path": "model-evaluation",
+ "sha": "5f782af796cd13ebfb0c3e2d4ab074bc33e41913",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/model-evaluation?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/model-evaluation",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/5f782af796cd13ebfb0c3e2d4ab074bc33e41913",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/model-evaluation?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/5f782af796cd13ebfb0c3e2d4ab074bc33e41913",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/model-evaluation"
+ }
+ },
+ {
+ "name": "msmarco-ranking",
+ "path": "msmarco-ranking",
+ "sha": "44af5a222f523e0c1aa92fc11dda4cbe095ca6b1",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/msmarco-ranking?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/msmarco-ranking",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/44af5a222f523e0c1aa92fc11dda4cbe095ca6b1",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/msmarco-ranking?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/44af5a222f523e0c1aa92fc11dda4cbe095ca6b1",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/msmarco-ranking"
+ }
+ },
+ {
+ "name": "multiple-bundles-lib",
+ "path": "multiple-bundles-lib",
+ "sha": "8604cc153faee34c538a82b275e09f743f83216b",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/multiple-bundles-lib?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/multiple-bundles-lib",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/8604cc153faee34c538a82b275e09f743f83216b",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/multiple-bundles-lib?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/8604cc153faee34c538a82b275e09f743f83216b",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/multiple-bundles-lib"
+ }
+ },
+ {
+ "name": "multiple-bundles",
+ "path": "multiple-bundles",
+ "sha": "1cc37ba975795212e19801a1f2c1dd27abfbec77",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/multiple-bundles?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/multiple-bundles",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/1cc37ba975795212e19801a1f2c1dd27abfbec77",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/multiple-bundles?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/1cc37ba975795212e19801a1f2c1dd27abfbec77",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/multiple-bundles"
+ }
+ },
+ {
+ "name": "news",
+ "path": "news",
+ "sha": "aed7b1fde19b139781fb5df4d7feb3e8ec1db603",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/news",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/aed7b1fde19b139781fb5df4d7feb3e8ec1db603",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/aed7b1fde19b139781fb5df4d7feb3e8ec1db603",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/news"
+ }
+ },
+ {
+ "name": "operations",
+ "path": "operations",
+ "sha": "d73d99d8a7b2f496ff1e43da6b3f87d612227232",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/operations?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/operations",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/d73d99d8a7b2f496ff1e43da6b3f87d612227232",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/operations?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/d73d99d8a7b2f496ff1e43da6b3f87d612227232",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/operations"
+ }
+ },
+ {
+ "name": "part-purchases-demo",
+ "path": "part-purchases-demo",
+ "sha": "c1f64f68d2abe8b207da901e6ccb9277971167dc",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/part-purchases-demo?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/part-purchases-demo",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/c1f64f68d2abe8b207da901e6ccb9277971167dc",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/part-purchases-demo?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/c1f64f68d2abe8b207da901e6ccb9277971167dc",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/part-purchases-demo"
+ }
+ },
+ {
+ "name": "pom.xml",
+ "path": "pom.xml",
+ "sha": "191e06595d1db24d864833b333539a083d8a5f30",
+ "size": 1839,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/pom.xml?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/blob/master/pom.xml",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/191e06595d1db24d864833b333539a083d8a5f30",
+ "download_url": "https://raw.githubusercontent.com/vespa-engine/sample-apps/master/pom.xml",
+ "type": "file",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/pom.xml?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/191e06595d1db24d864833b333539a083d8a5f30",
+ "html": "https://github.com/vespa-engine/sample-apps/blob/master/pom.xml"
+ }
+ },
+ {
+ "name": "screwdriver.yaml",
+ "path": "screwdriver.yaml",
+ "sha": "fd9460121b230498baed2b1760b36e2f1a067fd7",
+ "size": 2771,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/screwdriver.yaml?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/blob/master/screwdriver.yaml",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/fd9460121b230498baed2b1760b36e2f1a067fd7",
+ "download_url": "https://raw.githubusercontent.com/vespa-engine/sample-apps/master/screwdriver.yaml",
+ "type": "file",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/screwdriver.yaml?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/fd9460121b230498baed2b1760b36e2f1a067fd7",
+ "html": "https://github.com/vespa-engine/sample-apps/blob/master/screwdriver.yaml"
+ }
+ },
+ {
+ "name": "secure-vespa-with-mtls",
+ "path": "secure-vespa-with-mtls",
+ "sha": "c6321c984bc4965f274d5f773af241935edb21a2",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/secure-vespa-with-mtls?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/secure-vespa-with-mtls",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/c6321c984bc4965f274d5f773af241935edb21a2",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/secure-vespa-with-mtls?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/c6321c984bc4965f274d5f773af241935edb21a2",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/secure-vespa-with-mtls"
+ }
+ },
+ {
+ "name": "semantic-qa-retrieval",
+ "path": "semantic-qa-retrieval",
+ "sha": "67bc047714c2c76e1318eb8faa5b208747b62d5e",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/semantic-qa-retrieval?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/semantic-qa-retrieval",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/67bc047714c2c76e1318eb8faa5b208747b62d5e",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/semantic-qa-retrieval?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/67bc047714c2c76e1318eb8faa5b208747b62d5e",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/semantic-qa-retrieval"
+ }
+ },
+ {
+ "name": "tensor-playground",
+ "path": "tensor-playground",
+ "sha": "090954a12a47a98250b729b0c01bf804577cb7ad",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/tensor-playground?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/tensor-playground",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/090954a12a47a98250b729b0c01bf804577cb7ad",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/tensor-playground?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/090954a12a47a98250b729b0c01bf804577cb7ad",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/tensor-playground"
+ }
+ },
+ {
+ "name": "test",
+ "path": "test",
+ "sha": "0948c9e369a9734856c5d55b11c9fc7681ca398b",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/test?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/test",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/0948c9e369a9734856c5d55b11c9fc7681ca398b",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/test?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/0948c9e369a9734856c5d55b11c9fc7681ca398b",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/test"
+ }
+ },
+ {
+ "name": "text-search",
+ "path": "text-search",
+ "sha": "7c3eb5ebfa59f0fdc7f1d3cd9601f238c4c1461a",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/text-search?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/text-search",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/7c3eb5ebfa59f0fdc7f1d3cd9601f238c4c1461a",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/text-search?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/7c3eb5ebfa59f0fdc7f1d3cd9601f238c4c1461a",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/text-search"
+ }
+ },
+ {
+ "name": "transformers",
+ "path": "transformers",
+ "sha": "43a907697bbb4a6baa673a3005bc009adff16cf3",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/transformers?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/transformers",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/43a907697bbb4a6baa673a3005bc009adff16cf3",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/transformers?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/43a907697bbb4a6baa673a3005bc009adff16cf3",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/transformers"
+ }
+ },
+ {
+ "name": "use-case-shopping",
+ "path": "use-case-shopping",
+ "sha": "7083dda1a5d3ad4ea5b349e67cdd2ab9b57dc305",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/use-case-shopping?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/use-case-shopping",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/7083dda1a5d3ad4ea5b349e67cdd2ab9b57dc305",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/use-case-shopping?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/7083dda1a5d3ad4ea5b349e67cdd2ab9b57dc305",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/use-case-shopping"
+ }
+ },
+ {
+ "name": "vespa-chinese-linguistics",
+ "path": "vespa-chinese-linguistics",
+ "sha": "de804dec91603fc905c82dbb982ca9c2dbeea99c",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/vespa-chinese-linguistics?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/vespa-chinese-linguistics",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/de804dec91603fc905c82dbb982ca9c2dbeea99c",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/vespa-chinese-linguistics?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/de804dec91603fc905c82dbb982ca9c2dbeea99c",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/vespa-chinese-linguistics"
+ }
+ },
+ {
+ "name": "vespa-cloud",
+ "path": "vespa-cloud",
+ "sha": "1f4ae8043e03f1d31bd361f1635cf3fe7dfe7c0b",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/vespa-cloud?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/vespa-cloud",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/1f4ae8043e03f1d31bd361f1635cf3fe7dfe7c0b",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/vespa-cloud?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/1f4ae8043e03f1d31bd361f1635cf3fe7dfe7c0b",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/vespa-cloud"
+ }
+ }
+]
diff --git a/client/go/cmd/testdata/sample-apps-master.zip b/client/go/cmd/testdata/sample-apps-master.zip
new file mode 100644
index 00000000000..6ad49361072
--- /dev/null
+++ b/client/go/cmd/testdata/sample-apps-master.zip
Binary files differ
diff --git a/client/go/cmd/testdata/sample-apps-news.json b/client/go/cmd/testdata/sample-apps-news.json
new file mode 100644
index 00000000000..495f2cf1294
--- /dev/null
+++ b/client/go/cmd/testdata/sample-apps-news.json
@@ -0,0 +1,178 @@
+[
+ {
+ "name": "README.md",
+ "path": "news/README.md",
+ "sha": "faaf9e19a01ae471d7a53ba9ed727bd792edf77c",
+ "size": 193,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news/README.md?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/blob/master/news/README.md",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/faaf9e19a01ae471d7a53ba9ed727bd792edf77c",
+ "download_url": "https://raw.githubusercontent.com/vespa-engine/sample-apps/master/news/README.md",
+ "type": "file",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news/README.md?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/faaf9e19a01ae471d7a53ba9ed727bd792edf77c",
+ "html": "https://github.com/vespa-engine/sample-apps/blob/master/news/README.md"
+ }
+ },
+ {
+ "name": "app-1-getting-started",
+ "path": "news/app-1-getting-started",
+ "sha": "beba7dde150de79caf412a90ccf10177aef3af92",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news/app-1-getting-started?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/news/app-1-getting-started",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/beba7dde150de79caf412a90ccf10177aef3af92",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news/app-1-getting-started?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/beba7dde150de79caf412a90ccf10177aef3af92",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/news/app-1-getting-started"
+ }
+ },
+ {
+ "name": "app-2-feed-and-query",
+ "path": "news/app-2-feed-and-query",
+ "sha": "508dff55513ec03db25765b1022b85f5d5b225c3",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news/app-2-feed-and-query?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/news/app-2-feed-and-query",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/508dff55513ec03db25765b1022b85f5d5b225c3",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news/app-2-feed-and-query?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/508dff55513ec03db25765b1022b85f5d5b225c3",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/news/app-2-feed-and-query"
+ }
+ },
+ {
+ "name": "app-3-searching",
+ "path": "news/app-3-searching",
+ "sha": "431c96c3a93e0ac988acb6349456b1b423fb6ff8",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news/app-3-searching?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/news/app-3-searching",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/431c96c3a93e0ac988acb6349456b1b423fb6ff8",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news/app-3-searching?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/431c96c3a93e0ac988acb6349456b1b423fb6ff8",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/news/app-3-searching"
+ }
+ },
+ {
+ "name": "app-5-recommendation",
+ "path": "news/app-5-recommendation",
+ "sha": "fdbc92176cf8ee10732f3f14726ab9fba41652e0",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news/app-5-recommendation?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/news/app-5-recommendation",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/fdbc92176cf8ee10732f3f14726ab9fba41652e0",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news/app-5-recommendation?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/fdbc92176cf8ee10732f3f14726ab9fba41652e0",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/news/app-5-recommendation"
+ }
+ },
+ {
+ "name": "app-6-recommendation-with-searchers",
+ "path": "news/app-6-recommendation-with-searchers",
+ "sha": "b636cb11c3c3c2f5334b04e151101c100d22c375",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news/app-6-recommendation-with-searchers?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/news/app-6-recommendation-with-searchers",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/b636cb11c3c3c2f5334b04e151101c100d22c375",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news/app-6-recommendation-with-searchers?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/b636cb11c3c3c2f5334b04e151101c100d22c375",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/news/app-6-recommendation-with-searchers"
+ }
+ },
+ {
+ "name": "app-7-parent-child",
+ "path": "news/app-7-parent-child",
+ "sha": "56760f75354c43c7cdc387758f6b68659c10087b",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news/app-7-parent-child?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/news/app-7-parent-child",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/56760f75354c43c7cdc387758f6b68659c10087b",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news/app-7-parent-child?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/56760f75354c43c7cdc387758f6b68659c10087b",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/news/app-7-parent-child"
+ }
+ },
+ {
+ "name": "bin",
+ "path": "news/bin",
+ "sha": "7c755f24e4d885d3f6677ec593e46c7d64c377f8",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news/bin?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/news/bin",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/7c755f24e4d885d3f6677ec593e46c7d64c377f8",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news/bin?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/7c755f24e4d885d3f6677ec593e46c7d64c377f8",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/news/bin"
+ }
+ },
+ {
+ "name": "doc.json",
+ "path": "news/doc.json",
+ "sha": "4f7cad1c86d48ad9b1470c19bcec0a9c136dee11",
+ "size": 72,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news/doc.json?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/blob/master/news/doc.json",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/4f7cad1c86d48ad9b1470c19bcec0a9c136dee11",
+ "download_url": "https://raw.githubusercontent.com/vespa-engine/sample-apps/master/news/doc.json",
+ "type": "file",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news/doc.json?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/4f7cad1c86d48ad9b1470c19bcec0a9c136dee11",
+ "html": "https://github.com/vespa-engine/sample-apps/blob/master/news/doc.json"
+ }
+ },
+ {
+ "name": "requirements.txt",
+ "path": "news/requirements.txt",
+ "sha": "21fe4a3bc4ed1fcc2797c8a9f4188e48fed6d4e7",
+ "size": 37,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news/requirements.txt?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/blob/master/news/requirements.txt",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/21fe4a3bc4ed1fcc2797c8a9f4188e48fed6d4e7",
+ "download_url": "https://raw.githubusercontent.com/vespa-engine/sample-apps/master/news/requirements.txt",
+ "type": "file",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news/requirements.txt?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/21fe4a3bc4ed1fcc2797c8a9f4188e48fed6d4e7",
+ "html": "https://github.com/vespa-engine/sample-apps/blob/master/news/requirements.txt"
+ }
+ },
+ {
+ "name": "src",
+ "path": "news/src",
+ "sha": "106a0eca050c215f3b6a919640d6b4449d0c0aa5",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news/src?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/news/src",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/106a0eca050c215f3b6a919640d6b4449d0c0aa5",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/news/src?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/106a0eca050c215f3b6a919640d6b4449d0c0aa5",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/news/src"
+ }
+ }
+]
diff --git a/client/go/cmd/testdata/sample-apps-operations.json b/client/go/cmd/testdata/sample-apps-operations.json
new file mode 100644
index 00000000000..9dc4fb39ddb
--- /dev/null
+++ b/client/go/cmd/testdata/sample-apps-operations.json
@@ -0,0 +1,18 @@
+[
+ {
+ "name": "multinode",
+ "path": "operations/multinode",
+ "sha": "faa2b5bf9fa6fc7314708341e2ad91211986d681",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/operations/multinode?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/operations/multinode",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/faa2b5bf9fa6fc7314708341e2ad91211986d681",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/operations/multinode?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/faa2b5bf9fa6fc7314708341e2ad91211986d681",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/operations/multinode"
+ }
+ }
+]
diff --git a/client/go/cmd/testdata/sample-apps-vespa-cloud.json b/client/go/cmd/testdata/sample-apps-vespa-cloud.json
new file mode 100644
index 00000000000..3aa932c348f
--- /dev/null
+++ b/client/go/cmd/testdata/sample-apps-vespa-cloud.json
@@ -0,0 +1,130 @@
+[
+ {
+ "name": "README.md",
+ "path": "vespa-cloud/README.md",
+ "sha": "6405553e7184306476d1e13001aa19558f925158",
+ "size": 3129,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/vespa-cloud/README.md?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/blob/master/vespa-cloud/README.md",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/6405553e7184306476d1e13001aa19558f925158",
+ "download_url": "https://raw.githubusercontent.com/vespa-engine/sample-apps/master/vespa-cloud/README.md",
+ "type": "file",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/vespa-cloud/README.md?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/blobs/6405553e7184306476d1e13001aa19558f925158",
+ "html": "https://github.com/vespa-engine/sample-apps/blob/master/vespa-cloud/README.md"
+ }
+ },
+ {
+ "name": "album-recommendation-docproc",
+ "path": "vespa-cloud/album-recommendation-docproc",
+ "sha": "e77b300ad64b1c553d066c7840cbb8f555df91cd",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/vespa-cloud/album-recommendation-docproc?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/vespa-cloud/album-recommendation-docproc",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/e77b300ad64b1c553d066c7840cbb8f555df91cd",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/vespa-cloud/album-recommendation-docproc?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/e77b300ad64b1c553d066c7840cbb8f555df91cd",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/vespa-cloud/album-recommendation-docproc"
+ }
+ },
+ {
+ "name": "album-recommendation-prod",
+ "path": "vespa-cloud/album-recommendation-prod",
+ "sha": "0944ec03009e38ff1c12be835ca6a0600e6aee93",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/vespa-cloud/album-recommendation-prod?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/vespa-cloud/album-recommendation-prod",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/0944ec03009e38ff1c12be835ca6a0600e6aee93",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/vespa-cloud/album-recommendation-prod?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/0944ec03009e38ff1c12be835ca6a0600e6aee93",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/vespa-cloud/album-recommendation-prod"
+ }
+ },
+ {
+ "name": "album-recommendation-searcher",
+ "path": "vespa-cloud/album-recommendation-searcher",
+ "sha": "fd1027d9cd51a2aac9f2220047b5a748ef75d2c1",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/vespa-cloud/album-recommendation-searcher?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/vespa-cloud/album-recommendation-searcher",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/fd1027d9cd51a2aac9f2220047b5a748ef75d2c1",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/vespa-cloud/album-recommendation-searcher?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/fd1027d9cd51a2aac9f2220047b5a748ef75d2c1",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/vespa-cloud/album-recommendation-searcher"
+ }
+ },
+ {
+ "name": "album-recommendation",
+ "path": "vespa-cloud/album-recommendation",
+ "sha": "fdb9ffd4dff104a8a603d5ce0ead1bed180f8b80",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/vespa-cloud/album-recommendation?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/vespa-cloud/album-recommendation",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/fdb9ffd4dff104a8a603d5ce0ead1bed180f8b80",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/vespa-cloud/album-recommendation?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/fdb9ffd4dff104a8a603d5ce0ead1bed180f8b80",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/vespa-cloud/album-recommendation"
+ }
+ },
+ {
+ "name": "cord-19-search",
+ "path": "vespa-cloud/cord-19-search",
+ "sha": "29a28e0e0455d2bcd5c7bcdcd3c8759455f6bc71",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/vespa-cloud/cord-19-search?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/vespa-cloud/cord-19-search",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/29a28e0e0455d2bcd5c7bcdcd3c8759455f6bc71",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/vespa-cloud/cord-19-search?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/29a28e0e0455d2bcd5c7bcdcd3c8759455f6bc71",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/vespa-cloud/cord-19-search"
+ }
+ },
+ {
+ "name": "joins",
+ "path": "vespa-cloud/joins",
+ "sha": "1f3272bfa1c4dd6cb9d26b662bf48de3c05aef04",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/vespa-cloud/joins?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/vespa-cloud/joins",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/1f3272bfa1c4dd6cb9d26b662bf48de3c05aef04",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/vespa-cloud/joins?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/1f3272bfa1c4dd6cb9d26b662bf48de3c05aef04",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/vespa-cloud/joins"
+ }
+ },
+ {
+ "name": "vespa-documentation-search",
+ "path": "vespa-cloud/vespa-documentation-search",
+ "sha": "9c46d6eb0eef9ce95688d96ef603a5143c3c46c0",
+ "size": 0,
+ "url": "https://api.github.com/repos/vespa-engine/sample-apps/contents/vespa-cloud/vespa-documentation-search?ref=master",
+ "html_url": "https://github.com/vespa-engine/sample-apps/tree/master/vespa-cloud/vespa-documentation-search",
+ "git_url": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/9c46d6eb0eef9ce95688d96ef603a5143c3c46c0",
+ "download_url": null,
+ "type": "dir",
+ "_links": {
+ "self": "https://api.github.com/repos/vespa-engine/sample-apps/contents/vespa-cloud/vespa-documentation-search?ref=master",
+ "git": "https://api.github.com/repos/vespa-engine/sample-apps/git/trees/9c46d6eb0eef9ce95688d96ef603a5143c3c46c0",
+ "html": "https://github.com/vespa-engine/sample-apps/tree/master/vespa-cloud/vespa-documentation-search"
+ }
+ }
+]
diff --git a/client/go/cmd/version.go b/client/go/cmd/version.go
new file mode 100644
index 00000000000..d2760402851
--- /dev/null
+++ b/client/go/cmd/version.go
@@ -0,0 +1,145 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package cmd
+
+import (
+ "encoding/json"
+ "log"
+ "net/http"
+ "os"
+ "os/exec"
+ "path/filepath"
+ "runtime"
+ "sort"
+ "strings"
+ "time"
+
+ "github.com/spf13/cobra"
+ "github.com/vespa-engine/vespa/client/go/build"
+ "github.com/vespa-engine/vespa/client/go/util"
+ "github.com/vespa-engine/vespa/client/go/version"
+)
+
+var skipVersionCheck bool
+
+var sp subprocess = &execSubprocess{}
+
+type subprocess interface {
+ pathOf(name string) (string, error)
+ outputOf(name string, args ...string) ([]byte, error)
+ isTerminal() bool
+}
+
+type execSubprocess struct{}
+
+func (c *execSubprocess) pathOf(name string) (string, error) { return exec.LookPath(name) }
+func (c *execSubprocess) isTerminal() bool { return isTerminal() }
+func (c *execSubprocess) outputOf(name string, args ...string) ([]byte, error) {
+ return exec.Command(name, args...).Output()
+}
+
+func init() {
+ rootCmd.AddCommand(versionCmd)
+ versionCmd.Flags().BoolVarP(&skipVersionCheck, "no-check", "n", false, "Do not check if a new version is available")
+}
+
+var versionCmd = &cobra.Command{
+ Use: "version",
+ Short: "Show current version and check for updates",
+ DisableAutoGenTag: true,
+ Args: cobra.ExactArgs(0),
+ Run: func(cmd *cobra.Command, args []string) {
+ log.Printf("vespa version %s compiled with %v on %v/%v", build.Version, runtime.Version(), runtime.GOOS, runtime.GOARCH)
+ if !skipVersionCheck && sp.isTerminal() {
+ if err := checkVersion(); err != nil {
+ fatalErr(err)
+ }
+ }
+ },
+}
+
+func checkVersion() error {
+ current, err := version.Parse(build.Version)
+ if err != nil {
+ return err
+ }
+ latest, err := latestRelease()
+ if err != nil {
+ return err
+ }
+ if !current.Less(latest.Version) {
+ return nil
+ }
+ usingHomebrew := usingHomebrew()
+ if usingHomebrew && latest.isRecent() {
+ return nil // Allow some time for new release to appear in Homebrew repo
+ }
+ log.Printf("\nNew release available: %s", color.Green(latest.Version))
+ log.Printf("https://github.com/vespa-engine/vespa/releases/tag/v%s", latest.Version)
+ if usingHomebrew {
+ log.Printf("\nUpgrade by running:\n%s", color.Cyan("brew update && brew upgrade vespa-cli"))
+ }
+ return nil
+}
+
+func latestRelease() (release, error) {
+ req, err := http.NewRequest("GET", "https://api.github.com/repos/vespa-engine/vespa/releases", nil)
+ if err != nil {
+ return release{}, err
+ }
+ response, err := util.HttpDo(req, time.Minute, "GitHub")
+ if err != nil {
+ return release{}, err
+ }
+ defer response.Body.Close()
+
+ var ghReleases []githubRelease
+ dec := json.NewDecoder(response.Body)
+ if err := dec.Decode(&ghReleases); err != nil {
+ return release{}, err
+ }
+ if len(ghReleases) == 0 {
+ return release{}, nil // No releases found
+ }
+
+ var releases []release
+ for _, r := range ghReleases {
+ v, err := version.Parse(r.TagName)
+ if err != nil {
+ return release{}, err
+ }
+ publishedAt, err := time.Parse(time.RFC3339, r.PublishedAt)
+ if err != nil {
+ return release{}, err
+ }
+ releases = append(releases, release{Version: v, PublishedAt: publishedAt})
+ }
+ sort.Slice(releases, func(i, j int) bool { return releases[i].Version.Less(releases[j].Version) })
+ return releases[len(releases)-1], nil
+}
+
+func usingHomebrew() bool {
+ selfPath, err := sp.pathOf("vespa")
+ if err != nil {
+ return false
+ }
+ brewPrefix, err := sp.outputOf("brew", "--prefix")
+ if err != nil {
+ return false
+ }
+ brewBin := filepath.Join(strings.TrimSpace(string(brewPrefix)), "bin") + string(os.PathSeparator)
+ return strings.HasPrefix(selfPath, brewBin)
+}
+
+type githubRelease struct {
+ TagName string `json:"tag_name"`
+ PublishedAt string `json:"published_at"`
+}
+
+type release struct {
+ Version version.Version
+ PublishedAt time.Time
+}
+
+func (r release) isRecent() bool {
+ return time.Now().Before(r.PublishedAt.Add(time.Hour * 24))
+}
diff --git a/client/go/cmd/version_test.go b/client/go/cmd/version_test.go
new file mode 100644
index 00000000000..039f75a6ecd
--- /dev/null
+++ b/client/go/cmd/version_test.go
@@ -0,0 +1,52 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package cmd
+
+import (
+ "fmt"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/vespa-engine/vespa/client/go/util"
+)
+
+func TestVersion(t *testing.T) {
+ c := &mockHttpClient{}
+ c.NextResponse(200, `[{"tag_name": "v1.2.3", "published_at": "2021-09-10T12:00:00Z"}]`)
+ util.ActiveHttpClient = c
+
+ sp = &mockSubprocess{}
+ out, _ := execute(command{args: []string{"version"}}, t, nil)
+ assert.Contains(t, out, "vespa version 0.0.0-devel compiled with")
+ assert.Contains(t, out, "New release available: 1.2.3\nhttps://github.com/vespa-engine/vespa/releases/tag/v1.2.3")
+}
+
+func TestVersionCheckHomebrew(t *testing.T) {
+ c := &mockHttpClient{}
+ c.NextResponse(200, `[{"tag_name": "v1.2.3", "published_at": "2021-09-10T12:00:00Z"}]`)
+ util.ActiveHttpClient = c
+
+ sp = &mockSubprocess{programPath: "/usr/local/bin/vespa", output: "/usr/local"}
+ out, _ := execute(command{args: []string{"version"}}, t, nil)
+ assert.Contains(t, out, "vespa version 0.0.0-devel compiled with")
+ assert.Contains(t, out, "New release available: 1.2.3\n"+
+ "https://github.com/vespa-engine/vespa/releases/tag/v1.2.3\n"+
+ "\nUpgrade by running:\nbrew update && brew upgrade vespa-cli\n")
+}
+
+type mockSubprocess struct {
+ programPath string
+ output string
+}
+
+func (c *mockSubprocess) pathOf(name string) (string, error) {
+ if c.programPath == "" {
+ return "", fmt.Errorf("no program path set in this mock")
+ }
+ return c.programPath, nil
+}
+
+func (c *mockSubprocess) outputOf(name string, args ...string) ([]byte, error) {
+ return []byte(c.output), nil
+}
+
+func (c *mockSubprocess) isTerminal() bool { return true }
diff --git a/client/go/cmd/vespa/main.go b/client/go/cmd/vespa/main.go
new file mode 100644
index 00000000000..5fdf64f5ab4
--- /dev/null
+++ b/client/go/cmd/vespa/main.go
@@ -0,0 +1,13 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Cobra commands main file
+// Author: bratseth
+
+package main
+
+import (
+ "github.com/vespa-engine/vespa/client/go/cmd"
+)
+
+func main() {
+ cmd.Execute()
+}
diff --git a/client/go/curl/curl.go b/client/go/curl/curl.go
new file mode 100644
index 00000000000..44c3a0ad2a9
--- /dev/null
+++ b/client/go/curl/curl.go
@@ -0,0 +1,104 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package curl
+
+import (
+ "io"
+ "net/url"
+ "os/exec"
+ "runtime"
+
+ "github.com/kballard/go-shellquote"
+)
+
+type header struct {
+ key string
+ value string
+}
+
+type Command struct {
+ Path string
+ Method string
+ PrivateKey string
+ Certificate string
+ BodyFile string
+ url *url.URL
+ headers []header
+ rawArgs []string
+}
+
+func (c *Command) Args() []string {
+ var args []string
+ if c.PrivateKey != "" {
+ args = append(args, "--key", c.PrivateKey)
+ }
+ if c.Certificate != "" {
+ args = append(args, "--cert", c.Certificate)
+ }
+ if c.Method != "" {
+ args = append(args, "-X", c.Method)
+ }
+ for _, header := range c.headers {
+ args = append(args, "-H", header.key+": "+header.value)
+ }
+ if c.BodyFile != "" {
+ args = append(args, "--data-binary", "@"+c.BodyFile)
+ }
+ args = append(args, c.rawArgs...)
+ args = append(args, c.url.String())
+ return args
+}
+
+func (c *Command) String() string {
+ args := []string{c.Path}
+ args = append(args, c.Args()...)
+ return shellquote.Join(args...)
+}
+
+func (c *Command) Header(key, value string) {
+ c.headers = append(c.headers, header{key: key, value: value})
+}
+
+func (c *Command) Param(key, value string) {
+ query := c.url.Query()
+ query.Set(key, value)
+ c.url.RawQuery = query.Encode()
+}
+
+func (c *Command) Run(stdout, stderr io.Writer) error {
+ cmd := exec.Command(c.Path, c.Args()...)
+ cmd.Stdout = stdout
+ cmd.Stderr = stderr
+ if err := cmd.Start(); err != nil {
+ return err
+ }
+ return cmd.Wait()
+}
+
+func Post(url string) (*Command, error) { return curl("POST", url) }
+
+func Get(url string) (*Command, error) { return curl("", url) }
+
+func RawArgs(url string, args ...string) (*Command, error) {
+ c, err := curl("", url)
+ if err != nil {
+ return nil, err
+ }
+ c.rawArgs = args
+ return c, nil
+}
+
+func curl(method, rawurl string) (*Command, error) {
+ path := "curl"
+ if runtime.GOOS == "windows" {
+ path = "curl.exe"
+ }
+ realURL, err := url.Parse(rawurl)
+ if err != nil {
+ return nil, err
+ }
+ return &Command{
+ Path: path,
+ Method: method,
+ url: realURL,
+ }, nil
+}
diff --git a/client/go/curl/curl_test.go b/client/go/curl/curl_test.go
new file mode 100644
index 00000000000..90bf274f7a2
--- /dev/null
+++ b/client/go/curl/curl_test.go
@@ -0,0 +1,45 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package curl
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestPost(t *testing.T) {
+ c, err := Post("https://example.com")
+ if err != nil {
+ t.Fatal(err)
+ }
+ c.PrivateKey = "key.pem"
+ c.Certificate = "cert.pem"
+ c.BodyFile = "file.json"
+ c.Header("Content-Type", "application/json")
+
+ assert.Equal(t, "curl --key key.pem --cert cert.pem -X POST -H 'Content-Type: application/json' --data-binary @file.json https://example.com", c.String())
+}
+
+func TestGet(t *testing.T) {
+ c, err := Get("https://example.com")
+ if err != nil {
+ t.Fatal(err)
+ }
+ c.PrivateKey = "key.pem"
+ c.Certificate = "cert.pem"
+ c.Param("yql", "select * from sources * where title contains 'foo';")
+ c.Param("hits", "5")
+
+ assert.Equal(t, `curl --key key.pem --cert cert.pem https://example.com\?hits=5\&yql=select+%2A+from+sources+%2A+where+title+contains+%27foo%27%3B`, c.String())
+}
+
+func TestRawArgs(t *testing.T) {
+ c, err := RawArgs("https://example.com/search", "-v", "-m", "10", "-H", "foo: bar")
+ if err != nil {
+ t.Fatal(err)
+ }
+ c.PrivateKey = "key.pem"
+ c.Certificate = "cert.pem"
+
+ assert.Equal(t, `curl --key key.pem --cert cert.pem -v -m 10 -H 'foo: bar' https://example.com/search`, c.String())
+}
diff --git a/client/go/go.mod b/client/go/go.mod
new file mode 100644
index 00000000000..27faff3fd0b
--- /dev/null
+++ b/client/go/go.mod
@@ -0,0 +1,14 @@
+module github.com/vespa-engine/vespa/client/go
+
+go 1.15
+
+require (
+ github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
+ github.com/logrusorgru/aurora/v3 v3.0.0
+ github.com/mattn/go-colorable v0.0.9
+ github.com/mattn/go-isatty v0.0.3
+ github.com/spf13/cobra v1.2.1
+ github.com/spf13/pflag v1.0.5
+ github.com/spf13/viper v1.8.1
+ github.com/stretchr/testify v1.7.0
+)
diff --git a/client/go/go.sum b/client/go/go.sum
new file mode 100644
index 00000000000..0462d0575a1
--- /dev/null
+++ b/client/go/go.sum
@@ -0,0 +1,600 @@
+cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
+cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
+cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
+cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
+cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
+cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
+cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
+cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
+cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
+cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
+cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
+cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
+cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
+cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=
+cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=
+cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=
+cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=
+cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=
+cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
+cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
+cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
+cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
+cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
+cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
+cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
+cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
+cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk=
+cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
+cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
+cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
+cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
+cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
+cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
+cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
+cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
+cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
+dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
+github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
+github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
+github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
+github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
+github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
+github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
+github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM=
+github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
+github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
+github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
+github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
+github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
+github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
+github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
+github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
+github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
+github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM=
+github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
+github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=
+github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
+github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
+github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
+github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
+github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
+github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
+github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
+github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
+github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
+github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
+github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
+github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
+github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
+github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
+github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
+github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
+github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
+github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
+github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
+github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
+github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
+github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
+github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
+github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
+github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
+github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
+github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
+github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
+github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
+github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
+github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
+github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
+github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
+github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
+github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q=
+github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
+github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
+github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
+github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
+github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
+github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
+github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
+github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=
+github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=
+github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
+github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
+github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
+github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
+github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
+github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
+github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
+github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
+github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=
+github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
+github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
+github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
+github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
+github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
+github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
+github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
+github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
+github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
+github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
+github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
+github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
+github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
+github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/logrusorgru/aurora/v3 v3.0.0 h1:R6zcoZZbvVcGMvDCKo45A9U/lzYyzl5NfYIvznmDfE4=
+github.com/logrusorgru/aurora/v3 v3.0.0/go.mod h1:vsR12bk5grlLvLXAYrBsb5Oc/N+LxAlxggSjiwMnCUc=
+github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls=
+github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
+github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4=
+github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
+github.com/mattn/go-isatty v0.0.3 h1:ns/ykhmWi7G9O+8a448SecJU3nSMBXJfqQkl0upE1jI=
+github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
+github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
+github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
+github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
+github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
+github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
+github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
+github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
+github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
+github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag=
+github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
+github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ=
+github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
+github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
+github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
+github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
+github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
+github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
+github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
+github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
+github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
+github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
+github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
+github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
+github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
+github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY=
+github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
+github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng=
+github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
+github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw=
+github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk=
+github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
+github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
+github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
+github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/spf13/viper v1.8.1 h1:Kq1fyeebqsBfbjZj4EL7gj2IO0mMaiyjYUWcUsl2O44=
+github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=
+github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
+github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=
+go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
+go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ=
+go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
+go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
+go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
+go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
+go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
+go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
+go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
+golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
+golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
+golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
+golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
+golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
+golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
+golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
+golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
+golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
+golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
+golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
+golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
+golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
+golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
+golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
+golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
+golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210510120138-977fb7262007 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE=
+golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ=
+golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
+golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
+golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
+golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
+golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
+golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
+golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
+google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
+google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
+google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
+google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
+google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
+google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
+google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
+google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
+google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=
+google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
+google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=
+google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=
+google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8=
+google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
+google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
+google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
+google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
+google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
+google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
+google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
+google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
+google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
+google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
+google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
+google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
+google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
+google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
+google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
+google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
+google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
+google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
+google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
+google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
+google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
+google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
+google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
+google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
+google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU=
+gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
+honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
+honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
+rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
+rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
+rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
diff --git a/client/go/util/http.go b/client/go/util/http.go
new file mode 100644
index 00000000000..acd9bb4f7ec
--- /dev/null
+++ b/client/go/util/http.go
@@ -0,0 +1,67 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// A HTTP wrapper which handles some errors and provides a way to replace the HTTP client by a mock.
+// Author: bratseth
+
+package util
+
+import (
+ "crypto/tls"
+ "fmt"
+ "net/http"
+ "net/url"
+ "time"
+
+ "github.com/vespa-engine/vespa/client/go/build"
+)
+
+// Set this to a mock HttpClient instead to unit test HTTP requests
+var ActiveHttpClient = CreateClient(time.Second * 10)
+
+type HttpClient interface {
+ Do(request *http.Request, timeout time.Duration) (response *http.Response, error error)
+ UseCertificate(certificate tls.Certificate)
+}
+
+type defaultHttpClient struct {
+ client *http.Client
+}
+
+func (c *defaultHttpClient) Do(request *http.Request, timeout time.Duration) (response *http.Response, error error) {
+ if c.client.Timeout != timeout { // Set wanted timeout
+ c.client.Timeout = timeout
+ }
+ return c.client.Do(request)
+}
+
+func (c *defaultHttpClient) UseCertificate(certificate tls.Certificate) {
+ c.client.Transport = &http.Transport{TLSClientConfig: &tls.Config{
+ Certificates: []tls.Certificate{certificate},
+ }}
+}
+
+func CreateClient(timeout time.Duration) HttpClient {
+ return &defaultHttpClient{
+ client: &http.Client{Timeout: timeout},
+ }
+}
+
+// Convenience function for doing a HTTP GET
+func HttpGet(host string, path string, description string) (*http.Response, error) {
+ url, err := url.Parse(host + path)
+ if err != nil {
+ return nil, fmt.Errorf("Invalid target URL: %s: %w", host+path, err)
+ }
+ return HttpDo(&http.Request{URL: url}, time.Second*10, description)
+}
+
+func HttpDo(request *http.Request, timeout time.Duration, description string) (*http.Response, error) {
+ if request.Header == nil {
+ request.Header = make(http.Header)
+ }
+ request.Header.Set("User-Agent", fmt.Sprintf("Vespa CLI/%s", build.Version))
+ response, err := ActiveHttpClient.Do(request, timeout)
+ if err != nil {
+ return nil, err
+ }
+ return response, nil
+}
diff --git a/client/go/util/http_test.go b/client/go/util/http_test.go
new file mode 100644
index 00000000000..0a0de1fdd4c
--- /dev/null
+++ b/client/go/util/http_test.go
@@ -0,0 +1,51 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Basic testing of our HTTP client wrapper
+// Author: bratseth
+
+package util
+
+import (
+ "bytes"
+ "crypto/tls"
+ "io/ioutil"
+ "net/http"
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/assert"
+)
+
+type mockHttpClient struct{}
+
+func (c mockHttpClient) Do(request *http.Request, timeout time.Duration) (response *http.Response, error error) {
+ var status int
+ var body string
+ if request.URL.String() == "http://host/okpath" {
+ status = 200
+ body = "OK body"
+ } else {
+ status = 500
+ body = "Unexpected url body"
+ }
+
+ return &http.Response{
+ StatusCode: status,
+ Header: make(http.Header),
+ Body: ioutil.NopCloser(bytes.NewBufferString(body)),
+ },
+ nil
+}
+
+func (c mockHttpClient) UseCertificate(certificate tls.Certificate) {}
+
+func TestHttpRequest(t *testing.T) {
+ ActiveHttpClient = mockHttpClient{}
+
+ response, err := HttpGet("http://host", "/okpath", "description")
+ assert.Nil(t, err)
+ assert.Equal(t, 200, response.StatusCode)
+
+ response, err = HttpGet("http://host", "/otherpath", "description")
+ assert.Nil(t, err)
+ assert.Equal(t, 500, response.StatusCode)
+}
diff --git a/client/go/util/io.go b/client/go/util/io.go
new file mode 100644
index 00000000000..23bfec84879
--- /dev/null
+++ b/client/go/util/io.go
@@ -0,0 +1,68 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// File utilities.
+// Author: bratseth
+
+package util
+
+import (
+ "bytes"
+ "encoding/json"
+ "errors"
+ "io"
+ "io/ioutil"
+ "os"
+ "strings"
+)
+
+// Returns true if the given path exists
+func PathExists(path string) bool {
+ _, err := os.Stat(path)
+ return !errors.Is(err, os.ErrNotExist)
+}
+
+// Returns true is the given path points to an existing directory
+func IsDirectory(path string) bool {
+ info, err := os.Stat(path)
+ return !errors.Is(err, os.ErrNotExist) && info.IsDir()
+}
+
+// Returns the content of a reader as a string
+func ReaderToString(reader io.Reader) string {
+ var buffer strings.Builder
+ io.Copy(&buffer, reader)
+ return buffer.String()
+}
+
+// Returns the content of a reader as a byte array
+func ReaderToBytes(reader io.Reader) []byte {
+ var buffer bytes.Buffer
+ buffer.ReadFrom(reader)
+ return buffer.Bytes()
+}
+
+// Returns the contents of reader as indented JSON
+func ReaderToJSON(reader io.Reader) string {
+ bodyBytes, _ := ioutil.ReadAll(reader)
+ var prettyJSON bytes.Buffer
+ parseError := json.Indent(&prettyJSON, bodyBytes, "", " ")
+ if parseError != nil { // Not JSON: Print plainly
+ return string(bodyBytes)
+ }
+ return prettyJSON.String()
+}
+
+// AtomicWriteFile atomically writes data to filename.
+func AtomicWriteFile(filename string, data []byte) error {
+ tmpFile, err := ioutil.TempFile("", "vespa")
+ if err != nil {
+ return err
+ }
+ defer os.Remove(tmpFile.Name())
+ if _, err := tmpFile.Write(data); err != nil {
+ return err
+ }
+ if err := tmpFile.Close(); err != nil {
+ return err
+ }
+ return os.Rename(tmpFile.Name(), filename)
+}
diff --git a/client/go/util/operation_result.go b/client/go/util/operation_result.go
new file mode 100644
index 00000000000..5e79f727d4e
--- /dev/null
+++ b/client/go/util/operation_result.go
@@ -0,0 +1,32 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// A struct containing the result of an operation
+// Author: bratseth
+
+package util
+
+type OperationResult struct {
+ Success bool
+ Message string // Mandatory message
+ Detail string // Optional detail message
+ Payload string // Optional payload - may be present whether or not the operation was success
+}
+
+func Success(message string) OperationResult {
+ return OperationResult{Success: true, Message: message}
+}
+
+func SuccessWithPayload(message string, payload string) OperationResult {
+ return OperationResult{Success: true, Message: message, Payload: payload}
+}
+
+func Failure(message string) OperationResult {
+ return OperationResult{Success: false, Message: message}
+}
+
+func FailureWithPayload(message string, payload string) OperationResult {
+ return OperationResult{Success: false, Message: message, Payload: payload}
+}
+
+func FailureWithDetail(message string, detail string) OperationResult {
+ return OperationResult{Success: false, Message: message, Detail: detail}
+}
diff --git a/client/go/version/version.go b/client/go/version/version.go
new file mode 100644
index 00000000000..00e26d25135
--- /dev/null
+++ b/client/go/version/version.go
@@ -0,0 +1,93 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package version
+
+import (
+ "fmt"
+ "strconv"
+ "strings"
+)
+
+// Version represents a semantic version number.
+type Version struct {
+ Major int
+ Minor int
+ Patch int
+ Label string
+}
+
+func (v Version) String() string {
+ var sb strings.Builder
+ sb.WriteString(strconv.Itoa(v.Major))
+ sb.WriteRune('.')
+ sb.WriteString(strconv.Itoa(v.Minor))
+ sb.WriteRune('.')
+ sb.WriteString(strconv.Itoa(v.Patch))
+ if v.Label != "" {
+ sb.WriteRune('-')
+ sb.WriteString(v.Label)
+ }
+ return sb.String()
+}
+
+// Compare returns a positive integer if v1 is greater than v2, a negative integer if v1 is less than v2 and zero if they
+// are equal.
+func (v1 Version) Compare(v2 Version) int {
+ result := v1.Major - v2.Major
+ if result != 0 {
+ return result
+ }
+ result = v1.Minor - v2.Minor
+ if result != 0 {
+ return result
+ }
+ result = v1.Patch - v2.Patch
+ if result != 0 {
+ return result
+ }
+ // Version without label always sorts first
+ if v1.Label == "" && v2.Label != "" {
+ return 1
+ }
+ if v1.Label != "" && v2.Label == "" {
+ return -1
+ }
+ if v1.Label > v2.Label {
+ return 1
+ }
+ if v1.Label < v2.Label {
+ return -1
+ }
+ return 0
+}
+
+// Less returns true if v1 is lower than v2.
+func (v1 Version) Less(v2 Version) bool { return v1.Compare(v2) < 0 }
+
+// Parse parses a semantic version number from string s.
+func Parse(s string) (Version, error) {
+ if len(s) > 0 && s[0] == 'v' {
+ s = s[1:] // Trim v prefix
+ }
+ parts := strings.Split(s, ".")
+ if len(parts) != 3 {
+ return Version{}, fmt.Errorf("invalid version number: %s", s)
+ }
+ major, err := strconv.Atoi(parts[0])
+ if err != nil {
+ return Version{}, fmt.Errorf("invalid major version: %s", parts[0])
+ }
+ minor, err := strconv.Atoi(parts[1])
+ if err != nil {
+ return Version{}, fmt.Errorf("invalid minor version: %s", parts[1])
+ }
+ parts2 := strings.SplitN(parts[2], "-", 2)
+ patch, err := strconv.Atoi(parts2[0])
+ if err != nil {
+ return Version{}, fmt.Errorf("invalid patch version: %s", parts[2])
+ }
+ v := Version{Major: major, Minor: minor, Patch: patch}
+ if len(parts2) > 1 {
+ v.Label = parts2[1]
+ }
+ return v, nil
+}
diff --git a/client/go/version/version_test.go b/client/go/version/version_test.go
new file mode 100644
index 00000000000..759b1c1d0c1
--- /dev/null
+++ b/client/go/version/version_test.go
@@ -0,0 +1,67 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package version
+
+import (
+ "fmt"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestParse(t *testing.T) {
+ _, err := Parse("foo")
+ assert.NotNil(t, err)
+
+ v, err := Parse("1.2.3")
+ assert.Nil(t, err)
+ assert.Equal(t, "1.2.3", v.String())
+
+ v, err = Parse("v4.5.6")
+ assert.Nil(t, err)
+ assert.Equal(t, "4.5.6", v.String())
+
+ v, err = Parse("1.2.3-foo")
+ assert.Nil(t, err)
+ assert.Equal(t, "1.2.3-foo", v.String())
+}
+
+func TestCompare(t *testing.T) {
+ assertComparison(t, "1.2.3", '>', "1.0.0")
+ assertComparison(t, "1.0.0", '<', "1.2.3")
+
+ assertComparison(t, "1.2.3", '=', "1.2.3")
+ assertComparison(t, "1.2.3", '>', "1.2.0")
+ assertComparison(t, "1.2.0", '<', "1.2.3")
+ assertComparison(t, "1.2.3", '>', "1.2.0")
+ assertComparison(t, "1.0.3", '<', "1.2.3")
+
+ assertComparison(t, "1.2.3", '>', "1.1.4")
+ assertComparison(t, "1.1.4", '<', "1.2.3")
+
+ assertComparison(t, "2.0.0", '>', "1.2.3")
+ assertComparison(t, "1.2.3", '<', "2.0.0")
+
+ assertComparison(t, "1.2.3-alpha1", '<', "1.2.3")
+ assertComparison(t, "1.2.3", '>', "1.2.3-alpha1")
+ assertComparison(t, "1.2.3-alpha1", '=', "1.2.3-alpha1")
+ assertComparison(t, "1.2.3-alpha1", '<', "1.2.3-alpha2")
+ assertComparison(t, "1.2.3-alpha2", '>', "1.2.3-alpha1")
+}
+
+func assertComparison(t *testing.T, s1 string, cmp rune, s2 string) {
+ v1, err := Parse(s1)
+ assert.Nil(t, err)
+ v2, err := Parse(s2)
+ assert.Nil(t, err)
+ result := v1.Compare(v2)
+ switch cmp {
+ case '<':
+ assert.True(t, result < 0, fmt.Sprintf("%s is less than %s", v1, v2))
+ case '>':
+ assert.True(t, result > 0, fmt.Sprintf("%s is greater than %s", v1, v2))
+ case '=':
+ assert.True(t, result == 0, fmt.Sprintf("%s is equal to %s", v1, v2))
+ default:
+ t.Fatal("invalid comparator: %r", cmp)
+ }
+}
diff --git a/client/go/vespa/crypto.go b/client/go/vespa/crypto.go
new file mode 100644
index 00000000000..25d3a937f4b
--- /dev/null
+++ b/client/go/vespa/crypto.go
@@ -0,0 +1,217 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package vespa
+
+import (
+ "bytes"
+ "crypto/ecdsa"
+ "crypto/elliptic"
+ "crypto/md5"
+ "crypto/rand"
+ "crypto/sha256"
+ "crypto/x509"
+ "crypto/x509/pkix"
+ "encoding/base64"
+ "encoding/hex"
+ "encoding/pem"
+ "fmt"
+ "io"
+ "io/ioutil"
+ "math/big"
+ "net/http"
+ "strings"
+ "time"
+
+ "github.com/vespa-engine/vespa/client/go/util"
+)
+
+const (
+ defaultCommonName = "cloud.vespa.example"
+ certificateExpiry = 3650 * 24 * time.Hour // Approximately 10 years
+)
+
+// PemKeyPair represents a PEM-encoded private key and X509 certificate.
+type PemKeyPair struct {
+ Certificate []byte
+ PrivateKey []byte
+}
+
+// WriteCertificateFile writes the certificate contained in this key pair to certificateFile.
+func (kp *PemKeyPair) WriteCertificateFile(certificateFile string, overwrite bool) error {
+ if util.PathExists(certificateFile) && !overwrite {
+ return fmt.Errorf("cannot overwrite existing file: %s", certificateFile)
+ }
+ return util.AtomicWriteFile(certificateFile, kp.Certificate)
+}
+
+// WritePrivateKeyFile writes the private key contained in this key pair to privateKeyFile.
+func (kp *PemKeyPair) WritePrivateKeyFile(privateKeyFile string, overwrite bool) error {
+ if util.PathExists(privateKeyFile) && !overwrite {
+ return fmt.Errorf("cannot overwrite existing file: %s", privateKeyFile)
+ }
+ return util.AtomicWriteFile(privateKeyFile, kp.PrivateKey)
+}
+
+// CreateKeyPair creates a key pair containing a private key and self-signed X509 certificate.
+func CreateKeyPair() (PemKeyPair, error) {
+ privateKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
+ if err != nil {
+ return PemKeyPair{}, fmt.Errorf("failed to generate private key: %w", err)
+ }
+ serialNumber, err := randomSerialNumber()
+ if err != nil {
+ return PemKeyPair{}, fmt.Errorf("failed to create serial number: %w", err)
+ }
+ notBefore := time.Now()
+ notAfter := notBefore.Add(certificateExpiry)
+ template := x509.Certificate{
+ SerialNumber: serialNumber,
+ Subject: pkix.Name{CommonName: defaultCommonName},
+ NotBefore: notBefore,
+ NotAfter: notAfter,
+ }
+ certificateDER, err := x509.CreateCertificate(rand.Reader, &template, &template, &privateKey.PublicKey, privateKey)
+ if err != nil {
+ return PemKeyPair{}, err
+ }
+ privateKeyDER, err := x509.MarshalPKCS8PrivateKey(privateKey)
+ if err != nil {
+ return PemKeyPair{}, err
+ }
+ pemPrivateKey := pem.EncodeToMemory(&pem.Block{Type: "PRIVATE KEY", Bytes: privateKeyDER})
+ pemCertificate := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: certificateDER})
+ return PemKeyPair{Certificate: pemCertificate, PrivateKey: pemPrivateKey}, nil
+}
+
+// CreateAPIKey creates a EC private key encoded as PEM
+func CreateAPIKey() ([]byte, error) {
+ privateKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
+ if err != nil {
+ return nil, fmt.Errorf("failed to generate private key: %w", err)
+ }
+ privateKeyDER, err := x509.MarshalECPrivateKey(privateKey)
+ if err != nil {
+ return nil, err
+ }
+ return pem.EncodeToMemory(&pem.Block{Type: "EC PRIVATE KEY", Bytes: privateKeyDER}), nil
+}
+
+type RequestSigner struct {
+ now func() time.Time
+ rnd io.Reader
+ KeyID string
+ PemPrivateKey []byte
+}
+
+// NewRequestSigner creates a new signer using the EC pemPrivateKey. keyID names the key used to sign requests.
+func NewRequestSigner(keyID string, pemPrivateKey []byte) *RequestSigner {
+ return &RequestSigner{
+ now: time.Now,
+ rnd: rand.Reader,
+ KeyID: keyID,
+ PemPrivateKey: pemPrivateKey,
+ }
+}
+
+// SignRequest signs the given HTTP request using the private key in rs
+func (rs *RequestSigner) SignRequest(request *http.Request) error {
+ timestamp := rs.now().UTC().Format(time.RFC3339)
+ contentHash, body, err := contentHash(request.Body)
+ if err != nil {
+ return err
+ }
+ privateKey, err := ECPrivateKeyFrom(rs.PemPrivateKey)
+ if err != nil {
+ return err
+ }
+ pemPublicKey, err := PEMPublicKeyFrom(privateKey)
+ if err != nil {
+ return err
+ }
+ base64PemPublicKey := base64.StdEncoding.EncodeToString(pemPublicKey)
+ signature, err := rs.hashAndSign(privateKey, request, timestamp, contentHash)
+ if err != nil {
+ return err
+ }
+ base64Signature := base64.StdEncoding.EncodeToString(signature)
+ request.Body = ioutil.NopCloser(body)
+ if request.Header == nil {
+ request.Header = make(http.Header)
+ }
+ request.Header.Set("X-Timestamp", timestamp)
+ request.Header.Set("X-Content-Hash", contentHash)
+ request.Header.Set("X-Key-Id", rs.KeyID)
+ request.Header.Set("X-Key", base64PemPublicKey)
+ request.Header.Set("X-Authorization", base64Signature)
+ return nil
+}
+
+func (rs *RequestSigner) hashAndSign(privateKey *ecdsa.PrivateKey, request *http.Request, timestamp, contentHash string) ([]byte, error) {
+ msg := []byte(request.Method + "\n" + request.URL.String() + "\n" + timestamp + "\n" + contentHash)
+ hasher := sha256.New()
+ hasher.Write(msg)
+ hash := hasher.Sum(nil)
+ return ecdsa.SignASN1(rs.rnd, privateKey, hash)
+}
+
+// ECPrivateKeyFrom reads an EC private key (in raw or PKCS8 format) from the PEM-encoded pemPrivateKey.
+func ECPrivateKeyFrom(pemPrivateKey []byte) (*ecdsa.PrivateKey, error) {
+ privateKeyBlock, _ := pem.Decode(pemPrivateKey)
+ if privateKeyBlock == nil {
+ return nil, fmt.Errorf("invalid pem private key")
+ }
+ if privateKeyBlock.Type == "EC PRIVATE KEY" {
+ return x509.ParseECPrivateKey(privateKeyBlock.Bytes) // Raw EC private key
+ }
+ privateKey, err := x509.ParsePKCS8PrivateKey(privateKeyBlock.Bytes) // Try PKCS8 format
+ if err != nil {
+ return nil, err
+ }
+ ecKey, ok := privateKey.(*ecdsa.PrivateKey)
+ if !ok {
+ return nil, fmt.Errorf("invalid private key type: %T", ecKey)
+ }
+ return ecKey, nil
+}
+
+// PEMPublicKeyFrom extracts the public key from privateKey encoded as PEM.
+func PEMPublicKeyFrom(privateKey *ecdsa.PrivateKey) ([]byte, error) {
+ publicKeyDER, err := x509.MarshalPKIXPublicKey(privateKey.Public())
+ if err != nil {
+ return nil, err
+ }
+ return pem.EncodeToMemory(&pem.Block{Type: "PUBLIC KEY", Bytes: publicKeyDER}), nil
+}
+
+// FingerprintMD5 returns a MD5 fingerprint of publicKey.
+func FingerprintMD5(pemPublicKey []byte) (string, error) {
+ publicKeyDER, _ := pem.Decode(pemPublicKey)
+ if publicKeyDER == nil {
+ return "", fmt.Errorf("invalid pem data")
+ }
+ md5sum := md5.Sum(publicKeyDER.Bytes)
+ hexDigits := make([]string, len(md5sum))
+ for i, c := range md5sum {
+ hexDigits[i] = hex.EncodeToString([]byte{c})
+ }
+ return strings.Join(hexDigits, ":"), nil
+
+}
+
+func contentHash(r io.Reader) (string, io.Reader, error) {
+ if r == nil {
+ r = strings.NewReader("") // Request without body
+ }
+ var copy bytes.Buffer
+ teeReader := io.TeeReader(r, &copy) // Copy reader contents while we hash it
+ hasher := sha256.New()
+ if _, err := io.Copy(hasher, teeReader); err != nil {
+ return "", nil, err
+ }
+ hashSum := hasher.Sum(nil)
+ return base64.StdEncoding.EncodeToString(hashSum), &copy, nil
+}
+
+func randomSerialNumber() (*big.Int, error) {
+ serialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128)
+ return rand.Int(rand.Reader, serialNumberLimit)
+}
diff --git a/client/go/vespa/crypto_test.go b/client/go/vespa/crypto_test.go
new file mode 100644
index 00000000000..89d50d15d70
--- /dev/null
+++ b/client/go/vespa/crypto_test.go
@@ -0,0 +1,92 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package vespa
+
+import (
+ "encoding/base64"
+ "math/rand"
+ "net/http"
+ "strings"
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestCreateKeyPair(t *testing.T) {
+ kp, err := CreateKeyPair()
+ assert.Nil(t, err)
+ assert.NotEmpty(t, kp.Certificate)
+ assert.NotEmpty(t, kp.PrivateKey)
+}
+
+func TestSignRequest(t *testing.T) {
+ fixedTime := time.Unix(0, 0)
+ rnd := rand.New(rand.NewSource(0)) // Fixed seed for testing purposes
+ privateKey, err := CreateAPIKey()
+ if err != nil {
+ t.Fatal(err)
+ }
+ rs := RequestSigner{
+ now: func() time.Time { return fixedTime },
+ rnd: rnd,
+ KeyID: "my-key",
+ PemPrivateKey: []byte(privateKey),
+ }
+ req, err := http.NewRequest("POST", "https://example.com", strings.NewReader("body"))
+ if err != nil {
+ assert.Nil(t, err)
+ }
+
+ if err := rs.SignRequest(req); err != nil {
+ assert.Nil(t, err)
+ }
+
+ assert.Equal(t, "1970-01-01T00:00:00Z", req.Header.Get("X-Timestamp"))
+ assert.Equal(t, "Iw2DWNyOiJC0xY3utikS7i8gNXrpKlzIYbmOaP4xrLU=", req.Header.Get("X-Content-Hash"))
+ assert.Equal(t, "my-key", req.Header.Get("X-Key-Id"))
+ key := req.Header.Get("X-Key")
+ assert.NotEmpty(t, key)
+ _, err = base64.StdEncoding.DecodeString(key)
+ assert.Nil(t, err)
+ auth := req.Header.Get("X-Authorization")
+ assert.NotEmpty(t, auth)
+ _, err = base64.StdEncoding.DecodeString(auth)
+ assert.Nil(t, err)
+}
+
+func TestFingerprintMD5(t *testing.T) {
+ pemData := []byte(`-----BEGIN PUBLIC KEY-----
+MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEObBhkEO6w1YwLXU441keCDGKe+f8
+lu+CDhkxu4ZwLbwQtKBlNF5F7TXuTapUwcTErVgqrHqogrQUzthqrhbNfg==
+-----END PUBLIC KEY-----`)
+ fp, err := FingerprintMD5(pemData)
+ if err != nil {
+ t.Fatal(err)
+ }
+ assert.Equal(t, "c5:26:6a:11:e2:b5:74:f3:73:66:9d:80:2e:fd:b7:96", fp)
+}
+
+func TestECPrivateKeyFrom(t *testing.T) {
+ rawECKey := `-----BEGIN EC PRIVATE KEY-----
+MHcCAQEEICgU7xtZvAyxvbmJn9pm8jOBUgNfM8rT7aDvvk7nyEUUoAoGCCqGSM49
+AwEHoUQDQgAEq2kSwXAmTR9AkocfAvxi8Y64cflaGKef9Ub2m3oa8cEvRPYgazrj
+THpg65DWF0Ui8d9ga2VkjqCz2zp7Cm8MXw==
+-----END EC PRIVATE KEY-----`
+
+ k1, err := ECPrivateKeyFrom([]byte(rawECKey))
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ pkcs8ECKey := `-----BEGIN PRIVATE KEY-----
+MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgKBTvG1m8DLG9uYmf
+2mbyM4FSA18zytPtoO++TufIRRShRANCAASraRLBcCZNH0CShx8C/GLxjrhx+VoY
+p5/1RvabehrxwS9E9iBrOuNMemDrkNYXRSLx32BrZWSOoLPbOnsKbwxf
+-----END PRIVATE KEY-----`
+ k2, err := ECPrivateKeyFrom([]byte(pkcs8ECKey))
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ assert.True(t, k1.Equal(k2))
+}
diff --git a/client/go/vespa/deploy.go b/client/go/vespa/deploy.go
new file mode 100644
index 00000000000..3718c7d813a
--- /dev/null
+++ b/client/go/vespa/deploy.go
@@ -0,0 +1,473 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// vespa deploy API
+// Author: bratseth
+
+package vespa
+
+import (
+ "archive/zip"
+ "bytes"
+ "encoding/json"
+ "errors"
+ "fmt"
+ "io"
+ "io/ioutil"
+ "mime/multipart"
+ "net/http"
+ "net/url"
+ "os"
+ "path/filepath"
+ "strconv"
+ "strings"
+ "time"
+
+ "github.com/vespa-engine/vespa/client/go/util"
+)
+
+var DefaultApplication = ApplicationID{Tenant: "default", Application: "application", Instance: "default"}
+
+type ApplicationID struct {
+ Tenant string
+ Application string
+ Instance string
+}
+
+type ZoneID struct {
+ Environment string
+ Region string
+}
+
+type Deployment struct {
+ Application ApplicationID
+ Zone ZoneID
+}
+
+type DeploymentOpts struct {
+ ApplicationPackage ApplicationPackage
+ Target Target
+ Deployment Deployment
+ APIKey []byte
+}
+
+type ApplicationPackage struct {
+ Path string
+ TestPath string
+}
+
+func (a ApplicationID) String() string {
+ return fmt.Sprintf("%s.%s.%s", a.Tenant, a.Application, a.Instance)
+}
+
+func (a ApplicationID) SerializedForm() string {
+ return fmt.Sprintf("%s:%s:%s", a.Tenant, a.Application, a.Instance)
+}
+
+func (d Deployment) String() string {
+ return fmt.Sprintf("deployment of %s in %s", d.Application, d.Zone)
+}
+
+func (d DeploymentOpts) String() string {
+ return fmt.Sprintf("%s to %s", d.Deployment, d.Target.Type())
+}
+
+func (d *DeploymentOpts) IsCloud() bool { return d.Target.Type() == cloudTargetType }
+
+func (d *DeploymentOpts) url(path string) (*url.URL, error) {
+ service, err := d.Target.Service(deployService, 0, 0)
+ if err != nil {
+ return nil, err
+ }
+ return url.Parse(service.BaseURL + path)
+}
+
+func (ap *ApplicationPackage) HasCertificate() bool {
+ return ap.hasFile(filepath.Join("security", "clients.pem"), "security/clients.pem")
+}
+
+func (ap *ApplicationPackage) HasDeployment() bool { return ap.hasFile("deployment.xml", "") }
+
+func (ap *ApplicationPackage) hasFile(filename, zipName string) bool {
+ if zipName == "" {
+ zipName = filename
+ }
+ if ap.IsZip() {
+ r, err := zip.OpenReader(ap.Path)
+ if err != nil {
+ return false
+ }
+ defer r.Close()
+ for _, f := range r.File {
+ if f.Name == zipName {
+ return true
+ }
+ }
+ return false
+ }
+ return util.PathExists(filepath.Join(ap.Path, filename))
+}
+
+func (ap *ApplicationPackage) IsZip() bool { return isZip(ap.Path) }
+
+func (ap *ApplicationPackage) IsJava() bool {
+ if ap.IsZip() {
+ r, err := zip.OpenReader(ap.Path)
+ if err != nil {
+ return false
+ }
+ defer r.Close()
+ for _, f := range r.File {
+ if filepath.Ext(f.Name) == ".jar" {
+ return true
+ }
+ }
+ return false
+ }
+ return util.PathExists(filepath.Join(ap.Path, "pom.xml"))
+}
+
+func (ap *ApplicationPackage) zipReader(test bool) (io.ReadCloser, error) {
+ zipFile := ap.Path
+ if test {
+ zipFile = ap.TestPath
+ }
+ if !ap.IsZip() {
+ tempZip, err := ioutil.TempFile("", "vespa")
+ if err != nil {
+ return nil, fmt.Errorf("Could not create a temporary zip file for the application package: %w", err)
+ }
+ defer func() {
+ tempZip.Close()
+ os.Remove(tempZip.Name())
+ }()
+ if err := zipDir(ap.Path, tempZip.Name()); err != nil {
+ return nil, err
+ }
+ zipFile = tempZip.Name()
+ }
+ f, err := os.Open(zipFile)
+ if err != nil {
+ return nil, fmt.Errorf("Could not open application package at %s: %w", ap.Path, err)
+ }
+ return f, nil
+}
+
+// FindApplicationPackage finds the path to an application package from the zip file or directory zipOrDir.
+func FindApplicationPackage(zipOrDir string, requirePackaging bool) (ApplicationPackage, error) {
+ if isZip(zipOrDir) {
+ return ApplicationPackage{Path: zipOrDir}, nil
+ }
+ if util.PathExists(filepath.Join(zipOrDir, "pom.xml")) {
+ zip := filepath.Join(zipOrDir, "target", "application.zip")
+ if util.PathExists(zip) {
+ testZip := filepath.Join(zipOrDir, "target", "application-test.zip")
+ return ApplicationPackage{Path: zip, TestPath: testZip}, nil
+ }
+ if requirePackaging {
+ return ApplicationPackage{}, errors.New("pom.xml exists but no target/application.zip. Run mvn package first")
+ }
+ }
+ if util.PathExists(filepath.Join(zipOrDir, "src", "main", "application")) {
+ return ApplicationPackage{Path: filepath.Join(zipOrDir, "src", "main", "application")}, nil
+ }
+ if util.PathExists(filepath.Join(zipOrDir, "services.xml")) {
+ return ApplicationPackage{Path: zipOrDir}, nil
+ }
+ return ApplicationPackage{}, errors.New("Could not find an application package source in '" + zipOrDir + "'")
+}
+
+func ApplicationFromString(s string) (ApplicationID, error) {
+ parts := strings.Split(s, ".")
+ if len(parts) != 3 {
+ return ApplicationID{}, fmt.Errorf("invalid application: %q", s)
+ }
+ return ApplicationID{Tenant: parts[0], Application: parts[1], Instance: parts[2]}, nil
+}
+
+func ZoneFromString(s string) (ZoneID, error) {
+ parts := strings.Split(s, ".")
+ if len(parts) != 2 {
+ return ZoneID{}, fmt.Errorf("invalid zone: %q", s)
+ }
+ return ZoneID{Environment: parts[0], Region: parts[1]}, nil
+}
+
+// Prepare deployment and return the session ID
+func Prepare(deployment DeploymentOpts) (int64, error) {
+ if deployment.IsCloud() {
+ return 0, fmt.Errorf("prepare is not supported with %s target", deployment.Target.Type())
+ }
+ sessionURL, err := deployment.url("/application/v2/tenant/default/session")
+ if err != nil {
+ return 0, err
+ }
+ sessionID, err := uploadApplicationPackage(sessionURL, deployment)
+ if err != nil {
+ return 0, err
+ }
+ prepareURL, err := deployment.url(fmt.Sprintf("/application/v2/tenant/default/session/%d/prepared", sessionID))
+ if err != nil {
+ return 0, err
+ }
+ req, err := http.NewRequest("PUT", prepareURL.String(), nil)
+ if err != nil {
+ return 0, err
+ }
+ serviceDescription := "Deploy service"
+ response, err := util.HttpDo(req, time.Second*30, serviceDescription)
+ if err != nil {
+ return 0, err
+ }
+ defer response.Body.Close()
+ if err := checkResponse(req, response, serviceDescription); err != nil {
+ return 0, err
+ }
+ return sessionID, nil
+}
+
+// Activate deployment with sessionID from a past prepare
+func Activate(sessionID int64, deployment DeploymentOpts) error {
+ if deployment.IsCloud() {
+ return fmt.Errorf("activate is not supported with %s target", deployment.Target.Type())
+ }
+ u, err := deployment.url(fmt.Sprintf("/application/v2/tenant/default/session/%d/active", sessionID))
+ if err != nil {
+ return err
+ }
+ req, err := http.NewRequest("PUT", u.String(), nil)
+ if err != nil {
+ return err
+ }
+ serviceDescription := "Deploy service"
+ response, err := util.HttpDo(req, time.Second*30, serviceDescription)
+ if err != nil {
+ return err
+ }
+ defer response.Body.Close()
+ return checkResponse(req, response, serviceDescription)
+}
+
+func Deploy(opts DeploymentOpts) (int64, error) {
+ path := "/application/v2/tenant/default/prepareandactivate"
+ if opts.IsCloud() {
+ if err := checkDeploymentOpts(opts); err != nil {
+ return 0, err
+ }
+ if opts.Deployment.Zone.Environment == "" || opts.Deployment.Zone.Region == "" {
+ return 0, fmt.Errorf("%s: missing zone", opts)
+ }
+ path = fmt.Sprintf("/application/v4/tenant/%s/application/%s/instance/%s/deploy/%s-%s",
+ opts.Deployment.Application.Tenant,
+ opts.Deployment.Application.Application,
+ opts.Deployment.Application.Instance,
+ opts.Deployment.Zone.Environment,
+ opts.Deployment.Zone.Region)
+ }
+ u, err := opts.url(path)
+ if err != nil {
+ return 0, err
+ }
+ return uploadApplicationPackage(u, opts)
+}
+
+func copyToPart(dst *multipart.Writer, src io.Reader, fieldname, filename string) error {
+ var part io.Writer
+ var err error
+ if filename == "" {
+ part, err = dst.CreateFormField(fieldname)
+ } else {
+ part, err = dst.CreateFormFile(fieldname, filename)
+ }
+ if err != nil {
+ return err
+ }
+ if _, err := io.Copy(part, src); err != nil {
+ return err
+ }
+ return nil
+}
+
+func Submit(opts DeploymentOpts) error {
+ if !opts.IsCloud() {
+ return fmt.Errorf("%s: submit is unsupported", opts)
+ }
+ if err := checkDeploymentOpts(opts); err != nil {
+ return err
+ }
+ path := fmt.Sprintf("/application/v4/tenant/%s/application/%s/submit", opts.Deployment.Application.Tenant, opts.Deployment.Application.Application)
+ u, err := opts.url(path)
+ if err != nil {
+ return err
+ }
+ var body bytes.Buffer
+ writer := multipart.NewWriter(&body)
+ if err := copyToPart(writer, strings.NewReader("{}"), "submitOptions", ""); err != nil {
+ return err
+ }
+ applicationZip, err := opts.ApplicationPackage.zipReader(false)
+ if err != nil {
+ return err
+ }
+ if err := copyToPart(writer, applicationZip, "applicationZip", "application.zip"); err != nil {
+ return err
+ }
+ testApplicationZip, err := opts.ApplicationPackage.zipReader(true)
+ if err != nil {
+ return err
+ }
+ if err := copyToPart(writer, testApplicationZip, "applicationTestZip", "application-test.zip"); err != nil {
+ return err
+ }
+ if err := writer.Close(); err != nil {
+ return err
+ }
+ request := &http.Request{
+ URL: u,
+ Method: "POST",
+ Body: ioutil.NopCloser(&body),
+ Header: make(http.Header),
+ }
+ request.Header.Set("Content-Type", writer.FormDataContentType())
+ signer := NewRequestSigner(opts.Deployment.Application.SerializedForm(), opts.APIKey)
+ if err := signer.SignRequest(request); err != nil {
+ return err
+ }
+ serviceDescription := "Submit service"
+ response, err := util.HttpDo(request, time.Minute*10, serviceDescription)
+ if err != nil {
+ return err
+ }
+ defer response.Body.Close()
+ return checkResponse(request, response, serviceDescription)
+}
+
+func checkDeploymentOpts(opts DeploymentOpts) error {
+ if !opts.ApplicationPackage.HasCertificate() {
+ return fmt.Errorf("%s: missing certificate in package", opts)
+ }
+ if opts.APIKey == nil {
+ return fmt.Errorf("%s: missing api key", opts.String())
+ }
+ return nil
+}
+
+func uploadApplicationPackage(url *url.URL, opts DeploymentOpts) (int64, error) {
+ zipReader, err := opts.ApplicationPackage.zipReader(false)
+ if err != nil {
+ return 0, err
+ }
+ header := http.Header{}
+ header.Add("Content-Type", "application/zip")
+ request := &http.Request{
+ URL: url,
+ Method: "POST",
+ Header: header,
+ Body: ioutil.NopCloser(zipReader),
+ }
+ if opts.APIKey != nil {
+ signer := NewRequestSigner(opts.Deployment.Application.SerializedForm(), opts.APIKey)
+ if err := signer.SignRequest(request); err != nil {
+ return 0, err
+ }
+ }
+ serviceDescription := "Deploy service"
+ response, err := util.HttpDo(request, time.Minute*10, serviceDescription)
+ if err != nil {
+ return 0, err
+ }
+ defer response.Body.Close()
+
+ var jsonResponse struct {
+ SessionID string `json:"session-id"` // Config server
+ RunID int64 `json:"run"` // Controller
+ }
+ jsonResponse.SessionID = "0" // Set a default session ID for responses that don't contain int (e.g. cloud deployment)
+ if err := checkResponse(request, response, serviceDescription); err != nil {
+ return 0, err
+ }
+ jsonDec := json.NewDecoder(response.Body)
+ jsonDec.Decode(&jsonResponse) // Ignore error in case this is a non-JSON response
+ if jsonResponse.RunID > 0 {
+ return jsonResponse.RunID, nil
+ }
+ return strconv.ParseInt(jsonResponse.SessionID, 10, 64)
+}
+
+func checkResponse(req *http.Request, response *http.Response, serviceDescription string) error {
+ if response.StatusCode/100 == 4 {
+ return fmt.Errorf("Invalid application package (%s)\n\n%s", response.Status, extractError(response.Body))
+ } else if response.StatusCode != 200 {
+ return fmt.Errorf("Error from %s at %s (%s):\n%s", strings.ToLower(serviceDescription), req.URL.Host, response.Status, util.ReaderToJSON(response.Body))
+ }
+ return nil
+}
+
+func isZip(filename string) bool { return filepath.Ext(filename) == ".zip" }
+
+func zipDir(dir string, destination string) error {
+ if filepath.IsAbs(dir) {
+ message := "Path must be relative, but '" + dir + "'"
+ return errors.New(message)
+ }
+ if !util.PathExists(dir) {
+ message := "'" + dir + "' should be an application package zip or dir, but does not exist"
+ return errors.New(message)
+ }
+ if !util.IsDirectory(dir) {
+ message := "'" + dir + "' should be an application package dir, but is a (non-zip) file"
+ return errors.New(message)
+ }
+
+ file, err := os.Create(destination)
+ if err != nil {
+ message := "Could not create a temporary zip file for the application package: " + err.Error()
+ return errors.New(message)
+ }
+ defer file.Close()
+
+ w := zip.NewWriter(file)
+ defer w.Close()
+
+ walker := func(path string, info os.FileInfo, err error) error {
+ if err != nil {
+ return err
+ }
+ if info.IsDir() {
+ return nil
+ }
+ file, err := os.Open(path)
+ if err != nil {
+ return err
+ }
+ defer file.Close()
+
+ zippath := strings.TrimPrefix(path, dir)
+ zipfile, err := w.Create(zippath)
+ if err != nil {
+ return err
+ }
+
+ _, err = io.Copy(zipfile, file)
+ if err != nil {
+ return err
+ }
+ return nil
+ }
+ return filepath.Walk(dir, walker)
+}
+
+// Returns the error message in the given JSON, or the entire content if it could not be extracted
+func extractError(reader io.Reader) string {
+ responseData, _ := ioutil.ReadAll(reader)
+ var response map[string]interface{}
+ json.Unmarshal(responseData, &response)
+ if response["error-code"] == "INVALID_APPLICATION_PACKAGE" {
+ return strings.ReplaceAll(response["message"].(string), ": ", ":\n")
+ } else {
+ var prettyJSON bytes.Buffer
+ parseError := json.Indent(&prettyJSON, responseData, "", " ")
+ if parseError != nil { // Not JSON: Print plainly
+ return string(responseData)
+ }
+ return prettyJSON.String()
+ }
+}
diff --git a/client/go/vespa/deploy_test.go b/client/go/vespa/deploy_test.go
new file mode 100644
index 00000000000..d353dafca19
--- /dev/null
+++ b/client/go/vespa/deploy_test.go
@@ -0,0 +1,83 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package vespa
+
+import (
+ "io/ioutil"
+ "os"
+ "path/filepath"
+ "strings"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestApplicationFromString(t *testing.T) {
+ app, err := ApplicationFromString("t1.a1.i1")
+ assert.Nil(t, err)
+ assert.Equal(t, ApplicationID{Tenant: "t1", Application: "a1", Instance: "i1"}, app)
+ _, err = ApplicationFromString("foo")
+ assert.NotNil(t, err)
+}
+
+func TestZoneFromString(t *testing.T) {
+ zone, err := ZoneFromString("dev.us-north-1")
+ assert.Nil(t, err)
+ assert.Equal(t, ZoneID{Environment: "dev", Region: "us-north-1"}, zone)
+ _, err = ZoneFromString("foo")
+ assert.NotNil(t, err)
+}
+
+func TestFindApplicationPackage(t *testing.T) {
+ dir := t.TempDir()
+ assertFindApplicationPackage(t, dir, pkgFixture{
+ expectedPath: dir,
+ existingFile: filepath.Join(dir, "services.xml"),
+ })
+ assertFindApplicationPackage(t, dir, pkgFixture{
+ expectedPath: filepath.Join(dir, "src", "main", "application"),
+ existingFile: filepath.Join(dir, "src", "main", "application") + string(os.PathSeparator),
+ })
+ assertFindApplicationPackage(t, dir, pkgFixture{
+ expectedPath: filepath.Join(dir, "src", "main", "application"),
+ existingFile: filepath.Join(dir, "pom.xml"),
+ })
+ assertFindApplicationPackage(t, dir, pkgFixture{
+ existingFile: filepath.Join(dir, "pom.xml"),
+ requirePackaging: true,
+ fail: true,
+ })
+ assertFindApplicationPackage(t, dir, pkgFixture{
+ expectedPath: filepath.Join(dir, "target", "application.zip"),
+ existingFiles: []string{filepath.Join(dir, "pom.xml"), filepath.Join(dir, "target", "application.zip")},
+ requirePackaging: true,
+ })
+}
+
+type pkgFixture struct {
+ expectedPath string
+ existingFile string
+ existingFiles []string
+ requirePackaging bool
+ fail bool
+}
+
+func assertFindApplicationPackage(t *testing.T, zipOrDir string, fixture pkgFixture) {
+ if fixture.existingFile != "" {
+ writeFile(t, fixture.existingFile)
+ }
+ for _, f := range fixture.existingFiles {
+ writeFile(t, f)
+ }
+ pkg, err := FindApplicationPackage(zipOrDir, fixture.requirePackaging)
+ assert.Equal(t, err != nil, fixture.fail, "Expected error for "+zipOrDir)
+ assert.Equal(t, fixture.expectedPath, pkg.Path)
+}
+
+func writeFile(t *testing.T, name string) {
+ err := os.MkdirAll(filepath.Dir(name), 0755)
+ assert.Nil(t, err)
+ if !strings.HasSuffix(name, string(os.PathSeparator)) {
+ err = ioutil.WriteFile(name, []byte{0}, 0644)
+ assert.Nil(t, err)
+ }
+}
diff --git a/client/go/vespa/document.go b/client/go/vespa/document.go
new file mode 100644
index 00000000000..6424113bd52
--- /dev/null
+++ b/client/go/vespa/document.go
@@ -0,0 +1,194 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// vespa document API client
+// Author: bratseth
+
+package vespa
+
+import (
+ "bytes"
+ "encoding/json"
+ "io"
+ "io/ioutil"
+ "net/http"
+ "net/url"
+ "os"
+ "time"
+
+ "github.com/vespa-engine/vespa/client/go/curl"
+ "github.com/vespa-engine/vespa/client/go/util"
+)
+
+// Sends the operation given in the file
+func Send(jsonFile string, service *Service, options OperationOptions) util.OperationResult {
+ return sendOperation("", jsonFile, service, anyOperation, options)
+}
+
+func Put(documentId string, jsonFile string, service *Service, options OperationOptions) util.OperationResult {
+ return sendOperation(documentId, jsonFile, service, putOperation, options)
+}
+
+func Update(documentId string, jsonFile string, service *Service, options OperationOptions) util.OperationResult {
+ return sendOperation(documentId, jsonFile, service, updateOperation, options)
+}
+
+func RemoveId(documentId string, service *Service, options OperationOptions) util.OperationResult {
+ return sendOperation(documentId, "", service, removeOperation, options)
+}
+
+func RemoveOperation(jsonFile string, service *Service, options OperationOptions) util.OperationResult {
+ return sendOperation("", jsonFile, service, removeOperation, options)
+}
+
+const (
+ anyOperation string = "any"
+ putOperation string = "put"
+ updateOperation string = "update"
+ removeOperation string = "remove"
+)
+
+type OperationOptions struct {
+ CurlOutput io.Writer
+ Timeout time.Duration
+}
+
+func sendOperation(documentId string, jsonFile string, service *Service, operation string, options OperationOptions) util.OperationResult {
+ header := http.Header{}
+ header.Add("Content-Type", "application/json")
+
+ var documentData []byte
+ if operation == "remove" && jsonFile == "" {
+ documentData = []byte("{\n \"remove\": \"" + documentId + "\"\n}\n")
+ } else {
+ fileReader, err := os.Open(jsonFile)
+ if err != nil {
+ return util.FailureWithDetail("Could not open file '"+jsonFile+"'", err.Error())
+ }
+ defer fileReader.Close()
+ documentData, err = ioutil.ReadAll(fileReader)
+ if err != nil {
+ return util.FailureWithDetail("Failed to read '"+jsonFile+"'", err.Error())
+ }
+ }
+
+ var doc map[string]interface{}
+ json.Unmarshal(documentData, &doc)
+
+ operationInFile := operationIn(doc)
+ if operation == anyOperation { // Operation is decided by file content
+ operation = operationInFile
+ } else if operationInFile != "" && operationInFile != operation { // Otherwise operation must match
+ return util.Failure("Wanted document operation is " + operation + " but the JSON file specifies " + operationInFile)
+ }
+
+ if documentId == "" { // Document id is decided by file content
+ if doc[operation] == nil {
+ return util.Failure("No document id given neither as argument or as a '" + operation + "' key in the json file")
+ }
+ documentId = doc[operation].(string) // document feeder format
+ }
+
+ documentPath, documentPathError := IdToURLPath(documentId)
+ if documentPathError != nil {
+ return util.Failure("Invalid document id '" + documentId + "': " + documentPathError.Error())
+ }
+
+ url, urlParseError := url.Parse(service.BaseURL + "/document/v1/" + documentPath)
+ if urlParseError != nil {
+ return util.Failure("Invalid request path: '" + service.BaseURL + "/document/v1/" + documentPath + "': " + urlParseError.Error())
+ }
+
+ request := &http.Request{
+ URL: url,
+ Method: operationToHTTPMethod(operation),
+ Header: header,
+ Body: ioutil.NopCloser(bytes.NewReader(documentData)),
+ }
+ response, err := serviceDo(service, request, jsonFile, options)
+ if response == nil {
+ return util.Failure("Request failed: " + err.Error())
+ }
+
+ defer response.Body.Close()
+ if response.StatusCode == 200 {
+ return util.Success(operation + " " + documentId)
+ } else if response.StatusCode/100 == 4 {
+ return util.FailureWithPayload("Invalid document operation: "+response.Status, util.ReaderToJSON(response.Body))
+ } else {
+ return util.FailureWithPayload(service.Description()+" at "+request.URL.Host+": "+response.Status, util.ReaderToJSON(response.Body))
+ }
+}
+
+func operationIn(doc map[string]interface{}) string {
+ if doc["put"] != nil {
+ return "put"
+ } else if doc["update"] != nil {
+ return "update"
+ } else if doc["remove"] != nil {
+ return "remove"
+ } else {
+ return ""
+ }
+}
+
+func operationToHTTPMethod(operation string) string {
+ switch operation {
+ case "put":
+ return "POST"
+ case "update":
+ return "PUT"
+ case "remove":
+ return "DELETE"
+ }
+ panic("Unexpected document operation ''" + operation + "'")
+}
+
+func serviceDo(service *Service, request *http.Request, filename string, options OperationOptions) (*http.Response, error) {
+ cmd, err := curl.RawArgs(request.URL.String())
+ if err != nil {
+ return nil, err
+ }
+ cmd.Method = request.Method
+ for k, vs := range request.Header {
+ for _, v := range vs {
+ cmd.Header(k, v)
+ }
+ }
+ cmd.BodyFile = filename
+ cmd.Certificate = service.TLSOptions.CertificateFile
+ cmd.PrivateKey = service.TLSOptions.PrivateKeyFile
+ out := cmd.String() + "\n"
+ if _, err := io.WriteString(options.CurlOutput, out); err != nil {
+ return nil, err
+ }
+ return service.Do(request, options.Timeout)
+}
+
+func Get(documentId string, service *Service, options OperationOptions) util.OperationResult {
+ documentPath, documentPathError := IdToURLPath(documentId)
+ if documentPathError != nil {
+ return util.Failure("Invalid document id '" + documentId + "': " + documentPathError.Error())
+ }
+
+ url, urlParseError := url.Parse(service.BaseURL + "/document/v1/" + documentPath)
+ if urlParseError != nil {
+ return util.Failure("Invalid request path: '" + service.BaseURL + "/document/v1/" + documentPath + "': " + urlParseError.Error())
+ }
+
+ request := &http.Request{
+ URL: url,
+ Method: "GET",
+ }
+ response, err := serviceDo(service, request, "", options)
+ if response == nil {
+ return util.Failure("Request failed: " + err.Error())
+ }
+
+ defer response.Body.Close()
+ if response.StatusCode == 200 {
+ return util.SuccessWithPayload("Read "+documentId, util.ReaderToJSON(response.Body))
+ } else if response.StatusCode/100 == 4 {
+ return util.FailureWithPayload("Invalid document operation: "+response.Status, util.ReaderToJSON(response.Body))
+ } else {
+ return util.FailureWithPayload(service.Description()+" at "+request.URL.Host+": "+response.Status, util.ReaderToJSON(response.Body))
+ }
+}
diff --git a/client/go/vespa/id.go b/client/go/vespa/id.go
new file mode 100644
index 00000000000..b0dc770ad52
--- /dev/null
+++ b/client/go/vespa/id.go
@@ -0,0 +1,46 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// vespa document ids
+// Author: bratseth
+
+package vespa
+
+import (
+ "errors"
+ "strings"
+)
+
+func IdToURLPath(documentId string) (string, error) {
+ parts := strings.Split(documentId, ":")
+ formatAdvice := "Id should be on the form id:<namespace>:<document-type>:<attribute>?:<local-id-string>"
+ if len(parts) < 5 {
+ return "", errors.New(formatAdvice)
+ }
+
+ scheme := parts[0]
+ namespace := parts[1]
+ documentType := parts[2]
+ attribute := parts[3]
+ localId := strings.Join(parts[4:], "")
+
+ var group string
+ var number string
+ if strings.HasPrefix(attribute, "g=") {
+ group = attribute[2:]
+ } else if strings.HasPrefix(attribute, "n=") {
+ number = attribute[2:]
+ } else if attribute != "" {
+ return "", errors.New(formatAdvice + ": Attribute must be g=<string> or n=<integer>")
+ }
+
+ if scheme != "id" {
+ return "", errors.New(formatAdvice)
+ }
+
+ var attributeAsPath string
+ if group != "" {
+ attributeAsPath = "group/" + group + "/"
+ } else if number != "" {
+ attributeAsPath = "number/" + number + "/"
+ }
+ return namespace + "/" + documentType + "/" + attributeAsPath + "docid/" + localId, nil
+}
diff --git a/client/go/vespa/id_test.go b/client/go/vespa/id_test.go
new file mode 100644
index 00000000000..343affc1602
--- /dev/null
+++ b/client/go/vespa/id_test.go
@@ -0,0 +1,20 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package vespa
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestIdToURLPath(t *testing.T) {
+ assertIdToURLPath("ns/type/docid/local", "id:ns:type::local", t)
+ assertIdToURLPath("ns/type/number/123/docid/local", "id:ns:type:n=123:local", t)
+ assertIdToURLPath("ns/type/group/mygroup/docid/local", "id:ns:type:g=mygroup:local", t)
+}
+
+func assertIdToURLPath(expectedPath string, id string, t *testing.T) {
+ path, err := IdToURLPath(id)
+ assert.Nil(t, err)
+ assert.Equal(t, expectedPath, path)
+}
diff --git a/client/go/vespa/log.go b/client/go/vespa/log.go
new file mode 100644
index 00000000000..0e2cb5d0bfd
--- /dev/null
+++ b/client/go/vespa/log.go
@@ -0,0 +1,100 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package vespa
+
+import (
+ "bufio"
+ "fmt"
+ "io"
+ "strconv"
+ "strings"
+ "time"
+)
+
+var dequoter = strings.NewReplacer("\\n", "\n", "\\t", "\t")
+
+// LogEntry represents a Vespa log entry.
+type LogEntry struct {
+ Time time.Time
+ Host string
+ Service string
+ Component string
+ Level string
+ Message string
+}
+
+func (le *LogEntry) Format(dequote bool) string {
+ t := le.Time.Format("2006-01-02 15:04:05.000000")
+ msg := le.Message
+ if dequote {
+ msg = dequoter.Replace(msg)
+ }
+ return fmt.Sprintf("[%s] %-8s %-7s %-16s %s\t%s", t, le.Host, le.Level, le.Service, le.Component, msg)
+}
+
+// ParseLogEntry parses a Vespa log entry from string s.
+func ParseLogEntry(s string) (LogEntry, error) {
+ parts := strings.SplitN(s, "\t", 7)
+ if len(parts) != 7 {
+ return LogEntry{}, fmt.Errorf("invalid number of log parts: %d: %q", len(parts), s)
+ }
+ time, err := parseLogTimestamp(parts[0])
+ if err != nil {
+ return LogEntry{}, err
+ }
+ return LogEntry{
+ Time: time,
+ Host: parts[1],
+ Service: parts[3],
+ Component: parts[4],
+ Level: parts[5],
+ Message: parts[6],
+ }, nil
+}
+
+// ReadLogEntries reads and parses all log entries from reader r.
+func ReadLogEntries(r io.Reader) ([]LogEntry, error) {
+ var entries []LogEntry
+ scanner := bufio.NewScanner(r)
+ for scanner.Scan() {
+ line := scanner.Text()
+ logEntry, err := ParseLogEntry(line)
+ if err != nil {
+ return nil, err
+ }
+ entries = append(entries, logEntry)
+ }
+ if err := scanner.Err(); err != nil {
+ return nil, err
+ }
+ return entries, nil
+}
+
+// LogLevel returns an int representing a named log level.
+func LogLevel(name string) int {
+ switch name {
+ case "error":
+ return 0
+ case "warning":
+ return 1
+ case "info":
+ return 2
+ default: // everything else, e.g. debug
+ return 3
+ }
+}
+
+func parseLogTimestamp(s string) (time.Time, error) {
+ parts := strings.Split(s, ".")
+ if len(parts) != 2 {
+ return time.Time{}, fmt.Errorf("invalid number of log timestamp parts: %d", len(parts))
+ }
+ unixSecs, err := strconv.ParseInt(parts[0], 10, 64)
+ if err != nil {
+ return time.Time{}, fmt.Errorf("invalid timestamp seconds: %s", parts[0])
+ }
+ unixMicros, err := strconv.ParseInt(parts[1], 10, 64)
+ if err != nil {
+ return time.Time{}, fmt.Errorf("invalid timestamp microseconds: %s", parts[1])
+ }
+ return time.Unix(unixSecs, unixMicros*1000).UTC(), nil
+}
diff --git a/client/go/vespa/log_test.go b/client/go/vespa/log_test.go
new file mode 100644
index 00000000000..2d0c75d0a0a
--- /dev/null
+++ b/client/go/vespa/log_test.go
@@ -0,0 +1,32 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package vespa
+
+import (
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestParseLogEntry(t *testing.T) {
+ expected := LogEntry{
+ Time: time.Date(2021, 9, 27, 10, 31, 30, 905535000, time.UTC),
+ Host: "host1a.dev.aws-us-east-1c",
+ Service: "logserver-container",
+ Component: "Container.com.yahoo.container.jdisc.ConfiguredApplication",
+ Level: "info",
+ Message: "Switching to the latest deployed set of configurations and components. Application config generation: 52532",
+ }
+ in := "1632738690.905535 host1a.dev.aws-us-east-1c 806/53 logserver-container Container.com.yahoo.container.jdisc.ConfiguredApplication info Switching to the latest deployed set of configurations and components. Application config generation: 52532"
+ logEntry, err := ParseLogEntry(in)
+ assert.Nil(t, err)
+ assert.Equal(t, expected, logEntry)
+
+ formatted := "[2021-09-27 10:31:30.905535] host1a.dev.aws-us-east-1c info logserver-container Container.com.yahoo.container.jdisc.ConfiguredApplication\tSwitching to the latest deployed set of configurations and components. Application config generation: 52532"
+ assert.Equal(t, formatted, logEntry.Format(false))
+
+ in = "1632738690.905535 host1a.dev.aws-us-east-1c 806/53 logserver-container Container.com.yahoo.container.jdisc.ConfiguredApplication info message containing newline\\nand\\ttab"
+ logEntry, err = ParseLogEntry(in)
+ assert.Nil(t, err)
+ assert.Equal(t, "[2021-09-27 10:31:30.905535] host1a.dev.aws-us-east-1c info logserver-container Container.com.yahoo.container.jdisc.ConfiguredApplication\tmessage containing newline\nand\ttab", logEntry.Format(true))
+}
diff --git a/client/go/vespa/target.go b/client/go/vespa/target.go
new file mode 100644
index 00000000000..8a09440f5cc
--- /dev/null
+++ b/client/go/vespa/target.go
@@ -0,0 +1,487 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package vespa
+
+import (
+ "bytes"
+ "crypto/tls"
+ "encoding/json"
+ "fmt"
+ "io"
+ "io/ioutil"
+ "math"
+ "net/http"
+ "net/url"
+ "sort"
+ "strconv"
+ "time"
+
+ "github.com/vespa-engine/vespa/client/go/util"
+)
+
+const (
+ localTargetType = "local"
+ customTargetType = "custom"
+ cloudTargetType = "cloud"
+
+ deployService = "deploy"
+ queryService = "query"
+ documentService = "document"
+
+ waitRetryInterval = 2 * time.Second
+)
+
+// Service represents a Vespa service.
+type Service struct {
+ BaseURL string
+ Name string
+ TLSOptions TLSOptions
+}
+
+// Target represents a Vespa platform, running named Vespa services.
+type Target interface {
+ // Type returns this target's type, e.g. local or cloud.
+ Type() string
+
+ // Service returns the service for given name. If timeout is non-zero, wait for the service to converge.
+ Service(name string, timeout time.Duration, sessionOrRunID int64) (*Service, error)
+
+ // PrintLog writes the logs of this deployment using given options to control output.
+ PrintLog(options LogOptions) error
+}
+
+// TLSOptions configures the certificate to use for service requests.
+type TLSOptions struct {
+ KeyPair tls.Certificate
+ CertificateFile string
+ PrivateKeyFile string
+}
+
+// LogOptions configures the log output to produce when writing log messages.
+type LogOptions struct {
+ From time.Time
+ To time.Time
+ Follow bool
+ Dequote bool
+ Writer io.Writer
+ Level int
+}
+
+type customTarget struct {
+ targetType string
+ baseURL string
+}
+
+// Do sends request to this service. Any required authentication happens automatically.
+func (s *Service) Do(request *http.Request, timeout time.Duration) (*http.Response, error) {
+ if s.TLSOptions.KeyPair.Certificate != nil {
+ util.ActiveHttpClient.UseCertificate(s.TLSOptions.KeyPair)
+ }
+ return util.HttpDo(request, timeout, s.Description())
+}
+
+// Wait polls the health check of this service until it succeeds or timeout passes.
+func (s *Service) Wait(timeout time.Duration) (int, error) {
+ url := s.BaseURL
+ switch s.Name {
+ case deployService:
+ url += "/status.html" // because /ApplicationStatus is not publicly reachable in Vespa Cloud
+ case queryService, documentService:
+ url += "/ApplicationStatus"
+ default:
+ return 0, fmt.Errorf("invalid service: %s", s.Name)
+ }
+ req, err := http.NewRequest("GET", url, nil)
+ if err != nil {
+ return 0, err
+ }
+ okFunc := func(status int, response []byte) (bool, error) { return status/100 == 2, nil }
+ return wait(okFunc, func() *http.Request { return req }, &s.TLSOptions.KeyPair, timeout)
+}
+
+func (s *Service) Description() string {
+ switch s.Name {
+ case queryService:
+ return "Container (query API)"
+ case documentService:
+ return "Container (document API)"
+ case deployService:
+ return "Deploy API"
+ }
+ return fmt.Sprintf("No description of service %s", s.Name)
+}
+
+func (t *customTarget) Type() string { return t.targetType }
+
+func (t *customTarget) Service(name string, timeout time.Duration, sessionID int64) (*Service, error) {
+ if timeout > 0 && name != deployService {
+ if err := t.waitForConvergence(timeout); err != nil {
+ return nil, err
+ }
+ }
+ switch name {
+ case deployService, queryService, documentService:
+ url, err := t.urlWithPort(name)
+ if err != nil {
+ return nil, err
+ }
+ return &Service{BaseURL: url, Name: name}, nil
+ }
+ return nil, fmt.Errorf("unknown service: %s", name)
+}
+
+func (t *customTarget) PrintLog(options LogOptions) error {
+ return fmt.Errorf("reading logs from non-cloud deployment is currently unsupported")
+}
+
+func (t *customTarget) urlWithPort(serviceName string) (string, error) {
+ u, err := url.Parse(t.baseURL)
+ if err != nil {
+ return "", err
+ }
+ port := u.Port()
+ if port == "" {
+ switch serviceName {
+ case deployService:
+ port = "19071"
+ case queryService, documentService:
+ port = "8080"
+ default:
+ return "", fmt.Errorf("unknown service: %s", serviceName)
+ }
+ u.Host = u.Host + ":" + port
+ }
+ return u.String(), nil
+}
+
+func (t *customTarget) waitForConvergence(timeout time.Duration) error {
+ deployer, err := t.Service(deployService, 0, 0)
+ if err != nil {
+ return err
+ }
+ url := fmt.Sprintf("%s/application/v2/tenant/default/application/default/environment/prod/region/default/instance/default/serviceconverge", deployer.BaseURL)
+ req, err := http.NewRequest("GET", url, nil)
+ if err != nil {
+ return err
+ }
+ converged := false
+ convergedFunc := func(status int, response []byte) (bool, error) {
+ if status/100 != 2 {
+ return false, nil
+ }
+ var resp serviceConvergeResponse
+ if err := json.Unmarshal(response, &resp); err != nil {
+ return false, nil
+ }
+ converged = resp.Converged
+ return converged, nil
+ }
+ if _, err := wait(convergedFunc, func() *http.Request { return req }, nil, timeout); err != nil {
+ return err
+ }
+ if !converged {
+ return fmt.Errorf("services have not converged")
+ }
+ return nil
+}
+
+type cloudTarget struct {
+ apiURL string
+ targetType string
+ deployment Deployment
+ apiKey []byte
+ tlsOptions TLSOptions
+ logOptions LogOptions
+
+ queryURL string
+ documentURL string
+}
+
+func (t *cloudTarget) Type() string { return t.targetType }
+
+func (t *cloudTarget) Service(name string, timeout time.Duration, runID int64) (*Service, error) {
+ if name != deployService {
+ if err := t.waitForEndpoints(timeout, runID); err != nil {
+ return nil, err
+ }
+ }
+ switch name {
+ case deployService:
+ return &Service{Name: name, BaseURL: t.apiURL}, nil
+ case queryService:
+ if t.queryURL == "" {
+ return nil, fmt.Errorf("service %s is not discovered", name)
+ }
+ return &Service{Name: name, BaseURL: t.queryURL, TLSOptions: t.tlsOptions}, nil
+ case documentService:
+ if t.documentURL == "" {
+ return nil, fmt.Errorf("service %s is not discovered", name)
+ }
+ return &Service{Name: name, BaseURL: t.documentURL, TLSOptions: t.tlsOptions}, nil
+ }
+ return nil, fmt.Errorf("unknown service: %s", name)
+}
+
+func (t *cloudTarget) logsURL() string {
+ return fmt.Sprintf("%s/application/v4/tenant/%s/application/%s/instance/%s/environment/%s/region/%s/logs",
+ t.apiURL,
+ t.deployment.Application.Tenant, t.deployment.Application.Application, t.deployment.Application.Instance,
+ t.deployment.Zone.Environment, t.deployment.Zone.Region)
+}
+
+func (t *cloudTarget) PrintLog(options LogOptions) error {
+ req, err := http.NewRequest("GET", t.logsURL(), nil)
+ if err != nil {
+ return err
+ }
+ signer := NewRequestSigner(t.deployment.Application.SerializedForm(), t.apiKey)
+ lastFrom := options.From
+ requestFunc := func() *http.Request {
+ fromMillis := lastFrom.Unix() * 1000
+ q := req.URL.Query()
+ q.Set("from", strconv.FormatInt(fromMillis, 10))
+ if !options.To.IsZero() {
+ toMillis := options.To.Unix() * 1000
+ q.Set("to", strconv.FormatInt(toMillis, 10))
+ }
+ req.URL.RawQuery = q.Encode()
+ if err := signer.SignRequest(req); err != nil {
+ panic(err)
+ }
+ return req
+ }
+ logFunc := func(status int, response []byte) (bool, error) {
+ if ok, err := isOK(status); !ok {
+ return ok, err
+ }
+ logEntries, err := ReadLogEntries(bytes.NewReader(response))
+ if err != nil {
+ return true, err
+ }
+ for _, le := range logEntries {
+ if !le.Time.After(lastFrom) {
+ continue
+ }
+ if LogLevel(le.Level) > options.Level {
+ continue
+ }
+ fmt.Fprintln(options.Writer, le.Format(options.Dequote))
+ }
+ if len(logEntries) > 0 {
+ lastFrom = logEntries[len(logEntries)-1].Time
+ }
+ return false, nil
+ }
+ var timeout time.Duration
+ if options.Follow {
+ timeout = math.MaxInt64 // No timeout
+ }
+ _, err = wait(logFunc, requestFunc, &t.tlsOptions.KeyPair, timeout)
+ return err
+}
+
+func (t *cloudTarget) waitForEndpoints(timeout time.Duration, runID int64) error {
+ signer := NewRequestSigner(t.deployment.Application.SerializedForm(), t.apiKey)
+ if runID > 0 {
+ if err := t.waitForRun(signer, runID, timeout); err != nil {
+ return err
+ }
+ }
+ return t.discoverEndpoints(signer, timeout)
+}
+
+func (t *cloudTarget) waitForRun(signer *RequestSigner, runID int64, timeout time.Duration) error {
+ runURL := fmt.Sprintf("%s/application/v4/tenant/%s/application/%s/instance/%s/job/%s-%s/run/%d",
+ t.apiURL,
+ t.deployment.Application.Tenant, t.deployment.Application.Application, t.deployment.Application.Instance,
+ t.deployment.Zone.Environment, t.deployment.Zone.Region, runID)
+ req, err := http.NewRequest("GET", runURL, nil)
+ if err != nil {
+ return err
+ }
+ lastID := int64(-1)
+ requestFunc := func() *http.Request {
+ q := req.URL.Query()
+ q.Set("after", strconv.FormatInt(lastID, 10))
+ req.URL.RawQuery = q.Encode()
+ if err := signer.SignRequest(req); err != nil {
+ panic(err)
+ }
+ return req
+ }
+ jobSuccessFunc := func(status int, response []byte) (bool, error) {
+ if ok, err := isOK(status); !ok {
+ return ok, err
+ }
+ var resp jobResponse
+ if err := json.Unmarshal(response, &resp); err != nil {
+ return false, nil
+ }
+ if t.logOptions.Writer != nil {
+ lastID = t.printLog(resp, lastID)
+ }
+ if resp.Active {
+ return false, nil
+ }
+ if resp.Status != "success" {
+ return false, fmt.Errorf("run %d ended with unsuccessful status: %s", runID, resp.Status)
+ }
+ return true, nil
+ }
+ _, err = wait(jobSuccessFunc, requestFunc, &t.tlsOptions.KeyPair, timeout)
+ return err
+}
+
+func (t *cloudTarget) printLog(response jobResponse, last int64) int64 {
+ if response.LastID == 0 {
+ return last
+ }
+ var msgs []logMessage
+ for step, stepMsgs := range response.Log {
+ for _, msg := range stepMsgs {
+ if step == "copyVespaLogs" && LogLevel(msg.Type) > t.logOptions.Level {
+ continue
+ }
+ msgs = append(msgs, msg)
+ }
+ }
+ sort.Slice(msgs, func(i, j int) bool { return msgs[i].At < msgs[j].At })
+ for _, msg := range msgs {
+ tm := time.Unix(msg.At/1000, (msg.At%1000)*1000)
+ fmtTime := tm.Format("15:04:05")
+ fmt.Fprintf(t.logOptions.Writer, "[%s] %-7s %s\n", fmtTime, msg.Type, msg.Message)
+ }
+ return response.LastID
+}
+
+func (t *cloudTarget) discoverEndpoints(signer *RequestSigner, timeout time.Duration) error {
+ deploymentURL := fmt.Sprintf("%s/application/v4/tenant/%s/application/%s/instance/%s/environment/%s/region/%s",
+ t.apiURL,
+ t.deployment.Application.Tenant, t.deployment.Application.Application, t.deployment.Application.Instance,
+ t.deployment.Zone.Environment, t.deployment.Zone.Region)
+ req, err := http.NewRequest("GET", deploymentURL, nil)
+ if err != nil {
+ return err
+ }
+ if err := signer.SignRequest(req); err != nil {
+ return err
+ }
+ var endpointURL string
+ endpointFunc := func(status int, response []byte) (bool, error) {
+ if ok, err := isOK(status); !ok {
+ return ok, err
+ }
+ var resp deploymentResponse
+ if err := json.Unmarshal(response, &resp); err != nil {
+ return false, nil
+ }
+ if len(resp.Endpoints) == 0 {
+ return false, nil
+ }
+ endpointURL = resp.Endpoints[0].URL
+ return true, nil
+ }
+ if _, err = wait(endpointFunc, func() *http.Request { return req }, &t.tlsOptions.KeyPair, timeout); err != nil {
+ return err
+ }
+ if endpointURL == "" {
+ return fmt.Errorf("no endpoint discovered")
+ }
+ t.queryURL = endpointURL
+ t.documentURL = endpointURL
+ return nil
+}
+
+func isOK(status int) (bool, error) {
+ if status == 401 {
+ return false, fmt.Errorf("status %d: invalid api key", status)
+ }
+ return status/100 == 2, nil
+}
+
+// LocalTarget creates a target for a Vespa platform running locally.
+func LocalTarget() Target {
+ return &customTarget{targetType: localTargetType, baseURL: "http://127.0.0.1"}
+}
+
+// CustomTarget creates a Target for a Vespa platform running at baseURL.
+func CustomTarget(baseURL string) Target {
+ return &customTarget{targetType: customTargetType, baseURL: baseURL}
+}
+
+// CloudTarget creates a Target for the Vespa Cloud platform.
+func CloudTarget(apiURL string, deployment Deployment, apiKey []byte, tlsOptions TLSOptions, logOptions LogOptions) Target {
+ return &cloudTarget{
+ apiURL: apiURL,
+ targetType: cloudTargetType,
+ deployment: deployment,
+ apiKey: apiKey,
+ tlsOptions: tlsOptions,
+ logOptions: logOptions,
+ }
+}
+
+type deploymentEndpoint struct {
+ URL string `json:"url"`
+}
+
+type deploymentResponse struct {
+ Endpoints []deploymentEndpoint `json:"endpoints"`
+}
+
+type serviceConvergeResponse struct {
+ Converged bool `json:"converged"`
+}
+
+type jobResponse struct {
+ Active bool `json:"active"`
+ Status string `json:"status"`
+ Log map[string][]logMessage `json:"log"`
+ LastID int64 `json:"lastId"`
+}
+
+type logMessage struct {
+ At int64 `json:"at"`
+ Type string `json:"type"`
+ Message string `json:"message"`
+}
+
+type responseFunc func(status int, response []byte) (bool, error)
+
+type requestFunc func() *http.Request
+
+func wait(fn responseFunc, reqFn requestFunc, certificate *tls.Certificate, timeout time.Duration) (int, error) {
+ if certificate != nil {
+ util.ActiveHttpClient.UseCertificate(*certificate)
+ }
+ var (
+ httpErr error
+ response *http.Response
+ statusCode int
+ )
+ deadline := time.Now().Add(timeout)
+ loopOnce := timeout == 0
+ for time.Now().Before(deadline) || loopOnce {
+ response, httpErr = util.HttpDo(reqFn(), 10*time.Second, "")
+ if httpErr == nil {
+ statusCode = response.StatusCode
+ body, err := ioutil.ReadAll(response.Body)
+ if err != nil {
+ return 0, err
+ }
+ response.Body.Close()
+ ok, err := fn(statusCode, body)
+ if err != nil {
+ return statusCode, err
+ }
+ if ok {
+ return statusCode, nil
+ }
+ }
+ timeLeft := deadline.Sub(time.Now())
+ if loopOnce || timeLeft < waitRetryInterval {
+ break
+ }
+ time.Sleep(waitRetryInterval)
+ }
+ return statusCode, httpErr
+}
diff --git a/client/go/vespa/target_test.go b/client/go/vespa/target_test.go
new file mode 100644
index 00000000000..ed924059297
--- /dev/null
+++ b/client/go/vespa/target_test.go
@@ -0,0 +1,179 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package vespa
+
+import (
+ "bytes"
+ "crypto/tls"
+ "fmt"
+ "io"
+ "io/ioutil"
+ "net/http"
+ "net/http/httptest"
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/assert"
+)
+
+type mockVespaApi struct {
+ deploymentConverged bool
+ serverURL string
+}
+
+func (v *mockVespaApi) mockVespaHandler(w http.ResponseWriter, req *http.Request) {
+ switch req.URL.Path {
+ case "/application/v4/tenant/t1/application/a1/instance/i1/environment/dev/region/us-north-1":
+ response := "{}"
+ if v.deploymentConverged {
+ response = fmt.Sprintf(`{"endpoints": [{"url": "%s"}]}`, v.serverURL)
+ }
+ w.Write([]byte(response))
+ case "/application/v4/tenant/t1/application/a1/instance/i1/job/dev-us-north-1/run/42":
+ var response string
+ if v.deploymentConverged {
+ response = `{"active": false, "status": "success"}`
+ } else {
+ response = `{"active": true, "status": "running",
+ "lastId": 42,
+ "log": {"deployReal": [{"at": 1631707708431,
+ "type": "info",
+ "message": "Deploying platform version 7.465.17 and application version 1.0.2 ..."}]}}`
+ }
+ w.Write([]byte(response))
+ case "/application/v2/tenant/default/application/default/environment/prod/region/default/instance/default/serviceconverge":
+ response := fmt.Sprintf(`{"converged": %t}`, v.deploymentConverged)
+ w.Write([]byte(response))
+ case "/application/v4/tenant/t1/application/a1/instance/i1/environment/dev/region/us-north-1/logs":
+ log := `1632738690.905535 host1a.dev.aws-us-east-1c 806/53 logserver-container Container.com.yahoo.container.jdisc.ConfiguredApplication info Switching to the latest deployed set of configurations and components. Application config generation: 52532
+1632738698.600189 host1a.dev.aws-us-east-1c 1723/33590 config-sentinel sentinel.sentinel.config-owner config Sentinel got 3 service elements [tenant(vespa-team), application(music), instance(mpolden)] for config generation 52532
+`
+ w.Write([]byte(log))
+ case "/status.html":
+ w.Write([]byte("OK"))
+ case "/ApplicationStatus":
+ w.WriteHeader(500)
+ w.Write([]byte("Unknown error"))
+ default:
+ w.WriteHeader(400)
+ w.Write([]byte("Invalid path: " + req.URL.Path))
+ }
+}
+
+func TestCustomTarget(t *testing.T) {
+ lt := LocalTarget()
+ assertServiceURL(t, "http://127.0.0.1:19071", lt, "deploy")
+ assertServiceURL(t, "http://127.0.0.1:8080", lt, "query")
+ assertServiceURL(t, "http://127.0.0.1:8080", lt, "document")
+
+ ct := CustomTarget("http://192.0.2.42")
+ assertServiceURL(t, "http://192.0.2.42:19071", ct, "deploy")
+ assertServiceURL(t, "http://192.0.2.42:8080", ct, "query")
+ assertServiceURL(t, "http://192.0.2.42:8080", ct, "document")
+
+ ct2 := CustomTarget("http://192.0.2.42:60000")
+ assertServiceURL(t, "http://192.0.2.42:60000", ct2, "deploy")
+ assertServiceURL(t, "http://192.0.2.42:60000", ct2, "query")
+ assertServiceURL(t, "http://192.0.2.42:60000", ct2, "document")
+}
+
+func TestCustomTargetWait(t *testing.T) {
+ vc := mockVespaApi{}
+ srv := httptest.NewServer(http.HandlerFunc(vc.mockVespaHandler))
+ defer srv.Close()
+ target := CustomTarget(srv.URL)
+
+ _, err := target.Service("query", time.Millisecond, 42)
+ assert.NotNil(t, err)
+
+ vc.deploymentConverged = true
+ _, err = target.Service("query", time.Millisecond, 42)
+ assert.Nil(t, err)
+
+ assertServiceWait(t, 200, target, "deploy")
+ assertServiceWait(t, 500, target, "query")
+ assertServiceWait(t, 500, target, "document")
+}
+
+func TestCloudTargetWait(t *testing.T) {
+ vc := mockVespaApi{}
+ srv := httptest.NewServer(http.HandlerFunc(vc.mockVespaHandler))
+ defer srv.Close()
+ vc.serverURL = srv.URL
+
+ var logWriter bytes.Buffer
+ target := createCloudTarget(t, srv.URL, &logWriter)
+ assertServiceWait(t, 200, target, "deploy")
+
+ _, err := target.Service("query", time.Millisecond, 42)
+ assert.NotNil(t, err)
+
+ vc.deploymentConverged = true
+ _, err = target.Service("query", time.Millisecond, 42)
+ assert.Nil(t, err)
+
+ assertServiceWait(t, 500, target, "query")
+ assertServiceWait(t, 500, target, "document")
+
+ // Log timestamp is converted to local time, do the same here in case the local time where tests are run varies
+ tm := time.Unix(1631707708, 431000)
+ expectedTime := tm.Format("[15:04:05]")
+ assert.Equal(t, expectedTime+" info Deploying platform version 7.465.17 and application version 1.0.2 ...\n", logWriter.String())
+}
+
+func TestLog(t *testing.T) {
+ vc := mockVespaApi{}
+ srv := httptest.NewServer(http.HandlerFunc(vc.mockVespaHandler))
+ defer srv.Close()
+ vc.serverURL = srv.URL
+ vc.deploymentConverged = true
+
+ var buf bytes.Buffer
+ target := createCloudTarget(t, srv.URL, ioutil.Discard)
+ if err := target.PrintLog(LogOptions{Writer: &buf, Level: 3}); err != nil {
+ t.Fatal(err)
+ }
+ expected := "[2021-09-27 10:31:30.905535] host1a.dev.aws-us-east-1c info logserver-container Container.com.yahoo.container.jdisc.ConfiguredApplication\tSwitching to the latest deployed set of configurations and components. Application config generation: 52532\n" +
+ "[2021-09-27 10:31:38.600189] host1a.dev.aws-us-east-1c config config-sentinel sentinel.sentinel.config-owner\tSentinel got 3 service elements [tenant(vespa-team), application(music), instance(mpolden)] for config generation 52532\n"
+ assert.Equal(t, expected, buf.String())
+}
+
+func createCloudTarget(t *testing.T, url string, logWriter io.Writer) Target {
+ kp, err := CreateKeyPair()
+ assert.Nil(t, err)
+
+ x509KeyPair, err := tls.X509KeyPair(kp.Certificate, kp.PrivateKey)
+ assert.Nil(t, err)
+ apiKey, err := CreateAPIKey()
+ assert.Nil(t, err)
+
+ target := CloudTarget(
+ "https://example.com",
+ Deployment{
+ Application: ApplicationID{Tenant: "t1", Application: "a1", Instance: "i1"},
+ Zone: ZoneID{Environment: "dev", Region: "us-north-1"},
+ },
+ apiKey,
+ TLSOptions{KeyPair: x509KeyPair},
+ LogOptions{Writer: logWriter})
+ if ct, ok := target.(*cloudTarget); ok {
+ ct.apiURL = url
+ } else {
+ t.Fatalf("Wrong target type %T", ct)
+ }
+ return target
+}
+
+func assertServiceURL(t *testing.T, url string, target Target, service string) {
+ s, err := target.Service(service, 0, 42)
+ assert.Nil(t, err)
+ assert.Equal(t, url, s.BaseURL)
+}
+
+func assertServiceWait(t *testing.T, expectedStatus int, target Target, service string) {
+ s, err := target.Service(service, 0, 42)
+ assert.Nil(t, err)
+
+ status, err := s.Wait(0)
+ assert.Nil(t, err)
+ assert.Equal(t, expectedStatus, status)
+}
diff --git a/client/go/vespa/version.go b/client/go/vespa/version.go
new file mode 100644
index 00000000000..b20c6d360d7
--- /dev/null
+++ b/client/go/vespa/version.go
@@ -0,0 +1,5 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package vespa
+
+// Version is the Vespa CLI version number
+var Version string = "0.0.0-devel" // Overriden by linker flag as part of build
diff --git a/client/go/vespa/xml/config.go b/client/go/vespa/xml/config.go
new file mode 100644
index 00000000000..e900b50cbb0
--- /dev/null
+++ b/client/go/vespa/xml/config.go
@@ -0,0 +1,341 @@
+package xml
+
+import (
+ "bufio"
+ "bytes"
+ "encoding/xml"
+ "fmt"
+ "io"
+ "regexp"
+ "strconv"
+ "strings"
+)
+
+var DefaultDeployment Deployment
+
+func init() {
+ defaultDeploymentRaw := `<deployment version="1.0">
+ <prod>
+ <region active="true">aws-us-east-1c</region>
+ </prod>
+</deployment>`
+ d, err := ReadDeployment(strings.NewReader(defaultDeploymentRaw))
+ if err != nil {
+ panic(err)
+ }
+ DefaultDeployment = d
+}
+
+// Deployment represents the contents of a deployment.xml file.
+type Deployment struct {
+ Root xml.Name `xml:"deployment"`
+ Version string `xml:"version,attr"`
+ Instance []Instance `xml:"instance"`
+ Prod Prod `xml:"prod"`
+ rawXML bytes.Buffer
+}
+
+type Instance struct {
+ Prod Prod `xml:"prod"`
+}
+
+type Prod struct {
+ Regions []Region `xml:"region"`
+}
+
+type Region struct {
+ Name string `xml:",chardata"`
+ Active bool `xml:"active,attr"`
+}
+
+func (d Deployment) String() string { return d.rawXML.String() }
+
+// Replace replaces any elements of name found under parentName with data.
+func (s *Deployment) Replace(parentName, name string, data interface{}) error {
+ rewritten, err := Replace(&s.rawXML, parentName, name, data)
+ if err != nil {
+ return err
+ }
+ newXML, err := ReadDeployment(strings.NewReader(rewritten))
+ if err != nil {
+ return err
+ }
+ *s = newXML
+ return nil
+}
+
+// Services represents the contents of a services.xml file.
+type Services struct {
+ Root xml.Name `xml:"services"`
+ Container []Container `xml:"container"`
+ Content []Content `xml:"content"`
+ rawXML bytes.Buffer
+}
+
+type Container struct {
+ Root xml.Name `xml:"container"`
+ ID string `xml:"id,attr"`
+ Nodes Nodes `xml:"nodes"`
+}
+
+type Content struct {
+ ID string `xml:"id,attr"`
+ Nodes Nodes `xml:"nodes"`
+}
+
+type Nodes struct {
+ Count string `xml:"count,attr"`
+ Resources *Resources `xml:"resources,omitempty"`
+}
+
+type Resources struct {
+ Vcpu string `xml:"vcpu,attr"`
+ Memory string `xml:"memory,attr"`
+ Disk string `xml:"disk,attr"`
+}
+
+func (s Services) String() string { return s.rawXML.String() }
+
+// Replace replaces any elements of name found under parentName with data.
+func (s *Services) Replace(parentName, name string, data interface{}) error {
+ rewritten, err := Replace(&s.rawXML, parentName, name, data)
+ if err != nil {
+ return err
+ }
+ newXML, err := ReadServices(strings.NewReader(rewritten))
+ if err != nil {
+ return err
+ }
+ *s = newXML
+ return nil
+}
+
+func (r Resources) String() string {
+ return fmt.Sprintf("vcpu=%s,memory=%s,disk=%s", r.Vcpu, r.Memory, r.Disk)
+}
+
+// ReadDeployment reads deployment.xml from reader r.
+func ReadDeployment(r io.Reader) (Deployment, error) {
+ var deployment Deployment
+ var rawXML bytes.Buffer
+ dec := xml.NewDecoder(io.TeeReader(r, &rawXML))
+ if err := dec.Decode(&deployment); err != nil {
+ return Deployment{}, err
+ }
+ deployment.rawXML = rawXML
+ return deployment, nil
+}
+
+// ReadServices reads services.xml from reader r.
+func ReadServices(r io.Reader) (Services, error) {
+ var services Services
+ var rawXML bytes.Buffer
+ dec := xml.NewDecoder(io.TeeReader(r, &rawXML))
+ if err := dec.Decode(&services); err != nil {
+ return Services{}, err
+ }
+ services.rawXML = rawXML
+ return services, nil
+}
+
+// Regions returns given region names as elements.
+func Regions(names ...string) []Region {
+ var regions []Region
+ for _, z := range names {
+ regions = append(regions, Region{Name: z, Active: true})
+ }
+ return regions
+}
+
+// ParseResources parses nodes resources from string s.
+func ParseResources(s string) (Resources, error) {
+ parts := strings.Split(s, ",")
+ if len(parts) != 3 {
+ return Resources{}, fmt.Errorf("invalid resources: %q", s)
+ }
+ vcpu, err := parseResource("vcpu", parts[0])
+ if err != nil {
+ return Resources{}, err
+ }
+ memory, err := parseResource("memory", parts[1])
+ if err != nil {
+ return Resources{}, err
+ }
+ disk, err := parseResource("disk", parts[2])
+ if err != nil {
+ return Resources{}, err
+ }
+ return Resources{Vcpu: vcpu, Memory: memory, Disk: disk}, nil
+}
+
+// ParseNodeCount parses a node count range from string s.
+func ParseNodeCount(s string) (int, int, error) {
+ parseErr := fmt.Errorf("invalid node count: %q", s)
+ n, err := strconv.Atoi(s)
+ if err == nil {
+ return n, n, nil
+ }
+ if strings.HasPrefix(s, "[") && strings.HasSuffix(s, "]") {
+ parts := strings.Split(s[1:len(s)-1], ",")
+ if len(parts) != 2 {
+ return 0, 0, parseErr
+ }
+ min, err := strconv.Atoi(parts[0])
+ if err != nil {
+ return 0, 0, parseErr
+ }
+ max, err := strconv.Atoi(parts[1])
+ if err != nil {
+ return 0, 0, parseErr
+ }
+ return min, max, nil
+ }
+ return 0, 0, parseErr
+}
+
+// IsProdRegion returns whether string s is a valid production region.
+func IsProdRegion(s string, system string) bool {
+ if system == "publiccd" {
+ return s == "aws-us-east-1c"
+ }
+ switch s {
+ case "aws-us-east-1c", "aws-us-west-2a",
+ "aws-eu-west-1a", "aws-ap-northeast-1a":
+ return true
+ }
+ return false
+}
+
+func parseResource(field, s string) (string, error) {
+ parts := strings.SplitN(s, "=", 2)
+ if len(parts) != 2 || parts[0] != field {
+ return "", fmt.Errorf("invalid value for %s field: %q", field, s)
+ }
+ return parts[1], nil
+}
+
+// ReplaceRaw finds all elements of name in rawXML and replaces their contents with value.
+func ReplaceRaw(rawXML, name, value string) string {
+ startElement := "<" + name + ">"
+ endElement := "</" + name + ">"
+ re := regexp.MustCompile(regexp.QuoteMeta(startElement) + ".*" + regexp.QuoteMeta(endElement))
+ return re.ReplaceAllString(rawXML, startElement+value+endElement)
+}
+
+// Replace looks for an element name in the XML read from reader r, appearing inside a element named parentName.
+//
+// Any matching elements found are replaced with data. If parentName contains an ID selector, e.g. "email#my-id", only
+// the elements inside the parent element with the attribute id="my-id" are replaced.
+//
+// If data is nil, any matching elements are removed instead of replaced.
+func Replace(r io.Reader, parentName, name string, data interface{}) (string, error) {
+ var buf bytes.Buffer
+ dec := xml.NewDecoder(r)
+ enc := xml.NewEncoder(&buf)
+ enc.Indent("", " ")
+
+ parts := strings.SplitN(parentName, "#", 2)
+ id := ""
+ if len(parts) > 1 {
+ parentName = parts[0]
+ id = parts[1]
+ }
+
+ foundParent := false
+ replacing := false
+ done := false
+ for {
+ token, err := dec.Token()
+ if err == io.EOF {
+ break
+ } else if err != nil {
+ return "", err
+ }
+ token = joinNamespace(token)
+ if isEndElement(parentName, token) {
+ foundParent = false
+ done = false
+ }
+ if _, ok := getStartElement(parentName, id, token); ok {
+ foundParent = true
+ }
+ if foundParent {
+ if isEndElement(name, token) {
+ replacing = false
+ continue
+ }
+ replacableElement, ok := getStartElement(name, "", token)
+ if ok {
+ replacing = true
+ }
+ if replacing {
+ if !done && data != nil {
+ replacableElement.Attr = nil // Clear any existing attributes as given data should contain the wanted ones
+ if err := enc.EncodeElement(data, replacableElement); err != nil {
+ return "", err
+ }
+ done = true
+ }
+ continue
+ }
+ }
+ if err := enc.EncodeToken(token); err != nil {
+ return "", err
+ }
+ }
+ if err := enc.Flush(); err != nil {
+ return "", err
+ }
+ var sb strings.Builder
+ scanner := bufio.NewScanner(&buf)
+ for scanner.Scan() {
+ line := scanner.Text()
+ // Skip lines containing only whitespace
+ if strings.TrimSpace(line) == "" {
+ continue
+ }
+ sb.WriteString(line)
+ sb.WriteRune('\n')
+ }
+ if err := scanner.Err(); err != nil {
+ return "", err
+ }
+ return sb.String(), nil
+}
+
+func joinNamespace(token xml.Token) xml.Token {
+ // Hack to work around the broken namespace support in Go
+ // https://github.com/golang/go/issues/13400
+ if startElement, ok := token.(xml.StartElement); ok {
+ attr := make([]xml.Attr, 0, len(startElement.Attr))
+ for _, a := range startElement.Attr {
+ if a.Name.Space != "" {
+ a.Name.Space = ""
+ a.Name.Local = "xmlns:" + a.Name.Local
+ }
+ attr = append(attr, a)
+ }
+ startElement.Attr = attr
+ return startElement
+ }
+ return token
+}
+
+func getStartElement(name, id string, token xml.Token) (xml.StartElement, bool) {
+ startElement, ok := token.(xml.StartElement)
+ if !ok {
+ return xml.StartElement{}, false
+ }
+ matchingID := id == ""
+ for _, attr := range startElement.Attr {
+ if attr.Name.Local == "id" && attr.Value == id {
+ matchingID = true
+ }
+ }
+ return startElement, startElement.Name.Local == name && matchingID
+}
+
+func isEndElement(name, token xml.Token) bool {
+ endElement, ok := token.(xml.EndElement)
+ return ok && endElement.Name.Local == name
+}
diff --git a/client/go/vespa/xml/config_test.go b/client/go/vespa/xml/config_test.go
new file mode 100644
index 00000000000..9d18636473b
--- /dev/null
+++ b/client/go/vespa/xml/config_test.go
@@ -0,0 +1,297 @@
+package xml
+
+import (
+ "reflect"
+ "strings"
+ "testing"
+)
+
+func TestReplaceDeployment(t *testing.T) {
+ in := `
+<deployment version="1.0">
+ <prod>
+ <region active="true">us-north-1</region>
+ <region active="false">eu-north-2</region>
+ </prod>
+</deployment>`
+
+ out := `<deployment version="1.0">
+ <prod>
+ <region active="true">eu-south-1</region>
+ <region active="true">us-central-1</region>
+ </prod>
+</deployment>
+`
+ regions := Regions("eu-south-1", "us-central-1")
+ assertReplace(t, in, out, "prod", "region", regions)
+}
+
+func TestReplaceDeploymentWithInstance(t *testing.T) {
+ in := `
+<deployment version="1.0">
+ <instance id="default">
+ <prod>
+ <region active="true">us-north-1</region>
+ </prod>
+ </instance>
+ <instance id="beta">
+ <prod>
+ <region active="true">eu-south-1</region>
+ </prod>
+ </instance>
+</deployment>`
+
+ out := `<deployment version="1.0">
+ <instance id="default">
+ <prod>
+ <region active="true">us-central-1</region>
+ <region active="true">eu-west-1</region>
+ </prod>
+ </instance>
+ <instance id="beta">
+ <prod>
+ <region active="true">us-central-1</region>
+ <region active="true">eu-west-1</region>
+ </prod>
+ </instance>
+</deployment>
+`
+ regions := Regions("us-central-1", "eu-west-1")
+ assertReplace(t, in, out, "prod", "region", regions)
+}
+
+func TestReplaceServices(t *testing.T) {
+ in := `
+<services xmlns:deploy="vespa" xmlns:preprocess="properties">
+ <container id="qrs">
+ <search/>
+ <document-api/>
+ <nodes count="2">
+ <resources vcpu="4" memory="8Gb" disk="50Gb"/>
+ </nodes>
+ </container>
+ <content id="music">
+ <redundancy>2</redundancy>
+ <nodes count="3">
+ <resources vcpu="8" memory="32Gb" disk="200Gb"/>
+ </nodes>
+ <documents>
+ <document type="music"/>
+ </documents>
+ </content>
+</services>
+`
+
+ out := `<services xmlns:deploy="vespa" xmlns:preprocess="properties">
+ <container id="qrs">
+ <search></search>
+ <document-api></document-api>
+ <nodes count="4">
+ <resources vcpu="2" memory="4Gb" disk="50Gb"></resources>
+ </nodes>
+ </container>
+ <content id="music">
+ <redundancy>2</redundancy>
+ <nodes count="3">
+ <resources vcpu="8" memory="32Gb" disk="200Gb"></resources>
+ </nodes>
+ <documents>
+ <document type="music"></document>
+ </documents>
+ </content>
+</services>
+`
+ nodes := Nodes{Count: "4", Resources: &Resources{Vcpu: "2", Memory: "4Gb", Disk: "50Gb"}}
+ assertReplace(t, in, out, "container#qrs", "nodes", nodes)
+}
+
+func TestReplaceServicesEmptyResources(t *testing.T) {
+ in := `<services xmlns:deploy="vespa" xmlns:preprocess="properties">
+ <container id="movies">
+ <search></search>
+ <document-api></document-api>
+ <nodes count="4"/>
+ </container>
+</services>
+`
+ out := `<services xmlns:deploy="vespa" xmlns:preprocess="properties">
+ <container id="movies">
+ <search></search>
+ <document-api></document-api>
+ <nodes count="5">
+ <resources vcpu="4" memory="8Gb" disk="100Gb"></resources>
+ </nodes>
+ </container>
+</services>
+`
+ nodes := Nodes{Count: "5", Resources: &Resources{Vcpu: "4", Memory: "8Gb", Disk: "100Gb"}}
+ assertReplace(t, in, out, "container#movies", "nodes", nodes)
+}
+
+func TestReplaceRemovesElement(t *testing.T) {
+ in := `
+<deployment version="1.0">
+ <prod>
+ <region active="true">eu-south-1</region>
+ <region active="true">us-central-1</region>
+ <test>us-central-1</test>
+ </prod>
+</deployment>`
+
+ out := `<deployment version="1.0">
+ <prod>
+ <region active="true">eu-south-1</region>
+ <region active="true">us-central-1</region>
+ </prod>
+</deployment>
+`
+ assertReplace(t, in, out, "prod", "test", nil)
+}
+
+func TestReplaceRaw(t *testing.T) {
+ in := `
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+ http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>ai.vespa.cloud.docsearch</groupId>
+ <artifactId>vespacloud-docsearch</artifactId>
+ <packaging>container-plugin</packaging>
+ <version>1.0.0</version>
+
+ <parent>
+ <groupId>com.yahoo.vespa</groupId>
+ <artifactId>cloud-tenant-base</artifactId>
+ <version>[7,999)</version>
+ </parent>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <tenant>tenant</tenant>
+ <application>app</application>
+ <instance>instance</instance>
+ </properties>
+
+</project>
+`
+ replacements := map[string]string{
+ "tenant": "vespa-team",
+ "application": "music",
+ "instance": "default",
+ }
+ rewritten := in
+ for element, value := range replacements {
+ rewritten = ReplaceRaw(rewritten, element, value)
+ }
+
+ out := `
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+ http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>ai.vespa.cloud.docsearch</groupId>
+ <artifactId>vespacloud-docsearch</artifactId>
+ <packaging>container-plugin</packaging>
+ <version>1.0.0</version>
+
+ <parent>
+ <groupId>com.yahoo.vespa</groupId>
+ <artifactId>cloud-tenant-base</artifactId>
+ <version>[7,999)</version>
+ </parent>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <tenant>vespa-team</tenant>
+ <application>music</application>
+ <instance>default</instance>
+ </properties>
+
+</project>
+`
+ if rewritten != out {
+ t.Errorf("got:\n%s\nwant:\n%s\n", rewritten, out)
+ }
+}
+
+func TestReadServicesNoResources(t *testing.T) {
+ s := `
+<services xmlns:deploy="vespa" xmlns:preprocess="properties">
+ <container id="qrs">
+ <nodes count="2">
+ <resources vcpu="4" memory="8Gb" disk="50Gb"/>
+ </nodes>
+ </container>
+ <content id="music">
+ <redundancy>2</redundancy>
+ <nodes count="3"/>
+ <documents>
+ <document type="music"/>
+ </documents>
+ </content>
+</services>
+`
+ services, err := ReadServices(strings.NewReader(s))
+ if err != nil {
+ t.Fatal(err)
+ }
+ if got := services.Content[0].Nodes.Resources; got != nil {
+ t.Errorf("got %+v, want nil", got)
+ }
+}
+
+func TestParseResources(t *testing.T) {
+ assertResources(t, "foo", Resources{}, true)
+ assertResources(t, "vcpu=2,memory=4Gb", Resources{}, true)
+ assertResources(t, "memory=4Gb,vcpu=2,disk=100Gb", Resources{}, true)
+ assertResources(t, "vcpu=2,memory=4Gb,disk=100Gb", Resources{Vcpu: "2", Memory: "4Gb", Disk: "100Gb"}, false)
+}
+
+func TestParseNodeCount(t *testing.T) {
+ assertNodeCount(t, "2", 2, 2, false)
+ assertNodeCount(t, "[4,8]", 4, 8, false)
+
+ assertNodeCount(t, "foo", 0, 0, true)
+ assertNodeCount(t, "[foo,bar]", 0, 0, true)
+}
+
+func assertReplace(t *testing.T, input, want, parentElement, element string, data interface{}) {
+ got, err := Replace(strings.NewReader(input), parentElement, element, data)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if got != want {
+ t.Errorf("got:\n%s\nwant:\n%s\n", got, want)
+ }
+}
+
+func assertNodeCount(t *testing.T, input string, wantMin, wantMax int, wantErr bool) {
+ min, max, err := ParseNodeCount(input)
+ if wantErr {
+ if err == nil {
+ t.Errorf("want error for input %q", input)
+ }
+ return
+ }
+ if min != wantMin || max != wantMax {
+ t.Errorf("got min = %d, max = %d, want min = %d, max = %d", min, max, wantMin, wantMax)
+ }
+}
+
+func assertResources(t *testing.T, input string, want Resources, wantErr bool) {
+ got, err := ParseResources(input)
+ if wantErr {
+ if err == nil {
+ t.Errorf("want error for %q", input)
+ }
+ return
+ }
+ if err != nil {
+ t.Fatal(err)
+ }
+ if !reflect.DeepEqual(want, got) {
+ t.Errorf("got %+v, want %+v", got, want)
+ }
+}
diff --git a/client/pom.xml b/client/pom.xml
index ccf980f11dc..816941d7b7f 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/client/src/main/java/ai/vespa/client/dsl/Annotation.java b/client/src/main/java/ai/vespa/client/dsl/Annotation.java
index 906f2abcca0..1949bc7d3f9 100644
--- a/client/src/main/java/ai/vespa/client/dsl/Annotation.java
+++ b/client/src/main/java/ai/vespa/client/dsl/Annotation.java
@@ -20,6 +20,10 @@ public class Annotation {
return this;
}
+ public boolean contains(String key) {
+ return annotations.containsKey(key);
+ }
+
@Override
public String toString() {
return annotations == null || annotations.isEmpty()
diff --git a/client/src/main/java/ai/vespa/client/dsl/GeoLocation.java b/client/src/main/java/ai/vespa/client/dsl/GeoLocation.java
new file mode 100644
index 00000000000..c0d8fabc42f
--- /dev/null
+++ b/client/src/main/java/ai/vespa/client/dsl/GeoLocation.java
@@ -0,0 +1,44 @@
+package ai.vespa.client.dsl;
+
+import org.apache.commons.text.StringEscapeUtils;
+
+public class GeoLocation extends QueryChain {
+
+ private String fieldName;
+ private Double longitude;
+ private Double latitude;
+ private String radius;
+
+ public GeoLocation(String fieldName, Double longitude, Double latitude, String radius) {
+ this.fieldName = fieldName;
+ this.longitude = longitude;
+ this.latitude = latitude;
+ this.radius = radius;
+ this.nonEmpty = true;
+ }
+
+ @Override
+ boolean hasPositiveSearchField(String fieldName) {
+ return this.fieldName.equals(fieldName);
+ }
+
+ @Override
+ boolean hasPositiveSearchField(String fieldName, Object value) {
+ return false;
+ }
+
+ @Override
+ boolean hasNegativeSearchField(String fieldName) {
+ return false;
+ }
+
+ @Override
+ boolean hasNegativeSearchField(String fieldName, Object value) {
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return Text.format("geoLocation(%s, %f, %f, \"%s\")", fieldName, longitude, latitude, StringEscapeUtils.escapeJava(radius));
+ }
+}
diff --git a/client/src/main/java/ai/vespa/client/dsl/NearestNeighbor.java b/client/src/main/java/ai/vespa/client/dsl/NearestNeighbor.java
new file mode 100644
index 00000000000..6c95d2b6fd7
--- /dev/null
+++ b/client/src/main/java/ai/vespa/client/dsl/NearestNeighbor.java
@@ -0,0 +1,52 @@
+package ai.vespa.client.dsl;
+
+import java.util.stream.Collectors;
+
+public class NearestNeighbor extends QueryChain {
+
+ private Annotation annotation;
+ private String docVectorName;
+ private String queryVectorName;
+
+
+ public NearestNeighbor(String docVectorName, String queryVectorName) {
+ this.docVectorName = docVectorName;
+ this.queryVectorName = queryVectorName;
+ this.nonEmpty = true;
+ }
+
+ NearestNeighbor annotate(Annotation annotation) {
+ this.annotation = annotation;
+ return this;
+ }
+
+ @Override
+ boolean hasPositiveSearchField(String fieldName) {
+ return this.docVectorName.equals(fieldName);
+ }
+
+ @Override
+ boolean hasPositiveSearchField(String fieldName, Object value) {
+ return this.docVectorName.equals(fieldName) && queryVectorName.equals(value);
+ }
+
+ @Override
+ boolean hasNegativeSearchField(String fieldName) {
+ return false;
+ }
+
+ @Override
+ boolean hasNegativeSearchField(String fieldName, Object value) {
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ boolean hasAnnotation = A.hasAnnotation(annotation);
+ if (!hasAnnotation || !annotation.contains("targetHits")) {
+ throw new IllegalArgumentException("must specify target hits in nearest neighbor query");
+ }
+ String s = Text.format("nearestNeighbor(%s, %s)", docVectorName, queryVectorName);
+ return Text.format("([%s]%s)", annotation, s);
+ }
+}
diff --git a/client/src/main/java/ai/vespa/client/dsl/Q.java b/client/src/main/java/ai/vespa/client/dsl/Q.java
index 7637f76f095..32b79c84458 100644
--- a/client/src/main/java/ai/vespa/client/dsl/Q.java
+++ b/client/src/main/java/ai/vespa/client/dsl/Q.java
@@ -169,4 +169,30 @@ public final class Q {
public static WeakAnd weakand(String field, Query query) {
return new WeakAnd(field, query);
}
+
+ /**
+ * GeoLocation geo location
+ * https://docs.vespa.ai/en/reference/query-language-reference.html#geolocation
+ *
+ * @param field the field
+ * @param longitude longitude
+ * @param latitude latitude
+ * @param radius a string specifying the radius and it's unit
+ * @return the geo-location query
+ */
+ public static GeoLocation geoLocation(String field, Double longitude, Double latitude, String radius) {
+ return new GeoLocation(field, longitude, latitude, radius);
+ }
+
+ /**
+ * NearestNeighbor nearest neighbor
+ * https://docs.vespa.ai/en/reference/query-language-reference.html#nearestneighbor
+ *
+ * @param docVectorName the vector name defined in the vespa schema
+ * @param queryVectorName the vector name in this query
+ * @return the nearest neighbor query
+ */
+ public static NearestNeighbor nearestNeighbor(String docVectorName, String queryVectorName) {
+ return new NearestNeighbor(docVectorName, queryVectorName);
+ }
}
diff --git a/client/src/main/java/ai/vespa/client/dsl/Text.java b/client/src/main/java/ai/vespa/client/dsl/Text.java
index 98138e5e61a..aca43d40b6a 100644
--- a/client/src/main/java/ai/vespa/client/dsl/Text.java
+++ b/client/src/main/java/ai/vespa/client/dsl/Text.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.client.dsl;
diff --git a/client/src/test/groovy/ai/vespa/client/dsl/QTest.groovy b/client/src/test/groovy/ai/vespa/client/dsl/QTest.groovy
index d1560937fef..1bada4e8f59 100644
--- a/client/src/test/groovy/ai/vespa/client/dsl/QTest.groovy
+++ b/client/src/test/groovy/ai/vespa/client/dsl/QTest.groovy
@@ -244,6 +244,46 @@ class QTest extends Specification {
q == """yql=select * from sd1 where weakAnd(f1, f1 contains "v1", f2 contains "v2") and ([{"scoreThreshold":0.13}]weakAnd(f3, f1 contains "v1", f2 contains "v2"));"""
}
+ def "geo location"() {
+ given:
+ def q = Q.select("*")
+ .from("sd1")
+ .where("a").contains("b").and(Q.geoLocation("taiwan", 25.105497, 121.597366, "200km"))
+ .semicolon()
+ .build()
+
+ expect:
+ q == """yql=select * from sd1 where a contains "b" and geoLocation(taiwan, 25.105497, 121.597366, "200km");"""
+ }
+
+ def "nearest neighbor query"() {
+ when:
+ def q = Q.select("*")
+ .from("sd1")
+ .where("a").contains("b")
+ .and(Q.nearestNeighbor("vec1", "vec2")
+ .annotate(A.a("targetHits", 10, "approximate", false))
+ )
+ .semicolon()
+ .build()
+
+ then:
+ q == """yql=select * from sd1 where a contains "b" and ([{"approximate":false,"targetHits":10}]nearestNeighbor(vec1, vec2));"""
+ }
+
+ def "invalid nearest neighbor should throws an exception (targetHits annotation is required)"() {
+ when:
+ def q = Q.select("*")
+ .from("sd1")
+ .where("a").contains("b").and(Q.nearestNeighbor("vec1", "vec2"))
+ .semicolon()
+ .build()
+
+ then:
+ thrown(IllegalArgumentException)
+ }
+
+
def "rank with only query"() {
given:
def q = Q.select("*")
diff --git a/cloud-tenant-base-dependencies-enforcer/README.md b/cloud-tenant-base-dependencies-enforcer/README.md
index 9708c6b9441..678977fb867 100644
--- a/cloud-tenant-base-dependencies-enforcer/README.md
+++ b/cloud-tenant-base-dependencies-enforcer/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Dependencies enforcer for cloud-tenant-base parent pom
Enforces that only allowed dependencies are visible for tenant projects using the cloud-tenant-base parent pom.
diff --git a/cloud-tenant-base-dependencies-enforcer/pom.xml b/cloud-tenant-base-dependencies-enforcer/pom.xml
index 481211390e0..b473c92b6f5 100644
--- a/cloud-tenant-base-dependencies-enforcer/pom.xml
+++ b/cloud-tenant-base-dependencies-enforcer/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
@@ -38,7 +38,6 @@
<org.lz4.version>1.7.1</org.lz4.version>
<org.json.version>20090211</org.json.version><!-- TODO Vespa 8: remove as provided dependency -->
<slf4j.version>1.7.30</slf4j.version>
- <tensorflow.version>1.12.0</tensorflow.version>
<xml-apis.version>1.4.01</xml-apis.version>
<hk2.version>2.5.0-b32</hk2.version>
@@ -120,14 +119,11 @@
<include>org.glassfish.hk2:hk2-utils:[${hk2.version}]:jar:provided</include>
<include>org.glassfish.hk2:osgi-resource-locator:[${hk2.osgi-resource-locator.version}]:jar:provided</include>
<include>org.glassfish.jersey.bundles.repackaged:jersey-guava:[${jersey2.version}]:jar:provided</include>
- <include>org.glassfish.jersey.containers:jersey-container-servlet-core:[${jersey2.version}]:jar:provided</include>
- <include>org.glassfish.jersey.containers:jersey-container-servlet:[${jersey2.version}]:jar:provided</include>
<include>org.glassfish.jersey.core:jersey-client:[${jersey2.version}]:jar:provided</include>
<include>org.glassfish.jersey.core:jersey-common:[${jersey2.version}]:jar:provided</include>
<include>org.glassfish.jersey.core:jersey-server:[${jersey2.version}]:jar:provided</include>
<include>org.glassfish.jersey.ext:jersey-entity-filtering:[${jersey2.version}]:jar:provided</include>
<include>org.glassfish.jersey.ext:jersey-proxy-client:[${jersey2.version}]:jar:provided</include>
- <include>org.glassfish.jersey.media:jersey-media-jaxb:[${jersey2.version}]:jar:provided</include>
<include>org.glassfish.jersey.media:jersey-media-json-jackson:[${jersey2.version}]:jar:provided</include>
<include>org.glassfish.jersey.media:jersey-media-multipart:[${jersey2.version}]:jar:provided</include>
<include>org.javassist:javassist:[${javassist.version}]:jar:provided</include>
@@ -163,7 +159,6 @@
<include>com.yahoo.vespa:fileacquirer:*:jar:provided</include>
<include>com.yahoo.vespa:fsa:*:jar:provided</include>
<include>com.yahoo.vespa:hosted-zone-api:*:jar:provided</include>
- <include>com.yahoo.vespa:http-utils:*:jar:provided</include>
<include>com.yahoo.vespa:jdisc_core:*:jar:provided</include>
<include>com.yahoo.vespa:jrt:*:jar:provided</include>
<include>com.yahoo.vespa:linguistics:*:jar:provided</include>
@@ -272,10 +267,6 @@
<include>org.junit.vintage:junit-vintage-engine:[${junit5.version}]:jar:test</include>
<include>org.kohsuke:libpam4j:1.11:jar:test</include>
<include>org.opentest4j:opentest4j:1.2.0:jar:test</include>
- <include>org.tensorflow:libtensorflow:[${tensorflow.version}]:jar:test</include>
- <include>org.tensorflow:libtensorflow_jni:[${tensorflow.version}]:jar:test</include>
- <include>org.tensorflow:proto:[${tensorflow.version}]:jar:test</include>
- <include>org.tensorflow:tensorflow:[${tensorflow.version}]:jar:test</include>
<include>software.amazon.ion:ion-java:1.0.2:jar:test</include>
<include>xerces:xercesImpl:2.12.0:jar:test</include>
</includes>
diff --git a/cloud-tenant-cd/CMakeLists.txt b/cloud-tenant-cd/CMakeLists.txt
index 2d30b9c4611..e9498d21871 100644
--- a/cloud-tenant-cd/CMakeLists.txt
+++ b/cloud-tenant-cd/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(cloud-tenant-cd)
diff --git a/cloud-tenant-cd/pom.xml b/cloud-tenant-cd/pom.xml
index d7e5a4a9642..b08cf694952 100644
--- a/cloud-tenant-cd/pom.xml
+++ b/cloud-tenant-cd/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/cloud-tenant-cd/src/main/java/ai/vespa/hosted/cd/cloud/impl/VespaTestRuntime.java b/cloud-tenant-cd/src/main/java/ai/vespa/hosted/cd/cloud/impl/VespaTestRuntime.java
index 91f08fb9943..db9072e6198 100644
--- a/cloud-tenant-cd/src/main/java/ai/vespa/hosted/cd/cloud/impl/VespaTestRuntime.java
+++ b/cloud-tenant-cd/src/main/java/ai/vespa/hosted/cd/cloud/impl/VespaTestRuntime.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.cd.cloud.impl;
import ai.vespa.cloud.Zone;
diff --git a/cloud-tenant-cd/src/main/java/ai/vespa/hosted/cd/cloud/impl/VespaTestRuntimeProvider.java b/cloud-tenant-cd/src/main/java/ai/vespa/hosted/cd/cloud/impl/VespaTestRuntimeProvider.java
index d90a2d595c7..f6b537da5fa 100644
--- a/cloud-tenant-cd/src/main/java/ai/vespa/hosted/cd/cloud/impl/VespaTestRuntimeProvider.java
+++ b/cloud-tenant-cd/src/main/java/ai/vespa/hosted/cd/cloud/impl/VespaTestRuntimeProvider.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.cd.cloud.impl;
import ai.vespa.hosted.cd.internal.TestRuntimeProvider;
diff --git a/cloud-tenant-cd/src/main/resources/META-INF/services/ai.vespa.hosted.cd.TestRuntime b/cloud-tenant-cd/src/main/resources/META-INF/services/ai.vespa.hosted.cd.TestRuntime
index 884d7d4b171..9d318b87fca 100644
--- a/cloud-tenant-cd/src/main/resources/META-INF/services/ai.vespa.hosted.cd.TestRuntime
+++ b/cloud-tenant-cd/src/main/resources/META-INF/services/ai.vespa.hosted.cd.TestRuntime
@@ -1,2 +1,2 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
ai.vespa.hosted.cd.cloud.impl.VespaTestRuntime \ No newline at end of file
diff --git a/clustercontroller-apps/CMakeLists.txt b/clustercontroller-apps/CMakeLists.txt
index f59ffbfa7bf..d18180fabee 100644
--- a/clustercontroller-apps/CMakeLists.txt
+++ b/clustercontroller-apps/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(clustercontroller-apps)
diff --git a/clustercontroller-apps/pom.xml b/clustercontroller-apps/pom.xml
index 10fa263a8db..4b90f3c6ca9 100644
--- a/clustercontroller-apps/pom.xml
+++ b/clustercontroller-apps/pom.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterController.java b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterController.java
index f66754937bd..32ad2d7d779 100644
--- a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterController.java
+++ b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterController.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.apps.clustercontroller;
import com.google.inject.Inject;
diff --git a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterControllerClusterConfigurer.java b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterControllerClusterConfigurer.java
index c6a2ecc0c1c..75e838bae3e 100644
--- a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterControllerClusterConfigurer.java
+++ b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterControllerClusterConfigurer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.apps.clustercontroller;
import com.google.inject.Inject;
diff --git a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StateRestApiV2Handler.java b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StateRestApiV2Handler.java
index 67aef138135..517f1f9a02c 100644
--- a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StateRestApiV2Handler.java
+++ b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StateRestApiV2Handler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.apps.clustercontroller;
import com.google.inject.Inject;
diff --git a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StatusHandler.java b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StatusHandler.java
index 6817a033675..368d9e52b52 100644
--- a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StatusHandler.java
+++ b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StatusHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.apps.clustercontroller;
import com.google.inject.Inject;
diff --git a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscHttpRequestHandler.java b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscHttpRequestHandler.java
index f518fe23fe6..b0642e11fdf 100644
--- a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscHttpRequestHandler.java
+++ b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscHttpRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.apputil.communication.http;
import com.yahoo.container.jdisc.LoggingRequestHandler;
diff --git a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscMetricWrapper.java b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscMetricWrapper.java
index 559eaee4821..5a4df289d87 100644
--- a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscMetricWrapper.java
+++ b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscMetricWrapper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.apputil.communication.http;
import com.yahoo.jdisc.Metric;
diff --git a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/package-info.java b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/package-info.java
index 5d09603bea6..5ffb703a71d 100644
--- a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/package-info.java
+++ b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.clustercontroller.apputil.communication.http;
diff --git a/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterControllerClusterConfigurerTest.java b/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterControllerClusterConfigurerTest.java
index 16b978b3ce9..f6e64dc7186 100644
--- a/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterControllerClusterConfigurerTest.java
+++ b/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterControllerClusterConfigurerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.apps.clustercontroller;
import com.yahoo.cloud.config.SlobroksConfig;
diff --git a/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterControllerTest.java b/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterControllerTest.java
index 77b6d54a541..5c9a7eb9c0c 100644
--- a/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterControllerTest.java
+++ b/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterControllerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.apps.clustercontroller;
import com.yahoo.jdisc.Metric;
diff --git a/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StateRestApiV2HandlerTest.java b/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StateRestApiV2HandlerTest.java
index e972d2ead39..ab05819b625 100644
--- a/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StateRestApiV2HandlerTest.java
+++ b/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StateRestApiV2HandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.apps.clustercontroller;
import com.yahoo.cloud.config.ClusterInfoConfig;
diff --git a/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StatusHandlerTest.java b/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StatusHandlerTest.java
index 49537597f83..765ce109d93 100644
--- a/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StatusHandlerTest.java
+++ b/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StatusHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.apps.clustercontroller;
import org.junit.Test;
diff --git a/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscHttpRequestHandlerTest.java b/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscHttpRequestHandlerTest.java
index 2326189a369..6a27228feab 100644
--- a/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscHttpRequestHandlerTest.java
+++ b/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscHttpRequestHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.apputil.communication.http;
import com.yahoo.vespa.clustercontroller.utils.communication.http.HttpRequest;
diff --git a/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscMetricWrapperTest.java b/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscMetricWrapperTest.java
index 13abfa0ecd5..e7c8301cfca 100644
--- a/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscMetricWrapperTest.java
+++ b/clustercontroller-apps/src/test/java/com/yahoo/vespa/clustercontroller/apputil/communication/http/JDiscMetricWrapperTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.apputil.communication.http;
import com.yahoo.jdisc.Metric;
diff --git a/clustercontroller-core/CMakeLists.txt b/clustercontroller-core/CMakeLists.txt
index 6754e893009..bd0d8b26cf4 100644
--- a/clustercontroller-core/CMakeLists.txt
+++ b/clustercontroller-core/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(clustercontroller-core)
diff --git a/clustercontroller-core/pom.xml b/clustercontroller-core/pom.xml
index 47afe3b7df3..fadc6c2a3c2 100644
--- a/clustercontroller-core/pom.xml
+++ b/clustercontroller-core/pom.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AggregatedClusterStats.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AggregatedClusterStats.java
index ce2cd19b578..3d8ee0d4e57 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AggregatedClusterStats.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AggregatedClusterStats.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
/**
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AggregatedStatsMergePendingChecker.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AggregatedStatsMergePendingChecker.java
index e6ce1df2b48..336f43043d7 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AggregatedStatsMergePendingChecker.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AggregatedStatsMergePendingChecker.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
/**
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AnnotatedClusterState.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AnnotatedClusterState.java
index 998c0703901..7654f9bc5a4 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AnnotatedClusterState.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AnnotatedClusterState.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.ClusterState;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterEvent.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterEvent.java
index b681b4d8b76..1853a024e11 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterEvent.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterEvent.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
public class ClusterEvent implements Event{
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterInfo.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterInfo.java
index 57b2998679a..c25dd5a5965 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterInfo.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterInfo.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.distribution.ConfiguredNode;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundle.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundle.java
index c4e61b1d3d0..e55f3d4592b 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundle.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundle.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.ClusterState;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateDeriver.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateDeriver.java
index a3941ddc1c2..0ed0c8457ca 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateDeriver.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateDeriver.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
/**
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateGenerator.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateGenerator.java
index f46badf2fd9..f984c3cb3a2 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateGenerator.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateGenerator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.ClusterState;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateHistory.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateHistory.java
index ef747b71a26..a6d82c2fbeb 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateHistory.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateHistory.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import java.util.Collections;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateHistoryEntry.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateHistoryEntry.java
index 17c6d6b721f..be89617fe79 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateHistoryEntry.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateHistoryEntry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.ClusterState;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateReason.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateReason.java
index 3d594be5219..90d44e71b38 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateReason.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateReason.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
/**
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateView.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateView.java
index c2215ef94c7..33cb6ce9fff 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateView.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateView.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.ClusterState;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsAggregator.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsAggregator.java
index ad7ec71c808..a21185ce41d 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsAggregator.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsAggregator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import java.util.HashMap;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsChangeTracker.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsChangeTracker.java
index 3b9de562ea6..d1494d4a7e7 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsChangeTracker.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsChangeTracker.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.document.FixedBucketSpaces;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/Communicator.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/Communicator.java
index e2a84804dfc..a8f41d3ec06 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/Communicator.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/Communicator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
/**
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ContentCluster.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ContentCluster.java
index 41c7c985c0b..fabc4999fe5 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ContentCluster.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ContentCluster.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ContentClusterStats.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ContentClusterStats.java
index bc476923b23..6f6dd664f31 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ContentClusterStats.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ContentClusterStats.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import java.util.*;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ContentNodeStats.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ContentNodeStats.java
index f26bc90c1c0..eea6dc687bb 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ContentNodeStats.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ContentNodeStats.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vespa.clustercontroller.core.hostinfo.StorageNode;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/DistributorNodeInfo.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/DistributorNodeInfo.java
index a21fbd22213..fb9a4cf4604 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/DistributorNodeInfo.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/DistributorNodeInfo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.distribution.Distribution;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/Event.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/Event.java
index 9f08caded39..b964206711f 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/Event.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/Event.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
public interface Event {
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/EventDiffCalculator.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/EventDiffCalculator.java
index 900f85be888..66ccf6235ba 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/EventDiffCalculator.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/EventDiffCalculator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.distribution.ConfiguredNode;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/EventLog.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/EventLog.java
index 93fd176edd1..0058d12f640 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/EventLog.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/EventLog.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.Node;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/EventLogInterface.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/EventLogInterface.java
index 6381d25f023..382025bb67b 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/EventLogInterface.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/EventLogInterface.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.Node;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java
index 72765d24771..ba8657fa3a6 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.document.FixedBucketSpaces;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetControllerOptions.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetControllerOptions.java
index c841f4741ba..16e0e1c0673 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetControllerOptions.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetControllerOptions.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.jrt.slobrok.api.BackOffPolicy;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/GetNodeStateRequest.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/GetNodeStateRequest.java
index 1c9329e065f..e2c31081cd8 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/GetNodeStateRequest.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/GetNodeStateRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
/**
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/GroupAvailabilityCalculator.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/GroupAvailabilityCalculator.java
index 3ad2d25a455..a697d8f9868 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/GroupAvailabilityCalculator.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/GroupAvailabilityCalculator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.distribution.ConfiguredNode;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/HierarchicalGroupVisiting.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/HierarchicalGroupVisiting.java
index 0ff370fc57d..19ff51f4cc4 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/HierarchicalGroupVisiting.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/HierarchicalGroupVisiting.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
//
package com.yahoo.vespa.clustercontroller.core;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/HierarchicalGroupVisitingAdapter.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/HierarchicalGroupVisitingAdapter.java
index b638604c311..4bc487bfa7f 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/HierarchicalGroupVisitingAdapter.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/HierarchicalGroupVisitingAdapter.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
//
package com.yahoo.vespa.clustercontroller.core;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/LeafGroups.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/LeafGroups.java
index 7090727e9ee..b94507ff877 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/LeafGroups.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/LeafGroups.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.distribution.Group;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MaintenanceTransitionConstraint.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MaintenanceTransitionConstraint.java
index 4da6c272660..e6d9ca92f12 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MaintenanceTransitionConstraint.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MaintenanceTransitionConstraint.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
/**
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MaintenanceWhenPendingGlobalMerges.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MaintenanceWhenPendingGlobalMerges.java
index 22f9b7436cc..7027fca737c 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MaintenanceWhenPendingGlobalMerges.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MaintenanceWhenPendingGlobalMerges.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.document.FixedBucketSpaces;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MasterElectionHandler.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MasterElectionHandler.java
index b6b1593034e..9ae3d543121 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MasterElectionHandler.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MasterElectionHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vespa.clustercontroller.core.database.DatabaseHandler;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MasterInterface.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MasterInterface.java
index 59e5bdd9db2..df223ff6d56 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MasterInterface.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MasterInterface.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
public interface MasterInterface {
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MergePendingChecker.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MergePendingChecker.java
index fa4422ebf66..ad0225def57 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MergePendingChecker.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MergePendingChecker.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
/**
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MetricUpdater.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MetricUpdater.java
index 58f40dc3318..d3698dc412b 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MetricUpdater.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MetricUpdater.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.ClusterState;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeEvent.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeEvent.java
index 918c44b7caa..f596b227d29 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeEvent.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeEvent.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import java.util.Optional;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeInfo.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeInfo.java
index 2ce6a5261e1..2993784dba4 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeInfo.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeInfo.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.collections.Pair;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeLookup.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeLookup.java
index 65b97a3ae82..cdf8b24e72d 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeLookup.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeLookup.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vespa.clustercontroller.core.listeners.NodeAddedOrRemovedListener;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeResourceExhaustion.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeResourceExhaustion.java
index 531e29344a6..ee121d7682c 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeResourceExhaustion.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeResourceExhaustion.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.jrt.Spec;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeStateChangeChecker.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeStateChangeChecker.java
index 413e0bbf03f..eb0368749f0 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeStateChangeChecker.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeStateChangeChecker.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.lang.MutableBoolean;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeStateGatherer.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeStateGatherer.java
index 995a7c7ed1f..e3fe371c05e 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeStateGatherer.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeStateGatherer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.jrt.ErrorCode;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeStateReason.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeStateReason.java
index 77ab8539219..fcc42998596 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeStateReason.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/NodeStateReason.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
public enum NodeStateReason {
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/RealTimer.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/RealTimer.java
index 15f18b02865..7a2328f6581 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/RealTimer.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/RealTimer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import java.util.Calendar;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/RemoteClusterControllerTask.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/RemoteClusterControllerTask.java
index 9322ba9ec58..39ffed1051a 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/RemoteClusterControllerTask.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/RemoteClusterControllerTask.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.ClusterState;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/RemoteClusterControllerTaskScheduler.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/RemoteClusterControllerTaskScheduler.java
index 6cd834e79ac..6533df3cc9b 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/RemoteClusterControllerTaskScheduler.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/RemoteClusterControllerTaskScheduler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
public interface RemoteClusterControllerTaskScheduler {
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ResourceExhaustionCalculator.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ResourceExhaustionCalculator.java
index 3801c17ef1e..db84882cfa7 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ResourceExhaustionCalculator.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ResourceExhaustionCalculator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vespa.clustercontroller.core.hostinfo.HostInfo;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ResourceUsageStats.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ResourceUsageStats.java
index 53d801e609d..8bdb246d3af 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ResourceUsageStats.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ResourceUsageStats.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vespa.clustercontroller.core.hostinfo.ContentNode;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/SetClusterStateRequest.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/SetClusterStateRequest.java
index d4e79a4f2b2..27fabaeda31 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/SetClusterStateRequest.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/SetClusterStateRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
public abstract class SetClusterStateRequest extends ClusterStateVersionSpecificRequest {
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StateChangeHandler.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StateChangeHandler.java
index 3e1390a608c..4a57be7ddf1 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StateChangeHandler.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StateChangeHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.distribution.ConfiguredNode;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StateVersionTracker.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StateVersionTracker.java
index aa6e2973014..408a8e2a2fa 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StateVersionTracker.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StateVersionTracker.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.ClusterState;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StorageNodeInfo.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StorageNodeInfo.java
index ecad704c817..dd49df84826 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StorageNodeInfo.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StorageNodeInfo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.distribution.Distribution;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/SystemStateBroadcaster.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/SystemStateBroadcaster.java
index ff27576940f..9a0ac182017 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/SystemStateBroadcaster.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/SystemStateBroadcaster.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.jrt.ErrorCode;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/Timer.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/Timer.java
index b50096ba63e..113a44f111b 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/Timer.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/Timer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
/**
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/UpEdgeMaintenanceTransitionConstraint.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/UpEdgeMaintenanceTransitionConstraint.java
index 35cfb76f0ce..98e2fb24a2c 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/UpEdgeMaintenanceTransitionConstraint.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/UpEdgeMaintenanceTransitionConstraint.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.ClusterState;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/VersionDependentTaskCompletion.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/VersionDependentTaskCompletion.java
index 28df5a8e35a..b979e82adea 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/VersionDependentTaskCompletion.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/VersionDependentTaskCompletion.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import java.util.Objects;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/CasWriteFailed.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/CasWriteFailed.java
index 92db85a80ad..56be1a94fc2 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/CasWriteFailed.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/CasWriteFailed.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.database;
/**
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/Database.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/Database.java
index 7a241dc7ebd..90bb2873c94 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/Database.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/Database.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.database;
import com.yahoo.vdslib.state.Node;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/DatabaseFactory.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/DatabaseFactory.java
index c32f2fe71cd..45a416fade4 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/DatabaseFactory.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/DatabaseFactory.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.database;
import com.yahoo.vespa.clustercontroller.core.ContentCluster;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/DatabaseHandler.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/DatabaseHandler.java
index b585afebbad..f8b5f854088 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/DatabaseHandler.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/DatabaseHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.database;
import com.yahoo.vdslib.state.Node;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/MasterDataGatherer.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/MasterDataGatherer.java
index 2933e353da0..907f2e0c5e9 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/MasterDataGatherer.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/MasterDataGatherer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.database;
import org.apache.zookeeper.data.Stat;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/ZooKeeperDatabase.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/ZooKeeperDatabase.java
index af58fc4c8e6..fe716eea288 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/ZooKeeperDatabase.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/ZooKeeperDatabase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.database;
import com.yahoo.vdslib.state.Node;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/ZooKeeperDatabaseFactory.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/ZooKeeperDatabaseFactory.java
index 41e72806270..0f739eec1d0 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/ZooKeeperDatabaseFactory.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/ZooKeeperDatabaseFactory.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.database;
public class ZooKeeperDatabaseFactory implements DatabaseFactory {
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/ContentNode.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/ContentNode.java
index 69c49ea2c1f..945745b7ff5 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/ContentNode.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/ContentNode.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.hostinfo;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/Distributor.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/Distributor.java
index ebedb920b72..7f31dd83b5a 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/Distributor.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/Distributor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.hostinfo;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/HostInfo.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/HostInfo.java
index 71f61588c6c..1a11e32c9b8 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/HostInfo.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/HostInfo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.hostinfo;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/Metrics.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/Metrics.java
index eef3fd2e217..ec24eff6aa5 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/Metrics.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/Metrics.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.hostinfo;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/ResourceUsage.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/ResourceUsage.java
index da0862d7de9..928a1043a99 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/ResourceUsage.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/ResourceUsage.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.hostinfo;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/StorageNode.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/StorageNode.java
index f53c3eed28a..193d4a05cc5 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/StorageNode.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/StorageNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.hostinfo;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/StorageNodeStatsBridge.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/StorageNodeStatsBridge.java
index 30ef0c69fe3..73f504b6004 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/StorageNodeStatsBridge.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/StorageNodeStatsBridge.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.hostinfo;
import com.yahoo.vespa.clustercontroller.core.*;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/Vtag.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/Vtag.java
index 39c4366c2c3..9ef8acbe71f 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/Vtag.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/hostinfo/Vtag.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.hostinfo;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/listeners/NodeAddedOrRemovedListener.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/listeners/NodeAddedOrRemovedListener.java
index 39907bbae71..d811708c999 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/listeners/NodeAddedOrRemovedListener.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/listeners/NodeAddedOrRemovedListener.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.listeners;
import com.yahoo.vespa.clustercontroller.core.NodeInfo;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/listeners/NodeStateOrHostInfoChangeHandler.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/listeners/NodeStateOrHostInfoChangeHandler.java
index faede66104c..b76b46b216b 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/listeners/NodeStateOrHostInfoChangeHandler.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/listeners/NodeStateOrHostInfoChangeHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.listeners;
import com.yahoo.vdslib.state.NodeState;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/listeners/SystemStateListener.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/listeners/SystemStateListener.java
index a0d53e8c93e..3f20f40683e 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/listeners/SystemStateListener.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/listeners/SystemStateListener.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.listeners;
import com.yahoo.vespa.clustercontroller.core.ClusterStateBundle;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/package-info.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/package-info.java
index 522801c9e73..54626e57a27 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/package-info.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.clustercontroller.core;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterControllerStateRestAPI.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterControllerStateRestAPI.java
index 169684aa742..60b60d5fc89 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterControllerStateRestAPI.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterControllerStateRestAPI.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2;
import com.yahoo.vespa.clustercontroller.core.RemoteClusterControllerTaskScheduler;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/Id.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/Id.java
index d956afba48a..a0fad75c0ed 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/Id.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/Id.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Class representations of resources in State Rest API.
*
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/MissingIdException.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/MissingIdException.java
index 7231473b9cc..21229b4b358 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/MissingIdException.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/MissingIdException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2;
import com.yahoo.vdslib.state.Node;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/OtherMasterIndexException.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/OtherMasterIndexException.java
index 331165b4191..ad1ce049f23 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/OtherMasterIndexException.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/OtherMasterIndexException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2;
public class OtherMasterIndexException extends Exception {
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/Request.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/Request.java
index c1b653074a5..af0ebd16535 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/Request.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/Request.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2;
import com.yahoo.vespa.clustercontroller.core.RemoteClusterControllerTask;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/Response.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/Response.java
index 82512262b4a..b4bd75fd9b8 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/Response.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/Response.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2;
import com.yahoo.vdslib.state.NodeState;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/UnitPathResolver.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/UnitPathResolver.java
index 4dc73f4d0dd..9c32d0511bb 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/UnitPathResolver.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/UnitPathResolver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2;
import com.yahoo.vdslib.state.NodeType;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/package-info.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/package-info.java
index ed73f31d896..6cca9324b1d 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/package-info.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.clustercontroller.core.restapiv2;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/ClusterListRequest.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/ClusterListRequest.java
index ad619bc0e27..32a0a066fff 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/ClusterListRequest.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/ClusterListRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2.requests;
import com.yahoo.vespa.clustercontroller.core.RemoteClusterControllerTask;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/ClusterStateRequest.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/ClusterStateRequest.java
index 122b9d24d40..a12cddb625a 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/ClusterStateRequest.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/ClusterStateRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2.requests;
import com.yahoo.vdslib.state.NodeType;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/NodeStateRequest.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/NodeStateRequest.java
index 1404508e2fe..65c08e67850 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/NodeStateRequest.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/NodeStateRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2.requests;
import com.yahoo.vespa.clustercontroller.core.NodeInfo;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/PartitionStateRequest.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/PartitionStateRequest.java
index b565bf0b572..345a998e873 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/PartitionStateRequest.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/PartitionStateRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2.requests;
import com.yahoo.vdslib.state.NodeState;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/ServiceStateRequest.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/ServiceStateRequest.java
index b5452af79cc..9a791edff1f 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/ServiceStateRequest.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/ServiceStateRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2.requests;
import com.yahoo.vespa.clustercontroller.core.RemoteClusterControllerTask;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStateRequest.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStateRequest.java
index d5ec5751bec..f406ec46ccc 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStateRequest.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStateRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2.requests;
import com.yahoo.time.TimeBudget;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStatesForClusterRequest.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStatesForClusterRequest.java
index a855c39156f..55ac75957bc 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStatesForClusterRequest.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStatesForClusterRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2.requests;
import com.yahoo.time.TimeBudget;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/VerboseReport.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/VerboseReport.java
index 4e5f3dfa37e..c18afb811fa 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/VerboseReport.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/VerboseReport.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2.requests;
public enum VerboseReport {
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/WantedStateSetter.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/WantedStateSetter.java
index ef9885c7cb4..8095d37d641 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/WantedStateSetter.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/WantedStateSetter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2.requests;
import com.yahoo.vdslib.state.ClusterState;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/ClusterStateBundleCodec.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/ClusterStateBundleCodec.java
index 250d7bbe46a..ee49c90f621 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/ClusterStateBundleCodec.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/ClusterStateBundleCodec.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.rpc;
import com.yahoo.vespa.clustercontroller.core.ClusterStateBundle;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/EncodedClusterStateBundle.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/EncodedClusterStateBundle.java
index 784c8c23c87..4a31c0ec0d3 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/EncodedClusterStateBundle.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/EncodedClusterStateBundle.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.rpc;
import com.yahoo.compress.Compressor;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/EnvelopedClusterStateBundleCodec.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/EnvelopedClusterStateBundleCodec.java
index ab98952cddb..68336392057 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/EnvelopedClusterStateBundleCodec.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/EnvelopedClusterStateBundleCodec.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.rpc;
import com.yahoo.vespa.clustercontroller.core.ClusterStateBundle;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicator.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicator.java
index ec05ac1ed29..a5a29b8d7f1 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicator.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.rpc;
import com.yahoo.jrt.DataValue;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCGetNodeStateRequest.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCGetNodeStateRequest.java
index e298aa64db4..4dd875d20fa 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCGetNodeStateRequest.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCGetNodeStateRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.rpc;
import com.yahoo.jrt.Request;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCGetNodeStateWaiter.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCGetNodeStateWaiter.java
index 06046e7550d..5f77e831918 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCGetNodeStateWaiter.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCGetNodeStateWaiter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.rpc;
import com.yahoo.jrt.ErrorCode;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCSetClusterStateRequest.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCSetClusterStateRequest.java
index bd9a78625ad..6c3f79b2ac9 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCSetClusterStateRequest.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCSetClusterStateRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.rpc;
import com.yahoo.jrt.Request;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCSetClusterStateWaiter.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCSetClusterStateWaiter.java
index 96a776a65b8..89f37173701 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCSetClusterStateWaiter.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCSetClusterStateWaiter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.rpc;
import com.yahoo.jrt.ErrorCode;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RpcServer.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RpcServer.java
index ce710a29180..4bd9b2fc9b8 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RpcServer.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/RpcServer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.rpc;
import com.yahoo.jrt.Acceptor;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlimeClusterStateBundleCodec.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlimeClusterStateBundleCodec.java
index 1a3184955d5..bdf291f20ea 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlimeClusterStateBundleCodec.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlimeClusterStateBundleCodec.java
@@ -1,9 +1,13 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.rpc;
import com.yahoo.compress.CompressionType;
import com.yahoo.compress.Compressor;
-import com.yahoo.slime.*;
+import com.yahoo.slime.BinaryFormat;
+import com.yahoo.slime.Cursor;
+import com.yahoo.slime.Inspector;
+import com.yahoo.slime.ObjectTraverser;
+import com.yahoo.slime.Slime;
import com.yahoo.vdslib.state.ClusterState;
import com.yahoo.vespa.clustercontroller.core.AnnotatedClusterState;
import com.yahoo.vespa.clustercontroller.core.ClusterStateBundle;
@@ -47,8 +51,7 @@ public class SlimeClusterStateBundleCodec implements ClusterStateBundleCodec, En
feedBlock.setString("description", stateBundle.getFeedBlock().get().getDescription());
}
- byte[] serialized = BinaryFormat.encode(slime);
- Compressor.Compression compression = compressor.compress(serialized);
+ Compressor.Compression compression = BinaryFormat.encode_and_compress(slime, compressor);
return EncodedClusterStateBundle.fromCompressionBuffer(compression);
}
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlobrokClient.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlobrokClient.java
index 3fa1b32cada..c4894e41747 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlobrokClient.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlobrokClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.rpc;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/ClusterStateRequestHandler.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/ClusterStateRequestHandler.java
index a866c870377..0d5cd9d68cf 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/ClusterStateRequestHandler.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/ClusterStateRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.status;
import com.yahoo.vdslib.state.ClusterState;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/LegacyIndexPageRequestHandler.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/LegacyIndexPageRequestHandler.java
index 3a3503feefa..378f65f7235 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/LegacyIndexPageRequestHandler.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/LegacyIndexPageRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.status;
import com.yahoo.vdslib.state.ClusterState;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/LegacyNodePageRequestHandler.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/LegacyNodePageRequestHandler.java
index 55d6bd3c43c..2e401feb8a8 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/LegacyNodePageRequestHandler.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/LegacyNodePageRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.status;
import com.yahoo.vdslib.state.Node;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/NodeHealthRequestHandler.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/NodeHealthRequestHandler.java
index 0c16ef96a57..39fab92d02c 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/NodeHealthRequestHandler.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/NodeHealthRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.status;
import com.yahoo.vespa.clustercontroller.core.status.statuspage.StatusPageResponse;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/RunDataExtractor.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/RunDataExtractor.java
index 0ce184aa7b6..ee2b74372ae 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/RunDataExtractor.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/RunDataExtractor.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.status;
import com.yahoo.vespa.clustercontroller.core.ContentCluster;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/StatusHandler.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/StatusHandler.java
index dd62c88ea6c..69144d23fe5 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/StatusHandler.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/StatusHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.status;
import com.yahoo.vespa.clustercontroller.core.status.statuspage.StatusPageResponse;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/package-info.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/package-info.java
index 0801b1371d0..86c1b56083f 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/package-info.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.clustercontroller.core.status;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/HtmlTable.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/HtmlTable.java
index f8d81733173..af059809815 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/HtmlTable.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/HtmlTable.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.status.statuspage;
import java.util.ArrayList;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageResponse.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageResponse.java
index 0b6ce9b645e..87aa1fc497c 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageResponse.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.status.statuspage;
import com.google.common.html.HtmlEscapers;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageServer.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageServer.java
index 5920a7d651a..1bd011993a0 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageServer.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageServer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.status.statuspage;
import java.util.ArrayList;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageServerInterface.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageServerInterface.java
index c9cc13e1803..a06d069c59d 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageServerInterface.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/StatusPageServerInterface.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.status.statuspage;
public interface StatusPageServerInterface {
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/VdsClusterHtmlRenderer.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/VdsClusterHtmlRenderer.java
index 6d2f66d76d5..1081f3e77cd 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/VdsClusterHtmlRenderer.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/VdsClusterHtmlRenderer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.status.statuspage;
import com.yahoo.document.FixedBucketSpaces;
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/package-info.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/package-info.java
index 5bf83e822b6..d192545a9c1 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/package-info.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/statuspage/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.clustercontroller.core.status.statuspage;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/AggregatedStatsMergePendingCheckerTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/AggregatedStatsMergePendingCheckerTest.java
index 65e6e0c2a03..dece8019e2c 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/AggregatedStatsMergePendingCheckerTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/AggregatedStatsMergePendingCheckerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import org.junit.Test;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFeedBlockTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFeedBlockTest.java
index c4db6b9525b..308a78ee40e 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFeedBlockTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFeedBlockTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.jrt.Supervisor;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFixture.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFixture.java
index 00e8b0898ee..75c31898408 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFixture.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFixture.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.distribution.ConfiguredNode;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundleTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundleTest.java
index 3fb2fd534dd..d12541687f0 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundleTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundleTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.ClusterState;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundleUtil.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundleUtil.java
index cceb6d6f03f..b21cbd094ed 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundleUtil.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundleUtil.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.ClusterState;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateGeneratorTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateGeneratorTest.java
index 0798e6174f9..15b59e4e8e4 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateGeneratorTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateGeneratorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.distribution.ConfiguredNode;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateViewTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateViewTest.java
index 7427c882ae8..1125c431cae 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateViewTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateViewTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.*;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsAggregatorTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsAggregatorTest.java
index f5a59b0a246..11c00414cb8 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsAggregatorTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsAggregatorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.google.common.collect.Sets;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsChangeTrackerTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsChangeTrackerTest.java
index 2d0c4296c28..ae237b3330e 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsChangeTrackerTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsChangeTrackerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.google.common.collect.Sets;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentClusterHtmlRendererTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentClusterHtmlRendererTest.java
index 7f81645474d..8e00593587a 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentClusterHtmlRendererTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentClusterHtmlRendererTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.google.common.collect.Sets;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentClusterStatsBuilder.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentClusterStatsBuilder.java
index ce79b492638..0bdbd7801ff 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentClusterStatsBuilder.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentClusterStatsBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import java.util.HashMap;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentNodeStatsBuilder.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentNodeStatsBuilder.java
index f3cce04198d..583bca3e3e2 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentNodeStatsBuilder.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentNodeStatsBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import java.util.HashMap;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentNodeStatsTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentNodeStatsTest.java
index f1cc9af4488..47d1970e4d6 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentNodeStatsTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentNodeStatsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import org.junit.Test;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseHandlerTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseHandlerTest.java
index f6add77423a..630a4898dfa 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseHandlerTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vespa.clustercontroller.core.database.Database;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseTest.java
index b8c0d2e0c54..37fe3e28a5d 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.jrt.ErrorCode;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DistributionBitCountTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DistributionBitCountTest.java
index dc19770568e..0f172f6f248 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DistributionBitCountTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DistributionBitCountTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.distribution.ConfiguredNode;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DistributionBuilder.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DistributionBuilder.java
index 67a676d388f..a7278be548f 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DistributionBuilder.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DistributionBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.distribution.ConfiguredNode;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyCommunicator.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyCommunicator.java
index d7bca47026f..3c232a7c52b 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyCommunicator.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyCommunicator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.collections.Pair;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyVdsNode.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyVdsNode.java
index 92158692a20..05706712ccd 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyVdsNode.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyVdsNode.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.jrt.Acceptor;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyVdsNodeOptions.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyVdsNodeOptions.java
index 30e7c9a8417..c391fc27813 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyVdsNodeOptions.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyVdsNodeOptions.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vespa.clustercontroller.core.rpc.RPCCommunicator;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/EventDiffCalculatorTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/EventDiffCalculatorTest.java
index ee65183c16c..a616f823ad0 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/EventDiffCalculatorTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/EventDiffCalculatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import static com.yahoo.vespa.clustercontroller.core.FeedBlockUtil.exhaustion;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/EventLogTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/EventLogTest.java
index 290c58f6453..afbc50124e2 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/EventLogTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/EventLogTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.Node;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FakeTimer.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FakeTimer.java
index fe4ecde95b5..6c9cf6a2dbb 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FakeTimer.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FakeTimer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import java.util.logging.Level;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FeedBlockUtil.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FeedBlockUtil.java
index 46c57019b46..45f4401551e 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FeedBlockUtil.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FeedBlockUtil.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.Node;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java
index ce2a08effce..48a342d7737 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.jrt.Request;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAutoTakedownLiveConfigTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAutoTakedownLiveConfigTest.java
index aba88ac3d91..77bcff1e7d5 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAutoTakedownLiveConfigTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAutoTakedownLiveConfigTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import org.junit.Test;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAutoTakedownTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAutoTakedownTest.java
index d33d235bc66..83167367a91 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAutoTakedownTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAutoTakedownTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.distribution.ConfiguredNode;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAvailabilityCalculatorTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAvailabilityCalculatorTest.java
index f77a68e0fda..a533cd35f94 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAvailabilityCalculatorTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAvailabilityCalculatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.ClusterState;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/LeafGroupsTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/LeafGroupsTest.java
index 6302af5ebc9..cfcaf1ce0c5 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/LeafGroupsTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/LeafGroupsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.distribution.Group;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MaintenanceWhenPendingGlobalMergesTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MaintenanceWhenPendingGlobalMergesTest.java
index 7a1f118eae2..4ddf6453981 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MaintenanceWhenPendingGlobalMergesTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MaintenanceWhenPendingGlobalMergesTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.document.FixedBucketSpaces;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MasterElectionTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MasterElectionTest.java
index 9f5e672886e..8d32986bcaf 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MasterElectionTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MasterElectionTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.jrt.Request;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MetricReporterTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MetricReporterTest.java
index aef223d7aee..4cd2fcdfbd5 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MetricReporterTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MetricReporterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.ClusterState;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NoZooKeeperTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NoZooKeeperTest.java
index 1b4837757c5..bd1ffac089c 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NoZooKeeperTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NoZooKeeperTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import org.junit.Test;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeInfoTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeInfoTest.java
index e56d8b02cd4..129c70d1d29 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeInfoTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeInfoTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.Node;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeSlobrokConfigurationMembershipTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeSlobrokConfigurationMembershipTest.java
index f9bb93c7bb5..c1f1d0e1bc1 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeSlobrokConfigurationMembershipTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeSlobrokConfigurationMembershipTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.distribution.ConfiguredNode;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeStateChangeCheckerTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeStateChangeCheckerTest.java
index 5d08669714c..3a301c52b42 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeStateChangeCheckerTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/NodeStateChangeCheckerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.distribution.ConfiguredNode;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceExhaustionCalculatorTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceExhaustionCalculatorTest.java
index cf9b2bc222d..7e02f63d56e 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceExhaustionCalculatorTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceExhaustionCalculatorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.State;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceUsageStatsTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceUsageStatsTest.java
index 6dbac772f16..3a5f9954a20 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceUsageStatsTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceUsageStatsTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import org.junit.Test;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcServerTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcServerTest.java
index 30cd1312cad..993c5eef96d 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcServerTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcServerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.jrt.ErrorCode;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcVersionAutoDowngradeTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcVersionAutoDowngradeTest.java
index e7c9f3b179a..d61cd1271b6 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcVersionAutoDowngradeTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcVersionAutoDowngradeTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.distribution.ConfiguredNode;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/SlobrokTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/SlobrokTest.java
index 4c8bcbbe58b..5395048cad9 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/SlobrokTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/SlobrokTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.jrt.slobrok.server.Slobrok;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeHandlerTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeHandlerTest.java
index e73c2845900..b370c29537d 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeHandlerTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.distribution.ConfiguredNode;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java
index 2b71f909115..2a0ab389865 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.jrt.Supervisor;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateGatherTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateGatherTest.java
index 516f2efabb2..041f4e4052d 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateGatherTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateGatherTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import java.util.logging.Level;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateMapping.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateMapping.java
index f6eaf86e8f4..dbdf19249a0 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateMapping.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateMapping.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.ClusterState;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateVersionTrackerTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateVersionTrackerTest.java
index 496d2a3b29a..e98cea72d08 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateVersionTrackerTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateVersionTrackerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.ClusterState;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/SystemStateBroadcasterTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/SystemStateBroadcasterTest.java
index cec2b0298fb..dfbe4d5a8e8 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/SystemStateBroadcasterTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/SystemStateBroadcasterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.Node;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/UpEdgeMaintenanceTransitionConstraintTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/UpEdgeMaintenanceTransitionConstraintTest.java
index bbbcb654e57..6257a10064a 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/UpEdgeMaintenanceTransitionConstraintTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/UpEdgeMaintenanceTransitionConstraintTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.ClusterState;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/WantedStateTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/WantedStateTest.java
index bc7ee6adee1..a58f75dba02 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/WantedStateTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/WantedStateTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vdslib.state.State;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ZooKeeperDatabaseTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ZooKeeperDatabaseTest.java
index 6062f45c4de..d2407541680 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ZooKeeperDatabaseTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ZooKeeperDatabaseTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.vespa.clustercontroller.core.database.CasWriteFailed;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ZooKeeperTestServer.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ZooKeeperTestServer.java
index 7861db249bd..baaad164f8f 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ZooKeeperTestServer.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ZooKeeperTestServer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
import com.yahoo.net.HostName;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/hostinfo/HostInfoTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/hostinfo/HostInfoTest.java
index b2d3eb54f78..98fc879adbc 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/hostinfo/HostInfoTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/hostinfo/HostInfoTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.hostinfo;
import org.junit.Test;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/hostinfo/StorageNodeStatsBridgeTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/hostinfo/StorageNodeStatsBridgeTest.java
index 51e73b333c5..cb99dfe38e3 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/hostinfo/StorageNodeStatsBridgeTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/hostinfo/StorageNodeStatsBridgeTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.hostinfo;
import com.yahoo.vespa.clustercontroller.core.ContentNodeStats;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/ClusterEventWithDescription.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/ClusterEventWithDescription.java
index 9b20f139f96..9dc2fd97718 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/ClusterEventWithDescription.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/ClusterEventWithDescription.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.matchers;
import com.yahoo.vespa.clustercontroller.core.ClusterEvent;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/EventForNode.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/EventForNode.java
index 6bd4130f01f..8ce0b52ee8b 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/EventForNode.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/EventForNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.matchers;
import com.yahoo.vdslib.state.Node;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/EventTimeIs.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/EventTimeIs.java
index 38bf2dde7d2..42a89b301fe 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/EventTimeIs.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/EventTimeIs.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.matchers;
import com.yahoo.vespa.clustercontroller.core.Event;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/EventTypeIs.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/EventTypeIs.java
index d4ff0e289bb..59a532763b0 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/EventTypeIs.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/EventTypeIs.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.matchers;
import com.yahoo.vespa.clustercontroller.core.NodeEvent;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/HasMetricContext.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/HasMetricContext.java
index fac3516f452..c00076d0faa 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/HasMetricContext.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/HasMetricContext.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.matchers;
import com.yahoo.vespa.clustercontroller.utils.util.MetricReporter;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/HasStateReasonForNode.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/HasStateReasonForNode.java
index cac7073402c..72f51e21c5a 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/HasStateReasonForNode.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/HasStateReasonForNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.matchers;
import com.yahoo.vdslib.state.Node;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/NodeEventForBucketSpace.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/NodeEventForBucketSpace.java
index 6450caa3eaa..e479e031f10 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/NodeEventForBucketSpace.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/NodeEventForBucketSpace.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.matchers;
import com.yahoo.vespa.clustercontroller.core.NodeEvent;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/NodeEventWithDescription.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/NodeEventWithDescription.java
index 3823812b8c3..b070fa27817 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/NodeEventWithDescription.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/matchers/NodeEventWithDescription.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.matchers;
import com.yahoo.vespa.clustercontroller.core.NodeEvent;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/mocks/TestEventLog.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/mocks/TestEventLog.java
index dcfd3af7e83..b4b468ba70f 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/mocks/TestEventLog.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/mocks/TestEventLog.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.mocks;
import com.yahoo.vdslib.state.Node;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterControllerMock.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterControllerMock.java
index 66ad1305878..95071931a75 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterControllerMock.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterControllerMock.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2;
import com.yahoo.vdslib.state.ClusterState;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterListTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterListTest.java
index 813b3780091..84116674afa 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterListTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterListTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2;
import com.yahoo.vespa.clustercontroller.utils.staterestapi.response.UnitResponse;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterTest.java
index 635ab1f37b3..2efb731c88c 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2;
import com.yahoo.vespa.clustercontroller.utils.staterestapi.response.UnitResponse;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/NodeTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/NodeTest.java
index d9091942120..38fab2f5c54 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/NodeTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/NodeTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2;
import com.yahoo.vdslib.state.Node;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/NotMasterTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/NotMasterTest.java
index 4ec5893c1e7..d85cf95defc 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/NotMasterTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/NotMasterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2;
import com.yahoo.vespa.clustercontroller.utils.staterestapi.errors.OtherMasterException;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/PartitionTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/PartitionTest.java
index 106803ec3f1..ec60adf16d3 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/PartitionTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/PartitionTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2;
import com.yahoo.vespa.clustercontroller.utils.staterestapi.response.UnitResponse;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/RequestTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/RequestTest.java
index 78c5f3380be..ec8e7855db6 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/RequestTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/RequestTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2;
import com.yahoo.vespa.clustercontroller.utils.staterestapi.errors.InternalFailure;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ServiceTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ServiceTest.java
index 57105e0eb5b..f2aa00ea13e 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ServiceTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ServiceTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2;
import com.yahoo.vespa.clustercontroller.utils.staterestapi.response.UnitResponse;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/SetNodeStateTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/SetNodeStateTest.java
index 83dbdbe31c8..086098514e2 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/SetNodeStateTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/SetNodeStateTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2;
import com.yahoo.time.TimeBudget;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/StateRestApiTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/StateRestApiTest.java
index cc2c100e105..9d41b1c0153 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/StateRestApiTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/StateRestApiTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2;
import com.yahoo.vdslib.distribution.ConfiguredNode;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStateRequestTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStateRequestTest.java
index eef8a4e34d5..090e80361e5 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStateRequestTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStateRequestTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.restapiv2.requests;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicatorTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicatorTest.java
index 6f338234b7a..ca9e81b6bc4 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicatorTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCCommunicatorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.rpc;
import com.yahoo.jrt.ErrorCode;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCUtil.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCUtil.java
index 2fdf6b5c8a8..72d46fca424 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCUtil.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/RPCUtil.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.rpc;
import com.yahoo.compress.CompressionType;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/SlimeClusterStateBundleCodecTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/SlimeClusterStateBundleCodecTest.java
index 5fdeb29d1c6..8fc5e8ac208 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/SlimeClusterStateBundleCodecTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/rpc/SlimeClusterStateBundleCodecTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.rpc;
import com.yahoo.vespa.clustercontroller.core.ClusterStateBundle;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/LogFormatter.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/LogFormatter.java
index 3bf5ddf6509..b3214f9069e 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/LogFormatter.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/LogFormatter.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.testutils;
import java.io.File;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/StateWaiter.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/StateWaiter.java
index f8f89bc4a04..4cfab796a4e 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/StateWaiter.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/StateWaiter.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.testutils;
import com.yahoo.vdslib.state.ClusterState;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/WaitCondition.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/WaitCondition.java
index 356aa32dda5..d6c43f54259 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/WaitCondition.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/WaitCondition.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.testutils;
import com.yahoo.vdslib.state.ClusterState;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/WaitTask.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/WaitTask.java
index 92b06081645..6362d6fe9a7 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/WaitTask.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/WaitTask.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.testutils;
import com.yahoo.vespa.clustercontroller.core.FleetController;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/Waiter.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/Waiter.java
index b44edd0d209..6336de3d1a3 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/Waiter.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/Waiter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core.testutils;
import java.util.logging.Level;
diff --git a/clustercontroller-reindexer/CMakeLists.txt b/clustercontroller-reindexer/CMakeLists.txt
index 4d3fde15fca..d2407767e0d 100644
--- a/clustercontroller-reindexer/CMakeLists.txt
+++ b/clustercontroller-reindexer/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(clustercontroller-reindexer)
diff --git a/clustercontroller-reindexer/pom.xml b/clustercontroller-reindexer/pom.xml
index e0577c438b5..f39922e0379 100644
--- a/clustercontroller-reindexer/pom.xml
+++ b/clustercontroller-reindexer/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/Reindexer.java b/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/Reindexer.java
index b056ba962fa..1d4571e3fc6 100644
--- a/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/Reindexer.java
+++ b/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/Reindexer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.reindexing;
import ai.vespa.reindexing.Reindexing.Status;
@@ -204,7 +204,7 @@ public class Reindexer {
.setResizeRate(10)
.setMinWindowSize(1));
parameters.setRemoteDataHandler(cluster.name());
- parameters.setMaxPending(32);
+ parameters.setMaxPending(8);
parameters.setResumeToken(progress);
parameters.setFieldSet(type.getName() + ":[document]");
parameters.setPriority(DocumentProtocol.Priority.NORMAL_3);
diff --git a/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/Reindexing.java b/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/Reindexing.java
index 896b9dfc26e..2fd38bb6aa5 100644
--- a/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/Reindexing.java
+++ b/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/Reindexing.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.reindexing;
import com.yahoo.document.DocumentType;
diff --git a/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingCurator.java b/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingCurator.java
index 67816ad0be1..6dd4079835d 100644
--- a/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingCurator.java
+++ b/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingCurator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.reindexing;
import ai.vespa.reindexing.Reindexing.Status;
diff --git a/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingMaintainer.java b/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingMaintainer.java
index 4e263fb865d..405a6991d23 100644
--- a/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingMaintainer.java
+++ b/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.reindexing;
import ai.vespa.reindexing.Reindexer.Cluster;
diff --git a/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingMetrics.java b/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingMetrics.java
index cd3d964b4a5..8a48e4ce272 100644
--- a/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingMetrics.java
+++ b/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/ReindexingMetrics.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.reindexing;
import com.yahoo.documentapi.ProgressToken;
diff --git a/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/http/ReindexingV1ApiHandler.java b/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/http/ReindexingV1ApiHandler.java
index 56bacea5cb6..6b10cc911c2 100644
--- a/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/http/ReindexingV1ApiHandler.java
+++ b/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/http/ReindexingV1ApiHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.reindexing.http;
import ai.vespa.reindexing.Reindexing;
diff --git a/clustercontroller-reindexer/src/test/java/ai/vespa/reindexing/ReindexerTest.java b/clustercontroller-reindexer/src/test/java/ai/vespa/reindexing/ReindexerTest.java
index ae2e757c662..70a65b4a072 100644
--- a/clustercontroller-reindexer/src/test/java/ai/vespa/reindexing/ReindexerTest.java
+++ b/clustercontroller-reindexer/src/test/java/ai/vespa/reindexing/ReindexerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.reindexing;
import ai.vespa.reindexing.Reindexer.Cluster;
diff --git a/clustercontroller-reindexer/src/test/java/ai/vespa/reindexing/ReindexingCuratorTest.java b/clustercontroller-reindexer/src/test/java/ai/vespa/reindexing/ReindexingCuratorTest.java
index 7d4cb2af47e..c5212bdbfff 100644
--- a/clustercontroller-reindexer/src/test/java/ai/vespa/reindexing/ReindexingCuratorTest.java
+++ b/clustercontroller-reindexer/src/test/java/ai/vespa/reindexing/ReindexingCuratorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.reindexing;
import com.yahoo.document.DocumentType;
diff --git a/clustercontroller-reindexer/src/test/java/ai/vespa/reindexing/ReindexingMaintainerTest.java b/clustercontroller-reindexer/src/test/java/ai/vespa/reindexing/ReindexingMaintainerTest.java
index f69c5d28a01..2d2119a4b97 100644
--- a/clustercontroller-reindexer/src/test/java/ai/vespa/reindexing/ReindexingMaintainerTest.java
+++ b/clustercontroller-reindexer/src/test/java/ai/vespa/reindexing/ReindexingMaintainerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.reindexing;
import ai.vespa.reindexing.Reindexer.Cluster;
diff --git a/clustercontroller-reindexer/src/test/java/ai/vespa/reindexing/http/ReindexingV1ApiTest.java b/clustercontroller-reindexer/src/test/java/ai/vespa/reindexing/http/ReindexingV1ApiTest.java
index e00b10b80bd..6ab41f4a7f7 100644
--- a/clustercontroller-reindexer/src/test/java/ai/vespa/reindexing/http/ReindexingV1ApiTest.java
+++ b/clustercontroller-reindexer/src/test/java/ai/vespa/reindexing/http/ReindexingV1ApiTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.reindexing.http;
import ai.vespa.reindexing.Reindexing;
diff --git a/clustercontroller-reindexer/src/test/resources/schemas/music.sd b/clustercontroller-reindexer/src/test/resources/schemas/music.sd
index e55fff26ea5..2414af8b5fe 100644
--- a/clustercontroller-reindexer/src/test/resources/schemas/music.sd
+++ b/clustercontroller-reindexer/src/test/resources/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
field auxilliary type int {
indexing: random 123 | summary
diff --git a/clustercontroller-utils/CMakeLists.txt b/clustercontroller-utils/CMakeLists.txt
index 250a8e7e693..53f28f7c1ab 100644
--- a/clustercontroller-utils/CMakeLists.txt
+++ b/clustercontroller-utils/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(clustercontroller-utils)
diff --git a/clustercontroller-utils/pom.xml b/clustercontroller-utils/pom.xml
index bdf57a9caf0..4f87b844bf2 100644
--- a/clustercontroller-utils/pom.xml
+++ b/clustercontroller-utils/pom.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncCallback.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncCallback.java
index 773aff08c08..9ab7e5e565d 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncCallback.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncCallback.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.communication.async;
public interface AsyncCallback<T> {
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncOperation.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncOperation.java
index 7d6b37a4f93..2b380611b31 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncOperation.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.communication.async;
public interface AsyncOperation<T> {
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncOperationImpl.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncOperationImpl.java
index dde370b637b..d4c1cf9d948 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncOperationImpl.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncOperationImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.communication.async;
import java.util.logging.Logger;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncOperationListenImpl.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncOperationListenImpl.java
index 6d8a24f58e9..2964c81df5e 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncOperationListenImpl.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncOperationListenImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.communication.async;
import java.io.PrintWriter;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncUtils.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncUtils.java
index 881218b9e52..9ffff03a4ef 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncUtils.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.communication.async;
public class AsyncUtils {
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/PipedAsyncOperation.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/PipedAsyncOperation.java
index 522a2c368bd..5dfad3f1e6d 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/PipedAsyncOperation.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/PipedAsyncOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.communication.async;
public abstract class PipedAsyncOperation<S, T> extends RedirectedAsyncOperation<S, T> {
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/RedirectedAsyncOperation.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/RedirectedAsyncOperation.java
index 957c8f8168c..46415c03524 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/RedirectedAsyncOperation.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/RedirectedAsyncOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.communication.async;
/**
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/SuccessfulAsyncCallback.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/SuccessfulAsyncCallback.java
index 85c6b9070e6..87c6956b845 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/SuccessfulAsyncCallback.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/SuccessfulAsyncCallback.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.communication.async;
public abstract class SuccessfulAsyncCallback<Source, Target> implements AsyncCallback<Source> {
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/package-info.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/package-info.java
index 1c1b47c6f44..fc3cca8dbb9 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/package-info.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/async/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.clustercontroller.utils.communication.async;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpRequest.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpRequest.java
index 2cb717cc104..15a353e2de4 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpRequest.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.communication.http;
import com.yahoo.vespa.clustercontroller.utils.util.CertainlyCloneable;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpRequestHandler.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpRequestHandler.java
index b3e31c751c6..52e02555749 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpRequestHandler.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.communication.http;
public interface HttpRequestHandler {
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpResult.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpResult.java
index e82c44250e6..ab259289d58 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpResult.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.communication.http;
import java.util.Collection;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/JsonHttpResult.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/JsonHttpResult.java
index 4ed61864638..7d8877e974c 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/JsonHttpResult.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/JsonHttpResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.communication.http;
import com.yahoo.vespa.clustercontroller.utils.util.JSONObjectWrapper;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/package-info.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/package-info.java
index cec552cde57..951a8a66158 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/package-info.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.clustercontroller.utils.communication.http;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/writer/HttpWriter.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/writer/HttpWriter.java
index d60afe599c3..a931b2d40dd 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/writer/HttpWriter.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/writer/HttpWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.communication.http.writer;
public class HttpWriter {
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/StateRestAPI.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/StateRestAPI.java
index bfabd66e074..4861d6cdf51 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/StateRestAPI.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/StateRestAPI.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Interface to implement for backends that want to have a State Rest API.
*/
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/DeadlineExceededException.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/DeadlineExceededException.java
index 55032d515ce..be01086e339 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/DeadlineExceededException.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/DeadlineExceededException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.errors;
public class DeadlineExceededException extends StateRestApiException {
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/InternalFailure.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/InternalFailure.java
index 1b148755aec..977394aac83 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/InternalFailure.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/InternalFailure.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.errors;
public class InternalFailure extends StateRestApiException {
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/InvalidContentException.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/InvalidContentException.java
index c9f69226fa6..4363b895779 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/InvalidContentException.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/InvalidContentException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.errors;
public class InvalidContentException extends StateRestApiException {
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/InvalidOptionValueException.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/InvalidOptionValueException.java
index f82c6866e82..c30744a6a50 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/InvalidOptionValueException.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/InvalidOptionValueException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.errors;
public class InvalidOptionValueException extends StateRestApiException {
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/MissingResourceException.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/MissingResourceException.java
index 8176c0f1485..0af5ff1dd97 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/MissingResourceException.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/MissingResourceException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.errors;
/**
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/MissingUnitException.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/MissingUnitException.java
index c45ce2527cb..838e13fc4ee 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/MissingUnitException.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/MissingUnitException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.errors;
public class MissingUnitException extends StateRestApiException {
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/NotMasterException.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/NotMasterException.java
index 94b5e62355b..d73b0163007 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/NotMasterException.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/NotMasterException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.errors;
public abstract class NotMasterException extends StateRestApiException {
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/OperationNotSupportedForUnitException.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/OperationNotSupportedForUnitException.java
index 838bc4443b4..342f568eacc 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/OperationNotSupportedForUnitException.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/OperationNotSupportedForUnitException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.errors;
import java.util.Arrays;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/OtherMasterException.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/OtherMasterException.java
index df663521418..ca3cf77c505 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/OtherMasterException.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/OtherMasterException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.errors;
public class OtherMasterException extends NotMasterException {
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/StateRestApiException.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/StateRestApiException.java
index b41354c77da..d168841b063 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/StateRestApiException.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/StateRestApiException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.errors;
public abstract class StateRestApiException extends Exception {
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/UnknownMasterException.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/UnknownMasterException.java
index ede631626a5..c355a8ecc5f 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/UnknownMasterException.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/UnknownMasterException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.errors;
public class UnknownMasterException extends NotMasterException {
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/package-info.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/package-info.java
index 6c5f9b9f393..9ee059e72ca 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/package-info.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/errors/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.clustercontroller.utils.staterestapi.errors;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/package-info.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/package-info.java
index baa3ffe2fa0..9cce48939fb 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/package-info.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.clustercontroller.utils.staterestapi;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/requests/SetUnitStateRequest.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/requests/SetUnitStateRequest.java
index 27f18c3664b..ecf13edb115 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/requests/SetUnitStateRequest.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/requests/SetUnitStateRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.requests;
import com.yahoo.time.TimeBudget;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/requests/UnitRequest.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/requests/UnitRequest.java
index 9b46d619651..53abfff8aba 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/requests/UnitRequest.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/requests/UnitRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.requests;
public interface UnitRequest {
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/requests/UnitStateRequest.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/requests/UnitStateRequest.java
index 9f8842ee77c..cfe79fc8265 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/requests/UnitStateRequest.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/requests/UnitStateRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.requests;
public interface UnitStateRequest extends UnitRequest {
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/requests/package-info.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/requests/package-info.java
index 2f7c8796fc2..278101d04cd 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/requests/package-info.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/requests/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.clustercontroller.utils.staterestapi.requests;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/CurrentUnitState.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/CurrentUnitState.java
index e7af27fdf06..35cc0b9b5b2 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/CurrentUnitState.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/CurrentUnitState.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.response;
import java.util.Map;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/DistributionState.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/DistributionState.java
index 53a4a07fa76..df1ca4da0e5 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/DistributionState.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/DistributionState.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.response;
import java.util.Map;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/DistributionStates.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/DistributionStates.java
index e7de760bb64..58b52581630 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/DistributionStates.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/DistributionStates.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.response;
/**
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/SetResponse.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/SetResponse.java
index 0f037397286..1c704ea3b63 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/SetResponse.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/SetResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.response;
/**
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/SubUnitList.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/SubUnitList.java
index 6a47d5079c3..f675c5573b7 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/SubUnitList.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/SubUnitList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.response;
import java.util.Map;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitAttributes.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitAttributes.java
index 0cb19492747..7818576db0f 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitAttributes.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitAttributes.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.response;
import java.util.Map;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitMetrics.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitMetrics.java
index 8a2e126cdc0..f0470a1b845 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitMetrics.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitMetrics.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.response;
import java.util.Map;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitResponse.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitResponse.java
index 61ed6662493..3ddb3e5f936 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitResponse.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.response;
import java.util.Map;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitState.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitState.java
index fa713acbdcc..335393433ef 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitState.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/UnitState.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.response;
public interface UnitState {
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/package-info.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/package-info.java
index f77665066aa..f24a78344ca 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/package-info.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/response/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.clustercontroller.utils.staterestapi.response;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/JsonReader.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/JsonReader.java
index dab6895cc9d..44c45a2e8da 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/JsonReader.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/JsonReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.server;
import com.yahoo.vespa.clustercontroller.utils.communication.http.HttpRequest;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/JsonWriter.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/JsonWriter.java
index b7e0bbc55c0..a6cde601ef4 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/JsonWriter.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/JsonWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.server;
import com.yahoo.vespa.clustercontroller.utils.staterestapi.response.*;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/RestApiHandler.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/RestApiHandler.java
index 953f1000236..25aaa0bce13 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/RestApiHandler.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/RestApiHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.server;
import com.google.common.util.concurrent.UncheckedTimeoutException;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/package-info.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/package-info.java
index 239c73d6702..ae7dcd71ce5 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/package-info.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.clustercontroller.utils.staterestapi.server;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/CertainlyCloneable.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/CertainlyCloneable.java
index f133f2f231c..fa623d20d04 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/CertainlyCloneable.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/CertainlyCloneable.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.util;
/**
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/Clock.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/Clock.java
index b21ee3667d7..b555c84bcb8 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/Clock.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/Clock.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.util;
/**
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/ComponentMetricReporter.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/ComponentMetricReporter.java
index 7985f6966d1..bed2ddcecd0 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/ComponentMetricReporter.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/ComponentMetricReporter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Metric reporter wrapper to add component name prefix and common dimensions.
*/
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/JSONObjectWrapper.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/JSONObjectWrapper.java
index 22b2797997a..cafc208ba79 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/JSONObjectWrapper.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/JSONObjectWrapper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.util;
import org.codehaus.jettison.json.JSONException;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/MetricReporter.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/MetricReporter.java
index 6384b21c2d8..5ee0e8b289d 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/MetricReporter.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/MetricReporter.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.util;
/**
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/NoMetricReporter.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/NoMetricReporter.java
index 3d0989beb90..59c3fedea6c 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/NoMetricReporter.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/NoMetricReporter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.util;
import java.util.Map;
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/package-info.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/package-info.java
index 66957d86f21..ec48cd90e96 100644
--- a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/package-info.java
+++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/util/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.clustercontroller.utils.util;
diff --git a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncTest.java b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncTest.java
index 130dea84fc6..7cea1adced6 100644
--- a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncTest.java
+++ b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/async/AsyncTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.communication.async;
import org.junit.Test;
diff --git a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpRequestTest.java b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpRequestTest.java
index 88db20d1ff5..2583c3392c4 100644
--- a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpRequestTest.java
+++ b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpRequestTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.communication.http;
import org.junit.Test;
diff --git a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpResultTest.java b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpResultTest.java
index f137e9b9580..59fd4521efb 100644
--- a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpResultTest.java
+++ b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpResultTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.communication.http;
import org.junit.Test;
diff --git a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/JsonHttpResultTest.java b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/JsonHttpResultTest.java
index fc843979d75..2e8f9ea9b58 100644
--- a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/JsonHttpResultTest.java
+++ b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/JsonHttpResultTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.communication.http;
import org.codehaus.jettison.json.JSONException;
diff --git a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/writer/HttpWriterTest.java b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/writer/HttpWriterTest.java
index 5ef6239894c..2c9d9296aae 100644
--- a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/writer/HttpWriterTest.java
+++ b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/communication/http/writer/HttpWriterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.communication.http.writer;
import org.junit.Test;
diff --git a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/DummyBackend.java b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/DummyBackend.java
index 97da679d2e8..b1ea3b99ac3 100644
--- a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/DummyBackend.java
+++ b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/DummyBackend.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi;
import java.util.LinkedHashMap;
diff --git a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/DummyStateApi.java b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/DummyStateApi.java
index 3c120f031d3..dd55d023284 100644
--- a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/DummyStateApi.java
+++ b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/DummyStateApi.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi;
import com.yahoo.vespa.clustercontroller.utils.staterestapi.errors.InvalidContentException;
diff --git a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/StateRestAPITest.java b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/StateRestAPITest.java
index 249fcb3ab04..0f6e9e235dc 100644
--- a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/StateRestAPITest.java
+++ b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/StateRestAPITest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi;
import com.yahoo.vespa.clustercontroller.utils.communication.async.AsyncOperation;
diff --git a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/RestApiHandlerTest.java b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/RestApiHandlerTest.java
index f7f109fffc8..2826c70f40a 100644
--- a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/RestApiHandlerTest.java
+++ b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/staterestapi/server/RestApiHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.staterestapi.server;
import com.yahoo.vespa.clustercontroller.utils.staterestapi.errors.InvalidContentException;
diff --git a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/test/AsyncHttpClient.java b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/test/AsyncHttpClient.java
index 29f86842b34..fb237625a5d 100644
--- a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/test/AsyncHttpClient.java
+++ b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/test/AsyncHttpClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.test;
import com.yahoo.vespa.clustercontroller.utils.communication.async.AsyncOperation;
diff --git a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/test/TestTransport.java b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/test/TestTransport.java
index d2e76cd77f9..ede7d00993e 100644
--- a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/test/TestTransport.java
+++ b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/test/TestTransport.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.test;
import com.yahoo.vespa.clustercontroller.utils.communication.async.AsyncOperation;
diff --git a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/util/CertainlyCloneableTest.java b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/util/CertainlyCloneableTest.java
index b4fa6492c6d..f81c4ba7a96 100644
--- a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/util/CertainlyCloneableTest.java
+++ b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/util/CertainlyCloneableTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.util;
import org.junit.Test;
diff --git a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/util/ClockTest.java b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/util/ClockTest.java
index 4d46903c090..ef338d35eb3 100644
--- a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/util/ClockTest.java
+++ b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/util/ClockTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.util;
import org.junit.Test;
diff --git a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/util/JSONObjectWrapperTest.java b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/util/JSONObjectWrapperTest.java
index 8dbdbb11c95..a5f57510194 100644
--- a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/util/JSONObjectWrapperTest.java
+++ b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/util/JSONObjectWrapperTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.util;
import org.junit.Test;
diff --git a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/util/MetricReporterTest.java b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/util/MetricReporterTest.java
index d085015065a..b29de4c972c 100644
--- a/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/util/MetricReporterTest.java
+++ b/clustercontroller-utils/src/test/java/com/yahoo/vespa/clustercontroller/utils/util/MetricReporterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.utils.util;
import org.junit.Test;
diff --git a/cmake/FindRE2.cmake b/cmake/FindRE2.cmake
index af1ff799bd7..b3643e66721 100644
--- a/cmake/FindRE2.cmake
+++ b/cmake/FindRE2.cmake
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# There is no bundled FindRE2, so we supply our own minimal version to find
# the system RE2 library and header files.
diff --git a/component/README.md b/component/README.md
index 4ee204e384d..a71d93ba6ef 100644
--- a/component/README.md
+++ b/component/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Component library
Library for components with lifecycle and versioning.
diff --git a/component/pom.xml b/component/pom.xml
index 75b07643c7e..94e0b6637ea 100755
--- a/component/pom.xml
+++ b/component/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/component/src/main/java/com/yahoo/component/AbstractComponent.java b/component/src/main/java/com/yahoo/component/AbstractComponent.java
index 18a19f3e238..254ef0e5db9 100644
--- a/component/src/main/java/com/yahoo/component/AbstractComponent.java
+++ b/component/src/main/java/com/yahoo/component/AbstractComponent.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component;
import com.yahoo.collections.MethodCache;
diff --git a/component/src/main/java/com/yahoo/component/Component.java b/component/src/main/java/com/yahoo/component/Component.java
index c34044e279a..273240cde4f 100644
--- a/component/src/main/java/com/yahoo/component/Component.java
+++ b/component/src/main/java/com/yahoo/component/Component.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component;
diff --git a/component/src/main/java/com/yahoo/component/ComponentId.java b/component/src/main/java/com/yahoo/component/ComponentId.java
index 4613be09543..a19c70895ba 100644
--- a/component/src/main/java/com/yahoo/component/ComponentId.java
+++ b/component/src/main/java/com/yahoo/component/ComponentId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component;
import java.util.concurrent.atomic.AtomicInteger;
diff --git a/component/src/main/java/com/yahoo/component/ComponentSpecification.java b/component/src/main/java/com/yahoo/component/ComponentSpecification.java
index a27f66dea21..84fa25a497f 100644
--- a/component/src/main/java/com/yahoo/component/ComponentSpecification.java
+++ b/component/src/main/java/com/yahoo/component/ComponentSpecification.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component;
/**
diff --git a/component/src/main/java/com/yahoo/component/Deconstructable.java b/component/src/main/java/com/yahoo/component/Deconstructable.java
index 4da39cd3420..f2c6ce6665f 100644
--- a/component/src/main/java/com/yahoo/component/Deconstructable.java
+++ b/component/src/main/java/com/yahoo/component/Deconstructable.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component;
/**
diff --git a/component/src/main/java/com/yahoo/component/Spec.java b/component/src/main/java/com/yahoo/component/Spec.java
index 75a3523d032..130915c6ac0 100644
--- a/component/src/main/java/com/yahoo/component/Spec.java
+++ b/component/src/main/java/com/yahoo/component/Spec.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component;
/**
diff --git a/component/src/main/java/com/yahoo/component/SpecSplitter.java b/component/src/main/java/com/yahoo/component/SpecSplitter.java
index 6bc4bed4094..a3abf96418c 100644
--- a/component/src/main/java/com/yahoo/component/SpecSplitter.java
+++ b/component/src/main/java/com/yahoo/component/SpecSplitter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component;
/**
diff --git a/component/src/main/java/com/yahoo/component/Version.java b/component/src/main/java/com/yahoo/component/Version.java
index d611e1a6271..1d4546c0c58 100644
--- a/component/src/main/java/com/yahoo/component/Version.java
+++ b/component/src/main/java/com/yahoo/component/Version.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component;
import com.yahoo.text.Utf8;
diff --git a/component/src/main/java/com/yahoo/component/VersionSpecification.java b/component/src/main/java/com/yahoo/component/VersionSpecification.java
index c484c1f80c0..23d6da6a899 100644
--- a/component/src/main/java/com/yahoo/component/VersionSpecification.java
+++ b/component/src/main/java/com/yahoo/component/VersionSpecification.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component;
/**
diff --git a/component/src/main/java/com/yahoo/component/package-info.java b/component/src/main/java/com/yahoo/component/package-info.java
index 2d2d043a08b..19fd8f8d53f 100644
--- a/component/src/main/java/com/yahoo/component/package-info.java
+++ b/component/src/main/java/com/yahoo/component/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.component;
diff --git a/component/src/main/java/com/yahoo/component/provider/ComponentRegistry.java b/component/src/main/java/com/yahoo/component/provider/ComponentRegistry.java
index 67de9c094e8..9aa677737d6 100644
--- a/component/src/main/java/com/yahoo/component/provider/ComponentRegistry.java
+++ b/component/src/main/java/com/yahoo/component/provider/ComponentRegistry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.provider;
import com.google.common.collect.ImmutableList;
diff --git a/component/src/main/java/com/yahoo/component/provider/Freezable.java b/component/src/main/java/com/yahoo/component/provider/Freezable.java
index e2a50e510ca..22300a3cdc3 100644
--- a/component/src/main/java/com/yahoo/component/provider/Freezable.java
+++ b/component/src/main/java/com/yahoo/component/provider/Freezable.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.provider;
/**
diff --git a/component/src/main/java/com/yahoo/component/provider/FreezableClass.java b/component/src/main/java/com/yahoo/component/provider/FreezableClass.java
index 76f0ac08f93..53b40024fc6 100644
--- a/component/src/main/java/com/yahoo/component/provider/FreezableClass.java
+++ b/component/src/main/java/com/yahoo/component/provider/FreezableClass.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.provider;
/**
diff --git a/component/src/main/java/com/yahoo/component/provider/FreezableComponent.java b/component/src/main/java/com/yahoo/component/provider/FreezableComponent.java
index e0df06b073e..0a07f422387 100644
--- a/component/src/main/java/com/yahoo/component/provider/FreezableComponent.java
+++ b/component/src/main/java/com/yahoo/component/provider/FreezableComponent.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.provider;
import com.yahoo.component.AbstractComponent;
diff --git a/component/src/main/java/com/yahoo/component/provider/FreezableSimpleComponent.java b/component/src/main/java/com/yahoo/component/provider/FreezableSimpleComponent.java
index da240f4a801..047f7d30857 100644
--- a/component/src/main/java/com/yahoo/component/provider/FreezableSimpleComponent.java
+++ b/component/src/main/java/com/yahoo/component/provider/FreezableSimpleComponent.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.provider;
import com.yahoo.component.ComponentId;
diff --git a/component/src/main/java/com/yahoo/component/provider/ListenableFreezable.java b/component/src/main/java/com/yahoo/component/provider/ListenableFreezable.java
index e0c01b66785..61edb94ab15 100644
--- a/component/src/main/java/com/yahoo/component/provider/ListenableFreezable.java
+++ b/component/src/main/java/com/yahoo/component/provider/ListenableFreezable.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.provider;
/**
diff --git a/component/src/main/java/com/yahoo/component/provider/ListenableFreezableClass.java b/component/src/main/java/com/yahoo/component/provider/ListenableFreezableClass.java
index e1e638234f4..be320c9cee2 100644
--- a/component/src/main/java/com/yahoo/component/provider/ListenableFreezableClass.java
+++ b/component/src/main/java/com/yahoo/component/provider/ListenableFreezableClass.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.provider;
import com.google.common.util.concurrent.ExecutionList;
diff --git a/component/src/main/java/com/yahoo/component/provider/package-info.java b/component/src/main/java/com/yahoo/component/provider/package-info.java
index 3bce0a2ffd7..570f3e58da0 100644
--- a/component/src/main/java/com/yahoo/component/provider/package-info.java
+++ b/component/src/main/java/com/yahoo/component/provider/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.component.provider;
diff --git a/component/src/main/java/com/yahoo/container/di/componentgraph/Provider.java b/component/src/main/java/com/yahoo/container/di/componentgraph/Provider.java
index 3fd3195e5dd..f57bbe80f35 100644
--- a/component/src/main/java/com/yahoo/container/di/componentgraph/Provider.java
+++ b/component/src/main/java/com/yahoo/container/di/componentgraph/Provider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di.componentgraph;
import com.yahoo.component.Deconstructable;
diff --git a/component/src/main/java/com/yahoo/container/di/componentgraph/package-info.java b/component/src/main/java/com/yahoo/container/di/componentgraph/package-info.java
index 054abe9cff9..e076d331549 100644
--- a/component/src/main/java/com/yahoo/container/di/componentgraph/package-info.java
+++ b/component/src/main/java/com/yahoo/container/di/componentgraph/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Note that this package also exists in another Vespa module, for historical
* reasons. All Java classes should be kept in this module, and the other
diff --git a/component/src/test/java/com/yahoo/component/VersionSpecificationTestCase.java b/component/src/test/java/com/yahoo/component/VersionSpecificationTestCase.java
index 4539e185007..7b419f0fc5d 100644
--- a/component/src/test/java/com/yahoo/component/VersionSpecificationTestCase.java
+++ b/component/src/test/java/com/yahoo/component/VersionSpecificationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component;
import org.junit.Test;
diff --git a/component/src/test/java/com/yahoo/component/VersionTestCase.java b/component/src/test/java/com/yahoo/component/VersionTestCase.java
index 9e4e8a5c702..f66bc245f85 100644
--- a/component/src/test/java/com/yahoo/component/VersionTestCase.java
+++ b/component/src/test/java/com/yahoo/component/VersionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component;
import com.yahoo.text.Utf8Array;
diff --git a/config-application-package/pom.xml b/config-application-package/pom.xml
index 9deeeb64c8e..2e429ea0ed6 100644
--- a/config-application-package/pom.xml
+++ b/config-application-package/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/config-application-package/src/main/java/com/yahoo/config/application/ConfigDefinitionDir.java b/config-application-package/src/main/java/com/yahoo/config/application/ConfigDefinitionDir.java
index a6ec6e946d8..2e9f44285d2 100644
--- a/config-application-package/src/main/java/com/yahoo/config/application/ConfigDefinitionDir.java
+++ b/config-application-package/src/main/java/com/yahoo/config/application/ConfigDefinitionDir.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
import com.yahoo.config.model.application.provider.Bundle;
diff --git a/config-application-package/src/main/java/com/yahoo/config/application/FileSystemWrapper.java b/config-application-package/src/main/java/com/yahoo/config/application/FileSystemWrapper.java
index 0751d611ced..b9dd4943149 100644
--- a/config-application-package/src/main/java/com/yahoo/config/application/FileSystemWrapper.java
+++ b/config-application-package/src/main/java/com/yahoo/config/application/FileSystemWrapper.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
import com.yahoo.yolean.function.ThrowingFunction;
diff --git a/config-application-package/src/main/java/com/yahoo/config/application/IncludeProcessor.java b/config-application-package/src/main/java/com/yahoo/config/application/IncludeProcessor.java
index b09953c738c..51f9aecd812 100644
--- a/config-application-package/src/main/java/com/yahoo/config/application/IncludeProcessor.java
+++ b/config-application-package/src/main/java/com/yahoo/config/application/IncludeProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
import com.yahoo.config.application.FileSystemWrapper.FileWrapper;
diff --git a/config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java b/config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java
index d2a3fd8c161..d7efca3b723 100644
--- a/config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java
+++ b/config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
import com.yahoo.config.provision.Environment;
diff --git a/config-application-package/src/main/java/com/yahoo/config/application/PreProcessor.java b/config-application-package/src/main/java/com/yahoo/config/application/PreProcessor.java
index f207a07d3be..38c23322092 100644
--- a/config-application-package/src/main/java/com/yahoo/config/application/PreProcessor.java
+++ b/config-application-package/src/main/java/com/yahoo/config/application/PreProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
import org.w3c.dom.Document;
diff --git a/config-application-package/src/main/java/com/yahoo/config/application/PropertiesProcessor.java b/config-application-package/src/main/java/com/yahoo/config/application/PropertiesProcessor.java
index 1c5ea8510cb..2152a62228b 100644
--- a/config-application-package/src/main/java/com/yahoo/config/application/PropertiesProcessor.java
+++ b/config-application-package/src/main/java/com/yahoo/config/application/PropertiesProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
import java.util.logging.Level;
diff --git a/config-application-package/src/main/java/com/yahoo/config/application/Xml.java b/config-application-package/src/main/java/com/yahoo/config/application/Xml.java
index f2a837026ea..dc5ae998586 100644
--- a/config-application-package/src/main/java/com/yahoo/config/application/Xml.java
+++ b/config-application-package/src/main/java/com/yahoo/config/application/Xml.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
import com.yahoo.config.application.api.ApplicationPackage;
diff --git a/config-application-package/src/main/java/com/yahoo/config/application/XmlPreProcessor.java b/config-application-package/src/main/java/com/yahoo/config/application/XmlPreProcessor.java
index 61b67dfb5c6..36ab5e86266 100644
--- a/config-application-package/src/main/java/com/yahoo/config/application/XmlPreProcessor.java
+++ b/config-application-package/src/main/java/com/yahoo/config/application/XmlPreProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
import com.yahoo.config.application.FileSystemWrapper.FileWrapper;
diff --git a/config-application-package/src/main/java/com/yahoo/config/application/package-info.java b/config-application-package/src/main/java/com/yahoo/config/application/package-info.java
index a4c6bb16bac..36cae53ce70 100644
--- a/config-application-package/src/main/java/com/yahoo/config/application/package-info.java
+++ b/config-application-package/src/main/java/com/yahoo/config/application/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.config.application;
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/package-info.java b/config-application-package/src/main/java/com/yahoo/config/model/application/package-info.java
index 151a9b079d6..02518d8266d 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/package-info.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.config.model.application;
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/AppSubDirs.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/AppSubDirs.java
index ca8f9c17066..a4a71a1cc8b 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/AppSubDirs.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/AppSubDirs.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.application.provider;
import com.yahoo.collections.Tuple2;
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/ApplicationPackageXmlFilesValidator.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/ApplicationPackageXmlFilesValidator.java
index 79a8c6ea16c..0c0883cf381 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/ApplicationPackageXmlFilesValidator.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/ApplicationPackageXmlFilesValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.application.provider;
import com.yahoo.collections.Tuple2;
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/BaseDeployLogger.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/BaseDeployLogger.java
index 60cf3b155f8..51325786ae7 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/BaseDeployLogger.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/BaseDeployLogger.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.application.provider;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/Bundle.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/Bundle.java
index 4f0d884d2d9..721f3fd3460 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/Bundle.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/Bundle.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.application.provider;
import com.yahoo.collections.Tuple2;
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/DeployData.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/DeployData.java
index 82da1e2c6ea..b21f8677984 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/DeployData.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/DeployData.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.application.provider;
import com.yahoo.config.provision.ApplicationId;
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationFile.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationFile.java
index 5753945133c..6b0adb5d079 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationFile.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationFile.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.application.provider;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java
index 81fbc764bb6..1223f438029 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.application.provider;
import com.yahoo.component.Version;
@@ -56,6 +56,7 @@ import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.logging.Level;
@@ -211,8 +212,12 @@ public class FilesApplicationPackage implements ApplicationPackage {
}
private void verifyAppDir(File appDir) {
- if (appDir==null || !appDir.isDirectory()) {
- throw new IllegalArgumentException("Path '" + appDir + "' is not a directory.");
+ Objects.requireNonNull(appDir, "Path cannot be null");
+ if ( ! appDir.exists()) {
+ throw new IllegalArgumentException("Path '" + appDir + "' does not exist");
+ }
+ if ( ! appDir.isDirectory()) {
+ throw new IllegalArgumentException("Path '" + appDir + "' is not a directory");
}
if (! appDir.canRead()){
throw new IllegalArgumentException("Cannot read from application directory '" + appDir + "'");
@@ -308,7 +313,7 @@ public class FilesApplicationPackage implements ApplicationPackage {
ret.add(new NamedReader(f.getName(), new FileReader(f)));
}
} catch (Exception e) {
- throw new IllegalArgumentException("Couldn't get search definition contents.", e);
+ throw new IllegalArgumentException("Couldn't get schema contents.", e);
}
return ret;
}
@@ -518,7 +523,7 @@ public class FilesApplicationPackage implements ApplicationPackage {
return bundle;
}
- } // class Component
+ }
/**
* Reads a ranking expression from file to a string and returns it.
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/IncludeDirs.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/IncludeDirs.java
index df01c6ff8ff..d10d16a9e8e 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/IncludeDirs.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/IncludeDirs.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.application.provider;
import com.yahoo.config.application.Xml;
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/MockFileRegistry.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/MockFileRegistry.java
index 5d71376aa5b..e7ae72ee02c 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/MockFileRegistry.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/MockFileRegistry.java
@@ -1,10 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.application.provider;
import com.yahoo.config.FileReference;
import com.yahoo.config.application.api.FileRegistry;
-import com.yahoo.net.HostName;
-import net.jpountz.xxhash.XXHashFactory;
import java.nio.ByteBuffer;
import java.util.ArrayList;
@@ -25,20 +23,18 @@ public class MockFileRegistry implements FileRegistry {
return fileReference;
}
- @Override
- public String fileSourceHost() { return HostName.getLocalhost(); }
-
public List<Entry> export() { return entries; }
@Override
public FileReference addUri(String uri) {
- throw new IllegalArgumentException("FileReference addUri(String uri) is not implemented for " + getClass().getCanonicalName());
+ FileReference fileReference = new FileReference(uri);
+ entries.add(new Entry(uri, fileReference));
+ return fileReference;
}
@Override
- public FileReference addBlob(ByteBuffer blob) {
- long blobHash = XXHashFactory.fastestJavaInstance().hash64().hash(blob, 0);
- String relativePath = Long.toHexString(blobHash) + ".blob";
+ public FileReference addBlob(String name, ByteBuffer blob) {
+ String relativePath = "./" + name;
FileReference fileReference = new FileReference(relativePath);
entries.add(new Entry(relativePath, fileReference));
return fileReference;
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistry.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistry.java
deleted file mode 100644
index 75482ded05d..00000000000
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistry.java
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.config.model.application.provider;
-
-import com.yahoo.config.FileReference;
-import com.yahoo.config.application.api.FileRegistry;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.Reader;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-/**
- * Registry of files added earlier (i.e. during deployment)
- *
- * @author Tony Vaagenes
- */
-public class PreGeneratedFileRegistry implements FileRegistry {
-
- private final String fileSourceHost;
- private final Map<String, String> path2Hash = new LinkedHashMap<>();
-
- private static final String entryDelimiter = "\t";
- private static final Pattern entryDelimiterPattern = Pattern.compile(entryDelimiter, Pattern.LITERAL);
-
- private PreGeneratedFileRegistry(Reader readerArg) {
- try (BufferedReader reader = new BufferedReader(readerArg)) {
- fileSourceHost = reader.readLine();
- if (fileSourceHost == null)
- throw new RuntimeException("Error while reading pre-generated file registry");
-
- String line;
- while ((line = reader.readLine()) != null) {
- addFromLine(line);
- }
- } catch (IOException e) {
- throw new RuntimeException("Error while reading pre-generated file registry", e);
- }
- }
-
- private void addFromLine(String line) {
- String[] parts = entryDelimiterPattern.split(line);
- if (parts.length < 2)
- throw new IllegalArgumentException("Cannot split '" + line + "' into two parts");
- addEntry(parts[0], parts[1]);
- }
-
- private void addEntry(String relativePath, String hash) {
- path2Hash.put(relativePath, hash);
- }
-
- public static String exportRegistry(FileRegistry registry) {
- List<Entry> entries = registry.export();
- StringBuilder builder = new StringBuilder();
-
- builder.append(registry.fileSourceHost()).append('\n');
- for (FileRegistry.Entry entry : entries) {
- builder.append(entry.relativePath).append(entryDelimiter).append(entry.reference.value()).append('\n');
- }
-
- return builder.toString();
- }
-
- public static PreGeneratedFileRegistry importRegistry(Reader reader) {
- return new PreGeneratedFileRegistry(reader);
- }
-
- public FileReference addFile(String relativePath) {
- String reference = path2Hash.get(relativePath);
- if (reference == null) {
- throw new IllegalArgumentException("File '" + relativePath + "' not found");
- }
- return new FileReference(reference);
- }
-
- @Override
- public FileReference addUri(String uri) {
- return new FileReference(path2Hash.get(uri));
- }
- @Override
- public FileReference addBlob(ByteBuffer blob) {
- return new FileReference(path2Hash.get(blob));
- }
-
- @Override
- public String fileSourceHost() {
- return fileSourceHost;
- }
-
- public Set<String> getPaths() {
- return path2Hash.keySet();
- }
-
- @Override
- public List<Entry> export() {
- List<Entry> entries = new ArrayList<>();
- for (Map.Entry<String, String> entry : path2Hash.entrySet()) {
- entries.add(new Entry(entry.getKey(), new FileReference(entry.getValue())));
- }
- return entries;
- }
-}
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidator.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidator.java
index 03024ab6a53..3decb189f52 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidator.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.application.provider;
import com.thaiopensource.util.PropertyMap;
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidators.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidators.java
index 6d7fb398608..9ba150af245 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidators.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidators.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.application.provider;
import com.yahoo.component.Version;
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SimpleApplicationValidator.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SimpleApplicationValidator.java
index 1284d315058..5a6abf2e879 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SimpleApplicationValidator.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SimpleApplicationValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.application.provider;
import com.yahoo.component.Version;
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/StaticConfigDefinitionRepo.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/StaticConfigDefinitionRepo.java
index c930adfb115..6870437e135 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/StaticConfigDefinitionRepo.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/StaticConfigDefinitionRepo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.application.provider;
import com.yahoo.config.model.api.ConfigDefinitionRepo;
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/package-info.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/package-info.java
index 473c85f06e4..93bb2f3f6f1 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/package-info.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.config.model.application.provider;
diff --git a/config-application-package/src/test/java/com/yahoo/config/application/ConfigDefinitionDirTest.java b/config-application-package/src/test/java/com/yahoo/config/application/ConfigDefinitionDirTest.java
index 65e06a71583..1ce57f1100d 100644
--- a/config-application-package/src/test/java/com/yahoo/config/application/ConfigDefinitionDirTest.java
+++ b/config-application-package/src/test/java/com/yahoo/config/application/ConfigDefinitionDirTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
import com.yahoo.config.model.application.provider.Bundle;
diff --git a/config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorTest.java b/config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorTest.java
index d19ea177d9b..1a4dab01930 100644
--- a/config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorTest.java
+++ b/config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
import com.yahoo.config.provision.Environment;
diff --git a/config-application-package/src/test/java/com/yahoo/config/application/IncludeProcessorTest.java b/config-application-package/src/test/java/com/yahoo/config/application/IncludeProcessorTest.java
index f8484a8e455..56ba4f01048 100644
--- a/config-application-package/src/test/java/com/yahoo/config/application/IncludeProcessorTest.java
+++ b/config-application-package/src/test/java/com/yahoo/config/application/IncludeProcessorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
import com.yahoo.config.application.api.ApplicationPackage;
diff --git a/config-application-package/src/test/java/com/yahoo/config/application/MultiOverrideProcessorTest.java b/config-application-package/src/test/java/com/yahoo/config/application/MultiOverrideProcessorTest.java
index b9b8a9dd798..2ef4fea9d7a 100644
--- a/config-application-package/src/test/java/com/yahoo/config/application/MultiOverrideProcessorTest.java
+++ b/config-application-package/src/test/java/com/yahoo/config/application/MultiOverrideProcessorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
import com.yahoo.config.provision.Environment;
diff --git a/config-application-package/src/test/java/com/yahoo/config/application/OverrideProcessorTest.java b/config-application-package/src/test/java/com/yahoo/config/application/OverrideProcessorTest.java
index d8e35ced227..e9ee7c97876 100644
--- a/config-application-package/src/test/java/com/yahoo/config/application/OverrideProcessorTest.java
+++ b/config-application-package/src/test/java/com/yahoo/config/application/OverrideProcessorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
import com.yahoo.config.provision.Environment;
diff --git a/config-application-package/src/test/java/com/yahoo/config/application/PropertiesProcessorTest.java b/config-application-package/src/test/java/com/yahoo/config/application/PropertiesProcessorTest.java
index 41e08e00040..3bf0f25766c 100644
--- a/config-application-package/src/test/java/com/yahoo/config/application/PropertiesProcessorTest.java
+++ b/config-application-package/src/test/java/com/yahoo/config/application/PropertiesProcessorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
import org.custommonkey.xmlunit.XMLUnit;
diff --git a/config-application-package/src/test/java/com/yahoo/config/application/TestBase.java b/config-application-package/src/test/java/com/yahoo/config/application/TestBase.java
index 90e4ede427d..06172c2698f 100644
--- a/config-application-package/src/test/java/com/yahoo/config/application/TestBase.java
+++ b/config-application-package/src/test/java/com/yahoo/config/application/TestBase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
import org.custommonkey.xmlunit.Diff;
diff --git a/config-application-package/src/test/java/com/yahoo/config/application/XmlPreprocessorTest.java b/config-application-package/src/test/java/com/yahoo/config/application/XmlPreprocessorTest.java
index 7623586679f..92c2c2a820f 100644
--- a/config-application-package/src/test/java/com/yahoo/config/application/XmlPreprocessorTest.java
+++ b/config-application-package/src/test/java/com/yahoo/config/application/XmlPreprocessorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
import com.yahoo.config.provision.Environment;
diff --git a/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationFileTest.java b/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationFileTest.java
index a2caaafe968..de82fe449ea 100644
--- a/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationFileTest.java
+++ b/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationFileTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.application.provider;
import com.yahoo.config.application.api.ApplicationFile;
diff --git a/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java b/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java
index 2a1ba3adc36..2a70799ab3d 100644
--- a/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java
+++ b/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.application.provider;
import com.yahoo.config.application.TestBase;
diff --git a/config-application-package/src/test/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistryTestCase.java b/config-application-package/src/test/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistryTestCase.java
deleted file mode 100644
index 7996efaa60e..00000000000
--- a/config-application-package/src/test/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistryTestCase.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.config.model.application.provider;
-
-import com.yahoo.config.application.api.FileRegistry;
-import org.junit.Test;
-
-import java.io.StringReader;
-import java.nio.ByteBuffer;
-import java.nio.charset.StandardCharsets;
-import java.util.Set;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * @author Tony Vaagenes
- */
-public class PreGeneratedFileRegistryTestCase {
-
- private static final String BLOB = "Some blob";
- @Test
- public void importAndExport() {
- FileRegistry fileRegistry = new MockFileRegistry();
- fileRegistry.addFile("1234");
- fileRegistry.addBlob(ByteBuffer.wrap(BLOB.getBytes(StandardCharsets.UTF_8)));
- String serializedRegistry = PreGeneratedFileRegistry.exportRegistry(fileRegistry);
-
- PreGeneratedFileRegistry importedRegistry = PreGeneratedFileRegistry.importRegistry(new StringReader(serializedRegistry));
-
- assertEquals(Set.of("1234", "c5674b55c15c9c95.blob"), importedRegistry.getPaths());
-
- assertEquals(2, importedRegistry.getPaths().size());
-
- checkConsistentEntry(fileRegistry.export().get(0), importedRegistry);
- checkConsistentEntry(fileRegistry.export().get(1), importedRegistry);
- assertEquals(fileRegistry.fileSourceHost(), importedRegistry.fileSourceHost());
- }
-
- void checkConsistentEntry(FileRegistry.Entry entry, FileRegistry registry) {
- assertEquals(entry.reference, registry.addFile(entry.relativePath));
- }
-}
diff --git a/config-application-package/src/test/java/com/yahoo/config/model/application/provider/StaticConfigDefinitionRepoTest.java b/config-application-package/src/test/java/com/yahoo/config/model/application/provider/StaticConfigDefinitionRepoTest.java
index 1cfd737a857..9fd4c2047e1 100644
--- a/config-application-package/src/test/java/com/yahoo/config/model/application/provider/StaticConfigDefinitionRepoTest.java
+++ b/config-application-package/src/test/java/com/yahoo/config/model/application/provider/StaticConfigDefinitionRepoTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.application.provider;
import com.yahoo.config.model.api.ConfigDefinitionRepo;
diff --git a/config-application-package/src/test/resources/app-pinning-major-version/deployment.xml b/config-application-package/src/test/resources/app-pinning-major-version/deployment.xml
index 3eb207580f4..c7ec2f9203d 100644
--- a/config-application-package/src/test/resources/app-pinning-major-version/deployment.xml
+++ b/config-application-package/src/test/resources/app-pinning-major-version/deployment.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<deployment version='1.0' major-version='6'>
<test />
<staging />
diff --git a/config-application-package/src/test/resources/app-pinning-major-version/hosts.xml b/config-application-package/src/test/resources/app-pinning-major-version/hosts.xml
index 5d2be9b0cde..64a07644038 100644
--- a/config-application-package/src/test/resources/app-pinning-major-version/hosts.xml
+++ b/config-application-package/src/test/resources/app-pinning-major-version/hosts.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts xmlns:deploy="vespa" xmlns:preprocess="properties">
<preprocess:properties>
<node1.hostname>foo.yahoo.com</node1.hostname>
diff --git a/config-application-package/src/test/resources/app-pinning-major-version/schemas/music.sd b/config-application-package/src/test/resources/app-pinning-major-version/schemas/music.sd
index c0190a4a7a8..7da7c49c162 100644
--- a/config-application-package/src/test/resources/app-pinning-major-version/schemas/music.sd
+++ b/config-application-package/src/test/resources/app-pinning-major-version/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music {
field f type string {
diff --git a/config-application-package/src/test/resources/app-pinning-major-version/services.xml b/config-application-package/src/test/resources/app-pinning-major-version/services.xml
index 33d1e6c5a20..60d08cb615c 100644
--- a/config-application-package/src/test/resources/app-pinning-major-version/services.xml
+++ b/config-application-package/src/test/resources/app-pinning-major-version/services.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version='1.0'>
<admin version='2.0'>
<adminserver hostalias='node0'/>
diff --git a/config-application-package/src/test/resources/app-with-deployment/deployment.xml b/config-application-package/src/test/resources/app-with-deployment/deployment.xml
index 27ae825b085..3aad0ca6a6a 100644
--- a/config-application-package/src/test/resources/app-with-deployment/deployment.xml
+++ b/config-application-package/src/test/resources/app-with-deployment/deployment.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<deployment version='1.0'>
<test />
<staging />
diff --git a/config-application-package/src/test/resources/app-with-deployment/hosts.xml b/config-application-package/src/test/resources/app-with-deployment/hosts.xml
index 5d2be9b0cde..64a07644038 100644
--- a/config-application-package/src/test/resources/app-with-deployment/hosts.xml
+++ b/config-application-package/src/test/resources/app-with-deployment/hosts.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts xmlns:deploy="vespa" xmlns:preprocess="properties">
<preprocess:properties>
<node1.hostname>foo.yahoo.com</node1.hostname>
diff --git a/config-application-package/src/test/resources/app-with-deployment/schemas/music.sd b/config-application-package/src/test/resources/app-with-deployment/schemas/music.sd
index c0190a4a7a8..7da7c49c162 100644
--- a/config-application-package/src/test/resources/app-with-deployment/schemas/music.sd
+++ b/config-application-package/src/test/resources/app-with-deployment/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music {
field f type string {
diff --git a/config-application-package/src/test/resources/app-with-deployment/services.xml b/config-application-package/src/test/resources/app-with-deployment/services.xml
index 33d1e6c5a20..60d08cb615c 100644
--- a/config-application-package/src/test/resources/app-with-deployment/services.xml
+++ b/config-application-package/src/test/resources/app-with-deployment/services.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version='1.0'>
<admin version='2.0'>
<adminserver hostalias='node0'/>
diff --git a/config-application-package/src/test/resources/multienvapp/content/content_foo.xml b/config-application-package/src/test/resources/multienvapp/content/content_foo.xml
index b764bf89903..1f6cc744942 100644
--- a/config-application-package/src/test/resources/multienvapp/content/content_foo.xml
+++ b/config-application-package/src/test/resources/multienvapp/content/content_foo.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<redundancy>1</redundancy>
<documents>
<document type="music.sd" mode="index" />
diff --git a/config-application-package/src/test/resources/multienvapp/content/content_nodes.xml b/config-application-package/src/test/resources/multienvapp/content/content_nodes.xml
index d9ba0baf876..7a5fbf7ac0b 100644
--- a/config-application-package/src/test/resources/multienvapp/content/content_nodes.xml
+++ b/config-application-package/src/test/resources/multienvapp/content/content_nodes.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<nodes>
<node hostalias="node0" distribution-key="0" />
</nodes>
diff --git a/config-application-package/src/test/resources/multienvapp/hosts.xml b/config-application-package/src/test/resources/multienvapp/hosts.xml
index 5d2be9b0cde..64a07644038 100644
--- a/config-application-package/src/test/resources/multienvapp/hosts.xml
+++ b/config-application-package/src/test/resources/multienvapp/hosts.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts xmlns:deploy="vespa" xmlns:preprocess="properties">
<preprocess:properties>
<node1.hostname>foo.yahoo.com</node1.hostname>
diff --git a/config-application-package/src/test/resources/multienvapp/jdisc.xml b/config-application-package/src/test/resources/multienvapp/jdisc.xml
index 5e69ea98533..b0ff704805d 100644
--- a/config-application-package/src/test/resources/multienvapp/jdisc.xml
+++ b/config-application-package/src/test/resources/multienvapp/jdisc.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<container id='stateless' version='1.0'>
<search deploy:environment="prod">
<chain id="common">
diff --git a/config-application-package/src/test/resources/multienvapp/schemas/music.sd b/config-application-package/src/test/resources/multienvapp/schemas/music.sd
index c0190a4a7a8..7da7c49c162 100644
--- a/config-application-package/src/test/resources/multienvapp/schemas/music.sd
+++ b/config-application-package/src/test/resources/multienvapp/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music {
field f type string {
diff --git a/config-application-package/src/test/resources/multienvapp/services.xml b/config-application-package/src/test/resources/multienvapp/services.xml
index d0f43f0b025..450291fa609 100644
--- a/config-application-package/src/test/resources/multienvapp/services.xml
+++ b/config-application-package/src/test/resources/multienvapp/services.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version='1.0' xmlns:deploy="vespa" xmlns:preprocess="properties">
<preprocess:properties>
diff --git a/config-application-package/src/test/resources/multienvapp_failrequired/services.xml b/config-application-package/src/test/resources/multienvapp_failrequired/services.xml
index 55f5dbe4f9f..888fb2fb80f 100644
--- a/config-application-package/src/test/resources/multienvapp_failrequired/services.xml
+++ b/config-application-package/src/test/resources/multienvapp_failrequired/services.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version='1.0' xmlns:deploy="vespa" xmlns:preprocess="properties">
<preprocess:include file='doesnotexist.xml' />
</services>
diff --git a/config-bundle/CMakeLists.txt b/config-bundle/CMakeLists.txt
index 8d4878920a4..774372de9d0 100644
--- a/config-bundle/CMakeLists.txt
+++ b/config-bundle/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(config-bundle)
diff --git a/config-bundle/pom.xml b/config-bundle/pom.xml
index 2147798791f..e8409bc1bbe 100644
--- a/config-bundle/pom.xml
+++ b/config-bundle/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/config-bundle/src/main/javadoc/README b/config-bundle/src/main/javadoc/README
new file mode 100644
index 00000000000..6695538e308
--- /dev/null
+++ b/config-bundle/src/main/javadoc/README
@@ -0,0 +1 @@
+No javadoc available for module \ No newline at end of file
diff --git a/config-class-plugin/README.md b/config-class-plugin/README.md
index ff8ed191137..1bf90dac93c 100644
--- a/config-class-plugin/README.md
+++ b/config-class-plugin/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
Vespa Config Generation
=======================
diff --git a/config-class-plugin/pom.xml b/config-class-plugin/pom.xml
index 08ae440e35d..21c9a67e479 100644
--- a/config-class-plugin/pom.xml
+++ b/config-class-plugin/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/config-class-plugin/src/main/java/com/yahoo/vespa/ConfigGenMojo.java b/config-class-plugin/src/main/java/com/yahoo/vespa/ConfigGenMojo.java
index df2359a8129..46ea0f49e14 100644
--- a/config-class-plugin/src/main/java/com/yahoo/vespa/ConfigGenMojo.java
+++ b/config-class-plugin/src/main/java/com/yahoo/vespa/ConfigGenMojo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa;
import com.yahoo.config.codegen.MakeConfig;
diff --git a/config-class-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml b/config-class-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml
index 2f01d71cba9..1372fbcd996 100644
--- a/config-class-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml
+++ b/config-class-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
diff --git a/config-lib/README.md b/config-lib/README.md
index 8c95ee50c4d..ad17ff92c94 100644
--- a/config-lib/README.md
+++ b/config-lib/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Library for generated config classes
Base library for generated cloud config classes.
diff --git a/config-lib/pom.xml b/config-lib/pom.xml
index 90c61725466..0a8e6f884e2 100644
--- a/config-lib/pom.xml
+++ b/config-lib/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/config-lib/src/main/java/com/yahoo/config/BooleanNode.java b/config-lib/src/main/java/com/yahoo/config/BooleanNode.java
index 34b3b13fba0..d7ca5b55b55 100644
--- a/config-lib/src/main/java/com/yahoo/config/BooleanNode.java
+++ b/config-lib/src/main/java/com/yahoo/config/BooleanNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
/**
diff --git a/config-lib/src/main/java/com/yahoo/config/ChangesRequiringRestart.java b/config-lib/src/main/java/com/yahoo/config/ChangesRequiringRestart.java
index a21f36cdbe9..3eeb637a991 100644
--- a/config-lib/src/main/java/com/yahoo/config/ChangesRequiringRestart.java
+++ b/config-lib/src/main/java/com/yahoo/config/ChangesRequiringRestart.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import java.util.ArrayList;
diff --git a/config-lib/src/main/java/com/yahoo/config/ConfigBuilder.java b/config-lib/src/main/java/com/yahoo/config/ConfigBuilder.java
index 30bef223045..f9f511c09a8 100644
--- a/config-lib/src/main/java/com/yahoo/config/ConfigBuilder.java
+++ b/config-lib/src/main/java/com/yahoo/config/ConfigBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
/**
diff --git a/config-lib/src/main/java/com/yahoo/config/ConfigInstance.java b/config-lib/src/main/java/com/yahoo/config/ConfigInstance.java
index 113e622a503..fad386b288e 100644
--- a/config-lib/src/main/java/com/yahoo/config/ConfigInstance.java
+++ b/config-lib/src/main/java/com/yahoo/config/ConfigInstance.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import java.util.ArrayList;
diff --git a/config-lib/src/main/java/com/yahoo/config/ConfigurationRuntimeException.java b/config-lib/src/main/java/com/yahoo/config/ConfigurationRuntimeException.java
index a6bff69671b..cd5576db9f0 100644
--- a/config-lib/src/main/java/com/yahoo/config/ConfigurationRuntimeException.java
+++ b/config-lib/src/main/java/com/yahoo/config/ConfigurationRuntimeException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
/**
diff --git a/config-lib/src/main/java/com/yahoo/config/DoubleNode.java b/config-lib/src/main/java/com/yahoo/config/DoubleNode.java
index 7e1f75e29dd..5be0c2dc4c8 100644
--- a/config-lib/src/main/java/com/yahoo/config/DoubleNode.java
+++ b/config-lib/src/main/java/com/yahoo/config/DoubleNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
/**
diff --git a/config-lib/src/main/java/com/yahoo/config/EnumNode.java b/config-lib/src/main/java/com/yahoo/config/EnumNode.java
index 2f821597496..b3969dcfd8c 100644
--- a/config-lib/src/main/java/com/yahoo/config/EnumNode.java
+++ b/config-lib/src/main/java/com/yahoo/config/EnumNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
/**
diff --git a/config-lib/src/main/java/com/yahoo/config/FileNode.java b/config-lib/src/main/java/com/yahoo/config/FileNode.java
index 3e0355e3cb4..a7c1ebb1488 100644
--- a/config-lib/src/main/java/com/yahoo/config/FileNode.java
+++ b/config-lib/src/main/java/com/yahoo/config/FileNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
/**
diff --git a/config-lib/src/main/java/com/yahoo/config/FileReference.java b/config-lib/src/main/java/com/yahoo/config/FileReference.java
index ee99ebfa2b7..9d4211fec06 100755
--- a/config-lib/src/main/java/com/yahoo/config/FileReference.java
+++ b/config-lib/src/main/java/com/yahoo/config/FileReference.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import java.io.File;
diff --git a/config-lib/src/main/java/com/yahoo/config/InnerNode.java b/config-lib/src/main/java/com/yahoo/config/InnerNode.java
index 45f61fee315..597a734e6a3 100644
--- a/config-lib/src/main/java/com/yahoo/config/InnerNode.java
+++ b/config-lib/src/main/java/com/yahoo/config/InnerNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import java.lang.reflect.Field;
diff --git a/config-lib/src/main/java/com/yahoo/config/InnerNodeVector.java b/config-lib/src/main/java/com/yahoo/config/InnerNodeVector.java
index ec773b91ac4..8bf9b4c1520 100644
--- a/config-lib/src/main/java/com/yahoo/config/InnerNodeVector.java
+++ b/config-lib/src/main/java/com/yahoo/config/InnerNodeVector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import java.util.List;
diff --git a/config-lib/src/main/java/com/yahoo/config/IntegerNode.java b/config-lib/src/main/java/com/yahoo/config/IntegerNode.java
index e19429b2ae6..1833459b183 100644
--- a/config-lib/src/main/java/com/yahoo/config/IntegerNode.java
+++ b/config-lib/src/main/java/com/yahoo/config/IntegerNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
/**
diff --git a/config-lib/src/main/java/com/yahoo/config/LeafNode.java b/config-lib/src/main/java/com/yahoo/config/LeafNode.java
index 81b2230006e..8aa97cef4ee 100644
--- a/config-lib/src/main/java/com/yahoo/config/LeafNode.java
+++ b/config-lib/src/main/java/com/yahoo/config/LeafNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
/**
diff --git a/config-lib/src/main/java/com/yahoo/config/LeafNodeMaps.java b/config-lib/src/main/java/com/yahoo/config/LeafNodeMaps.java
index b6132a44e3c..9435c09803f 100644
--- a/config-lib/src/main/java/com/yahoo/config/LeafNodeMaps.java
+++ b/config-lib/src/main/java/com/yahoo/config/LeafNodeMaps.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import java.util.Collections;
diff --git a/config-lib/src/main/java/com/yahoo/config/LeafNodeVector.java b/config-lib/src/main/java/com/yahoo/config/LeafNodeVector.java
index 259afefdd69..599385899e1 100644
--- a/config-lib/src/main/java/com/yahoo/config/LeafNodeVector.java
+++ b/config-lib/src/main/java/com/yahoo/config/LeafNodeVector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import java.io.File;
diff --git a/config-lib/src/main/java/com/yahoo/config/LongNode.java b/config-lib/src/main/java/com/yahoo/config/LongNode.java
index 8a569be234f..02b6a5f7654 100755
--- a/config-lib/src/main/java/com/yahoo/config/LongNode.java
+++ b/config-lib/src/main/java/com/yahoo/config/LongNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
/**
diff --git a/config-lib/src/main/java/com/yahoo/config/Node.java b/config-lib/src/main/java/com/yahoo/config/Node.java
index ed11bdc9891..a07409b19e7 100644
--- a/config-lib/src/main/java/com/yahoo/config/Node.java
+++ b/config-lib/src/main/java/com/yahoo/config/Node.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
/**
diff --git a/config-lib/src/main/java/com/yahoo/config/NodeVector.java b/config-lib/src/main/java/com/yahoo/config/NodeVector.java
index 79a6b0658ef..3d07de944fd 100644
--- a/config-lib/src/main/java/com/yahoo/config/NodeVector.java
+++ b/config-lib/src/main/java/com/yahoo/config/NodeVector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import java.util.*;
diff --git a/config-lib/src/main/java/com/yahoo/config/PathNode.java b/config-lib/src/main/java/com/yahoo/config/PathNode.java
index 17643758009..1c4f724a7ed 100644
--- a/config-lib/src/main/java/com/yahoo/config/PathNode.java
+++ b/config-lib/src/main/java/com/yahoo/config/PathNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import java.io.File;
diff --git a/config-lib/src/main/java/com/yahoo/config/ReferenceNode.java b/config-lib/src/main/java/com/yahoo/config/ReferenceNode.java
index 8e9926db5c4..2c668875f81 100644
--- a/config-lib/src/main/java/com/yahoo/config/ReferenceNode.java
+++ b/config-lib/src/main/java/com/yahoo/config/ReferenceNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
/**
diff --git a/config-lib/src/main/java/com/yahoo/config/Serializer.java b/config-lib/src/main/java/com/yahoo/config/Serializer.java
index dfa4929ac9d..12c45c789a4 100644
--- a/config-lib/src/main/java/com/yahoo/config/Serializer.java
+++ b/config-lib/src/main/java/com/yahoo/config/Serializer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
/**
diff --git a/config-lib/src/main/java/com/yahoo/config/StringNode.java b/config-lib/src/main/java/com/yahoo/config/StringNode.java
index cd26fa3d63b..2e4f0df07af 100644
--- a/config-lib/src/main/java/com/yahoo/config/StringNode.java
+++ b/config-lib/src/main/java/com/yahoo/config/StringNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import com.yahoo.config.text.StringUtilities;
diff --git a/config-lib/src/main/java/com/yahoo/config/UrlNode.java b/config-lib/src/main/java/com/yahoo/config/UrlNode.java
index 9726a62a739..d71439ebb9a 100644
--- a/config-lib/src/main/java/com/yahoo/config/UrlNode.java
+++ b/config-lib/src/main/java/com/yahoo/config/UrlNode.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import java.io.File;
diff --git a/config-lib/src/main/java/com/yahoo/config/UrlReference.java b/config-lib/src/main/java/com/yahoo/config/UrlReference.java
index 0ec4fd8f8b8..470828c7d0c 100755
--- a/config-lib/src/main/java/com/yahoo/config/UrlReference.java
+++ b/config-lib/src/main/java/com/yahoo/config/UrlReference.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import java.util.Objects;
diff --git a/config-lib/src/main/java/com/yahoo/config/package-info.java b/config-lib/src/main/java/com/yahoo/config/package-info.java
index 1462735685e..b4f904501a3 100644
--- a/config-lib/src/main/java/com/yahoo/config/package-info.java
+++ b/config-lib/src/main/java/com/yahoo/config/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.config;
diff --git a/config-lib/src/main/java/com/yahoo/config/text/StringUtilities.java b/config-lib/src/main/java/com/yahoo/config/text/StringUtilities.java
index 4fbe55b4978..ca0bc1758e3 100644
--- a/config-lib/src/main/java/com/yahoo/config/text/StringUtilities.java
+++ b/config-lib/src/main/java/com/yahoo/config/text/StringUtilities.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.text;
import java.nio.charset.Charset;
diff --git a/config-lib/src/test/java/com/yahoo/config/BooleanNodeTest.java b/config-lib/src/test/java/com/yahoo/config/BooleanNodeTest.java
index 55f644d069c..bfa2f747c1c 100644
--- a/config-lib/src/test/java/com/yahoo/config/BooleanNodeTest.java
+++ b/config-lib/src/test/java/com/yahoo/config/BooleanNodeTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import org.junit.Test;
diff --git a/config-lib/src/test/java/com/yahoo/config/ConfigInstanceBuilderTest.java b/config-lib/src/test/java/com/yahoo/config/ConfigInstanceBuilderTest.java
index 66e2d1b27b2..7b2c2757b56 100644
--- a/config-lib/src/test/java/com/yahoo/config/ConfigInstanceBuilderTest.java
+++ b/config-lib/src/test/java/com/yahoo/config/ConfigInstanceBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import com.yahoo.foo.MaptypesConfig;
diff --git a/config-lib/src/test/java/com/yahoo/config/ConfigInstanceEqualsTest.java b/config-lib/src/test/java/com/yahoo/config/ConfigInstanceEqualsTest.java
index 06db64fb20c..1ca33b8628a 100644
--- a/config-lib/src/test/java/com/yahoo/config/ConfigInstanceEqualsTest.java
+++ b/config-lib/src/test/java/com/yahoo/config/ConfigInstanceEqualsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import com.yahoo.test.AppConfig;
diff --git a/config-lib/src/test/java/com/yahoo/config/DoubleNodeTest.java b/config-lib/src/test/java/com/yahoo/config/DoubleNodeTest.java
index 7060a65e663..42819957a1d 100644
--- a/config-lib/src/test/java/com/yahoo/config/DoubleNodeTest.java
+++ b/config-lib/src/test/java/com/yahoo/config/DoubleNodeTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import org.junit.Test;
diff --git a/config-lib/src/test/java/com/yahoo/config/EnumNodeTest.java b/config-lib/src/test/java/com/yahoo/config/EnumNodeTest.java
index 65934e1cff3..b9ebaf1f4dd 100644
--- a/config-lib/src/test/java/com/yahoo/config/EnumNodeTest.java
+++ b/config-lib/src/test/java/com/yahoo/config/EnumNodeTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import org.junit.Test;
diff --git a/config-lib/src/test/java/com/yahoo/config/FileNodeTest.java b/config-lib/src/test/java/com/yahoo/config/FileNodeTest.java
index 04d49ba45bd..67edf5e9631 100644
--- a/config-lib/src/test/java/com/yahoo/config/FileNodeTest.java
+++ b/config-lib/src/test/java/com/yahoo/config/FileNodeTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import org.junit.Test;
diff --git a/config-lib/src/test/java/com/yahoo/config/IntegerNodeTest.java b/config-lib/src/test/java/com/yahoo/config/IntegerNodeTest.java
index 53542303e83..c8404b8791e 100644
--- a/config-lib/src/test/java/com/yahoo/config/IntegerNodeTest.java
+++ b/config-lib/src/test/java/com/yahoo/config/IntegerNodeTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import org.junit.Test;
diff --git a/config-lib/src/test/java/com/yahoo/config/LongNodeTest.java b/config-lib/src/test/java/com/yahoo/config/LongNodeTest.java
index 036e8e9c591..c3f9ff9ae8f 100644
--- a/config-lib/src/test/java/com/yahoo/config/LongNodeTest.java
+++ b/config-lib/src/test/java/com/yahoo/config/LongNodeTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import org.junit.Test;
diff --git a/config-lib/src/test/java/com/yahoo/config/NodeVectorTest.java b/config-lib/src/test/java/com/yahoo/config/NodeVectorTest.java
index d042ee439e8..cb9bd65c406 100644
--- a/config-lib/src/test/java/com/yahoo/config/NodeVectorTest.java
+++ b/config-lib/src/test/java/com/yahoo/config/NodeVectorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import org.junit.Test;
diff --git a/config-lib/src/test/java/com/yahoo/config/PathNodeTest.java b/config-lib/src/test/java/com/yahoo/config/PathNodeTest.java
index ccada228b3a..7bb465f203b 100644
--- a/config-lib/src/test/java/com/yahoo/config/PathNodeTest.java
+++ b/config-lib/src/test/java/com/yahoo/config/PathNodeTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import org.junit.Test;
diff --git a/config-lib/src/test/java/com/yahoo/config/StringNodeTest.java b/config-lib/src/test/java/com/yahoo/config/StringNodeTest.java
index 1f3cc470845..05b9361865c 100644
--- a/config-lib/src/test/java/com/yahoo/config/StringNodeTest.java
+++ b/config-lib/src/test/java/com/yahoo/config/StringNodeTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import org.junit.Test;
diff --git a/config-lib/src/test/java/com/yahoo/config/UrlNodeTest.java b/config-lib/src/test/java/com/yahoo/config/UrlNodeTest.java
index d8d6cc0f1f1..040e3304a66 100644
--- a/config-lib/src/test/java/com/yahoo/config/UrlNodeTest.java
+++ b/config-lib/src/test/java/com/yahoo/config/UrlNodeTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config;
import org.junit.Test;
diff --git a/config-lib/src/test/java/com/yahoo/config/codegen/NamespaceAndPackageTest.java b/config-lib/src/test/java/com/yahoo/config/codegen/NamespaceAndPackageTest.java
index bf314325f3e..066b5383621 100644
--- a/config-lib/src/test/java/com/yahoo/config/codegen/NamespaceAndPackageTest.java
+++ b/config-lib/src/test/java/com/yahoo/config/codegen/NamespaceAndPackageTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
import com.github.myproject.NamespaceAndPackageConfig;
diff --git a/config-lib/src/test/resources/configdefinitions/foo.maptypes.def b/config-lib/src/test/resources/configdefinitions/foo.maptypes.def
index 0e39c7ccdb9..4149317c70c 100644
--- a/config-lib/src/test/resources/configdefinitions/foo.maptypes.def
+++ b/config-lib/src/test/resources/configdefinitions/foo.maptypes.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Config containing only structs in various forms
namespace=foo
diff --git a/config-lib/src/test/resources/configdefinitions/foo.structtypes.def b/config-lib/src/test/resources/configdefinitions/foo.structtypes.def
index fe9d879fb64..df815307b9d 100644
--- a/config-lib/src/test/resources/configdefinitions/foo.structtypes.def
+++ b/config-lib/src/test/resources/configdefinitions/foo.structtypes.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Config containing only structs in various forms
namespace=foo
diff --git a/config-lib/src/test/resources/configdefinitions/my.namespace.namespace-and-package.def b/config-lib/src/test/resources/configdefinitions/my.namespace.namespace-and-package.def
index 4e61d25f05f..3dbc0de800e 100644
--- a/config-lib/src/test/resources/configdefinitions/my.namespace.namespace-and-package.def
+++ b/config-lib/src/test/resources/configdefinitions/my.namespace.namespace-and-package.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=my.namespace
diff --git a/config-lib/src/test/resources/configdefinitions/my.namespace.namespace.def b/config-lib/src/test/resources/configdefinitions/my.namespace.namespace.def
index b1406fc1bc4..770d01eb293 100644
--- a/config-lib/src/test/resources/configdefinitions/my.namespace.namespace.def
+++ b/config-lib/src/test/resources/configdefinitions/my.namespace.namespace.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=my.namespace
diff --git a/config-lib/src/test/resources/configdefinitions/package.def b/config-lib/src/test/resources/configdefinitions/package.def
index eba915738a5..10b0572a4cc 100644
--- a/config-lib/src/test/resources/configdefinitions/package.def
+++ b/config-lib/src/test/resources/configdefinitions/package.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package=com.github.myproject
diff --git a/config-lib/src/test/resources/configdefinitions/test.app.def b/config-lib/src/test/resources/configdefinitions/test.app.def
index 78388998ef3..9639db9e2c3 100644
--- a/config-lib/src/test/resources/configdefinitions/test.app.def
+++ b/config-lib/src/test/resources/configdefinitions/test.app.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=test
message string default="Hello!"
diff --git a/config-lib/src/test/resources/configdefinitions/test.function-test.def b/config-lib/src/test/resources/configdefinitions/test.function-test.def
index 73681d95544..f6a997daf77 100644
--- a/config-lib/src/test/resources/configdefinitions/test.function-test.def
+++ b/config-lib/src/test/resources/configdefinitions/test.function-test.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# This def file should test most aspects of def files that makes a difference
# for the autogenerated config classes. The goal is to trigger all blocks of
diff --git a/config-lib/src/test/resources/configdefinitions/test.int.def b/config-lib/src/test/resources/configdefinitions/test.int.def
index ea29b911fc4..9934859a7a7 100755
--- a/config-lib/src/test/resources/configdefinitions/test.int.def
+++ b/config-lib/src/test/resources/configdefinitions/test.int.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=test
intVal int default=1
diff --git a/config-lib/src/test/resources/configdefinitions/test.restart.def b/config-lib/src/test/resources/configdefinitions/test.restart.def
index 4b28e5a5d95..aeb05d30615 100755
--- a/config-lib/src/test/resources/configdefinitions/test.restart.def
+++ b/config-lib/src/test/resources/configdefinitions/test.restart.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=test
intVal int default=1 restart
diff --git a/config-model-api/CMakeLists.txt b/config-model-api/CMakeLists.txt
index f69e5242e2e..81bf9928a8c 100644
--- a/config-model-api/CMakeLists.txt
+++ b/config-model-api/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(config-model-api)
diff --git a/config-model-api/abi-spec.json b/config-model-api/abi-spec.json
index 5ad8ee1af0c..b3223c1a7b6 100644
--- a/config-model-api/abi-spec.json
+++ b/config-model-api/abi-spec.json
@@ -193,9 +193,10 @@
"public"
],
"methods": [
- "public void <init>(com.yahoo.config.provision.InstanceName, java.util.List, com.yahoo.config.application.api.DeploymentSpec$UpgradePolicy, java.util.List, java.util.Optional, java.util.Optional, com.yahoo.config.application.api.Notifications, java.util.List)",
+ "public void <init>(com.yahoo.config.provision.InstanceName, java.util.List, com.yahoo.config.application.api.DeploymentSpec$UpgradePolicy, com.yahoo.config.application.api.DeploymentSpec$UpgradeRollout, java.util.List, java.util.Optional, java.util.Optional, com.yahoo.config.application.api.Notifications, java.util.List)",
"public com.yahoo.config.provision.InstanceName name()",
"public com.yahoo.config.application.api.DeploymentSpec$UpgradePolicy upgradePolicy()",
+ "public com.yahoo.config.application.api.DeploymentSpec$UpgradeRollout upgradeRollout()",
"public java.util.List changeBlocker()",
"public java.util.Optional globalServiceId()",
"public boolean canUpgradeAt(java.time.Instant)",
@@ -350,6 +351,23 @@
"public static final enum com.yahoo.config.application.api.DeploymentSpec$UpgradePolicy conservative"
]
},
+ "com.yahoo.config.application.api.DeploymentSpec$UpgradeRollout": {
+ "superClass": "java.lang.Enum",
+ "interfaces": [],
+ "attributes": [
+ "public",
+ "final",
+ "enum"
+ ],
+ "methods": [
+ "public static com.yahoo.config.application.api.DeploymentSpec$UpgradeRollout[] values()",
+ "public static com.yahoo.config.application.api.DeploymentSpec$UpgradeRollout valueOf(java.lang.String)"
+ ],
+ "fields": [
+ "public static final enum com.yahoo.config.application.api.DeploymentSpec$UpgradeRollout separate",
+ "public static final enum com.yahoo.config.application.api.DeploymentSpec$UpgradeRollout leading"
+ ]
+ },
"com.yahoo.config.application.api.DeploymentSpec": {
"superClass": "java.lang.Object",
"interfaces": [],
@@ -422,10 +440,12 @@
"methods": [
"public abstract com.yahoo.config.FileReference addFile(java.lang.String)",
"public abstract com.yahoo.config.FileReference addUri(java.lang.String)",
- "public abstract com.yahoo.config.FileReference addBlob(java.nio.ByteBuffer)",
+ "public com.yahoo.config.FileReference addBlob(java.nio.ByteBuffer)",
+ "public abstract com.yahoo.config.FileReference addBlob(java.lang.String, java.nio.ByteBuffer)",
"public com.yahoo.config.FileReference addApplicationPackage()",
- "public abstract java.lang.String fileSourceHost()",
- "public abstract java.util.List export()"
+ "public java.lang.String fileSourceHost()",
+ "public abstract java.util.List export()",
+ "public static java.lang.String blobName(java.nio.ByteBuffer)"
],
"fields": []
},
diff --git a/config-model-api/pom.xml b/config-model-api/pom.xml
index 6ca33bed833..49a9085134e 100644
--- a/config-model-api/pom.xml
+++ b/config-model-api/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationFile.java b/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationFile.java
index 33b7807aac5..a55ae795d28 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationFile.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationFile.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application.api;
import com.yahoo.path.Path;
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationMetaData.java b/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationMetaData.java
index edafa415446..8eec22ddc5d 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationMetaData.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationMetaData.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application.api;
import com.yahoo.config.provision.ApplicationId;
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java b/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java
index 2aefc985f4b..5c36de38c9b 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application.api;
import com.yahoo.component.Version;
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/ComponentInfo.java b/config-model-api/src/main/java/com/yahoo/config/application/api/ComponentInfo.java
index ac4bc90c845..414ee7267fd 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/ComponentInfo.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/ComponentInfo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application.api;
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/DeployLogger.java b/config-model-api/src/main/java/com/yahoo/config/application/api/DeployLogger.java
index 8ed17c3c0d0..d9ebd902e3e 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/DeployLogger.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/DeployLogger.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application.api;
import java.util.logging.Level;
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentInstanceSpec.java b/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentInstanceSpec.java
index 8813eaf9c8c..cd051ecda7b 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentInstanceSpec.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentInstanceSpec.java
@@ -27,6 +27,7 @@ public class DeploymentInstanceSpec extends DeploymentSpec.Steps {
private final InstanceName name;
private final DeploymentSpec.UpgradePolicy upgradePolicy;
+ private final DeploymentSpec.UpgradeRollout upgradeRollout;
private final List<DeploymentSpec.ChangeBlocker> changeBlockers;
private final Optional<String> globalServiceId;
private final Optional<AthenzService> athenzService;
@@ -36,6 +37,7 @@ public class DeploymentInstanceSpec extends DeploymentSpec.Steps {
public DeploymentInstanceSpec(InstanceName name,
List<DeploymentSpec.Step> steps,
DeploymentSpec.UpgradePolicy upgradePolicy,
+ DeploymentSpec.UpgradeRollout upgradeRollout,
List<DeploymentSpec.ChangeBlocker> changeBlockers,
Optional<String> globalServiceId,
Optional<AthenzService> athenzService,
@@ -44,6 +46,7 @@ public class DeploymentInstanceSpec extends DeploymentSpec.Steps {
super(steps);
this.name = name;
this.upgradePolicy = upgradePolicy;
+ this.upgradeRollout = upgradeRollout;
this.changeBlockers = changeBlockers;
this.globalServiceId = globalServiceId;
this.athenzService = athenzService;
@@ -136,6 +139,9 @@ public class DeploymentInstanceSpec extends DeploymentSpec.Steps {
/** Returns the upgrade policy of this, which is defaultPolicy if none is specified */
public DeploymentSpec.UpgradePolicy upgradePolicy() { return upgradePolicy; }
+ /** Returns the upgrade rollout strategy of this, which is separate if none is specified */
+ public DeploymentSpec.UpgradeRollout upgradeRollout() { return upgradeRollout; }
+
/** Returns time windows where upgrades are disallowed for these instances */
public List<DeploymentSpec.ChangeBlocker> changeBlocker() { return changeBlockers; }
@@ -181,6 +187,7 @@ public class DeploymentInstanceSpec extends DeploymentSpec.Steps {
DeploymentInstanceSpec other = (DeploymentInstanceSpec) o;
return globalServiceId.equals(other.globalServiceId) &&
upgradePolicy == other.upgradePolicy &&
+ upgradeRollout == other.upgradeRollout &&
changeBlockers.equals(other.changeBlockers) &&
steps().equals(other.steps()) &&
athenzService.equals(other.athenzService) &&
@@ -190,7 +197,7 @@ public class DeploymentInstanceSpec extends DeploymentSpec.Steps {
@Override
public int hashCode() {
- return Objects.hash(globalServiceId, upgradePolicy, changeBlockers, steps(), athenzService, notifications, endpoints);
+ return Objects.hash(globalServiceId, upgradePolicy, upgradeRollout, changeBlockers, steps(), athenzService, notifications, endpoints);
}
@Override
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java b/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java
index 24d83e2b7b1..9562584bc0a 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application.api;
import com.yahoo.collections.Comparables;
@@ -510,6 +510,18 @@ public class DeploymentSpec {
conservative
}
+
+ /** Determines when application changes deploy, when there is already an ongoing platform upgrade. */
+ public enum UpgradeRollout {
+ /** Separate: Application changes wait for upgrade to complete, unless upgrade fails. */
+ separate,
+ /** Leading: Application changes are allowed to start and catch up to the platform upgrade. */
+ leading
+ // /** Simultaneous: Application changes deploy independently of platform upgrades. */
+ // simultaneous
+ }
+
+
/** A blocking of changes in a given time window */
public static class ChangeBlocker {
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/FileRegistry.java b/config-model-api/src/main/java/com/yahoo/config/application/api/FileRegistry.java
index 9d049ae0847..7436b7a989a 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/FileRegistry.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/FileRegistry.java
@@ -1,10 +1,12 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application.api;
import java.nio.ByteBuffer;
import java.util.List;
import com.yahoo.config.FileReference;
+import com.yahoo.net.HostName;
+import net.jpountz.xxhash.XXHashFactory;
/**
@@ -14,13 +16,20 @@ public interface FileRegistry {
FileReference addFile(String relativePath);
FileReference addUri(String uri);
- FileReference addBlob(ByteBuffer blob);
+ /**
+ * @deprecated Remove after 7.455
+ */
+ @Deprecated
+ default FileReference addBlob(ByteBuffer blob) { return null; }
+ FileReference addBlob(String name, ByteBuffer blob);
default FileReference addApplicationPackage() { return addFile(""); }
/**
* Returns the name of the host which is the source of the files
+ * @deprecated Remove after 7.453
*/
- String fileSourceHost();
+ @Deprecated
+ default String fileSourceHost() { return HostName.getLocalhost(); }
List<Entry> export();
@@ -34,4 +43,15 @@ public interface FileRegistry {
}
}
+ /**
+ * @deprecated Remove after 7.455
+ */
+ @Deprecated
+ static String blobName(ByteBuffer blob) {
+ blob.mark();
+ long blobHash = XXHashFactory.fastestJavaInstance().hash64().hash(blob, 0);
+ blob.reset();
+ return Long.toHexString(blobHash);
+ }
+
}
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/TimeWindow.java b/config-model-api/src/main/java/com/yahoo/config/application/api/TimeWindow.java
index 2c3fbf2f604..e17dea63769 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/TimeWindow.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/TimeWindow.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application.api;
import java.time.DateTimeException;
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/UnparsedConfigDefinition.java b/config-model-api/src/main/java/com/yahoo/config/application/api/UnparsedConfigDefinition.java
index ea3b1632571..15420cec98c 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/UnparsedConfigDefinition.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/UnparsedConfigDefinition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application.api;
import com.yahoo.vespa.config.ConfigDefinition;
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/ValidationId.java b/config-model-api/src/main/java/com/yahoo/config/application/api/ValidationId.java
index 7aa6788b86d..b8f6caa70d3 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/ValidationId.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/ValidationId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application.api;
import java.util.Optional;
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java b/config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java
index af3cf4175cf..b419e3b1e1f 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application.api;
import com.google.common.collect.ImmutableList;
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/package-info.java b/config-model-api/src/main/java/com/yahoo/config/application/api/package-info.java
index 6651f19bfd6..32536ebb778 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/package-info.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.config.application.api;
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java b/config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java
index 4bd819b3b6a..7a4e5ec8857 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application.api.xml;
import com.yahoo.config.application.api.DeploymentInstanceSpec;
@@ -149,6 +149,7 @@ public class DeploymentSpecXmlReader {
// Values where the parent may provide a default
DeploymentSpec.UpgradePolicy upgradePolicy = readUpgradePolicy(instanceTag, parentTag);
+ DeploymentSpec.UpgradeRollout upgradeRollout = readUpgradeRollout(instanceTag, parentTag);
List<DeploymentSpec.ChangeBlocker> changeBlockers = readChangeBlockers(instanceTag, parentTag);
Optional<AthenzService> athenzService = mostSpecificAttribute(instanceTag, athenzServiceAttribute).map(AthenzService::from);
Notifications notifications = readNotifications(instanceTag, parentTag);
@@ -165,6 +166,7 @@ public class DeploymentSpecXmlReader {
.map(name -> new DeploymentInstanceSpec(InstanceName.from(name),
steps,
upgradePolicy,
+ upgradeRollout,
changeBlockers,
globalServiceId.asOptional(),
athenzService,
@@ -404,6 +406,9 @@ public class DeploymentSpecXmlReader {
return DeploymentSpec.UpgradePolicy.defaultPolicy;
String policy = upgradeElement.getAttribute("policy");
+ if (policy.isEmpty())
+ return DeploymentSpec.UpgradePolicy.defaultPolicy;
+
switch (policy) {
case "canary": return DeploymentSpec.UpgradePolicy.canary;
case "default": return DeploymentSpec.UpgradePolicy.defaultPolicy;
@@ -413,6 +418,26 @@ public class DeploymentSpecXmlReader {
}
}
+ private DeploymentSpec.UpgradeRollout readUpgradeRollout(Element parent, Element fallbackParent) {
+ Element upgradeElement = XML.getChild(parent, upgradeTag);
+ if (upgradeElement == null)
+ upgradeElement = XML.getChild(fallbackParent, upgradeTag);
+ if (upgradeElement == null)
+ return DeploymentSpec.UpgradeRollout.separate;
+
+ String rollout = upgradeElement.getAttribute("rollout");
+ if (rollout.isEmpty())
+ return DeploymentSpec.UpgradeRollout.separate;
+
+ switch (rollout) {
+ case "separate": return DeploymentSpec.UpgradeRollout.separate;
+ case "leading": return DeploymentSpec.UpgradeRollout.leading;
+ // case "simultaneous": return DeploymentSpec.UpgradePolicy.conservative;
+ default: throw new IllegalArgumentException("Illegal upgrade policy '" + rollout + "': " +
+ "Must be one of " + Arrays.toString(DeploymentSpec.UpgradePolicy.values()));
+ }
+ }
+
private boolean readActive(Element regionTag) {
String activeValue = regionTag.getAttribute("active");
if ("true".equals(activeValue)) return true;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationInfo.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationInfo.java
index 9407037eabd..a69177e02f8 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationInfo.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationInfo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import com.yahoo.config.provision.ApplicationId;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationRoles.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationRoles.java
index 8492603e2e3..202162b3ce3 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationRoles.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationRoles.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import com.google.common.base.Strings;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigChangeAction.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigChangeAction.java
index 87a150a6c3c..8d62aa3128a 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigChangeAction.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigChangeAction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigChangeRefeedAction.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigChangeRefeedAction.java
index 13109088dcd..4bd4cad976f 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigChangeRefeedAction.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigChangeRefeedAction.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigChangeReindexAction.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigChangeReindexAction.java
index 261a09b4a0d..f48b7f5bf94 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigChangeReindexAction.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigChangeReindexAction.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigChangeRestartAction.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigChangeRestartAction.java
index c13399a42f5..c181486b982 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigChangeRestartAction.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigChangeRestartAction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
/**
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigDefinitionRepo.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigDefinitionRepo.java
index 676dad9656e..e2ae6d55d87 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigDefinitionRepo.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigDefinitionRepo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import com.yahoo.vespa.config.ConfigDefinitionKey;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigDefinitionStore.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigDefinitionStore.java
index 10c9e42e553..cd55cfe3f11 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigDefinitionStore.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigDefinitionStore.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import com.yahoo.vespa.config.ConfigDefinition;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigModelPlugin.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigModelPlugin.java
index b3862dd77d1..372c28ff26a 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigModelPlugin.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigModelPlugin.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
/**
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigServerSpec.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigServerSpec.java
index 96e76e46cda..f8003b29259 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigServerSpec.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigServerSpec.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
/**
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ContainerEndpoint.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ContainerEndpoint.java
index 5641233606e..2b2b5e2c404 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ContainerEndpoint.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ContainerEndpoint.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import java.util.List;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/EndpointCertificateMetadata.java b/config-model-api/src/main/java/com/yahoo/config/model/api/EndpointCertificateMetadata.java
index 07aca1f7275..4d752ea1897 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/EndpointCertificateMetadata.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/EndpointCertificateMetadata.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import java.util.Objects;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/FileDistribution.java b/config-model-api/src/main/java/com/yahoo/config/model/api/FileDistribution.java
index 4a3034b9cea..78ffc8667fe 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/FileDistribution.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/FileDistribution.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import com.yahoo.config.FileReference;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/HostInfo.java b/config-model-api/src/main/java/com/yahoo/config/model/api/HostInfo.java
index 3cbc165f2b9..3c2b7470ab9 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/HostInfo.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/HostInfo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import java.util.Collection;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/HostProvisioner.java b/config-model-api/src/main/java/com/yahoo/config/model/api/HostProvisioner.java
index 83463cca2cc..9f4445942b4 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/HostProvisioner.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/HostProvisioner.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import com.yahoo.config.provision.Capacity;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/Model.java b/config-model-api/src/main/java/com/yahoo/config/model/api/Model.java
index f98d72374bf..c1248ff556c 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/Model.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/Model.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import com.yahoo.component.Version;
@@ -6,7 +6,6 @@ import com.yahoo.config.ConfigInstance;
import com.yahoo.config.FileReference;
import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.vespa.config.ConfigKey;
-import com.yahoo.vespa.config.ConfigPayload;
import com.yahoo.vespa.config.buildergen.ConfigDefinition;
import java.time.Instant;
@@ -39,13 +38,6 @@ public interface Model {
/** Returns all the config ids available for this model. */
Set<String> allConfigIds();
- /**
- * Asks the {@link Model} instance to distribute files using provided filedistribution instance.
- *
- * @param fileDistribution instance that can be called to distribute files
- */
- void distributeFiles(FileDistribution fileDistribution);
-
/** The set of files that should be distributed to the hosts in this model. */
Set<FileReference> fileReferences();
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
index 4b0e30e04da..6835718fe57 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import com.yahoo.component.Version;
@@ -10,7 +10,6 @@ import com.yahoo.config.provision.AthenzDomain;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.DockerImage;
import com.yahoo.config.provision.HostName;
-import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.Zone;
import java.io.File;
@@ -23,6 +22,7 @@ import java.security.cert.X509Certificate;
import java.util.List;
import java.util.Optional;
import java.util.Set;
+import java.util.concurrent.ExecutorService;
/**
* Model context containing state provided to model factories.
@@ -39,6 +39,7 @@ public interface ModelContext {
DeployLogger deployLogger();
ConfigDefinitionRepo configDefinitionRepo();
FileRegistry getFileRegistry();
+ ExecutorService getExecutor();
default Optional<? extends Reindexing> reindexing() { return Optional.empty(); }
Properties properties();
default Optional<File> appDir() { return Optional.empty();}
@@ -68,7 +69,6 @@ public interface ModelContext {
* - Remove all flag data files from hosted-feature-flag repository
*/
interface FeatureFlags {
- @ModelFeatureFlag(owners = {"jonmv"}) default Optional<NodeResources> dedicatedClusterControllerFlavor() { return Optional.empty(); }
@ModelFeatureFlag(owners = {"baldersheim"}, comment = "Revisit in May or June 2021") default double defaultTermwiseLimit() { throw new UnsupportedOperationException("TODO specify default value"); }
@ModelFeatureFlag(owners = {"vekterli"}) default boolean useThreePhaseUpdates() { throw new UnsupportedOperationException("TODO specify default value"); }
@ModelFeatureFlag(owners = {"baldersheim"}, comment = "Select sequencer type use while feeding") default String feedSequencerType() { throw new UnsupportedOperationException("TODO specify default value"); }
@@ -77,30 +77,26 @@ public interface ModelContext {
@ModelFeatureFlag(owners = {"baldersheim"}) default boolean skipCommunicationManagerThread() { throw new UnsupportedOperationException("TODO specify default value"); }
@ModelFeatureFlag(owners = {"baldersheim"}) default boolean skipMbusRequestThread() { throw new UnsupportedOperationException("TODO specify default value"); }
@ModelFeatureFlag(owners = {"baldersheim"}) default boolean skipMbusReplyThread() { throw new UnsupportedOperationException("TODO specify default value"); }
- @ModelFeatureFlag(owners = {"tokle"}) default boolean useAccessControlTlsHandshakeClientAuth() { return true; }
@ModelFeatureFlag(owners = {"baldersheim"}) default boolean useAsyncMessageHandlingOnSchedule() { throw new UnsupportedOperationException("TODO specify default value"); }
@ModelFeatureFlag(owners = {"baldersheim"}) default double feedConcurrency() { throw new UnsupportedOperationException("TODO specify default value"); }
- @ModelFeatureFlag(owners = {"baldersheim"}) default boolean useBucketExecutorForPruneRemoved() { return true; }
- @ModelFeatureFlag(owners = {"baldersheim"}) default int largeRankExpressionLimit() { return 0x10000; }
- @ModelFeatureFlag(owners = {"baldersheim"}) default boolean useExternalRankExpressions() { return false; }
- @ModelFeatureFlag(owners = {"baldersheim"}) default boolean distributeExternalRankExpressions() { return false; }
+ @ModelFeatureFlag(owners = {"baldersheim"}) default int metricsproxyNumThreads() { throw new UnsupportedOperationException("TODO specify default value"); }
+ @ModelFeatureFlag(owners = {"baldersheim"}) default int largeRankExpressionLimit() { return 8192; }
@ModelFeatureFlag(owners = {"baldersheim"}) default int maxConcurrentMergesPerNode() { throw new UnsupportedOperationException("TODO specify default value"); }
@ModelFeatureFlag(owners = {"baldersheim"}) default int maxMergeQueueSize() { throw new UnsupportedOperationException("TODO specify default value"); }
- @ModelFeatureFlag(owners = {"baldersheim"}) default boolean dryRunOnnxOnSetup() { throw new UnsupportedOperationException("TODO specify default value"); }
+ @ModelFeatureFlag(owners = {"vekterli", "geirst"}) default boolean ignoreMergeQueueLimit() { throw new UnsupportedOperationException("TODO specify default value"); }
+ @ModelFeatureFlag(owners = {"baldersheim"}) default boolean containerDumpHeapOnShutdownTimeout() { throw new UnsupportedOperationException("TODO specify default value"); }
+ @ModelFeatureFlag(owners = {"baldersheim"}) default double containerShutdownTimeout() { throw new UnsupportedOperationException("TODO specify default value"); }
@ModelFeatureFlag(owners = {"geirst"}) default boolean enableFeedBlockInDistributor() { return true; }
- @ModelFeatureFlag(owners = {"hmusum"}, removeAfter = "7.428") default int clusterControllerMaxHeapSizeInMb() { return 128; }
- @ModelFeatureFlag(owners = {"hmusum"}, removeAfter = "7.422") default int metricsProxyMaxHeapSizeInMb(ClusterSpec.Type type) { return 256; }
@ModelFeatureFlag(owners = {"bjorncs", "tokle"}) default List<String> allowedAthenzProxyIdentities() { return List.of(); }
- @ModelFeatureFlag(owners = {"tokle"}) default boolean tenantIamRole() { return false; }
@ModelFeatureFlag(owners = {"vekterli"}) default int maxActivationInhibitedOutOfSyncGroups() { return 0; }
@ModelFeatureFlag(owners = {"hmusum"}) default String jvmOmitStackTraceInFastThrowOption(ClusterSpec.Type type) { return ""; }
- @ModelFeatureFlag(owners = {"bjorncs", "jonmv"}, removeAfter = "7.424") default boolean enableJdiscHttp2() { return true; }
- @ModelFeatureFlag(owners = {"tokle", "bjorncs"}) default boolean enableCustomAclMapping() { return false; }
- @ModelFeatureFlag(owners = {"geirst", "vekterli"}) default int numDistributorStripes() { return 0; }
@ModelFeatureFlag(owners = {"arnej"}) default boolean requireConnectivityCheck() { return true; }
- @ModelFeatureFlag(owners = {"hmusum"}) default boolean throwIfResourceLimitsSpecified() { return false; }
@ModelFeatureFlag(owners = {"hmusum"}) default double resourceLimitDisk() { return 0.8; }
@ModelFeatureFlag(owners = {"hmusum"}) default double resourceLimitMemory() { return 0.8; }
+ @ModelFeatureFlag(owners = {"geirst", "vekterli"}) default double minNodeRatioPerGroup() { return 0.0; }
+ @ModelFeatureFlag(owners = {"arnej"}) default boolean newLocationBrokerLogic() { return true; }
+ @ModelFeatureFlag(owners = {"bjorncs"}) default int maxConnectionLifeInHosted() { return 45; }
+ @ModelFeatureFlag(owners = {"geirst", "vekterli"}) default int distributorMergeBusyWait() { return 10; }
}
/** Warning: As elsewhere in this package, do not make backwards incompatible changes that will break old config models! */
@@ -122,7 +118,8 @@ public interface ModelContext {
default Optional<AthenzDomain> athenzDomain() { return Optional.empty(); }
- Optional<ApplicationRoles> applicationRoles();
+ // applicationRoles is no longer in use and should be removed. Replaced by AwsEnvironment. Remove after 7.458
+ default Optional<ApplicationRoles> applicationRoles() { return Optional.empty(); }
default Quota quota() { return Quota.unlimited(); }
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelCreateResult.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelCreateResult.java
index 8cc99d1f308..2d40554a3f2 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelCreateResult.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelCreateResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import java.util.List;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelFactory.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelFactory.java
index 0c4e5087d62..1e382dd00c2 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelFactory.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import com.yahoo.component.Version;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelState.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelState.java
index 9142a8cc1c3..f6ced19ddfa 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelState.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelState.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
/**
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/PortInfo.java b/config-model-api/src/main/java/com/yahoo/config/model/api/PortInfo.java
index 99dce0b36c5..b64a11337f4 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/PortInfo.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/PortInfo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import java.util.Collection;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/Provisioned.java b/config-model-api/src/main/java/com/yahoo/config/model/api/Provisioned.java
index e4201836e57..3efcfdfb239 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/Provisioned.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/Provisioned.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import com.yahoo.config.provision.Capacity;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/Quota.java b/config-model-api/src/main/java/com/yahoo/config/model/api/Quota.java
index bb88bcf75d9..7ef92bba7e9 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/Quota.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/Quota.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import com.yahoo.slime.Inspector;
@@ -24,11 +24,11 @@ public class Quota {
/** The max budget in dollars per hour */
private final Optional<BigDecimal> budget;
- // TODO: Remove constructor once Vespa < 7.300 is gone from production
public Quota(Optional<Integer> maxClusterSize, Optional<Integer> budget) {
this(maxClusterSize, budget.map(BigDecimal::new), true);
}
+ // TODO: Remove unused argument
private Quota(Optional<Integer> maxClusterSize, Optional<BigDecimal> budget, boolean isDecimal) {
this.maxClusterSize = Objects.requireNonNull(maxClusterSize);
this.budget = Objects.requireNonNull(budget);
@@ -64,8 +64,6 @@ public class Quota {
public Optional<BigDecimal> budgetAsDecimal() { return budget; }
- // TODO: Remove once Vespa < 7.300 is gone from production
- public static Quota empty() { return unlimited(); }
public Optional<Integer> budget() { return budget.map(BigDecimal::intValue); }
@Override
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/Reindexing.java b/config-model-api/src/main/java/com/yahoo/config/model/api/Reindexing.java
index ae7fdf4f497..7c01320f3d0 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/Reindexing.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/Reindexing.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import java.time.Instant;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ServiceInfo.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ServiceInfo.java
index 7899a6ff5b0..bbeaf66e505 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ServiceInfo.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ServiceInfo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import java.util.Map;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/SuperModel.java b/config-model-api/src/main/java/com/yahoo/config/model/api/SuperModel.java
index 50f1ea2336d..2f203bee80a 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/SuperModel.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/SuperModel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import com.google.common.collect.ImmutableMap;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/SuperModelListener.java b/config-model-api/src/main/java/com/yahoo/config/model/api/SuperModelListener.java
index 930c3c94907..2a8709a2b94 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/SuperModelListener.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/SuperModelListener.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import com.yahoo.config.provision.ApplicationId;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/SuperModelProvider.java b/config-model-api/src/main/java/com/yahoo/config/model/api/SuperModelProvider.java
index b33902cbfb5..809dd74ae68 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/SuperModelProvider.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/SuperModelProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
public interface SuperModelProvider {
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/TenantSecretStore.java b/config-model-api/src/main/java/com/yahoo/config/model/api/TenantSecretStore.java
index 34fda3a53c2..f9842936de9 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/TenantSecretStore.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/TenantSecretStore.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import java.util.Objects;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ValidationParameters.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ValidationParameters.java
index 6e081d0d668..44aa467efc5 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ValidationParameters.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ValidationParameters.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
/**
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/container/package-info.java b/config-model-api/src/main/java/com/yahoo/config/model/api/container/package-info.java
index c32fdc393d0..df269bb42e8 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/container/package-info.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/container/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.config.model.api.container;
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/package-info.java b/config-model-api/src/main/java/com/yahoo/config/model/api/package-info.java
index 689e2524dde..698fd1a7dbb 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/package-info.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.config.model.api;
diff --git a/config-model-api/src/test/java/com/yahoo/config/application/api/ApplicationFileTest.java b/config-model-api/src/test/java/com/yahoo/config/application/api/ApplicationFileTest.java
index 6a305f9979e..165f19d9e57 100644
--- a/config-model-api/src/test/java/com/yahoo/config/application/api/ApplicationFileTest.java
+++ b/config-model-api/src/test/java/com/yahoo/config/application/api/ApplicationFileTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application.api;
import com.yahoo.io.IOUtils;
diff --git a/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecTest.java b/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecTest.java
index 5561ebdef63..053411bc5fb 100644
--- a/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecTest.java
+++ b/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application.api;
import com.google.common.collect.ImmutableSet;
@@ -118,6 +118,7 @@ public class DeploymentSpecTest {
assertFalse(spec.requireInstance("default").globalServiceId().isPresent());
assertEquals(DeploymentSpec.UpgradePolicy.defaultPolicy, spec.requireInstance("default").upgradePolicy());
+ assertEquals(DeploymentSpec.UpgradeRollout.separate, spec.requireInstance("default").upgradeRollout());
}
@Test
@@ -360,33 +361,43 @@ public class DeploymentSpecTest {
}
@Test
+ public void productionSpecWithUpgradeRollout() {
+ StringReader r = new StringReader(
+ "<deployment>" +
+ " <instance id='default'>" +
+ " <upgrade rollout='leading' />" +
+ " </instance>" +
+ " <instance id='custom'/>" +
+ "</deployment>"
+ );
+ DeploymentSpec spec = DeploymentSpec.fromXml(r);
+ assertEquals("leading", spec.requireInstance("default").upgradeRollout().toString());
+ assertEquals("separate", spec.requireInstance("custom").upgradeRollout().toString());
+ }
+
+ @Test
public void productionSpecWithUpgradePolicy() {
StringReader r = new StringReader(
"<deployment>" +
" <instance id='default'>" +
" <upgrade policy='canary'/>" +
- " <prod>" +
- " <region active='true'>us-west-1</region>" +
- " <region active='true'>us-central-1</region>" +
- " <region active='true'>us-east-3</region>" +
- " </prod>" +
" </instance>" +
+ " <instance id='custom'/>" +
"</deployment>"
);
-
DeploymentSpec spec = DeploymentSpec.fromXml(r);
assertEquals("canary", spec.requireInstance("default").upgradePolicy().toString());
+ assertEquals("defaultPolicy", spec.requireInstance("custom").upgradePolicy().toString());
}
@Test
public void upgradePolicyDefault() {
StringReader r = new StringReader(
"<deployment version='1.0'>" +
- " <upgrade policy='canary'/>" +
- " <instance id='instance1'>" +
- " </instance>" +
+ " <upgrade policy='canary' rollout='leading'/>" +
+ " <instance id='instance1'/>" +
" <instance id='instance2'>" +
- " <upgrade policy='conservative'/>" +
+ " <upgrade policy='conservative' rollout='separate'/>" +
" </instance>" +
"</deployment>"
);
@@ -394,6 +405,8 @@ public class DeploymentSpecTest {
DeploymentSpec spec = DeploymentSpec.fromXml(r);
assertEquals("canary", spec.requireInstance("instance1").upgradePolicy().toString());
assertEquals("conservative", spec.requireInstance("instance2").upgradePolicy().toString());
+ assertEquals("leading", spec.requireInstance("instance1").upgradeRollout().toString());
+ assertEquals("separate", spec.requireInstance("instance2").upgradeRollout().toString());
}
@Test
diff --git a/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecWithoutInstanceTest.java b/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecWithoutInstanceTest.java
index 77ce5c2175d..8a1af9e7a8f 100644
--- a/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecWithoutInstanceTest.java
+++ b/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecWithoutInstanceTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application.api;
import com.google.common.collect.ImmutableSet;
@@ -111,6 +111,7 @@ public class DeploymentSpecWithoutInstanceTest {
assertFalse(spec.requireInstance("default").globalServiceId().isPresent());
assertEquals(DeploymentSpec.UpgradePolicy.defaultPolicy, spec.requireInstance("default").upgradePolicy());
+ assertEquals(DeploymentSpec.UpgradeRollout.separate, spec.requireInstance("default").upgradeRollout());
}
@Test
@@ -277,18 +278,23 @@ public class DeploymentSpecWithoutInstanceTest {
}
@Test
+ public void productionSpecWithUpgradeRollout() {
+ StringReader r = new StringReader(
+ "<deployment>" +
+ " <upgrade rollout='leading'/>" +
+ "</deployment>"
+ );
+ DeploymentSpec spec = DeploymentSpec.fromXml(r);
+ assertEquals("leading", spec.requireInstance("default").upgradeRollout().toString());
+ }
+
+ @Test
public void productionSpecWithUpgradePolicy() {
StringReader r = new StringReader(
"<deployment>" +
" <upgrade policy='canary'/>" +
- " <prod>" +
- " <region active='true'>us-west-1</region>" +
- " <region active='true'>us-central-1</region>" +
- " <region active='true'>us-east-3</region>" +
- " </prod>" +
"</deployment>"
);
-
DeploymentSpec spec = DeploymentSpec.fromXml(r);
assertEquals("canary", spec.requireInstance("default").upgradePolicy().toString());
}
diff --git a/config-model-api/src/test/java/com/yahoo/config/application/api/TimeWindowTest.java b/config-model-api/src/test/java/com/yahoo/config/application/api/TimeWindowTest.java
index 83aa0d9c5f6..98a53dfd3df 100644
--- a/config-model-api/src/test/java/com/yahoo/config/application/api/TimeWindowTest.java
+++ b/config-model-api/src/test/java/com/yahoo/config/application/api/TimeWindowTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application.api;
import org.junit.Test;
diff --git a/config-model-api/src/test/java/com/yahoo/config/application/api/ValidationOverrideTest.java b/config-model-api/src/test/java/com/yahoo/config/application/api/ValidationOverrideTest.java
index 81adef1cfea..ba741804615 100644
--- a/config-model-api/src/test/java/com/yahoo/config/application/api/ValidationOverrideTest.java
+++ b/config-model-api/src/test/java/com/yahoo/config/application/api/ValidationOverrideTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application.api;
import com.yahoo.test.ManualClock;
diff --git a/config-model-api/src/test/java/com/yahoo/config/model/api/HostInfoTest.java b/config-model-api/src/test/java/com/yahoo/config/model/api/HostInfoTest.java
index 6af10e48c6b..7f1fd20ec5a 100644
--- a/config-model-api/src/test/java/com/yahoo/config/model/api/HostInfoTest.java
+++ b/config-model-api/src/test/java/com/yahoo/config/model/api/HostInfoTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import org.junit.Test;
diff --git a/config-model-api/src/test/java/com/yahoo/config/model/api/ModelContextTest.java b/config-model-api/src/test/java/com/yahoo/config/model/api/ModelContextTest.java
index 68b6b9f814f..5eed7af419a 100644
--- a/config-model-api/src/test/java/com/yahoo/config/model/api/ModelContextTest.java
+++ b/config-model-api/src/test/java/com/yahoo/config/model/api/ModelContextTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import org.junit.Test;
diff --git a/config-model-api/src/test/java/com/yahoo/config/model/api/PortInfoTest.java b/config-model-api/src/test/java/com/yahoo/config/model/api/PortInfoTest.java
index 9e09cd117d2..21c5abf81f6 100644
--- a/config-model-api/src/test/java/com/yahoo/config/model/api/PortInfoTest.java
+++ b/config-model-api/src/test/java/com/yahoo/config/model/api/PortInfoTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import com.google.common.testing.EqualsTester;
diff --git a/config-model-api/src/test/java/com/yahoo/config/model/api/QuotaTest.java b/config-model-api/src/test/java/com/yahoo/config/model/api/QuotaTest.java
index b4a7ff7c762..23502fb9ace 100644
--- a/config-model-api/src/test/java/com/yahoo/config/model/api/QuotaTest.java
+++ b/config-model-api/src/test/java/com/yahoo/config/model/api/QuotaTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import com.yahoo.slime.SlimeUtils;
diff --git a/config-model-api/src/test/java/com/yahoo/config/model/api/ServiceInfoTest.java b/config-model-api/src/test/java/com/yahoo/config/model/api/ServiceInfoTest.java
index abfda44eb32..9a381bb8233 100644
--- a/config-model-api/src/test/java/com/yahoo/config/model/api/ServiceInfoTest.java
+++ b/config-model-api/src/test/java/com/yahoo/config/model/api/ServiceInfoTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
import com.google.common.testing.EqualsTester;
diff --git a/config-model-fat/CMakeLists.txt b/config-model-fat/CMakeLists.txt
index 1e2364556dc..fd40048e2c4 100644
--- a/config-model-fat/CMakeLists.txt
+++ b/config-model-fat/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_java_artifact(config-model-fat)
install(FILES src/main/resources/config-models.xml
diff --git a/config-model-fat/pom.xml b/config-model-fat/pom.xml
index d258623d9c6..79f106993df 100644
--- a/config-model-fat/pom.xml
+++ b/config-model-fat/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/config-model-fat/src/main/javadoc/README b/config-model-fat/src/main/javadoc/README
new file mode 100644
index 00000000000..6695538e308
--- /dev/null
+++ b/config-model-fat/src/main/javadoc/README
@@ -0,0 +1 @@
+No javadoc available for module \ No newline at end of file
diff --git a/config-model-fat/src/main/resources/config-models.xml b/config-model-fat/src/main/resources/config-models.xml
index d2a9225fd5b..ca9b01fa697 100644
--- a/config-model-fat/src/main/resources/config-models.xml
+++ b/config-model-fat/src/main/resources/config-models.xml
@@ -1,2 +1,2 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<component id="VespaModelFactory" class="com.yahoo.vespa.model.VespaModelFactory" bundle="config-model-fat" />
diff --git a/config-model/CMakeLists.txt b/config-model/CMakeLists.txt
index 23be848ea45..d23ea29c3d0 100644
--- a/config-model/CMakeLists.txt
+++ b/config-model/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(config-model)
vespa_install_script(src/main/perl/vespa-deploy bin)
diff --git a/config-model/pom.xml b/config-model/pom.xml
index 0059d8067e4..3442a81159e 100644
--- a/config-model/pom.xml
+++ b/config-model/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -108,10 +108,6 @@
<exclusions>
<!-- Not needed to generate config and saves 1 MB. -->
<exclusion>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>http-utils</artifactId>
- </exclusion>
- <exclusion>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</exclusion>
diff --git a/config-model/src/main/Makefile b/config-model/src/main/Makefile
index f63f7dd832f..85f0c888446 100644
--- a/config-model/src/main/Makefile
+++ b/config-model/src/main/Makefile
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
srcdir=resources/schema
outputdir=../../target/generated-sources/trang/resources/schema
diff --git a/config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java b/config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java
index 364dd1742ae..e86689c544f 100644
--- a/config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java
+++ b/config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model;
import com.yahoo.cloud.config.ApplicationIdConfig;
diff --git a/config-model/src/main/java/com/yahoo/config/model/CommonConfigsProducer.java b/config-model/src/main/java/com/yahoo/config/model/CommonConfigsProducer.java
index 312890aac13..fad097d1edb 100644
--- a/config-model/src/main/java/com/yahoo/config/model/CommonConfigsProducer.java
+++ b/config-model/src/main/java/com/yahoo/config/model/CommonConfigsProducer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model;
import com.yahoo.cloud.config.ApplicationIdConfig;
diff --git a/config-model/src/main/java/com/yahoo/config/model/ConfigModel.java b/config-model/src/main/java/com/yahoo/config/model/ConfigModel.java
index b9e7976ccf7..2685570b444 100644
--- a/config-model/src/main/java/com/yahoo/config/model/ConfigModel.java
+++ b/config-model/src/main/java/com/yahoo/config/model/ConfigModel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java b/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java
index 0ce5bc46140..d0b0a6ea451 100644
--- a/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java
+++ b/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model;
import com.yahoo.config.application.api.ApplicationPackage;
diff --git a/config-model/src/main/java/com/yahoo/config/model/ConfigModelInstanceFactory.java b/config-model/src/main/java/com/yahoo/config/model/ConfigModelInstanceFactory.java
index af7f5776f74..08b8718436d 100644
--- a/config-model/src/main/java/com/yahoo/config/model/ConfigModelInstanceFactory.java
+++ b/config-model/src/main/java/com/yahoo/config/model/ConfigModelInstanceFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model;
/**
diff --git a/config-model/src/main/java/com/yahoo/config/model/ConfigModelRegistry.java b/config-model/src/main/java/com/yahoo/config/model/ConfigModelRegistry.java
index 100c51a8e3b..54557533a19 100644
--- a/config-model/src/main/java/com/yahoo/config/model/ConfigModelRegistry.java
+++ b/config-model/src/main/java/com/yahoo/config/model/ConfigModelRegistry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model;
import com.yahoo.config.model.builder.xml.ConfigModelBuilder;
diff --git a/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepo.java b/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepo.java
index 100b5ec5a24..4591578d7e5 100644
--- a/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepo.java
+++ b/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model;
import com.yahoo.config.application.api.ApplicationFile;
diff --git a/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepoAdder.java b/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepoAdder.java
index 731cae48881..eaf42c18cdb 100644
--- a/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepoAdder.java
+++ b/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepoAdder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model;
/**
diff --git a/config-model/src/main/java/com/yahoo/config/model/MapConfigModelRegistry.java b/config-model/src/main/java/com/yahoo/config/model/MapConfigModelRegistry.java
index d94a9c1580a..e04608951f6 100644
--- a/config-model/src/main/java/com/yahoo/config/model/MapConfigModelRegistry.java
+++ b/config-model/src/main/java/com/yahoo/config/model/MapConfigModelRegistry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model;
import com.google.inject.Inject;
diff --git a/config-model/src/main/java/com/yahoo/config/model/NullConfigModelRegistry.java b/config-model/src/main/java/com/yahoo/config/model/NullConfigModelRegistry.java
index 68409bf334e..6ff007bdef9 100644
--- a/config-model/src/main/java/com/yahoo/config/model/NullConfigModelRegistry.java
+++ b/config-model/src/main/java/com/yahoo/config/model/NullConfigModelRegistry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model;
import com.yahoo.config.model.builder.xml.ConfigModelBuilder;
diff --git a/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java b/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java
index 59aa7e48639..daf426517b8 100644
--- a/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java
+++ b/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.admin;
import com.google.common.collect.ImmutableList;
@@ -84,7 +84,6 @@ public class AdminModel extends ConfigModel {
AbstractConfigProducer<?> parent = modelContext.getParentProducer();
ModelContext.Properties properties = modelContext.getDeployState().getProperties();
DomAdminV2Builder domBuilder = new DomAdminV2Builder(modelContext.getApplicationType(),
- modelContext.getDeployState().getFileRegistry(),
properties.multitenant(),
properties.configServerSpecs());
model.admin = domBuilder.build(modelContext.getDeployState(), parent, adminElement);
diff --git a/config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelBuilder.java b/config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelBuilder.java
index 9b0f883bc2c..24a8d81c754 100644
--- a/config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.builder.xml;
import com.yahoo.component.AbstractComponent;
diff --git a/config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelId.java b/config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelId.java
index 69d6da0ce5a..cd283866550 100644
--- a/config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelId.java
+++ b/config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.builder.xml;
import com.yahoo.component.Version;
diff --git a/config-model/src/main/java/com/yahoo/config/model/builder/xml/XmlHelper.java b/config-model/src/main/java/com/yahoo/config/model/builder/xml/XmlHelper.java
index a392a778709..5763be301a6 100644
--- a/config-model/src/main/java/com/yahoo/config/model/builder/xml/XmlHelper.java
+++ b/config-model/src/main/java/com/yahoo/config/model/builder/xml/XmlHelper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.builder.xml;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/config/model/builder/xml/package-info.java b/config-model/src/main/java/com/yahoo/config/model/builder/xml/package-info.java
index 7e399bc7b87..f5cb312537e 100644
--- a/config-model/src/main/java/com/yahoo/config/model/builder/xml/package-info.java
+++ b/config-model/src/main/java/com/yahoo/config/model/builder/xml/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.config.model.builder.xml;
diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/ConfigDefinitionStore.java b/config-model/src/main/java/com/yahoo/config/model/deploy/ConfigDefinitionStore.java
index b9ad830090c..122f9337710 100644
--- a/config-model/src/main/java/com/yahoo/config/model/deploy/ConfigDefinitionStore.java
+++ b/config-model/src/main/java/com/yahoo/config/model/deploy/ConfigDefinitionStore.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.deploy;
import com.yahoo.vespa.config.ConfigDefinition;
diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java b/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java
index dd66861f2ce..4790b9e8d27 100644
--- a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java
+++ b/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java
@@ -1,10 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.deploy;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
import ai.vespa.rankingexpression.importer.configmodelview.MlModelImporter;
import com.yahoo.component.Version;
import com.yahoo.component.Vtag;
+import com.yahoo.concurrent.InThreadExecutorService;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.application.api.FileRegistry;
@@ -55,6 +56,7 @@ import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
+import java.util.concurrent.ExecutorService;
import java.util.logging.Level;
/**
@@ -87,6 +89,7 @@ public class DeployState implements ConfigDefinitionStore {
private final HostProvisioner provisioner;
private final Provisioned provisioned;
private final Reindexing reindexing;
+ private final ExecutorService executor;
public static DeployState createTestState() {
return new Builder().build();
@@ -104,6 +107,7 @@ public class DeployState implements ConfigDefinitionStore {
SearchDocumentModel searchDocumentModel,
RankProfileRegistry rankProfileRegistry,
FileRegistry fileRegistry,
+ ExecutorService executor,
DeployLogger deployLogger,
Optional<HostProvisioner> hostProvisioner,
Provisioned provisioned,
@@ -124,6 +128,7 @@ public class DeployState implements ConfigDefinitionStore {
Reindexing reindexing) {
this.logger = deployLogger;
this.fileRegistry = fileRegistry;
+ this.executor = executor;
this.rankProfileRegistry = rankProfileRegistry;
this.applicationPackage = applicationPackage;
this.properties = properties;
@@ -140,7 +145,7 @@ public class DeployState implements ConfigDefinitionStore {
this.zone = zone;
this.queryProfiles = queryProfiles; // TODO: Remove this by seeing how pagetemplates are propagated
this.semanticRules = semanticRules; // TODO: Remove this by seeing how pagetemplates are propagated
- this.importedModels = importMlModels(applicationPackage, modelImporters, deployLogger);
+ this.importedModels = importMlModels(applicationPackage, modelImporters, deployLogger, executor);
this.validationOverrides = applicationPackage.getValidationOverrides().map(ValidationOverrides::fromXml)
.orElse(ValidationOverrides.empty);
@@ -206,9 +211,10 @@ public class DeployState implements ConfigDefinitionStore {
private static ImportedMlModels importMlModels(ApplicationPackage applicationPackage,
Collection<MlModelImporter> modelImporters,
- DeployLogger deployLogger) {
+ DeployLogger deployLogger,
+ ExecutorService executor) {
File importFrom = applicationPackage.getFileReference(ApplicationPackage.MODELS_DIR);
- ImportedMlModels importedModels = new ImportedMlModels(importFrom, modelImporters);
+ ImportedMlModels importedModels = new ImportedMlModels(importFrom, executor, modelImporters);
for (var entry : importedModels.getSkippedModels().entrySet()) {
deployLogger.logApplicationPackage(Level.WARNING, "Skipping import of model " + entry.getKey() + " as an exception " +
"occurred during import. Error: " + entry.getValue());
@@ -282,6 +288,8 @@ public class DeployState implements ConfigDefinitionStore {
/** The (machine learned) models imported from the models/ directory, as an unmodifiable map indexed by model name */
public ImportedMlModels getImportedModels() { return importedModels; }
+ public ExecutorService getExecutor() { return executor; }
+
public Version getWantedNodeVespaVersion() { return wantedNodeVespaVersion; }
public Optional<DockerImage> getWantedDockerImageRepo() { return wantedDockerImageRepo; }
@@ -312,6 +320,7 @@ public class DeployState implements ConfigDefinitionStore {
private ApplicationPackage applicationPackage = MockApplicationPackage.createEmpty();
private FileRegistry fileRegistry = new MockFileRegistry();
+ private ExecutorService executor = new InThreadExecutorService();
private DeployLogger logger = new BaseDeployLogger();
private Optional<HostProvisioner> hostProvisioner = Optional.empty();
private Provisioned provisioned = new Provisioned();
@@ -329,6 +338,8 @@ public class DeployState implements ConfigDefinitionStore {
private Optional<DockerImage> wantedDockerImageRepo = Optional.empty();
private Reindexing reindexing = null;
+ public Builder() {}
+
public Builder applicationPackage(ApplicationPackage applicationPackage) {
this.applicationPackage = applicationPackage;
return this;
@@ -339,6 +350,11 @@ public class DeployState implements ConfigDefinitionStore {
return this;
}
+ public Builder executor(ExecutorService executor) {
+ this.executor = executor;
+ return this;
+ }
+
public Builder deployLogger(DeployLogger logger) {
this.logger = logger;
return this;
@@ -433,6 +449,7 @@ public class DeployState implements ConfigDefinitionStore {
searchDocumentModel,
rankProfileRegistry,
fileRegistry,
+ executor,
logger,
hostProvisioner,
provisioned,
@@ -458,7 +475,7 @@ public class DeployState implements ConfigDefinitionStore {
ValidationParameters validationParameters) {
Collection<NamedReader> readers = applicationPackage.getSchemas();
Map<String, String> names = new LinkedHashMap<>();
- SearchBuilder builder = new SearchBuilder(applicationPackage, logger, properties, rankProfileRegistry, queryProfiles.getRegistry());
+ SearchBuilder builder = new SearchBuilder(applicationPackage, fileRegistry, logger, properties, rankProfileRegistry, queryProfiles.getRegistry());
for (NamedReader reader : readers) {
try {
String readerName = reader.getName();
diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/SearchDocumentModel.java b/config-model/src/main/java/com/yahoo/config/model/deploy/SearchDocumentModel.java
index 9b9729dddb3..d4b7004a1b6 100644
--- a/config-model/src/main/java/com/yahoo/config/model/deploy/SearchDocumentModel.java
+++ b/config-model/src/main/java/com/yahoo/config/model/deploy/SearchDocumentModel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.deploy;
import com.yahoo.searchdefinition.SearchBuilder;
diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java b/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
index 62c192e2c99..a6f8d510c0d 100644
--- a/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
+++ b/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
@@ -1,8 +1,7 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.deploy;
import com.google.common.collect.ImmutableList;
-import com.yahoo.config.model.api.ApplicationRoles;
import com.yahoo.config.model.api.ConfigServerSpec;
import com.yahoo.config.model.api.ContainerEndpoint;
import com.yahoo.config.model.api.EndpointCertificateSecrets;
@@ -47,25 +46,26 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
private int responseNumThreads = 2;
private Optional<EndpointCertificateSecrets> endpointCertificateSecrets = Optional.empty();
private AthenzDomain athenzDomain;
- private ApplicationRoles applicationRoles;
private Quota quota = Quota.unlimited();
- private boolean useAccessControlTlsHandshakeClientAuth;
private boolean useAsyncMessageHandlingOnSchedule = false;
private double feedConcurrency = 0.5;
private boolean enableFeedBlockInDistributor = true;
- private boolean useExternalRankExpression = false;
+ private boolean enforceRankProfileInheritance = true;
private int maxActivationInhibitedOutOfSyncGroups = 0;
private List<TenantSecretStore> tenantSecretStores = Collections.emptyList();
private String jvmOmitStackTraceInFastThrowOption;
- private int numDistributorStripes = 0;
private int maxConcurrentMergesPerNode = 16;
private int maxMergeQueueSize = 1024;
- private int largeRankExpressionLimit = 0x10000;
+ private boolean ignoreMergeQueueLimit = false;
+ private int largeRankExpressionLimit = 8192;
private boolean allowDisableMtls = true;
- private boolean dryRunOnnxOnSetup = false;
private List<X509Certificate> operatorCertificates = Collections.emptyList();
private double resourceLimitDisk = 0.8;
private double resourceLimitMemory = 0.8;
+ private double minNodeRatioPerGroup = 0.0;
+ private boolean containerDumpHeapOnShutdownTimeout = false;
+ private double containerShutdownTimeout = 50.0;
+ private int distributorMergeBusyWait = 10;
@Override public ModelContext.FeatureFlags featureFlags() { return this; }
@Override public boolean multitenant() { return multitenant; }
@@ -86,38 +86,39 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
@Override public double defaultTermwiseLimit() { return defaultTermwiseLimit; }
@Override public boolean useThreePhaseUpdates() { return useThreePhaseUpdates; }
@Override public Optional<AthenzDomain> athenzDomain() { return Optional.ofNullable(athenzDomain); }
- @Override public Optional<ApplicationRoles> applicationRoles() { return Optional.ofNullable(applicationRoles); }
@Override public String responseSequencerType() { return responseSequencerType; }
@Override public int defaultNumResponseThreads() { return responseNumThreads; }
@Override public boolean skipCommunicationManagerThread() { return false; }
@Override public boolean skipMbusRequestThread() { return false; }
@Override public boolean skipMbusReplyThread() { return false; }
@Override public Quota quota() { return quota; }
- @Override public boolean useAccessControlTlsHandshakeClientAuth() { return useAccessControlTlsHandshakeClientAuth; }
@Override public boolean useAsyncMessageHandlingOnSchedule() { return useAsyncMessageHandlingOnSchedule; }
@Override public double feedConcurrency() { return feedConcurrency; }
@Override public boolean enableFeedBlockInDistributor() { return enableFeedBlockInDistributor; }
@Override public int maxActivationInhibitedOutOfSyncGroups() { return maxActivationInhibitedOutOfSyncGroups; }
@Override public List<TenantSecretStore> tenantSecretStores() { return tenantSecretStores; }
@Override public String jvmOmitStackTraceInFastThrowOption(ClusterSpec.Type type) { return jvmOmitStackTraceInFastThrowOption; }
- @Override public int numDistributorStripes() { return numDistributorStripes; }
@Override public boolean allowDisableMtls() { return allowDisableMtls; }
@Override public List<X509Certificate> operatorCertificates() { return operatorCertificates; }
- @Override public boolean useExternalRankExpressions() { return useExternalRankExpression; }
- @Override public boolean distributeExternalRankExpressions() { return useExternalRankExpression; }
@Override public int largeRankExpressionLimit() { return largeRankExpressionLimit; }
@Override public int maxConcurrentMergesPerNode() { return maxConcurrentMergesPerNode; }
@Override public int maxMergeQueueSize() { return maxMergeQueueSize; }
- @Override public boolean dryRunOnnxOnSetup() { return dryRunOnnxOnSetup; }
+ @Override public boolean ignoreMergeQueueLimit() { return ignoreMergeQueueLimit; }
@Override public double resourceLimitDisk() { return resourceLimitDisk; }
@Override public double resourceLimitMemory() { return resourceLimitMemory; }
+ @Override public double minNodeRatioPerGroup() { return minNodeRatioPerGroup; }
+ @Override public int metricsproxyNumThreads() { return 1; }
+ @Override public double containerShutdownTimeout() { return containerShutdownTimeout; }
+ @Override public boolean containerDumpHeapOnShutdownTimeout() { return containerDumpHeapOnShutdownTimeout; }
+ @Override public int distributorMergeBusyWait() { return distributorMergeBusyWait; }
- public TestProperties setDryRunOnnxOnSetup(boolean value) {
- dryRunOnnxOnSetup = value;
+
+ public TestProperties containerDumpHeapOnShutdownTimeout(boolean value) {
+ containerDumpHeapOnShutdownTimeout = value;
return this;
}
- public TestProperties useExternalRankExpression(boolean value) {
- useExternalRankExpression = value;
+ public TestProperties containerShutdownTimeout(double value) {
+ containerShutdownTimeout = value;
return this;
}
public TestProperties largeRankExpressionLimit(int value) {
@@ -164,6 +165,11 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
return this;
}
+ public TestProperties setIgnoreMergeQueueLimit(boolean ignoreMergeQueueLimit) {
+ this.ignoreMergeQueueLimit = ignoreMergeQueueLimit;
+ return this;
+ }
+
public TestProperties setDefaultTermwiseLimit(double limit) {
defaultTermwiseLimit = limit;
return this;
@@ -214,21 +220,11 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
return this;
}
- public TestProperties setApplicationRoles(ApplicationRoles applicationRoles) {
- this.applicationRoles = applicationRoles;
- return this;
- }
-
public TestProperties setQuota(Quota quota) {
this.quota = quota;
return this;
}
- public TestProperties useAccessControlTlsHandshakeClientAuth(boolean useAccessControlTlsHandshakeClientAuth) {
- this.useAccessControlTlsHandshakeClientAuth = useAccessControlTlsHandshakeClientAuth;
- return this;
- }
-
public TestProperties enableFeedBlockInDistributor(boolean enabled) {
enableFeedBlockInDistributor = enabled;
return this;
@@ -249,11 +245,6 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
return this;
}
- public TestProperties setNumDistributorStripes(int value) {
- this.numDistributorStripes = value;
- return this;
- }
-
public TestProperties allowDisableMtls(boolean value) {
this.allowDisableMtls = value;
return this;
@@ -274,6 +265,16 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
return this;
}
+ public TestProperties setMinNodeRatioPerGroup(double value) {
+ this.minNodeRatioPerGroup = value;
+ return this;
+ }
+
+ public TestProperties setDistributorMergeBusyWait(int value) {
+ distributorMergeBusyWait = value;
+ return this;
+ }
+
public static class Spec implements ConfigServerSpec {
private final String hostName;
diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/package-info.java b/config-model/src/main/java/com/yahoo/config/model/deploy/package-info.java
index 49c1965f065..bae77f2f19b 100644
--- a/config-model/src/main/java/com/yahoo/config/model/deploy/package-info.java
+++ b/config-model/src/main/java/com/yahoo/config/model/deploy/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.config.model.deploy;
diff --git a/config-model/src/main/java/com/yahoo/config/model/graph/ModelGraph.java b/config-model/src/main/java/com/yahoo/config/model/graph/ModelGraph.java
index 279731ee7a7..3f4feec1a57 100644
--- a/config-model/src/main/java/com/yahoo/config/model/graph/ModelGraph.java
+++ b/config-model/src/main/java/com/yahoo/config/model/graph/ModelGraph.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.graph;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/config/model/graph/ModelGraphBuilder.java b/config-model/src/main/java/com/yahoo/config/model/graph/ModelGraphBuilder.java
index 55db65a94be..482a4c48c97 100644
--- a/config-model/src/main/java/com/yahoo/config/model/graph/ModelGraphBuilder.java
+++ b/config-model/src/main/java/com/yahoo/config/model/graph/ModelGraphBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.graph;
import com.yahoo.config.model.ConfigModel;
diff --git a/config-model/src/main/java/com/yahoo/config/model/graph/ModelNode.java b/config-model/src/main/java/com/yahoo/config/model/graph/ModelNode.java
index 6e5e530d902..029213c0119 100644
--- a/config-model/src/main/java/com/yahoo/config/model/graph/ModelNode.java
+++ b/config-model/src/main/java/com/yahoo/config/model/graph/ModelNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.graph;
import com.google.inject.Inject;
diff --git a/config-model/src/main/java/com/yahoo/config/model/package-info.java b/config-model/src/main/java/com/yahoo/config/model/package-info.java
index 709a268da7f..46916bff33b 100644
--- a/config-model/src/main/java/com/yahoo/config/model/package-info.java
+++ b/config-model/src/main/java/com/yahoo/config/model/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.config.model;
diff --git a/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java b/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java
index 2784c111019..7c9c6292999 100644
--- a/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java
+++ b/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.producer;
import com.google.common.annotations.Beta;
@@ -223,15 +223,11 @@ public abstract class AbstractConfigProducer<CHILD extends AbstractConfigProduce
didApply = parent.addUserConfig(builder);
}
- if (log.isLoggable(Level.FINEST)) {
- log.log(Level.FINEST, "User configs is: " + userConfigs.toString());
- }
+ log.log(Level.FINEST, () -> "User configs is: " + userConfigs.toString());
// TODO: What do we do with md5. Currently ignored for user configs?
ConfigDefinitionKey key = new ConfigDefinitionKey(builder.getDefName(), builder.getDefNamespace());
if (userConfigs.get(key) != null) {
- if (log.isLoggable(Level.FINEST)) {
- log.log(Level.FINEST, "Apply in " + configId);
- }
+ log.log(Level.FINEST, () -> "Apply in " + configId);
applyUserConfig(builder, userConfigs.get(key));
didApply = true;
}
@@ -389,7 +385,7 @@ public abstract class AbstractConfigProducer<CHILD extends AbstractConfigProduce
public void validate() throws Exception {
assert (childrenBySubId.isFrozen());
- for (AbstractConfigProducer child : childrenBySubId.values()) {
+ for (AbstractConfigProducer<?> child : childrenBySubId.values()) {
child.validate();
}
}
diff --git a/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducerRoot.java b/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducerRoot.java
index 3f0be5bda8e..d6c03a0f668 100644
--- a/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducerRoot.java
+++ b/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducerRoot.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.producer;
import com.yahoo.config.model.ConfigModelRepo;
diff --git a/config-model/src/main/java/com/yahoo/config/model/producer/UserConfigRepo.java b/config-model/src/main/java/com/yahoo/config/model/producer/UserConfigRepo.java
index 9aeb5c40b28..afa3e2de85f 100644
--- a/config-model/src/main/java/com/yahoo/config/model/producer/UserConfigRepo.java
+++ b/config-model/src/main/java/com/yahoo/config/model/producer/UserConfigRepo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.producer;
import com.yahoo.vespa.config.ConfigDefinitionKey;
diff --git a/config-model/src/main/java/com/yahoo/config/model/producer/package-info.java b/config-model/src/main/java/com/yahoo/config/model/producer/package-info.java
index ea7e1100ad7..a9dbf459fc5 100644
--- a/config-model/src/main/java/com/yahoo/config/model/producer/package-info.java
+++ b/config-model/src/main/java/com/yahoo/config/model/producer/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.config.model.producer;
diff --git a/config-model/src/main/java/com/yahoo/config/model/provision/Host.java b/config-model/src/main/java/com/yahoo/config/model/provision/Host.java
index c8d92220db3..ea7a0bc0504 100644
--- a/config-model/src/main/java/com/yahoo/config/model/provision/Host.java
+++ b/config-model/src/main/java/com/yahoo/config/model/provision/Host.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.provision;
import com.google.common.collect.ImmutableList;
diff --git a/config-model/src/main/java/com/yahoo/config/model/provision/Hosts.java b/config-model/src/main/java/com/yahoo/config/model/provision/Hosts.java
index 61a5db04ca7..c678618311e 100644
--- a/config-model/src/main/java/com/yahoo/config/model/provision/Hosts.java
+++ b/config-model/src/main/java/com/yahoo/config/model/provision/Hosts.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.provision;
import com.google.common.collect.ImmutableMap;
diff --git a/config-model/src/main/java/com/yahoo/config/model/provision/HostsXmlProvisioner.java b/config-model/src/main/java/com/yahoo/config/model/provision/HostsXmlProvisioner.java
index ab2e0f632e4..a9ee440f22c 100644
--- a/config-model/src/main/java/com/yahoo/config/model/provision/HostsXmlProvisioner.java
+++ b/config-model/src/main/java/com/yahoo/config/model/provision/HostsXmlProvisioner.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.provision;
import com.yahoo.config.model.api.HostProvisioner;
diff --git a/config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java b/config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java
index e41e7309986..8bf6dc7f1d9 100644
--- a/config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java
+++ b/config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.provision;
import com.yahoo.collections.ListMap;
diff --git a/config-model/src/main/java/com/yahoo/config/model/provision/SingleNodeProvisioner.java b/config-model/src/main/java/com/yahoo/config/model/provision/SingleNodeProvisioner.java
index 0cfe35a51b5..c3b91c5da0f 100644
--- a/config-model/src/main/java/com/yahoo/config/model/provision/SingleNodeProvisioner.java
+++ b/config-model/src/main/java/com/yahoo/config/model/provision/SingleNodeProvisioner.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.provision;
import com.yahoo.config.model.api.HostProvisioner;
diff --git a/config-model/src/main/java/com/yahoo/config/model/provision/package-info.java b/config-model/src/main/java/com/yahoo/config/model/provision/package-info.java
index 0c26289c30c..5a286de6548 100644
--- a/config-model/src/main/java/com/yahoo/config/model/provision/package-info.java
+++ b/config-model/src/main/java/com/yahoo/config/model/provision/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.config.model.provision;
diff --git a/config-model/src/main/java/com/yahoo/config/model/test/MockApplicationPackage.java b/config-model/src/main/java/com/yahoo/config/model/test/MockApplicationPackage.java
index 411a37bb70a..b3da8ca14b9 100644
--- a/config-model/src/main/java/com/yahoo/config/model/test/MockApplicationPackage.java
+++ b/config-model/src/main/java/com/yahoo/config/model/test/MockApplicationPackage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.test;
import com.yahoo.config.application.api.ApplicationMetaData;
@@ -7,6 +7,7 @@ import com.yahoo.config.application.api.UnparsedConfigDefinition;
import com.yahoo.config.application.api.ApplicationFile;
import com.yahoo.component.Version;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
+import com.yahoo.config.model.application.provider.MockFileRegistry;
import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ApplicationName;
@@ -118,6 +119,7 @@ public class MockApplicationPackage implements ApplicationPackage {
public List<NamedReader> getSchemas() {
ArrayList<NamedReader> readers = new ArrayList<>();
SearchBuilder searchBuilder = new SearchBuilder(this,
+ new MockFileRegistry(),
new BaseDeployLogger(),
new TestProperties(),
new RankProfileRegistry(),
diff --git a/config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java b/config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java
index 87d6554f691..6be829b6e49 100644
--- a/config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java
+++ b/config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.test;
import com.yahoo.config.ConfigInstance;
@@ -17,7 +17,7 @@ import com.yahoo.vespa.model.HostSystem;
import com.yahoo.vespa.model.admin.Admin;
import com.yahoo.vespa.model.builder.xml.dom.DomAdminV2Builder;
import com.yahoo.vespa.model.filedistribution.FileDistributionConfigProducer;
-import com.yahoo.vespa.model.filedistribution.FileDistributor;
+import com.yahoo.vespa.model.filedistribution.FileReferencesRepository;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@@ -26,7 +26,6 @@ import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.List;
import java.util.Set;
@@ -41,10 +40,10 @@ public class MockRoot extends AbstractConfigProducerRoot {
private static final long serialVersionUID = 1L;
- private HostSystem hostSystem;
+ private final HostSystem hostSystem;
private final DeployState deployState;
- private FileDistributor fileDistributor;
+ private final FileReferencesRepository fileReferencesRepository;
private Admin admin;
public MockRoot() {
@@ -67,7 +66,7 @@ public class MockRoot extends AbstractConfigProducerRoot {
super(rootConfigId);
hostSystem = new HostSystem(this, "hostsystem", deployState.getProvisioner(), deployState.getDeployLogger());
this.deployState = deployState;
- fileDistributor = new FileDistributor(deployState.getFileRegistry(), List.of(), deployState.isHosted());
+ fileReferencesRepository = new FileReferencesRepository();
}
public FileDistributionConfigProducer getFileDistributionConfigProducer() {
@@ -120,15 +119,11 @@ public class MockRoot extends AbstractConfigProducerRoot {
return deployState;
}
- public FileDistributor getFileDistributor() {
- return fileDistributor;
- }
+ public FileReferencesRepository fileReferencesRepository() { return fileReferencesRepository; }
- public HostSystem hostSystem() {
- return hostSystem;
- }
+ public HostSystem hostSystem() { return hostSystem; }
- public void addDescendant(String configId, AbstractConfigProducer descendant) {
+ public void addDescendant(String configId, AbstractConfigProducer<?> descendant) {
if (id2producer.containsKey(configId)) {
throw new RuntimeException
("Config ID '" + configId + "' cannot be reserved by an instance of class '" +
@@ -139,7 +134,7 @@ public class MockRoot extends AbstractConfigProducerRoot {
}
@Override
- public void addChild(AbstractConfigProducer abstractConfigProducer) {
+ public void addChild(AbstractConfigProducer<?> abstractConfigProducer) {
super.addChild(abstractConfigProducer);
}
@@ -150,8 +145,7 @@ public class MockRoot extends AbstractConfigProducerRoot {
try {
Document doc = XmlHelper.getDocumentBuilder().parse(new InputSource(new StringReader(servicesXml)));
- setAdmin(new DomAdminV2Builder(ConfigModelContext.ApplicationType.DEFAULT, deployState.getFileRegistry(),
- false, new ArrayList<>()).
+ setAdmin(new DomAdminV2Builder(ConfigModelContext.ApplicationType.DEFAULT, false, new ArrayList<>()).
build(deployState, this, XML.getChildren(doc.getDocumentElement(), "admin").get(0)));
} catch (SAXException | IOException e) {
throw new RuntimeException(e);
diff --git a/config-model/src/main/java/com/yahoo/config/model/test/TestDriver.java b/config-model/src/main/java/com/yahoo/config/model/test/TestDriver.java
index e1dc29bb321..6fe56337a0d 100644
--- a/config-model/src/main/java/com/yahoo/config/model/test/TestDriver.java
+++ b/config-model/src/main/java/com/yahoo/config/model/test/TestDriver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.test;
import com.google.common.annotations.Beta;
diff --git a/config-model/src/main/java/com/yahoo/config/model/test/TestRoot.java b/config-model/src/main/java/com/yahoo/config/model/test/TestRoot.java
index 81f5d303d56..06e483c102b 100644
--- a/config-model/src/main/java/com/yahoo/config/model/test/TestRoot.java
+++ b/config-model/src/main/java/com/yahoo/config/model/test/TestRoot.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.test;
import com.google.common.annotations.Beta;
diff --git a/config-model/src/main/java/com/yahoo/config/model/test/TestUtil.java b/config-model/src/main/java/com/yahoo/config/model/test/TestUtil.java
index 84457641d38..df916907472 100644
--- a/config-model/src/main/java/com/yahoo/config/model/test/TestUtil.java
+++ b/config-model/src/main/java/com/yahoo/config/model/test/TestUtil.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.test;
import com.yahoo.collections.CollectionUtil;
diff --git a/config-model/src/main/java/com/yahoo/config/model/test/package-info.java b/config-model/src/main/java/com/yahoo/config/model/test/package-info.java
index ada1e2d53a1..f77739e29a6 100644
--- a/config-model/src/main/java/com/yahoo/config/model/test/package-info.java
+++ b/config-model/src/main/java/com/yahoo/config/model/test/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
//TODO: Temporary export due to standalone container package, remove later.
@ExportPackage
package com.yahoo.config.model.test;
diff --git a/config-model/src/main/java/com/yahoo/documentmodel/DataTypeCollection.java b/config-model/src/main/java/com/yahoo/documentmodel/DataTypeCollection.java
index 49847e9083a..e233fadbcb7 100644
--- a/config-model/src/main/java/com/yahoo/documentmodel/DataTypeCollection.java
+++ b/config-model/src/main/java/com/yahoo/documentmodel/DataTypeCollection.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentmodel;
import com.yahoo.document.DataType;
diff --git a/config-model/src/main/java/com/yahoo/documentmodel/DataTypeRepo.java b/config-model/src/main/java/com/yahoo/documentmodel/DataTypeRepo.java
index 7e5f393c3e0..118714ca2b1 100644
--- a/config-model/src/main/java/com/yahoo/documentmodel/DataTypeRepo.java
+++ b/config-model/src/main/java/com/yahoo/documentmodel/DataTypeRepo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentmodel;
import com.yahoo.document.DataType;
diff --git a/config-model/src/main/java/com/yahoo/documentmodel/DocumentTypeCollection.java b/config-model/src/main/java/com/yahoo/documentmodel/DocumentTypeCollection.java
index debb22ece9e..b1108fcbefb 100644
--- a/config-model/src/main/java/com/yahoo/documentmodel/DocumentTypeCollection.java
+++ b/config-model/src/main/java/com/yahoo/documentmodel/DocumentTypeCollection.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentmodel;
import java.util.Collection;
diff --git a/config-model/src/main/java/com/yahoo/documentmodel/DocumentTypeRepo.java b/config-model/src/main/java/com/yahoo/documentmodel/DocumentTypeRepo.java
index 7ab8d0f1d8d..42572ae763a 100644
--- a/config-model/src/main/java/com/yahoo/documentmodel/DocumentTypeRepo.java
+++ b/config-model/src/main/java/com/yahoo/documentmodel/DocumentTypeRepo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentmodel;
import java.util.Collection;
diff --git a/config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java b/config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java
index da338ad3107..b9e46989fa3 100644
--- a/config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java
+++ b/config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentmodel;
import com.yahoo.document.DataType;
diff --git a/config-model/src/main/java/com/yahoo/documentmodel/VespaDocumentType.java b/config-model/src/main/java/com/yahoo/documentmodel/VespaDocumentType.java
index 69fe6f74d27..4899029c4b0 100644
--- a/config-model/src/main/java/com/yahoo/documentmodel/VespaDocumentType.java
+++ b/config-model/src/main/java/com/yahoo/documentmodel/VespaDocumentType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentmodel;
import com.yahoo.document.DataType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/DefaultRankProfile.java b/config-model/src/main/java/com/yahoo/searchdefinition/DefaultRankProfile.java
index 16a0454cb4b..da611513570 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/DefaultRankProfile.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/DefaultRankProfile.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.searchdefinition.document.ImmutableSDField;
@@ -19,8 +19,8 @@ public class DefaultRankProfile extends RankProfile {
*
* @param rankProfileRegistry The {@link com.yahoo.searchdefinition.RankProfileRegistry} to use for storing and looking up rank profiles.
*/
- public DefaultRankProfile(Search search, RankProfileRegistry rankProfileRegistry) {
- super("default", search, rankProfileRegistry);
+ public DefaultRankProfile(Search search, RankProfileRegistry rankProfileRegistry, RankingConstants rankingConstants) {
+ super("default", search, rankProfileRegistry, rankingConstants);
}
/**
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/DistributableResource.java b/config-model/src/main/java/com/yahoo/searchdefinition/DistributableResource.java
index ffa9cbe9ba5..472bc9d5413 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/DistributableResource.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/DistributableResource.java
@@ -1,6 +1,7 @@
package com.yahoo.searchdefinition;
import com.yahoo.config.FileReference;
+import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.path.Path;
import com.yahoo.vespa.model.AbstractService;
import com.yahoo.vespa.model.utils.FileSender;
@@ -10,13 +11,14 @@ import java.util.Collection;
import java.util.Objects;
public class DistributableResource {
+
public enum PathType { FILE, URI, BLOB };
/** The search definition-unique name of this constant */
private final String name;
private final ByteBuffer blob;
private String path;
- private String fileReference = "";
+ private FileReference fileReference = new FileReference("");
private PathType pathType = PathType.FILE;
public PathType getPathType() {
@@ -37,6 +39,7 @@ public class DistributableResource {
Objects.requireNonNull(blob, "Blob cannot be null");
this.name = name;
this.blob = blob;
+ path = name + ".lz4";
pathType = PathType.BLOB;
}
@@ -54,18 +57,7 @@ public class DistributableResource {
/** Initiate sending of this constant to some services over file distribution */
public void sendTo(Collection<? extends AbstractService> services) {
- fileReference = sendToServices(services).value();
- }
- private FileReference sendToServices(Collection<? extends AbstractService> services) {
- switch (pathType) {
- case FILE:
- return FileSender.sendFileToServices(path, services);
- case URI:
- return FileSender.sendUriToServices(path, services);
- case BLOB:
- return FileSender.sendBlobToServices(blob, services);
- }
- throw new IllegalArgumentException("Unknown path type " + pathType);
+ FileSender.send(fileReference, services);
}
public String getName() { return name; }
@@ -73,17 +65,40 @@ public class DistributableResource {
public String getFileName() { return path; }
public Path getFilePath() { return Path.fromString(path); }
public String getUri() { return path; }
- public String getFileReference() { return fileReference; }
+ public String getFileReference() { return fileReference.value(); }
public void validate() {
- if (path == null || path.isEmpty())
- throw new IllegalArgumentException("Distributable resource must have a file or uri.");
+ switch (pathType) {
+ case FILE:
+ case URI:
+ if (path == null || path.isEmpty())
+ throw new IllegalArgumentException("Distributable URI/FILE resource must have a file or uri.");
+ break;
+ case BLOB:
+ if (blob == null)
+ throw new IllegalArgumentException("Distributable BLOB can not be null.");
+ }
+ }
+
+ void register(FileRegistry fileRegistry) {
+ switch (pathType) {
+ case FILE:
+ fileReference = fileRegistry.addFile(path);
+ break;
+ case URI:
+ fileReference = fileRegistry.addUri(path);
+ break;
+ case BLOB:
+ fileReference = fileRegistry.addBlob(path, blob);
+ break;
+ default:
+ throw new IllegalArgumentException("Unknown path type " + pathType);
+ }
}
+ @Override
public String toString() {
- StringBuilder b = new StringBuilder();
- b.append("resource '").append(name).append(" of type '").append(pathType)
- .append("' with ref '").append(fileReference).append("'");
- return b.toString();
+ return "resource '" + name + " of type '" + pathType + "' with ref '" + fileReference + "'";
}
+
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentGraphValidator.java b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentGraphValidator.java
index 79087cb3dfe..33f202a55fa 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentGraphValidator.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentGraphValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.searchdefinition.document.SDDocumentType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java
index 9b752c4179f..e7d0b72d46b 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentModelBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.document.CollectionDataType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentOnlySearch.java b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentOnlySearch.java
index a6c01c7f6de..d10aa26f429 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentOnlySearch.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentOnlySearch.java
@@ -1,8 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeployLogger;
+import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.config.model.api.ModelContext;
import com.yahoo.searchdefinition.document.SDDocumentType;
@@ -14,8 +15,8 @@ import com.yahoo.searchdefinition.document.SDDocumentType;
*/
public class DocumentOnlySearch extends Search {
- public DocumentOnlySearch(ApplicationPackage applicationPackage, DeployLogger deployLogger, ModelContext.Properties properties) {
- super(applicationPackage, deployLogger, properties);
+ public DocumentOnlySearch(ApplicationPackage applicationPackage, FileRegistry fileRegistry, DeployLogger deployLogger, ModelContext.Properties properties) {
+ super(applicationPackage, fileRegistry, deployLogger, properties);
}
@Override
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentReference.java b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentReference.java
index 50e4b0d2f41..2b0ade3797a 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentReference.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentReference.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.document.Field;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentReferenceResolver.java b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentReferenceResolver.java
index 7f1a9933188..95fdd5dc297 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentReferenceResolver.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentReferenceResolver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.document.Field;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentReferences.java b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentReferences.java
index 4a3995b2d40..d0ac967ce7e 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentReferences.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentReferences.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import java.util.Collections;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentsOnlyRankProfile.java b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentsOnlyRankProfile.java
index 85048480512..a6694ed7bff 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/DocumentsOnlyRankProfile.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/DocumentsOnlyRankProfile.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import java.util.List;
@@ -14,8 +14,9 @@ import java.util.List;
*/
public class DocumentsOnlyRankProfile extends RankProfile {
- public DocumentsOnlyRankProfile(String name, Search search, RankProfileRegistry rankProfileRegistry) {
- super(name, search, rankProfileRegistry);
+ public DocumentsOnlyRankProfile(String name, Search search, RankProfileRegistry rankProfileRegistry,
+ RankingConstants rankingConstants) {
+ super(name, search, rankProfileRegistry, rankingConstants);
}
@Override
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/FeatureNames.java b/config-model/src/main/java/com/yahoo/searchdefinition/FeatureNames.java
index 0d10932c333..4066760d549 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/FeatureNames.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/FeatureNames.java
@@ -1,10 +1,9 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.searchlib.rankingexpression.Reference;
import java.util.Optional;
-import java.util.regex.Pattern;
/**
* Utility methods for query, document and constant rank feature names
@@ -12,9 +11,6 @@ import java.util.regex.Pattern;
* @author bratseth
*/
public class FeatureNames {
-
- private static final Pattern identifierRegexp = Pattern.compile("[A-Za-z0-9_][A-Za-z0-9_-]*");
-
public static Reference asConstantFeature(String constantName) {
return Reference.simple("constant", quoteIfNecessary(constantName));
}
@@ -46,7 +42,7 @@ public class FeatureNames {
*/
public static Optional<String> argumentOf(String feature) {
Optional<Reference> reference = Reference.simple(feature);
- if ( ! reference.isPresent()) return Optional.empty();
+ if ( reference.isEmpty()) return Optional.empty();
if ( ! ( reference.get().name().equals("attribute") ||
reference.get().name().equals("constant") ||
reference.get().name().equals("query")))
@@ -56,10 +52,28 @@ public class FeatureNames {
}
private static String quoteIfNecessary(String s) {
- if (identifierRegexp.matcher(s).matches())
+ if (notNeedQuotes(s))
return s;
else
return "\"" + s + "\"";
}
+ static boolean notNeedQuotes(String s) {
+ // Faster version of the regexp [A-Za-z0-9_][A-Za-z0-9_-]*
+ if (s.isEmpty()) return false;
+ if ( ! isValidFirst(s.charAt(0))) return false;
+ for (int i = 1; i < s.length(); i++) {
+ if (!isValidAny(s.charAt(i))) return false;
+ }
+ return true;
+ }
+ private static boolean isValidFirst(char c) {
+ // [A-Za-z0-9_]
+ return (c == '_') || ((c >= 'a') && (c <= 'z')) || ((c >= 'A') && (c <= 'Z')) || ((c >= '0') && (c <= '9'));
+ }
+ private static boolean isValidAny(char c) {
+ // [A-Za-z0-9_-]*
+ return c == '-' || isValidFirst(c);
+ }
+
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/FieldOperationApplier.java b/config-model/src/main/java/com/yahoo/searchdefinition/FieldOperationApplier.java
index f9d71f03972..7fa009bed67 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/FieldOperationApplier.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/FieldOperationApplier.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.document.Field;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/FieldOperationApplierForSearch.java b/config-model/src/main/java/com/yahoo/searchdefinition/FieldOperationApplierForSearch.java
index fd92b724a60..6460fdcdbc7 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/FieldOperationApplierForSearch.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/FieldOperationApplierForSearch.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.document.Field;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/FieldOperationApplierForStructs.java b/config-model/src/main/java/com/yahoo/searchdefinition/FieldOperationApplierForStructs.java
index ade8ae21870..2f4ddb1bda7 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/FieldOperationApplierForStructs.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/FieldOperationApplierForStructs.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.document.DataType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/FieldSets.java b/config-model/src/main/java/com/yahoo/searchdefinition/FieldSets.java
index 5e580d8f4df..ba015ebaba6 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/FieldSets.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/FieldSets.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import java.util.Collections;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/ImmutableSearch.java b/config-model/src/main/java/com/yahoo/searchdefinition/ImmutableSearch.java
index 24bc081aded..605176e0c07 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/ImmutableSearch.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/ImmutableSearch.java
@@ -1,10 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.api.ModelContext;
import com.yahoo.searchdefinition.document.ImmutableSDField;
+import com.yahoo.searchdefinition.document.SDDocumentType;
import com.yahoo.searchdefinition.document.SDField;
import com.yahoo.vespa.documentmodel.SummaryField;
@@ -35,7 +36,7 @@ public interface ImmutableSearch {
LargeRankExpressions rankExpressionFiles();
OnnxModels onnxModels();
Stream<ImmutableSDField> allImportedFields();
-
+ SDDocumentType getDocument();
ImmutableSDField getField(String name);
default Stream<ImmutableSDField> allFields() {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/Index.java b/config-model/src/main/java/com/yahoo/searchdefinition/Index.java
index 212b985f7f1..bc1800f7ad7 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/Index.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/Index.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.searchdefinition.document.BooleanIndexDefinition;
@@ -10,7 +10,6 @@ import java.io.Serializable;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashSet;
-import java.util.Locale;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
@@ -27,7 +26,7 @@ public class Index implements Cloneable, Serializable {
public enum Type {
VESPA("vespa");
- private String name;
+ private final String name;
Type(String name) { this.name = name; }
public String getName() { return name; }
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/LargeRankExpressions.java b/config-model/src/main/java/com/yahoo/searchdefinition/LargeRankExpressions.java
index 6fadcb39d11..76ad7e9a4ed 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/LargeRankExpressions.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/LargeRankExpressions.java
@@ -1,29 +1,34 @@
package com.yahoo.searchdefinition;
+import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.vespa.model.AbstractService;
import java.util.Collection;
import java.util.Collections;
-import java.util.HashMap;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
public class LargeRankExpressions {
- private final Map<String, RankExpressionBody> expressions = new HashMap<>();
+ private final Map<String, RankExpressionBody> expressions = new ConcurrentHashMap<>();
+ private final FileRegistry fileRegistry;
+
+ public LargeRankExpressions(FileRegistry fileRegistry) {
+ this.fileRegistry = fileRegistry;
+ }
public void add(RankExpressionBody expression) {
- expression.validate();
String name = expression.getName();
- if (expressions.containsKey(name)) {
- throw new IllegalArgumentException("Rank expression '" + name +
- "' defined twice. Previous blob with " + expressions.get(name).getBlob().remaining() +
- " bytes, while current has " + expression.getBlob().remaining() + " bytes");
+ RankExpressionBody prev = expressions.putIfAbsent(name, expression);
+ if (prev == null) {
+ expression.validate();
+ expression.register(fileRegistry);
+ } else {
+ if ( ! prev.getBlob().equals(expression.getBlob())) {
+ throw new IllegalArgumentException("Rank expression '" + name +
+ "' defined twice. Previous blob with " + prev.getBlob().remaining() +
+ " bytes, while current has " + expression.getBlob().remaining() + " bytes");
+ }
}
- expressions.put(name, expression);
- }
-
- /** Returns the ranking constant with the given name, or null if not present */
- public RankExpressionBody get(String name) {
- return expressions.get(name);
}
/** Returns a read-only map of the ranking constants in this indexed by name */
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/MapEvaluationTypeContext.java b/config-model/src/main/java/com/yahoo/searchdefinition/MapEvaluationTypeContext.java
index 01d4042573c..e2af71ebbf3 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/MapEvaluationTypeContext.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/MapEvaluationTypeContext.java
@@ -1,6 +1,7 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
+import com.google.common.collect.ImmutableMap;
import com.yahoo.searchdefinition.expressiontransforms.OnnxModelTransformer;
import com.yahoo.searchdefinition.expressiontransforms.TokenTransformer;
import com.yahoo.searchlib.rankingexpression.ExpressionFunction;
@@ -54,7 +55,7 @@ public class MapEvaluationTypeContext extends FunctionReferenceContext implement
private final SortedSet<Reference> queryFeaturesNotDeclared;
private boolean tensorsAreUsed;
- MapEvaluationTypeContext(Collection<ExpressionFunction> functions, Map<Reference, TensorType> featureTypes) {
+ MapEvaluationTypeContext(ImmutableMap<String, ExpressionFunction> functions, Map<Reference, TensorType> featureTypes) {
super(functions);
this.parent = Optional.empty();
this.featureTypes.putAll(featureTypes);
@@ -64,7 +65,7 @@ public class MapEvaluationTypeContext extends FunctionReferenceContext implement
globallyResolvedTypes = new HashMap<>();
}
- private MapEvaluationTypeContext(Map<String, ExpressionFunction> functions,
+ private MapEvaluationTypeContext(ImmutableMap<String, ExpressionFunction> functions,
Map<String, String> bindings,
Optional<MapEvaluationTypeContext> parent,
Map<Reference, TensorType> featureTypes,
@@ -333,10 +334,6 @@ public class MapEvaluationTypeContext extends FunctionReferenceContext implement
return bindings;
}
- public Map<Reference, TensorType> featureTypes() {
- return Collections.unmodifiableMap(featureTypes);
- }
-
/**
* Returns an unmodifiable view of the query features which was requested but for which we have no type info
* (such that they default to TensorType.empty), shared between all instances of this
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/OnnxModel.java b/config-model/src/main/java/com/yahoo/searchdefinition/OnnxModel.java
index 3c42987512b..d40fe975721 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/OnnxModel.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/OnnxModel.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.tensor.TensorType;
@@ -8,6 +8,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
+import java.util.Optional;
/**
* A global ONNX model distributed using file distribution, similar to ranking constants.
@@ -20,6 +21,10 @@ public class OnnxModel extends DistributableResource {
private Map<String, String> inputMap = new HashMap<>();
private Map<String, String> outputMap = new HashMap<>();
+ private String statelessExecutionMode = null;
+ private Integer statelessInterOpThreads = null;
+ private Integer statelessIntraOpThreads = null;
+
public OnnxModel(String name) {
super(name);
}
@@ -79,4 +84,37 @@ public class OnnxModel extends DistributableResource {
TensorType getTensorType(String onnxName, Map<String, TensorType> inputTypes) {
return modelInfo != null ? modelInfo.getTensorType(onnxName, inputTypes) : TensorType.empty;
}
+
+ public void setStatelessExecutionMode(String executionMode) {
+ if ("parallel".equalsIgnoreCase(executionMode)) {
+ this.statelessExecutionMode = "parallel";
+ } else if ("sequential".equalsIgnoreCase(executionMode)) {
+ this.statelessExecutionMode = "sequential";
+ }
+ }
+
+ public Optional<String> getStatelessExecutionMode() {
+ return Optional.ofNullable(statelessExecutionMode);
+ }
+
+ public void setStatelessInterOpThreads(int interOpThreads) {
+ if (interOpThreads >= 0) {
+ this.statelessInterOpThreads = interOpThreads;
+ }
+ }
+
+ public Optional<Integer> getStatelessInterOpThreads() {
+ return Optional.ofNullable(statelessInterOpThreads);
+ }
+
+ public void setStatelessIntraOpThreads(int intraOpThreads) {
+ if (intraOpThreads >= 0) {
+ this.statelessIntraOpThreads = intraOpThreads;
+ }
+ }
+
+ public Optional<Integer> getStatelessIntraOpThreads() {
+ return Optional.ofNullable(statelessIntraOpThreads);
+ }
+
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/OnnxModels.java b/config-model/src/main/java/com/yahoo/searchdefinition/OnnxModels.java
index 60733a4f5ba..9c1ee2bb609 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/OnnxModels.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/OnnxModels.java
@@ -1,6 +1,7 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
+import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.vespa.model.AbstractService;
import java.util.Collection;
@@ -16,9 +17,15 @@ import java.util.Map;
public class OnnxModels {
private final Map<String, OnnxModel> models = new HashMap<>();
+ private final FileRegistry fileRegistry;
+
+ public OnnxModels(FileRegistry fileRegistry) {
+ this.fileRegistry = fileRegistry;
+ }
public void add(OnnxModel model) {
model.validate();
+ model.register(fileRegistry);
String name = model.getName();
models.put(name, model);
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java b/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java
index 68e03ecb188..77182e05f9b 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java
@@ -1,14 +1,17 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
+import com.google.common.collect.ImmutableMap;
import com.yahoo.config.application.api.ApplicationPackage;
+import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.search.query.profile.types.FieldDescription;
import com.yahoo.search.query.profile.types.QueryProfileType;
import com.yahoo.search.query.ranking.Diversity;
import com.yahoo.searchdefinition.document.Attribute;
import com.yahoo.searchdefinition.document.ImmutableSDField;
+import com.yahoo.searchdefinition.document.SDDocumentType;
import com.yahoo.searchdefinition.expressiontransforms.ExpressionTransforms;
import com.yahoo.searchdefinition.expressiontransforms.RankProfileTransformContext;
import com.yahoo.searchdefinition.parser.ParseException;
@@ -21,7 +24,6 @@ import com.yahoo.searchlib.rankingexpression.evaluation.Value;
import com.yahoo.searchlib.rankingexpression.rule.Arguments;
import com.yahoo.searchlib.rankingexpression.rule.ReferenceNode;
import com.yahoo.tensor.TensorType;
-import com.yahoo.vespa.model.VespaModel;
import java.io.File;
import java.io.IOException;
@@ -42,6 +44,7 @@ import java.util.Optional;
import java.util.OptionalDouble;
import java.util.Set;
import java.util.function.Supplier;
+import java.util.logging.Level;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -60,11 +63,9 @@ public class RankProfile implements Cloneable {
/** The search definition owning this profile, or null if global (owned by a model) */
private final ImmutableSearch search;
- /** The model owning this profile if it is global, or null if it is owned by a search definition */
- private final VespaModel model;
-
/** The name of the rank profile inherited by this */
private String inheritedName = null;
+ private RankProfile inherited = null;
/** The match settings of this profile */
private MatchPhaseSettings matchPhaseSettings = null;
@@ -104,6 +105,8 @@ public class RankProfile implements Cloneable {
private Boolean ignoreDefaultRankFeatures = null;
private Map<String, RankingExpressionFunction> functions = new LinkedHashMap<>();
+ // This cache must be invalidated every time modifications are done to 'functions'.
+ private CachedFunctions allFunctionsCached = null;
private Map<Reference, TensorType> inputFeatures = new LinkedHashMap<>();
@@ -121,7 +124,24 @@ public class RankProfile implements Cloneable {
private List<ImmutableSDField> allFieldsList;
/** Global onnx models not tied to a search definition */
- private OnnxModels onnxModels = new OnnxModels();
+ private final OnnxModels onnxModels;
+ private final RankingConstants rankingConstants;
+ private final ApplicationPackage applicationPackage;
+ private final DeployLogger deployLogger;
+
+ private static class CachedFunctions {
+ private final Map<String, RankingExpressionFunction> allRankingExpressionFunctions;
+ private final ImmutableMap<String, ExpressionFunction> allExpressionFunctions;
+ CachedFunctions(Map<String, RankingExpressionFunction> functions) {
+ allRankingExpressionFunctions = functions;
+ ImmutableMap.Builder<String,ExpressionFunction> mapBuilder = new ImmutableMap.Builder<>();
+ for (var entry : functions.entrySet()) {
+ ExpressionFunction function = entry.getValue().function();
+ mapBuilder.put(function.getName(), function);
+ }
+ allExpressionFunctions = mapBuilder.build();
+ }
+ }
/**
* Creates a new rank profile for a particular search definition
@@ -131,25 +151,29 @@ public class RankProfile implements Cloneable {
* @param rankProfileRegistry the {@link com.yahoo.searchdefinition.RankProfileRegistry} to use for storing
* and looking up rank profiles.
*/
- public RankProfile(String name, Search search, RankProfileRegistry rankProfileRegistry) {
+ public RankProfile(String name, Search search, RankProfileRegistry rankProfileRegistry, RankingConstants rankingConstants) {
this.name = Objects.requireNonNull(name, "name cannot be null");
this.search = Objects.requireNonNull(search, "search cannot be null");
- this.model = null;
+ this.onnxModels = null;
+ this.rankingConstants = rankingConstants;
this.rankProfileRegistry = rankProfileRegistry;
+ this.applicationPackage = search.applicationPackage();
+ this.deployLogger = search.getDeployLogger();
}
/**
* Creates a global rank profile
*
* @param name the name of the new profile
- * @param model the model owning this profile
*/
- public RankProfile(String name, VespaModel model, RankProfileRegistry rankProfileRegistry, OnnxModels onnxModels) {
+ public RankProfile(String name, ApplicationPackage applicationPackage, DeployLogger deployLogger, RankProfileRegistry rankProfileRegistry, RankingConstants rankingConstants, OnnxModels onnxModels) {
this.name = Objects.requireNonNull(name, "name cannot be null");
this.search = null;
- this.model = Objects.requireNonNull(model, "model cannot be null");
this.rankProfileRegistry = rankProfileRegistry;
+ this.rankingConstants = rankingConstants;
this.onnxModels = onnxModels;
+ this.applicationPackage = applicationPackage;
+ this.deployLogger = deployLogger;
}
public String getName() { return name; }
@@ -159,12 +183,12 @@ public class RankProfile implements Cloneable {
/** Returns the application this is part of */
public ApplicationPackage applicationPackage() {
- return search != null ? search.applicationPackage() : model.applicationPackage();
+ return applicationPackage;
}
/** Returns the ranking constants of the owner of this */
public RankingConstants rankingConstants() {
- return search != null ? search.rankingConstants() : model.rankingConstants();
+ return rankingConstants;
}
public Map<String, OnnxModel> onnxModels() {
@@ -195,21 +219,61 @@ public class RankProfile implements Cloneable {
public String getInheritedName() { return inheritedName; }
/** Returns the inherited rank profile, or null if there is none */
- public RankProfile getInherited() {
- if (getSearch() == null) return getInheritedFromRegistry(inheritedName);
+ private RankProfile getInherited() {
+ if (inheritedName == null) return null;
+ if (inherited == null) {
+ inherited = resolveInherited();
+ if (inherited == null) {
+ String msg = "rank-profile '" + getName() + "' inherits '" + inheritedName +
+ "', but it does not exist anywhere in the inheritance of search '" +
+ ((getSearch() != null) ? getSearch().getName() : " global rank profiles") + "'.";
+ throw new IllegalArgumentException(msg);
+ } else {
+ List<String> children = new ArrayList<>();
+ children.add(createFullyQualifiedName());
+ verifyNoInheritanceCycle(children, inherited);
+ }
+ }
+ return inherited;
+ }
+
+ private String createFullyQualifiedName() {
+ return (search != null)
+ ? (search.getName() + "." + getName())
+ : getName();
+ }
- RankProfile inheritedInThisSearch = rankProfileRegistry.get(search, inheritedName);
- if (inheritedInThisSearch != null) return inheritedInThisSearch;
- return getInheritedFromRegistry(inheritedName);
+ private void verifyNoInheritanceCycle(List<String> children, RankProfile parent) {
+ children.add(parent.createFullyQualifiedName());
+ String root = children.get(0);
+ if (root.equals(parent.createFullyQualifiedName())) {
+ throw new IllegalArgumentException("There is a cycle in the inheritance for rank-profile '" + root + "' = " + children);
+ }
+ if (parent.getInherited() != null) {
+ verifyNoInheritanceCycle(children, parent.getInherited());
+ }
}
- private RankProfile getInheritedFromRegistry(String inheritedName) {
- for (RankProfile r : rankProfileRegistry.all()) {
- if (r.getName().equals(inheritedName)) {
- return r;
+ private RankProfile resolveInherited(ImmutableSearch search) {
+ SDDocumentType documentType = search.getDocument();
+ if (documentType != null) {
+ if (name.equals(inheritedName)) {
+ // If you seemingly inherit yourself, you are actually referencing a rank-profile in one of your inherited schemas
+ for (SDDocumentType baseType : documentType.getInheritedTypes()) {
+ RankProfile resolvedFromBase = rankProfileRegistry.resolve(baseType, inheritedName);
+ if (resolvedFromBase != null) return resolvedFromBase;
+ }
}
+ return rankProfileRegistry.resolve(documentType, inheritedName);
}
- return null;
+ return rankProfileRegistry.get(search.getName(), inheritedName);
+ }
+
+ private RankProfile resolveInherited() {
+ if (inheritedName == null) return null;
+ return (getSearch() != null)
+ ? resolveInherited(search)
+ : rankProfileRegistry.getGlobal(inheritedName);
}
/**
@@ -583,7 +647,12 @@ public class RankProfile implements Cloneable {
/** Adds a function and returns it */
public RankingExpressionFunction addFunction(ExpressionFunction function, boolean inline) {
RankingExpressionFunction rankingExpressionFunction = new RankingExpressionFunction(function, inline);
+ if (functions.containsKey(function.getName())) {
+ deployLogger.log(Level.WARNING, "Function '" + function.getName() + "' replaces a previous function " +
+ "with the same name in rank profile '" + this.name + "'");
+ }
functions.put(function.getName(), rankingExpressionFunction);
+ allFunctionsCached = null;
return rankingExpressionFunction;
}
@@ -612,6 +681,20 @@ public class RankProfile implements Cloneable {
}
/** Returns an unmodifiable snapshot of the functions in this */
public Map<String, RankingExpressionFunction> getFunctions() {
+ updateCachedFunctions();
+ return allFunctionsCached.allRankingExpressionFunctions;
+ }
+ private ImmutableMap<String, ExpressionFunction> getExpressionFunctions() {
+ updateCachedFunctions();
+ return allFunctionsCached.allExpressionFunctions;
+ }
+ private void updateCachedFunctions() {
+ if (needToUpdateFunctionCache()) {
+ allFunctionsCached = new CachedFunctions(gatherAllFunctions());
+ }
+ }
+
+ private Map<String, RankingExpressionFunction> gatherAllFunctions() {
if (functions.isEmpty() && getInherited() == null) return Collections.emptyMap();
if (functions.isEmpty()) return getInherited().getFunctions();
if (getInherited() == null) return Collections.unmodifiableMap(new LinkedHashMap<>(functions));
@@ -622,6 +705,12 @@ public class RankProfile implements Cloneable {
return Collections.unmodifiableMap(allFunctions);
}
+ private boolean needToUpdateFunctionCache() {
+ if (getInherited() != null)
+ return (allFunctionsCached == null) || getInherited().needToUpdateFunctionCache();
+ return allFunctionsCached == null;
+ }
+
public int getKeepRankCount() {
if (keepRankCount >= 0) return keepRankCount;
if (getInherited() != null) return getInherited().getKeepRankCount();
@@ -710,6 +799,7 @@ public class RankProfile implements Cloneable {
clone.rankProperties = new LinkedHashMap<>(this.rankProperties);
clone.inputFeatures = new LinkedHashMap<>(this.inputFeatures);
clone.functions = new LinkedHashMap<>(this.functions);
+ clone.allFunctionsCached = null;
clone.filterFields = new HashSet<>(this.filterFields);
clone.constants = new HashMap<>(this.constants);
return clone;
@@ -749,6 +839,7 @@ public class RankProfile implements Cloneable {
// Function compiling second pass: compile all functions and insert previously compiled inline functions
// TODO This merges all functions from inherited profiles too and erases inheritance information. Not good.
functions = compileFunctions(this::getFunctions, queryProfiles, featureTypes, importedModels, inlineFunctions, expressionTransforms);
+ allFunctionsCached = null;
}
private void checkNameCollisions(Map<String, RankingExpressionFunction> functions, Map<String, Value> constants) {
@@ -835,10 +926,7 @@ public class RankProfile implements Cloneable {
}
public MapEvaluationTypeContext typeContext(QueryProfileRegistry queryProfiles, Map<Reference, TensorType> featureTypes) {
- MapEvaluationTypeContext context = new MapEvaluationTypeContext(getFunctions().values().stream()
- .map(RankingExpressionFunction::function)
- .collect(Collectors.toList()),
- featureTypes);
+ MapEvaluationTypeContext context = new MapEvaluationTypeContext(getExpressionFunctions(), featureTypes);
// Add small and large constants, respectively
getConstants().forEach((k, v) -> context.setType(FeatureNames.asConstantFeature(k), v.type()));
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/RankProfileRegistry.java b/config-model/src/main/java/com/yahoo/searchdefinition/RankProfileRegistry.java
index 271442768a8..52b9fba391b 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/RankProfileRegistry.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/RankProfileRegistry.java
@@ -1,11 +1,15 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
+import com.yahoo.searchdefinition.document.SDDocumentType;
+
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashMap;
+import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -20,37 +24,41 @@ import java.util.Set;
*/
public class RankProfileRegistry {
- private final Map<RankProfile, ImmutableSearch> rankProfileToSearch = new LinkedHashMap<>();
- private final Map<ImmutableSearch, Map<String, RankProfile>> rankProfiles = new LinkedHashMap<>();
+ private final Map<String, Map<String, RankProfile>> rankProfiles = new LinkedHashMap<>();
+ private final String MAGIC_GLOBAL_RANKPROFILES = "[MAGIC_GLOBAL_RANKPROFILES]";
/* These rank profiles can be overridden: 'default' rank profile, as that is documented to work. And 'unranked'. */
static final Set<String> overridableRankProfileNames = new HashSet<>(Arrays.asList("default", "unranked"));
public static RankProfileRegistry createRankProfileRegistryWithBuiltinRankProfiles(Search search) {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- rankProfileRegistry.add(new DefaultRankProfile(search, rankProfileRegistry));
- rankProfileRegistry.add(new UnrankedRankProfile(search, rankProfileRegistry));
+ rankProfileRegistry.add(new DefaultRankProfile(search, rankProfileRegistry, search.rankingConstants()));
+ rankProfileRegistry.add(new UnrankedRankProfile(search, rankProfileRegistry, search.rankingConstants()));
return rankProfileRegistry;
}
+ private String extractName(ImmutableSearch search) {
+ return search != null ? search.getName() : MAGIC_GLOBAL_RANKPROFILES;
+ }
+
/**
* Adds a rank profile to this registry
*
* @param rankProfile the rank profile to add
*/
public void add(RankProfile rankProfile) {
- if ( ! rankProfiles.containsKey(rankProfile.getSearch())) {
- rankProfiles.put(rankProfile.getSearch(), new LinkedHashMap<>());
+ String searchName = extractName(rankProfile.getSearch());
+ if ( ! rankProfiles.containsKey(searchName)) {
+ rankProfiles.put(searchName, new LinkedHashMap<>());
}
checkForDuplicate(rankProfile);
- rankProfiles.get(rankProfile.getSearch()).put(rankProfile.getName(), rankProfile);
- rankProfileToSearch.put(rankProfile, rankProfile.getSearch());
+ rankProfiles.get(searchName).put(rankProfile.getName(), rankProfile);
}
private void checkForDuplicate(RankProfile rankProfile) {
String rankProfileName = rankProfile.getName();
- RankProfile existingRangProfileWithSameName = rankProfiles.get(rankProfile.getSearch()).get(rankProfileName);
- if (existingRangProfileWithSameName == null) return;
+ RankProfile existingRankProfileWithSameName = rankProfiles.get(extractName(rankProfile.getSearch())).get(rankProfileName);
+ if (existingRankProfileWithSameName == null) return;
if ( ! overridableRankProfileNames.contains(rankProfileName)) {
throw new IllegalArgumentException("Duplicate rank profile '" + rankProfileName + "' in " +
@@ -65,27 +73,50 @@ public class RankProfileRegistry {
* @param name the name of the rank profile
* @return the RankProfile to return.
*/
- public RankProfile get(ImmutableSearch search, String name) {
+ public RankProfile get(String search, String name) {
Map<String, RankProfile> profiles = rankProfiles.get(search);
if (profiles == null) return null;
return profiles.get(name);
}
+ public RankProfile get(ImmutableSearch search, String name) {
+ return get(search.getName(), name);
+ }
+
+ public RankProfile getGlobal(String name) {
+ Map<String, RankProfile> profiles = rankProfiles.get(MAGIC_GLOBAL_RANKPROFILES);
+ if (profiles == null) return null;
+ return profiles.get(name);
+ }
+
+ public RankProfile resolve(SDDocumentType docType, String name) {
+ RankProfile rankProfile = get(docType.getName(), name);
+ if (rankProfile != null) return rankProfile;
+ for (var parent : docType.getInheritedTypes()) {
+ RankProfile parentProfile = resolve(parent, name);
+ if (parentProfile != null) return parentProfile;
+ }
+ return get(MAGIC_GLOBAL_RANKPROFILES, name);
+ }
/**
* Rank profiles that are collected across clusters.
* @return A set of global {@link RankProfile} instances.
*/
- public Set<RankProfile> all() {
- return rankProfileToSearch.keySet();
+ public Collection<RankProfile> all() {
+ List<RankProfile> all = new ArrayList<>();
+ for (var entry : rankProfiles.values()) {
+ all.addAll(entry.values());
+ }
+ return all;
}
/**
* Returns the rank profiles of a given search definition.
*
- * @param search {@link Search} to get rank profiles for
+ * @param search the searchdefinition to get rank profiles for
* @return a collection of {@link RankProfile} instances
*/
- public Collection<RankProfile> rankProfilesOf(ImmutableSearch search) {
+ public Collection<RankProfile> rankProfilesOf(String search) {
Map<String, RankProfile> mapping = rankProfiles.get(search);
if (mapping == null) {
return Collections.emptyList();
@@ -93,4 +124,13 @@ public class RankProfileRegistry {
return mapping.values();
}
+ /**
+ * Retrieve all rank profiles for a search definition
+ * @param search search definition to fetch rank profiles for, or null for the global ones
+ * @return Collection of RankProfiles
+ */
+ public Collection<RankProfile> rankProfilesOf(ImmutableSearch search) {
+ return rankProfilesOf(extractName(search));
+ }
+
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/RankingConstant.java b/config-model/src/main/java/com/yahoo/searchdefinition/RankingConstant.java
index 8e376f13615..7f29034157b 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/RankingConstant.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/RankingConstant.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.tensor.TensorType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/RankingConstants.java b/config-model/src/main/java/com/yahoo/searchdefinition/RankingConstants.java
index 82381aa63fc..8df68b210ce 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/RankingConstants.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/RankingConstants.java
@@ -1,12 +1,14 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
+import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.vespa.model.AbstractService;
import java.util.Collection;
import java.util.Collections;
-import java.util.HashMap;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Function;
/**
* Constant values for ranking/model execution tied to a search definition, or globally to an application
@@ -16,14 +18,34 @@ import java.util.Map;
*/
public class RankingConstants {
- private final Map<String, RankingConstant> constants = new HashMap<>();
+ private final Map<String, RankingConstant> constants = new ConcurrentHashMap<>();
+ private final FileRegistry fileRegistry;
+
+ public RankingConstants(FileRegistry fileRegistry) {
+ this.fileRegistry = fileRegistry;
+ }
public void add(RankingConstant constant) {
constant.validate();
+ constant.register(fileRegistry);
String name = constant.getName();
- if (constants.containsKey(name))
+ RankingConstant prev = constants.putIfAbsent(name, constant);
+ if ( prev != null )
throw new IllegalArgumentException("Ranking constant '" + name + "' defined twice");
- constants.put(name, constant);
+ }
+ public void putIfAbsent(RankingConstant constant) {
+ constant.validate();
+ constant.register(fileRegistry);
+ String name = constant.getName();
+ constants.putIfAbsent(name, constant);
+ }
+ public void computeIfAbsent(String name, Function<? super String, ? extends RankingConstant> createConstant) {
+ constants.computeIfAbsent(name, key -> {
+ RankingConstant constant = createConstant.apply(key);
+ constant.validate();
+ constant.register(fileRegistry);
+ return constant;
+ });
}
/** Returns the ranking constant with the given name, or null if not present */
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/SDDocumentTypeOrderer.java b/config-model/src/main/java/com/yahoo/searchdefinition/SDDocumentTypeOrderer.java
index 16609355130..8a6f16586d2 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/SDDocumentTypeOrderer.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/SDDocumentTypeOrderer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/Search.java b/config-model/src/main/java/com/yahoo/searchdefinition/Search.java
index c89f6f09b77..7034a69bae4 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/Search.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/Search.java
@@ -1,8 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeployLogger;
+import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.config.model.api.ModelContext;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
import com.yahoo.config.model.deploy.TestProperties;
@@ -82,13 +83,13 @@ public class Search implements ImmutableSearch {
private final Map<String, DocumentSummary> summaries = new LinkedHashMap<>();
/** External rank expression files of this */
- private final LargeRankExpressions largeRankExpressions = new LargeRankExpressions();
+ private final LargeRankExpressions largeRankExpressions;
/** Ranking constants of this */
- private final RankingConstants rankingConstants = new RankingConstants();
+ private final RankingConstants rankingConstants;
/** Onnx models of this */
- private final OnnxModels onnxModels = new OnnxModels();
+ private final OnnxModels onnxModels;
private Optional<TemporaryImportedFields> temporaryImportedFields = Optional.of(new TemporaryImportedFields());
private Optional<ImportedFields> importedFields = Optional.empty();
@@ -99,7 +100,7 @@ public class Search implements ImmutableSearch {
/** Testing only */
public Search(String name) {
- this(name, null, new BaseDeployLogger(), new TestProperties());
+ this(name, null, null, new BaseDeployLogger(), new TestProperties());
}
/**
* Creates a proper search definition
@@ -107,20 +108,23 @@ public class Search implements ImmutableSearch {
* @param name of the the searchdefinition
* @param applicationPackage the application containing this
*/
- public Search(String name, ApplicationPackage applicationPackage, DeployLogger deployLogger, ModelContext.Properties properties) {
- this(applicationPackage, deployLogger, properties, false);
+ public Search(String name, ApplicationPackage applicationPackage, FileRegistry fileRegistry, DeployLogger deployLogger, ModelContext.Properties properties) {
+ this(applicationPackage, fileRegistry, deployLogger, properties, false);
this.name = name;
}
- protected Search(ApplicationPackage applicationPackage, DeployLogger deployLogger, ModelContext.Properties properties) {
- this(applicationPackage, deployLogger, properties, true);
+ protected Search(ApplicationPackage applicationPackage, FileRegistry fileRegistry, DeployLogger deployLogger, ModelContext.Properties properties) {
+ this(applicationPackage, fileRegistry, deployLogger, properties, true);
}
- private Search(ApplicationPackage applicationPackage, DeployLogger deployLogger, ModelContext.Properties properties, boolean documentsOnly) {
+ private Search(ApplicationPackage applicationPackage, FileRegistry fileRegistry, DeployLogger deployLogger, ModelContext.Properties properties, boolean documentsOnly) {
this.applicationPackage = applicationPackage;
this.deployLogger = deployLogger;
this.properties = properties;
this.documentsOnly = documentsOnly;
+ largeRankExpressions = new LargeRankExpressions(fileRegistry);
+ rankingConstants = new RankingConstants(fileRegistry);
+ onnxModels = new OnnxModels(fileRegistry);
}
protected void setName(String name) {
@@ -270,6 +274,7 @@ public class Search implements ImmutableSearch {
/**
* @return The document in this search.
*/
+ @Override
public SDDocumentType getDocument() {
return docType;
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java b/config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java
index 537613d3b43..78cc0d496b0 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/SearchBuilder.java
@@ -1,10 +1,12 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeployLogger;
+import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.config.model.api.ModelContext;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
+import com.yahoo.config.model.application.provider.MockFileRegistry;
import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.document.DocumentTypeManager;
@@ -47,6 +49,7 @@ public class SearchBuilder {
private final ApplicationPackage app;
private final RankProfileRegistry rankProfileRegistry;
private final QueryProfileRegistry queryProfileRegistry;
+ private final FileRegistry fileRegistry;
private final DeployLogger deployLogger;
private final ModelContext.Properties properties;
/** True to build the document aspect only, skipping instantiation of rank profiles */
@@ -72,17 +75,17 @@ public class SearchBuilder {
/** Used for generating documents for typed access to document fields in Java */
public SearchBuilder(boolean documentsOnly) {
- this(MockApplicationPackage.createEmpty(), new BaseDeployLogger(), new TestProperties(), new RankProfileRegistry(), new QueryProfileRegistry(), documentsOnly);
+ this(MockApplicationPackage.createEmpty(), new MockFileRegistry(), new BaseDeployLogger(), new TestProperties(), new RankProfileRegistry(), new QueryProfileRegistry(), documentsOnly);
}
/** For testing only */
public SearchBuilder(ApplicationPackage app, DeployLogger deployLogger) {
- this(app, deployLogger, new TestProperties(), new RankProfileRegistry(), new QueryProfileRegistry());
+ this(app, new MockFileRegistry(), deployLogger, new TestProperties(), new RankProfileRegistry(), new QueryProfileRegistry());
}
/** For testing only */
public SearchBuilder(ApplicationPackage app, DeployLogger deployLogger, RankProfileRegistry rankProfileRegistry) {
- this(app, deployLogger, new TestProperties(), rankProfileRegistry, new QueryProfileRegistry());
+ this(app, new MockFileRegistry(), deployLogger, new TestProperties(), rankProfileRegistry, new QueryProfileRegistry());
}
/** For testing only */
@@ -92,17 +95,22 @@ public class SearchBuilder {
/** For testing only */
public SearchBuilder(RankProfileRegistry rankProfileRegistry, QueryProfileRegistry queryProfileRegistry) {
- this(MockApplicationPackage.createEmpty(), new BaseDeployLogger(), new TestProperties(), rankProfileRegistry, queryProfileRegistry);
+ this(rankProfileRegistry, queryProfileRegistry, new TestProperties());
+ }
+ public SearchBuilder(RankProfileRegistry rankProfileRegistry, QueryProfileRegistry queryProfileRegistry, ModelContext.Properties properties) {
+ this(MockApplicationPackage.createEmpty(), new MockFileRegistry(), new BaseDeployLogger(), properties, rankProfileRegistry, queryProfileRegistry);
}
public SearchBuilder(ApplicationPackage app,
+ FileRegistry fileRegistry,
DeployLogger deployLogger,
ModelContext.Properties properties,
RankProfileRegistry rankProfileRegistry,
QueryProfileRegistry queryProfileRegistry) {
- this(app, deployLogger, properties, rankProfileRegistry, queryProfileRegistry, false);
+ this(app, fileRegistry, deployLogger, properties, rankProfileRegistry, queryProfileRegistry, false);
}
private SearchBuilder(ApplicationPackage app,
+ FileRegistry fileRegistry,
DeployLogger deployLogger,
ModelContext.Properties properties,
RankProfileRegistry rankProfileRegistry,
@@ -111,6 +119,7 @@ public class SearchBuilder {
this.app = app;
this.rankProfileRegistry = rankProfileRegistry;
this.queryProfileRegistry = queryProfileRegistry;
+ this.fileRegistry = fileRegistry;
this.deployLogger = deployLogger;
this.properties = properties;
this.documentsOnly = documentsOnly;
@@ -160,7 +169,7 @@ public class SearchBuilder {
private String importString(String str, String searchDefDir) throws ParseException {
SimpleCharStream stream = new SimpleCharStream(str);
try {
- return importRawSearch(new SDParser(stream, deployLogger, properties, app, rankProfileRegistry, documentsOnly)
+ return importRawSearch(new SDParser(stream, fileRegistry, deployLogger, properties, app, rankProfileRegistry, documentsOnly)
.search(docTypeMgr, searchDefDir));
} catch (TokenMgrException e) {
throw new ParseException("Unknown symbol: " + e.getMessage());
@@ -347,7 +356,7 @@ public class SearchBuilder {
}
private static SearchBuilder createFromFiles(Collection<String> fileNames, DeployLogger logger) throws IOException, ParseException {
- return createFromFiles(fileNames, logger, new TestProperties(), new RankProfileRegistry(), new QueryProfileRegistry());
+ return createFromFiles(fileNames, new MockFileRegistry(), logger, new TestProperties(), new RankProfileRegistry(), new QueryProfileRegistry());
}
/**
@@ -365,7 +374,7 @@ public class SearchBuilder {
RankProfileRegistry rankProfileRegistry,
QueryProfileRegistry queryprofileRegistry)
throws IOException, ParseException {
- return createFromFiles(Collections.singletonList(fileName), deployLogger, new TestProperties(),
+ return createFromFiles(Collections.singletonList(fileName), new MockFileRegistry(), deployLogger, new TestProperties(),
rankProfileRegistry, queryprofileRegistry);
}
@@ -373,12 +382,14 @@ public class SearchBuilder {
* Convenience factory methdd to create a SearchBuilder from multiple SD files..
*/
private static SearchBuilder createFromFiles(Collection<String> fileNames,
+ FileRegistry fileRegistry,
DeployLogger deployLogger,
ModelContext.Properties properties,
RankProfileRegistry rankProfileRegistry,
QueryProfileRegistry queryprofileRegistry)
throws IOException, ParseException {
SearchBuilder builder = new SearchBuilder(MockApplicationPackage.createEmpty(),
+ fileRegistry,
deployLogger,
properties,
rankProfileRegistry,
@@ -390,30 +401,34 @@ public class SearchBuilder {
return builder;
}
- public static SearchBuilder createFromDirectory(String dir, DeployLogger logger, ModelContext.Properties properties) throws IOException, ParseException {
- return createFromDirectory(dir, logger, properties, new RankProfileRegistry());
+ public static SearchBuilder createFromDirectory(String dir, FileRegistry fileRegistry, DeployLogger logger, ModelContext.Properties properties) throws IOException, ParseException {
+ return createFromDirectory(dir, fileRegistry, logger, properties, new RankProfileRegistry());
}
public static SearchBuilder createFromDirectory(String dir,
+ FileRegistry fileRegistry,
DeployLogger logger,
ModelContext.Properties properties,
RankProfileRegistry rankProfileRegistry) throws IOException, ParseException {
- return createFromDirectory(dir, logger, properties, rankProfileRegistry, createQueryProfileRegistryFromDirectory(dir));
+ return createFromDirectory(dir, fileRegistry, logger, properties, rankProfileRegistry, createQueryProfileRegistryFromDirectory(dir));
}
private static SearchBuilder createFromDirectory(String dir,
+ FileRegistry fileRegistry,
DeployLogger logger,
ModelContext.Properties properties,
RankProfileRegistry rankProfileRegistry,
QueryProfileRegistry queryProfileRegistry) throws IOException, ParseException {
- return createFromDirectory(dir, MockApplicationPackage.fromSearchDefinitionDirectory(dir), logger, properties, rankProfileRegistry, queryProfileRegistry);
+ return createFromDirectory(dir, MockApplicationPackage.fromSearchDefinitionDirectory(dir), fileRegistry, logger, properties, rankProfileRegistry, queryProfileRegistry);
}
private static SearchBuilder createFromDirectory(String dir,
ApplicationPackage applicationPackage,
+ FileRegistry fileRegistry,
DeployLogger deployLogger,
ModelContext.Properties properties,
RankProfileRegistry rankProfileRegistry,
QueryProfileRegistry queryProfileRegistry) throws IOException, ParseException {
SearchBuilder builder = new SearchBuilder(applicationPackage,
+ fileRegistry,
deployLogger,
properties,
rankProfileRegistry,
@@ -515,5 +530,7 @@ public class SearchBuilder {
public QueryProfileRegistry getQueryProfileRegistry() {
return queryProfileRegistry;
}
+ public ModelContext.Properties getProperties() { return properties; }
+ public DeployLogger getDeployLogger() { return deployLogger; }
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/UnrankedRankProfile.java b/config-model/src/main/java/com/yahoo/searchdefinition/UnrankedRankProfile.java
index b58f696cbdf..6bd30538abd 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/UnrankedRankProfile.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/UnrankedRankProfile.java
@@ -1,7 +1,6 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
-
import com.yahoo.searchlib.rankingexpression.RankingExpression;
import com.yahoo.searchlib.rankingexpression.parser.ParseException;
@@ -12,8 +11,8 @@ import com.yahoo.searchlib.rankingexpression.parser.ParseException;
*/
public class UnrankedRankProfile extends RankProfile {
- public UnrankedRankProfile(Search search, RankProfileRegistry rankProfileRegistry) {
- super("unranked", search, rankProfileRegistry);
+ public UnrankedRankProfile(Search search, RankProfileRegistry rankProfileRegistry, RankingConstants rankingConstants) {
+ super("unranked", search, rankProfileRegistry, rankingConstants);
try {
RankingExpression exp = new RankingExpression("value(0)");
this.setFirstPhaseRanking(exp);
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java
index 125b0cf2763..24cc15dde21 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.config.subscription.ConfigInstanceUtil;
@@ -222,6 +222,9 @@ public class AttributeFields extends Derived implements AttributesConfig.Produce
if (attribute.isHuge()) {
aaB.huge(true);
}
+ if (attribute.isPaged()) {
+ aaB.paged(true);
+ }
if (attribute.getSorting().isDescending()) {
aaB.sortascending(false);
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/Derived.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/Derived.java
index d6065a07656..fded9502c49 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/Derived.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/Derived.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.config.ConfigInstance;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/DerivedConfiguration.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/DerivedConfiguration.java
index 52d99c523ea..65bda6eb576 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/DerivedConfiguration.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/DerivedConfiguration.java
@@ -1,7 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
+import com.yahoo.concurrent.InThreadExecutorService;
import com.yahoo.config.ConfigInstance;
import com.yahoo.config.model.api.ModelContext;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
@@ -19,7 +20,7 @@ import com.yahoo.vespa.model.container.search.QueryProfiles;
import java.io.IOException;
import java.io.Writer;
-import java.util.logging.Level;
+import java.util.concurrent.ExecutorService;
/**
* A set of all derived configuration of a search definition. Use this as a facade to individual configurations when
@@ -52,8 +53,12 @@ public class DerivedConfiguration {
* modified.
* @param rankProfileRegistry a {@link com.yahoo.searchdefinition.RankProfileRegistry}
*/
- DerivedConfiguration(Search search, RankProfileRegistry rankProfileRegistry, QueryProfileRegistry queryProfiles, ImportedMlModels importedModels) {
- this(search, new BaseDeployLogger(), new TestProperties(), rankProfileRegistry, queryProfiles, importedModels);
+ public DerivedConfiguration(Search search, RankProfileRegistry rankProfileRegistry) {
+ this(search, rankProfileRegistry, new QueryProfileRegistry());
+ }
+
+ DerivedConfiguration(Search search, RankProfileRegistry rankProfileRegistry, QueryProfileRegistry queryProfiles) {
+ this(search, new BaseDeployLogger(), new TestProperties(), rankProfileRegistry, queryProfiles, new ImportedMlModels(), new InThreadExecutorService());
}
/**
@@ -72,7 +77,8 @@ public class DerivedConfiguration {
ModelContext.Properties deployProperties,
RankProfileRegistry rankProfileRegistry,
QueryProfileRegistry queryProfiles,
- ImportedMlModels importedModels) {
+ ImportedMlModels importedModels,
+ ExecutorService executor) {
Validator.ensureNotNull("Search definition", search);
this.search = search;
this.queryProfiles = queryProfiles;
@@ -85,8 +91,9 @@ public class DerivedConfiguration {
summaries = new Summaries(search, deployLogger);
summaryMap = new SummaryMap(search);
juniperrc = new Juniperrc(search);
- rankProfileList = new RankProfileList(search, search.rankingConstants(), search.rankExpressionFiles(), attributeFields,
- rankProfileRegistry, queryProfiles, importedModels, deployProperties);
+ rankProfileList = new RankProfileList(search, search.rankingConstants(), search.rankExpressionFiles(),
+ search.onnxModels(), attributeFields, rankProfileRegistry,
+ queryProfiles, importedModels, deployProperties, executor);
indexingScript = new IndexingScript(search);
indexInfo = new IndexInfo(search);
indexSchema = new IndexSchema(search);
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/Deriver.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/Deriver.java
index 133adb45dd9..24221d2ed75 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/Deriver.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/Deriver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.document.DocumenttypesConfig;
import com.yahoo.document.config.DocumentmanagerConfig;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/Exportable.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/Exportable.java
index c26335ca12e..ee96161d443 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/Exportable.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/Exportable.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
/**
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/FieldRankSettings.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/FieldRankSettings.java
index 49b7ad621af..c6f59fbe596 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/FieldRankSettings.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/FieldRankSettings.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.collections.Pair;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/FieldResultTransform.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/FieldResultTransform.java
index e39b3fca148..232d80d59b4 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/FieldResultTransform.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/FieldResultTransform.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.vespa.documentmodel.SummaryTransform;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/ImportedFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/ImportedFields.java
index b44522e9771..281ab6536bd 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/ImportedFields.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/ImportedFields.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.document.DataType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/Index.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/Index.java
index 21606a8c8f3..c19fc9ca942 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/Index.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/Index.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.document.CollectionDataType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java
index f30e2367117..7950cd758fd 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.document.CollectionDataType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexSchema.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexSchema.java
index 39a67a69575..8b5e9d4ca8e 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexSchema.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexSchema.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.document.ArrayDataType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexingScript.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexingScript.java
index 8a12bb92dae..4bf4b21eb75 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexingScript.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexingScript.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.document.DataType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/Juniperrc.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/Juniperrc.java
index 9ea1b5c9b9f..8dad49f40d1 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/Juniperrc.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/Juniperrc.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.Search;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/NativeRankTypeDefinition.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/NativeRankTypeDefinition.java
index e8bf6ceda21..66526684dc4 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/NativeRankTypeDefinition.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/NativeRankTypeDefinition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.document.RankType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/NativeRankTypeDefinitionSet.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/NativeRankTypeDefinitionSet.java
index 6f0ec6336f1..cadd3a9efb0 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/NativeRankTypeDefinitionSet.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/NativeRankTypeDefinitionSet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.document.RankType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/NativeTable.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/NativeTable.java
index 90ce0f2413e..3d1f565b793 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/NativeTable.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/NativeTable.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
/**
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java
index 1796a4cba17..dc84e1fdd8a 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
@@ -18,8 +18,14 @@ import com.yahoo.vespa.config.search.core.RankingConstantsConfig;
import com.yahoo.vespa.config.search.core.RankingExpressionsConfig;
import com.yahoo.vespa.model.AbstractService;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.List;
import java.util.Map;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Future;
import java.util.logging.Logger;
/**
@@ -35,15 +41,13 @@ public class RankProfileList extends Derived implements RankProfilesConfig.Produ
private final RankingConstants rankingConstants;
private final LargeRankExpressions largeRankExpressions;
private final OnnxModels onnxModels;
- private final boolean dryRunOnnxOnSetup;
public static RankProfileList empty = new RankProfileList();
private RankProfileList() {
- rankingConstants = new RankingConstants();
- largeRankExpressions = new LargeRankExpressions();
- onnxModels = new OnnxModels();
- dryRunOnnxOnSetup = true;
+ rankingConstants = new RankingConstants(null);
+ largeRankExpressions = new LargeRankExpressions(null);
+ onnxModels = new OnnxModels(null);
}
/**
@@ -55,17 +59,24 @@ public class RankProfileList extends Derived implements RankProfilesConfig.Produ
public RankProfileList(Search search,
RankingConstants rankingConstants,
LargeRankExpressions largeRankExpressions,
+ OnnxModels onnxModels,
AttributeFields attributeFields,
RankProfileRegistry rankProfileRegistry,
QueryProfileRegistry queryProfiles,
ImportedMlModels importedModels,
- ModelContext.Properties deployProperties) {
+ ModelContext.Properties deployProperties,
+ ExecutorService executor) {
setName(search == null ? "default" : search.getName());
this.rankingConstants = rankingConstants;
this.largeRankExpressions = largeRankExpressions;
- onnxModels = search == null ? new OnnxModels() : search.onnxModels(); // as ONNX models come from parsing rank expressions
- dryRunOnnxOnSetup = deployProperties.featureFlags().dryRunOnnxOnSetup();
- deriveRankProfiles(rankProfileRegistry, queryProfiles, importedModels, search, attributeFields, deployProperties);
+ this.onnxModels = onnxModels; // as ONNX models come from parsing rank expressions
+ deriveRankProfiles(rankProfileRegistry, queryProfiles, importedModels, search, attributeFields, deployProperties, executor);
+ }
+
+ private boolean areDependenciesReady(RankProfile rank, RankProfileRegistry registry) {
+ return (rank.getInheritedName() == null) ||
+ rankProfiles.containsKey(rank.getInheritedName()) ||
+ (rank.getSearch() != null && registry.resolve(rank.getSearch().getDocument(), rank.getInheritedName()) != null);
}
private void deriveRankProfiles(RankProfileRegistry rankProfileRegistry,
@@ -73,26 +84,56 @@ public class RankProfileList extends Derived implements RankProfilesConfig.Produ
ImportedMlModels importedModels,
Search search,
AttributeFields attributeFields,
- ModelContext.Properties deployProperties) {
+ ModelContext.Properties deployProperties,
+ ExecutorService executor) {
if (search != null) { // profiles belonging to a search have a default profile
- RawRankProfile defaultProfile = new RawRankProfile(rankProfileRegistry.get(search, "default"),
- largeRankExpressions, queryProfiles, importedModels,
- attributeFields, deployProperties);
- rankProfiles.put(defaultProfile.getName(), defaultProfile);
+ RawRankProfile rawRank = new RawRankProfile(rankProfileRegistry.get(search, "default"),
+ largeRankExpressions, queryProfiles, importedModels, attributeFields, deployProperties);
+ rankProfiles.put(rawRank.getName(), rawRank);
}
- for (RankProfile rank : rankProfileRegistry.rankProfilesOf(search)) {
- if (search != null && "default".equals(rank.getName())) continue;
+ Map<String, RankProfile> remaining = new LinkedHashMap<>();
+ rankProfileRegistry.rankProfilesOf(search).forEach(rank -> remaining.put(rank.getName(), rank));
+ remaining.remove("default");
+ while (!remaining.isEmpty()) {
+ List<RankProfile> ready = new ArrayList<>();
+ remaining.forEach((name, rank) -> {
+ if (areDependenciesReady(rank, rankProfileRegistry)) ready.add(rank);
+ });
+ processRankProfiles(ready, queryProfiles, importedModels, search, attributeFields, deployProperties, executor);
+ ready.forEach(rank -> remaining.remove(rank.getName()));
+ }
+ }
+ private void processRankProfiles(List<RankProfile> ready,
+ QueryProfileRegistry queryProfiles,
+ ImportedMlModels importedModels,
+ Search search,
+ AttributeFields attributeFields,
+ ModelContext.Properties deployProperties,
+ ExecutorService executor) {
+ Map<String, Future<RawRankProfile>> futureRawRankProfiles = new LinkedHashMap<>();
+ for (RankProfile rank : ready) {
if (search == null) {
- this.onnxModels.add(rank.onnxModels());
+ onnxModels.add(rank.onnxModels());
}
- RawRankProfile rawRank = new RawRankProfile(rank, largeRankExpressions, queryProfiles, importedModels,
- attributeFields, deployProperties);
- rankProfiles.put(rawRank.getName(), rawRank);
+ futureRawRankProfiles.put(rank.getName(), executor.submit(() -> new RawRankProfile(rank, largeRankExpressions, queryProfiles, importedModels,
+ attributeFields, deployProperties)));
+ }
+ try {
+ for (Future<RawRankProfile> rawFuture : futureRawRankProfiles.values()) {
+ RawRankProfile rawRank = rawFuture.get();
+ rankProfiles.put(rawRank.getName(), rawRank);
+ }
+ } catch (InterruptedException | ExecutionException e) {
+ throw new IllegalStateException(e);
}
}
+ public OnnxModels getOnnxModels() {
+ return onnxModels;
+ }
+
public Map<String, RawRankProfile> getRankProfiles() {
return rankProfiles;
}
@@ -140,11 +181,18 @@ public class RankProfileList extends Derived implements RankProfilesConfig.Produ
log.warning("Illegal file reference " + model); // Let tests pass ... we should find a better way
else {
OnnxModelsConfig.Model.Builder modelBuilder = new OnnxModelsConfig.Model.Builder();
- modelBuilder.dry_run_on_setup(dryRunOnnxOnSetup);
+ modelBuilder.dry_run_on_setup(true);
modelBuilder.name(model.getName());
modelBuilder.fileref(model.getFileReference());
model.getInputMap().forEach((name, source) -> modelBuilder.input(new OnnxModelsConfig.Model.Input.Builder().name(name).source(source)));
model.getOutputMap().forEach((name, as) -> modelBuilder.output(new OnnxModelsConfig.Model.Output.Builder().name(name).as(as)));
+ if (model.getStatelessExecutionMode().isPresent())
+ modelBuilder.stateless_execution_mode(model.getStatelessExecutionMode().get());
+ if (model.getStatelessInterOpThreads().isPresent())
+ modelBuilder.stateless_interop_threads(model.getStatelessInterOpThreads().get());
+ if (model.getStatelessIntraOpThreads().isPresent())
+ modelBuilder.stateless_intraop_threads(model.getStatelessIntraOpThreads().get());
+
builder.model(modelBuilder);
}
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/RawRankProfile.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/RawRankProfile.java
index 97d695cead9..d607f878f95 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/RawRankProfile.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/RawRankProfile.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
@@ -6,7 +6,6 @@ import com.google.common.collect.ImmutableList;
import com.yahoo.collections.Pair;
import com.yahoo.compress.Compressor;
import com.yahoo.config.model.api.ModelContext;
-import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.searchdefinition.OnnxModel;
import com.yahoo.searchdefinition.LargeRankExpressions;
@@ -67,14 +66,6 @@ public class RawRankProfile implements RankProfilesConfig.Producer {
attributeFields, deployProperties).derive(largeExpressions));
}
- /**
- * Only for testing
- */
- public RawRankProfile(RankProfile rankProfile, QueryProfileRegistry queryProfiles, ImportedMlModels importedModels,
- AttributeFields attributeFields) {
- this(rankProfile, new LargeRankExpressions(), queryProfiles, importedModels, attributeFields, new TestProperties());
- }
-
private Compressor.Compression compress(List<Pair<String, String>> properties) {
StringBuilder b = new StringBuilder();
for (Pair<String, String> property : properties)
@@ -148,8 +139,6 @@ public class RawRankProfile implements RankProfilesConfig.Producer {
private final double termwiseLimit;
private final double rankScoreDropLimit;
private final int largeRankExpressionLimit;
- private final boolean distributeLargeRankExpressions;
- private final boolean useDistributedRankExpressions;
/**
* The rank type definitions used to derive settings for the native rank features
@@ -185,8 +174,6 @@ public class RawRankProfile implements RankProfilesConfig.Producer {
rankScoreDropLimit = compiled.getRankScoreDropLimit();
ignoreDefaultRankFeatures = compiled.getIgnoreDefaultRankFeatures();
largeRankExpressionLimit = deployProperties.featureFlags().largeRankExpressionLimit();
- distributeLargeRankExpressions = deployProperties.featureFlags().distributeExternalRankExpressions();
- useDistributedRankExpressions = deployProperties.featureFlags().useExternalRankExpressions();
rankProperties = new ArrayList<>(compiled.getRankProperties());
Map<String, RankProfile.RankingExpressionFunction> functions = compiled.getFunctions();
@@ -332,7 +319,7 @@ public class RawRankProfile implements RankProfilesConfig.Producer {
}
/** Derives the properties this produces */
- public List<Pair<String, String>> derive(LargeRankExpressions largeRankExpressions) {
+ public List<Pair<String, String>> derive(LargeRankExpressions largeRankExpressions) {
List<Pair<String, String>> properties = new ArrayList<>();
for (RankProfile.RankProperty property : rankProperties) {
if (RankingExpression.propertyName(RankProfile.FIRST_PHASE).equals(property.getName())) {
@@ -417,9 +404,26 @@ public class RawRankProfile implements RankProfilesConfig.Producer {
properties.add(new Pair<>("vespa.type.query." + queryFeatureType.getKey(), queryFeatureType.getValue()));
}
if (properties.size() >= 1000000) throw new RuntimeException("Too many rank properties");
+ distributeLargeExpressionsAsFiles(properties, largeRankExpressions);
return properties;
}
+ private void distributeLargeExpressionsAsFiles(List<Pair<String, String>> properties, LargeRankExpressions largeRankExpressions) {
+ for (ListIterator<Pair<String, String>> iter = properties.listIterator(); iter.hasNext();) {
+ Pair<String, String> property = iter.next();
+ String expression = property.getSecond();
+ if (expression.length() > largeRankExpressionLimit) {
+ String propertyName = property.getFirst();
+ String functionName = RankingExpression.extractScriptName(propertyName);
+ if (functionName != null) {
+ String mangledName = rankprofileName + "." + functionName;
+ largeRankExpressions.add(new RankExpressionBody(mangledName, ByteBuffer.wrap(expression.getBytes(StandardCharsets.UTF_8))));
+ iter.set(new Pair<>(RankingExpression.propertyExpressionName(functionName), mangledName));
+ }
+ }
+ }
+ }
+
private List<Pair<String, String>> deriveRankingPhaseRankProperties(RankingExpression expression, String phase) {
List<Pair<String, String>> properties = new ArrayList<>();
if (expression == null) return properties;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/SearchOrderer.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/SearchOrderer.java
index 56d0c39b125..b55064cc49d 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/SearchOrderer.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/SearchOrderer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.document.DataTypeName;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/Summaries.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/Summaries.java
index f3553422be8..a91bbeed9b2 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/Summaries.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/Summaries.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryClass.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryClass.java
index c173b2c11d9..2b40822b23b 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryClass.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryClass.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryClassField.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryClassField.java
index 3c29971a74c..83ce2efb801 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryClassField.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryClassField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.document.CollectionDataType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryMap.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryMap.java
index 9ef563edbc4..c53dba0bab0 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryMap.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryMap.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.Search;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/VsmFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/VsmFields.java
index 3f1474704fe..a301f3983a6 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/VsmFields.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/VsmFields.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.document.CollectionDataType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/VsmSummary.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/VsmSummary.java
index 17210452b3f..44ba9df8226 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/VsmSummary.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/VsmSummary.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.document.PositionDataType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/package-info.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/package-info.java
index 9193b0f4118..e908045d777 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/package-info.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.searchdefinition.derived;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/validation/IndexStructureValidator.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/validation/IndexStructureValidator.java
index 10385e826f2..c41437f2531 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/validation/IndexStructureValidator.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/validation/IndexStructureValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived.validation;
import com.yahoo.searchdefinition.document.SDDocumentType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/validation/Validation.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/validation/Validation.java
index d35921cf63f..a32fe67312f 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/validation/Validation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/validation/Validation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived.validation;
import com.yahoo.searchdefinition.Search;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/validation/Validator.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/validation/Validator.java
index 6189276707b..170639f5deb 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/validation/Validator.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/validation/Validator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived.validation;
import com.yahoo.searchdefinition.Search;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/Attribute.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/Attribute.java
index 0cf7a031dbc..cc08e84ef9d 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/Attribute.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/Attribute.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
import com.yahoo.document.ArrayDataType;
@@ -57,6 +57,7 @@ public final class Attribute implements Cloneable, Serializable {
private boolean fastAccess = false;
private boolean huge = false;
private boolean mutable = false;
+ private boolean paged = false;
private int arity = BooleanIndexDefinition.DEFAULT_ARITY;
private long lowerBound = BooleanIndexDefinition.DEFAULT_LOWER_BOUND;
private long upperBound = BooleanIndexDefinition.DEFAULT_UPPER_BOUND;
@@ -187,21 +188,22 @@ public final class Attribute implements Cloneable, Serializable {
/** Returns the prefetch value of this, null if the default is used. */
public Boolean getPrefetchValue() { return prefetch; }
- public boolean isRemoveIfZero() { return removeIfZero; }
- public boolean isCreateIfNonExistent(){ return createIfNonExistent; }
- public boolean isEnabledBitVectors() { return enableBitVectors; }
+ public boolean isRemoveIfZero() { return removeIfZero; }
+ public boolean isCreateIfNonExistent() { return createIfNonExistent; }
+ public boolean isEnabledBitVectors() { return enableBitVectors; }
public boolean isEnabledOnlyBitVector() { return enableOnlyBitVector; }
- public boolean isFastSearch() { return fastSearch; }
- public boolean isFastAccess() { return fastAccess; }
- public boolean isHuge() { return huge; }
- public boolean isPosition() { return isPosition; }
- public boolean isMutable() { return mutable; }
-
- public int arity() { return arity; }
+ public boolean isFastSearch() { return fastSearch; }
+ public boolean isFastAccess() { return fastAccess; }
+ public boolean isHuge() { return huge; }
+ public boolean isPaged() { return paged; }
+ public boolean isPosition() { return isPosition; }
+ public boolean isMutable() { return mutable; }
+
+ public int arity() { return arity; }
public long lowerBound() { return lowerBound; }
public long upperBound() { return upperBound; }
public double densePostingListThreshold() { return densePostingListThreshold; }
- public Optional<TensorType> tensorType() { return tensorType; }
+ public Optional<TensorType> tensorType() { return tensorType; }
public Optional<StructuredDataType> referenceDocumentType() { return referenceDocumentType; }
public static final DistanceMetric DEFAULT_DISTANCE_METRIC = DistanceMetric.EUCLIDEAN;
@@ -226,6 +228,7 @@ public final class Attribute implements Cloneable, Serializable {
public void setEnableOnlyBitVector(boolean enableOnlyBitVector) { this.enableOnlyBitVector = enableOnlyBitVector; }
public void setFastSearch(boolean fastSearch) { this.fastSearch = fastSearch; }
public void setHuge(boolean huge) { this.huge = huge; }
+ public void setPaged(boolean paged) { this.paged = paged; }
public void setFastAccess(boolean fastAccess) { this.fastAccess = fastAccess; }
public void setPosition(boolean position) { this.isPosition = position; }
public void setMutable(boolean mutable) { this.mutable = mutable; }
@@ -355,8 +358,9 @@ public final class Attribute implements Cloneable, Serializable {
@Override
public int hashCode() {
return Objects.hash(
- name, type, collectionType, sorting, dictionary, isPrefetch(), fastAccess, removeIfZero, createIfNonExistent,
- isPosition, huge, enableBitVectors, enableOnlyBitVector, tensorType, referenceDocumentType, distanceMetric, hnswIndexParams);
+ name, type, collectionType, sorting, dictionary, isPrefetch(), fastAccess, removeIfZero,
+ createIfNonExistent, isPosition, huge, mutable, paged, enableBitVectors, enableOnlyBitVector,
+ tensorType, referenceDocumentType, distanceMetric, hnswIndexParams);
}
@Override
@@ -379,6 +383,8 @@ public final class Attribute implements Cloneable, Serializable {
if (this.enableOnlyBitVector != other.enableOnlyBitVector) return false;
if (this.fastSearch != other.fastSearch) return false;
if (this.huge != other.huge) return false;
+ if (this.mutable != other.mutable) return false;
+ if (this.paged != other.paged) return false;
if (! this.sorting.equals(other.sorting)) return false;
if (! Objects.equals(dictionary, other.dictionary)) return false;
if (! Objects.equals(tensorType, other.tensorType)) return false;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/BooleanIndexDefinition.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/BooleanIndexDefinition.java
index 43e1f90790b..5719a74aaa6 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/BooleanIndexDefinition.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/BooleanIndexDefinition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
import java.util.OptionalDouble;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/Case.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/Case.java
index 0fbee339b97..ef82a498e5e 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/Case.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/Case.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
/**
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtils.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtils.java
index c3c55a77f85..24a40154494 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtils.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
import com.yahoo.document.ArrayDataType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/Dictionary.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/Dictionary.java
index 5a25953ce9e..163651bf255 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/Dictionary.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/Dictionary.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/FieldSet.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/FieldSet.java
index 22424286ef9..944564dbaa1 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/FieldSet.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/FieldSet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
import java.util.LinkedHashSet;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableImportedComplexSDField.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableImportedComplexSDField.java
index 2f13c0078ee..bdd5a4ea899 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableImportedComplexSDField.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableImportedComplexSDField.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
import java.util.Collection;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableImportedSDField.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableImportedSDField.java
index 32671ceee5b..925b67014e5 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableImportedSDField.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableImportedSDField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
import com.yahoo.document.DataType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableSDField.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableSDField.java
index 45828db92a5..d54f76614c0 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableSDField.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableSDField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
import com.yahoo.document.DataType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/ImportedComplexField.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/ImportedComplexField.java
index 56ef7527025..9435f7cdd48 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/ImportedComplexField.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/ImportedComplexField.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
import com.yahoo.searchdefinition.DocumentReference;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/ImportedField.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/ImportedField.java
index ab108213ac8..6f2142c3cea 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/ImportedField.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/ImportedField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
import com.yahoo.searchdefinition.DocumentReference;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/ImportedFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/ImportedFields.java
index 2192a7e7bb1..92a55d40048 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/ImportedFields.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/ImportedFields.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
import java.util.Collections;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/ImportedSimpleField.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/ImportedSimpleField.java
index 63f7f99c772..6acd1661294 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/ImportedSimpleField.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/ImportedSimpleField.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
import com.yahoo.searchdefinition.DocumentReference;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/Matching.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/Matching.java
index e2c036c2444..691426ee413 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/Matching.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/Matching.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
import java.io.Serializable;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/NormalizeLevel.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/NormalizeLevel.java
index 107088ec5fe..a1e2986b572 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/NormalizeLevel.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/NormalizeLevel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
/**
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/RankType.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/RankType.java
index 6df8a7998a6..6d84a9e97fc 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/RankType.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/RankType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
/**
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/Ranking.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/Ranking.java
index 35f782d4334..7bfff2d56ee 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/Ranking.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/Ranking.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
import java.io.Serializable;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/SDDocumentType.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/SDDocumentType.java
index c44bf44f4fe..007a29c95b7 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/SDDocumentType.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/SDDocumentType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
import com.yahoo.document.CompressionConfig;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/SDField.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/SDField.java
index ac92207820c..a66820a9bfe 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/SDField.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/SDField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
import com.yahoo.document.CollectionDataType;
@@ -9,6 +9,7 @@ import com.yahoo.document.MapDataType;
import com.yahoo.document.StructDataType;
import com.yahoo.document.TensorDataType;
import com.yahoo.language.Linguistics;
+import com.yahoo.language.process.Embedder;
import com.yahoo.language.simple.SimpleLinguistics;
import com.yahoo.searchdefinition.Index;
import com.yahoo.searchdefinition.Search;
@@ -292,7 +293,7 @@ public class SDField extends Field implements TypedKey, FieldOperationContainer,
for (Field field : subType.fieldSet()) {
SDField subField = new SDField(sdoc, name.concat(".").concat(field.getName()), field.getDataType(),
subType, new Matching(), true, recursion + 1);
- structFields.put(field.getName(), subField);
+ structFields.putIfAbsent(field.getName(), subField);
}
}
}
@@ -425,12 +426,12 @@ public class SDField extends Field implements TypedKey, FieldOperationContainer,
/** Parse an indexing expression which will use the simple linguistics implementatino suitable for testing */
public void parseIndexingScript(String script) {
- parseIndexingScript(script, new SimpleLinguistics());
+ parseIndexingScript(script, new SimpleLinguistics(), Embedder.throwsOnUse);
}
- public void parseIndexingScript(String script, Linguistics linguistics) {
+ public void parseIndexingScript(String script, Linguistics linguistics, Embedder embedder) {
try {
- ScriptParserContext config = new ScriptParserContext(linguistics);
+ ScriptParserContext config = new ScriptParserContext(linguistics, embedder);
config.setInputStream(new IndexingInput(script));
setIndexingScript(ScriptExpression.newInstance(config));
} catch (ParseException e) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/Sorting.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/Sorting.java
index 7e80b967f17..ef175f68ab8 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/Sorting.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/Sorting.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
import java.io.Serializable;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/Stemming.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/Stemming.java
index cefad472df7..5b4862d4643 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/Stemming.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/Stemming.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
import com.yahoo.language.process.StemMode;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/TemporaryImportedField.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/TemporaryImportedField.java
index 185963577d0..fef5e25c402 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/TemporaryImportedField.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/TemporaryImportedField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
/**
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/TemporaryImportedFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/TemporaryImportedFields.java
index a53c1b2c5ec..5733779ccc7 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/TemporaryImportedFields.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/TemporaryImportedFields.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
import java.util.Collections;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/TemporarySDDocumentType.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/TemporarySDDocumentType.java
index 2a8329f9ea9..1452ff430f3 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/TemporarySDDocumentType.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/TemporarySDDocumentType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
import com.yahoo.document.DataTypeName;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/TemporarySDField.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/TemporarySDField.java
index 2921253461d..4ced104fa55 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/TemporarySDField.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/TemporarySDField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
import com.yahoo.document.DataType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/TypedKey.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/TypedKey.java
index 57730202ba0..767d6cc8009 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/TypedKey.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/TypedKey.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
import com.yahoo.document.DataType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/annotation/SDAnnotationType.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/annotation/SDAnnotationType.java
index adf58ee6838..bc187678109 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/annotation/SDAnnotationType.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/annotation/SDAnnotationType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document.annotation;
import com.yahoo.searchdefinition.document.SDDocumentType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/annotation/TemporaryAnnotationReferenceDataType.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/annotation/TemporaryAnnotationReferenceDataType.java
index 8ffe0fde535..717e778adb9 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/document/annotation/TemporaryAnnotationReferenceDataType.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/annotation/TemporaryAnnotationReferenceDataType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document.annotation;
import com.yahoo.document.annotation.AnnotationReferenceDataType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/ConstantTensorTransformer.java b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/ConstantTensorTransformer.java
index 31025b0511d..166255799bd 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/ConstantTensorTransformer.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/ConstantTensorTransformer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.expressiontransforms;
import com.yahoo.searchdefinition.FeatureNames;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/ExpressionTransforms.java b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/ExpressionTransforms.java
index b19c0c3152d..1334a7a3aad 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/ExpressionTransforms.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/ExpressionTransforms.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.expressiontransforms;
import com.google.common.collect.ImmutableList;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/FunctionInliner.java b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/FunctionInliner.java
index c15ef20a455..340eec278e3 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/FunctionInliner.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/FunctionInliner.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.expressiontransforms;
import com.yahoo.searchdefinition.RankProfile;
@@ -24,6 +24,7 @@ public class FunctionInliner extends ExpressionTransformer<RankProfileTransformC
}
private ExpressionNode transformFeatureNode(ReferenceNode feature, RankProfileTransformContext context) {
+ if (feature.getArguments().size() > 0) return feature; // From RankProfile: only inline no-arg functions
RankProfile.RankingExpressionFunction rankingExpressionFunction = context.inlineFunctions().get(feature.getName());
if (rankingExpressionFunction == null) return feature;
return transform(rankingExpressionFunction.function().getBody().getRoot(), context); // inline recursively and return
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/FunctionShadower.java b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/FunctionShadower.java
index bb2e20a4f05..1f0112194cf 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/FunctionShadower.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/FunctionShadower.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.expressiontransforms;
import com.yahoo.searchdefinition.RankProfile;
@@ -26,10 +26,11 @@ public class FunctionShadower extends ExpressionTransformer<RankProfileTransform
@Override
public RankingExpression transform(RankingExpression expression, RankProfileTransformContext context) {
- String name = expression.getName();
ExpressionNode node = expression.getRoot();
ExpressionNode result = transform(node, context);
- return new RankingExpression(name, result);
+ return (result == node)
+ ? expression
+ : new RankingExpression(expression.getName(), result);
}
@Override
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/OnnxFeatureConverter.java b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/OnnxFeatureConverter.java
index 6a497460c5f..ae8f918dd4b 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/OnnxFeatureConverter.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/OnnxFeatureConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.expressiontransforms;
import com.yahoo.path.Path;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/OnnxModelTransformer.java b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/OnnxModelTransformer.java
index a3acc64bd4a..abfb0c43d84 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/OnnxModelTransformer.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/OnnxModelTransformer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.expressiontransforms;
import com.yahoo.path.Path;
@@ -75,7 +75,7 @@ public class OnnxModelTransformer extends ExpressionTransformer<RankProfileTrans
if (onnxModel == null) {
String path = asString(arguments.expressions().get(0));
ModelName modelName = new ModelName(null, Path.fromString(path), true);
- ConvertedModel convertedModel = ConvertedModel.fromStore(modelName, path, rankProfile);
+ ConvertedModel convertedModel = ConvertedModel.fromStore(search.applicationPackage(), modelName, path, rankProfile);
FeatureArguments featureArguments = new FeatureArguments(arguments);
return convertedModel.expression(featureArguments, null);
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/RankProfileTransformContext.java b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/RankProfileTransformContext.java
index a12b06624cf..be35c2c752e 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/RankProfileTransformContext.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/RankProfileTransformContext.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.expressiontransforms;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/TensorFlowFeatureConverter.java b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/TensorFlowFeatureConverter.java
index 4a315420b0a..7b165d94cae 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/TensorFlowFeatureConverter.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/TensorFlowFeatureConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.expressiontransforms;
import com.yahoo.path.Path;
@@ -26,6 +26,8 @@ public class TensorFlowFeatureConverter extends ExpressionTransformer<RankProfil
/** A cache of imported models indexed by model path. This avoids importing the same model multiple times. */
private final Map<Path, ConvertedModel> convertedTensorFlowModels = new HashMap<>();
+ public TensorFlowFeatureConverter() {}
+
@Override
public ExpressionNode transform(ExpressionNode node, RankProfileTransformContext context) {
if (node instanceof ReferenceNode)
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/TokenTransformer.java b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/TokenTransformer.java
index 032341297bf..cd56de18527 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/TokenTransformer.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/TokenTransformer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.expressiontransforms;
import com.yahoo.searchlib.rankingexpression.Reference;
@@ -205,7 +205,7 @@ public class TokenTransformer extends ExpressionTransformer<RankProfileTransform
return new TensorType.Builder(TensorType.Value.FLOAT).indexed("d0", 1).indexed("d1", length).build();
} catch (NumberFormatException ex) {
throw new IllegalArgumentException("Invalid argument to " + featureName + ": the first argument must be " +
- "the length to the token sequence to generate. Got " + argument.toString());
+ "the length to the token sequence to generate. Got " + argument);
}
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/XgboostFeatureConverter.java b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/XgboostFeatureConverter.java
index 663c5afbed6..296ffd5f7fe 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/XgboostFeatureConverter.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/expressiontransforms/XgboostFeatureConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.expressiontransforms;
import com.yahoo.path.Path;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/AliasOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/AliasOperation.java
index 41e95df6a38..1eb27cd31c2 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/AliasOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/AliasOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.searchdefinition.document.SDField;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/AttributeOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/AttributeOperation.java
index 56e241adb8e..e528b1a9971 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/AttributeOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/AttributeOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.searchdefinition.document.Attribute;
@@ -18,9 +18,10 @@ public class AttributeOperation implements FieldOperation, FieldOperationContain
private Boolean fastSearch;
private Boolean fastAccess;
private Boolean mutable;
+ private Boolean paged;
private Boolean enableBitVectors;
private Boolean enableOnlyBitVector;
- //TODO: Husk sorting!!
+ //TODO: Remember sorting!!
private boolean doAlias = false;
private String alias;
private String aliasedName;
@@ -73,6 +74,9 @@ public class AttributeOperation implements FieldOperation, FieldOperationContain
public void setMutable(Boolean mutable) {
this.mutable = mutable;
}
+ public void setPaged(Boolean paged) {
+ this.paged = paged;
+ }
public Boolean getEnableBitVectors() {
return enableBitVectors;
@@ -131,6 +135,9 @@ public class AttributeOperation implements FieldOperation, FieldOperationContain
if (huge != null) {
attribute.setHuge(huge);
}
+ if (paged != null) {
+ attribute.setPaged(paged);
+ }
if (fastSearch != null) {
attribute.setFastSearch(fastSearch);
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/BoldingOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/BoldingOperation.java
index 021276a9fa4..63486a7656b 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/BoldingOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/BoldingOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.searchdefinition.document.SDField;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/DictionaryOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/DictionaryOperation.java
index 12f0509686a..5b2e0fb004f 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/DictionaryOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/DictionaryOperation.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/FieldOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/FieldOperation.java
index 63d8d4126f0..2778a147a18 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/FieldOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/FieldOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.searchdefinition.document.SDField;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/FieldOperationContainer.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/FieldOperationContainer.java
index ab9148992e0..f81b1e42449 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/FieldOperationContainer.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/FieldOperationContainer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.searchdefinition.document.SDField;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/IdOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/IdOperation.java
index 53d44a59f5a..2d9d2d0b8db 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/IdOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/IdOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.searchdefinition.document.SDDocumentType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/IndexOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/IndexOperation.java
index 7f9da28b9ca..4611f11f023 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/IndexOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/IndexOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.searchdefinition.Index;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/IndexingOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/IndexingOperation.java
index dece0064fcc..fe3ac11af27 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/IndexingOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/IndexingOperation.java
@@ -1,7 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.language.Linguistics;
+import com.yahoo.language.process.Embedder;
import com.yahoo.language.simple.SimpleLinguistics;
import com.yahoo.searchdefinition.document.SDField;
import com.yahoo.searchdefinition.parser.ParseException;
@@ -10,6 +11,7 @@ import com.yahoo.vespa.indexinglanguage.ScriptParserContext;
import com.yahoo.vespa.indexinglanguage.expressions.ScriptExpression;
import com.yahoo.vespa.indexinglanguage.expressions.StatementExpression;
import com.yahoo.vespa.indexinglanguage.linguistics.AnnotatorConfig;
+import com.yahoo.yolean.Exceptions;
/**
* @author Einar M R Rosenvinge
@@ -27,14 +29,14 @@ public class IndexingOperation implements FieldOperation {
}
/** Creates an indexing operation which will use the simple linguistics implementation suitable for testing */
- @SuppressWarnings("deprecation")
public static IndexingOperation fromStream(SimpleCharStream input, boolean multiLine) throws ParseException {
- return fromStream(input, multiLine, new SimpleLinguistics());
+ return fromStream(input, multiLine, new SimpleLinguistics(), Embedder.throwsOnUse);
}
- public static IndexingOperation fromStream(SimpleCharStream input, boolean multiLine, Linguistics linguistics)
+ public static IndexingOperation fromStream(SimpleCharStream input, boolean multiLine,
+ Linguistics linguistics, Embedder embedder)
throws ParseException {
- ScriptParserContext config = new ScriptParserContext(linguistics);
+ ScriptParserContext config = new ScriptParserContext(linguistics, embedder);
config.setAnnotatorConfig(new AnnotatorConfig());
config.setInputStream(input);
ScriptExpression exp;
@@ -45,7 +47,7 @@ public class IndexingOperation implements FieldOperation {
exp = new ScriptExpression(StatementExpression.newInstance(config));
}
} catch (com.yahoo.vespa.indexinglanguage.parser.ParseException e) {
- ParseException t = new ParseException("Error reported by IL parser: " + e.getMessage());
+ ParseException t = new ParseException("Could not parse indexing statement: " + Exceptions.toMessageString(e));
t.initCause(e);
throw t;
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/IndexingRewriteOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/IndexingRewriteOperation.java
index 0a29fae04bf..1f8a7debd86 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/IndexingRewriteOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/IndexingRewriteOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.searchdefinition.document.SDField;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/MatchOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/MatchOperation.java
index eba56bf964a..d6e3a898420 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/MatchOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/MatchOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.searchdefinition.document.Case;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/NormalizingOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/NormalizingOperation.java
index a5a1466d1be..cca7693119e 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/NormalizingOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/NormalizingOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.searchdefinition.document.NormalizeLevel;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/QueryCommandOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/QueryCommandOperation.java
index f3b8f4a16f0..fc2dd303746 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/QueryCommandOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/QueryCommandOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.searchdefinition.document.SDField;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/RankOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/RankOperation.java
index 4f109d27a96..df9095ffcc5 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/RankOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/RankOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.searchdefinition.document.SDField;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/RankTypeOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/RankTypeOperation.java
index 7f0ee984415..970e5bc0678 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/RankTypeOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/RankTypeOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.searchdefinition.document.RankType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SortingOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SortingOperation.java
index c556ddea99d..148919c6de3 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SortingOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SortingOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.searchdefinition.document.Attribute;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/StemmingOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/StemmingOperation.java
index e3cee4ece3d..6ee137ff38c 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/StemmingOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/StemmingOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.searchdefinition.document.SDField;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/StructFieldOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/StructFieldOperation.java
index 7218ce25931..285e1d97242 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/StructFieldOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/StructFieldOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.searchdefinition.document.SDField;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SummaryInFieldLongOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SummaryInFieldLongOperation.java
index f05873c5c6b..8661928699f 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SummaryInFieldLongOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SummaryInFieldLongOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.document.DataType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SummaryInFieldOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SummaryInFieldOperation.java
index b36a1cb0cbc..5bd99fb3c8f 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SummaryInFieldOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SummaryInFieldOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.vespa.documentmodel.SummaryField;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SummaryInFieldShortOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SummaryInFieldShortOperation.java
index c1a5adb2ae7..e5b96940ac7 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SummaryInFieldShortOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SummaryInFieldShortOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.searchdefinition.document.SDField;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SummaryToOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SummaryToOperation.java
index 9c66ad12ce1..1378389c3e6 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SummaryToOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/SummaryToOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.searchdefinition.document.SDField;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/WeightOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/WeightOperation.java
index 565ba6dec06..cc3a0ba687b 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/WeightOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/WeightOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.searchdefinition.document.SDField;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/WeightedSetOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/WeightedSetOperation.java
index 5c2f3202571..11d731f814d 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/WeightedSetOperation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/WeightedSetOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.fieldoperation;
import com.yahoo.searchdefinition.document.Attribute;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/SimpleCharStream.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/SimpleCharStream.java
index b9b6d9b6a47..cde172d00b9 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/SimpleCharStream.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/SimpleCharStream.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.parser;
import com.yahoo.javacc.FastCharStream;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFields.java
index 73018e2cbc1..213928b3edb 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFields.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFields.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddExtraFieldsToDocument.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddExtraFieldsToDocument.java
index 0ffd13927b4..152399337fd 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddExtraFieldsToDocument.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddExtraFieldsToDocument.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AdjustPositionSummaryFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AdjustPositionSummaryFields.java
index e8c958f9609..fd103f3901c 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AdjustPositionSummaryFields.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AdjustPositionSummaryFields.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AttributeProperties.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AttributeProperties.java
index 5bcb2ddf54f..e7cc562b42d 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AttributeProperties.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AttributeProperties.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AttributesImplicitWord.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AttributesImplicitWord.java
index 9b734cacede..27e9d5a070f 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AttributesImplicitWord.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AttributesImplicitWord.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/Bolding.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/Bolding.java
index 86a272d5201..8c62cdfaec6 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/Bolding.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/Bolding.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/BoolAttributeValidator.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/BoolAttributeValidator.java
new file mode 100644
index 00000000000..f4bf4432aa0
--- /dev/null
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/BoolAttributeValidator.java
@@ -0,0 +1,36 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.searchdefinition.processing;
+
+import com.yahoo.config.application.api.DeployLogger;
+import com.yahoo.searchdefinition.RankProfileRegistry;
+import com.yahoo.searchdefinition.Search;
+import com.yahoo.searchdefinition.document.Attribute;
+import com.yahoo.vespa.model.container.search.QueryProfiles;
+
+/**
+ * Validates attribute fields using bool type, ensuring the collection type is supported.
+ *
+ * Currently, only the single value bool type is supported.
+ *
+ * @author geirst
+ */
+public class BoolAttributeValidator extends Processor {
+
+ public BoolAttributeValidator(Search search, DeployLogger deployLogger, RankProfileRegistry rankProfileRegistry, QueryProfiles queryProfiles) {
+ super(search, deployLogger, rankProfileRegistry, queryProfiles);
+ }
+
+ @Override
+ public void process(boolean validate, boolean documentsOnly) {
+ for (var field : search.allConcreteFields()) {
+ var attribute = field.getAttribute();
+ if (attribute == null) {
+ continue;
+ }
+ if (attribute.getType().equals(Attribute.Type.BOOL) &&
+ !attribute.getCollectionType().equals(Attribute.CollectionType.SINGLE)) {
+ fail(search, field, "Only single value bool attribute fields are supported");
+ }
+ }
+ }
+}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/BuiltInFieldSets.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/BuiltInFieldSets.java
index 1b2534e4cae..fc23042649b 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/BuiltInFieldSets.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/BuiltInFieldSets.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/CreatePositionZCurve.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/CreatePositionZCurve.java
index 2da1a7ac95b..7b0ea68db5a 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/CreatePositionZCurve.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/CreatePositionZCurve.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/DictionaryProcessor.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/DictionaryProcessor.java
index 1f07e3159da..d8331746968 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/DictionaryProcessor.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/DictionaryProcessor.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/DisallowComplexMapAndWsetKeyTypes.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/DisallowComplexMapAndWsetKeyTypes.java
index 267ff827e77..74bc476f96b 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/DisallowComplexMapAndWsetKeyTypes.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/DisallowComplexMapAndWsetKeyTypes.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/DiversitySettingsValidator.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/DiversitySettingsValidator.java
index 029892cba1c..282ca6b3645 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/DiversitySettingsValidator.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/DiversitySettingsValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
@@ -22,7 +22,7 @@ public class DiversitySettingsValidator extends Processor {
if ( ! validate) return;
if (documentsOnly) return;
- for (RankProfile rankProfile : rankProfileRegistry.rankProfilesOf(search)) {
+ for (RankProfile rankProfile : rankProfileRegistry.rankProfilesOf(search.getName())) {
if (rankProfile.getMatchPhaseSettings() != null && rankProfile.getMatchPhaseSettings().getDiversity() != null) {
validate(rankProfile, rankProfile.getMatchPhaseSettings().getDiversity());
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ExactMatch.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ExactMatch.java
index d03dfba2863..deb37adfa94 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ExactMatch.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ExactMatch.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/FastAccessValidator.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/FastAccessValidator.java
index cd33e4434e7..a6b61e28bfc 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/FastAccessValidator.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/FastAccessValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/FieldSetSettings.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/FieldSetSettings.java
index 21647bdfcf7..291b84fa67b 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/FieldSetSettings.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/FieldSetSettings.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/FilterFieldNames.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/FilterFieldNames.java
index 1337a0930c9..201aaf46470 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/FilterFieldNames.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/FilterFieldNames.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImplicitSummaries.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImplicitSummaries.java
index 9a170a92447..e05ca24cc77 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImplicitSummaries.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImplicitSummaries.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import java.util.logging.Level;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImplicitSummaryFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImplicitSummaryFields.java
index 8db4ec432c5..0e13f38e207 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImplicitSummaryFields.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImplicitSummaryFields.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolver.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolver.java
index 6d3de23238d..c737df5d44f 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolver.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexFieldNames.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexFieldNames.java
index 3286d7ea0a4..f0f52c49875 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexFieldNames.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexFieldNames.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingInputs.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingInputs.java
index fbe04881ce1..6117f3097ab 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingInputs.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingInputs.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingOutputs.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingOutputs.java
index 8c60de1241e..c1ed856bb11 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingOutputs.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingOutputs.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValidation.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValidation.java
index dedc96cdc05..915c2040224 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValidation.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValidation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValues.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValues.java
index 7bc12dec331..36a74147f05 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValues.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValues.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IntegerIndex2Attribute.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IntegerIndex2Attribute.java
index baaf145dbce..de108d4b711 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IntegerIndex2Attribute.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IntegerIndex2Attribute.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/LiteralBoost.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/LiteralBoost.java
index fe94ac9849f..51ef1c312a8 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/LiteralBoost.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/LiteralBoost.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeAliases.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeAliases.java
index 0daf7265daa..36371dd9295 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeAliases.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeAliases.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeDefaultSummaryTheSuperSet.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeDefaultSummaryTheSuperSet.java
index fec610ec41e..3524f5666b3 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeDefaultSummaryTheSuperSet.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MakeDefaultSummaryTheSuperSet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MatchConsistency.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MatchConsistency.java
index ff8a5c2eb0b..d9c62967649 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MatchConsistency.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MatchConsistency.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MatchPhaseSettingsValidator.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MatchPhaseSettingsValidator.java
index b1728b9bd89..8afc85f2e1f 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MatchPhaseSettingsValidator.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MatchPhaseSettingsValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MultifieldIndexHarmonizer.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MultifieldIndexHarmonizer.java
index 7adb7f44594..265715e8eb9 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MultifieldIndexHarmonizer.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MultifieldIndexHarmonizer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MutableAttributes.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MutableAttributes.java
index 1e78f3d18fb..35b17234a1d 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/MutableAttributes.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/MutableAttributes.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/NGramMatch.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/NGramMatch.java
index 942b6a449f3..0995762da6e 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/NGramMatch.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/NGramMatch.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/OnnxModelConfigGenerator.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/OnnxModelConfigGenerator.java
index 70ad3b255e3..a2eae585a25 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/OnnxModelConfigGenerator.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/OnnxModelConfigGenerator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/OnnxModelTypeResolver.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/OnnxModelTypeResolver.java
index 4d8fba8c603..aa3c5db4e83 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/OnnxModelTypeResolver.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/OnnxModelTypeResolver.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/OptimizeIlscript.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/OptimizeIlscript.java
index 416d956ac21..82bcff265c0 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/OptimizeIlscript.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/OptimizeIlscript.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/PagedAttributeValidator.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/PagedAttributeValidator.java
new file mode 100644
index 00000000000..5e344f5a824
--- /dev/null
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/PagedAttributeValidator.java
@@ -0,0 +1,52 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.searchdefinition.processing;
+
+import com.yahoo.config.application.api.DeployLogger;
+import com.yahoo.document.Field;
+import com.yahoo.searchdefinition.RankProfileRegistry;
+import com.yahoo.searchdefinition.Search;
+import com.yahoo.searchdefinition.document.Attribute;
+import com.yahoo.tensor.TensorType;
+import com.yahoo.vespa.model.container.search.QueryProfiles;
+
+/**
+ * Validates the 'paged' attribute setting and throws if specified on unsupported types.
+ *
+ * @author geirst
+ */
+public class PagedAttributeValidator extends Processor {
+
+
+ public PagedAttributeValidator(Search search,
+ DeployLogger deployLogger,
+ RankProfileRegistry rankProfileRegistry,
+ QueryProfiles queryProfiles) {
+ super(search, deployLogger, rankProfileRegistry, queryProfiles);
+ }
+
+ @Override
+ public void process(boolean validate, boolean documentsOnly) {
+ if (!validate) {
+ return;
+ }
+ for (var field : search.allConcreteFields()) {
+ for (var attribute : field.getAttributes().values()) {
+ if (attribute.isPaged()) {
+ validatePagedSetting(field, attribute);
+ }
+ }
+ }
+ }
+
+ private void validatePagedSetting(Field field, Attribute attribute) {
+ var tensorType = attribute.tensorType();
+ if (!tensorType.isPresent() ||
+ !isDenseTensorType(tensorType.get())) {
+ fail(search, field, "The 'paged' attribute setting is only supported for dense tensor types");
+ }
+ }
+
+ private boolean isDenseTensorType(TensorType type) {
+ return type.dimensions().stream().allMatch(d -> d.isIndexed());
+ }
+}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/PredicateProcessor.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/PredicateProcessor.java
index ff0edcd0404..df357d6b704 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/PredicateProcessor.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/PredicateProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processing.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processing.java
index 136d352ece7..ddb158a3d84 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processing.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processing.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
@@ -78,6 +78,8 @@ public class Processing {
OnnxModelConfigGenerator::new,
OnnxModelTypeResolver::new,
RankingExpressionTypeResolver::new,
+ BoolAttributeValidator::new,
+ PagedAttributeValidator::new,
// These should be last:
IndexingValidation::new,
IndexingValues::new);
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processor.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processor.java
index c548c62970b..c4f15367831 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processor.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/RankingExpressionTypeResolver.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/RankingExpressionTypeResolver.java
index 81766659545..e6b58cb6c12 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/RankingExpressionTypeResolver.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/RankingExpressionTypeResolver.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReferenceFieldsProcessor.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReferenceFieldsProcessor.java
index 0418538922b..698e654f1cb 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReferenceFieldsProcessor.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReferenceFieldsProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReservedDocumentNames.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReservedDocumentNames.java
index 805cbaced0f..e017726370f 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReservedDocumentNames.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReservedDocumentNames.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReservedFunctionNames.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReservedFunctionNames.java
index 4f5e6a6edb9..d997422c8f0 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReservedFunctionNames.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ReservedFunctionNames.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.google.common.collect.ImmutableSet;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SearchMustHaveDocument.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SearchMustHaveDocument.java
index 2d8eaff7762..b9ecc2e234d 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SearchMustHaveDocument.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SearchMustHaveDocument.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SetRankTypeEmptyOnFilters.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SetRankTypeEmptyOnFilters.java
index 715828f808a..eaab175a46e 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SetRankTypeEmptyOnFilters.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SetRankTypeEmptyOnFilters.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SortingSettings.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SortingSettings.java
index defcf761649..f81ff184417 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SortingSettings.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SortingSettings.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/StringSettingsOnNonStringFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/StringSettingsOnNonStringFields.java
index e133f88f45c..ea034665ae1 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/StringSettingsOnNonStringFields.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/StringSettingsOnNonStringFields.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryConsistency.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryConsistency.java
index a4ad3964d47..613674c5c6f 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryConsistency.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryConsistency.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryDynamicStructsArrays.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryDynamicStructsArrays.java
index 255e95e9667..a9bd57705f8 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryDynamicStructsArrays.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryDynamicStructsArrays.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSource.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSource.java
index c87801685bb..3ebfa629895 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSource.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSource.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryNamesFieldCollisions.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryNamesFieldCollisions.java
index 678d5324e38..b7febdd73b1 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryNamesFieldCollisions.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryNamesFieldCollisions.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import java.util.HashMap;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/TagType.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/TagType.java
index 79b7a6067b9..57deb82854a 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/TagType.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/TagType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/TensorFieldProcessor.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/TensorFieldProcessor.java
index 397e1c3deab..32fefc6d489 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/TensorFieldProcessor.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/TensorFieldProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/TextMatch.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/TextMatch.java
index 74f30d6a730..c1c18a552ab 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/TextMatch.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/TextMatch.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/TypedTransformProvider.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/TypedTransformProvider.java
index 9c681f62578..e309a459a67 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/TypedTransformProvider.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/TypedTransformProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.document.DataType;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/UriHack.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/UriHack.java
index d6398bc348c..224d7593631 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/UriHack.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/UriHack.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/UrlFieldValidator.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/UrlFieldValidator.java
index 2a86247a973..f059785057b 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/UrlFieldValidator.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/UrlFieldValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldTypes.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldTypes.java
index 1cf3d61d8f1..923726b7696 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldTypes.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldTypes.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesDocumentsOnly.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesDocumentsOnly.java
index e00200088da..334e2f8c340 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesDocumentsOnly.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesDocumentsOnly.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldWithIndexSettingsCreatesIndex.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldWithIndexSettingsCreatesIndex.java
index 9040cffc81e..2a14616e5e7 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldWithIndexSettingsCreatesIndex.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldWithIndexSettingsCreatesIndex.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/WordMatch.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/WordMatch.java
index 9338ff300ea..0d8045705b7 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/WordMatch.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/WordMatch.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/IndexCommandResolver.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/IndexCommandResolver.java
index 329f7a9a417..c9ee6425f97 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/IndexCommandResolver.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/IndexCommandResolver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing.multifieldresolver;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/MultiFieldResolver.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/MultiFieldResolver.java
index 53bd67d407f..c27fe7d875d 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/MultiFieldResolver.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/MultiFieldResolver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing.multifieldresolver;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/RankProfileTypeSettingsProcessor.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/RankProfileTypeSettingsProcessor.java
index 441d1b5b8df..34f60116aa8 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/RankProfileTypeSettingsProcessor.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/RankProfileTypeSettingsProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing.multifieldresolver;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/RankTypeResolver.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/RankTypeResolver.java
index e6e9de81f26..89acda469b7 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/RankTypeResolver.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/RankTypeResolver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing.multifieldresolver;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/StemmingResolver.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/StemmingResolver.java
index 910493e2aad..72942d651d0 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/StemmingResolver.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/multifieldresolver/StemmingResolver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing.multifieldresolver;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/package-info.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/package-info.java
index 26a4717f6fd..9d259154373 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/package-info.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Classes in this package (processors) implements some search
* definition features by reducing them to simpler features.
diff --git a/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java b/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java
index 9b516767c9b..64b528ad858 100644
--- a/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java
+++ b/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.configmodel.producers;
import com.yahoo.document.config.DocumentmanagerConfig;
diff --git a/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java b/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java
index 4f075264608..a89ef74a749 100644
--- a/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java
+++ b/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.configmodel.producers;
import com.yahoo.document.*;
diff --git a/config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentModel.java b/config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentModel.java
index 604840bac6b..bea7c95d412 100644
--- a/config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentModel.java
+++ b/config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentModel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.documentmodel;
import com.yahoo.documentmodel.DocumentTypeRepo;
diff --git a/config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentSummary.java b/config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentSummary.java
index 454d0f08ff0..f648e18dfda 100644
--- a/config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentSummary.java
+++ b/config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentSummary.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.documentmodel;
import java.util.ArrayList;
diff --git a/config-model/src/main/java/com/yahoo/vespa/documentmodel/FieldView.java b/config-model/src/main/java/com/yahoo/vespa/documentmodel/FieldView.java
index 4edd6f5722b..04f69d041b6 100644
--- a/config-model/src/main/java/com/yahoo/vespa/documentmodel/FieldView.java
+++ b/config-model/src/main/java/com/yahoo/vespa/documentmodel/FieldView.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.documentmodel;
import com.yahoo.document.Field;
diff --git a/config-model/src/main/java/com/yahoo/vespa/documentmodel/SearchDef.java b/config-model/src/main/java/com/yahoo/vespa/documentmodel/SearchDef.java
index 1ff674da439..cd146c45065 100644
--- a/config-model/src/main/java/com/yahoo/vespa/documentmodel/SearchDef.java
+++ b/config-model/src/main/java/com/yahoo/vespa/documentmodel/SearchDef.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.documentmodel;
import com.yahoo.document.DataType;
diff --git a/config-model/src/main/java/com/yahoo/vespa/documentmodel/SearchField.java b/config-model/src/main/java/com/yahoo/vespa/documentmodel/SearchField.java
index e631f9867d2..e146d3c8798 100644
--- a/config-model/src/main/java/com/yahoo/vespa/documentmodel/SearchField.java
+++ b/config-model/src/main/java/com/yahoo/vespa/documentmodel/SearchField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.documentmodel;
import com.yahoo.document.DataType;
diff --git a/config-model/src/main/java/com/yahoo/vespa/documentmodel/SearchManager.java b/config-model/src/main/java/com/yahoo/vespa/documentmodel/SearchManager.java
index 296e3952454..8b93c5404d7 100644
--- a/config-model/src/main/java/com/yahoo/vespa/documentmodel/SearchManager.java
+++ b/config-model/src/main/java/com/yahoo/vespa/documentmodel/SearchManager.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.documentmodel;
import java.util.TreeMap;
diff --git a/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryField.java b/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryField.java
index a9d7f407eb5..0e7ee02d7ba 100644
--- a/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryField.java
+++ b/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.documentmodel;
import com.yahoo.document.DataType;
diff --git a/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryTransform.java b/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryTransform.java
index 4279003bb9d..d814f3e5d63 100644
--- a/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryTransform.java
+++ b/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryTransform.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.documentmodel;
/**
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java b/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java
index ea0452a6c49..fa510d15673 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
import com.yahoo.config.FileReference;
@@ -8,7 +8,6 @@ import com.yahoo.config.model.api.ServiceInfo;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.defaults.Defaults;
-import java.nio.ByteBuffer;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
@@ -400,7 +399,7 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon
public void setVespaMallocDebugStackTrace(String s) { vespaMallocDebugStackTrace = s; }
public String getMMapNoCoreEnvVariable() {
- return (getMMapNoCoreLimit() >= 0l)
+ return (getMMapNoCoreLimit() >= 0L)
? "VESPA_MMAP_NOCORE_LIMIT=" + getMMapNoCoreLimit() + " "
: "";
}
@@ -457,22 +456,10 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon
/**
* Add the given file to the application's file distributor.
*
- * @param relativePath path to the file, relative to the app package
- * @return the file reference hash
+ * @param reference file reference (hash)
*/
- public FileReference sendFile(String relativePath) {
- Host host = null;
- if (getHost() != null) // false when running application tests without hosts
- host = getHost().getHost();
- return getRoot().getFileDistributor().sendFileToHost(relativePath, host);
- }
-
- public FileReference sendUri(String uri) {
- return getRoot().getFileDistributor().sendUriToHost(uri, getHost().getHost());
- }
-
- public FileReference sendBlob(ByteBuffer blob) {
- return getRoot().getFileDistributor().sendBlobToHost(blob, getHost().getHost());
+ public void send(FileReference reference) {
+ getRoot().fileReferencesRepository().add(reference);
}
/** The service HTTP port for health status */
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/Affinity.java b/config-model/src/main/java/com/yahoo/vespa/model/Affinity.java
index 3f726d81842..68696c5ead0 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/Affinity.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/Affinity.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
/**
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/Client.java b/config-model/src/main/java/com/yahoo/vespa/model/Client.java
index 0d6688dea8b..799bee546c9 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/Client.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/Client.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
import com.yahoo.config.model.ApplicationConfigProducerRoot;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/ConfigProducer.java b/config-model/src/main/java/com/yahoo/vespa/model/ConfigProducer.java
index 48cd378a9a6..b7719e3ab11 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/ConfigProducer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/ConfigProducer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
import com.yahoo.config.ConfigInstance;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/ConfigProducerRoot.java b/config-model/src/main/java/com/yahoo/vespa/model/ConfigProducerRoot.java
index b30aa5aeca6..55bcadf4848 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/ConfigProducerRoot.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/ConfigProducerRoot.java
@@ -1,10 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
import com.yahoo.config.ConfigInstance;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.admin.Admin;
-import com.yahoo.vespa.model.filedistribution.FileDistributor;
+import com.yahoo.vespa.model.filedistribution.FileReferencesRepository;
import java.util.Set;
@@ -22,7 +22,7 @@ public interface ConfigProducerRoot extends ConfigProducer {
* @param id string id of descendant
* @param descendant the producer to add to this root node
*/
- void addDescendant(String id, AbstractConfigProducer descendant);
+ void addDescendant(String id, AbstractConfigProducer<?> descendant);
/**
* @return an unmodifiable copy of the set of configIds in this root.
@@ -39,7 +39,7 @@ public interface ConfigProducerRoot extends ConfigProducer {
*/
public <CONFIGTYPE extends ConfigInstance> CONFIGTYPE getConfig(Class<CONFIGTYPE> clazz, String configId);
- FileDistributor getFileDistributor();
+ FileReferencesRepository fileReferencesRepository();
Admin getAdmin();
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/ConfigProxy.java b/config-model/src/main/java/com/yahoo/vespa/model/ConfigProxy.java
index adb49fff9df..5cfc55e195b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/ConfigProxy.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/ConfigProxy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
/**
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java b/config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java
index dd35787571e..7f74a5651fb 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
import com.yahoo.config.model.api.ModelContext;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/Host.java b/config-model/src/main/java/com/yahoo/vespa/model/Host.java
index db469c2091e..a2c0685c098 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/Host.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/Host.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
import com.yahoo.cloud.config.SentinelConfig;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java b/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java
index ef041d06978..8f804229dd0 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java b/config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java
index d28a0d69ab9..6e63a1d9e68 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/InstanceResolver.java b/config-model/src/main/java/com/yahoo/vespa/model/InstanceResolver.java
index 11e97bc8a95..4c24678d4ac 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/InstanceResolver.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/InstanceResolver.java
@@ -1,9 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
import com.yahoo.config.ConfigBuilder;
-import com.yahoo.config.ConfigInstance;
-import com.yahoo.config.ConfigurationRuntimeException;
import com.yahoo.config.codegen.CNode;
import com.yahoo.config.codegen.InnerCNode;
import com.yahoo.config.codegen.LeafCNode;
@@ -38,24 +36,6 @@ class InstanceResolver {
private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(InstanceResolver.class.getName());
/**
- * Resolves this config key into a correctly typed ConfigInstance using the given config builder.
- * FIXME: Make private once config overrides are deprecated.?
- *
- * @param builder a ConfigBuilder to create the instance from.
- * @param targetDef the def to use
- * @return the config instance or null of no producer for this found in model
- */
- static ConfigInstance resolveToInstance(ConfigInstance.Builder builder, InnerCNode targetDef) {
- try {
- if (targetDef != null) applyDef(builder, targetDef);
- Class<? extends ConfigInstance> clazz = getConfigClass(builder.getClass());
- return clazz.getConstructor(builder.getClass()).newInstance(builder);
- } catch (Exception e) {
- throw new ConfigurationRuntimeException(e);
- }
- }
-
- /**
* If some fields on the builder are null now, set them from the def. Do recursively.
* <p>
* If the targetDef has some schema incompatibilities, they are not handled here
@@ -126,15 +106,6 @@ class InstanceResolver {
}
}
- @SuppressWarnings("unchecked")
- private static Class<? extends ConfigInstance> getConfigClass(Class<? extends ConfigInstance.Builder> builderClass) {
- Class<?> configClass = builderClass.getEnclosingClass();
- if (configClass == null || ! ConfigInstance.class.isAssignableFrom(configClass)) {
- throw new ConfigurationRuntimeException("Builder class " + builderClass + " has enclosing class " + configClass + ", which is not a ConfigInstance");
- }
- return (Class<? extends ConfigInstance>) configClass;
- }
-
static String packageName(ConfigDefinitionKey cKey, PackagePrefix packagePrefix) {
return packagePrefix.value + cKey.getNamespace();
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/Logd.java b/config-model/src/main/java/com/yahoo/vespa/model/Logd.java
index 300f35b62d3..2334501ee6a 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/Logd.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/Logd.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
import com.yahoo.cloud.config.log.LogdConfig;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/PortsMeta.java b/config-model/src/main/java/com/yahoo/vespa/model/PortsMeta.java
index 6f12b3bf4ac..70a238b4a0c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/PortsMeta.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/PortsMeta.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
import java.io.Serializable;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/RecentLogFilter.java b/config-model/src/main/java/com/yahoo/vespa/model/RecentLogFilter.java
index ded29a0a31d..8b155864f33 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/RecentLogFilter.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/RecentLogFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
import java.util.LinkedList;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/Service.java b/config-model/src/main/java/com/yahoo/vespa/model/Service.java
index b102ccebee0..3849a57db6f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/Service.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/Service.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
import com.yahoo.config.model.api.ServiceInfo;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/ServiceProvider.java b/config-model/src/main/java/com/yahoo/vespa/model/ServiceProvider.java
index 32b97633436..d3a98f0b620 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/ServiceProvider.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/ServiceProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
/**
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/SimpleConfigProducer.java b/config-model/src/main/java/com/yahoo/vespa/model/SimpleConfigProducer.java
index 7c59a5600cd..5230af02868 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/SimpleConfigProducer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/SimpleConfigProducer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
import com.yahoo.config.model.producer.AbstractConfigProducer;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/VespaConfigModelRegistry.java b/config-model/src/main/java/com/yahoo/vespa/model/VespaConfigModelRegistry.java
index 247f61b3de0..03750dbaa6e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/VespaConfigModelRegistry.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/VespaConfigModelRegistry.java
@@ -1,11 +1,12 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
import com.yahoo.config.model.ConfigModelRegistry;
import com.yahoo.config.model.admin.AdminModel;
import com.yahoo.config.model.builder.xml.ConfigModelBuilder;
import com.yahoo.config.model.builder.xml.ConfigModelId;
-import com.yahoo.vespa.model.builder.xml.dom.*;
+import com.yahoo.vespa.model.builder.xml.dom.DomClientsBuilder;
+import com.yahoo.vespa.model.builder.xml.dom.DomRoutingBuilder;
import com.yahoo.vespa.model.container.xml.ContainerModelBuilder;
import com.yahoo.vespa.model.container.xml.ContainerModelBuilder.Networking;
import com.yahoo.vespa.model.content.Content;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java b/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java
index 93a9600e134..b5fc0e88540 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java
@@ -1,8 +1,7 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModel;
-import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
import com.yahoo.collections.Pair;
import com.yahoo.component.Version;
import com.yahoo.config.ConfigInstance;
@@ -12,14 +11,13 @@ import com.yahoo.config.FileReference;
import com.yahoo.config.application.api.ApplicationFile;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeployLogger;
+import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.config.application.api.ValidationId;
import com.yahoo.config.application.api.ValidationOverrides;
-import com.yahoo.config.codegen.InnerCNode;
import com.yahoo.config.model.ApplicationConfigProducerRoot;
import com.yahoo.config.model.ConfigModelRegistry;
import com.yahoo.config.model.ConfigModelRepo;
import com.yahoo.config.model.NullConfigModelRegistry;
-import com.yahoo.config.model.api.FileDistribution;
import com.yahoo.config.model.api.HostInfo;
import com.yahoo.config.model.api.Model;
import com.yahoo.config.model.api.Provisioned;
@@ -31,9 +29,9 @@ import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.container.QrConfig;
import com.yahoo.path.Path;
+import com.yahoo.searchdefinition.LargeRankExpressions;
import com.yahoo.searchdefinition.OnnxModel;
import com.yahoo.searchdefinition.OnnxModels;
-import com.yahoo.searchdefinition.LargeRankExpressions;
import com.yahoo.searchdefinition.RankProfile;
import com.yahoo.searchdefinition.RankProfileRegistry;
import com.yahoo.searchdefinition.RankingConstants;
@@ -43,7 +41,6 @@ import com.yahoo.searchdefinition.document.SDField;
import com.yahoo.searchdefinition.processing.Processing;
import com.yahoo.vespa.config.ConfigDefinitionKey;
import com.yahoo.vespa.config.ConfigKey;
-import com.yahoo.vespa.config.ConfigPayload;
import com.yahoo.vespa.config.ConfigPayloadBuilder;
import com.yahoo.vespa.config.GenericConfig.GenericConfigBuilder;
import com.yahoo.vespa.model.InstanceResolver.PackagePrefix;
@@ -57,7 +54,7 @@ import com.yahoo.vespa.model.container.search.QueryProfiles;
import com.yahoo.vespa.model.content.Content;
import com.yahoo.vespa.model.content.cluster.ContentCluster;
import com.yahoo.vespa.model.filedistribution.FileDistributionConfigProducer;
-import com.yahoo.vespa.model.filedistribution.FileDistributor;
+import com.yahoo.vespa.model.filedistribution.FileReferencesRepository;
import com.yahoo.vespa.model.generic.service.ServiceCluster;
import com.yahoo.vespa.model.ml.ConvertedModel;
import com.yahoo.vespa.model.ml.ModelName;
@@ -65,7 +62,6 @@ import com.yahoo.vespa.model.ml.OnnxModelInfo;
import com.yahoo.vespa.model.routing.Routing;
import com.yahoo.vespa.model.search.AbstractSearchCluster;
import com.yahoo.vespa.model.utils.internal.ReflectionUtil;
-import com.yahoo.yolean.Exceptions;
import org.xml.sax.SAXException;
import java.io.IOException;
@@ -81,6 +77,8 @@ import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
@@ -128,15 +126,17 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
private final RankProfileList rankProfileList;
/** The global ranking constants of this model */
- private final RankingConstants rankingConstants = new RankingConstants();
+ private final RankingConstants rankingConstants;
+
+ /** Large rank expression files of this */
+ private final LargeRankExpressions largeRankExpressions;
- /** External rank expression files of this */
- private final LargeRankExpressions largeRankExpressions = new LargeRankExpressions();
+ private final FileRegistry fileRegistry;
/** The validation overrides of this. This is never null. */
private final ValidationOverrides validationOverrides;
- private final FileDistributor fileDistributor;
+ private final FileReferencesRepository fileReferencesRepository = new FileReferencesRepository();
private final Provisioned provisioned;
@@ -169,37 +169,39 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
* @param deployState the global deploy state to use for this model.
*/
public VespaModel(ConfigModelRegistry configModelRegistry, DeployState deployState) throws IOException, SAXException {
- this(configModelRegistry, deployState, true, null);
+ this(configModelRegistry, deployState, true);
}
- private VespaModel(ConfigModelRegistry configModelRegistry, DeployState deployState, boolean complete, FileDistributor fileDistributor)
+ private VespaModel(ConfigModelRegistry configModelRegistry, DeployState deployState, boolean complete)
throws IOException, SAXException {
super("vespamodel");
- this.version = deployState.getVespaVersion();
- this.validationOverrides = deployState.validationOverrides();
- configModelRegistry = new VespaConfigModelRegistry(configModelRegistry);
+ version = deployState.getVespaVersion();
+ fileRegistry = deployState.getFileRegistry();
+ largeRankExpressions = new LargeRankExpressions(deployState.getFileRegistry());
+ rankingConstants = new RankingConstants(deployState.getFileRegistry());
+ validationOverrides = deployState.validationOverrides();
+ applicationPackage = deployState.getApplicationPackage();
+ provisioned = deployState.provisioned();
VespaModelBuilder builder = new VespaDomBuilder();
- this.applicationPackage = deployState.getApplicationPackage();
- this.provisioned = deployState.provisioned();
root = builder.getRoot(VespaModel.ROOT_CONFIGID, deployState, this);
- createGlobalRankProfiles(deployState.getDeployLogger(), deployState.getImportedModels(),
- deployState.rankProfileRegistry(), deployState.getQueryProfiles());
+ createGlobalRankProfiles(deployState);
rankProfileList = new RankProfileList(null, // null search -> global
rankingConstants,
largeRankExpressions,
+ new OnnxModels(deployState.getFileRegistry()),
AttributeFields.empty,
deployState.rankProfileRegistry(),
deployState.getQueryProfiles().getRegistry(),
deployState.getImportedModels(),
- deployState.getProperties());
+ deployState.getProperties(),
+ deployState.getExecutor());
HostSystem hostSystem = root.hostSystem();
if (complete) { // create a completed, frozen model
- configModelRepo.readConfigModels(deployState, this, builder, root, configModelRegistry);
+ configModelRepo.readConfigModels(deployState, this, builder, root, new VespaConfigModelRegistry(configModelRegistry));
addServiceClusters(deployState, builder);
setupRouting(deployState);
- this.fileDistributor = root.getFileDistributionConfigProducer().getFileDistributor();
getAdmin().addPerHostServices(hostSystem.getHosts(), deployState);
freezeModelTopology();
root.prepare(configModelRepo);
@@ -207,14 +209,11 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
validateWrapExceptions();
hostSystem.dumpPortAllocations();
propagateRestartOnDeploy();
- // must happen after stuff above
- this.allocatedHosts = AllocatedHosts.withHosts(hostSystem.getHostSpecs());
- }
- else { // create a model with no services instantiated and the given file distributor
- this.allocatedHosts = AllocatedHosts.withHosts(hostSystem.getHostSpecs());
- this.fileDistributor = fileDistributor;
}
+ // else: create a model with no services instantiated (no-op)
+ // must be done last
+ this.allocatedHosts = AllocatedHosts.withHosts(hostSystem.getHostSpecs());
}
@Override
@@ -266,12 +265,9 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
/** Returns the global ranking constants of this */
public RankingConstants rankingConstants() { return rankingConstants; }
- public LargeRankExpressions rankExpressionFiles() { return largeRankExpressions; }
-
/** Creates a mutable model with no services instantiated */
public static VespaModel createIncomplete(DeployState deployState) throws IOException, SAXException {
- return new VespaModel(new NullConfigModelRegistry(), deployState, false,
- new FileDistributor(deployState.getFileRegistry(), List.of(), deployState.isHosted()));
+ return new VespaModel(new NullConfigModelRegistry(), deployState, false);
}
private void validateWrapExceptions() {
@@ -293,17 +289,24 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
* Creates a rank profile not attached to any search definition, for each imported model in the application package,
* and adds it to the given rank profile registry.
*/
- private void createGlobalRankProfiles(DeployLogger deployLogger, ImportedMlModels importedModels,
- RankProfileRegistry rankProfileRegistry,
- QueryProfiles queryProfiles) {
- if ( ! importedModels.all().isEmpty()) { // models/ directory is available
- for (ImportedMlModel model : importedModels.all()) {
+ private void createGlobalRankProfiles(DeployState deployState) {
+ var importedModels = deployState.getImportedModels().all();
+ DeployLogger deployLogger = deployState.getDeployLogger();
+ RankProfileRegistry rankProfileRegistry = deployState.rankProfileRegistry();
+ QueryProfiles queryProfiles = deployState.getQueryProfiles();
+ List <Future<ConvertedModel>> futureModels = new ArrayList<>();
+ if ( ! importedModels.isEmpty()) { // models/ directory is available
+ for (ImportedMlModel model : importedModels) {
+ // Due to automatic naming not guaranteeing unique names, there must be a 1-1 between OnnxModels and global RankProfiles.
OnnxModels onnxModels = onnxModelInfoFromSource(model);
- RankProfile profile = new RankProfile(model.name(), this, rankProfileRegistry, onnxModels);
+ RankProfile profile = new RankProfile(model.name(), applicationPackage, deployLogger, rankProfileRegistry, rankingConstants, onnxModels);
rankProfileRegistry.add(profile);
- ConvertedModel convertedModel = ConvertedModel.fromSource(new ModelName(model.name()),
- model.name(), profile, queryProfiles.getRegistry(), model);
- convertedModel.expressions().values().forEach(f -> profile.addFunction(f, false));
+ futureModels.add(deployState.getExecutor().submit(() -> {
+ ConvertedModel convertedModel = ConvertedModel.fromSource(applicationPackage, new ModelName(model.name()),
+ model.name(), profile, queryProfiles.getRegistry(), model);
+ convertedModel.expressions().values().forEach(f -> profile.addFunction(f, false));
+ return convertedModel;
+ }));
}
}
else { // generated and stored model information may be available instead
@@ -311,18 +314,29 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
for (ApplicationFile generatedModelDir : generatedModelsDir.listFiles()) {
String modelName = generatedModelDir.getPath().last();
if (modelName.contains(".")) continue; // Name space: Not a global profile
+ // Due to automatic naming not guaranteeing unique names, there must be a 1-1 between OnnxModels and global RankProfiles.
OnnxModels onnxModels = onnxModelInfoFromStore(modelName);
- RankProfile profile = new RankProfile(modelName, this, rankProfileRegistry, onnxModels);
+ RankProfile profile = new RankProfile(modelName, applicationPackage, deployLogger, rankProfileRegistry, rankingConstants, onnxModels);
rankProfileRegistry.add(profile);
- ConvertedModel convertedModel = ConvertedModel.fromStore(new ModelName(modelName), modelName, profile);
- convertedModel.expressions().values().forEach(f -> profile.addFunction(f, false));
+ futureModels.add(deployState.getExecutor().submit(() -> {
+ ConvertedModel convertedModel = ConvertedModel.fromStore(applicationPackage, new ModelName(modelName), modelName, profile);
+ convertedModel.expressions().values().forEach(f -> profile.addFunction(f, false));
+ return convertedModel;
+ }));
+ }
+ }
+ for (var futureConvertedModel : futureModels) {
+ try {
+ futureConvertedModel.get();
+ } catch (ExecutionException |InterruptedException e) {
+ throw new RuntimeException(e);
}
}
new Processing().processRankProfiles(deployLogger, rankProfileRegistry, queryProfiles, true, false);
}
private OnnxModels onnxModelInfoFromSource(ImportedMlModel model) {
- OnnxModels onnxModels = new OnnxModels();
+ OnnxModels onnxModels = new OnnxModels(fileRegistry);
if (model.modelType().equals(ImportedMlModel.ModelType.ONNX)) {
String path = model.source();
String applicationPath = this.applicationPackage.getFileReference(Path.fromString("")).toString();
@@ -335,8 +349,8 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
}
private OnnxModels onnxModelInfoFromStore(String modelName) {
- OnnxModels onnxModels = new OnnxModels();
String path = ApplicationPackage.MODELS_DIR.append(modelName + ".onnx").toString();
+ OnnxModels onnxModels = new OnnxModels(fileRegistry);
loadOnnxModelInfo(onnxModels, modelName, path);
return onnxModels;
}
@@ -377,14 +391,10 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
.collect(Collectors.toCollection(LinkedHashSet::new));
}
- public FileDistributor getFileDistributor() {
- return fileDistributor;
- }
-
@Override
- public Set<FileReference> fileReferences() {
- return fileDistributor.allFilesToSend();
- }
+ public FileReferencesRepository fileReferencesRepository() { return fileReferencesRepository; }
+
+ public Set<FileReference> fileReferences() { return fileReferencesRepository.allFileReferences(); }
/** Returns this models Vespa instance */
public ApplicationConfigProducerRoot getVespa() { return root; }
@@ -482,9 +492,8 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
boolean found = configProducer.cascadeConfig(builder);
boolean foundOverride = configProducer.addUserConfig(builder);
log.log(Level.FINE, () -> "Trying to get config for " + builder.getClass().getDeclaringClass().getName() +
- " for config id " + quote(configProducer.getConfigId()) +
- ", found=" + found + ", foundOverride=" + foundOverride);
-
+ " for config id " + quote(configProducer.getConfigId()) +
+ ", found=" + found + ", foundOverride=" + foundOverride);
}
/**
@@ -512,23 +521,6 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
return builder;
}
- private ConfigPayload getConfigFromBuilder(ConfigInstance.Builder builder, InnerCNode targetDef) {
- if (builder instanceof GenericConfigBuilder) return ((GenericConfigBuilder) builder).getPayload();
-
- try {
- ConfigInstance instance = InstanceResolver.resolveToInstance(builder, targetDef);
- log.log(Level.FINE, () -> "getConfigFromBuilder for builder " + builder.getClass().getName() + ", instance=" + instance);
- return ConfigPayload.fromInstance(instance);
- } catch (ConfigurationRuntimeException e) {
- // This can happen in cases where services ask for config that no longer exist before they have been able
- // to reconfigure themselves. This happens for instance whenever jdisc reconfigures itself until
- // ticket 6599572 is fixed. When that happens, consider propagating a full error rather than empty payload
- // back to the client.
- log.log(Level.INFO, "Error resolving instance for builder '" + builder.getClass().getName() + "', returning empty config: " + Exceptions.toMessageString(e));
- return ConfigPayload.fromBuilder(new ConfigPayloadBuilder());
- }
- }
-
@Override
public Set<ConfigKey<?>> allConfigsProduced() {
Set<ConfigKey<?>> keySet = new LinkedHashSet<>();
@@ -599,11 +591,6 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
}
@Override
- public void distributeFiles(FileDistribution fileDistribution) {
- getFileDistributor().sendDeployedFiles(fileDistribution);
- }
-
- @Override
public AllocatedHosts allocatedHosts() {
return allocatedHosts;
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java b/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java
index b576d1cb5d2..bd8fefdda2e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
import ai.vespa.rankingexpression.importer.configmodelview.MlModelImporter;
@@ -33,6 +33,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import java.util.Optional;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -103,12 +104,35 @@ public class VespaModelFactory implements ModelFactory {
return buildModel(createDeployState(modelContext, new ValidationParameters(ValidationParameters.IgnoreValidationErrors.TRUE)));
}
+ private void logReindexingReasons(List<ConfigChangeAction> changeActions,
+ VespaModel nextModel,
+ Optional<Model> currentActiveModel)
+ {
+ if (currentActiveModel.isEmpty()) {
+ return;
+ }
+ for (ConfigChangeAction action : changeActions) {
+ if (action.getType().equals(ConfigChangeAction.Type.REINDEX)) {
+ VespaModel currentModel = (VespaModel) currentActiveModel.get();
+ var currentVersion = currentModel.version();
+ var currentMeta = currentModel.applicationPackage().getMetaData();
+ var nextVersion = nextModel.version();
+ var nextMeta = nextModel.applicationPackage().getMetaData();
+ log.log(Level.INFO, String.format("Model [%s/%s] -> [%s/%s] triggers reindexing: %s",
+ currentModel.version().toString(), currentMeta.toString(),
+ nextModel.version().toString(), nextMeta.toString(),
+ action.toString()));
+ }
+ }
+ }
+
@Override
public ModelCreateResult createAndValidateModel(ModelContext modelContext, ValidationParameters validationParameters) {
validateXml(modelContext, validationParameters.ignoreValidationErrors());
DeployState deployState = createDeployState(modelContext, validationParameters);
VespaModel model = buildModel(deployState);
List<ConfigChangeAction> changeActions = validateModel(model, deployState, validationParameters);
+ logReindexingReasons(changeActions, model, deployState.getPreviousModel());
return new ModelCreateResult(model, changeActions);
}
@@ -144,6 +168,7 @@ public class VespaModelFactory implements ModelFactory {
.deployLogger(modelContext.deployLogger())
.configDefinitionRepo(modelContext.configDefinitionRepo())
.fileRegistry(modelContext.getFileRegistry())
+ .executor(modelContext.getExecutor())
.permanentApplicationPackage(modelContext.permanentApplicationPackage())
.properties(modelContext.properties())
.vespaVersion(version())
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java
index a2a6ada9093..2692d676d2b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin;
import com.yahoo.config.model.api.ModelContext;
@@ -26,7 +26,6 @@ import com.yahoo.vespa.model.admin.monitoring.Monitoring;
import com.yahoo.vespa.model.admin.monitoring.builder.Metrics;
import com.yahoo.vespa.model.filedistribution.FileDistributionConfigProducer;
import com.yahoo.vespa.model.filedistribution.FileDistributionConfigProvider;
-import com.yahoo.vespa.model.filedistribution.FileDistributor;
import java.io.Serializable;
import java.util.ArrayList;
@@ -63,7 +62,7 @@ public class Admin extends AbstractConfigProducer<Admin> implements Serializable
private LogForwarder.Config logForwarderConfig = null;
private boolean logForwarderIncludeAdmin = false;
- private ApplicationType applicationType = ApplicationType.DEFAULT;
+ private final ApplicationType applicationType;
public void setLogForwarderConfig(LogForwarder.Config cfg, boolean includeAdmin) {
this.logForwarderConfig = cfg;
@@ -87,14 +86,15 @@ public class Admin extends AbstractConfigProducer<Admin> implements Serializable
Monitoring monitoring,
Metrics metrics,
boolean multitenant,
- FileDistributionConfigProducer fileDistributionConfigProducer,
- boolean isHostedVespa) {
+ boolean isHostedVespa,
+ ApplicationType applicationType) {
super(parent, "admin");
this.isHostedVespa = isHostedVespa;
this.monitoring = monitoring;
this.metrics = metrics;
this.multitenant = multitenant;
- this.fileDistribution = fileDistributionConfigProducer;
+ this.fileDistribution = new FileDistributionConfigProducer(parent);
+ this.applicationType = applicationType;
}
public Configserver getConfigserver() { return defaultConfigserver; }
@@ -147,13 +147,13 @@ public class Admin extends AbstractConfigProducer<Admin> implements Serializable
public ClusterControllerContainerCluster getClusterControllers() { return clusterControllers; }
- public void setClusterControllers(ClusterControllerContainerCluster clusterControllers, DeployLogger deployLogger) {
+ public void setClusterControllers(ClusterControllerContainerCluster clusterControllers, DeployState deployState) {
this.clusterControllers = clusterControllers;
if (isHostedVespa) {
// Prefer to put Slobroks on the admin cluster running cluster controllers to avoid unnecessary
// movement of the slobroks when there are changes to the content cluster nodes
removeSlobroks();
- addSlobroks(createSlobroksOn(clusterControllers, deployLogger));
+ addSlobroks(createSlobroksOn(clusterControllers, deployState));
}
}
@@ -162,13 +162,13 @@ public class Admin extends AbstractConfigProducer<Admin> implements Serializable
slobroks.clear();
}
- private List<Slobrok> createSlobroksOn(ClusterControllerContainerCluster clusterControllers, DeployLogger deployLogger) {
+ private List<Slobrok> createSlobroksOn(ClusterControllerContainerCluster clusterControllers, DeployState deployState) {
List<Slobrok> slobroks = new ArrayList<>();
for (ClusterControllerContainer clusterController : clusterControllers.getContainers()) {
- Slobrok slobrok = new Slobrok(this, clusterController.index());
+ Slobrok slobrok = new Slobrok(this, clusterController.index(), deployState.featureFlags());
slobrok.setHostResource(clusterController.getHostResource());
slobroks.add(slobrok);
- slobrok.initService(deployLogger);
+ slobrok.initService(deployState.getDeployLogger());
}
return slobroks;
}
@@ -218,7 +218,7 @@ public class Admin extends AbstractConfigProducer<Admin> implements Serializable
*/
public void addPerHostServices(List<HostResource> hosts, DeployState deployState) {
if (slobroks.isEmpty()) // TODO: Move to caller
- slobroks.addAll(createDefaultSlobrokSetup(deployState.getDeployLogger()));
+ slobroks.addAll(createDefaultSlobrokSetup(deployState));
if (! deployState.isHosted() || ! deployState.getProperties().applicationId().instance().isTester())
addMetricsProxyCluster(hosts, deployState);
@@ -290,27 +290,17 @@ public class Admin extends AbstractConfigProducer<Admin> implements Serializable
}
private void addFileDistribution(HostResource host) {
- FileDistributor fileDistributor = fileDistribution.getFileDistributor();
- HostResource hostResource = hostSystem().getHostByHostname(fileDistributor.fileSourceHost());
- if (hostResource == null && ! multitenant)
- throw new IllegalArgumentException("Could not find " + fileDistributor.fileSourceHost() +
- " in the application's " + hostSystem());
-
- FileDistributionConfigProvider configProvider =
- new FileDistributionConfigProvider(fileDistribution,
- fileDistributor,
- host == hostResource,
- host.getHost());
+ FileDistributionConfigProvider configProvider = new FileDistributionConfigProvider(fileDistribution, host.getHost());
fileDistribution.addFileDistributionConfigProducer(host.getHost(), configProvider);
}
// If not configured by user: Use default setup: max 3 slobroks, 1 on the default configserver host
- private List<Slobrok> createDefaultSlobrokSetup(DeployLogger deployLogger) {
+ private List<Slobrok> createDefaultSlobrokSetup(DeployState deployState) {
List<HostResource> hosts = hostSystem().getHosts();
List<Slobrok> slobs = new ArrayList<>();
if (logserver != null) {
- Slobrok slobrok = new Slobrok(this, 0);
- addAndInitializeService(deployLogger, logserver.getHostResource(), slobrok);
+ Slobrok slobrok = new Slobrok(this, 0, deployState.featureFlags());
+ addAndInitializeService(deployState.getDeployLogger(), logserver.getHostResource(), slobrok);
slobs.add(slobrok);
}
@@ -318,8 +308,8 @@ public class Admin extends AbstractConfigProducer<Admin> implements Serializable
while ((n < hosts.size()) && (slobs.size() < 3)) {
HostResource host = hosts.get(n);
if ((logserver== null || host != logserver.getHostResource()) && ! host.getHost().runsConfigServer()) {
- Slobrok newSlobrok = new Slobrok(this, slobs.size());
- addAndInitializeService(deployLogger, host, newSlobrok);
+ Slobrok newSlobrok = new Slobrok(this, slobs.size(), deployState.featureFlags());
+ addAndInitializeService(deployState.getDeployLogger(), host, newSlobrok);
slobs.add(newSlobrok);
}
n++;
@@ -336,10 +326,6 @@ public class Admin extends AbstractConfigProducer<Admin> implements Serializable
return multitenant;
}
- public void setApplicationType(ApplicationType applicationType) {
- this.applicationType = applicationType;
- }
-
public ApplicationType getApplicationType() { return applicationType; }
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java
index 7c31da19cf8..4b59a8feb98 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin;
import com.yahoo.config.model.producer.AbstractConfigProducer;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java
index f93a3b39ad6..a01d061c21f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin;
import com.yahoo.cloud.config.LogforwarderConfig;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java
index cdc3fd4c4d4..fbbd7ae688e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin;
import com.yahoo.config.model.producer.AbstractConfigProducer;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainer.java
index dbf41a4f206..2be56d2e469 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin;
import com.yahoo.config.model.api.ModelContext;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainerCluster.java
index 787bc322eb5..43f66f2c727 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainerCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainerCluster.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/ModelConfigProvider.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/ModelConfigProvider.java
index e53d6a29d20..8c4d2ab7455 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/ModelConfigProvider.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/ModelConfigProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin;
import com.yahoo.config.model.ApplicationConfigProducerRoot;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java
index 00b6d872ddd..899f97f48e8 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java
@@ -1,6 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin;
+import com.yahoo.config.model.api.ModelContext;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.config.core.StateserverConfig;
import com.yahoo.vespa.model.AbstractService;
@@ -26,7 +27,9 @@ public class Slobrok extends AbstractService implements StateserverConfig.Produc
* @param parent the parent ConfigProducer.
* @param index unique index for all slobroks
*/
- public Slobrok(AbstractConfigProducer<?> parent, int index) {
+ public Slobrok(AbstractConfigProducer<?> parent, int index,
+ ModelContext.FeatureFlags featureFlags)
+ {
super(parent, "slobrok." + index);
portsMeta.on(0).tag("rpc").tag("admin").tag("status");
portsMeta.on(1).tag("http").tag("state");
@@ -45,7 +48,7 @@ public class Slobrok extends AbstractService implements StateserverConfig.Produc
}
public String getStartupCommand() {
- return "exec $ROOT/sbin/vespa-slobrok -p " + getRpcPort() + " -c " + getConfigId();
+ return "exec $ROOT/sbin/vespa-slobrok -N -p " + getRpcPort() + " -c " + getConfigId();
}
@Override
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/ZooKeepersConfigProvider.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/ZooKeepersConfigProvider.java
index 9d8a9707d12..1918fc529f2 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/ZooKeepersConfigProvider.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/ZooKeepersConfigProvider.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin;
import com.yahoo.collections.CollectionUtil;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerCluster.java
index e72f74829d3..6e6f027b520 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerCluster.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.clustercontroller;
import com.google.common.base.Joiner;
@@ -16,6 +16,7 @@ import com.yahoo.vespa.model.container.Container;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
@@ -78,17 +79,19 @@ public class ClusterControllerCluster extends AbstractConfigProducer<ClusterCont
@Override
public void validate() {
- assert(containerCluster != null);
+ Objects.requireNonNull(containerCluster);
for (Container c1 : containerCluster.getContainers()) {
assert(c1 instanceof ClusterControllerContainer);
for (Service service : c1.getHostResource().getServices()) {
if (service instanceof Configserver) {
- throw new IllegalArgumentException("Error validating cluster controller cluster: cluster controller '" + c1.getConfigId() + "' is set to run on the same host as a configserver");
+ throw new IllegalArgumentException("Error validating cluster controller cluster: cluster controller '" +
+ c1.getConfigId() + "' is set to run on the same host as a configserver");
}
}
for (Container c2 : containerCluster.getContainers()) {
if (c1 != c2 && c1.getHostName().equals(c2.getHostName())) {
- throw new IllegalArgumentException("Error validating cluster controller cluster: cluster controllers '" + c1.getConfigId() + "' and '" + c2.getConfigId() + "' share the same host");
+ throw new IllegalArgumentException("Error validating cluster controller cluster: cluster controllers '" +
+ c1.getConfigId() + "' and '" + c2.getConfigId() + "' share the same host");
}
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerComponent.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerComponent.java
index bfda3fe60d3..240c776d93c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerComponent.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerComponent.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.clustercontroller;
import com.yahoo.component.ComponentSpecification;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerConfigurer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerConfigurer.java
index 841f2d679b2..d63301a9668 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerConfigurer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerConfigurer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.clustercontroller;
import com.yahoo.component.ComponentSpecification;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java
index ed1dc80d71d..8cdeda0e85f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.clustercontroller;
import com.yahoo.cloud.config.ZookeeperServerConfig;
@@ -23,7 +23,7 @@ import com.yahoo.vespa.model.container.component.Handler;
import com.yahoo.vespa.model.container.component.SimpleComponent;
import com.yahoo.vespa.model.container.component.SystemBindingPattern;
import com.yahoo.vespa.model.container.xml.ContainerModelBuilder;
-import com.yahoo.vespa.model.container.xml.PlatformBundles;
+import com.yahoo.vespa.model.container.PlatformBundles;
import java.util.Set;
import java.util.TreeSet;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainerCluster.java
index dbff597b251..728e46f2ff7 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainerCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainerCluster.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.clustercontroller;
import com.yahoo.config.model.api.Reindexing;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ReindexingContext.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ReindexingContext.java
index 026c0b93712..899751f39ee 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ReindexingContext.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ReindexingContext.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.clustercontroller;
import com.yahoo.config.model.api.Reindexing;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/package-info.java
index 834ae9a16eb..fe0541157b7 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/package-info.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.model.admin.clustercontroller;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/ConsumersConfigGenerator.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/ConsumersConfigGenerator.java
index b0ed04f3013..f7effbc3bc7 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/ConsumersConfigGenerator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/ConsumersConfigGenerator.java
@@ -3,6 +3,7 @@
package com.yahoo.vespa.model.admin.metricsproxy;
import ai.vespa.metricsproxy.core.ConsumersConfig.Consumer;
+import com.yahoo.config.provision.SystemName;
import com.yahoo.vespa.model.admin.monitoring.Metric;
import com.yahoo.vespa.model.admin.monitoring.MetricSet;
import com.yahoo.vespa.model.admin.monitoring.MetricsConsumer;
@@ -24,7 +25,8 @@ class ConsumersConfigGenerator {
* @return a list of consumer builders (a mapping from consumer to its metrics)
*/
static List<Consumer.Builder> generateConsumers(MetricsConsumer defaultConsumer,
- Map<String, MetricsConsumer> userConsumers) {
+ Map<String, MetricsConsumer> userConsumers,
+ SystemName systemName) {
// Normally, the user given consumers should not contain VESPA_CONSUMER_ID,
// but it's allowed for some internally used applications.
var allConsumers = new LinkedHashMap<>(userConsumers);
@@ -32,6 +34,9 @@ class ConsumersConfigGenerator {
combineConsumers(defaultConsumer, allConsumers.get(MetricsConsumer.vespa.id())));
allConsumers.put(MetricsConsumer.autoscaling.id(), MetricsConsumer.autoscaling);
+ if (systemName.isPublic())
+ allConsumers.put(MetricsConsumer.vespaCloud.id(), MetricsConsumer.vespaCloud);
+
return allConsumers.values().stream()
.map(ConsumersConfigGenerator::toConsumerBuilder)
.collect(Collectors.toList());
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java
index 9dec27e17fe..88d224863c6 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.metricsproxy;
@@ -20,6 +20,7 @@ import com.yahoo.search.config.QrStartConfig;
import com.yahoo.vespa.model.HostResource;
import com.yahoo.vespa.model.PortAllocBridge;
import com.yahoo.vespa.model.container.Container;
+import com.yahoo.vespa.model.container.component.AccessLogComponent;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -57,6 +58,10 @@ public class MetricsProxyContainer extends Container implements
setProp("clustertype", "admin");
setProp("index", String.valueOf(index));
addNodeSpecificComponents();
+ addComponent(new AccessLogComponent(containerCluster().orElse(null), AccessLogComponent.AccessLogType.jsonAccessLog,
+ AccessLogComponent.CompressionType.ZSTD,
+ "metrics-proxy",
+ deployState.isHosted()));
}
private void addNodeSpecificComponents() {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java
index e504bee0a30..14ead1cdece 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java
@@ -38,7 +38,7 @@ import com.yahoo.vespa.model.admin.monitoring.Monitoring;
import com.yahoo.vespa.model.container.ContainerCluster;
import com.yahoo.vespa.model.container.component.Handler;
import com.yahoo.vespa.model.container.component.SystemBindingPattern;
-import com.yahoo.vespa.model.container.xml.PlatformBundles;
+import com.yahoo.vespa.model.container.PlatformBundles;
import java.nio.file.Path;
import java.util.Collections;
@@ -158,7 +158,7 @@ public class MetricsProxyContainerCluster extends ContainerCluster<MetricsProxyC
@Override
public void getConfig(ConsumersConfig.Builder builder) {
var amendedVespaConsumer = addMetrics(MetricsConsumer.vespa, getAdditionalDefaultMetrics().getMetrics());
- builder.consumer.addAll(generateConsumers(amendedVespaConsumer, getUserMetricsConsumers()));
+ builder.consumer.addAll(generateConsumers(amendedVespaConsumer, getUserMetricsConsumers(), getZone().system()));
builder.consumer.add(toConsumerBuilder(MetricsConsumer.defaultConsumer));
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/AutoscalingMetrics.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/AutoscalingMetrics.java
index e2aa325c380..50f3a21a4fb 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/AutoscalingMetrics.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/AutoscalingMetrics.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.monitoring;
import java.util.ArrayList;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/CloudWatch.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/CloudWatch.java
index d41b08cda5a..9d4e732d3f8 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/CloudWatch.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/CloudWatch.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.monitoring;
import java.util.Optional;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultMonitoring.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultMonitoring.java
index e53f92822b5..2c0ecbe9378 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultMonitoring.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultMonitoring.java
@@ -1,7 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.monitoring;
import java.util.Objects;
+import java.util.Optional;
/**
* Monitoring service properties
@@ -10,14 +11,21 @@ import java.util.Objects;
*/
public class DefaultMonitoring implements Monitoring {
+ public static final int DEFAULT_MONITORING_INTERVAL = 1; // in minutes
+ private static final String DEFAULT_MONITORING_CLUSTER_NAME = "vespa";
+
private final Integer interval;
private final String clustername;
- public DefaultMonitoring(String clustername, Integer interval) {
+ public DefaultMonitoring() {
+ this(DEFAULT_MONITORING_CLUSTER_NAME, Optional.empty());
+ }
+
+ public DefaultMonitoring(String clustername, Optional<Integer> interval) {
Objects.requireNonNull(clustername);
Objects.requireNonNull(interval);
this.clustername = clustername;
- this.interval = interval;
+ this.interval = interval.orElse(DEFAULT_MONITORING_INTERVAL);
}
@Override
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultVespaMetrics.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultVespaMetrics.java
index 4aa2a4d2aad..acea38746ea 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultVespaMetrics.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/DefaultVespaMetrics.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.monitoring;
import com.google.common.collect.ImmutableSet;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/Metric.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/Metric.java
index 2e3440e49ab..e5e5a30e34f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/Metric.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/Metric.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.monitoring;
import javax.annotation.concurrent.Immutable;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricSet.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricSet.java
index 9c969d4f11e..cd6035204e2 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricSet.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricSet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.monitoring;
import javax.annotation.concurrent.Immutable;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricsConsumer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricsConsumer.java
index 6344e462e0f..671a90a0fee 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricsConsumer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/MetricsConsumer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.monitoring;
import ai.vespa.metricsproxy.core.VespaMetrics;
@@ -35,6 +35,8 @@ public class MetricsConsumer {
// Referenced from com.yahoo.vespa.hosted.provision.autoscale.NodeMetricsFetcher
public static final MetricsConsumer autoscaling =
consumer("autoscaling", autoscalingMetricSet);
+ public static final MetricsConsumer vespaCloud =
+ consumer("vespa-cloud", vespaMetricSet, systemMetricSet, networkMetricSet);
private final String id;
private final MetricSet metricSet;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/Monitoring.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/Monitoring.java
index bba08cccd68..092547d9557 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/Monitoring.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/Monitoring.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.monitoring;
/**
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/NetworkMetrics.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/NetworkMetrics.java
index 7f91a19277c..4b905f35eab 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/NetworkMetrics.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/NetworkMetrics.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.monitoring;
import com.google.common.collect.ImmutableSet;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/SystemMetrics.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/SystemMetrics.java
index c05cad89852..7f52dce6356 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/SystemMetrics.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/SystemMetrics.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.monitoring;
import com.google.common.collect.ImmutableSet;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java
index 65b70bdce33..b1cdb13fe57 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.monitoring;
import java.util.Collections;
@@ -77,6 +77,9 @@ public class VespaMetricSet {
// C++ Fnet metrics
metrics.add(new Metric("vds.server.fnet.num-connections"));
+ // Node certificate
+ metrics.add(new Metric("node-certificate.expiry.seconds"));
+
return metrics;
}
@@ -181,6 +184,7 @@ public class VespaMetricSet {
metrics.add(new Metric("jdisc.deactivated_containers.with_retained_refs.last"));
metrics.add(new Metric("athenz-tenant-cert.expiry.seconds.last"));
+ metrics.add(new Metric("container-iam-role.expiry.seconds"));
metrics.add(new Metric("jdisc.http.request.prematurely_closed.rate"));
addMetric(metrics, "jdisc.http.request.requests_per_connection", List.of("sum", "count", "min", "max", "average"));
@@ -322,7 +326,7 @@ public class VespaMetricSet {
metrics.add(new Metric("documents_total.count"));
metrics.add(new Metric("dispatch_internal.rate"));
metrics.add(new Metric("dispatch_fdispatch.rate"));
- addMetric(metrics, "jdisc.search.render_latency", Set.of("min", "max", "count", "sum", "last"));
+ addMetric(metrics, "jdisc.render.latency", Set.of("min", "max", "count", "sum", "last", "average"));
metrics.add(new Metric("totalhits_per_query.max"));
metrics.add(new Metric("totalhits_per_query.sum"));
@@ -471,8 +475,7 @@ public class VespaMetricSet {
metrics.add(new Metric("content.proton.resource_usage.open_file_descriptors.max"));
metrics.add(new Metric("content.proton.resource_usage.feeding_blocked.max"));
metrics.add(new Metric("content.proton.resource_usage.malloc_arena.max"));
- metrics.add(new Metric("content.proton.documentdb.attribute.resource_usage.enum_store.average"));
- metrics.add(new Metric("content.proton.documentdb.attribute.resource_usage.multi_value.average"));
+ metrics.add(new Metric("content.proton.documentdb.attribute.resource_usage.address_space.max"));
metrics.add(new Metric("content.proton.documentdb.attribute.resource_usage.feeding_blocked.last")); // TODO: Remove in Vespa 8
metrics.add(new Metric("content.proton.documentdb.attribute.resource_usage.feeding_blocked.max"));
@@ -705,6 +708,10 @@ public class VespaMetricSet {
metrics.add(new Metric("vds.idealstate.buckets_toomanycopies.average"));
metrics.add(new Metric("vds.idealstate.buckets.average"));
metrics.add(new Metric("vds.idealstate.buckets_notrusted.average"));
+ metrics.add(new Metric("vds.idealstate.bucket_replicas_moving_out.average"));
+ metrics.add(new Metric("vds.idealstate.bucket_replicas_copying_out.average"));
+ metrics.add(new Metric("vds.idealstate.bucket_replicas_copying_in.average"));
+ metrics.add(new Metric("vds.idealstate.bucket_replicas_syncing.average"));
metrics.add(new Metric("vds.idealstate.delete_bucket.done_ok.rate"));
metrics.add(new Metric("vds.idealstate.delete_bucket.done_failed.rate"));
metrics.add(new Metric("vds.idealstate.delete_bucket.pending.average"));
@@ -781,6 +788,8 @@ public class VespaMetricSet {
metrics.add(new Metric("vds.mergethrottler.bounced_due_to_back_pressure.rate"));
metrics.add(new Metric("vds.mergethrottler.locallyexecutedmerges.ok.rate"));
metrics.add(new Metric("vds.mergethrottler.mergechains.ok.rate"));
+ metrics.add(new Metric("vds.mergethrottler.mergechains.failures.busy.rate"));
+ metrics.add(new Metric("vds.mergethrottler.mergechains.failures.total.rate"));
return metrics;
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/Metrics.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/Metrics.java
index 6f9e9a08aa6..5e76311dce3 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/Metrics.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/Metrics.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.monitoring.builder;
import com.yahoo.vespa.model.admin.monitoring.MetricsConsumer;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/PredefinedMetricSets.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/PredefinedMetricSets.java
index dd514f1e245..597a2da0f2c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/PredefinedMetricSets.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/PredefinedMetricSets.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.monitoring.builder;
import com.yahoo.vespa.model.admin.monitoring.MetricSet;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/CloudWatchBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/CloudWatchBuilder.java
index 2b2b6593dd3..ada4cb76d8e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/CloudWatchBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/CloudWatchBuilder.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.monitoring.builder.xml;
import com.yahoo.vespa.model.admin.monitoring.CloudWatch;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/MetricsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/MetricsBuilder.java
index 3efc50a7445..cfd2ebb2fd1 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/MetricsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/builder/xml/MetricsBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.monitoring.builder.xml;
import com.yahoo.config.model.ConfigModelContext.ApplicationType;
@@ -92,6 +92,9 @@ public class MetricsBuilder {
if (consumerId.equalsIgnoreCase(MetricsConsumer.autoscaling.id()))
throw new IllegalArgumentException("'" + MetricsConsumer.autoscaling.id() + " is not allowed as metrics consumer id (case is ignored.)");
+ if (consumerId.equalsIgnoreCase(MetricsConsumer.vespaCloud.id()))
+ throw new IllegalArgumentException("'" + MetricsConsumer.vespaCloud.id() + " is not allowed as metrics consumer id (case is ignored.)");
+
if (metrics.hasConsumerIgnoreCase(consumerId))
throw new IllegalArgumentException("'" + consumerId + "' is used as id for two metrics consumers (case is ignored.)");
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/package-info.java
index f09cb20152f..cc0f35eff95 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/package-info.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Provides the classes for the admin components of the Vespa config
* model.
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/AwsAccessControlValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/AwsAccessControlValidator.java
index c5615924a8e..e5c8a27debf 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/AwsAccessControlValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/AwsAccessControlValidator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/CloudWatchValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/CloudWatchValidator.java
index a0835ab9b3f..67be9d7bad8 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/CloudWatchValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/CloudWatchValidator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.model.ConfigModelContext;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ComplexAttributeFieldsValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ComplexAttributeFieldsValidator.java
index 4cc8439566e..cb9472568e5 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ComplexAttributeFieldsValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ComplexAttributeFieldsValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.model.deploy.DeployState;
@@ -48,7 +48,8 @@ public class ComplexAttributeFieldsValidator extends Validator {
if (!unsupportedFields.isEmpty()) {
throw new IllegalArgumentException(
String.format("For cluster '%s', search '%s': The following complex fields do not support using struct field attributes: %s. " +
- "Only supported for the following complex field types: array or map of struct with primitive types, map of primitive types",
+ "Only supported for the following complex field types: array or map of struct with primitive types, map of primitive types. " +
+ "The supported primitive types are: byte, int, long, float, double and string",
clusterName, search.getName(), unsupportedFields));
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ComponentValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ComponentValidator.java
index 6d2295684dc..21e396959a7 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ComponentValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ComponentValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.application.api.ApplicationPackage;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ConstantTensorJsonValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ConstantTensorJsonValidator.java
index 75e6922ad15..ef0a8ddda8e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ConstantTensorJsonValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ConstantTensorJsonValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.fasterxml.jackson.core.JsonFactory;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/DeploymentSpecValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/DeploymentSpecValidator.java
index d5bea2a2959..0193eacba3a 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/DeploymentSpecValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/DeploymentSpecValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.application.api.DeploymentInstanceSpec;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/NoPrefixForIndexes.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/NoPrefixForIndexes.java
index a3d2cbcebeb..c8558b70b6e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/NoPrefixForIndexes.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/NoPrefixForIndexes.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/QuotaValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/QuotaValidator.java
index d22affaf5a3..10d97cbb58c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/QuotaValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/QuotaValidator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.model.deploy.DeployState;
@@ -93,7 +93,8 @@ public class QuotaValidator extends Validator {
private void throwIfBudgetExceeded(double spend, BigDecimal budget, SystemName systemName) {
if (budget.doubleValue() < spend) {
- throwBudgetException("Please free up some capacity! This deployment's quota use ($%.2f) exceeds reserved quota ($%.2f)!", spend, budget, systemName);
+ throw new IllegalArgumentException((systemName.equals(SystemName.Public) ? "" : systemName.value() + ": ") +
+ "Deployment would make your tenant exceed its quota and has been blocked! Please contact support to update your plan.");
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankSetupValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankSetupValidator.java
index 52dccbe96b5..8aab07a27ad 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankSetupValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankSetupValidator.java
@@ -1,34 +1,34 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.cloud.config.ConfigserverConfig;
+import com.yahoo.collections.Pair;
+import com.yahoo.config.ConfigInstance;
+import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.io.IOUtils;
import com.yahoo.log.InvalidLogFormatException;
import com.yahoo.log.LogMessage;
-import com.yahoo.path.Path;
+import com.yahoo.searchdefinition.DistributableResource;
import com.yahoo.searchdefinition.OnnxModel;
import com.yahoo.searchdefinition.RankExpressionBody;
-import com.yahoo.vespa.config.search.core.RankingExpressionsConfig;
-import com.yahoo.vespa.defaults.Defaults;
-import com.yahoo.yolean.Exceptions;
import com.yahoo.system.ProcessExecuter;
import com.yahoo.text.StringUtilities;
import com.yahoo.vespa.config.search.AttributesConfig;
-import com.yahoo.collections.Pair;
-import com.yahoo.config.ConfigInstance;
import com.yahoo.vespa.config.search.ImportedFieldsConfig;
import com.yahoo.vespa.config.search.IndexschemaConfig;
import com.yahoo.vespa.config.search.RankProfilesConfig;
-import com.yahoo.vespa.config.search.core.RankingConstantsConfig;
import com.yahoo.vespa.config.search.core.OnnxModelsConfig;
-import com.yahoo.config.application.api.DeployLogger;
-import com.yahoo.config.model.producer.AbstractConfigProducer;
+import com.yahoo.vespa.config.search.core.RankingConstantsConfig;
+import com.yahoo.vespa.config.search.core.RankingExpressionsConfig;
+import com.yahoo.vespa.defaults.Defaults;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.search.AbstractSearchCluster;
import com.yahoo.vespa.model.search.DocumentDatabase;
import com.yahoo.vespa.model.search.IndexedSearchCluster;
import com.yahoo.vespa.model.search.SearchCluster;
+import com.yahoo.yolean.Exceptions;
import java.io.File;
import java.io.IOException;
@@ -36,13 +36,14 @@ import java.nio.file.Files;
import java.nio.file.Paths;
import java.time.Duration;
import java.time.Instant;
-import java.util.logging.Logger;
-import java.util.logging.Level;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
/**
- * Validate rank setup for all search clusters (rank-profiles, index-schema, attributes configs), validating done
+ * Validates rank setup for all content clusters (rank-profiles, index-schema, attributes configs), validation is done
* by running the binary 'vespa-verify-ranksetup-bin'
*
* @author vegardh
@@ -69,17 +70,17 @@ public class RankSetupValidator extends Validator {
for (AbstractSearchCluster cluster : model.getSearchClusters()) {
// Skipping rank expression checking for streaming clusters, not implemented yet
- if (cluster.isRealtime()) {
- IndexedSearchCluster sc = (IndexedSearchCluster) cluster;
- String clusterDir = cfgDir.getAbsolutePath() + "/" + sc.getClusterName() + "/";
- for (DocumentDatabase docDb : sc.getDocumentDbs()) {
- final String name = docDb.getDerivedConfiguration().getSearch().getName();
- String searchDir = clusterDir + name + "/";
- writeConfigs(searchDir, docDb);
- writeExtraVerifyRanksetupConfig(searchDir, docDb);
- if ( ! validate("dir:" + searchDir, sc, name, deployState.getDeployLogger(), cfgDir)) {
- return;
- }
+ if (cluster.isStreaming()) continue;
+
+ IndexedSearchCluster sc = (IndexedSearchCluster) cluster;
+ String clusterDir = cfgDir.getAbsolutePath() + "/" + sc.getClusterName() + "/";
+ for (DocumentDatabase docDb : sc.getDocumentDbs()) {
+ final String name = docDb.getDerivedConfiguration().getSearch().getName();
+ String searchDir = clusterDir + name + "/";
+ writeConfigs(searchDir, docDb);
+ writeExtraVerifyRanksetupConfig(searchDir, docDb);
+ if (!validate("dir:" + searchDir, sc, name, deployState.getDeployLogger(), cfgDir)) {
+ return;
}
}
}
@@ -95,16 +96,13 @@ public class RankSetupValidator extends Validator {
private boolean validate(String configId, SearchCluster searchCluster, String sdName, DeployLogger deployLogger, File tempDir) {
Instant start = Instant.now();
try {
+ log.log(Level.FINE, () -> String.format("Validating schema '%s' for %s with config id %s", sdName, searchCluster, configId));
boolean ret = execValidate(configId, searchCluster, sdName, deployLogger);
if (!ret) {
// Give up, don't say same error msg repeatedly
deleteTempDir(tempDir);
}
- log.log(Level.FINE, () -> String.format("Validating %s for %s, %s took %s ms",
- sdName,
- searchCluster,
- configId,
- Duration.between(start, Instant.now()).toMillis()));
+ log.log(Level.FINE, () -> String.format("Validation took %s ms", Duration.between(start, Instant.now()).toMillis()));
return ret;
} catch (IllegalArgumentException e) {
deleteTempDir(tempDir);
@@ -119,68 +117,58 @@ public class RankSetupValidator extends Validator {
private void writeConfigs(String dir, AbstractConfigProducer<?> producer) throws IOException {
RankProfilesConfig.Builder rpcb = new RankProfilesConfig.Builder();
((RankProfilesConfig.Producer) producer).getConfig(rpcb);
- RankProfilesConfig rpc = new RankProfilesConfig(rpcb);
- writeConfig(dir, RankProfilesConfig.getDefName() + ".cfg", rpc);
+ writeConfig(dir, RankProfilesConfig.getDefName() + ".cfg", rpcb.build());
IndexschemaConfig.Builder iscb = new IndexschemaConfig.Builder();
((IndexschemaConfig.Producer) producer).getConfig(iscb);
- IndexschemaConfig isc = new IndexschemaConfig(iscb);
- writeConfig(dir, IndexschemaConfig.getDefName() + ".cfg", isc);
+ writeConfig(dir, IndexschemaConfig.getDefName() + ".cfg", iscb.build());
AttributesConfig.Builder acb = new AttributesConfig.Builder();
((AttributesConfig.Producer) producer).getConfig(acb);
- AttributesConfig ac = new AttributesConfig(acb);
- writeConfig(dir, AttributesConfig.getDefName() + ".cfg", ac);
+ writeConfig(dir, AttributesConfig.getDefName() + ".cfg", acb.build());
RankingConstantsConfig.Builder rccb = new RankingConstantsConfig.Builder();
((RankingConstantsConfig.Producer) producer).getConfig(rccb);
- RankingConstantsConfig rcc = new RankingConstantsConfig(rccb);
- writeConfig(dir, RankingConstantsConfig.getDefName() + ".cfg", rcc);
+ writeConfig(dir, RankingConstantsConfig.getDefName() + ".cfg", rccb.build());
RankingExpressionsConfig.Builder recb = new RankingExpressionsConfig.Builder();
((RankingExpressionsConfig.Producer) producer).getConfig(recb);
- RankingExpressionsConfig rec = new RankingExpressionsConfig(recb);
- writeConfig(dir, RankingExpressionsConfig.getDefName() + ".cfg", rec);
+ writeConfig(dir, RankingExpressionsConfig.getDefName() + ".cfg", recb.build());
OnnxModelsConfig.Builder omcb = new OnnxModelsConfig.Builder();
((OnnxModelsConfig.Producer) producer).getConfig(omcb);
- OnnxModelsConfig omc = new OnnxModelsConfig(omcb);
- writeConfig(dir, OnnxModelsConfig.getDefName() + ".cfg", omc);
+ writeConfig(dir, OnnxModelsConfig.getDefName() + ".cfg", omcb.build());
ImportedFieldsConfig.Builder ifcb = new ImportedFieldsConfig.Builder();
((ImportedFieldsConfig.Producer) producer).getConfig(ifcb);
- ImportedFieldsConfig ifc = new ImportedFieldsConfig(ifcb);
- writeConfig(dir, ImportedFieldsConfig.getDefName() + ".cfg", ifc);
+ writeConfig(dir, ImportedFieldsConfig.getDefName() + ".cfg", ifcb.build());
}
- private void writeExtraVerifyRanksetupConfig(String dir, DocumentDatabase db) throws IOException {
- String configName = "verify-ranksetup.cfg";
- String configContent = "";
+ private void writeExtraVerifyRanksetupConfig(List<String> config, Collection<? extends DistributableResource> resources) {
+ for (DistributableResource model : resources) {
+ String modelPath = getFileRepositoryPath(model.getFilePath().getName(), model.getFileReference());
+ int index = config.size() / 2;
+ config.add(String.format("file[%d].ref \"%s\"", index, model.getFileReference()));
+ config.add(String.format("file[%d].path \"%s\"", index, modelPath));
+ log.log(Level.FINE, index + ": " + model.getPathType() + " -> " + model.getName() + " -> " + modelPath + " -> " + model.getFileReference());
+ }
+ }
+ private void writeExtraVerifyRanksetupConfig(String dir, DocumentDatabase db) throws IOException {
List<String> config = new ArrayList<>();
- // Assist verify-ranksetup in finding the actual ONNX model files
- for (OnnxModel model : db.getDerivedConfiguration().getSearch().onnxModels().asMap().values()) {
- String modelPath = getFileRepositoryPath(model.getFilePath(), model.getFileReference());
- config.add(String.format("file[%d].ref \"%s\"", config.size() / 2, model.getFileReference()));
- config.add(String.format("file[%d].path \"%s\"", config.size() / 2, modelPath));
- }
- for (RankExpressionBody expr : db.getDerivedConfiguration().getSearch().rankExpressionFiles().asMap().values()) {
- String modelPath = getFileRepositoryPath(expr.getFilePath(), expr.getFileReference());
- config.add(String.format("file[%d].ref \"%s\"", config.size() / 2, expr.getFileReference()));
- config.add(String.format("file[%d].path \"%s\"", config.size() / 2, modelPath));
- }
+ // Assist verify-ranksetup in finding the actual ONNX model files
+ writeExtraVerifyRanksetupConfig(config, db.getDerivedConfiguration().getSearch().onnxModels().asMap().values());
+ writeExtraVerifyRanksetupConfig(config, db.getDerivedConfiguration().getSearch().rankExpressionFiles().asMap().values());
- if ( ! config.isEmpty() ) {
- configContent = StringUtilities.implodeMultiline(config);
- }
- IOUtils.writeFile(dir + configName, configContent, false);
+ String configContent = config.isEmpty() ? "" : StringUtilities.implodeMultiline(config);
+ IOUtils.writeFile(dir + "verify-ranksetup.cfg", configContent, false);
}
- public static String getFileRepositoryPath(Path path, String fileReference) {
+ public static String getFileRepositoryPath(String name, String fileReference) {
ConfigserverConfig cfg = new ConfigserverConfig(new ConfigserverConfig.Builder()); // assume defaults
String fileRefDir = Defaults.getDefaults().underVespaHome(cfg.fileReferencesDir());
- return Paths.get(fileRefDir, fileReference, path.getName()).toString();
+ return Paths.get(fileRefDir, fileReference, name).toString();
}
private static void writeConfig(String dir, String configName, ConfigInstance config) throws IOException {
@@ -203,14 +191,15 @@ public class RankSetupValidator extends Validator {
}
private void validateWarn(Exception e, DeployLogger deployLogger) {
- String msg = "Unable to execute '"+ binaryName + "', validation of rank expressions will only take place when you start Vespa: " +
- Exceptions.toMessageString(e);
+ String msg = "Unable to execute '" + binaryName +
+ "', validation of rank expressions will only take place when you start Vespa: " +
+ Exceptions.toMessageString(e);
deployLogger.logApplicationPackage(Level.WARNING, msg);
}
private void validateFail(String output, SearchCluster sc, String sdName, DeployLogger deployLogger) {
- StringBuilder errMsg = new StringBuilder("For search cluster '").append(sc.getClusterName()).append("', ")
- .append("search definition '").append(sdName).append("': error in rank setup. Details:\n");
+ StringBuilder errMsg = new StringBuilder("Error in rank setup in schema '").append(sdName)
+ .append("' for content cluster '").append(sc.getClusterName()).append("'.").append(" Details:\n");
for (String line : output.split("\n")) {
// Remove debug lines from start script
if (line.startsWith("debug\t")) continue;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidator.java
index cf8a9201668..e9b23461527 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.application.api.ApplicationFile;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RestartConfigs.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RestartConfigs.java
index 62e80586dc2..9612771aefc 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RestartConfigs.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RestartConfigs.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.ConfigInstance;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RoutingSelectorValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RoutingSelectorValidator.java
index 4d14aaa9b5e..8f9a604f65f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RoutingSelectorValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RoutingSelectorValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RoutingValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RoutingValidator.java
index 52740a7b805..73da37d0048 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RoutingValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RoutingValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/SchemasDirValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/SchemasDirValidator.java
index ffcad391e57..577bebc34d3 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/SchemasDirValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/SchemasDirValidator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.application.api.ApplicationFile;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/SearchDataTypeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/SearchDataTypeValidator.java
index 031ce0dbdd4..14f5c345025 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/SearchDataTypeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/SearchDataTypeValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/SecretStoreValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/SecretStoreValidator.java
index b57d2841a98..ffa90112d6c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/SecretStoreValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/SecretStoreValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.model.ConfigModelContext.ApplicationType;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/StreamingValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/StreamingValidator.java
index 0afebbb6e40..f27efe07941 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/StreamingValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/StreamingValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/UriBindingsValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/UriBindingsValidator.java
index 78ee4f4f1c8..4f322578b1c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/UriBindingsValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/UriBindingsValidator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java
index d59ad5f6252..5215fdcb301 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ValidationOverridesValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ValidationOverridesValidator.java
index 955d7924f86..a4780f24d12 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ValidationOverridesValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ValidationOverridesValidator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.application.api.ValidationOverrides;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validator.java
index fee63828670..99650e32731 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ChangeValidator.java
index 4222d22563d..772b6a37b02 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ChangeValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.model.api.ConfigChangeAction;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ClusterSizeReductionValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ClusterSizeReductionValidator.java
index f223ba69f61..25a570e44a2 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ClusterSizeReductionValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ClusterSizeReductionValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.model.api.ConfigChangeAction;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidator.java
index 021055b8867..9360c6e707b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.ChangesRequiringRestart;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidator.java
index 4f9ffc95ab0..7ee5fe8edf6 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.model.api.ConfigChangeAction;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidator.java
index 4a43a30c167..c33b349ced7 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.model.api.ConfigChangeAction;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidator.java
index f3a018f2cdd..0c39cb02bec 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/GlobalDocumentChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/GlobalDocumentChangeValidator.java
index 0b3f865c760..43b5e646cc5 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/GlobalDocumentChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/GlobalDocumentChangeValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexedSearchClusterChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexedSearchClusterChangeValidator.java
index 2fbf4359121..a43c5b71903 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexedSearchClusterChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexedSearchClusterChangeValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.model.api.ConfigChangeAction;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidator.java
index b83c345efd3..30abb9b445f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/NodeResourceChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/NodeResourceChangeValidator.java
index 0add9f243fe..ebf56a0e41c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/NodeResourceChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/NodeResourceChangeValidator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationOverrides;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RedundancyIncreaseValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RedundancyIncreaseValidator.java
index dcf16222d35..e1e5490af7f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RedundancyIncreaseValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RedundancyIncreaseValidator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidator.java
index 54ce869eba1..41710181706 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.model.api.ConfigChangeAction;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StreamingSearchClusterChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StreamingSearchClusterChangeValidator.java
index 2f13caa4e09..11aab9f555b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StreamingSearchClusterChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StreamingSearchClusterChangeValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationOverrides;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaConfigChangeAction.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaConfigChangeAction.java
index 96c1a6a7b09..9914bfe1ca1 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaConfigChangeAction.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaConfigChangeAction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.model.api.ConfigChangeAction;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaRefeedAction.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaRefeedAction.java
index 6a335447a31..7455bab7700 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaRefeedAction.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaRefeedAction.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaReindexAction.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaReindexAction.java
index c2d23844687..6de883bd1ca 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaReindexAction.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaReindexAction.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaRestartAction.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaRestartAction.java
index 69cd022d939..9fdab1f4212 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaRestartAction.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaRestartAction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.model.api.ConfigChangeRestartAction;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidator.java
index 7a17fe5e80a..431bca3fb5a 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change.search;
import com.yahoo.config.provision.ClusterSpec;
@@ -105,6 +105,7 @@ public class AttributeChangeValidator {
validateAttributeSetting(id, currAttr, nextAttr, AttributeChangeValidator::extractDictionaryType, "dictionary: btree/hash", result);
validateAttributeSetting(id, currAttr, nextAttr, AttributeChangeValidator::extractDictionaryCase, "dictionary: cased/uncased", result);
validateAttributeSetting(id, currAttr, nextAttr, Attribute::isHuge, "huge", result);
+ validateAttributeSetting(id, currAttr, nextAttr, Attribute::isPaged, "paged", result);
validateAttributeSetting(id, currAttr, nextAttr, Attribute::densePostingListThreshold, "dense-posting-list-threshold", result);
validateAttributeSetting(id, currAttr, nextAttr, Attribute::isEnabledOnlyBitVector, "rank: filter", result);
validateAttributeSetting(id, currAttr, nextAttr, Attribute::distanceMetric, "distance-metric", result);
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/ChangeMessageBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/ChangeMessageBuilder.java
index 09126d62390..ba0e0717c07 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/ChangeMessageBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/ChangeMessageBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change.search;
import java.util.ArrayList;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/DocumentDatabaseChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/DocumentDatabaseChangeValidator.java
index 5596169958a..be2f49085b2 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/DocumentDatabaseChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/DocumentDatabaseChangeValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change.search;
import com.yahoo.config.provision.ClusterSpec;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/DocumentTypeChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/DocumentTypeChangeValidator.java
index 5b7fdfad0f7..c8e65f508c2 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/DocumentTypeChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/DocumentTypeChangeValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change.search;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeMessageBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeMessageBuilder.java
index 049e71be23c..ba776bb13a1 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeMessageBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeMessageBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change.search;
import com.yahoo.searchdefinition.Search;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidator.java
index 20872bcf326..699a63cdd9f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change.search;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/StructFieldAttributeChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/StructFieldAttributeChangeValidator.java
index a86277dded8..acb404a051b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/StructFieldAttributeChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/StructFieldAttributeChangeValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change.search;
import com.yahoo.config.application.api.ValidationOverrides;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/first/AccessControlOnFirstDeploymentValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/first/AccessControlOnFirstDeploymentValidator.java
index df5fe15ca82..a64f93a046a 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/first/AccessControlOnFirstDeploymentValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/first/AccessControlOnFirstDeploymentValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.first;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/first/RedundancyOnFirstDeploymentValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/first/RedundancyOnFirstDeploymentValidator.java
index e6117299269..636a3f44369 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/first/RedundancyOnFirstDeploymentValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/first/RedundancyOnFirstDeploymentValidator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.first;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/package-info.java
index 3580149b681..5b7728c67fb 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/package-info.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.model.application.validation;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/UserConfigBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/UserConfigBuilder.java
index 4606d9aa885..e5cbb169b0c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/UserConfigBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/UserConfigBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder;
import com.yahoo.config.model.deploy.ConfigDefinitionStore;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/VespaModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/VespaModelBuilder.java
index d1062b9dfb5..ff41a700230 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/VespaModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/VespaModelBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/BinaryScaledAmountParser.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/BinaryScaledAmountParser.java
index 5f858467f7c..b163f9f0699 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/BinaryScaledAmountParser.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/BinaryScaledAmountParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.binaryprefix.BinaryPrefix;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/BinaryUnit.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/BinaryUnit.java
index b30f44bfdb1..1317f96e109 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/BinaryUnit.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/BinaryUnit.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import java.util.regex.Matcher;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java
index 963d2dde7fc..56f462805bd 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java
@@ -1,8 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.config.application.api.DeployLogger;
-import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.config.model.ConfigModelContext.ApplicationType;
import com.yahoo.config.model.api.ConfigServerSpec;
import com.yahoo.config.model.deploy.DeployState;
@@ -20,11 +19,11 @@ import com.yahoo.vespa.model.admin.monitoring.Monitoring;
import com.yahoo.vespa.model.admin.monitoring.builder.Metrics;
import com.yahoo.vespa.model.admin.monitoring.builder.PredefinedMetricSets;
import com.yahoo.vespa.model.admin.monitoring.builder.xml.MetricsBuilder;
-import com.yahoo.vespa.model.filedistribution.FileDistributionConfigProducer;
import org.w3c.dom.Element;
import java.util.ArrayList;
import java.util.List;
+import java.util.Optional;
/**
* A base class for admin model builders, to support common functionality across versions.
@@ -34,20 +33,14 @@ import java.util.List;
*/
public abstract class DomAdminBuilderBase extends VespaDomBuilder.DomConfigProducerBuilder<Admin> {
- private static final int DEFAULT_INTERVAL = 1; // in minutes
- private static final String DEFAULT_CLUSTER_NAME = "vespa";
-
private final ApplicationType applicationType;
protected final List<ConfigServerSpec> configServerSpecs;
- private final FileRegistry fileRegistry;
protected final boolean multitenant;
DomAdminBuilderBase(ApplicationType applicationType,
- FileRegistry fileRegistry,
boolean multitenant,
List<ConfigServerSpec> configServerSpecs) {
this.applicationType = applicationType;
- this.fileRegistry = fileRegistry;
this.multitenant = multitenant;
this.configServerSpecs = configServerSpecs;
}
@@ -68,48 +61,41 @@ public abstract class DomAdminBuilderBase extends VespaDomBuilder.DomConfigProdu
}
@Override
- protected Admin doBuild(DeployState deployState, AbstractConfigProducer parent, Element adminElement) {
+ protected Admin doBuild(DeployState deployState, AbstractConfigProducer<?> parent, Element adminElement) {
Monitoring monitoring = getMonitoring(XML.getChild(adminElement,"monitoring"), deployState.isHosted());
Metrics metrics = new MetricsBuilder(applicationType, PredefinedMetricSets.get())
.buildMetrics(XML.getChild(adminElement, "metrics"));
- FileDistributionConfigProducer fileDistributionConfigProducer = getFileDistributionConfigProducer(parent, deployState.isHosted());
-
- Admin admin = new Admin(parent, monitoring, metrics, multitenant, fileDistributionConfigProducer, deployState.isHosted());
- admin.setApplicationType(applicationType);
+ Admin admin = new Admin(parent, monitoring, metrics, multitenant, deployState.isHosted(), applicationType);
doBuildAdmin(deployState, admin, adminElement);
new ModelConfigProvider(admin);
return admin;
}
- private FileDistributionConfigProducer getFileDistributionConfigProducer(AbstractConfigProducer parent, boolean isHosted) {
- return new FileDistributionConfigProducer(parent, fileRegistry, configServerSpecs, isHosted);
- }
-
protected abstract void doBuildAdmin(DeployState deployState, Admin admin, Element adminE);
private Monitoring getMonitoring(Element monitoringElement, boolean isHosted) {
- if (monitoringElement == null) return new DefaultMonitoring(DEFAULT_CLUSTER_NAME, DEFAULT_INTERVAL);
+ if (monitoringElement == null) return new DefaultMonitoring();
+
if (isHosted && applicationType.equals(ApplicationType.DEFAULT))
throw new IllegalArgumentException("The 'monitoring' element cannot be used on hosted Vespa.");
- Integer minutes = getMonitoringInterval(monitoringElement);
- if (minutes == null)
- minutes = DEFAULT_INTERVAL;
+ Optional<Integer> minutes = getMonitoringInterval(monitoringElement);
return new DefaultMonitoring(monitoringElement.getAttribute("systemname"), minutes);
}
- private Integer getMonitoringInterval(Element monitoringE) {
- Integer minutes = null;
+ private Optional<Integer> getMonitoringInterval(Element monitoringE) {
String seconds = monitoringE.getAttribute("interval").trim();
if ( ! seconds.isEmpty()) {
- minutes = Integer.parseInt(seconds) / 60;
- if (!(minutes == 1 || minutes == 5)) {
- throw new IllegalArgumentException("The only allowed values for 'interval' attribute in '" + monitoringE.getTagName() +
- "' element is 60 or 300.");
+ int m = Integer.parseInt(seconds) / 60;
+ if ( ! List.of(1, 5).contains(m)) {
+ throw new IllegalArgumentException("The only allowed values for 'interval' attribute in '" +
+ monitoringE.getTagName() + "' element is 60 or 300.");
}
+ return Optional.of(m);
}
- return minutes;
+
+ return Optional.empty();
}
void addLogForwarders(ModelElement logForwardingElement, Admin admin) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java
index a1329b2a5b4..02d5bf719cf 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java
@@ -1,7 +1,6 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
-import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.config.model.ConfigModelContext;
import com.yahoo.config.model.api.ConfigServerSpec;
import com.yahoo.config.model.deploy.DeployState;
@@ -16,6 +15,7 @@ import com.yahoo.vespa.model.admin.clustercontroller.ClusterControllerCluster;
import com.yahoo.vespa.model.admin.clustercontroller.ClusterControllerContainer;
import com.yahoo.vespa.model.admin.clustercontroller.ClusterControllerContainerCluster;
import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder.DomConfigProducerBuilder;
+import com.yahoo.vespa.model.container.Container;
import org.w3c.dom.Element;
import java.util.ArrayList;
@@ -33,10 +33,9 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
private static final String ATTRIBUTE_CLUSTER_CONTROLLER_STANDALONE_ZK = "standalone-zookeeper";
public DomAdminV2Builder(ConfigModelContext.ApplicationType applicationType,
- FileRegistry fileRegistry,
boolean multitenant,
List<ConfigServerSpec> configServerSpecs) {
- super(applicationType, fileRegistry, multitenant, configServerSpecs);
+ super(applicationType, multitenant, configServerSpecs);
}
@Override
@@ -46,8 +45,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
admin.addConfigservers(configservers);
admin.addSlobroks(getSlobroks(deployState, admin, XML.getChild(adminE, "slobroks")));
if ( ! admin.multitenant())
- admin.setClusterControllers(addConfiguredClusterControllers(deployState, admin, adminE),
- deployState.getDeployLogger());
+ admin.setClusterControllers(addConfiguredClusterControllers(deployState, admin, adminE), deployState);
ModelElement adminElement = new ModelElement(adminE);
addLogForwarders(adminElement.child("logforwarding"), admin);
@@ -59,16 +57,17 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
private List<Configserver> parseConfigservers(DeployState deployState, Admin admin, Element adminE) {
List<Configserver> configservers;
- if (multitenant) {
+ if (multitenant)
configservers = getConfigServersFromSpec(deployState.getDeployLogger(), admin);
- } else {
+ else
configservers = getConfigServers(deployState, admin, adminE);
- }
- int count = configservers.size();
- if (count % 2 == 0) {
- deployState.getDeployLogger().logApplicationPackage(Level.WARNING, "An even number (" + count + ") of config servers have been configured. " +
- "This is discouraged, see doc for configuration server ");
- }
+ if (configservers.isEmpty() && ! multitenant)
+ configservers = createSingleConfigServer(deployState, admin);
+ if (configservers.size() % 2 == 0)
+ deployState.getDeployLogger().logApplicationPackage(Level.WARNING,
+ "An even number (" + configservers.size() +
+ ") of config servers have been configured. " +
+ "This is discouraged, see doc for configuration server ");
return configservers;
}
@@ -80,7 +79,9 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
return new LogserverBuilder().build(deployState, admin, logserverE);
}
- private ClusterControllerContainerCluster addConfiguredClusterControllers(DeployState deployState, AbstractConfigProducer parent, Element admin) {
+ private ClusterControllerContainerCluster addConfiguredClusterControllers(DeployState deployState,
+ AbstractConfigProducer<?> parent,
+ Element admin) {
Element controllersElements = XML.getChild(admin, "cluster-controllers");
if (controllersElements == null) return null;
@@ -107,40 +108,41 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
return cluster;
}
- // Extra stupid because configservers tag is optional
- private List<Configserver> getConfigServers(DeployState deployState, AbstractConfigProducer parent, Element adminE) {
- SimpleConfigProducer configServers = new SimpleConfigProducer(parent, "configservers");
- List<Configserver> cfgs = new ArrayList<>();
+ private List<Configserver> getConfigServers(DeployState deployState, AbstractConfigProducer<?> parent, Element adminE) {
+ SimpleConfigProducer<?> configServers = new SimpleConfigProducer<>(parent, "configservers");
Element configserversE = XML.getChild(adminE, "configservers");
if (configserversE == null) {
Element configserverE = XML.getChild(adminE, "configserver");
- if (configserverE == null) {
+ if (configserverE == null)
configserverE = XML.getChild(adminE, "adminserver");
- } else {
- deployState.getDeployLogger().logApplicationPackage(Level.INFO, "Specifying configserver without parent element configservers in services.xml is deprecated");
- }
- Configserver cfgs0 = new ConfigserverBuilder(0, configServerSpecs).build(deployState, configServers, configserverE);
- cfgs0.setProp("index", 0);
- cfgs.add(cfgs0);
- return cfgs;
+ else
+ deployState.getDeployLogger().logApplicationPackage(Level.INFO,
+ "Specifying configserver without parent element configservers in services.xml is deprecated");
+ return List.of(new ConfigserverBuilder(0, configServerSpecs).build(deployState, configServers, configserverE));
}
- // configservers tag in use
- int i = 0;
- for (Element configserverE : XML.getChildren(configserversE, "configserver")) {
- Configserver cfgsrv = new ConfigserverBuilder(i, configServerSpecs).build(deployState, configServers, configserverE);
- cfgsrv.setProp("index", i);
- cfgs.add(cfgsrv);
- i++;
+ else {
+ List<Configserver> configservers = new ArrayList<>();
+ int i = 0;
+ for (Element configserverE : XML.getChildren(configserversE, "configserver"))
+ configservers.add(new ConfigserverBuilder(i++, configServerSpecs).build(deployState, configServers, configserverE));
+ return configservers;
}
- return cfgs;
+ }
+
+ /** Fallback when no config server is specified */
+ private List<Configserver> createSingleConfigServer(DeployState deployState, AbstractConfigProducer<?> parent) {
+ SimpleConfigProducer<?> configServers = new SimpleConfigProducer<>(parent, "configservers");
+ Configserver configServer = new Configserver(configServers, "configserver", Configserver.defaultRpcPort);
+ configServer.setHostResource(parent.hostSystem().getHost(Container.SINGLENODE_CONTAINER_SERVICESPEC));
+ configServer.initService(deployState.getDeployLogger());
+ return List.of(configServer);
}
private List<Slobrok> getSlobroks(DeployState deployState, AbstractConfigProducer<?> parent, Element slobroksE) {
- List<Slobrok> slobs = new ArrayList<>();
- if (slobroksE != null) {
- slobs = getExplicitSlobrokSetup(deployState, parent, slobroksE);
- }
- return slobs;
+ List<Slobrok> slobroks = new ArrayList<>();
+ if (slobroksE != null)
+ slobroks = getExplicitSlobrokSetup(deployState, parent, slobroksE);
+ return slobroks;
}
private List<Slobrok> getExplicitSlobrokSetup(DeployState deployState, AbstractConfigProducer<?> parent, Element slobroksE) {
@@ -176,7 +178,9 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
@Override
protected Configserver doBuild(DeployState deployState, AbstractConfigProducer parent, Element spec) {
- return new Configserver(parent, "configserver." + i, rpcPort);
+ var configServer = new Configserver(parent, "configserver." + i, rpcPort);
+ configServer.setProp("index", i);
+ return configServer;
}
}
@@ -190,7 +194,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
@Override
protected Slobrok doBuild(DeployState deployState, AbstractConfigProducer parent, Element spec) {
- return new Slobrok(parent, i);
+ return new Slobrok(parent, i, deployState.featureFlags());
}
}
@@ -209,4 +213,5 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
return new ClusterControllerContainer(parent, i, runStandaloneZooKeeper, deployState, false);
}
}
+
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java
index bbec64d45fb..41baf2db3aa 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.config.application.api.DeployLogger;
@@ -13,7 +13,6 @@ import com.yahoo.vespa.model.admin.Logserver;
import com.yahoo.vespa.model.admin.LogserverContainer;
import com.yahoo.vespa.model.admin.LogserverContainerCluster;
import com.yahoo.vespa.model.admin.Slobrok;
-import com.yahoo.vespa.model.admin.clustercontroller.ClusterControllerContainer;
import com.yahoo.vespa.model.container.Container;
import com.yahoo.vespa.model.container.ContainerModel;
import org.w3c.dom.Element;
@@ -37,8 +36,7 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
public DomAdminV4Builder(ConfigModelContext context, boolean multitenant, List<ConfigServerSpec> configServerSpecs,
Collection<ContainerModel> containerModels) {
- super(context.getApplicationType(), context.getDeployState().getFileRegistry(), multitenant,
- configServerSpecs);
+ super(context.getApplicationType(), multitenant, configServerSpecs);
this.containerModels = containerModels;
this.context = context;
}
@@ -55,20 +53,20 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
Optional<NodesSpecification> requestedLogservers =
NodesSpecification.optionalDedicatedFromParent(adminElement.child("logservers"), context);
- assignSlobroks(deployState.getDeployLogger(), requestedSlobroks.orElse(NodesSpecification.nonDedicated(3, context)), admin);
+ assignSlobroks(deployState, requestedSlobroks.orElse(NodesSpecification.nonDedicated(3, context)), admin);
assignLogserver(deployState, requestedLogservers.orElse(createNodesSpecificationForLogserver()), admin);
addLogForwarders(adminElement.child("logforwarding"), admin);
}
- private void assignSlobroks(DeployLogger deployLogger, NodesSpecification nodesSpecification, Admin admin) {
+ private void assignSlobroks(DeployState deployState, NodesSpecification nodesSpecification, Admin admin) {
if (nodesSpecification.isDedicated()) {
- createSlobroks(deployLogger,
+ createSlobroks(deployState,
admin,
allocateHosts(admin.hostSystem(), "slobroks", nodesSpecification));
}
else { // These will be removed later, if an admin cluster (for cluster controllers) is assigned
- createSlobroks(deployLogger,
+ createSlobroks(deployState,
admin,
pickContainerHostsForSlobrok(nodesSpecification.minResources().nodes(), 2));
}
@@ -179,15 +177,15 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
return logserver;
}
- private void createSlobroks(DeployLogger deployLogger, Admin admin, Collection<HostResource> hosts) {
+ private void createSlobroks(DeployState deployState, Admin admin, Collection<HostResource> hosts) {
if (hosts.isEmpty()) return; // No slobroks can be created (and none are needed)
List<Slobrok> slobroks = new ArrayList<>();
int index = 0;
for (HostResource host : hosts) {
- Slobrok slobrok = new Slobrok(admin, index++);
+ Slobrok slobrok = new Slobrok(admin, index++, deployState.featureFlags());
slobrok.setHostResource(host);
slobroks.add(slobrok);
- slobrok.initService(deployLogger);
+ slobrok.initService(deployState.getDeployLogger());
}
admin.addSlobroks(slobroks);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientProviderBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientProviderBuilder.java
index 0fdd1af56f3..69613944e74 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientProviderBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientProviderBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientsBuilder.java
index c107a85bcb5..fe22f818e32 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientsBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.config.model.ConfigModelContext;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilder.java
index a79db295df6..6c3da20bfb9 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomConfigPayloadBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomConfigPayloadBuilder.java
index 7d3981c9a2d..0c746ff4a75 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomConfigPayloadBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomConfigPayloadBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.collections.Tuple2;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomHandlerBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomHandlerBuilder.java
index 0d253f9e7a8..0b32c77fe58 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomHandlerBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomHandlerBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomRoutingBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomRoutingBuilder.java
index 8888896142f..92b24f3f7ac 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomRoutingBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomRoutingBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.config.application.Xml;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilder.java
index e40cb76ad7e..f3107fa0638 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomV20ClientsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomV20ClientsBuilder.java
index 63661104dae..040291cfa71 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomV20ClientsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomV20ClientsBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.text.XML;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilder.java
index 4bff500d806..cecc258a3b8 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.config.model.ConfigModel;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/ModelElement.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/ModelElement.java
index 80c95ad6b59..a2b030fb4b3 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/ModelElement.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/ModelElement.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.text.XML;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java
index 67882e17255..5ad7fb84bb5 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.collections.Pair;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/ServletBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/ServletBuilder.java
index 6996103ae3b..fc3002ab3e3 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/ServletBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/ServletBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java
index df4cb06ec47..81923db15dd 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainSpecificationBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainSpecificationBuilder.java
index 760e9b9e829..4d774579952 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainSpecificationBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainSpecificationBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainedComponentModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainedComponentModelBuilder.java
index 68b37d938a0..c27569aa104 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainedComponentModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainedComponentModelBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains;
import com.yahoo.container.bundle.BundleInstantiationSpecification;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainsBuilder.java
index 6988c7dcf06..5891347f6b4 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ChainsBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ComponentsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ComponentsBuilder.java
index 9777932c3cb..560ede554e6 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ComponentsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/ComponentsBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DependenciesBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DependenciesBuilder.java
index ec5c0338f70..848bfca6083 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DependenciesBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DependenciesBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains;
import com.yahoo.component.chain.dependencies.Dependencies;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomBuilderCreator.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomBuilderCreator.java
index 0fb55dc5633..92887bc3227 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomBuilderCreator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomBuilderCreator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains;
import java.lang.reflect.Constructor;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainBuilderBase.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainBuilderBase.java
index 6f5bc7f90fd..349a89afa0c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainBuilderBase.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainBuilderBase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains;
import com.yahoo.component.chain.model.ChainSpecification;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainsBuilder.java
index 1653612fc78..a5e09d206bf 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainsBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains;
import com.yahoo.config.application.Xml;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/GenericChainedComponentModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/GenericChainedComponentModelBuilder.java
index 84ff290ab22..ba8f08e067f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/GenericChainedComponentModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/GenericChainedComponentModelBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains;
import com.yahoo.component.ComponentSpecification;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/InheritanceBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/InheritanceBuilder.java
index 869cd54471e..1d32c644f97 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/InheritanceBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/InheritanceBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains;
import com.yahoo.component.ComponentSpecification;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DocprocChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DocprocChainsBuilder.java
index e40932154a0..7d2a5a46bc4 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DocprocChainsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DocprocChainsBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.docproc;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DocumentProcessorModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DocumentProcessorModelBuilder.java
index 6f84afa2c6e..a8a7c4d33d2 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DocumentProcessorModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DocumentProcessorModelBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.docproc;
import com.yahoo.collections.Pair;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainBuilder.java
index e6b2cb65b16..299d8172f6c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.docproc;
import com.yahoo.collections.Pair;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainsBuilder.java
index fd2212d6637..dfb849b2e0f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainsBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.docproc;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocumentProcessorBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocumentProcessorBuilder.java
index cc393913c1a..58c3e6f4ff8 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocumentProcessorBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocumentProcessorBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.docproc;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingBuilder.java
index 5fb7853b9fb..059cd157322 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.processing;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingChainBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingChainBuilder.java
index ff414dfd740..4f4845a06b1 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingChainBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingChainBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.processing;
import com.yahoo.component.chain.model.ChainSpecification;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessorBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessorBuilder.java
index d7ac9729855..6f9dd964062 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessorBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessorBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.processing;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/ProcessingChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/ProcessingChainsBuilder.java
index f3f44d45b51..c33807b0741 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/ProcessingChainsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/ProcessingChainsBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.processing;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilder.java
index 36bf792ee82..4edc368aaeb 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.search;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomGenericTargetBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomGenericTargetBuilder.java
index df7c479b575..a220d08cf15 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomGenericTargetBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomGenericTargetBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.search;
import com.yahoo.search.searchchain.model.federation.FederationOptions;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomProviderBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomProviderBuilder.java
index 1e6159ce9ca..9db28c83a93 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomProviderBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomProviderBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.search;
import com.yahoo.binaryprefix.BinaryPrefix;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainBuilder.java
index 3950384a4d4..387bd916579 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.search;
import com.yahoo.component.chain.model.ChainSpecification;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilder.java
index 419eb00886a..b153ca68590 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.search;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearcherBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearcherBuilder.java
index 52971f9b461..74ca0ef2734 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearcherBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearcherBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.search;
import com.yahoo.component.chain.model.ChainedComponentModel;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSourceBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSourceBuilder.java
index 12c4714e27c..5d6bde5f0f8 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSourceBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSourceBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.search;
import com.yahoo.component.chain.model.ChainSpecification;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/FederationOptionsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/FederationOptionsBuilder.java
index 3a4bdea400d..350d5b834f7 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/FederationOptionsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/FederationOptionsBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.search;
import com.yahoo.search.searchchain.model.federation.FederationOptions;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/SearchChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/SearchChainsBuilder.java
index 9fb19efbf75..298420e3a68 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/SearchChainsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/SearchChainsBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.search;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/TimeParser.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/TimeParser.java
index 33fb7db41ab..e6847d8a8b0 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/TimeParser.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/TimeParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.search;
import java.util.regex.Matcher;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/package-info.java
index c29f54a1193..533c5305def 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/package-info.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.model.builder.xml.dom;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/clients/Clients.java b/config-model/src/main/java/com/yahoo/vespa/model/clients/Clients.java
index 10979a21838..47bcc64f663 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/clients/Clients.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/clients/Clients.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.clients;
import com.yahoo.vespa.config.content.LoadTypeConfig;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java b/config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java
index 9e1407ec93e..8534e1f65a7 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.clients;
import com.yahoo.config.model.producer.AbstractConfigProducer;
@@ -22,9 +22,6 @@ public class ContainerDocumentApi {
public static final String DOCUMENT_V1_PREFIX = "/document/v1";
- private static final int FALLBACK_MAX_POOL_SIZE = 0; // Use fallback based on actual logical core count on host
- private static final int FALLBACK_CORE_POOL_SIZE = 0; // Use fallback based on actual logical core count on host
-
public ContainerDocumentApi(ContainerCluster<?> cluster, Options options) {
addRestApiHandler(cluster, options);
addFeedHandler(cluster, options);
@@ -102,22 +99,7 @@ public class ContainerDocumentApi {
// User options overrides below configuration
if (hasUserOptions()) return;
-
- builder.maxThreads(maxPoolSize());
- builder.minThreads(minPoolSize());
- builder.queueSize(500);
- }
-
- private int maxPoolSize() {
- double vcpu = cluster.vcpu().orElse(0);
- if (vcpu == 0) return FALLBACK_MAX_POOL_SIZE;
- return Math.max(2, (int)Math.ceil(vcpu * 4.0));
- }
-
- private int minPoolSize() {
- double vcpu = cluster.vcpu().orElse(0);
- if (vcpu == 0) return FALLBACK_CORE_POOL_SIZE;
- return Math.max(1, (int)Math.ceil(vcpu * 2.0));
+ builder.maxThreads(-4).minThreads(-4).queueSize(500);
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainer.java
index 02a0f606603..50cdb866996 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container;
import com.yahoo.cloud.config.ZookeeperServerConfig;
@@ -9,6 +9,7 @@ import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.NodeResources;
import com.yahoo.search.config.QrStartConfig;
+import com.yahoo.vespa.model.container.component.SimpleComponent;
/**
* A container that is typically used by container clusters set up from the user application.
@@ -30,6 +31,11 @@ public final class ApplicationContainer extends Container implements
public ApplicationContainer(AbstractConfigProducer<?> parent, String name, boolean retired, int index, DeployState deployState) {
super(parent, name, retired, index, deployState);
this.isHostedVespa = deployState.isHosted();
+
+ addComponent(new SimpleComponent("com.yahoo.container.jdisc.messagebus.NetworkMultiplexerHolder"));
+ addComponent(new SimpleComponent("com.yahoo.container.jdisc.messagebus.NetworkMultiplexerProvider"));
+ addComponent(new SimpleComponent("com.yahoo.container.jdisc.messagebus.SessionCache"));
+ addComponent(new SimpleComponent("com.yahoo.container.jdisc.SystemInfoProvider"));
}
@Override
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java
index 59e9b1a2b4d..0bb04a1266d 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java
@@ -34,7 +34,6 @@ import com.yahoo.vespa.model.container.component.Handler;
import com.yahoo.vespa.model.container.component.Servlet;
import com.yahoo.vespa.model.container.component.SystemBindingPattern;
import com.yahoo.vespa.model.container.configserver.ConfigserverCluster;
-import com.yahoo.vespa.model.container.xml.PlatformBundles;
import com.yahoo.vespa.model.utils.FileSender;
import java.util.ArrayList;
@@ -71,8 +70,8 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat
private static final BindingPattern PROMETHEUS_V1_HANDLER_BINDING_1 = SystemBindingPattern.fromHttpPath(PrometheusV1Handler.V1_PATH);
private static final BindingPattern PROMETHEUS_V1_HANDLER_BINDING_2 = SystemBindingPattern.fromHttpPath(PrometheusV1Handler.V1_PATH + "/*");
- public static final int heapSizePercentageOfTotalNodeMemory = 60;
- public static final int heapSizePercentageOfTotalNodeMemoryWhenCombinedCluster = 17;
+ public static final int heapSizePercentageOfTotalNodeMemory = 70;
+ public static final int heapSizePercentageOfTotalNodeMemoryWhenCombinedCluster = 18;
private final Set<FileReference> applicationBundles = new LinkedHashSet<>();
@@ -100,13 +99,14 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat
.map(HostSpec::hostname)
.collect(Collectors.toUnmodifiableSet());
- addSimpleComponent(DEFAULT_LINGUISTICS_PROVIDER);
+ addSimpleComponent("com.yahoo.language.provider.DefaultLinguisticsProvider");
+ addSimpleComponent("com.yahoo.language.provider.DefaultEmbedderProvider");
addSimpleComponent("com.yahoo.container.jdisc.SecretStoreProvider");
addSimpleComponent("com.yahoo.container.jdisc.DeprecatedSecretStoreProvider");
addSimpleComponent("com.yahoo.container.jdisc.CertificateStoreProvider");
addSimpleComponent("com.yahoo.container.jdisc.AthenzIdentityProviderProvider");
- addSimpleComponent("com.yahoo.container.jdisc.SystemInfoProvider");
addSimpleComponent(com.yahoo.container.core.documentapi.DocumentAccessProvider.class.getName());
+
addMetricsHandlers();
addTestrunnerComponentsIfTester(deployState);
}
@@ -121,15 +121,17 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat
private void addAndSendApplicationBundles(DeployState deployState) {
for (ComponentInfo component : deployState.getApplicationPackage().getComponentsInfo(deployState.getVespaVersion())) {
- FileReference reference = FileSender.sendFileToServices(component.getPathRelativeToAppDir(), containers);
+ FileReference reference = deployState.getFileRegistry().addFile(component.getPathRelativeToAppDir());
+ FileSender.send(reference, containers);
applicationBundles.add(reference);
}
}
private void sendUserConfiguredFiles(DeployState deployState) {
// Files referenced from user configs to all components.
+ FileSender fileSender = new FileSender(containers, deployState.getFileRegistry(), deployState.getDeployLogger());
for (Component<?, ?> component : getAllComponents()) {
- FileSender.sendUserConfiguredFiles(component, containers, deployState.getDeployLogger());
+ fileSender.sendUserConfiguredFiles(component);
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java b/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java
index cd596038137..3ac90673bb6 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container;
import com.yahoo.config.application.api.DeployLogger;
@@ -74,6 +74,8 @@ public abstract class Container extends AbstractService implements
private final boolean retired;
/** The unique index of this node */
private final int index;
+ private final boolean dumpHeapOnShutdownTimeout;
+ private final double shutdownTimeoutS;
private final ComponentGroup<Handler<?>> handlers = new ComponentGroup<>(this, "handler");
private final ComponentGroup<Component<?, ?>> components = new ComponentGroup<>(this, "components");
@@ -90,6 +92,8 @@ public abstract class Container extends AbstractService implements
this.parent = parent;
this.retired = retired;
this.index = index;
+ dumpHeapOnShutdownTimeout = deployState.featureFlags().containerDumpHeapOnShutdownTimeout();
+ shutdownTimeoutS = deployState.featureFlags().containerShutdownTimeout();
this.defaultHttpServer = new JettyHttpServer("DefaultHttpServer", containerClusterOrNull(parent), deployState.isHosted());
if (getHttp() == null) {
addChild(defaultHttpServer);
@@ -310,11 +314,14 @@ public abstract class Container extends AbstractService implements
@Override
public void getConfig(QrConfig.Builder builder) {
builder.rpc(new Rpc.Builder()
- .enabled(rpcServerEnabled())
- .port(getRpcPort())
- .slobrokId(serviceSlobrokId()))
+ .enabled(rpcServerEnabled())
+ .port(getRpcPort())
+ .slobrokId(serviceSlobrokId()))
.filedistributor(filedistributorConfig())
- .discriminator((clusterName != null ? clusterName + "." : "" ) + name);
+ .discriminator((clusterName != null ? clusterName + "." : "" ) + name)
+ .nodeIndex(index)
+ .shutdown.dumpHeapOnTimeout(dumpHeapOnShutdownTimeout)
+ .timeout(shutdownTimeoutS);
}
/** Returns the jvm args set explicitly for this node */
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
index d130b08d083..81dd458570b 100755
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container;
import com.yahoo.cloud.config.ClusterInfoConfig;
@@ -70,7 +70,6 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
-import java.util.OptionalDouble;
import java.util.Set;
/**
@@ -115,7 +114,6 @@ public abstract class ContainerCluster<CONTAINER extends Container>
public static final String APPLICATION_STATUS_HANDLER_CLASS = "com.yahoo.container.handler.observability.ApplicationStatusHandler";
public static final String BINDINGS_OVERVIEW_HANDLER_CLASS = BindingsOverviewHandler.class.getName();
public static final String LOG_HANDLER_CLASS = com.yahoo.container.handler.LogHandler.class.getName();
- public static final String DEFAULT_LINGUISTICS_PROVIDER = "com.yahoo.language.provider.DefaultLinguisticsProvider";
public static final String CMS = "-XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=15 -XX:NewRatio=1";
public static final String G1GC = "-XX:+UseG1GC -XX:MaxTenuringThreshold=15";
@@ -172,9 +170,11 @@ public abstract class ContainerCluster<CONTAINER extends Container>
componentGroup = new ComponentGroup<>(this, "component");
+ addCommonVespaBundles();
+
addComponent(new StatisticsComponent());
addSimpleComponent(AccessLog.class);
- addComponent(new DefaultThreadpoolProvider(this));
+ addComponent(new DefaultThreadpoolProvider(this, deployState.featureFlags().metricsproxyNumThreads()));
addSimpleComponent(com.yahoo.concurrent.classlock.ClassLocking.class);
addSimpleComponent(SecurityFilterInvoker.class);
addSimpleComponent("com.yahoo.container.jdisc.metric.MetricConsumerProviderProvider");
@@ -460,6 +460,13 @@ public abstract class ContainerCluster<CONTAINER extends Container>
}
/**
+ * Adds the Vespa bundles that are necessary for all container types.
+ */
+ public void addCommonVespaBundles() {
+ PlatformBundles.commonVespaBundles().forEach(this::addPlatformBundle);
+ }
+
+ /**
* Adds a bundle present at a known location at the target container nodes.
* Note that the set of platform bundles cannot change during the jdisc container's lifetime.
*
@@ -548,6 +555,7 @@ public abstract class ContainerCluster<CONTAINER extends Container>
public void getConfig(ClusterInfoConfig.Builder builder) {
builder.clusterId(name);
builder.nodeCount(containers.size());
+ containers.forEach(c -> builder.nodeIndices(c.index()));
for (Service service : getDescendantServices()) {
builder.services.add(new ClusterInfoConfig.Services.Builder()
@@ -644,12 +652,4 @@ public abstract class ContainerCluster<CONTAINER extends Container>
public boolean getDeferChangesUntilRestart() { return deferChangesUntilRestart; }
- /** Effective vcpu for the containers in cluster. Use this value as scale factor for performance/resource tuning. **/
- public OptionalDouble vcpu() {
- return getContainers().stream()
- .filter(c -> c.getHostResource() != null && c.getHostResource().realResources() != null)
- .mapToDouble(c -> c.getHostResource().realResources().vcpu())
- .max(); // Use highest vcpu as scale factor
- }
-
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModel.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModel.java
index 8d13609424a..0a073a65ac6 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModel.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container;
import com.yahoo.config.model.ConfigModel;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java
index 65247f29281..b7d3a726aff 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container;
import ai.vespa.models.evaluation.ModelsEvaluator;
@@ -10,7 +10,6 @@ import com.yahoo.vespa.config.search.core.RankingConstantsConfig;
import com.yahoo.vespa.config.search.core.RankingExpressionsConfig;
import com.yahoo.vespa.model.container.component.Handler;
import com.yahoo.vespa.model.container.component.SystemBindingPattern;
-import com.yahoo.vespa.model.container.xml.PlatformBundles;
import java.nio.file.Path;
import java.util.List;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerThreadpool.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerThreadpool.java
index 911e5e2e9bd..7111a88fc01 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerThreadpool.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerThreadpool.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container;
import com.yahoo.container.bundle.BundleInstantiationSpecification;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/DefaultThreadpoolProvider.java b/config-model/src/main/java/com/yahoo/vespa/model/container/DefaultThreadpoolProvider.java
index 3dae3160c51..e0d4f3c0692 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/DefaultThreadpoolProvider.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/DefaultThreadpoolProvider.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container;
import com.yahoo.container.bundle.BundleInstantiationSpecification;
@@ -16,19 +16,21 @@ import com.yahoo.vespa.model.container.component.SimpleComponent;
class DefaultThreadpoolProvider extends SimpleComponent implements ThreadpoolConfig.Producer {
private final ContainerCluster<?> cluster;
+ private final int metricsproxyNumThreads;
- DefaultThreadpoolProvider(ContainerCluster<?> cluster) {
+ DefaultThreadpoolProvider(ContainerCluster<?> cluster, int metricsproxyNumThreads) {
super(new ComponentModel(
BundleInstantiationSpecification.getFromStrings(
"default-threadpool",
ThreadPoolProvider.class.getName(),
null)));
this.cluster = cluster;
+ this.metricsproxyNumThreads = metricsproxyNumThreads;
}
private int defaultThreadsByClusterType() {
if (cluster instanceof MetricsProxyContainerCluster) {
- return 4;
+ return metricsproxyNumThreads;
}
return 10;
}
@@ -44,13 +46,8 @@ class DefaultThreadpoolProvider extends SimpleComponent implements ThreadpoolCon
return;
}
- double vcpu = cluster.vcpu().orElse(0);
- if (vcpu == 0) return;
-
- // Configuration is currently identical to the search handler's threadpool
- int workerThreads = Math.max(8, (int)Math.ceil(vcpu * 2.0));
- builder.maxthreads(workerThreads);
- builder.corePoolSize(workerThreads);
- builder.queueSize((int)(workerThreads * 40.0));
+ // Core pool size of 2xcores, and max of 100xcores and using a synchronous Q
+ // This is the deafault pool used by both federation and generally when you ask for an Executor.
+ builder.corePoolSize(-2).maxthreads(-100).queueSize(0);
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/IdentityProvider.java b/config-model/src/main/java/com/yahoo/vespa/model/container/IdentityProvider.java
index 874a7933fbe..7ce2425179b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/IdentityProvider.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/IdentityProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container;
import com.yahoo.config.provision.AthenzDomain;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/PlatformBundles.java b/config-model/src/main/java/com/yahoo/vespa/model/container/PlatformBundles.java
new file mode 100644
index 00000000000..8a489ea9de4
--- /dev/null
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/PlatformBundles.java
@@ -0,0 +1,134 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.model.container;
+
+import com.yahoo.vespa.defaults.Defaults;
+
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Collections;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author gjoranv
+ * @author Ulf Lilleengen
+ */
+public class PlatformBundles {
+
+ private enum JarSuffix {
+ JAR_WITH_DEPS("-jar-with-dependencies.jar"),
+ DEPLOY("-deploy.jar");
+
+ public final String suffix;
+
+ JarSuffix(String suffix) {
+ this.suffix = suffix;
+ }
+ }
+
+ public static final Path LIBRARY_PATH = Paths.get(Defaults.getDefaults().underVespaHome("lib/jars"));
+ public static final String searchAndDocprocBundle = "container-search-and-docproc";
+
+ public static Set<Path> commonVespaBundles() {
+ var bundles = new LinkedHashSet<Path>();
+ commonVespaBundles.stream().map(PlatformBundles::absoluteBundlePath).forEach(bundles::add);
+ return Collections.unmodifiableSet(bundles);
+ }
+
+ public static Path absoluteBundlePath(String fileName) {
+ return absoluteBundlePath(fileName, JarSuffix.JAR_WITH_DEPS);
+ }
+
+ public static Path absoluteBundlePath(String fileName, JarSuffix jarSuffix) {
+ if (fileName == null) return null;
+ return LIBRARY_PATH.resolve(Paths.get(fileName + jarSuffix.suffix));
+ }
+
+ public static boolean isSearchAndDocprocClass(String className) {
+ return searchAndDocprocComponents.contains(className);
+ }
+
+ // Bundles that must be loaded for all container types.
+ private static final List<String> commonVespaBundles = List.of(
+ "zkfacade",
+ "zookeeper-server" // TODO: not necessary in metrics-proxy.
+ );
+
+ // This is a hack to allow users to declare components from the search-and-docproc bundle without naming the bundle.
+ private static final Set<String> searchAndDocprocComponents = Set.of(
+ "com.yahoo.docproc.AbstractConcreteDocumentFactory",
+ "com.yahoo.docproc.DocumentProcessor",
+ "com.yahoo.docproc.SimpleDocumentProcessor",
+ "com.yahoo.docproc.util.JoinerDocumentProcessor",
+ "com.yahoo.docproc.util.SplitterDocumentProcessor",
+ "com.yahoo.example.TimingSearcher",
+ "com.yahoo.language.simple.SimpleLinguistics",
+ "com.yahoo.prelude.cluster.ClusterSearcher",
+ "com.yahoo.prelude.fastsearch.FastSearcher",
+ "com.yahoo.prelude.fastsearch.VespaBackEndSearcher",
+ "com.yahoo.prelude.querytransform.CJKSearcher",
+ "com.yahoo.prelude.querytransform.CollapsePhraseSearcher",
+ "com.yahoo.prelude.querytransform.LiteralBoostSearcher",
+ "com.yahoo.prelude.querytransform.NoRankingSearcher",
+ "com.yahoo.prelude.querytransform.NonPhrasingSearcher",
+ "com.yahoo.prelude.querytransform.NormalizingSearcher",
+ "com.yahoo.prelude.querytransform.PhrasingSearcher",
+ "com.yahoo.prelude.querytransform.RecallSearcher",
+ "com.yahoo.prelude.querytransform.StemmingSearcher",
+ "com.yahoo.prelude.searcher.BlendingSearcher",
+ "com.yahoo.prelude.searcher.FieldCollapsingSearcher",
+ "com.yahoo.prelude.searcher.FillSearcher",
+ "com.yahoo.prelude.searcher.JSONDebugSearcher",
+ "com.yahoo.prelude.searcher.JuniperSearcher",
+ "com.yahoo.prelude.searcher.MultipleResultsSearcher",
+ "com.yahoo.prelude.searcher.PosSearcher",
+ "com.yahoo.prelude.searcher.QuotingSearcher",
+ "com.yahoo.prelude.searcher.ValidateSortingSearcher",
+ "com.yahoo.prelude.semantics.SemanticSearcher",
+ "com.yahoo.prelude.statistics.StatisticsSearcher",
+ "com.yahoo.prelude.templates.SearchRendererAdaptor",
+ "com.yahoo.search.Searcher",
+ "com.yahoo.search.cluster.ClusterSearcher",
+ "com.yahoo.search.cluster.PingableSearcher",
+ "com.yahoo.search.federation.FederationSearcher",
+ "com.yahoo.search.federation.ForwardingSearcher",
+ "com.yahoo.search.federation.http.ConfiguredHTTPClientSearcher",
+ "com.yahoo.search.federation.http.ConfiguredHTTPProviderSearcher",
+ "com.yahoo.search.federation.http.HTTPClientSearcher",
+ "com.yahoo.search.federation.http.HTTPProviderSearcher",
+ "com.yahoo.search.federation.http.HTTPSearcher",
+ "com.yahoo.search.federation.news.NewsSearcher",
+ "com.yahoo.search.federation.vespa.VespaSearcher",
+ "com.yahoo.search.grouping.GroupingQueryParser",
+ "com.yahoo.search.grouping.GroupingValidator",
+ "com.yahoo.search.grouping.vespa.GroupingExecutor",
+ "com.yahoo.search.handler.SearchWithRendererHandler",
+ "com.yahoo.search.pagetemplates.PageTemplate",
+ "com.yahoo.search.pagetemplates.PageTemplateSearcher",
+ "com.yahoo.search.pagetemplates.engine.Resolver",
+ "com.yahoo.search.pagetemplates.engine.resolvers.DeterministicResolver",
+ "com.yahoo.search.pagetemplates.engine.resolvers.RandomResolver",
+ "com.yahoo.search.pagetemplates.model.Renderer",
+ "com.yahoo.search.query.rewrite.QueryRewriteSearcher",
+ "com.yahoo.search.query.rewrite.SearchChainDispatcherSearcher",
+ "com.yahoo.search.query.rewrite.rewriters.GenericExpansionRewriter",
+ "com.yahoo.search.query.rewrite.rewriters.MisspellRewriter",
+ "com.yahoo.search.query.rewrite.rewriters.NameRewriter",
+ "com.yahoo.search.querytransform.AllLowercasingSearcher",
+ "com.yahoo.search.querytransform.DefaultPositionSearcher",
+ "com.yahoo.search.querytransform.LowercasingSearcher",
+ "com.yahoo.search.querytransform.NGramSearcher",
+ "com.yahoo.search.querytransform.VespaLowercasingSearcher",
+ "com.yahoo.search.rendering.Renderer",
+ "com.yahoo.search.rendering.SectionedRenderer",
+ "com.yahoo.search.searchchain.ForkingSearcher",
+ "com.yahoo.search.searchchain.example.ExampleSearcher",
+ "com.yahoo.search.searchers.CacheControlSearcher",
+ "com.yahoo.search.statistics.PeakQpsSearcher",
+ "com.yahoo.search.statistics.TimingSearcher",
+ "com.yahoo.vespa.streamingvisitors.MetricsSearcher",
+ "com.yahoo.vespa.streamingvisitors.VdsStreamingSearcher"
+ );
+
+}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/SecretStore.java b/config-model/src/main/java/com/yahoo/vespa/model/container/SecretStore.java
index c803168af81..076fe7c0c53 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/SecretStore.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/SecretStore.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container;
import com.google.common.collect.ImmutableList;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/AccessLogComponent.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/AccessLogComponent.java
index fc41da43479..e58adf8d6b9 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/AccessLogComponent.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/AccessLogComponent.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component;
import com.yahoo.container.core.AccessLogConfig;
@@ -9,8 +9,6 @@ import com.yahoo.osgi.provider.model.ComponentModel;
import com.yahoo.vespa.model.container.ApplicationContainerCluster;
import com.yahoo.vespa.model.container.ContainerCluster;
-import java.util.OptionalInt;
-
/**
* @author Tony Vaagenes
* @author gjoranv
@@ -32,11 +30,10 @@ public final class AccessLogComponent extends SimpleComponent implements AccessL
public AccessLogComponent(ContainerCluster<?> cluster, AccessLogType logType, CompressionType compressionType, String clusterName, boolean isHostedVespa)
{
- this(cluster, logType, compressionType,
+ this(logType, compressionType,
String.format("logs/vespa/qrs/%s.%s.%s", capitalize(logType.name()), clusterName, "%Y%m%d%H%M%S"),
null, null, isHostedVespa,
- capitalize(logType.name()) + "." + clusterName,
- queueSize(cluster).orElse(-1),
+ capitalize(logType.name()) + "." + clusterName, -1,
((cluster instanceof ApplicationContainerCluster) ? 4*1024*1024 : null));
}
@@ -44,8 +41,7 @@ public final class AccessLogComponent extends SimpleComponent implements AccessL
return name.substring(0, 1).toUpperCase() + name.substring(1);
}
- public AccessLogComponent(ContainerCluster<?> cluster,
- AccessLogType logType,
+ public AccessLogComponent(AccessLogType logType,
CompressionType compressionType,
String fileNamePattern,
String rotationInterval,
@@ -69,13 +65,6 @@ public final class AccessLogComponent extends SimpleComponent implements AccessL
throw new RuntimeException("File name pattern required when configuring access log.");
}
- private static OptionalInt queueSize(ContainerCluster<?> cluster) {
- if (cluster == null) return OptionalInt.empty();
- double vcpu = cluster.vcpu().orElse(0);
- if (vcpu <= 0) return OptionalInt.empty();
- return OptionalInt.of((int) Math.max(4096, Math.ceil(vcpu * 256.0)));
- }
-
private static String accessLogClass(AccessLogType logType) {
switch (logType) {
case queryAccessLog:
@@ -105,9 +94,7 @@ public final class AccessLogComponent extends SimpleComponent implements AccessL
} else if (isHostedVespa) {
builder.compressOnRotation(true);
}
- if (queueSize >= 0) {
- builder.queueSize(queueSize);
- }
+ builder.queueSize(queueSize);
if (bufferSize != null) {
builder.bufferSize(bufferSize);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/BindingPattern.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/BindingPattern.java
index 95b60091e8f..c3dae7e4c8a 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/BindingPattern.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/BindingPattern.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component;
import java.util.Comparator;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/Component.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/Component.java
index 6d891c55075..8caea1aab53 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/Component.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/Component.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component;
import com.yahoo.collections.Pair;
@@ -69,4 +69,10 @@ public class Component<CHILD extends AbstractConfigProducer<?>, MODEL extends Co
return getComponentId().compareTo(other.getComponentId());
}
+ @Override
+ public String toString() {
+ return "component " + getClassId() +
+ (getClassId().toString().equals(getComponentId().toString()) ? "" : ": " + getComponentId());
+ }
+
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/ComponentGroup.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/ComponentGroup.java
index a476b4a77fe..5c0274a7a9e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/ComponentGroup.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/ComponentGroup.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component;
import com.yahoo.config.model.producer.AbstractConfigProducer;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/ComponentsConfigGenerator.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/ComponentsConfigGenerator.java
index 0bd4a31159c..ee51daba46e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/ComponentsConfigGenerator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/ComponentsConfigGenerator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component;
import com.yahoo.collections.Pair;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/ConfigProducerGroup.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/ConfigProducerGroup.java
index a466dabe984..c4710b27868 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/ConfigProducerGroup.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/ConfigProducerGroup.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/ConnectionLogComponent.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/ConnectionLogComponent.java
index 0b51cd163a2..07a48e94399 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/ConnectionLogComponent.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/ConnectionLogComponent.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component;
@@ -6,38 +6,25 @@ import com.yahoo.container.logging.ConnectionLog;
import com.yahoo.container.logging.ConnectionLogConfig;
import com.yahoo.vespa.model.container.ContainerCluster;
-import java.util.OptionalInt;
-
public class ConnectionLogComponent extends SimpleComponent implements ConnectionLogConfig.Producer {
private final String logDirectoryName;
private final String clusterName;
- private final int queueSize;
public ConnectionLogComponent(ContainerCluster<?> cluster, Class<? extends ConnectionLog> cls, String logDirectoryName) {
- this(cluster, cls, logDirectoryName, cluster.getName());
+ this(cls, logDirectoryName, cluster.getName());
}
- public ConnectionLogComponent(ContainerCluster<?> cluster, Class<? extends ConnectionLog> cls, String logDirectoryName, String clusterName) {
+ public ConnectionLogComponent(Class<? extends ConnectionLog> cls, String logDirectoryName, String clusterName) {
super(cls.getName());
this.logDirectoryName = logDirectoryName;
this.clusterName = clusterName;
- this.queueSize = queueSize(cluster).orElse(-1);
- }
-
- private static OptionalInt queueSize(ContainerCluster<?> cluster) {
- if (cluster == null) return OptionalInt.empty();
- double vcpu = cluster.vcpu().orElse(0);
- if (vcpu <= 0) return OptionalInt.empty();
- return OptionalInt.of((int) Math.max(4096, Math.ceil(vcpu * 512.0)));
}
@Override
public void getConfig(ConnectionLogConfig.Builder builder) {
builder.cluster(clusterName);
builder.logDirectoryName(logDirectoryName);
- if (queueSize >= 0) {
- builder.queueSize(queueSize);
- }
+ builder.queueSize(-1);
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/ContainerSubsystem.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/ContainerSubsystem.java
index 0123ea9cf51..280546e7efc 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/ContainerSubsystem.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/ContainerSubsystem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component;
import com.yahoo.vespa.model.container.component.chain.Chains;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/DiscBindingsConfigGenerator.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/DiscBindingsConfigGenerator.java
index 02face328d9..76124b14209 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/DiscBindingsConfigGenerator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/DiscBindingsConfigGenerator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component;
import java.util.Collection;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/FileStatusHandlerComponent.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/FileStatusHandlerComponent.java
index 839594502c6..90fbaa6ee23 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/FileStatusHandlerComponent.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/FileStatusHandlerComponent.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component;
import com.yahoo.container.core.VipStatusConfig;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/Handler.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/Handler.java
index efee5c6a9a0..8ffdccae896 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/Handler.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/Handler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component;
import com.yahoo.config.model.producer.AbstractConfigProducer;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/HttpFilter.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/HttpFilter.java
index 1bf577deebc..71446438b06 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/HttpFilter.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/HttpFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/Servlet.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/Servlet.java
index e8d733f26a2..667b0759f86 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/Servlet.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/Servlet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component;
import com.yahoo.jdisc.http.ServletPathsConfig;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/ServletProvider.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/ServletProvider.java
index 76fe2399927..8c0ec0e8a6f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/ServletProvider.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/ServletProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/SimpleComponent.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/SimpleComponent.java
index 0b72971336f..2c4dd9a8dda 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/SimpleComponent.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/SimpleComponent.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component;
import com.yahoo.container.bundle.BundleInstantiationSpecification;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/StatisticsComponent.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/StatisticsComponent.java
index 2cb06ea3a30..2236d30083b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/StatisticsComponent.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/StatisticsComponent.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component;
import com.yahoo.vespa.model.admin.monitoring.Monitoring;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/SystemBindingPattern.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/SystemBindingPattern.java
index 3ae531539ef..201e26d3575 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/SystemBindingPattern.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/SystemBindingPattern.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component;
/**
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/UserBindingPattern.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/UserBindingPattern.java
index 43f57fa0343..5da11c06fb1 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/UserBindingPattern.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/UserBindingPattern.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component;
/**
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/Chain.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/Chain.java
index 97a09aa48d8..1adbe523c05 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/Chain.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/Chain.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component.chain;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ChainedComponent.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ChainedComponent.java
index 40440f3456b..e8001c9b5ec 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ChainedComponent.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ChainedComponent.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component.chain;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ChainedComponentConfigGenerator.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ChainedComponentConfigGenerator.java
index 603e91047b5..9406ee6d4db 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ChainedComponentConfigGenerator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ChainedComponentConfigGenerator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component.chain;
import com.yahoo.component.chain.dependencies.Dependencies;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/Chains.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/Chains.java
index e6c73773840..87fe99c938e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/Chains.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/Chains.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component.chain;
import com.yahoo.component.chain.model.ChainsModel;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ChainsConfigGenerator.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ChainsConfigGenerator.java
index 67e4d2e6cab..542ea51f829 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ChainsConfigGenerator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ChainsConfigGenerator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component.chain;
import com.yahoo.component.ComponentSpecification;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ProcessingHandler.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ProcessingHandler.java
index da87d48b13e..71524d7e157 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ProcessingHandler.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/ProcessingHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component.chain;
import com.yahoo.container.bundle.BundleInstantiationSpecification;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/package-info.java
index 858184234df..3941b5990da 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/package-info.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/chain/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.model.container.component.chain;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/package-info.java
index f15906dca4c..58f01cb6515 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/package-info.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.model.container.component;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java
index 76276aa3838..8ac30f66ae7 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.configserver;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/option/CloudConfigOptions.java b/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/option/CloudConfigOptions.java
index fff1e162a6c..fe3bd271f2f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/option/CloudConfigOptions.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/option/CloudConfigOptions.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.configserver.option;
import java.util.Optional;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/option/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/option/package-info.java
index 7c019e0bdae..da38379619a 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/option/package-info.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/option/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Tony Vaagenes
*/
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/ContainerDocproc.java b/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/ContainerDocproc.java
index 82061a0425f..8be02f77ab3 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/ContainerDocproc.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/ContainerDocproc.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.docproc;
import com.yahoo.collections.Pair;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocprocChain.java b/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocprocChain.java
index 2b2b17c76c3..63c43270166 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocprocChain.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocprocChain.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.docproc;
import com.yahoo.collections.Pair;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocprocChains.java b/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocprocChains.java
index 68dc2518c23..09995f661e4 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocprocChains.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocprocChains.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.docproc;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocumentProcessor.java b/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocumentProcessor.java
index 48f6d645fe4..3d9c8dd523b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocumentProcessor.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocumentProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.docproc;
import com.yahoo.collections.Pair;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/MbusClient.java b/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/MbusClient.java
index f837695d65e..28a0748be26 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/MbusClient.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/MbusClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.docproc;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/model/DocumentProcessorModel.java b/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/model/DocumentProcessorModel.java
index 2825be32eb5..669be44d0f6 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/model/DocumentProcessorModel.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/model/DocumentProcessorModel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.docproc.model;
import com.yahoo.collections.Pair;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/AccessControl.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/AccessControl.java
index 00ff19ae68a..4bbc5f8f990 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/AccessControl.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/AccessControl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/BlockFeedGlobalEndpointsFilter.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/BlockFeedGlobalEndpointsFilter.java
index 28d94ca7d4a..da6da75f409 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/BlockFeedGlobalEndpointsFilter.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/BlockFeedGlobalEndpointsFilter.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/ConnectorFactory.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/ConnectorFactory.java
index 0d024398de7..c76077e6c7b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/ConnectorFactory.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/ConnectorFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/Filter.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/Filter.java
index e489b984a62..40fccaa5342 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/Filter.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/Filter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http;
import com.yahoo.component.chain.model.ChainedComponentModel;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/FilterChains.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/FilterChains.java
index ecc7013021a..bc9a45da08a 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/FilterChains.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/FilterChains.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/FilterConfigProvider.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/FilterConfigProvider.java
index 91ede54667d..458edac4379 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/FilterConfigProvider.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/FilterConfigProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/Http.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/Http.java
index b5c3cac1879..59e8c493709 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/Http.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/Http.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http;
import com.yahoo.component.provider.ComponentRegistry;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/JettyHttpServer.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/JettyHttpServer.java
index d13709114bf..1c26f532971 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/JettyHttpServer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/JettyHttpServer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http;
import com.yahoo.component.ComponentId;
@@ -70,18 +70,11 @@ public class JettyHttpServer extends SimpleComponent implements ServerConfig.Pro
private void configureJettyThreadpool(ServerConfig.Builder builder) {
if (cluster == null) return;
if (cluster instanceof ApplicationContainerCluster) {
- configureApplicationClusterJettyThreadPool(builder);
+ builder.minWorkerThreads(-1).maxWorkerThreads(-1);
} else {
builder.minWorkerThreads(4).maxWorkerThreads(4);
}
}
- private void configureApplicationClusterJettyThreadPool(ServerConfig.Builder builder) {
- double vcpu = cluster.vcpu().orElse(0);
- if (vcpu > 0) {
- int threads = 16 + (int) Math.ceil(vcpu);
- builder.minWorkerThreads(threads).maxWorkerThreads(threads);
- }
- }
static ComponentModel providerComponentModel(String parentId, String className) {
final ComponentSpecification classNameSpec = new ComponentSpecification(
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/package-info.java
index a91375c5bc6..f20ac14016d 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/package-info.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.model.container.http;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/CustomSslProvider.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/CustomSslProvider.java
index 5083cf228e6..7ad0e2ed5cb 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/CustomSslProvider.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/CustomSslProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http.ssl;
import com.yahoo.jdisc.http.ConnectorConfig;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/DefaultSslProvider.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/DefaultSslProvider.java
index 6504d8ac653..dd280b61feb 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/DefaultSslProvider.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/DefaultSslProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http.ssl;
import com.yahoo.jdisc.http.ConnectorConfig;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/HostedSslConnectorFactory.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/HostedSslConnectorFactory.java
index 89f200698fa..aab417db1e2 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/HostedSslConnectorFactory.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/HostedSslConnectorFactory.java
@@ -9,7 +9,6 @@ import com.yahoo.vespa.model.container.http.ConnectorFactory;
import java.time.Duration;
import java.util.Collection;
-import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -26,16 +25,17 @@ public class HostedSslConnectorFactory extends ConnectorFactory {
private final boolean enforceClientAuth;
private final boolean enforceHandshakeClientAuth;
private final Collection<String> tlsCiphersOverride;
+ private final Duration maxConnectionLife;
/**
* Create connector factory that uses a certificate provided by the config-model / configserver and default hosted Vespa truststore.
*/
public static HostedSslConnectorFactory withProvidedCertificate(
String serverName, EndpointCertificateSecrets endpointCertificateSecrets, boolean enforceHandshakeClientAuth,
- Collection<String> tlsCiphersOverride) {
+ Collection<String> tlsCiphersOverride, Duration maxConnectionLife) {
ConfiguredDirectSslProvider sslProvider = createConfiguredDirectSslProvider(
serverName, endpointCertificateSecrets, DEFAULT_HOSTED_TRUSTSTORE, /*tlsCaCertificates*/null, enforceHandshakeClientAuth);
- return new HostedSslConnectorFactory(sslProvider, false, enforceHandshakeClientAuth, tlsCiphersOverride);
+ return new HostedSslConnectorFactory(sslProvider, false, enforceHandshakeClientAuth, tlsCiphersOverride, maxConnectionLife);
}
/**
@@ -43,25 +43,28 @@ public class HostedSslConnectorFactory extends ConnectorFactory {
*/
public static HostedSslConnectorFactory withProvidedCertificateAndTruststore(
String serverName, EndpointCertificateSecrets endpointCertificateSecrets, String tlsCaCertificates,
- Collection<String> tlsCiphersOverride) {
+ Collection<String> tlsCiphersOverride, Duration maxConnectionLife) {
ConfiguredDirectSslProvider sslProvider = createConfiguredDirectSslProvider(
serverName, endpointCertificateSecrets, /*tlsCaCertificatesPath*/null, tlsCaCertificates, false);
- return new HostedSslConnectorFactory(sslProvider, true, false, tlsCiphersOverride);
+ return new HostedSslConnectorFactory(sslProvider, true, false, tlsCiphersOverride, maxConnectionLife);
}
/**
* Create connector factory that uses the default certificate and truststore provided by Vespa (through Vespa-global TLS configuration).
*/
- public static HostedSslConnectorFactory withDefaultCertificateAndTruststore(String serverName, Collection<String> tlsCiphersOverride) {
- return new HostedSslConnectorFactory(new DefaultSslProvider(serverName), true, false, tlsCiphersOverride);
+ public static HostedSslConnectorFactory withDefaultCertificateAndTruststore(
+ String serverName, Collection<String> tlsCiphersOverride, Duration maxConnectionLife) {
+ return new HostedSslConnectorFactory(new DefaultSslProvider(serverName), true, false, tlsCiphersOverride, maxConnectionLife);
}
private HostedSslConnectorFactory(SslProvider sslProvider, boolean enforceClientAuth,
- boolean enforceHandshakeClientAuth, Collection<String> tlsCiphersOverride) {
+ boolean enforceHandshakeClientAuth, Collection<String> tlsCiphersOverride,
+ Duration maxConnectionLife) {
super(new Builder("tls4443", 4443).sslProvider(sslProvider));
this.enforceClientAuth = enforceClientAuth;
this.enforceHandshakeClientAuth = enforceHandshakeClientAuth;
this.tlsCiphersOverride = tlsCiphersOverride;
+ this.maxConnectionLife = maxConnectionLife;
}
private static ConfiguredDirectSslProvider createConfiguredDirectSslProvider(
@@ -91,16 +94,12 @@ public class HostedSslConnectorFactory extends ConnectorFactory {
if (!tlsCiphersOverride.isEmpty()) {
connectorBuilder.ssl.enabledCipherSuites(tlsCiphersOverride);
} else {
- // Add TLS_RSA_WITH_AES_256_GCM_SHA384 cipher to list of default allowed ciphers
- // TODO Remove TLS_RSA_WITH_AES_256_GCM_SHA384 as it's weak and incompatible with HTTP/2
- Set<String> ciphers = new HashSet<>(TlsContext.ALLOWED_CIPHER_SUITES);
- ciphers.add("TLS_RSA_WITH_AES_256_GCM_SHA384");
- connectorBuilder.ssl.enabledCipherSuites(Set.copyOf(ciphers));
+ connectorBuilder.ssl.enabledCipherSuites(Set.copyOf(TlsContext.ALLOWED_CIPHER_SUITES));
}
connectorBuilder
.proxyProtocol(new ConnectorConfig.ProxyProtocol.Builder().enabled(true).mixedMode(true))
.idleTimeout(Duration.ofSeconds(30).toSeconds())
- .maxConnectionLife(Duration.ofMinutes(10).toSeconds());
+ .maxConnectionLife(maxConnectionLife.toSeconds());
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/SslProvider.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/SslProvider.java
index 0cc252aae3b..f729d69ae53 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/SslProvider.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/SslProvider.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http.ssl;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterBuilder.java
index 2fbe011d747..71d3bb8711e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http.xml;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainBuilder.java
index 2339574424e..334b41d5e8e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http.xml;
import com.yahoo.component.chain.model.ChainSpecification;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainsBuilder.java
index 67ef3579e59..e85e853f989 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainsBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http.xml;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java
index f506a242a5b..43fa515e7c3 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http.xml;
import com.yahoo.component.ComponentSpecification;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java
index 22fa5332d5e..c6fae15d06a 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyConnectorBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http.xml;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyHttpServerBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyHttpServerBuilder.java
index f0be8ebc29e..07f4334b542 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyHttpServerBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/JettyHttpServerBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http.xml;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTester.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTester.java
index c06f5f4c441..bf5bcbff360 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTester.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTester.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.ml;
import ai.vespa.models.evaluation.ModelsEvaluator;
@@ -9,7 +9,10 @@ import ai.vespa.rankingexpression.importer.tensorflow.TensorFlowImporter;
import ai.vespa.rankingexpression.importer.vespa.VespaImporter;
import ai.vespa.rankingexpression.importer.xgboost.XGBoostImporter;
import com.google.common.collect.ImmutableList;
+import com.yahoo.config.FileReference;
import com.yahoo.config.application.api.ApplicationPackage;
+import com.yahoo.config.application.api.FileRegistry;
+import com.yahoo.config.model.application.provider.MockFileRegistry;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.filedistribution.fileacquirer.FileAcquirer;
@@ -19,11 +22,15 @@ import com.yahoo.searchdefinition.derived.RankProfileList;
import com.yahoo.vespa.config.search.RankProfilesConfig;
import com.yahoo.vespa.config.search.core.OnnxModelsConfig;
import com.yahoo.vespa.config.search.core.RankingConstantsConfig;
+import com.yahoo.vespa.config.search.core.RankingExpressionsConfig;
import com.yahoo.vespa.model.VespaModel;
+import net.jpountz.lz4.LZ4FrameOutputStream;
import org.xml.sax.SAXException;
import java.io.File;
+import java.io.FileOutputStream;
import java.io.IOException;
+import java.nio.ByteBuffer;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.HashMap;
@@ -65,14 +72,16 @@ public class ModelsEvaluatorTester {
File temporaryApplicationDir = null;
try {
temporaryApplicationDir = createTemporaryApplicationDir(modelsPath);
- RankProfileList rankProfileList = createRankProfileList(temporaryApplicationDir);
+ MockFileRegistry fileRegistry = new MockFileBlobRegistry(temporaryApplicationDir);
+ RankProfileList rankProfileList = createRankProfileList(temporaryApplicationDir, fileRegistry);
RankProfilesConfig rankProfilesConfig = getRankProfilesConfig(rankProfileList);
RankingConstantsConfig rankingConstantsConfig = getRankingConstantConfig(rankProfileList);
+ RankingExpressionsConfig rankingExpressionsConfig = getRankingExpressionsConfig(rankProfileList);
OnnxModelsConfig onnxModelsConfig = getOnnxModelsConfig(rankProfileList);
- FileAcquirer files = createFileAcquirer(rankingConstantsConfig, onnxModelsConfig, temporaryApplicationDir);
+ FileAcquirer files = createFileAcquirer(fileRegistry, temporaryApplicationDir);
- return new ModelsEvaluator(rankProfilesConfig, rankingConstantsConfig, onnxModelsConfig, files);
+ return new ModelsEvaluator(rankProfilesConfig, rankingConstantsConfig, rankingExpressionsConfig, onnxModelsConfig, files);
} catch (IOException | SAXException e) {
throw new RuntimeException(e);
@@ -91,12 +100,16 @@ public class ModelsEvaluatorTester {
return temporaryApplicationDir;
}
- private static RankProfileList createRankProfileList(File appDir) throws IOException, SAXException {
+ private static RankProfileList createRankProfileList(File appDir, FileRegistry registry) throws IOException, SAXException {
ApplicationPackage app = new MockApplicationPackage.Builder()
.withEmptyHosts()
.withServices(modelEvaluationServices)
.withRoot(appDir).build();
- DeployState deployState = new DeployState.Builder().applicationPackage(app).modelImporters(importers).build();
+ DeployState deployState = new DeployState.Builder()
+ .applicationPackage(app)
+ .fileRegistry(registry)
+ .modelImporters(importers).build();
+
VespaModel vespaModel = new VespaModel(deployState);
return vespaModel.rankProfileList();
}
@@ -104,28 +117,31 @@ public class ModelsEvaluatorTester {
private static RankProfilesConfig getRankProfilesConfig(RankProfileList rankProfileList) {
RankProfilesConfig.Builder builder = new RankProfilesConfig.Builder();
rankProfileList.getConfig(builder);
- return new RankProfilesConfig(builder);
+ return builder.build();
}
private static RankingConstantsConfig getRankingConstantConfig(RankProfileList rankProfileList) {
RankingConstantsConfig.Builder builder = new RankingConstantsConfig.Builder();
rankProfileList.getConfig(builder);
- return new RankingConstantsConfig(builder);
+ return builder.build();
+ }
+
+ private static RankingExpressionsConfig getRankingExpressionsConfig(RankProfileList rankProfileList) {
+ RankingExpressionsConfig.Builder builder = new RankingExpressionsConfig.Builder();
+ rankProfileList.getConfig(builder);
+ return builder.build();
}
private static OnnxModelsConfig getOnnxModelsConfig(RankProfileList rankProfileList) {
OnnxModelsConfig.Builder builder = new OnnxModelsConfig.Builder();
rankProfileList.getConfig(builder);
- return new OnnxModelsConfig(builder);
+ return builder.build();
}
- private static FileAcquirer createFileAcquirer(RankingConstantsConfig constantsConfig, OnnxModelsConfig onnxModelsConfig, File appDir) {
+ private static FileAcquirer createFileAcquirer(MockFileRegistry fileRegistry, File appDir) {
Map<String, File> fileMap = new HashMap<>();
- for (RankingConstantsConfig.Constant constant : constantsConfig.constant()) {
- fileMap.put(constant.fileref().value(), relativePath(appDir, constant.fileref().value()));
- }
- for (OnnxModelsConfig.Model model : onnxModelsConfig.model()) {
- fileMap.put(model.fileref().value(), relativePath(appDir, model.fileref().value()));
+ for (FileRegistry.Entry entry : fileRegistry.export()) {
+ fileMap.put(entry.reference.value(), relativePath(appDir, entry.reference.value()));
}
return MockFileAcquirer.returnFiles(fileMap);
}
@@ -134,4 +150,34 @@ public class ModelsEvaluatorTester {
return new File(root.getAbsolutePath() + File.separator + subpath);
}
+ private static class MockFileBlobRegistry extends MockFileRegistry {
+
+ private final File appDir;
+
+ MockFileBlobRegistry(File appdir) {
+ this.appDir = appdir;
+ }
+
+ @Override
+ public FileReference addBlob(String name, ByteBuffer blob) {
+ writeBlob(blob, name);
+ return addFile(name);
+ }
+
+ private void writeBlob(ByteBuffer blob, String relativePath) {
+ try (FileOutputStream fos = new FileOutputStream(new File(appDir, relativePath))) {
+ if (relativePath.endsWith(".lz4")) {
+ LZ4FrameOutputStream lz4 = new LZ4FrameOutputStream(fos);
+ lz4.write(blob.array(), blob.arrayOffset(), blob.remaining());
+ lz4.close();
+ } else {
+ fos.write(blob.array(), blob.arrayOffset(), blob.remaining());
+ }
+ } catch (IOException e) {
+ throw new IllegalArgumentException("Failed writing temp file", e);
+ }
+ }
+
+ }
+
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ml/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ml/package-info.java
index 67556f256ed..a36fa48ce56 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ml/package-info.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ml/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.model.container.ml;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/container/package-info.java
index 609348f5d9d..d7c9dfcde56 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/package-info.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.model.container;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChain.java b/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChain.java
index 9a984ca1917..2295ceb6170 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChain.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChain.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.processing;
import com.yahoo.component.chain.model.ChainSpecification;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChains.java b/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChains.java
index f6b24bf9635..356aa1640a6 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChains.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChains.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.processing;
import com.yahoo.config.model.producer.AbstractConfigProducer;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/processing/Processor.java b/config-model/src/main/java/com/yahoo/vespa/model/container/processing/Processor.java
index efae7278b14..4672a12e737 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/processing/Processor.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/processing/Processor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.processing;
import com.yahoo.component.chain.model.ChainedComponentModel;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java
index ef2eaeb4654..0e53417aea9 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search;
import com.yahoo.container.QrSearchersConfig;
@@ -11,7 +11,6 @@ import com.yahoo.vespa.configdefinition.IlscriptsConfig;
import com.yahoo.vespa.model.container.ApplicationContainerCluster;
import com.yahoo.vespa.model.container.component.Component;
import com.yahoo.vespa.model.container.component.ContainerSubsystem;
-import com.yahoo.vespa.model.container.search.searchchain.LocalProvider;
import com.yahoo.vespa.model.container.search.searchchain.SearchChains;
import com.yahoo.vespa.model.search.AbstractSearchCluster;
import com.yahoo.vespa.model.search.IndexedSearchCluster;
@@ -23,7 +22,7 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import static com.yahoo.vespa.model.container.xml.PlatformBundles.searchAndDocprocBundle;
+import static com.yahoo.vespa.model.container.PlatformBundles.searchAndDocprocBundle;
/**
* @author gjoranv
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/DeclaredQueryProfileVariants.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/DeclaredQueryProfileVariants.java
index ab9f51ff0ad..85aefdb42af 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/DeclaredQueryProfileVariants.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/DeclaredQueryProfileVariants.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search;
import com.yahoo.search.query.profile.OverridableQueryProfile;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/DispatcherComponent.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/DispatcherComponent.java
index 232e8fcbd1a..832aede858e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/DispatcherComponent.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/DispatcherComponent.java
@@ -5,7 +5,7 @@ import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.osgi.provider.model.ComponentModel;
import com.yahoo.vespa.config.search.DispatchConfig;
import com.yahoo.vespa.model.container.component.Component;
-import com.yahoo.vespa.model.container.xml.PlatformBundles;
+import com.yahoo.vespa.model.container.PlatformBundles;
import com.yahoo.vespa.model.search.IndexedSearchCluster;
/**
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/GUIHandler.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/GUIHandler.java
index f01bbcd3951..7087cabafc1 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/GUIHandler.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/GUIHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search;
import com.yahoo.config.model.producer.AbstractConfigProducer;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/PageTemplates.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/PageTemplates.java
index 14fad38abf9..dc9a9f127ed 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/PageTemplates.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/PageTemplates.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search;
import com.yahoo.io.reader.NamedReader;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/QrsCache.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/QrsCache.java
index f47103b859e..64b3e67b616 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/QrsCache.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/QrsCache.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search;
/**
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/QueryProfiles.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/QueryProfiles.java
index e5ed20e19ec..e22df1b4ec3 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/QueryProfiles.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/QueryProfiles.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/QueryProfilesBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/QueryProfilesBuilder.java
index b653b0acf8d..b850aaaad58 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/QueryProfilesBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/QueryProfilesBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/RpcResourcePoolComponent.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/RpcResourcePoolComponent.java
index 248b30eafa7..8c45e5b013f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/RpcResourcePoolComponent.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/RpcResourcePoolComponent.java
@@ -3,7 +3,7 @@ package com.yahoo.vespa.model.container.search;
import com.yahoo.osgi.provider.model.ComponentModel;
import com.yahoo.vespa.model.container.component.Component;
-import com.yahoo.vespa.model.container.xml.PlatformBundles;
+import com.yahoo.vespa.model.container.PlatformBundles;
public class RpcResourcePoolComponent extends Component<RpcResourcePoolComponent, ComponentModel> {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/SemanticRuleBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/SemanticRuleBuilder.java
index 372e196b3d8..834b0e73b5e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/SemanticRuleBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/SemanticRuleBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search;
import com.yahoo.config.application.api.ApplicationPackage;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/SemanticRules.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/SemanticRules.java
index d24338e1b3b..46c8577c6e8 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/SemanticRules.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/SemanticRules.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search;
import com.yahoo.prelude.semantics.SemanticRulesConfig;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/FederationSearcher.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/FederationSearcher.java
index 6b4cb003cda..55284c444e4 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/FederationSearcher.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/FederationSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.searchchain;
import com.yahoo.collections.CollectionUtil;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/GenericProvider.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/GenericProvider.java
index 8a3ef58fde1..11d1f5640d9 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/GenericProvider.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/GenericProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.searchchain;
import com.yahoo.component.chain.model.ChainSpecification;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/GenericTarget.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/GenericTarget.java
index 660ee2628b8..c7849abf14f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/GenericTarget.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/GenericTarget.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.searchchain;
import com.yahoo.component.chain.model.ChainSpecification;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/LocalProvider.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/LocalProvider.java
index cf3fd6ec3bd..e2579d95fc0 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/LocalProvider.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/LocalProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.searchchain;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Provider.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Provider.java
index 10e0f3e55da..b89c782490f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Provider.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Provider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.searchchain;
import com.yahoo.component.chain.model.ChainSpecification;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SearchChain.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SearchChain.java
index ff211264a34..3fb1416f265 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SearchChain.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SearchChain.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.searchchain;
import com.yahoo.component.chain.model.ChainSpecification;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SearchChains.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SearchChains.java
index eed8d728ae8..a733c2a0f30 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SearchChains.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SearchChains.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.searchchain;
import com.yahoo.collections.CollectionUtil;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Searcher.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Searcher.java
index 413b3e2814f..a24a12d0160 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Searcher.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Searcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.searchchain;
import com.yahoo.component.chain.model.ChainedComponentModel;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Source.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Source.java
index cebf27b1700..49c1a066982 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Source.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/Source.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.searchchain;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SourceGroup.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SourceGroup.java
index 5d51f48f6ae..0be6675915c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SourceGroup.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SourceGroup.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.searchchain;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SourceGroupRegistry.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SourceGroupRegistry.java
index e073d82f5da..ac20c73980c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SourceGroupRegistry.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/SourceGroupRegistry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.searchchain;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/defaultsearchchains/LocalClustersCreator.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/defaultsearchchains/LocalClustersCreator.java
index 2f699f84623..229afd56360 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/defaultsearchchains/LocalClustersCreator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/defaultsearchchains/LocalClustersCreator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.searchchain.defaultsearchchains;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/defaultsearchchains/VespaSearchChainsCreator.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/defaultsearchchains/VespaSearchChainsCreator.java
index a277b6e6b2f..eb396c52fca 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/defaultsearchchains/VespaSearchChainsCreator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/defaultsearchchains/VespaSearchChainsCreator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.searchchain.defaultsearchchains;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java
index d7812e9b4ff..b939109dab1 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
import com.yahoo.config.model.deploy.DeployState;
@@ -55,7 +55,6 @@ public class AccessLogBuilder {
@Override
protected AccessLogComponent doBuild(DeployState deployState, AbstractConfigProducer<?> ancestor, Element spec) {
return new AccessLogComponent(
- (ContainerCluster<?>) ancestor,
accessLogType,
compressionType(spec, isHostedVespa),
fileNamePattern(spec),
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/BundleInstantiationSpecificationBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/BundleInstantiationSpecificationBuilder.java
index 12d74418f9f..5e1cf6db770 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/BundleInstantiationSpecificationBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/BundleInstantiationSpecificationBuilder.java
@@ -1,9 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
import com.yahoo.config.model.builder.xml.XmlHelper;
import com.yahoo.container.bundle.BundleInstantiationSpecification;
import com.yahoo.component.ComponentSpecification;
+import com.yahoo.vespa.model.container.PlatformBundles;
import org.w3c.dom.Element;
import java.util.Arrays;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/CloudSecretStore.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/CloudSecretStore.java
index bf6a0275a94..18916f1e09b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/CloudSecretStore.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/CloudSecretStore.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
import com.yahoo.container.bundle.BundleInstantiationSpecification;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java
index a1f52cca9fd..9871fed5b7c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
import com.yahoo.config.model.ConfigModelContext;
@@ -6,7 +6,6 @@ import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.container.logging.FileConnectionLog;
import com.yahoo.vespa.model.container.ApplicationContainerCluster;
import com.yahoo.vespa.model.container.ContainerModel;
-import com.yahoo.vespa.model.container.ContainerModelEvaluation;
import com.yahoo.vespa.model.container.component.AccessLogComponent;
import com.yahoo.vespa.model.container.component.ConnectionLogComponent;
import com.yahoo.vespa.model.container.configserver.ConfigserverCluster;
@@ -48,7 +47,7 @@ public class ConfigServerContainerModelBuilder extends ContainerModelBuilder {
if (isHosted()){
cluster.addComponent(
new AccessLogComponent(
- cluster, AccessLogComponent.AccessLogType.jsonAccessLog, AccessLogComponent.CompressionType.ZSTD,
+ AccessLogComponent.AccessLogType.jsonAccessLog, AccessLogComponent.CompressionType.ZSTD,
"logs/vespa/configserver/access-json.log.%Y%m%d%H%M%S", null, true, true, "access-json.log", 1024,256*1024));
cluster.addComponent(new ConnectionLogComponent(cluster, FileConnectionLog.class, "configserver"));
} else {
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 4b45979c698..39d4d7ec6c8 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
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
import com.google.common.collect.ImmutableList;
@@ -33,6 +33,7 @@ import com.yahoo.config.provision.Zone;
import com.yahoo.container.logging.FileConnectionLog;
import com.yahoo.osgi.provider.model.ComponentModel;
import com.yahoo.search.rendering.RendererRegistry;
+import com.yahoo.searchdefinition.OnnxModel;
import com.yahoo.searchdefinition.derived.RankProfileList;
import com.yahoo.security.X509CertificateUtils;
import com.yahoo.text.XML;
@@ -59,6 +60,7 @@ import com.yahoo.vespa.model.container.ContainerModel;
import com.yahoo.vespa.model.container.ContainerModelEvaluation;
import com.yahoo.vespa.model.container.ContainerThreadpool;
import com.yahoo.vespa.model.container.IdentityProvider;
+import com.yahoo.vespa.model.container.PlatformBundles;
import com.yahoo.vespa.model.container.SecretStore;
import com.yahoo.vespa.model.container.component.AccessLogComponent;
import com.yahoo.vespa.model.container.component.BindingPattern;
@@ -90,6 +92,7 @@ import org.w3c.dom.Node;
import java.net.URI;
import java.security.cert.X509Certificate;
+import java.time.Duration;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -434,6 +437,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
// If the deployment contains certificate/private key reference, setup TLS port
HostedSslConnectorFactory connectorFactory;
Collection<String> tlsCiphersOverride = deployState.getProperties().tlsCiphersOverride();
+ Duration maxConnectionLife = Duration.ofSeconds(deployState.featureFlags().maxConnectionLifeInHosted());
if (deployState.endpointCertificateSecrets().isPresent()) {
boolean authorizeClient = deployState.zone().system().isPublic();
if (authorizeClient && deployState.tlsClientAuthority().isEmpty()) {
@@ -448,11 +452,11 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
connectorFactory = authorizeClient
? HostedSslConnectorFactory.withProvidedCertificateAndTruststore(
- serverName, endpointCertificateSecrets, getTlsClientAuthorities(deployState), tlsCiphersOverride)
+ serverName, endpointCertificateSecrets, getTlsClientAuthorities(deployState), tlsCiphersOverride, maxConnectionLife)
: HostedSslConnectorFactory.withProvidedCertificate(
- serverName, endpointCertificateSecrets, enforceHandshakeClientAuth, tlsCiphersOverride);
+ serverName, endpointCertificateSecrets, enforceHandshakeClientAuth, tlsCiphersOverride, maxConnectionLife);
} else {
- connectorFactory = HostedSslConnectorFactory.withDefaultCertificateAndTruststore(serverName, tlsCiphersOverride);
+ connectorFactory = HostedSslConnectorFactory.withDefaultCertificateAndTruststore(serverName, tlsCiphersOverride, maxConnectionLife);
}
cluster.getHttp().getAccessControl().ifPresent(accessControl -> accessControl.configureHostedConnector(connectorFactory));
server.addConnector(connectorFactory);
@@ -556,9 +560,31 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
RankProfileList profiles =
context.vespaModel() != null ? context.vespaModel().rankProfileList() : RankProfileList.empty;
+
+ Element onnxElement = XML.getChild(modelEvaluationElement, "onnx");
+ Element modelsElement = XML.getChild(onnxElement, "models");
+ for (Element modelElement : XML.getChildren(modelsElement, "model") ) {
+ OnnxModel onnxModel = profiles.getOnnxModels().get(modelElement.getAttribute("name"));
+ if (onnxModel == null)
+ continue; // Skip if model is not found
+ onnxModel.setStatelessExecutionMode(getStringValue(modelElement, "execution-mode", null));
+ onnxModel.setStatelessInterOpThreads(getIntValue(modelElement, "interop-threads", -1));
+ onnxModel.setStatelessIntraOpThreads(getIntValue(modelElement, "intraop-threads", -1));
+ }
+
cluster.setModelEvaluation(new ContainerModelEvaluation(cluster, profiles));
}
+ private String getStringValue(Element element, String name, String defaultValue) {
+ Element child = XML.getChild(element, name);
+ return (child != null) ? child.getTextContent() : defaultValue;
+ }
+
+ private int getIntValue(Element element, String name, int defaultValue) {
+ Element child = XML.getChild(element, name);
+ return (child != null) ? Integer.parseInt(child.getTextContent()) : defaultValue;
+ }
+
protected void addModelEvaluationBundles(ApplicationContainerCluster cluster) {
/* These bundles are added to all application container clusters, even if they haven't
* declared 'model-evaluation' in services.xml, because there are many public API packages
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerServiceBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerServiceBuilder.java
index 78469bdf51c..13f5f70e6c0 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerServiceBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerServiceBuilder.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/DocprocOptionsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/DocprocOptionsBuilder.java
index db08589be96..1239cbf9bdc 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/DocprocOptionsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/DocprocOptionsBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
import com.yahoo.vespa.model.container.docproc.ContainerDocproc;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/DocumentApiOptionsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/DocumentApiOptionsBuilder.java
index b991608eb48..2ef31469c45 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/DocumentApiOptionsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/DocumentApiOptionsBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
import com.yahoo.text.XML;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/InconsistentSchemaAndCodeError.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/InconsistentSchemaAndCodeError.java
index 5617dfd7582..e3744f23964 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/InconsistentSchemaAndCodeError.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/InconsistentSchemaAndCodeError.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
/**
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/PlatformBundles.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/PlatformBundles.java
deleted file mode 100644
index dc2437c1834..00000000000
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/PlatformBundles.java
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.model.container.xml;
-
-import com.yahoo.vespa.defaults.Defaults;
-
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Set;
-
-/**
- * @author gjoranv
- * @author Ulf Lilleengen
- */
-public class PlatformBundles {
-
- private enum JarSuffix {
- JAR_WITH_DEPS("-jar-with-dependencies.jar"),
- DEPLOY("-deploy.jar");
-
- public final String suffix;
-
- JarSuffix(String suffix) {
- this.suffix = suffix;
- }
- }
-
- public static final Path LIBRARY_PATH = Paths.get(Defaults.getDefaults().underVespaHome("lib/jars"));
- public static final String searchAndDocprocBundle = "container-search-and-docproc";
-
- private static final Set<String> searchAndDocprocComponents;
-
- public static boolean isSearchAndDocprocClass(String className) {
- return searchAndDocprocComponents.contains(className);
- }
-
- public static Path absoluteBundlePath(String fileName) {
- if (fileName == null) return null;
- return LIBRARY_PATH.resolve(Paths.get(fileName + JarSuffix.JAR_WITH_DEPS.suffix));
- }
-
- // This is a hack to allow users to declare components from the search-and-docproc bundle without naming the bundle.
- static {
- searchAndDocprocComponents = Set.of(
- "com.yahoo.docproc.AbstractConcreteDocumentFactory",
- "com.yahoo.docproc.DocumentProcessor",
- "com.yahoo.docproc.SimpleDocumentProcessor",
- "com.yahoo.docproc.util.JoinerDocumentProcessor",
- "com.yahoo.docproc.util.SplitterDocumentProcessor",
- "com.yahoo.example.TimingSearcher",
- "com.yahoo.language.simple.SimpleLinguistics",
- "com.yahoo.prelude.cluster.ClusterSearcher",
- "com.yahoo.prelude.fastsearch.FastSearcher",
- "com.yahoo.prelude.fastsearch.VespaBackEndSearcher",
- "com.yahoo.prelude.querytransform.CJKSearcher",
- "com.yahoo.prelude.querytransform.CollapsePhraseSearcher",
- "com.yahoo.prelude.querytransform.LiteralBoostSearcher",
- "com.yahoo.prelude.querytransform.NoRankingSearcher",
- "com.yahoo.prelude.querytransform.NonPhrasingSearcher",
- "com.yahoo.prelude.querytransform.NormalizingSearcher",
- "com.yahoo.prelude.querytransform.PhrasingSearcher",
- "com.yahoo.prelude.querytransform.RecallSearcher",
- "com.yahoo.prelude.querytransform.StemmingSearcher",
- "com.yahoo.prelude.searcher.BlendingSearcher",
- "com.yahoo.prelude.searcher.FieldCollapsingSearcher",
- "com.yahoo.prelude.searcher.FillSearcher",
- "com.yahoo.prelude.searcher.JSONDebugSearcher",
- "com.yahoo.prelude.searcher.JuniperSearcher",
- "com.yahoo.prelude.searcher.MultipleResultsSearcher",
- "com.yahoo.prelude.searcher.PosSearcher",
- "com.yahoo.prelude.searcher.QuotingSearcher",
- "com.yahoo.prelude.searcher.ValidateSortingSearcher",
- "com.yahoo.prelude.semantics.SemanticSearcher",
- "com.yahoo.prelude.statistics.StatisticsSearcher",
- "com.yahoo.prelude.templates.SearchRendererAdaptor",
- "com.yahoo.search.Searcher",
- "com.yahoo.search.cluster.ClusterSearcher",
- "com.yahoo.search.cluster.PingableSearcher",
- "com.yahoo.search.federation.FederationSearcher",
- "com.yahoo.search.federation.ForwardingSearcher",
- "com.yahoo.search.federation.http.ConfiguredHTTPClientSearcher",
- "com.yahoo.search.federation.http.ConfiguredHTTPProviderSearcher",
- "com.yahoo.search.federation.http.HTTPClientSearcher",
- "com.yahoo.search.federation.http.HTTPProviderSearcher",
- "com.yahoo.search.federation.http.HTTPSearcher",
- "com.yahoo.search.federation.news.NewsSearcher",
- "com.yahoo.search.federation.vespa.VespaSearcher",
- "com.yahoo.search.grouping.GroupingQueryParser",
- "com.yahoo.search.grouping.GroupingValidator",
- "com.yahoo.search.grouping.vespa.GroupingExecutor",
- "com.yahoo.search.handler.SearchWithRendererHandler",
- "com.yahoo.search.pagetemplates.PageTemplate",
- "com.yahoo.search.pagetemplates.PageTemplateSearcher",
- "com.yahoo.search.pagetemplates.engine.Resolver",
- "com.yahoo.search.pagetemplates.engine.resolvers.DeterministicResolver",
- "com.yahoo.search.pagetemplates.engine.resolvers.RandomResolver",
- "com.yahoo.search.pagetemplates.model.Renderer",
- "com.yahoo.search.query.rewrite.QueryRewriteSearcher",
- "com.yahoo.search.query.rewrite.SearchChainDispatcherSearcher",
- "com.yahoo.search.query.rewrite.rewriters.GenericExpansionRewriter",
- "com.yahoo.search.query.rewrite.rewriters.MisspellRewriter",
- "com.yahoo.search.query.rewrite.rewriters.NameRewriter",
- "com.yahoo.search.querytransform.AllLowercasingSearcher",
- "com.yahoo.search.querytransform.DefaultPositionSearcher",
- "com.yahoo.search.querytransform.LowercasingSearcher",
- "com.yahoo.search.querytransform.NGramSearcher",
- "com.yahoo.search.querytransform.VespaLowercasingSearcher",
- "com.yahoo.search.rendering.Renderer",
- "com.yahoo.search.rendering.SectionedRenderer",
- "com.yahoo.search.searchchain.ForkingSearcher",
- "com.yahoo.search.searchchain.example.ExampleSearcher",
- "com.yahoo.search.searchers.CacheControlSearcher",
- "com.yahoo.search.statistics.PeakQpsSearcher",
- "com.yahoo.search.statistics.TimingSearcher",
- "com.yahoo.vespa.streamingvisitors.MetricsSearcher",
- "com.yahoo.vespa.streamingvisitors.VdsStreamingSearcher"
- );
- }
-
-}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/SearchHandler.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/SearchHandler.java
index 95b333f4e52..54d943f498a 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/SearchHandler.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/SearchHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
import com.yahoo.container.handler.threadpool.ContainerThreadpoolConfig;
@@ -48,23 +48,7 @@ class SearchHandler extends ProcessingHandler<SearchChains> {
// User options overrides below configuration
if (hasUserOptions()) return;
-
- double vcpu = cluster.vcpu().orElse(0);
- if (vcpu == 0) {
- builder.maxThreads(500);
- builder.minThreads(500);
- builder.queueSize(0);
- } else {
- // Controls max number of concurrent requests per container
- int workerThreads = Math.max(8, (int)Math.ceil(vcpu * 2.0));
- builder.maxThreads(workerThreads);
- builder.minThreads(workerThreads);
-
- // This controls your burst handling capability.
- // 0 => No extra burst handling beyond you max concurrent requests (maxthreads).
- // N => N times max concurrent requests as a buffer for handling bursts
- builder.queueSize((int)(workerThreads * 40.0));
- }
+ builder.maxThreads(-2).minThreads(-2).queueSize(-40);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/document/DocumentFactoryBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/document/DocumentFactoryBuilder.java
index 676db91aa99..5df862647a0 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/document/DocumentFactoryBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/document/DocumentFactoryBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml.document;
import com.yahoo.config.model.producer.AbstractConfigProducer;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/package-info.java
index 3cb0f188881..0f4543ea24b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/package-info.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.model.container.xml;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/BucketSplitting.java b/config-model/src/main/java/com/yahoo/vespa/model/content/BucketSplitting.java
index cb588f20f0e..628987d5930 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/BucketSplitting.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/BucketSplitting.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.vespa.config.content.core.StorDistributormanagerConfig;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java
index 66ec0d81947..25e00dc05dd 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.config.model.deploy.DeployState;
@@ -35,7 +35,7 @@ public class ClusterControllerConfig extends AbstractConfigProducer<ClusterContr
ModelElement clusterTuning = clusterElement.child("tuning");
Integer bucketSplittingMinimumBits = null;
- Double minNodeRatioPerGroup = null;
+ Double minNodeRatioPerGroup = deployState.getProperties().featureFlags().minNodeRatioPerGroup();
if (clusterTuning != null) {
tuning = clusterTuning.child("cluster-controller");
minNodeRatioPerGroup = clusterTuning.childAsDouble("min-node-ratio-per-group");
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterResourceLimits.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterResourceLimits.java
index dc5e6c9baee..0a08f81ffca 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterResourceLimits.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterResourceLimits.java
@@ -1,7 +1,6 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
-import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
import com.yahoo.vespa.model.content.cluster.DomResourceLimitsBuilder;
@@ -37,20 +36,18 @@ public class ClusterResourceLimits {
private final boolean enableFeedBlockInDistributor;
private final boolean hostedVespa;
- private final boolean throwIfSpecified;
- private final DeployLogger deployLogger;
private final double resourceLimitDisk;
private final double resourceLimitMemory;
private ResourceLimits.Builder ctrlBuilder = new ResourceLimits.Builder();
private ResourceLimits.Builder nodeBuilder = new ResourceLimits.Builder();
- public Builder(boolean enableFeedBlockInDistributor, boolean hostedVespa, boolean throwIfSpecified,
- DeployLogger deployLogger, double resourceLimitDisk, double resourceLimitMemory) {
+ public Builder(boolean enableFeedBlockInDistributor,
+ boolean hostedVespa,
+ double resourceLimitDisk,
+ double resourceLimitMemory) {
this.enableFeedBlockInDistributor = enableFeedBlockInDistributor;
this.hostedVespa = hostedVespa;
- this.throwIfSpecified = throwIfSpecified;
- this.deployLogger = deployLogger;
this.resourceLimitDisk = resourceLimitDisk;
this.resourceLimitMemory = resourceLimitMemory;
verifyLimits(resourceLimitDisk, resourceLimitMemory);
@@ -67,7 +64,7 @@ public class ClusterResourceLimits {
private ResourceLimits.Builder createBuilder(ModelElement element) {
return element == null
? new ResourceLimits.Builder()
- : DomResourceLimitsBuilder.createBuilder(element, hostedVespa, throwIfSpecified, deployLogger);
+ : DomResourceLimitsBuilder.createBuilder(element, hostedVespa);
}
public void setClusterControllerBuilder(ResourceLimits.Builder builder) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java b/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java
index 4a8002ba3dc..75043041c0f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentNode.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentNode.java
index 37a2ef224fc..d32fa8f2902 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentNode.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.config.model.api.ModelContext;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearch.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearch.java
index f1647bd15c1..88d4b278f78 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearch.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearch.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
/**
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
index efb47e97ccb..ba4daa84fe6 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.config.model.api.ModelContext;
@@ -153,7 +153,7 @@ public class ContentSearchCluster extends AbstractConfigProducer<SearchCluster>
String clusterName, ContentSearchCluster search) {
List<ModelElement> indexedDefs = getIndexedSchemas(clusterElem);
if (!indexedDefs.isEmpty()) {
- IndexedSearchCluster isc = new IndexedSearchCluster(search, clusterName, 0, deployState);
+ IndexedSearchCluster isc = new IndexedSearchCluster(search, clusterName, 0);
isc.setRoutingSelector(clusterElem.childAsString("documents.selection"));
Double visibilityDelay = clusterElem.childAsDouble("engine.proton.visibility-delay");
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/DispatchSpec.java b/config-model/src/main/java/com/yahoo/vespa/model/content/DispatchSpec.java
index 1072965772f..69557e1a974 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/DispatchSpec.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/DispatchSpec.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import java.util.ArrayList;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/DispatchTuning.java b/config-model/src/main/java/com/yahoo/vespa/model/content/DispatchTuning.java
index 786d032578f..4624ae9631d 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/DispatchTuning.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/DispatchTuning.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
/**
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/DistributionBitCalculator.java b/config-model/src/main/java/com/yahoo/vespa/model/content/DistributionBitCalculator.java
index 7e4cef345a8..12661b34a0c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/DistributionBitCalculator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/DistributionBitCalculator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.vespa.model.content.cluster.ContentCluster;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/Distributor.java b/config-model/src/main/java/com/yahoo/vespa/model/content/Distributor.java
index ec677911da6..2215a0a8df9 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/Distributor.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/Distributor.java
@@ -1,9 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.config.model.api.ModelContext;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.vespa.config.content.core.StorCommunicationmanagerConfig;
+import com.yahoo.vespa.config.content.core.StorDistributormanagerConfig;
import com.yahoo.vespa.config.content.core.StorServerConfig;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
@@ -14,7 +15,7 @@ import org.w3c.dom.Element;
/**
* Represents specific configuration for a given distributor node.
*/
-public class Distributor extends ContentNode {
+public class Distributor extends ContentNode implements StorDistributormanagerConfig.Producer {
PersistenceEngine provider;
@@ -45,6 +46,24 @@ public class Distributor extends ContentNode {
}
}
+ private int tuneNumDistributorStripes() {
+ if (getHostResource() != null &&
+ !getHostResource().realResources().isUnspecified()) {
+ int cores = (int)getHostResource().realResources().vcpu();
+ // This should match the calculation used when node flavor is not available:
+ // storage/src/vespa/storage/common/bucket_stripe_utils.cpp
+ if (cores <= 16) {
+ return 1;
+ } else if (cores <= 64) {
+ return 2;
+ } else {
+ return 4;
+ }
+ } else {
+ return 0;
+ }
+ }
+
@Override
public void getConfig(StorServerConfig.Builder builder) {
super.getConfig(builder);
@@ -59,6 +78,11 @@ public class Distributor extends ContentNode {
}
@Override
+ public void getConfig(StorDistributormanagerConfig.Builder builder) {
+ builder.num_distributor_stripes(tuneNumDistributorStripes());
+ }
+
+ @Override
public String getStartupCommand() {
return "exec sbin/vespa-distributord -c $VESPA_CONFIG_ID";
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/DistributorCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/DistributorCluster.java
index 390c939c4b4..94cf33eae51 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/DistributorCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/DistributorCluster.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.config.model.deploy.DeployState;
@@ -43,7 +43,7 @@ public class DistributorCluster extends AbstractConfigProducer<Distributor> impl
private final boolean hasIndexedDocumentType;
private final boolean useThreePhaseUpdates;
private final int maxActivationInhibitedOutOfSyncGroups;
- private final int numDistributorStripes;
+ private final int mergeBusyWait;
public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder<DistributorCluster> {
@@ -106,12 +106,12 @@ public class DistributorCluster extends AbstractConfigProducer<Distributor> impl
final boolean hasIndexedDocumentType = clusterContainsIndexedDocumentType(documentsNode);
boolean useThreePhaseUpdates = deployState.getProperties().featureFlags().useThreePhaseUpdates();
int maxInhibitedGroups = deployState.getProperties().featureFlags().maxActivationInhibitedOutOfSyncGroups();
- int numDistributorStripes = deployState.getProperties().featureFlags().numDistributorStripes();
+ int mergeBusyWait = deployState.getProperties().featureFlags().distributorMergeBusyWait();
return new DistributorCluster(parent,
new BucketSplitting.Builder().build(new ModelElement(producerSpec)), gc,
hasIndexedDocumentType, useThreePhaseUpdates,
- maxInhibitedGroups, numDistributorStripes);
+ maxInhibitedGroups, mergeBusyWait);
}
}
@@ -119,7 +119,7 @@ public class DistributorCluster extends AbstractConfigProducer<Distributor> impl
GcOptions gc, boolean hasIndexedDocumentType,
boolean useThreePhaseUpdates,
int maxActivationInhibitedOutOfSyncGroups,
- int numDistributorStripes)
+ int mergeBusyWait)
{
super(parent, "distributor");
this.parent = parent;
@@ -128,7 +128,7 @@ public class DistributorCluster extends AbstractConfigProducer<Distributor> impl
this.hasIndexedDocumentType = hasIndexedDocumentType;
this.useThreePhaseUpdates = useThreePhaseUpdates;
this.maxActivationInhibitedOutOfSyncGroups = maxActivationInhibitedOutOfSyncGroups;
- this.numDistributorStripes = numDistributorStripes;
+ this.mergeBusyWait = mergeBusyWait;
}
@Override
@@ -142,7 +142,7 @@ public class DistributorCluster extends AbstractConfigProducer<Distributor> impl
builder.disable_bucket_activation(hasIndexedDocumentType == false);
builder.enable_metadata_only_fetch_phase_for_inconsistent_updates(useThreePhaseUpdates);
builder.max_activation_inhibited_out_of_sync_groups(maxActivationInhibitedOutOfSyncGroups);
- builder.num_distributor_stripes(numDistributorStripes);
+ builder.inhibit_merge_sending_on_busy_node_duration_sec(mergeBusyWait);
bucketSplitting.getConfig(builder);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/DocumentTypeVisitor.java b/config-model/src/main/java/com/yahoo/vespa/model/content/DocumentTypeVisitor.java
index ada5dedb05e..eeb0eac8fcc 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/DocumentTypeVisitor.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/DocumentTypeVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.document.select.Visitor;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/GlobalDistributionValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/content/GlobalDistributionValidator.java
index 0661ef67131..4ea07ae06de 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/GlobalDistributionValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/GlobalDistributionValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.documentmodel.NewDocumentType;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/IndexedHierarchicDistributionValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/content/IndexedHierarchicDistributionValidator.java
index dcb9ca17ef4..dbe813bfb2d 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/IndexedHierarchicDistributionValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/IndexedHierarchicDistributionValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
/**
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/Redundancy.java b/config-model/src/main/java/com/yahoo/vespa/model/content/Redundancy.java
index ba968411393..84267854fbe 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/Redundancy.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/Redundancy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.vespa.config.content.StorDistributionConfig;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ReservedDocumentTypeNameValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ReservedDocumentTypeNameValidator.java
index 9f081f7083b..f74134f26f4 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/ReservedDocumentTypeNameValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ReservedDocumentTypeNameValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.documentmodel.NewDocumentType;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ResourceLimits.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ResourceLimits.java
index a12e183b409..26bf8a33a73 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/ResourceLimits.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ResourceLimits.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.vespa.config.content.FleetcontrollerConfig;
@@ -37,8 +37,7 @@ public class ResourceLimits implements FleetcontrollerConfig.Producer, ProtonCon
// storage/src/vespa/storage/persistence/filestorage/service_layer_host_info_reporter.cpp
builder.cluster_feed_block_limit.put("memory", memoryLimit.orElse(0.8));
builder.cluster_feed_block_limit.put("disk", diskLimit.orElse(0.8));
- builder.cluster_feed_block_limit.put("attribute-enum-store", 0.89);
- builder.cluster_feed_block_limit.put("attribute-multi-value", 0.89);
+ builder.cluster_feed_block_limit.put("attribute-address-space", 0.89);
}
@Override
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/SearchCoverage.java b/config-model/src/main/java/com/yahoo/vespa/model/content/SearchCoverage.java
index 343c72cc78b..576301593b4 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/SearchCoverage.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/SearchCoverage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.google.common.base.Preconditions;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java b/config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java
index c764b5ab449..1afd78fc7c2 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.config.application.api.DeployLogger;
@@ -216,9 +216,10 @@ public class StorageGroup {
deployState.getDeployLogger().logApplicationPackage(Level.INFO, "'distribution-key' attribute on a content cluster's root group is ignored");
GroupBuilder groupBuilder = collectGroup(owner.isHosted(), group, nodes, null, null);
- StorageGroup storageGroup = (owner.isHosted())
- ? groupBuilder.buildHosted(deployState, owner, Optional.empty())
- : groupBuilder.buildNonHosted(deployState, owner, Optional.empty());
+ StorageGroup storageGroup = owner.isHosted()
+ ? groupBuilder.buildHosted(deployState, owner, Optional.empty())
+ : groupBuilder.buildNonHosted(deployState, owner, Optional.empty());
+
Redundancy redundancy = redundancyBuilder.build(owner.getName(), owner.isHosted(), storageGroup.subgroups.size(),
storageGroup.getNumberOfLeafGroups(), storageGroup.countNodes(false),
maxRedundancy);
@@ -241,7 +242,8 @@ public class StorageGroup {
int minNodesPerGroup = (int)Math.ceil((double)nodesSpec.minResources().nodes() / nodesSpec.minResources().groups());
if (minNodesPerGroup < redundancy) { // TODO: Fail on this on Vespa 8, and simplify
- context.getDeployLogger().logApplicationPackage(Level.WARNING,
+ context.getDeployLogger()
+ .logApplicationPackage(Level.WARNING,
"Cluster '" + clusterElement.stringAttribute("id") + "' " +
"specifies redundancy " + redundancy + " but cannot be higher than " +
"the minimum nodes per group, which is " + minNodesPerGroup);
@@ -304,19 +306,25 @@ public class StorageGroup {
storageGroup.nodes.add(nodeBuilder.build(deployState, owner, storageGroup));
}
- if (parent.isEmpty() && subGroups.isEmpty() && nodeBuilders.isEmpty()) // no nodes or groups: create single node
+ if (parent.isEmpty() && subGroups.isEmpty() && nodeBuilders.isEmpty()) { // no nodes or groups: create single node
storageGroup.nodes.add(buildSingleNode(deployState, owner));
+ }
return storageGroup;
}
private StorageNode buildSingleNode(DeployState deployState, ContentCluster parent) {
int distributionKey = 0;
- StorageNode sNode = new StorageNode(deployState.getProperties(), parent.getStorageNodes(), 1.0, distributionKey , false);
- sNode.setHostResource(parent.hostSystem().getHost(Container.SINGLENODE_CONTAINER_SERVICESPEC));
- PersistenceEngine provider = parent.getPersistence().create(deployState, sNode, storageGroup, null);
- new Distributor(deployState.getProperties(), parent.getDistributorNodes(), distributionKey, null, provider);
- return sNode;
+
+ StorageNode searchNode = new StorageNode(deployState.getProperties(), parent.getStorageCluster(), 1.0, distributionKey , false);
+ searchNode.setHostResource(parent.hostSystem().getHost(Container.SINGLENODE_CONTAINER_SERVICESPEC));
+ PersistenceEngine provider = parent.getPersistence().create(deployState, searchNode, storageGroup, null);
+ searchNode.initService(deployLogger);
+
+ Distributor distributor = new Distributor(deployState.getProperties(), parent.getDistributorNodes(), distributionKey, null, provider);
+ distributor.setHostResource(searchNode.getHostResource());
+ distributor.initService(deployLogger);
+ return searchNode;
}
/**
@@ -331,7 +339,7 @@ public class StorageGroup {
throw new IllegalArgumentException("Specifying individual groups is not supported on hosted applications");
Map<HostResource, ClusterMembership> hostMapping =
nodeRequirement.isPresent() ?
- provisionHosts(nodeRequirement.get(), owner.getStorageNodes().getClusterName(), owner.getRoot().hostSystem(), deployLogger) :
+ provisionHosts(nodeRequirement.get(), owner.getStorageCluster().getClusterName(), owner.getRoot().hostSystem(), deployLogger) :
Collections.emptyMap();
Map<Optional<ClusterSpec.Group>, Map<HostResource, ClusterMembership>> hostGroups = collectAllocatedSubgroups(hostMapping);
@@ -388,7 +396,7 @@ public class StorageGroup {
}
public StorageNode build(DeployState deployState, ContentCluster parent, StorageGroup storageGroup) {
- StorageNode sNode = new StorageNode.Builder().build(deployState, parent.getStorageNodes(), element.getXml());
+ StorageNode sNode = new StorageNode.Builder().build(deployState, parent.getStorageCluster(), element.getXml());
PersistenceEngine provider = parent.getPersistence().create(deployState, sNode, storageGroup, element);
new Distributor.Builder(clusterElement, provider).build(deployState, parent.getDistributorNodes(), element.getXml());
return sNode;
@@ -493,7 +501,7 @@ public class StorageGroup {
}
private static StorageNode createStorageNode(DeployState deployState, ContentCluster parent, HostResource hostResource, StorageGroup parentGroup, ClusterMembership clusterMembership) {
- StorageNode sNode = new StorageNode(deployState.getProperties(), parent.getStorageNodes(), null, clusterMembership.index(), clusterMembership.retired());
+ StorageNode sNode = new StorageNode(deployState.getProperties(), parent.getStorageCluster(), null, clusterMembership.index(), clusterMembership.retired());
sNode.setHostResource(hostResource);
sNode.initService(deployState.getDeployLogger());
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java b/config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java
index afe285faf19..529f4dbc9fd 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.config.model.api.ModelContext;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/TopologicalDocumentTypeSorter.java b/config-model/src/main/java/com/yahoo/vespa/model/content/TopologicalDocumentTypeSorter.java
index 19cd0223660..ccb0ab3665d 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/TopologicalDocumentTypeSorter.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/TopologicalDocumentTypeSorter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.documentmodel.NewDocumentType;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java
index fabcbbcc9ec..1f65d239d18 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.cluster;
import com.google.common.base.Preconditions;
@@ -123,8 +123,6 @@ public class ContentCluster extends AbstractConfigProducer<AbstractConfigProduce
boolean enableFeedBlockInDistributor = deployState.getProperties().featureFlags().enableFeedBlockInDistributor();
var resourceLimits = new ClusterResourceLimits.Builder(enableFeedBlockInDistributor,
stateIsHosted(deployState),
- deployState.featureFlags().throwIfResourceLimitsSpecified(),
- deployState.getDeployLogger(),
deployState.featureFlags().resourceLimitDisk(),
deployState.featureFlags().resourceLimitMemory())
.build(contentElement);
@@ -289,14 +287,14 @@ public class ContentCluster extends AbstractConfigProducer<AbstractConfigProduce
}
else if (admin.multitenant()) { // system tests: Put on logserver
if (admin.getClusterControllers() == null) {
- // TODO: logserver== null only obtains in unit tests, disallow it
+ // TODO: logserver == null only obtains in unit tests, disallow it
List<HostResource> host = admin.getLogserver() == null ? List.of() : List.of(admin.getLogserver().getHostResource());
admin.setClusterControllers(createClusterControllers(new ClusterControllerCluster(admin, "standalone", deployState),
host,
"cluster-controllers",
true,
deployState),
- deployState.getDeployLogger());
+ deployState);
}
clusterControllers = admin.getClusterControllers();
}
@@ -313,7 +311,7 @@ public class ContentCluster extends AbstractConfigProducer<AbstractConfigProduce
"cluster-controllers",
false,
deployState),
- deployState.getDeployLogger());
+ deployState);
}
clusterControllers = admin.getClusterControllers();
}
@@ -325,13 +323,13 @@ public class ContentCluster extends AbstractConfigProducer<AbstractConfigProduce
}
}
- public static final NodeResources clusterControllerResources = new NodeResources(0.5, 2, 10, 0.3, NodeResources.DiskSpeed.any, NodeResources.StorageType.any);
+ public static final NodeResources clusterControllerResources = new NodeResources(0.25, 1, 10, 0.3, NodeResources.DiskSpeed.any, NodeResources.StorageType.any);
private ClusterControllerContainerCluster getDedicatedSharedControllers(ModelElement contentElement, Admin admin,
ConfigModelContext context, DeployState deployState) {
if (admin.getClusterControllers() == null) {
NodesSpecification spec = NodesSpecification.requiredFromSharedParents(deployState.zone().environment().isProduction() ? 3 : 1,
- deployState.featureFlags().dedicatedClusterControllerFlavor().orElse(clusterControllerResources),
+ clusterControllerResources,
contentElement,
context);
@@ -347,7 +345,7 @@ public class ContentCluster extends AbstractConfigProducer<AbstractConfigProduce
"cluster-controllers",
true,
context.getDeployState()),
- deployState.getDeployLogger());
+ deployState);
}
return admin.getClusterControllers();
}
@@ -430,7 +428,7 @@ public class ContentCluster extends AbstractConfigProducer<AbstractConfigProduce
public DistributorCluster getDistributorNodes() { return distributorNodes; }
- public StorageCluster getStorageNodes() { return storageNodes; }
+ public StorageCluster getStorageCluster() { return storageNodes; }
public ClusterControllerConfig getClusterControllerConfig() { return clusterControllerConfig; }
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DocumentSelectionBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DocumentSelectionBuilder.java
index 1d5d2420c8f..ea444a6c7f8 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DocumentSelectionBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DocumentSelectionBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.cluster;
import com.yahoo.document.select.DocumentSelector;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomContentSearchBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomContentSearchBuilder.java
index 40bfa3241e2..e843412b233 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomContentSearchBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomContentSearchBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.cluster;
import com.yahoo.vespa.model.content.ContentSearch;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomDispatchBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomDispatchBuilder.java
index ffe07a00775..57da49fa351 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomDispatchBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomDispatchBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.cluster;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomResourceLimitsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomResourceLimitsBuilder.java
index 32b0f5b6477..cc80f76e772 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomResourceLimitsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomResourceLimitsBuilder.java
@@ -1,12 +1,9 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.cluster;
-import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
import com.yahoo.vespa.model.content.ResourceLimits;
-import java.util.logging.Level;
-
/**
* Builder for feed block resource limits.
*
@@ -14,23 +11,13 @@ import java.util.logging.Level;
*/
public class DomResourceLimitsBuilder {
- public static ResourceLimits.Builder createBuilder(ModelElement contentXml,
- boolean hostedVespa,
- boolean throwIfSpecified,
- DeployLogger deployLogger) {
+ public static ResourceLimits.Builder createBuilder(ModelElement contentXml, boolean hostedVespa) {
ResourceLimits.Builder builder = new ResourceLimits.Builder();
ModelElement resourceLimits = contentXml.child("resource-limits");
if (resourceLimits == null) { return builder; }
- if (hostedVespa) {
- String message = "Element '" + resourceLimits + "' is not allowed to be set";
- if (throwIfSpecified) throw new IllegalArgumentException(message);
-
-
- deployLogger.logApplicationPackage(Level.WARNING, message);
- // TODO: return (default values will then be used). Cannot be done now as an app needs current behavior
- //return builder;
- }
+ if (hostedVespa)
+ throw new IllegalArgumentException("Element '" + resourceLimits + "' is not allowed to be set");
if (resourceLimits.child("disk") != null) {
builder.setDiskLimit(resourceLimits.childAsDouble("disk"));
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomSearchCoverageBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomSearchCoverageBuilder.java
index 64953deb36e..023c08e5ff6 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomSearchCoverageBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomSearchCoverageBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.cluster;
import com.yahoo.vespa.model.content.SearchCoverage;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomTuningDispatchBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomTuningDispatchBuilder.java
index f429e40baa9..8ae29458ec9 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomTuningDispatchBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomTuningDispatchBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.cluster;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/EngineFactoryBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/EngineFactoryBuilder.java
index e31e9703f11..65e329ab622 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/EngineFactoryBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/EngineFactoryBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.cluster;
import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/GlobalDistributionBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/GlobalDistributionBuilder.java
index 1adb5d6d2d5..a4231105f42 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/GlobalDistributionBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/GlobalDistributionBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.cluster;
import com.yahoo.documentmodel.NewDocumentType;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/RedundancyBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/RedundancyBuilder.java
index 669d4ff6a1d..7b124593354 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/RedundancyBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/RedundancyBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.cluster;
import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/SearchDefinitionBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/SearchDefinitionBuilder.java
index b86a4b6fbff..d80cb0056fa 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/SearchDefinitionBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/SearchDefinitionBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.cluster;
import com.yahoo.documentmodel.DocumentTypeRepo;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/package-info.java
index 2302cb791f1..6e63913f8b4 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/package-info.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.model.content.cluster;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/engines/DummyPersistence.java b/config-model/src/main/java/com/yahoo/vespa/model/content/engines/DummyPersistence.java
index e68ee938846..20ff9274783 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/engines/DummyPersistence.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/engines/DummyPersistence.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.engines;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/engines/PersistenceEngine.java b/config-model/src/main/java/com/yahoo/vespa/model/content/engines/PersistenceEngine.java
index d063d52f8cd..d8e659080ae 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/engines/PersistenceEngine.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/engines/PersistenceEngine.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.engines;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/engines/ProtonEngine.java b/config-model/src/main/java/com/yahoo/vespa/model/content/engines/ProtonEngine.java
index 2a81ad79775..1a2ee8967bc 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/engines/ProtonEngine.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/engines/ProtonEngine.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.engines;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/engines/ProtonProvider.java b/config-model/src/main/java/com/yahoo/vespa/model/content/engines/ProtonProvider.java
index c02f8b2b737..499f4ab872b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/engines/ProtonProvider.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/engines/ProtonProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.engines;
import com.yahoo.vespa.config.content.core.StorServerConfig;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/engines/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/content/engines/package-info.java
index 75d6517b5eb..40ad204aa45 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/engines/package-info.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/engines/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.model.content.engines;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/content/package-info.java
index 786757f9fbf..756b3d67aba 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/package-info.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.model.content;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/FileStorProducer.java b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/FileStorProducer.java
index 57292b32a35..5c692e8ef6b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/FileStorProducer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/FileStorProducer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.storagecluster;
import com.yahoo.config.model.api.ModelContext;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/IntegrityCheckerProducer.java b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/IntegrityCheckerProducer.java
index 4fa117ad9e7..588e7c55ab9 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/IntegrityCheckerProducer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/IntegrityCheckerProducer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.storagecluster;
import com.yahoo.vespa.config.content.core.StorIntegritycheckerConfig;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/PersistenceProducer.java b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/PersistenceProducer.java
index 749cf8f374e..a041d1db2c0 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/PersistenceProducer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/PersistenceProducer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.storagecluster;
import com.yahoo.vespa.config.content.PersistenceConfig;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorServerProducer.java b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorServerProducer.java
index e89d45e8b83..c7d581fca35 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorServerProducer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorServerProducer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.storagecluster;
import com.yahoo.config.model.api.ModelContext;
@@ -32,6 +32,7 @@ public class StorServerProducer implements StorServerConfig.Producer {
private Integer maxMergesPerNode;
private Integer queueSize;
private Integer bucketDBStripeBits;
+ private Boolean ignoreMergeQueueLimit;
private StorServerProducer setMaxMergesPerNode(Integer value) {
if (value != null) {
@@ -54,6 +55,7 @@ public class StorServerProducer implements StorServerConfig.Producer {
this.clusterName = clusterName;
maxMergesPerNode = featureFlags.maxConcurrentMergesPerNode();
queueSize = featureFlags.maxMergeQueueSize();
+ ignoreMergeQueueLimit = featureFlags.ignoreMergeQueueLimit();
}
@Override
@@ -73,5 +75,8 @@ public class StorServerProducer implements StorServerConfig.Producer {
if (bucketDBStripeBits != null) {
builder.content_node_bucket_db_stripe_bits(bucketDBStripeBits);
}
+ if (ignoreMergeQueueLimit != null) {
+ builder.disable_queue_limits_for_chained_merges(ignoreMergeQueueLimit);
+ }
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorVisitorProducer.java b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorVisitorProducer.java
index 748fd7ab04e..da78d6b964c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorVisitorProducer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorVisitorProducer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.storagecluster;
import com.yahoo.vespa.config.content.StorFilestorConfig;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorageCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorageCluster.java
index 035c69a5bd4..c87fb8d120e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorageCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorageCluster.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.storagecluster;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/package-info.java
index a0e8cdd5e07..6eef5fa4479 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/package-info.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.model.content.storagecluster;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileDistributionConfigProducer.java b/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileDistributionConfigProducer.java
index 2c6808b5773..157c23732c7 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileDistributionConfigProducer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileDistributionConfigProducer.java
@@ -1,13 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.filedistribution;
-import com.yahoo.config.application.api.FileRegistry;
-import com.yahoo.config.model.api.ConfigServerSpec;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.Host;
import java.util.IdentityHashMap;
-import java.util.List;
import java.util.Map;
/**
@@ -15,23 +12,12 @@ import java.util.Map;
* <p>
* File distribution config producer, delegates getting config to {@link FileDistributionConfigProvider} (one per host)
*/
-public class FileDistributionConfigProducer extends AbstractConfigProducer {
+public class FileDistributionConfigProducer extends AbstractConfigProducer<AbstractConfigProducer<?>> {
private final Map<Host, FileDistributionConfigProvider> fileDistributionConfigProviders = new IdentityHashMap<>();
- private final FileDistributor fileDistributor;
- public FileDistributionConfigProducer(AbstractConfigProducer ancestor, FileRegistry fileRegistry,
- List<ConfigServerSpec> configServerSpec, boolean isHosted) {
- this(ancestor, new FileDistributor(fileRegistry, configServerSpec, isHosted));
- }
-
- private FileDistributionConfigProducer(AbstractConfigProducer parent, FileDistributor fileDistributor) {
+ public FileDistributionConfigProducer(AbstractConfigProducer<?> parent) {
super(parent, "filedistribution");
- this.fileDistributor = fileDistributor;
- }
-
- public FileDistributor getFileDistributor() {
- return fileDistributor;
}
public void addFileDistributionConfigProducer(Host host, FileDistributionConfigProvider fileDistributionConfigProvider) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileDistributionConfigProvider.java b/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileDistributionConfigProvider.java
index 47ee546181a..bf776ecf623 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileDistributionConfigProvider.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileDistributionConfigProvider.java
@@ -1,29 +1,17 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.filedistribution;
import com.yahoo.cloud.config.filedistribution.FiledistributorrpcConfig;
-import com.yahoo.cloud.config.filedistribution.FilereferencesConfig;
-import com.yahoo.config.FileReference;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.ConfigProxy;
import com.yahoo.vespa.model.Host;
-import java.util.Collection;
+public class FileDistributionConfigProvider extends AbstractConfigProducer<AbstractConfigProducer<?>> implements FiledistributorrpcConfig.Producer {
-public class FileDistributionConfigProvider extends AbstractConfigProducer
- implements FiledistributorrpcConfig.Producer, FilereferencesConfig.Producer {
-
- private final FileDistributor fileDistributor;
- private final boolean sendAllFiles;
private final Host host;
- public FileDistributionConfigProvider(AbstractConfigProducer parent,
- FileDistributor fileDistributor,
- boolean sendAllFiles,
- Host host) {
+ public FileDistributionConfigProvider(AbstractConfigProducer<?> parent, Host host) {
super(parent, host.getHostname());
- this.fileDistributor = fileDistributor;
- this.sendAllFiles = sendAllFiles;
this.host = host;
}
@@ -32,18 +20,4 @@ public class FileDistributionConfigProvider extends AbstractConfigProducer
builder.connectionspec("tcp/" + host.getHostname() + ":" + ConfigProxy.BASEPORT);
}
- @Override
- public void getConfig(FilereferencesConfig.Builder builder) {
- for (FileReference reference : getFileReferences()) {
- builder.filereferences(reference.value());
- }
- }
-
- private Collection<FileReference> getFileReferences() {
- if (sendAllFiles) {
- return fileDistributor.allFilesToSend();
- } else {
- return fileDistributor.filesToSendToHost(host);
- }
- }
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileDistributor.java b/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileDistributor.java
deleted file mode 100644
index d8da911e32f..00000000000
--- a/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileDistributor.java
+++ /dev/null
@@ -1,124 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.model.filedistribution;
-
-import com.yahoo.config.FileReference;
-import com.yahoo.config.model.api.ConfigServerSpec;
-import com.yahoo.config.model.api.FileDistribution;
-import com.yahoo.config.application.api.FileRegistry;
-import com.yahoo.vespa.model.ConfigProxy;
-import com.yahoo.vespa.model.Host;
-
-import java.nio.ByteBuffer;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-
-/**
- * Sends RPC requests to hosts (tenant hosts and config servers) asking them to start download of files. This is used
- * during prepare of an application. Services themselves will also request files, the methods in this class are used
- * so that hosts can start downloading files before services gets new config that needs these files. It also tries
- * to make sure that all config servers (not just the one where the application was deployed) have the files available.
- *
- * @author Tony Vaagenes
- */
-public class FileDistributor {
-
- private final FileRegistry fileRegistry;
- private final List<ConfigServerSpec> configServerSpecs;
- private final boolean isHosted;
-
- /** A map from file reference to the hosts to which that file reference should be distributed */
- private final Map<FileReference, Set<Host>> filesToHosts = new LinkedHashMap<>();
-
- public FileDistributor(FileRegistry fileRegistry, List<ConfigServerSpec> configServerSpecs, boolean isHosted) {
- this.fileRegistry = fileRegistry;
- this.configServerSpecs = configServerSpecs;
- this.isHosted = isHosted;
- }
-
- /**
- * Adds the given file to the associated application packages' registry of file and marks the file
- * for distribution to the given host.
- *
- * @return the reference to the file, created by the application package
- */
- public FileReference sendFileToHost(String relativePath, Host host) {
- return addFileReference(fileRegistry.addFile(relativePath), host);
- }
-
- /**
- * Adds the given file to the associated application packages' registry of file and marks the file
- * for distribution to the given host.
- *
- * @return the reference to the file, created by the application package
- */
- public FileReference sendUriToHost(String uri, Host host) {
- return addFileReference(fileRegistry.addUri(uri), host);
- }
-
- /**
- * Adds the given blob to the associated application packages' registry of file and marks the file
- * for distribution to the given host.
- *
- * @return the reference to the file, created by the application package
- */
- public FileReference sendBlobToHost(ByteBuffer blob, Host host) {
- return addFileReference(fileRegistry.addBlob(blob), host);
- }
-
- private FileReference addFileReference(FileReference reference, Host host) {
- filesToHosts.computeIfAbsent(reference, k -> new HashSet<>()).add(host);
- return reference;
- }
-
- /** Returns the files which has been marked for distribution to the given host */
- public Set<FileReference> filesToSendToHost(Host host) {
- Set<FileReference> files = new HashSet<>();
-
- for (Map.Entry<FileReference,Set<Host>> e : filesToHosts.entrySet()) {
- if (e.getValue().contains(host)) {
- files.add(e.getKey());
- }
- }
- return files;
- }
-
- public Set<Host> getTargetHosts() {
- Set<Host> hosts = new HashSet<>();
- for (Set<Host> hostSubset: filesToHosts.values())
- hosts.addAll(hostSubset);
- return hosts;
- }
-
- /** Returns the host which is the source of the files */
- public String fileSourceHost() {
- return fileRegistry.fileSourceHost();
- }
-
- public Set<FileReference> allFilesToSend() {
- return Set.copyOf(filesToHosts.keySet());
- }
-
- // should only be called during deploy
- public void sendDeployedFiles(FileDistribution dbHandler) {
- String fileSourceHost = fileSourceHost();
-
- // Ask other config servers to download, for redundancy
- configServerSpecs.stream()
- .filter(spec -> !spec.getHostName().equals(fileSourceHost))
- .forEach(spec -> dbHandler.startDownload(spec.getHostName(), spec.getConfigServerPort(), allFilesToSend()));
-
- // Skip starting download for application hosts when on hosted, since this is just a hint and requests for files
- // will fail until the application is activated (this call is done when preparing an application deployment)
- // due to authorization of RPC requests on config servers only considering files belonging to active applications
- if (isHosted) return;
-
- getTargetHosts().stream()
- .filter(host -> ! host.getHostname().equals(fileSourceHost))
- .forEach(host -> dbHandler.startDownload(host.getHostname(), ConfigProxy.BASEPORT, filesToSendToHost(host)));
- }
-
-}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileReferencesRepository.java b/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileReferencesRepository.java
new file mode 100644
index 00000000000..b2c0538e77b
--- /dev/null
+++ b/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/FileReferencesRepository.java
@@ -0,0 +1,26 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.model.filedistribution;
+
+import com.yahoo.config.FileReference;
+
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+/**
+ * Keeps track of what files to send with file distribution
+ *
+ * @author Tony Vaagenes
+ * @author hmusum
+ */
+public class FileReferencesRepository {
+
+ /** A set of file references that should be distributed */
+ private final Set<FileReference> fileReferences = new LinkedHashSet<>();
+
+ public FileReferencesRepository() { }
+
+ public void add(FileReference reference) { fileReferences.add(reference); }
+
+ public Set<FileReference> allFileReferences() { return Set.copyOf(fileReferences); }
+
+}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/package-info.java
index aeecbd59c84..ad16daffc35 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/package-info.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/filedistribution/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.model.filedistribution;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/generic/GenericServicesBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/generic/GenericServicesBuilder.java
index d2ce702c826..77acffe7f9d 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/generic/GenericServicesBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/generic/GenericServicesBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.generic;
import com.yahoo.config.model.ConfigModelContext;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/generic/GenericServicesModel.java b/config-model/src/main/java/com/yahoo/vespa/model/generic/GenericServicesModel.java
index 4326d5a8603..52f02aba021 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/generic/GenericServicesModel.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/generic/GenericServicesModel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.generic;
import com.yahoo.config.model.ConfigModel;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomModuleBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomModuleBuilder.java
index 63b5dc293ab..f2f930f201f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomModuleBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomModuleBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.generic.builder;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomServiceBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomServiceBuilder.java
index 1f44f61e86c..52f13667d89 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomServiceBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomServiceBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.generic.builder;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomServiceClusterBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomServiceClusterBuilder.java
index 6aa6bc80754..ea2151648cc 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomServiceClusterBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/DomServiceClusterBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.generic.builder;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/package-info.java
index b2db92c503c..fc2cd94d4c4 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/package-info.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/generic/builder/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.model.generic.builder;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/generic/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/generic/package-info.java
index 9f0843204e0..3163a070607 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/generic/package-info.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/generic/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.model.generic;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/generic/service/Module.java b/config-model/src/main/java/com/yahoo/vespa/model/generic/service/Module.java
index 9b7d9d65b74..d0b1520e905 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/generic/service/Module.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/generic/service/Module.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.generic.service;
import com.yahoo.config.model.producer.AbstractConfigProducer;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/generic/service/Service.java b/config-model/src/main/java/com/yahoo/vespa/model/generic/service/Service.java
index 325f511edf1..dbb2e6a45b3 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/generic/service/Service.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/generic/service/Service.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.generic.service;
import com.yahoo.vespa.model.AbstractService;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/generic/service/ServiceCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/generic/service/ServiceCluster.java
index e71459723a1..32daed92fac 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/generic/service/ServiceCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/generic/service/ServiceCluster.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.generic.service;
import com.yahoo.config.model.producer.AbstractConfigProducer;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/generic/service/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/generic/service/package-info.java
index e555b942ff4..2ad0df20a1a 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/generic/service/package-info.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/generic/service/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.model.generic.service;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/ml/ConvertedModel.java b/config-model/src/main/java/com/yahoo/vespa/model/ml/ConvertedModel.java
index 62f911c9f1a..1488f5fd112 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/ml/ConvertedModel.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/ml/ConvertedModel.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.ml;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlFunction;
@@ -84,11 +84,12 @@ public class ConvertedModel {
public static ConvertedModel fromSourceOrStore(Path modelPath,
boolean pathIsFile,
RankProfileTransformContext context) {
+ ApplicationPackage applicationPackage = context.rankProfile().applicationPackage();
ImportedMlModel sourceModel = // TODO: Convert to name here, make sure its done just one way
- context.importedModels().get(sourceModelFile(context.rankProfile().applicationPackage(), modelPath));
+ context.importedModels().get(sourceModelFile(applicationPackage, modelPath));
ModelName modelName = new ModelName(context.rankProfile().getName(), modelPath, pathIsFile);
- if (sourceModel == null && ! new ModelStore(context.rankProfile().applicationPackage(), modelName).exists())
+ if (sourceModel == null && ! new ModelStore(applicationPackage, modelName).exists())
throw new IllegalArgumentException("No model '" + modelPath + "' is available. Available models: " +
context.importedModels().all().stream().map(ImportedMlModel::source).collect(Collectors.joining(", ")));
@@ -96,26 +97,22 @@ public class ConvertedModel {
if ( ! sourceModel.isNative()) {
sourceModel = sourceModel.asNative();
}
- return fromSource(modelName,
- modelPath.toString(),
- context.rankProfile(),
- context.queryProfiles(),
- sourceModel);
+ return fromSource(applicationPackage, modelName, modelPath.toString(), context.rankProfile(),
+ context.queryProfiles(), sourceModel);
}
else {
- return fromStore(modelName,
- modelPath.toString(),
- context.rankProfile());
+ return fromStore(applicationPackage, modelName, modelPath.toString(), context.rankProfile());
}
}
- public static ConvertedModel fromSource(ModelName modelName,
+ public static ConvertedModel fromSource(ApplicationPackage applicationPackage,
+ ModelName modelName,
String modelDescription,
RankProfile rankProfile,
QueryProfileRegistry queryProfileRegistry,
ImportedMlModel importedModel) {
try {
- ModelStore modelStore = new ModelStore(rankProfile.applicationPackage(), modelName);
+ ModelStore modelStore = new ModelStore(applicationPackage, modelName);
return new ConvertedModel(modelName,
modelDescription,
convertAndStore(importedModel, rankProfile, queryProfileRegistry, modelStore),
@@ -127,11 +124,12 @@ public class ConvertedModel {
}
}
- public static ConvertedModel fromStore(ModelName modelName,
+ public static ConvertedModel fromStore(ApplicationPackage applicationPackage,
+ ModelName modelName,
String modelDescription,
RankProfile rankProfile) {
try {
- ModelStore modelStore = new ModelStore(rankProfile.applicationPackage(), modelName);
+ ModelStore modelStore = new ModelStore(applicationPackage, modelName);
return new ConvertedModel(modelName,
modelDescription,
convertStored(modelStore, rankProfile),
@@ -219,10 +217,8 @@ public class ConvertedModel {
for (Map.Entry<String, TensorType> input : expression.argumentTypes().entrySet()) {
profile.addInputFeature(input.getKey(), input.getValue());
}
- addExpression(expression, expression.getName(),
- constantsReplacedByFunctions,
- model, store, profile, queryProfiles,
- expressions);
+ addExpression(expression, expression.getName(), constantsReplacedByFunctions,
+ store, profile, queryProfiles, expressions);
}
// Transform and save function - must come after reading expressions due to optimization transforms
@@ -254,7 +250,6 @@ public class ConvertedModel {
private static void addExpression(ExpressionFunction expression,
String expressionName,
Set<String> constantsReplacedByFunctions,
- ImportedMlModel model,
ModelStore store,
RankProfile profile,
QueryProfileRegistry queryProfiles,
@@ -276,9 +271,7 @@ public class ConvertedModel {
}
for (RankingConstant constant : store.readLargeConstants()) {
- if ( ! profile.rankingConstants().asMap().containsKey(constant.getName())) {
- profile.rankingConstants().add(constant);
- }
+ profile.rankingConstants().putIfAbsent(constant);
}
for (Pair<String, RankingExpression> function : store.readFunctions()) {
@@ -324,11 +317,10 @@ public class ConvertedModel {
constantsReplacedByFunctions.add(constantName); // will replace constant(constantName) by constantName later
}
else {
- Path constantPath = store.writeLargeConstant(constantName, constantValue);
- if ( ! profile.rankingConstants().asMap().containsKey(constantName)) {
- profile.rankingConstants().add(new RankingConstant(constantName, constantValue.type(),
- constantPath.toString()));
- }
+ profile.rankingConstants().computeIfAbsent(constantName, name -> {
+ Path constantPath = store.writeLargeConstant(name, constantValue);
+ return new RankingConstant(name, constantValue.type(), constantPath.toString());
+ });
}
}
@@ -365,7 +357,7 @@ public class ConvertedModel {
addFunctionNamesIn(expression.getRoot(), functionNames, model);
for (String functionName : functionNames) {
Optional<TensorType> requiredType = model.inputTypeSpec(functionName).map(TensorType::fromSpec);
- if ( ! requiredType.isPresent()) continue; // Not a required function
+ if ( requiredType.isEmpty()) continue; // Not a required function
RankProfile.RankingExpressionFunction rankingExpressionFunction = profile.getFunctions().get(functionName);
if (rankingExpressionFunction == null)
@@ -634,7 +626,7 @@ public class ConvertedModel {
// Secret file format for remembering constants:
application.getFile(modelFiles.smallConstantsPath()).appendFile(name + "\t" +
constant.type().toString() + "\t" +
- constant.toString() + "\n");
+ constant + "\n");
}
/** Workaround for being constructed with the .preprocessed dir as root while later being used outside it */
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/ml/FeatureArguments.java b/config-model/src/main/java/com/yahoo/vespa/model/ml/FeatureArguments.java
index 4a02dc97d19..372b355b2d3 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/ml/FeatureArguments.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/ml/FeatureArguments.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.ml;
import com.yahoo.path.Path;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/ml/ModelName.java b/config-model/src/main/java/com/yahoo/vespa/model/ml/ModelName.java
index b6a9c855aeb..1e5e95f06d5 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/ml/ModelName.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/ml/ModelName.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.ml;
import com.yahoo.path.Path;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/ml/OnnxModelInfo.java b/config-model/src/main/java/com/yahoo/vespa/model/ml/OnnxModelInfo.java
index 58381fe5c3c..f0309cc630b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/ml/OnnxModelInfo.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/ml/OnnxModelInfo.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.ml;
import com.fasterxml.jackson.core.JsonEncoding;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/package-info.java
index 99fe0519855..48a19037569 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/package-info.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
Provides the classes for the Vespa config model framework.
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/routing/DocumentProtocol.java b/config-model/src/main/java/com/yahoo/vespa/model/routing/DocumentProtocol.java
index fbba377c950..e642da6176e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/routing/DocumentProtocol.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/routing/DocumentProtocol.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.routing;
import com.yahoo.config.model.ConfigModelRepo;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/routing/Protocol.java b/config-model/src/main/java/com/yahoo/vespa/model/routing/Protocol.java
index 49596aa0ddf..26469f68987 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/routing/Protocol.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/routing/Protocol.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.routing;
import com.yahoo.messagebus.routing.ApplicationSpec;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/routing/Routing.java b/config-model/src/main/java/com/yahoo/vespa/model/routing/Routing.java
index 6637c84df10..c858a9f6dcb 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/routing/Routing.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/routing/Routing.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.routing;
import com.yahoo.config.model.ConfigModel;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/AbstractSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/search/AbstractSearchCluster.java
index 3ca5b9e3a0a..82e8ecec543 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/AbstractSearchCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/AbstractSearchCluster.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
import com.yahoo.config.model.producer.AbstractConfigProducer;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroup.java b/config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroup.java
index 3e70bda216b..d9eddc1a548 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroup.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroup.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
import java.util.Map;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroupBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroupBuilder.java
index dc3d6d9dc58..f1676da2491 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroupBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroupBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
import com.yahoo.vespa.model.content.DispatchSpec;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java b/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java
index 9f0ff7db9f8..ea445068cb9 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
import com.yahoo.config.model.producer.AbstractConfigProducer;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentSelectionConverter.java b/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentSelectionConverter.java
index 0efee8f10f4..84a55184629 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentSelectionConverter.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentSelectionConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
import com.yahoo.document.select.*;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java
index c99549e82e9..28682e92f37 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
import com.yahoo.config.model.deploy.DeployState;
@@ -17,7 +17,6 @@ import com.yahoo.vespa.model.container.docproc.DocprocChain;
import com.yahoo.vespa.model.content.DispatchSpec;
import com.yahoo.vespa.model.content.SearchCoverage;
-import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
@@ -63,7 +62,7 @@ public class IndexedSearchCluster extends SearchCluster
return routingSelector;
}
- public IndexedSearchCluster(AbstractConfigProducer<SearchCluster> parent, String clusterName, int index, DeployState deployState) {
+ public IndexedSearchCluster(AbstractConfigProducer<SearchCluster> parent, String clusterName, int index) {
super(parent, clusterName, index);
unionCfg = new UnionConfiguration(this, documentDbs);
rootDispatch = new DispatchGroup(this);
@@ -204,7 +203,8 @@ public class IndexedSearchCluster extends SearchCluster
deployState.getProperties(),
deployState.rankProfileRegistry(),
deployState.getQueryProfiles().getRegistry(),
- deployState.getImportedModels()));
+ deployState.getImportedModels(),
+ deployState.getExecutor()));
// TODO: remove explicit adding of user configs when the complete content model is built using builders.
db.mergeUserConfigs(spec.getUserConfigs());
documentDbs.add(db);
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/IndexingDocprocChain.java b/config-model/src/main/java/com/yahoo/vespa/model/search/IndexingDocprocChain.java
index 8fe6b51f2b4..0446a6c5dce 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/IndexingDocprocChain.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/IndexingDocprocChain.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/IndexingProcessor.java b/config-model/src/main/java/com/yahoo/vespa/model/search/IndexingProcessor.java
index b8908e4438a..808fdccad2b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/IndexingProcessor.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/IndexingProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
import com.yahoo.container.bundle.BundleInstantiationSpecification;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/MultilevelDispatchValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/search/MultilevelDispatchValidator.java
index 6dde2dc8147..666fd77226b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/MultilevelDispatchValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/MultilevelDispatchValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
import com.yahoo.vespa.model.content.DispatchSpec;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/NamedSchema.java b/config-model/src/main/java/com/yahoo/vespa/model/search/NamedSchema.java
index ba81073709e..06f8198151f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/NamedSchema.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/NamedSchema.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
import com.yahoo.searchdefinition.Search;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/NodeResourcesTuning.java b/config-model/src/main/java/com/yahoo/vespa/model/search/NodeResourcesTuning.java
index 3fadd1f2efd..65efcf85b1d 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/NodeResourcesTuning.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/NodeResourcesTuning.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
import com.yahoo.config.provision.NodeResources;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/NodeSpec.java b/config-model/src/main/java/com/yahoo/vespa/model/search/NodeSpec.java
index a0ec1bb9d22..7214b79512c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/NodeSpec.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/NodeSpec.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
/**
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/SchemaDefinitionXMLHandler.java b/config-model/src/main/java/com/yahoo/vespa/model/search/SchemaDefinitionXMLHandler.java
index b505b5e681c..881b68e8396 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/SchemaDefinitionXMLHandler.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/SchemaDefinitionXMLHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchCluster.java
index 37fbc68cb3d..321aae5acde 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchCluster.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchInterface.java b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchInterface.java
index 7a3fc7dd715..cb3ab721bcf 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchInterface.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchInterface.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
/**
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java
index b77aa25cd43..4b3b464f9e5 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
import com.yahoo.cloud.config.filedistribution.FiledistributorrpcConfig;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNodeWrapper.java b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNodeWrapper.java
index 73feb0d3a16..08d18eb25e3 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNodeWrapper.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNodeWrapper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
public class SearchNodeWrapper implements SearchInterface {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/StreamingSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/search/StreamingSearchCluster.java
index 890e42eb60c..8dc711f50f6 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/StreamingSearchCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/StreamingSearchCluster.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
import com.yahoo.config.model.deploy.DeployState;
@@ -12,8 +12,6 @@ import com.yahoo.vespa.config.search.SummaryConfig;
import com.yahoo.vespa.config.search.SummarymapConfig;
import com.yahoo.vespa.config.search.vsm.VsmfieldsConfig;
import com.yahoo.vespa.config.search.vsm.VsmsummaryConfig;
-import java.io.File;
-import java.io.IOException;
import java.util.List;
/**
@@ -99,7 +97,8 @@ public class StreamingSearchCluster extends SearchCluster implements
deployState.getProperties(),
deployState.rankProfileRegistry(),
deployState.getQueryProfiles().getRegistry(),
- deployState.getImportedModels());
+ deployState.getImportedModels(),
+ deployState.getExecutor());
}
@Override
public DerivedConfiguration getSdConfig() {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/TransactionLogServer.java b/config-model/src/main/java/com/yahoo/vespa/model/search/TransactionLogServer.java
index 82477b811d5..b75a84cb8fc 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/TransactionLogServer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/TransactionLogServer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/Tuning.java b/config-model/src/main/java/com/yahoo/vespa/model/search/Tuning.java
index 853618b2cb3..c6d94ccfea0 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/Tuning.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/Tuning.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
import com.yahoo.config.model.producer.AbstractConfigProducer;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/utils/Duration.java b/config-model/src/main/java/com/yahoo/vespa/model/utils/Duration.java
index c55316186d2..5bb6d8cf6bf 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/utils/Duration.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/utils/Duration.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.utils;
import java.util.HashMap;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/utils/FileSender.java b/config-model/src/main/java/com/yahoo/vespa/model/utils/FileSender.java
index 52edec7114b..f683db48e97 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/utils/FileSender.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/utils/FileSender.java
@@ -1,8 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.utils;
import com.yahoo.config.FileReference;
import com.yahoo.config.application.api.DeployLogger;
+import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.config.model.producer.UserConfigRepo;
import com.yahoo.vespa.config.ConfigDefinition;
@@ -12,7 +13,6 @@ import com.yahoo.vespa.config.ConfigPayloadBuilder;
import com.yahoo.vespa.model.AbstractService;
import java.io.Serializable;
-import java.nio.ByteBuffer;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@@ -25,62 +25,39 @@ import java.util.logging.Level;
*/
public class FileSender implements Serializable {
+ private final Collection<? extends AbstractService> services;
+ private final FileRegistry fileRegistry;
+ private final DeployLogger logger;
+
+ public FileSender(Collection<? extends AbstractService> services, FileRegistry fileRegistry, DeployLogger logger) {
+ this.services = services;
+ this.fileRegistry = fileRegistry;
+ this.logger = logger;
+ }
+
/**
* Send the given file to all given services.
*
- * @param relativePath The path to the file, relative to the app pkg.
+ * @param fileReference The file reference to send.
* @param services The services to send the file to.
- * @return The file reference that the file was given, never null.
* @throws IllegalStateException if services is empty.
*/
- public static FileReference sendFileToServices(String relativePath,
- Collection<? extends AbstractService> services) {
+ public static void send(FileReference fileReference, Collection<? extends AbstractService> services) {
if (services.isEmpty()) {
throw new IllegalStateException("No service instances. Probably a standalone cluster setting up <nodes> " +
"using 'count' instead of <node> tags.");
}
- FileReference fileref = null;
- for (AbstractService service : services) {
- // The same reference will be returned from each call.
- fileref = service.sendFile(relativePath);
- }
- return fileref;
- }
-
- public static FileReference sendUriToServices(String uri, Collection<? extends AbstractService> services) {
- if (services.isEmpty()) {
- throw new IllegalStateException("No service instances. Probably a standalone cluster setting up <nodes> " +
- "using 'count' instead of <node> tags.");
- }
-
- FileReference fileref = null;
for (AbstractService service : services) {
// The same reference will be returned from each call.
- fileref = service.sendUri(uri);
+ service.send(fileReference);
}
- return fileref;
- }
-
- public static FileReference sendBlobToServices(ByteBuffer blob, Collection<? extends AbstractService> services) {
- if (services.isEmpty()) {
- throw new IllegalStateException("No service instances. Probably a standalone cluster setting up <nodes> " +
- "using 'count' instead of <node> tags.");
- }
-
- FileReference fileref = null;
- for (AbstractService service : services) {
- // The same reference will be returned from each call.
- fileref = service.sendBlob(blob);
- }
- return fileref;
}
/**
* Sends all user configured files for a producer to all given services.
*/
- public static <PRODUCER extends AbstractConfigProducer<?>>
- void sendUserConfiguredFiles(PRODUCER producer, Collection<? extends AbstractService> services, DeployLogger logger) {
+ public <PRODUCER extends AbstractConfigProducer<?>> void sendUserConfiguredFiles(PRODUCER producer) {
if (services.isEmpty())
return;
@@ -89,56 +66,54 @@ public class FileSender implements Serializable {
for (ConfigDefinitionKey key : userConfigs.configsProduced()) {
ConfigPayloadBuilder builder = userConfigs.get(key);
try {
- sendUserConfiguredFiles(builder, sentFiles, services, key, logger);
+ sendUserConfiguredFiles(builder, sentFiles, key);
} catch (IllegalArgumentException e) {
- throw new IllegalArgumentException("Unable to send files for " + key, e);
+ throw new IllegalArgumentException("Unable to send file specified in " + key, e);
}
}
}
- private static void sendUserConfiguredFiles(ConfigPayloadBuilder builder,
- Map<String, FileReference> sentFiles,
- Collection<? extends AbstractService> services,
- ConfigDefinitionKey key, DeployLogger logger) {
+ private void sendUserConfiguredFiles(ConfigPayloadBuilder builder, Map<String, FileReference> sentFiles, ConfigDefinitionKey key) {
ConfigDefinition configDefinition = builder.getConfigDefinition();
if (configDefinition == null) {
// TODO: throw new IllegalArgumentException("Not able to find config definition for " + builder);
- logger.logApplicationPackage(Level.FINE, "Not able to find config definition for " + key + ". Will not send files for this config");
+ logger.logApplicationPackage(Level.FINE, "Not able to find config definition for " + key +
+ ". Will not send files for this config");
return;
}
// Inspect fields at this level
- sendEntries(builder, sentFiles, services, configDefinition.getFileDefs());
- sendEntries(builder, sentFiles, services, configDefinition.getPathDefs());
+ sendEntries(builder, sentFiles, configDefinition.getFileDefs());
+ sendEntries(builder, sentFiles, configDefinition.getPathDefs());
// Inspect arrays
for (Map.Entry<String, ConfigDefinition.ArrayDef> entry : configDefinition.getArrayDefs().entrySet()) {
if (isFileOrPathArray(entry)) {
ConfigPayloadBuilder.Array array = builder.getArray(entry.getKey());
- sendFileEntries(array.getElements(), sentFiles, services);
+ sendFileEntries(array.getElements(), sentFiles);
}
}
// Maps
for (Map.Entry<String, ConfigDefinition.LeafMapDef> entry : configDefinition.getLeafMapDefs().entrySet()) {
if (isFileOrPathMap(entry)) {
ConfigPayloadBuilder.MapBuilder map = builder.getMap(entry.getKey());
- sendFileEntries(map.getElements(), sentFiles, services);
+ sendFileEntries(map.getElements(), sentFiles);
}
}
// Inspect inner fields
for (String name : configDefinition.getStructDefs().keySet()) {
- sendUserConfiguredFiles(builder.getObject(name), sentFiles, services, key, logger);
+ sendUserConfiguredFiles(builder.getObject(name), sentFiles, key);
}
for (String name : configDefinition.getInnerArrayDefs().keySet()) {
ConfigPayloadBuilder.Array array = builder.getArray(name);
for (ConfigPayloadBuilder element : array.getElements()) {
- sendUserConfiguredFiles(element, sentFiles, services, key, logger);
+ sendUserConfiguredFiles(element, sentFiles, key);
}
}
for (String name : configDefinition.getStructMapDefs().keySet()) {
ConfigPayloadBuilder.MapBuilder map = builder.getMap(name);
for (ConfigPayloadBuilder element : map.getElements()) {
- sendUserConfiguredFiles(element, sentFiles, services, key, logger);
+ sendUserConfiguredFiles(element, sentFiles, key);
}
}
@@ -154,27 +129,29 @@ public class FileSender implements Serializable {
return ("file".equals(arrayType) || "path".equals(arrayType));
}
- private static void sendEntries(ConfigPayloadBuilder builder, Map<String, FileReference> sentFiles, Collection<? extends AbstractService> services, Map<String, ? extends DefaultValued<String>> entries) {
+ private void sendEntries(ConfigPayloadBuilder builder, Map<String, FileReference> sentFiles, Map<String, ? extends DefaultValued<String>> entries) {
for (String name : entries.keySet()) {
ConfigPayloadBuilder fileEntry = builder.getObject(name);
if (fileEntry.getValue() == null) {
- throw new IllegalArgumentException("Unable to send file for field '" + name + "'. Invalid config value " + fileEntry.getValue());
+ throw new IllegalArgumentException("Unable to send file for field '" + name + "': Invalid config value " + fileEntry.getValue());
}
- sendFileEntry(fileEntry, sentFiles, services);
+ sendFileEntry(fileEntry, sentFiles);
}
}
- private static void sendFileEntries(Collection<ConfigPayloadBuilder> builders, Map<String, FileReference> sentFiles, Collection<? extends AbstractService> services) {
+ private void sendFileEntries(Collection<ConfigPayloadBuilder> builders, Map<String, FileReference> sentFiles) {
for (ConfigPayloadBuilder builder : builders) {
- sendFileEntry(builder, sentFiles, services);
+ sendFileEntry(builder, sentFiles);
}
}
- private static void sendFileEntry(ConfigPayloadBuilder builder, Map<String, FileReference> sentFiles, Collection<? extends AbstractService> services) {
+ private void sendFileEntry(ConfigPayloadBuilder builder, Map<String, FileReference> sentFiles) {
String path = builder.getValue();
FileReference reference = sentFiles.get(path);
if (reference == null) {
- reference = sendFileToServices(path, services);
+
+ reference = fileRegistry.addFile(path);
+ send(reference, services);
sentFiles.put(path, reference);
}
builder.setValue(reference.value());
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/utils/FreezableMap.java b/config-model/src/main/java/com/yahoo/vespa/model/utils/FreezableMap.java
index 6b1cdb8361a..7dabefeec47 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/utils/FreezableMap.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/utils/FreezableMap.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.utils;
import java.util.Collection;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/utils/internal/ReflectionUtil.java b/config-model/src/main/java/com/yahoo/vespa/model/utils/internal/ReflectionUtil.java
index ab46bb287b1..799107ea763 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/utils/internal/ReflectionUtil.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/utils/internal/ReflectionUtil.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.utils.internal;
import com.google.common.reflect.TypeToken;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/utils/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/utils/package-info.java
index 936442844a8..e3f75fdce5a 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/utils/package-info.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/utils/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.model.utils;
diff --git a/config-model/src/main/javacc/SDParser.jj b/config-model/src/main/javacc/SDParser.jj
index fb24b50aa99..01a8ac21658 100644
--- a/config-model/src/main/javacc/SDParser.jj
+++ b/config-model/src/main/javacc/SDParser.jj
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// --------------------------------------------------------------------------------
//
// JavaCC options. When this file is changed, run "mvn generate-sources" to rebuild
@@ -55,8 +55,10 @@ import com.yahoo.vespa.documentmodel.SummaryTransform;
import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeployLogger;
+import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.config.model.api.ModelContext;
import com.yahoo.language.Linguistics;
+import com.yahoo.language.process.Embedder;
import com.yahoo.language.simple.SimpleLinguistics;
import com.yahoo.search.query.ranking.Diversity;
import java.util.Map;
@@ -75,6 +77,7 @@ public class SDParser {
private DocumentTypeManager docMan = null;
private ApplicationPackage app;
+ private FileRegistry fileRegistry;
private DeployLogger deployLogger;
private ModelContext.Properties properties;
private RankProfileRegistry rankProfileRegistry;
@@ -86,12 +89,14 @@ public class SDParser {
* @param documentsOnly true to only parse the document aspect of a search definition (e.g skip rank profiles)
*/
public SDParser(SimpleCharStream stream,
+ FileRegistry fileRegistry,
DeployLogger deployLogger,
ModelContext.Properties properties,
ApplicationPackage applicationPackage,
RankProfileRegistry rankProfileRegistry,
boolean documentsOnly) {
this(stream);
+ this.fileRegistry = fileRegistry;
this.deployLogger = deployLogger;
this.properties = properties;
this.app = applicationPackage;
@@ -107,7 +112,7 @@ public class SDParser {
*/
@SuppressWarnings("deprecation")
private IndexingOperation newIndexingOperation(boolean multiline) throws ParseException {
- return newIndexingOperation(multiline, new SimpleLinguistics());
+ return newIndexingOperation(multiline, new SimpleLinguistics(), Embedder.throwsOnUse);
}
/**
@@ -116,13 +121,13 @@ public class SDParser {
* @param multiline Whether or not to allow multi-line expressions.
* @param linguistics What to use for tokenizing.
*/
- private IndexingOperation newIndexingOperation(boolean multiline, Linguistics linguistics) throws ParseException {
+ private IndexingOperation newIndexingOperation(boolean multiline, Linguistics linguistics, Embedder embedder) throws ParseException {
SimpleCharStream input = (SimpleCharStream)token_source.input_stream;
if (token.next != null) {
input.backup(token.next.image.length());
}
try {
- return IndexingOperation.fromStream(input, multiline, linguistics);
+ return IndexingOperation.fromStream(input, multiline, linguistics, embedder);
} finally {
token.next = null;
jj_ntk = -1;
@@ -299,6 +304,7 @@ TOKEN :
| < ENABLEONLYBITVECTOR: "enable-only-bit-vector" >
| < FASTACCESS: "fast-access" >
| < MUTABLE: "mutable" >
+| < PAGED: "paged" >
| < FASTSEARCH: "fast-search" >
| < HUGE: "huge" >
| < TENSOR_TYPE: "tensor" ("<" (~["<",">"])+ ">")? "(" (~["(",")"])+ ")" >
@@ -429,9 +435,10 @@ Search rootSchema(String dir) :
Search search;
}
{
- ( ( <SCHEMA> | <SEARCH> ) name = identifier() { search = new Search(name, app, deployLogger, properties);
- rankProfileRegistry.add(new DefaultRankProfile(search, rankProfileRegistry));
- rankProfileRegistry.add(new UnrankedRankProfile(search, rankProfileRegistry));}
+ ( ( <SCHEMA> | <SEARCH> ) name = identifier() {
+ search = new Search(name, app, fileRegistry,deployLogger, properties);
+ rankProfileRegistry.add(new DefaultRankProfile(search, rankProfileRegistry, search.rankingConstants()));
+ rankProfileRegistry.add(new UnrankedRankProfile(search, rankProfileRegistry, search.rankingConstants()));}
lbrace() (rootSchemaItem(search) (<NL>)*)* <RBRACE> (<NL>)* <EOF>)
{ return search; }
}
@@ -470,7 +477,7 @@ Object rootSchemaItem(Search search) : { }
*/
Search rootDocument(String dir) :
{
- Search search = new DocumentOnlySearch(app, deployLogger, properties);
+ Search search = new DocumentOnlySearch(app, fileRegistry, deployLogger, properties);
}
{
( (rootDocumentItem(search) (<NL>)*)*<EOF> )
@@ -1229,12 +1236,13 @@ Object attributeSetting(FieldOperationContainer field, AttributeOperation attrib
}
{
(
- <HUGE> { attribute.setHuge(true); }
- | <FASTSEARCH> { attribute.setFastSearch(true); }
- | <FASTACCESS> { attribute.setFastAccess(true); }
- | <MUTABLE> { attribute.setMutable(true); }
- | <ENABLEBITVECTORS> { attribute.setEnableBitVectors(true); }
- | <ENABLEONLYBITVECTOR> { attribute.setEnableOnlyBitVector(true); }
+ <HUGE> { attribute.setHuge(true); }
+ | <FASTSEARCH> { attribute.setFastSearch(true); }
+ | <FASTACCESS> { attribute.setFastAccess(true); }
+ | <MUTABLE> { attribute.setMutable(true); }
+ | <PAGED> { attribute.setPaged(true); }
+ | <ENABLEBITVECTORS> { attribute.setEnableBitVectors(true); }
+ | <ENABLEONLYBITVECTOR> { attribute.setEnableOnlyBitVector(true); }
| sorting(field, attributeName)
| <ALIAS> { String alias; String aliasedName=attributeName; } [aliasedName = identifier()] <COLON> alias = identifierWithDash() {
attribute.setDoAlias(true);
@@ -2020,12 +2028,12 @@ void rankProfile(Search search) :
( ( <MODEL> | <RANKPROFILE> ) name = identifierWithDash()
{
if (documentsOnly) {
- profile = new DocumentsOnlyRankProfile(name, search, rankProfileRegistry);
+ profile = new DocumentsOnlyRankProfile(name, search, rankProfileRegistry, search.rankingConstants());
}
else if ("default".equals(name)) {
profile = rankProfileRegistry.get(search, "default");
} else {
- profile = new RankProfile(name, search, rankProfileRegistry);
+ profile = new RankProfile(name, search, rankProfileRegistry, search.rankingConstants());
}
}
[inheritsRankProfile(profile)]
@@ -2736,6 +2744,7 @@ String identifier() : { }
| <SECONDPHASE>
| <SORTING>
| <SOURCE>
+ | <PAGED>
| <SSCONTEXTUAL>
| <SSOVERRIDE>
| <SSTITLE>
diff --git a/config-model/src/main/perl/vespa-deploy b/config-model/src/main/perl/vespa-deploy
index d66295d4c36..02a6737185d 100755
--- a/config-model/src/main/perl/vespa-deploy
+++ b/config-model/src/main/perl/vespa-deploy
@@ -1,5 +1,5 @@
#!/usr/bin/env perl
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# This script is for uploading, preparing, activating and fetching
# application packages to a cloud config server
@@ -412,6 +412,7 @@ sub http_upload {
debug("output=$output\n");
$configsource_url = shift(@configsources);
if ($configsource_url) {
+ $configsource_url =~ s/\/$//; # Remove last / from configsource_url
$configsource_url_used = $configsource_url;
$retry = 1;
print_request_failed($exitcode, $configsource_url_used);
diff --git a/config-model/src/main/perl/vespa-expand-config.pl b/config-model/src/main/perl/vespa-expand-config.pl
index 4ceadc7c834..7fa2ce69707 100755
--- a/config-model/src/main/perl/vespa-expand-config.pl
+++ b/config-model/src/main/perl/vespa-expand-config.pl
@@ -1,5 +1,5 @@
#!/usr/bin/env perl
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#============================================================================
# @version $Id: expand-config.pl,v 1.1 2006-07-26 15:52:43 gv Exp $
diff --git a/config-model/src/main/python/ES_Vespa_parser.py b/config-model/src/main/python/ES_Vespa_parser.py
index 86df16981f0..a095fd82fcf 100644
--- a/config-model/src/main/python/ES_Vespa_parser.py
+++ b/config-model/src/main/python/ES_Vespa_parser.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import json
import argparse
import os, sys
diff --git a/config-model/src/main/resources/schema/admin.rnc b/config-model/src/main/resources/schema/admin.rnc
index a75b51a567a..2b9b414374c 100644
--- a/config-model/src/main/resources/schema/admin.rnc
+++ b/config-model/src/main/resources/schema/admin.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
Admin = AdminV2 | AdminV3 | AdminV4
AdminV2 =
diff --git a/config-model/src/main/resources/schema/clients-v2.rnc b/config-model/src/main/resources/schema/clients-v2.rnc
index 5e50135edee..5a9353321c8 100644
--- a/config-model/src/main/resources/schema/clients-v2.rnc
+++ b/config-model/src/main/resources/schema/clients-v2.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
Clients20 =
attribute version { "2.0" } &
LoadTypes?
diff --git a/config-model/src/main/resources/schema/clients.rnc b/config-model/src/main/resources/schema/clients.rnc
index 3c81303eaf7..1e1dffc90b9 100644
--- a/config-model/src/main/resources/schema/clients.rnc
+++ b/config-model/src/main/resources/schema/clients.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
include "clients-v2.rnc"
Clients = element clients {
diff --git a/config-model/src/main/resources/schema/common.rnc b/config-model/src/main/resources/schema/common.rnc
index fa9a6c28ce2..f56f9ee503e 100644
--- a/config-model/src/main/resources/schema/common.rnc
+++ b/config-model/src/main/resources/schema/common.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
service.attlist &= attribute hostalias { xsd:NCName }
service.attlist &= attribute baseport { xsd:unsignedShort }?
service.attlist &= attribute jvmargs { text }?
diff --git a/config-model/src/main/resources/schema/container-include.rnc b/config-model/src/main/resources/schema/container-include.rnc
index fcb218036cb..8f6a8a3bada 100644
--- a/config-model/src/main/resources/schema/container-include.rnc
+++ b/config-model/src/main/resources/schema/container-include.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
include "containercluster.rnc"
include "common.rnc"
include "container.rnc"
diff --git a/config-model/src/main/resources/schema/container.rnc b/config-model/src/main/resources/schema/container.rnc
index 3c219558b9d..c16a5c4e3a5 100644
--- a/config-model/src/main/resources/schema/container.rnc
+++ b/config-model/src/main/resources/schema/container.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Schema for common container options
include "processing.rnc"
diff --git a/config-model/src/main/resources/schema/containercluster.rnc b/config-model/src/main/resources/schema/containercluster.rnc
index 992689a2189..b06bf0897cf 100644
--- a/config-model/src/main/resources/schema/containercluster.rnc
+++ b/config-model/src/main/resources/schema/containercluster.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
ContainerCluster = element container | jdisc {
attribute version { "1.0" } &
attribute id { xsd:NCName }? &
@@ -105,7 +105,16 @@ ZooKeeper = element zookeeper {
}
ModelEvaluation = element model-evaluation {
- empty
+ element onnx {
+ element models {
+ element model {
+ attribute name { string } &
+ element intraop-threads { xsd:nonNegativeInteger }? &
+ element interop-threads { xsd:nonNegativeInteger }? &
+ element execution-mode { string "sequential" | string "parallel" }?
+ }*
+ }?
+ }?
}
Ssl = element ssl {
diff --git a/config-model/src/main/resources/schema/content.rnc b/config-model/src/main/resources/schema/content.rnc
index 91e9e069e17..6711cb52204 100644
--- a/config-model/src/main/resources/schema/content.rnc
+++ b/config-model/src/main/resources/schema/content.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
include "container.rnc"
diff --git a/config-model/src/main/resources/schema/deployment.rnc b/config-model/src/main/resources/schema/deployment.rnc
index 171112f6bd7..9b2338b32ea 100644
--- a/config-model/src/main/resources/schema/deployment.rnc
+++ b/config-model/src/main/resources/schema/deployment.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# RELAX NG Compact Syntax
# Vespa Deployment file
@@ -51,7 +51,8 @@ ParallelInstances = element parallel {
}
Upgrade = element upgrade {
- attribute policy { xsd:string }
+ attribute policy { xsd:string }? &
+ attribute rollout { xsd:string }?
}
BlockChange = element block-change {
diff --git a/config-model/src/main/resources/schema/docproc-standalone.rnc b/config-model/src/main/resources/schema/docproc-standalone.rnc
index 4a06ac38b6e..caba5327e25 100644
--- a/config-model/src/main/resources/schema/docproc-standalone.rnc
+++ b/config-model/src/main/resources/schema/docproc-standalone.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
include "common.rnc"
include "container.rnc"
include "searchchains.rnc"
diff --git a/config-model/src/main/resources/schema/docproc.rnc b/config-model/src/main/resources/schema/docproc.rnc
index 3ee249c89d4..1e7e28b2002 100644
--- a/config-model/src/main/resources/schema/docproc.rnc
+++ b/config-model/src/main/resources/schema/docproc.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
DocProc = element docproc {
DocProcV3
}
diff --git a/config-model/src/main/resources/schema/federation.rnc b/config-model/src/main/resources/schema/federation.rnc
index 227bebc16ba..15b57b9dd7b 100644
--- a/config-model/src/main/resources/schema/federation.rnc
+++ b/config-model/src/main/resources/schema/federation.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Schema for federation configuration inside the searchchains section.
GenericSource =
diff --git a/config-model/src/main/resources/schema/genericcluster.rnc b/config-model/src/main/resources/schema/genericcluster.rnc
index 9afe92928c6..a749a592c09 100644
--- a/config-model/src/main/resources/schema/genericcluster.rnc
+++ b/config-model/src/main/resources/schema/genericcluster.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Generic, application-specific service cluster
#
include "genericmodule.rnc"
diff --git a/config-model/src/main/resources/schema/genericmodule.rnc b/config-model/src/main/resources/schema/genericmodule.rnc
index 46fb6b165a9..5f8ac3f7dda 100644
--- a/config-model/src/main/resources/schema/genericmodule.rnc
+++ b/config-model/src/main/resources/schema/genericmodule.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Generic, nestable module
GenericModule = element module {
diff --git a/config-model/src/main/resources/schema/hosts.rnc b/config-model/src/main/resources/schema/hosts.rnc
index aa798c2f5de..d089b23804e 100644
--- a/config-model/src/main/resources/schema/hosts.rnc
+++ b/config-model/src/main/resources/schema/hosts.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# RELAX NG Compact Syntax
# Vespa Hosts file
diff --git a/config-model/src/main/resources/schema/legacygenericcluster.rnc b/config-model/src/main/resources/schema/legacygenericcluster.rnc
index f272a7b7bc9..b00d4ff097b 100644
--- a/config-model/src/main/resources/schema/legacygenericcluster.rnc
+++ b/config-model/src/main/resources/schema/legacygenericcluster.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Generic, application-specific service cluster
#
include "legacygenericmodule.rnc"
diff --git a/config-model/src/main/resources/schema/legacygenericmodule.rnc b/config-model/src/main/resources/schema/legacygenericmodule.rnc
index 54df9233a84..a54f7fd9afc 100644
--- a/config-model/src/main/resources/schema/legacygenericmodule.rnc
+++ b/config-model/src/main/resources/schema/legacygenericmodule.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Generic, nestable module
LegacyGenericModule = element module {
diff --git a/config-model/src/main/resources/schema/processing.rnc b/config-model/src/main/resources/schema/processing.rnc
index a33722d15b9..a753de70265 100644
--- a/config-model/src/main/resources/schema/processing.rnc
+++ b/config-model/src/main/resources/schema/processing.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Schema for processing components and chains
ProcessingRenderer = element renderer {
diff --git a/config-model/src/main/resources/schema/routing-standalone.rnc b/config-model/src/main/resources/schema/routing-standalone.rnc
index 14c65793dae..e95369fd192 100644
--- a/config-model/src/main/resources/schema/routing-standalone.rnc
+++ b/config-model/src/main/resources/schema/routing-standalone.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
include "common.rnc"
include "routing.rnc"
start = Routing
diff --git a/config-model/src/main/resources/schema/routing.rnc b/config-model/src/main/resources/schema/routing.rnc
index 2814e9319ff..5ca033b2fd7 100644
--- a/config-model/src/main/resources/schema/routing.rnc
+++ b/config-model/src/main/resources/schema/routing.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# RELAX NG compact syntax pattern
# for Vespa MessageBus explicit routing config
Routing = element routing {
diff --git a/config-model/src/main/resources/schema/schemas.xml b/config-model/src/main/resources/schema/schemas.xml
index 43b8b81b15a..c3f8e2be448 100644
--- a/config-model/src/main/resources/schema/schemas.xml
+++ b/config-model/src/main/resources/schema/schemas.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
<documentElement localName="hosts" uri="hosts.rnc"/>
<documentElement localName="services" uri="services.rnc"/>
diff --git a/config-model/src/main/resources/schema/searchchains-standalone.rnc b/config-model/src/main/resources/schema/searchchains-standalone.rnc
index b891514b88f..6725627143d 100644
--- a/config-model/src/main/resources/schema/searchchains-standalone.rnc
+++ b/config-model/src/main/resources/schema/searchchains-standalone.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
include "common.rnc"
include "searchchains.rnc"
start = SearchChains
diff --git a/config-model/src/main/resources/schema/searchchains.rnc b/config-model/src/main/resources/schema/searchchains.rnc
index 60ae717d746..d4c9e8f4f98 100644
--- a/config-model/src/main/resources/schema/searchchains.rnc
+++ b/config-model/src/main/resources/schema/searchchains.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#Schema for search chains and searchers inside the searchchains section.
include "federation.rnc"
diff --git a/config-model/src/main/resources/schema/services.rnc b/config-model/src/main/resources/schema/services.rnc
index fe728506124..758fa107ee8 100644
--- a/config-model/src/main/resources/schema/services.rnc
+++ b/config-model/src/main/resources/schema/services.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
include "common.rnc"
include "admin.rnc"
include "clients.rnc"
diff --git a/config-model/src/main/resources/schema/validation-overrides.rnc b/config-model/src/main/resources/schema/validation-overrides.rnc
index f5af03f7f03..a0caa10fc60 100644
--- a/config-model/src/main/resources/schema/validation-overrides.rnc
+++ b/config-model/src/main/resources/schema/validation-overrides.rnc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# RELAX NG Compact Syntax
# Vespa validation overrides
diff --git a/config-model/src/test/cfg/admin/adminconfig20/hosts.xml b/config-model/src/test/cfg/admin/adminconfig20/hosts.xml
index cd73cbd3126..5f18fd65b63 100644
--- a/config-model/src/test/cfg/admin/adminconfig20/hosts.xml
+++ b/config-model/src/test/cfg/admin/adminconfig20/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>adminserver</alias>
diff --git a/config-model/src/test/cfg/admin/adminconfig20/services.xml b/config-model/src/test/cfg/admin/adminconfig20/services.xml
index f9135d5378e..cb6b754a739 100644
--- a/config-model/src/test/cfg/admin/adminconfig20/services.xml
+++ b/config-model/src/test/cfg/admin/adminconfig20/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
diff --git a/config-model/src/test/cfg/admin/adminconfigbaseport/hosts.xml b/config-model/src/test/cfg/admin/adminconfigbaseport/hosts.xml
index 12f1365b8e3..dfc17c11183 100644
--- a/config-model/src/test/cfg/admin/adminconfigbaseport/hosts.xml
+++ b/config-model/src/test/cfg/admin/adminconfigbaseport/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>adminserver</alias>
diff --git a/config-model/src/test/cfg/admin/adminconfigbaseport/services.xml b/config-model/src/test/cfg/admin/adminconfigbaseport/services.xml
index 1e9cb866f19..ba2c2ea42da 100644
--- a/config-model/src/test/cfg/admin/adminconfigbaseport/services.xml
+++ b/config-model/src/test/cfg/admin/adminconfigbaseport/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
diff --git a/config-model/src/test/cfg/admin/metricconfig/hosts.xml b/config-model/src/test/cfg/admin/metricconfig/hosts.xml
index 0d6fa515417..646d5b58c08 100644
--- a/config-model/src/test/cfg/admin/metricconfig/hosts.xml
+++ b/config-model/src/test/cfg/admin/metricconfig/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="foo1">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/admin/metricconfig/schemas/music.sd b/config-model/src/test/cfg/admin/metricconfig/schemas/music.sd
index 32e8451d8e2..f90d805ce6a 100644
--- a/config-model/src/test/cfg/admin/metricconfig/schemas/music.sd
+++ b/config-model/src/test/cfg/admin/metricconfig/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music {
field f1 type string {
diff --git a/config-model/src/test/cfg/admin/metricconfig/services.xml b/config-model/src/test/cfg/admin/metricconfig/services.xml
index b4858b1b1bf..6dcc28a107c 100644
--- a/config-model/src/test/cfg/admin/metricconfig/services.xml
+++ b/config-model/src/test/cfg/admin/metricconfig/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1"/>
diff --git a/config-model/src/test/cfg/admin/multipleconfigservers/hosts.xml b/config-model/src/test/cfg/admin/multipleconfigservers/hosts.xml
index be1e48af7a4..f1bb32b2303 100644
--- a/config-model/src/test/cfg/admin/multipleconfigservers/hosts.xml
+++ b/config-model/src/test/cfg/admin/multipleconfigservers/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/admin/multipleconfigservers/services.xml b/config-model/src/test/cfg/admin/multipleconfigservers/services.xml
index 11fe4321d82..0001540856e 100644
--- a/config-model/src/test/cfg/admin/multipleconfigservers/services.xml
+++ b/config-model/src/test/cfg/admin/multipleconfigservers/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
diff --git a/config-model/src/test/cfg/admin/simpleadminconfig20/hosts.xml b/config-model/src/test/cfg/admin/simpleadminconfig20/hosts.xml
index 12f1365b8e3..dfc17c11183 100644
--- a/config-model/src/test/cfg/admin/simpleadminconfig20/hosts.xml
+++ b/config-model/src/test/cfg/admin/simpleadminconfig20/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>adminserver</alias>
diff --git a/config-model/src/test/cfg/admin/simpleadminconfig20/services.xml b/config-model/src/test/cfg/admin/simpleadminconfig20/services.xml
index 9ebe733c1c8..834cee5e6e5 100644
--- a/config-model/src/test/cfg/admin/simpleadminconfig20/services.xml
+++ b/config-model/src/test/cfg/admin/simpleadminconfig20/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
diff --git a/config-model/src/test/cfg/admin/userconfigs/functiontest-defaultvalues.xml b/config-model/src/test/cfg/admin/userconfigs/functiontest-defaultvalues.xml
index 298d6676354..7f502df1a71 100644
--- a/config-model/src/test/cfg/admin/userconfigs/functiontest-defaultvalues.xml
+++ b/config-model/src/test/cfg/admin/userconfigs/functiontest-defaultvalues.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<config name="test.function-test">
<bool_val>false</bool_val>
<int_val>5</int_val>
diff --git a/config-model/src/test/cfg/admin/userconfigs/test.function-test.def b/config-model/src/test/cfg/admin/userconfigs/test.function-test.def
index 86a110c3413..7c0b2ab7b5a 100644
--- a/config-model/src/test/cfg/admin/userconfigs/test.function-test.def
+++ b/config-model/src/test/cfg/admin/userconfigs/test.function-test.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# This def file should test most aspects of def files that makes a difference
# for the autogenerated config classes. The goal is to trigger all blocks of
diff --git a/config-model/src/test/cfg/admin/userconfigs/whitespace-test.xml b/config-model/src/test/cfg/admin/userconfigs/whitespace-test.xml
index 956cba1c9ff..907a7276fa1 100644
--- a/config-model/src/test/cfg/admin/userconfigs/whitespace-test.xml
+++ b/config-model/src/test/cfg/admin/userconfigs/whitespace-test.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<config name="test.function-test">
<stringVal> This is a string
that contains different kinds of whitespace </stringVal>
diff --git a/config-model/src/test/cfg/application/app1/deployment.xml b/config-model/src/test/cfg/application/app1/deployment.xml
index ea255b207f3..a8771123ecc 100644
--- a/config-model/src/test/cfg/application/app1/deployment.xml
+++ b/config-model/src/test/cfg/application/app1/deployment.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<deployment version="1.0">
<test/>
<staging/>
diff --git a/config-model/src/test/cfg/application/app1/hosts.xml b/config-model/src/test/cfg/application/app1/hosts.xml
index 9cbdd000786..b7ff748cbdc 100644
--- a/config-model/src/test/cfg/application/app1/hosts.xml
+++ b/config-model/src/test/cfg/application/app1/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/application/app1/schemas/laptop.sd b/config-model/src/test/cfg/application/app1/schemas/laptop.sd
index 21a76ad605c..f4f3f0a3fa1 100644
--- a/config-model/src/test/cfg/application/app1/schemas/laptop.sd
+++ b/config-model/src/test/cfg/application/app1/schemas/laptop.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search laptop {
document laptop inherits product {
diff --git a/config-model/src/test/cfg/application/app1/schemas/music.sd b/config-model/src/test/cfg/application/app1/schemas/music.sd
index 693afbd308d..92e87848a8a 100644
--- a/config-model/src/test/cfg/application/app1/schemas/music.sd
+++ b/config-model/src/test/cfg/application/app1/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# A basic search definition - called music, should be saved to music.sd
search music {
diff --git a/config-model/src/test/cfg/application/app1/schemas/pc.sd b/config-model/src/test/cfg/application/app1/schemas/pc.sd
index bdc90328cdb..bc83d2423f3 100644
--- a/config-model/src/test/cfg/application/app1/schemas/pc.sd
+++ b/config-model/src/test/cfg/application/app1/schemas/pc.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search pc {
document pc inherits product {
diff --git a/config-model/src/test/cfg/application/app1/schemas/product.sd b/config-model/src/test/cfg/application/app1/schemas/product.sd
index 588a1d544c6..132ae15053f 100644
--- a/config-model/src/test/cfg/application/app1/schemas/product.sd
+++ b/config-model/src/test/cfg/application/app1/schemas/product.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
document product {
field title type string {
diff --git a/config-model/src/test/cfg/application/app1/schemas/sock.sd b/config-model/src/test/cfg/application/app1/schemas/sock.sd
index 9331c0caf54..f62ddba9c0a 100644
--- a/config-model/src/test/cfg/application/app1/schemas/sock.sd
+++ b/config-model/src/test/cfg/application/app1/schemas/sock.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search sock {
document sock inherits product {
diff --git a/config-model/src/test/cfg/application/app1/services.xml b/config-model/src/test/cfg/application/app1/services.xml
index 6b59d13844a..d873129b2c7 100644
--- a/config-model/src/test/cfg/application/app1/services.xml
+++ b/config-model/src/test/cfg/application/app1/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/config-model/src/test/cfg/application/app_complicated_deployment_spec/hosts.xml b/config-model/src/test/cfg/application/app_complicated_deployment_spec/hosts.xml
index a7fc725d377..62621bdbc95 100644
--- a/config-model/src/test/cfg/application/app_complicated_deployment_spec/hosts.xml
+++ b/config-model/src/test/cfg/application/app_complicated_deployment_spec/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="bogusname1">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/application/app_complicated_deployment_spec/schemas/music.sd b/config-model/src/test/cfg/application/app_complicated_deployment_spec/schemas/music.sd
index 693afbd308d..92e87848a8a 100644
--- a/config-model/src/test/cfg/application/app_complicated_deployment_spec/schemas/music.sd
+++ b/config-model/src/test/cfg/application/app_complicated_deployment_spec/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# A basic search definition - called music, should be saved to music.sd
search music {
diff --git a/config-model/src/test/cfg/application/app_complicated_deployment_spec/services.xml b/config-model/src/test/cfg/application/app_complicated_deployment_spec/services.xml
index 9ae7f122e81..02d41eac283 100644
--- a/config-model/src/test/cfg/application/app_complicated_deployment_spec/services.xml
+++ b/config-model/src/test/cfg/application/app_complicated_deployment_spec/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<service version="1.0" name="myservice" command="mycmd1.sh">
diff --git a/config-model/src/test/cfg/application/app_genericservices/hosts.xml b/config-model/src/test/cfg/application/app_genericservices/hosts.xml
index a7fc725d377..62621bdbc95 100644
--- a/config-model/src/test/cfg/application/app_genericservices/hosts.xml
+++ b/config-model/src/test/cfg/application/app_genericservices/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="bogusname1">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/application/app_genericservices/schemas/music.sd b/config-model/src/test/cfg/application/app_genericservices/schemas/music.sd
index 693afbd308d..92e87848a8a 100644
--- a/config-model/src/test/cfg/application/app_genericservices/schemas/music.sd
+++ b/config-model/src/test/cfg/application/app_genericservices/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# A basic search definition - called music, should be saved to music.sd
search music {
diff --git a/config-model/src/test/cfg/application/app_genericservices/services.xml b/config-model/src/test/cfg/application/app_genericservices/services.xml
index 9ae7f122e81..02d41eac283 100644
--- a/config-model/src/test/cfg/application/app_genericservices/services.xml
+++ b/config-model/src/test/cfg/application/app_genericservices/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<service version="1.0" name="myservice" command="mycmd1.sh">
diff --git a/config-model/src/test/cfg/application/app_invalid_deployment_xml/deployment.xml b/config-model/src/test/cfg/application/app_invalid_deployment_xml/deployment.xml
index 489e7e56628..ac72067e9e7 100644
--- a/config-model/src/test/cfg/application/app_invalid_deployment_xml/deployment.xml
+++ b/config-model/src/test/cfg/application/app_invalid_deployment_xml/deployment.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<deployment version="1.0">
<test/>
<staging/>
diff --git a/config-model/src/test/cfg/application/app_invalid_deployment_xml/hosts.xml b/config-model/src/test/cfg/application/app_invalid_deployment_xml/hosts.xml
index 115efd488d0..e2098c97d1e 100644
--- a/config-model/src/test/cfg/application/app_invalid_deployment_xml/hosts.xml
+++ b/config-model/src/test/cfg/application/app_invalid_deployment_xml/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/application/app_invalid_deployment_xml/services.xml b/config-model/src/test/cfg/application/app_invalid_deployment_xml/services.xml
index 03d8fc012ac..511612357f5 100644
--- a/config-model/src/test/cfg/application/app_invalid_deployment_xml/services.xml
+++ b/config-model/src/test/cfg/application/app_invalid_deployment_xml/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/config-model/src/test/cfg/application/app_nohosts/schemas/mail.sd b/config-model/src/test/cfg/application/app_nohosts/schemas/mail.sd
index 8b6a6c44bf1..7bffc2cfb2a 100644
--- a/config-model/src/test/cfg/application/app_nohosts/schemas/mail.sd
+++ b/config-model/src/test/cfg/application/app_nohosts/schemas/mail.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search mail {
document mail {
diff --git a/config-model/src/test/cfg/application/app_nohosts/schemas/mailbox.sd b/config-model/src/test/cfg/application/app_nohosts/schemas/mailbox.sd
index f98017f401e..ad0959a256e 100644
--- a/config-model/src/test/cfg/application/app_nohosts/schemas/mailbox.sd
+++ b/config-model/src/test/cfg/application/app_nohosts/schemas/mailbox.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search mailbox {
document mailbox {
diff --git a/config-model/src/test/cfg/application/app_nohosts/schemas/message.sd b/config-model/src/test/cfg/application/app_nohosts/schemas/message.sd
index 6c27917c656..78a2fcb5d33 100644
--- a/config-model/src/test/cfg/application/app_nohosts/schemas/message.sd
+++ b/config-model/src/test/cfg/application/app_nohosts/schemas/message.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search message {
document message {
diff --git a/config-model/src/test/cfg/application/app_nohosts/services.xml b/config-model/src/test/cfg/application/app_nohosts/services.xml
index 5ce2d8ecd63..d4f5e257fb5 100644
--- a/config-model/src/test/cfg/application/app_nohosts/services.xml
+++ b/config-model/src/test/cfg/application/app_nohosts/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
diff --git a/config-model/src/test/cfg/application/app_permanent/permanent-services.xml b/config-model/src/test/cfg/application/app_permanent/permanent-services.xml
index 2efbc08a68f..bf00993d3e2 100644
--- a/config-model/src/test/cfg/application/app_permanent/permanent-services.xml
+++ b/config-model/src/test/cfg/application/app_permanent/permanent-services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<container version="1.0">
<search />
diff --git a/config-model/src/test/cfg/application/app_qrserverandgw/hosts.xml b/config-model/src/test/cfg/application/app_qrserverandgw/hosts.xml
index 3be2fd994d9..3c78eba2e68 100644
--- a/config-model/src/test/cfg/application/app_qrserverandgw/hosts.xml
+++ b/config-model/src/test/cfg/application/app_qrserverandgw/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node0</alias>
diff --git a/config-model/src/test/cfg/application/app_qrserverandgw/schemas/message.sd b/config-model/src/test/cfg/application/app_qrserverandgw/schemas/message.sd
index c09b2fb2da2..40457c9e636 100644
--- a/config-model/src/test/cfg/application/app_qrserverandgw/schemas/message.sd
+++ b/config-model/src/test/cfg/application/app_qrserverandgw/schemas/message.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search message {
document message {
diff --git a/config-model/src/test/cfg/application/app_qrserverandgw/services.xml b/config-model/src/test/cfg/application/app_qrserverandgw/services.xml
index a70c3c152f5..fbcd698035e 100644
--- a/config-model/src/test/cfg/application/app_qrserverandgw/services.xml
+++ b/config-model/src/test/cfg/application/app_qrserverandgw/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
diff --git a/config-model/src/test/cfg/application/classes/vespa.config.search.attributes.def b/config-model/src/test/cfg/application/classes/vespa.config.search.attributes.def
index c8e51c391f7..f733b6155d3 100644
--- a/config-model/src/test/cfg/application/classes/vespa.config.search.attributes.def
+++ b/config-model/src/test/cfg/application/classes/vespa.config.search.attributes.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search
attribute[].name string
attribute[].datatype string
diff --git a/config-model/src/test/cfg/application/configdeftest/configdefinitions/config.foo.def b/config-model/src/test/cfg/application/configdeftest/configdefinitions/config.foo.def
index c37aafd6fc4..afda0ecef71 100644
--- a/config-model/src/test/cfg/application/configdeftest/configdefinitions/config.foo.def
+++ b/config-model/src/test/cfg/application/configdeftest/configdefinitions/config.foo.def
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config
bar int default=1
diff --git a/config-model/src/test/cfg/application/configdeftest/configdefinitions/config.xyzzy.def b/config-model/src/test/cfg/application/configdeftest/configdefinitions/config.xyzzy.def
index c37aafd6fc4..afda0ecef71 100644
--- a/config-model/src/test/cfg/application/configdeftest/configdefinitions/config.xyzzy.def
+++ b/config-model/src/test/cfg/application/configdeftest/configdefinitions/config.xyzzy.def
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config
bar int default=1
diff --git a/config-model/src/test/cfg/application/configdeftest/configdefinitions/qux.qux.foo.def b/config-model/src/test/cfg/application/configdeftest/configdefinitions/qux.qux.foo.def
index 1ff4daea194..31fb619029e 100644
--- a/config-model/src/test/cfg/application/configdeftest/configdefinitions/qux.qux.foo.def
+++ b/config-model/src/test/cfg/application/configdeftest/configdefinitions/qux.qux.foo.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=qux
bar int default=2
quux int default=3
diff --git a/config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.bar.def b/config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.bar.def
index e1d5e8341e7..e4893ab672d 100644
--- a/config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.bar.def
+++ b/config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.bar.def
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=xyzzy
bar int default="1"
diff --git a/config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.baz.def b/config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.baz.def
index c30d4b36ad3..8a936aa44dd 100644
--- a/config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.baz.def
+++ b/config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.baz.def
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=xyzzy
bar int
diff --git a/config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.xyzzy.bar.def b/config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.xyzzy.bar.def
index d4ef225830a..5e70a2de97a 100644
--- a/config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.xyzzy.bar.def
+++ b/config-model/src/test/cfg/application/configdeftest/configdefinitions/xyzzy.xyzzy.bar.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=xyzzy
bar int default="2"
foo int
diff --git a/config-model/src/test/cfg/application/configuredportconfig/hosts.xml b/config-model/src/test/cfg/application/configuredportconfig/hosts.xml
index ca6d75d5e7e..2808c977ba0 100644
--- a/config-model/src/test/cfg/application/configuredportconfig/hosts.xml
+++ b/config-model/src/test/cfg/application/configuredportconfig/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>host1</alias>
diff --git a/config-model/src/test/cfg/application/configuredportconfig/services.xml b/config-model/src/test/cfg/application/configuredportconfig/services.xml
index 93d491a8fac..0337cef133c 100644
--- a/config-model/src/test/cfg/application/configuredportconfig/services.xml
+++ b/config-model/src/test/cfg/application/configuredportconfig/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<com.yahoo.vespa.model.test.SimplePlugin version="1.0">
diff --git a/config-model/src/test/cfg/application/custompropconfig/hosts.xml b/config-model/src/test/cfg/application/custompropconfig/hosts.xml
index c329ffc0844..93383eb92ba 100644
--- a/config-model/src/test/cfg/application/custompropconfig/hosts.xml
+++ b/config-model/src/test/cfg/application/custompropconfig/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>host1</alias>
diff --git a/config-model/src/test/cfg/application/custompropconfig/services.xml b/config-model/src/test/cfg/application/custompropconfig/services.xml
index 37ebac8db4b..2dd0de12df4 100644
--- a/config-model/src/test/cfg/application/custompropconfig/services.xml
+++ b/config-model/src/test/cfg/application/custompropconfig/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<com.yahoo.vespa.model.test.SimpleCustomPropPlugin version="1.0">
<simplecustompropservice hostalias="host1" />
diff --git a/config-model/src/test/cfg/application/deprecated_features_app/hosts.xml b/config-model/src/test/cfg/application/deprecated_features_app/hosts.xml
index f0c76482b2f..3c78eba2e68 100644
--- a/config-model/src/test/cfg/application/deprecated_features_app/hosts.xml
+++ b/config-model/src/test/cfg/application/deprecated_features_app/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node0</alias>
diff --git a/config-model/src/test/cfg/application/deprecated_features_app/searchdefinitions/message.sd b/config-model/src/test/cfg/application/deprecated_features_app/searchdefinitions/message.sd
index c97c860a129..70bda952bf8 100644
--- a/config-model/src/test/cfg/application/deprecated_features_app/searchdefinitions/message.sd
+++ b/config-model/src/test/cfg/application/deprecated_features_app/searchdefinitions/message.sd
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search message {
document message {
diff --git a/config-model/src/test/cfg/application/deprecated_features_app/services.xml b/config-model/src/test/cfg/application/deprecated_features_app/services.xml
index daf03d0c4c3..2af41ed7bd5 100644
--- a/config-model/src/test/cfg/application/deprecated_features_app/services.xml
+++ b/config-model/src/test/cfg/application/deprecated_features_app/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
diff --git a/config-model/src/test/cfg/application/doubleconfig/hosts.xml b/config-model/src/test/cfg/application/doubleconfig/hosts.xml
index c329ffc0844..93383eb92ba 100644
--- a/config-model/src/test/cfg/application/doubleconfig/hosts.xml
+++ b/config-model/src/test/cfg/application/doubleconfig/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>host1</alias>
diff --git a/config-model/src/test/cfg/application/doubleconfig/services.xml b/config-model/src/test/cfg/application/doubleconfig/services.xml
index 1e70eeb0ad2..89ab4181dcc 100644
--- a/config-model/src/test/cfg/application/doubleconfig/services.xml
+++ b/config-model/src/test/cfg/application/doubleconfig/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<simpleplugin version="1.0">
diff --git a/config-model/src/test/cfg/application/empty_prod_region_in_deployment_xml/deployment.xml b/config-model/src/test/cfg/application/empty_prod_region_in_deployment_xml/deployment.xml
index 11d4eb39676..9976db230bc 100644
--- a/config-model/src/test/cfg/application/empty_prod_region_in_deployment_xml/deployment.xml
+++ b/config-model/src/test/cfg/application/empty_prod_region_in_deployment_xml/deployment.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<deployment version="1.0">
<test/>
<staging/>
diff --git a/config-model/src/test/cfg/application/empty_prod_region_in_deployment_xml/hosts.xml b/config-model/src/test/cfg/application/empty_prod_region_in_deployment_xml/hosts.xml
index 115efd488d0..e2098c97d1e 100644
--- a/config-model/src/test/cfg/application/empty_prod_region_in_deployment_xml/hosts.xml
+++ b/config-model/src/test/cfg/application/empty_prod_region_in_deployment_xml/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/application/empty_prod_region_in_deployment_xml/services.xml b/config-model/src/test/cfg/application/empty_prod_region_in_deployment_xml/services.xml
index 03d8fc012ac..511612357f5 100644
--- a/config-model/src/test/cfg/application/empty_prod_region_in_deployment_xml/services.xml
+++ b/config-model/src/test/cfg/application/empty_prod_region_in_deployment_xml/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/config-model/src/test/cfg/application/include_dirs/dir1/default.xml b/config-model/src/test/cfg/application/include_dirs/dir1/default.xml
index 57d9b3f650b..f466c724b98 100644
--- a/config-model/src/test/cfg/application/include_dirs/dir1/default.xml
+++ b/config-model/src/test/cfg/application/include_dirs/dir1/default.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<search>
<chain id="default">
<searcher id="com.yahoo.search.example.SimpleSearcher" bundle="mybundle"/>
diff --git a/config-model/src/test/cfg/application/include_dirs/dir2/chain2.xml b/config-model/src/test/cfg/application/include_dirs/dir2/chain2.xml
index c1e8320c5e7..bfd9409aab4 100644
--- a/config-model/src/test/cfg/application/include_dirs/dir2/chain2.xml
+++ b/config-model/src/test/cfg/application/include_dirs/dir2/chain2.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<search>
<searcher class="com.yahoo.search.example.SimpleSearcher" id="s1" bundle="mybundle"/>
<chain id="chain2">
diff --git a/config-model/src/test/cfg/application/include_dirs/dir2/chain3.xml b/config-model/src/test/cfg/application/include_dirs/dir2/chain3.xml
index ba6755a454a..de7b52f2ff6 100644
--- a/config-model/src/test/cfg/application/include_dirs/dir2/chain3.xml
+++ b/config-model/src/test/cfg/application/include_dirs/dir2/chain3.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<search>
<chain id="chain3_1">
<searcher id="com.yahoo.search.example.SimpleSearcher" bundle="mybundle"/>
diff --git a/config-model/src/test/cfg/application/include_dirs/jdisc_dir/jdisc1.xml b/config-model/src/test/cfg/application/include_dirs/jdisc_dir/jdisc1.xml
index 37b6284afdb..21ec5d3c632 100644
--- a/config-model/src/test/cfg/application/include_dirs/jdisc_dir/jdisc1.xml
+++ b/config-model/src/test/cfg/application/include_dirs/jdisc_dir/jdisc1.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<components>
<component id="test.Exampledocproc"/>
</components>
diff --git a/config-model/src/test/cfg/application/include_dirs/services.xml b/config-model/src/test/cfg/application/include_dirs/services.xml
index 4374cc78bb0..da1b23f338a 100644
--- a/config-model/src/test/cfg/application/include_dirs/services.xml
+++ b/config-model/src/test/cfg/application/include_dirs/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/config-model/src/test/cfg/application/invalid_parallel_deployment_xml/deployment.xml b/config-model/src/test/cfg/application/invalid_parallel_deployment_xml/deployment.xml
index 8e13f0abb53..4eaf7926078 100644
--- a/config-model/src/test/cfg/application/invalid_parallel_deployment_xml/deployment.xml
+++ b/config-model/src/test/cfg/application/invalid_parallel_deployment_xml/deployment.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<deployment version="1.0">
<test/>
<staging/>
diff --git a/config-model/src/test/cfg/application/invalid_parallel_deployment_xml/hosts.xml b/config-model/src/test/cfg/application/invalid_parallel_deployment_xml/hosts.xml
index 115efd488d0..e2098c97d1e 100644
--- a/config-model/src/test/cfg/application/invalid_parallel_deployment_xml/hosts.xml
+++ b/config-model/src/test/cfg/application/invalid_parallel_deployment_xml/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/application/invalid_parallel_deployment_xml/services.xml b/config-model/src/test/cfg/application/invalid_parallel_deployment_xml/services.xml
index 03d8fc012ac..511612357f5 100644
--- a/config-model/src/test/cfg/application/invalid_parallel_deployment_xml/services.xml
+++ b/config-model/src/test/cfg/application/invalid_parallel_deployment_xml/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/config-model/src/test/cfg/application/metricsconfig/hosts.xml b/config-model/src/test/cfg/application/metricsconfig/hosts.xml
index c329ffc0844..93383eb92ba 100644
--- a/config-model/src/test/cfg/application/metricsconfig/hosts.xml
+++ b/config-model/src/test/cfg/application/metricsconfig/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>host1</alias>
diff --git a/config-model/src/test/cfg/application/metricsconfig/services.xml b/config-model/src/test/cfg/application/metricsconfig/services.xml
index fc3c6e8ce06..4be12a97ef2 100644
--- a/config-model/src/test/cfg/application/metricsconfig/services.xml
+++ b/config-model/src/test/cfg/application/metricsconfig/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<simple version="1.0">
diff --git a/config-model/src/test/cfg/application/ml_models/schemas/test.sd b/config-model/src/test/cfg/application/ml_models/schemas/test.sd
index cc73f2daff5..00109a5441e 100644
--- a/config-model/src/test/cfg/application/ml_models/schemas/test.sd
+++ b/config-model/src/test/cfg/application/ml_models/schemas/test.sd
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search test {
document test {
diff --git a/config-model/src/test/cfg/application/ml_models/services.xml b/config-model/src/test/cfg/application/ml_models/services.xml
index e53e4eaa6ab..917f1322964 100644
--- a/config-model/src/test/cfg/application/ml_models/services.xml
+++ b/config-model/src/test/cfg/application/ml_models/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<container version="1.0">
diff --git a/config-model/src/test/cfg/application/ml_serving/models/sqrt.py b/config-model/src/test/cfg/application/ml_serving/models/sqrt.py
index b7b99b3850c..98e4f3903a3 100644
--- a/config-model/src/test/cfg/application/ml_serving/models/sqrt.py
+++ b/config-model/src/test/cfg/application/ml_serving/models/sqrt.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/config-model/src/test/cfg/application/ml_serving/services.xml b/config-model/src/test/cfg/application/ml_serving/services.xml
index 41f44e04c99..4446bd75181 100644
--- a/config-model/src/test/cfg/application/ml_serving/services.xml
+++ b/config-model/src/test/cfg/application/ml_serving/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<container version="1.0">
diff --git a/config-model/src/test/cfg/application/ml_serving_not_activated/services.xml b/config-model/src/test/cfg/application/ml_serving_not_activated/services.xml
index 9d8b7a81201..f8384cb8d15 100644
--- a/config-model/src/test/cfg/application/ml_serving_not_activated/services.xml
+++ b/config-model/src/test/cfg/application/ml_serving_not_activated/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<container version="1.0">
diff --git a/config-model/src/test/cfg/application/newfilenames/hosts.xml b/config-model/src/test/cfg/application/newfilenames/hosts.xml
index c329ffc0844..93383eb92ba 100644
--- a/config-model/src/test/cfg/application/newfilenames/hosts.xml
+++ b/config-model/src/test/cfg/application/newfilenames/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>host1</alias>
diff --git a/config-model/src/test/cfg/application/newfilenames/services.xml b/config-model/src/test/cfg/application/newfilenames/services.xml
index 94698535fb9..20521e2aa82 100644
--- a/config-model/src/test/cfg/application/newfilenames/services.xml
+++ b/config-model/src/test/cfg/application/newfilenames/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<simpleplugin version="1.0">
diff --git a/config-model/src/test/cfg/application/onnx/files/add.py b/config-model/src/test/cfg/application/onnx/files/add.py
index 63b7dc87796..55dc4a18971 100755
--- a/config-model/src/test/cfg/application/onnx/files/add.py
+++ b/config-model/src/test/cfg/application/onnx/files/add.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/config-model/src/test/cfg/application/onnx/models/mul.py b/config-model/src/test/cfg/application/onnx/models/mul.py
index db01561c355..9fcb8612af9 100755
--- a/config-model/src/test/cfg/application/onnx/models/mul.py
+++ b/config-model/src/test/cfg/application/onnx/models/mul.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/config-model/src/test/cfg/application/onnx/schemas/test.sd b/config-model/src/test/cfg/application/onnx/schemas/test.sd
index d49782ddf39..a9118b41f90 100644
--- a/config-model/src/test/cfg/application/onnx/schemas/test.sd
+++ b/config-model/src/test/cfg/application/onnx/schemas/test.sd
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search test {
diff --git a/config-model/src/test/cfg/application/onnx/services.xml b/config-model/src/test/cfg/application/onnx/services.xml
index 8731558c6f7..cdfecc3df5a 100644
--- a/config-model/src/test/cfg/application/onnx/services.xml
+++ b/config-model/src/test/cfg/application/onnx/services.xml
@@ -1,9 +1,21 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<container version="1.0">
- <model-evaluation/>
+ <model-evaluation>
+ <onnx>
+ <models>
+ <model name="mul">
+ <intraop-threads>2</intraop-threads>
+ </model>
+ <model name="non-existent-model">
+ <interop-threads>400</interop-threads>
+ <execution-mode>parallel</execution-mode>
+ </model>
+ </models>
+ </onnx>
+ </model-evaluation>
<nodes>
<node hostalias="node1" />
</nodes>
diff --git a/config-model/src/test/cfg/application/onnx_name_collision/models/barfoo.onnx b/config-model/src/test/cfg/application/onnx_name_collision/models/barfoo.onnx
new file mode 100644
index 00000000000..613af39a958
--- /dev/null
+++ b/config-model/src/test/cfg/application/onnx_name_collision/models/barfoo.onnx
@@ -0,0 +1,16 @@
+ barfoo.py:T
+
+bar
+bazfoo"MulmulZ
+bar
+
+
+Z
+baz
+
+
+b
+foo
+
+
+B \ No newline at end of file
diff --git a/config-model/src/test/cfg/application/onnx_name_collision/models/barfoo.py b/config-model/src/test/cfg/application/onnx_name_collision/models/barfoo.py
new file mode 100755
index 00000000000..a31418b33ab
--- /dev/null
+++ b/config-model/src/test/cfg/application/onnx_name_collision/models/barfoo.py
@@ -0,0 +1,26 @@
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+import onnx
+from onnx import helper, TensorProto
+
+INPUT_1 = helper.make_tensor_value_info('bar', TensorProto.FLOAT, [1])
+INPUT_2 = helper.make_tensor_value_info('baz', TensorProto.FLOAT, [1])
+OUTPUT = helper.make_tensor_value_info('foo', TensorProto.FLOAT, [1])
+
+nodes = [
+ helper.make_node(
+ 'Mul',
+ ['bar', 'baz'],
+ ['foo'],
+ ),
+]
+graph_def = helper.make_graph(
+ nodes,
+ 'mul',
+ [
+ INPUT_1,
+ INPUT_2
+ ],
+ [OUTPUT],
+)
+model_def = helper.make_model(graph_def, producer_name='barfoo.py', opset_imports=[onnx.OperatorSetIdProto(version=12)])
+onnx.save(model_def, 'barfoo.onnx')
diff --git a/config-model/src/test/cfg/application/onnx_name_collision/models/foobar.onnx b/config-model/src/test/cfg/application/onnx_name_collision/models/foobar.onnx
new file mode 100644
index 00000000000..a393e33094a
--- /dev/null
+++ b/config-model/src/test/cfg/application/onnx_name_collision/models/foobar.onnx
@@ -0,0 +1,16 @@
+ foobar.py:T
+
+foo
+bazbat"MulmulZ
+foo
+
+
+Z
+baz
+
+
+b
+bar
+
+
+B \ No newline at end of file
diff --git a/config-model/src/test/cfg/application/onnx_name_collision/models/foobar.py b/config-model/src/test/cfg/application/onnx_name_collision/models/foobar.py
new file mode 100755
index 00000000000..caababb78ab
--- /dev/null
+++ b/config-model/src/test/cfg/application/onnx_name_collision/models/foobar.py
@@ -0,0 +1,26 @@
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+import onnx
+from onnx import helper, TensorProto
+
+INPUT_1 = helper.make_tensor_value_info('foo', TensorProto.FLOAT, [1])
+INPUT_2 = helper.make_tensor_value_info('baz', TensorProto.FLOAT, [1])
+OUTPUT = helper.make_tensor_value_info('bar', TensorProto.FLOAT, [1])
+
+nodes = [
+ helper.make_node(
+ 'Mul',
+ ['foo', 'baz'],
+ ['bat'],
+ ),
+]
+graph_def = helper.make_graph(
+ nodes,
+ 'mul',
+ [
+ INPUT_1,
+ INPUT_2
+ ],
+ [OUTPUT],
+)
+model_def = helper.make_model(graph_def, producer_name='foobar.py', opset_imports=[onnx.OperatorSetIdProto(version=12)])
+onnx.save(model_def, 'foobar.onnx')
diff --git a/config-model/src/test/cfg/application/onnx_name_collision/services.xml b/config-model/src/test/cfg/application/onnx_name_collision/services.xml
new file mode 100644
index 00000000000..74f1cb5281f
--- /dev/null
+++ b/config-model/src/test/cfg/application/onnx_name_collision/services.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services version="1.0">
+
+ <container version="1.0">
+ <model-evaluation/>
+ <nodes>
+ <node hostalias="node1" />
+ </nodes>
+ </container>
+
+</services>
diff --git a/config-model/src/test/cfg/application/plugins/hosts.xml b/config-model/src/test/cfg/application/plugins/hosts.xml
index ca6d75d5e7e..2808c977ba0 100644
--- a/config-model/src/test/cfg/application/plugins/hosts.xml
+++ b/config-model/src/test/cfg/application/plugins/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>host1</alias>
diff --git a/config-model/src/test/cfg/application/plugins/services.xml b/config-model/src/test/cfg/application/plugins/services.xml
index 3fe3b117cbc..9bf954f9756 100644
--- a/config-model/src/test/cfg/application/plugins/services.xml
+++ b/config-model/src/test/cfg/application/plugins/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
diff --git a/config-model/src/test/cfg/application/sdfilenametest/schemas/notmusic.sd b/config-model/src/test/cfg/application/sdfilenametest/schemas/notmusic.sd
index 77307c04843..19528975587 100644
--- a/config-model/src/test/cfg/application/sdfilenametest/schemas/notmusic.sd
+++ b/config-model/src/test/cfg/application/sdfilenametest/schemas/notmusic.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music {
diff --git a/config-model/src/test/cfg/application/sdfilenametest/services.xml b/config-model/src/test/cfg/application/sdfilenametest/services.xml
index b135bf4fd2c..dabd2fef5d8 100644
--- a/config-model/src/test/cfg/application/sdfilenametest/services.xml
+++ b/config-model/src/test/cfg/application/sdfilenametest/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/config-model/src/test/cfg/application/serverdefs/vespa.config.search.attributes.def b/config-model/src/test/cfg/application/serverdefs/vespa.config.search.attributes.def
index 0bb16fb8079..3154e6e3f7f 100644
--- a/config-model/src/test/cfg/application/serverdefs/vespa.config.search.attributes.def
+++ b/config-model/src/test/cfg/application/serverdefs/vespa.config.search.attributes.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search
attribute[].name string
diff --git a/config-model/src/test/cfg/application/simpleconfig/hosts.xml b/config-model/src/test/cfg/application/simpleconfig/hosts.xml
index c329ffc0844..93383eb92ba 100644
--- a/config-model/src/test/cfg/application/simpleconfig/hosts.xml
+++ b/config-model/src/test/cfg/application/simpleconfig/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>host1</alias>
diff --git a/config-model/src/test/cfg/application/simpleconfig/services.xml b/config-model/src/test/cfg/application/simpleconfig/services.xml
index 2716e65d780..5b51827c0a5 100644
--- a/config-model/src/test/cfg/application/simpleconfig/services.xml
+++ b/config-model/src/test/cfg/application/simpleconfig/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<simple version="1.0">
diff --git a/config-model/src/test/cfg/application/stateless_eval/lightgbm_regression.json b/config-model/src/test/cfg/application/stateless_eval/lightgbm_regression.json
new file mode 100644
index 00000000000..cf0488ecd8b
--- /dev/null
+++ b/config-model/src/test/cfg/application/stateless_eval/lightgbm_regression.json
@@ -0,0 +1,275 @@
+{
+ "name": "tree",
+ "version": "v3",
+ "num_class": 1,
+ "num_tree_per_iteration": 1,
+ "label_index": 0,
+ "max_feature_idx": 3,
+ "average_output": false,
+ "objective": "regression",
+ "feature_names": [
+ "numerical_1",
+ "numerical_2",
+ "categorical_1",
+ "categorical_2"
+ ],
+ "monotone_constraints": [],
+ "tree_info": [
+ {
+ "tree_index": 0,
+ "num_leaves": 3,
+ "num_cat": 1,
+ "shrinkage": 1,
+ "tree_structure": {
+ "split_index": 0,
+ "split_feature": 1,
+ "split_gain": 68.5353012084961,
+ "threshold": 0.46643291586559305,
+ "decision_type": "<=",
+ "default_left": true,
+ "missing_type": "NaN",
+ "internal_value": 0,
+ "internal_weight": 0,
+ "internal_count": 1000,
+ "left_child": {
+ "leaf_index": 0,
+ "leaf_value": 2.1594397038037663,
+ "leaf_weight": 469,
+ "leaf_count": 469
+ },
+ "right_child": {
+ "split_index": 1,
+ "split_feature": 3,
+ "split_gain": 41.27640151977539,
+ "threshold": "2||3||4",
+ "decision_type": "==",
+ "default_left": false,
+ "missing_type": "NaN",
+ "internal_value": 0.246035,
+ "internal_weight": 531,
+ "internal_count": 531,
+ "left_child": {
+ "leaf_index": 1,
+ "leaf_value": 2.235297305276056,
+ "leaf_weight": 302,
+ "leaf_count": 302
+ },
+ "right_child": {
+ "leaf_index": 2,
+ "leaf_value": 2.1792953471546546,
+ "leaf_weight": 229,
+ "leaf_count": 229
+ }
+ }
+ }
+ },
+ {
+ "tree_index": 1,
+ "num_leaves": 3,
+ "num_cat": 1,
+ "shrinkage": 0.1,
+ "tree_structure": {
+ "split_index": 0,
+ "split_feature": 2,
+ "split_gain": 64.22250366210938,
+ "threshold": "3||4",
+ "decision_type": "==",
+ "default_left": false,
+ "missing_type": "NaN",
+ "internal_value": 0,
+ "internal_weight": 0,
+ "internal_count": 1000,
+ "left_child": {
+ "leaf_index": 0,
+ "leaf_value": 0.03070842919354316,
+ "leaf_weight": 399,
+ "leaf_count": 399
+ },
+ "right_child": {
+ "split_index": 1,
+ "split_feature": 0,
+ "split_gain": 36.74250030517578,
+ "threshold": 0.5102250691730842,
+ "decision_type": "<=",
+ "default_left": true,
+ "missing_type": "NaN",
+ "internal_value": -0.204906,
+ "internal_weight": 601,
+ "internal_count": 601,
+ "left_child": {
+ "leaf_index": 1,
+ "leaf_value": -0.04439151147520909,
+ "leaf_weight": 315,
+ "leaf_count": 315
+ },
+ "right_child": {
+ "leaf_index": 2,
+ "leaf_value": 0.005117411709368601,
+ "leaf_weight": 286,
+ "leaf_count": 286
+ }
+ }
+ }
+ },
+ {
+ "tree_index": 2,
+ "num_leaves": 3,
+ "num_cat": 0,
+ "shrinkage": 0.1,
+ "tree_structure": {
+ "split_index": 0,
+ "split_feature": 1,
+ "split_gain": 57.1327018737793,
+ "threshold": 0.668665477622446,
+ "decision_type": "<=",
+ "default_left": true,
+ "missing_type": "NaN",
+ "internal_value": 0,
+ "internal_weight": 0,
+ "internal_count": 1000,
+ "left_child": {
+ "split_index": 1,
+ "split_feature": 1,
+ "split_gain": 40.859100341796875,
+ "threshold": 0.008118820676863816,
+ "decision_type": "<=",
+ "default_left": true,
+ "missing_type": "NaN",
+ "internal_value": -0.162926,
+ "internal_weight": 681,
+ "internal_count": 681,
+ "left_child": {
+ "leaf_index": 0,
+ "leaf_value": -0.15361238490967524,
+ "leaf_weight": 21,
+ "leaf_count": 21
+ },
+ "right_child": {
+ "leaf_index": 2,
+ "leaf_value": -0.01192330846157292,
+ "leaf_weight": 660,
+ "leaf_count": 660
+ }
+ },
+ "right_child": {
+ "leaf_index": 1,
+ "leaf_value": 0.03499044894987518,
+ "leaf_weight": 319,
+ "leaf_count": 319
+ }
+ }
+ },
+ {
+ "tree_index": 3,
+ "num_leaves": 3,
+ "num_cat": 1,
+ "shrinkage": 0.1,
+ "tree_structure": {
+ "split_index": 0,
+ "split_feature": 0,
+ "split_gain": 54.77090072631836,
+ "threshold": 0.5201391072644542,
+ "decision_type": "<=",
+ "default_left": true,
+ "missing_type": "NaN",
+ "internal_value": 0,
+ "internal_weight": 0,
+ "internal_count": 1000,
+ "left_child": {
+ "leaf_index": 0,
+ "leaf_value": -0.02141000620783247,
+ "leaf_weight": 543,
+ "leaf_count": 543
+ },
+ "right_child": {
+ "split_index": 1,
+ "split_feature": 2,
+ "split_gain": 27.200700759887695,
+ "threshold": "0||1",
+ "decision_type": "==",
+ "default_left": false,
+ "missing_type": "NaN",
+ "internal_value": 0.255704,
+ "internal_weight": 457,
+ "internal_count": 457,
+ "left_child": {
+ "leaf_index": 1,
+ "leaf_value": -0.004121485787596721,
+ "leaf_weight": 191,
+ "leaf_count": 191
+ },
+ "right_child": {
+ "leaf_index": 2,
+ "leaf_value": 0.04534090904886873,
+ "leaf_weight": 266,
+ "leaf_count": 266
+ }
+ }
+ }
+ },
+ {
+ "tree_index": 4,
+ "num_leaves": 3,
+ "num_cat": 1,
+ "shrinkage": 0.1,
+ "tree_structure": {
+ "split_index": 0,
+ "split_feature": 3,
+ "split_gain": 51.84349822998047,
+ "threshold": "2||3||4",
+ "decision_type": "==",
+ "default_left": false,
+ "missing_type": "NaN",
+ "internal_value": 0,
+ "internal_weight": 0,
+ "internal_count": 1000,
+ "left_child": {
+ "split_index": 1,
+ "split_feature": 1,
+ "split_gain": 39.352699279785156,
+ "threshold": 0.27283279016959255,
+ "decision_type": "<=",
+ "default_left": true,
+ "missing_type": "NaN",
+ "internal_value": 0.188414,
+ "internal_weight": 593,
+ "internal_count": 593,
+ "left_child": {
+ "leaf_index": 0,
+ "leaf_value": -0.01924803254356527,
+ "leaf_weight": 184,
+ "leaf_count": 184
+ },
+ "right_child": {
+ "leaf_index": 2,
+ "leaf_value": 0.03643772842347651,
+ "leaf_weight": 409,
+ "leaf_count": 409
+ }
+ },
+ "right_child": {
+ "leaf_index": 1,
+ "leaf_value": -0.02701711918923075,
+ "leaf_weight": 407,
+ "leaf_count": 407
+ }
+ }
+ }
+ ],
+ "pandas_categorical": [
+ [
+ "a",
+ "b",
+ "c",
+ "d",
+ "e"
+ ],
+ [
+ "i",
+ "j",
+ "k",
+ "l",
+ "m"
+ ]
+ ]
+} \ No newline at end of file
diff --git a/config-model/src/test/cfg/application/stateless_eval/mul.py b/config-model/src/test/cfg/application/stateless_eval/mul.py
index db01561c355..9fcb8612af9 100755
--- a/config-model/src/test/cfg/application/stateless_eval/mul.py
+++ b/config-model/src/test/cfg/application/stateless_eval/mul.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/config-model/src/test/cfg/application/treeconfig/hosts.xml b/config-model/src/test/cfg/application/treeconfig/hosts.xml
index ca6d75d5e7e..2808c977ba0 100644
--- a/config-model/src/test/cfg/application/treeconfig/hosts.xml
+++ b/config-model/src/test/cfg/application/treeconfig/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>host1</alias>
diff --git a/config-model/src/test/cfg/application/treeconfig/services.xml b/config-model/src/test/cfg/application/treeconfig/services.xml
index 720d62be2f0..876810cab62 100644
--- a/config-model/src/test/cfg/application/treeconfig/services.xml
+++ b/config-model/src/test/cfg/application/treeconfig/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<com.yahoo.vespa.model.test.SimplePlugin version="1.0">
diff --git a/config-model/src/test/cfg/application/validation/document_references_validation/hosts.xml b/config-model/src/test/cfg/application/validation/document_references_validation/hosts.xml
index 9eafb2106cb..54e4487ce77 100644
--- a/config-model/src/test/cfg/application/validation/document_references_validation/hosts.xml
+++ b/config-model/src/test/cfg/application/validation/document_references_validation/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/application/validation/document_references_validation/schemas/ad.sd b/config-model/src/test/cfg/application/validation/document_references_validation/schemas/ad.sd
index 1e85ab70357..e4a9aa60861 100644
--- a/config-model/src/test/cfg/application/validation/document_references_validation/schemas/ad.sd
+++ b/config-model/src/test/cfg/application/validation/document_references_validation/schemas/ad.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search ad {
document ad {
field campaign_ref type reference<campaign> {
diff --git a/config-model/src/test/cfg/application/validation/document_references_validation/schemas/campaign.sd b/config-model/src/test/cfg/application/validation/document_references_validation/schemas/campaign.sd
index 9e208e397b9..7446a6c099c 100644
--- a/config-model/src/test/cfg/application/validation/document_references_validation/schemas/campaign.sd
+++ b/config-model/src/test/cfg/application/validation/document_references_validation/schemas/campaign.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search campaign {
document campaign {
field budget type int {
diff --git a/config-model/src/test/cfg/application/validation/document_references_validation/services.xml b/config-model/src/test/cfg/application/validation/document_references_validation/services.xml
index 3f1c0083c4a..ad0a67921bc 100644
--- a/config-model/src/test/cfg/application/validation/document_references_validation/services.xml
+++ b/config-model/src/test/cfg/application/validation/document_references_validation/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/application/validation/global_distribution_validation/hosts.xml b/config-model/src/test/cfg/application/validation/global_distribution_validation/hosts.xml
index 9eafb2106cb..54e4487ce77 100644
--- a/config-model/src/test/cfg/application/validation/global_distribution_validation/hosts.xml
+++ b/config-model/src/test/cfg/application/validation/global_distribution_validation/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/application/validation/global_distribution_validation/schemas/parent.sd b/config-model/src/test/cfg/application/validation/global_distribution_validation/schemas/parent.sd
index 8decebc6680..a3dfa6074f5 100644
--- a/config-model/src/test/cfg/application/validation/global_distribution_validation/schemas/parent.sd
+++ b/config-model/src/test/cfg/application/validation/global_distribution_validation/schemas/parent.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search parent {
document parent {
}
diff --git a/config-model/src/test/cfg/application/validation/global_distribution_validation/schemas/simple.sd b/config-model/src/test/cfg/application/validation/global_distribution_validation/schemas/simple.sd
index b901fa6e82a..6f978a27c64 100644
--- a/config-model/src/test/cfg/application/validation/global_distribution_validation/schemas/simple.sd
+++ b/config-model/src/test/cfg/application/validation/global_distribution_validation/schemas/simple.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search simple {
document simple {
field my_reference type reference<parent> { indexing: summary | attribute }
diff --git a/config-model/src/test/cfg/application/validation/global_distribution_validation/services.xml b/config-model/src/test/cfg/application/validation/global_distribution_validation/services.xml
index 0364b68c00e..dcb910df6b5 100644
--- a/config-model/src/test/cfg/application/validation/global_distribution_validation/services.xml
+++ b/config-model/src/test/cfg/application/validation/global_distribution_validation/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/application/validation/index_struct/schemas/simple.sd b/config-model/src/test/cfg/application/validation/index_struct/schemas/simple.sd
index a27a2d074d2..674fc6496cc 100644
--- a/config-model/src/test/cfg/application/validation/index_struct/schemas/simple.sd
+++ b/config-model/src/test/cfg/application/validation/index_struct/schemas/simple.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search simple {
document simple {
field foo type map<string, string> { }
diff --git a/config-model/src/test/cfg/application/validation/index_struct/services.xml b/config-model/src/test/cfg/application/validation/index_struct/services.xml
index 9db7ea324bf..d843cc2c365 100644
--- a/config-model/src/test/cfg/application/validation/index_struct/services.xml
+++ b/config-model/src/test/cfg/application/validation/index_struct/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/application/validation/prefix/schemas/simple.sd b/config-model/src/test/cfg/application/validation/prefix/schemas/simple.sd
index 60ce940fd7d..c75ba72bac5 100644
--- a/config-model/src/test/cfg/application/validation/prefix/schemas/simple.sd
+++ b/config-model/src/test/cfg/application/validation/prefix/schemas/simple.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search simple {
document simple {
field artist type string {
diff --git a/config-model/src/test/cfg/application/validation/prefix/services.xml b/config-model/src/test/cfg/application/validation/prefix/services.xml
index 0764af6df23..03381b1e14b 100644
--- a/config-model/src/test/cfg/application/validation/prefix/services.xml
+++ b/config-model/src/test/cfg/application/validation/prefix/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/application/validation/prefix_index/schemas/simple.sd b/config-model/src/test/cfg/application/validation/prefix_index/schemas/simple.sd
index bf70a1662c6..5009a2e10df 100644
--- a/config-model/src/test/cfg/application/validation/prefix_index/schemas/simple.sd
+++ b/config-model/src/test/cfg/application/validation/prefix_index/schemas/simple.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search simple {
document simple {
field artist type string {
diff --git a/config-model/src/test/cfg/application/validation/prefix_index/services.xml b/config-model/src/test/cfg/application/validation/prefix_index/services.xml
index 0764af6df23..03381b1e14b 100644
--- a/config-model/src/test/cfg/application/validation/prefix_index/services.xml
+++ b/config-model/src/test/cfg/application/validation/prefix_index/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/application/validation/prefix_index_and_attribute/schemas/simple.sd b/config-model/src/test/cfg/application/validation/prefix_index_and_attribute/schemas/simple.sd
index 41412f4ef4f..50a8c8d1601 100644
--- a/config-model/src/test/cfg/application/validation/prefix_index_and_attribute/schemas/simple.sd
+++ b/config-model/src/test/cfg/application/validation/prefix_index_and_attribute/schemas/simple.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search simple {
document simple {
field artist type string {
diff --git a/config-model/src/test/cfg/application/validation/prefix_index_and_attribute/services.xml b/config-model/src/test/cfg/application/validation/prefix_index_and_attribute/services.xml
index 0764af6df23..03381b1e14b 100644
--- a/config-model/src/test/cfg/application/validation/prefix_index_and_attribute/services.xml
+++ b/config-model/src/test/cfg/application/validation/prefix_index_and_attribute/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/application/validation/prefix_streaming/schemas/simple.sd b/config-model/src/test/cfg/application/validation/prefix_streaming/schemas/simple.sd
index bf70a1662c6..5009a2e10df 100644
--- a/config-model/src/test/cfg/application/validation/prefix_streaming/schemas/simple.sd
+++ b/config-model/src/test/cfg/application/validation/prefix_streaming/schemas/simple.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search simple {
document simple {
field artist type string {
diff --git a/config-model/src/test/cfg/application/validation/prefix_streaming/services.xml b/config-model/src/test/cfg/application/validation/prefix_streaming/services.xml
index 2468d14981a..7a105089600 100644
--- a/config-model/src/test/cfg/application/validation/prefix_streaming/services.xml
+++ b/config-model/src/test/cfg/application/validation/prefix_streaming/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/application/validation/ranking_constants_fail/schemas/simple.sd b/config-model/src/test/cfg/application/validation/ranking_constants_fail/schemas/simple.sd
index 8b782a01946..c028228e557 100644
--- a/config-model/src/test/cfg/application/validation/ranking_constants_fail/schemas/simple.sd
+++ b/config-model/src/test/cfg/application/validation/ranking_constants_fail/schemas/simple.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search simple {
document simple {}
diff --git a/config-model/src/test/cfg/application/validation/ranking_constants_fail/services.xml b/config-model/src/test/cfg/application/validation/ranking_constants_fail/services.xml
index 9db7ea324bf..d843cc2c365 100644
--- a/config-model/src/test/cfg/application/validation/ranking_constants_fail/services.xml
+++ b/config-model/src/test/cfg/application/validation/ranking_constants_fail/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/application/validation/ranking_constants_ok/schemas/simple.sd b/config-model/src/test/cfg/application/validation/ranking_constants_ok/schemas/simple.sd
index 8b782a01946..c028228e557 100644
--- a/config-model/src/test/cfg/application/validation/ranking_constants_ok/schemas/simple.sd
+++ b/config-model/src/test/cfg/application/validation/ranking_constants_ok/schemas/simple.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search simple {
document simple {}
diff --git a/config-model/src/test/cfg/application/validation/ranking_constants_ok/services.xml b/config-model/src/test/cfg/application/validation/ranking_constants_ok/services.xml
index 9db7ea324bf..d843cc2c365 100644
--- a/config-model/src/test/cfg/application/validation/ranking_constants_ok/services.xml
+++ b/config-model/src/test/cfg/application/validation/ranking_constants_ok/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/application/validation/search_alltypes/hosts.xml b/config-model/src/test/cfg/application/validation/search_alltypes/hosts.xml
index 9eafb2106cb..54e4487ce77 100644
--- a/config-model/src/test/cfg/application/validation/search_alltypes/hosts.xml
+++ b/config-model/src/test/cfg/application/validation/search_alltypes/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/application/validation/search_alltypes/schemas/parent.sd b/config-model/src/test/cfg/application/validation/search_alltypes/schemas/parent.sd
index 8decebc6680..a3dfa6074f5 100644
--- a/config-model/src/test/cfg/application/validation/search_alltypes/schemas/parent.sd
+++ b/config-model/src/test/cfg/application/validation/search_alltypes/schemas/parent.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search parent {
document parent {
}
diff --git a/config-model/src/test/cfg/application/validation/search_alltypes/schemas/simple.sd b/config-model/src/test/cfg/application/validation/search_alltypes/schemas/simple.sd
index 242a7493df3..9f6574d3b1b 100644
--- a/config-model/src/test/cfg/application/validation/search_alltypes/schemas/simple.sd
+++ b/config-model/src/test/cfg/application/validation/search_alltypes/schemas/simple.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search simple {
document simple {
field my_pos type position { indexing: summary }
diff --git a/config-model/src/test/cfg/application/validation/search_alltypes/services.xml b/config-model/src/test/cfg/application/validation/search_alltypes/services.xml
index 68a231dec44..a2a1d6985f7 100644
--- a/config-model/src/test/cfg/application/validation/search_alltypes/services.xml
+++ b/config-model/src/test/cfg/application/validation/search_alltypes/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/application/validation/search_empty_content/hosts.xml b/config-model/src/test/cfg/application/validation/search_empty_content/hosts.xml
index 9eafb2106cb..54e4487ce77 100644
--- a/config-model/src/test/cfg/application/validation/search_empty_content/hosts.xml
+++ b/config-model/src/test/cfg/application/validation/search_empty_content/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/application/validation/search_empty_content/schemas/simple.sd b/config-model/src/test/cfg/application/validation/search_empty_content/schemas/simple.sd
index 51512363fbc..1afaed173a7 100644
--- a/config-model/src/test/cfg/application/validation/search_empty_content/schemas/simple.sd
+++ b/config-model/src/test/cfg/application/validation/search_empty_content/schemas/simple.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search simple {
document simple {
field foo type raw { }
diff --git a/config-model/src/test/cfg/application/validation/search_empty_content/services.xml b/config-model/src/test/cfg/application/validation/search_empty_content/services.xml
index 9db7ea324bf..d843cc2c365 100644
--- a/config-model/src/test/cfg/application/validation/search_empty_content/services.xml
+++ b/config-model/src/test/cfg/application/validation/search_empty_content/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/application/validation/search_struct/hosts.xml b/config-model/src/test/cfg/application/validation/search_struct/hosts.xml
index 9eafb2106cb..54e4487ce77 100644
--- a/config-model/src/test/cfg/application/validation/search_struct/hosts.xml
+++ b/config-model/src/test/cfg/application/validation/search_struct/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/application/validation/search_struct/schemas/simple.sd b/config-model/src/test/cfg/application/validation/search_struct/schemas/simple.sd
index 0ab072111c5..7f18b63d29b 100644
--- a/config-model/src/test/cfg/application/validation/search_struct/schemas/simple.sd
+++ b/config-model/src/test/cfg/application/validation/search_struct/schemas/simple.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search simple {
document simple {
field foo type my_struct { }
diff --git a/config-model/src/test/cfg/application/validation/search_struct/services.xml b/config-model/src/test/cfg/application/validation/search_struct/services.xml
index 9db7ea324bf..d843cc2c365 100644
--- a/config-model/src/test/cfg/application/validation/search_struct/services.xml
+++ b/config-model/src/test/cfg/application/validation/search_struct/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/container/data/configserverinclude/hosted-vespa/hosted.xml b/config-model/src/test/cfg/container/data/configserverinclude/hosted-vespa/hosted.xml
index 9763dda556e..2907c034502 100644
--- a/config-model/src/test/cfg/container/data/configserverinclude/hosted-vespa/hosted.xml
+++ b/config-model/src/test/cfg/container/data/configserverinclude/hosted-vespa/hosted.xml
@@ -1,3 +1,3 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<container>
</container>
diff --git a/config-model/src/test/cfg/container/data/configserverinclude/services.xml b/config-model/src/test/cfg/container/data/configserverinclude/services.xml
index 5691922ec7f..206d755d269 100644
--- a/config-model/src/test/cfg/container/data/configserverinclude/services.xml
+++ b/config-model/src/test/cfg/container/data/configserverinclude/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<container id='configserver' version="1.0">
diff --git a/config-model/src/test/cfg/container/data/containerinclude/docprocinclude1/foo/bar/docprocinclude1.xml b/config-model/src/test/cfg/container/data/containerinclude/docprocinclude1/foo/bar/docprocinclude1.xml
index e6a3146e528..70b687ac318 100644
--- a/config-model/src/test/cfg/container/data/containerinclude/docprocinclude1/foo/bar/docprocinclude1.xml
+++ b/config-model/src/test/cfg/container/data/containerinclude/docprocinclude1/foo/bar/docprocinclude1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<document-processing>
<chain id="docprocchain2">
<documentprocessor id="com.yahoo.DocumentProcessor2"/>
diff --git a/config-model/src/test/cfg/container/data/containerinclude/hosts.xml b/config-model/src/test/cfg/container/data/containerinclude/hosts.xml
index 541d2f10304..414d0295a49 100644
--- a/config-model/src/test/cfg/container/data/containerinclude/hosts.xml
+++ b/config-model/src/test/cfg/container/data/containerinclude/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/container/data/containerinclude/processinginclude1/processinginclude1.xml b/config-model/src/test/cfg/container/data/containerinclude/processinginclude1/processinginclude1.xml
index 885c865d5ec..6e84ead3976 100644
--- a/config-model/src/test/cfg/container/data/containerinclude/processinginclude1/processinginclude1.xml
+++ b/config-model/src/test/cfg/container/data/containerinclude/processinginclude1/processinginclude1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<processing>
<chain id="processingchain2">
<processor id="com.yahoo.Processor2"/>
diff --git a/config-model/src/test/cfg/container/data/containerinclude/searchinclude1/contents/includedsearch1.xml b/config-model/src/test/cfg/container/data/containerinclude/searchinclude1/contents/includedsearch1.xml
index c838fce7d91..8c192fe257a 100644
--- a/config-model/src/test/cfg/container/data/containerinclude/searchinclude1/contents/includedsearch1.xml
+++ b/config-model/src/test/cfg/container/data/containerinclude/searchinclude1/contents/includedsearch1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<search>
<chain id="searchchain2">
<searcher id="com.yahoo.Searcher2"/>
diff --git a/config-model/src/test/cfg/container/data/containerinclude/searchinclude1/contents/includedsearch2.xml b/config-model/src/test/cfg/container/data/containerinclude/searchinclude1/contents/includedsearch2.xml
index 82dddbaff6b..542243c1dd8 100644
--- a/config-model/src/test/cfg/container/data/containerinclude/searchinclude1/contents/includedsearch2.xml
+++ b/config-model/src/test/cfg/container/data/containerinclude/searchinclude1/contents/includedsearch2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<search>
<chain id="searchchain3">
<searcher id="com.yahoo.Searcher3"/>
diff --git a/config-model/src/test/cfg/container/data/containerinclude/searchinclude2/includedsearch3.xml b/config-model/src/test/cfg/container/data/containerinclude/searchinclude2/includedsearch3.xml
index 2a064aac80a..1bfce937c94 100644
--- a/config-model/src/test/cfg/container/data/containerinclude/searchinclude2/includedsearch3.xml
+++ b/config-model/src/test/cfg/container/data/containerinclude/searchinclude2/includedsearch3.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<search>
<chain id="searchchain4">
<searcher id="com.yahoo.Searcher4"/>
diff --git a/config-model/src/test/cfg/container/data/containerinclude/services.xml b/config-model/src/test/cfg/container/data/containerinclude/services.xml
index 218d475a691..0a76addf8f9 100644
--- a/config-model/src/test/cfg/container/data/containerinclude/services.xml
+++ b/config-model/src/test/cfg/container/data/containerinclude/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/config-model/src/test/cfg/container/data/containerinclude2/hosts.xml b/config-model/src/test/cfg/container/data/containerinclude2/hosts.xml
index 541d2f10304..414d0295a49 100644
--- a/config-model/src/test/cfg/container/data/containerinclude2/hosts.xml
+++ b/config-model/src/test/cfg/container/data/containerinclude2/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/container/data/containerinclude2/services.xml b/config-model/src/test/cfg/container/data/containerinclude2/services.xml
index c69aafbf057..688ba64abdf 100644
--- a/config-model/src/test/cfg/container/data/containerinclude2/services.xml
+++ b/config-model/src/test/cfg/container/data/containerinclude2/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/config-model/src/test/cfg/container/data/containerinclude3/hosts.xml b/config-model/src/test/cfg/container/data/containerinclude3/hosts.xml
index 541d2f10304..414d0295a49 100644
--- a/config-model/src/test/cfg/container/data/containerinclude3/hosts.xml
+++ b/config-model/src/test/cfg/container/data/containerinclude3/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/container/data/containerinclude3/services.xml b/config-model/src/test/cfg/container/data/containerinclude3/services.xml
index 3f443b87d97..fc2a355970a 100644
--- a/config-model/src/test/cfg/container/data/containerinclude3/services.xml
+++ b/config-model/src/test/cfg/container/data/containerinclude3/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/config-model/src/test/cfg/container/data/containerinclude4/hosts.xml b/config-model/src/test/cfg/container/data/containerinclude4/hosts.xml
index 541d2f10304..414d0295a49 100644
--- a/config-model/src/test/cfg/container/data/containerinclude4/hosts.xml
+++ b/config-model/src/test/cfg/container/data/containerinclude4/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/container/data/containerinclude4/services.xml b/config-model/src/test/cfg/container/data/containerinclude4/services.xml
index a78c2c9935a..5c4b0b4b477 100644
--- a/config-model/src/test/cfg/container/data/containerinclude4/services.xml
+++ b/config-model/src/test/cfg/container/data/containerinclude4/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/config-model/src/test/cfg/container/data/containerinclude5/searchinclude/processing.xml b/config-model/src/test/cfg/container/data/containerinclude5/searchinclude/processing.xml
index 136193f7dc6..ea2f252ab30 100644
--- a/config-model/src/test/cfg/container/data/containerinclude5/searchinclude/processing.xml
+++ b/config-model/src/test/cfg/container/data/containerinclude5/searchinclude/processing.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<processing>
<chain id="processingchain2">
<processor id="com.yahoo.Processor2"/>
diff --git a/config-model/src/test/cfg/container/data/containerinclude5/services.xml b/config-model/src/test/cfg/container/data/containerinclude5/services.xml
index 24e6c8ce575..6f9d51d688e 100644
--- a/config-model/src/test/cfg/container/data/containerinclude5/services.xml
+++ b/config-model/src/test/cfg/container/data/containerinclude5/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/config-model/src/test/cfg/container/data/containerinclude6/services.xml b/config-model/src/test/cfg/container/data/containerinclude6/services.xml
index 15cf525fe39..67bab5b7511 100644
--- a/config-model/src/test/cfg/container/data/containerinclude6/services.xml
+++ b/config-model/src/test/cfg/container/data/containerinclude6/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/config-model/src/test/cfg/container/data/include_xml_error/dir1/default.xml b/config-model/src/test/cfg/container/data/include_xml_error/dir1/default.xml
index 5a55f07fc53..0732ae5575c 100644
--- a/config-model/src/test/cfg/container/data/include_xml_error/dir1/default.xml
+++ b/config-model/src/test/cfg/container/data/include_xml_error/dir1/default.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<search>
<chain id="default">
<zearcer id="com.yahoo.search.example.SimpleSearcher" bundle="mybundle"/>
diff --git a/config-model/src/test/cfg/container/data/include_xml_error/services.xml b/config-model/src/test/cfg/container/data/include_xml_error/services.xml
index e6b749ce8c5..3276f30aef4 100644
--- a/config-model/src/test/cfg/container/data/include_xml_error/services.xml
+++ b/config-model/src/test/cfg/container/data/include_xml_error/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/config-model/src/test/cfg/routing/content_two_clusters/hosts.xml b/config-model/src/test/cfg/routing/content_two_clusters/hosts.xml
index 9eafb2106cb..54e4487ce77 100644
--- a/config-model/src/test/cfg/routing/content_two_clusters/hosts.xml
+++ b/config-model/src/test/cfg/routing/content_two_clusters/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/routing/content_two_clusters/schemas/mobile.sd b/config-model/src/test/cfg/routing/content_two_clusters/schemas/mobile.sd
index 3abc9238e8a..60ea98235b0 100644
--- a/config-model/src/test/cfg/routing/content_two_clusters/schemas/mobile.sd
+++ b/config-model/src/test/cfg/routing/content_two_clusters/schemas/mobile.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search mobile {
document mobile {
field f1 type string {
diff --git a/config-model/src/test/cfg/routing/content_two_clusters/schemas/music.sd b/config-model/src/test/cfg/routing/content_two_clusters/schemas/music.sd
index da9e2d14c55..290f8983b4d 100644
--- a/config-model/src/test/cfg/routing/content_two_clusters/schemas/music.sd
+++ b/config-model/src/test/cfg/routing/content_two_clusters/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music {
field f1 type string {
diff --git a/config-model/src/test/cfg/routing/content_two_clusters/services.xml b/config-model/src/test/cfg/routing/content_two_clusters/services.xml
index 8c97f5f7081..421211f3aad 100644
--- a/config-model/src/test/cfg/routing/content_two_clusters/services.xml
+++ b/config-model/src/test/cfg/routing/content_two_clusters/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/routing/contentsimpleconfig/hosts.xml b/config-model/src/test/cfg/routing/contentsimpleconfig/hosts.xml
index 9eafb2106cb..54e4487ce77 100644
--- a/config-model/src/test/cfg/routing/contentsimpleconfig/hosts.xml
+++ b/config-model/src/test/cfg/routing/contentsimpleconfig/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/routing/contentsimpleconfig/schemas/music.sd b/config-model/src/test/cfg/routing/contentsimpleconfig/schemas/music.sd
index da9e2d14c55..290f8983b4d 100644
--- a/config-model/src/test/cfg/routing/contentsimpleconfig/schemas/music.sd
+++ b/config-model/src/test/cfg/routing/contentsimpleconfig/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music {
field f1 type string {
diff --git a/config-model/src/test/cfg/routing/contentsimpleconfig/services.xml b/config-model/src/test/cfg/routing/contentsimpleconfig/services.xml
index f0657c0ceec..d8a10d47c9c 100644
--- a/config-model/src/test/cfg/routing/contentsimpleconfig/services.xml
+++ b/config-model/src/test/cfg/routing/contentsimpleconfig/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/routing/defaultconfig/hosts.xml b/config-model/src/test/cfg/routing/defaultconfig/hosts.xml
index 9eafb2106cb..54e4487ce77 100755
--- a/config-model/src/test/cfg/routing/defaultconfig/hosts.xml
+++ b/config-model/src/test/cfg/routing/defaultconfig/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/routing/defaultconfig/services.xml b/config-model/src/test/cfg/routing/defaultconfig/services.xml
index c1270e6385b..73f2e519ff0 100755
--- a/config-model/src/test/cfg/routing/defaultconfig/services.xml
+++ b/config-model/src/test/cfg/routing/defaultconfig/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/routing/duplicatehop/hosts.xml b/config-model/src/test/cfg/routing/duplicatehop/hosts.xml
index 9eafb2106cb..54e4487ce77 100644
--- a/config-model/src/test/cfg/routing/duplicatehop/hosts.xml
+++ b/config-model/src/test/cfg/routing/duplicatehop/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/routing/duplicatehop/services.xml b/config-model/src/test/cfg/routing/duplicatehop/services.xml
index 4c7136f3d7c..815cc2478ee 100755
--- a/config-model/src/test/cfg/routing/duplicatehop/services.xml
+++ b/config-model/src/test/cfg/routing/duplicatehop/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/routing/duplicateroute/hosts.xml b/config-model/src/test/cfg/routing/duplicateroute/hosts.xml
index 9eafb2106cb..54e4487ce77 100644
--- a/config-model/src/test/cfg/routing/duplicateroute/hosts.xml
+++ b/config-model/src/test/cfg/routing/duplicateroute/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/routing/duplicateroute/services.xml b/config-model/src/test/cfg/routing/duplicateroute/services.xml
index 350f16dea3b..4a48579ddb4 100755
--- a/config-model/src/test/cfg/routing/duplicateroute/services.xml
+++ b/config-model/src/test/cfg/routing/duplicateroute/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/routing/emptyhop/hosts.xml b/config-model/src/test/cfg/routing/emptyhop/hosts.xml
index 9eafb2106cb..54e4487ce77 100644
--- a/config-model/src/test/cfg/routing/emptyhop/hosts.xml
+++ b/config-model/src/test/cfg/routing/emptyhop/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/routing/emptyhop/services.xml b/config-model/src/test/cfg/routing/emptyhop/services.xml
index 22220996ca5..e22be806802 100644
--- a/config-model/src/test/cfg/routing/emptyhop/services.xml
+++ b/config-model/src/test/cfg/routing/emptyhop/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/routing/emptyroute/hosts.xml b/config-model/src/test/cfg/routing/emptyroute/hosts.xml
index 9eafb2106cb..54e4487ce77 100644
--- a/config-model/src/test/cfg/routing/emptyroute/hosts.xml
+++ b/config-model/src/test/cfg/routing/emptyroute/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/routing/emptyroute/services.xml b/config-model/src/test/cfg/routing/emptyroute/services.xml
index 30987319589..41d23754c0f 100644
--- a/config-model/src/test/cfg/routing/emptyroute/services.xml
+++ b/config-model/src/test/cfg/routing/emptyroute/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/routing/hopconfig/hosts.xml b/config-model/src/test/cfg/routing/hopconfig/hosts.xml
index 9eafb2106cb..54e4487ce77 100755
--- a/config-model/src/test/cfg/routing/hopconfig/hosts.xml
+++ b/config-model/src/test/cfg/routing/hopconfig/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/routing/hopconfig/services.xml b/config-model/src/test/cfg/routing/hopconfig/services.xml
index f28cd12277f..76b3ab5bb77 100755
--- a/config-model/src/test/cfg/routing/hopconfig/services.xml
+++ b/config-model/src/test/cfg/routing/hopconfig/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/routing/hoperror/hosts.xml b/config-model/src/test/cfg/routing/hoperror/hosts.xml
index 9eafb2106cb..54e4487ce77 100644
--- a/config-model/src/test/cfg/routing/hoperror/hosts.xml
+++ b/config-model/src/test/cfg/routing/hoperror/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/routing/hoperror/services.xml b/config-model/src/test/cfg/routing/hoperror/services.xml
index e019cd1e863..7775f6b88ca 100644
--- a/config-model/src/test/cfg/routing/hoperror/services.xml
+++ b/config-model/src/test/cfg/routing/hoperror/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/routing/hoperrorinrecipient/hosts.xml b/config-model/src/test/cfg/routing/hoperrorinrecipient/hosts.xml
index 9eafb2106cb..54e4487ce77 100644
--- a/config-model/src/test/cfg/routing/hoperrorinrecipient/hosts.xml
+++ b/config-model/src/test/cfg/routing/hoperrorinrecipient/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/routing/hoperrorinrecipient/services.xml b/config-model/src/test/cfg/routing/hoperrorinrecipient/services.xml
index 0c978cd1fd3..a05afd6a8fc 100644
--- a/config-model/src/test/cfg/routing/hoperrorinrecipient/services.xml
+++ b/config-model/src/test/cfg/routing/hoperrorinrecipient/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/routing/hoperrorinroute/hosts.xml b/config-model/src/test/cfg/routing/hoperrorinroute/hosts.xml
index 9eafb2106cb..54e4487ce77 100644
--- a/config-model/src/test/cfg/routing/hoperrorinroute/hosts.xml
+++ b/config-model/src/test/cfg/routing/hoperrorinroute/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/routing/hoperrorinroute/services.xml b/config-model/src/test/cfg/routing/hoperrorinroute/services.xml
index 1be5c85b4e3..1387e60a57a 100644
--- a/config-model/src/test/cfg/routing/hoperrorinroute/services.xml
+++ b/config-model/src/test/cfg/routing/hoperrorinroute/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/routing/hopnotfound/hosts.xml b/config-model/src/test/cfg/routing/hopnotfound/hosts.xml
index 9eafb2106cb..54e4487ce77 100644
--- a/config-model/src/test/cfg/routing/hopnotfound/hosts.xml
+++ b/config-model/src/test/cfg/routing/hopnotfound/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/routing/hopnotfound/services.xml b/config-model/src/test/cfg/routing/hopnotfound/services.xml
index 08883a41e47..35f408a0558 100644
--- a/config-model/src/test/cfg/routing/hopnotfound/services.xml
+++ b/config-model/src/test/cfg/routing/hopnotfound/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/routing/invalidstoragepolicy/hosts.xml b/config-model/src/test/cfg/routing/invalidstoragepolicy/hosts.xml
index 9eafb2106cb..54e4487ce77 100644
--- a/config-model/src/test/cfg/routing/invalidstoragepolicy/hosts.xml
+++ b/config-model/src/test/cfg/routing/invalidstoragepolicy/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/routing/invalidstoragepolicy/services.xml b/config-model/src/test/cfg/routing/invalidstoragepolicy/services.xml
index 181912161ef..991ea2751a6 100644
--- a/config-model/src/test/cfg/routing/invalidstoragepolicy/services.xml
+++ b/config-model/src/test/cfg/routing/invalidstoragepolicy/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/routing/mismatchedrecipient/hosts.xml b/config-model/src/test/cfg/routing/mismatchedrecipient/hosts.xml
index 9eafb2106cb..54e4487ce77 100644
--- a/config-model/src/test/cfg/routing/mismatchedrecipient/hosts.xml
+++ b/config-model/src/test/cfg/routing/mismatchedrecipient/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/routing/mismatchedrecipient/services.xml b/config-model/src/test/cfg/routing/mismatchedrecipient/services.xml
index 16054677eef..e4ece1d271d 100644
--- a/config-model/src/test/cfg/routing/mismatchedrecipient/services.xml
+++ b/config-model/src/test/cfg/routing/mismatchedrecipient/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/routing/replacehop/hosts.xml b/config-model/src/test/cfg/routing/replacehop/hosts.xml
index 9eafb2106cb..54e4487ce77 100755
--- a/config-model/src/test/cfg/routing/replacehop/hosts.xml
+++ b/config-model/src/test/cfg/routing/replacehop/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/routing/replacehop/schemas/music.sd b/config-model/src/test/cfg/routing/replacehop/schemas/music.sd
index f9816d0d392..274c6ca63d6 100755
--- a/config-model/src/test/cfg/routing/replacehop/schemas/music.sd
+++ b/config-model/src/test/cfg/routing/replacehop/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music {
field f1 type string {
diff --git a/config-model/src/test/cfg/routing/replacehop/services.xml b/config-model/src/test/cfg/routing/replacehop/services.xml
index a125fef7641..7ddf6695074 100755
--- a/config-model/src/test/cfg/routing/replacehop/services.xml
+++ b/config-model/src/test/cfg/routing/replacehop/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
diff --git a/config-model/src/test/cfg/routing/replaceroute/hosts.xml b/config-model/src/test/cfg/routing/replaceroute/hosts.xml
index 9eafb2106cb..54e4487ce77 100755
--- a/config-model/src/test/cfg/routing/replaceroute/hosts.xml
+++ b/config-model/src/test/cfg/routing/replaceroute/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/routing/replaceroute/schemas/music.sd b/config-model/src/test/cfg/routing/replaceroute/schemas/music.sd
index f9816d0d392..274c6ca63d6 100755
--- a/config-model/src/test/cfg/routing/replaceroute/schemas/music.sd
+++ b/config-model/src/test/cfg/routing/replaceroute/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music {
field f1 type string {
diff --git a/config-model/src/test/cfg/routing/replaceroute/services.xml b/config-model/src/test/cfg/routing/replaceroute/services.xml
index ff0cb1e91b9..be0e04c09d6 100755
--- a/config-model/src/test/cfg/routing/replaceroute/services.xml
+++ b/config-model/src/test/cfg/routing/replaceroute/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/routing/routeconfig/hosts.xml b/config-model/src/test/cfg/routing/routeconfig/hosts.xml
index 9eafb2106cb..54e4487ce77 100755
--- a/config-model/src/test/cfg/routing/routeconfig/hosts.xml
+++ b/config-model/src/test/cfg/routing/routeconfig/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/routing/routeconfig/services.xml b/config-model/src/test/cfg/routing/routeconfig/services.xml
index dcb46f9341b..e15835a7e22 100755
--- a/config-model/src/test/cfg/routing/routeconfig/services.xml
+++ b/config-model/src/test/cfg/routing/routeconfig/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/routing/routenotfound/hosts.xml b/config-model/src/test/cfg/routing/routenotfound/hosts.xml
index 9eafb2106cb..54e4487ce77 100644
--- a/config-model/src/test/cfg/routing/routenotfound/hosts.xml
+++ b/config-model/src/test/cfg/routing/routenotfound/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/routing/routenotfound/services.xml b/config-model/src/test/cfg/routing/routenotfound/services.xml
index ae389a34966..9d037e54794 100644
--- a/config-model/src/test/cfg/routing/routenotfound/services.xml
+++ b/config-model/src/test/cfg/routing/routenotfound/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/routing/routenotfoundinroute/hosts.xml b/config-model/src/test/cfg/routing/routenotfoundinroute/hosts.xml
index 9eafb2106cb..54e4487ce77 100644
--- a/config-model/src/test/cfg/routing/routenotfoundinroute/hosts.xml
+++ b/config-model/src/test/cfg/routing/routenotfoundinroute/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/routing/routenotfoundinroute/services.xml b/config-model/src/test/cfg/routing/routenotfoundinroute/services.xml
index 442f48186e5..fd625ce90fa 100644
--- a/config-model/src/test/cfg/routing/routenotfoundinroute/services.xml
+++ b/config-model/src/test/cfg/routing/routenotfoundinroute/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/routing/servicenotfound/hosts.xml b/config-model/src/test/cfg/routing/servicenotfound/hosts.xml
index 9eafb2106cb..54e4487ce77 100644
--- a/config-model/src/test/cfg/routing/servicenotfound/hosts.xml
+++ b/config-model/src/test/cfg/routing/servicenotfound/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/routing/servicenotfound/services.xml b/config-model/src/test/cfg/routing/servicenotfound/services.xml
index 4e53a38c1a2..75c4e375b51 100644
--- a/config-model/src/test/cfg/routing/servicenotfound/services.xml
+++ b/config-model/src/test/cfg/routing/servicenotfound/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
diff --git a/config-model/src/test/cfg/routing/unexpectedrecipient/hosts.xml b/config-model/src/test/cfg/routing/unexpectedrecipient/hosts.xml
index 9eafb2106cb..54e4487ce77 100644
--- a/config-model/src/test/cfg/routing/unexpectedrecipient/hosts.xml
+++ b/config-model/src/test/cfg/routing/unexpectedrecipient/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/config-model/src/test/cfg/routing/unexpectedrecipient/services.xml b/config-model/src/test/cfg/routing/unexpectedrecipient/services.xml
index 19ddb2d3526..cd68f51cbe8 100644
--- a/config-model/src/test/cfg/routing/unexpectedrecipient/services.xml
+++ b/config-model/src/test/cfg/routing/unexpectedrecipient/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/cfg/search/data/travel/schemas/TTData.sd b/config-model/src/test/cfg/search/data/travel/schemas/TTData.sd
index 67013239499..511b4ab527a 100644
--- a/config-model/src/test/cfg/search/data/travel/schemas/TTData.sd
+++ b/config-model/src/test/cfg/search/data/travel/schemas/TTData.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Basic search definition for Travel Attraction (self) facet
search TTData {
diff --git a/config-model/src/test/cfg/search/data/travel/schemas/TTEdge.sd b/config-model/src/test/cfg/search/data/travel/schemas/TTEdge.sd
index e6707345235..13ddabc1d2d 100644
--- a/config-model/src/test/cfg/search/data/travel/schemas/TTEdge.sd
+++ b/config-model/src/test/cfg/search/data/travel/schemas/TTEdge.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
document TTEdge {
# This field will contain a colon separate map for travel times per transport mode
diff --git a/config-model/src/test/cfg/search/data/travel/schemas/TTPOI.sd b/config-model/src/test/cfg/search/data/travel/schemas/TTPOI.sd
index c39ef03add5..f3fe2cdf445 100644
--- a/config-model/src/test/cfg/search/data/travel/schemas/TTPOI.sd
+++ b/config-model/src/test/cfg/search/data/travel/schemas/TTPOI.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
document TTPOI {
# categories associated with the POI
diff --git a/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/schemas/base.sd b/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/schemas/base.sd
index 22944f61997..2f2964adabd 100644
--- a/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/schemas/base.sd
+++ b/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/schemas/base.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search base {
document base {
field fbase type string {
diff --git a/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/schemas/left.sd b/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/schemas/left.sd
index c72b349bb4c..90a8cb9954a 100644
--- a/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/schemas/left.sd
+++ b/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/schemas/left.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search left {
document left {
field fleft type string {
diff --git a/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/schemas/music.sd b/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/schemas/music.sd
index da9e2d14c55..290f8983b4d 100644
--- a/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/schemas/music.sd
+++ b/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music {
field f1 type string {
diff --git a/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/schemas/right.sd b/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/schemas/right.sd
index eb0a4cf8021..f5dbd43d193 100644
--- a/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/schemas/right.sd
+++ b/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/schemas/right.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search right {
document right {
field fright type string {
diff --git a/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/services.xml b/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/services.xml
index 95a5cd6236b..60a1045b721 100644
--- a/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/services.xml
+++ b/config-model/src/test/cfg/search/data/v2/inherited_rankprofiles/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<content version="1.0" id="inherit">
<redundancy>1</redundancy>
diff --git a/config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/hosts.xml b/config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/hosts.xml
index 156ffea79ab..e093da88fc3 100644
--- a/config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/hosts.xml
+++ b/config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="mynode1">
<alias>node0</alias>
diff --git a/config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/schemas/music.sd b/config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/schemas/music.sd
index da9e2d14c55..290f8983b4d 100644
--- a/config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/schemas/music.sd
+++ b/config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music {
field f1 type string {
diff --git a/config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/services.xml b/config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/services.xml
index 535537e0498..bb0f15e82dd 100644
--- a/config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/services.xml
+++ b/config-model/src/test/cfg/storage/app_index_higher_than_num_nodes/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
diff --git a/config-model/src/test/cfg/storage/clustercontroller_advanced/hosts.xml b/config-model/src/test/cfg/storage/clustercontroller_advanced/hosts.xml
index b238865f78e..8e234a7e2b6 100644
--- a/config-model/src/test/cfg/storage/clustercontroller_advanced/hosts.xml
+++ b/config-model/src/test/cfg/storage/clustercontroller_advanced/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="mynode1">
<alias>node0</alias>
diff --git a/config-model/src/test/cfg/storage/clustercontroller_advanced/schemas/music.sd b/config-model/src/test/cfg/storage/clustercontroller_advanced/schemas/music.sd
index da9e2d14c55..290f8983b4d 100644
--- a/config-model/src/test/cfg/storage/clustercontroller_advanced/schemas/music.sd
+++ b/config-model/src/test/cfg/storage/clustercontroller_advanced/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music {
field f1 type string {
diff --git a/config-model/src/test/cfg/storage/clustercontroller_advanced/services.xml b/config-model/src/test/cfg/storage/clustercontroller_advanced/services.xml
index 7e899ee0578..fce75c261a0 100644
--- a/config-model/src/test/cfg/storage/clustercontroller_advanced/services.xml
+++ b/config-model/src/test/cfg/storage/clustercontroller_advanced/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
diff --git a/config-model/src/test/configmodel/types/other_doc.sd b/config-model/src/test/configmodel/types/other_doc.sd
index 2c4f40cca47..26aa612295b 100644
--- a/config-model/src/test/configmodel/types/other_doc.sd
+++ b/config-model/src/test/configmodel/types/other_doc.sd
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
document other_doc {
}
diff --git a/config-model/src/test/configmodel/types/type_with_doc_field.sd b/config-model/src/test/configmodel/types/type_with_doc_field.sd
index b879bb395d7..290b7958c9f 100644
--- a/config-model/src/test/configmodel/types/type_with_doc_field.sd
+++ b/config-model/src/test/configmodel/types/type_with_doc_field.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search types {
document types {
diff --git a/config-model/src/test/configmodel/types/types.sd b/config-model/src/test/configmodel/types/types.sd
index 9bd9602008c..14ddc01e097 100644
--- a/config-model/src/test/configmodel/types/types.sd
+++ b/config-model/src/test/configmodel/types/types.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search types {
document types {
diff --git a/config-model/src/test/derived/advanced/advanced.sd b/config-model/src/test/derived/advanced/advanced.sd
index fff5422886d..b03db73d45d 100644
--- a/config-model/src/test/derived/advanced/advanced.sd
+++ b/config-model/src/test/derived/advanced/advanced.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search advanced {
document advanced {
field debug_src type string { }
diff --git a/config-model/src/test/derived/advanced/attributes.cfg b/config-model/src/test/derived/advanced/attributes.cfg
index 63bd7d980a6..f6dc8415f2b 100644
--- a/config-model/src/test/derived/advanced/attributes.cfg
+++ b/config-model/src/test/derived/advanced/attributes.cfg
@@ -8,6 +8,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch true
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
diff --git a/config-model/src/test/derived/annotationsimplicitstruct/annotationsimplicitstruct.sd b/config-model/src/test/derived/annotationsimplicitstruct/annotationsimplicitstruct.sd
index 7f3cc3f7364..5ac7ac38a90 100755
--- a/config-model/src/test/derived/annotationsimplicitstruct/annotationsimplicitstruct.sd
+++ b/config-model/src/test/derived/annotationsimplicitstruct/annotationsimplicitstruct.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search annotationsimplicitstruct {
document annotationsimplicitstruct {
diff --git a/config-model/src/test/derived/annotationsinheritance/annotationsinheritance.sd b/config-model/src/test/derived/annotationsinheritance/annotationsinheritance.sd
index f58913f9963..a0f1787228d 100755
--- a/config-model/src/test/derived/annotationsinheritance/annotationsinheritance.sd
+++ b/config-model/src/test/derived/annotationsinheritance/annotationsinheritance.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search annotationsinheritance {
document annotationsinheritance {
diff --git a/config-model/src/test/derived/annotationsinheritance2/annotationsinheritance2.sd b/config-model/src/test/derived/annotationsinheritance2/annotationsinheritance2.sd
index effefb1f340..2abb84d9b9f 100755
--- a/config-model/src/test/derived/annotationsinheritance2/annotationsinheritance2.sd
+++ b/config-model/src/test/derived/annotationsinheritance2/annotationsinheritance2.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search annotationsinheritance2 {
document annotationsinheritance2 {
diff --git a/config-model/src/test/derived/annotationsoutsideofdocument/annotationsoutsideofdocument.sd b/config-model/src/test/derived/annotationsoutsideofdocument/annotationsoutsideofdocument.sd
index af661252bbb..017b574fb89 100644
--- a/config-model/src/test/derived/annotationsoutsideofdocument/annotationsoutsideofdocument.sd
+++ b/config-model/src/test/derived/annotationsoutsideofdocument/annotationsoutsideofdocument.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search annotationsoutsideofdocument {
# (will fail)
diff --git a/config-model/src/test/derived/annotationspolymorphy/annotationspolymorphy.sd b/config-model/src/test/derived/annotationspolymorphy/annotationspolymorphy.sd
index 09b29314666..b02cf5a88ea 100644
--- a/config-model/src/test/derived/annotationspolymorphy/annotationspolymorphy.sd
+++ b/config-model/src/test/derived/annotationspolymorphy/annotationspolymorphy.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search annotationspolymorphy {
document annotationspolymorphy {
diff --git a/config-model/src/test/derived/annotationsreference/annotationsreference.sd b/config-model/src/test/derived/annotationsreference/annotationsreference.sd
index 724cf80803c..11972c13c39 100755
--- a/config-model/src/test/derived/annotationsreference/annotationsreference.sd
+++ b/config-model/src/test/derived/annotationsreference/annotationsreference.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search annotationsreference {
document annotationsreference {
diff --git a/config-model/src/test/derived/annotationsreference2/annotationsreference2.sd b/config-model/src/test/derived/annotationsreference2/annotationsreference2.sd
index d9fd27efa1e..6f00d6aa6ee 100644
--- a/config-model/src/test/derived/annotationsreference2/annotationsreference2.sd
+++ b/config-model/src/test/derived/annotationsreference2/annotationsreference2.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search annotationreference2 {
document annotationreference2 {
annotation foo { }
diff --git a/config-model/src/test/derived/annotationssimple/annotationssimple.sd b/config-model/src/test/derived/annotationssimple/annotationssimple.sd
index 83f7f81b5e8..8ace7165cba 100755
--- a/config-model/src/test/derived/annotationssimple/annotationssimple.sd
+++ b/config-model/src/test/derived/annotationssimple/annotationssimple.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search annotationssimple {
document annotationssimple {
diff --git a/config-model/src/test/derived/annotationsstruct/annotationsstruct.sd b/config-model/src/test/derived/annotationsstruct/annotationsstruct.sd
index 808b436dd63..ae9bd896af7 100644
--- a/config-model/src/test/derived/annotationsstruct/annotationsstruct.sd
+++ b/config-model/src/test/derived/annotationsstruct/annotationsstruct.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search annotationsstruct {
document annotationsstruct {
struct my_struct {
diff --git a/config-model/src/test/derived/annotationsstructarray/annotationsstructarray.sd b/config-model/src/test/derived/annotationsstructarray/annotationsstructarray.sd
index af24b7f98c0..44d77caf0d5 100644
--- a/config-model/src/test/derived/annotationsstructarray/annotationsstructarray.sd
+++ b/config-model/src/test/derived/annotationsstructarray/annotationsstructarray.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search annotationsstructarray {
document annotationsstructarray {
struct my_struct {
diff --git a/config-model/src/test/derived/array_of_struct_attribute/attributes.cfg b/config-model/src/test/derived/array_of_struct_attribute/attributes.cfg
index eff0f7bd7a1..95d7e5e9299 100644
--- a/config-model/src/test/derived/array_of_struct_attribute/attributes.cfg
+++ b/config-model/src/test/derived/array_of_struct_attribute/attributes.cfg
@@ -8,6 +8,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch true
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -38,6 +39,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
diff --git a/config-model/src/test/derived/array_of_struct_attribute/test.sd b/config-model/src/test/derived/array_of_struct_attribute/test.sd
index b9606553076..2846c3be13d 100644
--- a/config-model/src/test/derived/array_of_struct_attribute/test.sd
+++ b/config-model/src/test/derived/array_of_struct_attribute/test.sd
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search test {
document test {
struct elem {
diff --git a/config-model/src/test/derived/arrays/arrays.sd b/config-model/src/test/derived/arrays/arrays.sd
index f1a8b009233..43aa9c24888 100644
--- a/config-model/src/test/derived/arrays/arrays.sd
+++ b/config-model/src/test/derived/arrays/arrays.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search arrays {
document arrays {
diff --git a/config-model/src/test/derived/attributeprefetch/attributeprefetch.sd b/config-model/src/test/derived/attributeprefetch/attributeprefetch.sd
index ef3755e90d7..e778c590aac 100644
--- a/config-model/src/test/derived/attributeprefetch/attributeprefetch.sd
+++ b/config-model/src/test/derived/attributeprefetch/attributeprefetch.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search prefetch {
document prefetch {
field singlebyte type byte {
diff --git a/config-model/src/test/derived/attributeprefetch/attributes.cfg b/config-model/src/test/derived/attributeprefetch/attributes.cfg
index 43f8b813139..fecc0d9a7a0 100644
--- a/config-model/src/test/derived/attributeprefetch/attributes.cfg
+++ b/config-model/src/test/derived/attributeprefetch/attributes.cfg
@@ -8,6 +8,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -38,6 +39,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -68,6 +70,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -98,6 +101,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -128,6 +132,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -158,6 +163,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -188,6 +194,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -218,6 +225,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -248,6 +256,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -278,6 +287,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -308,6 +318,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -338,6 +349,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -368,6 +380,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -398,6 +411,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -428,6 +442,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -458,6 +473,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -488,6 +504,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -518,6 +535,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
diff --git a/config-model/src/test/derived/attributerank/attributerank.sd b/config-model/src/test/derived/attributerank/attributerank.sd
index 3405c852c4c..86f96e4817c 100644
--- a/config-model/src/test/derived/attributerank/attributerank.sd
+++ b/config-model/src/test/derived/attributerank/attributerank.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search attributerank {
document attributerank {
@@ -30,7 +30,7 @@ search attributerank {
rank-type singlestring: default
}
- rank-profile secondprofile inherits identity {
+ rank-profile secondprofile {
rank-type singlebyte: identity
rank-type singleint: identity
rank-type singlelong: identity
diff --git a/config-model/src/test/derived/attributes/attributes.cfg b/config-model/src/test/derived/attributes/attributes.cfg
index 82d1f7c99dc..051b8a11248 100644
--- a/config-model/src/test/derived/attributes/attributes.cfg
+++ b/config-model/src/test/derived/attributes/attributes.cfg
@@ -8,6 +8,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -38,6 +39,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -68,6 +70,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -98,6 +101,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -128,6 +132,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -158,6 +163,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -188,6 +194,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -218,6 +225,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -248,6 +256,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -278,6 +287,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -308,6 +318,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -338,6 +349,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -368,6 +380,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -398,6 +411,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch true
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -428,6 +442,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -458,6 +473,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -488,6 +504,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -518,6 +535,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
diff --git a/config-model/src/test/derived/attributes/attributes.sd b/config-model/src/test/derived/attributes/attributes.sd
index e2c6d62da25..3dfce32e22d 100644
--- a/config-model/src/test/derived/attributes/attributes.sd
+++ b/config-model/src/test/derived/attributes/attributes.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search attributes {
document attributes {
diff --git a/config-model/src/test/derived/combinedattributeandindexsearch/combinedattributeandindexsearch.sd b/config-model/src/test/derived/combinedattributeandindexsearch/combinedattributeandindexsearch.sd
index 6943d3be8b6..8e28c3b6311 100644
--- a/config-model/src/test/derived/combinedattributeandindexsearch/combinedattributeandindexsearch.sd
+++ b/config-model/src/test/derived/combinedattributeandindexsearch/combinedattributeandindexsearch.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search combinedattributeandindexsearch {
document combinedattributeandindexsearch {
diff --git a/config-model/src/test/derived/complex/attributes.cfg b/config-model/src/test/derived/complex/attributes.cfg
index 3c0f10722de..dc71d841d25 100644
--- a/config-model/src/test/derived/complex/attributes.cfg
+++ b/config-model/src/test/derived/complex/attributes.cfg
@@ -8,6 +8,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge true
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -38,6 +39,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -68,6 +70,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -98,6 +101,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -128,6 +132,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -158,6 +163,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -188,6 +194,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -218,6 +225,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -248,6 +256,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
diff --git a/config-model/src/test/derived/complex/complex.sd b/config-model/src/test/derived/complex/complex.sd
index 82aca00ebfc..fffa9b02212 100644
--- a/config-model/src/test/derived/complex/complex.sd
+++ b/config-model/src/test/derived/complex/complex.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search complex {
document complex {
diff --git a/config-model/src/test/derived/deriver/child.sd b/config-model/src/test/derived/deriver/child.sd
index 2b09b9fecd7..5e63a54f690 100644
--- a/config-model/src/test/derived/deriver/child.sd
+++ b/config-model/src/test/derived/deriver/child.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search child {
document child inherits parent {
diff --git a/config-model/src/test/derived/deriver/grandparent.sd b/config-model/src/test/derived/deriver/grandparent.sd
index 3708c8965c3..f1105bf3f43 100644
--- a/config-model/src/test/derived/deriver/grandparent.sd
+++ b/config-model/src/test/derived/deriver/grandparent.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search grandparent {
document grandparent {
diff --git a/config-model/src/test/derived/deriver/parent.sd b/config-model/src/test/derived/deriver/parent.sd
index 2642d2f2ac3..6cf930513e4 100644
--- a/config-model/src/test/derived/deriver/parent.sd
+++ b/config-model/src/test/derived/deriver/parent.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search parent {
document parent inherits grandparent {
diff --git a/config-model/src/test/derived/emptychild/child.sd b/config-model/src/test/derived/emptychild/child.sd
index bcfec8047d0..814899363d7 100644
--- a/config-model/src/test/derived/emptychild/child.sd
+++ b/config-model/src/test/derived/emptychild/child.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search child {
document child inherits parent {
}
diff --git a/config-model/src/test/derived/emptychild/parent.sd b/config-model/src/test/derived/emptychild/parent.sd
index fd253a86371..8c1754f54c9 100644
--- a/config-model/src/test/derived/emptychild/parent.sd
+++ b/config-model/src/test/derived/emptychild/parent.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search parent {
document parent {
field a1 type string {
diff --git a/config-model/src/test/derived/emptydefault/emptydefault.sd b/config-model/src/test/derived/emptydefault/emptydefault.sd
index 6f4ef80fc31..5f317fe2b7f 100644
--- a/config-model/src/test/derived/emptydefault/emptydefault.sd
+++ b/config-model/src/test/derived/emptydefault/emptydefault.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search emptydefault {
document emptydefault {
diff --git a/config-model/src/test/derived/exactmatch/exactmatch.sd b/config-model/src/test/derived/exactmatch/exactmatch.sd
index 2f1d54c970a..cad44111978 100644
--- a/config-model/src/test/derived/exactmatch/exactmatch.sd
+++ b/config-model/src/test/derived/exactmatch/exactmatch.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search exactmatch {
document exactmatch {
diff --git a/config-model/src/test/derived/flickr/flickrphotos.sd b/config-model/src/test/derived/flickr/flickrphotos.sd
index 7b892422322..a7680067a53 100755
--- a/config-model/src/test/derived/flickr/flickrphotos.sd
+++ b/config-model/src/test/derived/flickr/flickrphotos.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search flickrphotos{
#Document summary to use for attribute-prefetching with many hits
diff --git a/config-model/src/test/derived/function_arguments/test.sd b/config-model/src/test/derived/function_arguments/test.sd
index a8b0eebe367..a502c25adb0 100644
--- a/config-model/src/test/derived/function_arguments/test.sd
+++ b/config-model/src/test/derived/function_arguments/test.sd
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search args {
document args {
diff --git a/config-model/src/test/derived/function_arguments_with_expressions/test.sd b/config-model/src/test/derived/function_arguments_with_expressions/test.sd
index bf7453f9001..a4d3d5bfdae 100644
--- a/config-model/src/test/derived/function_arguments_with_expressions/test.sd
+++ b/config-model/src/test/derived/function_arguments_with_expressions/test.sd
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search test {
document test {
diff --git a/config-model/src/test/derived/gemini2/gemini.sd b/config-model/src/test/derived/gemini2/gemini.sd
index 8a570e58fa8..0dc413a0957 100644
--- a/config-model/src/test/derived/gemini2/gemini.sd
+++ b/config-model/src/test/derived/gemini2/gemini.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search gemini {
document gemini {
diff --git a/config-model/src/test/derived/hnsw_index/attributes.cfg b/config-model/src/test/derived/hnsw_index/attributes.cfg
index f7f040bf182..b25f30d0462 100644
--- a/config-model/src/test/derived/hnsw_index/attributes.cfg
+++ b/config-model/src/test/derived/hnsw_index/attributes.cfg
@@ -8,6 +8,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -38,6 +39,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
diff --git a/config-model/src/test/derived/hnsw_index/test.sd b/config-model/src/test/derived/hnsw_index/test.sd
index 6006ea7a4f9..a56b2fa2fcc 100644
--- a/config-model/src/test/derived/hnsw_index/test.sd
+++ b/config-model/src/test/derived/hnsw_index/test.sd
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search test {
document test {
field t1 type tensor(x[128]) {
diff --git a/config-model/src/test/derived/id/id.sd b/config-model/src/test/derived/id/id.sd
index c74898c14fe..bab549218f2 100644
--- a/config-model/src/test/derived/id/id.sd
+++ b/config-model/src/test/derived/id/id.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search id {
document id {
diff --git a/config-model/src/test/derived/imported_fields_inherited_reference/attributes.cfg b/config-model/src/test/derived/imported_fields_inherited_reference/attributes.cfg
index 26019842732..c74b850eeac 100644
--- a/config-model/src/test/derived/imported_fields_inherited_reference/attributes.cfg
+++ b/config-model/src/test/derived/imported_fields_inherited_reference/attributes.cfg
@@ -8,6 +8,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -38,6 +39,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -68,6 +70,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -98,6 +101,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
diff --git a/config-model/src/test/derived/imported_fields_inherited_reference/child_a.sd b/config-model/src/test/derived/imported_fields_inherited_reference/child_a.sd
index 75c16d1eefe..e0d87497435 100644
--- a/config-model/src/test/derived/imported_fields_inherited_reference/child_a.sd
+++ b/config-model/src/test/derived/imported_fields_inherited_reference/child_a.sd
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
schema child_a {
document child_a {
field ref_from_a type reference<parent> {
diff --git a/config-model/src/test/derived/imported_fields_inherited_reference/child_b.sd b/config-model/src/test/derived/imported_fields_inherited_reference/child_b.sd
index b4349fcc65d..3a13e339e7f 100644
--- a/config-model/src/test/derived/imported_fields_inherited_reference/child_b.sd
+++ b/config-model/src/test/derived/imported_fields_inherited_reference/child_b.sd
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
schema child_b {
document child_b inherits child_a {
field ref_from_b type reference<parent> {
diff --git a/config-model/src/test/derived/imported_fields_inherited_reference/child_c.sd b/config-model/src/test/derived/imported_fields_inherited_reference/child_c.sd
index f798b8c3446..3e8b298f7f0 100644
--- a/config-model/src/test/derived/imported_fields_inherited_reference/child_c.sd
+++ b/config-model/src/test/derived/imported_fields_inherited_reference/child_c.sd
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
schema child_c {
document child_c inherits child_b {
}
diff --git a/config-model/src/test/derived/imported_fields_inherited_reference/parent.sd b/config-model/src/test/derived/imported_fields_inherited_reference/parent.sd
index 0509f1a8565..eb466e7adf3 100644
--- a/config-model/src/test/derived/imported_fields_inherited_reference/parent.sd
+++ b/config-model/src/test/derived/imported_fields_inherited_reference/parent.sd
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
schema parent {
document parent {
field int_field type int {
diff --git a/config-model/src/test/derived/imported_position_field/attributes.cfg b/config-model/src/test/derived/imported_position_field/attributes.cfg
index 70b6ed14c55..b82d4828793 100644
--- a/config-model/src/test/derived/imported_position_field/attributes.cfg
+++ b/config-model/src/test/derived/imported_position_field/attributes.cfg
@@ -8,6 +8,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -38,6 +39,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch true
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
diff --git a/config-model/src/test/derived/imported_position_field/child.sd b/config-model/src/test/derived/imported_position_field/child.sd
index 29997b855bd..908eb417807 100644
--- a/config-model/src/test/derived/imported_position_field/child.sd
+++ b/config-model/src/test/derived/imported_position_field/child.sd
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search child {
document child {
field parent_ref type reference<parent> {
diff --git a/config-model/src/test/derived/imported_position_field/parent.sd b/config-model/src/test/derived/imported_position_field/parent.sd
index 493e105e5fd..5f1710cb176 100644
--- a/config-model/src/test/derived/imported_position_field/parent.sd
+++ b/config-model/src/test/derived/imported_position_field/parent.sd
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search parent {
document parent {
field pos type position {
diff --git a/config-model/src/test/derived/imported_position_field_summary/child.sd b/config-model/src/test/derived/imported_position_field_summary/child.sd
index aaa31a3273d..45a8001b055 100644
--- a/config-model/src/test/derived/imported_position_field_summary/child.sd
+++ b/config-model/src/test/derived/imported_position_field_summary/child.sd
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search child {
document child {
field parent_ref type reference<parent> {
diff --git a/config-model/src/test/derived/imported_position_field_summary/parent.sd b/config-model/src/test/derived/imported_position_field_summary/parent.sd
index 493e105e5fd..5f1710cb176 100644
--- a/config-model/src/test/derived/imported_position_field_summary/parent.sd
+++ b/config-model/src/test/derived/imported_position_field_summary/parent.sd
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search parent {
document parent {
field pos type position {
diff --git a/config-model/src/test/derived/imported_struct_fields/attributes.cfg b/config-model/src/test/derived/imported_struct_fields/attributes.cfg
index e06d0f1a220..6cc4b807566 100644
--- a/config-model/src/test/derived/imported_struct_fields/attributes.cfg
+++ b/config-model/src/test/derived/imported_struct_fields/attributes.cfg
@@ -8,6 +8,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -38,6 +39,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch true
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -68,6 +70,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -98,6 +101,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch true
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -128,6 +132,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch true
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -158,6 +163,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -188,6 +194,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch true
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -218,6 +225,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
diff --git a/config-model/src/test/derived/imported_struct_fields/child.sd b/config-model/src/test/derived/imported_struct_fields/child.sd
index c5323bd3c7b..b6b2bb4b444 100644
--- a/config-model/src/test/derived/imported_struct_fields/child.sd
+++ b/config-model/src/test/derived/imported_struct_fields/child.sd
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search child {
document child {
field parent_ref type reference<parent> {
diff --git a/config-model/src/test/derived/imported_struct_fields/parent.sd b/config-model/src/test/derived/imported_struct_fields/parent.sd
index 7419cb465fd..5e3f248b748 100644
--- a/config-model/src/test/derived/imported_struct_fields/parent.sd
+++ b/config-model/src/test/derived/imported_struct_fields/parent.sd
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search parent {
document parent {
struct elem {
diff --git a/config-model/src/test/derived/importedfields/attributes.cfg b/config-model/src/test/derived/importedfields/attributes.cfg
index 57dd2408869..b70481a3c10 100644
--- a/config-model/src/test/derived/importedfields/attributes.cfg
+++ b/config-model/src/test/derived/importedfields/attributes.cfg
@@ -8,6 +8,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -38,6 +39,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -68,6 +70,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -98,6 +101,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -128,6 +132,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -158,6 +163,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -188,6 +194,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -218,6 +225,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
diff --git a/config-model/src/test/derived/importedfields/child.sd b/config-model/src/test/derived/importedfields/child.sd
index 95fe44d333a..dc512471022 100644
--- a/config-model/src/test/derived/importedfields/child.sd
+++ b/config-model/src/test/derived/importedfields/child.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search child {
document child {
field a_ref type reference<parent_a> { indexing: attribute }
diff --git a/config-model/src/test/derived/importedfields/grandparent.sd b/config-model/src/test/derived/importedfields/grandparent.sd
index 9e0e628f742..7ec4c5f911b 100644
--- a/config-model/src/test/derived/importedfields/grandparent.sd
+++ b/config-model/src/test/derived/importedfields/grandparent.sd
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search grandparent {
document grandparent {
field int_field type int {
diff --git a/config-model/src/test/derived/importedfields/parent_a.sd b/config-model/src/test/derived/importedfields/parent_a.sd
index 1f93b7884e0..85055606539 100644
--- a/config-model/src/test/derived/importedfields/parent_a.sd
+++ b/config-model/src/test/derived/importedfields/parent_a.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search parent_a {
document parent_a {
field grandparent_ref type reference<grandparent> {
diff --git a/config-model/src/test/derived/importedfields/parent_b.sd b/config-model/src/test/derived/importedfields/parent_b.sd
index d18e9dc6783..f5ed8c5ffae 100644
--- a/config-model/src/test/derived/importedfields/parent_b.sd
+++ b/config-model/src/test/derived/importedfields/parent_b.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search parent_b {
document parent_b {
field string_field type string {
diff --git a/config-model/src/test/derived/indexinfo_fieldsets/indexinfo_fieldsets.sd b/config-model/src/test/derived/indexinfo_fieldsets/indexinfo_fieldsets.sd
index c38562ac0f1..885def07950 100644
--- a/config-model/src/test/derived/indexinfo_fieldsets/indexinfo_fieldsets.sd
+++ b/config-model/src/test/derived/indexinfo_fieldsets/indexinfo_fieldsets.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexinfo_fieldsets {
document indexinfo_fieldsets {
diff --git a/config-model/src/test/derived/indexinfo_lowercase/indexinfo_lowercase.sd b/config-model/src/test/derived/indexinfo_lowercase/indexinfo_lowercase.sd
index 0246b8f091a..c4de1fa1a91 100644
--- a/config-model/src/test/derived/indexinfo_lowercase/indexinfo_lowercase.sd
+++ b/config-model/src/test/derived/indexinfo_lowercase/indexinfo_lowercase.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexinfo_lowercase {
document indexinfo_lowercase {
diff --git a/config-model/src/test/derived/indexschema/indexschema.sd b/config-model/src/test/derived/indexschema/indexschema.sd
index 01f552a8c32..2e6b5ae2933 100644
--- a/config-model/src/test/derived/indexschema/indexschema.sd
+++ b/config-model/src/test/derived/indexschema/indexschema.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexschema {
field searchfield1 type string {}
diff --git a/config-model/src/test/derived/indexswitches/indexswitches.sd b/config-model/src/test/derived/indexswitches/indexswitches.sd
index 67ba1257292..8ed161f11f7 100644
--- a/config-model/src/test/derived/indexswitches/indexswitches.sd
+++ b/config-model/src/test/derived/indexswitches/indexswitches.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexswitches {
document indexswitches {
diff --git a/config-model/src/test/derived/inheritance/attributes.cfg b/config-model/src/test/derived/inheritance/attributes.cfg
index 9f5588b0000..09663615a3d 100644
--- a/config-model/src/test/derived/inheritance/attributes.cfg
+++ b/config-model/src/test/derived/inheritance/attributes.cfg
@@ -8,6 +8,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -38,6 +39,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -68,6 +70,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
diff --git a/config-model/src/test/derived/inheritance/child.sd b/config-model/src/test/derived/inheritance/child.sd
index c3eef9fa0a0..76876d68374 100644
--- a/config-model/src/test/derived/inheritance/child.sd
+++ b/config-model/src/test/derived/inheritance/child.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search child {
document child inherits father, mother {
diff --git a/config-model/src/test/derived/inheritance/father.sd b/config-model/src/test/derived/inheritance/father.sd
index bb2351e7414..f2de5d1e840 100644
--- a/config-model/src/test/derived/inheritance/father.sd
+++ b/config-model/src/test/derived/inheritance/father.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
document father inherits grandparent {
field onlyfather type string {
diff --git a/config-model/src/test/derived/inheritance/grandparent.sd b/config-model/src/test/derived/inheritance/grandparent.sd
index 6079673ec8f..a1191762e22 100644
--- a/config-model/src/test/derived/inheritance/grandparent.sd
+++ b/config-model/src/test/derived/inheritance/grandparent.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
document grandparent {
field onlygrandparent type int {
diff --git a/config-model/src/test/derived/inheritance/mother.sd b/config-model/src/test/derived/inheritance/mother.sd
index b53bff765dd..17411ad443b 100644
--- a/config-model/src/test/derived/inheritance/mother.sd
+++ b/config-model/src/test/derived/inheritance/mother.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
document mother inherits grandparent {
field onlymother type string {
diff --git a/config-model/src/test/derived/inheritdiamond/child.sd b/config-model/src/test/derived/inheritdiamond/child.sd
index 009849aefc9..ba3c6fdd744 100644
--- a/config-model/src/test/derived/inheritdiamond/child.sd
+++ b/config-model/src/test/derived/inheritdiamond/child.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search child {
document child inherits mother, father {
struct child_struct {
diff --git a/config-model/src/test/derived/inheritdiamond/father.sd b/config-model/src/test/derived/inheritdiamond/father.sd
index 63c9a9178f5..df628f9e4ef 100644
--- a/config-model/src/test/derived/inheritdiamond/father.sd
+++ b/config-model/src/test/derived/inheritdiamond/father.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search father {
document father inherits grandparent {
struct father_struct {
diff --git a/config-model/src/test/derived/inheritdiamond/grandparent.sd b/config-model/src/test/derived/inheritdiamond/grandparent.sd
index 0c897e8c79b..6b19dd129ef 100644
--- a/config-model/src/test/derived/inheritdiamond/grandparent.sd
+++ b/config-model/src/test/derived/inheritdiamond/grandparent.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search grandparent {
document grandparent {
struct grandparent_struct {
diff --git a/config-model/src/test/derived/inheritdiamond/mother.sd b/config-model/src/test/derived/inheritdiamond/mother.sd
index 6acba544dc0..e7b6b6143e6 100644
--- a/config-model/src/test/derived/inheritdiamond/mother.sd
+++ b/config-model/src/test/derived/inheritdiamond/mother.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search mother {
document mother inherits grandparent {
struct mother_struct {
diff --git a/config-model/src/test/derived/inheritfromgrandparent/child.sd b/config-model/src/test/derived/inheritfromgrandparent/child.sd
index f367d56572b..8678cbad3e1 100644
--- a/config-model/src/test/derived/inheritfromgrandparent/child.sd
+++ b/config-model/src/test/derived/inheritfromgrandparent/child.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search child {
document child inherits parent {
field child_field type grandparent_struct { }
diff --git a/config-model/src/test/derived/inheritfromgrandparent/grandparent.sd b/config-model/src/test/derived/inheritfromgrandparent/grandparent.sd
index 0c897e8c79b..6b19dd129ef 100644
--- a/config-model/src/test/derived/inheritfromgrandparent/grandparent.sd
+++ b/config-model/src/test/derived/inheritfromgrandparent/grandparent.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search grandparent {
document grandparent {
struct grandparent_struct {
diff --git a/config-model/src/test/derived/inheritfromgrandparent/parent.sd b/config-model/src/test/derived/inheritfromgrandparent/parent.sd
index 688ba60f8f4..6857f786efe 100644
--- a/config-model/src/test/derived/inheritfromgrandparent/parent.sd
+++ b/config-model/src/test/derived/inheritfromgrandparent/parent.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search parent {
document parent inherits grandparent {
diff --git a/config-model/src/test/derived/inheritfromnull/inheritfromnull.sd b/config-model/src/test/derived/inheritfromnull/inheritfromnull.sd
index bc6b0806885..769a0c74aa2 100644
--- a/config-model/src/test/derived/inheritfromnull/inheritfromnull.sd
+++ b/config-model/src/test/derived/inheritfromnull/inheritfromnull.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search inheritfromnull {
document inheritfromnull inherits foo {
}
diff --git a/config-model/src/test/derived/inheritfromparent/attributes.cfg b/config-model/src/test/derived/inheritfromparent/attributes.cfg
index 0a1cf0b9f0e..7ce3940897f 100644
--- a/config-model/src/test/derived/inheritfromparent/attributes.cfg
+++ b/config-model/src/test/derived/inheritfromparent/attributes.cfg
@@ -8,6 +8,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
diff --git a/config-model/src/test/derived/inheritfromparent/child.sd b/config-model/src/test/derived/inheritfromparent/child.sd
index 48762e2c26c..ea577d620b7 100644
--- a/config-model/src/test/derived/inheritfromparent/child.sd
+++ b/config-model/src/test/derived/inheritfromparent/child.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search child {
document child inherits parent {
field child_field type parent_struct { }
diff --git a/config-model/src/test/derived/inheritfromparent/parent.sd b/config-model/src/test/derived/inheritfromparent/parent.sd
index 4f6e661a3be..502da7efcaf 100644
--- a/config-model/src/test/derived/inheritfromparent/parent.sd
+++ b/config-model/src/test/derived/inheritfromparent/parent.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search parent {
document parent {
struct parent_struct {
diff --git a/config-model/src/test/derived/inheritstruct/child.sd b/config-model/src/test/derived/inheritstruct/child.sd
index 5ac69c429e1..0ac4048e5fa 100644
--- a/config-model/src/test/derived/inheritstruct/child.sd
+++ b/config-model/src/test/derived/inheritstruct/child.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search child {
document child inherits parent {
field child_struct_field type my_struct {
diff --git a/config-model/src/test/derived/inheritstruct/parent.sd b/config-model/src/test/derived/inheritstruct/parent.sd
index ecc2b31a10e..c5bf71a8479 100644
--- a/config-model/src/test/derived/inheritstruct/parent.sd
+++ b/config-model/src/test/derived/inheritstruct/parent.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search parent {
document parent {
struct my_struct {
diff --git a/config-model/src/test/derived/integerattributetostringindex/integerattributetostringindex.sd b/config-model/src/test/derived/integerattributetostringindex/integerattributetostringindex.sd
index abbc10ca2a7..a394b0d0094 100644
--- a/config-model/src/test/derived/integerattributetostringindex/integerattributetostringindex.sd
+++ b/config-model/src/test/derived/integerattributetostringindex/integerattributetostringindex.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search integerattributetostringindex {
document integerattributetostringindex {
field attinx type int {
diff --git a/config-model/src/test/derived/language/language.sd b/config-model/src/test/derived/language/language.sd
index 54c3d83873a..4b060598882 100644
--- a/config-model/src/test/derived/language/language.sd
+++ b/config-model/src/test/derived/language/language.sd
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
schema language {
document language {
field language type string {
diff --git a/config-model/src/test/derived/mail/mail.sd b/config-model/src/test/derived/mail/mail.sd
index 6c2c51eaa8a..73108fa280e 100644
--- a/config-model/src/test/derived/mail/mail.sd
+++ b/config-model/src/test/derived/mail/mail.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search mail {
stemming: none
diff --git a/config-model/src/test/derived/map_attribute/attributes.cfg b/config-model/src/test/derived/map_attribute/attributes.cfg
index ebcca4fde78..5db23544775 100644
--- a/config-model/src/test/derived/map_attribute/attributes.cfg
+++ b/config-model/src/test/derived/map_attribute/attributes.cfg
@@ -8,6 +8,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch true
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -38,6 +39,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -68,6 +70,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
diff --git a/config-model/src/test/derived/map_attribute/test.sd b/config-model/src/test/derived/map_attribute/test.sd
index e7905bda159..63fa3ba691f 100644
--- a/config-model/src/test/derived/map_attribute/test.sd
+++ b/config-model/src/test/derived/map_attribute/test.sd
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search test {
document test {
field str_map type map<string, string> {
diff --git a/config-model/src/test/derived/map_of_struct_attribute/attributes.cfg b/config-model/src/test/derived/map_of_struct_attribute/attributes.cfg
index bc7a17ebd62..2f4a1c2975e 100644
--- a/config-model/src/test/derived/map_of_struct_attribute/attributes.cfg
+++ b/config-model/src/test/derived/map_of_struct_attribute/attributes.cfg
@@ -8,6 +8,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch true
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -38,6 +39,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -68,6 +70,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -98,6 +101,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -128,6 +132,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch true
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
diff --git a/config-model/src/test/derived/map_of_struct_attribute/test.sd b/config-model/src/test/derived/map_of_struct_attribute/test.sd
index 9b00e91b351..ed81610467e 100644
--- a/config-model/src/test/derived/map_of_struct_attribute/test.sd
+++ b/config-model/src/test/derived/map_of_struct_attribute/test.sd
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search test {
document test {
struct elem {
diff --git a/config-model/src/test/derived/mlr/mlr.sd b/config-model/src/test/derived/mlr/mlr.sd
index 1a5354e3b30..66fa24a8417 100644
--- a/config-model/src/test/derived/mlr/mlr.sd
+++ b/config-model/src/test/derived/mlr/mlr.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search mlr {
document mlr {
diff --git a/config-model/src/test/derived/multiplesummaries/multiplesummaries.sd b/config-model/src/test/derived/multiplesummaries/multiplesummaries.sd
index cb7907ece30..f4e131ee0bb 100644
--- a/config-model/src/test/derived/multiplesummaries/multiplesummaries.sd
+++ b/config-model/src/test/derived/multiplesummaries/multiplesummaries.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search multiplesummaries {
document multiplesummaries {
diff --git a/config-model/src/test/derived/music/attributes.cfg b/config-model/src/test/derived/music/attributes.cfg
index bbe95047caa..ce3509b2519 100644
--- a/config-model/src/test/derived/music/attributes.cfg
+++ b/config-model/src/test/derived/music/attributes.cfg
@@ -8,6 +8,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -38,6 +39,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -68,6 +70,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -98,6 +101,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -128,6 +132,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -158,6 +163,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -188,6 +194,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -218,6 +225,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -248,6 +256,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -278,6 +287,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -308,6 +318,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
diff --git a/config-model/src/test/derived/music/defs/document.config.documentmanager.def b/config-model/src/test/derived/music/defs/document.config.documentmanager.def
index fa52e08a1de..f18ad53ab0d 100644
--- a/config-model/src/test/derived/music/defs/document.config.documentmanager.def
+++ b/config-model/src/test/derived/music/defs/document.config.documentmanager.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=document.config
datatype[].id int
datatype[].arraytype[].datatype int
diff --git a/config-model/src/test/derived/music/defs/test.extra.def b/config-model/src/test/derived/music/defs/test.extra.def
index 3c3eaa51ab5..dfbe06997e1 100644
--- a/config-model/src/test/derived/music/defs/test.extra.def
+++ b/config-model/src/test/derived/music/defs/test.extra.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=test
file[].name string
file[].content string
diff --git a/config-model/src/test/derived/music/defs/vespa.config.search.attributes.def b/config-model/src/test/derived/music/defs/vespa.config.search.attributes.def
index c8e51c391f7..f733b6155d3 100644
--- a/config-model/src/test/derived/music/defs/vespa.config.search.attributes.def
+++ b/config-model/src/test/derived/music/defs/vespa.config.search.attributes.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search
attribute[].name string
attribute[].datatype string
diff --git a/config-model/src/test/derived/music/defs/vespa.config.search.rank-profiles.def b/config-model/src/test/derived/music/defs/vespa.config.search.rank-profiles.def
index 03037865bb9..9d9154482be 100644
--- a/config-model/src/test/derived/music/defs/vespa.config.search.rank-profiles.def
+++ b/config-model/src/test/derived/music/defs/vespa.config.search.rank-profiles.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search
## name of this rank profile. maps to table index for internal use.
rankprofile[].name string
diff --git a/config-model/src/test/derived/music/defs/vespa.config.search.summarymap.def b/config-model/src/test/derived/music/defs/vespa.config.search.summarymap.def
index a994309e207..d3431d03708 100644
--- a/config-model/src/test/derived/music/defs/vespa.config.search.summarymap.def
+++ b/config-model/src/test/derived/music/defs/vespa.config.search.summarymap.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search
## The default output summary class id, -1 to use the stored summary class id
diff --git a/config-model/src/test/derived/music/defs/vespa.configdefinition.ilscripts.def b/config-model/src/test/derived/music/defs/vespa.configdefinition.ilscripts.def
index 1147fd6469d..456d9449fdd 100644
--- a/config-model/src/test/derived/music/defs/vespa.configdefinition.ilscripts.def
+++ b/config-model/src/test/derived/music/defs/vespa.configdefinition.ilscripts.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.configdefinition
ilscript[].name string
ilscript[].doctype string
diff --git a/config-model/src/test/derived/music/music.sd b/config-model/src/test/derived/music/music.sd
index 1a4fa816c7c..87479804f84 100644
--- a/config-model/src/test/derived/music/music.sd
+++ b/config-model/src/test/derived/music/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music {
diff --git a/config-model/src/test/derived/music3/music3.sd b/config-model/src/test/derived/music3/music3.sd
index a9da946f8c1..aac756d29b0 100644
--- a/config-model/src/test/derived/music3/music3.sd
+++ b/config-model/src/test/derived/music3/music3.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music3 {
document music3 {
diff --git a/config-model/src/test/derived/namecollision/collision.sd b/config-model/src/test/derived/namecollision/collision.sd
index 43dd4830204..56c1be2aada 100644
--- a/config-model/src/test/derived/namecollision/collision.sd
+++ b/config-model/src/test/derived/namecollision/collision.sd
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search collision {
document collision {
diff --git a/config-model/src/test/derived/namecollision/collisionstruct.sd b/config-model/src/test/derived/namecollision/collisionstruct.sd
index c98efb0b582..5a9d1fe2f11 100644
--- a/config-model/src/test/derived/namecollision/collisionstruct.sd
+++ b/config-model/src/test/derived/namecollision/collisionstruct.sd
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search collisionstruct {
document collisionstruct {
diff --git a/config-model/src/test/derived/nearestneighbor/query-profiles/default.xml b/config-model/src/test/derived/nearestneighbor/query-profiles/default.xml
index cd4bcbb9e0d..339f04b34d4 100644
--- a/config-model/src/test/derived/nearestneighbor/query-profiles/default.xml
+++ b/config-model/src/test/derived/nearestneighbor/query-profiles/default.xml
@@ -1,2 +1,2 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="default" type="root" />
diff --git a/config-model/src/test/derived/nearestneighbor/query-profiles/types/root.xml b/config-model/src/test/derived/nearestneighbor/query-profiles/types/root.xml
index deaab98c606..7e671a65f09 100644
--- a/config-model/src/test/derived/nearestneighbor/query-profiles/types/root.xml
+++ b/config-model/src/test/derived/nearestneighbor/query-profiles/types/root.xml
@@ -1,4 +1,4 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile-type id="root" inherits="native">
<field name="ranking.features.query(q_vec)" type="tensor&lt;float&gt;(x[5])" />
</query-profile-type>
diff --git a/config-model/src/test/derived/nearestneighbor/test.sd b/config-model/src/test/derived/nearestneighbor/test.sd
index 212fa684c01..58790d283ee 100644
--- a/config-model/src/test/derived/nearestneighbor/test.sd
+++ b/config-model/src/test/derived/nearestneighbor/test.sd
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search test {
document test {
field id type int {
diff --git a/config-model/src/test/derived/newrank/attributes.cfg b/config-model/src/test/derived/newrank/attributes.cfg
index a690b075f22..dc445cde09f 100644
--- a/config-model/src/test/derived/newrank/attributes.cfg
+++ b/config-model/src/test/derived/newrank/attributes.cfg
@@ -8,6 +8,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -38,6 +39,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -68,6 +70,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -98,6 +101,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -128,6 +132,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -158,6 +163,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -188,6 +194,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -218,6 +225,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -248,6 +256,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -278,6 +287,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
diff --git a/config-model/src/test/derived/newrank/defs/document.config.documentmanager.def b/config-model/src/test/derived/newrank/defs/document.config.documentmanager.def
index fa52e08a1de..f18ad53ab0d 100644
--- a/config-model/src/test/derived/newrank/defs/document.config.documentmanager.def
+++ b/config-model/src/test/derived/newrank/defs/document.config.documentmanager.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=document.config
datatype[].id int
datatype[].arraytype[].datatype int
diff --git a/config-model/src/test/derived/newrank/defs/test.extra.def b/config-model/src/test/derived/newrank/defs/test.extra.def
index 3c3eaa51ab5..dfbe06997e1 100644
--- a/config-model/src/test/derived/newrank/defs/test.extra.def
+++ b/config-model/src/test/derived/newrank/defs/test.extra.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=test
file[].name string
file[].content string
diff --git a/config-model/src/test/derived/newrank/defs/vespa.config.search.attributes.def b/config-model/src/test/derived/newrank/defs/vespa.config.search.attributes.def
index c8e51c391f7..f733b6155d3 100644
--- a/config-model/src/test/derived/newrank/defs/vespa.config.search.attributes.def
+++ b/config-model/src/test/derived/newrank/defs/vespa.config.search.attributes.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search
attribute[].name string
attribute[].datatype string
diff --git a/config-model/src/test/derived/newrank/defs/vespa.config.search.rank-profiles.def b/config-model/src/test/derived/newrank/defs/vespa.config.search.rank-profiles.def
index 03037865bb9..9d9154482be 100644
--- a/config-model/src/test/derived/newrank/defs/vespa.config.search.rank-profiles.def
+++ b/config-model/src/test/derived/newrank/defs/vespa.config.search.rank-profiles.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search
## name of this rank profile. maps to table index for internal use.
rankprofile[].name string
diff --git a/config-model/src/test/derived/newrank/defs/vespa.config.search.summarymap.def b/config-model/src/test/derived/newrank/defs/vespa.config.search.summarymap.def
index 3f98c2b40eb..d3c3f86b295 100644
--- a/config-model/src/test/derived/newrank/defs/vespa.config.search.summarymap.def
+++ b/config-model/src/test/derived/newrank/defs/vespa.config.search.summarymap.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search
## The default output summary class id, -1 to use the stored summary class id
defaultoutputclass int default=-1
diff --git a/config-model/src/test/derived/newrank/defs/vespa.configdefinition.ilscripts.def b/config-model/src/test/derived/newrank/defs/vespa.configdefinition.ilscripts.def
index 1147fd6469d..456d9449fdd 100644
--- a/config-model/src/test/derived/newrank/defs/vespa.configdefinition.ilscripts.def
+++ b/config-model/src/test/derived/newrank/defs/vespa.configdefinition.ilscripts.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.configdefinition
ilscript[].name string
ilscript[].doctype string
diff --git a/config-model/src/test/derived/newrank/newrank.sd b/config-model/src/test/derived/newrank/newrank.sd
index 0850de61d40..8990f1b4163 100644
--- a/config-model/src/test/derived/newrank/newrank.sd
+++ b/config-model/src/test/derived/newrank/newrank.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search newrank{
document newrank{
diff --git a/config-model/src/test/derived/nuwa/newsindex.sd b/config-model/src/test/derived/nuwa/newsindex.sd
index 364009c33dd..68592391f52 100644
--- a/config-model/src/test/derived/nuwa/newsindex.sd
+++ b/config-model/src/test/derived/nuwa/newsindex.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search newsindex {
document newsindex {
diff --git a/config-model/src/test/derived/orderilscripts/orderilscripts.sd b/config-model/src/test/derived/orderilscripts/orderilscripts.sd
index 6cbd5b03c09..dd4598efd0b 100755
--- a/config-model/src/test/derived/orderilscripts/orderilscripts.sd
+++ b/config-model/src/test/derived/orderilscripts/orderilscripts.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search orderilscripts {
document orderilscripts {
diff --git a/config-model/src/test/derived/position_array/position_array.sd b/config-model/src/test/derived/position_array/position_array.sd
index 6f377ceeace..af76106859c 100644
--- a/config-model/src/test/derived/position_array/position_array.sd
+++ b/config-model/src/test/derived/position_array/position_array.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search position_array {
document position_array {
field pos type array<position> {
diff --git a/config-model/src/test/derived/position_attribute/position_attribute.sd b/config-model/src/test/derived/position_attribute/position_attribute.sd
index 4dbf4f16949..a524143376f 100644
--- a/config-model/src/test/derived/position_attribute/position_attribute.sd
+++ b/config-model/src/test/derived/position_attribute/position_attribute.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search position_attribute {
document position_attribute {
field pos type position {
diff --git a/config-model/src/test/derived/position_extra/position_extra.sd b/config-model/src/test/derived/position_extra/position_extra.sd
index cd7e6a02a9b..a7cc8ef8cc4 100644
--- a/config-model/src/test/derived/position_extra/position_extra.sd
+++ b/config-model/src/test/derived/position_extra/position_extra.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search position_extra {
document position_extra {
field pos_str type string {
diff --git a/config-model/src/test/derived/position_nosummary/position_nosummary.sd b/config-model/src/test/derived/position_nosummary/position_nosummary.sd
index 108e8f5400c..d20e7a412dc 100644
--- a/config-model/src/test/derived/position_nosummary/position_nosummary.sd
+++ b/config-model/src/test/derived/position_nosummary/position_nosummary.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search position_nosummary {
document position_nosummary {
field pos type position {
diff --git a/config-model/src/test/derived/position_summary/position_summary.sd b/config-model/src/test/derived/position_summary/position_summary.sd
index 564c358dbc1..59b930bc9e4 100644
--- a/config-model/src/test/derived/position_summary/position_summary.sd
+++ b/config-model/src/test/derived/position_summary/position_summary.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search position_summary {
document position_summary {
field pos type position {
diff --git a/config-model/src/test/derived/predicate_attribute/attributes.cfg b/config-model/src/test/derived/predicate_attribute/attributes.cfg
index 1d6e0c9de32..0d84a1e102e 100644
--- a/config-model/src/test/derived/predicate_attribute/attributes.cfg
+++ b/config-model/src/test/derived/predicate_attribute/attributes.cfg
@@ -8,6 +8,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
diff --git a/config-model/src/test/derived/predicate_attribute/predicate_attribute.sd b/config-model/src/test/derived/predicate_attribute/predicate_attribute.sd
index 57a7385f42d..f03d9d6b294 100644
--- a/config-model/src/test/derived/predicate_attribute/predicate_attribute.sd
+++ b/config-model/src/test/derived/predicate_attribute/predicate_attribute.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search predicate_type {
document predicate_type {
field some_predicate_field type predicate {
diff --git a/config-model/src/test/derived/prefixexactattribute/attributes.cfg b/config-model/src/test/derived/prefixexactattribute/attributes.cfg
index bb6f61a6f04..35671069fda 100644
--- a/config-model/src/test/derived/prefixexactattribute/attributes.cfg
+++ b/config-model/src/test/derived/prefixexactattribute/attributes.cfg
@@ -8,6 +8,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -38,6 +39,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
diff --git a/config-model/src/test/derived/prefixexactattribute/prefixexactattribute.sd b/config-model/src/test/derived/prefixexactattribute/prefixexactattribute.sd
index 07484fbe796..03a8d05f1ad 100644
--- a/config-model/src/test/derived/prefixexactattribute/prefixexactattribute.sd
+++ b/config-model/src/test/derived/prefixexactattribute/prefixexactattribute.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search prefixexactattribute {
document prefixexactattribute {
diff --git a/config-model/src/test/derived/rankexpression/rank-profiles.cfg b/config-model/src/test/derived/rankexpression/rank-profiles.cfg
index c6263d658c5..bb7c7fdd349 100644
--- a/config-model/src/test/derived/rankexpression/rank-profiles.cfg
+++ b/config-model/src/test/derived/rankexpression/rank-profiles.cfg
@@ -80,8 +80,8 @@ rankprofile[].fef.property[].value "attribute(bar4).out"
rankprofile[].name "overflow"
rankprofile[].fef.property[].name "vespa.rank.firstphase"
rankprofile[].fef.property[].value "rankingExpression(firstphase)"
-rankprofile[].fef.property[].name "rankingExpression(firstphase).rankingScript"
-rankprofile[].fef.property[].value "feature1(argument1,argument2,argument3,argument4).output + feature2(argument1,argument2,argument3,argument4).output + feature3(argument1,argument2,argument3,argument4).output + feature4(argument1,argument2,argument3,argument4).output + feature5(argument1,argument2,argument3,argument4).output + feature6(argument1,argument2,argument3,argument4).output + feature7(argument1,argument2,argument3,argument4).output + feature8(argument1,argument2,argument3,argument4).output + feature9(argument1,argument2,argument3,argument4).output + feature10(argument1,argument2,argument3,argument4).output + feature11(argument1,argument2,argument3,argument4).output + feature12(argument1,argument2,argument3,argument4).output + feature13(argument1,argument2,argument3,argument4).output + feature14(argument1,argument2,argument3,argument4).output + feature15(argument1,argument2,argument3,argument4).output + feature16(argument1,argument2,argument3,argument4).output + feature17(argument1,argument2,argument3,argument4).output + feature18(argument1,argument2,argument3,argument4).output + feature19(argument1,argument2,argument3,argument4).output + feature20(argument1,argument2,argument3,argument4).output + feature21(argument1,argument2,argument3,argument4).output + feature22(argument1,argument2,argument3,argument4).output + feature23(argument1,argument2,argument3,argument4).output + feature24(argument1,argument2,argument3,argument4).output + feature25(argument1,argument2,argument3,argument4).output + feature26(argument1,argument2,argument3,argument4).output + feature27(argument1,argument2,argument3,argument4).output + feature28(argument1,argument2,argument3,argument4).output + feature29(argument1,argument2,argument3,argument4).output + feature30(argument1,argument2,argument3,argument4).output + feature31(argument1,argument2,argument3,argument4).output + feature32(argument1,argument2,argument3,argument4).output + feature33(argument1,argument2,argument3,argument4).output + feature34(argument1,argument2,argument3,argument4).output + feature35(argument1,argument2,argument3,argument4).output + feature36(argument1,argument2,argument3,argument4).output + feature37(argument1,argument2,argument3,argument4).output + feature38(argument1,argument2,argument3,argument4).output + feature39(argument1,argument2,argument3,argument4).output + feature40(argument1,argument2,argument3,argument4).output + feature41(argument1,argument2,argument3,argument4).output + feature42(argument1,argument2,argument3,argument4).output + feature43(argument1,argument2,argument3,argument4).output + feature44(argument1,argument2,argument3,argument4).output + feature45(argument1,argument2,argument3,argument4).output + feature46(argument1,argument2,argument3,argument4).output + feature47(argument1,argument2,argument3,argument4).output + feature48(argument1,argument2,argument3,argument4).output + feature49(argument1,argument2,argument3,argument4).output + feature50(argument1,argument2,argument3,argument4).output + feature51(argument1,argument2,argument3,argument4).output + feature52(argument1,argument2,argument3,argument4).output + feature53(argument1,argument2,argument3,argument4).output + feature54(argument1,argument2,argument3,argument4).output + feature55(argument1,argument2,argument3,argument4).output + feature56(argument1,argument2,argument3,argument4).output + feature57(argument1,argument2,argument3,argument4).output + feature58(argument1,argument2,argument3,argument4).output + feature59(argument1,argument2,argument3,argument4).output + feature60(argument1,argument2,argument3,argument4).output + feature61(argument1,argument2,argument3,argument4).output + feature62(argument1,argument2,argument3,argument4).output + feature63(argument1,argument2,argument3,argument4).output + feature64(argument1,argument2,argument3,argument4).output + feature65(argument1,argument2,argument3,argument4).output + feature66(argument1,argument2,argument3,argument4).output + feature67(argument1,argument2,argument3,argument4).output + feature68(argument1,argument2,argument3,argument4).output + feature69(argument1,argument2,argument3,argument4).output + feature70(argument1,argument2,argument3,argument4).output + feature71(argument1,argument2,argument3,argument4).output + feature72(argument1,argument2,argument3,argument4).output + feature73(argument1,argument2,argument3,argument4).output + feature74(argument1,argument2,argument3,argument4).output + feature75(argument1,argument2,argument3,argument4).output + feature76(argument1,argument2,argument3,argument4).output + feature77(argument1,argument2,argument3,argument4).output + feature78(argument1,argument2,argument3,argument4).output + feature79(argument1,argument2,argument3,argument4).output + feature80(argument1,argument2,argument3,argument4).output + feature81(argument1,argument2,argument3,argument4).output + feature82(argument1,argument2,argument3,argument4).output + feature83(argument1,argument2,argument3,argument4).output + feature84(argument1,argument2,argument3,argument4).output + feature85(argument1,argument2,argument3,argument4).output + feature86(argument1,argument2,argument3,argument4).output + feature87(argument1,argument2,argument3,argument4).output + feature88(argument1,argument2,argument3,argument4).output + feature89(argument1,argument2,argument3,argument4).output + feature90(argument1,argument2,argument3,argument4).output + feature91(argument1,argument2,argument3,argument4).output + feature92(argument1,argument2,argument3,argument4).output + feature93(argument1,argument2,argument3,argument4).output + feature94(argument1,argument2,argument3,argument4).output + feature95(argument1,argument2,argument3,argument4).output + feature96(argument1,argument2,argument3,argument4).output + feature97(argument1,argument2,argument3,argument4).output + feature98(argument1,argument2,argument3,argument4).output + feature99(argument1,argument2,argument3,argument4).output + feature100(argument1,argument2,argument3,argument4).output + feature101(argument1,argument2,argument3,argument4).output + feature102(argument1,argument2,argument3,argument4).output + feature103(argument1,argument2,argument3,argument4).output + feature104(argument1,argument2,argument3,argument4).output + feature105(argument1,argument2,argument3,argument4).output + feature106(argument1,argument2,argument3,argument4).output + feature107(argument1,argument2,argument3,argument4).output + feature108(argument1,argument2,argument3,argument4).output + feature109(argument1,argument2,argument3,argument4).output + feature110(argument1,argument2,argument3,argument4).output + feature111(argument1,argument2,argument3,argument4).output + feature112(argument1,argument2,argument3,argument4).output + feature113(argument1,argument2,argument3,argument4).output + feature114(argument1,argument2,argument3,argument4).output + feature115(argument1,argument2,argument3,argument4).output + feature116(argument1,argument2,argument3,argument4).output + feature117(argument1,argument2,argument3,argument4).output + feature118(argument1,argument2,argument3,argument4).output + feature119(argument1,argument2,argument3,argument4).output + feature120(argument1,argument2,argument3,argument4).output + feature121(argument1,argument2,argument3,argument4).output + feature122(argument1,argument2,argument3,argument4).output + feature123(argument1,argument2,argument3,argument4).output + feature124(argument1,argument2,argument3,argument4).output + feature125(argument1,argument2,argument3,argument4).output + feature126(argument1,argument2,argument3,argument4).output + feature127(argument1,argument2,argument3,argument4).output + feature128(argument1,argument2,argument3,argument4).output + feature129(argument1,argument2,argument3,argument4).output + feature130(argument1,argument2,argument3,argument4).output + feature131(argument1,argument2,argument3,argument4).output + feature132(argument1,argument2,argument3,argument4).output + feature133(argument1,argument2,argument3,argument4).output + feature134(argument1,argument2,argument3,argument4).output + feature135(argument1,argument2,argument3,argument4).output + feature136(argument1,argument2,argument3,argument4).output + feature137(argument1,argument2,argument3,argument4).output + feature138(argument1,argument2,argument3,argument4).output + feature139(argument1,argument2,argument3,argument4).output + feature140(argument1,argument2,argument3,argument4).output + feature141(argument1,argument2,argument3,argument4).output + feature142(argument1,argument2,argument3,argument4).output + feature143(argument1,argument2,argument3,argument4).output + feature144(argument1,argument2,argument3,argument4).output + feature145(argument1,argument2,argument3,argument4).output + feature146(argument1,argument2,argument3,argument4).output + feature147(argument1,argument2,argument3,argument4).output + feature148(argument1,argument2,argument3,argument4).output + feature149(argument1,argument2,argument3,argument4).output + feature150(argument1,argument2,argument3,argument4).output + feature151(argument1,argument2,argument3,argument4).output + feature152(argument1,argument2,argument3,argument4).output + feature153(argument1,argument2,argument3,argument4).output + feature154(argument1,argument2,argument3,argument4).output + feature155(argument1,argument2,argument3,argument4).output + feature156(argument1,argument2,argument3,argument4).output + feature157(argument1,argument2,argument3,argument4).output + feature158(argument1,argument2,argument3,argument4).output + feature159(argument1,argument2,argument3,argument4).output + feature160(argument1,argument2,argument3,argument4).output + feature161(argument1,argument2,argument3,argument4).output + feature162(argument1,argument2,argument3,argument4).output + feature163(argument1,argument2,argument3,argument4).output + feature164(argument1,argument2,argument3,argument4).output + feature165(argument1,argument2,argument3,argument4).output + feature166(argument1,argument2,argument3,argument4).output + feature167(argument1,argument2,argument3,argument4).output + feature168(argument1,argument2,argument3,argument4).output + feature169(argument1,argument2,argument3,argument4).output + feature170(argument1,argument2,argument3,argument4).output + feature171(argument1,argument2,argument3,argument4).output + feature172(argument1,argument2,argument3,argument4).output + feature173(argument1,argument2,argument3,argument4).output + feature174(argument1,argument2,argument3,argument4).output + feature175(argument1,argument2,argument3,argument4).output + feature176(argument1,argument2,argument3,argument4).output + feature177(argument1,argument2,argument3,argument4).output + feature178(argument1,argument2,argument3,argument4).output + feature179(argument1,argument2,argument3,argument4).output + feature180(argument1,argument2,argument3,argument4).output + feature181(argument1,argument2,argument3,argument4).output + feature182(argument1,argument2,argument3,argument4).output + feature183(argument1,argument2,argument3,argument4).output + feature184(argument1,argument2,argument3,argument4).output + feature185(argument1,argument2,argument3,argument4).output + feature186(argument1,argument2,argument3,argument4).output + feature187(argument1,argument2,argument3,argument4).output + feature188(argument1,argument2,argument3,argument4).output + feature189(argument1,argument2,argument3,argument4).output + feature190(argument1,argument2,argument3,argument4).output + feature191(argument1,argument2,argument3,argument4).output + feature192(argument1,argument2,argument3,argument4).output + feature193(argument1,argument2,argument3,argument4).output + feature194(argument1,argument2,argument3,argument4).output + feature195(argument1,argument2,argument3,argument4).output + feature196(argument1,argument2,argument3,argument4).output + feature197(argument1,argument2,argument3,argument4).output + feature198(argument1,argument2,argument3,argument4).output + feature199(argument1,argument2,argument3,argument4).output + feature200(argument1,argument2,argument3,argument4).output + feature201(argument1,argument2,argument3,argument4).output + feature202(argument1,argument2,argument3,argument4).output + feature203(argument1,argument2,argument3,argument4).output + feature204(argument1,argument2,argument3,argument4).output + feature205(argument1,argument2,argument3,argument4).output + feature206(argument1,argument2,argument3,argument4).output + feature207(argument1,argument2,argument3,argument4).output + feature208(argument1,argument2,argument3,argument4).output + feature209(argument1,argument2,argument3,argument4).output + feature210(argument1,argument2,argument3,argument4).output + feature211(argument1,argument2,argument3,argument4).output + feature212(argument1,argument2,argument3,argument4).output + feature213(argument1,argument2,argument3,argument4).output + feature214(argument1,argument2,argument3,argument4).output + feature215(argument1,argument2,argument3,argument4).output + feature216(argument1,argument2,argument3,argument4).output + feature217(argument1,argument2,argument3,argument4).output + feature218(argument1,argument2,argument3,argument4).output + feature219(argument1,argument2,argument3,argument4).output + feature220(argument1,argument2,argument3,argument4).output + feature221(argument1,argument2,argument3,argument4).output + feature222(argument1,argument2,argument3,argument4).output + feature223(argument1,argument2,argument3,argument4).output + feature224(argument1,argument2,argument3,argument4).output + feature225(argument1,argument2,argument3,argument4).output + feature226(argument1,argument2,argument3,argument4).output + feature227(argument1,argument2,argument3,argument4).output + feature228(argument1,argument2,argument3,argument4).output + feature229(argument1,argument2,argument3,argument4).output + feature230(argument1,argument2,argument3,argument4).output + feature231(argument1,argument2,argument3,argument4).output + feature232(argument1,argument2,argument3,argument4).output + feature233(argument1,argument2,argument3,argument4).output + feature234(argument1,argument2,argument3,argument4).output + feature235(argument1,argument2,argument3,argument4).output + feature236(argument1,argument2,argument3,argument4).output + feature237(argument1,argument2,argument3,argument4).output + feature238(argument1,argument2,argument3,argument4).output + feature239(argument1,argument2,argument3,argument4).output + feature240(argument1,argument2,argument3,argument4).output + feature241(argument1,argument2,argument3,argument4).output + feature242(argument1,argument2,argument3,argument4).output + feature243(argument1,argument2,argument3,argument4).output + feature244(argument1,argument2,argument3,argument4).output + feature245(argument1,argument2,argument3,argument4).output + feature246(argument1,argument2,argument3,argument4).output + feature247(argument1,argument2,argument3,argument4).output + feature248(argument1,argument2,argument3,argument4).output + feature249(argument1,argument2,argument3,argument4).output + feature250(argument1,argument2,argument3,argument4).output + feature251(argument1,argument2,argument3,argument4).output + feature252(argument1,argument2,argument3,argument4).output + feature253(argument1,argument2,argument3,argument4).output + feature254(argument1,argument2,argument3,argument4).output + feature255(argument1,argument2,argument3,argument4).output + feature256(argument1,argument2,argument3,argument4).output + feature257(argument1,argument2,argument3,argument4).output + feature258(argument1,argument2,argument3,argument4).output + feature259(argument1,argument2,argument3,argument4).output + feature260(argument1,argument2,argument3,argument4).output + feature261(argument1,argument2,argument3,argument4).output + feature262(argument1,argument2,argument3,argument4).output + feature263(argument1,argument2,argument3,argument4).output + feature264(argument1,argument2,argument3,argument4).output + feature265(argument1,argument2,argument3,argument4).output + feature266(argument1,argument2,argument3,argument4).output + feature267(argument1,argument2,argument3,argument4).output + feature268(argument1,argument2,argument3,argument4).output + feature269(argument1,argument2,argument3,argument4).output + feature270(argument1,argument2,argument3,argument4).output + feature271(argument1,argument2,argument3,argument4).output + feature272(argument1,argument2,argument3,argument4).output + feature273(argument1,argument2,argument3,argument4).output + feature274(argument1,argument2,argument3,argument4).output + feature275(argument1,argument2,argument3,argument4).output + feature276(argument1,argument2,argument3,argument4).output + feature277(argument1,argument2,argument3,argument4).output + feature278(argument1,argument2,argument3,argument4).output + feature279(argument1,argument2,argument3,argument4).output + feature280(argument1,argument2,argument3,argument4).output + feature281(argument1,argument2,argument3,argument4).output + feature282(argument1,argument2,argument3,argument4).output + feature283(argument1,argument2,argument3,argument4).output + feature284(argument1,argument2,argument3,argument4).output + feature285(argument1,argument2,argument3,argument4).output + feature286(argument1,argument2,argument3,argument4).output + feature287(argument1,argument2,argument3,argument4).output + feature288(argument1,argument2,argument3,argument4).output + feature289(argument1,argument2,argument3,argument4).output + feature290(argument1,argument2,argument3,argument4).output + feature291(argument1,argument2,argument3,argument4).output + feature292(argument1,argument2,argument3,argument4).output + feature293(argument1,argument2,argument3,argument4).output + feature294(argument1,argument2,argument3,argument4).output + feature295(argument1,argument2,argument3,argument4).output + feature296(argument1,argument2,argument3,argument4).output + feature297(argument1,argument2,argument3,argument4).output + feature298(argument1,argument2,argument3,argument4).output + feature299(argument1,argument2,argument3,argument4).output + feature300(argument1,argument2,argument3,argument4).output"
+rankprofile[].fef.property[].name "rankingExpression(firstphase).expressionName"
+rankprofile[].fef.property[].value "overflow.firstphase"
rankprofile[].fef.property[].name "vespa.rank.secondphase"
rankprofile[].fef.property[].value "rankingExpression(secondphase)"
rankprofile[].fef.property[].name "rankingExpression(secondphase).rankingScript"
diff --git a/config-model/src/test/derived/rankexpression/rankexpression.sd b/config-model/src/test/derived/rankexpression/rankexpression.sd
index e615a1a7671..70d79a02a2e 100644
--- a/config-model/src/test/derived/rankexpression/rankexpression.sd
+++ b/config-model/src/test/derived/rankexpression/rankexpression.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search rankexpression {
document rankexpression {
diff --git a/config-model/src/test/derived/rankprofileinheritance/child.sd b/config-model/src/test/derived/rankprofileinheritance/child.sd
index 039963c3034..9369472cb23 100644
--- a/config-model/src/test/derived/rankprofileinheritance/child.sd
+++ b/config-model/src/test/derived/rankprofileinheritance/child.sd
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
schema child {
document child inherits parent1, parent2 {
diff --git a/config-model/src/test/derived/rankprofileinheritance/parent1.sd b/config-model/src/test/derived/rankprofileinheritance/parent1.sd
index 707de5c9f58..d4375427e11 100644
--- a/config-model/src/test/derived/rankprofileinheritance/parent1.sd
+++ b/config-model/src/test/derived/rankprofileinheritance/parent1.sd
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
schema parent1 {
document parent1 {
diff --git a/config-model/src/test/derived/rankprofileinheritance/parent2.sd b/config-model/src/test/derived/rankprofileinheritance/parent2.sd
index b31144beaf7..fa42f8ea303 100644
--- a/config-model/src/test/derived/rankprofileinheritance/parent2.sd
+++ b/config-model/src/test/derived/rankprofileinheritance/parent2.sd
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
schema parent2 {
document parent2 {
diff --git a/config-model/src/test/derived/rankprofiles/rankprofiles.sd b/config-model/src/test/derived/rankprofiles/rankprofiles.sd
index 6c3720df589..4b0a7702d6c 100644
--- a/config-model/src/test/derived/rankprofiles/rankprofiles.sd
+++ b/config-model/src/test/derived/rankprofiles/rankprofiles.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search rankprofiles {
document rankprofiles {
diff --git a/config-model/src/test/derived/rankproperties/rankproperties.sd b/config-model/src/test/derived/rankproperties/rankproperties.sd
index e92d4bb4763..24977ae645f 100644
--- a/config-model/src/test/derived/rankproperties/rankproperties.sd
+++ b/config-model/src/test/derived/rankproperties/rankproperties.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search rankproperties {
document rankproperties {
diff --git a/config-model/src/test/derived/ranktypes/ranktypes.sd b/config-model/src/test/derived/ranktypes/ranktypes.sd
index cb2f38e7f39..1651d43afa6 100644
--- a/config-model/src/test/derived/ranktypes/ranktypes.sd
+++ b/config-model/src/test/derived/ranktypes/ranktypes.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search ranktypes {
document ranktypes {
diff --git a/config-model/src/test/derived/reference_fields/ad.sd b/config-model/src/test/derived/reference_fields/ad.sd
index 6157ae0bc38..9a4f52c7f8a 100644
--- a/config-model/src/test/derived/reference_fields/ad.sd
+++ b/config-model/src/test/derived/reference_fields/ad.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search ad {
document ad {
field campaign_ref type reference<campaign> {
diff --git a/config-model/src/test/derived/reference_fields/attributes.cfg b/config-model/src/test/derived/reference_fields/attributes.cfg
index cc10e657011..8fa0da9aace 100644
--- a/config-model/src/test/derived/reference_fields/attributes.cfg
+++ b/config-model/src/test/derived/reference_fields/attributes.cfg
@@ -8,6 +8,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -38,6 +39,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -68,6 +70,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
diff --git a/config-model/src/test/derived/reference_fields/campaign.sd b/config-model/src/test/derived/reference_fields/campaign.sd
index dcb7ddc6662..dce3a84320a 100644
--- a/config-model/src/test/derived/reference_fields/campaign.sd
+++ b/config-model/src/test/derived/reference_fields/campaign.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search campaign {
document campaign {
}
diff --git a/config-model/src/test/derived/reserved_position/reserved_position.sd b/config-model/src/test/derived/reserved_position/reserved_position.sd
index 9dff10beb81..c910ced1477 100644
--- a/config-model/src/test/derived/reserved_position/reserved_position.sd
+++ b/config-model/src/test/derived/reserved_position/reserved_position.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search position {
document position { }
}
diff --git a/config-model/src/test/derived/sorting/attributes.cfg b/config-model/src/test/derived/sorting/attributes.cfg
index 5ee9d323041..da23c247a28 100644
--- a/config-model/src/test/derived/sorting/attributes.cfg
+++ b/config-model/src/test/derived/sorting/attributes.cfg
@@ -8,6 +8,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending false
attribute[].sortfunction LOWERCASE
@@ -38,6 +39,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending false
attribute[].sortfunction LOWERCASE
@@ -68,6 +70,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending false
attribute[].sortfunction LOWERCASE
diff --git a/config-model/src/test/derived/sorting/sorting.sd b/config-model/src/test/derived/sorting/sorting.sd
index f3b7dc47bee..e1b9a8af2f1 100644
--- a/config-model/src/test/derived/sorting/sorting.sd
+++ b/config-model/src/test/derived/sorting/sorting.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search sorting {
document sorting {
diff --git a/config-model/src/test/derived/streamingjuniper/streamingjuniper.sd b/config-model/src/test/derived/streamingjuniper/streamingjuniper.sd
index 92b833ffd5d..bffc2f0cda2 100644
--- a/config-model/src/test/derived/streamingjuniper/streamingjuniper.sd
+++ b/config-model/src/test/derived/streamingjuniper/streamingjuniper.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search streamingjuniper {
document streamingjuniper {
field f1 type string {
diff --git a/config-model/src/test/derived/streamingstruct/streamingstruct.sd b/config-model/src/test/derived/streamingstruct/streamingstruct.sd
index 10440ebe9fa..32f58cc7a5e 100644
--- a/config-model/src/test/derived/streamingstruct/streamingstruct.sd
+++ b/config-model/src/test/derived/streamingstruct/streamingstruct.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search streamingstruct {
document streamingstruct {
diff --git a/config-model/src/test/derived/streamingstructdefault/streamingstructdefault.sd b/config-model/src/test/derived/streamingstructdefault/streamingstructdefault.sd
index 46112db7454..d91020f6562 100644
--- a/config-model/src/test/derived/streamingstructdefault/streamingstructdefault.sd
+++ b/config-model/src/test/derived/streamingstructdefault/streamingstructdefault.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search streamingstructdefault {
document streamingstructdefault {
struct sct {
diff --git a/config-model/src/test/derived/structanyorder/structanyorder.sd b/config-model/src/test/derived/structanyorder/structanyorder.sd
index e520322220d..7ca35cd0ec1 100755
--- a/config-model/src/test/derived/structanyorder/structanyorder.sd
+++ b/config-model/src/test/derived/structanyorder/structanyorder.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search annotationsimplicitstruct {
document annotationsimplicitstruct {
diff --git a/config-model/src/test/derived/tensor/attributes.cfg b/config-model/src/test/derived/tensor/attributes.cfg
index 79f4d2a8a69..5acc99aa640 100644
--- a/config-model/src/test/derived/tensor/attributes.cfg
+++ b/config-model/src/test/derived/tensor/attributes.cfg
@@ -8,6 +8,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -38,6 +39,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -68,6 +70,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -98,6 +101,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -128,6 +132,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
diff --git a/config-model/src/test/derived/tensor/tensor.sd b/config-model/src/test/derived/tensor/tensor.sd
index 44a84a3cbb3..2566708d488 100644
--- a/config-model/src/test/derived/tensor/tensor.sd
+++ b/config-model/src/test/derived/tensor/tensor.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search tensor {
document tensor {
diff --git a/config-model/src/test/derived/tensor2/first.sd b/config-model/src/test/derived/tensor2/first.sd
index f959b5a13c2..22b10ab5e3d 100644
--- a/config-model/src/test/derived/tensor2/first.sd
+++ b/config-model/src/test/derived/tensor2/first.sd
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search first {
document first {
field first_field type tensor(first[10]) {
diff --git a/config-model/src/test/derived/tensor2/second.sd b/config-model/src/test/derived/tensor2/second.sd
index ec3af04aec9..a347d511d80 100644
--- a/config-model/src/test/derived/tensor2/second.sd
+++ b/config-model/src/test/derived/tensor2/second.sd
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search second {
document second {
field second_field type tensor(second[10]) {
diff --git a/config-model/src/test/derived/twostreamingstructs/streamingstruct.sd b/config-model/src/test/derived/twostreamingstructs/streamingstruct.sd
index d4f7b44d36a..32823e46592 100644
--- a/config-model/src/test/derived/twostreamingstructs/streamingstruct.sd
+++ b/config-model/src/test/derived/twostreamingstructs/streamingstruct.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search streamingstruct {
document streamingstruct {
diff --git a/config-model/src/test/derived/twostreamingstructs/whatever.sd b/config-model/src/test/derived/twostreamingstructs/whatever.sd
index 25da3f06a38..34b0261326f 100644
--- a/config-model/src/test/derived/twostreamingstructs/whatever.sd
+++ b/config-model/src/test/derived/twostreamingstructs/whatever.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search whatever {
document whatever {
diff --git a/config-model/src/test/derived/types/attributes.cfg b/config-model/src/test/derived/types/attributes.cfg
index 175dd083f60..ed23b285b3b 100644
--- a/config-model/src/test/derived/types/attributes.cfg
+++ b/config-model/src/test/derived/types/attributes.cfg
@@ -8,6 +8,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -38,6 +39,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -68,6 +70,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -98,6 +101,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -128,6 +132,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -158,6 +163,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -188,6 +194,7 @@ attribute[].removeifzero true
attribute[].createifnonexistent true
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -218,6 +225,7 @@ attribute[].removeifzero true
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -248,6 +256,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent true
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -278,6 +287,7 @@ attribute[].removeifzero true
attribute[].createifnonexistent true
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -308,6 +318,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch true
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -338,6 +349,7 @@ attribute[].removeifzero true
attribute[].createifnonexistent true
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
@@ -368,6 +380,7 @@ attribute[].removeifzero false
attribute[].createifnonexistent false
attribute[].fastsearch false
attribute[].huge false
+attribute[].paged false
attribute[].ismutable false
attribute[].sortascending true
attribute[].sortfunction UCA
diff --git a/config-model/src/test/derived/types/types.sd b/config-model/src/test/derived/types/types.sd
index 37ac6e7ee11..15fab360940 100644
--- a/config-model/src/test/derived/types/types.sd
+++ b/config-model/src/test/derived/types/types.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search types {
document types {
diff --git a/config-model/src/test/derived/uri_array/uri_array.sd b/config-model/src/test/derived/uri_array/uri_array.sd
index 52b1a2c3349..b0b874ba2c3 100644
--- a/config-model/src/test/derived/uri_array/uri_array.sd
+++ b/config-model/src/test/derived/uri_array/uri_array.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search uri_array {
document uri_array {
field my_uri type array<uri> {
diff --git a/config-model/src/test/derived/uri_wset/uri_wset.sd b/config-model/src/test/derived/uri_wset/uri_wset.sd
index 05822bb76b5..ec08428019e 100644
--- a/config-model/src/test/derived/uri_wset/uri_wset.sd
+++ b/config-model/src/test/derived/uri_wset/uri_wset.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search uri_wset {
document uri_wset {
field my_uri type weightedset<uri> {
diff --git a/config-model/src/test/examples/arrays.sd b/config-model/src/test/examples/arrays.sd
index b25244d2764..0f734534316 100644
--- a/config-model/src/test/examples/arrays.sd
+++ b/config-model/src/test/examples/arrays.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
document testarrays {
field tags type string[] {
diff --git a/config-model/src/test/examples/arraysweightedsets.sd b/config-model/src/test/examples/arraysweightedsets.sd
index 650eddd488e..be21cc62370 100644
--- a/config-model/src/test/examples/arraysweightedsets.sd
+++ b/config-model/src/test/examples/arraysweightedsets.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
document testarraysweightedSets {
field tags type array<string> {
diff --git a/config-model/src/test/examples/attributeposition.sd b/config-model/src/test/examples/attributeposition.sd
index 9433189270f..9b26a728ba6 100755
--- a/config-model/src/test/examples/attributeposition.sd
+++ b/config-model/src/test/examples/attributeposition.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search atributeposition {
document attributeposition {
diff --git a/config-model/src/test/examples/attributesettings.sd b/config-model/src/test/examples/attributesettings.sd
index d1b21998229..2b83f137b96 100644
--- a/config-model/src/test/examples/attributesettings.sd
+++ b/config-model/src/test/examples/attributesettings.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search attributesettings {
document attributesettings {
diff --git a/config-model/src/test/examples/attributesexactmatch.sd b/config-model/src/test/examples/attributesexactmatch.sd
index b233505e3c1..2db687cb20d 100644
--- a/config-model/src/test/examples/attributesexactmatch.sd
+++ b/config-model/src/test/examples/attributesexactmatch.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music {
diff --git a/config-model/src/test/examples/badstruct.sd b/config-model/src/test/examples/badstruct.sd
index 223c8e9b983..4aa29f21e94 100755
--- a/config-model/src/test/examples/badstruct.sd
+++ b/config-model/src/test/examples/badstruct.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search foo {
struct int {
diff --git a/config-model/src/test/examples/casing.sd b/config-model/src/test/examples/casing.sd
index 670571ab9eb..b0ce0a07748 100644
--- a/config-model/src/test/examples/casing.sd
+++ b/config-model/src/test/examples/casing.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music {
diff --git a/config-model/src/test/examples/child.sd b/config-model/src/test/examples/child.sd
index f4ec2bde000..bace5754d3e 100644
--- a/config-model/src/test/examples/child.sd
+++ b/config-model/src/test/examples/child.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search child {
document child inherits parent.1 {
diff --git a/config-model/src/test/examples/comment.sd b/config-model/src/test/examples/comment.sd
index e0a1edc7af7..09b6fcf7bb1 100644
--- a/config-model/src/test/examples/comment.sd
+++ b/config-model/src/test/examples/comment.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search comment {
document comment {
diff --git a/config-model/src/test/examples/documentidinsummary.sd b/config-model/src/test/examples/documentidinsummary.sd
index 39d891d402a..174c838b2dd 100644
--- a/config-model/src/test/examples/documentidinsummary.sd
+++ b/config-model/src/test/examples/documentidinsummary.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search documentidinsummary {
document documentidinsummary {
field a type string { }
diff --git a/config-model/src/test/examples/documents.sd b/config-model/src/test/examples/documents.sd
index 88a34bdde45..dae743f1f93 100644
--- a/config-model/src/test/examples/documents.sd
+++ b/config-model/src/test/examples/documents.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Files can also contain documents only.
# These may be inherited by other document definitions, or may
# just represent some stored data
diff --git a/config-model/src/test/examples/fieldoftypedocument.sd b/config-model/src/test/examples/fieldoftypedocument.sd
index 17ef53ea4fe..b4485a59728 100644
--- a/config-model/src/test/examples/fieldoftypedocument.sd
+++ b/config-model/src/test/examples/fieldoftypedocument.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search book {
document book {
field soundtrack type music {}
diff --git a/config-model/src/test/examples/implicitsummaries_attribute.sd b/config-model/src/test/examples/implicitsummaries_attribute.sd
index fe953a58326..b73bf65b41e 100644
--- a/config-model/src/test/examples/implicitsummaries_attribute.sd
+++ b/config-model/src/test/examples/implicitsummaries_attribute.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search implicitsummaries_attribute {
document implicitsummaries_attribute {
field foo type string {
diff --git a/config-model/src/test/examples/implicitsummaryfields.sd b/config-model/src/test/examples/implicitsummaryfields.sd
index ff7d1ca5b12..72b2344a801 100644
--- a/config-model/src/test/examples/implicitsummaryfields.sd
+++ b/config-model/src/test/examples/implicitsummaryfields.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search implicitsummaryfields {
document implicitsummaryfields {
field foo type string {
diff --git a/config-model/src/test/examples/importing.sd b/config-model/src/test/examples/importing.sd
index 58f2d7ae68f..25472f80f42 100644
--- a/config-model/src/test/examples/importing.sd
+++ b/config-model/src/test/examples/importing.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# This is what a search definition would look like
# when using some already defined documents to be
# indexed in a new way
diff --git a/config-model/src/test/examples/incorrectrankingexpressionfileref.sd b/config-model/src/test/examples/incorrectrankingexpressionfileref.sd
index 42ec9af0984..59526be0c6a 100644
--- a/config-model/src/test/examples/incorrectrankingexpressionfileref.sd
+++ b/config-model/src/test/examples/incorrectrankingexpressionfileref.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search incorrectrankingexpressionfileref {
document incorrectrankingexpressionfileref {
diff --git a/config-model/src/test/examples/indexing.sd b/config-model/src/test/examples/indexing.sd
index 35a45878a07..e880cd4831b 100644
--- a/config-model/src/test/examples/indexing.sd
+++ b/config-model/src/test/examples/indexing.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# A configuration doing a lot of IL magic in indexing statement
search indexing {
document indexing {
diff --git a/config-model/src/test/examples/indexing_attribute_changed.sd b/config-model/src/test/examples/indexing_attribute_changed.sd
index 0c9f24a6f82..bab878d09ab 100644
--- a/config-model/src/test/examples/indexing_attribute_changed.sd
+++ b/config-model/src/test/examples/indexing_attribute_changed.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexing_attribute_changed {
document indexing_attribute_changed {
field foo type string {
diff --git a/config-model/src/test/examples/indexing_attribute_other.sd b/config-model/src/test/examples/indexing_attribute_other.sd
index d190f66914c..e3f58f20910 100644
--- a/config-model/src/test/examples/indexing_attribute_other.sd
+++ b/config-model/src/test/examples/indexing_attribute_other.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexing_attribute_other {
document indexing_attribute_other {
field foo type string {
diff --git a/config-model/src/test/examples/indexing_extra.sd b/config-model/src/test/examples/indexing_extra.sd
index 86244f5bc96..d3a8c10cc73 100644
--- a/config-model/src/test/examples/indexing_extra.sd
+++ b/config-model/src/test/examples/indexing_extra.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexing_extra {
document indexing_extra {
field my_index type string {
diff --git a/config-model/src/test/examples/indexing_extra_field_input_extra_field.sd b/config-model/src/test/examples/indexing_extra_field_input_extra_field.sd
index cf50bef230f..315d6c2a677 100644
--- a/config-model/src/test/examples/indexing_extra_field_input_extra_field.sd
+++ b/config-model/src/test/examples/indexing_extra_field_input_extra_field.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexing_extra_field_input_extra_field {
document indexing_extra_field_input_extra_field {
diff --git a/config-model/src/test/examples/indexing_extra_field_input_implicit.sd b/config-model/src/test/examples/indexing_extra_field_input_implicit.sd
index c36ffca6e22..8aff3284ce3 100644
--- a/config-model/src/test/examples/indexing_extra_field_input_implicit.sd
+++ b/config-model/src/test/examples/indexing_extra_field_input_implicit.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexing_extra_field_input_implicit {
document indexing_extra_field_input_implicit {
diff --git a/config-model/src/test/examples/indexing_extra_field_input_null.sd b/config-model/src/test/examples/indexing_extra_field_input_null.sd
index 89ad527ad11..4f139490807 100644
--- a/config-model/src/test/examples/indexing_extra_field_input_null.sd
+++ b/config-model/src/test/examples/indexing_extra_field_input_null.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexing_extra_field_input_null {
document indexing_extra_field_input_null {
diff --git a/config-model/src/test/examples/indexing_extra_field_input_self.sd b/config-model/src/test/examples/indexing_extra_field_input_self.sd
index 7612015780c..36dbae21449 100644
--- a/config-model/src/test/examples/indexing_extra_field_input_self.sd
+++ b/config-model/src/test/examples/indexing_extra_field_input_self.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexing_extra_field_input_self {
document indexing_extra_field_input_self {
diff --git a/config-model/src/test/examples/indexing_index_changed.sd b/config-model/src/test/examples/indexing_index_changed.sd
index 139a0a1ffcf..194a9bd3177 100644
--- a/config-model/src/test/examples/indexing_index_changed.sd
+++ b/config-model/src/test/examples/indexing_index_changed.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexing_index_changed {
document indexing_index_changed {
field foo type string {
diff --git a/config-model/src/test/examples/indexing_index_other.sd b/config-model/src/test/examples/indexing_index_other.sd
index 8552c066dde..40b8b150a5b 100644
--- a/config-model/src/test/examples/indexing_index_other.sd
+++ b/config-model/src/test/examples/indexing_index_other.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexing_index_other {
document indexing_index_other {
field foo type string {
diff --git a/config-model/src/test/examples/indexing_input_other_field.sd b/config-model/src/test/examples/indexing_input_other_field.sd
index 61bb7c58c18..58967561e5a 100644
--- a/config-model/src/test/examples/indexing_input_other_field.sd
+++ b/config-model/src/test/examples/indexing_input_other_field.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexing_input_other_field {
document indexing_input_other_field {
field foo type string {
diff --git a/config-model/src/test/examples/indexing_invalid_expression.sd b/config-model/src/test/examples/indexing_invalid_expression.sd
index ff4073cdebc..843343a826a 100644
--- a/config-model/src/test/examples/indexing_invalid_expression.sd
+++ b/config-model/src/test/examples/indexing_invalid_expression.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexing_invalid_expression {
document indexing_invalid_expression {
field product type string {
diff --git a/config-model/src/test/examples/indexing_modify_field_no_output.sd b/config-model/src/test/examples/indexing_modify_field_no_output.sd
index 04b5b7344c8..ac2bed520e8 100644
--- a/config-model/src/test/examples/indexing_modify_field_no_output.sd
+++ b/config-model/src/test/examples/indexing_modify_field_no_output.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexing_modify_field_no_output {
document indexing_modify_field_no_output {
field foo type string {
diff --git a/config-model/src/test/examples/indexing_multiline_output_conflict.sd b/config-model/src/test/examples/indexing_multiline_output_conflict.sd
index 449fc36c88c..e7671b7423c 100644
--- a/config-model/src/test/examples/indexing_multiline_output_conflict.sd
+++ b/config-model/src/test/examples/indexing_multiline_output_conflict.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexing_multiline_output_confict {
document indexing_multiline_output_confict {
field foo type string {
diff --git a/config-model/src/test/examples/indexing_output_conflict.sd b/config-model/src/test/examples/indexing_output_conflict.sd
index c5759194742..9cf1cbc0823 100644
--- a/config-model/src/test/examples/indexing_output_conflict.sd
+++ b/config-model/src/test/examples/indexing_output_conflict.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexing_output_confict {
document indexing_output_confict {
field foo type string {
diff --git a/config-model/src/test/examples/indexing_output_other_field.sd b/config-model/src/test/examples/indexing_output_other_field.sd
index 07dc0ef258f..40b08bb15b2 100644
--- a/config-model/src/test/examples/indexing_output_other_field.sd
+++ b/config-model/src/test/examples/indexing_output_other_field.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexing_output_other_field {
document indexing_output_other_field {
field foo type string {
diff --git a/config-model/src/test/examples/indexing_summary_changed.sd b/config-model/src/test/examples/indexing_summary_changed.sd
index 876124034c6..6c82d04374d 100644
--- a/config-model/src/test/examples/indexing_summary_changed.sd
+++ b/config-model/src/test/examples/indexing_summary_changed.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexing_summary_fail {
document indexing_summary_fail {
field foo type string {
diff --git a/config-model/src/test/examples/indexing_summary_other.sd b/config-model/src/test/examples/indexing_summary_other.sd
index 489e8e24e94..871ab854c51 100644
--- a/config-model/src/test/examples/indexing_summary_other.sd
+++ b/config-model/src/test/examples/indexing_summary_other.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexing_summary_other {
document indexing_summary_other {
field foo type string {
diff --git a/config-model/src/test/examples/indexrewrite.sd b/config-model/src/test/examples/indexrewrite.sd
index c9fa7a1530a..ee6fe21a15c 100644
--- a/config-model/src/test/examples/indexrewrite.sd
+++ b/config-model/src/test/examples/indexrewrite.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexrewrite {
document indexrewrite {
diff --git a/config-model/src/test/examples/indexsettings.sd b/config-model/src/test/examples/indexsettings.sd
index 9f6b02d9a4d..d99a07984c4 100644
--- a/config-model/src/test/examples/indexsettings.sd
+++ b/config-model/src/test/examples/indexsettings.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search indexsettings {
stemming: shortest
diff --git a/config-model/src/test/examples/integerindex2attribute.sd b/config-model/src/test/examples/integerindex2attribute.sd
index 582bd100351..71f2917ae42 100644
--- a/config-model/src/test/examples/integerindex2attribute.sd
+++ b/config-model/src/test/examples/integerindex2attribute.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search integerindex2attribute {
document integerindex2attribute {
diff --git a/config-model/src/test/examples/invalid_sd_construct.sd b/config-model/src/test/examples/invalid_sd_construct.sd
index f3600de6ff8..48a571f0084 100644
--- a/config-model/src/test/examples/invalid_sd_construct.sd
+++ b/config-model/src/test/examples/invalid_sd_construct.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search lodging {
document lodging {
field latlong type string {
diff --git a/config-model/src/test/examples/invalid_sd_junk_at_end.sd b/config-model/src/test/examples/invalid_sd_junk_at_end.sd
index f664a89b544..1abd60d0605 100644
--- a/config-model/src/test/examples/invalid_sd_junk_at_end.sd
+++ b/config-model/src/test/examples/invalid_sd_junk_at_end.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search junkatend {
document {
field title type string {
diff --git a/config-model/src/test/examples/invalid_sd_lexical_error.sd b/config-model/src/test/examples/invalid_sd_lexical_error.sd
index fef2a5afbc7..92a5e73e75f 100644
--- a/config-model/src/test/examples/invalid_sd_lexical_error.sd
+++ b/config-model/src/test/examples/invalid_sd_lexical_error.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search twitter {
document twitter {
diff --git a/config-model/src/test/examples/invalid_sd_missing_document.sd b/config-model/src/test/examples/invalid_sd_missing_document.sd
index 6f132556309..cb2d6bee3b4 100644
--- a/config-model/src/test/examples/invalid_sd_missing_document.sd
+++ b/config-model/src/test/examples/invalid_sd_missing_document.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search imageconfig {
field key type string {
diff --git a/config-model/src/test/examples/invalid_sd_no_closing_bracket.sd b/config-model/src/test/examples/invalid_sd_no_closing_bracket.sd
index 7384c13dd8e..77b06f9fbb6 100644
--- a/config-model/src/test/examples/invalid_sd_no_closing_bracket.sd
+++ b/config-model/src/test/examples/invalid_sd_no_closing_bracket.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search noclosingbracket {
document {
field title type string {
diff --git a/config-model/src/test/examples/invalidimplicitsummarysource.sd b/config-model/src/test/examples/invalidimplicitsummarysource.sd
index 7469c258a6d..7370577142b 100644
--- a/config-model/src/test/examples/invalidimplicitsummarysource.sd
+++ b/config-model/src/test/examples/invalidimplicitsummarysource.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search invalidsummarysource {
document invalidsummarysource {
field foo type string {
diff --git a/config-model/src/test/examples/invalidngram1.sd b/config-model/src/test/examples/invalidngram1.sd
index bd4d80e3170..2b5c8fb12ed 100644
--- a/config-model/src/test/examples/invalidngram1.sd
+++ b/config-model/src/test/examples/invalidngram1.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search invalidngram1 {
document invalidngram1 {
diff --git a/config-model/src/test/examples/invalidngram2.sd b/config-model/src/test/examples/invalidngram2.sd
index 54b490ab5bb..64825aca423 100644
--- a/config-model/src/test/examples/invalidngram2.sd
+++ b/config-model/src/test/examples/invalidngram2.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search invalidngram2 {
document invalidngram2 {
diff --git a/config-model/src/test/examples/invalidngram3.sd b/config-model/src/test/examples/invalidngram3.sd
index e5c38912296..88951368280 100644
--- a/config-model/src/test/examples/invalidngram3.sd
+++ b/config-model/src/test/examples/invalidngram3.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search invalidngram3 {
document invalidngram3 {
diff --git a/config-model/src/test/examples/invalidselfreferringsummary.sd b/config-model/src/test/examples/invalidselfreferringsummary.sd
index b71b5cd4c81..686f5234526 100644
--- a/config-model/src/test/examples/invalidselfreferringsummary.sd
+++ b/config-model/src/test/examples/invalidselfreferringsummary.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search invalidselfreferringsummary {
document invalidselfreferringsummary {
field a type string { }
diff --git a/config-model/src/test/examples/invalidsummarysource.sd b/config-model/src/test/examples/invalidsummarysource.sd
index c16f4be0ceb..8f71c4fe0a4 100644
--- a/config-model/src/test/examples/invalidsummarysource.sd
+++ b/config-model/src/test/examples/invalidsummarysource.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search invalidsummarysource {
document invalidsummarysource {
field foo type string {
diff --git a/config-model/src/test/examples/largerankingexpressions/rankexpression.sd b/config-model/src/test/examples/largerankingexpressions/rankexpression.sd
new file mode 100644
index 00000000000..a33238e15b5
--- /dev/null
+++ b/config-model/src/test/examples/largerankingexpressions/rankexpression.sd
@@ -0,0 +1,64 @@
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search rankexpression {
+
+ document rankexpression {
+
+ field artist type string {
+ indexing: summary | index
+ }
+
+ field title type string {
+ indexing: summary | index
+ }
+
+ field surl type string {
+ indexing: summary
+ }
+
+ field year type int {
+ indexing: summary | attribute
+ }
+
+ }
+
+ rank-profile base {
+
+ function large_f() {
+ expression: 78+closeness(distance)*(attribute(year)+attribute(year))/attribute(year)
+ }
+ macro large_m() {
+ expression: 78+closeness(distance)*(attribute(year)+attribute(year))/attribute(year)
+ }
+ }
+
+ rank-profile child_a inherits base {
+
+ function large_local_f() {
+ expression: large_f() + large_m()
+ }
+
+ function large_local_m() {
+ expression: large_f() + large_m()
+ }
+
+ first-phase {
+ expression: 0.8+0.2*large_local_f() + large_local_m()
+ }
+ }
+
+ rank-profile child_b inherits base {
+
+ function large_local_f() {
+ expression: large_f() + large_m()
+ }
+
+ function large_local_m() {
+ expression: large_f() + large_m()
+ }
+
+ first-phase {
+ expression: 0.8+0.2*large_local_f() + large_local_m()
+ }
+ }
+
+}
diff --git a/config-model/src/test/examples/matchphase/non_existing_attribute.sd b/config-model/src/test/examples/matchphase/non_existing_attribute.sd
index cd29029334f..cd3842fde8a 100644
--- a/config-model/src/test/examples/matchphase/non_existing_attribute.sd
+++ b/config-model/src/test/examples/matchphase/non_existing_attribute.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search test {
document test {
field foo type int {
diff --git a/config-model/src/test/examples/matchphase/non_fast_search_attribute.sd b/config-model/src/test/examples/matchphase/non_fast_search_attribute.sd
index 9c26ef3ded7..5fde096cf61 100644
--- a/config-model/src/test/examples/matchphase/non_fast_search_attribute.sd
+++ b/config-model/src/test/examples/matchphase/non_fast_search_attribute.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search test {
document test {
field foo type int {
diff --git a/config-model/src/test/examples/matchphase/wrong_collection_type_attribute.sd b/config-model/src/test/examples/matchphase/wrong_collection_type_attribute.sd
index 93744f86eca..8a9166c94f7 100644
--- a/config-model/src/test/examples/matchphase/wrong_collection_type_attribute.sd
+++ b/config-model/src/test/examples/matchphase/wrong_collection_type_attribute.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search test {
document test {
field foo type array<int> {
diff --git a/config-model/src/test/examples/matchphase/wrong_data_type_attribute.sd b/config-model/src/test/examples/matchphase/wrong_data_type_attribute.sd
index db52b08ba40..d4f526569ea 100644
--- a/config-model/src/test/examples/matchphase/wrong_data_type_attribute.sd
+++ b/config-model/src/test/examples/matchphase/wrong_data_type_attribute.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search test {
document test {
field foo type string {
diff --git a/config-model/src/test/examples/multiplesummaries.sd b/config-model/src/test/examples/multiplesummaries.sd
index 0bb5176c50c..07ab3c5a104 100644
--- a/config-model/src/test/examples/multiplesummaries.sd
+++ b/config-model/src/test/examples/multiplesummaries.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search multiplesummaries {
document multiplesummaries {
diff --git a/config-model/src/test/examples/music.sd b/config-model/src/test/examples/music.sd
index 58a3119551a..1308ef7c074 100644
--- a/config-model/src/test/examples/music.sd
+++ b/config-model/src/test/examples/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
document music {
field intfield type int {}
field stringfield type string {}
diff --git a/config-model/src/test/examples/nextgen/boldedsummaryfields.sd b/config-model/src/test/examples/nextgen/boldedsummaryfields.sd
index 5f097471e5a..82d986e8e9c 100644
--- a/config-model/src/test/examples/nextgen/boldedsummaryfields.sd
+++ b/config-model/src/test/examples/nextgen/boldedsummaryfields.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search boldedsummaryfields {
document boldedsummaryfields {
field foo type string {
diff --git a/config-model/src/test/examples/nextgen/dynamicsummaryfields.sd b/config-model/src/test/examples/nextgen/dynamicsummaryfields.sd
index 26dfb6de64e..c78ae6c377b 100644
--- a/config-model/src/test/examples/nextgen/dynamicsummaryfields.sd
+++ b/config-model/src/test/examples/nextgen/dynamicsummaryfields.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search dynamicsummaryfields {
document dynamicsummaryfields {
field foo type string {
diff --git a/config-model/src/test/examples/nextgen/extrafield.sd b/config-model/src/test/examples/nextgen/extrafield.sd
index 1c04df6e7ca..323185b2258 100644
--- a/config-model/src/test/examples/nextgen/extrafield.sd
+++ b/config-model/src/test/examples/nextgen/extrafield.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search extrafield {
document extrafield {
field foo type int {
diff --git a/config-model/src/test/examples/nextgen/implicitstructtypes.sd b/config-model/src/test/examples/nextgen/implicitstructtypes.sd
index 86d980563d6..82bd6983f25 100644
--- a/config-model/src/test/examples/nextgen/implicitstructtypes.sd
+++ b/config-model/src/test/examples/nextgen/implicitstructtypes.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search implicitstructtypes {
document implicitstructtypes {
field doc_str type string {
diff --git a/config-model/src/test/examples/nextgen/simple.sd b/config-model/src/test/examples/nextgen/simple.sd
index db1ec24372a..97990cca5d1 100644
--- a/config-model/src/test/examples/nextgen/simple.sd
+++ b/config-model/src/test/examples/nextgen/simple.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search simple {
document simple {
field doc_field type string {
diff --git a/config-model/src/test/examples/nextgen/summaryfield.sd b/config-model/src/test/examples/nextgen/summaryfield.sd
index 4eb0e8cf2c5..9b3cc6862b9 100644
--- a/config-model/src/test/examples/nextgen/summaryfield.sd
+++ b/config-model/src/test/examples/nextgen/summaryfield.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search summaryfield {
document summaryfield {
field foo type string {
diff --git a/config-model/src/test/examples/nextgen/toggleon.sd b/config-model/src/test/examples/nextgen/toggleon.sd
index b169bb66c53..3a0e6c9b7c1 100644
--- a/config-model/src/test/examples/nextgen/toggleon.sd
+++ b/config-model/src/test/examples/nextgen/toggleon.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search toggleon {
document toggleon {
field foo type int {
diff --git a/config-model/src/test/examples/nextgen/untransformedsummaryfields.sd b/config-model/src/test/examples/nextgen/untransformedsummaryfields.sd
index 2e62cd16d15..158b5aabbc9 100644
--- a/config-model/src/test/examples/nextgen/untransformedsummaryfields.sd
+++ b/config-model/src/test/examples/nextgen/untransformedsummaryfields.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search untransformedsummaryfields {
document untransformedsummaryfields {
field foo type int {
diff --git a/config-model/src/test/examples/nextgen/unusedfields.sd b/config-model/src/test/examples/nextgen/unusedfields.sd
index 0293aacda11..a1b73596c1b 100644
--- a/config-model/src/test/examples/nextgen/unusedfields.sd
+++ b/config-model/src/test/examples/nextgen/unusedfields.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search unusedfields {
document unusedfields {
field foo type int {
diff --git a/config-model/src/test/examples/nextgen/uri_array.sd b/config-model/src/test/examples/nextgen/uri_array.sd
index 36307caf158..03da8767cc0 100644
--- a/config-model/src/test/examples/nextgen/uri_array.sd
+++ b/config-model/src/test/examples/nextgen/uri_array.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search uri_array {
document uri_array {
field my_field type array<uri> {
diff --git a/config-model/src/test/examples/nextgen/uri_simple.sd b/config-model/src/test/examples/nextgen/uri_simple.sd
index 90f32875d18..f4be7ee5206 100644
--- a/config-model/src/test/examples/nextgen/uri_simple.sd
+++ b/config-model/src/test/examples/nextgen/uri_simple.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search uri_simple {
document uri_simple {
field my_field type uri {
diff --git a/config-model/src/test/examples/nextgen/uri_wset.sd b/config-model/src/test/examples/nextgen/uri_wset.sd
index 5ed15a6bc78..34d2cdbae32 100644
--- a/config-model/src/test/examples/nextgen/uri_wset.sd
+++ b/config-model/src/test/examples/nextgen/uri_wset.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search uri_array {
document uri_array {
field my_field type weightedset<uri> {
diff --git a/config-model/src/test/examples/ngram.sd b/config-model/src/test/examples/ngram.sd
index 5d70d8dc536..acdbe5d24d6 100644
--- a/config-model/src/test/examples/ngram.sd
+++ b/config-model/src/test/examples/ngram.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search ngram {
document ngram {
diff --git a/config-model/src/test/examples/outsidedoc.sd b/config-model/src/test/examples/outsidedoc.sd
index 017e0e172e4..17e24b647bf 100644
--- a/config-model/src/test/examples/outsidedoc.sd
+++ b/config-model/src/test/examples/outsidedoc.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search outsidedoc {
index default {
diff --git a/config-model/src/test/examples/outsidesummary.sd b/config-model/src/test/examples/outsidesummary.sd
index 6ea0a1a2323..d6a6f47a443 100644
--- a/config-model/src/test/examples/outsidesummary.sd
+++ b/config-model/src/test/examples/outsidesummary.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search outsidesummary {
document-summary other {
diff --git a/config-model/src/test/examples/position_array.sd b/config-model/src/test/examples/position_array.sd
index ad5c8c690db..0bca07b6694 100644
--- a/config-model/src/test/examples/position_array.sd
+++ b/config-model/src/test/examples/position_array.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search position_array {
document position_array {
field pos type array<position> {
diff --git a/config-model/src/test/examples/position_attribute.sd b/config-model/src/test/examples/position_attribute.sd
index e2e16fe76c9..fe83540bd9f 100644
--- a/config-model/src/test/examples/position_attribute.sd
+++ b/config-model/src/test/examples/position_attribute.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search position_attribute {
document position_attribute {
field pos type position {
diff --git a/config-model/src/test/examples/position_base.sd b/config-model/src/test/examples/position_base.sd
index 8f8ff85cff2..f47c6393838 100644
--- a/config-model/src/test/examples/position_base.sd
+++ b/config-model/src/test/examples/position_base.sd
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search position_base {
document position_base {
field pos type position {
diff --git a/config-model/src/test/examples/position_extra.sd b/config-model/src/test/examples/position_extra.sd
index 808e6a4e125..3c4f0391f46 100644
--- a/config-model/src/test/examples/position_extra.sd
+++ b/config-model/src/test/examples/position_extra.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search position_extra {
document position_extra {
field pos_str type string {
diff --git a/config-model/src/test/examples/position_index.sd b/config-model/src/test/examples/position_index.sd
index bd1866d07d0..0c5bfbef88f 100644
--- a/config-model/src/test/examples/position_index.sd
+++ b/config-model/src/test/examples/position_index.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search position_index {
document position_index {
field pos type position {
diff --git a/config-model/src/test/examples/position_inherited.sd b/config-model/src/test/examples/position_inherited.sd
index b3341e01f80..5634166993b 100644
--- a/config-model/src/test/examples/position_inherited.sd
+++ b/config-model/src/test/examples/position_inherited.sd
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search position_inherited {
document position_inherited inherits position_base {}
}
diff --git a/config-model/src/test/examples/position_summary.sd b/config-model/src/test/examples/position_summary.sd
index 8547a0ec69f..6729d59571c 100644
--- a/config-model/src/test/examples/position_summary.sd
+++ b/config-model/src/test/examples/position_summary.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search position_summary {
document position_summary {
field pos type position {
diff --git a/config-model/src/test/examples/rankingexpressionfunction/rankingexpressionfunction.sd b/config-model/src/test/examples/rankingexpressionfunction/rankingexpressionfunction.sd
index 6e399c03a2c..f0d1851af90 100644
--- a/config-model/src/test/examples/rankingexpressionfunction/rankingexpressionfunction.sd
+++ b/config-model/src/test/examples/rankingexpressionfunction/rankingexpressionfunction.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search rankexpression {
document rankexpression {
diff --git a/config-model/src/test/examples/rankingexpressioninfile/rankingexpressioninfile.sd b/config-model/src/test/examples/rankingexpressioninfile/rankingexpressioninfile.sd
index d412c00a57a..f19fa6d56e7 100644
--- a/config-model/src/test/examples/rankingexpressioninfile/rankingexpressioninfile.sd
+++ b/config-model/src/test/examples/rankingexpressioninfile/rankingexpressioninfile.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search rankexpression {
document rankexpression {
diff --git a/config-model/src/test/examples/rankmodifier/literal.sd b/config-model/src/test/examples/rankmodifier/literal.sd
index 56c4f9b2a42..787c0b6bd51 100644
--- a/config-model/src/test/examples/rankmodifier/literal.sd
+++ b/config-model/src/test/examples/rankmodifier/literal.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music {
diff --git a/config-model/src/test/examples/rankpropvars.sd b/config-model/src/test/examples/rankpropvars.sd
index bac02ea8316..e26358fef5a 100644
--- a/config-model/src/test/examples/rankpropvars.sd
+++ b/config-model/src/test/examples/rankpropvars.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
rank-profile other {
diff --git a/config-model/src/test/examples/reserved_words_as_field_names.sd b/config-model/src/test/examples/reserved_words_as_field_names.sd
index 17d893d2c24..e275b76ff7f 100644
--- a/config-model/src/test/examples/reserved_words_as_field_names.sd
+++ b/config-model/src/test/examples/reserved_words_as_field_names.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search test {
document test {
diff --git a/config-model/src/test/examples/simple.sd b/config-model/src/test/examples/simple.sd
index a8c801b1421..0593de1d5a6 100644
--- a/config-model/src/test/examples/simple.sd
+++ b/config-model/src/test/examples/simple.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# An entry-level configuration.
# You can get a reasonable configuration by only configuring
# a document
diff --git a/config-model/src/test/examples/stemmingdefault.sd b/config-model/src/test/examples/stemmingdefault.sd
index 8fc44790acd..b22044573b5 100644
--- a/config-model/src/test/examples/stemmingdefault.sd
+++ b/config-model/src/test/examples/stemmingdefault.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search stemmingdefault {
document stemmingdefault {
field my_str type string {
diff --git a/config-model/src/test/examples/stemmingresolver.sd b/config-model/src/test/examples/stemmingresolver.sd
index 0bedb02c006..5b31cde31df 100644
--- a/config-model/src/test/examples/stemmingresolver.sd
+++ b/config-model/src/test/examples/stemmingresolver.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search stemmingresolver {
document stemmingresolver {
field foo type string {
diff --git a/config-model/src/test/examples/stemmingsetting.sd b/config-model/src/test/examples/stemmingsetting.sd
index 51864193174..68df4d685fd 100644
--- a/config-model/src/test/examples/stemmingsetting.sd
+++ b/config-model/src/test/examples/stemmingsetting.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search stemmingsetting {
document stemmingsetting {
diff --git a/config-model/src/test/examples/strange.sd b/config-model/src/test/examples/strange.sd
index fc7edd59849..3e36ddb4ed3 100644
--- a/config-model/src/test/examples/strange.sd
+++ b/config-model/src/test/examples/strange.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search strange {
document strange {
field source_src type string {
diff --git a/config-model/src/test/examples/struct.sd b/config-model/src/test/examples/struct.sd
index a9939aa25b2..586c1fba9fa 100755
--- a/config-model/src/test/examples/struct.sd
+++ b/config-model/src/test/examples/struct.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music {
struct foo {
diff --git a/config-model/src/test/examples/struct_outside.sd b/config-model/src/test/examples/struct_outside.sd
index d219c9a3ff2..8911694ffc9 100644
--- a/config-model/src/test/examples/struct_outside.sd
+++ b/config-model/src/test/examples/struct_outside.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search struct_outside {
struct my_struct {
diff --git a/config-model/src/test/examples/structanddocumentwithsamenames.sd b/config-model/src/test/examples/structanddocumentwithsamenames.sd
index 6f19b41cded..4f69f30f998 100755
--- a/config-model/src/test/examples/structanddocumentwithsamenames.sd
+++ b/config-model/src/test/examples/structanddocumentwithsamenames.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music {
diff --git a/config-model/src/test/examples/structoutsideofdocument.sd b/config-model/src/test/examples/structoutsideofdocument.sd
index 5c062ef19a6..806351cd709 100644
--- a/config-model/src/test/examples/structoutsideofdocument.sd
+++ b/config-model/src/test/examples/structoutsideofdocument.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search structoutsideofdocument {
# (will fail)
diff --git a/config-model/src/test/examples/summaryfieldcollision.sd b/config-model/src/test/examples/summaryfieldcollision.sd
index 51a17b52bdd..7717f99f365 100644
--- a/config-model/src/test/examples/summaryfieldcollision.sd
+++ b/config-model/src/test/examples/summaryfieldcollision.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search summaryfieldcollision {
document summaryfieldcollision {
diff --git a/config-model/src/test/examples/weightedset-summaryto.sd b/config-model/src/test/examples/weightedset-summaryto.sd
index 26c72946573..fb94332289c 100644
--- a/config-model/src/test/examples/weightedset-summaryto.sd
+++ b/config-model/src/test/examples/weightedset-summaryto.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search test {
document test {
diff --git a/config-model/src/test/integration/onnx-model/files/create_dynamic_model.py b/config-model/src/test/integration/onnx-model/files/create_dynamic_model.py
index 55df3a557e9..83974fc7004 100755
--- a/config-model/src/test/integration/onnx-model/files/create_dynamic_model.py
+++ b/config-model/src/test/integration/onnx-model/files/create_dynamic_model.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/config-model/src/test/integration/onnx-model/files/create_model.py b/config-model/src/test/integration/onnx-model/files/create_model.py
index 10ff92c2eda..15cfa1c951d 100755
--- a/config-model/src/test/integration/onnx-model/files/create_model.py
+++ b/config-model/src/test/integration/onnx-model/files/create_model.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/config-model/src/test/integration/onnx-model/files/create_unbound_model.py b/config-model/src/test/integration/onnx-model/files/create_unbound_model.py
index abf733ea43f..692ebce22a8 100755
--- a/config-model/src/test/integration/onnx-model/files/create_unbound_model.py
+++ b/config-model/src/test/integration/onnx-model/files/create_unbound_model.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/config-model/src/test/integration/onnx-model/schemas/test.sd b/config-model/src/test/integration/onnx-model/schemas/test.sd
index 5799499e4df..a15714767ba 100644
--- a/config-model/src/test/integration/onnx-model/schemas/test.sd
+++ b/config-model/src/test/integration/onnx-model/schemas/test.sd
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search test {
diff --git a/config-model/src/test/integration/onnx-model/services.xml b/config-model/src/test/integration/onnx-model/services.xml
index 892ce9a9f89..1a852232be0 100644
--- a/config-model/src/test/integration/onnx-model/services.xml
+++ b/config-model/src/test/integration/onnx-model/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<admin version="2.0">
<adminserver hostalias="node1" />
diff --git a/config-model/src/test/integration/onnx/models/small_constants_and_functions.py b/config-model/src/test/integration/onnx/models/small_constants_and_functions.py
index 7b04b93fee2..e141ea7da73 100755
--- a/config-model/src/test/integration/onnx/models/small_constants_and_functions.py
+++ b/config-model/src/test/integration/onnx/models/small_constants_and_functions.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/config-model/src/test/integration/onnx/services.xml b/config-model/src/test/integration/onnx/services.xml
index aa1c0223bdf..4dcf7ba17cf 100644
--- a/config-model/src/test/integration/onnx/services.xml
+++ b/config-model/src/test/integration/onnx/services.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<container version="1.0">
diff --git a/config-model/src/test/integration/vespa/services.xml b/config-model/src/test/integration/vespa/services.xml
index aa1c0223bdf..4dcf7ba17cf 100644
--- a/config-model/src/test/integration/vespa/services.xml
+++ b/config-model/src/test/integration/vespa/services.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services>
<container version="1.0">
diff --git a/config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java b/config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java
index 8f751631fb5..adb6e423a39 100644
--- a/config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model;
import com.google.common.io.Files;
diff --git a/config-model/src/test/java/com/yahoo/config/model/ApplicationPackageTester.java b/config-model/src/test/java/com/yahoo/config/model/ApplicationPackageTester.java
index 8e7d5aadb36..3d799375420 100644
--- a/config-model/src/test/java/com/yahoo/config/model/ApplicationPackageTester.java
+++ b/config-model/src/test/java/com/yahoo/config/model/ApplicationPackageTester.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model;
import com.yahoo.component.Version;
diff --git a/config-model/src/test/java/com/yahoo/config/model/ConfigModelBuilderTest.java b/config-model/src/test/java/com/yahoo/config/model/ConfigModelBuilderTest.java
index 9e99060a310..e5909091534 100644
--- a/config-model/src/test/java/com/yahoo/config/model/ConfigModelBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/ConfigModelBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model;
import com.yahoo.config.model.builder.xml.ConfigModelBuilder;
diff --git a/config-model/src/test/java/com/yahoo/config/model/ConfigModelContextTest.java b/config-model/src/test/java/com/yahoo/config/model/ConfigModelContextTest.java
index 3b4d51e1b57..efa1ca5949a 100644
--- a/config-model/src/test/java/com/yahoo/config/model/ConfigModelContextTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/ConfigModelContextTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model;
import com.yahoo.config.application.api.ApplicationPackage;
diff --git a/config-model/src/test/java/com/yahoo/config/model/ConfigModelUtilsTest.java b/config-model/src/test/java/com/yahoo/config/model/ConfigModelUtilsTest.java
index 20e0e54103c..0127129ba0b 100644
--- a/config-model/src/test/java/com/yahoo/config/model/ConfigModelUtilsTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/ConfigModelUtilsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model;
import com.yahoo.config.model.application.provider.Bundle;
diff --git a/config-model/src/test/java/com/yahoo/config/model/MapConfigModelRegistryTest.java b/config-model/src/test/java/com/yahoo/config/model/MapConfigModelRegistryTest.java
index 9847ad09198..e5e61459b44 100644
--- a/config-model/src/test/java/com/yahoo/config/model/MapConfigModelRegistryTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/MapConfigModelRegistryTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model;
import com.yahoo.config.model.builder.xml.ConfigModelBuilder;
diff --git a/config-model/src/test/java/com/yahoo/config/model/MockModelContext.java b/config-model/src/test/java/com/yahoo/config/model/MockModelContext.java
index 59af3193b79..49b4e9820de 100644
--- a/config-model/src/test/java/com/yahoo/config/model/MockModelContext.java
+++ b/config-model/src/test/java/com/yahoo/config/model/MockModelContext.java
@@ -1,7 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model;
import com.yahoo.component.Version;
+import com.yahoo.concurrent.InThreadExecutorService;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.application.api.FileRegistry;
@@ -18,6 +19,7 @@ import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.test.MockApplicationPackage;
import java.util.Optional;
+import java.util.concurrent.ExecutorService;
/**
* @author hmusum
@@ -83,4 +85,8 @@ public class MockModelContext implements ModelContext {
return new TestProperties();
}
+ @Override
+ public ExecutorService getExecutor() {
+ return new InThreadExecutorService();
+ }
}
diff --git a/config-model/src/test/java/com/yahoo/config/model/QrserverAndGatewayPortAllocationTest.java b/config-model/src/test/java/com/yahoo/config/model/QrserverAndGatewayPortAllocationTest.java
index ac776d3cf78..06cce8f0be9 100644
--- a/config-model/src/test/java/com/yahoo/config/model/QrserverAndGatewayPortAllocationTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/QrserverAndGatewayPortAllocationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model;
import com.yahoo.vespa.model.VespaModel;
diff --git a/config-model/src/test/java/com/yahoo/config/model/application/provider/SchemaValidatorTest.java b/config-model/src/test/java/com/yahoo/config/model/application/provider/SchemaValidatorTest.java
index 3849e9e03fd..f0425d20af5 100644
--- a/config-model/src/test/java/com/yahoo/config/model/application/provider/SchemaValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/application/provider/SchemaValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.application.provider;
import com.yahoo.component.Version;
diff --git a/config-model/src/test/java/com/yahoo/config/model/builder/xml/ConfigModelIdTest.java b/config-model/src/test/java/com/yahoo/config/model/builder/xml/ConfigModelIdTest.java
index 79d4f9f75df..9874c249175 100644
--- a/config-model/src/test/java/com/yahoo/config/model/builder/xml/ConfigModelIdTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/builder/xml/ConfigModelIdTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.builder.xml;
import com.yahoo.component.Version;
diff --git a/config-model/src/test/java/com/yahoo/config/model/builder/xml/test/DomBuilderTest.java b/config-model/src/test/java/com/yahoo/config/model/builder/xml/test/DomBuilderTest.java
index 9859a5de685..393522b4e33 100644
--- a/config-model/src/test/java/com/yahoo/config/model/builder/xml/test/DomBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/builder/xml/test/DomBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.builder.xml.test;
import com.yahoo.config.model.test.TestUtil;
diff --git a/config-model/src/test/java/com/yahoo/config/model/deploy/DeployStateTest.java b/config-model/src/test/java/com/yahoo/config/model/deploy/DeployStateTest.java
index 594f5a13546..36da5c2f142 100644
--- a/config-model/src/test/java/com/yahoo/config/model/deploy/DeployStateTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/deploy/DeployStateTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.deploy;
import com.yahoo.config.application.api.ApplicationPackage;
diff --git a/config-model/src/test/java/com/yahoo/config/model/deploy/SystemModelTestCase.java b/config-model/src/test/java/com/yahoo/config/model/deploy/SystemModelTestCase.java
index 0b10b2b13ba..8736f85e41b 100644
--- a/config-model/src/test/java/com/yahoo/config/model/deploy/SystemModelTestCase.java
+++ b/config-model/src/test/java/com/yahoo/config/model/deploy/SystemModelTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.deploy;
import com.yahoo.cloud.config.SentinelConfig;
diff --git a/config-model/src/test/java/com/yahoo/config/model/graph/GraphMock.java b/config-model/src/test/java/com/yahoo/config/model/graph/GraphMock.java
index a30f21e9dc5..d61eb1c99a5 100644
--- a/config-model/src/test/java/com/yahoo/config/model/graph/GraphMock.java
+++ b/config-model/src/test/java/com/yahoo/config/model/graph/GraphMock.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.graph;
import com.google.inject.Inject;
diff --git a/config-model/src/test/java/com/yahoo/config/model/graph/ModelGraphTest.java b/config-model/src/test/java/com/yahoo/config/model/graph/ModelGraphTest.java
index 8dae880a9dc..1d078c132fc 100644
--- a/config-model/src/test/java/com/yahoo/config/model/graph/ModelGraphTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/graph/ModelGraphTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.graph;
import com.yahoo.config.model.ConfigModelContext;
diff --git a/config-model/src/test/java/com/yahoo/config/model/producer/AbstractConfigProducerTest.java b/config-model/src/test/java/com/yahoo/config/model/producer/AbstractConfigProducerTest.java
index 257651f893e..68868ae1a06 100644
--- a/config-model/src/test/java/com/yahoo/config/model/producer/AbstractConfigProducerTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/producer/AbstractConfigProducerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.producer;
import com.yahoo.cloud.config.log.LogdConfig;
diff --git a/config-model/src/test/java/com/yahoo/config/model/provision/HostSpecTest.java b/config-model/src/test/java/com/yahoo/config/model/provision/HostSpecTest.java
index 91f5fdc5f11..810e2c643f3 100644
--- a/config-model/src/test/java/com/yahoo/config/model/provision/HostSpecTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/provision/HostSpecTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.provision;
import com.yahoo.config.provision.HostSpec;
diff --git a/config-model/src/test/java/com/yahoo/config/model/provision/HostsXmlProvisionerTest.java b/config-model/src/test/java/com/yahoo/config/model/provision/HostsXmlProvisionerTest.java
index 1c7925b935a..0af042a3bd0 100644
--- a/config-model/src/test/java/com/yahoo/config/model/provision/HostsXmlProvisionerTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/provision/HostsXmlProvisionerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.provision;
import com.yahoo.config.provision.HostSpec;
diff --git a/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java b/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java
index b0ddadf11bd..1d00580f390 100644
--- a/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.provision;
import com.yahoo.cloud.config.ZookeeperServerConfig;
@@ -14,6 +14,7 @@ import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.Zone;
import com.yahoo.container.core.ApplicationMetadataConfig;
import com.yahoo.search.config.QrStartConfig;
+import com.yahoo.vespa.config.content.core.StorCommunicationmanagerConfig;
import com.yahoo.vespa.config.content.core.StorStatusConfig;
import com.yahoo.vespa.config.search.core.ProtonConfig;
import com.yahoo.vespa.model.HostResource;
@@ -30,9 +31,9 @@ import com.yahoo.vespa.model.container.ContainerCluster;
import com.yahoo.vespa.model.content.ContentSearchCluster;
import com.yahoo.vespa.model.content.StorageNode;
import com.yahoo.vespa.model.content.cluster.ContentCluster;
+import com.yahoo.vespa.model.content.storagecluster.StorageCluster;
import com.yahoo.vespa.model.search.SearchNode;
import com.yahoo.vespa.model.test.VespaModelTester;
-import com.yahoo.vespa.model.test.utils.ApplicationPackageUtils;
import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithMockPkg;
import com.yahoo.yolean.Exceptions;
import org.junit.Test;
@@ -215,7 +216,7 @@ public class ModelProvisioningTest {
assertEquals("Nodes in content1", 2, model.getContentClusters().get("content1").getRootGroup().getNodes().size());
assertEquals("Nodes in container1", 1, model.getContainerClusters().get("container1").getContainers().size());
assertEquals("Nodes in cluster without ID", 2, model.getContentClusters().get("content").getRootGroup().getNodes().size());
- assertEquals("Heap size for container", 60, physicalMemoryPercentage(model.getContainerClusters().get("container1")));
+ assertEquals("Heap size for container", 70, physicalMemoryPercentage(model.getContainerClusters().get("container1")));
assertProvisioned(2, ClusterSpec.Id.from("content1"), ClusterSpec.Type.content, model);
assertProvisioned(1, ClusterSpec.Id.from("container1"), ClusterSpec.Type.container, model);
assertProvisioned(2, ClusterSpec.Id.from("content"), ClusterSpec.Type.content, model);
@@ -269,9 +270,9 @@ public class ModelProvisioningTest {
assertEquals("Nodes in content1", 2, model.getContentClusters().get("content1").getRootGroup().getNodes().size());
assertEquals("Nodes in container1", 2, model.getContainerClusters().get("container1").getContainers().size());
assertEquals("Heap size is lowered with combined clusters",
- 17, physicalMemoryPercentage(model.getContainerClusters().get("container1")));
+ 18, physicalMemoryPercentage(model.getContainerClusters().get("container1")));
assertEquals("Memory for proton is lowered to account for the jvm heap",
- (long)((3 - reservedMemoryGb) * (Math.pow(1024, 3)) * (1 - 0.17)), protonMemorySize(model.getContentClusters().get("content1")));
+ (long)((3 - reservedMemoryGb) * (Math.pow(1024, 3)) * (1 - 0.18)), protonMemorySize(model.getContentClusters().get("content1")));
assertProvisioned(0, ClusterSpec.Id.from("container1"), ClusterSpec.Type.container, model);
assertProvisioned(2, ClusterSpec.Id.from("content1"), ClusterSpec.Id.from("container1"), ClusterSpec.Type.combined, model);
}
@@ -305,7 +306,7 @@ public class ModelProvisioningTest {
assertEquals("Nodes in content1", 2, model.getContentClusters().get("content1").getRootGroup().getNodes().size());
assertEquals("Nodes in container1", 2, model.getContainerClusters().get("container1").getContainers().size());
assertEquals("Heap size is normal",
- 60, physicalMemoryPercentage(model.getContainerClusters().get("container1")));
+ 70, physicalMemoryPercentage(model.getContainerClusters().get("container1")));
assertEquals("Memory for proton is normal",
(long)((3 - reservedMemoryGb) * (Math.pow(1024, 3))), protonMemorySize(model.getContentClusters().get("content1")));
}
@@ -1115,7 +1116,7 @@ public class ModelProvisioningTest {
assertEquals(numberOfHosts, model.getRoot().hostSystem().getHosts().size());
ContentCluster cluster = model.getContentClusters().get("bar");
- assertEquals(2, cluster.getStorageNodes().getChildren().size());
+ assertEquals(2, cluster.getStorageCluster().getChildren().size());
assertEquals(1, cluster.redundancy().effectiveInitialRedundancy());
assertEquals(1, cluster.redundancy().effectiveFinalRedundancy());
assertEquals(1, cluster.redundancy().effectiveReadyCopies());
@@ -1618,7 +1619,11 @@ public class ModelProvisioningTest {
assertEquals("Nodes in container cluster", 1, model.getContainerClusters().get("container1").getContainers().size());
assertEquals("Nodes in content cluster (downscaled)", 1, model.getContentClusters().get("content").getRootGroup().getNodes().size());
+
model.getConfig(new StorStatusConfig.Builder(), "default");
+ StorageCluster storage = model.getContentClusters().get("content").getStorageCluster();
+ StorCommunicationmanagerConfig.Builder builder = new StorCommunicationmanagerConfig.Builder();
+ storage.getChildren().get("0").getConfig(builder);
}
@Test
diff --git a/config-model/src/test/java/com/yahoo/config/model/provision/SingleNodeProvisionerTest.java b/config-model/src/test/java/com/yahoo/config/model/provision/SingleNodeProvisionerTest.java
index acb5b95d3fe..446350a734f 100644
--- a/config-model/src/test/java/com/yahoo/config/model/provision/SingleNodeProvisionerTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/provision/SingleNodeProvisionerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.provision;
import com.yahoo.config.application.api.ApplicationPackage;
diff --git a/config-model/src/test/java/com/yahoo/config/model/test/MockHosts.java b/config-model/src/test/java/com/yahoo/config/model/test/MockHosts.java
index 50b3f70abdf..db718e4c686 100644
--- a/config-model/src/test/java/com/yahoo/config/model/test/MockHosts.java
+++ b/config-model/src/test/java/com/yahoo/config/model/test/MockHosts.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.test;
import com.yahoo.vespa.model.Host;
diff --git a/config-model/src/test/java/com/yahoo/document/test/SDDocumentTypeTestCase.java b/config-model/src/test/java/com/yahoo/document/test/SDDocumentTypeTestCase.java
index 127c121197b..c878ea9951a 100644
--- a/config-model/src/test/java/com/yahoo/document/test/SDDocumentTypeTestCase.java
+++ b/config-model/src/test/java/com/yahoo/document/test/SDDocumentTypeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.test;
import com.yahoo.document.DataType;
diff --git a/config-model/src/test/java/com/yahoo/document/test/SDFieldTestCase.java b/config-model/src/test/java/com/yahoo/document/test/SDFieldTestCase.java
index b3109c3c2e4..223cd6a6e85 100644
--- a/config-model/src/test/java/com/yahoo/document/test/SDFieldTestCase.java
+++ b/config-model/src/test/java/com/yahoo/document/test/SDFieldTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.test;
import com.yahoo.document.DataType;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/ArraysTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/ArraysTestCase.java
index 6a40778c9c4..801459693de 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/ArraysTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/ArraysTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.document.ArrayDataType;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/ArraysWeightedSetsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/ArraysWeightedSetsTestCase.java
index af1e061b7fa..45ec5176bc7 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/ArraysWeightedSetsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/ArraysWeightedSetsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.document.ArrayDataType;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/AttributeSettingsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/AttributeSettingsTestCase.java
index 83cad4cf266..869cc2678b2 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/AttributeSettingsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/AttributeSettingsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.document.StructDataType;
@@ -35,7 +35,7 @@ public class AttributeSettingsTestCase extends SchemaTestCase {
Search search = SearchBuilder.buildFromFile("src/test/examples/attributesettings.sd");
SDField f1=(SDField) search.getDocument().getField("f1");
- assertTrue(f1.getAttributes().size() == 1);
+ assertEquals(1, f1.getAttributes().size());
Attribute a1 = f1.getAttributes().get(f1.getName());
assertThat(a1.getType(), is(Attribute.Type.LONG));
assertThat(a1.getCollectionType(), is(Attribute.CollectionType.SINGLE));
@@ -46,7 +46,7 @@ public class AttributeSettingsTestCase extends SchemaTestCase {
assertFalse(a1.isCreateIfNonExistent());
SDField f2=(SDField) search.getDocument().getField("f2");
- assertTrue(f2.getAttributes().size() == 1);
+ assertEquals(1, f2.getAttributes().size());
Attribute a2 = f2.getAttributes().get(f2.getName());
assertThat(a2.getType(), is(Attribute.Type.LONG));
assertThat(a2.getCollectionType(), is(Attribute.CollectionType.SINGLE));
@@ -57,7 +57,7 @@ public class AttributeSettingsTestCase extends SchemaTestCase {
assertFalse(a2.isCreateIfNonExistent());
assertThat(f2.getAliasToName().get("f2alias"), is("f2"));
SDField f3=(SDField) search.getDocument().getField("f3");
- assertTrue(f3.getAttributes().size() == 1);
+ assertEquals(1, f3.getAttributes().size());
assertThat(f3.getAliasToName().get("f3alias"), is("f3"));
Attribute a3 = f3.getAttributes().get(f3.getName());
@@ -80,7 +80,7 @@ public class AttributeSettingsTestCase extends SchemaTestCase {
private void assertWeightedSet(Search search, String name, boolean createIfNonExistent, boolean removeIfZero) {
SDField f4 = (SDField) search.getDocument().getField(name);
- assertTrue(f4.getAttributes().size() == 1);
+ assertEquals(1, f4.getAttributes().size());
Attribute a4 = f4.getAttributes().get(f4.getName());
assertThat(a4.getType(), is(Attribute.Type.STRING));
assertThat(a4.getCollectionType(), is(Attribute.CollectionType.WEIGHTEDSET));
@@ -95,7 +95,7 @@ public class AttributeSettingsTestCase extends SchemaTestCase {
public void requireThatFastAccessCanBeSet() throws IOException, ParseException {
Search search = SearchBuilder.buildFromFile("src/test/examples/attributesettings.sd");
SDField field = (SDField) search.getDocument().getField("fast_access");
- assertTrue(field.getAttributes().size() == 1);
+ assertEquals(1, field.getAttributes().size());
Attribute attr = field.getAttributes().get(field.getName());
assertTrue(attr.isFastAccess());
}
@@ -112,6 +112,33 @@ public class AttributeSettingsTestCase extends SchemaTestCase {
SDField field = (SDField) search.getDocument().getField("f");
return field.getAttributes().get(field.getName());
}
+
+ @Test
+ public void requireThatPagedIsDefaultOff() throws ParseException {
+ Attribute attr = getAttributeF(
+ "search test {\n" +
+ " document test { \n" +
+ " field f type tensor(x[2]) { \n" +
+ " indexing: attribute \n" +
+ " }\n" +
+ " }\n" +
+ "}\n");
+ assertFalse(attr.isPaged());
+ }
+ @Test
+ public void requireThatPagedCanBeSet() throws ParseException {
+ Attribute attr = getAttributeF(
+ "search test {\n" +
+ " document test { \n" +
+ " field f type tensor(x[2]) { \n" +
+ " indexing: attribute \n" +
+ " attribute: paged \n" +
+ " }\n" +
+ " }\n" +
+ "}\n");
+ assertTrue(attr.isPaged());
+ }
+
@Test
public void requireThatMutableIsDefaultOff() throws ParseException {
Attribute attr = getAttributeF(
@@ -219,6 +246,7 @@ public class AttributeSettingsTestCase extends SchemaTestCase {
single.setEnableOnlyBitVector(true);
single.setFastSearch(true);
single.setHuge(true);
+ single.setPaged(true);
single.setFastAccess(true);
single.setPosition(true);
single.setArity(5);
@@ -241,6 +269,7 @@ public class AttributeSettingsTestCase extends SchemaTestCase {
assertTrue(array.isEnabledOnlyBitVector());
assertTrue(array.isFastSearch());
assertTrue(array.isHuge());
+ assertTrue(array.isPaged());
assertTrue(array.isFastAccess());
assertTrue(array.isPosition());
assertEquals(5, array.arity());
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/CommentTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/CommentTestCase.java
index 3bb464c5fa5..050d5299c7d 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/CommentTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/CommentTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.searchdefinition.document.SDField;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/DiversityTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/DiversityTestCase.java
index e20bc4d96aa..6c4eb4748c8 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/DiversityTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/DiversityTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.search.query.ranking.Diversity;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/DocumentGraphValidatorTest.java b/config-model/src/test/java/com/yahoo/searchdefinition/DocumentGraphValidatorTest.java
index f475fbe6d78..e0a4d0f24ca 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/DocumentGraphValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/DocumentGraphValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.document.ReferenceDataType;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/DocumentReferenceResolverTest.java b/config-model/src/test/java/com/yahoo/searchdefinition/DocumentReferenceResolverTest.java
index 6b65303fe56..28c96f39556 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/DocumentReferenceResolverTest.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/DocumentReferenceResolverTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.document.DataType;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/FeatureNamesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/FeatureNamesTestCase.java
index 056fc27f067..c86b5aa93a2 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/FeatureNamesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/FeatureNamesTestCase.java
@@ -1,10 +1,15 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
+import org.junit.Ignore;
import org.junit.Test;
+import java.util.function.Function;
+import java.util.regex.Pattern;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
/**
* Tests rank feature names.
@@ -43,4 +48,47 @@ public class FeatureNamesTestCase {
FeatureNames.asQueryFeature("foo.bar").toString());
}
+ @Test
+ public void testLegalFeatureNames() {
+ assertTrue(FeatureNames.notNeedQuotes("_"));
+ assertFalse(FeatureNames.notNeedQuotes("-"));
+ assertTrue(FeatureNames.notNeedQuotes("_-"));
+ assertTrue(FeatureNames.notNeedQuotes("0_-azAZxy98-_"));
+ assertFalse(FeatureNames.notNeedQuotes("0_-azAZxy98-_+"));
+ }
+
+ @Test
+ @Ignore
+ /*
+ * Unignore to verify performance
+ * 2021/09/05 performance was a factor of 5.25
+ * 'Identifier handcoded validity check took 4301ms
+ * Identifier regexp validity check took 22609ms'
+ */
+ public void benchMarkPatternMatching() {
+ Pattern identifierRegexp = Pattern.compile("[A-Za-z0-9_][A-Za-z0-9_-]*");
+ String[] strings = new String[1000];
+ for (int i = 0; i < strings.length; i++) {
+ strings[i] = i + "-legal_string" + i;
+ }
+
+ countValid(strings, 1000, "handcoded warmup", FeatureNames::notNeedQuotes);
+ countValid(strings, 1000, "regexp warmup", (s) -> identifierRegexp.matcher(s).matches());
+
+ countValid(strings, 100000, "handcoded", FeatureNames::notNeedQuotes);
+ countValid(strings, 100000, "regexp", (s) -> identifierRegexp.matcher(s).matches());
+ }
+
+ private void countValid(String [] strings, int numReps, String text, Function<String, Boolean> func) {
+ long start = System.nanoTime();
+ int validCount = 0;
+ for (int i = 0; i < numReps; i++) {
+ for (String s : strings) {
+ if (func.apply(s)) validCount++;
+ }
+ }
+ long end = System.nanoTime();
+ assertEquals(strings.length * numReps, validCount);
+ System.out.println("Identifier " + text + " validity check took " + (end - start)/1000000 + "ms");
+ }
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/FieldOfTypeDocumentTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/FieldOfTypeDocumentTestCase.java
index 1c7b3e19663..d4557549b14 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/FieldOfTypeDocumentTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/FieldOfTypeDocumentTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.document.DataType;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/IncorrectRankingExpressionFileRefTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/IncorrectRankingExpressionFileRefTestCase.java
index 4453f327bb4..5dccd0afd76 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/IncorrectRankingExpressionFileRefTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/IncorrectRankingExpressionFileRefTestCase.java
@@ -1,12 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
-import com.yahoo.config.model.application.provider.BaseDeployLogger;
-import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.searchdefinition.derived.DerivedConfiguration;
import com.yahoo.searchdefinition.parser.ParseException;
-import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
import com.yahoo.yolean.Exceptions;
import org.junit.Test;
@@ -27,7 +24,7 @@ public class IncorrectRankingExpressionFileRefTestCase extends SchemaTestCase {
Search search = SearchBuilder.buildFromFile("src/test/examples/incorrectrankingexpressionfileref.sd",
registry,
new QueryProfileRegistry());
- new DerivedConfiguration(search, new BaseDeployLogger(), new TestProperties(), registry, new QueryProfileRegistry(), new ImportedMlModels()); // cause rank profile parsing
+ new DerivedConfiguration(search, registry); // cause rank profile parsing
fail("parsing should have failed");
} catch (IllegalArgumentException e) {
String message = Exceptions.toMessageString(e);
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/IncorrectSummaryTypesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/IncorrectSummaryTypesTestCase.java
index 91ab5e2b5df..4e579fa62aa 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/IncorrectSummaryTypesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/IncorrectSummaryTypesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/IndexSettingsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/IndexSettingsTestCase.java
index 1734c58ddc9..12b9a7a9937 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/IndexSettingsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/IndexSettingsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.searchdefinition.document.SDField;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/IndexingParsingTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/IndexingParsingTestCase.java
index 70119ad42f9..8deaddf9749 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/IndexingParsingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/IndexingParsingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/MultipleSummariesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/MultipleSummariesTestCase.java
index 5721dbf06e8..cbdb11f49fd 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/MultipleSummariesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/MultipleSummariesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/NameFieldCheckTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/NameFieldCheckTestCase.java
index 47b6905c677..67fd54142f7 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/NameFieldCheckTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/NameFieldCheckTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import org.junit.Test;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/OutsideTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/OutsideTestCase.java
index 64527e7f7a5..4f24f8a50d5 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/OutsideTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/OutsideTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/PredicateDataTypeTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/PredicateDataTypeTestCase.java
index d82c4bbaa7f..e1b0edb0d0c 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/PredicateDataTypeTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/PredicateDataTypeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import static org.junit.Assert.*;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/RankProfileRegistryTest.java b/config-model/src/test/java/com/yahoo/searchdefinition/RankProfileRegistryTest.java
index 84819439048..21ab7a75f46 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/RankProfileRegistryTest.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/RankProfileRegistryTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.config.model.application.provider.FilesApplicationPackage;
@@ -35,7 +35,7 @@ public class RankProfileRegistryTest {
public void testRankProfileDuplicateNameIsIllegal() {
Search search = new Search("foo");
RankProfileRegistry rankProfileRegistry = RankProfileRegistry.createRankProfileRegistryWithBuiltinRankProfiles(search);
- RankProfile barRankProfile = new RankProfile("bar", search, rankProfileRegistry);
+ RankProfile barRankProfile = new RankProfile("bar", search, rankProfileRegistry, search.rankingConstants());
rankProfileRegistry.add(barRankProfile);
rankProfileRegistry.add(barRankProfile);
}
@@ -47,7 +47,7 @@ public class RankProfileRegistryTest {
for (String rankProfileName : RankProfileRegistry.overridableRankProfileNames) {
assertNull(rankProfileRegistry.get(search, rankProfileName).getFunctions().get("foo"));
- RankProfile rankProfileWithAddedFunction = new RankProfile(rankProfileName, search, rankProfileRegistry);
+ RankProfile rankProfileWithAddedFunction = new RankProfile(rankProfileName, search, rankProfileRegistry, search.rankingConstants());
rankProfileWithAddedFunction.addFunction(new ExpressionFunction("foo", RankingExpression.from("1+2")), true);
rankProfileRegistry.add(rankProfileWithAddedFunction);
assertNotNull(rankProfileRegistry.get(search, rankProfileName).getFunctions().get("foo"));
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/RankProfileTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/RankProfileTestCase.java
index d5ef3779493..de43dc94c71 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/RankProfileTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/RankProfileTestCase.java
@@ -1,10 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.collections.Pair;
import com.yahoo.component.ComponentId;
import com.yahoo.config.model.api.ModelContext;
-import com.yahoo.config.model.application.provider.BaseDeployLogger;
+import com.yahoo.config.model.application.provider.MockFileRegistry;
import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.document.DataType;
import com.yahoo.search.query.profile.QueryProfileRegistry;
@@ -19,6 +19,9 @@ import com.yahoo.searchdefinition.document.SDDocumentType;
import com.yahoo.searchdefinition.document.SDField;
import com.yahoo.searchdefinition.parser.ParseException;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
+
+import static com.yahoo.config.model.test.TestUtil.joinLines;
+
import org.junit.Test;
import java.util.Iterator;
@@ -27,7 +30,9 @@ import java.util.Optional;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
/**
* Tests rank profiles
@@ -45,7 +50,7 @@ public class RankProfileTestCase extends SchemaTestCase {
a.setRankType(RankType.IDENTITY);
document.addField("b", DataType.STRING);
search.addDocument(document);
- RankProfile child = new RankProfile("child", search, rankProfileRegistry);
+ RankProfile child = new RankProfile("child", search, rankProfileRegistry, search.rankingConstants());
child.setInherited("default");
rankProfileRegistry.add(child);
@@ -60,22 +65,175 @@ public class RankProfileTestCase extends SchemaTestCase {
assertEquals(RankType.DEFAULT, setting.getValue());
}
+ @Test
+ public void requireThatIllegalInheritanceIsChecked() throws ParseException {
+ try {
+ RankProfileRegistry registry = new RankProfileRegistry();
+ SearchBuilder builder = new SearchBuilder(registry, setupQueryProfileTypes());
+ builder.importString(joinLines(
+ "search test {",
+ " document test { } ",
+ " rank-profile p1 inherits notexist {}",
+ "}"));
+ builder.build(true);
+ fail();
+ } catch (IllegalArgumentException e) {
+ assertEquals("rank-profile 'p1' inherits 'notexist', but it does not exist anywhere in the inheritance of search 'test'.", e.getMessage());
+ }
+ }
+
+ @Test
+ public void requireThatSelfInheritanceIsIllegal() throws ParseException {
+ try {
+ RankProfileRegistry registry = new RankProfileRegistry();
+ SearchBuilder builder = new SearchBuilder(registry, setupQueryProfileTypes());
+ builder.importString(joinLines(
+ "schema test {",
+ " document test { } ",
+ " rank-profile self inherits self {}",
+ "}"));
+ builder.build(true);
+ fail();
+ } catch (IllegalArgumentException e) {
+ assertEquals("There is a cycle in the inheritance for rank-profile 'test.self' = [test.self, test.self]", e.getMessage());
+ }
+ }
+
+ @Test
+ public void requireThatSelfInheritanceIsLegalWhenOverloading() throws ParseException {
+ RankProfileRegistry registry = new RankProfileRegistry();
+ SearchBuilder builder = new SearchBuilder(registry, setupQueryProfileTypes());
+ builder.importString(joinLines(
+ "schema base {",
+ " document base { } ",
+ " rank-profile self inherits default {}",
+ "}"));
+ builder.importString(joinLines(
+ "schema test {",
+ " document test inherits base { } ",
+ " rank-profile self inherits self {}",
+ "}"));
+ builder.build(true);
+ }
+
+ @Test
+ public void requireThatSidewaysInheritanceIsImpossible() throws ParseException {
+ RankProfileRegistry registry = new RankProfileRegistry();
+ SearchBuilder builder = new SearchBuilder(registry, setupQueryProfileTypes());
+ builder.importString(joinLines(
+ "schema child1 {",
+ " document child1 {",
+ " field field1 type int {",
+ " indexing: attribute",
+ " }",
+ " }",
+ " rank-profile child inherits parent {",
+ " function function2() {",
+ " expression: attribute(field1) + 5",
+ " }",
+ " first-phase {",
+ " expression: function2() * function1()",
+ " }",
+ " summary-features {",
+ " function1",
+ " function2",
+ " attribute(field1)",
+ " }",
+ " }",
+ "}\n"));
+ builder.importString(joinLines(
+ "schema child2 {",
+ " document child2 {",
+ " field field1 type int {",
+ " indexing: attribute",
+ " }",
+ " }",
+ " rank-profile parent {",
+ " first-phase {",
+ " expression: function1()",
+ " }",
+ " function function1() {",
+ " expression: attribute(field1) + 7",
+ " }",
+ " summary-features {",
+ " function1",
+ " attribute(field1)",
+ " }",
+ " }",
+ "}"));
+ try {
+ builder.build(true);
+ fail("Sideways inheritance should have been enforced");
+ } catch (IllegalArgumentException e) {
+ assertEquals("rank-profile 'child' inherits 'parent', but it does not exist anywhere in the inheritance of search 'child1'.", e.getMessage());
+ }
+ }
+
+ @Test
+ public void requireThatDefaultCanAlwaysBeInherited() throws ParseException {
+ RankProfileRegistry registry = new RankProfileRegistry();
+ SearchBuilder builder = new SearchBuilder(registry, setupQueryProfileTypes());
+ builder.importString(joinLines(
+ "schema test {",
+ " document test { } ",
+ " rank-profile default inherits default {}",
+ "}"));
+ builder.build(true);
+ }
+
+ @Test
+ public void requireThatCyclicInheritanceIsIllegal() throws ParseException {
+ try {
+ RankProfileRegistry registry = new RankProfileRegistry();
+ SearchBuilder builder = new SearchBuilder(registry, setupQueryProfileTypes());
+ builder.importString(joinLines(
+ "search test {",
+ " document test { } ",
+ " rank-profile a inherits b {}",
+ " rank-profile b inherits c {}",
+ " rank-profile c inherits a {}",
+ "}"));
+ builder.build(true);
+ fail();
+ } catch (IllegalArgumentException e) {
+ assertEquals("There is a cycle in the inheritance for rank-profile 'test.c' = [test.c, test.a, test.b, test.c]", e.getMessage());
+ }
+ }
+
+ @Test
+ public void requireThatRankProfilesCanInheritNotYetSeenProfiles() throws ParseException
+ {
+ RankProfileRegistry registry = new RankProfileRegistry();
+ SearchBuilder builder = new SearchBuilder(registry, setupQueryProfileTypes());
+ builder.importString(joinLines(
+ "search test {",
+ " document test { } ",
+ " rank-profile p1 inherits not_yet_defined {}",
+ " rank-profile not_yet_defined {}",
+ "}"));
+ builder.build(true);
+ assertNotNull(registry.get("test","p1"));
+ assertTrue(registry.get("test","p1").inherits("not_yet_defined"));
+ assertNotNull(registry.get("test","not_yet_defined"));
+ }
+
private String createSD(Double termwiseLimit) {
- return "search test {\n" +
- " document test { \n" +
- " field a type string { \n" +
- " indexing: index \n" +
- " }\n" +
- " }\n" +
- " \n" +
- " rank-profile parent {\n" +
- (termwiseLimit != null ? (" termwise-limit:" + termwiseLimit + "\n") : "") +
- " num-threads-per-search:8\n" +
- " min-hits-per-thread:70\n" +
- " num-search-partitions:1200\n" +
- " }\n" +
- " rank-profile child inherits parent { }\n" +
- "}\n";
+ return joinLines(
+ "search test {",
+ " document test { ",
+ " field a type string { ",
+ " indexing: index ",
+ " }",
+ " }",
+ " ",
+ " rank-profile parent {",
+ (termwiseLimit != null ? (" termwise-limit:" + termwiseLimit + "\n") : ""),
+ " num-threads-per-search:8",
+ " min-hits-per-thread:70",
+ " num-search-partitions:1200",
+ " }",
+ " rank-profile child inherits parent { }",
+ "}");
}
@Test
@@ -102,7 +260,7 @@ public class RankProfileTestCase extends SchemaTestCase {
assertEquals(8, rankProfile.getNumThreadsPerSearch());
assertEquals(70, rankProfile.getMinHitsPerThread());
assertEquals(1200, rankProfile.getNumSearchPartitions());
- RawRankProfile rawRankProfile = new RawRankProfile(rankProfile, new LargeRankExpressions(), new QueryProfileRegistry(),
+ RawRankProfile rawRankProfile = new RawRankProfile(rankProfile, new LargeRankExpressions(new MockFileRegistry()), new QueryProfileRegistry(),
new ImportedMlModels(), attributeFields, deployProperties);
if (expectedTermwiseLimit != null) {
assertTrue(findProperty(rawRankProfile.configProperties(), "vespa.matching.termwise_limit").isPresent());
@@ -122,15 +280,16 @@ public class RankProfileTestCase extends SchemaTestCase {
public void requireThatConfigIsDerivedForAttributeTypeSettings() throws ParseException {
RankProfileRegistry registry = new RankProfileRegistry();
SearchBuilder builder = new SearchBuilder(registry);
- builder.importString("search test {\n" +
- " document test { \n" +
- " field a type tensor(x[10]) { indexing: attribute }\n" +
- " field b type tensor(y{}) { indexing: attribute }\n" +
- " field c type tensor(x[5]) { indexing: attribute }\n" +
- " }\n" +
- " rank-profile p1 {}\n" +
- " rank-profile p2 {}\n" +
- "}");
+ builder.importString(joinLines(
+ "search test {",
+ " document test { ",
+ " field a type tensor(x[10]) { indexing: attribute }",
+ " field b type tensor(y{}) { indexing: attribute }",
+ " field c type tensor(x[5]) { indexing: attribute }",
+ " }",
+ " rank-profile p1 {}",
+ " rank-profile p2 {}",
+ "}"));
builder.build();
Search search = builder.getSearch();
@@ -145,11 +304,12 @@ public class RankProfileTestCase extends SchemaTestCase {
public void requireThatDenseDimensionsMustBeBound() throws ParseException {
try {
SearchBuilder builder = new SearchBuilder(new RankProfileRegistry());
- builder.importString("search test {\n" +
- " document test { \n" +
- " field a type tensor(x[]) { indexing: attribute }\n" +
- " }\n" +
- "}");
+ builder.importString(joinLines(
+ "search test {",
+ " document test { ",
+ " field a type tensor(x[]) { indexing: attribute }",
+ " }",
+ "}"));
builder.build();
}
catch (IllegalArgumentException e) {
@@ -158,8 +318,12 @@ public class RankProfileTestCase extends SchemaTestCase {
}
}
+ private static RawRankProfile createRawRankProfile(RankProfile profile, Search search) {
+ return new RawRankProfile(profile, new LargeRankExpressions(new MockFileRegistry()), new QueryProfileRegistry(), new ImportedMlModels(), new AttributeFields(search), new TestProperties());
+ }
+
private static void assertAttributeTypeSettings(RankProfile profile, Search search) {
- RawRankProfile rawProfile = new RawRankProfile(profile, new QueryProfileRegistry(), new ImportedMlModels(), new AttributeFields(search));
+ RawRankProfile rawProfile = createRawRankProfile(profile, search);
assertEquals("tensor(x[10])", findProperty(rawProfile.configProperties(), "vespa.type.attribute.a").get());
assertEquals("tensor(y{})", findProperty(rawProfile.configProperties(), "vespa.type.attribute.b").get());
assertEquals("tensor(x[5])", findProperty(rawProfile.configProperties(), "vespa.type.attribute.c").get());
@@ -169,11 +333,12 @@ public class RankProfileTestCase extends SchemaTestCase {
public void requireThatConfigIsDerivedForQueryFeatureTypeSettings() throws ParseException {
RankProfileRegistry registry = new RankProfileRegistry();
SearchBuilder builder = new SearchBuilder(registry, setupQueryProfileTypes());
- builder.importString("search test {\n" +
- " document test { } \n" +
- " rank-profile p1 {}\n" +
- " rank-profile p2 {}\n" +
- "}");
+ builder.importString(joinLines(
+ "search test {",
+ " document test { } ",
+ " rank-profile p1 {}",
+ " rank-profile p2 {}",
+ "}"));
builder.build(true);
Search search = builder.getSearch();
@@ -201,7 +366,7 @@ public class RankProfileTestCase extends SchemaTestCase {
}
private static void assertQueryFeatureTypeSettings(RankProfile profile, Search search) {
- RawRankProfile rawProfile = new RawRankProfile(profile, new QueryProfileRegistry(), new ImportedMlModels(), new AttributeFields(search));
+ RawRankProfile rawProfile =createRawRankProfile(profile, search);
assertEquals("tensor(x[10])", findProperty(rawProfile.configProperties(), "vespa.type.query.tensor1").get());
assertEquals("tensor(y{})", findProperty(rawProfile.configProperties(), "vespa.type.query.tensor2").get());
assertFalse(findProperty(rawProfile.configProperties(), "vespa.type.query.tensor3").isPresent());
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/RankPropertiesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/RankPropertiesTestCase.java
index 4bfe3db066c..6f913e1c139 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/RankPropertiesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/RankPropertiesTestCase.java
@@ -1,6 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
+import com.yahoo.config.model.application.provider.MockFileRegistry;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.searchdefinition.derived.AttributeFields;
import com.yahoo.searchdefinition.derived.RawRankProfile;
@@ -55,7 +57,7 @@ public class RankPropertiesTestCase extends SchemaTestCase {
assertEquals("query(a) = 1500", parent.getRankProperties().get(0).toString());
// Check derived model
- RawRankProfile rawParent = new RawRankProfile(parent, new QueryProfileRegistry(), new ImportedMlModels(), attributeFields);
+ RawRankProfile rawParent = new RawRankProfile(parent, new LargeRankExpressions(new MockFileRegistry()), new QueryProfileRegistry(), new ImportedMlModels(), attributeFields, new TestProperties());
assertEquals("(query(a), 1500)", rawParent.configProperties().get(0).toString());
}
@@ -66,9 +68,11 @@ public class RankPropertiesTestCase extends SchemaTestCase {
// Check derived model
RawRankProfile rawChild = new RawRankProfile(rankProfileRegistry.get(search, "child"),
+ new LargeRankExpressions(new MockFileRegistry()),
new QueryProfileRegistry(),
new ImportedMlModels(),
- attributeFields);
+ attributeFields,
+ new TestProperties());
assertEquals("(query(a), 2000)", rawChild.configProperties().get(0).toString());
}
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/RankingConstantTest.java b/config-model/src/test/java/com/yahoo/searchdefinition/RankingConstantTest.java
index 4297b8697b4..eb71e73be60 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/RankingConstantTest.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/RankingConstantTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionConstantsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionConstantsTestCase.java
index abf27ef643e..9af026e164d 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionConstantsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionConstantsTestCase.java
@@ -1,7 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.collections.Pair;
+import com.yahoo.config.model.application.provider.MockFileRegistry;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.search.query.profile.QueryProfileRegistry;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
import com.yahoo.yolean.Exceptions;
@@ -77,9 +79,11 @@ public class RankingExpressionConstantsTestCase extends SchemaTestCase {
assertEquals("16.6", child2.getFirstPhaseRanking().getRoot().toString());
assertEquals("foo: 14.0", child2.getFunctions().get("foo").function().getBody().toString());
List<Pair<String, String>> rankProperties = new RawRankProfile(child2,
- queryProfileRegistry,
- new ImportedMlModels(),
- new AttributeFields(s)).configProperties();
+ new LargeRankExpressions(new MockFileRegistry()),
+ queryProfileRegistry,
+ new ImportedMlModels(),
+ new AttributeFields(s),
+ new TestProperties()).configProperties();
assertEquals("(rankingExpression(foo).rankingScript, 14.0)", rankProperties.get(0).toString());
assertEquals("(rankingExpression(firstphase).rankingScript, 16.6)", rankProperties.get(2).toString());
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionInliningTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionInliningTestCase.java
index e0679eb5175..fdc08130375 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionInliningTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionInliningTestCase.java
@@ -1,7 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.collections.Pair;
+import com.yahoo.config.application.api.DeployLogger;
+import com.yahoo.config.model.application.provider.MockFileRegistry;
+import com.yahoo.config.model.deploy.TestProperties;
+import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.searchdefinition.derived.AttributeFields;
import com.yahoo.searchdefinition.derived.RawRankProfile;
@@ -9,7 +13,9 @@ import com.yahoo.searchdefinition.parser.ParseException;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
import org.junit.Test;
+import java.util.ArrayList;
import java.util.Optional;
+import java.util.logging.Level;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -24,7 +30,7 @@ public class RankingExpressionInliningTestCase extends SchemaTestCase {
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
SearchBuilder builder = new SearchBuilder(rankProfileRegistry);
builder.importString(
- "search test {\n" +
+ "search test {\n" +
" document test { \n" +
" field a type double { \n" +
" indexing: attribute \n" +
@@ -184,6 +190,39 @@ public class RankingExpressionInliningTestCase extends SchemaTestCase {
assertEquals("attribute(b) + 1", getRankingExpression("D", test, s));
}
+ @Test
+ public void testFunctionInliningWithReplacement() throws ParseException {
+ RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
+ MockDeployLogger deployLogger = new MockDeployLogger();
+ SearchBuilder builder = new SearchBuilder(MockApplicationPackage.createEmpty(),
+ new MockFileRegistry(),
+ deployLogger,
+ new TestProperties(),
+ rankProfileRegistry,
+ new QueryProfileRegistry());
+ builder.importString(
+ "search test {\n" +
+ " document test { }\n" +
+ " rank-profile test {\n" +
+ " first-phase {\n" +
+ " expression: foo\n" +
+ " }\n" +
+ " function foo(x) {\n" +
+ " expression: x + x\n" +
+ " }\n" +
+ " function inline foo() {\n" + // replaces previous "foo" during parsing
+ " expression: foo(2)\n" +
+ " }\n" +
+ " }\n" +
+ "}\n");
+ builder.build();
+ Search s = builder.getSearch();
+ RankProfile test = rankProfileRegistry.get(s, "test").compile(new QueryProfileRegistry(), new ImportedMlModels());
+ assertEquals("foo(2)", test.getFirstPhaseRanking().getRoot().toString());
+ assertTrue("Does not contain expected warning", deployLogger.contains("Function 'foo' replaces " +
+ "a previous function with the same name in rank profile 'test'"));
+ }
+
/**
* Expression evaluation has no stack so function arguments are bound at config time creating a separate version of
* each function for each binding, using hashes to name the bound variants of the function.
@@ -209,7 +248,7 @@ public class RankingExpressionInliningTestCase extends SchemaTestCase {
private String getRankingExpression(String name, RankProfile rankProfile, Search search) {
Optional<String> rankExpression =
- new RawRankProfile(rankProfile, new QueryProfileRegistry(), new ImportedMlModels(), new AttributeFields(search))
+ new RawRankProfile(rankProfile, new LargeRankExpressions(new MockFileRegistry()), new QueryProfileRegistry(), new ImportedMlModels(), new AttributeFields(search), new TestProperties())
.configProperties()
.stream()
.filter(r -> r.getFirst().equals("rankingExpression(" + name + ").rankingScript"))
@@ -219,4 +258,17 @@ public class RankingExpressionInliningTestCase extends SchemaTestCase {
return censorBindingHash(rankExpression.get());
}
+ private static class MockDeployLogger implements DeployLogger {
+ private final ArrayList<String> msgs = new ArrayList<>();
+
+ @Override
+ public void log(Level level, String message) {
+ msgs.add(message);
+ }
+
+ public boolean contains(String expected) {
+ return msgs.stream().anyMatch(msg -> msg.equals(expected));
+ }
+ }
+
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionLoopDetectionTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionLoopDetectionTestCase.java
index 78484d0c889..6b39d046600 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionLoopDetectionTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionLoopDetectionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionShadowingTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionShadowingTestCase.java
index d665b7f20f0..f84f3d8c83f 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionShadowingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionShadowingTestCase.java
@@ -1,7 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.collections.Pair;
+import com.yahoo.config.model.application.provider.MockFileRegistry;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.search.query.profile.QueryProfile;
import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.search.query.profile.types.FieldDescription;
@@ -46,10 +48,7 @@ public class RankingExpressionShadowingTestCase extends SchemaTestCase {
builder.build();
Search s = builder.getSearch();
RankProfile test = rankProfileRegistry.get(s, "test").compile(new QueryProfileRegistry(), new ImportedMlModels());
- List<Pair<String, String>> testRankProperties = new RawRankProfile(test,
- new QueryProfileRegistry(),
- new ImportedMlModels(),
- new AttributeFields(s)).configProperties();
+ List<Pair<String, String>> testRankProperties = createRawRankProfile(test, new QueryProfileRegistry(), s).configProperties();
assertEquals("(rankingExpression(sin@).rankingScript, 2 * 2)",
censorBindingHash(testRankProperties.get(0).toString()));
assertEquals("(rankingExpression(sin).rankingScript, x * x)",
@@ -90,10 +89,7 @@ public class RankingExpressionShadowingTestCase extends SchemaTestCase {
builder.build();
Search s = builder.getSearch();
RankProfile test = rankProfileRegistry.get(s, "test").compile(new QueryProfileRegistry(), new ImportedMlModels());
- List<Pair<String, String>> testRankProperties = new RawRankProfile(test,
- new QueryProfileRegistry(),
- new ImportedMlModels(),
- new AttributeFields(s)).configProperties();
+ List<Pair<String, String>> testRankProperties = createRawRankProfile(test, new QueryProfileRegistry(), s).configProperties();
assertEquals("(rankingExpression(tan@).rankingScript, 2 * 2)",
censorBindingHash(testRankProperties.get(0).toString()));
assertEquals("(rankingExpression(cos@).rankingScript, rankingExpression(tan@))",
@@ -139,10 +135,7 @@ public class RankingExpressionShadowingTestCase extends SchemaTestCase {
builder.build();
Search s = builder.getSearch();
RankProfile test = rankProfileRegistry.get(s, "test").compile(new QueryProfileRegistry(), new ImportedMlModels());
- List<Pair<String, String>> testRankProperties = new RawRankProfile(test,
- new QueryProfileRegistry(),
- new ImportedMlModels(),
- new AttributeFields(s)).configProperties();
+ List<Pair<String, String>> testRankProperties = createRawRankProfile(test, new QueryProfileRegistry(), s).configProperties();
assertEquals("(rankingExpression(sin@).rankingScript, 4.0 * 4.0)",
censorBindingHash(testRankProperties.get(0).toString()));
assertEquals("(rankingExpression(sin@).rankingScript, cos(5.0) * cos(5.0))",
@@ -203,10 +196,7 @@ public class RankingExpressionShadowingTestCase extends SchemaTestCase {
builder.build();
Search s = builder.getSearch();
RankProfile test = rankProfileRegistry.get(s, "test").compile(queryProfiles, new ImportedMlModels());
- List<Pair<String, String>> testRankProperties = new RawRankProfile(test,
- queryProfiles,
- new ImportedMlModels(),
- new AttributeFields(s)).configProperties();
+ List<Pair<String, String>> testRankProperties = createRawRankProfile(test, queryProfiles, s).configProperties();
assertEquals("(rankingExpression(autogenerated_ranking_feature@).rankingScript, reduce(query(q) * constant(W_hidden), sum, input) + constant(b_input))",
censorBindingHash(testRankProperties.get(0).toString()));
assertEquals("(rankingExpression(relu@).rankingScript, max(1.0,rankingExpression(autogenerated_ranking_feature@)))",
@@ -223,6 +213,15 @@ public class RankingExpressionShadowingTestCase extends SchemaTestCase {
testRankProperties.get(8).toString());
}
+ private static RawRankProfile createRawRankProfile(RankProfile profile, QueryProfileRegistry queryProfiles, Search search) {
+ return new RawRankProfile(profile,
+ new LargeRankExpressions(new MockFileRegistry()),
+ queryProfiles,
+ new ImportedMlModels(),
+ new AttributeFields(search),
+ new TestProperties());
+ }
+
private QueryProfileRegistry queryProfileWith(String field, String type) {
QueryProfileType queryProfileType = new QueryProfileType("root");
queryProfileType.addField(new FieldDescription(field, type));
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionValidationTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionValidationTestCase.java
index c1fe5e42dfa..66e773cf3f8 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionValidationTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionValidationTestCase.java
@@ -1,12 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
-import com.yahoo.config.model.application.provider.BaseDeployLogger;
-import com.yahoo.config.model.deploy.TestProperties;
-import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.searchdefinition.derived.DerivedConfiguration;
import com.yahoo.searchdefinition.parser.ParseException;
-import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
import com.yahoo.yolean.Exceptions;
import org.junit.Test;
@@ -27,7 +23,7 @@ public class RankingExpressionValidationTestCase extends SchemaTestCase {
try {
RankProfileRegistry registry = new RankProfileRegistry();
Search search = importWithExpression(expression, registry);
- new DerivedConfiguration(search, new BaseDeployLogger(), new TestProperties(), registry, new QueryProfileRegistry(), new ImportedMlModels()); // cause rank profile parsing
+ new DerivedConfiguration(search, registry); // cause rank profile parsing
fail("No exception on incorrect ranking expression " + expression);
} catch (IllegalArgumentException e) {
// Success
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/ReservedWordsAsFieldNamesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/ReservedWordsAsFieldNamesTestCase.java
index 1a939d71937..9bb588a690b 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/ReservedWordsAsFieldNamesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/ReservedWordsAsFieldNamesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/SDDocumentTypeOrdererTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/SDDocumentTypeOrdererTestCase.java
index 60b185d08e2..c7ec2d9e9d1 100755
--- a/config-model/src/test/java/com/yahoo/searchdefinition/SDDocumentTypeOrdererTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/SDDocumentTypeOrdererTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/SchemaParsingTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/SchemaParsingTestCase.java
index 0ae39b7f8b6..3a6dd00bc0e 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/SchemaParsingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/SchemaParsingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import java.io.IOException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/SchemaTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/SchemaTestCase.java
index 2e0fc3b4f98..c9371160ea5 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/SchemaTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/SchemaTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.io.IOUtils;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/SearchImporterTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/SearchImporterTestCase.java
index 018703153ac..990fe8cb3d0 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/SearchImporterTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/SearchImporterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/StemmingSettingTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/StemmingSettingTestCase.java
index e5b8ec85d75..e11efeac31c 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/StemmingSettingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/StemmingSettingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.searchdefinition.document.SDField;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/StructTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/StructTestCase.java
index 77df5b391dc..9fd5df5e028 100755
--- a/config-model/src/test/java/com/yahoo/searchdefinition/StructTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/StructTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.document.DocumenttypesConfig;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/UrlFieldValidationTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/UrlFieldValidationTestCase.java
index 4e19955999d..be2b048f211 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/UrlFieldValidationTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/UrlFieldValidationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/AbstractExportingTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/AbstractExportingTestCase.java
index 1a43b4d81e5..5d0e69f9ac4 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/AbstractExportingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/AbstractExportingTestCase.java
@@ -1,7 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
+import com.yahoo.concurrent.InThreadExecutorService;
import com.yahoo.config.application.api.DeployLogger;
+import com.yahoo.config.model.application.provider.MockFileRegistry;
import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.document.DocumenttypesConfig;
import com.yahoo.document.config.DocumentmanagerConfig;
@@ -34,7 +36,7 @@ public abstract class AbstractExportingTestCase extends SchemaTestCase {
toDir.mkdirs();
deleteContent(toDir);
- SearchBuilder builder = SearchBuilder.createFromDirectory(searchDefRoot + dirName + "/", logger, properties);
+ SearchBuilder builder = SearchBuilder.createFromDirectory(searchDefRoot + dirName + "/", new MockFileRegistry(), logger, properties);
return derive(dirName, searchDefinitionName, properties, builder, logger);
}
@@ -48,15 +50,14 @@ public abstract class AbstractExportingTestCase extends SchemaTestCase {
properties,
builder.getRankProfileRegistry(),
builder.getQueryProfileRegistry(),
- new ImportedMlModels());
+ new ImportedMlModels(), new InThreadExecutorService());
return export(dirName, builder, config);
}
DerivedConfiguration derive(String dirName, SearchBuilder builder, Search search) throws IOException {
DerivedConfiguration config = new DerivedConfiguration(search,
builder.getRankProfileRegistry(),
- builder.getQueryProfileRegistry(),
- new ImportedMlModels());
+ builder.getQueryProfileRegistry());
return export(dirName, builder, config);
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/AnnotationsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/AnnotationsTestCase.java
index 0c9676a593e..b9f471f4cc7 100755
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/AnnotationsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/AnnotationsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/ArraysTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/ArraysTestCase.java
index 9ee28f0ad59..c2bd86ba5f7 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/ArraysTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/ArraysTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributeListTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributeListTestCase.java
index 80a92a5b5ec..c36a682fbd8 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributeListTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributeListTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.Search;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributesTestCase.java
index 2483d249125..2b345bdb158 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/CasingTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/CasingTestCase.java
index 07762fc6937..554a78c36ef 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/CasingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/CasingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.Search;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/CombinedAttributeAndIndexSearchTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/CombinedAttributeAndIndexSearchTestCase.java
index b3ff8aa61e7..dcf6a84fd2e 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/CombinedAttributeAndIndexSearchTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/CombinedAttributeAndIndexSearchTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/DeriverTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/DeriverTestCase.java
index 8b09a4efd57..5638aeb92c0 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/DeriverTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/DeriverTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.document.DataType;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/EmptyRankProfileTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/EmptyRankProfileTestCase.java
index 139dae65c63..8778a177b81 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/EmptyRankProfileTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/EmptyRankProfileTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.document.DataType;
@@ -9,7 +9,6 @@ import com.yahoo.searchdefinition.SearchBuilder;
import com.yahoo.searchdefinition.SchemaTestCase;
import com.yahoo.searchdefinition.document.SDDocumentType;
import com.yahoo.searchdefinition.document.SDField;
-import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
import org.junit.Test;
/**
@@ -32,7 +31,7 @@ public class EmptyRankProfileTestCase extends SchemaTestCase {
doc.addField(new SDField("c", DataType.STRING));
search = SearchBuilder.buildFromRawSearch(search, rankProfileRegistry, new QueryProfileRegistry());
- new DerivedConfiguration(search, rankProfileRegistry, new QueryProfileRegistry(), new ImportedMlModels());
+ new DerivedConfiguration(search, rankProfileRegistry);
}
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/ExactMatchTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/ExactMatchTestCase.java
index 1d533778490..45e65bb90f9 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/ExactMatchTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/ExactMatchTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/ExportingTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/ExportingTestCase.java
index 370315ad08b..867b88019d5 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/ExportingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/ExportingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.config.model.deploy.TestProperties;
@@ -105,7 +105,7 @@ public class ExportingTestCase extends AbstractExportingTestCase {
@Test
public void testRankExpression() throws IOException, ParseException {
assertCorrectDeriving("rankexpression", null,
- new TestProperties().useExternalRankExpression(true), new TestableDeployLogger());
+ new TestProperties().largeRankExpressionLimit(1024), new TestableDeployLogger());
}
@Test
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/ExpressionsAsArgsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/ExpressionsAsArgsTestCase.java
index 9a5c30f773e..733786e2c71 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/ExpressionsAsArgsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/ExpressionsAsArgsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/GeminiTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/GeminiTestCase.java
index 992e52a9e5b..07e6fbf7b1b 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/GeminiTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/GeminiTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.collections.Pair;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/IdTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/IdTestCase.java
index b2cac8cd4c2..1c63b8c462e 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/IdTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/IdTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/ImportedFieldsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/ImportedFieldsTestCase.java
index f61143833c9..34354612d04 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/ImportedFieldsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/ImportedFieldsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/IndexSchemaTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/IndexSchemaTestCase.java
index bff9945e4ad..17f85840af8 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/IndexSchemaTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/IndexSchemaTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.document.DataType;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/InheritanceTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/InheritanceTestCase.java
index c0a8a47e4ee..a07eb1015a1 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/InheritanceTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/InheritanceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.document.DataType;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/IntegerAttributeToStringIndexTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/IntegerAttributeToStringIndexTestCase.java
index 07902430f00..0980f766579 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/IntegerAttributeToStringIndexTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/IntegerAttributeToStringIndexTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/LiteralBoostTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/LiteralBoostTestCase.java
index 2e36319bd8c..070d7ff5337 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/LiteralBoostTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/LiteralBoostTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
@@ -11,7 +11,6 @@ import com.yahoo.searchdefinition.SearchBuilder;
import com.yahoo.searchdefinition.document.SDDocumentType;
import com.yahoo.searchdefinition.document.SDField;
import com.yahoo.searchdefinition.processing.Processing;
-import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
import com.yahoo.vespa.model.container.search.QueryProfiles;
import org.junit.Test;
@@ -37,12 +36,12 @@ public class LiteralBoostTestCase extends AbstractExportingTestCase {
SDField field1= document.addField("a", DataType.STRING);
field1.parseIndexingScript("{ index }");
field1.setLiteralBoost(20);
- RankProfile other=new RankProfile("other", search, rankProfileRegistry);
+ RankProfile other=new RankProfile("other", search, rankProfileRegistry, search.rankingConstants());
rankProfileRegistry.add(other);
other.addRankSetting(new RankProfile.RankSetting("a", RankProfile.RankSetting.Type.LITERALBOOST, 333));
new Processing().process(search, new BaseDeployLogger(), rankProfileRegistry, new QueryProfiles(), true, false);
- DerivedConfiguration derived=new DerivedConfiguration(search, rankProfileRegistry, new QueryProfileRegistry(), new ImportedMlModels());
+ DerivedConfiguration derived=new DerivedConfiguration(search, rankProfileRegistry);
// Check attribute fields
derived.getAttributeFields(); // TODO: assert content
@@ -68,12 +67,12 @@ public class LiteralBoostTestCase extends AbstractExportingTestCase {
search.addDocument(document);
SDField field1= document.addField("a", DataType.STRING);
field1.parseIndexingScript("{ index }");
- RankProfile other=new RankProfile("other", search, rankProfileRegistry);
+ RankProfile other=new RankProfile("other", search, rankProfileRegistry, search.rankingConstants());
rankProfileRegistry.add(other);
other.addRankSetting(new RankProfile.RankSetting("a", RankProfile.RankSetting.Type.LITERALBOOST, 333));
search = SearchBuilder.buildFromRawSearch(search, rankProfileRegistry, new QueryProfileRegistry());
- DerivedConfiguration derived = new DerivedConfiguration(search, rankProfileRegistry, new QueryProfileRegistry(),new ImportedMlModels());
+ DerivedConfiguration derived = new DerivedConfiguration(search, rankProfileRegistry);
// Check il script addition
assertIndexing(Arrays.asList("clear_state | guard { input a | tokenize normalize stem:\"BEST\" | index a; }",
@@ -100,7 +99,7 @@ public class LiteralBoostTestCase extends AbstractExportingTestCase {
field2.setLiteralBoost(20);
search = SearchBuilder.buildFromRawSearch(search, rankProfileRegistry, new QueryProfileRegistry());
- new DerivedConfiguration(search, rankProfileRegistry, new QueryProfileRegistry(), new ImportedMlModels());
+ new DerivedConfiguration(search, rankProfileRegistry);
assertIndexing(Arrays.asList("clear_state | guard { input title | tokenize normalize stem:\"BEST\" | summary title | index title; }",
"clear_state | guard { input body | tokenize normalize stem:\"BEST\" | summary body | index body; }",
"clear_state | guard { input title | tokenize | index title_literal; }",
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/LowercaseTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/LowercaseTestCase.java
index 253bb2f4f00..5427c6a19e7 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/LowercaseTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/LowercaseTestCase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/MailTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/MailTestCase.java
index 5e45102a626..198013b73c0 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/MailTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/MailTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.SearchBuilder;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/MultipleSummariesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/MultipleSummariesTestCase.java
index 28ab2624852..51135ae1cb2 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/MultipleSummariesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/MultipleSummariesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/NameCollisionTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/NameCollisionTestCase.java
index fda9e6327ce..35593be4843 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/NameCollisionTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/NameCollisionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/NativeRankTypeDefinitionsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/NativeRankTypeDefinitionsTestCase.java
index 69c247b94d4..3b16ff0221e 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/NativeRankTypeDefinitionsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/NativeRankTypeDefinitionsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.SchemaTestCase;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/NuwaTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/NuwaTestCase.java
index f852b8444ab..75b8d3bf584 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/NuwaTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/NuwaTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/OrderIlscriptsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/OrderIlscriptsTestCase.java
index 428522d3e05..1bb8083e7b2 100755
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/OrderIlscriptsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/OrderIlscriptsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/PrefixExactAttributeTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/PrefixExactAttributeTestCase.java
index 64f7f644447..0b571d11917 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/PrefixExactAttributeTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/PrefixExactAttributeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/RankProfilesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/RankProfilesTestCase.java
index d0712aaeb4d..3a900e0840a 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/RankProfilesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/RankProfilesTestCase.java
@@ -1,6 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.searchdefinition.parser.ParseException;
import org.junit.Test;
@@ -14,6 +15,6 @@ import java.io.IOException;
public class RankProfilesTestCase extends AbstractExportingTestCase {
@Test
public void testRankProfiles() throws IOException, ParseException {
- assertCorrectDeriving("rankprofiles");
+ assertCorrectDeriving("rankprofiles", null, new TestProperties(), new TestableDeployLogger());
}
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/RankPropertiesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/RankPropertiesTestCase.java
index 63f94f50d12..86ccb816c10 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/RankPropertiesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/RankPropertiesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/ReferenceFieldsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/ReferenceFieldsTestCase.java
index 1f1c905e0bf..086a69a8b20 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/ReferenceFieldsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/ReferenceFieldsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SearchOrdererTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SearchOrdererTestCase.java
index f72f67f3711..00fc07de221 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SearchOrdererTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SearchOrdererTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.document.ReferenceDataType;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SimpleInheritTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SimpleInheritTestCase.java
index 83e11c365f8..08d888aba0b 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SimpleInheritTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SimpleInheritTestCase.java
@@ -1,11 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
-import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.searchdefinition.Search;
import com.yahoo.searchdefinition.SearchBuilder;
import com.yahoo.searchdefinition.parser.ParseException;
-import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
import org.junit.Test;
import java.io.File;
@@ -33,10 +31,7 @@ public class SimpleInheritTestCase extends AbstractExportingTestCase {
toDir.mkdirs();
deleteContent(toDir);
- DerivedConfiguration config = new DerivedConfiguration(search,
- builder.getRankProfileRegistry(),
- new QueryProfileRegistry(),
- new ImportedMlModels());
+ DerivedConfiguration config = new DerivedConfiguration(search, builder.getRankProfileRegistry());
config.export(toDirName);
checkDir(toDirName, expectedResultsDirName);
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SortingTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SortingTestCase.java
index 053f87abd84..7989bff3152 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SortingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SortingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/StreamingStructTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/StreamingStructTestCase.java
index a689b3121b5..f9bd3033e14 100755
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/StreamingStructTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/StreamingStructTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/StructAnyOrderTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/StructAnyOrderTestCase.java
index 2dffedac0e7..3338f6cf87d 100755
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/StructAnyOrderTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/StructAnyOrderTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java
index 24d694cd442..adc8b82f5fe 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryMapTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.*;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryTestCase.java
index ef7da4f23d0..e92f81052de 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/TestableDeployLogger.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/TestableDeployLogger.java
index a23c8024872..52d57bd0468 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/TestableDeployLogger.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/TestableDeployLogger.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/TwoStreamingStructsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/TwoStreamingStructsTestCase.java
index a70877a4f4f..8249245cebe 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/TwoStreamingStructsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/TwoStreamingStructsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.SearchBuilder;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/TypeConversionTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/TypeConversionTestCase.java
index 364eb9dc014..2b65361e922 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/TypeConversionTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/TypeConversionTestCase.java
@@ -1,16 +1,14 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
import com.yahoo.document.DataType;
-import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.searchdefinition.RankProfileRegistry;
import com.yahoo.searchdefinition.Search;
import com.yahoo.searchdefinition.SchemaTestCase;
import com.yahoo.searchdefinition.document.SDDocumentType;
import com.yahoo.searchdefinition.document.SDField;
import com.yahoo.searchdefinition.processing.Processing;
-import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
import com.yahoo.vespa.model.container.search.QueryProfiles;
import org.junit.Test;
@@ -34,7 +32,7 @@ public class TypeConversionTestCase extends SchemaTestCase {
document.addField(a);
new Processing().process(search, new BaseDeployLogger(), rankProfileRegistry, new QueryProfiles(), true, false);
- DerivedConfiguration derived = new DerivedConfiguration(search, rankProfileRegistry, new QueryProfileRegistry(), new ImportedMlModels());
+ DerivedConfiguration derived = new DerivedConfiguration(search, rankProfileRegistry);
IndexInfo indexInfo = derived.getIndexInfo();
assertFalse(indexInfo.hasCommand("default", "compact-to-term"));
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/TypesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/TypesTestCase.java
index ed238239b82..cee6d4f95c8 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/TypesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/TypesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/VsmFieldsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/VsmFieldsTestCase.java
index e59f221d2a3..32c22b583d6 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/VsmFieldsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/VsmFieldsTestCase.java
@@ -1,6 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.derived;
+import com.yahoo.config.model.application.provider.MockFileRegistry;
import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.document.ReferenceDataType;
@@ -21,7 +22,7 @@ public class VsmFieldsTestCase {
@Test
public void reference_type_field_is_unsearchable() {
- Search search = new Search("test", MockApplicationPackage.createEmpty(), new TestableDeployLogger(), new TestProperties());
+ Search search = new Search("test", MockApplicationPackage.createEmpty(), new MockFileRegistry(), new TestableDeployLogger(), new TestProperties());
search.addDocument(new SDDocumentType("test"));
SDField refField = new TemporarySDField("ref_field", ReferenceDataType.createWithInferredId(TemporaryStructuredDataType.create("parent_type")));
refField.parseIndexingScript("{ summary }");
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtilsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtilsTestCase.java
index a9f04aa980f..a91911f6fef 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtilsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtilsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
import com.yahoo.searchdefinition.Search;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/document/HnswIndexParamsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/document/HnswIndexParamsTestCase.java
index 31f12e77e4a..7b46e9899e2 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/document/HnswIndexParamsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/document/HnswIndexParamsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.document;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFieldsTest.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFieldsTest.java
index 1f267334d28..c82d39e084f 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFieldsTest.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFieldsTest.java
@@ -1,6 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
+import com.yahoo.config.model.application.provider.MockFileRegistry;
import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.document.DataType;
@@ -45,15 +46,19 @@ public class AddAttributeTransformToSummaryOfImportedFieldsTest {
assertEquals(SummaryTransform.ATTRIBUTE, actualTransform);
}
+ private static Search createSearch(String documentType) {
+ return new Search(documentType, MockApplicationPackage.createEmpty(), new MockFileRegistry(), new TestableDeployLogger(), new TestProperties());
+ }
+
private static Search createSearchWithDocument(String documentName) {
- Search search = new Search(documentName, MockApplicationPackage.createEmpty(), new TestableDeployLogger(), new TestProperties());
+ Search search = createSearch(documentName);
SDDocumentType document = new SDDocumentType(documentName, search);
search.addDocument(document);
return search;
}
private static ImportedFields createSingleImportedField(String fieldName) {
- Search targetSearch = new Search("target_doc", MockApplicationPackage.createEmpty(), new TestableDeployLogger(), new TestProperties());
+ Search targetSearch = createSearch("target_doc");
SDField targetField = new SDField("target_field", DataType.INT);
DocumentReference documentReference = new DocumentReference(new Field("reference_field"), targetSearch);
ImportedField importedField = new ImportedSimpleField(fieldName, documentReference, targetField);
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/AdjustPositionSummaryFieldsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/AdjustPositionSummaryFieldsTestCase.java
index 49fa63313ca..47e74185902 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/AdjustPositionSummaryFieldsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/AdjustPositionSummaryFieldsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.document.DataType;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/AssertIndexingScript.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/AssertIndexingScript.java
index aafa53261ba..c9f9e8c50f9 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/AssertIndexingScript.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/AssertIndexingScript.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.Search;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/AssertSearchBuilder.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/AssertSearchBuilder.java
index 4ae3fe37d9a..d32dd961a85 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/AssertSearchBuilder.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/AssertSearchBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.SearchBuilder;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/AttributesExactMatchTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/AttributesExactMatchTestCase.java
index 35ce4dff730..7f72cc96ccf 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/AttributesExactMatchTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/AttributesExactMatchTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.Search;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/BoldingTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/BoldingTestCase.java
index 5589ad018a7..288987e0f2f 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/BoldingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/BoldingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.SearchBuilder;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/BoolAttributeValidatorTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/BoolAttributeValidatorTestCase.java
new file mode 100644
index 00000000000..a50af793bc4
--- /dev/null
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/BoolAttributeValidatorTestCase.java
@@ -0,0 +1,49 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.searchdefinition.processing;
+
+import com.yahoo.searchdefinition.parser.ParseException;
+import org.junit.Test;
+
+import static com.yahoo.searchdefinition.SearchBuilder.createFromString;
+import static com.yahoo.config.model.test.TestUtil.joinLines;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+/**
+ * @author geirst
+ */
+public class BoolAttributeValidatorTestCase {
+
+ @Test
+ public void array_of_bool_attribute_is_not_supported() throws ParseException {
+ try {
+ createFromString(getSd("field b type array<bool> { indexing: attribute }"));
+ fail("Expected exception");
+ }
+ catch (IllegalArgumentException e) {
+ assertEquals("For search 'test', field 'b': Only single value bool attribute fields are supported",
+ e.getMessage());
+ }
+ }
+
+ @Test
+ public void weigtedset_of_bool_attribute_is_not_supported() throws ParseException {
+ try {
+ createFromString(getSd("field b type weightedset<bool> { indexing: attribute }"));
+ fail("Expected exception");
+ }
+ catch (IllegalArgumentException e) {
+ assertEquals("For search 'test', field 'b': Only single value bool attribute fields are supported",
+ e.getMessage());
+ }
+ }
+
+ private String getSd(String field) {
+ return joinLines("search test {",
+ " document test {",
+ " " + field,
+ " }",
+ "}");
+ }
+
+}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/DictionaryTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/DictionaryTestCase.java
index df0d58d3c8a..db87ae698b4 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/DictionaryTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/DictionaryTestCase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/DisallowComplexMapAndWsetKeyTypesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/DisallowComplexMapAndWsetKeyTypesTestCase.java
index 675e04191f8..dc6f9b0d6db 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/DisallowComplexMapAndWsetKeyTypesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/DisallowComplexMapAndWsetKeyTypesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.RankProfileRegistry;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/FastAccessValidatorTest.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/FastAccessValidatorTest.java
index 71277f136f8..c889a8ccd34 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/FastAccessValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/FastAccessValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.model.test.TestUtil;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSearchFieldsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSearchFieldsTestCase.java
index 809ccdb3a3a..5ef2f2842e1 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSearchFieldsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSearchFieldsTestCase.java
@@ -1,16 +1,12 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
-import com.yahoo.config.model.application.provider.BaseDeployLogger;
-import com.yahoo.config.model.deploy.TestProperties;
-import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.searchdefinition.Search;
import com.yahoo.searchdefinition.SearchBuilder;
import com.yahoo.searchdefinition.SchemaTestCase;
import com.yahoo.searchdefinition.derived.DerivedConfiguration;
import com.yahoo.searchdefinition.document.SDDocumentType;
import com.yahoo.searchdefinition.parser.ParseException;
-import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
import org.junit.Test;
import java.io.IOException;
@@ -90,7 +86,7 @@ public class ImplicitSearchFieldsTestCase extends SchemaTestCase {
sb.importFile("src/test/examples/nextgen/simple.sd");
sb.build();
assertNotNull(sb.getSearch());
- new DerivedConfiguration(sb.getSearch(), new BaseDeployLogger(), new TestProperties(), sb.getRankProfileRegistry(), new QueryProfileRegistry(), new ImportedMlModels());
+ new DerivedConfiguration(sb.getSearch(), sb.getRankProfileRegistry());
}
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitStructTypesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitStructTypesTestCase.java
index c9ea57c5b9b..fb0f1bc2ba2 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitStructTypesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitStructTypesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.document.*;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummariesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummariesTestCase.java
index 6bed57e6ec8..d45d366ee0a 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummariesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummariesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.Search;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummaryFieldsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummaryFieldsTestCase.java
index ae00e4f3079..b7707f2a517 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummaryFieldsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummaryFieldsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.Search;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolverTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolverTestCase.java
index b7db9134b88..3aeba7cd265 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolverTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolverTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.document.DataType;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsTestCase.java
index 8ace11a3c73..65010d96ec0 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsTestCase.java
@@ -1,8 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.Search;
import com.yahoo.searchdefinition.SearchBuilder;
+import com.yahoo.searchdefinition.derived.AttributeFields;
import com.yahoo.searchdefinition.document.ImportedComplexField;
import com.yahoo.searchdefinition.document.ImportedField;
import com.yahoo.searchdefinition.parser.ParseException;
@@ -14,6 +15,7 @@ import static org.junit.Assert.assertEquals;
import static com.yahoo.config.model.test.TestUtil.joinLines;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
/**
* @author geirst
@@ -459,4 +461,66 @@ public class ImportedFieldsTestCase {
assertSearchNotContainsImportedField(fieldName, search);
}
}
-}
+
+ @Test
+ public void field_with_struct_field_attributes_can_be_imported_from_parents_that_use_inheritance() throws ParseException {
+ var builder = buildParentsUsingInheritance();
+
+ assertParentContainsEntriesAttributes(builder.getSearch("parent_a"));
+ assertParentContainsEntriesAttributes(builder.getSearch("parent_b"));
+
+ var child = builder.getSearch("child");
+ checkImportedField("entries_from_a", "ref_parent_a", "parent_a", "entries", child, true);
+ checkImportedField("entries_from_a.key", "ref_parent_a", "parent_a", "entries.key", child, true);
+ checkImportedField("entries_from_a.value", "ref_parent_a", "parent_a", "entries.value", child, true);
+
+ checkImportedField("entries_from_b", "ref_parent_b", "parent_b", "entries", child, true);
+ checkImportedField("entries_from_b.key", "ref_parent_b", "parent_b", "entries.key", child, true);
+ checkImportedField("entries_from_b.value", "ref_parent_b", "parent_b", "entries.value", child, true);
+ }
+
+ private void assertParentContainsEntriesAttributes(Search parent) {
+ var attrs = new AttributeFields(parent);
+ assertTrue(attrs.containsAttribute("entries.key"));
+ assertTrue(attrs.containsAttribute("entries.value"));
+ }
+
+ private SearchBuilder buildParentsUsingInheritance() throws ParseException {
+ var builder = new SearchBuilder();
+ builder.importString(joinLines("schema parent_a {",
+ "document parent_a {",
+ " struct Entry {",
+ " field key type string {}",
+ " field value type string {}",
+ " }",
+ " field entries type array<Entry> {",
+ " indexing: summary",
+ " struct-field key { indexing: attribute }",
+ " struct-field value { indexing: attribute }",
+ " }",
+ "}",
+ "}"));
+
+ builder.importString(joinLines("schema parent_b {",
+ "document parent_b inherits parent_a {",
+ "}",
+ "}"));
+
+ builder.importString(joinLines("schema child {",
+ "document child {",
+ " field ref_parent_a type reference<parent_a> {",
+ " indexing: attribute",
+ " }",
+ " field ref_parent_b type reference<parent_b> {",
+ " indexing: attribute",
+ " }",
+ "}",
+ "import field ref_parent_a.entries as entries_from_a {}",
+ "import field ref_parent_b.entries as entries_from_b {}",
+ "}"));
+
+ builder.build();
+ return builder;
+ }
+
+ }
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingInputsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingInputsTestCase.java
index 582f5b08517..bb935fb8a90 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingInputsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingInputsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingOutputsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingOutputsTestCase.java
index 4a62eb92ba0..4d765127276 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingOutputsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingOutputsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingScriptRewriterTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingScriptRewriterTestCase.java
index 833dbc14a53..13581a1e9e6 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingScriptRewriterTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingScriptRewriterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingValidationTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingValidationTestCase.java
index 3eeac1ee710..15f2b179470 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingValidationTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingValidationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.SearchBuilder;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingValuesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingValuesTestCase.java
index 823ad556b1d..64089f6f5fa 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingValuesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/IndexingValuesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/IntegerIndex2AttributeTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/IntegerIndex2AttributeTestCase.java
index fcf1c39f5b4..91f719c4eb8 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/IntegerIndex2AttributeTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/IntegerIndex2AttributeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/MatchPhaseSettingsValidatorTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/MatchPhaseSettingsValidatorTestCase.java
index 799e0aef050..05d816ed716 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/MatchPhaseSettingsValidatorTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/MatchPhaseSettingsValidatorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import org.junit.Test;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/NGramTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/NGramTestCase.java
index 16883a835d8..8d8a19796ba 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/NGramTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/NGramTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.Search;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/PagedAttributeValidatorTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/PagedAttributeValidatorTestCase.java
new file mode 100644
index 00000000000..038bfc9ddbf
--- /dev/null
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/PagedAttributeValidatorTestCase.java
@@ -0,0 +1,50 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.searchdefinition.processing;
+
+import com.yahoo.searchdefinition.parser.ParseException;
+import org.junit.Test;
+
+import static com.yahoo.config.model.test.TestUtil.joinLines;
+import static com.yahoo.searchdefinition.SearchBuilder.createFromString;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+public class PagedAttributeValidatorTestCase {
+
+ @Test
+ public void dense_tensor_attribute_does_support_paged_setting() throws ParseException {
+ createFromString(getSd("tensor(x[2],y[2])"));
+ }
+
+ @Test
+ public void non_dense_tensor_attribute_does_not_support_paged_setting() throws ParseException {
+ assertPagedSettingNotSupported("tensor(x{},y[2])");
+ }
+
+ @Test
+ public void non_tensor_attribute_does_not_support_paged_setting() throws ParseException {
+ assertPagedSettingNotSupported("string");
+ }
+
+ private void assertPagedSettingNotSupported(String fieldType) throws ParseException {
+ try {
+ createFromString(getSd(fieldType));
+ fail("Expected exception");
+ } catch (IllegalArgumentException e) {
+ assertEquals("For search 'test', field 'foo': The 'paged' attribute setting is only supported for dense tensor types",
+ e.getMessage());
+ }
+ }
+
+ private String getSd(String type) {
+ return joinLines("search test {",
+ " document test {",
+ " field foo type " + type + "{",
+ " indexing: attribute",
+ " attribute: paged",
+ " }",
+ " }",
+ "}");
+ }
+
+}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ParentChildSearchModel.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ParentChildSearchModel.java
index 50a037d81c1..6366be84d8e 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ParentChildSearchModel.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ParentChildSearchModel.java
@@ -1,8 +1,9 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.google.common.collect.ImmutableMap;
import com.yahoo.config.application.api.ApplicationPackage;
+import com.yahoo.config.model.application.provider.MockFileRegistry;
import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.document.DataType;
@@ -31,7 +32,7 @@ public class ParentChildSearchModel {
}
protected Search createSearch(String name) {
- Search result = new Search(name, app, new TestableDeployLogger(), new TestProperties());
+ Search result = new Search(name, app, new MockFileRegistry(), new TestableDeployLogger(), new TestProperties());
result.addDocument(new SDDocumentType(name));
return result;
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/PositionTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/PositionTestCase.java
index 13c967c8355..bcec2bfacfa 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/PositionTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/PositionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.document.DataType;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankModifierTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankModifierTestCase.java
index 4ab56f809c9..dc7305f55c3 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankModifierTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankModifierTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.Search;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankProfileSearchFixture.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankProfileSearchFixture.java
index 56cc87cadc4..1b8160e0123 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankProfileSearchFixture.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankProfileSearchFixture.java
@@ -1,10 +1,11 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.google.common.collect.ImmutableList;
import com.yahoo.config.application.api.ApplicationPackage;
import ai.vespa.rankingexpression.importer.configmodelview.MlModelImporter;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
+import com.yahoo.config.model.application.provider.MockFileRegistry;
import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.path.Path;
@@ -23,6 +24,8 @@ import ai.vespa.rankingexpression.importer.xgboost.XGBoostImporter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
import static org.junit.Assert.assertEquals;
@@ -38,10 +41,11 @@ class RankProfileSearchFixture {
new OnnxImporter(),
new LightGBMImporter(),
new XGBoostImporter());
- private RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
+ private final RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
private final QueryProfileRegistry queryProfileRegistry;
- private Search search;
- private Map<String, RankProfile> compiledRankProfiles = new HashMap<>();
+ private final Search search;
+ private final Map<String, RankProfile> compiledRankProfiles = new HashMap<>();
+ private final ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
public RankProfileRegistry getRankProfileRegistry() {
return rankProfileRegistry;
@@ -64,7 +68,7 @@ class RankProfileSearchFixture {
String rankProfiles, String constant, String field)
throws ParseException {
this.queryProfileRegistry = queryProfileRegistry;
- SearchBuilder builder = new SearchBuilder(applicationpackage, new BaseDeployLogger(), new TestProperties(), rankProfileRegistry, queryProfileRegistry);
+ SearchBuilder builder = new SearchBuilder(applicationpackage, new MockFileRegistry(), new BaseDeployLogger(), new TestProperties(), rankProfileRegistry, queryProfileRegistry);
String sdContent = "search test {\n" +
" " + (constant != null ? constant : "") + "\n" +
" document test {\n" +
@@ -104,7 +108,7 @@ class RankProfileSearchFixture {
public RankProfile compileRankProfile(String rankProfile, Path applicationDir) {
RankProfile compiled = rankProfileRegistry.get(search, rankProfile)
.compile(queryProfileRegistry,
- new ImportedMlModels(applicationDir.toFile(), importers));
+ new ImportedMlModels(applicationDir.toFile(), executor, importers));
compiledRankProfiles.put(rankProfile, compiled);
return compiled;
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankPropertyVariablesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankPropertyVariablesTestCase.java
index 502fc4472bc..407a5877976 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankPropertyVariablesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankPropertyVariablesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionTypeResolverTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionTypeResolverTestCase.java
index e3d81be6743..8fa4c9952ff 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionTypeResolverTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionTypeResolverTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithOnnxModelTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithOnnxModelTestCase.java
index ab148130a7d..0beebf05f1c 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithOnnxModelTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithOnnxModelTestCase.java
@@ -1,11 +1,9 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.ApplicationPackage;
-import com.yahoo.config.model.api.ModelContext;
import com.yahoo.config.model.application.provider.FilesApplicationPackage;
import com.yahoo.config.model.deploy.DeployState;
-import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.io.IOUtils;
import com.yahoo.path.Path;
import com.yahoo.vespa.config.search.RankProfilesConfig;
@@ -17,6 +15,7 @@ import org.junit.After;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
public class RankingExpressionWithOnnxModelTestCase {
@@ -29,9 +28,9 @@ public class RankingExpressionWithOnnxModelTestCase {
@Test
public void testOnnxModelFeature() throws Exception {
- VespaModel model = loadModel(applicationDir, false);
+ VespaModel model = loadModel(applicationDir);
assertTransformedFeature(model);
- assertGeneratedConfig(model, false);
+ assertGeneratedConfig(model);
Path storedApplicationDir = applicationDir.append("copy");
try {
@@ -41,30 +40,29 @@ public class RankingExpressionWithOnnxModelTestCase {
IOUtils.copyDirectory(applicationDir.append(ApplicationPackage.MODELS_GENERATED_DIR).toFile(),
storedApplicationDir.append(ApplicationPackage.MODELS_GENERATED_DIR).toFile());
- VespaModel storedModel = loadModel(storedApplicationDir, true);
+ VespaModel storedModel = loadModel(storedApplicationDir);
assertTransformedFeature(storedModel);
- assertGeneratedConfig(storedModel, true);
+ assertGeneratedConfig(storedModel);
}
finally {
IOUtils.recursiveDeleteDir(storedApplicationDir.toFile());
}
}
- private VespaModel loadModel(Path path, boolean dryRunOnnx) throws Exception {
+ private VespaModel loadModel(Path path) throws Exception {
FilesApplicationPackage applicationPackage = FilesApplicationPackage.fromFile(path.toFile());
- ModelContext.Properties properties = new TestProperties().setDryRunOnnxOnSetup(dryRunOnnx);
- DeployState state = new DeployState.Builder().applicationPackage(applicationPackage).properties(properties).build();
+ DeployState state = new DeployState.Builder().applicationPackage(applicationPackage).build();
return new VespaModel(state);
}
- private void assertGeneratedConfig(VespaModel vespaModel, boolean expectDryRunOnnx) {
+ private void assertGeneratedConfig(VespaModel vespaModel) {
DocumentDatabase db = ((IndexedSearchCluster)vespaModel.getSearchClusters().get(0)).getDocumentDbs().get(0);
OnnxModelsConfig.Builder builder = new OnnxModelsConfig.Builder();
((OnnxModelsConfig.Producer) db).getConfig(builder);
OnnxModelsConfig config = new OnnxModelsConfig(builder);
assertEquals(6, config.model().size());
for (OnnxModelsConfig.Model model : config.model()) {
- assertEquals(expectDryRunOnnx, model.dry_run_on_setup());
+ assertTrue(model.dry_run_on_setup());
}
OnnxModelsConfig.Model model = config.model(0);
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithOnnxTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithOnnxTestCase.java
index a64b36b327d..452246cbf18 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithOnnxTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithOnnxTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.ApplicationFile;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithTensorTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithTensorTestCase.java
index 10ba6eff169..5d81081a60a 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithTensorTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithTensorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithTransformerTokensTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithTransformerTokensTestCase.java
index e285d796882..dcd7e2426c3 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithTransformerTokensTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithTransformerTokensTestCase.java
@@ -1,7 +1,8 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
+import com.yahoo.config.model.application.provider.MockFileRegistry;
import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.search.query.profile.QueryProfileRegistry;
@@ -86,7 +87,7 @@ public class RankingExpressionWithTransformerTokensTestCase {
" document test {}\n" +
" rank-profile my_profile inherits default {}\n" +
"}";
- SearchBuilder searchBuilder = new SearchBuilder(application, new BaseDeployLogger(), new TestProperties(), rankProfileRegistry, queryProfileRegistry);
+ SearchBuilder searchBuilder = new SearchBuilder(application, new MockFileRegistry(), new BaseDeployLogger(), new TestProperties(), rankProfileRegistry, queryProfileRegistry);
searchBuilder.importString(sdContent);
searchBuilder.build();
Search search = searchBuilder.getSearch();
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithXGBoostTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithXGBoostTestCase.java
index 1df6e5e5365..0c163954038 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithXGBoostTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionWithXGBoostTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.ApplicationPackage;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionsTestCase.java
index 021d2931414..27ea680d97a 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionsTestCase.java
@@ -1,10 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.collections.Pair;
-import com.yahoo.config.FileReference;
import com.yahoo.config.model.api.ModelContext;
-import com.yahoo.config.model.application.provider.BaseDeployLogger;
+import com.yahoo.config.model.application.provider.MockFileRegistry;
import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.searchdefinition.LargeRankExpressions;
@@ -19,25 +18,27 @@ import com.yahoo.searchdefinition.derived.RawRankProfile;
import com.yahoo.searchdefinition.derived.TestableDeployLogger;
import com.yahoo.searchdefinition.parser.ParseException;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
-import com.yahoo.vespa.config.search.core.RankingExpressionsConfig;
import org.junit.Test;
import java.io.IOException;
+import java.util.Arrays;
import java.util.List;
import java.util.Map;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
public class RankingExpressionsTestCase extends SchemaTestCase {
+ private static Search createSearch(String dir, ModelContext.Properties deployProperties, RankProfileRegistry rankProfileRegistry) throws IOException, ParseException {
+ return SearchBuilder.createFromDirectory(dir, new MockFileRegistry(), new TestableDeployLogger(), deployProperties, rankProfileRegistry).getSearch();
+ }
+
@Test
public void testFunctions() throws IOException, ParseException {
- ModelContext.Properties deployProperties = new TestProperties().useExternalRankExpression(true);
+ ModelContext.Properties deployProperties = new TestProperties();
RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
- Search search = SearchBuilder.createFromDirectory("src/test/examples/rankingexpressionfunction",
- new TestableDeployLogger(),
- deployProperties,
- rankProfileRegistry).getSearch();
+ Search search = createSearch("src/test/examples/rankingexpressionfunction", deployProperties, rankProfileRegistry);
RankProfile functionsRankProfile = rankProfileRegistry.get(search, "macros");
Map<String, RankProfile.RankingExpressionFunction> functions = functionsRankProfile.getFunctions();
assertEquals(2, functions.get("titlematch$").function().arguments().size());
@@ -50,7 +51,7 @@ public class RankingExpressionsTestCase extends SchemaTestCase {
functions.get("artistmatch").function().getBody().getRoot().toString());
assertEquals(0, functions.get("artistmatch").function().arguments().size());
- RawRankProfile rawRankProfile = new RawRankProfile(functionsRankProfile, new LargeRankExpressions(), new QueryProfileRegistry(),
+ RawRankProfile rawRankProfile = new RawRankProfile(functionsRankProfile, new LargeRankExpressions(new MockFileRegistry()), new QueryProfileRegistry(),
new ImportedMlModels(), new AttributeFields(search), deployProperties);
List<Pair<String, String>> rankProperties = rawRankProfile.configProperties();
assertEquals(6, rankProperties.size());
@@ -74,11 +75,54 @@ public class RankingExpressionsTestCase extends SchemaTestCase {
@Test(expected = IllegalArgumentException.class)
public void testThatIncludingFileInSubdirFails() throws IOException, ParseException {
RankProfileRegistry registry = new RankProfileRegistry();
- Search search = SearchBuilder.createFromDirectory("src/test/examples/rankingexpressioninfile",
- new TestableDeployLogger(),
- new TestProperties(),
- registry).getSearch();
- new DerivedConfiguration(search, new BaseDeployLogger(), new TestProperties(), registry, new QueryProfileRegistry(), new ImportedMlModels()); // rank profile parsing happens during deriving
+ Search search = createSearch("src/test/examples/rankingexpressioninfile", new TestProperties(), registry);
+ new DerivedConfiguration(search, registry); // rank profile parsing happens during deriving
+ }
+
+ private void verifyProfile(RankProfile profile, List<String> expectedFunctions, List<Pair<String, String>> rankProperties,
+ LargeRankExpressions largeExpressions, QueryProfileRegistry queryProfiles, ImportedMlModels models,
+ AttributeFields attributes, ModelContext.Properties properties) {
+ var functions = profile.getFunctions();
+ assertEquals(expectedFunctions.size(), functions.size());
+ for (String func : expectedFunctions) {
+ assertTrue(functions.containsKey(func));
+ }
+
+ RawRankProfile raw = new RawRankProfile(profile, largeExpressions, queryProfiles, models, attributes, properties);
+ assertEquals(rankProperties.size(), raw.configProperties().size());
+ for (int i = 0; i < rankProperties.size(); i++) {
+ assertEquals(rankProperties.get(i).getFirst(), raw.configProperties().get(i).getFirst());
+ assertEquals(rankProperties.get(i).getSecond(), raw.configProperties().get(i).getSecond());
+ }
}
+ private void verifySearch(Search search, RankProfileRegistry rankProfileRegistry, LargeRankExpressions largeExpressions,
+ QueryProfileRegistry queryProfiles, ImportedMlModels models, ModelContext.Properties properties)
+ {
+ AttributeFields attributes = new AttributeFields(search);
+
+ verifyProfile(rankProfileRegistry.get(search, "base"), Arrays.asList("large_f", "large_m"),
+ Arrays.asList(new Pair<>("rankingExpression(large_f).expressionName", "base.large_f"), new Pair<>("rankingExpression(large_m).expressionName", "base.large_m")),
+ largeExpressions, queryProfiles, models, attributes, properties);
+ for (String child : Arrays.asList("child_a", "child_b")) {
+ verifyProfile(rankProfileRegistry.get(search, child), Arrays.asList("large_f", "large_m", "large_local_f", "large_local_m"),
+ Arrays.asList(new Pair<>("rankingExpression(large_f).expressionName", child + ".large_f"), new Pair<>("rankingExpression(large_m).expressionName", child + ".large_m"),
+ new Pair<>("rankingExpression(large_local_f).expressionName", child + ".large_local_f"), new Pair<>("rankingExpression(large_local_m).expressionName", child + ".large_local_m"),
+ new Pair<>("vespa.rank.firstphase", "rankingExpression(firstphase)"), new Pair<>("rankingExpression(firstphase).expressionName", child + ".firstphase")),
+ largeExpressions, queryProfiles, models, attributes, properties);
+ }
+ }
+
+ @Test
+ public void testLargeInheritedFunctions() throws IOException, ParseException {
+ ModelContext.Properties properties = new TestProperties().largeRankExpressionLimit(50);
+ RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
+ LargeRankExpressions largeExpressions = new LargeRankExpressions(new MockFileRegistry());
+ QueryProfileRegistry queryProfiles = new QueryProfileRegistry();
+ ImportedMlModels models = new ImportedMlModels();
+ Search search = createSearch("src/test/examples/largerankingexpressions", properties, rankProfileRegistry);
+ verifySearch(search, rankProfileRegistry, largeExpressions, queryProfiles, models, properties);
+ // Need to verify that second derivation works as that will happen if same sd is used in multiple content clusters
+ verifySearch(search, rankProfileRegistry, largeExpressions, queryProfiles, models, properties);
+ }
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ReferenceFieldTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ReferenceFieldTestCase.java
index 9dcb791cf14..ad38e65e655 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ReferenceFieldTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ReferenceFieldTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.document.DataType;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ReservedDocumentNamesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ReservedDocumentNamesTestCase.java
index b863e5b51d3..3e61cec54da 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ReservedDocumentNamesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ReservedDocumentNamesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.derived.AbstractExportingTestCase;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ReservedRankingExpressionFunctionNamesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ReservedRankingExpressionFunctionNamesTestCase.java
index b0c65b3ea76..481acace535 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ReservedRankingExpressionFunctionNamesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ReservedRankingExpressionFunctionNamesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/SearchMustHaveDocumentTest.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/SearchMustHaveDocumentTest.java
index de37695bd0b..4fe03fe0faa 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/SearchMustHaveDocumentTest.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/SearchMustHaveDocumentTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.SearchBuilder;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSourceTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSourceTestCase.java
index ca8744a07bb..adb6cc03d5b 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSourceTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSourceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorFieldTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorFieldTestCase.java
index cbe748fb5d8..c8b0a826d48 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorFieldTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorFieldTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.config.model.test.TestUtil;
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorTransformTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorTransformTestCase.java
index 6ab74ef2eae..8714568338f 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorTransformTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorTransformTestCase.java
@@ -1,14 +1,17 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.collections.Pair;
import com.yahoo.component.ComponentId;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
+import com.yahoo.config.model.application.provider.MockFileRegistry;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.search.query.profile.types.FieldDescription;
import com.yahoo.search.query.profile.types.FieldType;
import com.yahoo.search.query.profile.types.QueryProfileType;
import com.yahoo.search.query.profile.types.QueryProfileTypeRegistry;
+import com.yahoo.searchdefinition.LargeRankExpressions;
import com.yahoo.searchdefinition.RankProfile;
import com.yahoo.searchdefinition.RankProfileRegistry;
import com.yahoo.searchdefinition.Search;
@@ -199,9 +202,10 @@ public class TensorTransformTestCase extends SchemaTestCase {
Search s = builder.getSearch();
RankProfile test = rankProfileRegistry.get(s, "test").compile(queryProfiles, new ImportedMlModels());
List<Pair<String, String>> testRankProperties = new RawRankProfile(test,
+ new LargeRankExpressions(new MockFileRegistry()),
queryProfiles,
new ImportedMlModels(),
- new AttributeFields(s)).configProperties();
+ new AttributeFields(s), new TestProperties()).configProperties();
return testRankProperties;
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesTest.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesTest.java
index f490b6d8de1..adc146a2047 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesTest.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ValidateFieldTypesTest.java
@@ -1,6 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
+import com.yahoo.config.model.application.provider.MockFileRegistry;
import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.document.DataType;
@@ -46,15 +47,19 @@ public class ValidateFieldTypesTest {
validator.process(true, false);
}
+ private static Search createSearch(String documentType) {
+ return new Search(documentType, MockApplicationPackage.createEmpty(), new MockFileRegistry(), new TestableDeployLogger(), new TestProperties());
+ }
+
private static Search createSearchWithDocument(String documentName) {
- Search search = new Search(documentName, MockApplicationPackage.createEmpty(), new TestableDeployLogger(), new TestProperties());
+ Search search = createSearch(documentName);
SDDocumentType document = new SDDocumentType(documentName, search);
search.addDocument(document);
return search;
}
private static ImportedFields createSingleImportedField(String fieldName, DataType dataType) {
- Search targetSearch = new Search("target_doc", MockApplicationPackage.createEmpty(), new TestableDeployLogger(), new TestProperties());
+ Search targetSearch = createSearch("target_doc");
SDField targetField = new SDField("target_field", dataType);
DocumentReference documentReference = new DocumentReference(new Field("reference_field"), targetSearch);
ImportedField importedField = new ImportedSimpleField(fieldName, documentReference, targetField);
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/WeightedSetSummaryToTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/WeightedSetSummaryToTestCase.java
index 957b5c55889..3b2875d303c 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/WeightedSetSummaryToTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/WeightedSetSummaryToTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchdefinition.processing;
import com.yahoo.searchdefinition.Search;
diff --git a/config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderReferenceTypeTestCase.java b/config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderReferenceTypeTestCase.java
index 55980ee5fea..189b514c294 100644
--- a/config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderReferenceTypeTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderReferenceTypeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.documentmodel;
import com.yahoo.document.ReferenceDataType;
diff --git a/config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderTestCase.java b/config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderTestCase.java
index 8f9aa33ea52..04ac16eb999 100644
--- a/config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/documentmodel/DocumentModelBuilderTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.documentmodel;
import com.yahoo.document.DocumenttypesConfig;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/HostPortsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/HostPortsTest.java
index 7ce840c13f8..f842ca72d92 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/HostPortsTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/HostPortsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
import com.yahoo.config.model.producer.AbstractConfigProducer;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java b/config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java
index dff1d338ffe..a0f988f7f3b 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
import com.yahoo.config.model.producer.AbstractConfigProducer;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/InstanceResolverTest.java b/config-model/src/test/java/com/yahoo/vespa/model/InstanceResolverTest.java
index c96e28035e0..636bfebaaf5 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/InstanceResolverTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/InstanceResolverTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
import com.yahoo.config.UrlReference;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/RecentLogFilterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/RecentLogFilterTest.java
index 6891eb16e18..4042723856f 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/RecentLogFilterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/RecentLogFilterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
import org.junit.Test;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java b/config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java
index a3e3a768b05..bf9ffb13a7a 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
import com.yahoo.config.application.api.ApplicationPackage;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java
index a490b7afd4c..f296b0e83e2 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin;
import com.yahoo.cloud.config.SentinelConfig;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java
index cf142dae2c7..1cb6c2b0861 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin;
import com.google.common.collect.Collections2;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java
index 60672c7df07..e7dc86ccfea 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin;
import com.yahoo.cloud.config.LogforwarderConfig;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsConsumersTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsConsumersTest.java
index 51ebb17e218..38e4afaf74b 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsConsumersTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsConsumersTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.metricsproxy;
import ai.vespa.metricsproxy.core.ConsumersConfig;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java
index 413daefdf75..6a7008f4ba2 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.metricsproxy;
import ai.vespa.metricsproxy.http.application.ApplicationMetricsHandler;
@@ -51,8 +51,7 @@ public class MetricsProxyContainerClusterTest {
var builder = new PlatformBundlesConfig.Builder();
model.getConfig(builder, CLUSTER_CONFIG_ID);
PlatformBundlesConfig config = builder.build();
- assertEquals(1, config.bundlePaths().size());
- assertThat(config.bundlePaths(0), endsWith(METRICS_PROXY_BUNDLE_FILE.toString()));
+ assertThat(config.bundlePaths(), hasItem(endsWith(METRICS_PROXY_BUNDLE_FILE.toString())));
}
@Test
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java
index 3f211a595b9..1cf79fc5977 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java
@@ -37,7 +37,7 @@ public class MetricsProxyContainerTest {
var tester = new VespaModelTester();
tester.addHosts(numberOfHosts);
- VespaModel model = tester.createModel(servicesWithManyNodes(), true);
+ VespaModel model = tester.createModel(hostedServicesWithManyNodes(), true);
assertThat(model.getRoot().hostSystem().getHosts().size(), is(numberOfHosts));
for (var host : model.hostSystem().getHosts()) {
@@ -56,7 +56,7 @@ public class MetricsProxyContainerTest {
var tester = new VespaModelTester();
tester.addHosts(numberOfHosts);
- VespaModel model = tester.createModel(servicesWithManyNodes(), true);
+ VespaModel model = tester.createModel(hostedServicesWithManyNodes(), true);
assertThat(model.getRoot().hostSystem().getHosts().size(), is(numberOfHosts));
for (var host : model.hostSystem().getHosts()) {
@@ -71,7 +71,7 @@ public class MetricsProxyContainerTest {
@Test
public void http_server_is_running_on_expected_port() {
- VespaModel model = getModel(servicesWithContent(), self_hosted);
+ VespaModel model = getModel(hostedServicesWithContent(), self_hosted);
MetricsProxyContainer container = (MetricsProxyContainer)model.id2producer().get(CONTAINER_CONFIG_ID);
assertEquals(19092, container.getSearchPort());
assertEquals(19092, container.getHealthPort());
@@ -82,7 +82,7 @@ public class MetricsProxyContainerTest {
@Test
public void metrics_rpc_server_is_running_on_expected_port() {
- VespaModel model = getModel(servicesWithContent(), self_hosted);
+ VespaModel model = getModel(hostedServicesWithContent(), self_hosted);
MetricsProxyContainer container = (MetricsProxyContainer)model.id2producer().get(CONTAINER_CONFIG_ID);
int offset = 3;
@@ -96,7 +96,7 @@ public class MetricsProxyContainerTest {
@Test
public void admin_rpc_server_is_running() {
- VespaModel model = getModel(servicesWithContent(), self_hosted);
+ VespaModel model = getModel(hostedServicesWithContent(), self_hosted);
MetricsProxyContainer container = (MetricsProxyContainer)model.id2producer().get(CONTAINER_CONFIG_ID);
int offset = 2;
@@ -107,7 +107,7 @@ public class MetricsProxyContainerTest {
@Test
public void preload_is_empty() {
- VespaModel model = getModel(servicesWithContent(), self_hosted);
+ VespaModel model = getModel(hostedServicesWithContent(), self_hosted);
MetricsProxyContainer container = (MetricsProxyContainer)model.id2producer().get(CONTAINER_CONFIG_ID);
assertEquals("", container.getPreLoad());
@@ -115,7 +115,7 @@ public class MetricsProxyContainerTest {
@Test
public void hosted_application_propagates_node_dimensions() {
- String services = servicesWithContent();
+ String services = hostedServicesWithContent();
VespaModel hostedModel = getModel(services, hosted);
assertEquals(4, hostedModel.getHosts().size());
String configId = containerConfigId(hostedModel, hosted);
@@ -127,7 +127,7 @@ public class MetricsProxyContainerTest {
@Test
public void metrics_v2_handler_is_set_up_with_node_info_config() {
- String services = servicesWithContent();
+ String services = hostedServicesWithContent();
VespaModel hostedModel = getModel(services, hosted);
var container = (MetricsProxyContainer)hostedModel.id2producer().get(containerConfigId(hostedModel, hosted));
@@ -143,8 +143,8 @@ public class MetricsProxyContainerTest {
@Test
public void vespa_services_config_has_all_services() {
- VespaServicesConfig vespaServicesConfig = getVespaServicesConfig(servicesWithContent());
- assertEquals(7, vespaServicesConfig.service().size());
+ VespaServicesConfig vespaServicesConfig = getVespaServicesConfig(hostedServicesWithContent());
+ assertEquals(9, vespaServicesConfig.service().size());
for (var service : vespaServicesConfig.service()) {
if (service.configId().equals("admin/cluster-controllers/0")) {
@@ -158,7 +158,7 @@ public class MetricsProxyContainerTest {
@Test
public void vespa_services_config_has_service_dimensions() {
- VespaServicesConfig vespaServicesConfig = getVespaServicesConfig(servicesWithContent());
+ VespaServicesConfig vespaServicesConfig = getVespaServicesConfig(hostedServicesWithContent());
for (var service : vespaServicesConfig.service()) {
if (service.configId().equals("admin/cluster-controllers/0")) {
assertEquals(1, service.dimension().size());
@@ -169,7 +169,7 @@ public class MetricsProxyContainerTest {
}
- private static String servicesWithManyNodes() {
+ private static String hostedServicesWithManyNodes() {
return String.join("\n",
"<services>",
" <container version='1.0' id='foo'>",
@@ -182,12 +182,9 @@ public class MetricsProxyContainerTest {
"</services>");
}
- private static String servicesWithContent() {
+ private static String hostedServicesWithContent() {
return String.join("\n",
"<services>",
- " <admin version='2.0'>",
- " <adminserver hostalias='node1'/>",
- " </admin>",
" <content version='1.0' id='my-content'>",
" <documents />",
" <nodes count='1' />",
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java
index 01167e40411..2c9293473ed 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.metricsproxy;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MonitoringElementTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MonitoringElementTest.java
index a4d2793dbbd..ee3496aa7bd 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MonitoringElementTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MonitoringElementTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.metricsproxy;
import ai.vespa.metricsproxy.core.MonitoringConfig;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/TelegrafTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/TelegrafTest.java
index a62626e51e8..4db7bf302b5 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/TelegrafTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/TelegrafTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.metricsproxy;
import ai.vespa.metricsproxy.telegraf.Telegraf;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/monitoring/MetricSetTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/monitoring/MetricSetTest.java
index 1295ca6ed4b..b78d7b9723f 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/monitoring/MetricSetTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/monitoring/MetricSetTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.monitoring;
import com.google.common.collect.ImmutableList;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/monitoring/MetricTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/monitoring/MetricTest.java
index c021703a34a..efb0f337198 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/monitoring/MetricTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/monitoring/MetricTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.monitoring;
import com.google.common.collect.ImmutableMap;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/AccessControlFilterValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/AccessControlFilterValidatorTest.java
index 21a319ab29e..95e98bbf480 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/AccessControlFilterValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/AccessControlFilterValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.config.model.MapConfigModelRegistry;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/AccessControlValidatorTestBase.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/AccessControlValidatorTestBase.java
index 58b65199729..5cdddcfba31 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/AccessControlValidatorTestBase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/AccessControlValidatorTestBase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.application.api.ApplicationPackage;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/AwsAccessControlValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/AwsAccessControlValidatorTest.java
index c4212a877e8..e2386e145ca 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/AwsAccessControlValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/AwsAccessControlValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.provision.Cloud;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/CloudWatchValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/CloudWatchValidatorTest.java
index 6c31150c973..2fb2ed15521 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/CloudWatchValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/CloudWatchValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.application.api.ApplicationPackage;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ComplexAttributeFieldsValidatorTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ComplexAttributeFieldsValidatorTestCase.java
index 341a90c6618..6f459b2d427 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ComplexAttributeFieldsValidatorTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ComplexAttributeFieldsValidatorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.application.api.ApplicationPackage;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ComponentValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ComponentValidatorTest.java
index e180097d81c..dec223562a4 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ComponentValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ComponentValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import org.junit.Test;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ConstantTensorJsonValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ConstantTensorJsonValidatorTest.java
index b594a3329d1..ea457e043fb 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ConstantTensorJsonValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ConstantTensorJsonValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.tensor.TensorType;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/DeploymentSpecValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/DeploymentSpecValidatorTest.java
index e0366b62933..ff765af1bd8 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/DeploymentSpecValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/DeploymentSpecValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.model.NullConfigModelRegistry;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/EndpointCertificateSecretsValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/EndpointCertificateSecretsValidatorTest.java
index 318a0630c4d..0bbb2353316 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/EndpointCertificateSecretsValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/EndpointCertificateSecretsValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.application.api.ApplicationPackage;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/NoPrefixForIndexesTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/NoPrefixForIndexesTest.java
index ec7f8f8a179..52a7d383587 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/NoPrefixForIndexesTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/NoPrefixForIndexesTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithFilePkg;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/QuotaValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/QuotaValidatorTest.java
index e99a92b530a..16ab941d3be 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/QuotaValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/QuotaValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.model.api.Quota;
@@ -47,8 +47,7 @@ public class QuotaValidatorTest {
tester.deploy(null, getServices("testCluster", 10), Environment.prod, null);
fail();
} catch (RuntimeException e) {
- assertEquals("Please free up some capacity! This deployment's quota use ($-.--) exceeds reserved quota ($-.--)!",
- ValidationTester.censorNumbers(e.getMessage()));
+ assertEquals("Deployment would make your tenant exceed its quota and has been blocked! Please contact support to update your plan.", e.getMessage());
}
}
@@ -59,8 +58,7 @@ public class QuotaValidatorTest {
tester.deploy(null, getServices("testCluster", 10), Environment.prod, null);
fail();
} catch (RuntimeException e) {
- assertEquals("publiccd: Please free up some capacity! This deployment's quota use ($-.--) exceeds reserved quota ($-.--)!",
- ValidationTester.censorNumbers(e.getMessage()));
+ assertEquals("publiccd: Deployment would make your tenant exceed its quota and has been blocked! Please contact support to update your plan.", e.getMessage());
}
}
@@ -71,8 +69,7 @@ public class QuotaValidatorTest {
tester.deploy(null, getServices("testCluster", 10), Environment.prod, null);
fail();
} catch (RuntimeException e) {
- assertEquals("publiccd: Please free up some capacity! This deployment's quota use ($-.--) exceeds reserved quota ($-.--)!",
- ValidationTester.censorNumbers(e.getMessage()));
+ assertEquals("publiccd: Deployment would make your tenant exceed its quota and has been blocked! Please contact support to update your plan.", e.getMessage());
}
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidatorTest.java
index dbf6013b167..6a88fa80070 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithFilePkg;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/SearchDataTypeValidatorTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/SearchDataTypeValidatorTestCase.java
index b9387d8b665..cbea01e3ca3 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/SearchDataTypeValidatorTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/SearchDataTypeValidatorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithFilePkg;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/SecretStoreValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/SecretStoreValidatorTest.java
index 4a9535623bb..7ea8d9b1175 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/SecretStoreValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/SecretStoreValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.application.api.ApplicationPackage;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/StreamingValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/StreamingValidatorTest.java
index c3e9a93dd5e..5d1893a4826 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/StreamingValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/StreamingValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithFilePkg;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/UriBindingsValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/UriBindingsValidatorTest.java
index 3b7fded5f58..525df099c1e 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/UriBindingsValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/UriBindingsValidatorTest.java
@@ -1,5 +1,5 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.model.application.validation;// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.model.application.validation;// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.NullConfigModelRegistry;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationOverridesValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationOverridesValidatorTest.java
index 90d3d80c032..16bff341c0b 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationOverridesValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationOverridesValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.model.NullConfigModelRegistry;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationTester.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationTester.java
index 02f1195d50e..666aef6df73 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationTester.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationTester.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation;
import com.google.common.collect.ImmutableList;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ClusterSizeReductionValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ClusterSizeReductionValidatorTest.java
index f90762e8fc0..43841aebd8a 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ClusterSizeReductionValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ClusterSizeReductionValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigChangeTestUtils.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigChangeTestUtils.java
index 7f92d2f409c..7d84a4a844e 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigChangeTestUtils.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigChangeTestUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java
index 81b7f870a10..fa6fc1244d8 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.test.AnotherrestartConfig;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidatorTest.java
index ad05180cf60..7cad29cc2c4 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.model.api.ConfigChangeAction;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidatorTest.java
index 30dab17635a..c0f9e532aa2 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidatorTest.java
index 45f3b0fcf60..3827fa9786e 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/GlobalDocumentChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/GlobalDocumentChangeValidatorTest.java
index 465b1a5d3ba..f1192dd0f89 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/GlobalDocumentChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/GlobalDocumentChangeValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.provision.Environment;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexedSearchClusterChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexedSearchClusterChangeValidatorTest.java
index 2b211c561d9..44d62b72ce2 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexedSearchClusterChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexedSearchClusterChangeValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidatorTest.java
index d5c7fb78c89..c7ed8309318 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationOverrides.ValidationException;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/NodeResourceChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/NodeResourceChangeValidatorTest.java
index ecf026e7d88..891418c073f 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/NodeResourceChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/NodeResourceChangeValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationOverrides;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/RedundancyIncreaseValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/RedundancyIncreaseValidatorTest.java
index ddeada8b33f..3249b2cd60e 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/RedundancyIncreaseValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/RedundancyIncreaseValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/RestartChangesDefersConfigChangesTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/RestartChangesDefersConfigChangesTest.java
index fda4c54c154..439cb24ba87 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/RestartChangesDefersConfigChangesTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/RestartChangesDefersConfigChangesTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.cloud.config.log.LogdConfig;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidatorTest.java
index c0b5ddd5d58..dddab5c2a2a 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.model.api.ConfigChangeAction;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StreamingSearchClusterChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StreamingSearchClusterChangeValidatorTest.java
index 18aac032fe7..a4080250c60 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StreamingSearchClusterChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StreamingSearchClusterChangeValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidatorTest.java
index 2cf8069c988..87c7c898f96 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change.search;
import com.yahoo.config.provision.ClusterSpec;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/ContentClusterFixture.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/ContentClusterFixture.java
index 20ff9afd530..6a9c3025e79 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/ContentClusterFixture.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/ContentClusterFixture.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change.search;
import com.yahoo.documentmodel.NewDocumentType;
@@ -31,6 +31,13 @@ public abstract class ContentClusterFixture {
nextCluster = createCluster(nextSd);
}
+ public ContentClusterFixture(String entireSd) throws Exception {
+ currentCluster = new ContentClusterBuilder().build(
+ ContentClusterUtils.createMockRoot(Arrays.asList(entireSd)));
+ nextCluster = new ContentClusterBuilder().build(
+ ContentClusterUtils.createMockRoot(Arrays.asList(entireSd)));
+ }
+
private static ContentCluster createCluster(String sdContent) throws Exception {
return new ContentClusterBuilder().build(
ContentClusterUtils.createMockRoot(
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/DocumentDatabaseChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/DocumentDatabaseChangeValidatorTest.java
index f9ccdb1a2aa..d5c84be2008 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/DocumentDatabaseChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/DocumentDatabaseChangeValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change.search;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/DocumentTypeChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/DocumentTypeChangeValidatorTest.java
index 8ee2a924503..be47f448e40 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/DocumentTypeChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/DocumentTypeChangeValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change.search;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidatorTest.java
index b1fda081b64..83680855e51 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change.search;
import com.yahoo.config.application.api.ValidationId;
@@ -6,6 +6,9 @@ import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.vespa.indexinglanguage.expressions.ScriptExpression;
import com.yahoo.vespa.model.application.validation.change.VespaConfigChangeAction;
import com.yahoo.vespa.model.application.validation.change.VespaReindexAction;
+
+import static com.yahoo.config.model.test.TestUtil.joinLines;
+
import org.junit.Test;
import java.util.Arrays;
@@ -25,6 +28,13 @@ public class IndexingScriptChangeValidatorTest {
nextDb().getDerivedConfiguration().getSearch());
}
+ public Fixture(String entireSd) throws Exception {
+ super(entireSd);
+ validator = new IndexingScriptChangeValidator(ClusterSpec.Id.from("test"),
+ currentDb().getDerivedConfiguration().getSearch(),
+ nextDb().getDerivedConfiguration().getSearch());
+ }
+
@Override
public List<VespaConfigChangeAction> validate() {
return validator.validate();
@@ -176,4 +186,40 @@ public class IndexingScriptChangeValidatorTest {
validate());
}
+ @Test
+ public void requireThatNormalizeIsOk() throws Exception {
+ String entireSd = joinLines(
+ "search test {",
+ " document test {",
+ " field inside type array<string> {",
+ " indexing: summary",
+ " }",
+ " }",
+ " field outside type array<string> {",
+ " indexing: input inside | for_each { normalize } | index outside",
+ " }",
+ "}");
+ new Fixture(entireSd).assertValidation();
+ }
+
+ @Test
+ public void requireThatNgramIsOk() throws Exception {
+ String entireSd = joinLines(
+ "search test {",
+ " document test {",
+ " field inside type string {",
+ " indexing: index",
+ " match {",
+ " gram",
+ " gram-size: 3",
+ " }",
+ " }",
+ " }",
+ " field outside type string {",
+ " indexing: input inside | ngram 2 | index outside",
+ " }",
+ "}");
+ new Fixture(entireSd).assertValidation();
+ }
+
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/StructFieldAttributeChangeValidatorTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/StructFieldAttributeChangeValidatorTestCase.java
index d37ab8be9a2..b95d0d05c71 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/StructFieldAttributeChangeValidatorTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/StructFieldAttributeChangeValidatorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change.search;
import com.yahoo.config.application.api.ValidationOverrides;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/AccessControlOnFirstDeploymentValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/AccessControlOnFirstDeploymentValidatorTest.java
index d1a78a548d9..b9e92e1b866 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/AccessControlOnFirstDeploymentValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/AccessControlOnFirstDeploymentValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.first;
import com.yahoo.config.provision.Environment;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/RedundancyOnFirstDeploymentValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/RedundancyOnFirstDeploymentValidatorTest.java
index d59b2f7227c..baa880e14af 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/RedundancyOnFirstDeploymentValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/RedundancyOnFirstDeploymentValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.first;
import com.yahoo.config.application.api.ValidationId;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/UserConfigBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/UserConfigBuilderTest.java
index bbed96d3251..e3605115d05 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/UserConfigBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/UserConfigBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder;
import com.yahoo.config.ConfigInstance;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/Bug6068056Test.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/Bug6068056Test.java
index 6bc161a0212..53d09bdeac3 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/Bug6068056Test.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/Bug6068056Test.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithMockPkg;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java
index 7bff4890b7e..891a870dc01 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.collections.CollectionUtil;
@@ -94,7 +94,7 @@ public class ContentBuilderTest extends DomBuilderTest {
assertTrue(a.getPersistence() instanceof ProtonEngine.Factory);
- assertEquals(1, a.getStorageNodes().getChildren().size());
+ assertEquals(1, a.getStorageCluster().getChildren().size());
}
@Test
@@ -119,7 +119,7 @@ public class ContentBuilderTest extends DomBuilderTest {
assertTrue(a.getPersistence() instanceof ProtonEngine.Factory);
- assertEquals(1, a.getStorageNodes().getChildren().size());
+ assertEquals(1, a.getStorageCluster().getChildren().size());
}
@Test
@@ -147,7 +147,7 @@ public class ContentBuilderTest extends DomBuilderTest {
assertEquals("node0", a.getRootGroup().getNodes().get(0).getHostName());
assertTrue(a.getPersistence() instanceof ProtonEngine.Factory);
- assertEquals(1, a.getStorageNodes().getChildren().size());
+ assertEquals(1, a.getStorageCluster().getChildren().size());
assertEquals("a", a.getConfigId());
}
@@ -164,7 +164,7 @@ public class ContentBuilderTest extends DomBuilderTest {
assertEquals(7.3, s.getIndexed().getQueryTimeout(), 0.0);
assertTrue(c.getPersistence() instanceof ProtonEngine.Factory);
- assertEquals(1, c.getStorageNodes().getChildren().size());
+ assertEquals(1, c.getStorageCluster().getChildren().size());
assertEquals("clu", c.getConfigId());
//assertEquals("content/a/0", a.getRootGroup().getNodes().get(0).getConfigId()); // This is how it should look like in an ideal world.
assertEquals("clu/storage/0", c.getRootGroup().getNodes().get(0).getConfigId()); // Due to reuse.
@@ -211,7 +211,7 @@ public class ContentBuilderTest extends DomBuilderTest {
assertEquals(musicClusterId, ((StreamingSearchCluster)sc).getStorageRouteSpec());
assertTrue(cluster.getPersistence() instanceof ProtonEngine.Factory);
- assertEquals(1, cluster.getStorageNodes().getChildren().size());
+ assertEquals(1, cluster.getStorageCluster().getChildren().size());
assertEquals(musicClusterId, cluster.getConfigId());
//assertEquals("content/a/0", a.getRootGroup().getNodes().get(0).getConfigId());
@@ -269,7 +269,7 @@ public class ContentBuilderTest extends DomBuilderTest {
}
assertTrue(cluster.getPersistence() instanceof ProtonEngine.Factory);
- assertEquals(1, cluster.getStorageNodes().getChildren().size());
+ assertEquals(1, cluster.getStorageCluster().getChildren().size());
assertEquals(musicClusterId, cluster.getConfigId());
}
@@ -295,7 +295,7 @@ public class ContentBuilderTest extends DomBuilderTest {
assertEquals("b", s.getIndexed().getClusterName());
assertTrue(b.getPersistence() instanceof ProtonEngine.Factory);
- assertEquals(1, b.getStorageNodes().getChildren().size());
+ assertEquals(1, b.getStorageCluster().getChildren().size());
assertEquals("b", b.getConfigId());
//assertEquals("content/a/0", a.getRootGroup().getNodes().get(0).getConfigId());
@@ -323,7 +323,7 @@ public class ContentBuilderTest extends DomBuilderTest {
s = b.getSearch();
assertTrue(s.hasIndexedCluster());
assertNotNull(s.getIndexed());
- assertEquals(2, b.getStorageNodes().getChildren().size());
+ assertEquals(2, b.getStorageCluster().getChildren().size());
assertTrue(b.getRootGroup().getMmapNoCoreLimit().isPresent());
assertEquals(200000, b.getRootGroup().getMmapNoCoreLimit().get().longValue());
@@ -352,7 +352,7 @@ public class ContentBuilderTest extends DomBuilderTest {
s = b.getSearch();
assertTrue(s.hasIndexedCluster());
assertNotNull(s.getIndexed());
- assertEquals(2, b.getStorageNodes().getChildren().size());
+ assertEquals(2, b.getStorageCluster().getChildren().size());
assertTrue(b.getRootGroup().getCoreOnOOM().isPresent());
assertTrue(b.getRootGroup().getCoreOnOOM().get());
@@ -379,7 +379,7 @@ public class ContentBuilderTest extends DomBuilderTest {
ContentSearchCluster s = b.getSearch();
assertTrue(s.hasIndexedCluster());
assertNotNull(s.getIndexed());
- assertEquals(2, b.getStorageNodes().getChildren().size());
+ assertEquals(2, b.getStorageCluster().getChildren().size());
assertFalse(b.getRootGroup().getCoreOnOOM().isPresent());
assertThat(s.getSearchNodes().size(), is(2));
@@ -405,7 +405,7 @@ public class ContentBuilderTest extends DomBuilderTest {
ContentSearchCluster s = b.getSearch();
assertTrue(s.hasIndexedCluster());
assertNotNull(s.getIndexed());
- assertEquals(2, b.getStorageNodes().getChildren().size());
+ assertEquals(2, b.getStorageCluster().getChildren().size());
assertFalse(b.getRootGroup().getMmapNoCoreLimit().isPresent());
assertThat(s.getSearchNodes().size(), is(2));
@@ -431,7 +431,7 @@ public class ContentBuilderTest extends DomBuilderTest {
ContentSearchCluster s = b.getSearch();
assertTrue(s.hasIndexedCluster());
assertNotNull(s.getIndexed());
- assertEquals(2, b.getStorageNodes().getChildren().size());
+ assertEquals(2, b.getStorageCluster().getChildren().size());
assertFalse(b.getRootGroup().getCoreOnOOM().isPresent());
assertThat(s.getSearchNodes().size(), is(2));
@@ -459,7 +459,7 @@ public class ContentBuilderTest extends DomBuilderTest {
ContentSearchCluster s = b.getSearch();
assertTrue(s.hasIndexedCluster());
assertNotNull(s.getIndexed());
- assertEquals(4, b.getStorageNodes().getChildren().size());
+ assertEquals(4, b.getStorageCluster().getChildren().size());
assertTrue(b.getRootGroup().getNoVespaMalloc().isPresent());
assertEquals("proton", b.getRootGroup().getNoVespaMalloc().get());
assertTrue(b.getRootGroup().getVespaMalloc().isPresent());
@@ -501,7 +501,7 @@ public class ContentBuilderTest extends DomBuilderTest {
ContentSearchCluster s = b.getSearch();
assertTrue(s.hasIndexedCluster());
assertNotNull(s.getIndexed());
- assertEquals(4, b.getStorageNodes().getChildren().size());
+ assertEquals(4, b.getStorageCluster().getChildren().size());
assertFalse(b.getRootGroup().getNoVespaMalloc().isPresent());
assertFalse(b.getRootGroup().getVespaMalloc().isPresent());
assertFalse(b.getRootGroup().getVespaMallocDebug().isPresent());
@@ -532,11 +532,11 @@ public class ContentBuilderTest extends DomBuilderTest {
s = b.getSearch();
assertTrue(s.hasIndexedCluster());
assertNotNull(s.getIndexed());
- assertEquals(2, b.getStorageNodes().getChildren().size());
- assertTrue(b.getStorageNodes().getChildren().get("0").getAffinity().isPresent());
- assertThat(b.getStorageNodes().getChildren().get("0").getAffinity().get().cpuSocket(), is(0));
- assertTrue(b.getStorageNodes().getChildren().get("1").getAffinity().isPresent());
- assertThat(b.getStorageNodes().getChildren().get("1").getAffinity().get().cpuSocket(), is(1));
+ assertEquals(2, b.getStorageCluster().getChildren().size());
+ assertTrue(b.getStorageCluster().getChildren().get("0").getAffinity().isPresent());
+ assertThat(b.getStorageCluster().getChildren().get("0").getAffinity().get().cpuSocket(), is(0));
+ assertTrue(b.getStorageCluster().getChildren().get("1").getAffinity().isPresent());
+ assertThat(b.getStorageCluster().getChildren().get("1").getAffinity().get().cpuSocket(), is(1));
assertThat(s.getSearchNodes().size(), is(2));
assertTrue(s.getSearchNodes().get(0).getAffinity().isPresent());
@@ -567,7 +567,7 @@ public class ContentBuilderTest extends DomBuilderTest {
s = b.getSearch();
assertTrue(s.hasIndexedCluster());
assertNotNull(s.getIndexed());
- assertEquals(6, b.getStorageNodes().getChildren().size());
+ assertEquals(6, b.getStorageCluster().getChildren().size());
assertTrue(b.getRootGroup().useCpuSocketAffinity());
assertThat(s.getSearchNodes().size(), is(6));
@@ -585,12 +585,12 @@ public class ContentBuilderTest extends DomBuilderTest {
assertThat(s.getSearchNodes().get(5).getAffinity().get().cpuSocket(),is (0));
// TODO: Only needed for the search nodes anyway?
- assertFalse(b.getStorageNodes().getChildren().get("0").getAffinity().isPresent());
- assertFalse(b.getStorageNodes().getChildren().get("1").getAffinity().isPresent());
- assertFalse(b.getStorageNodes().getChildren().get("2").getAffinity().isPresent());
- assertFalse(b.getStorageNodes().getChildren().get("3").getAffinity().isPresent());
- assertFalse(b.getStorageNodes().getChildren().get("4").getAffinity().isPresent());
- assertFalse(b.getStorageNodes().getChildren().get("5").getAffinity().isPresent());
+ assertFalse(b.getStorageCluster().getChildren().get("0").getAffinity().isPresent());
+ assertFalse(b.getStorageCluster().getChildren().get("1").getAffinity().isPresent());
+ assertFalse(b.getStorageCluster().getChildren().get("2").getAffinity().isPresent());
+ assertFalse(b.getStorageCluster().getChildren().get("3").getAffinity().isPresent());
+ assertFalse(b.getStorageCluster().getChildren().get("4").getAffinity().isPresent());
+ assertFalse(b.getStorageCluster().getChildren().get("5").getAffinity().isPresent());
//assertThat(b.getStorageNodes().getChildren().get("0").getAffinity().get().cpuSocket(), is(0));
//assertThat(b.getStorageNodes().getChildren().get("1").getAffinity().get().cpuSocket(), is(1));
//assertThat(b.getStorageNodes().getChildren().get("2").getAffinity().get().cpuSocket(), is(2));
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2BuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2BuilderTest.java
index 69a0c8d656c..cfcf06702c7 100755
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2BuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2BuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.cloud.config.log.LogdConfig;
@@ -9,7 +9,9 @@ import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.test.MockRoot;
import com.yahoo.text.XML;
-import com.yahoo.vespa.model.admin.*;
+import com.yahoo.vespa.model.admin.Admin;
+import com.yahoo.vespa.model.admin.Configserver;
+import com.yahoo.vespa.model.admin.Slobrok;
import com.yahoo.vespa.model.admin.monitoring.Monitoring;
import org.junit.Before;
import org.junit.Test;
@@ -208,9 +210,7 @@ public class DomAdminV2BuilderTest extends DomBuilderTest {
private Admin buildAdmin(Element xml, boolean multitenant, List<ConfigServerSpec> configServerSpecs) {
DeployState deployState = DeployState.createTestState();
final DomAdminV2Builder domAdminBuilder =
- new DomAdminV2Builder(ConfigModelContext.ApplicationType.DEFAULT,
- deployState.getFileRegistry(), multitenant,
- configServerSpecs);
+ new DomAdminV2Builder(ConfigModelContext.ApplicationType.DEFAULT, multitenant, configServerSpecs);
Admin admin = domAdminBuilder.build(deployState, root, xml);
admin.addPerHostServices(root.hostSystem().getHosts(), deployState);
return admin;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilderTest.java
index 25f611cc9b7..ed342d1ca87 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomComponentBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomConfigPayloadBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomConfigPayloadBuilderTest.java
index 6f876450a2d..40513b019b8 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomConfigPayloadBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomConfigPayloadBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.config.ConfigurationRuntimeException;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilderTest.java
index 80f839af10d..7578fc5c8f8 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomSearchTuningBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.collections.CollectionUtil;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilderTest.java
index fa4c4d313a4..8236528f3d0 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/LegacyConfigModelBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.config.model.ConfigModel;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilderTest.java
index d3d5ba90488..737a2cee3e5 100755
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.config.application.Xml;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/DependenciesBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/DependenciesBuilderTest.java
index ed6b1ae07f0..bc0df8196b8 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/DependenciesBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/DependenciesBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains;
import com.yahoo.component.chain.dependencies.Dependencies;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilderTest.java
index 810d915aa59..ae087f71855 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomFederationSearcherBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.search;
import com.yahoo.config.model.builder.xml.test.DomBuilderTest;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilderTest.java
index ef09d8ff887..a34a5c577b7 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.search;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearcherBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearcherBuilderTest.java
index 68579a5e3e4..af3b4027b1c 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearcherBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearcherBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.search;
import com.yahoo.component.chain.model.ChainedComponentModel;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
index ee9c9ccb681..322b97355e9 100755
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container;
import com.yahoo.cloud.config.ClusterInfoConfig;
@@ -38,8 +38,8 @@ import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;
+import static org.hamcrest.Matchers.hasItem;
import static org.hamcrest.Matchers.hasKey;
-import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
@@ -56,6 +56,7 @@ public class ContainerClusterTest {
ClusterInfoConfig config = getClusterInfoConfig(cluster);
assertEquals("name", config.clusterId());
assertEquals(2, config.nodeCount());
+ assertEquals(List.of(0, 0), config.nodeIndices()); // both containers are created with index 0
assertEquals(2, config.services().size());
Iterator<ClusterInfoConfig.Services> iterator = config.services().iterator();
@@ -123,8 +124,8 @@ public class ContainerClusterTest {
public void requireThatHeapSizeAsPercentageOfPhysicalMemoryForHostedAndNot() {
boolean hosted = true;
boolean combined = true; // a cluster running on content nodes (only relevant with hosted)
- verifyHeapSizeAsPercentageOfPhysicalMemory( hosted, ! combined, null, 60);
- verifyHeapSizeAsPercentageOfPhysicalMemory( hosted, combined, null, 17);
+ verifyHeapSizeAsPercentageOfPhysicalMemory( hosted, ! combined, null, 70);
+ verifyHeapSizeAsPercentageOfPhysicalMemory( hosted, combined, null, 18);
verifyHeapSizeAsPercentageOfPhysicalMemory(! hosted, ! combined, null, 0);
// Explicit value overrides all defaults
@@ -239,26 +240,14 @@ public class ContainerClusterTest {
}
@Test
- public void requireThatPoolAndQueueCanNotBeControlledByPropertiesWhenNoFlavor() {
+ public void requireThatNonHostedUsesExpectedDefaultThreadpoolConfiguration() {
MockRoot root = new MockRoot("foo");
ApplicationContainerCluster cluster = createContainerCluster(root, false);
addContainer(root, cluster, "c1", "host-c1");
root.freezeModelTopology();
ThreadpoolConfig threadpoolConfig = root.getConfig(ThreadpoolConfig.class, "container0/component/default-threadpool");
- assertEquals(500, threadpoolConfig.maxthreads());
- assertEquals(0, threadpoolConfig.queueSize());
- }
-
- @Test
- public void requireThatDefaultThreadPoolConfigIsSane() {
- MockRoot root = new MockRoot("foo");
- ApplicationContainerCluster cluster = createContainerCluster(root, false);
- addContainer(root, cluster, "c1", "host-c1");
- root.freezeModelTopology();
-
- ThreadpoolConfig threadpoolConfig = root.getConfig(ThreadpoolConfig.class, "container0/component/default-threadpool");
- assertEquals(500, threadpoolConfig.maxthreads());
+ assertEquals(-100, threadpoolConfig.maxthreads());
assertEquals(0, threadpoolConfig.queueSize());
}
@@ -277,45 +266,37 @@ public class ContainerClusterTest {
}
@Test
- public void config_for_default_threadpool_provider_scales_with_node_resources() {
- HostProvisionerWithCustomRealResource hostProvisioner = new HostProvisionerWithCustomRealResource();
+ public void config_for_default_threadpool_provider_scales_with_node_resources_in_hosted() {
MockRoot root = new MockRoot(
"foo",
new DeployState.Builder()
+ .properties(new TestProperties().setHostedVespa(true))
.applicationPackage(new MockApplicationPackage.Builder().build())
- .modelHostProvisioner(hostProvisioner)
.build());
ApplicationContainerCluster cluster = createContainerCluster(root, false);
- HostResource hostResource = new HostResource(
- new Host(null, "host-c1"),
- hostProvisioner.allocateHost("host-c1"));
- addContainerWithHostResource(root, cluster, "c1", hostResource);
+ addContainer(root, cluster, "c1", "host-c1");
root.freezeModelTopology();
ThreadpoolConfig threadpoolConfig = root.getConfig(ThreadpoolConfig.class, "container0/component/default-threadpool");
- assertEquals(8, threadpoolConfig.maxthreads());
- assertEquals(320, threadpoolConfig.queueSize());
+ assertEquals(-100, threadpoolConfig.maxthreads());
+ assertEquals(0, threadpoolConfig.queueSize());
}
@Test
- public void jetty_threadpool_scales_with_node_resources() {
- HostProvisionerWithCustomRealResource hostProvisioner = new HostProvisionerWithCustomRealResource(12);
+ public void jetty_threadpool_scales_with_node_resources_in_hosted() {
MockRoot root = new MockRoot(
"foo",
new DeployState.Builder()
+ .properties(new TestProperties().setHostedVespa(true))
.applicationPackage(new MockApplicationPackage.Builder().build())
- .modelHostProvisioner(hostProvisioner)
.build());
ApplicationContainerCluster cluster = createContainerCluster(root, false);
- HostResource hostResource = new HostResource(
- new Host(null, "host-c1"),
- hostProvisioner.allocateHost("host-c1"));
- addContainerWithHostResource(root, cluster, "c1", hostResource);
+ addContainer(root, cluster, "c1", "host-c1");
root.freezeModelTopology();
ServerConfig cfg = root.getConfig(ServerConfig.class, "container0/c1/DefaultHttpServer");
- assertEquals(28, cfg.maxWorkerThreads());
- assertEquals(28, cfg.minWorkerThreads());
+ assertEquals(-1, cfg.maxWorkerThreads()); // Scale with cpu count observed by JVM
+ assertEquals(-1, cfg.minWorkerThreads()); // Scale with cpu count observed by JVM
}
@Test
@@ -383,10 +364,7 @@ public class ContainerClusterTest {
cluster.getConfig(bundleBuilder);
List<String> installedBundles = bundleBuilder.build().bundlePaths();
- assertEquals(expectedBundleNames.size(), installedBundles.size());
- assertThat(installedBundles, containsInAnyOrder(
- expectedBundleNames.stream().map(CoreMatchers::endsWith).collect(Collectors.toList())
- ));
+ expectedBundleNames.forEach(b -> assertThat(installedBundles, hasItem(CoreMatchers.endsWith(b))));
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerIncludeTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerIncludeTest.java
index 4c90d415bf0..0e35b72a75b 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerIncludeTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerIncludeTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container;
import com.yahoo.vespa.model.VespaModel;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/HostProvisionerWithCustomRealResource.java b/config-model/src/test/java/com/yahoo/vespa/model/container/HostProvisionerWithCustomRealResource.java
index c211b855079..e8f30d59aa9 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/HostProvisionerWithCustomRealResource.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/HostProvisionerWithCustomRealResource.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container;
import com.yahoo.config.model.api.HostProvisioner;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/component/BindingPatternTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/component/BindingPatternTest.java
index 91a2b65c0e0..ea4ee073915 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/component/BindingPatternTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/component/BindingPatternTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.component;
import org.junit.Test;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java
index 2144c3c9a66..42d9ccf7089 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.configserver;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/TestOptions.java b/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/TestOptions.java
index 8da7386e067..9352dac85a4 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/TestOptions.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/TestOptions.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.configserver;
import com.yahoo.vespa.model.container.configserver.option.CloudConfigOptions;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/docproc/StandaloneDocprocContainerTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/docproc/StandaloneDocprocContainerTest.java
index d346d98103d..de37240c269 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/docproc/StandaloneDocprocContainerTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/docproc/StandaloneDocprocContainerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.docproc;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/http/BlockFeedGlobalEndpointsFilterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/http/BlockFeedGlobalEndpointsFilterTest.java
index deca2fda21c..6d51c3a50b6 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/http/BlockFeedGlobalEndpointsFilterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/http/BlockFeedGlobalEndpointsFilterTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/http/DefaultFilterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/http/DefaultFilterTest.java
index e5c01989c22..1624a4754c7 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/http/DefaultFilterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/http/DefaultFilterTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http;
import com.yahoo.config.model.builder.xml.test.DomBuilderTest;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterBindingsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterBindingsTest.java
index 5b0c13a4038..7634a5928e5 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterBindingsTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterBindingsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http;
import com.yahoo.config.model.builder.xml.test.DomBuilderTest;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterChainsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterChainsTest.java
index 95d952c6f2b..97ce8030fbd 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterChainsTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterChainsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http;
import com.yahoo.component.ComponentSpecification;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterConfigTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterConfigTest.java
index 88ee99b1a90..e30628eb94f 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterConfigTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterConfigTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http;
import com.yahoo.config.model.builder.xml.test.DomBuilderTest;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/http/StrictFilteringTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/http/StrictFilteringTest.java
index 98383e77324..f703f39295f 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/http/StrictFilteringTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/http/StrictFilteringTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http;
import com.yahoo.config.model.builder.xml.test.DomBuilderTest;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTest.java
index 771cba673bc..5630d3cc186 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.ml;
import ai.vespa.models.evaluation.FunctionEvaluator;
@@ -18,7 +18,7 @@ public class ModelsEvaluatorTest {
@Test
public void testModelsEvaluatorTester() {
ModelsEvaluator modelsEvaluator = ModelsEvaluatorTester.create("src/test/cfg/application/stateless_eval");
- assertEquals(2, modelsEvaluator.models().size());
+ assertEquals(3, modelsEvaluator.models().size());
// ONNX model evaluation
FunctionEvaluator mul = modelsEvaluator.evaluatorOf("mul");
@@ -27,6 +27,12 @@ public class ModelsEvaluatorTest {
Tensor output = mul.bind("input1", input1).bind("input2", input2).evaluate();
assertEquals(6.0, output.sum().asDouble(), 1e-9);
+ // LightGBM model evaluation
+ FunctionEvaluator lgbm = modelsEvaluator.evaluatorOf("lightgbm_regression");
+ lgbm.bind("numerical_1", 0.1).bind("numerical_2", 0.2).bind("categorical_1", "a").bind("categorical_2", "i");
+ output = lgbm.evaluate();
+ assertEquals(2.0547, output.sum().asDouble(), 1e-4);
+
// Vespa model evaluation
FunctionEvaluator foo1 = modelsEvaluator.evaluatorOf("example", "foo1");
input1 = Tensor.from("tensor(name{},x[3]):{{name:n,x:0}:1,{name:n,x:1}:2,{name:n,x:2}:3 }");
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/processing/test/ProcessingChainsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/processing/test/ProcessingChainsTest.java
index d46f2a5e35f..4ac6129c6ee 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/processing/test/ProcessingChainsTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/processing/test/ProcessingChainsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.processing.test;
import com.yahoo.config.model.builder.xml.test.DomBuilderTest;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/ImplicitIndexingClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/ImplicitIndexingClusterTest.java
index 5525f00c381..44ca69d55c8 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/ImplicitIndexingClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/ImplicitIndexingClusterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search;
import com.yahoo.config.model.api.ModelContext;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/SemanticRulesTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/SemanticRulesTest.java
index af3ac8d7a80..68690bd83cd 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/SemanticRulesTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/SemanticRulesTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search;
import com.yahoo.config.model.application.provider.FilesApplicationPackage;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/Federation2Test.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/Federation2Test.java
index 207d7ad3565..76b5a102155 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/Federation2Test.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/Federation2Test.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.searchchain;
import com.yahoo.test.SimpletypesConfig;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/FederationSearcherTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/FederationSearcherTest.java
index bc6ff9e9be4..2482fc131f0 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/FederationSearcherTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/FederationSearcherTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.searchchain;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/FederationTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/FederationTest.java
index 4bf611f19f4..0c1b2de1c5d 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/FederationTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/FederationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.searchchain;
import com.yahoo.search.federation.FederationConfig;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/MockSearchClusters.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/MockSearchClusters.java
index b144ea19980..4370560444d 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/MockSearchClusters.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/MockSearchClusters.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.searchchain;
import com.yahoo.vespa.config.search.AttributesConfig;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTest.java
index 365a3ea44b5..f55bbe4aee0 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.searchchain;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTest2.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTest2.java
index ef80683abd6..40182c74be6 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTest2.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTest2.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.searchchain;
import com.yahoo.config.model.builder.xml.test.DomBuilderTest;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTestBase.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTestBase.java
index 8b49d1bff0d..8b92704df3d 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTestBase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SearchChainsTestBase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.searchchain;
import com.yahoo.config.model.builder.xml.test.DomBuilderTest;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SourceGroupTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SourceGroupTest.java
index cc6478fa4a4..3db112355a9 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SourceGroupTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SourceGroupTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.searchchain;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/semanticrules/rules/common.sr b/config-model/src/test/java/com/yahoo/vespa/model/container/search/semanticrules/rules/common.sr
index 8fb1c19a3c8..3833641a56c 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/semanticrules/rules/common.sr
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/semanticrules/rules/common.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
## Some test rules
# Spelling correction
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/semanticrules/rules/other.sr b/config-model/src/test/java/com/yahoo/vespa/model/container/search/semanticrules/rules/other.sr
index 5f53c6484aa..2b1f9b71db9 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/semanticrules/rules/other.sr
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/semanticrules/rules/other.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@default
@include(common.sr)
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/PageTemplatesTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/PageTemplatesTestCase.java
index 3df3a40515a..4afdecc3cde 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/PageTemplatesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/PageTemplatesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.test;
import com.yahoo.config.ConfigInstance;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/QueryProfileVariantsTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/QueryProfileVariantsTestCase.java
index 5e559b64bd1..4bdb130178f 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/QueryProfileVariantsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/QueryProfileVariantsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.test;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/QueryProfilesTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/QueryProfilesTestCase.java
index 1a0d8fba606..ab0b2f0d92c 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/QueryProfilesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/QueryProfilesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search.test;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/newsbesimple/scthumbnail.xml b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/newsbesimple/scthumbnail.xml
index d60b872f51a..ace848b2e4d 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/newsbesimple/scthumbnail.xml
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/newsbesimple/scthumbnail.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="scthumbnail">
<dimensions>custid_1,custid_2,custid_3,custid_4,custid_5,custid_6</dimensions>
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/newsfesimple/backend_news.xml b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/newsfesimple/backend_news.xml
index 36688c682b9..2ea4598d0c8 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/newsfesimple/backend_news.xml
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/newsfesimple/backend_news.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="backend/news">
<dimensions>vertical,sort,offset,resulttypes,rss,age,intl,testid</dimensions>
<query-profile for="news,*,*,article,0">
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/newsfesimple/default.xml b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/newsfesimple/default.xml
index be2a5bd5ffa..0e49f85a46a 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/newsfesimple/default.xml
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/newsfesimple/default.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="default">
<field name="source.news"><ref>backend/news</ref></field>
</query-profile>
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/footer.xml b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/footer.xml
index 1efc987f73e..8b88c1e963c 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/footer.xml
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/footer.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="footer">
<section layout="row" source="popularSearches"/>
<section id="extraFooter" layout="row" source="topArticles"/>
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/header.xml b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/header.xml
index c7abc9129f7..aaa9d8ed78c 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/header.xml
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/header.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="header">
<section layout="row">
<section source="global"/>
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/pages.cfg b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/pages.cfg
index 5ac46b31589..a1faf9cfd42 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/pages.cfg
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/pages.cfg
@@ -1,5 +1,5 @@
-page[0] "<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->\n<page id=\"slottingSerp\" layout=\"mainAndRight\">\n <section layout=\"column\" placement=\"main\" source=\"*\" blending=\"slot\"/>\n <section layout=\"column\" placement=\"right\" source=\"ads\"/>\n</page>\n"
-page[1] "<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->\n<page id=\"richSerp\" layout=\"mainAndRight\">\n <section layout=\"row\" placement=\"main\">\n <section layout=\"column\" description=\"left main pane\">\n <section layout=\"row\" max=\"5\" description=\"Bar of images, from one of two possible sources\">\n <choice>\n <source name=\"images\"/>\n <source name=\"flickr\"/>\n </choice>\n </section>\n <section max=\"1\" source=\"local map video ticker weather\" description=\"A single relevant graphically rich element\"/>\n <section blending=\"blend\" max=\"10\" source=\"web news\" description=\"Various kinds of traditional search results\"/>\n </section>\n <section layout=\"column\" blending=\"group\" source=\"answers blogs twitter\" description=\"right main pane, ugc stuff, grouped by source\"/>\n </section>\n <section layout=\"column\" source=\"ads\" placement=\"right\"/>\n</page>\n"
-page[2] "<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->\n<page id=\"footer\">\n <section layout=\"row\" source=\"popularSearches\"/>\n <section id=\"extraFooter\" layout=\"row\" source=\"topArticles\"/>\n</page>\n"
-page[3] "<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->\n<page id=\"richerSerp\" layout=\"column\">\n <include idref=\"header\"/>\n <section layout=\"mainAndRight\">\n <section layout=\"row\" placement=\"main\">\n <section layout=\"column\" description=\"left main pane\">\n <choice>\n <alternative>\n <section layout=\"row\" max=\"5\" description=\"Bar of images, from one of two possible sources\">\n <choice>\n <source name=\"images\"/>\n <alternative>\n <source name=\"flickr\">\n <presentation name=\"mouseOverImage\"/>\n </source>\n <source name=\"twitpic\">\n <choice>\n <presentation name=\"mouseOverImage\">\n <parameter name=\"hovertime\">5</parameter>\n <parameter name=\"borderColor\">#ff00ff</parameter>\n </presentation>\n <presentation name=\"regularImage\"/>\n </choice>\n <parameter name=\"filter\">origin=twitter</parameter>\n </source>\n </alternative>\n </choice>\n <choice>\n <presentation name=\"regularImageBox\"/>\n <presentation name=\"newImageBox\"/>\n </choice>\n </section>\n <section max=\"1\" source=\"local map video ticker weather\" description=\"A single relevant graphically rich element\"/>\n </alternative>\n <section blending=\"blend\" max=\"10\" source=\"web news\" description=\"Various kinds of traditional search results\"/>\n </choice>\n </section>\n <section layout=\"column\" blending=\"group\" source=\"answers blogs twitter\" description=\"right main pane, ugc stuff, grouped by source\"/>\n </section>\n <section layout=\"column\" source=\"ads\" placement=\"right\" order=\"relevance clickProbability\">\n <presentation name=\"newAdBox\"/>\n </section>\n </section>\n <include idref=\"footer\"/>\n</page>\n"
-page[4] "<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->\n<page id=\"header\">\n <section layout=\"row\">\n <section source=\"global\"/>\n <section source=\"notifications\"/>\n </section>\n</page>\n" \ No newline at end of file
+page[0] "<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->\n<page id=\"slottingSerp\" layout=\"mainAndRight\">\n <section layout=\"column\" placement=\"main\" source=\"*\" blending=\"slot\"/>\n <section layout=\"column\" placement=\"right\" source=\"ads\"/>\n</page>\n"
+page[1] "<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->\n<page id=\"richSerp\" layout=\"mainAndRight\">\n <section layout=\"row\" placement=\"main\">\n <section layout=\"column\" description=\"left main pane\">\n <section layout=\"row\" max=\"5\" description=\"Bar of images, from one of two possible sources\">\n <choice>\n <source name=\"images\"/>\n <source name=\"flickr\"/>\n </choice>\n </section>\n <section max=\"1\" source=\"local map video ticker weather\" description=\"A single relevant graphically rich element\"/>\n <section blending=\"blend\" max=\"10\" source=\"web news\" description=\"Various kinds of traditional search results\"/>\n </section>\n <section layout=\"column\" blending=\"group\" source=\"answers blogs twitter\" description=\"right main pane, ugc stuff, grouped by source\"/>\n </section>\n <section layout=\"column\" source=\"ads\" placement=\"right\"/>\n</page>\n"
+page[2] "<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->\n<page id=\"footer\">\n <section layout=\"row\" source=\"popularSearches\"/>\n <section id=\"extraFooter\" layout=\"row\" source=\"topArticles\"/>\n</page>\n"
+page[3] "<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->\n<page id=\"richerSerp\" layout=\"column\">\n <include idref=\"header\"/>\n <section layout=\"mainAndRight\">\n <section layout=\"row\" placement=\"main\">\n <section layout=\"column\" description=\"left main pane\">\n <choice>\n <alternative>\n <section layout=\"row\" max=\"5\" description=\"Bar of images, from one of two possible sources\">\n <choice>\n <source name=\"images\"/>\n <alternative>\n <source name=\"flickr\">\n <presentation name=\"mouseOverImage\"/>\n </source>\n <source name=\"twitpic\">\n <choice>\n <presentation name=\"mouseOverImage\">\n <parameter name=\"hovertime\">5</parameter>\n <parameter name=\"borderColor\">#ff00ff</parameter>\n </presentation>\n <presentation name=\"regularImage\"/>\n </choice>\n <parameter name=\"filter\">origin=twitter</parameter>\n </source>\n </alternative>\n </choice>\n <choice>\n <presentation name=\"regularImageBox\"/>\n <presentation name=\"newImageBox\"/>\n </choice>\n </section>\n <section max=\"1\" source=\"local map video ticker weather\" description=\"A single relevant graphically rich element\"/>\n </alternative>\n <section blending=\"blend\" max=\"10\" source=\"web news\" description=\"Various kinds of traditional search results\"/>\n </choice>\n </section>\n <section layout=\"column\" blending=\"group\" source=\"answers blogs twitter\" description=\"right main pane, ugc stuff, grouped by source\"/>\n </section>\n <section layout=\"column\" source=\"ads\" placement=\"right\" order=\"relevance clickProbability\">\n <presentation name=\"newAdBox\"/>\n </section>\n </section>\n <include idref=\"footer\"/>\n</page>\n"
+page[4] "<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->\n<page id=\"header\">\n <section layout=\"row\">\n <section source=\"global\"/>\n <section source=\"notifications\"/>\n </section>\n</page>\n" \ No newline at end of file
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/richSerp.xml b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/richSerp.xml
index e1f61760dd7..14ad99eb57b 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/richSerp.xml
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/richSerp.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="richSerp" layout="mainAndRight">
<section layout="row" placement="main">
<section layout="column" description="left main pane">
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/richerSerp.xml b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/richerSerp.xml
index 43e758f5def..cf43e02fa49 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/richerSerp.xml
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/richerSerp.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="richerSerp" layout="column">
<include idref="header"/>
<section layout="mainAndRight">
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/slottingSerp.xml b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/slottingSerp.xml
index e47f15e874e..9e50670b739 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/slottingSerp.xml
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/pages/slottingSerp.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="slottingSerp" layout="mainAndRight">
<section layout="column" placement="main" source="*" blending="slot"/>
<section layout="column" placement="right" source="ads"/>
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants/variants1.xml b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants/variants1.xml
index 85cfa564c4c..fcea7b62d61 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants/variants1.xml
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants/variants1.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="variants1">
<dimensions>x,y</dimensions>
<field name="a">a-deflt</field>
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants/variants2.xml b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants/variants2.xml
index e7f851c8b15..97f74977b99 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants/variants2.xml
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants/variants2.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="variants2">
<dimensions>x</dimensions>
<field name="c">c-df</field>
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants/wparent2.xml b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants/wparent2.xml
index 134beab75cc..12427de84a1 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants/wparent2.xml
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants/wparent2.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="wparent2">
<field name="a">a1</field>
</query-profile>
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants2/default.xml b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants2/default.xml
index daa379e47da..40d70c6e6ae 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants2/default.xml
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants2/default.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="default">
<field name="hits">5</field>
<field name="model.defaultIndex">title</field>
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants2/multi.xml b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants2/multi.xml
index e22c31ab8ae..830e4fc35f5 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants2/multi.xml
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants2/multi.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="multi" inherits="default"> <!-- default sets default-index to title -->
<dimensions>myquery, myindex </dimensions>
<field name="model"><ref>querybest</ref></field>
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants2/querybest.xml b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants2/querybest.xml
index 8104037db1d..6b426bfac36 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants2/querybest.xml
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants2/querybest.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="querybest" type="model">
<field name="defaultIndex">title</field>
<field name="queryString" overridable="false">best</field>
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants2/querylove.xml b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants2/querylove.xml
index 58df89d86e4..e93b14f8b98 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants2/querylove.xml
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/queryprofilevariants2/querylove.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="querylove" type="model">
<field name="defaultIndex">title</field>
<field name="queryString" overridable="false">love</field>
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/variants/default.xml b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/variants/default.xml
index 3cebc84a042..8881db80ba1 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/variants/default.xml
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/variants/default.xml
@@ -1,4 +1,4 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="default">
<dimensions>d1</dimensions>
<field name="a.b"><ref>main</ref></field>
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/variants/inherited.xml b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/variants/inherited.xml
index 819c9774a02..4f5b681655d 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/variants/inherited.xml
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/variants/inherited.xml
@@ -1,4 +1,4 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="inherited">
<dimensions>d2</dimensions>
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/variants/main.xml b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/variants/main.xml
index 464d9261307..fd8eebde593 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/variants/main.xml
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/variants/main.xml
@@ -1,4 +1,4 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="main">
<dimensions>d1</dimensions>
<query-profile for="d1v" inherits="inherited" />
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessControlTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessControlTest.java
index 39b5cc139d9..9d85b0ed4d1 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessControlTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessControlTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java
index 80aafdd4ec7..0486d463279 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
import com.yahoo.component.ComponentId;
@@ -117,7 +117,7 @@ public class AccessLogTest extends ContainerModelBuilderTestBase {
assertNotNull(connectionLogComponent);
ConnectionLogConfig config = root.getConfig(ConnectionLogConfig.class, "default/component/com.yahoo.container.logging.FileConnectionLog");
assertEquals("default", config.cluster());
- assertEquals(10000, config.queueSize());
+ assertEquals(-1, config.queueSize());
assertEquals(256*1024, config.bufferSize());
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/BundleInstantiationSpecificationBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/BundleInstantiationSpecificationBuilderTest.java
index 70ae6a27324..18520dd2df5 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/BundleInstantiationSpecificationBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/BundleInstantiationSpecificationBuilderTest.java
@@ -1,10 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
import com.yahoo.component.ComponentSpecification;
import com.yahoo.config.model.builder.xml.XmlHelper;
import com.yahoo.container.bundle.BundleInstantiationSpecification;
import com.yahoo.search.grouping.GroupingValidator;
+import com.yahoo.vespa.model.container.PlatformBundles;
import org.junit.Test;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerDocumentApiBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerDocumentApiBuilderTest.java
index 3c733d5109d..ed26dafe60c 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerDocumentApiBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerDocumentApiBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
import com.yahoo.config.model.builder.xml.test.DomBuilderTest;
@@ -6,7 +6,6 @@ import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.config.model.test.MockRoot;
import com.yahoo.container.handler.threadpool.ContainerThreadpoolConfig;
import com.yahoo.vespa.model.container.ContainerCluster;
-import com.yahoo.vespa.model.container.HostProvisionerWithCustomRealResource;
import com.yahoo.vespa.model.container.component.Handler;
import com.yahoo.vespa.model.container.component.SystemBindingPattern;
import com.yahoo.vespa.model.container.component.UserBindingPattern;
@@ -98,7 +97,7 @@ public class ContainerDocumentApiBuilderTest extends ContainerModelBuilderTestBa
" <document-api />",
nodesXml,
"</container>");
- root = new MockRoot("root", new MockApplicationPackage.Builder().build(), new HostProvisionerWithCustomRealResource());
+ root = new MockRoot("root", new MockApplicationPackage.Builder().build());
createModel(root, elem);
Map<String, Handler<?>> handlers = getHandlers("cluster1");
Handler<?> feedApiHandler = handlers.get("com.yahoo.vespa.http.server.FeedHandler");
@@ -107,8 +106,8 @@ public class ContainerDocumentApiBuilderTest extends ContainerModelBuilderTestBa
ContainerThreadpoolConfig config = root.getConfig(
ContainerThreadpoolConfig.class, "cluster1/component/com.yahoo.vespa.http.server.FeedHandler/threadpool@feedapi-handler");
- assertEquals(16, config.maxThreads());
- assertEquals(8, config.minThreads());
+ assertEquals(-4, config.maxThreads());
+ assertEquals(-4, config.minThreads());
}
@Test
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java
index ccee21c87dc..be6d8ca5d0a 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
import com.yahoo.cloud.config.ZookeeperServerConfig;
@@ -7,6 +7,7 @@ import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.NullConfigModelRegistry;
import com.yahoo.config.model.api.ContainerEndpoint;
import com.yahoo.config.model.api.EndpointCertificateSecrets;
+import com.yahoo.config.model.api.ModelContext;
import com.yahoo.config.model.api.TenantSecretStore;
import com.yahoo.config.model.builder.xml.test.DomBuilderTest;
import com.yahoo.config.model.deploy.DeployState;
@@ -16,7 +17,6 @@ import com.yahoo.config.model.provision.InMemoryProvisioner;
import com.yahoo.config.model.provision.SingleNodeProvisioner;
import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.config.model.test.MockRoot;
-import com.yahoo.config.provision.Cloud;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.Flavor;
import com.yahoo.config.provision.RegionName;
@@ -41,10 +41,6 @@ import com.yahoo.net.HostName;
import com.yahoo.path.Path;
import com.yahoo.prelude.cluster.QrMonitorConfig;
import com.yahoo.search.config.QrStartConfig;
-import com.yahoo.security.KeyAlgorithm;
-import com.yahoo.security.KeyUtils;
-import com.yahoo.security.SignatureAlgorithm;
-import com.yahoo.security.X509CertificateBuilder;
import com.yahoo.security.X509CertificateUtils;
import com.yahoo.security.tls.TlsContext;
import com.yahoo.vespa.defaults.Defaults;
@@ -60,26 +56,16 @@ import com.yahoo.vespa.model.container.http.ConnectorFactory;
import com.yahoo.vespa.model.content.utils.ContentClusterUtils;
import com.yahoo.vespa.model.test.VespaModelTester;
import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithFilePkg;
-import org.hamcrest.CoreMatchers;
import org.hamcrest.Matchers;
-import org.hamcrest.core.IsEqual;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;
-import javax.security.auth.x500.X500Principal;
import java.io.IOException;
import java.io.StringReader;
-import java.math.BigInteger;
-import java.security.KeyPair;
-import java.security.cert.X509Certificate;
import java.time.Duration;
-import java.time.Instant;
-import java.time.temporal.ChronoUnit;
-import java.util.ArrayList;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@@ -97,7 +83,6 @@ import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.CoreMatchers.nullValue;
-import static org.hamcrest.Matchers.arrayContainingInAnyOrder;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.hamcrest.Matchers.containsString;
@@ -108,7 +93,6 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -698,36 +682,47 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase {
@Test
public void qrconfig_is_produced() throws IOException, SAXException {
+ QrConfig qr = getQrConfig(new TestProperties());
+ String hostname = HostName.getLocalhost(); // Using the same way of getting hostname as filedistribution model
+ assertEquals("default.container.0", qr.discriminator());
+ assertEquals(19102, qr.rpc().port());
+ assertEquals("vespa/service/default/container.0", qr.rpc().slobrokId());
+ assertTrue(qr.rpc().enabled());
+ assertEquals("", qr.rpc().host());
+ assertFalse(qr.restartOnDeploy());
+ assertEquals("filedistribution/" + hostname, qr.filedistributor().configid());
+ assertEquals(50.0, qr.shutdown().timeout(), 0.00000000000001);
+ assertFalse(qr.shutdown().dumpHeapOnTimeout());
+ }
+ private QrConfig getQrConfig(ModelContext.Properties properties) throws IOException, SAXException {
String servicesXml =
"<services>" +
- "<admin version='3.0'>" +
- " <nodes count='2'/>" +
- "</admin>" +
- "<container id ='default' version='1.0'>" +
- " <nodes>" +
- " <node hostalias='node1' />" +
- " </nodes>" +
- "</container>" +
- "</services>";
+ " <admin version='3.0'>" +
+ " <nodes count='2'/>" +
+ " </admin>" +
+ " <container id ='default' version='1.0'>" +
+ " <nodes>" +
+ " <node hostalias='node1' />" +
+ " </nodes>" +
+ " </container>" +
+ "</services>";
ApplicationPackage applicationPackage = new MockApplicationPackage.Builder()
.withServices(servicesXml)
.build();
VespaModel model = new VespaModel(new NullConfigModelRegistry(), new DeployState.Builder()
.applicationPackage(applicationPackage)
- .properties(new TestProperties())
+ .properties(properties)
.build());
- String hostname = HostName.getLocalhost(); // Using the same way of getting hostname as filedistribution model
+ return model.getConfig(QrConfig.class, "default/container.0");
+ }
- QrConfig config = model.getConfig(QrConfig.class, "default/container.0");
- assertEquals("default.container.0", config.discriminator());
- assertEquals(19102, config.rpc().port());
- assertEquals("vespa/service/default/container.0", config.rpc().slobrokId());
- assertTrue(config.rpc().enabled());
- assertEquals("", config.rpc().host());
- assertFalse(config.restartOnDeploy());
- assertEquals("filedistribution/" + hostname, config.filedistributor().configid());
+ @Test
+ public void control_container_shutdown() throws IOException, SAXException {
+ QrConfig qr = getQrConfig(new TestProperties().containerShutdownTimeout(133).containerDumpHeapOnShutdownTimeout(true));
+ assertEquals(133.0, qr.shutdown().timeout(), 0.00000000000001);
+ assertTrue(qr.shutdown().dumpHeapOnTimeout());
}
@Test
@@ -980,8 +975,7 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase {
DeployState state = new DeployState.Builder().properties(
new TestProperties()
.setHostedVespa(true)
- .setEndpointCertificateSecrets(Optional.of(new EndpointCertificateSecrets("CERT", "KEY")))
- .useAccessControlTlsHandshakeClientAuth(true))
+ .setEndpointCertificateSecrets(Optional.of(new EndpointCertificateSecrets("CERT", "KEY"))))
.build();
createModel(root, state, null, clusterElem);
ApplicationContainer container = (ApplicationContainer)root.getProducer("container/container.0");
@@ -1021,11 +1015,8 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase {
tlsPort.getConfig(builder);
ConnectorConfig connectorConfig = new ConnectorConfig(builder);
- Set<String> expectedCiphers = new HashSet<>();
- expectedCiphers.add("TLS_RSA_WITH_AES_256_GCM_SHA384");
- expectedCiphers.addAll(TlsContext.ALLOWED_CIPHER_SUITES);
- assertThat(connectorConfig.ssl().enabledCipherSuites(), containsInAnyOrder(expectedCiphers.toArray()));
+ assertThat(connectorConfig.ssl().enabledCipherSuites(), containsInAnyOrder(TlsContext.ALLOWED_CIPHER_SUITES.toArray()));
}
@Test
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java
index 7034176da14..5f6513f5803 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
import com.yahoo.collections.Pair;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/DocprocBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/DocprocBuilderTest.java
index e9048cf7863..5bf64338aa9 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/DocprocBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/DocprocBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
import com.yahoo.config.docproc.DocprocConfig;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/IdentityBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/IdentityBuilderTest.java
index 9794062d83f..73bef70910d 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/IdentityBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/IdentityBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
import com.yahoo.config.application.api.ApplicationPackage;
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 b3b347aaa7f..5221139ceaa 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
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
import com.yahoo.config.model.api.EndpointCertificateSecrets;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/RoutingBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/RoutingBuilderTest.java
index 6ebd530ca8c..c78c4d617ea 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/RoutingBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/RoutingBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
import com.yahoo.config.application.api.ApplicationPackage;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/SearchBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/SearchBuilderTest.java
index 4c1fda44038..794cfa1f18a 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/SearchBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/SearchBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
import com.yahoo.component.ComponentId;
@@ -242,9 +242,9 @@ public class SearchBuilderTest extends ContainerModelBuilderTestBase {
ContainerThreadpoolConfig config = root.getConfig(
ContainerThreadpoolConfig.class, "default/component/" + SearchHandler.HANDLER_CLASS + "/threadpool@search-handler");
- assertEquals(500, config.maxThreads());
- assertEquals(500, config.minThreads());
- assertEquals(0, config.queueSize());
+ assertEquals(-2, config.maxThreads());
+ assertEquals(-2, config.minThreads());
+ assertEquals(-40, config.queueSize());
}
@Test
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java
index c0b1a64bace..94e9b3477a7 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java
@@ -1,14 +1,10 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
-import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.api.ModelContext;
-import com.yahoo.config.model.application.provider.BaseDeployLogger;
import com.yahoo.config.model.deploy.TestProperties;
-import com.yahoo.searchdefinition.derived.TestableDeployLogger;
import com.yahoo.text.XML;
import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
-import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
@@ -28,7 +24,6 @@ public class ClusterResourceLimitsTest {
private static class Fixture {
private final boolean enableFeedBlockInDistributor;
private final boolean hostedVespa;
- private final boolean throwIfSpecified;
private final ResourceLimits.Builder ctrlBuilder = new ResourceLimits.Builder();
private final ResourceLimits.Builder nodeBuilder = new ResourceLimits.Builder();
@@ -37,13 +32,12 @@ public class ClusterResourceLimitsTest {
}
public Fixture(boolean enableFeedBlockInDistributor) {
- this(enableFeedBlockInDistributor, false, false);
+ this(enableFeedBlockInDistributor, false);
}
- public Fixture(boolean enableFeedBlockInDistributor, boolean hostedVespa, boolean throwIfSpecified) {
+ public Fixture(boolean enableFeedBlockInDistributor, boolean hostedVespa) {
this.enableFeedBlockInDistributor = enableFeedBlockInDistributor;
this.hostedVespa = hostedVespa;
- this.throwIfSpecified = throwIfSpecified;
}
public Fixture ctrlDisk(double limit) {
@@ -66,8 +60,6 @@ public class ClusterResourceLimitsTest {
ModelContext.FeatureFlags featureFlags = new TestProperties();
var builder = new ClusterResourceLimits.Builder(enableFeedBlockInDistributor,
hostedVespa,
- throwIfSpecified,
- new BaseDeployLogger(),
featureFlags.resourceLimitDisk(),
featureFlags.resourceLimitMemory());
builder.setClusterControllerBuilder(ctrlBuilder);
@@ -144,48 +136,18 @@ public class ClusterResourceLimitsTest {
}
@Test
- @Ignore // TODO: Remove hosted_limits_are_used_if_app_is_allowed_to_set_limits and enable this when code is fixed to do so
- public void hosted_log_when_resource_limits_are_specified() {
- TestableDeployLogger logger = new TestableDeployLogger();
-
- var limits = hostedBuildAndLogIfSpecified(logger);
- assertEquals(1, logger.warnings.size());
- assertEquals("Element 'resource-limits' is not allowed to be set", logger.warnings.get(0));
-
- // Verify that default limits are used
- assertLimits(0.8, 0.8, limits.getClusterControllerLimits());
- assertLimits(0.9, 0.9, limits.getContentNodeLimits());
- }
-
- @Test
public void hosted_exception_is_thrown_when_resource_limits_are_specified() {
expectedException.expect(IllegalArgumentException.class);
expectedException.expectMessage(containsString("Element 'resource-limits' is not allowed to be set"));
- hostedBuildAndThrowIfSpecified();
- }
-
- @Test
- // TODO: Remove this and enable hosted_log_when_resource_limits_are_specified when code is fixed to do so
- public void hosted_limits_are_used_if_app_is_allowed_to_set_limits() {
- TestableDeployLogger logger = new TestableDeployLogger();
-
- var limits = hostedBuildAndLogIfSpecified(logger);
- assertEquals(1, logger.warnings.size());
- assertEquals("Element 'resource-limits' is not allowed to be set", logger.warnings.get(0));
-
- // Verify that limits in XML are used
- assertLimits(0.8, 0.92, limits.getClusterControllerLimits());
- assertLimits(0.9, 0.96, limits.getContentNodeLimits());
+ hostedBuild();
}
@Test
public void hosted_limits_from_feature_flag_are_used() {
- TestableDeployLogger logger = new TestableDeployLogger();
-
TestProperties featureFlags = new TestProperties();
featureFlags.setResourceLimitDisk(0.85);
featureFlags.setResourceLimitMemory(0.90);
- var limits = hostedBuild(false, logger, featureFlags, false);
+ var limits = hostedBuild(featureFlags, false);
// Verify that limits from feature flags are used
assertLimits(0.85, 0.90, limits.getClusterControllerLimits());
@@ -194,35 +156,23 @@ public class ClusterResourceLimitsTest {
@Test
public void exception_is_thrown_when_resource_limits_are_out_of_range() {
- TestableDeployLogger logger = new TestableDeployLogger();
-
TestProperties featureFlags = new TestProperties();
featureFlags.setResourceLimitDisk(1.1);
expectedException.expect(IllegalArgumentException.class);
expectedException.expectMessage(containsString("Resource limit for disk is set to illegal value 1.1, but must be in the range [0.0, 1.0]"));
- hostedBuild(false, logger, featureFlags, false);
+ hostedBuild(featureFlags, false);
featureFlags = new TestProperties();
featureFlags.setResourceLimitDisk(-0.1);
expectedException.expectMessage(containsString("Resource limit for disk is set to illegal value -0.1, but must be in the range [0.0, 1.0]"));
- hostedBuild(false, logger, featureFlags, false);
- }
-
- private void hostedBuildAndThrowIfSpecified() {
- hostedBuild(true, new TestableDeployLogger(), new TestProperties(), true);
- }
-
- private ClusterResourceLimits hostedBuildAndLogIfSpecified(DeployLogger deployLogger) {
- return hostedBuild(false, deployLogger);
+ hostedBuild(featureFlags, false);
}
- private ClusterResourceLimits hostedBuild(boolean throwIfSpecified, DeployLogger deployLogger) {
- return hostedBuild(throwIfSpecified, deployLogger, new TestProperties(), true);
+ private ClusterResourceLimits hostedBuild() {
+ return hostedBuild(new TestProperties(), true);
}
- private ClusterResourceLimits hostedBuild(boolean throwIfSpecified,
- DeployLogger deployLogger,
- ModelContext.FeatureFlags featureFlags,
+ private ClusterResourceLimits hostedBuild(ModelContext.FeatureFlags featureFlags,
boolean limitsInXml) {
Document clusterXml = XML.getDocument("<cluster id=\"test\">" +
" <tuning>\n" +
@@ -237,8 +187,6 @@ public class ClusterResourceLimitsTest {
ClusterResourceLimits.Builder builder = new ClusterResourceLimits.Builder(true,
true,
- throwIfSpecified,
- deployLogger,
featureFlags.resourceLimitDisk(),
featureFlags.resourceLimitMemory());
return builder.build(new ModelElement((limitsInXml ? clusterXml : noLimitsXml).getDocumentElement()));
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentBaseTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentBaseTest.java
index f5642922d5b..03fcf8df213 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentBaseTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentBaseTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.messagebus.routing.RouteSpec;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java
index 13d02fc1fb8..759aad81e5f 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java
@@ -1,15 +1,18 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.config.model.api.ModelContext;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.deploy.TestProperties;
+import com.yahoo.config.model.provision.SingleNodeProvisioner;
import com.yahoo.config.model.test.MockRoot;
import com.yahoo.config.model.test.TestDriver;
import com.yahoo.config.model.test.TestRoot;
import com.yahoo.config.provision.Environment;
+import com.yahoo.config.provision.Flavor;
import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.Zone;
+import com.yahoo.config.provisioning.FlavorsConfig;
import com.yahoo.container.ComponentsConfig;
import com.yahoo.messagebus.routing.RoutingTableSpec;
import com.yahoo.metrics.MetricsmanagerConfig;
@@ -550,15 +553,15 @@ public class ContentClusterTest extends ContentBaseTest {
{
StorServerConfig.Builder builder = new StorServerConfig.Builder();
- cluster.getStorageNodes().getConfig(builder);
- cluster.getStorageNodes().getChildren().get("0").getConfig(builder);
+ cluster.getStorageCluster().getConfig(builder);
+ cluster.getStorageCluster().getChildren().get("0").getConfig(builder);
StorServerConfig config = new StorServerConfig(builder);
}
{
StorServerConfig.Builder builder = new StorServerConfig.Builder();
- cluster.getStorageNodes().getConfig(builder);
- cluster.getStorageNodes().getChildren().get("1").getConfig(builder);
+ cluster.getStorageCluster().getConfig(builder);
+ cluster.getStorageCluster().getChildren().get("1").getConfig(builder);
StorServerConfig config = new StorServerConfig(builder);
}
}
@@ -632,8 +635,8 @@ public class ContentClusterTest extends ContentBaseTest {
{
StorServerConfig.Builder builder = new StorServerConfig.Builder();
- cluster.getStorageNodes().getConfig(builder);
- cluster.getStorageNodes().getChildren().get("0").getConfig(builder);
+ cluster.getStorageCluster().getConfig(builder);
+ cluster.getStorageCluster().getChildren().get("0").getConfig(builder);
StorServerConfig config = new StorServerConfig(builder);
@@ -693,7 +696,7 @@ public class ContentClusterTest extends ContentBaseTest {
assertEquals("partofsum", config.consumer(5).removedtags(1));
assertEquals(0, config.consumer(5).tags().size());
- cluster.getStorageNodes().getConfig(builder);
+ cluster.getStorageCluster().getConfig(builder);
config = new MetricsmanagerConfig(builder);
assertEquals(6, config.consumer().size());
@@ -798,13 +801,25 @@ public class ContentClusterTest extends ContentBaseTest {
assertPrepareRestartCommand(createClusterWithFlushOnShutdownOverride(true, true));
}
- private static ContentCluster createOneNodeCluster(boolean isHostedVespa) throws Exception {
- return createOneNodeCluster("<content version=\"1.0\" id=\"mockcluster\">" +
+ private static String oneNodeClusterXml() {
+ return "<content version=\"1.0\" id=\"mockcluster\">" +
" <documents/>" +
" <group>" +
" <node distribution-key=\"0\" hostalias=\"mockhost\"/>" +
" </group>" +
- "</content>", isHostedVespa);
+ "</content>";
+ }
+
+ private static ContentCluster createOneNodeCluster(boolean isHostedVespa) throws Exception {
+ return createOneNodeCluster(oneNodeClusterXml(), new TestProperties().setHostedVespa(isHostedVespa));
+ }
+
+ private static ContentCluster createOneNodeCluster(TestProperties props) throws Exception {
+ return createOneNodeCluster(oneNodeClusterXml(), props);
+ }
+
+ private static ContentCluster createOneNodeCluster(TestProperties props, Optional<Flavor> flavor) throws Exception {
+ return createOneNodeCluster(oneNodeClusterXml(), props, flavor);
}
private static ContentCluster createClusterWithFlushOnShutdownOverride(boolean flushOnShutdown, boolean isHostedVespa) throws Exception {
@@ -818,13 +833,20 @@ public class ContentClusterTest extends ContentBaseTest {
" <group>" +
" <node distribution-key=\"0\" hostalias=\"mockhost\"/>" +
" </group>" +
- "</content>", isHostedVespa);
+ "</content>", new TestProperties().setHostedVespa(isHostedVespa));
}
- private static ContentCluster createOneNodeCluster(String clusterXml, boolean isHostedVespa) throws Exception {
+ private static ContentCluster createOneNodeCluster(String clusterXml, TestProperties props) throws Exception {
+ return createOneNodeCluster(clusterXml, props, Optional.empty());
+ }
+
+ private static ContentCluster createOneNodeCluster(String clusterXml, TestProperties props, Optional<Flavor> flavor) throws Exception {
DeployState.Builder deployStateBuilder = new DeployState.Builder()
- .properties(new TestProperties().setHostedVespa(isHostedVespa));
- MockRoot root = ContentClusterUtils.createMockRoot(Collections.emptyList(), deployStateBuilder);
+ .properties(props);
+ MockRoot root = flavor.isPresent() ?
+ ContentClusterUtils.createMockRoot(new SingleNodeProvisioner(flavor.get()),
+ Collections.emptyList(), deployStateBuilder) :
+ ContentClusterUtils.createMockRoot(Collections.emptyList(), deployStateBuilder);
ContentCluster cluster = ContentClusterUtils.createCluster(clusterXml, root);
root.freezeModelTopology();
cluster.validate();
@@ -1015,41 +1037,68 @@ public class ContentClusterTest extends ContentBaseTest {
}
}
- private StorDistributormanagerConfig resolveStorDistributormanagerConfig(TestProperties props) {
- VespaModel model = createEnd2EndOneNode(props);
+ private StorDistributormanagerConfig resolveStorDistributormanagerConfig(TestProperties props) throws Exception {
+ var cc = createOneNodeCluster(props);
- ContentCluster cc = model.getContentClusters().get("storage");
var builder = new StorDistributormanagerConfig.Builder();
cc.getDistributorNodes().getConfig(builder);
return (new StorDistributormanagerConfig(builder));
}
- private int resolveMaxInhibitedGroupsConfigWithFeatureFlag(int maxGroups) {
+ private int resolveMaxInhibitedGroupsConfigWithFeatureFlag(int maxGroups) throws Exception {
var cfg = resolveStorDistributormanagerConfig(new TestProperties().maxActivationInhibitedOutOfSyncGroups(maxGroups));
return cfg.max_activation_inhibited_out_of_sync_groups();
}
@Test
- public void default_distributor_max_inhibited_group_activation_config_controlled_by_properties() {
+ public void default_distributor_max_inhibited_group_activation_config_controlled_by_properties() throws Exception {
assertEquals(0, resolveMaxInhibitedGroupsConfigWithFeatureFlag(0));
assertEquals(2, resolveMaxInhibitedGroupsConfigWithFeatureFlag(2));
}
- private int resolveNumDistributorStripesConfigWithFeatureFlag(TestProperties props) {
- var cfg = resolveStorDistributormanagerConfig(props);
- return cfg.num_distributor_stripes();
+ private int resolveNumDistributorStripesConfig(Optional<Flavor> flavor) throws Exception {
+ var cc = createOneNodeCluster(new TestProperties(), flavor);
+ var builder = new StorDistributormanagerConfig.Builder();
+ cc.getDistributorNodes().getChildren().get("0").getConfig(builder);
+ return (new StorDistributormanagerConfig(builder)).num_distributor_stripes();
+ }
+
+ private int resolveTunedNumDistributorStripesConfig(int numCpuCores) throws Exception {
+ var flavor = new Flavor(new FlavorsConfig.Flavor(new FlavorsConfig.Flavor.Builder().name("test").minCpuCores(numCpuCores)));
+ return resolveNumDistributorStripesConfig(Optional.of(flavor));
}
- private int resolveNumDistributorStripesConfigWithFeatureFlag(int numStripes) {
- return resolveNumDistributorStripesConfigWithFeatureFlag(new TestProperties().setNumDistributorStripes(numStripes));
+ @Test
+ public void num_distributor_stripes_config_defaults_to_zero() throws Exception {
+ // This triggers tuning when starting the distributor process, based on CPU core sampling on the node.
+ assertEquals(0, resolveNumDistributorStripesConfig(Optional.empty()));
}
@Test
- public void num_distributor_stripes_config_controlled_by_properties() {
- assertEquals(0, resolveNumDistributorStripesConfigWithFeatureFlag(new TestProperties()));
- assertEquals(0, resolveNumDistributorStripesConfigWithFeatureFlag(0));
- assertEquals(1, resolveNumDistributorStripesConfigWithFeatureFlag(1));
+ public void num_distributor_stripes_config_tuned_by_flavor() throws Exception {
+ assertEquals(1, resolveTunedNumDistributorStripesConfig(1));
+ assertEquals(1, resolveTunedNumDistributorStripesConfig(16));
+ assertEquals(2, resolveTunedNumDistributorStripesConfig(17));
+ assertEquals(2, resolveTunedNumDistributorStripesConfig(64));
+ assertEquals(4, resolveTunedNumDistributorStripesConfig(65));
+ }
+
+ @Test
+ public void distributor_merge_busy_wait_controlled_by_properties() throws Exception {
+ assertEquals(10, resolveDistributorMergeBusyWaitConfig(Optional.empty()));
+ assertEquals(1, resolveDistributorMergeBusyWaitConfig(Optional.of(1)));
+ }
+
+ private int resolveDistributorMergeBusyWaitConfig(Optional<Integer> mergeBusyWait) throws Exception {
+ var props = new TestProperties();
+ if (mergeBusyWait.isPresent()) {
+ props.setDistributorMergeBusyWait(mergeBusyWait.get());
+ }
+ var cluster = createOneNodeCluster(props);
+ var builder = new StorDistributormanagerConfig.Builder();
+ cluster.getDistributorNodes().getConfig(builder);
+ return (new StorDistributormanagerConfig(builder)).inhibit_merge_sending_on_busy_node_duration_sec();
}
@Test
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentSearchClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentSearchClusterTest.java
index 46bd005deb6..c5b2b71a6b4 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentSearchClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentSearchClusterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.config.model.deploy.DeployState;
@@ -99,7 +99,7 @@ public class ContentSearchClusterTest {
private static void assertClusterControllerResourceLimits(double expDiskLimit, double expMemoryLimit, ContentCluster cluster) {
var limits = getFleetcontrollerConfig(cluster).cluster_feed_block_limit();
- assertEquals(4, limits.size());
+ assertEquals(3, limits.size());
assertEquals(expDiskLimit, limits.get("disk"), EPSILON);
assertEquals(expMemoryLimit, limits.get("memory"), EPSILON);
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentSearchTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentSearchTest.java
index 8bdfd68dd62..12f3d722e5e 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentSearchTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentSearchTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import org.junit.Test;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/DispatchTuningTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/DispatchTuningTest.java
index 27a01750210..c3a40946c06 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/DispatchTuningTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/DispatchTuningTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import org.junit.Test;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/DistributorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/DistributorTest.java
index 97abb44a0cf..90e3aff0c45 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/DistributorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/DistributorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.vespa.config.content.core.StorCommunicationmanagerConfig;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java
index dedf344c546..b27a8a192bc 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java
@@ -1,8 +1,7 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.config.model.api.ModelContext;
-import com.yahoo.config.model.application.provider.BaseDeployLogger;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.test.MockRoot;
@@ -17,10 +16,10 @@ import static org.junit.Assert.assertEquals;
public class FleetControllerClusterTest {
- private ClusterControllerConfig parse(String xml, boolean enableFeedBlockInDistributor) {
+ private ClusterControllerConfig parse(String xml, TestProperties props) {
Document doc = XML.getDocument(xml);
- var deployState = new DeployState.Builder().properties(
- new TestProperties().enableFeedBlockInDistributor(enableFeedBlockInDistributor)).build();
+ var deployState = new DeployState.Builder().properties(props).build();
+ boolean enableFeedBlockInDistributor = deployState.getProperties().featureFlags().enableFeedBlockInDistributor();
MockRoot root = new MockRoot("", deployState);
var clusterElement = new ModelElement(doc.getDocumentElement());
ModelContext.FeatureFlags featureFlags = new TestProperties();
@@ -28,8 +27,6 @@ public class FleetControllerClusterTest {
clusterElement,
new ClusterResourceLimits.Builder(enableFeedBlockInDistributor,
false,
- false,
- new BaseDeployLogger(),
featureFlags.resourceLimitDisk(),
featureFlags.resourceLimitMemory())
.build(clusterElement).getClusterControllerLimits())
@@ -37,7 +34,7 @@ public class FleetControllerClusterTest {
}
private ClusterControllerConfig parse(String xml) {
- return parse(xml, true);
+ return parse(xml, new TestProperties().enableFeedBlockInDistributor(true));
}
@Test
@@ -124,11 +121,10 @@ public class FleetControllerClusterTest {
private void assertLimits(double expDisk, double expMemory, FleetcontrollerConfig config) {
var limits = config.cluster_feed_block_limit();
- assertEquals(4, limits.size());
+ assertEquals(3, limits.size());
assertEquals(expDisk, limits.get("disk"), DELTA);
assertEquals(expMemory, limits.get("memory"), DELTA);
- assertEquals(0.89, limits.get("attribute-enum-store"), DELTA);
- assertEquals(0.89, limits.get("attribute-multi-value"), DELTA);
+ assertEquals(0.89, limits.get("attribute-address-space"), DELTA);
}
private FleetcontrollerConfig getConfigForResourceLimitsTuning(Double diskLimit, Double memoryLimit) {
@@ -153,20 +149,32 @@ public class FleetControllerClusterTest {
}
private void verifyThatFeatureFlagControlsEnableClusterFeedBlock(boolean flag) {
- var config = getConfigForBasicCluster(flag);
+ var config = getConfigForBasicCluster(new TestProperties().enableFeedBlockInDistributor(flag));
assertEquals(flag, config.enable_cluster_feed_block());
}
- private FleetcontrollerConfig getConfigForBasicCluster(boolean enableFeedBlockInDistributor) {
+ @Test
+ public void feature_flag_controls_min_node_ratio_per_group() {
+ verifyFeatureFlagControlsMinNodeRatioPerGroup(0.0, new TestProperties());
+ verifyFeatureFlagControlsMinNodeRatioPerGroup(0.3,
+ new TestProperties().setMinNodeRatioPerGroup(0.3));
+ }
+
+ private void verifyFeatureFlagControlsMinNodeRatioPerGroup(double expRatio, TestProperties props) {
+ var config = getConfigForBasicCluster(props);
+ assertEquals(expRatio, config.min_node_ratio_per_group(), DELTA);
+ }
+
+ private FleetcontrollerConfig getConfigForBasicCluster(TestProperties props) {
var builder = new FleetcontrollerConfig.Builder();
parse("<cluster id=\"storage\">\n" +
" <documents/>\n" +
- "</cluster>", enableFeedBlockInDistributor).
+ "</cluster>", props).
getConfig(builder);
return new FleetcontrollerConfig(builder);
}
private FleetcontrollerConfig getConfigForBasicCluster() {
- return getConfigForBasicCluster(true);
+ return getConfigForBasicCluster(new TestProperties().enableFeedBlockInDistributor(true));
}
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/GenericConfigTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/GenericConfigTest.java
index 51d0afc1f93..2b484529cd3 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/GenericConfigTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/GenericConfigTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.vespa.config.content.StorFilestorConfig;
@@ -55,7 +55,7 @@ public class GenericConfigTest {
@Test
public void config_override_on_root_is_visible_on_storage_cluster() {
- StorageCluster cluster = model.getContentClusters().get("storage").getStorageNodes();
+ StorageCluster cluster = model.getContentClusters().get("storage").getStorageCluster();
StorFilestorConfig config = model.getConfig(StorFilestorConfig.class, cluster.getConfigId());
assertThat(config.num_threads(), is(7));
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/GlobalDistributionValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/GlobalDistributionValidatorTest.java
index 6506f7a08a8..1143543a213 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/GlobalDistributionValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/GlobalDistributionValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.documentmodel.NewDocumentType;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedHierarchicDistributionTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedHierarchicDistributionTest.java
index 6c8cb393d3f..125d8c7fc40 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedHierarchicDistributionTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedHierarchicDistributionTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.vespa.config.content.StorDistributionConfig;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedSearchNodeNamingTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedSearchNodeNamingTest.java
index 721a1dcd7e4..55c9853b02b 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedSearchNodeNamingTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedSearchNodeNamingTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.vespa.config.search.core.ProtonConfig;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedTest.java
index 5d4756c430d..4522e5cfd03 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.cloud.config.ClusterListConfig;
@@ -179,8 +179,8 @@ public class IndexedTest extends ContentBaseTest {
assertFalse(s.getSearch().hasIndexedCluster());
StorServerConfig.Builder builder = new StorServerConfig.Builder();
- s.getStorageNodes().getConfig(builder);
- s.getStorageNodes().getChildren().get("3").getConfig(builder);
+ s.getStorageCluster().getConfig(builder);
+ s.getStorageCluster().getChildren().get("3").getConfig(builder);
}
@Test
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/IndexingAndDocprocRoutingTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/IndexingAndDocprocRoutingTest.java
index e16862230fc..d2dcc307871 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/IndexingAndDocprocRoutingTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/IndexingAndDocprocRoutingTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.messagebus.routing.Hop;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/MonitoringConfigSnoopTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/MonitoringConfigSnoopTest.java
index d73140d39d5..ff34b6ac0d8 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/MonitoringConfigSnoopTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/MonitoringConfigSnoopTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.config.model.test.TestDriver;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/RedundancyTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/RedundancyTest.java
index eef48120da8..437af50e3ef 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/RedundancyTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/RedundancyTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import org.junit.Test;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/ReservedDocumentTypeNameValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/ReservedDocumentTypeNameValidatorTest.java
index 66f59717407..e73cd98f32e 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/ReservedDocumentTypeNameValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/ReservedDocumentTypeNameValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.documentmodel.NewDocumentType;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/SearchCoverageTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/SearchCoverageTest.java
index d2f3c92ee70..8db115aeb10 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/SearchCoverageTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/SearchCoverageTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import org.junit.Test;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java
index 9a681003293..9d8d7509966 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.config.model.api.ModelContext;
@@ -66,7 +66,7 @@ public class StorageClusterTest {
ContentCluster cluster = ContentClusterUtils.createCluster(xml, root);
root.freezeModelTopology();
- return cluster.getStorageNodes();
+ return cluster.getStorageCluster();
}
private static String group() {
@@ -118,6 +118,7 @@ public class StorageClusterTest {
StorServerConfig config = new StorServerConfig(builder);
assertEquals(16, config.max_merges_per_node());
assertEquals(1024, config.max_merge_queue_size());
+ assertFalse(config.disable_queue_limits_for_chained_merges());
}
@Test
@@ -134,17 +135,30 @@ public class StorageClusterTest {
assertEquals(1024, config.max_merges_per_node());
assertEquals(1024*10, config.max_merge_queue_size());
}
- @Test
- public void testMergeFeatureFlags() {
+
+ private StorServerConfig configFromProperties(TestProperties properties) {
StorServerConfig.Builder builder = new StorServerConfig.Builder();
- parse(cluster("foofighters", ""), new TestProperties().setMaxMergeQueueSize(1919).setMaxConcurrentMergesPerNode(37)).getConfig(builder);
+ parse(cluster("foofighters", ""), properties).getConfig(builder);
+ return new StorServerConfig(builder);
+ }
- StorServerConfig config = new StorServerConfig(builder);
+ @Test
+ public void testMergeFeatureFlags() {
+ var config = configFromProperties(new TestProperties().setMaxMergeQueueSize(1919).setMaxConcurrentMergesPerNode(37));
assertEquals(37, config.max_merges_per_node());
assertEquals(1919, config.max_merge_queue_size());
}
@Test
+ public void ignore_merge_queue_limit_can_be_controlled_by_feature_flag() {
+ var config = configFromProperties(new TestProperties().setIgnoreMergeQueueLimit(true));
+ assertTrue(config.disable_queue_limits_for_chained_merges());
+
+ config = configFromProperties(new TestProperties().setIgnoreMergeQueueLimit(false));
+ assertFalse(config.disable_queue_limits_for_chained_merges());
+ }
+
+ @Test
public void testVisitors() {
StorVisitorConfig.Builder builder = new StorVisitorConfig.Builder();
parse(cluster("bees",
@@ -314,9 +328,9 @@ public class StorageClusterTest {
ContentCluster cluster = ContentClusterUtils.createCluster(xml, new MockRoot());
for (int i = 0; i < 3; ++i) {
- StorageNode node = cluster.getStorageNodes().getChildren().get("" + i);
+ StorageNode node = cluster.getStorageCluster().getChildren().get("" + i);
StorServerConfig.Builder builder = new StorServerConfig.Builder();
- cluster.getStorageNodes().getConfig(builder);
+ cluster.getStorageCluster().getConfig(builder);
node.getConfig(builder);
StorServerConfig config = new StorServerConfig(builder);
assertEquals(1.0 + (double)i * 0.5, config.node_capacity(), 0.001);
@@ -327,11 +341,11 @@ public class StorageClusterTest {
public void testRootFolder() {
ContentCluster cluster = ContentClusterUtils.createCluster(cluster("storage", ""), new MockRoot());
- StorageNode node = cluster.getStorageNodes().getChildren().get("0");
+ StorageNode node = cluster.getStorageCluster().getChildren().get("0");
{
StorServerConfig.Builder builder = new StorServerConfig.Builder();
- cluster.getStorageNodes().getConfig(builder);
+ cluster.getStorageCluster().getConfig(builder);
node.getConfig(builder);
StorServerConfig config = new StorServerConfig(builder);
assertEquals(getDefaults().underVespaHome("var/db/vespa/search/storage/storage/0"), config.root_folder());
@@ -364,7 +378,7 @@ public class StorageClusterTest {
ContentCluster cluster = ContentClusterUtils.createCluster(xml, new MockRoot());
PersistenceConfig.Builder builder = new PersistenceConfig.Builder();
- cluster.getStorageNodes().getConfig(builder);
+ cluster.getStorageCluster().getConfig(builder);
PersistenceConfig config = new PersistenceConfig(builder);
assertTrue(config.fail_partition_on_error());
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/StorageContentTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/StorageContentTest.java
index e099476ebb6..bbfcc0ac4c4 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/StorageContentTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/StorageContentTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.documentapi.messagebus.protocol.DocumentrouteselectorpolicyConfig;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/StorageGroupTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/StorageGroupTest.java
index b9495d45e08..7ea8420c162 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/StorageGroupTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/StorageGroupTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.config.model.test.MockRoot;
@@ -32,9 +32,9 @@ public class StorageGroupTest {
"</content>"
);
- assertEquals("content", cluster.getStorageNodes().getChildren().get("0").getServicePropertyString("clustertype"));
- assertEquals("storage", cluster.getStorageNodes().getChildren().get("0").getServicePropertyString("clustername"));
- assertEquals("0", cluster.getStorageNodes().getChildren().get("0").getServicePropertyString("index"));
+ assertEquals("content", cluster.getStorageCluster().getChildren().get("0").getServicePropertyString("clustertype"));
+ assertEquals("storage", cluster.getStorageCluster().getChildren().get("0").getServicePropertyString("clustername"));
+ assertEquals("0", cluster.getStorageCluster().getChildren().get("0").getServicePropertyString("index"));
assertEquals("content", cluster.getDistributorNodes().getChildren().get("0").getServicePropertyString("clustertype"));
assertEquals("storage", cluster.getDistributorNodes().getChildren().get("0").getServicePropertyString("clustername"));
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/TopologicalDocumentTypeSorterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/TopologicalDocumentTypeSorterTest.java
index 09e3473ecb0..b6e2e9e4eae 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/TopologicalDocumentTypeSorterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/TopologicalDocumentTypeSorterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
import com.yahoo.documentmodel.NewDocumentType;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java
index 1426b094971..8c81ea28b4c 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.cluster;
import com.yahoo.config.application.api.ApplicationPackage;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/DomContentSearchBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/DomContentSearchBuilderTest.java
index fa38b415cd6..5222d0a8715 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/DomContentSearchBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/DomContentSearchBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.cluster;
import com.yahoo.vespa.model.content.ContentSearch;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/DomDispatchTuningBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/DomDispatchTuningBuilderTest.java
index 7533bf1ef9d..a9a784668b3 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/DomDispatchTuningBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/DomDispatchTuningBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.cluster;
import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/DomSearchCoverageBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/DomSearchCoverageBuilderTest.java
index 107e8968c1a..7512b6b5469 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/DomSearchCoverageBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/DomSearchCoverageBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.cluster;
import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/GlobalDistributionBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/GlobalDistributionBuilderTest.java
index eb26153908a..8f654a86fef 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/GlobalDistributionBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/GlobalDistributionBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.cluster;
import com.yahoo.documentmodel.NewDocumentType;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ApplicationPackageBuilder.java b/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ApplicationPackageBuilder.java
index 5fc213fad1d..18910dc4514 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ApplicationPackageBuilder.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ApplicationPackageBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.utils;
import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithMockPkg;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterBuilder.java b/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterBuilder.java
index d97aeffb107..b56f8fa2f25 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterBuilder.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.utils;
import com.yahoo.config.model.test.MockRoot;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterUtils.java b/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterUtils.java
index b816d803276..291ae97696b 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterUtils.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterUtils.java
@@ -1,10 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.utils;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.ConfigModelContext;
import com.yahoo.config.model.api.HostProvisioner;
-import com.yahoo.config.model.application.provider.MockFileRegistry;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.provision.InMemoryProvisioner;
import com.yahoo.config.model.provision.SingleNodeProvisioner;
@@ -15,7 +14,6 @@ import com.yahoo.vespa.model.admin.Admin;
import com.yahoo.vespa.model.admin.monitoring.DefaultMonitoring;
import com.yahoo.vespa.model.admin.monitoring.builder.Metrics;
import com.yahoo.vespa.model.content.cluster.ContentCluster;
-import com.yahoo.vespa.model.filedistribution.FileDistributionConfigProducer;
import org.w3c.dom.Document;
import java.util.Collections;
@@ -37,7 +35,7 @@ public class ContentClusterUtils {
return createMockRoot(provisioner, schemas, new DeployState.Builder());
}
- private static MockRoot createMockRoot(HostProvisioner provisioner, List<String> schemas, DeployState.Builder deployStateBuilder) {
+ public static MockRoot createMockRoot(HostProvisioner provisioner, List<String> schemas, DeployState.Builder deployStateBuilder) {
ApplicationPackage applicationPackage = new MockApplicationPackage.Builder().withSchemas(schemas).build();
DeployState deployState = deployStateBuilder.applicationPackage(applicationPackage)
.modelHostProvisioner(provisioner)
@@ -58,11 +56,15 @@ public class ContentClusterUtils {
}
public static ContentCluster createCluster(String clusterXml, MockRoot root) {
+ ConfigModelContext.ApplicationType applicationType = ConfigModelContext.ApplicationType.DEFAULT;
+ Admin admin = new Admin(root,
+ new DefaultMonitoring(),
+ new Metrics(),
+ false,
+ root.getDeployState().isHosted(),
+ applicationType);
Document doc = XML.getDocument(clusterXml);
- Admin admin = new Admin(root, new DefaultMonitoring("vespa", 60), new Metrics(), false,
- new FileDistributionConfigProducer(root, new MockFileRegistry(), List.of(), false),
- root.getDeployState().isHosted());
- ConfigModelContext context = ConfigModelContext.create(null, root.getDeployState(),
+ ConfigModelContext context = ConfigModelContext.create(applicationType, root.getDeployState(),
null,null, root, null);
return new ContentCluster.Builder(admin).build(Collections.emptyList(), context, doc.getDocumentElement());
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/utils/DocType.java b/config-model/src/test/java/com/yahoo/vespa/model/content/utils/DocType.java
index ba10634081f..5078eadd133 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/utils/DocType.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/utils/DocType.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.utils;
import java.util.Arrays;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/utils/SchemaBuilder.java b/config-model/src/test/java/com/yahoo/vespa/model/content/utils/SchemaBuilder.java
index c18dac17064..12d14448511 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/utils/SchemaBuilder.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/utils/SchemaBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content.utils;
import java.util.Arrays;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/filedistribution/FileDistributorTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/filedistribution/FileDistributorTestCase.java
deleted file mode 100644
index 55672c5aa16..00000000000
--- a/config-model/src/test/java/com/yahoo/vespa/model/filedistribution/FileDistributorTestCase.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.model.filedistribution;
-
-import com.yahoo.config.FileReference;
-import com.yahoo.config.model.api.FileDistribution;
-import com.yahoo.config.model.application.provider.MockFileRegistry;
-import com.yahoo.config.model.test.MockHosts;
-import org.junit.Test;
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-/**
- * @author bratseth
- */
-public class FileDistributorTestCase {
-
- @Test
- public void fileDistributor() {
- MockHosts hosts = new MockHosts();
-
- FileDistributor fileDistributor = new FileDistributor(new MockFileRegistry(), List.of(), false);
-
- String file1 = "component/path1";
- String file2 = "component/path2";
- FileReference ref1 = fileDistributor.sendFileToHost(file1, hosts.host1);
- fileDistributor.sendFileToHost(file1, hosts.host2); // same file reference as above
- FileReference ref2 = fileDistributor.sendFileToHost(file2, hosts.host3);
-
- assertEquals(new HashSet<>(Arrays.asList(hosts.host1, hosts.host2, hosts.host3)),
- fileDistributor.getTargetHosts());
-
- assertNotNull(ref1);
- assertNotNull(ref2);
-
- MockFileDistribution dbHandler = new MockFileDistribution();
- fileDistributor.sendDeployedFiles(dbHandler);
- assertEquals(3, dbHandler.filesToDownloadCalled); // One time for each host
- }
-
- private static class MockFileDistribution implements FileDistribution {
- int filesToDownloadCalled = 0;
-
- @Override
- public void startDownload(String hostName, int port, Set<FileReference> fileReferences) {
- filesToDownloadCalled++;
- }
-
- @Override
- public File getFileReferencesDir() {
- return null;
- }
- }
-
-}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/filedistribution/FileReferencesRepositoryTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/filedistribution/FileReferencesRepositoryTestCase.java
new file mode 100644
index 00000000000..740a6bc6354
--- /dev/null
+++ b/config-model/src/test/java/com/yahoo/vespa/model/filedistribution/FileReferencesRepositoryTestCase.java
@@ -0,0 +1,34 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.model.filedistribution;
+
+import com.yahoo.config.FileReference;
+import com.yahoo.config.application.api.FileRegistry;
+import com.yahoo.config.model.application.provider.MockFileRegistry;
+import org.junit.Test;
+
+import static org.junit.Assert.assertNotNull;
+
+/**
+ * @author bratseth
+ */
+public class FileReferencesRepositoryTestCase {
+
+ @Test
+ public void fileDistributor() {
+ FileRegistry fileRegistry = new MockFileRegistry();
+ FileReferencesRepository fileReferencesRepository = new FileReferencesRepository();
+
+ String file1 = "component/path1";
+ String file2 = "component/path2";
+ FileReference ref1 = fileRegistry.addFile(file1);
+ FileReference ref2 = fileRegistry.addFile(file2);
+ fileReferencesRepository.add(ref1);
+ fileReferencesRepository.add(ref2);
+ fileReferencesRepository.add(ref1); // same file reference as above
+ fileReferencesRepository.add(ref2);
+
+ assertNotNull(ref1);
+ assertNotNull(ref2);
+ }
+
+}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/generic/GenericServicesModelTest.java b/config-model/src/test/java/com/yahoo/vespa/model/generic/GenericServicesModelTest.java
index 5b03d33e568..234a313651c 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/generic/GenericServicesModelTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/generic/GenericServicesModelTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.generic;
import com.yahoo.config.model.ConfigModelContext;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/generic/GenericServicesTest.java b/config-model/src/test/java/com/yahoo/vespa/model/generic/GenericServicesTest.java
index 0e7fce2d1ef..7429c2cc113 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/generic/GenericServicesTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/generic/GenericServicesTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.generic;
import com.yahoo.cloud.config.SentinelConfig;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/ml/ImportedModelTester.java b/config-model/src/test/java/com/yahoo/vespa/model/ml/ImportedModelTester.java
index 7a3b76db7f8..e3362a08048 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/ml/ImportedModelTester.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/ml/ImportedModelTester.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.ml;
import com.google.common.collect.ImmutableList;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/ml/MlModelsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/ml/MlModelsTest.java
index 9e87b5509bc..b1dc78b4bb7 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/ml/MlModelsTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/ml/MlModelsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.ml;
import com.yahoo.config.application.api.ApplicationPackage;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/ml/ModelEvaluationTest.java b/config-model/src/test/java/com/yahoo/vespa/model/ml/ModelEvaluationTest.java
index bdae01d5e09..7627ba6319b 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/ml/ModelEvaluationTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/ml/ModelEvaluationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.ml;
import ai.vespa.models.evaluation.Model;
@@ -124,7 +124,7 @@ public class ModelEvaluationTest {
fileMap.put(onnxModel.fileref().value(), appDir.append(onnxModel.fileref().value()).toFile());
}
FileAcquirer fileAcquirer = MockFileAcquirer.returnFiles(fileMap);
- ModelsEvaluator evaluator = new ModelsEvaluator(config, constantsConfig, onnxModelsConfig, fileAcquirer);
+ ModelsEvaluator evaluator = new ModelsEvaluator(config, constantsConfig, expressionsConfig, onnxModelsConfig, fileAcquirer);
assertEquals(5, evaluator.models().size());
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/ml/StatelessOnnxEvaluationTest.java b/config-model/src/test/java/com/yahoo/vespa/model/ml/StatelessOnnxEvaluationTest.java
index 5c64dd9f8cd..6e096dd68e4 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/ml/StatelessOnnxEvaluationTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/ml/StatelessOnnxEvaluationTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.ml;
import ai.vespa.models.evaluation.FunctionEvaluator;
@@ -14,6 +14,7 @@ import com.yahoo.tensor.Tensor;
import com.yahoo.vespa.config.search.RankProfilesConfig;
import com.yahoo.vespa.config.search.core.OnnxModelsConfig;
import com.yahoo.vespa.config.search.core.RankingConstantsConfig;
+import com.yahoo.vespa.config.search.core.RankingExpressionsConfig;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.container.ApplicationContainerCluster;
import org.junit.Test;
@@ -38,6 +39,26 @@ import static org.junit.Assert.assertTrue;
public class StatelessOnnxEvaluationTest {
@Test
+ public void testStatelessOnnxModelNameCollision() throws IOException {
+ Path appDir = Path.fromString("src/test/cfg/application/onnx_name_collision");
+ try {
+ ImportedModelTester tester = new ImportedModelTester("onnx", appDir);
+ VespaModel model = tester.createVespaModel();
+ ApplicationContainerCluster cluster = model.getContainerClusters().get("container");
+ RankProfilesConfig.Builder b = new RankProfilesConfig.Builder();
+ cluster.getConfig(b);
+ RankProfilesConfig config = new RankProfilesConfig(b);
+ assertEquals(2, config.rankprofile().size());
+
+ Set<String> modelNames = config.rankprofile().stream().map(v -> v.name()).collect(Collectors.toSet());
+ assertTrue(modelNames.contains("foobar"));
+ assertTrue(modelNames.contains("barfoo"));
+ } finally {
+ IOUtils.recursiveDeleteDir(appDir.append(ApplicationPackage.MODELS_GENERATED_DIR).toFile());
+ }
+ }
+
+ @Test
public void testStatelessOnnxModelEvaluation() throws IOException {
Path appDir = Path.fromString("src/test/cfg/application/onnx");
Path storedAppDir = appDir.append("copy");
@@ -73,6 +94,10 @@ public class StatelessOnnxEvaluationTest {
cluster.getConfig(cb);
RankingConstantsConfig constantsConfig = new RankingConstantsConfig(cb);
+ RankingExpressionsConfig.Builder ce = new RankingExpressionsConfig.Builder();
+ cluster.getConfig(ce);
+ RankingExpressionsConfig expressionsConfig = ce.build();
+
OnnxModelsConfig.Builder ob = new OnnxModelsConfig.Builder();
cluster.getConfig(ob);
OnnxModelsConfig onnxModelsConfig = new OnnxModelsConfig(ob);
@@ -87,7 +112,7 @@ public class StatelessOnnxEvaluationTest {
fileMap.put(onnxModel.fileref().value(), appDir.append(onnxModel.fileref().value()).toFile());
}
FileAcquirer fileAcquirer = MockFileAcquirer.returnFiles(fileMap);
- ModelsEvaluator modelsEvaluator = new ModelsEvaluator(config, constantsConfig, onnxModelsConfig, fileAcquirer);
+ ModelsEvaluator modelsEvaluator = new ModelsEvaluator(config, constantsConfig, expressionsConfig, onnxModelsConfig, fileAcquirer);
assertEquals(1, modelsEvaluator.models().size());
Model mul = modelsEvaluator.models().get("mul");
@@ -98,6 +123,10 @@ public class StatelessOnnxEvaluationTest {
Tensor output = evaluator.bind("input1", input1).bind("input2", input2).evaluate();
assertEquals(6.0, output.sum().asDouble(), 1e-9);
+ OnnxModelsConfig.Model mulModel = onnxModelsConfig.model().get(0);
+ assertEquals(2, mulModel.stateless_intraop_threads());
+ assertEquals(-1, mulModel.stateless_interop_threads());
+ assertEquals("", mulModel.stateless_execution_mode());
}
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/routing/test/RoutingTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/routing/test/RoutingTestCase.java
index 2663ad1f348..3d4991eebed 100755
--- a/config-model/src/test/java/com/yahoo/vespa/model/routing/test/RoutingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/routing/test/RoutingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.routing.test;
import com.yahoo.config.ConfigInstance;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/search/NodeResourcesTuningTest.java b/config-model/src/test/java/com/yahoo/vespa/model/search/NodeResourcesTuningTest.java
index 00b4ce02411..649a445e7a5 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/search/NodeResourcesTuningTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/search/NodeResourcesTuningTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
import com.yahoo.collections.Pair;
@@ -21,7 +21,7 @@ import static com.yahoo.vespa.model.search.NodeResourcesTuning.GB;
public class NodeResourcesTuningTest {
private static final double delta = 0.00001;
- private static final double combinedFactor = 1 - 17.0/100;
+ private static final double combinedFactor = 1 - 18.0/100;
@Test
public void require_that_hwinfo_disk_size_is_set() {
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/search/test/DocumentDatabaseTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/search/test/DocumentDatabaseTestCase.java
index 6b00fa9697b..abd9e7fb8b3 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/search/test/DocumentDatabaseTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/search/test/DocumentDatabaseTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search.test;
import com.google.common.collect.ImmutableMap;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/search/test/DocumentSelectionConverterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/search/test/DocumentSelectionConverterTest.java
index e45515d95b0..9f14a78d8c5 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/search/test/DocumentSelectionConverterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/search/test/DocumentSelectionConverterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search.test;
import com.yahoo.document.select.parser.ParseException;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchClusterTest.java
index 66b60ec3782..660ec9f13f1 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchClusterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search.test;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java b/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java
index 620b5883d29..16f6a90ac66 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search.test;
import com.yahoo.config.model.api.ModelContext;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/storage/DistributionBitCalculatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/storage/DistributionBitCalculatorTest.java
index a394df9f135..356021cdd1d 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/storage/DistributionBitCalculatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/storage/DistributionBitCalculatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.storage;
import com.yahoo.vespa.model.content.DistributionBitCalculator;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/storage/test/StorageModelTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/storage/test/StorageModelTestCase.java
index e4dd8aee607..a2aa330efbe 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/storage/test/StorageModelTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/storage/test/StorageModelTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.storage.test;
import com.yahoo.metrics.MetricsmanagerConfig;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/ApiConfigModel.java b/config-model/src/test/java/com/yahoo/vespa/model/test/ApiConfigModel.java
index c00ef7d8469..c170abc04ae 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/ApiConfigModel.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/ApiConfigModel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.test;
import com.yahoo.config.model.ConfigModel;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/ApiService.java b/config-model/src/test/java/com/yahoo/vespa/model/test/ApiService.java
index e9726903e49..f844453fd28 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/ApiService.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/ApiService.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.test;
import com.yahoo.config.model.producer.AbstractConfigProducer;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/DomTestServiceBuilder.java b/config-model/src/test/java/com/yahoo/vespa/model/test/DomTestServiceBuilder.java
index fb997e5be1e..8da502ec2dd 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/DomTestServiceBuilder.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/DomTestServiceBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.test;
import com.yahoo.config.model.deploy.DeployState;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java
index 4a388025399..3388f9d2670 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.test;
import com.yahoo.component.ComponentId;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/ModelConfigProviderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/test/ModelConfigProviderTest.java
index 2d3931ab4f3..4632c536e43 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/ModelConfigProviderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/ModelConfigProviderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.test;
import com.yahoo.cloud.config.ModelConfig;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/ParentService.java b/config-model/src/test/java/com/yahoo/vespa/model/test/ParentService.java
index 96b5f98db86..fc796be293a 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/ParentService.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/ParentService.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.test;
import com.yahoo.test.StandardConfig.Builder;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/PortsMetaTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/test/PortsMetaTestCase.java
index 7736bea3078..a54897e7ae4 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/PortsMetaTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/PortsMetaTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.test;
import com.yahoo.vespa.model.PortsMeta;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleConfigModel.java b/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleConfigModel.java
index 8fe808582eb..a8c04f5c6ba 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleConfigModel.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleConfigModel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.test;
import com.yahoo.config.model.ConfigModel;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleService.java b/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleService.java
index 553e0813038..0788a794214 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleService.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleService.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.test;
import com.yahoo.test.StandardConfig.Builder;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/TestApi.java b/config-model/src/test/java/com/yahoo/vespa/model/test/TestApi.java
index 76d369c7dda..aedfd8df862 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/TestApi.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/TestApi.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.test;
/**
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 2b36bfc47b2..9fe1c8c40d3 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
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.test;
import com.yahoo.cloud.config.ApplicationIdConfig;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java
index 7e34e9efbbf..1e4ef7f7bb4 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.test;
import com.google.common.collect.ImmutableList;
@@ -182,7 +182,7 @@ public class VespaModelTester {
new SingleNodeProvisioner();
TestProperties properties = new TestProperties()
- .setMultitenant(true)
+ .setMultitenant(hosted) // Note: system tests are multitenant but not hosted
.setHostedVespa(hosted)
.setApplicationId(applicationId)
.setUseDedicatedNodeForLogserver(useDedicatedNodeForLogserver);
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/utils/ApplicationPackageUtils.java b/config-model/src/test/java/com/yahoo/vespa/model/test/utils/ApplicationPackageUtils.java
index 1f7deaf1991..1992b01788f 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/utils/ApplicationPackageUtils.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/utils/ApplicationPackageUtils.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.test.utils;
import java.util.ArrayList;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/utils/DeployLoggerStub.java b/config-model/src/test/java/com/yahoo/vespa/model/test/utils/DeployLoggerStub.java
index 135c36ea929..482009c0e82 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/utils/DeployLoggerStub.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/utils/DeployLoggerStub.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.test.utils;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithFilePkg.java b/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithFilePkg.java
index eea3da0e096..351b080eb5b 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithFilePkg.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithFilePkg.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.test.utils;
import com.yahoo.component.Version;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithMockPkg.java b/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithMockPkg.java
index 70ce588bec1..66dc63bbb02 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithMockPkg.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithMockPkg.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.test.utils;
import com.yahoo.component.Version;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/utils/DurationTest.java b/config-model/src/test/java/com/yahoo/vespa/model/utils/DurationTest.java
index ebe05db21da..533550b1d53 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/utils/DurationTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/utils/DurationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.utils;
import org.junit.Test;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/utils/FileSenderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/utils/FileSenderTest.java
index 80b29120744..e9527bae7a2 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/utils/FileSenderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/utils/FileSenderTest.java
@@ -1,19 +1,23 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.utils;
import com.yahoo.config.FileNode;
import com.yahoo.config.FileReference;
+import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.config.model.producer.UserConfigRepo;
import com.yahoo.config.model.test.MockRoot;
-import com.yahoo.vespa.config.*;
+import com.yahoo.vespa.config.ConfigDefinition;
+import com.yahoo.vespa.config.ConfigDefinitionKey;
+import com.yahoo.vespa.config.ConfigPayloadBuilder;
import com.yahoo.vespa.model.AbstractService;
import com.yahoo.vespa.model.PortAllocBridge;
import com.yahoo.vespa.model.SimpleConfigProducer;
import org.junit.Before;
import org.junit.Test;
+import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -24,16 +28,43 @@ import static org.junit.Assert.assertThat;
/**
* @author Ulf Lilleengen
- * @since 5.1
*/
public class FileSenderTest {
private SimpleConfigProducer<?> producer;
private ConfigPayloadBuilder builder;
private List<AbstractService> serviceList;
+ private final MyFileRegistry fileRegistry = new MyFileRegistry();
private ConfigDefinition def;
private TestService service;
+ private static class MyFileRegistry implements FileRegistry {
+ public Map<String, FileReference> pathToRef = new HashMap<>();
+ @Override
+ public FileReference addFile(String relativePath) {
+ return pathToRef.get(relativePath);
+ }
+
+ @Override
+ public FileReference addUri(String uri) {
+ return null;
+ }
+
+ @Override
+ public FileReference addBlob(String name, ByteBuffer blob) {
+ return null;
+ }
+
+ @Override
+ public List<Entry> export() {
+ return null;
+ }
+ }
+
+ private FileSender fileSender() {
+ return new FileSender(serviceList, fileRegistry, new BaseDeployLogger());
+ }
+
@Before
public void setup() {
MockRoot root = new MockRoot();
@@ -42,7 +73,7 @@ public class FileSenderTest {
serviceList = new ArrayList<>();
serviceList.add(service);
ConfigDefinitionKey key = new ConfigDefinitionKey("myname", "mynamespace");
- def = new ConfigDefinition("myname", "1", "mynamespace");
+ def = new ConfigDefinition("myname", "mynamespace");
builder = new ConfigPayloadBuilder(def);
Map<ConfigDefinitionKey, ConfigPayloadBuilder> builderMap = new HashMap<>();
builderMap.put(key, builder);
@@ -56,8 +87,8 @@ public class FileSenderTest {
def.addStringDef("stringVal");
builder.setField("fileVal", "foo.txt");
builder.setField("stringVal", "foo.txt");
- service.pathToRef.put("foo.txt", new FileNode("fooshash").value());
- FileSender.sendUserConfiguredFiles(producer, serviceList, new BaseDeployLogger());
+ fileRegistry.pathToRef.put("foo.txt", new FileNode("fooshash").value());
+ fileSender().sendUserConfiguredFiles(producer);
assertThat(builder.getObject("fileVal").getValue(), is("fooshash"));
assertThat(builder.getObject("stringVal").getValue(), is("foo.txt"));
}
@@ -68,8 +99,8 @@ public class FileSenderTest {
def.addStringDef("stringVal");
builder.setField("fileVal", "foo.txt");
builder.setField("stringVal", "foo.txt");
- service.pathToRef.put("foo.txt", new FileNode("fooshash").value());
- FileSender.sendUserConfiguredFiles(producer, serviceList, new BaseDeployLogger());
+ fileRegistry.pathToRef.put("foo.txt", new FileNode("fooshash").value());
+ fileSender().sendUserConfiguredFiles(producer);
assertThat(builder.getObject("fileVal").getValue(), is("fooshash"));
assertThat(builder.getObject("stringVal").getValue(), is("foo.txt"));
}
@@ -81,8 +112,8 @@ public class FileSenderTest {
ConfigPayloadBuilder inner = builder.getArray("inner").append();
inner.setField("fileVal", "bar.txt");
inner.setField("stringVal", "bar.txt");
- service.pathToRef.put("bar.txt", new FileNode("barhash").value());
- FileSender.sendUserConfiguredFiles(producer, serviceList, new BaseDeployLogger());
+ fileRegistry.pathToRef.put("bar.txt", new FileNode("barhash").value());
+ fileSender().sendUserConfiguredFiles(producer);
assertThat(builder.getArray("inner").get(0).getObject("fileVal").getValue(), is("barhash"));
assertThat(builder.getArray("inner").get(0).getObject("stringVal").getValue(), is("bar.txt"));
}
@@ -96,10 +127,10 @@ public class FileSenderTest {
builder.getArray("fileArray").append("bar.txt");
builder.getArray("pathArray").append("path.txt");
builder.getArray("stringArray").append("foo.txt");
- service.pathToRef.put("foo.txt", new FileNode("foohash").value());
- service.pathToRef.put("bar.txt", new FileNode("barhash").value());
- service.pathToRef.put("path.txt", new FileNode("pathhash").value());
- FileSender.sendUserConfiguredFiles(producer, serviceList, new BaseDeployLogger());
+ fileRegistry.pathToRef.put("foo.txt", new FileNode("foohash").value());
+ fileRegistry.pathToRef.put("bar.txt", new FileNode("barhash").value());
+ fileRegistry.pathToRef.put("path.txt", new FileNode("pathhash").value());
+ fileSender().sendUserConfiguredFiles(producer);
assertThat(builder.getArray("fileArray").get(0).getValue(), is("foohash"));
assertThat(builder.getArray("fileArray").get(1).getValue(), is("barhash"));
assertThat(builder.getArray("pathArray").get(0).getValue(), is("pathhash"));
@@ -112,8 +143,8 @@ public class FileSenderTest {
def.structDef("struct").addStringDef("stringVal");
builder.getObject("struct").setField("fileVal", "foo.txt");
builder.getObject("struct").setField("stringVal", "foo.txt");
- service.pathToRef.put("foo.txt", new FileNode("foohash").value());
- FileSender.sendUserConfiguredFiles(producer, serviceList, new BaseDeployLogger());
+ fileRegistry.pathToRef.put("foo.txt", new FileNode("foohash").value());
+ fileSender().sendUserConfiguredFiles(producer);
assertThat(builder.getObject("struct").getObject("fileVal").getValue(), is("foohash"));
assertThat(builder.getObject("struct").getObject("stringVal").getValue(), is("foo.txt"));
}
@@ -127,10 +158,10 @@ public class FileSenderTest {
builder.getMap("fileMap").put("bar", "bar.txt");
builder.getMap("pathMap").put("path", "path.txt");
builder.getMap("stringMap").put("bar", "bar.txt");
- service.pathToRef.put("foo.txt", new FileNode("foohash").value());
- service.pathToRef.put("bar.txt", new FileNode("barhash").value());
- service.pathToRef.put("path.txt", new FileNode("pathhash").value());
- FileSender.sendUserConfiguredFiles(producer, serviceList, new BaseDeployLogger());
+ fileRegistry.pathToRef.put("foo.txt", new FileNode("foohash").value());
+ fileRegistry.pathToRef.put("bar.txt", new FileNode("barhash").value());
+ fileRegistry.pathToRef.put("path.txt", new FileNode("pathhash").value());
+ fileSender().sendUserConfiguredFiles(producer);
assertThat(builder.getMap("fileMap").get("foo").getValue(), is("foohash"));
assertThat(builder.getMap("fileMap").get("bar").getValue(), is("barhash"));
assertThat(builder.getMap("pathMap").get("path").getValue(), is("pathhash"));
@@ -144,8 +175,8 @@ public class FileSenderTest {
ConfigPayloadBuilder inner = builder.getMap("inner").put("foo");
inner.setField("fileVal", "bar.txt");
inner.setField("stringVal", "bar.txt");
- service.pathToRef.put("bar.txt", new FileNode("barhash").value());
- FileSender.sendUserConfiguredFiles(producer, serviceList, new BaseDeployLogger());
+ fileRegistry.pathToRef.put("bar.txt", new FileNode("barhash").value());
+ fileSender().sendUserConfiguredFiles(producer);
assertThat(builder.getMap("inner").get("foo").getObject("fileVal").getValue(), is("barhash"));
assertThat(builder.getMap("inner").get("foo").getObject("stringVal").getValue(), is("bar.txt"));
}
@@ -153,23 +184,17 @@ public class FileSenderTest {
@Test(expected = IllegalArgumentException.class)
public void require_that_null_files_are_not_sent() {
def.addFileDef("fileVal");
- service.pathToRef.put("foo.txt", new FileNode("fooshash").value());
- FileSender.sendUserConfiguredFiles(producer, serviceList, new BaseDeployLogger());
+ fileRegistry.pathToRef.put("foo.txt", new FileNode("fooshash").value());
+ fileSender().sendUserConfiguredFiles(producer);
}
private static class TestService extends AbstractService {
- public Map<String, FileReference> pathToRef = new HashMap<>();
public TestService(AbstractConfigProducer<?> parent, String name) {
super(parent, name);
}
@Override
- public FileReference sendFile(String relativePath) {
- return pathToRef.get(relativePath);
- }
-
- @Override
public int getPortCount() {
return 0;
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/utils/internal/ReflectionUtilTest.java b/config-model/src/test/java/com/yahoo/vespa/model/utils/internal/ReflectionUtilTest.java
index 9032a8b05b7..2909031f380 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/utils/internal/ReflectionUtilTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/utils/internal/ReflectionUtilTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.utils.internal;
import com.yahoo.config.model.producer.AbstractConfigProducer;
diff --git a/config-model/src/test/java/helpers/CompareConfigTestHelper.java b/config-model/src/test/java/helpers/CompareConfigTestHelper.java
index 586f82ec379..18c0723c6a2 100644
--- a/config-model/src/test/java/helpers/CompareConfigTestHelper.java
+++ b/config-model/src/test/java/helpers/CompareConfigTestHelper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package helpers;
import com.google.common.base.Joiner;
diff --git a/config-model/src/test/resources/configdefinitions/test.anotherrestart.def b/config-model/src/test/resources/configdefinitions/test.anotherrestart.def
index 01da11e7c45..8b15b27de8b 100644
--- a/config-model/src/test/resources/configdefinitions/test.anotherrestart.def
+++ b/config-model/src/test/resources/configdefinitions/test.anotherrestart.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Test config for ConfigValueChangeValidatorTest
namespace=test
diff --git a/config-model/src/test/resources/configdefinitions/test.arraytypes.def b/config-model/src/test/resources/configdefinitions/test.arraytypes.def
index 8add790c6cb..6716e1ead80 100644
--- a/config-model/src/test/resources/configdefinitions/test.arraytypes.def
+++ b/config-model/src/test/resources/configdefinitions/test.arraytypes.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Config containing only simple array types that can be used for testing
# individual types in detail.
namespace=test
diff --git a/config-model/src/test/resources/configdefinitions/test.function-test.def b/config-model/src/test/resources/configdefinitions/test.function-test.def
index 4208f7ab906..35492b282e4 100644
--- a/config-model/src/test/resources/configdefinitions/test.function-test.def
+++ b/config-model/src/test/resources/configdefinitions/test.function-test.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# This def file should test most aspects of def files that makes a difference
# for the autogenerated config classes. The goal is to trigger all blocks of
diff --git a/config-model/src/test/resources/configdefinitions/test.nonrestart.def b/config-model/src/test/resources/configdefinitions/test.nonrestart.def
index b9b1227349a..69997d5a027 100644
--- a/config-model/src/test/resources/configdefinitions/test.nonrestart.def
+++ b/config-model/src/test/resources/configdefinitions/test.nonrestart.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Test config for ConfigValueChangeValidatorTest
namespace=test
diff --git a/config-model/src/test/resources/configdefinitions/test.restart.def b/config-model/src/test/resources/configdefinitions/test.restart.def
index a0826edf881..eebda65d677 100644
--- a/config-model/src/test/resources/configdefinitions/test.restart.def
+++ b/config-model/src/test/resources/configdefinitions/test.restart.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Test config for ConfigValueChangeValidatorTest
namespace=test
diff --git a/config-model/src/test/resources/configdefinitions/test.simpletypes.def b/config-model/src/test/resources/configdefinitions/test.simpletypes.def
index b54ea43435d..242e18978cc 100644
--- a/config-model/src/test/resources/configdefinitions/test.simpletypes.def
+++ b/config-model/src/test/resources/configdefinitions/test.simpletypes.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Config containing only simple leaf types with default values, that can be used
# for testing individual types in detail.
namespace=test
diff --git a/config-model/src/test/resources/configdefinitions/test.standard.def b/config-model/src/test/resources/configdefinitions/test.standard.def
index b06e858d391..ee85ef7b6dd 100644
--- a/config-model/src/test/resources/configdefinitions/test.standard.def
+++ b/config-model/src/test/resources/configdefinitions/test.standard.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Config containing only simple leaf types with default values, that can be used
# for testing individual types in detail.
namespace=test
diff --git a/config-model/src/test/schema-test-files/deployment.xml b/config-model/src/test/schema-test-files/deployment.xml
index 0b30067d78a..38145a1ac74 100644
--- a/config-model/src/test/schema-test-files/deployment.xml
+++ b/config-model/src/test/schema-test-files/deployment.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<deployment version='1.0' major-version='6' athenz-domain='vespa' athenz-service='service'>
<upgrade policy='canary'/>
<test/>
diff --git a/config-model/src/test/schema-test-files/hosts.xml b/config-model/src/test/schema-test-files/hosts.xml
index bbb61b9024d..cbbab9c3fe2 100755
--- a/config-model/src/test/schema-test-files/hosts.xml
+++ b/config-model/src/test/schema-test-files/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
diff --git a/config-model/src/test/schema-test-files/services-hosted-infrastructure.xml b/config-model/src/test/schema-test-files/services-hosted-infrastructure.xml
index 97c64799760..6886ceb1b74 100644
--- a/config-model/src/test/schema-test-files/services-hosted-infrastructure.xml
+++ b/config-model/src/test/schema-test-files/services-hosted-infrastructure.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0" application-type="hosted-infrastructure">
<admin version="4.0">
diff --git a/config-model/src/test/schema-test-files/services-hosted.xml b/config-model/src/test/schema-test-files/services-hosted.xml
index 71a07926240..bfd3871d71e 100644
--- a/config-model/src/test/schema-test-files/services-hosted.xml
+++ b/config-model/src/test/schema-test-files/services-hosted.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="3.0">
diff --git a/config-model/src/test/schema-test-files/services.xml b/config-model/src/test/schema-test-files/services.xml
index 8477f8fcbea..b477ceef169 100644
--- a/config-model/src/test/schema-test-files/services.xml
+++ b/config-model/src/test/schema-test-files/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<config name="foo">
diff --git a/config-model/src/test/schema-test-files/standalone-container.xml b/config-model/src/test/schema-test-files/standalone-container.xml
index a7769a2f57b..85f577882fb 100644
--- a/config-model/src/test/schema-test-files/standalone-container.xml
+++ b/config-model/src/test/schema-test-files/standalone-container.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<container id='qrsCluster_1' version='1.0'>
<servlet id="my-servlet" class="com.yahoo.MyServlet" bundle="my-bundle">
diff --git a/config-model/src/test/schema-test-files/validation-overrides.xml b/config-model/src/test/schema-test-files/validation-overrides.xml
index 4e55fdc870b..7cb19f5bbf9 100644
--- a/config-model/src/test/schema-test-files/validation-overrides.xml
+++ b/config-model/src/test/schema-test-files/validation-overrides.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<validation-overrides>
<allow until="2017-01-01" comment="Some change">field-type-change</allow>
<allow until="2017-02-01">cluster-size-reduction</allow>
diff --git a/config-model/src/test/sh/test-schema.sh b/config-model/src/test/sh/test-schema.sh
index 4b34d975c0d..11e592d1bce 100755
--- a/config-model/src/test/sh/test-schema.sh
+++ b/config-model/src/test/sh/test-schema.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
jar="target/jing.jar"
diff --git a/config-provisioning/CMakeLists.txt b/config-provisioning/CMakeLists.txt
index d46e1bc0215..63a6c3cb3e7 100644
--- a/config-provisioning/CMakeLists.txt
+++ b/config-provisioning/CMakeLists.txt
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(config-provisioning)
install_config_definitions()
diff --git a/config-provisioning/pom.xml b/config-provisioning/pom.xml
index 2915a94d371..12b31bd6370 100644
--- a/config-provisioning/pom.xml
+++ b/config-provisioning/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/ActivationContext.java b/config-provisioning/src/main/java/com/yahoo/config/provision/ActivationContext.java
index 6cc7ec4c5bc..43a44982b10 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/ActivationContext.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/ActivationContext.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
/**
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/AllocatedHosts.java b/config-provisioning/src/main/java/com/yahoo/config/provision/AllocatedHosts.java
index 8a0c97ec435..a6749528217 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/AllocatedHosts.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/AllocatedHosts.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import com.google.common.collect.ImmutableSet;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationId.java b/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationId.java
index 692c941877b..76d4ae3f1a6 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationId.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import com.yahoo.cloud.config.ApplicationIdConfig;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationLockException.java b/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationLockException.java
index 8f71d4f5061..d5587cc7caf 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationLockException.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationLockException.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
/**
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationName.java b/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationName.java
index 37f87b4153c..f16c126dec2 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationName.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationName.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import java.util.Objects;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationTransaction.java b/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationTransaction.java
index 64edfa72e04..aeace95fbed 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationTransaction.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationTransaction.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import com.yahoo.transaction.NestedTransaction;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/AthenzDomain.java b/config-provisioning/src/main/java/com/yahoo/config/provision/AthenzDomain.java
index 7b2a33a17f5..7b60d22c810 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/AthenzDomain.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/AthenzDomain.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import java.util.regex.Pattern;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/AthenzService.java b/config-provisioning/src/main/java/com/yahoo/config/provision/AthenzService.java
index 54f2889d95c..cd76c53107a 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/AthenzService.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/AthenzService.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
/**
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/Capacity.java b/config-provisioning/src/main/java/com/yahoo/config/provision/Capacity.java
index a2786c3bc87..182b924e877 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/Capacity.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/Capacity.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
/**
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/Cloud.java b/config-provisioning/src/main/java/com/yahoo/config/provision/Cloud.java
index 09807c74bb9..2e62a0decbe 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/Cloud.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/Cloud.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import java.util.Objects;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/CloudName.java b/config-provisioning/src/main/java/com/yahoo/config/provision/CloudName.java
index 53e00373713..b4be3531f2a 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/CloudName.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/CloudName.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import java.util.Objects;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterMembership.java b/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterMembership.java
index 113a4512331..7a633367fc0 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterMembership.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterMembership.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import com.yahoo.component.Version;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterResources.java b/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterResources.java
index a13128b8776..9938823768b 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterResources.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterResources.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import java.util.Objects;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java b/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java
index f4b79129ada..22c9234b0c5 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import com.yahoo.component.Version;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/Deployer.java b/config-provisioning/src/main/java/com/yahoo/config/provision/Deployer.java
index 20e23edddce..e7d28a3f65b 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/Deployer.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/Deployer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import java.time.Duration;
@@ -68,7 +68,7 @@ public interface Deployer {
/** Whether the deployer is bootstrapping, some users of the deployer will want to hold off with deployments in that case. */
default boolean bootstrapping() { return false; }
- /** Timeout in server, clients can use this to set correct client timeout */
- default Duration serverDeployTimeout() { return Duration.ofMinutes(30); }
+ /** Timeout for deploy in server, clients can use this to set correct client timeout */
+ Duration serverDeployTimeout();
}
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/Deployment.java b/config-provisioning/src/main/java/com/yahoo/config/provision/Deployment.java
index 6b87666121e..5caa910b17e 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/Deployment.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/Deployment.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
/**
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/DockerImage.java b/config-provisioning/src/main/java/com/yahoo/config/provision/DockerImage.java
index cc1ae60ba0a..30e7e042303 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/DockerImage.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/DockerImage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import com.yahoo.component.Version;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/Environment.java b/config-provisioning/src/main/java/com/yahoo/config/provision/Environment.java
index d525498e67f..5ce43f6f2d7 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/Environment.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/Environment.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import java.util.Arrays;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java b/config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java
index c47dca66409..37a3e6a3c4b 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/Flavor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import com.yahoo.config.provision.host.FlavorOverrides;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/HostFilter.java b/config-provisioning/src/main/java/com/yahoo/config/provision/HostFilter.java
index 29978496c0d..2f07c78e06b 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/HostFilter.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/HostFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import com.yahoo.text.StringUtilities;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/HostLivenessTracker.java b/config-provisioning/src/main/java/com/yahoo/config/provision/HostLivenessTracker.java
index 9ca5d419843..f3326ec2bc8 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/HostLivenessTracker.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/HostLivenessTracker.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import java.time.Instant;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/HostName.java b/config-provisioning/src/main/java/com/yahoo/config/provision/HostName.java
index 25c42884295..04b15af51f2 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/HostName.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/HostName.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import java.util.Objects;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/HostSpec.java b/config-provisioning/src/main/java/com/yahoo/config/provision/HostSpec.java
index 597e413c941..11f8da95059 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/HostSpec.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/HostSpec.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import com.yahoo.component.Version;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/InstanceName.java b/config-provisioning/src/main/java/com/yahoo/config/provision/InstanceName.java
index 827241081df..8101b70b943 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/InstanceName.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/InstanceName.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import java.util.Objects;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/NodeFlavors.java b/config-provisioning/src/main/java/com/yahoo/config/provision/NodeFlavors.java
index 829be798eb7..75a8523d763 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/NodeFlavors.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/NodeFlavors.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import com.google.inject.Inject;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java b/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java
index 4454517d5ec..8c05640bc73 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java
@@ -16,7 +16,7 @@ public class NodeResources {
private static final double memoryUnitCost = 0.009;
private static final double diskUnitCost = 0.0003;
- private static final NodeResources unspecified = new NodeResources(0, 0, 0, 0);
+ private static final NodeResources zero = new NodeResources(0, 0, 0, 0);
public enum DiskSpeed {
@@ -276,9 +276,9 @@ public class NodeResources {
return true;
}
- public static NodeResources unspecified() { return unspecified; }
+ public static NodeResources unspecified() { return zero; }
- public boolean isUnspecified() { return this.equals(unspecified); }
+ public boolean isUnspecified() { return this.equals(zero); }
// Returns squared euclidean distance of the relevant numerical values of two node resources
public double distanceTo(NodeResources other) {
@@ -327,6 +327,6 @@ public class NodeResources {
return value;
}
- public static NodeResources zero() { return new NodeResources(0, 0, 0, 0); }
+ public static NodeResources zero() { return zero; }
}
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/NodeType.java b/config-provisioning/src/main/java/com/yahoo/config/provision/NodeType.java
index 3a078fd3cb7..a617c7bcea3 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/NodeType.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/NodeType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import java.util.List;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/OutOfCapacityException.java b/config-provisioning/src/main/java/com/yahoo/config/provision/OutOfCapacityException.java
index 2ba4ea3c6b4..177b3f6e198 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/OutOfCapacityException.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/OutOfCapacityException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
/**
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/ProvisionLock.java b/config-provisioning/src/main/java/com/yahoo/config/provision/ProvisionLock.java
index 633c8520e72..ddcea3cd66b 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/ProvisionLock.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/ProvisionLock.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import com.yahoo.transaction.Mutex;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/ProvisionLogger.java b/config-provisioning/src/main/java/com/yahoo/config/provision/ProvisionLogger.java
index a22cd0b4bfa..5a22056de1b 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/ProvisionLogger.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/ProvisionLogger.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import java.util.logging.Level;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/Provisioner.java b/config-provisioning/src/main/java/com/yahoo/config/provision/Provisioner.java
index 1bfd0a882bf..9178a57bcb8 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/Provisioner.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/Provisioner.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import java.util.Collection;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/RegionName.java b/config-provisioning/src/main/java/com/yahoo/config/provision/RegionName.java
index 6da1d7ef71b..0e22bd5ad2f 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/RegionName.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/RegionName.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import java.util.Objects;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/SystemName.java b/config-provisioning/src/main/java/com/yahoo/config/provision/SystemName.java
index 29e48ae0316..e2349f6f63f 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/SystemName.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/SystemName.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import java.util.EnumSet;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/TenantName.java b/config-provisioning/src/main/java/com/yahoo/config/provision/TenantName.java
index ea2ce324a27..92fe5345b4e 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/TenantName.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/TenantName.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import java.util.Objects;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java b/config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java
index 4401606ca01..d550c5287cc 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import com.google.inject.Inject;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/exception/package-info.java b/config-provisioning/src/main/java/com/yahoo/config/provision/exception/package-info.java
index 5730f3fdb6b..6c3678d2bf1 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/exception/package-info.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/exception/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.config.provision.exception;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/package-info.java b/config-provisioning/src/main/java/com/yahoo/config/provision/package-info.java
index 1eebf6388c7..319978ab44a 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/package-info.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.config.provision;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/serialization/AllocatedHostsSerializer.java b/config-provisioning/src/main/java/com/yahoo/config/provision/serialization/AllocatedHostsSerializer.java
index 2cbbb3c92b4..68ac4d3151c 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/serialization/AllocatedHostsSerializer.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/serialization/AllocatedHostsSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision.serialization;
import com.yahoo.config.provision.AllocatedHosts;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/zone/UpgradePolicy.java b/config-provisioning/src/main/java/com/yahoo/config/provision/zone/UpgradePolicy.java
index 1baaac772c8..91ecf7b29e4 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/zone/UpgradePolicy.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/zone/UpgradePolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision.zone;
import java.util.ArrayList;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/zone/ZoneId.java b/config-provisioning/src/main/java/com/yahoo/config/provision/zone/ZoneId.java
index 5795770c294..50556e3bad7 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/zone/ZoneId.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/zone/ZoneId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision.zone;
import com.yahoo.config.provision.Environment;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/zone/ZoneList.java b/config-provisioning/src/main/java/com/yahoo/config/provision/zone/ZoneList.java
index 4f9e335e4d8..3e75842984f 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/zone/ZoneList.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/zone/ZoneList.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision.zone;
import com.yahoo.config.provision.Environment;
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provisioning/package-info.java b/config-provisioning/src/main/java/com/yahoo/config/provisioning/package-info.java
index 5cb2f0e5e2a..0849ad80247 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provisioning/package-info.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provisioning/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.config.provisioning;
diff --git a/config-provisioning/src/main/resources/configdefinitions/config.provisioning.cloud.def b/config-provisioning/src/main/resources/configdefinitions/config.provisioning.cloud.def
index 36523482ab2..8673789db26 100644
--- a/config-provisioning/src/main/resources/configdefinitions/config.provisioning.cloud.def
+++ b/config-provisioning/src/main/resources/configdefinitions/config.provisioning.cloud.def
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# Configures the features supported by a cloud service.
namespace=config.provisioning
diff --git a/config-provisioning/src/main/resources/configdefinitions/config.provisioning.flavors.def b/config-provisioning/src/main/resources/configdefinitions/config.provisioning.flavors.def
index c5040c58b74..e4fc934e6ae 100644
--- a/config-provisioning/src/main/resources/configdefinitions/config.provisioning.flavors.def
+++ b/config-provisioning/src/main/resources/configdefinitions/config.provisioning.flavors.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Configuration of the node repository
namespace=config.provisioning
diff --git a/config-provisioning/src/main/resources/configdefinitions/config.provisioning.node-repository.def b/config-provisioning/src/main/resources/configdefinitions/config.provisioning.node-repository.def
index 091f518a683..d979e65be7e 100644
--- a/config-provisioning/src/main/resources/configdefinitions/config.provisioning.node-repository.def
+++ b/config-provisioning/src/main/resources/configdefinitions/config.provisioning.node-repository.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config.provisioning
# Default container image to use for nodes.
diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/ApplicationIdTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/ApplicationIdTest.java
index b331fa89d32..27b9a7213cb 100644
--- a/config-provisioning/src/test/java/com/yahoo/config/provision/ApplicationIdTest.java
+++ b/config-provisioning/src/test/java/com/yahoo/config/provision/ApplicationIdTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import static org.junit.Assert.assertEquals;
diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/ApplicationNameTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/ApplicationNameTest.java
index 46c9ba5b128..d18ab211f9b 100644
--- a/config-provisioning/src/test/java/com/yahoo/config/provision/ApplicationNameTest.java
+++ b/config-provisioning/src/test/java/com/yahoo/config/provision/ApplicationNameTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
/**
diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/CapacityTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/CapacityTest.java
index 326ed7317f6..706addc4298 100644
--- a/config-provisioning/src/test/java/com/yahoo/config/provision/CapacityTest.java
+++ b/config-provisioning/src/test/java/com/yahoo/config/provision/CapacityTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import org.junit.Test;
diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterMembershipTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterMembershipTest.java
index 3bbdf7cff28..986609357aa 100644
--- a/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterMembershipTest.java
+++ b/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterMembershipTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import com.yahoo.component.Vtag;
diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterResourcesTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterResourcesTest.java
index 2ae5347da12..e342a90c957 100644
--- a/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterResourcesTest.java
+++ b/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterResourcesTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import org.junit.Test;
diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterSpecTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterSpecTest.java
index be4179e8b03..0fe123a774a 100644
--- a/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterSpecTest.java
+++ b/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterSpecTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import com.google.common.testing.EqualsTester;
diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/DockerImageTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/DockerImageTest.java
index f05ebb6e517..a33f0a09097 100644
--- a/config-provisioning/src/test/java/com/yahoo/config/provision/DockerImageTest.java
+++ b/config-provisioning/src/test/java/com/yahoo/config/provision/DockerImageTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import org.junit.Test;
diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/HostFilterTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/HostFilterTest.java
index 91d4ae17042..b0ce1b3b8cb 100644
--- a/config-provisioning/src/test/java/com/yahoo/config/provision/HostFilterTest.java
+++ b/config-provisioning/src/test/java/com/yahoo/config/provision/HostFilterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import com.yahoo.component.Vtag;
diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/IdentifierTestBase.java b/config-provisioning/src/test/java/com/yahoo/config/provision/IdentifierTestBase.java
index 359971f7295..370bcd6cdf1 100644
--- a/config-provisioning/src/test/java/com/yahoo/config/provision/IdentifierTestBase.java
+++ b/config-provisioning/src/test/java/com/yahoo/config/provision/IdentifierTestBase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import com.google.common.testing.EqualsTester;
diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/InstanceNameTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/InstanceNameTest.java
index f8d297a3471..c4767f1e4ba 100644
--- a/config-provisioning/src/test/java/com/yahoo/config/provision/InstanceNameTest.java
+++ b/config-provisioning/src/test/java/com/yahoo/config/provision/InstanceNameTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
/**
diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/NodeFlavorsTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/NodeFlavorsTest.java
index e184e85c399..8c2a6b70cf5 100644
--- a/config-provisioning/src/test/java/com/yahoo/config/provision/NodeFlavorsTest.java
+++ b/config-provisioning/src/test/java/com/yahoo/config/provision/NodeFlavorsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import com.yahoo.config.provisioning.FlavorsConfig;
diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/NodeResourcesTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/NodeResourcesTest.java
index 18eed0deecc..e82a03db7fb 100644
--- a/config-provisioning/src/test/java/com/yahoo/config/provision/NodeResourcesTest.java
+++ b/config-provisioning/src/test/java/com/yahoo/config/provision/NodeResourcesTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import org.junit.Test;
diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/RegionTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/RegionTest.java
index 6b644e047b5..10857de9146 100644
--- a/config-provisioning/src/test/java/com/yahoo/config/provision/RegionTest.java
+++ b/config-provisioning/src/test/java/com/yahoo/config/provision/RegionTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
/**
diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/TenantTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/TenantTest.java
index 782a375a073..8475c30c1f6 100644
--- a/config-provisioning/src/test/java/com/yahoo/config/provision/TenantTest.java
+++ b/config-provisioning/src/test/java/com/yahoo/config/provision/TenantTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision;
import com.yahoo.test.TotalOrderTester;
diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/serialization/AllocatedHostsSerializerTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/serialization/AllocatedHostsSerializerTest.java
index 700bc389664..4c5982708fa 100644
--- a/config-provisioning/src/test/java/com/yahoo/config/provision/serialization/AllocatedHostsSerializerTest.java
+++ b/config-provisioning/src/test/java/com/yahoo/config/provision/serialization/AllocatedHostsSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.provision.serialization;
import com.yahoo.component.Version;
diff --git a/config-proxy/CMakeLists.txt b/config-proxy/CMakeLists.txt
index a87f10573be..22b9369a63c 100644
--- a/config-proxy/CMakeLists.txt
+++ b/config-proxy/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(config-proxy)
vespa_install_script(src/main/sh/vespa-config-ctl.sh vespa-config-ctl bin)
diff --git a/config-proxy/pom.xml b/config-proxy/pom.xml
index 124d72f092d..bc79a5327eb 100644
--- a/config-proxy/pom.xml
+++ b/config-proxy/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ConfigProxyRpcServer.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ConfigProxyRpcServer.java
index 3700dee92e3..c7f6530f81c 100644
--- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ConfigProxyRpcServer.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ConfigProxyRpcServer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import com.yahoo.jrt.Acceptor;
@@ -12,7 +12,6 @@ import com.yahoo.jrt.StringValue;
import com.yahoo.jrt.Supervisor;
import com.yahoo.jrt.Target;
import com.yahoo.jrt.TargetWatcher;
-import java.util.logging.Level;
import com.yahoo.vespa.config.JRTMethods;
import com.yahoo.vespa.config.RawConfig;
import com.yahoo.vespa.config.protocol.JRTServerConfigRequest;
@@ -23,6 +22,7 @@ import java.util.Iterator;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
+import java.util.logging.Level;
import java.util.logging.Logger;
/**
@@ -270,7 +270,7 @@ public class ConfigProxyRpcServer implements Runnable, TargetWatcher, RpcServer
*/
private void getConfigImpl(JRTServerConfigRequest request) {
request.getRequestTrace().trace(TRACELEVEL, "Config proxy getConfig()");
- log.log(Level.FINE, () ->"getConfig: " + request.getShortDescription() + ",configmd5=" + request.getRequestConfigMd5());
+ log.log(Level.FINE, () ->"getConfig: " + request.getShortDescription() + ",config checksums=" + request.getRequestConfigChecksums());
if (!request.validateParameters()) {
// Error code is set in verifyParameters if parameters are not OK.
log.log(Level.WARNING, "Parameters for request " + request + " did not validate: " + request.errorCode() + " : " + request.errorMessage());
@@ -315,7 +315,7 @@ public class ConfigProxyRpcServer implements Runnable, TargetWatcher, RpcServer
sb.append(",");
sb.append(config.getGeneration());
sb.append(",");
- sb.append(config.getConfigMd5());
+ sb.append(config.getPayloadChecksums());
if (full) {
sb.append(",");
sb.append(config.getPayload());
@@ -353,8 +353,8 @@ public class ConfigProxyRpcServer implements Runnable, TargetWatcher, RpcServer
request.addOkResponse(config.getPayload(),
config.getGeneration(),
config.applyOnRestart(),
- config.getConfigMd5());
- log.log(Level.FINE, () -> "Return response: " + request.getShortDescription() + ",configMd5=" + config.getConfigMd5() +
+ config.getPayloadChecksums());
+ log.log(Level.FINE, () -> "Return response: " + request.getShortDescription() + ",config checksums=" + config.getPayloadChecksums() +
",generation=" + config.getGeneration());
log.log(Level.FINEST, () -> "Config payload in response for " + request.getShortDescription() + ":" + config.getPayload());
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ConfigSourceClient.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ConfigSourceClient.java
index e9110a0bc78..6e5fe2d3fd8 100644
--- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ConfigSourceClient.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ConfigSourceClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import com.yahoo.vespa.config.RawConfig;
diff --git a/config/src/main/java/com/yahoo/vespa/config/ConfigVerification.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ConfigVerification.java
index 68a1d9b7333..0def84ef789 100644
--- a/config/src/main/java/com/yahoo/vespa/config/ConfigVerification.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ConfigVerification.java
@@ -1,5 +1,5 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.config;
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.config.proxy;
import ai.vespa.util.http.hc5.VespaHttpClientBuilder;
import com.yahoo.slime.ArrayTraverser;
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/DelayedResponse.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/DelayedResponse.java
index 047576ee647..7f930d10ce8 100644
--- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/DelayedResponse.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/DelayedResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import com.yahoo.vespa.config.protocol.JRTServerConfigRequest;
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/DelayedResponseHandler.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/DelayedResponseHandler.java
index 317606ac3ef..f77bd4b9138 100644
--- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/DelayedResponseHandler.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/DelayedResponseHandler.java
@@ -1,13 +1,13 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
-import java.util.logging.Level;
-import com.yahoo.vespa.config.protocol.JRTServerConfigRequest;
-import com.yahoo.yolean.Exceptions;
import com.yahoo.vespa.config.ConfigCacheKey;
import com.yahoo.vespa.config.RawConfig;
+import com.yahoo.vespa.config.protocol.JRTServerConfigRequest;
+import com.yahoo.yolean.Exceptions;
import java.util.concurrent.atomic.AtomicInteger;
+import java.util.logging.Level;
import java.util.logging.Logger;
/**
@@ -44,7 +44,7 @@ public class DelayedResponseHandler implements Runnable {
AtomicInteger i = new AtomicInteger(0);
while ((response = delayedResponses.responses().poll()) != null) {
JRTServerConfigRequest request = response.getRequest();
- ConfigCacheKey cacheKey = new ConfigCacheKey(request.getConfigKey(), request.getConfigKey().getMd5());
+ ConfigCacheKey cacheKey = new ConfigCacheKey(request.getConfigKey(), request.getRequestDefMd5());
RawConfig config = memoryCache.get(cacheKey);
if (config != null) {
rpcServer.returnOkResponse(request, config);
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/DelayedResponses.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/DelayedResponses.java
index b0ed3721f81..b0ac7ae4e13 100644
--- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/DelayedResponses.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/DelayedResponses.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import java.util.concurrent.DelayQueue;
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/MemoryCache.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/MemoryCache.java
index 86f2022fa82..e2ab5de40e9 100644
--- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/MemoryCache.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/MemoryCache.java
@@ -1,8 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import com.yahoo.io.IOUtils;
-import java.util.logging.Level;
import com.yahoo.vespa.config.ConfigCacheKey;
import com.yahoo.vespa.config.ConfigKey;
import com.yahoo.vespa.config.RawConfig;
@@ -16,6 +15,7 @@ import java.io.Writer;
import java.nio.file.Files;
import java.util.Collection;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.logging.Level;
import java.util.logging.Logger;
/**
@@ -112,9 +112,7 @@ public class MemoryCache {
String filename = path + File.separator + createCacheFileName(config);
Writer writer = null;
try {
- if (log.isLoggable(Level.FINE)) {
- log.log(Level.FINE, "Writing '" + config.getKey() + "' to '" + filename + "'");
- }
+ log.log(Level.FINE, () -> "Writing '" + config.getKey() + "' to '" + filename + "'");
final Payload payload = config.getPayload();
long protocolVersion = 3;
log.log(Level.FINE, () -> "Writing config '" + config + "' to file '" + filename + "' with protocol version " + protocolVersion);
@@ -122,9 +120,9 @@ public class MemoryCache {
// First three lines are meta-data about config as comment lines, fourth line is empty
writer.write("# defMd5:" + config.getDefMd5() + "\n");
- writer.write("# configMd5:" + config.getConfigMd5() + "\n");
- writer.write("# generation:" + Long.toString(config.getGeneration()) + "\n");
- writer.write("# protocolVersion:" + Long.toString(protocolVersion) + "\n");
+ writer.write("# config checksums:" + config.getPayloadChecksums() + "\n");
+ writer.write("# generation:" + config.getGeneration() + "\n");
+ writer.write("# protocolVersion:" + protocolVersion + "\n");
writer.write("\n");
writer.write(payload.withCompression(CompressionType.UNCOMPRESSED).toString());
writer.write("\n");
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/MemoryCacheConfigClient.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/MemoryCacheConfigClient.java
index 2e55b9a6f86..6e90ad16f50 100644
--- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/MemoryCacheConfigClient.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/MemoryCacheConfigClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import java.util.logging.Level;
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/Mode.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/Mode.java
index f201811922e..4f5f62d9d1a 100644
--- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/Mode.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/Mode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import java.util.HashSet;
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ProxyServer.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ProxyServer.java
index 5ad9fabcb61..d063c45a3f7 100644
--- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ProxyServer.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ProxyServer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import com.yahoo.config.subscription.ConfigSourceSet;
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/RpcConfigSourceClient.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/RpcConfigSourceClient.java
index 3b9b101a8c6..2e8685887c6 100644
--- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/RpcConfigSourceClient.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/RpcConfigSourceClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import com.yahoo.concurrent.DaemonThreadFactory;
@@ -10,22 +10,22 @@ import com.yahoo.jrt.Spec;
import com.yahoo.jrt.Supervisor;
import com.yahoo.jrt.Target;
import com.yahoo.jrt.Transport;
-
-import java.util.Map;
-import java.util.Optional;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.logging.Level;
import com.yahoo.vespa.config.ConfigCacheKey;
+import com.yahoo.vespa.config.ConfigKey;
import com.yahoo.vespa.config.RawConfig;
import com.yahoo.vespa.config.TimingValues;
import com.yahoo.vespa.config.protocol.JRTServerConfigRequest;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.DelayQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
+import java.util.logging.Level;
import java.util.logging.Logger;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
@@ -38,8 +38,8 @@ import static java.util.concurrent.TimeUnit.SECONDS;
*/
class RpcConfigSourceClient implements ConfigSourceClient, Runnable {
- private final static Logger log = Logger.getLogger(RpcConfigSourceClient.class.getName());
- private static final double timingValuesRatio = 0.8;
+ private static final Logger log = Logger.getLogger(RpcConfigSourceClient.class.getName());
+ private static final TimingValues timingValues = createTimingValues();
private final Supervisor supervisor = new Supervisor(new Transport("config-source-client"));
@@ -48,7 +48,6 @@ class RpcConfigSourceClient implements ConfigSourceClient, Runnable {
private final Map<ConfigCacheKey, Subscriber> activeSubscribers = new ConcurrentHashMap<>();
private final MemoryCache memoryCache;
private final DelayedResponses delayedResponses;
- private final static TimingValues timingValues;
private final ScheduledExecutorService nextConfigScheduler =
Executors.newScheduledThreadPool(1, new DaemonThreadFactory("next config"));
private final ScheduledFuture<?> nextConfigFuture;
@@ -58,16 +57,6 @@ class RpcConfigSourceClient implements ConfigSourceClient, Runnable {
Executors.newScheduledThreadPool(1, new DaemonThreadFactory("delayed responses"));
private final ScheduledFuture<?> delayedResponsesFuture;
- static {
- // Proxy should time out before clients upon subscription.
- TimingValues tv = new TimingValues();
- tv.setUnconfiguredDelay((long)(tv.getUnconfiguredDelay()* timingValuesRatio)).
- setConfiguredErrorDelay((long)(tv.getConfiguredErrorDelay()* timingValuesRatio)).
- setSubscribeTimeout((long)(tv.getSubscribeTimeout()* timingValuesRatio)).
- setConfiguredErrorTimeout(-1); // Never cache errors
- timingValues = tv;
- }
-
RpcConfigSourceClient(RpcServer rpcServer, ConfigSourceSet configSourceSet, MemoryCache memoryCache) {
this.rpcServer = rpcServer;
this.configSourceSet = configSourceSet;
@@ -75,35 +64,31 @@ class RpcConfigSourceClient implements ConfigSourceClient, Runnable {
this.delayedResponses = new DelayedResponses();
checkConfigSources();
nextConfigFuture = nextConfigScheduler.scheduleAtFixedRate(this, 0, 10, MILLISECONDS);
- requester = JRTConfigRequester.create(configSourceSet, timingValues);
+ this.requester = JRTConfigRequester.create(configSourceSet, timingValues);
DelayedResponseHandler command = new DelayedResponseHandler(delayedResponses, memoryCache, rpcServer);
- delayedResponsesFuture = delayedResponsesScheduler.scheduleAtFixedRate(command, 5, 1, SECONDS);
+ this.delayedResponsesFuture = delayedResponsesScheduler.scheduleAtFixedRate(command, 5, 1, SECONDS);
}
/**
* Checks if config sources are available
*/
private void checkConfigSources() {
- if (configSourceSet == null || configSourceSet.getSources() == null || configSourceSet.getSources().size() == 0) {
- log.log(Level.WARNING, "No config sources defined, could not check connection");
- } else {
- Request req = new Request("ping");
- for (String configSource : configSourceSet.getSources()) {
- Spec spec = new Spec(configSource);
- Target target = supervisor.connect(spec);
- target.invokeSync(req, 30.0);
- if (target.isValid()) {
- log.log(Level.FINE, () -> "Created connection to config source at " + spec.toString());
- return;
- } else {
- log.log(Level.INFO, "Could not connect to config source at " + spec.toString());
- }
- target.close();
- }
- String extra = "";
- log.log(Level.INFO, "Could not connect to any config source in set " + configSourceSet.toString() +
- ", please make sure config server(s) are running. " + extra);
+ if (configSourceSet == null || configSourceSet.getSources() == null || configSourceSet.getSources().size() == 0)
+ throw new IllegalArgumentException("No config sources defined, could not check connection");
+
+ Request req = new Request("ping");
+ for (String configSource : configSourceSet.getSources()) {
+ Spec spec = new Spec(configSource);
+ Target target = supervisor.connect(spec);
+ target.invokeSync(req, 30.0);
+ if (target.isValid())
+ return;
+
+ log.log(Level.INFO, "Could not connect to config source at " + spec.toString());
+ target.close();
}
+ log.log(Level.INFO, "Could not connect to any config source in set " + configSourceSet.toString() +
+ ", please make sure config server(s) are running.");
}
/**
@@ -127,14 +112,14 @@ class RpcConfigSourceClient implements ConfigSourceClient, Runnable {
DelayedResponse delayedResponse = new DelayedResponse(request);
delayedResponses.add(delayedResponse);
- final ConfigCacheKey configCacheKey = new ConfigCacheKey(input.getKey(), input.getDefMd5());
+ ConfigCacheKey configCacheKey = new ConfigCacheKey(input.getKey(), input.getDefMd5());
RawConfig cachedConfig = memoryCache.get(configCacheKey);
boolean needToGetConfig = true;
RawConfig ret = null;
if (cachedConfig != null) {
log.log(Level.FINE, () -> "Found config " + configCacheKey + " in cache, generation=" + cachedConfig.getGeneration() +
- ",configmd5=" + cachedConfig.getConfigMd5());
+ ",config checksums=" + cachedConfig.getPayloadChecksums());
log.log(Level.FINEST, () -> "input config=" + input + ",cached config=" + cachedConfig);
if (ProxyServer.configOrGenerationHasChanged(cachedConfig, request)) {
log.log(Level.FINEST, () -> "Cached config is not equal to requested, will return it");
@@ -220,40 +205,41 @@ class RpcConfigSourceClient implements ConfigSourceClient, Runnable {
}
/**
- * This method will be called when a response with changed config is received from upstream
- * (content or generation has changed) or the server timeout has elapsed.
+ * Updates subscribers with new config. This method will be called when a response with changed config is
+ * received from upstream (content or generation has changed) or the server timeout has elapsed.
*
* @param config new config
*/
public void updateSubscribers(RawConfig config) {
- log.log(Level.FINE, () -> "Config updated for " + config.getKey() + "," + config.getGeneration());
+ ConfigKey<?> key = config.getKey();
+ long generation = config.getGeneration();
+ log.log(Level.FINE, () -> "Config updated for " + key + "," + generation);
DelayQueue<DelayedResponse> responseDelayQueue = delayedResponses.responses();
+ if (responseDelayQueue.size() == 0) return;
+
+ log.log(Level.FINE, () -> "Delayed response queue has " + responseDelayQueue.size() + " elements");
log.log(Level.FINEST, () -> "Delayed response queue: " + responseDelayQueue);
- if (responseDelayQueue.size() == 0) {
- log.log(Level.FINE, () -> "There exists no matching element on delayed response queue for " + config.getKey());
- return;
- } else {
- log.log(Level.FINE, () -> "Delayed response queue has " + responseDelayQueue.size() + " elements");
- }
boolean found = false;
for (DelayedResponse response : responseDelayQueue.toArray(new DelayedResponse[0])) {
JRTServerConfigRequest request = response.getRequest();
- if (request.getConfigKey().equals(config.getKey())
+ if (request.getConfigKey().equals(key)
// Generation 0 is special, used when returning empty sentinel config
- && (config.getGeneration() >= request.getRequestGeneration() || config.getGeneration() == 0)) {
+ && (generation >= request.getRequestGeneration() || generation == 0)) {
if (delayedResponses.remove(response)) {
found = true;
- log.log(Level.FINE, () -> "Call returnOkResponse for " + config.getKey() + "," + config.getGeneration());
+ log.log(Level.FINE, () -> "Call returnOkResponse for " + key + "," + generation);
+ if (config.getPayload().getData().getByteLength() == 0)
+ log.log(Level.WARNING, () -> "Call returnOkResponse for " + key + "," + generation + " with empty config");
rpcServer.returnOkResponse(request, config);
} else {
- log.log(Level.INFO, "Could not remove " + config.getKey() + " from delayedResponses queue, already removed");
+ log.log(Level.INFO, "Could not remove " + key + " from delayedResponses queue, already removed");
}
}
}
if (!found) {
- log.log(Level.FINE, () -> "Found no recipient for " + config.getKey() + " in delayed response queue");
+ log.log(Level.FINE, () -> "Found no recipient for " + key + " in delayed response queue");
}
- log.log(Level.FINE, () -> "Finished updating config for " + config.getKey() + "," + config.getGeneration());
+ log.log(Level.FINE, () -> "Finished updating config for " + key + "," + generation);
}
@Override
@@ -269,4 +255,14 @@ class RpcConfigSourceClient implements ConfigSourceClient, Runnable {
updateSubscribers(newConfig);
}
+ private static TimingValues createTimingValues() {
+ // Proxy should time out before clients upon subscription.
+ double timingValuesRatio = 0.8;
+ TimingValues tv = new TimingValues();
+ tv.setFixedDelay((long) (tv.getFixedDelay() * timingValuesRatio)).
+ setSubscribeTimeout((long) (tv.getSubscribeTimeout() * timingValuesRatio)).
+ setConfiguredErrorTimeout(-1); // Never cache errors
+ return tv;
+ }
+
}
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/RpcServer.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/RpcServer.java
index b04e0e8cffa..b326a79359e 100644
--- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/RpcServer.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/RpcServer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import com.yahoo.vespa.config.RawConfig;
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/Subscriber.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/Subscriber.java
index e79497e0dd3..abe0ec5cbb0 100644
--- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/Subscriber.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/Subscriber.java
@@ -1,19 +1,18 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import com.yahoo.config.subscription.ConfigSourceSet;
import com.yahoo.config.subscription.impl.GenericConfigHandle;
import com.yahoo.config.subscription.impl.GenericConfigSubscriber;
import com.yahoo.config.subscription.impl.JRTConfigRequester;
-
-import java.util.Optional;
-import java.util.logging.Level;
import com.yahoo.vespa.config.ConfigKey;
import com.yahoo.vespa.config.RawConfig;
import com.yahoo.vespa.config.TimingValues;
import com.yahoo.yolean.Exceptions;
import java.util.Map;
+import java.util.Optional;
+import java.util.logging.Level;
import java.util.logging.Logger;
/**
@@ -43,14 +42,13 @@ public class Subscriber {
}
public Optional<RawConfig> nextGeneration() {
- if (subscriber.nextGeneration(0, true)) { // Proxy should never skip config due to not initializing
- try {
+ try {
+ if (subscriber.nextGeneration(0, true))// Proxy should never skip config due to not initializing
return Optional.of(handle.getRawConfig());
- } catch (Exception e) { // To avoid thread throwing exception and loop never running this again
- log.log(Level.WARNING, "Got exception: " + Exceptions.toMessageString(e));
- } catch (Throwable e) {
- com.yahoo.protect.Process.logAndDie("Got error, exiting: " + Exceptions.toMessageString(e));
- }
+ } catch (Exception e) { // To avoid thread throwing exception and loop never running this again
+ log.log(Level.WARNING, "Got exception: " + Exceptions.toMessageString(e));
+ } catch (Throwable e) {
+ com.yahoo.protect.Process.logAndDie("Got error, exiting: " + Exceptions.toMessageString(e));
}
return Optional.empty();
}
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileDistributionAndUrlDownload.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileDistributionAndUrlDownload.java
index 1dba56805a5..48d23e6ada5 100644
--- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileDistributionAndUrlDownload.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileDistributionAndUrlDownload.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy.filedistribution;
import com.yahoo.concurrent.DaemonThreadFactory;
@@ -28,7 +28,7 @@ public class FileDistributionAndUrlDownload {
public FileDistributionAndUrlDownload(Supervisor supervisor, ConfigSourceSet source) {
fileDistributionRpcServer =
new FileDistributionRpcServer(supervisor,
- new FileDownloader(new JRTConnectionPool(source, "filedistribution-jrt-pool-")));
+ new FileDownloader(new JRTConnectionPool(source, supervisor)));
urlDownloadRpcServer = new UrlDownloadRpcServer(supervisor);
cleanupExecutor.scheduleAtFixedRate(new CachedFilesMaintainer(), delay.toSeconds(), delay.toSeconds(), TimeUnit.SECONDS);
}
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileDistributionRpcServer.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileDistributionRpcServer.java
index ea3a69c54a2..8f9e5edc337 100644
--- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileDistributionRpcServer.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileDistributionRpcServer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy.filedistribution;
import com.yahoo.concurrent.DaemonThreadFactory;
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/package-info.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/package-info.java
index ff16217ac41..10e945ae202 100644
--- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/package-info.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
Provides the classes for the Vespa config proxy.
diff --git a/config-proxy/src/main/sh/vespa-config-ctl.sh b/config-proxy/src/main/sh/vespa-config-ctl.sh
index 03c033e620b..d8459b175a7 100755
--- a/config-proxy/src/main/sh/vespa-config-ctl.sh
+++ b/config-proxy/src/main/sh/vespa-config-ctl.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
@@ -109,7 +109,7 @@ case $1 in
nohup sbin/vespa-retention-enforcer > ${LOGDIR}/vre-start.log 2>&1 </dev/null &
configsources=`bin/vespa-print-default configservers_rpc`
userargs=$VESPA_CONFIGPROXY_JVMARGS
- jvmopts="-Xms32M -Xmx256M -XX:CompressedClassSpaceSize=32m -XX:MaxDirectMemorySize=32m -XX:ThreadStackSize=256 -XX:MaxJavaStackTraceDepth=1000 -XX:-OmitStackTraceInFastThrow"
+ jvmopts="-Xms32M -Xmx128M -XX:CompressedClassSpaceSize=32m -XX:MaxDirectMemorySize=32m -XX:ThreadStackSize=256 -XX:MaxJavaStackTraceDepth=1000 -XX:-OmitStackTraceInFastThrow"
VESPA_SERVICE_NAME=configproxy
export VESPA_SERVICE_NAME
diff --git a/config-proxy/src/main/sh/vespa-config-loadtester.sh b/config-proxy/src/main/sh/vespa-config-loadtester.sh
index 38be1cf7b33..2dcf006aa1d 100644
--- a/config-proxy/src/main/sh/vespa-config-loadtester.sh
+++ b/config-proxy/src/main/sh/vespa-config-loadtester.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/config-proxy/src/main/sh/vespa-config-verification.sh b/config-proxy/src/main/sh/vespa-config-verification.sh
index 308d7f733a4..178193fdbd5 100644
--- a/config-proxy/src/main/sh/vespa-config-verification.sh
+++ b/config-proxy/src/main/sh/vespa-config-verification.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
@@ -79,4 +79,4 @@ export ROOT
echo "# Using CLASSPATH=$CLASSPATH, args=$@"
-java -cp $CLASSPATH:$ROOT/lib/jars/config-proxy-jar-with-dependencies.jar com.yahoo.vespa.config.ConfigVerification "$@"
+java -cp $CLASSPATH:$ROOT/lib/jars/config-proxy-jar-with-dependencies.jar com.yahoo.vespa.config.proxy.ConfigVerification "$@"
diff --git a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ConfigProxyRpcServerTest.java b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ConfigProxyRpcServerTest.java
index 628e1c013e6..1bcf8d5d8be 100644
--- a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ConfigProxyRpcServerTest.java
+++ b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ConfigProxyRpcServerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import com.yahoo.config.subscription.ConfigSourceSet;
@@ -102,7 +102,7 @@ public class ConfigProxyRpcServerTest {
assertThat(ret[0], is(config.getNamespace() + "." + config.getName() + "," +
config.getConfigId() + "," +
config.getGeneration() + "," +
- config.getConfigMd5()));
+ config.getPayloadChecksums()));
}
/**
@@ -128,7 +128,7 @@ public class ConfigProxyRpcServerTest {
assertThat(ret[0], is(config.getNamespace() + "." + config.getName() + "," +
config.getConfigId() + "," +
config.getGeneration() + "," +
- config.getConfigMd5() + "," +
+ config.getPayloadChecksums() + "," +
config.getPayload().getData()));
}
diff --git a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ConfigTester.java b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ConfigTester.java
index 33e798da15e..45f52479cbd 100644
--- a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ConfigTester.java
+++ b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ConfigTester.java
@@ -1,10 +1,12 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import com.yahoo.jrt.Request;
import com.yahoo.slime.Slime;
import com.yahoo.vespa.config.ConfigKey;
import com.yahoo.vespa.config.ConfigPayload;
+import com.yahoo.vespa.config.PayloadChecksum;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.vespa.config.RawConfig;
import com.yahoo.vespa.config.protocol.CompressionType;
import com.yahoo.vespa.config.protocol.DefContent;
@@ -19,12 +21,16 @@ import java.util.Collections;
import java.util.List;
import java.util.Optional;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.MD5;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.XXHASH64;
+
/**
* @author bratseth
*/
public class ConfigTester {
private static final long defaultTimeout = 10000;
+ private static final List<String> defContent = Collections.singletonList("bar string");
static RawConfig fooConfig;
static RawConfig barConfig;
@@ -39,10 +45,10 @@ public class ConfigTester {
ConfigPayload fooConfigPayload = createConfigPayload("bar", "value");
fooPayload = Payload.from(fooConfigPayload);
- List<String> defContent = Collections.singletonList("bar string");
long generation = 1;
String defMd5 = ConfigUtils.getDefMd5(defContent);
- String configMd5 = ConfigUtils.getMd5(fooConfigPayload);
+ PayloadChecksums configMd5 = PayloadChecksums.from(new PayloadChecksum(ConfigUtils.getMd5(fooConfigPayload), MD5),
+ PayloadChecksum.empty(XXHASH64));
fooConfig = new RawConfig(configKey, defMd5, fooPayload, configMd5,
generation, false, defContent, Optional.empty());
@@ -57,17 +63,28 @@ public class ConfigTester {
JRTServerConfigRequest createRequest(RawConfig config, long timeout) {
return createRequest(config.getName(), config.getConfigId(), config.getNamespace(),
- config.getConfigMd5(), config.getDefMd5(), config.getGeneration(), timeout);
+ config.getPayloadChecksums(), config.getGeneration(), timeout);
}
JRTServerConfigRequest createRequest(String configName, String configId, String namespace, long timeout) {
- return createRequest(configName, configId, namespace, "", null, 0, timeout);
+ return createRequest(configName, configId, namespace, PayloadChecksums.empty(), 0, timeout);
}
- private JRTServerConfigRequest createRequest(String configName, String configId, String namespace, String md5, String defMd5, long generation, long timeout) {
+ private JRTServerConfigRequest createRequest(String configName,
+ String configId,
+ String namespace,
+ PayloadChecksums payloadChecksums,
+ long generation,
+ long timeout) {
Request request = JRTClientConfigRequestV3.
- createWithParams(new ConfigKey<>(configName, configId, namespace, defMd5, null), DefContent.fromList(Collections.emptyList()),
- "fromHost", md5, generation, timeout, Trace.createDummy(), CompressionType.UNCOMPRESSED,
+ createWithParams(new ConfigKey<>(configName, configId, namespace, null),
+ DefContent.fromList(defContent),
+ "fromHost",
+ payloadChecksums,
+ generation,
+ timeout,
+ Trace.createDummy(),
+ CompressionType.UNCOMPRESSED,
Optional.empty()).getRequest();
return JRTServerConfigRequestV3.createFromRequest(request);
}
diff --git a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/DelayedResponseHandlerTest.java b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/DelayedResponseHandlerTest.java
index af83a86db41..c2a0282fd05 100644
--- a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/DelayedResponseHandlerTest.java
+++ b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/DelayedResponseHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import org.junit.Before;
diff --git a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/DelayedResponseTest.java b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/DelayedResponseTest.java
index bb26841ca3c..142f69d41da 100644
--- a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/DelayedResponseTest.java
+++ b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/DelayedResponseTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import com.yahoo.vespa.config.protocol.JRTServerConfigRequest;
diff --git a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/DelayedResponsesTest.java b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/DelayedResponsesTest.java
index 3f960d2c37c..f317550228b 100644
--- a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/DelayedResponsesTest.java
+++ b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/DelayedResponsesTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import org.junit.Test;
diff --git a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MemoryCacheConfigClientTest.java b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MemoryCacheConfigClientTest.java
index 7c040735e13..51d0b983764 100644
--- a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MemoryCacheConfigClientTest.java
+++ b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MemoryCacheConfigClientTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import org.junit.Test;
diff --git a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MemoryCacheTest.java b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MemoryCacheTest.java
index 485a091d9ae..b47c0bcc5ce 100644
--- a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MemoryCacheTest.java
+++ b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MemoryCacheTest.java
@@ -1,10 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import com.yahoo.slime.Slime;
import com.yahoo.vespa.config.ConfigCacheKey;
import com.yahoo.vespa.config.ConfigKey;
import com.yahoo.vespa.config.ConfigPayload;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.vespa.config.RawConfig;
import com.yahoo.vespa.config.protocol.Payload;
import org.junit.Before;
@@ -18,24 +19,24 @@ import static org.junit.Assert.*;
/**
* @author hmusum
- * @since 5.1.9
*/
public class MemoryCacheTest {
- private String defName = "foo";
- private String configId = "id";
- private String namespace = "bar";
+
+ private final String defName = "foo";
+ private final String configId = "id";
+ private final String namespace = "bar";
private static final String defMd5 = "a";
- private long generation = 1L;
- private String defName2 = "baz-quux";
- private String namespace2 = "search.config";
+ private final long generation = 1L;
+ private final String defName2 = "baz-quux";
+ private final String namespace2 = "search.config";
// Test with a config id with / in it
- private String configId2 = "clients/gateways/gateway/component/com.yahoo.feedhandler.VespaFeedHandlerRemoveLocation";
+ private final String configId2 = "clients/gateways/gateway/component/com.yahoo.feedhandler.VespaFeedHandlerRemoveLocation";
private static final String defMd52 = "a2";
private static final String differentDefMd5 = "09ef";
- private static final String configMd5 = "b";
- private ConfigKey<?> configKey = new ConfigKey<>(defName, configId, namespace);
- private ConfigKey<?> configKey2 = new ConfigKey<>(defName2, configId2, namespace2);
+ private static final PayloadChecksums configMd5 = PayloadChecksums.from("b", "");
+ private final ConfigKey<?> configKey = new ConfigKey<>(defName, configId, namespace);
+ private final ConfigKey<?> configKey2 = new ConfigKey<>(defName2, configId2, namespace2);
private ConfigCacheKey cacheKey;
private ConfigCacheKey cacheKeyDifferentMd5;
private ConfigCacheKey cacheKey2;
diff --git a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MockConfigSource.java b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MockConfigSource.java
index 3457cbcf576..0377e20330a 100644
--- a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MockConfigSource.java
+++ b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MockConfigSource.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import com.yahoo.config.subscription.ConfigSourceSet;
diff --git a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MockConfigSourceClient.java b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MockConfigSourceClient.java
index 2126d673da0..c0efc1cb355 100644
--- a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MockConfigSourceClient.java
+++ b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MockConfigSourceClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import com.yahoo.vespa.config.ConfigKey;
diff --git a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MockRpcServer.java b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MockRpcServer.java
index 901a023a281..56fcca191de 100644
--- a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MockRpcServer.java
+++ b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MockRpcServer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import com.yahoo.vespa.config.RawConfig;
diff --git a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ProxyServerTest.java b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ProxyServerTest.java
index 87c1fa151f8..cdda2bf6e77 100644
--- a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ProxyServerTest.java
+++ b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ProxyServerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import com.yahoo.config.subscription.ConfigSourceSet;
@@ -35,7 +35,7 @@ public class ProxyServerTest {
// errorConfig based on fooConfig
private static final ConfigKey<?> errorConfigKey = new ConfigKey<>("error", fooConfig.getConfigId(), fooConfig.getNamespace());
static final RawConfig errorConfig = new RawConfig(errorConfigKey, fooConfig.getDefMd5(), fooConfig.getPayload(),
- fooConfig.getConfigMd5(), fooConfig.getGeneration(), false,
+ fooConfig.getPayloadChecksums(), fooConfig.getGeneration(), false,
ErrorCode.UNKNOWN_DEFINITION, fooConfig.getDefContent(), Optional.empty());
@Rule
@@ -179,7 +179,7 @@ public class ProxyServerTest {
// Simulate an empty response
RawConfig emptyConfig = new RawConfig(fooConfig.getKey(), fooConfig.getDefMd5(), Payload.from("{}"),
- fooConfig.getConfigMd5(), 0, false,
+ fooConfig.getPayloadChecksums(), 0, false,
0, fooConfig.getDefContent(), Optional.empty());
source.put(fooConfig.getKey(), emptyConfig);
@@ -238,7 +238,7 @@ public class ProxyServerTest {
static RawConfig createConfigWithNextConfigGeneration(RawConfig config, int errorCode, Payload payload, long configGeneration) {
return new RawConfig(config.getKey(), config.getDefMd5(),
- payload, config.getConfigMd5(),
+ payload, config.getPayloadChecksums(),
configGeneration, false,
errorCode, config.getDefContent(), Optional.empty());
}
diff --git a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/RpcConfigSourceClientTest.java b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/RpcConfigSourceClientTest.java
index 8510b23bbd2..372c8c41c99 100644
--- a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/RpcConfigSourceClientTest.java
+++ b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/RpcConfigSourceClientTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;
import com.yahoo.vespa.config.ConfigKey;
diff --git a/config/CMakeLists.txt b/config/CMakeLists.txt
index 9fcab484ce9..24d5513bbfc 100644
--- a/config/CMakeLists.txt
+++ b/config/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/config/README.md b/config/README.md
index 93d9bb36050..20e225b4a59 100644
--- a/config/README.md
+++ b/config/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Config library in C++ and java
Library for config subscription and config protocol.
diff --git a/config/pom.xml b/config/pom.xml
index 8355587c10b..423f0b496e1 100755
--- a/config/pom.xml
+++ b/config/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -63,12 +63,6 @@
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>http-utils</artifactId>
- <version>${project.version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</dependency>
diff --git a/config/src/Doxyfile b/config/src/Doxyfile
index 5e01a53cb33..73231abd4ac 100644
--- a/config/src/Doxyfile
+++ b/config/src/Doxyfile
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Doxyfile 1.4.7
# This file describes the settings to be used by the documentation system
diff --git a/config/src/apps/vespa-config/vespa-config.pl b/config/src/apps/vespa-config/vespa-config.pl
index f460d1067cb..79c0a352e37 100755
--- a/config/src/apps/vespa-config/vespa-config.pl
+++ b/config/src/apps/vespa-config/vespa-config.pl
@@ -1,5 +1,5 @@
#!/usr/bin/env perl
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# Various small functions used when bootstrapping the config system
diff --git a/config/src/apps/vespa-configproxy-cmd/CMakeLists.txt b/config/src/apps/vespa-configproxy-cmd/CMakeLists.txt
index d1090f81d14..61d282ab021 100644
--- a/config/src/apps/vespa-configproxy-cmd/CMakeLists.txt
+++ b/config/src/apps/vespa-configproxy-cmd/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_configproxy-cmd_app
SOURCES
main.cpp
diff --git a/config/src/apps/vespa-configproxy-cmd/main.cpp b/config/src/apps/vespa-configproxy-cmd/main.cpp
index 967bfee4ba9..ec5d2167a72 100644
--- a/config/src/apps/vespa-configproxy-cmd/main.cpp
+++ b/config/src/apps/vespa-configproxy-cmd/main.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "proxycmd.h"
#include "methods.h"
diff --git a/config/src/apps/vespa-configproxy-cmd/methods.cpp b/config/src/apps/vespa-configproxy-cmd/methods.cpp
index 6218c54e8b3..34f552cb2fe 100644
--- a/config/src/apps/vespa-configproxy-cmd/methods.cpp
+++ b/config/src/apps/vespa-configproxy-cmd/methods.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "methods.h"
#include <iostream>
diff --git a/config/src/apps/vespa-configproxy-cmd/methods.h b/config/src/apps/vespa-configproxy-cmd/methods.h
index bb1abb0668e..35e162dd83a 100644
--- a/config/src/apps/vespa-configproxy-cmd/methods.h
+++ b/config/src/apps/vespa-configproxy-cmd/methods.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/config/src/apps/vespa-configproxy-cmd/proxycmd.cpp b/config/src/apps/vespa-configproxy-cmd/proxycmd.cpp
index e704bf1e4f7..1d875e0ade2 100644
--- a/config/src/apps/vespa-configproxy-cmd/proxycmd.cpp
+++ b/config/src/apps/vespa-configproxy-cmd/proxycmd.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "proxycmd.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/config/src/apps/vespa-configproxy-cmd/proxycmd.h b/config/src/apps/vespa-configproxy-cmd/proxycmd.h
index 078e00c3244..3c09e329494 100644
--- a/config/src/apps/vespa-configproxy-cmd/proxycmd.h
+++ b/config/src/apps/vespa-configproxy-cmd/proxycmd.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/config/src/apps/vespa-get-config/CMakeLists.txt b/config/src/apps/vespa-get-config/CMakeLists.txt
index 606a64c44a3..eb6b49ff824 100644
--- a/config/src/apps/vespa-get-config/CMakeLists.txt
+++ b/config/src/apps/vespa-get-config/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_getvespaconfig_app
SOURCES
getconfig.cpp
diff --git a/config/src/apps/vespa-get-config/getconfig.cpp b/config/src/apps/vespa-get-config/getconfig.cpp
index 273a3abd1cd..16d1032da5c 100644
--- a/config/src/apps/vespa-get-config/getconfig.cpp
+++ b/config/src/apps/vespa-get-config/getconfig.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fnet/frt/supervisor.h>
#include <vespa/fnet/frt/target.h>
@@ -240,7 +240,7 @@ GetConfig::Main()
printf("defNamespace %s\n", rKey.getDefNamespace().c_str());
printf("configID %s\n", rKey.getConfigId().c_str());
- printf("configMD5 %s\n", rState.md5.c_str());
+ printf("configXxhash64 %s\n", rState.xxhash64.c_str());
printf("generation %" PRId64 "\n", rState.generation);
printf("trace %s\n", response->getTrace().toString().c_str());
diff --git a/config/src/apps/vespa-ping-configproxy/CMakeLists.txt b/config/src/apps/vespa-ping-configproxy/CMakeLists.txt
index c5eb919f68c..016388d0ae8 100644
--- a/config/src/apps/vespa-ping-configproxy/CMakeLists.txt
+++ b/config/src/apps/vespa-ping-configproxy/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_pingproxy_app
SOURCES
pingproxy.cpp
diff --git a/config/src/apps/vespa-ping-configproxy/pingproxy.cpp b/config/src/apps/vespa-ping-configproxy/pingproxy.cpp
index 787681cc670..3d3e3081108 100644
--- a/config/src/apps/vespa-ping-configproxy/pingproxy.cpp
+++ b/config/src/apps/vespa-ping-configproxy/pingproxy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fnet/frt/supervisor.h>
#include <vespa/fnet/frt/target.h>
diff --git a/config/src/main/java/com/yahoo/config/codegen/package-info.java b/config/src/main/java/com/yahoo/config/codegen/package-info.java
index 17aefc0c15d..44c916d2f7f 100644
--- a/config/src/main/java/com/yahoo/config/codegen/package-info.java
+++ b/config/src/main/java/com/yahoo/config/codegen/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.config.codegen;
diff --git a/config/src/main/java/com/yahoo/config/subscription/CfgConfigPayloadBuilder.java b/config/src/main/java/com/yahoo/config/subscription/CfgConfigPayloadBuilder.java
index 74d4d378e5d..1a110fe8e6c 100644
--- a/config/src/main/java/com/yahoo/config/subscription/CfgConfigPayloadBuilder.java
+++ b/config/src/main/java/com/yahoo/config/subscription/CfgConfigPayloadBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import com.yahoo.collections.Pair;
diff --git a/config/src/main/java/com/yahoo/config/subscription/ConfigDebug.java b/config/src/main/java/com/yahoo/config/subscription/ConfigDebug.java
index d279fc42251..85aa7a05e17 100644
--- a/config/src/main/java/com/yahoo/config/subscription/ConfigDebug.java
+++ b/config/src/main/java/com/yahoo/config/subscription/ConfigDebug.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import com.yahoo.config.ConfigInstance;
diff --git a/config/src/main/java/com/yahoo/config/subscription/ConfigGetter.java b/config/src/main/java/com/yahoo/config/subscription/ConfigGetter.java
index e3d1f2eac55..f349c8fe47d 100755
--- a/config/src/main/java/com/yahoo/config/subscription/ConfigGetter.java
+++ b/config/src/main/java/com/yahoo/config/subscription/ConfigGetter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
diff --git a/config/src/main/java/com/yahoo/config/subscription/ConfigHandle.java b/config/src/main/java/com/yahoo/config/subscription/ConfigHandle.java
index 6a271f6a401..c0eff773bac 100644
--- a/config/src/main/java/com/yahoo/config/subscription/ConfigHandle.java
+++ b/config/src/main/java/com/yahoo/config/subscription/ConfigHandle.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import com.yahoo.config.ConfigInstance;
diff --git a/config/src/main/java/com/yahoo/config/subscription/ConfigInstanceSerializer.java b/config/src/main/java/com/yahoo/config/subscription/ConfigInstanceSerializer.java
index 7c042656bda..e035991abf4 100644
--- a/config/src/main/java/com/yahoo/config/subscription/ConfigInstanceSerializer.java
+++ b/config/src/main/java/com/yahoo/config/subscription/ConfigInstanceSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import com.yahoo.config.Serializer;
diff --git a/config/src/main/java/com/yahoo/config/subscription/ConfigInstanceUtil.java b/config/src/main/java/com/yahoo/config/subscription/ConfigInstanceUtil.java
index 82d02ec89f9..f1b7952f3b1 100644
--- a/config/src/main/java/com/yahoo/config/subscription/ConfigInstanceUtil.java
+++ b/config/src/main/java/com/yahoo/config/subscription/ConfigInstanceUtil.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import java.lang.reflect.Field;
diff --git a/config/src/main/java/com/yahoo/config/subscription/ConfigInterruptedException.java b/config/src/main/java/com/yahoo/config/subscription/ConfigInterruptedException.java
index 121dba1e555..a7c2c2d9127 100644
--- a/config/src/main/java/com/yahoo/config/subscription/ConfigInterruptedException.java
+++ b/config/src/main/java/com/yahoo/config/subscription/ConfigInterruptedException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
/**
diff --git a/config/src/main/java/com/yahoo/config/subscription/ConfigSet.java b/config/src/main/java/com/yahoo/config/subscription/ConfigSet.java
index c3ceb81d3db..02cc87f65d7 100644
--- a/config/src/main/java/com/yahoo/config/subscription/ConfigSet.java
+++ b/config/src/main/java/com/yahoo/config/subscription/ConfigSet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import java.util.Map;
diff --git a/config/src/main/java/com/yahoo/config/subscription/ConfigSource.java b/config/src/main/java/com/yahoo/config/subscription/ConfigSource.java
index 0aac060abf6..5814a004216 100644
--- a/config/src/main/java/com/yahoo/config/subscription/ConfigSource.java
+++ b/config/src/main/java/com/yahoo/config/subscription/ConfigSource.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
/**
diff --git a/config/src/main/java/com/yahoo/config/subscription/ConfigSourceSet.java b/config/src/main/java/com/yahoo/config/subscription/ConfigSourceSet.java
index e0605dce30d..81aeda52b54 100755
--- a/config/src/main/java/com/yahoo/config/subscription/ConfigSourceSet.java
+++ b/config/src/main/java/com/yahoo/config/subscription/ConfigSourceSet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import java.util.Arrays;
diff --git a/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java b/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java
index 558213c43b9..f5ed79a1d44 100644
--- a/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java
+++ b/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import com.yahoo.config.ConfigInstance;
@@ -257,7 +257,7 @@ public class ConfigSubscriber implements AutoCloseable {
return acquireSnapshot(timeoutMillis, false, isInitializing);
}
- @Deprecated // TODO: Remov4e on Vespa 8
+ @Deprecated // TODO: Remove on Vespa 8
public boolean nextGeneration(long timeoutMillis) {
return nextGeneration(timeoutMillis, false);
}
diff --git a/config/src/main/java/com/yahoo/config/subscription/ConfigURI.java b/config/src/main/java/com/yahoo/config/subscription/ConfigURI.java
index 1c46e58f849..6053ba5303a 100644
--- a/config/src/main/java/com/yahoo/config/subscription/ConfigURI.java
+++ b/config/src/main/java/com/yahoo/config/subscription/ConfigURI.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import java.io.File;
diff --git a/config/src/main/java/com/yahoo/config/subscription/DirSource.java b/config/src/main/java/com/yahoo/config/subscription/DirSource.java
index 6e12a38faa3..240d1b8e81d 100644
--- a/config/src/main/java/com/yahoo/config/subscription/DirSource.java
+++ b/config/src/main/java/com/yahoo/config/subscription/DirSource.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import java.io.File;
diff --git a/config/src/main/java/com/yahoo/config/subscription/FileSource.java b/config/src/main/java/com/yahoo/config/subscription/FileSource.java
index 9b6fb6442e8..2178c64cca3 100644
--- a/config/src/main/java/com/yahoo/config/subscription/FileSource.java
+++ b/config/src/main/java/com/yahoo/config/subscription/FileSource.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import java.io.File;
diff --git a/config/src/main/java/com/yahoo/config/subscription/JarSource.java b/config/src/main/java/com/yahoo/config/subscription/JarSource.java
index a098dec7f21..e367f78c31f 100644
--- a/config/src/main/java/com/yahoo/config/subscription/JarSource.java
+++ b/config/src/main/java/com/yahoo/config/subscription/JarSource.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import java.util.jar.JarFile;
diff --git a/config/src/main/java/com/yahoo/config/subscription/RawSource.java b/config/src/main/java/com/yahoo/config/subscription/RawSource.java
index 099a6bdc334..8b73d2058f5 100644
--- a/config/src/main/java/com/yahoo/config/subscription/RawSource.java
+++ b/config/src/main/java/com/yahoo/config/subscription/RawSource.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
/**
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSetSubscription.java b/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSetSubscription.java
index d3a1bfb50a9..be71f230934 100644
--- a/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSetSubscription.java
+++ b/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSetSubscription.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription.impl;
import com.yahoo.config.ConfigInstance;
@@ -11,6 +11,7 @@ import java.lang.reflect.Constructor;
/**
* Subscription on a programmatically built set of configs
+ *
* @author Vegard Havdal
*/
public class ConfigSetSubscription<T extends ConfigInstance> extends ConfigSubscription<T> {
@@ -20,11 +21,11 @@ public class ConfigSetSubscription<T extends ConfigInstance> extends ConfigSubsc
ConfigSetSubscription(ConfigKey<T> key, ConfigSubscriber subscriber, ConfigSource cset) {
super(key, subscriber);
- if (!(cset instanceof ConfigSet)) throw new IllegalArgumentException("Source is not a ConfigSet: "+cset);
- this.set=(ConfigSet) cset;
+ if (!(cset instanceof ConfigSet)) throw new IllegalArgumentException("Source is not a ConfigSet: " + cset);
+ this.set = (ConfigSet) cset;
subKey = new ConfigKey<>(configClass, key.getConfigId());
if (!set.contains(subKey)) {
- throw new IllegalArgumentException("The given ConfigSet "+set+" does not contain a config for "+subKey);
+ throw new IllegalArgumentException("The given ConfigSet " + set + " does not contain a config for " + subKey);
}
setGeneration(0L);
}
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSubscription.java b/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSubscription.java
index b58817305e9..6a81c2279d1 100644
--- a/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSubscription.java
+++ b/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSubscription.java
@@ -1,10 +1,6 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription.impl;
-import java.io.File;
-import java.util.concurrent.atomic.AtomicReference;
-import java.util.logging.Logger;
-
import com.yahoo.config.ConfigInstance;
import com.yahoo.config.subscription.ConfigSet;
import com.yahoo.config.subscription.ConfigSource;
@@ -15,9 +11,16 @@ import com.yahoo.config.subscription.FileSource;
import com.yahoo.config.subscription.JarSource;
import com.yahoo.config.subscription.RawSource;
import com.yahoo.vespa.config.ConfigKey;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.vespa.config.TimingValues;
import com.yahoo.vespa.config.protocol.DefContent;
+import java.io.File;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.logging.Logger;
+
+import static com.yahoo.vespa.config.PayloadChecksum.Type.MD5;
+
/**
* Represents one active subscription to one config
*
@@ -40,36 +43,44 @@ public abstract class ConfigSubscription<T extends ConfigInstance> {
private final T config;
private final Long generation;
private final boolean applyOnRestart;
+ private final PayloadChecksums payloadChecksums;
private ConfigState(boolean generationChanged,
Long generation,
boolean applyOnRestart,
boolean configChanged,
- T config) {
+ T config,
+ PayloadChecksums payloadChecksums) {
this.generationChanged = generationChanged;
this.generation = generation;
this.applyOnRestart = applyOnRestart;
this.configChanged = configChanged;
this.config = config;
+ this.payloadChecksums = payloadChecksums;
}
- private ConfigState(Long generation, T config) {
- this(false, generation, false, false, config);
+ private ConfigState(Long generation, T config, PayloadChecksums payloadChecksums) {
+ this(false, generation, false, false, config, payloadChecksums);
}
private ConfigState() {
- this(false, 0L, false, false, null);
+ this(false, 0L, false, false, null, PayloadChecksums.empty());
}
- private ConfigState<T> createUnchanged() { return new ConfigState<>(generation, config); }
+ private ConfigState<T> createUnchanged() { return new ConfigState<>(generation, config, payloadChecksums); }
+
public boolean isConfigChanged() { return configChanged; }
+
public boolean isGenerationChanged() { return generationChanged; }
+
public Long getGeneration() { return generation; }
public boolean applyOnRestart() { return applyOnRestart; }
public T getConfig() { return config; }
+ public PayloadChecksums getChecksums() { return payloadChecksums; }
+
}
/**
@@ -86,7 +97,7 @@ public abstract class ConfigSubscription<T extends ConfigInstance> {
/**
* Initializes one subscription
*
- * @param key a {@link ConfigKey}
+ * @param key a {@link ConfigKey}
* @param subscriber the subscriber for this subscription
*/
ConfigSubscription(ConfigKey<T> key, ConfigSubscriber subscriber) {
@@ -94,13 +105,13 @@ public abstract class ConfigSubscription<T extends ConfigInstance> {
this.configClass = key.getConfigClass();
this.subscriber = subscriber;
this.config.set(new ConfigState<>());
+ getConfigState().getChecksums().removeChecksumsOfType(MD5); // TODO: Temporary until we don't use md5 anymore
}
-
/**
* Correct type of ConfigSubscription instance based on type of source or form of config id
*
- * @param key a {@link ConfigKey}
+ * @param key a {@link ConfigKey}
* @param subscriber the subscriber for this subscription
* @return a subclass of a ConfigsSubscription
*/
@@ -113,19 +124,19 @@ public abstract class ConfigSubscription<T extends ConfigInstance> {
if (source instanceof JarSource || configId.startsWith("jar:")) return getJarSub(key, subscriber, source);
if (source instanceof ConfigSet) return new ConfigSetSubscription<>(key, subscriber, source);
if (source instanceof ConfigSourceSet) return new JRTConfigSubscription<>(key, subscriber, source, timingValues);
- throw new IllegalArgumentException("Unknown source type: "+source);
+ throw new IllegalArgumentException("Unknown source type: " + source);
}
private static <T extends ConfigInstance> JarConfigSubscription<T> getJarSub(
ConfigKey<T> key, ConfigSubscriber subscriber, ConfigSource source) {
String jarName;
- String path="config/";
+ String path = "config/";
if (source instanceof JarSource) {
JarSource js = (JarSource) source;
- jarName=js.getJarFile().getName();
- if (js.getPath()!=null) path=js.getPath();
+ jarName = js.getJarFile().getName();
+ if (js.getPath() != null) path = js.getPath();
} else {
- jarName=key.getConfigId().replace("jar:", "").replaceFirst("\\!/.*", "");
+ jarName = key.getConfigId().replace("jar:", "").replaceFirst("\\!/.*", "");
if (key.getConfigId().contains("!/")) path = key.getConfigId().replaceFirst(".*\\!/", "");
}
return new JarConfigSubscription<>(key, subscriber, jarName, path);
@@ -133,23 +144,30 @@ public abstract class ConfigSubscription<T extends ConfigInstance> {
private static <T extends ConfigInstance> ConfigSubscription<T> getFileSub(
ConfigKey<T> key, ConfigSubscriber subscriber, ConfigSource source) {
- File file = ((source instanceof FileSource))?((FileSource)source).getFile():new File(key.getConfigId().replace("file:", ""));
+ File file = ((source instanceof FileSource))
+ ? ((FileSource) source).getFile()
+ : new File(key.getConfigId().replace("file:", ""));
return new FileConfigSubscription<>(key, subscriber, file);
}
- private static <T extends ConfigInstance> ConfigSubscription<T> getRawSub(
- ConfigKey<T> key, ConfigSubscriber subscriber, ConfigSource source) {
- String payload = ((source instanceof RawSource)?((RawSource)source).payload:key.getConfigId().replace("raw:", ""));
- return new RawConfigSubscription<>(key, subscriber,payload);
+ private static <T extends ConfigInstance> ConfigSubscription<T> getRawSub(ConfigKey<T> key,
+ ConfigSubscriber subscriber,
+ ConfigSource source) {
+ String payload = ((source instanceof RawSource)
+ ? ((RawSource) source).payload
+ : key.getConfigId().replace("raw:", ""));
+ return new RawConfigSubscription<>(key, subscriber, payload);
}
- private static <T extends ConfigInstance> ConfigSubscription<T> getDirFileSub(ConfigKey<T> key, ConfigSubscriber subscriber, ConfigSource source) {
+ private static <T extends ConfigInstance> ConfigSubscription<T> getDirFileSub(ConfigKey<T> key,
+ ConfigSubscriber subscriber,
+ ConfigSource source) {
String dir = key.getConfigId().replace("dir:", "");
if (source instanceof DirSource) {
- dir = ((DirSource)source).getDir().toString();
+ dir = ((DirSource) source).getDir().toString();
}
if (!dir.endsWith(File.separator)) dir = dir + File.separator;
- String name = getConfigFilenameNoVersion(key);
+ String name = getConfigFilename(key);
File file = new File(dir + name);
if (!file.exists()) {
throw new IllegalArgumentException("Could not find a config file for '" + key.getName() + "' in '" + dir + "'");
@@ -174,36 +192,38 @@ public abstract class ConfigSubscription<T extends ConfigInstance> {
*/
public boolean isConfigChangedAndReset(Long requiredGen) {
ConfigState<T> prev = config.get();
- while ( prev.getGeneration().equals(requiredGen) && !config.compareAndSet(prev, prev.createUnchanged())) {
+ while (prev.getGeneration().equals(requiredGen) && !config.compareAndSet(prev, prev.createUnchanged())) {
prev = config.get();
}
// A false positive is a lot better than a false negative
return !prev.getGeneration().equals(requiredGen) || prev.isConfigChanged();
}
- void setConfig(Long generation, boolean applyOnRestart, T config) {
- this.config.set(new ConfigState<>(true, generation, applyOnRestart, true, config));
+ void setConfig(Long generation, boolean applyOnRestart, T config, PayloadChecksums payloadChecksums) {
+ this.config.set(new ConfigState<>(true, generation, applyOnRestart, true, config, payloadChecksums));
}
- /** Used by {@link FileConfigSubscription} and {@link ConfigSetSubscription} */
+ /**
+ * Used by {@link FileConfigSubscription} and {@link ConfigSetSubscription}
+ */
protected void setConfigIncGen(T config) {
ConfigState<T> prev = this.config.get();
- this.config.set(new ConfigState<>(true, prev.getGeneration() + 1, prev.applyOnRestart(), true, config));
+ this.config.set(new ConfigState<>(true, prev.getGeneration() + 1, prev.applyOnRestart(), true, config, prev.payloadChecksums));
}
protected void setConfigIfChanged(T config) {
ConfigState<T> prev = this.config.get();
- this.config.set(new ConfigState<>(true, prev.getGeneration(), prev.applyOnRestart(), !config.equals(prev.getConfig()), config));
+ this.config.set(new ConfigState<>(true, prev.getGeneration(), prev.applyOnRestart(), !config.equals(prev.getConfig()), config, prev.payloadChecksums));
}
void setGeneration(Long generation) {
ConfigState<T> prev = config.get();
- this.config.set(new ConfigState<>(true, generation, prev.applyOnRestart(), prev.isConfigChanged(), prev.getConfig()));
+ this.config.set(new ConfigState<>(true, generation, prev.applyOnRestart(), prev.isConfigChanged(), prev.getConfig(), prev.payloadChecksums));
}
void setApplyOnRestart(boolean applyOnRestart) {
ConfigState<T> prev = config.get();
- this.config.set(new ConfigState<>(prev.isGenerationChanged(), prev.getGeneration(), applyOnRestart, prev.isConfigChanged(), prev.getConfig()));
+ this.config.set(new ConfigState<>(prev.isGenerationChanged(), prev.getGeneration(), applyOnRestart, prev.isConfigChanged(), prev.getConfig(), prev.payloadChecksums));
}
/**
@@ -211,13 +231,13 @@ public abstract class ConfigSubscription<T extends ConfigInstance> {
*
* @return the ConfigInstance (the config) of this subscription
*/
-
public ConfigState<T> getConfigState() {
return config.get();
}
/**
* The class of the subscription's desired {@link ConfigInstance}
+ *
* @return the config class
*/
public Class<T> getConfigClass() {
@@ -251,7 +271,7 @@ public abstract class ConfigSubscription<T extends ConfigInstance> {
*
* @param timeout in milliseconds
* @return false if timed out, true if generation or config or {@link #exception} changed. If true, the {@link #config} field will be set also.
- * has changed
+ * has changed
*/
public abstract boolean nextConfig(long timeout);
@@ -300,19 +320,18 @@ public abstract class ConfigSubscription<T extends ConfigInstance> {
}
/**
- * Returns the file name corresponding to the given key's defName and version.
+ * Returns the file name corresponding to the given key's defName.
*
* @param key a {@link ConfigKey}
- * @return file name with version number.
+ * @return file name
*/
- static <T extends ConfigInstance> String getConfigFilenameNoVersion(ConfigKey<T> key) {
- StringBuilder filename = new StringBuilder(key.getName());
- filename.append(".cfg");
- return filename.toString();
+ static <T extends ConfigInstance> String getConfigFilename(ConfigKey<T> key) {
+ return key.getName() + ".cfg";
}
/**
* Force this into the given generation, used in testing
+ *
* @param generation a config generation
*/
public void reload(long generation) {
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/FileConfigSubscription.java b/config/src/main/java/com/yahoo/config/subscription/impl/FileConfigSubscription.java
index ce375f9fdbf..3282bc81e55 100644
--- a/config/src/main/java/com/yahoo/config/subscription/impl/FileConfigSubscription.java
+++ b/config/src/main/java/com/yahoo/config/subscription/impl/FileConfigSubscription.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription.impl;
import com.yahoo.config.ConfigInstance;
@@ -29,14 +29,14 @@ public class FileConfigSubscription<T extends ConfigInstance> extends ConfigSubs
FileConfigSubscription(ConfigKey<T> key, ConfigSubscriber subscriber, File f) {
super(key, subscriber);
setGeneration(0L);
- file=f;
+ file = f;
if (!file.exists() && !file.isFile())
- throw new IllegalArgumentException("Not a file: "+file);
+ throw new IllegalArgumentException("Not a file: " + file);
}
@Override
public boolean nextConfig(long timeout) {
- if (!file.exists() && !file.isFile()) throw new IllegalArgumentException("Not a file: "+file);
+ if (!file.exists() && !file.isFile()) throw new IllegalArgumentException("Not a file: " + file);
if (checkReloaded()) {
log.log(FINE, () -> "User forced config reload at " + System.currentTimeMillis());
// User forced reload
@@ -46,7 +46,7 @@ public class FileConfigSubscription<T extends ConfigInstance> extends ConfigSubs
log.log(FINE, () -> "Config: " + configState.getConfig().toString());
return true;
}
- if (file.lastModified()!=ts) {
+ if (file.lastModified() != ts) {
setConfigIncGen(updateConfig());
return true;
}
@@ -60,7 +60,7 @@ public class FileConfigSubscription<T extends ConfigInstance> extends ConfigSubs
}
private T updateConfig() {
- ts=file.lastModified();
+ ts = file.lastModified();
try {
ConfigPayload payload = new CfgConfigPayloadBuilder().deserialize(Arrays.asList(IOUtils.readFile(file).split("\n")));
return payload.toInstance(configClass, key.getConfigId());
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/GenericConfigHandle.java b/config/src/main/java/com/yahoo/config/subscription/impl/GenericConfigHandle.java
index a40da85c88b..924cc88579f 100644
--- a/config/src/main/java/com/yahoo/config/subscription/impl/GenericConfigHandle.java
+++ b/config/src/main/java/com/yahoo/config/subscription/impl/GenericConfigHandle.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription.impl;
import com.yahoo.config.subscription.ConfigHandle;
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/GenericConfigSubscriber.java b/config/src/main/java/com/yahoo/config/subscription/impl/GenericConfigSubscriber.java
index 8c0a8f27555..7fb2c59d832 100644
--- a/config/src/main/java/com/yahoo/config/subscription/impl/GenericConfigSubscriber.java
+++ b/config/src/main/java/com/yahoo/config/subscription/impl/GenericConfigSubscriber.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription.impl;
import java.util.List;
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/GenericJRTConfigSubscription.java b/config/src/main/java/com/yahoo/config/subscription/impl/GenericJRTConfigSubscription.java
index b052c79f429..dbe13e90c9c 100644
--- a/config/src/main/java/com/yahoo/config/subscription/impl/GenericJRTConfigSubscription.java
+++ b/config/src/main/java/com/yahoo/config/subscription/impl/GenericJRTConfigSubscription.java
@@ -1,8 +1,6 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription.impl;
-import java.util.List;
-
import com.yahoo.config.subscription.ConfigSource;
import com.yahoo.config.subscription.ConfigSubscriber;
import com.yahoo.vespa.config.ConfigKey;
@@ -11,6 +9,8 @@ import com.yahoo.vespa.config.TimingValues;
import com.yahoo.vespa.config.protocol.DefContent;
import com.yahoo.vespa.config.protocol.JRTClientConfigRequest;
+import java.util.List;
+
import static java.util.logging.Level.FINE;
/**
@@ -32,7 +32,8 @@ public class GenericJRTConfigSubscription extends JRTConfigSubscription<RawConfi
@Override
protected void setNewConfig(JRTClientConfigRequest jrtReq) {
- setConfig(jrtReq.getNewGeneration(), jrtReq.responseIsApplyOnRestart(), RawConfig.createFromResponseParameters(jrtReq) );
+ RawConfig rawConfig = RawConfig.createFromResponseParameters(jrtReq);
+ setConfig(jrtReq.getNewGeneration(), jrtReq.responseIsApplyOnRestart(), rawConfig, jrtReq.getNewChecksums());
log.log(FINE, () -> "in setNewConfig, config=" + this.getConfigState().getConfig());
}
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigRequester.java b/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigRequester.java
index d3562a47ea1..c88bdf9f3b8 100644
--- a/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigRequester.java
+++ b/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigRequester.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription.impl;
import com.yahoo.config.ConfigInstance;
@@ -9,7 +9,6 @@ import com.yahoo.jrt.RequestWaiter;
import com.yahoo.vespa.config.Connection;
import com.yahoo.vespa.config.ConnectionPool;
import com.yahoo.vespa.config.ErrorCode;
-import com.yahoo.vespa.config.ErrorType;
import com.yahoo.vespa.config.TimingValues;
import com.yahoo.vespa.config.protocol.JRTClientConfigRequest;
import com.yahoo.vespa.config.protocol.JRTConfigRequestFactory;
@@ -43,17 +42,20 @@ public class JRTConfigRequester implements RequestWaiter {
public static final ConfigSourceSet defaultSourceSet = ConfigSourceSet.createDefault();
private static final JRTManagedConnectionPools managedPool = new JRTManagedConnectionPools();
private static final int TRACELEVEL = 6;
- private final TimingValues timingValues;
- private boolean fatalFailures = false;
- private final ScheduledThreadPoolExecutor scheduler;
- private Instant noApplicationWarningLogged = Instant.MIN;
private static final Duration delayBetweenWarnings = Duration.ofSeconds(60);
- private final ConnectionPool connectionPool;
- private final ConfigSourceSet configSourceSet;
static final float randomFraction = 0.2f;
/* Time to be added to server timeout to create client timeout. This is the time allowed for the server to respond after serverTimeout has elapsed. */
private static final Double additionalTimeForClientTimeout = 10.0;
+ private final TimingValues timingValues;
+ private final ScheduledThreadPoolExecutor scheduler;
+
+ private final ConnectionPool connectionPool;
+ private final ConfigSourceSet configSourceSet;
+
+ private Instant noApplicationWarningLogged = Instant.MIN;
+ private int failures = 0;
+
/**
* Returns a new requester
*
@@ -68,7 +70,9 @@ public class JRTConfigRequester implements RequestWaiter {
this.timingValues = timingValues;
}
- /** Only for testing */
+ /**
+ * Only for testing
+ */
public JRTConfigRequester(ConnectionPool connectionPool, TimingValues timingValues) {
this(null, new ScheduledThreadPoolExecutor(1), connectionPool, timingValues);
}
@@ -90,12 +94,12 @@ public class JRTConfigRequester implements RequestWaiter {
private <T extends ConfigInstance> void doRequest(JRTConfigSubscription<T> sub, JRTClientConfigRequest req) {
Connection connection = connectionPool.getCurrent();
req.getRequest().setContext(new RequestContext(sub, req, connection));
- if ( ! req.validateParameters()) throw new ConfigurationRuntimeException("Error in parameters for config request: " + req);
+ if (!req.validateParameters()) throw new ConfigurationRuntimeException("Error in parameters for config request: " + req);
double jrtClientTimeout = getClientTimeout(req);
log.log(FINE, () -> "Requesting config for " + sub + " on connection " + connection
- + " with client timeout " + jrtClientTimeout +
- (log.isLoggable(FINEST) ? (",defcontent=" + req.getDefContent().asString()) : ""));
+ + " with client timeout " + jrtClientTimeout +
+ (log.isLoggable(FINEST) ? (",defcontent=" + req.getDefContent().asString()) : ""));
connection.invokeAsync(req.getRequest(), jrtClientTimeout, this);
}
@@ -127,15 +131,13 @@ public class JRTConfigRequester implements RequestWaiter {
Trace trace = jrtReq.getResponseTrace();
trace.trace(TRACELEVEL, "JRTConfigRequester.doHandle()");
log.log(FINEST, () -> trace.toString());
- if (validResponse) {
+ if (validResponse)
handleOKRequest(jrtReq, sub);
- } else {
- logWhenErrorResponse(jrtReq, connection);
+ else
handleFailedRequest(jrtReq, sub, connection);
- }
}
- private void logWhenErrorResponse(JRTClientConfigRequest jrtReq, Connection connection) {
+ private void logError(JRTClientConfigRequest jrtReq, Connection connection) {
switch (jrtReq.errorCode()) {
case com.yahoo.jrt.ErrorCode.CONNECTION:
log.log(FINE, () -> "Request callback failed: " + jrtReq.errorMessage() +
@@ -158,87 +160,40 @@ public class JRTConfigRequester implements RequestWaiter {
}
private void handleFailedRequest(JRTClientConfigRequest jrtReq, JRTConfigSubscription<ConfigInstance> sub, Connection connection) {
- final boolean configured = (sub.getConfigState().getConfig() != null);
- if (configured) {
- // The subscription object has an "old" config, which is all we have to offer back now
- log.log(INFO, "Failure of config subscription, clients will keep existing config until resolved: " + sub);
- }
- ErrorType errorType = ErrorType.getErrorType(jrtReq.errorCode());
- connectionPool.setError(connection, jrtReq.errorCode());
- long delay = calculateFailedRequestDelay(errorType, fatalFailures, timingValues, configured);
- if (errorType == ErrorType.TRANSIENT) {
- handleTransientlyFailed(jrtReq, sub, delay, connection);
- } else {
- handleFatallyFailed(jrtReq, sub, delay);
- }
+ logError(jrtReq, connection);
+
+ log.log(INFO, "Failure of config subscription to " + connection.getAddress() +
+ ", clients will keep existing config until resolved: " + sub);
+ connectionPool.switchConnection(connection);
+ failures++;
+ long delay = calculateFailedRequestDelay(failures, timingValues);
+ // The logging depends on whether we are configured or not.
+ Level logLevel = sub.getConfigState().getConfig() == null ? Level.FINE : Level.INFO;
+ log.log(logLevel, () -> "Request for config " + jrtReq.getShortDescription() + "' failed with error code " +
+ jrtReq.errorCode() + " (" + jrtReq.errorMessage() + "), scheduling new request " +
+ " in " + delay + " ms");
+ scheduleNextRequest(jrtReq, sub, delay, calculateErrorTimeout());
}
- static long calculateFailedRequestDelay(ErrorType errorType,
- boolean fatalFailures,
- TimingValues timingValues,
- boolean configured) {
- long delay = (configured ? timingValues.getConfiguredErrorDelay(): timingValues.getUnconfiguredDelay());
+ static long calculateFailedRequestDelay(int failures, TimingValues timingValues) {
+ long delay = timingValues.getFixedDelay() * (long)Math.pow(2, failures);
+ delay = Math.min(60_000, delay);
+ delay = timingValues.getPlusMinusFractionRandom(delay, randomFraction);
- switch (errorType) {
- case TRANSIENT:
- delay = timingValues.getRandomTransientDelay(delay);
- break;
- case FATAL:
- delay = timingValues.getFixedDelay() + (fatalFailures ? delay : 0);
- delay = timingValues.getPlusMinusFractionRandom(delay, randomFraction);
- break;
- default:
- throw new IllegalArgumentException("Unknown error type " + errorType);
- }
return delay;
}
- private void handleTransientlyFailed(JRTClientConfigRequest jrtReq,
- JRTConfigSubscription<ConfigInstance> sub,
- long delay,
- Connection connection) {
- fatalFailures = false;
- log.log(INFO, "Connection to " + connection.getAddress() +
- " failed or timed out, clients will keep existing config, will keep trying.");
- scheduleNextRequest(jrtReq, sub, delay, calculateErrorTimeout());
- }
-
private long calculateErrorTimeout() {
return timingValues.getPlusMinusFractionRandom(timingValues.getErrorTimeout(), randomFraction);
}
- /**
- * This handles a fatal error both in the case that the subscriber is configured and not.
- * The difference is in the delay (passed from outside) and the log level used for
- * error message.
- *
- * @param jrtReq a JRT config request
- * @param sub a config subscription
- * @param delay delay before sending a new request
- */
- private void handleFatallyFailed(JRTClientConfigRequest jrtReq, JRTConfigSubscription<ConfigInstance> sub, long delay) {
- fatalFailures = true;
- // The logging depends on whether we are configured or not.
- Level logLevel = sub.getConfigState().getConfig() == null ? Level.FINE : Level.INFO;
- String logMessage = "Request for config " + jrtReq.getShortDescription() + "' failed with error code " +
- jrtReq.errorCode() + " (" + jrtReq.errorMessage() + "), scheduling new connect " +
- " in " + delay + " ms";
- log.log(logLevel, logMessage);
- scheduleNextRequest(jrtReq, sub, delay, calculateErrorTimeout());
- }
-
private void handleOKRequest(JRTClientConfigRequest jrtReq, JRTConfigSubscription<ConfigInstance> sub) {
- fatalFailures = false;
+ failures = 0;
noApplicationWarningLogged = Instant.MIN;
sub.setLastCallBackOKTS(Instant.now());
log.log(FINE, () -> "OK response received in handleOkRequest: " + jrtReq);
if (jrtReq.hasUpdatedGeneration()) {
- // We only want this latest generation to be in the queue, we do not preserve history in this system
- sub.getReqQueue().clear();
- boolean putOK = sub.getReqQueue().offer(jrtReq);
- if (!putOK) {
- sub.setException(new ConfigurationRuntimeException("Could not put returned request on queue of subscription " + sub));
- }
+ sub.updateConfig(jrtReq);
}
scheduleNextRequest(jrtReq, sub, calculateSuccessDelay(), calculateSuccessTimeout());
}
@@ -301,9 +256,7 @@ public class JRTConfigRequester implements RequestWaiter {
}
}
- boolean getFatalFailures() {
- return fatalFailures;
- }
+ int getFailures() { return failures; }
// TODO: Should be package private, used in integrationtest.rb in system tests
public ConnectionPool getConnectionPool() {
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigSubscription.java b/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigSubscription.java
index b48e5905239..123366d4695 100644
--- a/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigSubscription.java
+++ b/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigSubscription.java
@@ -1,7 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription.impl;
import com.yahoo.config.ConfigInstance;
+import com.yahoo.config.ConfigurationRuntimeException;
import com.yahoo.config.subscription.ConfigInterruptedException;
import com.yahoo.config.subscription.ConfigSource;
import com.yahoo.config.subscription.ConfigSourceSet;
@@ -15,14 +16,17 @@ import com.yahoo.vespa.config.protocol.Payload;
import java.time.Duration;
import java.time.Instant;
+import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.MD5;
import static java.util.logging.Level.FINE;
import static java.util.logging.Level.INFO;
/**
- * A JRT config subscription uses one {@link JRTConfigRequester} to fetch config using Vespa RPC from a config source, typically proxy or server
+ * A config subscription for a config instance, gets config using Vespa RPC from a config source
+ * (config proxy or config server).
*
* @author vegardh
*/
@@ -35,10 +39,10 @@ public class JRTConfigSubscription<T extends ConfigInstance> extends ConfigSubsc
private Instant lastOK = Instant.MIN;
/**
- * The queue containing either nothing or the one (newest) request that has got callback from JRT,
+ * A queue containing either zero or one (the newest) request that got a callback from JRT,
* but has not yet been handled.
*/
- private LinkedBlockingQueue<JRTClientConfigRequest> reqQueue = new LinkedBlockingQueue<>();
+ private BlockingQueue<JRTClientConfigRequest> reqQueue = new LinkedBlockingQueue<>();
private ConfigSourceSet sources;
public JRTConfigSubscription(ConfigKey<T> key, ConfigSubscriber subscriber, ConfigSource source, TimingValues timingValues) {
@@ -51,56 +55,50 @@ public class JRTConfigSubscription<T extends ConfigInstance> extends ConfigSubsc
@Override
public boolean nextConfig(long timeoutMillis) {
+ // Note: since the JRT callback thread will clear the queue first when it inserts a brand new element,
+ // (see #updateConfig()) there is a race here. However: the caller will handle it no matter what it gets
+ // from the queue here, the important part is that local state on the subscription objects is preserved.
+
+ // Poll the queue for a next config until timeout
+ JRTClientConfigRequest jrtReq = pollQueue(timeoutMillis);
+ if (jrtReq == null) return newConfigOrException();
+
+ log.log(FINE, () -> "Polled queue and found config " + jrtReq);
+ // Might set the following (caller must check):
+ // generation, generation changed, config, config changed
+ // Important: it never <em>resets</em> those flags, we must persist that state until the
+ // ConfigSubscriber clears it
+ if (jrtReq.hasUpdatedGeneration()) {
+ setApplyOnRestart(jrtReq.responseIsApplyOnRestart());
+ if (jrtReq.hasUpdatedConfig()) {
+ setNewConfig(jrtReq);
+ } else {
+ setGeneration(jrtReq.getNewGeneration());
+ }
+ }
+
+ return newConfigOrException();
+ }
+
+ private boolean newConfigOrException() {
// These flags may have been left true from a previous call, since ConfigSubscriber's nextConfig
// not necessarily returned true and reset the flags then
ConfigState<T> configState = getConfigState();
- boolean gotNew = configState.isGenerationChanged() || configState.isConfigChanged() || hasException();
- // Return that now, if there's nothing in queue, so that ConfigSubscriber can move on to other subscriptions to check
- if (getReqQueue().peek() == null && gotNew) {
- return true;
- }
- // Otherwise poll the queue for another generation or timeout
- //
- // Note: since the JRT callback thread will clear the queue first when it inserts a brand new element,
- // there is a race here. However: the caller will handle it no matter what it gets from the queue here,
- // the important part is that local state on the subscription objects is preserved.
- if (!pollQueue(timeoutMillis)) return gotNew;
- configState = getConfigState();
- gotNew = configState.isGenerationChanged() || configState.isConfigChanged() || hasException();
- return gotNew;
+ return configState.isGenerationChanged() || configState.isConfigChanged() || hasException();
}
/**
- * Polls the callback queue and <em>maybe</em> sets the following (caller must check):
- * generation, generation changed, config, config changed
- * Important: it never <em>resets</em> those flags, we must persist that state until the
- * {@link ConfigSubscriber} clears it
+ * Polls the callback queue for new config
*
* @param timeoutMillis timeout when polling (returns after at most this time)
- * @return true if it got anything off the queue and <em>maybe</em> changed any state, false if timed out taking from queue
*/
- private boolean pollQueue(long timeoutMillis) {
- JRTClientConfigRequest jrtReq;
+ private JRTClientConfigRequest pollQueue(long timeoutMillis) {
try {
// Only valid responses are on queue, no need to validate
- jrtReq = getReqQueue().poll(timeoutMillis, TimeUnit.MILLISECONDS);
+ return reqQueue.poll(timeoutMillis, TimeUnit.MILLISECONDS);
} catch (InterruptedException e1) {
throw new ConfigInterruptedException(e1);
}
- if (jrtReq == null) {
- // timed out, we know nothing new.
- return false;
- }
- log.log(FINE, () -> "Polled queue and found config " + jrtReq);
- if (jrtReq.hasUpdatedGeneration()) {
- setApplyOnRestart(jrtReq.responseIsApplyOnRestart());
- if (jrtReq.hasUpdatedConfig()) {
- setNewConfig(jrtReq);
- } else {
- setGeneration(jrtReq.getNewGeneration());
- }
- }
- return true;
}
protected void setNewConfig(JRTClientConfigRequest jrtReq) {
@@ -111,7 +109,7 @@ public class JRTConfigSubscription<T extends ConfigInstance> extends ConfigSubsc
} catch (IllegalArgumentException e) {
badConfigE = e;
}
- setConfig(jrtReq.getNewGeneration(), jrtReq.responseIsApplyOnRestart(), configInstance);
+ setConfig(jrtReq.getNewGeneration(), jrtReq.responseIsApplyOnRestart(), configInstance, jrtReq.getNewChecksums());
if (badConfigE != null) {
throw new IllegalArgumentException("Bad config from jrt", badConfigE);
}
@@ -129,12 +127,16 @@ public class JRTConfigSubscription<T extends ConfigInstance> extends ConfigSubsc
Payload payload = jrtRequest.getNewPayload();
ConfigPayload configPayload = ConfigPayload.fromUtf8Array(payload.withCompression(CompressionType.UNCOMPRESSED).getData());
T configInstance = configPayload.toInstance(configClass, jrtRequest.getConfigKey().getConfigId());
- configInstance.setConfigMd5(jrtRequest.getNewConfigMd5());
+ configInstance.setConfigMd5(jrtRequest.getNewChecksums().getForType(MD5).asString()); // Note: Sets configmd5 in ConfigInstance
return configInstance;
}
- LinkedBlockingQueue<JRTClientConfigRequest> getReqQueue() {
- return reqQueue;
+ // Will be called by JRTConfigRequester when there is a config with new generation for this subscription
+ void updateConfig(JRTClientConfigRequest jrtReq) {
+ // We only want this latest generation to be in the queue, we do not preserve history in this system
+ reqQueue.clear();
+ if ( ! reqQueue.offer(jrtReq))
+ setException(new ConfigurationRuntimeException("Failed offering returned request to queue of subscription " + this));
}
@Override
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/JRTManagedConnectionPools.java b/config/src/main/java/com/yahoo/config/subscription/impl/JRTManagedConnectionPools.java
index bebe237bab7..ad77911dfc3 100644
--- a/config/src/main/java/com/yahoo/config/subscription/impl/JRTManagedConnectionPools.java
+++ b/config/src/main/java/com/yahoo/config/subscription/impl/JRTManagedConnectionPools.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription.impl;
import com.yahoo.config.subscription.ConfigSourceSet;
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/JarConfigSubscription.java b/config/src/main/java/com/yahoo/config/subscription/impl/JarConfigSubscription.java
index 05da9a72837..095ebc59c11 100644
--- a/config/src/main/java/com/yahoo/config/subscription/impl/JarConfigSubscription.java
+++ b/config/src/main/java/com/yahoo/config/subscription/impl/JarConfigSubscription.java
@@ -1,14 +1,6 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription.impl;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.UnsupportedEncodingException;
-import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
-import java.util.jar.JarFile;
-import java.util.zip.ZipEntry;
-
import com.yahoo.config.ConfigInstance;
import com.yahoo.config.ConfigurationRuntimeException;
import com.yahoo.config.subscription.CfgConfigPayloadBuilder;
@@ -17,6 +9,15 @@ import com.yahoo.config.subscription.ConfigSubscriber;
import com.yahoo.io.IOUtils;
import com.yahoo.vespa.config.ConfigKey;
import com.yahoo.vespa.config.ConfigPayload;
+import com.yahoo.vespa.config.PayloadChecksums;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+import java.util.jar.JarFile;
+import java.util.zip.ZipEntry;
/**
* Subscription to use when config id is jar:.../foo.jar[!/pathInJar/]
@@ -63,7 +64,7 @@ public class JarConfigSubscription<T extends ConfigInstance> extends ConfigSubsc
} catch (IOException e) {
throw new ConfigurationRuntimeException(e);
}
- setConfig(0L, false, config);
+ setConfig(0L, false, config, PayloadChecksums.empty());
try {
jarFile.close();
} catch (IOException e) {
@@ -81,16 +82,15 @@ public class JarConfigSubscription<T extends ConfigInstance> extends ConfigSubsc
}
/**
- * Returns the entry corresponding to the ConfigInstance's defName/Version in the given directory in
- * the given JarFile.
- * If the file with correct version number does not exist, returns the filename without version number.
+ * Returns the entry corresponding to the ConfigInstance's defName in the given directory in
+ * the given jar file.
* The file's existence is checked elsewhere.
*/
private ZipEntry getEntry(JarFile jarFile, String dir) {
if (!dir.endsWith("/")) {
dir = dir + '/';
}
- return jarFile.getEntry(dir + getConfigFilenameNoVersion(key));
+ return jarFile.getEntry(dir + getConfigFilename(key));
}
@Override
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/MockConnection.java b/config/src/main/java/com/yahoo/config/subscription/impl/MockConnection.java
index bed7a0fa3c4..c27e4cb2bc8 100644
--- a/config/src/main/java/com/yahoo/config/subscription/impl/MockConnection.java
+++ b/config/src/main/java/com/yahoo/config/subscription/impl/MockConnection.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription.impl;
import com.yahoo.jrt.Request;
@@ -7,9 +7,9 @@ import com.yahoo.jrt.Supervisor;
import com.yahoo.vespa.config.ConfigPayload;
import com.yahoo.vespa.config.Connection;
import com.yahoo.vespa.config.ConnectionPool;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.vespa.config.protocol.JRTServerConfigRequestV3;
import com.yahoo.vespa.config.protocol.Payload;
-import com.yahoo.vespa.config.util.ConfigUtils;
/**
* For unit testing
@@ -62,9 +62,6 @@ public class MockConnection implements ConnectionPool, Connection {
public void close() {}
@Override
- public void setError(Connection connection, int errorCode) { }
-
- @Override
public Connection getCurrent() {
return this;
}
@@ -96,7 +93,7 @@ public class MockConnection implements ConnectionPool, Connection {
JRTServerConfigRequestV3 jrtReq = JRTServerConfigRequestV3.createFromRequest(request);
Payload payload = Payload.from(ConfigPayload.empty());
long generation = 1;
- jrtReq.addOkResponse(payload, generation, false, ConfigUtils.getMd5(payload.getData()));
+ jrtReq.addOkResponse(payload, generation, false, PayloadChecksums.fromPayload(payload));
}
}
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/RawConfigSubscription.java b/config/src/main/java/com/yahoo/config/subscription/impl/RawConfigSubscription.java
index 68ff6bb0135..acc1b183bb7 100644
--- a/config/src/main/java/com/yahoo/config/subscription/impl/RawConfigSubscription.java
+++ b/config/src/main/java/com/yahoo/config/subscription/impl/RawConfigSubscription.java
@@ -1,14 +1,15 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription.impl;
-import java.util.Arrays;
-
import com.yahoo.config.ConfigInstance;
import com.yahoo.config.subscription.CfgConfigPayloadBuilder;
import com.yahoo.config.subscription.ConfigInterruptedException;
import com.yahoo.config.subscription.ConfigSubscriber;
import com.yahoo.vespa.config.ConfigKey;
import com.yahoo.vespa.config.ConfigPayload;
+import com.yahoo.vespa.config.PayloadChecksums;
+
+import java.util.Arrays;
/**
* Subscription used when config id is raw:...
@@ -35,7 +36,7 @@ public class RawConfigSubscription<T extends ConfigInstance> extends ConfigSubsc
if (payload == null) {
payload = inputPayload;
ConfigPayload configPayload = new CfgConfigPayloadBuilder().deserialize(Arrays.asList(payload.split("\n")));
- setConfig(0L, false, configPayload.toInstance(configClass, key.getConfigId()));
+ setConfig(0L, false, configPayload.toInstance(configClass, key.getConfigId()), PayloadChecksums.empty());
return true;
}
try {
diff --git a/config/src/main/java/com/yahoo/config/subscription/package-info.java b/config/src/main/java/com/yahoo/config/subscription/package-info.java
index c3910251a40..6798809dee2 100644
--- a/config/src/main/java/com/yahoo/config/subscription/package-info.java
+++ b/config/src/main/java/com/yahoo/config/subscription/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
/**
diff --git a/config/src/main/java/com/yahoo/vespa/config/ConfigCacheKey.java b/config/src/main/java/com/yahoo/vespa/config/ConfigCacheKey.java
index e8e3fe9ed94..c0ab8fcc55a 100644
--- a/config/src/main/java/com/yahoo/vespa/config/ConfigCacheKey.java
+++ b/config/src/main/java/com/yahoo/vespa/config/ConfigCacheKey.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
/**
diff --git a/config/src/main/java/com/yahoo/vespa/config/ConfigDefinition.java b/config/src/main/java/com/yahoo/vespa/config/ConfigDefinition.java
index 0f04b4caf08..216fa84cd5b 100644
--- a/config/src/main/java/com/yahoo/vespa/config/ConfigDefinition.java
+++ b/config/src/main/java/com/yahoo/vespa/config/ConfigDefinition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.yolean.Exceptions;
@@ -24,7 +24,6 @@ public class ConfigDefinition {
public static Logger log = Logger.getLogger(ConfigDefinition.class.getName());
private final String name;
- private final String version;
private final String namespace;
ConfigDefinition parent = null;
@@ -54,9 +53,15 @@ public class ConfigDefinition {
private static final Double DOUBLE_MIN = -1e308d;
private static final Double DOUBLE_MAX = 1e308d;
+ // TODO: Remove in Vespa 8
+ @Deprecated
public ConfigDefinition(String name, String version, String namespace) {
this.name = name;
- this.version = version;
+ this.namespace = namespace;
+ }
+
+ public ConfigDefinition(String name, String namespace) {
+ this.name = name;
this.namespace = namespace;
}
@@ -338,8 +343,8 @@ public class ConfigDefinition {
* of as an inner array with only one element.
*/
public static class StructDef extends ConfigDefinition {
- StructDef(String name, String version, ConfigDefinition parent) {
- super(name, version, parent.getNamespace());
+ StructDef(String name, ConfigDefinition parent) {
+ super(name, parent.getNamespace());
this.parent = parent;
}
}
@@ -350,8 +355,8 @@ public class ConfigDefinition {
*
*/
public static class InnerArrayDef extends ConfigDefinition {
- InnerArrayDef(String name, String version, ConfigDefinition parent) {
- super(name, version, parent.getNamespace());
+ InnerArrayDef(String name, ConfigDefinition parent) {
+ super(name, parent.getNamespace());
this.parent = parent;
}
}
@@ -363,8 +368,8 @@ public class ConfigDefinition {
*/
public static class ArrayDef extends ConfigDefinition {
private TypeSpec typeSpec;
- ArrayDef(String name, String version, ConfigDefinition parent) {
- super(name, version, parent.getNamespace());
+ ArrayDef(String name, ConfigDefinition parent) {
+ super(name, parent.getNamespace());
this.parent = parent;
}
public TypeSpec getTypeSpec() {
@@ -389,8 +394,8 @@ public class ConfigDefinition {
*/
public static class LeafMapDef extends ConfigDefinition {
private TypeSpec typeSpec;
- LeafMapDef(String name, String version, ConfigDefinition parent) {
- super(name, version, parent.getNamespace());
+ LeafMapDef(String name, ConfigDefinition parent) {
+ super(name, parent.getNamespace());
this.parent = parent;
}
public TypeSpec getTypeSpec() {
@@ -407,8 +412,8 @@ public class ConfigDefinition {
*
*/
public static class StructMapDef extends ConfigDefinition {
- StructMapDef(String name, String version, ConfigDefinition parent) {
- super(name, version, parent.getNamespace());
+ StructMapDef(String name, ConfigDefinition parent) {
+ super(name, parent.getNamespace());
this.parent = parent;
}
}
@@ -598,11 +603,11 @@ public class ConfigDefinition {
}
public void addInnerArrayDef(String id) {
- innerArrayDefs.put(id, new InnerArrayDef(id, version, this));
+ innerArrayDefs.put(id, new InnerArrayDef(id, this));
}
public void addLeafMapDef(String id) {
- leafMapDefs.put(id, new LeafMapDef(id, version, this));
+ leafMapDefs.put(id, new LeafMapDef(id, this));
}
public void addEnumDef(String id, List<String> vals, String defVal) {
@@ -751,7 +756,7 @@ public class ConfigDefinition {
if (ret!=null) {
return ret;
}
- ret = new InnerArrayDef(name, version, this);
+ ret = new InnerArrayDef(name, this);
innerArrayDefs.put(name, ret);
return ret;
}
@@ -765,7 +770,7 @@ public class ConfigDefinition {
if (ret!=null) {
return ret;
}
- ret = new StructDef(name, version, this);
+ ret = new StructDef(name, this);
structDefs.put(name, ret);
return ret;
}
@@ -779,7 +784,7 @@ public class ConfigDefinition {
if (ret!=null) {
return ret;
}
- ret = new ArrayDef(name, version, this);
+ ret = new ArrayDef(name, this);
arrayDefs.put(name, ret);
return ret;
}
@@ -793,7 +798,7 @@ public class ConfigDefinition {
if (ret!=null) {
return ret;
}
- ret = new StructMapDef(name, version, this);
+ ret = new StructMapDef(name, this);
structMapDefs.put(name, ret);
return ret;
}
@@ -803,7 +808,7 @@ public class ConfigDefinition {
if (ret!=null) {
return ret;
}
- ret = new LeafMapDef(name, version, this);
+ ret = new LeafMapDef(name, this);
leafMapDefs.put(name, ret);
return ret;
}
diff --git a/config/src/main/java/com/yahoo/vespa/config/ConfigDefinitionBuilder.java b/config/src/main/java/com/yahoo/vespa/config/ConfigDefinitionBuilder.java
index b265b13a6b6..f6493c3514e 100644
--- a/config/src/main/java/com/yahoo/vespa/config/ConfigDefinitionBuilder.java
+++ b/config/src/main/java/com/yahoo/vespa/config/ConfigDefinitionBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.config.codegen.CNode;
@@ -21,7 +21,7 @@ public class ConfigDefinitionBuilder {
* @return a ConfigDefinition object
*/
public static ConfigDefinition createConfigDefinition(CNode root) {
- ConfigDefinition def = new ConfigDefinition(root.getName(), root.getVersion(), root.getNamespace());
+ ConfigDefinition def = new ConfigDefinition(root.getName(), root.getNamespace());
for (CNode node : root.getChildren()) {
addNode(def, node);
diff --git a/config/src/main/java/com/yahoo/vespa/config/ConfigDefinitionKey.java b/config/src/main/java/com/yahoo/vespa/config/ConfigDefinitionKey.java
index c4c398707b7..f3eae2c4334 100644
--- a/config/src/main/java/com/yahoo/vespa/config/ConfigDefinitionKey.java
+++ b/config/src/main/java/com/yahoo/vespa/config/ConfigDefinitionKey.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import java.util.Objects;
diff --git a/config/src/main/java/com/yahoo/vespa/config/ConfigFileFormat.java b/config/src/main/java/com/yahoo/vespa/config/ConfigFileFormat.java
index 1f955a7501f..d72d720468c 100644
--- a/config/src/main/java/com/yahoo/vespa/config/ConfigFileFormat.java
+++ b/config/src/main/java/com/yahoo/vespa/config/ConfigFileFormat.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.config.codegen.CNode;
diff --git a/config/src/main/java/com/yahoo/vespa/config/ConfigKey.java b/config/src/main/java/com/yahoo/vespa/config/ConfigKey.java
index 6fcdc19cf97..9a7ac58e339 100755
--- a/config/src/main/java/com/yahoo/vespa/config/ConfigKey.java
+++ b/config/src/main/java/com/yahoo/vespa/config/ConfigKey.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.config.ConfigInstance;
@@ -17,7 +17,6 @@ public class ConfigKey<CONFIGCLASS extends ConfigInstance> implements Comparable
// The two fields below are only set when ConfigKey is constructed from a config class. Can be null
private final Class<CONFIGCLASS> configClass;
- private final String md5; // config definition md5
/**
* Constructs new key
@@ -27,7 +26,7 @@ public class ConfigKey<CONFIGCLASS extends ConfigInstance> implements Comparable
* @param namespace namespace for this config definition
*/
public ConfigKey(String name, String configIdString, String namespace) {
- this(name, configIdString, namespace, null, null);
+ this(name, configIdString, namespace, null);
}
/**
@@ -38,10 +37,12 @@ public class ConfigKey<CONFIGCLASS extends ConfigInstance> implements Comparable
*/
public ConfigKey(Class<CONFIGCLASS> clazz, String configIdString) {
this(getFieldFromClass(clazz, "CONFIG_DEF_NAME"),
- configIdString, getFieldFromClass(clazz, "CONFIG_DEF_NAMESPACE"), getFieldFromClass(clazz, "CONFIG_DEF_MD5"), clazz);
+ configIdString,
+ getFieldFromClass(clazz, "CONFIG_DEF_NAMESPACE"),
+ clazz);
}
- public ConfigKey(String name, String configIdString, String namespace, String defMd5, Class<CONFIGCLASS> clazz) {
+ public ConfigKey(String name, String configIdString, String namespace, Class<CONFIGCLASS> clazz) {
if (name == null || name.isEmpty())
throw new ConfigurationRuntimeException("Config name cannot be null or empty!");
if (namespace == null || namespace.isEmpty())
@@ -49,7 +50,6 @@ public class ConfigKey<CONFIGCLASS extends ConfigInstance> implements Comparable
this.name = name;
this.configId = (configIdString == null) ? "" : configIdString;
this.namespace = namespace;
- this.md5 = (defMd5 == null) ? "" : defMd5;
this.configClass = clazz;
}
@@ -108,10 +108,6 @@ public class ConfigKey<CONFIGCLASS extends ConfigInstance> implements Comparable
return configClass;
}
- public String getMd5() {
- return md5;
- }
-
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("name=");
@@ -123,8 +119,8 @@ public class ConfigKey<CONFIGCLASS extends ConfigInstance> implements Comparable
return sb.toString();
}
- public static ConfigKey<?> createFull(String name, String configId, String namespace, String md5) {
- return new ConfigKey<>(name, configId, namespace, md5, null);
+ public static ConfigKey<?> createFull(String name, String configId, String namespace) {
+ return new ConfigKey<>(name, configId, namespace, null);
}
}
diff --git a/config/src/main/java/com/yahoo/vespa/config/ConfigPayload.java b/config/src/main/java/com/yahoo/vespa/config/ConfigPayload.java
index 94f07a52641..286a8d8fac6 100644
--- a/config/src/main/java/com/yahoo/vespa/config/ConfigPayload.java
+++ b/config/src/main/java/com/yahoo/vespa/config/ConfigPayload.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.config.ConfigInstance;
diff --git a/config/src/main/java/com/yahoo/vespa/config/ConfigPayloadApplier.java b/config/src/main/java/com/yahoo/vespa/config/ConfigPayloadApplier.java
index d24f09bda12..9cd9a7c0981 100644
--- a/config/src/main/java/com/yahoo/vespa/config/ConfigPayloadApplier.java
+++ b/config/src/main/java/com/yahoo/vespa/config/ConfigPayloadApplier.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.config.ConfigBuilder;
@@ -364,16 +364,16 @@ public class ConfigPayloadApplier<T extends ConfigInstance.Builder> {
/**
- * Checks whether or not this field is of type 'path', in which
+ * Checks if this field is of type 'path', in which
* case some special handling might be needed. Caches the result.
*/
- private Set<String> pathFieldSet = new HashSet<>();
+ private final Set<String> pathFieldSet = new HashSet<>();
private boolean isPathField(Object builder, String methodName) {
// Paths are stored as FileReference in Builder.
return isFieldType(pathFieldSet, builder, methodName, FileReference.class);
}
- private Set<String> urlFieldSet = new HashSet<>();
+ private final Set<String> urlFieldSet = new HashSet<>();
private boolean isUrlField(Object builder, String methodName) {
// Urls are stored as UrlReference in Builder.
return isFieldType(urlFieldSet, builder, methodName, UrlReference.class);
@@ -440,7 +440,6 @@ public class ConfigPayloadApplier<T extends ConfigInstance.Builder> {
} catch (NoSuchMethodException e) {
throw new RuntimeException("Could not create class '" + "'" + structBuilderClass.getName() + "'");
}
-
}
/**
diff --git a/config/src/main/java/com/yahoo/vespa/config/ConfigPayloadBuilder.java b/config/src/main/java/com/yahoo/vespa/config/ConfigPayloadBuilder.java
index 2e470ec55e4..e08a6757ab5 100644
--- a/config/src/main/java/com/yahoo/vespa/config/ConfigPayloadBuilder.java
+++ b/config/src/main/java/com/yahoo/vespa/config/ConfigPayloadBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.slime.*;
diff --git a/config/src/main/java/com/yahoo/vespa/config/ConfigTransformer.java b/config/src/main/java/com/yahoo/vespa/config/ConfigTransformer.java
index 6d2ae3ef13e..3d3a27da713 100644
--- a/config/src/main/java/com/yahoo/vespa/config/ConfigTransformer.java
+++ b/config/src/main/java/com/yahoo/vespa/config/ConfigTransformer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.config.ConfigInstance;
@@ -11,9 +11,12 @@ import static com.yahoo.vespa.config.ConfigPayloadApplier.IdentityPathAcquirer;
/**
* A utility class that can be used to transform config from one format to another.
*
- * @author Ulf Lilleengen, hmusum, Tony Vaagenes
+ * @author Ulf Lilleengen
+ * @author hmusum
+ * @author Tony Vaagenes
*/
public class ConfigTransformer<T extends ConfigInstance> {
+
/**
* Workaround since FileAcquirer is in a separate module that depends on config.
* Consider moving FileAcquirer into config instead.
@@ -52,7 +55,7 @@ public class ConfigTransformer<T extends ConfigInstance> {
/**
* Create a ConfigBuilder from a payload, based on the <code>clazz</code> supplied.
*
- * @param payload a Payload to be transformed to builder.
+ * @param payload a Payload to be transformed to builder
* @return a ConfigBuilder
*/
public ConfigInstance.Builder toConfigBuilder(ConfigPayload payload) {
@@ -80,4 +83,5 @@ public class ConfigTransformer<T extends ConfigInstance> {
return builder;
}
}
+
}
diff --git a/config/src/main/java/com/yahoo/vespa/config/Connection.java b/config/src/main/java/com/yahoo/vespa/config/Connection.java
index f10fbc487bd..ea6419c62e1 100644
--- a/config/src/main/java/com/yahoo/vespa/config/Connection.java
+++ b/config/src/main/java/com/yahoo/vespa/config/Connection.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.jrt.Request;
diff --git a/config/src/main/java/com/yahoo/vespa/config/ConnectionPool.java b/config/src/main/java/com/yahoo/vespa/config/ConnectionPool.java
index 93135fc4661..1ee44bfee87 100644
--- a/config/src/main/java/com/yahoo/vespa/config/ConnectionPool.java
+++ b/config/src/main/java/com/yahoo/vespa/config/ConnectionPool.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.jrt.Supervisor;
@@ -10,18 +10,11 @@ public interface ConnectionPool extends AutoCloseable {
void close();
- /**
- * Sets the supplied Connection to have an error, implementations are expected to call
- * {@link #switchConnection(Connection)} after setting state for the supplied Connection.
- *
- */
- void setError(Connection connection, int i);
-
Connection getCurrent();
/**
* Switches to another (healthy, if one exists) Connection instance.
- * Returns the resulting Connection. See also {@link #setError(Connection, int)}
+ * Returns the resulting Connection.
*
* @return a Connection
*/
diff --git a/config/src/main/java/com/yahoo/vespa/config/DefaultValueApplier.java b/config/src/main/java/com/yahoo/vespa/config/DefaultValueApplier.java
index 5bbc985cce0..c407d73de2e 100644
--- a/config/src/main/java/com/yahoo/vespa/config/DefaultValueApplier.java
+++ b/config/src/main/java/com/yahoo/vespa/config/DefaultValueApplier.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.config.codegen.CNode;
diff --git a/config/src/main/java/com/yahoo/vespa/config/ErrorCode.java b/config/src/main/java/com/yahoo/vespa/config/ErrorCode.java
index 5fb99295325..164fe36e2c6 100644
--- a/config/src/main/java/com/yahoo/vespa/config/ErrorCode.java
+++ b/config/src/main/java/com/yahoo/vespa/config/ErrorCode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
/**
@@ -11,6 +11,7 @@ public final class ErrorCode {
public static final int UNKNOWN_DEFINITION = UNKNOWN_CONFIG + 1;
public static final int UNKNOWN_DEF_MD5 = UNKNOWN_CONFIG + 4;
public static final int UNKNOWN_VESPA_VERSION = UNKNOWN_CONFIG + 5;
+ public static final int UNKNOWN_DEF_CHECKSUM = UNKNOWN_CONFIG + 6;
public static final int ILLEGAL_NAME = UNKNOWN_CONFIG + 100;
// Version is not a number
@@ -25,6 +26,8 @@ public final class ErrorCode {
public static final int ILLEGAL_NAME_SPACE = UNKNOWN_CONFIG + 108;
public static final int ILLEGAL_PROTOCOL_VERSION = UNKNOWN_CONFIG + 109;
public static final int ILLEGAL_CLIENT_HOSTNAME = UNKNOWN_CONFIG + 110;
+ public static final int ILLEGAL_DEF_CHECKSUM = UNKNOWN_CONFIG + 111;
+ public static final int ILLEGAL_CONFIG_CHECKSUM = UNKNOWN_CONFIG + 112;
// hasUpdatedConfig() is true, but generation says the config is older than previous config.
public static final int OUTDATED_CONFIG = UNKNOWN_CONFIG + 150;
diff --git a/config/src/main/java/com/yahoo/vespa/config/ErrorType.java b/config/src/main/java/com/yahoo/vespa/config/ErrorType.java
index 43aeb103207..24af997367e 100644
--- a/config/src/main/java/com/yahoo/vespa/config/ErrorType.java
+++ b/config/src/main/java/com/yahoo/vespa/config/ErrorType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
/**
diff --git a/config/src/main/java/com/yahoo/vespa/config/GenerationCounter.java b/config/src/main/java/com/yahoo/vespa/config/GenerationCounter.java
index 3da09d07016..494d6214457 100644
--- a/config/src/main/java/com/yahoo/vespa/config/GenerationCounter.java
+++ b/config/src/main/java/com/yahoo/vespa/config/GenerationCounter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
/**
diff --git a/config/src/main/java/com/yahoo/vespa/config/GenericConfig.java b/config/src/main/java/com/yahoo/vespa/config/GenericConfig.java
index 123d7c22093..afda6ef17a5 100644
--- a/config/src/main/java/com/yahoo/vespa/config/GenericConfig.java
+++ b/config/src/main/java/com/yahoo/vespa/config/GenericConfig.java
@@ -1,11 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.config.ConfigBuilder;
import com.yahoo.config.ConfigInstance;
/**
- *
* A generic config with an internal generic builder that mimics a real config builder in order to support builders
* when we don't have the schema.
*
diff --git a/config/src/main/java/com/yahoo/vespa/config/GetConfigRequest.java b/config/src/main/java/com/yahoo/vespa/config/GetConfigRequest.java
index c5eeab74157..35b503416ce 100644
--- a/config/src/main/java/com/yahoo/vespa/config/GetConfigRequest.java
+++ b/config/src/main/java/com/yahoo/vespa/config/GetConfigRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.vespa.config.protocol.DefContent;
@@ -37,4 +37,18 @@ public interface GetConfigRequest {
*/
boolean noCache();
+ /**
+ * Returns the md5 of the config definition in the request.
+ *
+ * @return an md5 of config definition in request.
+ */
+ String getRequestDefMd5();
+
+ /**
+ * Returns the payload checksums from the config request.
+ *
+ * @return the payload checksums from request.
+ */
+ PayloadChecksums configPayloadChecksums();
+
}
diff --git a/config/src/main/java/com/yahoo/vespa/config/JRTConnection.java b/config/src/main/java/com/yahoo/vespa/config/JRTConnection.java
index f6352204d4b..c1fc50f6a82 100644
--- a/config/src/main/java/com/yahoo/vespa/config/JRTConnection.java
+++ b/config/src/main/java/com/yahoo/vespa/config/JRTConnection.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.jrt.Request;
diff --git a/config/src/main/java/com/yahoo/vespa/config/JRTConnectionPool.java b/config/src/main/java/com/yahoo/vespa/config/JRTConnectionPool.java
index b5147075972..d7e21356ba2 100644
--- a/config/src/main/java/com/yahoo/vespa/config/JRTConnectionPool.java
+++ b/config/src/main/java/com/yahoo/vespa/config/JRTConnectionPool.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.config.subscription.ConfigSourceSet;
@@ -18,7 +18,6 @@ import java.util.logging.Logger;
* The current connection is chosen randomly when calling {#link {@link #switchConnection()}}
* (it will continue to use the same connection if there is only one source).
* The current connection is available with {@link #getCurrent()}.
- * When calling {@link #setError(Connection, int)}, {@link #switchConnection()} will always be called.
*
* @author Gunnar Gauslaa Bergem
* @author hmusum
@@ -38,19 +37,15 @@ public class JRTConnectionPool implements ConnectionPool {
private volatile JRTConnection currentConnection;
public JRTConnectionPool(ConfigSourceSet sourceSet) {
- this(sourceSet, "config-jrt-pool-" + sourceSet.hashCode());
+ this(sourceSet, new Supervisor(new Transport("config-pool-" + sourceSet.hashCode())).setDropEmptyBuffers(true));
}
- public JRTConnectionPool(ConfigSourceSet sourceSet, String poolName) {
- this.poolName = poolName;
- supervisor = new Supervisor(new Transport(poolName)).setDropEmptyBuffers(true);
+ public JRTConnectionPool(ConfigSourceSet sourceSet, Supervisor supervisor) {
+ this.supervisor = supervisor;
+ this.poolName = supervisor.transport().getName();
addSources(sourceSet);
}
- JRTConnectionPool(List<String> addresses) {
- this(new ConfigSourceSet(addresses));
- }
-
public void addSources(ConfigSourceSet sourceSet) {
this.sourceSet = sourceSet;
synchronized (connections) {
@@ -91,7 +86,7 @@ public class JRTConnectionPool implements ConnectionPool {
List<JRTConnection> sourceCandidates = getSources();
sourceCandidates.remove(currentConnection);
JRTConnection newConnection = pickNewConnectionRandomly(sourceCandidates);
- log.log(Level.INFO, () -> "Switching from " + currentConnection + " to " + newConnection);
+ log.log(Level.INFO, () -> poolName + ": Switching from " + currentConnection + " to " + newConnection);
return currentConnection = newConnection;
}
@@ -115,11 +110,6 @@ public class JRTConnectionPool implements ConnectionPool {
return sourceSet;
}
- @Override
- public void setError(Connection connection, int errorCode) {
- switchConnection(connection);
- }
-
public JRTConnectionPool updateSources(List<String> addresses) {
ConfigSourceSet newSources = new ConfigSourceSet(addresses);
return updateSources(newSources);
diff --git a/config/src/main/java/com/yahoo/vespa/config/JRTMethods.java b/config/src/main/java/com/yahoo/vespa/config/JRTMethods.java
index bc0c9cdec51..e53b7906ec1 100644
--- a/config/src/main/java/com/yahoo/vespa/config/JRTMethods.java
+++ b/config/src/main/java/com/yahoo/vespa/config/JRTMethods.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.jrt.Method;
diff --git a/config/src/main/java/com/yahoo/vespa/config/LZ4PayloadCompressor.java b/config/src/main/java/com/yahoo/vespa/config/LZ4PayloadCompressor.java
index 03e08e039ae..2a992721c86 100644
--- a/config/src/main/java/com/yahoo/vespa/config/LZ4PayloadCompressor.java
+++ b/config/src/main/java/com/yahoo/vespa/config/LZ4PayloadCompressor.java
@@ -1,9 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.compress.CompressionType;
import com.yahoo.compress.Compressor;
-import com.yahoo.vespa.config.util.ConfigUtils;
import java.nio.ByteBuffer;
@@ -14,18 +13,12 @@ import java.nio.ByteBuffer;
*/
public class LZ4PayloadCompressor {
- private static final String VESPA_CONFIG_PROTOCOL_COMPRESSION_LEVEL = "VESPA_CONFIG_PROTOCOL_COMPRESSION_LEVEL";
- private static final Compressor compressor = new Compressor(CompressionType.LZ4, getCompressionLevel());
-
- private static int getCompressionLevel() {
- return Integer.parseInt(ConfigUtils.getEnvValue("0",
- System.getenv(VESPA_CONFIG_PROTOCOL_COMPRESSION_LEVEL),
- System.getProperty(VESPA_CONFIG_PROTOCOL_COMPRESSION_LEVEL)));
- }
+ private static final Compressor compressor = new Compressor(CompressionType.LZ4, 0);
public byte[] compress(byte[] input) {
return compressor.compressUnconditionally(input);
}
+
public byte[] compress(ByteBuffer input) {
return compressor.compressUnconditionally(input);
}
@@ -33,6 +26,7 @@ public class LZ4PayloadCompressor {
public byte [] decompress(byte[] input, int uncompressedLen) {
return compressor.decompressUnconditionally(input, 0, uncompressedLen);
}
+
public byte [] decompress(ByteBuffer input, int uncompressedLen) {
ByteBuffer uncompressed = ByteBuffer.allocate(uncompressedLen);
compressor.decompressUnconditionally(input, uncompressed);
diff --git a/config/src/main/java/com/yahoo/vespa/config/PayloadChecksum.java b/config/src/main/java/com/yahoo/vespa/config/PayloadChecksum.java
new file mode 100644
index 00000000000..177fb57116c
--- /dev/null
+++ b/config/src/main/java/com/yahoo/vespa/config/PayloadChecksum.java
@@ -0,0 +1,91 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.config;
+
+import com.yahoo.text.AbstractUtf8Array;
+import com.yahoo.vespa.config.protocol.Payload;
+import com.yahoo.vespa.config.util.ConfigUtils;
+
+import java.util.Objects;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static com.yahoo.vespa.config.PayloadChecksum.Type.MD5;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.XXHASH64;
+
+/**
+ * Checksums of config definition payload or config payload,
+ * md5 and xxhash64 are the supported types at the moment.
+ *
+ * @author hmusum
+ */
+public class PayloadChecksum {
+
+ private static final Pattern hexChecksumPattern = Pattern.compile("[0-9a-fA-F]+");
+
+ private final String checksum;
+ private final Type type;
+
+ public PayloadChecksum(String checksum, Type type) {
+ this.checksum = checksum;
+ this.type = type;
+ }
+
+ public static PayloadChecksum empty(Type type) {
+ return new PayloadChecksum("", type);
+ }
+
+ public static PayloadChecksum fromPayload(Payload payload, Type type) {
+ switch (type) {
+ case MD5: return fromMd5Data(payload.getData());
+ case XXHASH64: return fromXxhash64Data(payload.getData());
+ default: throw new IllegalArgumentException("Unknown type " + type);
+ }
+ }
+
+ private static PayloadChecksum fromMd5Data(AbstractUtf8Array data) {
+ return new PayloadChecksum(ConfigUtils.getMd5(data), MD5);
+ }
+
+ private static PayloadChecksum fromXxhash64Data(AbstractUtf8Array data) {
+ return new PayloadChecksum(ConfigUtils.getXxhash64(data), XXHASH64);
+ }
+
+ public boolean isEmpty() {
+ switch (type) {
+ case MD5: return this.equals(empty(MD5));
+ case XXHASH64: return this.equals(empty(XXHASH64));
+ default: throw new IllegalArgumentException("Unknown type " + type);
+ }
+ }
+
+ public String asString() { return checksum; }
+
+ public Type type() { return type; }
+
+ public enum Type {MD5, XXHASH64}
+
+ public boolean valid() {
+ if (checksum.equals("")) return true; // Empty checksum is ok (e.g. when running 'vespa-get-config')
+
+ Matcher m = hexChecksumPattern.matcher(checksum);
+ return m.matches();
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(checksum, type);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ PayloadChecksum that = (PayloadChecksum) o;
+ return Objects.equals(checksum, that.checksum) && type == that.type;
+ }
+
+ @Override
+ public String toString() {
+ return type.name() + ":" + checksum;
+ }
+}
diff --git a/config/src/main/java/com/yahoo/vespa/config/PayloadChecksums.java b/config/src/main/java/com/yahoo/vespa/config/PayloadChecksums.java
new file mode 100644
index 00000000000..be935043dc0
--- /dev/null
+++ b/config/src/main/java/com/yahoo/vespa/config/PayloadChecksums.java
@@ -0,0 +1,93 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.config;
+
+import com.yahoo.vespa.config.protocol.Payload;
+import com.yahoo.vespa.config.util.ConfigUtils;
+
+import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import static com.yahoo.vespa.config.PayloadChecksum.Type.MD5;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.XXHASH64;
+
+/**
+ * Checksums for config payload, typically 1 for each PayloadChecksum type (md5 and xxhash64).
+ * Initialized with empty checksum for each existing type.
+ *
+ * @author hmusum
+ */
+public class PayloadChecksums {
+
+ private final Map<PayloadChecksum.Type, PayloadChecksum> checksums = new LinkedHashMap<>();
+
+ private PayloadChecksums() {
+ this(false);
+ }
+
+ private PayloadChecksums(boolean addEmptyChecksumForAllTypes) {
+ if (addEmptyChecksumForAllTypes)
+ Arrays.stream(PayloadChecksum.Type.values())
+ .forEach(type -> checksums.put(type, PayloadChecksum.empty(type)));
+ }
+
+ public static PayloadChecksums empty() { return new PayloadChecksums(true); }
+
+ public static PayloadChecksums from(PayloadChecksum... checksums) {
+ PayloadChecksums payloadChecksums = new PayloadChecksums();
+ Arrays.stream(checksums).filter(Objects::nonNull).forEach(payloadChecksums::add);
+ return payloadChecksums;
+ }
+
+ public static PayloadChecksums from(String configMd5, String configXxhash64) {
+ return new PayloadChecksums()
+ .add(new PayloadChecksum(configMd5, MD5))
+ .add(new PayloadChecksum(configXxhash64, XXHASH64));
+ }
+
+ public static PayloadChecksums fromPayload(Payload payload) {
+ return new PayloadChecksums()
+ .add(new PayloadChecksum(ConfigUtils.getMd5(payload.getData()), MD5))
+ .add(new PayloadChecksum(ConfigUtils.getXxhash64(payload.getData()), XXHASH64));
+ }
+
+ private PayloadChecksums add(PayloadChecksum checksum) {
+ checksums.put(checksum.type(), checksum);
+ return this;
+ }
+
+ public void removeChecksumsOfType(PayloadChecksum.Type type) { checksums.remove(type); }
+
+ public PayloadChecksum getForType(PayloadChecksum.Type type) {
+ return checksums.get(type);
+ }
+
+ public boolean valid() {
+ return checksums.values().stream().allMatch(PayloadChecksum::valid);
+ }
+
+ public boolean isEmpty() { return this.equals(empty()); }
+
+ @Override
+ public String toString() {
+ return checksums.values().stream()
+ .map(checksum -> checksum.type().name() + ":" + checksum.asString())
+ .collect(Collectors.joining(","));
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ PayloadChecksums that = (PayloadChecksums) o;
+ return Objects.equals(checksums, that.checksums);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(checksums);
+ }
+
+}
diff --git a/config/src/main/java/com/yahoo/vespa/config/RawConfig.java b/config/src/main/java/com/yahoo/vespa/config/RawConfig.java
index 1c28d4c5e05..71abaa9dc48 100755
--- a/config/src/main/java/com/yahoo/vespa/config/RawConfig.java
+++ b/config/src/main/java/com/yahoo/vespa/config/RawConfig.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.config.ConfigInstance;
@@ -28,7 +28,7 @@ public class RawConfig extends ConfigInstance {
private final List<String> defContent;
private final Payload payload;
private final int errorCode;
- private final String configMd5;
+ private final PayloadChecksums payloadChecksums;
private final Optional<VespaVersion> vespaVersion;
private long generation;
private boolean applyOnRestart;
@@ -40,29 +40,28 @@ public class RawConfig extends ConfigInstance {
* @param defMd5 The md5 sum of the .def-file.
*/
public RawConfig(ConfigKey<?> key, String defMd5) {
- this(key, defMd5, null, "", 0L, false, 0, Collections.emptyList(), Optional.empty());
+ this(key, defMd5, null, PayloadChecksums.empty(), 0L, false, 0, Collections.emptyList(), Optional.empty());
}
- public RawConfig(ConfigKey<?> key, String defMd5, Payload payload, String configMd5, long generation,
- boolean applyOnRestart, List<String> defContent,
- Optional<VespaVersion> vespaVersion) {
- this(key, defMd5, payload, configMd5, generation, applyOnRestart, 0, defContent, vespaVersion);
+ public RawConfig(ConfigKey<?> key, String defMd5, Payload payload, PayloadChecksums payloadChecksums, long generation,
+ boolean applyOnRestart, List<String> defContent, Optional<VespaVersion> vespaVersion) {
+ this(key, defMd5, payload, payloadChecksums, generation, applyOnRestart, 0, defContent, vespaVersion);
}
/** Copy constructor */
public RawConfig(RawConfig rawConfig) {
- this(rawConfig.key, rawConfig.defMd5, rawConfig.payload, rawConfig.configMd5,
+ this(rawConfig.key, rawConfig.defMd5, rawConfig.payload, rawConfig.payloadChecksums,
rawConfig.generation, rawConfig.applyOnRestart,
rawConfig.errorCode, rawConfig.defContent, rawConfig.getVespaVersion());
}
- public RawConfig(ConfigKey<?> key, String defMd5, Payload payload, String configMd5, long generation,
+ public RawConfig(ConfigKey<?> key, String defMd5, Payload payload, PayloadChecksums payloadChecksums, long generation,
boolean applyOnRestart, int errorCode, List<String> defContent,
Optional<VespaVersion> vespaVersion) {
this.key = key;
this.defMd5 = ConfigUtils.getDefMd5FromRequest(defMd5, defContent);
this.payload = payload;
- this.configMd5 = configMd5;
+ this.payloadChecksums = payloadChecksums;
this.generation = generation;
this.applyOnRestart = applyOnRestart;
this.errorCode = errorCode;
@@ -77,9 +76,9 @@ public class RawConfig extends ConfigInstance {
*/
public static RawConfig createFromResponseParameters(JRTClientConfigRequest req) {
return new RawConfig(req.getConfigKey(),
- req.getConfigKey().getMd5(),
+ ConfigUtils.getDefMd5(req.getDefContent().asList()),
req.getNewPayload(),
- req.getNewConfigMd5(),
+ req.getNewChecksums(),
req.getNewGeneration(),
req.responseIsApplyOnRestart(),
0,
@@ -94,9 +93,9 @@ public class RawConfig extends ConfigInstance {
*/
public static RawConfig createFromServerRequest(JRTServerConfigRequest req) {
return new RawConfig(req.getConfigKey(),
- req.getConfigKey().getMd5() ,
+ ConfigUtils.getDefMd5(req.getDefContent().asList()),
Payload.from(new Utf8String(""), CompressionInfo.uncompressed()),
- req.getRequestConfigMd5(),
+ req.getRequestConfigChecksums(),
req.getRequestGeneration(),
req.applyOnRestart(),
0,
@@ -104,7 +103,6 @@ public class RawConfig extends ConfigInstance {
req.getVespaVersion());
}
-
public ConfigKey<?> getKey() { return key; }
public String getName() { return key.getName(); }
@@ -113,8 +111,6 @@ public class RawConfig extends ConfigInstance {
public String getConfigId() { return key.getConfigId(); }
- public String getConfigMd5() { return configMd5; }
-
public String getDefMd5() { return defMd5; }
public long getGeneration() { return generation; }
@@ -133,6 +129,8 @@ public class RawConfig extends ConfigInstance {
public Optional<VespaVersion> getVespaVersion() { return vespaVersion; }
+ public PayloadChecksums getPayloadChecksums() { return payloadChecksums; }
+
/**
* Returns true if this config is equal to the config (same payload md5) in the given request.
*
@@ -140,7 +138,15 @@ public class RawConfig extends ConfigInstance {
* @return true if this config is equal to the config in the given request.
*/
public boolean hasEqualConfig(JRTServerConfigRequest req) {
- return (getConfigMd5().equals(req.getRequestConfigMd5()));
+ PayloadChecksums payloadChecksums = getPayloadChecksums();
+ PayloadChecksum xxhash64 = payloadChecksums.getForType(PayloadChecksum.Type.XXHASH64);
+ PayloadChecksum md5 = payloadChecksums.getForType(PayloadChecksum.Type.MD5);
+ if (xxhash64 != null)
+ return xxhash64.equals(req.getRequestConfigChecksums().getForType(PayloadChecksum.Type.XXHASH64));
+ if (md5 != null)
+ return md5.equals(req.getRequestConfigChecksums().getForType(PayloadChecksum.Type.MD5));
+
+ return true;
}
/**
@@ -174,11 +180,7 @@ public class RawConfig extends ConfigInstance {
// while non-zero and equal error codes means configs are equal.
if (isError()) return true;
if (generation != other.generation) return false;
- if (configMd5 != null) {
- return configMd5.equals(other.configMd5);
- } else {
- return (other.configMd5 == null);
- }
+ return (payloadChecksums.equals(((RawConfig) o).payloadChecksums));
}
@Override
@@ -194,9 +196,7 @@ public class RawConfig extends ConfigInstance {
if (! isError()) {
// configMd5 and generation only matter when the RawConfig is not an error.
hash = 31 * hash + (int)(generation ^(generation >>>32));
- if (configMd5 != null) {
- hash = 31 * hash + configMd5.hashCode();
- }
+ hash = 31 * hash + payloadChecksums.hashCode();
}
return hash;
}
@@ -210,7 +210,7 @@ public class RawConfig extends ConfigInstance {
sb.append(",");
sb.append(key.getConfigId());
sb.append(",");
- sb.append(getConfigMd5());
+ sb.append(payloadChecksums);
sb.append(",");
sb.append(getGeneration());
sb.append(",");
diff --git a/config/src/main/java/com/yahoo/vespa/config/TimingValues.java b/config/src/main/java/com/yahoo/vespa/config/TimingValues.java
index 235928a7d0b..56f85845aa0 100644
--- a/config/src/main/java/com/yahoo/vespa/config/TimingValues.java
+++ b/config/src/main/java/com/yahoo/vespa/config/TimingValues.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import java.util.Random;
@@ -19,8 +19,6 @@ public class TimingValues {
private long configuredErrorTimeout = -1; // Don't ever timeout (and do not use error response) when we are already configured
private long fixedDelay = 5000;
- private long unconfiguredDelay = 1000;
- private long configuredErrorDelay = 15000;
private final Random rand;
public TimingValues() {
@@ -35,15 +33,11 @@ public class TimingValues {
long errorTimeout,
long initialTimeout,
long subscribeTimeout,
- long unconfiguredDelay,
- long configuredErrorDelay,
long fixedDelay) {
this.successTimeout = successTimeout;
this.errorTimeout = errorTimeout;
this.initialTimeout = initialTimeout;
this.subscribeTimeout = subscribeTimeout;
- this.unconfiguredDelay = unconfiguredDelay;
- this.configuredErrorDelay = configuredErrorDelay;
this.fixedDelay = fixedDelay;
this.rand = new Random(System.currentTimeMillis());
}
@@ -52,16 +46,12 @@ public class TimingValues {
long errorTimeout,
long initialTimeout,
long subscribeTimeout,
- long unconfiguredDelay,
- long configuredErrorDelay,
long fixedDelay,
Random rand) {
this.successTimeout = successTimeout;
this.errorTimeout = errorTimeout;
this.initialTimeout = initialTimeout;
this.subscribeTimeout = subscribeTimeout;
- this.unconfiguredDelay = unconfiguredDelay;
- this.configuredErrorDelay = configuredErrorDelay;
this.fixedDelay = fixedDelay;
this.rand = rand;
}
@@ -71,8 +61,6 @@ public class TimingValues {
tv.errorTimeout,
tv.initialTimeout,
tv.subscribeTimeout,
- tv.unconfiguredDelay,
- tv.configuredErrorDelay,
tv.fixedDelay,
random);
}
@@ -115,39 +103,6 @@ public class TimingValues {
}
/**
- * Returns time to wait until next attempt to get config after a failed request when the client has not
- * gotten a successful response to a config subscription (i.e, the client has not been configured).
- * A negative value means that there will never be a next attempt. If a negative value is set, the
- * user must also setSubscribeTimeout(0) to prevent a deadlock while subscribing.
- *
- * @return delay in milliseconds, a negative value means never.
- */
- public long getUnconfiguredDelay() {
- return unconfiguredDelay;
- }
-
- public TimingValues setUnconfiguredDelay(long d) {
- unconfiguredDelay = d;
- return this;
- }
-
- /**
- * Returns time to wait until next attempt to get config after a failed request when the client has
- * previously gotten a successful response to a config subscription (i.e, the client is configured).
- * A negative value means that there will never be a next attempt.
- *
- * @return delay in milliseconds, a negative value means never.
- */
- public long getConfiguredErrorDelay() {
- return configuredErrorDelay;
- }
-
- public TimingValues setConfiguredErrorDelay(long d) {
- configuredErrorDelay = d;
- return this;
- }
-
- /**
* Returns fixed delay that is used when retrying getting config no matter if it was a success or an error
* and independent of number of retries.
*
@@ -157,6 +112,11 @@ public class TimingValues {
return fixedDelay;
}
+ public TimingValues setFixedDelay(long t) {
+ fixedDelay = t;
+ return this;
+ }
+
/**
* Returns a number +/- a random component
*
@@ -168,16 +128,6 @@ public class TimingValues {
return Math.round(value - (value * fraction) + (rand.nextFloat() * 2L * value * fraction));
}
- /**
- * Returns a number between 0 and maxValue
- *
- * @param maxValue max maxValue
- * @return a number
- */
- public long getRandomTransientDelay(long maxValue) {
- return Math.round(rand.nextFloat() * maxValue);
- }
-
@Override
public String toString() {
return "TimingValues [successTimeout=" + successTimeout
@@ -186,8 +136,6 @@ public class TimingValues {
+ ", subscribeTimeout=" + subscribeTimeout
+ ", configuredErrorTimeout=" + configuredErrorTimeout
+ ", fixedDelay=" + fixedDelay
- + ", unconfiguredDelay=" + unconfiguredDelay
- + ", configuredErrorDelay=" + configuredErrorDelay
+ ", rand=" + rand + "]";
}
diff --git a/config/src/main/java/com/yahoo/vespa/config/UnknownConfigIdException.java b/config/src/main/java/com/yahoo/vespa/config/UnknownConfigIdException.java
index dfffefe0ded..1568270b689 100644
--- a/config/src/main/java/com/yahoo/vespa/config/UnknownConfigIdException.java
+++ b/config/src/main/java/com/yahoo/vespa/config/UnknownConfigIdException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
/**
diff --git a/config/src/main/java/com/yahoo/vespa/config/UrlDownloader.java b/config/src/main/java/com/yahoo/vespa/config/UrlDownloader.java
index 5cc03c7deea..b3a4590fdb2 100644
--- a/config/src/main/java/com/yahoo/vespa/config/UrlDownloader.java
+++ b/config/src/main/java/com/yahoo/vespa/config/UrlDownloader.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.config.UrlReference;
diff --git a/config/src/main/java/com/yahoo/vespa/config/benchmark/LoadTester.java b/config/src/main/java/com/yahoo/vespa/config/benchmark/LoadTester.java
index 26c5889c579..345118b5fd4 100644
--- a/config/src/main/java/com/yahoo/vespa/config/benchmark/LoadTester.java
+++ b/config/src/main/java/com/yahoo/vespa/config/benchmark/LoadTester.java
@@ -1,7 +1,8 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.benchmark;
import com.yahoo.collections.Tuple2;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.io.IOUtils;
import com.yahoo.jrt.Spec;
import com.yahoo.jrt.Supervisor;
@@ -252,11 +253,11 @@ public class LoadTester {
private JRTClientConfigRequest createRequest(ConfigKey<?> reqKey) {
ConfigDefinitionKey dKey = new ConfigDefinitionKey(reqKey);
Tuple2<String, String[]> defContent = defs.get(dKey);
- ConfigKey<?> fullKey = createFull(reqKey.getName(), reqKey.getConfigId(), reqKey.getNamespace(), defContent.first);
+ ConfigKey<?> fullKey = createFull(reqKey.getName(), reqKey.getConfigId(), reqKey.getNamespace());
final long serverTimeout = 1000;
return JRTClientConfigRequestV3.createWithParams(fullKey, DefContent.fromList(List.of(defContent.second)),
- ConfigUtils.getCanonicalHostName(), "",
+ ConfigUtils.getCanonicalHostName(), PayloadChecksums.empty(),
0, serverTimeout, Trace.createDummy(),
compressionType, Optional.empty());
}
diff --git a/config/src/main/java/com/yahoo/vespa/config/benchmark/StressTester.java b/config/src/main/java/com/yahoo/vespa/config/benchmark/StressTester.java
index 6964e35abf6..e53f6f56ba0 100644
--- a/config/src/main/java/com/yahoo/vespa/config/benchmark/StressTester.java
+++ b/config/src/main/java/com/yahoo/vespa/config/benchmark/StressTester.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.benchmark;
import com.yahoo.jrt.*;
diff --git a/config/src/main/java/com/yahoo/vespa/config/benchmark/Tester.java b/config/src/main/java/com/yahoo/vespa/config/benchmark/Tester.java
index 1b73bde556b..8c1f42be1f7 100644
--- a/config/src/main/java/com/yahoo/vespa/config/benchmark/Tester.java
+++ b/config/src/main/java/com/yahoo/vespa/config/benchmark/Tester.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.benchmark;
import java.util.Map;
diff --git a/config/src/main/java/com/yahoo/vespa/config/buildergen/ConfigDefinition.java b/config/src/main/java/com/yahoo/vespa/config/buildergen/ConfigDefinition.java
index 3fe42ce90ad..ea258dc0900 100644
--- a/config/src/main/java/com/yahoo/vespa/config/buildergen/ConfigDefinition.java
+++ b/config/src/main/java/com/yahoo/vespa/config/buildergen/ConfigDefinition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.buildergen;
import com.yahoo.config.codegen.DefParser;
diff --git a/config/src/main/java/com/yahoo/vespa/config/buildergen/package-info.java b/config/src/main/java/com/yahoo/vespa/config/buildergen/package-info.java
index ffca63df75b..76d6e33d739 100644
--- a/config/src/main/java/com/yahoo/vespa/config/buildergen/package-info.java
+++ b/config/src/main/java/com/yahoo/vespa/config/buildergen/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.config.buildergen;
diff --git a/config/src/main/java/com/yahoo/vespa/config/package-info.java b/config/src/main/java/com/yahoo/vespa/config/package-info.java
index 14b6892ca94..b07b79b36e3 100644
--- a/config/src/main/java/com/yahoo/vespa/config/package-info.java
+++ b/config/src/main/java/com/yahoo/vespa/config/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.config;
diff --git a/config/src/main/java/com/yahoo/vespa/config/parser/package-info.java b/config/src/main/java/com/yahoo/vespa/config/parser/package-info.java
index 4dc98d83a51..15a400f8527 100644
--- a/config/src/main/java/com/yahoo/vespa/config/parser/package-info.java
+++ b/config/src/main/java/com/yahoo/vespa/config/parser/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.config.parser;
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/CompressionInfo.java b/config/src/main/java/com/yahoo/vespa/config/protocol/CompressionInfo.java
index bc6f97a3e00..9ff29eb7509 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/CompressionInfo.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/CompressionInfo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
import com.fasterxml.jackson.core.JsonGenerator;
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/CompressionType.java b/config/src/main/java/com/yahoo/vespa/config/protocol/CompressionType.java
index 5fbd61cde3d..47c008527cd 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/CompressionType.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/CompressionType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
/**
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/ConfigResponse.java b/config/src/main/java/com/yahoo/vespa/config/protocol/ConfigResponse.java
index f6fce56c227..47d3203b32e 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/ConfigResponse.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/ConfigResponse.java
@@ -1,6 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
+import com.yahoo.vespa.config.PayloadChecksum;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.text.AbstractUtf8Array;
import java.io.IOException;
@@ -27,7 +29,15 @@ public interface ConfigResponse {
void serialize(OutputStream os, CompressionType uncompressed) throws IOException;
default boolean hasEqualConfig(JRTServerConfigRequest request) {
- return (getConfigMd5().equals(request.getRequestConfigMd5()));
+ PayloadChecksums payloadChecksums = getPayloadChecksums();
+ PayloadChecksum xxhash64 = payloadChecksums.getForType(PayloadChecksum.Type.XXHASH64);
+ PayloadChecksum md5 = payloadChecksums.getForType(PayloadChecksum.Type.MD5);
+ if (xxhash64 != null)
+ return xxhash64.equals(request.getRequestConfigChecksums().getForType(PayloadChecksum.Type.XXHASH64));
+ if (md5 != null)
+ return md5.equals(request.getRequestConfigChecksums().getForType(PayloadChecksum.Type.MD5));
+
+ return true;
}
default boolean hasNewerGeneration(JRTServerConfigRequest request) {
@@ -36,4 +46,6 @@ public interface ConfigResponse {
CompressionInfo getCompressionInfo();
+ PayloadChecksums getPayloadChecksums();
+
}
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/DefContent.java b/config/src/main/java/com/yahoo/vespa/config/protocol/DefContent.java
index 3aa1898fcd1..00e5bfa24d3 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/DefContent.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/DefContent.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
import com.yahoo.config.ConfigInstance;
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/JRTClientConfigRequest.java b/config/src/main/java/com/yahoo/vespa/config/protocol/JRTClientConfigRequest.java
index 8535cc23225..f47192c916c 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/JRTClientConfigRequest.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/JRTClientConfigRequest.java
@@ -1,6 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
+import com.yahoo.vespa.config.PayloadChecksums;
+
/**
* Interface for config requests used by clients.
*
@@ -57,11 +59,11 @@ public interface JRTClientConfigRequest extends JRTConfigRequest {
boolean responseIsApplyOnRestart();
/**
- * Get the config md5 of the config returned by the server. Return an empty string if no response has been returned.
+ * Gets the config checksums of the config returned by the server. Returns an empty string if no response has been returned.
*
- * @return a config md5.
+ * @return a config checksum.
*/
- String getNewConfigMd5();
+ PayloadChecksums getNewChecksums();
/**
* Test whether or not the response contains an updated config or not.
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/JRTClientConfigRequestV3.java b/config/src/main/java/com/yahoo/vespa/config/protocol/JRTClientConfigRequestV3.java
index 87e63399fc3..68a9601cb02 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/JRTClientConfigRequestV3.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/JRTClientConfigRequestV3.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
import com.yahoo.config.ConfigInstance;
@@ -12,14 +12,20 @@ import com.yahoo.text.Utf8;
import com.yahoo.text.Utf8Array;
import com.yahoo.vespa.config.ConfigKey;
import com.yahoo.vespa.config.JRTMethods;
+import com.yahoo.vespa.config.PayloadChecksum;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.vespa.config.RawConfig;
import com.yahoo.vespa.config.util.ConfigUtils;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Optional;
+import java.util.logging.Level;
import java.util.logging.Logger;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.MD5;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.XXHASH64;
+
/**
* Represents version 3 config request for config clients. Provides methods for inspecting request and response
* values.
@@ -38,7 +44,7 @@ public class JRTClientConfigRequestV3 implements JRTClientConfigRequest {
protected JRTClientConfigRequestV3(ConfigKey<?> key,
String hostname,
DefContent defSchema,
- String configMd5,
+ PayloadChecksums payloadChecksums,
long generation,
long timeout,
Trace trace,
@@ -47,7 +53,7 @@ public class JRTClientConfigRequestV3 implements JRTClientConfigRequest {
Slime data = SlimeRequestData.encodeRequest(key,
hostname,
defSchema,
- configMd5,
+ payloadChecksums,
generation,
timeout,
trace,
@@ -97,7 +103,7 @@ public class JRTClientConfigRequestV3 implements JRTClientConfigRequest {
return new JRTClientConfigRequestV3(getConfigKey(),
getClientHostName(),
getDefContent(),
- isError() ? getRequestConfigMd5() : newConfMd5(),
+ isError() ? getRequestConfigChecksums() : newConfigChecksums(),
isError() ? getRequestGeneration() : newGen(),
timeout,
Trace.createNew(),
@@ -110,11 +116,10 @@ public class JRTClientConfigRequestV3 implements JRTClientConfigRequest {
CompressionType compressionType,
Optional<VespaVersion> vespaVersion) {
ConfigSubscription.ConfigState<T> configState = sub.getConfigState();
- T config = configState.getConfig();
return createWithParams(sub.getKey(),
sub.getDefContent(),
ConfigUtils.getCanonicalHostName(),
- config != null ? config.getConfigMd5() : "",
+ configState.getChecksums(),
configState.getGeneration(),
sub.timingValues().getSubscribeTimeout(),
trace,
@@ -129,34 +134,34 @@ public class JRTClientConfigRequestV3 implements JRTClientConfigRequest {
Optional<VespaVersion> vespaVersion) {
String hostname = ConfigUtils.getCanonicalHostName();
return createWithParams(config.getKey(),
- DefContent.fromList(config.getDefContent()),
- hostname,
- config.getConfigMd5(),
- config.getGeneration(),
- serverTimeout,
- trace,
- compressionType,
- vespaVersion);
+ DefContent.fromList(config.getDefContent()),
+ hostname,
+ config.getPayloadChecksums(),
+ config.getGeneration(),
+ serverTimeout,
+ trace,
+ compressionType,
+ vespaVersion);
}
public static JRTClientConfigRequest createWithParams(ConfigKey<?> reqKey,
DefContent defContent,
String hostname,
- String configMd5,
+ PayloadChecksums payloadChecksums,
long generation,
long serverTimeout,
Trace trace,
CompressionType compressionType,
Optional<VespaVersion> vespaVersion) {
return new JRTClientConfigRequestV3(reqKey,
- hostname,
- defContent,
- configMd5,
- generation,
- serverTimeout,
- trace,
- compressionType,
- vespaVersion);
+ hostname,
+ defContent,
+ payloadChecksums,
+ generation,
+ serverTimeout,
+ trace,
+ compressionType,
+ vespaVersion);
}
@Override
@@ -173,12 +178,12 @@ public class JRTClientConfigRequestV3 implements JRTClientConfigRequest {
StringBuilder sb = new StringBuilder();
sb.append("request='").append(getConfigKey())
.append(",").append(getClientHostName())
- .append(",").append(getRequestConfigMd5())
+ .append(",").append(getRequestConfigChecksums())
.append(",").append(getRequestGeneration())
.append(",").append(getTimeout())
.append(",").append(getVespaVersion().map(VespaVersion::toString).orElse(""))
.append("'\n");
- sb.append("response='").append(getNewConfigMd5())
+ sb.append("response='").append(getNewChecksums())
.append(",").append(getNewGeneration())
.append(",").append(responseIsApplyOnRestart())
.append("'\n");
@@ -222,10 +227,10 @@ public class JRTClientConfigRequestV3 implements JRTClientConfigRequest {
return requestData.getTimeout();
}
- protected String newConfMd5() {
- String newMd5 = getNewConfigMd5();
- if ("".equals(newMd5)) return getRequestConfigMd5();
- return newMd5;
+ protected PayloadChecksums newConfigChecksums() {
+ PayloadChecksums newChecksum = getNewChecksums();
+ if (PayloadChecksums.empty().equals(newChecksum)) return getRequestConfigChecksums();
+ return newChecksum;
}
protected long newGen() {
@@ -246,8 +251,20 @@ public class JRTClientConfigRequestV3 implements JRTClientConfigRequest {
@Override
public boolean hasUpdatedConfig() {
- String respMd5 = getNewConfigMd5();
- return !respMd5.equals("") && !getRequestConfigMd5().equals(respMd5);
+ PayloadChecksums requestConfigChecksums = getRequestConfigChecksums();
+ log.log(Level.FINE, () -> "request checksums for " + getConfigKey() + ":" + requestConfigChecksums);
+
+ PayloadChecksums newChecksums = getNewChecksums();
+ log.log(Level.FINE, () -> "new checksums for " + getConfigKey() + ": " + newChecksums);
+ if (newChecksums.isEmpty()) return false;
+
+ PayloadChecksum respMd5 = newChecksums.getForType(MD5);
+ boolean updated = respMd5 != null && ! requestConfigChecksums.getForType(MD5).equals(respMd5);
+
+ if (updated) return true;
+
+ PayloadChecksum respXxhash64 = newChecksums.getForType(XXHASH64);
+ return respXxhash64 != null && ! requestConfigChecksums.getForType(XXHASH64).equals(respXxhash64);
}
@Override
@@ -261,6 +278,15 @@ public class JRTClientConfigRequestV3 implements JRTClientConfigRequest {
}
@Override
+ public String getRequestDefMd5() {
+ return requestData.getRequestDefMd5();
+ }
+
+ public PayloadChecksums getRequestConfigChecksums() {
+ return requestData.getRequestConfigChecksums();
+ }
+
+ @Override
public boolean validateResponse() {
if (request.isError()) {
return false;
@@ -280,8 +306,8 @@ public class JRTClientConfigRequestV3 implements JRTClientConfigRequest {
}
@Override
- public String getNewConfigMd5() {
- return responseData.getResponseConfigMd5();
+ public PayloadChecksums getNewChecksums() {
+ return responseData.getResponseConfigChecksums();
}
@Override
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/JRTConfigRequest.java b/config/src/main/java/com/yahoo/vespa/config/protocol/JRTConfigRequest.java
index 0e88eeb4e98..0fc751dc49f 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/JRTConfigRequest.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/JRTConfigRequest.java
@@ -1,6 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.jrt.Request;
import com.yahoo.vespa.config.ConfigKey;
@@ -14,14 +15,14 @@ import java.util.Optional;
public interface JRTConfigRequest {
/**
- * Get the config key of the config request.
+ * Returns the config key of the config request.
*
* @return a {@link ConfigKey}.
*/
ConfigKey<?> getConfigKey();
/**
- * Perform request parameter validation of this config request. This method should be called before fetching
+ * Performs request parameter validation of this config request. This method should be called before fetching
* any kind of config protocol-specific parameter.
*
* @return true if valid, false if not.
@@ -29,21 +30,36 @@ public interface JRTConfigRequest {
boolean validateParameters();
/**
- * Get the config md5 of the config request. Return an empty string if no response has been returned.
+ * Returns the config md5 of the config request. Return an empty string if no response has been returned.
*
* @return a config md5.
*/
String getRequestConfigMd5();
/**
- * Get the generation of the requested config. If none has been given, 0 should be returned.
+ * Returns the md5 of the config definition in the request.
+ *
+ * @return an md5 of config definition in request.
+ */
+ String getRequestDefMd5();
+
+ /**
+ * Returns the generation of the requested config. If none has been given, 0 should be returned.
+ * Returns the checksum of the config request. Return an empty string if no response has been returned.
+ *
+ * @return a config checksum.
+ */
+ PayloadChecksums getRequestConfigChecksums();
+
+ /**
+ * Returns the generation of the requested config. If none has been given, 0 should be returned.
*
* @return the generation in the request.
*/
long getRequestGeneration();
/**
- * Get the JRT request object for this config request.
+ * Returns the JRT request object for this config request.
* TODO: This method leaks the internal jrt stuff :(
*
* @return a {@link Request} object.
@@ -51,14 +67,14 @@ public interface JRTConfigRequest {
Request getRequest();
/**
- * Get a short hand description of this request.
+ * Returns a short hand description of this request.
*
* @return a short description
*/
String getShortDescription();
/**
- * Get the error code of this request
+ * Returns the error code of this request
*
* @return the error code as defined in {@link com.yahoo.vespa.config.ErrorCode}.
*/
@@ -72,27 +88,27 @@ public interface JRTConfigRequest {
String errorMessage();
/**
- * Get the server timeout of this request.
+ * Returns the server timeout of this request.
*
* @return the timeout given to the server
*/
long getTimeout();
/**
- * Get the config protocol version
+ * Returns the config protocol version
*
* @return a protocol version number.
*/
long getProtocolVersion();
/**
- * Get the host name of the client that is requesting config.
+ * Returns the host name of the client that is requesting config.
* @return hostname of the client.
*/
String getClientHostName();
/**
- * Get the Vespa version of the client that initiated the request
+ * Returns the Vespa version of the client that initiated the request
*
* @return Vespa version of the client
*/
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/JRTConfigRequestFactory.java b/config/src/main/java/com/yahoo/vespa/config/protocol/JRTConfigRequestFactory.java
index 953be93b67b..c2b5dd2e32a 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/JRTConfigRequestFactory.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/JRTConfigRequestFactory.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
import com.yahoo.config.ConfigInstance;
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/JRTServerConfigRequest.java b/config/src/main/java/com/yahoo/vespa/config/protocol/JRTServerConfigRequest.java
index c085be5924c..e52a159cf15 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/JRTServerConfigRequest.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/JRTServerConfigRequest.java
@@ -1,6 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.vespa.config.GetConfigRequest;
/**
@@ -34,9 +35,9 @@ public interface JRTServerConfigRequest extends JRTConfigRequest, GetConfigReque
* @param generation The config generation of the given payload.
* @param applyOnRestart true if this config should only be applied on the next restart,
* false if it should be applied right away
- * @param configMd5 The md5sum of the given payload.
+ * @param payloadChecksums checksums of the given payload.
*/
- void addOkResponse(Payload payload, long generation, boolean applyOnRestart, String configMd5);
+ void addOkResponse(Payload payload, long generation, boolean applyOnRestart, PayloadChecksums payloadChecksums);
/**
* Get the current config md5 of the client config.
@@ -46,6 +47,13 @@ public interface JRTServerConfigRequest extends JRTConfigRequest, GetConfigReque
String getRequestConfigMd5();
/**
+ * Returns the md5 of the config definition in the request.
+ *
+ * @return an md5 of config definition in request.
+ */
+ String getRequestDefMd5();
+
+ /**
* Get the current config generation of the client config.
*
* @return the current config generation.
@@ -77,4 +85,12 @@ public interface JRTServerConfigRequest extends JRTConfigRequest, GetConfigReque
*/
Payload payloadFromResponse(ConfigResponse response);
+
+ /**
+ * Returns the payload checksums from the config request.
+ *
+ * @return the payload checksumss from request.
+ */
+ PayloadChecksums configPayloadChecksums();
+
}
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/JRTServerConfigRequestV3.java b/config/src/main/java/com/yahoo/vespa/config/protocol/JRTServerConfigRequestV3.java
index 4575368cc6a..e6c9bc2175b 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/JRTServerConfigRequestV3.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/JRTServerConfigRequestV3.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
import com.fasterxml.jackson.core.JsonFactory;
@@ -10,21 +10,22 @@ import com.yahoo.jrt.Value;
import com.yahoo.text.Utf8Array;
import com.yahoo.vespa.config.ConfigKey;
import com.yahoo.vespa.config.ErrorCode;
-import com.yahoo.vespa.config.util.ConfigUtils;
+import com.yahoo.vespa.config.PayloadChecksums;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
-import java.util.Arrays;
import java.util.Optional;
import java.util.logging.Logger;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.MD5;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.XXHASH64;
+
/**
* The V3 config protocol implemented on the server side. The V3 protocol uses 2 fields:
*
* * A metadata field containing json data describing config generation, md5 and compression info
- * * A data field containing compressed or uncompressed json config payload. This field can be empty if the payload
- * has not changed since last request, triggering an optimization at the client where the previous payload is used instead.
+ * * A data field containing compressed or uncompressed json config payload
*
* The implementation of addOkResponse is optimized for doing as little copying of payload data as possible, ensuring
* that we get a lower memory footprint.
@@ -69,17 +70,18 @@ public class JRTServerConfigRequestV3 implements JRTServerConfigRequest {
}
@Override
- public void addOkResponse(Payload payload, long generation, boolean applyOnRestart, String configMd5) {
+ public void addOkResponse(Payload payload, long generation, boolean applyOnRestart, PayloadChecksums payloadChecksums) {
this.applyOnRestart = applyOnRestart;
- boolean changedConfig = !configMd5.equals(getRequestConfigMd5());
- boolean changedConfigAndNewGeneration = changedConfig && ConfigUtils.isGenerationNewer(generation, getRequestGeneration());
Payload responsePayload = payload.withCompression(getCompressionType());
ByteArrayOutputStream byteArrayOutputStream = new NoCopyByteArrayOutputStream(4096);
try {
JsonGenerator jsonGenerator = createJsonGenerator(byteArrayOutputStream);
jsonGenerator.writeStartObject();
addCommonReturnValues(jsonGenerator);
- setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_CONFIG_MD5, configMd5);
+ if (payloadChecksums.getForType(MD5) != null)
+ setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_CONFIG_MD5, payloadChecksums.getForType(MD5).asString());
+ if (payloadChecksums.getForType(XXHASH64) != null)
+ setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_CONFIG_XXHASH64, payloadChecksums.getForType(XXHASH64).asString());
setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_CONFIG_GENERATION, generation);
setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_APPLY_ON_RESTART, applyOnRestart);
jsonGenerator.writeObjectFieldStart(SlimeResponseData.RESPONSE_COMPRESSION_INFO);
@@ -87,10 +89,6 @@ public class JRTServerConfigRequestV3 implements JRTServerConfigRequest {
throw new RuntimeException("Payload is null for ' " + this + ", not able to create response");
}
CompressionInfo compressionInfo = responsePayload.getCompressionInfo();
- // If payload is not being sent, we must adjust compression info to avoid client confusion.
- if (!changedConfigAndNewGeneration) {
- compressionInfo = CompressionInfo.create(compressionInfo.getCompressionType(), 0);
- }
compressionInfo.serialize(jsonGenerator);
jsonGenerator.writeEndObject();
@@ -100,17 +98,13 @@ public class JRTServerConfigRequestV3 implements JRTServerConfigRequest {
throw new IllegalArgumentException("Could not add OK response for " + this);
}
request.returnValues().add(createResponseValue(byteArrayOutputStream));
- if (changedConfigAndNewGeneration) {
- ByteBuffer buf = responsePayload.getData().wrap();
- if (buf.hasArray() && buf.remaining() == buf.array().length) {
- request.returnValues().add(new DataValue(buf.array()));
- } else {
- byte [] dst = new byte[buf.remaining()];
- buf.get(dst);
- request.returnValues().add(new DataValue(dst));
- }
+ ByteBuffer buf = responsePayload.getData().wrap();
+ if (buf.hasArray() && buf.remaining() == buf.array().length) {
+ request.returnValues().add(new DataValue(buf.array()));
} else {
- request.returnValues().add(new DataValue(new byte[0]));
+ byte[] dst = new byte[buf.remaining()];
+ buf.get(dst);
+ request.returnValues().add(new DataValue(dst));
}
}
@@ -146,7 +140,7 @@ public class JRTServerConfigRequestV3 implements JRTServerConfigRequest {
StringBuilder sb = new StringBuilder();
sb.append("request='").append(getConfigKey())
.append(",").append(getClientHostName())
- .append(",").append(getRequestConfigMd5())
+ .append(",").append(getRequestConfigChecksums())
.append(",").append(getRequestGeneration())
.append(",").append(getTimeout()).append("'\n");
return sb.toString();
@@ -192,6 +186,11 @@ public class JRTServerConfigRequestV3 implements JRTServerConfigRequest {
return requestData.getRequestConfigMd5();
}
+ @Override
+ public String getRequestDefMd5() { return requestData.getRequestDefMd5(); }
+
+ public PayloadChecksums getRequestConfigChecksums() { return requestData.getRequestConfigChecksums(); }
+
private void addErrorResponse(int errorCode) {
addErrorResponse(errorCode, ErrorCode.getName(errorCode));
}
@@ -222,7 +221,7 @@ public class JRTServerConfigRequestV3 implements JRTServerConfigRequest {
setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_VERSION, getProtocolVersion());
setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_DEF_NAME, key.getName());
setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_DEF_NAMESPACE, key.getNamespace());
- setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_DEF_MD5, key.getMd5());
+ setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_DEF_MD5, requestData.getRequestDefMd5());
setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_CONFIGID, key.getConfigId());
setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_CLIENT_HOSTNAME, requestData.getClientHostName());
jsonGenerator.writeFieldName(SlimeResponseData.RESPONSE_TRACE);
@@ -264,7 +263,9 @@ public class JRTServerConfigRequestV3 implements JRTServerConfigRequest {
}
@Override
- public Optional<VespaVersion> getVespaVersion() {
- return requestData.getVespaVersion();
- }
+ public Optional<VespaVersion> getVespaVersion() { return requestData.getVespaVersion(); }
+
+ @Override
+ public PayloadChecksums configPayloadChecksums() { return requestData.getRequestConfigChecksums(); }
+
}
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/NoCopyByteArrayOutputStream.java b/config/src/main/java/com/yahoo/vespa/config/protocol/NoCopyByteArrayOutputStream.java
index 61a742ade3b..019d4236e10 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/NoCopyByteArrayOutputStream.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/NoCopyByteArrayOutputStream.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
import java.io.ByteArrayOutputStream;
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/Payload.java b/config/src/main/java/com/yahoo/vespa/config/protocol/Payload.java
index f0b8640c3f6..92c93bdc7b7 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/Payload.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/Payload.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
import com.yahoo.text.AbstractUtf8Array;
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/RequestValidation.java b/config/src/main/java/com/yahoo/vespa/config/protocol/RequestValidation.java
index 478dc6c45d6..5737dc112e0 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/RequestValidation.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/RequestValidation.java
@@ -1,15 +1,16 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
import com.yahoo.vespa.config.ConfigDefinition;
import com.yahoo.vespa.config.ConfigKey;
import com.yahoo.vespa.config.ErrorCode;
+import com.yahoo.vespa.config.PayloadChecksum;
import java.util.logging.Logger;
import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import static java.util.logging.Level.INFO;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.MD5;
+import static java.util.logging.Level.WARNING;
/**
* Static utility methods for verifying common request properties.
@@ -19,36 +20,34 @@ import static java.util.logging.Level.INFO;
public class RequestValidation {
private static final Logger log = Logger.getLogger(RequestValidation.class.getName());
- private static final Pattern md5Pattern = Pattern.compile("[0-9a-zA-Z]+");
-
public static int validateRequest(JRTConfigRequest request) {
ConfigKey<?> key = request.getConfigKey();
if (!RequestValidation.verifyName(key.getName())) {
- log.log(INFO, "Illegal name '" + key.getName() + "'");
+ log.log(WARNING, "Illegal name '" + key.getName() + "'");
return ErrorCode.ILLEGAL_NAME;
}
if (!RequestValidation.verifyNamespace(key.getNamespace())) {
- log.log(INFO, "Illegal name space '" + key.getNamespace() + "'");
+ log.log(WARNING, "Illegal name space '" + key.getNamespace() + "'");
return ErrorCode.ILLEGAL_NAME_SPACE;
}
- if (!RequestValidation.verifyMd5(key.getMd5())) {
- log.log(INFO, "Illegal md5 sum '" + key.getNamespace() + "'");
- return ErrorCode.ILLEGAL_DEF_MD5;
+ if (!(new PayloadChecksum(request.getRequestDefMd5(), MD5).valid())) {
+ log.log(WARNING, "Illegal checksum '" + key.getNamespace() + "'");
+ return ErrorCode.ILLEGAL_DEF_MD5; // TODO: Use ILLEGAL_DEF_CHECKSUM
}
- if (!RequestValidation.verifyMd5(request.getRequestConfigMd5())) {
- log.log(INFO, "Illegal config md5 '" + request.getRequestConfigMd5() + "'");
- return ErrorCode.ILLEGAL_CONFIG_MD5;
+ if (! request.getRequestConfigChecksums().valid()) {
+ log.log(WARNING, "Illegal config checksum '" + request.getRequestConfigChecksums() + "'");
+ return ErrorCode.ILLEGAL_CONFIG_MD5; // TODO: Use ILLEGAL_CONFIG_CHECKSUM
}
if (!RequestValidation.verifyGeneration(request.getRequestGeneration())) {
- log.log(INFO, "Illegal generation '" + request.getRequestGeneration() + "'");
+ log.log(WARNING, "Illegal generation '" + request.getRequestGeneration() + "'");
return ErrorCode.ILLEGAL_GENERATION;
}
if (!RequestValidation.verifyTimeout(request.getTimeout())) {
- log.log(INFO, "Illegal timeout '" + request.getTimeout() + "'");
+ log.log(WARNING, "Illegal timeout '" + request.getTimeout() + "'");
return ErrorCode.ILLEGAL_TIMEOUT;
}
if (!RequestValidation.verifyHostname(request.getClientHostName())) {
- log.log(INFO, "Illegal client host name '" + request.getClientHostName() + "'");
+ log.log(WARNING, "Illegal client host name '" + request.getClientHostName() + "'");
return ErrorCode.ILLEGAL_CLIENT_HOSTNAME;
}
return 0;
@@ -59,16 +58,6 @@ public class RequestValidation {
return m.matches();
}
- public static boolean verifyMd5(String md5) {
- if (md5.equals("")) {
- return true; // Empty md5 is ok (e.g. upon getconfig from command line tools)
- } else if (md5.length() != 32) {
- return false;
- }
- Matcher m = md5Pattern.matcher(md5);
- return m.matches();
- }
-
public static boolean verifyTimeout(Long timeout) {
return (timeout > 0);
}
@@ -85,4 +74,5 @@ public class RequestValidation {
private static boolean verifyHostname(String clientHostName) {
return !("".equals(clientHostName));
}
+
}
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeConfigResponse.java b/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeConfigResponse.java
index 1ccf6e367fc..41f71489c78 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeConfigResponse.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeConfigResponse.java
@@ -1,6 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.text.AbstractUtf8Array;
import com.yahoo.vespa.config.ConfigPayload;
@@ -8,6 +9,8 @@ import java.io.IOException;
import java.io.OutputStream;
import java.nio.ByteBuffer;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.MD5;
+
/**
* Class for serializing config responses based on {@link com.yahoo.slime.Slime} implementing the {@link ConfigResponse} interface.
*
@@ -19,25 +22,42 @@ public class SlimeConfigResponse implements ConfigResponse {
private final CompressionInfo compressionInfo;
private final long generation;
private final boolean applyOnRestart;
- private final String configMd5;
+ private final PayloadChecksums payloadChecksums;
+
+ public static SlimeConfigResponse fromConfigPayload(ConfigPayload payload,
+ long generation,
+ boolean applyOnRestart,
+ PayloadChecksums payloadChecksums) {
+ AbstractUtf8Array data = payload.toUtf8Array(true);
+ return new SlimeConfigResponse(data,
+ generation,
+ applyOnRestart,
+ payloadChecksums,
+ CompressionInfo.create(CompressionType.UNCOMPRESSED, data.getByteLength()));
+ }
- public static SlimeConfigResponse fromConfigPayload(ConfigPayload payload, long generation,
- boolean applyOnRestart, String configMd5) {
+ // TODO: Legacy method, remove when not used anymore
+ public static SlimeConfigResponse fromConfigPayload(ConfigPayload payload,
+ long generation,
+ boolean applyOnRestart,
+ String configMd5) {
AbstractUtf8Array data = payload.toUtf8Array(true);
- return new SlimeConfigResponse(data, generation, applyOnRestart,
- configMd5,
+ return new SlimeConfigResponse(data,
+ generation,
+ applyOnRestart,
+ PayloadChecksums.from(configMd5, ""),
CompressionInfo.create(CompressionType.UNCOMPRESSED, data.getByteLength()));
}
public SlimeConfigResponse(AbstractUtf8Array payload,
long generation,
boolean applyOnRestart,
- String configMd5,
+ PayloadChecksums payloadChecksums,
CompressionInfo compressionInfo) {
this.payload = payload;
this.generation = generation;
this.applyOnRestart = applyOnRestart;
- this.configMd5 = configMd5;
+ this.payloadChecksums = payloadChecksums;
this.compressionInfo = compressionInfo;
}
@@ -56,7 +76,7 @@ public class SlimeConfigResponse implements ConfigResponse {
@Override
public String getConfigMd5() {
- return configMd5;
+ return payloadChecksums.getForType(MD5).asString();
}
@Override
@@ -68,11 +88,13 @@ public class SlimeConfigResponse implements ConfigResponse {
@Override
public String toString() {
return "generation=" + generation + "\n" +
- "configmd5=" + configMd5 + "\n" +
+ "checksums=" + payloadChecksums + "\n" +
Payload.from(payload, compressionInfo).withCompression(CompressionType.UNCOMPRESSED);
}
@Override
public CompressionInfo getCompressionInfo() { return compressionInfo; }
+ @Override
+ public PayloadChecksums getPayloadChecksums() { return payloadChecksums; }
}
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeRequestData.java b/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeRequestData.java
index 447bc63eeb6..2b69ae4ebeb 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeRequestData.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeRequestData.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
import com.yahoo.jrt.Request;
@@ -7,9 +7,15 @@ import com.yahoo.slime.Inspector;
import com.yahoo.slime.Slime;
import com.yahoo.slime.SlimeUtils;
import com.yahoo.vespa.config.ConfigKey;
+import com.yahoo.vespa.config.PayloadChecksum;
+import com.yahoo.vespa.config.PayloadChecksums;
+import com.yahoo.vespa.config.util.ConfigUtils;
import java.util.Optional;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.MD5;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.XXHASH64;
+
/**
* Contains slime request data objects. Provides methods for reading various fields from slime request data.
* All data is read lazily.
@@ -26,6 +32,7 @@ class SlimeRequestData {
private static final String REQUEST_CLIENT_HOSTNAME = "clientHostname";
private static final String REQUEST_CURRENT_GENERATION = "currentGeneration";
private static final String REQUEST_CONFIG_MD5 = "configMD5";
+ private static final String REQUEST_CONFIG_XXHASH64 = "configXxhash64";
private static final String REQUEST_TRACE = "trace";
private static final String REQUEST_TIMEOUT = "timeout";
private static final String REQUEST_DEF_MD5 = "defMD5";
@@ -57,9 +64,8 @@ class SlimeRequestData {
ConfigKey<?> getConfigKey() {
return ConfigKey.createFull(getRequestField(REQUEST_DEF_NAME).asString(),
- getRequestField(REQUEST_CLIENT_CONFIGID).asString(),
- getRequestField(REQUEST_DEF_NAMESPACE).asString(),
- getRequestField(REQUEST_DEF_MD5).asString());
+ getRequestField(REQUEST_CLIENT_CONFIGID).asString(),
+ getRequestField(REQUEST_DEF_NAMESPACE).asString());
}
DefContent getSchema() {
@@ -75,8 +81,19 @@ class SlimeRequestData {
return getRequestField(REQUEST_TIMEOUT).asLong();
}
- String getRequestConfigMd5() {
- return getRequestField(REQUEST_CONFIG_MD5).asString();
+ String getRequestConfigMd5() { return getRequestField(REQUEST_CONFIG_MD5).asString(); }
+
+ String getRequestDefMd5() { return getRequestField(REQUEST_DEF_MD5).asString(); }
+
+ PayloadChecksum getRequestConfigXxhash64() {
+ Inspector xxhash64Field = getRequestField(REQUEST_CONFIG_XXHASH64);
+ return xxhash64Field.valid()
+ ? new PayloadChecksum(xxhash64Field.asString(), XXHASH64)
+ : PayloadChecksum.empty(XXHASH64);
+ }
+
+ PayloadChecksums getRequestConfigChecksums() {
+ return PayloadChecksums.from(getRequestConfigMd5(), getRequestConfigXxhash64().asString());
}
long getRequestGeneration() {
@@ -86,7 +103,7 @@ class SlimeRequestData {
static Slime encodeRequest(ConfigKey<?> key,
String hostname,
DefContent defSchema,
- String configMd5,
+ PayloadChecksums payloadChecksums,
long generation,
long timeout,
Trace trace,
@@ -98,11 +115,14 @@ class SlimeRequestData {
request.setLong(REQUEST_VERSION, protocolVersion);
request.setString(REQUEST_DEF_NAME, key.getName());
request.setString(REQUEST_DEF_NAMESPACE, key.getNamespace());
- request.setString(REQUEST_DEF_MD5, key.getMd5());
+ request.setString(REQUEST_DEF_MD5, ConfigUtils.getDefMd5(defSchema.asList()));
request.setString(REQUEST_CLIENT_CONFIGID, key.getConfigId());
request.setString(REQUEST_CLIENT_HOSTNAME, hostname);
defSchema.serialize(request.setArray(REQUEST_DEF_CONTENT));
- request.setString(REQUEST_CONFIG_MD5, configMd5);
+ if (payloadChecksums.getForType(XXHASH64) != null)
+ request.setString(REQUEST_CONFIG_XXHASH64, payloadChecksums.getForType(XXHASH64).asString());
+ if (payloadChecksums.getForType(MD5) != null)
+ request.setString(REQUEST_CONFIG_MD5, payloadChecksums.getForType(MD5).asString());
request.setLong(REQUEST_CURRENT_GENERATION, generation);
request.setLong(REQUEST_TIMEOUT, timeout);
request.setString(REQUEST_COMPRESSION_TYPE, compressionType.name());
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeResponseData.java b/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeResponseData.java
index cc98587456c..1efc13eca25 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeResponseData.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeResponseData.java
@@ -1,11 +1,16 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
+import com.yahoo.vespa.config.PayloadChecksum;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.jrt.Request;
import com.yahoo.slime.Inspector;
import com.yahoo.slime.Slime;
import com.yahoo.slime.SlimeUtils;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.MD5;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.XXHASH64;
+
/**
* Contains response data for a slime response and methods for decoding the response data that
* are common to all {@link Slime} based config requests.
@@ -22,6 +27,7 @@ class SlimeResponseData {
static final String RESPONSE_CLIENT_HOSTNAME = "clientHostname";
static final String RESPONSE_TRACE = "trace";
static final String RESPONSE_CONFIG_MD5 = "configMD5";
+ static final String RESPONSE_CONFIG_XXHASH64 = "configXxhash64";
static final String RESPONSE_CONFIG_GENERATION = "generation";
static final String RESPONSE_APPLY_ON_RESTART = "applyOnRestart";
static final String RESPONSE_COMPRESSION_INFO = "compressionInfo";
@@ -58,9 +64,22 @@ class SlimeResponseData {
return trace.valid() ? Trace.fromSlime(trace) : Trace.createDummy();
}
- String getResponseConfigMd5() {
- Inspector inspector = getResponseField(RESPONSE_CONFIG_MD5);
- return inspector.valid() ? inspector.asString() : "";
+ PayloadChecksum getResponseConfigMd5() {
+ Inspector md5Field = getResponseField(RESPONSE_CONFIG_MD5);
+ return md5Field.valid()
+ ? new PayloadChecksum(md5Field.asString(), MD5)
+ : PayloadChecksum.empty(MD5);
+ }
+
+ PayloadChecksum getResponseConfigXxhash64() {
+ Inspector xxhash64Field = getResponseField(RESPONSE_CONFIG_XXHASH64);
+ return xxhash64Field.valid()
+ ? new PayloadChecksum(xxhash64Field.asString(), XXHASH64)
+ : PayloadChecksum.empty(XXHASH64);
+ }
+
+ PayloadChecksums getResponseConfigChecksums() {
+ return PayloadChecksums.from(getResponseConfigMd5(), getResponseConfigXxhash64());
}
CompressionInfo getCompressionInfo() {
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeTraceDeserializer.java b/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeTraceDeserializer.java
index 998d2c8bcf5..c5ce01f4e2a 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeTraceDeserializer.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeTraceDeserializer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
import com.yahoo.slime.ArrayTraverser;
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeTraceSerializer.java b/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeTraceSerializer.java
index 5f5f057a26b..875033f1ffa 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeTraceSerializer.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeTraceSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
import com.yahoo.slime.Cursor;
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/Trace.java b/config/src/main/java/com/yahoo/vespa/config/protocol/Trace.java
index fbeafdc3f6f..bcc916b428b 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/Trace.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/Trace.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
import com.yahoo.slime.*;
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/VespaVersion.java b/config/src/main/java/com/yahoo/vespa/config/protocol/VespaVersion.java
index c136916f06f..fa040d3f39c 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/VespaVersion.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/VespaVersion.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
/**
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/package-info.java b/config/src/main/java/com/yahoo/vespa/config/protocol/package-info.java
index cf522d90a6b..a4334d575f4 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/package-info.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.config.protocol;
diff --git a/config/src/main/java/com/yahoo/vespa/config/util/ConfigUtils.java b/config/src/main/java/com/yahoo/vespa/config/util/ConfigUtils.java
index a7fc8afcad9..efad076d85c 100644
--- a/config/src/main/java/com/yahoo/vespa/config/util/ConfigUtils.java
+++ b/config/src/main/java/com/yahoo/vespa/config/util/ConfigUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.util;
import com.yahoo.collections.Tuple2;
@@ -10,6 +10,8 @@ import com.yahoo.text.AbstractUtf8Array;
import com.yahoo.text.Utf8;
import com.yahoo.vespa.config.ConfigDefinitionKey;
import com.yahoo.vespa.config.ConfigPayload;
+import net.jpountz.xxhash.XXHash64;
+import net.jpountz.xxhash.XXHashFactory;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -44,42 +46,18 @@ public class ConfigUtils {
private static final String doubleFormattedMax = new DecimalFormat("#.#").format(1e308);
private static final String doubleFormattedMin = new DecimalFormat("#.#", new DecimalFormatSymbols(Locale.ENGLISH)).format(-1e308);
- /**
- * Computes Md5 hash of a list of strings.
- *
- * @param payload a config payload
- * @return the Md5 hash of the list, with lowercase letters
- */
public static String getMd5(ConfigPayload payload) {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- try {
- payload.serialize(baos, new JsonFormat(true));
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- return getMd5(baos.toByteArray());
+ return getMd5(getByteBuffer(payload));
}
- /**
- * Computes Md5 hash of a string.
- *
- * @param input the input String
- * @return the Md5 hash of the input, with lowercase letters
- */
- public static String getMd5(String input) {
- return getMd5(input.getBytes(StandardCharsets.UTF_8));
+ public static String getMd5(String input) {
+ return getMd5(ByteBuffer.wrap(input.getBytes(StandardCharsets.UTF_8)));
}
public static String getMd5(AbstractUtf8Array input) {
return getMd5(input.wrap());
}
- public static String getMd5(byte[] input) {
- MessageDigest md5 = getMd5Instance();
- md5.update(input);
- return HexDump.toHexString(md5.digest()).toLowerCase();
- }
-
public static String getMd5(ByteBuffer input) {
MessageDigest md5 = getMd5Instance();
md5.update(input);
@@ -94,6 +72,30 @@ public class ConfigUtils {
}
}
+ public static String getXxhash64(AbstractUtf8Array input) {
+ return getXxhash64(input.wrap());
+ }
+
+ public static String getXxhash64(ByteBuffer input) {
+ XXHash64 hasher = XXHashFactory.fastestInstance().hash64();
+ return Long.toHexString(hasher.hash(input, 0)).toLowerCase();
+ }
+
+ public static String getXxhash64(ConfigPayload payload) {
+ return getXxhash64(getByteBuffer(payload));
+ }
+
+ private static ByteBuffer getByteBuffer(ConfigPayload payload) {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ try {
+ payload.serialize(baos, new JsonFormat(true));
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ return ByteBuffer.wrap(baos.toByteArray());
+ }
+
+
/**
* Replaces sequences of spaces with 1 space, unless inside quotes. Public for testing;
*
diff --git a/config/src/main/java/com/yahoo/vespa/config/util/package-info.java b/config/src/main/java/com/yahoo/vespa/config/util/package-info.java
index f06365bea9a..f51808aefac 100644
--- a/config/src/main/java/com/yahoo/vespa/config/util/package-info.java
+++ b/config/src/main/java/com/yahoo/vespa/config/util/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.config.util;
diff --git a/config/src/test/java/com/yahoo/config/subscription/AppService.java b/config/src/test/java/com/yahoo/config/subscription/AppService.java
index 3cf301a9b03..b1d1dd941c3 100644
--- a/config/src/test/java/com/yahoo/config/subscription/AppService.java
+++ b/config/src/test/java/com/yahoo/config/subscription/AppService.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import com.yahoo.foo.AppConfig;
diff --git a/config/src/test/java/com/yahoo/config/subscription/BasicTest.java b/config/src/test/java/com/yahoo/config/subscription/BasicTest.java
index 5af45e3a999..afba938a35d 100644
--- a/config/src/test/java/com/yahoo/config/subscription/BasicTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/BasicTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
diff --git a/config/src/test/java/com/yahoo/config/subscription/CfgConfigPayloadBuilderTest.java b/config/src/test/java/com/yahoo/config/subscription/CfgConfigPayloadBuilderTest.java
index c8693227920..a6273ad5ccb 100644
--- a/config/src/test/java/com/yahoo/config/subscription/CfgConfigPayloadBuilderTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/CfgConfigPayloadBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import com.yahoo.config.ConfigInstance;
diff --git a/config/src/test/java/com/yahoo/config/subscription/ConfigApiTest.java b/config/src/test/java/com/yahoo/config/subscription/ConfigApiTest.java
index be09e57b27e..010001cd752 100755
--- a/config/src/test/java/com/yahoo/config/subscription/ConfigApiTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/ConfigApiTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import com.yahoo.config.ConfigInstance;
diff --git a/config/src/test/java/com/yahoo/config/subscription/ConfigGetterTest.java b/config/src/test/java/com/yahoo/config/subscription/ConfigGetterTest.java
index 07eeb78f0d9..ffbc1896aab 100644
--- a/config/src/test/java/com/yahoo/config/subscription/ConfigGetterTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/ConfigGetterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import com.yahoo.foo.AppConfig;
diff --git a/config/src/test/java/com/yahoo/config/subscription/ConfigInstancePayloadTest.java b/config/src/test/java/com/yahoo/config/subscription/ConfigInstancePayloadTest.java
index 49fd25b6476..983113ab2bf 100644
--- a/config/src/test/java/com/yahoo/config/subscription/ConfigInstancePayloadTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/ConfigInstancePayloadTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import com.yahoo.config.ConfigInstance;
diff --git a/config/src/test/java/com/yahoo/config/subscription/ConfigInstanceSerializationTest.java b/config/src/test/java/com/yahoo/config/subscription/ConfigInstanceSerializationTest.java
index 95ffb31fe7d..57ceee9b1bb 100644
--- a/config/src/test/java/com/yahoo/config/subscription/ConfigInstanceSerializationTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/ConfigInstanceSerializationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import com.yahoo.config.ConfigInstance;
diff --git a/config/src/test/java/com/yahoo/config/subscription/ConfigInstanceSerializerTest.java b/config/src/test/java/com/yahoo/config/subscription/ConfigInstanceSerializerTest.java
index 7c08d0175a1..25538030468 100644
--- a/config/src/test/java/com/yahoo/config/subscription/ConfigInstanceSerializerTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/ConfigInstanceSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import com.yahoo.config.ConfigInstance;
diff --git a/config/src/test/java/com/yahoo/config/subscription/ConfigInstanceTest.java b/config/src/test/java/com/yahoo/config/subscription/ConfigInstanceTest.java
index f706f021ba0..873df75ce23 100644
--- a/config/src/test/java/com/yahoo/config/subscription/ConfigInstanceTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/ConfigInstanceTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import com.yahoo.foo.AppConfig;
diff --git a/config/src/test/java/com/yahoo/config/subscription/ConfigInstanceUtilTest.java b/config/src/test/java/com/yahoo/config/subscription/ConfigInstanceUtilTest.java
index fa24988709a..dabfbffef98 100644
--- a/config/src/test/java/com/yahoo/config/subscription/ConfigInstanceUtilTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/ConfigInstanceUtilTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import com.yahoo.config.ConfigBuilder;
diff --git a/config/src/test/java/com/yahoo/config/subscription/ConfigInterruptedExceptionTest.java b/config/src/test/java/com/yahoo/config/subscription/ConfigInterruptedExceptionTest.java
index a80da63afc9..dbc47b7e24d 100644
--- a/config/src/test/java/com/yahoo/config/subscription/ConfigInterruptedExceptionTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/ConfigInterruptedExceptionTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import org.junit.Test;
diff --git a/config/src/test/java/com/yahoo/config/subscription/ConfigSetSubscriptionTest.java b/config/src/test/java/com/yahoo/config/subscription/ConfigSetSubscriptionTest.java
index b31924e94e7..0eb51e734c8 100644
--- a/config/src/test/java/com/yahoo/config/subscription/ConfigSetSubscriptionTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/ConfigSetSubscriptionTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import static org.junit.Assert.*;
diff --git a/config/src/test/java/com/yahoo/config/subscription/ConfigSetTest.java b/config/src/test/java/com/yahoo/config/subscription/ConfigSetTest.java
index 48a51bbc02c..c9e7bb23402 100644
--- a/config/src/test/java/com/yahoo/config/subscription/ConfigSetTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/ConfigSetTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import com.yahoo.foo.SimpletypesConfig;
diff --git a/config/src/test/java/com/yahoo/config/subscription/ConfigSourceSetTest.java b/config/src/test/java/com/yahoo/config/subscription/ConfigSourceSetTest.java
index 0879c330f45..452b51bf408 100755
--- a/config/src/test/java/com/yahoo/config/subscription/ConfigSourceSetTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/ConfigSourceSetTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import org.junit.Test;
diff --git a/config/src/test/java/com/yahoo/config/subscription/ConfigSourceTest.java b/config/src/test/java/com/yahoo/config/subscription/ConfigSourceTest.java
index 00f7d23bedf..e7baab407f6 100644
--- a/config/src/test/java/com/yahoo/config/subscription/ConfigSourceTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/ConfigSourceTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import com.yahoo.foo.SimpletypesConfig;
diff --git a/config/src/test/java/com/yahoo/config/subscription/ConfigSubscriptionTest.java b/config/src/test/java/com/yahoo/config/subscription/ConfigSubscriptionTest.java
index f70602c64e7..ea73a6cbef1 100644
--- a/config/src/test/java/com/yahoo/config/subscription/ConfigSubscriptionTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/ConfigSubscriptionTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import com.yahoo.config.ConfigInstance;
diff --git a/config/src/test/java/com/yahoo/config/subscription/ConfigURITest.java b/config/src/test/java/com/yahoo/config/subscription/ConfigURITest.java
index 555434837c8..3c2750c55cb 100644
--- a/config/src/test/java/com/yahoo/config/subscription/ConfigURITest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/ConfigURITest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import org.junit.Test;
diff --git a/config/src/test/java/com/yahoo/config/subscription/DefaultConfigTest.java b/config/src/test/java/com/yahoo/config/subscription/DefaultConfigTest.java
index 21bf7469591..1246ba240f8 100644
--- a/config/src/test/java/com/yahoo/config/subscription/DefaultConfigTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/DefaultConfigTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import com.yahoo.foo.*;
diff --git a/config/src/test/java/com/yahoo/config/subscription/FunctionTest.java b/config/src/test/java/com/yahoo/config/subscription/FunctionTest.java
index b32cdcd8c16..97a682d3b9a 100644
--- a/config/src/test/java/com/yahoo/config/subscription/FunctionTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/FunctionTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import com.yahoo.foo.FunctionTestConfig;
diff --git a/config/src/test/java/com/yahoo/config/subscription/GenericConfigSubscriberTest.java b/config/src/test/java/com/yahoo/config/subscription/GenericConfigSubscriberTest.java
index d5eccdfe94b..6174432676c 100644
--- a/config/src/test/java/com/yahoo/config/subscription/GenericConfigSubscriberTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/GenericConfigSubscriberTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import java.util.HashMap;
diff --git a/config/src/test/java/com/yahoo/config/subscription/NamespaceTest.java b/config/src/test/java/com/yahoo/config/subscription/NamespaceTest.java
index 430de894629..4edf931a7c6 100644
--- a/config/src/test/java/com/yahoo/config/subscription/NamespaceTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/NamespaceTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import com.yahoo.myproject.config.NamespaceConfig;
diff --git a/config/src/test/java/com/yahoo/config/subscription/UnicodeTest.java b/config/src/test/java/com/yahoo/config/subscription/UnicodeTest.java
index f1bd164c874..8864f114d87 100644
--- a/config/src/test/java/com/yahoo/config/subscription/UnicodeTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/UnicodeTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
import com.yahoo.foo.UnicodeConfig;
diff --git a/config/src/test/java/com/yahoo/config/subscription/impl/FileConfigSubscriptionTest.java b/config/src/test/java/com/yahoo/config/subscription/impl/FileConfigSubscriptionTest.java
index 71e7a9f08d7..3eb532d8f7f 100644
--- a/config/src/test/java/com/yahoo/config/subscription/impl/FileConfigSubscriptionTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/impl/FileConfigSubscriptionTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription.impl;
import com.yahoo.foo.SimpletypesConfig;
diff --git a/config/src/test/java/com/yahoo/config/subscription/impl/JRTConfigRequesterTest.java b/config/src/test/java/com/yahoo/config/subscription/impl/JRTConfigRequesterTest.java
index bf516bee8a9..e60c84df887 100644
--- a/config/src/test/java/com/yahoo/config/subscription/impl/JRTConfigRequesterTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/impl/JRTConfigRequesterTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription.impl;
import com.yahoo.config.subscription.ConfigSourceSet;
@@ -9,6 +9,7 @@ import com.yahoo.vespa.config.ConfigKey;
import com.yahoo.vespa.config.ConnectionPool;
import com.yahoo.vespa.config.ErrorCode;
import com.yahoo.vespa.config.ErrorType;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.vespa.config.TimingValues;
import com.yahoo.vespa.config.protocol.JRTServerConfigRequestV3;
import org.junit.Test;
@@ -19,7 +20,6 @@ import java.util.Random;
import static com.yahoo.config.subscription.impl.JRTConfigRequester.calculateFailedRequestDelay;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertSame;
@@ -33,59 +33,23 @@ public class JRTConfigRequesterTest {
@Test
public void testDelayCalculation() {
TimingValues defaultTimingValues = new TimingValues();
- Random random = new Random(0); // Use seed to make tests predictable
+ Random random = new Random(0); // Use seed to make delays deterministic
TimingValues timingValues = new TimingValues(defaultTimingValues, random);
- // transientFailures and fatalFailures are not set until after delay has been calculated,
- // so false is the case for the first failure
- boolean fatalFailures = false;
- boolean configured = false;
-
- // First time failure, not configured
- long delay = calculateFailedRequestDelay(ErrorType.TRANSIENT, fatalFailures, timingValues, configured);
- assertTransientDelay(timingValues.getUnconfiguredDelay(), delay);
- delay = calculateFailedRequestDelay(ErrorType.TRANSIENT, fatalFailures, timingValues, configured);
- assertTransientDelay(timingValues.getUnconfiguredDelay(), delay);
-
-
- delay = calculateFailedRequestDelay(ErrorType.FATAL, fatalFailures, timingValues, configured);
- assertTrue("delay=" + delay, delay > (1 - JRTConfigRequester.randomFraction) * timingValues.getFixedDelay());
- assertTrue("delay=" + delay,delay < (1 + JRTConfigRequester.randomFraction) * timingValues.getFixedDelay());
- assertEquals(4481, delay);
-
- // First time failure, configured
- configured = true;
- delay = calculateFailedRequestDelay(ErrorType.TRANSIENT, fatalFailures, timingValues, configured);
- assertTransientDelay(timingValues.getConfiguredErrorDelay(), delay);
-
- delay = calculateFailedRequestDelay(ErrorType.FATAL, fatalFailures, timingValues, configured);
- assertTrue(delay > (1 - JRTConfigRequester.randomFraction) * timingValues.getFixedDelay());
- assertTrue(delay < (1 + JRTConfigRequester.randomFraction) * timingValues.getFixedDelay());
- assertEquals(5275, delay);
-
-
- // nth time failure, not configured
- fatalFailures = true;
- configured = false;
- delay = calculateFailedRequestDelay(ErrorType.TRANSIENT, fatalFailures, timingValues, configured);
- assertTransientDelay(timingValues.getUnconfiguredDelay(), delay);
- delay = calculateFailedRequestDelay(ErrorType.FATAL, fatalFailures, timingValues, configured);
- final long l = timingValues.getFixedDelay() + timingValues.getUnconfiguredDelay();
- assertTrue(delay > (1 - JRTConfigRequester.randomFraction) * l);
- assertTrue(delay < (1 + JRTConfigRequester.randomFraction) * l);
- assertEquals(6121, delay);
-
-
- // nth time failure, configured
- fatalFailures = true;
- configured = true;
- delay = calculateFailedRequestDelay(ErrorType.TRANSIENT, fatalFailures, timingValues, configured);
- assertTransientDelay(timingValues.getConfiguredErrorDelay(), delay);
- delay = calculateFailedRequestDelay(ErrorType.FATAL, fatalFailures, timingValues, configured);
- final long l1 = timingValues.getFixedDelay() + timingValues.getConfiguredErrorDelay();
- assertTrue(delay > (1 - JRTConfigRequester.randomFraction) * l1);
- assertTrue(delay < (1 + JRTConfigRequester.randomFraction) * l1);
- assertEquals(20780, delay);
+ int failures = 1;
+ // First time failure
+ long delay = calculateFailedRequestDelay(failures, timingValues);
+ assertEquals(10924, delay);
+
+ failures++;
+ // 2nd time failure
+ delay = calculateFailedRequestDelay(failures, timingValues);
+ assertEquals(22652, delay);
+
+ failures++;
+ // 3rd time failure
+ delay = calculateFailedRequestDelay(failures, timingValues);
+ assertEquals(35849, delay);
}
@Test
@@ -119,7 +83,7 @@ public class JRTConfigRequesterTest {
JRTServerConfigRequestV3 receivedRequest = JRTServerConfigRequestV3.createFromRequest(request);
assertTrue(receivedRequest.validateParameters());
assertEquals(timingValues.getSubscribeTimeout(), receivedRequest.getTimeout());
- assertFalse(requester.getFatalFailures());
+ assertEquals(0, requester.getFailures());
}
@Test
@@ -131,7 +95,7 @@ public class JRTConfigRequesterTest {
JRTConfigRequester requester = new JRTConfigRequester(connection, timingValues);
requester.request(createSubscription(subscriber, timingValues));
waitUntilResponse(connection);
- assertTrue(requester.getFatalFailures());
+ assertEquals(1, requester.getFailures());
}
@Test
@@ -139,13 +103,13 @@ public class JRTConfigRequesterTest {
ConfigSubscriber subscriber = new ConfigSubscriber();
final TimingValues timingValues = getTestTimingValues();
JRTConfigSubscription<SimpletypesConfig> sub = createSubscription(subscriber, timingValues);
- sub.setConfig(1L, false, config());
+ sub.setConfig(1L, false, config(), PayloadChecksums.empty());
final MockConnection connection = new MockConnection(new ErrorResponseHandler());
JRTConfigRequester requester = new JRTConfigRequester(connection, timingValues);
requester.request(sub);
waitUntilResponse(connection);
- assertTrue(requester.getFatalFailures());
+ assertEquals(1, requester.getFailures());
}
@Test
@@ -157,7 +121,7 @@ public class JRTConfigRequesterTest {
JRTConfigRequester requester = new JRTConfigRequester(connection, timingValues);
requester.request(createSubscription(subscriber, timingValues));
waitUntilResponse(connection);
- assertFalse(requester.getFatalFailures());
+ assertEquals(1, requester.getFailures());
}
@Test
@@ -165,13 +129,13 @@ public class JRTConfigRequesterTest {
ConfigSubscriber subscriber = new ConfigSubscriber();
final TimingValues timingValues = getTestTimingValues();
JRTConfigSubscription<SimpletypesConfig> sub = createSubscription(subscriber, timingValues);
- sub.setConfig(1L, false, config());
+ sub.setConfig(1L, false, config(), PayloadChecksums.empty());
final MockConnection connection = new MockConnection(new ErrorResponseHandler(com.yahoo.jrt.ErrorCode.TIMEOUT));
JRTConfigRequester requester = new JRTConfigRequester(connection, timingValues);
requester.request(sub);
waitUntilResponse(connection);
- assertFalse(requester.getFatalFailures());
+ assertEquals(1, requester.getFailures());
}
@Test
@@ -179,14 +143,14 @@ public class JRTConfigRequesterTest {
ConfigSubscriber subscriber = new ConfigSubscriber();
final TimingValues timingValues = getTestTimingValues();
JRTConfigSubscription<SimpletypesConfig> sub = createSubscription(subscriber, timingValues);
- sub.setConfig(1L, false, config());
+ sub.setConfig(1L, false, config(), PayloadChecksums.empty());
final MockConnection connection = new MockConnection(new ErrorResponseHandler(ErrorCode.UNKNOWN_DEFINITION));
JRTConfigRequester requester = new JRTConfigRequester(connection, timingValues);
assertEquals(requester.getConnectionPool(), connection);
requester.request(sub);
waitUntilResponse(connection);
- assertTrue(requester.getFatalFailures());
+ assertEquals(1, requester.getFailures());
}
@Test
@@ -256,8 +220,6 @@ public class JRTConfigRequesterTest {
500, // errorTimeout
500, // initialTimeout
2000, // subscribeTimeout
- 250, // unconfiguredDelay
- 500, // configuredErrorDelay
250); // fixedDelay
}
@@ -320,10 +282,4 @@ public class JRTConfigRequesterTest {
requester2.close();
}
- private void assertTransientDelay(long maxDelay, long delay) {
- long minDelay = 0;
- assertTrue("delay=" + delay + ", minDelay=" + minDelay + ",maxDelay=" + maxDelay,
- delay >= minDelay && delay <= maxDelay);
- }
-
}
diff --git a/config/src/test/java/com/yahoo/vespa/config/ConfigBuilderMergeTest.java b/config/src/test/java/com/yahoo/vespa/config/ConfigBuilderMergeTest.java
index 137d2894164..4800a05b114 100644
--- a/config/src/test/java/com/yahoo/vespa/config/ConfigBuilderMergeTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/ConfigBuilderMergeTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.foo.ArraytypesConfig;
diff --git a/config/src/test/java/com/yahoo/vespa/config/ConfigCacheKeyTest.java b/config/src/test/java/com/yahoo/vespa/config/ConfigCacheKeyTest.java
index fce61cc802c..6788a2f9c36 100755
--- a/config/src/test/java/com/yahoo/vespa/config/ConfigCacheKeyTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/ConfigCacheKeyTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import org.junit.Test;
diff --git a/config/src/test/java/com/yahoo/vespa/config/ConfigDefinitionBuilderTest.java b/config/src/test/java/com/yahoo/vespa/config/ConfigDefinitionBuilderTest.java
index 810b9f58829..68b25266de8 100644
--- a/config/src/test/java/com/yahoo/vespa/config/ConfigDefinitionBuilderTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/ConfigDefinitionBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.config.codegen.CNode;
diff --git a/config/src/test/java/com/yahoo/vespa/config/ConfigDefinitionKeyTest.java b/config/src/test/java/com/yahoo/vespa/config/ConfigDefinitionKeyTest.java
index 4f5291c6a36..7e750e1d84d 100644
--- a/config/src/test/java/com/yahoo/vespa/config/ConfigDefinitionKeyTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/ConfigDefinitionKeyTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import org.junit.Test;
diff --git a/config/src/test/java/com/yahoo/vespa/config/ConfigDefinitionTest.java b/config/src/test/java/com/yahoo/vespa/config/ConfigDefinitionTest.java
index 88e7e766974..db12145776b 100755
--- a/config/src/test/java/com/yahoo/vespa/config/ConfigDefinitionTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/ConfigDefinitionTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import org.junit.Test;
@@ -48,7 +48,7 @@ public class ConfigDefinitionTest {
@Test
public void testIntDefaultValues() {
- ConfigDefinition def = new ConfigDefinition("foo", "1", "namespace1");
+ ConfigDefinition def = new ConfigDefinition("foo", "namespace1");
def.addIntDef("foo");
def.addIntDef("bar", 0);
@@ -68,7 +68,7 @@ public class ConfigDefinitionTest {
@Test
public void testLongDefaultValues() {
- ConfigDefinition def = new ConfigDefinition("foo", "1", "namespace1");
+ ConfigDefinition def = new ConfigDefinition("foo", "namespace1");
def.addLongDef("foo");
def.addLongDef("bar", 1234567890123L);
@@ -87,7 +87,7 @@ public class ConfigDefinitionTest {
@Test
@SuppressWarnings("serial")
public void testDefaultsPayloadMap() {
- ConfigDefinition def = new ConfigDefinition("foo", "1", "namespace1");
+ ConfigDefinition def = new ConfigDefinition("foo", "namespace1");
def.addStringDef("mystring");
def.addStringDef("mystringdef", "foo");
def.addBoolDef("mybool");
@@ -116,7 +116,7 @@ public class ConfigDefinitionTest {
@Test
public void testVerification() {
- ConfigDefinition def = new ConfigDefinition("foo", "1", "bar");
+ ConfigDefinition def = new ConfigDefinition("foo", "bar");
def.addBoolDef("boolval");
def.addStringDef("stringval");
def.addIntDef("intval");
diff --git a/config/src/test/java/com/yahoo/vespa/config/ConfigFileFormatterTest.java b/config/src/test/java/com/yahoo/vespa/config/ConfigFileFormatterTest.java
index 5198759d3e2..c86d54d7471 100644
--- a/config/src/test/java/com/yahoo/vespa/config/ConfigFileFormatterTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/ConfigFileFormatterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.foo.ArraytypesConfig;
diff --git a/config/src/test/java/com/yahoo/vespa/config/ConfigKeyTest.java b/config/src/test/java/com/yahoo/vespa/config/ConfigKeyTest.java
index 452d0d78897..e113622e812 100644
--- a/config/src/test/java/com/yahoo/vespa/config/ConfigKeyTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/ConfigKeyTest.java
@@ -1,14 +1,14 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
+import com.yahoo.config.ConfigurationRuntimeException;
+import com.yahoo.foo.AppConfig;
+import org.junit.Test;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import com.yahoo.foo.AppConfig;
-import com.yahoo.config.ConfigurationRuntimeException;
-import org.junit.Test;
-
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
@@ -52,7 +52,6 @@ public class ConfigKeyTest {
assertEquals("Name is set correctly from class", name, classKey.getName());
assertEquals("Namespace is set correctly from class", namespace, classKey.getNamespace());
assertEquals(configId, classKey.getConfigId());
- assertEquals("Md5 is set correctly from class", md5, classKey.getMd5());
ConfigKey<?> stringKey = new ConfigKey<>(name, configId, namespace);
assertEquals("Key created from class equals key created from strings", stringKey, classKey);
diff --git a/config/src/test/java/com/yahoo/vespa/config/ConfigPayloadBuilderTest.java b/config/src/test/java/com/yahoo/vespa/config/ConfigPayloadBuilderTest.java
index c13d3ec9b9b..3e5cf22ef37 100644
--- a/config/src/test/java/com/yahoo/vespa/config/ConfigPayloadBuilderTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/ConfigPayloadBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.slime.Cursor;
@@ -31,7 +31,7 @@ public class ConfigPayloadBuilderTest {
@Before
public void setupBuilder() {
- ConfigDefinition def = new ConfigDefinition("foo", "1", "bar");
+ ConfigDefinition def = new ConfigDefinition("foo","bar");
def.addBoolDef("boolval");
ConfigDefinition mystruct = def.structDef("mystruct");
mystruct.addIntDef("foofield");
diff --git a/config/src/test/java/com/yahoo/vespa/config/ConfigPayloadTest.java b/config/src/test/java/com/yahoo/vespa/config/ConfigPayloadTest.java
index b3db6e2ab43..50f4233e13a 100644
--- a/config/src/test/java/com/yahoo/vespa/config/ConfigPayloadTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/ConfigPayloadTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.config.codegen.DefParser;
diff --git a/config/src/test/java/com/yahoo/vespa/config/DefaultValueApplierTest.java b/config/src/test/java/com/yahoo/vespa/config/DefaultValueApplierTest.java
index 6ab3059f1c0..0acefe5cd18 100644
--- a/config/src/test/java/com/yahoo/vespa/config/DefaultValueApplierTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/DefaultValueApplierTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.config.codegen.DefParser;
diff --git a/config/src/test/java/com/yahoo/vespa/config/ErrorCodeTest.java b/config/src/test/java/com/yahoo/vespa/config/ErrorCodeTest.java
index 64210eaa4b8..4ae8bc676d7 100644
--- a/config/src/test/java/com/yahoo/vespa/config/ErrorCodeTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/ErrorCodeTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import org.junit.Test;
diff --git a/config/src/test/java/com/yahoo/vespa/config/ErrorTypeTest.java b/config/src/test/java/com/yahoo/vespa/config/ErrorTypeTest.java
index a0b2c1185a7..66fa5440fe7 100644
--- a/config/src/test/java/com/yahoo/vespa/config/ErrorTypeTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/ErrorTypeTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import org.junit.Test;
diff --git a/config/src/test/java/com/yahoo/vespa/config/GenericConfigBuilderTest.java b/config/src/test/java/com/yahoo/vespa/config/GenericConfigBuilderTest.java
index 2c60ff95fee..bb612bb3245 100644
--- a/config/src/test/java/com/yahoo/vespa/config/GenericConfigBuilderTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/GenericConfigBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.config.subscription.ConfigInstanceUtil;
diff --git a/config/src/test/java/com/yahoo/vespa/config/JRTConnectionPoolTest.java b/config/src/test/java/com/yahoo/vespa/config/JRTConnectionPoolTest.java
index bfe132c9660..43f9a87454d 100644
--- a/config/src/test/java/com/yahoo/vespa/config/JRTConnectionPoolTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/JRTConnectionPoolTest.java
@@ -1,11 +1,10 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.config.subscription.ConfigSourceSet;
import org.junit.Test;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
@@ -27,7 +26,8 @@ import static org.junit.Assert.assertTrue;
* @author hmusum
*/
public class JRTConnectionPoolTest {
- private static final List<String> sources = new ArrayList<>((Arrays.asList("host0", "host1", "host2")));
+
+ private static final ConfigSourceSet sources = new ConfigSourceSet(List.of("host0", "host1", "host2"));
@Test
public void test_random_selection_of_source() {
@@ -57,7 +57,7 @@ public class JRTConnectionPoolTest {
public void testManySources() {
Map<String, Integer> timesUsed = new LinkedHashMap<>();
- List<String> twoSources = List.of("host0", "host1");
+ ConfigSourceSet twoSources = new ConfigSourceSet(List.of("host0", "host1"));
JRTConnectionPool sourcePool = new JRTConnectionPool(twoSources);
int count = 1000;
@@ -93,8 +93,7 @@ public class JRTConnectionPoolTest {
*/
@Test
public void updateSources() {
- List<String> twoSources = List.of("host0", "host1");
-
+ ConfigSourceSet twoSources = new ConfigSourceSet(List.of("host0", "host1"));
JRTConnectionPool sourcePool = new JRTConnectionPool(twoSources);
ConfigSourceSet sourcesBefore = sourcePool.getSourceSet();
@@ -130,7 +129,7 @@ public class JRTConnectionPoolTest {
@Test
public void testFailingSources() {
- List<String> sources = List.of("host0", "host1", "host2");
+ ConfigSourceSet sources = new ConfigSourceSet(List.of("host0", "host1"));
JRTConnectionPool connectionPool = new JRTConnectionPool(sources);
Connection firstConnection = connectionPool.getCurrent();
@@ -160,7 +159,7 @@ public class JRTConnectionPoolTest {
}
private JRTConnection failAndGetNewConnection(JRTConnectionPool connectionPool, Connection failingConnection) {
- connectionPool.setError(failingConnection, 123);
+ connectionPool.switchConnection(failingConnection);
return connectionPool.getCurrent();
}
diff --git a/config/src/test/java/com/yahoo/vespa/config/LZ4PayloadCompressorTest.java b/config/src/test/java/com/yahoo/vespa/config/LZ4PayloadCompressorTest.java
index 903b6f3b489..56bcdda20a0 100644
--- a/config/src/test/java/com/yahoo/vespa/config/LZ4PayloadCompressorTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/LZ4PayloadCompressorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.text.Utf8;
diff --git a/config/src/test/java/com/yahoo/vespa/config/RawConfigTest.java b/config/src/test/java/com/yahoo/vespa/config/RawConfigTest.java
index e1d11f82eea..12c1d2f8069 100644
--- a/config/src/test/java/com/yahoo/vespa/config/RawConfigTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/RawConfigTest.java
@@ -1,8 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.text.Utf8String;
-import com.yahoo.vespa.config.protocol.*;
+import com.yahoo.vespa.config.protocol.CompressionInfo;
+import com.yahoo.vespa.config.protocol.Payload;
import com.yahoo.vespa.config.protocol.VespaVersion;
import com.yahoo.vespa.config.util.ConfigUtils;
import org.junit.Test;
@@ -11,6 +12,8 @@ import java.util.Arrays;
import java.util.List;
import java.util.Optional;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.MD5;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.XXHASH64;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
import static org.junit.Assert.assertEquals;
@@ -26,11 +29,11 @@ import static org.junit.Assert.assertThat;
public class RawConfigTest {
private static final ConfigKey<?> key = new ConfigKey<>("foo", "id", "bar");
- private static List<String> defContent = Arrays.asList("version=1", "anInt int");
+ private static final List<String> defContent = Arrays.asList("version=1", "anInt int");
private static final String defMd5 = ConfigUtils.getDefMd5FromRequest("", defContent);
- private static final String configMd5 = "012345";
- private static Payload payload = Payload.from(new Utf8String("anInt 1"), CompressionInfo.uncompressed());
- private static long generation = 1L;
+ private static final PayloadChecksums payloadChecksums = PayloadChecksums.from("012345", "");
+ private static final Payload payload = Payload.from(new Utf8String("anInt 1"), CompressionInfo.uncompressed());
+ private static final long generation = 1L;
@Test
public void basic() {
@@ -47,7 +50,7 @@ public class RawConfigTest {
RawConfig copiedConfig = new RawConfig(config);
assertEquals(config, copiedConfig);
- assertEquals("bar.foo," + defMd5 + ",id,,0,null", config.toString());
+ assertEquals("bar.foo," + defMd5 + ",id,MD5:,XXHASH64:,0,null", config.toString());
assertEquals(Optional.empty(), config.getVespaVersion());
}
@@ -61,14 +64,14 @@ public class RawConfigTest {
assertThat(config.hashCode(), is(not(new RawConfig(key, "a").hashCode()))); // different def md5
// different generation
- config = new RawConfig(key, defMd5, payload, configMd5, generation, false, defContent, Optional.empty());
- RawConfig config2 = new RawConfig(key, defMd5, payload, configMd5, 2L, false, defContent, Optional.empty());
+ config = new RawConfig(key, defMd5, payload, payloadChecksums, generation, false, defContent, Optional.empty());
+ RawConfig config2 = new RawConfig(key, defMd5, payload, payloadChecksums, 2L, false, defContent, Optional.empty());
assertThat(config, is(not(config2)));
assertThat(config.hashCode(), is(not(config2.hashCode())));
// different config md5 and with vespa version
final VespaVersion vespaVersion = VespaVersion.fromString("5.37.38");
- RawConfig config3 = new RawConfig(key, defMd5, payload, "9999", generation, false, defContent, Optional.of(vespaVersion));
+ RawConfig config3 = new RawConfig(key, defMd5, payload, PayloadChecksums.from("9999", ""), generation, false, defContent, Optional.of(vespaVersion));
assertThat(config, is(not(config3)));
assertThat(config.hashCode(), is(not(config3.hashCode())));
// Check that vespa version is set correctly
@@ -82,42 +85,43 @@ public class RawConfigTest {
assertNotEquals(config, key);
// errors
- RawConfig errorConfig1 = new RawConfig(key, defMd5, payload, configMd5, generation, false, 1, defContent, Optional.empty());
+ RawConfig errorConfig1 = new RawConfig(key, defMd5, payload, payloadChecksums, generation, false, 1, defContent, Optional.empty());
assertThat(errorConfig1, is(errorConfig1));
assertThat(config, is(not(errorConfig1)));
assertThat(config.hashCode(), is(not(errorConfig1.hashCode())));
assertThat(errorConfig1, is(errorConfig1));
- RawConfig errorConfig2 = new RawConfig(key, defMd5, payload, configMd5, generation, false, 2, defContent, Optional.empty());
+ RawConfig errorConfig2 = new RawConfig(key, defMd5, payload, payloadChecksums, generation, false, 2, defContent, Optional.empty());
assertThat(errorConfig1, is(not(errorConfig2)));
assertThat(errorConfig1.hashCode(), is(not(errorConfig2.hashCode())));
}
@Test
public void payload() {
- RawConfig config = new RawConfig(key, defMd5, payload, configMd5, generation, false, defContent, Optional.empty());
- assertThat(config.getPayload(), is(payload));
- assertThat(config.getConfigMd5(), is(configMd5));
- assertThat(config.getGeneration(), is(generation));
- assertThat(config.getDefContent(), is(defContent));
+ RawConfig config = new RawConfig(key, defMd5, payload, payloadChecksums, generation, false, defContent, Optional.empty());
+ assertEquals(config.getPayload(), payload);
+ assertEquals(config.getPayloadChecksums().getForType(XXHASH64), payloadChecksums.getForType(XXHASH64));
+ assertEquals(config.getPayloadChecksums().getForType(MD5), payloadChecksums.getForType(MD5));
+ assertEquals(config.getGeneration(), generation);
+ assertEquals(config.getDefContent(), defContent);
}
@Test
public void require_correct_defmd5() {
final String defMd5ForEmptyDefContent = "d41d8cd98f00b204e9800998ecf8427e";
- RawConfig config = new RawConfig(key, null, payload, configMd5, generation, false, defContent, Optional.empty());
+ RawConfig config = new RawConfig(key, null, payload, payloadChecksums, generation, false, defContent, Optional.empty());
assertThat(config.getDefMd5(), is(defMd5));
- config = new RawConfig(key, "", payload, configMd5, generation, false, defContent, Optional.empty());
+ config = new RawConfig(key, "", payload, payloadChecksums, generation, false, defContent, Optional.empty());
assertThat(config.getDefMd5(), is(defMd5));
- config = new RawConfig(key, defMd5, payload, configMd5, generation, false, defContent, Optional.empty());
+ config = new RawConfig(key, defMd5, payload, payloadChecksums, generation, false, defContent, Optional.empty());
assertThat(config.getDefMd5(), is(defMd5));
- config = new RawConfig(key, null, payload, configMd5, generation, false, null, Optional.empty());
+ config = new RawConfig(key, null, payload, payloadChecksums, generation, false, null, Optional.empty());
assertNull(config.getDefMd5());
- config = new RawConfig(key, null, payload, configMd5, generation, false, List.of(""), Optional.empty());
+ config = new RawConfig(key, null, payload, payloadChecksums, generation, false, List.of(""), Optional.empty());
assertThat(config.getDefMd5(), is(defMd5ForEmptyDefContent));
- config = new RawConfig(key, "", payload, configMd5, generation, false, null, Optional.empty());
+ config = new RawConfig(key, "", payload, payloadChecksums, generation, false, null, Optional.empty());
assertThat(config.getDefMd5(), is(""));
- config = new RawConfig(key, "", payload, configMd5, generation, false, List.of(""), Optional.empty());
+ config = new RawConfig(key, "", payload, payloadChecksums, generation, false, List.of(""), Optional.empty());
assertThat(config.getDefMd5(), is(defMd5ForEmptyDefContent));
}
diff --git a/config/src/test/java/com/yahoo/vespa/config/RequestValidationTest.java b/config/src/test/java/com/yahoo/vespa/config/RequestValidationTest.java
index 3f625013f27..8e0c0d1671e 100644
--- a/config/src/test/java/com/yahoo/vespa/config/RequestValidationTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/RequestValidationTest.java
@@ -1,9 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.vespa.config.protocol.RequestValidation;
import org.junit.Test;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.MD5;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.XXHASH64;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -20,11 +22,11 @@ public class RequestValidationTest {
@Test
public void testVerifyDefMd5() {
- assertTrue(RequestValidation.verifyMd5(""));
- assertTrue(RequestValidation.verifyMd5("e8f0c01c7c3dcb8d3f62d7ff777fce6b"));
- assertTrue(RequestValidation.verifyMd5("e8f0c01c7c3dcb8d3f62d7ff777fce6B"));
- assertFalse(RequestValidation.verifyMd5("aaaaaaaaaaaaaaaaaa"));
- assertFalse(RequestValidation.verifyMd5("-8f0c01c7c3dcb8d3f62d7ff777fce6b"));
+ assertTrue(PayloadChecksum.empty(MD5).valid());
+ assertTrue(new PayloadChecksum("e8f0c01c7c3dcb8d3f62d7ff777fce6b", MD5).valid());
+ assertTrue(new PayloadChecksum("e8f0c01c7c3dcb8d3f62d7ff777fce6B", MD5).valid());
+ assertTrue(new PayloadChecksum("e8f0c01c7c3dcb8d", XXHASH64).valid());
+ assertFalse(new PayloadChecksum("-8f0c01c7c3dcb8d3f62d7ff777fce6b", MD5).valid());
}
@Test
@@ -32,4 +34,5 @@ public class RequestValidationTest {
assertTrue(RequestValidation.verifyTimeout(1000L));
assertFalse(RequestValidation.verifyTimeout(-1000L));
}
+
}
diff --git a/config/src/test/java/com/yahoo/vespa/config/protocol/ConfigResponseTest.java b/config/src/test/java/com/yahoo/vespa/config/protocol/ConfigResponseTest.java
index c53a6b5c73d..f00e95ccea2 100644
--- a/config/src/test/java/com/yahoo/vespa/config/protocol/ConfigResponseTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/protocol/ConfigResponseTest.java
@@ -1,6 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.foo.SimpletypesConfig;
import com.yahoo.text.AbstractUtf8Array;
import com.yahoo.text.Utf8Array;
@@ -12,6 +13,8 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.MD5;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.XXHASH64;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -23,14 +26,20 @@ public class ConfigResponseTest {
@Test
public void require_that_slime_response_is_initialized() throws IOException {
ConfigPayload configPayload = ConfigPayload.fromInstance(new SimpletypesConfig(new SimpletypesConfig.Builder()));
- ConfigResponse response = SlimeConfigResponse.fromConfigPayload(configPayload, 3, false, "mymd5");
+ PayloadChecksums payloadChecksums = PayloadChecksums.fromPayload(Payload.from(configPayload));
+ ConfigResponse response =
+ SlimeConfigResponse.fromConfigPayload(configPayload,
+ 3,
+ false,
+ payloadChecksums);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
response.serialize(baos, CompressionType.UNCOMPRESSED);
String payload = baos.toString(StandardCharsets.UTF_8);
assertNotNull(payload);
- assertEquals("{\"boolval\":false,\"doubleval\":0.0,\"enumval\":\"VAL1\",\"intval\":0,\"longval\":0,\"stringval\":\"s\"}", payload.toString());
- assertEquals(response.getGeneration(), 3L);
- assertEquals(response.getConfigMd5(), "mymd5");
+ assertEquals("{\"boolval\":false,\"doubleval\":0.0,\"enumval\":\"VAL1\",\"intval\":0,\"longval\":0,\"stringval\":\"s\"}", payload);
+ assertEquals(3L, response.getGeneration());
+ assertEquals(payloadChecksums.getForType(MD5), response.getPayloadChecksums().getForType(MD5));
+ assertEquals(payloadChecksums.getForType(XXHASH64), response.getPayloadChecksums().getForType(XXHASH64));
baos = new ByteArrayOutputStream();
response.serialize(baos, CompressionType.UNCOMPRESSED);
@@ -42,7 +51,7 @@ public class ConfigResponseTest {
ConfigPayload configPayload = ConfigPayload.fromInstance(new SimpletypesConfig(new SimpletypesConfig.Builder()));
AbstractUtf8Array data = configPayload.toUtf8Array(true);
Utf8Array bytes = new Utf8Array(new LZ4PayloadCompressor().compress(data.wrap()));
- ConfigResponse response = new SlimeConfigResponse(bytes, 3, false, "mymd5", CompressionInfo.create(CompressionType.LZ4, data.getByteLength()));
+ ConfigResponse response = new SlimeConfigResponse(bytes, 3, false, PayloadChecksums.empty(), CompressionInfo.create(CompressionType.LZ4, data.getByteLength()));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
response.serialize(baos, CompressionType.UNCOMPRESSED);
String payload = baos.toString(StandardCharsets.UTF_8);
diff --git a/config/src/test/java/com/yahoo/vespa/config/protocol/JRTConfigRequestFactoryTest.java b/config/src/test/java/com/yahoo/vespa/config/protocol/JRTConfigRequestFactoryTest.java
index c1d381725e4..76af5610bc0 100644
--- a/config/src/test/java/com/yahoo/vespa/config/protocol/JRTConfigRequestFactoryTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/protocol/JRTConfigRequestFactoryTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
import com.yahoo.foo.FunctionTestConfig;
diff --git a/config/src/test/java/com/yahoo/vespa/config/protocol/JRTConfigRequestV3Test.java b/config/src/test/java/com/yahoo/vespa/config/protocol/JRTConfigRequestV3Test.java
index 006a6fc6a0a..f7216058cf5 100644
--- a/config/src/test/java/com/yahoo/vespa/config/protocol/JRTConfigRequestV3Test.java
+++ b/config/src/test/java/com/yahoo/vespa/config/protocol/JRTConfigRequestV3Test.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
import com.yahoo.config.subscription.ConfigSet;
@@ -17,16 +17,19 @@ import com.yahoo.test.ManualClock;
import com.yahoo.vespa.config.ConfigKey;
import com.yahoo.vespa.config.ConfigPayload;
import com.yahoo.vespa.config.ErrorCode;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.vespa.config.RawConfig;
import com.yahoo.vespa.config.TimingValues;
import com.yahoo.vespa.config.util.ConfigUtils;
import org.junit.Before;
import org.junit.Test;
-import java.util.Arrays;
import java.util.Collections;
+import java.util.List;
import java.util.Optional;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.MD5;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.XXHASH64;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -39,16 +42,21 @@ import static org.junit.Assert.assertTrue;
*/
public class JRTConfigRequestV3Test {
+ private static final String [] configDefinition = new String[]{
+ "namespace=my.name.space",
+ "myfield string"
+ };
+
private final Optional<VespaVersion> vespaVersion = Optional.of(VespaVersion.fromString("5.38.24"));
private final String defName = "mydef";
private final String defNamespace = "my.name.space";
private final String hostname = "myhost";
private final String configId = "config/id";
- private final String defMd5 = "595f44fec1e92a71d3e9e77456ba80d1";
+ private final String defMd5 = ConfigUtils.getDefMd5(List.of(configDefinition));
private final long currentGeneration = 3;
private final long timeout = 5000;
private Trace trace ;
- private final String configMd5 = ConfigUtils.getMd5(createPayload().getData());
+ private final PayloadChecksums payloadChecksums = PayloadChecksums.fromPayload(createPayload());
private JRTClientConfigRequest clientReq;
private JRTServerConfigRequest serverReq;
@@ -74,8 +82,12 @@ public class JRTConfigRequestV3Test {
@Test
public void emptypayload() {
ConfigPayload payload = ConfigPayload.empty();
- SlimeConfigResponse response = SlimeConfigResponse.fromConfigPayload(payload, 0, false, ConfigUtils.getMd5(payload));
- serverReq.addOkResponse(serverReq.payloadFromResponse(response), response.getGeneration(), false, response.getConfigMd5());
+ PayloadChecksums payloadChecksums = PayloadChecksums.fromPayload(Payload.from(payload));
+ SlimeConfigResponse response = SlimeConfigResponse.fromConfigPayload(payload,
+ 0,
+ false,
+ payloadChecksums);
+ serverReq.addOkResponse(serverReq.payloadFromResponse(response), response.getGeneration(), false, payloadChecksums);
assertTrue(clientReq.validateResponse());
assertTrue(clientReq.hasUpdatedGeneration());
assertEquals("{}", clientReq.getNewPayload().withCompression(CompressionType.UNCOMPRESSED).getData().toString());
@@ -92,12 +104,13 @@ public class JRTConfigRequestV3Test {
@Test
public void next_request_when_error_is_correct() {
- serverReq.addOkResponse(createPayload(), 999999, false, "newmd5");
+ Payload payload = createPayload();
+ serverReq.addOkResponse(payload, 999999, false, PayloadChecksums.fromPayload(payload));
serverReq.addErrorResponse(ErrorCode.OUTDATED_CONFIG, "error message");
JRTClientConfigRequest next = clientReq.nextRequest(6);
- // Should use config md5 and generation from the request, not the response
- // when there are errors
- assertThat(next.getRequestConfigMd5(), is(clientReq.getRequestConfigMd5()));
+ // Should use config checksums and generation from the request (not the response) when there are errors
+ assertThat(next.getRequestConfigChecksums().getForType(MD5), is(clientReq.getRequestConfigChecksums().getForType(MD5)));
+ assertThat(next.getRequestConfigChecksums().getForType(XXHASH64), is(clientReq.getRequestConfigChecksums().getForType(XXHASH64)));
assertThat(next.getRequestGeneration(), is(clientReq.getRequestGeneration()));
}
@@ -105,12 +118,14 @@ public class JRTConfigRequestV3Test {
public void ok_response_is_added() {
Payload payload = createPayload("vale");
String md5 = ConfigUtils.getMd5(payload.getData());
+ String xxhash64 = ConfigUtils.getXxhash64(payload.getData());
long generation = 4L;
- serverReq.addOkResponse(payload, generation, false, md5);
+ serverReq.addOkResponse(payload, generation, false, PayloadChecksums.fromPayload(payload));
assertTrue(clientReq.validateResponse());
assertThat(clientReq.getNewPayload().withCompression(CompressionType.UNCOMPRESSED).getData().toString(), is(payload.getData().toString()));
assertThat(clientReq.getNewGeneration(), is(4L));
- assertThat(clientReq.getNewConfigMd5(), is(md5));
+ assertThat(clientReq.getNewChecksums().getForType(MD5).asString(), is(md5));
+ assertThat(clientReq.getNewChecksums().getForType(XXHASH64).asString(), is(xxhash64));
assertTrue(clientReq.hasUpdatedConfig());
assertTrue(clientReq.hasUpdatedGeneration());
}
@@ -132,7 +147,7 @@ public class JRTConfigRequestV3Test {
@Test
public void generation_only_is_updated() {
Payload payload = createPayload();
- serverReq.addOkResponse(payload, 4L, false, ConfigUtils.getMd5(payload.getData()));
+ serverReq.addOkResponse(payload, 4L, false, PayloadChecksums.fromPayload(payload));
boolean value = clientReq.validateResponse();
assertTrue(clientReq.errorMessage(), value);
assertFalse(clientReq.hasUpdatedConfig());
@@ -142,7 +157,7 @@ public class JRTConfigRequestV3Test {
@Test
public void nothing_is_updated() {
Payload payload = createPayload();
- serverReq.addOkResponse(payload, currentGeneration, false, configMd5);
+ serverReq.addOkResponse(payload, currentGeneration, false, payloadChecksums);
assertTrue(clientReq.validateResponse());
assertFalse(clientReq.hasUpdatedConfig());
assertFalse(clientReq.hasUpdatedGeneration());
@@ -153,7 +168,7 @@ public class JRTConfigRequestV3Test {
Payload payload = Payload.from(ConfigPayload.empty());
clientReq = createReq(payload);
serverReq = createReq(clientReq.getRequest());
- serverReq.addOkResponse(payload, currentGeneration, false, ConfigUtils.getMd5(payload.getData()));
+ serverReq.addOkResponse(payload, currentGeneration, false, PayloadChecksums.fromPayload(payload));
boolean val = clientReq.validateResponse();
assertTrue(clientReq.errorMessage(), val);
assertFalse(clientReq.hasUpdatedConfig());
@@ -190,7 +205,7 @@ public class JRTConfigRequestV3Test {
@Override
public void createResponse() {
JRTServerConfigRequest serverRequest = createReq(request);
- serverRequest.addOkResponse(createPayload(), currentGeneration, false, configMd5);
+ serverRequest.addOkResponse(createPayload(), currentGeneration, false, payloadChecksums);
}
});
@@ -201,9 +216,10 @@ public class JRTConfigRequestV3Test {
assertTrue(sub.nextConfig(120_0000));
sub.close();
JRTClientConfigRequest nextReq = createReq(sub, Trace.createNew());
- SimpletypesConfig config = sub.getConfigState().getConfig();
- assertThat(nextReq.getRequestConfigMd5(), is(config.getConfigMd5()));
- assertThat(nextReq.getRequestGeneration(), is(currentGeneration));
+ assertEquals(nextReq.getRequestConfigMd5(), sub.getConfigState().getChecksums().getForType(MD5).asString());
+ assertEquals(nextReq.getRequestConfigChecksums().getForType(MD5).asString(), sub.getConfigState().getChecksums().getForType(MD5).asString());
+ assertEquals(nextReq.getRequestConfigChecksums().getForType(XXHASH64).asString(), sub.getConfigState().getChecksums().getForType(XXHASH64).asString());
+ assertEquals(nextReq.getRequestGeneration(), currentGeneration);
}
@Test
@@ -221,13 +237,12 @@ public class JRTConfigRequestV3Test {
@Test
public void parameters_are_validated() {
assertTrue(serverReq.validateParameters());
- assertValidationFail(createReq("35#$#!$@#", defNamespace, defMd5, hostname, configId, configMd5, currentGeneration, timeout, trace));
- assertValidationFail(createReq(defName, "abcd.o#$*(!&$", defMd5, hostname, configId, configMd5, currentGeneration, timeout, trace));
- assertValidationFail(createReq(defName, defNamespace, "34", hostname, configId, "34", currentGeneration, timeout, trace));
- assertValidationFail(createReq(defName, defNamespace, defMd5, hostname, configId, "34", currentGeneration, timeout, trace));
- assertValidationFail(createReq(defName, defNamespace, defMd5, hostname, configId, configMd5, -34, timeout, trace));
- assertValidationFail(createReq(defName, defNamespace, defMd5, hostname, configId, configMd5, currentGeneration, -23, trace));
- assertValidationFail(createReq(defName, defNamespace, defMd5, "", configId, configMd5, currentGeneration, timeout, trace));
+ assertValidationFail(createReq("35#$#!$@#", defNamespace, hostname, configId, payloadChecksums, currentGeneration, timeout, trace));
+ assertValidationFail(createReq(defName, "abcd.o#$*(!&$", hostname, configId, payloadChecksums, currentGeneration, timeout, trace));
+ assertValidationFail(createReq(defName, defNamespace, hostname, configId, PayloadChecksums.from("1234", "opnq"), currentGeneration, timeout, trace));
+ assertValidationFail(createReq(defName, defNamespace, hostname, configId, payloadChecksums, -34, timeout, trace));
+ assertValidationFail(createReq(defName, defNamespace, hostname, configId, payloadChecksums, currentGeneration, -23, trace));
+ assertValidationFail(createReq(defName, defNamespace, "", configId, payloadChecksums, currentGeneration, timeout, trace));
}
private void assertValidationFail(JRTClientConfigRequest req) {
@@ -244,13 +259,13 @@ public class JRTConfigRequestV3Test {
return Payload.from(new ConfigPayload(slime));
}
- private JRTClientConfigRequest createReq(String defName, String defNamespace, String defMd5,
- String hostname, String configId, String configMd5,
+ private JRTClientConfigRequest createReq(String defName, String defNamespace,
+ String hostname, String configId, PayloadChecksums payloadChecksums,
long currentGeneration, long timeout, Trace trace) {
- return JRTClientConfigRequestV3.createWithParams(ConfigKey.createFull(defName, configId, defNamespace, defMd5),
- DefContent.fromList(Arrays.asList("namespace=my.name.space", "myfield string")),
+ return JRTClientConfigRequestV3.createWithParams(ConfigKey.createFull(defName, configId, defNamespace),
+ DefContent.fromList(List.of(configDefinition)),
hostname,
- configMd5,
+ payloadChecksums,
currentGeneration,
timeout,
trace,
@@ -273,43 +288,36 @@ public class JRTConfigRequestV3Test {
private JRTClientConfigRequest createReq() {
trace = Trace.createNew(3, new ManualClock());
trace.trace(1, "hei");
- return createReq(defName, defNamespace, defMd5, hostname, configId, configMd5, currentGeneration, timeout, trace);
+ return createReq(defName, defNamespace, hostname, configId, payloadChecksums, currentGeneration, timeout, trace);
}
private JRTClientConfigRequest createReq(Payload payload) {
trace = Trace.createNew(3, new ManualClock());
trace.trace(1, "hei");
- return createReq(defName, defNamespace, defMd5, hostname, configId, ConfigUtils.getMd5(payload.getData()), currentGeneration, timeout, trace);
+ return createReq(defName, defNamespace, hostname, configId, PayloadChecksums.fromPayload(payload), currentGeneration, timeout, trace);
}
private void request_is_parsed_base() {
- String [] expectedContent = new String[]{
- "namespace=my.name.space",
- "myfield string"
- };
System.out.println(serverReq.toString());
assertThat(serverReq.getConfigKey().getName(), is(defName));
assertThat(serverReq.getConfigKey().getNamespace(), is(defNamespace));
- assertThat(serverReq.getConfigKey().getMd5(), is(defMd5));
+ assertThat(serverReq.getRequestDefMd5(), is(defMd5));
assertThat(serverReq.getConfigKey().getConfigId(), is(configId));
- assertThat(serverReq.getDefContent().asStringArray(), is(expectedContent));
+ assertThat(serverReq.getDefContent().asStringArray(), is(configDefinition));
assertFalse(serverReq.noCache());
assertTrue(serverReq.getRequestTrace().toString().contains("hi"));
- assertThat(serverReq.getRequestConfigMd5(), is(configMd5));
+ assertThat(serverReq.getRequestConfigChecksums().getForType(MD5), is(payloadChecksums.getForType(MD5)));
+ assertThat(serverReq.getRequestConfigChecksums().getForType(XXHASH64), is(payloadChecksums.getForType(XXHASH64)));
assertThat(serverReq.getRequestGeneration(), is(currentGeneration));
}
private JRTServerConfigRequest next_request_is_correct_base() {
- String [] expectedContent = new String[]{
- "namespace=my.name.space",
- "myfield string"
- };
JRTServerConfigRequest next = createReq(clientReq.nextRequest(6).getRequest());
assertThat(next.getConfigKey().getName(), is(defName));
assertThat(next.getConfigKey().getNamespace(), is(defNamespace));
- assertThat(next.getConfigKey().getMd5(), is(defMd5));
+ assertThat(next.getRequestDefMd5(), is(defMd5));
assertThat(next.getConfigKey().getConfigId(), is(configId));
- assertThat(next.getDefContent().asStringArray(), is(expectedContent));
+ assertThat(next.getDefContent().asStringArray(), is(configDefinition));
assertFalse(next.noCache());
assertThat(next.getTimeout(), is(6L));
assertThat(next.getTimeout(), is(6L));
diff --git a/config/src/test/java/com/yahoo/vespa/config/protocol/PayloadTest.java b/config/src/test/java/com/yahoo/vespa/config/protocol/PayloadTest.java
index c52245ecb35..8d895d0e2b8 100644
--- a/config/src/test/java/com/yahoo/vespa/config/protocol/PayloadTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/protocol/PayloadTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
import com.google.common.testing.EqualsTester;
diff --git a/config/src/test/java/com/yahoo/vespa/config/protocol/SlimeTraceSerializerTest.java b/config/src/test/java/com/yahoo/vespa/config/protocol/SlimeTraceSerializerTest.java
index 22baab85c1c..3525809a447 100644
--- a/config/src/test/java/com/yahoo/vespa/config/protocol/SlimeTraceSerializerTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/protocol/SlimeTraceSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
import com.yahoo.slime.JsonFormat;
diff --git a/config/src/test/java/com/yahoo/vespa/config/protocol/TraceTest.java b/config/src/test/java/com/yahoo/vespa/config/protocol/TraceTest.java
index 4b191d85121..25a65acc731 100644
--- a/config/src/test/java/com/yahoo/vespa/config/protocol/TraceTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/protocol/TraceTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.protocol;
import com.yahoo.slime.Slime;
diff --git a/config/src/test/java/com/yahoo/vespa/config/util/ConfigUtilsTest.java b/config/src/test/java/com/yahoo/vespa/config/util/ConfigUtilsTest.java
index 0276f3c4f1c..2d63c125706 100644
--- a/config/src/test/java/com/yahoo/vespa/config/util/ConfigUtilsTest.java
+++ b/config/src/test/java/com/yahoo/vespa/config/util/ConfigUtilsTest.java
@@ -1,9 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.util;
import com.yahoo.collections.Tuple2;
import com.yahoo.foo.SimpletypesConfig;
import com.yahoo.io.IOUtils;
+import com.yahoo.text.Utf8;
+import com.yahoo.text.Utf8Array;
import com.yahoo.vespa.config.ConfigDefinitionKey;
import com.yahoo.vespa.config.ConfigPayload;
import org.junit.Test;
@@ -14,9 +16,8 @@ import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.fail;
/**
@@ -39,7 +40,7 @@ public class ConfigUtilsTest {
lines.add("double b default=1.0 range = [,]");
lines.add("collectiontype enum { SINGLE, ARRAY, WEIGHTEDSET } default=SINGLE");
- assertThat(ConfigUtils.getDefMd5(lines), is(expectedMd5));
+ assertEquals(expectedMd5, ConfigUtils.getDefMd5(lines));
lines.clear();
@@ -55,79 +56,90 @@ public class ConfigUtilsTest {
"100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000]");
// check that space before commas are treated correctly
lines.add("collectiontype enum { SINGLE , ARRAY , WEIGHTEDSET } default=SINGLE");
- assertThat(ConfigUtils.getDefMd5(lines), is(expectedMd5));
+ assertEquals(expectedMd5, ConfigUtils.getDefMd5(lines));
}
@Test
- public void testGetMd5WithComment() {
+ public void testGetChecksumWithComment() {
String expectedMd5 = "4395db1dfbd977c4d74190d2d23396e2";
+ String expectedXxhash64 = "4395db1dfbd977c4d74190d2d23396e2";
List<String> lines = new ArrayList<>();
// Create normalized lines
lines.add("foo=\"1#hello\"");
lines.add(""); //empty line should not affect md5sum
- assertThat(getMd5(lines), is(expectedMd5));
+ assertEquals(expectedMd5, getMd5(lines));
+ assertEquals(expectedXxhash64, getMd5(lines));
lines.clear();
// Check that comment character in string leads to a different md5 than the original
lines.add("foo=\"1#hello and some more\"");
String md5 = getMd5(lines);
- assertThat(md5, is(not(expectedMd5)));
+ String xxhash64 = getXxhash64(lines);
+ assertNotEquals(expectedMd5, md5);
+ assertNotEquals(expectedXxhash64, xxhash64);
- // Check that added characters aft comment character in string leads to a different md5 than above
+ // Check that added characters after comment character in string leads to a different md5 than above
lines.add("foo=\"1#hello and some more and even more\"");
- assertThat(getMd5(lines), is(not(md5)));
+ assertNotEquals(md5, getMd5(lines));
+ assertNotEquals(xxhash64, getXxhash64(lines));
}
@Test
public void testGetMd5OfPayload() {
String expectedMd5 = "c9246ed8c8ab55b1c463c501c84075e6";
+ String expectedXxhash64 = "b89f402d53626490";
String expectedChangedMd5 = "f6f81062ef5f024f1912798490ba7dfc";
+ String expectedChangedXxhash64 = "e8c361d384889610";
+
ConfigPayload payload = ConfigPayload.fromInstance(new SimpletypesConfig(new SimpletypesConfig.Builder()));
- System.out.println(payload);
- assertThat(ConfigUtils.getMd5(payload), is(expectedMd5));
+ assertEquals(expectedMd5, ConfigUtils.getMd5(payload));
+ assertEquals(expectedXxhash64, ConfigUtils.getXxhash64(payload));
payload.getSlime().get().setString("fabio", "bar");
- System.out.println(payload);
- assertThat(ConfigUtils.getMd5(payload), is(expectedChangedMd5));
+ assertEquals(expectedChangedMd5, ConfigUtils.getMd5(payload));
+ assertEquals(expectedChangedXxhash64, ConfigUtils.getXxhash64(payload));
}
@Test
public void testGetMd5OfString() {
String expectedMd5 = "c9246ed8c8ab55b1c463c501c84075e6";
+ String expectedXxhash64 = "b89f402d53626490";
String expectedChangedMd5 = "f6f81062ef5f024f1912798490ba7dfc";
+ String expectedChangedXxhash64 = "e8c361d384889610";
+
ConfigPayload payload = ConfigPayload.fromInstance(new SimpletypesConfig(new SimpletypesConfig.Builder()));
- System.out.println(payload);
- assertThat(ConfigUtils.getMd5(payload.toString(true)), is(expectedMd5));
+ assertEquals(expectedMd5, ConfigUtils.getMd5(payload.toString(true)));
+ assertEquals(expectedXxhash64, ConfigUtils.getXxhash64(new Utf8Array(Utf8.toBytes(payload.toString(true)))));
payload.getSlime().get().setString("fabio", "bar");
- System.out.println(payload);
- assertThat(ConfigUtils.getMd5(payload.toString(true)), is(expectedChangedMd5));
+ assertEquals(expectedChangedMd5, ConfigUtils.getMd5(payload.toString(true)));
+ assertEquals(expectedChangedXxhash64, ConfigUtils.getXxhash64(new Utf8Array(Utf8.toBytes(payload.toString(true)))));
}
@Test
public void testStripSpaces() {
- assertThat(ConfigUtils.stripSpaces("a b"), is("a b"));
- assertThat(ConfigUtils.stripSpaces("\"a b\""), is("\"a b\""));
- assertThat(ConfigUtils.stripSpaces("a b \"a b\""), is("a b \"a b\""));
- assertThat(ConfigUtils.stripSpaces("a b"), is("a b"));
+ assertEquals("a b", ConfigUtils.stripSpaces("a b"));
+ assertEquals("\"a b\"", ConfigUtils.stripSpaces("\"a b\""));
+ assertEquals("a b \"a b\"", ConfigUtils.stripSpaces("a b \"a b\""));
+ assertEquals("a b", ConfigUtils.stripSpaces("a b"));
}
@Test
public void testGetNamespace() {
StringReader reader = new StringReader("version=1\nnamespace=a\nint a default=0");
- assertThat(ConfigUtils.getDefNamespace(reader), is("a"));
+ assertEquals("a", ConfigUtils.getDefNamespace(reader));
// namespace first
reader = new StringReader("namespace=a\nversion=1\nint a default=0");
- assertThat(ConfigUtils.getDefNamespace(reader), is("a"));
+ assertEquals("a", ConfigUtils.getDefNamespace(reader));
// No namespace
reader = new StringReader("version=1\nint a default=0");
- assertThat(ConfigUtils.getDefNamespace(reader), is(""));
+ assertEquals("", ConfigUtils.getDefNamespace(reader));
// comment lines
reader = new StringReader("#comment\nversion=1\n#comment2\nint a default=0");
- assertThat(ConfigUtils.getDefNamespace(reader), is(""));
+ assertEquals("", ConfigUtils.getDefNamespace(reader));
try {
ConfigUtils.getDefNamespace(null);
@@ -141,46 +153,46 @@ public class ConfigUtilsTest {
public void testNamespaceDotNames() {
String namespaceDotName = "foo.bar";
Tuple2<String, String> tuple = ConfigUtils.getNameAndNamespaceFromString(namespaceDotName);
- assertThat(tuple.first, is("bar"));
- assertThat(tuple.second, is("foo"));
+ assertEquals("bar", tuple.first);
+ assertEquals("foo", tuple.second);
namespaceDotName = "foo.baz.bar";
tuple = ConfigUtils.getNameAndNamespaceFromString(namespaceDotName);
- assertThat(tuple.first, is("bar"));
- assertThat(tuple.second, is("foo.baz"));
+ assertEquals("bar", tuple.first);
+ assertEquals("foo.baz", tuple.second);
// no namespace
namespaceDotName = "bar";
tuple = ConfigUtils.getNameAndNamespaceFromString(namespaceDotName);
- assertThat(tuple.first, is("bar"));
- assertThat(tuple.second, is(""));
+ assertEquals("bar", tuple.first);
+ assertEquals("", tuple.second);
// no name
namespaceDotName = "foo.";
tuple = ConfigUtils.getNameAndNamespaceFromString(namespaceDotName);
- assertThat(tuple.first, is(""));
- assertThat(tuple.second, is("foo"));
+ assertEquals("", tuple.first);
+ assertEquals("foo", tuple.second);
// no namespace
namespaceDotName = ".bar";
tuple = ConfigUtils.getNameAndNamespaceFromString(namespaceDotName);
- assertThat(tuple.first, is("bar"));
- assertThat(tuple.second, is(""));
+ assertEquals("bar", tuple.first);
+ assertEquals("", tuple.second);
}
@Test
public void testCreateConfigDefinitionKeyFromZKString() {
ConfigDefinitionKey def1 = ConfigUtils.createConfigDefinitionKeyFromZKString("bar.foo,1");
- assertThat(def1.getName(), is("foo"));
- assertThat(def1.getNamespace(), is("bar"));
+ assertEquals("foo", def1.getName());
+ assertEquals("bar", def1.getNamespace());
ConfigDefinitionKey def2 = ConfigUtils.createConfigDefinitionKeyFromZKString("bar.foo,");
- assertThat(def2.getName(), is("foo"));
- assertThat(def2.getNamespace(), is("bar"));
+ assertEquals("foo", def2.getName());
+ assertEquals("bar", def2.getNamespace());
ConfigDefinitionKey def3 = ConfigUtils.createConfigDefinitionKeyFromZKString("bar.foo");
- assertThat(def3.getName(), is("foo"));
- assertThat(def3.getNamespace(), is("bar"));
+ assertEquals("foo", def3.getName());
+ assertEquals("bar", def3.getNamespace());
}
@Test
@@ -192,8 +204,8 @@ public class ConfigUtilsTest {
e.printStackTrace();
fail();
}
- assertThat(def.getName(), is("app"));
- assertThat(def.getNamespace(), is("foo"));
+ assertEquals("app", def.getName());
+ assertEquals("foo", def.getNamespace());
try {
def = ConfigUtils.createConfigDefinitionKeyFromDefFile(new File("src/test/resources/configs/def-files/testnamespace.def"));
@@ -201,8 +213,8 @@ public class ConfigUtilsTest {
e.printStackTrace();
fail();
}
- assertThat(def.getName(), is("testnamespace"));
- assertThat(def.getNamespace(), is("foo"));
+ assertEquals("testnamespace", def.getName());
+ assertEquals("foo", def.getNamespace());
try {
byte[] content = IOUtils.readFileBytes(new File("src/test/resources/configs/def-files/app.def"));
@@ -210,8 +222,8 @@ public class ConfigUtilsTest {
} catch (IOException e) {
fail();
}
- assertThat(def.getName(), is("app"));
- assertThat(def.getNamespace(), is("foo"));
+ assertEquals("app", def.getName());
+ assertEquals("foo", def.getNamespace());
try {
byte[] content = IOUtils.readFileBytes(new File("src/test/resources/configs/def-files-nogen/app.def"));
@@ -219,8 +231,8 @@ public class ConfigUtilsTest {
} catch (IOException e) {
fail();
}
- assertThat(def.getName(), is("app"));
- assertThat(def.getNamespace(), is("mynamespace"));
+ assertEquals("app", def.getName());
+ assertEquals("mynamespace", def.getNamespace());
}
/**
@@ -231,6 +243,21 @@ public class ConfigUtilsTest {
* @return the Md5 hash of the list, with lowercase letters
*/
private static String getMd5(List<String> lines) {
+ return ConfigUtils.getMd5(skipEmptyLines(lines));
+ }
+
+ /**
+ * Computes xxhash64 of a list of strings. The only change to input lines before
+ * computing xxhash64 is to skip empty lines.
+ *
+ * @param lines A list of lines
+ * @return the xxhash64 of the list, with lowercase letters
+ */
+ private static String getXxhash64(List<String> lines) {
+ return ConfigUtils.getXxhash64(new Utf8Array(Utf8.toBytes(skipEmptyLines(lines))));
+ }
+
+ private static String skipEmptyLines(List<String> lines) {
StringBuilder sb = new StringBuilder();
for (String line : lines) {
// Remove empty lines
@@ -239,7 +266,7 @@ public class ConfigUtilsTest {
sb.append(line).append("\n");
}
}
- return ConfigUtils.getMd5(sb.toString());
+ return sb.toString();
}
}
diff --git a/config/src/test/java/com/yahoo/vespa/config/xml/whitespace-test.xml b/config/src/test/java/com/yahoo/vespa/config/xml/whitespace-test.xml
index d7069c498ff..925c00f7209 100644
--- a/config/src/test/java/com/yahoo/vespa/config/xml/whitespace-test.xml
+++ b/config/src/test/java/com/yahoo/vespa/config/xml/whitespace-test.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<config name="string">
<stringVal> This is a string
that contains different kinds of whitespace </stringVal>
diff --git a/config/src/test/resources/configdefinitions/bar.def b/config/src/test/resources/configdefinitions/bar.def
index 8e97154d3d5..58afb03d4a4 100644
--- a/config/src/test/resources/configdefinitions/bar.def
+++ b/config/src/test/resources/configdefinitions/bar.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config
barValue string default="defaultBar"
diff --git a/config/src/test/resources/configdefinitions/baz.def b/config/src/test/resources/configdefinitions/baz.def
index ff3101e52a6..a6f716c3a06 100644
--- a/config/src/test/resources/configdefinitions/baz.def
+++ b/config/src/test/resources/configdefinitions/baz.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config
bazValue string default="defaultBaz"
diff --git a/config/src/test/resources/configdefinitions/bootstrap.def b/config/src/test/resources/configdefinitions/bootstrap.def
index f0e5b3db71a..f6e5da51cf2 100644
--- a/config/src/test/resources/configdefinitions/bootstrap.def
+++ b/config/src/test/resources/configdefinitions/bootstrap.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config
component[].name string
diff --git a/config/src/test/resources/configdefinitions/foo.def b/config/src/test/resources/configdefinitions/foo.def
index d7357822e7e..9d18814a38a 100644
--- a/config/src/test/resources/configdefinitions/foo.def
+++ b/config/src/test/resources/configdefinitions/foo.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config
fooValue string
diff --git a/config/src/test/resources/configdefinitions/foobar.def b/config/src/test/resources/configdefinitions/foobar.def
index 59f0bbd9913..4cea6fe6e4b 100644
--- a/config/src/test/resources/configdefinitions/foobar.def
+++ b/config/src/test/resources/configdefinitions/foobar.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config
fooBarValue string default="defaultFooBar"
diff --git a/config/src/test/resources/configdefinitions/foodefault.def b/config/src/test/resources/configdefinitions/foodefault.def
index 4b9014b9274..a83ba6cfaec 100644
--- a/config/src/test/resources/configdefinitions/foodefault.def
+++ b/config/src/test/resources/configdefinitions/foodefault.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config
fooValue string default = "per"
diff --git a/config/src/test/resources/configdefinitions/function-test.def b/config/src/test/resources/configdefinitions/function-test.def
index 2e18fb2ee8c..5b26938bc1a 100644
--- a/config/src/test/resources/configdefinitions/function-test.def
+++ b/config/src/test/resources/configdefinitions/function-test.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# This def file should test most aspects of def files that makes a difference
# for the autogenerated config classes. The goal is to trigger all blocks of
diff --git a/config/src/test/resources/configdefinitions/motd.def b/config/src/test/resources/configdefinitions/motd.def
index 95ac367560d..ecc94b509ec 100644
--- a/config/src/test/resources/configdefinitions/motd.def
+++ b/config/src/test/resources/configdefinitions/motd.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# This def file should test most aspects of def files that makes a difference
# for the autogenerated config classes. The goal is to trigger all blocks of
diff --git a/config/src/test/resources/configdefinitions/my.def b/config/src/test/resources/configdefinitions/my.def
index 3999cc46273..554dcc261c6 100644
--- a/config/src/test/resources/configdefinitions/my.def
+++ b/config/src/test/resources/configdefinitions/my.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config
myField string
diff --git a/config/src/test/resources/configs/def-files-nogen/app.def b/config/src/test/resources/configs/def-files-nogen/app.def
index 6082072695a..59355d15c80 100644
--- a/config/src/test/resources/configs/def-files-nogen/app.def
+++ b/config/src/test/resources/configs/def-files-nogen/app.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=mynamespace
message string default="Hello!"
diff --git a/config/src/test/resources/configs/def-files/app.def b/config/src/test/resources/configs/def-files/app.def
index 37c3dd75e26..4ba893c32eb 100644
--- a/config/src/test/resources/configs/def-files/app.def
+++ b/config/src/test/resources/configs/def-files/app.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=foo
message string default="Hello!"
diff --git a/config/src/test/resources/configs/def-files/arraytypes.def b/config/src/test/resources/configs/def-files/arraytypes.def
index ad18c4e5386..cffc68de708 100644
--- a/config/src/test/resources/configs/def-files/arraytypes.def
+++ b/config/src/test/resources/configs/def-files/arraytypes.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Config containing only simple array types that can be used for testing
# individual types in detail.
namespace=foo
diff --git a/config/src/test/resources/configs/def-files/defaulttest.def b/config/src/test/resources/configs/def-files/defaulttest.def
index fa8005b77c3..f5aa0b0649e 100644
--- a/config/src/test/resources/configs/def-files/defaulttest.def
+++ b/config/src/test/resources/configs/def-files/defaulttest.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=foo
nondefaultstring string
diff --git a/config/src/test/resources/configs/def-files/function-test.def b/config/src/test/resources/configs/def-files/function-test.def
index 24eeb81ab7a..4c4cb6bf08b 100644
--- a/config/src/test/resources/configs/def-files/function-test.def
+++ b/config/src/test/resources/configs/def-files/function-test.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# This def file should test most aspects of def files that makes a difference
# for the autogenerated config classes. The goal is to trigger all blocks of
diff --git a/config/src/test/resources/configs/def-files/int.def b/config/src/test/resources/configs/def-files/int.def
index c1a1241c413..704d0a71e79 100755
--- a/config/src/test/resources/configs/def-files/int.def
+++ b/config/src/test/resources/configs/def-files/int.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=foo
intVal int default=1
diff --git a/config/src/test/resources/configs/def-files/maptypes.def b/config/src/test/resources/configs/def-files/maptypes.def
index 0e39c7ccdb9..4149317c70c 100644
--- a/config/src/test/resources/configs/def-files/maptypes.def
+++ b/config/src/test/resources/configs/def-files/maptypes.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Config containing only structs in various forms
namespace=foo
diff --git a/config/src/test/resources/configs/def-files/namespace.def b/config/src/test/resources/configs/def-files/namespace.def
index a8b55fb315e..1a28e0fbb51 100644
--- a/config/src/test/resources/configs/def-files/namespace.def
+++ b/config/src/test/resources/configs/def-files/namespace.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=myproject.config
diff --git a/config/src/test/resources/configs/def-files/simpletypes.def b/config/src/test/resources/configs/def-files/simpletypes.def
index 2603e2f4100..0dd1f5df784 100644
--- a/config/src/test/resources/configs/def-files/simpletypes.def
+++ b/config/src/test/resources/configs/def-files/simpletypes.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=foo
# Config containing only simple leaf types with default values, that can be used
# for testing individual types in detail.
diff --git a/config/src/test/resources/configs/def-files/specialtypes.def b/config/src/test/resources/configs/def-files/specialtypes.def
index 06fdd0d4348..079d55fd7c9 100644
--- a/config/src/test/resources/configs/def-files/specialtypes.def
+++ b/config/src/test/resources/configs/def-files/specialtypes.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=foo
myfile file
myref reference
diff --git a/config/src/test/resources/configs/def-files/string.def b/config/src/test/resources/configs/def-files/string.def
index 78596515b7c..a3a9ae290b1 100755
--- a/config/src/test/resources/configs/def-files/string.def
+++ b/config/src/test/resources/configs/def-files/string.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=foo
stringVal string default="_default_"
diff --git a/config/src/test/resources/configs/def-files/structtypes.def b/config/src/test/resources/configs/def-files/structtypes.def
index fe9d879fb64..df815307b9d 100644
--- a/config/src/test/resources/configs/def-files/structtypes.def
+++ b/config/src/test/resources/configs/def-files/structtypes.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Config containing only structs in various forms
namespace=foo
diff --git a/config/src/test/resources/configs/def-files/test-nodefs.def b/config/src/test/resources/configs/def-files/test-nodefs.def
index e3b700c5732..dcf541d952d 100644
--- a/config/src/test/resources/configs/def-files/test-nodefs.def
+++ b/config/src/test/resources/configs/def-files/test-nodefs.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=foo
# test config vars with no defaults
diff --git a/config/src/test/resources/configs/def-files/test-nonstring.def b/config/src/test/resources/configs/def-files/test-nonstring.def
index eaa6fafe87d..8d759607462 100644
--- a/config/src/test/resources/configs/def-files/test-nonstring.def
+++ b/config/src/test/resources/configs/def-files/test-nonstring.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=foo
# Test non-string config vars with defaults
diff --git a/config/src/test/resources/configs/def-files/test-reference.def b/config/src/test/resources/configs/def-files/test-reference.def
index b5bbb5f4462..d1aa8223ab2 100644
--- a/config/src/test/resources/configs/def-files/test-reference.def
+++ b/config/src/test/resources/configs/def-files/test-reference.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=foo
configId reference default=":parent:"
diff --git a/config/src/test/resources/configs/def-files/testnamespace.def b/config/src/test/resources/configs/def-files/testnamespace.def
index 6e58c691097..7749e417b2d 100644
--- a/config/src/test/resources/configs/def-files/testnamespace.def
+++ b/config/src/test/resources/configs/def-files/testnamespace.def
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=foo
basicStruct.stringVal string
diff --git a/config/src/test/resources/configs/def-files/unicode.def b/config/src/test/resources/configs/def-files/unicode.def
index 493e3e37630..f7716a0870c 100644
--- a/config/src/test/resources/configs/def-files/unicode.def
+++ b/config/src/test/resources/configs/def-files/unicode.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=foo
unicodestring1 string
diff --git a/config/src/test/resources/configs/function-test/defaultvalues.xml b/config/src/test/resources/configs/function-test/defaultvalues.xml
index c196c07e4a9..af2b12f866a 100644
--- a/config/src/test/resources/configs/function-test/defaultvalues.xml
+++ b/config/src/test/resources/configs/function-test/defaultvalues.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<config name="function-test">
<bool_val>false</bool_val>
<int_val>5</int_val>
diff --git a/config/src/tests/api/CMakeLists.txt b/config/src/tests/api/CMakeLists.txt
index dbe22f8bf2c..98cb662d468 100644
--- a/config/src/tests/api/CMakeLists.txt
+++ b/config/src/tests/api/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_api_test_app TEST
SOURCES
api.cpp
diff --git a/config/src/tests/api/api.cpp b/config/src/tests/api/api.cpp
index a48f36aea9a..9cf6ea610bf 100644
--- a/config/src/tests/api/api.cpp
+++ b/config/src/tests/api/api.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/config.h>
#include <vespa/config/common/configcontext.h>
diff --git a/config/src/tests/configagent/CMakeLists.txt b/config/src/tests/configagent/CMakeLists.txt
index dd67034c488..9cfaab5872c 100644
--- a/config/src/tests/configagent/CMakeLists.txt
+++ b/config/src/tests/configagent/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_configagent_test_app TEST
SOURCES
configagent.cpp
diff --git a/config/src/tests/configagent/configagent.cpp b/config/src/tests/configagent/configagent.cpp
index d6766cce822..3fbbee8c601 100644
--- a/config/src/tests/configagent/configagent.cpp
+++ b/config/src/tests/configagent/configagent.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/config.h>
#include <vespa/config/raw/rawsource.h>
@@ -31,12 +31,12 @@ class MyConfigResponse : public ConfigResponse
{
public:
MyConfigResponse(const ConfigKey & key, const ConfigValue & value, bool valid, int64_t timestamp,
- const vespalib::string & md5, const std::string & errorMsg, int errorC0de, bool iserror)
+ const vespalib::string & xxhash64, const std::string & errorMsg, int errorC0de, bool iserror)
: _key(key),
_value(value),
_fillCalled(false),
_valid(valid),
- _state(md5, timestamp, false),
+ _state(xxhash64, timestamp, false),
_errorMessage(errorMsg),
_errorCode(errorC0de),
_isError(iserror)
@@ -64,9 +64,9 @@ public:
Trace _trace;
- static ConfigResponse::UP createOKResponse(const ConfigKey & key, const ConfigValue & value, uint64_t timestamp = 10, const vespalib::string & md5 = "a")
+ static ConfigResponse::UP createOKResponse(const ConfigKey & key, const ConfigValue & value, uint64_t timestamp = 10, const vespalib::string & xxhash64 = "a")
{
- return std::make_unique<MyConfigResponse>(key, value, true, timestamp, md5, "", 0, false);
+ return std::make_unique<MyConfigResponse>(key, value, true, timestamp, xxhash64, "", 0, false);
}
static ConfigResponse::UP createServerErrorResponse(const ConfigKey & key, const ConfigValue & value)
@@ -114,11 +114,11 @@ private:
};
-ConfigValue createValue(const std::string & myField, const std::string & md5)
+ConfigValue createValue(const std::string & myField, const std::string & xxhash64)
{
std::vector< vespalib::string > lines;
lines.push_back("myField \"" + myField + "\"");
- return ConfigValue(lines, md5);
+ return ConfigValue(lines, xxhash64);
}
static TimingValues testTimingValues(
@@ -139,7 +139,7 @@ TEST("require that agent returns correct values") {
ASSERT_EQUAL(500u, handler.getTimeout());
ASSERT_EQUAL(0u, handler.getWaitTime());
ConfigState cs;
- ASSERT_EQUAL(cs.md5, handler.getConfigState().md5);
+ ASSERT_EQUAL(cs.xxhash64, handler.getConfigState().xxhash64);
ASSERT_EQUAL(cs.generation, handler.getConfigState().generation);
ASSERT_EQUAL(cs.applyOnRestart, handler.getConfigState().applyOnRestart);
}
@@ -167,7 +167,7 @@ TEST("require that important(the change) request is delivered to holder even if
FRTConfigAgent handler(latch, testTimingValues);
handler.handleResponse(MyConfigRequest(testKey),
- MyConfigResponse::createOKResponse(testKey, testValue1, 1, testValue1.getMd5()));
+ MyConfigResponse::createOKResponse(testKey, testValue1, 1, testValue1.getXxhash64()));
ASSERT_TRUE(latch->poll());
ConfigUpdate::UP update(latch->provide());
ASSERT_TRUE(update);
@@ -176,9 +176,9 @@ TEST("require that important(the change) request is delivered to holder even if
ASSERT_EQUAL("l33t", cfg.myField);
handler.handleResponse(MyConfigRequest(testKey),
- MyConfigResponse::createOKResponse(testKey, testValue2, 2, testValue2.getMd5()));
+ MyConfigResponse::createOKResponse(testKey, testValue2, 2, testValue2.getXxhash64()));
handler.handleResponse(MyConfigRequest(testKey),
- MyConfigResponse::createOKResponse(testKey, testValue2, 3, testValue2.getMd5()));
+ MyConfigResponse::createOKResponse(testKey, testValue2, 3, testValue2.getXxhash64()));
ASSERT_TRUE(latch->poll());
update = latch->provide();
ASSERT_TRUE(update);
diff --git a/config/src/tests/configfetcher/CMakeLists.txt b/config/src/tests/configfetcher/CMakeLists.txt
index 95d1225a924..1fad6b5852c 100644
--- a/config/src/tests/configfetcher/CMakeLists.txt
+++ b/config/src/tests/configfetcher/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_configfetcher_test_app TEST
SOURCES
configfetcher.cpp
diff --git a/config/src/tests/configfetcher/configfetcher.cpp b/config/src/tests/configfetcher/configfetcher.cpp
index 3ac2a232f93..4782557338d 100644
--- a/config/src/tests/configfetcher/configfetcher.cpp
+++ b/config/src/tests/configfetcher/configfetcher.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/helper/configfetcher.h>
#include <vespa/config/common/configcontext.h>
diff --git a/config/src/tests/configformat/CMakeLists.txt b/config/src/tests/configformat/CMakeLists.txt
index 3223a0c38af..3d9ffce6923 100644
--- a/config/src/tests/configformat/CMakeLists.txt
+++ b/config/src/tests/configformat/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_configformat_test_app TEST
SOURCES
configformat.cpp
diff --git a/config/src/tests/configformat/configformat.cpp b/config/src/tests/configformat/configformat.cpp
index 70ae6ba68c8..6623e2ee254 100644
--- a/config/src/tests/configformat/configformat.cpp
+++ b/config/src/tests/configformat/configformat.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/config.h>
#include <vespa/config/print/fileconfigformatter.h>
diff --git a/config/src/tests/configgen/CMakeLists.txt b/config/src/tests/configgen/CMakeLists.txt
index 663e265530f..bed21efbcbe 100644
--- a/config/src/tests/configgen/CMakeLists.txt
+++ b/config/src/tests/configgen/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_configgen_test_app TEST
SOURCES
configgen.cpp
diff --git a/config/src/tests/configgen/configgen.cpp b/config/src/tests/configgen/configgen.cpp
index 39ce2e100f6..b7113dec972 100644
--- a/config/src/tests/configgen/configgen.cpp
+++ b/config/src/tests/configgen/configgen.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/config.h>
diff --git a/config/src/tests/configgen/map_inserter.cpp b/config/src/tests/configgen/map_inserter.cpp
index ce46e77cd19..2a37d401792 100644
--- a/config/src/tests/configgen/map_inserter.cpp
+++ b/config/src/tests/configgen/map_inserter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/configgen/map_inserter.h>
diff --git a/config/src/tests/configgen/value_converter.cpp b/config/src/tests/configgen/value_converter.cpp
index 8c969b77271..53a9b87d691 100644
--- a/config/src/tests/configgen/value_converter.cpp
+++ b/config/src/tests/configgen/value_converter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/configgen/value_converter.h>
#include <vespa/config/common/exceptions.h>
diff --git a/config/src/tests/configgen/vector_inserter.cpp b/config/src/tests/configgen/vector_inserter.cpp
index 6b22ef259f5..b8611317650 100644
--- a/config/src/tests/configgen/vector_inserter.cpp
+++ b/config/src/tests/configgen/vector_inserter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/configgen/vector_inserter.h>
diff --git a/config/src/tests/configholder/CMakeLists.txt b/config/src/tests/configholder/CMakeLists.txt
index f8688bd042d..5dc979bcd57 100644
--- a/config/src/tests/configholder/CMakeLists.txt
+++ b/config/src/tests/configholder/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_configholder_test_app TEST
SOURCES
configholder.cpp
diff --git a/config/src/tests/configholder/configholder.cpp b/config/src/tests/configholder/configholder.cpp
index 1f2c1f27df6..db32cc2e309 100644
--- a/config/src/tests/configholder/configholder.cpp
+++ b/config/src/tests/configholder/configholder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/common/configholder.h>
#include <thread>
diff --git a/config/src/tests/configmanager/CMakeLists.txt b/config/src/tests/configmanager/CMakeLists.txt
index 23773bb21d5..8e369995d7b 100644
--- a/config/src/tests/configmanager/CMakeLists.txt
+++ b/config/src/tests/configmanager/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_configmanager_test_app TEST
SOURCES
configmanager.cpp
diff --git a/config/src/tests/configmanager/configmanager.cpp b/config/src/tests/configmanager/configmanager.cpp
index 2a7e4999829..2cc5d4fad4f 100644
--- a/config/src/tests/configmanager/configmanager.cpp
+++ b/config/src/tests/configmanager/configmanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/noncopyable.hpp>
diff --git a/config/src/tests/configparser/CMakeLists.txt b/config/src/tests/configparser/CMakeLists.txt
index 19acdfaefa4..852238135ab 100644
--- a/config/src/tests/configparser/CMakeLists.txt
+++ b/config/src/tests/configparser/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_configparser_test_app TEST
SOURCES
configparser.cpp
diff --git a/config/src/tests/configparser/configparser.cpp b/config/src/tests/configparser/configparser.cpp
index 392cf8d9aa3..965c2a5a312 100644
--- a/config/src/tests/configparser/configparser.cpp
+++ b/config/src/tests/configparser/configparser.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/config.h>
#include <vespa/config/common/configparser.h>
diff --git a/config/src/tests/configretriever/CMakeLists.txt b/config/src/tests/configretriever/CMakeLists.txt
index 19e7f77d961..eb7f578b155 100644
--- a/config/src/tests/configretriever/CMakeLists.txt
+++ b/config/src/tests/configretriever/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_configretriever_test_app TEST
SOURCES
configretriever.cpp
diff --git a/config/src/tests/configretriever/configretriever.cpp b/config/src/tests/configretriever/configretriever.cpp
index c8157ff7c16..1c39b20a1ff 100644
--- a/config/src/tests/configretriever/configretriever.cpp
+++ b/config/src/tests/configretriever/configretriever.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "config-bootstrap.h"
#include "config-foo.h"
diff --git a/config/src/tests/configuri/CMakeLists.txt b/config/src/tests/configuri/CMakeLists.txt
index 03563cb47fa..5654382d412 100644
--- a/config/src/tests/configuri/CMakeLists.txt
+++ b/config/src/tests/configuri/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_configuri_test_app TEST
SOURCES
configuri_test.cpp
diff --git a/config/src/tests/configuri/configuri_test.cpp b/config/src/tests/configuri/configuri_test.cpp
index 38d49848596..1089886cb1d 100644
--- a/config/src/tests/configuri/configuri_test.cpp
+++ b/config/src/tests/configuri/configuri_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/config.h>
#include <vespa/config/common/configcontext.h>
diff --git a/config/src/tests/failover/CMakeLists.txt b/config/src/tests/failover/CMakeLists.txt
index 5b77b60fb7b..ec88ca60fe8 100644
--- a/config/src/tests/failover/CMakeLists.txt
+++ b/config/src/tests/failover/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_failover_test_app TEST
SOURCES
failover.cpp
diff --git a/config/src/tests/failover/failover.cpp b/config/src/tests/failover/failover.cpp
index 2e039081716..4bac1fb9062 100644
--- a/config/src/tests/failover/failover.cpp
+++ b/config/src/tests/failover/failover.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/common/misc.h>
@@ -60,7 +60,7 @@ struct RPCServer : public FRT_Invokable {
info.setString("uncompressedSize", "0");
root.setString(RESPONSE_CONFIGID, "myId");
root.setString(RESPONSE_CLIENT_HOSTNAME, "myhost");
- root.setString(RESPONSE_CONFIG_MD5, "md5");
+ root.setString(RESPONSE_CONFIG_XXHASH64, "xxhash64");
root.setLong(RESPONSE_CONFIG_GENERATION, gen);
root.setObject(RESPONSE_TRACE);
Slime payload;
diff --git a/config/src/tests/file_acquirer/CMakeLists.txt b/config/src/tests/file_acquirer/CMakeLists.txt
index dbdd88790ea..857657f5575 100644
--- a/config/src/tests/file_acquirer/CMakeLists.txt
+++ b/config/src/tests/file_acquirer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_file_acquirer_test_app TEST
SOURCES
file_acquirer_test.cpp
diff --git a/config/src/tests/file_acquirer/file_acquirer_test.cpp b/config/src/tests/file_acquirer/file_acquirer_test.cpp
index da4bd71b82b..f289e42edcb 100644
--- a/config/src/tests/file_acquirer/file_acquirer_test.cpp
+++ b/config/src/tests/file_acquirer/file_acquirer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/file_acquirer/file_acquirer.h>
#include <vespa/fnet/frt/supervisor.h>
diff --git a/config/src/tests/file_subscription/CMakeLists.txt b/config/src/tests/file_subscription/CMakeLists.txt
index 2ff8f410c5d..ac9c3eaea53 100644
--- a/config/src/tests/file_subscription/CMakeLists.txt
+++ b/config/src/tests/file_subscription/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_file_subscription_test_app TEST
SOURCES
file_subscription.cpp
diff --git a/config/src/tests/file_subscription/file_subscription.cpp b/config/src/tests/file_subscription/file_subscription.cpp
index 468180cd78f..1201f72f90e 100644
--- a/config/src/tests/file_subscription/file_subscription.cpp
+++ b/config/src/tests/file_subscription/file_subscription.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/config.h>
#include <vespa/config/common/configholder.h>
diff --git a/config/src/tests/frt/CMakeLists.txt b/config/src/tests/frt/CMakeLists.txt
index b428016a232..30186ece8d1 100644
--- a/config/src/tests/frt/CMakeLists.txt
+++ b/config/src/tests/frt/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_frt_test_app TEST
SOURCES
frt.cpp
diff --git a/config/src/tests/frt/frt.cpp b/config/src/tests/frt/frt.cpp
index cb09b8f7254..54adbf4d787 100644
--- a/config/src/tests/frt/frt.cpp
+++ b/config/src/tests/frt/frt.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "config-my.h"
#include "config-bar.h"
@@ -72,7 +72,7 @@ namespace {
FRT_RPCRequest * createOKResponse(const vespalib::string & defName="",
const vespalib::string & defMd5="",
const vespalib::string & configId="",
- const vespalib::string & configMd5="",
+ const vespalib::string & configXxhash64="",
int changed=0,
long generation=0,
const std::vector<vespalib::string> & payload = std::vector<vespalib::string>(),
@@ -85,7 +85,7 @@ namespace {
ret.AddString("");
ret.AddString(defMd5.c_str());
ret.AddString(configId.c_str());
- ret.AddString(configMd5.c_str());
+ ret.AddString(configXxhash64.c_str());
ret.AddInt32(changed);
ret.AddInt64(generation);
FRT_StringValue * payload_arr = ret.AddStringArray(payload.size());
@@ -268,16 +268,16 @@ TEST_FF("require that request is config task is scheduled", SourceFixture(), FRT
TEST("require that v3 request is correctly initialized") {
ConnectionMock conn;
ConfigKey key = ConfigKey::create<MyConfig>("foobi");
- vespalib::string md5 = "mymd5";
+ vespalib::string xxhash64 = "myxxhash64";
int64_t currentGeneration = 3;
vespalib::string hostName = "myhost";
int64_t timeout = 3000;
Trace traceIn(3);
traceIn.trace(2, "Hei");
- FRTConfigRequestV3 v3req(&conn, key, md5, currentGeneration, hostName,
+ FRTConfigRequestV3 v3req(&conn, key, xxhash64, currentGeneration, hostName,
timeout, traceIn, VespaVersion::fromString("1.2.3"), CompressionType::LZ4);
- ASSERT_TRUE(v3req.verifyState(ConfigState(md5, 3, false)));
- ASSERT_FALSE(v3req.verifyState(ConfigState(md5, 2, false)));
+ ASSERT_TRUE(v3req.verifyState(ConfigState(xxhash64, 3, false)));
+ ASSERT_FALSE(v3req.verifyState(ConfigState(xxhash64, 2, false)));
ASSERT_FALSE(v3req.verifyState(ConfigState("xxx", 3, false)));
ASSERT_FALSE(v3req.verifyState(ConfigState("xxx", 2, false)));
@@ -297,7 +297,7 @@ TEST("require that v3 request is correctly initialized") {
EXPECT_EQUAL(key.getConfigId(), root[REQUEST_CLIENT_CONFIGID].asString().make_string());
EXPECT_EQUAL(hostName, root[REQUEST_CLIENT_HOSTNAME].asString().make_string());
EXPECT_EQUAL(currentGeneration, root[REQUEST_CURRENT_GENERATION].asLong());
- EXPECT_EQUAL(md5, root[REQUEST_CONFIG_MD5].asString().make_string());
+ EXPECT_EQUAL(xxhash64, root[REQUEST_CONFIG_XXHASH64].asString().make_string());
EXPECT_EQUAL(timeout, root[REQUEST_TIMEOUT].asLong());
EXPECT_EQUAL("LZ4", root[REQUEST_COMPRESSION_TYPE].asString().make_string());
EXPECT_EQUAL(root[REQUEST_VESPA_VERSION].asString().make_string(), "1.2.3");
@@ -322,7 +322,7 @@ struct V3RequestFixture {
Cursor & root;
FRT_RPCRequest * req;
ConfigKey key;
- vespalib::string md5;
+ vespalib::string xxhash64;
int64_t generation;
vespalib::string hostname;
Trace traceIn;
@@ -333,7 +333,7 @@ struct V3RequestFixture {
root(slime.setObject()),
req(conn.allocRPCRequest()),
key(ConfigKey::create<BarConfig>("foobi")),
- md5("mymd5"),
+ xxhash64("myxxhash64"),
generation(3),
hostname("myhhost"),
traceIn(3)
@@ -345,7 +345,7 @@ struct V3RequestFixture {
root.setString(RESPONSE_DEF_MD5, Memory(key.getDefMd5()));
root.setString(RESPONSE_CONFIGID, Memory(key.getConfigId()));
root.setString(RESPONSE_CLIENT_HOSTNAME, Memory(hostname));
- root.setString(RESPONSE_CONFIG_MD5, Memory(md5));
+ root.setString(RESPONSE_CONFIG_XXHASH64, Memory(xxhash64));
root.setLong(RESPONSE_CONFIG_GENERATION, generation);
traceIn.serialize(root.setObject(RESPONSE_TRACE));
}
@@ -379,7 +379,7 @@ struct V3RequestFixture {
EXPECT_EQUAL(key.getConfigId(), responseKey.getConfigId());
EXPECT_EQUAL(hostname, response.getHostName());
ConfigState state(response.getConfigState());
- EXPECT_EQUAL(md5, state.md5);
+ EXPECT_EQUAL(xxhash64, state.xxhash64);
EXPECT_EQUAL(generation, state.generation);
ConfigValue value(response.getValue());
BarConfig::UP config(value.newInstance<BarConfig>());
diff --git a/config/src/tests/frtconnectionpool/CMakeLists.txt b/config/src/tests/frtconnectionpool/CMakeLists.txt
index 97cdbc11e62..b5f8aae7a1e 100644
--- a/config/src/tests/frtconnectionpool/CMakeLists.txt
+++ b/config/src/tests/frtconnectionpool/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_frtconnectionpool_test_app TEST
SOURCES
frtconnectionpool.cpp
diff --git a/config/src/tests/frtconnectionpool/frtconnectionpool.cpp b/config/src/tests/frtconnectionpool/frtconnectionpool.cpp
index 6320feb1e12..337f5953e30 100644
--- a/config/src/tests/frtconnectionpool/frtconnectionpool.cpp
+++ b/config/src/tests/frtconnectionpool/frtconnectionpool.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/config/frt/frtconnectionpool.h>
diff --git a/config/src/tests/functiontest/CMakeLists.txt b/config/src/tests/functiontest/CMakeLists.txt
index 07fcefee5ac..3c778a733f9 100644
--- a/config/src/tests/functiontest/CMakeLists.txt
+++ b/config/src/tests/functiontest/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_functiontest_test_app TEST
SOURCES
functiontest.cpp
diff --git a/config/src/tests/functiontest/defaultvalues.xml b/config/src/tests/functiontest/defaultvalues.xml
index c196c07e4a9..af2b12f866a 100644
--- a/config/src/tests/functiontest/defaultvalues.xml
+++ b/config/src/tests/functiontest/defaultvalues.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<config name="function-test">
<bool_val>false</bool_val>
<int_val>5</int_val>
diff --git a/config/src/tests/functiontest/functiontest.cpp b/config/src/tests/functiontest/functiontest.cpp
index f7a57d6359b..80433b0382c 100644
--- a/config/src/tests/functiontest/functiontest.cpp
+++ b/config/src/tests/functiontest/functiontest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config/config.h>
#include <vespa/config/common/exceptions.h>
diff --git a/config/src/tests/getconfig/CMakeLists.txt b/config/src/tests/getconfig/CMakeLists.txt
index 6c2afe4ab7c..76869bbb1a2 100644
--- a/config/src/tests/getconfig/CMakeLists.txt
+++ b/config/src/tests/getconfig/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_getconfig_test_app TEST
SOURCES
getconfig.cpp
diff --git a/config/src/tests/getconfig/getconfig.cpp b/config/src/tests/getconfig/getconfig.cpp
index b091e347ff2..4081ce2f1d6 100644
--- a/config/src/tests/getconfig/getconfig.cpp
+++ b/config/src/tests/getconfig/getconfig.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/helper/configgetter.hpp>
diff --git a/config/src/tests/legacysubscriber/CMakeLists.txt b/config/src/tests/legacysubscriber/CMakeLists.txt
index e5b8b55d00c..158e1118da9 100644
--- a/config/src/tests/legacysubscriber/CMakeLists.txt
+++ b/config/src/tests/legacysubscriber/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_legacysubscriber_test_app TEST
SOURCES
legacysubscriber.cpp
diff --git a/config/src/tests/legacysubscriber/legacysubscriber.cpp b/config/src/tests/legacysubscriber/legacysubscriber.cpp
index 77877099b7f..51a32731b0e 100644
--- a/config/src/tests/legacysubscriber/legacysubscriber.cpp
+++ b/config/src/tests/legacysubscriber/legacysubscriber.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/helper/legacysubscriber.h>
#include <fstream>
diff --git a/config/src/tests/misc/CMakeLists.txt b/config/src/tests/misc/CMakeLists.txt
index a81520a988f..db496b4b85c 100644
--- a/config/src/tests/misc/CMakeLists.txt
+++ b/config/src/tests/misc/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_misc_test_app TEST
SOURCES
misc.cpp
diff --git a/config/src/tests/misc/configsystem.cpp b/config/src/tests/misc/configsystem.cpp
index b8748cdbc5b..c02e27ca989 100644
--- a/config/src/tests/misc/configsystem.cpp
+++ b/config/src/tests/misc/configsystem.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/size_literals.h>
#include <vespa/config/common/configsystem.h>
diff --git a/config/src/tests/misc/misc.cpp b/config/src/tests/misc/misc.cpp
index 1a8b8a59ede..25b6cf36326 100644
--- a/config/src/tests/misc/misc.cpp
+++ b/config/src/tests/misc/misc.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/common/configupdate.h>
#include <vespa/config/common/misc.h>
@@ -15,11 +15,11 @@ TEST("requireThatConfigUpdateWorks") {
std::vector<vespalib::string> lines;
lines.push_back("foo");
- ConfigUpdate up(ConfigValue(lines, "mymd5"), true, 1337);
+ ConfigUpdate up(ConfigValue(lines, "myxxhash"), true, 1337);
ASSERT_EQUAL(1337, up.getGeneration());
ASSERT_TRUE(up.hasChanged());
- ConfigUpdate up2(ConfigValue(lines, "mymd52"), false, 1338);
+ ConfigUpdate up2(ConfigValue(lines, "myxxhash2"), false, 1338);
ASSERT_EQUAL(1338, up2.getGeneration());
ASSERT_FALSE(up2.hasChanged());
}
@@ -27,22 +27,22 @@ TEST("requireThatConfigUpdateWorks") {
TEST("requireThatConfigValueWorks") {
std::vector<vespalib::string> lines;
lines.push_back("myFooField \"bar\"");
- ConfigValue v1(lines, calculateContentMd5(lines));
- ConfigValue v2(lines, calculateContentMd5(lines));
- ConfigValue v3(lines, calculateContentMd5(lines));
+ ConfigValue v1(lines, calculateContentXxhash64(lines));
+ ConfigValue v2(lines, calculateContentXxhash64(lines));
+ ConfigValue v3(lines, calculateContentXxhash64(lines));
lines.push_back("myFooField \"bar2\"");
- ConfigValue v4(lines, calculateContentMd5(lines));
+ ConfigValue v4(lines, calculateContentXxhash64(lines));
ASSERT_TRUE(v1 == v2);
ASSERT_TRUE(v1 == v3);
}
TEST("requireThatConfigKeyWorks") {
- ConfigKey key1("id1", "def1", "namespace1", "md51");
- ConfigKey key2("id1", "def1", "namespace1", "md51");
- ConfigKey key3("id2", "def1", "namespace1", "md51");
- ConfigKey key4("id1", "def2", "namespace1", "md51");
- ConfigKey key5("id1", "def1", "namespace2", "md51");
- ConfigKey key6("id1", "def1", "namespace1", "md52"); // Special case. Md5 does not matter, so should be qual to key1 and key2
+ ConfigKey key1("id1", "def1", "namespace1", "xxhash1");
+ ConfigKey key2("id1", "def1", "namespace1", "xxhash1");
+ ConfigKey key3("id2", "def1", "namespace1", "xxhash1");
+ ConfigKey key4("id1", "def2", "namespace1", "xxhash1");
+ ConfigKey key5("id1", "def1", "namespace2", "xxhash1");
+ ConfigKey key6("id1", "def1", "namespace1", "xxhash2"); // Special case. xxhash64 does not matter, so should be qual to key1 and key2
ASSERT_TRUE(key1 == key2);
@@ -111,7 +111,7 @@ TEST("require that config key initializes schema")
std::vector<vespalib::string> schema;
schema.push_back("foo");
schema.push_back("bar");
- ConfigKey key("id1", "def1", "namespace1", "md51", schema);
+ ConfigKey key("id1", "def1", "namespace1", "xxhash1", schema);
const std::vector<vespalib::string> &vref(key.getDefSchema());
for (size_t i = 0; i < schema.size(); i++) {
ASSERT_EQUAL(schema[i], vref[i]);
@@ -131,6 +131,7 @@ TEST("require that error codes are correctly translated to strings") {
ASSERT_CONFIG(ILLEGAL_CONFIGID);
ASSERT_CONFIG(ILLEGAL_DEF_MD5);
ASSERT_CONFIG(ILLEGAL_CONFIG_MD5);
+ ASSERT_CONFIG(ILLEGAL_CONFIG_MD5);
ASSERT_CONFIG(ILLEGAL_TIMEOUT);
ASSERT_CONFIG(ILLEGAL_TIMESTAMP);
ASSERT_CONFIG(ILLEGAL_NAME_SPACE);
diff --git a/config/src/tests/payload_converter/CMakeLists.txt b/config/src/tests/payload_converter/CMakeLists.txt
index a700182dbef..a1b344b49d9 100644
--- a/config/src/tests/payload_converter/CMakeLists.txt
+++ b/config/src/tests/payload_converter/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_payload_converter_test_app TEST
SOURCES
payload_converter.cpp
diff --git a/config/src/tests/payload_converter/payload_converter.cpp b/config/src/tests/payload_converter/payload_converter.cpp
index dceb9751f99..2ecb2062944 100644
--- a/config/src/tests/payload_converter/payload_converter.cpp
+++ b/config/src/tests/payload_converter/payload_converter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/common/payload_converter.h>
diff --git a/config/src/tests/print/CMakeLists.txt b/config/src/tests/print/CMakeLists.txt
index 88765df3cf9..88c706f47e6 100644
--- a/config/src/tests/print/CMakeLists.txt
+++ b/config/src/tests/print/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_print_test_app TEST
SOURCES
print.cpp
diff --git a/config/src/tests/print/print.cpp b/config/src/tests/print/print.cpp
index 9df4bcf4914..325b8dc28fa 100644
--- a/config/src/tests/print/print.cpp
+++ b/config/src/tests/print/print.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/config.h>
diff --git a/config/src/tests/raw_subscription/CMakeLists.txt b/config/src/tests/raw_subscription/CMakeLists.txt
index 7c4f9b50bf9..87196ecfe60 100644
--- a/config/src/tests/raw_subscription/CMakeLists.txt
+++ b/config/src/tests/raw_subscription/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_raw_subscription_test_app TEST
SOURCES
raw_subscription.cpp
diff --git a/config/src/tests/raw_subscription/raw_subscription.cpp b/config/src/tests/raw_subscription/raw_subscription.cpp
index 39062f4e7ac..7141a21d35d 100644
--- a/config/src/tests/raw_subscription/raw_subscription.cpp
+++ b/config/src/tests/raw_subscription/raw_subscription.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/config.h>
#include <vespa/config/common/configholder.h>
diff --git a/config/src/tests/subscriber/CMakeLists.txt b/config/src/tests/subscriber/CMakeLists.txt
index 079797165c3..e35a6106096 100644
--- a/config/src/tests/subscriber/CMakeLists.txt
+++ b/config/src/tests/subscriber/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_subscriber_test_app TEST
SOURCES
subscriber.cpp
diff --git a/config/src/tests/subscriber/subscriber.cpp b/config/src/tests/subscriber/subscriber.cpp
index d58699f26e0..5871add2618 100644
--- a/config/src/tests/subscriber/subscriber.cpp
+++ b/config/src/tests/subscriber/subscriber.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "config-foo.h"
#include "config-bar.h"
#include "config-baz.h"
@@ -20,7 +20,7 @@ namespace {
{
std::vector< vespalib::string > lines;
lines.push_back(value);
- return ConfigValue(lines, calculateContentMd5(lines));
+ return ConfigValue(lines, calculateContentXxhash64(lines));
}
ConfigValue createFooValue(const std::string & value)
diff --git a/config/src/tests/subscription/CMakeLists.txt b/config/src/tests/subscription/CMakeLists.txt
index 1da53c66eda..4be18e7ab30 100644
--- a/config/src/tests/subscription/CMakeLists.txt
+++ b/config/src/tests/subscription/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_subscription_test_app TEST
SOURCES
subscription.cpp
diff --git a/config/src/tests/subscription/subscription.cpp b/config/src/tests/subscription/subscription.cpp
index 7a5fccec019..a65528d67ee 100644
--- a/config/src/tests/subscription/subscription.cpp
+++ b/config/src/tests/subscription/subscription.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/common/misc.h>
#include <vespa/config/common/configholder.h>
diff --git a/config/src/tests/trace/CMakeLists.txt b/config/src/tests/trace/CMakeLists.txt
index 9af37d506e2..7db024e1221 100644
--- a/config/src/tests/trace/CMakeLists.txt
+++ b/config/src/tests/trace/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_trace_test_app TEST
SOURCES
trace.cpp
diff --git a/config/src/tests/trace/trace.cpp b/config/src/tests/trace/trace.cpp
index 9a355f39ecc..b19a0425c5a 100644
--- a/config/src/tests/trace/trace.cpp
+++ b/config/src/tests/trace/trace.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/common/trace.h>
diff --git a/config/src/tests/unittest/CMakeLists.txt b/config/src/tests/unittest/CMakeLists.txt
index 4e024e915f7..7fb6185a43a 100644
--- a/config/src/tests/unittest/CMakeLists.txt
+++ b/config/src/tests/unittest/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(config_unittest_test_app TEST
SOURCES
unittest.cpp
diff --git a/config/src/tests/unittest/unittest.cpp b/config/src/tests/unittest/unittest.cpp
index 46aefe152af..1ba11db89b9 100644
--- a/config/src/tests/unittest/unittest.cpp
+++ b/config/src/tests/unittest/unittest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/config/config.h>
diff --git a/config/src/vespa/config/CMakeLists.txt b/config/src/vespa/config/CMakeLists.txt
index bcf6b163d88..c0e78d431ac 100644
--- a/config/src/vespa/config/CMakeLists.txt
+++ b/config/src/vespa/config/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(config_cloudconfig
SOURCES
$<TARGET_OBJECTS:config_common>
diff --git a/config/src/vespa/config/common/CMakeLists.txt b/config/src/vespa/config/common/CMakeLists.txt
index 65a4ef7d3da..48a792f5955 100644
--- a/config/src/vespa/config/common/CMakeLists.txt
+++ b/config/src/vespa/config/common/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(config_common OBJECT
SOURCES
configmanager.cpp
diff --git a/config/src/vespa/config/common/cancelhandler.h b/config/src/vespa/config/common/cancelhandler.h
index d8fb1a103dc..7641b774fbf 100644
--- a/config/src/vespa/config/common/cancelhandler.h
+++ b/config/src/vespa/config/common/cancelhandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace config {
diff --git a/config/src/vespa/config/common/compressiontype.cpp b/config/src/vespa/config/common/compressiontype.cpp
index 792201c9947..e7a0ffceb53 100644
--- a/config/src/vespa/config/common/compressiontype.cpp
+++ b/config/src/vespa/config/common/compressiontype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "compressiontype.h"
namespace config {
diff --git a/config/src/vespa/config/common/compressiontype.h b/config/src/vespa/config/common/compressiontype.h
index 4f35539058a..33d9319a68a 100644
--- a/config/src/vespa/config/common/compressiontype.h
+++ b/config/src/vespa/config/common/compressiontype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/config/src/vespa/config/common/configcontext.cpp b/config/src/vespa/config/common/configcontext.cpp
index 0eed91296a6..2c8c981862d 100644
--- a/config/src/vespa/config/common/configcontext.cpp
+++ b/config/src/vespa/config/common/configcontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configcontext.h"
#include "configmanager.h"
diff --git a/config/src/vespa/config/common/configcontext.h b/config/src/vespa/config/common/configcontext.h
index dd3296a9b01..5d28470b4e7 100644
--- a/config/src/vespa/config/common/configcontext.h
+++ b/config/src/vespa/config/common/configcontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "iconfigcontext.h"
diff --git a/config/src/vespa/config/common/configdefinition.cpp b/config/src/vespa/config/common/configdefinition.cpp
index 92af068cff5..21bafcda8f6 100644
--- a/config/src/vespa/config/common/configdefinition.cpp
+++ b/config/src/vespa/config/common/configdefinition.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configdefinition.h"
#include <vespa/vespalib/stllike/asciistream.h>
#include <vespa/vespalib/data/slime/slime.h>
diff --git a/config/src/vespa/config/common/configdefinition.h b/config/src/vespa/config/common/configdefinition.h
index 8067bf0aea8..78ab7877394 100644
--- a/config/src/vespa/config/common/configdefinition.h
+++ b/config/src/vespa/config/common/configdefinition.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/config/src/vespa/config/common/configholder.cpp b/config/src/vespa/config/common/configholder.cpp
index 66c214f470b..f16d70f11b1 100644
--- a/config/src/vespa/config/common/configholder.cpp
+++ b/config/src/vespa/config/common/configholder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configholder.h"
diff --git a/config/src/vespa/config/common/configholder.h b/config/src/vespa/config/common/configholder.h
index 35bb6a8ccc2..75324bd9d2e 100644
--- a/config/src/vespa/config/common/configholder.h
+++ b/config/src/vespa/config/common/configholder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "iconfigholder.h"
diff --git a/config/src/vespa/config/common/configkey.cpp b/config/src/vespa/config/common/configkey.cpp
index 1b8460ea1f5..248890b05f9 100644
--- a/config/src/vespa/config/common/configkey.cpp
+++ b/config/src/vespa/config/common/configkey.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configkey.h"
diff --git a/config/src/vespa/config/common/configkey.h b/config/src/vespa/config/common/configkey.h
index 9f6eec99f63..96b7ada92e4 100644
--- a/config/src/vespa/config/common/configkey.h
+++ b/config/src/vespa/config/common/configkey.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/config/src/vespa/config/common/configmanager.cpp b/config/src/vespa/config/common/configmanager.cpp
index df8615c9c40..fb082b8479a 100644
--- a/config/src/vespa/config/common/configmanager.cpp
+++ b/config/src/vespa/config/common/configmanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configmanager.h"
#include "exceptions.h"
#include "configholder.h"
diff --git a/config/src/vespa/config/common/configmanager.h b/config/src/vespa/config/common/configmanager.h
index 0252c6aa572..4dde9f0d448 100644
--- a/config/src/vespa/config/common/configmanager.h
+++ b/config/src/vespa/config/common/configmanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/subscription/configsubscription.h>
diff --git a/config/src/vespa/config/common/configparser.cpp b/config/src/vespa/config/common/configparser.cpp
index 87440e74e09..a8785642ca7 100644
--- a/config/src/vespa/config/common/configparser.cpp
+++ b/config/src/vespa/config/common/configparser.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configparser.h"
#include "exceptions.h"
diff --git a/config/src/vespa/config/common/configparser.h b/config/src/vespa/config/common/configparser.h
index c70aeed4901..b96bf77fd77 100644
--- a/config/src/vespa/config/common/configparser.h
+++ b/config/src/vespa/config/common/configparser.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/config/src/vespa/config/common/configrequest.h b/config/src/vespa/config/common/configrequest.h
index 0984850473b..1ef5db30cad 100644
--- a/config/src/vespa/config/common/configrequest.h
+++ b/config/src/vespa/config/common/configrequest.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/config/src/vespa/config/common/configresponse.h b/config/src/vespa/config/common/configresponse.h
index fa24c17c858..053fe9a3112 100644
--- a/config/src/vespa/config/common/configresponse.h
+++ b/config/src/vespa/config/common/configresponse.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/config/src/vespa/config/common/configstate.h b/config/src/vespa/config/common/configstate.h
index 2dbea3cc30f..a0229f85cd5 100644
--- a/config/src/vespa/config/common/configstate.h
+++ b/config/src/vespa/config/common/configstate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
@@ -13,17 +13,17 @@ struct ConfigState
{
public:
ConfigState()
- : md5(""),
+ : xxhash64(""),
generation(0),
applyOnRestart(false)
{ }
- ConfigState(const vespalib::string & md5sum, int64_t gen, bool _applyOnRestart)
- : md5(md5sum),
+ ConfigState(const vespalib::string & xxhash, int64_t gen, bool _applyOnRestart)
+ : xxhash64(xxhash),
generation(gen),
applyOnRestart(_applyOnRestart)
{ }
- vespalib::string md5;
+ vespalib::string xxhash64;
int64_t generation;
bool applyOnRestart;
@@ -32,7 +32,7 @@ public:
}
bool hasDifferentPayloadFrom(const ConfigState & other) const {
- return (md5.compare(other.md5) != 0);
+ return (xxhash64.compare(other.xxhash64) != 0);
}
};
diff --git a/config/src/vespa/config/common/configsystem.cpp b/config/src/vespa/config/common/configsystem.cpp
index a787b3867fd..69ea77ca05d 100644
--- a/config/src/vespa/config/common/configsystem.cpp
+++ b/config/src/vespa/config/common/configsystem.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configsystem.h"
#include <vespa/defaults.h>
diff --git a/config/src/vespa/config/common/configsystem.h b/config/src/vespa/config/common/configsystem.h
index ae9bc46ce43..414148667ff 100644
--- a/config/src/vespa/config/common/configsystem.h
+++ b/config/src/vespa/config/common/configsystem.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/config/src/vespa/config/common/configupdate.cpp b/config/src/vespa/config/common/configupdate.cpp
index c0e4e0743d5..e46dd781b2d 100644
--- a/config/src/vespa/config/common/configupdate.cpp
+++ b/config/src/vespa/config/common/configupdate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configupdate.h"
namespace config {
diff --git a/config/src/vespa/config/common/configupdate.h b/config/src/vespa/config/common/configupdate.h
index 9afdb9a5a40..571b32a97dc 100644
--- a/config/src/vespa/config/common/configupdate.h
+++ b/config/src/vespa/config/common/configupdate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/config/src/vespa/config/common/configvalue.cpp b/config/src/vespa/config/common/configvalue.cpp
index d5c0c2047df..d770c126d38 100644
--- a/config/src/vespa/config/common/configvalue.cpp
+++ b/config/src/vespa/config/common/configvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configvalue.h"
#include "payload_converter.h"
#include "misc.h"
@@ -6,22 +6,22 @@
namespace config {
-ConfigValue::ConfigValue(const std::vector<vespalib::string> & lines, const vespalib::string & md5sum)
+ConfigValue::ConfigValue(const std::vector<vespalib::string> & lines, const vespalib::string & xxhash)
: _payload(),
_lines(lines),
- _md5sum(md5sum)
+ _xxhash64(xxhash)
{ }
ConfigValue::ConfigValue()
: _payload(),
_lines(),
- _md5sum()
+ _xxhash64()
{ }
-ConfigValue::ConfigValue(PayloadPtr payload, const vespalib::string & md5)
+ConfigValue::ConfigValue(PayloadPtr payload, const vespalib::string & xxhash)
: _payload(std::move(payload)),
_lines(),
- _md5sum(md5)
+ _xxhash64(xxhash)
{ }
ConfigValue::ConfigValue(const ConfigValue &) = default;
@@ -32,7 +32,7 @@ ConfigValue::~ConfigValue() = default;
int
ConfigValue::operator==(const ConfigValue & rhs) const
{
- return (_md5sum.compare(rhs._md5sum) == 0);
+ return (_xxhash64.compare(rhs._xxhash64) == 0);
}
int
diff --git a/config/src/vespa/config/common/configvalue.h b/config/src/vespa/config/common/configvalue.h
index a0450328f30..553a609b9db 100644
--- a/config/src/vespa/config/common/configvalue.h
+++ b/config/src/vespa/config/common/configvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/frt/protocol.h>
@@ -21,8 +21,8 @@ typedef std::shared_ptr<const protocol::Payload> PayloadPtr;
class ConfigValue {
public:
typedef std::unique_ptr<ConfigValue> UP;
- ConfigValue(const std::vector<vespalib::string> & lines, const vespalib::string & md5sum);
- ConfigValue(PayloadPtr data, const vespalib::string & md5sum);
+ ConfigValue(const std::vector<vespalib::string> & lines, const vespalib::string & xxhash);
+ ConfigValue(PayloadPtr data, const vespalib::string & xxhash);
ConfigValue();
ConfigValue(const ConfigValue &);
ConfigValue & operator = (const ConfigValue &);
@@ -36,7 +36,7 @@ public:
const std::vector<vespalib::string> & getLines() const { return _lines; }
std::vector<vespalib::string> getLegacyFormat() const;
const vespalib::string asJson() const;
- const vespalib::string getMd5() const { return _md5sum; }
+ const vespalib::string getXxhash64() const { return _xxhash64; }
void serializeV1(::vespalib::slime::Cursor & cursor) const;
void serializeV2(::vespalib::slime::Cursor & cursor) const;
@@ -47,7 +47,7 @@ public:
private:
PayloadPtr _payload;
std::vector<vespalib::string> _lines;
- vespalib::string _md5sum;
+ vespalib::string _xxhash64;
};
} //namespace config
diff --git a/config/src/vespa/config/common/configvalue.hpp b/config/src/vespa/config/common/configvalue.hpp
index 226de62a155..3bf149f17b1 100644
--- a/config/src/vespa/config/common/configvalue.hpp
+++ b/config/src/vespa/config/common/configvalue.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace config {
diff --git a/config/src/vespa/config/common/errorcode.cpp b/config/src/vespa/config/common/errorcode.cpp
index 7c7b30e702d..b4371376b61 100644
--- a/config/src/vespa/config/common/errorcode.cpp
+++ b/config/src/vespa/config/common/errorcode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "errorcode.h"
diff --git a/config/src/vespa/config/common/errorcode.h b/config/src/vespa/config/common/errorcode.h
index b2d511c0bc4..a2e2e404d6f 100644
--- a/config/src/vespa/config/common/errorcode.h
+++ b/config/src/vespa/config/common/errorcode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Gunnar Gauslaa Bergem
* @date 2008-05-22
diff --git a/config/src/vespa/config/common/exceptions.cpp b/config/src/vespa/config/common/exceptions.cpp
index e80c4f88bc9..eed02ee2102 100644
--- a/config/src/vespa/config/common/exceptions.cpp
+++ b/config/src/vespa/config/common/exceptions.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "exceptions.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/config/src/vespa/config/common/exceptions.h b/config/src/vespa/config/common/exceptions.h
index db373dfd20d..3e14ab7cef5 100644
--- a/config/src/vespa/config/common/exceptions.h
+++ b/config/src/vespa/config/common/exceptions.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/exception.h>
diff --git a/config/src/vespa/config/common/handler.h b/config/src/vespa/config/common/handler.h
index 172f195fb48..5458f916357 100644
--- a/config/src/vespa/config/common/handler.h
+++ b/config/src/vespa/config/common/handler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/config/src/vespa/config/common/iconfigcontext.h b/config/src/vespa/config/common/iconfigcontext.h
index e9ca1e63b9e..acc97a7cb8c 100644
--- a/config/src/vespa/config/common/iconfigcontext.h
+++ b/config/src/vespa/config/common/iconfigcontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/config/src/vespa/config/common/iconfigholder.h b/config/src/vespa/config/common/iconfigholder.h
index e85b1c98594..ff8e117cb37 100644
--- a/config/src/vespa/config/common/iconfigholder.h
+++ b/config/src/vespa/config/common/iconfigholder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/common/handler.h>
diff --git a/config/src/vespa/config/common/iconfigmanager.h b/config/src/vespa/config/common/iconfigmanager.h
index 563333da958..ab0576428f1 100644
--- a/config/src/vespa/config/common/iconfigmanager.h
+++ b/config/src/vespa/config/common/iconfigmanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/common/subscribehandler.h>
diff --git a/config/src/vespa/config/common/interruptable.h b/config/src/vespa/config/common/interruptable.h
index 861c28fd021..843ce8bc838 100644
--- a/config/src/vespa/config/common/interruptable.h
+++ b/config/src/vespa/config/common/interruptable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/config/src/vespa/config/common/misc.cpp b/config/src/vespa/config/common/misc.cpp
index 1040962e25c..34985d19c68 100644
--- a/config/src/vespa/config/common/misc.cpp
+++ b/config/src/vespa/config/common/misc.cpp
@@ -1,7 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "misc.h"
-#include <vespa/vespalib/util/md5.h>
+#include <iostream>
+#include <sstream>
+#include <xxhash.h>
#include <vespa/vespalib/stllike/asciistream.h>
#include <vespa/vespalib/util/exceptions.h>
#include <vespa/vespalib/data/slime/slime.h>
@@ -12,12 +14,12 @@ using vespalib::Memory;
namespace config {
vespalib::string
-calculateContentMd5(const std::vector<vespalib::string> & fileContents)
+calculateContentXxhash64(const std::vector<vespalib::string> & fileContents)
{
vespalib::string normalizedLines;
- int compact_md5size = 16;
- unsigned char md5sum[compact_md5size];
+ XXH64_hash_t xxhash64;
vespalib::asciistream s;
+ std::stringstream ss;
// remove comments, trailing spaces and empty lines
// TODO: Remove multiple spaces and space before comma, like in Java
@@ -30,16 +32,11 @@ calculateContentMd5(const std::vector<vespalib::string> & fileContents)
normalizedLines += line;
}
}
- fastc_md5sum((const unsigned char*)normalizedLines.c_str(), normalizedLines.size(), md5sum);
+ xxhash64 = XXH64((const unsigned char*)normalizedLines.c_str(), normalizedLines.size(), 0);
- // convert to 32 character hex string
- for (int i = 0; i < compact_md5size; i++) {
- if (md5sum[i] < 16) {
- s << "0";
- }
- s << vespalib::hex << (int)md5sum[i];
- }
- return s.str();
+ ss << std::hex << xxhash64;
+ ss << std::endl;
+ return ss.str();
}
bool
diff --git a/config/src/vespa/config/common/misc.h b/config/src/vespa/config/common/misc.h
index 0299ef001f1..06546a85292 100644
--- a/config/src/vespa/config/common/misc.h
+++ b/config/src/vespa/config/common/misc.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configkey.h"
@@ -19,7 +19,7 @@ namespace config {
/**
* Miscellaneous utility functions specific to config.
*/
-vespalib::string calculateContentMd5(const std::vector<vespalib::string> & fileContents);
+vespalib::string calculateContentXxhash64(const std::vector<vespalib::string> & fileContents);
bool isGenerationNewer(int64_t newGen, int64_t oldGen);
diff --git a/config/src/vespa/config/common/payload_converter.cpp b/config/src/vespa/config/common/payload_converter.cpp
index 2fa6a5ad37e..3cdc745c77a 100644
--- a/config/src/vespa/config/common/payload_converter.cpp
+++ b/config/src/vespa/config/common/payload_converter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "payload_converter.h"
#include <vespa/vespalib/data/memory.h>
diff --git a/config/src/vespa/config/common/payload_converter.h b/config/src/vespa/config/common/payload_converter.h
index 27d1cf7c1c1..504fb06cf0a 100644
--- a/config/src/vespa/config/common/payload_converter.h
+++ b/config/src/vespa/config/common/payload_converter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/data/slime/object_traverser.h>
diff --git a/config/src/vespa/config/common/pollable.h b/config/src/vespa/config/common/pollable.h
index 0bf56bdb479..6799f06cef5 100644
--- a/config/src/vespa/config/common/pollable.h
+++ b/config/src/vespa/config/common/pollable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/config/src/vespa/config/common/provider.h b/config/src/vespa/config/common/provider.h
index f9c11d21442..923d440558a 100644
--- a/config/src/vespa/config/common/provider.h
+++ b/config/src/vespa/config/common/provider.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/config/src/vespa/config/common/reloadhandler.h b/config/src/vespa/config/common/reloadhandler.h
index 8e1eb1c822b..73016a2f883 100644
--- a/config/src/vespa/config/common/reloadhandler.h
+++ b/config/src/vespa/config/common/reloadhandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace config {
diff --git a/config/src/vespa/config/common/source.h b/config/src/vespa/config/common/source.h
index c0395381ed1..f3014d0854c 100644
--- a/config/src/vespa/config/common/source.h
+++ b/config/src/vespa/config/common/source.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/config/src/vespa/config/common/sourcefactory.h b/config/src/vespa/config/common/sourcefactory.h
index 8a05de9a65a..de97977c924 100644
--- a/config/src/vespa/config/common/sourcefactory.h
+++ b/config/src/vespa/config/common/sourcefactory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/config/src/vespa/config/common/subscribehandler.h b/config/src/vespa/config/common/subscribehandler.h
index dba7b606825..5ab70677996 100644
--- a/config/src/vespa/config/common/subscribehandler.h
+++ b/config/src/vespa/config/common/subscribehandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configkey.h"
diff --git a/config/src/vespa/config/common/timingvalues.cpp b/config/src/vespa/config/common/timingvalues.cpp
index a2ad586d090..9133091b80a 100644
--- a/config/src/vespa/config/common/timingvalues.cpp
+++ b/config/src/vespa/config/common/timingvalues.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "timingvalues.h"
diff --git a/config/src/vespa/config/common/timingvalues.h b/config/src/vespa/config/common/timingvalues.h
index b6d69e62510..b6a8c8a6cdc 100644
--- a/config/src/vespa/config/common/timingvalues.h
+++ b/config/src/vespa/config/common/timingvalues.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/config/src/vespa/config/common/trace.cpp b/config/src/vespa/config/common/trace.cpp
index 4edc9df60c3..b9138d471e2 100644
--- a/config/src/vespa/config/common/trace.cpp
+++ b/config/src/vespa/config/common/trace.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "trace.h"
#include <vespa/vespalib/trace/slime_trace_serializer.h>
#include <vespa/vespalib/trace/slime_trace_deserializer.h>
diff --git a/config/src/vespa/config/common/trace.h b/config/src/vespa/config/common/trace.h
index 9abd4cc53a4..c9f1e2c22f5 100644
--- a/config/src/vespa/config/common/trace.h
+++ b/config/src/vespa/config/common/trace.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/trace/tracenode.h>
diff --git a/config/src/vespa/config/common/vespa_version.cpp b/config/src/vespa/config/common/vespa_version.cpp
index 7cbbe696dba..bfe51d44b0c 100644
--- a/config/src/vespa/config/common/vespa_version.cpp
+++ b/config/src/vespa/config/common/vespa_version.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "vespa_version.h"
#include <vespa/vespalib/component/vtag.h>
diff --git a/config/src/vespa/config/common/vespa_version.h b/config/src/vespa/config/common/vespa_version.h
index 0ee1970d447..0ed9233f677 100644
--- a/config/src/vespa/config/common/vespa_version.h
+++ b/config/src/vespa/config/common/vespa_version.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/config/src/vespa/config/common/waitable.h b/config/src/vespa/config/common/waitable.h
index 9dcd04fbd8b..9c88bdccf77 100644
--- a/config/src/vespa/config/common/waitable.h
+++ b/config/src/vespa/config/common/waitable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/config/src/vespa/config/config.h b/config/src/vespa/config/config.h
index 52c52698648..6c383f4fef3 100644
--- a/config/src/vespa/config/config.h
+++ b/config/src/vespa/config/config.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/subscription/configsubscriber.h>
diff --git a/config/src/vespa/config/configgen/CMakeLists.txt b/config/src/vespa/config/configgen/CMakeLists.txt
index f0a9f757cf1..d08fa436c6d 100644
--- a/config/src/vespa/config/configgen/CMakeLists.txt
+++ b/config/src/vespa/config/configgen/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(config_configgen OBJECT
SOURCES
value_converter.cpp
diff --git a/config/src/vespa/config/configgen/configinstance.h b/config/src/vespa/config/configgen/configinstance.h
index 1fb9a8b1447..f25c0536ac6 100644
--- a/config/src/vespa/config/configgen/configinstance.h
+++ b/config/src/vespa/config/configgen/configinstance.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/config/src/vespa/config/configgen/configpayload.h b/config/src/vespa/config/configgen/configpayload.h
index 47eb463f35c..7d36244ee6a 100644
--- a/config/src/vespa/config/configgen/configpayload.h
+++ b/config/src/vespa/config/configgen/configpayload.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace vespalib {
diff --git a/config/src/vespa/config/configgen/map_inserter.h b/config/src/vespa/config/configgen/map_inserter.h
index be8bfa84dc3..9f596912c5f 100644
--- a/config/src/vespa/config/configgen/map_inserter.h
+++ b/config/src/vespa/config/configgen/map_inserter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "value_converter.h"
diff --git a/config/src/vespa/config/configgen/map_inserter.hpp b/config/src/vespa/config/configgen/map_inserter.hpp
index afdf08d55f6..6ffdb0e893b 100644
--- a/config/src/vespa/config/configgen/map_inserter.hpp
+++ b/config/src/vespa/config/configgen/map_inserter.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace config {
namespace internal {
diff --git a/config/src/vespa/config/configgen/value_converter.cpp b/config/src/vespa/config/configgen/value_converter.cpp
index 06086939d58..4b25c6040da 100644
--- a/config/src/vespa/config/configgen/value_converter.cpp
+++ b/config/src/vespa/config/configgen/value_converter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "value_converter.h"
#include <vespa/config/common/exceptions.h>
#include <vespa/vespalib/locale/c.h>
diff --git a/config/src/vespa/config/configgen/value_converter.h b/config/src/vespa/config/configgen/value_converter.h
index 6ad67bf6f86..695e798b015 100644
--- a/config/src/vespa/config/configgen/value_converter.h
+++ b/config/src/vespa/config/configgen/value_converter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configpayload.h"
diff --git a/config/src/vespa/config/configgen/vector_inserter.h b/config/src/vespa/config/configgen/vector_inserter.h
index 9378fb2adb5..3c5a406ef67 100644
--- a/config/src/vespa/config/configgen/vector_inserter.h
+++ b/config/src/vespa/config/configgen/vector_inserter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "value_converter.h"
diff --git a/config/src/vespa/config/configgen/vector_inserter.hpp b/config/src/vespa/config/configgen/vector_inserter.hpp
index b940461b480..ed43dda07d6 100644
--- a/config/src/vespa/config/configgen/vector_inserter.hpp
+++ b/config/src/vespa/config/configgen/vector_inserter.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace config {
namespace internal {
diff --git a/config/src/vespa/config/file/CMakeLists.txt b/config/src/vespa/config/file/CMakeLists.txt
index f18d0f0e708..1e1329b932f 100644
--- a/config/src/vespa/config/file/CMakeLists.txt
+++ b/config/src/vespa/config/file/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(config_file OBJECT
SOURCES
filesource.cpp
diff --git a/config/src/vespa/config/file/filesource.cpp b/config/src/vespa/config/file/filesource.cpp
index fcc69f68066..83a7e10716f 100644
--- a/config/src/vespa/config/file/filesource.cpp
+++ b/config/src/vespa/config/file/filesource.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "filesource.h"
#include <vespa/config/subscription/sourcespec.h>
@@ -27,10 +27,10 @@ FileSource::getConfig()
int64_t last = getLast(_fileName);
if (last > _lastLoaded) {
- _holder->handle(ConfigUpdate::UP(new ConfigUpdate(ConfigValue(lines, calculateContentMd5(lines)), true, _generation)));
+ _holder->handle(ConfigUpdate::UP(new ConfigUpdate(ConfigValue(lines, calculateContentXxhash64(lines)), true, _generation)));
_lastLoaded = last;
} else {
- _holder->handle(ConfigUpdate::UP(new ConfigUpdate(ConfigValue(lines, calculateContentMd5(lines)), false, _generation)));
+ _holder->handle(ConfigUpdate::UP(new ConfigUpdate(ConfigValue(lines, calculateContentXxhash64(lines)), false, _generation)));
}
}
diff --git a/config/src/vespa/config/file/filesource.h b/config/src/vespa/config/file/filesource.h
index 4f9b32c2ad4..5ed673a445c 100644
--- a/config/src/vespa/config/file/filesource.h
+++ b/config/src/vespa/config/file/filesource.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/common/source.h>
diff --git a/config/src/vespa/config/file/filesourcefactory.cpp b/config/src/vespa/config/file/filesourcefactory.cpp
index 2a9fd5323a0..8d8979dd553 100644
--- a/config/src/vespa/config/file/filesourcefactory.cpp
+++ b/config/src/vespa/config/file/filesourcefactory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "filesourcefactory.h"
#include "filesource.h"
#include <vespa/config/common/exceptions.h>
diff --git a/config/src/vespa/config/file/filesourcefactory.h b/config/src/vespa/config/file/filesourcefactory.h
index 12c3e7e192b..c5ba5769a53 100644
--- a/config/src/vespa/config/file/filesourcefactory.h
+++ b/config/src/vespa/config/file/filesourcefactory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/common/sourcefactory.h>
diff --git a/config/src/vespa/config/file_acquirer/CMakeLists.txt b/config/src/vespa/config/file_acquirer/CMakeLists.txt
index e0fdbd171da..3a4e175fd75 100644
--- a/config/src/vespa/config/file_acquirer/CMakeLists.txt
+++ b/config/src/vespa/config/file_acquirer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(config_file_acquirer OBJECT
SOURCES
file_acquirer.cpp
diff --git a/config/src/vespa/config/file_acquirer/file_acquirer.cpp b/config/src/vespa/config/file_acquirer/file_acquirer.cpp
index 1235a345198..46782cac9ca 100644
--- a/config/src/vespa/config/file_acquirer/file_acquirer.cpp
+++ b/config/src/vespa/config/file_acquirer/file_acquirer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "file_acquirer.h"
#include <vespa/fnet/frt/supervisor.h>
diff --git a/config/src/vespa/config/file_acquirer/file_acquirer.h b/config/src/vespa/config/file_acquirer/file_acquirer.h
index 31c41bd3512..4088065281d 100644
--- a/config/src/vespa/config/file_acquirer/file_acquirer.h
+++ b/config/src/vespa/config/file_acquirer/file_acquirer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/config/src/vespa/config/frt/CMakeLists.txt b/config/src/vespa/config/frt/CMakeLists.txt
index 879b32684a7..74a3916e168 100644
--- a/config/src/vespa/config/frt/CMakeLists.txt
+++ b/config/src/vespa/config/frt/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(config_frt OBJECT
SOURCES
frtsource.cpp
diff --git a/config/src/vespa/config/frt/compressioninfo.cpp b/config/src/vespa/config/frt/compressioninfo.cpp
index a29a980be02..f87c5f5d4d2 100644
--- a/config/src/vespa/config/frt/compressioninfo.cpp
+++ b/config/src/vespa/config/frt/compressioninfo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "compressioninfo.h"
#include <vespa/config/frt/protocol.h>
#include <vespa/vespalib/data/slime/inspector.h>
diff --git a/config/src/vespa/config/frt/compressioninfo.h b/config/src/vespa/config/frt/compressioninfo.h
index aa1c7ae69d8..1f74f8c3cf1 100644
--- a/config/src/vespa/config/frt/compressioninfo.h
+++ b/config/src/vespa/config/frt/compressioninfo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/frt/protocol.h>
diff --git a/config/src/vespa/config/frt/connection.h b/config/src/vespa/config/frt/connection.h
index a5fad5a7ff5..841549e0ec6 100644
--- a/config/src/vespa/config/frt/connection.h
+++ b/config/src/vespa/config/frt/connection.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/config/src/vespa/config/frt/connectionfactory.h b/config/src/vespa/config/frt/connectionfactory.h
index d2bc1a28401..dc1eadf3cf6 100644
--- a/config/src/vespa/config/frt/connectionfactory.h
+++ b/config/src/vespa/config/frt/connectionfactory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/config/src/vespa/config/frt/frtconfigagent.cpp b/config/src/vespa/config/frt/frtconfigagent.cpp
index 0e5ee4f6b05..2b66e806270 100644
--- a/config/src/vespa/config/frt/frtconfigagent.cpp
+++ b/config/src/vespa/config/frt/frtconfigagent.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "frtconfigagent.h"
#include "frtconfigrequestv3.h"
#include <vespa/config/common/trace.h>
@@ -27,7 +27,7 @@ FRTConfigAgent::handleResponse(const ConfigRequest & request, ConfigResponse::UP
{
if (LOG_WOULD_LOG(spam)) {
const ConfigKey & key(request.getKey());
- LOG(spam, "current state for %s: generation %" PRId64 " md5 %s", key.toString().c_str(), _configState.generation, _configState.md5.c_str());
+ LOG(spam, "current state for %s: generation %" PRId64 " xxhash64 %s", key.toString().c_str(), _configState.generation, _configState.xxhash64.c_str());
}
if (response->validateResponse() && !response->isError()) {
handleOKResponse(request, std::move(response));
@@ -57,12 +57,12 @@ void
FRTConfigAgent::handleUpdatedGeneration(const ConfigKey & key, const ConfigState & newState, const ConfigValue & configValue)
{
if (LOG_WOULD_LOG(spam)) {
- LOG(spam, "new generation %" PRId64 " md5:%s for key %s", newState.generation, newState.md5.c_str(), key.toString().c_str());
- LOG(spam, "Old config: md5:%s \n%s", _latest.getMd5().c_str(), _latest.asJson().c_str());
- LOG(spam, "New config: md5:%s \n%s", configValue.getMd5().c_str(), configValue.asJson().c_str());
+ LOG(spam, "new generation %" PRId64 " xxhash64:%s for key %s", newState.generation, newState.xxhash64.c_str(), key.toString().c_str());
+ LOG(spam, "Old config: xxhash64:%s \n%s", _latest.getXxhash64().c_str(), _latest.asJson().c_str());
+ LOG(spam, "New config: xxhash64:%s \n%s", configValue.getXxhash64().c_str(), configValue.asJson().c_str());
}
bool changed = false;
- if (_latest.getMd5() != configValue.getMd5()) {
+ if (_latest.getXxhash64() != configValue.getXxhash64()) {
_latest = configValue;
changed = true;
}
diff --git a/config/src/vespa/config/frt/frtconfigagent.h b/config/src/vespa/config/frt/frtconfigagent.h
index 97edefbded7..b4303537d38 100644
--- a/config/src/vespa/config/frt/frtconfigagent.h
+++ b/config/src/vespa/config/frt/frtconfigagent.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/common/configstate.h>
diff --git a/config/src/vespa/config/frt/frtconfigrequest.cpp b/config/src/vespa/config/frt/frtconfigrequest.cpp
index 0845f7408de..1673fda30f4 100644
--- a/config/src/vespa/config/frt/frtconfigrequest.cpp
+++ b/config/src/vespa/config/frt/frtconfigrequest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "frtconfigrequest.h"
#include "frtconfigresponse.h"
#include "connection.h"
diff --git a/config/src/vespa/config/frt/frtconfigrequest.h b/config/src/vespa/config/frt/frtconfigrequest.h
index 061151d5f39..c0ce6bb060a 100644
--- a/config/src/vespa/config/frt/frtconfigrequest.h
+++ b/config/src/vespa/config/frt/frtconfigrequest.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/common/configrequest.h>
diff --git a/config/src/vespa/config/frt/frtconfigrequestfactory.cpp b/config/src/vespa/config/frt/frtconfigrequestfactory.cpp
index fbc13556d14..01a9fb40301 100644
--- a/config/src/vespa/config/frt/frtconfigrequestfactory.cpp
+++ b/config/src/vespa/config/frt/frtconfigrequestfactory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "frtconfigrequestfactory.h"
#include "frtconfigrequestv3.h"
#include <vespa/vespalib/util/host_name.h>
@@ -24,7 +24,7 @@ FRTConfigRequest::UP
FRTConfigRequestFactory::createConfigRequest(const ConfigKey & key, Connection * connection,
const ConfigState & state, int64_t serverTimeout) const
{
- return make_unique<FRTConfigRequestV3>(connection, key, state.md5, state.generation, _hostName,
+ return make_unique<FRTConfigRequestV3>(connection, key, state.xxhash64, state.generation, _hostName,
serverTimeout, Trace(_traceLevel), _vespaVersion, _compressionType);
}
diff --git a/config/src/vespa/config/frt/frtconfigrequestfactory.h b/config/src/vespa/config/frt/frtconfigrequestfactory.h
index 7c37ecd76b2..96ecdc0af2a 100644
--- a/config/src/vespa/config/frt/frtconfigrequestfactory.h
+++ b/config/src/vespa/config/frt/frtconfigrequestfactory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/common/configkey.h>
diff --git a/config/src/vespa/config/frt/frtconfigrequestv3.cpp b/config/src/vespa/config/frt/frtconfigrequestv3.cpp
index e52ce5d1114..6dde698c438 100644
--- a/config/src/vespa/config/frt/frtconfigrequestv3.cpp
+++ b/config/src/vespa/config/frt/frtconfigrequestv3.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "frtconfigrequestv3.h"
#include "frtconfigresponsev3.h"
#include "connection.h"
diff --git a/config/src/vespa/config/frt/frtconfigrequestv3.h b/config/src/vespa/config/frt/frtconfigrequestv3.h
index 83cbac765f9..28fa84b7584 100644
--- a/config/src/vespa/config/frt/frtconfigrequestv3.h
+++ b/config/src/vespa/config/frt/frtconfigrequestv3.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "slimeconfigrequest.h"
diff --git a/config/src/vespa/config/frt/frtconfigresponse.cpp b/config/src/vespa/config/frt/frtconfigresponse.cpp
index 046416bcfd6..43ae3f9b192 100644
--- a/config/src/vespa/config/frt/frtconfigresponse.cpp
+++ b/config/src/vespa/config/frt/frtconfigresponse.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "frtconfigresponse.h"
#include <vespa/fnet/frt/rpcrequest.h>
diff --git a/config/src/vespa/config/frt/frtconfigresponse.h b/config/src/vespa/config/frt/frtconfigresponse.h
index 31811c6a38f..38a95f6d6cb 100644
--- a/config/src/vespa/config/frt/frtconfigresponse.h
+++ b/config/src/vespa/config/frt/frtconfigresponse.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/common/configresponse.h>
diff --git a/config/src/vespa/config/frt/frtconfigresponsev3.cpp b/config/src/vespa/config/frt/frtconfigresponsev3.cpp
index 80cdf88a79a..351f0fc8136 100644
--- a/config/src/vespa/config/frt/frtconfigresponsev3.cpp
+++ b/config/src/vespa/config/frt/frtconfigresponsev3.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "frtconfigresponsev3.h"
#include "compressioninfo.h"
#include <vespa/fnet/frt/values.h>
@@ -53,7 +53,7 @@ FRTConfigResponseV3::getResponseTypes() const
ConfigValue
FRTConfigResponseV3::readConfigValue() const
{
- vespalib::string md5(_data->get()[RESPONSE_CONFIG_MD5].asString().make_string());
+ vespalib::string xxhash64(_data->get()[RESPONSE_CONFIG_XXHASH64].asString().make_string());
CompressionInfo info;
info.deserialize(_data->get()[RESPONSE_COMPRESSION_INFO]);
auto slime = std::make_unique<Slime>();
@@ -67,9 +67,9 @@ FRTConfigResponseV3::readConfigValue() const
}
}
if (LOG_WOULD_LOG(spam)) {
- LOG(spam, "read config value md5(%s), payload size: %lu", md5.c_str(), data.memRef.size);
+ LOG(spam, "read config value xxhash64(%s), payload size: %lu", xxhash64.c_str(), data.memRef.size);
}
- return ConfigValue(std::make_shared<V3Payload>(std::move(slime)), md5);
+ return ConfigValue(std::make_shared<V3Payload>(std::move(slime)), xxhash64);
}
} // namespace config
diff --git a/config/src/vespa/config/frt/frtconfigresponsev3.h b/config/src/vespa/config/frt/frtconfigresponsev3.h
index b4addb0af9a..2f9b9e83d03 100644
--- a/config/src/vespa/config/frt/frtconfigresponsev3.h
+++ b/config/src/vespa/config/frt/frtconfigresponsev3.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "slimeconfigresponse.h"
diff --git a/config/src/vespa/config/frt/frtconnection.cpp b/config/src/vespa/config/frt/frtconnection.cpp
index 702cc06d29d..5ef1e43d1fe 100644
--- a/config/src/vespa/config/frt/frtconnection.cpp
+++ b/config/src/vespa/config/frt/frtconnection.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "frtconnection.h"
#include <vespa/config/common/errorcode.h>
#include <vespa/fnet/frt/supervisor.h>
diff --git a/config/src/vespa/config/frt/frtconnection.h b/config/src/vespa/config/frt/frtconnection.h
index a9a5f745ddb..334127117ea 100644
--- a/config/src/vespa/config/frt/frtconnection.h
+++ b/config/src/vespa/config/frt/frtconnection.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "connection.h"
diff --git a/config/src/vespa/config/frt/frtconnectionpool.cpp b/config/src/vespa/config/frt/frtconnectionpool.cpp
index 00ed9334537..58de86793fb 100644
--- a/config/src/vespa/config/frt/frtconnectionpool.cpp
+++ b/config/src/vespa/config/frt/frtconnectionpool.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "frtconnectionpool.h"
#include <vespa/vespalib/util/host_name.h>
diff --git a/config/src/vespa/config/frt/frtconnectionpool.h b/config/src/vespa/config/frt/frtconnectionpool.h
index dc758249771..6b387fbf67f 100644
--- a/config/src/vespa/config/frt/frtconnectionpool.h
+++ b/config/src/vespa/config/frt/frtconnectionpool.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "frtconnection.h"
diff --git a/config/src/vespa/config/frt/frtsource.cpp b/config/src/vespa/config/frt/frtsource.cpp
index 15aa52c6463..8fe424dbf57 100644
--- a/config/src/vespa/config/frt/frtsource.cpp
+++ b/config/src/vespa/config/frt/frtsource.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "frtconfigrequest.h"
#include "frtconfigresponse.h"
#include "frtsource.h"
diff --git a/config/src/vespa/config/frt/frtsource.h b/config/src/vespa/config/frt/frtsource.h
index eabac3bf012..993b8b3acda 100644
--- a/config/src/vespa/config/frt/frtsource.h
+++ b/config/src/vespa/config/frt/frtsource.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "connectionfactory.h"
diff --git a/config/src/vespa/config/frt/frtsourcefactory.cpp b/config/src/vespa/config/frt/frtsourcefactory.cpp
index 67e973562db..c8331cfa815 100644
--- a/config/src/vespa/config/frt/frtsourcefactory.cpp
+++ b/config/src/vespa/config/frt/frtsourcefactory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "frtsourcefactory.h"
#include "frtsource.h"
diff --git a/config/src/vespa/config/frt/frtsourcefactory.h b/config/src/vespa/config/frt/frtsourcefactory.h
index 4bbcbcb366d..23595c0d70f 100644
--- a/config/src/vespa/config/frt/frtsourcefactory.h
+++ b/config/src/vespa/config/frt/frtsourcefactory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "connectionfactory.h"
diff --git a/config/src/vespa/config/frt/protocol.cpp b/config/src/vespa/config/frt/protocol.cpp
index 4a1b0a6ddef..17e4da5bf09 100644
--- a/config/src/vespa/config/frt/protocol.cpp
+++ b/config/src/vespa/config/frt/protocol.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "protocol.h"
#include <lz4.h>
#include <vespa/vespalib/util/stringfmt.h>
@@ -25,6 +25,7 @@ const Memory REQUEST_DEF_CONTENT = "defContent";
const Memory REQUEST_CLIENT_CONFIGID = "configId";
const Memory REQUEST_CLIENT_HOSTNAME = "clientHostname";
const Memory REQUEST_CONFIG_MD5 = "configMD5";
+const Memory REQUEST_CONFIG_XXHASH64 = "configXxhash64";
const Memory REQUEST_CURRENT_GENERATION = "currentGeneration";
const Memory REQUEST_TIMEOUT = "timeout";
const Memory REQUEST_TRACE = "trace";
@@ -36,7 +37,7 @@ const Memory RESPONSE_DEF_NAMESPACE = "defNamespace";
const Memory RESPONSE_DEF_MD5 = "defMD5";
const Memory RESPONSE_CONFIGID = "configId";
const Memory RESPONSE_CLIENT_HOSTNAME = "clientHostname";
-const Memory RESPONSE_CONFIG_MD5 = "configMD5";
+const Memory RESPONSE_CONFIG_XXHASH64 = "configXxhash64";
const Memory RESPONSE_CONFIG_GENERATION = "generation";
const Memory RESPONSE_PAYLOAD = "payload";
const Memory RESPONSE_TRACE = "trace";
diff --git a/config/src/vespa/config/frt/protocol.h b/config/src/vespa/config/frt/protocol.h
index 0ec16952701..f99a4aee8a3 100644
--- a/config/src/vespa/config/frt/protocol.h
+++ b/config/src/vespa/config/frt/protocol.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/data/memory.h>
@@ -36,7 +36,7 @@ extern const vespalib::Memory REQUEST_DEF_MD5;
extern const vespalib::Memory REQUEST_DEF_CONTENT;
extern const vespalib::Memory REQUEST_CLIENT_CONFIGID;
extern const vespalib::Memory REQUEST_CLIENT_HOSTNAME;
-extern const vespalib::Memory REQUEST_CONFIG_MD5;
+extern const vespalib::Memory REQUEST_CONFIG_XXHASH64;
extern const vespalib::Memory REQUEST_CURRENT_GENERATION;
extern const vespalib::Memory REQUEST_TIMEOUT;
extern const vespalib::Memory REQUEST_TRACE;
@@ -48,7 +48,7 @@ extern const vespalib::Memory RESPONSE_DEF_NAMESPACE;
extern const vespalib::Memory RESPONSE_DEF_MD5;
extern const vespalib::Memory RESPONSE_CONFIGID;
extern const vespalib::Memory RESPONSE_CLIENT_HOSTNAME;
-extern const vespalib::Memory RESPONSE_CONFIG_MD5;
+extern const vespalib::Memory RESPONSE_CONFIG_XXHASH64;
extern const vespalib::Memory RESPONSE_CONFIG_GENERATION;
extern const vespalib::Memory RESPONSE_PAYLOAD;
extern const vespalib::Memory RESPONSE_TRACE;
diff --git a/config/src/vespa/config/frt/slimeconfigrequest.cpp b/config/src/vespa/config/frt/slimeconfigrequest.cpp
index 8a6706974f6..80a05bbc2f9 100644
--- a/config/src/vespa/config/frt/slimeconfigrequest.cpp
+++ b/config/src/vespa/config/frt/slimeconfigrequest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "slimeconfigrequest.h"
#include "connection.h"
#include <vespa/config/common/configkey.h>
@@ -23,7 +23,7 @@ const vespalib::string SlimeConfigRequest::REQUEST_TYPES = "s";
SlimeConfigRequest::SlimeConfigRequest(Connection * connection,
const ConfigKey & key,
- const vespalib::string & configMd5,
+ const vespalib::string & configXxhash64,
int64_t currentGeneration,
const vespalib::string & hostName,
int64_t serverTimeout,
@@ -35,7 +35,7 @@ SlimeConfigRequest::SlimeConfigRequest(Connection * connection,
: FRTConfigRequest(connection, key),
_data()
{
- populateSlimeRequest(key, configMd5, currentGeneration, hostName, serverTimeout, trace, vespaVersion, protocolVersion, compressionType);
+ populateSlimeRequest(key, configXxhash64, currentGeneration, hostName, serverTimeout, trace, vespaVersion, protocolVersion, compressionType);
_request->SetMethodName(methodName.c_str());
_parameters.AddString(createJsonFromSlime(_data).c_str());
}
@@ -43,13 +43,13 @@ SlimeConfigRequest::SlimeConfigRequest(Connection * connection,
bool
SlimeConfigRequest::verifyState(const ConfigState & state) const
{
- return (state.md5.compare(_data[REQUEST_CONFIG_MD5].asString().make_stringref()) == 0 &&
+ return (state.xxhash64.compare(_data[REQUEST_CONFIG_XXHASH64].asString().make_stringref()) == 0 &&
state.generation == _data[REQUEST_CURRENT_GENERATION].asLong());
}
void
SlimeConfigRequest::populateSlimeRequest(const ConfigKey & key,
- const vespalib::string & configMd5,
+ const vespalib::string & configXxhash64,
int64_t currentGeneration,
const vespalib::string & hostName,
int64_t serverTimeout,
@@ -67,7 +67,7 @@ SlimeConfigRequest::populateSlimeRequest(const ConfigKey & key,
def.serialize(root.setArray(REQUEST_DEF_CONTENT));
root.setString(REQUEST_CLIENT_CONFIGID, Memory(key.getConfigId()));
root.setString(REQUEST_CLIENT_HOSTNAME, Memory(hostName));
- root.setString(REQUEST_CONFIG_MD5, Memory(configMd5));
+ root.setString(REQUEST_CONFIG_XXHASH64, Memory(configXxhash64));
root.setLong(REQUEST_CURRENT_GENERATION, currentGeneration);
root.setLong(REQUEST_TIMEOUT, serverTimeout);
trace.serialize(root.setObject(REQUEST_TRACE));
diff --git a/config/src/vespa/config/frt/slimeconfigrequest.h b/config/src/vespa/config/frt/slimeconfigrequest.h
index 6f2f42c98d5..a0654ec9da1 100644
--- a/config/src/vespa/config/frt/slimeconfigrequest.h
+++ b/config/src/vespa/config/frt/slimeconfigrequest.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "frtconfigrequest.h"
@@ -19,7 +19,7 @@ class SlimeConfigRequest : public FRTConfigRequest {
public:
SlimeConfigRequest(Connection * connection,
const ConfigKey & key,
- const vespalib::string & configMd5,
+ const vespalib::string & configXxhash64,
int64_t currentGeneration,
const vespalib::string & hostName,
int64_t serverTimeout,
@@ -33,7 +33,7 @@ public:
virtual ConfigResponse::UP createResponse(FRT_RPCRequest * request) const override = 0;
private:
void populateSlimeRequest(const ConfigKey & key,
- const vespalib::string & configMd5,
+ const vespalib::string & configXxhash64,
int64_t currentGeneration,
const vespalib::string & hostName,
int64_t serverTimeout,
diff --git a/config/src/vespa/config/frt/slimeconfigresponse.cpp b/config/src/vespa/config/frt/slimeconfigresponse.cpp
index af224008d01..c1f3df7f674 100644
--- a/config/src/vespa/config/frt/slimeconfigresponse.cpp
+++ b/config/src/vespa/config/frt/slimeconfigresponse.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "slimeconfigresponse.h"
#include <vespa/config/common/misc.h>
#include <vespa/fnet/frt/values.h>
@@ -66,7 +66,7 @@ ConfigState
SlimeConfigResponse::readState() const
{
const Slime & data(*_data);
- return ConfigState(data.get()[RESPONSE_CONFIG_MD5].asString().make_string(),
+ return ConfigState(data.get()[RESPONSE_CONFIG_XXHASH64].asString().make_string(),
data.get()[RESPONSE_CONFIG_GENERATION].asLong(),
data.get()[RESPONSE_APPLY_ON_RESTART].asBool());
}
diff --git a/config/src/vespa/config/frt/slimeconfigresponse.h b/config/src/vespa/config/frt/slimeconfigresponse.h
index 4c6a805d6cc..09fa7f95e84 100644
--- a/config/src/vespa/config/frt/slimeconfigresponse.h
+++ b/config/src/vespa/config/frt/slimeconfigresponse.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "frtconfigresponse.h"
diff --git a/config/src/vespa/config/helper/CMakeLists.txt b/config/src/vespa/config/helper/CMakeLists.txt
index e93c994321a..f17eea2eb35 100644
--- a/config/src/vespa/config/helper/CMakeLists.txt
+++ b/config/src/vespa/config/helper/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(config_helper OBJECT
SOURCES
configfetcher.cpp
diff --git a/config/src/vespa/config/helper/configfetcher.cpp b/config/src/vespa/config/helper/configfetcher.cpp
index dda9c67f056..7a6f806c6ff 100644
--- a/config/src/vespa/config/helper/configfetcher.cpp
+++ b/config/src/vespa/config/helper/configfetcher.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configfetcher.h"
#include <vespa/config/common/exceptions.h>
diff --git a/config/src/vespa/config/helper/configfetcher.h b/config/src/vespa/config/helper/configfetcher.h
index dc9cf6299e8..e8cd6a66ebc 100644
--- a/config/src/vespa/config/helper/configfetcher.h
+++ b/config/src/vespa/config/helper/configfetcher.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configpoller.h"
diff --git a/config/src/vespa/config/helper/configfetcher.hpp b/config/src/vespa/config/helper/configfetcher.hpp
index 862e93eac68..9123c54797e 100644
--- a/config/src/vespa/config/helper/configfetcher.hpp
+++ b/config/src/vespa/config/helper/configfetcher.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace config {
diff --git a/config/src/vespa/config/helper/configgetter.h b/config/src/vespa/config/helper/configgetter.h
index eb19715e3a5..fab8ee98da4 100644
--- a/config/src/vespa/config/helper/configgetter.h
+++ b/config/src/vespa/config/helper/configgetter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/config/src/vespa/config/helper/configgetter.hpp b/config/src/vespa/config/helper/configgetter.hpp
index 588744144c2..0a757ada83e 100644
--- a/config/src/vespa/config/helper/configgetter.hpp
+++ b/config/src/vespa/config/helper/configgetter.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configgetter.h"
#include <vespa/config/subscription/configsubscriber.h>
diff --git a/config/src/vespa/config/helper/configpoller.cpp b/config/src/vespa/config/helper/configpoller.cpp
index 0ac7d46ce63..879c21bea8c 100644
--- a/config/src/vespa/config/helper/configpoller.cpp
+++ b/config/src/vespa/config/helper/configpoller.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configpoller.h"
#include <vespa/config/common/exceptions.h>
diff --git a/config/src/vespa/config/helper/configpoller.h b/config/src/vespa/config/helper/configpoller.h
index e44b9ae8e84..40fa1784f59 100644
--- a/config/src/vespa/config/helper/configpoller.h
+++ b/config/src/vespa/config/helper/configpoller.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "ifetchercallback.h"
diff --git a/config/src/vespa/config/helper/configpoller.hpp b/config/src/vespa/config/helper/configpoller.hpp
index b87df593d29..4088a311609 100644
--- a/config/src/vespa/config/helper/configpoller.hpp
+++ b/config/src/vespa/config/helper/configpoller.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace config {
diff --git a/config/src/vespa/config/helper/ifetchercallback.h b/config/src/vespa/config/helper/ifetchercallback.h
index a77dbab7cc2..a5e009c7fa3 100644
--- a/config/src/vespa/config/helper/ifetchercallback.h
+++ b/config/src/vespa/config/helper/ifetchercallback.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/configgen/configinstance.h>
diff --git a/config/src/vespa/config/helper/ihandle.h b/config/src/vespa/config/helper/ihandle.h
index 2aa30240c8c..4d8de8243d0 100644
--- a/config/src/vespa/config/helper/ihandle.h
+++ b/config/src/vespa/config/helper/ihandle.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/subscription/confighandle.h>
diff --git a/config/src/vespa/config/helper/legacy.cpp b/config/src/vespa/config/helper/legacy.cpp
index f3e73a602e4..08ca6b9c119 100644
--- a/config/src/vespa/config/helper/legacy.cpp
+++ b/config/src/vespa/config/helper/legacy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "legacy.h"
#include <vespa/vespalib/io/fileutil.h>
diff --git a/config/src/vespa/config/helper/legacy.h b/config/src/vespa/config/helper/legacy.h
index 0a6139c41b8..998b256f19f 100644
--- a/config/src/vespa/config/helper/legacy.h
+++ b/config/src/vespa/config/helper/legacy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <string>
diff --git a/config/src/vespa/config/helper/legacysubscriber.cpp b/config/src/vespa/config/helper/legacysubscriber.cpp
index ec1447bef7e..94ecb53b99c 100644
--- a/config/src/vespa/config/helper/legacysubscriber.cpp
+++ b/config/src/vespa/config/helper/legacysubscriber.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "legacysubscriber.h"
diff --git a/config/src/vespa/config/helper/legacysubscriber.h b/config/src/vespa/config/helper/legacysubscriber.h
index 7b680132d63..5e370a3a6c2 100644
--- a/config/src/vespa/config/helper/legacysubscriber.h
+++ b/config/src/vespa/config/helper/legacysubscriber.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "legacy.h"
diff --git a/config/src/vespa/config/helper/legacysubscriber.hpp b/config/src/vespa/config/helper/legacysubscriber.hpp
index 4aa383c6f9b..9610f8f78db 100644
--- a/config/src/vespa/config/helper/legacysubscriber.hpp
+++ b/config/src/vespa/config/helper/legacysubscriber.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config/common/configcontext.h>
diff --git a/config/src/vespa/config/print.h b/config/src/vespa/config/print.h
index ee0b74a395c..ddf3fabdd04 100644
--- a/config/src/vespa/config/print.h
+++ b/config/src/vespa/config/print.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/print/configwriter.h>
diff --git a/config/src/vespa/config/print/CMakeLists.txt b/config/src/vespa/config/print/CMakeLists.txt
index 3a1552a8444..7bd6d83f74e 100644
--- a/config/src/vespa/config/print/CMakeLists.txt
+++ b/config/src/vespa/config/print/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(config_print OBJECT
SOURCES
fileconfigformatter.cpp
diff --git a/config/src/vespa/config/print/asciiconfigreader.h b/config/src/vespa/config/print/asciiconfigreader.h
index 8b435f824d0..11a9da2da4e 100644
--- a/config/src/vespa/config/print/asciiconfigreader.h
+++ b/config/src/vespa/config/print/asciiconfigreader.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configreader.h"
diff --git a/config/src/vespa/config/print/asciiconfigreader.hpp b/config/src/vespa/config/print/asciiconfigreader.hpp
index b4a25f4fbbd..3a76f7536b9 100644
--- a/config/src/vespa/config/print/asciiconfigreader.hpp
+++ b/config/src/vespa/config/print/asciiconfigreader.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace config {
@@ -27,7 +27,7 @@ AsciiConfigReader<ConfigType>::read()
while (getline(_is, line)) {
lines.push_back(line);
}
- return std::unique_ptr<ConfigType>(new ConfigType(ConfigValue(lines, calculateContentMd5(lines))));
+ return std::unique_ptr<ConfigType>(new ConfigType(ConfigValue(lines, calculateContentXxhash64(lines))));
}
} // namespace config
diff --git a/config/src/vespa/config/print/asciiconfigsnapshotreader.cpp b/config/src/vespa/config/print/asciiconfigsnapshotreader.cpp
index c23ef32b68d..6493b815e8a 100644
--- a/config/src/vespa/config/print/asciiconfigsnapshotreader.cpp
+++ b/config/src/vespa/config/print/asciiconfigsnapshotreader.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "asciiconfigsnapshotreader.h"
#include "jsonconfigformatter.h"
diff --git a/config/src/vespa/config/print/asciiconfigsnapshotreader.h b/config/src/vespa/config/print/asciiconfigsnapshotreader.h
index 2191b6e6a7a..fa8321c8556 100644
--- a/config/src/vespa/config/print/asciiconfigsnapshotreader.h
+++ b/config/src/vespa/config/print/asciiconfigsnapshotreader.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configsnapshotreader.h"
diff --git a/config/src/vespa/config/print/asciiconfigsnapshotwriter.cpp b/config/src/vespa/config/print/asciiconfigsnapshotwriter.cpp
index 1e1bd78aba5..b526d26b7e2 100644
--- a/config/src/vespa/config/print/asciiconfigsnapshotwriter.cpp
+++ b/config/src/vespa/config/print/asciiconfigsnapshotwriter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "asciiconfigsnapshotwriter.h"
#include "jsonconfigformatter.h"
diff --git a/config/src/vespa/config/print/asciiconfigsnapshotwriter.h b/config/src/vespa/config/print/asciiconfigsnapshotwriter.h
index b812e4c663d..6a002e8b45f 100644
--- a/config/src/vespa/config/print/asciiconfigsnapshotwriter.h
+++ b/config/src/vespa/config/print/asciiconfigsnapshotwriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configsnapshotwriter.h"
diff --git a/config/src/vespa/config/print/asciiconfigwriter.cpp b/config/src/vespa/config/print/asciiconfigwriter.cpp
index 8b3c8a4122e..785a433ff71 100644
--- a/config/src/vespa/config/print/asciiconfigwriter.cpp
+++ b/config/src/vespa/config/print/asciiconfigwriter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "asciiconfigwriter.h"
#include "fileconfigformatter.h"
diff --git a/config/src/vespa/config/print/asciiconfigwriter.h b/config/src/vespa/config/print/asciiconfigwriter.h
index 023d2cd6536..0fbe308c509 100644
--- a/config/src/vespa/config/print/asciiconfigwriter.h
+++ b/config/src/vespa/config/print/asciiconfigwriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configwriter.h"
diff --git a/config/src/vespa/config/print/configdatabuffer.cpp b/config/src/vespa/config/print/configdatabuffer.cpp
index b0fd87a0195..f591f76aa9a 100644
--- a/config/src/vespa/config/print/configdatabuffer.cpp
+++ b/config/src/vespa/config/print/configdatabuffer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configdatabuffer.h"
#include <vespa/vespalib/data/slime/slime.h>
diff --git a/config/src/vespa/config/print/configdatabuffer.h b/config/src/vespa/config/print/configdatabuffer.h
index bb19e5e9604..97694a31b8f 100644
--- a/config/src/vespa/config/print/configdatabuffer.h
+++ b/config/src/vespa/config/print/configdatabuffer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/config/src/vespa/config/print/configformatter.h b/config/src/vespa/config/print/configformatter.h
index 880421102b7..acbe6d2cad2 100644
--- a/config/src/vespa/config/print/configformatter.h
+++ b/config/src/vespa/config/print/configformatter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configdatabuffer.h"
diff --git a/config/src/vespa/config/print/configreader.h b/config/src/vespa/config/print/configreader.h
index d4f9ec69b24..d1790cb75d2 100644
--- a/config/src/vespa/config/print/configreader.h
+++ b/config/src/vespa/config/print/configreader.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configformatter.h"
diff --git a/config/src/vespa/config/print/configsnapshotreader.h b/config/src/vespa/config/print/configsnapshotreader.h
index c5abe520e8b..1b94a005468 100644
--- a/config/src/vespa/config/print/configsnapshotreader.h
+++ b/config/src/vespa/config/print/configsnapshotreader.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/retriever/configsnapshot.h>
diff --git a/config/src/vespa/config/print/configsnapshotwriter.h b/config/src/vespa/config/print/configsnapshotwriter.h
index 988917e2f5b..ba9f8846464 100644
--- a/config/src/vespa/config/print/configsnapshotwriter.h
+++ b/config/src/vespa/config/print/configsnapshotwriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/retriever/configsnapshot.h>
diff --git a/config/src/vespa/config/print/configwriter.h b/config/src/vespa/config/print/configwriter.h
index 881acc1604e..d3c3101e43e 100644
--- a/config/src/vespa/config/print/configwriter.h
+++ b/config/src/vespa/config/print/configwriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/configgen/configinstance.h>
diff --git a/config/src/vespa/config/print/fileconfigformatter.cpp b/config/src/vespa/config/print/fileconfigformatter.cpp
index 628a9daa530..6fef2b999c6 100644
--- a/config/src/vespa/config/print/fileconfigformatter.cpp
+++ b/config/src/vespa/config/print/fileconfigformatter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fileconfigformatter.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/config/src/vespa/config/print/fileconfigformatter.h b/config/src/vespa/config/print/fileconfigformatter.h
index d76575a3134..5b3a852816f 100644
--- a/config/src/vespa/config/print/fileconfigformatter.h
+++ b/config/src/vespa/config/print/fileconfigformatter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configformatter.h"
diff --git a/config/src/vespa/config/print/fileconfigreader.h b/config/src/vespa/config/print/fileconfigreader.h
index 8ee569be94c..1d47d9c04a7 100644
--- a/config/src/vespa/config/print/fileconfigreader.h
+++ b/config/src/vespa/config/print/fileconfigreader.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configreader.h"
diff --git a/config/src/vespa/config/print/fileconfigreader.hpp b/config/src/vespa/config/print/fileconfigreader.hpp
index bfebb4b89b9..dec390ef358 100644
--- a/config/src/vespa/config/print/fileconfigreader.hpp
+++ b/config/src/vespa/config/print/fileconfigreader.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fileconfigreader.h"
#include <vespa/config/common/exceptions.h>
@@ -44,7 +44,7 @@ FileConfigReader<ConfigType>::read()
for (std::getline(f, line); f; std::getline(f, line)) {
lines.push_back(line);
}
- return std::unique_ptr<ConfigType>(new ConfigType(ConfigValue(lines, calculateContentMd5(lines))));
+ return std::unique_ptr<ConfigType>(new ConfigType(ConfigValue(lines, calculateContentXxhash64(lines))));
}
} // namespace config
diff --git a/config/src/vespa/config/print/fileconfigsnapshotreader.cpp b/config/src/vespa/config/print/fileconfigsnapshotreader.cpp
index 80c817b5af4..a671677d76b 100644
--- a/config/src/vespa/config/print/fileconfigsnapshotreader.cpp
+++ b/config/src/vespa/config/print/fileconfigsnapshotreader.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fileconfigsnapshotreader.h"
#include "jsonconfigformatter.h"
diff --git a/config/src/vespa/config/print/fileconfigsnapshotreader.h b/config/src/vespa/config/print/fileconfigsnapshotreader.h
index e5d42135f9f..1e782898969 100644
--- a/config/src/vespa/config/print/fileconfigsnapshotreader.h
+++ b/config/src/vespa/config/print/fileconfigsnapshotreader.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configsnapshotreader.h"
diff --git a/config/src/vespa/config/print/fileconfigsnapshotwriter.cpp b/config/src/vespa/config/print/fileconfigsnapshotwriter.cpp
index d11c8636fc3..d2b1ce8e122 100644
--- a/config/src/vespa/config/print/fileconfigsnapshotwriter.cpp
+++ b/config/src/vespa/config/print/fileconfigsnapshotwriter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fileconfigsnapshotwriter.h"
#include "jsonconfigformatter.h"
diff --git a/config/src/vespa/config/print/fileconfigsnapshotwriter.h b/config/src/vespa/config/print/fileconfigsnapshotwriter.h
index ed856dbf153..71f547933a4 100644
--- a/config/src/vespa/config/print/fileconfigsnapshotwriter.h
+++ b/config/src/vespa/config/print/fileconfigsnapshotwriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configsnapshotwriter.h"
diff --git a/config/src/vespa/config/print/fileconfigwriter.cpp b/config/src/vespa/config/print/fileconfigwriter.cpp
index fdbbe3ffa83..b23e96f149d 100644
--- a/config/src/vespa/config/print/fileconfigwriter.cpp
+++ b/config/src/vespa/config/print/fileconfigwriter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <fstream>
#include "fileconfigwriter.h"
diff --git a/config/src/vespa/config/print/fileconfigwriter.h b/config/src/vespa/config/print/fileconfigwriter.h
index 7becb182558..ea3a7d9ffb9 100644
--- a/config/src/vespa/config/print/fileconfigwriter.h
+++ b/config/src/vespa/config/print/fileconfigwriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configwriter.h"
diff --git a/config/src/vespa/config/print/istreamconfigreader.h b/config/src/vespa/config/print/istreamconfigreader.h
index b99cd3ac051..511fbe2f538 100644
--- a/config/src/vespa/config/print/istreamconfigreader.h
+++ b/config/src/vespa/config/print/istreamconfigreader.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configreader.h"
diff --git a/config/src/vespa/config/print/istreamconfigreader.hpp b/config/src/vespa/config/print/istreamconfigreader.hpp
index 70f7b7e5f28..11b41ddbe2f 100644
--- a/config/src/vespa/config/print/istreamconfigreader.hpp
+++ b/config/src/vespa/config/print/istreamconfigreader.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <istream>
@@ -31,7 +31,7 @@ IstreamConfigReader<ConfigType>::read()
while (getline(_is, line)) {
lines.push_back(line);
}
- return std::unique_ptr<ConfigType>(new ConfigType(ConfigValue(lines, calculateContentMd5(lines))));
+ return std::unique_ptr<ConfigType>(new ConfigType(ConfigValue(lines, calculateContentXxhash64(lines))));
}
} // namespace config
diff --git a/config/src/vespa/config/print/jsonconfigformatter.cpp b/config/src/vespa/config/print/jsonconfigformatter.cpp
index 18e846bd5ac..9dd33b6a468 100644
--- a/config/src/vespa/config/print/jsonconfigformatter.cpp
+++ b/config/src/vespa/config/print/jsonconfigformatter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "jsonconfigformatter.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/config/src/vespa/config/print/jsonconfigformatter.h b/config/src/vespa/config/print/jsonconfigformatter.h
index c195f5a51e9..86ffdd0fe75 100644
--- a/config/src/vespa/config/print/jsonconfigformatter.h
+++ b/config/src/vespa/config/print/jsonconfigformatter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configformatter.h"
diff --git a/config/src/vespa/config/print/ostreamconfigwriter.cpp b/config/src/vespa/config/print/ostreamconfigwriter.cpp
index 7a607fb4c36..6067275c2e4 100644
--- a/config/src/vespa/config/print/ostreamconfigwriter.cpp
+++ b/config/src/vespa/config/print/ostreamconfigwriter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "ostreamconfigwriter.h"
#include "fileconfigformatter.h"
diff --git a/config/src/vespa/config/print/ostreamconfigwriter.h b/config/src/vespa/config/print/ostreamconfigwriter.h
index 7ecbe9448c4..a1e4a5cc526 100644
--- a/config/src/vespa/config/print/ostreamconfigwriter.h
+++ b/config/src/vespa/config/print/ostreamconfigwriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configwriter.h"
diff --git a/config/src/vespa/config/raw/CMakeLists.txt b/config/src/vespa/config/raw/CMakeLists.txt
index 1a4f623510d..c42baed0a81 100644
--- a/config/src/vespa/config/raw/CMakeLists.txt
+++ b/config/src/vespa/config/raw/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(config_raw OBJECT
SOURCES
rawsource.cpp
diff --git a/config/src/vespa/config/raw/rawsource.cpp b/config/src/vespa/config/raw/rawsource.cpp
index 2b38cff214c..af3d7f6f7f5 100644
--- a/config/src/vespa/config/raw/rawsource.cpp
+++ b/config/src/vespa/config/raw/rawsource.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rawsource.h"
#include <vespa/config/common/misc.h>
#include <vespa/vespalib/stllike/asciistream.h>
@@ -16,7 +16,7 @@ void
RawSource::getConfig()
{
auto lines(readConfig());
- ConfigValue value(lines, calculateContentMd5(lines));
+ ConfigValue value(lines, calculateContentXxhash64(lines));
_holder->handle(ConfigUpdate::UP(new ConfigUpdate(value, true, 1)));
}
diff --git a/config/src/vespa/config/raw/rawsource.h b/config/src/vespa/config/raw/rawsource.h
index fcdd5fa4c88..2b15e459de4 100644
--- a/config/src/vespa/config/raw/rawsource.h
+++ b/config/src/vespa/config/raw/rawsource.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/common/source.h>
diff --git a/config/src/vespa/config/raw/rawsourcefactory.cpp b/config/src/vespa/config/raw/rawsourcefactory.cpp
index ad5af591c0d..d6f3dfd6be9 100644
--- a/config/src/vespa/config/raw/rawsourcefactory.cpp
+++ b/config/src/vespa/config/raw/rawsourcefactory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config/common/source.h>
#include "rawsourcefactory.h"
diff --git a/config/src/vespa/config/raw/rawsourcefactory.h b/config/src/vespa/config/raw/rawsourcefactory.h
index 015849b05c2..191547b5d8c 100644
--- a/config/src/vespa/config/raw/rawsourcefactory.h
+++ b/config/src/vespa/config/raw/rawsourcefactory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/common/sourcefactory.h>
diff --git a/config/src/vespa/config/retriever/CMakeLists.txt b/config/src/vespa/config/retriever/CMakeLists.txt
index d06b5fb904e..fc72f44d710 100644
--- a/config/src/vespa/config/retriever/CMakeLists.txt
+++ b/config/src/vespa/config/retriever/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(config_retriever OBJECT
SOURCES
configretriever.cpp
diff --git a/config/src/vespa/config/retriever/configkeyset.cpp b/config/src/vespa/config/retriever/configkeyset.cpp
index 9921d99b41a..522bea1671d 100644
--- a/config/src/vespa/config/retriever/configkeyset.cpp
+++ b/config/src/vespa/config/retriever/configkeyset.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configkeyset.h"
diff --git a/config/src/vespa/config/retriever/configkeyset.h b/config/src/vespa/config/retriever/configkeyset.h
index e0a77f50efb..670b15ed80e 100644
--- a/config/src/vespa/config/retriever/configkeyset.h
+++ b/config/src/vespa/config/retriever/configkeyset.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/config/src/vespa/config/retriever/configkeyset.hpp b/config/src/vespa/config/retriever/configkeyset.hpp
index 60fcbf7d84a..c9f989b8271 100644
--- a/config/src/vespa/config/retriever/configkeyset.hpp
+++ b/config/src/vespa/config/retriever/configkeyset.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace config {
diff --git a/config/src/vespa/config/retriever/configretriever.cpp b/config/src/vespa/config/retriever/configretriever.cpp
index a77c8114322..20c81742821 100644
--- a/config/src/vespa/config/retriever/configretriever.cpp
+++ b/config/src/vespa/config/retriever/configretriever.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configretriever.h"
#include <vespa/config/common/exceptions.h>
diff --git a/config/src/vespa/config/retriever/configretriever.h b/config/src/vespa/config/retriever/configretriever.h
index 1207a17af97..ad57f4887fc 100644
--- a/config/src/vespa/config/retriever/configretriever.h
+++ b/config/src/vespa/config/retriever/configretriever.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configsnapshot.h"
diff --git a/config/src/vespa/config/retriever/configsnapshot.cpp b/config/src/vespa/config/retriever/configsnapshot.cpp
index 7aaf4ffd6f8..e999538e713 100644
--- a/config/src/vespa/config/retriever/configsnapshot.cpp
+++ b/config/src/vespa/config/retriever/configsnapshot.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configsnapshot.h"
#include <vespa/config/subscription/configsubscription.h>
@@ -150,7 +150,7 @@ void
ConfigSnapshot::serializeValueV2(Cursor & cursor, const Value & value) const
{
cursor.setDouble("lastChanged", value.first);
- cursor.setString("md5", Memory(value.second.getMd5()));
+ cursor.setString("xxhash64", Memory(value.second.getXxhash64()));
value.second.serializeV2(cursor.setObject("payload"));
}
@@ -225,7 +225,7 @@ ConfigSnapshot::deserializeValueV1(Inspector & inspector) const
for (size_t i = 0; i < s.children(); i++) {
payload.push_back(s[i].asString().make_string());
}
- return Value(lastChanged, ConfigValue(payload, calculateContentMd5(payload)));
+ return Value(lastChanged, ConfigValue(payload, calculateContentXxhash64(payload)));
}
namespace {
@@ -247,10 +247,10 @@ std::pair<int64_t, ConfigValue>
ConfigSnapshot::deserializeValueV2(Inspector & inspector) const
{
int64_t lastChanged = static_cast<int64_t>(inspector["lastChanged"].asDouble());
- vespalib::string md5(inspector["md5"].asString().make_string());
+ vespalib::string xxhash64(inspector["xxhash64"].asString().make_string());
auto payload = std::make_unique<FixedPayload>();
copySlimeObject(inspector["payload"], payload->getData().setObject());
- return Value(lastChanged, ConfigValue(std::move(payload) , md5));
+ return Value(lastChanged, ConfigValue(std::move(payload), xxhash64));
}
}
diff --git a/config/src/vespa/config/retriever/configsnapshot.h b/config/src/vespa/config/retriever/configsnapshot.h
index a52c27a48e2..b7d49ca2584 100644
--- a/config/src/vespa/config/retriever/configsnapshot.h
+++ b/config/src/vespa/config/retriever/configsnapshot.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configkeyset.h"
diff --git a/config/src/vespa/config/retriever/configsnapshot.hpp b/config/src/vespa/config/retriever/configsnapshot.hpp
index ef45e71ca71..387fc9712e0 100644
--- a/config/src/vespa/config/retriever/configsnapshot.hpp
+++ b/config/src/vespa/config/retriever/configsnapshot.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace config {
diff --git a/config/src/vespa/config/retriever/fixedconfigsubscriber.cpp b/config/src/vespa/config/retriever/fixedconfigsubscriber.cpp
index fa904b54a0d..07049a8ac2b 100644
--- a/config/src/vespa/config/retriever/fixedconfigsubscriber.cpp
+++ b/config/src/vespa/config/retriever/fixedconfigsubscriber.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fixedconfigsubscriber.h"
namespace config {
diff --git a/config/src/vespa/config/retriever/fixedconfigsubscriber.h b/config/src/vespa/config/retriever/fixedconfigsubscriber.h
index de6201f74a2..5ae684db782 100644
--- a/config/src/vespa/config/retriever/fixedconfigsubscriber.h
+++ b/config/src/vespa/config/retriever/fixedconfigsubscriber.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configkeyset.h"
diff --git a/config/src/vespa/config/retriever/genericconfigsubscriber.cpp b/config/src/vespa/config/retriever/genericconfigsubscriber.cpp
index 14f1b7304ca..96146bb8927 100644
--- a/config/src/vespa/config/retriever/genericconfigsubscriber.cpp
+++ b/config/src/vespa/config/retriever/genericconfigsubscriber.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "genericconfigsubscriber.h"
namespace config {
diff --git a/config/src/vespa/config/retriever/genericconfigsubscriber.h b/config/src/vespa/config/retriever/genericconfigsubscriber.h
index c0d7cb11b0c..17d37ffb7ff 100644
--- a/config/src/vespa/config/retriever/genericconfigsubscriber.h
+++ b/config/src/vespa/config/retriever/genericconfigsubscriber.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/subscription/configsubscriptionset.h>
diff --git a/config/src/vespa/config/retriever/simpleconfigretriever.cpp b/config/src/vespa/config/retriever/simpleconfigretriever.cpp
index 62e2405e809..fc4f21718af 100644
--- a/config/src/vespa/config/retriever/simpleconfigretriever.cpp
+++ b/config/src/vespa/config/retriever/simpleconfigretriever.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simpleconfigretriever.h"
namespace config {
diff --git a/config/src/vespa/config/retriever/simpleconfigretriever.h b/config/src/vespa/config/retriever/simpleconfigretriever.h
index 3bd35baddce..1e19789db9f 100644
--- a/config/src/vespa/config/retriever/simpleconfigretriever.h
+++ b/config/src/vespa/config/retriever/simpleconfigretriever.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/subscription/configsubscriptionset.h>
diff --git a/config/src/vespa/config/retriever/simpleconfigurer.cpp b/config/src/vespa/config/retriever/simpleconfigurer.cpp
index 0091fa7bfd5..74022cfd6a3 100644
--- a/config/src/vespa/config/retriever/simpleconfigurer.cpp
+++ b/config/src/vespa/config/retriever/simpleconfigurer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simpleconfigurer.h"
#include <cassert>
diff --git a/config/src/vespa/config/retriever/simpleconfigurer.h b/config/src/vespa/config/retriever/simpleconfigurer.h
index e55660b8a4d..aa6508c75a2 100644
--- a/config/src/vespa/config/retriever/simpleconfigurer.h
+++ b/config/src/vespa/config/retriever/simpleconfigurer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "simpleconfigretriever.h"
diff --git a/config/src/vespa/config/set/CMakeLists.txt b/config/src/vespa/config/set/CMakeLists.txt
index e21b54be893..b766e2f5049 100644
--- a/config/src/vespa/config/set/CMakeLists.txt
+++ b/config/src/vespa/config/set/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(config_set OBJECT
SOURCES
configsetsource.cpp
diff --git a/config/src/vespa/config/set/configinstancesourcefactory.cpp b/config/src/vespa/config/set/configinstancesourcefactory.cpp
index 7f963847997..3ed0fdc932e 100644
--- a/config/src/vespa/config/set/configinstancesourcefactory.cpp
+++ b/config/src/vespa/config/set/configinstancesourcefactory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configinstancesourcefactory.h"
@@ -14,8 +14,8 @@ public:
void close() override { }
void getConfig() override {
std::vector<vespalib::string> lines(_buffer.getlines());
- std::string currentMd5(config::calculateContentMd5(lines));
- _holder->handle(config::ConfigUpdate::UP(new config::ConfigUpdate(config::ConfigValue(lines, currentMd5), true, _generation)));
+ std::string currentXxhash64(config::calculateContentXxhash64(lines));
+ _holder->handle(config::ConfigUpdate::UP(new config::ConfigUpdate(config::ConfigValue(lines, currentXxhash64), true, _generation)));
}
void reload(int64_t generation) override { _generation = generation; }
diff --git a/config/src/vespa/config/set/configinstancesourcefactory.h b/config/src/vespa/config/set/configinstancesourcefactory.h
index 43dc6cab516..279da055d91 100644
--- a/config/src/vespa/config/set/configinstancesourcefactory.h
+++ b/config/src/vespa/config/set/configinstancesourcefactory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configsetsource.h"
diff --git a/config/src/vespa/config/set/configsetsource.cpp b/config/src/vespa/config/set/configsetsource.cpp
index e6ab890a9df..c60126b17e7 100644
--- a/config/src/vespa/config/set/configsetsource.cpp
+++ b/config/src/vespa/config/set/configsetsource.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configsetsource.h"
#include <vespa/config/print/asciiconfigwriter.h>
@@ -30,16 +30,16 @@ ConfigSetSource::getConfig()
AsciiConfigWriter writer(ss);
writer.write(*instance);
std::vector<vespalib::string> lines(ss.getlines());
- std::string currentMd5(calculateContentMd5(lines));
+ std::string currentXxhash64(calculateContentXxhash64(lines));
- if (isGenerationNewer(_generation, _lastState.generation) && currentMd5.compare(_lastState.md5) != 0) {
+ if (isGenerationNewer(_generation, _lastState.generation) && currentXxhash64.compare(_lastState.xxhash64) != 0) {
LOG(debug, "New generation, updating");
- _holder->handle(ConfigUpdate::UP(new ConfigUpdate(ConfigValue(lines, currentMd5), true, _generation)));
- _lastState.md5 = currentMd5;
+ _holder->handle(ConfigUpdate::UP(new ConfigUpdate(ConfigValue(lines, currentXxhash64), true, _generation)));
+ _lastState.xxhash64 = currentXxhash64;
_lastState.generation = _generation;
} else {
LOG(debug, "Sending timestamp update");
- _holder->handle(ConfigUpdate::UP(new ConfigUpdate(ConfigValue(lines, currentMd5), false, _generation)));
+ _holder->handle(ConfigUpdate::UP(new ConfigUpdate(ConfigValue(lines, currentXxhash64), false, _generation)));
_lastState.generation = _generation;
}
}
diff --git a/config/src/vespa/config/set/configsetsource.h b/config/src/vespa/config/set/configsetsource.h
index 983fc7d8fce..aa9e8425f96 100644
--- a/config/src/vespa/config/set/configsetsource.h
+++ b/config/src/vespa/config/set/configsetsource.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/common/source.h>
diff --git a/config/src/vespa/config/set/configsetsourcefactory.cpp b/config/src/vespa/config/set/configsetsourcefactory.cpp
index ebdf9cc3bca..b2ca99879cb 100644
--- a/config/src/vespa/config/set/configsetsourcefactory.cpp
+++ b/config/src/vespa/config/set/configsetsourcefactory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configsetsourcefactory.h"
namespace config {
diff --git a/config/src/vespa/config/set/configsetsourcefactory.h b/config/src/vespa/config/set/configsetsourcefactory.h
index 56b3dbf91ee..88e2eedb255 100644
--- a/config/src/vespa/config/set/configsetsourcefactory.h
+++ b/config/src/vespa/config/set/configsetsourcefactory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configsetsource.h"
diff --git a/config/src/vespa/config/subscription/CMakeLists.txt b/config/src/vespa/config/subscription/CMakeLists.txt
index 4ae0e86dfa2..bd87d339290 100644
--- a/config/src/vespa/config/subscription/CMakeLists.txt
+++ b/config/src/vespa/config/subscription/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(config_subscription OBJECT
SOURCES
sourcespec.cpp
diff --git a/config/src/vespa/config/subscription/confighandle.h b/config/src/vespa/config/subscription/confighandle.h
index a6eb9fdee09..69532e5ba48 100644
--- a/config/src/vespa/config/subscription/confighandle.h
+++ b/config/src/vespa/config/subscription/confighandle.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/config/src/vespa/config/subscription/confighandle.hpp b/config/src/vespa/config/subscription/confighandle.hpp
index df4f01d0b40..9ce94808601 100644
--- a/config/src/vespa/config/subscription/confighandle.hpp
+++ b/config/src/vespa/config/subscription/confighandle.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace config {
diff --git a/config/src/vespa/config/subscription/configinstancespec.h b/config/src/vespa/config/subscription/configinstancespec.h
index 5e813086715..2294b37e1d1 100644
--- a/config/src/vespa/config/subscription/configinstancespec.h
+++ b/config/src/vespa/config/subscription/configinstancespec.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/config/src/vespa/config/subscription/configprovider.h b/config/src/vespa/config/subscription/configprovider.h
index cdd4e857902..f898db0f0c7 100644
--- a/config/src/vespa/config/subscription/configprovider.h
+++ b/config/src/vespa/config/subscription/configprovider.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/common/configvalue.h>
diff --git a/config/src/vespa/config/subscription/configsubscriber.cpp b/config/src/vespa/config/subscription/configsubscriber.cpp
index cb735e4353a..2627b479df9 100644
--- a/config/src/vespa/config/subscription/configsubscriber.cpp
+++ b/config/src/vespa/config/subscription/configsubscriber.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configsubscriber.h"
#include <vespa/config/common/configcontext.h>
diff --git a/config/src/vespa/config/subscription/configsubscriber.h b/config/src/vespa/config/subscription/configsubscriber.h
index d7139b5d61f..1cc82b6db8c 100644
--- a/config/src/vespa/config/subscription/configsubscriber.h
+++ b/config/src/vespa/config/subscription/configsubscriber.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "confighandle.h"
diff --git a/config/src/vespa/config/subscription/configsubscriber.hpp b/config/src/vespa/config/subscription/configsubscriber.hpp
index 17cd817b092..28c54240748 100644
--- a/config/src/vespa/config/subscription/configsubscriber.hpp
+++ b/config/src/vespa/config/subscription/configsubscriber.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace config {
diff --git a/config/src/vespa/config/subscription/configsubscription.cpp b/config/src/vespa/config/subscription/configsubscription.cpp
index 93f8b99521c..4aaa30323c7 100644
--- a/config/src/vespa/config/subscription/configsubscription.cpp
+++ b/config/src/vespa/config/subscription/configsubscription.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config/common/exceptions.h>
#include <vespa/config/common/misc.h>
diff --git a/config/src/vespa/config/subscription/configsubscription.h b/config/src/vespa/config/subscription/configsubscription.h
index a48fddaa41c..08dcac6a580 100644
--- a/config/src/vespa/config/subscription/configsubscription.h
+++ b/config/src/vespa/config/subscription/configsubscription.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "subscriptionid.h"
#include <vespa/config/common/iconfigholder.h>
diff --git a/config/src/vespa/config/subscription/configsubscriptionset.cpp b/config/src/vespa/config/subscription/configsubscriptionset.cpp
index 659458fb533..63c9f287350 100644
--- a/config/src/vespa/config/subscription/configsubscriptionset.cpp
+++ b/config/src/vespa/config/subscription/configsubscriptionset.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configsubscriptionset.h"
#include <vespa/config/common/exceptions.h>
diff --git a/config/src/vespa/config/subscription/configsubscriptionset.h b/config/src/vespa/config/subscription/configsubscriptionset.h
index 3e91f1cc68d..ea37a133ef8 100644
--- a/config/src/vespa/config/subscription/configsubscriptionset.h
+++ b/config/src/vespa/config/subscription/configsubscriptionset.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
//
#pragma once
diff --git a/config/src/vespa/config/subscription/configuri.cpp b/config/src/vespa/config/subscription/configuri.cpp
index 041a840c548..001e7adbb8b 100644
--- a/config/src/vespa/config/subscription/configuri.cpp
+++ b/config/src/vespa/config/subscription/configuri.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configuri.h"
#include "configinstancespec.h"
#include <vespa/config/common/configcontext.h>
diff --git a/config/src/vespa/config/subscription/configuri.h b/config/src/vespa/config/subscription/configuri.h
index 11a4fcf4990..7fe32312d30 100644
--- a/config/src/vespa/config/subscription/configuri.h
+++ b/config/src/vespa/config/subscription/configuri.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/common/iconfigcontext.h>
diff --git a/config/src/vespa/config/subscription/sourcespec.cpp b/config/src/vespa/config/subscription/sourcespec.cpp
index e355e0c1bd6..c8fd577935d 100644
--- a/config/src/vespa/config/subscription/sourcespec.cpp
+++ b/config/src/vespa/config/subscription/sourcespec.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sourcespec.h"
#include "configinstancespec.h"
#include <vespa/config/common/exceptions.h>
diff --git a/config/src/vespa/config/subscription/sourcespec.h b/config/src/vespa/config/subscription/sourcespec.h
index 4a04cfec521..040c16204e3 100644
--- a/config/src/vespa/config/subscription/sourcespec.h
+++ b/config/src/vespa/config/subscription/sourcespec.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/config/src/vespa/config/subscription/subscriptionid.h b/config/src/vespa/config/subscription/subscriptionid.h
index 67dd905f523..f01968718d7 100644
--- a/config/src/vespa/config/subscription/subscriptionid.h
+++ b/config/src/vespa/config/subscription/subscriptionid.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdint>
diff --git a/config_test/README.md b/config_test/README.md
index 66ebbc8ba83..7ff633d935f 100644
--- a/config_test/README.md
+++ b/config_test/README.md
@@ -1,3 +1,3 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Test using cloud config without Vespa
diff --git a/config_test/pom.xml b/config_test/pom.xml
index 925fbacf99c..b87ac3aed7c 100644
--- a/config_test/pom.xml
+++ b/config_test/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -48,6 +48,8 @@
</build>
<properties>
<maven.deploy.skip>true</maven.deploy.skip>
+ <maven.javadoc.skip>true</maven.javadoc.skip>
+ <skipNexusStagingDeployMojo>true</skipNexusStagingDeployMojo>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
diff --git a/config_test/src/main/java/com/yahoo/configtest/Demo.java b/config_test/src/main/java/com/yahoo/configtest/Demo.java
index d6295c6a135..792fffa36a9 100644
--- a/config_test/src/main/java/com/yahoo/configtest/Demo.java
+++ b/config_test/src/main/java/com/yahoo/configtest/Demo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.configtest;
/**
diff --git a/config_test/src/main/resources/configdefinitions/configtest.greeting.def b/config_test/src/main/resources/configdefinitions/configtest.greeting.def
index 924c1331e2c..901362ae386 100644
--- a/config_test/src/main/resources/configdefinitions/configtest.greeting.def
+++ b/config_test/src/main/resources/configdefinitions/configtest.greeting.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=configtest
greeting string default="Hello, world."
diff --git a/configd/CMakeLists.txt b/configd/CMakeLists.txt
index a83ecd3425e..c3fdad82c9e 100644
--- a/configd/CMakeLists.txt
+++ b/configd/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
APPS
src/apps/sentinel
diff --git a/configd/src/apps/cmd/CMakeLists.txt b/configd/src/apps/cmd/CMakeLists.txt
index c05fd1de37f..f02865cf9a9 100644
--- a/configd/src/apps/cmd/CMakeLists.txt
+++ b/configd/src/apps/cmd/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(configd_vespa-sentinel-cmd_app
SOURCES
main.cpp
diff --git a/configd/src/apps/sentinel/CMakeLists.txt b/configd/src/apps/sentinel/CMakeLists.txt
index 0323df2864f..de384e8a3cd 100644
--- a/configd/src/apps/sentinel/CMakeLists.txt
+++ b/configd/src/apps/sentinel/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(configd_config-sentinel_app
SOURCES
check-completion-handler.cpp
diff --git a/configd/src/apps/sentinel/cc-result.h b/configd/src/apps/sentinel/cc-result.h
index 3468cf4324a..8fba446de49 100644
--- a/configd/src/apps/sentinel/cc-result.h
+++ b/configd/src/apps/sentinel/cc-result.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/configd/src/apps/sentinel/check-completion-handler.cpp b/configd/src/apps/sentinel/check-completion-handler.cpp
index 3ccda17e617..c39c05ef8f6 100644
--- a/configd/src/apps/sentinel/check-completion-handler.cpp
+++ b/configd/src/apps/sentinel/check-completion-handler.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "check-completion-handler.h"
diff --git a/configd/src/apps/sentinel/check-completion-handler.h b/configd/src/apps/sentinel/check-completion-handler.h
index 008e456f6d7..366f8d09b5d 100644
--- a/configd/src/apps/sentinel/check-completion-handler.h
+++ b/configd/src/apps/sentinel/check-completion-handler.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/configd/src/apps/sentinel/config-owner.cpp b/configd/src/apps/sentinel/config-owner.cpp
index 89d5796ae79..40fe5267dae 100644
--- a/configd/src/apps/sentinel/config-owner.cpp
+++ b/configd/src/apps/sentinel/config-owner.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "config-owner.h"
#include <vespa/vespalib/util/exceptions.h>
diff --git a/configd/src/apps/sentinel/config-owner.h b/configd/src/apps/sentinel/config-owner.h
index b72aed59271..a9083b553fa 100644
--- a/configd/src/apps/sentinel/config-owner.h
+++ b/configd/src/apps/sentinel/config-owner.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/configd/src/apps/sentinel/connectivity.cpp b/configd/src/apps/sentinel/connectivity.cpp
index 5996d709c5d..b9641cc19e0 100644
--- a/configd/src/apps/sentinel/connectivity.cpp
+++ b/configd/src/apps/sentinel/connectivity.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "config-owner.h"
#include "connectivity.h"
@@ -75,8 +75,10 @@ void classifyConnFails(ConnectivityMap &connectivityMap,
LOG_ASSERT(cmIter != connectivityMap.end());
OutwardCheckContext cornerContext(goodNeighborSpecs.size(), nameToCheck, portToCheck, rpcServer.orb());
ConnectivityMap cornerProbes;
+ int ping_timeout = 1000;
for (const auto & hp : goodNeighborSpecs) {
- cornerProbes.try_emplace(hp.first, spec(hp), cornerContext);
+ cornerProbes.try_emplace(hp.first, spec(hp), cornerContext, ping_timeout);
+ ping_timeout += 20;
}
cornerContext.latch.await();
size_t numReportsUp = 0;
@@ -92,7 +94,7 @@ void classifyConnFails(ConnectivityMap &connectivityMap,
myHostname,
rpcServer.getPort(),
rpcServer.orb());
- OutwardCheck check(spec(toClassify), reverseContext);
+ OutwardCheck check(spec(toClassify), reverseContext, 1000);
reverseContext.latch.await();
auto secondResult = check.result();
if (secondResult == CcResult::CONN_FAIL) {
@@ -152,8 +154,10 @@ Connectivity::checkConnectivity(RpcServer &rpcServer) {
rpcServer.getPort(),
rpcServer.orb());
ConnectivityMap connectivityMap;
+ int ping_timeout = 1000;
for (const auto &host_and_port : _checkSpecs) {
- connectivityMap.try_emplace(host_and_port.first, spec(host_and_port), checkContext);
+ connectivityMap.try_emplace(host_and_port.first, spec(host_and_port), checkContext, ping_timeout);
+ ping_timeout += 20;
}
checkContext.latch.await();
classifyConnFails(connectivityMap, _checkSpecs, rpcServer);
diff --git a/configd/src/apps/sentinel/connectivity.h b/configd/src/apps/sentinel/connectivity.h
index 8d923387ffa..f4ea7bf271b 100644
--- a/configd/src/apps/sentinel/connectivity.h
+++ b/configd/src/apps/sentinel/connectivity.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/configd/src/apps/sentinel/env.cpp b/configd/src/apps/sentinel/env.cpp
index c345de1df36..44942080791 100644
--- a/configd/src/apps/sentinel/env.cpp
+++ b/configd/src/apps/sentinel/env.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "env.h"
#include "check-completion-handler.h"
diff --git a/configd/src/apps/sentinel/env.h b/configd/src/apps/sentinel/env.h
index 1bd3a7380ba..01531c425bf 100644
--- a/configd/src/apps/sentinel/env.h
+++ b/configd/src/apps/sentinel/env.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/configd/src/apps/sentinel/line-splitter.cpp b/configd/src/apps/sentinel/line-splitter.cpp
index a7725f1ae67..23747c9085c 100644
--- a/configd/src/apps/sentinel/line-splitter.cpp
+++ b/configd/src/apps/sentinel/line-splitter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <errno.h>
diff --git a/configd/src/apps/sentinel/line-splitter.h b/configd/src/apps/sentinel/line-splitter.h
index f6802004ef7..425406cb8e7 100644
--- a/configd/src/apps/sentinel/line-splitter.h
+++ b/configd/src/apps/sentinel/line-splitter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace config::sentinel {
diff --git a/configd/src/apps/sentinel/manager.cpp b/configd/src/apps/sentinel/manager.cpp
index 839f7c96ae2..631f63febd5 100644
--- a/configd/src/apps/sentinel/manager.cpp
+++ b/configd/src/apps/sentinel/manager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "manager.h"
#include "output-connection.h"
diff --git a/configd/src/apps/sentinel/manager.h b/configd/src/apps/sentinel/manager.h
index 24bd67cbc49..8aaa406d578 100644
--- a/configd/src/apps/sentinel/manager.h
+++ b/configd/src/apps/sentinel/manager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "cmdq.h"
diff --git a/configd/src/apps/sentinel/metrics.cpp b/configd/src/apps/sentinel/metrics.cpp
index ed31e7a4d80..204e8476e51 100644
--- a/configd/src/apps/sentinel/metrics.cpp
+++ b/configd/src/apps/sentinel/metrics.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "metrics.h"
#include <vespa/vespalib/metrics/simple_metrics.h>
diff --git a/configd/src/apps/sentinel/metrics.h b/configd/src/apps/sentinel/metrics.h
index 365b7cc2ecf..d87220c52e1 100644
--- a/configd/src/apps/sentinel/metrics.h
+++ b/configd/src/apps/sentinel/metrics.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/metrics/simple_metrics.h>
diff --git a/configd/src/apps/sentinel/model-owner.cpp b/configd/src/apps/sentinel/model-owner.cpp
index cfa9f1f6bf5..8b1db60c73d 100644
--- a/configd/src/apps/sentinel/model-owner.cpp
+++ b/configd/src/apps/sentinel/model-owner.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "model-owner.h"
#include <vespa/vespalib/util/exceptions.h>
diff --git a/configd/src/apps/sentinel/model-owner.h b/configd/src/apps/sentinel/model-owner.h
index 0513463e955..6c3038b4b55 100644
--- a/configd/src/apps/sentinel/model-owner.h
+++ b/configd/src/apps/sentinel/model-owner.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/configd/src/apps/sentinel/output-connection.cpp b/configd/src/apps/sentinel/output-connection.cpp
index caf97c92eea..49413888abc 100644
--- a/configd/src/apps/sentinel/output-connection.cpp
+++ b/configd/src/apps/sentinel/output-connection.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <unistd.h>
#include <stdarg.h>
#include <cstdio>
diff --git a/configd/src/apps/sentinel/output-connection.h b/configd/src/apps/sentinel/output-connection.h
index fa8ef0e3270..39ed43f26e4 100644
--- a/configd/src/apps/sentinel/output-connection.h
+++ b/configd/src/apps/sentinel/output-connection.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "line-splitter.h"
diff --git a/configd/src/apps/sentinel/outward-check.cpp b/configd/src/apps/sentinel/outward-check.cpp
index 391e5fee8bf..b81c8e23750 100644
--- a/configd/src/apps/sentinel/outward-check.cpp
+++ b/configd/src/apps/sentinel/outward-check.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "outward-check.h"
#include <vespa/log/log.h>
@@ -9,7 +9,7 @@ namespace config::sentinel {
OutwardCheckContext::~OutwardCheckContext() = default;
-OutwardCheck::OutwardCheck(const std::string &spec, OutwardCheckContext &context)
+OutwardCheck::OutwardCheck(const std::string &spec, OutwardCheckContext &context, int ping_timeout_ms)
: _spec(spec),
_context(context)
{
@@ -18,8 +18,10 @@ OutwardCheck::OutwardCheck(const std::string &spec, OutwardCheckContext &context
_req->SetMethodName("sentinel.check.connectivity");
_req->GetParams()->AddString(context.targetHostname.c_str());
_req->GetParams()->AddInt32(context.targetPortnum);
- _req->GetParams()->AddInt32(500);
- _target->InvokeAsync(_req, 1.500, this);
+ _req->GetParams()->AddInt32(ping_timeout_ms);
+ double ping_s = ping_timeout_ms * 0.001;
+ double outer_timeout = 1.0 + (2 * ping_s);
+ _target->InvokeAsync(_req, outer_timeout, this);
}
OutwardCheck::~OutwardCheck() = default;
diff --git a/configd/src/apps/sentinel/outward-check.h b/configd/src/apps/sentinel/outward-check.h
index 0e53b9010dc..1047fc669a2 100644
--- a/configd/src/apps/sentinel/outward-check.h
+++ b/configd/src/apps/sentinel/outward-check.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -38,7 +38,7 @@ private:
std::string _spec;
OutwardCheckContext &_context;
public:
- OutwardCheck(const std::string &spec, OutwardCheckContext &context);
+ OutwardCheck(const std::string &spec, OutwardCheckContext &context, int ping_timeout);
virtual ~OutwardCheck();
void RequestDone(FRT_RPCRequest *req) override;
bool ok() const { return _result == CcResult::ALL_OK; }
diff --git a/configd/src/apps/sentinel/peer-check.cpp b/configd/src/apps/sentinel/peer-check.cpp
index b8060742355..0af5a6fb58f 100644
--- a/configd/src/apps/sentinel/peer-check.cpp
+++ b/configd/src/apps/sentinel/peer-check.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "peer-check.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/configd/src/apps/sentinel/peer-check.h b/configd/src/apps/sentinel/peer-check.h
index ac124106387..505cb43affa 100644
--- a/configd/src/apps/sentinel/peer-check.h
+++ b/configd/src/apps/sentinel/peer-check.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/configd/src/apps/sentinel/report-connectivity.cpp b/configd/src/apps/sentinel/report-connectivity.cpp
index 1ea7365aa3f..8417384dda9 100644
--- a/configd/src/apps/sentinel/report-connectivity.cpp
+++ b/configd/src/apps/sentinel/report-connectivity.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "report-connectivity.h"
#include "connectivity.h"
@@ -24,6 +24,7 @@ ReportConnectivity::ReportConnectivity(FRT_RPCRequest *req, int timeout_ms, FRT_
_remaining = map.size();
for (const auto & [ hostname, port ] : map) {
_checks.emplace_back(std::make_unique<PeerCheck>(*this, hostname, port, orb, timeout_ms));
+ timeout_ms += 20;
}
} else {
_parentRequest->SetError(FRTE_RPC_METHOD_FAILED, "failed getting model config");
diff --git a/configd/src/apps/sentinel/report-connectivity.h b/configd/src/apps/sentinel/report-connectivity.h
index 1f243b73028..67206fa3585 100644
--- a/configd/src/apps/sentinel/report-connectivity.h
+++ b/configd/src/apps/sentinel/report-connectivity.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/configd/src/apps/sentinel/sentinel-tester.sh b/configd/src/apps/sentinel/sentinel-tester.sh
index 2c016d97107..122c7c2dd6e 100755
--- a/configd/src/apps/sentinel/sentinel-tester.sh
+++ b/configd/src/apps/sentinel/sentinel-tester.sh
@@ -1,4 +1,4 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
sleep 1
kill -SEGV $$
diff --git a/configd/src/apps/sentinel/sentinel.cpp b/configd/src/apps/sentinel/sentinel.cpp
index 32f4708188c..18b40e8ec34 100644
--- a/configd/src/apps/sentinel/sentinel.cpp
+++ b/configd/src/apps/sentinel/sentinel.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "manager.h"
#include <vespa/config/common/exceptions.h>
diff --git a/configd/src/apps/sentinel/service.cpp b/configd/src/apps/sentinel/service.cpp
index d1dab4bb26f..16ca132c29d 100644
--- a/configd/src/apps/sentinel/service.cpp
+++ b/configd/src/apps/sentinel/service.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "service.h"
#include "output-connection.h"
@@ -125,7 +125,7 @@ Service::terminate(bool catchable, bool dumpState)
return 0;
} else {
if (dumpState && _state != KILLING) {
- vespalib::string pstackCmd = make_string("pstack %d > %s/%s.pstack.%d 2>&1",
+ vespalib::string pstackCmd = make_string("ulimit -c 0; pstack %d > %s/%s.pstack.%d 2>&1",
_pid, getVespaTempDir().c_str(), name().c_str(), _pid);
LOG(info, "%s:%d failed to stop. Stack dumping with %s", name().c_str(), _pid, pstackCmd.c_str());
int pstackRet = system(pstackCmd.c_str());
diff --git a/configd/src/apps/sentinel/service.h b/configd/src/apps/sentinel/service.h
index 8ef9893a014..6e4e0a60232 100644
--- a/configd/src/apps/sentinel/service.h
+++ b/configd/src/apps/sentinel/service.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "metrics.h"
diff --git a/configd/src/apps/sentinel/state-api.cpp b/configd/src/apps/sentinel/state-api.cpp
index e63fee1863b..00481eaa5dc 100644
--- a/configd/src/apps/sentinel/state-api.cpp
+++ b/configd/src/apps/sentinel/state-api.cpp
@@ -1,3 +1,3 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "state-api.h"
diff --git a/configd/src/apps/sentinel/state-api.h b/configd/src/apps/sentinel/state-api.h
index 94c62209bec..2cb2d381821 100644
--- a/configd/src/apps/sentinel/state-api.h
+++ b/configd/src/apps/sentinel/state-api.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/configd/src/apps/sentinel/status-callback.cpp b/configd/src/apps/sentinel/status-callback.cpp
index 0bf11050b8e..056f3350063 100644
--- a/configd/src/apps/sentinel/status-callback.cpp
+++ b/configd/src/apps/sentinel/status-callback.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "status-callback.h"
namespace config::sentinel {
diff --git a/configd/src/apps/sentinel/status-callback.h b/configd/src/apps/sentinel/status-callback.h
index 54100277fdc..f9218007b9d 100644
--- a/configd/src/apps/sentinel/status-callback.h
+++ b/configd/src/apps/sentinel/status-callback.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/configd/src/apps/su/CMakeLists.txt b/configd/src/apps/su/CMakeLists.txt
index e06db1da341..0825e2d0b50 100644
--- a/configd/src/apps/su/CMakeLists.txt
+++ b/configd/src/apps/su/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(configd_vespa-run-as-vespa-user_app
SOURCES
main.cpp
diff --git a/configd/src/apps/su/main.cpp b/configd/src/apps/su/main.cpp
index 095bbdb6844..abc353e6360 100644
--- a/configd/src/apps/su/main.cpp
+++ b/configd/src/apps/su/main.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
@@ -28,6 +28,23 @@ int main(int argc, char** argv)
gid_t g = p->pw_gid;
uid_t u = p->pw_uid;
+ gid_t grouplist[256];
+ int group_arr_sz = 256;
+#ifdef __APPLE__
+ int mac_gid = g;
+ int mac_groups[256];
+ int ggl = getgrouplist(username, mac_gid, mac_groups, &group_arr_sz);
+ if (ggl < 0) {
+ group_arr_sz = 0;
+ } else {
+ for (int i = 0; i < group_arr_sz; ++i) {
+ grouplist[i] = (gid_t) mac_groups[i];
+ }
+ }
+#else
+ int ggl = getgrouplist(username, g, grouplist, &group_arr_sz);
+#endif
+
gid_t oldg = getgid();
uid_t oldu = getuid();
@@ -36,7 +53,11 @@ int main(int argc, char** argv)
return 1;
}
size_t listsize = 1;
- gid_t grouplist[1] = { g };
+ if (ggl >= 0 && group_arr_sz > 0) {
+ listsize = group_arr_sz;
+ } else {
+ grouplist[0] = g;
+ }
if ((g != oldg || u != oldu) && setgroups(listsize, grouplist) != 0) {
perror("FATAL error: could not setgroups");
return 1;
diff --git a/configd/src/tests/configd/CMakeLists.txt b/configd/src/tests/configd/CMakeLists.txt
index 39f140296c1..44dc35f20c7 100644
--- a/configd/src/tests/configd/CMakeLists.txt
+++ b/configd/src/tests/configd/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
add_test(NAME configd_configd_test COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/run-sentinel.sh)
diff --git a/configd/src/tests/configd/run-sentinel.sh b/configd/src/tests/configd/run-sentinel.sh
index 32aa9e62f52..4e1765cfa87 100755
--- a/configd/src/tests/configd/run-sentinel.sh
+++ b/configd/src/tests/configd/run-sentinel.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
if ../../apps/sentinel/vespa-config-sentinel > tmp.log 2>&1 ; then
diff --git a/configd/src/tests/messages/CMakeLists.txt b/configd/src/tests/messages/CMakeLists.txt
index a7aef4d2a5f..5954682385c 100644
--- a/configd/src/tests/messages/CMakeLists.txt
+++ b/configd/src/tests/messages/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(configd_messages_test_app TEST
SOURCES
messages.cpp
diff --git a/configd/src/tests/messages/messages.cpp b/configd/src/tests/messages/messages.cpp
index c86fb4e5103..4fd1d5f3a5c 100644
--- a/configd/src/tests/messages/messages.cpp
+++ b/configd/src/tests/messages/messages.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/configdefinitions/CMakeLists.txt b/configdefinitions/CMakeLists.txt
index ee78759254a..e032ab51445 100644
--- a/configdefinitions/CMakeLists.txt
+++ b/configdefinitions/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/configdefinitions/pom.xml b/configdefinitions/pom.xml
index 97aa75ee90b..d618ba151bf 100644
--- a/configdefinitions/pom.xml
+++ b/configdefinitions/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/configdefinitions/src/main/java/com/yahoo/cloud/config/package-info.java b/configdefinitions/src/main/java/com/yahoo/cloud/config/package-info.java
index b03441aed0c..f143339d4dd 100644
--- a/configdefinitions/src/main/java/com/yahoo/cloud/config/package-info.java
+++ b/configdefinitions/src/main/java/com/yahoo/cloud/config/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.cloud.config;
diff --git a/configdefinitions/src/main/java/com/yahoo/vespa/config/content/core/package-info.java b/configdefinitions/src/main/java/com/yahoo/vespa/config/content/core/package-info.java
index a85b025fc08..22c3371c1d7 100644
--- a/configdefinitions/src/main/java/com/yahoo/vespa/config/content/core/package-info.java
+++ b/configdefinitions/src/main/java/com/yahoo/vespa/config/content/core/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.config.content.core;
diff --git a/configdefinitions/src/main/java/com/yahoo/vespa/config/content/package-info.java b/configdefinitions/src/main/java/com/yahoo/vespa/config/content/package-info.java
index 7bae88f6de5..bde038a64f0 100644
--- a/configdefinitions/src/main/java/com/yahoo/vespa/config/content/package-info.java
+++ b/configdefinitions/src/main/java/com/yahoo/vespa/config/content/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.config.content;
diff --git a/configdefinitions/src/main/java/com/yahoo/vespa/config/content/reindexing/package-info.java b/configdefinitions/src/main/java/com/yahoo/vespa/config/content/reindexing/package-info.java
index 7821a4c7462..1eca5562e87 100644
--- a/configdefinitions/src/main/java/com/yahoo/vespa/config/content/reindexing/package-info.java
+++ b/configdefinitions/src/main/java/com/yahoo/vespa/config/content/reindexing/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.config.content.reindexing;
diff --git a/configdefinitions/src/main/java/com/yahoo/vespa/config/core/package-info.java b/configdefinitions/src/main/java/com/yahoo/vespa/config/core/package-info.java
index 4f6c35c00b9..11ddbd3613b 100644
--- a/configdefinitions/src/main/java/com/yahoo/vespa/config/core/package-info.java
+++ b/configdefinitions/src/main/java/com/yahoo/vespa/config/core/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.config.core;
diff --git a/configdefinitions/src/main/java/com/yahoo/vespa/config/search/package-info.java b/configdefinitions/src/main/java/com/yahoo/vespa/config/search/package-info.java
index 2010cad56bd..20ef3d9808a 100644
--- a/configdefinitions/src/main/java/com/yahoo/vespa/config/search/package-info.java
+++ b/configdefinitions/src/main/java/com/yahoo/vespa/config/search/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.config.search;
diff --git a/configdefinitions/src/main/java/com/yahoo/vespa/config/storage/package-info.java b/configdefinitions/src/main/java/com/yahoo/vespa/config/storage/package-info.java
index a58fe394731..851a8b8c7b6 100644
--- a/configdefinitions/src/main/java/com/yahoo/vespa/config/storage/package-info.java
+++ b/configdefinitions/src/main/java/com/yahoo/vespa/config/storage/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.config.storage;
diff --git a/configdefinitions/src/main/java/com/yahoo/vespa/configdefinition/package-info.java b/configdefinitions/src/main/java/com/yahoo/vespa/configdefinition/package-info.java
index 95aedf3a5ac..06c8e57c92f 100644
--- a/configdefinitions/src/main/java/com/yahoo/vespa/configdefinition/package-info.java
+++ b/configdefinitions/src/main/java/com/yahoo/vespa/configdefinition/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.configdefinition;
diff --git a/configdefinitions/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/config/package-info.java b/configdefinitions/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/config/package-info.java
index 8c0e276b3d3..2ccb4c4e31c 100644
--- a/configdefinitions/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/config/package-info.java
+++ b/configdefinitions/src/main/java/com/yahoo/vespa/hosted/athenz/instanceproviderservice/config/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.athenz.instanceproviderservice.config;
diff --git a/configdefinitions/src/main/java/com/yahoo/vespa/orchestrator/config/package-info.java b/configdefinitions/src/main/java/com/yahoo/vespa/orchestrator/config/package-info.java
index f6ee478cc9f..af2e374fc9c 100644
--- a/configdefinitions/src/main/java/com/yahoo/vespa/orchestrator/config/package-info.java
+++ b/configdefinitions/src/main/java/com/yahoo/vespa/orchestrator/config/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.orchestrator.config;
diff --git a/configdefinitions/src/vespa/CMakeLists.txt b/configdefinitions/src/vespa/CMakeLists.txt
index 2365fd22c01..3735a8ae57a 100644
--- a/configdefinitions/src/vespa/CMakeLists.txt
+++ b/configdefinitions/src/vespa/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(configdefinitions
SOURCES
INSTALL lib64
@@ -20,8 +20,6 @@ vespa_generate_config(configdefinitions curator.def)
install_config_definition(curator.def cloud.config.curator.def)
vespa_generate_config(configdefinitions dispatch.def)
install_config_definition(dispatch.def vespa.config.search.dispatch.def)
-vespa_generate_config(configdefinitions filereferences.def)
-install_config_definition(filereferences.def cloud.config.filedistribution.filereferences.def)
vespa_generate_config(configdefinitions fleetcontroller.def)
install_config_definition(fleetcontroller.def vespa.config.content.fleetcontroller.def)
vespa_generate_config(configdefinitions ilscripts.def)
diff --git a/configdefinitions/src/vespa/all-clusters-bucket-spaces.def b/configdefinitions/src/vespa/all-clusters-bucket-spaces.def
index 7676bc2a03f..cdd61ec0547 100644
--- a/configdefinitions/src/vespa/all-clusters-bucket-spaces.def
+++ b/configdefinitions/src/vespa/all-clusters-bucket-spaces.def
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content
## This config contains the document types handled by all content clusters
diff --git a/configdefinitions/src/vespa/application-id.def b/configdefinitions/src/vespa/application-id.def
index 72f69f48519..2407909026f 100644
--- a/configdefinitions/src/vespa/application-id.def
+++ b/configdefinitions/src/vespa/application-id.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Application Id config (tenant, application, instance)
namespace=cloud.config
diff --git a/configdefinitions/src/vespa/athenz-provider-service.def b/configdefinitions/src/vespa/athenz-provider-service.def
index bd929cb17d4..0363f299cd6 100644
--- a/configdefinitions/src/vespa/athenz-provider-service.def
+++ b/configdefinitions/src/vespa/athenz-provider-service.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.hosted.athenz.instanceproviderservice.config
# Athenz domain
diff --git a/configdefinitions/src/vespa/attributes.def b/configdefinitions/src/vespa/attributes.def
index 46e1674e9b9..0fdb3b2489f 100644
--- a/configdefinitions/src/vespa/attributes.def
+++ b/configdefinitions/src/vespa/attributes.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search
attribute[].name string
@@ -11,6 +11,7 @@ attribute[].removeifzero bool default=false
attribute[].createifnonexistent bool default=false
attribute[].fastsearch bool default=false
attribute[].huge bool default=false
+attribute[].paged bool default=false
# An attribute marked mutable can be updated by a query.
attribute[].ismutable bool default=false
attribute[].sortascending bool default=true
diff --git a/configdefinitions/src/vespa/bucketspaces.def b/configdefinitions/src/vespa/bucketspaces.def
index c9468850018..bbfdfa1f9d3 100644
--- a/configdefinitions/src/vespa/bucketspaces.def
+++ b/configdefinitions/src/vespa/bucketspaces.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content.core
## This config contains the document types handled by a given content cluster
diff --git a/configdefinitions/src/vespa/cluster-info.def b/configdefinitions/src/vespa/cluster-info.def
index f5e94ad61b3..fe5d922e6ae 100644
--- a/configdefinitions/src/vespa/cluster-info.def
+++ b/configdefinitions/src/vespa/cluster-info.def
@@ -1,10 +1,11 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Information about the cluster the subscriber is a part of
namespace=cloud.config
# clusterId is same as clustername in model
clusterId string
nodeCount int
+nodeIndices[] int
services[].index int default=-1
services[].hostname string default="(nohostname)"
diff --git a/configdefinitions/src/vespa/cluster-list.def b/configdefinitions/src/vespa/cluster-list.def
index ad6f9715eb9..d3ffa47351e 100644
--- a/configdefinitions/src/vespa/cluster-list.def
+++ b/configdefinitions/src/vespa/cluster-list.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=cloud.config
storage[].name string
diff --git a/configdefinitions/src/vespa/configserver.def b/configdefinitions/src/vespa/configserver.def
index d489bf2012e..21a2e7064ac 100644
--- a/configdefinitions/src/vespa/configserver.def
+++ b/configdefinitions/src/vespa/configserver.def
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=cloud.config
# Ports
diff --git a/configdefinitions/src/vespa/curator.def b/configdefinitions/src/vespa/curator.def
index 700f9951af4..c762766a567 100644
--- a/configdefinitions/src/vespa/curator.def
+++ b/configdefinitions/src/vespa/curator.def
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=cloud.config
# hostname and port of servers that curator will connect to
diff --git a/configdefinitions/src/vespa/dispatch.def b/configdefinitions/src/vespa/dispatch.def
index 150fe2e1603..17f42a73bfd 100644
--- a/configdefinitions/src/vespa/dispatch.def
+++ b/configdefinitions/src/vespa/dispatch.def
@@ -1,4 +1,4 @@
-# Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Configuration of dispatch from container nodes to search clusters
namespace=vespa.config.search
diff --git a/configdefinitions/src/vespa/distribution.def b/configdefinitions/src/vespa/distribution.def
index d0cb4165ac9..9c5c9f71fd0 100644
--- a/configdefinitions/src/vespa/distribution.def
+++ b/configdefinitions/src/vespa/distribution.def
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content
##
diff --git a/configdefinitions/src/vespa/filereferences.def b/configdefinitions/src/vespa/filereferences.def
deleted file mode 100644
index 03e071959ce..00000000000
--- a/configdefinitions/src/vespa/filereferences.def
+++ /dev/null
@@ -1,3 +0,0 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-namespace=cloud.config.filedistribution
-filereferences[] string
diff --git a/configdefinitions/src/vespa/fleetcontroller.def b/configdefinitions/src/vespa/fleetcontroller.def
index b6ea50507ca..6f08ad75f6e 100644
--- a/configdefinitions/src/vespa/fleetcontroller.def
+++ b/configdefinitions/src/vespa/fleetcontroller.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content
## Name of VDS cluster
diff --git a/configdefinitions/src/vespa/ilscripts.def b/configdefinitions/src/vespa/ilscripts.def
index 901e87dbd04..503cccb0892 100644
--- a/configdefinitions/src/vespa/ilscripts.def
+++ b/configdefinitions/src/vespa/ilscripts.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.configdefinition
## The maximum number of occurrences of a given term to index per field
diff --git a/configdefinitions/src/vespa/imported-fields.def b/configdefinitions/src/vespa/imported-fields.def
index 0947ff63e2a..105725976e5 100644
--- a/configdefinitions/src/vespa/imported-fields.def
+++ b/configdefinitions/src/vespa/imported-fields.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search
# The name of an imported attribute field in context of this document type.
diff --git a/configdefinitions/src/vespa/indexschema.def b/configdefinitions/src/vespa/indexschema.def
index 245570ef7b5..d8e33533499 100644
--- a/configdefinitions/src/vespa/indexschema.def
+++ b/configdefinitions/src/vespa/indexschema.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
## Config specifying the index fields and field collections that are part of an index schema.
namespace=vespa.config.search
diff --git a/configdefinitions/src/vespa/lb-services.def b/configdefinitions/src/vespa/lb-services.def
index 521cadfb457..e5dcdc7692e 100644
--- a/configdefinitions/src/vespa/lb-services.def
+++ b/configdefinitions/src/vespa/lb-services.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Config for load balancer that needs to know about all services for
# all tenants and applications in a config server cluster
diff --git a/configdefinitions/src/vespa/load-type.def b/configdefinitions/src/vespa/load-type.def
index 2e3f65cfbba..0a44975e252 100644
--- a/configdefinitions/src/vespa/load-type.def
+++ b/configdefinitions/src/vespa/load-type.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
## This config is used to define load types in VESPA. Load types are merely
## a way to distinguish types of load, as to present such types differently.
## For instance, some metrics will be presented per load type, such that you
diff --git a/configdefinitions/src/vespa/logforwarder.def b/configdefinitions/src/vespa/logforwarder.def
index ab56589298f..60a607098e0 100644
--- a/configdefinitions/src/vespa/logforwarder.def
+++ b/configdefinitions/src/vespa/logforwarder.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=cloud.config
# only splunk type config for now
diff --git a/configdefinitions/src/vespa/messagetyperouteselectorpolicy.def b/configdefinitions/src/vespa/messagetyperouteselectorpolicy.def
index 7fbd6e45bd7..4555ed3d83a 100644
--- a/configdefinitions/src/vespa/messagetyperouteselectorpolicy.def
+++ b/configdefinitions/src/vespa/messagetyperouteselectorpolicy.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content
# Default route if no override is set for a type.
diff --git a/configdefinitions/src/vespa/model.def b/configdefinitions/src/vespa/model.def
index 59c04cee143..e08d23d45b6 100644
--- a/configdefinitions/src/vespa/model.def
+++ b/configdefinitions/src/vespa/model.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=cloud.config
vespaVersion string default="unknown"
diff --git a/configdefinitions/src/vespa/orchestrator.def b/configdefinitions/src/vespa/orchestrator.def
index ab52c777398..cba221e445f 100644
--- a/configdefinitions/src/vespa/orchestrator.def
+++ b/configdefinitions/src/vespa/orchestrator.def
@@ -1,5 +1,8 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.orchestrator.config
# TODO: Change the default to actual latency in real setup.
serviceMonitorConvergenceLatencySeconds int default=0
+
+# The number of services in the routing/container cluster of hosted-vespa.routing.default.
+numProxies int default=0
diff --git a/configdefinitions/src/vespa/persistence.def b/configdefinitions/src/vespa/persistence.def
index b2709dedc57..137514f1715 100644
--- a/configdefinitions/src/vespa/persistence.def
+++ b/configdefinitions/src/vespa/persistence.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content
## If set, causes the service layer to trigger an abort of any queued
diff --git a/configdefinitions/src/vespa/rank-profiles.def b/configdefinitions/src/vespa/rank-profiles.def
index 525930c990b..b0f7a2f5ded 100644
--- a/configdefinitions/src/vespa/rank-profiles.def
+++ b/configdefinitions/src/vespa/rank-profiles.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search
## name of this rank profile. maps to table index for internal use.
diff --git a/configdefinitions/src/vespa/reindexing.def b/configdefinitions/src/vespa/reindexing.def
index ef5174f9bde..c58e81a93a9 100644
--- a/configdefinitions/src/vespa/reindexing.def
+++ b/configdefinitions/src/vespa/reindexing.def
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Reindexing status per document type, for a Vespa application
namespace=vespa.config.content.reindexing
diff --git a/configdefinitions/src/vespa/sentinel.def b/configdefinitions/src/vespa/sentinel.def
index 72cde14c550..cccf931938a 100644
--- a/configdefinitions/src/vespa/sentinel.def
+++ b/configdefinitions/src/vespa/sentinel.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=cloud.config
## The port where sentinel should run its telnet interface
@@ -23,10 +23,10 @@ application.region string default="default"
# if we have more problems than the following limits allow:
## Percentage of nodes that must be up and fully OK, minimum
-connectivity.minOkPercent int default=30
+connectivity.minOkPercent int default=50
## Absolute number of nodes with confirmed network connectivity problems, maximum
-connectivity.maxBadCount int default=3
+connectivity.maxBadCount int default=1
## The command to run. This will be run by sh -c, and the following
## environment variables are defined: $ROOT, $VESPA_SERVICE_NAME,
diff --git a/configdefinitions/src/vespa/slobroks.def b/configdefinitions/src/vespa/slobroks.def
index b4e5536d2df..2913f2bcbad 100644
--- a/configdefinitions/src/vespa/slobroks.def
+++ b/configdefinitions/src/vespa/slobroks.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=cloud.config
### All params must be flagged as 'restart' because this config is manually
diff --git a/configdefinitions/src/vespa/specialtokens.def b/configdefinitions/src/vespa/specialtokens.def
index 1e6addcf358..5e9ac4064dc 100644
--- a/configdefinitions/src/vespa/specialtokens.def
+++ b/configdefinitions/src/vespa/specialtokens.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
## Named lists of special tokens - string which should be
## treated as words no matter what characters they consist of.
## A special token can also optionally be replaced by another
diff --git a/configdefinitions/src/vespa/stateserver.def b/configdefinitions/src/vespa/stateserver.def
index a25844fa148..36778aa73de 100644
--- a/configdefinitions/src/vespa/stateserver.def
+++ b/configdefinitions/src/vespa/stateserver.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.core
# Port used for serving the state/vN api
diff --git a/configdefinitions/src/vespa/stor-distribution.def b/configdefinitions/src/vespa/stor-distribution.def
index 518626228c1..7c8afdf7682 100644
--- a/configdefinitions/src/vespa/stor-distribution.def
+++ b/configdefinitions/src/vespa/stor-distribution.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content
## Redundancy decides how many copies of documents will be stored. Documents
diff --git a/configdefinitions/src/vespa/stor-filestor.def b/configdefinitions/src/vespa/stor-filestor.def
index a8466987560..88028cef394 100644
--- a/configdefinitions/src/vespa/stor-filestor.def
+++ b/configdefinitions/src/vespa/stor-filestor.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content
## DETECT FAILURE PARAMETERS
diff --git a/configdefinitions/src/vespa/summary.def b/configdefinitions/src/vespa/summary.def
index 26b0e4a4a37..5169df7d72e 100644
--- a/configdefinitions/src/vespa/summary.def
+++ b/configdefinitions/src/vespa/summary.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search
defaultsummaryid int default=-1
diff --git a/configdefinitions/src/vespa/summarymap.def b/configdefinitions/src/vespa/summarymap.def
index a994309e207..d3431d03708 100644
--- a/configdefinitions/src/vespa/summarymap.def
+++ b/configdefinitions/src/vespa/summarymap.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search
## The default output summary class id, -1 to use the stored summary class id
diff --git a/configdefinitions/src/vespa/upgrading.def b/configdefinitions/src/vespa/upgrading.def
index 3f610c9352d..3d9b7fa563b 100644
--- a/configdefinitions/src/vespa/upgrading.def
+++ b/configdefinitions/src/vespa/upgrading.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content
## Config specifying cluster global parameters for a storage cluster.
diff --git a/configdefinitions/src/vespa/zookeeper-server.def b/configdefinitions/src/vespa/zookeeper-server.def
index b08fc8eeafe..cf923d58d7d 100644
--- a/configdefinitions/src/vespa/zookeeper-server.def
+++ b/configdefinitions/src/vespa/zookeeper-server.def
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=cloud.config
# Vespa home is prepended if the file is relative
diff --git a/configdefinitions/src/vespa/zookeepers.def b/configdefinitions/src/vespa/zookeepers.def
index d12bdd334ca..be4b1b1ace5 100644
--- a/configdefinitions/src/vespa/zookeepers.def
+++ b/configdefinitions/src/vespa/zookeepers.def
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=cloud.config
zookeeperserverlist string
diff --git a/configgen/CMakeLists.txt b/configgen/CMakeLists.txt
deleted file mode 100644
index 107037f8008..00000000000
--- a/configgen/CMakeLists.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-install_java_artifact(configgen)
diff --git a/configgen/pom.xml b/configgen/pom.xml
index a335e345234..2f0d4fd7410 100644
--- a/configgen/pom.xml
+++ b/configgen/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java b/configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java
index 2ebe7ad03bf..548bd14ccb3 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
import com.yahoo.config.codegen.LeafCNode.FileLeaf;
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/CNode.java b/configgen/src/main/java/com/yahoo/config/codegen/CNode.java
index 1c1fb5f5bce..90bd8ded822 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/CNode.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/CNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
import java.util.StringTokenizer;
@@ -73,10 +73,6 @@ public abstract class CNode {
return defVersion;
}
- void setVersion(String version) {
- defVersion = version;
- }
-
public String getNamespace() {
if (defNamespace != null) return defNamespace;
if (defPackage != null) return defPackage;
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/ClassBuilder.java b/configgen/src/main/java/com/yahoo/config/codegen/ClassBuilder.java
index 890be3e371b..1ac817e7091 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/ClassBuilder.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/ClassBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
/**
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/CodegenRuntimeException.java b/configgen/src/main/java/com/yahoo/config/codegen/CodegenRuntimeException.java
index 9b32ccf8733..586e1e8bc94 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/CodegenRuntimeException.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/CodegenRuntimeException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
/**
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/ConfigGenerator.java b/configgen/src/main/java/com/yahoo/config/codegen/ConfigGenerator.java
index e6f305b3847..b9a93995f46 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/ConfigGenerator.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/ConfigGenerator.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
import com.yahoo.config.codegen.LeafCNode.BooleanLeaf;
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/ConfiggenUtil.java b/configgen/src/main/java/com/yahoo/config/codegen/ConfiggenUtil.java
index 3f714fdd22c..5a18fdb66c3 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/ConfiggenUtil.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/ConfiggenUtil.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
import java.util.Arrays;
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java b/configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java
index c2539b53b28..149bcced29c 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
import java.io.FileWriter;
@@ -98,8 +98,12 @@ public class CppClassBuilder implements ClassBuilder {
String newHeader = headerWriter.toString();
String newBody = bodyWriter.toString();
- File headerFile = new File(rootDir, relativePathUnderRoot + "/" + getFileName(root, "h"));
- File bodyFile = new File(rootDir, relativePathUnderRoot + "/" + getFileName(root, "cpp"));
+ String prefix = "";
+ if (relativePathUnderRoot != null) {
+ prefix = relativePathUnderRoot + "/";
+ }
+ File headerFile = new File(rootDir, prefix + getFileName(root, "h"));
+ File bodyFile = new File(rootDir, prefix + getFileName(root, "cpp"));
writeFile(headerFile, newHeader);
writeFile(bodyFile, newBody);
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/DefLine.java b/configgen/src/main/java/com/yahoo/config/codegen/DefLine.java
index 2cc93f95df0..eeca50201b7 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/DefLine.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/DefLine.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
import java.util.regex.Matcher;
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/DefParser.java b/configgen/src/main/java/com/yahoo/config/codegen/DefParser.java
index 4822b0cf271..34b07b7d098 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/DefParser.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/DefParser.java
@@ -1,9 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
import java.io.*;
-import java.util.List;
import java.util.ArrayList;
+import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -18,6 +18,7 @@ public class DefParser {
public static final String DEFAULT_PACKAGE_PREFIX = "com.yahoo.";
static final Pattern commentPattern = Pattern.compile("^\\s*#+\\s*(.*?)\\s*$");
+ // TODO: Version is not used anymore, remove in Vespa 8
public static final Pattern versionPattern = Pattern.compile("^(version\\s*=\\s*)([0-9][0-9-]*)$");
// Namespace/package must start with a letter, since Java (Java language Spec, section 3.8) and C++ identifiers cannot start with a digit
public static final Pattern namespacePattern = getNamespacePattern("namespace");
@@ -38,7 +39,7 @@ public class DefParser {
/**
* Creates a new parser for a .def file with the given name and that can be accessed by the given reader.
*
- * @param name The name of the .def file (not including version number and the '.def' suffix).
+ * @param name The name of the .def file (not including the '.def' suffix).
* @param defReader A reader to the .def file.
*/
public DefParser(String name, Reader defReader) {
@@ -126,7 +127,7 @@ public class DefParser {
}
Matcher versionMatch = versionPattern.matcher(line);
if (versionMatch.matches()) {
- parseVersionLine(versionMatch);
+ // Do nothing, versions are not used
return;
}
Matcher namespaceMatcher = namespacePattern.matcher(line);
@@ -141,7 +142,7 @@ public class DefParser {
nd.addNormalizedLine(line);
return;
}
- // Only add lines that are not version, namespace or comment lines
+ // Only add lines that are not namespace or comment lines
nd.addNormalizedLine(line);
DefLine defLine = new DefLine(line);
root.setLeaf(root.getName() + "." + defLine.getName(), defLine, comment);
@@ -155,12 +156,6 @@ public class DefParser {
comment += addition;
}
- private void parseVersionLine(Matcher matcher) {
- root.setVersion(matcher.group(2));
- root.setComment(comment);
- comment = "";
- }
-
private void parseNamespaceLine(String namespace) {
if (namespace.startsWith(DEFAULT_PACKAGE_PREFIX))
throw new IllegalArgumentException("Please use 'package' instead of 'namespace'.");
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/DefaultValue.java b/configgen/src/main/java/com/yahoo/config/codegen/DefaultValue.java
index 07632788d86..9d8ee58f364 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/DefaultValue.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/DefaultValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
/**
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/InnerCNode.java b/configgen/src/main/java/com/yahoo/config/codegen/InnerCNode.java
index 1d1510e7197..74b0bbf7bba 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/InnerCNode.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/InnerCNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
import java.util.Map;
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/JavaClassBuilder.java b/configgen/src/main/java/com/yahoo/config/codegen/JavaClassBuilder.java
index 6df3ad5425a..f3816adb260 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/JavaClassBuilder.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/JavaClassBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
import java.io.File;
@@ -86,7 +86,7 @@ public class JavaClassBuilder implements ClassBuilder {
" public final static String CONFIG_DEF_MD5 = \"" + root.getMd5() + "\";\n" + //
" public final static String CONFIG_DEF_NAME = \"" + root.getName() + "\";\n" + //
" public final static String CONFIG_DEF_NAMESPACE = \"" + root.getNamespace() + "\";\n" + //
- " public final static String CONFIG_DEF_VERSION = \"" + root.getVersion() + "\";\n" + // TODO: Remove in Vespa 8
+ " public final static String CONFIG_DEF_VERSION = \"\";\n" + // TODO: Remove in Vespa 8
" public final static String[] CONFIG_DEF_SCHEMA = {\n" + //
"" + indentCode(INDENTATION + INDENTATION, getDefSchema()) + "\n" + //
" };\n" + //
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/LeafCNode.java b/configgen/src/main/java/com/yahoo/config/codegen/LeafCNode.java
index e8dd4221f0e..d0a535ff2fc 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/LeafCNode.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/LeafCNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
/**
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/MakeConfig.java b/configgen/src/main/java/com/yahoo/config/codegen/MakeConfig.java
index 9a7800988dc..684dd62a9a2 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/MakeConfig.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/MakeConfig.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
import java.io.File;
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/MakeConfigProperties.java b/configgen/src/main/java/com/yahoo/config/codegen/MakeConfigProperties.java
index 7fb587ecce8..c5d880fe3f1 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/MakeConfigProperties.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/MakeConfigProperties.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
import java.io.File;
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/NormalizedDefinition.java b/configgen/src/main/java/com/yahoo/config/codegen/NormalizedDefinition.java
index 71f9f1ece18..fde9c171546 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/NormalizedDefinition.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/NormalizedDefinition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
import java.io.*;
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/PropertyException.java b/configgen/src/main/java/com/yahoo/config/codegen/PropertyException.java
index 1c6891e279a..10c3a3eb3df 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/PropertyException.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/PropertyException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
public class PropertyException extends Exception {
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/ReservedWords.java b/configgen/src/main/java/com/yahoo/config/codegen/ReservedWords.java
index 623028d70d8..3310ceb30f5 100644
--- a/configgen/src/main/java/com/yahoo/config/codegen/ReservedWords.java
+++ b/configgen/src/main/java/com/yahoo/config/codegen/ReservedWords.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
import java.util.HashMap;
diff --git a/configgen/src/test/java/com/yahoo/config/codegen/DefLineParsingTest.java b/configgen/src/test/java/com/yahoo/config/codegen/DefLineParsingTest.java
index a267c2bc535..05e2e7c6ff6 100644
--- a/configgen/src/test/java/com/yahoo/config/codegen/DefLineParsingTest.java
+++ b/configgen/src/test/java/com/yahoo/config/codegen/DefLineParsingTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
import static org.hamcrest.CoreMatchers.is;
diff --git a/configgen/src/test/java/com/yahoo/config/codegen/DefParserNamespaceTest.java b/configgen/src/test/java/com/yahoo/config/codegen/DefParserNamespaceTest.java
index 45967ca6a0a..97ee17cb6d5 100644
--- a/configgen/src/test/java/com/yahoo/config/codegen/DefParserNamespaceTest.java
+++ b/configgen/src/test/java/com/yahoo/config/codegen/DefParserNamespaceTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
import org.junit.Test;
diff --git a/configgen/src/test/java/com/yahoo/config/codegen/DefParserPackageTest.java b/configgen/src/test/java/com/yahoo/config/codegen/DefParserPackageTest.java
index 60102c50d3c..d995ab63886 100644
--- a/configgen/src/test/java/com/yahoo/config/codegen/DefParserPackageTest.java
+++ b/configgen/src/test/java/com/yahoo/config/codegen/DefParserPackageTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
import org.junit.Test;
diff --git a/configgen/src/test/java/com/yahoo/config/codegen/DefParserTest.java b/configgen/src/test/java/com/yahoo/config/codegen/DefParserTest.java
index 8e52c1b4ece..22ccf4105c1 100644
--- a/configgen/src/test/java/com/yahoo/config/codegen/DefParserTest.java
+++ b/configgen/src/test/java/com/yahoo/config/codegen/DefParserTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
import static org.junit.Assert.*;
@@ -86,15 +86,16 @@ public class DefParserTest {
assertLineFails(line, "Could not create sting a");
}
+ // Note: Version is not used anymore, so will always be empty
@Test
public void testValidVersions() {
try {
- testExpectedVersion("version=8", "8");
- testExpectedVersion("version=8-1", "8-1");
- testExpectedVersion("version =8", "8");
- testExpectedVersion("version = 8", "8");
- testExpectedVersion("version = 8 ", "8");
- testExpectedVersion("version =\t8", "8");
+ testExpectedVersion("version=8", "");
+ testExpectedVersion("version=8-1", "");
+ testExpectedVersion("version =8", "");
+ testExpectedVersion("version = 8", "");
+ testExpectedVersion("version = 8 ", "");
+ testExpectedVersion("version =\t8", "");
} catch (Exception e) {
e.printStackTrace();
fail();
diff --git a/configgen/src/test/java/com/yahoo/config/codegen/JavaClassBuilderTest.java b/configgen/src/test/java/com/yahoo/config/codegen/JavaClassBuilderTest.java
index 66ebf38ed9a..f9b36974e15 100644
--- a/configgen/src/test/java/com/yahoo/config/codegen/JavaClassBuilderTest.java
+++ b/configgen/src/test/java/com/yahoo/config/codegen/JavaClassBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
import org.junit.Ignore;
diff --git a/configgen/src/test/java/com/yahoo/config/codegen/MakeConfigTest.java b/configgen/src/test/java/com/yahoo/config/codegen/MakeConfigTest.java
index 793986e1ae1..9b3e9c31363 100644
--- a/configgen/src/test/java/com/yahoo/config/codegen/MakeConfigTest.java
+++ b/configgen/src/test/java/com/yahoo/config/codegen/MakeConfigTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
import static org.junit.Assert.*;
diff --git a/configgen/src/test/java/com/yahoo/config/codegen/NormalizedDefinitionTest.java b/configgen/src/test/java/com/yahoo/config/codegen/NormalizedDefinitionTest.java
index 343551c43de..3c328721b6c 100644
--- a/configgen/src/test/java/com/yahoo/config/codegen/NormalizedDefinitionTest.java
+++ b/configgen/src/test/java/com/yahoo/config/codegen/NormalizedDefinitionTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.codegen;
import static org.junit.Assert.*;
diff --git a/configgen/src/test/resources/allfeatures.reference b/configgen/src/test/resources/allfeatures.reference
index 2008bbf6b52..e0b6176efa2 100644
--- a/configgen/src/test/resources/allfeatures.reference
+++ b/configgen/src/test/resources/allfeatures.reference
@@ -13,7 +13,7 @@ import com.yahoo.config.*;
/**
* This class represents the root node of allfeatures
*
- * Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+ * Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
*
* This def file should test most aspects of def files that makes a difference
* for the generated config classes. The goal is to trigger all blocks of
diff --git a/configgen/src/test/resources/baz.bar.foo.def b/configgen/src/test/resources/baz.bar.foo.def
index e0084b792a5..cc95cc660af 100644
--- a/configgen/src/test/resources/baz.bar.foo.def
+++ b/configgen/src/test/resources/baz.bar.foo.def
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=baz
xyzzy int default=10
diff --git a/configgen/src/test/resources/configgen.allfeatures.def b/configgen/src/test/resources/configgen.allfeatures.def
index fb627f614d6..df20665f1b7 100644
--- a/configgen/src/test/resources/configgen.allfeatures.def
+++ b/configgen/src/test/resources/configgen.allfeatures.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# This def file should test most aspects of def files that makes a difference
# for the generated config classes. The goal is to trigger all blocks of
diff --git a/configserver-client/pom.xml b/configserver-client/pom.xml
index 39005c9ccab..9e00347d60c 100644
--- a/configserver-client/pom.xml
+++ b/configserver-client/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2021 Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
@@ -17,13 +17,6 @@
<dependencies>
<dependency>
<groupId>com.yahoo.vespa</groupId>
- <artifactId>http-utils</artifactId>
- <version>${project.version}</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>com.yahoo.vespa</groupId>
<artifactId>vespa-athenz</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
diff --git a/configserver-client/src/main/java/ai/vespa/hosted/client/AbstractConfigServerClient.java b/configserver-client/src/main/java/ai/vespa/hosted/client/AbstractConfigServerClient.java
index 910f7a1402b..b96d41648da 100644
--- a/configserver-client/src/main/java/ai/vespa/hosted/client/AbstractConfigServerClient.java
+++ b/configserver-client/src/main/java/ai/vespa/hosted/client/AbstractConfigServerClient.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.client;
import org.apache.hc.client5.http.config.RequestConfig;
diff --git a/configserver-client/src/main/java/ai/vespa/hosted/client/ConfigServerClient.java b/configserver-client/src/main/java/ai/vespa/hosted/client/ConfigServerClient.java
index d5a4153fb8d..bfed26779ec 100644
--- a/configserver-client/src/main/java/ai/vespa/hosted/client/ConfigServerClient.java
+++ b/configserver-client/src/main/java/ai/vespa/hosted/client/ConfigServerClient.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.client;
import org.apache.hc.client5.http.config.RequestConfig;
diff --git a/configserver-client/src/main/java/ai/vespa/hosted/client/ForwardingInputStream.java b/configserver-client/src/main/java/ai/vespa/hosted/client/ForwardingInputStream.java
index 473dce8ea33..402c2689ca7 100644
--- a/configserver-client/src/main/java/ai/vespa/hosted/client/ForwardingInputStream.java
+++ b/configserver-client/src/main/java/ai/vespa/hosted/client/ForwardingInputStream.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.client;
import java.io.IOException;
diff --git a/configserver-client/src/main/java/ai/vespa/hosted/client/HttpConfigServerClient.java b/configserver-client/src/main/java/ai/vespa/hosted/client/HttpConfigServerClient.java
index 3835bb31e0b..6365e2b6b7d 100644
--- a/configserver-client/src/main/java/ai/vespa/hosted/client/HttpConfigServerClient.java
+++ b/configserver-client/src/main/java/ai/vespa/hosted/client/HttpConfigServerClient.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.client;
import ai.vespa.util.http.hc5.VespaHttpClientBuilder;
diff --git a/configserver-client/src/main/java/ai/vespa/hosted/client/MockConfigServerClient.java b/configserver-client/src/main/java/ai/vespa/hosted/client/MockConfigServerClient.java
index 3bd93f7fac7..16aad80670b 100644
--- a/configserver-client/src/main/java/ai/vespa/hosted/client/MockConfigServerClient.java
+++ b/configserver-client/src/main/java/ai/vespa/hosted/client/MockConfigServerClient.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.client;
import org.apache.hc.client5.http.protocol.HttpClientContext;
diff --git a/configserver-client/src/test/java/ai/vespa/hosted/client/HttpConfigServerClientTest.java b/configserver-client/src/test/java/ai/vespa/hosted/client/HttpConfigServerClientTest.java
index 90fd6203a21..bcdfaa9efa9 100644
--- a/configserver-client/src/test/java/ai/vespa/hosted/client/HttpConfigServerClientTest.java
+++ b/configserver-client/src/test/java/ai/vespa/hosted/client/HttpConfigServerClientTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.client;
import ai.vespa.hosted.client.ConfigServerClient.ResponseException;
diff --git a/configserver-client/src/test/java/ai/vespa/hosted/client/WireMockExtension.java b/configserver-client/src/test/java/ai/vespa/hosted/client/WireMockExtension.java
index 6b8a36abb6e..d95650727c0 100644
--- a/configserver-client/src/test/java/ai/vespa/hosted/client/WireMockExtension.java
+++ b/configserver-client/src/test/java/ai/vespa/hosted/client/WireMockExtension.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.client;
import com.github.tomakehurst.wiremock.WireMockServer;
diff --git a/configserver-flags/CMakeLists.txt b/configserver-flags/CMakeLists.txt
index 75deaf42d9b..0eac9d119f4 100644
--- a/configserver-flags/CMakeLists.txt
+++ b/configserver-flags/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(configserver-flags)
diff --git a/configserver-flags/README.md b/configserver-flags/README.md
index e23452a1f0c..22301a1e12f 100644
--- a/configserver-flags/README.md
+++ b/configserver-flags/README.md
@@ -1,3 +1,3 @@
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Config Server Flags
Manages flags backed by the Config Server's ZooKeeper.
diff --git a/configserver-flags/pom.xml b/configserver-flags/pom.xml
index 11ef9b6c950..5d32daae833 100644
--- a/configserver-flags/pom.xml
+++ b/configserver-flags/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/ConfigServerFlagSource.java b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/ConfigServerFlagSource.java
index b1ffc05e70c..be98986f115 100644
--- a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/ConfigServerFlagSource.java
+++ b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/ConfigServerFlagSource.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.configserver.flags;
import com.google.inject.Inject;
diff --git a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/FlagsDb.java b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/FlagsDb.java
index 6ccb2a61b56..28bfc21fbe1 100644
--- a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/FlagsDb.java
+++ b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/FlagsDb.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.configserver.flags;
import com.yahoo.vespa.flags.FlagId;
diff --git a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/db/FlagsDbImpl.java b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/db/FlagsDbImpl.java
index 66423492a73..ba8047d65b8 100644
--- a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/db/FlagsDbImpl.java
+++ b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/db/FlagsDbImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.configserver.flags.db;
import com.google.inject.Inject;
diff --git a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/db/ZooKeeperFlagSource.java b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/db/ZooKeeperFlagSource.java
index 4a9d604b4bd..2a756df26a8 100644
--- a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/db/ZooKeeperFlagSource.java
+++ b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/db/ZooKeeperFlagSource.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.configserver.flags.db;
import com.yahoo.vespa.configserver.flags.FlagsDb;
diff --git a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/DefinedFlag.java b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/DefinedFlag.java
index c4e784e5717..5c71f9c9214 100644
--- a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/DefinedFlag.java
+++ b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/DefinedFlag.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.configserver.flags.http;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/DefinedFlags.java b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/DefinedFlags.java
index 26d590593c0..e32177cf2e1 100644
--- a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/DefinedFlags.java
+++ b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/DefinedFlags.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.configserver.flags.http;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/FlagDataListResponse.java b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/FlagDataListResponse.java
index efc78cb7930..01e367f7037 100644
--- a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/FlagDataListResponse.java
+++ b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/FlagDataListResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.configserver.flags.http;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/FlagDataResponse.java b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/FlagDataResponse.java
index 8ff4085df8d..558e70ba09d 100644
--- a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/FlagDataResponse.java
+++ b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/FlagDataResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.configserver.flags.http;
import com.yahoo.container.jdisc.HttpResponse;
diff --git a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/FlagsHandler.java b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/FlagsHandler.java
index c034ea79447..17ebeaf78a5 100644
--- a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/FlagsHandler.java
+++ b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/FlagsHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.configserver.flags.http;
import com.google.inject.Inject;
diff --git a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/OKResponse.java b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/OKResponse.java
index f41940f692b..4b64858d6e7 100644
--- a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/OKResponse.java
+++ b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/OKResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.configserver.flags.http;
import com.yahoo.container.jdisc.EmptyResponse;
diff --git a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/V1Response.java b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/V1Response.java
index ac1e9514700..cb0ad10f172 100644
--- a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/V1Response.java
+++ b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/http/V1Response.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.configserver.flags.http;
import com.yahoo.container.jdisc.HttpResponse;
diff --git a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/package-info.java b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/package-info.java
index d6f078326a3..63eab0cd06f 100644
--- a/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/package-info.java
+++ b/configserver-flags/src/main/java/com/yahoo/vespa/configserver/flags/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.configserver.flags;
diff --git a/configserver-flags/src/test/java/com/yahoo/vespa/configserver/flags/db/FlagsDbImplTest.java b/configserver-flags/src/test/java/com/yahoo/vespa/configserver/flags/db/FlagsDbImplTest.java
index 150fcc502d4..f3087aa0e3b 100644
--- a/configserver-flags/src/test/java/com/yahoo/vespa/configserver/flags/db/FlagsDbImplTest.java
+++ b/configserver-flags/src/test/java/com/yahoo/vespa/configserver/flags/db/FlagsDbImplTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.configserver.flags.db;
import com.yahoo.vespa.curator.mock.MockCurator;
diff --git a/configserver-flags/src/test/java/com/yahoo/vespa/configserver/flags/http/FlagsHandlerTest.java b/configserver-flags/src/test/java/com/yahoo/vespa/configserver/flags/http/FlagsHandlerTest.java
index 9252d6a4073..b078b9a42f9 100644
--- a/configserver-flags/src/test/java/com/yahoo/vespa/configserver/flags/http/FlagsHandlerTest.java
+++ b/configserver-flags/src/test/java/com/yahoo/vespa/configserver/flags/http/FlagsHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.configserver.flags.http;
import com.yahoo.container.jdisc.HttpRequest;
diff --git a/configserver/CMakeLists.txt b/configserver/CMakeLists.txt
index 8e6cfcf8648..a91e3f8348b 100644
--- a/configserver/CMakeLists.txt
+++ b/configserver/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_configserver_component(configserver)
vespa_install_script(src/main/sh/vespa-configserver-remove-state bin)
diff --git a/configserver/pom.xml b/configserver/pom.xml
index ac98cfa5d5d..59d414ca393 100644
--- a/configserver/pom.xml
+++ b/configserver/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -242,12 +242,6 @@
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>http-utils</artifactId>
- <version>${project.version}</version>
- <scope>compile</scope>
- </dependency>
</dependencies>
<build>
<plugins>
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ActivationConflictException.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ActivationConflictException.java
index 48023293cc4..8dac35616f0 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/ActivationConflictException.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ActivationConflictException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
/**
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
index 56fd6a64305..fac5be432b3 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.google.inject.Inject;
@@ -107,7 +107,6 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
-import static com.yahoo.config.model.api.container.ContainerServiceType.CLUSTERCONTROLLER_CONTAINER;
import static com.yahoo.config.model.api.container.ContainerServiceType.CONTAINER;
import static com.yahoo.config.model.api.container.ContainerServiceType.LOGSERVER_CONTAINER;
import static com.yahoo.vespa.config.server.filedistribution.FileDistributionUtil.fileReferenceExistsOnDisk;
@@ -351,7 +350,8 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
long sessionId = createSession(applicationId, prepareParams.getTimeoutBudget(), applicationPackage);
Deployment deployment = prepare(sessionId, prepareParams, logger);
- deployment.activate();
+ if ( ! prepareParams.isDryRun())
+ deployment.activate();
return new PrepareResult(sessionId, deployment.configChangeActions(), logger);
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerBootstrap.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerBootstrap.java
index 4c2aa33a886..65ffb916294 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerBootstrap.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerBootstrap.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.google.inject.Inject;
@@ -41,11 +41,12 @@ import static com.yahoo.vespa.config.server.ConfigServerBootstrap.RedeployingApp
/**
* Main component that bootstraps and starts config server threads.
*
- * If config server has been upgraded to a new version since the last time it was running it will redeploy all
- * applications. If that is done successfully the RPC server will start and the health status code will change from
- * 'initializing' to 'up'. If VIP status mode is VIP_STATUS_PROGRAMMATICALLY the config server
- * will be put into rotation (start serving status.html with 200 OK), if the mode is VIP_STATUS_FILE a VIP status
- * file is created or removed by some external program based on the health status code.
+ * Starts RPC server without allowing config requests. If config server has been upgraded to a new version since the
+ * last time it was running it will redeploy all applications. If that is done successfully the RPC server will start
+ * allowing config requets and the health status code will change from 'initializing' to 'up'. If VIP status mode is
+ * VIP_STATUS_PROGRAMMATICALLY the config server will be put into rotation (start serving status.html with 200 OK),
+ * if the mode is VIP_STATUS_FILE a VIP status file is created or removed by some external program based on the
+ * health status code.
*
* @author Ulf Lilleengen
* @author hmusum
@@ -138,6 +139,7 @@ public class ConfigServerBootstrap extends AbstractComponent implements Runnable
}
public void start() {
+ startRpcServerWithFileDistribution(); // No config requests allowed yet, will be allowed after bootstrapping done
if (versionState.isUpgraded()) {
log.log(Level.INFO, "Config server upgrading from " + versionState.storedVersion() + " to "
+ versionState.currentVersion() + ". Redeploying all applications");
@@ -155,7 +157,7 @@ public class ConfigServerBootstrap extends AbstractComponent implements Runnable
}
}
applicationRepository.bootstrappingDone();
- startRpcServer();
+ allowConfigRpcRequests(server);
up();
}
@@ -177,7 +179,7 @@ public class ConfigServerBootstrap extends AbstractComponent implements Runnable
vipStatus.setInRotation(false);
}
- private void startRpcServer() {
+ private void startRpcServerWithFileDistribution() {
rpcServerExecutor.execute(server);
Instant end = Instant.now().plus(Duration.ofSeconds(10));
@@ -193,6 +195,11 @@ public class ConfigServerBootstrap extends AbstractComponent implements Runnable
throw new RuntimeException("RPC server not started in 10 seconds");
}
+ private void allowConfigRpcRequests(RpcServer rpcServer) {
+ log.log(Level.INFO, "Allowing RPC config requests");
+ rpcServer.setUpGetConfigHandlers();
+ }
+
private void redeployingApplicationsFailed() {
if (exitIfRedeployingApplicationsFails == EXIT_JVM) System.exit(1);
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerDB.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerDB.java
index 8594c7857a9..224e72461a2 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerDB.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerDB.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerSpec.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerSpec.java
index 07c6575c78c..ca4e77bd873 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerSpec.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerSpec.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/GetConfigContext.java b/configserver/src/main/java/com/yahoo/vespa/config/server/GetConfigContext.java
index ef7d8756228..a614e251dca 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/GetConfigContext.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/GetConfigContext.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.config.provision.ApplicationId;
@@ -49,4 +49,10 @@ public class GetConfigContext {
public String logPre() {
return TenantRepository.logPre(app);
}
+
+ @Override
+ public String toString() {
+ return "get config context for application " + app + ", having handler " + requestHandler;
+ }
+
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/NotFoundException.java b/configserver/src/main/java/com/yahoo/vespa/config/server/NotFoundException.java
index ce9a76b53f7..51a3ff34901 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/NotFoundException.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/NotFoundException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
/**
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ReloadListener.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ReloadListener.java
index 7cdb596780a..b41f31d9dcb 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/ReloadListener.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ReloadListener.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.config.provision.ApplicationId;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/RequestHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/RequestHandler.java
index c3d9fb15212..99f5cce642a 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/RequestHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/RequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.component.Version;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ServerCache.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ServerCache.java
index ad544005ace..3b765a3d8a7 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/ServerCache.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ServerCache.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.config.model.api.ConfigDefinitionRepo;
@@ -9,6 +9,7 @@ import com.yahoo.vespa.config.protocol.ConfigResponse;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Function;
/**
* Cache that holds configs and config definitions (builtin and user config definitions).
@@ -23,11 +24,14 @@ public class ServerCache {
// NOTE: The reason we do a double mapping here is to de-dupe configs that have the same md5.
private final Map<ConfigCacheKey, String> md5Sums = new ConcurrentHashMap<>();
private final Map<String, ConfigResponse> md5ToConfig = new ConcurrentHashMap<>();
-
+ private final Object [] stripedLocks = new Object[113];
public ServerCache(ConfigDefinitionRepo builtinConfigDefinitions, ConfigDefinitionRepo userConfigDefinitions) {
this.builtinConfigDefinitions = builtinConfigDefinitions;
this.userConfigDefinitions = userConfigDefinitions;
+ for (int i = 0; i < stripedLocks.length; i++) {
+ stripedLocks[i] = new Object();
+ }
}
// For testing only
@@ -35,17 +39,34 @@ public class ServerCache {
this(new StaticConfigDefinitionRepo(), new UserConfigDefinitionRepo());
}
- public void put(ConfigCacheKey key, ConfigResponse config, String configMd5) {
+ private void put(ConfigCacheKey key, ConfigResponse config) {
+ String configMd5 = config.getConfigMd5();
md5Sums.put(key, configMd5);
md5ToConfig.put(configMd5, config);
}
- public ConfigResponse get(ConfigCacheKey key) {
+ ConfigResponse get(ConfigCacheKey key) {
String md5 = md5Sums.get(key);
if (md5 == null) return null;
return md5ToConfig.get(md5);
}
+ public ConfigResponse computeIfAbsent(ConfigCacheKey key, Function<ConfigCacheKey, ConfigResponse> mappingFunction) {
+ ConfigResponse config = get(key);
+ if (config != null) {
+ return config;
+ }
+ synchronized (stripedLocks[Math.abs(key.hashCode()%stripedLocks.length)]) {
+ String md5 = md5Sums.get(key);
+ if (md5 == null) {
+ config = mappingFunction.apply(key);
+ put(key, config);
+ return config;
+ }
+ return md5ToConfig.get(md5);
+ }
+ }
+
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/StaticConfigDefinitionRepo.java b/configserver/src/main/java/com/yahoo/vespa/config/server/StaticConfigDefinitionRepo.java
index d682456ebb7..79ad3f9283f 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/StaticConfigDefinitionRepo.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/StaticConfigDefinitionRepo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.google.inject.Inject;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelController.java b/configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelController.java
index 00d010e75c8..f6ed98d904b 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelController.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelController.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.config.codegen.DefParser;
@@ -44,7 +44,10 @@ public class SuperModelController {
public ConfigResponse resolveConfig(GetConfigRequest request) {
ConfigKey<?> configKey = request.getConfigKey();
validateConfigDefinition(request.getConfigKey(), request.getDefContent());
- return responseFactory.createResponse(model.getConfig(configKey).toUtf8Array(true), generation, false);
+ return responseFactory.createResponse(model.getConfig(configKey).toUtf8Array(true),
+ generation,
+ false,
+ request.configPayloadChecksums());
}
private void validateConfigDefinition(ConfigKey<?> configKey, DefContent defContent) {
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelGenerationCounter.java b/configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelGenerationCounter.java
index eb57b9346c7..ffc2089b0b3 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelGenerationCounter.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelGenerationCounter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.path.Path;
@@ -17,7 +17,7 @@ public class SuperModelGenerationCounter implements GenerationCounter {
private final CuratorCounter counter;
public SuperModelGenerationCounter(Curator curator) {
- this.counter = new CuratorCounter(curator, counterPath.getAbsolute());
+ this.counter = new CuratorCounter(curator, counterPath);
}
/**
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelManager.java b/configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelManager.java
index 4e6fa590749..e9be9c4e97f 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelManager.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelManager.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelRequestHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelRequestHandler.java
index 9c2c070f483..9fbc3eb21df 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelRequestHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/SuperModelRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.google.inject.Inject;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/TimeoutBudget.java b/configserver/src/main/java/com/yahoo/vespa/config/server/TimeoutBudget.java
index 80bde90fac2..d3295c023b0 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/TimeoutBudget.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/TimeoutBudget.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.google.common.util.concurrent.UncheckedTimeoutException;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/UnknownConfigDefinitionException.java b/configserver/src/main/java/com/yahoo/vespa/config/server/UnknownConfigDefinitionException.java
index 4b434a0cbe4..763f11916c3 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/UnknownConfigDefinitionException.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/UnknownConfigDefinitionException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
/**
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/UserConfigDefinitionRepo.java b/configserver/src/main/java/com/yahoo/vespa/config/server/UserConfigDefinitionRepo.java
index 15a9b8f74d0..018bc30f7e7 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/UserConfigDefinitionRepo.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/UserConfigDefinitionRepo.java
@@ -1,16 +1,19 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.google.common.base.Splitter;
import com.yahoo.config.model.api.ConfigDefinitionRepo;
-import java.util.logging.Level;
+import com.yahoo.path.Path;
+import com.yahoo.text.Utf8;
import com.yahoo.vespa.config.ConfigDefinitionKey;
import com.yahoo.vespa.config.buildergen.ConfigDefinition;
-import com.yahoo.vespa.config.server.zookeeper.ConfigCurator;
import com.yahoo.vespa.config.util.ConfigUtils;
+import com.yahoo.vespa.curator.Curator;
import java.util.LinkedHashMap;
import java.util.Map;
+import java.util.Optional;
+import java.util.logging.Level;
import java.util.logging.Logger;
/**
@@ -24,10 +27,12 @@ public class UserConfigDefinitionRepo implements ConfigDefinitionRepo {
// For testing only
public UserConfigDefinitionRepo() {}
- public UserConfigDefinitionRepo(ConfigCurator configCurator, String appPath) {
- if (configCurator.exists(appPath)) {
- for (String nodeName : configCurator.getChildren(appPath)) {
- String payload = configCurator.getData(appPath, nodeName);
+ public UserConfigDefinitionRepo(Curator curator, Path appPath) {
+ if (curator.exists(appPath)) {
+ for (String nodeName : curator.getChildren(appPath)) {
+ String payload = curator.getData(appPath.append(nodeName))
+ .map(Utf8::toString)
+ .orElseThrow(() -> new IllegalArgumentException("No config definition data at " + nodeName));
ConfigDefinitionKey dKey = ConfigUtils.createConfigDefinitionKeyFromZKString(nodeName);
defs.put(dKey, new ConfigDefinition(dKey.getName(), Splitter.on("\n").splitToList(payload).toArray(new String[0])));
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/Application.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/Application.java
index db3761a97f7..0b409d38196 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/Application.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/Application.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import com.yahoo.collections.Pair;
@@ -8,8 +8,6 @@ import com.yahoo.config.ConfigurationRuntimeException;
import com.yahoo.config.model.api.ApplicationInfo;
import com.yahoo.config.model.api.Model;
import com.yahoo.config.provision.ApplicationId;
-import java.util.logging.Level;
-
import com.yahoo.text.AbstractUtf8Array;
import com.yahoo.vespa.config.ConfigCacheKey;
import com.yahoo.vespa.config.ConfigDefinitionKey;
@@ -31,6 +29,7 @@ import com.yahoo.vespa.config.server.tenant.TenantRepository;
import com.yahoo.vespa.config.util.ConfigUtils;
import com.yahoo.yolean.Exceptions;
+import java.util.logging.Level;
import java.util.Objects;
import java.util.Set;
@@ -103,42 +102,39 @@ public class Application implements ModelResult {
long start = System.currentTimeMillis();
metricUpdater.incrementRequests();
ConfigKey<?> configKey = req.getConfigKey();
- String defMd5 = configKey.getMd5();
+ String defMd5 = req.getRequestDefMd5();
if (defMd5 == null || defMd5.isEmpty()) {
defMd5 = ConfigUtils.getDefMd5(req.getDefContent().asList());
}
ConfigCacheKey cacheKey = new ConfigCacheKey(configKey, defMd5);
log.log(Level.FINE, () -> TenantRepository.logPre(getId()) + ("Resolving config " + cacheKey));
+ ConfigResponse config;
if (useCache(req)) {
- ConfigResponse config = cache.get(cacheKey);
- if (config != null) {
- log.log(Level.FINE, () -> TenantRepository.logPre(getId()) + ("Found config " + cacheKey + " in cache"));
- metricUpdater.incrementProcTime(System.currentTimeMillis() - start);
- return config;
- }
+ config = cache.computeIfAbsent(cacheKey, (ConfigCacheKey key) -> {
+ var response = createConfigResponse(configKey, req, responseFactory);
+ metricUpdater.setCacheConfigElems(cache.configElems());
+ metricUpdater.setCacheChecksumElems(cache.checkSumElems());
+ return response;
+ });
+ } else {
+ config = createConfigResponse(configKey, req, responseFactory);
}
+ metricUpdater.incrementProcTime(System.currentTimeMillis() - start);
+ return config;
+ }
+ private ConfigResponse createConfigResponse(ConfigKey<?> configKey, GetConfigRequest req, ConfigResponseFactory responseFactory) {
ConfigDefinition def = getTargetDef(req);
if (def == null) {
metricUpdater.incrementFailedRequests();
throw new UnknownConfigDefinitionException("Unable to find config definition for '" + configKey.getNamespace() + "." + configKey.getName());
}
- log.log(Level.FINE, () -> TenantRepository.logPre(getId()) + ("Resolving " + configKey + " with config definition " + def));
-
-
+ log.log(Level.FINE, () -> TenantRepository.logPre(getId()) + "Resolving " + configKey + " with config definition " + def);
var payload = createPayload(configKey, def);
- ConfigResponse configResponse = responseFactory.createResponse(payload.getFirst(),
- applicationGeneration,
- payload.getSecond());
- metricUpdater.incrementProcTime(System.currentTimeMillis() - start);
- if (useCache(req)) {
- cache.put(cacheKey, configResponse, configResponse.getConfigMd5());
- metricUpdater.setCacheConfigElems(cache.configElems());
- metricUpdater.setCacheChecksumElems(cache.checkSumElems());
- }
- return configResponse;
+
+ return responseFactory.createResponse(payload.getFirst(), applicationGeneration, payload.getSecond(), req.configPayloadChecksums());
}
private Pair<AbstractUtf8Array, Boolean> createPayload(ConfigKey<?> configKey, ConfigDefinition def) {
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationCuratorDatabase.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationCuratorDatabase.java
index 519e53272dc..2403fe9d965 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationCuratorDatabase.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationCuratorDatabase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import com.yahoo.config.provision.ApplicationId;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationMapper.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationMapper.java
index ecdd2357b1f..c195e5cc8c4 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationMapper.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationMapper.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import com.yahoo.component.Version;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationReindexing.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationReindexing.java
index 63aca62768d..81474158bfd 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationReindexing.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationReindexing.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import com.yahoo.config.model.api.Reindexing;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationSet.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationSet.java
index a9aaedd0a0e..ae8dd2a329f 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationSet.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ApplicationSet.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import com.yahoo.config.model.api.HostInfo;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ClusterReindexing.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ClusterReindexing.java
index f162007b0e4..c88dff86bf0 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ClusterReindexing.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ClusterReindexing.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import java.time.Instant;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ClusterReindexingStatusClient.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ClusterReindexingStatusClient.java
index 1201bbd4814..981b7bb5b95 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ClusterReindexingStatusClient.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ClusterReindexingStatusClient.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import com.yahoo.vespa.config.server.modelfactory.ModelResult;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigConvergenceChecker.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigConvergenceChecker.java
index a6e15223f74..24744a1b3b2 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigConvergenceChecker.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigConvergenceChecker.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import ai.vespa.util.http.hc5.VespaAsyncHttpClientBuilder;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigInstanceBuilder.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigInstanceBuilder.java
index 389e8394c9e..1167f32caf5 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigInstanceBuilder.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigInstanceBuilder.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import com.yahoo.config.ConfigBuilder;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigNotConvergedException.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigNotConvergedException.java
index 513d258170c..f0711e5c238 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigNotConvergedException.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/ConfigNotConvergedException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
/**
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/DefaultClusterReindexingStatusClient.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/DefaultClusterReindexingStatusClient.java
index 65a960e38f4..14d96eb7748 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/DefaultClusterReindexingStatusClient.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/DefaultClusterReindexingStatusClient.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import ai.vespa.util.http.hc5.VespaAsyncHttpClientBuilder;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/FileDistributionStatus.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/FileDistributionStatus.java
index ab1bd79d498..23df938e0b7 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/FileDistributionStatus.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/FileDistributionStatus.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import com.yahoo.component.AbstractComponent;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/HttpProxy.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/HttpProxy.java
index c244bd817ba..a8915d187f3 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/HttpProxy.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/HttpProxy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import com.google.inject.Inject;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/PermanentApplicationPackage.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/PermanentApplicationPackage.java
index a028f92d681..65c741066c2 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/PermanentApplicationPackage.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/PermanentApplicationPackage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import com.yahoo.config.application.api.ApplicationPackage;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java
index dd514e0d843..98ddf702a7f 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import com.yahoo.cloud.config.ConfigserverConfig;
@@ -205,9 +205,8 @@ public class TenantApplications implements RequestHandler, HostValidator<Applica
@Override
public ConfigResponse resolveConfig(ApplicationId appId, GetConfigRequest req, Optional<Version> vespaVersion) {
Application application = getApplication(appId, vespaVersion);
- if (log.isLoggable(Level.FINE)) {
- log.log(Level.FINE, TenantRepository.logPre(appId) + "Resolving for tenant '" + tenant + "' with handler for application '" + application + "'");
- }
+ log.log(Level.FINE, () -> TenantRepository.logPre(appId) + "Resolving for tenant '" + tenant +
+ "' with handler for application '" + application + "'");
return application.resolveConfig(req, responseFactory);
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/VersionDoesNotExistException.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/VersionDoesNotExistException.java
index ff0b039222a..73944823fea 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/VersionDoesNotExistException.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/VersionDoesNotExistException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
/**
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActions.java b/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActions.java
index 29013dfd17d..b990a24a85e 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActions.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActions.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.configchange;
import com.yahoo.config.model.api.ConfigChangeAction;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActionsSlimeConverter.java b/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActionsSlimeConverter.java
index 1a0d109b6c9..f46c6893dc1 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActionsSlimeConverter.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActionsSlimeConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.configchange;
import com.yahoo.config.model.api.ServiceInfo;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RefeedActions.java b/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RefeedActions.java
index b2221cbcf6c..308460d79e1 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RefeedActions.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RefeedActions.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.configchange;
import com.yahoo.config.model.api.ConfigChangeAction;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RefeedActionsFormatter.java b/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RefeedActionsFormatter.java
index 6e2e23ab6be..f6af03b4745 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RefeedActionsFormatter.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RefeedActionsFormatter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.configchange;
/**
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ReindexActions.java b/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ReindexActions.java
index 6ed1c43623f..7bab2adacaa 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ReindexActions.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ReindexActions.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.configchange;
import com.yahoo.config.model.api.ConfigChangeAction;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ReindexActionsFormatter.java b/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ReindexActionsFormatter.java
index bdd01404f64..1c23276b9d8 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ReindexActionsFormatter.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ReindexActionsFormatter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.configchange;
/**
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RestartActions.java b/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RestartActions.java
index fab36246a41..1f59a772741 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RestartActions.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RestartActions.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.configchange;
import com.yahoo.config.model.api.ConfigChangeAction;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RestartActionsFormatter.java b/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RestartActionsFormatter.java
index f1e2a938393..5b1395efb1b 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RestartActionsFormatter.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RestartActionsFormatter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.configchange;
/**
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLogger.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLogger.java
index 9900557f000..71e5489fb2e 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLogger.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLogger.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.deploy;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java
index 1ab667f8a01..efa04056873 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.deploy;
import com.google.common.base.Supplier;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/InfraDeployerProvider.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/InfraDeployerProvider.java
index 1631774112b..5804c2a6724 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/InfraDeployerProvider.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/InfraDeployerProvider.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.deploy;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java
index 551f9060418..4f178d29e59 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.deploy;
import com.yahoo.cloud.config.ConfigserverConfig;
@@ -6,7 +6,6 @@ import com.yahoo.component.Version;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.application.api.FileRegistry;
-import com.yahoo.config.model.api.ApplicationRoles;
import com.yahoo.config.model.api.ConfigDefinitionRepo;
import com.yahoo.config.model.api.ConfigServerSpec;
import com.yahoo.config.model.api.ContainerEndpoint;
@@ -23,7 +22,6 @@ import com.yahoo.config.provision.AthenzDomain;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.DockerImage;
import com.yahoo.config.provision.HostName;
-import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.Zone;
import com.yahoo.container.jdisc.secretstore.SecretStore;
@@ -41,6 +39,7 @@ import java.security.cert.X509Certificate;
import java.util.List;
import java.util.Optional;
import java.util.Set;
+import java.util.concurrent.ExecutorService;
import java.util.function.ToIntFunction;
import static com.yahoo.vespa.config.server.ConfigServerSpec.fromConfig;
@@ -59,6 +58,7 @@ public class ModelContextImpl implements ModelContext {
private final DeployLogger deployLogger;
private final ConfigDefinitionRepo configDefinitionRepo;
private final FileRegistry fileRegistry;
+ private final ExecutorService executor;
private final HostProvisioner hostProvisioner;
private final Provisioned provisioned;
private final Optional<? extends Reindexing> reindexing;
@@ -85,6 +85,7 @@ public class ModelContextImpl implements ModelContext {
DeployLogger deployLogger,
ConfigDefinitionRepo configDefinitionRepo,
FileRegistry fileRegistry,
+ ExecutorService executor,
Optional<? extends Reindexing> reindexing,
HostProvisioner hostProvisioner,
Provisioned provisioned,
@@ -99,6 +100,7 @@ public class ModelContextImpl implements ModelContext {
this.deployLogger = deployLogger;
this.configDefinitionRepo = configDefinitionRepo;
this.fileRegistry = fileRegistry;
+ this.executor = executor;
this.reindexing = reindexing;
this.hostProvisioner = hostProvisioner;
this.provisioned = provisioned;
@@ -138,6 +140,11 @@ public class ModelContextImpl implements ModelContext {
public FileRegistry getFileRegistry() { return fileRegistry; }
@Override
+ public ExecutorService getExecutor() {
+ return executor;
+ }
+
+ @Override
public Optional<? extends Reindexing> reindexing() { return reindexing; }
@Override
@@ -157,7 +164,6 @@ public class ModelContextImpl implements ModelContext {
public static class FeatureFlags implements ModelContext.FeatureFlags {
- private final NodeResources dedicatedClusterControllerFlavor;
private final double defaultTermwiseLimit;
private final boolean useThreePhaseUpdates;
private final String feedSequencer;
@@ -172,21 +178,22 @@ public class ModelContextImpl implements ModelContext {
private final List<String> allowedAthenzProxyIdentities;
private final int maxActivationInhibitedOutOfSyncGroups;
private final ToIntFunction<ClusterSpec.Type> jvmOmitStackTraceInFastThrow;
- private final boolean enableCustomAclMapping;
- private final boolean useExternalRankExpression;
- private final boolean distributeExternalRankExpressions;
- private final int numDistributorStripes;
private final boolean requireConnectivityCheck;
private final int maxConcurrentMergesPerContentNode;
private final int maxMergeQueueSize;
+ private final boolean ignoreMergeQueueLimit;
private final int largeRankExpressionLimit;
- private final boolean throwIfResourceLimitsSpecified;
- private final boolean dryRunOnnxOnSetup;
private final double resourceLimitDisk;
private final double resourceLimitMemory;
+ private final double minNodeRatioPerGroup;
+ private final int metricsproxyNumThreads;
+ private final boolean newLocationBrokerLogic;
+ private final boolean containerDumpHeapOnShutdownTimeout;
+ private final double containerShutdownTimeout;
+ private final int maxConnectionLifeInHosted;
+ private final int distributorMergeBusyWait;
public FeatureFlags(FlagSource source, ApplicationId appId) {
- this.dedicatedClusterControllerFlavor = parseDedicatedClusterControllerFlavor(flagValue(source, appId, Flags.DEDICATED_CLUSTER_CONTROLLER_FLAVOR));
this.defaultTermwiseLimit = flagValue(source, appId, Flags.DEFAULT_TERM_WISE_LIMIT);
this.useThreePhaseUpdates = flagValue(source, appId, Flags.USE_THREE_PHASE_UPDATES);
this.feedSequencer = flagValue(source, appId, Flags.FEED_SEQUENCER_TYPE);
@@ -201,21 +208,22 @@ public class ModelContextImpl implements ModelContext {
this.allowedAthenzProxyIdentities = flagValue(source, appId, Flags.ALLOWED_ATHENZ_PROXY_IDENTITIES);
this.maxActivationInhibitedOutOfSyncGroups = flagValue(source, appId, Flags.MAX_ACTIVATION_INHIBITED_OUT_OF_SYNC_GROUPS);
this.jvmOmitStackTraceInFastThrow = type -> flagValueAsInt(source, appId, type, PermanentFlags.JVM_OMIT_STACK_TRACE_IN_FAST_THROW);
- this.enableCustomAclMapping = flagValue(source, appId, Flags.ENABLE_CUSTOM_ACL_MAPPING);
- this.numDistributorStripes = flagValue(source, appId, Flags.NUM_DISTRIBUTOR_STRIPES);
- this.useExternalRankExpression = flagValue(source, appId, Flags.USE_EXTERNAL_RANK_EXPRESSION);
- this.distributeExternalRankExpressions = flagValue(source, appId, Flags.DISTRIBUTE_EXTERNAL_RANK_EXPRESSION);
this.largeRankExpressionLimit = flagValue(source, appId, Flags.LARGE_RANK_EXPRESSION_LIMIT);
this.requireConnectivityCheck = flagValue(source, appId, Flags.REQUIRE_CONNECTIVITY_CHECK);
this.maxConcurrentMergesPerContentNode = flagValue(source, appId, Flags.MAX_CONCURRENT_MERGES_PER_NODE);
this.maxMergeQueueSize = flagValue(source, appId, Flags.MAX_MERGE_QUEUE_SIZE);
- this.throwIfResourceLimitsSpecified = flagValue(source, appId, Flags.THROW_EXCEPTION_IF_RESOURCE_LIMITS_SPECIFIED);
- this.dryRunOnnxOnSetup = flagValue(source, appId, Flags.DRY_RUN_ONNX_ON_SETUP);
+ this.ignoreMergeQueueLimit = flagValue(source, appId, Flags.IGNORE_MERGE_QUEUE_LIMIT);
this.resourceLimitDisk = flagValue(source, appId, PermanentFlags.RESOURCE_LIMIT_DISK);
this.resourceLimitMemory = flagValue(source, appId, PermanentFlags.RESOURCE_LIMIT_MEMORY);
+ this.minNodeRatioPerGroup = flagValue(source, appId, Flags.MIN_NODE_RATIO_PER_GROUP);
+ this.metricsproxyNumThreads = flagValue(source, appId, Flags.METRICSPROXY_NUM_THREADS);
+ this.newLocationBrokerLogic = flagValue(source, appId, Flags.NEW_LOCATION_BROKER_LOGIC);
+ this.containerDumpHeapOnShutdownTimeout = flagValue(source, appId, Flags.CONTAINER_DUMP_HEAP_ON_SHUTDOWN_TIMEOUT);
+ this.containerShutdownTimeout = flagValue(source, appId,Flags.CONTAINER_SHUTDOWN_TIMEOUT);
+ this.maxConnectionLifeInHosted = flagValue(source, appId, Flags.MAX_CONNECTION_LIFE_IN_HOSTED);
+ this.distributorMergeBusyWait = flagValue(source, appId, Flags.DISTRIBUTOR_MERGE_BUSY_WAIT);
}
- @Override public Optional<NodeResources> dedicatedClusterControllerFlavor() { return Optional.ofNullable(dedicatedClusterControllerFlavor); }
@Override public double defaultTermwiseLimit() { return defaultTermwiseLimit; }
@Override public boolean useThreePhaseUpdates() { return useThreePhaseUpdates; }
@Override public String feedSequencerType() { return feedSequencer; }
@@ -232,18 +240,20 @@ public class ModelContextImpl implements ModelContext {
@Override public String jvmOmitStackTraceInFastThrowOption(ClusterSpec.Type type) {
return translateJvmOmitStackTraceInFastThrowIntToString(jvmOmitStackTraceInFastThrow, type);
}
- @Override public boolean enableCustomAclMapping() { return enableCustomAclMapping; }
- @Override public int numDistributorStripes() { return numDistributorStripes; }
- @Override public boolean useExternalRankExpressions() { return useExternalRankExpression; }
- @Override public boolean distributeExternalRankExpressions() { return distributeExternalRankExpressions; }
@Override public int largeRankExpressionLimit() { return largeRankExpressionLimit; }
@Override public boolean requireConnectivityCheck() { return requireConnectivityCheck; }
@Override public int maxConcurrentMergesPerNode() { return maxConcurrentMergesPerContentNode; }
@Override public int maxMergeQueueSize() { return maxMergeQueueSize; }
- @Override public boolean throwIfResourceLimitsSpecified() { return throwIfResourceLimitsSpecified; }
- @Override public boolean dryRunOnnxOnSetup() { return dryRunOnnxOnSetup; }
+ @Override public boolean ignoreMergeQueueLimit() { return ignoreMergeQueueLimit; }
@Override public double resourceLimitDisk() { return resourceLimitDisk; }
@Override public double resourceLimitMemory() { return resourceLimitMemory; }
+ @Override public double minNodeRatioPerGroup() { return minNodeRatioPerGroup; }
+ @Override public int metricsproxyNumThreads() { return metricsproxyNumThreads; }
+ @Override public boolean newLocationBrokerLogic() { return newLocationBrokerLogic; }
+ @Override public double containerShutdownTimeout() { return containerShutdownTimeout; }
+ @Override public boolean containerDumpHeapOnShutdownTimeout() { return containerDumpHeapOnShutdownTimeout; }
+ @Override public int maxConnectionLifeInHosted() { return maxConnectionLifeInHosted; }
+ @Override public int distributorMergeBusyWait() { return distributorMergeBusyWait; }
private static <V> V flagValue(FlagSource source, ApplicationId appId, UnboundFlag<? extends V, ?, ?> flag) {
return flag.bindTo(source)
@@ -297,7 +307,6 @@ public class ModelContextImpl implements ModelContext {
private final boolean isFirstTimeDeployment;
private final Optional<EndpointCertificateSecrets> endpointCertificateSecrets;
private final Optional<AthenzDomain> athenzDomain;
- private final Optional<ApplicationRoles> applicationRoles;
private final Quota quota;
private final List<TenantSecretStore> tenantSecretStores;
private final SecretStore secretStore;
@@ -315,7 +324,6 @@ public class ModelContextImpl implements ModelContext {
FlagSource flagSource,
Optional<EndpointCertificateSecrets> endpointCertificateSecrets,
Optional<AthenzDomain> athenzDomain,
- Optional<ApplicationRoles> applicationRoles,
Optional<Quota> maybeQuota,
List<TenantSecretStore> tenantSecretStores,
SecretStore secretStore,
@@ -334,7 +342,6 @@ public class ModelContextImpl implements ModelContext {
this.isFirstTimeDeployment = isFirstTimeDeployment;
this.endpointCertificateSecrets = endpointCertificateSecrets;
this.athenzDomain = athenzDomain;
- this.applicationRoles = applicationRoles;
this.quota = maybeQuota.orElseGet(Quota::unlimited);
this.tenantSecretStores = tenantSecretStores;
this.secretStore = secretStore;
@@ -392,11 +399,6 @@ public class ModelContextImpl implements ModelContext {
@Override
public Optional<AthenzDomain> athenzDomain() { return athenzDomain; }
- @Override
- public Optional<ApplicationRoles> applicationRoles() {
- return applicationRoles;
- }
-
@Override public Quota quota() { return quota; }
@Override
@@ -428,17 +430,4 @@ public class ModelContextImpl implements ModelContext {
}
- private static NodeResources parseDedicatedClusterControllerFlavor(String flagValue) {
- String[] parts = flagValue.split("-");
- if (parts.length != 3)
- return null;
-
- return new NodeResources(Double.parseDouble(parts[0]),
- Double.parseDouble(parts[1]),
- Double.parseDouble(parts[2]),
- 0.1,
- NodeResources.DiskSpeed.any,
- NodeResources.StorageType.any);
- }
-
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/TenantFileSystemDirs.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/TenantFileSystemDirs.java
index 587015362c8..c9fe59ad6a3 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/TenantFileSystemDirs.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/TenantFileSystemDirs.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.deploy;
import com.yahoo.config.provision.TenantName;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClient.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClient.java
index f0a63757477..ca822b7a99d 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClient.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClient.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.deploy;
import com.yahoo.component.Version;
@@ -8,15 +8,15 @@ import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.config.application.api.UnparsedConfigDefinition;
-import com.yahoo.config.model.application.provider.PreGeneratedFileRegistry;
import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.config.provision.serialization.AllocatedHostsSerializer;
import com.yahoo.io.reader.NamedReader;
-import java.util.logging.Level;
import com.yahoo.path.Path;
+import com.yahoo.text.Utf8;
import com.yahoo.vespa.config.ConfigDefinitionKey;
-import com.yahoo.vespa.config.server.zookeeper.ConfigCurator;
+import com.yahoo.vespa.config.server.filedistribution.FileDBRegistry;
import com.yahoo.vespa.config.server.zookeeper.ZKApplicationPackage;
+import com.yahoo.vespa.curator.Curator;
import com.yahoo.yolean.Exceptions;
import java.io.ByteArrayOutputStream;
@@ -27,12 +27,13 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;
+import java.util.logging.Level;
import static com.yahoo.config.application.api.ApplicationPackage.*;
-import static com.yahoo.vespa.config.server.zookeeper.ConfigCurator.DEFCONFIGS_ZK_SUBPATH;
-import static com.yahoo.vespa.config.server.zookeeper.ConfigCurator.META_ZK_PATH;
-import static com.yahoo.vespa.config.server.zookeeper.ConfigCurator.USERAPP_ZK_SUBPATH;
-import static com.yahoo.vespa.config.server.zookeeper.ConfigCurator.USER_DEFCONFIGS_ZK_SUBPATH;
+import static com.yahoo.vespa.config.server.zookeeper.ZKApplication.DEFCONFIGS_ZK_SUBPATH;
+import static com.yahoo.vespa.config.server.zookeeper.ZKApplication.META_ZK_PATH;
+import static com.yahoo.vespa.config.server.zookeeper.ZKApplication.USERAPP_ZK_SUBPATH;
+import static com.yahoo.vespa.config.server.zookeeper.ZKApplication.USER_DEFCONFIGS_ZK_SUBPATH;
/**
* Reads and writes application package to and from ZooKeeper.
@@ -41,14 +42,14 @@ import static com.yahoo.vespa.config.server.zookeeper.ConfigCurator.USER_DEFCONF
*/
public class ZooKeeperClient {
- private final ConfigCurator configCurator;
+ private final Curator curator;
private final DeployLogger logger;
private final Path sessionPath; // session id
private static final ApplicationFile.PathFilter xmlFilter = path -> path.getName().endsWith(".xml");
- public ZooKeeperClient(ConfigCurator configCurator, DeployLogger logger, Path sessionPath) {
- this.configCurator = configCurator;
+ public ZooKeeperClient(Curator curator, DeployLogger logger, Path sessionPath) {
+ this.curator = curator;
this.logger = logger;
this.sessionPath = sessionPath;
}
@@ -58,16 +59,14 @@ public class ZooKeeperClient {
* This is the first operation on ZK during deploy.
*/
void initialize() {
- if ( ! configCurator.exists(sessionPath.getAbsolute()))
- configCurator.createNode(sessionPath.getAbsolute());
+ curator.create(sessionPath);
for (String subPath : Arrays.asList(DEFCONFIGS_ZK_SUBPATH,
USER_DEFCONFIGS_ZK_SUBPATH,
USERAPP_ZK_SUBPATH,
ZKApplicationPackage.fileRegistryNode)) {
// TODO: The replaceFirst below is hackish.
- configCurator.createNode(getZooKeeperAppPath().getAbsolute(),
- subPath.replaceFirst("/", ""));
+ curator.create(getZooKeeperAppPath().append(subPath.replaceFirst("/", "")));
}
}
@@ -95,12 +94,12 @@ public class ZooKeeperClient {
if (sds.isEmpty()) return;
Path zkPath = getZooKeeperAppPath(USERAPP_ZK_SUBPATH).append(SCHEMAS_DIR);
- configCurator.createNode(zkPath.getAbsolute());
+ curator.create(zkPath);
// Ensures that ranking expressions and other files are also written
writeDir(app.getFile(ApplicationPackage.SEARCH_DEFINITIONS_DIR), zkPath, false);
writeDir(app.getFile(ApplicationPackage.SCHEMAS_DIR), zkPath, false);
for (NamedReader sd : sds) {
- configCurator.putData(zkPath.getAbsolute(), sd.getName(), com.yahoo.io.IOUtils.readAll(sd.getReader()));
+ curator.set(zkPath.append(sd.getName()), Utf8.toBytes(com.yahoo.io.IOUtils.readAll(sd.getReader())));
sd.getReader().close();
}
}
@@ -154,7 +153,7 @@ public class ZooKeeperClient {
String name = file.getPath().getName();
if (name.startsWith(".")) continue; //.svn , .git ...
if (file.isDirectory()) {
- configCurator.createNode(path.append(name).getAbsolute());
+ curator.create(path.append(name));
if (recurse) {
writeDir(file, path.append(name), filenameFilter, recurse);
}
@@ -192,7 +191,7 @@ public class ZooKeeperClient {
try (InputStream inputStream = file.createInputStream()) {
inputStream.transferTo(baos);
baos.flush();
- configCurator.putData(zkPath.append(file.getPath().getName()).getAbsolute(), baos.toByteArray());
+ curator.set(zkPath.append(file.getPath().getName()), baos.toByteArray());
}
}
@@ -201,7 +200,7 @@ public class ZooKeeperClient {
ApplicationFile dir = applicationPackage.getFile(Path.fromString(userInclude));
final List<ApplicationFile> files = dir.listFiles();
if (files == null || files.isEmpty()) {
- configCurator.createNode(getZooKeeperAppPath(USERAPP_ZK_SUBPATH + "/" + userInclude).getAbsolute());
+ curator.create(getZooKeeperAppPath(USERAPP_ZK_SUBPATH + "/" + userInclude));
}
writeDir(dir,
getZooKeeperAppPath(USERAPP_ZK_SUBPATH + "/" + userInclude),
@@ -218,21 +217,20 @@ public class ZooKeeperClient {
for (Map.Entry<ConfigDefinitionKey, UnparsedConfigDefinition> entry : configDefs.entrySet()) {
ConfigDefinitionKey key = entry.getKey();
String contents = entry.getValue().getUnparsedContent();
- writeConfigDefinition(key.getName(), key.getNamespace(), getZooKeeperAppPath(USER_DEFCONFIGS_ZK_SUBPATH).getAbsolute(), contents);
- writeConfigDefinition(key.getName(), key.getNamespace(), getZooKeeperAppPath(DEFCONFIGS_ZK_SUBPATH).getAbsolute(), contents);
+ writeConfigDefinition(key.getName(), key.getNamespace(), getZooKeeperAppPath(USER_DEFCONFIGS_ZK_SUBPATH), contents);
+ writeConfigDefinition(key.getName(), key.getNamespace(), getZooKeeperAppPath(DEFCONFIGS_ZK_SUBPATH), contents);
}
logger.log(Level.FINE, configDefs.size() + " user config definitions");
}
- private void writeConfigDefinition(String name, String namespace, String path, String data) {
- configCurator.putDefData(namespace + "." + name, path, com.yahoo.text.Utf8.toBytes(data));
+ private void writeConfigDefinition(String name, String namespace, Path path, String data) {
+ curator.set(path.append(namespace + "." + name), Utf8.toBytes(data));
}
private void write(Version vespaVersion, FileRegistry fileRegistry) {
- String exportedRegistry = PreGeneratedFileRegistry.exportRegistry(fileRegistry);
- configCurator.putData(getZooKeeperAppPath(ZKApplicationPackage.fileRegistryNode).getAbsolute(),
- vespaVersion.toFullString(),
- exportedRegistry);
+ String exportedRegistry = FileDBRegistry.exportRegistry(fileRegistry);
+ curator.set(getZooKeeperAppPath(ZKApplicationPackage.fileRegistryNode).append(vespaVersion.toFullString()),
+ Utf8.toBytes(exportedRegistry));
}
/**
@@ -242,13 +240,13 @@ public class ZooKeeperClient {
* @param metaData The application metadata.
*/
private void writeMetadata(ApplicationMetaData metaData) {
- configCurator.putData(getZooKeeperAppPath(META_ZK_PATH).getAbsolute(), metaData.asJsonBytes());
+ curator.set(getZooKeeperAppPath(META_ZK_PATH), metaData.asJsonBytes());
}
void cleanupZooKeeper() {
try {
List.of(DEFCONFIGS_ZK_SUBPATH, USER_DEFCONFIGS_ZK_SUBPATH, USERAPP_ZK_SUBPATH)
- .forEach(path -> configCurator.deleteRecurse(getZooKeeperAppPath(path).getAbsolute()));
+ .forEach(path -> curator.delete(getZooKeeperAppPath(path)));
} catch (Exception e) {
logger.log(Level.WARNING, "Could not clean up in zookeeper: " + Exceptions.toMessageString(e));
//Might be called in an exception handler before re-throw, so do not throw here.
@@ -277,8 +275,8 @@ public class ZooKeeperClient {
}
public void write(AllocatedHosts hosts) throws IOException {
- configCurator.putData(sessionPath.append(ZKApplicationPackage.allocatedHostsNode).getAbsolute(),
- AllocatedHostsSerializer.toJson(hosts));
+ curator.set(sessionPath.append(ZKApplicationPackage.allocatedHostsNode),
+ AllocatedHostsSerializer.toJson(hosts));
}
public void write(Map<Version, FileRegistry> fileRegistryMap) {
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ZooKeeperDeployer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ZooKeeperDeployer.java
index 8c7d6ea28dd..8d889b1fb2c 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ZooKeeperDeployer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ZooKeeperDeployer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.deploy;
import com.yahoo.config.application.api.ApplicationPackage;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/AddFileInterface.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/AddFileInterface.java
index 163c19abe75..855b27e0f92 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/AddFileInterface.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/AddFileInterface.java
@@ -1,8 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.filedistribution;
import com.yahoo.config.FileReference;
+import java.io.File;
+import java.io.IOException;
import java.nio.ByteBuffer;
/**
@@ -10,6 +12,7 @@ import java.nio.ByteBuffer;
*/
public interface AddFileInterface {
FileReference addUri(String uri, String relativePath);
- FileReference addFile(String relativePath);
+ FileReference addFile(String relativePath) throws IOException;
+ FileReference addFile(File file) throws IOException;
FileReference addBlob(ByteBuffer blob, String relativePath);
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/ApplicationFileManager.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/ApplicationFileManager.java
index a1907c01085..35295ef357f 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/ApplicationFileManager.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/ApplicationFileManager.java
@@ -1,7 +1,10 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.filedistribution;
import com.yahoo.config.FileReference;
+import com.yahoo.io.IOUtils;
+import net.jpountz.lz4.LZ4FrameOutputStream;
+
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@@ -11,6 +14,8 @@ import java.nio.ByteBuffer;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
/**
* @author baldersheim
@@ -26,56 +31,85 @@ public class ApplicationFileManager implements AddFileInterface {
}
@Override
- public FileReference addFile(String relativePath) {
+ public FileReference addFile(String relativePath) throws IOException {
return fileDirectory.addFile(new File(applicationDir, relativePath));
}
@Override
+ public FileReference addFile(File file) throws IOException {
+ return fileDirectory.addFile(file);
+ }
+
+ @Override
public FileReference addUri(String uri, String relativePath) {
- download(uri, relativePath);
- return addFile(relativePath);
+ File file = download(uri, relativePath);
+ try {
+ return addFile(file);
+ } catch (IOException e) {
+ throw new IllegalArgumentException(e);
+ } finally {
+ cleanup(file, relativePath);
+ }
}
@Override
public FileReference addBlob(ByteBuffer blob, String relativePath) {
- writeBlob(blob, relativePath);
- return addFile(relativePath);
+ File file = writeBlob(blob, relativePath);
+ try {
+ return addFile(file);
+ } catch (IOException e) {
+ throw new IllegalArgumentException(e);
+ } finally {
+ cleanup(file, relativePath);
+ }
}
- private void writeBlob(ByteBuffer blob, String relativePath) {
- File file = new File(applicationDir, relativePath);
+ private File writeBlob(ByteBuffer blob, String relativePath) {
FileOutputStream fos = null;
+ File file = null;
try {
- Files.createDirectories(file.toPath().getParent());
- fos = new FileOutputStream(file.getAbsolutePath());
- fos.write(blob.array(), blob.arrayOffset(), blob.remaining());
+ Path path = Files.createTempDirectory("");
+ file = new File(path.toFile(), relativePath);
+ Files.createDirectories(file.getParentFile().toPath());
+ fos = new FileOutputStream(file);
+ if (relativePath.endsWith(".lz4")) {
+ LZ4FrameOutputStream lz4 = new LZ4FrameOutputStream(fos);
+ lz4.write(blob.array(), blob.arrayOffset(), blob.remaining());
+ lz4.close();
+ } else {
+ fos.write(blob.array(), blob.arrayOffset(), blob.remaining());
+ }
+ return file;
} catch (IOException e) {
- throw new IllegalArgumentException("Failed creating directory " + file.getParent(), e);
+ throw new IllegalArgumentException("Failed creating temp file", e);
} finally {
try {
if (fos != null) {
fos.close();
}
} catch (IOException e) {
- throw new IllegalArgumentException("Failed closing down after writing blob of size " + blob.remaining() + " to " + file.getAbsolutePath());
+ throw new IllegalArgumentException("Failed closing down after writing blob of size " + blob.remaining() + " to " + file);
}
}
}
- private void download(String uri, String relativePath) {
- File file = new File(applicationDir, relativePath);
+ private File download(String uri, String relativePath) {
+ File file = null;
FileOutputStream fos = null;
ReadableByteChannel rbc = null;
try {
- Files.createDirectories(file.toPath().getParent());
+ Path path = Files.createTempDirectory("");
+ file = new File(path.toFile(), relativePath);
+ Files.createDirectories(file.getParentFile().toPath());
URL website = new URL(uri);
rbc = Channels.newChannel(website.openStream());
- fos = new FileOutputStream(file.getAbsolutePath());
+ fos = new FileOutputStream(file);
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
+ return file;
} catch (SocketTimeoutException e) {
throw new IllegalArgumentException("Failed connecting to or reading from " + uri, e);
} catch (IOException e) {
- throw new IllegalArgumentException("Failed creating directory " + file.getParent(), e);
+ throw new IllegalArgumentException("Failed creating " + file, e);
} finally {
try {
if (fos != null) {
@@ -85,8 +119,18 @@ public class ApplicationFileManager implements AddFileInterface {
rbc.close();
}
} catch (IOException e) {
- throw new IllegalArgumentException("Failed closing down after downloading " + uri + " to " + file.getAbsolutePath());
+ throw new IllegalArgumentException("Failed closing down after downloading " + uri + " to " + file);
}
}
}
+
+ private void cleanup(File file, String relativePath) {
+ Path pathToDelete = file.toPath();
+ // Remove as many components as there are in relative path to find temp path to delete
+ for (int i = 0; i < Paths.get(relativePath).getNameCount(); i++)
+ pathToDelete = pathToDelete.resolveSibling("");
+ IOUtils.recursiveDeleteDir(pathToDelete.toFile());
+ }
+
+
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDBRegistry.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDBRegistry.java
index 4605d5e5f5c..3eeaa6598d3 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDBRegistry.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDBRegistry.java
@@ -1,41 +1,92 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.filedistribution;
+import com.google.common.collect.ImmutableMap;
import com.yahoo.config.FileReference;
import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.net.HostName;
import com.yahoo.text.Utf8;
import net.jpountz.xxhash.XXHashFactory;
+import java.io.BufferedReader;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.Reader;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
+import java.util.regex.Pattern;
/**
* @author Tony Vaagenes
*/
public class FileDBRegistry implements FileRegistry {
+ private final boolean silenceNonExistingFiles;
private final AddFileInterface manager;
- private final List<Entry> entries = new ArrayList<>();
private final Map<String, FileReference> fileReferenceCache = new HashMap<>();
+ private static final String entryDelimiter = "\t";
+ private static final Pattern entryDelimiterPattern = Pattern.compile(entryDelimiter, Pattern.LITERAL);
public FileDBRegistry(AddFileInterface manager) {
+ silenceNonExistingFiles = false;
this.manager = manager;
}
+ public static FileDBRegistry create(AddFileInterface manager, Reader persistedState) {
+ try (BufferedReader reader = new BufferedReader(persistedState)) {
+ String ignoredFileSourceHost = reader.readLine();
+ if (ignoredFileSourceHost == null)
+ throw new RuntimeException("No file source host");
+ return new FileDBRegistry(manager, decode(reader));
+ } catch (IOException e) {
+ throw new RuntimeException("Error while reading pre-generated file registry", e);
+ }
+ }
+
+ static Map<String, FileReference> decode(BufferedReader reader) {
+ Map<String, FileReference> refs = new HashMap<>();
+ try {
+ String line;
+ while ((line = reader.readLine()) != null) {
+ String[] parts = entryDelimiterPattern.split(line);
+ if (parts.length < 2)
+ throw new IllegalArgumentException("Cannot split '" + line + "' into two parts");
+ refs.put(parts[0], new FileReference(parts[1]));
+ }
+ } catch (IOException e) {
+ throw new RuntimeException("Error while reading pre-generated file registry", e);
+ }
+ return refs;
+ }
+ private FileDBRegistry(AddFileInterface manager, Map<String, FileReference> knownReferences) {
+ silenceNonExistingFiles = true;
+ this.manager = manager;
+ fileReferenceCache.putAll(knownReferences);
+ }
+
@Override
public synchronized FileReference addFile(String relativePath) {
Optional<FileReference> cachedReference = Optional.ofNullable(fileReferenceCache.get(relativePath));
return cachedReference.orElseGet(() -> {
- FileReference newRef = manager.addFile(relativePath);
- entries.add(new Entry(relativePath, newRef));
- fileReferenceCache.put(relativePath, newRef);
- return newRef;
- });
+ try {
+ FileReference newRef = manager.addFile(relativePath);
+ fileReferenceCache.put(relativePath, newRef);
+ return newRef;
+ } catch (FileNotFoundException e) {
+ if (silenceNonExistingFiles) {
+ return new FileReference("non-existing-file");
+ } else {
+ throw new IllegalArgumentException(e);
+ }
+ } catch (IOException e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
+ );
}
@Override
@@ -44,22 +95,18 @@ public class FileDBRegistry implements FileRegistry {
Optional<FileReference> cachedReference = Optional.ofNullable(fileReferenceCache.get(uri));
return cachedReference.orElseGet(() -> {
FileReference newRef = manager.addUri(uri, relativePath);
- entries.add(new Entry(uri, newRef));
fileReferenceCache.put(uri, newRef);
return newRef;
});
}
@Override
- public FileReference addBlob(ByteBuffer blob) {
- long blobHash = XXHashFactory.fastestJavaInstance().hash64().hash(blob, 0);
- String blobName = Long.toHexString(blobHash);
- String relativePath = blobToRelativeFile(blob, blobName);
+ public FileReference addBlob(String blobName, ByteBuffer blob) {
+ String relativePath = blobToRelativeFile(blobName);
synchronized (this) {
Optional<FileReference> cachedReference = Optional.ofNullable(fileReferenceCache.get(blobName));
return cachedReference.orElseGet(() -> {
FileReference newRef = manager.addBlob(blob, relativePath);
- entries.add(new Entry(blobName, newRef));
fileReferenceCache.put(blobName, newRef);
return newRef;
});
@@ -67,15 +114,30 @@ public class FileDBRegistry implements FileRegistry {
}
@Override
- public String fileSourceHost() {
- return HostName.getLocalhost();
- }
-
- @Override
public synchronized List<Entry> export() {
+ List<Entry> entries = new ArrayList<>();
+ for (Map.Entry<String, FileReference> entry : fileReferenceCache.entrySet()) {
+ entries.add(new Entry(entry.getKey(), entry.getValue()));
+ }
return entries;
}
+ synchronized Map<String, FileReference> getMap() {
+ return ImmutableMap.copyOf(fileReferenceCache);
+ }
+
+ public static String exportRegistry(FileRegistry registry) {
+ List<Entry> entries = registry.export();
+ StringBuilder builder = new StringBuilder();
+
+ builder.append(HostName.getLocalhost()).append('\n');
+ for (FileRegistry.Entry entry : entries) {
+ builder.append(entry.relativePath).append(entryDelimiter).append(entry.reference.value()).append('\n');
+ }
+
+ return builder.toString();
+ }
+
private static String uriToRelativeFile(String uri) {
String relative = "uri/" + XXHashFactory.fastestJavaInstance().hash64().hash(ByteBuffer.wrap(Utf8.toBytes(uri)), 0);
if (uri.endsWith(".json")) {
@@ -88,9 +150,8 @@ public class FileDBRegistry implements FileRegistry {
return relative;
}
- private static String blobToRelativeFile(ByteBuffer blob, String blobName) {
- String relative = "blob/" + blobName;
- return relative;
+ private static String blobToRelativeFile(String blobName) {
+ return "blob/" + blobName;
}
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDirectory.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDirectory.java
index f7ba895666b..d836eb8111f 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDirectory.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDirectory.java
@@ -1,9 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.filedistribution;
import com.yahoo.config.FileReference;
import com.yahoo.io.IOUtils;
import java.util.logging.Level;
+
import com.yahoo.text.Utf8;
import net.jpountz.xxhash.XXHash64;
import net.jpountz.xxhash.XXHashFactory;
@@ -30,7 +31,7 @@ public class FileDirectory {
try {
ensureRootExist();
} catch (IllegalArgumentException e) {
- log.log(Level.WARNING, "Failed creating directory in constructor, will retry on demand : " + e.toString());
+ log.log(Level.WARNING, "Failed creating directory in constructor, will retry on demand : " + e.getMessage());
}
}
@@ -59,14 +60,14 @@ public class FileDirectory {
ensureRootExist();
File dir = new File(getPath(reference));
if (!dir.exists()) {
- throw new IllegalArgumentException("File reference '" + reference.toString() + "' with absolute path '" + dir.getAbsolutePath() + "' does not exist.");
+ throw new IllegalArgumentException("File reference '" + reference.value() + "' with absolute path '" + dir.getAbsolutePath() + "' does not exist.");
}
if (!dir.isDirectory()) {
- throw new IllegalArgumentException("File reference '" + reference.toString() + "' with absolute path '" + dir.getAbsolutePath() + "' is not a directory.");
+ throw new IllegalArgumentException("File reference '" + reference.value() + "' with absolute path '" + dir.getAbsolutePath() + "' is not a directory.");
}
File [] files = dir.listFiles(new Filter());
if (files == null || files.length == 0) {
- throw new IllegalArgumentException("File reference '" + reference.toString() + "' with absolute path '" + dir.getAbsolutePath() + " does not contain any files");
+ throw new IllegalArgumentException("File reference '" + reference.value() + "' with absolute path '" + dir.getAbsolutePath() + " does not contain any files");
}
return files[0];
}
@@ -97,15 +98,11 @@ public class FileDirectory {
return hasher.hash(ByteBuffer.wrap(wholeFile), hasher.hash(ByteBuffer.wrap(Utf8.toBytes(file.getName())), 0));
}
- public FileReference addFile(File source) {
- try {
- Long hash = computeHash(source);
- verifyExistingFile(source, hash);
- FileReference fileReference = fileReferenceFromHash(hash);
- return addFile(source, fileReference);
- } catch (IOException e) {
- throw new IllegalArgumentException(e);
- }
+ public FileReference addFile(File source) throws IOException {
+ Long hash = computeHash(source);
+ verifyExistingFile(source, hash);
+ FileReference fileReference = fileReferenceFromHash(hash);
+ return addFile(source, fileReference);
}
// If there exists a directory for a file reference, but content does not have correct hash or the file we want to add
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionFactory.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionFactory.java
index fd71afedec1..3e3c7066927 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionFactory.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionFactory.java
@@ -1,10 +1,13 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.filedistribution;
import com.google.inject.Inject;
import com.yahoo.cloud.config.ConfigserverConfig;
+import com.yahoo.config.application.api.FileRegistry;
+import com.yahoo.config.model.api.FileDistribution;
import com.yahoo.jrt.Supervisor;
import com.yahoo.jrt.Transport;
+import com.yahoo.vespa.defaults.Defaults;
import java.io.File;
@@ -14,7 +17,7 @@ import java.io.File;
* @author Ulf Lilleengen
*/
@SuppressWarnings("WeakerAccess")
-public class FileDistributionFactory {
+public class FileDistributionFactory implements AutoCloseable {
protected final ConfigserverConfig configserverConfig;
private final Supervisor supervisor = new Supervisor(new Transport("filedistribution"));
@@ -24,8 +27,24 @@ public class FileDistributionFactory {
this.configserverConfig = configserverConfig;
}
- public FileDistributionProvider createProvider(File applicationPackage) {
- return new FileDistributionProvider(applicationPackage, new FileDistributionImpl(configserverConfig, supervisor));
+ public FileRegistry createFileRegistry(File applicationPackage) {
+ return new FileDBRegistry(createFileManager(applicationPackage));
+ }
+
+ public FileDistribution createFileDistribution() {
+ return new FileDistributionImpl(getFileReferencesDir(), supervisor);
+ }
+
+ public AddFileInterface createFileManager(File applicationDir) {
+ return new ApplicationFileManager(applicationDir, new FileDirectory(getFileReferencesDir()));
+ }
+
+ protected File getFileReferencesDir() {
+ return new File(Defaults.getDefaults().underVespaHome(configserverConfig.fileReferencesDir()));
+ }
+
+ public void close() {
+ supervisor.transport().shutdown().join();
}
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionImpl.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionImpl.java
index 2eebbfa4acf..a49e2ec76bb 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionImpl.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionImpl.java
@@ -1,7 +1,6 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.filedistribution;
-import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.config.FileReference;
import com.yahoo.config.model.api.FileDistribution;
import com.yahoo.jrt.Request;
@@ -10,25 +9,25 @@ import com.yahoo.jrt.Spec;
import com.yahoo.jrt.StringArray;
import com.yahoo.jrt.Supervisor;
import com.yahoo.jrt.Target;
-import java.util.logging.Level;
-import com.yahoo.vespa.defaults.Defaults;
import java.io.File;
import java.util.Set;
+import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author baldersheim
*/
public class FileDistributionImpl implements FileDistribution, RequestWaiter {
+
private final static Logger log = Logger.getLogger(FileDistributionImpl.class.getName());
private final static double rpcTimeout = 1.0;
private final Supervisor supervisor;
private final File fileReferencesDir;
- public FileDistributionImpl(ConfigserverConfig configserverConfig, Supervisor supervisor) {
- this.fileReferencesDir = new File(Defaults.getDefaults().underVespaHome(configserverConfig.fileReferencesDir()));
+ public FileDistributionImpl(File fileReferencesDir, Supervisor supervisor) {
+ this.fileReferencesDir = fileReferencesDir;
this.supervisor = supervisor;
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionProvider.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionProvider.java
deleted file mode 100644
index b3f3214793c..00000000000
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionProvider.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.config.server.filedistribution;
-
-import com.yahoo.config.model.api.FileDistribution;
-import com.yahoo.config.application.api.FileRegistry;
-
-import java.io.File;
-
-/**
- * Provides file distribution registry and invoker.
- *
- * @author Ulf Lilleengen
- */
-public class FileDistributionProvider {
-
- private final FileRegistry fileRegistry;
- private final FileDistribution fileDistribution;
-
- public FileDistributionProvider(File applicationDir, FileDistribution fileDistribution) {
- this(new FileDBRegistry(new ApplicationFileManager(applicationDir, new FileDirectory(fileDistribution.getFileReferencesDir()))), fileDistribution);
- ensureDirExists(fileDistribution.getFileReferencesDir());
- }
-
- FileDistributionProvider(FileRegistry fileRegistry, FileDistribution fileDistribution) {
- this.fileRegistry = fileRegistry;
- this.fileDistribution = fileDistribution;
- }
-
- public FileRegistry getFileRegistry() {
- return fileRegistry;
- }
-
- public FileDistribution getFileDistribution() {
- return fileDistribution;
- }
-
- private static void ensureDirExists(File dir) {
- if (!dir.exists()) {
- boolean success = dir.mkdirs();
- if (!success)
- throw new RuntimeException("Could not create directory " + dir.getPath());
- }
- }
-
-}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionUtil.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionUtil.java
index cfe7349a1c6..2d39c5549cc 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionUtil.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDistributionUtil.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.filedistribution;
import com.yahoo.cloud.config.ConfigserverConfig;
@@ -50,7 +50,9 @@ public class FileDistributionUtil {
.collect(Collectors.toList());
return configServers.size() > 0
- ? new JRTConnectionPool(new ConfigSourceSet(configServers), "filedistribution-jrt-pool-")
+ ? new JRTConnectionPool(new ConfigSourceSet(configServers),
+ new Supervisor(new Transport("filedistribution-pool"))
+ .setDropEmptyBuffers(true))
: emptyConnectionPool();
}
@@ -75,9 +77,6 @@ public class FileDistributionUtil {
}
@Override
- public void setError(Connection connection, int i) {}
-
- @Override
public Connection getCurrent() { return null; }
@Override
@@ -90,7 +89,7 @@ public class FileDistributionUtil {
public Supervisor getSupervisor() {
synchronized (this) {
if (supervisor == null) {
- supervisor = new Supervisor(new Transport("empty-connectionpool"));
+ supervisor = new Supervisor(new Transport("empty-connection-pool")).setDropEmptyBuffers(true);
}
}
return supervisor;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java
index 3c91cea91e1..4c7d0b3122a 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.filedistribution;
import com.google.inject.Inject;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/MockFileDistribution.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/MockFileDistribution.java
index 40d75d9dbac..99889f38bb9 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/MockFileDistribution.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/MockFileDistribution.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.filedistribution;
import com.yahoo.config.FileReference;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/MockFileManager.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/MockFileManager.java
new file mode 100644
index 00000000000..ce0a9866919
--- /dev/null
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/MockFileManager.java
@@ -0,0 +1,34 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.config.server.filedistribution;
+
+import com.yahoo.config.FileReference;
+
+import java.io.File;
+import java.nio.ByteBuffer;
+
+/**
+ * @author hmusum
+ */
+public class MockFileManager implements AddFileInterface {
+
+ @Override
+ public FileReference addUri(String uri, String relativePath) {
+ return null;
+ }
+
+ @Override
+ public FileReference addFile(String relativePath) {
+ return null;
+ }
+
+ @Override
+ public FileReference addFile(File file) {
+ return null;
+ }
+
+ @Override
+ public FileReference addBlob(ByteBuffer blob, String relativePath) {
+ return null;
+ }
+
+}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/host/ConfigRequestHostLivenessTracker.java b/configserver/src/main/java/com/yahoo/vespa/config/server/host/ConfigRequestHostLivenessTracker.java
index 787ab18b42e..bf28c94caf1 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/host/ConfigRequestHostLivenessTracker.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/host/ConfigRequestHostLivenessTracker.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.host;
import com.google.inject.Inject;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/host/HostRegistry.java b/configserver/src/main/java/com/yahoo/vespa/config/server/host/HostRegistry.java
index 696c94fcdbd..5c161a5f746 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/host/HostRegistry.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/host/HostRegistry.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.host;
import java.util.ArrayList;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/host/HostValidator.java b/configserver/src/main/java/com/yahoo/vespa/config/server/host/HostValidator.java
index ea7d15b32e9..0d3cbb3860b 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/host/HostValidator.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/host/HostValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.host;
import java.util.Collection;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/BadRequestException.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/BadRequestException.java
index ca2ab456564..fada7839aec 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/BadRequestException.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/BadRequestException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
/**
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/ContentHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/ContentHandler.java
index bbbc8764122..13acc121fa0 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/ContentHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/ContentHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.yahoo.config.application.api.ApplicationFile;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/ContentRequest.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/ContentRequest.java
index 32d2f99e5f5..995c4b2dc56 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/ContentRequest.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/ContentRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.yahoo.config.application.api.ApplicationFile;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpConfigRequest.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpConfigRequest.java
index cdbd7378151..3baa57b2b01 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpConfigRequest.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpConfigRequest.java
@@ -1,27 +1,28 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
-import java.util.Collections;
-import java.util.Optional;
-import java.util.Set;
-
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.yahoo.collections.Tuple2;
+import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ApplicationName;
import com.yahoo.config.provision.TenantName;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.jdisc.application.BindingMatch;
import com.yahoo.vespa.config.ConfigKey;
import com.yahoo.vespa.config.GetConfigRequest;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.vespa.config.protocol.DefContent;
import com.yahoo.vespa.config.protocol.VespaVersion;
import com.yahoo.vespa.config.server.RequestHandler;
-import com.yahoo.config.provision.ApplicationId;
import com.yahoo.vespa.config.server.http.v2.request.HttpConfigRequests;
import com.yahoo.vespa.config.server.http.v2.request.TenantRequest;
import com.yahoo.vespa.config.util.ConfigUtils;
+import java.util.Collections;
+import java.util.Optional;
+import java.util.Set;
+
/**
* A request to get config, bound to tenant and app id. Used by both v1 and v2 of the config REST API.
*
@@ -191,4 +192,11 @@ public class HttpConfigRequest implements GetConfigRequest, TenantRequest {
public boolean noCache() {
return noCache;
}
+
+ @Override
+ public String getRequestDefMd5() { return ConfigUtils.getDefMd5(getDefContent().asList()); }
+
+ @Override
+ public PayloadChecksums configPayloadChecksums() { return PayloadChecksums.empty(); }
+
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpConfigResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpConfigResponse.java
index 1457c5faa1d..49647ad8e20 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpConfigResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpConfigResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.yahoo.container.jdisc.HttpResponse;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpErrorResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpErrorResponse.java
index bd4231972e7..96e1767b462 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpErrorResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpErrorResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.yahoo.container.jdisc.HttpResponse;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpFetcher.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpFetcher.java
index f2cd479c33d..6c05e755721 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpFetcher.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpFetcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.yahoo.container.jdisc.HttpResponse;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpGetConfigHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpGetConfigHandler.java
index b6f2c2e0919..41f2d6836e8 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpGetConfigHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpGetConfigHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.google.inject.Inject;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpHandler.java
index 510fb3f4cc2..ea7d0e03812 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.yahoo.config.provision.ApplicationLockException;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpListConfigsHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpListConfigsHandler.java
index fb3b993b8ba..f750a2b038a 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpListConfigsHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpListConfigsHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.google.inject.Inject;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpListNamedConfigsHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpListNamedConfigsHandler.java
index 4602153fab1..ae8e0b19b92 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpListNamedConfigsHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpListNamedConfigsHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.google.inject.Inject;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/InternalServerException.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/InternalServerException.java
index e8e8f0046d5..2d44440163d 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/InternalServerException.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/InternalServerException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
/**
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/InvalidApplicationException.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/InvalidApplicationException.java
index 9ff81bde130..70cc89c08af 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/InvalidApplicationException.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/InvalidApplicationException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
/**
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/JSONResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/JSONResponse.java
index ec8f2d3d1f1..8ad3d627b56 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/JSONResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/JSONResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.yahoo.container.jdisc.HttpResponse;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/LogRetriever.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/LogRetriever.java
index 047953e4d4e..98d88932848 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/LogRetriever.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/LogRetriever.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import ai.vespa.util.http.hc4.VespaHttpClientBuilder;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/NotFoundException.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/NotFoundException.java
index aa582bdede2..eb008de6ee5 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/NotFoundException.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/NotFoundException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
/**
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/RequestTimeoutException.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/RequestTimeoutException.java
index 1658a595e0c..f9da54931a0 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/RequestTimeoutException.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/RequestTimeoutException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
/**
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SecretStoreValidator.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SecretStoreValidator.java
index 6b888014051..dc3f32472a2 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SecretStoreValidator.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SecretStoreValidator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import ai.vespa.util.http.hc4.VespaHttpClientBuilder;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionContentListResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionContentListResponse.java
index 57095772b26..b8d998a5b3d 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionContentListResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionContentListResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.yahoo.config.application.api.ApplicationFile;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionContentReadResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionContentReadResponse.java
index dac9acb42bd..73a32245e3d 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionContentReadResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionContentReadResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.yahoo.config.application.api.ApplicationFile;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionContentStatusListResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionContentStatusListResponse.java
index 860189a171c..893c784c9a1 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionContentStatusListResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionContentStatusListResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.yahoo.config.application.api.ApplicationFile;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionContentStatusResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionContentStatusResponse.java
index e6909e32985..fbcdb270472 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionContentStatusResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionContentStatusResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.yahoo.config.application.api.ApplicationFile;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionHandler.java
index 540a6545383..3f2cd1e41af 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SessionHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.yahoo.container.jdisc.HttpRequest;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SimpleHttpFetcher.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SimpleHttpFetcher.java
index 6c4f92736fb..4fb14dacd9a 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/SimpleHttpFetcher.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/SimpleHttpFetcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import ai.vespa.util.http.hc5.VespaHttpClientBuilder;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/StaticResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/StaticResponse.java
index d027d08eda5..3b0f29be765 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/StaticResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/StaticResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.yahoo.container.jdisc.HttpResponse;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/TesterClient.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/TesterClient.java
index 43552d317cd..815e2cbb8e2 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/TesterClient.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/TesterClient.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import ai.vespa.util.http.hc4.VespaHttpClientBuilder;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/UnknownVespaVersionException.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/UnknownVespaVersionException.java
index 91380d0a0ca..0d1b96dac35 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/UnknownVespaVersionException.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/UnknownVespaVersionException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
/**
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/Utils.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/Utils.java
index d0da7fcd4bd..132397eac47 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/Utils.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/Utils.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.yahoo.config.provision.TenantName;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/status/StatusHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/status/StatusHandler.java
index 2f84f4939c4..630ec2d7565 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/status/StatusHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/status/StatusHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.status;
import com.google.inject.Inject;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationApiHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationApiHandler.java
index 7e8940d28b3..1a8b36ee19f 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationApiHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationApiHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import com.google.inject.Inject;
@@ -75,7 +75,7 @@ public class ApplicationApiHandler extends SessionHandler {
.map(ContentType::parse)
.map(contentType -> contentType.getMimeType().equalsIgnoreCase(MULTIPART_FORM_DATA))
.orElse(false);
- if(multipartRequest) {
+ if (multipartRequest) {
try {
MultiPartFormInputStream multiPartFormInputStream = new MultiPartFormInputStream(request.getData(), request.getHeader(CONTENT_TYPE), /* config */null, /* contextTmpDir */null);
Map<String, Part> parts = multiPartFormInputStream.getParts().stream()
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java
index ec7b6616bb6..bdb48cc0160 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import com.google.inject.Inject;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/HostHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/HostHandler.java
index 0a69c7ed904..f91e64d35a9 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/HostHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/HostHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import com.google.inject.Inject;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/HttpGetConfigHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/HttpGetConfigHandler.java
index 76a39bbcadb..88f75fcee57 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/HttpGetConfigHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/HttpGetConfigHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import com.google.inject.Inject;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/HttpListConfigsHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/HttpListConfigsHandler.java
index 3210f5eb8e5..3c9db30e864 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/HttpListConfigsHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/HttpListConfigsHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import java.io.IOException;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/HttpListNamedConfigsHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/HttpListNamedConfigsHandler.java
index 425aa1c2bd2..23151a86867 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/HttpListNamedConfigsHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/HttpListNamedConfigsHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import java.util.Optional;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ListApplicationsHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ListApplicationsHandler.java
index 20688f4f2f1..087f9e453ca 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ListApplicationsHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/ListApplicationsHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import com.google.inject.Inject;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/PrepareResult.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/PrepareResult.java
index 24bdfd81f1c..f97e972180a 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/PrepareResult.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/PrepareResult.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import com.yahoo.vespa.config.server.configchange.ConfigChangeActions;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandler.java
index f97e272b132..d10e9e9ab18 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import java.time.Duration;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandler.java
index 4664fdf3557..17a8e1449c4 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import com.google.inject.Inject;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandler.java
index ea7d11d9802..5708cf30c89 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import com.google.inject.Inject;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandler.java
index 0d6d5ed943a..86e5e2865bf 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import com.google.inject.Inject;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/TenantHandler.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/TenantHandler.java
index a9961762f8b..4d9338f05f8 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/TenantHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/TenantHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import com.google.common.collect.ImmutableSet;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/ApplicationContentRequest.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/ApplicationContentRequest.java
index b7ec6272c3a..34c842eca44 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/ApplicationContentRequest.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/ApplicationContentRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2.request;
import com.yahoo.config.application.api.ApplicationFile;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/HttpConfigRequests.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/HttpConfigRequests.java
index d190ccaec12..88b97932066 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/HttpConfigRequests.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/HttpConfigRequests.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2.request;
import java.net.URI;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/HttpListConfigsRequest.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/HttpListConfigsRequest.java
index cd9c44db85b..570b4c4777d 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/HttpListConfigsRequest.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/HttpListConfigsRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2.request;
import com.yahoo.collections.Tuple2;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/SessionContentRequestV2.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/SessionContentRequestV2.java
index 4f34b2fb332..da71fd89054 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/SessionContentRequestV2.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/SessionContentRequestV2.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2.request;
import com.yahoo.config.application.api.ApplicationFile;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/TenantRequest.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/TenantRequest.java
index 84071ca2a98..4d7a934dd03 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/TenantRequest.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/request/TenantRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2.request;
import com.yahoo.config.provision.ApplicationId;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ApplicationSuspendedResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ApplicationSuspendedResponse.java
index c2449d9a31d..fd8f967bdbb 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ApplicationSuspendedResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ApplicationSuspendedResponse.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2.response;
import com.yahoo.jdisc.Response;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/DeleteApplicationResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/DeleteApplicationResponse.java
index 375a6d5e57f..a362ddb0faf 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/DeleteApplicationResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/DeleteApplicationResponse.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2.response;
import com.yahoo.config.provision.ApplicationId;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/GetApplicationResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/GetApplicationResponse.java
index dc124891540..15ab6c3cb9e 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/GetApplicationResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/GetApplicationResponse.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2.response;
import com.yahoo.component.Version;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ListApplicationsResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ListApplicationsResponse.java
index 6b1f7031d81..b153c055d0a 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ListApplicationsResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ListApplicationsResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2.response;
import com.yahoo.container.jdisc.HttpResponse;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ListTenantsResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ListTenantsResponse.java
index ec1b3c83604..d3c09ab5bc3 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ListTenantsResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ListTenantsResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2.response;
import com.yahoo.config.provision.TenantName;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ProtonMetricsResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ProtonMetricsResponse.java
index 25e770c7211..b033af891ab 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ProtonMetricsResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ProtonMetricsResponse.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2.response;
import com.yahoo.config.provision.ApplicationId;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/QuotaUsageResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/QuotaUsageResponse.java
index e30f0f45098..348e213760b 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/QuotaUsageResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/QuotaUsageResponse.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2.response;
import com.yahoo.jdisc.Response;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ReindexingResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ReindexingResponse.java
index e73d4a9cb56..1a8f3042f13 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ReindexingResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/ReindexingResponse.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2.response;
import com.yahoo.jdisc.Response;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionActiveResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionActiveResponse.java
index f14f9cc6575..55e640d4ec7 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionActiveResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionActiveResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2.response;
import com.yahoo.config.provision.TenantName;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionCreateResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionCreateResponse.java
index 047962ea16b..e83ff156d35 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionCreateResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionCreateResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2.response;
import com.yahoo.config.provision.TenantName;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionPrepareAndActivateResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionPrepareAndActivateResponse.java
index d219ff64b4e..e436675fb59 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionPrepareAndActivateResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionPrepareAndActivateResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2.response;
import com.yahoo.config.provision.ApplicationId;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionPrepareResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionPrepareResponse.java
index 5f50a5236fb..563f50d0012 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionPrepareResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/SessionPrepareResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2.response;
import com.yahoo.config.provision.TenantName;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/TenantCreateResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/TenantCreateResponse.java
index 395a52df9f2..9c91662fc07 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/TenantCreateResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/TenantCreateResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2.response;
import com.yahoo.config.provision.TenantName;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/TenantDeleteResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/TenantDeleteResponse.java
index fbfb4d581c6..5608d206b2e 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/TenantDeleteResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/TenantDeleteResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2.response;
import com.yahoo.config.provision.TenantName;
import com.yahoo.restapi.MessageResponse;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/TenantGetResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/TenantGetResponse.java
index 3a50a68cb21..a5990de278e 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/TenantGetResponse.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/v2/response/TenantGetResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2.response;
import com.yahoo.config.provision.TenantName;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ApplicationPackageMaintainer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ApplicationPackageMaintainer.java
index 7352f71c032..64765871676 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ApplicationPackageMaintainer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ApplicationPackageMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.maintenance;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintainer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintainer.java
index 2d88ee77deb..9d1901f83ed 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintainer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.maintenance;
import com.yahoo.concurrent.maintenance.JobControl;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintenance.java b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintenance.java
index 837f025ec2b..be19e53115f 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintenance.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintenance.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.maintenance;
import com.google.inject.Inject;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/FileDistributionMaintainer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/FileDistributionMaintainer.java
index f0c1afdc6ac..df94d1ad6a4 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/FileDistributionMaintainer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/FileDistributionMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.maintenance;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ReindexingMaintainer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ReindexingMaintainer.java
index af9ea917aaf..a6802a65e3c 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ReindexingMaintainer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ReindexingMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.maintenance;
import com.yahoo.config.provision.ApplicationId;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/SessionsMaintainer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/SessionsMaintainer.java
index 1f85dd4579d..7b9cc3d1041 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/SessionsMaintainer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/SessionsMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.maintenance;
import com.yahoo.vespa.config.server.ApplicationRepository;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainer.java
index 0a7df2c9d21..049441c3a36 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.maintenance;
import com.yahoo.config.provision.TenantName;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ClusterProtonMetricsRetriever.java b/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ClusterProtonMetricsRetriever.java
index b92f8fda88f..bce6b877f80 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ClusterProtonMetricsRetriever.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ClusterProtonMetricsRetriever.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.metrics;
import ai.vespa.util.http.hc4.VespaHttpClientBuilder;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ProtonMetricsAggregator.java b/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ProtonMetricsAggregator.java
index 025195066b7..f80f5e34b62 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ProtonMetricsAggregator.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ProtonMetricsAggregator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.metrics;
import com.yahoo.slime.Inspector;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ProtonMetricsRetriever.java b/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ProtonMetricsRetriever.java
index 4c111687c41..9cf9258d6ce 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ProtonMetricsRetriever.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/metrics/ProtonMetricsRetriever.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.metrics;
import com.yahoo.config.model.api.HostInfo;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/model/LbServicesProducer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/model/LbServicesProducer.java
index b2e239c7ebc..abd04f62ac2 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/model/LbServicesProducer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/model/LbServicesProducer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.model;
import com.google.common.base.Joiner;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/model/SuperModelConfigProvider.java b/configserver/src/main/java/com/yahoo/vespa/config/server/model/SuperModelConfigProvider.java
index 7c8a34be4d8..f4f66759a5b 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/model/SuperModelConfigProvider.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/model/SuperModelConfigProvider.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.model;
import com.yahoo.cloud.config.LbServicesConfig;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java
index 2b7ce234777..687c897c88b 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java
@@ -1,11 +1,10 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.modelfactory;
import com.google.common.collect.ImmutableSet;
import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.component.Version;
import com.yahoo.config.application.api.ApplicationPackage;
-import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.api.ConfigDefinitionRepo;
import com.yahoo.config.model.api.Model;
import com.yahoo.config.model.api.ModelContext;
@@ -29,20 +28,17 @@ import com.yahoo.vespa.config.server.monitoring.Metrics;
import com.yahoo.vespa.config.server.provision.HostProvisionerProvider;
import com.yahoo.vespa.config.server.session.SessionZooKeeperClient;
import com.yahoo.vespa.config.server.session.SilentDeployLogger;
-import com.yahoo.vespa.config.server.tenant.ApplicationRolesStore;
import com.yahoo.vespa.config.server.tenant.ContainerEndpointsCache;
import com.yahoo.vespa.config.server.tenant.EndpointCertificateMetadataStore;
import com.yahoo.vespa.config.server.tenant.EndpointCertificateRetriever;
-import com.yahoo.vespa.config.server.tenant.TenantListener;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.flags.FlagSource;
-import java.security.cert.X509Certificate;
import java.util.Comparator;
-import java.util.List;
import java.util.Map;
import java.util.Optional;
+import java.util.concurrent.ExecutorService;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -65,11 +61,13 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> {
private final Curator curator;
private final FlagSource flagSource;
private final SecretStore secretStore;
+ private final ExecutorService executor;
public ActivatedModelsBuilder(TenantName tenant,
long applicationGeneration,
SessionZooKeeperClient zkClient,
Optional<ApplicationSet> currentActiveApplicationSet,
+ ExecutorService executor,
Curator curator,
Metrics metrics,
PermanentApplicationPackage permanentApplicationPackage,
@@ -80,11 +78,7 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> {
Zone zone,
ModelFactoryRegistry modelFactoryRegistry,
ConfigDefinitionRepo configDefinitionRepo) {
- super(modelFactoryRegistry,
- configserverConfig,
- zone,
- hostProvisionerProvider,
- new SilentDeployLogger());
+ super(modelFactoryRegistry, configserverConfig, zone, hostProvisionerProvider, new SilentDeployLogger());
this.tenant = tenant;
this.applicationGeneration = applicationGeneration;
this.zkClient = zkClient;
@@ -95,6 +89,7 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> {
this.curator = curator;
this.flagSource = flagSource;
this.secretStore = secretStore;
+ this.executor = executor;
}
@Override
@@ -116,6 +111,7 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> {
new SilentDeployLogger(),
configDefinitionRepo,
getForVersionOrLatest(applicationPackage.getFileRegistries(), modelFactory.version()).orElse(new MockFileRegistry()),
+ executor,
new ApplicationCuratorDatabase(tenant, curator).readReindexingStatus(applicationId),
createStaticProvisioner(applicationPackage, modelContextProperties.applicationId(), provisioned),
provisioned,
@@ -162,8 +158,6 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> {
.readEndpointCertificateMetadata(applicationId)
.flatMap(new EndpointCertificateRetriever(secretStore)::readEndpointCertificateSecrets),
zkClient.readAthenzDomain(),
- new ApplicationRolesStore(curator, TenantRepository.getTenantPath(tenant))
- .readApplicationRoles(applicationId),
zkClient.readQuota(),
zkClient.readTenantSecretStores(),
secretStore,
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelFactoryRegistry.java b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelFactoryRegistry.java
index d4574b3343b..29e09cc97b8 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelFactoryRegistry.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelFactoryRegistry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.modelfactory;
import com.google.inject.Inject;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelResult.java b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelResult.java
index 8d585941eb6..c45893d4bfb 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelResult.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.modelfactory;
import com.yahoo.config.model.api.Model;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelsBuilder.java b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelsBuilder.java
index 4c25708dca2..0fbece2681b 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelsBuilder.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelsBuilder.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.modelfactory;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java
index 86eee9e1623..ca909ea87dd 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java
@@ -1,10 +1,11 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.modelfactory;
import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.component.Version;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeployLogger;
+import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.config.model.api.ConfigChangeAction;
import com.yahoo.config.model.api.ConfigDefinitionRepo;
import com.yahoo.config.model.api.HostInfo;
@@ -26,7 +27,6 @@ import com.yahoo.vespa.config.server.application.ApplicationCuratorDatabase;
import com.yahoo.vespa.config.server.application.ApplicationSet;
import com.yahoo.vespa.config.server.application.PermanentApplicationPackage;
import com.yahoo.vespa.config.server.deploy.ModelContextImpl;
-import com.yahoo.vespa.config.server.filedistribution.FileDistributionProvider;
import com.yahoo.vespa.config.server.host.HostValidator;
import com.yahoo.vespa.config.server.provision.HostProvisionerProvider;
import com.yahoo.vespa.config.server.session.PrepareParams;
@@ -38,6 +38,7 @@ import java.time.Duration;
import java.time.Instant;
import java.util.List;
import java.util.Optional;
+import java.util.concurrent.ExecutorService;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
@@ -53,15 +54,17 @@ public class PreparedModelsBuilder extends ModelsBuilder<PreparedModelsBuilder.P
private final ConfigDefinitionRepo configDefinitionRepo;
private final HostValidator<ApplicationId> hostValidator;
private final PrepareParams params;
- private final FileDistributionProvider fileDistributionProvider;
+ private final FileRegistry fileRegistry;
private final Optional<ApplicationSet> currentActiveApplicationSet;
private final ModelContext.Properties properties;
private final Curator curator;
+ private final ExecutorService executor;
public PreparedModelsBuilder(ModelFactoryRegistry modelFactoryRegistry,
PermanentApplicationPackage permanentApplicationPackage,
ConfigDefinitionRepo configDefinitionRepo,
- FileDistributionProvider fileDistributionProvider,
+ FileRegistry fileRegistry,
+ ExecutorService executor,
HostProvisionerProvider hostProvisionerProvider,
Curator curator,
HostValidator<ApplicationId> hostValidator,
@@ -73,12 +76,13 @@ public class PreparedModelsBuilder extends ModelsBuilder<PreparedModelsBuilder.P
super(modelFactoryRegistry, configserverConfig, properties.zone(), hostProvisionerProvider, deployLogger);
this.permanentApplicationPackage = permanentApplicationPackage;
this.configDefinitionRepo = configDefinitionRepo;
- this.fileDistributionProvider = fileDistributionProvider;
+ this.fileRegistry = fileRegistry;
this.hostValidator = hostValidator;
this.curator = curator;
this.params = params;
this.currentActiveApplicationSet = currentActiveApplicationSet;
this.properties = properties;
+ this.executor = executor;
}
@Override
@@ -99,7 +103,8 @@ public class PreparedModelsBuilder extends ModelsBuilder<PreparedModelsBuilder.P
permanentApplicationPackage.applicationPackage(),
deployLogger(),
configDefinitionRepo,
- fileDistributionProvider.getFileRegistry(),
+ fileRegistry,
+ executor,
new ApplicationCuratorDatabase(applicationId.tenant(), curator).readReindexingStatus(applicationId),
createHostProvisioner(applicationPackage, provisioned),
provisioned,
@@ -110,7 +115,7 @@ public class PreparedModelsBuilder extends ModelsBuilder<PreparedModelsBuilder.P
wantedNodeVespaVersion);
ModelCreateResult result = createAndValidateModel(modelFactory, applicationId, modelVersion, modelContext);
- return new PreparedModelResult(modelVersion, result.getModel(), fileDistributionProvider, result.getConfigChangeActions());
+ return new PreparedModelResult(modelVersion, result.getModel(), fileRegistry, result.getConfigChangeActions());
}
private ModelCreateResult createAndValidateModel(ModelFactory modelFactory, ApplicationId applicationId, Version modelVersion, ModelContext modelContext) {
@@ -185,16 +190,16 @@ public class PreparedModelsBuilder extends ModelsBuilder<PreparedModelsBuilder.P
public final Version version;
public final Model model;
- public final FileDistributionProvider fileDistributionProvider;
+ public final FileRegistry fileRegistry;
public final List<ConfigChangeAction> actions;
public PreparedModelResult(Version version,
Model model,
- FileDistributionProvider fileDistributionProvider,
+ FileRegistry fileRegistry,
List<ConfigChangeAction> actions) {
this.version = version;
this.model = model;
- this.fileDistributionProvider = fileDistributionProvider;
+ this.fileRegistry = fileRegistry;
this.actions = actions;
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/monitoring/MetricUpdater.java b/configserver/src/main/java/com/yahoo/vespa/config/server/monitoring/MetricUpdater.java
index 2e8c7f1c31f..d68e62b433b 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/monitoring/MetricUpdater.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/monitoring/MetricUpdater.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.monitoring;
import com.yahoo.jdisc.Metric;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/monitoring/MetricUpdaterFactory.java b/configserver/src/main/java/com/yahoo/vespa/config/server/monitoring/MetricUpdaterFactory.java
index 15f06e20f9e..a01def362da 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/monitoring/MetricUpdaterFactory.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/monitoring/MetricUpdaterFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.monitoring;
import java.util.Map;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/monitoring/Metrics.java b/configserver/src/main/java/com/yahoo/vespa/config/server/monitoring/Metrics.java
index dca58665f57..b8c5009028f 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/monitoring/Metrics.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/monitoring/Metrics.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.monitoring;
import com.google.inject.Inject;
@@ -10,11 +10,14 @@ import com.yahoo.config.provision.TenantName;
import com.yahoo.container.jdisc.config.HealthMonitorConfig;
import com.yahoo.docproc.jdisc.metric.NullMetric;
import com.yahoo.jdisc.Metric;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Optional;
import java.util.logging.Level;
import com.yahoo.statistics.Statistics;
import com.yahoo.statistics.Counter;
-import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ScheduledExecutorService;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/monitoring/ZKMetricUpdater.java b/configserver/src/main/java/com/yahoo/vespa/config/server/monitoring/ZKMetricUpdater.java
index 4bede618461..28b0855f923 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/monitoring/ZKMetricUpdater.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/monitoring/ZKMetricUpdater.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.monitoring;
import com.yahoo.cloud.config.ZookeeperServerConfig;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/provision/HostProvisionerProvider.java b/configserver/src/main/java/com/yahoo/vespa/config/server/provision/HostProvisionerProvider.java
index 729f1df31c1..9229fb88b40 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/provision/HostProvisionerProvider.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/provision/HostProvisionerProvider.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.provision;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/provision/ProvisionerAdapter.java b/configserver/src/main/java/com/yahoo/vespa/config/server/provision/ProvisionerAdapter.java
index d0c08d2747d..29cd44b57a4 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/provision/ProvisionerAdapter.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/provision/ProvisionerAdapter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.provision;
import com.yahoo.config.model.api.HostProvisioner;
@@ -10,7 +10,8 @@ import com.yahoo.config.provision.HostSpec;
import com.yahoo.config.provision.ProvisionLogger;
import com.yahoo.config.provision.Provisioner;
-import java.util.*;
+import java.util.List;
+
/**
* A wrapper for {@link Provisioner} to avoid having to expose multitenant
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/provision/StaticProvisioner.java b/configserver/src/main/java/com/yahoo/vespa/config/server/provision/StaticProvisioner.java
index fff129b04e4..4469c0f95de 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/provision/StaticProvisioner.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/provision/StaticProvisioner.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.provision;
import com.yahoo.config.model.api.HostProvisioner;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/ConfigResponseFactory.java b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/ConfigResponseFactory.java
index 7afeebdd3cf..0afab85df12 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/ConfigResponseFactory.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/ConfigResponseFactory.java
@@ -1,10 +1,16 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.rpc;
import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.text.AbstractUtf8Array;
import com.yahoo.vespa.config.ConfigPayload;
+import com.yahoo.vespa.config.PayloadChecksum;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.vespa.config.protocol.ConfigResponse;
+import com.yahoo.vespa.config.util.ConfigUtils;
+
+import static com.yahoo.vespa.config.PayloadChecksum.Type.MD5;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.XXHASH64;
/**
* Represents a component that creates config responses from a payload. Different implementations
@@ -28,12 +34,42 @@ public interface ConfigResponseFactory {
/**
* Creates a {@link ConfigResponse} for a given payload and generation.
*
- * @param rawPayload the {@link ConfigPayload} to put in the response
- * @param generation the payload generation
- * @param applyOnRestart true if this config change should only be applied on restart,
- * false if it should be applied immediately
+ * @param rawPayload the {@link ConfigPayload} to put in the response
+ * @param generation the payload generation
+ * @param applyOnRestart true if this config change should only be applied on restart,
+ * false if it should be applied immediately
+ * @param requestsPayloadChecksums payload checksums from requests
* @return a {@link ConfigResponse} that can be sent to the client
*/
- ConfigResponse createResponse(AbstractUtf8Array rawPayload, long generation, boolean applyOnRestart);
+ ConfigResponse createResponse(AbstractUtf8Array rawPayload,
+ long generation,
+ boolean applyOnRestart,
+ PayloadChecksums requestsPayloadChecksums);
+
+ /** Generates payload checksums based on what type of checksums exist in request */
+ default PayloadChecksums generatePayloadChecksums(AbstractUtf8Array rawPayload, PayloadChecksums requestsPayloadChecksums) {
+ PayloadChecksum requestChecksumMd5 = requestsPayloadChecksums.getForType(MD5);
+ PayloadChecksum requestChecksumXxhash64 = requestsPayloadChecksums.getForType(XXHASH64);
+ PayloadChecksum xxhash64 = new PayloadChecksum(ConfigUtils.getXxhash64(rawPayload), XXHASH64);
+
+ if (requestChecksumMd5 == null)
+ return PayloadChecksums.from(xxhash64);
+
+ // Return xxhash64 checksum, even if none in request
+ if (requestChecksumXxhash64 == null)
+ return PayloadChecksums.from(new PayloadChecksum(ConfigUtils.getMd5(rawPayload), MD5), xxhash64);
+
+ // Response always contains xxhash64 checksum, md5 checksum is included
+ // when both are present, both are absent or only md5 is present in request
+ PayloadChecksum md5 = null;
+ if (( ! requestChecksumMd5.isEmpty() && ! requestChecksumXxhash64.isEmpty())
+ || (requestChecksumMd5.isEmpty() && requestChecksumXxhash64.isEmpty())) {
+ md5 = new PayloadChecksum(ConfigUtils.getMd5(rawPayload), MD5);
+ } else if (! requestChecksumMd5.isEmpty() && requestChecksumXxhash64.isEmpty()) {
+ md5 = new PayloadChecksum(ConfigUtils.getMd5(rawPayload), MD5);
+ }
+
+ return PayloadChecksums.from(md5, xxhash64);
+ }
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/DelayedConfigResponses.java b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/DelayedConfigResponses.java
index 960efc876ee..d3976464bde 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/DelayedConfigResponses.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/DelayedConfigResponses.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.rpc;
import com.yahoo.concurrent.ThreadFactoryFactory;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/GetConfigProcessor.java b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/GetConfigProcessor.java
index 820f5c15318..88a30a9d72b 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/GetConfigProcessor.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/GetConfigProcessor.java
@@ -1,11 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.rpc;
import com.yahoo.cloud.config.SentinelConfig;
import com.yahoo.collections.Pair;
import com.yahoo.component.Version;
-import com.yahoo.config.ConfigInstance;
import com.yahoo.config.provision.TenantName;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.jrt.Request;
import com.yahoo.net.HostName;
import com.yahoo.vespa.config.ConfigPayload;
@@ -13,21 +13,22 @@ import com.yahoo.vespa.config.ErrorCode;
import com.yahoo.vespa.config.UnknownConfigIdException;
import com.yahoo.vespa.config.protocol.ConfigResponse;
import com.yahoo.vespa.config.protocol.JRTServerConfigRequest;
-import com.yahoo.vespa.config.protocol.SlimeConfigResponse;
+import com.yahoo.vespa.config.protocol.Payload;
import com.yahoo.vespa.config.protocol.Trace;
import com.yahoo.vespa.config.protocol.VespaVersion;
import com.yahoo.vespa.config.server.GetConfigContext;
import com.yahoo.vespa.config.server.UnknownConfigDefinitionException;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
-import com.yahoo.vespa.config.util.ConfigUtils;
import java.util.Optional;
import java.util.logging.Level;
import java.util.logging.Logger;
+import static com.yahoo.vespa.config.protocol.SlimeConfigResponse.fromConfigPayload;
+
/**
-* @author hmusum
-*/
+ * @author hmusum
+ */
class GetConfigProcessor implements Runnable {
private static final Logger log = Logger.getLogger(GetConfigProcessor.class.getName());
@@ -68,7 +69,7 @@ class GetConfigProcessor implements Runnable {
// TODO: Increment statistics (Metrics) failed counters when requests fail
public Pair<GetConfigContext, Long> getConfig(JRTServerConfigRequest request) {
- //Request has already been detached
+ // Request has already been detached
if ( ! request.validateParameters()) {
// Error code is set in verifyParameters if parameters are not OK.
log.log(Level.WARNING, "Parameters for request " + request + " did not validate: " + request.errorCode() + " : " + request.errorMessage());
@@ -126,7 +127,7 @@ class GetConfigProcessor implements Runnable {
// config == null is not an error, but indicates that the config will be returned later.
if ((config != null) && (!config.hasEqualConfig(request) || config.hasNewerGeneration(request) || forceResponse)) {
// debugLog(trace, "config response before encoding:" + config.toString());
- request.addOkResponse(request.payloadFromResponse(config), config.getGeneration(), config.applyOnRestart(), config.getConfigMd5());
+ request.addOkResponse(request.payloadFromResponse(config), config.getGeneration(), config.applyOnRestart(), config.getPayloadChecksums());
if (logDebug(trace)) {
debugLog(trace, "return response: " + request.getShortDescription());
}
@@ -139,6 +140,7 @@ class GetConfigProcessor implements Runnable {
}
return null;
}
+
@Override
public void run() {
rpcServer.hostLivenessTracker().receivedRequestFrom(request.getClientHostName());
@@ -166,9 +168,11 @@ class GetConfigProcessor implements Runnable {
private void returnEmpty(JRTServerConfigRequest request) {
log.log(Level.FINE, () -> "Returning empty sentinel config for request from " + request.getClientHostName());
var emptyPayload = ConfigPayload.fromInstance(new SentinelConfig.Builder().build());
- String configMd5 = ConfigUtils.getMd5(emptyPayload);
- ConfigResponse config = SlimeConfigResponse.fromConfigPayload(emptyPayload, 0, false, configMd5);
- request.addOkResponse(request.payloadFromResponse(config), config.getGeneration(), false, config.getConfigMd5());
+ ConfigResponse config = fromConfigPayload(emptyPayload,
+ 0,
+ false,
+ PayloadChecksums.fromPayload(Payload.from(emptyPayload)));
+ request.addOkResponse(request.payloadFromResponse(config), config.getGeneration(), false, config.getPayloadChecksums());
respond(request);
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/LZ4ConfigResponseFactory.java b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/LZ4ConfigResponseFactory.java
index f309b30cf8d..6a1ecfac7bb 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/LZ4ConfigResponseFactory.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/LZ4ConfigResponseFactory.java
@@ -1,14 +1,14 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.rpc;
import com.yahoo.text.AbstractUtf8Array;
import com.yahoo.text.Utf8Array;
import com.yahoo.vespa.config.LZ4PayloadCompressor;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.vespa.config.protocol.CompressionInfo;
import com.yahoo.vespa.config.protocol.CompressionType;
import com.yahoo.vespa.config.protocol.ConfigResponse;
import com.yahoo.vespa.config.protocol.SlimeConfigResponse;
-import com.yahoo.vespa.config.util.ConfigUtils;
/**
* Compressor that compresses config payloads to lz4.
@@ -22,11 +22,12 @@ public class LZ4ConfigResponseFactory implements ConfigResponseFactory {
@Override
public ConfigResponse createResponse(AbstractUtf8Array rawPayload,
long generation,
- boolean applyOnRestart) {
- String configMd5 = ConfigUtils.getMd5(rawPayload);
+ boolean applyOnRestart,
+ PayloadChecksums requestsPayloadChecksums) {
CompressionInfo info = CompressionInfo.create(CompressionType.LZ4, rawPayload.getByteLength());
Utf8Array compressed = new Utf8Array(compressor.compress(rawPayload.wrap()));
- return new SlimeConfigResponse(compressed, generation, applyOnRestart, configMd5, info);
+ PayloadChecksums payloadChecksums = generatePayloadChecksums(rawPayload, requestsPayloadChecksums);
+ return new SlimeConfigResponse(compressed, generation, applyOnRestart, payloadChecksums, info);
}
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcRequestHandlerProvider.java b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcRequestHandlerProvider.java
index 37c91cf255d..e4e19743950 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcRequestHandlerProvider.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcRequestHandlerProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.rpc;
import com.google.inject.Inject;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java
index 5b9b3077008..00255a0a264 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.rpc;
import com.google.inject.Inject;
@@ -105,6 +105,7 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener {
private final FileDownloader downloader;
private volatile boolean allTenantsLoaded = false;
private boolean isRunning = false;
+ boolean isServingConfigRequests = false;
static class ApplicationState {
private final AtomicLong activeGeneration = new AtomicLong(0);
@@ -143,7 +144,7 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener {
this.rpcAuthorizer = rpcAuthorizer;
downloader = fileServer.downloader();
handlerProvider.setInstance(this);
- setUpHandlers();
+ setUpFileDistributionHandlers();
}
private static int threadsToUse() {
@@ -211,11 +212,9 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener {
}
/**
- * Set up RPC method handlers.
+ * Set up RPC method handlers, except handlers for getting config (see #setUpGetConfigHandlers())
*/
- private void setUpHandlers() {
- // The getConfig method in this class will handle RPC calls for getting config
- getSupervisor().addMethod(JRTMethods.createConfigV3GetConfigMethod(this::getConfigV3));
+ private void setUpFileDistributionHandlers() {
getSupervisor().addMethod(new Method("ping", "", "i", this::ping)
.methodDesc("ping")
.returnDesc(0, "ret code", "return code, 0 is OK"));
@@ -229,6 +228,20 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener {
.returnDesc(0, "ret", "0 if success, 1 otherwise"));
}
+ /**
+ * Set up RPC method handlers for getting config
+ */
+ public void setUpGetConfigHandlers() {
+ // The getConfig method in this class will handle RPC calls for getting config
+ getSupervisor().addMethod(JRTMethods.createConfigV3GetConfigMethod(this::getConfigV3));
+ isServingConfigRequests = true;
+ }
+
+
+ public boolean isServingConfigRequests() {
+ return isServingConfigRequests;
+ }
+
private ApplicationState getState(ApplicationId id) {
ApplicationState state = applicationStateMap.get(id);
if (state == null) {
@@ -328,7 +341,7 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener {
}
/**
- * Returns the tenant for this request, empty if there is no tenant for this request
+ * Returns the tenant for this request, empty if there is none
* (which on hosted Vespa means that the requesting host is not currently active for any tenant)
*/
Optional<TenantName> resolveTenant(JRTServerConfigRequest request, Trace trace) {
@@ -337,9 +350,9 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener {
ApplicationId applicationId = hostRegistry.getKeyForHost(hostname);
if (applicationId == null) {
if (GetConfigProcessor.logDebug(trace)) {
- String message = "Did not find tenant for host '" + hostname + "', using " + TenantName.defaultName();
- log.log(Level.FINE, message);
- log.log(Level.FINE, () -> "hosts in host registry: " + hostRegistry.getAllHosts());
+ String message = "Did not find tenant for host '" + hostname + "', using " + TenantName.defaultName() +
+ ". Hosts in host registry: " + hostRegistry.getAllHosts();
+ log.log(Level.FINE, () -> message);
trace.trace(6, message);
}
return Optional.empty();
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/UncompressedConfigResponseFactory.java b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/UncompressedConfigResponseFactory.java
index 889548196aa..ce973e538b7 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/UncompressedConfigResponseFactory.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/UncompressedConfigResponseFactory.java
@@ -1,12 +1,12 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.rpc;
import com.yahoo.text.AbstractUtf8Array;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.vespa.config.protocol.CompressionInfo;
import com.yahoo.vespa.config.protocol.CompressionType;
import com.yahoo.vespa.config.protocol.ConfigResponse;
import com.yahoo.vespa.config.protocol.SlimeConfigResponse;
-import com.yahoo.vespa.config.util.ConfigUtils;
/**
* Simply returns an uncompressed payload.
@@ -18,10 +18,11 @@ public class UncompressedConfigResponseFactory implements ConfigResponseFactory
@Override
public ConfigResponse createResponse(AbstractUtf8Array rawPayload,
long generation,
- boolean applyOnRestart) {
- String configMd5 = ConfigUtils.getMd5(rawPayload);
+ boolean applyOnRestart,
+ PayloadChecksums requestsPayloadChecksums) {
CompressionInfo info = CompressionInfo.create(CompressionType.UNCOMPRESSED, rawPayload.getByteLength());
- return new SlimeConfigResponse(rawPayload, generation, applyOnRestart, configMd5, info);
+ PayloadChecksums payloadChecksums = generatePayloadChecksums(rawPayload, requestsPayloadChecksums);
+ return new SlimeConfigResponse(rawPayload, generation, applyOnRestart, payloadChecksums, info);
}
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/security/DefaultRpcAuthorizerProvider.java b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/security/DefaultRpcAuthorizerProvider.java
index b00b6db4226..1a1b5919c56 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/security/DefaultRpcAuthorizerProvider.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/security/DefaultRpcAuthorizerProvider.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.rpc.security;
import com.google.inject.Inject;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/security/MultiTenantRpcAuthorizer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/security/MultiTenantRpcAuthorizer.java
index 4dfa8384822..f5b570fed40 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/security/MultiTenantRpcAuthorizer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/security/MultiTenantRpcAuthorizer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.rpc.security;
import com.yahoo.cloud.config.SentinelConfig;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/LocalSession.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/LocalSession.java
index f842578b657..6eb2743834a 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/LocalSession.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/LocalSession.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.session;
import com.yahoo.config.application.api.ApplicationPackage;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/PrepareParams.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/PrepareParams.java
index 071a0dd8f0c..e75a01fb8dd 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/PrepareParams.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/PrepareParams.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.session;
import com.google.common.collect.ImmutableList;
@@ -53,8 +53,6 @@ public final class PrepareParams {
static final String ENDPOINT_CERTIFICATE_METADATA_PARAM_NAME = "endpointCertificateMetadata";
static final String DOCKER_IMAGE_REPOSITORY = "dockerImageRepository";
static final String ATHENZ_DOMAIN = "athenzDomain";
- static final String APPLICATION_HOST_ROLE = "applicationHostRole";
- static final String APPLICATION_CONTAINER_ROLE = "applicationContainerRole";
static final String QUOTA_PARAM_NAME = "quota";
static final String TENANT_SECRET_STORES_PARAM_NAME = "tenantSecretStores";
static final String FORCE_PARAM_NAME = "force";
@@ -74,7 +72,6 @@ public final class PrepareParams {
private final Optional<EndpointCertificateMetadata> endpointCertificateMetadata;
private final Optional<DockerImage> dockerImageRepository;
private final Optional<AthenzDomain> athenzDomain;
- private final Optional<ApplicationRoles> applicationRoles;
private final Optional<Quota> quota;
private final List<TenantSecretStore> tenantSecretStores;
private final List<X509Certificate> operatorCertificates;
@@ -84,7 +81,7 @@ public final class PrepareParams {
List<ContainerEndpoint> containerEndpoints,
Optional<EndpointCertificateMetadata> endpointCertificateMetadata,
Optional<DockerImage> dockerImageRepository, Optional<AthenzDomain> athenzDomain,
- Optional<ApplicationRoles> applicationRoles, Optional<Quota> quota, List<TenantSecretStore> tenantSecretStores,
+ Optional<Quota> quota, List<TenantSecretStore> tenantSecretStores,
boolean force, boolean waitForResourcesInPrepare, List<X509Certificate> operatorCertificates) {
this.timeoutBudget = timeoutBudget;
this.applicationId = Objects.requireNonNull(applicationId);
@@ -97,7 +94,6 @@ public final class PrepareParams {
this.endpointCertificateMetadata = endpointCertificateMetadata;
this.dockerImageRepository = dockerImageRepository;
this.athenzDomain = athenzDomain;
- this.applicationRoles = applicationRoles;
this.quota = quota;
this.tenantSecretStores = tenantSecretStores;
this.force = force;
@@ -265,7 +261,7 @@ public final class PrepareParams {
return new PrepareParams(applicationId, timeoutBudget, ignoreValidationErrors, dryRun,
verbose, isBootstrap, vespaVersion, containerEndpoints,
endpointCertificateMetadata, dockerImageRepository, athenzDomain,
- applicationRoles, quota, tenantSecretStores, force, waitForResourcesInPrepare,
+ quota, tenantSecretStores, force, waitForResourcesInPrepare,
operatorCertificates);
}
}
@@ -281,7 +277,6 @@ public final class PrepareParams {
.endpointCertificateMetadata(request.getProperty(ENDPOINT_CERTIFICATE_METADATA_PARAM_NAME))
.dockerImageRepository(request.getProperty(DOCKER_IMAGE_REPOSITORY))
.athenzDomain(request.getProperty(ATHENZ_DOMAIN))
- .applicationRoles(ApplicationRoles.fromString(request.getProperty(APPLICATION_HOST_ROLE), request.getProperty(APPLICATION_CONTAINER_ROLE)))
.quota(request.getProperty(QUOTA_PARAM_NAME))
.tenantSecretStores(request.getProperty(TENANT_SECRET_STORES_PARAM_NAME))
.force(request.getBooleanProperty(FORCE_PARAM_NAME))
@@ -304,7 +299,6 @@ public final class PrepareParams {
.endpointCertificateMetadata(deserialize(params.field(ENDPOINT_CERTIFICATE_METADATA_PARAM_NAME), EndpointCertificateMetadataSerializer::fromSlime))
.dockerImageRepository(SlimeUtils.optionalString(params.field(DOCKER_IMAGE_REPOSITORY)).orElse(null))
.athenzDomain(SlimeUtils.optionalString(params.field(ATHENZ_DOMAIN)).orElse(null))
- .applicationRoles(ApplicationRoles.fromString(SlimeUtils.optionalString(params.field(APPLICATION_HOST_ROLE)).orElse(null), SlimeUtils.optionalString(params.field(APPLICATION_CONTAINER_ROLE)).orElse(null)))
.quota(deserialize(params.field(QUOTA_PARAM_NAME), Quota::fromSlime))
.tenantSecretStores(deserialize(params.field(TENANT_SECRET_STORES_PARAM_NAME), TenantSecretStoreSerializer::listFromSlime, List.of()))
.force(booleanValue(params, FORCE_PARAM_NAME))
@@ -414,10 +408,6 @@ public final class PrepareParams {
public Optional<AthenzDomain> athenzDomain() { return athenzDomain; }
- public Optional<ApplicationRoles> applicationRoles() {
- return applicationRoles;
- }
-
public Optional<Quota> quota() {
return quota;
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/RemoteSession.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/RemoteSession.java
index 95f00c5f0e9..12c61272f20 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/RemoteSession.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/RemoteSession.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.session;
import com.yahoo.config.provision.TenantName;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java
index 542b54d877e..d753bee771c 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.session;
import com.yahoo.component.Version;
@@ -77,7 +77,7 @@ public abstract class Session implements Comparable<Session> {
* The status of this session.
*/
public enum Status {
- NEW, PREPARE, ACTIVATE, DEACTIVATE, NONE, DELETE;
+ NEW, PREPARE, ACTIVATE, DEACTIVATE, UNKNOWN, DELETE;
public static Status parse(String data) {
for (Status status : Status.values()) {
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java
index dedd9e08655..5a0a9b1d796 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.session;
import com.google.common.util.concurrent.UncheckedTimeoutException;
@@ -9,7 +9,6 @@ import com.yahoo.config.FileReference;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.application.api.FileRegistry;
-import com.yahoo.config.model.api.ApplicationRoles;
import com.yahoo.config.model.api.ConfigDefinitionRepo;
import com.yahoo.config.model.api.ContainerEndpoint;
import com.yahoo.config.model.api.EndpointCertificateMetadata;
@@ -25,6 +24,7 @@ import com.yahoo.config.provision.DockerImage;
import com.yahoo.config.provision.Zone;
import com.yahoo.container.jdisc.secretstore.SecretStore;
import com.yahoo.lang.SettableOptional;
+import com.yahoo.net.HostName;
import com.yahoo.path.Path;
import com.yahoo.vespa.config.server.TimeoutBudget;
import com.yahoo.vespa.config.server.application.ApplicationSet;
@@ -33,13 +33,11 @@ import com.yahoo.vespa.config.server.configchange.ConfigChangeActions;
import com.yahoo.vespa.config.server.deploy.ModelContextImpl;
import com.yahoo.vespa.config.server.deploy.ZooKeeperDeployer;
import com.yahoo.vespa.config.server.filedistribution.FileDistributionFactory;
-import com.yahoo.vespa.config.server.filedistribution.FileDistributionProvider;
import com.yahoo.vespa.config.server.host.HostValidator;
import com.yahoo.vespa.config.server.http.InvalidApplicationException;
import com.yahoo.vespa.config.server.modelfactory.ModelFactoryRegistry;
import com.yahoo.vespa.config.server.modelfactory.PreparedModelsBuilder;
import com.yahoo.vespa.config.server.provision.HostProvisionerProvider;
-import com.yahoo.vespa.config.server.tenant.ApplicationRolesStore;
import com.yahoo.vespa.config.server.tenant.ContainerEndpointsCache;
import com.yahoo.vespa.config.server.tenant.EndpointCertificateMetadataStore;
import com.yahoo.vespa.config.server.tenant.EndpointCertificateRetriever;
@@ -56,6 +54,7 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
+import java.util.concurrent.ExecutorService;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
@@ -79,9 +78,11 @@ public class SessionPreparer {
private final Zone zone;
private final SecretStore secretStore;
private final FlagSource flagSource;
+ private final ExecutorService executor;
public SessionPreparer(ModelFactoryRegistry modelFactoryRegistry,
FileDistributionFactory fileDistributionFactory,
+ ExecutorService executor,
HostProvisionerProvider hostProvisionerProvider,
PermanentApplicationPackage permanentApplicationPackage,
ConfigserverConfig configserverConfig,
@@ -100,8 +101,11 @@ public class SessionPreparer {
this.zone = zone;
this.secretStore = secretStore;
this.flagSource = flagSource;
+ this.executor = executor;
}
+ ExecutorService getExecutor() { return executor; }
+
/**
* Prepares a session (validates, builds model, writes to zookeeper and distributes files)
*
@@ -126,8 +130,6 @@ public class SessionPreparer {
preparation.writeStateZK();
preparation.writeEndpointCertificateMetadataZK();
preparation.writeContainerEndpointsZK();
- preparation.writeApplicationRoles();
- preparation.distribute();
}
log.log(Level.FINE, () -> "time used " + params.getTimeoutBudget().timesUsed() + " : " + applicationId);
return preparation.result();
@@ -156,8 +158,6 @@ public class SessionPreparer {
private final EndpointCertificateMetadataStore endpointCertificateMetadataStore;
private final Optional<EndpointCertificateMetadata> endpointCertificateMetadata;
private final Optional<AthenzDomain> athenzDomain;
- private final ApplicationRolesStore applicationRolesStore;
- private final Optional<ApplicationRoles> applicationRoles;
private final ApplicationPackage applicationPackage;
private final SessionZooKeeperClient sessionZooKeeperClient;
@@ -166,7 +166,7 @@ public class SessionPreparer {
private PrepareResult prepareResult;
private final PreparedModelsBuilder preparedModelsBuilder;
- private final FileDistributionProvider fileDistributionProvider;
+ private final FileRegistry fileRegistry;
Preparation(HostValidator<ApplicationId> hostValidator, DeployLogger logger, PrepareParams params,
Optional<ApplicationSet> currentActiveApplicationSet, Path tenantPath,
@@ -188,9 +188,6 @@ public class SessionPreparer {
.flatMap(endpointCertificateRetriever::readEndpointCertificateSecrets);
this.containerEndpoints = readEndpointsIfNull(params.containerEndpoints());
this.athenzDomain = params.athenzDomain();
- this.applicationRolesStore = new ApplicationRolesStore(curator, tenantPath);
- this.applicationRoles = params.applicationRoles()
- .or(() -> applicationRolesStore.readApplicationRoles(applicationId));
this.properties = new ModelContextImpl.Properties(params.getApplicationId(),
configserverConfig,
zone,
@@ -200,16 +197,16 @@ public class SessionPreparer {
flagSource,
endpointCertificateSecrets,
athenzDomain,
- applicationRoles,
params.quota(),
params.tenantSecretStores(),
secretStore,
params.operatorCertificates());
- this.fileDistributionProvider = fileDistributionFactory.createProvider(serverDbSessionDir);
+ this.fileRegistry = fileDistributionFactory.createFileRegistry(serverDbSessionDir);
this.preparedModelsBuilder = new PreparedModelsBuilder(modelFactoryRegistry,
permanentApplicationPackage,
configDefinitionRepo,
- fileDistributionProvider,
+ fileRegistry,
+ executor,
hostProvisionerProvider,
curator,
hostValidator,
@@ -230,12 +227,11 @@ public class SessionPreparer {
}
Optional<FileReference> distributedApplicationPackage() {
- FileRegistry fileRegistry = fileDistributionProvider.getFileRegistry();
FileReference fileReference = fileRegistry.addApplicationPackage();
- FileDistribution fileDistribution = fileDistributionProvider.getFileDistribution();
+ FileDistribution fileDistribution = fileDistributionFactory.createFileDistribution();
log.log(Level.FINE, () -> "Distribute application package for " + applicationId + " (" + fileReference + ") to other config servers");
properties.configServerSpecs().stream()
- .filter(spec -> ! spec.getHostName().equals(fileRegistry.fileSourceHost()))
+ .filter(spec -> ! spec.getHostName().equals(HostName.getLocalhost()))
.forEach(spec -> fileDistribution.startDownload(spec.getHostName(), spec.getConfigServerPort(), Set.of(fileReference)));
checkTimeout("distributeApplicationPackage");
@@ -293,17 +289,6 @@ public class SessionPreparer {
checkTimeout("write container endpoints to zookeeper");
}
- void writeApplicationRoles() {
- applicationRoles.ifPresent(roles -> applicationRolesStore.writeApplicationRoles(applicationId, roles));
- checkTimeout("write application roles to zookeeper");
- }
-
- void distribute() {
- prepareResult.asList().forEach(modelResult -> modelResult.model
- .distributeFiles(modelResult.fileDistributionProvider.getFileDistribution()));
- checkTimeout("distribute files");
- }
-
PrepareResult result() {
return prepareResult;
}
@@ -368,7 +353,7 @@ public class SessionPreparer {
public Map<Version, FileRegistry> getFileRegistries() {
return results.stream()
.collect(Collectors.toMap((prepareResult -> prepareResult.version),
- (prepareResult -> prepareResult.fileDistributionProvider.getFileRegistry())));
+ (prepareResult -> prepareResult.fileRegistry)));
}
/**
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
index e677d248630..083cb535bfa 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.session;
import com.google.common.collect.HashMultiset;
@@ -31,19 +31,19 @@ import com.yahoo.vespa.config.server.application.TenantApplications;
import com.yahoo.vespa.config.server.configchange.ConfigChangeActions;
import com.yahoo.vespa.config.server.deploy.TenantFileSystemDirs;
import com.yahoo.vespa.config.server.filedistribution.FileDirectory;
+import com.yahoo.vespa.config.server.filedistribution.FileDistributionFactory;
+import com.yahoo.vespa.config.server.http.UnknownVespaVersionException;
import com.yahoo.vespa.config.server.modelfactory.ActivatedModelsBuilder;
import com.yahoo.vespa.config.server.modelfactory.ModelFactoryRegistry;
import com.yahoo.vespa.config.server.monitoring.MetricUpdater;
import com.yahoo.vespa.config.server.monitoring.Metrics;
import com.yahoo.vespa.config.server.provision.HostProvisionerProvider;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
-import com.yahoo.vespa.config.server.zookeeper.ConfigCurator;
import com.yahoo.vespa.config.server.zookeeper.SessionCounter;
+import com.yahoo.vespa.config.server.zookeeper.ZKApplication;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.defaults.Defaults;
-import com.yahoo.vespa.flags.BooleanFlag;
import com.yahoo.vespa.flags.FlagSource;
-import com.yahoo.vespa.flags.Flags;
import com.yahoo.yolean.Exceptions;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.recipes.cache.ChildData;
@@ -104,6 +104,7 @@ public class SessionRepository {
private final Clock clock;
private final Curator curator;
private final Executor zkWatcherExecutor;
+ private final FileDistributionFactory fileDistributionFactory;
private final PermanentApplicationPackage permanentApplicationPackage;
private final FlagSource flagSource;
private final TenantFileSystemDirs tenantFileSystemDirs;
@@ -114,7 +115,6 @@ public class SessionRepository {
private final SessionPreparer sessionPreparer;
private final Path sessionsPath;
private final TenantName tenantName;
- private final ConfigCurator configCurator;
private final SessionCounter sessionCounter;
private final SecretStore secretStore;
private final HostProvisionerProvider hostProvisionerProvider;
@@ -123,13 +123,15 @@ public class SessionRepository {
private final Zone zone;
private final ModelFactoryRegistry modelFactoryRegistry;
private final ConfigDefinitionRepo configDefinitionRepo;
+ private final int maxNodeSize;
public SessionRepository(TenantName tenantName,
TenantApplications applicationRepo,
SessionPreparer sessionPreparer,
- ConfigCurator configCurator,
+ Curator curator,
Metrics metrics,
StripedExecutor<TenantName> zkWatcherExecutor,
+ FileDistributionFactory fileDistributionFactory,
PermanentApplicationPackage permanentApplicationPackage,
FlagSource flagSource,
ExecutorService zkCacheExecutor,
@@ -140,15 +142,16 @@ public class SessionRepository {
Zone zone,
Clock clock,
ModelFactoryRegistry modelFactoryRegistry,
- ConfigDefinitionRepo configDefinitionRepo) {
+ ConfigDefinitionRepo configDefinitionRepo,
+ int maxNodeSize) {
this.tenantName = tenantName;
- this.configCurator = configCurator;
- sessionCounter = new SessionCounter(configCurator, tenantName);
+ sessionCounter = new SessionCounter(curator, tenantName);
this.sessionsPath = TenantRepository.getSessionsPath(tenantName);
this.clock = clock;
- this.curator = configCurator.curator();
+ this.curator = curator;
this.sessionLifetime = Duration.ofSeconds(configserverConfig.sessionLifetime());
this.zkWatcherExecutor = command -> zkWatcherExecutor.execute(tenantName, command);
+ this.fileDistributionFactory = fileDistributionFactory;
this.permanentApplicationPackage = permanentApplicationPackage;
this.flagSource = flagSource;
this.tenantFileSystemDirs = new TenantFileSystemDirs(configServerDB, tenantName);
@@ -163,22 +166,22 @@ public class SessionRepository {
this.zone = zone;
this.modelFactoryRegistry = modelFactoryRegistry;
this.configDefinitionRepo = configDefinitionRepo;
+ this.maxNodeSize = maxNodeSize;
- loadSessions(Flags.LOAD_LOCAL_SESSIONS_WHEN_BOOTSTRAPPING.bindTo(flagSource)); // Needs to be done before creating cache below
+ loadSessions(); // Needs to be done before creating cache below
this.directoryCache = curator.createDirectoryCache(sessionsPath.getAbsolute(), false, false, zkCacheExecutor);
this.directoryCache.addListener(this::childEvent);
this.directoryCache.start();
}
- private void loadSessions(BooleanFlag loadLocalSessions) {
+ private void loadSessions() {
ExecutorService executor = Executors.newFixedThreadPool(Math.max(8, Runtime.getRuntime().availableProcessors()),
new DaemonThreadFactory("load-sessions-"));
- loadSessions(loadLocalSessions.value(), executor);
+ loadSessions(executor);
}
- void loadSessions(boolean loadLocalSessions, ExecutorService executor) {
- if (loadLocalSessions)
- loadLocalSessions(executor);
+ // For testing
+ void loadSessions(ExecutorService executor) {
loadRemoteSessions(executor);
try {
executor.shutdown();
@@ -207,38 +210,42 @@ public class SessionRepository {
return List.copyOf(localSessionCache.values());
}
- private void loadLocalSessions(ExecutorService executor) {
+ public Set<LocalSession> getLocalSessionsFromFileSystem() {
File[] sessions = tenantFileSystemDirs.sessionsPath().listFiles(sessionApplicationsFilter);
- if (sessions == null) return;
+ if (sessions == null) return Set.of();
- Map<Long, Future<?>> futures = new HashMap<>();
+ Set<LocalSession> sessionIds = new HashSet<>();
for (File session : sessions) {
long sessionId = Long.parseLong(session.getName());
- futures.put(sessionId, executor.submit(() -> createSessionFromId(sessionId)));
+ SessionZooKeeperClient sessionZKClient = createSessionZooKeeperClient(sessionId);
+ File sessionDir = getAndValidateExistingSessionAppDir(sessionId);
+ ApplicationPackage applicationPackage = FilesApplicationPackage.fromFile(sessionDir);
+ LocalSession localSession = new LocalSession(tenantName, sessionId, applicationPackage, sessionZKClient);
+ sessionIds.add(localSession);
}
- futures.forEach((sessionId, future) -> {
- try {
- future.get();
- log.log(Level.FINE, () -> "Local session " + sessionId + " loaded");
- } catch (ExecutionException | InterruptedException e) {
- throw new RuntimeException("Could not load local session " + sessionId, e);
- }
- });
+ return sessionIds;
}
public ConfigChangeActions prepareLocalSession(Session session, DeployLogger logger, PrepareParams params, Instant now) {
+ params.vespaVersion().ifPresent(version -> {
+ if ( ! params.isBootstrap() && ! modelFactoryRegistry.allVersions().contains(version))
+ throw new UnknownVespaVersionException("Vespa version '" + version + "' not known by this configserver");
+ });
+
applicationRepo.createApplication(params.getApplicationId()); // TODO jvenstad: This is wrong, but it has to be done now, since preparation can change the application ID of a session :(
logger.log(Level.FINE, "Created application " + params.getApplicationId());
long sessionId = session.getSessionId();
SessionZooKeeperClient sessionZooKeeperClient = createSessionZooKeeperClient(sessionId);
- CompletionWaiter waiter = sessionZooKeeperClient.createPrepareWaiter();
+ Optional<CompletionWaiter> waiter = params.isDryRun()
+ ? Optional.empty()
+ : Optional.of(sessionZooKeeperClient.createPrepareWaiter());
Optional<ApplicationSet> activeApplicationSet = getActiveApplicationSet(params.getApplicationId());
ConfigChangeActions actions = sessionPreparer.prepare(applicationRepo.getHostValidator(), logger, params,
activeApplicationSet, now, getSessionAppDir(sessionId),
session.getApplicationPackage(), sessionZooKeeperClient)
.getConfigChangeActions();
setPrepared(session);
- waiter.awaitCompletion(params.getTimeoutBudget().timeLeft());
+ waiter.ifPresent(w -> w.awaitCompletion(params.getTimeoutBudget().timeLeft()));
return actions;
}
@@ -498,6 +505,7 @@ public class SessionRepository {
session.getSessionId(),
sessionZooKeeperClient,
previousApplicationSet,
+ sessionPreparer.getExecutor(),
curator,
metrics,
permanentApplicationPackage,
@@ -552,12 +560,11 @@ public class SessionRepository {
log.log(Level.FINE, () -> "Purging old sessions for tenant '" + tenantName + "'");
Set<LocalSession> toDelete = new HashSet<>();
try {
- for (LocalSession candidate : getLocalSessions()) {
+ for (LocalSession candidate : getLocalSessionsFromFileSystem()) {
Instant createTime = candidate.getCreateTime();
log.log(Level.FINE, () -> "Candidate session for deletion: " + candidate.getSessionId() + ", created: " + createTime);
- // Sessions with state other than ACTIVATE
- if (hasExpired(candidate) && !isActiveSession(candidate)) {
+ if (hasExpired(candidate) && canBeDeleted(candidate)) {
toDelete.add(candidate);
} else if (createTime.plus(Duration.ofDays(1)).isBefore(clock.instant())) {
// Sessions with state ACTIVATE, but which are not actually active
@@ -585,13 +592,14 @@ public class SessionRepository {
return candidate.getCreateTime().plus(sessionLifetime).isBefore(clock.instant());
}
- private boolean isActiveSession(LocalSession candidate) {
- return candidate.getStatus() == Session.Status.ACTIVATE;
+ // Sessions with state other than UNKNOWN or ACTIVATE
+ private boolean canBeDeleted(LocalSession candidate) {
+ return ! List.of(Session.Status.UNKNOWN, Session.Status.ACTIVATE).contains(candidate.getStatus());
}
private void ensureSessionPathDoesNotExist(long sessionId) {
Path sessionPath = getSessionPath(sessionId);
- if (configCurator.exists(sessionPath.getAbsolute())) {
+ if (curator.exists(sessionPath)) {
throw new IllegalArgumentException("Path " + sessionPath.getAbsolute() + " already exists in ZooKeeper");
}
}
@@ -775,12 +783,16 @@ public class SessionRepository {
}
Path getSessionStatePath(long sessionId) {
- return getSessionPath(sessionId).append(ConfigCurator.SESSIONSTATE_ZK_SUBPATH);
+ return getSessionPath(sessionId).append(ZKApplication.SESSIONSTATE_ZK_SUBPATH);
}
private SessionZooKeeperClient createSessionZooKeeperClient(long sessionId) {
- String serverId = configserverConfig.serverId();
- return new SessionZooKeeperClient(curator, configCurator, tenantName, sessionId, serverId);
+ return new SessionZooKeeperClient(curator,
+ tenantName,
+ sessionId,
+ configserverConfig.serverId(),
+ fileDistributionFactory.createFileManager(getSessionAppDir(sessionId)),
+ maxNodeSize);
}
private File getAndValidateExistingSessionAppDir(long sessionId) {
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionStateWatcher.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionStateWatcher.java
index 880519b3d61..6c6f60426fe 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionStateWatcher.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionStateWatcher.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.session;
import com.yahoo.text.Utf8;
@@ -45,9 +45,10 @@ public class SessionStateWatcher {
private synchronized void sessionStatusChanged(Status newStatus) {
long sessionId = session.getSessionId();
+
switch (newStatus) {
case NEW:
- case NONE:
+ case UNKNOWN:
break;
case DELETE:
sessionRepository.deactivateAndUpdateCache(session);
@@ -86,15 +87,21 @@ public class SessionStateWatcher {
private void nodeChanged() {
zkWatcherExecutor.execute(() -> {
- Status newStatus = Status.NONE;
+ Status newStatus = Status.UNKNOWN;
try {
ChildData node = fileCache.getCurrentData();
if (node != null) {
newStatus = Status.parse(Utf8.toString(node.getData()));
- if (log.isLoggable(Level.FINE))
- log.log(Level.FINE, session.logPre() + "Session change: Session "
- + session.getSessionId() + " changed status to " + newStatus.name());
+
+ String debugMessage = log.isLoggable(Level.FINE) ?
+ session.logPre() + "Session " + session.getSessionId()
+ + " changed status to " + newStatus.name() :
+ null;
+ if (debugMessage != null) log.fine(debugMessage);
+
sessionStatusChanged(newStatus);
+
+ if (debugMessage != null) log.fine(debugMessage + ": Done");
}
} catch (Exception e) {
log.log(Level.WARNING, session.logPre() + "Error handling session change to " +
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java
index 12fcdb6b87d..11b2881bc34 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.session;
import com.yahoo.component.Version;
@@ -21,10 +21,12 @@ import com.yahoo.transaction.Transaction;
import com.yahoo.vespa.config.server.UserConfigDefinitionRepo;
import com.yahoo.vespa.config.server.deploy.ZooKeeperClient;
import com.yahoo.vespa.config.server.deploy.ZooKeeperDeployer;
+import com.yahoo.vespa.config.server.filedistribution.AddFileInterface;
+import com.yahoo.vespa.config.server.filedistribution.MockFileManager;
import com.yahoo.vespa.config.server.tenant.OperatorCertificateSerializer;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
import com.yahoo.vespa.config.server.tenant.TenantSecretStoreSerializer;
-import com.yahoo.vespa.config.server.zookeeper.ConfigCurator;
+import com.yahoo.vespa.config.server.zookeeper.ZKApplication;
import com.yahoo.vespa.config.server.zookeeper.ZKApplicationPackage;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.transaction.CuratorOperations;
@@ -36,6 +38,7 @@ import java.util.List;
import java.util.Optional;
import java.util.logging.Level;
+import static com.yahoo.vespa.config.server.zookeeper.ZKApplication.USER_DEFCONFIGS_ZK_SUBPATH;
import static com.yahoo.vespa.curator.Curator.CompletionWaiter;
import static com.yahoo.yolean.Exceptions.uncheck;
@@ -62,23 +65,26 @@ public class SessionZooKeeperClient {
private static final String OPERATOR_CERTIFICATES_PATH = "operatorCertificates";
private final Curator curator;
- private final ConfigCurator configCurator;
private final TenantName tenantName;
private final Path sessionPath;
private final Path sessionStatusPath;
private final String serverId; // hostname
+ private final int maxNodeSize;
+ private final AddFileInterface fileManager;
- public SessionZooKeeperClient(Curator curator,
- ConfigCurator configCurator,
- TenantName tenantName,
- long sessionId,
- String serverId) {
+ public SessionZooKeeperClient(Curator curator, TenantName tenantName, long sessionId, String serverId, AddFileInterface fileManager, int maxNodeSize) {
this.curator = curator;
- this.configCurator = configCurator;
this.tenantName = tenantName;
this.sessionPath = getSessionPath(tenantName, sessionId);
this.serverId = serverId;
- this.sessionStatusPath = sessionPath.append(ConfigCurator.SESSIONSTATE_ZK_SUBPATH);
+ this.sessionStatusPath = sessionPath.append(ZKApplication.SESSIONSTATE_ZK_SUBPATH);
+ this.maxNodeSize = maxNodeSize;
+ this.fileManager = fileManager;
+ }
+
+ // For testing only
+ public SessionZooKeeperClient(Curator curator, TenantName tenantName, long sessionId, String serverId) {
+ this(curator, tenantName, sessionId, serverId, new MockFileManager(), 10 * 1024 * 1024);
}
public void writeStatus(Session.Status sessionStatus) {
@@ -92,11 +98,11 @@ public class SessionZooKeeperClient {
public Session.Status readStatus() {
try {
Optional<byte[]> data = curator.getData(sessionStatusPath);
- return data.map(d -> Session.Status.parse(Utf8.toString(d))).orElse(Session.Status.NONE);
+ return data.map(d -> Session.Status.parse(Utf8.toString(d))).orElse(Session.Status.UNKNOWN);
} catch (Exception e) {
log.log(Level.INFO, "Failed to read session status at " + sessionStatusPath.getAbsolute() +
", will assume session has been removed: ", e);
- return Session.Status.NONE;
+ return Session.Status.UNKNOWN;
}
}
@@ -137,93 +143,93 @@ public class SessionZooKeeperClient {
}
public ApplicationPackage loadApplicationPackage() {
- return new ZKApplicationPackage(configCurator, sessionPath);
+ return new ZKApplicationPackage(fileManager, curator, sessionPath, maxNodeSize);
}
public ConfigDefinitionRepo getUserConfigDefinitions() {
- return new UserConfigDefinitionRepo(configCurator, sessionPath.append(ConfigCurator.USER_DEFCONFIGS_ZK_SUBPATH).getAbsolute());
+ return new UserConfigDefinitionRepo(curator, sessionPath.append(USER_DEFCONFIGS_ZK_SUBPATH));
}
- private String applicationIdPath() {
- return sessionPath.append(APPLICATION_ID_PATH).getAbsolute();
+ private Path applicationIdPath() {
+ return sessionPath.append(APPLICATION_ID_PATH);
}
public void writeApplicationId(ApplicationId id) {
if ( ! id.tenant().equals(tenantName))
throw new IllegalArgumentException("Cannot write application id '" + id + "' for tenant '" + tenantName + "'");
- configCurator.putData(applicationIdPath(), id.serializedForm());
+ curator.set(applicationIdPath(), Utf8.toBytes(id.serializedForm()));
}
public Optional<ApplicationId> readApplicationId() {
- if ( ! configCurator.exists(applicationIdPath())) return Optional.empty();
- return Optional.of(ApplicationId.fromSerializedForm(configCurator.getData(applicationIdPath())));
+ return curator.getData(applicationIdPath()).map(d -> ApplicationId.fromSerializedForm(Utf8.toString(d)));
}
void writeApplicationPackageReference(Optional<FileReference> applicationPackageReference) {
applicationPackageReference.ifPresent(
- reference -> configCurator.putData(applicationPackageReferencePath(), reference.value()));
+ reference -> curator.set(applicationPackageReferencePath(), Utf8.toBytes(reference.value())));
}
FileReference readApplicationPackageReference() {
- if ( ! configCurator.exists(applicationPackageReferencePath())) return null; // This should not happen.
- return new FileReference(configCurator.getData(applicationPackageReferencePath()));
+ Optional<byte[]> data = curator.getData(applicationPackageReferencePath());
+ if (data.isEmpty()) return null; // This should not happen.
+
+ return new FileReference(Utf8.toString(data.get()));
}
- private String applicationPackageReferencePath() {
- return sessionPath.append(APPLICATION_PACKAGE_REFERENCE_PATH).getAbsolute();
+ private Path applicationPackageReferencePath() {
+ return sessionPath.append(APPLICATION_PACKAGE_REFERENCE_PATH);
}
- private String versionPath() {
- return sessionPath.append(VERSION_PATH).getAbsolute();
+ private Path versionPath() {
+ return sessionPath.append(VERSION_PATH);
}
- private String dockerImageRepositoryPath() {
- return sessionPath.append(DOCKER_IMAGE_REPOSITORY_PATH).getAbsolute();
+ private Path dockerImageRepositoryPath() {
+ return sessionPath.append(DOCKER_IMAGE_REPOSITORY_PATH);
}
- private String athenzDomainPath() {
- return sessionPath.append(ATHENZ_DOMAIN).getAbsolute();
+ private Path athenzDomainPath() {
+ return sessionPath.append(ATHENZ_DOMAIN);
}
- private String quotaPath() {
- return sessionPath.append(QUOTA_PATH).getAbsolute();
+ private Path quotaPath() {
+ return sessionPath.append(QUOTA_PATH);
}
- private String tenantSecretStorePath() {
- return sessionPath.append(TENANT_SECRET_STORES_PATH).getAbsolute();
+ private Path tenantSecretStorePath() {
+ return sessionPath.append(TENANT_SECRET_STORES_PATH);
}
- private String operatorCertificatesPath() {
- return sessionPath.append(OPERATOR_CERTIFICATES_PATH).getAbsolute();
+ private Path operatorCertificatesPath() {
+ return sessionPath.append(OPERATOR_CERTIFICATES_PATH);
}
public void writeVespaVersion(Version version) {
- configCurator.putData(versionPath(), version.toString());
+ curator.set(versionPath(), Utf8.toBytes(version.toString()));
}
public Version readVespaVersion() {
- if ( ! configCurator.exists(versionPath())) return Vtag.currentVersion; // TODO: This should not be possible any more - verify and remove
- return new Version(configCurator.getData(versionPath()));
+ Optional<byte[]> data = curator.getData(versionPath());
+ // TODO: Empty version should not be possible any more - verify and remove
+ return data.map(d -> new Version(Utf8.toString(d))).orElse(Vtag.currentVersion);
}
public Optional<DockerImage> readDockerImageRepository() {
- if ( ! configCurator.exists(dockerImageRepositoryPath())) return Optional.empty();
- String dockerImageRepository = configCurator.getData(dockerImageRepositoryPath());
- return dockerImageRepository.isEmpty() ? Optional.empty() : Optional.of(DockerImage.fromString(dockerImageRepository));
+ Optional<byte[]> dockerImageRepository = curator.getData(dockerImageRepositoryPath());
+ return dockerImageRepository.map(d -> DockerImage.fromString(Utf8.toString(d)));
}
public void writeDockerImageRepository(Optional<DockerImage> dockerImageRepository) {
- dockerImageRepository.ifPresent(repo -> configCurator.putData(dockerImageRepositoryPath(), repo.untagged()));
+ dockerImageRepository.ifPresent(repo -> curator.set(dockerImageRepositoryPath(), Utf8.toBytes(repo.untagged())));
}
public Instant readCreateTime() {
- String path = getCreateTimePath();
- if ( ! configCurator.exists(path)) return Instant.EPOCH;
- return Instant.ofEpochSecond(Long.parseLong(configCurator.getData(path)));
+ Optional<byte[]> data = curator.getData(getCreateTimePath());
+ return data.map(d -> Instant.ofEpochSecond(Long.parseLong(Utf8.toString(d)))).orElse(Instant.EPOCH);
}
- private String getCreateTimePath() {
- return sessionPath.append(CREATE_TIME_PATH).getAbsolute();
+ private Path getCreateTimePath() {
+ return sessionPath.append(CREATE_TIME_PATH);
}
AllocatedHosts getAllocatedHosts() {
@@ -232,14 +238,13 @@ public class SessionZooKeeperClient {
}
public ZooKeeperDeployer createDeployer(DeployLogger logger) {
- ZooKeeperClient zkClient = new ZooKeeperClient(configCurator, logger, sessionPath);
+ ZooKeeperClient zkClient = new ZooKeeperClient(curator, logger, sessionPath);
return new ZooKeeperDeployer(zkClient);
}
public Transaction createWriteStatusTransaction(Session.Status status) {
- String path = sessionStatusPath.getAbsolute();
CuratorTransaction transaction = new CuratorTransaction(curator);
- if (configCurator.exists(path)) {
+ if (curator.exists(sessionStatusPath)) {
transaction.add(CuratorOperations.setData(sessionStatusPath.getAbsolute(), Utf8.toBytes(status.name())));
} else {
transaction.add(CuratorOperations.create(sessionStatusPath.getAbsolute(), Utf8.toBytes(status.name())));
@@ -248,59 +253,56 @@ public class SessionZooKeeperClient {
}
public void writeAthenzDomain(Optional<AthenzDomain> athenzDomain) {
- athenzDomain.ifPresent(domain -> configCurator.putData(athenzDomainPath(), domain.value()));
+ athenzDomain.ifPresent(domain -> curator.set(athenzDomainPath(), Utf8.toBytes(domain.value())));
}
public Optional<AthenzDomain> readAthenzDomain() {
- if ( ! configCurator.exists(athenzDomainPath())) return Optional.empty();
- return Optional.ofNullable(configCurator.getData(athenzDomainPath()))
- .filter(domain -> ! domain.isBlank())
- .map(AthenzDomain::from);
+ return curator.getData(athenzDomainPath())
+ .map(Utf8::toString)
+ .filter(domain -> !domain.isBlank())
+ .map(AthenzDomain::from);
}
public void writeQuota(Optional<Quota> maybeQuota) {
maybeQuota.ifPresent(quota -> {
var bytes = uncheck(() -> SlimeUtils.toJsonBytes(quota.toSlime()));
- configCurator.putData(quotaPath(), bytes);
+ curator.set(quotaPath(), bytes);
});
}
public Optional<Quota> readQuota() {
- if ( ! configCurator.exists(quotaPath())) return Optional.empty();
- return Optional.ofNullable(configCurator.getData(quotaPath()))
- .map(SlimeUtils::jsonToSlime)
- .map(slime -> Quota.fromSlime(slime.get()));
+ return curator.getData(quotaPath())
+ .map(SlimeUtils::jsonToSlime)
+ .map(slime -> Quota.fromSlime(slime.get()));
}
public void writeTenantSecretStores(List<TenantSecretStore> tenantSecretStores) {
if (!tenantSecretStores.isEmpty()) {
var bytes = uncheck(() -> SlimeUtils.toJsonBytes(TenantSecretStoreSerializer.toSlime(tenantSecretStores)));
- configCurator.putData(tenantSecretStorePath(), bytes);
+ curator.set(tenantSecretStorePath(), bytes);
}
}
public List<TenantSecretStore> readTenantSecretStores() {
- if ( ! configCurator.exists(tenantSecretStorePath())) return List.of();
- return Optional.ofNullable(configCurator.getData(tenantSecretStorePath()))
- .map(SlimeUtils::jsonToSlime)
- .map(slime -> TenantSecretStoreSerializer.listFromSlime(slime.get()))
- .orElse(List.of());
+ return curator.getData(tenantSecretStorePath())
+ .map(SlimeUtils::jsonToSlime)
+ .map(slime -> TenantSecretStoreSerializer.listFromSlime(slime.get()))
+ .orElse(List.of());
}
public void writeOperatorCertificates(List<X509Certificate> certificates) {
if( ! certificates.isEmpty()) {
var bytes = uncheck(() -> SlimeUtils.toJsonBytes(OperatorCertificateSerializer.toSlime(certificates)));
- configCurator.putData(operatorCertificatesPath(), bytes);
+ curator.set(operatorCertificatesPath(), bytes);
}
}
public List<X509Certificate> readOperatorCertificates() {
- if ( ! configCurator.exists(operatorCertificatesPath())) return List.of();
- return Optional.ofNullable(configCurator.getData(operatorCertificatesPath()))
- .map(SlimeUtils::jsonToSlime)
- .map(slime -> OperatorCertificateSerializer.fromSlime(slime.get()))
- .orElse(List.of());
+ return curator.getData(operatorCertificatesPath())
+ .map(SlimeUtils::jsonToSlime)
+ .map(slime -> OperatorCertificateSerializer.fromSlime(slime.get()))
+ .orElse(List.of());
}
/**
@@ -313,7 +315,7 @@ public class SessionZooKeeperClient {
transaction.add(CuratorOperations.create(sessionPath.getAbsolute()));
transaction.add(CuratorOperations.create(sessionPath.append(UPLOAD_BARRIER).getAbsolute()));
transaction.add(createWriteStatusTransaction(Session.Status.NEW).operations());
- transaction.add(CuratorOperations.create(getCreateTimePath(), Utf8.toBytes(String.valueOf(createTime.getEpochSecond()))));
+ transaction.add(CuratorOperations.create(getCreateTimePath().getAbsolute(), Utf8.toBytes(String.valueOf(createTime.getEpochSecond()))));
transaction.commit();
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SilentDeployLogger.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SilentDeployLogger.java
index 9e2e5ddf698..f2b1dbe23e8 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SilentDeployLogger.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SilentDeployLogger.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.session;
import java.util.logging.Level;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ApplicationRolesSerializer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ApplicationRolesSerializer.java
index 132828de7b4..9c77987677f 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ApplicationRolesSerializer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ApplicationRolesSerializer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.tenant;
import com.yahoo.config.model.api.ApplicationRoles;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ApplicationRolesStore.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ApplicationRolesStore.java
index a41e5465509..62eb5b9d906 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ApplicationRolesStore.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ApplicationRolesStore.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.tenant;
import com.yahoo.config.model.api.ApplicationRoles;
@@ -14,9 +14,9 @@ import java.util.Optional;
/**
* Stores application roles for an application.
- *
* @author mortent
*/
+ // TODO: Remove and clean up zk after 7.458
public class ApplicationRolesStore {
private final Path path;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointSerializer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointSerializer.java
index 15fe04932dd..1b8842ba746 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointSerializer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.tenant;
import com.yahoo.config.model.api.ContainerEndpoint;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointsCache.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointsCache.java
index 0d277eeb1d1..62d02d31d4a 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointsCache.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointsCache.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.tenant;
import com.yahoo.config.model.api.ContainerEndpoint;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/EndpointCertificateMetadataSerializer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/EndpointCertificateMetadataSerializer.java
index afe57b75d61..11bb0a0f564 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/EndpointCertificateMetadataSerializer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/EndpointCertificateMetadataSerializer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.tenant;
import com.yahoo.config.model.api.EndpointCertificateMetadata;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/EndpointCertificateMetadataStore.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/EndpointCertificateMetadataStore.java
index 415f0a41441..1534cc03a7e 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/EndpointCertificateMetadataStore.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/EndpointCertificateMetadataStore.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.tenant;
import com.yahoo.config.model.api.EndpointCertificateMetadata;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/EndpointCertificateRetriever.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/EndpointCertificateRetriever.java
index 5f40e5e1411..74c193cbf58 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/EndpointCertificateRetriever.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/EndpointCertificateRetriever.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.tenant;
import com.yahoo.config.model.api.EndpointCertificateMetadata;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/OperatorCertificateSerializer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/OperatorCertificateSerializer.java
index 3dbdf1380f1..23d90b68ee4 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/OperatorCertificateSerializer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/OperatorCertificateSerializer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.tenant;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/SecretStoreExternalIdRetriever.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/SecretStoreExternalIdRetriever.java
index 0c254606169..a50f84b1579 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/SecretStoreExternalIdRetriever.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/SecretStoreExternalIdRetriever.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.tenant;
import com.yahoo.config.model.api.TenantSecretStore;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenant.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenant.java
index 115328300e1..57064c6814e 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenant.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenant.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.tenant;
import com.yahoo.config.provision.TenantName;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantDebugger.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantDebugger.java
index 334e53ee11f..12f817fc92d 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantDebugger.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantDebugger.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.tenant;
import com.yahoo.vespa.curator.Curator;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantListener.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantListener.java
index 252ca2b97d7..59c0a65bc71 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantListener.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantListener.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.tenant;
import com.yahoo.config.provision.TenantName;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantMetaData.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantMetaData.java
index b8db47e371f..d776b6a449a 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantMetaData.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantMetaData.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.tenant;
import com.yahoo.config.provision.TenantName;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java
index 2f7b397cbd9..1499100307c 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java
@@ -1,10 +1,12 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.tenant;
import com.google.common.collect.ImmutableSet;
import com.google.inject.Inject;
import com.yahoo.cloud.config.ConfigserverConfig;
+import com.yahoo.cloud.config.ZookeeperServerConfig;
import com.yahoo.concurrent.DaemonThreadFactory;
+import com.yahoo.concurrent.InThreadExecutorService;
import com.yahoo.concurrent.Lock;
import com.yahoo.concurrent.Locks;
import com.yahoo.concurrent.StripedExecutor;
@@ -30,11 +32,11 @@ import com.yahoo.vespa.config.server.monitoring.Metrics;
import com.yahoo.vespa.config.server.provision.HostProvisionerProvider;
import com.yahoo.vespa.config.server.session.SessionPreparer;
import com.yahoo.vespa.config.server.session.SessionRepository;
-import com.yahoo.vespa.config.server.zookeeper.ConfigCurator;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.transaction.CuratorOperations;
import com.yahoo.vespa.curator.transaction.CuratorTransaction;
import com.yahoo.vespa.flags.FlagSource;
+import com.yahoo.vespa.flags.Flags;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.recipes.cache.PathChildrenCacheEvent;
import org.apache.curator.framework.state.ConnectionState;
@@ -98,7 +100,6 @@ public class TenantRepository {
private final Locks<TenantName> tenantLocks = new Locks<>(1, TimeUnit.MINUTES);
private final HostRegistry hostRegistry;
private final TenantListener tenantListener;
- private final ConfigCurator configCurator;
private final Curator curator;
private final Metrics metrics;
private final MetricUpdater metricUpdater;
@@ -106,6 +107,7 @@ public class TenantRepository {
private final StripedExecutor<TenantName> zkSessionWatcherExecutor;
private final StripedExecutor<TenantName> zkApplicationWatcherExecutor;
private final FileDistributionFactory fileDistributionFactory;
+ private final ExecutorService deployHelperExecutor;
private final FlagSource flagSource;
private final SecretStore secretStore;
private final HostProvisionerProvider hostProvisionerProvider;
@@ -116,17 +118,17 @@ public class TenantRepository {
private final ModelFactoryRegistry modelFactoryRegistry;
private final ConfigDefinitionRepo configDefinitionRepo;
private final ReloadListener reloadListener;
- private final ExecutorService bootstrapExecutor;
private final ScheduledExecutorService checkForRemovedApplicationsService =
new ScheduledThreadPoolExecutor(1, new DaemonThreadFactory("check for removed applications"));
- private final Optional<Curator.DirectoryCache> directoryCache;
+ private final Curator.DirectoryCache directoryCache;
+ private final ZookeeperServerConfig zookeeperServerConfig;
/**
* Creates a new tenant repository
*/
@Inject
public TenantRepository(HostRegistry hostRegistry,
- ConfigCurator configCurator,
+ Curator curator,
Metrics metrics,
FlagSource flagSource,
SecretStore secretStore,
@@ -137,9 +139,10 @@ public class TenantRepository {
ModelFactoryRegistry modelFactoryRegistry,
ConfigDefinitionRepo configDefinitionRepo,
ReloadListener reloadListener,
- TenantListener tenantListener) {
+ TenantListener tenantListener,
+ ZookeeperServerConfig zookeeperServerConfig) {
this(hostRegistry,
- configCurator,
+ curator,
metrics,
new StripedExecutor<>(),
new StripedExecutor<>(),
@@ -155,11 +158,12 @@ public class TenantRepository {
modelFactoryRegistry,
configDefinitionRepo,
reloadListener,
- tenantListener);
+ tenantListener,
+ zookeeperServerConfig);
}
public TenantRepository(HostRegistry hostRegistry,
- ConfigCurator configCurator,
+ Curator curator,
Metrics metrics,
StripedExecutor<TenantName> zkApplicationWatcherExecutor ,
StripedExecutor<TenantName> zkSessionWatcherExecutor,
@@ -175,12 +179,11 @@ public class TenantRepository {
ModelFactoryRegistry modelFactoryRegistry,
ConfigDefinitionRepo configDefinitionRepo,
ReloadListener reloadListener,
- TenantListener tenantListener) {
+ TenantListener tenantListener,
+ ZookeeperServerConfig zookeeperServerConfig) {
this.hostRegistry = hostRegistry;
this.configserverConfig = configserverConfig;
- this.bootstrapExecutor = Executors.newFixedThreadPool(configserverConfig.numParallelTenantLoaders(),
- new DaemonThreadFactory("bootstrap-tenant-"));
- this.curator = configCurator.curator();
+ this.curator = curator;
this.metrics = metrics;
metricUpdater = metrics.getOrCreateMetricUpdater(Collections.emptyMap());
this.zkCacheExecutor = zkCacheExecutor;
@@ -197,16 +200,18 @@ public class TenantRepository {
this.configDefinitionRepo = configDefinitionRepo;
this.reloadListener = reloadListener;
this.tenantListener = tenantListener;
- this.configCurator = configCurator;
+ this.zookeeperServerConfig = zookeeperServerConfig;
+ // This we should control with a feature flag.
+ this.deployHelperExecutor = createModelBuilderExecutor(Flags.NUM_DEPLOY_HELPER_THREADS.bindTo(flagSource).value());
curator.framework().getConnectionStateListenable().addListener(this::stateChanged);
createPaths();
createSystemTenants(configserverConfig);
- this.directoryCache = Optional.of(curator.createDirectoryCache(tenantsPath.getAbsolute(), false, false, zkCacheExecutor));
- this.directoryCache.get().addListener(this::childEvent);
- this.directoryCache.get().start();
+ this.directoryCache = curator.createDirectoryCache(tenantsPath.getAbsolute(), false, false, zkCacheExecutor);
+ this.directoryCache.addListener(this::childEvent);
+ this.directoryCache.start();
bootstrapTenants();
notifyTenantsLoaded();
checkForRemovedApplicationsService.scheduleWithFixedDelay(this::removeUnusedApplications,
@@ -215,6 +220,14 @@ public class TenantRepository {
TimeUnit.SECONDS);
}
+ private ExecutorService createModelBuilderExecutor(int numThreads) {
+ if (numThreads == 0) return new InThreadExecutorService();
+ if (numThreads < 0) {
+ numThreads = Runtime.getRuntime().availableProcessors();
+ }
+ return Executors.newFixedThreadPool(numThreads, ThreadFactoryFactory.getDaemonThreadFactory("deploy-helper"));
+ }
+
private void notifyTenantsLoaded() {
tenantListener.onTenantsLoaded();
}
@@ -268,6 +281,8 @@ public class TenantRepository {
}
private void bootstrapTenants() {
+ ExecutorService bootstrapExecutor = Executors.newFixedThreadPool(configserverConfig.numParallelTenantLoaders(),
+ new DaemonThreadFactory("bootstrap-tenant-"));
// Keep track of tenants created
Map<TenantName, Future<?>> futures = new HashMap<>();
readTenantsFromZooKeeper(curator).forEach(t -> futures.put(t, bootstrapExecutor.submit(() -> bootstrapTenant(t))));
@@ -333,6 +348,7 @@ public class TenantRepository {
PermanentApplicationPackage permanentApplicationPackage = new PermanentApplicationPackage(configserverConfig);
SessionPreparer sessionPreparer = new SessionPreparer(modelFactoryRegistry,
fileDistributionFactory,
+ deployHelperExecutor,
hostProvisionerProvider,
permanentApplicationPackage,
configserverConfig,
@@ -344,9 +360,10 @@ public class TenantRepository {
SessionRepository sessionRepository = new SessionRepository(tenantName,
applicationRepo,
sessionPreparer,
- configCurator,
+ curator,
metrics,
zkSessionWatcherExecutor,
+ fileDistributionFactory,
permanentApplicationPackage,
flagSource,
zkCacheExecutor,
@@ -357,7 +374,8 @@ public class TenantRepository {
zone,
clock,
modelFactoryRegistry,
- configDefinitionRepo);
+ configDefinitionRepo,
+ zookeeperServerConfig.juteMaxBuffer());
log.log(Level.INFO, "Adding tenant '" + tenantName + "'" + ", created " + created +
". Bootstrapping in " + Duration.between(start, Instant.now()));
Tenant tenant = new Tenant(tenantName, sessionRepository, applicationRepo, created);
@@ -528,7 +546,8 @@ public class TenantRepository {
}
public void close() {
- directoryCache.ifPresent(Curator.DirectoryCache::close);
+ directoryCache.close();
+ fileDistributionFactory.close();
try {
zkCacheExecutor.shutdown();
checkForRemovedApplicationsService.shutdown();
@@ -601,6 +620,6 @@ public class TenantRepository {
return barriersPath;
}
- public Curator getCurator() { return curator; }
+ public com.yahoo.vespa.curator.Curator getCurator() { return curator; }
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantSecretStoreSerializer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantSecretStoreSerializer.java
index f55a29efe01..262192ad6c4 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantSecretStoreSerializer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantSecretStoreSerializer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.tenant;
import com.yahoo.config.model.api.TenantSecretStore;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/version/VersionState.java b/configserver/src/main/java/com/yahoo/vespa/config/server/version/VersionState.java
index 6bc175338f3..c6945cfb070 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/version/VersionState.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/version/VersionState.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.version;
import com.google.inject.Inject;
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ConfigCurator.java b/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ConfigCurator.java
deleted file mode 100644
index b13750f93d4..00000000000
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ConfigCurator.java
+++ /dev/null
@@ -1,255 +0,0 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.config.server.zookeeper;
-
-import com.google.inject.Inject;
-import com.yahoo.cloud.config.ZookeeperServerConfig;
-import com.yahoo.text.Utf8;
-import com.yahoo.vespa.curator.Curator;
-import org.apache.zookeeper.KeeperException;
-
-import java.util.List;
-import java.util.logging.Level;
-
-/**
- * A (stateful) curator wrapper for the config server. This simplifies Curator method calls used by the config server
- * and knows about how config content is mapped to node names and stored.
- * <p>
- * Usage details:
- * Config ids are stored as foo#bar#c0 instead of foo/bar/c0, for simplicity.
- * Keep the amount of domain-specific logic here to a minimum.
- * Data for one application x is stored on this form:
- * /config/v2/tenants/x/sessions/y/defconfigs
- * /config/v2/tenants/x/sessions/y/userapp
- * <p>
- * The user application structure is exactly the same as in the user's app dir during deploy.
- * The current live app id (for example y) is stored in the node //config/v2/tenants/x/applications/&lt;application-id&gt;
- * It is updated outside this class, typically in config server when activating config
- *
- * @author Vegard Havdal
- * @author bratseth
- */
-public class ConfigCurator {
-
- /** Path for def files, under one app */
- public static final String DEFCONFIGS_ZK_SUBPATH = "/defconfigs";
-
- /** Path for def files, under one app */
- public static final String USER_DEFCONFIGS_ZK_SUBPATH = "/userdefconfigs";
-
- /** Path for metadata about an application */
- public static final String META_ZK_PATH = "/meta";
-
- /** Path for the app package's dir structure, under one app */
- public static final String USERAPP_ZK_SUBPATH = "/userapp";
-
- /** Path for session state */
- public static final String SESSIONSTATE_ZK_SUBPATH = "/sessionState";
-
- private final Curator curator;
-
- public static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(ConfigCurator.class.getName());
-
- /** The maximum size of a ZooKeeper node */
- private final int maxNodeSize;
-
- public static ConfigCurator create(Curator curator) {
- return new ConfigCurator(curator, 1024*1024*10);
- }
-
- @Inject
- public ConfigCurator(Curator curator, ZookeeperServerConfig config) {
- this(curator, config.juteMaxBuffer());
- }
-
- private ConfigCurator(Curator curator, int maxNodeSize) {
- this.curator = curator;
- this.maxNodeSize = maxNodeSize;
- log.log(Level.CONFIG, "Using jute max buffer size " + this.maxNodeSize);
- testZkConnection();
- }
-
- /** Returns the curator instance this wraps */
- public Curator curator() { return curator; }
-
- /** Cleans and creates a zookeeper completely */
- void initAndClear(String path) {
- try {
- if (exists(path))
- deleteRecurse(path);
- createRecurse(path);
- }
- catch (Exception e) {
- throw new RuntimeException("Exception clearing path " + path + " in ZooKeeper", e);
- }
- }
-
- /** Creates a path. If the path already exists this does nothing. */
- private void createRecurse(String path) {
- try {
- if (exists(path)) return;
- curator.framework().create().creatingParentsIfNeeded().forPath(path);
- }
- catch (KeeperException.NodeExistsException e) {
- // Ignore, path already exists
- }
- catch(Exception e){
- throw new RuntimeException("Exception creating path " + path + " in ZooKeeper", e);
- }
- }
-
- /** Returns the data at a path and node. Replaces / by # in node names. */
- public String getData(String path, String node) {
- return getData(createFullPath(path, node));
- }
-
- /** Returns the data at a path */
- public String getData(String path) {
- byte[] data = getBytes(path);
- return (data == null) ? null : Utf8.toString(data);
- }
-
- /**
- * Returns the data at a path, or null if the path does not exist.
- *
- * @param path a String with a pathname.
- * @return a byte array with data.
- */
- public byte[] getBytes(String path) {
- if ( ! exists(path)) throw new IllegalArgumentException("Cannot read data from path " + path + ", it does not exist");
-
- try {
- return curator.framework().getData().forPath(path);
- }
- catch (Exception e) {
- throw new RuntimeException("Exception reading from path " + path + " in ZooKeeper", e);
- }
- }
-
- /** Returns whether a path exists in zookeeper */
- public boolean exists(String path, String node) {
- return exists(createFullPath(path, node));
- }
-
- /** Returns whether a path exists in zookeeper */
- public boolean exists(String path) {
- try {
- return curator.framework().checkExists().forPath(path) != null;
- }
- catch (Exception e) {
- throw new RuntimeException("Exception checking existence of path " + path + " in ZooKeeper", e);
- }
- }
-
- /** Creates a Zookeeper node. If the node already exists this does nothing. */
- public void createNode(String path) {
- if ( ! exists(path))
- createRecurse(path);
- }
-
- /** Creates a Zookeeper node synchronously. Replaces / by # in node names. */
- public void createNode(String path, String node) {
- createNode(createFullPath(path, node));
- }
-
- private String createFullPath(String path, String node) {
- return path + "/" + toConfigserverName(node);
- }
-
- /** Sets data at a given path and name. Replaces / by # in node names. Creates the node if it doesn't exist */
- public void putData(String path, String node, String data) {
- putData(path, node, Utf8.toBytes(data));
- }
-
- /** Sets data at a given path. Creates the node if it doesn't exist */
- public void putData(String path, String data) {
- putData(path, Utf8.toBytes(data));
- }
-
- private void ensureDataIsNotTooLarge(byte[] toPut, String path) {
- if (toPut.length >= maxNodeSize) {
- throw new IllegalArgumentException("Error: too much zookeeper data in node: "
- + "[" + toPut.length + " bytes] (path " + path + ")");
- }
- }
-
- /** Sets data at a given path and name. Replaces / by # in node names. Creates the node if it doesn't exist */
- private void putData(String path, String node, byte[] data) {
- putData(createFullPath(path, node), data);
- }
-
- /** Sets data at a given path. Creates the path if it doesn't exist */
- public void putData(String path, byte[] data) {
- try {
- ensureDataIsNotTooLarge(data, path);
- if (exists(path))
- curator.framework().setData().forPath(path, data);
- else
- curator.framework().create().creatingParentsIfNeeded().forPath(path, data);
- }
- catch (Exception e) {
- throw new RuntimeException("Exception writing to path " + path + " in ZooKeeper", e);
- }
- }
-
- /**
- * Replaces / with # in the given node.
- *
- * @param node a zookeeper node name
- * @return a config server node name
- */
- private String toConfigserverName(String node) {
- if (node.startsWith("/")) node = node.substring(1);
- return node.replaceAll("/", "#");
- }
-
- /**
- * Lists thh children at the given path.
- *
- * @return the local names of the children at this path, or an empty list (never null) if none.
- */
- public List<String> getChildren(String path) {
- try {
- return curator.framework().getChildren().forPath(path);
- }
- catch (Exception e) {
- throw new RuntimeException("Exception getting children of path " + path + " in ZooKeeper", e);
- }
- }
-
- /**
- * Puts config definition data and metadata into ZK.
- *
- * @param name The config definition name (including namespace)
- * @param path /zoopath
- * @param data The contents to write to ZK (as a byte array)
- */
- public void putDefData(String name, String path, byte[] data) {
- putData(path, name, data);
- }
-
- /** Deletes the node at the given path, and any children it may have. If the node does not exist this does nothing */
- public void deleteRecurse(String path) {
- try {
- if ( ! exists(path)) return;
- curator.framework().delete().deletingChildrenIfNeeded().forPath(path);
- }
- catch (Exception e) {
- throw new RuntimeException("Exception deleting path " + path, e);
- }
- }
-
- private void testZkConnection() { // This is not necessary, but allows us to give a useful error message
- if (curator.connectionSpec().isEmpty()) return;
- try {
- curator.framework().checkExists().forPath("/dummy");
- }
- catch (Exception e) {
- log.log(Level.SEVERE, "Unable to connect to ZooKeeper on " + curator.connectionSpec() +
- ". Please verify that VESPA_CONFIGSERVERS points to the correct configserver(s) " +
- "on all config server nodes and are the same config server(s) as in services.xml, " +
- "and that they are started. " +
- "Check the log(s) for config server errors. Aborting.", e);
- }
- }
-
-}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/InitializedCounter.java b/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/InitializedCounter.java
index 216c9edd0d0..0b4845ce347 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/InitializedCounter.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/InitializedCounter.java
@@ -1,12 +1,16 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.zookeeper;
import java.util.logging.Level;
+
+import com.yahoo.path.Path;
+import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.recipes.CuratorCounter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.logging.Logger;
/**
* A counter that sets its initial value to the number of apps in zookeeper if no counter value is set. Subclass
@@ -16,14 +20,14 @@ import java.util.List;
*/
public class InitializedCounter {
- private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(InitializedCounter.class.getName());
+ private static final Logger log = java.util.logging.Logger.getLogger(InitializedCounter.class.getName());
final CuratorCounter counter;
- private final String sessionsDirPath;
+ private final Path sessionsDirPath;
- InitializedCounter(ConfigCurator configCurator, String counterPath, String sessionsDirPath) {
+ InitializedCounter(Curator curator, Path counterPath, Path sessionsDirPath) {
this.sessionsDirPath = sessionsDirPath;
- this.counter = new CuratorCounter(configCurator.curator(), counterPath);
- initializeCounterValue(getLatestSessionId(configCurator, sessionsDirPath));
+ this.counter = new CuratorCounter(curator, counterPath);
+ initializeCounterValue(getLatestSessionId(curator, sessionsDirPath));
}
private void initializeCounterValue(Long latestSessionId) {
@@ -40,8 +44,8 @@ public class InitializedCounter {
*
* @return true, if an application exists, false otherwise
*/
- private static boolean applicationExists(ConfigCurator configCurator, String appsPath) {
- return configCurator.exists(appsPath);
+ private static boolean applicationExists(Curator curator, Path appsPath) {
+ return curator.exists(appsPath);
}
/**
@@ -50,12 +54,12 @@ public class InitializedCounter {
*
* @return generation of the latest deployed application
*/
- private static Long getLatestSessionId(ConfigCurator configCurator, String appsPath) {
- if (!applicationExists(configCurator, appsPath)) return null;
+ private static Long getLatestSessionId(Curator curator, Path appsPath) {
+ if (!applicationExists(curator, appsPath)) return null;
Long newestGeneration = null;
try {
- if (!getDeployedApplicationGenerations(configCurator, appsPath).isEmpty()) {
- newestGeneration = Collections.max(getDeployedApplicationGenerations(configCurator, appsPath));
+ if (!getDeployedApplicationGenerations(curator, appsPath).isEmpty()) {
+ newestGeneration = Collections.max(getDeployedApplicationGenerations(curator, appsPath));
}
} catch (Exception e) {
log.log(Level.WARNING, "Could not get newest application generation from Zookeeper");
@@ -63,10 +67,10 @@ public class InitializedCounter {
return newestGeneration;
}
- private static List<Long> getDeployedApplicationGenerations(ConfigCurator configCurator, String appsPath) {
+ private static List<Long> getDeployedApplicationGenerations(Curator curator, Path appsPath) {
ArrayList<Long> generations = new ArrayList<>();
try {
- List<String> stringGenerations = configCurator.getChildren(appsPath);
+ List<String> stringGenerations = curator.getChildren(appsPath);
if (stringGenerations != null && !(stringGenerations.isEmpty())) {
for (String s : stringGenerations) {
generations.add(Long.parseLong(s));
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/SessionCounter.java b/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/SessionCounter.java
index 17d0f7e426e..6002619201e 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/SessionCounter.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/SessionCounter.java
@@ -1,8 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.zookeeper;
import com.yahoo.config.provision.TenantName;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
+import com.yahoo.vespa.curator.Curator;
/**
* A counter keeping track of session ids in an atomic fashion across multiple config servers.
@@ -11,10 +12,10 @@ import com.yahoo.vespa.config.server.tenant.TenantRepository;
*/
public class SessionCounter extends InitializedCounter {
- public SessionCounter(ConfigCurator configCurator, TenantName tenantName) {
- super(configCurator,
- TenantRepository.getTenantPath(tenantName).append("sessionCounter").getAbsolute(),
- TenantRepository.getSessionsPath(tenantName).getAbsolute());
+ public SessionCounter(Curator curator, TenantName tenantName) {
+ super(curator,
+ TenantRepository.getTenantPath(tenantName).append("sessionCounter"),
+ TenantRepository.getSessionsPath(tenantName));
}
/**
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplication.java b/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplication.java
index 084f26bd368..107bd8be367 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplication.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplication.java
@@ -1,13 +1,14 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.zookeeper;
import com.yahoo.io.reader.NamedReader;
import com.yahoo.path.Path;
+import com.yahoo.text.Utf8;
+import com.yahoo.vespa.curator.Curator;
import java.io.Reader;
import java.io.StringReader;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
/**
@@ -18,12 +19,29 @@ import java.util.List;
*/
public class ZKApplication {
- private final ConfigCurator zk;
+ /** Path for def files, under one app */
+ public static final String DEFCONFIGS_ZK_SUBPATH = "/defconfigs";
+ /** Path for def files, under one app */
+ public static final String USER_DEFCONFIGS_ZK_SUBPATH = "/userdefconfigs";
+ /** Path for metadata about an application */
+ public static final String META_ZK_PATH = "/meta";
+ /** Path for the app package's dir structure, under one app */
+ public static final String USERAPP_ZK_SUBPATH = "/userapp";
+ /** Path for session state */
+ public static final String SESSIONSTATE_ZK_SUBPATH = "/sessionState";
+ private final Curator curator;
private final Path appPath;
+ /** The maximum size of a ZooKeeper node */
+ private final int maxNodeSize;
- ZKApplication(ConfigCurator zk, Path appPath) {
- this.zk = zk;
+ ZKApplication(Curator curator, Path appPath, int maxNodeSize) {
+ this.curator = curator;
this.appPath = appPath;
+ this.maxNodeSize = maxNodeSize;
+ }
+
+ ZKApplication(Curator curator, Path appPath) {
+ this(curator, appPath, 10 * 1024 * 1024);
}
/**
@@ -37,7 +55,7 @@ public class ZKApplication {
* @return the files in the given path, or an empty list if the directory does not exist or is empty.
* The list gets owned by the caller and can be modified freely.
*/
- List<NamedReader> getAllDataFromDirectory(String path, String fileNameSuffix, boolean recursive) {
+ List<NamedReader> getAllDataFromDirectory(Path path, String fileNameSuffix, boolean recursive) {
return getAllDataFromDirectory(path, "", fileNameSuffix, recursive);
}
@@ -46,23 +64,22 @@ public class ZKApplication {
*
* @param namePrefix the prefix to prepend to the returned reader names
*/
- private List<NamedReader> getAllDataFromDirectory(String path, String namePrefix, String fileNameSuffix, boolean recursive) {
- String fullPath = getFullPath(path);
+ private List<NamedReader> getAllDataFromDirectory(Path path, String namePrefix, String fileNameSuffix, boolean recursive) {
List<NamedReader> result = new ArrayList<>();
List<String> children = getChildren(path);
try {
for (String child : children) {
if (fileNameSuffix == null || child.endsWith(fileNameSuffix)) {
- result.add(new NamedReader(namePrefix + child, reader(zk.getData(fullPath, child))));
+ result.add(new NamedReader(namePrefix + child, reader(getData(path.append(child)))));
}
if (recursive)
- result.addAll(getAllDataFromDirectory(path + "/" + child,
+ result.addAll(getAllDataFromDirectory(path.append(child),
namePrefix + child + "/", fileNameSuffix, recursive));
}
return result;
} catch (Exception e) {
- throw new RuntimeException("Could not retrieve all data from '" + fullPath + "' in zookeeper", e);
+ throw new RuntimeException("Could not retrieve all data from '" + path + "' in zookeeper", e);
}
}
@@ -70,59 +87,45 @@ public class ZKApplication {
* Retrieves a node relative to the node of the live application
*
* @param path a path relative to the currently active application
- * @param node a path relative to the path above
* @return a Reader that can be used to get the data
*/
- Reader getDataReader(String path, String node) {
- return reader(getData(path, node));
+ Reader getDataReader(Path path) {
+ return reader(getData(path));
}
- public String getData(String path, String node) {
- if ( ! exists(path, node)) throw new IllegalArgumentException("No node for " + getFullPath(path) + "/" + node + " exists");
-
- try {
- return zk.getData(getFullPath(path), node);
- } catch (Exception e) {
- throw new IllegalArgumentException("Could not retrieve node '" +
- getFullPath(path) + "/" + node + "' in zookeeper", e);
- }
+ NamedReader getNamedReader(String name, Path path) {
+ return new NamedReader(name, reader(getData(path)));
}
- public String getData(String path) {
- if ( ! exists(path)) throw new IllegalArgumentException("No node for " + getFullPath(path) + " exists");
+ public String getData(Path path) {
+ return Utf8.toString(getBytesInternal(getFullPath(path)));
+ }
- try {
- return zk.getData(getFullPath(path));
- } catch (RuntimeException e) {
- throw new IllegalArgumentException("Could not retrieve path '" + getFullPath(path) + "' in zookeeper", e);
- }
+ private byte[] getBytesInternal(Path path) {
+ return curator.getData(path)
+ .orElseThrow(() -> new IllegalArgumentException("Could not get data from '" +
+ path + "' in zookeeper"));
}
- public byte[] getBytes(String path) {
- try {
- return zk.getBytes(getFullPath(path));
- } catch (RuntimeException e) {
- throw new IllegalArgumentException("Could not retrieve path '" + getFullPath(path) + "' in zookeeper", e);
- }
+ public byte[] getBytes(Path path) {
+ return getBytesInternal(getFullPath(path));
}
- void putData(String path, String data) {
+ void putData(Path path, String data) {
+ byte[] bytes = Utf8.toBytes(data);
+ ensureDataIsNotTooLarge(bytes, path);
try {
- zk.putData(getFullPath(path), data);
+ curator.set(getFullPath(path), bytes);
} catch (RuntimeException e) {
throw new IllegalArgumentException("Could not put data to node '" + getFullPath(path) + "' in zookeeper", e);
}
}
- /**
- * Checks if the given node exists under path under this live app
- *
- * @param path a zookeeper path
- * @param node a zookeeper node
- * @return true if the node exists in the path, false otherwise
- */
- public boolean exists(String path, String node) {
- return zk.exists(getFullPath(path), node);
+ private void ensureDataIsNotTooLarge(byte[] toPut, Path path) {
+ if (toPut.length >= maxNodeSize) {
+ throw new IllegalArgumentException("Error: too much zookeeper data in node: "
+ + "[" + toPut.length + " bytes] (path " + path + ")");
+ }
}
/**
@@ -131,16 +134,16 @@ public class ZKApplication {
* @param path a zookeeper path
* @return true if the node exists in the path, false otherwise
*/
- public boolean exists(String path) {
- return zk.exists(getFullPath(path));
+ public boolean exists(Path path) {
+ return curator.exists(getFullPath(path));
}
- private String getFullPath(String path) {
+ private Path getFullPath(Path path) {
Path fullPath = appPath;
if (path != null) {
fullPath = appPath.append(path);
}
- return fullPath.getAbsolute();
+ return fullPath;
}
/**
@@ -148,8 +151,8 @@ public class ZKApplication {
*
* @param path path to delete
*/
- void deleteRecurse(String path) {
- zk.deleteRecurse(getFullPath(path));
+ void deleteRecurse(Path path) {
+ curator.delete(getFullPath(path));
}
/**
@@ -158,31 +161,21 @@ public class ZKApplication {
* @param path a path relative to the currently active application
* @return a list of file names, which is empty (never null) if the path does not exist
*/
- public List<String> getChildren(String path) {
- String fullPath = getFullPath(path);
- if (! zk.exists(fullPath)) return Collections.emptyList();
- return zk.getChildren(fullPath);
+ public List<String> getChildren(Path path) {
+ return curator.getChildren(getFullPath(path));
}
private static Reader reader(String string) {
return new StringReader(string);
}
- public void create(String path) {
- if (path != null && !path.startsWith("/")) path = "/" + path;
+ public void create(Path path) {
try {
- zk.createNode(getFullPath(path));
+ curator.create(getFullPath(path));
} catch (RuntimeException e) {
throw new IllegalArgumentException(e);
}
}
- Reader getDataReader(String path) {
- String data = getData(path);
- if (data == null)
- throw new IllegalArgumentException("No node for " + getFullPath(path) + " exists");
- return reader(data);
- }
-
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationFile.java b/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationFile.java
index 674c0f72c40..6bc29331efb 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationFile.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationFile.java
@@ -1,18 +1,27 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.zookeeper;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yahoo.config.application.api.ApplicationFile;
import com.yahoo.path.Path;
import com.yahoo.io.IOUtils;
+
+import java.io.ByteArrayInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.StringWriter;
import java.util.logging.Level;
import com.yahoo.vespa.config.util.ConfigUtils;
-import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
+import static com.yahoo.vespa.config.server.zookeeper.ZKApplication.USERAPP_ZK_SUBPATH;
+
/**
* @author Ulf Lilleengen
* @author Vegard Havdal
@@ -30,7 +39,7 @@ class ZKApplicationFile extends ApplicationFile {
@Override
public boolean isDirectory() {
- String zkPath = getZKPath(path);
+ Path zkPath = getZKPath(path);
if (zkApp.exists(zkPath)) {
String data = zkApp.getData(zkPath);
return data == null || data.isEmpty() || ! zkApp.getChildren(zkPath).isEmpty();
@@ -41,7 +50,7 @@ class ZKApplicationFile extends ApplicationFile {
@Override
public boolean exists() {
try {
- String zkPath = getZKPath(path);
+ Path zkPath = getZKPath(path);
return zkApp.exists(zkPath);
} catch (RuntimeException e) {
return false;
@@ -60,7 +69,7 @@ class ZKApplicationFile extends ApplicationFile {
@Override
public Reader createReader() throws FileNotFoundException {
- String zkPath = getZKPath(path);
+ Path zkPath = getZKPath(path);
if ( ! zkApp.exists(zkPath)) throw new FileNotFoundException("No such path: " + path);
return new StringReader(zkApp.getData(zkPath));
@@ -68,7 +77,7 @@ class ZKApplicationFile extends ApplicationFile {
@Override
public InputStream createInputStream() throws FileNotFoundException {
- String zkPath = getZKPath(path);
+ Path zkPath = getZKPath(path);
if ( ! zkApp.exists(zkPath)) throw new FileNotFoundException("No such path: " + path);
return new ByteArrayInputStream(zkApp.getBytes(zkPath));
@@ -76,7 +85,7 @@ class ZKApplicationFile extends ApplicationFile {
@Override
public ApplicationFile createDirectory() {
- String zkPath = getZKPath(path);
+ Path zkPath = getZKPath(path);
if (isDirectory()) return this;
if (exists()) {
throw new IllegalArgumentException("Unable to create directory, file exists: " + path);
@@ -88,7 +97,7 @@ class ZKApplicationFile extends ApplicationFile {
@Override
public ApplicationFile writeFile(Reader input) {
- String zkPath = getZKPath(path);
+ Path zkPath = getZKPath(path);
try {
String data = IOUtils.readAll(input);
String status = ContentStatusNew;
@@ -105,7 +114,7 @@ class ZKApplicationFile extends ApplicationFile {
@Override
public ApplicationFile appendFile(String value) {
- String zkPath = getZKPath(path);
+ Path zkPath = getZKPath(path);
String status = ContentStatusNew;
if (zkApp.exists(zkPath)) {
status = ContentStatusChanged;
@@ -120,7 +129,7 @@ class ZKApplicationFile extends ApplicationFile {
@Override
public List<ApplicationFile> listFiles(PathFilter filter) {
- String userPath = getZKPath(path);
+ Path userPath = getZKPath(path);
List<ApplicationFile> ret = new ArrayList<>();
for (String zkChild : zkApp.getChildren(userPath)) {
Path childPath = path.append(zkChild);
@@ -132,15 +141,15 @@ class ZKApplicationFile extends ApplicationFile {
return ret;
}
- private static String getZKPath(Path path) {
+ private static Path getZKPath(Path path) {
if (path.isRoot()) {
- return ConfigCurator.USERAPP_ZK_SUBPATH;
+ return Path.fromString(USERAPP_ZK_SUBPATH);
}
- return ConfigCurator.USERAPP_ZK_SUBPATH + "/" + path.getRelative();
+ return Path.fromString(USERAPP_ZK_SUBPATH).append(path);
}
private void writeMetaFile(String input, String status) {
- String metaPath = getZKPath(getMetaPath());
+ Path metaPath = getZKPath(getMetaPath());
StringWriter writer = new StringWriter();
try {
mapper.writeValue(writer, new MetaData(status, input == null ? "" : ConfigUtils.getMd5(input)));
@@ -152,7 +161,7 @@ class ZKApplicationFile extends ApplicationFile {
}
public MetaData getMetaData() {
- String metaPath = getZKPath(getMetaPath());
+ Path metaPath = getZKPath(getMetaPath());
log.log(Level.FINE, () -> "Getting metadata for " + metaPath);
if (!zkApp.exists(getZKPath(path))) {
if (zkApp.exists(metaPath)) {
@@ -167,7 +176,7 @@ class ZKApplicationFile extends ApplicationFile {
return new MetaData(ContentStatusNew, isDirectory() ? "" : ConfigUtils.getMd5(zkApp.getData(getZKPath(path))));
}
- private MetaData getMetaDataFromZk(String metaPath) {
+ private MetaData getMetaDataFromZk(Path metaPath) {
try {
return mapper.readValue(zkApp.getBytes(metaPath), MetaData.class);
} catch (IOException e) {
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackage.java b/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackage.java
index bcb19a8f25a..806b67758c2 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackage.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackage.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.zookeeper;
import com.google.common.base.Joiner;
@@ -10,7 +10,6 @@ import com.yahoo.config.application.api.ComponentInfo;
import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.config.application.api.UnparsedConfigDefinition;
import com.yahoo.config.codegen.DefParser;
-import com.yahoo.config.model.application.provider.PreGeneratedFileRegistry;
import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.serialization.AllocatedHostsSerializer;
@@ -20,18 +19,25 @@ import com.yahoo.path.Path;
import com.yahoo.vespa.config.ConfigDefinition;
import com.yahoo.vespa.config.ConfigDefinitionBuilder;
import com.yahoo.vespa.config.ConfigDefinitionKey;
+import com.yahoo.vespa.config.server.filedistribution.AddFileInterface;
+import com.yahoo.vespa.config.server.filedistribution.FileDBRegistry;
import com.yahoo.vespa.config.util.ConfigUtils;
+import com.yahoo.vespa.curator.Curator;
import java.io.File;
import java.io.Reader;
-import java.io.StringReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
+import java.util.Set;
+
+import static com.yahoo.vespa.config.server.zookeeper.ZKApplication.DEFCONFIGS_ZK_SUBPATH;
+import static com.yahoo.vespa.config.server.zookeeper.ZKApplication.USERAPP_ZK_SUBPATH;
/**
* Represents an application residing in zookeeper.
@@ -42,23 +48,28 @@ public class ZKApplicationPackage implements ApplicationPackage {
private final ZKApplication zkApplication;
- private final Map<Version, PreGeneratedFileRegistry> fileRegistryMap = new HashMap<>();
+ private final Map<Version, FileRegistry> fileRegistryMap = new HashMap<>();
private final Optional<AllocatedHosts> allocatedHosts;
public static final String fileRegistryNode = "fileregistry";
public static final String allocatedHostsNode = "allocatedHosts";
private final ApplicationMetaData metaData;
- public ZKApplicationPackage(ConfigCurator zk, Path sessionPath) {
- verifyAppPath(zk, sessionPath);
- zkApplication = new ZKApplication(zk, sessionPath);
+ public ZKApplicationPackage(AddFileInterface fileManager, Curator curator, Path sessionPath, int maxNodeSize) {
+ verifyAppPath(curator, sessionPath);
+ zkApplication = new ZKApplication(curator, sessionPath, maxNodeSize);
metaData = readMetaDataFromLiveApp(zkApplication);
- importFileRegistries();
+ importFileRegistries(fileManager);
allocatedHosts = importAllocatedHosts();
}
+ // For testing
+ ZKApplicationPackage(AddFileInterface fileManager, Curator curator, Path sessionPath) {
+ this(fileManager, curator, sessionPath, 10 * 1024 * 1024);
+ }
+
private Optional<AllocatedHosts> importAllocatedHosts() {
- if ( ! zkApplication.exists(allocatedHostsNode)) return Optional.empty();
+ if ( ! zkApplication.exists(Path.fromString(allocatedHostsNode))) return Optional.empty();
return Optional.of(readAllocatedHosts());
}
@@ -69,34 +80,34 @@ public class ZKApplicationPackage implements ApplicationPackage {
*/
private AllocatedHosts readAllocatedHosts() {
try {
- return AllocatedHostsSerializer.fromJson(zkApplication.getBytes(allocatedHostsNode));
+ return AllocatedHostsSerializer.fromJson(zkApplication.getBytes(Path.fromString(allocatedHostsNode)));
} catch (Exception e) {
throw new RuntimeException("Unable to read allocated hosts", e);
}
}
- private void importFileRegistries() {
- List<String> perVersionFileRegistryNodes = zkApplication.getChildren(fileRegistryNode);
+ private void importFileRegistries(AddFileInterface fileManager) {
+ List<String> perVersionFileRegistryNodes = zkApplication.getChildren(Path.fromString(fileRegistryNode));
perVersionFileRegistryNodes
- .forEach(version ->
- fileRegistryMap.put(Version.fromString(version),
- importFileRegistry(Joiner.on("/").join(fileRegistryNode, version))));
+ .forEach(version -> fileRegistryMap.put(Version.fromString(version),
+ importFileRegistry(fileManager, Joiner.on("/").join(fileRegistryNode, version))));
}
- private PreGeneratedFileRegistry importFileRegistry(String fileRegistryNode) {
+ private FileRegistry importFileRegistry(AddFileInterface fileManager, String fileRegistryNode) {
try {
- return PreGeneratedFileRegistry.importRegistry(zkApplication.getDataReader(fileRegistryNode));
+ return FileDBRegistry.create(fileManager, zkApplication.getDataReader(Path.fromString(fileRegistryNode)));
} catch (Exception e) {
throw new RuntimeException("Could not determine which files to distribute", e);
}
}
private ApplicationMetaData readMetaDataFromLiveApp(ZKApplication liveApp) {
- String metaDataString = liveApp.getData(ConfigCurator.META_ZK_PATH);
+ Path metaPath = Path.fromString(ZKApplication.META_ZK_PATH);
+ String metaDataString = liveApp.getData(metaPath);
if (metaDataString == null || metaDataString.isEmpty()) {
return null;
}
- return ApplicationMetaData.fromJsonString(liveApp.getData(ConfigCurator.META_ZK_PATH));
+ return ApplicationMetaData.fromJsonString(liveApp.getData(metaPath));
}
@Override
@@ -104,8 +115,8 @@ public class ZKApplicationPackage implements ApplicationPackage {
return metaData;
}
- private static void verifyAppPath(ConfigCurator zk, Path appPath) {
- if (!zk.exists(appPath.getAbsolute()))
+ private static void verifyAppPath(Curator zk, Path appPath) {
+ if (!zk.exists(appPath))
throw new RuntimeException("App with path " + appPath + " does not exist");
}
@@ -125,7 +136,7 @@ public class ZKApplicationPackage implements ApplicationPackage {
@Override
public Reader getHosts() {
- if (zkApplication.exists(ConfigCurator.USERAPP_ZK_SUBPATH, HOSTS))
+ if (zkApplication.exists(Path.fromString(USERAPP_ZK_SUBPATH).append(HOSTS)))
return getUserAppData(HOSTS);
return null;
}
@@ -133,9 +144,9 @@ public class ZKApplicationPackage implements ApplicationPackage {
@Override
public List<NamedReader> getSchemas() {
List<NamedReader> schemas = new ArrayList<>();
- for (String sd : zkApplication.getChildren(ConfigCurator.USERAPP_ZK_SUBPATH + "/" + SCHEMAS_DIR)) {
+ for (String sd : zkApplication.getChildren(Path.fromString(USERAPP_ZK_SUBPATH).append(SCHEMAS_DIR))) {
if (sd.endsWith(SD_NAME_SUFFIX))
- schemas.add(new NamedReader(sd, new StringReader(zkApplication.getData(ConfigCurator.USERAPP_ZK_SUBPATH + "/" + SCHEMAS_DIR, sd))));
+ schemas.add(zkApplication.getNamedReader(sd, Path.fromString(USERAPP_ZK_SUBPATH).append(SCHEMAS_DIR).append(sd)));
}
return schemas;
}
@@ -150,9 +161,9 @@ public class ZKApplicationPackage implements ApplicationPackage {
return Collections.unmodifiableMap(fileRegistryMap);
}
- private Optional<PreGeneratedFileRegistry> getPreGeneratedFileRegistry(Version vespaVersion) {
+ private Optional<FileRegistry> getFileRegistry(Version vespaVersion) {
// Assumes at least one file registry, which we always have.
- Optional<PreGeneratedFileRegistry> fileRegistry = Optional.ofNullable(fileRegistryMap.get(vespaVersion));
+ Optional<FileRegistry> fileRegistry = Optional.ofNullable(fileRegistryMap.get(vespaVersion));
if (fileRegistry.isEmpty()) {
fileRegistry = Optional.of(fileRegistryMap.values().iterator().next());
}
@@ -161,7 +172,7 @@ public class ZKApplicationPackage implements ApplicationPackage {
private Reader retrieveConfigDefReader(String def) {
try {
- return zkApplication.getDataReader(ConfigCurator.DEFCONFIGS_ZK_SUBPATH, def);
+ return zkApplication.getNamedReader("configdefinition", Path.fromString(DEFCONFIGS_ZK_SUBPATH).append(def));
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException("Could not retrieve config definition " + def, e);
}
@@ -171,7 +182,7 @@ public class ZKApplicationPackage implements ApplicationPackage {
public Map<ConfigDefinitionKey, UnparsedConfigDefinition> getAllExistingConfigDefs() {
Map<ConfigDefinitionKey, UnparsedConfigDefinition> ret = new LinkedHashMap<>();
- List<String> allDefs = zkApplication.getChildren(ConfigCurator.DEFCONFIGS_ZK_SUBPATH);
+ List<String> allDefs = zkApplication.getChildren(Path.fromString(DEFCONFIGS_ZK_SUBPATH));
for (String nodeName : allDefs) {
ConfigDefinitionKey key = ConfigUtils.createConfigDefinitionKeyFromZKString(nodeName);
@@ -201,7 +212,7 @@ public class ZKApplicationPackage implements ApplicationPackage {
*/
@Override
public List<NamedReader> getFiles(Path relativePath, String suffix, boolean recurse) {
- return zkApplication.getAllDataFromDirectory(ConfigCurator.USERAPP_ZK_SUBPATH + '/' + relativePath.getRelative(), suffix, recurse);
+ return zkApplication.getAllDataFromDirectory(Path.fromString(USERAPP_ZK_SUBPATH).append(relativePath), suffix, recurse);
}
@Override
@@ -226,17 +237,27 @@ public class ZKApplicationPackage implements ApplicationPackage {
public Optional<Reader> getValidationOverrides() { return optionalFile(VALIDATION_OVERRIDES.getName()); }
private Optional<Reader> optionalFile(String file) {
- if (zkApplication.exists(ConfigCurator.USERAPP_ZK_SUBPATH, file))
+ if (zkApplication.exists(Path.fromString(USERAPP_ZK_SUBPATH).append(file)))
return Optional.of(getUserAppData(file));
else
return Optional.empty();
}
+ private static Set<String> getPaths(FileRegistry fileRegistry) {
+ Set<String> paths = new LinkedHashSet<>();
+ synchronized (fileRegistry) {
+ for (FileRegistry.Entry e : fileRegistry.export()) {
+ paths.add(e.relativePath);
+ }
+ }
+ return paths;
+ }
+
@Override
public List<ComponentInfo> getComponentsInfo(Version vespaVersion) {
List<ComponentInfo> components = new ArrayList<>();
- PreGeneratedFileRegistry fileRegistry = getPreGeneratedFileRegistry(vespaVersion).get();
- for (String path : fileRegistry.getPaths()) {
+ FileRegistry fileRegistry = getFileRegistry(vespaVersion).get();
+ for (String path : getPaths(fileRegistry)) {
if (path.startsWith(COMPONENT_DIR + File.separator) && path.endsWith(".jar")) {
ComponentInfo component = new ComponentInfo(path);
components.add(component);
@@ -246,17 +267,17 @@ public class ZKApplicationPackage implements ApplicationPackage {
}
private Reader getUserAppData(String node) {
- return zkApplication.getDataReader(ConfigCurator.USERAPP_ZK_SUBPATH, node);
+ return zkApplication.getDataReader(Path.fromString(USERAPP_ZK_SUBPATH).append(node));
}
@Override
public Reader getRankingExpression(String name) {
- return zkApplication.getDataReader(ConfigCurator.USERAPP_ZK_SUBPATH + "/" + SCHEMAS_DIR, name);
+ return zkApplication.getDataReader(Path.fromString(USERAPP_ZK_SUBPATH).append(SCHEMAS_DIR).append(name));
}
@Override
public File getFileReference(Path pathRelativeToAppDir) {
- String path = ConfigCurator.USERAPP_ZK_SUBPATH + "/" + pathRelativeToAppDir.getRelative();
+ Path path = Path.fromString(USERAPP_ZK_SUBPATH).append(pathRelativeToAppDir);
// File does not exist: Manufacture a non-existing file
if ( ! zkApplication.exists(path)) return new File(pathRelativeToAppDir.getRelative());
@@ -266,8 +287,8 @@ public class ZKApplicationPackage implements ApplicationPackage {
@Override
public void validateIncludeDir(String dirName) {
- String fullPath = ConfigCurator.USERAPP_ZK_SUBPATH + "/" + dirName;
- if ( ! zkApplication.exists(fullPath)) {
+ Path path = Path.fromString(USERAPP_ZK_SUBPATH).append(dirName);
+ if ( ! zkApplication.exists(path)) {
throw new IllegalArgumentException("Cannot include directory '" + dirName +
"', as it does not exist in ZooKeeper!");
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/package-info.java b/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/package-info.java
index 70671e5dca6..92d776eb706 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/package-info.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Tony Vaagenes
*/
diff --git a/configserver/src/main/java/com/yahoo/vespa/serviceview/Cluster.java b/configserver/src/main/java/com/yahoo/vespa/serviceview/Cluster.java
index 800dca6bc73..7e2a83b6b9a 100644
--- a/configserver/src/main/java/com/yahoo/vespa/serviceview/Cluster.java
+++ b/configserver/src/main/java/com/yahoo/vespa/serviceview/Cluster.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.serviceview;
import java.util.Arrays;
diff --git a/configserver/src/main/java/com/yahoo/vespa/serviceview/ProxyErrorMapper.java b/configserver/src/main/java/com/yahoo/vespa/serviceview/ProxyErrorMapper.java
index 8adf281ced0..545e9b3ddc8 100644
--- a/configserver/src/main/java/com/yahoo/vespa/serviceview/ProxyErrorMapper.java
+++ b/configserver/src/main/java/com/yahoo/vespa/serviceview/ProxyErrorMapper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.serviceview;
import javax.ws.rs.WebApplicationException;
diff --git a/configserver/src/main/java/com/yahoo/vespa/serviceview/Service.java b/configserver/src/main/java/com/yahoo/vespa/serviceview/Service.java
index df1db4f8101..280ae1fa6c1 100644
--- a/configserver/src/main/java/com/yahoo/vespa/serviceview/Service.java
+++ b/configserver/src/main/java/com/yahoo/vespa/serviceview/Service.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.serviceview;
import java.math.BigInteger;
diff --git a/configserver/src/main/java/com/yahoo/vespa/serviceview/ServiceModel.java b/configserver/src/main/java/com/yahoo/vespa/serviceview/ServiceModel.java
index 78811474bcb..f3e327ead32 100644
--- a/configserver/src/main/java/com/yahoo/vespa/serviceview/ServiceModel.java
+++ b/configserver/src/main/java/com/yahoo/vespa/serviceview/ServiceModel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.serviceview;
import java.util.ArrayList;
diff --git a/configserver/src/main/java/com/yahoo/vespa/serviceview/StateRequestHandler.java b/configserver/src/main/java/com/yahoo/vespa/serviceview/StateRequestHandler.java
index 63b9def7448..d81297a87e9 100644
--- a/configserver/src/main/java/com/yahoo/vespa/serviceview/StateRequestHandler.java
+++ b/configserver/src/main/java/com/yahoo/vespa/serviceview/StateRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.serviceview;
import com.google.inject.Inject;
diff --git a/configserver/src/main/java/com/yahoo/vespa/serviceview/package-info.java b/configserver/src/main/java/com/yahoo/vespa/serviceview/package-info.java
index 34e0ee7584c..72cfaf0d05d 100644
--- a/configserver/src/main/java/com/yahoo/vespa/serviceview/package-info.java
+++ b/configserver/src/main/java/com/yahoo/vespa/serviceview/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Home of the centralised service view implementation. The service view is a
* REST API for discovering and accessing the state API for any service in a
diff --git a/configserver/src/main/resources/configserver-app/services.xml b/configserver/src/main/resources/configserver-app/services.xml
index d0e366b11a1..faec1c650f6 100644
--- a/configserver/src/main/resources/configserver-app/services.xml
+++ b/configserver/src/main/resources/configserver-app/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0" xmlns:preprocess="properties">
<container id="configserver" jetty="true" version="1.0">
<config name="container.jdisc.config.health-monitor">
@@ -30,7 +30,6 @@
<component id="com.yahoo.vespa.config.server.host.HostRegistry" bundle="configserver" />
<component id="com.yahoo.vespa.config.server.ApplicationRepository" bundle="configserver" />
<component id="com.yahoo.vespa.config.server.version.VersionState" bundle="configserver" />
- <component id="com.yahoo.vespa.config.server.zookeeper.ConfigCurator" bundle="configserver" />
<component id="com.yahoo.vespa.config.server.host.ConfigRequestHostLivenessTracker" bundle="configserver" />
<component id="com.yahoo.config.provision.Zone" bundle="config-provisioning" />
<component id="com.yahoo.vespa.config.server.application.ConfigConvergenceChecker" bundle="configserver" />
@@ -60,7 +59,9 @@
<component id="com.yahoo.vespa.service.duper.DuperModelManager" bundle="service-monitor" />
<component id="com.yahoo.vespa.orchestrator.status.ZkStatusService" bundle="orchestrator" />
<component id="com.yahoo.vespa.orchestrator.controller.RetryingClusterControllerClientFactory" bundle="orchestrator" />
- <component id="com.yahoo.vespa.orchestrator.OrchestratorImpl" bundle="orchestrator" />
+ <component id="com.yahoo.vespa.orchestrator.OrchestratorImpl" bundle="orchestrator">
+ <preprocess:include file="orchestrator-config.xml" required="false" />
+ </component>
<handler id="com.yahoo.vespa.orchestrator.resources.ApplicationSuspensionRequestHandler" bundle="orchestrator">
<binding>http://*/orchestrator/v1/suspensions/applications</binding>
@@ -156,5 +157,6 @@
<preprocess:include file='configserver-components.xml' required='false' />
<preprocess:include file='zookeeper-server-config.xml' required='false' />
+
</container>
</services>
diff --git a/configserver/src/main/sh/start-configserver b/configserver/src/main/sh/start-configserver
index f9eb5e3a0a5..b3b449fb5a1 100755
--- a/configserver/src/main/sh/start-configserver
+++ b/configserver/src/main/sh/start-configserver
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
@@ -188,7 +188,6 @@ vespa-run-as-vespa-user vespa-runserver -s configserver -r 30 -p $pidfile -- \
-Djdisc.config.file=$cfpfile \
-Djdisc.export.packages= \
-Djdisc.cache.path=$bundlecachedir \
- -Djdisc.debug.resources=false \
-Djdisc.bundle.path=${VESPA_HOME}/lib/jars \
-Djdisc.logger.enabled=true \
-Djdisc.logger.level=ALL \
diff --git a/configserver/src/main/sh/start-logd b/configserver/src/main/sh/start-logd
index 1148affeb86..47d62aae3a8 100644
--- a/configserver/src/main/sh/start-logd
+++ b/configserver/src/main/sh/start-logd
@@ -1,5 +1,5 @@
#! /bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/configserver/src/main/sh/stop-configserver b/configserver/src/main/sh/stop-configserver
index ed415714592..ae03a8b1b39 100755
--- a/configserver/src/main/sh/stop-configserver
+++ b/configserver/src/main/sh/stop-configserver
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/configserver/src/main/sh/vespa-configserver-remove-state b/configserver/src/main/sh/vespa-configserver-remove-state
index a2d7706ab05..466a68522ca 100755
--- a/configserver/src/main/sh/vespa-configserver-remove-state
+++ b/configserver/src/main/sh/vespa-configserver-remove-state
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
@@ -79,13 +79,13 @@ cd $ROOT || { echo "Cannot cd to $ROOT" 1>&2; exit 1; }
usage() {
(
- echo "This script will remove cloudconfig_server state on this node."
- echo "It will refuse to execute if cloudconfig_server is running."
+ echo "This script will remove config server state on this node."
+ echo "It will refuse to execute if config server is running."
echo "The following options are recognized:"
echo ""
echo "-h|-help) print this help text"
- echo "-nosudo do not use sudo when running command"
+ echo "-nosudo do not use sudo when running command (default)"
echo "-sudo use sudo when running command"
echo "-force do not ask for confirmation before removal"
) >&2
@@ -112,11 +112,11 @@ while [ $# -gt 0 ]; do
*) echo "Unrecognized option '$1'" >&2; usage; exit 1;;
esac
done
-# Will first check if cloudconfig_server is running on this node
+# Will first check if config server is running on this node
P_CONFIGSERVER=var/run/configserver.pid
if [ -f $P_CONFIGSERVER ] && $sudo kill -0 `cat $P_CONFIGSERVER` 2>/dev/null; then
- echo "[ERROR] Will not remove state while cloudconfig_server is running" 1>&2
- echo "[ERROR] 'stop cloudconfig_server' and 'ps xgauww' to check for cloudconfig_server process" 1>&2
+ echo "[ERROR] Will not remove state while config server is running" 1>&2
+ echo "[ERROR] Do 'vespa-stop-configserver' and 'ps xgauww' to check for running config server process" 1>&2
exit 1
fi
@@ -128,7 +128,7 @@ removedata() {
confirm() {
confirmed=false
- echo -n 'Really remove state for cloudconfig_server in '$ROOT/$1'? Type "yes" if you are sure ==> ' 1>&2
+ echo -n 'Really remove state for config server in '$ROOT/$1'? Type "yes" if you are sure ==> ' 1>&2
answer=no
read answer
if [ "$answer" = "yes" ]; then
diff --git a/configserver/src/test/apps/app-jdisc-only-restart/hosts.xml b/configserver/src/test/apps/app-jdisc-only-restart/hosts.xml
index ab70b288ba6..cd1e17f3b6f 100644
--- a/configserver/src/test/apps/app-jdisc-only-restart/hosts.xml
+++ b/configserver/src/test/apps/app-jdisc-only-restart/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="mytesthost2">
<alias>node1</alias>
diff --git a/configserver/src/test/apps/app-jdisc-only-restart/schemas/music.sd b/configserver/src/test/apps/app-jdisc-only-restart/schemas/music.sd
index a2d4614c657..a45c62ccdc7 100644
--- a/configserver/src/test/apps/app-jdisc-only-restart/schemas/music.sd
+++ b/configserver/src/test/apps/app-jdisc-only-restart/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# A basic search definition - called music, should be saved to music.sd
search music {
diff --git a/configserver/src/test/apps/app-jdisc-only-restart/services.xml b/configserver/src/test/apps/app-jdisc-only-restart/services.xml
index 5af96111f25..f41f044b7ab 100644
--- a/configserver/src/test/apps/app-jdisc-only-restart/services.xml
+++ b/configserver/src/test/apps/app-jdisc-only-restart/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/configserver/src/test/apps/app-jdisc-only/hosts.xml b/configserver/src/test/apps/app-jdisc-only/hosts.xml
index ab70b288ba6..cd1e17f3b6f 100644
--- a/configserver/src/test/apps/app-jdisc-only/hosts.xml
+++ b/configserver/src/test/apps/app-jdisc-only/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="mytesthost2">
<alias>node1</alias>
diff --git a/configserver/src/test/apps/app-jdisc-only/schemas/music.sd b/configserver/src/test/apps/app-jdisc-only/schemas/music.sd
index a2d4614c657..a45c62ccdc7 100644
--- a/configserver/src/test/apps/app-jdisc-only/schemas/music.sd
+++ b/configserver/src/test/apps/app-jdisc-only/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# A basic search definition - called music, should be saved to music.sd
search music {
diff --git a/configserver/src/test/apps/app-jdisc-only/services.xml b/configserver/src/test/apps/app-jdisc-only/services.xml
index 92a2c0d249e..4cb922dece5 100644
--- a/configserver/src/test/apps/app-jdisc-only/services.xml
+++ b/configserver/src/test/apps/app-jdisc-only/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<container version="1.0">
diff --git a/configserver/src/test/apps/app-logserver-with-container/hosts.xml b/configserver/src/test/apps/app-logserver-with-container/hosts.xml
index d5a51f050fd..4b4f607ea95 100644
--- a/configserver/src/test/apps/app-logserver-with-container/hosts.xml
+++ b/configserver/src/test/apps/app-logserver-with-container/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/configserver/src/test/apps/app-logserver-with-container/services.xml b/configserver/src/test/apps/app-logserver-with-container/services.xml
index 3b88fc3879d..1304a2c17c8 100644
--- a/configserver/src/test/apps/app-logserver-with-container/services.xml
+++ b/configserver/src/test/apps/app-logserver-with-container/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/configserver/src/test/apps/app-major-version-2/deployment.xml b/configserver/src/test/apps/app-major-version-2/deployment.xml
index 1a3b4b35e9c..6d95ca8a16c 100644
--- a/configserver/src/test/apps/app-major-version-2/deployment.xml
+++ b/configserver/src/test/apps/app-major-version-2/deployment.xml
@@ -1,2 +1,2 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<deployment version='1.0' major-version='2'/>
diff --git a/configserver/src/test/apps/app-major-version-2/hosts.xml b/configserver/src/test/apps/app-major-version-2/hosts.xml
index f4256c9fc81..a515a4e97da 100644
--- a/configserver/src/test/apps/app-major-version-2/hosts.xml
+++ b/configserver/src/test/apps/app-major-version-2/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="mytesthost">
<alias>node1</alias>
diff --git a/configserver/src/test/apps/app-major-version-2/schemas/music.sd b/configserver/src/test/apps/app-major-version-2/schemas/music.sd
index 7670e78f22b..f4b11d1e8e4 100644
--- a/configserver/src/test/apps/app-major-version-2/schemas/music.sd
+++ b/configserver/src/test/apps/app-major-version-2/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# A basic search definition - called music, should be saved to music.sd
search music {
diff --git a/configserver/src/test/apps/app-major-version-2/services.xml b/configserver/src/test/apps/app-major-version-2/services.xml
index 509d7786be0..5b80c10dee2 100644
--- a/configserver/src/test/apps/app-major-version-2/services.xml
+++ b/configserver/src/test/apps/app-major-version-2/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/configserver/src/test/apps/app-with-multiple-clusters/hosts.xml b/configserver/src/test/apps/app-with-multiple-clusters/hosts.xml
index f4256c9fc81..a515a4e97da 100644
--- a/configserver/src/test/apps/app-with-multiple-clusters/hosts.xml
+++ b/configserver/src/test/apps/app-with-multiple-clusters/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="mytesthost">
<alias>node1</alias>
diff --git a/configserver/src/test/apps/app-with-multiple-clusters/schemas/bar.sd b/configserver/src/test/apps/app-with-multiple-clusters/schemas/bar.sd
index b66695b17df..913ad467fdb 100644
--- a/configserver/src/test/apps/app-with-multiple-clusters/schemas/bar.sd
+++ b/configserver/src/test/apps/app-with-multiple-clusters/schemas/bar.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search bar {
field zoo type string {
diff --git a/configserver/src/test/apps/app-with-multiple-clusters/schemas/bax.sd b/configserver/src/test/apps/app-with-multiple-clusters/schemas/bax.sd
index f9f6aba766e..3ac77803faa 100644
--- a/configserver/src/test/apps/app-with-multiple-clusters/schemas/bax.sd
+++ b/configserver/src/test/apps/app-with-multiple-clusters/schemas/bax.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search bax {
document bax {
diff --git a/configserver/src/test/apps/app-with-multiple-clusters/schemas/baz.sd b/configserver/src/test/apps/app-with-multiple-clusters/schemas/baz.sd
index 58f0aa16fd0..1c9f4ef6718 100644
--- a/configserver/src/test/apps/app-with-multiple-clusters/schemas/baz.sd
+++ b/configserver/src/test/apps/app-with-multiple-clusters/schemas/baz.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search baz {
document baz {
diff --git a/configserver/src/test/apps/app-with-multiple-clusters/services.xml b/configserver/src/test/apps/app-with-multiple-clusters/services.xml
index 3daf39e34aa..40bffd0aa90 100644
--- a/configserver/src/test/apps/app-with-multiple-clusters/services.xml
+++ b/configserver/src/test/apps/app-with-multiple-clusters/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<content id="foo" version="1.0">
diff --git a/configserver/src/test/apps/app/hosts.xml b/configserver/src/test/apps/app/hosts.xml
index f4256c9fc81..a515a4e97da 100644
--- a/configserver/src/test/apps/app/hosts.xml
+++ b/configserver/src/test/apps/app/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="mytesthost">
<alias>node1</alias>
diff --git a/configserver/src/test/apps/app/schemas/music.sd b/configserver/src/test/apps/app/schemas/music.sd
index 7670e78f22b..f4b11d1e8e4 100644
--- a/configserver/src/test/apps/app/schemas/music.sd
+++ b/configserver/src/test/apps/app/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# A basic search definition - called music, should be saved to music.sd
search music {
diff --git a/configserver/src/test/apps/app/services.xml b/configserver/src/test/apps/app/services.xml
index 509d7786be0..5b80c10dee2 100644
--- a/configserver/src/test/apps/app/services.xml
+++ b/configserver/src/test/apps/app/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/configserver/src/test/apps/app_sdbundles/hosts.xml b/configserver/src/test/apps/app_sdbundles/hosts.xml
index 9cbdd000786..b7ff748cbdc 100644
--- a/configserver/src/test/apps/app_sdbundles/hosts.xml
+++ b/configserver/src/test/apps/app_sdbundles/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/configserver/src/test/apps/app_sdbundles/services.xml b/configserver/src/test/apps/app_sdbundles/services.xml
index 29c736fb41b..1792e30528a 100644
--- a/configserver/src/test/apps/app_sdbundles/services.xml
+++ b/configserver/src/test/apps/app_sdbundles/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/configserver/src/test/apps/content/schemas/music.sd b/configserver/src/test/apps/content/schemas/music.sd
index 7670e78f22b..f4b11d1e8e4 100644
--- a/configserver/src/test/apps/content/schemas/music.sd
+++ b/configserver/src/test/apps/content/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# A basic search definition - called music, should be saved to music.sd
search music {
diff --git a/configserver/src/test/apps/content/services.xml b/configserver/src/test/apps/content/services.xml
index 509d7786be0..5b80c10dee2 100644
--- a/configserver/src/test/apps/content/services.xml
+++ b/configserver/src/test/apps/content/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/configserver/src/test/apps/content2/schemas/music.sd b/configserver/src/test/apps/content2/schemas/music.sd
index 7670e78f22b..f4b11d1e8e4 100644
--- a/configserver/src/test/apps/content2/schemas/music.sd
+++ b/configserver/src/test/apps/content2/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# A basic search definition - called music, should be saved to music.sd
search music {
diff --git a/configserver/src/test/apps/content2/services.xml b/configserver/src/test/apps/content2/services.xml
index 509d7786be0..5b80c10dee2 100644
--- a/configserver/src/test/apps/content2/services.xml
+++ b/configserver/src/test/apps/content2/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/configserver/src/test/apps/cs1/hosts.xml b/configserver/src/test/apps/cs1/hosts.xml
index 71c225ee29c..0442ffbfa22 100644
--- a/configserver/src/test/apps/cs1/hosts.xml
+++ b/configserver/src/test/apps/cs1/hosts.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="mytesthost">
<alias>node0</alias>
diff --git a/configserver/src/test/apps/cs1/services.xml b/configserver/src/test/apps/cs1/services.xml
index fd476665e8d..c7204fe6e3f 100644
--- a/configserver/src/test/apps/cs1/services.xml
+++ b/configserver/src/test/apps/cs1/services.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<config name="config.simpletypes">
<intval>1337</intval>
diff --git a/configserver/src/test/apps/cs2/hosts.xml b/configserver/src/test/apps/cs2/hosts.xml
index 78545cff5be..e6874972e55 100644
--- a/configserver/src/test/apps/cs2/hosts.xml
+++ b/configserver/src/test/apps/cs2/hosts.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="mytesthost2">
<alias>node0</alias>
diff --git a/configserver/src/test/apps/cs2/services.xml b/configserver/src/test/apps/cs2/services.xml
index 0fcd0fc4cd3..2b2bf78a39b 100644
--- a/configserver/src/test/apps/cs2/services.xml
+++ b/configserver/src/test/apps/cs2/services.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<config name="config.simpletypes">
<intval>1330</intval>
diff --git a/configserver/src/test/apps/deprecated-features-app/hosts.xml b/configserver/src/test/apps/deprecated-features-app/hosts.xml
index f4256c9fc81..a515a4e97da 100644
--- a/configserver/src/test/apps/deprecated-features-app/hosts.xml
+++ b/configserver/src/test/apps/deprecated-features-app/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="mytesthost">
<alias>node1</alias>
diff --git a/configserver/src/test/apps/deprecated-features-app/searchdefinitions/music.sd b/configserver/src/test/apps/deprecated-features-app/searchdefinitions/music.sd
index a2d4614c657..a45c62ccdc7 100644
--- a/configserver/src/test/apps/deprecated-features-app/searchdefinitions/music.sd
+++ b/configserver/src/test/apps/deprecated-features-app/searchdefinitions/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# A basic search definition - called music, should be saved to music.sd
search music {
diff --git a/configserver/src/test/apps/deprecated-features-app/services.xml b/configserver/src/test/apps/deprecated-features-app/services.xml
index 509d7786be0..5b80c10dee2 100644
--- a/configserver/src/test/apps/deprecated-features-app/services.xml
+++ b/configserver/src/test/apps/deprecated-features-app/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/configserver/src/test/apps/hosted-no-write-access-control/schemas/music.sd b/configserver/src/test/apps/hosted-no-write-access-control/schemas/music.sd
index 78d58b27d4a..cb4b860e019 100644
--- a/configserver/src/test/apps/hosted-no-write-access-control/schemas/music.sd
+++ b/configserver/src/test/apps/hosted-no-write-access-control/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music {
field title type string {
diff --git a/configserver/src/test/apps/hosted-no-write-access-control/services.xml b/configserver/src/test/apps/hosted-no-write-access-control/services.xml
index 429995c03a4..9b36f71179b 100644
--- a/configserver/src/test/apps/hosted-no-write-access-control/services.xml
+++ b/configserver/src/test/apps/hosted-no-write-access-control/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="3.0">
diff --git a/configserver/src/test/apps/hosted-routing-app/services.xml b/configserver/src/test/apps/hosted-routing-app/services.xml
index 603d6d97ec8..17222cc0c8d 100644
--- a/configserver/src/test/apps/hosted-routing-app/services.xml
+++ b/configserver/src/test/apps/hosted-routing-app/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="3.0">
diff --git a/configserver/src/test/apps/hosted/schemas/music.sd b/configserver/src/test/apps/hosted/schemas/music.sd
index 78d58b27d4a..cb4b860e019 100644
--- a/configserver/src/test/apps/hosted/schemas/music.sd
+++ b/configserver/src/test/apps/hosted/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music {
field title type string {
diff --git a/configserver/src/test/apps/hosted/services.xml b/configserver/src/test/apps/hosted/services.xml
index 456a41c6994..badd5f93c27 100644
--- a/configserver/src/test/apps/hosted/services.xml
+++ b/configserver/src/test/apps/hosted/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="3.0">
diff --git a/configserver/src/test/apps/illegalApp/services.xml b/configserver/src/test/apps/illegalApp/services.xml
index 9292140faa7..20833c9ac38 100644
--- a/configserver/src/test/apps/illegalApp/services.xml
+++ b/configserver/src/test/apps/illegalApp/services.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
<adminserver />
diff --git a/configserver/src/test/apps/legalApp/services.xml b/configserver/src/test/apps/legalApp/services.xml
index 825c84d8111..68cc6df72de 100644
--- a/configserver/src/test/apps/legalApp/services.xml
+++ b/configserver/src/test/apps/legalApp/services.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
<adminserver />
diff --git a/configserver/src/test/apps/serverdb/serverdefs/config.attributes.def b/configserver/src/test/apps/serverdb/serverdefs/config.attributes.def
index 89671b57046..923ae827bee 100644
--- a/configserver/src/test/apps/serverdb/serverdefs/config.attributes.def
+++ b/configserver/src/test/apps/serverdb/serverdefs/config.attributes.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config
attribute[].name string
attribute[].datatype string
diff --git a/configserver/src/test/apps/validationOverride/services.xml b/configserver/src/test/apps/validationOverride/services.xml
index 42a1a68ccdb..87e34377415 100644
--- a/configserver/src/test/apps/validationOverride/services.xml
+++ b/configserver/src/test/apps/validationOverride/services.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<container version="1.0">
<http>
<filtering>
diff --git a/configserver/src/test/apps/validationOverride/validation-overrides.xml b/configserver/src/test/apps/validationOverride/validation-overrides.xml
index 0c8ecc14f31..0ef9ebeaf08 100644
--- a/configserver/src/test/apps/validationOverride/validation-overrides.xml
+++ b/configserver/src/test/apps/validationOverride/validation-overrides.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<validation-overrides>
<allow until="2016-10-10">skip-old-config-models</allow>
</validation-overrides>
diff --git a/configserver/src/test/apps/zkapp/deployment.xml b/configserver/src/test/apps/zkapp/deployment.xml
index 2944b8220f3..c8b60f3aa8b 100644
--- a/configserver/src/test/apps/zkapp/deployment.xml
+++ b/configserver/src/test/apps/zkapp/deployment.xml
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<deployment version='1.0'>
<test/>
<prod global-service-id='mydisc'>
diff --git a/configserver/src/test/apps/zkapp/hosts.xml b/configserver/src/test/apps/zkapp/hosts.xml
index 9cbdd000786..b7ff748cbdc 100644
--- a/configserver/src/test/apps/zkapp/hosts.xml
+++ b/configserver/src/test/apps/zkapp/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/configserver/src/test/apps/zkapp/schemas/laptop.sd b/configserver/src/test/apps/zkapp/schemas/laptop.sd
index 21a76ad605c..f4f3f0a3fa1 100644
--- a/configserver/src/test/apps/zkapp/schemas/laptop.sd
+++ b/configserver/src/test/apps/zkapp/schemas/laptop.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search laptop {
document laptop inherits product {
diff --git a/configserver/src/test/apps/zkapp/schemas/music.sd b/configserver/src/test/apps/zkapp/schemas/music.sd
index bdf4c060cf7..7616e2370b4 100644
--- a/configserver/src/test/apps/zkapp/schemas/music.sd
+++ b/configserver/src/test/apps/zkapp/schemas/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# A basic search definition - called music, should be saved to music.sd
search music {
diff --git a/configserver/src/test/apps/zkapp/schemas/pc.sd b/configserver/src/test/apps/zkapp/schemas/pc.sd
index bdc90328cdb..bc83d2423f3 100644
--- a/configserver/src/test/apps/zkapp/schemas/pc.sd
+++ b/configserver/src/test/apps/zkapp/schemas/pc.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search pc {
document pc inherits product {
diff --git a/configserver/src/test/apps/zkapp/schemas/product.sd b/configserver/src/test/apps/zkapp/schemas/product.sd
index 588a1d544c6..132ae15053f 100644
--- a/configserver/src/test/apps/zkapp/schemas/product.sd
+++ b/configserver/src/test/apps/zkapp/schemas/product.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
document product {
field title type string {
diff --git a/configserver/src/test/apps/zkapp/schemas/sock.sd b/configserver/src/test/apps/zkapp/schemas/sock.sd
index 9331c0caf54..f62ddba9c0a 100644
--- a/configserver/src/test/apps/zkapp/schemas/sock.sd
+++ b/configserver/src/test/apps/zkapp/schemas/sock.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search sock {
document sock inherits product {
diff --git a/configserver/src/test/apps/zkapp/services.xml b/configserver/src/test/apps/zkapp/services.xml
index 037c8e75677..779a1b6a6cc 100644
--- a/configserver/src/test/apps/zkapp/services.xml
+++ b/configserver/src/test/apps/zkapp/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/configserver/src/test/apps/zkfeed/configdefinitions/a.b.a.b.test2.def b/configserver/src/test/apps/zkfeed/configdefinitions/a.b.a.b.test2.def
index d8a34c6dd66..d8ce8b9875a 100644
--- a/configserver/src/test/apps/zkfeed/configdefinitions/a.b.a.b.test2.def
+++ b/configserver/src/test/apps/zkfeed/configdefinitions/a.b.a.b.test2.def
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=a.b
test2 string default=""
diff --git a/configserver/src/test/apps/zkfeed/dir1/default.xml b/configserver/src/test/apps/zkfeed/dir1/default.xml
index 57d9b3f650b..f466c724b98 100644
--- a/configserver/src/test/apps/zkfeed/dir1/default.xml
+++ b/configserver/src/test/apps/zkfeed/dir1/default.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<search>
<chain id="default">
<searcher id="com.yahoo.search.example.SimpleSearcher" bundle="mybundle"/>
diff --git a/configserver/src/test/apps/zkfeed/hosts.xml b/configserver/src/test/apps/zkfeed/hosts.xml
index 9cbdd000786..b7ff748cbdc 100644
--- a/configserver/src/test/apps/zkfeed/hosts.xml
+++ b/configserver/src/test/apps/zkfeed/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/configserver/src/test/apps/zkfeed/nested/dir2/chain2.xml b/configserver/src/test/apps/zkfeed/nested/dir2/chain2.xml
index c1e8320c5e7..bfd9409aab4 100644
--- a/configserver/src/test/apps/zkfeed/nested/dir2/chain2.xml
+++ b/configserver/src/test/apps/zkfeed/nested/dir2/chain2.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<search>
<searcher class="com.yahoo.search.example.SimpleSearcher" id="s1" bundle="mybundle"/>
<chain id="chain2">
diff --git a/configserver/src/test/apps/zkfeed/nested/dir2/chain3.xml b/configserver/src/test/apps/zkfeed/nested/dir2/chain3.xml
index ba6755a454a..de7b52f2ff6 100644
--- a/configserver/src/test/apps/zkfeed/nested/dir2/chain3.xml
+++ b/configserver/src/test/apps/zkfeed/nested/dir2/chain3.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<search>
<chain id="chain3_1">
<searcher id="com.yahoo.search.example.SimpleSearcher" bundle="mybundle"/>
diff --git a/configserver/src/test/apps/zkfeed/schemas/laptop.sd b/configserver/src/test/apps/zkfeed/schemas/laptop.sd
index 21a76ad605c..f4f3f0a3fa1 100644
--- a/configserver/src/test/apps/zkfeed/schemas/laptop.sd
+++ b/configserver/src/test/apps/zkfeed/schemas/laptop.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search laptop {
document laptop inherits product {
diff --git a/configserver/src/test/apps/zkfeed/schemas/pc.sd b/configserver/src/test/apps/zkfeed/schemas/pc.sd
index bdc90328cdb..bc83d2423f3 100644
--- a/configserver/src/test/apps/zkfeed/schemas/pc.sd
+++ b/configserver/src/test/apps/zkfeed/schemas/pc.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search pc {
document pc inherits product {
diff --git a/configserver/src/test/apps/zkfeed/schemas/product.sd b/configserver/src/test/apps/zkfeed/schemas/product.sd
index 588a1d544c6..132ae15053f 100644
--- a/configserver/src/test/apps/zkfeed/schemas/product.sd
+++ b/configserver/src/test/apps/zkfeed/schemas/product.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
document product {
field title type string {
diff --git a/configserver/src/test/apps/zkfeed/schemas/sock.sd b/configserver/src/test/apps/zkfeed/schemas/sock.sd
index 9331c0caf54..f62ddba9c0a 100644
--- a/configserver/src/test/apps/zkfeed/schemas/sock.sd
+++ b/configserver/src/test/apps/zkfeed/schemas/sock.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search sock {
document sock inherits product {
diff --git a/configserver/src/test/apps/zkfeed/search/chains/dir1/default.xml b/configserver/src/test/apps/zkfeed/search/chains/dir1/default.xml
index a113addfb33..60451b2de2f 100644
--- a/configserver/src/test/apps/zkfeed/search/chains/dir1/default.xml
+++ b/configserver/src/test/apps/zkfeed/search/chains/dir1/default.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<searchchains>
<searchchain id="default">
<searcher id="com.yahoo.search.example.SimpleSearcher" bundle="mybundle"/>
diff --git a/configserver/src/test/apps/zkfeed/search/chains/dir2/chain2.xml b/configserver/src/test/apps/zkfeed/search/chains/dir2/chain2.xml
index be5c69c4df7..ec87a67f1ac 100644
--- a/configserver/src/test/apps/zkfeed/search/chains/dir2/chain2.xml
+++ b/configserver/src/test/apps/zkfeed/search/chains/dir2/chain2.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<searchchains>
<searcher class="com.yahoo.search.example.SimpleSearcher" id="s1" bundle="mybundle"/>
<searchchain id="chain2">
diff --git a/configserver/src/test/apps/zkfeed/search/chains/dir2/chain3.xml b/configserver/src/test/apps/zkfeed/search/chains/dir2/chain3.xml
index 16b66da563a..20f277788c6 100644
--- a/configserver/src/test/apps/zkfeed/search/chains/dir2/chain3.xml
+++ b/configserver/src/test/apps/zkfeed/search/chains/dir2/chain3.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<searchchains>
<searchchain id="chain3_1">
<searcher id="com.yahoo.search.example.SimpleSearcher" bundle="mybundle"/>
diff --git a/configserver/src/test/apps/zkfeed/services.xml b/configserver/src/test/apps/zkfeed/services.xml
index 243d4e15d57..b277f8eede7 100644
--- a/configserver/src/test/apps/zkfeed/services.xml
+++ b/configserver/src/test/apps/zkfeed/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
index 934440f03d1..28d50a5396e 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.cloud.config.ConfigserverConfig;
@@ -7,7 +7,6 @@ import com.yahoo.config.ConfigInstance;
import com.yahoo.config.SimpletypesConfig;
import com.yahoo.config.application.api.ApplicationMetaData;
import com.yahoo.config.model.NullConfigModelRegistry;
-import com.yahoo.config.model.api.ApplicationRoles;
import com.yahoo.config.model.application.provider.FilesApplicationPackage;
import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.config.provision.ApplicationId;
@@ -21,11 +20,13 @@ import com.yahoo.config.provision.TenantName;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.io.IOUtils;
import com.yahoo.jdisc.Metric;
+import com.yahoo.path.Path;
import com.yahoo.test.ManualClock;
import com.yahoo.text.Utf8;
import com.yahoo.vespa.config.ConfigKey;
import com.yahoo.vespa.config.ConfigPayload;
import com.yahoo.vespa.config.GetConfigRequest;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.vespa.config.protocol.ConfigResponse;
import com.yahoo.vespa.config.protocol.DefContent;
import com.yahoo.vespa.config.protocol.VespaVersion;
@@ -39,11 +40,9 @@ import com.yahoo.vespa.config.server.session.PrepareParams;
import com.yahoo.vespa.config.server.session.Session;
import com.yahoo.vespa.config.server.session.SessionRepository;
import com.yahoo.vespa.config.server.session.SessionZooKeeperClient;
-import com.yahoo.vespa.config.server.tenant.ApplicationRolesStore;
import com.yahoo.vespa.config.server.tenant.Tenant;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
import com.yahoo.vespa.config.server.tenant.TestTenantRepository;
-import com.yahoo.vespa.config.server.zookeeper.ConfigCurator;
import com.yahoo.vespa.config.util.ConfigUtils;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.mock.MockCurator;
@@ -104,7 +103,6 @@ public class ApplicationRepositoryTest {
private OrchestratorMock orchestrator;
private TimeoutBudget timeoutBudget;
private Curator curator;
- private ConfigCurator configCurator;
@Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();
@@ -115,7 +113,6 @@ public class ApplicationRepositoryTest {
@Before
public void setup() throws IOException {
curator = new MockCurator();
- configCurator = ConfigCurator.create(curator);
ConfigserverConfig configserverConfig = new ConfigserverConfig.Builder()
.payloadCompressionType(ConfigserverConfig.PayloadCompressionType.Enum.UNCOMPRESSED)
.configServerDBDir(temporaryFolder.newFolder().getAbsolutePath())
@@ -331,8 +328,8 @@ public class ApplicationRepositoryTest {
assertNotNull(applicationData.getApplicationId());
assertNotNull(sessionRepository.getLocalSession(sessionId));
assertNotNull(applicationRepository.getActiveSession(applicationId()));
- String sessionNode = sessionRepository.getSessionPath(sessionId).getAbsolute();
- assertTrue(configCurator.exists(sessionNode));
+ Path sessionNode = sessionRepository.getSessionPath(sessionId);
+ assertTrue(curator.exists(sessionNode));
TenantFileSystemDirs tenantFileSystemDirs = tenant.getApplicationRepo().getTenantFileSystemDirs();
File sessionFile = new File(tenantFileSystemDirs.sessionsPath(), String.valueOf(sessionId));
assertTrue(sessionFile.exists());
@@ -344,8 +341,8 @@ public class ApplicationRepositoryTest {
assertTrue(provisioner.removed());
assertEquals(tenant.getName(), provisioner.lastApplicationId().tenant());
assertEquals(applicationId(), provisioner.lastApplicationId());
- assertTrue(configCurator.exists(sessionNode));
- assertEquals(Session.Status.DELETE.name(), configCurator.getData(sessionNode + "/sessionState"));
+ assertTrue(curator.exists(sessionNode));
+ assertEquals(Session.Status.DELETE.name(), Utf8.toString(curator.getData(sessionNode.append("sessionState")).get()));
assertTrue(sessionFile.exists());
assertFalse(applicationRepository.delete(applicationId()));
@@ -395,8 +392,8 @@ public class ApplicationRepositoryTest {
assertTrue(applicationRepository.delete(applicationId()));
// Session should be in state DELETE
- String sessionNode = sessionRepository.getSessionPath(sessionId).getAbsolute();
- assertEquals(Session.Status.DELETE.name(), configCurator.getData(sessionNode + "/sessionState"));
+ Path sessionNode = sessionRepository.getSessionPath(sessionId);
+ assertEquals(Session.Status.DELETE.name(), Utf8.toString(curator.getData(sessionNode.append("sessionState")).get()));
assertNotNull(sessionRepository.getRemoteSession(sessionId)); // session still exists
assertNull(applicationRepository.getActiveSession(applicationId())); // but it is not active
try {
@@ -418,7 +415,7 @@ public class ApplicationRepositoryTest {
.fileReferencesDir(temporaryFolder.newFolder("filedistribution").getAbsolutePath())
.sessionLifetime(60));
DeployTester tester = new DeployTester.Builder().configserverConfig(configserverConfig).clock(clock).build();
- tester.deployApp("src/test/apps/app", clock.instant()); // session 2 (numbering starts at 2)
+ tester.deployApp("src/test/apps/app"); // session 2 (numbering starts at 2)
clock.advance(Duration.ofSeconds(10));
Optional<Deployment> deployment2 = tester.redeployFromLocalActive();
@@ -467,21 +464,29 @@ public class ApplicationRepositoryTest {
// Create a local session without any data in zookeeper (corner case seen in production occasionally)
// and check that expiring local sessions still work
int sessionId = 6;
- Files.createDirectory(new TenantFileSystemDirs(serverdb, tenant1).getUserApplicationDir(sessionId).toPath());
+ TenantName tenantName = tester.tenant().getName();
+ Files.createDirectory(new TenantFileSystemDirs(serverdb, tenantName).getUserApplicationDir(sessionId).toPath());
LocalSession localSession2 = new LocalSession(tenant1,
sessionId,
FilesApplicationPackage.fromFile(testApp),
new SessionZooKeeperClient(curator,
- configCurator,
- tenant1,
+ tenantName,
sessionId,
ConfigUtils.getCanonicalHostName()));
sessionRepository.addLocalSession(localSession2);
assertEquals(2, sessionRepository.getLocalSessions().size());
+ // Create a session, set status to UNKNOWN, we don't want to expire those (creation time is then EPOCH,
+ // so will be candidate for expiry)
+ Session session = sessionRepository.createRemoteSession(7);
+ sessionRepository.createSetStatusTransaction(session, Session.Status.UNKNOWN);
+
+ sessionRepository.addLocalSession(localSession2);
+ assertEquals(2, sessionRepository.getLocalSessions().size());
+
// Check that trying to expire local session when there exists a local session with no zookeeper data works
tester.applicationRepository().deleteExpiredLocalSessions();
- assertEquals(1, sessionRepository.getLocalSessions().size());
+ assertEquals(2, sessionRepository.getLocalSessions().size());
// Check that trying to expire when there are no active sessions works
tester.applicationRepository().deleteExpiredLocalSessions();
@@ -509,27 +514,6 @@ public class ApplicationRepositoryTest {
}
@Test
- public void deletesApplicationRoles() {
- var tenant = applicationRepository.getTenant(applicationId());
- var applicationId = applicationId(tenant1);
- var prepareParams = new PrepareParams.Builder().applicationId(applicationId)
- .applicationRoles(ApplicationRoles.fromString("hostRole","containerRole")).build();
- deployApp(testApp, prepareParams);
- var approlesStore = new ApplicationRolesStore(tenantRepository.getCurator(), tenant.getPath());
- var appRoles = approlesStore.readApplicationRoles(applicationId);
-
- // App roles present after deploy
- assertTrue(appRoles.isPresent());
- assertEquals("hostRole", appRoles.get().applicationHostRole());
- assertEquals("containerRole", appRoles.get().applicationContainerRole());
-
- assertTrue(applicationRepository.delete(applicationId));
-
- // App roles deleted on application delete
- assertTrue(approlesStore.readApplicationRoles(applicationId).isEmpty());
- }
-
- @Test
public void require_that_provision_info_can_be_read() {
prepareAndActivate(testAppJdiscOnly);
@@ -823,6 +807,13 @@ public class ApplicationRepositoryTest {
public boolean noCache() {
return false;
}
+
+ @Override
+ public String getRequestDefMd5() { return ""; }
+
+ @Override
+ public PayloadChecksums configPayloadChecksums() { return PayloadChecksums.empty(); }
+
}, Optional.empty());
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerBootstrapTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerBootstrapTest.java
index 0df80c4d5c0..69b9d67f84c 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerBootstrapTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerBootstrapTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.cloud.config.ConfigserverConfig;
@@ -77,12 +77,14 @@ public class ConfigServerBootstrapTest {
assertFalse(vipStatus.isInRotation());
bootstrap.start();
waitUntil(rpcServer::isRunning, "failed waiting for Rpc server running");
+ assertTrue(rpcServer.isServingConfigRequests());
waitUntil(() -> bootstrap.status() == StateMonitor.Status.up, "failed waiting for status 'up'");
waitUntil(vipStatus::isInRotation, "failed waiting for server to be in rotation");
bootstrap.deconstruct();
assertEquals(StateMonitor.Status.down, bootstrap.status());
assertFalse(rpcServer.isRunning());
+ assertTrue(rpcServer.isServingConfigRequests());
assertFalse(vipStatus.isInRotation());
}
@@ -108,6 +110,7 @@ public class ConfigServerBootstrapTest {
bootstrap.start();
waitUntil(rpcServer::isRunning, "failed waiting for Rpc server running");
+ assertTrue(rpcServer.isServingConfigRequests());
waitUntil(() -> bootstrap.status() == StateMonitor.Status.up, "failed waiting for status 'up'");
waitUntil(vipStatus::isInRotation, "failed waiting for server to be in rotation");
bootstrap.deconstruct();
@@ -140,7 +143,8 @@ public class ConfigServerBootstrapTest {
// App is invalid, bootstrapping was unsuccessful. Status should be 'initializing',
// rpc server should not be running and it should be out of rotation
assertEquals(StateMonitor.Status.initializing, stateMonitor.status());
- assertFalse(rpcServer.isRunning());
+ assertTrue(rpcServer.isRunning());
+ assertFalse(rpcServer.isServingConfigRequests());
assertFalse(vipStatus.isInRotation());
bootstrap.deconstruct();
@@ -161,7 +165,7 @@ public class ConfigServerBootstrapTest {
.zone(new Zone(Environment.dev, RegionName.defaultName()))
.curator(curator)
.build();
- tester.deployApp("src/test/apps/app/", vespaVersion, Instant.now());
+ tester.deployApp("src/test/apps/app/", vespaVersion);
ApplicationId applicationId = tester.applicationId();
VersionState versionState = createVersionState();
@@ -179,6 +183,7 @@ public class ConfigServerBootstrapTest {
stateMonitor, vipStatus, VIP_STATUS_PROGRAMMATICALLY);
bootstrap.start();
waitUntil(rpcServer::isRunning, "failed waiting for Rpc server running");
+ assertTrue(rpcServer.isServingConfigRequests());
waitUntil(() -> bootstrap.status() == StateMonitor.Status.up, "failed waiting for status 'up'");
waitUntil(vipStatus::isInRotation, "failed waiting for server to be in rotation");
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerDBTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerDBTest.java
index 0c8a9e5c3d8..b51c30cb991 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerDBTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerDBTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/MemoryGenerationCounter.java b/configserver/src/test/java/com/yahoo/vespa/config/server/MemoryGenerationCounter.java
index 2df28f81e9e..1418b751f55 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/MemoryGenerationCounter.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/MemoryGenerationCounter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.vespa.config.GenerationCounter;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/MiscTestCase.java b/configserver/src/test/java/com/yahoo/vespa/config/server/MiscTestCase.java
index 3da7d180e35..5ad9ae2b62e 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/MiscTestCase.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/MiscTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.config.AppConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/MockProvisioner.java b/configserver/src/test/java/com/yahoo/vespa/config/server/MockProvisioner.java
index e828aa1fc6c..f08da1e65c2 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/MockProvisioner.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/MockProvisioner.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.config.model.api.HostProvisioner;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/MockSecretStoreValidator.java b/configserver/src/test/java/com/yahoo/vespa/config/server/MockSecretStoreValidator.java
index a02e8a3f3a6..f6eff3b6cf0 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/MockSecretStoreValidator.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/MockSecretStoreValidator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.config.provision.SystemName;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java
index 0acf4404326..c628a16d5e9 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java
@@ -1,8 +1,9 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.component.Version;
+import com.yahoo.concurrent.InThreadExecutorService;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.api.ContainerEndpoint;
import com.yahoo.config.model.api.HostProvisioner;
@@ -58,6 +59,7 @@ public class ModelContextImplTest {
new BaseDeployLogger(),
new StaticConfigDefinitionRepo(),
new MockFileRegistry(),
+ new InThreadExecutorService(),
Optional.empty(),
hostProvisioner,
new Provisioned(),
@@ -72,7 +74,6 @@ public class ModelContextImplTest {
null,
Optional.empty(),
Optional.empty(),
- Optional.empty(),
List.of(),
new SecretStoreProvider().get(),
List.of()),
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ModelFactoryRegistryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ModelFactoryRegistryTest.java
index 2fd87161fd0..1eb44c633f6 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/ModelFactoryRegistryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ModelFactoryRegistryTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.component.provider.ComponentRegistry;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ModelStub.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ModelStub.java
index ed12f4dbbe1..17f49df5193 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/ModelStub.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ModelStub.java
@@ -1,14 +1,12 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.config.ConfigInstance;
import com.yahoo.config.FileReference;
-import com.yahoo.config.model.api.FileDistribution;
import com.yahoo.config.model.api.HostInfo;
import com.yahoo.config.model.api.Model;
import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.vespa.config.ConfigKey;
-import com.yahoo.vespa.config.ConfigPayload;
import com.yahoo.vespa.config.buildergen.ConfigDefinition;
import java.util.Collection;
@@ -41,9 +39,6 @@ public class ModelStub implements Model {
}
@Override
- public void distributeFiles(FileDistribution fileDistribution) { }
-
- @Override
public Set<FileReference> fileReferences() { return new HashSet<>(); }
@Override
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/PortRangeAllocator.java b/configserver/src/test/java/com/yahoo/vespa/config/server/PortRangeAllocator.java
index 359c8562869..60a9dbc96db 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/PortRangeAllocator.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/PortRangeAllocator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.google.common.collect.ContiguousSet;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ServerCacheTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ServerCacheTest.java
index 35449238f78..4d64e90a617 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/ServerCacheTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ServerCacheTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.vespa.config.ConfigCacheKey;
@@ -48,9 +48,9 @@ public class ServerCacheTest {
cache = new ServerCache(new TestConfigDefinitionRepo(), userConfigDefinitionRepo);
- cache.put(fooBarCacheKey, SlimeConfigResponse.fromConfigPayload(ConfigPayload.empty(), 2, false, configMd5), configMd5);
- cache.put(bazQuuxCacheKey, SlimeConfigResponse.fromConfigPayload(ConfigPayload.empty(), 2, false, configMd5), configMd5);
- cache.put(fooBarCacheKeyDifferentMd5, SlimeConfigResponse.fromConfigPayload(ConfigPayload.empty(), 2, false, configMd5_2), configMd5_2);
+ cache.computeIfAbsent(fooBarCacheKey, (ConfigCacheKey key) -> SlimeConfigResponse.fromConfigPayload(ConfigPayload.empty(), 2, false, configMd5));
+ cache.computeIfAbsent(bazQuuxCacheKey, (ConfigCacheKey key) -> SlimeConfigResponse.fromConfigPayload(ConfigPayload.empty(), 2, false, configMd5));
+ cache.computeIfAbsent(fooBarCacheKeyDifferentMd5, (ConfigCacheKey key) -> SlimeConfigResponse.fromConfigPayload(ConfigPayload.empty(), 2, false, configMd5_2));
}
@Test
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/SuperModelControllerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/SuperModelControllerTest.java
index c58bd6d6b0a..5016107c411 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/SuperModelControllerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/SuperModelControllerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.cloud.config.LbServicesConfig;
@@ -13,11 +13,11 @@ import com.yahoo.config.provision.ApplicationName;
import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.Zone;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.jrt.Request;
import com.yahoo.vespa.config.ConfigKey;
import com.yahoo.vespa.config.protocol.CompressionType;
import com.yahoo.vespa.config.protocol.DefContent;
-import com.yahoo.vespa.config.protocol.JRTClientConfigRequestV3;
import com.yahoo.vespa.config.protocol.JRTServerConfigRequestV3;
import com.yahoo.vespa.config.protocol.Trace;
import com.yahoo.vespa.config.server.model.SuperModelConfigProvider;
@@ -36,6 +36,7 @@ import java.util.Map;
import java.util.Optional;
import static com.yahoo.config.model.api.container.ContainerServiceType.QRSERVER;
+import static com.yahoo.vespa.config.protocol.JRTClientConfigRequestV3.createWithParams;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
@@ -73,11 +74,12 @@ public class SuperModelControllerTest {
@Test(expected = UnknownConfigDefinitionException.class)
public void test_unknown_config_definition() {
- String md5 = "asdfasf";
- Request request = JRTClientConfigRequestV3.createWithParams(new ConfigKey<>("foo", "id", "bar", md5, null), DefContent.fromList(Collections.emptyList()),
- "fromHost", md5, 1, 1, Trace.createDummy(), CompressionType.UNCOMPRESSED,
- Optional.empty())
- .getRequest();
+ PayloadChecksums payloadChecksums = PayloadChecksums.empty();
+ Request request = createWithParams(new ConfigKey<>("foo", "id", "bar", null),
+ DefContent.fromList(Collections.emptyList()), "fromHost",
+ payloadChecksums, 1, 1, Trace.createDummy(),
+ CompressionType.UNCOMPRESSED, Optional.empty())
+ .getRequest();
JRTServerConfigRequestV3 v3Request = JRTServerConfigRequestV3.createFromRequest(request);
handler.resolveConfig(v3Request);
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/SuperModelRequestHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/SuperModelRequestHandlerTest.java
index e33b52e5fd4..a390d6793b4 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/SuperModelRequestHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/SuperModelRequestHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/TestConfigDefinitionRepo.java b/configserver/src/test/java/com/yahoo/vespa/config/server/TestConfigDefinitionRepo.java
index ea093542354..b30ec8f8f30 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/TestConfigDefinitionRepo.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/TestConfigDefinitionRepo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.cloud.config.LbServicesConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/TimeoutBudgetTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/TimeoutBudgetTest.java
index ac43964a279..e93d7113d99 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/TimeoutBudgetTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/TimeoutBudgetTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server;
import com.yahoo.test.ManualClock;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationCuratorDatabaseTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationCuratorDatabaseTest.java
index 13803f29794..476ac7172bb 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationCuratorDatabaseTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationCuratorDatabaseTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import com.yahoo.config.provision.ApplicationId;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationMapperTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationMapperTest.java
index 9ef63b768a9..57af219c813 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationMapperTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationMapperTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import java.time.Instant;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationReindexingTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationReindexingTest.java
index e8b71dc5433..182ea108520 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationReindexingTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationReindexingTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import com.yahoo.vespa.config.server.application.ApplicationReindexing.Status;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationSetTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationSetTest.java
index b37c5defbc3..7629680b16f 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationSetTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationSetTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import java.time.Instant;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationTest.java
index acd0acc3792..92af4a75e51 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/application/ApplicationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import com.yahoo.cloud.config.ModelConfig;
@@ -11,6 +11,7 @@ import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ApplicationName;
import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.TenantName;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.jrt.Request;
import com.yahoo.text.Utf8;
import com.yahoo.vespa.config.ConfigDefinitionKey;
@@ -105,7 +106,7 @@ public class ApplicationTest {
@Test(expected = UnknownConfigDefinitionException.class)
public void require_that_def_file_must_exist() {
- handler.resolveConfig(createRequest("unknown", "namespace", "a", emptySchema));
+ handler.resolveConfig(createRequest("unknown", "namespace", emptySchema));
}
@Test
@@ -116,8 +117,9 @@ public class ApplicationTest {
@Test
public void require_that_build_config_can_be_resolved() throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
- handler.resolveConfig(createRequest(ModelConfig.CONFIG_DEF_NAME, ModelConfig.CONFIG_DEF_NAMESPACE,
- ModelConfig.CONFIG_DEF_MD5, ModelConfig.CONFIG_DEF_SCHEMA))
+ handler.resolveConfig(createRequest(ModelConfig.CONFIG_DEF_NAME,
+ ModelConfig.CONFIG_DEF_NAMESPACE,
+ ModelConfig.CONFIG_DEF_SCHEMA))
.serialize(baos, CompressionType.UNCOMPRESSED);
assertTrue(baos.toString().startsWith("{\"vespaVersion\":\"1.0.0\",\"hosts\":[{\"name\":\"mytesthost\""));
}
@@ -132,32 +134,35 @@ public class ApplicationTest {
String[] schema = new String[1];
schema[0] = "boolval bool default=true"; // changed to be true, original is false
baos = new ByteArrayOutputStream();
- handler.resolveConfig(createRequest(SimpletypesConfig.CONFIG_DEF_NAME, SimpletypesConfig.CONFIG_DEF_NAMESPACE, "", schema))
+ handler.resolveConfig(createRequest(SimpletypesConfig.CONFIG_DEF_NAME, SimpletypesConfig.CONFIG_DEF_NAMESPACE, schema))
.serialize(baos, CompressionType.UNCOMPRESSED);
assertEquals("{\"boolval\":true,\"doubleval\":0.0,\"enumval\":\"VAL1\",\"intval\":0,\"longval\":0,\"stringval\":\"s\"}", baos.toString(Utf8.getCharset()));
}
@Test
public void require_that_configs_are_cached() {
- ConfigResponse response = handler.resolveConfig(createRequest(ModelConfig.CONFIG_DEF_NAME, ModelConfig.CONFIG_DEF_NAMESPACE, ModelConfig.CONFIG_DEF_MD5, ModelConfig.CONFIG_DEF_SCHEMA));
+ ConfigResponse response = handler.resolveConfig(createRequest(ModelConfig.CONFIG_DEF_NAME, ModelConfig.CONFIG_DEF_NAMESPACE, ModelConfig.CONFIG_DEF_SCHEMA));
assertNotNull(response);
- ConfigResponse cached_response = handler.resolveConfig(createRequest(ModelConfig.CONFIG_DEF_NAME, ModelConfig.CONFIG_DEF_NAMESPACE, ModelConfig.CONFIG_DEF_MD5, ModelConfig.CONFIG_DEF_SCHEMA));
+ ConfigResponse cached_response = handler.resolveConfig(createRequest(ModelConfig.CONFIG_DEF_NAME, ModelConfig.CONFIG_DEF_NAMESPACE, ModelConfig.CONFIG_DEF_SCHEMA));
assertNotNull(cached_response);
assertTrue(response == cached_response);
}
- private static GetConfigRequest createRequest(String name, String namespace, String defMd5, String[] schema) {
- Request request = JRTClientConfigRequestV3.
- createWithParams(new ConfigKey<>(name, "admin/model", namespace, defMd5, null), DefContent.fromArray(schema),
- "fromHost", "", 0, 100, Trace.createDummy(), CompressionType.UNCOMPRESSED,
- Optional.empty()).getRequest();
+ private static GetConfigRequest createRequest(String name, String namespace, String[] schema) {
+ Request request =
+ JRTClientConfigRequestV3.createWithParams(new ConfigKey<>(name, "admin/model", namespace, null),
+ DefContent.fromArray(schema), "fromHost",
+ PayloadChecksums.empty(), 0, 100,
+ Trace.createDummy(), CompressionType.UNCOMPRESSED,
+ Optional.empty())
+ .getRequest();
return JRTServerConfigRequestV3.createFromRequest(request);
}
private static GetConfigRequest createSimpleConfigRequest() {
return createRequest(SimpletypesConfig.CONFIG_DEF_NAME,
SimpletypesConfig.CONFIG_DEF_NAMESPACE,
- SimpletypesConfig.CONFIG_DEF_MD5,
ApplicationTest.emptySchema);
}
+
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/application/ConfigConvergenceCheckerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/application/ConfigConvergenceCheckerTest.java
index 2fbc14dda50..8b21e9c3916 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/application/ConfigConvergenceCheckerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/application/ConfigConvergenceCheckerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import com.github.tomakehurst.wiremock.junit.WireMockRule;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/application/DefaultClusterReindexingStatusClientTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/application/DefaultClusterReindexingStatusClientTest.java
index a8f35325b57..ce9e3499c89 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/application/DefaultClusterReindexingStatusClientTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/application/DefaultClusterReindexingStatusClientTest.java
@@ -1,5 +1,5 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.config.server.application;// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.config.server.application;// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.github.tomakehurst.wiremock.junit.WireMockRule;
import com.yahoo.config.model.api.HostInfo;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/application/FileDistributionStatusTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/application/FileDistributionStatusTest.java
index b650e8eb291..87cdc0cf505 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/application/FileDistributionStatusTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/application/FileDistributionStatusTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import com.yahoo.config.model.api.Model;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/application/HttpProxyTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/application/HttpProxyTest.java
index cf7740f133f..ac0a6491100 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/application/HttpProxyTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/application/HttpProxyTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import com.yahoo.config.model.api.HostInfo;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/application/MockModel.java b/configserver/src/test/java/com/yahoo/vespa/config/server/application/MockModel.java
index 7e57eea74d6..120a17f1eab 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/application/MockModel.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/application/MockModel.java
@@ -1,17 +1,15 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import com.yahoo.config.ConfigInstance;
import com.yahoo.config.FileReference;
-import com.yahoo.config.model.api.FileDistribution;
import com.yahoo.config.model.api.HostInfo;
import com.yahoo.config.model.api.Model;
import com.yahoo.config.model.api.PortInfo;
import com.yahoo.config.model.api.ServiceInfo;
-import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.AllocatedHosts;
+import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.vespa.config.ConfigKey;
-import com.yahoo.vespa.config.ConfigPayload;
import com.yahoo.vespa.config.buildergen.ConfigDefinition;
import java.util.Arrays;
@@ -94,11 +92,6 @@ public class MockModel implements Model {
}
@Override
- public void distributeFiles(FileDistribution fileDistribution) {
- throw new UnsupportedOperationException();
- }
-
- @Override
public Set<FileReference> fileReferences() { return new HashSet<>(); }
@Override
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/application/PermanentApplicationPackageTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/application/PermanentApplicationPackageTest.java
index 63ed7c8268a..678b7506a9d 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/application/PermanentApplicationPackageTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/application/PermanentApplicationPackageTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/application/TenantApplicationsTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/application/TenantApplicationsTest.java
index a81dc6a2773..eaffda056a8 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/application/TenantApplicationsTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/application/TenantApplicationsTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.application;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActionsBuilder.java b/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActionsBuilder.java
index 876b169742f..41984040e49 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActionsBuilder.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActionsBuilder.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.configchange;
import com.google.common.collect.ImmutableMap;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActionsSlimeConverterTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActionsSlimeConverterTest.java
index d75f95d4c48..9fa673d4486 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActionsSlimeConverterTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActionsSlimeConverterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.configchange;
import com.yahoo.slime.Cursor;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/MockConfigChangeAction.java b/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/MockConfigChangeAction.java
index 639e4a6fee3..073f172d5be 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/MockConfigChangeAction.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/MockConfigChangeAction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.configchange;
import com.yahoo.config.model.api.ConfigChangeAction;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/MockRefeedAction.java b/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/MockRefeedAction.java
index 615d4c86c1d..fd03f261b8c 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/MockRefeedAction.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/MockRefeedAction.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.configchange;
import com.yahoo.config.application.api.ValidationId;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/RefeedActionsFormatterTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/RefeedActionsFormatterTest.java
index 4b898b501ec..ca1229efb73 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/RefeedActionsFormatterTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/RefeedActionsFormatterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.configchange;
import org.junit.Test;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/RefeedActionsTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/RefeedActionsTest.java
index 24e81dc3f99..f54fb272ed8 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/RefeedActionsTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/RefeedActionsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.configchange;
import com.yahoo.config.application.api.ValidationId;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/ReindexActionsFormatterTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/ReindexActionsFormatterTest.java
index b07d002a431..0d976bedcab 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/ReindexActionsFormatterTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/ReindexActionsFormatterTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.configchange;
import org.junit.Test;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/RestartActionsFormatterTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/RestartActionsFormatterTest.java
index 7cde78c23e4..c18035589f2 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/RestartActionsFormatterTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/RestartActionsFormatterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.configchange;
import org.junit.Test;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/RestartActionsTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/RestartActionsTest.java
index c19b81aa91b..31ccd2b8f84 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/RestartActionsTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/RestartActionsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.configchange;
import com.yahoo.config.model.api.ServiceInfo;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/Utils.java b/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/Utils.java
index e02e1e2b143..842ea84e031 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/Utils.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/configchange/Utils.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.configchange;
import com.yahoo.config.application.api.ValidationId;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/a.def b/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/a.def
index e2f22a38fc3..93c1f258507 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/a.def
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/a.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
storage[].feeder[] string
search[].feeder[] string
storage[].id reference
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/b.def b/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/b.def
index 42e58eb4f9e..f0e8cfbccc3 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/b.def
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/b.def
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
gaff int default=0
usercfgwithid int
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/c.def b/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/c.def
index 3621e2eeb9a..20893149e82 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/c.def
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/c.def
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
foo string
gaz int
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/compositeinclude.def b/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/compositeinclude.def
index 195acc54718..7ac18eb5770 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/compositeinclude.def
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/compositeinclude.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
classes[].id int
classes[].name string
classes[].fields[].name string
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/d.def b/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/d.def
index eb19c8a95ba..b1ceab633ad 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/d.def
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/d.def
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
thestring string default="g"
theint int default=6
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/e.def b/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/e.def
index 20d311db6e0..d4fb1aaec31 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/e.def
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/e.def
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# this one will be implicit, no cfg
fo int default=-45
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/recursiveinclude.def b/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/recursiveinclude.def
index aca6789c179..90fe9bf277d 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/recursiveinclude.def
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/configdefs/recursiveinclude.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
rec int
ursive string
national int
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLoggerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLoggerTest.java
index 3ac9e681604..582b7f2c071 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLoggerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployHandlerLoggerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.deploy;
import com.yahoo.config.application.api.DeployLogger;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java
index cca26cbb4f1..f16b1102f2a 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.deploy;
import com.yahoo.cloud.config.ConfigserverConfig;
@@ -124,35 +124,21 @@ public class DeployTester {
/**
* Do the initial "deploy" with the existing API-less code as the deploy API doesn't support first deploys yet.
*/
- public PrepareResult deployApp(String applicationPath) {
- return deployApp(applicationPath, null, Instant.now());
+ public void deployApp(String applicationPath) {
+ deployApp(applicationPath, (String) null);
}
/**
* Do the initial "deploy" with the existing API-less code as the deploy API doesn't support first deploys yet.
*/
- public PrepareResult deployApp(String applicationPath, Instant now) {
- return deployApp(applicationPath, null, now);
+ public PrepareResult deployApp(String applicationPath, String vespaVersion) {
+ return deployApp(applicationPath, new PrepareParams.Builder().vespaVersion(vespaVersion));
}
/**
* Do the initial "deploy" with the existing API-less code as the deploy API doesn't support first deploys yet.
*/
- public PrepareResult deployApp(String applicationPath, String vespaVersion) {
- return deployApp(applicationPath, vespaVersion, Instant.now());
- }
-
- /**
- * Do the initial "deploy" with the existing API-less code as the deploy API doesn't support first deploys yet.
- */
- public PrepareResult deployApp(String applicationPath, String vespaVersion, Instant now) {
- return deployApp(applicationPath, now, new PrepareParams.Builder().vespaVersion(vespaVersion));
- }
-
- /**
- * Do the initial "deploy" with the existing API-less code as the deploy API doesn't support first deploys yet.
- */
- public PrepareResult deployApp(String applicationPath, Instant now, PrepareParams.Builder paramsBuilder) {
+ public PrepareResult deployApp(String applicationPath, PrepareParams.Builder paramsBuilder) {
paramsBuilder.applicationId(applicationId)
.timeoutBudget(new TimeoutBudget(clock, Duration.ofSeconds(60)));
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java
index 7f0a49e6d32..33e18843738 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.deploy;
import com.yahoo.cloud.config.ConfigserverConfig;
@@ -23,7 +23,9 @@ import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.Zone;
import com.yahoo.test.ManualClock;
import com.yahoo.vespa.config.server.application.ApplicationReindexing;
+import com.yahoo.vespa.config.server.http.InternalServerException;
import com.yahoo.vespa.config.server.http.InvalidApplicationException;
+import com.yahoo.vespa.config.server.http.UnknownVespaVersionException;
import com.yahoo.vespa.config.server.http.v2.PrepareResult;
import com.yahoo.vespa.config.server.model.TestModelFactory;
import com.yahoo.vespa.config.server.session.PrepareParams;
@@ -98,7 +100,7 @@ public class HostedDeployTest {
.modelFactory(createHostedModelFactory(Version.fromString("4.5.6"), Clock.systemUTC()))
.configserverConfig(createConfigserverConfig()).build();
String dockerImageRepository = "docker.foo.com:4443/bar/baz";
- tester.deployApp("src/test/apps/hosted/", Instant.now(), new PrepareParams.Builder()
+ tester.deployApp("src/test/apps/hosted/", new PrepareParams.Builder()
.vespaVersion("4.5.6")
.dockerImageRepository(dockerImageRepository)
.athenzDomain("myDomain"));
@@ -117,7 +119,8 @@ public class HostedDeployTest {
DeployTester tester = new DeployTester.Builder()
.modelFactory(createHostedModelFactory(Version.fromString("4.5.6"), Clock.systemUTC()))
.configserverConfig(createConfigserverConfig()).build();
- tester.deployApp("src/test/apps/hosted/", Instant.now(), new PrepareParams.Builder()
+ tester.deployApp("src/test/apps/hosted/", new PrepareParams.Builder()
+ .vespaVersion("4.5.6")
.tenantSecretStores(tenantSecretStores));
Optional<com.yahoo.config.provision.Deployment> deployment = tester.redeployFromLocalActive(tester.applicationId());
@@ -127,6 +130,31 @@ public class HostedDeployTest {
}
@Test
+ public void testDeployOnUnknownVersion() throws IOException {
+ List<ModelFactory> modelFactories = List.of(createHostedModelFactory(Version.fromString("1.0.0")));
+ DeployTester tester = new DeployTester.Builder().modelFactories(modelFactories).configserverConfig(createConfigserverConfig()).build();
+
+ // No version requested: OK
+ tester.deployApp("src/test/apps/hosted/", new PrepareParams.Builder());
+
+ // Bootstrap deployment on wrong version: OK (Must be allowed for self-hosted upgrades.)
+ try {
+ tester.deployApp("src/test/apps/hosted/", new PrepareParams.Builder().vespaVersion("1.0.1").isBootstrap(true));
+ }
+ catch (InternalServerException expected) { // Fails actual building, since this is hosted, but self-hosted this is OK.
+ assertTrue(expected.getCause() instanceof UnknownVespaVersionException);
+ }
+
+
+ // Regular deployment with requested, unknown version: not OK.
+ try {
+ tester.deployApp("src/test/apps/hosted/", new PrepareParams.Builder().vespaVersion("1.0.1"));
+ fail("Requesting an unknown node version should not be allowed");
+ }
+ catch (UnknownVespaVersionException expected) { }
+ }
+
+ @Test
public void testDeployMultipleVersions() throws IOException {
List<ModelFactory> modelFactories = List.of(createHostedModelFactory(Version.fromString("6.1.0")),
createHostedModelFactory(Version.fromString("6.2.0")),
@@ -332,7 +360,7 @@ public class HostedDeployTest {
// Deploy with version that does not exist on hosts and with app package that has no write access control,
// validation of access control should not be done, since the app is already deployed in prod
- tester.deployApp("src/test/apps/hosted-no-write-access-control", "6.1.0", Instant.now());
+ tester.deployApp("src/test/apps/hosted-no-write-access-control", "6.1.0");
assertEquals(7, tester.getAllocatedHostsOf(applicationId).getHosts().size());
}
@@ -343,7 +371,7 @@ public class HostedDeployTest {
List<ModelFactory> modelFactories = List.of(createHostedModelFactory(clock),
createFailingModelFactory(Version.fromString("1.0.0"))); // older than default
DeployTester tester = new DeployTester.Builder().modelFactories(modelFactories).configserverConfig(createConfigserverConfig()).build();
- tester.deployApp("src/test/apps/validationOverride/", clock.instant());
+ tester.deployApp("src/test/apps/validationOverride/");
// Redeployment from local active works
{
@@ -364,7 +392,7 @@ public class HostedDeployTest {
// However, redeployment from the outside fails after this date
{
try {
- tester.deployApp("src/test/apps/validationOverride/", "myApp", Instant.now());
+ tester.deployApp("src/test/apps/validationOverride/", "myApp");
fail("Expected redeployment to fail");
}
catch (Exception expected) {
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/RedeployTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/RedeployTest.java
index 015cc039a1c..66bf25cadf6 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/RedeployTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/RedeployTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.deploy;
import com.yahoo.config.model.api.ModelFactory;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClientTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClientTest.java
index e20363af4e9..016041cb032 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClientTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClientTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.deploy;
import com.google.common.collect.ImmutableSet;
@@ -14,8 +14,9 @@ import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.HostSpec;
import com.yahoo.path.Path;
-import com.yahoo.vespa.config.server.zookeeper.ConfigCurator;
+import com.yahoo.text.Utf8;
import com.yahoo.vespa.config.server.zookeeper.ZKApplicationPackage;
+import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.mock.MockCurator;
import org.junit.Before;
import org.junit.Rule;
@@ -31,6 +32,10 @@ import java.util.Map;
import java.util.Optional;
import static com.yahoo.config.provision.serialization.AllocatedHostsSerializer.fromJson;
+import static com.yahoo.vespa.config.server.zookeeper.ZKApplication.DEFCONFIGS_ZK_SUBPATH;
+import static com.yahoo.vespa.config.server.zookeeper.ZKApplication.META_ZK_PATH;
+import static com.yahoo.vespa.config.server.zookeeper.ZKApplication.USERAPP_ZK_SUBPATH;
+import static com.yahoo.vespa.config.server.zookeeper.ZKApplication.USER_DEFCONFIGS_ZK_SUBPATH;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
@@ -46,13 +51,13 @@ public class ZooKeeperClientTest {
@Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();
- private ConfigCurator zk;
- private final String appPath = "/1";
+ private Curator zk;
+ private final Path appPath = Path.fromString("/1");
@Before
public void setupZK() throws IOException {
- zk = ConfigCurator.create(new MockCurator());
- ZooKeeperClient zkc = new ZooKeeperClient(zk, new BaseDeployLogger(), Path.fromString(appPath));
+ zk = new MockCurator();
+ ZooKeeperClient zkc = new ZooKeeperClient(zk, new BaseDeployLogger(), appPath);
ApplicationPackage app = FilesApplicationPackage.fromFileWithDeployData(new File("src/test/apps/zkfeed"),
new DeployData("foo",
"/bar/baz",
@@ -81,30 +86,30 @@ public class ZooKeeperClientTest {
@Test
public void testInitZooKeeper() {
- ConfigCurator zk = ConfigCurator.create(new MockCurator());
+ Curator zk = new MockCurator();
BaseDeployLogger logger = new BaseDeployLogger();
long generation = 1L;
ZooKeeperClient zooKeeperClient = new ZooKeeperClient(zk, logger, Path.fromString("/1"));
zooKeeperClient.initialize();
- String appPath = "/";
+ Path appPath = Path.fromString("/");
assertThat(zk.getChildren(appPath).size(), is(1));
- assertTrue(zk.exists("/" + generation));
- String currentAppPath = appPath + generation;
- assertTrue(zk.exists(currentAppPath, ConfigCurator.DEFCONFIGS_ZK_SUBPATH.replaceFirst("/", "")));
+ Path currentAppPath = appPath.append(String.valueOf(generation));
+ assertTrue(zk.exists(currentAppPath));
+ assertTrue(zk.exists(currentAppPath.append(DEFCONFIGS_ZK_SUBPATH.replaceFirst("/", ""))));
assertThat(zk.getChildren(currentAppPath).size(), is(4));
}
@Test
public void testFeedDefFilesToZooKeeper() {
- String defsPath = appPath + ConfigCurator.DEFCONFIGS_ZK_SUBPATH;
- assertTrue(zk.exists(appPath, ConfigCurator.DEFCONFIGS_ZK_SUBPATH.replaceFirst("/", "")));
+ Path defsPath = appPath.append(DEFCONFIGS_ZK_SUBPATH);
+ assertTrue(zk.exists(appPath.append(DEFCONFIGS_ZK_SUBPATH.replaceFirst("/", ""))));
List<String> children = zk.getChildren(defsPath);
assertEquals(defsPath + " children", 1, children.size());
Collections.sort(children);
assertThat(children.get(0), is("a.b.test2"));
- assertTrue(zk.exists(appPath, ConfigCurator.USER_DEFCONFIGS_ZK_SUBPATH.replaceFirst("/", "")));
- String userDefsPath = appPath + ConfigCurator.USER_DEFCONFIGS_ZK_SUBPATH;
+ assertTrue(zk.exists(appPath.append(USER_DEFCONFIGS_ZK_SUBPATH.replaceFirst("/", ""))));
+ Path userDefsPath = appPath.append(USER_DEFCONFIGS_ZK_SUBPATH);
children = zk.getChildren(userDefsPath);
assertThat(children.size(), is(1));
Collections.sort(children);
@@ -113,8 +118,9 @@ public class ZooKeeperClientTest {
@Test
public void testFeedAppMetaDataToZooKeeper() {
- assertTrue(zk.exists(appPath, ConfigCurator.META_ZK_PATH));
- ApplicationMetaData metaData = ApplicationMetaData.fromJsonString(zk.getData(appPath, ConfigCurator.META_ZK_PATH));
+ assertTrue(zk.exists(appPath.append(META_ZK_PATH)));
+ ApplicationMetaData metaData = ApplicationMetaData.fromJsonString(
+ Utf8.toString(zk.getData(appPath.append(META_ZK_PATH)).get()));
assertTrue(metaData.getChecksum().length() > 0);
assertTrue(metaData.isInternalRedeploy());
assertThat(metaData.getDeployedByUser(), is("foo"));
@@ -126,34 +132,34 @@ public class ZooKeeperClientTest {
@Test
public void testVersionedFileRegistry() {
- String fileRegPath = appPath + "/" + ZKApplicationPackage.fileRegistryNode;
+ Path fileRegPath = appPath.append(ZKApplicationPackage.fileRegistryNode);
assertTrue(zk.exists(fileRegPath));
- assertTrue(zk.exists(fileRegPath + "/1.2.3"));
- assertTrue(zk.exists(fileRegPath + "/3.2.1"));
+ assertTrue(zk.exists(fileRegPath.append("/1.2.3")));
+ assertTrue(zk.exists(fileRegPath.append("/3.2.1")));
// assertNull("Data at " + fileRegPath, zk.getData(fileRegPath)); Not null any more .. hm
}
@Test
public void include_dirs_are_written_to_ZK() {
- assertTrue(zk.exists(appPath + ConfigCurator.USERAPP_ZK_SUBPATH + "/" + "dir1", "default.xml"));
- assertTrue(zk.exists(appPath + ConfigCurator.USERAPP_ZK_SUBPATH + "/nested/" + "dir2", "chain2.xml"));
- assertTrue(zk.exists(appPath + ConfigCurator.USERAPP_ZK_SUBPATH + "/nested/" + "dir2", "chain3.xml"));
+ assertTrue(zk.exists(appPath.append(USERAPP_ZK_SUBPATH).append("dir1").append("default.xml")));
+ assertTrue(zk.exists(appPath.append(USERAPP_ZK_SUBPATH).append("nested").append("dir2").append("chain2.xml")));
+ assertTrue(zk.exists(appPath.append(USERAPP_ZK_SUBPATH).append("nested").append("dir2").append("chain3.xml")));
}
@Test
public void search_chain_dir_written_to_ZK() {
- assertTrue(zk.exists(appPath().append("search").append("chains").append("dir1").append("default.xml").getAbsolute()));
- assertTrue(zk.exists(appPath().append("search").append("chains").append("dir2").append("chain2.xml").getAbsolute()));
- assertTrue(zk.exists(appPath().append("search").append("chains").append("dir2").append("chain3.xml").getAbsolute()));
+ assertTrue(zk.exists(appPath().append("search").append("chains").append("dir1").append("default.xml")));
+ assertTrue(zk.exists(appPath().append("search").append("chains").append("dir2").append("chain2.xml")));
+ assertTrue(zk.exists(appPath().append("search").append("chains").append("dir2").append("chain3.xml")));
}
private Path appPath() {
- return Path.fromString(appPath).append(ConfigCurator.USERAPP_ZK_SUBPATH);
+ return appPath.append(USERAPP_ZK_SUBPATH);
}
@Test
public void testWritingHostNamesToZooKeeper() throws IOException {
- ConfigCurator zk = ConfigCurator.create(new MockCurator());
+ Curator zk = new MockCurator();
BaseDeployLogger logger = new BaseDeployLogger();
Path app = Path.fromString("/1");
ZooKeeperClient zooKeeperClient = new ZooKeeperClient(zk, logger, app);
@@ -163,9 +169,9 @@ public class ZooKeeperClientTest {
ImmutableSet<HostSpec> hosts = ImmutableSet.of(host1, host2);
zooKeeperClient.write(AllocatedHosts.withHosts(hosts));
Path hostsPath = app.append(ZKApplicationPackage.allocatedHostsNode);
- assertTrue(zk.exists(hostsPath.getAbsolute()));
+ assertTrue(zk.exists(hostsPath));
- AllocatedHosts deserialized = fromJson(zk.getBytes(hostsPath.getAbsolute()));
+ AllocatedHosts deserialized = fromJson(zk.getData(hostsPath).get());
assertEquals(hosts, deserialized.getHosts());
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/ZooKeeperDeployerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/ZooKeeperDeployerTest.java
index 641fbe5bf41..1bc980c9099 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/ZooKeeperDeployerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/ZooKeeperDeployerTest.java
@@ -1,15 +1,16 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.deploy;
+import com.yahoo.component.Version;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeployLogger;
-import com.yahoo.config.model.application.provider.*;
+import com.yahoo.config.model.application.provider.FilesApplicationPackage;
+import com.yahoo.config.model.application.provider.MockFileRegistry;
import com.yahoo.config.provision.AllocatedHosts;
-import com.yahoo.component.Version;
import com.yahoo.io.IOUtils;
import com.yahoo.path.Path;
+import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.mock.MockCurator;
-import com.yahoo.vespa.config.server.zookeeper.ConfigCurator;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
@@ -33,7 +34,7 @@ public class ZooKeeperDeployerTest {
@Test
public void require_that_deployer_is_initialized() throws IOException {
- ConfigCurator zkfacade = ConfigCurator.create(new MockCurator());
+ Curator curator = new MockCurator();
File serverdbDir = folder.newFolder("serverdb");
File defsDir = new File(serverdbDir, "serverdefs");
try {
@@ -42,21 +43,22 @@ public class ZooKeeperDeployerTest {
e.printStackTrace();
fail();
}
- deploy(FilesApplicationPackage.fromFile(new File("src/test/apps/content")), zkfacade, Path.fromString("/1"));
- deploy(FilesApplicationPackage.fromFile(new File("src/test/apps/content")), zkfacade, Path.fromString("/2"));
+ deploy(FilesApplicationPackage.fromFile(new File("src/test/apps/content")), curator, Path.fromString("/1"));
+ deploy(FilesApplicationPackage.fromFile(new File("src/test/apps/content")), curator, Path.fromString("/2"));
}
- public void deploy(ApplicationPackage applicationPackage, ConfigCurator configCurator, Path appPath) throws IOException {
+ public void deploy(ApplicationPackage applicationPackage, Curator curator, Path appPath) throws IOException {
MockDeployLogger logger = new MockDeployLogger();
- ZooKeeperClient client = new ZooKeeperClient(configCurator, logger, appPath);
+ ZooKeeperClient client = new ZooKeeperClient(curator, logger, appPath);
ZooKeeperDeployer deployer = new ZooKeeperDeployer(client);
deployer.deploy(applicationPackage, Collections.singletonMap(new Version(1, 0, 0), new MockFileRegistry()), AllocatedHosts.withHosts(Collections.emptySet()));
- assertTrue(configCurator.exists(appPath.getAbsolute()));
+ assertTrue(curator.exists(appPath));
}
private static class MockDeployLogger implements DeployLogger {
@Override
public void log(Level level, String message) { }
}
+
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/FileDBRegistryTestCase.java b/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/FileDBRegistryTestCase.java
new file mode 100644
index 00000000000..c322990b8d1
--- /dev/null
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/FileDBRegistryTestCase.java
@@ -0,0 +1,67 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.config.server.filedistribution;
+
+import com.yahoo.config.FileReference;
+import com.yahoo.config.application.api.FileRegistry;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.StringReader;
+import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
+import java.util.Set;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+/**
+ * @author Tony Vaagenes
+ */
+public class FileDBRegistryTestCase {
+
+ private static final String BLOB = "Some blob";
+ private static final String APP = "src/test/apps/zkapp";
+ private static final String FOO_FILE = "files/foo.json";
+ private static final String NO_FOO_FILE = "files/no_foo.json";
+ private static final String BLOB_NAME = "myblob.name";
+ private static final FileReference BLOB_REF = new FileReference("12f292a25163dd9");
+ private static final FileReference FOO_REF = new FileReference("b5ce94ca1feae86c");
+
+ @Test
+ public void importAndExport() throws IOException {
+ TemporaryFolder tmpDir = new TemporaryFolder();
+ tmpDir.create();
+ AddFileInterface fileManager = new ApplicationFileManager(new File(APP), new FileDirectory(tmpDir.newFolder()));
+ FileRegistry fileRegistry = new FileDBRegistry(fileManager);
+ assertEquals(FOO_REF, fileRegistry.addFile(FOO_FILE));
+ try {
+ fileRegistry.addFile(NO_FOO_FILE);
+ fail();
+ } catch (IllegalArgumentException e) {
+ assertEquals("src/test/apps/zkapp/files/no_foo.json (No such file or directory)", e.getCause().getMessage());
+ }
+ assertEquals(BLOB_REF, fileRegistry.addBlob(BLOB_NAME, ByteBuffer.wrap(BLOB.getBytes(StandardCharsets.UTF_8))));
+ String serializedRegistry = FileDBRegistry.exportRegistry(fileRegistry);
+
+ FileDBRegistry importedRegistry = FileDBRegistry.create(fileManager, new StringReader(serializedRegistry));
+
+ assertEquals(Set.of(BLOB_NAME, FOO_FILE), importedRegistry.getMap().keySet());
+ assertEquals(BLOB_REF, importedRegistry.getMap().get(BLOB_NAME));
+ assertEquals(FOO_REF, importedRegistry.getMap().get(FOO_FILE));
+
+ assertEquals(2, importedRegistry.export().size());
+
+ checkConsistentEntry(fileRegistry.export().get(0), importedRegistry);
+ checkConsistentEntry(fileRegistry.export().get(1), importedRegistry);
+
+ assertEquals(new FileReference("non-existing-file"), importedRegistry.addFile(NO_FOO_FILE));
+ assertEquals(2, importedRegistry.export().size());
+ tmpDir.delete();
+ }
+
+ void checkConsistentEntry(FileRegistry.Entry entry, FileRegistry registry) {
+ assertEquals(entry.reference, registry.addFile(entry.relativePath));
+ }
+}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/FileDirectoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/FileDirectoryTest.java
index 400ae4734af..dd13a8f5f58 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/FileDirectoryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/FileDirectoryTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.filedistribution;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/FileServerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/FileServerTest.java
index 2b595992cdb..1f2efdfe17b 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/FileServerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/FileServerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.filedistribution;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/MockFileDistributionFactory.java b/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/MockFileDistributionFactory.java
index af55dc6a90e..3ac621f7ac4 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/MockFileDistributionFactory.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/MockFileDistributionFactory.java
@@ -1,7 +1,8 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.filedistribution;
import com.yahoo.cloud.config.ConfigserverConfig;
+import com.yahoo.config.application.api.FileRegistry;
import java.io.File;
@@ -15,8 +16,13 @@ public class MockFileDistributionFactory extends FileDistributionFactory {
}
@Override
- public com.yahoo.vespa.config.server.filedistribution.FileDistributionProvider createProvider(File applicationFile) {
- return new MockFileDistributionProvider(applicationFile, new File(configserverConfig.fileReferencesDir()));
+ public FileRegistry createFileRegistry(File applicationPackage) {
+ return new MockFileRegistry(applicationPackage, getFileReferencesDir().toPath());
+ }
+
+ @Override
+ public AddFileInterface createFileManager(File applicationDir) {
+ return new MockFileManager();
}
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/MockFileDistributionProvider.java b/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/MockFileDistributionProvider.java
deleted file mode 100644
index 70b03fcdd36..00000000000
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/MockFileDistributionProvider.java
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.config.server.filedistribution;
-
-import java.io.File;
-
-/**
- * @author hmusum
- */
-public class MockFileDistributionProvider extends FileDistributionProvider {
-
- public MockFileDistributionProvider(File applicationDir, File fileReferencesDir) {
- super(new MockFileRegistry(applicationDir, fileReferencesDir.toPath()),
- new MockFileDistribution(fileReferencesDir));
- }
-
-}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/MockFileRegistry.java b/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/MockFileRegistry.java
index 723adc1400b..be2d087478d 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/MockFileRegistry.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/filedistribution/MockFileRegistry.java
@@ -1,12 +1,11 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.filedistribution;
import com.yahoo.config.FileReference;
import com.yahoo.config.application.api.FileRegistry;
-import com.yahoo.net.HostName;
-import net.jpountz.xxhash.XXHashFactory;
import java.io.File;
+import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.file.Path;
import java.util.ArrayList;
@@ -30,15 +29,17 @@ public class MockFileRegistry implements FileRegistry {
public FileReference addFile(String relativePath) {
if (relativePath.isEmpty())
relativePath = "./";
- addFileInterface.addFile(relativePath);
- FileReference fileReference = new FileReference(relativePath);
- entries.add(new Entry(relativePath, fileReference));
- return fileReference;
- }
+ try {
+ addFileInterface.addFile(relativePath);
- @Override
- public String fileSourceHost() { return HostName.getLocalhost(); }
+ FileReference fileReference = new FileReference(relativePath);
+ entries.add(new Entry(relativePath, fileReference));
+ return fileReference;
+ } catch (IOException e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
public List<Entry> export() { return entries; }
@@ -48,9 +49,8 @@ public class MockFileRegistry implements FileRegistry {
}
@Override
- public FileReference addBlob(ByteBuffer blob) {
- long blobHash = XXHashFactory.fastestJavaInstance().hash64().hash(blob, 0);
- String relativePath = "./" + Long.toHexString(blobHash) + ".blob";
+ public FileReference addBlob(String name, ByteBuffer blob) {
+ String relativePath = "./" + name;
FileReference fileReference = addFileInterface.addBlob(blob, relativePath);
entries.add(new Entry(relativePath, fileReference));
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/host/HostRegistryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/host/HostRegistryTest.java
index 173e9f3e148..f7d55a34e33 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/host/HostRegistryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/host/HostRegistryTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.host;
import com.yahoo.config.provision.ApplicationId;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/ContentHandlerTestBase.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/ContentHandlerTestBase.java
index d231c7ac60f..3c9940679b9 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/ContentHandlerTestBase.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/ContentHandlerTestBase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.google.common.base.Joiner;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HandlerTest.java
index 6047aa1dbc5..f681dbbc152 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.yahoo.container.jdisc.HttpResponse;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpConfigRequestTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpConfigRequestTest.java
index d28aa804c6f..96a1c123da5 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpConfigRequestTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpConfigRequestTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.yahoo.container.jdisc.HttpRequest;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpConfigResponseTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpConfigResponseTest.java
index ef0a5f6113d..3044c0c0787 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpConfigResponseTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpConfigResponseTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.yahoo.config.SimpletypesConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpErrorResponseTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpErrorResponseTest.java
index 3fe52fe9691..0023e4dc701 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpErrorResponseTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpErrorResponseTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import org.junit.Test;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpGetConfigHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpGetConfigHandlerTest.java
index 67992d817d0..8816e695e64 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpGetConfigHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpGetConfigHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpHandlerTest.java
index 7b1dad40e13..e055473a245 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.yahoo.container.jdisc.HttpRequest;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpListConfigsHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpListConfigsHandlerTest.java
index bfd4b1aff37..45c74f0d49f 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpListConfigsHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpListConfigsHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/SecretStoreValidatorTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/SecretStoreValidatorTest.java
index ed668bfef15..f07c822c4ac 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/SecretStoreValidatorTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/SecretStoreValidatorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.github.tomakehurst.wiremock.junit.WireMockRule;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/SessionHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/SessionHandlerTest.java
index b845976c2d0..6bd20a29cf8 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/SessionHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/SessionHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http;
import com.yahoo.container.jdisc.HttpRequest;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/status/StatusHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/status/StatusHandlerTest.java
index 22bf582668e..18fa307a9d3 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/status/StatusHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/status/StatusHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.status;
import com.fasterxml.jackson.databind.JsonNode;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java
index 1142c756f94..00135a0a11e 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationContentHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java
index 46d94ec476b..5706851943e 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ApplicationHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HostHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HostHandlerTest.java
index eaf98a89d35..6bbbc451094 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HostHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HostHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HttpGetConfigHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HttpGetConfigHandlerTest.java
index 58de09088da..c59375a6085 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HttpGetConfigHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HttpGetConfigHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HttpListConfigsHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HttpListConfigsHandlerTest.java
index 943ff9b0fd1..141f8a52f13 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HttpListConfigsHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/HttpListConfigsHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ListApplicationsHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ListApplicationsHandlerTest.java
index 3360ea1c099..26346cd8ffe 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ListApplicationsHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/ListApplicationsHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java
index a51346148d2..cb0d2129112 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandlerTest.java
index 0d4af43d3ba..7b14579d79c 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionContentHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandlerTest.java
index 5d7322070e7..fced32251ad 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import com.yahoo.cloud.config.ConfigserverConfig;
@@ -71,11 +71,14 @@ public class SessionCreateHandlerTest extends SessionHandlerTest {
@Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();
+ private ConfigserverConfig configserverConfig;
+
@Before
public void setupRepo() throws IOException {
- ConfigserverConfig configserverConfig = new ConfigserverConfig.Builder()
+ configserverConfig = new ConfigserverConfig.Builder()
.configServerDBDir(temporaryFolder.newFolder().getAbsolutePath())
.configDefinitionsDir(temporaryFolder.newFolder().getAbsolutePath())
+ .fileReferencesDir(temporaryFolder.newFolder().getAbsolutePath())
.build();
TenantRepository tenantRepository = new TestTenantRepository.Builder()
.withConfigserverConfig(configserverConfig)
@@ -196,7 +199,7 @@ public class SessionCreateHandlerTest extends SessionHandlerTest {
private SessionCreateHandler createHandler() {
return new SessionCreateHandler(SessionCreateHandler.testOnlyContext(),
applicationRepository,
- new ConfigserverConfig.Builder().build());
+ configserverConfig);
}
private HttpRequest post() throws FileNotFoundException {
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java
index 584caad4ded..0afe742f345 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import com.google.common.util.concurrent.UncheckedTimeoutException;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/TenantHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/TenantHandlerTest.java
index a6cf6d24c88..b8bd35a564a 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/TenantHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/TenantHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.http.v2;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/MaintainerTester.java b/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/MaintainerTester.java
index 8d549c8d423..ff6fc7d74c5 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/MaintainerTester.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/MaintainerTester.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.maintenance;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/ReindexingMaintainerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/ReindexingMaintainerTest.java
index dc4932c8c04..03b872a3d72 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/ReindexingMaintainerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/ReindexingMaintainerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.maintenance;
import com.yahoo.vespa.config.server.application.ApplicationReindexing;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainerTest.java
index a072bf62852..4aad449537a 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/maintenance/TenantsMaintainerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.maintenance;
import com.yahoo.config.provision.ApplicationId;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/metrics/DeploymentMetricsRetrieverTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/metrics/DeploymentMetricsRetrieverTest.java
index 865d3b71b6e..938b43dfa78 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/metrics/DeploymentMetricsRetrieverTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/metrics/DeploymentMetricsRetrieverTest.java
@@ -3,14 +3,12 @@ package com.yahoo.vespa.config.server.metrics;
import com.yahoo.config.ConfigInstance;
import com.yahoo.config.FileReference;
-import com.yahoo.config.model.api.FileDistribution;
import com.yahoo.config.model.api.HostInfo;
import com.yahoo.config.model.api.Model;
import com.yahoo.config.model.api.ServiceInfo;
import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.vespa.config.ConfigKey;
-import com.yahoo.vespa.config.ConfigPayload;
import com.yahoo.vespa.config.buildergen.ConfigDefinition;
import com.yahoo.vespa.config.server.application.Application;
import org.junit.Test;
@@ -104,11 +102,6 @@ public class DeploymentMetricsRetrieverTest {
}
@Override
- public void distributeFiles(FileDistribution fileDistribution) {
- throw new UnsupportedOperationException();
- }
-
- @Override
public Set<FileReference> fileReferences() { return new HashSet<>(); }
@Override
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/metrics/ProtonMetricsRetrieverTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/metrics/ProtonMetricsRetrieverTest.java
index 0aad2f1ee26..a7b080b2900 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/metrics/ProtonMetricsRetrieverTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/metrics/ProtonMetricsRetrieverTest.java
@@ -1,18 +1,18 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.metrics;
import com.yahoo.config.ConfigInstance;
import com.yahoo.config.FileReference;
-import com.yahoo.config.model.api.FileDistribution;
import com.yahoo.config.model.api.HostInfo;
import com.yahoo.config.model.api.Model;
import com.yahoo.config.model.api.ServiceInfo;
import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.vespa.config.ConfigKey;
-import com.yahoo.vespa.config.ConfigPayload;
import com.yahoo.vespa.config.buildergen.ConfigDefinition;
import com.yahoo.vespa.config.server.application.Application;
+import org.junit.Test;
+
import java.net.URI;
import java.util.ArrayList;
import java.util.Collection;
@@ -20,7 +20,6 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import org.junit.Test;
import static org.junit.Assert.assertEquals;
@@ -98,11 +97,6 @@ public class ProtonMetricsRetrieverTest {
}
@Override
- public void distributeFiles(FileDistribution fileDistribution) {
- throw new UnsupportedOperationException();
- }
-
- @Override
public Set<FileReference> fileReferences() { return new HashSet<>(); }
@Override
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/model/LbServicesProducerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/model/LbServicesProducerTest.java
index e94a99f59d7..d4f7b610360 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/model/LbServicesProducerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/model/LbServicesProducerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.model;
import com.yahoo.cloud.config.LbServicesConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/model/TestModelFactory.java b/configserver/src/test/java/com/yahoo/vespa/config/server/model/TestModelFactory.java
index 65994a41eae..b5e88297a3a 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/model/TestModelFactory.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/model/TestModelFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.model;
import com.yahoo.config.model.ConfigModelRegistry;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/monitoring/ZKMetricUpdaterTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/monitoring/ZKMetricUpdaterTest.java
index 76a97927e78..74b7c654e6e 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/monitoring/ZKMetricUpdaterTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/monitoring/ZKMetricUpdaterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.monitoring;
import com.yahoo.cloud.config.ZookeeperServerConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/provision/StaticProvisionerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/provision/StaticProvisionerTest.java
index 5d465e20ce0..3137272b35b 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/provision/StaticProvisionerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/provision/StaticProvisionerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.provision;
import com.yahoo.cloud.config.ModelConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/ConfigResponseFactoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/ConfigResponseFactoryTest.java
index 747a0ad3241..47094abb910 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/ConfigResponseFactoryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/ConfigResponseFactoryTest.java
@@ -1,34 +1,81 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.rpc;
import com.yahoo.vespa.config.ConfigPayload;
+import com.yahoo.vespa.config.PayloadChecksum;
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.vespa.config.protocol.CompressionType;
import com.yahoo.vespa.config.protocol.ConfigResponse;
+import com.yahoo.vespa.config.protocol.Payload;
import org.junit.Test;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.MD5;
+import static com.yahoo.vespa.config.PayloadChecksum.Type.XXHASH64;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
/**
* @author Ulf Lilleengen
*/
public class ConfigResponseFactoryTest {
+ private static final ConfigPayload payload = ConfigPayload.fromString("{ \"field1\": 11, \"field2\": 11 }");
+
+ private static final PayloadChecksums payloadChecksums = PayloadChecksums.fromPayload(Payload.from(payload));
+ private static final PayloadChecksums payloadChecksumsEmpty = PayloadChecksums.empty();
+ private static final PayloadChecksums payloadChecksumsOnlyMd5 =
+ PayloadChecksums.from(PayloadChecksum.fromPayload(Payload.from(payload), MD5));
+ private static final PayloadChecksums payloadChecksumsOnlyXxhash64 =
+ PayloadChecksums.from(PayloadChecksum.fromPayload(Payload.from(payload), XXHASH64));
+
@Test
public void testUncompressedFactory() {
UncompressedConfigResponseFactory responseFactory = new UncompressedConfigResponseFactory();
- ConfigResponse response = responseFactory.createResponse(ConfigPayload.empty().toUtf8Array(true), 3, false);
+ ConfigResponse response = responseFactory.createResponse(payload.toUtf8Array(true), 3, false, payloadChecksums);
assertEquals(CompressionType.UNCOMPRESSED, response.getCompressionInfo().getCompressionType());
assertEquals(3L,response.getGeneration());
- assertEquals(2, response.getPayload().getByteLength());
+ assertEquals(25, response.getPayload().getByteLength());
+ assertEquals(payloadChecksums, response.getPayloadChecksums());
}
@Test
public void testLZ4CompressedFactory() {
+ // md5 and xxhash64 checksums in request, both md5 and xxhash64 checksums should be in response
+ {
+ ConfigResponse response = createResponse(payloadChecksums);
+ assertEquals(payloadChecksums, response.getPayloadChecksums());
+ }
+
+ // Empty md5 and xxhash64 checksums in request, both md5 and xxhash64 checksum should be in response
+ {
+ ConfigResponse response = createResponse(payloadChecksumsEmpty);
+ assertEquals(payloadChecksums.getForType(MD5), response.getPayloadChecksums().getForType(MD5));
+ assertEquals(payloadChecksums.getForType(XXHASH64), response.getPayloadChecksums().getForType(XXHASH64));
+ }
+
+ // md5 checksum and no xxhash64 checksum in request, md5 and xxhash6 checksum in response
+ {
+ ConfigResponse response = createResponse(payloadChecksumsOnlyMd5);
+ assertEquals(payloadChecksumsOnlyMd5.getForType(MD5), response.getPayloadChecksums().getForType(MD5));
+ assertEquals(payloadChecksums.getForType(XXHASH64), response.getPayloadChecksums().getForType(XXHASH64));
+ }
+
+ // Only xxhash64 checksum in request, only xxhash64 checksums in response
+ {
+ ConfigResponse response = createResponse(payloadChecksumsOnlyXxhash64);
+ assertNull(response.getPayloadChecksums().getForType(MD5));
+ assertEquals(payloadChecksumsOnlyXxhash64.getForType(XXHASH64), response.getPayloadChecksums().getForType(XXHASH64));
+ }
+ }
+
+ private ConfigResponse createResponse(PayloadChecksums payloadChecksums) {
LZ4ConfigResponseFactory responseFactory = new LZ4ConfigResponseFactory();
- ConfigResponse response = responseFactory.createResponse(ConfigPayload.empty().toUtf8Array(true), 3, false);
+ ConfigResponse response = responseFactory.createResponse(payload.toUtf8Array(true), 3, false, payloadChecksums);
assertEquals(CompressionType.LZ4, response.getCompressionInfo().getCompressionType());
assertEquals(3L, response.getGeneration());
- assertEquals(3, response.getPayload().getByteLength());
+ assertEquals(23, response.getPayload().getByteLength());
+
+ return response;
}
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/DelayedConfigResponseTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/DelayedConfigResponseTest.java
index 8c62fe77557..21e1c1f3448 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/DelayedConfigResponseTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/DelayedConfigResponseTest.java
@@ -1,13 +1,12 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.rpc;
import com.yahoo.config.provision.ApplicationId;
-
+import com.yahoo.vespa.config.PayloadChecksums;
import com.yahoo.jrt.Request;
import com.yahoo.vespa.config.ConfigKey;
import com.yahoo.vespa.config.protocol.CompressionType;
import com.yahoo.vespa.config.protocol.DefContent;
-import com.yahoo.vespa.config.protocol.JRTClientConfigRequestV3;
import com.yahoo.vespa.config.protocol.JRTServerConfigRequest;
import com.yahoo.vespa.config.protocol.JRTServerConfigRequestV3;
import com.yahoo.vespa.config.protocol.Trace;
@@ -22,6 +21,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Optional;
+import static com.yahoo.vespa.config.protocol.JRTClientConfigRequestV3.createWithParams;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
@@ -29,7 +29,6 @@ import static org.junit.Assert.assertTrue;
/**
* @author Ulf Lilleengen
- * @since 5.1
*/
public class DelayedConfigResponseTest {
@@ -42,7 +41,7 @@ public class DelayedConfigResponseTest {
MockRpcServer rpc = new MockRpcServer(13337, temporaryFolder.newFolder());
DelayedConfigResponses responses = new DelayedConfigResponses(rpc, 1, false);
assertThat(responses.size(), is(0));
- JRTServerConfigRequest req = createRequest("foo", "md5", "myid", "mymd5", 3, 1000000, "bar");
+ JRTServerConfigRequest req = createRequest("foo", "myid", 3, 1000000, "bar");
req.setDelayedResponse(true);
GetConfigContext context = GetConfigContext.testContext(ApplicationId.defaultId());
responses.delayResponse(req, context);
@@ -50,7 +49,7 @@ public class DelayedConfigResponseTest {
req.setDelayedResponse(false);
responses.delayResponse(req, context);
- responses.delayResponse(createRequest("foolio", "md5", "myid", "mymd5", 3, 100000, "bar"), context);
+ responses.delayResponse(createRequest("foolio", "myid", 3, 100000, "bar"), context);
assertThat(responses.size(), is(2));
assertTrue(req.isDelayedResponse());
List<DelayedConfigResponses.DelayedConfigResponse> it = responses.allDelayedResponses();
@@ -62,7 +61,7 @@ public class DelayedConfigResponseTest {
GetConfigContext context = GetConfigContext.testContext(ApplicationId.defaultId());
MockRpcServer rpc = new MockRpcServer(13337, temporaryFolder.newFolder());
DelayedConfigResponses responses = new DelayedConfigResponses(rpc, 1, false);
- responses.delayResponse(createRequest("foolio", "md5", "myid", "mymd5", 3, 100000, "bar"), context);
+ responses.delayResponse(createRequest("foolio", "myid", 3, 100000, "bar"), context);
assertThat(responses.size(), is(1));
responses.allDelayedResponses().get(0).cancelAndRemove();
assertThat(responses.size(), is(0));
@@ -74,17 +73,18 @@ public class DelayedConfigResponseTest {
DelayedConfigResponses responses = new DelayedConfigResponses(rpc, 1, false);
assertThat(responses.size(), is(0));
assertThat(responses.toString(), is("DelayedConfigResponses. Average Size=0"));
- JRTServerConfigRequest req = createRequest("foo", "md5", "myid", "mymd5", 3, 100, "bar");
+ JRTServerConfigRequest req = createRequest("foo", "myid", 3, 100, "bar");
responses.delayResponse(req, GetConfigContext.testContext(ApplicationId.defaultId()));
rpc.waitUntilSet(Duration.ofSeconds(5));
assertThat(rpc.latestRequest, is(req));
}
- private JRTServerConfigRequest createRequest(String configName, String defMd5, String configId, String md5, long generation, long timeout, String namespace) {
- Request request = JRTClientConfigRequestV3.
- createWithParams(new ConfigKey<>(configName, configId, namespace, defMd5, null), DefContent.fromList(Collections.emptyList()),
- "fromHost", md5, generation, timeout, Trace.createDummy(), CompressionType.UNCOMPRESSED,
- Optional.empty()).getRequest();
+ private JRTServerConfigRequest createRequest(String configName, String configId, long generation, long timeout, String namespace) {
+ Request request = createWithParams(new ConfigKey<>(configName, configId, namespace, null),
+ DefContent.fromList(Collections.emptyList()), "fromHost",
+ PayloadChecksums.empty(), generation, timeout, Trace.createDummy(),
+ CompressionType.UNCOMPRESSED, Optional.empty())
+ .getRequest();
return JRTServerConfigRequestV3.createFromRequest(request);
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/MockRpcServer.java b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/MockRpcServer.java
index 997633eeb53..3272689473e 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/MockRpcServer.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/MockRpcServer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.rpc;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcServerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcServerTest.java
index 55a6572ce3b..1b8a7ca2ad6 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcServerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcServerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.rpc;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcTester.java b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcTester.java
index 135603def69..e8749334448 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcTester.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/RpcTester.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.rpc;
import com.yahoo.cloud.config.ConfigserverConfig;
@@ -114,7 +114,7 @@ public class RpcTester implements AutoCloseable {
}
RpcServer createRpcServer(ConfigserverConfig config) throws IOException {
- return new RpcServer(config,
+ RpcServer rpcServer = new RpcServer(config,
new SuperModelRequestHandler(new TestConfigDefinitionRepo(),
configserverConfig,
new SuperModelManager(
@@ -128,6 +128,8 @@ public class RpcTester implements AutoCloseable {
new FileServer(temporaryFolder.newFolder()),
new NoopRpcAuthorizer(),
new RpcRequestHandlerProvider());
+ rpcServer.setUpGetConfigHandlers();
+ return rpcServer;
}
void startRpcServer() {
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/security/MultiTenantRpcAuthorizerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/security/MultiTenantRpcAuthorizerTest.java
index 12debc347de..2a672a7fb63 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/security/MultiTenantRpcAuthorizerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/security/MultiTenantRpcAuthorizerTest.java
@@ -1,5 +1,5 @@
// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.config.server.rpc.security;// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.config.server.rpc.security;// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.cloud.config.LbServicesConfig;
import com.yahoo.cloud.config.SentinelConfig;
@@ -264,7 +264,7 @@ public class MultiTenantRpcAuthorizerTest {
Cursor request = data.setObject();
request.setString("defName", configKey.getName());
request.setString("defNamespace", configKey.getNamespace());
- request.setString("defMD5", configKey.getMd5());
+ request.setString("defMD5", "");
request.setString("configId", configKey.getConfigId());
request.setString("clientHostname", hostname);
try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/DummyTransaction.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/DummyTransaction.java
index cb52cfc9cc5..309031ef809 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/DummyTransaction.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/DummyTransaction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.session;
import com.yahoo.transaction.Transaction;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/MockSessionZKClient.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/MockSessionZKClient.java
deleted file mode 100644
index 0451ef84e09..00000000000
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/MockSessionZKClient.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.config.server.session;
-
-import com.yahoo.config.application.api.ApplicationPackage;
-import com.yahoo.config.model.test.MockApplicationPackage;
-import com.yahoo.config.provision.AllocatedHosts;
-import com.yahoo.config.provision.TenantName;
-import com.yahoo.vespa.config.server.tenant.TenantRepository;
-import com.yahoo.vespa.config.server.zookeeper.ConfigCurator;
-import com.yahoo.vespa.config.util.ConfigUtils;
-import com.yahoo.vespa.curator.Curator;
-
-import java.util.Optional;
-
-/**
- * Overrides application package fetching, because this part is hard to do without feeding a full app.
- *
- * @author Ulf Lilleengen
- */
-public class MockSessionZKClient extends SessionZooKeeperClient {
-
- private final ApplicationPackage app;
- private Optional<AllocatedHosts> info = Optional.empty();
-
- public MockSessionZKClient(Curator curator, TenantName tenantName, long sessionId) {
- this(curator, tenantName, sessionId, (ApplicationPackage) null);
- }
-
- public MockSessionZKClient(Curator curator, TenantName tenantName, long sessionId, Optional<AllocatedHosts> allocatedHosts) {
- this(curator, tenantName, sessionId);
- this.info = allocatedHosts;
- }
-
- MockSessionZKClient(Curator curator, TenantName tenantName, long sessionId, ApplicationPackage application) {
- super(curator,
- ConfigCurator.create(curator),
- tenantName,
- sessionId,
- ConfigUtils.getCanonicalHostName());
- this.app = application;
- curator.create(TenantRepository.getSessionsPath(tenantName).append(String.valueOf(sessionId)));
- }
-
- @Override
- public ApplicationPackage loadApplicationPackage() {
- if (app != null) return app;
- return new MockApplicationPackage.Builder().withEmptyServices().build();
- }
-
- @Override
- AllocatedHosts getAllocatedHosts() {
- return info.orElseThrow(() -> new IllegalStateException("Could not find allocated hosts"));
- }
-
-}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/PrepareParamsTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/PrepareParamsTest.java
index f68e79ae266..366f936c318 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/PrepareParamsTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/PrepareParamsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.session;
import com.yahoo.config.model.api.ApplicationRoles;
@@ -117,28 +117,6 @@ public class PrepareParamsTest {
}
@Test
- public void testCorrectParsingWithApplicationRoles() throws IOException {
- String req = request + "&" +
- PrepareParams.APPLICATION_HOST_ROLE + "=hostRole&" +
- PrepareParams.APPLICATION_CONTAINER_ROLE + "=containerRole";
- var prepareParams = createParams(req, TenantName.from("foo"));
-
- Optional<ApplicationRoles> applicationRoles = prepareParams.applicationRoles();
- assertTrue(applicationRoles.isPresent());
- assertEquals("hostRole", applicationRoles.get().applicationHostRole());
- assertEquals("containerRole", applicationRoles.get().applicationContainerRole());
-
- // Verify using json object
- var slime = SlimeUtils.jsonToSlime(json);
- var cursor = slime.get();
- cursor.setString(PrepareParams.APPLICATION_HOST_ROLE, "hostRole");
- cursor.setString(PrepareParams.APPLICATION_CONTAINER_ROLE, "containerRole");
-
- PrepareParams prepareParamsJson = PrepareParams.fromJson(SlimeUtils.toJsonBytes(slime), TenantName.from("foo"), Duration.ofSeconds(60));
- assertPrepareParamsEqual(prepareParams, prepareParamsJson);
- }
-
- @Test
public void testQuotaParsing() throws IOException {
var quotaParam = "{\"clusterSize\": 23, \"budget\": 23232323}";
var quotaEncoded = URLEncoder.encode(quotaParam, StandardCharsets.UTF_8);
@@ -239,7 +217,6 @@ public class PrepareParamsTest {
assertEquals(urlParams.endpointCertificateMetadata(), jsonParams.endpointCertificateMetadata());
assertEquals(urlParams.dockerImageRepository(), jsonParams.dockerImageRepository());
assertEquals(urlParams.athenzDomain(), jsonParams.athenzDomain());
- assertEquals(urlParams.applicationRoles(), jsonParams.applicationRoles());
assertEquals(urlParams.quota(), jsonParams.quota());
assertEquals(urlParams.tenantSecretStores(), jsonParams.tenantSecretStores());
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java
index 4995dc0decc..8c172a04d36 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java
@@ -1,8 +1,9 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.session;
import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.component.Version;
+import com.yahoo.concurrent.InThreadExecutorService;
import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.config.model.api.ContainerEndpoint;
@@ -39,7 +40,7 @@ import com.yahoo.vespa.config.server.tenant.ContainerEndpointsCache;
import com.yahoo.vespa.config.server.tenant.EndpointCertificateMetadataStore;
import com.yahoo.vespa.config.server.tenant.EndpointCertificateRetriever;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
-import com.yahoo.vespa.config.server.zookeeper.ConfigCurator;
+import com.yahoo.vespa.config.server.zookeeper.ZKApplication;
import com.yahoo.vespa.config.util.ConfigUtils;
import com.yahoo.vespa.curator.mock.MockCurator;
import com.yahoo.vespa.flags.InMemoryFlagSource;
@@ -87,7 +88,6 @@ public class SessionPreparerTest {
Instant.now(), Instant.now().plus(1, ChronoUnit.DAYS), SignatureAlgorithm.SHA512_WITH_ECDSA, BigInteger.valueOf(12345)).build();
private final InMemoryFlagSource flagSource = new InMemoryFlagSource();
private MockCurator curator;
- private ConfigCurator configCurator;
private SessionPreparer preparer;
private final MockSecretStore secretStore = new MockSecretStore();
private ConfigserverConfig configserverConfig;
@@ -101,7 +101,6 @@ public class SessionPreparerTest {
@Before
public void setUp() throws IOException {
curator = new MockCurator();
- configCurator = ConfigCurator.create(curator);
configserverConfig = new ConfigserverConfig.Builder()
.fileReferencesDir(folder.newFolder().getAbsolutePath())
.configServerDBDir(folder.newFolder().getAbsolutePath())
@@ -125,6 +124,7 @@ public class SessionPreparerTest {
return new SessionPreparer(
modelFactoryRegistry,
new MockFileDistributionFactory(configserverConfig),
+ new InThreadExecutorService(),
hostProvisionerProvider,
new PermanentApplicationPackage(configserverConfig),
configserverConfig,
@@ -162,7 +162,7 @@ public class SessionPreparerTest {
.build(),
sessionId);
Path sessionPath = sessionPath(sessionId);
- assertFalse(configCurator.exists(sessionPath.append(ConfigCurator.USERAPP_ZK_SUBPATH).append("services.xml").getAbsolute()));
+ assertFalse(curator.exists(sessionPath.append(ZKApplication.USERAPP_ZK_SUBPATH).append("services.xml")));
}
@Test
@@ -181,7 +181,7 @@ public class SessionPreparerTest {
@Test
public void require_that_application_is_prepared() throws Exception {
prepare(testApp);
- assertTrue(configCurator.exists(sessionPath(1).append(ConfigCurator.USERAPP_ZK_SUBPATH).append("services.xml").getAbsolute()));
+ assertTrue(curator.exists(sessionPath(1).append(ZKApplication.USERAPP_ZK_SUBPATH).append("services.xml")));
}
@Test(expected = InvalidApplicationException.class)
@@ -234,7 +234,7 @@ public class SessionPreparerTest {
@Test
public void require_that_file_reference_of_application_package_is_written_to_zk() throws Exception {
prepare(testApp);
- assertTrue(configCurator.exists(sessionPath(1).append(APPLICATION_PACKAGE_REFERENCE_PATH).getAbsolute()));
+ assertTrue(curator.exists(sessionPath(1).append(APPLICATION_PACKAGE_REFERENCE_PATH)));
}
@Test
@@ -376,7 +376,10 @@ public class SessionPreparerTest {
}
private SessionZooKeeperClient createSessionZooKeeperClient(long sessionId) {
- return new SessionZooKeeperClient(curator, configCurator, applicationId().tenant(), sessionId, ConfigUtils.getCanonicalHostName());
+ return new SessionZooKeeperClient(curator,
+ applicationId().tenant(),
+ sessionId,
+ ConfigUtils.getCanonicalHostName());
}
private Path sessionPath(long sessionId) {
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java
index 3fa00e3ecc3..feae135a508 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionRepositoryTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.session;
import com.yahoo.cloud.config.ConfigserverConfig;
@@ -28,7 +28,6 @@ import com.yahoo.vespa.config.server.http.InvalidApplicationException;
import com.yahoo.vespa.config.server.modelfactory.ModelFactoryRegistry;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
import com.yahoo.vespa.config.server.tenant.TestTenantRepository;
-import com.yahoo.vespa.config.server.zookeeper.ConfigCurator;
import com.yahoo.vespa.config.util.ConfigUtils;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.mock.MockCurator;
@@ -193,7 +192,7 @@ public class SessionRepositoryTest {
expectedException.expectMessage("Could not load remote session " + sessionIdString);
expectedException.expect(RuntimeException.class);
- sessionRepository.loadSessions(false, new InThreadExecutorService());
+ sessionRepository.loadSessions(new InThreadExecutorService());
assertThat(sessionRepository.getRemoteSessionsFromZooKeeper().size(), is(0));
}
@@ -285,7 +284,6 @@ public class SessionRepositoryTest {
private void createSession(long sessionId, boolean wait) {
SessionZooKeeperClient zkc = new SessionZooKeeperClient(curator,
- ConfigCurator.create(curator),
tenantName,
sessionId,
ConfigUtils.getCanonicalHostName());
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionTest.java
index 1e1314311a6..b657e02d287 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionTest.java
@@ -1,11 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.session;
+import com.yahoo.concurrent.InThreadExecutorService;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.config.provision.ApplicationId;
-import com.yahoo.path.Path;
import com.yahoo.vespa.config.server.application.ApplicationSet;
import com.yahoo.vespa.config.server.host.HostValidator;
import com.yahoo.vespa.curator.mock.MockCurator;
@@ -24,7 +24,7 @@ public class SessionTest {
public static class MockSessionPreparer extends SessionPreparer {
public MockSessionPreparer() {
- super(null, null, null, null, null, null, new MockCurator(), null, null, null);
+ super(null, null, new InThreadExecutorService(), null, null, null, null, new MockCurator(), null, null, null);
}
@Override
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java
index f977011efbc..814c99bd2fb 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.session;
import com.yahoo.config.FileReference;
@@ -9,7 +9,6 @@ import com.yahoo.config.provision.TenantName;
import com.yahoo.path.Path;
import com.yahoo.text.Utf8;
import com.yahoo.vespa.config.server.tenant.TenantRepository;
-import com.yahoo.vespa.config.server.zookeeper.ConfigCurator;
import com.yahoo.vespa.config.util.ConfigUtils;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.mock.MockCurator;
@@ -22,6 +21,7 @@ import java.time.Instant;
import java.util.List;
import java.util.Optional;
+import static com.yahoo.vespa.config.server.zookeeper.ZKApplication.SESSIONSTATE_ZK_SUBPATH;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
@@ -35,7 +35,6 @@ public class SessionZooKeeperClientTest {
private static final TenantName tenantName = TenantName.defaultName();
private Curator curator;
- private ConfigCurator configCurator;
@Rule
public ExpectedException expectedException = ExpectedException.none();
@@ -43,7 +42,6 @@ public class SessionZooKeeperClientTest {
@Before
public void setup() {
curator = new MockCurator();
- configCurator = ConfigCurator.create(curator);
curator.create(sessionsPath());
}
@@ -68,16 +66,16 @@ public class SessionZooKeeperClientTest {
int sessionId = 2;
SessionZooKeeperClient zkc = createSessionZKClient(sessionId);
zkc.writeStatus(Session.Status.NEW);
- String path = sessionPath(sessionId).append(ConfigCurator.SESSIONSTATE_ZK_SUBPATH).getAbsolute();
- assertTrue(configCurator.exists(path));
- assertThat(configCurator.getData(path), is("NEW"));
+ Path path = sessionPath(sessionId).append(SESSIONSTATE_ZK_SUBPATH);
+ assertTrue(curator.exists(path));
+ assertThat(Utf8.toString(curator.getData(path).get()), is("NEW"));
}
@Test
public void require_that_status_is_read_from_zk() {
int sessionId = 3;
SessionZooKeeperClient zkc = createSessionZKClient(sessionId);
- curator.set(sessionPath(sessionId).append(ConfigCurator.SESSIONSTATE_ZK_SUBPATH), Utf8.toBytes("PREPARE"));
+ curator.set(sessionPath(sessionId).append(SESSIONSTATE_ZK_SUBPATH), Utf8.toBytes("PREPARE"));
assertThat(zkc.readStatus(), is(Session.Status.PREPARE));
}
@@ -91,9 +89,9 @@ public class SessionZooKeeperClientTest {
int sessionId = 3;
SessionZooKeeperClient zkc = createSessionZKClient(sessionId);
zkc.writeApplicationId(id);
- String path = sessionPath(sessionId).append(SessionZooKeeperClient.APPLICATION_ID_PATH).getAbsolute();
- assertTrue(configCurator.exists(path));
- assertThat(configCurator.getData(path), is(id.serializedForm()));
+ Path path = sessionPath(sessionId).append(SessionZooKeeperClient.APPLICATION_ID_PATH);
+ assertTrue(curator.exists(path));
+ assertThat(Utf8.toString(curator.getData(path).get()), is(id.serializedForm()));
}
@Test
@@ -163,15 +161,14 @@ public class SessionZooKeeperClientTest {
private void assertApplicationIdParse(long sessionId, String idString, String expectedIdString) {
SessionZooKeeperClient zkc = createSessionZKClient(sessionId);
- String path = sessionPath(sessionId).append(SessionZooKeeperClient.APPLICATION_ID_PATH).getAbsolute();
- configCurator.putData(path, idString);
+ Path path = sessionPath(sessionId).append(SessionZooKeeperClient.APPLICATION_ID_PATH);
+ curator.set(path, Utf8.toBytes(idString));
ApplicationId applicationId = zkc.readApplicationId().get();
assertThat(applicationId.serializedForm(), is(expectedIdString));
}
private SessionZooKeeperClient createSessionZKClient(long sessionId) {
SessionZooKeeperClient zkc = new SessionZooKeeperClient(curator,
- ConfigCurator.create(curator),
tenantName,
sessionId,
ConfigUtils.getCanonicalHostName());
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/ApplicationRolesStoreTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/ApplicationRolesStoreTest.java
index a03ea61ec54..7ec405c3a39 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/ApplicationRolesStoreTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/ApplicationRolesStoreTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.tenant;
import com.yahoo.config.model.api.ApplicationRoles;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointsCacheTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointsCacheTest.java
index 4400b424d1b..99360e7c0bf 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointsCacheTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointsCacheTest.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.tenant;
import com.yahoo.config.model.api.ContainerEndpoint;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/MockTenantListener.java b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/MockTenantListener.java
index 0ad8e43f066..7a0738848da 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/MockTenantListener.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/MockTenantListener.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.tenant;
import com.yahoo.config.provision.TenantName;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/OperatorCertificateSerializerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/OperatorCertificateSerializerTest.java
index b77248f0840..b74a54eff90 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/OperatorCertificateSerializerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/OperatorCertificateSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.tenant;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TenantRepositoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TenantRepositoryTest.java
index 464b3d1ab64..4c99264c805 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TenantRepositoryTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TenantRepositoryTest.java
@@ -1,7 +1,8 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.tenant;
import com.yahoo.cloud.config.ConfigserverConfig;
+import com.yahoo.cloud.config.ZookeeperServerConfig;
import com.yahoo.component.Version;
import com.yahoo.concurrent.InThreadExecutorService;
import com.yahoo.concurrent.StripedExecutor;
@@ -27,7 +28,6 @@ import com.yahoo.vespa.config.server.modelfactory.ModelFactoryRegistry;
import com.yahoo.vespa.config.server.monitoring.MetricUpdater;
import com.yahoo.vespa.config.server.monitoring.Metrics;
import com.yahoo.vespa.config.server.provision.HostProvisionerProvider;
-import com.yahoo.vespa.config.server.zookeeper.ConfigCurator;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.mock.MockCurator;
import com.yahoo.vespa.flags.InMemoryFlagSource;
@@ -208,7 +208,7 @@ public class TenantRepositoryTest {
public FailingDuringBootstrapTenantRepository(ConfigserverConfig configserverConfig) {
super(new HostRegistry(),
- ConfigCurator.create(new MockCurator()),
+ new MockCurator(),
Metrics.createTestMetrics(),
new StripedExecutor<>(new InThreadExecutorService()),
new StripedExecutor<>(new InThreadExecutorService()),
@@ -224,7 +224,8 @@ public class TenantRepositoryTest {
new ModelFactoryRegistry(List.of(new VespaModelFactory(new NullConfigModelRegistry()))),
new TestConfigDefinitionRepo(),
new TenantApplicationsTest.MockReloadListener(),
- new MockTenantListener());
+ new MockTenantListener(),
+ new ZookeeperServerConfig.Builder().myid(0).build());
}
@Override
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TenantTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TenantTest.java
index 31493891b2b..52d45d9ff5c 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TenantTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TenantTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.tenant;
import com.google.common.testing.EqualsTester;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TestTenantRepository.java b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TestTenantRepository.java
index 687d58fd23b..cd92248f00c 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TestTenantRepository.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TestTenantRepository.java
@@ -1,7 +1,8 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.tenant;
import com.yahoo.cloud.config.ConfigserverConfig;
+import com.yahoo.cloud.config.ZookeeperServerConfig;
import com.yahoo.concurrent.InThreadExecutorService;
import com.yahoo.concurrent.StripedExecutor;
import com.yahoo.config.model.NullConfigModelRegistry;
@@ -17,7 +18,6 @@ import com.yahoo.vespa.config.server.host.HostRegistry;
import com.yahoo.vespa.config.server.modelfactory.ModelFactoryRegistry;
import com.yahoo.vespa.config.server.monitoring.Metrics;
import com.yahoo.vespa.config.server.provision.HostProvisionerProvider;
-import com.yahoo.vespa.config.server.zookeeper.ConfigCurator;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.mock.MockCurator;
import com.yahoo.vespa.flags.FlagSource;
@@ -47,7 +47,7 @@ public class TestTenantRepository extends TenantRepository {
ReloadListener reloadListener,
TenantListener tenantListener) {
super(hostRegistry,
- ConfigCurator.create(curator),
+ curator,
metrics,
new StripedExecutor<>(new InThreadExecutorService()),
new StripedExecutor<>(new InThreadExecutorService()),
@@ -63,7 +63,8 @@ public class TestTenantRepository extends TenantRepository {
modelFactoryRegistry,
configDefinitionRepo,
reloadListener,
- tenantListener);
+ tenantListener,
+ new ZookeeperServerConfig.Builder().myid(0).build());
}
public static class Builder {
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/version/VersionStateTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/version/VersionStateTest.java
index 86dbead50cf..ccd330c0193 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/version/VersionStateTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/version/VersionStateTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.version;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/ConfigCuratorTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/ConfigCuratorTest.java
deleted file mode 100644
index 9a8aec72564..00000000000
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/ConfigCuratorTest.java
+++ /dev/null
@@ -1,243 +0,0 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.config.server.zookeeper;
-
-import com.yahoo.text.Utf8;
-import com.yahoo.vespa.curator.mock.MockCurator;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-
-import static org.junit.Assert.*;
-
-/**
- * Tests the ZKFacade using a curator mock.
- *
- * @author hmusum
- */
-public class ConfigCuratorTest {
-
- private final String defKey1 = "attributes";
-
- private final String payload1 = "attribute[5]\n" +
- "attribute[0].name Popularity\n" +
- "attribute[0].datatype string\n" +
- "attribute[0].collectiontype single\n" +
- "attribute[0].removeifzero false\n" +
- "attribute[0].createifnonexistent false\n" +
- "attribute[0].loadtype \"always\"\n" +
- "attribute[0].uniqueonly false\n" +
- "attribute[0].sparse false\n" +
- "attribute[0].noupdate false\n" +
- "attribute[0].fastsearch false\n" +
- "attribute[0].fastaggregate false\n" +
- "attribute[0].fastersearch false\n" +
- "attribute[1].name atA\n" +
- "attribute[1].datatype string\n" +
- "attribute[1].collectiontype weightedset\n" +
- "attribute[1].removeifzero false\n" +
- "attribute[1].createifnonexistent false\n" +
- "attribute[1].loadtype \"always\"\n" +
- "attribute[1].uniqueonly false\n" +
- "attribute[1].sparse false\n" +
- "attribute[1].noupdate false\n" +
- "attribute[1].fastsearch true\n" +
- "attribute[1].fastaggregate false\n" +
- "attribute[1].fastersearch false\n" +
- "attribute[2].name default_fieldlength\n" +
- "attribute[2].datatype uint32\n" +
- "attribute[2].collectiontype single\n" +
- "attribute[2].removeifzero false\n" +
- "attribute[2].createifnonexistent false\n" +
- "attribute[2].loadtype \"always\"\n" +
- "attribute[2].uniqueonly false\n" +
- "attribute[2].sparse false\n" +
- "attribute[2].noupdate true\n" +
- "attribute[2].fastsearch false\n" +
- "attribute[2].fastaggregate false\n" +
- "attribute[2].fastersearch false\n" +
- "attribute[3].name default_literal_fieldlength\n" +
- "attribute[3].datatype uint32\n" +
- "attribute[3].collectiontype single\n" +
- "attribute[3].removeifzero false\n" +
- "attribute[3].createifnonexistent false\n" +
- "attribute[3].loadtype \"always\"\n" +
- "attribute[3].uniqueonly false\n" +
- "attribute[3].sparse false\n" +
- "attribute[3].noupdate true\n" +
- "attribute[3].fastsearch false\n" +
- "attribute[3].fastaggregate false\n" +
- "attribute[3].fastersearch false\n" +
- "attribute[4].name artist_fieldlength\n" +
- "attribute[4].datatype uint32\n" +
- "attribute[4].collectiontype single\n" +
- "attribute[4].removeifzero false\n" +
- "attribute[4].createifnonexistent false\n" +
- "attribute[4].loadtype \"always\"\n" +
- "attribute[4].uniqueonly false\n" +
- "attribute[4].sparse false\n" +
- "attribute[4].noupdate true\n" +
- "attribute[4].fastsearch false\n" +
- "attribute[4].fastaggregate false\n" +
- "attribute[4].fastersearch false\n";
-
- private final String payload3 = "attribute[5]\n" +
- "attribute[0].name Popularity\n" +
- "attribute[0].datatype String\n" +
- "attribute[0].collectiontype single\n" +
- "attribute[0].removeifzero false\n" +
- "attribute[0].createifnonexistent false\n" +
- "attribute[0].loadtype \"always\"\n" +
- "attribute[0].uniqueonly false\n" +
- "attribute[0].sparse false\n" +
- "attribute[0].noupdate false\n" +
- "attribute[0].fastsearch false\n" +
- "attribute[0].fastaggregate false\n" +
- "attribute[0].fastersearch false\n" +
- "attribute[1].name atA\n" +
- "attribute[1].datatype string\n" +
- "attribute[1].collectiontype weightedset\n" +
- "attribute[1].removeifzero false\n" +
- "attribute[1].createifnonexistent false\n" +
- "attribute[1].loadtype \"always\"\n" +
- "attribute[1].uniqueonly false\n" +
- "attribute[1].sparse false\n" +
- "attribute[1].noupdate false\n" +
- "attribute[1].fastsearch true\n" +
- "attribute[1].fastaggregate false\n" +
- "attribute[1].fastersearch false\n" +
- "attribute[2].name default_fieldlength\n" +
- "attribute[2].datatype uint32\n" +
- "attribute[2].collectiontype single\n" +
- "attribute[2].removeifzero false\n" +
- "attribute[2].createifnonexistent false\n" +
- "attribute[2].loadtype \"always\"\n" +
- "attribute[2].uniqueonly false\n" +
- "attribute[2].sparse false\n" +
- "attribute[2].noupdate true\n" +
- "attribute[2].fastsearch false\n" +
- "attribute[2].fastaggregate false\n" +
- "attribute[2].fastersearch false\n" +
- "attribute[3].name default_literal_fieldlength\n" +
- "attribute[3].datatype uint32\n" +
- "attribute[3].collectiontype single\n" +
- "attribute[3].removeifzero false\n" +
- "attribute[3].createifnonexistent false\n" +
- "attribute[3].loadtype \"always\"\n" +
- "attribute[3].uniqueonly false\n" +
- "attribute[3].sparse false\n" +
- "attribute[3].noupdate true\n" +
- "attribute[3].fastsearch false\n" +
- "attribute[3].fastaggregate false\n" +
- "attribute[3].fastersearch false\n" +
- "attribute[4].name artist_fieldlength\n" +
- "attribute[4].datatype uint32\n" +
- "attribute[4].collectiontype single\n" +
- "attribute[4].removeifzero false\n" +
- "attribute[4].createifnonexistent false\n" +
- "attribute[4].loadtype \"always\"\n" +
- "attribute[4].uniqueonly false\n" +
- "attribute[4].sparse false\n" +
- "attribute[4].noupdate true\n" +
- "attribute[4].fastsearch false\n" +
- "attribute[4].fastaggregate false\n" +
- "attribute[4].fastersearch false\n";
-
- private void initAndClearZK(ConfigCurator zkIf) {
- zkIf.initAndClear(ConfigCurator.DEFCONFIGS_ZK_SUBPATH);
- zkIf.initAndClear(ConfigCurator.USERAPP_ZK_SUBPATH);
- }
-
- private ConfigCurator deployApp() {
- ConfigCurator zkIf = create();
- initAndClearZK(zkIf);
- zkIf.putData(ConfigCurator.DEFCONFIGS_ZK_SUBPATH, defKey1, payload1);
- // zkIf.putData(ConfigCurator.USERCONFIGS_ZK_SUBPATH, cfgKey1, payload3);
- String partitionsDef = "version=7\\n" +
- "dataset[].id int\\n" +
- "dataset[].partbits int default=6";
- zkIf.putData(ConfigCurator.DEFCONFIGS_ZK_SUBPATH, "partitions", partitionsDef);
- String partitionsUser = "dataset[0].partbits 8\\n";
- // zkIf.putData(ConfigCurator.USERCONFIGS_ZK_SUBPATH, "partitions", partitionsUser);
- return zkIf;
- }
-
- @Rule
- public ExpectedException expectedException = ExpectedException.none();
-
- @Test
- public void testZKInterface() {
- ConfigCurator zkIf = create();
- zkIf.putData("", "test", "foo");
- zkIf.putData("/test", "me", "bar");
- zkIf.putData("", "test;me;now,then", "baz");
- assertEquals(zkIf.getData("", "test"), "foo");
- assertEquals(zkIf.getData("/test", "me"), "bar");
- assertEquals(zkIf.getData("", "test;me;now,then"), "baz");
- }
-
- @Test
- public void testNonExistingPath() {
- ConfigCurator configCurator = create();
-
- expectedException.expect(IllegalArgumentException.class);
- expectedException.expectMessage("Cannot read data from path /non-existing, it does not exist");
- configCurator.getData("/non-existing");
- }
-
- @Test
- public void testWatcher() {
- ConfigCurator zkIf = create();
-
- zkIf.putData("", "test", "foo");
- String data = zkIf.getData("/test");
- assertEquals(data, "foo");
- zkIf.putData("", "/test", "bar");
- data = zkIf.getData("/test");
- assertEquals(data, "bar");
-
- zkIf.getChildren("/");
- zkIf.putData("", "test2", "foo2");
- }
-
- private ConfigCurator create() {
- return ConfigCurator.create(new MockCurator());
- }
-
- @Test
- public void testGetDeployedData() {
- ConfigCurator zkIf = deployApp();
- assertEquals(zkIf.getData(ConfigCurator.DEFCONFIGS_ZK_SUBPATH, defKey1), payload1);
- }
-
- @Test
- public void testEmptyData() {
- ConfigCurator zkIf = create();
- zkIf.createNode("/empty", "data");
- assertEquals("", zkIf.getData("/empty", "data"));
- }
-
- @Test
- public void testRecursiveDelete() {
- ConfigCurator configCurator = create();
- configCurator.putData("/foo", Utf8.toBytes("sadsdfsdfsdfsdf"));
- configCurator.putData("/foo/bar", Utf8.toBytes("dsfsdffds"));
- configCurator.putData("/foo/baz",
- Utf8.toBytes("sdf\u00F8l ksdfl skdflsk dflsdkfd welkr3k lkr e4kt4 54l4l353k l534klk3lk4l33k5l 353l4k l43k l4k"));
- configCurator.putData("/foo/bar/dill", Utf8.toBytes("sdfsfe 23 42 3 3 2342"));
- configCurator.putData("/foo", Utf8.toBytes("sdcfsdfsdf"));
- configCurator.putData("/foo", Utf8.toBytes("sdcfsd sdfdffsdf"));
- configCurator.deleteRecurse("/foo");
- assertFalse(configCurator.exists("/foo"));
- assertFalse(configCurator.exists("/foo/bar"));
- assertFalse(configCurator.exists("/foo/bar/dill"));
- assertFalse(configCurator.exists("/foo/bar/baz"));
- try {
- configCurator.getChildren("/foo");
- fail("Got children from nonexisting ZK path");
- } catch (RuntimeException e) {
- assertTrue(e.getCause().getMessage().matches(".*NoNode.*"));
- }
- configCurator.deleteRecurse("/nonexisting");
- }
-
-}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/InitializedCounterTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/InitializedCounterTest.java
index f745e023126..d2c29a7577f 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/InitializedCounterTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/InitializedCounterTest.java
@@ -1,6 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.zookeeper;
+import com.yahoo.path.Path;
+import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.mock.MockCurator;
import org.junit.Test;
@@ -14,12 +16,12 @@ public class InitializedCounterTest {
@Test
public void requireThatCounterIsInitializedFromNumberOfSessions() {
- ConfigCurator configCurator = ConfigCurator.create(new MockCurator());
- configCurator.createNode("/sessions");
- configCurator.createNode("/sessions/1");
- configCurator.createNode("/sessions/2");
+ Curator curator = new MockCurator();
+ curator.create(Path.fromString("/sessions"));
+ curator.create(Path.fromString("/sessions/1"));
+ curator.create(Path.fromString("/sessions/2"));
- InitializedCounter counter = new InitializedCounter(configCurator, "/counter", "/sessions");
+ InitializedCounter counter = new InitializedCounter(curator, Path.fromString("/counter"), Path.fromString("/sessions"));
assertThat(counter.counter.get(), is(2L));
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationFileTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationFileTest.java
index a34c17dc909..f02340bd6d3 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationFileTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationFileTest.java
@@ -1,9 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.zookeeper;
import com.yahoo.config.application.api.ApplicationFile;
import com.yahoo.config.application.api.ApplicationFileTest;
import com.yahoo.path.Path;
+import com.yahoo.text.Utf8;
+import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.mock.MockCurator;
import org.junit.Rule;
import org.junit.rules.TemporaryFolder;
@@ -11,6 +13,7 @@ import org.junit.rules.TemporaryFolder;
import java.io.File;
import java.io.IOException;
+import static com.yahoo.vespa.config.server.zookeeper.ZKApplication.USERAPP_ZK_SUBPATH;
import static org.junit.Assert.assertTrue;
/**
@@ -21,20 +24,20 @@ public class ZKApplicationFileTest extends ApplicationFileTest {
@Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();
- private void feed(ConfigCurator zk, File dirToFeed) {
+ private void feed(Curator curator, File dirToFeed) {
assertTrue(dirToFeed.isDirectory());
- String appPath = "/0";
- ZKApplicationPackageTest.feedZooKeeper(zk, dirToFeed, appPath + ConfigCurator.USERAPP_ZK_SUBPATH, null, true);
- zk.putData(appPath, ZKApplicationPackage.fileRegistryNode, "dummyfiles");
+ Path appPath = Path.fromString("/0");
+ ZKApplicationPackageTest.feedZooKeeper(curator, dirToFeed, appPath.append(USERAPP_ZK_SUBPATH), null, true);
+ curator.set(appPath.append(ZKApplicationPackage.fileRegistryNode), Utf8.toBytes("dummyfiles"));
}
@Override
public ApplicationFile getApplicationFile(Path path) throws IOException{
- ConfigCurator configCurator = ConfigCurator.create(new MockCurator());
+ Curator curator = new MockCurator();
File tmp = temporaryFolder.newFolder();
writeAppTo(tmp);
- feed(configCurator, tmp);
- return new ZKApplicationFile(path, new ZKApplication(configCurator, Path.fromString("/0")));
+ feed(curator, tmp);
+ return new ZKApplicationFile(path, new ZKApplication(curator, Path.fromString("/0")));
}
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackageTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackageTest.java
index 458cdb82066..8f11e171ebe 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackageTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackageTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.zookeeper;
import com.yahoo.component.Version;
@@ -14,6 +14,8 @@ import com.yahoo.config.provisioning.FlavorsConfig;
import com.yahoo.io.IOUtils;
import com.yahoo.path.Path;
import com.yahoo.text.Utf8;
+import com.yahoo.vespa.config.server.filedistribution.MockFileManager;
+import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.mock.MockCurator;
import org.junit.Before;
import org.junit.Rule;
@@ -31,10 +33,10 @@ import java.util.Set;
import java.util.regex.Pattern;
import static com.yahoo.config.provision.serialization.AllocatedHostsSerializer.toJson;
-import static org.hamcrest.CoreMatchers.is;
+import static com.yahoo.vespa.config.server.zookeeper.ZKApplication.META_ZK_PATH;
+import static com.yahoo.vespa.config.server.zookeeper.ZKApplication.USERAPP_ZK_SUBPATH;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
public class ZKApplicationPackageTest {
@@ -59,20 +61,20 @@ public class ZKApplicationPackageTest {
Optional.of(DockerImage.fromString(dockerImage)))));
}
- private ConfigCurator configCurator;
+ private Curator curator;
@Rule
public TemporaryFolder tmpDir = new TemporaryFolder();
@Before
public void setup() {
- configCurator = ConfigCurator.create(new MockCurator());
+ curator = new MockCurator();
}
@Test
public void testBasicZKFeed() throws IOException {
- feed(configCurator, new File(APP));
- ZKApplicationPackage zkApp = new ZKApplicationPackage(configCurator, Path.fromString("/0"));
+ feed(curator, new File(APP));
+ ZKApplicationPackage zkApp = new ZKApplicationPackage(new MockFileManager(), curator, Path.fromString("/0"));
assertTrue(Pattern.compile(".*<slobroks>.*",Pattern.MULTILINE+Pattern.DOTALL).matcher(IOUtils.readAll(zkApp.getServices())).matches());
assertTrue(Pattern.compile(".*<alias>.*",Pattern.MULTILINE+Pattern.DOTALL).matcher(IOUtils.readAll(zkApp.getHosts())).matches());
assertTrue(Pattern.compile(".*<slobroks>.*",Pattern.MULTILINE+Pattern.DOTALL).matcher(IOUtils.readAll(zkApp.getFile(Path.fromString("services.xml")).createReader())).matches());
@@ -93,7 +95,6 @@ public class ZKApplicationPackageTest {
Version goodVersion = new Version(3, 0, 0);
assertTrue(zkApp.getFileRegistries().containsKey(goodVersion));
assertFalse(zkApp.getFileRegistries().containsKey(new Version(0, 0, 0)));
- assertThat(zkApp.getFileRegistries().get(goodVersion).fileSourceHost(), is("dummyfiles"));
AllocatedHosts readInfo = zkApp.getAllocatedHosts().get();
assertEquals(Utf8.toString(toJson(ALLOCATED_HOSTS)), Utf8.toString(toJson(readInfo)));
assertEquals(TEST_FLAVOR.get().resources(), readInfo.getHosts().iterator().next().advertisedResources());
@@ -103,13 +104,14 @@ public class ZKApplicationPackageTest {
assertEquals("mydisc", DeploymentSpec.fromXml(zkApp.getDeployment().get()).requireInstance("default").globalServiceId().get());
}
- private void feed(ConfigCurator zk, File dirToFeed) throws IOException {
+ private void feed(com.yahoo.vespa.curator.Curator zk, File dirToFeed) throws IOException {
assertTrue(dirToFeed.isDirectory());
- feedZooKeeper(zk, dirToFeed, "/0" + ConfigCurator.USERAPP_ZK_SUBPATH, null, true);
+ Path sessionPath = Path.fromString("/0");
+ feedZooKeeper(zk, dirToFeed, sessionPath.append(USERAPP_ZK_SUBPATH), null, true);
String metaData = "{\"deploy\":{\"user\":\"foo\",\"from\":\"bar\",\"timestamp\":1},\"application\":{\"id\":\"foo:foo:default\",\"checksum\":\"abc\",\"generation\":4,\"previousActiveGeneration\":3}}";
- zk.putData("/0", ConfigCurator.META_ZK_PATH, metaData);
- zk.putData("/0/" + ZKApplicationPackage.fileRegistryNode + "/3.0.0", "dummyfiles");
- zk.putData("/0/" + ZKApplicationPackage.allocatedHostsNode, toJson(ALLOCATED_HOSTS));
+ zk.set(sessionPath.append(META_ZK_PATH), Utf8.toBytes(metaData));
+ zk.set(sessionPath.append(ZKApplicationPackage.fileRegistryNode).append("/3.0.0"), Utf8.toBytes("dummyfiles"));
+ zk.set(sessionPath.append(ZKApplicationPackage.allocatedHostsNode), toJson(ALLOCATED_HOSTS));
}
private static class MockNodeFlavors extends NodeFlavors{
@@ -131,7 +133,7 @@ public class ZKApplicationPackageTest {
* @param filenameFilter A FilenameFilter which decides which files in dir are fed to zookeeper
* @param recurse recurse subdirectories
*/
- static void feedZooKeeper(ConfigCurator zk, File dir, String path, FilenameFilter filenameFilter, boolean recurse) {
+ static void feedZooKeeper(com.yahoo.vespa.curator.Curator zk, File dir, Path path, FilenameFilter filenameFilter, boolean recurse) {
try {
if (filenameFilter == null) {
filenameFilter = acceptsAllFileNameFilter;
@@ -141,12 +143,13 @@ public class ZKApplicationPackageTest {
}
for (File file : listFiles(dir, filenameFilter)) {
if (file.getName().startsWith(".")) continue; //.svn , .git ...
+ Path filePath = path.append(file.getName());
if (file.isFile()) {
- String contents = IOUtils.readFile(file);
- zk.putData(path, file.getName(), contents);
+ byte[] contents = IOUtils.readFileBytes(file);
+ zk.set(filePath, contents);
} else if (recurse && file.isDirectory()) {
- zk.createNode(path, file.getName());
- feedZooKeeper(zk, file, path + '/' + file.getName(), filenameFilter, recurse);
+ zk.create(filePath);
+ feedZooKeeper(zk, file, filePath, filenameFilter, recurse);
}
}
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/serviceview/ServiceModelTest.java b/configserver/src/test/java/com/yahoo/vespa/serviceview/ServiceModelTest.java
index 93fe424710e..44bc2c15e8e 100644
--- a/configserver/src/test/java/com/yahoo/vespa/serviceview/ServiceModelTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/serviceview/ServiceModelTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.serviceview;
import com.yahoo.vespa.defaults.Defaults;
diff --git a/configserver/src/test/java/com/yahoo/vespa/serviceview/StateRequestHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/serviceview/StateRequestHandlerTest.java
index 68eca62e54b..fe025c9e861 100644
--- a/configserver/src/test/java/com/yahoo/vespa/serviceview/StateRequestHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/serviceview/StateRequestHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.serviceview;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/configserver/src/test/resources/configdefinitions/config.app.def b/configserver/src/test/resources/configdefinitions/config.app.def
index 7c7bb58b3a6..64af2206e4e 100644
--- a/configserver/src/test/resources/configdefinitions/config.app.def
+++ b/configserver/src/test/resources/configdefinitions/config.app.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config
message string default="Hello!"
diff --git a/configserver/src/test/resources/configdefinitions/config.md5test.def b/configserver/src/test/resources/configdefinitions/config.md5test.def
index 1c6eae0e587..be4c3cfbc6a 100644
--- a/configserver/src/test/resources/configdefinitions/config.md5test.def
+++ b/configserver/src/test/resources/configdefinitions/config.md5test.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Added empty line to see if we can confuse
# the server's md5 calculation
diff --git a/configserver/src/test/resources/configdefinitions/config.simpletypes.def b/configserver/src/test/resources/configdefinitions/config.simpletypes.def
index 569df41c97d..eafc0401eb1 100644
--- a/configserver/src/test/resources/configdefinitions/config.simpletypes.def
+++ b/configserver/src/test/resources/configdefinitions/config.simpletypes.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Config containing only simple leaf types with default values, that can be used
# for testing individual types in detail.
namespace=config
diff --git a/configserver/src/test/resources/deploy/advancedapp/deployment.xml b/configserver/src/test/resources/deploy/advancedapp/deployment.xml
index 46451eb3787..013e2171620 100644
--- a/configserver/src/test/resources/deploy/advancedapp/deployment.xml
+++ b/configserver/src/test/resources/deploy/advancedapp/deployment.xml
@@ -1,2 +1,2 @@
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<deployment version='1.0'/>
diff --git a/configserver/src/test/resources/deploy/advancedapp/hosts.xml b/configserver/src/test/resources/deploy/advancedapp/hosts.xml
index 541d2f10304..414d0295a49 100644
--- a/configserver/src/test/resources/deploy/advancedapp/hosts.xml
+++ b/configserver/src/test/resources/deploy/advancedapp/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/configserver/src/test/resources/deploy/advancedapp/schemas/keyvalue.sd b/configserver/src/test/resources/deploy/advancedapp/schemas/keyvalue.sd
index 2d0f1ef0b75..25da6340590 100644
--- a/configserver/src/test/resources/deploy/advancedapp/schemas/keyvalue.sd
+++ b/configserver/src/test/resources/deploy/advancedapp/schemas/keyvalue.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search keyvalue {
document keyvalue {
field value type string {
diff --git a/configserver/src/test/resources/deploy/advancedapp/services.xml b/configserver/src/test/resources/deploy/advancedapp/services.xml
index 77fa426041f..96ee0beff25 100644
--- a/configserver/src/test/resources/deploy/advancedapp/services.xml
+++ b/configserver/src/test/resources/deploy/advancedapp/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/configserver/src/test/resources/deploy/app/deployment.xml b/configserver/src/test/resources/deploy/app/deployment.xml
index 46451eb3787..013e2171620 100644
--- a/configserver/src/test/resources/deploy/app/deployment.xml
+++ b/configserver/src/test/resources/deploy/app/deployment.xml
@@ -1,2 +1,2 @@
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<deployment version='1.0'/>
diff --git a/configserver/src/test/resources/deploy/app/services.xml b/configserver/src/test/resources/deploy/app/services.xml
index bddaab3ebf7..fb9387b903f 100644
--- a/configserver/src/test/resources/deploy/app/services.xml
+++ b/configserver/src/test/resources/deploy/app/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/configserver/src/test/resources/deploy/validapp/deployment.xml b/configserver/src/test/resources/deploy/validapp/deployment.xml
index 46451eb3787..013e2171620 100644
--- a/configserver/src/test/resources/deploy/validapp/deployment.xml
+++ b/configserver/src/test/resources/deploy/validapp/deployment.xml
@@ -1,2 +1,2 @@
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<deployment version='1.0'/>
diff --git a/configserver/src/test/resources/deploy/validapp/hosts.xml b/configserver/src/test/resources/deploy/validapp/hosts.xml
index 541d2f10304..414d0295a49 100644
--- a/configserver/src/test/resources/deploy/validapp/hosts.xml
+++ b/configserver/src/test/resources/deploy/validapp/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="localhost">
<alias>node1</alias>
diff --git a/configserver/src/test/resources/deploy/validapp/services.xml b/configserver/src/test/resources/deploy/validapp/services.xml
index bddaab3ebf7..fb9387b903f 100644
--- a/configserver/src/test/resources/deploy/validapp/services.xml
+++ b/configserver/src/test/resources/deploy/validapp/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<admin version="2.0">
diff --git a/configutil/CMakeLists.txt b/configutil/CMakeLists.txt
index ae1256aba98..4ec9ad13648 100644
--- a/configutil/CMakeLists.txt
+++ b/configutil/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
vespadefaults
diff --git a/configutil/README.md b/configutil/README.md
index a14d54d5612..039b6dab8dc 100644
--- a/configutil/README.md
+++ b/configutil/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Utilities for verifying and inspecting config
vespa-config-status and vespa-model-inspect
diff --git a/configutil/src/apps/configstatus/CMakeLists.txt b/configutil/src/apps/configstatus/CMakeLists.txt
index d01241760b3..7536aa2d586 100644
--- a/configutil/src/apps/configstatus/CMakeLists.txt
+++ b/configutil/src/apps/configstatus/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(configutil_vespa-config-status_app
SOURCES
main.cpp
diff --git a/configutil/src/apps/configstatus/main.cpp b/configutil/src/apps/configstatus/main.cpp
index 218844a2a90..717c120f8e2 100644
--- a/configutil/src/apps/configstatus/main.cpp
+++ b/configutil/src/apps/configstatus/main.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/defaults.h>
#include <vespa/vespalib/text/stringtokenizer.h>
diff --git a/configutil/src/apps/modelinspect/CMakeLists.txt b/configutil/src/apps/modelinspect/CMakeLists.txt
index a3c4f91ba3a..e4ff5fb429b 100644
--- a/configutil/src/apps/modelinspect/CMakeLists.txt
+++ b/configutil/src/apps/modelinspect/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(configutil_vespa-model-inspect_app
SOURCES
main.cpp
diff --git a/configutil/src/apps/modelinspect/main.cpp b/configutil/src/apps/modelinspect/main.cpp
index 9125cbff379..c9fc51febb5 100644
--- a/configutil/src/apps/modelinspect/main.cpp
+++ b/configutil/src/apps/modelinspect/main.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/defaults.h>
#include <iostream>
diff --git a/configutil/src/lib/CMakeLists.txt b/configutil/src/lib/CMakeLists.txt
index d41c8eca50b..f3903837cf9 100644
--- a/configutil/src/lib/CMakeLists.txt
+++ b/configutil/src/lib/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(configutil_util STATIC
SOURCES
tags.cpp
diff --git a/configutil/src/lib/configstatus.cpp b/configutil/src/lib/configstatus.cpp
index e56da67fade..529765dccd5 100644
--- a/configutil/src/lib/configstatus.cpp
+++ b/configutil/src/lib/configstatus.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configstatus.h"
#include "tags.h"
diff --git a/configutil/src/lib/configstatus.h b/configutil/src/lib/configstatus.h
index 610bda3ac3d..9e1627af4a9 100644
--- a/configutil/src/lib/configstatus.h
+++ b/configutil/src/lib/configstatus.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "hostfilter.h"
diff --git a/configutil/src/lib/hostfilter.h b/configutil/src/lib/hostfilter.h
index 5654d2f34e4..837ca257d25 100644
--- a/configutil/src/lib/hostfilter.h
+++ b/configutil/src/lib/hostfilter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <unordered_set>
diff --git a/configutil/src/lib/modelinspect.cpp b/configutil/src/lib/modelinspect.cpp
index db5709cc95b..611a41d1a84 100644
--- a/configutil/src/lib/modelinspect.cpp
+++ b/configutil/src/lib/modelinspect.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "modelinspect.h"
#include <lib/tags.h>
diff --git a/configutil/src/lib/modelinspect.h b/configutil/src/lib/modelinspect.h
index d44fbe23f2d..dae5f3f4e92 100644
--- a/configutil/src/lib/modelinspect.h
+++ b/configutil/src/lib/modelinspect.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config-model.h>
#include <vespa/vespalib/stllike/string.h>
#include <vespa/config/config.h>
diff --git a/configutil/src/lib/tags.cpp b/configutil/src/lib/tags.cpp
index 5c8ab371366..f887d3a63b9 100644
--- a/configutil/src/lib/tags.cpp
+++ b/configutil/src/lib/tags.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tags.h"
#include <vespa/vespalib/stllike/string.h>
diff --git a/configutil/src/lib/tags.h b/configutil/src/lib/tags.h
index b33c6fcefd9..4f935b5a265 100644
--- a/configutil/src/lib/tags.h
+++ b/configutil/src/lib/tags.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/configutil/src/tests/config_status/CMakeLists.txt b/configutil/src/tests/config_status/CMakeLists.txt
index 927eaafb9b9..e7828bb6f80 100644
--- a/configutil/src/tests/config_status/CMakeLists.txt
+++ b/configutil/src/tests/config_status/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(configutil_config_status_test_app TEST
SOURCES
config_status_test.cpp
diff --git a/configutil/src/tests/config_status/config_status_test.cpp b/configutil/src/tests/config_status/config_status_test.cpp
index 4d85b22a5c4..9b8b96acdb8 100644
--- a/configutil/src/tests/config_status/config_status_test.cpp
+++ b/configutil/src/tests/config_status/config_status_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <lib/configstatus.h>
#include <vespa/vespalib/portal/portal.h>
diff --git a/configutil/src/tests/host_filter/CMakeLists.txt b/configutil/src/tests/host_filter/CMakeLists.txt
index fea04d5cceb..0edea037672 100644
--- a/configutil/src/tests/host_filter/CMakeLists.txt
+++ b/configutil/src/tests/host_filter/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(configutil_host_filter_test_app TEST
SOURCES
host_filter_test.cpp
diff --git a/configutil/src/tests/host_filter/host_filter_test.cpp b/configutil/src/tests/host_filter/host_filter_test.cpp
index 9fde6bd413c..7da05fc67d3 100644
--- a/configutil/src/tests/host_filter/host_filter_test.cpp
+++ b/configutil/src/tests/host_filter/host_filter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <lib/hostfilter.h>
diff --git a/configutil/src/tests/model_inspect/CMakeLists.txt b/configutil/src/tests/model_inspect/CMakeLists.txt
index 6f1c32a58fe..c711f722da3 100644
--- a/configutil/src/tests/model_inspect/CMakeLists.txt
+++ b/configutil/src/tests/model_inspect/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(configutil_model_inspect_test_app TEST
SOURCES
model_inspect_test.cpp
diff --git a/configutil/src/tests/model_inspect/model_inspect_test.cpp b/configutil/src/tests/model_inspect/model_inspect_test.cpp
index 3b574c2741b..e8d0337f093 100644
--- a/configutil/src/tests/model_inspect/model_inspect_test.cpp
+++ b/configutil/src/tests/model_inspect/model_inspect_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <lib/modelinspect.h>
#include <sstream>
diff --git a/configutil/src/tests/tags/CMakeLists.txt b/configutil/src/tests/tags/CMakeLists.txt
index 42a0b7c5837..fce794adde6 100644
--- a/configutil/src/tests/tags/CMakeLists.txt
+++ b/configutil/src/tests/tags/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(configutil_tags_test_app TEST
SOURCES
tags_test.cpp
diff --git a/configutil/src/tests/tags/tags_test.cpp b/configutil/src/tests/tags/tags_test.cpp
index a6d3736be7c..4b5d008a426 100644
--- a/configutil/src/tests/tags/tags_test.cpp
+++ b/configutil/src/tests/tags/tags_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <lib/tags.h>
diff --git a/container-apache-http-client-bundle/CMakeLists.txt b/container-apache-http-client-bundle/CMakeLists.txt
index 8daac7a5030..861fda3395f 100644
--- a/container-apache-http-client-bundle/CMakeLists.txt
+++ b/container-apache-http-client-bundle/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(container-apache-http-client-bundle)
diff --git a/container-apache-http-client-bundle/pom.xml b/container-apache-http-client-bundle/pom.xml
index 5d7598d6f45..158ac140378 100644
--- a/container-apache-http-client-bundle/pom.xml
+++ b/container-apache-http-client-bundle/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/async/methods/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/async/methods/package-info.java
index 050fc29c7dd..8b217f0578d 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/async/methods/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/async/methods/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/async/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/async/package-info.java
index f1387bb1464..83f5762444a 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/async/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/async/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/classic/methods/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/classic/methods/package-info.java
index b014ce24aff..7c82b197119 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/classic/methods/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/classic/methods/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/classic/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/classic/package-info.java
index 90b162d3eec..532c27c9b5a 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/classic/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/classic/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/config/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/config/package-info.java
index f1a450fbaf0..313b1866ce8 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/config/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/config/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/entity/mime/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/entity/mime/package-info.java
index 489d168e19b..e4093ae8ff0 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/entity/mime/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/entity/mime/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/entity/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/entity/package-info.java
index f4542fa34dc..3c5070fead7 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/entity/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/entity/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/async/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/async/package-info.java
index e9acf08ff88..dd92b9aaa46 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/async/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/async/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/classic/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/classic/package-info.java
index aeb608544ab..0ffb0cbf6a5 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/classic/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/classic/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/io/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/io/package-info.java
index 1106f18631a..efb91b99559 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/io/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/io/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/nio/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/nio/package-info.java
index 64636ffec3d..db3b6a74639 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/nio/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/nio/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/package-info.java
index 5f0ae9df63b..1d35c278069 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/impl/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/io/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/io/package-info.java
index 386f6399057..16f3e0024df 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/io/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/io/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/nio/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/nio/package-info.java
index 41b75048e97..4c7870bd8fc 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/nio/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/nio/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/package-info.java
index ec4bab39b4d..34ea128ee59 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/protocol/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/protocol/package-info.java
index f72c2742b24..e738d7a2584 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/protocol/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/protocol/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/routing/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/routing/package-info.java
index 412d824c38c..8913ac6018c 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/routing/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/routing/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/socket/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/socket/package-info.java
index ed95115cd6d..6225e5e5380 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/socket/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/socket/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/ssl/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/ssl/package-info.java
index c7184a484f7..53a10ebfb26 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/ssl/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/client5/http/ssl/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/concurrent/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/concurrent/package-info.java
index a61bb459a68..2d773373168 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/concurrent/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/concurrent/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/config/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/config/package-info.java
index f5a797131d2..b8bab52fad3 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/config/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/config/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/io/entity/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/io/entity/package-info.java
index 576666f8c08..345f98f54bb 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/io/entity/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/io/entity/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/io/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/io/package-info.java
index c7b0debd608..467552b396b 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/io/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/io/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/io/support/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/io/support/package-info.java
index 71cb8438727..f16edec069e 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/io/support/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/io/support/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/message/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/message/package-info.java
index 27cf37f846f..2ca5e52ed71 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/message/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/message/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/nio/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/nio/package-info.java
index 1b949e0a38a..6fb3d1503fb 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/nio/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/nio/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/nio/ssl/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/nio/ssl/package-info.java
index ad657066eb7..72aa8926e2a 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/nio/ssl/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/nio/ssl/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/nio/support/classic/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/nio/support/classic/package-info.java
index 98836b631df..bc75f02739a 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/nio/support/classic/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/nio/support/classic/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/nio/support/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/nio/support/package-info.java
index 3e089b8ca23..897701dfc66 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/nio/support/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/nio/support/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/package-info.java
index 30fac3d2de9..f459c8d3073 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/protocol/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/protocol/package-info.java
index c5b27fbb871..6642f8b6cb3 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/protocol/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http/protocol/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http2/config/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http2/config/package-info.java
index d5482b5f2a2..a18cb1fef90 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http2/config/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http2/config/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http2/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http2/package-info.java
index 3c2d9389c74..c1758fe9953 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http2/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/http2/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/net/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/net/package-info.java
index 0009845386c..539f73af724 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/net/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/net/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/reactor/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/reactor/package-info.java
index e05e877f730..23dc8720328 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/reactor/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/reactor/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/util/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/util/package-info.java
index 75e38c99e65..751476df3e0 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/util/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/hc/core5/util/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/annotation/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/annotation/package-info.java
index 1599489de0f..3cb10df7ce5 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/annotation/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/annotation/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/auth/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/auth/package-info.java
index 2bb0a297c86..57f137aa29c 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/auth/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/auth/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/client/config/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/client/config/package-info.java
index 33b3ec7cae9..d3807d427db 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/client/config/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/client/config/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/client/entity/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/client/entity/package-info.java
index 28199fd727b..f80fbc49d2a 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/client/entity/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/client/entity/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/client/methods/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/client/methods/package-info.java
index 3b8ad361db5..e007fb89cd4 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/client/methods/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/client/methods/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/client/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/client/package-info.java
index 6a62880648e..a1c4eab54a0 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/client/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/client/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/client/protocol/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/client/protocol/package-info.java
index 3d8ffbbcd6f..0b9caa14ec1 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/client/protocol/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/client/protocol/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/client/utils/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/client/utils/package-info.java
index f7d6fac2b0b..9cd4511e181 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/client/utils/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/client/utils/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/config/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/config/package-info.java
index 7fba26f38a7..233ada47d23 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/config/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/config/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/conn/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/conn/package-info.java
index 5e64cb7eab2..0f664f33462 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/conn/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/conn/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/conn/routing/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/conn/routing/package-info.java
index 204dc62666b..c63700eef07 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/conn/routing/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/conn/routing/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/conn/socket/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/conn/socket/package-info.java
index 7ac337e6ca6..e0b1ddd0b82 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/conn/socket/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/conn/socket/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/conn/ssl/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/conn/ssl/package-info.java
index 23d1644ba84..a504710acdd 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/conn/ssl/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/conn/ssl/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/entity/mime/content/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/entity/mime/content/package-info.java
index 6e31d8e733a..9c42dc4ef22 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/entity/mime/content/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/entity/mime/content/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/entity/mime/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/entity/mime/package-info.java
index 9a41d01fc4d..d0b7aeaac49 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/entity/mime/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/entity/mime/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/entity/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/entity/package-info.java
index e5d7bce4f01..56c9aad6ecf 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/entity/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/entity/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/impl/client/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/impl/client/package-info.java
index 5ac4dc40fac..a983ce40d48 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/impl/client/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/impl/client/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/impl/conn/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/impl/conn/package-info.java
index b3a27272300..3cdfb470f1c 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/impl/conn/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/impl/conn/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/impl/io/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/impl/io/package-info.java
index 59451695f7c..06de1099da4 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/impl/io/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/impl/io/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/impl/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/impl/package-info.java
index ebc2aebb981..21ae86beed2 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/impl/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/impl/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/message/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/message/package-info.java
index 5ede836011d..7906ec7422b 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/message/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/message/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/package-info.java
index dbf7b50caa9..c19a4c59322 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/params/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/params/package-info.java
index 92123f26b4d..8761bdd7a11 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/params/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/params/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/pool/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/pool/package-info.java
index 3c2509cd960..2a9fecfa761 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/pool/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/pool/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/protocol/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/protocol/package-info.java
index 1985b5b056a..40a0d235423 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/protocol/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/protocol/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/java/org/apache/http/util/package-info.java b/container-apache-http-client-bundle/src/main/java/org/apache/http/util/package-info.java
index 90e4f8e1cff..07686712234 100644
--- a/container-apache-http-client-bundle/src/main/java/org/apache/http/util/package-info.java
+++ b/container-apache-http-client-bundle/src/main/java/org/apache/http/util/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-apache-http-client-bundle/src/main/javadoc/README b/container-apache-http-client-bundle/src/main/javadoc/README
new file mode 100644
index 00000000000..6695538e308
--- /dev/null
+++ b/container-apache-http-client-bundle/src/main/javadoc/README
@@ -0,0 +1 @@
+No javadoc available for module \ No newline at end of file
diff --git a/container-core/CMakeLists.txt b/container-core/CMakeLists.txt
index 433e3c799b5..5015fd22c0d 100644
--- a/container-core/CMakeLists.txt
+++ b/container-core/CMakeLists.txt
@@ -1,5 +1,7 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_config_definitions()
install_java_artifact_dependencies(container-core)
+vespa_install_script(src/main/sh/find-pid libexec/vespa)
vespa_install_script(src/main/sh/vespa-load-balancer-status libexec/vespa)
+vespa_install_script(src/main/sh/vespa-jvm-dumper bin)
diff --git a/container-core/README.md b/container-core/README.md
index a65e82c7ec5..ada0579b985 100644
--- a/container-core/README.md
+++ b/container-core/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Container core
This module contains core classes for JDisc container.
diff --git a/container-core/pom.xml b/container-core/pom.xml
index c7fe2998530..91b81977f67 100644
--- a/container-core/pom.xml
+++ b/container-core/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
@@ -59,11 +59,6 @@
</dependency>
<dependency>
<groupId>com.yahoo.vespa</groupId>
- <artifactId>http-utils</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>com.yahoo.vespa</groupId>
<artifactId>linguistics</artifactId>
<version>${project.version}</version>
<exclusions>
@@ -81,6 +76,10 @@
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>com.google.protobuf</groupId>
+ <artifactId>protobuf-java</artifactId>
+ </exclusion>
</exclusions>
</dependency>
<dependency>
diff --git a/container-core/src/main/java/com/yahoo/component/chain/Chain.java b/container-core/src/main/java/com/yahoo/component/chain/Chain.java
index 1c628f3dfa4..e44eba35efe 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/Chain.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/Chain.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain;
import com.google.common.collect.ImmutableList;
diff --git a/container-core/src/main/java/com/yahoo/component/chain/ChainedComponent.java b/container-core/src/main/java/com/yahoo/component/chain/ChainedComponent.java
index 7e0eb8b72ec..d8bf503b200 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/ChainedComponent.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/ChainedComponent.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain;
import com.yahoo.component.AbstractComponent;
diff --git a/container-core/src/main/java/com/yahoo/component/chain/ChainsConfigurer.java b/container-core/src/main/java/com/yahoo/component/chain/ChainsConfigurer.java
index 969c1c7d66a..ae8a408b7ac 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/ChainsConfigurer.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/ChainsConfigurer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain;
import com.yahoo.component.ComponentSpecification;
diff --git a/container-core/src/main/java/com/yahoo/component/chain/Phase.java b/container-core/src/main/java/com/yahoo/component/chain/Phase.java
index 64584450c23..4255daeaba3 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/Phase.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/Phase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain;
import com.yahoo.component.chain.dependencies.Dependencies;
diff --git a/container-core/src/main/java/com/yahoo/component/chain/dependencies/After.java b/container-core/src/main/java/com/yahoo/component/chain/dependencies/After.java
index be10c82d2e1..a9ced412a33 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/dependencies/After.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/dependencies/After.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain.dependencies;
import java.lang.annotation.*;
diff --git a/container-core/src/main/java/com/yahoo/component/chain/dependencies/Before.java b/container-core/src/main/java/com/yahoo/component/chain/dependencies/Before.java
index 4542140c574..9cb08920ad8 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/dependencies/Before.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/dependencies/Before.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain.dependencies;
import java.lang.annotation.*;
diff --git a/container-core/src/main/java/com/yahoo/component/chain/dependencies/Dependencies.java b/container-core/src/main/java/com/yahoo/component/chain/dependencies/Dependencies.java
index 2fd0dc9ea84..5e743d226a6 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/dependencies/Dependencies.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/dependencies/Dependencies.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain.dependencies;
import java.util.*;
diff --git a/container-core/src/main/java/com/yahoo/component/chain/dependencies/Provides.java b/container-core/src/main/java/com/yahoo/component/chain/dependencies/Provides.java
index b014681c469..c1c9abf7e71 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/dependencies/Provides.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/dependencies/Provides.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain.dependencies;
import java.lang.annotation.*;
diff --git a/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/ChainBuilder.java b/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/ChainBuilder.java
index beafe7d2b98..c32c9c6ff1f 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/ChainBuilder.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/ChainBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain.dependencies.ordering;
diff --git a/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/ComponentNameProvider.java b/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/ComponentNameProvider.java
index b9e8f56d15c..98cbbbee273 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/ComponentNameProvider.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/ComponentNameProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain.dependencies.ordering;
import java.util.Iterator;
diff --git a/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/ComponentNode.java b/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/ComponentNode.java
index 2bc81542d52..c2990c90f10 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/ComponentNode.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/ComponentNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain.dependencies.ordering;
import com.yahoo.component.chain.ChainedComponent;
diff --git a/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/ConflictingNodeTypeException.java b/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/ConflictingNodeTypeException.java
index edf4a119e5c..88ca3216ffa 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/ConflictingNodeTypeException.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/ConflictingNodeTypeException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain.dependencies.ordering;
/**
diff --git a/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/CycleDependenciesException.java b/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/CycleDependenciesException.java
index 40a78030c41..ede0cacf18b 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/CycleDependenciesException.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/CycleDependenciesException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain.dependencies.ordering;
import java.util.HashSet;
diff --git a/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/NameProvider.java b/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/NameProvider.java
index 773b6d07035..033780a11d7 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/NameProvider.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/NameProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain.dependencies.ordering;
/**
diff --git a/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/Node.java b/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/Node.java
index da652fde614..65a89f8b010 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/Node.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/Node.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain.dependencies.ordering;
import java.util.HashSet;
diff --git a/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/OrderedReadyNodes.java b/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/OrderedReadyNodes.java
index d8fb0d7f584..9be22f79466 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/OrderedReadyNodes.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/OrderedReadyNodes.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain.dependencies.ordering;
diff --git a/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/PhaseNameProvider.java b/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/PhaseNameProvider.java
index f99a9191150..5cd744a03aa 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/PhaseNameProvider.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/dependencies/ordering/PhaseNameProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain.dependencies.ordering;
/**
diff --git a/container-core/src/main/java/com/yahoo/component/chain/dependencies/package-info.java b/container-core/src/main/java/com/yahoo/component/chain/dependencies/package-info.java
index acb8e4b011f..68b8b0a0cfd 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/dependencies/package-info.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/dependencies/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.component.chain.dependencies;
diff --git a/container-core/src/main/java/com/yahoo/component/chain/model/ChainSpecification.java b/container-core/src/main/java/com/yahoo/component/chain/model/ChainSpecification.java
index 53f5c5d1e06..a1c169dc387 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/model/ChainSpecification.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/model/ChainSpecification.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain.model;
import com.google.common.collect.ImmutableSet;
diff --git a/container-core/src/main/java/com/yahoo/component/chain/model/ChainedComponentModel.java b/container-core/src/main/java/com/yahoo/component/chain/model/ChainedComponentModel.java
index 196c0046c47..99320f6704a 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/model/ChainedComponentModel.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/model/ChainedComponentModel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain.model;
import com.yahoo.container.bundle.BundleInstantiationSpecification;
diff --git a/container-core/src/main/java/com/yahoo/component/chain/model/ChainsModel.java b/container-core/src/main/java/com/yahoo/component/chain/model/ChainsModel.java
index 08cb6b7ccfd..94f734b1c5d 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/model/ChainsModel.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/model/ChainsModel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain.model;
import java.util.ArrayList;
diff --git a/container-core/src/main/java/com/yahoo/component/chain/model/ChainsModelBuilder.java b/container-core/src/main/java/com/yahoo/component/chain/model/ChainsModelBuilder.java
index 5f9f2daa177..3954560eb97 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/model/ChainsModelBuilder.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/model/ChainsModelBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain.model;
import java.util.*;
diff --git a/container-core/src/main/java/com/yahoo/component/chain/model/ComponentAdaptor.java b/container-core/src/main/java/com/yahoo/component/chain/model/ComponentAdaptor.java
index 2961768a7de..2ad933d5a04 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/model/ComponentAdaptor.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/model/ComponentAdaptor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain.model;
import com.yahoo.component.AbstractComponent;
diff --git a/container-core/src/main/java/com/yahoo/component/chain/model/Resolver.java b/container-core/src/main/java/com/yahoo/component/chain/model/Resolver.java
index 15acff0db0b..8fcd49076dc 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/model/Resolver.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/model/Resolver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain.model;
import com.yahoo.component.ComponentSpecification;
diff --git a/container-core/src/main/java/com/yahoo/component/chain/model/package-info.java b/container-core/src/main/java/com/yahoo/component/chain/model/package-info.java
index 3d84de24df8..cf94cddf3fb 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/model/package-info.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/model/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.component.chain.model;
diff --git a/container-core/src/main/java/com/yahoo/component/chain/package-info.java b/container-core/src/main/java/com/yahoo/component/chain/package-info.java
index bfa18cf331c..f51ea6f28ec 100644
--- a/container-core/src/main/java/com/yahoo/component/chain/package-info.java
+++ b/container-core/src/main/java/com/yahoo/component/chain/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.component.chain;
diff --git a/container-core/src/main/java/com/yahoo/container/Container.java b/container-core/src/main/java/com/yahoo/container/Container.java
index 70167453e21..3d3bf221528 100755
--- a/container-core/src/main/java/com/yahoo/container/Container.java
+++ b/container-core/src/main/java/com/yahoo/container/Container.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container;
import com.yahoo.component.AbstractComponent;
diff --git a/container-core/src/main/java/com/yahoo/container/bundle/BundleInstantiationSpecification.java b/container-core/src/main/java/com/yahoo/container/bundle/BundleInstantiationSpecification.java
index 0fb8a99a957..d61df4310f0 100644
--- a/container-core/src/main/java/com/yahoo/container/bundle/BundleInstantiationSpecification.java
+++ b/container-core/src/main/java/com/yahoo/container/bundle/BundleInstantiationSpecification.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.bundle;
import com.yahoo.component.ComponentId;
diff --git a/container-core/src/main/java/com/yahoo/container/bundle/MockBundle.java b/container-core/src/main/java/com/yahoo/container/bundle/MockBundle.java
index a6524b41886..0f85598edb4 100644
--- a/container-core/src/main/java/com/yahoo/container/bundle/MockBundle.java
+++ b/container-core/src/main/java/com/yahoo/container/bundle/MockBundle.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.bundle;
import org.osgi.framework.Bundle;
diff --git a/container-core/src/main/java/com/yahoo/container/bundle/package-info.java b/container-core/src/main/java/com/yahoo/container/bundle/package-info.java
index c9707371626..d5c431066be 100644
--- a/container-core/src/main/java/com/yahoo/container/bundle/package-info.java
+++ b/container-core/src/main/java/com/yahoo/container/bundle/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.container.bundle;
diff --git a/container-core/src/main/java/com/yahoo/container/core/HandlerMetricContextUtil.java b/container-core/src/main/java/com/yahoo/container/core/HandlerMetricContextUtil.java
index b46cca17848..5077ef3e849 100644
--- a/container-core/src/main/java/com/yahoo/container/core/HandlerMetricContextUtil.java
+++ b/container-core/src/main/java/com/yahoo/container/core/HandlerMetricContextUtil.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.core;
import com.yahoo.jdisc.Metric;
diff --git a/container-core/src/main/java/com/yahoo/container/core/config/BundleStarter.java b/container-core/src/main/java/com/yahoo/container/core/config/BundleStarter.java
index 416bb93d9e2..2cc116b143d 100644
--- a/container-core/src/main/java/com/yahoo/container/core/config/BundleStarter.java
+++ b/container-core/src/main/java/com/yahoo/container/core/config/BundleStarter.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.core.config;
import org.osgi.framework.Bundle;
diff --git a/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java b/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java
index 08a468a3031..8095e07cc9e 100644
--- a/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java
+++ b/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java
@@ -1,11 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.core.config;
import com.google.inject.AbstractModule;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.yahoo.component.AbstractComponent;
-import com.yahoo.component.ComponentSpecification;
import com.yahoo.component.provider.ComponentRegistry;
import com.yahoo.concurrent.ThreadFactoryFactory;
import com.yahoo.config.FileReference;
@@ -13,8 +12,6 @@ import com.yahoo.container.di.ComponentDeconstructor;
import com.yahoo.container.di.Container;
import com.yahoo.container.di.componentgraph.core.ComponentGraph;
import com.yahoo.container.di.config.SubscriberFactory;
-import com.yahoo.container.di.osgi.BundleClasses;
-import com.yahoo.container.di.osgi.OsgiUtil;
import com.yahoo.container.logging.AccessLog;
import com.yahoo.filedistribution.fileacquirer.FileAcquirer;
import com.yahoo.jdisc.application.OsgiFramework;
@@ -25,7 +22,6 @@ import com.yahoo.osgi.OsgiImpl;
import com.yahoo.osgi.OsgiWrapper;
import com.yahoo.statistics.Statistics;
import org.osgi.framework.Bundle;
-import org.osgi.framework.wiring.BundleWiring;
import java.util.ArrayList;
import java.util.Collection;
@@ -35,8 +31,6 @@ import java.util.concurrent.Executors;
import java.util.logging.Level;
import java.util.logging.Logger;
-import static com.yahoo.collections.CollectionUtil.first;
-
/**
* For internal use only.
*
@@ -94,27 +88,6 @@ public class HandlersConfigurerDi {
platformBundleLoader = new PlatformBundleLoader(this);
}
-
- // TODO Vespa 8: Remove, only used for Jersey
- @Override
- public BundleClasses getBundleClasses(ComponentSpecification bundleSpec, Set<String> packagesToScan) {
- //Temporary hack: Using class name since ClassLoaderOsgiFramework is not available at compile time in this bundle.
- if (osgiFramework.getClass().getName().equals("com.yahoo.application.container.impl.ClassLoaderOsgiFramework")) {
- Bundle syntheticClassPathBundle = first(osgiFramework.bundles());
- ClassLoader classLoader = syntheticClassPathBundle.adapt(BundleWiring.class).getClassLoader();
-
- return new BundleClasses(
- syntheticClassPathBundle,
- OsgiUtil.getClassEntriesForBundleUsingProjectClassPathMappings(classLoader, bundleSpec, packagesToScan));
- } else {
- Bundle bundle = getBundle(bundleSpec);
- if (bundle == null)
- throw new RuntimeException("No bundle matching '" + bundleSpec + "'");
-
- return new BundleClasses(bundle, OsgiUtil.getClassEntriesInBundleClassPath(bundle, packagesToScan));
- }
- }
-
@Override
public void installPlatformBundles(Collection<String> bundlePaths) {
// Don't install physical bundles for test frameworks, where all platform bundles are on the classpath.
diff --git a/container-core/src/main/java/com/yahoo/container/core/config/PlatformBundleLoader.java b/container-core/src/main/java/com/yahoo/container/core/config/PlatformBundleLoader.java
index 4f7f718345e..6ed0a876f4e 100644
--- a/container-core/src/main/java/com/yahoo/container/core/config/PlatformBundleLoader.java
+++ b/container-core/src/main/java/com/yahoo/container/core/config/PlatformBundleLoader.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.core.config;
import com.yahoo.osgi.Osgi;
diff --git a/container-core/src/main/java/com/yahoo/container/core/config/testutil/HandlersConfigurerTestWrapper.java b/container-core/src/main/java/com/yahoo/container/core/config/testutil/HandlersConfigurerTestWrapper.java
index 087be0f17c5..973d5fb3736 100644
--- a/container-core/src/main/java/com/yahoo/container/core/config/testutil/HandlersConfigurerTestWrapper.java
+++ b/container-core/src/main/java/com/yahoo/container/core/config/testutil/HandlersConfigurerTestWrapper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.core.config.testutil;
import com.google.inject.AbstractModule;
@@ -17,6 +17,7 @@ import com.yahoo.jdisc.Metric;
import com.yahoo.jdisc.handler.RequestHandler;
import com.yahoo.jdisc.test.MockMetric;
import com.yahoo.language.Linguistics;
+import com.yahoo.language.process.Embedder;
import com.yahoo.language.simple.SimpleLinguistics;
import java.io.File;
@@ -140,6 +141,7 @@ public class HandlersConfigurerTestWrapper {
protected void configure() {
// Needed by e.g. SearchHandler
bind(Linguistics.class).to(SimpleLinguistics.class).in(Scopes.SINGLETON);
+ bind(Embedder.class).to(Embedder.FailingEmbedder.class).in(Scopes.SINGLETON);
bind(ContainerThreadPool.class).to(SimpleContainerThreadpool.class);
bind(Metric.class).to(MockMetric.class);
}
diff --git a/container-core/src/main/java/com/yahoo/container/core/document/package-info.java b/container-core/src/main/java/com/yahoo/container/core/document/package-info.java
index 35a94a52c4b..1536c8468a4 100644
--- a/container-core/src/main/java/com/yahoo/container/core/document/package-info.java
+++ b/container-core/src/main/java/com/yahoo/container/core/document/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.container.core.document;
diff --git a/container-core/src/main/java/com/yahoo/container/core/documentapi/DocumentAccessProvider.java b/container-core/src/main/java/com/yahoo/container/core/documentapi/DocumentAccessProvider.java
index 8b75e2d7660..d1f0bd76ad9 100644
--- a/container-core/src/main/java/com/yahoo/container/core/documentapi/DocumentAccessProvider.java
+++ b/container-core/src/main/java/com/yahoo/container/core/documentapi/DocumentAccessProvider.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.core.documentapi;
import com.google.inject.Inject;
@@ -22,10 +22,10 @@ public class DocumentAccessProvider extends AbstractComponent implements Provide
@Inject
public DocumentAccessProvider(DocumentmanagerConfig documentmanagerConfig, LoadTypeConfig loadTypeConfig,
- SlobroksConfig slobroksConfig, MessagebusConfig messagebusConfig,
- DocumentProtocolPoliciesConfig policiesConfig, DistributionConfig distributionConfig) {
- this.access = new VespaDocumentAccess(documentmanagerConfig, loadTypeConfig, slobroksConfig, messagebusConfig,
- policiesConfig, distributionConfig);
+ MessagebusConfig messagebusConfig, DocumentProtocolPoliciesConfig policiesConfig,
+ DistributionConfig distributionConfig) {
+ this.access = new VespaDocumentAccess(documentmanagerConfig, loadTypeConfig, System.getProperty("config.id"),
+ messagebusConfig, policiesConfig, distributionConfig);
}
@Override
diff --git a/container-core/src/main/java/com/yahoo/container/core/documentapi/VespaDocumentAccess.java b/container-core/src/main/java/com/yahoo/container/core/documentapi/VespaDocumentAccess.java
index d01cd994fa5..87a5a90dde3 100644
--- a/container-core/src/main/java/com/yahoo/container/core/documentapi/VespaDocumentAccess.java
+++ b/container-core/src/main/java/com/yahoo/container/core/documentapi/VespaDocumentAccess.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.core.documentapi;
import com.yahoo.cloud.config.SlobroksConfig;
@@ -41,7 +41,7 @@ public class VespaDocumentAccess extends DocumentAccess {
VespaDocumentAccess(DocumentmanagerConfig documentmanagerConfig,
LoadTypeConfig loadTypeConfig,
- SlobroksConfig slobroksConfig,
+ String slobroksConfigId,
MessagebusConfig messagebusConfig,
DocumentProtocolPoliciesConfig policiesConfig,
DistributionConfig distributionConfig) {
@@ -49,7 +49,7 @@ public class VespaDocumentAccess extends DocumentAccess {
this.parameters = new MessageBusParams(new LoadTypeSet(loadTypeConfig))
.setDocumentProtocolPoliciesConfig(policiesConfig, distributionConfig);
this.parameters.setDocumentmanagerConfig(documentmanagerConfig);
- this.parameters.getRPCNetworkParams().setSlobroksConfig(slobroksConfig);
+ this.parameters.getRPCNetworkParams().setSlobrokConfigId(slobroksConfigId);
this.parameters.getMessageBusParams().setMessageBusConfig(messagebusConfig);
}
diff --git a/container-core/src/main/java/com/yahoo/container/core/http/package-info.java b/container-core/src/main/java/com/yahoo/container/core/http/package-info.java
index 8bb46d3e9fe..9ba0c5f7e34 100644
--- a/container-core/src/main/java/com/yahoo/container/core/http/package-info.java
+++ b/container-core/src/main/java/com/yahoo/container/core/http/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.container.core.http;
diff --git a/container-core/src/main/java/com/yahoo/container/core/identity/package-info.java b/container-core/src/main/java/com/yahoo/container/core/identity/package-info.java
index febfa725c85..9d89426cc14 100644
--- a/container-core/src/main/java/com/yahoo/container/core/identity/package-info.java
+++ b/container-core/src/main/java/com/yahoo/container/core/identity/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.container.core.identity;
diff --git a/container-core/src/main/java/com/yahoo/container/core/package-info.java b/container-core/src/main/java/com/yahoo/container/core/package-info.java
index 018fcc84586..0316809c163 100644
--- a/container-core/src/main/java/com/yahoo/container/core/package-info.java
+++ b/container-core/src/main/java/com/yahoo/container/core/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.container.core;
diff --git a/container-core/src/main/java/com/yahoo/container/di/CloudSubscriberFactory.java b/container-core/src/main/java/com/yahoo/container/di/CloudSubscriberFactory.java
index 065733a719a..d50d56f8987 100644
--- a/container-core/src/main/java/com/yahoo/container/di/CloudSubscriberFactory.java
+++ b/container-core/src/main/java/com/yahoo/container/di/CloudSubscriberFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di;
import com.yahoo.config.ConfigInstance;
diff --git a/container-core/src/main/java/com/yahoo/container/di/ComponentDeconstructor.java b/container-core/src/main/java/com/yahoo/container/di/ComponentDeconstructor.java
index 4e3881a6fe6..bc5ddb3fa7a 100644
--- a/container-core/src/main/java/com/yahoo/container/di/ComponentDeconstructor.java
+++ b/container-core/src/main/java/com/yahoo/container/di/ComponentDeconstructor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di;
import org.osgi.framework.Bundle;
diff --git a/container-core/src/main/java/com/yahoo/container/di/ConfigRetriever.java b/container-core/src/main/java/com/yahoo/container/di/ConfigRetriever.java
index 33771bd0c1e..1e7f3e06049 100644
--- a/container-core/src/main/java/com/yahoo/container/di/ConfigRetriever.java
+++ b/container-core/src/main/java/com/yahoo/container/di/ConfigRetriever.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di;
import com.google.common.collect.Sets;
diff --git a/container-core/src/main/java/com/yahoo/container/di/Container.java b/container-core/src/main/java/com/yahoo/container/di/Container.java
index a91aa6eb588..bec685c71ef 100644
--- a/container-core/src/main/java/com/yahoo/container/di/Container.java
+++ b/container-core/src/main/java/com/yahoo/container/di/Container.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di;
import com.google.inject.Injector;
@@ -12,11 +12,9 @@ import com.yahoo.container.di.ConfigRetriever.ComponentsConfigs;
import com.yahoo.container.di.ConfigRetriever.ConfigSnapshot;
import com.yahoo.container.di.componentgraph.core.ComponentGraph;
import com.yahoo.container.di.componentgraph.core.ComponentNode;
-import com.yahoo.container.di.componentgraph.core.JerseyNode;
import com.yahoo.container.di.componentgraph.core.Node;
import com.yahoo.container.di.config.ApplicationBundlesConfig;
import com.yahoo.container.di.config.PlatformBundlesConfig;
-import com.yahoo.container.di.config.RestApiContext;
import com.yahoo.container.di.config.SubscriberFactory;
import com.yahoo.vespa.config.ConfigKey;
import org.osgi.framework.Bundle;
@@ -200,14 +198,7 @@ public class Container {
for (ComponentsConfig.Components config : componentsConfig.components()) {
BundleInstantiationSpecification specification = bundleInstantiationSpecification(config);
Class<?> componentClass = osgi.resolveClass(specification);
- Node componentNode;
-
- if (RestApiContext.class.isAssignableFrom(componentClass)) {
- Class<? extends RestApiContext> nodeClass = componentClass.asSubclass(RestApiContext.class);
- componentNode = new JerseyNode(specification.id, config.configId(), nodeClass, osgi);
- } else {
- componentNode = new ComponentNode(specification.id, config.configId(), componentClass, null);
- }
+ Node componentNode = new ComponentNode(specification.id, config.configId(), componentClass, null);
graph.add(componentNode);
}
}
diff --git a/container-core/src/main/java/com/yahoo/container/di/Osgi.java b/container-core/src/main/java/com/yahoo/container/di/Osgi.java
index 940986e2f38..39565756ac9 100644
--- a/container-core/src/main/java/com/yahoo/container/di/Osgi.java
+++ b/container-core/src/main/java/com/yahoo/container/di/Osgi.java
@@ -1,15 +1,13 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di;
import com.yahoo.component.ComponentSpecification;
import com.yahoo.config.FileReference;
import com.yahoo.container.bundle.BundleInstantiationSpecification;
import com.yahoo.container.bundle.MockBundle;
-import com.yahoo.container.di.osgi.BundleClasses;
import org.osgi.framework.Bundle;
import java.util.Collection;
-import java.util.Collections;
import java.util.Set;
import java.util.stream.Collectors;
@@ -21,9 +19,6 @@ import static java.util.Collections.emptySet;
* @author ollivir
*/
public interface Osgi {
- default BundleClasses getBundleClasses(ComponentSpecification bundle, Set<String> packagesToScan) {
- return new BundleClasses(new MockBundle(), Collections.emptySet());
- }
default void installPlatformBundles(Collection<String> bundlePaths) {
System.out.println("installPlatformBundles " + bundlePaths);
diff --git a/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/ComponentGraph.java b/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/ComponentGraph.java
index 179abba42c8..6dcf687e607 100644
--- a/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/ComponentGraph.java
+++ b/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/ComponentGraph.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di.componentgraph.core;
import com.google.common.collect.Iterables;
@@ -258,7 +258,10 @@ public class ComponentGraph {
if (component.isEmpty()) {
Object instance;
try {
- log.log(Level.FINE, () -> "Trying the fallback injector to create" + messageForNoGlobalComponent(clazz, node));
+ // This is an indication that you have not set up your components correctly in the model
+ // And tit will cause unnecessary reconstruction of your components.
+ // TODO: this should perhaps bee a warning.
+ log.log(Level.INFO, () -> "Trying the fallback injector to create" + messageForNoGlobalComponent(clazz, node));
instance = fallbackInjector.getInstance(key);
} catch (ConfigurationException e) {
throw removeStackTrace(new IllegalStateException(
diff --git a/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/ComponentNode.java b/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/ComponentNode.java
index b6fa4241e26..3a6ab581717 100644
--- a/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/ComponentNode.java
+++ b/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/ComponentNode.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di.componentgraph.core;
import com.google.inject.Inject;
diff --git a/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/ComponentRegistryNode.java b/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/ComponentRegistryNode.java
index 429052c0039..244327ab4ec 100644
--- a/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/ComponentRegistryNode.java
+++ b/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/ComponentRegistryNode.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di.componentgraph.core;
import com.google.inject.Key;
diff --git a/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/Exceptions.java b/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/Exceptions.java
index b0d9d1f3921..e0cd54936d6 100644
--- a/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/Exceptions.java
+++ b/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/Exceptions.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di.componentgraph.core;
import java.util.Arrays;
diff --git a/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/GuiceNode.java b/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/GuiceNode.java
index 61d0d9bba8d..978af7b4a8c 100644
--- a/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/GuiceNode.java
+++ b/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/GuiceNode.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di.componentgraph.core;
import com.google.inject.Key;
diff --git a/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/JerseyNode.java b/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/JerseyNode.java
deleted file mode 100644
index 0f8aa678934..00000000000
--- a/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/JerseyNode.java
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.container.di.componentgraph.core;
-
-import com.yahoo.component.ComponentId;
-import com.yahoo.component.ComponentSpecification;
-import com.yahoo.container.di.Osgi;
-import com.yahoo.container.di.config.JerseyBundlesConfig;
-import com.yahoo.container.di.config.RestApiContext;
-import com.yahoo.container.di.config.RestApiContext.BundleInfo;
-import com.yahoo.container.di.osgi.BundleClasses;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.wiring.BundleWiring;
-
-import java.net.URL;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-
-/**
- * Represents an instance of RestApiContext
- *
- * @author gjoranv
- * @author Tony Vaagenes
- * @author ollivir
- */
-public class JerseyNode extends ComponentNode {
- private static final String WEB_INF_URL = "WebInfUrl";
-
- private final Osgi osgi;
-
- public JerseyNode(ComponentId componentId, String configId, Class<?> clazz, Osgi osgi) {
- super(componentId, configId, clazz, null);
- this.osgi = osgi;
- }
-
- @Override
- protected RestApiContext newInstance() {
- Object instance = super.newInstance();
- RestApiContext restApiContext = (RestApiContext) instance;
-
- List<JerseyBundlesConfig.Bundles> bundles = restApiContext.bundlesConfig.bundles();
- for (JerseyBundlesConfig.Bundles bundleConfig : bundles) {
- BundleClasses bundleClasses = osgi.getBundleClasses(ComponentSpecification.fromString(bundleConfig.spec()),
- new HashSet<>(bundleConfig.packages()));
-
- restApiContext.addBundle(createBundleInfo(bundleClasses.bundle(), bundleClasses.classEntries()));
- }
-
- componentsToInject.forEach(component -> restApiContext.addInjectableComponent(component.instanceKey(), component.componentId(),
- component.component()));
-
- return restApiContext;
- }
-
- @Override
- public int hashCode() {
- return super.hashCode();
- }
-
- @Override
- public boolean equals(Object other) {
- return super.equals(other)
- && (other instanceof JerseyNode && this.componentsToInject.equals(((JerseyNode) other).componentsToInject));
- }
-
- public static BundleInfo createBundleInfo(Bundle bundle, Collection<String> classEntries) {
- BundleInfo bundleInfo = new BundleInfo(bundle.getSymbolicName(), bundle.getVersion(), bundle.getLocation(), webInfUrl(bundle),
- bundle.adapt(BundleWiring.class).getClassLoader());
-
- bundleInfo.setClassEntries(classEntries);
- return bundleInfo;
- }
-
- public static Bundle getBundle(Osgi osgi, String bundleSpec) {
- Bundle bundle = osgi.getBundle(ComponentSpecification.fromString(bundleSpec));
- if (bundle == null) {
- throw new IllegalArgumentException("Bundle not found: " + bundleSpec);
- }
- return bundle;
- }
-
- private static URL webInfUrl(Bundle bundle) {
- String webInfUrlHeader = bundle.getHeaders().get(WEB_INF_URL);
-
- if (webInfUrlHeader == null) {
- return null;
- } else {
- return bundle.getEntry(webInfUrlHeader);
- }
- }
-
-}
diff --git a/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/Keys.java b/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/Keys.java
index be80fc1616d..ddd2f3c9a8d 100644
--- a/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/Keys.java
+++ b/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/Keys.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di.componentgraph.core;
import com.google.inject.Key;
diff --git a/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/Node.java b/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/Node.java
index 3afc8bb817c..fa12fb37a62 100644
--- a/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/Node.java
+++ b/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/Node.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di.componentgraph.core;
import com.google.inject.Key;
diff --git a/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/package-info.java b/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/package-info.java
index e9b5b14d5d8..efdc83d3378 100644
--- a/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/package-info.java
+++ b/container-core/src/main/java/com/yahoo/container/di/componentgraph/core/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.container.di.componentgraph.core;
diff --git a/container-core/src/main/java/com/yahoo/container/di/config/ResolveDependencyException.java b/container-core/src/main/java/com/yahoo/container/di/config/ResolveDependencyException.java
index c88f851909c..65f61f5dd0f 100644
--- a/container-core/src/main/java/com/yahoo/container/di/config/ResolveDependencyException.java
+++ b/container-core/src/main/java/com/yahoo/container/di/config/ResolveDependencyException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di.config;
/**
diff --git a/container-core/src/main/java/com/yahoo/container/di/config/RestApiContext.java b/container-core/src/main/java/com/yahoo/container/di/config/RestApiContext.java
deleted file mode 100644
index bfb9a8f9160..00000000000
--- a/container-core/src/main/java/com/yahoo/container/di/config/RestApiContext.java
+++ /dev/null
@@ -1,98 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.container.di.config;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.inject.Inject;
-import com.google.inject.Key;
-import com.yahoo.component.ComponentId;
-import org.osgi.framework.Version;
-
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-
-/**
- * Only for internal JDisc use.
- *
- * @author gjoranv
- */
-public class RestApiContext {
-
- private final List<BundleInfo> bundles = new ArrayList<>();
- private final List<Injectable> injectableComponents = new ArrayList<>();
-
- public final JerseyBundlesConfig bundlesConfig;
- public final JerseyInjectionConfig injectionConfig;
-
- @Inject
- public RestApiContext(JerseyBundlesConfig bundlesConfig, JerseyInjectionConfig injectionConfig) {
- this.bundlesConfig = bundlesConfig;
- this.injectionConfig = injectionConfig;
- }
-
- public List<BundleInfo> getBundles() {
- return Collections.unmodifiableList(bundles);
- }
-
- public void addBundle(BundleInfo bundle) {
- bundles.add(bundle);
- }
-
- public List<Injectable> getInjectableComponents() {
- return Collections.unmodifiableList(injectableComponents);
- }
-
- public void addInjectableComponent(Key<?> key, ComponentId id, Object component) {
- injectableComponents.add(new Injectable(key, id, component));
- }
-
- public static class Injectable {
- public final Key<?> key;
- public final ComponentId id;
- public final Object instance;
-
- public Injectable(Key<?> key, ComponentId id, Object instance) {
- this.key = key;
- this.id = id;
- this.instance = instance;
- }
- @Override
- public String toString() {
- return id.toString();
- }
- }
-
- public static class BundleInfo {
- public final String symbolicName;
- public final Version version;
- public final String fileLocation;
- public final URL webInfUrl;
- public final ClassLoader classLoader;
-
- private Set<String> classEntries;
-
- public BundleInfo(String symbolicName, Version version, String fileLocation, URL webInfUrl, ClassLoader classLoader) {
- this.symbolicName = symbolicName;
- this.version = version;
- this.fileLocation = fileLocation;
- this.webInfUrl = webInfUrl;
- this.classLoader = classLoader;
- }
-
- @Override
- public String toString() {
- return symbolicName + ":" + version;
- }
-
- public void setClassEntries(Collection<String> entries) {
- this.classEntries = ImmutableSet.copyOf(entries);
- }
-
- public Set<String> getClassEntries() {
- return classEntries;
- }
- }
-}
diff --git a/container-core/src/main/java/com/yahoo/container/di/config/Subscriber.java b/container-core/src/main/java/com/yahoo/container/di/config/Subscriber.java
index 60207447bfd..da435e720b2 100644
--- a/container-core/src/main/java/com/yahoo/container/di/config/Subscriber.java
+++ b/container-core/src/main/java/com/yahoo/container/di/config/Subscriber.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di.config;
import com.yahoo.config.ConfigInstance;
diff --git a/container-core/src/main/java/com/yahoo/container/di/config/SubscriberFactory.java b/container-core/src/main/java/com/yahoo/container/di/config/SubscriberFactory.java
index c1c36a1b3de..1bfd4344b90 100644
--- a/container-core/src/main/java/com/yahoo/container/di/config/SubscriberFactory.java
+++ b/container-core/src/main/java/com/yahoo/container/di/config/SubscriberFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di.config;
import com.google.inject.ProvidedBy;
diff --git a/container-core/src/main/java/com/yahoo/container/di/config/package-info.java b/container-core/src/main/java/com/yahoo/container/di/config/package-info.java
index b8f65b1c3c8..4f61375a7b6 100644
--- a/container-core/src/main/java/com/yahoo/container/di/config/package-info.java
+++ b/container-core/src/main/java/com/yahoo/container/di/config/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.container.di.config;
diff --git a/container-core/src/main/java/com/yahoo/container/di/osgi/BundleClasses.java b/container-core/src/main/java/com/yahoo/container/di/osgi/BundleClasses.java
deleted file mode 100644
index bca3ed73d0b..00000000000
--- a/container-core/src/main/java/com/yahoo/container/di/osgi/BundleClasses.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.container.di.osgi;
-
-import org.osgi.framework.Bundle;
-
-import java.util.Collection;
-
-/**
- * @author ollivir
- */
-public class BundleClasses {
- private final Bundle bundle;
- private final Collection<String> classEntries;
-
- public BundleClasses(Bundle bundle, Collection<String> classEntries) {
- this.bundle = bundle;
- this.classEntries = classEntries;
- }
-
- public Bundle bundle() {
- return bundle;
- }
-
- public Collection<String> classEntries() {
- return classEntries;
- }
-}
diff --git a/container-core/src/main/java/com/yahoo/container/di/osgi/OsgiUtil.java b/container-core/src/main/java/com/yahoo/container/di/osgi/OsgiUtil.java
deleted file mode 100644
index e1854155e5b..00000000000
--- a/container-core/src/main/java/com/yahoo/container/di/osgi/OsgiUtil.java
+++ /dev/null
@@ -1,168 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.container.di.osgi;
-
-import com.yahoo.component.ComponentSpecification;
-import com.yahoo.osgi.maven.ProjectBundleClassPaths;
-import com.yahoo.osgi.maven.ProjectBundleClassPaths.BundleClasspathMapping;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.wiring.BundleWiring;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-import java.util.function.Predicate;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import java.util.stream.Collectors;
-
-import static com.google.common.io.Files.fileTreeTraverser;
-
-/**
- * Tested by com.yahoo.application.container.jersey.JerseyTest
- *
- * @author Tony Vaagenes
- * @author ollivir
- */
-public class OsgiUtil {
- private static final Logger log = Logger.getLogger(OsgiUtil.class.getName());
- private static final String CLASS_FILE_TYPE_SUFFIX = ".class";
-
- public static Collection<String> getClassEntriesInBundleClassPath(Bundle bundle, Set<String> packagesToScan) {
- BundleWiring bundleWiring = bundle.adapt(BundleWiring.class);
-
- if (packagesToScan.isEmpty()) {
- return bundleWiring.listResources("/", "*" + CLASS_FILE_TYPE_SUFFIX,
- BundleWiring.LISTRESOURCES_LOCAL | BundleWiring.LISTRESOURCES_RECURSE);
- } else {
- List<String> ret = new ArrayList<>();
- for (String pkg : packagesToScan) {
- ret.addAll(bundleWiring.listResources(packageToPath(pkg), "*" + CLASS_FILE_TYPE_SUFFIX, BundleWiring.LISTRESOURCES_LOCAL));
- }
- return ret;
- }
- }
-
- public static Collection<String> getClassEntriesForBundleUsingProjectClassPathMappings(ClassLoader classLoader,
- ComponentSpecification bundleSpec, Set<String> packagesToScan) {
- return classEntriesFrom(bundleClassPathMapping(bundleSpec, classLoader).classPathElements, packagesToScan);
- }
-
- private static BundleClasspathMapping bundleClassPathMapping(ComponentSpecification bundleSpec, ClassLoader classLoader) {
- ProjectBundleClassPaths projectBundleClassPaths = loadProjectBundleClassPaths(classLoader);
-
- if (projectBundleClassPaths.mainBundle.bundleSymbolicName.equals(bundleSpec.getName())) {
- return projectBundleClassPaths.mainBundle;
- } else {
- log.log(Level.WARNING,
- "Dependencies of the bundle " + bundleSpec + " will not be scanned. Please file a feature request if you need this");
- return matchingBundleClassPathMapping(bundleSpec, projectBundleClassPaths.providedDependencies);
- }
- }
-
- public static BundleClasspathMapping matchingBundleClassPathMapping(ComponentSpecification bundleSpec,
- Collection<BundleClasspathMapping> providedBundlesClassPathMappings) {
- for (BundleClasspathMapping mapping : providedBundlesClassPathMappings) {
- if (mapping.bundleSymbolicName.equals(bundleSpec.getName())) {
- return mapping;
- }
- }
- throw new RuntimeException("No such bundle: " + bundleSpec);
- }
-
- private static ProjectBundleClassPaths loadProjectBundleClassPaths(ClassLoader classLoader) {
- URL classPathMappingsFileLocation = classLoader.getResource(ProjectBundleClassPaths.CLASSPATH_MAPPINGS_FILENAME);
- if (classPathMappingsFileLocation == null) {
- throw new RuntimeException("Couldn't find " + ProjectBundleClassPaths.CLASSPATH_MAPPINGS_FILENAME + " in the class path.");
- }
-
- try {
- return ProjectBundleClassPaths.load(Paths.get(classPathMappingsFileLocation.toURI()));
- } catch (IOException | URISyntaxException e) {
- throw new RuntimeException(e);
- }
- }
-
- private static Collection<String> classEntriesFrom(List<String> classPathEntries, Set<String> packagesToScan) {
- Set<String> packagePathsToScan = packagesToScan.stream().map(OsgiUtil::packageToPath).collect(Collectors.toSet());
- List<String> ret = new ArrayList<>();
-
- for (String entry : classPathEntries) {
- Path path = Paths.get(entry);
- if (Files.isDirectory(path)) {
- ret.addAll(classEntriesInPath(path, packagePathsToScan));
- } else if (Files.isRegularFile(path) && path.getFileName().toString().endsWith(".jar")) {
- ret.addAll(classEntriesInJar(path, packagePathsToScan));
- } else {
- throw new RuntimeException("Unsupported path " + path + " in the class path");
- }
- }
- return ret;
- }
-
- private static String relativePathToClass(Path rootPath, Path pathToClass) {
- Path relativePath = rootPath.relativize(pathToClass);
- return relativePath.toString();
- }
-
- private static Collection<String> classEntriesInPath(Path rootPath, Collection<String> packagePathsToScan) {
- Iterable<File> fileIterator;
- if (packagePathsToScan.isEmpty()) {
- fileIterator = fileTreeTraverser().preOrderTraversal(rootPath.toFile());
- } else {
- List<File> files = new ArrayList<>();
- for (String packagePath : packagePathsToScan) {
- for (File file : fileTreeTraverser().children(rootPath.resolve(packagePath).toFile())) {
- files.add(file);
- }
- }
- fileIterator = files;
- }
-
- List<String> ret = new ArrayList<>();
- for (File file : fileIterator) {
- if (file.isFile() && file.getName().endsWith(CLASS_FILE_TYPE_SUFFIX)) {
- ret.add(relativePathToClass(rootPath, file.toPath()));
- }
- }
- return ret;
- }
-
- private static String packagePath(String name) {
- int index = name.lastIndexOf('/');
- if (index < 0) {
- return name;
- } else {
- return name.substring(0, index);
- }
- }
-
- private static Collection<String> classEntriesInJar(Path jarPath, Set<String> packagePathsToScan) {
- Predicate<String> acceptedPackage;
- if (packagePathsToScan.isEmpty()) {
- acceptedPackage = ign -> true;
- } else {
- acceptedPackage = name -> packagePathsToScan.contains(packagePath(name));
- }
-
- try (JarFile jarFile = new JarFile(jarPath.toFile())) {
- return jarFile.stream().map(JarEntry::getName).filter(name -> name.endsWith(CLASS_FILE_TYPE_SUFFIX)).filter(acceptedPackage)
- .collect(Collectors.toList());
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
- private static String packageToPath(String packageName) {
- return packageName.replace('.', '/');
- }
-}
diff --git a/container-core/src/main/java/com/yahoo/container/di/osgi/package-info.java b/container-core/src/main/java/com/yahoo/container/di/osgi/package-info.java
deleted file mode 100644
index 9685cf571bd..00000000000
--- a/container-core/src/main/java/com/yahoo/container/di/osgi/package-info.java
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-/**
- * @author Tony Vaagenes
- */
-@ExportPackage
-package com.yahoo.container.di.osgi;
-
-import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/container-core/src/main/java/com/yahoo/container/handler/AccessLogRequestHandler.java b/container-core/src/main/java/com/yahoo/container/handler/AccessLogRequestHandler.java
index c50dee43eaf..86f8e04268b 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/AccessLogRequestHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/AccessLogRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler;
import com.google.inject.Inject;
diff --git a/container-core/src/main/java/com/yahoo/container/handler/ClustersStatus.java b/container-core/src/main/java/com/yahoo/container/handler/ClustersStatus.java
index e339db2f084..ad797c283c6 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/ClustersStatus.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/ClustersStatus.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler;
import com.google.inject.Inject;
diff --git a/container-core/src/main/java/com/yahoo/container/handler/Coverage.java b/container-core/src/main/java/com/yahoo/container/handler/Coverage.java
index 7593e4dfecb..ef088a1685a 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/Coverage.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/Coverage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler;
diff --git a/container-core/src/main/java/com/yahoo/container/handler/FilterBackingRequestHandler.java b/container-core/src/main/java/com/yahoo/container/handler/FilterBackingRequestHandler.java
index 34e3c8b3adb..2353c7c0826 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/FilterBackingRequestHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/FilterBackingRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler;
import com.google.inject.Inject;
diff --git a/container-core/src/main/java/com/yahoo/container/handler/LogHandler.java b/container-core/src/main/java/com/yahoo/container/handler/LogHandler.java
index f1ba68ff3c8..f699027f42f 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/LogHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/LogHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler;
import com.google.inject.Inject;
diff --git a/container-core/src/main/java/com/yahoo/container/handler/LogReader.java b/container-core/src/main/java/com/yahoo/container/handler/LogReader.java
index 5b6a87d02df..250e3c8b607 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/LogReader.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/LogReader.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler;
import com.google.common.collect.Iterators;
diff --git a/container-core/src/main/java/com/yahoo/container/handler/Prefix.java b/container-core/src/main/java/com/yahoo/container/handler/Prefix.java
index 2fec5f07736..cd92100972d 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/Prefix.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/Prefix.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler;
/**
diff --git a/container-core/src/main/java/com/yahoo/container/handler/ThreadPoolProvider.java b/container-core/src/main/java/com/yahoo/container/handler/ThreadPoolProvider.java
index a07898cb1d1..bc3c35cb78e 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/ThreadPoolProvider.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/ThreadPoolProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler;
import com.google.inject.Inject;
diff --git a/container-core/src/main/java/com/yahoo/container/handler/Timing.java b/container-core/src/main/java/com/yahoo/container/handler/Timing.java
index a6322289074..187d6cea465 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/Timing.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/Timing.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler;
diff --git a/container-core/src/main/java/com/yahoo/container/handler/VipStatus.java b/container-core/src/main/java/com/yahoo/container/handler/VipStatus.java
index 50b34d39751..559c097618f 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/VipStatus.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/VipStatus.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler;
import com.google.inject.Inject;
diff --git a/container-core/src/main/java/com/yahoo/container/handler/VipStatusHandler.java b/container-core/src/main/java/com/yahoo/container/handler/VipStatusHandler.java
index 04d03a44fb6..490876dbf76 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/VipStatusHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/VipStatusHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler;
import java.io.File;
diff --git a/container-core/src/main/java/com/yahoo/container/handler/metrics/PrometheusV1Handler.java b/container-core/src/main/java/com/yahoo/container/handler/metrics/PrometheusV1Handler.java
index 6270d1c7b06..aa99beb3b24 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/metrics/PrometheusV1Handler.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/metrics/PrometheusV1Handler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler.metrics;
import ai.vespa.util.http.hc4.VespaHttpClientBuilder;
diff --git a/container-core/src/main/java/com/yahoo/container/handler/metrics/package-info.java b/container-core/src/main/java/com/yahoo/container/handler/metrics/package-info.java
index 031886afc94..abadf79c3b2 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/metrics/package-info.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/metrics/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/** Exported config package */
@ExportPackage
package com.yahoo.container.handler.metrics;
diff --git a/container-core/src/main/java/com/yahoo/container/handler/package-info.java b/container-core/src/main/java/com/yahoo/container/handler/package-info.java
index 7c193a8fa31..748385617ad 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/package-info.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Contains the handler framework of the container.
*/
diff --git a/container-core/src/main/java/com/yahoo/container/handler/test/MockService.java b/container-core/src/main/java/com/yahoo/container/handler/test/MockService.java
index 625212bcfe9..8f24e2e64a2 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/test/MockService.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/test/MockService.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler.test;
import com.google.common.annotations.Beta;
diff --git a/container-core/src/main/java/com/yahoo/container/handler/test/MockServiceHandler.java b/container-core/src/main/java/com/yahoo/container/handler/test/MockServiceHandler.java
index 2ef3d66d501..c417eb6516e 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/test/MockServiceHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/test/MockServiceHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler.test;
import com.google.common.annotations.Beta;
diff --git a/container-core/src/main/java/com/yahoo/container/handler/test/package-info.java b/container-core/src/main/java/com/yahoo/container/handler/test/package-info.java
index 60a5fe12369..23338286943 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/test/package-info.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/test/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Contains the handler test utilities.
*/
diff --git a/container-core/src/main/java/com/yahoo/container/handler/threadpool/ContainerThreadPool.java b/container-core/src/main/java/com/yahoo/container/handler/threadpool/ContainerThreadPool.java
index 35bd807b126..fc789d921f2 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/threadpool/ContainerThreadPool.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/threadpool/ContainerThreadPool.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler.threadpool;
import java.util.concurrent.Executor;
diff --git a/container-core/src/main/java/com/yahoo/container/handler/threadpool/DefaultContainerThreadpool.java b/container-core/src/main/java/com/yahoo/container/handler/threadpool/DefaultContainerThreadpool.java
index 6bed4a6f442..8d07e7c3757 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/threadpool/DefaultContainerThreadpool.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/threadpool/DefaultContainerThreadpool.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler.threadpool;
import com.google.inject.Inject;
@@ -12,9 +12,10 @@ import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Executor;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.TimeUnit;
+import java.util.logging.Logger;
/**
- * Default implementation of {@link DefaultContainerThreadpool}.
+ * Default implementation of {@link ContainerThreadPool}.
*
* @author Steinar Knutsen
* @author baldersheim
@@ -23,6 +24,10 @@ import java.util.concurrent.TimeUnit;
*/
public class DefaultContainerThreadpool extends AbstractComponent implements AutoCloseable, ContainerThreadPool {
+ private static final Logger log = Logger.getLogger(DefaultContainerThreadpool.class.getName());
+ private static final int MIN_QUEUE_SIZE = 650;
+ private static final int MIN_THREADS_WHEN_SCALE_FACTOR = 8;
+
private final ExecutorServiceWrapper threadpool;
@Inject
@@ -31,22 +36,31 @@ public class DefaultContainerThreadpool extends AbstractComponent implements Aut
}
public DefaultContainerThreadpool(ContainerThreadpoolConfig config, Metric metric, ProcessTerminator processTerminator) {
- ThreadPoolMetric threadPoolMetric = new ThreadPoolMetric(metric, config.name());
- int maxNumThreads = computeMaximumThreadPoolSize(config.maxThreads());
- int coreNumThreads = computeCoreThreadPoolSize(config.minThreads(), maxNumThreads);
+ this(config, metric, processTerminator, Runtime.getRuntime().availableProcessors());
+ }
+
+ DefaultContainerThreadpool(ContainerThreadpoolConfig config, Metric metric, ProcessTerminator processTerminator,
+ int cpus) {
+ String name = config.name();
+ int maxThreads = maxThreads(config, cpus);
+ int minThreads = minThreads(config, maxThreads, cpus);
+ int queueSize = queueSize(config, maxThreads);
+ log.info(String.format("Threadpool '%s': min=%d, max=%d, queue=%d", name, minThreads, maxThreads, queueSize));
+
+ ThreadPoolMetric threadPoolMetric = new ThreadPoolMetric(metric, name);
WorkerCompletionTimingThreadPoolExecutor executor =
- new WorkerCompletionTimingThreadPoolExecutor(coreNumThreads, maxNumThreads,
+ new WorkerCompletionTimingThreadPoolExecutor(minThreads, maxThreads,
(int)config.keepAliveTime() * 1000, TimeUnit.MILLISECONDS,
- createQ(config.queueSize(), maxNumThreads),
- ThreadFactoryFactory.getThreadFactory(config.name()),
+ createQueue(queueSize),
+ ThreadFactoryFactory.getThreadFactory(name),
threadPoolMetric);
// Prestart needed, if not all threads will be created by the fist N tasks and hence they might also
// get the dreaded thread locals initialized even if they will never run.
- // That counters what we we want to achieve with the Q that will prefer thread locality.
+ // That counters what we want to achieve with the Q that will prefer thread locality.
executor.prestartAllCoreThreads();
threadpool = new ExecutorServiceWrapper(
executor, threadPoolMetric, processTerminator, config.maxThreadExecutionTimeSeconds() * 1000L,
- config.name(), config.queueSize());
+ name, queueSize);
}
@Override public Executor executor() { return threadpool; }
@@ -74,24 +88,26 @@ public class DefaultContainerThreadpool extends AbstractComponent implements Aut
}
}
- private static BlockingQueue<Runnable> createQ(int queueSize, int maxThreads) {
- return (queueSize == 0)
- ? new SynchronousQueue<>(false)
- : (queueSize < 0)
- ? new ArrayBlockingQueue<>(maxThreads*4)
- : new ArrayBlockingQueue<>(queueSize);
+ private static BlockingQueue<Runnable> createQueue(int size) {
+ return size == 0 ? new SynchronousQueue<>(false) : new ArrayBlockingQueue<>(size);
+ }
+
+ private static int maxThreads(ContainerThreadpoolConfig config, int cpus) {
+ if (config.maxThreads() > 0) return config.maxThreads();
+ else if (config.maxThreads() == 0) return 4 * cpus;
+ else return Math.max(MIN_THREADS_WHEN_SCALE_FACTOR, Math.abs(config.maxThreads()) * cpus);
}
- private static int computeMaximumThreadPoolSize(int maxNumThreads) {
- return (maxNumThreads <= 0)
- ? Runtime.getRuntime().availableProcessors() * 4
- : maxNumThreads;
+ private static int minThreads(ContainerThreadpoolConfig config, int max, int cpus) {
+ int threads;
+ if (config.minThreads() > 0) threads = config.minThreads();
+ else if (config.minThreads() == 0) threads = 4 * cpus;
+ else threads = Math.max(MIN_THREADS_WHEN_SCALE_FACTOR, Math.abs(config.minThreads()) * cpus);
+ return Math.min(threads, max);
}
- private static int computeCoreThreadPoolSize(int corePoolSize, int maxNumThreads) {
- return Math.min(
- corePoolSize <= 0 ? Runtime.getRuntime().availableProcessors() * 2 : corePoolSize,
- maxNumThreads);
+ private int queueSize(ContainerThreadpoolConfig config, int maxThreads) {
+ return config.queueSize() >= 0 ? config.queueSize() : Math.max(MIN_QUEUE_SIZE, Math.abs(config.queueSize()) * maxThreads);
}
}
diff --git a/container-core/src/main/java/com/yahoo/container/handler/threadpool/ExecutorServiceWrapper.java b/container-core/src/main/java/com/yahoo/container/handler/threadpool/ExecutorServiceWrapper.java
index 8e0d11c3171..52936f7bbef 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/threadpool/ExecutorServiceWrapper.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/threadpool/ExecutorServiceWrapper.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler.threadpool;
import com.google.common.util.concurrent.ForwardingExecutorService;
diff --git a/container-core/src/main/java/com/yahoo/container/handler/threadpool/ThreadPoolMetric.java b/container-core/src/main/java/com/yahoo/container/handler/threadpool/ThreadPoolMetric.java
index 18ccf3ba8e5..cc70abac59b 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/threadpool/ThreadPoolMetric.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/threadpool/ThreadPoolMetric.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler.threadpool;
import com.yahoo.jdisc.Metric;
diff --git a/container-core/src/main/java/com/yahoo/container/handler/threadpool/WorkerCompletionTimingThreadPoolExecutor.java b/container-core/src/main/java/com/yahoo/container/handler/threadpool/WorkerCompletionTimingThreadPoolExecutor.java
index 1f64cdbdc40..593e9123fa0 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/threadpool/WorkerCompletionTimingThreadPoolExecutor.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/threadpool/WorkerCompletionTimingThreadPoolExecutor.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler.threadpool;
import java.util.concurrent.BlockingQueue;
diff --git a/container-core/src/main/java/com/yahoo/container/handler/threadpool/package-info.java b/container-core/src/main/java/com/yahoo/container/handler/threadpool/package-info.java
index 6a94cea49da..063ab34e395 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/threadpool/package-info.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/threadpool/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-core/src/main/java/com/yahoo/container/http/AccessLogUtil.java b/container-core/src/main/java/com/yahoo/container/http/AccessLogUtil.java
index da419837f63..1ca24c5c524 100644
--- a/container-core/src/main/java/com/yahoo/container/http/AccessLogUtil.java
+++ b/container-core/src/main/java/com/yahoo/container/http/AccessLogUtil.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.http;
import com.yahoo.jdisc.http.HttpRequest;
diff --git a/container-core/src/main/java/com/yahoo/container/http/BenchmarkingHeaders.java b/container-core/src/main/java/com/yahoo/container/http/BenchmarkingHeaders.java
index da548c6adee..22ca548e8b4 100644
--- a/container-core/src/main/java/com/yahoo/container/http/BenchmarkingHeaders.java
+++ b/container-core/src/main/java/com/yahoo/container/http/BenchmarkingHeaders.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.http;
/**
diff --git a/container-core/src/main/java/com/yahoo/container/http/filter/FilterChainRepository.java b/container-core/src/main/java/com/yahoo/container/http/filter/FilterChainRepository.java
index 688d2c1c5be..1f933899e03 100644
--- a/container-core/src/main/java/com/yahoo/container/http/filter/FilterChainRepository.java
+++ b/container-core/src/main/java/com/yahoo/container/http/filter/FilterChainRepository.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.http.filter;
import com.yahoo.component.AbstractComponent;
diff --git a/container-core/src/main/java/com/yahoo/container/http/package-info.java b/container-core/src/main/java/com/yahoo/container/http/package-info.java
index 05be6e71af3..16624fb8e58 100644
--- a/container-core/src/main/java/com/yahoo/container/http/package-info.java
+++ b/container-core/src/main/java/com/yahoo/container/http/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.container.http;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/AclMapping.java b/container-core/src/main/java/com/yahoo/container/jdisc/AclMapping.java
index e7c3d71ba44..dcb8eb97b8d 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/AclMapping.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/AclMapping.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/AsyncHttpResponse.java b/container-core/src/main/java/com/yahoo/container/jdisc/AsyncHttpResponse.java
index 6ed467a465c..79dfa4c84af 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/AsyncHttpResponse.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/AsyncHttpResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import java.io.IOException;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/ContentChannelOutputStream.java b/container-core/src/main/java/com/yahoo/container/jdisc/ContentChannelOutputStream.java
index 270da0c4ab0..d5dc18c1e5e 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/ContentChannelOutputStream.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/ContentChannelOutputStream.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.yahoo.io.BufferChain;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/EmptyResponse.java b/container-core/src/main/java/com/yahoo/container/jdisc/EmptyResponse.java
index 737017b7957..4477b7319b8 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/EmptyResponse.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/EmptyResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import java.io.IOException;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/ExtendedResponse.java b/container-core/src/main/java/com/yahoo/container/jdisc/ExtendedResponse.java
index b2d32c8e745..208794998a6 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/ExtendedResponse.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/ExtendedResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.yahoo.container.handler.Coverage;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/HttpMethodAclMapping.java b/container-core/src/main/java/com/yahoo/container/jdisc/HttpMethodAclMapping.java
index 2ca19f689ee..49b1bf9e116 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/HttpMethodAclMapping.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/HttpMethodAclMapping.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/HttpRequest.java b/container-core/src/main/java/com/yahoo/container/jdisc/HttpRequest.java
index 96a7902a076..6f5cc5722c8 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/HttpRequest.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/HttpRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.google.inject.Key;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/HttpRequestBuilder.java b/container-core/src/main/java/com/yahoo/container/jdisc/HttpRequestBuilder.java
index 3f70f4b75bb..81a020a6b69 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/HttpRequestBuilder.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/HttpRequestBuilder.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.yahoo.jdisc.http.HttpRequest.Method;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/HttpRequestHandler.java b/container-core/src/main/java/com/yahoo/container/jdisc/HttpRequestHandler.java
index f322c9c5b6f..91d35c96c96 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/HttpRequestHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/HttpRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/HttpResponse.java b/container-core/src/main/java/com/yahoo/container/jdisc/HttpResponse.java
index 5df40a90fe6..8758ccb057f 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/HttpResponse.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/HttpResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.yahoo.container.logging.AccessLogEntry;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/LoggingCompletionHandler.java b/container-core/src/main/java/com/yahoo/container/jdisc/LoggingCompletionHandler.java
index 09824dca77c..1143de1d043 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/LoggingCompletionHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/LoggingCompletionHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.yahoo.jdisc.handler.CompletionHandler;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java b/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java
index 222df8fb266..717bde1eb5e 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.google.inject.Inject;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/MetricConsumerFactory.java b/container-core/src/main/java/com/yahoo/container/jdisc/MetricConsumerFactory.java
index ecf120bfe44..63cc206938d 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/MetricConsumerFactory.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/MetricConsumerFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.yahoo.jdisc.application.MetricConsumer;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/RequestHandlerSpec.java b/container-core/src/main/java/com/yahoo/container/jdisc/RequestHandlerSpec.java
index 0ebb0bb99d9..8ba23f91298 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/RequestHandlerSpec.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/RequestHandlerSpec.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/RequestHandlerTestDriver.java b/container-core/src/main/java/com/yahoo/container/jdisc/RequestHandlerTestDriver.java
index e976caf3f9f..de877bc413d 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/RequestHandlerTestDriver.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/RequestHandlerTestDriver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.google.common.annotations.Beta;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/RequestView.java b/container-core/src/main/java/com/yahoo/container/jdisc/RequestView.java
index 51a5fdc8959..7bcbeb56ecb 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/RequestView.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/RequestView.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java b/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java
index be708f2fc94..0bfe4afe07d 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.google.inject.Inject;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java b/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java
index 446ee90c205..ab4c66dd1c5 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.google.inject.Inject;
@@ -174,7 +174,7 @@ public abstract class ThreadedRequestHandler extends AbstractRequestHandler {
RequestTask(Request request, BufferedContentChannel content, ResponseHandler responseHandler) {
this.request = request;
- this.requestReference = request.refer();
+ this.requestReference = request.refer(this);
this.content = content;
this.responseHandler = responseHandler;
}
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/VespaHeaders.java b/container-core/src/main/java/com/yahoo/container/jdisc/VespaHeaders.java
index 3236f7d2407..b8e7bd44675 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/VespaHeaders.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/VespaHeaders.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/package-info.java b/container-core/src/main/java/com/yahoo/container/jdisc/package-info.java
index 60f7b221e5f..3700a23b2a1 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/package-info.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.container.jdisc;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/state/CountMetric.java b/container-core/src/main/java/com/yahoo/container/jdisc/state/CountMetric.java
index e3ee12a5137..be7bbfb2257 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/state/CountMetric.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/state/CountMetric.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.state;
/**
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/state/GaugeMetric.java b/container-core/src/main/java/com/yahoo/container/jdisc/state/GaugeMetric.java
index 9a195710c8f..651f8e8a928 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/state/GaugeMetric.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/state/GaugeMetric.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.state;
import java.util.List;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/state/JsonUtil.java b/container-core/src/main/java/com/yahoo/container/jdisc/state/JsonUtil.java
index 4c697fb5ada..e7d7eb1079d 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/state/JsonUtil.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/state/JsonUtil.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.state;
/**
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/state/MetricDimensions.java b/container-core/src/main/java/com/yahoo/container/jdisc/state/MetricDimensions.java
index a03d1a60cfd..5991c85f47c 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/state/MetricDimensions.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/state/MetricDimensions.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.state;
import java.util.Map;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/state/MetricSet.java b/container-core/src/main/java/com/yahoo/container/jdisc/state/MetricSet.java
index e7304b35075..879d34ec350 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/state/MetricSet.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/state/MetricSet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.state;
import java.util.HashMap;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/state/MetricSnapshot.java b/container-core/src/main/java/com/yahoo/container/jdisc/state/MetricSnapshot.java
index 780b65211eb..b05d0761974 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/state/MetricSnapshot.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/state/MetricSnapshot.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.state;
import java.util.HashMap;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/state/MetricValue.java b/container-core/src/main/java/com/yahoo/container/jdisc/state/MetricValue.java
index b6cf71343b3..7d97bdba972 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/state/MetricValue.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/state/MetricValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.state;
/**
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/state/MetricsPacketsHandler.java b/container-core/src/main/java/com/yahoo/container/jdisc/state/MetricsPacketsHandler.java
index ff73fcd3b4e..7dca0959051 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/state/MetricsPacketsHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/state/MetricsPacketsHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.state;
import com.fasterxml.jackson.core.JsonProcessingException;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/state/SnapshotProvider.java b/container-core/src/main/java/com/yahoo/container/jdisc/state/SnapshotProvider.java
index d693bf97bd8..8eea675cba2 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/state/SnapshotProvider.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/state/SnapshotProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.state;
import java.io.PrintStream;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/state/StateHandler.java b/container-core/src/main/java/com/yahoo/container/jdisc/state/StateHandler.java
index a38772ab5dd..d4be64037ea 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/state/StateHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/state/StateHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.state;
import com.fasterxml.jackson.core.JsonProcessingException;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/state/StateMetricContext.java b/container-core/src/main/java/com/yahoo/container/jdisc/state/StateMetricContext.java
index fd99aaf8789..fa08b785eed 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/state/StateMetricContext.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/state/StateMetricContext.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.state;
import com.yahoo.jdisc.Metric;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/state/StateMonitor.java b/container-core/src/main/java/com/yahoo/container/jdisc/state/StateMonitor.java
index 027ce02a2aa..97aa6ffce18 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/state/StateMonitor.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/state/StateMonitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.state;
import com.google.inject.Inject;
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/state/package-info.java b/container-core/src/main/java/com/yahoo/container/jdisc/state/package-info.java
index 52b7af2a02c..c14e8f21b18 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/state/package-info.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/state/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Metrics implementation for jDisc. This consumes metrics over the jDisc metric API and
diff --git a/container-core/src/main/java/com/yahoo/container/logging/AccessLog.java b/container-core/src/main/java/com/yahoo/container/logging/AccessLog.java
index 2d46c53bca7..5a6b3832f27 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/AccessLog.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/AccessLog.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
diff --git a/container-core/src/main/java/com/yahoo/container/logging/AccessLogEntry.java b/container-core/src/main/java/com/yahoo/container/logging/AccessLogEntry.java
index 42285fb85bb..c469c90f6ab 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/AccessLogEntry.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/AccessLogEntry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
import com.yahoo.collections.ListMap;
diff --git a/container-core/src/main/java/com/yahoo/container/logging/AccessLogHandler.java b/container-core/src/main/java/com/yahoo/container/logging/AccessLogHandler.java
index f14479899f5..14cf2cc602e 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/AccessLogHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/AccessLogHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
import com.yahoo.container.core.AccessLogConfig;
@@ -13,13 +13,19 @@ class AccessLogHandler {
AccessLogHandler(AccessLogConfig.FileHandler config, LogWriter<RequestLogEntry> logWriter) {
logFileHandler = new LogFileHandler<>(
toCompression(config), config.bufferSize(), config.pattern(), config.rotation(),
- config.symlink(), config.queueSize(), "request-logger", logWriter);
+ config.symlink(), queueSize(config), "request-logger", logWriter);
+ }
+
+ private static int queueSize(AccessLogConfig.FileHandler config) {
+ if (config.queueSize() != -1) return config.queueSize();
+ return Math.max(4096, Runtime.getRuntime().availableProcessors() * 256);
}
public void log(RequestLogEntry entry) {
logFileHandler.publish(entry);
}
+
private LogFileHandler.Compression toCompression(AccessLogConfig.FileHandler config) {
if (!config.compressOnRotation()) return LogFileHandler.Compression.NONE;
switch (config.compressionFormat()) {
diff --git a/container-core/src/main/java/com/yahoo/container/logging/CircularArrayAccessLogKeeper.java b/container-core/src/main/java/com/yahoo/container/logging/CircularArrayAccessLogKeeper.java
index dc749c71613..88864c8b617 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/CircularArrayAccessLogKeeper.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/CircularArrayAccessLogKeeper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
import java.util.ArrayDeque;
diff --git a/container-core/src/main/java/com/yahoo/container/logging/ConnectionLog.java b/container-core/src/main/java/com/yahoo/container/logging/ConnectionLog.java
index 310231a4a1e..9fd7b279ab5 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/ConnectionLog.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/ConnectionLog.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
diff --git a/container-core/src/main/java/com/yahoo/container/logging/ConnectionLogEntry.java b/container-core/src/main/java/com/yahoo/container/logging/ConnectionLogEntry.java
index 6f9d7840573..26cdd1597c5 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/ConnectionLogEntry.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/ConnectionLogEntry.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
diff --git a/container-core/src/main/java/com/yahoo/container/logging/ConnectionLogHandler.java b/container-core/src/main/java/com/yahoo/container/logging/ConnectionLogHandler.java
index 7b130884667..a572f0be998 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/ConnectionLogHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/ConnectionLogHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
diff --git a/container-core/src/main/java/com/yahoo/container/logging/FileConnectionLog.java b/container-core/src/main/java/com/yahoo/container/logging/FileConnectionLog.java
index 749426d3da9..72c93443d31 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/FileConnectionLog.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/FileConnectionLog.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
@@ -14,7 +14,13 @@ public class FileConnectionLog extends AbstractComponent implements ConnectionLo
@Inject
public FileConnectionLog(ConnectionLogConfig config) {
- logHandler = new ConnectionLogHandler(config.logDirectoryName(), config.bufferSize(), config.cluster(), config.queueSize(), new JsonConnectionLogWriter());
+ logHandler = new ConnectionLogHandler(config.logDirectoryName(), config.bufferSize(), config.cluster(),
+ queueSize(config), new JsonConnectionLogWriter());
+ }
+
+ private static int queueSize(ConnectionLogConfig config) {
+ if (config.queueSize() != -1) return config.queueSize();
+ return Math.max(4096, Runtime.getRuntime().availableProcessors() * 512);
}
@Override
diff --git a/container-core/src/main/java/com/yahoo/container/logging/FormatUtil.java b/container-core/src/main/java/com/yahoo/container/logging/FormatUtil.java
index ee780ad2a83..1fcb18dd9dd 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/FormatUtil.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/FormatUtil.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
import com.fasterxml.jackson.core.JsonGenerator;
diff --git a/container-core/src/main/java/com/yahoo/container/logging/HitCounts.java b/container-core/src/main/java/com/yahoo/container/logging/HitCounts.java
index fed12281962..c76382de584 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/HitCounts.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/HitCounts.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
/**
diff --git a/container-core/src/main/java/com/yahoo/container/logging/JSONAccessLog.java b/container-core/src/main/java/com/yahoo/container/logging/JSONAccessLog.java
index ece9d0d2c4a..375608abeb1 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/JSONAccessLog.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/JSONAccessLog.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
import com.yahoo.component.AbstractComponent;
diff --git a/container-core/src/main/java/com/yahoo/container/logging/JSONFormatter.java b/container-core/src/main/java/com/yahoo/container/logging/JSONFormatter.java
index 387cf28440b..ac3656e8e9b 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/JSONFormatter.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/JSONFormatter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
import com.fasterxml.jackson.core.JsonEncoding;
diff --git a/container-core/src/main/java/com/yahoo/container/logging/JsonConnectionLogWriter.java b/container-core/src/main/java/com/yahoo/container/logging/JsonConnectionLogWriter.java
index 53aa79b9f8c..d686c97249f 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/JsonConnectionLogWriter.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/JsonConnectionLogWriter.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
import com.fasterxml.jackson.core.JsonEncoding;
diff --git a/container-core/src/main/java/com/yahoo/container/logging/LogFileHandler.java b/container-core/src/main/java/com/yahoo/container/logging/LogFileHandler.java
index 85c211c0e3a..c97e128b170 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/LogFileHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/LogFileHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
import com.yahoo.compress.ZstdOuputStream;
diff --git a/container-core/src/main/java/com/yahoo/container/logging/LogFormatter.java b/container-core/src/main/java/com/yahoo/container/logging/LogFormatter.java
index cc1dcb579aa..9970251d84b 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/LogFormatter.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/LogFormatter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
import java.text.DateFormat;
diff --git a/container-core/src/main/java/com/yahoo/container/logging/LogWriter.java b/container-core/src/main/java/com/yahoo/container/logging/LogWriter.java
index 15a983cfb43..ebaa140e2f2 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/LogWriter.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/LogWriter.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
diff --git a/container-core/src/main/java/com/yahoo/container/logging/RequestLog.java b/container-core/src/main/java/com/yahoo/container/logging/RequestLog.java
index 2090ba1b9f1..b9712bebb44 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/RequestLog.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/RequestLog.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
/**
diff --git a/container-core/src/main/java/com/yahoo/container/logging/RequestLogEntry.java b/container-core/src/main/java/com/yahoo/container/logging/RequestLogEntry.java
index 4b98e94047d..23804613f4e 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/RequestLogEntry.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/RequestLogEntry.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
import com.yahoo.yolean.trace.TraceNode;
diff --git a/container-core/src/main/java/com/yahoo/container/logging/RequestLogHandler.java b/container-core/src/main/java/com/yahoo/container/logging/RequestLogHandler.java
index 85df08e4abb..1cc89d96c75 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/RequestLogHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/RequestLogHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
/**
diff --git a/container-core/src/main/java/com/yahoo/container/logging/TraceRenderer.java b/container-core/src/main/java/com/yahoo/container/logging/TraceRenderer.java
index 41b88e08c19..18e38d677f4 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/TraceRenderer.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/TraceRenderer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
import com.yahoo.data.access.Inspectable;
diff --git a/container-core/src/main/java/com/yahoo/container/logging/VespaAccessLog.java b/container-core/src/main/java/com/yahoo/container/logging/VespaAccessLog.java
index 74d419b11e7..69fc23853f9 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/VespaAccessLog.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/VespaAccessLog.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
import com.yahoo.component.AbstractComponent;
diff --git a/container-core/src/main/java/com/yahoo/container/logging/package-info.java b/container-core/src/main/java/com/yahoo/container/logging/package-info.java
index fc2abb7b609..9eb89e73a77 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/package-info.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.container.logging;
diff --git a/container-core/src/main/java/com/yahoo/container/package-info.java b/container-core/src/main/java/com/yahoo/container/package-info.java
index 4428a4ae98e..19551dc0e02 100644
--- a/container-core/src/main/java/com/yahoo/container/package-info.java
+++ b/container-core/src/main/java/com/yahoo/container/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.container;
diff --git a/container-core/src/main/java/com/yahoo/container/protect/Error.java b/container-core/src/main/java/com/yahoo/container/protect/Error.java
index b39a33b1346..6eebe14a9f5 100644
--- a/container-core/src/main/java/com/yahoo/container/protect/Error.java
+++ b/container-core/src/main/java/com/yahoo/container/protect/Error.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.protect;
/**
diff --git a/container-core/src/main/java/com/yahoo/container/protect/ProcessTerminator.java b/container-core/src/main/java/com/yahoo/container/protect/ProcessTerminator.java
index 16cf741813c..e1c1ace4c81 100644
--- a/container-core/src/main/java/com/yahoo/container/protect/ProcessTerminator.java
+++ b/container-core/src/main/java/com/yahoo/container/protect/ProcessTerminator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.protect;
import com.yahoo.protect.Process;
diff --git a/container-core/src/main/java/com/yahoo/container/protect/package-info.java b/container-core/src/main/java/com/yahoo/container/protect/package-info.java
index 3eeeadd09e8..5a32f0f6fd3 100644
--- a/container-core/src/main/java/com/yahoo/container/protect/package-info.java
+++ b/container-core/src/main/java/com/yahoo/container/protect/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.container.protect;
diff --git a/container-core/src/main/java/com/yahoo/container/servlet/ServletProvider.java b/container-core/src/main/java/com/yahoo/container/servlet/ServletProvider.java
index 213063a725d..aabaa6dd378 100644
--- a/container-core/src/main/java/com/yahoo/container/servlet/ServletProvider.java
+++ b/container-core/src/main/java/com/yahoo/container/servlet/ServletProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.servlet;
import javax.servlet.Servlet;
diff --git a/container-core/src/main/java/com/yahoo/container/servlet/package-info.java b/container-core/src/main/java/com/yahoo/container/servlet/package-info.java
index c5fa8068951..38c03998bf7 100644
--- a/container-core/src/main/java/com/yahoo/container/servlet/package-info.java
+++ b/container-core/src/main/java/com/yahoo/container/servlet/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.container.servlet;
diff --git a/container-core/src/main/java/com/yahoo/container/xml/bind/package-info.java b/container-core/src/main/java/com/yahoo/container/xml/bind/package-info.java
index 9bb1e7f6597..e6850261f2c 100644
--- a/container-core/src/main/java/com/yahoo/container/xml/bind/package-info.java
+++ b/container-core/src/main/java/com/yahoo/container/xml/bind/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.container.xml.bind;
diff --git a/container-core/src/main/java/com/yahoo/container/xml/providers/DatatypeFactoryProvider.java b/container-core/src/main/java/com/yahoo/container/xml/providers/DatatypeFactoryProvider.java
index d49c548d25c..4777d588d48 100644
--- a/container-core/src/main/java/com/yahoo/container/xml/providers/DatatypeFactoryProvider.java
+++ b/container-core/src/main/java/com/yahoo/container/xml/providers/DatatypeFactoryProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.xml.providers;
import com.yahoo.container.di.componentgraph.Provider;
diff --git a/container-core/src/main/java/com/yahoo/container/xml/providers/DocumentBuilderFactoryProvider.java b/container-core/src/main/java/com/yahoo/container/xml/providers/DocumentBuilderFactoryProvider.java
index c81d173e1ed..769c3d7d7da 100644
--- a/container-core/src/main/java/com/yahoo/container/xml/providers/DocumentBuilderFactoryProvider.java
+++ b/container-core/src/main/java/com/yahoo/container/xml/providers/DocumentBuilderFactoryProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.xml.providers;
import com.yahoo.container.di.componentgraph.Provider;
diff --git a/container-core/src/main/java/com/yahoo/container/xml/providers/SAXParserFactoryProvider.java b/container-core/src/main/java/com/yahoo/container/xml/providers/SAXParserFactoryProvider.java
index 0d0b79d8ce7..8dafbe3042a 100644
--- a/container-core/src/main/java/com/yahoo/container/xml/providers/SAXParserFactoryProvider.java
+++ b/container-core/src/main/java/com/yahoo/container/xml/providers/SAXParserFactoryProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.xml.providers;
import com.yahoo.container.di.componentgraph.Provider;
diff --git a/container-core/src/main/java/com/yahoo/container/xml/providers/SchemaFactoryProvider.java b/container-core/src/main/java/com/yahoo/container/xml/providers/SchemaFactoryProvider.java
index 0d69e129492..344686a252e 100644
--- a/container-core/src/main/java/com/yahoo/container/xml/providers/SchemaFactoryProvider.java
+++ b/container-core/src/main/java/com/yahoo/container/xml/providers/SchemaFactoryProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.xml.providers;
import com.yahoo.container.di.componentgraph.Provider;
diff --git a/container-core/src/main/java/com/yahoo/container/xml/providers/TransformerFactoryProvider.java b/container-core/src/main/java/com/yahoo/container/xml/providers/TransformerFactoryProvider.java
index 071a576abe8..851c4c1c51c 100644
--- a/container-core/src/main/java/com/yahoo/container/xml/providers/TransformerFactoryProvider.java
+++ b/container-core/src/main/java/com/yahoo/container/xml/providers/TransformerFactoryProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.xml.providers;
import com.yahoo.container.di.componentgraph.Provider;
diff --git a/container-core/src/main/java/com/yahoo/container/xml/providers/XMLEventFactoryProvider.java b/container-core/src/main/java/com/yahoo/container/xml/providers/XMLEventFactoryProvider.java
index f5e1e666072..5039d47855d 100644
--- a/container-core/src/main/java/com/yahoo/container/xml/providers/XMLEventFactoryProvider.java
+++ b/container-core/src/main/java/com/yahoo/container/xml/providers/XMLEventFactoryProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.xml.providers;
import com.yahoo.container.di.componentgraph.Provider;
diff --git a/container-core/src/main/java/com/yahoo/container/xml/providers/XMLInputFactoryProvider.java b/container-core/src/main/java/com/yahoo/container/xml/providers/XMLInputFactoryProvider.java
index 99eb6df7093..07a0f740d55 100644
--- a/container-core/src/main/java/com/yahoo/container/xml/providers/XMLInputFactoryProvider.java
+++ b/container-core/src/main/java/com/yahoo/container/xml/providers/XMLInputFactoryProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.xml.providers;
import com.yahoo.container.di.componentgraph.Provider;
diff --git a/container-core/src/main/java/com/yahoo/container/xml/providers/XMLOutputFactoryProvider.java b/container-core/src/main/java/com/yahoo/container/xml/providers/XMLOutputFactoryProvider.java
index c5a21dae410..50d10836938 100644
--- a/container-core/src/main/java/com/yahoo/container/xml/providers/XMLOutputFactoryProvider.java
+++ b/container-core/src/main/java/com/yahoo/container/xml/providers/XMLOutputFactoryProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.xml.providers;
import com.yahoo.container.di.componentgraph.Provider;
diff --git a/container-core/src/main/java/com/yahoo/container/xml/providers/XPathFactoryProvider.java b/container-core/src/main/java/com/yahoo/container/xml/providers/XPathFactoryProvider.java
index 23ef9995caf..429cf09b5ab 100644
--- a/container-core/src/main/java/com/yahoo/container/xml/providers/XPathFactoryProvider.java
+++ b/container-core/src/main/java/com/yahoo/container/xml/providers/XPathFactoryProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.xml.providers;
import com.yahoo.container.di.componentgraph.Provider;
diff --git a/container-core/src/main/java/com/yahoo/container/xml/providers/package-info.java b/container-core/src/main/java/com/yahoo/container/xml/providers/package-info.java
index b71cfac88c0..d29f104910f 100644
--- a/container-core/src/main/java/com/yahoo/container/xml/providers/package-info.java
+++ b/container-core/src/main/java/com/yahoo/container/xml/providers/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.container.xml.providers;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/CertificateStore.java b/container-core/src/main/java/com/yahoo/jdisc/http/CertificateStore.java
index 3a63726b951..5739adb9511 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/CertificateStore.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/CertificateStore.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http;
/**
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/Cookie.java b/container-core/src/main/java/com/yahoo/jdisc/http/Cookie.java
index d882cf7a34a..c3f787882ec 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/Cookie.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/Cookie.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http;
import org.eclipse.jetty.http.HttpCookie;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/CookieHelper.java b/container-core/src/main/java/com/yahoo/jdisc/http/CookieHelper.java
index 897c18d1129..0ba5eb7a913 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/CookieHelper.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/CookieHelper.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http;
import com.yahoo.jdisc.HeaderFields;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/HttpHeaders.java b/container-core/src/main/java/com/yahoo/jdisc/http/HttpHeaders.java
index 039966133e8..5ebb6418153 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/HttpHeaders.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/HttpHeaders.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http;
/**
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/HttpRequest.java b/container-core/src/main/java/com/yahoo/jdisc/http/HttpRequest.java
index 0b5e9ddde58..bfd412700ea 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/HttpRequest.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/HttpRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http;
import com.yahoo.jdisc.HeaderFields;
@@ -52,7 +52,7 @@ public class HttpRequest extends Request implements ServletOrJdiscHttpRequest {
private final String str;
- private Version(String str) {
+ Version(String str) {
this.str = str;
}
@@ -96,7 +96,7 @@ public class HttpRequest extends Request implements ServletOrJdiscHttpRequest {
} else {
this.connectedAt = creationTime(TimeUnit.MILLISECONDS);
}
- } catch (RuntimeException e) {
+ } catch (Throwable e) {
release();
throw e;
}
@@ -110,7 +110,7 @@ public class HttpRequest extends Request implements ServletOrJdiscHttpRequest {
this.remoteAddress = null;
this.parameters.putAll(getUriQueryParameters(uri));
this.connectedAt = creationTime(TimeUnit.MILLISECONDS);
- } catch (RuntimeException e) {
+ } catch (Throwable e) {
release();
throw e;
}
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/HttpResponse.java b/container-core/src/main/java/com/yahoo/jdisc/http/HttpResponse.java
index 2e2553e421a..e9ff60ade20 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/HttpResponse.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/HttpResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http;
import com.yahoo.jdisc.HeaderFields;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/SecretStore.java b/container-core/src/main/java/com/yahoo/jdisc/http/SecretStore.java
index 4f739c5bd78..30e3e770a00 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/SecretStore.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/SecretStore.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http;
/**
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/cloud/package-info.java b/container-core/src/main/java/com/yahoo/jdisc/http/cloud/package-info.java
index 43da1a82077..9eb1ddd3ceb 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/cloud/package-info.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/cloud/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.jdisc.http.cloud;
import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/DiscFilterRequest.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/DiscFilterRequest.java
index 72068bd2dd5..a0933484f4f 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/DiscFilterRequest.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/DiscFilterRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.yahoo.container.jdisc.RequestView;
@@ -65,6 +65,7 @@ public abstract class DiscFilterRequest {
return parent.getUri();
}
+ @Deprecated
public abstract void setUri(URI uri);
public HttpRequest getParentRequest() {
@@ -313,6 +314,7 @@ public abstract class DiscFilterRequest {
return getUri().getScheme();
}
+ @Deprecated
public void setScheme(String scheme, boolean isSecure) {
String uri = getUri().toString();
String arr [] = uri.split("://");
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/DiscFilterResponse.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/DiscFilterResponse.java
index 4e8b779c516..fad0f46402d 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/DiscFilterResponse.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/DiscFilterResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import java.io.IOException;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/FilterConfig.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/FilterConfig.java
index af9e2b5e99a..b65a3d94802 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/FilterConfig.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/FilterConfig.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import java.util.Collection;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/JDiscCookieWrapper.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/JDiscCookieWrapper.java
index 2b9c650d545..f86a9b81155 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/JDiscCookieWrapper.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/JDiscCookieWrapper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.yahoo.jdisc.http.Cookie;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/JdiscFilterRequest.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/JdiscFilterRequest.java
index f8d9e6b2642..eaa02680d48 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/JdiscFilterRequest.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/JdiscFilterRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.yahoo.jdisc.http.HttpHeaders;
@@ -33,6 +33,7 @@ public class JdiscFilterRequest extends DiscFilterRequest {
return parent;
}
+ @Deprecated
public void setUri(URI uri) {
parent.setUri(uri);
}
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/JdiscFilterResponse.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/JdiscFilterResponse.java
index d723e2d4e5c..ee2e1be3ebf 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/JdiscFilterResponse.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/JdiscFilterResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.yahoo.jdisc.HeaderFields;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/RequestFilter.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/RequestFilter.java
index 977e3ab5d1d..e9de91a0110 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/RequestFilter.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/RequestFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.yahoo.jdisc.handler.ResponseHandler;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/RequestFilterBase.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/RequestFilterBase.java
index 4eb7091f378..4c957f70662 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/RequestFilterBase.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/RequestFilterBase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
/**
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/RequestView.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/RequestView.java
index e5e7ae1ef56..b2170f3997d 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/RequestView.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/RequestView.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.yahoo.jdisc.http.HttpRequest.Method;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/ResponseFilter.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/ResponseFilter.java
index 44fe7d9fcf1..a8e029971c5 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/ResponseFilter.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/ResponseFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.yahoo.jdisc.Request;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/ResponseFilterBase.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/ResponseFilterBase.java
index b869c882351..283396bd3c3 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/ResponseFilterBase.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/ResponseFilterBase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
/**
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityFilterInvoker.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityFilterInvoker.java
index cbed273b7ee..a0b9ec935cb 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityFilterInvoker.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityFilterInvoker.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.google.common.annotations.Beta;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityRequestFilter.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityRequestFilter.java
index e6f4add49de..8b41456a8de 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityRequestFilter.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityRequestFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.yahoo.jdisc.handler.ResponseHandler;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityRequestFilterChain.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityRequestFilterChain.java
index 2d97bbdc494..0c81d919f0e 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityRequestFilterChain.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityRequestFilterChain.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.yahoo.jdisc.AbstractResource;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityResponseFilter.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityResponseFilter.java
index aa4f7d29b89..fad33bf43b2 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityResponseFilter.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityResponseFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
public interface SecurityResponseFilter extends ResponseFilterBase {
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityResponseFilterChain.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityResponseFilterChain.java
index ad0fb75ebff..91a1da329e5 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityResponseFilterChain.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityResponseFilterChain.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.yahoo.jdisc.AbstractResource;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/ServletFilterRequest.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/ServletFilterRequest.java
index f06f9e256ff..c27c0e56d30 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/ServletFilterRequest.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/ServletFilterRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.yahoo.jdisc.http.HttpHeaders;
@@ -32,6 +32,7 @@ class ServletFilterRequest extends DiscFilterRequest {
return parent;
}
+ @Deprecated
public void setUri(URI uri) {
parent.setUri(uri);
}
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/ServletFilterResponse.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/ServletFilterResponse.java
index b603e7776f1..b706e5a7ec6 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/ServletFilterResponse.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/ServletFilterResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.google.common.collect.Iterables;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/EmptyRequestFilter.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/EmptyRequestFilter.java
index e1834fd8b7d..38134f3ad85 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/EmptyRequestFilter.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/EmptyRequestFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.chain;
import com.yahoo.jdisc.NoopSharedResource;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/EmptyResponseFilter.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/EmptyResponseFilter.java
index 5ce3f6a496f..654cb14f644 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/EmptyResponseFilter.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/EmptyResponseFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.chain;
import com.yahoo.jdisc.NoopSharedResource;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/RequestFilterChain.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/RequestFilterChain.java
index 85f71777cf3..1cf3774fcdc 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/RequestFilterChain.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/RequestFilterChain.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.chain;
import com.yahoo.jdisc.AbstractResource;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/ResponseFilterChain.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/ResponseFilterChain.java
index 5c5eda1f139..4e2624b27cd 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/ResponseFilterChain.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/ResponseFilterChain.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.chain;
import com.yahoo.jdisc.AbstractResource;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/ResponseHandlerGuard.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/ResponseHandlerGuard.java
index 02600683e27..b8ade4c30bd 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/ResponseHandlerGuard.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/ResponseHandlerGuard.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.chain;
import com.yahoo.jdisc.Response;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/package-info.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/package-info.java
index 540a1be7b73..0859d8ae8c4 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/package-info.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/chain/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.jdisc.http.filter.chain;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/package-info.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/package-info.java
index e97d447adbb..7b5dcdc6dc1 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/package-info.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@PublicApi
@ExportPackage
package com.yahoo.jdisc.http.filter;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/util/FilterUtils.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/util/FilterUtils.java
new file mode 100644
index 00000000000..3f627667da3
--- /dev/null
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/util/FilterUtils.java
@@ -0,0 +1,72 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.jdisc.http.filter.util;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.fasterxml.jackson.databind.node.TextNode;
+import com.yahoo.jdisc.Response;
+import com.yahoo.jdisc.handler.ContentChannel;
+import com.yahoo.jdisc.handler.ResponseHandler;
+import com.yahoo.jdisc.http.Cookie;
+import com.yahoo.jdisc.http.filter.DiscFilterRequest;
+
+import java.io.UncheckedIOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.nio.ByteBuffer;
+import java.util.List;
+
+/**
+ * Helper methods for auth0/okta request filters.
+ *
+ * @author valerijf
+ */
+public class FilterUtils {
+
+ private static final ObjectMapper mapper = new ObjectMapper();
+
+ public static boolean isDifferentOrigin(DiscFilterRequest request) {
+ try {
+ String origin = request.getHeader("Origin");
+ if (origin != null && !URI.create(origin).getHost().equals(request.getServerName()))
+ return true;
+ } catch (RuntimeException ignored) { }
+ return false;
+ }
+
+ public static void sendRedirectResponse(ResponseHandler handler, List<Cookie> cookies, String location) {
+ Response response = createResponse(Response.Status.FOUND, cookies);
+ response.headers().add("Location", location);
+ handler.handleResponse(response).close(null);
+ }
+
+ public static void sendMessageResponse(ResponseHandler handler, List<Cookie> cookies, int code, String message) {
+ Response response = createResponse(code, cookies);
+ ContentChannel contentChannel = handler.handleResponse(response);
+ try {
+ ObjectNode jsonNode = mapper.createObjectNode();
+ jsonNode.set("message", TextNode.valueOf(message));
+ byte[] jsonBytes = mapper.writerWithDefaultPrettyPrinter().writeValueAsBytes(jsonNode);
+ contentChannel.write(ByteBuffer.wrap(jsonBytes), null);
+ } catch (JsonProcessingException e) {
+ throw new UncheckedIOException(e);
+ }
+ contentChannel.close(null);
+ }
+
+ private static Response createResponse(int code, List<Cookie> cookies) {
+ Response response = new Response(code);
+ List<String> setCookieHeaders = Cookie.toSetCookieHeaders(cookies);
+ response.headers().add("Set-Cookie", setCookieHeaders);
+ return response;
+ }
+
+ public static URI createUriFromRequest(DiscFilterRequest request, String path) {
+ try {
+ return new URI(request.getScheme(), null, request.getServerName(), request.getUri().getPort(), path, null, null);
+ } catch (URISyntaxException e) {
+ throw new RuntimeException(e);
+ }
+ }
+}
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/util/package-info.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/util/package-info.java
new file mode 100644
index 00000000000..5da5c082b8a
--- /dev/null
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/util/package-info.java
@@ -0,0 +1,5 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+@ExportPackage
+package com.yahoo.jdisc.http.filter.util;
+
+import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/package-info.java b/container-core/src/main/java/com/yahoo/jdisc/http/package-info.java
index b8bd76483cf..5abfc6c94d9 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/package-info.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@PublicApi
@ExportPackage
package com.yahoo.jdisc.http;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLog.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLog.java
index 08b89094486..46738c1501b 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLog.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLog.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.google.common.base.Objects;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLoggingRequestHandler.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLoggingRequestHandler.java
index 5b628d73ab8..f79bfd9c577 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLoggingRequestHandler.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLoggingRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.google.common.base.Preconditions;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AsyncCompleteListener.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AsyncCompleteListener.java
deleted file mode 100644
index 7dba217e01c..00000000000
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AsyncCompleteListener.java
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.jdisc.http.server.jetty;
-
-import javax.servlet.AsyncEvent;
-import javax.servlet.AsyncListener;
-import java.io.IOException;
-
-/**
- * Interface for async listeners only interested in onComplete.
- * @author Tony Vaagenes
- */
-@FunctionalInterface
-interface AsyncCompleteListener extends AsyncListener {
- @Override
- default void onTimeout(AsyncEvent event) throws IOException {}
-
- @Override
- default void onError(AsyncEvent event) throws IOException {}
-
- @Override
- default void onStartAsync(AsyncEvent event) throws IOException {}
-}
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/CompletionHandlerUtils.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/CompletionHandlerUtils.java
index f436d5490d7..06f29f31583 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/CompletionHandlerUtils.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/CompletionHandlerUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.handler.CompletionHandler;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/CompletionHandlers.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/CompletionHandlers.java
index 975d88f5c34..1063c70fe0f 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/CompletionHandlers.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/CompletionHandlers.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.handler.CompletionHandler;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectionMetricAggregator.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectionMetricAggregator.java
index a92cbf264a4..a215d6b4e17 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectionMetricAggregator.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectionMetricAggregator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.Metric;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectionThrottler.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectionThrottler.java
index b9001d187a9..61bc767c330 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectionThrottler.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectionThrottler.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.http.ConnectorConfig;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactory.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactory.java
index 92d2cc5d1cd..65121eb978a 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactory.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.google.inject.Inject;
@@ -8,7 +8,8 @@ import com.yahoo.jdisc.http.ssl.SslContextFactoryProvider;
import com.yahoo.security.tls.MixedMode;
import com.yahoo.security.tls.TransportSecurityUtils;
import org.eclipse.jetty.alpn.server.ALPNServerConnectionFactory;
-import org.eclipse.jetty.http2.parser.RateControl;
+import org.eclipse.jetty.http2.server.AbstractHTTP2ServerConnectionFactory;
+import org.eclipse.jetty.http2.server.HTTP2CServerConnectionFactory;
import org.eclipse.jetty.http2.server.HTTP2ServerConnectionFactory;
import org.eclipse.jetty.server.ConnectionFactory;
import org.eclipse.jetty.server.DetectorConnectionFactory;
@@ -21,7 +22,13 @@ import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.server.SslConnectionFactory;
import org.eclipse.jetty.util.ssl.SslContextFactory;
+import java.util.ArrayList;
import java.util.List;
+import java.util.logging.Logger;
+
+import static com.yahoo.security.tls.MixedMode.DISABLED;
+import static com.yahoo.security.tls.MixedMode.PLAINTEXT_CLIENT_MIXED_SERVER;
+import static com.yahoo.security.tls.MixedMode.TLS_CLIENT_MIXED_SERVER;
/**
* @author Einar M R Rosenvinge
@@ -29,6 +36,8 @@ import java.util.List;
*/
public class ConnectorFactory {
+ private static final Logger log = Logger.getLogger(ConnectorFactory.class.getName());
+
private final ConnectorConfig connectorConfig;
private final SslContextFactoryProvider sslContextFactoryProvider;
@@ -50,7 +59,7 @@ public class ConnectorFactory {
private static void validateProxyProtocolConfiguration(ConnectorConfig config) {
ConnectorConfig.ProxyProtocol proxyProtocolConfig = config.proxyProtocol();
if (proxyProtocolConfig.enabled()) {
- boolean tlsMixedModeEnabled = TransportSecurityUtils.getInsecureMixedMode() != MixedMode.DISABLED;
+ boolean tlsMixedModeEnabled = TransportSecurityUtils.getInsecureMixedMode() != DISABLED;
if (!isSslEffectivelyEnabled(config) || tlsMixedModeEnabled) {
throw new IllegalArgumentException("Proxy protocol can only be enabled if connector is effectively HTTPS only");
}
@@ -81,61 +90,51 @@ public class ConnectorFactory {
}
private List<ConnectionFactory> createConnectionFactories(Metric metric) {
- if (!isSslEffectivelyEnabled(connectorConfig)) {
- return List.of(newHttp1ConnectionFactory());
- } else if (connectorConfig.ssl().enabled()) {
+ boolean vespaTlsEnabled = TransportSecurityUtils.isTransportSecurityEnabled() && connectorConfig.implicitTlsEnabled();
+ MixedMode tlsMixedMode = TransportSecurityUtils.getInsecureMixedMode();
+ if (connectorConfig.ssl().enabled() || (vespaTlsEnabled && tlsMixedMode == DISABLED)) {
return connectionFactoriesForHttps(metric);
- } else if (TransportSecurityUtils.isTransportSecurityEnabled()) {
- switch (TransportSecurityUtils.getInsecureMixedMode()) {
- case TLS_CLIENT_MIXED_SERVER:
- case PLAINTEXT_CLIENT_MIXED_SERVER:
- return connectionFactoriesForHttpsMixedMode(metric);
- case DISABLED:
- return connectionFactoriesForHttps(metric);
- default:
- throw new IllegalStateException();
+ } else if (vespaTlsEnabled) {
+ if (tlsMixedMode != TLS_CLIENT_MIXED_SERVER && tlsMixedMode != PLAINTEXT_CLIENT_MIXED_SERVER) {
+ throw new IllegalArgumentException("Unknown mixed mode " + tlsMixedMode);
}
+ return connectionFactoriesForTlsMixedMode(metric);
} else {
- return List.of(newHttp1ConnectionFactory());
+ return connectorConfig.http2Enabled()
+ ? List.of(newHttp1ConnectionFactory(), newHttp2ClearTextConnectionFactory())
+ : List.of(newHttp1ConnectionFactory());
}
}
private List<ConnectionFactory> connectionFactoriesForHttps(Metric metric) {
+ List<ConnectionFactory> factories = new ArrayList<>();
ConnectorConfig.ProxyProtocol proxyProtocolConfig = connectorConfig.proxyProtocol();
HttpConnectionFactory http1Factory = newHttp1ConnectionFactory();
+ ALPNServerConnectionFactory alpnFactory;
+ SslConnectionFactory sslFactory;
if (connectorConfig.http2Enabled()) {
- HTTP2ServerConnectionFactory http2Factory = newHttp2ConnectionFactory();
- ALPNServerConnectionFactory alpnFactory = newAlpnConnectionFactory();
- SslConnectionFactory sslFactory = newSslConnectionFactory(metric, alpnFactory);
- if (proxyProtocolConfig.enabled()) {
- ProxyConnectionFactory proxyProtocolFactory = newProxyProtocolConnectionFactory(sslFactory);
- if (proxyProtocolConfig.mixedMode()) {
- DetectorConnectionFactory detectorFactory = newDetectorConnectionFactory(sslFactory);
- return List.of(detectorFactory, proxyProtocolFactory, sslFactory, alpnFactory, http1Factory, http2Factory);
- } else {
- return List.of(proxyProtocolFactory, sslFactory, alpnFactory, http1Factory, http2Factory);
- }
- } else {
- return List.of(sslFactory, alpnFactory, http1Factory, http2Factory);
- }
+ alpnFactory = newAlpnConnectionFactory();
+ sslFactory = newSslConnectionFactory(metric, alpnFactory);
} else {
- SslConnectionFactory sslFactory = newSslConnectionFactory(metric, http1Factory);
- if (proxyProtocolConfig.enabled()) {
- ProxyConnectionFactory proxyProtocolFactory = newProxyProtocolConnectionFactory(sslFactory);
- if (proxyProtocolConfig.mixedMode()) {
- DetectorConnectionFactory detectorFactory = newDetectorConnectionFactory(sslFactory);
- return List.of(detectorFactory, proxyProtocolFactory, sslFactory, http1Factory);
- } else {
- return List.of(proxyProtocolFactory, sslFactory, http1Factory);
- }
- } else {
- return List.of(sslFactory, http1Factory);
+ alpnFactory = null;
+ sslFactory = newSslConnectionFactory(metric, http1Factory);
+ }
+ if (proxyProtocolConfig.enabled()) {
+ if (proxyProtocolConfig.mixedMode()) {
+ factories.add(newDetectorConnectionFactory(sslFactory));
}
+ factories.add(newProxyProtocolConnectionFactory(sslFactory));
}
+ factories.add(sslFactory);
+ if (connectorConfig.http2Enabled()) factories.add(alpnFactory);
+ factories.add(http1Factory);
+ if (connectorConfig.http2Enabled()) factories.add(newHttp2ConnectionFactory());
+ return List.copyOf(factories);
}
- private List<ConnectionFactory> connectionFactoriesForHttpsMixedMode(Metric metric) {
- // No support for proxy-protocol/http2 when using HTTP with TLS mixed mode
+ private List<ConnectionFactory> connectionFactoriesForTlsMixedMode(Metric metric) {
+ log.warning(String.format("TLS mixed mode enabled for port %d - HTTP/2 and proxy-protocol are not supported",
+ connectorConfig.listenPort()));
HttpConnectionFactory httpFactory = newHttp1ConnectionFactory();
SslConnectionFactory sslFactory = newSslConnectionFactory(metric, httpFactory);
DetectorConnectionFactory detectorFactory = newDetectorConnectionFactory(sslFactory);
@@ -163,11 +162,21 @@ public class ConnectorFactory {
private HTTP2ServerConnectionFactory newHttp2ConnectionFactory() {
HTTP2ServerConnectionFactory factory = new HTTP2ServerConnectionFactory(newHttpConfiguration());
+ setHttp2Config(factory);
+ return factory;
+ }
+
+ private HTTP2CServerConnectionFactory newHttp2ClearTextConnectionFactory() {
+ HTTP2CServerConnectionFactory factory = new HTTP2CServerConnectionFactory(newHttpConfiguration());
+ setHttp2Config(factory);
+ return factory;
+ }
+
+ private void setHttp2Config(AbstractHTTP2ServerConnectionFactory factory) {
factory.setStreamIdleTimeout(toMillis(connectorConfig.http2().streamIdleTimeout()));
factory.setMaxConcurrentStreams(connectorConfig.http2().maxConcurrentStreams());
factory.setInitialSessionRecvWindow(1 << 24);
factory.setInitialStreamRecvWindow(1 << 20);
- return factory;
}
private SslConnectionFactory newSslConnectionFactory(Metric metric, ConnectionFactory wrappedFactory) {
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ErrorResponseContentCreator.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ErrorResponseContentCreator.java
index cd21dccde0e..53c9fbbdb50 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ErrorResponseContentCreator.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ErrorResponseContentCreator.java
@@ -1,11 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import org.eclipse.jetty.util.ByteArrayISO8859Writer;
import org.eclipse.jetty.util.StringUtil;
import java.io.IOException;
-import java.util.Optional;
/**
* Creates HTML body having the status code, error message and request uri.
@@ -14,12 +13,12 @@ import java.util.Optional;
*
* @author bjorncs
*/
-public class ErrorResponseContentCreator {
+class ErrorResponseContentCreator {
private final ByteArrayISO8859Writer writer = new ByteArrayISO8859Writer(2048);
- public byte[] createErrorContent(String requestUri, int statusCode, Optional<String> message) {
- String sanitizedString = message.map(StringUtil::sanitizeXmlString).orElse("");
+ byte[] createErrorContent(String requestUri, int statusCode, String message) {
+ String sanitizedString = message != null ? StringUtil.sanitizeXmlString(message) : "";
String statusCodeString = Integer.toString(statusCode);
writer.resetWriter();
try {
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ExceptionWrapper.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ExceptionWrapper.java
index ebc10482600..3ba159e5ef6 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ExceptionWrapper.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ExceptionWrapper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
/**
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterBindings.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterBindings.java
index 310f3c9a646..e4e8188dc41 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterBindings.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterBindings.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.application.BindingRepository;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterInvoker.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterInvoker.java
index 0827ccdc39e..3c329bbf13b 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterInvoker.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterInvoker.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.google.inject.ImplementedBy;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterInvokingPrintWriter.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterInvokingPrintWriter.java
index 3ebc7bbc551..90b12e64a55 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterInvokingPrintWriter.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterInvokingPrintWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import java.io.IOException;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterInvokingServletOutputStream.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterInvokingServletOutputStream.java
index a605ccebfa7..d2be107ef86 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterInvokingServletOutputStream.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterInvokingServletOutputStream.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import javax.servlet.ServletOutputStream;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterResolver.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterResolver.java
index a9639ba4da7..873f336f0c9 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterResolver.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilterResolver.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.Metric;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilteringRequestHandler.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilteringRequestHandler.java
index 43acbb9b096..df606894b14 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilteringRequestHandler.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilteringRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.google.common.base.Preconditions;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FormPostRequestHandler.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FormPostRequestHandler.java
index 57fb32f89f0..84d343c0c8e 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FormPostRequestHandler.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FormPostRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.google.common.base.Preconditions;
@@ -72,7 +72,7 @@ class FormPostRequestHandler extends AbstractRequestHandler implements ContentCh
this.contentCharset = getCharsetByName(contentCharsetName);
this.responseHandler = responseHandler;
this.request = (HttpRequest) request;
- this.requestReference = request.refer();
+ this.requestReference = request.refer(this);
return this;
}
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestDispatch.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestDispatch.java
index ba292062197..01689453314 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestDispatch.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestDispatch.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.container.logging.AccessLogEntry;
@@ -13,11 +13,17 @@ import com.yahoo.jdisc.handler.RequestHandler;
import com.yahoo.jdisc.http.ConnectorConfig;
import com.yahoo.jdisc.http.HttpHeaders;
import com.yahoo.jdisc.http.HttpRequest;
+import org.eclipse.jetty.http2.ErrorCode;
+import org.eclipse.jetty.http2.server.HTTP2ServerConnection;
+import org.eclipse.jetty.io.Connection;
import org.eclipse.jetty.io.EofException;
+import org.eclipse.jetty.server.HttpConnection;
import org.eclipse.jetty.server.Request;
+import org.eclipse.jetty.util.Callback;
import javax.servlet.AsyncContext;
-import javax.servlet.ServletInputStream;
+import javax.servlet.AsyncEvent;
+import javax.servlet.AsyncListener;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@@ -27,15 +33,11 @@ import java.util.Arrays;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionException;
import java.util.concurrent.TimeoutException;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.function.BiConsumer;
-import java.util.function.Consumer;
import java.util.logging.Level;
import java.util.logging.Logger;
import static com.yahoo.jdisc.http.HttpHeaders.Values.APPLICATION_X_WWW_FORM_URLENCODED;
import static com.yahoo.jdisc.http.server.jetty.RequestUtils.getConnector;
-import static com.yahoo.jdisc.http.server.jetty.RequestUtils.getHttp1Connection;
import static com.yahoo.yolean.Exceptions.throwUnchecked;
/**
@@ -49,14 +51,13 @@ class HttpRequestDispatch {
private final static String CHARSET_ANNOTATION = ";charset=";
private final JDiscContext jDiscContext;
- private final AsyncContext async;
private final Request jettyRequest;
private final ServletResponseController servletResponseController;
private final RequestHandler requestHandler;
private final RequestMetricReporter metricReporter;
- public HttpRequestDispatch(JDiscContext jDiscContext,
+ HttpRequestDispatch(JDiscContext jDiscContext,
AccessLogEntry accessLogEntry,
Context metricContext,
HttpServletRequest servletRequest,
@@ -72,95 +73,128 @@ class HttpRequestDispatch {
jDiscContext.janitor,
metricReporter,
jDiscContext.developerMode());
- markHttp1ConnectionAsNonPersistentIfThresholdReached(jettyRequest);
- this.async = servletRequest.startAsync();
- async.setTimeout(0);
+ shutdownConnectionGracefullyIfThresholdReached(jettyRequest);
metricReporter.uriLength(jettyRequest.getOriginalURI().length());
}
- public void dispatch() throws IOException {
+ void dispatchRequest() {
+ CompletableFuture<Void> requestCompletion = startServletAsyncExecution();
ServletRequestReader servletRequestReader;
try {
servletRequestReader = handleRequest();
- } catch (Throwable throwable) {
- servletResponseController.trySendError(throwable);
- servletResponseController.finishedFuture().whenComplete((result, exception) ->
- completeRequestCallback.accept(null, throwable));
+ } catch (Throwable t) {
+ servletResponseController.finishedFuture()
+ .whenComplete((__, ___) -> requestCompletion.completeExceptionally(t));
+ servletResponseController.fail(t);
return;
}
+ servletRequestReader.finishedFuture().whenComplete((__, t) -> {
+ if (t != null) servletResponseController.fail(t);
+ });
+ servletResponseController.finishedFuture().whenComplete((__, t) -> {
+ if (t != null) servletRequestReader.fail(t);
+ });
+ CompletableFuture.allOf(servletRequestReader.finishedFuture(), servletResponseController.finishedFuture())
+ .whenComplete((r, t) -> {
+ if (t != null) requestCompletion.completeExceptionally(t);
+ else requestCompletion.complete(null);
+ });
+ }
+
+ ContentChannel dispatchFilterRequest(Response response) {
try {
- onError(servletRequestReader.finishedFuture, servletResponseController::trySendError);
- onError(servletResponseController.finishedFuture(), servletRequestReader::onError);
- CompletableFuture.allOf(servletRequestReader.finishedFuture, servletResponseController.finishedFuture())
- .whenComplete(completeRequestCallback);
- } catch (Throwable throwable) {
- log.log(Level.WARNING, "Failed registering finished listeners.", throwable);
+
+ CompletableFuture<Void> requestCompletion = startServletAsyncExecution();
+ jettyRequest.getInputStream().close();
+ ContentChannel responseContentChannel = servletResponseController.responseHandler().handleResponse(response);
+ servletResponseController.finishedFuture()
+ .whenComplete((r, t) -> {
+ if (t != null) requestCompletion.completeExceptionally(t);
+ else requestCompletion.complete(null);
+ });
+ return responseContentChannel;
+ } catch (IOException e) {
+ throw throwUnchecked(e);
}
}
- private final BiConsumer<Void, Throwable> completeRequestCallback;
- {
- AtomicBoolean completeRequestCalled = new AtomicBoolean(false);
- HttpRequestDispatch parent = this; //used to avoid binding uninitialized variables
-
- completeRequestCallback = (result, error) -> {
- boolean alreadyCalled = completeRequestCalled.getAndSet(true);
- if (alreadyCalled) {
- AssertionError e = new AssertionError("completeRequest called more than once");
- log.log(Level.WARNING, "Assertion failed.", e);
- throw e;
+ private CompletableFuture<Void> startServletAsyncExecution() {
+ CompletableFuture<Void> requestCompletion = new CompletableFuture<>();
+ AsyncContext asyncCtx = jettyRequest.startAsync();
+ asyncCtx.setTimeout(0);
+ asyncCtx.addListener(new AsyncListener() {
+ @Override public void onStartAsync(AsyncEvent event) {}
+ @Override public void onComplete(AsyncEvent event) { requestCompletion.complete(null); }
+ @Override public void onTimeout(AsyncEvent event) {
+ requestCompletion.completeExceptionally(new TimeoutException("Timeout from AsyncContext"));
}
-
- boolean reportedError = false;
-
- if (error != null) {
- if (isErrorOfType(error, EofException.class, IOException.class)) {
- log.log(Level.FINE,
- error,
- () -> "Network connection was unexpectedly terminated: " + parent.jettyRequest.getRequestURI());
- parent.metricReporter.prematurelyClosed();
- } else if (isErrorOfType(error, TimeoutException.class)) {
- log.log(Level.FINE,
- error,
- () -> "Request/stream was timed out by Jetty: " + parent.jettyRequest.getRequestURI());
- } else if (!isErrorOfType(error, OverloadException.class, BindingNotFoundException.class, RequestException.class)) {
- log.log(Level.WARNING, "Request failed: " + parent.jettyRequest.getRequestURI(), error);
- }
- reportedError = true;
- parent.metricReporter.failedResponse();
- } else {
- parent.metricReporter.successfulResponse();
+ @Override public void onError(AsyncEvent event) {
+ requestCompletion.completeExceptionally(event.getThrowable());
}
+ });
+ requestCompletion.whenComplete((__, t) -> onRequestFinished(asyncCtx, t));
+ return requestCompletion;
+ }
- try {
- parent.async.complete();
- log.finest(() -> "Request completed successfully: " + parent.jettyRequest.getRequestURI());
- } catch (Throwable throwable) {
- Level level = reportedError ? Level.FINE: Level.WARNING;
- log.log(level, "Async.complete failed", throwable);
+ private void onRequestFinished(AsyncContext asyncCtx, Throwable error) {
+ boolean reportedError = false;
+ if (error != null) {
+ if (isErrorOfType(error, EofException.class, IOException.class)) {
+ log.log(Level.FINE,
+ error,
+ () -> "Network connection was unexpectedly terminated: " + jettyRequest.getRequestURI());
+ metricReporter.prematurelyClosed();
+ } else if (isErrorOfType(error, TimeoutException.class)) {
+ log.log(Level.FINE,
+ error,
+ () -> "Request/stream was timed out by Jetty: " + jettyRequest.getRequestURI());
+ } else if (!isErrorOfType(error, OverloadException.class, BindingNotFoundException.class, RequestException.class)) {
+ log.log(Level.WARNING, "Request failed: " + jettyRequest.getRequestURI(), error);
}
- };
+ reportedError = true;
+ metricReporter.failedResponse();
+ } else {
+ metricReporter.successfulResponse();
+ }
+
+ try {
+ asyncCtx.complete();
+ log.finest(() -> "Request completed successfully: " + jettyRequest.getRequestURI());
+ } catch (Throwable throwable) {
+ Level level = reportedError ? Level.FINE: Level.WARNING;
+ log.log(level, "Async.complete failed", throwable);
+ }
}
- private static void markHttp1ConnectionAsNonPersistentIfThresholdReached(Request request) {
+ private static void shutdownConnectionGracefullyIfThresholdReached(Request request) {
ConnectorConfig connectorConfig = getConnector(request).connectorConfig();
int maxRequestsPerConnection = connectorConfig.maxRequestsPerConnection();
+ Connection connection = RequestUtils.getConnection(request);
if (maxRequestsPerConnection > 0) {
- getHttp1Connection(request).ifPresent(connection -> {
- if (connection.getMessagesIn() >= maxRequestsPerConnection) {
- connection.getGenerator().setPersistent(false);
- }
- });
+ if (connection.getMessagesIn() >= maxRequestsPerConnection) {
+ gracefulShutdown(connection, "max-req-per-conn-exceeded");
+ }
}
double maxConnectionLifeInSeconds = connectorConfig.maxConnectionLife();
if (maxConnectionLifeInSeconds > 0) {
- getHttp1Connection(request).ifPresent(connection -> {
- Instant expireAt = Instant.ofEpochMilli((long) (connection.getCreatedTimeStamp() + maxConnectionLifeInSeconds * 1000));
- if (Instant.now().isAfter(expireAt)) {
- connection.getGenerator().setPersistent(false);
- }
- });
+ long createdAt = connection.getCreatedTimeStamp();
+ Instant expiredAt = Instant.ofEpochMilli((long) (createdAt + maxConnectionLifeInSeconds * 1000));
+ boolean isExpired = Instant.now().isAfter(expiredAt);
+ if (isExpired) {
+ gracefulShutdown(connection, "max-conn-life-exceeded");
+ }
+ }
+ }
+
+ private static void gracefulShutdown(Connection connection, String reason) {
+ if (connection instanceof HttpConnection) {
+ HttpConnection http1 = (HttpConnection) connection;
+ http1.getGenerator().setPersistent(false);
+ } else if (connection instanceof HTTP2ServerConnection) {
+ HTTP2ServerConnection http2 = (HTTP2ServerConnection) connection;
+ // Signal Jetty to do a graceful connection shutdown with GOAWAY frame
+ http2.getSession().close(ErrorCode.NO_ERROR.code, reason, Callback.NOOP);
}
}
@@ -177,43 +211,17 @@ class HttpRequestDispatch {
private ServletRequestReader handleRequest() throws IOException {
HttpRequest jdiscRequest = HttpRequestFactory.newJDiscRequest(jDiscContext.container, jettyRequest);
ContentChannel requestContentChannel;
-
try (ResourceReference ref = References.fromResource(jdiscRequest)) {
HttpRequestFactory.copyHeaders(jettyRequest, jdiscRequest);
- requestContentChannel = requestHandler.handleRequest(jdiscRequest, servletResponseController.responseHandler);
- }
-
- ServletInputStream servletInputStream = jettyRequest.getInputStream();
-
- ServletRequestReader servletRequestReader = new ServletRequestReader(servletInputStream,
- requestContentChannel,
- jDiscContext.janitor,
- metricReporter);
-
- servletInputStream.setReadListener(servletRequestReader);
- return servletRequestReader;
- }
-
- private static void onError(CompletableFuture<?> future, Consumer<Throwable> errorHandler) {
- future.whenComplete((result, exception) -> {
- if (exception != null) {
- errorHandler.accept(exception);
- }
- });
- }
-
- ContentChannel handleRequestFilterResponse(Response response) {
- try {
- jettyRequest.getInputStream().close();
- ContentChannel responseContentChannel = servletResponseController.responseHandler.handleResponse(response);
- servletResponseController.finishedFuture().whenComplete(completeRequestCallback);
- return responseContentChannel;
- } catch (IOException e) {
- throw throwUnchecked(e);
+ requestContentChannel = requestHandler.handleRequest(jdiscRequest, servletResponseController.responseHandler());
}
+ //TODO If the below method throws servletRequestReader will not complete and
+ // requestContentChannel will not be closed and there is a reference leak
+ // Ditto for the servletInputStream
+ return new ServletRequestReader(
+ jettyRequest.getInputStream(), requestContentChannel, jDiscContext.janitor, metricReporter);
}
-
private static RequestHandler newRequestHandler(JDiscContext context,
AccessLogEntry accessLogEntry,
HttpServletRequest servletRequest) {
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestFactory.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestFactory.java
index 8b223c45827..64cfbc96b17 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestFactory.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.http.HttpRequest;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpResponseStatisticsCollector.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpResponseStatisticsCollector.java
index ac4e743784b..2a6a217dc33 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpResponseStatisticsCollector.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpResponseStatisticsCollector.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.http.HttpRequest;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscContext.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscContext.java
index 48c70095918..c80299b4737 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscContext.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscContext.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.Metric;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscFilterInvokerFilter.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscFilterInvokerFilter.java
index 2904d79ad41..0fd4e8c42fb 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscFilterInvokerFilter.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscFilterInvokerFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.container.logging.AccessLogEntry;
@@ -126,7 +126,7 @@ class JDiscFilterInvokerFilter implements Filter {
throw new RuntimeException("Can't return response from filter asynchronously");
HttpRequestDispatch requestDispatch = createRequestDispatch(httpRequest, httpResponse);
- return requestDispatch.handleRequestFilterResponse(jdiscResponse);
+ return requestDispatch.dispatchFilterRequest(jdiscResponse);
};
}
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscHttpServlet.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscHttpServlet.java
index 7e1445ffa4f..dbe2b2ad5d5 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscHttpServlet.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscHttpServlet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.container.logging.AccessLogEntry;
@@ -110,7 +110,7 @@ class JDiscHttpServlet extends HttpServlet {
try {
switch (request.getDispatcherType()) {
case REQUEST:
- new HttpRequestDispatch(context, accessLogEntry, getMetricContext(request), request, response).dispatch();
+ new HttpRequestDispatch(context, accessLogEntry, getMetricContext(request), request, response).dispatchRequest();
break;
default:
if (log.isLoggable(Level.INFO)) {
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscServerConnector.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscServerConnector.java
index ae475ca4517..0e511fd3eaf 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscServerConnector.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscServerConnector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.Metric;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/Janitor.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/Janitor.java
index cd2b9ca23c0..cd33bf78902 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/Janitor.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/Janitor.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.google.inject.Inject;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyConnectionLogger.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyConnectionLogger.java
index 88e68e7f2e6..451a7dbf10d 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyConnectionLogger.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyConnectionLogger.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.container.logging.ConnectionLog;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java
index 70f173b74e5..3f2a91c60b5 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.google.inject.Inject;
@@ -132,9 +132,13 @@ public class JettyHttpServer extends AbstractServerProvider {
}
private static void configureJettyThreadpool(Server server, ServerConfig config) {
+ int cpus = Runtime.getRuntime().availableProcessors();
QueuedThreadPool pool = (QueuedThreadPool) server.getThreadPool();
- pool.setMaxThreads(config.maxWorkerThreads());
- pool.setMinThreads(config.minWorkerThreads());
+ int maxThreads = config.maxWorkerThreads() > 0 ? config.maxWorkerThreads() : 16 + cpus;
+ pool.setMaxThreads(maxThreads);
+ int minThreads = config.minWorkerThreads() >= 0 ? config.minWorkerThreads() : 16 + cpus;
+ pool.setMinThreads(minThreads);
+ log.info(String.format("Threadpool size: min=%d, max=%d", minThreads, maxThreads));
}
private static JMXServiceURL createJmxLoopbackOnlyServiceUrl(int port) {
@@ -224,10 +228,9 @@ public class JettyHttpServer extends AbstractServerProvider {
var sslConnectionFactory = serverConnector.getConnectionFactory(SslConnectionFactory.class);
if (sslConnectionFactory != null) {
var sslContextFactory = sslConnectionFactory.getSslContextFactory();
- log.info(String.format("Enabled SSL cipher suites for port '%d': %s",
- localPort, Arrays.toString(sslContextFactory.getSelectedCipherSuites())));
- log.info(String.format("Enabled SSL protocols for port '%d': %s",
- localPort, Arrays.toString(sslContextFactory.getSelectedProtocols())));
+ String protocols = Arrays.toString(sslContextFactory.getSelectedProtocols());
+ String cipherSuites = Arrays.toString(sslContextFactory.getSelectedCipherSuites());
+ log.info(String.format("TLS for port '%d': %s with %s", localPort, protocols, cipherSuites));
}
}
}
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/MetricDefinitions.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/MetricDefinitions.java
index 172e6483de2..71c60ad6737 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/MetricDefinitions.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/MetricDefinitions.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
/**
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/OneTimeRunnable.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/OneTimeRunnable.java
index eb83d3d7d03..24cc41d009f 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/OneTimeRunnable.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/OneTimeRunnable.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import java.util.concurrent.atomic.AtomicBoolean;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ReferenceCountingRequestHandler.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ReferenceCountingRequestHandler.java
index 71cca62ce9c..91230504c1c 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ReferenceCountingRequestHandler.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ReferenceCountingRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.Request;
@@ -71,6 +71,11 @@ class ReferenceCountingRequestHandler implements DelegatedRequestHandler {
}
@Override
+ public ResourceReference refer(Object context) {
+ return delegate.refer(context);
+ }
+
+ @Override
public void release() {
delegate.release();
}
@@ -97,7 +102,7 @@ class ReferenceCountingRequestHandler implements DelegatedRequestHandler {
Objects.requireNonNull(delegate, "delegate");
this.request = request;
this.delegate = delegate;
- this.requestReference = request.refer();
+ this.requestReference = request.refer(this);
}
@Override
@@ -143,7 +148,7 @@ class ReferenceCountingRequestHandler implements DelegatedRequestHandler {
Objects.requireNonNull(delegate, "delegate");
this.request = request;
this.delegate = delegate;
- this.requestReference = request.refer();
+ this.requestReference = request.refer(this);
}
@Override
@@ -200,7 +205,7 @@ class ReferenceCountingRequestHandler implements DelegatedRequestHandler {
public ReferenceCountingCompletionHandler(SharedResource request, CompletionHandler delegate) {
this.delegate = delegate;
- this.requestReference = request.refer();
+ this.requestReference = request.refer(this);
}
@Override
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/RequestException.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/RequestException.java
index eea69cd7f74..0fdedfcf801 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/RequestException.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/RequestException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
/**
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/RequestMetricReporter.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/RequestMetricReporter.java
index 7596be0415a..b3450e9e77e 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/RequestMetricReporter.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/RequestMetricReporter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.Metric;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/RequestUtils.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/RequestUtils.java
index b248f55a3df..1bddd491496 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/RequestUtils.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/RequestUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import org.eclipse.jetty.http2.server.HTTP2ServerConnection;
@@ -7,7 +7,6 @@ import org.eclipse.jetty.server.HttpConnection;
import org.eclipse.jetty.server.Request;
import javax.servlet.http.HttpServletRequest;
-import java.util.Optional;
/**
* @author bjorncs
@@ -19,12 +18,6 @@ public class RequestUtils {
return request.getHttpChannel().getConnection();
}
- public static Optional<HttpConnection> getHttp1Connection(Request request) {
- Connection connection = getConnection(request);
- if (connection instanceof HttpConnection) return Optional.of((HttpConnection) connection);
- return Optional.empty();
- }
-
public static JDiscServerConnector getConnector(Request request) {
return (JDiscServerConnector) request.getHttpChannel().getConnector();
}
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/SecuredRedirectHandler.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/SecuredRedirectHandler.java
index dad274ae520..e5dddf285ef 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/SecuredRedirectHandler.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/SecuredRedirectHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.http.ConnectorConfig;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServerMetricReporter.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServerMetricReporter.java
index ea263350d0a..4ab0e388579 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServerMetricReporter.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServerMetricReporter.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.concurrent.DaemonThreadFactory;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletOutputStreamWriter.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletOutputStreamWriter.java
index 696fd2d51ad..ffd342f36cd 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletOutputStreamWriter.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletOutputStreamWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.handler.CompletionHandler;
@@ -10,7 +10,6 @@ import java.nio.ByteBuffer;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Deque;
-import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.function.Consumer;
import java.util.logging.Level;
@@ -22,7 +21,7 @@ import static com.yahoo.jdisc.http.server.jetty.CompletionHandlerUtils.NOOP_COMP
* @author Tony Vaagenes
* @author bjorncs
*/
-public class ServletOutputStreamWriter {
+class ServletOutputStreamWriter {
/** Rules:
* 1) Don't modify the output stream without isReady returning true (write/flush/close).
* Multiple modification calls without interleaving isReady calls are not allowed.
@@ -66,31 +65,16 @@ public class ServletOutputStreamWriter {
*
* The future might complete in the servlet framework thread, user thread or executor thread.
*/
- final CompletableFuture<Void> finishedFuture = new CompletableFuture<>();
+ private final CompletableFuture<Void> finishedFuture = new CompletableFuture<>();
- public ServletOutputStreamWriter(ServletOutputStream outputStream, Janitor janitor, RequestMetricReporter metricReporter) {
+ ServletOutputStreamWriter(ServletOutputStream outputStream, Janitor janitor, RequestMetricReporter metricReporter) {
this.outputStream = outputStream;
this.janitor = janitor;
this.metricReporter = metricReporter;
}
- public void sendErrorContentAndCloseAsync(ByteBuffer errorContent) {
- synchronized (monitor) {
- // Assert that no content has been written as it is too late to write error response if the response is committed.
- assertStateIs(state, State.NOT_STARTED);
- queueErrorContent_holdingLock(errorContent);
- state = State.WAITING_FOR_WRITE_POSSIBLE_CALLBACK;
- outputStream.setWriteListener(writeListener);
- }
- }
-
- private void queueErrorContent_holdingLock(ByteBuffer errorContent) {
- responseContentQueue.addLast(new ResponseContentPart(errorContent, NOOP_COMPLETION_HANDLER));
- responseContentQueue.addLast(new ResponseContentPart(CLOSE_STREAM_BUFFER, NOOP_COMPLETION_HANDLER));
- }
-
- public void writeBuffer(ByteBuffer buf, CompletionHandler handler) {
+ void writeBuffer(ByteBuffer buf, CompletionHandler handler) {
boolean thisThreadShouldWrite = false;
synchronized (monitor) {
@@ -121,13 +105,13 @@ public class ServletOutputStreamWriter {
}
}
- public void close(CompletionHandler handler) {
- writeBuffer(CLOSE_STREAM_BUFFER, handler);
- }
+ void fail(Throwable t) { setFinished(t); }
- public void close() {
- close(NOOP_COMPLETION_HANDLER);
- }
+ void close(CompletionHandler handler) { writeBuffer(CLOSE_STREAM_BUFFER, handler); }
+
+ void close() { close(NOOP_COMPLETION_HANDLER); }
+
+ CompletableFuture<Void> finishedFuture() { return finishedFuture; }
private void writeBuffersInQueueToOutputStream() {
boolean lastOperationWasFlush = false;
@@ -165,29 +149,28 @@ public class ServletOutputStreamWriter {
if (contentPart.buf == CLOSE_STREAM_BUFFER) {
callCompletionHandlerWhenDone(contentPart.handler, outputStream::close);
- setFinished(Optional.empty());
+ setFinished(null);
return;
} else {
writeBufferToOutputStream(contentPart);
}
- } catch (Throwable e) {
- setFinished(Optional.of(e));
+ } catch (Throwable t) {
+ setFinished(t);
return;
}
}
}
- private void setFinished(Optional<Throwable> e) {
+ private void setFinished(Throwable t) {
synchronized (monitor) {
state = State.FINISHED_OR_ERROR;
if (!responseContentQueue.isEmpty()) {
- failAllParts_holdingLock(e.orElse(new IllegalStateException("ContentChannel closed.")));
+ failAllParts_holdingLock(t != null ? t : new IllegalStateException("ContentChannel closed."));
}
}
-
assert !Thread.holdsLock(monitor);
- if (e.isPresent()) {
- finishedFuture.completeExceptionally(e.get());
+ if (t != null) {
+ finishedFuture.completeExceptionally(t);
} else {
finishedFuture.complete(null);
}
@@ -255,13 +238,9 @@ public class ServletOutputStreamWriter {
}
}
- public void fail(Throwable t) {
- setFinished(Optional.of(t));
- }
-
private final WriteListener writeListener = new WriteListener() {
@Override
- public void onWritePossible() throws IOException {
+ public void onWritePossible() {
synchronized (monitor) {
if (state == State.FINISHED_OR_ERROR) {
return;
@@ -274,10 +253,7 @@ public class ServletOutputStreamWriter {
writeBuffersInQueueToOutputStream();
}
- @Override
- public void onError(Throwable t) {
- setFinished(Optional.of(t));
- }
+ @Override public void onError(Throwable t) { setFinished(t); }
};
private static class ResponseContentPart {
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletRequestReader.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletRequestReader.java
index e2bf5711e15..1def9ccaab1 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletRequestReader.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletRequestReader.java
@@ -1,7 +1,6 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
-import com.google.common.base.Preconditions;
import com.yahoo.jdisc.handler.CompletionHandler;
import com.yahoo.jdisc.handler.ContentChannel;
@@ -9,6 +8,7 @@ import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
+import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -25,8 +25,12 @@ import java.util.logging.Logger;
* error reporting might be async.
* Since we have tests that first reports errors and then closes the response content,
* it's important that errors are delivered synchronously.
+ *
+ * @author Tony Vaagenes
+ * @author Oyvind Bakksjo
+ * @author bjorncs
*/
-class ServletRequestReader implements ReadListener {
+class ServletRequestReader {
private enum State {
READING, ALL_DATA_READ, REQUEST_CONTENT_CLOSED
@@ -38,12 +42,12 @@ class ServletRequestReader implements ReadListener {
private final Object monitor = new Object();
- private final ServletInputStream servletInputStream;
+ private final ServletInputStream in;
private final ContentChannel requestContentChannel;
-
private final Janitor janitor;
private final RequestMetricReporter metricReporter;
+ private Throwable errorDuringRead;
private int bytesRead;
/**
@@ -87,82 +91,91 @@ class ServletRequestReader implements ReadListener {
* If calls to those methods does not close the request content channel immediately,
* there is some outstanding completion callback that will later come in and complete the request.
*/
- final CompletableFuture<Void> finishedFuture = new CompletableFuture<>();
+ private final CompletableFuture<Void> finishedFuture = new CompletableFuture<>();
- public ServletRequestReader(
- ServletInputStream servletInputStream,
+ ServletRequestReader(
+ ServletInputStream in,
ContentChannel requestContentChannel,
Janitor janitor,
RequestMetricReporter metricReporter) {
-
- Preconditions.checkNotNull(servletInputStream);
- Preconditions.checkNotNull(requestContentChannel);
- Preconditions.checkNotNull(janitor);
- Preconditions.checkNotNull(metricReporter);
-
- this.servletInputStream = servletInputStream;
- this.requestContentChannel = requestContentChannel;
- this.janitor = janitor;
- this.metricReporter = metricReporter;
+ this.in = Objects.requireNonNull(in);
+ this.requestContentChannel = Objects.requireNonNull(requestContentChannel);
+ this.janitor = Objects.requireNonNull(janitor);
+ this.metricReporter = Objects.requireNonNull(metricReporter);
+ in.setReadListener(new Listener());
}
- @Override
- public void onDataAvailable() throws IOException {
- while (servletInputStream.isReady()) {
- final byte[] buffer = new byte[BUFFER_SIZE_BYTES];
- int numBytesRead;
+ CompletableFuture<Void> finishedFuture() { return finishedFuture; }
- synchronized (monitor) {
- numBytesRead = servletInputStream.read(buffer);
- if (numBytesRead < 0) {
- // End of stream; there should be no more data available, ever.
- return;
- }
- if (state != State.READING) {
- //We have a failure, so no point in giving the buffer to the user.
- assert finishedFuture.isCompletedExceptionally();
- return;
+ private class Listener implements ReadListener {
+
+ @Override
+ public void onDataAvailable() throws IOException {
+ while (in.isReady()) {
+ final byte[] buffer = new byte[BUFFER_SIZE_BYTES];
+ int numBytesRead;
+
+ synchronized (monitor) {
+ numBytesRead = in.read(buffer);
+ if (numBytesRead < 0) {
+ // End of stream; there should be no more data available, ever.
+ return;
+ }
+ if (state != State.READING) {
+ //We have a failure, so no point in giving the buffer to the user.
+ assert finishedFuture.isCompletedExceptionally();
+ return;
+ }
+ //wait for both
+ // - requestContentChannel.write to finish
+ // - the write completion handler to be called
+ numberOfOutstandingUserCalls += 2;
+ bytesRead += numBytesRead;
}
- //wait for both
- // - requestContentChannel.write to finish
- // - the write completion handler to be called
- numberOfOutstandingUserCalls += 2;
- bytesRead += numBytesRead;
- }
- try {
- requestContentChannel.write(ByteBuffer.wrap(buffer, 0, numBytesRead), writeCompletionHandler);
- metricReporter.successfulRead(numBytesRead);
- }
- catch (Throwable t) {
- finishedFuture.completeExceptionally(t);
- }
- finally {
- //decrease due to this method completing.
- decreaseOutstandingUserCallsAndCloseRequestContentChannelConditionally();
+ try {
+ requestContentChannel.write(ByteBuffer.wrap(buffer, 0, numBytesRead), new CompletionHandler() {
+ @Override
+ public void completed() {
+ decreaseOutstandingUserCallsAndCloseRequestContentChannelConditionally();
+ }
+ @Override
+ public void failed(final Throwable t) {
+ decreaseOutstandingUserCallsAndCloseRequestContentChannelConditionally();
+ finishedFuture.completeExceptionally(t);
+ }
+ });
+ metricReporter.successfulRead(numBytesRead);
+ } catch (Throwable t) {
+ finishedFuture.completeExceptionally(t);
+ } finally {
+ //decrease due to this method completing.
+ decreaseOutstandingUserCallsAndCloseRequestContentChannelConditionally();
+ }
}
}
+
+ @Override public void onError(final Throwable t) { fail(t); }
+ @Override public void onAllDataRead() { doneReading(null); }
+ }
+
+ void fail(Throwable t) {
+ doneReading(t);
+ finishedFuture.completeExceptionally(t);
}
private void decreaseOutstandingUserCallsAndCloseRequestContentChannelConditionally() {
boolean shouldCloseRequestContentChannel;
-
synchronized (monitor) {
assertStateNotEquals(state, State.REQUEST_CONTENT_CLOSED);
-
-
numberOfOutstandingUserCalls -= 1;
-
- shouldCloseRequestContentChannel = numberOfOutstandingUserCalls == 0 &&
- (finishedFuture.isDone() || state == State.ALL_DATA_READ);
-
+ shouldCloseRequestContentChannel = numberOfOutstandingUserCalls == 0 && state == State.ALL_DATA_READ;
if (shouldCloseRequestContentChannel) {
state = State.REQUEST_CONTENT_CLOSED;
}
}
-
if (shouldCloseRequestContentChannel) {
- janitor.scheduleTask(this::closeCompletionHandler_noThrow);
+ janitor.scheduleTask(this::closeRequestContentChannel);
}
}
@@ -178,22 +191,14 @@ class ServletRequestReader implements ReadListener {
}
}
- @Override
- public void onAllDataRead() {
- doneReading();
- }
-
- private void doneReading() {
- final boolean shouldCloseRequestContentChannel;
-
+ private void doneReading(Throwable t) {
+ boolean shouldCloseRequestContentChannel;
int bytesRead;
- synchronized (monitor) {
- if (state != State.READING) {
- return;
- }
+ synchronized (monitor) {
+ errorDuringRead = t;
+ if (state != State.READING) return;
state = State.ALL_DATA_READ;
-
shouldCloseRequestContentChannel = numberOfOutstandingUserCalls == 0;
if (shouldCloseRequestContentChannel) {
state = State.REQUEST_CONTENT_CLOSED;
@@ -202,69 +207,32 @@ class ServletRequestReader implements ReadListener {
}
if (shouldCloseRequestContentChannel) {
- closeCompletionHandler_noThrow();
+ closeRequestContentChannel();
}
-
metricReporter.contentSize(bytesRead);
}
- private void closeCompletionHandler_noThrow() {
- //Cannot complete finishedFuture directly in completed(), as any exceptions after this fact will be ignored.
- // E.g.
- // close(CompletionHandler completionHandler) {
- // completionHandler.completed();
- // throw new RuntimeException
- // }
-
- CompletableFuture<Void> completedCalledFuture = new CompletableFuture<>();
-
- CompletionHandler closeCompletionHandler = new CompletionHandler() {
- @Override
- public void completed() {
- completedCalledFuture.complete(null);
- }
-
- @Override
- public void failed(final Throwable t) {
- finishedFuture.completeExceptionally(t);
- }
- };
-
+ private void closeRequestContentChannel() {
+ Throwable readError;
+ synchronized (monitor) { readError = this.errorDuringRead; }
try {
- requestContentChannel.close(closeCompletionHandler);
- //if close did not cause an exception,
- // is it safe to pipe the result of the completionHandlerInvokedFuture into finishedFuture
- completedCalledFuture.whenComplete(this::setFinishedFuture);
- } catch (final Throwable t) {
+ if (readError != null) requestContentChannel.onError(readError);
+ //Cannot complete finishedFuture directly in completed(), as any exceptions after this fact will be ignored.
+ // E.g.
+ // close(CompletionHandler completionHandler) {
+ // completionHandler.completed();
+ // throw new RuntimeException
+ // }
+ CompletableFuture<Void> completedCalledFuture = new CompletableFuture<>();
+ requestContentChannel.close(new CompletionHandler() {
+ @Override public void completed() { completedCalledFuture.complete(null); }
+ @Override public void failed(Throwable t) { finishedFuture.completeExceptionally(t); }
+ });
+ // Propagate successful completion as close did not throw an exception
+ completedCalledFuture.whenComplete((__, ___) -> finishedFuture.complete(null));
+ } catch (Throwable t) {
finishedFuture.completeExceptionally(t);
}
}
- private void setFinishedFuture(Void result, Throwable throwable) {
- if (throwable != null) {
- finishedFuture.completeExceptionally(throwable);
- } else {
- finishedFuture.complete(null);
- }
- }
-
- @Override
- public void onError(final Throwable t) {
- finishedFuture.completeExceptionally(t);
- requestContentChannel.onError(t);
- doneReading();
- }
-
- private final CompletionHandler writeCompletionHandler = new CompletionHandler() {
- @Override
- public void completed() {
- decreaseOutstandingUserCallsAndCloseRequestContentChannelConditionally();
- }
-
- @Override
- public void failed(final Throwable t) {
- finishedFuture.completeExceptionally(t);
- decreaseOutstandingUserCallsAndCloseRequestContentChannelConditionally();
- }
- };
}
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletResponseController.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletResponseController.java
index d61a3745653..e78b50215bb 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletResponseController.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletResponseController.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.Response;
@@ -30,9 +30,9 @@ import static com.yahoo.jdisc.http.server.jetty.CompletionHandlerUtils.NOOP_COMP
* @author Tony Vaagenes
* @author bjorncs
*/
-public class ServletResponseController {
+class ServletResponseController {
- private static Logger log = Logger.getLogger(ServletResponseController.class.getName());
+ private static final Logger log = Logger.getLogger(ServletResponseController.class.getName());
/**
* The servlet spec does not require (Http)ServletResponse nor ServletOutputStream to be thread-safe. Therefore,
@@ -49,12 +49,12 @@ public class ServletResponseController {
private final ErrorResponseContentCreator errorResponseContentCreator = new ErrorResponseContentCreator();
//all calls to the servletOutputStreamWriter must hold the monitor first to ensure visibility of servletResponse changes.
- private final ServletOutputStreamWriter servletOutputStreamWriter;
+ private final ServletOutputStreamWriter out;
// GuardedBy("monitor")
private boolean responseCommitted = false;
- public ServletResponseController(
+ ServletResponseController(
HttpServletRequest servletRequest,
HttpServletResponse servletResponse,
Janitor janitor,
@@ -64,10 +64,61 @@ public class ServletResponseController {
this.servletRequest = servletRequest;
this.servletResponse = servletResponse;
this.developerMode = developerMode;
- this.servletOutputStreamWriter =
- new ServletOutputStreamWriter(servletResponse.getOutputStream(), janitor, metricReporter);
+ this.out = new ServletOutputStreamWriter(servletResponse.getOutputStream(), janitor, metricReporter);
}
+ void fail(Throwable t) {
+ synchronized (monitor) {
+ try {
+ trySendError(t);
+ } catch (Throwable suppressed) {
+ t.addSuppressed(suppressed);
+ } finally {
+ out.close();
+ }
+ }
+ }
+
+ /**
+ * When this future completes there will be no more calls against the servlet output stream or servlet response.
+ * The framework is still allowed to invoke us though.
+ *
+ * The future might complete in the servlet framework thread, user thread or executor thread.
+ */
+ CompletableFuture<Void> finishedFuture() { return out.finishedFuture(); }
+
+ ResponseHandler responseHandler() { return responseHandler; }
+
+ private void trySendError(Throwable t) {
+ if (!responseCommitted) {
+ responseCommitted = true;
+ servletResponse.setHeader(HttpHeaders.Names.EXPIRES, null);
+ servletResponse.setHeader(HttpHeaders.Names.LAST_MODIFIED, null);
+ servletResponse.setHeader(HttpHeaders.Names.CACHE_CONTROL, null);
+ servletResponse.setHeader(HttpHeaders.Names.CONTENT_TYPE, null);
+ servletResponse.setHeader(HttpHeaders.Names.CONTENT_LENGTH, null);
+ String reasonPhrase = getReasonPhrase(t, developerMode);
+ int statusCode = getStatusCode(t);
+ setStatus(servletResponse, statusCode, reasonPhrase);
+ // If we are allowed to have a body
+ if (statusCode != HttpServletResponse.SC_NO_CONTENT &&
+ statusCode != HttpServletResponse.SC_NOT_MODIFIED &&
+ statusCode != HttpServletResponse.SC_PARTIAL_CONTENT &&
+ statusCode >= HttpServletResponse.SC_OK) {
+ servletResponse.setHeader(HttpHeaders.Names.CACHE_CONTROL, "must-revalidate,no-cache,no-store");
+ servletResponse.setContentType(MimeTypes.Type.TEXT_HTML_8859_1.toString());
+ byte[] errorContent = errorResponseContentCreator
+ .createErrorContent(servletRequest.getRequestURI(), statusCode, reasonPhrase);
+ servletResponse.setContentLength(errorContent.length);
+ out.writeBuffer(ByteBuffer.wrap(errorContent), NOOP_COMPLETION_HANDLER);
+ } else {
+ servletResponse.setContentLength(0);
+ }
+ } else {
+ RuntimeException exceptionWithStackTrace = new RuntimeException(t);
+ log.log(Level.FINE, "Response already committed, can't change response code", exceptionWithStackTrace);
+ }
+ }
private static int getStatusCode(Throwable t) {
if (t instanceof BindingNotFoundException) {
@@ -96,75 +147,6 @@ public class ServletResponseController {
}
}
-
- public void trySendError(Throwable t) {
- final boolean responseWasCommitted;
- try {
- synchronized (monitor) {
- String reasonPhrase = getReasonPhrase(t, developerMode);
- int statusCode = getStatusCode(t);
- responseWasCommitted = responseCommitted;
- if (!responseCommitted) {
- responseCommitted = true;
- sendErrorAsync(statusCode, reasonPhrase);
- }
- }
- } catch (Throwable e) {
- servletOutputStreamWriter.fail(t);
- return;
- }
-
- //Must be evaluated after state transition for test purposes(See ConformanceTestException)
- //Done outside the monitor since it causes a callback in tests.
- if (responseWasCommitted) {
- RuntimeException exceptionWithStackTrace = new RuntimeException(t);
- log.log(Level.FINE, "Response already committed, can't change response code", exceptionWithStackTrace);
- // TODO: should always have failed here, but that breaks test assumptions. Doing soft close instead.
- //assert !Thread.holdsLock(monitor);
- //servletOutputStreamWriter.fail(t);
- servletOutputStreamWriter.close();
- }
-
- }
-
- /**
- * Async version of {@link org.eclipse.jetty.server.Response#sendError(int, String)}.
- */
- private void sendErrorAsync(int statusCode, String reasonPhrase) {
- servletResponse.setHeader(HttpHeaders.Names.EXPIRES, null);
- servletResponse.setHeader(HttpHeaders.Names.LAST_MODIFIED, null);
- servletResponse.setHeader(HttpHeaders.Names.CACHE_CONTROL, null);
- servletResponse.setHeader(HttpHeaders.Names.CONTENT_TYPE, null);
- servletResponse.setHeader(HttpHeaders.Names.CONTENT_LENGTH, null);
- setStatus(servletResponse, statusCode, Optional.of(reasonPhrase));
-
- // If we are allowed to have a body
- if (statusCode != HttpServletResponse.SC_NO_CONTENT &&
- statusCode != HttpServletResponse.SC_NOT_MODIFIED &&
- statusCode != HttpServletResponse.SC_PARTIAL_CONTENT &&
- statusCode >= HttpServletResponse.SC_OK) {
- servletResponse.setHeader(HttpHeaders.Names.CACHE_CONTROL, "must-revalidate,no-cache,no-store");
- servletResponse.setContentType(MimeTypes.Type.TEXT_HTML_8859_1.toString());
- byte[] errorContent = errorResponseContentCreator
- .createErrorContent(servletRequest.getRequestURI(), statusCode, Optional.ofNullable(reasonPhrase));
- servletResponse.setContentLength(errorContent.length);
- servletOutputStreamWriter.sendErrorContentAndCloseAsync(ByteBuffer.wrap(errorContent));
- } else {
- servletResponse.setContentLength(0);
- servletOutputStreamWriter.close();
- }
- }
-
- /**
- * When this future completes there will be no more calls against the servlet output stream or servlet response.
- * The framework is still allowed to invoke us though.
- *
- * The future might complete in the servlet framework thread, user thread or executor thread.
- */
- public CompletableFuture<Void> finishedFuture() {
- return servletOutputStreamWriter.finishedFuture;
- }
-
private void setResponse(Response jdiscResponse) {
synchronized (monitor) {
servletRequest.setAttribute(HttpResponseStatisticsCollector.requestTypeAttribute, jdiscResponse.getRequestType());
@@ -176,57 +158,46 @@ public class ServletResponseController {
//TODO: should throw an exception here, but this breaks unit tests.
//The failures will now instead happen when writing buffers.
- servletOutputStreamWriter.close();
+ out.close();
return;
}
- setStatus_holdingLock(jdiscResponse, servletResponse);
- setHeaders_holdingLock(jdiscResponse, servletResponse);
- }
- }
-
- private static void setHeaders_holdingLock(Response jdiscResponse, HttpServletResponse servletResponse) {
- for (final Map.Entry<String, String> entry : jdiscResponse.headers().entries()) {
- servletResponse.addHeader(entry.getKey(), entry.getValue());
- }
-
- if (servletResponse.getContentType() == null) {
- servletResponse.setContentType("text/plain;charset=utf-8");
- }
- }
-
- private static void setStatus_holdingLock(Response jdiscResponse, HttpServletResponse servletResponse) {
- if (jdiscResponse instanceof HttpResponse) {
- setStatus(servletResponse, jdiscResponse.getStatus(), Optional.ofNullable(((HttpResponse) jdiscResponse).getMessage()));
- } else {
- setStatus(servletResponse, jdiscResponse.getStatus(), getErrorMessage(jdiscResponse));
+ if (jdiscResponse instanceof HttpResponse) {
+ setStatus(servletResponse, jdiscResponse.getStatus(), ((HttpResponse) jdiscResponse).getMessage());
+ } else {
+ String message = Optional.ofNullable(jdiscResponse.getError())
+ .flatMap(error -> Optional.ofNullable(error.getMessage()))
+ .orElse(null);
+ setStatus(servletResponse, jdiscResponse.getStatus(), message);
+ }
+ for (final Map.Entry<String, String> entry : jdiscResponse.headers().entries()) {
+ servletResponse.addHeader(entry.getKey(), entry.getValue());
+ }
+ if (servletResponse.getContentType() == null) {
+ servletResponse.setContentType("text/plain;charset=utf-8");
+ }
}
}
@SuppressWarnings("deprecation")
- private static void setStatus(HttpServletResponse response, int statusCode, Optional<String> reasonPhrase) {
- if (reasonPhrase.isPresent()) {
+ private static void setStatus(HttpServletResponse response, int statusCode, String reasonPhrase) {
+ if (reasonPhrase != null) {
// Sets the status line: a status code along with a custom message.
// Using a custom status message is deprecated in the Servlet API. No alternative exist.
- response.setStatus(statusCode, reasonPhrase.get()); // DEPRECATED
+ response.setStatus(statusCode, reasonPhrase); // DEPRECATED
} else {
response.setStatus(statusCode);
}
}
- private static Optional<String> getErrorMessage(Response jdiscResponse) {
- return Optional.ofNullable(jdiscResponse.getError()).flatMap(
- error -> Optional.ofNullable(error.getMessage()));
- }
-
- private void commitResponse() {
+ private void ensureCommitted() {
synchronized (monitor) {
responseCommitted = true;
}
}
- public final ResponseHandler responseHandler = new ResponseHandler() {
+ private final ResponseHandler responseHandler = new ResponseHandler() {
@Override
public ContentChannel handleResponse(Response response) {
setResponse(response);
@@ -234,17 +205,17 @@ public class ServletResponseController {
}
};
- public final ContentChannel responseContentChannel = new ContentChannel() {
+ private final ContentChannel responseContentChannel = new ContentChannel() {
@Override
public void write(ByteBuffer buf, CompletionHandler handler) {
- commitResponse();
- servletOutputStreamWriter.writeBuffer(buf, handlerOrNoopHandler(handler));
+ ensureCommitted();
+ out.writeBuffer(buf, handlerOrNoopHandler(handler));
}
@Override
public void close(CompletionHandler handler) {
- commitResponse();
- servletOutputStreamWriter.close(handlerOrNoopHandler(handler));
+ ensureCommitted();
+ out.close(handlerOrNoopHandler(handler));
}
private CompletionHandler handlerOrNoopHandler(CompletionHandler handler) {
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/SimpleConcurrentIdentityHashMap.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/SimpleConcurrentIdentityHashMap.java
index 59d606c640f..86f8e858b5a 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/SimpleConcurrentIdentityHashMap.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/SimpleConcurrentIdentityHashMap.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import java.util.Optional;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/SslHandshakeFailure.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/SslHandshakeFailure.java
index 64f70564137..331d8837bfa 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/SslHandshakeFailure.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/SslHandshakeFailure.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import javax.net.ssl.SSLHandshakeException;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/UnsupportedFilterInvoker.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/UnsupportedFilterInvoker.java
index ce52bccf52d..8d878b64e6f 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/UnsupportedFilterInvoker.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/UnsupportedFilterInvoker.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.handler.ResponseHandler;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/VoidConnectionLog.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/VoidConnectionLog.java
index 5d33cc0835e..8e638749e05 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/VoidConnectionLog.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/VoidConnectionLog.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/VoidRequestLog.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/VoidRequestLog.java
index 9db5ba99115..dba62d8b3b9 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/VoidRequestLog.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/VoidRequestLog.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.container.logging.RequestLog;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/package-info.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/package-info.java
index 189751aa9c0..3665b8961c0 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/package-info.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/package-info.java
@@ -1,3 +1,3 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@com.yahoo.osgi.annotation.ExportPackage
package com.yahoo.jdisc.http.server.jetty;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/testutils/ConnectorFactoryRegistryModule.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/testutils/ConnectorFactoryRegistryModule.java
index 9d475309955..a0154da154d 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/testutils/ConnectorFactoryRegistryModule.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/testutils/ConnectorFactoryRegistryModule.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty.testutils;
import com.google.inject.Binder;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/testutils/ServletModule.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/testutils/ServletModule.java
index a507255c9b7..bb69832d767 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/testutils/ServletModule.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/testutils/ServletModule.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty.testutils;
import com.google.inject.Binder;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/testutils/TestDriver.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/testutils/TestDriver.java
index 7f3d54f1d34..99c49527ea5 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/testutils/TestDriver.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/testutils/TestDriver.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty.testutils;
import com.google.inject.AbstractModule;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/servlet/ServletOrJdiscHttpRequest.java b/container-core/src/main/java/com/yahoo/jdisc/http/servlet/ServletOrJdiscHttpRequest.java
index eaac2b1c415..3990c9a8910 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/servlet/ServletOrJdiscHttpRequest.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/servlet/ServletOrJdiscHttpRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.servlet;
import com.yahoo.jdisc.HeaderFields;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/servlet/ServletOrJdiscHttpResponse.java b/container-core/src/main/java/com/yahoo/jdisc/http/servlet/ServletOrJdiscHttpResponse.java
index a24ada05b3d..a40e257b67d 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/servlet/ServletOrJdiscHttpResponse.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/servlet/ServletOrJdiscHttpResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.servlet;
import com.yahoo.jdisc.HeaderFields;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/servlet/ServletRequest.java b/container-core/src/main/java/com/yahoo/jdisc/http/servlet/ServletRequest.java
index bb78511a17f..8f17c9dc523 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/servlet/ServletRequest.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/servlet/ServletRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.servlet;
import com.google.common.collect.ImmutableMap;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/servlet/ServletResponse.java b/container-core/src/main/java/com/yahoo/jdisc/http/servlet/ServletResponse.java
index 48c8f577de9..44a23c22b4a 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/servlet/ServletResponse.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/servlet/ServletResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.servlet;
import com.yahoo.jdisc.HeaderFields;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/servlet/package-info.java b/container-core/src/main/java/com/yahoo/jdisc/http/servlet/package-info.java
index 0120f164cae..098506aa86f 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/servlet/package-info.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/servlet/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.jdisc.http.servlet;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/ssl/SslContextFactoryProvider.java b/container-core/src/main/java/com/yahoo/jdisc/http/ssl/SslContextFactoryProvider.java
index c364116e0af..4383b511637 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/ssl/SslContextFactoryProvider.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/ssl/SslContextFactoryProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.ssl;
import org.eclipse.jetty.util.ssl.SslContextFactory;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/ssl/impl/DefaultSslContextFactoryProvider.java b/container-core/src/main/java/com/yahoo/jdisc/http/ssl/impl/DefaultSslContextFactoryProvider.java
index 7395d2307af..c3c99b71c46 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/ssl/impl/DefaultSslContextFactoryProvider.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/ssl/impl/DefaultSslContextFactoryProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.ssl.impl;
import com.google.inject.Inject;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/ssl/impl/JDiscSslContextFactory.java b/container-core/src/main/java/com/yahoo/jdisc/http/ssl/impl/JDiscSslContextFactory.java
index 006a282e1e0..badb36023bc 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/ssl/impl/JDiscSslContextFactory.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/ssl/impl/JDiscSslContextFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.ssl.impl;
import org.eclipse.jetty.util.resource.Resource;
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/ssl/impl/package-info.java b/container-core/src/main/java/com/yahoo/jdisc/http/ssl/impl/package-info.java
index f337e9d010b..28ce2a69762 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/ssl/impl/package-info.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/ssl/impl/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/ssl/package-info.java b/container-core/src/main/java/com/yahoo/jdisc/http/ssl/package-info.java
index 085e9dedf20..2e0f2d8e19c 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/ssl/package-info.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/ssl/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/container-core/src/main/java/com/yahoo/language/provider/DefaultEmbedderProvider.java b/container-core/src/main/java/com/yahoo/language/provider/DefaultEmbedderProvider.java
new file mode 100644
index 00000000000..63a03398017
--- /dev/null
+++ b/container-core/src/main/java/com/yahoo/language/provider/DefaultEmbedderProvider.java
@@ -0,0 +1,26 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.language.provider;
+
+import com.google.inject.Inject;
+import com.yahoo.container.di.componentgraph.Provider;
+import com.yahoo.language.process.Embedder;
+
+/**
+ * Provides the default embedder implementation if no embedder component has been explicitly configured
+ * (dependency injection will fallback to providers if no components of the requested type is found).
+ *
+ * @author bratseth
+ */
+@SuppressWarnings("unused") // Injected
+public class DefaultEmbedderProvider implements Provider<Embedder> {
+
+ @Inject
+ public DefaultEmbedderProvider() { }
+
+ @Override
+ public Embedder get() { return Embedder.throwsOnUse; }
+
+ @Override
+ public void deconstruct() {}
+
+}
diff --git a/container-core/src/main/java/com/yahoo/language/provider/DefaultLinguisticsProvider.java b/container-core/src/main/java/com/yahoo/language/provider/DefaultLinguisticsProvider.java
index 92cdfe8d918..563c9a8bdff 100644
--- a/container-core/src/main/java/com/yahoo/language/provider/DefaultLinguisticsProvider.java
+++ b/container-core/src/main/java/com/yahoo/language/provider/DefaultLinguisticsProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.provider;
import com.google.common.base.Supplier;
diff --git a/container-core/src/main/java/com/yahoo/language/provider/package-info.java b/container-core/src/main/java/com/yahoo/language/provider/package-info.java
index 9bcb87cb55c..22bbfedc5c7 100644
--- a/container-core/src/main/java/com/yahoo/language/provider/package-info.java
+++ b/container-core/src/main/java/com/yahoo/language/provider/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.language.provider;
diff --git a/container-core/src/main/java/com/yahoo/metrics/package-info.java b/container-core/src/main/java/com/yahoo/metrics/package-info.java
index d6b74157662..7426b97fcff 100644
--- a/container-core/src/main/java/com/yahoo/metrics/package-info.java
+++ b/container-core/src/main/java/com/yahoo/metrics/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/** Exported config package */
@ExportPackage
package com.yahoo.metrics;
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/Bucket.java b/container-core/src/main/java/com/yahoo/metrics/simple/Bucket.java
index b75a0529a03..9162571830d 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/Bucket.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/Bucket.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
import java.util.AbstractMap.SimpleImmutableEntry;
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/Counter.java b/container-core/src/main/java/com/yahoo/metrics/simple/Counter.java
index 21cdbd3c219..d726486c195 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/Counter.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/Counter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
import com.google.common.annotations.Beta;
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/DimensionCache.java b/container-core/src/main/java/com/yahoo/metrics/simple/DimensionCache.java
index 8893a88d94c..07a6d561483 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/DimensionCache.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/DimensionCache.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
import java.util.HashMap;
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/Gauge.java b/container-core/src/main/java/com/yahoo/metrics/simple/Gauge.java
index 1edefd0ae5a..ab250526bd5 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/Gauge.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/Gauge.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
import com.google.common.annotations.Beta;
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/Identifier.java b/container-core/src/main/java/com/yahoo/metrics/simple/Identifier.java
index 4d0f470534a..ead7d1c88ca 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/Identifier.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/Identifier.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
/**
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/Measurement.java b/container-core/src/main/java/com/yahoo/metrics/simple/Measurement.java
index 4098ac1bdea..dcc2ea716ce 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/Measurement.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/Measurement.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
/**
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/MetricAggregator.java b/container-core/src/main/java/com/yahoo/metrics/simple/MetricAggregator.java
index 7168eb49676..3839de28294 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/MetricAggregator.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/MetricAggregator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
import java.util.List;
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/MetricManager.java b/container-core/src/main/java/com/yahoo/metrics/simple/MetricManager.java
index 1956783b4c0..40242285486 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/MetricManager.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/MetricManager.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
import java.util.concurrent.ScheduledThreadPoolExecutor;
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/MetricReceiver.java b/container-core/src/main/java/com/yahoo/metrics/simple/MetricReceiver.java
index e0e3469e257..94be443d9bb 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/MetricReceiver.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/MetricReceiver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
import java.util.HashMap;
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/MetricSettings.java b/container-core/src/main/java/com/yahoo/metrics/simple/MetricSettings.java
index 924e311015b..39403703e71 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/MetricSettings.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/MetricSettings.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
import com.google.common.annotations.Beta;
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/MetricUpdater.java b/container-core/src/main/java/com/yahoo/metrics/simple/MetricUpdater.java
index 848132c9bea..39dc633725a 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/MetricUpdater.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/MetricUpdater.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
import com.yahoo.concurrent.ThreadLocalDirectory.Updater;
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/Point.java b/container-core/src/main/java/com/yahoo/metrics/simple/Point.java
index 672d05c1874..af0a1207072 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/Point.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/Point.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
import java.util.Arrays;
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/PointBuilder.java b/container-core/src/main/java/com/yahoo/metrics/simple/PointBuilder.java
index f613aab26a2..9ca1198e8ea 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/PointBuilder.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/PointBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
import java.util.ArrayList;
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/Sample.java b/container-core/src/main/java/com/yahoo/metrics/simple/Sample.java
index 0d2144deeb4..eea2d752582 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/Sample.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/Sample.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
import com.yahoo.metrics.simple.UntypedMetric.AssumedType;
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/UnitTestSetup.java b/container-core/src/main/java/com/yahoo/metrics/simple/UnitTestSetup.java
index e6856ee2970..07f2876d19e 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/UnitTestSetup.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/UnitTestSetup.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
import com.yahoo.metrics.ManagerConfig;
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/UntypedMetric.java b/container-core/src/main/java/com/yahoo/metrics/simple/UntypedMetric.java
index f757ab15022..ad549fb4d91 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/UntypedMetric.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/UntypedMetric.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
import java.util.logging.Logger;
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/Value.java b/container-core/src/main/java/com/yahoo/metrics/simple/Value.java
index fd4113a5e22..c6df0c37c0f 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/Value.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/Value.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
/**
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/jdisc/JdiscMetricsFactory.java b/container-core/src/main/java/com/yahoo/metrics/simple/jdisc/JdiscMetricsFactory.java
index 30102c43919..01e11fd6e90 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/jdisc/JdiscMetricsFactory.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/jdisc/JdiscMetricsFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple.jdisc;
import java.io.PrintStream;
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/jdisc/SimpleMetricConsumer.java b/container-core/src/main/java/com/yahoo/metrics/simple/jdisc/SimpleMetricConsumer.java
index ee5f18e78d3..12f27e9b0ca 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/jdisc/SimpleMetricConsumer.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/jdisc/SimpleMetricConsumer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple.jdisc;
import java.util.HashMap;
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/jdisc/SnapshotConverter.java b/container-core/src/main/java/com/yahoo/metrics/simple/jdisc/SnapshotConverter.java
index 495062e38f8..5b5fb67f1b4 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/jdisc/SnapshotConverter.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/jdisc/SnapshotConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple.jdisc;
import java.io.PrintStream;
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/jdisc/package-info.java b/container-core/src/main/java/com/yahoo/metrics/simple/jdisc/package-info.java
index d191a5764c0..896d9d87210 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/jdisc/package-info.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/jdisc/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* JDisc metrics API for simple metrics implementation.
*
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/package-info.java b/container-core/src/main/java/com/yahoo/metrics/simple/package-info.java
index 9306c7c59db..b41ec036cb8 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/package-info.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* A metrics API with declarable metric, and also an implementation of the
* JDisc Metrics API where the newest state is made continously available.
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/runtime/MetricProperties.java b/container-core/src/main/java/com/yahoo/metrics/simple/runtime/MetricProperties.java
index 9c3ecec10fc..c2d715e317d 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/runtime/MetricProperties.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/runtime/MetricProperties.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple.runtime;
import java.nio.file.Path;
diff --git a/container-core/src/main/java/com/yahoo/metrics/simple/runtime/package-info.java b/container-core/src/main/java/com/yahoo/metrics/simple/runtime/package-info.java
index e7c7cd166eb..1b7ce3e072b 100644
--- a/container-core/src/main/java/com/yahoo/metrics/simple/runtime/package-info.java
+++ b/container-core/src/main/java/com/yahoo/metrics/simple/runtime/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Settings and properties used for setting up the simple metrics library in a
* container.
diff --git a/container-core/src/main/java/com/yahoo/osgi/MockOsgi.java b/container-core/src/main/java/com/yahoo/osgi/MockOsgi.java
index 6a700a65a03..cb2e32cb29f 100644
--- a/container-core/src/main/java/com/yahoo/osgi/MockOsgi.java
+++ b/container-core/src/main/java/com/yahoo/osgi/MockOsgi.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.osgi;
import com.yahoo.component.ComponentSpecification;
diff --git a/container-core/src/main/java/com/yahoo/osgi/Osgi.java b/container-core/src/main/java/com/yahoo/osgi/Osgi.java
index 54f9ad48703..c8fa901dd0a 100644
--- a/container-core/src/main/java/com/yahoo/osgi/Osgi.java
+++ b/container-core/src/main/java/com/yahoo/osgi/Osgi.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.osgi;
import com.yahoo.component.ComponentSpecification;
diff --git a/container-core/src/main/java/com/yahoo/osgi/OsgiImpl.java b/container-core/src/main/java/com/yahoo/osgi/OsgiImpl.java
index 97e2367bac2..4909f9a76eb 100644
--- a/container-core/src/main/java/com/yahoo/osgi/OsgiImpl.java
+++ b/container-core/src/main/java/com/yahoo/osgi/OsgiImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.osgi;
import com.yahoo.component.ComponentSpecification;
diff --git a/container-core/src/main/java/com/yahoo/osgi/package-info.java b/container-core/src/main/java/com/yahoo/osgi/package-info.java
index aab61c85c81..7cd2ac99329 100644
--- a/container-core/src/main/java/com/yahoo/osgi/package-info.java
+++ b/container-core/src/main/java/com/yahoo/osgi/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.osgi;
diff --git a/container-core/src/main/java/com/yahoo/osgi/provider/model/ComponentModel.java b/container-core/src/main/java/com/yahoo/osgi/provider/model/ComponentModel.java
index 8c501963db3..5bed6fbca9f 100644
--- a/container-core/src/main/java/com/yahoo/osgi/provider/model/ComponentModel.java
+++ b/container-core/src/main/java/com/yahoo/osgi/provider/model/ComponentModel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.osgi.provider.model;
import com.yahoo.component.ComponentId;
diff --git a/container-core/src/main/java/com/yahoo/osgi/provider/model/package-info.java b/container-core/src/main/java/com/yahoo/osgi/provider/model/package-info.java
index f930f56ae4a..d3d9b7bcd78 100644
--- a/container-core/src/main/java/com/yahoo/osgi/provider/model/package-info.java
+++ b/container-core/src/main/java/com/yahoo/osgi/provider/model/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.osgi.provider.model;
diff --git a/container-core/src/main/java/com/yahoo/processing/IllegalInputException.java b/container-core/src/main/java/com/yahoo/processing/IllegalInputException.java
index 3f1605860ed..dab6cd766b0 100644
--- a/container-core/src/main/java/com/yahoo/processing/IllegalInputException.java
+++ b/container-core/src/main/java/com/yahoo/processing/IllegalInputException.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing;
/**
diff --git a/container-core/src/main/java/com/yahoo/processing/Processor.java b/container-core/src/main/java/com/yahoo/processing/Processor.java
index 359244ff9c9..3283de9b7c4 100644
--- a/container-core/src/main/java/com/yahoo/processing/Processor.java
+++ b/container-core/src/main/java/com/yahoo/processing/Processor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing;
import com.yahoo.component.chain.ChainedComponent;
diff --git a/container-core/src/main/java/com/yahoo/processing/Request.java b/container-core/src/main/java/com/yahoo/processing/Request.java
index d6607f136fb..cff546f1fd4 100644
--- a/container-core/src/main/java/com/yahoo/processing/Request.java
+++ b/container-core/src/main/java/com/yahoo/processing/Request.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing;
import com.yahoo.component.provider.FreezableClass;
diff --git a/container-core/src/main/java/com/yahoo/processing/Response.java b/container-core/src/main/java/com/yahoo/processing/Response.java
index 485513cd0cb..0319a36f2f8 100644
--- a/container-core/src/main/java/com/yahoo/processing/Response.java
+++ b/container-core/src/main/java/com/yahoo/processing/Response.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing;
import com.google.common.util.concurrent.AbstractFuture;
diff --git a/container-core/src/main/java/com/yahoo/processing/execution/AsyncExecution.java b/container-core/src/main/java/com/yahoo/processing/execution/AsyncExecution.java
index 2c40165f8e5..0a112945682 100644
--- a/container-core/src/main/java/com/yahoo/processing/execution/AsyncExecution.java
+++ b/container-core/src/main/java/com/yahoo/processing/execution/AsyncExecution.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.execution;
import com.yahoo.component.chain.Chain;
@@ -100,13 +100,21 @@ public class AsyncExecution {
private static <T> Future<T> getFuture(final Callable<T> callable) {
FutureTask<T> future = new FutureTask<>(callable);
- executorMain.execute(future);
+ try {
+ executorMain.execute(future);
+ } catch (RejectedExecutionException e) {
+ future.run();
+ }
return future;
}
private FutureResponse getFutureResponse(Callable<Response> callable, Request request) {
FutureResponse future = new FutureResponse(callable, execution, request);
- executorMain.execute(future.delegate());
+ try {
+ executorMain.execute(future.delegate());
+ } catch (RejectedExecutionException e) {
+ future.delegate().run();
+ }
return future;
}
diff --git a/container-core/src/main/java/com/yahoo/processing/execution/Execution.java b/container-core/src/main/java/com/yahoo/processing/execution/Execution.java
index 98bc3485084..158ec726722 100644
--- a/container-core/src/main/java/com/yahoo/processing/execution/Execution.java
+++ b/container-core/src/main/java/com/yahoo/processing/execution/Execution.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.execution;
import com.yahoo.collections.Pair;
diff --git a/container-core/src/main/java/com/yahoo/processing/execution/ExecutionWithResponse.java b/container-core/src/main/java/com/yahoo/processing/execution/ExecutionWithResponse.java
index a95771c1202..0b0a3661cf8 100644
--- a/container-core/src/main/java/com/yahoo/processing/execution/ExecutionWithResponse.java
+++ b/container-core/src/main/java/com/yahoo/processing/execution/ExecutionWithResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.execution;
import com.yahoo.component.chain.Chain;
diff --git a/container-core/src/main/java/com/yahoo/processing/execution/ResponseReceiver.java b/container-core/src/main/java/com/yahoo/processing/execution/ResponseReceiver.java
index 053459166e6..831a7787b1f 100644
--- a/container-core/src/main/java/com/yahoo/processing/execution/ResponseReceiver.java
+++ b/container-core/src/main/java/com/yahoo/processing/execution/ResponseReceiver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.execution;
import com.yahoo.processing.Response;
diff --git a/container-core/src/main/java/com/yahoo/processing/execution/RunnableExecution.java b/container-core/src/main/java/com/yahoo/processing/execution/RunnableExecution.java
index e69cb8e48cd..3f4cc495665 100644
--- a/container-core/src/main/java/com/yahoo/processing/execution/RunnableExecution.java
+++ b/container-core/src/main/java/com/yahoo/processing/execution/RunnableExecution.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.execution;
import com.yahoo.processing.Request;
diff --git a/container-core/src/main/java/com/yahoo/processing/execution/chain/ChainRegistry.java b/container-core/src/main/java/com/yahoo/processing/execution/chain/ChainRegistry.java
index dbf31de1b72..6bba8627517 100644
--- a/container-core/src/main/java/com/yahoo/processing/execution/chain/ChainRegistry.java
+++ b/container-core/src/main/java/com/yahoo/processing/execution/chain/ChainRegistry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.execution.chain;
import com.yahoo.component.chain.Chain;
diff --git a/container-core/src/main/java/com/yahoo/processing/execution/chain/package-info.java b/container-core/src/main/java/com/yahoo/processing/execution/chain/package-info.java
index 6d82609bc76..629bdfedfa6 100644
--- a/container-core/src/main/java/com/yahoo/processing/execution/chain/package-info.java
+++ b/container-core/src/main/java/com/yahoo/processing/execution/chain/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi package com.yahoo.processing.execution.chain;
diff --git a/container-core/src/main/java/com/yahoo/processing/execution/package-info.java b/container-core/src/main/java/com/yahoo/processing/execution/package-info.java
index 6430aa32ae3..f1bba1749dd 100644
--- a/container-core/src/main/java/com/yahoo/processing/execution/package-info.java
+++ b/container-core/src/main/java/com/yahoo/processing/execution/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi package com.yahoo.processing.execution;
diff --git a/container-core/src/main/java/com/yahoo/processing/handler/AbstractProcessingHandler.java b/container-core/src/main/java/com/yahoo/processing/handler/AbstractProcessingHandler.java
index a4b2db74300..5119e69f72e 100644
--- a/container-core/src/main/java/com/yahoo/processing/handler/AbstractProcessingHandler.java
+++ b/container-core/src/main/java/com/yahoo/processing/handler/AbstractProcessingHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.handler;
import com.google.inject.Inject;
diff --git a/container-core/src/main/java/com/yahoo/processing/handler/ProcessingHandler.java b/container-core/src/main/java/com/yahoo/processing/handler/ProcessingHandler.java
index d1ccc88d34f..c652c1f8ba4 100644
--- a/container-core/src/main/java/com/yahoo/processing/handler/ProcessingHandler.java
+++ b/container-core/src/main/java/com/yahoo/processing/handler/ProcessingHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.handler;
import com.google.inject.Inject;
diff --git a/container-core/src/main/java/com/yahoo/processing/handler/ProcessingResponse.java b/container-core/src/main/java/com/yahoo/processing/handler/ProcessingResponse.java
index a8ccc28c751..54fbce9e177 100644
--- a/container-core/src/main/java/com/yahoo/processing/handler/ProcessingResponse.java
+++ b/container-core/src/main/java/com/yahoo/processing/handler/ProcessingResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.handler;
import java.io.IOException;
diff --git a/container-core/src/main/java/com/yahoo/processing/handler/ProcessingTestDriver.java b/container-core/src/main/java/com/yahoo/processing/handler/ProcessingTestDriver.java
index 7170f63234e..12a226dd50e 100644
--- a/container-core/src/main/java/com/yahoo/processing/handler/ProcessingTestDriver.java
+++ b/container-core/src/main/java/com/yahoo/processing/handler/ProcessingTestDriver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.handler;
import com.google.common.annotations.Beta;
diff --git a/container-core/src/main/java/com/yahoo/processing/handler/ResponseHeaders.java b/container-core/src/main/java/com/yahoo/processing/handler/ResponseHeaders.java
index 3a21c5a3ec9..69d27fe83b1 100644
--- a/container-core/src/main/java/com/yahoo/processing/handler/ResponseHeaders.java
+++ b/container-core/src/main/java/com/yahoo/processing/handler/ResponseHeaders.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.handler;
import com.google.common.collect.ImmutableMap;
diff --git a/container-core/src/main/java/com/yahoo/processing/handler/ResponseStatus.java b/container-core/src/main/java/com/yahoo/processing/handler/ResponseStatus.java
index be67cbf8fcc..1ba7d6e13b9 100644
--- a/container-core/src/main/java/com/yahoo/processing/handler/ResponseStatus.java
+++ b/container-core/src/main/java/com/yahoo/processing/handler/ResponseStatus.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.handler;
import com.yahoo.processing.Request;
diff --git a/container-core/src/main/java/com/yahoo/processing/handler/package-info.java b/container-core/src/main/java/com/yahoo/processing/handler/package-info.java
index 265bde1236b..2929cedcf23 100644
--- a/container-core/src/main/java/com/yahoo/processing/handler/package-info.java
+++ b/container-core/src/main/java/com/yahoo/processing/handler/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.processing.handler;
diff --git a/container-core/src/main/java/com/yahoo/processing/package-info.java b/container-core/src/main/java/com/yahoo/processing/package-info.java
index b39272d881a..191496dbbcc 100644
--- a/container-core/src/main/java/com/yahoo/processing/package-info.java
+++ b/container-core/src/main/java/com/yahoo/processing/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Java library for request-response data processing.
*
diff --git a/container-core/src/main/java/com/yahoo/processing/processors/RequestPropertyTracer.java b/container-core/src/main/java/com/yahoo/processing/processors/RequestPropertyTracer.java
index a42b027b795..48930f9eea4 100644
--- a/container-core/src/main/java/com/yahoo/processing/processors/RequestPropertyTracer.java
+++ b/container-core/src/main/java/com/yahoo/processing/processors/RequestPropertyTracer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.processors;
import com.yahoo.processing.Processor;
diff --git a/container-core/src/main/java/com/yahoo/processing/rendering/AsynchronousRenderer.java b/container-core/src/main/java/com/yahoo/processing/rendering/AsynchronousRenderer.java
index eb39c4c8117..bdca8110309 100644
--- a/container-core/src/main/java/com/yahoo/processing/rendering/AsynchronousRenderer.java
+++ b/container-core/src/main/java/com/yahoo/processing/rendering/AsynchronousRenderer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.rendering;
import com.yahoo.jdisc.handler.CompletionHandler;
diff --git a/container-core/src/main/java/com/yahoo/processing/rendering/AsynchronousSectionedRenderer.java b/container-core/src/main/java/com/yahoo/processing/rendering/AsynchronousSectionedRenderer.java
index f86cad7c619..b77d493ea30 100644
--- a/container-core/src/main/java/com/yahoo/processing/rendering/AsynchronousSectionedRenderer.java
+++ b/container-core/src/main/java/com/yahoo/processing/rendering/AsynchronousSectionedRenderer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.rendering;
import com.google.common.util.concurrent.ListenableFuture;
diff --git a/container-core/src/main/java/com/yahoo/processing/rendering/ProcessingRenderer.java b/container-core/src/main/java/com/yahoo/processing/rendering/ProcessingRenderer.java
index 052c1c3f7f5..d6cf50aa563 100644
--- a/container-core/src/main/java/com/yahoo/processing/rendering/ProcessingRenderer.java
+++ b/container-core/src/main/java/com/yahoo/processing/rendering/ProcessingRenderer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.rendering;
import com.yahoo.processing.Request;
diff --git a/container-core/src/main/java/com/yahoo/processing/rendering/Renderer.java b/container-core/src/main/java/com/yahoo/processing/rendering/Renderer.java
index a7fa557f71a..14ec3002b0a 100644
--- a/container-core/src/main/java/com/yahoo/processing/rendering/Renderer.java
+++ b/container-core/src/main/java/com/yahoo/processing/rendering/Renderer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.rendering;
import com.google.common.util.concurrent.ListenableFuture;
diff --git a/container-core/src/main/java/com/yahoo/processing/rendering/package-info.java b/container-core/src/main/java/com/yahoo/processing/rendering/package-info.java
index d5eab7a5022..68ada97bc3f 100644
--- a/container-core/src/main/java/com/yahoo/processing/rendering/package-info.java
+++ b/container-core/src/main/java/com/yahoo/processing/rendering/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.processing.rendering;
diff --git a/container-core/src/main/java/com/yahoo/processing/request/CloneHelper.java b/container-core/src/main/java/com/yahoo/processing/request/CloneHelper.java
index 837ff3db295..8a6a4f30e18 100644
--- a/container-core/src/main/java/com/yahoo/processing/request/CloneHelper.java
+++ b/container-core/src/main/java/com/yahoo/processing/request/CloneHelper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.request;
import com.yahoo.collections.MethodCache;
diff --git a/container-core/src/main/java/com/yahoo/processing/request/CompoundName.java b/container-core/src/main/java/com/yahoo/processing/request/CompoundName.java
index 432c7473c2b..f0a11626236 100644
--- a/container-core/src/main/java/com/yahoo/processing/request/CompoundName.java
+++ b/container-core/src/main/java/com/yahoo/processing/request/CompoundName.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.request;
import com.google.common.collect.ImmutableList;
diff --git a/container-core/src/main/java/com/yahoo/processing/request/ErrorMessage.java b/container-core/src/main/java/com/yahoo/processing/request/ErrorMessage.java
index 0ced664bfdc..a83529ffc42 100644
--- a/container-core/src/main/java/com/yahoo/processing/request/ErrorMessage.java
+++ b/container-core/src/main/java/com/yahoo/processing/request/ErrorMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.request;
/**
diff --git a/container-core/src/main/java/com/yahoo/processing/request/Properties.java b/container-core/src/main/java/com/yahoo/processing/request/Properties.java
index 9362de59203..cc53442f4d3 100644
--- a/container-core/src/main/java/com/yahoo/processing/request/Properties.java
+++ b/container-core/src/main/java/com/yahoo/processing/request/Properties.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.request;
import java.util.Map;
diff --git a/container-core/src/main/java/com/yahoo/processing/request/package-info.java b/container-core/src/main/java/com/yahoo/processing/request/package-info.java
index 96e82294075..0d1bfe5dc44 100644
--- a/container-core/src/main/java/com/yahoo/processing/request/package-info.java
+++ b/container-core/src/main/java/com/yahoo/processing/request/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi package com.yahoo.processing.request;
diff --git a/container-core/src/main/java/com/yahoo/processing/request/properties/PropertyMap.java b/container-core/src/main/java/com/yahoo/processing/request/properties/PropertyMap.java
index 54e5aae42cc..f149c177b47 100644
--- a/container-core/src/main/java/com/yahoo/processing/request/properties/PropertyMap.java
+++ b/container-core/src/main/java/com/yahoo/processing/request/properties/PropertyMap.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.request.properties;
import com.yahoo.processing.request.CompoundName;
diff --git a/container-core/src/main/java/com/yahoo/processing/request/properties/PublicCloneable.java b/container-core/src/main/java/com/yahoo/processing/request/properties/PublicCloneable.java
index 785c3f08fa8..4c8beea6a5d 100644
--- a/container-core/src/main/java/com/yahoo/processing/request/properties/PublicCloneable.java
+++ b/container-core/src/main/java/com/yahoo/processing/request/properties/PublicCloneable.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.request.properties;
/**
diff --git a/container-core/src/main/java/com/yahoo/processing/request/properties/package-info.java b/container-core/src/main/java/com/yahoo/processing/request/properties/package-info.java
index bc0feb08411..9f202f4b379 100644
--- a/container-core/src/main/java/com/yahoo/processing/request/properties/package-info.java
+++ b/container-core/src/main/java/com/yahoo/processing/request/properties/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi package com.yahoo.processing.request.properties;
diff --git a/container-core/src/main/java/com/yahoo/processing/response/AbstractData.java b/container-core/src/main/java/com/yahoo/processing/response/AbstractData.java
index 341c6c800a5..974345628c9 100644
--- a/container-core/src/main/java/com/yahoo/processing/response/AbstractData.java
+++ b/container-core/src/main/java/com/yahoo/processing/response/AbstractData.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.response;
import com.yahoo.component.provider.ListenableFreezableClass;
diff --git a/container-core/src/main/java/com/yahoo/processing/response/AbstractDataList.java b/container-core/src/main/java/com/yahoo/processing/response/AbstractDataList.java
index 150d1e25d0a..4633ac5ec1c 100644
--- a/container-core/src/main/java/com/yahoo/processing/response/AbstractDataList.java
+++ b/container-core/src/main/java/com/yahoo/processing/response/AbstractDataList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.response;
import com.google.common.util.concurrent.AbstractFuture;
diff --git a/container-core/src/main/java/com/yahoo/processing/response/ArrayDataList.java b/container-core/src/main/java/com/yahoo/processing/response/ArrayDataList.java
index 8987b8998af..001fb303ea9 100644
--- a/container-core/src/main/java/com/yahoo/processing/response/ArrayDataList.java
+++ b/container-core/src/main/java/com/yahoo/processing/response/ArrayDataList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.response;
import com.yahoo.collections.FreezableArrayList;
diff --git a/container-core/src/main/java/com/yahoo/processing/response/Data.java b/container-core/src/main/java/com/yahoo/processing/response/Data.java
index ff48f1e86b6..babd4ff45c0 100644
--- a/container-core/src/main/java/com/yahoo/processing/response/Data.java
+++ b/container-core/src/main/java/com/yahoo/processing/response/Data.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.response;
import com.yahoo.component.provider.ListenableFreezable;
diff --git a/container-core/src/main/java/com/yahoo/processing/response/DataList.java b/container-core/src/main/java/com/yahoo/processing/response/DataList.java
index ff67dd82aa7..d566e201375 100644
--- a/container-core/src/main/java/com/yahoo/processing/response/DataList.java
+++ b/container-core/src/main/java/com/yahoo/processing/response/DataList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.response;
import com.google.common.util.concurrent.ExecutionList;
diff --git a/container-core/src/main/java/com/yahoo/processing/response/DefaultIncomingData.java b/container-core/src/main/java/com/yahoo/processing/response/DefaultIncomingData.java
index c436f92f78b..619e554f45c 100644
--- a/container-core/src/main/java/com/yahoo/processing/response/DefaultIncomingData.java
+++ b/container-core/src/main/java/com/yahoo/processing/response/DefaultIncomingData.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.response;
import com.google.common.util.concurrent.ListenableFuture;
diff --git a/container-core/src/main/java/com/yahoo/processing/response/FutureResponse.java b/container-core/src/main/java/com/yahoo/processing/response/FutureResponse.java
index 21877dfc8c3..d589b7dd195 100644
--- a/container-core/src/main/java/com/yahoo/processing/response/FutureResponse.java
+++ b/container-core/src/main/java/com/yahoo/processing/response/FutureResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.response;
import com.google.common.util.concurrent.ForwardingFuture;
diff --git a/container-core/src/main/java/com/yahoo/processing/response/IncomingData.java b/container-core/src/main/java/com/yahoo/processing/response/IncomingData.java
index b8cdf8683bc..371c1bca45f 100644
--- a/container-core/src/main/java/com/yahoo/processing/response/IncomingData.java
+++ b/container-core/src/main/java/com/yahoo/processing/response/IncomingData.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.response;
import com.google.common.util.concurrent.AbstractFuture;
diff --git a/container-core/src/main/java/com/yahoo/processing/response/Ordered.java b/container-core/src/main/java/com/yahoo/processing/response/Ordered.java
index dc969f7acef..bcf110bfb67 100644
--- a/container-core/src/main/java/com/yahoo/processing/response/Ordered.java
+++ b/container-core/src/main/java/com/yahoo/processing/response/Ordered.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.response;
/**
diff --git a/container-core/src/main/java/com/yahoo/processing/response/Streamed.java b/container-core/src/main/java/com/yahoo/processing/response/Streamed.java
index 2aae03104be..114e8e1414c 100644
--- a/container-core/src/main/java/com/yahoo/processing/response/Streamed.java
+++ b/container-core/src/main/java/com/yahoo/processing/response/Streamed.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.response;
/**
diff --git a/container-core/src/main/java/com/yahoo/processing/response/package-info.java b/container-core/src/main/java/com/yahoo/processing/response/package-info.java
index 204b0e04393..3904ccb0bae 100644
--- a/container-core/src/main/java/com/yahoo/processing/response/package-info.java
+++ b/container-core/src/main/java/com/yahoo/processing/response/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi package com.yahoo.processing.response;
diff --git a/container-core/src/main/java/com/yahoo/processing/test/ProcessorLibrary.java b/container-core/src/main/java/com/yahoo/processing/test/ProcessorLibrary.java
index fc8904bee7f..aebbc3f538d 100644
--- a/container-core/src/main/java/com/yahoo/processing/test/ProcessorLibrary.java
+++ b/container-core/src/main/java/com/yahoo/processing/test/ProcessorLibrary.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.test;
import com.google.common.util.concurrent.MoreExecutors;
diff --git a/container-core/src/main/java/com/yahoo/processing/test/Responses.java b/container-core/src/main/java/com/yahoo/processing/test/Responses.java
index cabce8fc109..0d54a728945 100644
--- a/container-core/src/main/java/com/yahoo/processing/test/Responses.java
+++ b/container-core/src/main/java/com/yahoo/processing/test/Responses.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.test;
import com.yahoo.processing.response.Data;
diff --git a/container-core/src/main/java/com/yahoo/restapi/ByteArrayResponse.java b/container-core/src/main/java/com/yahoo/restapi/ByteArrayResponse.java
new file mode 100644
index 00000000000..1299a2c6eb4
--- /dev/null
+++ b/container-core/src/main/java/com/yahoo/restapi/ByteArrayResponse.java
@@ -0,0 +1,26 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.restapi;
+
+import com.yahoo.container.jdisc.HttpResponse;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+/**
+ * @author freva
+ */
+public class ByteArrayResponse extends HttpResponse {
+
+ private final byte[] data;
+
+ public ByteArrayResponse(byte[] data) {
+ super(200);
+ this.data = data;
+ }
+
+ @Override
+ public void render(OutputStream stream) throws IOException {
+ stream.write(data);
+ }
+
+}
diff --git a/container-core/src/main/java/com/yahoo/restapi/ErrorResponse.java b/container-core/src/main/java/com/yahoo/restapi/ErrorResponse.java
index 1885a0c970c..daadbfc60ce 100644
--- a/container-core/src/main/java/com/yahoo/restapi/ErrorResponse.java
+++ b/container-core/src/main/java/com/yahoo/restapi/ErrorResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.restapi;
import com.yahoo.slime.Cursor;
diff --git a/container-core/src/main/java/com/yahoo/restapi/JacksonJsonMapper.java b/container-core/src/main/java/com/yahoo/restapi/JacksonJsonMapper.java
index 5a5a990737c..6ed9bead0ba 100644
--- a/container-core/src/main/java/com/yahoo/restapi/JacksonJsonMapper.java
+++ b/container-core/src/main/java/com/yahoo/restapi/JacksonJsonMapper.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.restapi;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/container-core/src/main/java/com/yahoo/restapi/MessageResponse.java b/container-core/src/main/java/com/yahoo/restapi/MessageResponse.java
index 43ca0dab29e..289ec8f7622 100644
--- a/container-core/src/main/java/com/yahoo/restapi/MessageResponse.java
+++ b/container-core/src/main/java/com/yahoo/restapi/MessageResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.restapi;
import com.yahoo.slime.Slime;
diff --git a/container-core/src/main/java/com/yahoo/restapi/Path.java b/container-core/src/main/java/com/yahoo/restapi/Path.java
index 9fc924adbe2..45312f8ec15 100644
--- a/container-core/src/main/java/com/yahoo/restapi/Path.java
+++ b/container-core/src/main/java/com/yahoo/restapi/Path.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.restapi;
import java.net.URI;
diff --git a/container-core/src/main/java/com/yahoo/restapi/RedirectResponse.java b/container-core/src/main/java/com/yahoo/restapi/RedirectResponse.java
index 23c6a238f95..b85023ab3e2 100644
--- a/container-core/src/main/java/com/yahoo/restapi/RedirectResponse.java
+++ b/container-core/src/main/java/com/yahoo/restapi/RedirectResponse.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.restapi;
import com.yahoo.jdisc.Response;
diff --git a/container-core/src/main/java/com/yahoo/restapi/RestApi.java b/container-core/src/main/java/com/yahoo/restapi/RestApi.java
index 6f5bf298de3..d6cc0cccf3f 100644
--- a/container-core/src/main/java/com/yahoo/restapi/RestApi.java
+++ b/container-core/src/main/java/com/yahoo/restapi/RestApi.java
@@ -1,11 +1,14 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.restapi;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.yahoo.container.jdisc.AclMapping;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
+import com.yahoo.container.jdisc.RequestHandlerSpec;
import java.io.InputStream;
+import java.security.Principal;
import java.util.List;
import java.util.Optional;
import java.util.OptionalDouble;
@@ -20,38 +23,78 @@ public interface RestApi {
static Builder builder() { return new RestApiImpl.BuilderImpl(); }
static RouteBuilder route(String pathPattern) { return new RestApiImpl.RouteBuilderImpl(pathPattern); }
+ static HandlerConfigBuilder handlerConfig() { return new RestApiImpl.HandlerConfigBuilderImpl(); }
HttpResponse handleRequest(HttpRequest request);
ObjectMapper jacksonJsonMapper();
+ /** @see com.yahoo.container.jdisc.HttpRequestHandler#requestHandlerSpec() */
+ RequestHandlerSpec requestHandlerSpec();
+
interface Builder {
Builder setObjectMapper(ObjectMapper mapper);
Builder setDefaultRoute(RouteBuilder route);
Builder addRoute(RouteBuilder route);
Builder addFilter(Filter filter);
+ /** see {@link RestApiMappers#DEFAULT_EXCEPTION_MAPPERS} for default mappers */
<EXCEPTION extends RuntimeException> Builder addExceptionMapper(Class<EXCEPTION> type, ExceptionMapper<EXCEPTION> mapper);
+ /** see {@link RestApiMappers#DEFAULT_RESPONSE_MAPPERS} for default mappers */
<RESPONSE_ENTITY> Builder addResponseMapper(Class<RESPONSE_ENTITY> type, ResponseMapper<RESPONSE_ENTITY> mapper);
+ /** see {@link RestApiMappers#DEFAULT_REQUEST_MAPPERS} for default mappers */
<REQUEST_ENTITY> Builder addRequestMapper(Class<REQUEST_ENTITY> type, RequestMapper<REQUEST_ENTITY> mapper);
<RESPONSE_ENTITY> Builder registerJacksonResponseEntity(Class<RESPONSE_ENTITY> type);
<REQUEST_ENTITY> Builder registerJacksonRequestEntity(Class<REQUEST_ENTITY> type);
+ /** Disables mappers listed in {@link RestApiMappers#DEFAULT_EXCEPTION_MAPPERS} */
Builder disableDefaultExceptionMappers();
+ /** Disables mappers listed in {@link RestApiMappers#DEFAULT_RESPONSE_MAPPERS} */
Builder disableDefaultResponseMappers();
+ Builder disableDefaultAclMapping();
RestApi build();
}
interface RouteBuilder {
RouteBuilder name(String name);
+ RouteBuilder addFilter(Filter filter);
+
+ // GET
RouteBuilder get(Handler<?> handler);
+ RouteBuilder get(Handler<?> handler, HandlerConfigBuilder config);
+
+ // POST
RouteBuilder post(Handler<?> handler);
- <REQUEST_ENTITY> RouteBuilder post(Class<REQUEST_ENTITY> type, HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler);
+ <REQUEST_ENTITY> RouteBuilder post(
+ Class<REQUEST_ENTITY> type, HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler);
+ RouteBuilder post(Handler<?> handler, HandlerConfigBuilder config);
+ <REQUEST_ENTITY> RouteBuilder post(
+ Class<REQUEST_ENTITY> type, HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler, HandlerConfigBuilder config);
+
+ // PUT
RouteBuilder put(Handler<?> handler);
- <REQUEST_ENTITY> RouteBuilder put(Class<REQUEST_ENTITY> type, HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler);
+ <REQUEST_ENTITY> RouteBuilder put(
+ Class<REQUEST_ENTITY> type, HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler);
+ RouteBuilder put(Handler<?> handler, HandlerConfigBuilder config);
+ <REQUEST_ENTITY> RouteBuilder put(
+ Class<REQUEST_ENTITY> type, HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler, HandlerConfigBuilder config);
+
+ // DELETE
RouteBuilder delete(Handler<?> handler);
+ RouteBuilder delete(Handler<?> handler, HandlerConfigBuilder config);
+
+ // PATCH
RouteBuilder patch(Handler<?> handler);
- <REQUEST_ENTITY> RouteBuilder patch(Class<REQUEST_ENTITY> type, HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler);
+ <REQUEST_ENTITY> RouteBuilder patch(
+ Class<REQUEST_ENTITY> type, HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler);
+ RouteBuilder patch(Handler<?> handler, HandlerConfigBuilder config);
+ <REQUEST_ENTITY> RouteBuilder patch(
+ Class<REQUEST_ENTITY> type, HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler, HandlerConfigBuilder config);
+
+ // Default
RouteBuilder defaultHandler(Handler<?> handler);
- <REQUEST_ENTITY> RouteBuilder defaultHandler(Class<REQUEST_ENTITY> type, HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler);
- RouteBuilder addFilter(Filter filter);
+ RouteBuilder defaultHandler(Handler<?> handler, HandlerConfigBuilder config);
+ <REQUEST_ENTITY> RouteBuilder defaultHandler(
+ Class<REQUEST_ENTITY> type, HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler);
+ <REQUEST_ENTITY> RouteBuilder defaultHandler(
+ Class<REQUEST_ENTITY> type, HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler, HandlerConfigBuilder config);
}
@FunctionalInterface interface Handler<RESPONSE_ENTITY> {
@@ -70,6 +113,12 @@ public interface RestApi {
@FunctionalInterface interface Filter { HttpResponse filterRequest(FilterContext context); }
+ interface HandlerConfigBuilder {
+ HandlerConfigBuilder withReadAclAction();
+ HandlerConfigBuilder withWriteAclAction();
+ HandlerConfigBuilder withCustomAclAction(AclMapping.Action action);
+ }
+
interface RequestContext {
HttpRequest request();
PathParameters pathParameters();
@@ -79,7 +128,15 @@ public interface RestApi {
Optional<RequestContent> requestContent();
RequestContent requestContentOrThrow();
ObjectMapper jacksonJsonMapper();
+ /**
+ * Creates a URI builder pre-initialized with scheme, host and port.
+ * Intended for response generation (e.g for interactive REST APIs).
+ * DO NOT USE FOR CUSTOM ROUTING.
+ */
UriBuilder uriBuilder();
+ AclMapping.Action aclAction();
+ Optional<Principal> userPrincipal();
+ Principal userPrincipalOrThrow();
interface Parameters {
Optional<String> getString(String name);
diff --git a/container-core/src/main/java/com/yahoo/restapi/RestApiException.java b/container-core/src/main/java/com/yahoo/restapi/RestApiException.java
index 68e46a3a9b8..8d5f9b15a5e 100644
--- a/container-core/src/main/java/com/yahoo/restapi/RestApiException.java
+++ b/container-core/src/main/java/com/yahoo/restapi/RestApiException.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.restapi;
import com.yahoo.container.jdisc.HttpRequest;
@@ -78,4 +78,10 @@ public class RestApiException extends RuntimeException {
public Conflict(String message) { this(message, null); }
public Conflict(String message, Throwable cause) { super(ErrorResponse::conflict, message, cause); }
}
+
+ public static class Unauthorized extends RestApiException {
+ public Unauthorized() { this("Unauthorized", null); }
+ public Unauthorized(String message) { this(message, null); }
+ public Unauthorized(String message, Throwable cause) { super(ErrorResponse::unauthorized, message, cause); }
+ }
}
diff --git a/container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java b/container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java
index d63add5ed1d..09de7ffa133 100644
--- a/container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java
+++ b/container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java
@@ -1,20 +1,21 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.restapi;
-import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.yahoo.container.jdisc.AclMapping;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
+import com.yahoo.container.jdisc.RequestHandlerSpec;
+import com.yahoo.container.jdisc.RequestView;
import com.yahoo.jdisc.http.HttpRequest.Method;
-import com.yahoo.slime.Slime;
-import com.yahoo.slime.SlimeUtils;
-import com.yahoo.yolean.Exceptions;
+import com.yahoo.restapi.RestApiMappers.ExceptionMapperHolder;
+import com.yahoo.restapi.RestApiMappers.RequestMapperHolder;
+import com.yahoo.restapi.RestApiMappers.ResponseMapperHolder;
-import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
+import java.security.Principal;
import java.util.ArrayList;
-import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.ListIterator;
@@ -23,8 +24,6 @@ import java.util.Optional;
import java.util.logging.Level;
import java.util.logging.Logger;
-import static java.nio.charset.StandardCharsets.UTF_8;
-
/**
* @author bjorncs
*/
@@ -39,6 +38,7 @@ class RestApiImpl implements RestApi {
private final List<RequestMapperHolder<?>> requestMappers;
private final List<Filter> filters;
private final ObjectMapper jacksonJsonMapper;
+ private final boolean disableDefaultAclMapping;
private RestApiImpl(RestApi.Builder builder) {
BuilderImpl builderImpl = (BuilderImpl) builder;
@@ -48,18 +48,19 @@ class RestApiImpl implements RestApi {
this.exceptionMappers = combineWithDefaultExceptionMappers(
builderImpl.exceptionMappers, Boolean.TRUE.equals(builderImpl.disableDefaultExceptionMappers));
this.responseMappers = combineWithDefaultResponseMappers(
- builderImpl.responseMappers, jacksonJsonMapper, Boolean.TRUE.equals(builderImpl.disableDefaultResponseMappers));
- this.requestMappers = combineWithDefaultRequestMappers(
- builderImpl.requestMappers, jacksonJsonMapper);
+ builderImpl.responseMappers, Boolean.TRUE.equals(builderImpl.disableDefaultResponseMappers));
+ this.requestMappers = combineWithDefaultRequestMappers(builderImpl.requestMappers);
this.filters = List.copyOf(builderImpl.filters);
this.jacksonJsonMapper = jacksonJsonMapper;
+ this.disableDefaultAclMapping = Boolean.TRUE.equals(builderImpl.disableDefaultAclMapping);
}
@Override
public HttpResponse handleRequest(HttpRequest request) {
Path pathMatcher = new Path(request.getUri());
Route resolvedRoute = resolveRoute(pathMatcher);
- RequestContextImpl requestContext = new RequestContextImpl(request, pathMatcher, jacksonJsonMapper);
+ AclMapping.Action aclAction = getAclMapping(request.getMethod(), request.getUri());
+ RequestContextImpl requestContext = new RequestContextImpl(request, pathMatcher, aclAction, jacksonJsonMapper);
FilterContextImpl filterContext =
createFilterContextRecursive(
resolvedRoute, requestContext, filters,
@@ -73,8 +74,33 @@ class RestApiImpl implements RestApi {
@Override public ObjectMapper jacksonJsonMapper() { return jacksonJsonMapper; }
+ @Override
+ public RequestHandlerSpec requestHandlerSpec() {
+ return RequestHandlerSpec.builder()
+ .withAclMapping(requestView -> getAclMapping(requestView.method(), requestView.uri()))
+ .build();
+ }
+
+ private AclMapping.Action getAclMapping(Method method, URI uri) {
+ Path pathMatcher = new Path(uri);
+ Route route = resolveRoute(pathMatcher);
+ HandlerHolder<?> handler = resolveHandler(method, route);
+ AclMapping.Action aclAction = handler.config.aclAction;
+ if (aclAction != null) return aclAction;
+ if (!disableDefaultAclMapping) {
+ // Fallback to default request handler spec which is used by the default implementation of
+ // HttpRequestHandler.requestHandlerSpec().
+ return RequestHandlerSpec.DEFAULT_INSTANCE.aclMapping().get(
+ new RequestView() {
+ @Override public Method method() { return method; }
+ @Override public URI uri() { return uri; }
+ });
+ }
+ throw new IllegalStateException(String.format("No ACL mapping configured for '%s' to '%s'", method, route.name));
+ }
+
private HttpResponse dispatchToRoute(Route route, RequestContextImpl context) {
- HandlerHolder<?> resolvedHandler = resolveHandler(context, route);
+ HandlerHolder<?> resolvedHandler = resolveHandler(context.request.getMethod(), route);
RequestMapperHolder<?> resolvedRequestMapper = resolveRequestMapper(resolvedHandler);
Object requestEntity;
try {
@@ -97,8 +123,8 @@ class RestApiImpl implements RestApi {
}
}
- private HandlerHolder<?> resolveHandler(RequestContextImpl context, Route route) {
- HandlerHolder<?> resolvedHandler = route.handlerPerMethod.get(context.request().getMethod());
+ private HandlerHolder<?> resolveHandler(Method method, Route route) {
+ HandlerHolder<?> resolvedHandler = route.handlerPerMethod.get(method);
return resolvedHandler == null ? route.defaultHandler : resolvedHandler;
}
@@ -154,7 +180,7 @@ class RestApiImpl implements RestApi {
List<ExceptionMapperHolder<?>> configuredExceptionMappers, boolean disableDefaultMappers) {
List<ExceptionMapperHolder<?>> exceptionMappers = new ArrayList<>(configuredExceptionMappers);
if (!disableDefaultMappers){
- exceptionMappers.add(new ExceptionMapperHolder<>(RestApiException.class, (context, exception) -> exception.response()));
+ exceptionMappers.addAll(RestApiMappers.DEFAULT_EXCEPTION_MAPPERS);
}
// Topologically sort children before superclasses, so most the specific match is found by iterating through mappers in order.
exceptionMappers.sort((a, b) -> (a.type.isAssignableFrom(b.type) ? 1 : 0) + (b.type.isAssignableFrom(a.type) ? -1 : 0));
@@ -162,71 +188,21 @@ class RestApiImpl implements RestApi {
}
private static List<ResponseMapperHolder<?>> combineWithDefaultResponseMappers(
- List<ResponseMapperHolder<?>> configuredResponseMappers, ObjectMapper jacksonJsonMapper, boolean disableDefaultMappers) {
+ List<ResponseMapperHolder<?>> configuredResponseMappers, boolean disableDefaultMappers) {
List<ResponseMapperHolder<?>> responseMappers = new ArrayList<>(configuredResponseMappers);
if (!disableDefaultMappers) {
- responseMappers.add(new ResponseMapperHolder<>(HttpResponse.class, (context, entity) -> entity));
- responseMappers.add(new ResponseMapperHolder<>(String.class, (context, entity) -> new MessageResponse(entity)));
- responseMappers.add(new ResponseMapperHolder<>(Slime.class, (context, entity) -> new SlimeJsonResponse(entity)));
- responseMappers.add(new ResponseMapperHolder<>(JsonNode.class, (context, entity) -> new JacksonJsonResponse<>(200, entity, jacksonJsonMapper, true)));
+ responseMappers.addAll(RestApiMappers.DEFAULT_RESPONSE_MAPPERS);
}
return responseMappers;
}
private static List<RequestMapperHolder<?>> combineWithDefaultRequestMappers(
- List<RequestMapperHolder<?>> configuredRequestMappers, ObjectMapper jacksonJsonMapper) {
+ List<RequestMapperHolder<?>> configuredRequestMappers) {
List<RequestMapperHolder<?>> requestMappers = new ArrayList<>(configuredRequestMappers);
- requestMappers.add(new RequestMapperHolder<>(Slime.class, RestApiImpl::toSlime));
- requestMappers.add(new RequestMapperHolder<>(JsonNode.class, ctx -> toJsonNode(ctx, jacksonJsonMapper)));
- requestMappers.add(new RequestMapperHolder<>(String.class, RestApiImpl::toString));
- requestMappers.add(new RequestMapperHolder<>(byte[].class, RestApiImpl::toByteArray));
- requestMappers.add(new RequestMapperHolder<>(InputStream.class, RestApiImpl::toInputStream));
- requestMappers.add(new RequestMapperHolder<>(Void.class, ctx -> Optional.empty()));
+ requestMappers.addAll(RestApiMappers.DEFAULT_REQUEST_MAPPERS);
return requestMappers;
}
- private static Optional<InputStream> toInputStream(RequestContext context) {
- return context.requestContent().map(RequestContext.RequestContent::content);
- }
-
- private static Optional<byte[]> toByteArray(RequestContext context) {
- InputStream in = toInputStream(context).orElse(null);
- if (in == null) return Optional.empty();
- return convertIoException(() -> Optional.of(in.readAllBytes()));
- }
-
- private static Optional<String> toString(RequestContext context) {
- try {
- return toByteArray(context).map(bytes -> new String(bytes, UTF_8));
- } catch (RuntimeException e) {
- throw new RestApiException.BadRequest("Failed parse request content as UTF-8: " + Exceptions.toMessageString(e), e);
- }
- }
-
- private static Optional<JsonNode> toJsonNode(RequestContext context, ObjectMapper jacksonJsonMapper) {
- if (log.isLoggable(Level.FINE)) {
- return toString(context).map(string -> {
- log.fine(() -> "Request content: " + string);
- return convertIoException("Failed to parse JSON", () -> jacksonJsonMapper.readTree(string));
- });
- } else {
- return toInputStream(context)
- .map(in -> convertIoException("Invalid JSON", () -> jacksonJsonMapper.readTree(in)));
- }
- }
-
- private static Optional<Slime> toSlime(RequestContext context) {
- try {
- return toString(context).map(string -> {
- log.fine(() -> "Request content: " + string);
- return SlimeUtils.jsonToSlimeOrThrow(string);
- });
- } catch (com.yahoo.slime.JsonParseException e) {
- log.log(Level.FINE, e.getMessage(), e);
- throw new RestApiException.BadRequest("Invalid JSON: " + Exceptions.toMessageString(e), e);
- }
- }
-
static class BuilderImpl implements RestApi.Builder {
private final List<Route> routes = new ArrayList<>();
private final List<ExceptionMapperHolder<?>> exceptionMappers = new ArrayList<>();
@@ -237,6 +213,7 @@ class RestApiImpl implements RestApi {
private ObjectMapper jacksonJsonMapper;
private Boolean disableDefaultExceptionMappers;
private Boolean disableDefaultResponseMappers;
+ private Boolean disableDefaultAclMapping;
@Override public RestApi.Builder setObjectMapper(ObjectMapper mapper) { this.jacksonJsonMapper = mapper; return this; }
@Override public RestApi.Builder setDefaultRoute(RestApi.RouteBuilder route) { this.defaultRoute = ((RouteBuilderImpl)route).build(); return this; }
@@ -256,20 +233,21 @@ class RestApiImpl implements RestApi {
}
@Override public <ENTITY> Builder registerJacksonResponseEntity(Class<ENTITY> type) {
- addResponseMapper(type, new JacksonResponseMapper<>()); return this;
+ addResponseMapper(type, new RestApiMappers.JacksonResponseMapper<>()); return this;
}
@Override public <ENTITY> Builder registerJacksonRequestEntity(Class<ENTITY> type) {
- addRequestMapper(type, new JacksonRequestMapper<>(type)); return this;
+ addRequestMapper(type, new RestApiMappers.JacksonRequestMapper<>(type)); return this;
}
@Override public Builder disableDefaultExceptionMappers() { this.disableDefaultExceptionMappers = true; return this; }
@Override public Builder disableDefaultResponseMappers() { this.disableDefaultResponseMappers = true; return this; }
+ @Override public Builder disableDefaultAclMapping() { this.disableDefaultAclMapping = true; return this; }
@Override public RestApi build() { return new RestApiImpl(this); }
}
- public static class RouteBuilderImpl implements RestApi.RouteBuilder {
+ static class RouteBuilderImpl implements RestApi.RouteBuilder {
private final String pathPattern;
private String name;
private final Map<Method, HandlerHolder<?>> handlerPerMethod = new HashMap<>();
@@ -279,50 +257,118 @@ class RestApiImpl implements RestApi {
RouteBuilderImpl(String pathPattern) { this.pathPattern = pathPattern; }
@Override public RestApi.RouteBuilder name(String name) { this.name = name; return this; }
- @Override public RestApi.RouteBuilder get(Handler<?> handler) {
- return addHandler(Method.GET, handler);
+ @Override public RestApi.RouteBuilder addFilter(RestApi.Filter filter) { filters.add(filter); return this; }
+
+ // GET
+ @Override public RouteBuilder get(Handler<?> handler) { return get(handler, null); }
+ @Override public RouteBuilder get(Handler<?> handler, HandlerConfigBuilder config) {
+ return addHandler(Method.GET, handler, config);
}
- @Override public RestApi.RouteBuilder post(Handler<?> handler) {
- return addHandler(Method.POST, handler);
+
+ // POST
+ @Override public RouteBuilder post(Handler<?> handler) { return post(handler, null); }
+ @Override public <REQUEST_ENTITY> RouteBuilder post(
+ Class<REQUEST_ENTITY> type, HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler) {
+ return post(type, handler, null);
}
- @Override public <ENTITY> RouteBuilder post(Class<ENTITY> type, HandlerWithRequestEntity<ENTITY, ?> handler) {
- return addHandler(Method.POST, type, handler);
+ @Override public RouteBuilder post(Handler<?> handler, HandlerConfigBuilder config) {
+ return addHandler(Method.POST, handler, config);
}
- @Override public RestApi.RouteBuilder put(Handler<?> handler) {
- return addHandler(Method.PUT, handler);
+ @Override public <REQUEST_ENTITY> RouteBuilder post(
+ Class<REQUEST_ENTITY> type, HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler, HandlerConfigBuilder config) {
+ return addHandler(Method.POST, type, handler, config);
}
- @Override public <ENTITY> RouteBuilder put(Class<ENTITY> type, HandlerWithRequestEntity<ENTITY, ?> handler) {
- return addHandler(Method.PUT, type, handler);
+
+ // PUT
+ @Override public RouteBuilder put(Handler<?> handler) { return put(handler, null); }
+ @Override public <REQUEST_ENTITY> RouteBuilder put(
+ Class<REQUEST_ENTITY> type, HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler) {
+ return put(type, handler, null);
}
- @Override public RestApi.RouteBuilder delete(Handler<?> handler) {
- return addHandler(Method.DELETE, handler);
+ @Override public RouteBuilder put(Handler<?> handler, HandlerConfigBuilder config) {
+ return addHandler(Method.PUT, handler, null);
}
- @Override public RestApi.RouteBuilder patch(Handler<?> handler) {
- return addHandler(Method.PATCH, handler);
+ @Override public <REQUEST_ENTITY> RouteBuilder put(
+ Class<REQUEST_ENTITY> type, HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler, HandlerConfigBuilder config) {
+ return addHandler(Method.PUT, type, handler, config);
}
- @Override public <ENTITY> RouteBuilder patch(Class<ENTITY> type, HandlerWithRequestEntity<ENTITY, ?> handler) {
- return addHandler(Method.PATCH, type, handler);
+
+ // DELETE
+ @Override public RouteBuilder delete(Handler<?> handler) { return delete(handler, null); }
+ @Override public RouteBuilder delete(Handler<?> handler, HandlerConfigBuilder config) {
+ return addHandler(Method.DELETE, handler, config);
}
- @Override public RestApi.RouteBuilder defaultHandler(Handler<?> handler) {
- defaultHandler = HandlerHolder.of(handler); return this;
+
+ // PATCH
+ @Override public RouteBuilder patch(Handler<?> handler) { return patch(handler, null); }
+ @Override public <REQUEST_ENTITY> RouteBuilder patch(
+ Class<REQUEST_ENTITY> type, HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler) {
+ return patch(type, handler, null);
}
- @Override public <ENTITY> RouteBuilder defaultHandler(Class<ENTITY> type, HandlerWithRequestEntity<ENTITY, ?> handler) {
- defaultHandler = HandlerHolder.of(type, handler); return this;
+ @Override public RouteBuilder patch(Handler<?> handler, HandlerConfigBuilder config) {
+ return addHandler(Method.PATCH, handler, config);
+ }
+ @Override public <REQUEST_ENTITY> RouteBuilder patch(
+ Class<REQUEST_ENTITY> type, HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler, HandlerConfigBuilder config) {
+ return addHandler(Method.PATCH, type, handler, config);
+ }
+
+ // Default
+ @Override public RouteBuilder defaultHandler(Handler<?> handler) {
+ return defaultHandler(handler, null);
+ }
+ @Override public RouteBuilder defaultHandler(Handler<?> handler, HandlerConfigBuilder config) {
+ defaultHandler = HandlerHolder.of(handler, build(config)); return this;
+ }
+ @Override public <REQUEST_ENTITY> RouteBuilder defaultHandler(
+ Class<REQUEST_ENTITY> type, HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler) {
+ return defaultHandler(type, handler, null);
+ }
+ @Override
+ public <REQUEST_ENTITY> RouteBuilder defaultHandler(
+ Class<REQUEST_ENTITY> type, HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler, HandlerConfigBuilder config) {
+ defaultHandler = HandlerHolder.of(type, handler, build(config)); return this;
}
- @Override public RestApi.RouteBuilder addFilter(RestApi.Filter filter) { filters.add(filter); return this; }
- private RestApi.RouteBuilder addHandler(Method method, Handler<?> handler) {
- handlerPerMethod.put(method, HandlerHolder.of(handler)); return this;
+ private RestApi.RouteBuilder addHandler(Method method, Handler<?> handler, HandlerConfigBuilder config) {
+ handlerPerMethod.put(method, HandlerHolder.of(handler, build(config))); return this;
}
private <ENTITY> RestApi.RouteBuilder addHandler(
- Method method, Class<ENTITY> type, HandlerWithRequestEntity<ENTITY, ?> handler) {
- handlerPerMethod.put(method, HandlerHolder.of(type, handler)); return this;
+ Method method, Class<ENTITY> type, HandlerWithRequestEntity<ENTITY, ?> handler, HandlerConfigBuilder config) {
+ handlerPerMethod.put(method, HandlerHolder.of(type, handler, build(config))); return this;
+ }
+
+ private static HandlerConfig build(HandlerConfigBuilder builder) {
+ if (builder == null) return HandlerConfig.empty();
+ return ((HandlerConfigBuilderImpl)builder).build();
}
private Route build() { return new Route(this); }
}
+ static class HandlerConfigBuilderImpl implements HandlerConfigBuilder {
+ private AclMapping.Action aclAction;
+
+ @Override public HandlerConfigBuilder withReadAclAction() { return withCustomAclAction(AclMapping.Action.READ); }
+ @Override public HandlerConfigBuilder withWriteAclAction() { return withCustomAclAction(AclMapping.Action.WRITE); }
+ @Override public HandlerConfigBuilder withCustomAclAction(AclMapping.Action action) {
+ this.aclAction = action; return this;
+ }
+
+ HandlerConfig build() { return new HandlerConfig(this); }
+ }
+
+ private static class HandlerConfig {
+ final AclMapping.Action aclAction;
+
+ HandlerConfig(HandlerConfigBuilderImpl builder) {
+ this.aclAction = builder.aclAction;
+ }
+
+ static HandlerConfig empty() { return new HandlerConfigBuilderImpl().build(); }
+ }
+
private static class RequestContextImpl implements RestApi.RequestContext {
final HttpRequest request;
final Path pathMatcher;
@@ -332,12 +378,14 @@ class RestApiImpl implements RestApi {
final Headers headers = new HeadersImpl();
final Attributes attributes = new AttributesImpl();
final RequestContent requestContent;
+ final AclMapping.Action aclAction;
- RequestContextImpl(HttpRequest request, Path pathMatcher, ObjectMapper jacksonJsonMapper) {
+ RequestContextImpl(HttpRequest request, Path pathMatcher, AclMapping.Action aclAction, ObjectMapper jacksonJsonMapper) {
this.request = request;
this.pathMatcher = pathMatcher;
this.jacksonJsonMapper = jacksonJsonMapper;
this.requestContent = request.getData() != null ? new RequestContentImpl() : null;
+ this.aclAction = aclAction;
}
@Override public HttpRequest request() { return request; }
@@ -352,10 +400,30 @@ class RestApiImpl implements RestApi {
@Override public ObjectMapper jacksonJsonMapper() { return jacksonJsonMapper; }
@Override public UriBuilder uriBuilder() {
URI uri = request.getUri();
- int uriPort = uri.getPort();
- return uriPort != -1
- ? new UriBuilder(uri.getScheme() + "://" + uri.getHost() + ':' + uriPort)
- : new UriBuilder(uri.getScheme() + "://" + uri.getHost());
+ // Reconstruct the URI used by the client to access the API.
+ // This is needed for producing URIs in the response that links to other parts of the Rest API.
+ // request.getUri() cannot be used as its port is the local listen port (as it's intended for request routing).
+ StringBuilder sb = new StringBuilder(uri.getScheme()).append("://");
+ String hostHeader = request.getHeader("X-Forwarded-Host");
+ if (hostHeader == null || hostHeader.isBlank()) {
+ hostHeader = request.getHeader("Host");
+ }
+ if (hostHeader != null && !hostHeader.isBlank()) {
+ sb.append(hostHeader);
+ } else {
+ sb.append(uri.getHost());
+ if (uri.getPort() > 0) {
+ sb.append(":").append(uri.getPort());
+ }
+ }
+ return new UriBuilder(sb.toString());
+ }
+ @Override public AclMapping.Action aclAction() { return aclAction; }
+ @Override public Optional<Principal> userPrincipal() {
+ return Optional.ofNullable(request.getJDiscRequest().getUserPrincipal());
+ }
+ @Override public Principal userPrincipalOrThrow() {
+ return userPrincipal().orElseThrow(RestApiException.Unauthorized::new);
}
private class PathParametersImpl implements RestApi.RequestContext.PathParameters {
@@ -433,63 +501,37 @@ class RestApiImpl implements RestApi {
}
}
- private static class ExceptionMapperHolder<EXCEPTION extends RuntimeException> {
- final Class<EXCEPTION> type;
- final RestApi.ExceptionMapper<EXCEPTION> mapper;
-
- ExceptionMapperHolder(Class<EXCEPTION> type, RestApi.ExceptionMapper<EXCEPTION> mapper) {
- this.type = type;
- this.mapper = mapper;
- }
-
- HttpResponse toResponse(RestApi.RequestContext context, RuntimeException e) { return mapper.toResponse(context, type.cast(e)); }
- }
-
- private static class ResponseMapperHolder<ENTITY> {
- final Class<ENTITY> type;
- final RestApi.ResponseMapper<ENTITY> mapper;
-
- ResponseMapperHolder(Class<ENTITY> type, RestApi.ResponseMapper<ENTITY> mapper) {
- this.type = type;
- this.mapper = mapper;
- }
-
- HttpResponse toHttpResponse(RestApi.RequestContext context, Object entity) { return mapper.toHttpResponse(context, type.cast(entity)); }
- }
-
private static class HandlerHolder<REQUEST_ENTITY> {
final Class<REQUEST_ENTITY> type;
final HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler;
+ final HandlerConfig config;
- HandlerHolder(Class<REQUEST_ENTITY> type, HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler) {
+ private HandlerHolder(
+ Class<REQUEST_ENTITY> type,
+ HandlerWithRequestEntity<REQUEST_ENTITY, ?> handler,
+ HandlerConfig config) {
this.type = type;
this.handler = handler;
+ this.config = config;
}
static <RESPONSE_ENTITY, REQUEST_ENTITY> HandlerHolder<REQUEST_ENTITY> of(
- Class<REQUEST_ENTITY> type, HandlerWithRequestEntity<REQUEST_ENTITY, RESPONSE_ENTITY> handler) {
- return new HandlerHolder<>(type, handler);
+ Class<REQUEST_ENTITY> type,
+ HandlerWithRequestEntity<REQUEST_ENTITY, RESPONSE_ENTITY> handler,
+ HandlerConfig config) {
+ return new HandlerHolder<>(type, handler, config);
}
- static <RESPONSE_ENTITY> HandlerHolder<Void> of(Handler<RESPONSE_ENTITY> handler) {
+ static <RESPONSE_ENTITY> HandlerHolder<Void> of(Handler<RESPONSE_ENTITY> handler, HandlerConfig config) {
return new HandlerHolder<>(
Void.class,
- (HandlerWithRequestEntity<Void, RESPONSE_ENTITY>) (context, nullEntity) -> handler.handleRequest(context));
+ (HandlerWithRequestEntity<Void, RESPONSE_ENTITY>) (context, nullEntity) -> handler.handleRequest(context),
+ config);
}
Object executeHandler(RestApi.RequestContext context, Object entity) { return handler.handleRequest(context, type.cast(entity)); }
}
- private static class RequestMapperHolder<ENTITY> {
- final Class<ENTITY> type;
- final RestApi.RequestMapper<ENTITY> mapper;
-
- RequestMapperHolder(Class<ENTITY> type, RequestMapper<ENTITY> mapper) {
- this.type = type;
- this.mapper = mapper;
- }
- }
-
static class Route {
private final String pathPattern;
private final String name;
@@ -507,47 +549,10 @@ class RestApiImpl implements RestApi {
}
private HandlerHolder<?> createDefaultMethodHandler() {
- return HandlerHolder.of(context -> { throw new RestApiException.MethodNotAllowed(context.request()); });
- }
- }
-
- private static class JacksonRequestMapper<ENTITY> implements RequestMapper<ENTITY> {
- private final Class<ENTITY> type;
-
- JacksonRequestMapper(Class<ENTITY> type) { this.type = type; }
-
- @Override
- public Optional<ENTITY> toRequestEntity(RequestContext context) throws RestApiException {
- if (log.isLoggable(Level.FINE)) {
- return RestApiImpl.toString(context).map(string -> {
- log.fine(() -> "Request content: " + string);
- return convertIoException("Failed to parse JSON", () -> context.jacksonJsonMapper().readValue(string, type));
- });
- } else {
- return RestApiImpl.toInputStream(context)
- .map(in -> convertIoException("Invalid JSON", () -> context.jacksonJsonMapper().readValue(in, type)));
- }
- }
- }
-
- private static class JacksonResponseMapper<ENTITY> implements ResponseMapper<ENTITY> {
- @Override
- public HttpResponse toHttpResponse(RequestContext context, ENTITY responseEntity) throws RestApiException {
- return new JacksonJsonResponse<>(200, responseEntity, context.jacksonJsonMapper(), true);
+ return HandlerHolder.of(
+ context -> { throw new RestApiException.MethodNotAllowed(context.request()); },
+ HandlerConfig.empty());
}
}
- @FunctionalInterface private interface SupplierThrowingIoException<T> { T get() throws IOException; }
- private static <T> T convertIoException(String messagePrefix, SupplierThrowingIoException<T> supplier) {
- try {
- return supplier.get();
- } catch (IOException e) {
- log.log(Level.FINE, e.getMessage(), e);
- throw new RestApiException.InternalServerError(messagePrefix + ": " + Exceptions.toMessageString(e), e);
- }
- }
-
- private static <T> T convertIoException(SupplierThrowingIoException<T> supplier) {
- return convertIoException("Failed to read request content", supplier);
- }
}
diff --git a/container-core/src/main/java/com/yahoo/restapi/RestApiMappers.java b/container-core/src/main/java/com/yahoo/restapi/RestApiMappers.java
new file mode 100644
index 00000000000..9fbbb03fa09
--- /dev/null
+++ b/container-core/src/main/java/com/yahoo/restapi/RestApiMappers.java
@@ -0,0 +1,172 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.restapi;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.yahoo.container.jdisc.HttpResponse;
+import com.yahoo.restapi.RestApi.ExceptionMapper;
+import com.yahoo.restapi.RestApi.RequestMapper;
+import com.yahoo.restapi.RestApi.ResponseMapper;
+import com.yahoo.slime.Slime;
+import com.yahoo.slime.SlimeUtils;
+import com.yahoo.yolean.Exceptions;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+import java.util.Optional;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+/**
+ * Implementations of {@link ExceptionMapper}, {@link RequestMapper} and {@link ResponseMapper}.
+ *
+ * @author bjorncs
+ */
+public class RestApiMappers {
+
+ private static final Logger log = Logger.getLogger(RestApiMappers.class.getName());
+
+ static List<RequestMapperHolder<?>> DEFAULT_REQUEST_MAPPERS = List.of(
+ new RequestMapperHolder<>(Slime.class, RestApiMappers::toSlime),
+ new RequestMapperHolder<>(JsonNode.class, ctx -> toJsonNode(ctx, ctx.jacksonJsonMapper())),
+ new RequestMapperHolder<>(String.class, RestApiMappers::toString),
+ new RequestMapperHolder<>(byte[].class, RestApiMappers::toByteArray),
+ new RequestMapperHolder<>(InputStream .class, RestApiMappers::toInputStream),
+ new RequestMapperHolder<>(Void.class, ctx -> Optional.empty()));
+
+ static List<ResponseMapperHolder<?>> DEFAULT_RESPONSE_MAPPERS = List.of(
+ new ResponseMapperHolder<>(HttpResponse.class, (context, entity) -> entity),
+ new ResponseMapperHolder<>(String.class, (context, entity) -> new MessageResponse(entity)),
+ new ResponseMapperHolder<>(Slime.class, (context, entity) -> new SlimeJsonResponse(entity)),
+ new ResponseMapperHolder<>(JsonNode.class,
+ (context, entity) -> new JacksonJsonResponse<>(200, entity, context.jacksonJsonMapper(), true)));
+
+ static List<ExceptionMapperHolder<?>> DEFAULT_EXCEPTION_MAPPERS = List.of(
+ new ExceptionMapperHolder<>(RestApiException.class, (context, exception) -> exception.response()));
+
+ private RestApiMappers() {}
+
+ public static class JacksonRequestMapper<ENTITY> implements RequestMapper<ENTITY> {
+ private final Class<ENTITY> type;
+
+ JacksonRequestMapper(Class<ENTITY> type) { this.type = type; }
+
+ @Override
+ public Optional<ENTITY> toRequestEntity(RestApi.RequestContext context) throws RestApiException {
+ if (log.isLoggable(Level.FINE)) {
+ return RestApiMappers.toString(context).map(string -> {
+ log.fine(() -> "Request content: " + string);
+ return convertIoException("Failed to parse JSON", () -> context.jacksonJsonMapper().readValue(string, type));
+ });
+ } else {
+ return toInputStream(context)
+ .map(in -> convertIoException("Invalid JSON", () -> context.jacksonJsonMapper().readValue(in, type)));
+ }
+ }
+ }
+
+ public static class JacksonResponseMapper<ENTITY> implements ResponseMapper<ENTITY> {
+ @Override
+ public HttpResponse toHttpResponse(RestApi.RequestContext context, ENTITY responseEntity) throws RestApiException {
+ return new JacksonJsonResponse<>(200, responseEntity, context.jacksonJsonMapper(), true);
+ }
+ }
+
+ static class RequestMapperHolder<ENTITY> {
+ final Class<ENTITY> type;
+ final RestApi.RequestMapper<ENTITY> mapper;
+
+ RequestMapperHolder(Class<ENTITY> type, RequestMapper<ENTITY> mapper) {
+ this.type = type;
+ this.mapper = mapper;
+ }
+ }
+
+ static class ResponseMapperHolder<ENTITY> {
+ final Class<ENTITY> type;
+ final RestApi.ResponseMapper<ENTITY> mapper;
+
+ ResponseMapperHolder(Class<ENTITY> type, RestApi.ResponseMapper<ENTITY> mapper) {
+ this.type = type;
+ this.mapper = mapper;
+ }
+
+ HttpResponse toHttpResponse(RestApi.RequestContext ctx, Object entity) {
+ return mapper.toHttpResponse(ctx, type.cast(entity));
+ }
+ }
+
+ static class ExceptionMapperHolder<EXCEPTION extends RuntimeException> {
+ final Class<EXCEPTION> type;
+ final RestApi.ExceptionMapper<EXCEPTION> mapper;
+
+ ExceptionMapperHolder(Class<EXCEPTION> type, RestApi.ExceptionMapper<EXCEPTION> mapper) {
+ this.type = type;
+ this.mapper = mapper;
+ }
+
+ HttpResponse toResponse(RestApi.RequestContext ctx, RuntimeException e) {
+ return mapper.toResponse(ctx, type.cast(e));
+ }
+ }
+
+ private static Optional<InputStream> toInputStream(RestApi.RequestContext context) {
+ return context.requestContent().map(RestApi.RequestContext.RequestContent::content);
+ }
+
+ private static Optional<byte[]> toByteArray(RestApi.RequestContext context) {
+ InputStream in = toInputStream(context).orElse(null);
+ if (in == null) return Optional.empty();
+ return convertIoException(() -> Optional.of(in.readAllBytes()));
+ }
+
+ private static Optional<String> toString(RestApi.RequestContext context) {
+ try {
+ return toByteArray(context).map(bytes -> new String(bytes, UTF_8));
+ } catch (RuntimeException e) {
+ throw new RestApiException.BadRequest("Failed parse request content as UTF-8: " + Exceptions.toMessageString(e), e);
+ }
+ }
+
+ private static Optional<JsonNode> toJsonNode(RestApi.RequestContext context, ObjectMapper jacksonJsonMapper) {
+ if (log.isLoggable(Level.FINE)) {
+ return toString(context).map(string -> {
+ log.fine(() -> "Request content: " + string);
+ return convertIoException("Failed to parse JSON", () -> jacksonJsonMapper.readTree(string));
+ });
+ } else {
+ return toInputStream(context)
+ .map(in -> convertIoException("Invalid JSON", () -> jacksonJsonMapper.readTree(in)));
+ }
+ }
+
+ @FunctionalInterface private interface SupplierThrowingIoException<T> { T get() throws IOException; }
+ private static <T> T convertIoException(String messagePrefix, SupplierThrowingIoException<T> supplier) {
+ try {
+ return supplier.get();
+ } catch (IOException e) {
+ log.log(Level.FINE, e.getMessage(), e);
+ throw new RestApiException.InternalServerError(messagePrefix + ": " + Exceptions.toMessageString(e), e);
+ }
+ }
+
+ private static <T> T convertIoException(SupplierThrowingIoException<T> supplier) {
+ return convertIoException("Failed to read request content", supplier);
+ }
+
+ private static Optional<Slime> toSlime(RestApi.RequestContext context) {
+ try {
+ return toString(context).map(string -> {
+ log.fine(() -> "Request content: " + string);
+ return SlimeUtils.jsonToSlimeOrThrow(string);
+ });
+ } catch (com.yahoo.slime.JsonParseException e) {
+ log.log(Level.FINE, e.getMessage(), e);
+ throw new RestApiException.BadRequest("Invalid JSON: " + Exceptions.toMessageString(e), e);
+ }
+ }
+
+}
diff --git a/container-core/src/main/java/com/yahoo/restapi/RestApiRequestHandler.java b/container-core/src/main/java/com/yahoo/restapi/RestApiRequestHandler.java
index c501ad8c804..b126fbd16e4 100644
--- a/container-core/src/main/java/com/yahoo/restapi/RestApiRequestHandler.java
+++ b/container-core/src/main/java/com/yahoo/restapi/RestApiRequestHandler.java
@@ -1,9 +1,10 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.restapi;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.container.jdisc.LoggingRequestHandler;
+import com.yahoo.container.jdisc.RequestHandlerSpec;
import com.yahoo.jdisc.Metric;
import java.util.concurrent.Executor;
@@ -48,6 +49,7 @@ public abstract class RestApiRequestHandler<T extends RestApiRequestHandler<T>>
}
@Override public final HttpResponse handle(HttpRequest request) { return restApi.handleRequest(request); }
+ @Override public RequestHandlerSpec requestHandlerSpec() { return restApi.requestHandlerSpec(); }
public RestApi restApi() { return restApi; }
}
diff --git a/container-core/src/main/java/com/yahoo/restapi/RestApiTestDriver.java b/container-core/src/main/java/com/yahoo/restapi/RestApiTestDriver.java
index 7dc5b710bbe..ad943407743 100644
--- a/container-core/src/main/java/com/yahoo/restapi/RestApiTestDriver.java
+++ b/container-core/src/main/java/com/yahoo/restapi/RestApiTestDriver.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.restapi;
import com.fasterxml.jackson.core.type.TypeReference;
diff --git a/container-core/src/main/java/com/yahoo/restapi/SlimeJsonResponse.java b/container-core/src/main/java/com/yahoo/restapi/SlimeJsonResponse.java
index a0f8b58fb6a..2a36d634033 100644
--- a/container-core/src/main/java/com/yahoo/restapi/SlimeJsonResponse.java
+++ b/container-core/src/main/java/com/yahoo/restapi/SlimeJsonResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.restapi;
import com.yahoo.container.jdisc.HttpResponse;
diff --git a/container-core/src/main/java/com/yahoo/restapi/StringResponse.java b/container-core/src/main/java/com/yahoo/restapi/StringResponse.java
index 55ea22880de..c1cf093f719 100644
--- a/container-core/src/main/java/com/yahoo/restapi/StringResponse.java
+++ b/container-core/src/main/java/com/yahoo/restapi/StringResponse.java
@@ -1,27 +1,13 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.restapi;
-import com.yahoo.container.jdisc.HttpResponse;
-
-import java.io.IOException;
-import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
/**
* @author bratseth
*/
-public class StringResponse extends HttpResponse {
-
- private final String message;
-
+public class StringResponse extends ByteArrayResponse {
public StringResponse(String message) {
- super(200);
- this.message = message;
+ super(message.getBytes(StandardCharsets.UTF_8));
}
-
- @Override
- public void render(OutputStream stream) throws IOException {
- stream.write(message.getBytes(StandardCharsets.UTF_8));
- }
-
}
diff --git a/container-core/src/main/java/com/yahoo/restapi/UriBuilder.java b/container-core/src/main/java/com/yahoo/restapi/UriBuilder.java
index daebb147547..479914385ce 100644
--- a/container-core/src/main/java/com/yahoo/restapi/UriBuilder.java
+++ b/container-core/src/main/java/com/yahoo/restapi/UriBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.restapi;
import java.net.URI;
diff --git a/container-core/src/main/java/com/yahoo/restapi/package-info.java b/container-core/src/main/java/com/yahoo/restapi/package-info.java
index d021d4e7ba7..9716444ea0c 100644
--- a/container-core/src/main/java/com/yahoo/restapi/package-info.java
+++ b/container-core/src/main/java/com/yahoo/restapi/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.restapi;
diff --git a/container-core/src/main/java/org/json/package-info.java b/container-core/src/main/java/org/json/package-info.java
index 7ca9fe91e31..bacf02a3adc 100644
--- a/container-core/src/main/java/org/json/package-info.java
+++ b/container-core/src/main/java/org/json/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package org.json;
// TODO Vespa 8: stop providing org.json
diff --git a/container-core/src/main/resources/configdefinitions/application-bundles.def b/container-core/src/main/resources/configdefinitions/application-bundles.def
index 7e03b1e3ac8..a7bb11609ca 100644
--- a/container-core/src/main/resources/configdefinitions/application-bundles.def
+++ b/container-core/src/main/resources/configdefinitions/application-bundles.def
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package=com.yahoo.container.di.config
# References to user bundles to install.
diff --git a/container-core/src/main/resources/configdefinitions/container.components.def b/container-core/src/main/resources/configdefinitions/container.components.def
index f27abc2fa5a..265f9645e8f 100644
--- a/container-core/src/main/resources/configdefinitions/container.components.def
+++ b/container-core/src/main/resources/configdefinitions/container.components.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container
## A list of components. Components depending on other components may use this to
diff --git a/container-core/src/main/resources/configdefinitions/container.core.access-log.def b/container-core/src/main/resources/configdefinitions/container.core.access-log.def
index e6052b7068c..ba61b31477d 100644
--- a/container-core/src/main/resources/configdefinitions/container.core.access-log.def
+++ b/container-core/src/main/resources/configdefinitions/container.core.access-log.def
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container.core
# File name patterns supporting the expected time variables, e.g. ".%Y%m%d%H%M%S"
diff --git a/container-core/src/main/resources/configdefinitions/container.core.application-metadata.def b/container-core/src/main/resources/configdefinitions/container.core.application-metadata.def
index a3ccf1b55cf..82e9868f793 100644
--- a/container-core/src/main/resources/configdefinitions/container.core.application-metadata.def
+++ b/container-core/src/main/resources/configdefinitions/container.core.application-metadata.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Contains meta info about one deployed application
namespace=container.core
diff --git a/container-core/src/main/resources/configdefinitions/container.core.chains.def b/container-core/src/main/resources/configdefinitions/container.core.chains.def
index 8520a8d6332..8340a12ba94 100644
--- a/container-core/src/main/resources/configdefinitions/container.core.chains.def
+++ b/container-core/src/main/resources/configdefinitions/container.core.chains.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Chains configuration
namespace=container.core
diff --git a/container-core/src/main/resources/configdefinitions/container.core.container-http.def b/container-core/src/main/resources/configdefinitions/container.core.container-http.def
index 23edd402893..e1b83168117 100644
--- a/container-core/src/main/resources/configdefinitions/container.core.container-http.def
+++ b/container-core/src/main/resources/configdefinitions/container.core.container-http.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container.core
## If non-empty, handlers should emit a header containing this string as key and the local host name as value
diff --git a/container-core/src/main/resources/configdefinitions/container.core.document.container-document.def b/container-core/src/main/resources/configdefinitions/container.core.document.container-document.def
index e8db64b011a..255b179f6a2 100644
--- a/container-core/src/main/resources/configdefinitions/container.core.document.container-document.def
+++ b/container-core/src/main/resources/configdefinitions/container.core.document.container-document.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# Container settings for document type management
#
diff --git a/container-core/src/main/resources/configdefinitions/container.core.http.http-filter.def b/container-core/src/main/resources/configdefinitions/container.core.http.http-filter.def
index 829147479d6..3116716ac3c 100644
--- a/container-core/src/main/resources/configdefinitions/container.core.http.http-filter.def
+++ b/container-core/src/main/resources/configdefinitions/container.core.http.http-filter.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container.core.http
param[].name string
diff --git a/container-core/src/main/resources/configdefinitions/container.core.identity.identity.def b/container-core/src/main/resources/configdefinitions/container.core.identity.identity.def
index 539bf07fa7d..b63440baa12 100644
--- a/container-core/src/main/resources/configdefinitions/container.core.identity.identity.def
+++ b/container-core/src/main/resources/configdefinitions/container.core.identity.identity.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container.core.identity
# Tenant identity domain name
diff --git a/container-core/src/main/resources/configdefinitions/container.core.log-handler.def b/container-core/src/main/resources/configdefinitions/container.core.log-handler.def
index b30d6eebcf3..ed8bf3afd5d 100644
--- a/container-core/src/main/resources/configdefinitions/container.core.log-handler.def
+++ b/container-core/src/main/resources/configdefinitions/container.core.log-handler.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container.core
## Path to log directory, can be relative or absolute.
diff --git a/container-core/src/main/resources/configdefinitions/container.core.vip-status.def b/container-core/src/main/resources/configdefinitions/container.core.vip-status.def
index a042f5915c2..61abda33302 100644
--- a/container-core/src/main/resources/configdefinitions/container.core.vip-status.def
+++ b/container-core/src/main/resources/configdefinitions/container.core.vip-status.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container.core
## Whether to return hard-coded reply or serve "status.html" from disk
diff --git a/container-core/src/main/resources/configdefinitions/container.di.config.jersey-bundles.def b/container-core/src/main/resources/configdefinitions/container.di.config.jersey-bundles.def
deleted file mode 100644
index a226420274d..00000000000
--- a/container-core/src/main/resources/configdefinitions/container.di.config.jersey-bundles.def
+++ /dev/null
@@ -1,8 +0,0 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-namespace=container.di.config
-
-# The SymbolicName[:Version] of the Jersey bundles
-bundles[].spec string
-
-# The packages to scan for Jersey resources
-bundles[].packages[] string
diff --git a/container-core/src/main/resources/configdefinitions/container.di.config.jersey-injection.def b/container-core/src/main/resources/configdefinitions/container.di.config.jersey-injection.def
deleted file mode 100644
index 9f5be59abbd..00000000000
--- a/container-core/src/main/resources/configdefinitions/container.di.config.jersey-injection.def
+++ /dev/null
@@ -1,5 +0,0 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-namespace=container.di.config
-
-inject[].instance string
-inject[].forClass string
diff --git a/container-core/src/main/resources/configdefinitions/container.handler.test.mockservice.def b/container-core/src/main/resources/configdefinitions/container.handler.test.mockservice.def
index 9ee162bc6b8..607fe1cc999 100644
--- a/container-core/src/main/resources/configdefinitions/container.handler.test.mockservice.def
+++ b/container-core/src/main/resources/configdefinitions/container.handler.test.mockservice.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container.handler.test
file file
diff --git a/container-core/src/main/resources/configdefinitions/container.handler.threadpool.container-threadpool.def b/container-core/src/main/resources/configdefinitions/container.handler.threadpool.container-threadpool.def
index 9248bf2e2bf..9f98f7cdccb 100644
--- a/container-core/src/main/resources/configdefinitions/container.handler.threadpool.container-threadpool.def
+++ b/container-core/src/main/resources/configdefinitions/container.handler.threadpool.container-threadpool.def
@@ -1,19 +1,22 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container.handler.threadpool
## Maximum number of thread in the thread pool
## 0 is translated to vcpu*4
+## Negative value is interpreted as scale factor ( vcpu*abs(maxThreads) )
maxThreads int default=0
## Minimum number of thread in the thread pool
## 0 is translated to vcpu*2
+## Negative value is interpreted as scale factor ( vcpu*abs(minThreads) )
minThreads int default=0
## The number of seconds that excess idle threads will wait for new tasks before terminating
keepAliveTime double default=5.0
## Max queue size
+## Negative value is interpreted as scale factor ( effectiveMaxThreads*abs(queueSize) )
queueSize int default=0
## The max time the container tolerates having no threads available before it shuts down to
diff --git a/container-core/src/main/resources/configdefinitions/container.handler.threadpool.def b/container-core/src/main/resources/configdefinitions/container.handler.threadpool.def
index d966738ea9f..f2880e0413c 100644
--- a/container-core/src/main/resources/configdefinitions/container.handler.threadpool.def
+++ b/container-core/src/main/resources/configdefinitions/container.handler.threadpool.def
@@ -1,12 +1,15 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container.handler
## Maximum number of thread in the thread pool
-## Setting it to 0 or negative number will cause it to be set to #cores * 4
+## 0 is translated to vcpu*4
+## Negative value is interpreted as scale factor ( vcpu*abs(maxThreads) )
maxthreads int default=500
-# The number of threads to keep in the pool, even if they are idle
+## The number of threads to keep in the pool, even if they are idle
+## 0 is translated to vcpu*4
+## Negative value is interpreted as scale factor ( vcpu*abs(corePoolSize) )
corePoolSize int default=500
# The number of seconds that excess idle threads will wait for new tasks before terminating
diff --git a/container-core/src/main/resources/configdefinitions/container.jdisc.config.health-monitor.def b/container-core/src/main/resources/configdefinitions/container.jdisc.config.health-monitor.def
index 4e91d85b2b8..ec161d7dde1 100644
--- a/container-core/src/main/resources/configdefinitions/container.jdisc.config.health-monitor.def
+++ b/container-core/src/main/resources/configdefinitions/container.jdisc.config.health-monitor.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container.jdisc.config
diff --git a/container-core/src/main/resources/configdefinitions/container.jdisc.state.metrics-packets-handler.def b/container-core/src/main/resources/configdefinitions/container.jdisc.state.metrics-packets-handler.def
index c295954fc5d..9ec81b7db1b 100644
--- a/container-core/src/main/resources/configdefinitions/container.jdisc.state.metrics-packets-handler.def
+++ b/container-core/src/main/resources/configdefinitions/container.jdisc.state.metrics-packets-handler.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container.jdisc.state
diff --git a/container-core/src/main/resources/configdefinitions/container.logging.connection-log.def b/container-core/src/main/resources/configdefinitions/container.logging.connection-log.def
index cb2145cd01c..026e2a85a8d 100644
--- a/container-core/src/main/resources/configdefinitions/container.logging.connection-log.def
+++ b/container-core/src/main/resources/configdefinitions/container.logging.connection-log.def
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container.logging
# Name of the cluster
diff --git a/container-core/src/main/resources/configdefinitions/container.qr-searchers.def b/container-core/src/main/resources/configdefinitions/container.qr-searchers.def
index 1e8bd54acc3..e89ee40d792 100644
--- a/container-core/src/main/resources/configdefinitions/container.qr-searchers.def
+++ b/container-core/src/main/resources/configdefinitions/container.qr-searchers.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container
# this file needs more comments
diff --git a/container-core/src/main/resources/configdefinitions/container.qr.def b/container-core/src/main/resources/configdefinitions/container.qr.def
index fe44b04e9d5..f82f7ba689b 100644
--- a/container-core/src/main/resources/configdefinitions/container.qr.def
+++ b/container-core/src/main/resources/configdefinitions/container.qr.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container
### All params must be flagged as 'restart' because this config is manually
@@ -23,5 +23,16 @@ rpc.slobrokId string default="" restart
## this string will be unique for every QRS in a Vespa application.
discriminator string default="qrserver.0" restart
+## Index of this container inside the cluster. Guaranteed to be non-negative
+## and unique for every container in a cluster, but not necessarily contiguous
+## or starting from zero.
+nodeIndex int default=0
+
## Force restart of container on deploy, and defer any changes until restart
restartOnDeploy bool default=false restart
+
+## Force heapdump if process is not able to stop within shutdown.timeout
+shutdown.dumpHeapOnTimeout bool default=false
+
+## Timeout for clean shutdown
+shutdown.timeout double default=50.0
diff --git a/container-core/src/main/resources/configdefinitions/container.servlet.servlet-config.def b/container-core/src/main/resources/configdefinitions/container.servlet.servlet-config.def
index 2b3ef402792..d169ceb27d7 100644
--- a/container-core/src/main/resources/configdefinitions/container.servlet.servlet-config.def
+++ b/container-core/src/main/resources/configdefinitions/container.servlet.servlet-config.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container.servlet
map{} string
diff --git a/container-core/src/main/resources/configdefinitions/jdisc.http.client.jdisc.http.client.http-client.def b/container-core/src/main/resources/configdefinitions/jdisc.http.client.jdisc.http.client.http-client.def
index 8f99fccec94..2a7f838c8c5 100644
--- a/container-core/src/main/resources/configdefinitions/jdisc.http.client.jdisc.http.client.http-client.def
+++ b/container-core/src/main/resources/configdefinitions/jdisc.http.client.jdisc.http.client.http-client.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=jdisc.http.client
userAgent string default = "JDisc/1.0"
diff --git a/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.connector.def b/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.connector.def
index 0b01f690aea..b4bd624c22f 100644
--- a/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.connector.def
+++ b/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.connector.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=jdisc.http
# The TCP port to listen to for this connector.
diff --git a/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.server.def b/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.server.def
index 049080dedbd..db7322c76f2 100644
--- a/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.server.def
+++ b/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.server.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=jdisc.http
# Whether to enable developer mode, where stack traces etc are visible in response bodies.
diff --git a/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.servlet-paths.def b/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.servlet-paths.def
index 86707b027be..db00df042bf 100644
--- a/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.servlet-paths.def
+++ b/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.servlet-paths.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=jdisc.http
# path by servlet componentId
diff --git a/container-core/src/main/resources/configdefinitions/metrics.manager.def b/container-core/src/main/resources/configdefinitions/metrics.manager.def
index 6446e0df8b6..2dc62b2c272 100644
--- a/container-core/src/main/resources/configdefinitions/metrics.manager.def
+++ b/container-core/src/main/resources/configdefinitions/metrics.manager.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=metrics
reportPeriodSeconds int default=60
diff --git a/container-core/src/main/resources/configdefinitions/metrics.metrics-presentation.def b/container-core/src/main/resources/configdefinitions/metrics.metrics-presentation.def
index aeb597ed326..2e537a00342 100644
--- a/container-core/src/main/resources/configdefinitions/metrics.metrics-presentation.def
+++ b/container-core/src/main/resources/configdefinitions/metrics.metrics-presentation.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=metrics
diff --git a/container-core/src/main/resources/configdefinitions/platform-bundles.def b/container-core/src/main/resources/configdefinitions/platform-bundles.def
index a30a846b565..4f2cf9e926b 100644
--- a/container-core/src/main/resources/configdefinitions/platform-bundles.def
+++ b/container-core/src/main/resources/configdefinitions/platform-bundles.def
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package=com.yahoo.container.di.config
# Paths to platform bundles to install.
diff --git a/container-core/src/main/sh/find-pid b/container-core/src/main/sh/find-pid
new file mode 100755
index 00000000000..56c387387d4
--- /dev/null
+++ b/container-core/src/main/sh/find-pid
@@ -0,0 +1,105 @@
+#!/usr/bin/env bash
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+# BEGIN environment bootstrap section
+# Do not edit between here and END as this section should stay identical in all scripts
+
+findpath () {
+ myname=${0}
+ mypath=${myname%/*}
+ myname=${myname##*/}
+ empty_if_start_slash=${mypath%%/*}
+ if [ "${empty_if_start_slash}" ]; then
+ mypath=$(pwd)/${mypath}
+ fi
+ if [ "$mypath" ] && [ -d "$mypath" ]; then
+ return
+ fi
+ mypath=$(pwd)
+ if [ -f "${mypath}/${myname}" ]; then
+ return
+ fi
+ echo "FATAL: Could not figure out the path where $myname lives from $0"
+ exit 1
+}
+
+COMMON_ENV=libexec/vespa/common-env.sh
+
+source_common_env () {
+ if [ "$VESPA_HOME" ] && [ -d "$VESPA_HOME" ]; then
+ export VESPA_HOME
+ common_env=$VESPA_HOME/$COMMON_ENV
+ if [ -f "$common_env" ]; then
+ . $common_env
+ return
+ fi
+ fi
+ return 1
+}
+
+findroot () {
+ source_common_env && return
+ if [ "$VESPA_HOME" ]; then
+ echo "FATAL: bad VESPA_HOME value '$VESPA_HOME'"
+ exit 1
+ fi
+ if [ "$ROOT" ] && [ -d "$ROOT" ]; then
+ VESPA_HOME="$ROOT"
+ source_common_env && return
+ fi
+ findpath
+ while [ "$mypath" ]; do
+ VESPA_HOME=${mypath}
+ source_common_env && return
+ mypath=${mypath%/*}
+ done
+ echo "FATAL: missing VESPA_HOME environment variable"
+ echo "Could not locate $COMMON_ENV anywhere"
+ exit 1
+}
+
+findhost () {
+ if [ "${VESPA_HOSTNAME}" = "" ]; then
+ VESPA_HOSTNAME=$(vespa-detect-hostname || hostname -f || hostname || echo "localhost") || exit 1
+ fi
+ validate="${VESPA_HOME}/bin/vespa-validate-hostname"
+ if [ -f "$validate" ]; then
+ "$validate" "${VESPA_HOSTNAME}" || exit 1
+ fi
+ export VESPA_HOSTNAME
+}
+
+findroot
+findhost
+
+# END environment bootstrap section
+
+set -euo pipefail
+
+if (( $# != 1 )); then
+ echo "Usage: $0 <service-name-or-config-id>" >&2
+ exit 1
+fi
+
+readonly service=$1
+readonly pid_file="$VESPA_HOME/var/run/$service.pid"
+if [ -f "$pid_file" ]; then
+ parent_pid=$(cat "$pid_file")
+ pid=$(pgrep --parent $parent_pid)
+else
+ status=$(vespa-sentinel-cmd list 2>/dev/null | grep --perl-regexp "($service state=|id=\"$service\")")
+ if [ -z "${status}" ]; then
+ echo "No service with name or config id '${service}'" >&2
+ exit 1
+ fi
+ pid=$(echo ${status} | cut -d " " -f 4 | cut -d "=" -f 2)
+ if ! [[ "${pid}" =~ ^[0-9]+$ ]]; then
+ echo "Could not find valid pid for '${service}' (pid='${pid}')" >&2
+ exit 1
+ fi
+fi
+if [ -z "$(ps -p ${pid} -o pid=)" ]; then
+ echo "Could not find process for '${pid}'" >&2
+ exit 1
+fi
+echo $pid
diff --git a/container-core/src/main/sh/vespa-jvm-dumper b/container-core/src/main/sh/vespa-jvm-dumper
new file mode 100755
index 00000000000..c0f5e653911
--- /dev/null
+++ b/container-core/src/main/sh/vespa-jvm-dumper
@@ -0,0 +1,120 @@
+#!/usr/bin/env bash
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+# BEGIN environment bootstrap section
+# Do not edit between here and END as this section should stay identical in all scripts
+
+findpath () {
+ myname=${0}
+ mypath=${myname%/*}
+ myname=${myname##*/}
+ empty_if_start_slash=${mypath%%/*}
+ if [ "${empty_if_start_slash}" ]; then
+ mypath=$(pwd)/${mypath}
+ fi
+ if [ "$mypath" ] && [ -d "$mypath" ]; then
+ return
+ fi
+ mypath=$(pwd)
+ if [ -f "${mypath}/${myname}" ]; then
+ return
+ fi
+ echo "FATAL: Could not figure out the path where $myname lives from $0"
+ exit 1
+}
+
+COMMON_ENV=libexec/vespa/common-env.sh
+
+source_common_env () {
+ if [ "$VESPA_HOME" ] && [ -d "$VESPA_HOME" ]; then
+ export VESPA_HOME
+ common_env=$VESPA_HOME/$COMMON_ENV
+ if [ -f "$common_env" ]; then
+ . $common_env
+ return
+ fi
+ fi
+ return 1
+}
+
+findroot () {
+ source_common_env && return
+ if [ "$VESPA_HOME" ]; then
+ echo "FATAL: bad VESPA_HOME value '$VESPA_HOME'"
+ exit 1
+ fi
+ if [ "$ROOT" ] && [ -d "$ROOT" ]; then
+ VESPA_HOME="$ROOT"
+ source_common_env && return
+ fi
+ findpath
+ while [ "$mypath" ]; do
+ VESPA_HOME=${mypath}
+ source_common_env && return
+ mypath=${mypath%/*}
+ done
+ echo "FATAL: missing VESPA_HOME environment variable"
+ echo "Could not locate $COMMON_ENV anywhere"
+ exit 1
+}
+
+findhost () {
+ if [ "${VESPA_HOSTNAME}" = "" ]; then
+ VESPA_HOSTNAME=$(vespa-detect-hostname || hostname -f || hostname || echo "localhost") || exit 1
+ fi
+ validate="${VESPA_HOME}/bin/vespa-validate-hostname"
+ if [ -f "$validate" ]; then
+ "$validate" "${VESPA_HOSTNAME}" || exit 1
+ fi
+ export VESPA_HOSTNAME
+}
+
+findroot
+findhost
+
+# END environment bootstrap section
+
+set -euo pipefail
+
+if [ $# -ne 2 ]; then
+ echo "Usage: $0 <id> <output-directory>"
+ echo ""
+ vespa-sentinel-cmd list 2>/dev/null
+ exit 1
+fi
+
+readonly service=$1
+readonly output_directory=$2
+if ! [ -d "${output_directory}" -a -w "${output_directory}" ]; then
+ echo "Directory '${output_directory}' is not writable"
+ exit 1
+fi
+jvm_pid=$($VESPA_HOME/libexec/vespa/find-pid "$service")
+echo "Pid for '${service}' is '${jvm_pid}'"
+
+echo "Creating heap dump"
+readonly heap_dump_file=${output_directory}/jvm-heap-dump.hprof
+if test -f "${heap_dump_file}"; then
+ rm "${heap_dump_file}"
+fi
+jmap -dump:live,format=b,file=${heap_dump_file} ${jvm_pid}
+
+echo "Trigger vespa-malloc to dump information to Vespa log"
+kill -SIGPROF ${jvm_pid}
+
+echo "Getting jmap information"
+jhsdb jmap --heap --pid ${jvm_pid} > ${output_directory}/jmap-output.txt
+
+echo "Getting jstat information"
+jstat -gcutil ${jvm_pid} > ${output_directory}/jstat-output.txt
+
+echo "Getting jstack information"
+jstack ${jvm_pid} > ${output_directory}/jstack-output.txt
+
+echo "Getting pmap information"
+pmap -x ${jvm_pid} | sort -nk3 | tail -10 > ${output_directory}/pmap-output.txt
+
+echo "Copying vespa logs"
+cp ${VESPA_HOME}/logs/vespa/vespa.log ${output_directory}/vespa.log
+
+echo "Done!"
diff --git a/container-core/src/test/java/com/yahoo/component/ComponentSpecTestCase.java b/container-core/src/test/java/com/yahoo/component/ComponentSpecTestCase.java
index 6fe58e99fda..07e1d806bfb 100644
--- a/container-core/src/test/java/com/yahoo/component/ComponentSpecTestCase.java
+++ b/container-core/src/test/java/com/yahoo/component/ComponentSpecTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component;
import org.junit.Test;
diff --git a/container-core/src/test/java/com/yahoo/component/chain/dependencies/ordering/ChainBuilderTest.java b/container-core/src/test/java/com/yahoo/component/chain/dependencies/ordering/ChainBuilderTest.java
index 07ac302f1f3..a83de433968 100644
--- a/container-core/src/test/java/com/yahoo/component/chain/dependencies/ordering/ChainBuilderTest.java
+++ b/container-core/src/test/java/com/yahoo/component/chain/dependencies/ordering/ChainBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain.dependencies.ordering;
import com.yahoo.component.ComponentId;
diff --git a/container-core/src/test/java/com/yahoo/component/chain/dependencies/ordering/OrderedReadyNodesTest.java b/container-core/src/test/java/com/yahoo/component/chain/dependencies/ordering/OrderedReadyNodesTest.java
index 77729a99012..c33fb71a07c 100644
--- a/container-core/src/test/java/com/yahoo/component/chain/dependencies/ordering/OrderedReadyNodesTest.java
+++ b/container-core/src/test/java/com/yahoo/component/chain/dependencies/ordering/OrderedReadyNodesTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain.dependencies.ordering;
import static org.junit.Assert.assertEquals;
diff --git a/container-core/src/test/java/com/yahoo/component/chain/model/ChainsModelBuilderTest.java b/container-core/src/test/java/com/yahoo/component/chain/model/ChainsModelBuilderTest.java
index 7cef03bbb06..54b57789ba8 100644
--- a/container-core/src/test/java/com/yahoo/component/chain/model/ChainsModelBuilderTest.java
+++ b/container-core/src/test/java/com/yahoo/component/chain/model/ChainsModelBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.chain.model;
import com.yahoo.component.ComponentId;
diff --git a/container-core/src/test/java/com/yahoo/component/provider/test/ComponentRegistryTestCase.java b/container-core/src/test/java/com/yahoo/component/provider/test/ComponentRegistryTestCase.java
index 69eec95b746..5f8fec564bc 100644
--- a/container-core/src/test/java/com/yahoo/component/provider/test/ComponentRegistryTestCase.java
+++ b/container-core/src/test/java/com/yahoo/component/provider/test/ComponentRegistryTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.provider.test;
import static org.junit.Assert.assertEquals;
diff --git a/container-core/src/test/java/com/yahoo/component/test/ComponentIdTestCase.java b/container-core/src/test/java/com/yahoo/component/test/ComponentIdTestCase.java
index 0842ee4a797..8d86010ea5a 100644
--- a/container-core/src/test/java/com/yahoo/component/test/ComponentIdTestCase.java
+++ b/container-core/src/test/java/com/yahoo/component/test/ComponentIdTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.component.test;
import com.yahoo.component.ComponentId;
diff --git a/container-core/src/test/java/com/yahoo/container/core/config/PlatformBundleLoaderTest.java b/container-core/src/test/java/com/yahoo/container/core/config/PlatformBundleLoaderTest.java
index 3111841439e..3cd9779f878 100644
--- a/container-core/src/test/java/com/yahoo/container/core/config/PlatformBundleLoaderTest.java
+++ b/container-core/src/test/java/com/yahoo/container/core/config/PlatformBundleLoaderTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.core.config;
import com.yahoo.osgi.Osgi;
diff --git a/container-core/src/test/java/com/yahoo/container/di/ConfigRetrieverTest.java b/container-core/src/test/java/com/yahoo/container/di/ConfigRetrieverTest.java
index 290836d7842..bba5675e458 100644
--- a/container-core/src/test/java/com/yahoo/container/di/ConfigRetrieverTest.java
+++ b/container-core/src/test/java/com/yahoo/container/di/ConfigRetrieverTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di;
import com.yahoo.config.ConfigInstance;
diff --git a/container-core/src/test/java/com/yahoo/container/di/ContainerTest.java b/container-core/src/test/java/com/yahoo/container/di/ContainerTest.java
index b596246a43d..2772ee593bb 100644
--- a/container-core/src/test/java/com/yahoo/container/di/ContainerTest.java
+++ b/container-core/src/test/java/com/yahoo/container/di/ContainerTest.java
@@ -1,17 +1,14 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di;
import com.google.inject.Guice;
import com.yahoo.component.AbstractComponent;
import com.yahoo.config.di.IntConfig;
import com.yahoo.config.test.TestConfig;
-import com.yahoo.container.bundle.MockBundle;
import com.yahoo.container.di.componentgraph.Provider;
import com.yahoo.container.di.componentgraph.core.ComponentGraph;
import com.yahoo.container.di.componentgraph.core.ComponentGraphTest.SimpleComponent;
-import com.yahoo.container.di.componentgraph.core.ComponentGraphTest.SimpleComponent2;
import com.yahoo.container.di.componentgraph.core.ComponentNode.ComponentConstructorException;
-import com.yahoo.container.di.config.RestApiContext;
import org.junit.Ignore;
import org.junit.Test;
import org.osgi.framework.Bundle;
@@ -218,64 +215,6 @@ public class ContainerTest extends ContainerTestBase {
assertNotNull(newGraph.get(5, TimeUnit.MINUTES));
}
-
- @Test
- public void bundle_info_is_set_on_rest_api_context() {
- Class<RestApiContext> clazz = RestApiContext.class;
-
- writeBootstrapConfigs("restApiContext", clazz);
- dirConfigSource.writeConfig("jersey-bundles", "bundles[0].spec \"mock-entry-to-enforce-a-MockBundle\"");
- dirConfigSource.writeConfig("jersey-injection", "inject[0]");
-
- Container container = newContainer(dirConfigSource);
- ComponentGraph componentGraph = getNewComponentGraph(container);
-
- RestApiContext restApiContext = componentGraph.getInstance(clazz);
- assertNotNull(restApiContext);
-
- assertEquals(1, restApiContext.getBundles().size());
- assertEquals(MockBundle.SymbolicName, restApiContext.getBundles().get(0).symbolicName);
- assertEquals(MockBundle.BundleVersion, restApiContext.getBundles().get(0).version);
-
- container.shutdownConfigurer();
- }
-
- @Test
- public void restApiContext_has_all_components_injected() {
- Class<RestApiContext> restApiClass = RestApiContext.class;
- Class<SimpleComponent> injectedClass = SimpleComponent.class;
- String injectedComponentId = "injectedComponent";
- Class<SimpleComponent2> anotherComponentClass = SimpleComponent2.class;
- String anotherComponentId = "anotherComponent";
-
- String componentsConfig =
- new ComponentEntry(injectedComponentId, injectedClass).asConfig(0) + "\n" +
- new ComponentEntry(anotherComponentId, anotherComponentClass).asConfig(1) + "\n" +
- new ComponentEntry("restApiContext", restApiClass).asConfig(2) + "\n" +
- "components[2].inject[0].id " + injectedComponentId + "\n" +
- "components[2].inject[1].id " + anotherComponentId + "\n";
-
- String injectionConfig = "inject[1]\n" +//
- "inject[0].instance " + injectedComponentId + "\n" +//
- "inject[0].forClass \"" + injectedClass.getName() + "\"\n";
-
- dirConfigSource.writeConfig("components", componentsConfig);
- dirConfigSource.writeConfig("platform-bundles", "");
- dirConfigSource.writeConfig("application-bundles", "");
- dirConfigSource.writeConfig("jersey-bundles", "bundles[0].spec \"mock-entry-to-enforce-a-MockBundle\"");
- dirConfigSource.writeConfig("jersey-injection", injectionConfig);
-
- Container container = newContainer(dirConfigSource);
- ComponentGraph componentGraph = getNewComponentGraph(container);
-
- RestApiContext restApiContext = componentGraph.getInstance(restApiClass);
-
- assertFalse(restApiContext.getInjectableComponents().isEmpty());
- assertEquals(2, restApiContext.getInjectableComponents().size());
-
- container.shutdownConfigurer();
- }
-
@Test
public void providers_are_destructed() {
writeBootstrapConfigs("id1", DestructableProvider.class);
diff --git a/container-core/src/test/java/com/yahoo/container/di/ContainerTestBase.java b/container-core/src/test/java/com/yahoo/container/di/ContainerTestBase.java
index 2106a1f3671..673f79e515e 100644
--- a/container-core/src/test/java/com/yahoo/container/di/ContainerTestBase.java
+++ b/container-core/src/test/java/com/yahoo/container/di/ContainerTestBase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di;
import com.google.inject.Guice;
@@ -7,7 +7,6 @@ import com.yahoo.config.FileReference;
import com.yahoo.container.bundle.BundleInstantiationSpecification;
import com.yahoo.container.di.ContainerTest.ComponentTakingConfig;
import com.yahoo.container.di.componentgraph.core.ComponentGraph;
-import com.yahoo.container.di.osgi.BundleClasses;
import org.junit.After;
import org.junit.Before;
import org.osgi.framework.Bundle;
@@ -57,11 +56,6 @@ public class ContainerTestBase {
}
@Override
- public BundleClasses getBundleClasses(ComponentSpecification bundle, Set<String> packagesToScan) {
- throw new UnsupportedOperationException("getBundleClasses not supported");
- }
-
- @Override
public Set<Bundle> useApplicationBundles(Collection<FileReference> bundles) {
return emptySet();
}
diff --git a/container-core/src/test/java/com/yahoo/container/di/DirConfigSource.java b/container-core/src/test/java/com/yahoo/container/di/DirConfigSource.java
index ec937a1a4ef..d459070e2bd 100644
--- a/container-core/src/test/java/com/yahoo/container/di/DirConfigSource.java
+++ b/container-core/src/test/java/com/yahoo/container/di/DirConfigSource.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di;
import com.yahoo.config.subscription.ConfigSource;
diff --git a/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ComponentGraphTest.java b/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ComponentGraphTest.java
index 70dc4c8665c..1ded443a3eb 100644
--- a/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ComponentGraphTest.java
+++ b/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ComponentGraphTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di.componentgraph.core;
import com.google.inject.AbstractModule;
@@ -16,11 +16,7 @@ import com.yahoo.config.ConfigInstance;
import com.yahoo.config.subscription.ConfigGetter;
import com.yahoo.config.test.Test2Config;
import com.yahoo.config.test.TestConfig;
-import com.yahoo.container.di.Osgi;
import com.yahoo.container.di.componentgraph.Provider;
-import com.yahoo.container.di.config.JerseyBundlesConfig;
-import com.yahoo.container.di.config.JerseyInjectionConfig;
-import com.yahoo.container.di.config.RestApiContext;
import com.yahoo.vespa.config.ConfigKey;
import org.junit.Test;
@@ -485,25 +481,6 @@ public class ComponentGraphTest {
assertThat(componentGraph.getInstance(ComponentTakingComponentId.class).componentId, is(ComponentId.fromString(componentId)));
}
- @Test
- public void rest_api_context_can_be_instantiated() {
- String configId = "raw:\"\"";
-
- Class<RestApiContext> clazz = RestApiContext.class;
- JerseyNode jerseyNode = new JerseyNode(uniqueComponentId(clazz.getName()), configId, clazz, new Osgi() {
- });
-
- ComponentGraph componentGraph = new ComponentGraph();
- componentGraph.add(jerseyNode);
- componentGraph.complete();
-
- componentGraph
- .setAvailableConfigs(ConfigMap.newMap(JerseyBundlesConfig.class, configId).add(JerseyInjectionConfig.class, configId));
-
- RestApiContext restApiContext = componentGraph.getInstance(clazz);
- assertNotNull(restApiContext);
- assertThat(restApiContext.getBundles().size(), is(0));
- }
//Note that all Components must be defined in a static context,
//otherwise their constructor will take the outer class as the first parameter.
diff --git a/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/FallbackToGuiceInjectorTest.java b/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/FallbackToGuiceInjectorTest.java
index 7c517d67960..188e04d8497 100644
--- a/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/FallbackToGuiceInjectorTest.java
+++ b/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/FallbackToGuiceInjectorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di.componentgraph.core;
import com.google.inject.AbstractModule;
diff --git a/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/JerseyNodeTest.java b/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/JerseyNodeTest.java
deleted file mode 100644
index f30f9260830..00000000000
--- a/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/JerseyNodeTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.container.di.componentgraph.core;
-
-import com.yahoo.container.bundle.MockBundle;
-import com.yahoo.container.di.config.RestApiContext;
-import com.yahoo.container.di.osgi.OsgiUtil;
-import org.junit.Test;
-import org.osgi.framework.wiring.BundleWiring;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.Matchers.contains;
-import static org.hamcrest.Matchers.containsInAnyOrder;
-import static org.junit.Assert.assertThat;
-
-/**
- * @author gjoranv
- * @author ollivir
- */
-
-public class JerseyNodeTest {
- private MockBundle bundle;
- private List<String> bundleClasses;
- private final Map<String, String> resources;
-
- public JerseyNodeTest() {
- resources = new HashMap<>();
- resources.put("com/foo", "com/foo/Foo.class");
- resources.put("com/bar", "com/bar/Bar.class");
- bundle = new MockBundle() {
- @Override
- public Collection<String> listResources(String path, String ignored, int options) {
- if ((options & BundleWiring.LISTRESOURCES_RECURSE) != 0 && path.equals("/")) {
- return resources.values();
- } else {
- return Collections.singleton(resources.get(path));
- }
- }
- };
- bundleClasses = new ArrayList<>(resources.values());
- }
-
- @Test
- public void all_bundle_entries_are_returned_when_no_packages_are_given() {
- Collection<String> entries = OsgiUtil.getClassEntriesInBundleClassPath(bundle, Collections.emptySet());
- assertThat(entries, containsInAnyOrder(bundleClasses.toArray()));
- }
-
- @Test
- public void only_bundle_entries_from_the_given_packages_are_returned() {
- Collection<String> entries = OsgiUtil.getClassEntriesInBundleClassPath(bundle, Collections.singleton("com.foo"));
- assertThat(entries, contains(resources.get("com/foo")));
- }
-
- @Test
- public void bundle_info_is_initialized() {
- RestApiContext.BundleInfo bundleInfo = JerseyNode.createBundleInfo(bundle, Collections.emptyList());
- assertThat(bundleInfo.symbolicName, is(bundle.getSymbolicName()));
- assertThat(bundleInfo.version, is(bundle.getVersion()));
- assertThat(bundleInfo.fileLocation, is(bundle.getLocation()));
- }
-}
diff --git a/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ReuseComponentsTest.java b/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ReuseComponentsTest.java
index e61e90cd718..537140d6f3f 100644
--- a/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ReuseComponentsTest.java
+++ b/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ReuseComponentsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di.componentgraph.core;
import com.yahoo.component.ComponentId;
diff --git a/container-core/src/test/java/com/yahoo/container/handler/AccessLogRequestHandlerTest.java b/container-core/src/test/java/com/yahoo/container/handler/AccessLogRequestHandlerTest.java
index 14869654267..aad064bc82e 100644
--- a/container-core/src/test/java/com/yahoo/container/handler/AccessLogRequestHandlerTest.java
+++ b/container-core/src/test/java/com/yahoo/container/handler/AccessLogRequestHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler;
import com.yahoo.container.jdisc.HttpResponse;
diff --git a/container-core/src/test/java/com/yahoo/container/handler/LogHandlerTest.java b/container-core/src/test/java/com/yahoo/container/handler/LogHandlerTest.java
index 38683c75375..4c7cb5475dd 100644
--- a/container-core/src/test/java/com/yahoo/container/handler/LogHandlerTest.java
+++ b/container-core/src/test/java/com/yahoo/container/handler/LogHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler;
import com.yahoo.container.jdisc.AsyncHttpResponse;
diff --git a/container-core/src/test/java/com/yahoo/container/handler/LogReaderTest.java b/container-core/src/test/java/com/yahoo/container/handler/LogReaderTest.java
index ad9398a5eec..120ee49031d 100644
--- a/container-core/src/test/java/com/yahoo/container/handler/LogReaderTest.java
+++ b/container-core/src/test/java/com/yahoo/container/handler/LogReaderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler;
import com.yahoo.vespa.test.file.TestFileSystem;
diff --git a/container-core/src/test/java/com/yahoo/container/handler/VipStatusHandlerTestCase.java b/container-core/src/test/java/com/yahoo/container/handler/VipStatusHandlerTestCase.java
index de9289a1e9d..e95dbcbcb22 100644
--- a/container-core/src/test/java/com/yahoo/container/handler/VipStatusHandlerTestCase.java
+++ b/container-core/src/test/java/com/yahoo/container/handler/VipStatusHandlerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler;
import com.google.inject.Key;
diff --git a/container-core/src/test/java/com/yahoo/container/handler/VipStatusTestCase.java b/container-core/src/test/java/com/yahoo/container/handler/VipStatusTestCase.java
index bce9fe318d5..168dd2cac7b 100644
--- a/container-core/src/test/java/com/yahoo/container/handler/VipStatusTestCase.java
+++ b/container-core/src/test/java/com/yahoo/container/handler/VipStatusTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler;
import com.yahoo.container.QrSearchersConfig;
diff --git a/container-core/src/test/java/com/yahoo/container/handler/test/MockServiceTest.java b/container-core/src/test/java/com/yahoo/container/handler/test/MockServiceTest.java
index cd5a3ce860a..604fe9494d7 100644
--- a/container-core/src/test/java/com/yahoo/container/handler/test/MockServiceTest.java
+++ b/container-core/src/test/java/com/yahoo/container/handler/test/MockServiceTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler.test;
import com.yahoo.container.jdisc.HttpRequest;
diff --git a/container-core/src/test/java/com/yahoo/container/handler/threadpool/DefaultContainerThreadPoolTest.java b/container-core/src/test/java/com/yahoo/container/handler/threadpool/DefaultContainerThreadPoolTest.java
index 8b1ed12c796..2233ea44b2e 100644
--- a/container-core/src/test/java/com/yahoo/container/handler/threadpool/DefaultContainerThreadPoolTest.java
+++ b/container-core/src/test/java/com/yahoo/container/handler/threadpool/DefaultContainerThreadPoolTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler.threadpool;
import com.yahoo.collections.Tuple2;
@@ -21,6 +21,9 @@ import static org.junit.Assert.fail;
* @author bjorncs
*/
public class DefaultContainerThreadPoolTest {
+
+ private static final int CPUS = 16;
+
@Test
public final void testThreadPool() throws InterruptedException {
ContainerThreadpoolConfig config = new ContainerThreadpoolConfig(new ContainerThreadpoolConfig.Builder().maxThreads(1));
@@ -55,8 +58,12 @@ public class DefaultContainerThreadPoolTest {
}
private ThreadPoolExecutor createPool(int maxThreads, int queueSize) {
- ContainerThreadpoolConfig config = new ContainerThreadpoolConfig(new ContainerThreadpoolConfig.Builder().maxThreads(maxThreads).queueSize(queueSize));
- ContainerThreadPool threadPool = new DefaultContainerThreadpool(config, Mockito.mock(Metric.class));
+ ContainerThreadpoolConfig config = new ContainerThreadpoolConfig(new ContainerThreadpoolConfig.Builder()
+ .maxThreads(maxThreads)
+ .minThreads(maxThreads)
+ .queueSize(queueSize));
+ ContainerThreadPool threadPool = new DefaultContainerThreadpool(
+ config, Mockito.mock(Metric.class), new MockProcessTerminator(), CPUS);
ExecutorServiceWrapper wrapper = (ExecutorServiceWrapper) threadPool.executor();
WorkerCompletionTimingThreadPoolExecutor executor = (WorkerCompletionTimingThreadPoolExecutor)wrapper.delegate();
return executor;
@@ -64,27 +71,27 @@ public class DefaultContainerThreadPoolTest {
@Test
public void testThatThreadPoolSizeFollowsConfig() {
- ThreadPoolExecutor executor = createPool(3, 9);
+ ThreadPoolExecutor executor = createPool(3, 1200);
assertEquals(3, executor.getMaximumPoolSize());
- assertEquals(9, executor.getQueue().remainingCapacity());
+ assertEquals(1200, executor.getQueue().remainingCapacity());
}
@Test
public void testThatThreadPoolSizeAutoDetected() {
ThreadPoolExecutor executor = createPool(0, 0);
- assertEquals(Runtime.getRuntime().availableProcessors()*4, executor.getMaximumPoolSize());
+ assertEquals(CPUS*4, executor.getMaximumPoolSize());
assertEquals(0, executor.getQueue().remainingCapacity());
}
@Test
public void testThatQueueSizeAutoDetected() {
- ThreadPoolExecutor executor = createPool(3, -1);
- assertEquals(3, executor.getMaximumPoolSize());
- assertEquals(executor.getMaximumPoolSize()*4, executor.getQueue().remainingCapacity());
+ ThreadPoolExecutor executor = createPool(24, -50);
+ assertEquals(24, executor.getMaximumPoolSize());
+ assertEquals(24*50, executor.getQueue().remainingCapacity());
}
@Test
public void testThatThreadPoolSizeAndQueueSizeAutoDetected() {
- ThreadPoolExecutor executor = createPool(0, -1);
- assertEquals(Runtime.getRuntime().availableProcessors()*4, executor.getMaximumPoolSize());
- assertEquals(executor.getMaximumPoolSize()*4, executor.getQueue().remainingCapacity());
+ ThreadPoolExecutor executor = createPool(0, -100);
+ assertEquals(CPUS*4, executor.getMaximumPoolSize());
+ assertEquals(CPUS*4*100, executor.getQueue().remainingCapacity());
}
private class FlipIt implements Runnable {
diff --git a/container-core/src/test/java/com/yahoo/container/jdisc/ExtendedResponseTestCase.java b/container-core/src/test/java/com/yahoo/container/jdisc/ExtendedResponseTestCase.java
index 5026b5e949a..400697af2a8 100644
--- a/container-core/src/test/java/com/yahoo/container/jdisc/ExtendedResponseTestCase.java
+++ b/container-core/src/test/java/com/yahoo/container/jdisc/ExtendedResponseTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import static org.junit.Assert.*;
diff --git a/container-core/src/test/java/com/yahoo/container/jdisc/HttpRequestTestCase.java b/container-core/src/test/java/com/yahoo/container/jdisc/HttpRequestTestCase.java
index 6af1de2e4d9..7fcca89b0d3 100644
--- a/container-core/src/test/java/com/yahoo/container/jdisc/HttpRequestTestCase.java
+++ b/container-core/src/test/java/com/yahoo/container/jdisc/HttpRequestTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import static org.junit.Assert.*;
diff --git a/container-core/src/test/java/com/yahoo/container/jdisc/HttpResponseTestCase.java b/container-core/src/test/java/com/yahoo/container/jdisc/HttpResponseTestCase.java
index 1cc88ec2337..8dfa9a83988 100644
--- a/container-core/src/test/java/com/yahoo/container/jdisc/HttpResponseTestCase.java
+++ b/container-core/src/test/java/com/yahoo/container/jdisc/HttpResponseTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import static org.junit.Assert.*;
diff --git a/container-core/src/test/java/com/yahoo/container/jdisc/LoggingRequestHandlerTestCase.java b/container-core/src/test/java/com/yahoo/container/jdisc/LoggingRequestHandlerTestCase.java
index 34144ee8a59..4563000793d 100644
--- a/container-core/src/test/java/com/yahoo/container/jdisc/LoggingRequestHandlerTestCase.java
+++ b/container-core/src/test/java/com/yahoo/container/jdisc/LoggingRequestHandlerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.google.inject.Key;
diff --git a/container-core/src/test/java/com/yahoo/container/jdisc/LoggingTestCase.java b/container-core/src/test/java/com/yahoo/container/jdisc/LoggingTestCase.java
index bdaf6f7919f..ee76b3c5321 100644
--- a/container-core/src/test/java/com/yahoo/container/jdisc/LoggingTestCase.java
+++ b/container-core/src/test/java/com/yahoo/container/jdisc/LoggingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.yahoo.jdisc.handler.CompletionHandler;
diff --git a/container-core/src/test/java/com/yahoo/container/jdisc/RequestBuilderTestCase.java b/container-core/src/test/java/com/yahoo/container/jdisc/RequestBuilderTestCase.java
index 500f488c692..9967ead052d 100644
--- a/container-core/src/test/java/com/yahoo/container/jdisc/RequestBuilderTestCase.java
+++ b/container-core/src/test/java/com/yahoo/container/jdisc/RequestBuilderTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import static org.junit.Assert.*;
diff --git a/container-core/src/test/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandlerTest.java b/container-core/src/test/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandlerTest.java
index 3d02f3e08f2..9207fb34935 100644
--- a/container-core/src/test/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandlerTest.java
+++ b/container-core/src/test/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.yahoo.jdisc.Metric;
diff --git a/container-core/src/test/java/com/yahoo/container/jdisc/ThreadedRequestHandlerTestCase.java b/container-core/src/test/java/com/yahoo/container/jdisc/ThreadedRequestHandlerTestCase.java
index cfea0f5c38b..d1036ce0e45 100644
--- a/container-core/src/test/java/com/yahoo/container/jdisc/ThreadedRequestHandlerTestCase.java
+++ b/container-core/src/test/java/com/yahoo/container/jdisc/ThreadedRequestHandlerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.yahoo.container.jdisc.ThreadedHttpRequestHandler.MaxPendingContentChannelOutputStream;
diff --git a/container-core/src/test/java/com/yahoo/container/jdisc/state/MetricSnapshotTest.java b/container-core/src/test/java/com/yahoo/container/jdisc/state/MetricSnapshotTest.java
index 4c4621a55e5..82349dd6af9 100644
--- a/container-core/src/test/java/com/yahoo/container/jdisc/state/MetricSnapshotTest.java
+++ b/container-core/src/test/java/com/yahoo/container/jdisc/state/MetricSnapshotTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.state;
import org.junit.Test;
diff --git a/container-core/src/test/java/com/yahoo/container/jdisc/state/MetricsPacketsHandlerTest.java b/container-core/src/test/java/com/yahoo/container/jdisc/state/MetricsPacketsHandlerTest.java
index 5a386ed2d89..99a31640429 100644
--- a/container-core/src/test/java/com/yahoo/container/jdisc/state/MetricsPacketsHandlerTest.java
+++ b/container-core/src/test/java/com/yahoo/container/jdisc/state/MetricsPacketsHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.state;
import com.fasterxml.jackson.databind.JsonNode;
diff --git a/container-core/src/test/java/com/yahoo/container/jdisc/state/MockSnapshotProvider.java b/container-core/src/test/java/com/yahoo/container/jdisc/state/MockSnapshotProvider.java
index 0895aad83ab..623e19fa382 100644
--- a/container-core/src/test/java/com/yahoo/container/jdisc/state/MockSnapshotProvider.java
+++ b/container-core/src/test/java/com/yahoo/container/jdisc/state/MockSnapshotProvider.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.state;
import java.io.PrintStream;
diff --git a/container-core/src/test/java/com/yahoo/container/jdisc/state/StateHandlerTest.java b/container-core/src/test/java/com/yahoo/container/jdisc/state/StateHandlerTest.java
index 0b7bf572e64..8f800707f7a 100644
--- a/container-core/src/test/java/com/yahoo/container/jdisc/state/StateHandlerTest.java
+++ b/container-core/src/test/java/com/yahoo/container/jdisc/state/StateHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.state;
import com.fasterxml.jackson.databind.JsonNode;
diff --git a/container-core/src/test/java/com/yahoo/container/logging/CircularArrayAccessLogKeeperTest.java b/container-core/src/test/java/com/yahoo/container/logging/CircularArrayAccessLogKeeperTest.java
index 5d9509eb045..c69e293750c 100644
--- a/container-core/src/test/java/com/yahoo/container/logging/CircularArrayAccessLogKeeperTest.java
+++ b/container-core/src/test/java/com/yahoo/container/logging/CircularArrayAccessLogKeeperTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
import org.junit.Test;
diff --git a/container-core/src/test/java/com/yahoo/container/logging/JSONLogTestCase.java b/container-core/src/test/java/com/yahoo/container/logging/JSONLogTestCase.java
index b058089d71c..eb862d69b5b 100644
--- a/container-core/src/test/java/com/yahoo/container/logging/JSONLogTestCase.java
+++ b/container-core/src/test/java/com/yahoo/container/logging/JSONLogTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
import com.yahoo.yolean.trace.TraceNode;
diff --git a/container-core/src/test/java/com/yahoo/container/logging/JsonConnectionLogWriterTest.java b/container-core/src/test/java/com/yahoo/container/logging/JsonConnectionLogWriterTest.java
index 66b3da06ff2..d113e5abba8 100644
--- a/container-core/src/test/java/com/yahoo/container/logging/JsonConnectionLogWriterTest.java
+++ b/container-core/src/test/java/com/yahoo/container/logging/JsonConnectionLogWriterTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
import com.yahoo.test.json.JsonTestHelper;
diff --git a/container-core/src/test/java/com/yahoo/container/logging/LogFileHandlerTestCase.java b/container-core/src/test/java/com/yahoo/container/logging/LogFileHandlerTestCase.java
index d43e3dcebbe..5dc9b72bafe 100644
--- a/container-core/src/test/java/com/yahoo/container/logging/LogFileHandlerTestCase.java
+++ b/container-core/src/test/java/com/yahoo/container/logging/LogFileHandlerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging;
import com.yahoo.compress.ZstdCompressor;
diff --git a/container-core/src/test/java/com/yahoo/container/logging/test/LogFormatterTestCase.java b/container-core/src/test/java/com/yahoo/container/logging/test/LogFormatterTestCase.java
index ecacf95d100..382f17f072f 100644
--- a/container-core/src/test/java/com/yahoo/container/logging/test/LogFormatterTestCase.java
+++ b/container-core/src/test/java/com/yahoo/container/logging/test/LogFormatterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.logging.test;
import com.yahoo.container.logging.LogFormatter;
diff --git a/container-core/src/test/java/com/yahoo/container/xml/providers/XMLProviderTest.java b/container-core/src/test/java/com/yahoo/container/xml/providers/XMLProviderTest.java
index e3b546c3c22..e9983341507 100644
--- a/container-core/src/test/java/com/yahoo/container/xml/providers/XMLProviderTest.java
+++ b/container-core/src/test/java/com/yahoo/container/xml/providers/XMLProviderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.xml.providers;
import org.junit.Test;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/CookieTestCase.java b/container-core/src/test/java/com/yahoo/jdisc/http/CookieTestCase.java
index dbdce5c704e..cf43a6470bc 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/CookieTestCase.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/CookieTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http;
import org.junit.Test;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/HttpHeadersTestCase.java b/container-core/src/test/java/com/yahoo/jdisc/http/HttpHeadersTestCase.java
index d8ce4a6da0c..3ab4fb1078c 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/HttpHeadersTestCase.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/HttpHeadersTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http;
import org.junit.Test;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java b/container-core/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java
index a3cb31d5ecb..fd0cfe5718c 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http;
import com.yahoo.jdisc.Container;
@@ -73,6 +73,7 @@ public class HttpRequestTestCase {
}
@Test
+ @SuppressWarnings("deprecation")
public void requireThatAccessorsWork() {
URI uri = URI.create("http://localhost/path?foo=bar&foo=baz&cox=69");
InetSocketAddress address = new InetSocketAddress("remotehost", 69);
@@ -201,6 +202,7 @@ public class HttpRequestTestCase {
private static CurrentContainer mockContainer() {
final CurrentContainer currentContainer = mock(CurrentContainer.class);
when(currentContainer.newReference(any(URI.class))).thenReturn(mock(Container.class));
+ when(currentContainer.newReference(any(URI.class), any(Object.class))).thenReturn(mock(Container.class));
return currentContainer;
}
}
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/HttpResponseTestCase.java b/container-core/src/test/java/com/yahoo/jdisc/http/HttpResponseTestCase.java
index 61499200f3c..c4cf1de0e4e 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/HttpResponseTestCase.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/HttpResponseTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http;
import com.yahoo.jdisc.Container;
@@ -134,6 +134,7 @@ public class HttpResponseTestCase {
private static CurrentContainer mockContainer() {
final CurrentContainer currentContainer = mock(CurrentContainer.class);
when(currentContainer.newReference(any(URI.class))).thenReturn(mock(Container.class));
+ when(currentContainer.newReference(any(URI.class), any(Object.class))).thenReturn(mock(Container.class));
return currentContainer;
}
}
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/filter/DiscFilterRequestTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/filter/DiscFilterRequestTest.java
index 1c05a3f3db2..6c945520c1b 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/filter/DiscFilterRequestTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/filter/DiscFilterRequestTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.yahoo.jdisc.HeaderFields;
@@ -38,7 +38,7 @@ public class DiscFilterRequestTest {
HttpRequest httpReq = newRequest(uri, HttpRequest.Method.GET, HttpRequest.Version.HTTP_1_1);
httpReq.headers().add(HttpHeaders.Names.CONTENT_TYPE, "text/html;charset=UTF-8");
httpReq.headers().add("X-Custom-Header", "custom_header");
- List<Cookie> cookies = new ArrayList<Cookie>();
+ List<Cookie> cookies = new ArrayList<>();
cookies.add(new Cookie("XYZ", "value"));
cookies.add(new Cookie("ABC", "value"));
httpReq.encodeCookieHeader(cookies);
@@ -77,7 +77,7 @@ public class DiscFilterRequestTest {
DiscFilterRequest request = new JdiscFilterRequest(httpReq);
request.setAttribute("some_attr", "some_value");
- Assert.assertEquals(request.containsAttribute("some_attr"),true);
+ Assert.assertTrue(request.containsAttribute("some_attr"));
Assert.assertEquals(request.getAttribute("some_attr"),"some_value");
@@ -94,8 +94,8 @@ public class DiscFilterRequestTest {
Enumeration<String> e = request.getAttributeNames();
List<String> attrList = Collections.list(e);
Assert.assertEquals(2, attrList.size());
- Assert.assertEquals(attrList.contains("some_attr_1"), true);
- Assert.assertEquals(attrList.contains("some_attr_2"), true);
+ Assert.assertTrue(attrList.contains("some_attr_1"));
+ Assert.assertTrue(attrList.contains("some_attr_2"));
}
@@ -106,11 +106,11 @@ public class DiscFilterRequestTest {
DiscFilterRequest request = new JdiscFilterRequest(httpReq);
request.setAttribute("some_attr", "some_value");
- Assert.assertEquals(request.containsAttribute("some_attr"),true);
+ Assert.assertTrue(request.containsAttribute("some_attr"));
request.removeAttribute("some_attr");
- Assert.assertEquals(request.containsAttribute("some_attr"),false);
+ Assert.assertFalse(request.containsAttribute("some_attr"));
}
@Test
@@ -182,7 +182,7 @@ public class DiscFilterRequestTest {
httpReq.headers().add("header_2", "value2");
DiscFilterRequest request = new JdiscFilterRequest(httpReq);
- Assert.assertEquals(request.getHeaderNamesAsList() instanceof List, true);
+ Assert.assertNotNull(request.getHeaderNamesAsList());
Assert.assertEquals(request.getHeaderNamesAsList().size(), 3);
}
@@ -192,7 +192,7 @@ public class DiscFilterRequestTest {
HttpRequest httpReq = newRequest(uri, HttpRequest.Method.GET, HttpRequest.Version.HTTP_1_1);
DiscFilterRequest request = new JdiscFilterRequest(httpReq);
- Assert.assertEquals(request.getHeaderNamesAsList() instanceof List, true);
+ Assert.assertNotNull(request.getHeaderNamesAsList());
Assert.assertEquals(request.getHeaderNamesAsList().size(), 0);
httpReq.headers().add("header_1", "value1");
@@ -209,20 +209,20 @@ public class DiscFilterRequestTest {
httpReq.headers().add(HttpHeaders.Names.CONTENT_TYPE, "multipart/form-data");
DiscFilterRequest request = new JdiscFilterRequest(httpReq);
- Assert.assertEquals(true,DiscFilterRequest.isMultipart(request));
+ Assert.assertTrue(DiscFilterRequest.isMultipart(request));
httpReq = newRequest(uri, HttpRequest.Method.GET, HttpRequest.Version.HTTP_1_1);
httpReq.headers().add(HttpHeaders.Names.CONTENT_TYPE, "text/html;charset=UTF-8");
request = new JdiscFilterRequest(httpReq);
- Assert.assertEquals(DiscFilterRequest.isMultipart(request),false);
+ Assert.assertFalse(DiscFilterRequest.isMultipart(request));
- Assert.assertEquals(DiscFilterRequest.isMultipart(null),false);
+ Assert.assertFalse(DiscFilterRequest.isMultipart(null));
httpReq = newRequest(uri, HttpRequest.Method.GET, HttpRequest.Version.HTTP_1_1);
request = new JdiscFilterRequest(httpReq);
- Assert.assertEquals(DiscFilterRequest.isMultipart(request),false);
+ Assert.assertFalse(DiscFilterRequest.isMultipart(request));
}
@Test
@@ -244,7 +244,7 @@ public class DiscFilterRequestTest {
}
@Test
- public void testCharacterEncoding() throws Exception {
+ public void testCharacterEncoding() {
URI uri = URI.create("http://example.yahoo.com:8080/test");
HttpRequest httpReq = newRequest(uri, HttpRequest.Method.GET, HttpRequest.Version.HTTP_1_1);
DiscFilterRequest request = new JdiscFilterRequest(httpReq);
@@ -263,7 +263,8 @@ public class DiscFilterRequestTest {
}
@Test
- public void testSetScheme() throws Exception {
+ @SuppressWarnings("deprecation")
+ public void testSetScheme() {
URI uri = URI.create("https://example.yahoo.com:8080/test");
HttpRequest httpReq = newRequest(uri, HttpRequest.Method.GET, HttpRequest.Version.HTTP_1_1);
DiscFilterRequest request = new JdiscFilterRequest(httpReq);
@@ -274,7 +275,8 @@ public class DiscFilterRequestTest {
}
@Test
- public void testGetServerPort() throws Exception {
+ @SuppressWarnings("deprecation")
+ public void testGetServerPort() {
URI uri = URI.create("http://example.yahoo.com/test");
HttpRequest httpReq = newRequest(uri, HttpRequest.Method.GET, HttpRequest.Version.HTTP_1_1);
DiscFilterRequest request = new JdiscFilterRequest(httpReq);
@@ -286,14 +288,15 @@ public class DiscFilterRequestTest {
}
@Test
- public void testIsSecure() throws Exception {
+ @SuppressWarnings("deprecation")
+ public void testIsSecure() {
URI uri = URI.create("http://example.yahoo.com/test");
HttpRequest httpReq = newRequest(uri, HttpRequest.Method.GET, HttpRequest.Version.HTTP_1_1);
DiscFilterRequest request = new JdiscFilterRequest(httpReq);
- Assert.assertEquals(request.isSecure(), false);
+ Assert.assertFalse(request.isSecure());
request.setUri(URI.create("https://example.yahoo.com/test"));
- Assert.assertEquals(request.isSecure(), true);
+ Assert.assertTrue(request.isSecure());
}
@@ -321,7 +324,7 @@ public class DiscFilterRequestTest {
}
@Test
- public void testClearCookies() throws Exception {
+ public void testClearCookies() {
URI uri = URI.create("http://example.yahoo.com/test");
HttpRequest httpReq = newRequest(uri, HttpRequest.Method.GET, HttpRequest.Version.HTTP_1_1);
httpReq.headers().put(HttpHeaders.Names.COOKIE, "XYZ=value");
@@ -331,7 +334,7 @@ public class DiscFilterRequestTest {
}
@Test
- public void testGetWrapedCookies() throws Exception {
+ public void testGetWrapedCookies() {
URI uri = URI.create("http://example.yahoo.com/test");
HttpRequest httpReq = newRequest(uri, HttpRequest.Method.GET, HttpRequest.Version.HTTP_1_1);
httpReq.headers().put(HttpHeaders.Names.COOKIE, "XYZ=value");
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/filter/DiscFilterResponseTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/filter/DiscFilterResponseTest.java
index b349cb8d803..c49a4deed4e 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/filter/DiscFilterResponseTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/filter/DiscFilterResponseTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.yahoo.jdisc.Request;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/filter/EmptyRequestFilterTestCase.java b/container-core/src/test/java/com/yahoo/jdisc/http/filter/EmptyRequestFilterTestCase.java
index f4418e74169..214ee6b91cc 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/filter/EmptyRequestFilterTestCase.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/filter/EmptyRequestFilterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.yahoo.jdisc.Container;
@@ -43,6 +43,7 @@ public class EmptyRequestFilterTestCase {
final Method method, final String uri, final Version version) {
final CurrentContainer currentContainer = mock(CurrentContainer.class);
when(currentContainer.newReference(any(URI.class))).thenReturn(mock(Container.class));
+ when(currentContainer.newReference(any(URI.class), any(Object.class))).thenReturn(mock(Container.class));
return HttpRequest.newServerRequest(currentContainer, URI.create(uri), method, version);
}
}
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/filter/EmptyResponseFilterTestCase.java b/container-core/src/test/java/com/yahoo/jdisc/http/filter/EmptyResponseFilterTestCase.java
index e6d7259ea41..91bc0b1aa4c 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/filter/EmptyResponseFilterTestCase.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/filter/EmptyResponseFilterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.yahoo.jdisc.Container;
@@ -40,6 +40,7 @@ public class EmptyResponseFilterTestCase {
private static HttpRequest newRequest(final Method method, final String uri, final Version version) {
final CurrentContainer currentContainer = mock(CurrentContainer.class);
when(currentContainer.newReference(any(URI.class))).thenReturn(mock(Container.class));
+ when(currentContainer.newReference(any(URI.class), any(Object.class))).thenReturn(mock(Container.class));
return HttpRequest.newServerRequest(currentContainer, URI.create(uri), method, version);
}
}
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/filter/JDiscCookieWrapperTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/filter/JDiscCookieWrapperTest.java
index 9948e5bfe7f..36217012fb0 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/filter/JDiscCookieWrapperTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/filter/JDiscCookieWrapperTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.yahoo.jdisc.http.Cookie;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/filter/RequestViewImplTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/filter/RequestViewImplTest.java
index ec0e0a33d35..ab682ea9059 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/filter/RequestViewImplTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/filter/RequestViewImplTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.google.common.collect.Lists;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/filter/ResponseHeaderFilter.java b/container-core/src/test/java/com/yahoo/jdisc/http/filter/ResponseHeaderFilter.java
index 3855c3a494b..15741805b41 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/filter/ResponseHeaderFilter.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/filter/ResponseHeaderFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.yahoo.jdisc.AbstractResource;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/filter/SecurityRequestFilterChainTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/filter/SecurityRequestFilterChainTest.java
index be19313dee2..46d6be2e73b 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/filter/SecurityRequestFilterChainTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/filter/SecurityRequestFilterChainTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.yahoo.jdisc.AbstractResource;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/filter/SecurityResponseFilterChainTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/filter/SecurityResponseFilterChainTest.java
index 25291de5cc1..d44fdbfd39b 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/filter/SecurityResponseFilterChainTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/filter/SecurityResponseFilterChainTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.yahoo.jdisc.AbstractResource;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/filter/ServletFilterRequestTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/filter/ServletFilterRequestTest.java
index ed4c9b66068..dfd240d3723 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/filter/ServletFilterRequestTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/filter/ServletFilterRequestTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.yahoo.jdisc.http.Cookie;
@@ -86,6 +86,7 @@ public class ServletFilterRequestTest {
}
@Test
+ @SuppressWarnings("deprecation")
public void uri_can_be_set() throws Exception {
URI newUri = new URI("http", null, host, port + 1, path, paramName + "=" + paramValue, null);
filterRequest.setUri(newUri);
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/filter/ServletFilterResponseTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/filter/ServletFilterResponseTest.java
index a2bc2badea3..1b49ad7ddd1 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/filter/ServletFilterResponseTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/filter/ServletFilterResponseTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
import com.yahoo.jdisc.http.Cookie;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/filter/util/FilterUtilsTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/filter/util/FilterUtilsTest.java
new file mode 100644
index 00000000000..16883f1a48e
--- /dev/null
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/filter/util/FilterUtilsTest.java
@@ -0,0 +1,48 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.jdisc.http.filter.util;
+
+import com.yahoo.container.jdisc.RequestHandlerTestDriver;
+import com.yahoo.jdisc.Response;
+import com.yahoo.jdisc.http.Cookie;
+import org.junit.Test;
+
+import java.util.List;
+import java.util.Map;
+
+import static com.yahoo.jdisc.http.filter.util.FilterUtils.sendMessageResponse;
+import static com.yahoo.jdisc.http.filter.util.FilterUtils.sendRedirectResponse;
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author valerijf
+ */
+public class FilterUtilsTest {
+
+ private static final List<Cookie> cookies = List.of(new Cookie("my-cookie", "value1"), new Cookie("second-cookie", "value2"));
+
+ @Test
+ public void redirect_test() {
+ RequestHandlerTestDriver.MockResponseHandler responseHandler = new RequestHandlerTestDriver.MockResponseHandler();
+
+ String location = "http://domain.tld/path?query";
+ sendRedirectResponse(responseHandler, cookies, location);
+ assertEquals(302, responseHandler.getStatus());
+ assertHeaders(responseHandler.getResponse(), Map.entry("Location", location), Map.entry("Set-Cookie", "my-cookie=value1"), Map.entry("Set-Cookie", "second-cookie=value2"));
+ }
+
+ @Test
+ public void message_response() {
+ RequestHandlerTestDriver.MockResponseHandler responseHandler = new RequestHandlerTestDriver.MockResponseHandler();
+
+ sendMessageResponse(responseHandler, List.of(), 404, "Not found");
+ assertEquals(404, responseHandler.getStatus());
+ assertHeaders(responseHandler.getResponse());
+ assertEquals("{\n \"message\" : \"Not found\"\n}", responseHandler.readAll());
+ }
+
+ @SafeVarargs
+ @SuppressWarnings("varargs")
+ private static void assertHeaders(Response response, Map.Entry<String, String>... expectedHeaders) {
+ assertEquals(List.of(expectedHeaders), response.headers().entries());
+ }
+} \ No newline at end of file
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLogTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLogTest.java
index c45d17a4ff8..65f871e47ea 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLogTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLogTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.container.logging.AccessLogEntry;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/BlockingQueueRequestLog.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/BlockingQueueRequestLog.java
index c1a2bea8ac4..9cf921685a7 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/BlockingQueueRequestLog.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/BlockingQueueRequestLog.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.container.logging.RequestLog;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ConnectionThrottlerTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ConnectionThrottlerTest.java
index 65eb7e1c145..add7e458fbd 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ConnectionThrottlerTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ConnectionThrottlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.http.ConnectorConfig;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactoryTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactoryTest.java
index bb736122867..b47df9d5931 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactoryTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactoryTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.Metric;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/EchoRequestHandler.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/EchoRequestHandler.java
index 9610648ad41..d66731c7401 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/EchoRequestHandler.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/EchoRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.Request;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ErrorResponseContentCreatorTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ErrorResponseContentCreatorTest.java
index d66f22801f7..796adebb5e8 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ErrorResponseContentCreatorTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ErrorResponseContentCreatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
@@ -6,7 +6,6 @@ import org.junit.Test;
import javax.servlet.http.HttpServletResponse;
import java.nio.charset.StandardCharsets;
-import java.util.Optional;
import static org.junit.Assert.assertEquals;
@@ -36,7 +35,7 @@ public class ErrorResponseContentCreatorTest {
byte[] rawContent = c.createErrorContent(
"http://foo.bar",
HttpServletResponse.SC_OK,
- Optional.of("My custom error message"));
+ "My custom error message");
String actualHtml = new String(rawContent, StandardCharsets.ISO_8859_1);
assertEquals(expectedHtml, actualHtml);
}
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ExceptionWrapperTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ExceptionWrapperTest.java
index de8df283afe..153d3f34899 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ExceptionWrapperTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ExceptionWrapperTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import org.junit.Test;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/FilterTestCase.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/FilterTestCase.java
index 43f722df3c9..9bf928ae12b 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/FilterTestCase.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/FilterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.google.inject.AbstractModule;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/Http2Test.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/Http2Test.java
new file mode 100644
index 00000000000..5df4f672f06
--- /dev/null
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/Http2Test.java
@@ -0,0 +1,67 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.jdisc.http.server.jetty;
+
+import com.yahoo.container.logging.ConnectionLog;
+import com.yahoo.container.logging.ConnectionLogEntry;
+import com.yahoo.jdisc.http.ConnectorConfig;
+import com.yahoo.jdisc.http.ServerConfig;
+import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
+import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
+import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
+
+import java.nio.file.Path;
+
+import static com.yahoo.jdisc.Response.Status.OK;
+import static com.yahoo.jdisc.http.server.jetty.Utils.createHttp2Client;
+import static com.yahoo.jdisc.http.server.jetty.Utils.createSslTestDriver;
+import static com.yahoo.jdisc.http.server.jetty.Utils.generatePrivateKeyAndCertificate;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * @author bjorncs
+ */
+class Http2Test {
+ @Test
+ void requireThatServerCanRespondToHttp2Request(@TempDir Path tmpFolder) throws Exception {
+ Path privateKeyFile = tmpFolder.resolve("private-key.pem");
+ Path certificateFile = tmpFolder.resolve("certificate.pem");
+ generatePrivateKeyAndCertificate(privateKeyFile, certificateFile);
+
+ MetricConsumerMock metricConsumer = new MetricConsumerMock();
+ InMemoryConnectionLog connectionLog = new InMemoryConnectionLog();
+ JettyTestDriver driver = createSslTestDriver(certificateFile, privateKeyFile, metricConsumer, connectionLog);
+ try (CloseableHttpAsyncClient client = createHttp2Client(driver)) {
+ String uri = "https://localhost:" + driver.server().getListenPort() + "/status.html";
+ SimpleHttpResponse response = client.execute(SimpleRequestBuilder.get(uri).build(), null).get();
+ assertNull(response.getBodyText());
+ assertEquals(OK, response.getCode());
+ }
+ assertTrue(driver.close());
+ ConnectionLogEntry entry = connectionLog.logEntries().get(0);
+ assertEquals("HTTP/2.0", entry.httpProtocol().get());
+ }
+
+ @Test
+ void requireThatServerCanRespondToHttp2PlainTextRequest() throws Exception {
+ InMemoryConnectionLog connectionLog = new InMemoryConnectionLog();
+ JettyTestDriver driver = JettyTestDriver.newConfiguredInstance(
+ new EchoRequestHandler(),
+ new ServerConfig.Builder().connectionLog(new ServerConfig.ConnectionLog.Builder().enabled(true)),
+ new ConnectorConfig.Builder(),
+ binder -> binder.bind(ConnectionLog.class).toInstance(connectionLog));
+ try (CloseableHttpAsyncClient client = createHttp2Client(driver)) {
+ String uri = "http://localhost:" + driver.server().getListenPort() + "/status.html";
+ SimpleHttpResponse response = client.execute(SimpleRequestBuilder.get(uri).build(), null).get();
+ assertNull(response.getBodyText());
+ assertEquals(OK, response.getCode());
+ }
+ assertTrue(driver.close());
+ ConnectionLogEntry entry = connectionLog.logEntries().get(0);
+ assertEquals("HTTP/2.0", entry.httpProtocol().get());
+ }
+
+}
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpRequestFactoryTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpRequestFactoryTest.java
index fbbf3074839..e2ebdf7a8fc 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpRequestFactoryTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpRequestFactoryTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.google.inject.Key;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpResponseStatisticsCollectorTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpResponseStatisticsCollectorTest.java
index bb92d75bed5..a08b9cfa96e 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpResponseStatisticsCollectorTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpResponseStatisticsCollectorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.http.server.jetty.HttpResponseStatisticsCollector.StatisticsEntry;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerConformanceTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerConformanceTest.java
index 4c45319daf6..613c5e88cf2 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerConformanceTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerConformanceTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.google.inject.AbstractModule;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java
index bd3000a0188..0be9b52fc38 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.google.inject.AbstractModule;
@@ -34,10 +34,7 @@ import org.apache.hc.client5.http.entity.mime.FormBodyPart;
import org.apache.hc.client5.http.entity.mime.FormBodyPartBuilder;
import org.apache.hc.client5.http.entity.mime.StringBody;
import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
-import org.apache.hc.client5.http.impl.async.H2AsyncClientBuilder;
-import org.apache.hc.client5.http.ssl.ClientTlsStrategyBuilder;
import org.apache.hc.core5.http.ContentType;
-import org.apache.hc.core5.http.nio.ssl.TlsStrategy;
import org.assertj.core.api.Assertions;
import org.eclipse.jetty.server.handler.AbstractHandlerContainer;
import org.junit.Rule;
@@ -61,6 +58,7 @@ import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.UUID;
+import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.regex.Pattern;
@@ -78,6 +76,7 @@ import static com.yahoo.jdisc.http.HttpHeaders.Names.X_DISABLE_CHUNKING;
import static com.yahoo.jdisc.http.HttpHeaders.Values.APPLICATION_X_WWW_FORM_URLENCODED;
import static com.yahoo.jdisc.http.HttpHeaders.Values.CLOSE;
import static com.yahoo.jdisc.http.server.jetty.SimpleHttpClient.ResponseValidator;
+import static com.yahoo.jdisc.http.server.jetty.Utils.createHttp2Client;
import static com.yahoo.jdisc.http.server.jetty.Utils.createSslTestDriver;
import static com.yahoo.jdisc.http.server.jetty.Utils.generatePrivateKeyAndCertificate;
import static org.cthul.matchers.CthulMatchers.containsPattern;
@@ -89,8 +88,8 @@ import static org.hamcrest.CoreMatchers.startsWith;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
@@ -456,11 +455,28 @@ public class HttpServerTest {
@Test
public void requireThatConnectionIsClosedAfterXRequests() throws Exception {
- final int MAX_KEEPALIVE_REQUESTS = 100;
- final JettyTestDriver driver = JettyTestDriver.newConfiguredInstance(new EchoRequestHandler(),
- new ServerConfig.Builder(),
- new ConnectorConfig.Builder().maxRequestsPerConnection(MAX_KEEPALIVE_REQUESTS));
- for (int i = 0; i < MAX_KEEPALIVE_REQUESTS - 1; i++) {
+ final int MAX_REQUESTS = 10;
+ Path privateKeyFile = tmpFolder.newFile().toPath();
+ Path certificateFile = tmpFolder.newFile().toPath();
+ generatePrivateKeyAndCertificate(privateKeyFile, certificateFile);
+ ConnectorConfig.Builder connectorConfig = new ConnectorConfig.Builder()
+ .maxRequestsPerConnection(MAX_REQUESTS)
+ .ssl(new ConnectorConfig.Ssl.Builder()
+ .enabled(true)
+ .clientAuth(ConnectorConfig.Ssl.ClientAuth.Enum.NEED_AUTH)
+ .privateKeyFile(privateKeyFile.toString())
+ .certificateFile(certificateFile.toString())
+ .caCertificateFile(certificateFile.toString()));
+ ServerConfig.Builder serverConfig = new ServerConfig.Builder()
+ .connectionLog(new ServerConfig.ConnectionLog.Builder().enabled(true));
+ JettyTestDriver driver = JettyTestDriver.newConfiguredInstance(
+ new EchoRequestHandler(),
+ serverConfig,
+ connectorConfig,
+ binder -> {});
+
+ // HTTP/1.1
+ for (int i = 0; i < MAX_REQUESTS - 1; i++) {
driver.client().get("/status.html")
.expectStatusCode(is(OK))
.expectNoHeader(CONNECTION);
@@ -468,6 +484,22 @@ public class HttpServerTest {
driver.client().get("/status.html")
.expectStatusCode(is(OK))
.expectHeader(CONNECTION, is(CLOSE));
+
+ // HTTP/2
+ try (CloseableHttpAsyncClient client = createHttp2Client(driver)) {
+ String uri = "https://localhost:" + driver.server().getListenPort() + "/status.html";
+ for (int i = 0; i < MAX_REQUESTS - 1; i++) {
+ SimpleHttpResponse response = client.execute(SimpleRequestBuilder.get(uri).build(), null).get();
+ assertEquals(OK, response.getCode());
+ }
+ try {
+ client.execute(SimpleRequestBuilder.get(uri).build(), null).get();
+ fail();
+ } catch (ExecutionException e) {
+ // Note: this is a weakness with Apache Http Client 5; the failed stream/request will not be retried on a new connection
+ assertEquals(e.getMessage(), "org.apache.hc.core5.http2.H2StreamResetException: Stream refused");
+ }
+ }
assertTrue(driver.close());
}
@@ -483,25 +515,6 @@ public class HttpServerTest {
assertTrue(driver.close());
}
- @Test
- public void requireThatServerCanRespondToHttp2Request() throws Exception {
- Path privateKeyFile = tmpFolder.newFile().toPath();
- Path certificateFile = tmpFolder.newFile().toPath();
- generatePrivateKeyAndCertificate(privateKeyFile, certificateFile);
-
- MetricConsumerMock metricConsumer = new MetricConsumerMock();
- InMemoryConnectionLog connectionLog = new InMemoryConnectionLog();
- JettyTestDriver driver = createSslTestDriver(certificateFile, privateKeyFile, metricConsumer, connectionLog);
- try (CloseableHttpAsyncClient client = createHttp2Client(driver)) {
- String uri = "https://localhost:" + driver.server().getListenPort() + "/status.html";
- SimpleHttpResponse response = client.execute(SimpleRequestBuilder.get(uri).build(), null).get();
- assertNull(response.getBodyText());
- assertEquals(OK, response.getCode());
- }
- assertTrue(driver.close());
- ConnectionLogEntry entry = connectionLog.logEntries().get(0);
- assertEquals("HTTP/2.0", entry.httpProtocol().get());
- }
@Test
public void requireThatTlsClientAuthenticationEnforcerRejectsRequestsForNonWhitelistedPaths() throws IOException {
@@ -701,17 +714,27 @@ public class HttpServerTest {
.set(MetricDefinitions.REQUESTS_PER_CONNECTION, 1L, MetricConsumerMock.STATIC_CONTEXT);
}
+ @Test
+ public void uriWithEmptyPathSegmentIsAllowed() throws Exception {
+ Path privateKeyFile = tmpFolder.newFile().toPath();
+ Path certificateFile = tmpFolder.newFile().toPath();
+ generatePrivateKeyAndCertificate(privateKeyFile, certificateFile);
+ MetricConsumerMock metricConsumer = new MetricConsumerMock();
+ InMemoryConnectionLog connectionLog = new InMemoryConnectionLog();
+ JettyTestDriver driver = createSslTestDriver(certificateFile, privateKeyFile, metricConsumer, connectionLog);
+ String uriPath = "/path/with/empty//segment";
+
+ // HTTP/1.1
+ driver.client().get(uriPath).expectStatusCode(is(OK));
- private static CloseableHttpAsyncClient createHttp2Client(JettyTestDriver driver) {
- TlsStrategy tlsStrategy = ClientTlsStrategyBuilder.create()
- .setSslContext(driver.sslContext())
- .build();
- var client = H2AsyncClientBuilder.create()
- .disableAutomaticRetries()
- .setTlsStrategy(tlsStrategy)
- .build();
- client.start();
- return client;
+ // HTTP/2
+ try (CloseableHttpAsyncClient client = createHttp2Client(driver)) {
+ String uri = "https://localhost:" + driver.server().getListenPort() + uriPath;
+ SimpleHttpResponse response = client.execute(SimpleRequestBuilder.get(uri).build(), null).get();
+ assertEquals(OK, response.getCode());
+ }
+
+ assertTrue(driver.close());
}
private static JettyTestDriver createSslWithTlsClientAuthenticationEnforcer(Path certificateFile, Path privateKeyFile) {
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/InMemoryConnectionLog.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/InMemoryConnectionLog.java
index 6d1baf0423f..80fb2ebbbbe 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/InMemoryConnectionLog.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/InMemoryConnectionLog.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.container.logging.ConnectionLog;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/InMemoryRequestLog.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/InMemoryRequestLog.java
index b87ec5e8b8b..d22f49fab9a 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/InMemoryRequestLog.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/InMemoryRequestLog.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.container.logging.RequestLog;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/JDiscHttpServletTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/JDiscHttpServletTest.java
index d46531ad844..494f33ca04b 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/JDiscHttpServletTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/JDiscHttpServletTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.Request;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/JettyMockRequestBuilder.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/JettyMockRequestBuilder.java
index 4bf6afeb3f1..e62825fc2a8 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/JettyMockRequestBuilder.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/JettyMockRequestBuilder.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.http.ConnectorConfig;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/JettyMockResponseBuilder.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/JettyMockResponseBuilder.java
index 6addb966208..6c45bcec197 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/JettyMockResponseBuilder.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/JettyMockResponseBuilder.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import org.eclipse.jetty.http.MetaData;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/JettyTestDriver.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/JettyTestDriver.java
index 57438cbe207..815dc6df3fc 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/JettyTestDriver.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/JettyTestDriver.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.google.inject.Module;
@@ -75,7 +75,6 @@ public class JettyTestDriver {
requestHandler,
new ServerConfig.Builder().connectionLog(new ServerConfig.ConnectionLog.Builder().enabled(true)),
new ConnectorConfig.Builder()
- .http2Enabled(true)
.ssl(new ConnectorConfig.Ssl.Builder()
.enabled(true)
.clientAuth(tlsClientAuth == TlsClientAuth.NEED
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/MetricConsumerMock.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/MetricConsumerMock.java
index f839d83a800..59a7cea62c9 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/MetricConsumerMock.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/MetricConsumerMock.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.google.inject.Module;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ProxyProtocolTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ProxyProtocolTest.java
index d29abea024e..159a2f8ed5e 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ProxyProtocolTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/ProxyProtocolTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.container.logging.ConnectionLog;
@@ -119,7 +119,6 @@ class ProxyProtocolTest {
Path certificateFile, Path privateKeyFile, RequestLog requestLog,
ConnectionLog connectionLog, boolean mixedMode) {
ConnectorConfig.Builder connectorConfig = new ConnectorConfig.Builder()
- .http2Enabled(true)
.proxyProtocol(new ConnectorConfig.ProxyProtocol.Builder()
.enabled(true)
.mixedMode(mixedMode))
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/SimpleHttpClient.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/SimpleHttpClient.java
index 161f48d847d..c2a6e0326e2 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/SimpleHttpClient.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/SimpleHttpClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import org.apache.hc.client5.http.SystemDefaultDnsResolver;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/SslHandshakeFailedListenerTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/SslHandshakeFailedListenerTest.java
index 20f050d715d..cf7e1de4381 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/SslHandshakeFailedListenerTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/SslHandshakeFailedListenerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.jdisc.Metric;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/SslHandshakeMetricsTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/SslHandshakeMetricsTest.java
index 0f71dd87d00..ef3e52304c6 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/SslHandshakeMetricsTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/SslHandshakeMetricsTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.container.logging.ConnectionLogEntry;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/Utils.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/Utils.java
index 626ab521773..5b341e0a3e6 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/Utils.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/Utils.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;
import com.google.inject.Module;
@@ -9,6 +9,10 @@ import com.yahoo.security.Pkcs10Csr;
import com.yahoo.security.Pkcs10CsrBuilder;
import com.yahoo.security.X509CertificateBuilder;
import com.yahoo.security.X509CertificateUtils;
+import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
+import org.apache.hc.client5.http.impl.async.H2AsyncClientBuilder;
+import org.apache.hc.client5.http.ssl.ClientTlsStrategyBuilder;
+import org.apache.hc.core5.http.nio.ssl.TlsStrategy;
import javax.security.auth.x500.X500Principal;
import java.io.IOException;
@@ -65,4 +69,17 @@ class Utils {
.build();
Files.writeString(certificateFile, X509CertificateUtils.toPem(certificate));
}
+
+ static CloseableHttpAsyncClient createHttp2Client(JettyTestDriver driver) {
+ TlsStrategy tlsStrategy = ClientTlsStrategyBuilder.create()
+ .setSslContext(driver.sslContext())
+ .build();
+ var client = H2AsyncClientBuilder.create()
+ .disableAutomaticRetries()
+ .setTlsStrategy(tlsStrategy)
+ .build();
+ client.start();
+ return client;
+ }
+
}
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/servlet/JDiscFilterForServletTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/servlet/JDiscFilterForServletTest.java
index 0479374854c..c6d416b2b99 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/servlet/JDiscFilterForServletTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/servlet/JDiscFilterForServletTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty.servlet;
import com.google.inject.AbstractModule;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/servlet/ServletAccessLoggingTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/servlet/ServletAccessLoggingTest.java
index 39d28465b17..17802b7f466 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/servlet/ServletAccessLoggingTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/servlet/ServletAccessLoggingTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty.servlet;
import com.google.inject.AbstractModule;
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/servlet/ServletTestBase.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/servlet/ServletTestBase.java
index e1f1a818ab0..f13769dec38 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/servlet/ServletTestBase.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/servlet/ServletTestBase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty.servlet;
import com.google.inject.AbstractModule;
diff --git a/container-core/src/test/java/com/yahoo/metrics/simple/BucketTest.java b/container-core/src/test/java/com/yahoo/metrics/simple/BucketTest.java
index b33da4bd531..cc5d110d423 100644
--- a/container-core/src/test/java/com/yahoo/metrics/simple/BucketTest.java
+++ b/container-core/src/test/java/com/yahoo/metrics/simple/BucketTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
import static org.junit.Assert.*;
diff --git a/container-core/src/test/java/com/yahoo/metrics/simple/CounterTest.java b/container-core/src/test/java/com/yahoo/metrics/simple/CounterTest.java
index dc097f71a6b..f579b1584aa 100644
--- a/container-core/src/test/java/com/yahoo/metrics/simple/CounterTest.java
+++ b/container-core/src/test/java/com/yahoo/metrics/simple/CounterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
import static org.junit.Assert.*;
diff --git a/container-core/src/test/java/com/yahoo/metrics/simple/DimensionsCacheTest.java b/container-core/src/test/java/com/yahoo/metrics/simple/DimensionsCacheTest.java
index 0fde3bcf588..b1b1ff28aeb 100644
--- a/container-core/src/test/java/com/yahoo/metrics/simple/DimensionsCacheTest.java
+++ b/container-core/src/test/java/com/yahoo/metrics/simple/DimensionsCacheTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
import static org.junit.Assert.*;
diff --git a/container-core/src/test/java/com/yahoo/metrics/simple/GaugeTest.java b/container-core/src/test/java/com/yahoo/metrics/simple/GaugeTest.java
index fef56c27114..0d4d6360f20 100644
--- a/container-core/src/test/java/com/yahoo/metrics/simple/GaugeTest.java
+++ b/container-core/src/test/java/com/yahoo/metrics/simple/GaugeTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
import static org.junit.Assert.*;
diff --git a/container-core/src/test/java/com/yahoo/metrics/simple/MetricsTest.java b/container-core/src/test/java/com/yahoo/metrics/simple/MetricsTest.java
index 0450e5db5f5..83173782118 100644
--- a/container-core/src/test/java/com/yahoo/metrics/simple/MetricsTest.java
+++ b/container-core/src/test/java/com/yahoo/metrics/simple/MetricsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
import static org.junit.Assert.*;
diff --git a/container-core/src/test/java/com/yahoo/metrics/simple/PointTest.java b/container-core/src/test/java/com/yahoo/metrics/simple/PointTest.java
index 802bea3c463..ca680c805ef 100644
--- a/container-core/src/test/java/com/yahoo/metrics/simple/PointTest.java
+++ b/container-core/src/test/java/com/yahoo/metrics/simple/PointTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple;
import org.junit.Test;
diff --git a/container-core/src/test/java/com/yahoo/metrics/simple/jdisc/SnapshotConverterTest.java b/container-core/src/test/java/com/yahoo/metrics/simple/jdisc/SnapshotConverterTest.java
index 13f7ba55e61..4d4229e8369 100644
--- a/container-core/src/test/java/com/yahoo/metrics/simple/jdisc/SnapshotConverterTest.java
+++ b/container-core/src/test/java/com/yahoo/metrics/simple/jdisc/SnapshotConverterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.metrics.simple.jdisc;
import com.yahoo.container.jdisc.state.CountMetric;
diff --git a/container-core/src/test/java/com/yahoo/osgi/provider/model/ComponentModelTest.java b/container-core/src/test/java/com/yahoo/osgi/provider/model/ComponentModelTest.java
index dd723c5f7ba..2b1a8a42149 100644
--- a/container-core/src/test/java/com/yahoo/osgi/provider/model/ComponentModelTest.java
+++ b/container-core/src/test/java/com/yahoo/osgi/provider/model/ComponentModelTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.osgi.provider.model;
import com.yahoo.container.bundle.BundleInstantiationSpecification;
diff --git a/container-core/src/test/java/com/yahoo/processing/ResponseTestCase.java b/container-core/src/test/java/com/yahoo/processing/ResponseTestCase.java
index 02c6049de49..0f16aed3d0b 100644
--- a/container-core/src/test/java/com/yahoo/processing/ResponseTestCase.java
+++ b/container-core/src/test/java/com/yahoo/processing/ResponseTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing;
import com.yahoo.processing.response.ArrayDataList;
diff --git a/container-core/src/test/java/com/yahoo/processing/execution/test/AsyncExecutionTestCase.java b/container-core/src/test/java/com/yahoo/processing/execution/test/AsyncExecutionTestCase.java
index b821461fdc6..22f69a87bc3 100644
--- a/container-core/src/test/java/com/yahoo/processing/execution/test/AsyncExecutionTestCase.java
+++ b/container-core/src/test/java/com/yahoo/processing/execution/test/AsyncExecutionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.execution.test;
import com.yahoo.component.chain.Chain;
diff --git a/container-core/src/test/java/com/yahoo/processing/execution/test/ExecutionContextTestCase.java b/container-core/src/test/java/com/yahoo/processing/execution/test/ExecutionContextTestCase.java
index 9c4d4de47dc..c8c489b2f9d 100644
--- a/container-core/src/test/java/com/yahoo/processing/execution/test/ExecutionContextTestCase.java
+++ b/container-core/src/test/java/com/yahoo/processing/execution/test/ExecutionContextTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.execution.test;
import com.yahoo.component.chain.Chain;
diff --git a/container-core/src/test/java/com/yahoo/processing/execution/test/FutureDataTestCase.java b/container-core/src/test/java/com/yahoo/processing/execution/test/FutureDataTestCase.java
index c22e34515bf..40e7384c745 100644
--- a/container-core/src/test/java/com/yahoo/processing/execution/test/FutureDataTestCase.java
+++ b/container-core/src/test/java/com/yahoo/processing/execution/test/FutureDataTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.execution.test;
import com.yahoo.component.chain.Chain;
diff --git a/container-core/src/test/java/com/yahoo/processing/execution/test/StreamingTestCase.java b/container-core/src/test/java/com/yahoo/processing/execution/test/StreamingTestCase.java
index 6ab37f54d7b..1ebf01c5f33 100644
--- a/container-core/src/test/java/com/yahoo/processing/execution/test/StreamingTestCase.java
+++ b/container-core/src/test/java/com/yahoo/processing/execution/test/StreamingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.execution.test;
import com.google.common.util.concurrent.MoreExecutors;
diff --git a/container-core/src/test/java/com/yahoo/processing/handler/ProcessingHandlerTestCase.java b/container-core/src/test/java/com/yahoo/processing/handler/ProcessingHandlerTestCase.java
index ae1076a4773..eddaf91986d 100644
--- a/container-core/src/test/java/com/yahoo/processing/handler/ProcessingHandlerTestCase.java
+++ b/container-core/src/test/java/com/yahoo/processing/handler/ProcessingHandlerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.handler;
import com.google.common.util.concurrent.SettableFuture;
diff --git a/container-core/src/test/java/com/yahoo/processing/processors/MockUserDatabaseClient.java b/container-core/src/test/java/com/yahoo/processing/processors/MockUserDatabaseClient.java
index 7c1e2e9f4c0..698e70f01e4 100644
--- a/container-core/src/test/java/com/yahoo/processing/processors/MockUserDatabaseClient.java
+++ b/container-core/src/test/java/com/yahoo/processing/processors/MockUserDatabaseClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.processors;
import com.yahoo.component.chain.dependencies.Provides;
diff --git a/container-core/src/test/java/com/yahoo/processing/processors/MockUserDatabaseClientTest.java b/container-core/src/test/java/com/yahoo/processing/processors/MockUserDatabaseClientTest.java
index 0bb6bc28493..8de08189f7a 100644
--- a/container-core/src/test/java/com/yahoo/processing/processors/MockUserDatabaseClientTest.java
+++ b/container-core/src/test/java/com/yahoo/processing/processors/MockUserDatabaseClientTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.processors;
import com.yahoo.component.chain.Chain;
diff --git a/container-core/src/test/java/com/yahoo/processing/rendering/AsynchronousSectionedRendererTest.java b/container-core/src/test/java/com/yahoo/processing/rendering/AsynchronousSectionedRendererTest.java
index 7a977fbaecd..ce2b54ba6ff 100644
--- a/container-core/src/test/java/com/yahoo/processing/rendering/AsynchronousSectionedRendererTest.java
+++ b/container-core/src/test/java/com/yahoo/processing/rendering/AsynchronousSectionedRendererTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.rendering;
import com.google.common.util.concurrent.ListenableFuture;
diff --git a/container-core/src/test/java/com/yahoo/processing/rendering/TestContentChannel.java b/container-core/src/test/java/com/yahoo/processing/rendering/TestContentChannel.java
index df7e1be0bba..cc93f35d572 100644
--- a/container-core/src/test/java/com/yahoo/processing/rendering/TestContentChannel.java
+++ b/container-core/src/test/java/com/yahoo/processing/rendering/TestContentChannel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.rendering;
import com.yahoo.jdisc.handler.CompletionHandler;
diff --git a/container-core/src/test/java/com/yahoo/processing/request/CompoundNameTestCase.java b/container-core/src/test/java/com/yahoo/processing/request/CompoundNameTestCase.java
index 382abe8d2ca..841866f1e83 100644
--- a/container-core/src/test/java/com/yahoo/processing/request/CompoundNameTestCase.java
+++ b/container-core/src/test/java/com/yahoo/processing/request/CompoundNameTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.request;
import static org.junit.Assert.*;
diff --git a/container-core/src/test/java/com/yahoo/processing/request/test/CompoundNameBenchmark.java b/container-core/src/test/java/com/yahoo/processing/request/test/CompoundNameBenchmark.java
index 002b6bac4a8..81ddc42f6c3 100644
--- a/container-core/src/test/java/com/yahoo/processing/request/test/CompoundNameBenchmark.java
+++ b/container-core/src/test/java/com/yahoo/processing/request/test/CompoundNameBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.request.test;
import com.yahoo.processing.request.CompoundName;
diff --git a/container-core/src/test/java/com/yahoo/processing/request/test/CompoundNameTestCase.java b/container-core/src/test/java/com/yahoo/processing/request/test/CompoundNameTestCase.java
index f5033565786..df9e77938a6 100644
--- a/container-core/src/test/java/com/yahoo/processing/request/test/CompoundNameTestCase.java
+++ b/container-core/src/test/java/com/yahoo/processing/request/test/CompoundNameTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.request.test;
import com.yahoo.processing.request.CompoundName;
diff --git a/container-core/src/test/java/com/yahoo/processing/request/test/ErrorMessageTestCase.java b/container-core/src/test/java/com/yahoo/processing/request/test/ErrorMessageTestCase.java
index 70f4a7720ee..fd152dccb96 100644
--- a/container-core/src/test/java/com/yahoo/processing/request/test/ErrorMessageTestCase.java
+++ b/container-core/src/test/java/com/yahoo/processing/request/test/ErrorMessageTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.request.test;
import com.yahoo.processing.request.ErrorMessage;
diff --git a/container-core/src/test/java/com/yahoo/processing/request/test/PropertyMapTestCase.java b/container-core/src/test/java/com/yahoo/processing/request/test/PropertyMapTestCase.java
index 3c351d341d0..5d7d1e63b21 100644
--- a/container-core/src/test/java/com/yahoo/processing/request/test/PropertyMapTestCase.java
+++ b/container-core/src/test/java/com/yahoo/processing/request/test/PropertyMapTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.request.test;
import com.yahoo.processing.request.properties.PropertyMap;
diff --git a/container-core/src/test/java/com/yahoo/processing/request/test/RequestTestCase.java b/container-core/src/test/java/com/yahoo/processing/request/test/RequestTestCase.java
index 032fdd71f88..a791c535b5d 100644
--- a/container-core/src/test/java/com/yahoo/processing/request/test/RequestTestCase.java
+++ b/container-core/src/test/java/com/yahoo/processing/request/test/RequestTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.request.test;
import com.yahoo.processing.Request;
diff --git a/container-core/src/test/java/com/yahoo/processing/test/DocumentationTestCase.java b/container-core/src/test/java/com/yahoo/processing/test/DocumentationTestCase.java
index ca8fb377f09..2028d39f973 100644
--- a/container-core/src/test/java/com/yahoo/processing/test/DocumentationTestCase.java
+++ b/container-core/src/test/java/com/yahoo/processing/test/DocumentationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.test;
import static org.junit.Assert.*;
diff --git a/container-core/src/test/java/com/yahoo/processing/test/ProcessingTestCase.java b/container-core/src/test/java/com/yahoo/processing/test/ProcessingTestCase.java
index 77c2ca7d10d..3f11663a1d7 100644
--- a/container-core/src/test/java/com/yahoo/processing/test/ProcessingTestCase.java
+++ b/container-core/src/test/java/com/yahoo/processing/test/ProcessingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.test;
import com.yahoo.component.chain.Chain;
diff --git a/container-core/src/test/java/com/yahoo/processing/test/documentation/AsyncDataProcessingInitiator.java b/container-core/src/test/java/com/yahoo/processing/test/documentation/AsyncDataProcessingInitiator.java
index 0de20b962d7..67a6634b659 100644
--- a/container-core/src/test/java/com/yahoo/processing/test/documentation/AsyncDataProcessingInitiator.java
+++ b/container-core/src/test/java/com/yahoo/processing/test/documentation/AsyncDataProcessingInitiator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.test.documentation;
import com.google.common.util.concurrent.MoreExecutors;
diff --git a/container-core/src/test/java/com/yahoo/processing/test/documentation/AsyncDataProducer.java b/container-core/src/test/java/com/yahoo/processing/test/documentation/AsyncDataProducer.java
index c6c9c0d785b..fc79ec944eb 100644
--- a/container-core/src/test/java/com/yahoo/processing/test/documentation/AsyncDataProducer.java
+++ b/container-core/src/test/java/com/yahoo/processing/test/documentation/AsyncDataProducer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.test.documentation;
import com.yahoo.processing.Processor;
diff --git a/container-core/src/test/java/com/yahoo/processing/test/documentation/ExampleProcessor.java b/container-core/src/test/java/com/yahoo/processing/test/documentation/ExampleProcessor.java
index 6a1e0cbdd58..fad9883ba0e 100644
--- a/container-core/src/test/java/com/yahoo/processing/test/documentation/ExampleProcessor.java
+++ b/container-core/src/test/java/com/yahoo/processing/test/documentation/ExampleProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.test.documentation;
import com.yahoo.processing.*;
diff --git a/container-core/src/test/java/com/yahoo/processing/test/documentation/Federator.java b/container-core/src/test/java/com/yahoo/processing/test/documentation/Federator.java
index 079c4912fd9..f4d5ceb786d 100644
--- a/container-core/src/test/java/com/yahoo/processing/test/documentation/Federator.java
+++ b/container-core/src/test/java/com/yahoo/processing/test/documentation/Federator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.processing.test.documentation;
import com.yahoo.component.chain.Chain;
diff --git a/container-core/src/test/java/com/yahoo/restapi/PathTest.java b/container-core/src/test/java/com/yahoo/restapi/PathTest.java
index 8d5a9bd6591..865c8976c56 100644
--- a/container-core/src/test/java/com/yahoo/restapi/PathTest.java
+++ b/container-core/src/test/java/com/yahoo/restapi/PathTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.restapi;
import org.junit.Test;
diff --git a/container-core/src/test/java/com/yahoo/restapi/RestApiImplTest.java b/container-core/src/test/java/com/yahoo/restapi/RestApiImplTest.java
index 06fc6d80741..151b17a921f 100644
--- a/container-core/src/test/java/com/yahoo/restapi/RestApiImplTest.java
+++ b/container-core/src/test/java/com/yahoo/restapi/RestApiImplTest.java
@@ -1,14 +1,18 @@
-package com.yahoo.restapi;// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.restapi;// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.fasterxml.jackson.annotation.JsonProperty;
-import com.yahoo.container.jdisc.HttpRequest;
+import com.yahoo.container.jdisc.AclMapping;
+import com.yahoo.container.jdisc.HttpRequestBuilder;
import com.yahoo.container.jdisc.HttpResponse;
+import com.yahoo.container.jdisc.RequestHandlerSpec;
+import com.yahoo.container.jdisc.RequestView;
import com.yahoo.test.json.JsonTestHelper;
import com.yahoo.yolean.Exceptions;
import org.junit.jupiter.api.Test;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
+import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.time.Instant;
import java.util.ArrayList;
@@ -16,6 +20,7 @@ import java.util.List;
import java.util.Map;
import static com.yahoo.jdisc.http.HttpRequest.Method;
+import static com.yahoo.restapi.RestApi.handlerConfig;
import static com.yahoo.restapi.RestApi.route;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -103,25 +108,49 @@ class RestApiImplTest {
}
@Test
- public void uri_builder_creates_valid_uri_prefix() {
+ void uri_builder_creates_valid_uri_prefix() {
RestApi restApi = RestApi.builder()
.addRoute(route("/test").get(ctx -> new MessageResponse(ctx.uriBuilder().toString())))
.build();
verifyJsonResponse(restApi, Method.GET, "/test", null, 200, "{\"message\":\"http://localhost\"}");
+ verifyJsonResponse(restApi, Method.GET, "/test", null, 200, "{\"message\":\"http://mydomain:81\"}", Map.of("Host", "mydomain:81"));
}
- private static void verifyJsonResponse(RestApi restApi, Method method, String path, String requestContent, int expectedStatusCode, String expectedJson) {
- HttpRequest testRequest;
- String uri = "http://localhost" + path;
+ @Test
+ void resolves_correct_acl_action() {
+ AclMapping.Action customAclAction = AclMapping.Action.custom("custom-action");
+ RestApi restApi = RestApi.builder()
+ .addRoute(route("/api1")
+ .get(ctx -> new MessageResponse(ctx.aclAction().name()),
+ handlerConfig().withCustomAclAction(customAclAction)))
+ .addRoute(route("/api2")
+ .post(ctx -> new MessageResponse(ctx.aclAction().name())))
+ .build();
+
+ verifyJsonResponse(restApi, Method.GET, "/api1", null, 200, "{\"message\":\"custom-action\"}");
+ verifyJsonResponse(restApi, Method.POST, "/api2", "ignored", 200, "{\"message\":\"write\"}");
+
+ RequestHandlerSpec spec = restApi.requestHandlerSpec();
+ assertRequestHandlerSpecAclMapping(spec, customAclAction, Method.GET, "/api1");
+ assertRequestHandlerSpecAclMapping(spec, AclMapping.Action.WRITE, Method.POST, "/api2");
+ }
+
+ private static void verifyJsonResponse(
+ RestApi restApi, Method method, String path, String requestContent, int expectedStatusCode,
+ String expectedJson) {
+ verifyJsonResponse(restApi, method, path, requestContent, expectedStatusCode, expectedJson, Map.of());
+ }
+
+ private static void verifyJsonResponse(
+ RestApi restApi, Method method, String path, String requestContent, int expectedStatusCode,
+ String expectedJson, Map<String, String> additionalHeaders) {
+ HttpRequestBuilder builder = HttpRequestBuilder.create(method, path);
+ additionalHeaders.forEach(builder::withHeader);
if (requestContent != null) {
- testRequest = HttpRequest.createTestRequest(
- uri, method,
- new ByteArrayInputStream(requestContent.getBytes(StandardCharsets.UTF_8)),
- Map.of("Content-Type", "application/json"));
- } else {
- testRequest = HttpRequest.createTestRequest(uri, method);
+ builder.withHeader("Content-Type", "application/json");
+ builder.withRequestContent(new ByteArrayInputStream(requestContent.getBytes(StandardCharsets.UTF_8)));
}
- HttpResponse response = restApi.handleRequest(testRequest);
+ HttpResponse response = restApi.handleRequest(builder.build());
assertEquals(expectedStatusCode, response.getStatus());
if (expectedJson != null) {
assertEquals("application/json", response.getContentType());
@@ -132,6 +161,15 @@ class RestApiImplTest {
}
}
+ private static void assertRequestHandlerSpecAclMapping(
+ RequestHandlerSpec spec, AclMapping.Action expectedAction, Method method, String uriPath) {
+ RequestView requestView = new RequestView() {
+ @Override public Method method() { return method; }
+ @Override public URI uri() { return URI.create("http://localhost" + uriPath); }
+ };
+ assertEquals(expectedAction, spec.aclMapping().get(requestView));
+ }
+
public static class TestEntity {
@JsonProperty("mystring") public String stringValue;
@JsonProperty("myinstant") public Instant instantValue;
diff --git a/container-core/src/test/vespa-configdef/config.core.int.def b/container-core/src/test/vespa-configdef/config.core.int.def
index 48a94e6bfcd..c8bb24a78ff 100644
--- a/container-core/src/test/vespa-configdef/config.core.int.def
+++ b/container-core/src/test/vespa-configdef/config.core.int.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config.core
diff --git a/container-core/src/test/vespa-configdef/config.core.string.def b/container-core/src/test/vespa-configdef/config.core.string.def
index 250dec3955e..10b0b2ccb9d 100644
--- a/container-core/src/test/vespa-configdef/config.core.string.def
+++ b/container-core/src/test/vespa-configdef/config.core.string.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config.core
diff --git a/container-core/src/test/vespa-configdef/config.di.int.def b/container-core/src/test/vespa-configdef/config.di.int.def
index a34539c4a0f..d8092edbfa8 100644
--- a/container-core/src/test/vespa-configdef/config.di.int.def
+++ b/container-core/src/test/vespa-configdef/config.di.int.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config.di
diff --git a/container-core/src/test/vespa-configdef/config.di.string.def b/container-core/src/test/vespa-configdef/config.di.string.def
index 396afe54f3f..08dfbe1eee4 100644
--- a/container-core/src/test/vespa-configdef/config.di.string.def
+++ b/container-core/src/test/vespa-configdef/config.di.string.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config.di
diff --git a/container-core/src/test/vespa-configdef/config.test.bootstrap1.def b/container-core/src/test/vespa-configdef/config.test.bootstrap1.def
index bdee16d99ea..9b0876ff413 100644
--- a/container-core/src/test/vespa-configdef/config.test.bootstrap1.def
+++ b/container-core/src/test/vespa-configdef/config.test.bootstrap1.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config.test
dummy string default=""
diff --git a/container-core/src/test/vespa-configdef/config.test.bootstrap2.def b/container-core/src/test/vespa-configdef/config.test.bootstrap2.def
index b4fbffd8ae6..e4519b00307 100644
--- a/container-core/src/test/vespa-configdef/config.test.bootstrap2.def
+++ b/container-core/src/test/vespa-configdef/config.test.bootstrap2.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config.test
dummy string default=""
diff --git a/container-core/src/test/vespa-configdef/config.test.components1.def b/container-core/src/test/vespa-configdef/config.test.components1.def
index bdee16d99ea..9b0876ff413 100644
--- a/container-core/src/test/vespa-configdef/config.test.components1.def
+++ b/container-core/src/test/vespa-configdef/config.test.components1.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config.test
dummy string default=""
diff --git a/container-core/src/test/vespa-configdef/config.test.test.def b/container-core/src/test/vespa-configdef/config.test.test.def
index d3e0ed17748..b1cecd09232 100644
--- a/container-core/src/test/vespa-configdef/config.test.test.def
+++ b/container-core/src/test/vespa-configdef/config.test.test.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config.test
diff --git a/container-core/src/test/vespa-configdef/config.test.test2.def b/container-core/src/test/vespa-configdef/config.test.test2.def
index d3e0ed17748..b1cecd09232 100644
--- a/container-core/src/test/vespa-configdef/config.test.test2.def
+++ b/container-core/src/test/vespa-configdef/config.test.test2.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config.test
diff --git a/container-core/src/test/vespa-configdef/config.test.thread-pool.def b/container-core/src/test/vespa-configdef/config.test.thread-pool.def
index 9e6b6694e84..36fd14d5241 100644
--- a/container-core/src/test/vespa-configdef/config.test.thread-pool.def
+++ b/container-core/src/test/vespa-configdef/config.test.thread-pool.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config.test
diff --git a/container-dependencies-enforcer/README.md b/container-dependencies-enforcer/README.md
index b0c341c3d0d..04c3cf92db4 100644
--- a/container-dependencies-enforcer/README.md
+++ b/container-dependencies-enforcer/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Dependencies enforcer for 3rd party container projects.
Enforces that only whitelisted dependencies are visible in
diff --git a/container-dependencies-enforcer/pom.xml b/container-dependencies-enforcer/pom.xml
index d692adac3c3..97b5ff90e28 100644
--- a/container-dependencies-enforcer/pom.xml
+++ b/container-dependencies-enforcer/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
@@ -113,14 +113,11 @@
<include>org.glassfish.hk2:hk2-utils:[${hk2.version}]:jar:provided</include>
<include>org.glassfish.hk2:osgi-resource-locator:[${hk2.osgi-resource-locator.version}]:jar:provided</include>
<include>org.glassfish.jersey.bundles.repackaged:jersey-guava:[${jersey2.version}]:jar:provided</include>
- <include>org.glassfish.jersey.containers:jersey-container-servlet-core:[${jersey2.version}]:jar:provided</include>
- <include>org.glassfish.jersey.containers:jersey-container-servlet:[${jersey2.version}]:jar:provided</include>
<include>org.glassfish.jersey.core:jersey-client:[${jersey2.version}]:jar:provided</include>
<include>org.glassfish.jersey.core:jersey-common:[${jersey2.version}]:jar:provided</include>
<include>org.glassfish.jersey.core:jersey-server:[${jersey2.version}]:jar:provided</include>
<include>org.glassfish.jersey.ext:jersey-entity-filtering:[${jersey2.version}]:jar:provided</include>
<include>org.glassfish.jersey.ext:jersey-proxy-client:[${jersey2.version}]:jar:provided</include>
- <include>org.glassfish.jersey.media:jersey-media-jaxb:[${jersey2.version}]:jar:provided</include>
<include>org.glassfish.jersey.media:jersey-media-json-jackson:[${jersey2.version}]:jar:provided</include>
<include>org.glassfish.jersey.media:jersey-media-multipart:[${jersey2.version}]:jar:provided</include>
<include>org.javassist:javassist:[${javassist.version}]:jar:provided</include>
@@ -144,4 +141,10 @@
</profile>
</profiles>
+ <properties>
+ <maven.javadoc.skip>true</maven.javadoc.skip>
+ <maven.deploy.skip>true</maven.deploy.skip>
+ <skipNexusStagingDeployMojo>true</skipNexusStagingDeployMojo>
+ </properties>
+
</project>
diff --git a/container-dependency-versions/pom.xml b/container-dependency-versions/pom.xml
index 29e9f85256d..e0072faa416 100644
--- a/container-dependency-versions/pom.xml
+++ b/container-dependency-versions/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.yahoo.vespa</groupId>
@@ -253,16 +253,6 @@
<version>${jersey2.version}</version>
</dependency>
<dependency>
- <groupId>org.glassfish.jersey.containers</groupId>
- <artifactId>jersey-container-servlet-core</artifactId>
- <version>${jersey2.version}</version>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jersey.containers</groupId>
- <artifactId>jersey-container-servlet</artifactId>
- <version>${jersey2.version}</version>
- </dependency>
- <dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>${jersey2.version}</version>
@@ -289,11 +279,6 @@
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
- <artifactId>jersey-media-jaxb</artifactId>
- <version>${jersey2.version}</version>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>${jersey2.version}</version>
</dependency>
@@ -367,6 +352,52 @@
</plugins>
</build>
</profile>
+ <profile>
+ <id>ossrh-deploy-vespa</id>
+ <activation>
+ <activeByDefault>false</activeByDefault>
+ </activation>
+ <properties>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-gpg-plugin</artifactId>
+ <version>${maven.gpg.plugin.version}</version>
+ <executions>
+ <execution>
+ <id>sign-artifacts</id>
+ <phase>verify</phase>
+ <goals>
+ <goal>sign</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.sonatype.plugins</groupId>
+ <artifactId>nexus-staging-maven-plugin</artifactId>
+ <version>${nexus.staging.maven.plugin.version}</version>
+ <extensions>true</extensions>
+ <configuration>
+ <serverId>ossrh</serverId>
+ <nexusUrl>https://oss.sonatype.org/</nexusUrl>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <distributionManagement>
+ <snapshotRepository>
+ <id>ossrh</id>
+ <url>${snapshotDeploymentRepository}</url>
+ </snapshotRepository>
+ <repository>
+ <id>ossrh</id>
+ <url>${releaseDeploymentRepository}</url>
+ </repository>
+ </distributionManagement>
+ </profile>
</profiles>
<properties>
diff --git a/container-dev/README.md b/container-dev/README.md
index 8c7fbc2c83c..d28bc5b39b7 100644
--- a/container-dev/README.md
+++ b/container-dev/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Container development maven dependency
Maven dependency for internal Vespa modules that should be built as JDisc bundles.
diff --git a/container-dev/pom.xml b/container-dev/pom.xml
index 6366022c342..a76f295a7b1 100644
--- a/container-dev/pom.xml
+++ b/container-dev/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!-- This module collects all common dependencies of Vespa-internal modules, i.e the non-leaf container modules -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -201,6 +201,10 @@
<groupId>org.apache.opennlp</groupId>
<artifactId>opennlp-tools</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>com.google.protobuf</groupId>
+ <artifactId>protobuf-java</artifactId>
+ </exclusion>
</exclusions>
</dependency>
<dependency>
diff --git a/container-dev/src/main/javadoc/README b/container-dev/src/main/javadoc/README
new file mode 100644
index 00000000000..6695538e308
--- /dev/null
+++ b/container-dev/src/main/javadoc/README
@@ -0,0 +1 @@
+No javadoc available for module \ No newline at end of file
diff --git a/container-disc/CMakeLists.txt b/container-disc/CMakeLists.txt
index 6c63babf66f..c6f745c7d57 100644
--- a/container-disc/CMakeLists.txt
+++ b/container-disc/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(container-disc)
vespa_install_script(src/main/sh/vespa-start-container-daemon.sh vespa-start-container-daemon bin)
diff --git a/container-disc/README.md b/container-disc/README.md
index 30a919a0fb7..c6eee3260ad 100644
--- a/container-disc/README.md
+++ b/container-disc/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
JDisc container internal integration
JDisc container integration layer with jdisc_core.
diff --git a/container-disc/pom.xml b/container-disc/pom.xml
index b255b6af02a..51eb199bdb9 100644
--- a/container-disc/pom.xml
+++ b/container-disc/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
@@ -49,6 +49,12 @@
<scope>provided</scope>
</dependency>
<dependency>
+ <groupId>com.yahoo.vespa</groupId>
+ <artifactId>security-utils</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
</dependency>
@@ -72,6 +78,10 @@
<groupId>com.yahoo.vespa</groupId>
<artifactId>config</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.bouncycastle</groupId>
+ <artifactId>*</artifactId>
+ </exclusion>
</exclusions>
</dependency>
<dependency>
@@ -167,7 +177,6 @@
<buildLegacyVespaPlatformBundle>true</buildLegacyVespaPlatformBundle>
<discPreInstallBundle>
<!-- Vespa bundles -->
- configgen.jar,
config-bundle-jar-with-dependencies.jar,
configdefinitions-jar-with-dependencies.jar,
container-search-and-docproc-jar-with-dependencies.jar,
@@ -175,15 +184,17 @@
docprocs-jar-with-dependencies.jar,
hosted-zone-api-jar-with-dependencies.jar,
jdisc-security-filters-jar-with-dependencies.jar,
+ linguistics-components-jar-with-dependencies.jar,
vespaclient-container-plugin-jar-with-dependencies.jar,
vespa-athenz-jar-with-dependencies.jar,
- security-utils-jar-with-dependencies.jar,
- defaults-jar-with-dependencies.jar,
- zkfacade-jar-with-dependencies.jar,
- zookeeper-server-jar-with-dependencies.jar,
- <!-- Apache http client repackaged as bundle -->
- container-apache-http-client-bundle-jar-with-dependencies.jar,
- <!-- Jetty -->
+ container-apache-http-client-bundle-jar-with-dependencies.jar, <!-- Apache http client repackaged as bundle -->
+
+ <!-- Vespa security utils with necessary 3rd party bundles -->
+ security-utils.jar,
+ bcpkix-jdk15on-${bouncycastle.version}.jar,
+ bcprov-jdk15on-${bouncycastle.version}.jar,
+
+ <!-- Jetty -->
alpn-api-${jetty-alpn.version}.jar,
http2-server-${jetty.version}.jar,
http2-common-${jetty.version}.jar,
@@ -200,6 +211,8 @@
jetty-servlets-${jetty.version}.jar,
jetty-util-${jetty.version}.jar,
jetty-util-ajax-${jetty.version}.jar,
+ javax.servlet-api-3.1.0.jar,
+
<!-- Spifly (required for OSGi service loader used by Jetty) -->
org.apache.aries.spifly.dynamic.bundle-${spifly.version}.jar,
asm-${asm.version}.jar,
@@ -208,10 +221,7 @@
asm-tree-${asm.version}.jar,
asm-util-${asm.version}.jar,
<!-- Spifly end -->
- <!-- Misc 3rd party bundles -->
- bcpkix-jdk15on-${bouncycastle.version}.jar,
- bcprov-jdk15on-${bouncycastle.version}.jar,
- javax.servlet-api-3.1.0.jar,
+
<!-- Jersey 2 + Jackson 2 -->
aopalliance-repackaged-${hk2.version}.jar,
hk2-api-${hk2.version}.jar,
@@ -229,11 +239,8 @@
javax.ws.rs-api-${javax.ws.rs-api.version}.jar,
jersey-client-${jersey2.version}.jar,
jersey-common-${jersey2.version}.jar,
- jersey-container-servlet-${jersey2.version}.jar,
- jersey-container-servlet-core-${jersey2.version}.jar,
- jersey-entity-filtering-${jersey2.version}.jar, <!-- new feature from 2.16, provided for convenience -->
+ jersey-entity-filtering-${jersey2.version}.jar, <!-- needed by jersey-media-json-jackson -->
jersey-guava-${jersey2.version}.jar,
- jersey-media-jaxb-${jersey2.version}.jar,
jersey-media-json-jackson-${jersey2.version}.jar,
jersey-media-multipart-${jersey2.version}.jar,
mimepull-${mimepull.version}.jar, <!-- needed by media-multipart -->
diff --git a/container-disc/src/main/java/com/yahoo/container/FilterConfigProvider.java b/container-disc/src/main/java/com/yahoo/container/FilterConfigProvider.java
index b22a8314d2b..51b64856ceb 100644
--- a/container-disc/src/main/java/com/yahoo/container/FilterConfigProvider.java
+++ b/container-disc/src/main/java/com/yahoo/container/FilterConfigProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container;
import com.yahoo.container.core.http.HttpFilterConfig;
diff --git a/container-disc/src/main/java/com/yahoo/container/config/jersey/package-info.java b/container-disc/src/main/java/com/yahoo/container/config/jersey/package-info.java
deleted file mode 100644
index 739bc118be6..00000000000
--- a/container-disc/src/main/java/com/yahoo/container/config/jersey/package-info.java
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-@ExportPackage
-package com.yahoo.container.config.jersey;
-
-import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/CertificateStoreProvider.java b/container-disc/src/main/java/com/yahoo/container/jdisc/CertificateStoreProvider.java
index 5670d9965aa..925f6c81e33 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/CertificateStoreProvider.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/CertificateStoreProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.yahoo.container.di.componentgraph.Provider;
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java b/container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java
index 0e4c4446778..219616500c8 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java
@@ -1,10 +1,12 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
+import com.google.common.util.concurrent.AtomicDouble;
import com.google.inject.AbstractModule;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.yahoo.cloud.config.SlobroksConfig;
+import com.yahoo.component.Vtag;
import com.yahoo.component.provider.ComponentRegistry;
import com.yahoo.concurrent.DaemonThreadFactory;
import com.yahoo.config.ConfigInstance;
@@ -18,7 +20,6 @@ import com.yahoo.container.di.config.Subscriber;
import com.yahoo.container.di.config.SubscriberFactory;
import com.yahoo.container.http.filter.FilterChainRepository;
import com.yahoo.container.jdisc.component.Deconstructor;
-import com.yahoo.container.jdisc.messagebus.SessionCache;
import com.yahoo.container.jdisc.metric.DisableGuiceMetric;
import com.yahoo.jdisc.Metric;
import com.yahoo.jdisc.application.Application;
@@ -41,6 +42,7 @@ import com.yahoo.log.LogSetup;
import com.yahoo.messagebus.network.rpc.SlobrokConfigSubscriber;
import com.yahoo.net.HostName;
import com.yahoo.vespa.config.ConfigKey;
+import com.yahoo.vespa.defaults.Defaults;
import com.yahoo.yolean.Exceptions;
import java.util.Collections;
@@ -53,6 +55,7 @@ import java.util.Set;
import java.util.WeakHashMap;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -65,6 +68,7 @@ public final class ConfiguredApplication implements Application {
private static final Logger log = Logger.getLogger(ConfiguredApplication.class.getName());
private static final Set<ClientProvider> startedClients = Collections.newSetFromMap(new WeakHashMap<>());
+ static final String SANITIZE_FILENAME = "[/,;]";
private static final Set<ServerProvider> startedServers = Collections.newSetFromMap(new IdentityHashMap<>());
private final SubscriberFactory subscriberFactory;
@@ -73,11 +77,12 @@ public final class ConfiguredApplication implements Application {
private final String configId;
private final OsgiFramework osgiFramework;
private final com.yahoo.jdisc.Timer timerSingleton;
+ private final AtomicBoolean dumpHeapOnShutdownTimeout = new AtomicBoolean(false);
+ private final AtomicDouble shudownTimeoutS = new AtomicDouble(50.0);
// Subscriber that is used when this is not a standalone-container. Subscribes
// to config to make sure that container will be registered in slobrok (by {@link com.yahoo.jrt.slobrok.api.Register})
// if slobrok config changes (typically slobroks moving to other nodes)
private final Optional<SlobrokConfigSubscriber> slobrokConfigSubscriber;
- private final SessionCache sessionCache;
//TODO: FilterChainRepository should instead always be set up in the model.
private final FilterChainRepository defaultFilterChainRepository =
@@ -99,7 +104,7 @@ public final class ConfiguredApplication implements Application {
static {
LogSetup.initVespaLogging("Container");
- log.log(Level.INFO, "Starting container");
+ log.log(Level.INFO, "Starting jdisc" + (Vtag.currentVersion.isEmpty() ? "" : " at version " + Vtag.currentVersion));
}
/**
@@ -127,14 +132,13 @@ public final class ConfiguredApplication implements Application {
this.slobrokConfigSubscriber = (subscriberFactory instanceof CloudSubscriberFactory)
? Optional.of(new SlobrokConfigSubscriber(configId))
: Optional.empty();
- this.sessionCache = new SessionCache(configId);
this.restrictedOsgiFramework = new DisableOsgiFramework(new RestrictedBundleContext(osgiFramework.bundleContext()));
}
@Override
public void start() {
qrConfig = getConfig(QrConfig.class, true);
-
+ reconfigure(qrConfig);
hackToInitializeServer(qrConfig);
ContainerBuilder builder = createBuilderWithGuiceBindings();
@@ -148,8 +152,8 @@ public final class ConfiguredApplication implements Application {
}
/**
- * The container has no RPC methods, but we still need an RPC sever
- * to register in Slobrok to enable orchestration
+ * The container has no RPC methods, but we still need an RPC server
+ * to register in Slobrok to enable orchestration.
*/
private Register registerInSlobrok(QrConfig qrConfig) {
if ( ! qrConfig.rpc().enabled()) return null;
@@ -223,6 +227,7 @@ public final class ConfiguredApplication implements Application {
while (true) {
subscriber.waitNextGeneration(false);
QrConfig newConfig = QrConfig.class.cast(first(subscriber.config().values()));
+ reconfigure(qrConfig);
if (qrConfig.rpc().port() != newConfig.rpc().port()) {
com.yahoo.protect.Process.logAndDie(
"Rpc port config has changed from " +
@@ -236,6 +241,11 @@ public final class ConfiguredApplication implements Application {
}
}
+ void reconfigure(QrConfig qrConfig) {
+ dumpHeapOnShutdownTimeout.set(qrConfig.shutdown().dumpHeapOnTimeout());
+ shudownTimeoutS.set(qrConfig.shutdown().timeout());
+ }
+
private void initializeAndActivateContainer(ContainerBuilder builder) {
addHandlerBindings(builder, Container.get().getRequestHandlerRegistry(),
configurer.getComponent(ApplicationContext.class).discBindingsConfig);
@@ -349,7 +359,6 @@ public final class ConfiguredApplication implements Application {
bind(OsgiFramework.class).toInstance(restrictedOsgiFramework);
bind(com.yahoo.jdisc.Timer.class).toInstance(timerSingleton);
bind(FilterChainRepository.class).toInstance(defaultFilterChainRepository);
- bind(SessionCache.class).toInstance(sessionCache); // Needed by e.g. FeedHandler
}
});
}
@@ -399,14 +408,26 @@ public final class ConfiguredApplication implements Application {
}
}
+ static String santizeFileName(String s) {
+ return s.trim()
+ .replace('\\', '.')
+ .replaceAll(SANITIZE_FILENAME, ".");
+ }
+
// Workaround for ApplicationLoader.stop not being able to shutdown
private void startShutdownDeadlineExecutor() {
shutdownDeadlineExecutor = new ScheduledThreadPoolExecutor(1, new DaemonThreadFactory("Shutdown deadline timer"));
shutdownDeadlineExecutor.setExecuteExistingDelayedTasksAfterShutdownPolicy(false);
- long delayMillis = 50 * 1000;
- shutdownDeadlineExecutor.schedule(() -> com.yahoo.protect.Process.logAndDie(
- "Timed out waiting for application shutdown. Please check that all your request handlers " +
- "drain their request content channels.", true), delayMillis, TimeUnit.MILLISECONDS);
+ long delayMillis = (long)(shudownTimeoutS.get() * 1000.0);
+ shutdownDeadlineExecutor.schedule(() -> {
+ if (dumpHeapOnShutdownTimeout.get()) {
+ String heapDumpName = Defaults.getDefaults().underVespaHome("var/crash/java_pid.") + santizeFileName(configId) + "." + ProcessHandle.current().pid() + ".hprof";
+ com.yahoo.protect.Process.dumpHeap(heapDumpName, true);
+ }
+ com.yahoo.protect.Process.logAndDie(
+ "Timed out waiting for application shutdown. Please check that all your request handlers " +
+ "drain their request content channels.", true);
+ }, delayMillis, TimeUnit.MILLISECONDS);
}
private static void addHandlerBindings(ContainerBuilder builder,
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/ContainerThreadFactory.java b/container-disc/src/main/java/com/yahoo/container/jdisc/ContainerThreadFactory.java
index 50798a82b60..92969ef9e97 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/ContainerThreadFactory.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/ContainerThreadFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.yahoo.container.jdisc.metric.MetricConsumerProvider;
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/DeprecatedSecretStoreProvider.java b/container-disc/src/main/java/com/yahoo/container/jdisc/DeprecatedSecretStoreProvider.java
index 0f47bfe2eb1..3292030784b 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/DeprecatedSecretStoreProvider.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/DeprecatedSecretStoreProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.yahoo.container.di.componentgraph.Provider;
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/DisableOsgiFramework.java b/container-disc/src/main/java/com/yahoo/container/jdisc/DisableOsgiFramework.java
index b81923c5c0a..535cc0aca4d 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/DisableOsgiFramework.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/DisableOsgiFramework.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.yahoo.jdisc.application.OsgiFramework;
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/DisabledConnectionLogProvider.java b/container-disc/src/main/java/com/yahoo/container/jdisc/DisabledConnectionLogProvider.java
index 53e479652ab..c6a58d17f03 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/DisabledConnectionLogProvider.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/DisabledConnectionLogProvider.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.yahoo.container.di.componentgraph.Provider;
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/FilterBindingsProvider.java b/container-disc/src/main/java/com/yahoo/container/jdisc/FilterBindingsProvider.java
index 6527a368113..ac47bb9d03e 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/FilterBindingsProvider.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/FilterBindingsProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.google.inject.Inject;
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/RestrictedBundleContext.java b/container-disc/src/main/java/com/yahoo/container/jdisc/RestrictedBundleContext.java
index baf7ac8c4dc..a5abff072e5 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/RestrictedBundleContext.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/RestrictedBundleContext.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import org.osgi.framework.*;
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/SystemInfoProvider.java b/container-disc/src/main/java/com/yahoo/container/jdisc/SystemInfoProvider.java
index b25517ec1f7..a34b7506666 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/SystemInfoProvider.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/SystemInfoProvider.java
@@ -1,12 +1,16 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
+import ai.vespa.cloud.Cluster;
import ai.vespa.cloud.Environment;
+import ai.vespa.cloud.Node;
import ai.vespa.cloud.SystemInfo;
import ai.vespa.cloud.Zone;
import com.google.inject.Inject;
+import com.yahoo.cloud.config.ClusterInfoConfig;
import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.component.AbstractComponent;
+import com.yahoo.container.QrConfig;
import com.yahoo.container.di.componentgraph.Provider;
/**
@@ -20,8 +24,10 @@ public class SystemInfoProvider extends AbstractComponent implements Provider<Sy
private final SystemInfo instance;
@Inject
- public SystemInfoProvider(ConfigserverConfig config) {
- this.instance = new SystemInfo(new Zone(Environment.valueOf(config.environment()), config.region()));
+ public SystemInfoProvider(ConfigserverConfig csConfig, QrConfig qrConfig, ClusterInfoConfig ciConfig) {
+ this.instance = new SystemInfo(new Zone(Environment.valueOf(csConfig.environment()), csConfig.region()),
+ new Cluster(ciConfig.nodeCount(), ciConfig.nodeIndices()),
+ new Node(qrConfig.nodeIndex()));
}
@Override
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/AthenzIdentityProvider.java b/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/AthenzIdentityProvider.java
index 26014dba08c..c1c60612b37 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/AthenzIdentityProvider.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/AthenzIdentityProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.athenz;
import javax.net.ssl.SSLContext;
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/AthenzIdentityProviderException.java b/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/AthenzIdentityProviderException.java
index 039a0535c32..fff387694c7 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/AthenzIdentityProviderException.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/AthenzIdentityProviderException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.athenz;
/**
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/package-info.java b/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/package-info.java
index d0d209733f3..8545dc2a360 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/package-info.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author mortent
*/
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/component/Deconstructor.java b/container-disc/src/main/java/com/yahoo/container/jdisc/component/Deconstructor.java
index d6a241c30c9..acf4a494a96 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/component/Deconstructor.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/component/Deconstructor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.component;
import com.yahoo.component.AbstractComponent;
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/config/package-info.java b/container-disc/src/main/java/com/yahoo/container/jdisc/config/package-info.java
index 32efe21b0b5..fc8f0318434 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/config/package-info.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/config/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.container.jdisc.config;
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/DisableGuiceMetric.java b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/DisableGuiceMetric.java
index b168b21ac1c..8dbab2c77ea 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/DisableGuiceMetric.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/DisableGuiceMetric.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.metric;
import com.yahoo.jdisc.Metric;
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/ForwardingMetricConsumer.java b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/ForwardingMetricConsumer.java
index 60b7b0335bf..aa6f2fa3465 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/ForwardingMetricConsumer.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/ForwardingMetricConsumer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.metric;
import com.yahoo.container.jdisc.MetricConsumerFactory;
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/GarbageCollectionMetrics.java b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/GarbageCollectionMetrics.java
index 17effe2136a..7bb01e76b43 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/GarbageCollectionMetrics.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/GarbageCollectionMetrics.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.metric;
import com.yahoo.jdisc.Metric;
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricConsumerProvider.java b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricConsumerProvider.java
index 9b907639e57..696f76e8228 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricConsumerProvider.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricConsumerProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.metric;
import com.google.inject.Inject;
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricConsumerProviderProvider.java b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricConsumerProviderProvider.java
index ca3d47bc338..865fa621123 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricConsumerProviderProvider.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricConsumerProviderProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.metric;
import com.google.inject.Inject;
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricProvider.java b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricProvider.java
index d18e1ee2d5d..4108ca729a0 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricProvider.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.metric;
import com.yahoo.container.di.componentgraph.Provider;
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java
index 0c26d6eefd9..8def68e9f04 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/MetricUpdater.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.metric;
import com.google.inject.Inject;
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/package-info.java b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/package-info.java
index ad16430abad..b70a1feae4e 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/package-info.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@com.yahoo.osgi.annotation.ExportPackage
package com.yahoo.container.jdisc.metric;
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/state/package-info.java b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/state/package-info.java
index a53f89175a4..c08c80fc6a8 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/metric/state/package-info.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/metric/state/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.container.jdisc.metric.state;
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/secretstore/SecretNotFoundException.java b/container-disc/src/main/java/com/yahoo/container/jdisc/secretstore/SecretNotFoundException.java
index b9439432c06..66602333db5 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/secretstore/SecretNotFoundException.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/secretstore/SecretNotFoundException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.secretstore;
/**
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/secretstore/SecretStore.java b/container-disc/src/main/java/com/yahoo/container/jdisc/secretstore/SecretStore.java
index 8af1f9860bf..5dc624ba709 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/secretstore/SecretStore.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/secretstore/SecretStore.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.secretstore;
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/secretstore/package-info.java b/container-disc/src/main/java/com/yahoo/container/jdisc/secretstore/package-info.java
index a5c555a3561..8c8a85b0ada 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/secretstore/package-info.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/secretstore/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author mortent
*/
diff --git a/container-disc/src/main/java/com/yahoo/container/usability/BindingsOverviewHandler.java b/container-disc/src/main/java/com/yahoo/container/usability/BindingsOverviewHandler.java
index df7cacdc768..b845c0d0a7c 100644
--- a/container-disc/src/main/java/com/yahoo/container/usability/BindingsOverviewHandler.java
+++ b/container-disc/src/main/java/com/yahoo/container/usability/BindingsOverviewHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.usability;
import com.fasterxml.jackson.core.JsonProcessingException;
diff --git a/container-disc/src/main/java/com/yahoo/container/usability/package-info.java b/container-disc/src/main/java/com/yahoo/container/usability/package-info.java
index b8e74b79e91..e228d23da08 100644
--- a/container-disc/src/main/java/com/yahoo/container/usability/package-info.java
+++ b/container-disc/src/main/java/com/yahoo/container/usability/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.container.usability;
diff --git a/container-disc/src/main/java/com/yahoo/jdisc/metrics/yamasconsumer/cloud/package-info.java b/container-disc/src/main/java/com/yahoo/jdisc/metrics/yamasconsumer/cloud/package-info.java
index 6e0c58f82b7..551c89e0fb5 100644
--- a/container-disc/src/main/java/com/yahoo/jdisc/metrics/yamasconsumer/cloud/package-info.java
+++ b/container-disc/src/main/java/com/yahoo/jdisc/metrics/yamasconsumer/cloud/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.jdisc.metrics.yamasconsumer.cloud;
diff --git a/container-disc/src/main/resources/configdefinitions/container.config.jersey.jersey-connection.def b/container-disc/src/main/resources/configdefinitions/container.config.jersey.jersey-connection.def
deleted file mode 100644
index b8662e07bf9..00000000000
--- a/container-disc/src/main/resources/configdefinitions/container.config.jersey.jersey-connection.def
+++ /dev/null
@@ -1,7 +0,0 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-## Do NOT move this file to the container-jersey module. If system bundles
-## like config-model import packages from container-jersey, new class
-## loaders for these bundles will be created after reconfig.
-namespace=container.config.jersey
-
-requestTimeout long default=-1
diff --git a/container-disc/src/main/resources/configdefinitions/container.config.jersey.jersey-web-app-pool.def b/container-disc/src/main/resources/configdefinitions/container.config.jersey.jersey-web-app-pool.def
deleted file mode 100644
index 52cb9f2229a..00000000000
--- a/container-disc/src/main/resources/configdefinitions/container.config.jersey.jersey-web-app-pool.def
+++ /dev/null
@@ -1,8 +0,0 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-## Do NOT move this file to the container-jersey module. If system bundles
-## like config-model import packages from container-jersey, new class
-## loaders for these bundles will be created after reconfig.
-namespace=container.config.jersey
-
-maxActiveWebApp int default=4
-maxIdleWebApp int default=4
diff --git a/container-disc/src/main/resources/configdefinitions/container.jdisc.jdisc-bindings.def b/container-disc/src/main/resources/configdefinitions/container.jdisc.jdisc-bindings.def
index c1b65d39d7a..641d674a99d 100644
--- a/container-disc/src/main/resources/configdefinitions/container.jdisc.jdisc-bindings.def
+++ b/container-disc/src/main/resources/configdefinitions/container.jdisc.jdisc-bindings.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container.jdisc
handlers{}.serverBindings[] string
diff --git a/container-disc/src/main/resources/configdefinitions/container.jdisc.secretstore.secret-store.def b/container-disc/src/main/resources/configdefinitions/container.jdisc.secretstore.secret-store.def
index 67ef4744da8..45cd45d02c0 100644
--- a/container-disc/src/main/resources/configdefinitions/container.jdisc.secretstore.secret-store.def
+++ b/container-disc/src/main/resources/configdefinitions/container.jdisc.secretstore.secret-store.def
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container.jdisc.secretstore
# remove groups after 7.376 is oldest model
diff --git a/container-disc/src/main/sh/vespa-start-container-daemon.sh b/container-disc/src/main/sh/vespa-start-container-daemon.sh
index 223124c29d6..28c2c00a921 100755
--- a/container-disc/src/main/sh/vespa-start-container-daemon.sh
+++ b/container-disc/src/main/sh/vespa-start-container-daemon.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#set -x
@@ -75,6 +75,9 @@ configure_memory() {
available_cgroup=$((available_cgroup_bytes >> 20))
available=$((available > available_cgroup ? available_cgroup : available))
fi
+ #Subtract 1G as fixed overhead for an application container.
+ reserved_mem=1024
+ available=$((available > reserved_mem ? available - reserved_mem : available))
jvm_heapsize=$((available * jvm_heapSizeAsPercentageOfPhysicalMemory / 100))
jvm_minHeapsize=${jvm_heapsize}
@@ -110,27 +113,8 @@ configure_cpu() {
}
configure_numactl() {
- log_message debug "starting ${VESPA_SERVICE_NAME} for ${VESPA_CONFIG_ID}"
- if numactl --interleave all true &> /dev/null; then
- # We are allowed to use numactl
- numnodes=$(numactl --hardware |
- grep available |
- awk '$3 == "nodes" { print $2 }')
- if [ "$VESPA_AFFINITY_CPU_SOCKET" ] &&
- [ "$numnodes" -gt 1 ]
- then
- node=$(($VESPA_AFFINITY_CPU_SOCKET % $numnodes))
- log_message debug "with affinity to $VESPA_AFFINITY_CPU_SOCKET out of $numnodes cpu sockets"
- numactlcmd="numactl --cpunodebind=$node --membind=$node"
- else
- log_message debug "with memory interleaving on all nodes"
- numactlcmd="numactl --interleave all"
- fi
- else
- log_message debug "without numactl (no permission or not available)"
- numactlcmd=""
- fi
- log_message debug "numactlcmd: $numactlcmd"
+ numactlcmd=$(get_numa_ctl_cmd)
+ log_message debug "starting ${VESPA_SERVICE_NAME} for ${VESPA_CONFIG_ID} with numactl command : $numactlcmd"
}
configure_gcopts() {
@@ -228,7 +212,6 @@ exec $numactlcmd $envcmd java \
-Djdisc.config.file="$cfpfile" \
-Djdisc.export.packages=${jdisc_export_packages} \
-Djdisc.cache.path="$bundlecachedir" \
- -Djdisc.debug.resources=false \
-Djdisc.bundle.path="${VESPA_HOME}/lib/jars" \
-Djdisc.logger.enabled=false \
-Djdisc.logger.level=ALL \
@@ -240,3 +223,4 @@ exec $numactlcmd $envcmd java \
-cp "$CP" \
"$@" \
com.yahoo.jdisc.core.StandaloneMain file:${VESPA_HOME}/lib/jars/container-disc-jar-with-dependencies.jar
+
diff --git a/container-disc/src/test/java/com/yahoo/container/jdisc/ConfiguredApplicationTest.java b/container-disc/src/test/java/com/yahoo/container/jdisc/ConfiguredApplicationTest.java
new file mode 100644
index 00000000000..c8cf5c0ce63
--- /dev/null
+++ b/container-disc/src/test/java/com/yahoo/container/jdisc/ConfiguredApplicationTest.java
@@ -0,0 +1,14 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.container.jdisc;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class ConfiguredApplicationTest {
+ @Test
+ public void testConfigId2FileName() {
+ assertEquals("admin.metrics.2088223-v6-1.ostk.bm2.prod.ne1.yahoo.com", ConfiguredApplication.santizeFileName("admin/metrics/2088223-v6-1.ostk.bm2.prod.ne1.yahoo.com"));
+ assertEquals("admin.standalone.cluster-controllers.1", ConfiguredApplication.santizeFileName("admin/standalone/cluster-controllers/1 "));
+ }
+}
diff --git a/container-disc/src/test/java/com/yahoo/container/jdisc/ContainerThreadFactoryTest.java b/container-disc/src/test/java/com/yahoo/container/jdisc/ContainerThreadFactoryTest.java
index 65aff29e7ab..ec727c506b5 100644
--- a/container-disc/src/test/java/com/yahoo/container/jdisc/ContainerThreadFactoryTest.java
+++ b/container-disc/src/test/java/com/yahoo/container/jdisc/ContainerThreadFactoryTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.yahoo.container.jdisc.metric.MetricConsumerProvider;
diff --git a/container-disc/src/test/java/com/yahoo/container/jdisc/DisableOsgiFrameworkTest.java b/container-disc/src/test/java/com/yahoo/container/jdisc/DisableOsgiFrameworkTest.java
index 875b3213c79..46acd5ce2b8 100644
--- a/container-disc/src/test/java/com/yahoo/container/jdisc/DisableOsgiFrameworkTest.java
+++ b/container-disc/src/test/java/com/yahoo/container/jdisc/DisableOsgiFrameworkTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import org.junit.Test;
diff --git a/container-disc/src/test/java/com/yahoo/container/jdisc/FilterBindingsProviderTest.java b/container-disc/src/test/java/com/yahoo/container/jdisc/FilterBindingsProviderTest.java
index c233680590d..40c66e115e4 100644
--- a/container-disc/src/test/java/com/yahoo/container/jdisc/FilterBindingsProviderTest.java
+++ b/container-disc/src/test/java/com/yahoo/container/jdisc/FilterBindingsProviderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc;
import com.yahoo.component.ComponentId;
diff --git a/container-disc/src/test/java/com/yahoo/container/jdisc/component/DeconstructorTest.java b/container-disc/src/test/java/com/yahoo/container/jdisc/component/DeconstructorTest.java
index eef5b191e75..e9a9d310380 100644
--- a/container-disc/src/test/java/com/yahoo/container/jdisc/component/DeconstructorTest.java
+++ b/container-disc/src/test/java/com/yahoo/container/jdisc/component/DeconstructorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.component;
import com.yahoo.component.AbstractComponent;
diff --git a/container-disc/src/test/java/com/yahoo/container/jdisc/metric/ForwardingMetricConsumerTest.java b/container-disc/src/test/java/com/yahoo/container/jdisc/metric/ForwardingMetricConsumerTest.java
index 37e6b13c49a..95b179c207f 100644
--- a/container-disc/src/test/java/com/yahoo/container/jdisc/metric/ForwardingMetricConsumerTest.java
+++ b/container-disc/src/test/java/com/yahoo/container/jdisc/metric/ForwardingMetricConsumerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.metric;
import com.yahoo.jdisc.Metric;
diff --git a/container-disc/src/test/java/com/yahoo/container/jdisc/metric/GarbageCollectionMetricsTest.java b/container-disc/src/test/java/com/yahoo/container/jdisc/metric/GarbageCollectionMetricsTest.java
index 33dd1dade2f..e4f8c6d76ed 100644
--- a/container-disc/src/test/java/com/yahoo/container/jdisc/metric/GarbageCollectionMetricsTest.java
+++ b/container-disc/src/test/java/com/yahoo/container/jdisc/metric/GarbageCollectionMetricsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.metric;
import com.yahoo.jdisc.Metric;
diff --git a/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricConsumerFactories.java b/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricConsumerFactories.java
index d6679a29015..07928b7a5eb 100644
--- a/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricConsumerFactories.java
+++ b/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricConsumerFactories.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.metric;
import com.yahoo.container.jdisc.MetricConsumerFactory;
diff --git a/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricConsumerProviderTest.java b/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricConsumerProviderTest.java
index 0acbb701612..e0650ad3d0c 100644
--- a/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricConsumerProviderTest.java
+++ b/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricConsumerProviderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.metric;
import com.yahoo.jdisc.application.MetricConsumer;
diff --git a/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricConsumerProviders.java b/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricConsumerProviders.java
index 4e576d2cd8c..8363705af2f 100644
--- a/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricConsumerProviders.java
+++ b/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricConsumerProviders.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.metric;
import com.yahoo.component.ComponentId;
diff --git a/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricProviderTest.java b/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricProviderTest.java
index 19ec1390722..eac3ad2f060 100644
--- a/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricProviderTest.java
+++ b/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricProviderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.metric;
import com.yahoo.container.di.componentgraph.Provider;
diff --git a/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricProviders.java b/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricProviders.java
index 5a8edcf2648..73a8e930e6f 100644
--- a/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricProviders.java
+++ b/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricProviders.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.metric;
import com.yahoo.container.jdisc.MetricConsumerFactory;
diff --git a/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricUpdaterTest.java b/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricUpdaterTest.java
index c491a0d5ff5..0701c5268b9 100644
--- a/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricUpdaterTest.java
+++ b/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricUpdaterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.metric;
import com.yahoo.jdisc.Metric;
diff --git a/container-documentapi/README.md b/container-documentapi/README.md
index a30257d5b49..50fae973d98 100644
--- a/container-documentapi/README.md
+++ b/container-documentapi/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Documentapi
Dependency artifact for building container bundles.
diff --git a/container-documentapi/pom.xml b/container-documentapi/pom.xml
index 004ef75a4b6..8fd786fa512 100644
--- a/container-documentapi/pom.xml
+++ b/container-documentapi/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/container-integration-test/README.md b/container-integration-test/README.md
index 8abe3a889ea..ccd4cdada87 100644
--- a/container-integration-test/README.md
+++ b/container-integration-test/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Integration tests for JDisc components
diff --git a/container-integration-test/pom.xml b/container-integration-test/pom.xml
index b03e9e3131d..14d9950b389 100644
--- a/container-integration-test/pom.xml
+++ b/container-integration-test/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/container-integration-test/src/test/java/com/yahoo/search/query/gui/GUIHandlerTest.java b/container-integration-test/src/test/java/com/yahoo/search/query/gui/GUIHandlerTest.java
index 7ca5d2a6b10..569d1439bbe 100644
--- a/container-integration-test/src/test/java/com/yahoo/search/query/gui/GUIHandlerTest.java
+++ b/container-integration-test/src/test/java/com/yahoo/search/query/gui/GUIHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.gui;
import com.yahoo.application.Networking;
@@ -40,7 +40,7 @@ public class GUIHandlerTest {
@Test
public void testRequest() throws Exception {
- assertResponse("/querybuilder/", "<!-- Copyright 2018 Yahoo Holdings.","text/html; charset=UTF-8", 200);
+ assertResponse("/querybuilder/", "<!-- Copyright Yahoo.","text/html; charset=UTF-8", 200);
}
@Test
diff --git a/container-messagebus/CMakeLists.txt b/container-messagebus/CMakeLists.txt
index 7bb25e6a420..f8d34754c41 100644
--- a/container-messagebus/CMakeLists.txt
+++ b/container-messagebus/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_config_definitions()
diff --git a/container-messagebus/README.md b/container-messagebus/README.md
index e3fe6a12b75..ea20f9b8ba9 100644
--- a/container-messagebus/README.md
+++ b/container-messagebus/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# JDisc messagebus implementation
Messagebus protocol implementation for JDisc.
diff --git a/container-messagebus/pom.xml b/container-messagebus/pom.xml
index 3ec177e7bde..c8e7d57a730 100644
--- a/container-messagebus/pom.xml
+++ b/container-messagebus/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/MbusClientProvider.java b/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/MbusClientProvider.java
index 2b86d83547e..af9edc31c5f 100644
--- a/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/MbusClientProvider.java
+++ b/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/MbusClientProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.messagebus;
import com.google.inject.Inject;
diff --git a/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/MbusServerProvider.java b/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/MbusServerProvider.java
index a609ee73a97..8b827b3012d 100644
--- a/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/MbusServerProvider.java
+++ b/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/MbusServerProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.messagebus;
import com.yahoo.component.ComponentId;
diff --git a/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/NetworkMultiplexerHolder.java b/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/NetworkMultiplexerHolder.java
new file mode 100644
index 00000000000..cb28807ac73
--- /dev/null
+++ b/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/NetworkMultiplexerHolder.java
@@ -0,0 +1,49 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.container.jdisc.messagebus;
+
+import com.yahoo.component.AbstractComponent;
+import com.yahoo.messagebus.network.Network;
+import com.yahoo.messagebus.network.NetworkMultiplexer;
+import com.yahoo.messagebus.network.rpc.RPCNetwork;
+import com.yahoo.messagebus.network.rpc.RPCNetworkParams;
+import com.yahoo.messagebus.shared.NullNetwork;
+
+/**
+ * Holds a reference to a singleton {@link NetworkMultiplexer}.
+ *
+ * @author jonmv
+ */
+public class NetworkMultiplexerHolder extends AbstractComponent {
+
+ private final Object monitor = new Object();
+ private boolean destroyed = false;
+ private NetworkMultiplexer net;
+
+ /** Get the singleton RPCNetworkAdapter, creating it if this hasn't yet been done. */
+ public NetworkMultiplexer get(RPCNetworkParams params) {
+ synchronized (monitor) {
+ if (destroyed)
+ throw new IllegalStateException("Component already destroyed");
+
+ return net = net != null ? net : NetworkMultiplexer.shared(newNetwork(params));
+ }
+ }
+
+ private Network newNetwork(RPCNetworkParams params) {
+ return params.getSlobroksConfig() != null && params.getSlobroksConfig().slobrok().isEmpty()
+ ? new NullNetwork() // For LocalApplication, test setup.
+ : new RPCNetwork(params);
+ }
+
+ @Override
+ public void deconstruct() {
+ synchronized (monitor) {
+ if (net != null) {
+ net.disown();
+ net = null;
+ }
+ destroyed = true;
+ }
+ }
+
+}
diff --git a/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/NetworkMultiplexerProvider.java b/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/NetworkMultiplexerProvider.java
new file mode 100644
index 00000000000..48ffec4429e
--- /dev/null
+++ b/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/NetworkMultiplexerProvider.java
@@ -0,0 +1,56 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.container.jdisc.messagebus;
+
+import com.google.inject.Inject;
+import com.yahoo.cloud.config.SlobroksConfig;
+import com.yahoo.container.jdisc.ContainerMbusConfig;
+import com.yahoo.messagebus.network.Identity;
+import com.yahoo.messagebus.network.NetworkMultiplexer;
+import com.yahoo.messagebus.network.rpc.RPCNetworkParams;
+
+import java.util.function.Supplier;
+
+/**
+ * Injectable component which provides an {@link NetworkMultiplexer}, creating one if needed,
+ * i.e., the first time this is created in a container--subsequent creations of this will reuse
+ * the underlying network that was created initially. This breaks the DI pattern, but must be done
+ * because the network is a unique resource which cannot exist in several versions simultaneously.
+ *
+ * @author jonmv
+ */
+public class NetworkMultiplexerProvider {
+
+ private final Object monitor = new Object();
+ private final Supplier<NetworkMultiplexer> nets;
+ private NetworkMultiplexer net;
+
+ @Inject
+ public NetworkMultiplexerProvider(NetworkMultiplexerHolder net, ContainerMbusConfig mbusConfig) {
+ this(net, mbusConfig, System.getProperty("config.id")); //:
+ }
+
+ public NetworkMultiplexerProvider(NetworkMultiplexerHolder net, ContainerMbusConfig mbusConfig, String identity) {
+ this.nets = () -> net.get(asParameters(mbusConfig, identity).setSlobrokConfigId(identity));
+ }
+
+ public static RPCNetworkParams asParameters(ContainerMbusConfig mbusConfig, SlobroksConfig slobroksConfig, String identity) {
+ return asParameters(mbusConfig, identity).setSlobroksConfig(slobroksConfig);
+ }
+
+ private static RPCNetworkParams asParameters(ContainerMbusConfig mbusConfig, String identity) {
+ return new RPCNetworkParams().setSlobrokConfigId(identity)
+ .setIdentity(new Identity(identity))
+ .setListenPort(mbusConfig.port())
+ .setNumTargetsPerSpec(mbusConfig.numconnectionspertarget())
+ .setNumNetworkThreads(mbusConfig.numthreads())
+ .setTransportEventsBeforeWakeup(mbusConfig.transport_events_before_wakeup())
+ .setOptimization(RPCNetworkParams.Optimization.valueOf(mbusConfig.optimize_for().name()));
+ }
+
+ public NetworkMultiplexer net() {
+ synchronized (monitor) {
+ return net = net != null ? net : nets.get();
+ }
+ }
+
+}
diff --git a/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/SessionCache.java b/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/SessionCache.java
index d65b2f7cc12..354e5fbfe12 100644
--- a/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/SessionCache.java
+++ b/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/SessionCache.java
@@ -1,34 +1,41 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.messagebus;
+import com.google.inject.Inject;
+import com.yahoo.cloud.config.SlobroksConfig;
import com.yahoo.component.AbstractComponent;
-import com.yahoo.config.subscription.ConfigGetter;
import com.yahoo.container.jdisc.ContainerMbusConfig;
import com.yahoo.document.DocumentTypeManager;
import com.yahoo.document.DocumentUtil;
+import com.yahoo.document.config.DocumentmanagerConfig;
import com.yahoo.documentapi.messagebus.loadtypes.LoadTypeSet;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
+import com.yahoo.documentapi.messagebus.protocol.DocumentProtocolPoliciesConfig;
import com.yahoo.jdisc.ReferencedResource;
import com.yahoo.jdisc.References;
import com.yahoo.jdisc.ResourceReference;
import com.yahoo.jdisc.SharedResource;
-import java.util.logging.Level;
import com.yahoo.messagebus.ConfigAgent;
import com.yahoo.messagebus.DynamicThrottlePolicy;
import com.yahoo.messagebus.IntermediateSessionParams;
+import com.yahoo.messagebus.MessageBus;
import com.yahoo.messagebus.MessageBusParams;
+import com.yahoo.messagebus.MessagebusConfig;
import com.yahoo.messagebus.Protocol;
import com.yahoo.messagebus.SourceSessionParams;
import com.yahoo.messagebus.StaticThrottlePolicy;
import com.yahoo.messagebus.ThrottlePolicy;
-import com.yahoo.messagebus.network.Identity;
-import com.yahoo.messagebus.network.rpc.RPCNetworkParams;
+import com.yahoo.messagebus.network.NetworkMultiplexer;
import com.yahoo.messagebus.shared.SharedIntermediateSession;
import com.yahoo.messagebus.shared.SharedMessageBus;
import com.yahoo.messagebus.shared.SharedSourceSession;
+import com.yahoo.vespa.config.content.DistributionConfig;
+import com.yahoo.vespa.config.content.LoadTypeConfig;
import java.util.HashMap;
import java.util.Map;
+import java.util.function.Supplier;
+import java.util.logging.Level;
import java.util.logging.Logger;
/**
@@ -37,22 +44,20 @@ import java.util.logging.Logger;
* @author Steinar Knutsen
* @author Einar Rosenvinge
*/
-// TODO jonmv: Remove this? Only used sensibly by FeedHandlerV3, where only timeout varies.
+// TODO jonmv: Remove this: only used with more than one entry by FeedHandlerV3, where only timeout varies.
+// rant: This whole construct is because DI at one point didn't exist, so getting hold of a shared resource
+// or session was hard(?), and one resorted to routing through the Container, using URIs, to the correct
+// MbusClient, with or without throttling. This introduced the problem of ownership during shutdown,
+// which was solved with manual reference counting. This is all much better solved with DI, which (now)
+// owns everything, and does component shutdown in reverse construction order, which is always right.
+// So for the sake of everyone's mental health, this should all just be removed now! I suspect this is
+// even the case for Request; we can track in handlers, and warn when requests have been misplaced.
public final class SessionCache extends AbstractComponent {
private static final Logger log = Logger.getLogger(SessionCache.class.getName());
- //config
- private final String messagebusConfigId;
- private final String slobrokConfigId;
- private final String identity;
- private final String containerMbusConfigId;
- private final String documentManagerConfigId;
- private final String loadTypeConfigId;
- private final DocumentTypeManager documentTypeManager;
-
- // initialized in start()
- private ConfigAgent configAgent;
+ private final Object monitor = new Object();
+ private Supplier<SharedMessageBus> messageBuses;
private SharedMessageBus messageBus;
private final Object intermediateLock = new Object();
@@ -63,50 +68,56 @@ public final class SessionCache extends AbstractComponent {
private final Map<SourceSessionKey, SharedSourceSession> sources = new HashMap<>();
private final SourceSessionCreator sourcesCreator = new SourceSessionCreator();
- public SessionCache(String messagebusConfigId, String slobrokConfigId, String identity,
- String containerMbusConfigId, String documentManagerConfigId,
- String loadTypeConfigId,
- DocumentTypeManager documentTypeManager) {
- this.messagebusConfigId = messagebusConfigId;
- this.slobrokConfigId = slobrokConfigId;
- this.identity = identity;
- this.containerMbusConfigId = containerMbusConfigId;
- this.documentManagerConfigId = documentManagerConfigId;
- this.loadTypeConfigId = loadTypeConfigId;
- this.documentTypeManager = documentTypeManager;
+ @Inject
+ public SessionCache(NetworkMultiplexerProvider nets, ContainerMbusConfig containerMbusConfig,
+ DocumentmanagerConfig documentmanagerConfig,
+ LoadTypeConfig loadTypeConfig, MessagebusConfig messagebusConfig,
+ DocumentProtocolPoliciesConfig policiesConfig,
+ DistributionConfig distributionConfig) {
+ this(nets::net, containerMbusConfig, documentmanagerConfig,
+ loadTypeConfig, messagebusConfig, policiesConfig, distributionConfig);
+
}
- public SessionCache(final String identity) {
- this(identity, identity, identity, identity, identity, identity, new DocumentTypeManager());
+ public SessionCache(Supplier<NetworkMultiplexer> net, ContainerMbusConfig containerMbusConfig,
+ DocumentmanagerConfig documentmanagerConfig,
+ LoadTypeConfig loadTypeConfig, MessagebusConfig messagebusConfig,
+ DocumentProtocolPoliciesConfig policiesConfig,
+ DistributionConfig distributionConfig) {
+ this(net,
+ containerMbusConfig,
+ messagebusConfig,
+ new DocumentProtocol(new DocumentTypeManager(documentmanagerConfig),
+ new LoadTypeSet(loadTypeConfig),
+ policiesConfig,
+ distributionConfig));
}
- public void deconstruct() {
- if (configAgent != null) {
- configAgent.shutdown();
- }
+ public SessionCache(Supplier<NetworkMultiplexer> net, ContainerMbusConfig containerMbusConfig,
+ MessagebusConfig messagebusConfig, Protocol protocol) {
+ this.messageBuses = () -> createSharedMessageBus(net.get(), containerMbusConfig, messagebusConfig, protocol);
}
+ @Override
+ public void deconstruct() {
+ synchronized (monitor) {
+ messageBuses = () -> { throw new IllegalStateException("Session cache already deconstructed"); };
- private void start() {
- ContainerMbusConfig mbusConfig = ConfigGetter.getConfig(ContainerMbusConfig.class, containerMbusConfigId);
- if (documentManagerConfigId != null) {
- documentTypeManager.configure(documentManagerConfigId);
+ if (messageBus != null)
+ messageBus.release();
}
- LoadTypeSet loadTypeSet = new LoadTypeSet(loadTypeConfigId);
- DocumentProtocol protocol = new DocumentProtocol(documentTypeManager, identity, loadTypeSet);
- messageBus = createSharedMessageBus(mbusConfig, slobrokConfigId, identity, protocol);
- // TODO: stop doing subscriptions to config when that is to be solved in slobrok as well
- configAgent = new ConfigAgent(messagebusConfigId, messageBus.messageBus());
- configAgent.subscribe();
}
-
- private boolean isStarted() {
- return messageBus != null;
+ // Lazily create shared message bus.
+ private SharedMessageBus bus() {
+ synchronized (monitor) {
+ return messageBus = messageBus != null ? messageBus : messageBuses.get();
+ }
}
- private static SharedMessageBus createSharedMessageBus(ContainerMbusConfig mbusConfig,
- String slobrokConfigId, String identity,
+ private static SharedMessageBus createSharedMessageBus(NetworkMultiplexer net,
+ ContainerMbusConfig mbusConfig,
+ MessagebusConfig messagebusConfig,
Protocol protocol) {
MessageBusParams mbusParams = new MessageBusParams().addProtocol(protocol);
@@ -118,15 +129,9 @@ public final class SessionCache extends AbstractComponent {
mbusParams.setMaxPendingCount(mbusConfig.maxpendingcount());
mbusParams.setMaxPendingSize(maxPendingSize);
- RPCNetworkParams netParams = new RPCNetworkParams()
- .setSlobrokConfigId(slobrokConfigId)
- .setIdentity(new Identity(identity))
- .setListenPort(mbusConfig.port())
- .setNumTargetsPerSpec(mbusConfig.numconnectionspertarget())
- .setNumNetworkThreads(mbusConfig.numthreads())
- .setTransportEventsBeforeWakeup(mbusConfig.transport_events_before_wakeup())
- .setOptimization(RPCNetworkParams.Optimization.valueOf(mbusConfig.optimize_for().name()));
- return SharedMessageBus.newInstance(mbusParams, netParams);
+ MessageBus bus = new MessageBus(net, mbusParams);
+ new ConfigAgent(messagebusConfig, bus); // Configure the wrapped MessageBus with a routing table.
+ return new SharedMessageBus(bus);
}
private static void logSystemInfo(ContainerMbusConfig containerMbusConfig, long maxPendingSize) {
@@ -144,20 +149,10 @@ public final class SessionCache extends AbstractComponent {
}
ReferencedResource<SharedIntermediateSession> retainIntermediate(final IntermediateSessionParams p) {
- synchronized (this) {
- if (!isStarted()) {
- start();
- }
- }
return intermediatesCreator.retain(intermediateLock, intermediates, p);
}
public ReferencedResource<SharedSourceSession> retainSource(final SourceSessionParams p) {
- synchronized (this) {
- if (!isStarted()) {
- start();
- }
- }
return sourcesCreator.retain(sourceLock, sources, p);
}
@@ -207,7 +202,7 @@ public final class SessionCache extends AbstractComponent {
@Override
SharedSourceSession create(SourceSessionParams p) {
log.log(Level.FINE, "Creating new source session.");
- return messageBus.newSourceSession(p);
+ return bus().newSourceSession(p);
}
@Override
@@ -227,7 +222,7 @@ public final class SessionCache extends AbstractComponent {
@Override
SharedIntermediateSession create(IntermediateSessionParams p) {
log.log(Level.FINE, "Creating new intermediate session " + p.getName() + "");
- return messageBus.newIntermediateSession(p);
+ return bus().newIntermediateSession(p);
}
@Override
diff --git a/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/package-info.java b/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/package-info.java
index d5a08151488..af7ab67f25d 100644
--- a/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/package-info.java
+++ b/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* TODO
*/
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/IgnoredCompletionHandler.java b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/IgnoredCompletionHandler.java
index c64fea8653b..4a172fb9f70 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/IgnoredCompletionHandler.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/IgnoredCompletionHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc;
import com.yahoo.jdisc.handler.CompletionHandler;
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusClient.java b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusClient.java
index 922e4140868..85eb703d4cd 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusClient.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc;
import com.google.inject.Inject;
@@ -9,6 +9,8 @@ import com.yahoo.jdisc.handler.ContentChannel;
import com.yahoo.jdisc.handler.RequestDeniedException;
import com.yahoo.jdisc.handler.ResponseHandler;
import com.yahoo.jdisc.service.ClientProvider;
+
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import com.yahoo.messagebus.EmptyReply;
import com.yahoo.messagebus.Error;
@@ -29,9 +31,10 @@ import java.util.logging.Logger;
public final class MbusClient extends AbstractResource implements ClientProvider, ReplyHandler {
private static final Logger log = Logger.getLogger(MbusClient.class.getName());
+ private static final AtomicInteger threadId = new AtomicInteger(0);
private final BlockingQueue<MbusRequest> queue = new LinkedBlockingQueue<>();
private final ClientSession session;
- private final Thread thread = new Thread(new SenderTask(), "MbusClient");
+ private final Thread thread;
private volatile boolean done = false;
private final ResourceReference sessionReference;
@@ -39,6 +42,7 @@ public final class MbusClient extends AbstractResource implements ClientProvider
public MbusClient(ClientSession session) {
this.session = session;
this.sessionReference = session.refer();
+ thread = new Thread(new SenderTask(), "mbus-client-" + threadId.getAndIncrement());
}
@Override
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusRequest.java b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusRequest.java
index a0bedd678eb..bfaec7a2876 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusRequest.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc;
import com.yahoo.jdisc.Request;
@@ -15,7 +15,10 @@ public class MbusRequest extends Request {
private final Message message;
public MbusRequest(CurrentContainer current, URI uri, Message msg) {
- super(current, uri);
+ this(current, uri, msg, true);
+ }
+ public MbusRequest(CurrentContainer current, URI uri, Message msg, boolean isServerRequest) {
+ super(current, uri, isServerRequest);
this.message = validateMessage(msg);
}
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusRequestHandler.java b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusRequestHandler.java
index fb5657a9215..86e84beb01b 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusRequestHandler.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc;
import com.yahoo.jdisc.Request;
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusResponse.java b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusResponse.java
index 37da4d8569f..efc646f57b9 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusResponse.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc;
import com.yahoo.jdisc.Response;
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusServer.java b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusServer.java
index e26e1e7e134..5f1963cffe6 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusServer.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusServer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc;
import com.google.inject.Inject;
@@ -10,13 +10,19 @@ import com.yahoo.jdisc.handler.ContentChannel;
import com.yahoo.jdisc.handler.ResponseHandler;
import com.yahoo.jdisc.service.CurrentContainer;
import com.yahoo.jdisc.service.ServerProvider;
+
+import java.util.concurrent.atomic.AtomicReference;
import java.util.logging.Level;
-import com.yahoo.messagebus.*;
+
+import com.yahoo.messagebus.EmptyReply;
import com.yahoo.messagebus.Error;
+import com.yahoo.messagebus.ErrorCode;
+import com.yahoo.messagebus.Message;
+import com.yahoo.messagebus.MessageHandler;
+import com.yahoo.messagebus.Reply;
import com.yahoo.messagebus.shared.ServerSession;
import java.net.URI;
-import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Logger;
/**
@@ -24,8 +30,9 @@ import java.util.logging.Logger;
*/
public final class MbusServer extends AbstractResource implements ServerProvider, MessageHandler {
+ private enum State {INITIALIZING, RUNNING, STOPPED}
private final static Logger log = Logger.getLogger(MbusServer.class.getName());
- private final AtomicBoolean running = new AtomicBoolean(false);
+ private final AtomicReference<State> runState = new AtomicReference<>(State.INITIALIZING);
private final CurrentContainer container;
private final ServerSession session;
private final URI uri;
@@ -43,26 +50,34 @@ public final class MbusServer extends AbstractResource implements ServerProvider
@Override
public void start() {
log.log(Level.FINE, "Starting message bus server.");
- running.set(true);
+ session.connect();
+ runState.set(State.RUNNING);
}
@Override
public void close() {
log.log(Level.FINE, "Closing message bus server.");
- running.set(false);
+ runState.set(State.STOPPED);
}
@Override
protected void destroy() {
log.log(Level.FINE, "Destroying message bus server.");
- running.set(false);
+ runState.set(State.STOPPED);
sessionReference.close();
}
@Override
public void handleMessage(Message msg) {
- if (!running.get()) {
- dispatchErrorReply(msg, ErrorCode.SESSION_BUSY, "Session temporarily closed.");
+ State state = runState.get();
+ if (state == State.INITIALIZING) {
+ dispatchErrorReply(msg, ErrorCode.SESSION_BUSY, "MBusServer not started.");
+ return;
+ }
+ if (state == State.STOPPED) {
+ // We might need to detect requests originating from the same JVM, as they nede to fail fast
+ // As they are holding references to the container preventing proper shutdown.
+ dispatchErrorReply(msg, ErrorCode.SESSION_BUSY, "MBusServer has been closed.");
return;
}
if (msg.getTrace().shouldTrace(6)) {
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/StatusCodes.java b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/StatusCodes.java
index 6570c910af3..6ab1fbea9e9 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/StatusCodes.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/StatusCodes.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc;
import com.yahoo.jdisc.Response;
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/package-info.java b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/package-info.java
index 9aea8cf7db8..28ec9df04d3 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/package-info.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.messagebus.jdisc;
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/ClientTestDriver.java b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/ClientTestDriver.java
index 111805d61b0..07ab03a117f 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/ClientTestDriver.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/ClientTestDriver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc.test;
import com.yahoo.jdisc.References;
@@ -7,7 +7,12 @@ import com.yahoo.jdisc.ResourceReference;
import com.yahoo.jdisc.application.ContainerBuilder;
import com.yahoo.jdisc.handler.ResponseHandler;
import com.yahoo.jdisc.test.TestDriver;
-import com.yahoo.messagebus.*;
+import com.yahoo.messagebus.Message;
+import com.yahoo.messagebus.MessageBusParams;
+import com.yahoo.messagebus.Protocol;
+import com.yahoo.messagebus.Reply;
+import com.yahoo.messagebus.SourceSession;
+import com.yahoo.messagebus.SourceSessionParams;
import com.yahoo.messagebus.jdisc.MbusClient;
import com.yahoo.messagebus.jdisc.MbusRequest;
import com.yahoo.messagebus.network.rpc.RPCNetworkParams;
@@ -33,7 +38,7 @@ public class ClientTestDriver {
this.server = server;
MessageBusParams mbusParams = new MessageBusParams().addProtocol(protocol);
- RPCNetworkParams netParams = new RPCNetworkParams().setSlobrokConfigId(server.slobrokId());
+ RPCNetworkParams netParams = new RPCNetworkParams().setSlobroksConfig(server.slobroksConfig());
SharedMessageBus mbus = SharedMessageBus.newInstance(mbusParams, netParams);
session = mbus.newSourceSession(new SourceSessionParams());
client = new MbusClient(session);
@@ -128,7 +133,4 @@ public class ClientTestDriver {
return new ClientTestDriver(RemoteServer.newInstanceWithInternSlobrok(), protocol);
}
- public static ClientTestDriver newInstanceWithExternSlobrok(String slobrokId) {
- return new ClientTestDriver(RemoteServer.newInstanceWithExternSlobrok(slobrokId), new SimpleProtocol());
- }
}
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/MessageQueue.java b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/MessageQueue.java
index c5287165e27..09f7125c649 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/MessageQueue.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/MessageQueue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc.test;
import com.yahoo.messagebus.Message;
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/RemoteClient.java b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/RemoteClient.java
index 57d0abd980b..6cec6c8e3d5 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/RemoteClient.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/RemoteClient.java
@@ -1,9 +1,17 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc.test;
+import com.yahoo.cloud.config.SlobroksConfig;
import com.yahoo.jrt.ListenFailedException;
import com.yahoo.jrt.slobrok.server.Slobrok;
-import com.yahoo.messagebus.*;
+import com.yahoo.messagebus.Message;
+import com.yahoo.messagebus.MessageBus;
+import com.yahoo.messagebus.MessageBusParams;
+import com.yahoo.messagebus.Protocol;
+import com.yahoo.messagebus.Reply;
+import com.yahoo.messagebus.Result;
+import com.yahoo.messagebus.SourceSession;
+import com.yahoo.messagebus.SourceSessionParams;
import com.yahoo.messagebus.network.local.LocalNetwork;
import com.yahoo.messagebus.network.rpc.RPCNetwork;
import com.yahoo.messagebus.network.rpc.RPCNetworkParams;
@@ -17,16 +25,14 @@ import java.util.concurrent.TimeUnit;
public class RemoteClient {
private final Slobrok slobrok;
- private final String slobrokId;
private final MessageBus mbus;
private final ReplyQueue queue = new ReplyQueue();
private final SourceSession session;
- private RemoteClient(Slobrok slobrok, String slobrokId, Protocol protocol, boolean network) {
- this.slobrok = slobrok;
- this.slobrokId = slobrok != null ? slobrok.configId() : slobrokId;
+ private RemoteClient(Protocol protocol, boolean network) {
+ this.slobrok = newSlobrok();
mbus = network
- ? new MessageBus(new RPCNetwork(new RPCNetworkParams().setSlobrokConfigId(this.slobrokId)),
+ ? new MessageBus(new RPCNetwork(new RPCNetworkParams().setSlobroksConfig(slobroksConfig())),
new MessageBusParams().addProtocol(protocol))
: new MessageBus(new LocalNetwork(), new MessageBusParams().addProtocol(protocol));
session = mbus.createSourceSession(new SourceSessionParams().setThrottlePolicy(null).setReplyHandler(queue));
@@ -40,28 +46,22 @@ public class RemoteClient {
return queue.awaitReply(timeout, unit);
}
- public String slobrokId() {
- return slobrokId;
+ public SlobroksConfig slobroksConfig() {
+ return TestUtils.configFor(slobrok);
}
public void close() {
session.destroy();
mbus.destroy();
- if (slobrok != null) {
- slobrok.stop();
- }
+ slobrok.stop();
}
public static RemoteClient newInstanceWithInternSlobrok(boolean network) {
- return new RemoteClient(newSlobrok(), null, new SimpleProtocol(), network);
- }
-
- public static RemoteClient newInstanceWithExternSlobrok(String slobrokId, boolean network) {
- return new RemoteClient(null, slobrokId, new SimpleProtocol(), network);
+ return new RemoteClient(new SimpleProtocol(), network);
}
public static RemoteClient newInstanceWithProtocolAndInternSlobrok(Protocol protocol, boolean network) {
- return new RemoteClient(newSlobrok(), null, protocol, network);
+ return new RemoteClient(protocol, network);
}
private static Slobrok newSlobrok() {
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/RemoteServer.java b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/RemoteServer.java
index 1f0f82c4903..3481e95befb 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/RemoteServer.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/RemoteServer.java
@@ -1,9 +1,16 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc.test;
+import com.yahoo.cloud.config.SlobroksConfig;
import com.yahoo.jrt.ListenFailedException;
import com.yahoo.jrt.slobrok.server.Slobrok;
-import com.yahoo.messagebus.*;
+import com.yahoo.messagebus.DestinationSession;
+import com.yahoo.messagebus.DestinationSessionParams;
+import com.yahoo.messagebus.Message;
+import com.yahoo.messagebus.MessageBus;
+import com.yahoo.messagebus.MessageBusParams;
+import com.yahoo.messagebus.Protocol;
+import com.yahoo.messagebus.Reply;
import com.yahoo.messagebus.network.Identity;
import com.yahoo.messagebus.network.rpc.RPCNetwork;
import com.yahoo.messagebus.network.rpc.RPCNetworkParams;
@@ -17,16 +24,14 @@ import java.util.concurrent.TimeUnit;
public class RemoteServer {
private final Slobrok slobrok;
- private final String slobrokId;
private final MessageBus mbus;
private final MessageQueue queue = new MessageQueue();
private final DestinationSession session;
- private RemoteServer(Slobrok slobrok, String slobrokId, Protocol protocol, String identity) {
- this.slobrok = slobrok;
- this.slobrokId = slobrok != null ? slobrok.configId() : slobrokId;
+ private RemoteServer(Protocol protocol, String identity) {
+ this.slobrok = newSlobrok();
mbus = new MessageBus(new RPCNetwork(new RPCNetworkParams()
- .setSlobrokConfigId(this.slobrokId)
+ .setSlobroksConfig(slobroksConfig())
.setIdentity(new Identity(identity))),
new MessageBusParams().addProtocol(protocol));
session = mbus.createDestinationSession(new DestinationSessionParams().setMessageHandler(queue));
@@ -48,32 +53,22 @@ public class RemoteServer {
session.reply(reply);
}
- public String slobrokId() {
- return slobrokId;
+ public SlobroksConfig slobroksConfig() {
+ return TestUtils.configFor(slobrok);
}
public void close() {
session.destroy();
mbus.destroy();
- if (slobrok != null) {
- slobrok.stop();
- }
+ slobrok.stop();
}
public static RemoteServer newInstanceWithInternSlobrok() {
- return new RemoteServer(newSlobrok(), null, new SimpleProtocol(), "remote");
- }
-
- public static RemoteServer newInstanceWithExternSlobrok(String slobrokId) {
- return new RemoteServer(null, slobrokId, new SimpleProtocol(), "remote");
- }
-
- public static RemoteServer newInstance(String slobrokId, String identity, Protocol protocol) {
- return new RemoteServer(null, slobrokId, protocol, identity);
+ return new RemoteServer(new SimpleProtocol(), "remote");
}
- public static RemoteServer newInstanceWithProtocol(Protocol protocol) {
- return new RemoteServer(newSlobrok(), null, protocol, "remote");
+ public static RemoteServer newInstance(String identity, Protocol protocol) {
+ return new RemoteServer(protocol, identity);
}
private static Slobrok newSlobrok() {
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/ReplyQueue.java b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/ReplyQueue.java
index 6c48aab5a7f..800a84a4a20 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/ReplyQueue.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/ReplyQueue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc.test;
import com.yahoo.messagebus.Reply;
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/ServerTestDriver.java b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/ServerTestDriver.java
index e59db28e886..5a5ca6fcd78 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/ServerTestDriver.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/ServerTestDriver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc.test;
import com.google.inject.Module;
@@ -42,7 +42,7 @@ public class ServerTestDriver {
}
MessageBusParams mbusParams = new MessageBusParams().addProtocol(protocol);
- RPCNetworkParams netParams = new RPCNetworkParams().setSlobrokConfigId(client.slobrokId());
+ RPCNetworkParams netParams = new RPCNetworkParams().setSlobroksConfig(client.slobroksConfig());
SharedMessageBus mbus = SharedMessageBus.newInstance(mbusParams, netParams);
ServerSession session = mbus.newDestinationSession(new DestinationSessionParams());
server = new MbusServer(driver, session);
@@ -130,13 +130,6 @@ public class ServerTestDriver {
guiceModules);
}
- public static ServerTestDriver newInstanceWithExternSlobrok(String slobrokId, RequestHandler requestHandler,
- boolean network, Module... guiceModules)
- {
- return new ServerTestDriver(RemoteClient.newInstanceWithExternSlobrok(slobrokId, network),
- true, requestHandler, new SimpleProtocol(), guiceModules);
- }
-
public static ServerTestDriver newInactiveInstance(boolean network, Module... guiceModules) {
return new ServerTestDriver(RemoteClient.newInstanceWithInternSlobrok(network), false, null,
new SimpleProtocol(), guiceModules);
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/TestUtils.java b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/TestUtils.java
new file mode 100644
index 00000000000..00ebb61b87d
--- /dev/null
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/test/TestUtils.java
@@ -0,0 +1,21 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.messagebus.jdisc.test;
+
+import com.yahoo.cloud.config.SlobroksConfig;
+import com.yahoo.jrt.Spec;
+import com.yahoo.jrt.slobrok.server.Slobrok;
+
+/**
+ * @author jonmv
+ */
+public class TestUtils {
+
+ private TestUtils() { }
+
+ public static SlobroksConfig configFor(Slobrok slobrok) {
+ return new SlobroksConfig.Builder().slobrok(new SlobroksConfig.Slobrok.Builder()
+ .connectionspec(new Spec("localhost", slobrok.port()).toString()))
+ .build();
+ }
+
+}
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/network/package-info.java b/container-messagebus/src/main/java/com/yahoo/messagebus/network/package-info.java
index 72f563e8bd7..73767a899f4 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/network/package-info.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/network/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.messagebus.network;
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/network/rpc/package-info.java b/container-messagebus/src/main/java/com/yahoo/messagebus/network/rpc/package-info.java
index 7b468813713..a5726a4f988 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/network/rpc/package-info.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/network/rpc/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.messagebus.network.rpc;
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/package-info.java b/container-messagebus/src/main/java/com/yahoo/messagebus/package-info.java
index 63b713e70e0..98b85e185ff 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/package-info.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.messagebus;
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/routing/package-info.java b/container-messagebus/src/main/java/com/yahoo/messagebus/routing/package-info.java
index ba8fc5fafba..7903124f30a 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/routing/package-info.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/routing/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.messagebus.routing;
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/shared/ClientSession.java b/container-messagebus/src/main/java/com/yahoo/messagebus/shared/ClientSession.java
index 0964a254cf2..86222d92bd8 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/shared/ClientSession.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/shared/ClientSession.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.shared;
import com.yahoo.jdisc.SharedResource;
@@ -10,5 +10,5 @@ import com.yahoo.messagebus.Result;
*/
public interface ClientSession extends SharedResource {
- public Result sendMessage(Message msg);
+ Result sendMessage(Message msg);
}
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/shared/NullNetwork.java b/container-messagebus/src/main/java/com/yahoo/messagebus/shared/NullNetwork.java
index ad58d6b9a5e..5f32b243768 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/shared/NullNetwork.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/shared/NullNetwork.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.shared;
import com.yahoo.jrt.slobrok.api.IMirror;
@@ -12,9 +12,9 @@ import java.util.List;
/**
* <p>Used by SharedMessageBus as a network when the container runs in LocalApplication with no network services.</p>
*
- * @author <a href="mailto:vegardh@yahoo-inc.com">Vegard Havdal</a>
+ * @author Vegard Havdal
*/
-class NullNetwork implements Network {
+public class NullNetwork implements Network {
@Override
public boolean waitUntilReady(double seconds) {
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/shared/ServerSession.java b/container-messagebus/src/main/java/com/yahoo/messagebus/shared/ServerSession.java
index 56713815c7a..b39217b413d 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/shared/ServerSession.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/shared/ServerSession.java
@@ -1,22 +1,24 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.shared;
import com.yahoo.jdisc.SharedResource;
+import com.yahoo.messagebus.Connectable;
import com.yahoo.messagebus.MessageHandler;
import com.yahoo.messagebus.Reply;
/**
* @author Simon Thoresen Hult
*/
-public interface ServerSession extends SharedResource {
+public interface ServerSession extends SharedResource, Connectable {
- public MessageHandler getMessageHandler();
+ MessageHandler getMessageHandler();
- public void setMessageHandler(MessageHandler msgHandler);
+ void setMessageHandler(MessageHandler msgHandler);
- public void sendReply(Reply reply);
+ void sendReply(Reply reply);
- public String connectionSpec();
+ String connectionSpec();
+
+ String name();
- public String name();
}
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/shared/SharedDestinationSession.java b/container-messagebus/src/main/java/com/yahoo/messagebus/shared/SharedDestinationSession.java
index 7da164757cd..c4abe963d89 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/shared/SharedDestinationSession.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/shared/SharedDestinationSession.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.shared;
import com.yahoo.jdisc.AbstractResource;
@@ -28,7 +28,7 @@ public class SharedDestinationSession extends AbstractResource implements Messag
SharedDestinationSession(SharedMessageBus mbus, DestinationSessionParams params) {
this.msgHandler.set(params.getMessageHandler());
- this.session = mbus.messageBus().createDestinationSession(params.setMessageHandler(this));
+ this.session = mbus.messageBus().createDetachedDestinationSession(params.setMessageHandler(this));
this.mbusReference = mbus.refer();
}
@@ -77,6 +77,11 @@ public class SharedDestinationSession extends AbstractResource implements Messag
}
@Override
+ public void connect() {
+ session.connect();
+ }
+
+ @Override
protected void destroy() {
log.log(Level.FINE, "Destroying shared destination session.");
session.destroy();
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/shared/SharedIntermediateSession.java b/container-messagebus/src/main/java/com/yahoo/messagebus/shared/SharedIntermediateSession.java
index 5c9fab46e34..7565aa6e625 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/shared/SharedIntermediateSession.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/shared/SharedIntermediateSession.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.shared;
import com.yahoo.jdisc.AbstractResource;
@@ -35,8 +35,8 @@ public class SharedIntermediateSession extends AbstractResource
throw new IllegalArgumentException("Reply handler must be null.");
}
this.msgHandler.set(params.getMessageHandler());
- this.session = mbus.messageBus().createIntermediateSession(params.setReplyHandler(this)
- .setMessageHandler(this));
+ this.session = mbus.messageBus().createDetachedIntermediateSession(params.setReplyHandler(this)
+ .setMessageHandler(this));
this.mbusReference = mbus.refer();
}
@@ -96,6 +96,11 @@ public class SharedIntermediateSession extends AbstractResource
}
@Override
+ public void connect() {
+ session.connect();
+ }
+
+ @Override
protected void destroy() {
log.log(Level.FINE, "Destroying shared intermediate session.");
session.destroy();
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/shared/SharedMessageBus.java b/container-messagebus/src/main/java/com/yahoo/messagebus/shared/SharedMessageBus.java
index dd135a51378..e3042310ad0 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/shared/SharedMessageBus.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/shared/SharedMessageBus.java
@@ -1,9 +1,12 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.shared;
import com.yahoo.config.subscription.ConfigGetter;
import com.yahoo.jdisc.AbstractResource;
+
+import java.util.Objects;
import java.util.logging.Level;
+
import com.yahoo.messagebus.DestinationSessionParams;
import com.yahoo.messagebus.IntermediateSessionParams;
import com.yahoo.messagebus.MessageBus;
@@ -25,8 +28,7 @@ public class SharedMessageBus extends AbstractResource {
private final MessageBus mbus;
public SharedMessageBus(MessageBus mbus) {
- mbus.getClass(); // throws NullPointerException
- this.mbus = mbus;
+ this.mbus = Objects.requireNonNull(mbus);
}
public MessageBus messageBus() {
@@ -65,4 +67,6 @@ public class SharedMessageBus extends AbstractResource {
}
return new RPCNetwork(params);
}
+
+
}
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/shared/SharedSourceSession.java b/container-messagebus/src/main/java/com/yahoo/messagebus/shared/SharedSourceSession.java
index 56071682349..a185922545e 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/shared/SharedSourceSession.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/shared/SharedSourceSession.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.shared;
import com.yahoo.jdisc.AbstractResource;
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/shared/package-info.java b/container-messagebus/src/main/java/com/yahoo/messagebus/shared/package-info.java
index 941a0dc4c5c..18f69ea6c3a 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/shared/package-info.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/shared/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Not a public API, exported for use in internal components.
*/
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/test/package-info.java b/container-messagebus/src/main/java/com/yahoo/messagebus/test/package-info.java
index 42bc03b6e17..36e79f96da5 100644
--- a/container-messagebus/src/main/java/com/yahoo/messagebus/test/package-info.java
+++ b/container-messagebus/src/main/java/com/yahoo/messagebus/test/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.messagebus.test;
diff --git a/container-messagebus/src/main/resources/configdefinitions/container.jdisc.config.session.def b/container-messagebus/src/main/resources/configdefinitions/container.jdisc.config.session.def
index 93e71449e98..abdd2db9bf5 100644
--- a/container-messagebus/src/main/resources/configdefinitions/container.jdisc.config.session.def
+++ b/container-messagebus/src/main/resources/configdefinitions/container.jdisc.config.session.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container.jdisc.config
diff --git a/container-messagebus/src/main/resources/configdefinitions/container.jdisc.container-mbus.def b/container-messagebus/src/main/resources/configdefinitions/container.jdisc.container-mbus.def
index d3aa3bbdc4a..143e02a30ef 100644
--- a/container-messagebus/src/main/resources/configdefinitions/container.jdisc.container-mbus.def
+++ b/container-messagebus/src/main/resources/configdefinitions/container.jdisc.container-mbus.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container.jdisc
#settings for message bus in container
diff --git a/container-messagebus/src/test/java/com/yahoo/container/jdisc/messagebus/MbusClientProviderTest.java b/container-messagebus/src/test/java/com/yahoo/container/jdisc/messagebus/MbusClientProviderTest.java
index 6335cf01d8c..8d8010c72dc 100644
--- a/container-messagebus/src/test/java/com/yahoo/container/jdisc/messagebus/MbusClientProviderTest.java
+++ b/container-messagebus/src/test/java/com/yahoo/container/jdisc/messagebus/MbusClientProviderTest.java
@@ -1,9 +1,15 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.messagebus;
+import com.yahoo.container.jdisc.ContainerMbusConfig;
import com.yahoo.container.jdisc.config.SessionConfig;
-import com.yahoo.container.jdisc.messagebus.MbusClientProvider;
-import com.yahoo.container.jdisc.messagebus.SessionCache;
+import com.yahoo.document.config.DocumentmanagerConfig;
+import com.yahoo.documentapi.messagebus.protocol.DocumentProtocolPoliciesConfig;
+import com.yahoo.messagebus.MessagebusConfig;
+import com.yahoo.messagebus.network.NetworkMultiplexer;
+import com.yahoo.messagebus.shared.NullNetwork;
+import com.yahoo.vespa.config.content.DistributionConfig;
+import com.yahoo.vespa.config.content.LoadTypeConfig;
import org.junit.Test;
import static org.junit.Assert.assertNotNull;
@@ -30,7 +36,14 @@ public class MbusClientProviderTest {
}
private void testClient(SessionConfig config) {
- MbusClientProvider p = new MbusClientProvider(new SessionCache("dir:src/test/resources/config/clientprovider"), config);
+ SessionCache cache = new SessionCache(() -> NetworkMultiplexer.dedicated(new NullNetwork()),
+ new ContainerMbusConfig.Builder().build(),
+ new DocumentmanagerConfig.Builder().build(),
+ new LoadTypeConfig.Builder().build(),
+ new MessagebusConfig.Builder().build(),
+ new DocumentProtocolPoliciesConfig.Builder().build(),
+ new DistributionConfig.Builder().build());
+ MbusClientProvider p = new MbusClientProvider(cache, config);
assertNotNull(p.get());
p.deconstruct();
}
diff --git a/container-messagebus/src/test/java/com/yahoo/container/jdisc/messagebus/MbusSessionKeyTestCase.java b/container-messagebus/src/test/java/com/yahoo/container/jdisc/messagebus/MbusSessionKeyTestCase.java
index 89bc5b9cecd..9ab310a8b63 100644
--- a/container-messagebus/src/test/java/com/yahoo/container/jdisc/messagebus/MbusSessionKeyTestCase.java
+++ b/container-messagebus/src/test/java/com/yahoo/container/jdisc/messagebus/MbusSessionKeyTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.jdisc.messagebus;
import com.yahoo.container.jdisc.messagebus.SessionCache.DynamicThrottlePolicySignature;
@@ -17,7 +17,7 @@ import static org.junit.Assert.assertTrue;
/**
* Check the completeness of the mbus session key classes.
*
- * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a>
+ * @author Steinar Knutsen
*/
public class MbusSessionKeyTestCase {
diff --git a/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/ClientThreadingTestCase.java b/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/ClientThreadingTestCase.java
index 62a9a864781..4336c491071 100644
--- a/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/ClientThreadingTestCase.java
+++ b/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/ClientThreadingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc;
import com.yahoo.jdisc.application.ContainerBuilder;
@@ -98,10 +98,8 @@ public class ClientThreadingTestCase {
driver.activateContainer(builder);
delegate.start();
}
-
void send(final Message msg, final ResponseHandler handler) {
- final MbusRequest request = new MbusRequest(driver, URI.create("mbus://remote/"), msg);
- request.setServerRequest(false);
+ final MbusRequest request = new MbusRequest(driver, URI.create("mbus://remote/"), msg, false);
request.connect(handler).close(null);
request.release();
}
diff --git a/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusClientTestCase.java b/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusClientTestCase.java
index 9cfd1fd02b9..da5fd93a79b 100644
--- a/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusClientTestCase.java
+++ b/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusClientTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc;
import com.yahoo.jdisc.Request;
diff --git a/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusRequestHandlerTestCase.java b/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusRequestHandlerTestCase.java
index 316ad18bae9..9e009d4a40d 100644
--- a/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusRequestHandlerTestCase.java
+++ b/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusRequestHandlerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc;
import com.google.common.util.concurrent.ListenableFuture;
diff --git a/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusRequestTestCase.java b/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusRequestTestCase.java
index c68ab4e6742..81d3fa0f42d 100644
--- a/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusRequestTestCase.java
+++ b/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusRequestTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc;
import com.yahoo.jdisc.test.TestDriver;
diff --git a/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusResponseTestCase.java b/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusResponseTestCase.java
index eb4cb949770..9468f22adba 100644
--- a/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusResponseTestCase.java
+++ b/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusResponseTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc;
import com.yahoo.jdisc.Response;
diff --git a/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusServerConformanceTest.java b/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusServerConformanceTest.java
index bf89f3869ed..13059f7c91f 100644
--- a/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusServerConformanceTest.java
+++ b/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusServerConformanceTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc;
import com.google.inject.AbstractModule;
@@ -31,6 +31,7 @@ import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.TimeUnit;
import static com.yahoo.messagebus.ErrorCode.APP_FATAL_ERROR;
+import static com.yahoo.messagebus.ErrorCode.SEND_QUEUE_CLOSED;
import static com.yahoo.messagebus.ErrorCode.SESSION_BUSY;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.notNullValue;
diff --git a/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusServerTestCase.java b/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusServerTestCase.java
index 9d45d2e7abf..84a722a753f 100644
--- a/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusServerTestCase.java
+++ b/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusServerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc;
import com.google.inject.AbstractModule;
@@ -331,9 +331,7 @@ public class MbusServerTestCase {
int refCount = 1;
@Override
- public void sendReply(Reply reply) {
-
- }
+ public void sendReply(Reply reply) { }
@Override
public MessageHandler getMessageHandler() {
@@ -341,9 +339,7 @@ public class MbusServerTestCase {
}
@Override
- public void setMessageHandler(MessageHandler msgHandler) {
-
- }
+ public void setMessageHandler(MessageHandler msgHandler) { }
@Override
public String connectionSpec() {
@@ -356,14 +352,12 @@ public class MbusServerTestCase {
}
@Override
+ public void connect() { }
+
+ @Override
public ResourceReference refer() {
++refCount;
- return new ResourceReference() {
- @Override
- public void close() {
- --refCount;
- }
- };
+ return () -> --refCount;
}
@Override
diff --git a/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/ServerThreadingTestCase.java b/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/ServerThreadingTestCase.java
index a7ee355094f..0884762195b 100644
--- a/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/ServerThreadingTestCase.java
+++ b/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/ServerThreadingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc;
import com.yahoo.jdisc.application.ContainerBuilder;
diff --git a/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/test/ClientTestDriverTestCase.java b/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/test/ClientTestDriverTestCase.java
index ef290a070cb..f419fe2ccfc 100644
--- a/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/test/ClientTestDriverTestCase.java
+++ b/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/test/ClientTestDriverTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc.test;
import com.yahoo.jrt.ListenFailedException;
@@ -23,10 +23,6 @@ public class ClientTestDriverTestCase {
driver = ClientTestDriver.newInstanceWithProtocol(new SimpleProtocol());
assertNotNull(driver);
assertTrue(driver.close());
-
- Slobrok slobrok = new Slobrok();
- driver = ClientTestDriver.newInstanceWithExternSlobrok(slobrok.configId());
- assertNotNull(driver);
- assertTrue(driver.close());
}
+
}
diff --git a/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/test/ServerTestDriverTestCase.java b/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/test/ServerTestDriverTestCase.java
index f6ae2335d12..e6043ea02f6 100644
--- a/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/test/ServerTestDriverTestCase.java
+++ b/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/test/ServerTestDriverTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.jdisc.test;
import com.yahoo.jdisc.test.NonWorkingRequestHandler;
@@ -24,11 +24,6 @@ public class ServerTestDriverTestCase {
driver = ServerTestDriver.newInstanceWithProtocol(new SimpleProtocol(), new NonWorkingRequestHandler(), false);
assertNotNull(driver);
assertTrue(driver.close());
-
- Slobrok slobrok = new Slobrok();
- driver = ServerTestDriver.newInstanceWithExternSlobrok(slobrok.configId(), new NonWorkingRequestHandler(), false);
- assertNotNull(driver);
- assertTrue(driver.close());
}
}
diff --git a/container-messagebus/src/test/java/com/yahoo/messagebus/shared/SharedDestinationSessionTestCase.java b/container-messagebus/src/test/java/com/yahoo/messagebus/shared/SharedDestinationSessionTestCase.java
index 78e79da4b9f..4efb34af00d 100644
--- a/container-messagebus/src/test/java/com/yahoo/messagebus/shared/SharedDestinationSessionTestCase.java
+++ b/container-messagebus/src/test/java/com/yahoo/messagebus/shared/SharedDestinationSessionTestCase.java
@@ -1,12 +1,14 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.shared;
+import com.yahoo.cloud.config.SlobroksConfig;
import com.yahoo.jrt.ListenFailedException;
import com.yahoo.jrt.slobrok.server.Slobrok;
import com.yahoo.messagebus.*;
import com.yahoo.messagebus.jdisc.test.MessageQueue;
import com.yahoo.messagebus.jdisc.test.RemoteClient;
import com.yahoo.messagebus.jdisc.test.ReplyQueue;
+import com.yahoo.messagebus.jdisc.test.TestUtils;
import com.yahoo.messagebus.network.rpc.RPCNetworkParams;
import com.yahoo.messagebus.routing.Route;
import com.yahoo.messagebus.test.SimpleMessage;
@@ -98,7 +100,7 @@ public class SharedDestinationSessionTestCase {
RemoteClient client = RemoteClient.newInstanceWithInternSlobrok(true);
MessageQueue queue = new MessageQueue();
DestinationSessionParams params = new DestinationSessionParams().setMessageHandler(queue);
- SharedDestinationSession session = newDestinationSession(client.slobrokId(), params);
+ SharedDestinationSession session = newDestinationSession(client.slobroksConfig(), params);
Route route = Route.parse(session.connectionSpec());
assertTrue(client.sendMessage(new SimpleMessage("foo").setRoute(route)).isAccepted());
@@ -120,11 +122,11 @@ public class SharedDestinationSessionTestCase {
} catch (ListenFailedException e) {
fail();
}
- return newDestinationSession(slobrok.configId(), new DestinationSessionParams());
+ return newDestinationSession(TestUtils.configFor(slobrok), new DestinationSessionParams());
}
- private static SharedDestinationSession newDestinationSession(String slobrokId, DestinationSessionParams params) {
- RPCNetworkParams netParams = new RPCNetworkParams().setSlobrokConfigId(slobrokId);
+ private static SharedDestinationSession newDestinationSession(SlobroksConfig slobroksConfig, DestinationSessionParams params) {
+ RPCNetworkParams netParams = new RPCNetworkParams().setSlobroksConfig(slobroksConfig);
MessageBusParams mbusParams = new MessageBusParams().addProtocol(new SimpleProtocol());
SharedMessageBus mbus = SharedMessageBus.newInstance(mbusParams, netParams);
SharedDestinationSession session = mbus.newDestinationSession(params);
diff --git a/container-messagebus/src/test/java/com/yahoo/messagebus/shared/SharedIntermediateSessionTestCase.java b/container-messagebus/src/test/java/com/yahoo/messagebus/shared/SharedIntermediateSessionTestCase.java
index 87958415149..0aa148a14e2 100644
--- a/container-messagebus/src/test/java/com/yahoo/messagebus/shared/SharedIntermediateSessionTestCase.java
+++ b/container-messagebus/src/test/java/com/yahoo/messagebus/shared/SharedIntermediateSessionTestCase.java
@@ -1,6 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.shared;
+import com.yahoo.cloud.config.SlobroksConfig;
import com.yahoo.jrt.ListenFailedException;
import com.yahoo.jrt.slobrok.server.Slobrok;
import com.yahoo.messagebus.*;
@@ -8,6 +9,7 @@ import com.yahoo.messagebus.jdisc.test.MessageQueue;
import com.yahoo.messagebus.jdisc.test.RemoteClient;
import com.yahoo.messagebus.jdisc.test.RemoteServer;
import com.yahoo.messagebus.jdisc.test.ReplyQueue;
+import com.yahoo.messagebus.jdisc.test.TestUtils;
import com.yahoo.messagebus.network.local.LocalNetwork;
import com.yahoo.messagebus.network.local.LocalWire;
import com.yahoo.messagebus.network.rpc.RPCNetworkParams;
@@ -77,7 +79,7 @@ public class SharedIntermediateSessionTestCase {
public void requireThatReplyHandlerCanNotBeSet() throws ListenFailedException {
Slobrok slobrok = new Slobrok();
try {
- newIntermediateSession(slobrok.configId(),
+ newIntermediateSession(TestUtils.configFor(slobrok),
new IntermediateSessionParams().setReplyHandler(new ReplyQueue()),
false);
fail();
@@ -111,7 +113,7 @@ public class SharedIntermediateSessionTestCase {
@Test
public void requireThatSessionCanSendMessage() throws InterruptedException {
RemoteServer server = RemoteServer.newInstanceWithInternSlobrok();
- SharedIntermediateSession session = newIntermediateSession(server.slobrokId(),
+ SharedIntermediateSession session = newIntermediateSession(server.slobroksConfig(),
new IntermediateSessionParams(),
true);
ReplyQueue queue = new ReplyQueue();
@@ -134,7 +136,7 @@ public class SharedIntermediateSessionTestCase {
RemoteClient client = RemoteClient.newInstanceWithInternSlobrok(true);
MessageQueue queue = new MessageQueue();
IntermediateSessionParams params = new IntermediateSessionParams().setMessageHandler(queue);
- SharedIntermediateSession session = newIntermediateSession(client.slobrokId(), params, true);
+ SharedIntermediateSession session = newIntermediateSession(client.slobroksConfig(), params, true);
Route route = Route.parse(session.connectionSpec());
assertTrue(client.sendMessage(new SimpleMessage("foo").setRoute(route)).isAccepted());
@@ -156,13 +158,13 @@ public class SharedIntermediateSessionTestCase {
} catch (ListenFailedException e) {
fail();
}
- return newIntermediateSession(slobrok.configId(), new IntermediateSessionParams(), network);
+ return newIntermediateSession(TestUtils.configFor(slobrok), new IntermediateSessionParams(), network);
}
- private static SharedIntermediateSession newIntermediateSession(String slobrokId,
+ private static SharedIntermediateSession newIntermediateSession(SlobroksConfig slobroksConfig,
IntermediateSessionParams params,
boolean network) {
- RPCNetworkParams netParams = new RPCNetworkParams().setSlobrokConfigId(slobrokId);
+ RPCNetworkParams netParams = new RPCNetworkParams().setSlobroksConfig(slobroksConfig);
MessageBusParams mbusParams = new MessageBusParams().addProtocol(new SimpleProtocol());
SharedMessageBus mbus = network
? SharedMessageBus.newInstance(mbusParams, netParams)
diff --git a/container-messagebus/src/test/java/com/yahoo/messagebus/shared/SharedMessageBusTestCase.java b/container-messagebus/src/test/java/com/yahoo/messagebus/shared/SharedMessageBusTestCase.java
index a54489a89e6..729de7a7f83 100644
--- a/container-messagebus/src/test/java/com/yahoo/messagebus/shared/SharedMessageBusTestCase.java
+++ b/container-messagebus/src/test/java/com/yahoo/messagebus/shared/SharedMessageBusTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.shared;
import com.yahoo.jrt.ListenFailedException;
diff --git a/container-messagebus/src/test/java/com/yahoo/messagebus/shared/SharedSourceSessionTestCase.java b/container-messagebus/src/test/java/com/yahoo/messagebus/shared/SharedSourceSessionTestCase.java
index 1f0966fc961..a0f3bbce867 100644
--- a/container-messagebus/src/test/java/com/yahoo/messagebus/shared/SharedSourceSessionTestCase.java
+++ b/container-messagebus/src/test/java/com/yahoo/messagebus/shared/SharedSourceSessionTestCase.java
@@ -1,6 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.shared;
+import com.yahoo.cloud.config.SlobroksConfig;
import com.yahoo.jrt.ListenFailedException;
import com.yahoo.jrt.slobrok.server.Slobrok;
import com.yahoo.messagebus.Message;
@@ -8,6 +9,7 @@ import com.yahoo.messagebus.MessageBusParams;
import com.yahoo.messagebus.SourceSessionParams;
import com.yahoo.messagebus.jdisc.test.RemoteServer;
import com.yahoo.messagebus.jdisc.test.ReplyQueue;
+import com.yahoo.messagebus.jdisc.test.TestUtils;
import com.yahoo.messagebus.network.rpc.RPCNetworkParams;
import com.yahoo.messagebus.routing.Route;
import com.yahoo.messagebus.test.SimpleMessage;
@@ -59,7 +61,7 @@ public class SharedSourceSessionTestCase {
@Test
public void requireThatSessionCanSendMessage() throws InterruptedException {
RemoteServer server = RemoteServer.newInstanceWithInternSlobrok();
- SharedSourceSession session = newSourceSession(server.slobrokId(),
+ SharedSourceSession session = newSourceSession(server.slobroksConfig(),
new SourceSessionParams());
ReplyQueue queue = new ReplyQueue();
Message msg = new SimpleMessage("foo").setRoute(Route.parse(server.connectionSpec()));
@@ -80,11 +82,11 @@ public class SharedSourceSessionTestCase {
} catch (ListenFailedException e) {
fail();
}
- return newSourceSession(slobrok.configId(), params);
+ return newSourceSession(TestUtils.configFor(slobrok), params);
}
- private static SharedSourceSession newSourceSession(String slobrokId, SourceSessionParams params) {
- RPCNetworkParams netParams = new RPCNetworkParams().setSlobrokConfigId(slobrokId);
+ private static SharedSourceSession newSourceSession(SlobroksConfig slobroksConfig, SourceSessionParams params) {
+ RPCNetworkParams netParams = new RPCNetworkParams().setSlobroksConfig(slobroksConfig);
MessageBusParams mbusParams = new MessageBusParams().addProtocol(new SimpleProtocol());
SharedMessageBus mbus = SharedMessageBus.newInstance(mbusParams, netParams);
SharedSourceSession session = mbus.newSourceSession(params);
diff --git a/container-messagebus/src/test/resources/config/clientprovider/container-mbus.cfg b/container-messagebus/src/test/resources/config/clientprovider/container-mbus.cfg
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/container-messagebus/src/test/resources/config/clientprovider/container-mbus.cfg
+++ /dev/null
diff --git a/container-messagebus/src/test/resources/config/clientprovider/documentmanager.cfg b/container-messagebus/src/test/resources/config/clientprovider/documentmanager.cfg
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/container-messagebus/src/test/resources/config/clientprovider/documentmanager.cfg
+++ /dev/null
diff --git a/container-messagebus/src/test/resources/config/clientprovider/load-type.cfg b/container-messagebus/src/test/resources/config/clientprovider/load-type.cfg
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/container-messagebus/src/test/resources/config/clientprovider/load-type.cfg
+++ /dev/null
diff --git a/container-messagebus/src/test/resources/config/clientprovider/messagebus.cfg b/container-messagebus/src/test/resources/config/clientprovider/messagebus.cfg
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/container-messagebus/src/test/resources/config/clientprovider/messagebus.cfg
+++ /dev/null
diff --git a/container-search-and-docproc/CMakeLists.txt b/container-search-and-docproc/CMakeLists.txt
index a8a374d7feb..2a4a0718129 100644
--- a/container-search-and-docproc/CMakeLists.txt
+++ b/container-search-and-docproc/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(container-search-and-docproc)
install_config_definitions()
diff --git a/container-search-and-docproc/README.md b/container-search-and-docproc/README.md
index afbbbb1a923..411a345a577 100644
--- a/container-search-and-docproc/README.md
+++ b/container-search-and-docproc/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Container search and docproc bundle
Pacakges the search and document processing modules for JDisc
diff --git a/container-search-and-docproc/pom.xml b/container-search-and-docproc/pom.xml
index 2decbd5fd1e..056e746bf69 100644
--- a/container-search-and-docproc/pom.xml
+++ b/container-search-and-docproc/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/container-search-and-docproc/src/main/java/com/yahoo/container/handler/observability/ApplicationStatusHandler.java b/container-search-and-docproc/src/main/java/com/yahoo/container/handler/observability/ApplicationStatusHandler.java
index 943eef1e0bf..d5b027e2479 100644
--- a/container-search-and-docproc/src/main/java/com/yahoo/container/handler/observability/ApplicationStatusHandler.java
+++ b/container-search-and-docproc/src/main/java/com/yahoo/container/handler/observability/ApplicationStatusHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler.observability;
import com.fasterxml.jackson.core.JsonProcessingException;
diff --git a/container-search-and-docproc/src/main/java/com/yahoo/container/handler/observability/package-info.java b/container-search-and-docproc/src/main/java/com/yahoo/container/handler/observability/package-info.java
index 99545e0e7fd..7f9dc3d1cd9 100644
--- a/container-search-and-docproc/src/main/java/com/yahoo/container/handler/observability/package-info.java
+++ b/container-search-and-docproc/src/main/java/com/yahoo/container/handler/observability/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.container.handler.observability;
diff --git a/container-search-and-docproc/src/main/resources/configdefinitions/container.handler.observability.application-userdata.def b/container-search-and-docproc/src/main/resources/configdefinitions/container.handler.observability.application-userdata.def
index 0285d3d2103..cde92df9ef4 100644
--- a/container-search-and-docproc/src/main/resources/configdefinitions/container.handler.observability.application-userdata.def
+++ b/container-search-and-docproc/src/main/resources/configdefinitions/container.handler.observability.application-userdata.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Contains user generated info about one deployed application
# The values in this config are set by config overrides in vespa-services
diff --git a/container-search-and-docproc/src/test/java/com/yahoo/container/handler/observability/ApplicationStatusHandlerTest.java b/container-search-and-docproc/src/test/java/com/yahoo/container/handler/observability/ApplicationStatusHandlerTest.java
index e42a8c3d523..93668cf788d 100644
--- a/container-search-and-docproc/src/test/java/com/yahoo/container/handler/observability/ApplicationStatusHandlerTest.java
+++ b/container-search-and-docproc/src/test/java/com/yahoo/container/handler/observability/ApplicationStatusHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.handler.observability;
import com.yahoo.component.ComponentId;
diff --git a/container-search-gui/CMakeLists.txt b/container-search-gui/CMakeLists.txt
index 95476154443..4360e7ed01a 100644
--- a/container-search-gui/CMakeLists.txt
+++ b/container-search-gui/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(container-search-gui) \ No newline at end of file
diff --git a/container-search-gui/pom.xml b/container-search-gui/pom.xml
index b1a02a2411a..3f6f7f48921 100644
--- a/container-search-gui/pom.xml
+++ b/container-search-gui/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/container-search-gui/src/main/java/com/yahoo/search/query/gui/GUIHandler.java b/container-search-gui/src/main/java/com/yahoo/search/query/gui/GUIHandler.java
index 3132f3744c9..cc473a030c4 100644
--- a/container-search-gui/src/main/java/com/yahoo/search/query/gui/GUIHandler.java
+++ b/container-search-gui/src/main/java/com/yahoo/search/query/gui/GUIHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.gui;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/container-search-gui/src/main/java/com/yahoo/search/query/restapi/ErrorResponse.java b/container-search-gui/src/main/java/com/yahoo/search/query/restapi/ErrorResponse.java
index abb01388c1b..a5bdfc10743 100644
--- a/container-search-gui/src/main/java/com/yahoo/search/query/restapi/ErrorResponse.java
+++ b/container-search-gui/src/main/java/com/yahoo/search/query/restapi/ErrorResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.restapi;
import com.yahoo.container.jdisc.HttpResponse;
diff --git a/container-search-gui/src/main/resources/gui/_includes/css/vespa.css b/container-search-gui/src/main/resources/gui/_includes/css/vespa.css
index c63690581c6..a09364cefd4 100644
--- a/container-search-gui/src/main/resources/gui/_includes/css/vespa.css
+++ b/container-search-gui/src/main/resources/gui/_includes/css/vespa.css
@@ -1,5 +1,5 @@
/**
-* Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+* Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
* Based on vespa.css from https://github.com/vespa-engine/frontpage for header- and footer-elements
*/
:root{
diff --git a/container-search-gui/src/main/resources/gui/_includes/index.html b/container-search-gui/src/main/resources/gui/_includes/index.html
index 5eaa2b790d5..833c9352798 100644
--- a/container-search-gui/src/main/resources/gui/_includes/index.html
+++ b/container-search-gui/src/main/resources/gui/_includes/index.html
@@ -1,4 +1,4 @@
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!DOCTYPE html>
<html>
<head>
@@ -174,7 +174,7 @@
</div>
<div class="col-xs-6 quicklink-section">
<div class="credits">
- <span>Copyright Yahoo Holdings 2018</span>
+ <span>Copyright Yahoo</span>
Licensed under <a href="https://github.com/vespa-engine/vespa/blob/master/LICENSE">Apache License 2.0</a>
, <a href="https://github.com/y7kim/agency-jekyll-theme">Theme</a> by Rick K.
</div>
diff --git a/container-search-gui/src/main/resources/gui/_includes/search-api-reference.html b/container-search-gui/src/main/resources/gui/_includes/search-api-reference.html
index 01c1835c5e3..e7d9004e109 100644
--- a/container-search-gui/src/main/resources/gui/_includes/search-api-reference.html
+++ b/container-search-gui/src/main/resources/gui/_includes/search-api-reference.html
@@ -1,10 +1,10 @@
<!DOCTYPE html>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<html lang="en">
<head>
- <!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+ <!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- <meta name="viewport" content="width=device-width, initial-scale=1"> -->
@@ -45,7 +45,7 @@
<body>
<!-- Fixed navbar -->
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
@@ -85,7 +85,7 @@
<div id="main-content" class="container-fluid">
<div class="row">
- <!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+ <!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<div class="col-sm-3 col-md-2 sidebar">
<ul class="nav nav-sidebar">
diff --git a/container-search-gui/src/main/resources/gui/editarea/edit_area/reg_syntax/yql.js b/container-search-gui/src/main/resources/gui/editarea/edit_area/reg_syntax/yql.js
index 545927a833a..d6cda85c78b 100755
--- a/container-search-gui/src/main/resources/gui/editarea/edit_area/reg_syntax/yql.js
+++ b/container-search-gui/src/main/resources/gui/editarea/edit_area/reg_syntax/yql.js
@@ -1,5 +1,5 @@
/**
-* Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+* Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
*/
function getSources(bool){
var options = [];
diff --git a/container-search-gui/src/main/resources/gui/icons/browserconfig.xml b/container-search-gui/src/main/resources/gui/icons/browserconfig.xml
index 5fe3c6a3ff9..efa70aac49b 100644
--- a/container-search-gui/src/main/resources/gui/icons/browserconfig.xml
+++ b/container-search-gui/src/main/resources/gui/icons/browserconfig.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<browserconfig>
<msapplication>
<tile>
diff --git a/container-search/CMakeLists.txt b/container-search/CMakeLists.txt
index 7bb25e6a420..f8d34754c41 100644
--- a/container-search/CMakeLists.txt
+++ b/container-search/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_config_definitions()
diff --git a/container-search/abi-spec.json b/container-search/abi-spec.json
index b577660c1b9..5d30efc160a 100644
--- a/container-search/abi-spec.json
+++ b/container-search/abi-spec.json
@@ -1786,6 +1786,27 @@
],
"fields": []
},
+ "com.yahoo.search.Query$Builder": {
+ "superClass": "java.lang.Object",
+ "interfaces": [],
+ "attributes": [
+ "public"
+ ],
+ "methods": [
+ "public void <init>()",
+ "public com.yahoo.search.Query$Builder setRequest(java.lang.String)",
+ "public com.yahoo.search.Query$Builder setRequest(com.yahoo.container.jdisc.HttpRequest)",
+ "public com.yahoo.container.jdisc.HttpRequest getRequest()",
+ "public com.yahoo.search.Query$Builder setRequestMap(java.util.Map)",
+ "public java.util.Map getRequestMap()",
+ "public com.yahoo.search.Query$Builder setQueryProfile(com.yahoo.search.query.profile.compiled.CompiledQueryProfile)",
+ "public com.yahoo.search.query.profile.compiled.CompiledQueryProfile getQueryProfile()",
+ "public com.yahoo.search.Query$Builder setEmbedder(com.yahoo.language.process.Embedder)",
+ "public com.yahoo.language.process.Embedder getEmbedder()",
+ "public com.yahoo.search.Query build()"
+ ],
+ "fields": []
+ },
"com.yahoo.search.Query$Type": {
"superClass": "java.lang.Enum",
"interfaces": [],
@@ -4237,6 +4258,7 @@
"public"
],
"methods": [
+ "public void <init>(com.yahoo.statistics.Statistics, com.yahoo.jdisc.Metric, com.yahoo.container.handler.threadpool.ContainerThreadPool, com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry, com.yahoo.container.core.ContainerHttpConfig, com.yahoo.language.process.Embedder, com.yahoo.search.searchchain.ExecutionFactory)",
"public void <init>(com.yahoo.statistics.Statistics, com.yahoo.jdisc.Metric, com.yahoo.container.handler.threadpool.ContainerThreadPool, com.yahoo.container.logging.AccessLog, com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry, com.yahoo.container.core.ContainerHttpConfig, com.yahoo.search.searchchain.ExecutionFactory)",
"public void <init>(com.yahoo.statistics.Statistics, com.yahoo.jdisc.Metric, java.util.concurrent.Executor, com.yahoo.container.logging.AccessLog, com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry, com.yahoo.container.core.ContainerHttpConfig, com.yahoo.search.searchchain.ExecutionFactory)",
"public void <init>(com.yahoo.statistics.Statistics, com.yahoo.jdisc.Metric, java.util.concurrent.Executor, com.yahoo.container.logging.AccessLog, com.yahoo.search.query.profile.config.QueryProfilesConfig, com.yahoo.container.core.ContainerHttpConfig, com.yahoo.search.searchchain.ExecutionFactory)",
@@ -5863,6 +5885,7 @@
],
"methods": [
"public void <init>(com.yahoo.search.query.profile.compiled.CompiledQueryProfile)",
+ "public void <init>(com.yahoo.search.query.profile.compiled.CompiledQueryProfile, com.yahoo.language.process.Embedder)",
"public com.yahoo.search.query.profile.compiled.CompiledQueryProfile getQueryProfile()",
"public java.lang.Object get(com.yahoo.processing.request.CompoundName, java.util.Map, com.yahoo.processing.request.Properties)",
"public void set(com.yahoo.processing.request.CompoundName, java.lang.Object, java.util.Map)",
@@ -6229,6 +6252,19 @@
],
"fields": []
},
+ "com.yahoo.search.query.profile.types.ConversionContext": {
+ "superClass": "java.lang.Object",
+ "interfaces": [],
+ "attributes": [
+ "public"
+ ],
+ "methods": [
+ "public void <init>(java.lang.String, com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry, com.yahoo.language.process.Embedder, java.util.Map)",
+ "public java.lang.String destination()",
+ "public static com.yahoo.search.query.profile.types.ConversionContext empty()"
+ ],
+ "fields": []
+ },
"com.yahoo.search.query.profile.types.FieldDescription": {
"superClass": "java.lang.Object",
"interfaces": [
@@ -6276,7 +6312,7 @@
"public abstract java.lang.String toString()",
"public abstract java.lang.String toInstanceDescription()",
"public abstract java.lang.Object convertFrom(java.lang.Object, com.yahoo.search.query.profile.QueryProfileRegistry)",
- "public abstract java.lang.Object convertFrom(java.lang.Object, com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry)",
+ "public abstract java.lang.Object convertFrom(java.lang.Object, com.yahoo.search.query.profile.types.ConversionContext)",
"public com.yahoo.tensor.TensorType asTensorType()",
"public static com.yahoo.search.query.profile.types.FieldType fromString(java.lang.String, com.yahoo.search.query.profile.types.QueryProfileTypeRegistry)",
"public static boolean isLegalFieldValue(java.lang.Object)"
@@ -6303,7 +6339,7 @@
"public java.lang.String stringValue()",
"public java.lang.String toString()",
"public java.lang.String toInstanceDescription()",
- "public java.lang.Object convertFrom(java.lang.Object, com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry)",
+ "public java.lang.Object convertFrom(java.lang.Object, com.yahoo.search.query.profile.types.ConversionContext)",
"public java.lang.Object convertFrom(java.lang.Object, com.yahoo.search.query.profile.QueryProfileRegistry)",
"public int hashCode()",
"public boolean equals(java.lang.Object)"
@@ -6323,7 +6359,7 @@
"public java.lang.String toString()",
"public java.lang.String toInstanceDescription()",
"public java.lang.Object convertFrom(java.lang.Object, com.yahoo.search.query.profile.QueryProfileRegistry)",
- "public java.lang.Object convertFrom(java.lang.Object, com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry)"
+ "public java.lang.Object convertFrom(java.lang.Object, com.yahoo.search.query.profile.types.ConversionContext)"
],
"fields": []
},
@@ -6342,11 +6378,11 @@
"public java.lang.String stringValue()",
"public java.lang.String toString()",
"public java.lang.String toInstanceDescription()",
- "public com.yahoo.search.query.profile.compiled.CompiledQueryProfile convertFrom(java.lang.Object, com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry)",
+ "public com.yahoo.search.query.profile.compiled.CompiledQueryProfile convertFrom(java.lang.Object, com.yahoo.search.query.profile.types.ConversionContext)",
"public com.yahoo.search.query.profile.QueryProfile convertFrom(java.lang.Object, com.yahoo.search.query.profile.QueryProfileRegistry)",
"public int hashCode()",
"public boolean equals(java.lang.Object)",
- "public bridge synthetic java.lang.Object convertFrom(java.lang.Object, com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry)",
+ "public bridge synthetic java.lang.Object convertFrom(java.lang.Object, com.yahoo.search.query.profile.types.ConversionContext)",
"public bridge synthetic java.lang.Object convertFrom(java.lang.Object, com.yahoo.search.query.profile.QueryProfileRegistry)"
],
"fields": []
@@ -6419,7 +6455,7 @@
"public java.lang.String toString()",
"public java.lang.String toInstanceDescription()",
"public java.lang.Object convertFrom(java.lang.Object, com.yahoo.search.query.profile.QueryProfileRegistry)",
- "public java.lang.Object convertFrom(java.lang.Object, com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry)",
+ "public java.lang.Object convertFrom(java.lang.Object, com.yahoo.search.query.profile.types.ConversionContext)",
"public static com.yahoo.search.query.profile.types.TensorFieldType fromTypeString(java.lang.String)"
],
"fields": []
@@ -6496,7 +6532,7 @@
"public"
],
"methods": [
- "public void <init>(com.yahoo.search.Query, com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry)",
+ "public void <init>(com.yahoo.search.Query, com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry, com.yahoo.language.process.Embedder)",
"public void setParentQuery(com.yahoo.search.Query)",
"public java.lang.Object get(com.yahoo.processing.request.CompoundName, java.util.Map, com.yahoo.processing.request.Properties)",
"public void set(com.yahoo.processing.request.CompoundName, java.lang.Object, java.util.Map)",
@@ -7039,6 +7075,8 @@
],
"methods": [
"public void <init>(com.fasterxml.jackson.core.JsonGenerator, boolean)",
+ "public void <init>(com.fasterxml.jackson.core.JsonGenerator, boolean, boolean)",
+ "public void <init>(com.fasterxml.jackson.core.JsonGenerator, boolean, boolean, boolean)",
"public void accept(java.lang.String, java.lang.Object)",
"public void accept(java.lang.String, byte[], int, int)",
"protected boolean shouldRender(java.lang.String, java.lang.Object)",
@@ -7374,6 +7412,8 @@
"public static com.yahoo.search.result.ErrorMessage createNotFound(java.lang.String)",
"public static com.yahoo.search.result.ErrorMessage createBadRequest(java.lang.String)",
"public static com.yahoo.search.result.ErrorMessage createInternalServerError(java.lang.String)",
+ "public static com.yahoo.search.result.ErrorMessage createSearchReplyError(java.lang.String)",
+ "public static com.yahoo.search.result.ErrorMessage createDocsumReplyError(java.lang.String)",
"public void setSource(java.lang.String)",
"public java.lang.String getSource()",
"public int hashCode()",
@@ -7404,6 +7444,7 @@
"public static com.yahoo.search.result.FeatureData empty()",
"public com.yahoo.data.access.Inspector inspect()",
"public java.lang.String toJson()",
+ "public java.lang.String toJson(boolean)",
"public java.lang.StringBuilder writeJson(java.lang.StringBuilder)",
"public java.lang.Double getDouble(java.lang.String)",
"public com.yahoo.tensor.Tensor getTensor(java.lang.String)",
diff --git a/container-search/pom.xml b/container-search/pom.xml
index 822e6971bed..19a486eab73 100644
--- a/container-search/pom.xml
+++ b/container-search/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/container-search/src/main/antlr4/com/yahoo/search/yql/yqlplus.g4 b/container-search/src/main/antlr4/com/yahoo/search/yql/yqlplus.g4
index c0cf293f2ea..d9c0ab81121 100644
--- a/container-search/src/main/antlr4/com/yahoo/search/yql/yqlplus.g4
+++ b/container-search/src/main/antlr4/com/yahoo/search/yql/yqlplus.g4
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
grammar yqlplus;
options {
diff --git a/container-search/src/main/java/com/yahoo/data/JsonProducer.java b/container-search/src/main/java/com/yahoo/data/JsonProducer.java
index c9dc0946a3e..873f2a517d0 100644
--- a/container-search/src/main/java/com/yahoo/data/JsonProducer.java
+++ b/container-search/src/main/java/com/yahoo/data/JsonProducer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.data;
/**
diff --git a/container-search/src/main/java/com/yahoo/data/XmlProducer.java b/container-search/src/main/java/com/yahoo/data/XmlProducer.java
index 21610fb7b50..8980240c4f2 100644
--- a/container-search/src/main/java/com/yahoo/data/XmlProducer.java
+++ b/container-search/src/main/java/com/yahoo/data/XmlProducer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.data;
/**
diff --git a/container-search/src/main/java/com/yahoo/data/package-info.java b/container-search/src/main/java/com/yahoo/data/package-info.java
index 791c5b41c44..fd92c370c96 100644
--- a/container-search/src/main/java/com/yahoo/data/package-info.java
+++ b/container-search/src/main/java/com/yahoo/data/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Generic interfaces for all types of data.
**/
diff --git a/container-search/src/main/java/com/yahoo/fs4/DocsumPacket.java b/container-search/src/main/java/com/yahoo/fs4/DocsumPacket.java
index 3105b645cd0..510fbd938da 100644
--- a/container-search/src/main/java/com/yahoo/fs4/DocsumPacket.java
+++ b/container-search/src/main/java/com/yahoo/fs4/DocsumPacket.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.fs4;
/**
diff --git a/container-search/src/main/java/com/yahoo/fs4/GetDocSumsPacket.java b/container-search/src/main/java/com/yahoo/fs4/GetDocSumsPacket.java
index 6a808e17b5c..87ad4e38317 100644
--- a/container-search/src/main/java/com/yahoo/fs4/GetDocSumsPacket.java
+++ b/container-search/src/main/java/com/yahoo/fs4/GetDocSumsPacket.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.fs4;
/**
diff --git a/container-search/src/main/java/com/yahoo/fs4/MapEncoder.java b/container-search/src/main/java/com/yahoo/fs4/MapEncoder.java
index f7e01bc1254..9dc3734f157 100644
--- a/container-search/src/main/java/com/yahoo/fs4/MapEncoder.java
+++ b/container-search/src/main/java/com/yahoo/fs4/MapEncoder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.fs4;
import com.yahoo.tensor.Tensor;
diff --git a/container-search/src/main/java/com/yahoo/prelude/ConfigurationException.java b/container-search/src/main/java/com/yahoo/prelude/ConfigurationException.java
index 9914522bc32..1914c01889d 100644
--- a/container-search/src/main/java/com/yahoo/prelude/ConfigurationException.java
+++ b/container-search/src/main/java/com/yahoo/prelude/ConfigurationException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/Freshness.java b/container-search/src/main/java/com/yahoo/prelude/Freshness.java
index 84f65f8bdc7..956827f3c2c 100644
--- a/container-search/src/main/java/com/yahoo/prelude/Freshness.java
+++ b/container-search/src/main/java/com/yahoo/prelude/Freshness.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude;
import java.util.Calendar;
diff --git a/container-search/src/main/java/com/yahoo/prelude/Index.java b/container-search/src/main/java/com/yahoo/prelude/Index.java
index 306c7c80577..48d8e382722 100644
--- a/container-search/src/main/java/com/yahoo/prelude/Index.java
+++ b/container-search/src/main/java/com/yahoo/prelude/Index.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude;
import com.yahoo.language.process.StemMode;
diff --git a/container-search/src/main/java/com/yahoo/prelude/IndexFacts.java b/container-search/src/main/java/com/yahoo/prelude/IndexFacts.java
index 7b403ca3659..a1613dccdd5 100644
--- a/container-search/src/main/java/com/yahoo/prelude/IndexFacts.java
+++ b/container-search/src/main/java/com/yahoo/prelude/IndexFacts.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude;
import com.google.common.collect.ImmutableList;
diff --git a/container-search/src/main/java/com/yahoo/prelude/IndexModel.java b/container-search/src/main/java/com/yahoo/prelude/IndexModel.java
index 00935392683..e7018f81de1 100644
--- a/container-search/src/main/java/com/yahoo/prelude/IndexModel.java
+++ b/container-search/src/main/java/com/yahoo/prelude/IndexModel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude;
import java.util.ArrayList;
diff --git a/container-search/src/main/java/com/yahoo/prelude/Location.java b/container-search/src/main/java/com/yahoo/prelude/Location.java
index 3e9c2382f31..d3c4daab9a0 100644
--- a/container-search/src/main/java/com/yahoo/prelude/Location.java
+++ b/container-search/src/main/java/com/yahoo/prelude/Location.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude;
import com.yahoo.text.Utf8;
diff --git a/container-search/src/main/java/com/yahoo/prelude/Ping.java b/container-search/src/main/java/com/yahoo/prelude/Ping.java
index 1d5d4c92827..7424d2ab0d8 100644
--- a/container-search/src/main/java/com/yahoo/prelude/Ping.java
+++ b/container-search/src/main/java/com/yahoo/prelude/Ping.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/Pong.java b/container-search/src/main/java/com/yahoo/prelude/Pong.java
index 1e5513f1274..b6deee61b81 100644
--- a/container-search/src/main/java/com/yahoo/prelude/Pong.java
+++ b/container-search/src/main/java/com/yahoo/prelude/Pong.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude;
import com.yahoo.search.result.ErrorMessage;
diff --git a/container-search/src/main/java/com/yahoo/prelude/SearchDefinition.java b/container-search/src/main/java/com/yahoo/prelude/SearchDefinition.java
index 3d1240237e4..1d9e32ec374 100644
--- a/container-search/src/main/java/com/yahoo/prelude/SearchDefinition.java
+++ b/container-search/src/main/java/com/yahoo/prelude/SearchDefinition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude;
import java.util.HashMap;
diff --git a/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java b/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java
index 8685400b5c1..a2decd8c42f 100644
--- a/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.cluster;
import com.google.inject.Inject;
@@ -9,7 +9,6 @@ import com.yahoo.container.QrConfig;
import com.yahoo.container.QrSearchersConfig;
import com.yahoo.container.core.documentapi.VespaDocumentAccess;
import com.yahoo.container.handler.VipStatus;
-import com.yahoo.documentapi.DocumentAccess;
import com.yahoo.prelude.IndexFacts;
import com.yahoo.prelude.fastsearch.ClusterParams;
import com.yahoo.prelude.fastsearch.DocumentdbInfoConfig;
@@ -35,6 +34,10 @@ import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executor;
+import java.util.concurrent.FutureTask;
+import java.util.concurrent.RejectedExecutionException;
import static com.yahoo.container.QrSearchersConfig.Searchcluster.Indexingmode.STREAMING;
@@ -48,6 +51,9 @@ import static com.yahoo.container.QrSearchersConfig.Searchcluster.Indexingmode.S
@After("*")
public class ClusterSearcher extends Searcher {
+ private final static long DEFAULT_MAX_QUERY_TIMEOUT = 600000L;
+ private final static long DEFAULT_MAX_QUERY_CACHE_TIMEOUT = 10000L;
+
private final String searchClusterName;
// The set of document types contained in this search cluster
@@ -57,15 +63,14 @@ public class ClusterSearcher extends Searcher {
private final Map<String, Set<String>> rankProfiles = new HashMap<>();
private final long maxQueryTimeout; // in milliseconds
- private final static long DEFAULT_MAX_QUERY_TIMEOUT = 600000L;
-
private final long maxQueryCacheTimeout; // in milliseconds
- private final static long DEFAULT_MAX_QUERY_CACHE_TIMEOUT = 10000L;
- private VespaBackEndSearcher server = null;
+ private final VespaBackEndSearcher server;
+ private final Executor executor;
@Inject
public ClusterSearcher(ComponentId id,
+ Executor executor,
QrSearchersConfig qrsConfig,
ClusterConfig clusterConfig,
DocumentdbInfoConfig documentDbConfig,
@@ -74,7 +79,7 @@ public class ClusterSearcher extends Searcher {
VipStatus vipStatus,
VespaDocumentAccess access) {
super(id);
-
+ this.executor = executor;
int searchClusterIndex = clusterConfig.clusterId();
searchClusterName = clusterConfig.clusterName();
QrSearchersConfig.Searchcluster searchClusterConfig = getSearchClusterConfigFromClusterName(qrsConfig, searchClusterName);
@@ -97,18 +102,12 @@ public class ClusterSearcher extends Searcher {
}
if (searchClusterConfig.indexingmode() == STREAMING) {
- VdsStreamingSearcher searcher = vdsCluster(qrConfig.discriminator(), searchClusterIndex,
+ server = vdsCluster(qrConfig.discriminator(), searchClusterIndex,
searchClusterConfig, docSumParams, documentDbConfig, access);
- addBackendSearcher(searcher);
- vipStatus.addToRotation(searcher.getName());
+ vipStatus.addToRotation(server.getName());
} else {
- FastSearcher searcher = searchDispatch(searchClusterIndex, searchClusterName, qrConfig.discriminator(),
+ server = searchDispatch(searchClusterIndex, searchClusterName, qrConfig.discriminator(),
docSumParams, documentDbConfig, dispatchers);
- addBackendSearcher(searcher);
-
- }
- if ( server == null ) {
- throw new IllegalStateException("ClusterSearcher should have backend.");
}
}
@@ -159,15 +158,17 @@ public class ClusterSearcher extends Searcher {
}
/** Do not use, for internal testing purposes only. **/
- ClusterSearcher(Set<String> documentTypes) {
+ ClusterSearcher(Set<String> documentTypes, VespaBackEndSearcher searcher, Executor executor) {
this.documentTypes = documentTypes;
searchClusterName = "testScenario";
maxQueryTimeout = DEFAULT_MAX_QUERY_TIMEOUT;
maxQueryCacheTimeout = DEFAULT_MAX_QUERY_CACHE_TIMEOUT;
- }
-
- void addBackendSearcher(VespaBackEndSearcher searcher) {
server = searcher;
+ this.executor = executor;
+ }
+ /** Do not use, for internal testing purposes only. **/
+ ClusterSearcher(Set<String> documentTypes) {
+ this(documentTypes, null, null);
}
void addValidRankProfile(String profileName, String docTypeName) {
@@ -305,6 +306,17 @@ public class ClusterSearcher extends Searcher {
}
}
+ private static void processResult(Query query, FutureTask<Result> task, Result mergedResult) {
+ try {
+ Result result = task.get();
+ mergedResult.mergeWith(result);
+ mergedResult.hits().addAll(result.hits().asUnorderedHits());
+ } catch (ExecutionException | InterruptedException e) {
+ mergedResult.mergeWith(new Result(query,
+ ErrorMessage.createInternalServerError("Unable to query restrict='" + query.getModel().getRestrict() + "'\n" + e)));
+ }
+ }
+
private Result searchMultipleDocumentTypes(Searcher searcher, Query query, Execution execution) {
Set<String> docTypes = resolveDocumentTypes(query, execution.context().getIndexFacts());
@@ -316,10 +328,19 @@ public class ClusterSearcher extends Searcher {
return searcher.search(queries.get(0), execution);
} else {
Result mergedResult = new Result(query);
+ List<FutureTask<Result>> pending = new ArrayList<>(queries.size());
for (Query q : queries) {
- Result result = searcher.search(q, execution);
- mergedResult.mergeWith(result);
- mergedResult.hits().addAll(result.hits().asUnorderedHits());
+ FutureTask<Result> task = new FutureTask<>(() -> searcher.search(q, execution));
+ try {
+ executor.execute(task);
+ pending.add(task);
+ } catch (RejectedExecutionException rej) {
+ task.run();
+ processResult(query, task, mergedResult);
+ }
+ }
+ for (FutureTask<Result> task : pending) {
+ processResult(query, task, mergedResult);
}
// Should we trim the merged result?
if (query.getOffset() > 0 || query.getHits() < mergedResult.hits().size()) {
diff --git a/container-search/src/main/java/com/yahoo/prelude/cluster/package-info.java b/container-search/src/main/java/com/yahoo/prelude/cluster/package-info.java
index 5e18b483148..5a7940263d9 100644
--- a/container-search/src/main/java/com/yahoo/prelude/cluster/package-info.java
+++ b/container-search/src/main/java/com/yahoo/prelude/cluster/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Cluster monitoring for content clusters queried over fnet.
* Others (e.g HTTP connections and content clusters queried over RPC)
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/BoolField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/BoolField.java
index 633e76a2d9c..e3a3524d473 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/BoolField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/BoolField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Class representing a byte field in the result set
*
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/ByteField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/ByteField.java
index 8fdc093122e..1ffe23236bf 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/ByteField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/ByteField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Class representing a byte field in the result set
*
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/ClusterParams.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/ClusterParams.java
index 2787447e791..87bae92eb5b 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/ClusterParams.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/ClusterParams.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DataField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DataField.java
index af7d98311f6..dc7d6926b3a 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DataField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DataField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Class representing a data field in the result set. a data field
* is basically the same thing as a string field, only that we
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinition.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinition.java
index fe7e7c87927..8a7d14d5f49 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinition.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch;
import com.google.common.collect.ImmutableList;
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java
index 7745a71b24f..df87de2a12b 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch;
import com.google.common.collect.ImmutableMap;
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java
index 70ffc71495a..e412258ff15 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch;
import com.yahoo.data.access.Inspector;
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocumentDatabase.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocumentDatabase.java
index aa492524c83..26087318ce1 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocumentDatabase.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocumentDatabase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch;
import com.google.common.collect.ImmutableMap;
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DoubleField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DoubleField.java
index f6f8006d2d2..0e958168bad 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DoubleField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DoubleField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch;
import com.yahoo.search.result.NanNumber;
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java
index a639f2368a1..7c7f01b414a 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch;
import com.yahoo.data.access.ObjectTraverser;
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java
index 33ebebd8d49..7f411bbc80f 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch;
import com.yahoo.prelude.Ping;
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FeatureDataField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FeatureDataField.java
index b0003f4321e..741d8ae85d0 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FeatureDataField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FeatureDataField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch;
import com.yahoo.data.access.Inspector;
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/Float16Field.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/Float16Field.java
index f00d6b19d67..5822537971f 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/Float16Field.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/Float16Field.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch;
import com.yahoo.data.access.Inspector;
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FloatField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FloatField.java
index 7330f0bde3c..79b1378599b 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FloatField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FloatField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch;
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/GroupingListHit.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/GroupingListHit.java
index 2b91941d1d4..fb7e8ca883b 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/GroupingListHit.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/GroupingListHit.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/Int64Field.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/Int64Field.java
index 396a84a28bd..cfc40022199 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/Int64Field.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/Int64Field.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Class representing a integer field in the result set
*
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/IntegerField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/IntegerField.java
index bec39393359..105814c6d22 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/IntegerField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/IntegerField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Class representing a integer field in the result set
*
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java
index 388c96b453d..3d5c12aa6ba 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Class representing a long data field in the result set.
*
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongstringField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongstringField.java
index 5de38e43c96..f87045624da 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongstringField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongstringField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Class representing a long string field in the result set.
*
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/RankProfile.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/RankProfile.java
index fe9b78046ce..d1cd58f8895 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/RankProfile.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/RankProfile.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/ShortField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/ShortField.java
index b94c902693a..150c8e984b0 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/ShortField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/ShortField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Class representing a short field in the result set
*
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/StringField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/StringField.java
index 4df12bd82bd..16526a8e99a 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/StringField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/StringField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Class representing a string field in the result set
*
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/StructDataField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/StructDataField.java
index 8d8be0d3df0..8cd9b505678 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/StructDataField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/StructDataField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch;
import com.yahoo.search.result.StructuredData;
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/SummaryParameters.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/SummaryParameters.java
index 603d576ddb5..dc8c199840f 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/SummaryParameters.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/SummaryParameters.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch;
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/TensorField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/TensorField.java
index 1b91a66aef6..56566366317 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/TensorField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/TensorField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch;
import com.yahoo.data.access.Inspector;
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/TimeoutException.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/TimeoutException.java
index f30a9ec81e7..b28d077cdce 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/TimeoutException.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/TimeoutException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch;
import java.io.IOException;
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java
index d30e67195c3..e541cc8b5c0 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch;
import com.yahoo.collections.TinyIdentitySet;
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/XMLField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/XMLField.java
index cbf48d58313..c7996e1051d 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/XMLField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/XMLField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch;
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/package-info.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/package-info.java
index 6e38a3207df..5648ae18bc9 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/package-info.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.prelude.fastsearch;
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/AnnotateStringFieldPart.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/AnnotateStringFieldPart.java
index e61d2ad8af5..06d18128169 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/AnnotateStringFieldPart.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/AnnotateStringFieldPart.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.hitfield;
public class AnnotateStringFieldPart implements FieldPart {
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/BoldCloseFieldPart.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/BoldCloseFieldPart.java
index 54d8de61d1e..0b249d9c5a7 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/BoldCloseFieldPart.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/BoldCloseFieldPart.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.hitfield;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/BoldOpenFieldPart.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/BoldOpenFieldPart.java
index 8da9529f3c6..fffc2f9049d 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/BoldOpenFieldPart.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/BoldOpenFieldPart.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.hitfield;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/FieldIterator.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/FieldIterator.java
index 3c61678bbde..f317325eb7c 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/FieldIterator.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/FieldIterator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.hitfield;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/FieldPart.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/FieldPart.java
index 6ca5feb610f..8da2f9c54f9 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/FieldPart.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/FieldPart.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.hitfield;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/HitField.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/HitField.java
index e81a6653b08..5d26a71137e 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/HitField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/HitField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.hitfield;
import java.util.ArrayList;
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/ImmutableFieldPart.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/ImmutableFieldPart.java
index 268e1b53459..ba7ebbfad47 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/ImmutableFieldPart.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/ImmutableFieldPart.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.hitfield;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/JSONString.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/JSONString.java
index 55438aa35ba..10ef3df10f1 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/JSONString.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/JSONString.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.hitfield;
import com.yahoo.prelude.query.WeightedSetItem;
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/MarkupFieldPart.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/MarkupFieldPart.java
index 17def6771ae..0c50d25c4dc 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/MarkupFieldPart.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/MarkupFieldPart.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.hitfield;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/RawData.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/RawData.java
index 2e9d9d8cad9..a4980ccf7d8 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/RawData.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/RawData.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.hitfield;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/SeparatorFieldPart.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/SeparatorFieldPart.java
index a37d208f1ad..4455d3c45a6 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/SeparatorFieldPart.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/SeparatorFieldPart.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.hitfield;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/StringFieldPart.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/StringFieldPart.java
index 58018305fef..add340f0127 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/StringFieldPart.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/StringFieldPart.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.hitfield;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/TokenFieldIterator.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/TokenFieldIterator.java
index 443a9bb725b..e35968556ae 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/TokenFieldIterator.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/TokenFieldIterator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.hitfield;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/XMLString.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/XMLString.java
index 5aa7c62279b..dbd54cb589f 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/XMLString.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/XMLString.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.hitfield;
import com.yahoo.data.XmlProducer;
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/XmlRenderer.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/XmlRenderer.java
index 5b7960bdea9..09dafe880f0 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/XmlRenderer.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/XmlRenderer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.hitfield;
import com.yahoo.text.XML;
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/package-info.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/package-info.java
index 3f0b6223937..a8922fd885e 100644
--- a/container-search/src/main/java/com/yahoo/prelude/hitfield/package-info.java
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.prelude.hitfield;
diff --git a/container-search/src/main/java/com/yahoo/prelude/package-info.java b/container-search/src/main/java/com/yahoo/prelude/package-info.java
index decf477e015..d099cf30182 100644
--- a/container-search/src/main/java/com/yahoo/prelude/package-info.java
+++ b/container-search/src/main/java/com/yahoo/prelude/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* The main classes of the Vespa Query Result Server. As an external API, this is <b>deprecated</b> starting with Vespa 4.2
*/
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/AndItem.java b/container-search/src/main/java/com/yahoo/prelude/query/AndItem.java
index 31b1a6cadac..d1a05556093 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/AndItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/AndItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/AndSegmentItem.java b/container-search/src/main/java/com/yahoo/prelude/query/AndSegmentItem.java
index 55e16804602..2c73ffa772b 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/AndSegmentItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/AndSegmentItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import java.util.Iterator;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/BlockItem.java b/container-search/src/main/java/com/yahoo/prelude/query/BlockItem.java
index d0ffcd2d0e0..c2fd207f548 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/BlockItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/BlockItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/CompositeIndexedItem.java b/container-search/src/main/java/com/yahoo/prelude/query/CompositeIndexedItem.java
index d3a9bb28519..14fd7a33232 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/CompositeIndexedItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/CompositeIndexedItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import com.yahoo.prelude.query.textualrepresentation.Discloser;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/CompositeItem.java b/container-search/src/main/java/com/yahoo/prelude/query/CompositeItem.java
index 4609edb7446..71d090736fe 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/CompositeItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/CompositeItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/CompositeTaggableItem.java b/container-search/src/main/java/com/yahoo/prelude/query/CompositeTaggableItem.java
index dd015b5f040..46867c2af81 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/CompositeTaggableItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/CompositeTaggableItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/DotProductItem.java b/container-search/src/main/java/com/yahoo/prelude/query/DotProductItem.java
index ee41efd943c..c43ded24a6d 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/DotProductItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/DotProductItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import java.util.Map;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/EquivItem.java b/container-search/src/main/java/com/yahoo/prelude/query/EquivItem.java
index 9e557eacd85..97cbfac0b2d 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/EquivItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/EquivItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import com.yahoo.protect.Validator;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/ExactStringItem.java b/container-search/src/main/java/com/yahoo/prelude/query/ExactStringItem.java
index 7c33950fee8..e313d4e1fe8 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/ExactStringItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/ExactStringItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/FalseItem.java b/container-search/src/main/java/com/yahoo/prelude/query/FalseItem.java
index 9abc6b2bdaa..34670ec6fdd 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/FalseItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/FalseItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import java.nio.ByteBuffer;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/GeoLocationItem.java b/container-search/src/main/java/com/yahoo/prelude/query/GeoLocationItem.java
index ba5270e7af7..fd1449d5851 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/GeoLocationItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/GeoLocationItem.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/HasIndexItem.java b/container-search/src/main/java/com/yahoo/prelude/query/HasIndexItem.java
index c70ee9e4def..b137fbcb947 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/HasIndexItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/HasIndexItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/Highlight.java b/container-search/src/main/java/com/yahoo/prelude/query/Highlight.java
index ac2e5f70fe8..44d9d10b603 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/Highlight.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/Highlight.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import java.util.ArrayList;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/IndexedItem.java b/container-search/src/main/java/com/yahoo/prelude/query/IndexedItem.java
index cba289fa5d8..2095f4a4909 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/IndexedItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/IndexedItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/IndexedSegmentItem.java b/container-search/src/main/java/com/yahoo/prelude/query/IndexedSegmentItem.java
index 300d40d4366..1594c6357e2 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/IndexedSegmentItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/IndexedSegmentItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import com.yahoo.prelude.query.textualrepresentation.Discloser;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/IntItem.java b/container-search/src/main/java/com/yahoo/prelude/query/IntItem.java
index 1591d31f749..da2c3e6fa51 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/IntItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/IntItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/Item.java b/container-search/src/main/java/com/yahoo/prelude/query/Item.java
index 467fbd3127c..d2a594bad98 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/Item.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/Item.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/ItemHelper.java b/container-search/src/main/java/com/yahoo/prelude/query/ItemHelper.java
index cbdaa04a49f..1deb3ed1d3c 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/ItemHelper.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/ItemHelper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import java.util.Iterator;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/Limit.java b/container-search/src/main/java/com/yahoo/prelude/query/Limit.java
index 11598bac527..bbb0b2090c5 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/Limit.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/Limit.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/MarkerWordItem.java b/container-search/src/main/java/com/yahoo/prelude/query/MarkerWordItem.java
index 4e7036e3481..0f22d99a744 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/MarkerWordItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/MarkerWordItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import com.yahoo.net.UrlTokenizer;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/NearItem.java b/container-search/src/main/java/com/yahoo/prelude/query/NearItem.java
index 56554e14d01..ffc16bfa298 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/NearItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/NearItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import com.yahoo.compress.IntegerCompressor;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/NonReducibleCompositeItem.java b/container-search/src/main/java/com/yahoo/prelude/query/NonReducibleCompositeItem.java
index 3e49df85333..7483863e459 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/NonReducibleCompositeItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/NonReducibleCompositeItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import java.util.Optional;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/NotItem.java b/container-search/src/main/java/com/yahoo/prelude/query/NotItem.java
index ab1e1b4bd33..22079cf0666 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/NotItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/NotItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import com.yahoo.protect.Validator;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/NullItem.java b/container-search/src/main/java/com/yahoo/prelude/query/NullItem.java
index e7194a7ebc0..98a9e242778 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/NullItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/NullItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/ONearItem.java b/container-search/src/main/java/com/yahoo/prelude/query/ONearItem.java
index 88982195af6..5f3796e2564 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/ONearItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/ONearItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/OrItem.java b/container-search/src/main/java/com/yahoo/prelude/query/OrItem.java
index c9d4cc7d802..380993ec7c9 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/OrItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/OrItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/PhraseItem.java b/container-search/src/main/java/com/yahoo/prelude/query/PhraseItem.java
index 2d648557d9c..00d25c94d67 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/PhraseItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/PhraseItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import com.yahoo.prelude.query.textualrepresentation.Discloser;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/PhraseSegmentItem.java b/container-search/src/main/java/com/yahoo/prelude/query/PhraseSegmentItem.java
index 9b34fd7d62b..9534a5751fd 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/PhraseSegmentItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/PhraseSegmentItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import com.yahoo.prelude.query.textualrepresentation.Discloser;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/PredicateQueryItem.java b/container-search/src/main/java/com/yahoo/prelude/query/PredicateQueryItem.java
index 737200e7962..da94070c94f 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/PredicateQueryItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/PredicateQueryItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import com.yahoo.compress.IntegerCompressor;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/PrefixItem.java b/container-search/src/main/java/com/yahoo/prelude/query/PrefixItem.java
index 6b6f8e3cb71..e48759323fb 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/PrefixItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/PrefixItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/PureWeightedInteger.java b/container-search/src/main/java/com/yahoo/prelude/query/PureWeightedInteger.java
index f9766675906..7b93cf30b42 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/PureWeightedInteger.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/PureWeightedInteger.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import java.nio.ByteBuffer;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/PureWeightedItem.java b/container-search/src/main/java/com/yahoo/prelude/query/PureWeightedItem.java
index 0735d33d9c8..f29f120f353 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/PureWeightedItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/PureWeightedItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import java.nio.ByteBuffer;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/PureWeightedString.java b/container-search/src/main/java/com/yahoo/prelude/query/PureWeightedString.java
index 5516734583c..409915fbd1e 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/PureWeightedString.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/PureWeightedString.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import java.nio.ByteBuffer;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/QueryCanonicalizer.java b/container-search/src/main/java/com/yahoo/prelude/query/QueryCanonicalizer.java
index 2bf20bf7c5a..77814c01213 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/QueryCanonicalizer.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/QueryCanonicalizer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import com.yahoo.search.Query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/QueryException.java b/container-search/src/main/java/com/yahoo/prelude/query/QueryException.java
index 7d029d69077..60aab75f219 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/QueryException.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/QueryException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/RangeItem.java b/container-search/src/main/java/com/yahoo/prelude/query/RangeItem.java
index 419471348b7..557c86ffaa1 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/RangeItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/RangeItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/RankItem.java b/container-search/src/main/java/com/yahoo/prelude/query/RankItem.java
index 287375035f9..094fa4bb748 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/RankItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/RankItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/RegExpItem.java b/container-search/src/main/java/com/yahoo/prelude/query/RegExpItem.java
index ec3744306ed..29cf7803d61 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/RegExpItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/RegExpItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import java.nio.ByteBuffer;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/SameElementItem.java b/container-search/src/main/java/com/yahoo/prelude/query/SameElementItem.java
index 58bbcd7315c..a02991db0ae 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/SameElementItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/SameElementItem.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import com.yahoo.protect.Validator;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/SegmentItem.java b/container-search/src/main/java/com/yahoo/prelude/query/SegmentItem.java
index f70bf8021ff..e2f0ece5501 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/SegmentItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/SegmentItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/SegmentingRule.java b/container-search/src/main/java/com/yahoo/prelude/query/SegmentingRule.java
index 891a7628a65..89a0f0e93a6 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/SegmentingRule.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/SegmentingRule.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/SimpleIndexedItem.java b/container-search/src/main/java/com/yahoo/prelude/query/SimpleIndexedItem.java
index 5d5976e2383..880add231ac 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/SimpleIndexedItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/SimpleIndexedItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import com.yahoo.prelude.query.textualrepresentation.Discloser;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/SimpleTaggableItem.java b/container-search/src/main/java/com/yahoo/prelude/query/SimpleTaggableItem.java
index afdc859a5b7..4770a02e51a 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/SimpleTaggableItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/SimpleTaggableItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/Substring.java b/container-search/src/main/java/com/yahoo/prelude/query/Substring.java
index ab3e28fc259..fc77d8297d2 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/Substring.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/Substring.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/SubstringItem.java b/container-search/src/main/java/com/yahoo/prelude/query/SubstringItem.java
index beda8552349..21dfe979ab9 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/SubstringItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/SubstringItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/SuffixItem.java b/container-search/src/main/java/com/yahoo/prelude/query/SuffixItem.java
index cb87ca85d9a..d1b0952da9c 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/SuffixItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/SuffixItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/TaggableItem.java b/container-search/src/main/java/com/yahoo/prelude/query/TaggableItem.java
index 8e2a472fd7c..ac41544224b 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/TaggableItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/TaggableItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/TaggableSegmentItem.java b/container-search/src/main/java/com/yahoo/prelude/query/TaggableSegmentItem.java
index 83122a0a512..ebd39e1f72c 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/TaggableSegmentItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/TaggableSegmentItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/TermItem.java b/container-search/src/main/java/com/yahoo/prelude/query/TermItem.java
index 5df0cd120b2..2794c310010 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/TermItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/TermItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/TermType.java b/container-search/src/main/java/com/yahoo/prelude/query/TermType.java
index b818e916e71..c041472d5aa 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/TermType.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/TermType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/ToolBox.java b/container-search/src/main/java/com/yahoo/prelude/query/ToolBox.java
index 5a6d4cd6382..03c3f7e8b2c 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/ToolBox.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/ToolBox.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import com.google.common.annotations.Beta;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/WandItem.java b/container-search/src/main/java/com/yahoo/prelude/query/WandItem.java
index c5679e113f1..cb71e0b90bf 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/WandItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/WandItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import com.yahoo.compress.IntegerCompressor;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/WeakAndItem.java b/container-search/src/main/java/com/yahoo/prelude/query/WeakAndItem.java
index e8817a44133..393a498dd3e 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/WeakAndItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/WeakAndItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import com.yahoo.compress.IntegerCompressor;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/WeightedSetItem.java b/container-search/src/main/java/com/yahoo/prelude/query/WeightedSetItem.java
index 15354f5f7d3..d7a07824251 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/WeightedSetItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/WeightedSetItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import com.yahoo.collections.CopyOnWriteHashMap;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/WordAlternativesItem.java b/container-search/src/main/java/com/yahoo/prelude/query/WordAlternativesItem.java
index d2df2aa6c89..3b22bdbb163 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/WordAlternativesItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/WordAlternativesItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import java.nio.ByteBuffer;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/WordItem.java b/container-search/src/main/java/com/yahoo/prelude/query/WordItem.java
index be56c95a6af..aa6e9b75fcb 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/WordItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/WordItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/package-info.java b/container-search/src/main/java/com/yahoo/prelude/query/package-info.java
index 589c9343d4e..0f77c37597f 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/package-info.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* The query model representing a boolean combination of selection criterions, where elements may be
* simple criterions, nested boolean operators, or annotated pieces of natural language text.
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/AbstractParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/AbstractParser.java
index 732466748eb..5fb90deaa0a 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/parser/AbstractParser.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/AbstractParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser;
import com.yahoo.language.Language;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/AdvancedParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/AdvancedParser.java
index 8b878417912..690fc67af7e 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/parser/AdvancedParser.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/AdvancedParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser;
import com.yahoo.prelude.query.*;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/AllParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/AllParser.java
index 49bdba2c90f..3759dbbcbee 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/parser/AllParser.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/AllParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser;
import com.yahoo.prelude.query.AndItem;
@@ -112,6 +112,7 @@ public class AllParser extends SimpleParser {
protected Item negativeItem() {
int position = tokens.getPosition();
Item item = null;
+ boolean isComposited = false;
try {
if ( ! tokens.skip(MINUS)) return null;
if (tokens.currentIsNoIgnore(SPACE)) return null;
@@ -121,6 +122,7 @@ public class AllParser extends SimpleParser {
item = compositeItem();
if (item != null) {
+ isComposited = true;
if (item instanceof OrItem) { // Turn into And
AndItem and = new AndItem();
@@ -137,9 +139,11 @@ public class AllParser extends SimpleParser {
// Heuristic overdrive engaged!
// Interpret -N as a positive item matching a negative number (by backtracking out of this)
// but not if there is an explicit index (such as -a:b)
+ // but interpret -(N) as a negative item matching a positive number
// but interpret --N as a negative item matching a negative number
if (item instanceof IntItem &&
((IntItem)item).getIndexName().isEmpty() &&
+ ! isComposited &&
! ((IntItem)item).getNumber().startsWith(("-")))
item = null;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/AnyParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/AnyParser.java
index b714a1d8b34..e22043c6b8f 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/parser/AnyParser.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/AnyParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser;
import com.yahoo.language.Language;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/CustomParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/CustomParser.java
index 91ccb4a5cca..e867def5903 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/parser/CustomParser.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/CustomParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser;
import com.yahoo.language.Language;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/ParseException.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/ParseException.java
index de1d495cc0c..bef2ca9ffe9 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/parser/ParseException.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/ParseException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/PhraseParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/PhraseParser.java
index 12f63276269..75edf9fbf5c 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/parser/PhraseParser.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/PhraseParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser;
import com.yahoo.prelude.query.Item;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/ProgrammaticParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/ProgrammaticParser.java
index eab001042d3..f2a0fdba7ff 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/parser/ProgrammaticParser.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/ProgrammaticParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser;
import com.yahoo.language.Language;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/SimpleParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/SimpleParser.java
index 0686a4bdb43..087da13a937 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/parser/SimpleParser.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/SimpleParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser;
import com.yahoo.prelude.query.*;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/StructuredParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/StructuredParser.java
index 267880fc97a..498b3185489 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/parser/StructuredParser.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/StructuredParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser;
import com.yahoo.prelude.IndexFacts;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/Token.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/Token.java
index 75b783d3129..b668df9208c 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/parser/Token.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/Token.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/TokenPosition.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/TokenPosition.java
index fbaf1675ff1..9c60abab637 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/parser/TokenPosition.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/TokenPosition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/Tokenizer.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/Tokenizer.java
index b71bd57539f..93b8cf1ed83 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/parser/Tokenizer.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/Tokenizer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser;
import com.yahoo.language.Linguistics;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/UnicodePropertyDump.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/UnicodePropertyDump.java
index 0dd2f4692d9..b01b1295f45 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/parser/UnicodePropertyDump.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/UnicodePropertyDump.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser;
import java.io.PrintStream;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/WebParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/WebParser.java
index d23ca3f4a29..a7dbaa94fc0 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/parser/WebParser.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/WebParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser;
import com.yahoo.prelude.query.*;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/package-info.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/package-info.java
index cc1a8b80893..63f548be449 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/parser/package-info.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.prelude.query.parser;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/textualrepresentation/Discloser.java b/container-search/src/main/java/com/yahoo/prelude/query/textualrepresentation/Discloser.java
index cbe1c0f8ab9..6ab32a5f588 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/textualrepresentation/Discloser.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/textualrepresentation/Discloser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.textualrepresentation;
import com.yahoo.prelude.query.Item;
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/textualrepresentation/TextualQueryRepresentation.java b/container-search/src/main/java/com/yahoo/prelude/query/textualrepresentation/TextualQueryRepresentation.java
index 858a85aeaf4..4c0c7501ba1 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/textualrepresentation/TextualQueryRepresentation.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/textualrepresentation/TextualQueryRepresentation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.textualrepresentation;
import com.yahoo.prelude.query.Item;
diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/CJKSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/CJKSearcher.java
index 785477d6df7..100ae1a3df3 100644
--- a/container-search/src/main/java/com/yahoo/prelude/querytransform/CJKSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/CJKSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.querytransform;
import static com.yahoo.prelude.querytransform.StemmingSearcher.STEMMING;
diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/CollapsePhraseSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/CollapsePhraseSearcher.java
index 47e5651f64c..2a98c885c46 100644
--- a/container-search/src/main/java/com/yahoo/prelude/querytransform/CollapsePhraseSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/CollapsePhraseSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.querytransform;
import java.util.ListIterator;
diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/LiteralBoostSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/LiteralBoostSearcher.java
index d557c567e6d..e9e5818cefe 100644
--- a/container-search/src/main/java/com/yahoo/prelude/querytransform/LiteralBoostSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/LiteralBoostSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.querytransform;
import com.yahoo.component.chain.dependencies.After;
diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/NoRankingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/NoRankingSearcher.java
index 30074f0306d..82eb4d94dea 100644
--- a/container-search/src/main/java/com/yahoo/prelude/querytransform/NoRankingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/NoRankingSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.querytransform;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/NonPhrasingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/NonPhrasingSearcher.java
index ffb1b8a4965..6bae5175d84 100644
--- a/container-search/src/main/java/com/yahoo/prelude/querytransform/NonPhrasingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/NonPhrasingSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.querytransform;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/NormalizingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/NormalizingSearcher.java
index ce13045b518..e96a83b39fe 100644
--- a/container-search/src/main/java/com/yahoo/prelude/querytransform/NormalizingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/NormalizingSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.querytransform;
import java.util.*;
diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/PhraseMatcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/PhraseMatcher.java
index be33c0ee9e1..01bf702c2d7 100644
--- a/container-search/src/main/java/com/yahoo/prelude/querytransform/PhraseMatcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/PhraseMatcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.querytransform;
import com.yahoo.fsa.FSA;
diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/PhrasingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/PhrasingSearcher.java
index 2f3f4dbd351..fe6087a3198 100644
--- a/container-search/src/main/java/com/yahoo/prelude/querytransform/PhrasingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/PhrasingSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.querytransform;
import com.google.inject.Inject;
diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/QueryRewrite.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/QueryRewrite.java
index 329e886c3d3..09be9b3728b 100644
--- a/container-search/src/main/java/com/yahoo/prelude/querytransform/QueryRewrite.java
+++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/QueryRewrite.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.querytransform;
import com.yahoo.prelude.query.AndItem;
diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/RecallSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/RecallSearcher.java
index 060fd598245..f0a18954e40 100644
--- a/container-search/src/main/java/com/yahoo/prelude/querytransform/RecallSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/RecallSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.querytransform;
import com.yahoo.component.chain.dependencies.After;
diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/StemmingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/StemmingSearcher.java
index eb31b75cd6f..ceb91a961d3 100644
--- a/container-search/src/main/java/com/yahoo/prelude/querytransform/StemmingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/StemmingSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.querytransform;
import com.google.inject.Inject;
diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/package-info.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/package-info.java
index c8e4d207f63..10d1a2eaffa 100644
--- a/container-search/src/main/java/com/yahoo/prelude/querytransform/package-info.java
+++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.prelude.querytransform;
diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/BlendingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/BlendingSearcher.java
index d79386a88ed..65634c56d4c 100644
--- a/container-search/src/main/java/com/yahoo/prelude/searcher/BlendingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/searcher/BlendingSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.searcher;
diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/FieldCollapsingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/FieldCollapsingSearcher.java
index 709d9459e50..e1cefae4b27 100644
--- a/container-search/src/main/java/com/yahoo/prelude/searcher/FieldCollapsingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/searcher/FieldCollapsingSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.searcher;
import com.google.inject.Inject;
diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/FillSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/FillSearcher.java
index 5390f202ef0..5282cbb6fc9 100644
--- a/container-search/src/main/java/com/yahoo/prelude/searcher/FillSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/searcher/FillSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.searcher;
import com.yahoo.search.Query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/JSONDebugSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/JSONDebugSearcher.java
index 5f921b67702..10b2cf0fdc7 100644
--- a/container-search/src/main/java/com/yahoo/prelude/searcher/JSONDebugSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/searcher/JSONDebugSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.searcher;
import com.yahoo.prelude.fastsearch.FastHit;
diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/JuniperSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/JuniperSearcher.java
index 4e4b4600814..8beb8b8462f 100644
--- a/container-search/src/main/java/com/yahoo/prelude/searcher/JuniperSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/searcher/JuniperSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.searcher;
import java.util.ArrayList;
diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/MultipleResultsSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/MultipleResultsSearcher.java
index 75066a424fc..e622cfb8bd8 100644
--- a/container-search/src/main/java/com/yahoo/prelude/searcher/MultipleResultsSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/searcher/MultipleResultsSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.searcher;
import com.yahoo.search.Query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/PosSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/PosSearcher.java
index 7063a14a389..0df21df8842 100644
--- a/container-search/src/main/java/com/yahoo/prelude/searcher/PosSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/searcher/PosSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.searcher;
import com.yahoo.component.chain.dependencies.After;
diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/QuotingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/QuotingSearcher.java
index df944f5b102..c5af5e8f260 100644
--- a/container-search/src/main/java/com/yahoo/prelude/searcher/QuotingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/searcher/QuotingSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.searcher;
import java.util.*;
diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/ValidatePredicateSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/ValidatePredicateSearcher.java
index a8b3c76fe00..66c5a4eee71 100644
--- a/container-search/src/main/java/com/yahoo/prelude/searcher/ValidatePredicateSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/searcher/ValidatePredicateSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.searcher;
import com.yahoo.component.chain.dependencies.After;
diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/ValidateSortingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/ValidateSortingSearcher.java
index 82148cf54e6..5946700d19c 100644
--- a/container-search/src/main/java/com/yahoo/prelude/searcher/ValidateSortingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/searcher/ValidateSortingSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.searcher;
import com.yahoo.component.chain.dependencies.After;
diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/package-info.java b/container-search/src/main/java/com/yahoo/prelude/searcher/package-info.java
index 1507518f1d8..80f227c5c55 100644
--- a/container-search/src/main/java/com/yahoo/prelude/searcher/package-info.java
+++ b/container-search/src/main/java/com/yahoo/prelude/searcher/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.prelude.searcher;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/RuleBase.java b/container-search/src/main/java/com/yahoo/prelude/semantics/RuleBase.java
index feab8faf898..2b8515b6db8 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/RuleBase.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/RuleBase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics;
import com.yahoo.search.Query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/RuleBaseException.java b/container-search/src/main/java/com/yahoo/prelude/semantics/RuleBaseException.java
index 5108777d938..bc8dd358ac6 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/RuleBaseException.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/RuleBaseException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/RuleImporter.java b/container-search/src/main/java/com/yahoo/prelude/semantics/RuleImporter.java
index ac643469ab6..45569050882 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/RuleImporter.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/RuleImporter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics;
import java.io.BufferedReader;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/SemanticSearcher.java b/container-search/src/main/java/com/yahoo/prelude/semantics/SemanticSearcher.java
index 63b62870313..f9d968a3a4d 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/SemanticSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/SemanticSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics;
import com.google.inject.Inject;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/benchmark/RuleBaseBenchmark.java b/container-search/src/main/java/com/yahoo/prelude/semantics/benchmark/RuleBaseBenchmark.java
index dfd3d04d99e..938d12b271b 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/benchmark/RuleBaseBenchmark.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/benchmark/RuleBaseBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.benchmark;
import java.io.BufferedReader;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/benchmark/rules.sr b/container-search/src/main/java/com/yahoo/prelude/semantics/benchmark/rules.sr
index 12ab89b2f59..d7f7db215e3 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/benchmark/rules.sr
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/benchmark/rules.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Local use case
[listing] [preposition] [place] -> listing:[listing] place:[place];
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/config/package-info.java b/container-search/src/main/java/com/yahoo/prelude/semantics/config/package-info.java
index c661ddcc4bf..58395968d9f 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/config/package-info.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/config/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.prelude.semantics.config;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/engine/Choicepoint.java b/container-search/src/main/java/com/yahoo/prelude/semantics/engine/Choicepoint.java
index a01c9ca5543..d4d1fe8c4f3 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/engine/Choicepoint.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/engine/Choicepoint.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.engine;
import com.yahoo.prelude.semantics.rule.Condition;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/engine/Evaluation.java b/container-search/src/main/java/com/yahoo/prelude/semantics/engine/Evaluation.java
index 989f3040cc7..85bcdf8bd20 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/engine/Evaluation.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/engine/Evaluation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.engine;
import com.yahoo.prelude.query.*;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/engine/EvaluationException.java b/container-search/src/main/java/com/yahoo/prelude/semantics/engine/EvaluationException.java
index e73bcc1ba9e..6a4d05f423a 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/engine/EvaluationException.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/engine/EvaluationException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.engine;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/engine/FlattenedItem.java b/container-search/src/main/java/com/yahoo/prelude/semantics/engine/FlattenedItem.java
index bf10f54928b..915d7919c79 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/engine/FlattenedItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/engine/FlattenedItem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.engine;
import com.yahoo.prelude.query.TermItem;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/engine/Match.java b/container-search/src/main/java/com/yahoo/prelude/semantics/engine/Match.java
index a87338879fe..6098fbee327 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/engine/Match.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/engine/Match.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.engine;
import com.yahoo.prelude.query.CompositeItem;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/engine/NameSpace.java b/container-search/src/main/java/com/yahoo/prelude/semantics/engine/NameSpace.java
index 91e7e5a0e2f..72db55a0dab 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/engine/NameSpace.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/engine/NameSpace.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.engine;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/engine/ParameterNameSpace.java b/container-search/src/main/java/com/yahoo/prelude/semantics/engine/ParameterNameSpace.java
index 9d63b6e7e66..d8fe79706c5 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/engine/ParameterNameSpace.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/engine/ParameterNameSpace.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.engine;
import com.yahoo.search.Query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/engine/ReferencedMatches.java b/container-search/src/main/java/com/yahoo/prelude/semantics/engine/ReferencedMatches.java
index f21f861a801..605f3a23e10 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/engine/ReferencedMatches.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/engine/ReferencedMatches.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.engine;
import java.util.Iterator;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/engine/RuleEngine.java b/container-search/src/main/java/com/yahoo/prelude/semantics/engine/RuleEngine.java
index 4c4f3493a50..e7ed05730cb 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/engine/RuleEngine.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/engine/RuleEngine.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.engine;
import com.yahoo.search.Query;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/engine/RuleEvaluation.java b/container-search/src/main/java/com/yahoo/prelude/semantics/engine/RuleEvaluation.java
index 09fcb6a424f..2a00843a85c 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/engine/RuleEvaluation.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/engine/RuleEvaluation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.engine;
import com.yahoo.prelude.query.CompositeItem;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/package-info.java b/container-search/src/main/java/com/yahoo/prelude/semantics/package-info.java
index c20c7bc6c98..2d0d91fcc73 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/package-info.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.prelude.semantics;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/parser/package-info.java b/container-search/src/main/java/com/yahoo/prelude/semantics/parser/package-info.java
index 63fe74b1d1c..a8179252e2a 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/parser/package-info.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/parser/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.prelude.semantics.parser;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/AddingProductionRule.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/AddingProductionRule.java
index f5cacb4fd50..f1a5fb73f02 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/AddingProductionRule.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/AddingProductionRule.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/AndCondition.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/AndCondition.java
index a7836d5b238..35af287a709 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/AndCondition.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/AndCondition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import java.util.Iterator;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ChoiceCondition.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ChoiceCondition.java
index cc6a7ab24ab..19299adf031 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ChoiceCondition.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ChoiceCondition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import java.util.Iterator;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ComparisonCondition.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ComparisonCondition.java
index e668da04d98..87e28a93825 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ComparisonCondition.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ComparisonCondition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import java.util.Collection;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/CompositeCondition.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/CompositeCondition.java
index 4accef2abbb..77bffa5778e 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/CompositeCondition.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/CompositeCondition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import java.util.Iterator;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/CompositeItemCondition.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/CompositeItemCondition.java
index 95977d3f2bd..72736c69ec3 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/CompositeItemCondition.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/CompositeItemCondition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import com.yahoo.prelude.query.PhraseItem;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/Condition.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/Condition.java
index 141d16b14e2..0d3c93619b5 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/Condition.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/Condition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import com.yahoo.prelude.query.TermItem;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ConditionReference.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ConditionReference.java
index 9b2664c655f..bfddb55566c 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ConditionReference.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ConditionReference.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import com.yahoo.prelude.query.TermItem;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/EllipsisCondition.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/EllipsisCondition.java
index c9dca81af17..3cab8dfcab9 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/EllipsisCondition.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/EllipsisCondition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import java.util.Iterator;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/LiteralCondition.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/LiteralCondition.java
index 592ab46d82d..42bf0560726 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/LiteralCondition.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/LiteralCondition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import com.yahoo.prelude.semantics.engine.RuleEvaluation;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/LiteralPhraseProduction.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/LiteralPhraseProduction.java
index d06c4144fbc..0d5ce78baf0 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/LiteralPhraseProduction.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/LiteralPhraseProduction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import java.util.ArrayList;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/LiteralTermProduction.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/LiteralTermProduction.java
index 66d1df690bb..ed21c9643c3 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/LiteralTermProduction.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/LiteralTermProduction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import com.yahoo.prelude.query.TermType;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/NamedCondition.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/NamedCondition.java
index 512b9d5f5dd..b2592a36353 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/NamedCondition.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/NamedCondition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import com.yahoo.prelude.semantics.engine.RuleEvaluation;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/NamespaceProduction.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/NamespaceProduction.java
index 89d1e676f4b..099a8562ece 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/NamespaceProduction.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/NamespaceProduction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import com.yahoo.prelude.semantics.RuleBaseException;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/NotCondition.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/NotCondition.java
index 2fc4be96b0c..c18cdb15afd 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/NotCondition.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/NotCondition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import com.yahoo.prelude.semantics.RuleBase;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/Production.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/Production.java
index 716622a4849..a971020ea90 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/Production.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/Production.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import java.util.Set;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ProductionList.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ProductionList.java
index 49d15710cd7..46f855ca95d 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ProductionList.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ProductionList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import java.util.Collections;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ProductionRule.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ProductionRule.java
index 56e0573c5d6..20ebc41e57f 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ProductionRule.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ProductionRule.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import java.util.Collections;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ReferenceTermProduction.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ReferenceTermProduction.java
index e1bb8ff102d..b36744dc397 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ReferenceTermProduction.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ReferenceTermProduction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import java.util.Set;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ReplacingProductionRule.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ReplacingProductionRule.java
index 70151ea479b..db0b9b8b004 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ReplacingProductionRule.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/ReplacingProductionRule.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import com.yahoo.prelude.semantics.engine.Match;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/SequenceCondition.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/SequenceCondition.java
index 95e57974b2f..8b3b0ff4874 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/SequenceCondition.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/SequenceCondition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import java.util.Iterator;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/SuperCondition.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/SuperCondition.java
index 37dc0724d32..9f62e476eaf 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/SuperCondition.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/SuperCondition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import com.yahoo.prelude.semantics.engine.RuleEvaluation;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/TermCondition.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/TermCondition.java
index 82e64e4229b..38d1fc9b83b 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/TermCondition.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/TermCondition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import com.yahoo.prelude.query.TermItem;
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/TermProduction.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/TermProduction.java
index d1a74a991da..db8d4b42521 100644
--- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/TermProduction.java
+++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/TermProduction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.rule;
import com.yahoo.prelude.query.Item;
diff --git a/container-search/src/main/java/com/yahoo/prelude/statistics/StatisticsSearcher.java b/container-search/src/main/java/com/yahoo/prelude/statistics/StatisticsSearcher.java
index 24b631f1773..63704788b20 100644
--- a/container-search/src/main/java/com/yahoo/prelude/statistics/StatisticsSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/statistics/StatisticsSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.statistics;
import com.yahoo.component.chain.dependencies.Before;
diff --git a/container-search/src/main/java/com/yahoo/prelude/statistics/package-info.java b/container-search/src/main/java/com/yahoo/prelude/statistics/package-info.java
index f01d7279188..a1a2b871eb9 100644
--- a/container-search/src/main/java/com/yahoo/prelude/statistics/package-info.java
+++ b/container-search/src/main/java/com/yahoo/prelude/statistics/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.prelude.statistics;
diff --git a/container-search/src/main/java/com/yahoo/search/Query.java b/container-search/src/main/java/com/yahoo/search/Query.java
index 4ecede819de..ddb8a392730 100644
--- a/container-search/src/main/java/com/yahoo/search/Query.java
+++ b/container-search/src/main/java/com/yahoo/search/Query.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search;
import com.google.common.collect.ImmutableList;
@@ -7,6 +7,7 @@ import com.yahoo.collections.Tuple2;
import com.yahoo.component.Version;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.fs4.MapEncoder;
+import com.yahoo.language.process.Embedder;
import com.yahoo.prelude.fastsearch.DocumentDatabase;
import com.yahoo.prelude.query.Highlight;
import com.yahoo.prelude.query.textualrepresentation.TextualQueryRepresentation;
@@ -333,20 +334,32 @@ public class Query extends com.yahoo.processing.Request implements Cloneable {
public Query(HttpRequest request, Map<String, String> requestMap, CompiledQueryProfile queryProfile) {
super(new QueryPropertyAliases(propertyAliases));
this.httpRequest = request;
- init(requestMap, queryProfile);
+ init(requestMap, queryProfile, Embedder.throwsOnUse);
}
- private void init(Map<String, String> requestMap, CompiledQueryProfile queryProfile) {
+ // TODO: Deprecate most constructors above here
+
+ private Query(Builder builder) {
+ this(builder.getRequest(), builder.getRequestMap(), builder.getQueryProfile(), builder.getEmbedder());
+ }
+
+ private Query(HttpRequest request, Map<String, String> requestMap, CompiledQueryProfile queryProfile, Embedder embedder) {
+ super(new QueryPropertyAliases(propertyAliases));
+ this.httpRequest = request;
+ init(requestMap, queryProfile, embedder);
+ }
+
+ private void init(Map<String, String> requestMap, CompiledQueryProfile queryProfile, Embedder embedder) {
startTime = httpRequest.getJDiscRequest().creationTime(TimeUnit.MILLISECONDS);
if (queryProfile != null) {
// Move all request parameters to the query profile just to validate that the parameter settings are legal
- Properties queryProfileProperties = new QueryProfileProperties(queryProfile);
+ Properties queryProfileProperties = new QueryProfileProperties(queryProfile, embedder);
properties().chain(queryProfileProperties);
// TODO: Just checking legality rather than actually setting would be faster
setPropertiesFromRequestMap(requestMap, properties(), true); // Adds errors to the query for illegal set attempts
// Create the full chain
- properties().chain(new QueryProperties(this, queryProfile.getRegistry())).
+ properties().chain(new QueryProperties(this, queryProfile.getRegistry(), embedder)).
chain(new ModelObjectMap()).
chain(new RequestContextProperties(requestMap)).
chain(queryProfileProperties).
@@ -365,7 +378,7 @@ public class Query extends com.yahoo.processing.Request implements Cloneable {
}
else { // bypass these complications if there is no query profile to get values from and validate against
properties().
- chain(new QueryProperties(this, CompiledQueryProfileRegistry.empty)).
+ chain(new QueryProperties(this, CompiledQueryProfileRegistry.empty, embedder)).
chain(new PropertyMap()).
chain(new DefaultProperties());
setPropertiesFromRequestMap(requestMap, properties(), false);
@@ -982,6 +995,7 @@ public class Query extends com.yahoo.processing.Request implements Cloneable {
clone.properties().setParentQuery(clone);
assert (clone.properties().getParentQuery() == clone);
+ clone.setTimeout(getTimeout());
clone.setTraceLevel(getTraceLevel());
clone.setExplainLevel(getExplainLevel());
clone.setHits(getHits());
@@ -1111,4 +1125,59 @@ public class Query extends com.yahoo.processing.Request implements Cloneable {
getRanking().prepare();
}
+ public static class Builder {
+
+ private HttpRequest request = null;
+ private Map<String, String> requestMap = null;
+ private CompiledQueryProfile queryProfile = null;
+ private Embedder embedder = Embedder.throwsOnUse;
+
+ public Builder setRequest(String query) {
+ request = HttpRequest.createTestRequest(query, com.yahoo.jdisc.http.HttpRequest.Method.GET);
+ return this;
+ }
+
+ public Builder setRequest(HttpRequest request) {
+ this.request = request;
+ return this;
+ }
+
+ public HttpRequest getRequest() {
+ if (request == null)
+ return HttpRequest.createTestRequest("", com.yahoo.jdisc.http.HttpRequest.Method.GET);
+ return request;
+ }
+
+ /** Sets the request mao to use explicitly. If not set, the request map will be getRequest().propertyMap() */
+ public Builder setRequestMap(Map<String, String> requestMap) {
+ this.requestMap = requestMap;
+ return this;
+ }
+
+ public Map<String, String> getRequestMap() {
+ if (requestMap == null)
+ return getRequest().propertyMap();
+ return requestMap;
+ }
+
+ public Builder setQueryProfile(CompiledQueryProfile queryProfile) {
+ this.queryProfile = queryProfile;
+ return this;
+ }
+
+ /** Returns the query profile of this query, or null if none. */
+ public CompiledQueryProfile getQueryProfile() { return queryProfile; }
+
+ public Builder setEmbedder(Embedder embedder) {
+ this.embedder = embedder;
+ return this;
+ }
+
+ public Embedder getEmbedder() { return embedder; }
+
+ /** Creates a new query from this builder. No properties are required to before calling this. */
+ public Query build() { return new Query(this); }
+
+ }
+
}
diff --git a/container-search/src/main/java/com/yahoo/search/Result.java b/container-search/src/main/java/com/yahoo/search/Result.java
index 2e9018217bb..b31a4fb6e24 100644
--- a/container-search/src/main/java/com/yahoo/search/Result.java
+++ b/container-search/src/main/java/com/yahoo/search/Result.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search;
import com.yahoo.collections.ListMap;
diff --git a/container-search/src/main/java/com/yahoo/search/Searcher.java b/container-search/src/main/java/com/yahoo/search/Searcher.java
index cd6b7167f08..473adfa17db 100644
--- a/container-search/src/main/java/com/yahoo/search/Searcher.java
+++ b/container-search/src/main/java/com/yahoo/search/Searcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/main/java/com/yahoo/search/cluster/BaseNodeMonitor.java b/container-search/src/main/java/com/yahoo/search/cluster/BaseNodeMonitor.java
index 8eee7c11d3e..48bfd4c9b66 100644
--- a/container-search/src/main/java/com/yahoo/search/cluster/BaseNodeMonitor.java
+++ b/container-search/src/main/java/com/yahoo/search/cluster/BaseNodeMonitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.cluster;
import java.util.logging.Logger;
diff --git a/container-search/src/main/java/com/yahoo/search/cluster/ClusterMonitor.java b/container-search/src/main/java/com/yahoo/search/cluster/ClusterMonitor.java
index c9b8aeee417..016e22839c1 100644
--- a/container-search/src/main/java/com/yahoo/search/cluster/ClusterMonitor.java
+++ b/container-search/src/main/java/com/yahoo/search/cluster/ClusterMonitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.cluster;
import com.yahoo.concurrent.ThreadFactoryFactory;
diff --git a/container-search/src/main/java/com/yahoo/search/cluster/ClusterSearcher.java b/container-search/src/main/java/com/yahoo/search/cluster/ClusterSearcher.java
index db79c610dc7..51ae2ee432d 100644
--- a/container-search/src/main/java/com/yahoo/search/cluster/ClusterSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/cluster/ClusterSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.cluster;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/main/java/com/yahoo/search/cluster/Hasher.java b/container-search/src/main/java/com/yahoo/search/cluster/Hasher.java
index 6c83e1c64e3..07f5c76a817 100644
--- a/container-search/src/main/java/com/yahoo/search/cluster/Hasher.java
+++ b/container-search/src/main/java/com/yahoo/search/cluster/Hasher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.cluster;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/cluster/MonitorConfiguration.java b/container-search/src/main/java/com/yahoo/search/cluster/MonitorConfiguration.java
index 95f51b374d6..c421e9dbe69 100644
--- a/container-search/src/main/java/com/yahoo/search/cluster/MonitorConfiguration.java
+++ b/container-search/src/main/java/com/yahoo/search/cluster/MonitorConfiguration.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.cluster;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/cluster/NodeManager.java b/container-search/src/main/java/com/yahoo/search/cluster/NodeManager.java
index 836c71089c1..1a74194d694 100644
--- a/container-search/src/main/java/com/yahoo/search/cluster/NodeManager.java
+++ b/container-search/src/main/java/com/yahoo/search/cluster/NodeManager.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.cluster;
import java.util.concurrent.Executor;
diff --git a/container-search/src/main/java/com/yahoo/search/cluster/PingableSearcher.java b/container-search/src/main/java/com/yahoo/search/cluster/PingableSearcher.java
index 57bb5c9d47d..475a821571f 100644
--- a/container-search/src/main/java/com/yahoo/search/cluster/PingableSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/cluster/PingableSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.cluster;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/main/java/com/yahoo/search/cluster/TrafficNodeMonitor.java b/container-search/src/main/java/com/yahoo/search/cluster/TrafficNodeMonitor.java
index d17f6bfbaa8..7ce88346d3a 100644
--- a/container-search/src/main/java/com/yahoo/search/cluster/TrafficNodeMonitor.java
+++ b/container-search/src/main/java/com/yahoo/search/cluster/TrafficNodeMonitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.cluster;
import com.yahoo.container.protect.Error;
diff --git a/container-search/src/main/java/com/yahoo/search/cluster/package-info.java b/container-search/src/main/java/com/yahoo/search/cluster/package-info.java
index d871eab8135..c0a0d61ecef 100644
--- a/container-search/src/main/java/com/yahoo/search/cluster/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/cluster/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Standard searchers to compose in <i>source</i> search chains (those containing searchers specific for one source and
* which ends with a call to some provider) which calls a cluster of provider nodes. These searchers provides hashing
diff --git a/container-search/src/main/java/com/yahoo/search/config/dispatchprototype/package-info.java b/container-search/src/main/java/com/yahoo/search/config/dispatchprototype/package-info.java
index 3b1a3b3bd05..217fbe80888 100644
--- a/container-search/src/main/java/com/yahoo/search/config/dispatchprototype/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/config/dispatchprototype/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Package for dispatchprototype config.
* @author Tony Vaagenes
diff --git a/container-search/src/main/java/com/yahoo/search/config/package-info.java b/container-search/src/main/java/com/yahoo/search/config/package-info.java
index f5ca7f42499..aec055a0972 100644
--- a/container-search/src/main/java/com/yahoo/search/config/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/config/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.search.config;
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/CloseableInvoker.java b/container-search/src/main/java/com/yahoo/search/dispatch/CloseableInvoker.java
index 9329f4a6819..e66c48ddb74 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/CloseableInvoker.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/CloseableInvoker.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch;
import java.io.Closeable;
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java b/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java
index af731e3ade0..3cf2903b88f 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java
@@ -1,8 +1,7 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch;
import com.google.inject.Inject;
-import com.yahoo.cloud.config.ClusterInfoConfig;
import com.yahoo.component.AbstractComponent;
import com.yahoo.component.ComponentId;
import com.yahoo.compress.Compressor;
@@ -26,11 +25,9 @@ import com.yahoo.search.query.profile.types.QueryProfileType;
import com.yahoo.search.result.ErrorMessage;
import com.yahoo.vespa.config.search.DispatchConfig;
-import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
-import java.util.OptionalInt;
import java.util.Set;
import java.util.stream.Collectors;
@@ -94,10 +91,9 @@ public class Dispatcher extends AbstractComponent {
public Dispatcher(RpcResourcePool resourcePool,
ComponentId clusterId,
DispatchConfig dispatchConfig,
- ClusterInfoConfig clusterInfoConfig,
VipStatus vipStatus,
Metric metric) {
- this(resourcePool, new SearchCluster(clusterId.stringValue(), dispatchConfig,clusterInfoConfig.nodeCount(),
+ this(resourcePool, new SearchCluster(clusterId.stringValue(), dispatchConfig,
vipStatus, new RpcPingFactory(resourcePool)),
dispatchConfig, metric);
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/FillInvoker.java b/container-search/src/main/java/com/yahoo/search/dispatch/FillInvoker.java
index 8b7714aaf3b..751f602c417 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/FillInvoker.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/FillInvoker.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch;
import com.yahoo.search.Result;
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/InterleavedSearchInvoker.java b/container-search/src/main/java/com/yahoo/search/dispatch/InterleavedSearchInvoker.java
index fb04c8299e9..fa1615e7fb5 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/InterleavedSearchInvoker.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/InterleavedSearchInvoker.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch;
import com.yahoo.search.Query;
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/LoadBalancer.java b/container-search/src/main/java/com/yahoo/search/dispatch/LoadBalancer.java
index ebde2ffc611..7f4d8fc4739 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/LoadBalancer.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/LoadBalancer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch;
import com.yahoo.search.dispatch.searchcluster.Group;
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/ResponseMonitor.java b/container-search/src/main/java/com/yahoo/search/dispatch/ResponseMonitor.java
index 3ebd21fa18a..cfa18ddee85 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/ResponseMonitor.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/ResponseMonitor.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/SearchErrorInvoker.java b/container-search/src/main/java/com/yahoo/search/dispatch/SearchErrorInvoker.java
index 7dbc2e98759..345ff7659e0 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/SearchErrorInvoker.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/SearchErrorInvoker.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch;
import com.yahoo.search.Query;
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/SearchInvoker.java b/container-search/src/main/java/com/yahoo/search/dispatch/SearchInvoker.java
index b33e91189cc..30d5eadd448 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/SearchInvoker.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/SearchInvoker.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch;
import com.yahoo.search.Query;
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/SearchPath.java b/container-search/src/main/java/com/yahoo/search/dispatch/SearchPath.java
index b29c3297aea..fc6d5ed01b1 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/SearchPath.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/SearchPath.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch;
import com.yahoo.collections.Pair;
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/TopKEstimator.java b/container-search/src/main/java/com/yahoo/search/dispatch/TopKEstimator.java
index 315dfdd4320..15b37e761a1 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/TopKEstimator.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/TopKEstimator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch;
import org.apache.commons.math3.distribution.TDistribution;
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/Client.java b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/Client.java
index 53cbee114b9..ca40683a887 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/Client.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/Client.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch.rpc;
import com.yahoo.compress.CompressionType;
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/ProtobufSerialization.java b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/ProtobufSerialization.java
index 250524fadf2..4379da5f98b 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/ProtobufSerialization.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/ProtobufSerialization.java
@@ -25,6 +25,7 @@ import com.yahoo.search.query.Ranking;
import com.yahoo.search.query.Sorting;
import com.yahoo.search.query.Sorting.Order;
import com.yahoo.search.result.Coverage;
+import com.yahoo.search.result.ErrorMessage;
import com.yahoo.searchlib.aggregation.Grouping;
import com.yahoo.slime.BinaryFormat;
import com.yahoo.vespa.objects.BufferSerializer;
@@ -42,6 +43,12 @@ public class ProtobufSerialization {
return convertFromQuery(query, hits, serverId).toByteArray();
}
+ private static void convertSearchReplyErrors(Result target, List<SearchProtocol.Error> errors) {
+ for (var error : errors) {
+ target.hits().addError(ErrorMessage.createSearchReplyError(error.getMessage()));
+ }
+ }
+
private static SearchProtocol.SearchRequest convertFromQuery(Query query, int hits, String serverId) {
var builder = SearchProtocol.SearchRequest.newBuilder().setHits(hits).setOffset(query.getOffset())
.setTimeout((int) query.getTimeLeft());
@@ -196,6 +203,8 @@ public class ProtobufSerialization {
result.getResult().setTotalHitCount(protobuf.getTotalHitCount());
result.getResult().setCoverage(convertToCoverage(protobuf));
+ convertSearchReplyErrors(result.getResult(), protobuf.getErrorsList());
+
var haveGrouping = ! protobuf.getGroupingBlob().isEmpty();
if (haveGrouping) {
BufferSerializer buf = new BufferSerializer(new GrowableByteBuffer(protobuf.getGroupingBlob().asReadOnlyByteBuffer()));
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcClient.java b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcClient.java
index 70d94c5a8a6..bb0bbf4b529 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcClient.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch.rpc;
import com.yahoo.compress.CompressionType;
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcFillInvoker.java b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcFillInvoker.java
index 0e8759f740e..ad5d129ef6d 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcFillInvoker.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcFillInvoker.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch.rpc;
import com.yahoo.collections.ListMap;
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcPingFactory.java b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcPingFactory.java
index 01e3ec3ca2b..2e690198c1c 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcPingFactory.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcPingFactory.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch.rpc;
import com.yahoo.search.cluster.ClusterMonitor;
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcProtobufFillInvoker.java b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcProtobufFillInvoker.java
index 8a17be8102e..fe74180cad3 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcProtobufFillInvoker.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcProtobufFillInvoker.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch.rpc;
import ai.vespa.searchlib.searchprotocol.protobuf.SearchProtocol;
@@ -185,6 +185,12 @@ public class RpcProtobufFillInvoker extends FillInvoker {
});
}
+ private void convertErrorsFromDocsumReply(Result target, List<SearchProtocol.Error> errors) {
+ for (var error : errors) {
+ target.hits().addError(ErrorMessage.createDocsumReplyError(error.getMessage()));
+ }
+ }
+
private int fill(Result result, List<FastHit> hits, String summaryClass, byte[] payload) {
try {
var protobuf = SearchProtocol.DocsumReply.parseFrom(payload);
@@ -194,6 +200,7 @@ public class RpcProtobufFillInvoker extends FillInvoker {
if (hasErrors) {
addErrors(result, errors);
}
+ convertErrorsFromDocsumReply(result, protobuf.getErrorsList());
Inspector summaries = new SlimeAdapter(root.field("docsums"));
if (!summaries.valid()) {
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcResourcePool.java b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcResourcePool.java
index c3d072b8db6..b026eadd843 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcResourcePool.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcResourcePool.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch.rpc;
import com.google.common.collect.ImmutableMap;
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcSearchInvoker.java b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcSearchInvoker.java
index 20b11efb470..973b9093d9d 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcSearchInvoker.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcSearchInvoker.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch.rpc;
import com.yahoo.compress.CompressionType;
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/Group.java b/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/Group.java
index 727fb64faef..7002d1f7f2f 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/Group.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/Group.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch.searchcluster;
import com.google.common.collect.ImmutableList;
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/Node.java b/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/Node.java
index 9807a978647..f48f1c719f4 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/Node.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/Node.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch.searchcluster;
import java.util.Objects;
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/PongHandler.java b/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/PongHandler.java
index c39426e9d76..469f18692b6 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/PongHandler.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/PongHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch.searchcluster;
import com.yahoo.prelude.Pong;
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchCluster.java b/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchCluster.java
index 54d5dfc91af..f90abba330a 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchCluster.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchCluster.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch.searchcluster;
import com.google.common.collect.ImmutableCollection;
@@ -53,7 +53,7 @@ public class SearchCluster implements NodeManager<Node> {
*/
private final Optional<Node> localCorpusDispatchTarget;
- public SearchCluster(String clusterId, DispatchConfig dispatchConfig, int containerClusterSize,
+ public SearchCluster(String clusterId, DispatchConfig dispatchConfig,
VipStatus vipStatus, PingFactory pingFactory) {
this.clusterId = clusterId;
this.dispatchConfig = dispatchConfig;
@@ -81,17 +81,7 @@ public class SearchCluster implements NodeManager<Node> {
this.nodesByHost = nodesByHostBuilder.build();
hitEstimator = new TopKEstimator(30.0, dispatchConfig.topKProbability(), SKEW_FACTOR);
- this.localCorpusDispatchTarget = findLocalCorpusDispatchTarget(HostName.getLocalhost(),
- size,
- containerClusterSize,
- nodesByHost,
- groups);
- }
-
- /* Testing only */
- public SearchCluster(String clusterId, DispatchConfig dispatchConfig,
- VipStatus vipStatus, PingFactory pingFactory) {
- this(clusterId, dispatchConfig, 1, vipStatus, pingFactory);
+ this.localCorpusDispatchTarget = findLocalCorpusDispatchTarget(HostName.getLocalhost(), nodesByHost, groups);
}
public void addMonitoring(ClusterMonitor<Node> clusterMonitor) {
@@ -102,8 +92,6 @@ public class SearchCluster implements NodeManager<Node> {
}
private static Optional<Node> findLocalCorpusDispatchTarget(String selfHostname,
- int searchClusterSize,
- int containerClusterSize,
ImmutableMultimap<String, Node> nodesByHost,
ImmutableMap<Integer, Group> groups) {
// A search node in the search cluster in question is configured on the same host as the currently running container.
@@ -120,12 +108,6 @@ public class SearchCluster implements NodeManager<Node> {
// Only use direct dispatch if the local search node has the entire corpus
if (localSearchGroup.nodes().size() != 1) return Optional.empty();
- // Only use direct dispatch if this container cluster has at least as many nodes as the search cluster
- // to avoid load skew/preserve fanout in the case where a subset of the search nodes are also containers.
- // This disregards the case where the search and container clusters are partially overlapping.
- // Such configurations produce skewed load in any case.
- if (containerClusterSize < searchClusterSize) return Optional.empty();
-
return Optional.of(localSearchNode);
}
diff --git a/container-search/src/main/java/com/yahoo/search/federation/CommonFields.java b/container-search/src/main/java/com/yahoo/search/federation/CommonFields.java
index 8d970ddacad..5c9b1da8c3d 100644
--- a/container-search/src/main/java/com/yahoo/search/federation/CommonFields.java
+++ b/container-search/src/main/java/com/yahoo/search/federation/CommonFields.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation;
/**
* A set of string constants for common hit field names.
diff --git a/container-search/src/main/java/com/yahoo/search/federation/FederationResult.java b/container-search/src/main/java/com/yahoo/search/federation/FederationResult.java
index 6243dc694c2..f6cbb49f7d5 100644
--- a/container-search/src/main/java/com/yahoo/search/federation/FederationResult.java
+++ b/container-search/src/main/java/com/yahoo/search/federation/FederationResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation;
import com.google.common.collect.ImmutableList;
diff --git a/container-search/src/main/java/com/yahoo/search/federation/FederationSearcher.java b/container-search/src/main/java/com/yahoo/search/federation/FederationSearcher.java
index 8d0e4944ab8..4cff1802949 100644
--- a/container-search/src/main/java/com/yahoo/search/federation/FederationSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/federation/FederationSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation;
import com.google.common.collect.ImmutableList;
diff --git a/container-search/src/main/java/com/yahoo/search/federation/ForwardingSearcher.java b/container-search/src/main/java/com/yahoo/search/federation/ForwardingSearcher.java
index d6bfd6dcd82..39ec59b1df1 100644
--- a/container-search/src/main/java/com/yahoo/search/federation/ForwardingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/federation/ForwardingSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation;
import com.yahoo.component.ComponentSpecification;
@@ -20,7 +20,6 @@ import com.yahoo.search.searchchain.Execution;
* semantics are not necessary for the application.
*
* @see FederationSearcher
- * @since 5.0.13
* @author Steinar Knutsen
*/
@After("*")
diff --git a/container-search/src/main/java/com/yahoo/search/federation/TimeoutException.java b/container-search/src/main/java/com/yahoo/search/federation/TimeoutException.java
index 51ab74e9bd7..04dd487c870 100644
--- a/container-search/src/main/java/com/yahoo/search/federation/TimeoutException.java
+++ b/container-search/src/main/java/com/yahoo/search/federation/TimeoutException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/federation/package-info.java b/container-search/src/main/java/com/yahoo/search/federation/package-info.java
index 4085b16ef7b..658f3cd22d5 100644
--- a/container-search/src/main/java/com/yahoo/search/federation/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/federation/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* The federation layer on top of the search container. This contains
*
diff --git a/container-search/src/main/java/com/yahoo/search/federation/selection/FederationTarget.java b/container-search/src/main/java/com/yahoo/search/federation/selection/FederationTarget.java
index 8ccbe39cc5a..4680400fbca 100644
--- a/container-search/src/main/java/com/yahoo/search/federation/selection/FederationTarget.java
+++ b/container-search/src/main/java/com/yahoo/search/federation/selection/FederationTarget.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation.selection;
import com.yahoo.component.chain.Chain;
diff --git a/container-search/src/main/java/com/yahoo/search/federation/selection/TargetSelector.java b/container-search/src/main/java/com/yahoo/search/federation/selection/TargetSelector.java
index 465ddedbecf..483cbf25904 100644
--- a/container-search/src/main/java/com/yahoo/search/federation/selection/TargetSelector.java
+++ b/container-search/src/main/java/com/yahoo/search/federation/selection/TargetSelector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation.selection;
import com.yahoo.processing.execution.chain.ChainRegistry;
diff --git a/container-search/src/main/java/com/yahoo/search/federation/selection/package-info.java b/container-search/src/main/java/com/yahoo/search/federation/selection/package-info.java
index ed70a47982a..14af48a0618 100644
--- a/container-search/src/main/java/com/yahoo/search/federation/selection/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/federation/selection/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.search.federation.selection;
diff --git a/container-search/src/main/java/com/yahoo/search/federation/sourceref/SearchChainInvocationSpec.java b/container-search/src/main/java/com/yahoo/search/federation/sourceref/SearchChainInvocationSpec.java
index 59b4e521a56..34eeb3ce82c 100644
--- a/container-search/src/main/java/com/yahoo/search/federation/sourceref/SearchChainInvocationSpec.java
+++ b/container-search/src/main/java/com/yahoo/search/federation/sourceref/SearchChainInvocationSpec.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation.sourceref;
import com.google.common.collect.ImmutableList;
diff --git a/container-search/src/main/java/com/yahoo/search/federation/sourceref/SearchChainResolver.java b/container-search/src/main/java/com/yahoo/search/federation/sourceref/SearchChainResolver.java
index 6626c1b3cc4..13ab0134ad4 100644
--- a/container-search/src/main/java/com/yahoo/search/federation/sourceref/SearchChainResolver.java
+++ b/container-search/src/main/java/com/yahoo/search/federation/sourceref/SearchChainResolver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation.sourceref;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/main/java/com/yahoo/search/federation/sourceref/SingleTarget.java b/container-search/src/main/java/com/yahoo/search/federation/sourceref/SingleTarget.java
index 4613c73c4b4..d477e573b84 100644
--- a/container-search/src/main/java/com/yahoo/search/federation/sourceref/SingleTarget.java
+++ b/container-search/src/main/java/com/yahoo/search/federation/sourceref/SingleTarget.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation.sourceref;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/main/java/com/yahoo/search/federation/sourceref/SourceRefResolver.java b/container-search/src/main/java/com/yahoo/search/federation/sourceref/SourceRefResolver.java
index 516ee9f968f..f80444a689a 100644
--- a/container-search/src/main/java/com/yahoo/search/federation/sourceref/SourceRefResolver.java
+++ b/container-search/src/main/java/com/yahoo/search/federation/sourceref/SourceRefResolver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation.sourceref;
import com.yahoo.component.ComponentSpecification;
diff --git a/container-search/src/main/java/com/yahoo/search/federation/sourceref/SourcesTarget.java b/container-search/src/main/java/com/yahoo/search/federation/sourceref/SourcesTarget.java
index 7b9eb8fcff1..aaf5bd29f02 100644
--- a/container-search/src/main/java/com/yahoo/search/federation/sourceref/SourcesTarget.java
+++ b/container-search/src/main/java/com/yahoo/search/federation/sourceref/SourcesTarget.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation.sourceref;
diff --git a/container-search/src/main/java/com/yahoo/search/federation/sourceref/Target.java b/container-search/src/main/java/com/yahoo/search/federation/sourceref/Target.java
index 1b11e588f11..1f302f96e83 100644
--- a/container-search/src/main/java/com/yahoo/search/federation/sourceref/Target.java
+++ b/container-search/src/main/java/com/yahoo/search/federation/sourceref/Target.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation.sourceref;
import com.yahoo.component.AbstractComponent;
diff --git a/container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedProviderException.java b/container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedProviderException.java
index 2ae923714c7..c4b2b91626f 100644
--- a/container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedProviderException.java
+++ b/container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedProviderException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation.sourceref;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedSearchChainException.java b/container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedSearchChainException.java
index dceae0318b4..bdb0c2fe0cf 100644
--- a/container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedSearchChainException.java
+++ b/container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedSearchChainException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation.sourceref;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedSourceRefException.java b/container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedSourceRefException.java
index 6f0549eaf93..eae35cdc7ae 100644
--- a/container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedSourceRefException.java
+++ b/container-search/src/main/java/com/yahoo/search/federation/sourceref/UnresolvedSourceRefException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation.sourceref;
import com.yahoo.component.ComponentSpecification;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/Continuation.java b/container-search/src/main/java/com/yahoo/search/grouping/Continuation.java
index b74101fb83d..661199aef5d 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/Continuation.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/Continuation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping;
import com.yahoo.search.grouping.vespa.ContinuationDecoder;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/GroupingQueryParser.java b/container-search/src/main/java/com/yahoo/search/grouping/GroupingQueryParser.java
index b9e0825ab03..f4603e5ea28 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/GroupingQueryParser.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/GroupingQueryParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping;
import com.yahoo.component.chain.dependencies.After;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/GroupingRequest.java b/container-search/src/main/java/com/yahoo/search/grouping/GroupingRequest.java
index 8e57434a049..6b21b2c6b5c 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/GroupingRequest.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/GroupingRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping;
import com.yahoo.net.URI;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/GroupingValidator.java b/container-search/src/main/java/com/yahoo/search/grouping/GroupingValidator.java
index cd8578cd728..fcfae5de184 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/GroupingValidator.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/GroupingValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping;
import com.google.inject.Inject;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/UnavailableAttributeException.java b/container-search/src/main/java/com/yahoo/search/grouping/UnavailableAttributeException.java
index 5750f1c78e3..b918947089a 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/UnavailableAttributeException.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/UnavailableAttributeException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/UniqueGroupingSearcher.java b/container-search/src/main/java/com/yahoo/search/grouping/UniqueGroupingSearcher.java
index 3abfa3a6531..2f1668245da 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/UniqueGroupingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/UniqueGroupingSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping;
import com.yahoo.component.chain.dependencies.After;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/package-info.java b/container-search/src/main/java/com/yahoo/search/grouping/package-info.java
index 6bce0b5cdf1..7ff2cee129c 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.search.grouping;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/AddFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/AddFunction.java
index 60805aacd5f..418251cdd56 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/AddFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/AddFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/AggregatorNode.java b/container-search/src/main/java/com/yahoo/search/grouping/request/AggregatorNode.java
index 6166833999a..00029c0ece3 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/AggregatorNode.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/AggregatorNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/AllOperation.java b/container-search/src/main/java/com/yahoo/search/grouping/request/AllOperation.java
index 93b46d95d89..eebf40a9552 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/AllOperation.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/AllOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/AndFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/AndFunction.java
index 569f0d06987..d01c7fe70f4 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/AndFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/AndFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ArrayAtLookup.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ArrayAtLookup.java
index c8e0a6be3e8..43ca1df70d8 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ArrayAtLookup.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ArrayAtLookup.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import com.google.common.annotations.Beta;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/AttributeFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/AttributeFunction.java
index d609800cc1c..117cc25fa36 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/AttributeFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/AttributeFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/AttributeMapLookupValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/AttributeMapLookupValue.java
index 281e6e53b36..88dd38f18a8 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/AttributeMapLookupValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/AttributeMapLookupValue.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/AttributeValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/AttributeValue.java
index 1afac32d488..253adfe0eec 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/AttributeValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/AttributeValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/AvgAggregator.java b/container-search/src/main/java/com/yahoo/search/grouping/request/AvgAggregator.java
index bf11da5d2b9..be2e1c18a92 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/AvgAggregator.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/AvgAggregator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/AvgFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/AvgFunction.java
index 775f6c48d66..7095e411dd6 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/AvgFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/AvgFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/BooleanValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/BooleanValue.java
index 32ef3c16d2e..d1f1086fbf9 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/BooleanValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/BooleanValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/BucketResolver.java b/container-search/src/main/java/com/yahoo/search/grouping/request/BucketResolver.java
index 6c6b20973ab..d3ecb4e1706 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/BucketResolver.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/BucketResolver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.LinkedList;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/BucketValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/BucketValue.java
index 944616a0b1c..2fd80b023c9 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/BucketValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/BucketValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Objects;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/CatFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/CatFunction.java
index dddc3df0542..e0f08e81e15 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/CatFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/CatFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ConstantValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ConstantValue.java
index 81712424829..df3b5b3f7e7 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ConstantValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ConstantValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ConstantValueComparator.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ConstantValueComparator.java
index 61118e04784..6d15e167890 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ConstantValueComparator.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ConstantValueComparator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Comparator;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/CountAggregator.java b/container-search/src/main/java/com/yahoo/search/grouping/request/CountAggregator.java
index b9d691500ad..b27d13de244 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/CountAggregator.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/CountAggregator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/DateFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/DateFunction.java
index 0c2c4928a91..e7a06b49973 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/DateFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/DateFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfMonthFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfMonthFunction.java
index 62c23804344..d1fad649f16 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfMonthFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfMonthFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfWeekFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfWeekFunction.java
index 6730db2e8d6..4d464aeae3b 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfWeekFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfWeekFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfYearFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfYearFunction.java
index 9ff59c26fe5..e50c2b24796 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfYearFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfYearFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/DebugWaitFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/DebugWaitFunction.java
index 5cad8ea55ec..6b6cd9553d4 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/DebugWaitFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/DebugWaitFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/DivFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/DivFunction.java
index f559d911ff4..72916b3f9c3 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/DivFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/DivFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/DocIdNsSpecificValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/DocIdNsSpecificValue.java
index d9a9daa2db5..353e92c723f 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/DocIdNsSpecificValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/DocIdNsSpecificValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/DocumentValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/DocumentValue.java
index f8b18e4acd6..0ae532fb879 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/DocumentValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/DocumentValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/DoubleBucket.java b/container-search/src/main/java/com/yahoo/search/grouping/request/DoubleBucket.java
index f0bcfead39a..87b33f8e9e6 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/DoubleBucket.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/DoubleBucket.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.text.ChoiceFormat;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/DoublePredefined.java b/container-search/src/main/java/com/yahoo/search/grouping/request/DoublePredefined.java
index 0409709f2a2..fd91f0a2d57 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/DoublePredefined.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/DoublePredefined.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/DoubleValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/DoubleValue.java
index 318cc680f2e..604a7759336 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/DoubleValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/DoubleValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/EachOperation.java b/container-search/src/main/java/com/yahoo/search/grouping/request/EachOperation.java
index 2d830fd214e..2ea7d932a03 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/EachOperation.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/EachOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ExpressionVisitor.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ExpressionVisitor.java
index 89d698694a8..44fa3e82f96 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ExpressionVisitor.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ExpressionVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/FixedWidthFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/FixedWidthFunction.java
index 3b397634a11..003ea78204d 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/FixedWidthFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/FixedWidthFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/FunctionNode.java b/container-search/src/main/java/com/yahoo/search/grouping/request/FunctionNode.java
index 9e09baf66ab..86cfdd075d0 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/FunctionNode.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/FunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.*;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingExpression.java b/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingExpression.java
index ad97f5519ee..2138d2c5874 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingExpression.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import com.yahoo.javacc.UnicodeUtilities;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingNode.java b/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingNode.java
index bd5db3d1fdb..b47b416065b 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingNode.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingOperation.java b/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingOperation.java
index 499ed610d34..ca4067da239 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingOperation.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import com.yahoo.collections.LazyMap;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/HourOfDayFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/HourOfDayFunction.java
index 7adebcbfbdb..bf9146dbb13 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/HourOfDayFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/HourOfDayFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/Infinite.java b/container-search/src/main/java/com/yahoo/search/grouping/request/Infinite.java
index 36b59906c11..bdb1e668f84 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/Infinite.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/Infinite.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/InfiniteValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/InfiniteValue.java
index dac6259595d..26d017ad276 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/InfiniteValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/InfiniteValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/InterpolatedLookup.java b/container-search/src/main/java/com/yahoo/search/grouping/request/InterpolatedLookup.java
index 279434f1df2..ffe835946f8 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/InterpolatedLookup.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/InterpolatedLookup.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import com.google.common.annotations.Beta;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/LongBucket.java b/container-search/src/main/java/com/yahoo/search/grouping/request/LongBucket.java
index a0fdf8f9526..1e3c749fe6f 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/LongBucket.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/LongBucket.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/LongPredefined.java b/container-search/src/main/java/com/yahoo/search/grouping/request/LongPredefined.java
index fe428d26db7..4f4bca2b3af 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/LongPredefined.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/LongPredefined.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/LongValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/LongValue.java
index 705036af78e..b54fdb5f9e6 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/LongValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/LongValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathACosFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathACosFunction.java
index 24ba449e517..785bbec6ebe 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathACosFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathACosFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathACosHFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathACosHFunction.java
index 40de58ba0be..5accf00b942 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathACosHFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathACosHFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathASinFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathASinFunction.java
index 48a2641b660..f6430fc9f31 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathASinFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathASinFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathASinHFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathASinHFunction.java
index 687bf1c6c34..ee1cfadd40f 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathASinHFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathASinHFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathATanFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathATanFunction.java
index 6612c9cc70f..aa43986fd5b 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathATanFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathATanFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathATanHFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathATanHFunction.java
index fa9844ec17b..b3c92f19cb9 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathATanHFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathATanHFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathCbrtFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathCbrtFunction.java
index 04595003a03..64709a33a25 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathCbrtFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathCbrtFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathCosFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathCosFunction.java
index 95140ce06d0..c0ad725e76b 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathCosFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathCosFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathCosHFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathCosHFunction.java
index f0384666ffe..963d4d4dd6a 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathCosHFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathCosHFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathExpFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathExpFunction.java
index ef2a53d90b0..e3f607200bf 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathExpFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathExpFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathFloorFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathFloorFunction.java
index 64dd931f9e4..5cd45e41698 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathFloorFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathFloorFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathFunctions.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathFunctions.java
index 5fc806a90fe..225e1dc9a7a 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathFunctions.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathFunctions.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathHypotFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathHypotFunction.java
index d6062124619..47553cda59d 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathHypotFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathHypotFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathLog10Function.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathLog10Function.java
index b64e5d03a97..8572b22fb5f 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathLog10Function.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathLog10Function.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathLog1pFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathLog1pFunction.java
index 7df97e6b0d5..05ce1199ad6 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathLog1pFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathLog1pFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathLogFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathLogFunction.java
index 323a03ad152..cd4097efca9 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathLogFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathLogFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathPowFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathPowFunction.java
index 084fdc82646..0ddbbd06511 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathPowFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathPowFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathResolver.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathResolver.java
index 8aa841930e3..98dd2ee3c88 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathResolver.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathResolver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.LinkedList;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathSinFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathSinFunction.java
index ea9a0d97887..a27532c94e9 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathSinFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathSinFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathSinHFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathSinHFunction.java
index 3a02de24e6a..eb1c2628061 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathSinHFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathSinHFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathSqrtFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathSqrtFunction.java
index ee66b71e070..0b7d9528c0b 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathSqrtFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathSqrtFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathTanFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathTanFunction.java
index 003ef9c6a00..866dba95f3d 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathTanFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathTanFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathTanHFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathTanHFunction.java
index 86ccbbdfcf9..249d0147250 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathTanHFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathTanHFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MaxAggregator.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MaxAggregator.java
index 513cba8fb19..17bad87b376 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MaxAggregator.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MaxAggregator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MaxFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MaxFunction.java
index bff8cb481b8..1ff55366365 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MaxFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MaxFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/Md5Function.java b/container-search/src/main/java/com/yahoo/search/grouping/request/Md5Function.java
index 1426d141ef7..bb8ddbadf0b 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/Md5Function.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/Md5Function.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MinAggregator.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MinAggregator.java
index 07164ba4053..2adb77baf68 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MinAggregator.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MinAggregator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MinFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MinFunction.java
index 5a39612b200..5b287affa1e 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MinFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MinFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MinuteOfHourFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MinuteOfHourFunction.java
index 97dfb5b0d37..5bd57eac793 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MinuteOfHourFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MinuteOfHourFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ModFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ModFunction.java
index 33b5c7bf655..7de1b047589 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ModFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ModFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MonthOfYearFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MonthOfYearFunction.java
index c6df8dbd408..519507f19aa 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MonthOfYearFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MonthOfYearFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MulFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MulFunction.java
index 7af8d22955e..f0142bbb666 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MulFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MulFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/NegFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/NegFunction.java
index ad3b892970c..a98d989de19 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/NegFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/NegFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/NormalizeSubjectFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/NormalizeSubjectFunction.java
index 8bf0a03141a..ad59c42396a 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/NormalizeSubjectFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/NormalizeSubjectFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/NowFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/NowFunction.java
index 75715bad37b..54153eea73b 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/NowFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/NowFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/OrFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/OrFunction.java
index 43456a4f281..731f0b3b23b 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/OrFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/OrFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/PredefinedFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/PredefinedFunction.java
index 5818c5034b6..c9b78e9f3dc 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/PredefinedFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/PredefinedFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Iterator;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/RawBucket.java b/container-search/src/main/java/com/yahoo/search/grouping/request/RawBucket.java
index 415dbe2adff..7f561749c9c 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/RawBucket.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/RawBucket.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/RawBuffer.java b/container-search/src/main/java/com/yahoo/search/grouping/request/RawBuffer.java
index 8af5d47335c..2c0050aa325 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/RawBuffer.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/RawBuffer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.ArrayList;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/RawPredefined.java b/container-search/src/main/java/com/yahoo/search/grouping/request/RawPredefined.java
index 567892a0377..ff9cc2f681a 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/RawPredefined.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/RawPredefined.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/RawValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/RawValue.java
index c8215b1b389..0b3790069f1 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/RawValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/RawValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/RelevanceValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/RelevanceValue.java
index 30cdf2c6f5c..b189c0b2cbe 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/RelevanceValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/RelevanceValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ReverseFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ReverseFunction.java
index 8937018c28f..ce7fcc0d327 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ReverseFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ReverseFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/SecondOfMinuteFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/SecondOfMinuteFunction.java
index 7b01d820d89..13103ece9ab 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/SecondOfMinuteFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/SecondOfMinuteFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/SizeFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/SizeFunction.java
index a9deb2b8e64..4ebdff629b2 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/SizeFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/SizeFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/SortFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/SortFunction.java
index 57489b8ee1a..0c9bcf5e74a 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/SortFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/SortFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/StandardDeviationAggregator.java b/container-search/src/main/java/com/yahoo/search/grouping/request/StandardDeviationAggregator.java
index d96b840dde9..bd1f88f98c8 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/StandardDeviationAggregator.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/StandardDeviationAggregator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/StrCatFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/StrCatFunction.java
index 3b266b884bf..31f378b009c 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/StrCatFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/StrCatFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/StrLenFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/StrLenFunction.java
index d784e37b337..0a5bed959f3 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/StrLenFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/StrLenFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/StringBucket.java b/container-search/src/main/java/com/yahoo/search/grouping/request/StringBucket.java
index 12374fbc60d..33194c5f723 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/StringBucket.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/StringBucket.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/StringPredefined.java b/container-search/src/main/java/com/yahoo/search/grouping/request/StringPredefined.java
index cae9bc113c9..2b333bfb216 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/StringPredefined.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/StringPredefined.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/StringValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/StringValue.java
index 473e6b73f95..8afb43f49e4 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/StringValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/StringValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/SubFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/SubFunction.java
index e0fe533e361..a2e6c04c4b0 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/SubFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/SubFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/SumAggregator.java b/container-search/src/main/java/com/yahoo/search/grouping/request/SumAggregator.java
index 0b34b0660d5..1a1a924d1a6 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/SumAggregator.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/SumAggregator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/SummaryValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/SummaryValue.java
index 68641d6e6e6..970207248fb 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/SummaryValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/SummaryValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/TimeFunctions.java b/container-search/src/main/java/com/yahoo/search/grouping/request/TimeFunctions.java
index c12d32044da..ed0c9030470 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/TimeFunctions.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/TimeFunctions.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ToDoubleFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ToDoubleFunction.java
index 8e7490d0cc6..b76cae6e5e5 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ToDoubleFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ToDoubleFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ToLongFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ToLongFunction.java
index 77470487a6e..8ba2707d39b 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ToLongFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ToLongFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ToRawFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ToRawFunction.java
index 2f32b0fe139..b6d7d9c7872 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ToRawFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ToRawFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ToStringFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ToStringFunction.java
index dd7bd0b5250..aef11e73e37 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ToStringFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ToStringFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/UcaFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/UcaFunction.java
index 2d6d18a6eec..3917c2b7389 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/UcaFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/UcaFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/XorAggregator.java b/container-search/src/main/java/com/yahoo/search/grouping/request/XorAggregator.java
index e68303b564c..79ed3502d10 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/XorAggregator.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/XorAggregator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/XorBitFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/XorBitFunction.java
index 8fdd2dc5839..d408b6c3a37 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/XorBitFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/XorBitFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/XorFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/XorFunction.java
index a7a1e4d2a8f..30d74ce2f0e 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/XorFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/XorFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/YearFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/YearFunction.java
index 737597a585c..7ff2a083d44 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/YearFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/YearFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ZCurveXFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ZCurveXFunction.java
index 5ab057ef8a8..3aa2dd75f29 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ZCurveXFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ZCurveXFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ZCurveYFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ZCurveYFunction.java
index fa645eb9141..f4aa163df45 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ZCurveYFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ZCurveYFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/package-info.java b/container-search/src/main/java/com/yahoo/search/grouping/request/package-info.java
index daf8d9a6d31..8f973ee6223 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.search.grouping.request;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/parser/GroupingParserInput.java b/container-search/src/main/java/com/yahoo/search/grouping/request/parser/GroupingParserInput.java
index 189281485da..081b9a53c84 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/parser/GroupingParserInput.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/parser/GroupingParserInput.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request.parser;
import com.yahoo.javacc.FastCharStream;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/AbstractList.java b/container-search/src/main/java/com/yahoo/search/grouping/result/AbstractList.java
index baa6c4c4253..3b2e71bdc84 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/AbstractList.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/AbstractList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// 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.collections.LazyMap;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/BoolId.java b/container-search/src/main/java/com/yahoo/search/grouping/result/BoolId.java
index 9b831d335d9..91c4b611dba 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/BoolId.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/BoolId.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.result;
/**
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 e1f74df7172..05efc134465 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,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// 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;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/DoubleBucketId.java b/container-search/src/main/java/com/yahoo/search/grouping/result/DoubleBucketId.java
index 3a85f32c790..dee70b1979e 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/DoubleBucketId.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/DoubleBucketId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.result;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/DoubleId.java b/container-search/src/main/java/com/yahoo/search/grouping/result/DoubleId.java
index 114d0c62cb9..7d7a3337d17 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/DoubleId.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/DoubleId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.result;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/Group.java b/container-search/src/main/java/com/yahoo/search/grouping/result/Group.java
index 30bf0ff4bb0..5abecbca566 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/Group.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/Group.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// 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.search.result.Hit;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/GroupId.java b/container-search/src/main/java/com/yahoo/search/grouping/result/GroupId.java
index 27be1209bbc..80ad9af96dd 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/GroupId.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/GroupId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.result;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/GroupList.java b/container-search/src/main/java/com/yahoo/search/grouping/result/GroupList.java
index 2788ece2c36..8c15bb0d824 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/GroupList.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/GroupList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// 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.search.Result;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/HitList.java b/container-search/src/main/java/com/yahoo/search/grouping/result/HitList.java
index 653fc4cb978..4908f1055e8 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/HitList.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/HitList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// 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.search.Result;
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 da115807fc2..343fea82b6e 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
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// 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.search.grouping.Continuation;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/LongBucketId.java b/container-search/src/main/java/com/yahoo/search/grouping/result/LongBucketId.java
index 4a9d403c33d..8acf1d61a8e 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/LongBucketId.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/LongBucketId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.result;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/LongId.java b/container-search/src/main/java/com/yahoo/search/grouping/result/LongId.java
index 7254e488deb..cea7ea1b38f 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/LongId.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/LongId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.result;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/NullId.java b/container-search/src/main/java/com/yahoo/search/grouping/result/NullId.java
index 6edf1cabca9..7f78816ae27 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/NullId.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/NullId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.result;
/**
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 449d5461da6..9576f548f4a 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,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// 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;
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 11720756754..de711d0c218 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,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// 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;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/RootGroup.java b/container-search/src/main/java/com/yahoo/search/grouping/result/RootGroup.java
index 571ad2d3365..1a475193605 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/RootGroup.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/RootGroup.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// 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.search.grouping.Continuation;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/RootId.java b/container-search/src/main/java/com/yahoo/search/grouping/result/RootId.java
index d5667dd0383..3f3e883d135 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/RootId.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/RootId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.result;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/StringBucketId.java b/container-search/src/main/java/com/yahoo/search/grouping/result/StringBucketId.java
index e34b50e6df8..78dd6671d6e 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/StringBucketId.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/StringBucketId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.result;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/StringId.java b/container-search/src/main/java/com/yahoo/search/grouping/result/StringId.java
index 4448d587a03..1c7b0161285 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/StringId.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/StringId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.result;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/ValueGroupId.java b/container-search/src/main/java/com/yahoo/search/grouping/result/ValueGroupId.java
index a76af885180..0230683dd47 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/ValueGroupId.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/ValueGroupId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// 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;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/package-info.java b/container-search/src/main/java/com/yahoo/search/grouping/result/package-info.java
index c0cf146bafa..87c3f54ec1b 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.search.grouping.result;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/CompositeContinuation.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/CompositeContinuation.java
index 7a12a200f5b..c50b1bd2c63 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/CompositeContinuation.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/CompositeContinuation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
import com.yahoo.search.grouping.Continuation;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/ContinuationDecoder.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/ContinuationDecoder.java
index 151524e0350..0b97b5c98a4 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/ContinuationDecoder.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/ContinuationDecoder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
import com.yahoo.search.grouping.Continuation;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/EncodableContinuation.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/EncodableContinuation.java
index df24b7129ff..f2da110dceb 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/EncodableContinuation.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/EncodableContinuation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
import com.yahoo.search.grouping.Continuation;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/ExpressionConverter.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/ExpressionConverter.java
index d5d1bb5b18e..b339ee78ad9 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/ExpressionConverter.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/ExpressionConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
import com.yahoo.search.grouping.request.AddFunction;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java
index d2d89e41879..d34d5594ef7 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
import java.util.ArrayList;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingTransform.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingTransform.java
index e58448ea2ef..ada7a0ffc5c 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingTransform.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingTransform.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
import com.yahoo.search.grouping.Continuation;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/HitConverter.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/HitConverter.java
index 5ea0e3a0838..674f710e681 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/HitConverter.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/HitConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
import com.yahoo.prelude.fastsearch.DocsumDefinitionSet;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/IntegerDecoder.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/IntegerDecoder.java
index 15781060d7f..7dc9aea6b3c 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/IntegerDecoder.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/IntegerDecoder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/IntegerEncoder.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/IntegerEncoder.java
index b17991b22f1..a9ecd3385d1 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/IntegerEncoder.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/IntegerEncoder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/OffsetContinuation.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/OffsetContinuation.java
index 324f3eb0b6e..dc49d5859c8 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/OffsetContinuation.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/OffsetContinuation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/RequestBuilder.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/RequestBuilder.java
index 46b1fecd7de..e636c0d63a6 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/RequestBuilder.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/RequestBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
import com.yahoo.search.grouping.Continuation;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/ResultBuilder.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/ResultBuilder.java
index f45617d1cd7..81b7ae51963 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/ResultBuilder.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/ResultBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
import com.yahoo.search.grouping.Continuation;
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/ResultId.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/ResultId.java
index 82784bcf9dd..3a927859d49 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/ResultId.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/ResultId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/handler/HttpSearchResponse.java b/container-search/src/main/java/com/yahoo/search/handler/HttpSearchResponse.java
index aebc6e17904..ace262f053c 100644
--- a/container-search/src/main/java/com/yahoo/search/handler/HttpSearchResponse.java
+++ b/container-search/src/main/java/com/yahoo/search/handler/HttpSearchResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.handler;
import com.google.common.util.concurrent.ListenableFuture;
@@ -22,7 +22,6 @@ import com.yahoo.yolean.trace.TraceNode;
import java.io.IOException;
import java.io.OutputStream;
-import java.time.Duration;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -191,11 +190,11 @@ public class HttpSearchResponse extends ExtendedResponse {
@Override
public void run() {
- long latencyMillis = Duration.ofNanos(System.nanoTime() - nanoStart).toMillis();
+ long latencyNanos = System.nanoTime() - nanoStart;
Metric.Context ctx = metric.createContext(Map.of(
SearchHandler.RENDERER_DIMENSION, rendererCopy.getClassName(),
SearchHandler.MIME_DIMENSION, rendererCopy.getMimeType()));
- metric.set(SearchHandler.RENDER_LATENCY_METRIC, latencyMillis, ctx);
+ metric.set(SearchHandler.RENDER_LATENCY_METRIC, latencyNanos, ctx);
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java b/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java
index f7ff7e72745..8851977d28c 100644
--- a/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java
+++ b/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.handler;
import com.google.inject.Inject;
@@ -23,6 +23,7 @@ import com.yahoo.io.IOUtils;
import com.yahoo.jdisc.Metric;
import com.yahoo.jdisc.Request;
import com.yahoo.language.Linguistics;
+import com.yahoo.language.process.Embedder;
import com.yahoo.net.HostName;
import com.yahoo.net.UriTools;
import com.yahoo.prelude.query.parser.ParseException;
@@ -87,7 +88,7 @@ public class SearchHandler extends LoggingRequestHandler {
/** Event name for number of connections to the search subsystem */
private static final String SEARCH_CONNECTIONS = "search_connections";
- static final String RENDER_LATENCY_METRIC = "jdisc.search.render_latency";
+ static final String RENDER_LATENCY_METRIC = "jdisc.render.latency";
static final String MIME_DIMENSION = "mime";
static final String RENDERER_DIMENSION = "renderer";
@@ -105,6 +106,8 @@ public class SearchHandler extends LoggingRequestHandler {
private final String selfHostname = HostName.getLocalhost();
+ private final Embedder embedder;
+
private final ExecutionFactory executionFactory;
private final AtomicLong numRequestsLeftToTrace;
@@ -129,6 +132,22 @@ public class SearchHandler extends LoggingRequestHandler {
public SearchHandler(Statistics statistics,
Metric metric,
ContainerThreadPool threadpool,
+ CompiledQueryProfileRegistry queryProfileRegistry,
+ ContainerHttpConfig config,
+ Embedder embedder,
+ ExecutionFactory executionFactory) {
+ this(statistics, metric, threadpool.executor(), queryProfileRegistry, embedder, executionFactory,
+ config.numQueriesToTraceOnDebugAfterConstruction(),
+ config.hostResponseHeaderKey().equals("") ? Optional.empty() : Optional.of(config.hostResponseHeaderKey()));
+ }
+
+ /**
+ * @deprecated Use the @Inject annotated constructor instead.
+ */
+ @Deprecated // Vespa 8
+ public SearchHandler(Statistics statistics,
+ Metric metric,
+ ContainerThreadPool threadpool,
AccessLog ignored,
CompiledQueryProfileRegistry queryProfileRegistry,
ContainerHttpConfig config,
@@ -136,6 +155,10 @@ public class SearchHandler extends LoggingRequestHandler {
this(statistics, metric, threadpool.executor(), ignored, queryProfileRegistry, config, executionFactory);
}
+ /**
+ * @deprecated Use the @Inject annotated constructor instead.
+ */
+ @Deprecated // Vespa 8
public SearchHandler(Statistics statistics,
Metric metric,
Executor executor,
@@ -147,6 +170,7 @@ public class SearchHandler extends LoggingRequestHandler {
metric,
executor,
queryProfileRegistry,
+ Embedder.throwsOnUse,
executionFactory,
containerHttpConfig.numQueriesToTraceOnDebugAfterConstruction(),
containerHttpConfig.hostResponseHeaderKey().equals("") ?
@@ -168,12 +192,17 @@ public class SearchHandler extends LoggingRequestHandler {
metric,
executor,
QueryProfileConfigurer.createFromConfig(queryProfileConfig).compile(),
+ Embedder.throwsOnUse,
executionFactory,
containerHttpConfig.numQueriesToTraceOnDebugAfterConstruction(),
containerHttpConfig.hostResponseHeaderKey().equals("") ?
Optional.empty() : Optional.of( containerHttpConfig.hostResponseHeaderKey()));
}
+ /**
+ * @deprecated Use the @Inject annotated constructor instead.
+ */
+ @Deprecated // Vespa 8
public SearchHandler(Statistics statistics,
Metric metric,
Executor executor,
@@ -181,19 +210,22 @@ public class SearchHandler extends LoggingRequestHandler {
CompiledQueryProfileRegistry queryProfileRegistry,
ExecutionFactory executionFactory,
Optional<String> hostResponseHeaderKey) {
- this(statistics, metric, executor, queryProfileRegistry, executionFactory, 0, hostResponseHeaderKey);
+ this(statistics, metric, executor, queryProfileRegistry, Embedder.throwsOnUse,
+ executionFactory, 0, hostResponseHeaderKey);
}
private SearchHandler(Statistics statistics,
Metric metric,
Executor executor,
CompiledQueryProfileRegistry queryProfileRegistry,
+ Embedder embedder,
ExecutionFactory executionFactory,
long numQueriesToTraceOnDebugAfterStartup,
Optional<String> hostResponseHeaderKey) {
super(executor, metric, true);
log.log(Level.FINE, () -> "SearchHandler.init " + System.identityHashCode(this));
this.queryProfileRegistry = queryProfileRegistry;
+ this.embedder = embedder;
this.executionFactory = executionFactory;
this.maxThreads = examineExecutor(executor);
@@ -297,7 +329,11 @@ public class SearchHandler extends LoggingRequestHandler {
String queryProfileName = requestMap.getOrDefault("queryProfile", null);
CompiledQueryProfile queryProfile = queryProfileRegistry.findQueryProfile(queryProfileName);
- Query query = new Query(request, requestMap, queryProfile);
+ Query query = new Query.Builder().setRequest(request)
+ .setRequestMap(requestMap)
+ .setQueryProfile(queryProfile)
+ .setEmbedder(embedder)
+ .build();
boolean benchmarking = VespaHeaders.benchmarkOutput(request);
boolean benchmarkCoverage = VespaHeaders.benchmarkCoverage(benchmarking, request.getJDiscRequest().headers());
diff --git a/container-search/src/main/java/com/yahoo/search/handler/SearchResponse.java b/container-search/src/main/java/com/yahoo/search/handler/SearchResponse.java
index 5b5ff0770c4..b752467f418 100644
--- a/container-search/src/main/java/com/yahoo/search/handler/SearchResponse.java
+++ b/container-search/src/main/java/com/yahoo/search/handler/SearchResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.handler;
import com.yahoo.container.handler.Timing;
diff --git a/container-search/src/main/java/com/yahoo/search/handler/package-info.java b/container-search/src/main/java/com/yahoo/search/handler/package-info.java
index 7bbd40bdb6e..9d6da1b4323 100644
--- a/container-search/src/main/java/com/yahoo/search/handler/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/handler/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* The search handler, which handles search request to the Container by translating the Request into a Query, invoking the
* chosen Search Chain to get a Result, which it translates to a Response which is returned to the Container.
diff --git a/container-search/src/main/java/com/yahoo/search/intent/model/Intent.java b/container-search/src/main/java/com/yahoo/search/intent/model/Intent.java
index 7b4deed8eee..0b26f7e67fb 100644
--- a/container-search/src/main/java/com/yahoo/search/intent/model/Intent.java
+++ b/container-search/src/main/java/com/yahoo/search/intent/model/Intent.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.intent.model;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/intent/model/IntentModel.java b/container-search/src/main/java/com/yahoo/search/intent/model/IntentModel.java
index b63962bdcf2..9aafd2c4693 100644
--- a/container-search/src/main/java/com/yahoo/search/intent/model/IntentModel.java
+++ b/container-search/src/main/java/com/yahoo/search/intent/model/IntentModel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.intent.model;
import com.yahoo.search.Query;
diff --git a/container-search/src/main/java/com/yahoo/search/intent/model/IntentNode.java b/container-search/src/main/java/com/yahoo/search/intent/model/IntentNode.java
index 4e865d72911..6f0677cfada 100644
--- a/container-search/src/main/java/com/yahoo/search/intent/model/IntentNode.java
+++ b/container-search/src/main/java/com/yahoo/search/intent/model/IntentNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.intent.model;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/intent/model/InterpretationNode.java b/container-search/src/main/java/com/yahoo/search/intent/model/InterpretationNode.java
index 9afd1e2a3f3..31fdcd22ce5 100644
--- a/container-search/src/main/java/com/yahoo/search/intent/model/InterpretationNode.java
+++ b/container-search/src/main/java/com/yahoo/search/intent/model/InterpretationNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.intent.model;
import com.yahoo.text.interpretation.Interpretation;
diff --git a/container-search/src/main/java/com/yahoo/search/intent/model/Node.java b/container-search/src/main/java/com/yahoo/search/intent/model/Node.java
index 84b90b388b0..f011dad378a 100644
--- a/container-search/src/main/java/com/yahoo/search/intent/model/Node.java
+++ b/container-search/src/main/java/com/yahoo/search/intent/model/Node.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.intent.model;
import java.util.Map;
diff --git a/container-search/src/main/java/com/yahoo/search/intent/model/ParentNode.java b/container-search/src/main/java/com/yahoo/search/intent/model/ParentNode.java
index eaae944be50..d323ceedbaa 100644
--- a/container-search/src/main/java/com/yahoo/search/intent/model/ParentNode.java
+++ b/container-search/src/main/java/com/yahoo/search/intent/model/ParentNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.intent.model;
import java.util.ArrayList;
diff --git a/container-search/src/main/java/com/yahoo/search/intent/model/Source.java b/container-search/src/main/java/com/yahoo/search/intent/model/Source.java
index 2d6f6d27376..0afab155ae1 100644
--- a/container-search/src/main/java/com/yahoo/search/intent/model/Source.java
+++ b/container-search/src/main/java/com/yahoo/search/intent/model/Source.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.intent.model;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/intent/model/SourceNode.java b/container-search/src/main/java/com/yahoo/search/intent/model/SourceNode.java
index d97c09782fa..720912e899b 100644
--- a/container-search/src/main/java/com/yahoo/search/intent/model/SourceNode.java
+++ b/container-search/src/main/java/com/yahoo/search/intent/model/SourceNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.intent.model;
import java.util.Map;
diff --git a/container-search/src/main/java/com/yahoo/search/intent/model/package-info.java b/container-search/src/main/java/com/yahoo/search/intent/model/package-info.java
index e75b17c46b3..347b4fab2ae 100644
--- a/container-search/src/main/java/com/yahoo/search/intent/model/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/intent/model/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.search.intent.model;
diff --git a/container-search/src/main/java/com/yahoo/search/match/DocumentDb.java b/container-search/src/main/java/com/yahoo/search/match/DocumentDb.java
index 18801f69103..f438d601763 100644
--- a/container-search/src/main/java/com/yahoo/search/match/DocumentDb.java
+++ b/container-search/src/main/java/com/yahoo/search/match/DocumentDb.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.match;
import com.yahoo.document.Document;
diff --git a/container-search/src/main/java/com/yahoo/search/package-info.java b/container-search/src/main/java/com/yahoo/search/package-info.java
index 2c87d1d497d..1d092de8dc7 100644
--- a/container-search/src/main/java/com/yahoo/search/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* <b>The top level classes of the search container.</b> A Query represents the incoming request, which produces a Result
* by chained execution of a set of Searchers.
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/PageTemplate.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/PageTemplate.java
index dc390c773d8..509e0095d15 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/PageTemplate.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/PageTemplate.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/PageTemplateRegistry.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/PageTemplateRegistry.java
index 3cff34a4f5f..91c7b28cca8 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/PageTemplateRegistry.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/PageTemplateRegistry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates;
import com.yahoo.component.provider.ComponentRegistry;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/PageTemplateSearcher.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/PageTemplateSearcher.java
index 2074fce19bd..1dee75601b6 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/PageTemplateSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/PageTemplateSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates;
import com.google.inject.Inject;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/PlaceholderMappingVisitor.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/PlaceholderMappingVisitor.java
index c37ea5667c0..49b091c43f3 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/PlaceholderMappingVisitor.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/PlaceholderMappingVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates;
import com.yahoo.search.pagetemplates.model.*;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/PlaceholderReferenceCreatingVisitor.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/PlaceholderReferenceCreatingVisitor.java
index 5ef507201cb..3c9c93c3a53 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/PlaceholderReferenceCreatingVisitor.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/PlaceholderReferenceCreatingVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates;
import com.yahoo.search.pagetemplates.model.MapChoice;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/SourceVisitor.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/SourceVisitor.java
index a4c32274caa..5d3950c6598 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/SourceVisitor.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/SourceVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates;
import com.yahoo.search.pagetemplates.model.PageTemplateVisitor;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/config/PageTemplateConfigurer.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/config/PageTemplateConfigurer.java
index e8f1d3ee594..1a769463d9e 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/config/PageTemplateConfigurer.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/config/PageTemplateConfigurer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.config;
import com.yahoo.config.subscription.ConfigSubscriber;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/config/PageTemplateXMLReader.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/config/PageTemplateXMLReader.java
index 0359432a819..ca4afcdd12a 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/config/PageTemplateXMLReader.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/config/PageTemplateXMLReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.config;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/config/package-info.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/config/package-info.java
index 270a7f486d3..a69107dbb62 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/config/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/config/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.search.pagetemplates.config;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/Organizer.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/Organizer.java
index 051103cba06..0eb6ef8afeb 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/Organizer.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/Organizer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine;
import com.yahoo.search.Result;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/RelevanceComparator.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/RelevanceComparator.java
index 4f8c69405bf..43c4a2a1bba 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/RelevanceComparator.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/RelevanceComparator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine;
import com.yahoo.search.result.ChainableComparator;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/Resolution.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/Resolution.java
index f36ebe56e21..d1a2df74157 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/Resolution.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/Resolution.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine;
import com.yahoo.search.pagetemplates.model.Choice;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/Resolver.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/Resolver.java
index 88c00249e13..88561ad08a9 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/Resolver.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/Resolver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine;
import com.yahoo.component.AbstractComponent;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/SourceOrderComparator.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/SourceOrderComparator.java
index 9691f7715dc..65642b7e8bc 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/SourceOrderComparator.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/SourceOrderComparator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine;
import com.yahoo.search.result.ChainableComparator;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/package-info.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/package-info.java
index ec4856ee27e..beeb14be0a9 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.search.pagetemplates.engine;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/DeterministicResolver.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/DeterministicResolver.java
index 344edf07c41..b8d95a5c1f0 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/DeterministicResolver.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/DeterministicResolver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine.resolvers;
import com.yahoo.search.Query;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/RandomResolver.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/RandomResolver.java
index 561a222eea5..7127e7afe75 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/RandomResolver.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/RandomResolver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine.resolvers;
import com.yahoo.search.Query;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/ResolverRegistry.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/ResolverRegistry.java
index 1a2ef34b491..bd7c0bca5f3 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/ResolverRegistry.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/ResolverRegistry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine.resolvers;
import com.google.inject.Inject;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/package-info.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/package-info.java
index 3d051abd37b..6078e0a1f52 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.search.pagetemplates.engine.resolvers;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/model/AbstractChoice.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/model/AbstractChoice.java
index c5348e19524..4928459d499 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/model/AbstractChoice.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/model/AbstractChoice.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.model;
import com.yahoo.component.provider.FreezableClass;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Choice.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Choice.java
index 51dc0888b39..3fedc390673 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Choice.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Choice.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.model;
import java.util.*;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Layout.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Layout.java
index 16006486092..c7f32a792b2 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Layout.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Layout.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.model;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/model/MapChoice.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/model/MapChoice.java
index 40c9994f2ca..3eff1a113cb 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/model/MapChoice.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/model/MapChoice.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.model;
import java.util.ArrayList;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/model/PageElement.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/model/PageElement.java
index 90239fdeb8d..036705d7081 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/model/PageElement.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/model/PageElement.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.model;
import com.yahoo.component.provider.Freezable;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/model/PageTemplateVisitor.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/model/PageTemplateVisitor.java
index df7b18b80ea..b419ac07884 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/model/PageTemplateVisitor.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/model/PageTemplateVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.model;
import com.yahoo.search.pagetemplates.PageTemplate;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Placeholder.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Placeholder.java
index 975da8c5a82..bd3a74c83db 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Placeholder.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Placeholder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.model;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Renderer.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Renderer.java
index a8e52edfea4..739d4d67118 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Renderer.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Renderer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.model;
import com.yahoo.component.provider.FreezableClass;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Section.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Section.java
index 0983ec1beba..1c9cbdd37d8 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Section.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Section.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.model;
import com.yahoo.component.provider.FreezableClass;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Source.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Source.java
index b6d9f8e6300..e858af1754a 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Source.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/model/Source.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.model;
import com.yahoo.component.provider.FreezableClass;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/model/package-info.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/model/package-info.java
index 5105d5e09d0..0f6b487ab77 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/model/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/model/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.search.pagetemplates.model;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/package-info.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/package-info.java
index c7b5004bac3..14680435228 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.search.pagetemplates;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/result/SectionHitGroup.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/result/SectionHitGroup.java
index cd3578acd11..b4d1d7fc05f 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/result/SectionHitGroup.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/result/SectionHitGroup.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.result;
import com.yahoo.search.pagetemplates.model.Renderer;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/result/package-info.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/result/package-info.java
index 04dc5a689a1..f8cc3cce92c 100644
--- a/container-search/src/main/java/com/yahoo/search/pagetemplates/result/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/result/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.search.pagetemplates.result;
diff --git a/container-search/src/main/java/com/yahoo/search/query/Model.java b/container-search/src/main/java/com/yahoo/search/query/Model.java
index 637873aa375..dc08e689ff2 100644
--- a/container-search/src/main/java/com/yahoo/search/query/Model.java
+++ b/container-search/src/main/java/com/yahoo/search/query/Model.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query;
import com.yahoo.language.Language;
diff --git a/container-search/src/main/java/com/yahoo/search/query/ParameterParser.java b/container-search/src/main/java/com/yahoo/search/query/ParameterParser.java
index c0f0ee80730..9e30c0b170c 100644
--- a/container-search/src/main/java/com/yahoo/search/query/ParameterParser.java
+++ b/container-search/src/main/java/com/yahoo/search/query/ParameterParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query;
import com.yahoo.processing.IllegalInputException;
diff --git a/container-search/src/main/java/com/yahoo/search/query/Presentation.java b/container-search/src/main/java/com/yahoo/search/query/Presentation.java
index db2fbf525e0..db6b07e0b0d 100644
--- a/container-search/src/main/java/com/yahoo/search/query/Presentation.java
+++ b/container-search/src/main/java/com/yahoo/search/query/Presentation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query;
import com.google.common.base.Splitter;
diff --git a/container-search/src/main/java/com/yahoo/search/query/Properties.java b/container-search/src/main/java/com/yahoo/search/query/Properties.java
index a0cd4137e9f..12a82afc7bd 100644
--- a/container-search/src/main/java/com/yahoo/search/query/Properties.java
+++ b/container-search/src/main/java/com/yahoo/search/query/Properties.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query;
import com.yahoo.search.Query;
diff --git a/container-search/src/main/java/com/yahoo/search/query/QueryHelper.java b/container-search/src/main/java/com/yahoo/search/query/QueryHelper.java
index d17baf663dd..db1481ce37e 100644
--- a/container-search/src/main/java/com/yahoo/search/query/QueryHelper.java
+++ b/container-search/src/main/java/com/yahoo/search/query/QueryHelper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/query/QueryTree.java b/container-search/src/main/java/com/yahoo/search/query/QueryTree.java
index 1c7e69583e6..2fb16ef503f 100644
--- a/container-search/src/main/java/com/yahoo/search/query/QueryTree.java
+++ b/container-search/src/main/java/com/yahoo/search/query/QueryTree.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query;
import com.yahoo.prelude.query.*;
diff --git a/container-search/src/main/java/com/yahoo/search/query/Ranking.java b/container-search/src/main/java/com/yahoo/search/query/Ranking.java
index 0aa3f12ca68..ee61a151f66 100644
--- a/container-search/src/main/java/com/yahoo/search/query/Ranking.java
+++ b/container-search/src/main/java/com/yahoo/search/query/Ranking.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query;
import com.yahoo.prelude.Freshness;
diff --git a/container-search/src/main/java/com/yahoo/search/query/Select.java b/container-search/src/main/java/com/yahoo/search/query/Select.java
index a7e491f5269..c0ac0758574 100644
--- a/container-search/src/main/java/com/yahoo/search/query/Select.java
+++ b/container-search/src/main/java/com/yahoo/search/query/Select.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query;
import com.yahoo.search.Query;
diff --git a/container-search/src/main/java/com/yahoo/search/query/SelectParser.java b/container-search/src/main/java/com/yahoo/search/query/SelectParser.java
index f94c6300e83..1805a11ff5e 100644
--- a/container-search/src/main/java/com/yahoo/search/query/SelectParser.java
+++ b/container-search/src/main/java/com/yahoo/search/query/SelectParser.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query;
import com.google.common.base.Preconditions;
diff --git a/container-search/src/main/java/com/yahoo/search/query/SessionId.java b/container-search/src/main/java/com/yahoo/search/query/SessionId.java
index 38b69b1a1f8..ec8040cdccb 100644
--- a/container-search/src/main/java/com/yahoo/search/query/SessionId.java
+++ b/container-search/src/main/java/com/yahoo/search/query/SessionId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query;
import com.yahoo.text.Utf8String;
diff --git a/container-search/src/main/java/com/yahoo/search/query/Sorting.java b/container-search/src/main/java/com/yahoo/search/query/Sorting.java
index 0a0ae65d524..a98ee44cb59 100644
--- a/container-search/src/main/java/com/yahoo/search/query/Sorting.java
+++ b/container-search/src/main/java/com/yahoo/search/query/Sorting.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query;
import com.ibm.icu.text.Collator;
diff --git a/container-search/src/main/java/com/yahoo/search/query/UniqueRequestId.java b/container-search/src/main/java/com/yahoo/search/query/UniqueRequestId.java
index f57a5f4ab1e..bd5d7f2fb2e 100644
--- a/container-search/src/main/java/com/yahoo/search/query/UniqueRequestId.java
+++ b/container-search/src/main/java/com/yahoo/search/query/UniqueRequestId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query;
import java.util.concurrent.atomic.AtomicLong;
diff --git a/container-search/src/main/java/com/yahoo/search/query/context/QueryContext.java b/container-search/src/main/java/com/yahoo/search/query/context/QueryContext.java
index 4fb9e1e9afa..38f76c6ca49 100644
--- a/container-search/src/main/java/com/yahoo/search/query/context/QueryContext.java
+++ b/container-search/src/main/java/com/yahoo/search/query/context/QueryContext.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.context;
import com.yahoo.processing.execution.Execution;
diff --git a/container-search/src/main/java/com/yahoo/search/query/context/package-info.java b/container-search/src/main/java/com/yahoo/search/query/context/package-info.java
index 4e416408432..cf2516742ea 100644
--- a/container-search/src/main/java/com/yahoo/search/query/context/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/query/context/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.search.query.context;
diff --git a/container-search/src/main/java/com/yahoo/search/query/package-info.java b/container-search/src/main/java/com/yahoo/search/query/package-info.java
index 9a33886edb2..17943c3017f 100644
--- a/container-search/src/main/java/com/yahoo/search/query/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/query/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* The search query model
*/
diff --git a/container-search/src/main/java/com/yahoo/search/query/parser/Parsable.java b/container-search/src/main/java/com/yahoo/search/query/parser/Parsable.java
index 64fb201fe21..76c9778f8e8 100644
--- a/container-search/src/main/java/com/yahoo/search/query/parser/Parsable.java
+++ b/container-search/src/main/java/com/yahoo/search/query/parser/Parsable.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.parser;
import com.yahoo.language.Language;
diff --git a/container-search/src/main/java/com/yahoo/search/query/parser/Parser.java b/container-search/src/main/java/com/yahoo/search/query/parser/Parser.java
index b3d79f65df4..545d38bf25d 100644
--- a/container-search/src/main/java/com/yahoo/search/query/parser/Parser.java
+++ b/container-search/src/main/java/com/yahoo/search/query/parser/Parser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.parser;
import com.yahoo.search.query.QueryTree;
diff --git a/container-search/src/main/java/com/yahoo/search/query/parser/ParserEnvironment.java b/container-search/src/main/java/com/yahoo/search/query/parser/ParserEnvironment.java
index df96d314455..db0fd8290ff 100644
--- a/container-search/src/main/java/com/yahoo/search/query/parser/ParserEnvironment.java
+++ b/container-search/src/main/java/com/yahoo/search/query/parser/ParserEnvironment.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.parser;
import com.yahoo.language.Linguistics;
diff --git a/container-search/src/main/java/com/yahoo/search/query/parser/ParserFactory.java b/container-search/src/main/java/com/yahoo/search/query/parser/ParserFactory.java
index 4269f5e1c57..a64af7658cc 100644
--- a/container-search/src/main/java/com/yahoo/search/query/parser/ParserFactory.java
+++ b/container-search/src/main/java/com/yahoo/search/query/parser/ParserFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.parser;
import com.yahoo.prelude.query.parser.*;
diff --git a/container-search/src/main/java/com/yahoo/search/query/parser/package-info.java b/container-search/src/main/java/com/yahoo/search/query/parser/package-info.java
index a5a1aa07b6b..1931cc98228 100644
--- a/container-search/src/main/java/com/yahoo/search/query/parser/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/query/parser/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Provides access to parsing query strings into queries
*/
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/AllValuesQueryProfileVisitor.java b/container-search/src/main/java/com/yahoo/search/query/profile/AllValuesQueryProfileVisitor.java
index b24bf1195eb..52cde718563 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/AllValuesQueryProfileVisitor.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/AllValuesQueryProfileVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile;
import com.yahoo.processing.request.CompoundName;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/BackedOverridableQueryProfile.java b/container-search/src/main/java/com/yahoo/search/query/profile/BackedOverridableQueryProfile.java
index 9eab6629a45..08bdca78ee6 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/BackedOverridableQueryProfile.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/BackedOverridableQueryProfile.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile;
import com.yahoo.processing.request.CompoundName;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/CompoundNameChildCache.java b/container-search/src/main/java/com/yahoo/search/query/profile/CompoundNameChildCache.java
index 4163e45ae61..2e9002b5baa 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/CompoundNameChildCache.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/CompoundNameChildCache.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile;
import com.yahoo.processing.request.CompoundName;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/CopyOnWriteContent.java b/container-search/src/main/java/com/yahoo/search/query/profile/CopyOnWriteContent.java
index f75260bae3c..362ab4af160 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/CopyOnWriteContent.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/CopyOnWriteContent.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile;
import com.yahoo.component.provider.FreezableClass;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/DimensionBinding.java b/container-search/src/main/java/com/yahoo/search/query/profile/DimensionBinding.java
index 43462e8f327..bfd62032d82 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/DimensionBinding.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/DimensionBinding.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile;
import java.util.ArrayList;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/DimensionValues.java b/container-search/src/main/java/com/yahoo/search/query/profile/DimensionValues.java
index f3c4548c491..db330956774 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/DimensionValues.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/DimensionValues.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile;
import java.util.Arrays;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/DumpTool.java b/container-search/src/main/java/com/yahoo/search/query/profile/DumpTool.java
index 572a78addd2..280c554604c 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/DumpTool.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/DumpTool.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile;
import java.io.File;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/FieldDescriptionQueryProfileVisitor.java b/container-search/src/main/java/com/yahoo/search/query/profile/FieldDescriptionQueryProfileVisitor.java
index 1d0bd2dbf53..8a73b6fd9a6 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/FieldDescriptionQueryProfileVisitor.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/FieldDescriptionQueryProfileVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile;
import com.yahoo.search.query.profile.types.FieldDescription;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/ModelObjectMap.java b/container-search/src/main/java/com/yahoo/search/query/profile/ModelObjectMap.java
index e32d2dc226d..fa2304fa01e 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/ModelObjectMap.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/ModelObjectMap.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile;
import com.yahoo.processing.request.CompoundName;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/OverridableQueryProfile.java b/container-search/src/main/java/com/yahoo/search/query/profile/OverridableQueryProfile.java
index 37940b813dc..b8de533dfbe 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/OverridableQueryProfile.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/OverridableQueryProfile.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/PrefixQueryProfileVisitor.java b/container-search/src/main/java/com/yahoo/search/query/profile/PrefixQueryProfileVisitor.java
index b53fc4f96f2..b7cb8669a18 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/PrefixQueryProfileVisitor.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/PrefixQueryProfileVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile;
import com.yahoo.processing.request.CompoundName;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfile.java b/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfile.java
index d3da2fd076a..ee7d44f457f 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfile.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfile.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile;
import com.google.common.collect.ImmutableList;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileCompiler.java b/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileCompiler.java
index 29a997a75dd..367acab8682 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileCompiler.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileCompiler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile;
import com.yahoo.processing.request.CompoundName;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileProperties.java b/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileProperties.java
index 34fe376150d..90d9eab687d 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileProperties.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileProperties.java
@@ -1,15 +1,16 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile;
import com.yahoo.collections.Pair;
+import com.yahoo.language.process.Embedder;
import com.yahoo.processing.IllegalInputException;
import com.yahoo.processing.request.CompoundName;
import com.yahoo.processing.request.properties.PropertyMap;
import com.yahoo.protect.Validator;
-import com.yahoo.search.Query;
import com.yahoo.search.query.Properties;
import com.yahoo.search.query.profile.compiled.CompiledQueryProfile;
import com.yahoo.search.query.profile.compiled.DimensionalValue;
+import com.yahoo.search.query.profile.types.ConversionContext;
import com.yahoo.search.query.profile.types.FieldDescription;
import com.yahoo.search.query.profile.types.QueryProfileFieldType;
import com.yahoo.search.query.profile.types.QueryProfileType;
@@ -29,6 +30,7 @@ import java.util.Map;
public class QueryProfileProperties extends Properties {
private final CompiledQueryProfile profile;
+ private final Embedder embedder;
// Note: The priority order is: values has precedence over references
@@ -42,10 +44,15 @@ public class QueryProfileProperties extends Properties {
*/
private List<Pair<CompoundName, CompiledQueryProfile>> references = null;
- /** Creates an instance from a profile, throws an exception if the given profile is null */
public QueryProfileProperties(CompiledQueryProfile profile) {
+ this(profile, Embedder.throwsOnUse);
+ }
+
+ /** Creates an instance from a profile, throws an exception if the given profile is null */
+ public QueryProfileProperties(CompiledQueryProfile profile, Embedder embedder) {
Validator.ensureNotNull("The profile wrapped by this cannot be null", profile);
this.profile = profile;
+ this.embedder = embedder;
}
/** Returns the query profile backing this, or null if none */
@@ -114,7 +121,10 @@ public class QueryProfileProperties extends Properties {
if (fieldDescription != null) {
if (i == name.size() - 1) { // at the end of the path, check the assignment type
- value = fieldDescription.getType().convertFrom(value, profile.getRegistry());
+ value = fieldDescription.getType().convertFrom(value, new ConversionContext(localName,
+ profile.getRegistry(),
+ embedder,
+ context));
if (value == null)
throw new IllegalInputException("'" + value + "' is not a " +
fieldDescription.getType().toInstanceDescription());
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileRegistry.java b/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileRegistry.java
index eb7a6d19d91..83b3cd8c4d0 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileRegistry.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileRegistry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile;
import com.yahoo.component.ComponentSpecification;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileVariant.java b/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileVariant.java
index 855befad658..7fc8bfd40ab 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileVariant.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileVariant.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile;
import com.google.common.collect.ImmutableList;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileVariants.java b/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileVariants.java
index 431947b0816..5be0fc9ea10 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileVariants.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileVariants.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile;
import com.google.common.collect.ImmutableList;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileVisitor.java b/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileVisitor.java
index f6ffeb777a5..8b83c3ff707 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileVisitor.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/SingleValueQueryProfileVisitor.java b/container-search/src/main/java/com/yahoo/search/query/profile/SingleValueQueryProfileVisitor.java
index a0734f56e9a..ccb6de5f533 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/SingleValueQueryProfileVisitor.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/SingleValueQueryProfileVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/SubstituteString.java b/container-search/src/main/java/com/yahoo/search/query/profile/SubstituteString.java
index 446bb250856..2a3feb084db 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/SubstituteString.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/SubstituteString.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile;
import com.yahoo.processing.request.Properties;
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 46430a3041a..99c3477274d 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
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.compiled;
import com.yahoo.search.query.profile.DimensionBinding;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfile.java b/container-search/src/main/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfile.java
index 2439908183c..a600389f4d5 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfile.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfile.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.compiled;
import com.yahoo.component.AbstractComponent;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfileRegistry.java b/container-search/src/main/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfileRegistry.java
index 744c6eb6933..fb1552e549b 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfileRegistry.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfileRegistry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.compiled;
import com.google.inject.Inject;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/compiled/DimensionalMap.java b/container-search/src/main/java/com/yahoo/search/query/profile/compiled/DimensionalMap.java
index 6dc5f61c1f6..88e56167912 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/compiled/DimensionalMap.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/compiled/DimensionalMap.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.compiled;
import com.google.common.collect.ImmutableMap;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/compiled/DimensionalValue.java b/container-search/src/main/java/com/yahoo/search/query/profile/compiled/DimensionalValue.java
index afe07b09d41..7ad9ab2f744 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/compiled/DimensionalValue.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/compiled/DimensionalValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.compiled;
import com.yahoo.processing.request.CompoundName;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/compiled/package-info.java b/container-search/src/main/java/com/yahoo/search/query/profile/compiled/package-info.java
index e7fa3b19595..bec73f19cab 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/compiled/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/compiled/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Query Profiles provide nested sets of named (and optionally typed) key-values which can be referenced in a Query
* to proviode initial values of Query properties. Values in nested query profiles can be looked up from
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/config/QueryProfileConfigurer.java b/container-search/src/main/java/com/yahoo/search/query/profile/config/QueryProfileConfigurer.java
index 423348454d0..f840885f2e4 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/config/QueryProfileConfigurer.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/config/QueryProfileConfigurer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.config;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/config/QueryProfileXMLReader.java b/container-search/src/main/java/com/yahoo/search/query/profile/config/QueryProfileXMLReader.java
index a64f2087d1f..555d3a8e6b7 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/config/QueryProfileXMLReader.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/config/QueryProfileXMLReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.config;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/config/package-info.java b/container-search/src/main/java/com/yahoo/search/query/profile/config/package-info.java
index 57d345e882f..0d7acdf6bdc 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/config/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/config/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.search.query.profile.config;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/package-info.java b/container-search/src/main/java/com/yahoo/search/query/profile/package-info.java
index 169a80ceb14..e86c6b125e8 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Query Profiles provide nested sets of named (and optionally typed) key-values which can be referenced in a Query
* to proviode initial values of Query properties. Values in nested query profiles can be looked up from
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/types/ConversionContext.java b/container-search/src/main/java/com/yahoo/search/query/profile/types/ConversionContext.java
new file mode 100644
index 00000000000..8dfb67a9d5f
--- /dev/null
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/types/ConversionContext.java
@@ -0,0 +1,46 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.search.query.profile.types;
+
+import com.yahoo.language.Language;
+import com.yahoo.language.process.Embedder;
+import com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry;
+
+import java.util.Map;
+
+/**
+ * @author bratseth
+ */
+public class ConversionContext {
+
+ private final String destination;
+ private final CompiledQueryProfileRegistry registry;
+ private final Embedder embedder;
+ private final Language language;
+
+ public ConversionContext(String destination, CompiledQueryProfileRegistry registry, Embedder embedder,
+ Map<String, String> context) {
+ this.destination = destination;
+ this.registry = registry;
+ this.embedder = embedder;
+ this.language = context.containsKey("language") ? Language.fromLanguageTag(context.get("language"))
+ : Language.UNKNOWN;
+ }
+
+ /** Returns the local name of the field which will receive the converted value (or null when this is empty) */
+ public String destination() { return destination; }
+
+ /** Returns the profile registry, or null if none */
+ CompiledQueryProfileRegistry registry() {return registry;}
+
+ /** Returns the configured embedder, never null */
+ Embedder embedder() { return embedder; }
+
+ /** Returns the language, which is never null but may be UNKNOWN */
+ Language language() { return language; }
+
+ /** Returns an empty context */
+ public static ConversionContext empty() {
+ return new ConversionContext(null, null, Embedder.throwsOnUse, Map.of());
+ }
+
+}
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/types/FieldDescription.java b/container-search/src/main/java/com/yahoo/search/query/profile/types/FieldDescription.java
index daab5f6a378..1d6f584bfaa 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/types/FieldDescription.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/types/FieldDescription.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.types;
import com.google.common.collect.ImmutableList;
@@ -33,7 +33,7 @@ public class FieldDescription implements Comparable<FieldDescription> {
}
public FieldDescription(String name, String type) {
- this(name,FieldType.fromString(type,null));
+ this(name,FieldType.fromString(type, null));
}
public FieldDescription(String name, FieldType type, boolean mandatory) {
@@ -60,7 +60,7 @@ public class FieldDescription implements Comparable<FieldDescription> {
* @param overridable whether this can be overridden when first set in a profile. Default: true
*/
public FieldDescription(String name, String typeString, String aliases, boolean mandatory, boolean overridable) {
- this(name,FieldType.fromString(typeString,null),aliases,mandatory,overridable);
+ this(name,FieldType.fromString(typeString, null), aliases, mandatory, overridable);
}
public FieldDescription(String name, FieldType type, boolean mandatory, boolean overridable) {
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/types/FieldType.java b/container-search/src/main/java/com/yahoo/search/query/profile/types/FieldType.java
index 3bfd33668e6..518731b7e74 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/types/FieldType.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/types/FieldType.java
@@ -1,9 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.types;
import com.yahoo.search.query.profile.QueryProfile;
import com.yahoo.search.query.profile.QueryProfileRegistry;
-import com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry;
import com.yahoo.search.yql.YqlQuery;
import com.yahoo.tensor.Tensor;
import com.yahoo.tensor.TensorType;
@@ -41,7 +40,7 @@ public abstract class FieldType {
public abstract Object convertFrom(Object o, QueryProfileRegistry registry);
/** Converts the given type to an instance of this type, if possible. Returns null if not possible. */
- public abstract Object convertFrom(Object o, CompiledQueryProfileRegistry registry);
+ public abstract Object convertFrom(Object o, ConversionContext context);
/**
* Returns this type as a tensor type: The true tensor type is this is a tensor field an an empty type -
@@ -77,7 +76,7 @@ public abstract class FieldType {
if ("query-profile".equals(typeString))
return genericQueryProfileType;
if (typeString.startsWith("query-profile:"))
- return QueryProfileFieldType.fromString(typeString.substring("query-profile:".length()),registry);
+ return QueryProfileFieldType.fromString(typeString.substring("query-profile:".length()), registry);
throw new IllegalArgumentException("Unknown type '" + typeString + "'");
}
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/types/PrimitiveFieldType.java b/container-search/src/main/java/com/yahoo/search/query/profile/types/PrimitiveFieldType.java
index 1e904e4f970..564f90be422 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/types/PrimitiveFieldType.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/types/PrimitiveFieldType.java
@@ -1,8 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.types;
import com.yahoo.search.query.profile.QueryProfileRegistry;
-import com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry;
import static com.yahoo.text.Lowercase.toLowerCase;
@@ -37,7 +36,7 @@ public class PrimitiveFieldType extends FieldType {
}
@Override
- public Object convertFrom(Object object, CompiledQueryProfileRegistry registry) {
+ public Object convertFrom(Object object, ConversionContext context) {
return convertFrom(object, (QueryProfileRegistry)null);
}
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/types/QueryFieldType.java b/container-search/src/main/java/com/yahoo/search/query/profile/types/QueryFieldType.java
index 1797a2bd59f..00629c8373e 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/types/QueryFieldType.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/types/QueryFieldType.java
@@ -1,8 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.types;
import com.yahoo.search.query.profile.QueryProfileRegistry;
-import com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry;
import com.yahoo.search.yql.YqlQuery;
/**
@@ -32,7 +31,7 @@ public class QueryFieldType extends FieldType {
}
@Override
- public Object convertFrom(Object o, CompiledQueryProfileRegistry registry) {
+ public Object convertFrom(Object o, ConversionContext context) {
return convertFrom(o, (QueryProfileRegistry)null);
}
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileFieldType.java b/container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileFieldType.java
index fda2d27e682..c6ac2a0842e 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileFieldType.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileFieldType.java
@@ -1,10 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.types;
import com.yahoo.search.query.profile.QueryProfile;
import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.search.query.profile.compiled.CompiledQueryProfile;
-import com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry;
/**
* Represents a query profile field type which is a reference to a query profile.
@@ -57,11 +56,11 @@ public class QueryProfileFieldType extends FieldType {
}
@Override
- public CompiledQueryProfile convertFrom(Object object, CompiledQueryProfileRegistry registry) {
+ public CompiledQueryProfile convertFrom(Object object, ConversionContext context) {
String profileId = object.toString();
if (profileId.startsWith("ref:"))
profileId = profileId.substring("ref:".length());
- CompiledQueryProfile profile = registry.getComponent(profileId);
+ CompiledQueryProfile profile = context.registry().getComponent(profileId);
if (profile == null) return null;
if (type != null && ! type.equals(profile.getType())) return null;
return profile;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileType.java b/container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileType.java
index e4396894595..c9fcb854771 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileType.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.types;
import com.google.common.collect.ImmutableList;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileTypeRegistry.java b/container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileTypeRegistry.java
index b76ae88ede1..58a1ae7ad14 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileTypeRegistry.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/types/QueryProfileTypeRegistry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.types;
import com.yahoo.component.provider.ComponentRegistry;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/types/TensorFieldType.java b/container-search/src/main/java/com/yahoo/search/query/profile/types/TensorFieldType.java
index 9699a72cb31..d6676db3774 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/types/TensorFieldType.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/types/TensorFieldType.java
@@ -1,8 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.types;
+import com.yahoo.language.process.Embedder;
import com.yahoo.search.query.profile.QueryProfileRegistry;
-import com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry;
import com.yahoo.tensor.Tensor;
import com.yahoo.tensor.TensorType;
@@ -38,14 +38,26 @@ public class TensorFieldType extends FieldType {
@Override
public Object convertFrom(Object o, QueryProfileRegistry registry) {
+ return convertFrom(o, ConversionContext.empty());
+ }
+
+ @Override
+ public Object convertFrom(Object o, ConversionContext context) {
if (o instanceof Tensor) return o;
+ if (o instanceof String && ((String)o).startsWith("embed(")) return encode((String)o, context);
if (o instanceof String) return Tensor.from(type, (String)o);
return null;
}
- @Override
- public Object convertFrom(Object o, CompiledQueryProfileRegistry registry) {
- return convertFrom(o, (QueryProfileRegistry)null);
+ private Tensor encode(String s, ConversionContext context) {
+ if ( ! s.endsWith(")"))
+ throw new IllegalArgumentException("Expected any string enclosed in embed(), but the argument does not end by ')'");
+ String text = s.substring("embed(".length(), s.length() - 1);
+ return context.embedder().embed(text, toEmbedderContext(context), type);
+ }
+
+ private Embedder.Context toEmbedderContext(ConversionContext context) {
+ return new Embedder.Context(context.destination()).setLanguage(context.language());
}
public static TensorFieldType fromTypeString(String s) {
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/types/package-info.java b/container-search/src/main/java/com/yahoo/search/query/profile/types/package-info.java
index eeee602c202..a9356aae619 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/types/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/types/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Query profile types defines the set of fields a query profile may, can or must have. Query profile
* types may be inherited in a type hierarchy.
diff --git a/container-search/src/main/java/com/yahoo/search/query/properties/CloneHelper.java b/container-search/src/main/java/com/yahoo/search/query/properties/CloneHelper.java
index dfcd92a441d..b2cd3a7e39a 100644
--- a/container-search/src/main/java/com/yahoo/search/query/properties/CloneHelper.java
+++ b/container-search/src/main/java/com/yahoo/search/query/properties/CloneHelper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.properties;
import com.yahoo.search.result.Hit;
diff --git a/container-search/src/main/java/com/yahoo/search/query/properties/DefaultProperties.java b/container-search/src/main/java/com/yahoo/search/query/properties/DefaultProperties.java
index 4611d375597..b38e3070e28 100644
--- a/container-search/src/main/java/com/yahoo/search/query/properties/DefaultProperties.java
+++ b/container-search/src/main/java/com/yahoo/search/query/properties/DefaultProperties.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.properties;
import com.yahoo.processing.request.CompoundName;
diff --git a/container-search/src/main/java/com/yahoo/search/query/properties/PropertyAliases.java b/container-search/src/main/java/com/yahoo/search/query/properties/PropertyAliases.java
index 83e8dd530ad..87f39b88981 100644
--- a/container-search/src/main/java/com/yahoo/search/query/properties/PropertyAliases.java
+++ b/container-search/src/main/java/com/yahoo/search/query/properties/PropertyAliases.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.properties;
import com.yahoo.processing.request.CompoundName;
diff --git a/container-search/src/main/java/com/yahoo/search/query/properties/PropertyMap.java b/container-search/src/main/java/com/yahoo/search/query/properties/PropertyMap.java
index 643e215daef..72388f77173 100644
--- a/container-search/src/main/java/com/yahoo/search/query/properties/PropertyMap.java
+++ b/container-search/src/main/java/com/yahoo/search/query/properties/PropertyMap.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.properties;
import com.yahoo.processing.request.*;
import com.yahoo.search.query.Properties;
diff --git a/container-search/src/main/java/com/yahoo/search/query/properties/QueryProperties.java b/container-search/src/main/java/com/yahoo/search/query/properties/QueryProperties.java
index 4c65e8003e5..9a09c23b23b 100644
--- a/container-search/src/main/java/com/yahoo/search/query/properties/QueryProperties.java
+++ b/container-search/src/main/java/com/yahoo/search/query/properties/QueryProperties.java
@@ -1,6 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.properties;
+import com.yahoo.language.process.Embedder;
import com.yahoo.processing.IllegalInputException;
import com.yahoo.processing.request.CompoundName;
import com.yahoo.search.Query;
@@ -11,6 +12,7 @@ import com.yahoo.search.query.Properties;
import com.yahoo.search.query.Ranking;
import com.yahoo.search.query.Select;
import com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry;
+import com.yahoo.search.query.profile.types.ConversionContext;
import com.yahoo.search.query.profile.types.FieldDescription;
import com.yahoo.search.query.profile.types.QueryProfileType;
import com.yahoo.search.query.ranking.Diversity;
@@ -32,10 +34,12 @@ public class QueryProperties extends Properties {
private Query query;
private final CompiledQueryProfileRegistry profileRegistry;
+ private final Embedder embedder;
- public QueryProperties(Query query, CompiledQueryProfileRegistry profileRegistry) {
+ public QueryProperties(Query query, CompiledQueryProfileRegistry profileRegistry, Embedder embedder) {
this.query = query;
this.profileRegistry = profileRegistry;
+ this.embedder = embedder;
}
public void setParentQuery(Query query) {
@@ -256,9 +260,15 @@ public class QueryProperties extends Properties {
else if (key.size() > 2) {
String restKey = key.rest().rest().toString();
if (key.get(1).equals(Ranking.FEATURES))
- setRankingFeature(query, restKey, toSpecifiedType(restKey, value, profileRegistry.getTypeRegistry().getComponent("features")));
+ setRankingFeature(query, restKey, toSpecifiedType(restKey,
+ value,
+ profileRegistry.getTypeRegistry().getComponent("features"),
+ context));
else if (key.get(1).equals(Ranking.PROPERTIES))
- ranking.getProperties().put(restKey, toSpecifiedType(restKey, value, profileRegistry.getTypeRegistry().getComponent("properties")));
+ ranking.getProperties().put(restKey, toSpecifiedType(restKey,
+ value,
+ profileRegistry.getTypeRegistry().getComponent("properties"),
+ context));
else
throwIllegalParameter(key.rest().toString(), Ranking.RANKING);
}
@@ -294,9 +304,15 @@ public class QueryProperties extends Properties {
}
}
else if (key.first().equals("rankfeature") || key.first().equals("featureoverride") ) { // featureoverride is deprecated
- setRankingFeature(query, key.rest().toString(), toSpecifiedType(key.rest().toString(), value, profileRegistry.getTypeRegistry().getComponent("features")));
+ setRankingFeature(query, key.rest().toString(), toSpecifiedType(key.rest().toString(),
+ value,
+ profileRegistry.getTypeRegistry().getComponent("features"),
+ context));
} else if (key.first().equals("rankproperty")) {
- query.getRanking().getProperties().put(key.rest().toString(), toSpecifiedType(key.rest().toString(), value, profileRegistry.getTypeRegistry().getComponent("properties")));
+ query.getRanking().getProperties().put(key.rest().toString(), toSpecifiedType(key.rest().toString(),
+ value,
+ profileRegistry.getTypeRegistry().getComponent("properties"),
+ context));
} else if (key.size()==1) {
if (key.equals(Query.HITS))
query.setHits(asInteger(value,10));
@@ -359,12 +375,12 @@ public class QueryProperties extends Properties {
}
}
- private Object toSpecifiedType(String key, Object value, QueryProfileType type) {
+ private Object toSpecifiedType(String key, Object value, QueryProfileType type, Map<String,String> context) {
if ( ! ( value instanceof String)) return value; // already typed
if (type == null) return value; // no type info -> keep as string
FieldDescription field = type.getField(key);
if (field == null) return value; // ditto
- return field.getType().convertFrom(value, profileRegistry);
+ return field.getType().convertFrom(value, new ConversionContext(key, profileRegistry, embedder, context));
}
private void throwIllegalParameter(String key,String namespace) {
diff --git a/container-search/src/main/java/com/yahoo/search/query/properties/QueryPropertyAliases.java b/container-search/src/main/java/com/yahoo/search/query/properties/QueryPropertyAliases.java
index 51151bdfbe6..14f06bce6e6 100644
--- a/container-search/src/main/java/com/yahoo/search/query/properties/QueryPropertyAliases.java
+++ b/container-search/src/main/java/com/yahoo/search/query/properties/QueryPropertyAliases.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.properties;
import com.yahoo.processing.request.CompoundName;
diff --git a/container-search/src/main/java/com/yahoo/search/query/properties/RequestContextProperties.java b/container-search/src/main/java/com/yahoo/search/query/properties/RequestContextProperties.java
index 6cf27fc9a3e..06d827faf68 100644
--- a/container-search/src/main/java/com/yahoo/search/query/properties/RequestContextProperties.java
+++ b/container-search/src/main/java/com/yahoo/search/query/properties/RequestContextProperties.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.properties;
import com.yahoo.processing.request.CompoundName;
diff --git a/container-search/src/main/java/com/yahoo/search/query/properties/SubProperties.java b/container-search/src/main/java/com/yahoo/search/query/properties/SubProperties.java
index 9b40cff290f..42fb4e44040 100644
--- a/container-search/src/main/java/com/yahoo/search/query/properties/SubProperties.java
+++ b/container-search/src/main/java/com/yahoo/search/query/properties/SubProperties.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.properties;
import com.yahoo.processing.request.CompoundName;
diff --git a/container-search/src/main/java/com/yahoo/search/query/properties/package-info.java b/container-search/src/main/java/com/yahoo/search/query/properties/package-info.java
index 07e771a6cf8..769a6b15e48 100644
--- a/container-search/src/main/java/com/yahoo/search/query/properties/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/query/properties/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.search.query.properties;
diff --git a/container-search/src/main/java/com/yahoo/search/query/ranking/Diversity.java b/container-search/src/main/java/com/yahoo/search/query/ranking/Diversity.java
index 83b35c60f15..15f459bc6d1 100644
--- a/container-search/src/main/java/com/yahoo/search/query/ranking/Diversity.java
+++ b/container-search/src/main/java/com/yahoo/search/query/ranking/Diversity.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.ranking;
import com.yahoo.search.query.Ranking;
diff --git a/container-search/src/main/java/com/yahoo/search/query/ranking/MatchPhase.java b/container-search/src/main/java/com/yahoo/search/query/ranking/MatchPhase.java
index 72a6533e946..950e86aca77 100644
--- a/container-search/src/main/java/com/yahoo/search/query/ranking/MatchPhase.java
+++ b/container-search/src/main/java/com/yahoo/search/query/ranking/MatchPhase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.ranking;
import com.yahoo.processing.IllegalInputException;
diff --git a/container-search/src/main/java/com/yahoo/search/query/ranking/Matching.java b/container-search/src/main/java/com/yahoo/search/query/ranking/Matching.java
index 14e4e006b39..38dcdfae9fb 100644
--- a/container-search/src/main/java/com/yahoo/search/query/ranking/Matching.java
+++ b/container-search/src/main/java/com/yahoo/search/query/ranking/Matching.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.ranking;
import com.yahoo.processing.IllegalInputException;
diff --git a/container-search/src/main/java/com/yahoo/search/query/ranking/RankFeatures.java b/container-search/src/main/java/com/yahoo/search/query/ranking/RankFeatures.java
index 88ff7188cb4..7d43c09f6fb 100644
--- a/container-search/src/main/java/com/yahoo/search/query/ranking/RankFeatures.java
+++ b/container-search/src/main/java/com/yahoo/search/query/ranking/RankFeatures.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.ranking;
import com.yahoo.fs4.MapEncoder;
diff --git a/container-search/src/main/java/com/yahoo/search/query/ranking/RankProperties.java b/container-search/src/main/java/com/yahoo/search/query/ranking/RankProperties.java
index 37a54a82c43..2c16c56db3a 100644
--- a/container-search/src/main/java/com/yahoo/search/query/ranking/RankProperties.java
+++ b/container-search/src/main/java/com/yahoo/search/query/ranking/RankProperties.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.ranking;
import com.yahoo.fs4.GetDocSumsPacket;
diff --git a/container-search/src/main/java/com/yahoo/search/query/ranking/SoftTimeout.java b/container-search/src/main/java/com/yahoo/search/query/ranking/SoftTimeout.java
index 43c26692221..30ee2f473b7 100644
--- a/container-search/src/main/java/com/yahoo/search/query/ranking/SoftTimeout.java
+++ b/container-search/src/main/java/com/yahoo/search/query/ranking/SoftTimeout.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.ranking;
import com.yahoo.processing.IllegalInputException;
diff --git a/container-search/src/main/java/com/yahoo/search/query/ranking/package-info.java b/container-search/src/main/java/com/yahoo/search/query/ranking/package-info.java
index 5b736f8ab5f..dcd9952e070 100644
--- a/container-search/src/main/java/com/yahoo/search/query/ranking/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/query/ranking/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.search.query.ranking;
diff --git a/container-search/src/main/java/com/yahoo/search/query/rewrite/QueryRewriteSearcher.java b/container-search/src/main/java/com/yahoo/search/query/rewrite/QueryRewriteSearcher.java
index 7b24a00cf60..76462559c87 100644
--- a/container-search/src/main/java/com/yahoo/search/query/rewrite/QueryRewriteSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/query/rewrite/QueryRewriteSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.rewrite;
import com.google.inject.Inject;
diff --git a/container-search/src/main/java/com/yahoo/search/query/rewrite/RewriterConstants.java b/container-search/src/main/java/com/yahoo/search/query/rewrite/RewriterConstants.java
index 812eb4da21d..b0fce45de46 100644
--- a/container-search/src/main/java/com/yahoo/search/query/rewrite/RewriterConstants.java
+++ b/container-search/src/main/java/com/yahoo/search/query/rewrite/RewriterConstants.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.rewrite;
import com.yahoo.processing.request.CompoundName;
diff --git a/container-search/src/main/java/com/yahoo/search/query/rewrite/RewriterFeatures.java b/container-search/src/main/java/com/yahoo/search/query/rewrite/RewriterFeatures.java
index 2b3780f727c..bb5792d81b7 100644
--- a/container-search/src/main/java/com/yahoo/search/query/rewrite/RewriterFeatures.java
+++ b/container-search/src/main/java/com/yahoo/search/query/rewrite/RewriterFeatures.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.rewrite;
import java.util.*;
diff --git a/container-search/src/main/java/com/yahoo/search/query/rewrite/RewriterUtils.java b/container-search/src/main/java/com/yahoo/search/query/rewrite/RewriterUtils.java
index af73e905f20..eee577bd9a4 100644
--- a/container-search/src/main/java/com/yahoo/search/query/rewrite/RewriterUtils.java
+++ b/container-search/src/main/java/com/yahoo/search/query/rewrite/RewriterUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.rewrite;
import com.yahoo.fsa.FSA;
diff --git a/container-search/src/main/java/com/yahoo/search/query/rewrite/SearchChainDispatcherSearcher.java b/container-search/src/main/java/com/yahoo/search/query/rewrite/SearchChainDispatcherSearcher.java
index 23285a9277b..630a0013fda 100644
--- a/container-search/src/main/java/com/yahoo/search/query/rewrite/SearchChainDispatcherSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/query/rewrite/SearchChainDispatcherSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.rewrite;
import com.yahoo.component.chain.Chain;
diff --git a/container-search/src/main/java/com/yahoo/search/query/rewrite/package-info.java b/container-search/src/main/java/com/yahoo/search/query/rewrite/package-info.java
index e927bfbabe7..d690d37d524 100644
--- a/container-search/src/main/java/com/yahoo/search/query/rewrite/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/query/rewrite/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.search.query.rewrite;
diff --git a/container-search/src/main/java/com/yahoo/search/query/rewrite/rewriters/GenericExpansionRewriter.java b/container-search/src/main/java/com/yahoo/search/query/rewrite/rewriters/GenericExpansionRewriter.java
index 9a2374da4c9..0c2c08d1a1c 100644
--- a/container-search/src/main/java/com/yahoo/search/query/rewrite/rewriters/GenericExpansionRewriter.java
+++ b/container-search/src/main/java/com/yahoo/search/query/rewrite/rewriters/GenericExpansionRewriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.rewrite.rewriters;
import java.io.*;
diff --git a/container-search/src/main/java/com/yahoo/search/query/rewrite/rewriters/MisspellRewriter.java b/container-search/src/main/java/com/yahoo/search/query/rewrite/rewriters/MisspellRewriter.java
index e705de6ce6b..81c4dbc6919 100644
--- a/container-search/src/main/java/com/yahoo/search/query/rewrite/rewriters/MisspellRewriter.java
+++ b/container-search/src/main/java/com/yahoo/search/query/rewrite/rewriters/MisspellRewriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.rewrite.rewriters;
import java.io.*;
diff --git a/container-search/src/main/java/com/yahoo/search/query/rewrite/rewriters/NameRewriter.java b/container-search/src/main/java/com/yahoo/search/query/rewrite/rewriters/NameRewriter.java
index 1a26f2310fa..820b1ab0576 100644
--- a/container-search/src/main/java/com/yahoo/search/query/rewrite/rewriters/NameRewriter.java
+++ b/container-search/src/main/java/com/yahoo/search/query/rewrite/rewriters/NameRewriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.rewrite.rewriters;
import java.io.*;
diff --git a/container-search/src/main/java/com/yahoo/search/query/rewrite/rewriters/package-info.java b/container-search/src/main/java/com/yahoo/search/query/rewrite/rewriters/package-info.java
index c6e79a7b1ba..709bbf977f5 100644
--- a/container-search/src/main/java/com/yahoo/search/query/rewrite/rewriters/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/query/rewrite/rewriters/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.search.query.rewrite.rewriters;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/TextSerialize.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/TextSerialize.java
index 08af2b02dea..3299f0df3bf 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/TextSerialize.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/TextSerialize.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize;
import com.yahoo.prelude.query.Item;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/AndNotRestConverter.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/AndNotRestConverter.java
index 243596f2b2d..b64809e8071 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/AndNotRestConverter.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/AndNotRestConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.item;
import com.yahoo.prelude.query.Item;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/CompositeConverter.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/CompositeConverter.java
index 0a935530a62..bfae2a14174 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/CompositeConverter.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/CompositeConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.item;
import com.yahoo.prelude.query.CompositeItem;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ExactStringConverter.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ExactStringConverter.java
index 4542ac83814..709385b9d9e 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ExactStringConverter.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ExactStringConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.item;
import com.yahoo.prelude.query.ExactStringItem;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/IntConverter.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/IntConverter.java
index 520d6eb7ec5..9495e2c7e94 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/IntConverter.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/IntConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.item;
import com.yahoo.prelude.query.IntItem;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemArguments.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemArguments.java
index 4d998f3553c..5b168d1fff8 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemArguments.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemArguments.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.item;
import java.util.Collections;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemContext.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemContext.java
index b6c886c91d7..e0e80dd79f5 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemContext.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemContext.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.item;
import com.yahoo.prelude.query.Item;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemExecutorRegistry.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemExecutorRegistry.java
index 4f18232df24..d558bb2cce3 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemExecutorRegistry.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemExecutorRegistry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.item;
import com.yahoo.prelude.query.AndItem;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemFormConverter.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemFormConverter.java
index 1c101943326..a3f45e89d52 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemFormConverter.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemFormConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.item;
import com.yahoo.prelude.query.Item;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemFormHandler.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemFormHandler.java
index 34841564c68..dbd5c0a35b4 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemFormHandler.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemFormHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.item;
import com.yahoo.search.query.textserialize.parser.DispatchFormHandler;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemInitializer.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemInitializer.java
index a1a240b9bfb..86aee324d9c 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemInitializer.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemInitializer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.item;
import com.yahoo.prelude.query.IndexedItem;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ListUtil.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ListUtil.java
index 71ac07fe2ea..72b08de8826 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ListUtil.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ListUtil.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.item;
import java.util.*;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/NearConverter.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/NearConverter.java
index d622068b384..cb2959367a5 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/NearConverter.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/NearConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.item;
import com.yahoo.prelude.query.Item;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/PrefixConverter.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/PrefixConverter.java
index bbf87ef8532..410a4283cf7 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/PrefixConverter.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/PrefixConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.item;
import com.yahoo.prelude.query.PrefixItem;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/SubStringConverter.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/SubStringConverter.java
index d7e6aa3900c..f46771f83d6 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/SubStringConverter.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/SubStringConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.item;
import com.yahoo.prelude.query.SubstringItem;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/SuffixConverter.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/SuffixConverter.java
index c2de4772806..d803d958f14 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/SuffixConverter.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/SuffixConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.item;
import com.yahoo.prelude.query.SuffixItem;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/TermConverter.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/TermConverter.java
index 503987af027..29866668e0d 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/TermConverter.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/TermConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.item;
import com.yahoo.prelude.query.Item;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/TypeCheck.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/TypeCheck.java
index 70eba9d8b50..20848d4662c 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/TypeCheck.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/TypeCheck.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.item;
import com.yahoo.protect.Validator;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/WordConverter.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/WordConverter.java
index f37059cfe1d..4c501848453 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/WordConverter.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/WordConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.item;
import com.yahoo.prelude.query.TermItem;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/package-info.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/package-info.java
index 328d07a18c8..f03abe711cc 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.search.query.textserialize;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/parser/DispatchFormHandler.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/parser/DispatchFormHandler.java
index d3d3b030d7a..36cf3e7487e 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/parser/DispatchFormHandler.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/parser/DispatchFormHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.parser;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/serializer/DispatchForm.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/serializer/DispatchForm.java
index 11ec6e4b020..62e94395670 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/serializer/DispatchForm.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/serializer/DispatchForm.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.serializer;
import java.util.ArrayList;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/serializer/ItemIdMapper.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/serializer/ItemIdMapper.java
index df589fcd76a..9194914e959 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/serializer/ItemIdMapper.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/serializer/ItemIdMapper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.serializer;
import com.yahoo.prelude.query.Item;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/serializer/QueryTreeSerializer.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/serializer/QueryTreeSerializer.java
index 7cdeb9f9597..93c54d636b5 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/serializer/QueryTreeSerializer.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/serializer/QueryTreeSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.serializer;
import com.yahoo.prelude.query.Item;
diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/serializer/Serializer.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/serializer/Serializer.java
index d849e744184..0770fc23cd9 100644
--- a/container-search/src/main/java/com/yahoo/search/query/textserialize/serializer/Serializer.java
+++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/serializer/Serializer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.serializer;
import com.yahoo.prelude.query.Item;
diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/AllLowercasingSearcher.java b/container-search/src/main/java/com/yahoo/search/querytransform/AllLowercasingSearcher.java
index a1574368bc6..9f4d302a90f 100644
--- a/container-search/src/main/java/com/yahoo/search/querytransform/AllLowercasingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/querytransform/AllLowercasingSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.querytransform;
import java.util.Collection;
diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/BooleanAttributeParser.java b/container-search/src/main/java/com/yahoo/search/querytransform/BooleanAttributeParser.java
index 532de1270da..4b088d2527a 100644
--- a/container-search/src/main/java/com/yahoo/search/querytransform/BooleanAttributeParser.java
+++ b/container-search/src/main/java/com/yahoo/search/querytransform/BooleanAttributeParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.querytransform;
import com.yahoo.text.PositionedString;
diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/BooleanSearcher.java b/container-search/src/main/java/com/yahoo/search/querytransform/BooleanSearcher.java
index de01773c27c..d3bb1e7a81d 100644
--- a/container-search/src/main/java/com/yahoo/search/querytransform/BooleanSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/querytransform/BooleanSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.querytransform;
import com.yahoo.component.chain.dependencies.After;
diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/DefaultPositionSearcher.java b/container-search/src/main/java/com/yahoo/search/querytransform/DefaultPositionSearcher.java
index 0a89565ed4d..83daf6398c3 100644
--- a/container-search/src/main/java/com/yahoo/search/querytransform/DefaultPositionSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/querytransform/DefaultPositionSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.querytransform;
import static com.yahoo.prelude.searcher.PosSearcher.POSITION_PARSING;
diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/LowercasingSearcher.java b/container-search/src/main/java/com/yahoo/search/querytransform/LowercasingSearcher.java
index 343deef8a55..47fec584153 100644
--- a/container-search/src/main/java/com/yahoo/search/querytransform/LowercasingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/querytransform/LowercasingSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.querytransform;
import com.yahoo.prelude.IndexFacts;
diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/NGramSearcher.java b/container-search/src/main/java/com/yahoo/search/querytransform/NGramSearcher.java
index 90bcebb53ad..afd25132510 100644
--- a/container-search/src/main/java/com/yahoo/search/querytransform/NGramSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/querytransform/NGramSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.querytransform;
import com.yahoo.component.chain.dependencies.After;
diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/QueryTreeUtil.java b/container-search/src/main/java/com/yahoo/search/querytransform/QueryTreeUtil.java
index 759c8ba1ee4..1cf6396468e 100644
--- a/container-search/src/main/java/com/yahoo/search/querytransform/QueryTreeUtil.java
+++ b/container-search/src/main/java/com/yahoo/search/querytransform/QueryTreeUtil.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.querytransform;
import com.yahoo.prelude.query.AndItem;
diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/RangeQueryOptimizer.java b/container-search/src/main/java/com/yahoo/search/querytransform/RangeQueryOptimizer.java
index a61af4231e1..55a9afa5531 100644
--- a/container-search/src/main/java/com/yahoo/search/querytransform/RangeQueryOptimizer.java
+++ b/container-search/src/main/java/com/yahoo/search/querytransform/RangeQueryOptimizer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.querytransform;
import com.yahoo.prelude.query.Limit;
diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/SortingDegrader.java b/container-search/src/main/java/com/yahoo/search/querytransform/SortingDegrader.java
index 58eafef79de..75b06c29193 100644
--- a/container-search/src/main/java/com/yahoo/search/querytransform/SortingDegrader.java
+++ b/container-search/src/main/java/com/yahoo/search/querytransform/SortingDegrader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.querytransform;
import com.yahoo.prelude.Index;
diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/VespaLowercasingSearcher.java b/container-search/src/main/java/com/yahoo/search/querytransform/VespaLowercasingSearcher.java
index 3aa9e59003d..51d06e74184 100644
--- a/container-search/src/main/java/com/yahoo/search/querytransform/VespaLowercasingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/querytransform/VespaLowercasingSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.querytransform;
import static com.yahoo.prelude.querytransform.NormalizingSearcher.ACCENT_REMOVAL;
diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/WandSearcher.java b/container-search/src/main/java/com/yahoo/search/querytransform/WandSearcher.java
index 4745bd23642..89245eaf137 100644
--- a/container-search/src/main/java/com/yahoo/search/querytransform/WandSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/querytransform/WandSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.querytransform;
import com.yahoo.prelude.Index;
diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/WeakAndReplacementSearcher.java b/container-search/src/main/java/com/yahoo/search/querytransform/WeakAndReplacementSearcher.java
index 3a392fcbda4..b47b54bc362 100644
--- a/container-search/src/main/java/com/yahoo/search/querytransform/WeakAndReplacementSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/querytransform/WeakAndReplacementSearcher.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.querytransform;
import com.yahoo.prelude.query.*;
diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/package-info.java b/container-search/src/main/java/com/yahoo/search/querytransform/package-info.java
index a5fc99634e2..9ba4a3f5631 100644
--- a/container-search/src/main/java/com/yahoo/search/querytransform/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/querytransform/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Vespa search platform query transformation infrastructure. Not a public
* API.
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 0a87ad7ec2b..f9a91558254 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
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.rendering;
import com.fasterxml.jackson.core.JsonEncoding;
@@ -45,6 +45,7 @@ import com.yahoo.search.result.Hit;
import com.yahoo.search.result.HitGroup;
import com.yahoo.search.result.NanNumber;
import com.yahoo.tensor.Tensor;
+import com.yahoo.tensor.serialization.JsonFormat;
import java.io.IOException;
import java.io.OutputStream;
@@ -58,7 +59,6 @@ import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.Collections;
import java.util.Deque;
-import java.util.Iterator;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
@@ -76,8 +76,10 @@ import static com.fasterxml.jackson.databind.SerializationFeature.FLUSH_AFTER_WR
// NOTE: The JSON format is a public API. If new elements are added be sure to update the reference doc.
public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
+ private static final CompoundName WRAP_ALL_MAPS = new CompoundName("renderer.json.jsonMaps");
private static final CompoundName DEBUG_RENDERING_KEY = new CompoundName("renderer.json.debug");
private static final CompoundName JSON_CALLBACK = new CompoundName("jsoncallback");
+ private static final CompoundName TENSOR_FORMAT = new CompoundName("format.tensors");
// if this must be optimized, simply use com.fasterxml.jackson.core.SerializableString
private static final String BUCKET_LIMITS = "limits";
@@ -124,9 +126,12 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
private FieldConsumer fieldConsumer;
private Deque<Integer> renderedChildren;
private boolean debugRendering;
+ private boolean jsonMaps;
private LongSupplier timeSource;
private OutputStream stream;
+ private boolean tensorShortFormRendering = false;
+
public JsonRenderer() {
this(null);
}
@@ -156,6 +161,7 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
public void init() {
super.init();
debugRendering = false;
+ jsonMaps = false;
setGenerator(null, debugRendering);
renderedChildren = null;
timeSource = System::currentTimeMillis;
@@ -166,6 +172,8 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
public void beginResponse(OutputStream stream) throws IOException {
beginJsonCallback(stream);
debugRendering = getDebugRendering(getResult().getQuery());
+ jsonMaps = getWrapAllMaps(getResult().getQuery());
+ tensorShortFormRendering = getTensorShortFormRendering(getResult().getQuery());
setGenerator(generatorFactory.createGenerator(stream, JsonEncoding.UTF8), debugRendering);
renderedChildren = new ArrayDeque<>();
generator.writeStartObject();
@@ -196,10 +204,20 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
generator.writeEndObject();
}
+ private boolean getWrapAllMaps(Query q) {
+ return q != null && q.properties().getBoolean(WRAP_ALL_MAPS, false);
+ }
+
private boolean getDebugRendering(Query q) {
return q != null && q.properties().getBoolean(DEBUG_RENDERING_KEY, false);
}
+ private boolean getTensorShortFormRendering(Query q) {
+ if (q == null || q.properties().get(TENSOR_FORMAT) == null)
+ return false;
+ return q.properties().getString(TENSOR_FORMAT).equalsIgnoreCase("short");
+ }
+
protected void renderTrace(Trace trace) throws IOException {
if (!trace.traceNode().children().iterator().hasNext()) return;
if (getResult().getQuery().getTraceLevel() == 0) return;
@@ -285,8 +303,6 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
generator.writeEndObject();
}
generator.writeEndArray();
-
-
}
protected void renderCoverage() throws IOException {
@@ -506,11 +522,15 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
private void setGenerator(JsonGenerator generator, boolean debugRendering) {
this.generator = generator;
- this.fieldConsumer = generator == null ? null : createFieldConsumer(generator, debugRendering);
+ this.fieldConsumer = generator == null ? null : createFieldConsumer(generator, debugRendering, jsonMaps);
}
protected FieldConsumer createFieldConsumer(JsonGenerator generator, boolean debugRendering) {
- return new FieldConsumer(generator, debugRendering);
+ return createFieldConsumer(generator, debugRendering, this.jsonMaps);
+ }
+
+ private FieldConsumer createFieldConsumer(JsonGenerator generator, boolean debugRendering, boolean jsonMaps) {
+ return new FieldConsumer(generator, debugRendering, tensorShortFormRendering, jsonMaps);
}
/**
@@ -529,12 +549,22 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
private final JsonGenerator generator;
private final boolean debugRendering;
+ private final boolean jsonMaps;
+ private final boolean tensorShortForm;
private MutableBoolean hasFieldsField;
public FieldConsumer(JsonGenerator generator, boolean debugRendering) {
+ this(generator, debugRendering, false);
+ }
+ public FieldConsumer(JsonGenerator generator, boolean debugRendering, boolean tensorShortForm) {
+ this(generator, debugRendering, tensorShortForm, false);
+ }
+ public FieldConsumer(JsonGenerator generator, boolean debugRendering, boolean tensorShortForm, boolean jsonMaps) {
this.generator = generator;
this.debugRendering = debugRendering;
+ this.tensorShortForm = tensorShortForm;
+ this.jsonMaps = jsonMaps;
}
/**
@@ -604,6 +634,43 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
return true;
}
+ private static Inspector deepWrapAsMap(Inspector data) {
+ if (data.type() == Type.ARRAY) {
+ var map = new Value.ObjectValue();
+ for (int i = 0; i < data.entryCount(); i++) {
+ Inspector obj = data.entry(i);
+ if (map != null && obj.type() == Type.OBJECT && obj.fieldCount() == 2) {
+ Inspector key = obj.field("key");
+ Inspector value = obj.field("value");
+ if (key.type() == Type.STRING && value.valid()) {
+ map.put(key.asString(), deepWrapAsMap(value));
+ } else {
+ map = null;
+ }
+ } else {
+ map = null;
+ }
+ }
+ if (map != null) {
+ return map;
+ }
+ var array = new Value.ArrayValue();
+ for (int i = 0; i < data.entryCount(); i++) {
+ Inspector obj = data.entry(i);
+ array.add(deepWrapAsMap(obj));
+ }
+ return array;
+ }
+ if (data.type() == Type.OBJECT) {
+ var object = new Value.ObjectValue();
+ for (var entry : data.fields()) {
+ object.put(entry.getKey(), deepWrapAsMap(entry.getValue()));
+ }
+ return object;
+ }
+ return data;
+ }
+
private static Inspector wrapAsMap(Inspector data) {
if (data.type() != Type.ARRAY) return null;
if (data.entryCount() == 0) return null;
@@ -622,11 +689,9 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
}
private void renderInspector(Inspector data) throws IOException {
- Inspector asMap = wrapAsMap(data);
+ Inspector asMap = jsonMaps ? deepWrapAsMap(data) : wrapAsMap(data);
if (asMap != null) {
- StringBuilder intermediate = new StringBuilder();
- JsonRender.render(asMap, intermediate, true);
- generator.writeRawValue(intermediate.toString());
+ renderInspectorDirect(asMap);
} else {
renderInspectorDirect(data);
}
@@ -659,7 +724,7 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
} else if (field instanceof Tensor) {
renderTensor(Optional.of((Tensor)field));
} else if (field instanceof FeatureData) {
- generator.writeRawValue(((FeatureData)field).toJson());
+ generator.writeRawValue(((FeatureData)field).toJson(tensorShortForm));
} else if (field instanceof Inspectable) {
renderInspectorDirect(((Inspectable)field).inspect());
} else if (field instanceof JsonProducer) {
@@ -697,26 +762,18 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
}
private void renderTensor(Optional<Tensor> tensor) throws IOException {
- generator.writeStartObject();
- generator.writeArrayFieldStart("cells");
- if (tensor.isPresent()) {
- for (Iterator<Tensor.Cell> i = tensor.get().cellIterator(); i.hasNext(); ) {
- Tensor.Cell cell = i.next();
-
- generator.writeStartObject();
-
- generator.writeObjectFieldStart("address");
- for (int d = 0; d < cell.getKey().size(); d++)
- generator.writeObjectField(tensor.get().type().dimensions().get(d).name(), cell.getKey().label(d));
- generator.writeEndObject();
-
- generator.writeObjectField("value", cell.getValue());
-
- generator.writeEndObject();
- }
+ if (tensor.isEmpty()) {
+ generator.writeStartObject();
+ generator.writeArrayFieldStart("cells");
+ generator.writeEndArray();
+ generator.writeEndObject();
+ return;
+ }
+ if (tensorShortForm) {
+ generator.writeRawValue(new String(JsonFormat.encodeShortForm(tensor.get()), StandardCharsets.UTF_8));
+ } else {
+ generator.writeRawValue(new String(JsonFormat.encode(tensor.get()), StandardCharsets.UTF_8));
}
- generator.writeEndArray();
- generator.writeEndObject();
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/rendering/Renderer.java b/container-search/src/main/java/com/yahoo/search/rendering/Renderer.java
index 98fcd30d980..b8a7f0d1978 100644
--- a/container-search/src/main/java/com/yahoo/search/rendering/Renderer.java
+++ b/container-search/src/main/java/com/yahoo/search/rendering/Renderer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.rendering;
import com.yahoo.search.Query;
diff --git a/container-search/src/main/java/com/yahoo/search/rendering/RendererRegistry.java b/container-search/src/main/java/com/yahoo/search/rendering/RendererRegistry.java
index 9540bc20bc5..ecad9ced3be 100644
--- a/container-search/src/main/java/com/yahoo/search/rendering/RendererRegistry.java
+++ b/container-search/src/main/java/com/yahoo/search/rendering/RendererRegistry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.rendering;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/main/java/com/yahoo/search/rendering/SectionedRenderer.java b/container-search/src/main/java/com/yahoo/search/rendering/SectionedRenderer.java
index bd647bd74f0..b11766b8880 100644
--- a/container-search/src/main/java/com/yahoo/search/rendering/SectionedRenderer.java
+++ b/container-search/src/main/java/com/yahoo/search/rendering/SectionedRenderer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.rendering;
import com.yahoo.search.Result;
diff --git a/container-search/src/main/java/com/yahoo/search/rendering/SyncDefaultRenderer.java b/container-search/src/main/java/com/yahoo/search/rendering/SyncDefaultRenderer.java
index d79122ac9c4..e9797ea9aba 100644
--- a/container-search/src/main/java/com/yahoo/search/rendering/SyncDefaultRenderer.java
+++ b/container-search/src/main/java/com/yahoo/search/rendering/SyncDefaultRenderer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.rendering;
import com.yahoo.concurrent.CopyOnWriteHashMap;
diff --git a/container-search/src/main/java/com/yahoo/search/rendering/XmlRenderer.java b/container-search/src/main/java/com/yahoo/search/rendering/XmlRenderer.java
index f3b0cd3a61e..f93c70c0199 100644
--- a/container-search/src/main/java/com/yahoo/search/rendering/XmlRenderer.java
+++ b/container-search/src/main/java/com/yahoo/search/rendering/XmlRenderer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.rendering;
import com.yahoo.concurrent.CopyOnWriteHashMap;
diff --git a/container-search/src/main/java/com/yahoo/search/rendering/package-info.java b/container-search/src/main/java/com/yahoo/search/rendering/package-info.java
index 00a0cf53025..13eb6e5af8c 100644
--- a/container-search/src/main/java/com/yahoo/search/rendering/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/rendering/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.search.rendering;
diff --git a/container-search/src/main/java/com/yahoo/search/result/ChainableComparator.java b/container-search/src/main/java/com/yahoo/search/result/ChainableComparator.java
index 7981e451697..e46a3d6a2b2 100644
--- a/container-search/src/main/java/com/yahoo/search/result/ChainableComparator.java
+++ b/container-search/src/main/java/com/yahoo/search/result/ChainableComparator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
import java.util.Comparator;
diff --git a/container-search/src/main/java/com/yahoo/search/result/Coverage.java b/container-search/src/main/java/com/yahoo/search/result/Coverage.java
index 25829b70b5e..dd01494879d 100644
--- a/container-search/src/main/java/com/yahoo/search/result/Coverage.java
+++ b/container-search/src/main/java/com/yahoo/search/result/Coverage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
import com.google.common.annotations.Beta;
diff --git a/container-search/src/main/java/com/yahoo/search/result/DeepHitIterator.java b/container-search/src/main/java/com/yahoo/search/result/DeepHitIterator.java
index b176cff4750..5871102f1fb 100644
--- a/container-search/src/main/java/com/yahoo/search/result/DeepHitIterator.java
+++ b/container-search/src/main/java/com/yahoo/search/result/DeepHitIterator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
import java.util.*;
diff --git a/container-search/src/main/java/com/yahoo/search/result/DefaultErrorHit.java b/container-search/src/main/java/com/yahoo/search/result/DefaultErrorHit.java
index d8ec768325a..51525eb62ce 100644
--- a/container-search/src/main/java/com/yahoo/search/result/DefaultErrorHit.java
+++ b/container-search/src/main/java/com/yahoo/search/result/DefaultErrorHit.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
import com.yahoo.collections.ArraySet;
diff --git a/container-search/src/main/java/com/yahoo/search/result/ErrorHit.java b/container-search/src/main/java/com/yahoo/search/result/ErrorHit.java
index 9be80372ba9..97ae9e8b113 100644
--- a/container-search/src/main/java/com/yahoo/search/result/ErrorHit.java
+++ b/container-search/src/main/java/com/yahoo/search/result/ErrorHit.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
import java.util.Iterator;
diff --git a/container-search/src/main/java/com/yahoo/search/result/ErrorMessage.java b/container-search/src/main/java/com/yahoo/search/result/ErrorMessage.java
index a58db5a542e..b7f7150f209 100644
--- a/container-search/src/main/java/com/yahoo/search/result/ErrorMessage.java
+++ b/container-search/src/main/java/com/yahoo/search/result/ErrorMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
import com.yahoo.container.protect.Error;
@@ -20,7 +20,7 @@ public class ErrorMessage extends com.yahoo.processing.request.ErrorMessage {
private String source = null;
public ErrorMessage(int code, String message) {
- super(code,message);
+ super(code, message);
}
/**
@@ -29,7 +29,7 @@ public class ErrorMessage extends com.yahoo.processing.request.ErrorMessage {
* can be generated using com.yahoo.protect.Exceptions.toMessageString(exception).
*/
public ErrorMessage(int code, String message, String detailedMessage) {
- super(code,message, detailedMessage);
+ super(code, message, detailedMessage);
}
/**
@@ -163,6 +163,16 @@ public class ErrorMessage extends com.yahoo.processing.request.ErrorMessage {
return new ErrorMessage(INTERNAL_SERVER_ERROR.code, "Internal server error.", detailedMessage);
}
+ /** Wraps an error message received in a SearchReply packet */
+ public static ErrorMessage createSearchReplyError(String detailedMessage) {
+ return new ErrorMessage(RESULT_HAS_ERRORS.code, "Error in search reply.", detailedMessage);
+ }
+
+ /** Wraps an error message received in a DocsumReply packet */
+ public static ErrorMessage createDocsumReplyError(String detailedMessage) {
+ return new ErrorMessage(RESULT_HAS_ERRORS.code, "Error in fill reply.", detailedMessage);
+ }
+
/** Sets the source producing this error */
public void setSource(String source) { this.source = source; }
diff --git a/container-search/src/main/java/com/yahoo/search/result/FeatureData.java b/container-search/src/main/java/com/yahoo/search/result/FeatureData.java
index fd41d4ee10c..72a8b02a960 100644
--- a/container-search/src/main/java/com/yahoo/search/result/FeatureData.java
+++ b/container-search/src/main/java/com/yahoo/search/result/FeatureData.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
import com.yahoo.data.access.Inspector;
@@ -62,9 +62,17 @@ public class FeatureData implements Inspectable, JsonProducer {
return jsonForm;
}
+ public String toJson(boolean tensorShortForm) {
+ if (this == empty) return "{}";
+ if (jsonForm != null) return jsonForm;
+
+ jsonForm = JsonRender.render(value, new Encoder(new StringBuilder(), true, tensorShortForm)).toString();
+ return jsonForm;
+ }
+
@Override
public StringBuilder writeJson(StringBuilder target) {
- return JsonRender.render(value, new Encoder(target, true));
+ return JsonRender.render(value, new Encoder(target, true, false));
}
/**
@@ -162,15 +170,19 @@ public class FeatureData implements Inspectable, JsonProducer {
/** A JSON encoder which encodes DATA as a tensor */
private static class Encoder extends JsonRender.StringEncoder {
- Encoder(StringBuilder out, boolean compact) {
+ private final boolean tensorShortForm;
+
+ Encoder(StringBuilder out, boolean compact, boolean tensorShortForm) {
super(out, compact);
+ this.tensorShortForm = tensorShortForm;
}
@Override
public void encodeDATA(byte[] value) {
// This could be done more efficiently ...
- target().append(new String(JsonFormat.encodeWithType(TypedBinaryFormat.decode(Optional.empty(), GrowableByteBuffer.wrap(value))),
- StandardCharsets.UTF_8));
+ Tensor tensor = TypedBinaryFormat.decode(Optional.empty(), GrowableByteBuffer.wrap(value));
+ byte[] encodedTensor = tensorShortForm ? JsonFormat.encodeShortForm(tensor) : JsonFormat.encodeWithType(tensor);
+ target().append(new String(encodedTensor, StandardCharsets.UTF_8));
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/result/FieldComparator.java b/container-search/src/main/java/com/yahoo/search/result/FieldComparator.java
index ccb9c728561..daa77c6fcdd 100644
--- a/container-search/src/main/java/com/yahoo/search/result/FieldComparator.java
+++ b/container-search/src/main/java/com/yahoo/search/result/FieldComparator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
import com.yahoo.data.access.Inspector;
diff --git a/container-search/src/main/java/com/yahoo/search/result/Hit.java b/container-search/src/main/java/com/yahoo/search/result/Hit.java
index d224ec2c7ab..cf9fe33ee88 100644
--- a/container-search/src/main/java/com/yahoo/search/result/Hit.java
+++ b/container-search/src/main/java/com/yahoo/search/result/Hit.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
import com.yahoo.collections.ArraySet;
diff --git a/container-search/src/main/java/com/yahoo/search/result/HitGroup.java b/container-search/src/main/java/com/yahoo/search/result/HitGroup.java
index 253ef8a1e29..ce99b8b8d0b 100644
--- a/container-search/src/main/java/com/yahoo/search/result/HitGroup.java
+++ b/container-search/src/main/java/com/yahoo/search/result/HitGroup.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
import com.google.common.base.Predicate;
diff --git a/container-search/src/main/java/com/yahoo/search/result/HitGroupsLastComparator.java b/container-search/src/main/java/com/yahoo/search/result/HitGroupsLastComparator.java
index 1fd2c52d1bd..0bd91c9821e 100644
--- a/container-search/src/main/java/com/yahoo/search/result/HitGroupsLastComparator.java
+++ b/container-search/src/main/java/com/yahoo/search/result/HitGroupsLastComparator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
import java.util.Comparator;
diff --git a/container-search/src/main/java/com/yahoo/search/result/HitIterator.java b/container-search/src/main/java/com/yahoo/search/result/HitIterator.java
index 8811d2c6b72..f36a5d77d40 100644
--- a/container-search/src/main/java/com/yahoo/search/result/HitIterator.java
+++ b/container-search/src/main/java/com/yahoo/search/result/HitIterator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
import java.util.Iterator;
diff --git a/container-search/src/main/java/com/yahoo/search/result/HitOrderer.java b/container-search/src/main/java/com/yahoo/search/result/HitOrderer.java
index 848666d628b..01c6e897ea0 100644
--- a/container-search/src/main/java/com/yahoo/search/result/HitOrderer.java
+++ b/container-search/src/main/java/com/yahoo/search/result/HitOrderer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
import java.util.Comparator;
diff --git a/container-search/src/main/java/com/yahoo/search/result/HitSortOrderer.java b/container-search/src/main/java/com/yahoo/search/result/HitSortOrderer.java
index d035973a065..4daeabe1161 100644
--- a/container-search/src/main/java/com/yahoo/search/result/HitSortOrderer.java
+++ b/container-search/src/main/java/com/yahoo/search/result/HitSortOrderer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
import com.yahoo.search.query.Sorting;
diff --git a/container-search/src/main/java/com/yahoo/search/result/MetaHitsFirstComparator.java b/container-search/src/main/java/com/yahoo/search/result/MetaHitsFirstComparator.java
index a15cd30d664..d294690e315 100644
--- a/container-search/src/main/java/com/yahoo/search/result/MetaHitsFirstComparator.java
+++ b/container-search/src/main/java/com/yahoo/search/result/MetaHitsFirstComparator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
import java.util.Comparator;
diff --git a/container-search/src/main/java/com/yahoo/search/result/NanNumber.java b/container-search/src/main/java/com/yahoo/search/result/NanNumber.java
index 078ac04f85e..ba71034198c 100644
--- a/container-search/src/main/java/com/yahoo/search/result/NanNumber.java
+++ b/container-search/src/main/java/com/yahoo/search/result/NanNumber.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/result/PositionsData.java b/container-search/src/main/java/com/yahoo/search/result/PositionsData.java
index 203e0206f1e..67357bde14c 100644
--- a/container-search/src/main/java/com/yahoo/search/result/PositionsData.java
+++ b/container-search/src/main/java/com/yahoo/search/result/PositionsData.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
import com.yahoo.data.access.Inspector;
diff --git a/container-search/src/main/java/com/yahoo/search/result/Relevance.java b/container-search/src/main/java/com/yahoo/search/result/Relevance.java
index 90dbc493b9d..5c3e322e881 100644
--- a/container-search/src/main/java/com/yahoo/search/result/Relevance.java
+++ b/container-search/src/main/java/com/yahoo/search/result/Relevance.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/result/StructuredData.java b/container-search/src/main/java/com/yahoo/search/result/StructuredData.java
index 8640180fad4..c14604525c6 100644
--- a/container-search/src/main/java/com/yahoo/search/result/StructuredData.java
+++ b/container-search/src/main/java/com/yahoo/search/result/StructuredData.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
import com.yahoo.data.access.Inspector;
diff --git a/container-search/src/main/java/com/yahoo/search/result/package-info.java b/container-search/src/main/java/com/yahoo/search/result/package-info.java
index 6bd2a261431..0ef5fb47b08 100644
--- a/container-search/src/main/java/com/yahoo/search/result/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/result/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* The content of a Result produced in response to a Query.
*/
diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/AsyncExecution.java b/container-search/src/main/java/com/yahoo/search/searchchain/AsyncExecution.java
index 099f431d025..edd3202d63a 100644
--- a/container-search/src/main/java/com/yahoo/search/searchchain/AsyncExecution.java
+++ b/container-search/src/main/java/com/yahoo/search/searchchain/AsyncExecution.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain;
import com.yahoo.component.chain.Chain;
@@ -148,7 +148,11 @@ public class AsyncExecution {
private static <T> Future<T> getFuture(Callable<T> callable) {
FutureTask<T> future = new FutureTask<>(callable);
- getExecutor().execute(future);
+ try {
+ getExecutor().execute(future);
+ } catch (RejectedExecutionException e) {
+ future.run();
+ }
return future;
}
@@ -161,7 +165,11 @@ public class AsyncExecution {
private FutureResult getFutureResult(Callable<Result> callable, Query query) {
FutureResult future = new FutureResult(callable, execution, query);
- getExecutor().execute(future);
+ try {
+ getExecutor().execute(future);
+ } catch (RejectedExecutionException e) {
+ future.run();
+ }
return future;
}
diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/Execution.java b/container-search/src/main/java/com/yahoo/search/searchchain/Execution.java
index fac0d35d509..5d04f0aa2e7 100644
--- a/container-search/src/main/java/com/yahoo/search/searchchain/Execution.java
+++ b/container-search/src/main/java/com/yahoo/search/searchchain/Execution.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain;
import com.yahoo.component.chain.Chain;
diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/ForkingSearcher.java b/container-search/src/main/java/com/yahoo/search/searchchain/ForkingSearcher.java
index 70cf7362c99..359c07a1875 100644
--- a/container-search/src/main/java/com/yahoo/search/searchchain/ForkingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/searchchain/ForkingSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/FutureResult.java b/container-search/src/main/java/com/yahoo/search/searchchain/FutureResult.java
index 5f19470540f..81d98f828fd 100644
--- a/container-search/src/main/java/com/yahoo/search/searchchain/FutureResult.java
+++ b/container-search/src/main/java/com/yahoo/search/searchchain/FutureResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain;
import com.yahoo.search.Query;
diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/PhaseNames.java b/container-search/src/main/java/com/yahoo/search/searchchain/PhaseNames.java
index d2809e8fe33..61baf07e723 100644
--- a/container-search/src/main/java/com/yahoo/search/searchchain/PhaseNames.java
+++ b/container-search/src/main/java/com/yahoo/search/searchchain/PhaseNames.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/SearchChain.java b/container-search/src/main/java/com/yahoo/search/searchchain/SearchChain.java
index 35d93de64e5..bec0cc18ff8 100644
--- a/container-search/src/main/java/com/yahoo/search/searchchain/SearchChain.java
+++ b/container-search/src/main/java/com/yahoo/search/searchchain/SearchChain.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/SearchChainRegistry.java b/container-search/src/main/java/com/yahoo/search/searchchain/SearchChainRegistry.java
index 746afdb03fb..59149d3a314 100644
--- a/container-search/src/main/java/com/yahoo/search/searchchain/SearchChainRegistry.java
+++ b/container-search/src/main/java/com/yahoo/search/searchchain/SearchChainRegistry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain;
import com.yahoo.component.AbstractComponent;
diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/SearcherRegistry.java b/container-search/src/main/java/com/yahoo/search/searchchain/SearcherRegistry.java
index 178fd228875..5b01d088b28 100644
--- a/container-search/src/main/java/com/yahoo/search/searchchain/SearcherRegistry.java
+++ b/container-search/src/main/java/com/yahoo/search/searchchain/SearcherRegistry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain;
import com.yahoo.component.provider.ComponentRegistry;
import com.yahoo.search.Searcher;
diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/example/ExampleSearcher.java b/container-search/src/main/java/com/yahoo/search/searchchain/example/ExampleSearcher.java
index 1eb256bee44..c73edfc47a7 100644
--- a/container-search/src/main/java/com/yahoo/search/searchchain/example/ExampleSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/searchchain/example/ExampleSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain.example;
import com.yahoo.search.Query;
diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/model/VespaSearchers.java b/container-search/src/main/java/com/yahoo/search/searchchain/model/VespaSearchers.java
index 2f680a8f3bd..85b8a563a9e 100644
--- a/container-search/src/main/java/com/yahoo/search/searchchain/model/VespaSearchers.java
+++ b/container-search/src/main/java/com/yahoo/search/searchchain/model/VespaSearchers.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain.model;
import com.yahoo.container.bundle.BundleInstantiationSpecification;
diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/FederationOptions.java b/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/FederationOptions.java
index 6eeb425fc9d..57953a915b6 100644
--- a/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/FederationOptions.java
+++ b/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/FederationOptions.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain.model.federation;
import net.jcip.annotations.Immutable;
diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/FederationSearcherModel.java b/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/FederationSearcherModel.java
index 01dccee5c7f..ea8275760dc 100644
--- a/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/FederationSearcherModel.java
+++ b/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/FederationSearcherModel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain.model.federation;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/LocalProviderSpec.java b/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/LocalProviderSpec.java
index 160f917f6c6..b8d6a050691 100644
--- a/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/LocalProviderSpec.java
+++ b/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/LocalProviderSpec.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain.model.federation;
import com.google.common.collect.ImmutableList;
diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/package-info.java b/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/package-info.java
index 3e449e5cbba..53b84a56a2b 100644
--- a/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.search.searchchain.model.federation;
diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/model/package-info.java b/container-search/src/main/java/com/yahoo/search/searchchain/model/package-info.java
index 86feb0b036b..1d84a70ef12 100644
--- a/container-search/src/main/java/com/yahoo/search/searchchain/model/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/searchchain/model/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.search.searchchain.model;
diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/package-info.java b/container-search/src/main/java/com/yahoo/search/searchchain/package-info.java
index 374cdd600da..c2f6064edeb 100644
--- a/container-search/src/main/java/com/yahoo/search/searchchain/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/searchchain/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Classes for composition of searchers into search chains, which are executed to produce Results for Queries.
*/
diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/testutil/DocumentSourceSearcher.java b/container-search/src/main/java/com/yahoo/search/searchchain/testutil/DocumentSourceSearcher.java
index e346a766738..e36157efddb 100644
--- a/container-search/src/main/java/com/yahoo/search/searchchain/testutil/DocumentSourceSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/searchchain/testutil/DocumentSourceSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain.testutil;
@@ -38,9 +38,9 @@ public class DocumentSourceSearcher extends Searcher {
// TODO: update tests to explicitly set hits, so that the default results can be removed entirely.
private Result defaultFilledResult;
- private Map<Query, Result> completelyFilledResults = new HashMap<>();
- private Map<Query, Result> unFilledResults = new HashMap<>();
- private Map<String, Set<String>> summaryClasses = new HashMap<>();
+ private final Map<Query, Result> completelyFilledResults = new HashMap<>();
+ private final Map<Query, Result> unFilledResults = new HashMap<>();
+ private final Map<String, Set<String>> summaryClasses = new HashMap<>();
private int queryCount;
diff --git a/container-search/src/main/java/com/yahoo/search/searchers/CacheControlSearcher.java b/container-search/src/main/java/com/yahoo/search/searchers/CacheControlSearcher.java
index 0f2c2d327aa..a4f03b088f2 100644
--- a/container-search/src/main/java/com/yahoo/search/searchers/CacheControlSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/searchers/CacheControlSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchers;
import com.yahoo.search.Query;
diff --git a/container-search/src/main/java/com/yahoo/search/searchers/ConnectionControlSearcher.java b/container-search/src/main/java/com/yahoo/search/searchers/ConnectionControlSearcher.java
index 9458762011c..15c683ccb10 100644
--- a/container-search/src/main/java/com/yahoo/search/searchers/ConnectionControlSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/searchers/ConnectionControlSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchers;
import com.yahoo.container.jdisc.HttpRequest;
diff --git a/container-search/src/main/java/com/yahoo/search/searchers/ContainerLatencySearcher.java b/container-search/src/main/java/com/yahoo/search/searchers/ContainerLatencySearcher.java
index cd93482be88..942d9d1530d 100644
--- a/container-search/src/main/java/com/yahoo/search/searchers/ContainerLatencySearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/searchers/ContainerLatencySearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchers;
import com.yahoo.component.chain.dependencies.After;
diff --git a/container-search/src/main/java/com/yahoo/search/searchers/InputCheckingSearcher.java b/container-search/src/main/java/com/yahoo/search/searchers/InputCheckingSearcher.java
index d8391fe08f3..f1a49fc1231 100644
--- a/container-search/src/main/java/com/yahoo/search/searchers/InputCheckingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/searchers/InputCheckingSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchers;
import java.nio.ByteBuffer;
diff --git a/container-search/src/main/java/com/yahoo/search/searchers/QueryValidator.java b/container-search/src/main/java/com/yahoo/search/searchers/QueryValidator.java
index 024f231f524..a2e3d038053 100644
--- a/container-search/src/main/java/com/yahoo/search/searchers/QueryValidator.java
+++ b/container-search/src/main/java/com/yahoo/search/searchers/QueryValidator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchers;
import com.yahoo.component.chain.dependencies.After;
diff --git a/container-search/src/main/java/com/yahoo/search/searchers/RateLimitingSearcher.java b/container-search/src/main/java/com/yahoo/search/searchers/RateLimitingSearcher.java
index a3f0c6e6b16..c39704bd6dc 100755
--- a/container-search/src/main/java/com/yahoo/search/searchers/RateLimitingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/searchers/RateLimitingSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchers;
import com.google.inject.Inject;
diff --git a/container-search/src/main/java/com/yahoo/search/searchers/ValidateMatchPhaseSearcher.java b/container-search/src/main/java/com/yahoo/search/searchers/ValidateMatchPhaseSearcher.java
index 6025b0154e9..6fb145fbfec 100644
--- a/container-search/src/main/java/com/yahoo/search/searchers/ValidateMatchPhaseSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/searchers/ValidateMatchPhaseSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchers;
import com.yahoo.container.QrSearchersConfig;
diff --git a/container-search/src/main/java/com/yahoo/search/searchers/package-info.java b/container-search/src/main/java/com/yahoo/search/searchers/package-info.java
index 7b0d1ceb1c1..a16f874e37d 100644
--- a/container-search/src/main/java/com/yahoo/search/searchers/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/searchers/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Various useful searchers
*/
diff --git a/container-search/src/main/java/com/yahoo/search/statistics/ElapsedTime.java b/container-search/src/main/java/com/yahoo/search/statistics/ElapsedTime.java
index 804ce1b496b..a2249f8a740 100644
--- a/container-search/src/main/java/com/yahoo/search/statistics/ElapsedTime.java
+++ b/container-search/src/main/java/com/yahoo/search/statistics/ElapsedTime.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.statistics;
import com.yahoo.collections.TinyIdentitySet;
diff --git a/container-search/src/main/java/com/yahoo/search/statistics/PeakQpsSearcher.java b/container-search/src/main/java/com/yahoo/search/statistics/PeakQpsSearcher.java
index 6d4fcdaf8fb..e4bce05b4f2 100644
--- a/container-search/src/main/java/com/yahoo/search/statistics/PeakQpsSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/statistics/PeakQpsSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.statistics;
import com.yahoo.collections.Tuple2;
diff --git a/container-search/src/main/java/com/yahoo/search/statistics/TimeTracker.java b/container-search/src/main/java/com/yahoo/search/statistics/TimeTracker.java
index d2461dffc7a..9f01a7894c0 100644
--- a/container-search/src/main/java/com/yahoo/search/statistics/TimeTracker.java
+++ b/container-search/src/main/java/com/yahoo/search/statistics/TimeTracker.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.statistics;
import com.yahoo.component.chain.Chain;
diff --git a/container-search/src/main/java/com/yahoo/search/statistics/TimingSearcher.java b/container-search/src/main/java/com/yahoo/search/statistics/TimingSearcher.java
index f344872955a..8aa68d83d88 100644
--- a/container-search/src/main/java/com/yahoo/search/statistics/TimingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/statistics/TimingSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.statistics;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/main/java/com/yahoo/search/statistics/package-info.java b/container-search/src/main/java/com/yahoo/search/statistics/package-info.java
index 64e584d9a36..162cbdefcc9 100644
--- a/container-search/src/main/java/com/yahoo/search/statistics/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/statistics/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.search.statistics;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/ArgumentsTypeChecker.java b/container-search/src/main/java/com/yahoo/search/yql/ArgumentsTypeChecker.java
index 3c0530204a1..9a1966084b1 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/ArgumentsTypeChecker.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/ArgumentsTypeChecker.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import com.google.common.base.Preconditions;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/CaseInsensitiveFileStream.java b/container-search/src/main/java/com/yahoo/search/yql/CaseInsensitiveFileStream.java
index ff96c75a29f..5e21ce234d8 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/CaseInsensitiveFileStream.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/CaseInsensitiveFileStream.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import org.antlr.v4.runtime.ANTLRFileStream;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/CaseInsensitiveInputStream.java b/container-search/src/main/java/com/yahoo/search/yql/CaseInsensitiveInputStream.java
index e5fee841208..ed071370f4e 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/CaseInsensitiveInputStream.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/CaseInsensitiveInputStream.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import org.antlr.v4.runtime.ANTLRInputStream;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/ExpressionOperator.java b/container-search/src/main/java/com/yahoo/search/yql/ExpressionOperator.java
index b97e8567140..06a095df6dd 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/ExpressionOperator.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/ExpressionOperator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import com.google.common.base.Predicate;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/FieldFiller.java b/container-search/src/main/java/com/yahoo/search/yql/FieldFiller.java
index b2791875d27..343f1b06e84 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/FieldFiller.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/FieldFiller.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import java.util.HashMap;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/FieldFilter.java b/container-search/src/main/java/com/yahoo/search/yql/FieldFilter.java
index 14dce2f6342..c4ab612651d 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/FieldFilter.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/FieldFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import java.util.Iterator;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/JavaListTypeChecker.java b/container-search/src/main/java/com/yahoo/search/yql/JavaListTypeChecker.java
index 5ad5abc96c7..3dce6b700e1 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/JavaListTypeChecker.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/JavaListTypeChecker.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import com.google.common.base.Preconditions;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/JavaTypeChecker.java b/container-search/src/main/java/com/yahoo/search/yql/JavaTypeChecker.java
index 4d458146392..9c86c5a8476 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/JavaTypeChecker.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/JavaTypeChecker.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import com.google.common.base.Preconditions;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/JavaUnionTypeChecker.java b/container-search/src/main/java/com/yahoo/search/yql/JavaUnionTypeChecker.java
index 16f2bdb8037..84d814edd16 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/JavaUnionTypeChecker.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/JavaUnionTypeChecker.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import com.google.common.base.Joiner;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/Location.java b/container-search/src/main/java/com/yahoo/search/yql/Location.java
index 3e3ddf0d5cf..b6236a0e62f 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/Location.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/Location.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/yql/MinimalQueryInserter.java b/container-search/src/main/java/com/yahoo/search/yql/MinimalQueryInserter.java
index 209340e0a99..8223cb2cba2 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/MinimalQueryInserter.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/MinimalQueryInserter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import com.google.common.annotations.Beta;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/NodeTypeChecker.java b/container-search/src/main/java/com/yahoo/search/yql/NodeTypeChecker.java
index 26811e1e024..e4319c491be 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/NodeTypeChecker.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/NodeTypeChecker.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import com.google.common.base.Joiner;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/NullItemException.java b/container-search/src/main/java/com/yahoo/search/yql/NullItemException.java
index 8502af76858..aa3a5152820 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/NullItemException.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/NullItemException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/yql/Operator.java b/container-search/src/main/java/com/yahoo/search/yql/Operator.java
index 21bd6cd0c0b..adce5956acd 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/Operator.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/Operator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
interface Operator {
diff --git a/container-search/src/main/java/com/yahoo/search/yql/OperatorNode.java b/container-search/src/main/java/com/yahoo/search/yql/OperatorNode.java
index f529de32fe9..99eb5d14554 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/OperatorNode.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/OperatorNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import com.google.common.base.Function;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/OperatorNodeListTypeChecker.java b/container-search/src/main/java/com/yahoo/search/yql/OperatorNodeListTypeChecker.java
index b017b27d7bd..cc64711df52 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/OperatorNodeListTypeChecker.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/OperatorNodeListTypeChecker.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import com.google.common.base.Joiner;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/OperatorTypeChecker.java b/container-search/src/main/java/com/yahoo/search/yql/OperatorTypeChecker.java
index 0e91f3c9a84..be8e76b4f40 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/OperatorTypeChecker.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/OperatorTypeChecker.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/yql/OperatorVisitor.java b/container-search/src/main/java/com/yahoo/search/yql/OperatorVisitor.java
index 64922bddea6..2c7a32aef38 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/OperatorVisitor.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/OperatorVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
interface OperatorVisitor {
diff --git a/container-search/src/main/java/com/yahoo/search/yql/ParserBase.java b/container-search/src/main/java/com/yahoo/search/yql/ParserBase.java
index 5134f33bc73..917f7cdf522 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/ParserBase.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/ParserBase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import com.google.common.collect.Sets;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/ProgramCompileException.java b/container-search/src/main/java/com/yahoo/search/yql/ProgramCompileException.java
index 46dfb780e2d..3a96a360078 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/ProgramCompileException.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/ProgramCompileException.java
@@ -1,7 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
-class ProgramCompileException extends RuntimeException {
+import com.yahoo.processing.IllegalInputException;
+
+class ProgramCompileException extends IllegalInputException {
private Location sourceLocation;
@@ -9,27 +11,6 @@ class ProgramCompileException extends RuntimeException {
super(message);
}
- public ProgramCompileException(String message, Object... args) {
- super(formatMessage(message, args));
- }
-
- private static String formatMessage(String message, Object... args) {
- return args == null ? message : String.format(message, args);
- }
-
- public ProgramCompileException(String message, Throwable cause) {
- super(message, cause);
- }
-
- public ProgramCompileException(Throwable cause) {
- super(cause);
- }
-
- public ProgramCompileException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
- super(message, cause, enableSuppression, writableStackTrace);
- }
-
-
public ProgramCompileException(Location sourceLocation, String message, Object... args) {
super(String.format("%s %s", sourceLocation != null ? sourceLocation : "", args == null ? message : String.format(message, args)));
this.sourceLocation = sourceLocation;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/ProgramParser.java b/container-search/src/main/java/com/yahoo/search/yql/ProgramParser.java
index d3f07bae428..e1e88c83725 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/ProgramParser.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/ProgramParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import com.google.common.base.Preconditions;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/ProjectOperator.java b/container-search/src/main/java/com/yahoo/search/yql/ProjectOperator.java
index 1fab2c16824..b1ed03eeaf1 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/ProjectOperator.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/ProjectOperator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import com.google.common.base.Predicate;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/ProjectionBuilder.java b/container-search/src/main/java/com/yahoo/search/yql/ProjectionBuilder.java
index 4d6dfe5f319..ac7ac0334cc 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/ProjectionBuilder.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/ProjectionBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import com.google.common.collect.ImmutableList;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/SequenceOperator.java b/container-search/src/main/java/com/yahoo/search/yql/SequenceOperator.java
index ef68ea8553a..5cf20fd3b0c 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/SequenceOperator.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/SequenceOperator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import com.google.common.base.Predicate;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/SortOperator.java b/container-search/src/main/java/com/yahoo/search/yql/SortOperator.java
index f04cb1ed812..e0b54eac4b4 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/SortOperator.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/SortOperator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import com.google.common.base.Predicate;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/StatementOperator.java b/container-search/src/main/java/com/yahoo/search/yql/StatementOperator.java
index 51fae741c01..9d9af6ae6d2 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/StatementOperator.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/StatementOperator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import com.google.common.base.Predicate;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/StringUnescaper.java b/container-search/src/main/java/com/yahoo/search/yql/StringUnescaper.java
index 9916b1362a5..5eed51c9ceb 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/StringUnescaper.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/StringUnescaper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
class StringUnescaper {
diff --git a/container-search/src/main/java/com/yahoo/search/yql/TypeCheckers.java b/container-search/src/main/java/com/yahoo/search/yql/TypeCheckers.java
index af54d28c2ac..356b581d174 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/TypeCheckers.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/TypeCheckers.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import com.google.common.base.Preconditions;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/TypeOperator.java b/container-search/src/main/java/com/yahoo/search/yql/TypeOperator.java
index c08da15c10d..00de4d192db 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/TypeOperator.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/TypeOperator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import com.google.common.base.Predicate;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/VespaGroupingStep.java b/container-search/src/main/java/com/yahoo/search/yql/VespaGroupingStep.java
index 4626109f6cd..468f2499d37 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/VespaGroupingStep.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/VespaGroupingStep.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import com.yahoo.search.grouping.Continuation;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java b/container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java
index 9e6701572dc..decdaae3a0f 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import static com.yahoo.search.yql.YqlParser.ACCENT_DROP;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java b/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java
index 9eaea47ea1b..cdfcef7e2a9 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import java.math.BigInteger;
diff --git a/container-search/src/main/java/com/yahoo/search/yql/YqlQuery.java b/container-search/src/main/java/com/yahoo/search/yql/YqlQuery.java
index 969c14d32af..10cd87d2230 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/YqlQuery.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/YqlQuery.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/yql/package-info.java b/container-search/src/main/java/com/yahoo/search/yql/package-info.java
index c0bcfc50d5d..3c3e76715e3 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/package-info.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* YQL+ integration.
*
diff --git a/container-search/src/main/java/com/yahoo/text/interpretation/AnnotationClass.java b/container-search/src/main/java/com/yahoo/text/interpretation/AnnotationClass.java
index c9a36f25738..387f73e730e 100644
--- a/container-search/src/main/java/com/yahoo/text/interpretation/AnnotationClass.java
+++ b/container-search/src/main/java/com/yahoo/text/interpretation/AnnotationClass.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text.interpretation;
// TODO: Javadoc
diff --git a/container-search/src/main/java/com/yahoo/text/interpretation/Annotations.java b/container-search/src/main/java/com/yahoo/text/interpretation/Annotations.java
index f625bedca19..af2af583772 100644
--- a/container-search/src/main/java/com/yahoo/text/interpretation/Annotations.java
+++ b/container-search/src/main/java/com/yahoo/text/interpretation/Annotations.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text.interpretation;
import java.util.Collections;
diff --git a/container-search/src/main/java/com/yahoo/text/interpretation/Interpretation.java b/container-search/src/main/java/com/yahoo/text/interpretation/Interpretation.java
index f662a0a4e7e..372346670a9 100644
--- a/container-search/src/main/java/com/yahoo/text/interpretation/Interpretation.java
+++ b/container-search/src/main/java/com/yahoo/text/interpretation/Interpretation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text.interpretation;
import java.util.Collections;
diff --git a/container-search/src/main/java/com/yahoo/text/interpretation/Modification.java b/container-search/src/main/java/com/yahoo/text/interpretation/Modification.java
index 28cf11c62b1..42be33dd05b 100644
--- a/container-search/src/main/java/com/yahoo/text/interpretation/Modification.java
+++ b/container-search/src/main/java/com/yahoo/text/interpretation/Modification.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text.interpretation;
import java.util.HashMap;
diff --git a/container-search/src/main/java/com/yahoo/text/interpretation/Span.java b/container-search/src/main/java/com/yahoo/text/interpretation/Span.java
index 90cc6231d48..e38f313b19e 100644
--- a/container-search/src/main/java/com/yahoo/text/interpretation/Span.java
+++ b/container-search/src/main/java/com/yahoo/text/interpretation/Span.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text.interpretation;
import java.util.ArrayList;
diff --git a/container-search/src/main/java/com/yahoo/text/interpretation/package-info.java b/container-search/src/main/java/com/yahoo/text/interpretation/package-info.java
index 671af0c93c4..fee85c827e1 100644
--- a/container-search/src/main/java/com/yahoo/text/interpretation/package-info.java
+++ b/container-search/src/main/java/com/yahoo/text/interpretation/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Models a set of hierarchical annotations (typically produced by QLAS) of a natural language string.
*/
diff --git a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/ListMerger.java b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/ListMerger.java
index a17b06d3d0c..bd59e354059 100644
--- a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/ListMerger.java
+++ b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/ListMerger.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.streamingvisitors;
import java.util.List;
diff --git a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/MetricsSearcher.java b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/MetricsSearcher.java
index d9a6f78a0a4..ab9da8ccee5 100644
--- a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/MetricsSearcher.java
+++ b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/MetricsSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.streamingvisitors;
import com.yahoo.log.event.Event;
diff --git a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsStreamingSearcher.java b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsStreamingSearcher.java
index 24dd25c5182..489214bebf8 100644
--- a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsStreamingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsStreamingSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.streamingvisitors;
import com.yahoo.container.core.documentapi.VespaDocumentAccess;
diff --git a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsVisitor.java b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsVisitor.java
index 49fda880b44..e2233d51ae4 100644
--- a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsVisitor.java
+++ b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.streamingvisitors;
import com.yahoo.document.select.parser.ParseException;
diff --git a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/Visitor.java b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/Visitor.java
index 8065f71c1f0..09eebd3034d 100644
--- a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/Visitor.java
+++ b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/Visitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.streamingvisitors;
import com.yahoo.document.select.parser.ParseException;
diff --git a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VisitorFactory.java b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VisitorFactory.java
index 421a36dbc63..174f3d41cfb 100644
--- a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VisitorFactory.java
+++ b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VisitorFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.streamingvisitors;
import com.yahoo.messagebus.routing.Route;
diff --git a/container-search/src/main/javacc/com/yahoo/prelude/semantics/parser/SemanticsParser.jj b/container-search/src/main/javacc/com/yahoo/prelude/semantics/parser/SemanticsParser.jj
index 24fae895364..d79f78ef896 100644
--- a/container-search/src/main/javacc/com/yahoo/prelude/semantics/parser/SemanticsParser.jj
+++ b/container-search/src/main/javacc/com/yahoo/prelude/semantics/parser/SemanticsParser.jj
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bratseth
*/
diff --git a/container-search/src/main/javacc/com/yahoo/search/grouping/request/parser/GroupingParser.jj b/container-search/src/main/javacc/com/yahoo/search/grouping/request/parser/GroupingParser.jj
index a7e471b99b9..6d4ca1e9841 100644
--- a/container-search/src/main/javacc/com/yahoo/search/grouping/request/parser/GroupingParser.jj
+++ b/container-search/src/main/javacc/com/yahoo/search/grouping/request/parser/GroupingParser.jj
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// --------------------------------------------------------------------------------
//
// JavaCC options. When this file is changed, run "ant compileparser" to rebuild
diff --git a/container-search/src/main/javacc/com/yahoo/search/query/textserialize/parser/Parser.jj b/container-search/src/main/javacc/com/yahoo/search/query/textserialize/parser/Parser.jj
index 5cf14429aff..5f64ee5d340 100644
--- a/container-search/src/main/javacc/com/yahoo/search/query/textserialize/parser/Parser.jj
+++ b/container-search/src/main/javacc/com/yahoo/search/query/textserialize/parser/Parser.jj
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Tony Vaagenes
*/
diff --git a/container-search/src/main/resources/configdefinitions/container.search.fs4.def b/container-search/src/main/resources/configdefinitions/container.search.fs4.def
index 9562cfa75bd..6ae86a5979a 100644
--- a/container-search/src/main/resources/configdefinitions/container.search.fs4.def
+++ b/container-search/src/main/resources/configdefinitions/container.search.fs4.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container.search
##Number of listener threads
diff --git a/container-search/src/main/resources/configdefinitions/prelude.cluster.qr-monitor.def b/container-search/src/main/resources/configdefinitions/prelude.cluster.qr-monitor.def
index 2c4ff3c6167..174baea6d0e 100644
--- a/container-search/src/main/resources/configdefinitions/prelude.cluster.qr-monitor.def
+++ b/container-search/src/main/resources/configdefinitions/prelude.cluster.qr-monitor.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=prelude.cluster
## The number of milliseconds to attempt to complete a request before
diff --git a/container-search/src/main/resources/configdefinitions/prelude.emulation.def b/container-search/src/main/resources/configdefinitions/prelude.emulation.def
index 70d2d4954a4..e706eaea741 100644
--- a/container-search/src/main/resources/configdefinitions/prelude.emulation.def
+++ b/container-search/src/main/resources/configdefinitions/prelude.emulation.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=prelude
## Keep emulating old (4.2, 5.0, early 5.1) string type fields for structured data
diff --git a/container-search/src/main/resources/configdefinitions/prelude.fastsearch.documentdb-info.def b/container-search/src/main/resources/configdefinitions/prelude.fastsearch.documentdb-info.def
index 76096b4a6f7..3f00c86797c 100644
--- a/container-search/src/main/resources/configdefinitions/prelude.fastsearch.documentdb-info.def
+++ b/container-search/src/main/resources/configdefinitions/prelude.fastsearch.documentdb-info.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=prelude.fastsearch
## The name of the search definition that this document database info applies to
diff --git a/container-search/src/main/resources/configdefinitions/prelude.searcher.keyvalue.def b/container-search/src/main/resources/configdefinitions/prelude.searcher.keyvalue.def
index 95153708aa2..94ede6cdec9 100644
--- a/container-search/src/main/resources/configdefinitions/prelude.searcher.keyvalue.def
+++ b/container-search/src/main/resources/configdefinitions/prelude.searcher.keyvalue.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=prelude.searcher
# The doc id scheme to use.
diff --git a/container-search/src/main/resources/configdefinitions/prelude.searcher.qr-quotetable.def b/container-search/src/main/resources/configdefinitions/prelude.searcher.qr-quotetable.def
index 40979ad2a35..64a9a1e283c 100644
--- a/container-search/src/main/resources/configdefinitions/prelude.searcher.qr-quotetable.def
+++ b/container-search/src/main/resources/configdefinitions/prelude.searcher.qr-quotetable.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=prelude.searcher
## The ordinal number of the character to quote in UNICODE.
diff --git a/container-search/src/main/resources/configdefinitions/prelude.semantics.semantic-rules.def b/container-search/src/main/resources/configdefinitions/prelude.semantics.semantic-rules.def
index 5ac0cca7ff6..71fb907ffe2 100644
--- a/container-search/src/main/resources/configdefinitions/prelude.semantics.semantic-rules.def
+++ b/container-search/src/main/resources/configdefinitions/prelude.semantics.semantic-rules.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Semantic production rules
namespace=prelude.semantics
diff --git a/container-search/src/main/resources/configdefinitions/search.config.cluster.def b/container-search/src/main/resources/configdefinitions/search.config.cluster.def
index 812073517bb..c96afeb16d2 100644
--- a/container-search/src/main/resources/configdefinitions/search.config.cluster.def
+++ b/container-search/src/main/resources/configdefinitions/search.config.cluster.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=search.config
#The id of the cluster (as specified in qr-searchers)
diff --git a/container-search/src/main/resources/configdefinitions/search.config.index-info.def b/container-search/src/main/resources/configdefinitions/search.config.index-info.def
index f3b905d4d0a..8ae8d638a7f 100644
--- a/container-search/src/main/resources/configdefinitions/search.config.index-info.def
+++ b/container-search/src/main/resources/configdefinitions/search.config.index-info.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
## Commands per search definition to be applied to query terms per index before searching
namespace=search.config
diff --git a/container-search/src/main/resources/configdefinitions/search.config.qr-start.def b/container-search/src/main/resources/configdefinitions/search.config.qr-start.def
index 95e9d4575dd..e2856e137f0 100644
--- a/container-search/src/main/resources/configdefinitions/search.config.qr-start.def
+++ b/container-search/src/main/resources/configdefinitions/search.config.qr-start.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Do update the start script with the new name if you change it:
namespace=search.config
diff --git a/container-search/src/main/resources/configdefinitions/search.config.rate-limiting.def b/container-search/src/main/resources/configdefinitions/search.config.rate-limiting.def
index 23235617f8c..8378de3f530 100644
--- a/container-search/src/main/resources/configdefinitions/search.config.rate-limiting.def
+++ b/container-search/src/main/resources/configdefinitions/search.config.rate-limiting.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Configuration of the rate limiting algorithm
namespace=search.config
diff --git a/container-search/src/main/resources/configdefinitions/search.federation.federation.def b/container-search/src/main/resources/configdefinitions/search.federation.federation.def
index 36eb5d4b4c8..45377a3f6b2 100644
--- a/container-search/src/main/resources/configdefinitions/search.federation.federation.def
+++ b/container-search/src/main/resources/configdefinitions/search.federation.federation.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=search.federation
target[].id string
diff --git a/container-search/src/main/resources/configdefinitions/search.federation.provider.def b/container-search/src/main/resources/configdefinitions/search.federation.provider.def
index f9ab305b114..88da3f8c7e2 100644
--- a/container-search/src/main/resources/configdefinitions/search.federation.provider.def
+++ b/container-search/src/main/resources/configdefinitions/search.federation.provider.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=search.federation
node[].host string
diff --git a/container-search/src/main/resources/configdefinitions/search.federation.searchchain-forward.def b/container-search/src/main/resources/configdefinitions/search.federation.searchchain-forward.def
index 0e86490e120..22907c90d8b 100644
--- a/container-search/src/main/resources/configdefinitions/search.federation.searchchain-forward.def
+++ b/container-search/src/main/resources/configdefinitions/search.federation.searchchain-forward.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=search.federation
## A searcher forwarding the incoming query to a single search chain and
diff --git a/container-search/src/main/resources/configdefinitions/search.federation.strict-contracts.def b/container-search/src/main/resources/configdefinitions/search.federation.strict-contracts.def
index 5ceb37db8d1..9d0e70f208a 100644
--- a/container-search/src/main/resources/configdefinitions/search.federation.strict-contracts.def
+++ b/container-search/src/main/resources/configdefinitions/search.federation.strict-contracts.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=search.federation
## DEPRECATED: This config will be removed on Vespa 8
diff --git a/container-search/src/main/resources/configdefinitions/search.handler.search-with-renderer-handler.def b/container-search/src/main/resources/configdefinitions/search.handler.search-with-renderer-handler.def
index a34e08a1c82..ca13c2d3c36 100644
--- a/container-search/src/main/resources/configdefinitions/search.handler.search-with-renderer-handler.def
+++ b/container-search/src/main/resources/configdefinitions/search.handler.search-with-renderer-handler.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=search.handler
rendererId string
diff --git a/container-search/src/main/resources/configdefinitions/search.pagetemplates.page-templates.def b/container-search/src/main/resources/configdefinitions/search.pagetemplates.page-templates.def
index 31ec7644d18..9cf31aa63fa 100644
--- a/container-search/src/main/resources/configdefinitions/search.pagetemplates.page-templates.def
+++ b/container-search/src/main/resources/configdefinitions/search.pagetemplates.page-templates.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=search.pagetemplates
# The xml content of a page template
diff --git a/container-search/src/main/resources/configdefinitions/search.pagetemplates.resolvers.def b/container-search/src/main/resources/configdefinitions/search.pagetemplates.resolvers.def
index 6003fdf81f1..ad60d85385d 100644
--- a/container-search/src/main/resources/configdefinitions/search.pagetemplates.resolvers.def
+++ b/container-search/src/main/resources/configdefinitions/search.pagetemplates.resolvers.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=search.pagetemplates
## A list of resolver components used by com.yahoo.search.PageTemplateSearcher
diff --git a/container-search/src/main/resources/configdefinitions/search.query.profile.config.query-profiles.def b/container-search/src/main/resources/configdefinitions/search.query.profile.config.query-profiles.def
index 869c75df0e9..ea52a8d01cc 100644
--- a/container-search/src/main/resources/configdefinitions/search.query.profile.config.query-profiles.def
+++ b/container-search/src/main/resources/configdefinitions/search.query.profile.config.query-profiles.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Query profiles and their types - a query profile is a nested composite of query parameters with an id
# A set of query parameters can be fetched from a query profile rather than being
# submitted explicitly.
diff --git a/container-search/src/main/resources/configdefinitions/search.query.rewrite.rewrites.def b/container-search/src/main/resources/configdefinitions/search.query.rewrite.rewrites.def
index ecca422342a..055411b1319 100644
--- a/container-search/src/main/resources/configdefinitions/search.query.rewrite.rewrites.def
+++ b/container-search/src/main/resources/configdefinitions/search.query.rewrite.rewrites.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=search.query.rewrite
fsaDict[].name string
diff --git a/container-search/src/main/resources/configdefinitions/search.querytransform.lowercasing.def b/container-search/src/main/resources/configdefinitions/search.querytransform.lowercasing.def
index b656c451e11..41734722a0e 100644
--- a/container-search/src/main/resources/configdefinitions/search.querytransform.lowercasing.def
+++ b/container-search/src/main/resources/configdefinitions/search.querytransform.lowercasing.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=search.querytransform
transform_weighted_sets bool default=true
diff --git a/container-search/src/main/resources/configdefinitions/search.statistics.measure-qps.def b/container-search/src/main/resources/configdefinitions/search.statistics.measure-qps.def
index c8b38b9db6e..0cc615d0601 100644
--- a/container-search/src/main/resources/configdefinitions/search.statistics.measure-qps.def
+++ b/container-search/src/main/resources/configdefinitions/search.statistics.measure-qps.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=search.statistics
## Configure measurements of peak QPS rates.
diff --git a/container-search/src/main/resources/configdefinitions/search.statistics.timing-searcher.def b/container-search/src/main/resources/configdefinitions/search.statistics.timing-searcher.def
index 7c2b698bdb0..16f83e31013 100644
--- a/container-search/src/main/resources/configdefinitions/search.statistics.timing-searcher.def
+++ b/container-search/src/main/resources/configdefinitions/search.statistics.timing-searcher.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=search.statistics
timer[].name string
diff --git a/container-search/src/test/java/com/yahoo/container/test/ConstantFile.java b/container-search/src/test/java/com/yahoo/container/test/ConstantFile.java
index 6e780037f9a..dde3722f0b8 100644
--- a/container-search/src/test/java/com/yahoo/container/test/ConstantFile.java
+++ b/container-search/src/test/java/com/yahoo/container/test/ConstantFile.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.test;
public class ConstantFile {
diff --git a/container-search/src/test/java/com/yahoo/prelude/IndexFactsFactory.java b/container-search/src/test/java/com/yahoo/prelude/IndexFactsFactory.java
index 2272bbbb947..88cc066b665 100644
--- a/container-search/src/test/java/com/yahoo/prelude/IndexFactsFactory.java
+++ b/container-search/src/test/java/com/yahoo/prelude/IndexFactsFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude;
import com.yahoo.config.subscription.ConfigGetter;
diff --git a/container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java
index ca98b6a1a77..95929763675 100644
--- a/container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java
@@ -1,10 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.cluster;
import com.google.common.collect.ImmutableList;
-import com.yahoo.cloud.config.ClusterInfoConfig;
import com.yahoo.component.ComponentId;
import com.yahoo.component.provider.ComponentRegistry;
+import com.yahoo.concurrent.InThreadExecutorService;
import com.yahoo.container.QrConfig;
import com.yahoo.container.QrSearchersConfig;
import com.yahoo.container.handler.ClustersStatus;
@@ -264,9 +264,10 @@ public class ClusterSearcherTestCase {
private Execution createExecution(List<String> docTypesList, boolean expectAttributePrefetch) {
Set<String> documentTypes = new LinkedHashSet<>(docTypesList);
- ClusterSearcher cluster = new ClusterSearcher(documentTypes);
+ ClusterSearcher cluster = new ClusterSearcher(documentTypes,
+ new MyMockSearcher(expectAttributePrefetch),
+ new InThreadExecutorService());
try {
- cluster.addBackendSearcher(new MyMockSearcher(expectAttributePrefetch));
cluster.setValidRankProfile("default", documentTypes);
cluster.addValidRankProfile("testprofile", "type1");
return new Execution(cluster, Execution.Context.createContextStub());
@@ -518,13 +519,13 @@ public class ClusterSearcherTestCase {
Dispatcher dispatcher = new Dispatcher(new RpcResourcePool(dispatchConfig),
ComponentId.createAnonymousComponentId("test-id"),
dispatchConfig,
- createClusterInfoConfig(),
vipStatus,
new MockMetric());
ComponentRegistry<Dispatcher> dispatchers = new ComponentRegistry<>();
dispatchers.register(new ComponentId("dispatcher." + clusterName), dispatcher);
return new ClusterSearcher(new ComponentId("test-id"),
+ new InThreadExecutorService(),
qrSearchersConfig.build(),
clusterConfig.build(),
documentDbConfig.build(),
@@ -534,13 +535,6 @@ public class ClusterSearcherTestCase {
null);
}
- private static ClusterInfoConfig createClusterInfoConfig() {
- ClusterInfoConfig.Builder clusterInfoConfigBuilder = new ClusterInfoConfig.Builder();
- clusterInfoConfigBuilder.clusterId("containerCluster1");
- clusterInfoConfigBuilder.nodeCount(1);
- return new ClusterInfoConfig(clusterInfoConfigBuilder);
- }
-
private static class QueryTimeoutFixture {
ClusterSearcher searcher;
Execution exec;
diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/SlimeSummaryTestCase.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/SlimeSummaryTestCase.java
index 49df321e581..8b21d1e03b2 100644
--- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/SlimeSummaryTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/SlimeSummaryTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch;
import com.google.common.collect.ImmutableSet;
diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/DocsumDefinitionTestCase.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/DocsumDefinitionTestCase.java
index 4ab69019289..6921880d725 100644
--- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/DocsumDefinitionTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/DocsumDefinitionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch.test;
import com.yahoo.config.subscription.ConfigGetter;
diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java
index 9e45c7ef245..b99bf3c0133 100644
--- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch.test;
import com.google.common.collect.ImmutableList;
diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/MockDispatcher.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/MockDispatcher.java
index 2a2c8410b2c..baa049e8c66 100644
--- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/MockDispatcher.java
+++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/MockDispatcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch.test;
import com.yahoo.container.handler.VipStatus;
diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/PartialFillTestCase.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/PartialFillTestCase.java
index cb43f2e17e3..ae6a1554ae1 100644
--- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/PartialFillTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/PartialFillTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch.test;
import com.google.common.util.concurrent.MoreExecutors;
diff --git a/container-search/src/test/java/com/yahoo/prelude/hitfield/XmlRendererTestCase.java b/container-search/src/test/java/com/yahoo/prelude/hitfield/XmlRendererTestCase.java
index 185ec2bdb83..f35c45e7ad6 100644
--- a/container-search/src/test/java/com/yahoo/prelude/hitfield/XmlRendererTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/hitfield/XmlRendererTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.hitfield;
import com.yahoo.data.access.simple.Value;
diff --git a/container-search/src/test/java/com/yahoo/prelude/hitfield/test/HitFieldTestCase.java b/container-search/src/test/java/com/yahoo/prelude/hitfield/test/HitFieldTestCase.java
index c6fb47bae1b..7c264f40388 100644
--- a/container-search/src/test/java/com/yahoo/prelude/hitfield/test/HitFieldTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/hitfield/test/HitFieldTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.hitfield.test;
import java.util.ArrayList;
diff --git a/container-search/src/test/java/com/yahoo/prelude/hitfield/test/JSONStringTestCase.java b/container-search/src/test/java/com/yahoo/prelude/hitfield/test/JSONStringTestCase.java
index 18231785a26..2e05e2e6675 100644
--- a/container-search/src/test/java/com/yahoo/prelude/hitfield/test/JSONStringTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/hitfield/test/JSONStringTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.hitfield.test;
import com.yahoo.prelude.hitfield.JSONString;
diff --git a/container-search/src/test/java/com/yahoo/prelude/hitfield/test/TokenFieldIteratorTestCase.java b/container-search/src/test/java/com/yahoo/prelude/hitfield/test/TokenFieldIteratorTestCase.java
index 9a16cddb362..4b59a31785a 100644
--- a/container-search/src/test/java/com/yahoo/prelude/hitfield/test/TokenFieldIteratorTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/hitfield/test/TokenFieldIteratorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.hitfield.test;
import java.util.ListIterator;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/ItemHelperTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/ItemHelperTestCase.java
index 91700274027..657d7fb30bc 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/ItemHelperTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/ItemHelperTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import static org.junit.Assert.*;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/ItemLabelTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/ItemLabelTestCase.java
index 74b2218a00d..06808d2c8d5 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/ItemLabelTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/ItemLabelTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import java.lang.reflect.Modifier;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/ItemsCommonStuffTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/ItemsCommonStuffTestCase.java
index 02175425808..173279318f6 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/ItemsCommonStuffTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/ItemsCommonStuffTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import static org.junit.Assert.*;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/TaggableItemsTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/TaggableItemsTestCase.java
index 55607b0d58e..3d16859a79d 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/TaggableItemsTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/TaggableItemsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import static org.junit.Assert.assertEquals;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/WordAlternativesItemTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/WordAlternativesItemTestCase.java
index f93f0758057..4f39e07f6d3 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/WordAlternativesItemTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/WordAlternativesItemTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query;
import static org.junit.Assert.*;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/parser/TestLinguistics.java b/container-search/src/test/java/com/yahoo/prelude/query/parser/TestLinguistics.java
index b697841a969..531571a50eb 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/parser/TestLinguistics.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/parser/TestLinguistics.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser;
import com.yahoo.collections.Tuple2;
@@ -60,6 +60,10 @@ public class TestLinguistics implements Linguistics {
return linguistics.getCharacterClasses();
}
+ public boolean equals(Linguistics other) {
+ return (other instanceof TestLinguistics);
+ }
+
}
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/parser/TestSegmenter.java b/container-search/src/test/java/com/yahoo/prelude/query/parser/TestSegmenter.java
index 03ffb29ba82..3a275d21b9f 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/parser/TestSegmenter.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/parser/TestSegmenter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser;
import com.yahoo.language.Language;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/parser/UnicodePropertyDumpTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/parser/UnicodePropertyDumpTestCase.java
index 55be36abd62..5e19f2e2ae6 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/parser/UnicodePropertyDumpTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/parser/UnicodePropertyDumpTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser;
import static org.junit.Assert.assertEquals;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ExactMatchAndDefaultIndexTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ExactMatchAndDefaultIndexTestCase.java
index df35d8dbdea..44dcfcd0d63 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ExactMatchAndDefaultIndexTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ExactMatchAndDefaultIndexTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser.test;
import com.yahoo.prelude.Index;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ParseTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ParseTestCase.java
index cef8ae1751c..18a73625967 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ParseTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ParseTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser.test;
import com.yahoo.language.Language;
@@ -1970,6 +1970,13 @@ public class ParseTestCase {
}
@Test
+ public void testNegativeTermPositiveNumberInParentheses() {
+ tester.assertParsed("+a -12", "a -(12)", Query.Type.ALL);
+ tester.assertParsed("+a -(AND 12 15)", "a -(12 15)", Query.Type.ALL);
+ tester.assertParsed("+a -12 -15", "a -(12) -(15)", Query.Type.ALL);
+ }
+
+ @Test
public void testSingleNegativeNumberLikeTerm() {
tester.assertParsed("-12", "-12", Query.Type.ALL);
}
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ParsingTester.java b/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ParsingTester.java
index fd7e4cbe0e6..229416f7a85 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ParsingTester.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ParsingTester.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser.test;
import com.yahoo.config.subscription.ConfigGetter;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/parser/test/SubstringTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/parser/test/SubstringTestCase.java
index 73181e5b53b..ab59221e0b5 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/parser/test/SubstringTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/parser/test/SubstringTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser.test;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/parser/test/TokenizerTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/parser/test/TokenizerTestCase.java
index ab727a10cdd..5b660f78429 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/parser/test/TokenizerTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/parser/test/TokenizerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser.test;
import com.yahoo.language.simple.SimpleLinguistics;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/parser/test/WashPhrasesTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/parser/test/WashPhrasesTestCase.java
index 7de9f9b5855..061089cd25f 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/parser/test/WashPhrasesTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/parser/test/WashPhrasesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser.test;
import com.yahoo.prelude.query.AndItem;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/test/DotProductItemTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/test/DotProductItemTestCase.java
index 845bb7b5739..1585e58ca5d 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/test/DotProductItemTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/test/DotProductItemTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.test;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/test/IntItemTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/test/IntItemTestCase.java
index 2a87e3b7076..853132efad9 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/test/IntItemTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/test/IntItemTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.test;
import com.yahoo.prelude.query.AndItem;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/test/ItemEncodingTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/test/ItemEncodingTestCase.java
index 1b88a069c4b..eb880bab826 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/test/ItemEncodingTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/test/ItemEncodingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.test;
import com.yahoo.prelude.query.AndItem;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/test/PhraseItemTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/test/PhraseItemTestCase.java
index a239db88b54..bd0bfd3f29a 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/test/PhraseItemTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/test/PhraseItemTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.test;
import com.yahoo.prelude.query.PhraseItem;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/test/PredicateQueryItemTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/test/PredicateQueryItemTestCase.java
index bdaafc5d132..1fe0ded8d6b 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/test/PredicateQueryItemTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/test/PredicateQueryItemTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.test;
import com.yahoo.prelude.query.Item;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/test/QueryCanonicalizerMicroBenchmark.java b/container-search/src/test/java/com/yahoo/prelude/query/test/QueryCanonicalizerMicroBenchmark.java
index 0011399f386..d92ec8ed9ce 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/test/QueryCanonicalizerMicroBenchmark.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/test/QueryCanonicalizerMicroBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.test;
import com.yahoo.prelude.query.AndItem;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/test/QueryCanonicalizerTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/test/QueryCanonicalizerTestCase.java
index e7a2a4f3ef8..1d2f92063fe 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/test/QueryCanonicalizerTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/test/QueryCanonicalizerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.test;
import com.yahoo.prelude.query.*;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/test/QueryLanguageTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/test/QueryLanguageTestCase.java
index aa4d0ed9a0a..a43f1a542c3 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/test/QueryLanguageTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/test/QueryLanguageTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.test;
import com.yahoo.language.Language;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/test/QueryTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/test/QueryTestCase.java
index 834a1986ada..bfdc9ae1552 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/test/QueryTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/test/QueryTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/test/RangeItemTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/test/RangeItemTestCase.java
index 4802a3a2cb5..3032a7b625f 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/test/RangeItemTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/test/RangeItemTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.test;
import com.yahoo.prelude.query.IntItem;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/test/SameElementItemTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/test/SameElementItemTestCase.java
index bb3a775ccf2..c05d7d48f6b 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/test/SameElementItemTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/test/SameElementItemTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.test;
import com.yahoo.prelude.query.AndItem;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/test/SegmentItemTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/test/SegmentItemTestCase.java
index b41c0c328d6..66653a95dbb 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/test/SegmentItemTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/test/SegmentItemTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.test;
import static org.junit.Assert.*;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/test/WandItemTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/test/WandItemTestCase.java
index 68121dc2391..8a8c4fe3ea7 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/test/WandItemTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/test/WandItemTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.test;
import com.yahoo.io.HexDump;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/test/WeightedSetItemTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/test/WeightedSetItemTestCase.java
index 0aff28c746d..8a335c9119d 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/test/WeightedSetItemTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/test/WeightedSetItemTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.test;
import com.yahoo.prelude.query.CompositeIndexedItem;
diff --git a/container-search/src/test/java/com/yahoo/prelude/query/textualrepresentation/test/TextualQueryRepresentationTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/textualrepresentation/test/TextualQueryRepresentationTestCase.java
index 4b24c88a1db..213f912c0a5 100644
--- a/container-search/src/test/java/com/yahoo/prelude/query/textualrepresentation/test/TextualQueryRepresentationTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/query/textualrepresentation/test/TextualQueryRepresentationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.textualrepresentation.test;
import java.io.BufferedReader;
diff --git a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/CJKSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/CJKSearcherTestCase.java
index 0ca4b8aa615..1d6a4d9e715 100644
--- a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/CJKSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/CJKSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.querytransform.test;
import com.yahoo.component.chain.Chain;
diff --git a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/CollapsePhraseSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/CollapsePhraseSearcherTestCase.java
index 98bd3e8c9e8..c57799c7d3e 100644
--- a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/CollapsePhraseSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/CollapsePhraseSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.querytransform.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/LiteralBoostSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/LiteralBoostSearcherTestCase.java
index 023cd3c2849..a15e8d2c7b5 100644
--- a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/LiteralBoostSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/LiteralBoostSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.querytransform.test;
import com.google.common.collect.ImmutableList;
diff --git a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/NoRankingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/NoRankingSearcherTestCase.java
index d59b2f49562..107a82f3186 100644
--- a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/NoRankingSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/NoRankingSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.querytransform.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/NonPhrasingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/NonPhrasingSearcherTestCase.java
index 95c8327df01..25a2a476b6e 100644
--- a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/NonPhrasingSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/NonPhrasingSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.querytransform.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/NormalizingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/NormalizingSearcherTestCase.java
index bf1ab6fc397..324d06db060 100644
--- a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/NormalizingSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/NormalizingSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.querytransform.test;
import static org.junit.Assert.assertEquals;
diff --git a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/PhraseMatcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/PhraseMatcherTestCase.java
index 82193867580..623c480796c 100644
--- a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/PhraseMatcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/PhraseMatcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.querytransform.test;
import com.yahoo.prelude.query.AndItem;
diff --git a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/PhrasingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/PhrasingSearcherTestCase.java
index 00bb1ca75d0..8f2ae910d1b 100644
--- a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/PhrasingSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/PhrasingSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.querytransform.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/QueryRewriteTestCase.java b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/QueryRewriteTestCase.java
index 6143682c028..0d21bb54dc5 100644
--- a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/QueryRewriteTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/QueryRewriteTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.querytransform.test;
import com.yahoo.prelude.IndexFacts;
diff --git a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/RecallSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/RecallSearcherTestCase.java
index f7d5e5b1a48..5398f828820 100755
--- a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/RecallSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/RecallSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.querytransform.test;
import java.util.ArrayList;
diff --git a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/StemmingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/StemmingSearcherTestCase.java
index 2aeab415559..260b1b40ec1 100644
--- a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/StemmingSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/StemmingSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.querytransform.test;
import com.yahoo.component.chain.Chain;
diff --git a/container-search/src/test/java/com/yahoo/prelude/searcher/test/BlendingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/searcher/test/BlendingSearcherTestCase.java
index 0086f1b3571..cf0758a5c47 100644
--- a/container-search/src/test/java/com/yahoo/prelude/searcher/test/BlendingSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/searcher/test/BlendingSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.searcher.test;
import java.util.Arrays;
diff --git a/container-search/src/test/java/com/yahoo/prelude/searcher/test/FieldCollapsingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/searcher/test/FieldCollapsingSearcherTestCase.java
index 12619bf0a5e..ee8fe66d3ac 100644
--- a/container-search/src/test/java/com/yahoo/prelude/searcher/test/FieldCollapsingSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/searcher/test/FieldCollapsingSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.searcher.test;
import com.google.common.util.concurrent.MoreExecutors;
diff --git a/container-search/src/test/java/com/yahoo/prelude/searcher/test/JSONDebugSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/searcher/test/JSONDebugSearcherTestCase.java
index 88d207f35cb..2841ce5521a 100644
--- a/container-search/src/test/java/com/yahoo/prelude/searcher/test/JSONDebugSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/searcher/test/JSONDebugSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.searcher.test;
import com.yahoo.component.chain.Chain;
diff --git a/container-search/src/test/java/com/yahoo/prelude/searcher/test/JuniperSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/searcher/test/JuniperSearcherTestCase.java
index 909d641225d..706d217269b 100644
--- a/container-search/src/test/java/com/yahoo/prelude/searcher/test/JuniperSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/searcher/test/JuniperSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.searcher.test;
import static org.junit.Assert.assertEquals;
diff --git a/container-search/src/test/java/com/yahoo/prelude/searcher/test/MultipleResultsTestCase.java b/container-search/src/test/java/com/yahoo/prelude/searcher/test/MultipleResultsTestCase.java
index aca2386facc..0a250c9b973 100644
--- a/container-search/src/test/java/com/yahoo/prelude/searcher/test/MultipleResultsTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/searcher/test/MultipleResultsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.searcher.test;
import com.yahoo.component.chain.Chain;
diff --git a/container-search/src/test/java/com/yahoo/prelude/searcher/test/PosSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/searcher/test/PosSearcherTestCase.java
index b0c593ea405..b10eed7826a 100644
--- a/container-search/src/test/java/com/yahoo/prelude/searcher/test/PosSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/searcher/test/PosSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.searcher.test;
import com.google.common.util.concurrent.MoreExecutors;
diff --git a/container-search/src/test/java/com/yahoo/prelude/searcher/test/QuotingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/searcher/test/QuotingSearcherTestCase.java
index 691f877dfba..0d5e5d1b3e4 100644
--- a/container-search/src/test/java/com/yahoo/prelude/searcher/test/QuotingSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/searcher/test/QuotingSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.searcher.test;
import com.google.common.util.concurrent.MoreExecutors;
diff --git a/container-search/src/test/java/com/yahoo/prelude/searcher/test/ValidatePredicateSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/searcher/test/ValidatePredicateSearcherTestCase.java
index 850586ba8c5..aafbc071527 100644
--- a/container-search/src/test/java/com/yahoo/prelude/searcher/test/ValidatePredicateSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/searcher/test/ValidatePredicateSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.searcher.test;
import com.google.common.util.concurrent.MoreExecutors;
diff --git a/container-search/src/test/java/com/yahoo/prelude/searcher/test/ValidateSortingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/searcher/test/ValidateSortingSearcherTestCase.java
index f4bf957e29a..743d6e43f4c 100644
--- a/container-search/src/test/java/com/yahoo/prelude/searcher/test/ValidateSortingSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/searcher/test/ValidateSortingSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.searcher.test;
import com.google.common.util.concurrent.MoreExecutors;
diff --git a/container-search/src/test/java/com/yahoo/prelude/searcher/test/testhit.xml b/container-search/src/test/java/com/yahoo/prelude/searcher/test/testhit.xml
index 013af19f3cf..f42ace5df8c 100644
--- a/container-search/src/test/java/com/yahoo/prelude/searcher/test/testhit.xml
+++ b/container-search/src/test/java/com/yahoo/prelude/searcher/test/testhit.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<result total-hit-count="3">
<error code="5">Unspecified error</error>
<errordetails>
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/parser/test/SemanticsParserTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/parser/test/SemanticsParserTestCase.java
index ee93f5b5b2b..ca5bb4d4cd2 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/parser/test/SemanticsParserTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/parser/test/SemanticsParserTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.parser.test;
import java.util.Iterator;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/parser/test/rules.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/parser/test/rules.sr
index bd3a5008ac8..205dff1e8e4 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/parser/test/rules.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/parser/test/rules.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@default
@automata(src/test/java/com/yahoo/prelude/semantics/parser/test/semantics.fsa)
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/AlibabaTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/AlibabaTestCase.java
index f3e9a174288..d1000e031da 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/AlibabaTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/AlibabaTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/AnchorTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/AnchorTestCase.java
index 960a790c671..9173053e660 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/AnchorTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/AnchorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/AutomataNotTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/AutomataNotTestCase.java
index cda5bf91fd4..4493038fc86 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/AutomataNotTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/AutomataNotTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import org.junit.Ignore;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/AutomataTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/AutomataTestCase.java
index 70952ece676..43e8e0a30cf 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/AutomataTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/AutomataTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/BacktrackingTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/BacktrackingTestCase.java
index 68c870872b9..a968daabcea 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/BacktrackingTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/BacktrackingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import java.util.ArrayList;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/BlendingTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/BlendingTestCase.java
index 2b3a33d1662..9e590698f4a 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/BlendingTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/BlendingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/CJKTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/CJKTestCase.java
index 0f0644c22cb..0aaa5f2cea7 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/CJKTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/CJKTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/ComparisonTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/ComparisonTestCase.java
index 70b637754ce..988d69a55d3 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/ComparisonTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/ComparisonTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/ComparisonsTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/ComparisonsTestCase.java
index 3e322039240..a8fe78ac1ff 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/ComparisonsTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/ComparisonsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/ConditionTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/ConditionTestCase.java
index 295fd713c1d..86ee9b5948b 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/ConditionTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/ConditionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/ConfigurationTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/ConfigurationTestCase.java
index ed09e47f3b3..b690cddabe1 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/ConfigurationTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/ConfigurationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import com.google.common.util.concurrent.MoreExecutors;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/DuplicateRuleTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/DuplicateRuleTestCase.java
index 338864ba2eb..fb86beaa9bc 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/DuplicateRuleTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/DuplicateRuleTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import com.yahoo.prelude.semantics.RuleBaseException;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/Ellipsis2TestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/Ellipsis2TestCase.java
index 77f3c656b4c..28ffe549711 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/Ellipsis2TestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/Ellipsis2TestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/EllipsisTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/EllipsisTestCase.java
index 2672a91ce62..1c570220f52 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/EllipsisTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/EllipsisTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/ExactMatchTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/ExactMatchTestCase.java
index c811867f82c..8f9c33dab51 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/ExactMatchTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/ExactMatchTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/ExactMatchTrickTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/ExactMatchTrickTestCase.java
index 4f2e1c79ba7..a2ff6ae5b82 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/ExactMatchTrickTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/ExactMatchTrickTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/ExpansionTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/ExpansionTestCase.java
index fa6b4eefdd5..111f37bf8e4 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/ExpansionTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/ExpansionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/InheritanceTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/InheritanceTestCase.java
index 7c998fc43ee..a78f1aa7d2a 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/InheritanceTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/InheritanceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import java.util.ArrayList;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/LabelMatchingTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/LabelMatchingTestCase.java
index 1f98156c226..d45e114e89f 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/LabelMatchingTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/LabelMatchingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import java.io.IOException;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/MatchAllTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/MatchAllTestCase.java
index 40927539a2f..22b24e1a0b0 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/MatchAllTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/MatchAllTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/MatchOnlyIfNotOnlyTermTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/MatchOnlyIfNotOnlyTermTestCase.java
index 6fd7c78eee0..ca78cae70ea 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/MatchOnlyIfNotOnlyTermTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/MatchOnlyIfNotOnlyTermTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/NoStemmingTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/NoStemmingTestCase.java
index be19140cc97..7acecdcf00b 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/NoStemmingTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/NoStemmingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/NotTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/NotTestCase.java
index ae46dfaf55e..c76db0a7afd 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/NotTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/NotTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/NumbersTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/NumbersTestCase.java
index d2b3e2443c9..b18cafdd161 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/NumbersTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/NumbersTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/NumericTermsTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/NumericTermsTestCase.java
index 65c10608658..f76deeacbb5 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/NumericTermsTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/NumericTermsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/OrPhraseTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/OrPhraseTestCase.java
index dcd52c2735b..3051dd77190 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/OrPhraseTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/OrPhraseTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/Parameter2TestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/Parameter2TestCase.java
index 4695e048a3b..66ceccc1c47 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/Parameter2TestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/Parameter2TestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/ParameterTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/ParameterTestCase.java
index 05e6eb226db..cd5743c6d77 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/ParameterTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/ParameterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/PhraseMatchTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/PhraseMatchTestCase.java
index 5cee88de849..fd9003e0e05 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/PhraseMatchTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/PhraseMatchTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import org.junit.Ignore;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/ProductionRuleTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/ProductionRuleTestCase.java
index 6c0084d1bdc..8b883759215 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/ProductionRuleTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/ProductionRuleTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/RuleBaseAbstractTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/RuleBaseAbstractTestCase.java
index 81d359a804d..5a7599e66cc 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/RuleBaseAbstractTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/RuleBaseAbstractTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import com.google.common.util.concurrent.MoreExecutors;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/SegmentSubstitutionTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/SegmentSubstitutionTestCase.java
index a4cf7d8c380..94332a52fed 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/SegmentSubstitutionTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/SegmentSubstitutionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import com.yahoo.language.Language;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/SemanticSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/SemanticSearcherTestCase.java
index 2e43eae3775..20179df7b97 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/SemanticSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/SemanticSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import com.google.common.util.concurrent.MoreExecutors;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/StemmingTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/StemmingTestCase.java
index ec64690c574..136381df552 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/StemmingTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/StemmingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/StopwordTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/StopwordTestCase.java
index dfcfcee2955..6b1e551edfa 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/StopwordTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/StopwordTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/UrlTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/UrlTestCase.java
index 2a563362928..9bc64370030 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/UrlTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/UrlTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/WeightingTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/WeightingTestCase.java
index 3e684ca6c04..d89e6fdbfa3 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/WeightingTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/WeightingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.semantics.test;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/alibaba.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/alibaba.sr
index ab481ce85af..af25ade1941 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/alibaba.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/alibaba.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
3100 -> nokia 3100;
legend -> lenovo;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/anchor.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/anchor.sr
index 6a89f5061bc..7366ac86be6 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/anchor.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/anchor.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
. first -> anchor;
last . -> anchor;
. word. -> anchor;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/automatanot.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/automatanot.sr
index 81efe290ca9..ff9d7adb500 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/automatanot.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/automatanot.sr
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
![B] +> $busname:[B];
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/automatarules.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/automatarules.sr
index 19b79bf0f6d..89953aafd99 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/automatarules.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/automatarules.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# For testing referenced inverted matches
parameter.donomatch ![C] -> nomatch:[C];
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/backtrackingrules.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/backtrackingrules.sr
index 86744a6370e..4a4859ec7d8 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/backtrackingrules.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/backtrackingrules.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Literals
[case1pos1],[case1pos2] -> replaced;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/blending.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/blending.sr
index c5c404b8c02..e925dadfb71 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/blending.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/blending.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
[...] cd +> parameter.search='music';
[car] +> parameter.search='cars';
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/cjk.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/cjk.sr
index 96a0d693566..c584d5158bf 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/cjk.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/cjk.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Use unicode equivalents in java source:
#
# 佳:\u4f73
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/comparison.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/comparison.sr
index 0075893316b..d9a9e9e2d17 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/comparison.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/comparison.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
[island] +> island:[island];
[coffee] +> coffee:[coffee];
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/comparisons.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/comparisons.sr
index 1e7cc883b85..b8bf5cc7836 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/comparisons.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/comparisons.sr
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
[...] parameter.ranking='category' +> $foo:[...];
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/duplicaterules.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/duplicaterules.sr
index 081e33d8825..731826a079f 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/duplicaterules.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/duplicaterules.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Duplicate rule definition
[something] -> hello there
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/ellipsis.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/ellipsis.sr
index 8a98b9fd9bf..c45fe057d75 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/ellipsis.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/ellipsis.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# tests rules containing ellipses (wildcards)
# From tutorial, referenced ellipsis
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/ellipsis2.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/ellipsis2.sr
index 3fcecb9a675..df4be8faf42 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/ellipsis2.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/ellipsis2.sr
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
[...] +> someindex:[...] ;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/exactmatch.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/exactmatch.sr
index b2cfaa16dc6..9d4c0f04286 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/exactmatch.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/exactmatch.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
. primetime notime . -> primetime in no time;
. primetime . -> primetime in no time;
. prime time in no time . -> primetime in no time;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/exactmatchtrick.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/exactmatchtrick.sr
index d4d3436f345..74e37a63d18 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/exactmatchtrick.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/exactmatchtrick.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
primetime notime -> default:primetime default:in default:no default:time;
primetime -> default:primetime default:in default:no default:time;
prime time in no time -> default:primetime default:in default:no default:time;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/expansion.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/expansion.sr
index d03f060cbde..32f8e86b59f 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/expansion.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/expansion.sr
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
or1 +> ?or2 ?or3;
equiv1 +> =equiv2 =equiv3;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/child1.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/child1.sr
index c874e336bc5..4c099b9c540 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/child1.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/child1.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vw -> audi;
@include(parent.sr)
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/child2.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/child2.sr
index 8c68ab23457..d541019bdd0 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/child2.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/child2.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@include(parent)
vehiclebrand:vw -> vehiclebrand:audi;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/cjk.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/cjk.sr
index 1ee3f695145..cf884577eca 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/cjk.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/cjk.sr
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
?? -> ???;
@default
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/grandchild.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/grandchild.sr
index 666839499b3..427384cd4cd 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/grandchild.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/grandchild.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@include(child1.sr)
@include(child2.sr)
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/grandfather.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/grandfather.sr
index 47d5f017c5d..1a0bc121ae6 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/grandfather.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/grandfather.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
[vehicle] :- car, motorcycle, bus;
cars -> car;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/grandmother.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/grandmother.sr
index 67a9287c0ca..30a2921a00f 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/grandmother.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/grandmother.sr
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vehiclebrand:bmw +> expensivetv;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/parent.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/parent.sr
index 7d032563707..0ef0f0613a9 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/parent.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/inheritingrules/parent.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@include(grandfather.sr)
[brand] [vehicle] -> vehiclebrand:[brand];
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/labelmatching.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/labelmatching.sr
index bbfbdb5f397..c132e122665 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/labelmatching.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/labelmatching.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@default
term -> matched:term;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/match-only-if-not-only-term.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/match-only-if-not-only-term.sr
index f368bd126c1..c6ef3c397ca 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/match-only-if-not-only-term.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/match-only-if-not-only-term.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
snl -> saturday night live;
[snlterm] -> $showname:[snlterm]!1000;
[snlterm] :- saturday night live;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/matchall.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/matchall.sr
index bc4cbcdfae6..046dcac2de2 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/matchall.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/matchall.sr
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
[...] +> $normtitle:[...];
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/nostemming.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/nostemming.sr
index 9318c29bebb..bf0bcfe0f34 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/nostemming.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/nostemming.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@stemming(false)
i:as -> i:arts i:sciences;
i:asc -> i:arts i:sciences i:crafts;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/not.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/not.sr
index 0102ea05759..b4a298839d7 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/not.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/not.sr
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
[...] !parameter.ranking='category' +> $foo:[...];
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/numbers.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/numbers.sr
index aed72364d2b..25403f1bd5e 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/numbers.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/numbers.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
1337 -> leet;
leet -> elite;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/numericterms.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/numericterms.sr
index 5061e681a73..94d1b4fe897 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/numericterms.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/numericterms.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
[REST] +> -ycat2gc:96929265;
[REST] :- restaurant, restaurants;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/orphrase.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/orphrase.sr
index 2ebbeddf093..51b6040a8c6 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/orphrase.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/orphrase.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@default
[title] -> ?title:"software engineer";
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/parameter.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/parameter.sr
index 3531bab3566..a27c3b9ab62 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/parameter.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/parameter.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
[...] parameter.ranking='category' +> $foo:[...];
parameter.hits>='11' +> largepage;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/parameter2.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/parameter2.sr
index 0ce6eb5a575..3cc00be5123 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/parameter2.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/parameter2.sr
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
parameter.ranking='usrank' -> parameter.ranking='date';
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/phrasematch.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/phrasematch.sr
index 70351ba8ba1..25bf1cf449e 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/phrasematch.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/phrasematch.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
[ret] -> retailer:[ret];
[ret] :- keyword:[B];
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/rules.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/rules.sr
index 07803b4e126..b187df82fe3 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/rules.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/rules.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Local use case
[listing] [preposition] [place] -> listing:[listing]
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/semantic-rules.cfg b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/semantic-rules.cfg
index 0fe06d848c9..bdb824b0431 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/semantic-rules.cfg
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/semantic-rules.cfg
@@ -1,15 +1,15 @@
rulebase[7]
rulebase[0].name "child1"
-rulebase[0].rules "# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.\nvw -> audi;\n\n@include(parent.sr)\n\nvehiclebrand:audi -> vehiclebrand:skoda;\n\n"
+rulebase[0].rules "# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.\nvw -> audi;\n\n@include(parent.sr)\n\nvehiclebrand:audi -> vehiclebrand:skoda;\n\n"
rulebase[1].name "child2"
-rulebase[1].rules "# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.\n@include(parent)\n\nvehiclebrand:vw -> vehiclebrand:audi;\n\n[brand] :- @super, skoda;\n\n\n"
+rulebase[1].rules "# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.\n@include(parent)\n\nvehiclebrand:vw -> vehiclebrand:audi;\n\n[brand] :- @super, skoda;\n\n\n"
rulebase[2].name "cjk"
-rulebase[2].rules "# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.\n?? -> ???;\n@default\n"
+rulebase[2].rules "# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.\n?? -> ???;\n@default\n"
rulebase[3].name "grandchild"
-rulebase[3].rules "# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.\n@include(child1.sr)\n@include(child2.sr)\n\ncausesphrase -> "a produced phrase";\n"
+rulebase[3].rules "# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.\n@include(child1.sr)\n@include(child2.sr)\n\ncausesphrase -> "a produced phrase";\n"
rulebase[4].name "grandfather"
-rulebase[4].rules "# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.\n[vehicle] :- car, motorcycle, bus;\n\ncars -> car;\n"
+rulebase[4].rules "# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.\n[vehicle] :- car, motorcycle, bus;\n\ncars -> car;\n"
rulebase[5].name "grandmother"
-rulebase[5].rules "# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.\nvehiclebrand:bmw +> expensivetv;\n"
+rulebase[5].rules "# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.\nvehiclebrand:bmw +> expensivetv;\n"
rulebase[6].name "parent"
-rulebase[6].rules "# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.\n@include(grandfather.sr)\n\n[brand] [vehicle] -> vehiclebrand:[brand];\n\n@include(grandmother.sr)\n\n[brand] :- alfa, audi, bmw;\n"
+rulebase[6].rules "# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.\n@include(grandfather.sr)\n\n[brand] [vehicle] -> vehiclebrand:[brand];\n\n@include(grandmother.sr)\n\n[brand] :- alfa, audi, bmw;\n"
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/stemming.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/stemming.sr
index d08c804553f..f68706646c2 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/stemming.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/stemming.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@stemming(true)
i:as -> i:arts i:sciences;
i:car -> i:vehicle;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/stopwords.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/stopwords.sr
index 948d1d6562e..ccfbda8e555 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/stopwords.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/stopwords.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@default
[stopword] :- the, to, a,i,and,is,of,in,you,it,for,what,that,do,can,have,on,are,or,if,with,how,my,be,but,not,s,this,your,t,get,like,they,me,there,so,know,from,just,as,will,at,all,one,about,when,out,an,would,was,any,has,who,some,good,want,up,by,think,does,no,why,don,more,go,them,then,he,where,need,time,people,other,am,should,we,find,make,help,also,really,because,only,best,which,m,way,their,now,than,see,been,much,could,had,com,very,most ,its,anyone,him,many,use,first,take,his,well,even,say,her,she,work,try,u,too,please,something,were,did,someone,after,question,here,back,give,right,over,going,still,new,http,www,it's,doesn't,what's,that's,can't,how's,there's,when's;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/substitution.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/substitution.sr
index d3272a12a48..006e6be2e80 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/substitution.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/substitution.sr
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
second -> third;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/url.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/url.sr
index 4c45053fc8c..8efcc38c37c 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/url.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/url.sr
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
[youtube] -> fromurl:"youtube com";
[youtube] :- http www youtube com,youtube com,youtube,www utube com,utube com,utube,you tube,u tube;
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/weighting.sr b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/weighting.sr
index 9bd7a5e2598..f4f78676a28 100644
--- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/weighting.sr
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/rulebases/weighting.sr
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
foo -> foo!150;
[bars] foo -> [bars]!57 foo;
kanoo +> boat!237;
diff --git a/container-search/src/test/java/com/yahoo/prelude/test/DummySearcher.java b/container-search/src/test/java/com/yahoo/prelude/test/DummySearcher.java
index 18a10a16e78..8439941abbe 100644
--- a/container-search/src/test/java/com/yahoo/prelude/test/DummySearcher.java
+++ b/container-search/src/test/java/com/yahoo/prelude/test/DummySearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.test;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/test/java/com/yahoo/prelude/test/GetRawWordTestCase.java b/container-search/src/test/java/com/yahoo/prelude/test/GetRawWordTestCase.java
index 477bfd5b9b6..6c500604a81 100644
--- a/container-search/src/test/java/com/yahoo/prelude/test/GetRawWordTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/test/GetRawWordTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.test;
import com.yahoo.prelude.query.AndItem;
diff --git a/container-search/src/test/java/com/yahoo/prelude/test/IndexFactsTestCase.java b/container-search/src/test/java/com/yahoo/prelude/test/IndexFactsTestCase.java
index e2ac44316e7..f4a61dbec86 100644
--- a/container-search/src/test/java/com/yahoo/prelude/test/IndexFactsTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/test/IndexFactsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.test;
import java.util.ArrayList;
diff --git a/container-search/src/test/java/com/yahoo/prelude/test/IntegrationTestCase.java b/container-search/src/test/java/com/yahoo/prelude/test/IntegrationTestCase.java
index 9fed5e1fa3e..b34edbf208c 100644
--- a/container-search/src/test/java/com/yahoo/prelude/test/IntegrationTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/test/IntegrationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.test;
import com.yahoo.search.result.Hit;
diff --git a/container-search/src/test/java/com/yahoo/prelude/test/LocationTestCase.java b/container-search/src/test/java/com/yahoo/prelude/test/LocationTestCase.java
index 9ede1bca8ce..07750613249 100644
--- a/container-search/src/test/java/com/yahoo/prelude/test/LocationTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/test/LocationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.test;
import com.yahoo.prelude.Location;
diff --git a/container-search/src/test/java/com/yahoo/prelude/test/NullSetMemberTestCase.java b/container-search/src/test/java/com/yahoo/prelude/test/NullSetMemberTestCase.java
index f900b4c9d8a..e77f0d00578 100644
--- a/container-search/src/test/java/com/yahoo/prelude/test/NullSetMemberTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/test/NullSetMemberTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.test;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/prelude/test/QueryTestCase.java b/container-search/src/test/java/com/yahoo/prelude/test/QueryTestCase.java
index a04834b261c..14d0e25c3b5 100644
--- a/container-search/src/test/java/com/yahoo/prelude/test/QueryTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/test/QueryTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.test;
import com.yahoo.language.Language;
diff --git a/container-search/src/test/java/com/yahoo/prelude/test/ResultTestCase.java b/container-search/src/test/java/com/yahoo/prelude/test/ResultTestCase.java
index 24ce9c9b7b7..edbfe558ffd 100644
--- a/container-search/src/test/java/com/yahoo/prelude/test/ResultTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/test/ResultTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.test;
import java.util.Iterator;
diff --git a/container-search/src/test/java/com/yahoo/prelude/test/integration/FirstSearcher.java b/container-search/src/test/java/com/yahoo/prelude/test/integration/FirstSearcher.java
index 10bb6e94cdf..7a249a729ab 100644
--- a/container-search/src/test/java/com/yahoo/prelude/test/integration/FirstSearcher.java
+++ b/container-search/src/test/java/com/yahoo/prelude/test/integration/FirstSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.test.integration;
import com.yahoo.search.result.Hit;
diff --git a/container-search/src/test/java/com/yahoo/prelude/test/integration/SecondSearcher.java b/container-search/src/test/java/com/yahoo/prelude/test/integration/SecondSearcher.java
index e6f74fc7263..0bc88b32958 100644
--- a/container-search/src/test/java/com/yahoo/prelude/test/integration/SecondSearcher.java
+++ b/container-search/src/test/java/com/yahoo/prelude/test/integration/SecondSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.test.integration;
import com.yahoo.search.result.Hit;
diff --git a/container-search/src/test/java/com/yahoo/prelude/test/integration/ThirdSearcher.java b/container-search/src/test/java/com/yahoo/prelude/test/integration/ThirdSearcher.java
index d84c2e391da..767e9093a52 100644
--- a/container-search/src/test/java/com/yahoo/prelude/test/integration/ThirdSearcher.java
+++ b/container-search/src/test/java/com/yahoo/prelude/test/integration/ThirdSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.test.integration;
import com.yahoo.search.result.Hit;
diff --git a/container-search/src/test/java/com/yahoo/search/cluster/test/ClusterSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/cluster/test/ClusterSearcherTestCase.java
index 8dcc25e4b3b..bf44c57a777 100644
--- a/container-search/src/test/java/com/yahoo/search/cluster/test/ClusterSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/cluster/test/ClusterSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.cluster.test;
import java.util.ArrayList;
diff --git a/container-search/src/test/java/com/yahoo/search/cluster/test/ClusteredConnectionTestCase.java b/container-search/src/test/java/com/yahoo/search/cluster/test/ClusteredConnectionTestCase.java
index a824edd1996..1e35b6447ff 100644
--- a/container-search/src/test/java/com/yahoo/search/cluster/test/ClusteredConnectionTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/cluster/test/ClusteredConnectionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.cluster.test;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/DispatcherTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/DispatcherTest.java
index be761acf2c2..42df2a829e3 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/DispatcherTest.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/DispatcherTest.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch;
import com.yahoo.prelude.fastsearch.VespaBackEndSearcher;
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/InterleavedSearchInvokerTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/InterleavedSearchInvokerTest.java
index 21a15165ab3..22044bfb9d9 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/InterleavedSearchInvokerTest.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/InterleavedSearchInvokerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch;
import com.yahoo.document.GlobalId;
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/LoadBalancerTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/LoadBalancerTest.java
index d0ba396ef94..7254236319d 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/LoadBalancerTest.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/LoadBalancerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch;
import com.yahoo.search.dispatch.LoadBalancer.AdaptiveScheduler;
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/MockInvoker.java b/container-search/src/test/java/com/yahoo/search/dispatch/MockInvoker.java
index d86fcdfc25d..aca84386af7 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/MockInvoker.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/MockInvoker.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch;
import com.yahoo.prelude.fastsearch.FastHit;
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/MockSearchCluster.java b/container-search/src/test/java/com/yahoo/search/dispatch/MockSearchCluster.java
index 8db54218e56..2acce0f8d2d 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/MockSearchCluster.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/MockSearchCluster.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch;
import com.google.common.collect.ImmutableList;
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/SearchPathTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/SearchPathTest.java
index 7633bbda913..0366d4873e0 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/SearchPathTest.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/SearchPathTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch;
import com.yahoo.search.dispatch.SearchPath.InvalidSearchPathException;
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/TopKEstimatorTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/TopKEstimatorTest.java
index 795c7cfef20..5dfcd8901da 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/TopKEstimatorTest.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/TopKEstimatorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/rpc/FillTestCase.java b/container-search/src/test/java/com/yahoo/search/dispatch/rpc/FillTestCase.java
index 5bdeb340678..288167022d8 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/rpc/FillTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/rpc/FillTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch.rpc;
import com.yahoo.prelude.fastsearch.DocsumDefinition;
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/rpc/MockClient.java b/container-search/src/test/java/com/yahoo/search/dispatch/rpc/MockClient.java
index 1a0037e4b8a..8ebdfcc1a12 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/rpc/MockClient.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/rpc/MockClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch.rpc;
import com.yahoo.compress.CompressionType;
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterCoverageTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterCoverageTest.java
index 8101aee74fd..c21bf623366 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterCoverageTest.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterCoverageTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch.searchcluster;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTest.java
index f46717ce180..22cc783967d 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTest.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTest.java
@@ -58,7 +58,7 @@ public class SearchClusterTest {
numDocsPerNode.add(new AtomicInteger(1));
pingCounts.add(new AtomicInteger(0));
}
- searchCluster = new SearchCluster(clusterId, MockSearchCluster.createDispatchConfig(nodes), nodes.size() / nodesPerGroup,
+ searchCluster = new SearchCluster(clusterId, MockSearchCluster.createDispatchConfig(nodes),
vipStatus, new Factory(nodesPerGroup, numDocsPerNode, pingCounts));
clusterMonitor = new ClusterMonitor(searchCluster, false);
searchCluster.addMonitoring(clusterMonitor);
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTester.java b/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTester.java
index 5e7ecb854ff..b5816d0c4f2 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTester.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTester.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.dispatch.searchcluster;
import com.yahoo.search.dispatch.MockSearchCluster;
diff --git a/container-search/src/test/java/com/yahoo/search/federation/FederationResultTest.java b/container-search/src/test/java/com/yahoo/search/federation/FederationResultTest.java
index a1e85a454fb..3cd9e4a6408 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/FederationResultTest.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/FederationResultTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation;
import com.google.common.collect.ImmutableSet;
diff --git a/container-search/src/test/java/com/yahoo/search/federation/sourceref/test/SearchChainResolverTestCase.java b/container-search/src/test/java/com/yahoo/search/federation/sourceref/test/SearchChainResolverTestCase.java
index 5b6d3b6abce..2d7e1c0ab5c 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/sourceref/test/SearchChainResolverTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/sourceref/test/SearchChainResolverTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation.sourceref.test;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/test/java/com/yahoo/search/federation/sourceref/test/SourceRefResolverTestCase.java b/container-search/src/test/java/com/yahoo/search/federation/sourceref/test/SourceRefResolverTestCase.java
index 43f42685021..27412eb6c3f 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/sourceref/test/SourceRefResolverTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/sourceref/test/SourceRefResolverTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation.sourceref.test;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/test/java/com/yahoo/search/federation/test/AddHitsWithRelevanceSearcher.java b/container-search/src/test/java/com/yahoo/search/federation/test/AddHitsWithRelevanceSearcher.java
index b3cf5968651..9c885a1632b 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/test/AddHitsWithRelevanceSearcher.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/test/AddHitsWithRelevanceSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/federation/test/BlockingSearcher.java b/container-search/src/test/java/com/yahoo/search/federation/test/BlockingSearcher.java
index 488b3cc9aac..fd2ae7fad61 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/test/BlockingSearcher.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/test/BlockingSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/federation/test/DuplicateSourceTestCase.java b/container-search/src/test/java/com/yahoo/search/federation/test/DuplicateSourceTestCase.java
index b9b29f5fc2b..c8a1007f366 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/test/DuplicateSourceTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/test/DuplicateSourceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation.test;
import com.google.common.collect.ImmutableList;
diff --git a/container-search/src/test/java/com/yahoo/search/federation/test/FederationSearcherTest.java b/container-search/src/test/java/com/yahoo/search/federation/test/FederationSearcherTest.java
index 2d214f9402d..b42500ee4f5 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/test/FederationSearcherTest.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/test/FederationSearcherTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation.test;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/test/java/com/yahoo/search/federation/test/FederationSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/federation/test/FederationSearcherTestCase.java
index 65cb4dff1f8..33198b4496e 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/test/FederationSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/test/FederationSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation.test;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/test/java/com/yahoo/search/federation/test/FederationTester.java b/container-search/src/test/java/com/yahoo/search/federation/test/FederationTester.java
index bfe51c15d46..393529781b2 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/test/FederationTester.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/test/FederationTester.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation.test;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/test/java/com/yahoo/search/federation/test/HitCountTestCase.java b/container-search/src/test/java/com/yahoo/search/federation/test/HitCountTestCase.java
index a5eb5b35087..74eb7992a38 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/test/HitCountTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/test/HitCountTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/federation/test/SetHitCountsSearcher.java b/container-search/src/test/java/com/yahoo/search/federation/test/SetHitCountsSearcher.java
index ab49f3c313e..36b5e7efa37 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/test/SetHitCountsSearcher.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/test/SetHitCountsSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.federation.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/ContinuationTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/ContinuationTestCase.java
index 8546769ad07..217fd4af400 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/ContinuationTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/ContinuationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/GroupingQueryParserTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/GroupingQueryParserTestCase.java
index 90459fe614f..bbb461a939c 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/GroupingQueryParserTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/GroupingQueryParserTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/GroupingRequestTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/GroupingRequestTestCase.java
index fb08b39de4d..4bc827dde7a 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/GroupingRequestTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/GroupingRequestTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping;
import com.yahoo.processing.request.CompoundName;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/GroupingValidatorTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/GroupingValidatorTestCase.java
index 9723f96af27..8f757a0dd49 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/GroupingValidatorTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/GroupingValidatorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping;
import com.yahoo.vespa.config.search.AttributesConfig;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/UniqueGroupingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/UniqueGroupingSearcherTestCase.java
index 86ab96a2197..c5b608db4e2 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/UniqueGroupingSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/UniqueGroupingSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping;
import com.yahoo.component.chain.Chain;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/request/BucketResolverTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/request/BucketResolverTestCase.java
index ed2d158397f..50058f3777f 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/request/BucketResolverTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/request/BucketResolverTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/request/ExpressionVisitorTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/request/ExpressionVisitorTestCase.java
index 13a5160ba86..24ce3cfea32 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/request/ExpressionVisitorTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/request/ExpressionVisitorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/request/GroupingOperationTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/request/GroupingOperationTestCase.java
index 2cffe195387..0e89f348449 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/request/GroupingOperationTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/request/GroupingOperationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import com.yahoo.search.grouping.request.parser.ParseException;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/request/MathFunctionsTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/request/MathFunctionsTestCase.java
index 8a59c7b0749..522e72d31b9 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/request/MathFunctionsTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/request/MathFunctionsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/request/MathResolverTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/request/MathResolverTestCase.java
index 68d2177f2f7..734e2c6a0cb 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/request/MathResolverTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/request/MathResolverTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/request/RawBufferTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/request/RawBufferTestCase.java
index 9ec717e5584..dfa297b4fa6 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/request/RawBufferTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/request/RawBufferTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/request/RequestTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/request/RequestTestCase.java
index b049721a525..c02e46fae98 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/request/RequestTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/request/RequestTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/request/parser/GroupingParserBenchmarkTest.java b/container-search/src/test/java/com/yahoo/search/grouping/request/parser/GroupingParserBenchmarkTest.java
index 6d9c2218022..56444a99ed3 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/request/parser/GroupingParserBenchmarkTest.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/request/parser/GroupingParserBenchmarkTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request.parser;
import com.yahoo.search.grouping.request.GroupingOperation;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/request/parser/GroupingParserTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/request/parser/GroupingParserTestCase.java
index c6686471dc8..08997244adf 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/request/parser/GroupingParserTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/request/parser/GroupingParserTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request.parser;
import com.yahoo.search.grouping.request.AllOperation;
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 c2ce29a9e7d..01eba55924f 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,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// 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 org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/result/GroupListTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/result/GroupListTestCase.java
index b8cc25930e2..33e8f119ec9 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/result/GroupListTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/result/GroupListTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// 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.search.grouping.Continuation;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/result/GroupTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/result/GroupTestCase.java
index fd4e8d60711..47f82205689 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/result/GroupTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/result/GroupTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// 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.search.result.Hit;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/result/HitListTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/result/HitListTestCase.java
index 8203691e11e..2404af09c7a 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/result/HitListTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/result/HitListTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// 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.search.grouping.Continuation;
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 6d2c66f34b8..7f70178bcf7 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
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// 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.search.grouping.Continuation;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/vespa/CompositeContinuationTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/vespa/CompositeContinuationTestCase.java
index b9887495940..a440fcaac7a 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/vespa/CompositeContinuationTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/vespa/CompositeContinuationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
import com.yahoo.search.grouping.Continuation;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingExecutorTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingExecutorTestCase.java
index 84a6fc418a1..1ba34480e60 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingExecutorTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingExecutorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingTransformTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingTransformTestCase.java
index 161c3a24801..c6503617da5 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingTransformTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingTransformTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
import com.yahoo.search.grouping.Continuation;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/vespa/HitConverterTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/vespa/HitConverterTestCase.java
index 7bdf1916d85..ba54c3808f2 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/vespa/HitConverterTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/vespa/HitConverterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
import com.yahoo.document.DocumentId;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/vespa/IntegerDecoderTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/vespa/IntegerDecoderTestCase.java
index 251dcff0ba4..7d0827f0eb7 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/vespa/IntegerDecoderTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/vespa/IntegerDecoderTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/vespa/IntegerEncoderTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/vespa/IntegerEmbedderTestCase.java
index 3b48ae35fcf..e7a4f1572c5 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/vespa/IntegerEncoderTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/vespa/IntegerEmbedderTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
import org.junit.Test;
@@ -8,7 +8,7 @@ import static org.junit.Assert.assertEquals;
/**
* @author Simon Thoresen Hult
*/
-public class IntegerEncoderTestCase {
+public class IntegerEmbedderTestCase {
@Test
public void requireThatIntEncoderWorksAsExpected() {
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/vespa/OffsetContinuationTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/vespa/OffsetContinuationTestCase.java
index f99b170dcbb..7242e5ba054 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/vespa/OffsetContinuationTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/vespa/OffsetContinuationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
import com.yahoo.search.grouping.Continuation;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/vespa/RequestBuilderTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/vespa/RequestBuilderTestCase.java
index f61299bd317..4397831af6e 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/vespa/RequestBuilderTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/vespa/RequestBuilderTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
import com.yahoo.search.grouping.Continuation;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/vespa/ResultBuilderTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/vespa/ResultBuilderTestCase.java
index df024681eae..3bc5a7c245c 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/vespa/ResultBuilderTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/vespa/ResultBuilderTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
import com.yahoo.document.GlobalId;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/vespa/ResultIdTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/vespa/ResultIdTestCase.java
index 35d39bcc2a9..8afaa4922ec 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/vespa/ResultIdTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/vespa/ResultIdTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.vespa;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/search/handler/SearchHandlerTest.java b/container-search/src/test/java/com/yahoo/search/handler/SearchHandlerTest.java
index 2b584c7b285..33b320f0de7 100644
--- a/container-search/src/test/java/com/yahoo/search/handler/SearchHandlerTest.java
+++ b/container-search/src/test/java/com/yahoo/search/handler/SearchHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.handler;
import com.yahoo.container.Container;
diff --git a/container-search/src/test/java/com/yahoo/search/handler/test/JSONSearchHandlerTestCase.java b/container-search/src/test/java/com/yahoo/search/handler/test/JSONSearchHandlerTestCase.java
index 80e629ca4cb..6079c03ec5c 100644
--- a/container-search/src/test/java/com/yahoo/search/handler/test/JSONSearchHandlerTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/handler/test/JSONSearchHandlerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.handler.test;
import com.fasterxml.jackson.databind.JsonNode;
diff --git a/container-search/src/test/java/com/yahoo/search/match/test/DocumentDbTest.java b/container-search/src/test/java/com/yahoo/search/match/test/DocumentDbTest.java
index b660d5fca5f..eff9c2f558f 100644
--- a/container-search/src/test/java/com/yahoo/search/match/test/DocumentDbTest.java
+++ b/container-search/src/test/java/com/yahoo/search/match/test/DocumentDbTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.match.test;
import com.yahoo.document.*;
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/MapPageTemplateXMLReadingTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/MapPageTemplateXMLReadingTestCase.java
index 51f87538aa5..b8457344944 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/MapPageTemplateXMLReadingTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/MapPageTemplateXMLReadingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.config.test;
import com.yahoo.search.pagetemplates.PageTemplate;
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/PageTemplateXMLReadingTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/PageTemplateXMLReadingTestCase.java
index a7f79a0ee93..1b845802ec3 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/PageTemplateXMLReadingTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/PageTemplateXMLReadingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.config.test;
import com.yahoo.search.pagetemplates.PageTemplate;
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/choiceFooter.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/choiceFooter.xml
index 3de46d65df1..13403b8aa7d 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/choiceFooter.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/choiceFooter.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="choiceFooter">
<choice>
<section layout="row" source="popularSearches"/>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/choiceHeader.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/choiceHeader.xml
index 33f596f03ca..5031f656f70 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/choiceHeader.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/choiceHeader.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="choiceHeader">
<choice>
<section layout="row">
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/footer.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/footer.xml
index 1efc987f73e..8b88c1e963c 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/footer.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/footer.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="footer">
<section layout="row" source="popularSearches"/>
<section id="extraFooter" layout="row" source="topArticles"/>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/generic.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/generic.xml
index 5ae6901e28b..6104cc02df8 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/generic.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/generic.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="generic">
<section source="image flickr"/>
<section source="*"/>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/header.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/header.xml
index c7abc9129f7..aaa9d8ed78c 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/header.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/header.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="header">
<section layout="row">
<section source="global"/>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/includer.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/includer.xml
index 2c446590a66..079701bc45f 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/includer.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/includer.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="includer" description="Demonstrates the various include cases">
<section id="case1" description="No choices">
<include idref="header"/>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/invalidfilename/invalid.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/invalidfilename/invalid.xml
index 2bf90d9815a..41c6dd97cc8 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/invalidfilename/invalid.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/invalidfilename/invalid.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="notinvalid">
</page>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/mapexamples/map1.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/mapexamples/map1.xml
index e6698beffaf..66812ff65d8 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/mapexamples/map1.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/mapexamples/map1.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="map1" layout="column" description="Contains 4 boxes, to which 4 sources may be added">
<section layout="row" description="row 1">
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/richSerp.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/richSerp.xml
index 6bf6c539ac1..1783e9685de 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/richSerp.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/richSerp.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="richSerp" layout="mainAndRight">
<section layout="row" region="main">
<section layout="column" description="left main pane">
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/richerSerp.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/richerSerp.xml
index d114167fcdd..ac21d1f8c75 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/richerSerp.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/richerSerp.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="richerSerp" layout="column">
<include idref="header"/>
<section layout="mainAndRight">
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/serp.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/serp.xml
index 4d172b40de1..20a3129958e 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/serp.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/serp.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="serp" layout="mainAndRight">
<section layout="column" region="main" source="web"/>
<section layout="column" region="right" source="ads"/>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/slottingSerp.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/slottingSerp.xml
index 7dbea6a4399..067ff04b557 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/slottingSerp.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/config/test/examples/slottingSerp.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="slottingSerp" layout="mainAndRight">
<section layout="column" region="main" source="*" order="-[rank]"/>
<section layout="column" region="right" source="ads"/>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/AnySource.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/AnySource.xml
index b2489d3b959..8bf02c95c72 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/AnySource.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/AnySource.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="AnySource" source="source3 *">
</page>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/AnySourceResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/AnySourceResult.xml
index f1b2c823681..4321be95c1a 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/AnySourceResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/AnySourceResult.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page version="1.0">
<content>
<hit relevance="1.0" source="source3">
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/AnySourceTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/AnySourceTestCase.java
index 503258b7ced..4ee07db691b 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/AnySourceTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/AnySourceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfRenderers.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfRenderers.xml
index b9d1e6ba917..29b7d3411a6 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfRenderers.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfRenderers.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="ChoiceOfRenderers" source="source1 source2">
<choice>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfRenderersResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfRenderersResult.xml
index fc8b2cdc847..42e71a9743b 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfRenderersResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfRenderersResult.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page version="1.0">
<renderer name="sectionLook2"/>
<renderer for="source1" name="source1Look3">
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfRenderersTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfRenderersTestCase.java
index 10d334de3d2..b495f68464e 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfRenderersTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfRenderersTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsections.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsections.xml
index 5c628cbf353..943aaa8cccc 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsections.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsections.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="ChoiceOfSubsections">
<choice method="method1">
<alternative>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsectionsResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsectionsResult.xml
index 01af611c51a..42c77188136 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsectionsResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsectionsResult.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page version="1.0">
<section>
<content>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsectionsTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsectionsTestCase.java
index 8c9e1767989..332d8612954 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsectionsTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsectionsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfTwoSources.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfTwoSources.xml
index 786cb5a62e5..2564bd8c5fa 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfTwoSources.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfTwoSources.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="ChoiceOfTwoSources">
<choice>
<source name="source1"/>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfTwoSourcesResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfTwoSourcesResult.xml
index c02f7469afd..4e9409cc4dc 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfTwoSourcesResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfTwoSourcesResult.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page version="1.0">
<content>
<hit relevance="1.0" source="source2">
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfTwoSourcesTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfTwoSourcesTestCase.java
index 6d50a554609..b7fb22713f2 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfTwoSourcesTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfTwoSourcesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/Choices.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/Choices.xml
index 2639cf4ceea..6dd804ad872 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/Choices.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/Choices.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="Choices">
<choice>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoicesResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoicesResult.xml
index f135f6e1f52..f39c91834a0 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoicesResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoicesResult.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page version="1.0">
<section layout="row">
<section id="section:box1">
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoicesTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoicesTestCase.java
index eb55508a507..629d690fda2 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoicesTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoicesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ExecutionAbstractTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ExecutionAbstractTestCase.java
index 569f219f635..0819cbd72b4 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ExecutionAbstractTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ExecutionAbstractTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine.test;
import com.google.common.util.concurrent.ListenableFuture;
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSectionsToSections.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSectionsToSections.xml
index 2b30c8cb9d1..65fcaa870aa 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSectionsToSections.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSectionsToSections.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="MapSectionsToSections" layout="column" description="Contains 4 boxes, to which 4 sections are mapped">
<section layout="row" description="row 1">
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSectionsToSectionsResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSectionsToSectionsResult.xml
index 5fceca589e4..6f96404ba1b 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSectionsToSectionsResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSectionsToSectionsResult.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page version="1.0" layout="column">
<section layout="row">
<section id="section:box1">
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSectionsToSectionsTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSectionsToSectionsTestCase.java
index 5ceb358bfc0..770e7f524e8 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSectionsToSectionsTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSectionsToSectionsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSourcesToSections.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSourcesToSections.xml
index 4659221b8e4..c480ea57c45 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSourcesToSections.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSourcesToSections.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="MapSourcesToSections" layout="column" description="4 sources are assigned to a section each">
<section layout="row" description="row 1">
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSourcesToSectionsResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSourcesToSectionsResult.xml
index 0c29127da26..2b3a7e0a722 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSourcesToSectionsResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSourcesToSectionsResult.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page version="1.0" layout="column">
<section layout="row">
<section id="section:box1">
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSourcesToSectionsTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSourcesToSectionsTestCase.java
index a7bde53ad41..8d8e39bd934 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSourcesToSectionsTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSourcesToSectionsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/Page.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/Page.xml
index e26543c5391..87e476cf656 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/Page.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/Page.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="Page">
<renderer name="two-column"/>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageResult.xml
index 29c6f47765c..73207d4d6fc 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageResult.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page version="1.0">
<renderer name="two-column"/>
<section region="left">
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageTestCase.java
index 1935ad95c40..6a86f4f81aa 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlending.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlending.xml
index ebc99764873..5d2ae88d2cb 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlending.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlending.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="PageWithBlending">
<renderer name="two-column"/>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlendingResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlendingResult.xml
index e7e7a37715c..51d6bdb7900 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlendingResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlendingResult.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page version="1.0">
<renderer name="two-column"/>
<section region="left">
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlendingTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlendingTestCase.java
index 5c8d756a72d..69d35eb2b69 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlendingTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlendingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRenderer.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRenderer.xml
index f01a96315c8..4b0b2d03aa9 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRenderer.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRenderer.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="PageWithSourceRenderer">
<renderer name="two-column"/>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRendererResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRendererResult.xml
index 9dd3610c136..84861e78a45 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRendererResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRendererResult.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page version="1.0">
<renderer name="two-column"/>
<section region="left">
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRendererTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRendererTestCase.java
index 35cc129ba93..8cb35bf5e4f 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRendererTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRendererTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoice.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoice.xml
index c50af35a582..dc202f9d0fd 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoice.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoice.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="SourceChoice">
<choice>
<source name="news"/>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoiceResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoiceResult.xml
index 2c7bdff75fb..3bb35eb8869 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoiceResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoiceResult.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page version="1.0">
<content>
<hit relevance="1.0" source="web">
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoiceTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoiceTestCase.java
index 93b6a958657..bcd6a462a62 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoiceTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoiceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/TwoSectionsFourSources.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/TwoSectionsFourSources.xml
index 5d0dc0a8f7d..d0aece09bcb 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/TwoSectionsFourSources.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/TwoSectionsFourSources.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="TwoSectionsFourSources" layout="twoColumns">
<section source="source3 source1" order="[source]" max="8" region="left"/>
<section source="source4 source2" order="-[rank]" max="10" region="right"/>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/TwoSectionsFourSourcesResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/TwoSectionsFourSourcesResult.xml
index 0b0fe91e7b4..c496335beae 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/TwoSectionsFourSourcesResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/TwoSectionsFourSourcesResult.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page version="1.0" layout="twoColumns">
<section region="left">
<content>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/TwoSectionsFourSourcesTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/TwoSectionsFourSourcesTestCase.java
index fb6b7ba1fc0..8413b43e662 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/TwoSectionsFourSourcesTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/TwoSectionsFourSourcesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/test/PageTemplateSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/test/PageTemplateSearcherTestCase.java
index 3efaf9a6132..7b10966a675 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/test/PageTemplateSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/test/PageTemplateSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.test;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/test/SourceParameters.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/test/SourceParameters.xml
index 2ac389477c0..863b67d9683 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/test/SourceParameters.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/test/SourceParameters.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page id="SourceParameters">
<source name="source1">
<parameter name="p1">source1p1Value</parameter>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/test/SourceParametersTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/test/SourceParametersTestCase.java
index 7a2d3d782a3..0606636d0cb 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/test/SourceParametersTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/test/SourceParametersTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/query/MatchingTestCase.java b/container-search/src/test/java/com/yahoo/search/query/MatchingTestCase.java
index 3b6b3c7d7c6..d4de8dba9dd 100644
--- a/container-search/src/test/java/com/yahoo/search/query/MatchingTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/MatchingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/query/SoftTimeoutTestCase.java b/container-search/src/test/java/com/yahoo/search/query/SoftTimeoutTestCase.java
index a15038ff7e2..f8874040cb2 100644
--- a/container-search/src/test/java/com/yahoo/search/query/SoftTimeoutTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/SoftTimeoutTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/query/SortingTestCase.java b/container-search/src/test/java/com/yahoo/search/query/SortingTestCase.java
index 36c45753e0d..9e56fba0e17 100644
--- a/container-search/src/test/java/com/yahoo/search/query/SortingTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/SortingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query;
import com.ibm.icu.lang.UScript;
diff --git a/container-search/src/test/java/com/yahoo/search/query/context/test/ConcurrentTraceTestCase.java b/container-search/src/test/java/com/yahoo/search/query/context/test/ConcurrentTraceTestCase.java
index a6e431033cf..c8aac27da1d 100644
--- a/container-search/src/test/java/com/yahoo/search/query/context/test/ConcurrentTraceTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/context/test/ConcurrentTraceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.context.test;
import java.util.ArrayList;
diff --git a/container-search/src/test/java/com/yahoo/search/query/context/test/LoggingTestCase.java b/container-search/src/test/java/com/yahoo/search/query/context/test/LoggingTestCase.java
index 5a48bc1425c..0152367915a 100644
--- a/container-search/src/test/java/com/yahoo/search/query/context/test/LoggingTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/context/test/LoggingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.context.test;
import java.util.HashSet;
diff --git a/container-search/src/test/java/com/yahoo/search/query/context/test/PropertiesTestCase.java b/container-search/src/test/java/com/yahoo/search/query/context/test/PropertiesTestCase.java
index d62e86cb84e..61e1f06ed28 100644
--- a/container-search/src/test/java/com/yahoo/search/query/context/test/PropertiesTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/context/test/PropertiesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.context.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/query/context/test/TraceTestCase.java b/container-search/src/test/java/com/yahoo/search/query/context/test/TraceTestCase.java
index 5882ded367e..76f243e4592 100644
--- a/container-search/src/test/java/com/yahoo/search/query/context/test/TraceTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/context/test/TraceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.context.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/compiled/BindingTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/compiled/BindingTestCase.java
index 621950ebc65..bebdda15983 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/compiled/BindingTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/compiled/BindingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.compiled;
import com.yahoo.search.query.profile.DimensionBinding;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfileRegistryTest.java b/container-search/src/test/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfileRegistryTest.java
index 636298e8669..a9792049fb7 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfileRegistryTest.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfileRegistryTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.compiled;
import com.yahoo.search.query.profile.config.QueryProfilesConfig;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/MultiProfileTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/MultiProfileTestCase.java
index c355186ba44..21f20e70ddb 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/MultiProfileTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/MultiProfileTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.config.test;
import java.util.HashMap;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/QueryProfileConfigurationTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/QueryProfileConfigurationTestCase.java
index a1fba8e07f1..84bb82f3851 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/QueryProfileConfigurationTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/QueryProfileConfigurationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.config.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/QueryProfileIntegrationTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/QueryProfileIntegrationTestCase.java
index 67d22fba4a3..a89ef8c1b2b 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/QueryProfileIntegrationTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/QueryProfileIntegrationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.config.test;
import com.yahoo.jdisc.http.HttpRequest.Method;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/TypedProfilesConfigurationTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/TypedProfilesConfigurationTestCase.java
index 9a74e1b6766..0531d847c9e 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/TypedProfilesConfigurationTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/TypedProfilesConfigurationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.config.test;
import com.yahoo.search.query.profile.QueryProfileRegistry;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/XmlReadingTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/XmlReadingTestCase.java
index 253c6bd8792..e04835c01b2 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/XmlReadingTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/XmlReadingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.config.test;
import com.yahoo.jdisc.http.HttpRequest.Method;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/inheritance/child.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/inheritance/child.xml
index 64dd3b787ac..0ebfe827f75 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/inheritance/child.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/inheritance/child.xml
@@ -1,4 +1,4 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="child" inherits="parent">
<field name="a.b.c">a.b.c-child</field>
<field name="d.e.f">d.e.f-child</field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/inheritance/parent.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/inheritance/parent.xml
index 47873fcce4f..565e9da9d91 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/inheritance/parent.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/inheritance/parent.xml
@@ -1,4 +1,4 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="parent">
<field name="a.b">a.b-parent</field>
<field name="a.b.c">a.b.c-parent</field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/invalidxml1/illegalSetting.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/invalidxml1/illegalSetting.xml
index f430b6a4436..27cdd6fa1ce 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/invalidxml1/illegalSetting.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/invalidxml1/illegalSetting.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="illegalSetting" type="native">
<field name="model.notDeclared">value</field>
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/invalidxml2/unparseable.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/invalidxml2/unparseable.xml
index 3af446f8349..5148ebd344a 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/invalidxml2/unparseable.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/invalidxml2/unparseable.xml
@@ -1,2 +1,2 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id=""...kjh
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/invalidxml3/default.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/invalidxml3/default.xml
index 13b90f46c1b..ebb098b0712 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/invalidxml3/default.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/invalidxml3/default.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="MyProfile">
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/klee/production.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/klee/production.xml
index d873cacc255..cc229795ef6 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/klee/production.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/klee/production.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="production">
<field name="presentation.summary">production</field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/klee/twitter_dd-us-0.2.4.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/klee/twitter_dd-us-0.2.4.xml
index e7741462a88..1ddea750fb6 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/klee/twitter_dd-us-0.2.4.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/klee/twitter_dd-us-0.2.4.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="twitter_dd-us:0.2.4" inherits = "production">
<field name="hits">3</field>
<field name="displayGuideline">true</field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/klee/twitter_dd-us.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/klee/twitter_dd-us.xml
index 7e4ff3c1921..244b5b599f8 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/klee/twitter_dd-us.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/klee/twitter_dd-us.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="twitter_dd-us" inherits ="twitter_dd">
<field name="model.filter">+yst_tweet_language:en +yst_tweet_adult_score:0</field>
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/klee/twitter_dd.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/klee/twitter_dd.xml
index 50c108ba0b1..7230f874c72 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/klee/twitter_dd.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/klee/twitter_dd.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="twitter_dd" inherits = "production">
<field name="hits">3</field>
<field name="displayGuideline">true</field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/multiprofile/multiprofile1.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/multiprofile/multiprofile1.xml
index 778f5b29599..a2ab712b932 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/multiprofile/multiprofile1.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/multiprofile/multiprofile1.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="multiprofile1" inherits="multiprofileDimensions"> <!-- A regular profile may define "virtual" children within itself -->
<!-- Values may be set in the profile itself as usual, this becomes the default values given no matching
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/multiprofile/multiprofileDimensions.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/multiprofile/multiprofileDimensions.xml
index 2abf2ade349..2cdaf8085da 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/multiprofile/multiprofileDimensions.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/multiprofile/multiprofileDimensions.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="multiprofileDimensions">
<!-- Names of the request parameters defining the variant profiles of this. Order matters as described below.
Each individual value looked up in this profile is resolved from the most specific matching virtual
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/multiprofile/parent1.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/multiprofile/parent1.xml
index f2b2c865ef1..487348b691a 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/multiprofile/parent1.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/multiprofile/parent1.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="parent1">
<field name="parent1">parent1-value</field>
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/multiprofile/parent2.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/multiprofile/parent2.xml
index 7d5371fa2ee..632062fd7b7 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/multiprofile/parent2.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/multiprofile/parent2.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="parent2">
<field name="parent2">parent2-value</field>
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/news/default.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/news/default.xml
index 2c3cd7f9afb..f1faf946b88 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/news/default.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/news/default.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="default">
<dimensions>dim1,dim2,dim3</dimensions>
<!-- Default values -->
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/news/yahoo_uk.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/news/yahoo_uk.xml
index faadb68388f..91e1924a285 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/news/yahoo_uk.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/news/yahoo_uk.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="yahoo/uk">
<field name="a.b">b</field>
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/news/yahoo_uk_test.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/news/yahoo_uk_test.xml
index aec20df4965..aa7f6b1ff38 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/news/yahoo_uk_test.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/news/yahoo_uk_test.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="yahoo/uk/test">
<field name="a.c">c</field>
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase1/default.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase1/default.xml
index 9f024ab1b20..b9d3d90512e 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase1/default.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase1/default.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="default">
<dimensions>custid_1,custid_2</dimensions>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase1/parent.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase1/parent.xml
index deb38b5d2f7..14a3c5f5538 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase1/parent.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase1/parent.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="parent">
<field name="ranking.features.b">0.0</field>
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase2/default.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase2/default.xml
index f9acf559eac..d4448a942ce 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase2/default.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase2/default.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="default">
<dimensions>custid_1,custid_2,custid_3,custid_4,custid_5,custid_6</dimensions>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase2/parent.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase2/parent.xml
index 139781bb29c..a1f4be5536d 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase2/parent.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase2/parent.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="parent">
<field name="a.features.b">0.0</field>
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase3/default.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase3/default.xml
index 6500a25dc07..5b99d6d077b 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase3/default.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase3/default.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="default">
<dimensions>custid_1,custid_2,custid_3,custid_4,custid_5,custid_6</dimensions>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase3/parent.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase3/parent.xml
index 80f7465e69d..e75d0fc6d77 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase3/parent.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase3/parent.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="parent">
<field name="a.features">0.0</field>
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase4/default.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase4/default.xml
index 1366de00813..a40da97062f 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase4/default.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase4/default.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="default">
<dimensions>custid_1,custid_2,custid_3,custid_4,custid_5,custid_6</dimensions>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase4/parent.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase4/parent.xml
index 9fe0ee85dae..05fa8a5b122 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase4/parent.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newscase4/parent.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="parent">
<field name="ranking.features.foo">0.0</field>
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newsfe/backend_news.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newsfe/backend_news.xml
index 36688c682b9..2ea4598d0c8 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newsfe/backend_news.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newsfe/backend_news.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="backend/news">
<dimensions>vertical,sort,offset,resulttypes,rss,age,intl,testid</dimensions>
<query-profile for="news,*,*,article,0">
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newsfe/default.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newsfe/default.xml
index be2a5bd5ffa..0e49f85a46a 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newsfe/default.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newsfe/default.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="default">
<field name="source.news"><ref>backend/news</ref></field>
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newsfe2/backend.news.provider.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newsfe2/backend.news.provider.xml
index 0390aeb0ffd..f4518e5b2ba 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newsfe2/backend.news.provider.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newsfe2/backend.news.provider.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="backend/news/provider">
<dimensions>mode</dimensions>
<field name="provider">news_basic</field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newsfe2/default.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newsfe2/default.xml
index 53a71b235b1..8b4861c76ca 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newsfe2/default.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/newsfe2/default.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="default">
<dimensions>intl</dimensions>
<query-profile for="tw" inherits="backend/news/provider"/>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/default.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/default.xml
index 62733fc5caa..570e5a374f6 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/default.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/default.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="default">
<field name="hits">5</field>
<field name="model.defaultIndex">%{subst}%{subst.end}</field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/mandatory.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/mandatory.xml
index d1ecaf6160d..eac36307c95 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/mandatory.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/mandatory.xml
@@ -1,3 +1,3 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id ="mandatory" type="mandatory">
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/mandatorySpecified.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/mandatorySpecified.xml
index c93a1dcbd59..cdeb6b22862 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/mandatorySpecified.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/mandatorySpecified.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id ="mandatorySpecified" type="mandatory">
<field name="timeout">1377</field>
<field name="foo">37</field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/multi.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/multi.xml
index 363852eb25c..98acfae66e8 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/multi.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/multi.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="multi" inherits="default multiDimensions"> <!-- default sets default-index to title -->
<field name="model"><ref>querybest</ref></field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/multiDimensions.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/multiDimensions.xml
index 10a83e67fc4..b2a3e263093 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/multiDimensions.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/multiDimensions.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="multiDimensions">
<dimensions>myquery, myindex </dimensions>
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/querybest.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/querybest.xml
index d75a47521c7..a89574e5767 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/querybest.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/querybest.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="querybest" type="model">
<field name="defaultIndex">title</field>
<field name="queryString" overridable="false">best</field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/querylove.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/querylove.xml
index 58df89d86e4..e93b14f8b98 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/querylove.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/querylove.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="querylove" type="model">
<field name="defaultIndex">title</field>
<field name="queryString" overridable="false">love</field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/referingQuerybest.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/referingQuerybest.xml
index b01fe698a0d..6037b0f591d 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/referingQuerybest.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/referingQuerybest.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="referingQuerybest" inherits="default">
<field name="model"><ref>querybest</ref></field>
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/root.unoverridableIndex.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/root.unoverridableIndex.xml
index 0276fb615e6..1c18e8ca842 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/root.unoverridableIndex.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/root.unoverridableIndex.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="root/unoverridableIndex" type="root">
<field name="model.defaultIndex" overridable="false">default</field>
<field name="hits">1</field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/root.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/root.xml
index c34797885a3..4cd551c1ba0 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/root.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/root.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="root" inherits="default" type="root">
<field name="model.defaultIndex">%{indexname}</field>
<field name="ranking.profile">test1</field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/rootChild.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/rootChild.xml
index ad5056e1bfb..9b5186ef087 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/rootChild.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/rootChild.xml
@@ -1,3 +1,3 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="rootChild" type="root" inherits="root">
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/rootStrict.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/rootStrict.xml
index 8bec8ca5009..4b8ee05384b 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/rootStrict.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/rootStrict.xml
@@ -1,3 +1,3 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="rootStrict" type="rootStrict" inherits="root">
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/rootWithFilter.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/rootWithFilter.xml
index 31e93cede04..bbf4f35f919 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/rootWithFilter.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/rootWithFilter.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="rootWithFilter" inherits="root">
<field name="model.filter">+best</field>
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/test.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/test.xml
index 6aec43e7f41..b7884fc2300 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/test.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/test.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="test">
<field name="traceLevel">3</field>
<field name="nocache">true</field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/types/forbidding.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/types/forbidding.xml
index 1798aa5d579..011cb08cbe2 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/types/forbidding.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/types/forbidding.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile-type id="forbidding">
<strict/>
<field name="query" type="string"/>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/types/mandatory.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/types/mandatory.xml
index 967ee4a5ef6..7085e1931da 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/types/mandatory.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/types/mandatory.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile-type id="mandatory" inherits="native">
<field name="timeout" type="string" mandatory="true"/>
<field name="foo" type="integer" mandatory="true"/>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/types/root.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/types/root.xml
index 7ddd3a1e8ed..b516ea15ed7 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/types/root.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/types/root.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile-type id="root" inherits="native">
<match path="true"/>
<field name="indexname" type="string" alias="index-name idx"/>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/types/rootStrict.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/types/rootStrict.xml
index 86e531a30e3..789f6a24d42 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/types/rootStrict.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/queryprofilevariants2/types/rootStrict.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile-type id="rootStrict" inherits="root">
<strict/>
</query-profile-type>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverride/MyProfile1.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverride/MyProfile1.xml
index 7d0bf501d83..e0cf9bd35ba 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverride/MyProfile1.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverride/MyProfile1.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="MyProfile1" >
<field name="name">MyProfile1</field>
<field name="myProfile1Only">myProfile1Only</field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverride/MyProfile2.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverride/MyProfile2.xml
index 9a09d2f850a..9cb4e5f63f5 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverride/MyProfile2.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverride/MyProfile2.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="MyProfile2" >
<field name="name">MyProfile2</field>
<field name="myProfile2Only">myProfile2Only</field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverride/default.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverride/default.xml
index 4ef9bb0e253..e9bcd300131 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverride/default.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverride/default.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="default" >
<field name="name">default</field>
<field name="profileRef"><ref>MyProfile1</ref></field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverridetyped/MyProfile1.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverridetyped/MyProfile1.xml
index 7d0bf501d83..e0cf9bd35ba 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverridetyped/MyProfile1.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverridetyped/MyProfile1.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="MyProfile1" >
<field name="name">MyProfile1</field>
<field name="myProfile1Only">myProfile1Only</field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverridetyped/MyProfile2.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverridetyped/MyProfile2.xml
index 9a09d2f850a..9cb4e5f63f5 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverridetyped/MyProfile2.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverridetyped/MyProfile2.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="MyProfile2" >
<field name="name">MyProfile2</field>
<field name="myProfile2Only">myProfile2Only</field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverridetyped/default.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverridetyped/default.xml
index 4c70a317b57..9da04456cd3 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverridetyped/default.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverridetyped/default.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="default" type="default">
<field name="name">default</field>
<field name="profileRef"><ref>MyProfile1</ref></field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverridetyped/types/default.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverridetyped/types/default.xml
index 965cfeb601f..1717773e54d 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverridetyped/types/default.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/refoverridetyped/types/default.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile-type id="default">
<field name="profileRef" type="query-profile"/>
</query-profile-type>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/sourceprovider/common.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/sourceprovider/common.xml
index 9d04c053e6a..bcebacdbd18 100755
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/sourceprovider/common.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/sourceprovider/common.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="common">
<dimensions>source.common.intl</dimensions>
<query-profile for="tw" inherits="provider"/>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/sourceprovider/myprofile.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/sourceprovider/myprofile.xml
index b44160f3720..c169973636b 100755
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/sourceprovider/myprofile.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/sourceprovider/myprofile.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="myprofile">
<field name="sources">common</field>
<field name="source"><ref>source</ref></field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/sourceprovider/provider.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/sourceprovider/provider.xml
index 3c36a473e9e..79e8d9d006e 100755
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/sourceprovider/provider.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/sourceprovider/provider.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="provider" >
<dimensions>source.common.mode</dimensions>
<field name="provider">yst</field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/sourceprovider/source.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/sourceprovider/source.xml
index 89e862319b0..9c57f29e1c6 100755
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/sourceprovider/source.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/sourceprovider/source.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="source">
<field name="common"><ref>common</ref></field>
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/systemtest/default.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/systemtest/default.xml
index 187e967072d..88042dc67c6 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/systemtest/default.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/systemtest/default.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="default">
<field name="foo">bar</field>
<field name="hits">5</field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/tensortypes/profile1.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/tensortypes/profile1.xml
index d75961fb584..3de0e219158 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/tensortypes/profile1.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/tensortypes/profile1.xml
@@ -1,3 +1,3 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="profile1" type="type1">
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/tensortypes/profile2.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/tensortypes/profile2.xml
index e08362043d2..6a2065d05eb 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/tensortypes/profile2.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/tensortypes/profile2.xml
@@ -1,3 +1,3 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="profile2" type="type2">
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/tensortypes/types/type1.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/tensortypes/types/type1.xml
index 33a223d026b..a928c5f4deb 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/tensortypes/types/type1.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/tensortypes/types/type1.xml
@@ -1,4 +1,4 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile-type id="type1">
<field name="ranking.features.query(tensor_1)" type="tensor&lt;float&gt;(x[1])" />
</query-profile-type>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/tensortypes/types/type2.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/tensortypes/types/type2.xml
index a856ddddb91..17e0a76eb94 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/tensortypes/types/type2.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/tensortypes/types/type2.xml
@@ -1,4 +1,4 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile-type id="type2">
<field name="ranking.features.query(tensor_2)" type="tensor&lt;float&gt;(x[2])" />
<field name="ranking.features.query(tensor_3)" type="tensor&lt;float&gt;(x[3])" />
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/default.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/default.xml
index 8a461854897..c6683ddf871 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/default.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/default.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="default">
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/modelSettings.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/modelSettings.xml
index 0d0e3b0a11a..ee507f5cef1 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/modelSettings.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/modelSettings.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="modelSettings" type="model">
<field name="queryString">some query</field>
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/referencingModelSettings.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/referencingModelSettings.xml
index 4dfe36b328b..ffb4557a784 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/referencingModelSettings.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/referencingModelSettings.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="referencingModelSettings">
<field name="model"><ref>modelSettings</ref></field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/root.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/root.xml
index c233726bfc9..82ff7afb186 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/root.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/root.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="root" type="rootType">
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/someUser.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/someUser.xml
index bd8fb68703c..9dd59a2edca 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/someUser.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/someUser.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="someUser" type="user">
<dimensions>x</dimensions>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/types/rootType.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/types/rootType.xml
index 450f1fb5ee3..d2500f56599 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/types/rootType.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/types/rootType.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile-type id="rootType" inherits="native">
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/types/user.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/types/user.xml
index 1e3a0aa74eb..704a47ba7f8 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/types/user.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/validxml/types/user.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile-type id="user">
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/variants/default.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/variants/default.xml
index 3cebc84a042..8881db80ba1 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/variants/default.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/variants/default.xml
@@ -1,4 +1,4 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="default">
<dimensions>d1</dimensions>
<field name="a.b"><ref>main</ref></field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/variants/inherited.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/variants/inherited.xml
index 819c9774a02..4f5b681655d 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/variants/inherited.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/variants/inherited.xml
@@ -1,4 +1,4 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="inherited">
<dimensions>d2</dimensions>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/variants/main.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/variants/main.xml
index 464d9261307..fd8eebde593 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/variants/main.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/variants/main.xml
@@ -1,4 +1,4 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="main">
<dimensions>d1</dimensions>
<query-profile for="d1v" inherits="inherited" />
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versionrefs/MyProfile-1.0.0.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versionrefs/MyProfile-1.0.0.xml
index a415494357f..f9fb2ecae09 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versionrefs/MyProfile-1.0.0.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versionrefs/MyProfile-1.0.0.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="MyProfile:1.0.0">
<field name="name">MyProfile:1.0.0</field>
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versionrefs/MyProfile-1.0.2.a.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versionrefs/MyProfile-1.0.2.a.xml
index 47212d240f7..5724fbc14cd 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versionrefs/MyProfile-1.0.2.a.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versionrefs/MyProfile-1.0.2.a.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="MyProfile:1.0.2.a">
<field name="name">MyProfile:1.0.2.a</field>
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versionrefs/MyProfile-1.0.2.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versionrefs/MyProfile-1.0.2.xml
index 0666923309f..912eb25647f 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versionrefs/MyProfile-1.0.2.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versionrefs/MyProfile-1.0.2.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="MyProfile:1.0.2">
<field name="name">MyProfile:1.0.2</field>
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versionrefs/default.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versionrefs/default.xml
index b886de4c5bd..8612ef3795e 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versionrefs/default.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versionrefs/default.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="default" >
<field name="name">default</field>
<field name="profile1"><ref>MyProfile</ref></field>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versions/testprofile-1.20.100.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versions/testprofile-1.20.100.xml
index c1b0216f969..bf537daef39 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versions/testprofile-1.20.100.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versions/testprofile-1.20.100.xml
@@ -1,3 +1,3 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="testprofile:1.20.100">
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versions/testprofile.xml b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versions/testprofile.xml
index 96ef4bc5406..748e9493933 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versions/testprofile.xml
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/config/test/versions/testprofile.xml
@@ -1,3 +1,3 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<query-profile id="testprofile">
</query-profile>
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/test/CloningTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/test/CloningTestCase.java
index 3e01c79b61f..433b87363b3 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/test/CloningTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/test/CloningTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.test;
import com.yahoo.container.jdisc.HttpRequest;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/test/DimensionBindingTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/test/DimensionBindingTestCase.java
index 7049b98288a..0fca7a566e2 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/test/DimensionBindingTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/test/DimensionBindingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.test;
import com.yahoo.search.query.profile.DimensionBinding;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/test/DumpToolTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/test/DumpToolTestCase.java
index 68cda12dab7..60b6c6dbe84 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/test/DumpToolTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/test/DumpToolTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.test;
import com.yahoo.search.query.profile.DumpTool;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryFromProfileTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryFromProfileTestCase.java
index b4fe6b62d44..3ce91719874 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryFromProfileTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryFromProfileTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.test;
import com.yahoo.container.jdisc.HttpRequest;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileCloneMicroBenchmark.java b/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileCloneMicroBenchmark.java
index 2396f1290f7..f2f34191177 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileCloneMicroBenchmark.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileCloneMicroBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.test;
import com.yahoo.jdisc.http.HttpRequest.Method;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileGetInComplexStructureMicroBenchmark.java b/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileGetInComplexStructureMicroBenchmark.java
index 40af6e7393f..cd5a8e08aa9 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileGetInComplexStructureMicroBenchmark.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileGetInComplexStructureMicroBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.test;
import com.yahoo.processing.request.CompoundName;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileGetMicroBenchmark.java b/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileGetMicroBenchmark.java
index 7b960e0a1db..d38a1d64910 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileGetMicroBenchmark.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileGetMicroBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.test;
import com.yahoo.jdisc.http.HttpRequest.Method;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileListPropertiesMicroBenchmark.java b/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileListPropertiesMicroBenchmark.java
index 481125e5a7f..87980f73987 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileListPropertiesMicroBenchmark.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileListPropertiesMicroBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.test;
import com.yahoo.jdisc.http.HttpRequest.Method;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileSubstitutionTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileSubstitutionTestCase.java
index 4720b92848a..2173d72cab9 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileSubstitutionTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileSubstitutionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.test;
import com.yahoo.processing.request.Properties;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileTestCase.java
index 5598ae65990..39ed9b829d2 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.test;
import com.yahoo.jdisc.http.HttpRequest.Method;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileVariantsCloneTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileVariantsCloneTestCase.java
index aa1d1c243a0..3e1a101628c 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileVariantsCloneTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileVariantsCloneTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.test;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileVariantsTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileVariantsTestCase.java
index a592d40d2e9..231020c4fa5 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileVariantsTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileVariantsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.test;
import com.yahoo.jdisc.http.HttpRequest.Method;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/types/test/FieldTypeTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/types/test/FieldTypeTestCase.java
index cb2059c64dd..0ace8f93f1d 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/types/test/FieldTypeTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/types/test/FieldTypeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.types.test;
import com.yahoo.search.query.profile.types.FieldType;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/types/test/MandatoryTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/types/test/MandatoryTestCase.java
index b875c66735b..dfe4b24e256 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/types/test/MandatoryTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/types/test/MandatoryTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.types.test;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/types/test/NameTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/types/test/NameTestCase.java
index 2a62cfec507..4b8edfdde73 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/types/test/NameTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/types/test/NameTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.types.test;
import com.yahoo.processing.request.CompoundName;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/types/test/NativePropertiesTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/types/test/NativePropertiesTestCase.java
index 2ced2ba9323..85015bee851 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/types/test/NativePropertiesTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/types/test/NativePropertiesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.types.test;
import com.yahoo.jdisc.http.HttpRequest.Method;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/types/test/OverrideTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/types/test/OverrideTestCase.java
index c0f1dfeca0b..906d43790bd 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/types/test/OverrideTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/types/test/OverrideTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.types.test;
import com.yahoo.jdisc.http.HttpRequest.Method;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/types/test/PatchMatchingTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/types/test/PatchMatchingTestCase.java
index bfdc1a2537e..d39bfa13126 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/types/test/PatchMatchingTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/types/test/PatchMatchingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.types.test;
import com.yahoo.search.query.profile.QueryProfile;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/types/test/QueryProfileTypeInheritanceTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/types/test/QueryProfileTypeInheritanceTestCase.java
index 7ce8cb803e2..62551447017 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/types/test/QueryProfileTypeInheritanceTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/types/test/QueryProfileTypeInheritanceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.types.test;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/types/test/QueryProfileTypeTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/types/test/QueryProfileTypeTestCase.java
index 39ba607b741..44e8147c09b 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/types/test/QueryProfileTypeTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/types/test/QueryProfileTypeTestCase.java
@@ -1,9 +1,12 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.profile.types.test;
import com.yahoo.component.ComponentId;
import com.yahoo.container.jdisc.HttpRequest;
+import com.yahoo.language.Language;
+import com.yahoo.language.process.Embedder;
import com.yahoo.tensor.Tensor;
+import com.yahoo.tensor.TensorType;
import com.yahoo.yolean.Exceptions;
import com.yahoo.search.Query;
import com.yahoo.processing.request.CompoundName;
@@ -19,8 +22,9 @@ import com.yahoo.search.query.profile.types.QueryProfileTypeRegistry;
import org.junit.Before;
import org.junit.Test;
-import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.assertEquals;
@@ -80,6 +84,7 @@ public class QueryProfileTypeTestCase {
type.addField(new FieldDescription("ranking.features.query(myTensor1)", FieldType.fromString("tensor(a{},b{})", registry)), registry);
type.addField(new FieldDescription("ranking.features.query(myTensor2)", FieldType.fromString("tensor(x[2],y[2])", registry)), registry);
type.addField(new FieldDescription("ranking.features.query(myTensor3)", FieldType.fromString("tensor<float>(x{})",registry)), registry);
+ type.addField(new FieldDescription("ranking.features.query(myTensor4)", FieldType.fromString("tensor<float>(x[5])",registry)), registry);
type.addField(new FieldDescription("myQuery", FieldType.fromString("query", registry)), registry);
type.addField(new FieldDescription("myQueryProfile", FieldType.fromString("query-profile", registry),"qp"), registry);
}
@@ -400,15 +405,15 @@ public class QueryProfileTypeTestCase {
}
@Test
- public void testTensorRankFeatureInRequest() throws UnsupportedEncodingException {
+ public void testTensorRankFeatureInRequest() {
QueryProfile profile = new QueryProfile("test");
profile.setType(testtype);
registry.register(profile);
CompiledQueryProfileRegistry cRegistry = registry.compile();
String tensorString = "{{a:a1, b:b1}:1.0, {a:a2, b:b1}:2.0}}";
- Query query = new Query(HttpRequest.createTestRequest("?" + encode("ranking.features.query(myTensor1)") +
- "=" + encode(tensorString),
+ Query query = new Query(HttpRequest.createTestRequest("?" + urlEncode("ranking.features.query(myTensor1)") +
+ "=" + urlEncode(tensorString),
com.yahoo.jdisc.http.HttpRequest.Method.GET),
cRegistry.getComponent("test"));
assertEquals(0, query.errors().size());
@@ -418,15 +423,15 @@ public class QueryProfileTypeTestCase {
// Expected to work exactly as testTensorRankFeatureInRequest
@Test
- public void testTensorRankFeatureInRequestWithInheritedQueryProfileType() throws UnsupportedEncodingException {
+ public void testTensorRankFeatureInRequestWithInheritedQueryProfileType() {
QueryProfile profile = new QueryProfile("test");
profile.setType(emptyInheritingTesttype);
registry.register(profile);
CompiledQueryProfileRegistry cRegistry = registry.compile();
String tensorString = "{{a:a1, b:b1}:1.0, {a:a2, b:b1}:2.0}}";
- Query query = new Query(HttpRequest.createTestRequest("?" + encode("ranking.features.query(myTensor1)") +
- "=" + encode(tensorString),
+ Query query = new Query(HttpRequest.createTestRequest("?" + urlEncode("ranking.features.query(myTensor1)") +
+ "=" + urlEncode(tensorString),
com.yahoo.jdisc.http.HttpRequest.Method.GET),
cRegistry.getComponent("test"));
assertEquals(0, query.errors().size());
@@ -434,8 +439,48 @@ public class QueryProfileTypeTestCase {
assertEquals(Tensor.from(tensorString), query.getRanking().getFeatures().getTensor("query(myTensor1)").get());
}
- private String encode(String s) throws UnsupportedEncodingException {
- return URLEncoder.encode(s, "utf8");
+ @Test
+ public void testUnembeddedTensorRankFeatureInRequest() {
+ QueryProfile profile = new QueryProfile("test");
+ profile.setType(testtype);
+ registry.register(profile);
+
+ CompiledQueryProfileRegistry cRegistry = registry.compile();
+ String textToEmbed = "text to embed into a tensor";
+ String destinationFeature = "query(myTensor4)";
+ Tensor expectedTensor = Tensor.from("tensor<float>(x[5]):[3,7,4,0,0]]");
+ Query query1 = new Query.Builder().setRequest(HttpRequest.createTestRequest("?" + urlEncode("ranking.features." + destinationFeature) +
+ "=" + urlEncode("embed(" + textToEmbed + ")"),
+ com.yahoo.jdisc.http.HttpRequest.Method.GET))
+ .setQueryProfile(cRegistry.getComponent("test"))
+ .setEmbedder(new MockEmbedder(textToEmbed,
+ Language.UNKNOWN,
+ destinationFeature,
+ expectedTensor))
+ .build();
+ assertEquals(0, query1.errors().size());
+ assertEquals(expectedTensor, query1.properties().get("ranking.features.query(myTensor4)"));
+ assertEquals(expectedTensor, query1.getRanking().getFeatures().getTensor("query(myTensor4)").get());
+
+ // Explicit language
+ Query query2 = new Query.Builder().setRequest(HttpRequest.createTestRequest("?" + urlEncode("ranking.features." + destinationFeature) +
+ "=" + urlEncode("embed(" + textToEmbed + ")") +
+ "&language=en",
+ com.yahoo.jdisc.http.HttpRequest.Method.GET))
+ .setQueryProfile(cRegistry.getComponent("test"))
+ .setEmbedder(new MockEmbedder(textToEmbed,
+ Language.ENGLISH,
+ destinationFeature,
+ expectedTensor))
+ .build();
+ assertEquals(0, query2.errors().size());
+ assertEquals(expectedTensor, query2.properties().get("ranking.features.query(myTensor4)"));
+ assertEquals(expectedTensor, query2.getRanking().getFeatures().getTensor("query(myTensor4)").get());
+
+ }
+
+ private String urlEncode(String s) {
+ return URLEncoder.encode(s, StandardCharsets.UTF_8);
}
@Test
@@ -684,4 +729,38 @@ public class QueryProfileTypeTestCase {
}
}
+ private static final class MockEmbedder implements Embedder {
+
+ private final String expectedText;
+ private final Language expectedLanguage;
+ private final String expectedDestination;
+ private final Tensor tensorToReturn;
+
+ public MockEmbedder(String expectedText,
+ Language expectedLanguage,
+ String expectedDestination,
+ Tensor tensorToReturn) {
+ this.expectedText = expectedText;
+ this.expectedLanguage = expectedLanguage;
+ this.expectedDestination = expectedDestination;
+ this.tensorToReturn = tensorToReturn;
+ }
+
+ @Override
+ public List<Integer> embed(String text, Embedder.Context context) {
+ fail("Unexpected call");
+ return null;
+ }
+
+ @Override
+ public Tensor embed(String text, Embedder.Context context, TensorType tensorType) {
+ assertEquals(expectedText, text);
+ assertEquals(expectedLanguage, context.getLanguage());
+ assertEquals(expectedDestination, context.getDestination());
+ assertEquals(tensorToReturn.type(), tensorType);
+ return tensorToReturn;
+ }
+
+ }
+
}
diff --git a/container-search/src/test/java/com/yahoo/search/query/properties/test/PropertyMapTestCase.java b/container-search/src/test/java/com/yahoo/search/query/properties/test/PropertyMapTestCase.java
index e0ae1b7c4fa..5fbe8858186 100644
--- a/container-search/src/test/java/com/yahoo/search/query/properties/test/PropertyMapTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/properties/test/PropertyMapTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.properties.test;
import com.yahoo.processing.request.properties.PropertyMap;
diff --git a/container-search/src/test/java/com/yahoo/search/query/properties/test/RequestContextPropertiesTestCase.java b/container-search/src/test/java/com/yahoo/search/query/properties/test/RequestContextPropertiesTestCase.java
index caf960065d7..2a123b4bbda 100644
--- a/container-search/src/test/java/com/yahoo/search/query/properties/test/RequestContextPropertiesTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/properties/test/RequestContextPropertiesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.properties.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/query/properties/test/SubPropertiesTestCase.java b/container-search/src/test/java/com/yahoo/search/query/properties/test/SubPropertiesTestCase.java
index f4220f58bc4..11c249c5cdb 100644
--- a/container-search/src/test/java/com/yahoo/search/query/properties/test/SubPropertiesTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/properties/test/SubPropertiesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.properties.test;
import static org.junit.Assert.assertEquals;
diff --git a/container-search/src/test/java/com/yahoo/search/query/rewrite/RewriterFeaturesTestCase.java b/container-search/src/test/java/com/yahoo/search/query/rewrite/RewriterFeaturesTestCase.java
index 08146bbe069..7e9ed674475 100644
--- a/container-search/src/test/java/com/yahoo/search/query/rewrite/RewriterFeaturesTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/rewrite/RewriterFeaturesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.rewrite;
import static org.junit.Assert.*;
diff --git a/container-search/src/test/java/com/yahoo/search/query/rewrite/test/GenericExpansionRewriterTestCase.java b/container-search/src/test/java/com/yahoo/search/query/rewrite/test/GenericExpansionRewriterTestCase.java
index 63599f60ade..49d1497b2d3 100644
--- a/container-search/src/test/java/com/yahoo/search/query/rewrite/test/GenericExpansionRewriterTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/rewrite/test/GenericExpansionRewriterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.rewrite.test;
import java.util.*;
diff --git a/container-search/src/test/java/com/yahoo/search/query/rewrite/test/MisspellRewriterTestCase.java b/container-search/src/test/java/com/yahoo/search/query/rewrite/test/MisspellRewriterTestCase.java
index 9a9e9ff52e0..b0d1f36fab1 100644
--- a/container-search/src/test/java/com/yahoo/search/query/rewrite/test/MisspellRewriterTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/rewrite/test/MisspellRewriterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.rewrite.test;
import com.yahoo.search.*;
diff --git a/container-search/src/test/java/com/yahoo/search/query/rewrite/test/NameRewriterTestCase.java b/container-search/src/test/java/com/yahoo/search/query/rewrite/test/NameRewriterTestCase.java
index 985ea2da001..df7246ebffb 100644
--- a/container-search/src/test/java/com/yahoo/search/query/rewrite/test/NameRewriterTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/rewrite/test/NameRewriterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.rewrite.test;
import java.util.*;
diff --git a/container-search/src/test/java/com/yahoo/search/query/rewrite/test/QueryRewriteSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/query/rewrite/test/QueryRewriteSearcherTestCase.java
index 46693915f95..a528c032e30 100644
--- a/container-search/src/test/java/com/yahoo/search/query/rewrite/test/QueryRewriteSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/rewrite/test/QueryRewriteSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.rewrite.test;
import java.io.File;
diff --git a/container-search/src/test/java/com/yahoo/search/query/rewrite/test/QueryRewriteSearcherTestUtils.java b/container-search/src/test/java/com/yahoo/search/query/rewrite/test/QueryRewriteSearcherTestUtils.java
index fc76a27f306..da005871539 100644
--- a/container-search/src/test/java/com/yahoo/search/query/rewrite/test/QueryRewriteSearcherTestUtils.java
+++ b/container-search/src/test/java/com/yahoo/search/query/rewrite/test/QueryRewriteSearcherTestUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.rewrite.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/query/rewrite/test/SearchChainDispatcherSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/query/rewrite/test/SearchChainDispatcherSearcherTestCase.java
index 8142c9032b5..0eaa87ee32f 100644
--- a/container-search/src/test/java/com/yahoo/search/query/rewrite/test/SearchChainDispatcherSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/rewrite/test/SearchChainDispatcherSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.rewrite.test;
import java.util.*;
diff --git a/container-search/src/test/java/com/yahoo/search/query/test/ModelTestCase.java b/container-search/src/test/java/com/yahoo/search/query/test/ModelTestCase.java
index 276ff107769..6f856144b8a 100644
--- a/container-search/src/test/java/com/yahoo/search/query/test/ModelTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/test/ModelTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.test;
import com.yahoo.prelude.query.Item;
diff --git a/container-search/src/test/java/com/yahoo/search/query/test/ParametersTestCase.java b/container-search/src/test/java/com/yahoo/search/query/test/ParametersTestCase.java
index 18929d75c7f..c28e64196a2 100644
--- a/container-search/src/test/java/com/yahoo/search/query/test/ParametersTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/test/ParametersTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.test;
import com.yahoo.container.jdisc.HttpRequest;
diff --git a/container-search/src/test/java/com/yahoo/search/query/test/PresentationTestCase.java b/container-search/src/test/java/com/yahoo/search/query/test/PresentationTestCase.java
index 0c7ea28df41..aafbeaf5825 100644
--- a/container-search/src/test/java/com/yahoo/search/query/test/PresentationTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/test/PresentationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.test;
import com.yahoo.prelude.query.Highlight;
diff --git a/container-search/src/test/java/com/yahoo/search/query/test/QueryCloneMicroBenchmark.java b/container-search/src/test/java/com/yahoo/search/query/test/QueryCloneMicroBenchmark.java
index 1a6f0bd9e49..aaefd2b45f1 100644
--- a/container-search/src/test/java/com/yahoo/search/query/test/QueryCloneMicroBenchmark.java
+++ b/container-search/src/test/java/com/yahoo/search/query/test/QueryCloneMicroBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.test;
import com.yahoo.prelude.query.WeightedSetItem;
diff --git a/container-search/src/test/java/com/yahoo/search/query/test/RankFeaturesTestCase.java b/container-search/src/test/java/com/yahoo/search/query/test/RankFeaturesTestCase.java
index 94e780f6e70..8848e33c365 100644
--- a/container-search/src/test/java/com/yahoo/search/query/test/RankFeaturesTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/test/RankFeaturesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.test;
import com.yahoo.io.GrowableByteBuffer;
diff --git a/container-search/src/test/java/com/yahoo/search/query/test/RankingTestCase.java b/container-search/src/test/java/com/yahoo/search/query/test/RankingTestCase.java
index b617300fb2b..09dbfb8e5c8 100644
--- a/container-search/src/test/java/com/yahoo/search/query/test/RankingTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/test/RankingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/query/textserialize/item/test/ParseItemTestCase.java b/container-search/src/test/java/com/yahoo/search/query/textserialize/item/test/ParseItemTestCase.java
index 382d9cf8cee..4da2edf8306 100644
--- a/container-search/src/test/java/com/yahoo/search/query/textserialize/item/test/ParseItemTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/textserialize/item/test/ParseItemTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.item.test;
import com.yahoo.prelude.query.*;
diff --git a/container-search/src/test/java/com/yahoo/search/query/textserialize/serializer/test/SerializeItemTestCase.java b/container-search/src/test/java/com/yahoo/search/query/textserialize/serializer/test/SerializeItemTestCase.java
index 5aefc90121d..c73ec4db588 100644
--- a/container-search/src/test/java/com/yahoo/search/query/textserialize/serializer/test/SerializeItemTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/textserialize/serializer/test/SerializeItemTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.query.textserialize.serializer.test;
import com.yahoo.prelude.query.AndItem;
diff --git a/container-search/src/test/java/com/yahoo/search/querytransform/BooleanAttributeParserTest.java b/container-search/src/test/java/com/yahoo/search/querytransform/BooleanAttributeParserTest.java
index 8bf41c1cf64..66fdbdcb267 100644
--- a/container-search/src/test/java/com/yahoo/search/querytransform/BooleanAttributeParserTest.java
+++ b/container-search/src/test/java/com/yahoo/search/querytransform/BooleanAttributeParserTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.querytransform;
import com.yahoo.prelude.query.PredicateQueryItem;
diff --git a/container-search/src/test/java/com/yahoo/search/querytransform/BooleanSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/querytransform/BooleanSearcherTestCase.java
index 03b32831886..599b0ca4443 100644
--- a/container-search/src/test/java/com/yahoo/search/querytransform/BooleanSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/querytransform/BooleanSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.querytransform;
import com.yahoo.component.chain.Chain;
diff --git a/container-search/src/test/java/com/yahoo/search/querytransform/LowercasingTestCase.java b/container-search/src/test/java/com/yahoo/search/querytransform/LowercasingTestCase.java
index c081708e1a5..025c3ff7a32 100644
--- a/container-search/src/test/java/com/yahoo/search/querytransform/LowercasingTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/querytransform/LowercasingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.querytransform;
diff --git a/container-search/src/test/java/com/yahoo/search/querytransform/TestUtils.java b/container-search/src/test/java/com/yahoo/search/querytransform/TestUtils.java
index 720dcd0c4bc..c77b107a4d6 100644
--- a/container-search/src/test/java/com/yahoo/search/querytransform/TestUtils.java
+++ b/container-search/src/test/java/com/yahoo/search/querytransform/TestUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.querytransform;
import com.yahoo.prelude.query.Item;
diff --git a/container-search/src/test/java/com/yahoo/search/querytransform/WandSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/querytransform/WandSearcherTestCase.java
index 68d1fe57134..d2010ec852e 100644
--- a/container-search/src/test/java/com/yahoo/search/querytransform/WandSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/querytransform/WandSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.querytransform;
import com.yahoo.component.chain.Chain;
diff --git a/container-search/src/test/java/com/yahoo/search/querytransform/WeakAndReplacementSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/querytransform/WeakAndReplacementSearcherTestCase.java
index a72fbeeaac9..54f6bcd4c23 100644
--- a/container-search/src/test/java/com/yahoo/search/querytransform/WeakAndReplacementSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/querytransform/WeakAndReplacementSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.querytransform;
import com.yahoo.component.chain.Chain;
diff --git a/container-search/src/test/java/com/yahoo/search/querytransform/test/NGramSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/querytransform/test/NGramSearcherTestCase.java
index a3135222880..46e5682a058 100644
--- a/container-search/src/test/java/com/yahoo/search/querytransform/test/NGramSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/querytransform/test/NGramSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.querytransform.test;
import java.util.Arrays;
diff --git a/container-search/src/test/java/com/yahoo/search/querytransform/test/RangeQueryOptimizerTestCase.java b/container-search/src/test/java/com/yahoo/search/querytransform/test/RangeQueryOptimizerTestCase.java
index 720c94ff26d..df6cd046b74 100644
--- a/container-search/src/test/java/com/yahoo/search/querytransform/test/RangeQueryOptimizerTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/querytransform/test/RangeQueryOptimizerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.querytransform.test;
import com.yahoo.component.chain.Chain;
diff --git a/container-search/src/test/java/com/yahoo/search/querytransform/test/SortingDegraderTestCase.java b/container-search/src/test/java/com/yahoo/search/querytransform/test/SortingDegraderTestCase.java
index ab65e258477..ccdb612b9ba 100644
--- a/container-search/src/test/java/com/yahoo/search/querytransform/test/SortingDegraderTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/querytransform/test/SortingDegraderTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.querytransform.test;
import com.yahoo.component.chain.Chain;
diff --git a/container-search/src/test/java/com/yahoo/search/rendering/AsyncGroupPopulationTestCase.java b/container-search/src/test/java/com/yahoo/search/rendering/AsyncGroupPopulationTestCase.java
index a49c1541fd6..359aed85d30 100644
--- a/container-search/src/test/java/com/yahoo/search/rendering/AsyncGroupPopulationTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/rendering/AsyncGroupPopulationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.rendering;
import static org.junit.Assert.assertEquals;
diff --git a/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java b/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java
index d0df131ae31..7395b4802a0 100644
--- a/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.rendering;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -124,6 +124,55 @@ public class JsonRendererTestCase {
}
@Test
+ public void testTensorShortForm() throws ExecutionException, InterruptedException, IOException {
+ String expected = "{" +
+ "\"root\":{" +
+ "\"id\":\"toplevel\"," +
+ "\"relevance\":1.0," +
+ "\"fields\":{" +
+ "\"totalCount\":1" +
+ "}," +
+ "\"children\":[{" +
+ "\"id\":\"tensors\"," +
+ "\"relevance\":1.0," +
+ "\"fields\":{" +
+ "\"tensor_standard\":{\"type\":\"tensor(x{},y{})\",\"cells\":[{\"address\":{\"x\":\"a\",\"y\":\"0\"},\"value\":1.0},{\"address\":{\"x\":\"b\",\"y\":\"1\"},\"value\":2.0}]}," +
+ "\"tensor_indexed\":{\"type\":\"tensor(x[2],y[3])\",\"values\":[[1.0,2.0,3.0],[4.0,5.0,6.0]]}," +
+ "\"tensor_single_mapped\":{\"type\":\"tensor(x{})\",\"cells\":{\"a\":1.0,\"b\":2.0}}," +
+ "\"tensor_mixed\":{\"type\":\"tensor(x{},y[2])\",\"blocks\":{\"a\":[1.0,2.0],\"b\":[3.0,4.0]}}," +
+ "\"summaryfeatures\":{" +
+ "\"tensor_standard\":{\"type\":\"tensor(x{},y{})\",\"cells\":[{\"address\":{\"x\":\"a\",\"y\":\"0\"},\"value\":1.0},{\"address\":{\"x\":\"b\",\"y\":\"1\"},\"value\":2.0}]}," +
+ "\"tensor_indexed\":{\"type\":\"tensor(x[2],y[3])\",\"values\":[[1.0,2.0,3.0],[4.0,5.0,6.0]]}," +
+ "\"tensor_single_mapped\":{\"type\":\"tensor(x{})\",\"cells\":{\"a\":1.0,\"b\":2.0}}," +
+ "\"tensor_mixed\":{\"type\":\"tensor(x{},y[2])\",\"blocks\":{\"a\":[1.0,2.0],\"b\":[3.0,4.0]}}" +
+ "}" +
+ "}" +
+ "}]" +
+ "}}\n";
+
+ Slime slime = new Slime();
+ Cursor features = slime.setObject();
+ features.setData("tensor_standard", TypedBinaryFormat.encode(Tensor.from("tensor(x{},y{}):{ {x:a,y:0}:1.0, {x:b,y:1}:2.0 }")));
+ features.setData("tensor_indexed", TypedBinaryFormat.encode(Tensor.from("tensor(x[2],y[3]):[[1,2,3],[4,5,6]]")));
+ features.setData("tensor_single_mapped", TypedBinaryFormat.encode(Tensor.from("tensor(x{}):{ a:1, b:2 }")));
+ features.setData("tensor_mixed", TypedBinaryFormat.encode(Tensor.from("tensor(x{},y[2]):{a:[1,2], b:[3,4]}")));
+ FeatureData summaryFeatures = new FeatureData(new SlimeAdapter(slime.get()));
+
+ Hit h = new Hit("tensors");
+ h.setField("tensor_standard", new TensorFieldValue(Tensor.from("tensor(x{},y{}):{ {x:a,y:0}:1.0, {x:b,y:1}:2.0 }")));
+ h.setField("tensor_indexed", new TensorFieldValue(Tensor.from("tensor(x[2],y[3]):[[1,2,3],[4,5,6]]")));
+ h.setField("tensor_single_mapped", new TensorFieldValue(Tensor.from("tensor(x{}):{ a:1, b:2 }")));
+ h.setField("tensor_mixed", new TensorFieldValue(Tensor.from("tensor(x{},y[2]):{a:[1,2], b:[3,4]}")));
+ h.setField("summaryfeatures", summaryFeatures);
+
+ Result r = new Result(new Query("/?format.tensors=short"));
+ r.hits().add(h);
+ r.setTotalHitCount(1L);
+ String summary = render(r);
+ assertEqualJson(expected, summary);
+ }
+
+ @Test
public void testDataTypes() throws IOException, InterruptedException, ExecutionException {
String expected = "{"
+ " \"root\": {"
@@ -463,7 +512,6 @@ public class JsonRendererTestCase {
assertEqualJson(expected, summary);
}
-
@Test
public void testTracingOfNodesWithBothChildrenAndDataAndEmptySubnode() throws IOException, InterruptedException, ExecutionException {
String expected = "{"
@@ -553,7 +601,6 @@ public class JsonRendererTestCase {
assertEqualJson(expected, summary);
}
-
@Test
public void test() throws IOException, InterruptedException, ExecutionException {
String expected = "{"
@@ -1212,6 +1259,54 @@ public class JsonRendererTestCase {
assertEqualJson(expected, summary);
}
+ private static SlimeAdapter dataFromSimplified(String simplified) {
+ var decoder = new com.yahoo.slime.JsonDecoder();
+ var slime = decoder.decode(new Slime(), Utf8.toBytes(simplified));
+ return new SlimeAdapter(slime.get());
+ }
+
+ @Test
+ public void testMapDeepInFields() throws IOException, InterruptedException, ExecutionException {
+ Result r = new Result(new Query("/?renderer.json.jsonMaps=true"));
+ var expected = dataFromSimplified(
+ "{root: { id:'toplevel', relevance:1.0, fields: { totalCount: 1 }," +
+ " children: [ { id: 'myHitName', relevance: 1.0," +
+ " fields: { " +
+ " f1: [ 'v1', { mykey1: 'myvalue1', mykey2: 'myvalue2' } ]," +
+ " f2: { i1: 'v2', i2: { mykey3: 'myvalue3' }, i3: 'v3' }," +
+ " f3: { j1: 42, j2: 17.75, j3: [ 'v4', 'v5' ] }," +
+ " f4: { mykey4: 'myvalue4', mykey5: 'myvalue5' }" +
+ " }" +
+ " } ]" +
+ "}}");
+ Hit h = new Hit("myHitName");
+ h.setField("f1", dataFromSimplified("[ 'v1', [ { key: 'mykey1', value: 'myvalue1' }, { key: 'mykey2', value: 'myvalue2' } ] ]"));
+ h.setField("f2", dataFromSimplified("{ i1: 'v2', i2: [ { key: 'mykey3', value: 'myvalue3' } ], i3: 'v3' }"));
+ h.setField("f3", dataFromSimplified("{ j1: 42, j2: 17.75, j3: [ 'v4', 'v5' ] }"));
+ h.setField("f4", dataFromSimplified("[ { key: 'mykey4', value: 'myvalue4' }, { key: 'mykey5', value: 'myvalue5' } ]"));
+ r.hits().add(h);
+ r.setTotalHitCount(1L);
+ String summary = render(r);
+ assertEqualJson(expected.toString(), summary);
+
+ r = new Result(new Query("/?renderer.json.jsonMaps=false"));
+ expected = dataFromSimplified(
+ "{root:{id:'toplevel',relevance:1.0,fields:{totalCount:1}," +
+ " children: [ { id: 'myHitName', relevance: 1.0," +
+ " fields: { " +
+ " f1: [ 'v1', [ { key: 'mykey1', value: 'myvalue1' }, { key: 'mykey2', value: 'myvalue2' } ] ]," +
+ " f2: { i1: 'v2', i2: [ { key: 'mykey3', value: 'myvalue3' } ], i3: 'v3' }," +
+ " f3: { j1: 42, j2: 17.75, j3: [ 'v4', 'v5' ] }," +
+ " f4: { mykey4: 'myvalue4', mykey5: 'myvalue5' }" +
+ " }" +
+ " } ]" +
+ "}}");
+ r.hits().add(h);
+ r.setTotalHitCount(1L);
+ summary = render(r);
+ assertEqualJson(expected.toString(), summary);
+ }
+
@Test
public void testThatTheJsonValidatorCanCatchErrors() {
String json = "{"
diff --git a/container-search/src/test/java/com/yahoo/search/rendering/SyncDefaultRendererTestCase.java b/container-search/src/test/java/com/yahoo/search/rendering/SyncDefaultRendererTestCase.java
index acb69670b14..ae1eade12d3 100644
--- a/container-search/src/test/java/com/yahoo/search/rendering/SyncDefaultRendererTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/rendering/SyncDefaultRendererTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.rendering;
import static org.junit.Assert.assertEquals;
diff --git a/container-search/src/test/java/com/yahoo/search/rendering/XMLRendererTestCase.java b/container-search/src/test/java/com/yahoo/search/rendering/XMLRendererTestCase.java
index 6396981f12d..0fad449763f 100644
--- a/container-search/src/test/java/com/yahoo/search/rendering/XMLRendererTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/rendering/XMLRendererTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.rendering;
import static org.junit.Assert.*;
diff --git a/container-search/src/test/java/com/yahoo/search/result/DefaultErrorHitTestCase.java b/container-search/src/test/java/com/yahoo/search/result/DefaultErrorHitTestCase.java
index 75b9a5264dc..5c9af0c756e 100644
--- a/container-search/src/test/java/com/yahoo/search/result/DefaultErrorHitTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/result/DefaultErrorHitTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
import static org.junit.Assert.*;
diff --git a/container-search/src/test/java/com/yahoo/search/result/NanNumberTestCase.java b/container-search/src/test/java/com/yahoo/search/result/NanNumberTestCase.java
index b314ad7a0b5..c6e5c87efb2 100644
--- a/container-search/src/test/java/com/yahoo/search/result/NanNumberTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/result/NanNumberTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
import static org.junit.Assert.*;
diff --git a/container-search/src/test/java/com/yahoo/search/result/PositionsDataTestCase.java b/container-search/src/test/java/com/yahoo/search/result/PositionsDataTestCase.java
index 91c8acbab12..96039beafa5 100644
--- a/container-search/src/test/java/com/yahoo/search/result/PositionsDataTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/result/PositionsDataTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result;
import com.yahoo.data.access.simple.Value;
diff --git a/container-search/src/test/java/com/yahoo/search/result/test/CoverageTestCase.java b/container-search/src/test/java/com/yahoo/search/result/test/CoverageTestCase.java
index b73da781cd6..d95a8068570 100644
--- a/container-search/src/test/java/com/yahoo/search/result/test/CoverageTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/result/test/CoverageTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/result/test/DeepHitIteratorTestCase.java b/container-search/src/test/java/com/yahoo/search/result/test/DeepHitIteratorTestCase.java
index a46b15b525c..1147cd67460 100644
--- a/container-search/src/test/java/com/yahoo/search/result/test/DeepHitIteratorTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/result/test/DeepHitIteratorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result.test;
import java.util.Iterator;
diff --git a/container-search/src/test/java/com/yahoo/search/result/test/FillingTestCase.java b/container-search/src/test/java/com/yahoo/search/result/test/FillingTestCase.java
index 8a068b7cb3b..ea5c11cb055 100644
--- a/container-search/src/test/java/com/yahoo/search/result/test/FillingTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/result/test/FillingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result.test;
import com.yahoo.search.result.Hit;
diff --git a/container-search/src/test/java/com/yahoo/search/result/test/HitGroupTestCase.java b/container-search/src/test/java/com/yahoo/search/result/test/HitGroupTestCase.java
index f7c8a2a80b0..8196cf4ac74 100644
--- a/container-search/src/test/java/com/yahoo/search/result/test/HitGroupTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/result/test/HitGroupTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.result.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/searchchain/config/test/DependencyConfigTestCase.java b/container-search/src/test/java/com/yahoo/search/searchchain/config/test/DependencyConfigTestCase.java
index 71863c09883..7d691cae3ba 100644
--- a/container-search/src/test/java/com/yahoo/search/searchchain/config/test/DependencyConfigTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/searchchain/config/test/DependencyConfigTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain.config.test;
import java.io.File;
diff --git a/container-search/src/test/java/com/yahoo/search/searchchain/config/test/SearchChainConfigurerTestCase.java b/container-search/src/test/java/com/yahoo/search/searchchain/config/test/SearchChainConfigurerTestCase.java
index 5b16802a65e..a642d14b368 100644
--- a/container-search/src/test/java/com/yahoo/search/searchchain/config/test/SearchChainConfigurerTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/searchchain/config/test/SearchChainConfigurerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain.config.test;
import com.yahoo.config.search.IntConfig;
diff --git a/container-search/src/test/java/com/yahoo/search/searchchain/test/AsyncExecutionOfOneChainTestCase.java b/container-search/src/test/java/com/yahoo/search/searchchain/test/AsyncExecutionOfOneChainTestCase.java
index 28ad202c4f5..11491a86948 100644
--- a/container-search/src/test/java/com/yahoo/search/searchchain/test/AsyncExecutionOfOneChainTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/searchchain/test/AsyncExecutionOfOneChainTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain.test;
import com.yahoo.component.chain.Chain;
diff --git a/container-search/src/test/java/com/yahoo/search/searchchain/test/AsyncExecutionTestCase.java b/container-search/src/test/java/com/yahoo/search/searchchain/test/AsyncExecutionTestCase.java
index 3bae38907eb..ad7125a2e90 100644
--- a/container-search/src/test/java/com/yahoo/search/searchchain/test/AsyncExecutionTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/searchchain/test/AsyncExecutionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain.test;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/test/java/com/yahoo/search/searchchain/test/ExecutionTestCase.java b/container-search/src/test/java/com/yahoo/search/searchchain/test/ExecutionTestCase.java
index c3ccccdc5be..af4194562b0 100644
--- a/container-search/src/test/java/com/yahoo/search/searchchain/test/ExecutionTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/searchchain/test/ExecutionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain.test;
import java.util.ArrayList;
diff --git a/container-search/src/test/java/com/yahoo/search/searchchain/test/FutureDataTestCase.java b/container-search/src/test/java/com/yahoo/search/searchchain/test/FutureDataTestCase.java
index b82d3f1a8e9..573c8ca9790 100644
--- a/container-search/src/test/java/com/yahoo/search/searchchain/test/FutureDataTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/searchchain/test/FutureDataTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain.test;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/test/java/com/yahoo/search/searchchain/test/SearchChainTestCase.java b/container-search/src/test/java/com/yahoo/search/searchchain/test/SearchChainTestCase.java
index 204a4c6d8df..d7fd73a81e6 100644
--- a/container-search/src/test/java/com/yahoo/search/searchchain/test/SearchChainTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/searchchain/test/SearchChainTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain.test;
import static com.yahoo.search.searchchain.test.SimpleSearchChain.searchChain;
diff --git a/container-search/src/test/java/com/yahoo/search/searchchain/test/SimpleSearchChain.java b/container-search/src/test/java/com/yahoo/search/searchchain/test/SimpleSearchChain.java
index 3e29fd6e1f4..b8a1ec3e125 100644
--- a/container-search/src/test/java/com/yahoo/search/searchchain/test/SimpleSearchChain.java
+++ b/container-search/src/test/java/com/yahoo/search/searchchain/test/SimpleSearchChain.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain.test;
import java.util.ArrayList;
diff --git a/container-search/src/test/java/com/yahoo/search/searchchain/test/TraceTestCase.java b/container-search/src/test/java/com/yahoo/search/searchchain/test/TraceTestCase.java
index fce6b1e97d5..90da5a5b746 100644
--- a/container-search/src/test/java/com/yahoo/search/searchchain/test/TraceTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/searchchain/test/TraceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain.test;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/test/java/com/yahoo/search/searchchain/test/VespaAsyncSearcherTest.java b/container-search/src/test/java/com/yahoo/search/searchchain/test/VespaAsyncSearcherTest.java
index 77a515b458d..57f066400d6 100644
--- a/container-search/src/test/java/com/yahoo/search/searchchain/test/VespaAsyncSearcherTest.java
+++ b/container-search/src/test/java/com/yahoo/search/searchchain/test/VespaAsyncSearcherTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchchain.test;
import com.yahoo.component.chain.Chain;
diff --git a/container-search/src/test/java/com/yahoo/search/searchers/test/CacheControlSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/searchers/test/CacheControlSearcherTestCase.java
index 1d87402fbd6..b0fd77897fc 100644
--- a/container-search/src/test/java/com/yahoo/search/searchers/test/CacheControlSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/searchers/test/CacheControlSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchers.test;
import com.yahoo.component.chain.Chain;
diff --git a/container-search/src/test/java/com/yahoo/search/searchers/test/ConnectionControlSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/searchers/test/ConnectionControlSearcherTestCase.java
index 67dc72c5d7f..48dc0975efe 100644
--- a/container-search/src/test/java/com/yahoo/search/searchers/test/ConnectionControlSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/searchers/test/ConnectionControlSearcherTestCase.java
@@ -1,7 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchers.test;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import java.io.ByteArrayInputStream;
import java.net.SocketAddress;
@@ -9,7 +13,6 @@ import java.net.URI;
import java.net.URISyntaxException;
import org.junit.Test;
-import org.mockito.Mockito;
import com.yahoo.component.chain.Chain;
import com.yahoo.container.jdisc.HttpRequest;
@@ -79,19 +82,19 @@ public class ConnectionControlSearcherTestCase {
private Result doSearch(URI uri, long connectedAtMillis, long nowMillis) {
- SocketAddress remoteAddress = Mockito.mock(SocketAddress.class);
+ SocketAddress remoteAddress = mock(SocketAddress.class);
Version version = Version.HTTP_1_1;
Method method = Method.GET;
- CurrentContainer container = Mockito.mock(CurrentContainer.class);
- Mockito.when(container.newReference(Mockito.any())).thenReturn(Mockito.mock(Container.class));
+ CurrentContainer container = mock(CurrentContainer.class);
+ when(container.newReference(any())).thenReturn(mock(Container.class));
+ when(container.newReference(any(URI.class), any(Object.class))).thenReturn(mock(Container.class));
final com.yahoo.jdisc.http.HttpRequest serverRequest = com.yahoo.jdisc.http.HttpRequest
.newServerRequest(container, uri, method, version, remoteAddress, connectedAtMillis);
HttpRequest incoming = new HttpRequest(serverRequest, new ByteArrayInputStream(new byte[0]));
Query query = new Query(incoming);
Execution e = new Execution(new Chain<Searcher>(ConnectionControlSearcher.createTestInstance(() -> nowMillis)),
Execution.Context.createContextStub());
- Result r = e.search(query);
- return r;
+ return e.search(query);
}
}
diff --git a/container-search/src/test/java/com/yahoo/search/searchers/test/InputCheckingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/searchers/test/InputCheckingSearcherTestCase.java
index 9bf5b654a6d..c754193ff72 100644
--- a/container-search/src/test/java/com/yahoo/search/searchers/test/InputCheckingSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/searchers/test/InputCheckingSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchers.test;
import static org.junit.Assert.*;
diff --git a/container-search/src/test/java/com/yahoo/search/searchers/test/MockMetric.java b/container-search/src/test/java/com/yahoo/search/searchers/test/MockMetric.java
index c672fefde6b..33e1d3676f3 100644
--- a/container-search/src/test/java/com/yahoo/search/searchers/test/MockMetric.java
+++ b/container-search/src/test/java/com/yahoo/search/searchers/test/MockMetric.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchers.test;
import com.yahoo.jdisc.Metric;
diff --git a/container-search/src/test/java/com/yahoo/search/searchers/test/QueryValidatorTestCase.java b/container-search/src/test/java/com/yahoo/search/searchers/test/QueryValidatorTestCase.java
index 543c880e525..d5fb1c0cfe3 100644
--- a/container-search/src/test/java/com/yahoo/search/searchers/test/QueryValidatorTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/searchers/test/QueryValidatorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchers.test;
import com.yahoo.prelude.IndexFacts;
diff --git a/container-search/src/test/java/com/yahoo/search/searchers/test/RateLimitingBenchmark.java b/container-search/src/test/java/com/yahoo/search/searchers/test/RateLimitingBenchmark.java
index 1605e8c9bac..5537528d36b 100644
--- a/container-search/src/test/java/com/yahoo/search/searchers/test/RateLimitingBenchmark.java
+++ b/container-search/src/test/java/com/yahoo/search/searchers/test/RateLimitingBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchers.test;
import com.yahoo.cloud.config.ClusterInfoConfig;
diff --git a/container-search/src/test/java/com/yahoo/search/searchers/test/RateLimitingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/searchers/test/RateLimitingSearcherTestCase.java
index 65cbfa829f2..cb1a44b8afd 100755
--- a/container-search/src/test/java/com/yahoo/search/searchers/test/RateLimitingSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/searchers/test/RateLimitingSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchers.test;
import com.yahoo.cloud.config.ClusterInfoConfig;
diff --git a/container-search/src/test/java/com/yahoo/search/searchers/test/ValidateMatchPhaseSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/searchers/test/ValidateMatchPhaseSearcherTestCase.java
index 747471a875b..e50df59ba87 100644
--- a/container-search/src/test/java/com/yahoo/search/searchers/test/ValidateMatchPhaseSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/searchers/test/ValidateMatchPhaseSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.searchers.test;
import com.google.common.util.concurrent.MoreExecutors;
diff --git a/container-search/src/test/java/com/yahoo/search/statistics/ElapsedTimeTestCase.java b/container-search/src/test/java/com/yahoo/search/statistics/ElapsedTimeTestCase.java
index 7491e970b23..c7983a55e8b 100644
--- a/container-search/src/test/java/com/yahoo/search/statistics/ElapsedTimeTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/statistics/ElapsedTimeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.statistics;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/test/java/com/yahoo/search/statistics/PeakQpsTestCase.java b/container-search/src/test/java/com/yahoo/search/statistics/PeakQpsTestCase.java
index fd03b37ac3a..4bc8ee76165 100644
--- a/container-search/src/test/java/com/yahoo/search/statistics/PeakQpsTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/statistics/PeakQpsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.statistics;
import static org.junit.Assert.*;
diff --git a/container-search/src/test/java/com/yahoo/search/statistics/TimingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/statistics/TimingSearcherTestCase.java
index acdfd6370d6..673d38cc2b8 100644
--- a/container-search/src/test/java/com/yahoo/search/statistics/TimingSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/statistics/TimingSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.statistics;
import com.yahoo.component.ComponentId;
diff --git a/container-search/src/test/java/com/yahoo/search/test/QueryBenchmark.java b/container-search/src/test/java/com/yahoo/search/test/QueryBenchmark.java
index 5ad28ea4160..39954b00e8b 100644
--- a/container-search/src/test/java/com/yahoo/search/test/QueryBenchmark.java
+++ b/container-search/src/test/java/com/yahoo/search/test/QueryBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/test/QueryTestCase.java b/container-search/src/test/java/com/yahoo/search/test/QueryTestCase.java
index 138f1ab4b27..e3f7786a52e 100644
--- a/container-search/src/test/java/com/yahoo/search/test/QueryTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/test/QueryTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.test;
import com.yahoo.component.chain.Chain;
@@ -295,6 +295,14 @@ public class QueryTestCase {
}
@Test
+ public void testCloneTimeout() {
+ Query q = new Query(httpEncode("/search?timeout=300ms"));
+ assertEquals(300, q.getTimeout());
+ Query clonedQ = q.clone();
+ assertEquals(300, clonedQ.getTimeout());
+ }
+
+ @Test
public void testQueryProfileSubstitution1() {
QueryProfile profile = new QueryProfile("myProfile");
profile.set("myField", "Profile: %{queryProfile}", null);
@@ -1112,6 +1120,8 @@ public class QueryTestCase {
@Override
public Detector getDetector() { return detector; }
+ @Override
+ public boolean equals(Linguistics other) { return (other instanceof MockLinguistics); }
}
private static class MockDetector extends SimpleDetector {
diff --git a/container-search/src/test/java/com/yahoo/search/test/RequestParameterPreservationTestCase.java b/container-search/src/test/java/com/yahoo/search/test/RequestParameterPreservationTestCase.java
index fda3d4144ea..cc47ec813df 100644
--- a/container-search/src/test/java/com/yahoo/search/test/RequestParameterPreservationTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/test/RequestParameterPreservationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/test/ResultBenchmark.java b/container-search/src/test/java/com/yahoo/search/test/ResultBenchmark.java
index 60b6e9534c9..1ead583730d 100644
--- a/container-search/src/test/java/com/yahoo/search/test/ResultBenchmark.java
+++ b/container-search/src/test/java/com/yahoo/search/test/ResultBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.test;
import com.yahoo.search.Query;
diff --git a/container-search/src/test/java/com/yahoo/search/yql/FieldFilterTestCase.java b/container-search/src/test/java/com/yahoo/search/yql/FieldFilterTestCase.java
index 50313b630ea..8bcd0d3ec4c 100644
--- a/container-search/src/test/java/com/yahoo/search/yql/FieldFilterTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/yql/FieldFilterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import static org.junit.Assert.*;
diff --git a/container-search/src/test/java/com/yahoo/search/yql/MinimalQueryInserterTestCase.java b/container-search/src/test/java/com/yahoo/search/yql/MinimalQueryInserterTestCase.java
index 0a502eccc11..9d4b4c5735a 100644
--- a/container-search/src/test/java/com/yahoo/search/yql/MinimalQueryInserterTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/yql/MinimalQueryInserterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import com.google.common.base.Charsets;
diff --git a/container-search/src/test/java/com/yahoo/search/yql/UserInputTestCase.java b/container-search/src/test/java/com/yahoo/search/yql/UserInputTestCase.java
index 06160e1c6d5..6c28ff5c439 100644
--- a/container-search/src/test/java/com/yahoo/search/yql/UserInputTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/yql/UserInputTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import static org.junit.Assert.*;
diff --git a/container-search/src/test/java/com/yahoo/search/yql/VespaSerializerTestCase.java b/container-search/src/test/java/com/yahoo/search/yql/VespaSerializerTestCase.java
index a44a9f25b62..92c947b0989 100644
--- a/container-search/src/test/java/com/yahoo/search/yql/VespaSerializerTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/yql/VespaSerializerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import static org.junit.Assert.*;
diff --git a/container-search/src/test/java/com/yahoo/search/yql/YqlFieldAndSourceTestCase.java b/container-search/src/test/java/com/yahoo/search/yql/YqlFieldAndSourceTestCase.java
index e1740c55fb0..c96175a0d92 100644
--- a/container-search/src/test/java/com/yahoo/search/yql/YqlFieldAndSourceTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/yql/YqlFieldAndSourceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import static org.junit.Assert.assertEquals;
diff --git a/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java b/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java
index dd2d27eb66c..0728c5c5721 100644
--- a/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;
import com.yahoo.component.chain.Chain;
diff --git a/container-search/src/test/java/com/yahoo/select/SelectTestCase.java b/container-search/src/test/java/com/yahoo/select/SelectTestCase.java
index d1e46a6a8c2..2e7e2a3a711 100644
--- a/container-search/src/test/java/com/yahoo/select/SelectTestCase.java
+++ b/container-search/src/test/java/com/yahoo/select/SelectTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.select;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/container-search/src/test/java/com/yahoo/text/interpretation/test/AnnotationTestCase.java b/container-search/src/test/java/com/yahoo/text/interpretation/test/AnnotationTestCase.java
index 4427d5856d8..f439db390ee 100644
--- a/container-search/src/test/java/com/yahoo/text/interpretation/test/AnnotationTestCase.java
+++ b/container-search/src/test/java/com/yahoo/text/interpretation/test/AnnotationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text.interpretation.test;
import java.util.ArrayList;
diff --git a/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/ListMergerTestCase.java b/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/ListMergerTestCase.java
index 732ad5c1f5d..5523fe3c893 100644
--- a/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/ListMergerTestCase.java
+++ b/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/ListMergerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.streamingvisitors;
import org.junit.Test;
diff --git a/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/MetricsSearcherTestCase.java b/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/MetricsSearcherTestCase.java
index 13acd70b67d..6c2ff66cd9c 100644
--- a/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/MetricsSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/MetricsSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.streamingvisitors;
import com.yahoo.component.chain.Chain;
diff --git a/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/VdsStreamingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/VdsStreamingSearcherTestCase.java
index a60a1df8e40..12b750b6fec 100644
--- a/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/VdsStreamingSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/VdsStreamingSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.streamingvisitors;
import com.yahoo.config.subscription.ConfigGetter;
diff --git a/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/VdsVisitorTestCase.java b/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/VdsVisitorTestCase.java
index fd8383d6b37..cc70f46fca1 100644
--- a/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/VdsVisitorTestCase.java
+++ b/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/VdsVisitorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.streamingvisitors;
import com.yahoo.document.select.parser.ParseException;
diff --git a/container-search/src/test/vespa-configdef/config.search.int.def b/container-search/src/test/vespa-configdef/config.search.int.def
index b526a956b5c..7263d6db894 100644
--- a/container-search/src/test/vespa-configdef/config.search.int.def
+++ b/container-search/src/test/vespa-configdef/config.search.int.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config.search
diff --git a/container-search/src/test/vespa-configdef/config.search.string.def b/container-search/src/test/vespa-configdef/config.search.string.def
index 4b39de61e0a..34a9d5d934c 100644
--- a/container-search/src/test/vespa-configdef/config.search.string.def
+++ b/container-search/src/test/vespa-configdef/config.search.string.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config.search
diff --git a/container-test-jars/OWNERS b/container-test-jars/OWNERS
deleted file mode 100644
index 3b2ba1ede81..00000000000
--- a/container-test-jars/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-gjoranv
diff --git a/container-test-jars/README.md b/container-test-jars/README.md
deleted file mode 100644
index f4f4481efc1..00000000000
--- a/container-test-jars/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
-# Container test bundles
-
-Used by the 'application' module.
diff --git a/container-test-jars/bundle-with-provided-bundle/pom.xml b/container-test-jars/bundle-with-provided-bundle/pom.xml
deleted file mode 100644
index d9d97ddd2b0..00000000000
--- a/container-test-jars/bundle-with-provided-bundle/pom.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
- http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>com.yahoo.vespa.container-test-jars</groupId>
- <artifactId>container-test-jars</artifactId>
- <version>7-SNAPSHOT</version>
- </parent>
-
- <artifactId>bundle-with-provided-bundle</artifactId>
- <packaging>container-plugin</packaging>
- <description>
- This will trigger bugs in our bundle plugins that assumes that artifact.getFile is a jar file.
- Normally, artifact.getFile points to a jar file,
- but in multi-module projects when running phases not including package,
- this will be a directory.
- </description>
-
- <dependencies>
- <dependency>
- <groupId>com.yahoo.vespa.container-test-jars</groupId>
- <artifactId>jersey-resources</artifactId>
- <version>${project.version}</version>
- <scope>provided</scope>
- </dependency>
-
- <dependency>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>vespa_jersey2</artifactId>
- <version>${project.version}</version>
- <scope>provided</scope>
- <type>pom</type>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>bundle-plugin</artifactId>
- <version>${project.version}</version>
- <extensions>true</extensions>
- </plugin>
- </plugins>
- </build>
-</project>
diff --git a/container-test-jars/jersey-resources/pom.xml b/container-test-jars/jersey-resources/pom.xml
deleted file mode 100644
index cb35be91cfd..00000000000
--- a/container-test-jars/jersey-resources/pom.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
- http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>com.yahoo.vespa.container-test-jars</groupId>
- <artifactId>container-test-jars</artifactId>
- <version>7-SNAPSHOT</version>
- </parent>
-
- <artifactId>jersey-resources</artifactId>
- <packaging>container-plugin</packaging>
-
- <dependencies>
- <dependency>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>vespa_jersey2</artifactId>
- <version>${project.version}</version>
- <scope>provided</scope>
- <type>pom</type>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <!-- Explicit for IntelliJ to detect correct language level from parent -->
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>bundle-plugin</artifactId>
- <version>${project.version}</version>
- <extensions>true</extensions>
- </plugin>
- </plugins>
- </build>
-</project>
diff --git a/container-test-jars/jersey-resources/src/main/java/com/yahoo/container/test/jars/jersey/resources/TestResource.java b/container-test-jars/jersey-resources/src/main/java/com/yahoo/container/test/jars/jersey/resources/TestResource.java
deleted file mode 100644
index 59095d05567..00000000000
--- a/container-test-jars/jersey-resources/src/main/java/com/yahoo/container/test/jars/jersey/resources/TestResource.java
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.container.test.jars.jersey.resources;
-
-import javax.ws.rs.Path;
-
-/**
- * @author Tony Vaagenes
- * @author ollivir
- */
-@Path("bundle-plugin-test/test-resource")
-public class TestResource extends TestResourceBase {
-}
diff --git a/container-test-jars/jersey-resources/src/main/java/com/yahoo/container/test/jars/jersey/resources/TestResourceBase.java b/container-test-jars/jersey-resources/src/main/java/com/yahoo/container/test/jars/jersey/resources/TestResourceBase.java
deleted file mode 100644
index c3724723252..00000000000
--- a/container-test-jars/jersey-resources/src/main/java/com/yahoo/container/test/jars/jersey/resources/TestResourceBase.java
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.container.test.jars.jersey.resources;
-
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.Produces;
-import javax.ws.rs.GET;
-
-/**
- * @author Tony Vaagenes
- * @author ollivir
- */
-public class TestResourceBase {
- @GET
- @Produces({MediaType.TEXT_PLAIN})
- public String get() {
- return content(getClass());
- }
-
- public static String content(Class<? extends TestResourceBase> clazz) {
- return "Response from " + clazz.getName();
- }
-}
diff --git a/container-test-jars/jersey-resources/src/main/java/com/yahoo/container/test/jars/jersey/resources/nestedpackage1/NestedTestResource1.java b/container-test-jars/jersey-resources/src/main/java/com/yahoo/container/test/jars/jersey/resources/nestedpackage1/NestedTestResource1.java
deleted file mode 100644
index ab1c1f8f229..00000000000
--- a/container-test-jars/jersey-resources/src/main/java/com/yahoo/container/test/jars/jersey/resources/nestedpackage1/NestedTestResource1.java
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.container.test.jars.jersey.resources.nestedpackage1;
-
-import com.yahoo.container.test.jars.jersey.resources.TestResourceBase;
-
-import javax.ws.rs.Path;
-
-/**
- * @author Tony Vaagenes
- */
-@Path("bundle-plugin-test/nested-test-resource1")
-public class NestedTestResource1 extends TestResourceBase {
-}
diff --git a/container-test-jars/jersey-resources/src/main/java/com/yahoo/container/test/jars/jersey/resources/nestedpackage2/NestedTestResource2.java b/container-test-jars/jersey-resources/src/main/java/com/yahoo/container/test/jars/jersey/resources/nestedpackage2/NestedTestResource2.java
deleted file mode 100644
index 0dfc9e1938b..00000000000
--- a/container-test-jars/jersey-resources/src/main/java/com/yahoo/container/test/jars/jersey/resources/nestedpackage2/NestedTestResource2.java
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.container.test.jars.jersey.resources.nestedpackage2;
-
-import com.yahoo.container.test.jars.jersey.resources.TestResourceBase;
-
-import javax.ws.rs.Path;
-
-/**
- * @author Tony Vaagenes
- */
-@Path("bundle-plugin-test/nested-test-resource2")
-public class NestedTestResource2 extends TestResourceBase {
-}
diff --git a/container-test-jars/pom.xml b/container-test-jars/pom.xml
deleted file mode 100644
index 7176af3791c..00000000000
--- a/container-test-jars/pom.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
- http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>parent</artifactId>
- <version>7-SNAPSHOT</version>
- <relativePath>../parent/pom.xml</relativePath>
- </parent>
- <groupId>com.yahoo.vespa.container-test-jars</groupId>
- <artifactId>container-test-jars</artifactId>
- <version>7-SNAPSHOT</version>
- <packaging>pom</packaging>
- <modules>
- <module>jersey-resources</module>
- <module>bundle-with-provided-bundle</module>
- </modules>
-
- <properties>
- <!-- This project only builds test artifacts -->
- <maven.deploy.skip>true</maven.deploy.skip>
- </properties>
-
-</project>
diff --git a/container-test/README.md b/container-test/README.md
index d2b74b38194..6c1de7859f8 100644
--- a/container-test/README.md
+++ b/container-test/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Container-test
Convenience dependency for users developing OSGi bundles for JDisc.
diff --git a/container-test/pom.xml b/container-test/pom.xml
index efc2c273a02..377272d939c 100644
--- a/container-test/pom.xml
+++ b/container-test/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!-- This module collects all dependencies needed to test container components with application. -->
<!-- It should be considered an external Vespa API. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
diff --git a/container-test/src/main/javadoc/README b/container-test/src/main/javadoc/README
new file mode 100644
index 00000000000..6695538e308
--- /dev/null
+++ b/container-test/src/main/javadoc/README
@@ -0,0 +1 @@
+No javadoc available for module \ No newline at end of file
diff --git a/container/README.md b/container/README.md
index 49647f8c80f..4b2cda9d2b6 100644
--- a/container/README.md
+++ b/container/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Container
Convenience dependency for users developing OSGi bundles for JDisc.
diff --git a/container/pom.xml b/container/pom.xml
index 4f045aac90e..0b6bef77282 100644
--- a/container/pom.xml
+++ b/container/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!-- This module collects all dependencies applications need to create container components. -->
<!-- It should be considered an external Vespa API. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
diff --git a/container/src/main/javadoc/README b/container/src/main/javadoc/README
new file mode 100644
index 00000000000..6695538e308
--- /dev/null
+++ b/container/src/main/javadoc/README
@@ -0,0 +1 @@
+No javadoc available for module \ No newline at end of file
diff --git a/controller-api/pom.xml b/controller-api/pom.xml
index 02a7028b8ca..44322cc8166 100644
--- a/controller-api/pom.xml
+++ b/controller-api/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/ApplicationApi.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/ApplicationApi.java
index 7e3f186d9ee..c57104c88f9 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/ApplicationApi.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/ApplicationApi.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4;
import com.yahoo.vespa.hosted.controller.api.application.v4.model.TenantInfo;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/ApplicationResource.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/ApplicationResource.java
index 66f6a7d873f..30b2ebcb9c5 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/ApplicationResource.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/ApplicationResource.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4;
import com.yahoo.vespa.hosted.controller.api.identifiers.ApplicationId;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/EnvironmentResource.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/EnvironmentResource.java
index 35fe64beb50..77b8118784a 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/EnvironmentResource.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/EnvironmentResource.java
@@ -1,8 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4;
import com.fasterxml.jackson.databind.JsonNode;
-import com.yahoo.vespa.hosted.controller.api.application.v4.model.DeployResult;
import com.yahoo.vespa.hosted.controller.api.application.v4.model.InstanceInformation;
import com.yahoo.vespa.hosted.controller.api.identifiers.ApplicationId;
import com.yahoo.vespa.hosted.controller.api.identifiers.EnvironmentId;
@@ -10,9 +9,6 @@ import com.yahoo.vespa.hosted.controller.api.identifiers.Hostname;
import com.yahoo.vespa.hosted.controller.api.identifiers.InstanceId;
import com.yahoo.vespa.hosted.controller.api.identifiers.RegionId;
import com.yahoo.vespa.hosted.controller.api.identifiers.TenantId;
-import org.glassfish.jersey.media.multipart.FormDataBodyPart;
-import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
-import org.glassfish.jersey.media.multipart.FormDataParam;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
@@ -24,7 +20,6 @@ import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
-import java.io.InputStream;
/**
* @author Tony Vaagenes
@@ -39,21 +34,8 @@ public interface EnvironmentResource {
String APPLICATION_TEST_ZIP = "applicationTestZip";
String APPLICATION_ZIP = "applicationZip";
- String DEPLOY_OPTIONS = "deployOptions";
String SUBMIT_OPTIONS = "submitOptions";
- @POST
- @Path("{environmentId}/region/{regionId}/instance/{instanceId}/deploy")
- @Consumes({MediaType.MULTIPART_FORM_DATA})
- DeployResult deploy(@PathParam("tenantId") TenantId tenantId,
- @PathParam("applicationId") ApplicationId applicationId,
- @PathParam("environmentId") EnvironmentId environmentId,
- @PathParam("regionId") RegionId regionId,
- @PathParam("instanceId") InstanceId instanceId,
- @FormDataParam(APPLICATION_ZIP) InputStream applicationZipFile,
- @FormDataParam(APPLICATION_ZIP) FormDataContentDisposition fileMetaData,
- @FormDataParam(DEPLOY_OPTIONS) FormDataBodyPart deployOptions);
-
@DELETE
@Path("{environmentId}/region/{regionId}/instance/{instanceId}")
String deactivate(@PathParam("tenantId") TenantId tenantId,
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/ServiceViewResource.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/ServiceViewResource.java
index c058a72341a..1d2860f5dd3 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/ServiceViewResource.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/ServiceViewResource.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4;
import com.yahoo.vespa.serviceview.bindings.ApplicationView;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/TenantResource.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/TenantResource.java
index 27d63146dba..307e145756c 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/TenantResource.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/TenantResource.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4;
import com.yahoo.vespa.hosted.controller.api.application.v4.model.TenantCreateOptions;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/ApplicationReference.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/ApplicationReference.java
index c542987e78f..8e5740eae6b 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/ApplicationReference.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/ApplicationReference.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/DeployResult.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/DeployResult.java
index 3a98926805f..50074329b49 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/DeployResult.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/DeployResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/DeploymentData.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/DeploymentData.java
index 55e1e879ef7..1f1f8577a32 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/DeploymentData.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/DeploymentData.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model;
import com.yahoo.component.Version;
@@ -6,7 +6,6 @@ import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.DockerImage;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.athenz.api.AthenzDomain;
-import com.yahoo.vespa.hosted.controller.api.integration.aws.TenantRoles;
import com.yahoo.vespa.hosted.controller.api.integration.billing.Quota;
import com.yahoo.vespa.hosted.controller.api.integration.certificates.EndpointCertificateMetadata;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.ContainerEndpoint;
@@ -34,20 +33,33 @@ public class DeploymentData {
private final Optional<EndpointCertificateMetadata> endpointCertificateMetadata;
private final Optional<DockerImage> dockerImageRepo;
private final Optional<AthenzDomain> athenzDomain;
- private final Optional<TenantRoles> tenantRoles;
private final Quota quota;
private final List<TenantSecretStore> tenantSecretStores;
private final List<X509Certificate> operatorCertificates;
+ private final boolean dryRun;
+ // TODO: Remove when users have been updated to use constructor below
public DeploymentData(ApplicationId instance, ZoneId zone, byte[] applicationPackage, Version platform,
Set<ContainerEndpoint> containerEndpoints,
Optional<EndpointCertificateMetadata> endpointCertificateMetadata,
Optional<DockerImage> dockerImageRepo,
Optional<AthenzDomain> athenzDomain,
- Optional<TenantRoles> tenantRoles,
Quota quota,
List<TenantSecretStore> tenantSecretStores,
List<X509Certificate> operatorCertificates) {
+ this(instance, zone, applicationPackage, platform, containerEndpoints, endpointCertificateMetadata,
+ dockerImageRepo, athenzDomain, quota, tenantSecretStores, operatorCertificates, false);
+ }
+
+ public DeploymentData(ApplicationId instance, ZoneId zone, byte[] applicationPackage, Version platform,
+ Set<ContainerEndpoint> containerEndpoints,
+ Optional<EndpointCertificateMetadata> endpointCertificateMetadata,
+ Optional<DockerImage> dockerImageRepo,
+ Optional<AthenzDomain> athenzDomain,
+ Quota quota,
+ List<TenantSecretStore> tenantSecretStores,
+ List<X509Certificate> operatorCertificates,
+ boolean dryRun) {
this.instance = requireNonNull(instance);
this.zone = requireNonNull(zone);
this.applicationPackage = requireNonNull(applicationPackage);
@@ -56,10 +68,10 @@ public class DeploymentData {
this.endpointCertificateMetadata = requireNonNull(endpointCertificateMetadata);
this.dockerImageRepo = requireNonNull(dockerImageRepo);
this.athenzDomain = athenzDomain;
- this.tenantRoles = tenantRoles;
this.quota = quota;
this.tenantSecretStores = tenantSecretStores;
this.operatorCertificates = operatorCertificates;
+ this.dryRun = dryRun;
}
public ApplicationId instance() {
@@ -94,10 +106,6 @@ public class DeploymentData {
return athenzDomain;
}
- public Optional<TenantRoles> tenantRoles() {
- return tenantRoles;
- }
-
public Quota quota() {
return quota;
}
@@ -109,4 +117,7 @@ public class DeploymentData {
public List<X509Certificate> operatorCertificates() {
return operatorCertificates;
}
+
+ public boolean isDryRun() { return dryRun; }
+
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/DeploymentReference.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/DeploymentReference.java
index 7971a3d0e0e..ae8a001eddb 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/DeploymentReference.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/DeploymentReference.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/EndpointStatus.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/EndpointStatus.java
index d014a82bf62..55a7af45fd2 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/EndpointStatus.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/EndpointStatus.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/InstanceInformation.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/InstanceInformation.java
index d888c5446a6..ffaee34e727 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/InstanceInformation.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/InstanceInformation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/InstanceReference.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/InstanceReference.java
index f9443e93f52..6e5554077bb 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/InstanceReference.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/InstanceReference.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/InstancesReply.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/InstancesReply.java
index 09d54d10845..9868b4bda60 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/InstancesReply.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/InstancesReply.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/JsonResponse.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/JsonResponse.java
index 3690644c49b..dd9a16ef98f 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/JsonResponse.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/JsonResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/LogEntry.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/LogEntry.java
index d5fc0addd70..06d834259e5 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/LogEntry.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/LogEntry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/ProtonMetrics.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/ProtonMetrics.java
index 3c08ef69ea3..8d7daa44687 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/ProtonMetrics.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/ProtonMetrics.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model;
import com.fasterxml.jackson.databind.JsonNode;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/SubmitOptions.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/SubmitOptions.java
index fb97a3c1004..c1144d5f18d 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/SubmitOptions.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/SubmitOptions.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/SubmitResult.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/SubmitResult.java
index a7f136cf3ce..f575464e84b 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/SubmitResult.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/SubmitResult.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantCreateOptions.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantCreateOptions.java
index b99c3182f03..721d2587104 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantCreateOptions.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantCreateOptions.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantInfo.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantInfo.java
index ef1afbc9edf..53b6cb8b664 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantInfo.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantInfo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantMetaData.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantMetaData.java
index a8bda2e5f10..71231dcc983 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantMetaData.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantMetaData.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantType.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantType.java
index 0f04a31a9ed..0e8bb158f73 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantType.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantUpdateOptions.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantUpdateOptions.java
index 4e8c164a64d..92124d675b3 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantUpdateOptions.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantUpdateOptions.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantWithApplications.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantWithApplications.java
index 0c40e8192d6..c09e038518e 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantWithApplications.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/TenantWithApplications.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/ConfigChangeActions.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/ConfigChangeActions.java
index 1c1599f318d..fd740f19b69 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/ConfigChangeActions.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/ConfigChangeActions.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model.configserverbindings;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/RefeedAction.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/RefeedAction.java
index 799bc814abe..bab6ecb0253 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/RefeedAction.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/RefeedAction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model.configserverbindings;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/ReindexAction.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/ReindexAction.java
index c2b28a94c66..36909415888 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/ReindexAction.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/ReindexAction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model.configserverbindings;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/RestartAction.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/RestartAction.java
index a760a26d47d..696e5c049f8 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/RestartAction.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/RestartAction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model.configserverbindings;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/ServiceInfo.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/ServiceInfo.java
index 8d03d2da440..bb7e63c2ec4 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/ServiceInfo.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/ServiceInfo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4.model.configserverbindings;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/package-info.java
index 1201f148329..75fa8b2b2f1 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/configserverbindings/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.controller.api.application.v4.model.configserverbindings;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/package-info.java
index 1eac6d8c296..326c87b54d0 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.controller.api.application.v4.model;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/package-info.java
index e7b71b693a3..3004177ee7d 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.controller.api.application.v4;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/configserver/Environment.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/configserver/Environment.java
index ad28d3ca5b5..f1c721a0775 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/configserver/Environment.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/configserver/Environment.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.configserver;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/configserver/Region.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/configserver/Region.java
index b7f1560eb67..e1890330c78 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/configserver/Region.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/configserver/Region.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.configserver;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/configserver/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/configserver/package-info.java
index f035e200661..2f523378817 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/configserver/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/configserver/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.controller.api.configserver;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/ApplicationId.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/ApplicationId.java
index 3ad1d3f4d35..3b987e07284 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/ApplicationId.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/ApplicationId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.identifiers;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/DeploymentId.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/DeploymentId.java
index 5b538f23fbd..b65655cda5f 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/DeploymentId.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/DeploymentId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.identifiers;
import com.yahoo.config.provision.zone.ZoneId;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/EnvironmentId.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/EnvironmentId.java
index a09e802c251..c16c7b77ec4 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/EnvironmentId.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/EnvironmentId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.identifiers;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/GitBranch.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/GitBranch.java
index 31402825d3c..743440deaa3 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/GitBranch.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/GitBranch.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.identifiers;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/GitCommit.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/GitCommit.java
index 289b3ec59a0..368799ad320 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/GitCommit.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/GitCommit.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.identifiers;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/GitRepository.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/GitRepository.java
index 50bbc0bd9f9..a4303455abf 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/GitRepository.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/GitRepository.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.identifiers;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/Hostname.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/Hostname.java
index 3f7437c5d0b..fc46c92189d 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/Hostname.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/Hostname.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.identifiers;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/Identifier.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/Identifier.java
index 8b24536c730..c84ad7f6e30 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/Identifier.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/Identifier.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.identifiers;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/InstanceId.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/InstanceId.java
index 6973a142b16..4b167fcdfdb 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/InstanceId.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/InstanceId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.identifiers;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/MetricsType.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/MetricsType.java
index aeb828a21f3..547166a112a 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/MetricsType.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/MetricsType.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.identifiers;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/NonDefaultIdentifier.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/NonDefaultIdentifier.java
index 96f0a9c43f0..e4c74156726 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/NonDefaultIdentifier.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/NonDefaultIdentifier.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.identifiers;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/Property.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/Property.java
index 7dde9002310..33a33e1a0ef 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/Property.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/Property.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.identifiers;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/PropertyId.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/PropertyId.java
index c84cfb9b512..861f696daf6 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/PropertyId.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/PropertyId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.identifiers;
import java.util.regex.Pattern;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/RegionId.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/RegionId.java
index bb6208ff8e3..0d041038097 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/RegionId.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/RegionId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.identifiers;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/RevisionId.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/RevisionId.java
index 5e2a9776264..7b9dd18fde6 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/RevisionId.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/RevisionId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.identifiers;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/ScrewdriverId.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/ScrewdriverId.java
index b0fb72662c6..b788109e1d6 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/ScrewdriverId.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/ScrewdriverId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.identifiers;
import java.util.regex.Pattern;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/SerializedIdentifier.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/SerializedIdentifier.java
index 3660262f9c1..76ac3bb575d 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/SerializedIdentifier.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/SerializedIdentifier.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.identifiers;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/TenantId.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/TenantId.java
index d8318470f82..dc8d98c9844 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/TenantId.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/TenantId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.identifiers;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/UserGroup.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/UserGroup.java
index b6b0379bc90..126135604b7 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/UserGroup.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/UserGroup.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.identifiers;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/UserId.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/UserId.java
index f1a8e57ab03..a7770ffada7 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/UserId.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/UserId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.identifiers;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/package-info.java
index 211a2ab7fc0..d7e1bbffe4b 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/identifiers/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.controller.api.identifiers;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/LogEntry.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/LogEntry.java
index c315563f730..c74133838cf 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/LogEntry.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/LogEntry.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration;
import com.yahoo.log.LogLevel;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/RunDataStore.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/RunDataStore.java
index 8d1f608a31c..9cf508d37c9 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/RunDataStore.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/RunDataStore.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration;
import com.yahoo.config.provision.ApplicationId;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/ServiceRegistry.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/ServiceRegistry.java
index 4ab09919263..93e3f5585c8 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/ServiceRegistry.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/ServiceRegistry.java
@@ -4,7 +4,7 @@ package com.yahoo.vespa.hosted.controller.api.integration;
import com.yahoo.vespa.hosted.controller.api.integration.archive.ArchiveService;
import com.yahoo.vespa.hosted.controller.api.integration.athenz.AccessControlService;
import com.yahoo.vespa.hosted.controller.api.integration.aws.RoleService;
-import com.yahoo.vespa.hosted.controller.api.integration.aws.AwsEventFetcher;
+import com.yahoo.vespa.hosted.controller.api.integration.aws.CloudEventFetcher;
import com.yahoo.vespa.hosted.controller.api.integration.aws.ResourceTagger;
import com.yahoo.vespa.hosted.controller.api.integration.billing.BillingController;
import com.yahoo.vespa.hosted.controller.api.integration.billing.BillingDatabaseClient;
@@ -71,7 +71,7 @@ public interface ServiceRegistry {
CostReportConsumer costReportConsumer();
- AwsEventFetcher eventFetcherService();
+ CloudEventFetcher eventFetcherService();
ArtifactRepository artifactRepository();
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/ArchiveBucket.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/ArchiveBucket.java
index 6bdaced2642..be3b87ddc5c 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/ArchiveBucket.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/ArchiveBucket.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.archive;
import com.google.common.collect.Sets;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/ArchiveService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/ArchiveService.java
index 47aaf1740e1..04e52c59d7a 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/ArchiveService.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/ArchiveService.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.archive;
import com.yahoo.config.provision.TenantName;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/MockArchiveService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/MockArchiveService.java
index 9e9492a982c..c8e79a84925 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/MockArchiveService.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/MockArchiveService.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.archive;
import com.yahoo.config.provision.TenantName;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/package-info.java
index 2fa68f1f39d..6635003003a 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/archive/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author freva
*/
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AccessControlService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AccessControlService.java
index 78c67236f78..a981b11887e 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AccessControlService.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AccessControlService.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.athenz;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/ApplicationAction.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/ApplicationAction.java
index 3323cda89b3..731f73fbf38 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/ApplicationAction.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/ApplicationAction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.athenz;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AthenzAccessControlService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AthenzAccessControlService.java
index 0be32165916..c2d4d4a5996 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AthenzAccessControlService.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AthenzAccessControlService.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.athenz;
@@ -11,6 +11,8 @@ import com.yahoo.vespa.athenz.client.zms.ZmsClient;
import java.time.Instant;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
+import java.util.Optional;
import java.util.stream.Collectors;
public class AthenzAccessControlService implements AccessControlService {
@@ -34,9 +36,9 @@ public class AthenzAccessControlService implements AccessControlService {
if(!isVespaTeamMember(user)) {
throw new IllegalArgumentException(String.format("User %s requires manual approval, please contact Vespa team", user.getName()));
}
- List<AthenzUser> users = zmsClient.listPendingRoleApprovals(dataPlaneAccessRole);
- if (users.contains(user)) {
- zmsClient.approvePendingRoleMembership(dataPlaneAccessRole, user, expiry);
+ Map<AthenzUser, String> users = zmsClient.listPendingRoleApprovals(dataPlaneAccessRole);
+ if (users.containsKey(user)) {
+ zmsClient.approvePendingRoleMembership(dataPlaneAccessRole, user, expiry, Optional.empty());
return true;
}
return false;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AthenzClientFactory.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AthenzClientFactory.java
index bd65443b265..be8b1de771f 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AthenzClientFactory.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AthenzClientFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.athenz;
import com.yahoo.vespa.athenz.api.AthenzIdentity;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AthenzClientFactoryMock.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AthenzClientFactoryMock.java
index 2995e1a28e7..34a8d52b4ca 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AthenzClientFactoryMock.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AthenzClientFactoryMock.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.athenz;
import com.google.inject.Inject;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AthenzDbMock.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AthenzDbMock.java
index 02a6efb280b..44271846d7d 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AthenzDbMock.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/AthenzDbMock.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.athenz;
import com.yahoo.vespa.athenz.api.AthenzDomain;
@@ -10,6 +10,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.regex.Pattern;
@@ -42,7 +43,8 @@ public class AthenzDbMock {
public final Set<AthenzIdentity> tenantAdmins = new HashSet<>();
public final Map<ApplicationId, Application> applications = new HashMap<>();
public final Map<String, Service> services = new HashMap<>();
- public final List<Policy> policies = new ArrayList<>();
+ public final List<Role> roles = new ArrayList<>();
+ public final Map<String, Policy> policies = new HashMap<>();
public boolean isVespaTenant = false;
public Domain(AthenzDomain name) {
@@ -51,7 +53,7 @@ public class AthenzDbMock {
public Domain admin(AthenzIdentity identity) {
admins.add(identity);
- policies.add(new Policy(identity.getFullName(), ".*", ".*"));
+ policies.put("admin", new Policy("admin", identity.getFullName(), ".*", ".*"));
return this;
}
@@ -65,8 +67,8 @@ public class AthenzDbMock {
return this;
}
- public Domain withPolicy(String principalRegex, String operation, String resource) {
- policies.add(new Policy(principalRegex, operation, resource));
+ public Domain withPolicy(String name, String principalRegex, String operation, String resource) {
+ policies.put(name, new Policy(name, principalRegex, operation, resource));
return this;
}
@@ -77,6 +79,13 @@ public class AthenzDbMock {
isVespaTenant = true;
}
+ public boolean hasRole(String name) { return roles.stream().anyMatch(r -> r.name.equals(name)); }
+
+ public boolean hasPolicy(String name) { return policies.containsKey(name); }
+
+ public boolean checkAccess(AthenzIdentity principal, String action, String resource) {
+ return policies.values().stream().anyMatch(a -> a.matches(principal, action, resource));
+ }
}
public static class Application {
@@ -105,26 +114,83 @@ public class AthenzDbMock {
}
public static class Policy {
- private final Pattern principal;
- private final Pattern action;
- private final Pattern resource;
+ private final String name;
+ final List<Assertion> assertions = new ArrayList<>();
+
+ public Policy(String name, String principal, String action, String resource) {
+ this(name);
+ this.assertions.add(new Assertion("grant", principal, action, resource));
+ }
+
+ public Policy(String name) { this.name = name; }
+
+ public String name() {
+ return name;
+ }
+
+ public boolean matches(String assertion) {
+ return assertions.stream().anyMatch(a -> a.matches(assertion));
+ }
+
+ public boolean matches(AthenzIdentity principal, String action, String resource) {
+ return assertions.stream().anyMatch(a -> a.matches(principal, action, resource));
+ }
+ }
+
+ public static class Assertion {
+ private final String effect;
+ private final String role;
+ private final String action;
+ private final String resource;
+
+ public Assertion(String effect, String role, String action, String resource) {
+ this.effect = effect;
+ this.role = role;
+ this.action = action;
+ this.resource = resource;
+ }
+
+ public Assertion(String role, String action, String resource) { this("allow", role, action, resource); }
+
+ public String effect() { return effect; }
+ public String role() { return role; }
+ public String action() { return action; }
+ public String resource() { return resource; }
+
+ public boolean matches(AthenzIdentity principal, String action, String resource) {
+ return Pattern.compile(this.role).matcher(principal.getFullName()).matches()
+ && Pattern.compile(this.action).matcher(action).matches()
+ && Pattern.compile(this.resource).matcher(resource).matches();
+ }
+
+ public boolean matches(String assertion) { return asString().equals(assertion); }
+
+ public String asString() { return String.format("%s %s to %s on %s", effect, action, role, resource).toLowerCase(); }
- public Policy(String principal, String action, String resource) {
- this.principal = Pattern.compile(principal);
- this.action = Pattern.compile(action);
- this.resource = Pattern.compile(resource);
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ Assertion assertion = (Assertion) o;
+ return Objects.equals(effect, assertion.effect) && Objects.equals(role, assertion.role)
+ && Objects.equals(action, assertion.action) && Objects.equals(resource, assertion.resource);
}
- public boolean principalMatches(AthenzIdentity athenzIdentity) {
- return this.principal.matcher(athenzIdentity.getFullName()).matches();
+ @Override
+ public int hashCode() {
+ return Objects.hash(effect, role, action, resource);
}
+ }
+
+ public static class Role {
+ private final String name;
- public boolean actionMatches(String operation) {
- return this.action.matcher(operation).matches();
+ public Role(String name) {
+ this.name = name;
}
- public boolean resourceMatches(String resource) {
- return this.resource.matcher(resource).matches();
+ public String name() {
+ return name;
}
}
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/MockAccessControlService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/MockAccessControlService.java
index 81bc7725c7a..a0cc0d1ae1c 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/MockAccessControlService.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/MockAccessControlService.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.athenz;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/ZmsClientMock.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/ZmsClientMock.java
index 396be0adf92..561475caa54 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/ZmsClientMock.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/ZmsClientMock.java
@@ -1,11 +1,14 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.athenz;
+import com.yahoo.vespa.athenz.api.AthenzAssertion;
import com.yahoo.vespa.athenz.api.AthenzDomain;
import com.yahoo.vespa.athenz.api.AthenzGroup;
import com.yahoo.vespa.athenz.api.AthenzIdentity;
+import com.yahoo.vespa.athenz.api.AthenzPolicy;
import com.yahoo.vespa.athenz.api.AthenzResourceName;
import com.yahoo.vespa.athenz.api.AthenzRole;
+import com.yahoo.vespa.athenz.api.AthenzService;
import com.yahoo.vespa.athenz.api.AthenzUser;
import com.yahoo.vespa.athenz.api.OktaAccessToken;
import com.yahoo.vespa.athenz.api.OktaIdentityToken;
@@ -16,13 +19,16 @@ import com.yahoo.vespa.hosted.controller.api.identifiers.ApplicationId;
import java.time.Instant;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import java.util.stream.Collectors;
/**
* @author bjorncs
@@ -77,6 +83,25 @@ public class ZmsClientMock implements ZmsClient {
}
@Override
+ public void createTenantResourceGroup(AthenzDomain tenantDomain, AthenzIdentity provider, String resourceGroup,
+ Set<RoleAction> roleActions) {
+ log("createTenantResourceGroup(tenantDomain='%s', resourceGroup='%s')", tenantDomain, resourceGroup);
+ AthenzDbMock.Domain domain = getDomainOrThrow(tenantDomain, true);
+ ApplicationId applicationId = new ApplicationId(resourceGroup);
+ if (!domain.applications.containsKey(applicationId)) {
+ domain.applications.put(applicationId, new AthenzDbMock.Application());
+ }
+ }
+
+ @Override
+ public Set<RoleAction> getTenantResourceGroups(AthenzDomain tenantDomain, AthenzIdentity provider, String resourceGroup) {
+ Set<RoleAction> result = new HashSet<>();
+ getDomainOrThrow(tenantDomain, true).applications.get(resourceGroup).acl
+ .forEach((role, roleMembers) -> result.add(new RoleAction(role.roleName, role.roleName)));
+ return result;
+ }
+
+ @Override
public void addRoleMember(AthenzRole role, AthenzIdentity member, Optional<String> reason) {
if ( ! role.roleName().equals("tenancy.vespa.hosting.admin"))
throw new IllegalArgumentException("Mock only supports adding tenant admins, not " + role.roleName());
@@ -135,17 +160,24 @@ public class ZmsClientMock implements ZmsClient {
return false;
} else {
AthenzDbMock.Domain domain = getDomainOrThrow(resource.getDomain(), false);
- return domain.policies.stream()
- .anyMatch(policy ->
- policy.principalMatches(identity) &&
- policy.actionMatches(action) &&
- policy.resourceMatches(resource.getEntityName()));
+ return domain.checkAccess(identity, action, resource.getEntityName());
}
}
@Override
- public void addPolicyRule(AthenzDomain athenzDomain, String athenzPolicy, String action, AthenzResourceName resourceName, AthenzRole athenzRole) {
+ public void createPolicy(AthenzDomain athenzDomain, String athenzPolicy) {
+ Map<String, AthenzDbMock.Policy> policies = athenz.getOrCreateDomain(athenzDomain).policies;
+ if (policies.containsKey(athenzPolicy)) {
+ throw new IllegalArgumentException("Policy already exists");
+ }
+ policies.put(athenzPolicy, new AthenzDbMock.Policy(athenzPolicy));
+ }
+ @Override
+ public void addPolicyRule(AthenzDomain athenzDomain, String athenzPolicy, String action, AthenzResourceName resourceName, AthenzRole athenzRole) {
+ AthenzDbMock.Policy policy = athenz.getOrCreateDomain(athenzDomain).policies.get(athenzPolicy);
+ if (policy == null) throw new IllegalArgumentException("No policy with name " + athenzPolicy);
+ policy.assertions.add(new AthenzDbMock.Assertion(athenzRole.roleName(), action, resourceName.toResourceNameString()));
}
@Override
@@ -154,12 +186,26 @@ public class ZmsClientMock implements ZmsClient {
}
@Override
- public List<AthenzUser> listPendingRoleApprovals(AthenzRole athenzRole) {
- return List.of();
+ public Optional<AthenzPolicy> getPolicy(AthenzDomain domain, String name) {
+ AthenzDbMock.Policy policy = athenz.getOrCreateDomain(domain).policies.get(name);
+ if (policy == null) return Optional.empty();
+ List<AthenzAssertion> assertions = policy.assertions.stream()
+ .map(a -> AthenzAssertion.newBuilder(
+ new AthenzRole(domain, a.role()),
+ AthenzResourceName.fromString(a.resource()),
+ a.action())
+ .build())
+ .collect(Collectors.toList());
+ return Optional.of(new AthenzPolicy(policy.name(), assertions));
+ }
+
+ @Override
+ public Map<AthenzUser,String> listPendingRoleApprovals(AthenzRole athenzRole) {
+ return Map.of();
}
@Override
- public void approvePendingRoleMembership(AthenzRole athenzRole, AthenzUser athenzUser, Instant expiry) {
+ public void approvePendingRoleMembership(AthenzRole athenzRole, AthenzUser athenzUser, Instant expiry, Optional<String> reason) {
}
@Override
@@ -168,6 +214,44 @@ public class ZmsClientMock implements ZmsClient {
}
@Override
+ public List<AthenzService> listServices(AthenzDomain athenzDomain) {
+ return athenz.getOrCreateDomain(athenzDomain).services.keySet().stream()
+ .map(serviceName -> new AthenzService(athenzDomain, serviceName))
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public void createOrUpdateService(AthenzService athenzService) {
+ athenz.getOrCreateDomain(athenzService.getDomain()).services.put(athenzService.getName(), new AthenzDbMock.Service(false));
+ }
+
+ @Override
+ public void deleteService(AthenzService athenzService) {
+ athenz.getOrCreateDomain(athenzService.getDomain()).services.remove(athenzService.getName());
+ }
+
+ @Override
+ public void createRole(AthenzRole role, Map<String, Object> properties) {
+ List<AthenzDbMock.Role> roles = athenz.getOrCreateDomain(role.domain()).roles;
+ if (roles.stream().anyMatch(r -> r.name().equals(role.roleName()))) {
+ throw new IllegalArgumentException("Role already exists");
+ }
+ roles.add(new AthenzDbMock.Role(role.roleName()));
+ }
+
+ @Override
+ public Set<AthenzRole> listRoles(AthenzDomain domain) {
+ return athenz.getOrCreateDomain(domain).roles.stream()
+ .map(role -> new AthenzRole(domain, role.name()))
+ .collect(Collectors.toSet());
+ }
+
+ @Override
+ public Set<String> listPolicies(AthenzDomain domain) {
+ return athenz.getOrCreateDomain(domain).policies.keySet();
+ }
+
+ @Override
public void close() {}
private static AthenzDomain getTenantDomain(AthenzResourceName resource) {
@@ -204,7 +288,7 @@ public class ZmsClientMock implements ZmsClient {
}
private static void log(String format, Object... args) {
- log.log(Level.INFO, String.format(format, args));
+ log.log(Level.FINE, String.format(format, args));
}
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/ZtsClientMock.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/ZtsClientMock.java
index 53e80fcb2ed..0efa225a437 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/ZtsClientMock.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/ZtsClientMock.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.athenz;
import com.yahoo.security.Pkcs10Csr;
@@ -36,7 +36,7 @@ public class ZtsClientMock implements ZtsClient {
@Override
public List<AthenzDomain> getTenantDomains(AthenzIdentity providerIdentity, AthenzIdentity userIdentity, String roleName) {
- log.log(Level.INFO, String.format("getTenantDomains(providerIdentity='%s', userIdentity='%s', roleName='%s')",
+ log.log(Level.FINE, String.format("getTenantDomains(providerIdentity='%s', userIdentity='%s', roleName='%s')",
providerIdentity.getFullName(), userIdentity.getFullName(), roleName));
return athenz.domains.values().stream()
.filter(domain -> domain.tenantAdmins.contains(userIdentity) || domain.admins.contains(userIdentity))
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/package-info.java
index d66525275bc..e451acbd9b6 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/athenz/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/AwsEventFetcher.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/CloudEventFetcher.java
index 42c7e3c2590..1085897f22b 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/AwsEventFetcher.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/CloudEventFetcher.java
@@ -1,16 +1,13 @@
// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.aws;
-import com.yahoo.vespa.hosted.controller.api.integration.organization.Issue;
-
import java.util.List;
/**
* @author freva
*/
-public interface AwsEventFetcher {
+public interface CloudEventFetcher {
- List<CloudEvent> getEvents(String awsRegionName);
- Issue createIssue(CloudEvent event);
+ List<CloudEvent> getEvents(String regionName);
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockAwsEventFetcher.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockAwsEventFetcher.java
deleted file mode 100644
index 056d5bec223..00000000000
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockAwsEventFetcher.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.api.integration.aws;
-
-import com.yahoo.vespa.hosted.controller.api.integration.organization.Issue;
-import com.yahoo.vespa.hosted.controller.api.integration.organization.User;
-
-import java.util.List;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.ArrayList;
-import java.util.Optional;
-
-/**
- * @author freva
- */
-public class MockAwsEventFetcher implements AwsEventFetcher {
-
- private final Map<String, List<CloudEvent>> mockedEvents = new HashMap<>();
-
- @Override
- public List<CloudEvent> getEvents(String awsRegionName) {
- return mockedEvents.getOrDefault(awsRegionName, new ArrayList<>());
- }
-
- @Override
- public Issue createIssue(CloudEvent event) {
- return new Issue("summary", event.affectedInstances.toString(), "VESPA", Optional.empty()).with(User.from(event.awsRegionName));
- }
-
- public void addEvent(String awsRegionName, CloudEvent cloudEvent) {
- mockedEvents.computeIfAbsent(awsRegionName, i -> new ArrayList<>()).add(cloudEvent);
- }
-
-}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockCloudEventFetcher.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockCloudEventFetcher.java
new file mode 100644
index 00000000000..c2d803caaf5
--- /dev/null
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockCloudEventFetcher.java
@@ -0,0 +1,25 @@
+// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.controller.api.integration.aws;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author freva
+ */
+public class MockCloudEventFetcher implements CloudEventFetcher {
+
+ private final Map<String, List<CloudEvent>> mockedEvents = new HashMap<>();
+
+ @Override
+ public List<CloudEvent> getEvents(String regionName) {
+ return mockedEvents.getOrDefault(regionName, new ArrayList<>());
+ }
+
+ public void addEvent(String regionName, CloudEvent cloudEvent) {
+ mockedEvents.computeIfAbsent(regionName, i -> new ArrayList<>()).add(cloudEvent);
+ }
+
+}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockRoleService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockRoleService.java
index f7c51f0bbc2..aa0d9c75b81 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockRoleService.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/MockRoleService.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.aws;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/NoopRoleService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/NoopRoleService.java
index 85b042d584c..236d5626909 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/NoopRoleService.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/NoopRoleService.java
@@ -1,7 +1,8 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.aws;
import com.yahoo.config.provision.TenantName;
+import com.yahoo.vespa.hosted.controller.tenant.Tenant;
import java.util.List;
import java.util.Optional;
@@ -12,13 +13,13 @@ import java.util.Optional;
public class NoopRoleService implements RoleService {
@Override
- public Optional<TenantRoles> createTenantRole(TenantName tenant) {
+ public Optional<TenantRoles> createTenantRole(Tenant tenant) {
return Optional.empty();
}
@Override
public TenantRoles getTenantRole(TenantName tenant) {
- return new TenantRoles(tenant.value() + "-host-role", tenant.value() + "-tenant-role");
+ return new TenantRoles(tenant.value() + "-legacy-host-role", tenant.value() + "-host-role", tenant.value() + "-host-service-role", tenant.value() + "-tenant-role");
}
@Override
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/RoleService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/RoleService.java
index d27fa0a5bd8..bc661077537 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/RoleService.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/RoleService.java
@@ -1,7 +1,8 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.aws;
import com.yahoo.config.provision.TenantName;
+import com.yahoo.vespa.hosted.controller.tenant.Tenant;
import java.util.List;
import java.util.Optional;
@@ -11,7 +12,7 @@ import java.util.Optional;
*/
public interface RoleService {
- Optional<TenantRoles> createTenantRole(TenantName tenant);
+ Optional<TenantRoles> createTenantRole(Tenant tenant);
/** Retrieve the names of the tenant roles (host and container). Does not guarantee these roles exist */
TenantRoles getTenantRole(TenantName tenant);
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/TenantRoles.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/TenantRoles.java
index 4c5e3257d0e..e3cd8ede07c 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/TenantRoles.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/aws/TenantRoles.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.aws;
/**
@@ -6,10 +6,14 @@ package com.yahoo.vespa.hosted.controller.api.integration.aws;
*/
public class TenantRoles {
private final String hostRole;
+ private final String tenantHostRole;
+ private final String tenantHostServiceRole;
private final String containerRole;
- public TenantRoles(String hostRole, String containerRole) {
+ public TenantRoles(String hostRole, String tenantHostRole, String tenantHostServiceRole, String containerRole) {
this.hostRole = hostRole;
+ this.tenantHostRole = tenantHostRole;
+ this.tenantHostServiceRole = tenantHostServiceRole;
this.containerRole = containerRole;
}
@@ -17,6 +21,14 @@ public class TenantRoles {
return hostRole;
}
+ public String tenantHostRole() {
+ return tenantHostRole;
+ }
+
+ public String hostServiceRole() {
+ return tenantHostServiceRole;
+ }
+
public String containerRole() {
return containerRole;
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Bill.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Bill.java
index e35baf0c270..d1af5b428de 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Bill.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Bill.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.billing;
import com.yahoo.config.provision.ApplicationId;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingController.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingController.java
index 8946cd31b86..61f8844482c 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingController.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingController.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.billing;
import com.yahoo.config.provision.TenantName;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/CollectionMethod.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/CollectionMethod.java
index 5cf753bd312..98abe883816 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/CollectionMethod.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/CollectionMethod.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.billing;
public enum CollectionMethod {
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/CollectionResult.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/CollectionResult.java
index 4322cdc81b3..4cd040c7f11 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/CollectionResult.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/CollectionResult.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.billing;
import java.util.Objects;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/CostCalculator.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/CostCalculator.java
index 7224e6aecdd..e0a5ad9bdb7 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/CostCalculator.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/CostCalculator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.billing;
import com.yahoo.config.provision.NodeResources;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/InstrumentList.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/InstrumentList.java
index f26261cd157..7e430bb18bb 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/InstrumentList.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/InstrumentList.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.billing;
import java.util.ArrayList;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/InstrumentOwner.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/InstrumentOwner.java
index 45e06b11b2a..8a333af0ddb 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/InstrumentOwner.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/InstrumentOwner.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.billing;
import com.yahoo.config.provision.TenantName;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/MockBillingController.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/MockBillingController.java
index 879c56c2b2b..f4d3577aeec 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/MockBillingController.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/MockBillingController.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.billing;
import com.yahoo.config.provision.TenantName;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/PaymentInstrument.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/PaymentInstrument.java
index cb0d988f45f..4d0f40afc2e 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/PaymentInstrument.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/PaymentInstrument.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.billing;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Plan.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Plan.java
index 3fc8a4b422f..84e36ea75d1 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Plan.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Plan.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.billing;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/PlanId.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/PlanId.java
index 68a897c904f..2ac0505d507 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/PlanId.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/PlanId.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.billing;
import java.util.Objects;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/PlanResult.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/PlanResult.java
index a4803ccde64..d84d6313fa4 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/PlanResult.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/PlanResult.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.billing;
import java.util.Optional;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Quota.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Quota.java
index 0f0aa05264d..0859cc404ce 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Quota.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Quota.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.billing;
import java.math.BigDecimal;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/QuotaCalculator.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/QuotaCalculator.java
index a7d5452b221..0608e6d95ac 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/QuotaCalculator.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/QuotaCalculator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.billing;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/package-info.java
index ae31f4a782d..35b1fc912f0 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.controller.api.integration.billing;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateException.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateException.java
index 17e8087ca07..a446a5382fb 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateException.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateException.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.certificates;
public class EndpointCertificateException extends RuntimeException {
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateMetadata.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateMetadata.java
index 63701ca9547..12ff5388eb1 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateMetadata.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateMetadata.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.certificates;
import java.util.List;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateMock.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateMock.java
index 07da6969b64..74a7d23c36d 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateMock.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateMock.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.certificates;
import com.yahoo.config.provision.ApplicationId;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateValidator.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateValidator.java
index acf775315ec..0952fe587f9 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateValidator.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateValidator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.certificates;
import com.yahoo.config.provision.zone.ZoneId;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateValidatorImpl.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateValidatorImpl.java
index 9ce4fccc375..87e0a82fc0b 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateValidatorImpl.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateValidatorImpl.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.certificates;
import com.yahoo.config.provision.zone.ZoneId;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateValidatorMock.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateValidatorMock.java
index 780701b3b77..6bdf9037dc1 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateValidatorMock.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateValidatorMock.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.certificates;
import com.yahoo.config.provision.zone.ZoneId;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Application.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Application.java
index 722c9fc35d7..dcb7be1ffff 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Application.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Application.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.configserver;
import com.yahoo.config.provision.ApplicationId;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ApplicationReindexing.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ApplicationReindexing.java
index f94a91dc0c6..869fe9d04b5 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ApplicationReindexing.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ApplicationReindexing.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.configserver;
import java.time.Instant;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ApplicationStats.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ApplicationStats.java
index 281641e863f..cbc6a876977 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ApplicationStats.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ApplicationStats.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.configserver;
import com.yahoo.config.provision.ApplicationId;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Cluster.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Cluster.java
index ccfd3241810..6e60ec76199 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Cluster.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Cluster.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.configserver;
import com.yahoo.config.provision.ClusterResources;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServer.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServer.java
index 8d9f20a7cee..122f836c908 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServer.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.configserver;
import com.yahoo.component.Version;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServerException.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServerException.java
index d651eda7139..9d51c5ca9d1 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServerException.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServerException.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.configserver;
import com.yahoo.slime.Inspector;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServerVersion.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServerVersion.java
index ca219d4e802..f65a0006424 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServerVersion.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ConfigServerVersion.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.configserver;
import com.yahoo.component.Version;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/FlagsV1Api.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/FlagsV1Api.java
index 7187871dbf4..45e9f0cfed7 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/FlagsV1Api.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/FlagsV1Api.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.configserver;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Load.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Load.java
index d3fef13aa77..548fac7d11b 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Load.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Load.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.configserver;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Log.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Log.java
index 29c3253c9c0..c634b04807b 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Log.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Log.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.configserver;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java
index 5f46b949844..d82b9c97187 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java
@@ -1,7 +1,6 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.configserver;
-import com.fasterxml.jackson.databind.JsonNode;
import com.yahoo.component.Version;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.DockerImage;
@@ -9,26 +8,29 @@ import com.yahoo.config.provision.HostName;
import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.TenantName;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeHistory;
import java.time.Instant;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
+import java.util.UUID;
/**
* A node in hosted Vespa.
*
+ * This is immutable and all fields are guaranteed to be non-null. This should never leak any wire format types or
+ * types from third-party libraries.
+ *
+ * Use {@link Node#builder()} or {@link Node#builder(Node)} to create instances of this.
+ *
* @author mpolden
* @author jonmv
*/
public class Node {
+ private final String id;
private final HostName hostname;
private final Optional<HostName> parentHostname;
private final State state;
@@ -50,204 +52,278 @@ public class Node {
private final long rebootGeneration;
private final long wantedRebootGeneration;
private final int cost;
- private final String flavor;
+ private final int failCount;
+ private final Optional<String> flavor;
private final String clusterId;
private final ClusterType clusterType;
+ private final String group;
private final boolean retired;
private final boolean wantToRetire;
private final boolean wantToDeprovision;
private final boolean wantToRebuild;
private final Optional<TenantName> reservedTo;
private final Optional<ApplicationId> exclusiveTo;
- private final Map<String, JsonNode> reports;
- private final List<NodeHistory> history;
+ private final Map<String, String> reports;
+ private final List<Event> history;
+ private final Set<String> ipAddresses;
private final Set<String> additionalIpAddresses;
- private final String openStackId;
+ private final Set<String> additionalHostnames;
private final Optional<String> switchHostname;
private final Optional<String> modelName;
-
- public Node(HostName hostname, Optional<HostName> parentHostname, State state, NodeType type, NodeResources resources, Optional<ApplicationId> owner,
- Version currentVersion, Version wantedVersion, Version currentOsVersion, Version wantedOsVersion,
- Optional<Instant> currentFirmwareCheck, Optional<Instant> wantedFirmwareCheck, ServiceState serviceState,
- Optional<Instant> suspendedSince, long restartGeneration, long wantedRestartGeneration, long rebootGeneration, long wantedRebootGeneration,
- int cost, String flavor, String clusterId, ClusterType clusterType, boolean retired, boolean wantToRetire, boolean wantToDeprovision,
- boolean wantToRebuild, Optional<TenantName> reservedTo, Optional<ApplicationId> exclusiveTo,
- DockerImage wantedDockerImage, DockerImage currentDockerImage, Map<String, JsonNode> reports, List<NodeHistory> history,
- Set<String> additionalIpAddresses, String openStackId, Optional<String> switchHostname, Optional<String> modelName) {
- this.hostname = hostname;
- this.parentHostname = parentHostname;
- this.state = state;
- this.type = type;
- this.resources = resources;
- this.owner = owner;
- this.currentVersion = currentVersion;
- this.wantedVersion = wantedVersion;
- this.currentOsVersion = currentOsVersion;
- this.wantedOsVersion = wantedOsVersion;
- this.currentFirmwareCheck = currentFirmwareCheck;
- this.wantedFirmwareCheck = wantedFirmwareCheck;
- this.serviceState = serviceState;
- this.suspendedSince = suspendedSince;
+ private final Environment environment;
+
+ private Node(String id, HostName hostname, Optional<HostName> parentHostname, State state, NodeType type,
+ NodeResources resources, Optional<ApplicationId> owner, Version currentVersion, Version wantedVersion,
+ Version currentOsVersion, Version wantedOsVersion, Optional<Instant> currentFirmwareCheck,
+ Optional<Instant> wantedFirmwareCheck, ServiceState serviceState, Optional<Instant> suspendedSince,
+ long restartGeneration, long wantedRestartGeneration, long rebootGeneration,
+ long wantedRebootGeneration, int cost, int failCount, Optional<String> flavor, String clusterId,
+ ClusterType clusterType, String group, boolean retired, boolean wantToRetire, boolean wantToDeprovision,
+ boolean wantToRebuild, Optional<TenantName> reservedTo, Optional<ApplicationId> exclusiveTo,
+ DockerImage wantedDockerImage, DockerImage currentDockerImage, Map<String, String> reports,
+ List<Event> history, Set<String> ipAddresses, Set<String> additionalIpAddresses,
+ Set<String> additionalHostnames, Optional<String> switchHostname,
+ Optional<String> modelName, Environment environment) {
+ this.id = Objects.requireNonNull(id, "id must be non-null");
+ this.hostname = Objects.requireNonNull(hostname, "hostname must be non-null");
+ this.parentHostname = Objects.requireNonNull(parentHostname, "parentHostname must be non-null");
+ this.state = Objects.requireNonNull(state, "state must be non-null");
+ this.type = Objects.requireNonNull(type, "type must be non-null");
+ this.resources = Objects.requireNonNull(resources, "resources must be non-null");
+ this.owner = Objects.requireNonNull(owner, "owner must be non-null");
+ this.currentVersion = Objects.requireNonNull(currentVersion, "currentVersion must be non-null");
+ this.wantedVersion = Objects.requireNonNull(wantedVersion, "wantedVersion must be non-null");
+ this.currentOsVersion = Objects.requireNonNull(currentOsVersion, "currentOsVersion must be non-null");
+ this.wantedOsVersion = Objects.requireNonNull(wantedOsVersion, "wantedOsVersion must be non-null");
+ this.currentFirmwareCheck = Objects.requireNonNull(currentFirmwareCheck, "currentFirmwareCheck must be non-null");
+ this.wantedFirmwareCheck = Objects.requireNonNull(wantedFirmwareCheck, "wantedFirmwareCheck must be non-null");
+ this.serviceState = Objects.requireNonNull(serviceState, "serviceState must be non-null");
+ this.suspendedSince = Objects.requireNonNull(suspendedSince, "suspendedSince must be non-null");
this.restartGeneration = restartGeneration;
this.wantedRestartGeneration = wantedRestartGeneration;
this.rebootGeneration = rebootGeneration;
this.wantedRebootGeneration = wantedRebootGeneration;
this.cost = cost;
- this.flavor = flavor;
- this.clusterId = clusterId;
- this.clusterType = clusterType;
+ this.failCount = failCount;
+ this.flavor = Objects.requireNonNull(flavor, "flavor must be non-null");
+ this.clusterId = Objects.requireNonNull(clusterId, "clusterId must be non-null");
+ this.clusterType = Objects.requireNonNull(clusterType, "clusterType must be non-null");
this.retired = retired;
+ this.group = Objects.requireNonNull(group, "group must be non-null");
this.wantToRetire = wantToRetire;
this.wantToDeprovision = wantToDeprovision;
- this.reservedTo = reservedTo;
- this.exclusiveTo = exclusiveTo;
- this.wantedDockerImage = wantedDockerImage;
- this.currentDockerImage = currentDockerImage;
+ this.reservedTo = Objects.requireNonNull(reservedTo, "reservedTo must be non-null");
+ this.exclusiveTo = Objects.requireNonNull(exclusiveTo, "exclusiveTo must be non-null");
+ this.wantedDockerImage = Objects.requireNonNull(wantedDockerImage, "wantedDockerImage must be non-null");
+ this.currentDockerImage = Objects.requireNonNull(currentDockerImage, "currentDockerImage must be non-null");
this.wantToRebuild = wantToRebuild;
- this.reports = reports;
- this.history = history;
- this.openStackId = openStackId;
- this.additionalIpAddresses = additionalIpAddresses;
- this.switchHostname = switchHostname;
- this.modelName = modelName;
+ this.reports = Map.copyOf(Objects.requireNonNull(reports, "reports must be non-null"));
+ this.history = List.copyOf(Objects.requireNonNull(history, "history must be non-null"));
+ this.ipAddresses = Set.copyOf(Objects.requireNonNull(ipAddresses, "ipAddresses must be non-null"));
+ this.additionalIpAddresses = Set.copyOf(Objects.requireNonNull(additionalIpAddresses, "additionalIpAddresses must be non-null"));
+ this.additionalHostnames = Set.copyOf(Objects.requireNonNull(additionalHostnames, "additionalHostnames must be non-null"));
+ this.switchHostname = Objects.requireNonNull(switchHostname, "switchHostname must be non-null");
+ this.modelName = Objects.requireNonNull(modelName, "modelName must be non-null");
+ this.environment = Objects.requireNonNull(environment, "environment must be non-ull");
+ }
+
+ /** The cloud provider's unique ID for this */
+ public String id() {
+ return id;
}
+ /** The hostname of this */
public HostName hostname() {
return hostname;
}
+ /** The parent hostname of this, if any */
public Optional<HostName> parentHostname() {
return parentHostname;
}
+ /** Current state of this */
public State state() { return state; }
+ /** The node type of this */
public NodeType type() {
return type;
}
+ /** Resources, such as CPU and memory, of this */
public NodeResources resources() {
return resources;
}
+ /** The application owning this, if any */
public Optional<ApplicationId> owner() {
return owner;
}
+ /** The Vespa version this is currently running */
public Version currentVersion() {
return currentVersion;
}
+ /** The wanted Vespa version */
public Version wantedVersion() {
return wantedVersion;
}
+ /** The OS version this is currently running */
public Version currentOsVersion() {
return currentOsVersion;
}
+ /** The wanted OS version */
public Version wantedOsVersion() {
return wantedOsVersion;
}
+ /** The container image of this is currently running */
public DockerImage currentDockerImage() {
return currentDockerImage;
}
+ /** The wanted Docker image */
public DockerImage wantedDockerImage() {
return wantedDockerImage;
}
+ /** The last time this checked for a firmware update */
public Optional<Instant> currentFirmwareCheck() {
return currentFirmwareCheck;
}
+ /** The wanted time this should check for a firmware update */
public Optional<Instant> wantedFirmwareCheck() {
return wantedFirmwareCheck;
}
+ /** The current service state of this */
public ServiceState serviceState() {
return serviceState;
}
+ /** The most recent time this suspended, if any */
public Optional<Instant> suspendedSince() {
return suspendedSince;
}
+ /** The current restart generation */
public long restartGeneration() {
return restartGeneration;
}
+ /** The wanted restart generation */
public long wantedRestartGeneration() {
return wantedRestartGeneration;
}
+ /** The current reboot generation */
public long rebootGeneration() {
return rebootGeneration;
}
+ /** The wanted reboot generation */
public long wantedRebootGeneration() {
return wantedRebootGeneration;
}
+ /** A number representing the cost of this */
public int cost() {
return cost;
}
- public String flavor() {
+ /** How many times this has failed */
+ public int failCount() {
+ return failCount;
+ }
+
+ /** The flavor of this */
+ public Optional<String> flavor() {
return flavor;
}
+ /** The cluster ID of this, empty string if unallocated */
public String clusterId() {
return clusterId;
}
+ /** The cluster type of this */
public ClusterType clusterType() {
return clusterType;
}
+ /** Whether this is retired */
public boolean retired() {
return retired;
}
+ /** The group of this node, empty string if unallocated */
+ public String group() {
+ return group;
+ }
+
+ /** Whether this node has been requested to retire */
public boolean wantToRetire() {
return wantToRetire;
}
+ /** Whether this node has been requested to deprovision */
public boolean wantToDeprovision() {
return wantToDeprovision;
}
+ /** Whether this node has been requested to rebuild */
public boolean wantToRebuild() {
return wantToRebuild;
}
+ /** The tenant this has been reserved to, if any */
public Optional<TenantName> reservedTo() { return reservedTo; }
+ /** The application this has been provisioned exclusively for, if any */
public Optional<ApplicationId> exclusiveTo() { return exclusiveTo; }
- public Map<String, JsonNode> reports() {
+ /** Returns the reports of this node. Key is the report ID. Value is untyped, but is typically a JSON string */
+ public Map<String, String> reports() {
return reports;
}
- public List<NodeHistory> history() {
+ /** History of events affecting this */
+ public List<Event> history() {
return history;
}
+ /** IP addresses of this */
+ public Set<String> ipAddresses() {
+ return ipAddresses;
+ }
+
+ /** Additional IP addresses available on this, usable by child nodes */
public Set<String> additionalIpAddresses() {
return additionalIpAddresses;
}
- public String openStackId() {
- return openStackId;
+ /** Additional hostnames available on this, usable by child nodes */
+ public Set<String> additionalHostnames() {
+ return additionalHostnames;
}
+ /** Hostname of the switch this is connected to, if any */
public Optional<String> switchHostname() {
return switchHostname;
}
+ /** The server model of this, if any */
public Optional<String> modelName() { return modelName; }
+ /** The environment this runs in */
+ public Environment environment() {
+ return environment;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -293,48 +369,119 @@ public class Node {
combined,
unknown
}
+
+ /** Known nope environments */
+ public enum Environment {
+ bareMetal,
+ virtualMachine,
+ dockerContainer,
+ unknown,
+ }
+
+ /** A node event */
+ public static class Event {
+
+ private final Instant at;
+ private final String agent;
+ private final String name;
+
+ public Event(Instant at, String agent, String name) {
+ this.at = Objects.requireNonNull(at);
+ this.agent = Objects.requireNonNull(agent);
+ this.name = Objects.requireNonNull(name);
+ }
+
+ /** The time this occurred */
+ public Instant at() {
+ return at;
+ }
+
+ /** The agent responsible for this */
+ public String agent() {
+ return agent;
+ }
+
+ /** Name of the event */
+ public String name() {
+ return name;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ Event event = (Event) o;
+ return at.equals(event.at) && agent.equals(event.agent) && name.equals(event.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(at, agent, name);
+ }
+ }
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public static Builder builder(Node node) {
+ return new Builder(node);
+ }
+
+ /**
+ * Builder for a {@link Node}.
+ *
+ * The appropriate builder method must be called for any field that does not have a default value.
+ */
public static class Builder {
+
private HostName hostname;
+
+ private String id = UUID.randomUUID().toString();
private Optional<HostName> parentHostname = Optional.empty();
- private State state;
- private NodeType type;
- private NodeResources resources;
+ private State state = State.active;
+ private NodeType type = NodeType.host;
+ private NodeResources resources = NodeResources.unspecified();
private Optional<ApplicationId> owner = Optional.empty();
- private Version currentVersion;
- private Version wantedVersion;
- private Version currentOsVersion;
- private Version wantedOsVersion;
- private DockerImage currentDockerImage;
- private DockerImage wantedDockerImage;
+ private Version currentVersion = Version.emptyVersion;
+ private Version wantedVersion = Version.emptyVersion;
+ private Version currentOsVersion = Version.emptyVersion;
+ private Version wantedOsVersion = Version.emptyVersion;
+ private DockerImage currentDockerImage = DockerImage.EMPTY;
+ private DockerImage wantedDockerImage = DockerImage.EMPTY;
private Optional<Instant> currentFirmwareCheck = Optional.empty();
private Optional<Instant> wantedFirmwareCheck = Optional.empty();
- private ServiceState serviceState;
+ private ServiceState serviceState = ServiceState.expectedUp;
private Optional<Instant> suspendedSince = Optional.empty();
- private long restartGeneration;
- private long wantedRestartGeneration;
- private long rebootGeneration;
- private long wantedRebootGeneration;
- private int cost;
- private String flavor;
- private String clusterId;
- private ClusterType clusterType;
- private boolean retired;
- private boolean wantToRetire;
- private boolean wantToDeprovision;
- private boolean wantToRebuild;
+ private long restartGeneration = 0;
+ private long wantedRestartGeneration = 0;
+ private long rebootGeneration = 0;
+ private long wantedRebootGeneration = 0;
+ private int cost = 0;
+ private int failCount = 0;
+ private Optional<String> flavor = Optional.empty();
+ private String clusterId = "";
+ private ClusterType clusterType = ClusterType.unknown;
+ private String group = "";
+ private boolean retired = false;
+ private boolean wantToRetire = false;
+ private boolean wantToDeprovision = false;
+ private boolean wantToRebuild = false;
private Optional<TenantName> reservedTo = Optional.empty();
private Optional<ApplicationId> exclusiveTo = Optional.empty();
- private Map<String, JsonNode> reports = new HashMap<>();
- private List<NodeHistory> history = new ArrayList<>();
- private Set<String> additionalIpAddresses = new HashSet<>();
- private String openStackId;
+ private Map<String, String> reports = Map.of();
+ private List<Event> history = List.of();
+ private Set<String> ipAddresses = Set.of();
+ private Set<String> additionalIpAddresses = Set.of();
+ private Set<String> additionalHostnames = Set.of();
private Optional<String> switchHostname = Optional.empty();
private Optional<String> modelName = Optional.empty();
+ private Environment environment = Environment.unknown;
- public Builder() { }
+ private Builder() {}
- public Builder(Node node) {
+ private Builder(Node node) {
+ this.id = node.id;
this.hostname = node.hostname;
this.parentHostname = node.parentHostname;
this.state = node.state;
@@ -347,18 +494,20 @@ public class Node {
this.wantedOsVersion = node.wantedOsVersion;
this.currentDockerImage = node.currentDockerImage;
this.wantedDockerImage = node.wantedDockerImage;
- this.currentFirmwareCheck = node.currentFirmwareCheck;
- this.wantedFirmwareCheck = node.wantedFirmwareCheck;
this.serviceState = node.serviceState;
this.suspendedSince = node.suspendedSince;
+ this.currentFirmwareCheck = node.currentFirmwareCheck;
+ this.wantedFirmwareCheck = node.wantedFirmwareCheck;
this.restartGeneration = node.restartGeneration;
this.wantedRestartGeneration = node.wantedRestartGeneration;
this.rebootGeneration = node.rebootGeneration;
this.wantedRebootGeneration = node.wantedRebootGeneration;
this.cost = node.cost;
+ this.failCount = node.failCount;
this.flavor = node.flavor;
this.clusterId = node.clusterId;
this.clusterType = node.clusterType;
+ this.group = node.group;
this.retired = node.retired;
this.wantToRetire = node.wantToRetire;
this.wantToDeprovision = node.wantToDeprovision;
@@ -367,10 +516,21 @@ public class Node {
this.exclusiveTo = node.exclusiveTo;
this.reports = node.reports;
this.history = node.history;
+ this.ipAddresses = node.ipAddresses;
this.additionalIpAddresses = node.additionalIpAddresses;
- this.openStackId = node.openStackId;
+ this.additionalHostnames = node.additionalHostnames;
this.switchHostname = node.switchHostname;
this.modelName = node.modelName;
+ this.environment = node.environment;
+ }
+
+ public Builder id(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public Builder hostname(String hostname) {
+ return hostname(HostName.from(hostname));
}
public Builder hostname(HostName hostname) {
@@ -378,6 +538,10 @@ public class Node {
return this;
}
+ public Builder parentHostname(String parentHostname) {
+ return parentHostname(HostName.from(parentHostname));
+ }
+
public Builder parentHostname(HostName parentHostname) {
this.parentHostname = Optional.ofNullable(parentHostname);
return this;
@@ -478,8 +642,13 @@ public class Node {
return this;
}
+ public Builder failCount(int failCount) {
+ this.failCount = failCount;
+ return this;
+ }
+
public Builder flavor(String flavor) {
- this.flavor = flavor;
+ this.flavor = Optional.of(flavor);
return this;
}
@@ -493,6 +662,11 @@ public class Node {
return this;
}
+ public Builder group(String group) {
+ this.group = group;
+ return this;
+ }
+
public Builder retired(boolean retired) {
this.retired = retired;
return this;
@@ -523,18 +697,23 @@ public class Node {
return this;
}
- public Builder history(List<NodeHistory> history) {
+ public Builder history(List<Event> history) {
this.history = history;
return this;
}
+ public Builder ipAddresses(Set<String> ipAdresses) {
+ this.ipAddresses = ipAdresses;
+ return this;
+ }
+
public Builder additionalIpAddresses(Set<String> additionalIpAddresses) {
this.additionalIpAddresses = additionalIpAddresses;
return this;
}
- public Builder openStackId(String openStackId) {
- this.openStackId = openStackId;
+ public Builder additionalHostnames(Set<String> additionalHostnames) {
+ this.additionalHostnames = additionalHostnames;
return this;
}
@@ -548,18 +727,26 @@ public class Node {
return this;
}
- public Builder reports(Map<String, JsonNode> reports) {
+ public Builder reports(Map<String, String> reports) {
this.reports = reports;
return this;
}
+ public Builder environment(Environment environment) {
+ this.environment = environment;
+ return this;
+ }
+
public Node build() {
- return new Node(hostname, parentHostname, state, type, resources, owner, currentVersion, wantedVersion,
+ return new Node(id, hostname, parentHostname, state, type, resources, owner, currentVersion, wantedVersion,
currentOsVersion, wantedOsVersion, currentFirmwareCheck, wantedFirmwareCheck, serviceState,
- suspendedSince, restartGeneration, wantedRestartGeneration, rebootGeneration, wantedRebootGeneration,
- cost, flavor, clusterId, clusterType, retired, wantToRetire, wantToDeprovision, wantToRebuild, reservedTo, exclusiveTo,
- wantedDockerImage, currentDockerImage, reports, history, additionalIpAddresses, openStackId, switchHostname, modelName);
+ suspendedSince, restartGeneration, wantedRestartGeneration, rebootGeneration,
+ wantedRebootGeneration, cost, failCount, flavor, clusterId, clusterType, group, retired,
+ wantToRetire, wantToDeprovision, wantToRebuild, reservedTo, exclusiveTo, wantedDockerImage,
+ currentDockerImage, reports, history, ipAddresses, additionalIpAddresses,
+ additionalHostnames, switchHostname, modelName, environment);
}
}
+
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeFilter.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeFilter.java
new file mode 100644
index 00000000000..7b209d231c4
--- /dev/null
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeFilter.java
@@ -0,0 +1,86 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.controller.api.integration.configserver;
+
+import com.google.common.collect.ImmutableSet;
+import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.HostName;
+
+import java.util.Objects;
+import java.util.Set;
+
+/**
+ * A filter for listing nodes.
+ *
+ * This is immutable.
+ *
+ * @author mpolden
+ */
+public class NodeFilter {
+
+ private final boolean includeDeprovisioned;
+ private final Set<Node.State> states;
+ private final Set<HostName> hostnames;
+ private final Set<ApplicationId> applications;
+
+ private NodeFilter(boolean includeDeprovisioned, Set<Node.State> states, Set<HostName> hostnames,
+ Set<ApplicationId> applications) {
+ this.includeDeprovisioned = includeDeprovisioned;
+ // Uses Guava Set to preserve insertion order
+ this.states = ImmutableSet.copyOf(Objects.requireNonNull(states));
+ this.hostnames = ImmutableSet.copyOf(Objects.requireNonNull(hostnames));
+ this.applications = ImmutableSet.copyOf(Objects.requireNonNull(applications));
+ if (!includeDeprovisioned && states.contains(Node.State.deprovisioned)) {
+ throw new IllegalArgumentException("Must include deprovisioned nodes when matching deprovisioned state");
+ }
+ }
+
+ public boolean includeDeprovisioned() {
+ return includeDeprovisioned;
+ }
+
+ public Set<Node.State> states() {
+ return states;
+ }
+
+ public Set<HostName> hostnames() {
+ return hostnames;
+ }
+
+ public Set<ApplicationId> applications() {
+ return applications;
+ }
+
+ public NodeFilter includeDeprovisioned(boolean includeDeprovisioned) {
+ return new NodeFilter(includeDeprovisioned, states, hostnames, applications);
+ }
+
+ public NodeFilter states(Node.State... states) {
+ return states(ImmutableSet.copyOf(states));
+ }
+
+ public NodeFilter states(Set<Node.State> states) {
+ return new NodeFilter(includeDeprovisioned, states, hostnames, applications);
+ }
+
+ public NodeFilter hostnames(HostName... hostnames) {
+ return hostnames(ImmutableSet.copyOf(hostnames));
+ }
+
+ public NodeFilter hostnames(Set<HostName> hostnames) {
+ return new NodeFilter(includeDeprovisioned, states, hostnames, applications);
+ }
+
+ public NodeFilter applications(ApplicationId... applications) {
+ return applications(ImmutableSet.copyOf(applications));
+ }
+
+ public NodeFilter applications(Set<ApplicationId> applications) {
+ return new NodeFilter(includeDeprovisioned, states, hostnames, applications);
+ }
+
+ /** A filter which matches all nodes, except deprovisioned ones */
+ public static NodeFilter all() {
+ return new NodeFilter(false, Set.of(), Set.of(), Set.of());
+ }
+
+}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepoStats.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepoStats.java
index 5b5ac21b500..fe7beb538da 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepoStats.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepoStats.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.configserver;
import java.util.List;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java
index ac4ff0a80a0..0208f9ecd0d 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java
@@ -1,82 +1,64 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.configserver;
import com.yahoo.component.Version;
import com.yahoo.config.provision.ApplicationId;
-import com.yahoo.config.provision.DockerImage;
import com.yahoo.config.provision.HostName;
-import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.zone.ZoneId;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeList;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeMembership;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeRepositoryNode;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeState;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.OrchestratorStatus;
import java.net.URI;
import java.time.Duration;
-import java.time.Instant;
-import java.util.Collection;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-import java.util.stream.Collectors;
/**
- * A minimal interface to the node repository, providing only the operations used by the controller.
+ * Node repository interface intended for use by the controller.
*
* @author mpolden
*/
public interface NodeRepository {
- void addNodes(ZoneId zone, Collection<NodeRepositoryNode> nodes);
+ /** Add new nodes to the node repository */
+ void addNodes(ZoneId zone, List<Node> nodes);
+ /** Delete node */
void deleteNode(ZoneId zone, String hostname);
- void setState(ZoneId zone, NodeState nodeState, String hostname);
+ /** Move node to given state */
+ void setState(ZoneId zone, Node.State state, String hostname);
- NodeRepositoryNode getNode(ZoneId zone, String hostname);
+ /** Get node from zone */
+ Node getNode(ZoneId zone, String hostname);
- // TODO: Migrate any callers to list() and remove this method
- NodeList listNodes(ZoneId zone);
-
- /** List all nodes in given zone */
- List<Node> list(ZoneId zone, boolean includeDeprovisioned);
-
- /** List all nodes in zone having given hostnames */
- List<Node> list(ZoneId zone, List<HostName> hostnames);
-
- /** List all nodes in zone owned by given application */
- List<Node> list(ZoneId zone, ApplicationId application);
-
- /** List all nodes in states, in zone owned by given application */
- default List<Node> list(ZoneId zone, ApplicationId application, Set<Node.State> states) {
- return list(zone, application).stream()
- .filter(node -> states.contains(node.state()))
- .collect(Collectors.toList());
- }
+ /** List nodes in given zone matching given filter */
+ List<Node> list(ZoneId zone, NodeFilter filter);
+ /** Get node repository's view of given application */
Application getApplication(ZoneId zone, ApplicationId application);
+ /** Update application */
void patchApplication(ZoneId zone, ApplicationId application,
double currentReadShare, double maxReadShare);
+ /** Get node statistics such as cost and load from given zone */
NodeRepoStats getStats(ZoneId zone);
+ /** Get all archive URLs found in zone */
Map<TenantName, URI> getArchiveUris(ZoneId zone);
+ /** Update archive URL for given tenant */
void setArchiveUri(ZoneId zone, TenantName tenantName, URI archiveUri);
+ /** Remove archive URL for given tenant */
void removeArchiveUri(ZoneId zone, TenantName tenantName);
/** Upgrade all nodes of given type to a new version */
void upgrade(ZoneId zone, NodeType type, Version version);
/** Upgrade OS for all nodes of given type to a new version */
- void upgradeOs(ZoneId zone, NodeType type, Version version, Optional<Duration> upgradeBudget);
+ void upgradeOs(ZoneId zone, NodeType type, Version version, Duration upgradeBudget);
/** Get target versions for upgrades in given zone */
TargetVersions targetVersionsOf(ZoneId zone);
@@ -87,154 +69,22 @@ public interface NodeRepository {
/** Cancels firmware checks on all hosts in the given zone. */
void cancelFirmwareCheck(ZoneId zone);
- void retireAndDeprovision(ZoneId zoneId, String hostName);
+ /** Retire given node */
+ void retire(ZoneId zone, String hostname, boolean wantToRetire, boolean wantToDeprovision);
+
+ /** Update reports for given node. A key with null value clears that report */
+ void updateReports(ZoneId zone, String hostname, Map<String, String> reports);
+
+ /** Update hardware model */
+ void updateModel(ZoneId zone, String hostname, String modelName);
- void patchNode(ZoneId zoneId, String hostName, NodeRepositoryNode node);
+ /** Update switch hostname */
+ void updateSwitchHostname(ZoneId zone, String hostname, String switchHostname);
- void reboot(ZoneId zoneId, String hostName);
+ /** Schedule reboot of given node */
+ void reboot(ZoneId zone, String hostname);
/** Checks whether the zone has the spare capacity to remove the given hosts */
- boolean isReplaceable(ZoneId zoneId, List<HostName> hostNames);
-
- static Node toNode(NodeRepositoryNode node) {
- var application = Optional.ofNullable(node.getOwner())
- .map(owner -> ApplicationId.from(owner.getTenant(), owner.getApplication(),
- owner.getInstance()));
- var parentHostname = Optional.ofNullable(node.getParentHostname()).map(HostName::from);
- var resources = new NodeResources(
- toDouble(node.getResources().getVcpu()),
- toDouble(node.getResources().getMemoryGb()),
- toDouble(node.getResources().getDiskGb()),
- toDouble(node.getResources().getBandwidthGbps()),
- diskSpeedFromString(node.getResources().getDiskSpeed()),
- storageTypeFromString(node.getResources().getStorageType()));
- return new Node(HostName.from(node.getHostname()),
- parentHostname,
- fromJacksonState(node.getState()),
- fromJacksonType(node.getType()),
- resources,
- application,
- versionFrom(node.getVespaVersion()),
- versionFrom(node.getWantedVespaVersion()),
- versionFrom(node.getCurrentOsVersion()),
- versionFrom(node.getWantedOsVersion()),
- Optional.ofNullable(node.getCurrentFirmwareCheck()).map(Instant::ofEpochMilli),
- Optional.ofNullable(node.getWantedFirmwareCheck()).map(Instant::ofEpochMilli),
- toServiceState(node.getOrchestratorStatus()),
- Optional.ofNullable(node.suspendedSinceMillis()).map(Instant::ofEpochMilli),
- toInt(node.getCurrentRestartGeneration()),
- toInt(node.getRestartGeneration()),
- toInt(node.getCurrentRebootGeneration()),
- toInt(node.getRebootGeneration()),
- toInt(node.getCost()),
- node.getFlavor(),
- clusterIdOf(node.getMembership()),
- clusterTypeOf(node.getMembership()),
- Optional.ofNullable(node.getMembership()).map(NodeMembership::getRetired).orElse(false),
- node.getWantToRetire(),
- node.getWantToDeprovision(),
- node.getWantToRebuild(), Optional.ofNullable(node.getReservedTo()).map(TenantName::from),
- Optional.ofNullable(node.getExclusiveTo()).map(ApplicationId::fromSerializedForm),
- dockerImageFrom(node.getWantedDockerImage()),
- dockerImageFrom(node.getCurrentDockerImage()),
- node.getReports(),
- node.getHistory(),
- node.getAdditionalIpAddresses(),
- node.getOpenStackId(),
- Optional.ofNullable(node.getSwitchHostname()),
- Optional.ofNullable(node.getModelName()));
- }
-
- private static String clusterIdOf(NodeMembership nodeMembership) {
- return nodeMembership == null ? "" : nodeMembership.clusterid;
- }
-
- private static Node.ClusterType clusterTypeOf(NodeMembership nodeMembership) {
- if (nodeMembership == null) return Node.ClusterType.unknown;
- switch (nodeMembership.clustertype) {
- case "admin": return Node.ClusterType.admin;
- case "content": return Node.ClusterType.content;
- case "container": return Node.ClusterType.container;
- case "combined": return Node.ClusterType.combined;
- }
- return Node.ClusterType.unknown;
- }
-
- // Convert Jackson type to config.provision type
- private static NodeType fromJacksonType(com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeType nodeType) {
- switch (nodeType) {
- case tenant: return NodeType.tenant;
- case host: return NodeType.host;
- case proxy: return NodeType.proxy;
- case proxyhost: return NodeType.proxyhost;
- case config: return NodeType.config;
- case confighost: return NodeType.confighost;
- case controller: return NodeType.controller;
- case controllerhost: return NodeType.controllerhost;
- default: throw new IllegalArgumentException("Unknown type: " + nodeType);
- }
- }
-
- private static com.yahoo.vespa.hosted.controller.api.integration.configserver.Node.State fromJacksonState(NodeState state) {
- switch (state) {
- case provisioned: return Node.State.provisioned;
- case ready: return Node.State.ready;
- case reserved: return Node.State.reserved;
- case active: return Node.State.active;
- case inactive: return Node.State.inactive;
- case dirty: return Node.State.dirty;
- case failed: return Node.State.failed;
- case parked: return Node.State.parked;
- case breakfixed: return Node.State.breakfixed;
- case deprovisioned: return Node.State.deprovisioned;
- }
- return Node.State.unknown;
- }
-
- private static NodeResources.DiskSpeed diskSpeedFromString(String diskSpeed) {
- if (diskSpeed == null) return NodeResources.DiskSpeed.getDefault();
- switch (diskSpeed) {
- case "fast": return NodeResources.DiskSpeed.fast;
- case "slow": return NodeResources.DiskSpeed.slow;
- case "any": return NodeResources.DiskSpeed.any;
- default: throw new IllegalArgumentException("Unknown disk speed '" + diskSpeed + "'");
- }
- }
-
- private static NodeResources.StorageType storageTypeFromString(String storageType) {
- if (storageType == null) return NodeResources.StorageType.getDefault();
- switch (storageType) {
- case "remote": return NodeResources.StorageType.remote;
- case "local": return NodeResources.StorageType.local;
- case "any": return NodeResources.StorageType.any;
- default: throw new IllegalArgumentException("Unknown storage type '" + storageType + "'");
- }
- }
-
- private static Node.ServiceState toServiceState(OrchestratorStatus orchestratorStatus) {
- switch (orchestratorStatus) {
- case ALLOWED_TO_BE_DOWN: return Node.ServiceState.allowedDown;
- case PERMANENTLY_DOWN: return Node.ServiceState.permanentlyDown;
- case NO_REMARKS: return Node.ServiceState.expectedUp;
- }
-
- return Node.ServiceState.unknown;
- }
-
- private static double toDouble(Double d) {
- return d == null ? 0 : d;
- }
-
- private static int toInt(Integer i) {
- return i == null ? 0 : i;
- }
-
- private static Version versionFrom(String s) {
- return s == null ? Version.emptyVersion : Version.fromString(s);
- }
-
- private static DockerImage dockerImageFrom(String s) {
- return s == null ? DockerImage.EMPTY : DockerImage.fromString(s);
- }
+ boolean isReplaceable(ZoneId zone, List<HostName> hostnames);
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/PrepareResponse.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/PrepareResponse.java
index 5c946538625..22716c9796f 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/PrepareResponse.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/PrepareResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.configserver;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ProxyResponse.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ProxyResponse.java
index b1676901441..1e9a3b4c4c8 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ProxyResponse.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ProxyResponse.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.configserver;
import com.yahoo.container.jdisc.HttpResponse;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/QuotaUsage.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/QuotaUsage.java
index b6e79ad2635..2e4f3b96abe 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/QuotaUsage.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/QuotaUsage.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.configserver;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ServiceConvergence.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ServiceConvergence.java
index b23faa2ec3f..f0ed73c2dc9 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ServiceConvergence.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/ServiceConvergence.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.configserver;
import com.google.common.collect.ImmutableList;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/package-info.java
index 10eddb2628f..27e5c744061 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.controller.api.integration.configserver;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/ContainerImage.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/ContainerImage.java
index 904c64a2197..739ad835762 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/ContainerImage.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/ContainerImage.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.container;
import com.yahoo.component.Version;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/ContainerRegistry.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/ContainerRegistry.java
index f11c474415b..78757ad995a 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/ContainerRegistry.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/ContainerRegistry.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.container;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/package-info.java
index e26b686f686..ca1f6afc5db 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author mpolden
*/
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationStore.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationStore.java
index dd9f8c38802..9b44c984324 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationStore.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationStore.java
@@ -1,10 +1,8 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.deployment;
-import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ApplicationName;
import com.yahoo.config.provision.TenantName;
-import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.api.identifiers.DeploymentId;
import java.time.Instant;
@@ -21,13 +19,19 @@ import java.util.Optional;
public interface ApplicationStore {
/** Returns the tenant application package of the given version. */
- byte[] get(TenantName tenant, ApplicationName application, ApplicationVersion applicationVersion);
+ byte[] get(DeploymentId deploymentId, ApplicationVersion applicationVersion);
+
+ /** Returns the application package diff, compared to the previous build, for the given tenant, application and build number */
+ Optional<byte[]> getDiff(TenantName tenantName, ApplicationName applicationName, long buildNumber);
+
+ /** Removes diffs for packages before the given build number */
+ void pruneDiffs(TenantName tenantName, ApplicationName applicationName, long beforeBuildNumber);
/** Find application package by given build number */
Optional<byte[]> find(TenantName tenant, ApplicationName application, long buildNumber);
- /** Stores the given tenant application package of the given version. */
- void put(TenantName tenant, ApplicationName application, ApplicationVersion applicationVersion, byte[] applicationPackage);
+ /** Stores the given tenant application package of the given version and diff since previous version. */
+ void put(TenantName tenant, ApplicationName application, ApplicationVersion applicationVersion, byte[] applicationPackage, byte[] diff);
/** Removes applications older than the given version, for the given application, and returns whether something was removed. */
boolean prune(TenantName tenant, ApplicationName application, ApplicationVersion olderThanVersion);
@@ -47,11 +51,14 @@ public interface ApplicationStore {
/** Removes all tester packages for the given tester. */
void removeAllTesters(TenantName tenant, ApplicationName application);
- /** Stores the given application package as the development package for the given application and zone. */
- void putDev(ApplicationId application, ZoneId zone, byte[] applicationPackage);
+ /** Returns the application package diff, compared to the previous build, for the given deployment and build number */
+ Optional<byte[]> getDevDiff(DeploymentId deploymentId, long buildNumber);
+
+ /** Removes diffs for dev packages before the given build number */
+ void pruneDevDiffs(DeploymentId deploymentId, long beforeBuildNumber);
- /** Returns the development package for the given application and zone. */
- byte[] getDev(ApplicationId application, ZoneId zone);
+ /** Stores the given application package as the development package for the given deployment and version and diff since previous version. */
+ void putDev(DeploymentId deploymentId, ApplicationVersion version, byte[] applicationPackage, byte[] diff);
/** Stores the given application meta data with the current time as part of the path. */
void putMeta(TenantName tenant, ApplicationName application, Instant now, byte[] metaZip);
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationVersion.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationVersion.java
index 30fd8fad1bd..1f387a49a68 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationVersion.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationVersion.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.deployment;
import com.yahoo.component.Version;
@@ -23,7 +23,7 @@ public class ApplicationVersion implements Comparable<ApplicationVersion> {
*/
public static final ApplicationVersion unknown = new ApplicationVersion(Optional.empty(), OptionalLong.empty(),
Optional.empty(), Optional.empty(), Optional.empty(),
- Optional.empty(), Optional.empty());
+ Optional.empty(), Optional.empty(), true);
// This never changes and is only used to create a valid semantic version number, as required by application bundles
private static final String majorVersion = "1.0";
@@ -35,11 +35,12 @@ public class ApplicationVersion implements Comparable<ApplicationVersion> {
private final Optional<Instant> buildTime;
private final Optional<String> sourceUrl;
private final Optional<String> commit;
+ private final boolean deployedDirectly;
/** Public for serialisation only. */
public ApplicationVersion(Optional<SourceRevision> source, OptionalLong buildNumber, Optional<String> authorEmail,
- Optional<Version> compileVersion, Optional<Instant> buildTime, Optional<String> sourceUrl,
- Optional<String> commit) {
+ Optional<Version> compileVersion, Optional<Instant> buildTime, Optional<String> sourceUrl,
+ Optional<String> commit, boolean deployedDirectly) {
if (buildNumber.isEmpty() && ( source.isPresent() || authorEmail.isPresent() || compileVersion.isPresent()
|| buildTime.isPresent() || sourceUrl.isPresent() || commit.isPresent()))
throw new IllegalArgumentException("Build number must be present if any other attribute is");
@@ -63,45 +64,37 @@ public class ApplicationVersion implements Comparable<ApplicationVersion> {
this.buildTime = buildTime;
this.sourceUrl = Objects.requireNonNull(sourceUrl, "sourceUrl cannot be null");
this.commit = Objects.requireNonNull(commit, "commit cannot be null");
+ this.deployedDirectly = deployedDirectly;
}
/** Create an application package version from a completed build, without an author email */
public static ApplicationVersion from(SourceRevision source, long buildNumber) {
return new ApplicationVersion(Optional.of(source), OptionalLong.of(buildNumber), Optional.empty(),
- Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty());
- }
-
- /** Creates an version from a completed build and an author email. */
- public static ApplicationVersion from(SourceRevision source, long buildNumber, String authorEmail) {
- return new ApplicationVersion(Optional.of(source), OptionalLong.of(buildNumber), Optional.of(authorEmail),
- Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty());
+ Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), false);
}
/** Creates an version from a completed build, an author email, and build meta data. */
public static ApplicationVersion from(SourceRevision source, long buildNumber, String authorEmail,
Version compileVersion, Instant buildTime) {
return new ApplicationVersion(Optional.of(source), OptionalLong.of(buildNumber), Optional.of(authorEmail),
- Optional.of(compileVersion), Optional.of(buildTime), Optional.empty(), Optional.empty());
+ Optional.of(compileVersion), Optional.of(buildTime), Optional.empty(), Optional.empty(), false);
}
/** Creates an version from a completed build, an author email, and build meta data. */
public static ApplicationVersion from(Optional<SourceRevision> source, long buildNumber, Optional<String> authorEmail,
Optional<Version> compileVersion, Optional<Instant> buildTime,
- Optional<String> sourceUrl, Optional<String> commit) {
- return new ApplicationVersion(source, OptionalLong.of(buildNumber), authorEmail, compileVersion, buildTime, sourceUrl, commit);
+ Optional<String> sourceUrl, Optional<String> commit, boolean deployedDirectly) {
+ return new ApplicationVersion(source, OptionalLong.of(buildNumber), authorEmail, compileVersion, buildTime, sourceUrl, commit, deployedDirectly);
}
/** Returns an unique identifier for this version or "unknown" if version is not known */
public String id() {
- if (isUnknown()) {
- return "unknown";
- }
- return String.format("%s.%d-%s",
- majorVersion,
- buildNumber.getAsLong(),
- source.map(SourceRevision::commit).map(ApplicationVersion::abbreviateCommit)
- .or(this::commit)
- .orElse("unknown"));
+ if (isUnknown()) return "unknown";
+
+ return source.map(SourceRevision::commit).map(ApplicationVersion::abbreviateCommit)
+ .or(this::commit)
+ .map(commit -> String.format("%s.%d-%s", majorVersion, buildNumber.getAsLong(), commit))
+ .orElseGet(() -> majorVersion + "." + buildNumber.getAsLong());
}
/**
@@ -142,18 +135,24 @@ public class ApplicationVersion implements Comparable<ApplicationVersion> {
return this.equals(unknown);
}
+ /** Returns whether the application package for this version was deployed directly to zone */
+ public boolean isDeployedDirectly() {
+ return deployedDirectly;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
if ( ! (o instanceof ApplicationVersion)) return false;
ApplicationVersion that = (ApplicationVersion) o;
return Objects.equals(buildNumber, that.buildNumber)
- && Objects.equals(commit(), that.commit());
+ && Objects.equals(commit(), that.commit())
+ && deployedDirectly == that.deployedDirectly;
}
@Override
public int hashCode() {
- return Objects.hash(buildNumber, commit());
+ return Objects.hash(buildNumber, commit(), deployedDirectly);
}
@Override
@@ -175,6 +174,9 @@ public class ApplicationVersion implements Comparable<ApplicationVersion> {
if (buildNumber().isEmpty() || o.buildNumber().isEmpty())
return Boolean.compare(buildNumber().isPresent(), o.buildNumber.isPresent()); // Unknown version sorts first
+ if (deployedDirectly || o.deployedDirectly)
+ return Boolean.compare(deployedDirectly, o.deployedDirectly); // Directly deployed versions sort first
+
return Long.compare(buildNumber().getAsLong(), o.buildNumber().getAsLong());
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ArtifactRepository.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ArtifactRepository.java
index 4a6cb10c5c2..4f2ab2b1734 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ArtifactRepository.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ArtifactRepository.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.deployment;
import com.yahoo.component.Version;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java
index 9bcb80f24ee..52b43ac475a 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.deployment;
import com.yahoo.config.provision.Environment;
@@ -22,13 +22,13 @@ public enum JobType {
// | enum name ------------| job name ------------------| Zone in main system ---------------------------------------| Zone in CD system -------------------------------------------
systemTest ("system-test",
Map.of(main , ZoneId.from("test", "us-east-1"),
- cd , ZoneId.from("test", "cd-us-central-1"),
+ cd , ZoneId.from("test", "cd-us-west-1"),
PublicCd, ZoneId.from("test", "aws-us-east-1c"),
Public , ZoneId.from("test", "aws-us-east-1c"))),
stagingTest ("staging-test",
Map.of(main , ZoneId.from("staging", "us-east-3"),
- cd , ZoneId.from("staging", "cd-us-central-1"),
+ cd , ZoneId.from("staging", "cd-us-west-1"),
PublicCd, ZoneId.from("staging", "aws-us-east-1c"),
Public , ZoneId.from("staging", "aws-us-east-1c"))),
@@ -139,6 +139,12 @@ public enum JobType {
testCdUsCentral2 ("test-cd-us-central-2",
Map.of(cd , ZoneId.from("prod" , "cd-us-central-2")), true),
+ productionCdUsEast1 ("production-cd-us-east-1",
+ Map.of(cd , ZoneId.from("prod" , "cd-us-east-1"))),
+
+ testCdUsEast1 ("test-cd-us-east-1",
+ Map.of(cd , ZoneId.from("prod" , "cd-us-east-1")), true),
+
productionCdUsWest1 ("production-cd-us-west-1",
Map.of(cd , ZoneId.from("prod" , "cd-us-west-1"))),
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/RunId.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/RunId.java
index ebce77f7e40..ed6e61c6721 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/RunId.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/RunId.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.deployment;
import com.yahoo.config.provision.ApplicationId;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/SourceRevision.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/SourceRevision.java
index a9c1155c5ef..314caf5c473 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/SourceRevision.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/SourceRevision.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.deployment;
import java.util.Objects;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/StableOsVersion.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/StableOsVersion.java
index 0eabb0b6b8a..98bf5d9d0d7 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/StableOsVersion.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/StableOsVersion.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.deployment;
import com.yahoo.component.Version;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/TestReport.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/TestReport.java
index 25c3ca398f1..92063e1afee 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/TestReport.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/TestReport.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.deployment;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/TesterCloud.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/TesterCloud.java
index bc4a618aecf..fe1fcece6b1 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/TesterCloud.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/TesterCloud.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.deployment;
import com.yahoo.config.provision.HostName;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/package-info.java
index 609568f6fc9..8198e8f30db 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.controller.api.integration.deployment;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/AliasTarget.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/AliasTarget.java
index 41723dbdea6..eeac395e8e1 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/AliasTarget.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/AliasTarget.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.dns;
import com.yahoo.config.provision.HostName;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/LatencyAliasTarget.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/LatencyAliasTarget.java
index 44acf1ab02e..170cad8cd5b 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/LatencyAliasTarget.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/LatencyAliasTarget.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.dns;
import com.yahoo.config.provision.HostName;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/MemoryNameService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/MemoryNameService.java
index 03b10780e33..91e97fe73a5 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/MemoryNameService.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/MemoryNameService.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.dns;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/NameService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/NameService.java
index 9f2fd887482..eac657d8b75 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/NameService.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/NameService.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.dns;
import java.util.List;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/Record.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/Record.java
index 7beb3076156..8c6decd6158 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/Record.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/Record.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.dns;
import java.time.Duration;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/RecordData.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/RecordData.java
index fddcd85e8af..90759d911dd 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/RecordData.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/RecordData.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.dns;
import java.util.Objects;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/RecordName.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/RecordName.java
index f092209c1d8..72f0933896d 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/RecordName.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/RecordName.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.dns;
import java.util.Objects;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/WeightedAliasTarget.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/WeightedAliasTarget.java
index d3d60ecd64d..963cf74b948 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/WeightedAliasTarget.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/WeightedAliasTarget.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.dns;
import com.yahoo.config.provision.HostName;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/package-info.java
index e075b544ce8..d814a7dd2f6 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.controller.api.integration.dns;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/entity/EntityService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/entity/EntityService.java
index 59a1f589eb0..5bb30112a77 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/entity/EntityService.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/entity/EntityService.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.entity;
import com.yahoo.vespa.hosted.controller.api.identifiers.Property;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/entity/MemoryEntityService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/entity/MemoryEntityService.java
index 0174f24c6d1..a33ef135adf 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/entity/MemoryEntityService.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/entity/MemoryEntityService.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.entity;
import com.google.common.collect.ImmutableMap;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/entity/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/entity/package-info.java
index 1e74f4ca372..0e7d8f294a6 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/entity/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/entity/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.controller.api.integration.entity;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/horizon/HorizonClient.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/horizon/HorizonClient.java
index 554d3e5b7fa..3a65575f842 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/horizon/HorizonClient.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/horizon/HorizonClient.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.horizon;
/**
@@ -10,16 +10,8 @@ public interface HorizonClient {
HorizonResponse getUser();
- HorizonResponse getDashboard(String dashboardId);
-
- HorizonResponse getFavorite(String userId);
+ HorizonResponse getDashboard();
HorizonResponse getTopFolders();
- HorizonResponse getRecent(String userId);
-
- HorizonResponse getClipboard(String dashboardId);
-
- HorizonResponse getMetaData(byte[] query);
-
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/horizon/HorizonResponse.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/horizon/HorizonResponse.java
index 5447b8c3b0b..b7694ae516e 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/horizon/HorizonResponse.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/horizon/HorizonResponse.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.horizon;
import java.io.IOException;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/horizon/MockHorizonClient.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/horizon/MockHorizonClient.java
index 13a8c2ec079..dc775aef037 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/horizon/MockHorizonClient.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/horizon/MockHorizonClient.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.horizon;
/**
@@ -17,12 +17,7 @@ public class MockHorizonClient implements HorizonClient {
}
@Override
- public HorizonResponse getDashboard(String dashboardId) {
- return HorizonResponse.empty();
- }
-
- @Override
- public HorizonResponse getFavorite(String userId) {
+ public HorizonResponse getDashboard() {
return HorizonResponse.empty();
}
@@ -31,18 +26,4 @@ public class MockHorizonClient implements HorizonClient {
return HorizonResponse.empty();
}
- @Override
- public HorizonResponse getRecent(String userId) {
- return HorizonResponse.empty();
- }
-
- @Override
- public HorizonResponse getClipboard(String dashboardId) {
- return HorizonResponse.empty();
- }
-
- @Override
- public HorizonResponse getMetaData(byte[] query) {
- return HorizonResponse.empty();
- }
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/horizon/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/horizon/package-info.java
index 80bb635089c..ed8be032d30 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/horizon/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/horizon/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.controller.api.integration.horizon;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/Jira.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/Jira.java
index 6848c67fed2..79509ba4e52 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/Jira.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/Jira.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.jira;
import java.io.InputStream;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/JiraComment.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/JiraComment.java
index 2d67b720fe0..a1c689662f8 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/JiraComment.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/JiraComment.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.jira;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/JiraCreateIssue.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/JiraCreateIssue.java
index e5e35af4475..e09eb9dd6b5 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/JiraCreateIssue.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/JiraCreateIssue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.jira;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/JiraIssue.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/JiraIssue.java
index d88e75d3a58..0d766322742 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/JiraIssue.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/JiraIssue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.jira;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/JiraIssues.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/JiraIssues.java
index 809ac8360bb..9c304a6dcf9 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/JiraIssues.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/JiraIssues.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.jira;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/package-info.java
index efe356c69e9..beb62705111 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.controller.api.integration.jira;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ApplicationData.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ApplicationData.java
index 1fc6d7f898a..b6f99d611f8 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ApplicationData.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ApplicationData.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ApplicationPatch.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ApplicationPatch.java
index aa2ed206dda..2bcdf6ef422 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ApplicationPatch.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ApplicationPatch.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ApplicationStatsData.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ApplicationStatsData.java
index 1daf3dd5aaf..4a8a25210e8 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ApplicationStatsData.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ApplicationStatsData.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ArchiveList.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ArchiveList.java
index 562316cc771..274d07bfc3b 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ArchiveList.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ArchiveList.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ArchivePatch.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ArchivePatch.java
index 0d22b5e050a..d412582538a 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ArchivePatch.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ArchivePatch.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/Capacity.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/Capacity.java
index b8d60fbd523..ab074e62d14 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/Capacity.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/Capacity.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ClusterData.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ClusterData.java
index 6f9b2b496bf..ffc74f002d5 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ClusterData.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ClusterData.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ClusterResourcesData.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ClusterResourcesData.java
index 571af2a80c0..801ee4ee853 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ClusterResourcesData.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ClusterResourcesData.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ClusterUtilizationData.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ClusterUtilizationData.java
index 47cb80a98e2..803daf6a8c6 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ClusterUtilizationData.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ClusterUtilizationData.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/LoadData.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/LoadData.java
index ac60ea19134..4aeb56f51d6 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/LoadData.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/LoadData.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/MaintenanceJobList.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/MaintenanceJobList.java
index db5037af4d2..8259850d110 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/MaintenanceJobList.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/MaintenanceJobList.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/MaintenanceJobName.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/MaintenanceJobName.java
index ba54fed4cb1..806fc48c3c5 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/MaintenanceJobName.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/MaintenanceJobName.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeEnvironment.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeEnvironment.java
deleted file mode 100644
index 8510aacf3a8..00000000000
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeEnvironment.java
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
-
-/**
- * @author bjorncs
- */
-public enum NodeEnvironment {
- BARE_METAL,
- VIRTUAL_MACHINE,
- DOCKER_CONTAINER
-}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeHistory.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeHistory.java
index cf40ac00d64..25d52a976b1 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeHistory.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeHistory.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeList.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeList.java
index d707cdc5995..ec8d71f76c5 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeList.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeList.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeMembership.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeMembership.java
index f567e27bdea..5579c43daf0 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeMembership.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeMembership.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeOwner.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeOwner.java
index 9d626272b3e..f5707bb8698 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeOwner.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeOwner.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepoStatsData.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepoStatsData.java
index a4b3174b442..36677143f7a 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepoStatsData.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepoStatsData.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepositoryNode.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepositoryNode.java
index 80d710eda2b..1551ecbb7ca 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepositoryNode.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepositoryNode.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
import com.fasterxml.jackson.annotation.JsonGetter;
@@ -15,6 +15,8 @@ import java.util.Set;
/**
* The wire format of a node retrieved from the node repository.
*
+ * All fields in this are nullable.
+ *
* @author bjorncs
*/
@JsonIgnoreProperties(ignoreUnknown = true)
@@ -26,7 +28,7 @@ public class NodeRepositoryNode {
@JsonProperty("id")
private String id;
@JsonProperty("state")
- private NodeState state;
+ private String state;
@JsonProperty("hostname")
private String hostname;
@JsonProperty("ipAddresses")
@@ -70,9 +72,9 @@ public class NodeRepositoryNode {
@JsonProperty("failCount")
private Integer failCount;
@JsonProperty("environment")
- private NodeEnvironment environment;
+ private String environment;
@JsonProperty("type")
- private NodeType type;
+ private String type;
@JsonProperty("wantedDockerImage")
private String wantedDockerImage;
@JsonProperty("currentDockerImage")
@@ -120,11 +122,11 @@ public class NodeRepositoryNode {
this.id = id;
}
- public NodeState getState() {
+ public String getState() {
return state;
}
- public void setState(NodeState state) {
+ public void setState(String state) {
this.state = state;
}
@@ -264,19 +266,19 @@ public class NodeRepositoryNode {
this.failCount = failCount;
}
- public NodeEnvironment getEnvironment() {
+ public String getEnvironment() {
return environment;
}
- public void setEnvironment(NodeEnvironment environment) {
+ public void setEnvironment(String environment) {
this.environment = environment;
}
- public NodeType getType() {
+ public String getType() {
return type;
}
- public void setType(NodeType type) {
+ public void setType(String type) {
this.type = type;
}
@@ -342,21 +344,10 @@ public class NodeRepositoryNode {
this.history = history;
}
-
- @JsonGetter("orchestratorStatus")
- public String getOrchestratorStatusOrNull() {
+ public String getOrchestratorStatus() {
return orchestratorStatus;
}
- @JsonIgnore
- public OrchestratorStatus getOrchestratorStatus() {
- if (orchestratorStatus == null) {
- return OrchestratorStatus.NO_REMARKS;
- }
-
- return OrchestratorStatus.fromString(orchestratorStatus);
- }
-
public Long suspendedSinceMillis() {
return suspendedSinceMillis;
}
@@ -433,6 +424,19 @@ public class NodeRepositoryNode {
this.switchHostname = switchHostname;
}
+
+ // --- Helper methods for code that (wrongly) consume this directly
+
+ public boolean hasType(NodeType type) {
+ return type.name().equals(getType());
+ }
+
+ public boolean hasState(NodeState state) {
+ return state.name().equals(getState());
+ }
+
+ // --- end
+
@Override
public String toString() {
return "NodeRepositoryNode{" +
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeState.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeState.java
index f4199736919..57df9bb8624 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeState.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeState.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeType.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeType.java
index 183e43eae40..b1a9de775db 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeType.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeType.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeUpgrade.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeUpgrade.java
index b8e2a626c72..8086ecc7e3c 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeUpgrade.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeUpgrade.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/OrchestratorStatus.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/OrchestratorStatus.java
deleted file mode 100644
index 74fdc8ebe92..00000000000
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/OrchestratorStatus.java
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
-
-import java.util.stream.Stream;
-
-public enum OrchestratorStatus {
- NO_REMARKS, ALLOWED_TO_BE_DOWN, PERMANENTLY_DOWN;
-
- public static OrchestratorStatus fromString(String statusString) {
- return Stream.of(OrchestratorStatus.values())
- .filter(status -> status.name().equalsIgnoreCase(statusString))
- .findAny()
- .orElseThrow(() -> new IllegalArgumentException("Unknown orchestrator status: " + statusString));
- }
-}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ProvisionResource.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ProvisionResource.java
index 5714e3d5f6d..a33ef664d84 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ProvisionResource.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ProvisionResource.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
import com.yahoo.config.provision.TenantName;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/RestartFilter.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/RestartFilter.java
index 685ed392c00..72457a6a45e 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/RestartFilter.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/RestartFilter.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
import com.yahoo.config.provision.ClusterSpec;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ScalingEventData.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ScalingEventData.java
index 1ac24695afe..a1c44278577 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ScalingEventData.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/ScalingEventData.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.noderepository;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/package-info.java
index 08036880cd2..e44b7df8514 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/Contact.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/Contact.java
index 9ca83673b8a..a1f27f85500 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/Contact.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/Contact.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.organization;
import com.google.common.collect.ImmutableList;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/DeploymentIssues.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/DeploymentIssues.java
index bafedb543f6..75866b68ab1 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/DeploymentIssues.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/DeploymentIssues.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.organization;
import com.yahoo.component.Version;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/Issue.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/Issue.java
index 5127c67654d..55f65d71165 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/Issue.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/Issue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.organization;
import com.google.common.collect.ImmutableList;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/IssueHandler.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/IssueHandler.java
index a49cee30015..6ee5b5a314f 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/IssueHandler.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/IssueHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.organization;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/IssueId.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/IssueId.java
index ccb65582d3c..68109e2b8d8 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/IssueId.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/IssueId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.organization;
import java.util.Objects;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockContactRetriever.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockContactRetriever.java
index ab39d8e5660..ca94445779c 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockContactRetriever.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockContactRetriever.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.organization;
import com.yahoo.vespa.hosted.controller.api.identifiers.PropertyId;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockIssueHandler.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockIssueHandler.java
index cf0b467c790..021f05f4d1f 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockIssueHandler.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockIssueHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.organization;
import com.google.inject.Inject;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/OwnershipIssues.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/OwnershipIssues.java
index e03619115c2..df128f18193 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/OwnershipIssues.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/OwnershipIssues.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.organization;
import java.util.Optional;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/SystemMonitor.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/SystemMonitor.java
index 6e1c71e2be7..20dd0a8739d 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/SystemMonitor.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/SystemMonitor.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.organization;
import com.yahoo.component.Version;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/User.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/User.java
index a88a9432c89..af9a18917df 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/User.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/User.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.organization;
import java.util.Objects;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/package-info.java
index 4efbec0d225..6526cc02546 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.controller.api.integration.organization;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/package-info.java
index 265d57cadd8..9e53a70ce49 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.controller.api.integration;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/repair/RepairTicketReport.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/repair/RepairTicketReport.java
index c2425fe0f72..fe5d2c47117 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/repair/RepairTicketReport.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/repair/RepairTicketReport.java
@@ -1,7 +1,6 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.repair;
-import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.JsonNode;
@@ -53,8 +52,8 @@ public class RepairTicketReport {
return REPORT_ID;
}
- public static RepairTicketReport fromJsonNode(JsonNode node) {
- return uncheck(() -> objectMapper.treeToValue(node, RepairTicketReport.class));
+ public static RepairTicketReport fromJsonNode(String jsonReport) {
+ return uncheck(() -> objectMapper.readValue(jsonReport, RepairTicketReport.class));
}
public JsonNode toJsonNode() {
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/repair/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/repair/package-info.java
index f53cb1ee43c..a9b5b1c1221 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/repair/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/repair/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.controller.api.integration.repair;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/ResourceUsage.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/ResourceUsage.java
index 5bb61979f1d..fdea3b26372 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/ResourceUsage.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/ResourceUsage.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.resource;
import com.yahoo.config.provision.ApplicationId;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/package-info.java
index bfb44eb94ba..0d39059f449 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/resource/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.controller.api.integration.resource;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/routing/MemoryGlobalRoutingService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/routing/MemoryGlobalRoutingService.java
index bb5fe2dc524..5d51030a329 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/routing/MemoryGlobalRoutingService.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/routing/MemoryGlobalRoutingService.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.routing;
import com.yahoo.component.AbstractComponent;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/routing/RotationStatus.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/routing/RotationStatus.java
index 8c59bb44fa1..63a05627dfd 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/routing/RotationStatus.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/routing/RotationStatus.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.routing;
/**
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/routing/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/routing/package-info.java
index 25374003ec1..217ed2d8851 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/routing/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/routing/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.controller.api.integration.routing;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/NoopTenantSecretService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/NoopTenantSecretService.java
index f0d172934ba..9050ab4ef65 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/NoopTenantSecretService.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/NoopTenantSecretService.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.secrets;
import com.yahoo.config.provision.TenantName;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/TenantSecretService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/TenantSecretService.java
index c8320b9a1cc..b85e435a0db 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/TenantSecretService.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/TenantSecretService.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.secrets;
import com.yahoo.config.provision.TenantName;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/TenantSecretStore.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/TenantSecretStore.java
index b77de3cc9b8..770bbaaf695 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/TenantSecretStore.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/TenantSecretStore.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.secrets;
import java.util.Objects;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/package-info.java
index 25f09e45cdd..de9ff3dc222 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/secrets/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.controller.api.integration.secrets;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/DummyOwnershipIssues.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/DummyOwnershipIssues.java
index 23172f94b89..d3d5ba96781 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/DummyOwnershipIssues.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/DummyOwnershipIssues.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.stubs;
import com.yahoo.vespa.hosted.controller.api.integration.organization.ApplicationSummary;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/DummySystemMonitor.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/DummySystemMonitor.java
index d13eb897d0f..e082c646fa4 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/DummySystemMonitor.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/DummySystemMonitor.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.stubs;
import com.yahoo.component.Version;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/LoggingDeploymentIssues.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/LoggingDeploymentIssues.java
index 3007bbf1697..f5341ac6ddc 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/LoggingDeploymentIssues.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/LoggingDeploymentIssues.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.stubs;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockRunDataStore.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockRunDataStore.java
index e579ce54de1..32591cfe4e2 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockRunDataStore.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockRunDataStore.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.stubs;
import com.yahoo.config.provision.ApplicationId;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockTesterCloud.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockTesterCloud.java
index cd710c611d4..3b41550762b 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockTesterCloud.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockTesterCloud.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.stubs;
import com.yahoo.config.provision.HostName;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockUserManagement.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockUserManagement.java
index dfdd273b6f5..5313139ff7d 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockUserManagement.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockUserManagement.java
@@ -6,6 +6,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.user.UserId;
import com.yahoo.vespa.hosted.controller.api.integration.user.UserManagement;
import com.yahoo.vespa.hosted.controller.api.role.Role;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
@@ -79,4 +80,9 @@ public class MockUserManagement implements UserManagement {
public List<Role> listRoles(UserId userId) {
return List.of();
}
+
+ @Override
+ public List<Role> listRoles() {
+ return new ArrayList<>(memberships.keySet());
+ }
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/package-info.java
index 2aab38dc66d..6e4433882dc 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* No-dependency implementations of integration interfaces for setups where we want to avoid contacting
* certain thirds-party systems.
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/user/UserManagement.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/user/UserManagement.java
index bfb617a75b6..722acc065d9 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/user/UserManagement.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/user/UserManagement.java
@@ -36,4 +36,7 @@ public interface UserManagement {
/** Returns all roles of which the given user is part, or throws if the user does not exist */
List<Role> listRoles(UserId user);
+
+ /** Returns all roles */
+ List<Role> listRoles();
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequest.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequest.java
index 11adc1f7bb6..bfa2634a23b 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequest.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.vcmr;
import java.util.List;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequestClient.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequestClient.java
index 4fa195f1b05..b095b808e50 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequestClient.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequestClient.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.vcmr;
import java.util.List;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequestSource.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequestSource.java
index 6cf0f6e0ebd..e5b3422b79b 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequestSource.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequestSource.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.vcmr;
import java.time.ZonedDateTime;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/HostAction.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/HostAction.java
index 5a018475e9f..0749f7555a6 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/HostAction.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/HostAction.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.vcmr;
import java.time.Instant;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/MockChangeRequestClient.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/MockChangeRequestClient.java
index e64b2ee3368..5dc70d0c355 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/MockChangeRequestClient.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/MockChangeRequestClient.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.vcmr;
import java.util.ArrayList;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/VCMRReport.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/VcmrReport.java
index a3c0af95053..969e6fb1e01 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/VCMRReport.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/VcmrReport.java
@@ -1,10 +1,8 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.vcmr;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
@@ -19,29 +17,30 @@ import java.util.Set;
import static com.yahoo.yolean.Exceptions.uncheck;
/**
- * @author olaa
*
* Node repository report containing list of upcoming VCMRs impacting a node
+ *
+ * @author olaa
*/
@JsonIgnoreProperties(ignoreUnknown = true)
-public class VCMRReport {
+public class VcmrReport {
private static final String REPORT_ID = "vcmr";
private static final ObjectMapper objectMapper = new ObjectMapper()
.registerModule(new JavaTimeModule());
@JsonProperty("upcoming")
- private Set<VCMR> vcmrs;
+ private Set<Vcmr> vcmrs;
- public VCMRReport() {
+ public VcmrReport() {
this(new HashSet<>());
}
- public VCMRReport(Set<VCMR> vcmrs) {
+ public VcmrReport(Set<Vcmr> vcmrs) {
this.vcmrs = vcmrs;
}
- public Set<VCMR> getVcmrs() {
+ public Set<Vcmr> getVcmrs() {
return vcmrs;
}
@@ -49,7 +48,7 @@ public class VCMRReport {
* @return true if list of VCMRs is changed
*/
public boolean addVcmr(String id, ZonedDateTime plannedStartTime, ZonedDateTime plannedEndtime) {
- var vcmr = new VCMR(id, plannedStartTime, plannedEndtime);
+ var vcmr = new Vcmr(id, plannedStartTime, plannedEndtime);
if (vcmrs.contains(vcmr))
return false;
@@ -69,23 +68,23 @@ public class VCMRReport {
/**
* Serialization functions - mapped to {@link Node#reports()}
*/
- public static VCMRReport fromReports(Map<String, JsonNode> reports) {
+ public static VcmrReport fromReports(Map<String, String> reports) {
var serialized = reports.get(REPORT_ID);
if (serialized == null)
- return new VCMRReport();
+ return new VcmrReport();
- return uncheck(() -> objectMapper.treeToValue(serialized, VCMRReport.class));
+ return uncheck(() -> objectMapper.readValue(serialized, VcmrReport.class));
}
/**
* Set report to 'null' if list is empty - clearing the report
* See NodePatcher in node-repository
*/
- public Map<String, JsonNode> toNodeReports() {
- Map<String, JsonNode> reports = new HashMap<>();
- JsonNode jsonNode = vcmrs.isEmpty() ?
- null : uncheck(() -> objectMapper.valueToTree(this));
- reports.put(REPORT_ID, jsonNode);
+ public Map<String, String> toNodeReports() {
+ Map<String, String> reports = new HashMap<>();
+ String json = vcmrs.isEmpty() ?
+ null : uncheck(() -> objectMapper.valueToTree(this).toString());
+ reports.put(REPORT_ID, json);
return reports;
}
@@ -94,15 +93,15 @@ public class VCMRReport {
return "VCMRReport{" + vcmrs + "}";
}
- public static class VCMR {
+ public static class Vcmr {
private String id;
private ZonedDateTime plannedStartTime;
private ZonedDateTime plannedEndTime;
- VCMR(@JsonProperty("id") String id,
- @JsonProperty("plannedStartTime") ZonedDateTime plannedStartTime,
- @JsonProperty("plannedEndTime") ZonedDateTime plannedEndTime) {
+ Vcmr(@JsonProperty("id") String id,
+ @JsonProperty("plannedStartTime") ZonedDateTime plannedStartTime,
+ @JsonProperty("plannedEndTime") ZonedDateTime plannedEndTime) {
this.id = id;
this.plannedStartTime = plannedStartTime;
this.plannedEndTime = plannedEndTime;
@@ -124,7 +123,7 @@ public class VCMRReport {
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
- VCMR vcmr = (VCMR) o;
+ Vcmr vcmr = (Vcmr) o;
return Objects.equals(id, vcmr.id) &&
Objects.equals(plannedStartTime, vcmr.plannedStartTime) &&
Objects.equals(plannedEndTime, vcmr.plannedEndTime);
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/VespaChangeRequest.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/VespaChangeRequest.java
index 915f43dc369..1d9fc9ae46a 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/VespaChangeRequest.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/VespaChangeRequest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.vcmr;
import com.yahoo.config.provision.zone.ZoneId;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/package-info.java
index 8962d8e79f4..1a01f48f739 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.controller.api.integration.vcmr;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneRegistry.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneRegistry.java
index 7539ef3c63a..852570b9ed4 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneRegistry.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/ZoneRegistry.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.zone;
import com.yahoo.config.provision.ApplicationId;
@@ -8,6 +8,7 @@ import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.SystemName;
+import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.zone.RoutingMethod;
import com.yahoo.config.provision.zone.UpgradePolicy;
import com.yahoo.config.provision.zone.ZoneApi;
@@ -89,4 +90,7 @@ public interface ZoneRegistry {
/** Returns a URL to the controller's api endpoint */
URI apiUrl();
+ /** IAM tenant developer role ARN */
+ Optional<String> tenantDeveloperRoleArn(TenantName tenant);
+
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/package-info.java
index 148564a373f..b16cd6180fa 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/zone/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.controller.api.integration.zone;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java
index 327175c19ed..1306f4846c2 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java
@@ -103,6 +103,7 @@ enum PathGroup {
applicationInfo(Matcher.tenant,
Matcher.application,
"/application/v4/tenant/{tenant}/application/{application}/package",
+ "/application/v4/tenant/{tenant}/application/{application}/diff/{number}",
"/application/v4/tenant/{tenant}/application/{application}/compile-version",
"/application/v4/tenant/{tenant}/application/{application}/deployment",
"/application/v4/tenant/{tenant}/application/{application}/deploying/{*}",
@@ -153,6 +154,10 @@ enum PathGroup {
"/application/v4/tenant/{tenant}/application/{application}/instance/{ignored}/environment/{environment}/region/{region}/reindex",
"/application/v4/tenant/{tenant}/application/{application}/instance/{ignored}/environment/{environment}/region/{region}/reindexing"),
+ serviceDump(Matcher.tenant,
+ Matcher.application,
+ "/application/v4/tenant/{tenant}/application/{application}/instance/{ignored}/environment/{environment}/region/{region}/node/{node}/service-dump"),
+
/** Paths used for development deployments. */
developmentDeployment(Matcher.tenant,
Matcher.application,
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/Policy.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/Policy.java
index eae5ad5b685..b6525db7092 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/Policy.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/Policy.java
@@ -84,7 +84,7 @@ enum Policy {
/** Read access to application information and settings. */
applicationRead(Privilege.grant(Action.read)
- .on(PathGroup.application, PathGroup.applicationInfo, PathGroup.reindexing)
+ .on(PathGroup.application, PathGroup.applicationInfo, PathGroup.reindexing, PathGroup.serviceDump)
.in(SystemName.all())),
/** Read access to application information and settings. */
@@ -99,7 +99,7 @@ enum Policy {
/** Full access to application information and settings. */
applicationOperations(Privilege.grant(Action.write())
- .on(PathGroup.applicationInfo, PathGroup.productionRestart, PathGroup.reindexing)
+ .on(PathGroup.applicationInfo, PathGroup.productionRestart, PathGroup.reindexing, PathGroup.serviceDump)
.in(SystemName.all())),
/** Access to create and delete developer and deploy keys under a tenant. */
@@ -205,7 +205,7 @@ enum Policy {
horizonProxyOperations(Privilege.grant(Action.all())
.on(PathGroup.horizonProxy)
- .in(SystemName.PublicCd));
+ .in(SystemName.PublicCd, SystemName.Public));
private final Set<Privilege> privileges;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchive.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchive.java
index 850e14b25e8..367b258e7b6 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchive.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchive.java
@@ -23,6 +23,7 @@ import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
@@ -125,9 +126,9 @@ public class SystemFlagsDataArchive {
uncheck(zipOut::flush);
}
- public Set<FlagData> flagData(FlagsTarget target) {
+ public List<FlagData> flagData(FlagsTarget target) {
List<String> filenames = target.flagDataFilesPrioritized();
- Set<FlagData> targetData = new HashSet<>();
+ List<FlagData> targetData = new ArrayList<>();
files.forEach((flagId, fileMap) -> {
for (String filename : filenames) {
FlagData data = fileMap.get(filename);
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/AthenzTenant.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/AthenzTenant.java
index 7fa46031c98..79ab8654aa4 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/AthenzTenant.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/AthenzTenant.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.tenant;
import com.yahoo.config.provision.TenantName;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/CloudTenant.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/CloudTenant.java
index 1060b118beb..1060b118beb 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/CloudTenant.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/CloudTenant.java
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/DeletedTenant.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/DeletedTenant.java
new file mode 100644
index 00000000000..cf6d73cb8f8
--- /dev/null
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/DeletedTenant.java
@@ -0,0 +1,39 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.controller.tenant;
+
+import com.yahoo.config.provision.TenantName;
+
+import java.time.Instant;
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * Represents a tenant that has been deleted. Exists to prevent creation of a new tenant with the same name.
+ *
+ * @author freva
+ */
+public class DeletedTenant extends Tenant {
+
+ private final Instant deletedAt;
+
+ public DeletedTenant(TenantName name, Instant createdAt, Instant deletedAt) {
+ super(name, createdAt, LastLoginInfo.EMPTY, Optional.empty());
+ this.deletedAt = Objects.requireNonNull(deletedAt, "deletedAt must be non-null");
+ }
+
+ /** Instant when the tenant was deleted */
+ public Instant deletedAt() {
+ return deletedAt;
+ }
+
+ @Override
+ public String toString() {
+ return "deleted tenant '" + name() + "'";
+ }
+
+ @Override
+ public Type type() {
+ return Type.deleted;
+ }
+
+}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/LastLoginInfo.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/LastLoginInfo.java
index 15f2f97e7d1..ed335a67df6 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/LastLoginInfo.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/LastLoginInfo.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.tenant;
import java.time.Instant;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/Tenant.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/Tenant.java
index f8b54e7eff3..ed7e6827516 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/Tenant.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/Tenant.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.tenant;
import com.yahoo.config.provision.TenantName;
@@ -78,7 +78,10 @@ public abstract class Tenant {
athenz,
/** Tenant authenticated through some cloud identity provider. */
- cloud
+ cloud,
+
+ /** Tenant has been deleted. */
+ deleted,
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantInfo.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantInfo.java
index a20477d7aab..81c08e1083b 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantInfo.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantInfo.java
@@ -1,10 +1,6 @@
// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.tenant;
-import com.yahoo.vespa.hosted.controller.api.integration.secrets.TenantSecretStore;
-
-import java.util.ArrayList;
-import java.util.List;
import java.util.Objects;
/**
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantInfoAddress.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantInfoAddress.java
index a12f351abd6..a12f351abd6 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantInfoAddress.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantInfoAddress.java
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantInfoBillingContact.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantInfoBillingContact.java
index a00dd626f0a..a00dd626f0a 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantInfoBillingContact.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantInfoBillingContact.java
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/package-info.java
index 9218bfcd850..345b9cb8a3d 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tenant/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author mpolden
*/
diff --git a/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/identifiers/IdentifierTest.java b/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/identifiers/IdentifierTest.java
index fdba1ab2680..0dcb800ca04 100644
--- a/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/identifiers/IdentifierTest.java
+++ b/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/identifiers/IdentifierTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.identifiers;
import com.yahoo.config.provision.zone.ZoneId;
diff --git a/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobTypeTest.java b/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobTypeTest.java
index 22486875a0b..51c20056ad4 100644
--- a/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobTypeTest.java
+++ b/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobTypeTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.deployment;
import org.junit.Test;
diff --git a/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/integration/dns/AliasTargetTest.java b/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/integration/dns/AliasTargetTest.java
index 7169222fe26..ff0fd9e460f 100644
--- a/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/integration/dns/AliasTargetTest.java
+++ b/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/integration/dns/AliasTargetTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.dns;
import com.yahoo.config.provision.HostName;
diff --git a/controller-server/pom.xml b/controller-server/pom.xml
index a0d05588a0d..8615b8672c1 100644
--- a/controller-server/pom.xml
+++ b/controller-server/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
@@ -158,13 +158,6 @@
</dependency>
<dependency>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>http-utils</artifactId>
- <version>${project.version}</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
<!-- required by java-jwt -->
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Application.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Application.java
index f8624b40737..bbf76fcb480 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Application.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Application.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller;
import com.yahoo.component.Version;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java
index e9b4b25672a..861d101ae3f 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java
@@ -27,7 +27,6 @@ import com.yahoo.vespa.hosted.controller.api.application.v4.model.DeploymentData
import com.yahoo.vespa.hosted.controller.api.identifiers.DeploymentId;
import com.yahoo.vespa.hosted.controller.api.identifiers.InstanceId;
import com.yahoo.vespa.hosted.controller.api.identifiers.RevisionId;
-import com.yahoo.vespa.hosted.controller.api.integration.aws.TenantRoles;
import com.yahoo.vespa.hosted.controller.api.integration.billing.BillingController;
import com.yahoo.vespa.hosted.controller.api.integration.billing.Quota;
import com.yahoo.vespa.hosted.controller.api.integration.certificates.EndpointCertificateMetadata;
@@ -36,6 +35,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.configserver.ConfigServ
import com.yahoo.vespa.hosted.controller.api.integration.configserver.ContainerEndpoint;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Log;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationStore;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationVersion;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.ArtifactRepository;
@@ -44,8 +44,8 @@ import com.yahoo.vespa.hosted.controller.api.integration.deployment.TesterId;
import com.yahoo.vespa.hosted.controller.api.integration.noderepository.RestartFilter;
import com.yahoo.vespa.hosted.controller.api.integration.secrets.TenantSecretStore;
import com.yahoo.vespa.hosted.controller.application.ActivateResult;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackageValidator;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackageValidator;
import com.yahoo.vespa.hosted.controller.application.Deployment;
import com.yahoo.vespa.hosted.controller.application.DeploymentMetrics;
import com.yahoo.vespa.hosted.controller.application.DeploymentQuotaCalculator;
@@ -80,7 +80,6 @@ import java.time.Instant;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
-import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -277,8 +276,9 @@ public class ApplicationController {
/** Reads the oldest installed platform for the given application and zone from the node repo of that zone. */
private Optional<Version> oldestInstalledPlatform(JobId job) {
return configServer.nodeRepository().list(job.type().zone(controller.system()),
- job.application(),
- EnumSet.of(active, reserved))
+ NodeFilter.all()
+ .applications(job.application())
+ .states(active, reserved))
.stream()
.map(Node::currentVersion)
.filter(version -> ! version.isEmpty())
@@ -331,11 +331,6 @@ public class ApplicationController {
});
}
- /** Fetches the requested application package from the artifact store(s). */
- public ApplicationPackage getApplicationPackage(ApplicationId id, ApplicationVersion version) {
- return new ApplicationPackage(applicationStore.get(id.tenant(), id.application(), version));
- }
-
/** Returns given application with a new instance */
public LockedApplication withNewInstance(LockedApplication application, ApplicationId instance) {
if (instance.instance().isTester())
@@ -362,7 +357,6 @@ public class ApplicationController {
try (Lock deploymentLock = lockForDeployment(job.application(), zone)) {
Set<ContainerEndpoint> containerEndpoints;
Optional<EndpointCertificateMetadata> endpointCertificateMetadata;
- Optional<TenantRoles> tenantRoles = Optional.empty();
Run run = controller.jobController().last(job)
.orElseThrow(() -> new IllegalStateException("No known run of '" + job + "'"));
@@ -372,7 +366,7 @@ public class ApplicationController {
Version platform = run.versions().sourcePlatform().filter(__ -> deploySourceVersions).orElse(run.versions().targetPlatform());
ApplicationVersion revision = run.versions().sourceApplication().filter(__ -> deploySourceVersions).orElse(run.versions().targetApplication());
- ApplicationPackage applicationPackage = getApplicationPackage(job.application(), zone, revision);
+ ApplicationPackage applicationPackage = new ApplicationPackage(applicationStore.get(new DeploymentId(job.application(), zone), revision));
try (Lock lock = lock(applicationId)) {
LockedApplication application = new LockedApplication(requireApplication(applicationId), lock);
@@ -390,7 +384,8 @@ public class ApplicationController {
} // Release application lock while doing the deployment, which is a lengthy task.
// Carry out deployment without holding the application lock.
- ActivateResult result = deploy(job.application(), applicationPackage, zone, platform, containerEndpoints, endpointCertificateMetadata, tenantRoles);
+ ActivateResult result = deploy(job.application(), applicationPackage, zone, platform, containerEndpoints,
+ endpointCertificateMetadata, run.isDryRun());
// Record the quota usage for this application
var quotaUsage = deploymentQuotaUsage(zone, job.application());
@@ -472,7 +467,7 @@ public class ApplicationController {
ApplicationPackage applicationPackage = new ApplicationPackage(
artifactRepository.getSystemApplicationPackage(application.id(), zone, version)
);
- return deploy(application.id(), applicationPackage, zone, version, Set.of(), /* No application cert */ Optional.empty(), Optional.empty());
+ return deploy(application.id(), applicationPackage, zone, version, Set.of(), /* No application cert */ Optional.empty(), false);
} else {
throw new RuntimeException("This system application does not have an application package: " + application.id().toShortString());
}
@@ -480,13 +475,13 @@ public class ApplicationController {
/** Deploys the given tester application to the given zone. */
public ActivateResult deployTester(TesterId tester, ApplicationPackage applicationPackage, ZoneId zone, Version platform) {
- return deploy(tester.id(), applicationPackage, zone, platform, Set.of(), /* No application cert for tester*/ Optional.empty(), Optional.empty());
+ return deploy(tester.id(), applicationPackage, zone, platform, Set.of(), /* No application cert for tester*/ Optional.empty(), false);
}
private ActivateResult deploy(ApplicationId application, ApplicationPackage applicationPackage,
ZoneId zone, Version platform, Set<ContainerEndpoint> endpoints,
Optional<EndpointCertificateMetadata> endpointCertificateMetadata,
- Optional<TenantRoles> tenantRoles) {
+ boolean dryRun) {
try {
Optional<DockerImage> dockerImageRepo = Optional.ofNullable(
dockerImageRepoFlag
@@ -520,7 +515,8 @@ public class ApplicationController {
ConfigServer.PreparedApplication preparedApplication =
configServer.deploy(new DeploymentData(application, zone, applicationPackage.zippedContent(), platform,
endpoints, endpointCertificateMetadata, dockerImageRepo, domain,
- tenantRoles, deploymentQuota, tenantSecretStores, operatorCertificates));
+ deploymentQuota, tenantSecretStores, operatorCertificates,
+ dryRun));
return new ActivateResult(new RevisionId(applicationPackage.hash()), preparedApplication.prepareResponse(),
applicationPackage.zippedContent().length);
@@ -829,11 +825,6 @@ public class ApplicationController {
return DeploymentQuotaCalculator.calculateQuotaUsage(application);
}
- private ApplicationPackage getApplicationPackage(ApplicationId application, ZoneId zone, ApplicationVersion revision) {
- return new ApplicationPackage(revision.isUnknown() ? applicationStore.getDev(application, zone)
- : applicationStore.get(application.tenant(), application.application(), revision));
- }
-
/*
* Get the AthenzUser from this principal or Optional.empty if this does not represent a user.
*/
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Controller.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Controller.java
index 65e046b448d..4dd380324fa 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Controller.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Controller.java
@@ -35,6 +35,7 @@ import com.yahoo.vespa.hosted.controller.versions.VersionStatus;
import com.yahoo.vespa.hosted.controller.versions.VespaVersion;
import com.yahoo.vespa.hosted.rotation.config.RotationsConfig;
import com.yahoo.vespa.serviceview.bindings.ApplicationView;
+import com.yahoo.yolean.concurrent.Sleeper;
import java.time.Clock;
import java.time.Duration;
@@ -73,6 +74,7 @@ public class Controller extends AbstractComponent {
private final TenantController tenantController;
private final JobController jobController;
private final Clock clock;
+ private final Sleeper sleeper;
private final ZoneRegistry zoneRegistry;
private final ServiceRegistry serviceRegistry;
private final AuditLogger auditLogger;
@@ -97,18 +99,20 @@ public class Controller extends AbstractComponent {
MavenRepository mavenRepository, ServiceRegistry serviceRegistry, Metric metric, SecretStore secretStore,
ControllerConfig controllerConfig) {
this(curator, rotationsConfig, accessControl, com.yahoo.net.HostName::getLocalhost, flagSource,
- mavenRepository, serviceRegistry, metric, secretStore, controllerConfig);
+ mavenRepository, serviceRegistry, metric, secretStore, controllerConfig, Sleeper.DEFAULT);
}
public Controller(CuratorDb curator, RotationsConfig rotationsConfig, AccessControl accessControl,
Supplier<String> hostnameSupplier, FlagSource flagSource, MavenRepository mavenRepository,
- ServiceRegistry serviceRegistry, Metric metric, SecretStore secretStore, ControllerConfig controllerConfig) {
+ ServiceRegistry serviceRegistry, Metric metric, SecretStore secretStore,
+ ControllerConfig controllerConfig, Sleeper sleeper) {
this.hostnameSupplier = Objects.requireNonNull(hostnameSupplier, "HostnameSupplier cannot be null");
this.curator = Objects.requireNonNull(curator, "Curator cannot be null");
this.serviceRegistry = Objects.requireNonNull(serviceRegistry, "ServiceRegistry cannot be null");
this.zoneRegistry = Objects.requireNonNull(serviceRegistry.zoneRegistry(), "ZoneRegistry cannot be null");
this.clock = Objects.requireNonNull(serviceRegistry.clock(), "Clock cannot be null");
+ this.sleeper = Objects.requireNonNull(sleeper);
this.flagSource = Objects.requireNonNull(flagSource, "FlagSource cannot be null");
this.mavenRepository = Objects.requireNonNull(mavenRepository, "MavenRepository cannot be null");
this.metric = Objects.requireNonNull(metric, "Metric cannot be null");
@@ -158,6 +162,8 @@ public class Controller extends AbstractComponent {
public Clock clock() { return clock; }
+ public Sleeper sleeper() { return sleeper; }
+
public ZoneRegistry zoneRegistry() { return zoneRegistry; }
public NameServiceForwarder nameServiceForwarder() { return nameServiceForwarder; }
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Instance.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Instance.java
index 72d3cf7723b..ea2bcfcac4b 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Instance.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Instance.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller;
import com.yahoo.component.Version;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedApplication.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedApplication.java
index 92633fa969c..13ef1339e44 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedApplication.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedApplication.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller;
import com.yahoo.config.application.api.DeploymentSpec;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedTenant.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedTenant.java
index f25f1c64372..3f4ce7cc49b 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedTenant.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedTenant.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller;
import com.google.common.collect.BiMap;
@@ -14,6 +14,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.organization.Contact;
import com.yahoo.vespa.hosted.controller.api.integration.secrets.TenantSecretStore;
import com.yahoo.vespa.hosted.controller.tenant.AthenzTenant;
import com.yahoo.vespa.hosted.controller.tenant.CloudTenant;
+import com.yahoo.vespa.hosted.controller.tenant.DeletedTenant;
import com.yahoo.vespa.hosted.controller.tenant.LastLoginInfo;
import com.yahoo.vespa.hosted.controller.tenant.Tenant;
import com.yahoo.vespa.hosted.controller.tenant.TenantInfo;
@@ -47,9 +48,10 @@ public abstract class LockedTenant {
static LockedTenant of(Tenant tenant, Lock lock) {
switch (tenant.type()) {
- case athenz: return new Athenz((AthenzTenant) tenant);
- case cloud: return new Cloud((CloudTenant) tenant);
- default: throw new IllegalArgumentException("Unexpected tenant type '" + tenant.getClass().getName() + "'.");
+ case athenz: return new Athenz((AthenzTenant) tenant);
+ case cloud: return new Cloud((CloudTenant) tenant);
+ case deleted: return new Deleted((DeletedTenant) tenant);
+ default: throw new IllegalArgumentException("Unexpected tenant type '" + tenant.getClass().getName() + "'.");
}
}
@@ -58,6 +60,10 @@ public abstract class LockedTenant {
public abstract LockedTenant with(LastLoginInfo lastLoginInfo);
+ public Deleted deleted(Instant deletedAt) {
+ return new Deleted(new DeletedTenant(name, createdAt, deletedAt));
+ }
+
@Override
public String toString() {
return "tenant '" + name + "'";
@@ -183,4 +189,26 @@ public abstract class LockedTenant {
}
}
+
+ /** A locked DeletedTenant. */
+ public static class Deleted extends LockedTenant {
+
+ private final Instant deletedAt;
+
+ private Deleted(DeletedTenant tenant) {
+ super(tenant.name(), tenant.createdAt(), tenant.lastLoginInfo());
+ this.deletedAt = tenant.deletedAt();
+ }
+
+ @Override
+ public DeletedTenant get() {
+ return new DeletedTenant(name, createdAt, deletedAt);
+ }
+
+ @Override
+ public LockedTenant with(LastLoginInfo lastLoginInfo) {
+ return this;
+ }
+ }
+
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/NotExistsException.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/NotExistsException.java
index 02fa49d04d0..f2cb4346b6a 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/NotExistsException.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/NotExistsException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller;
import com.yahoo.text.Text;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/TenantController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/TenantController.java
index 047738784b7..4506362418b 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/TenantController.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/TenantController.java
@@ -1,13 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller;
import com.yahoo.config.provision.TenantName;
import com.yahoo.text.Text;
import com.yahoo.vespa.curator.Lock;
-import com.yahoo.vespa.flags.BooleanFlag;
-import com.yahoo.vespa.flags.FetchVector;
import com.yahoo.vespa.flags.FlagSource;
-import com.yahoo.vespa.flags.Flags;
import com.yahoo.vespa.hosted.controller.api.identifiers.TenantId;
import com.yahoo.vespa.hosted.controller.application.SystemApplication;
import com.yahoo.vespa.hosted.controller.concurrent.Once;
@@ -16,6 +13,7 @@ import com.yahoo.vespa.hosted.controller.persistence.CuratorDb;
import com.yahoo.vespa.hosted.controller.security.AccessControl;
import com.yahoo.vespa.hosted.controller.security.Credentials;
import com.yahoo.vespa.hosted.controller.security.TenantSpec;
+import com.yahoo.vespa.hosted.controller.tenant.DeletedTenant;
import com.yahoo.vespa.hosted.controller.tenant.LastLoginInfo;
import com.yahoo.vespa.hosted.controller.tenant.Tenant;
@@ -26,6 +24,7 @@ import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.function.Consumer;
+import java.util.function.Supplier;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
@@ -63,11 +62,17 @@ public class TenantController {
});
}
- /** Returns a list of all known tenants sorted by name */
+ /** Returns a list of all known, non-deleted tenants sorted by name */
public List<Tenant> asList() {
+ return asList(false);
+ }
+
+ /** Returns a list of all known tenants sorted by name */
+ public List<Tenant> asList(boolean includeDeleted) {
return curator.readTenants().stream()
- .sorted(Comparator.comparing(Tenant::name))
- .collect(Collectors.toList());
+ .filter(tenant -> tenant.type() != Tenant.Type.deleted || includeDeleted)
+ .sorted(Comparator.comparing(Tenant::name))
+ .collect(Collectors.toList());
}
/** Locks a tenant for modification and applies the given action. */
@@ -110,21 +115,22 @@ public class TenantController {
/** Create a tenant, provided the given credentials are valid. */
public void create(TenantSpec tenantSpec, Credentials credentials) {
try (Lock lock = lock(tenantSpec.tenant())) {
- requireNonExistent(tenantSpec.tenant());
TenantId.validate(tenantSpec.tenant().value());
+ requireNonExistent(tenantSpec.tenant());
curator.writeTenant(accessControl.createTenant(tenantSpec, controller.clock().instant(), credentials, asList()));
- try {
- controller.serviceRegistry().roleService().createTenantRole(tenantSpec.tenant());
- } catch (Exception e) {
- throw new RuntimeException("Unable to create tenant role for tenant: " + tenantSpec.tenant());
- }
+ // We should create tenant roles here but it takes too long - assuming the TenantRoleMaintainer will do it Soon™
}
}
/** Find tenant by name */
public Optional<Tenant> get(TenantName name) {
- return curator.readTenant(name);
+ return get(name, false);
+ }
+
+ public Optional<Tenant> get(TenantName name, boolean includeDeleted) {
+ return curator.readTenant(name)
+ .filter(tenant -> tenant.type() != Tenant.Type.deleted || includeDeleted);
}
/** Find tenant by name */
@@ -157,22 +163,28 @@ public class TenantController {
}
/** Deletes the given tenant. */
- public void delete(TenantName tenant, Credentials credentials) {
+ public void delete(TenantName tenant, Supplier<Credentials> credentials, boolean forget) {
try (Lock lock = lock(tenant)) {
- require(tenant);
- if ( ! controller.applications().asList(tenant).isEmpty())
- throw new IllegalArgumentException("Could not delete tenant '" + tenant.value()
- + "': This tenant has active applications");
-
- curator.removeTenant(tenant);
- accessControl.deleteTenant(tenant, credentials);
- controller.notificationsDb().removeNotifications(NotificationSource.from(tenant));
+ Tenant oldTenant = get(tenant, true)
+ .orElseThrow(() -> new NotExistsException("Could not delete tenant '" + tenant + "': Tenant not found"));
+
+ if (oldTenant.type() != Tenant.Type.deleted) {
+ if (!controller.applications().asList(tenant).isEmpty())
+ throw new IllegalArgumentException("Could not delete tenant '" + tenant.value()
+ + "': This tenant has active applications");
+
+ accessControl.deleteTenant(tenant, credentials.get());
+ controller.notificationsDb().removeNotifications(NotificationSource.from(tenant));
+ }
+
+ if (forget) curator.removeTenant(tenant);
+ else curator.writeTenant(new DeletedTenant(tenant, oldTenant.createdAt(), controller.clock().instant()));
}
}
private void requireNonExistent(TenantName name) {
if (SystemApplication.TENANT.equals(name)
- || get(name).isPresent()
+ || get(name, true).isPresent()
// Underscores are allowed in existing tenant names, but tenants with - and _ cannot co-exist. E.g.
// my-tenant cannot be created if my_tenant exists.
|| get(name.value().replace('-', '_')).isPresent()) {
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ActivateResult.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ActivateResult.java
index 20400be0d1f..989a0de0f83 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ActivateResult.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ActivateResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.application;
import com.yahoo.vespa.hosted.controller.api.identifiers.RevisionId;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationActivity.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationActivity.java
index 8917c489c65..09acb12d660 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationActivity.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationActivity.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.application;
import java.time.Instant;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationList.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationList.java
index 7ca6cb1e20b..a6e53fead37 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationList.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.application;
import com.yahoo.collections.AbstractFilteringList;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/Change.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/Change.java
index 33eafecf60a..244fb952b3f 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/Change.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/Change.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.application;
import com.yahoo.component.Version;
@@ -36,7 +36,7 @@ public final class Change {
private Change(Optional<Version> platform, Optional<ApplicationVersion> application, boolean pinned) {
this.platform = requireNonNull(platform, "platform cannot be null");
this.application = requireNonNull(application, "application cannot be null");
- if (application.isPresent() && application.get().isUnknown()) {
+ if (application.isPresent() && (application.get().isUnknown() || application.get().isDeployedDirectly())) {
throw new IllegalArgumentException("Application version to deploy must be a known version");
}
this.pinned = pinned;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/Deployment.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/Deployment.java
index 43ce466e8e6..6081c3323c8 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/Deployment.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/Deployment.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.application;
import com.yahoo.component.Version;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentActivity.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentActivity.java
index 71f0d64c43a..fc2ac94ffed 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentActivity.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentActivity.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.application;
import java.time.Instant;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentMetrics.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentMetrics.java
index 094cb9a19b0..1e0946d07be 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentMetrics.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentMetrics.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.application;
import java.time.Instant;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentQuotaCalculator.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentQuotaCalculator.java
index c17530fd9e2..481f57e13f1 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentQuotaCalculator.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/DeploymentQuotaCalculator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.application;
import com.yahoo.config.application.api.DeploymentSpec;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/InstanceList.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/InstanceList.java
index 4954628a46a..0e8a59134ed 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/InstanceList.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/InstanceList.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.application;
import com.google.common.collect.ImmutableMap;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/QuotaUsage.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/QuotaUsage.java
index 1e070d5a66b..2e0a2d48b78 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/QuotaUsage.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/QuotaUsage.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.application;
import java.util.Objects;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/package-info.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/package-info.java
index 4dbce299b5d..569ea0bfb1f 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/package-info.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Core application model
*
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationPackage.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackage.java
index c29bc3f3f5e..9767ef59252 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationPackage.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackage.java
@@ -1,5 +1,5 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.application;
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.controller.application.pkg;
import com.google.common.hash.Hashing;
import com.yahoo.component.Version;
@@ -251,10 +251,11 @@ public class ApplicationPackage {
private Map<Path, Optional<byte[]>> read(Collection<String> names) {
var entries = new ZipStreamReader(new ByteArrayInputStream(zip),
name -> names.contains(withoutLegacyDir(name)),
- maxSize)
+ maxSize,
+ true)
.entries().stream()
.collect(toMap(entry -> Paths.get(withoutLegacyDir(entry.zipEntry().getName())).normalize(),
- entry -> Optional.of(entry.content())));
+ ZipStreamReader.ZipEntryWithContent::content));
names.stream().map(Paths::get).forEach(path -> entries.putIfAbsent(path.normalize(), Optional.empty()));
return entries;
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageDiff.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageDiff.java
new file mode 100644
index 00000000000..97810b9de80
--- /dev/null
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageDiff.java
@@ -0,0 +1,112 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.controller.application.pkg;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.UncheckedIOException;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import static com.yahoo.vespa.hosted.controller.application.pkg.ZipStreamReader.ZipEntryWithContent;
+
+/**
+ * @author freva
+ */
+public class ApplicationPackageDiff {
+
+ public static byte[] diffAgainstEmpty(ApplicationPackage right) {
+ byte[] emptyZip = new byte[]{80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+ return diff(new ApplicationPackage(emptyZip), right);
+ }
+
+ public static byte[] diff(ApplicationPackage left, ApplicationPackage right) {
+ return diff(left, right, 10 << 20, 1 << 20, 10 << 20);
+ }
+
+ static byte[] diff(ApplicationPackage left, ApplicationPackage right, int maxFileSizeToDiff, int maxDiffSizePerFile, int maxTotalDiffSize) {
+ if (Arrays.equals(left.zippedContent(), right.zippedContent())) return "No diff\n".getBytes(StandardCharsets.UTF_8);
+
+ Map<String, ZipEntryWithContent> leftContents = readContents(left, maxFileSizeToDiff);
+ Map<String, ZipEntryWithContent> rightContents = readContents(right, maxFileSizeToDiff);
+
+ StringBuilder sb = new StringBuilder();
+ List<String> files = Stream.of(leftContents, rightContents)
+ .flatMap(contents -> contents.keySet().stream())
+ .sorted()
+ .distinct()
+ .collect(Collectors.toList());
+ for (String file : files) {
+ if (sb.length() > maxTotalDiffSize)
+ sb.append("--- ").append(file).append('\n').append("Diff skipped: Total diff size >").append(maxTotalDiffSize).append("B)\n\n");
+ else
+ diff(Optional.ofNullable(leftContents.get(file)), Optional.ofNullable(rightContents.get(file)), maxDiffSizePerFile)
+ .ifPresent(diff -> sb.append("--- ").append(file).append('\n').append(diff).append('\n'));
+ }
+
+ return (sb.length() == 0 ? "No diff\n" : sb.toString()).getBytes(StandardCharsets.UTF_8);
+ }
+
+ private static Optional<String> diff(Optional<ZipEntryWithContent> left, Optional<ZipEntryWithContent> right, int maxDiffSizePerFile) {
+ Optional<byte[]> leftContent = left.flatMap(ZipEntryWithContent::content);
+ Optional<byte[]> rightContent = right.flatMap(ZipEntryWithContent::content);
+ if (leftContent.isPresent() && rightContent.isPresent() && Arrays.equals(leftContent.get(), rightContent.get()))
+ return Optional.empty();
+
+ if (Stream.of(left, right).flatMap(Optional::stream).anyMatch(entry -> entry.content().isEmpty()))
+ return Optional.of(String.format("Diff skipped: File too large (%s -> %s)\n",
+ left.map(e -> e.size() + "B").orElse("new file"), right.map(e -> e.size() + "B").orElse("file deleted")));
+
+ if (Stream.of(leftContent, rightContent).flatMap(Optional::stream).anyMatch(c -> isBinary(c)))
+ return Optional.of(String.format("Diff skipped: File is binary (%s -> %s)\n",
+ left.map(e -> e.size() + "B").orElse("new file"), right.map(e -> e.size() + "B").orElse("file deleted")));
+
+ return LinesComparator.diff(
+ leftContent.map(c -> lines(c)).orElseGet(List::of),
+ rightContent.map(c -> lines(c)).orElseGet(List::of))
+ .map(diff -> diff.length() > maxDiffSizePerFile ? "Diff skipped: Diff too large (" + diff.length() + "B)\n" : diff);
+ }
+
+ private static Map<String, ZipEntryWithContent> readContents(ApplicationPackage app, int maxFileSizeToDiff) {
+ return new ZipStreamReader(new ByteArrayInputStream(app.zippedContent()), entry -> true, maxFileSizeToDiff, false).entries().stream()
+ .collect(Collectors.toMap(entry -> entry.zipEntry().getName(), e -> e));
+ }
+
+ private static List<String> lines(byte[] data) {
+ List<String> lines = new ArrayList<>(Math.min(16, data.length / 100));
+ try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(data), StandardCharsets.UTF_8))) {
+ String line;
+ while ((line = bufferedReader.readLine()) != null) {
+ lines.add(line);
+ }
+ } catch (IOException e) {
+ throw new UncheckedIOException(e);
+ }
+ return lines;
+ }
+
+ private static boolean isBinary(byte[] data) {
+ if (data.length == 0) return false;
+
+ int lengthToCheck = Math.min(data.length, 10000);
+ int ascii = 0;
+
+ for (int i = 0; i < lengthToCheck; i++) {
+ byte b = data[i];
+ if (b < 0x9) return true;
+
+ // TAB, newline/line feed, carriage return
+ if (b == 0x9 || b == 0xA || b == 0xD) ascii++;
+ else if (b >= 0x20 && b <= 0x7E) ascii++;
+ }
+
+ return (double) ascii / lengthToCheck < 0.95;
+ }
+}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationPackageValidator.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageValidator.java
index bb2d8b3c553..3dc95251eb8 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationPackageValidator.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageValidator.java
@@ -1,5 +1,5 @@
// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.application;
+package com.yahoo.vespa.hosted.controller.application.pkg;
import com.yahoo.config.application.api.DeploymentInstanceSpec;
import com.yahoo.config.application.api.DeploymentSpec;
@@ -14,6 +14,7 @@ import com.yahoo.config.provision.zone.ZoneApi;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.Application;
import com.yahoo.vespa.hosted.controller.Controller;
+import com.yahoo.vespa.hosted.controller.application.EndpointId;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentSteps;
import java.time.Instant;
@@ -80,7 +81,7 @@ public class ApplicationPackageValidator {
for (var endpoint : instance.endpoints()) {
var clouds = new HashSet<CloudName>();
for (var region : endpoint.regions()) {
- for (ZoneApi zone : controller.zoneRegistry().zones().all().in(region).zones()) {
+ for (ZoneApi zone : controller.zoneRegistry().zones().all().in(Environment.prod).in(region).zones()) {
clouds.add(zone.getCloudName());
}
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/LinesComparator.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/LinesComparator.java
new file mode 100644
index 00000000000..8b4791c6b1b
--- /dev/null
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/LinesComparator.java
@@ -0,0 +1,246 @@
+/*
+ * Line based variant of Apache commons-text StringComparator
+ * https://github.com/apache/commons-text/blob/3b1a0a5a47ee9fa2b36f99ca28e2e1d367a10a11/src/main/java/org/apache/commons/text/diff/StringsComparator.java
+ */
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.yahoo.vespa.hosted.controller.application.pkg;
+
+import com.yahoo.collections.Pair;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
+/**
+ * <p>
+ * It is guaranteed that the comparisons will always be done as
+ * {@code o1.equals(o2)} where {@code o1} belongs to the first
+ * sequence and {@code o2} belongs to the second sequence. This can
+ * be important if subclassing is used for some elements in the first
+ * sequence and the {@code equals} method is specialized.
+ * </p>
+ * <p>
+ * Comparison can be seen from two points of view: either as giving the smallest
+ * modification allowing to transform the first sequence into the second one, or
+ * as giving the longest sequence which is a subsequence of both initial
+ * sequences. The {@code equals} method is used to compare objects, so any
+ * object can be put into sequences. Modifications include deleting, inserting
+ * or keeping one object, starting from the beginning of the first sequence.
+ * </p>
+ * <p>
+ * This class implements the comparison algorithm, which is the very efficient
+ * algorithm from Eugene W. Myers
+ * <a href="http://www.cis.upenn.edu/~bcpierce/courses/dd/papers/diff.ps">
+ * An O(ND) Difference Algorithm and Its Variations</a>.
+ */
+public class LinesComparator {
+
+ private final List<String> left;
+ private final List<String> right;
+ private final int[] vDown;
+ private final int[] vUp;
+
+ private LinesComparator(List<String> left, List<String> right) {
+ this.left = left;
+ this.right = right;
+
+ int size = left.size() + right.size() + 2;
+ vDown = new int[size];
+ vUp = new int[size];
+ }
+
+ private void buildScript(int start1, int end1, int start2, int end2, List<Pair<LineOperation, String>> result) {
+ Snake middle = getMiddleSnake(start1, end1, start2, end2);
+
+ if (middle == null
+ || middle.start == end1 && middle.diag == end1 - end2
+ || middle.end == start1 && middle.diag == start1 - start2) {
+
+ int i = start1;
+ int j = start2;
+ while (i < end1 || j < end2) {
+ if (i < end1 && j < end2 && left.get(i).equals(right.get(j))) {
+ result.add(new Pair<>(LineOperation.keep, left.get(i)));
+ ++i;
+ ++j;
+ } else {
+ if (end1 - start1 > end2 - start2) {
+ result.add(new Pair<>(LineOperation.delete, left.get(i)));
+ ++i;
+ } else {
+ result.add(new Pair<>(LineOperation.insert, right.get(j)));
+ ++j;
+ }
+ }
+ }
+
+ } else {
+ buildScript(start1, middle.start, start2, middle.start - middle.diag, result);
+ for (int i = middle.start; i < middle.end; ++i) {
+ result.add(new Pair<>(LineOperation.keep, left.get(i)));
+ }
+ buildScript(middle.end, end1, middle.end - middle.diag, end2, result);
+ }
+ }
+
+ private Snake buildSnake(final int start, final int diag, final int end1, final int end2) {
+ int end = start;
+ while (end - diag < end2 && end < end1 && left.get(end).equals(right.get(end - diag))) {
+ ++end;
+ }
+ return new Snake(start, end, diag);
+ }
+
+ private Snake getMiddleSnake(final int start1, final int end1, final int start2, final int end2) {
+ final int m = end1 - start1;
+ final int n = end2 - start2;
+ if (m == 0 || n == 0) {
+ return null;
+ }
+
+ final int delta = m - n;
+ final int sum = n + m;
+ final int offset = (sum % 2 == 0 ? sum : sum + 1) / 2;
+ vDown[1 + offset] = start1;
+ vUp[1 + offset] = end1 + 1;
+
+ for (int d = 0; d <= offset; ++d) {
+ // Down
+ for (int k = -d; k <= d; k += 2) {
+ // First step
+
+ final int i = k + offset;
+ if (k == -d || k != d && vDown[i - 1] < vDown[i + 1]) {
+ vDown[i] = vDown[i + 1];
+ } else {
+ vDown[i] = vDown[i - 1] + 1;
+ }
+
+ int x = vDown[i];
+ int y = x - start1 + start2 - k;
+
+ while (x < end1 && y < end2 && left.get(x).equals(right.get(y))) {
+ vDown[i] = ++x;
+ ++y;
+ }
+ // Second step
+ if (delta % 2 != 0 && delta - d <= k && k <= delta + d) {
+ if (vUp[i - delta] <= vDown[i]) { // NOPMD
+ return buildSnake(vUp[i - delta], k + start1 - start2, end1, end2);
+ }
+ }
+ }
+
+ // Up
+ for (int k = delta - d; k <= delta + d; k += 2) {
+ // First step
+ final int i = k + offset - delta;
+ if (k == delta - d || k != delta + d && vUp[i + 1] <= vUp[i - 1]) {
+ vUp[i] = vUp[i + 1] - 1;
+ } else {
+ vUp[i] = vUp[i - 1];
+ }
+
+ int x = vUp[i] - 1;
+ int y = x - start1 + start2 - k;
+ while (x >= start1 && y >= start2 && left.get(x).equals(right.get(y))) {
+ vUp[i] = x--;
+ y--;
+ }
+ // Second step
+ if (delta % 2 == 0 && -d <= k && k <= d) {
+ if (vUp[i] <= vDown[i + delta]) { // NOPMD
+ return buildSnake(vUp[i], k + start1 - start2, end1, end2);
+ }
+ }
+ }
+ }
+
+ // this should not happen
+ throw new RuntimeException("Internal Error");
+ }
+
+ private static class Snake {
+ private final int start;
+ private final int end;
+ private final int diag;
+
+ private Snake(int start, int end, int diag) {
+ this.start = start;
+ this.end = end;
+ this.diag = diag;
+ }
+ }
+
+ private enum LineOperation {
+ keep(" "), delete("- "), insert("+ ");
+ private final String prefix;
+ LineOperation(String prefix) {
+ this.prefix = prefix;
+ }
+ }
+
+ /** @return line-based diff in unified format. Empty contents are identical. */
+ public static Optional<String> diff(List<String> left, List<String> right) {
+ List<Pair<LineOperation, String>> changes = new ArrayList<>(Math.max(left.size(), right.size()));
+ new LinesComparator(left, right).buildScript(0, left.size(), 0, right.size(), changes);
+
+ // After we have a list of keep, delete, insert for each line from left and right input, generate a unified
+ // diff by printing all delete and insert operations with contextLines of keep lines before and after.
+ // Make sure the change windows are non-overlapping by continuously growing the window
+ int contextLines = 3;
+ List<int[]> changeWindows = new ArrayList<>();
+ int[] last = null;
+ for (int i = 0, leftIndex = 0, rightIndex = 0; i < changes.size(); i++) {
+ if (changes.get(i).getFirst() == LineOperation.keep) {
+ leftIndex++;
+ rightIndex++;
+ continue;
+ }
+
+ // We found a new change and it is too far away from the previous change to be combined into the same window
+ if (last == null || i - last[1] > contextLines) {
+ last = new int[]{Math.max(i - contextLines, 0), Math.min(i + contextLines + 1, changes.size()), Math.max(leftIndex - contextLines, 0), Math.max(rightIndex - contextLines, 0)};
+ changeWindows.add(last);
+ } else // otherwise, extend the previous change window
+ last[1] = Math.min(i + contextLines + 1, changes.size());
+
+ if (changes.get(i).getFirst() == LineOperation.delete) leftIndex++;
+ else rightIndex++;
+ }
+ if (changeWindows.isEmpty()) return Optional.empty();
+
+ StringBuilder sb = new StringBuilder();
+ for (int[] changeWindow: changeWindows) {
+ int start = changeWindow[0], end = changeWindow[1], leftIndex = changeWindow[2], rightIndex = changeWindow[3];
+ Map<LineOperation, Long> counts = IntStream.range(start, end)
+ .mapToObj(i -> changes.get(i).getFirst())
+ .collect(Collectors.groupingBy(i -> i, Collectors.counting()));
+ sb.append("@@ -").append(leftIndex + 1).append(',').append(end - start - counts.getOrDefault(LineOperation.insert, 0L))
+ .append(" +").append(rightIndex + 1).append(',').append(end - start - counts.getOrDefault(LineOperation.delete, 0L)).append(" @@\n");
+ for (int i = start; i < end; i++)
+ sb.append(changes.get(i).getFirst().prefix).append(changes.get(i).getSecond()).append('\n');
+ }
+ return Optional.of(sb.toString());
+ }
+}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ZipStreamReader.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ZipStreamReader.java
index 4f01df21430..7ddd0af7a7a 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ZipStreamReader.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ZipStreamReader.java
@@ -1,5 +1,5 @@
// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.application;
+package com.yahoo.vespa.hosted.controller.application.pkg;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -10,6 +10,7 @@ import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.Optional;
import java.util.function.Predicate;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
@@ -23,16 +24,15 @@ public class ZipStreamReader {
private final List<ZipEntryWithContent> entries = new ArrayList<>();
private final int maxEntrySizeInBytes;
- public ZipStreamReader(InputStream input, Predicate<String> entryNameMatcher, int maxEntrySizeInBytes) {
+ public ZipStreamReader(InputStream input, Predicate<String> entryNameMatcher, int maxEntrySizeInBytes, boolean throwIfEntryExceedsMaxSize) {
this.maxEntrySizeInBytes = maxEntrySizeInBytes;
try (ZipInputStream zipInput = new ZipInputStream(input)) {
ZipEntry zipEntry;
while (null != (zipEntry = zipInput.getNextEntry())) {
if (!entryNameMatcher.test(requireName(zipEntry.getName()))) continue;
- entries.add(new ZipEntryWithContent(zipEntry, readContent(zipInput)));
+ entries.add(readContent(zipEntry, zipInput, throwIfEntryExceedsMaxSize));
}
-
} catch (IOException e) {
throw new UncheckedIOException("IO error reading zip content", e);
}
@@ -59,7 +59,7 @@ public class ZipStreamReader {
}
}
- private byte[] readContent(ZipInputStream zipInput) {
+ private ZipEntryWithContent readContent(ZipEntry zipEntry, ZipInputStream zipInput, boolean throwIfEntryExceedsMaxSize) {
try (ByteArrayOutputStream bis = new ByteArrayOutputStream()) {
byte[] buffer = new byte[2048];
int read;
@@ -67,12 +67,15 @@ public class ZipStreamReader {
while ( -1 != (read = zipInput.read(buffer))) {
size += read;
if (size > maxEntrySizeInBytes) {
- throw new IllegalArgumentException("Entry in zip content exceeded size limit of " +
- maxEntrySizeInBytes + " bytes");
- }
- bis.write(buffer, 0, read);
+ if (throwIfEntryExceedsMaxSize) throw new IllegalArgumentException(
+ "Entry in zip content exceeded size limit of " + maxEntrySizeInBytes + " bytes");
+ } else bis.write(buffer, 0, read);
}
- return bis.toByteArray();
+
+ boolean hasContent = size <= maxEntrySizeInBytes;
+ return new ZipEntryWithContent(zipEntry,
+ Optional.of(bis).filter(__ -> hasContent).map(ByteArrayOutputStream::toByteArray),
+ size);
} catch (IOException e) {
throw new UncheckedIOException("Failed reading from zipped content", e);
}
@@ -96,16 +99,19 @@ public class ZipStreamReader {
public static class ZipEntryWithContent {
private final ZipEntry zipEntry;
- private final byte[] content;
+ private final Optional<byte[]> content;
+ private final long size;
- public ZipEntryWithContent(ZipEntry zipEntry, byte[] content) {
+ public ZipEntryWithContent(ZipEntry zipEntry, Optional<byte[]> content, long size) {
this.zipEntry = zipEntry;
this.content = content;
+ this.size = size;
}
public ZipEntry zipEntry() { return zipEntry; }
- public byte[] content() { return content; }
-
+ public byte[] contentOrThrow() { return content.orElseThrow(); }
+ public Optional<byte[]> content() { return content; }
+ public long size() { return size; }
}
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/archive/CuratorArchiveBucketDb.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/archive/CuratorArchiveBucketDb.java
index 0f5c2123325..a7555307a59 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/archive/CuratorArchiveBucketDb.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/archive/CuratorArchiveBucketDb.java
@@ -1,9 +1,13 @@
// Copyright 2021 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.archive;
+import com.yahoo.config.provision.SystemName;
import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.text.Text;
+import com.yahoo.vespa.flags.BooleanFlag;
+import com.yahoo.vespa.flags.FetchVector;
+import com.yahoo.vespa.flags.Flags;
import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.api.integration.archive.ArchiveBucket;
import com.yahoo.vespa.hosted.controller.api.integration.archive.ArchiveService;
@@ -40,22 +44,32 @@ public class CuratorArchiveBucketDb {
private final ArchiveService archiveService;
private final CuratorDb curatorDb;
- private final boolean enabled;
+ private final BooleanFlag enableFlag;
+ private final SystemName system;
public CuratorArchiveBucketDb(Controller controller) {
this.archiveService = controller.serviceRegistry().archiveService();
this.curatorDb = controller.curator();
- this.enabled = controller.zoneRegistry().system().isPublic();
+ this.enableFlag = Flags.ENABLE_ONPREM_TENANT_S3_ARCHIVE.bindTo(controller.flagSource());
+ this.system = controller.zoneRegistry().system();
}
public Optional<URI> archiveUriFor(ZoneId zoneId, TenantName tenant) {
- if (enabled) {
+ if (enabled(zoneId, tenant)) {
return Optional.of(URI.create(Text.format("s3://%s/%s/", findOrAssignBucket(zoneId, tenant), tenant.value())));
} else {
return Optional.empty();
}
}
+ private boolean enabled(ZoneId zone, TenantName tenant) {
+ return system.isPublic() ||
+ enableFlag
+ .with(FetchVector.Dimension.ZONE_ID, zone.value())
+ .with(FetchVector.Dimension.TENANT_ID, tenant.value())
+ .value();
+ }
+
private String findOrAssignBucket(ZoneId zoneId, TenantName tenant) {
return getBucketNameFromCache(zoneId, tenant)
.or(() -> findAndUpdateArchiveUriCache(zoneId, tenant, buckets(zoneId)))
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/athenz/HostedAthenzIdentities.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/athenz/HostedAthenzIdentities.java
index 08dbdff13db..ef2f24bbf6d 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/athenz/HostedAthenzIdentities.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/athenz/HostedAthenzIdentities.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.athenz;
import com.yahoo.vespa.athenz.api.AthenzDomain;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/athenz/config/package-info.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/athenz/config/package-info.java
index f3f2acf1e01..02df7e5c2cf 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/athenz/config/package-info.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/athenz/config/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Required for using {@link com.yahoo.vespa.hosted.controller.athenz.config.AthenzConfig} outside controller-server module.
*
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/athenz/impl/AthenzClientFactoryImpl.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/athenz/impl/AthenzClientFactoryImpl.java
index 8604e5e48fe..6b93229dffe 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/athenz/impl/AthenzClientFactoryImpl.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/athenz/impl/AthenzClientFactoryImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.athenz.impl;
import com.google.inject.Inject;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/athenz/impl/AthenzFacade.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/athenz/impl/AthenzFacade.java
index 8cc02b5bf69..d116ef3333c 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/athenz/impl/AthenzFacade.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/athenz/impl/AthenzFacade.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.athenz.impl;
import com.google.common.cache.CacheBuilder;
@@ -164,9 +164,20 @@ public class AthenzFacade implements AccessControl {
@Override
public void deleteTenant(TenantName tenant, Credentials credentials) {
AthenzCredentials athenzCredentials = (AthenzCredentials) credentials;
-
- log("deleteTenancy(tenantDomain=%s, service=%s)", athenzCredentials.domain(), service);
- zmsClient.deleteTenancy(athenzCredentials.domain(), service, athenzCredentials.identityToken(), athenzCredentials.accessToken());
+ AthenzDomain tenantDomain = athenzCredentials.domain();
+ log("deleteTenancy(tenantDomain=%s, service=%s)", tenantDomain, service);
+ try {
+ zmsClient.deleteTenancy(tenantDomain, service, athenzCredentials.identityToken(), athenzCredentials.accessToken());
+ } catch (ZmsClientException e) {
+ if (e.getErrorCode() == 404) {
+ log.log(Level.WARNING,
+ "Failed to cleanup tenant " + tenant.value() + " with domain '" + tenantDomain.getName()
+ + "' in Athenz due to non-existing tenant domain",
+ e);
+ } else {
+ throw e;
+ }
+ }
}
@Override
@@ -196,8 +207,19 @@ public class AthenzFacade implements AccessControl {
AthenzCredentials athenzCredentials = (AthenzCredentials) credentials;
log("deleteProviderResourceGroup(tenantDomain=%s, providerDomain=%s, service=%s, resourceGroup=%s)",
athenzCredentials.domain(), service.getDomain().getName(), service.getName(), id.application());
- zmsClient.deleteProviderResourceGroup(athenzCredentials.domain(), service, id.application().value(),
- athenzCredentials.identityToken(), athenzCredentials.accessToken());
+ try {
+ zmsClient.deleteProviderResourceGroup(athenzCredentials.domain(), service, id.application().value(),
+ athenzCredentials.identityToken(), athenzCredentials.accessToken());
+ } catch (ZmsClientException e) {
+ if (e.getErrorCode() == 404) {
+ log.log(Level.WARNING,
+ "Failed to cleanup application '" + id.serialized()
+ + "' in Athenz due to non-existing tenant domain or resource group",
+ e);
+ } else {
+ throw e;
+ }
+ }
}
/**
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/certificate/EndpointCertificates.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/certificate/EndpointCertificates.java
index 1447e1809a4..684648ed70a 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/certificate/EndpointCertificates.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/certificate/EndpointCertificates.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.certificate;
import com.yahoo.config.application.api.DeploymentInstanceSpec;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/concurrent/Once.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/concurrent/Once.java
index 81ddd8d2d70..dbcd8bf1459 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/concurrent/Once.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/concurrent/Once.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.concurrent;
import java.time.Duration;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentSteps.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentSteps.java
index 61135613e98..7ab895654f3 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentSteps.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentSteps.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
import com.yahoo.config.application.api.DeploymentInstanceSpec;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java
index 4e6df1921b6..a34217d2226 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
import com.yahoo.config.application.api.DeploymentInstanceSpec;
@@ -105,16 +105,6 @@ public class DeploymentTrigger {
instance = instance.withChange(instance.change().with(outstanding.application().get()));
return instance.withChange(remainingChange(instance, status));
});
-
- // Abort irrelevant, running jobs to get new application out faster.
- Map<JobId, List<Versions>> newJobsToRun = jobs.deploymentStatus(application.get()).jobsToRun();
- for (Run run : jobs.active(application.get().id().instance(instanceName))) {
- if ( ! run.id().type().environment().isManuallyDeployed()
- && newJobsToRun.getOrDefault(run.id().job(), List.of()).stream()
- .noneMatch(versions -> versions.targetsMatch(run.versions())
- && versions.sourcesMatchIfPresent(run.versions())))
- jobs.abort(run.id());
- }
}
}
applications().store(application);
@@ -190,8 +180,11 @@ public class DeploymentTrigger {
public List<JobId> forceTrigger(ApplicationId applicationId, JobType jobType, String user, boolean requireTests) {
Application application = applications().requireApplication(TenantAndApplicationId.from(applicationId));
Instance instance = application.require(applicationId.instance());
- DeploymentStatus status = jobs.deploymentStatus(application);
JobId job = new JobId(instance.id(), jobType);
+ if (job.type().environment().isManuallyDeployed())
+ return forceTriggerManualJob(job);
+
+ DeploymentStatus status = jobs.deploymentStatus(application);
Versions versions = Versions.from(instance.change(), application, status.deploymentFor(job), controller.readSystemVersion());
Map<JobId, List<Versions>> jobs = status.testJobs(Map.of(job, versions));
if (jobs.isEmpty() || ! requireTests)
@@ -202,6 +195,16 @@ public class DeploymentTrigger {
return List.copyOf(jobs.keySet());
}
+ private List<JobId> forceTriggerManualJob(JobId job) {
+ Run last = jobs.last(job).orElseThrow(() -> new IllegalArgumentException(job + " has never been run"));
+ Versions target = new Versions(controller.readSystemVersion(),
+ last.versions().targetApplication(),
+ Optional.of(last.versions().targetPlatform()),
+ Optional.of(last.versions().targetApplication()));
+ jobs.start(job.application(), job.type(), target, true);
+ return List.of(job);
+ }
+
/** Retrigger job. If the job is already running, it will be canceled, and retrigger enqueued. */
public Optional<JobId> reTriggerOrAddToQueue(DeploymentId deployment) {
JobType jobType = JobType.from(controller.system(), deployment.zoneId())
@@ -289,10 +292,6 @@ public class DeploymentTrigger {
return controller.applications();
}
- private Optional<Deployment> deploymentFor(Instance instance, JobType jobType) {
- return Optional.ofNullable(instance.deployments().get(jobType.zone(controller.system())));
- }
-
// ---------- Ready job computation ----------
/** Returns the set of all jobs which have changes to propagate from the upstream steps. */
@@ -307,24 +306,22 @@ public class DeploymentTrigger {
.collect(toList());
}
- /**
- * Finds the next step to trigger for the given application, if any, and returns these as a list.
- */
+ /** Finds the next step to trigger for the given application, if any, and returns these as a list. */
private List<Job> computeReadyJobs(DeploymentStatus status) {
List<Job> jobs = new ArrayList<>();
status.jobsToRun().forEach((job, versionsList) -> {
- for (Versions versions : versionsList)
- status.jobSteps().get(job).readyAt(status.application().require(job.application().instance()).change())
- .filter(readyAt -> ! clock.instant().isBefore(readyAt))
- .filter(__ -> ! status.jobs().get(job).get().isRunning())
- .filter(__ -> ! (job.type().isProduction() && isUnhealthyInAnotherZone(status.application(), job)))
- .ifPresent(readyAt -> {
- jobs.add(deploymentJob(status.application().require(job.application().instance()),
- versions,
- job.type(),
- status.instanceJobs(job.application().instance()).get(job.type()),
- readyAt));
- });
+ for (Versions versions : versionsList)
+ status.jobSteps().get(job).readyAt(status.application().require(job.application().instance()).change())
+ .filter(readyAt -> ! clock.instant().isBefore(readyAt))
+ .filter(__ -> ! (job.type().isProduction() && isUnhealthyInAnotherZone(status.application(), job)))
+ .filter(__ -> abortIfRunning(versionsList, status.jobs().get(job).get())) // Abort and trigger this later if running with outdated parameters.
+ .ifPresent(readyAt -> {
+ jobs.add(deploymentJob(status.application().require(job.application().instance()),
+ versions,
+ job.type(),
+ status.instanceJobs(job.application().instance()).get(job.type()),
+ readyAt));
+ });
});
return Collections.unmodifiableList(jobs);
}
@@ -339,71 +336,17 @@ public class DeploymentTrigger {
return false;
}
- /** Returns whether the given job can trigger at the given instant */
- public boolean triggerAt(Instant instant, JobType job, JobStatus jobStatus, Versions versions, Instance instance, DeploymentSpec deploymentSpec) {
- if (instance.jobPause(job).map(until -> until.isAfter(clock.instant())).orElse(false)) return false;
- if (jobStatus.lastTriggered().isEmpty()) return true;
- if (jobStatus.isSuccess()) return true; // Success
- if (jobStatus.lastCompleted().isEmpty()) return true; // Never completed
- if (jobStatus.firstFailing().isEmpty()) return true; // Should not happen as firstFailing should be set for an unsuccessful job
- if ( ! versions.targetsMatch(jobStatus.lastCompleted().get().versions())) return true; // Always trigger as targets have changed
- if (deploymentSpec.requireInstance(instance.name()).upgradePolicy() == DeploymentSpec.UpgradePolicy.canary) return true; // Don't throttle canaries
-
- Instant firstFailing = jobStatus.firstFailing().get().end().get();
- Instant lastCompleted = jobStatus.lastCompleted().get().end().get();
-
- // Retry all errors immediately for 1 minute
- if (firstFailing.isAfter(instant.minus(Duration.ofMinutes(1)))) return true;
-
- // Retry out of capacity errors in test environments every minute
- if (job.environment().isTest() && jobStatus.isOutOfCapacity()) {
- return lastCompleted.isBefore(instant.minus(Duration.ofMinutes(1)));
- }
+ /** Returns whether the job is not running, and also aborts it if it's running with outdated versions. */
+ private boolean abortIfRunning(List<Versions> versionsList, JobStatus status) {
+ if ( ! status.isRunning())
+ return true;
- // Retry other errors
- if (firstFailing.isAfter(instant.minus(Duration.ofHours(1)))) { // If we failed within the last hour ...
- return lastCompleted.isBefore(instant.minus(Duration.ofMinutes(10))); // ... retry every 10 minutes
- }
- return lastCompleted.isBefore(instant.minus(Duration.ofHours(2))); // Retry at most every 2 hours
- }
-
- // ---------- Completion logic ----------
+ Run last = status.lastTriggered().get();
+ if (versionsList.stream().noneMatch(versions -> versions.targetsMatch(last.versions())
+ && versions.sourcesMatchIfPresent(last.versions())))
+ controller.jobController().abort(last.id());
- /**
- * Returns whether the given change is complete for the given application for the given job.
- *
- * Any job is complete if the given change is already successful on that job.
- * A production job is also considered complete if its current change is strictly dominated by what
- * is already deployed in its zone, i.e., no parts of the change are upgrades, and the full current
- * change for the application downgrades the deployment, which is an acknowledgement that the deployed
- * version is broken somehow, such that the job may be locked in failure until a new version is released.
- *
- * Additionally, if the application is pinned to a Vespa version, and the given change has a (this) platform,
- * the deployment for the job must be on the pinned version.
- */
- public boolean isComplete(Change change, Change fullChange, Instance instance, JobType jobType,
- JobStatus status) {
- Optional<Deployment> existingDeployment = deploymentFor(instance, jobType);
- if ( change.isPinned()
- && change.platform().isPresent()
- && ! existingDeployment.map(Deployment::version).equals(change.platform()))
- return false;
-
- return status.lastSuccess()
- .map(run -> change.platform().map(run.versions().targetPlatform()::equals).orElse(true)
- && change.application().map(run.versions().targetApplication()::equals).orElse(true))
- .orElse(false)
- || jobType.isProduction()
- && existingDeployment.map(deployment -> ! isUpgrade(change, deployment) && isDowngrade(fullChange, deployment))
- .orElse(false);
- }
-
- private static boolean isUpgrade(Change change, Deployment deployment) {
- return change.upgrades(deployment.version()) || change.upgrades(deployment.applicationVersion());
- }
-
- private static boolean isDowngrade(Change change, Deployment deployment) {
- return change.downgrades(deployment.version()) || change.downgrades(deployment.applicationVersion());
+ return false;
}
// ---------- Change management o_O ----------
@@ -411,6 +354,8 @@ public class DeploymentTrigger {
private boolean acceptNewApplicationVersion(DeploymentStatus status, InstanceName instance) {
if (status.application().require(instance).change().application().isPresent()) return true; // Replacing a previous application change is ok.
if (status.hasFailures()) return true; // Allow changes to fix upgrade problems.
+ if (status.application().deploymentSpec().instance(instance) // Leading upgrade allows app change to join in.
+ .map(spec -> spec.upgradeRollout() == DeploymentSpec.UpgradeRollout.leading).orElse(false)) return true;
return status.application().require(instance).change().platform().isEmpty();
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java
index c49e3c88df3..ee955fa8ff8 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java
@@ -1,7 +1,6 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
-import com.google.common.collect.ImmutableSet;
import com.yahoo.component.Version;
import com.yahoo.config.application.api.DeploymentInstanceSpec;
import com.yahoo.config.application.api.DeploymentSpec;
@@ -31,6 +30,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.LogEntry;
import com.yahoo.vespa.hosted.controller.api.integration.certificates.EndpointCertificateException;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.ConfigServerException;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.PrepareResponse;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.ServiceConvergence;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationVersion;
@@ -41,7 +41,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.deployment.TesterId;
import com.yahoo.vespa.hosted.controller.api.integration.organization.DeploymentFailureMails;
import com.yahoo.vespa.hosted.controller.api.integration.organization.Mail;
import com.yahoo.vespa.hosted.controller.application.ActivateResult;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.Deployment;
import com.yahoo.vespa.hosted.controller.application.Endpoint;
import com.yahoo.vespa.hosted.controller.application.TenantAndApplicationId;
@@ -103,6 +103,7 @@ import static java.util.logging.Level.INFO;
import static java.util.logging.Level.WARNING;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;
+import static java.util.stream.Collectors.toSet;
/**
* Runs steps of a deployment job against its provided controller.
@@ -313,10 +314,14 @@ public class InternalStepRunner implements StepRunner {
return Optional.empty();
}
List<Node> nodes = controller.serviceRegistry().configServer().nodeRepository().list(id.type().zone(controller.system()),
- id.application(),
- Set.of(active));
+ NodeFilter.all()
+ .applications(id.application())
+ .states(active));
+
+ Set<HostName> parentHostnames = nodes.stream().map(node -> node.parentHostname().get()).collect(toSet());
List<Node> parents = controller.serviceRegistry().configServer().nodeRepository().list(id.type().zone(controller.system()),
- nodes.stream().map(node -> node.parentHostname().get()).collect(toList()));
+ NodeFilter.all()
+ .hostnames(parentHostnames));
NodeList nodeList = NodeList.of(nodes, parents, services.get());
boolean firstTick = run.convergenceSummary().isEmpty();
if (firstTick) { // Run the first time (for each convergence step).
@@ -419,10 +424,13 @@ public class InternalStepRunner implements StepRunner {
: Optional.empty();
}
List<Node> nodes = controller.serviceRegistry().configServer().nodeRepository().list(zone,
- testerId,
- ImmutableSet.of(active, reserved));
+ NodeFilter.all()
+ .applications(testerId)
+ .states(active, reserved));
+ Set<HostName> parentHostnames = nodes.stream().map(node -> node.parentHostname().get()).collect(toSet());
List<Node> parents = controller.serviceRegistry().configServer().nodeRepository().list(zone,
- nodes.stream().map(node -> node.parentHostname().get()).collect(toList()));
+ NodeFilter.all()
+ .hostnames(parentHostnames));
NodeList nodeList = NodeList.of(nodes, parents, services.get());
logger.log(nodeList.asList().stream()
.flatMap(node -> nodeDetails(node, false))
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java
index b622fc0bd75..d3615c942b9 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java
@@ -12,7 +12,6 @@ import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.Instance;
import com.yahoo.vespa.hosted.controller.api.identifiers.DeploymentId;
import com.yahoo.vespa.hosted.controller.api.integration.LogEntry;
-import com.yahoo.vespa.hosted.controller.api.integration.configserver.NotFoundException;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationVersion;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobId;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
@@ -22,13 +21,13 @@ import com.yahoo.vespa.hosted.controller.api.integration.deployment.TestReport;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.TesterCloud;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.TesterId;
import com.yahoo.vespa.hosted.controller.application.ApplicationList;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.Deployment;
import com.yahoo.vespa.hosted.controller.application.TenantAndApplicationId;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackageDiff;
import com.yahoo.vespa.hosted.controller.persistence.BufferedLogStore;
import com.yahoo.vespa.hosted.controller.persistence.CuratorDb;
-import java.net.URI;
import java.security.cert.X509Certificate;
import java.time.Duration;
import java.time.Instant;
@@ -48,7 +47,6 @@ import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
import java.util.function.UnaryOperator;
import java.util.logging.Level;
-import java.util.stream.Collectors;
import java.util.stream.Stream;
import static com.google.common.collect.ImmutableList.copyOf;
@@ -369,7 +367,8 @@ public class JobController {
List<Lock> locks = new ArrayList<>();
try {
// Ensure no step is still running before we finish the run — report depends transitively on all the other steps.
- for (Step step : report.allPrerequisites(run(id).get().steps().keySet()))
+ Run unlockedRun = run(id).get();
+ for (Step step : report.allPrerequisites(unlockedRun.steps().keySet()))
locks.add(curator.lock(id.application(), id.type(), step));
locked(id, run -> { // Store the modified run after it has been written to history, in case the latter fails.
@@ -400,6 +399,20 @@ public class JobController {
metric.jobFinished(run.id().job(), finishedRun.status());
return finishedRun;
});
+
+ DeploymentId deploymentId = new DeploymentId(unlockedRun.id().application(), unlockedRun.id().job().type().zone(controller.system()));
+ (unlockedRun.versions().targetApplication().isDeployedDirectly() ?
+ Stream.of(unlockedRun.id().type()) :
+ JobType.allIn(controller.system()).stream().filter(jobType -> !jobType.environment().isManuallyDeployed()))
+ .flatMap(jobType -> controller.jobController().runs(unlockedRun.id().application(), jobType).values().stream())
+ .mapToLong(run -> run.versions().targetApplication().buildNumber().orElse(Integer.MAX_VALUE))
+ .min()
+ .ifPresent(oldestBuild -> {
+ if (unlockedRun.versions().targetApplication().isDeployedDirectly())
+ controller.applications().applicationStore().pruneDevDiffs(deploymentId, oldestBuild);
+ else
+ controller.applications().applicationStore().pruneDiffs(deploymentId.applicationId().tenant(), deploymentId.applicationId().application(), oldestBuild);
+ });
}
finally {
for (Lock lock : locks)
@@ -425,12 +438,19 @@ public class JobController {
applicationPackage.compileVersion(),
applicationPackage.buildTime(),
sourceUrl,
- revision.map(SourceRevision::commit)));
+ revision.map(SourceRevision::commit),
+ false));
+ byte[] diff = application.get().latestVersion()
+ .map(v -> v.buildNumber().getAsLong())
+ .flatMap(prevBuild -> controller.applications().applicationStore().find(id.tenant(), id.application(), prevBuild))
+ .map(prevApplication -> ApplicationPackageDiff.diff(new ApplicationPackage(prevApplication), applicationPackage))
+ .orElseGet(() -> ApplicationPackageDiff.diffAgainstEmpty(applicationPackage));
controller.applications().applicationStore().put(id.tenant(),
id.application(),
version.get(),
- applicationPackage.zippedContent());
+ applicationPackage.zippedContent(),
+ diff);
controller.applications().applicationStore().putTester(id.tenant(),
id.application(),
version.get(),
@@ -471,8 +491,14 @@ public class JobController {
});
}
+
/** Stores the given package and starts a deployment of it, after aborting any such ongoing deployment. */
public void deploy(ApplicationId id, JobType type, Optional<Version> platform, ApplicationPackage applicationPackage) {
+ deploy(id, type, platform, applicationPackage, false);
+ }
+
+ /** Stores the given package and starts a deployment of it, after aborting any such ongoing deployment.*/
+ public void deploy(ApplicationId id, JobType type, Optional<Version> platform, ApplicationPackage applicationPackage, boolean dryRun) {
controller.applications().lockApplicationOrThrow(TenantAndApplicationId.from(id), application -> {
if ( ! application.get().instances().containsKey(id.instance()))
application = controller.applications().withNewInstance(application, id);
@@ -480,20 +506,32 @@ public class JobController {
controller.applications().store(application);
});
- last(id, type).filter(run -> ! run.hasEnded()).ifPresent(run -> abortAndWait(run.id()));
+ DeploymentId deploymentId = new DeploymentId(id, type.zone(controller.system()));
+ Optional<Run> lastRun = last(id, type);
+ lastRun.filter(run -> ! run.hasEnded()).ifPresent(run -> abortAndWait(run.id()));
+
+ long build = 1 + lastRun.map(run -> run.versions().targetApplication().buildNumber().orElse(0)).orElse(0L);
+ ApplicationVersion version = ApplicationVersion.from(Optional.empty(), build, Optional.empty(), Optional.empty(),
+ Optional.empty(), Optional.empty(), Optional.empty(), true);
+
+ byte[] diff = lastRun.map(run -> run.versions().targetApplication())
+ .map(prevVersion -> ApplicationPackageDiff.diff(new ApplicationPackage(controller.applications().applicationStore().get(deploymentId, prevVersion)), applicationPackage))
+ .orElseGet(() -> ApplicationPackageDiff.diffAgainstEmpty(applicationPackage));
controller.applications().lockApplicationOrThrow(TenantAndApplicationId.from(id), application -> {
- controller.applications().applicationStore().putDev(id, type.zone(controller.system()), applicationPackage.zippedContent());
+ controller.applications().applicationStore().putDev(deploymentId, version, applicationPackage.zippedContent(), diff);
start(id,
type,
new Versions(platform.orElse(applicationPackage.deploymentSpec().majorVersion()
.flatMap(controller.applications()::lastCompatibleVersion)
+ .or(() -> lastRun.map(run -> run.versions().targetPlatform())
+ .filter(controller.readVersionStatus()::isActive))
.orElseGet(controller::readSystemVersion)),
- ApplicationVersion.unknown,
- Optional.empty(),
- Optional.empty()),
+ version,
+ lastRun.map(run -> run.versions().targetPlatform()),
+ lastRun.map(run -> run.versions().targetApplication())),
false,
- JobProfile.development);
+ dryRun ? JobProfile.developmentDryRun : JobProfile.development);
});
locked(id, type, __ -> {
@@ -558,7 +596,7 @@ public class JobController {
application.get().productionDeployments().values().stream()
.flatMap(List::stream)
.map(Deployment::applicationVersion)
- .filter(version -> ! version.isUnknown())
+ .filter(version -> ! version.isUnknown() && ! version.isDeployedDirectly())
.min(Comparator.comparingLong(applicationVersion -> applicationVersion.buildNumber().getAsLong()))
.ifPresent(oldestDeployed -> {
controller.applications().applicationStore().prune(id.tenant(), id.application(), oldestDeployed);
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobProfile.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobProfile.java
index 1c1d60a2cf0..5f9207953ca 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobProfile.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobProfile.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
@@ -68,7 +68,9 @@ public enum JobProfile {
development(EnumSet.of(deployReal,
installReal,
- copyVespaLogs));
+ copyVespaLogs)),
+
+ developmentDryRun(EnumSet.of(deployReal));
private final Set<Step> steps;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/LockedStep.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/LockedStep.java
index 966c9a2dbc3..d46516582be 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/LockedStep.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/LockedStep.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
import com.yahoo.vespa.curator.Lock;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/NodeList.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/NodeList.java
index 3c3cbfe2b2a..12c226241e1 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/NodeList.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/NodeList.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
import com.yahoo.collections.AbstractFilteringList;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/NodeWithServices.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/NodeWithServices.java
index 9326035d4c7..bd589af190e 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/NodeWithServices.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/NodeWithServices.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
import com.yahoo.component.Version;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RetriggerEntry.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RetriggerEntry.java
index 9c16d80313e..c8e851fc375 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RetriggerEntry.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RetriggerEntry.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RetriggerEntrySerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RetriggerEntrySerializer.java
index 6d9206d42b6..6f456d2e217 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RetriggerEntrySerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RetriggerEntrySerializer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/Run.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/Run.java
index d93a0133c97..1c29bdd397f 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/Run.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/Run.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
import com.google.common.collect.ImmutableList;
@@ -39,11 +39,12 @@ public class Run {
private final Optional<Instant> noNodesDownSince;
private final Optional<ConvergenceSummary> convergenceSummary;
private final Optional<X509Certificate> testerCertificate;
+ private final boolean dryRun;
// For deserialisation only -- do not use!
public Run(RunId id, Map<Step, StepInfo> steps, Versions versions, boolean isRedeployment, Instant start, Optional<Instant> end,
RunStatus status, long lastTestRecord, Instant lastVespaLogTimestamp, Optional<Instant> noNodesDownSince,
- Optional<ConvergenceSummary> convergenceSummary, Optional<X509Certificate> testerCertificate) {
+ Optional<ConvergenceSummary> convergenceSummary, Optional<X509Certificate> testerCertificate, boolean dryRun) {
this.id = id;
this.steps = Collections.unmodifiableMap(new EnumMap<>(steps));
this.versions = versions;
@@ -56,13 +57,14 @@ public class Run {
this.noNodesDownSince = noNodesDownSince;
this.convergenceSummary = convergenceSummary;
this.testerCertificate = testerCertificate;
+ this.dryRun = dryRun;
}
public static Run initial(RunId id, Versions versions, boolean isRedeployment, Instant now, JobProfile profile) {
EnumMap<Step, StepInfo> steps = new EnumMap<>(Step.class);
profile.steps().forEach(step -> steps.put(step, StepInfo.initial(step)));
return new Run(id, steps, requireNonNull(versions), isRedeployment, requireNonNull(now), Optional.empty(), running,
- -1, Instant.EPOCH, Optional.empty(), Optional.empty(), Optional.empty());
+ -1, Instant.EPOCH, Optional.empty(), Optional.empty(), Optional.empty(), profile == JobProfile.developmentDryRun);
}
/** Returns a new Run with the status of the given completed step set accordingly. */
@@ -76,7 +78,7 @@ public class Run {
EnumMap<Step, StepInfo> steps = new EnumMap<>(this.steps);
steps.put(step.get(), stepInfo.with(Step.Status.of(status)));
return new Run(id, steps, versions, isRedeployment, start, end, this.status == running ? status : this.status,
- lastTestRecord, lastVespaLogTimestamp, noNodesDownSince, convergenceSummary, testerCertificate);
+ lastTestRecord, lastVespaLogTimestamp, noNodesDownSince, convergenceSummary, testerCertificate, dryRun);
}
/** Returns a new Run with a new start time*/
@@ -91,49 +93,49 @@ public class Run {
steps.put(step.get(), stepInfo.with(startTime));
return new Run(id, steps, versions, isRedeployment, start, end, status, lastTestRecord, lastVespaLogTimestamp,
- noNodesDownSince, convergenceSummary, testerCertificate);
+ noNodesDownSince, convergenceSummary, testerCertificate, dryRun);
}
public Run finished(Instant now) {
requireActive();
return new Run(id, steps, versions, isRedeployment, start, Optional.of(now), status == running ? success : status,
- lastTestRecord, lastVespaLogTimestamp, noNodesDownSince, convergenceSummary, Optional.empty());
+ lastTestRecord, lastVespaLogTimestamp, noNodesDownSince, convergenceSummary, Optional.empty(), dryRun);
}
public Run aborted() {
requireActive();
return new Run(id, steps, versions, isRedeployment, start, end, aborted, lastTestRecord, lastVespaLogTimestamp,
- noNodesDownSince, convergenceSummary, testerCertificate);
+ noNodesDownSince, convergenceSummary, testerCertificate, dryRun);
}
public Run with(long lastTestRecord) {
requireActive();
return new Run(id, steps, versions, isRedeployment, start, end, status, lastTestRecord, lastVespaLogTimestamp,
- noNodesDownSince, convergenceSummary, testerCertificate);
+ noNodesDownSince, convergenceSummary, testerCertificate, dryRun);
}
public Run with(Instant lastVespaLogTimestamp) {
requireActive();
return new Run(id, steps, versions, isRedeployment, start, end, status, lastTestRecord, lastVespaLogTimestamp,
- noNodesDownSince, convergenceSummary, testerCertificate);
+ noNodesDownSince, convergenceSummary, testerCertificate, dryRun);
}
public Run noNodesDownSince(Instant noNodesDownSince) {
requireActive();
return new Run(id, steps, versions, isRedeployment, start, end, status, lastTestRecord, lastVespaLogTimestamp,
- Optional.ofNullable(noNodesDownSince), convergenceSummary, testerCertificate);
+ Optional.ofNullable(noNodesDownSince), convergenceSummary, testerCertificate, dryRun);
}
public Run withSummary(ConvergenceSummary convergenceSummary) {
requireActive();
return new Run(id, steps, versions, isRedeployment, start, end, status, lastTestRecord, lastVespaLogTimestamp,
- noNodesDownSince, Optional.ofNullable(convergenceSummary), testerCertificate);
+ noNodesDownSince, Optional.ofNullable(convergenceSummary), testerCertificate, dryRun);
}
public Run with(X509Certificate testerCertificate) {
requireActive();
return new Run(id, steps, versions, isRedeployment, start, end, status, lastTestRecord, lastVespaLogTimestamp,
- noNodesDownSince, convergenceSummary, Optional.of(testerCertificate));
+ noNodesDownSince, convergenceSummary, Optional.of(testerCertificate), dryRun);
}
/** Returns the id of this run. */
@@ -229,6 +231,9 @@ public class Run {
return isRedeployment;
}
+ /** Whether this is a dry run deployment. */
+ public boolean isDryRun() { return dryRun; }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RunLog.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RunLog.java
index 44299997b4f..bc27d736ad4 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RunLog.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RunLog.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
import com.google.common.collect.ImmutableList;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RunStatus.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RunStatus.java
index fba3f7ae6e9..7aa685d0698 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RunStatus.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RunStatus.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
/**
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/Step.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/Step.java
index ce34a021218..d58f3dee95f 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/Step.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/Step.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
import java.util.Collection;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/StepRunner.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/StepRunner.java
index 526546ddf81..b3964c8e422 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/StepRunner.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/StepRunner.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.RunId;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/Versions.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/Versions.java
index ccd624b2a27..779ce6fa7fe 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/Versions.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/Versions.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
import com.yahoo.component.Version;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/ZipBuilder.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/ZipBuilder.java
index 6bcc8a034cc..a1eae23afd3 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/ZipBuilder.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/ZipBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
import java.io.ByteArrayInputStream;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/package-info.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/package-info.java
index e8fb638bc34..b69e8401eb8 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/package-info.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.controller.deployment;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/dns/CreateRecords.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/dns/CreateRecords.java
index 1697c05b8fb..d0c901ccb36 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/dns/CreateRecords.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/dns/CreateRecords.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.dns;
import com.yahoo.vespa.hosted.controller.api.integration.dns.AliasTarget;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/dns/NameServiceForwarder.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/dns/NameServiceForwarder.java
index f8c390edb3b..2c59211e50c 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/dns/NameServiceForwarder.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/dns/NameServiceForwarder.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.dns;
import com.yahoo.vespa.curator.Lock;
@@ -28,7 +28,11 @@ import java.util.stream.Collectors;
*/
public class NameServiceForwarder {
- private static final int QUEUE_CAPACITY = 300;
+ /**
+ * The number of {@link NameServiceRequest}s we allow to be queued. When the queue overflows, the first requests
+ * are dropped in a FIFO order until the queue shrinks below this capacity.
+ */
+ private static final int QUEUE_CAPACITY = 400;
private static final Logger log = Logger.getLogger(NameServiceForwarder.class.getName());
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ApplicationMetaDataGarbageCollector.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ApplicationMetaDataGarbageCollector.java
index 9ec8e4d1a2d..09e0fec41d1 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ApplicationMetaDataGarbageCollector.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ApplicationMetaDataGarbageCollector.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.vespa.hosted.controller.Controller;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ApplicationOwnershipConfirmer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ApplicationOwnershipConfirmer.java
index de087737320..308bfbb0408 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ApplicationOwnershipConfirmer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ApplicationOwnershipConfirmer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.zone.ZoneId;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveAccessMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveAccessMaintainer.java
index b096a853541..0ed2e930c57 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveAccessMaintainer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveAccessMaintainer.java
@@ -2,16 +2,25 @@
package com.yahoo.vespa.hosted.controller.maintenance;
import com.google.common.collect.Maps;
+import com.yahoo.config.provision.TenantName;
+import com.yahoo.config.provision.zone.ZoneApi;
+import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.jdisc.Metric;
+import com.yahoo.vespa.flags.BooleanFlag;
+import com.yahoo.vespa.flags.FetchVector;
+import com.yahoo.vespa.flags.Flags;
import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.api.integration.archive.ArchiveService;
import com.yahoo.vespa.hosted.controller.api.integration.zone.ZoneRegistry;
import com.yahoo.vespa.hosted.controller.archive.CuratorArchiveBucketDb;
+import com.yahoo.vespa.hosted.controller.tenant.AthenzTenant;
import com.yahoo.vespa.hosted.controller.tenant.CloudTenant;
import com.yahoo.vespa.hosted.controller.tenant.Tenant;
import java.time.Duration;
+import java.util.List;
import java.util.Map;
+import java.util.function.Function;
import java.util.stream.Collectors;
/**
@@ -27,6 +36,8 @@ public class ArchiveAccessMaintainer extends ControllerMaintainer {
private final ArchiveService archiveService;
private final ZoneRegistry zoneRegistry;
private final Metric metric;
+ private final BooleanFlag archiveEnabled;
+ private final BooleanFlag developerRoleEnabled;
public ArchiveAccessMaintainer(Controller controller, Metric metric, Duration interval) {
super(controller, interval);
@@ -34,6 +45,8 @@ public class ArchiveAccessMaintainer extends ControllerMaintainer {
this.archiveService = controller.serviceRegistry().archiveService();
this.zoneRegistry = controller().zoneRegistry();
this.metric = metric;
+ this.archiveEnabled = Flags.ENABLE_ONPREM_TENANT_S3_ARCHIVE.bindTo(controller().flagSource());
+ this.developerRoleEnabled = Flags.ENABLE_TENANT_DEVELOPER_ROLE.bindTo(controller().flagSource());
}
@Override
@@ -43,22 +56,49 @@ public class ArchiveAccessMaintainer extends ControllerMaintainer {
metric.set(bucketCountMetricName, archiveBucketDb.buckets(zoneId).size(),
metric.createContext(Map.of("zone", zoneId.value()))));
- var tenantArchiveAccessRoles = controller().tenants().asList().stream()
- .filter(t -> t instanceof CloudTenant)
- .map(t -> (CloudTenant) t)
- .filter(t -> t.archiveAccessRole().isPresent())
- .collect(Collectors.toUnmodifiableMap(
- Tenant::name, cloudTenant -> cloudTenant.archiveAccessRole().orElseThrow()));
- zoneRegistry.zones().controllerUpgraded().ids().forEach(zoneId ->
- archiveBucketDb.buckets(zoneId).forEach(archiveBucket ->
- archiveService.updateBucketAndKeyPolicy(zoneId, archiveBucket,
- Maps.filterEntries(tenantArchiveAccessRoles,
- entry -> archiveBucket.tenants().contains(entry.getKey())))
- )
+ zoneRegistry.zones().controllerUpgraded().zones().forEach(z -> {
+ ZoneId zoneId = z.getId();
+ try {
+ var tenantArchiveAccessRoles = tenantArchiveAccessRoles(z);
+ archiveBucketDb.buckets(zoneId).forEach(archiveBucket ->
+ archiveService.updateBucketAndKeyPolicy(zoneId, archiveBucket,
+ Maps.filterEntries(tenantArchiveAccessRoles,
+ entry -> archiveBucket.tenants().contains(entry.getKey())))
+ );
+ } catch (Exception e) {
+ throw new RuntimeException("Failed to maintain archive access in " + zoneId.value(), e);
+ }
+ }
);
return 1.0;
}
+ private Map<TenantName, String> tenantArchiveAccessRoles(ZoneApi zone) {
+ List<Tenant> tenants = controller().tenants().asList();
+ if (zoneRegistry.system().isPublic()) {
+ return tenants.stream()
+ .filter(t -> t instanceof CloudTenant)
+ .map(t -> (CloudTenant) t)
+ .filter(t -> t.archiveAccessRole().isPresent())
+ .collect(Collectors.toUnmodifiableMap(
+ Tenant::name, cloudTenant -> cloudTenant.archiveAccessRole().orElseThrow()));
+ } else {
+ return tenants.stream()
+ .filter(t -> t instanceof AthenzTenant
+ && enabled(archiveEnabled, t, zone) && enabled(developerRoleEnabled, t, zone))
+ .map(Tenant::name)
+ .collect(Collectors.toUnmodifiableMap(
+ Function.identity(), t -> zoneRegistry.tenantDeveloperRoleArn(t).orElseThrow()));
+
+ }
+ }
+
+ private boolean enabled(BooleanFlag flag, Tenant tenant, ZoneApi zone) {
+ return flag.with(FetchVector.Dimension.TENANT_ID, tenant.name().value())
+ .with(FetchVector.Dimension.ZONE_ID, zone.getId().value())
+ .value();
+ }
+
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveUriUpdater.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveUriUpdater.java
index ab8e5efa0bd..1d71fa66329 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveUriUpdater.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveUriUpdater.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.SystemName;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeManagementAssessor.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeManagementAssessor.java
index d74578d9adc..128d7e6ac71 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeManagementAssessor.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeManagementAssessor.java
@@ -1,14 +1,12 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.HostName;
+import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.zone.ZoneId;
-import com.yahoo.text.Text;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeRepository;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeRepositoryNode;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeState;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeType;
import java.util.Collection;
import java.util.List;
@@ -16,6 +14,9 @@ import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
+/**
+ * @author smorgrav
+ */
public class ChangeManagementAssessor {
private final NodeRepository nodeRepository;
@@ -25,31 +26,31 @@ public class ChangeManagementAssessor {
}
public Assessment assessment(List<String> impactedHostnames, ZoneId zone) {
- return assessmentInner(impactedHostnames, nodeRepository.listNodes(zone).nodes(), zone);
+ return assessmentInner(impactedHostnames, nodeRepository.list(zone, NodeFilter.all()), zone);
}
- Assessment assessmentInner(List<String> impactedHostnames, List<NodeRepositoryNode> allNodes, ZoneId zone) {
+ Assessment assessmentInner(List<String> impactedHostnames, List<Node> allNodes, ZoneId zone) {
List<String> impactedParentHosts = toParentHosts(impactedHostnames, allNodes);
// Group impacted application nodes by parent host
- Map<NodeRepositoryNode, List<NodeRepositoryNode>> prParentHost = allNodes.stream()
- .filter(nodeRepositoryNode -> nodeRepositoryNode.getState() == NodeState.active) //TODO look at more states?
- .filter(node -> impactedParentHosts.contains(node.getParentHostname() == null ? "" : node.getParentHostname()))
+ Map<Node, List<Node>> prParentHost = allNodes.stream()
+ .filter(node -> node.state() == Node.State.active) //TODO look at more states?
+ .filter(node -> impactedParentHosts.contains(node.parentHostname().map(HostName::value).orElse("")))
.collect(Collectors.groupingBy(node ->
allNodes.stream()
- .filter(parent -> parent.getHostname().equals(node.getParentHostname()))
+ .filter(parent -> parent.hostname().equals(node.parentHostname().get()))
.findFirst().orElseThrow()
));
// Group nodes pr cluster
- Map<Cluster, List<NodeRepositoryNode>> prCluster = prParentHost.values()
+ Map<Cluster, List<Node>> prCluster = prParentHost.values()
.stream()
.flatMap(Collection::stream)
.collect(Collectors.groupingBy(ChangeManagementAssessor::clusterKey));
var tenantHosts = prParentHost.keySet().stream()
- .filter(node -> node.getType() == NodeType.host)
- .map(node -> HostName.from(node.getHostname()))
+ .filter(node -> node.type() == NodeType.host)
+ .map(node -> node.hostname())
.collect(Collectors.toList());
boolean allHostsReplacable = tenantHosts.isEmpty() || nodeRepository.isReplaceable(
@@ -60,7 +61,7 @@ public class ChangeManagementAssessor {
// Report assessment pr cluster
var clusterAssessments = prCluster.entrySet().stream().map((entry) -> {
Cluster cluster = entry.getKey();
- List<NodeRepositoryNode> nodes = entry.getValue();
+ List<Node> nodes = entry.getValue();
long[] totalStats = clusterStats(cluster, allNodes);
long[] impactedStats = clusterStats(cluster, nodes);
@@ -87,8 +88,8 @@ public class ChangeManagementAssessor {
var hostAssessments = prParentHost.entrySet().stream().map((entry) -> {
HostAssessment hostAssessment = new HostAssessment();
- hostAssessment.hostName = entry.getKey().getHostname();
- hostAssessment.switchName = entry.getKey().getSwitchHostname();
+ hostAssessment.hostName = entry.getKey().hostname().value();
+ hostAssessment.switchName = entry.getKey().switchHostname().orElse(null);
hostAssessment.numberOfChildren = entry.getValue().size();
//TODO: Some better heuristic for what's considered problematic
@@ -103,31 +104,31 @@ public class ChangeManagementAssessor {
return new Assessment(clusterAssessments, hostAssessments);
}
- private List<String> toParentHosts(List<String> impactedHostnames, List<NodeRepositoryNode> allNodes) {
+ private List<String> toParentHosts(List<String> impactedHostnames, List<Node> allNodes) {
return impactedHostnames.stream()
.flatMap(hostname ->
allNodes.stream()
- .filter(node -> List.of(NodeType.config, NodeType.proxy, NodeType.host).contains(node.getType()))
- .filter(node -> hostname.equals(node.getHostname()) || hostname.equals(node.getParentHostname()))
+ .filter(node -> List.of(NodeType.config, NodeType.proxy, NodeType.host).contains(node.type()))
+ .filter(node -> hostname.equals(node.hostname().value()) || hostname.equals(node.parentHostname().map(HostName::value).orElse("")))
.map(node -> {
- if (node.getType() == NodeType.host)
- return node.getHostname();
- return node.getParentHostname();
+ if (node.type() == NodeType.host)
+ return node.hostname().value();
+ return node.parentHostname().get().value();
}).findFirst().stream()
)
.collect(Collectors.toList());
}
- private static Cluster clusterKey(NodeRepositoryNode node) {
- if (node.getOwner() == null)
+ private static Cluster clusterKey(Node node) {
+ if (node.owner().isEmpty())
return Cluster.EMPTY;
- String appId = Text.format("%s:%s:%s", node.getOwner().tenant, node.getOwner().application, node.getOwner().instance);
- return new Cluster(Node.ClusterType.valueOf(node.getMembership().clustertype), node.getMembership().clusterid, appId, node.getType());
+ String appId = node.owner().get().serializedForm();
+ return new Cluster(node.clusterType(), node.clusterId(), appId, node.type());
}
- private static long[] clusterStats(Cluster cluster, List<NodeRepositoryNode> containerNodes) {
- List<NodeRepositoryNode> clusterNodes = containerNodes.stream().filter(nodeRepositoryNode -> cluster.equals(clusterKey(nodeRepositoryNode))).collect(Collectors.toList());
- long groups = clusterNodes.stream().map(nodeRepositoryNode -> nodeRepositoryNode.getMembership() != null ? nodeRepositoryNode.getMembership().group : "").distinct().count();
+ private static long[] clusterStats(Cluster cluster, List<Node> containerNodes) {
+ List<Node> clusterNodes = containerNodes.stream().filter(node -> cluster.equals(clusterKey(node))).collect(Collectors.toList());
+ long groups = clusterNodes.stream().map(Node::group).distinct().count();
return new long[] { clusterNodes.size(), groups};
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeRequestMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeRequestMaintainer.java
index 14e3e685a8a..aa36d204c09 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeRequestMaintainer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeRequestMaintainer.java
@@ -1,10 +1,11 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.SystemName;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.Controller;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeRepository;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.ChangeRequest;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.ChangeRequestClient;
@@ -33,12 +34,14 @@ public class ChangeRequestMaintainer extends ControllerMaintainer {
private final ChangeRequestClient changeRequestClient;
private final CuratorDb curator;
private final NodeRepository nodeRepository;
+ private final SystemName system;
public ChangeRequestMaintainer(Controller controller, Duration interval) {
super(controller, interval, null, SystemName.allOf(Predicate.not(SystemName::isPublic)));
this.changeRequestClient = controller.serviceRegistry().changeRequestClient();
this.curator = controller.curator();
this.nodeRepository = controller.serviceRegistry().configServer().nodeRepository();
+ this.system = controller.system();
}
@@ -63,14 +66,15 @@ public class ChangeRequestMaintainer extends ControllerMaintainer {
try (var lock = curator.lockChangeRequests()) {
changeRequests.forEach(changeRequest -> {
var optionalZone = inferZone(changeRequest, hostsByZone);
- optionalZone.ifPresent(zone -> {
+ optionalZone.ifPresentOrElse(zone -> {
var vcmr = existingChangeRequests
.getOrDefault(changeRequest.getId(), new VespaChangeRequest(changeRequest, zone))
.withSource(changeRequest.getChangeRequestSource())
.withApproval(changeRequest.getApproval());
logger.fine(() -> "Storing " + vcmr);
curator.writeChangeRequest(vcmr);
- });
+ },
+ () -> approveChangeRequest(changeRequest));
});
}
}
@@ -100,7 +104,7 @@ public class ChangeRequestMaintainer extends ControllerMaintainer {
.stream()
.collect(Collectors.toMap(
zone -> zone,
- zone -> nodeRepository.list(zone, false)
+ zone -> nodeRepository.list(zone, NodeFilter.all())
.stream()
.map(node -> node.hostname().value())
.collect(Collectors.toList())
@@ -120,4 +124,12 @@ public class ChangeRequestMaintainer extends ControllerMaintainer {
.plus(Duration.ofDays(7))
.isBefore(ZonedDateTime.now());
}
+
+ private void approveChangeRequest(ChangeRequest changeRequest) {
+ if (system.equals(SystemName.main) &&
+ changeRequest.getApproval() == ChangeRequest.Approval.REQUESTED) {
+ logger.info("Approving " + changeRequest.getChangeRequestSource().getId());
+ changeRequestClient.approveChangeRequest(changeRequest);
+ }
+ }
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventReporter.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTracker.java
index 3c5495a6bfe..47a9bd5e8e9 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventReporter.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTracker.java
@@ -5,9 +5,10 @@ import com.yahoo.config.provision.CloudName;
import com.yahoo.config.provision.zone.ZoneApi;
import com.yahoo.text.Text;
import com.yahoo.vespa.hosted.controller.Controller;
-import com.yahoo.vespa.hosted.controller.api.integration.aws.AwsEventFetcher;
+import com.yahoo.vespa.hosted.controller.api.integration.aws.CloudEventFetcher;
import com.yahoo.vespa.hosted.controller.api.integration.aws.CloudEvent;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeRepository;
import java.time.Duration;
@@ -17,21 +18,19 @@ import java.util.logging.Logger;
import java.util.stream.Collectors;
/**
- * Automatically fetches and handles scheduled events from AWS:
- * 1. Deprovisions the affected hosts if applicable
- * 2. Submits an issue detailing the event if some hosts are not processed by 1.
+ * This tracks maintenance events from cloud providers and deprovisions any affected hosts.
*
* @author mgimle
*/
-public class CloudEventReporter extends ControllerMaintainer {
+public class CloudEventTracker extends ControllerMaintainer {
- private static final Logger log = Logger.getLogger(CloudEventReporter.class.getName());
+ private static final Logger log = Logger.getLogger(CloudEventTracker.class.getName());
- private final AwsEventFetcher eventFetcher;
+ private final CloudEventFetcher eventFetcher;
private final Map<String, List<ZoneApi>> zonesByCloudNativeRegion;
private final NodeRepository nodeRepository;
- CloudEventReporter(Controller controller, Duration interval) {
+ CloudEventTracker(Controller controller, Duration interval) {
super(controller, interval);
this.eventFetcher = controller.serviceRegistry().eventFetcherService();
this.nodeRepository = controller.serviceRegistry().configServer().nodeRepository();
@@ -55,11 +54,11 @@ public class CloudEventReporter extends ControllerMaintainer {
/** Deprovision any host affected by given event */
private void deprovisionAffectedHosts(String region, CloudEvent event) {
for (var zone : zonesByCloudNativeRegion.get(region)) {
- for (var node : nodeRepository.list(zone.getId(), false)) {
+ for (var node : nodeRepository.list(zone.getId(), NodeFilter.all())) {
if (!affects(node, event)) continue;
log.info("Retiring and deprovisioning " + node.hostname().value() + " in " + zone.getId() +
": Affected by maintenance event " + event.instanceEventId);
- nodeRepository.retireAndDeprovision(zone.getId(), node.hostname().value());
+ nodeRepository.retire(zone.getId(), node.hostname().value(), true, true);
}
}
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirer.java
index c85383fd7f7..c9310349b9b 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.SystemName;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ContactInformationMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ContactInformationMaintainer.java
index 5ee39f7c8f2..6ecad482cd2 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ContactInformationMaintainer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ContactInformationMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.SystemName;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ContainerImageExpirer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ContainerImageExpirer.java
index f1574381a3d..c87dd262fa3 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ContainerImageExpirer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ContainerImageExpirer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.component.Version;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintainer.java
index f7c4a95baf1..f1223c7d162 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintainer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.concurrent.maintenance.JobMetrics;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintenance.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintenance.java
index 56bf870c7fc..3b7cf313b37 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintenance.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintenance.java
@@ -8,9 +8,9 @@ import com.yahoo.config.provision.SystemName;
import com.yahoo.config.provision.zone.ZoneApi;
import com.yahoo.jdisc.Metric;
import com.yahoo.vespa.hosted.controller.Controller;
+import com.yahoo.vespa.hosted.controller.api.integration.user.UserManagement;
import java.time.Duration;
-import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalUnit;
import java.util.Collections;
import java.util.List;
@@ -36,7 +36,7 @@ public class ControllerMaintenance extends AbstractComponent {
@Inject
@SuppressWarnings("unused") // instantiated by Dependency Injection
- public ControllerMaintenance(Controller controller, Metric metric) {
+ public ControllerMaintenance(Controller controller, Metric metric, UserManagement userManagement) {
Intervals intervals = new Intervals(controller.system());
upgrader = new Upgrader(controller, intervals.defaultInterval);
maintainers.add(upgrader);
@@ -58,7 +58,7 @@ public class ControllerMaintenance extends AbstractComponent {
maintainers.add(new NameServiceDispatcher(controller, intervals.nameServiceDispatcher));
maintainers.add(new CostReportMaintainer(controller, intervals.costReportMaintainer, controller.serviceRegistry().costReportConsumer()));
maintainers.add(new ResourceMeterMaintainer(controller, intervals.resourceMeterMaintainer, metric, controller.serviceRegistry().meteringService()));
- maintainers.add(new CloudEventReporter(controller, intervals.cloudEventReporter));
+ maintainers.add(new CloudEventTracker(controller, intervals.cloudEventReporter));
maintainers.add(new ResourceTagMaintainer(controller, intervals.resourceTagMaintainer, controller.serviceRegistry().resourceTagger()));
maintainers.add(new SystemRoutingPolicyMaintainer(controller, intervals.systemRoutingPolicyMaintainer));
maintainers.add(new ApplicationMetaDataGarbageCollector(controller, intervals.applicationMetaDataGarbageCollector));
@@ -71,9 +71,10 @@ public class ControllerMaintenance extends AbstractComponent {
maintainers.add(new ArchiveAccessMaintainer(controller, metric, intervals.archiveAccessMaintainer));
maintainers.add(new TenantRoleMaintainer(controller, intervals.tenantRoleMaintainer));
maintainers.add(new ChangeRequestMaintainer(controller, intervals.changeRequestMaintainer));
- maintainers.add(new VCMRMaintainer(controller, intervals.vcmrMaintainer));
+ maintainers.add(new VcmrMaintainer(controller, intervals.vcmrMaintainer));
maintainers.add(new CloudTrialExpirer(controller, intervals.defaultInterval));
maintainers.add(new RetriggerMaintainer(controller, intervals.retriggerMaintainer));
+ maintainers.add(new UserManagementMaintainer(controller, intervals.userManagementMaintainer, userManagement));
}
public Upgrader upgrader() { return upgrader; }
@@ -130,6 +131,7 @@ public class ControllerMaintenance extends AbstractComponent {
private final Duration changeRequestMaintainer;
private final Duration vcmrMaintainer;
private final Duration retriggerMaintainer;
+ private final Duration userManagementMaintainer;
public Intervals(SystemName system) {
this.system = Objects.requireNonNull(system);
@@ -163,6 +165,7 @@ public class ControllerMaintenance extends AbstractComponent {
this.changeRequestMaintainer = duration(1, HOURS);
this.vcmrMaintainer = duration(1, HOURS);
this.retriggerMaintainer = duration(1, MINUTES);
+ this.userManagementMaintainer = duration(12, HOURS);
}
private Duration duration(long amount, TemporalUnit unit) {
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentExpirer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentExpirer.java
index 40191190eff..9a8ba9afca2 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentExpirer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentExpirer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.ApplicationId;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentIssueReporter.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentIssueReporter.java
index 4e53e07f5af..bb05840d34f 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentIssueReporter.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentIssueReporter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.component.Version;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentMetricsMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentMetricsMaintainer.java
index 9b8dfce849a..aca154a4b5b 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentMetricsMaintainer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentMetricsMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.SystemName;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentUpgrader.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentUpgrader.java
index a69af024b96..73ee8527492 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentUpgrader.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentUpgrader.java
@@ -1,13 +1,14 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
+import com.yahoo.component.Version;
import com.yahoo.vespa.hosted.controller.Application;
import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.Instance;
-import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationVersion;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobId;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
import com.yahoo.vespa.hosted.controller.application.Deployment;
+import com.yahoo.vespa.hosted.controller.deployment.Run;
import com.yahoo.vespa.hosted.controller.deployment.Versions;
import com.yahoo.yolean.Exceptions;
@@ -32,7 +33,8 @@ public class DeploymentUpgrader extends ControllerMaintainer {
protected double maintain() {
AtomicInteger attempts = new AtomicInteger();
AtomicInteger failures = new AtomicInteger();
- Versions target = new Versions(controller().readSystemVersion(), ApplicationVersion.unknown, Optional.empty(), Optional.empty());
+ Version systemVersion = controller().readSystemVersion();
+
for (Application application : controller().applications().readable())
for (Instance instance : application.instances().values())
for (Deployment deployment : instance.deployments().values())
@@ -40,8 +42,10 @@ public class DeploymentUpgrader extends ControllerMaintainer {
attempts.incrementAndGet();
JobId job = new JobId(instance.id(), JobType.from(controller().system(), deployment.zone()).get());
if ( ! deployment.zone().environment().isManuallyDeployed()) continue;
+
+ Run last = controller().jobController().last(job).get();
+ Versions target = new Versions(systemVersion, last.versions().targetApplication(), Optional.of(last.versions().targetPlatform()), Optional.of(last.versions().targetApplication()));
if ( ! deployment.version().isBefore(target.targetPlatform())) continue;
- if ( controller().clock().instant().isBefore(controller().jobController().last(job).get().start().plus(Duration.ofDays(1)))) continue;
if ( ! isLikelyNightFor(job)) continue;
log.log(Level.FINE, "Upgrading deployment of " + instance.id() + " in " + deployment.zone());
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/EndpointCertificateMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/EndpointCertificateMaintainer.java
index cd7ce8c3fa6..40e75cab8aa 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/EndpointCertificateMaintainer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/EndpointCertificateMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.google.common.collect.Sets;
@@ -24,8 +24,10 @@ import java.time.temporal.ChronoUnit;
import java.util.HashSet;
import java.util.Optional;
import java.util.OptionalInt;
+import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
+import java.util.stream.Collectors;
/**
* Updates refreshed endpoint certificates and triggers redeployment, and deletes unused certificates.
@@ -60,6 +62,7 @@ public class EndpointCertificateMaintainer extends ControllerMaintainer {
deployRefreshedCertificates();
updateRefreshedCertificates();
deleteUnusedCertificates();
+ reportUnmanagedCertificates();
} catch (Exception e) {
log.log(LogLevel.ERROR, "Exception caught while maintaining endpoint certificates", e);
return 0.0;
@@ -134,6 +137,16 @@ public class EndpointCertificateMaintainer extends ControllerMaintainer {
});
}
+ private void reportUnmanagedCertificates() {
+ Set<String> managedRequestIds = curator.readAllEndpointCertificateMetadata().values().stream().map(EndpointCertificateMetadata::requestId).collect(Collectors.toSet());
+
+ for (EndpointCertificateMetadata cameoCertificateMetadata : endpointCertificateProvider.listCertificates()) {
+ if (!managedRequestIds.contains(cameoCertificateMetadata.requestId())) {
+ log.info("Certificate metadata exists with provider but is not managed by controller: " + cameoCertificateMetadata.requestId() + ", " + cameoCertificateMetadata.issuer() + ", " + cameoCertificateMetadata.requestedDnsSans());
+ }
+ }
+ }
+
private Lock lock(ApplicationId applicationId) {
return curator.lock(TenantAndApplicationId.from(applicationId));
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/HostInfoUpdater.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/HostInfoUpdater.java
index 10e6f9eb039..1f21c688540 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/HostInfoUpdater.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/HostInfoUpdater.java
@@ -1,13 +1,13 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.SystemName;
import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeRepository;
import com.yahoo.vespa.hosted.controller.api.integration.entity.EntityService;
import com.yahoo.vespa.hosted.controller.api.integration.entity.NodeEntity;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeRepositoryNode;
import java.time.Duration;
import java.util.EnumSet;
@@ -45,16 +45,27 @@ public class HostInfoUpdater extends ControllerMaintainer {
int hostsUpdated = 0;
try {
for (var zone : controller().zoneRegistry().zones().controllerUpgraded().all().ids()) {
- for (var node : nodeRepository.list(zone, false)) {
+ for (var node : nodeRepository.list(zone, NodeFilter.all())) {
if (!node.type().isHost()) continue;
NodeEntity nodeEntity = nodeEntities.get(registeredHostnameOf(node));
- if (!shouldUpdateSwitch(node, nodeEntity) && !shouldUpdateModel(node, nodeEntity)) continue;
+ if (nodeEntity == null) continue;
- NodeRepositoryNode updatedNode = new NodeRepositoryNode();
- nodeEntity.switchHostname().ifPresent(updatedNode::setSwitchHostname);
- buildModelName(nodeEntity).ifPresent(updatedNode::setModelName);
- nodeRepository.patchNode(zone, node.hostname().value(), updatedNode);
- hostsUpdated++;
+ boolean updatedHost = false;
+ Optional<String> modelName = modelNameOf(nodeEntity);
+ if (modelName.isPresent() && !modelName.equals(node.modelName())) {
+ nodeRepository.updateModel(zone, node.hostname().value(), modelName.get());
+ updatedHost = true;
+ }
+
+ Optional<String> switchHostname = nodeEntity.switchHostname();
+ if (switchHostname.isPresent() && !switchHostname.equals(node.switchHostname())) {
+ nodeRepository.updateSwitchHostname(zone, node.hostname().value(), switchHostname.get());
+ updatedHost = true;
+ }
+
+ if (updatedHost) {
+ hostsUpdated++;
+ }
}
}
} finally {
@@ -65,9 +76,8 @@ public class HostInfoUpdater extends ControllerMaintainer {
return 1.0;
}
- private static Optional<String> buildModelName(NodeEntity nodeEntity) {
- if(nodeEntity.manufacturer().isEmpty() || nodeEntity.model().isEmpty())
- return Optional.empty();
+ private static Optional<String> modelNameOf(NodeEntity nodeEntity) {
+ if (nodeEntity.manufacturer().isEmpty() || nodeEntity.model().isEmpty()) return Optional.empty();
return Optional.of(nodeEntity.manufacturer().get() + " " + nodeEntity.model().get());
}
@@ -80,17 +90,4 @@ public class HostInfoUpdater extends ControllerMaintainer {
return matcher.replaceFirst("$1$2");
}
- private static boolean shouldUpdateSwitch(Node node, NodeEntity nodeEntity) {
- if (nodeEntity == null) return false;
- if (nodeEntity.switchHostname().isEmpty()) return false;
- return !node.switchHostname().equals(nodeEntity.switchHostname());
- }
-
- private static boolean shouldUpdateModel(Node node, NodeEntity nodeEntity) {
- if (nodeEntity == null) return false;
- if (nodeEntity.model().isEmpty()) return false;
- if (nodeEntity.manufacturer().isEmpty()) return false;
- return !node.modelName().equals(buildModelName(nodeEntity));
- }
-
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/InfrastructureUpgrader.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/InfrastructureUpgrader.java
index 221a7524ab1..1ea57d3ccb4 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/InfrastructureUpgrader.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/InfrastructureUpgrader.java
@@ -8,6 +8,7 @@ import com.yahoo.config.provision.zone.ZoneApi;
import com.yahoo.text.Text;
import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.application.SystemApplication;
import com.yahoo.yolean.Exceptions;
@@ -112,7 +113,7 @@ public abstract class InfrastructureUpgrader<VERSION> extends ControllerMaintain
try {
return controller().serviceRegistry().configServer()
.nodeRepository()
- .list(zone.getVirtualId(), application.id())
+ .list(zone.getVirtualId(), NodeFilter.all().applications(application.id()))
.stream()
.filter(node -> expectUpgradeOf(node, application, zone))
.map(versionField)
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java
index 25207b733f0..ba891cdddd8 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.concurrent.DaemonThreadFactory;
@@ -113,8 +113,10 @@ public class JobRunner extends ControllerMaintainer {
jobs.locked(id.application(), id.type(), step, lockedStep -> {
jobs.locked(id, run -> run); // Memory visibility.
jobs.active(id).ifPresent(run -> { // The run may have become inactive, so we bail out.
- if ( ! run.readySteps().contains(step))
+ if ( ! run.readySteps().contains(step)) {
+ changed.set(true);
return; // Someone may have updated the run status, making this step obsolete, so we bail out.
+ }
StepInfo stepInfo = run.stepInfo(lockedStep.get()).orElseThrow();
if (stepInfo.startTime().isEmpty()) {
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeScheduler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeScheduler.java
index d3b05922d26..b2d3e1b780f 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeScheduler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeScheduler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.component.Version;
@@ -11,7 +11,6 @@ import com.yahoo.vespa.hosted.controller.versions.OsVersionTarget;
import java.time.Duration;
import java.time.Instant;
-import java.time.LocalDate;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Objects;
@@ -141,18 +140,6 @@ public class OsUpgradeScheduler extends ControllerMaintainer {
@Override
public Version version(OsVersionTarget currentTarget, Instant now) {
Instant scheduledAt = currentTarget.scheduledAt();
- if (currentTarget.scheduledAt().equals(Instant.EPOCH)) {
- // TODO(mpolden): Remove this block after 2021-09-01. If we haven't written scheduledAt at least once,
- // we need to deduce the scheduled instant from the version.
- Version version = currentTarget.osVersion().version();
- String qualifier = version.getQualifier();
- if (!qualifier.matches("^\\d{8,}")) throw new IllegalArgumentException("Could not parse instant from version " + version);
-
- String dateString = qualifier.substring(0, 8);
- scheduledAt = LocalDate.parse(dateString, CALENDAR_VERSION_PATTERN)
- .atStartOfDay(ZoneOffset.UTC)
- .toInstant();
- }
Version currentVersion = currentTarget.osVersion().version();
if (scheduledAt.isBefore(now.minus(SCHEDULING_INTERVAL))) {
String calendarVersion = now.minus(AVAILABILITY_INTERVAL)
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgrader.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgrader.java
index 8aeede95878..c561a44857b 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgrader.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgrader.java
@@ -50,7 +50,7 @@ public class OsUpgrader extends InfrastructureUpgrader<OsVersionTarget> {
" with time budget " + zoneUpgradeBudget));
controller().serviceRegistry().configServer().nodeRepository().upgradeOs(zone.getVirtualId(), application.nodeType(),
target.osVersion().version(),
- Optional.of(zoneUpgradeBudget));
+ zoneUpgradeBudget);
}
@Override
@@ -89,15 +89,15 @@ public class OsUpgrader extends InfrastructureUpgrader<OsVersionTarget> {
/** Returns the available upgrade budget for given zone */
private Duration zoneBudgetOf(Duration totalBudget, ZoneApi zone) {
- if (!spendBudget(zone)) return Duration.ZERO;
+ if (!spendBudgetOn(zone)) return Duration.ZERO;
long consecutiveZones = upgradePolicy.asList().stream()
- .filter(parallelZones -> parallelZones.stream().anyMatch(this::spendBudget))
+ .filter(parallelZones -> parallelZones.stream().anyMatch(this::spendBudgetOn))
.count();
return totalBudget.dividedBy(consecutiveZones);
}
/** Returns whether to spend upgrade budget on given zone */
- private boolean spendBudget(ZoneApi zone) {
+ private boolean spendBudgetOn(ZoneApi zone) {
if (!zone.getEnvironment().isProduction()) return false;
if (controller().zoneRegistry().systemZone().getVirtualId().equals(zone.getVirtualId())) return false; // Controller zone
return true;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsVersionStatusUpdater.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsVersionStatusUpdater.java
index 271dd277e1c..119540eaa68 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsVersionStatusUpdater.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsVersionStatusUpdater.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.vespa.hosted.controller.Controller;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployer.java
index 9d93ac719b7..db9dc51ffa9 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.vespa.hosted.controller.Application;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ReadyJobsTrigger.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ReadyJobsTrigger.java
index ffe958cb63a..26df8669fb1 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ReadyJobsTrigger.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ReadyJobsTrigger.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.vespa.hosted.controller.Controller;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ReindexingTriggerer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ReindexingTriggerer.java
index 0bd74c844ae..34b1ea34227 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ReindexingTriggerer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ReindexingTriggerer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.ApplicationId;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java
index 39ad233ce46..854780dd336 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java
@@ -12,6 +12,7 @@ import com.yahoo.jdisc.Metric;
import com.yahoo.vespa.hosted.controller.ApplicationController;
import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeRepository;
import com.yahoo.vespa.hosted.controller.api.integration.resource.MeteringClient;
import com.yahoo.vespa.hosted.controller.api.integration.resource.ResourceAllocation;
@@ -142,7 +143,7 @@ public class ResourceMeterMaintainer extends ControllerMaintainer {
return controller().zoneRegistry().zones()
.reachable().zones().stream()
.map(ZoneApi::getId)
- .map(zoneId -> createResourceSnapshotsFromNodes(zoneId, nodeRepository.list(zoneId, false)))
+ .map(zoneId -> createResourceSnapshotsFromNodes(zoneId, nodeRepository.list(zoneId, NodeFilter.all())))
.flatMap(Collection::stream)
.collect(Collectors.toList());
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainer.java
index e0441df025b..4d2c0a87bc0 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainer.java
@@ -9,10 +9,10 @@ import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.api.integration.aws.ResourceTagger;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import java.time.Duration;
import java.util.Map;
-import java.util.Optional;
import java.util.logging.Level;
import java.util.stream.Collectors;
@@ -47,7 +47,7 @@ public class ResourceTagMaintainer extends ControllerMaintainer {
private Map<HostName, ApplicationId> getTenantOfParentHosts(ZoneId zoneId) {
return controller().serviceRegistry().configServer().nodeRepository()
- .list(zoneId, false)
+ .list(zoneId, NodeFilter.all())
.stream()
.filter(node -> node.type().isHost())
.collect(Collectors.toMap(
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/RetriggerMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/RetriggerMaintainer.java
index 2cc3ac1bd6c..73d28a1eeae 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/RetriggerMaintainer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/RetriggerMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/SystemRoutingPolicyMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/SystemRoutingPolicyMaintainer.java
index 5f147d6e048..1d5d444a32c 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/SystemRoutingPolicyMaintainer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/SystemRoutingPolicyMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.application.api.DeploymentSpec;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgrader.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgrader.java
index 8f57b3f2239..8b0371e2c1a 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgrader.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgrader.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.component.Version;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/TenantRoleMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/TenantRoleMaintainer.java
index 637ae10bcc6..7c6decb4a93 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/TenantRoleMaintainer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/TenantRoleMaintainer.java
@@ -1,11 +1,10 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
+import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.TenantName;
-import com.yahoo.vespa.flags.BooleanFlag;
-import com.yahoo.vespa.flags.FetchVector;
-import com.yahoo.vespa.flags.Flags;
+import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.Application;
import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.tenant.Tenant;
@@ -26,9 +25,15 @@ public class TenantRoleMaintainer extends ControllerMaintainer {
protected double maintain() {
var roleService = controller().serviceRegistry().roleService();
var tenants = controller().tenants().asList();
+
+ // Create separate athenz service for all tenants
+ tenants.forEach(roleService::createTenantRole);
+
+ // Until we have moved to separate athenz service per tenant, make sure we update the shared policy
+ // to allow ssh logins for hosts in prod/perf with a separate tenant iam role.
var tenantsWithRoles = tenants.stream()
.map(Tenant::name)
- .filter(this::hasProductionDeployment)
+ .filter(tenant -> hasProductionDeployment(tenant) || hasPerfDeployment(tenant))
.collect(Collectors.toList());
roleService.maintainRoles(tenantsWithRoles);
return 1.0;
@@ -39,4 +44,13 @@ public class TenantRoleMaintainer extends ControllerMaintainer {
.map(Application::productionInstances)
.anyMatch(Predicate.not(Map::isEmpty));
}
+
+ private boolean hasPerfDeployment(TenantName tenant) {
+ List<ZoneId> perfZones = controller().zoneRegistry().zones().controllerUpgraded().in(Environment.perf).ids();
+ return controller().applications().asList(tenant).stream()
+ .map(Application::instances)
+ .flatMap(instances -> instances.values().stream())
+ .flatMap(instance -> instance.deployments().values().stream())
+ .anyMatch(x -> perfZones.contains(x.zone()));
+ }
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/TrafficShareUpdater.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/TrafficShareUpdater.java
index 8c891339e29..832dbb6b921 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/TrafficShareUpdater.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/TrafficShareUpdater.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.vespa.hosted.controller.ApplicationController;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/UserManagementMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/UserManagementMaintainer.java
new file mode 100644
index 00000000000..870e3af678f
--- /dev/null
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/UserManagementMaintainer.java
@@ -0,0 +1,68 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.controller.maintenance;
+
+import com.yahoo.config.provision.SystemName;
+import com.yahoo.vespa.hosted.controller.Application;
+import com.yahoo.vespa.hosted.controller.Controller;
+import com.yahoo.vespa.hosted.controller.api.integration.user.Roles;
+import com.yahoo.vespa.hosted.controller.api.integration.user.UserManagement;
+import com.yahoo.vespa.hosted.controller.api.role.ApplicationRole;
+import com.yahoo.vespa.hosted.controller.api.role.Role;
+import com.yahoo.vespa.hosted.controller.api.role.TenantRole;
+
+import java.time.Duration;
+import java.util.List;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+
+/**
+ * Maintains user management resources.
+ * For now, ensures there's no discrepnacy between expected tenant/application roles and Auth0 roles
+ *
+ * @author olaa
+ */
+public class UserManagementMaintainer extends ControllerMaintainer {
+
+ private final UserManagement userManagement;
+
+ private static final Logger logger = Logger.getLogger(UserManagementMaintainer.class.getName());
+
+ public UserManagementMaintainer(Controller controller, Duration interval, UserManagement userManagement) {
+ super(controller, interval, UserManagementMaintainer.class.getSimpleName(), SystemName.allOf(SystemName::isPublic));
+ this.userManagement = userManagement;
+
+ }
+
+ @Override
+ protected double maintain() {
+ findLeftoverRoles().forEach(role -> {
+ /*
+ Log discrepancy now
+ TODO: userManagement.deleteRole(role);
+ */
+ logger.warning(String.format("Found unexpected role %s - Please investigate", role.toString()));
+ });
+ return 1.0;
+ }
+
+ // protected for testing
+ protected List<Role> findLeftoverRoles() {
+ var tenantRoles = controller().tenants().asList()
+ .stream()
+ .flatMap(tenant -> Roles.tenantRoles(tenant.name()).stream())
+ .collect(Collectors.toList());
+
+ var applicationRoles = controller().applications().asList()
+ .stream()
+ .map(Application::id)
+ .flatMap(applicationId -> Roles.applicationRoles(applicationId.tenant(), applicationId.application()).stream())
+ .collect(Collectors.toList());
+
+ return userManagement.listRoles().stream()
+ .peek(role -> logger.fine(role::toString))
+ .filter(role -> role instanceof TenantRole || role instanceof ApplicationRole)
+ .filter(role -> !tenantRoles.contains(role) && !applicationRoles.contains(role))
+ .collect(Collectors.toList());
+ }
+
+}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/VCMRMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/VcmrMaintainer.java
index 38e10aa6750..471b65dbd42 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/VCMRMaintainer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/VcmrMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.Environment;
@@ -8,15 +8,14 @@ import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.text.Text;
import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeRepository;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeRepositoryNode;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeState;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.ChangeRequest;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.ChangeRequest.Impact;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.ChangeRequestClient;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.HostAction;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.HostAction.State;
-import com.yahoo.vespa.hosted.controller.api.integration.vcmr.VCMRReport;
+import com.yahoo.vespa.hosted.controller.api.integration.vcmr.VcmrReport;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.VespaChangeRequest;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.VespaChangeRequest.Status;
import com.yahoo.vespa.hosted.controller.persistence.CuratorDb;
@@ -34,22 +33,25 @@ import java.util.logging.Logger;
import java.util.stream.Collectors;
/**
- * @author olaa
*
- * Maintains status and execution of VCMRs
- * For now only retires all affected tenant hosts if zone capacity allows it
+ * Maintains status and execution of Vespa CMRs.
+ *
+ * Currently this retires all affected tenant hosts if zone capacity allows it.
+ *
+ * @author olaa
*/
-public class VCMRMaintainer extends ControllerMaintainer {
+public class VcmrMaintainer extends ControllerMaintainer {
+
+ private static final Logger LOG = Logger.getLogger(VcmrMaintainer.class.getName());
+ private static final Duration ALLOWED_RETIREMENT_TIME = Duration.ofHours(60);
+ private static final Duration ALLOWED_POSTPONEMENT_TIME = Duration.ofDays(7);
- private final Logger logger = Logger.getLogger(VCMRMaintainer.class.getName());
- private final Duration ALLOWED_RETIREMENT_TIME = Duration.ofHours(60);
- private final Duration ALLOWED_POSTPONEMENT_TIME = Duration.ofDays(7);
private final CuratorDb curator;
private final NodeRepository nodeRepository;
private final ChangeRequestClient changeRequestClient;
private final SystemName system;
- public VCMRMaintainer(Controller controller, Duration interval) {
+ public VcmrMaintainer(Controller controller, Duration interval) {
super(controller, interval, null, SystemName.allOf(Predicate.not(SystemName::isPublic)));
this.curator = controller.curator();
this.nodeRepository = controller.serviceRegistry().configServer().nodeRepository();
@@ -144,7 +146,7 @@ public class VCMRMaintainer extends ControllerMaintainer {
.orElse(new HostAction(node.hostname().value(), State.NONE, Instant.now()));
if (changeRequest.getChangeRequestSource().isClosed()) {
- logger.fine(() -> changeRequest.getChangeRequestSource().getId() + " is closed, recycling " + node.hostname());
+ LOG.fine(() -> changeRequest.getChangeRequestSource().getId() + " is closed, recycling " + node.hostname());
recycleNode(changeRequest.getZoneId(), node, hostAction);
removeReport(changeRequest, node);
return hostAction.withState(State.COMPLETE);
@@ -156,7 +158,7 @@ public class VCMRMaintainer extends ControllerMaintainer {
addReport(changeRequest, node);
if (isPostponed(changeRequest, hostAction)) {
- logger.fine(() -> changeRequest.getChangeRequestSource().getId() + " is postponed, recycling " + node.hostname());
+ LOG.fine(() -> changeRequest.getChangeRequestSource().getId() + " is postponed, recycling " + node.hostname());
recycleNode(changeRequest.getZoneId(), node, hostAction);
return hostAction.withState(State.PENDING_RETIREMENT);
}
@@ -167,14 +169,14 @@ public class VCMRMaintainer extends ControllerMaintainer {
if (shouldRetire(changeRequest, hostAction)) {
if (!node.wantToRetire()) {
- logger.info(Text.format("Retiring %s due to %s", node.hostname().value(), changeRequest.getChangeRequestSource().getId()));
+ LOG.info(Text.format("Retiring %s due to %s", node.hostname().value(), changeRequest.getChangeRequestSource().getId()));
// TODO: Remove try/catch once retirement is stabilized
try {
setWantToRetire(changeRequest.getZoneId(), node, true);
} catch (Exception e) {
- logger.warning("Failed to retire host " + node.hostname() + ": " + Exceptions.toMessageString(e));
+ LOG.warning("Failed to retire host " + node.hostname() + ": " + Exceptions.toMessageString(e));
// Check if retirement actually failed
- if (!nodeRepository.getNode(changeRequest.getZoneId(), node.hostname().value()).getWantToRetire()) {
+ if (!nodeRepository.getNode(changeRequest.getZoneId(), node.hostname().value()).wantToRetire()) {
return hostAction;
}
}
@@ -183,12 +185,12 @@ public class VCMRMaintainer extends ControllerMaintainer {
}
if (hasRetired(node, hostAction)) {
- logger.fine(() -> node.hostname() + " has retired");
+ LOG.fine(() -> node.hostname() + " has retired");
return hostAction.withState(State.RETIRED);
}
if (pendingRetirement(node, hostAction)) {
- logger.fine(() -> node.hostname() + " is pending retirement");
+ LOG.fine(() -> node.hostname() + " is pending retirement");
return hostAction.withState(State.PENDING_RETIREMENT);
}
@@ -199,8 +201,8 @@ public class VCMRMaintainer extends ControllerMaintainer {
private void recycleNode(ZoneId zoneId, Node node, HostAction hostAction) {
if (hostAction.getState() == State.RETIRED &&
node.state() == Node.State.parked) {
- logger.info("Setting " + node.hostname() + " to dirty");
- nodeRepository.setState(zoneId, NodeState.dirty, node.hostname().value());
+ LOG.info("Setting " + node.hostname() + " to dirty");
+ nodeRepository.setState(zoneId, Node.State.dirty, node.hostname().value());
}
if (hostAction.getState() == State.RETIRING && node.wantToRetire()) {
try {
@@ -244,7 +246,7 @@ public class VCMRMaintainer extends ControllerMaintainer {
.stream()
.collect(Collectors.toMap(
zone -> zone,
- zone -> nodeRepository.list(zone, false)
+ zone -> nodeRepository.list(zone, NodeFilter.all())
));
}
@@ -274,9 +276,7 @@ public class VCMRMaintainer extends ControllerMaintainer {
}
private void setWantToRetire(ZoneId zoneId, Node node, boolean wantToRetire) {
- var newNode = new NodeRepositoryNode();
- newNode.setWantToRetire(wantToRetire);
- nodeRepository.patchNode(zoneId, node.hostname().value(), newNode);
+ nodeRepository.retire(zoneId, node.hostname().value(), wantToRetire, false);
}
private void approveChangeRequest(VespaChangeRequest changeRequest) {
@@ -287,12 +287,12 @@ public class VCMRMaintainer extends ControllerMaintainer {
if (changeRequest.getApproval() != ChangeRequest.Approval.REQUESTED)
return;
- logger.info("Approving " + changeRequest.getChangeRequestSource().getId());
+ LOG.info("Approving " + changeRequest.getChangeRequestSource().getId());
changeRequestClient.approveChangeRequest(changeRequest);
}
private void removeReport(VespaChangeRequest changeRequest, Node node) {
- var report = VCMRReport.fromReports(node.reports());
+ var report = VcmrReport.fromReports(node.reports());
if (report.removeVcmr(changeRequest.getChangeRequestSource().getId())) {
updateReport(changeRequest.getZoneId(), node, report);
@@ -300,7 +300,7 @@ public class VCMRMaintainer extends ControllerMaintainer {
}
private void addReport(VespaChangeRequest changeRequest, Node node) {
- var report = VCMRReport.fromReports(node.reports());
+ var report = VcmrReport.fromReports(node.reports());
var source = changeRequest.getChangeRequestSource();
if (report.addVcmr(source.getId(), source.getPlannedStartTime(), source.getPlannedEndTime())) {
@@ -308,10 +308,9 @@ public class VCMRMaintainer extends ControllerMaintainer {
}
}
- private void updateReport(ZoneId zoneId, Node node, VCMRReport report) {
- logger.info(Text.format("Updating report for %s: %s", node.hostname(), report));
- var newNode = new NodeRepositoryNode();
- newNode.setReports(report.toNodeReports());
- nodeRepository.patchNode(zoneId, node.hostname().value(), newNode);
+ private void updateReport(ZoneId zoneId, Node node, VcmrReport report) {
+ LOG.info(Text.format("Updating report for %s: %s", node.hostname(), report));
+ nodeRepository.updateReports(zoneId, node.hostname().value(), report.toNodeReports());
}
+
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/VersionStatusUpdater.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/VersionStatusUpdater.java
index e4866c43f13..6bf73c45965 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/VersionStatusUpdater.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/VersionStatusUpdater.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.vespa.hosted.controller.Controller;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/package-info.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/package-info.java
index 14267807041..6ff3e2d1c52 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/package-info.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.controller.maintenance;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/metric/CostCalculator.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/metric/CostCalculator.java
index b6468464a0b..c3b2d794a71 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/metric/CostCalculator.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/metric/CostCalculator.java
@@ -6,6 +6,7 @@ import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.TenantName;
import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.api.identifiers.Property;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeRepository;
import com.yahoo.vespa.hosted.controller.api.integration.resource.ResourceAllocation;
import com.yahoo.vespa.hosted.controller.application.SystemApplication;
@@ -48,7 +49,7 @@ public class CostCalculator {
Map<Property, ResourceAllocation> allocationByProperty = new HashMap<>();
var nodes = controller.zoneRegistry().zones()
.reachable().in(Environment.prod).ofCloud(cloudName).zones().stream()
- .flatMap(zone -> uncheck(() -> nodeRepository.list(zone.getId(), false).stream()))
+ .flatMap(zone -> uncheck(() -> nodeRepository.list(zone.getId(), NodeFilter.all()).stream()))
.filter(node -> node.owner().isPresent() && !node.owner().get().tenant().equals(SystemApplication.TENANT))
.collect(Collectors.toList());
var totalAllocation = ResourceAllocation.ZERO;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/notification/Notification.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/notification/Notification.java
index b65a9290e43..5935a0d51fd 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/notification/Notification.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/notification/Notification.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.notification;
import java.time.Instant;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/notification/NotificationSource.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/notification/NotificationSource.java
index aeb017e14a3..c414e24a187 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/notification/NotificationSource.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/notification/NotificationSource.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.notification;
import com.yahoo.config.provision.ApplicationId;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/notification/NotificationsDb.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/notification/NotificationsDb.java
index fa1419c6d7d..88c55393b56 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/notification/NotificationsDb.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/notification/NotificationsDb.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.notification;
import com.yahoo.collections.Pair;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/package-info.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/package-info.java
index 112e90e2cd7..26e6a6b89e1 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/package-info.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* The root package of the controller
*
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java
index 26fb4be04af..2f9c8488668 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.component.Version;
@@ -107,6 +107,7 @@ public class ApplicationSerializer {
private static final String branchField = "branchField";
private static final String commitField = "commitField";
private static final String authorEmailField = "authorEmailField";
+ private static final String deployedDirectlyField = "deployedDirectly";
private static final String compileVersionField = "compileVersion";
private static final String buildTimeField = "buildTime";
private static final String sourceUrlField = "sourceUrl";
@@ -228,6 +229,7 @@ public class ApplicationSerializer {
applicationVersion.buildTime().ifPresent(time -> object.setLong(buildTimeField, time.toEpochMilli()));
applicationVersion.sourceUrl().ifPresent(url -> object.setString(sourceUrlField, url));
applicationVersion.commit().ifPresent(commit -> object.setString(commitField, commit));
+ object.setBool(deployedDirectlyField, applicationVersion.isDeployedDirectly());
}
private void toSlime(SourceRevision sourceRevision, Cursor object) {
@@ -422,7 +424,11 @@ public class ApplicationSerializer {
Optional<String> sourceUrl = SlimeUtils.optionalString(object.field(sourceUrlField));
Optional<String> commit = SlimeUtils.optionalString(object.field(commitField));
- return new ApplicationVersion(sourceRevision, applicationBuildNumber, authorEmail, compileVersion, buildTime, sourceUrl, commit);
+ // TODO (freva): Simplify once this has rolled out everywhere
+ Inspector deployedDirectlyInspector = object.field(deployedDirectlyField);
+ boolean deployedDirectly = deployedDirectlyInspector.valid() && deployedDirectlyInspector.asBool();
+
+ return new ApplicationVersion(sourceRevision, applicationBuildNumber, authorEmail, compileVersion, buildTime, sourceUrl, commit, deployedDirectly);
}
private Optional<SourceRevision> sourceRevisionFromSlime(Inspector object) {
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ArchiveBucketsSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ArchiveBucketsSerializer.java
index 3a625c5c42c..269864ad641 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ArchiveBucketsSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ArchiveBucketsSerializer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.config.provision.TenantName;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/BufferedLogStore.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/BufferedLogStore.java
index 073d1799d3e..5e005c9467c 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/BufferedLogStore.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/BufferedLogStore.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.config.provision.ApplicationId;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ChangeRequestSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ChangeRequestSerializer.java
index 49da8d7a2a2..dbf14f4df87 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ChangeRequestSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ChangeRequestSerializer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.config.provision.zone.ZoneId;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ConfidenceOverrideSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ConfidenceOverrideSerializer.java
index 2cb981aac03..f9306103e71 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ConfidenceOverrideSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ConfidenceOverrideSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.component.Version;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ControllerVersionSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ControllerVersionSerializer.java
index 24a6ef72438..8b599b45558 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ControllerVersionSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ControllerVersionSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.component.Version;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/EndpointCertificateMetadataSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/EndpointCertificateMetadataSerializer.java
index 3ced0d60453..310b3637b84 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/EndpointCertificateMetadataSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/EndpointCertificateMetadataSerializer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.slime.Cursor;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/JobControlFlags.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/JobControlFlags.java
index 109e761f925..41bf85f021b 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/JobControlFlags.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/JobControlFlags.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.concurrent.maintenance.JobControlState;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/LogSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/LogSerializer.java
index 4e3ab293a02..26cd4acdb4c 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/LogSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/LogSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.slime.ArrayTraverser;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/MockCuratorDb.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/MockCuratorDb.java
index ab88e8fe019..f98ecb80dd5 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/MockCuratorDb.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/MockCuratorDb.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.google.inject.Inject;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/NotificationsSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/NotificationsSerializer.java
index ba1c5350580..10763e1f22c 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/NotificationsSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/NotificationsSerializer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.config.provision.ApplicationName;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionSerializer.java
index d68e24a27ea..7551799ec85 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.component.Version;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionStatusSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionStatusSerializer.java
index e2420993cb2..a4278b76200 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionStatusSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionStatusSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.google.common.collect.ImmutableMap;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionTargetSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionTargetSerializer.java
index 4eac5a64b0c..9cad402832f 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionTargetSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionTargetSerializer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.slime.ArrayTraverser;
@@ -45,10 +45,8 @@ public class OsVersionTargetSerializer {
Set<OsVersionTarget> osVersionTargets = new TreeSet<>();
array.traverse((ArrayTraverser) (i, inspector) -> {
OsVersion osVersion = osVersionSerializer.fromSlime(inspector);
- Duration upgradeBudget = Duration.ofMillis(inspector.field(upgradeBudgetField).asLong());
- // TODO(mpolden): Require after 2021-09-01
- Instant scheduledAt = SlimeUtils.optionalInstant(inspector.field(scheduledAtField))
- .orElse(Instant.EPOCH);
+ Duration upgradeBudget = SlimeUtils.duration(inspector.field(upgradeBudgetField));
+ Instant scheduledAt = SlimeUtils.instant(inspector.field(scheduledAtField));
osVersionTargets.add(new OsVersionTarget(osVersion, upgradeBudget, scheduledAt));
});
return Collections.unmodifiableSet(osVersionTargets);
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializer.java
index 8ffa4823ead..6af3978d0cd 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.component.Version;
@@ -89,6 +89,7 @@ class RunSerializer {
private static final String branchField = "branch";
private static final String commitField = "commit";
private static final String authorEmailField = "authorEmail";
+ private static final String deployedDirectlyField = "deployedDirectly";
private static final String compileVersionField = "compileVersion";
private static final String buildTimeField = "buildTime";
private static final String sourceUrlField = "sourceUrl";
@@ -99,6 +100,7 @@ class RunSerializer {
private static final String noNodesDownSinceField = "noNodesDownSince";
private static final String convergenceSummaryField = "convergenceSummaryV2";
private static final String testerCertificateField = "testerCertificate";
+ private static final String isDryRunField = "isDryRun";
Run runFromSlime(Slime slime) {
return runFromSlime(slime.get());
@@ -142,7 +144,8 @@ class RunSerializer {
convergenceSummaryFrom(runObject.field(convergenceSummaryField)),
Optional.of(runObject.field(testerCertificateField))
.filter(Inspector::valid)
- .map(certificate -> X509CertificateUtils.fromPem(certificate.asString())));
+ .map(certificate -> X509CertificateUtils.fromPem(certificate.asString())),
+ runObject.field(isDryRunField).valid() && runObject.field(isDryRunField).asBool());
}
private Versions versionsFromSlime(Inspector versionsObject) {
@@ -175,8 +178,12 @@ class RunSerializer {
Optional<String> sourceUrl = SlimeUtils.optionalString(versionObject.field(sourceUrlField));
Optional<String> commit = SlimeUtils.optionalString(versionObject.field(commitField));
+ // TODO (freva): Simplify once this has rolled out everywhere
+ Inspector deployedDirectlyInspector = versionObject.field(deployedDirectlyField);
+ boolean deployedDirectly = deployedDirectlyInspector.valid() && deployedDirectlyInspector.asBool();
+
return new ApplicationVersion(source, OptionalLong.of(buildNumber), authorEmail,
- compileVersion, buildTime, sourceUrl, commit);
+ compileVersion, buildTime, sourceUrl, commit, deployedDirectly);
}
// Don't change this — introduce a separate array instead.
@@ -245,6 +252,7 @@ class RunSerializer {
.orElseThrow(() -> new IllegalArgumentException("Source versions must be both present or absent.")),
versionsObject.setObject(sourceField));
});
+ runObject.setBool(isDryRunField, run.isDryRun());
}
private void toSlime(Version platformVersion, ApplicationVersion applicationVersion, Cursor versionsObject) {
@@ -259,6 +267,7 @@ class RunSerializer {
applicationVersion.buildTime().ifPresent(time -> versionsObject.setLong(buildTimeField, time.toEpochMilli()));
applicationVersion.sourceUrl().ifPresent(url -> versionsObject.setString(sourceUrlField, url));
applicationVersion.commit().ifPresent(commit -> versionsObject.setString(commitField, commit));
+ versionsObject.setBool(deployedDirectlyField, applicationVersion.isDeployedDirectly());
}
// Don't change this - introduce a separate array with new values if needed.
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/SupportAccessSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/SupportAccessSerializer.java
index 33596fce2bd..e9e5f8cf032 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/SupportAccessSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/SupportAccessSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2021 Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.security.X509CertificateUtils;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java
index 6b167f26314..1b6a0a6a122 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.google.common.collect.BiMap;
@@ -19,6 +19,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.organization.Contact;
import com.yahoo.vespa.hosted.controller.api.integration.organization.BillingInfo;
import com.yahoo.vespa.hosted.controller.tenant.AthenzTenant;
import com.yahoo.vespa.hosted.controller.tenant.CloudTenant;
+import com.yahoo.vespa.hosted.controller.tenant.DeletedTenant;
import com.yahoo.vespa.hosted.controller.tenant.LastLoginInfo;
import com.yahoo.vespa.hosted.controller.tenant.Tenant;
import com.yahoo.vespa.hosted.controller.tenant.TenantInfo;
@@ -56,6 +57,7 @@ public class TenantSerializer {
private static final String propertyIdField = "propertyId";
private static final String creatorField = "creator";
private static final String createdAtField = "createdAt";
+ private static final String deletedAtField = "deletedAt";
private static final String contactField = "contact";
private static final String contactUrlField = "contactUrl";
private static final String propertyUrlField = "propertyUrl";
@@ -84,9 +86,10 @@ public class TenantSerializer {
toSlime(tenant.lastLoginInfo(), tenantObject.setObject(lastLoginInfoField));
switch (tenant.type()) {
- case athenz: toSlime((AthenzTenant) tenant, tenantObject); break;
- case cloud: toSlime((CloudTenant) tenant, tenantObject); break;
- default: throw new IllegalArgumentException("Unexpected tenant type '" + tenant.type() + "'.");
+ case athenz: toSlime((AthenzTenant) tenant, tenantObject); break;
+ case cloud: toSlime((CloudTenant) tenant, tenantObject); break;
+ case deleted: toSlime((DeletedTenant) tenant, tenantObject); break;
+ default: throw new IllegalArgumentException("Unexpected tenant type '" + tenant.type() + "'.");
}
return slime;
}
@@ -114,6 +117,10 @@ public class TenantSerializer {
tenant.archiveAccessRole().ifPresent(role -> root.setString(archiveAccessRoleField, role));
}
+ private void toSlime(DeletedTenant tenant, Cursor root) {
+ root.setLong(deletedAtField, tenant.deletedAt().toEpochMilli());
+ }
+
private void developerKeysToSlime(BiMap<PublicKey, Principal> keys, Cursor array) {
keys.forEach((key, user) -> {
Cursor object = array.addObject();
@@ -139,9 +146,10 @@ public class TenantSerializer {
Tenant.Type type = typeOf(tenantObject.field(typeField).asString());
switch (type) {
- case athenz: return athenzTenantFrom(tenantObject);
- case cloud: return cloudTenantFrom(tenantObject);
- default: throw new IllegalArgumentException("Unexpected tenant type '" + type + "'.");
+ case athenz: return athenzTenantFrom(tenantObject);
+ case cloud: return cloudTenantFrom(tenantObject);
+ case deleted: return deletedTenantFrom(tenantObject);
+ default: throw new IllegalArgumentException("Unexpected tenant type '" + type + "'.");
}
}
@@ -168,6 +176,13 @@ public class TenantSerializer {
return new CloudTenant(name, createdAt, lastLoginInfo, creator, developerKeys, info, tenantSecretStores, archiveAccessRole);
}
+ private DeletedTenant deletedTenantFrom(Inspector tenantObject) {
+ TenantName name = TenantName.from(tenantObject.field(nameField).asString());
+ Instant createdAt = SlimeUtils.instant(tenantObject.field(createdAtField));
+ Instant deletedAt = SlimeUtils.instant(tenantObject.field(deletedAtField));
+ return new DeletedTenant(name, createdAt, deletedAt);
+ }
+
private BiMap<PublicKey, Principal> developerKeysFromSlime(Inspector array) {
ImmutableBiMap.Builder<PublicKey, Principal> keys = ImmutableBiMap.builder();
array.traverse((ArrayTraverser) (__, keyObject) ->
@@ -321,23 +336,20 @@ public class TenantSerializer {
return personLists;
}
- private BillingInfo billingInfoFrom(Inspector billingInfoObject) {
- return new BillingInfo(billingInfoObject.field(customerIdField).asString(),
- billingInfoObject.field(productCodeField).asString());
- }
-
private static Tenant.Type typeOf(String value) {
switch (value) {
- case "athenz": return Tenant.Type.athenz;
- case "cloud": return Tenant.Type.cloud;
+ case "athenz": return Tenant.Type.athenz;
+ case "cloud": return Tenant.Type.cloud;
+ case "deleted": return Tenant.Type.deleted;
default: throw new IllegalArgumentException("Unknown tenant type '" + value + "'.");
}
}
private static String valueOf(Tenant.Type type) {
switch (type) {
- case athenz: return "athenz";
- case cloud: return "cloud";
+ case athenz: return "athenz";
+ case cloud: return "cloud";
+ case deleted: return "deleted";
default: throw new IllegalArgumentException("Unexpected tenant type '" + type + "'.");
}
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/package-info.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/package-info.java
index 87a14660fee..b9c6290f582 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/package-info.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Persistence layer for the controller.
*
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ConfigServerRestExecutor.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ConfigServerRestExecutor.java
index 110d994c179..c02cfc2ce65 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ConfigServerRestExecutor.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ConfigServerRestExecutor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.proxy;
import com.yahoo.container.jdisc.HttpResponse;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ConfigServerRestExecutorImpl.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ConfigServerRestExecutorImpl.java
index 6cc7446499f..6116b2e27b6 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ConfigServerRestExecutorImpl.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ConfigServerRestExecutorImpl.java
@@ -1,7 +1,6 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.proxy;
-import ai.vespa.util.http.hc4.retry.Sleeper;
import com.google.inject.Inject;
import com.yahoo.component.AbstractComponent;
import com.yahoo.jdisc.http.HttpRequest.Method;
@@ -10,6 +9,7 @@ import com.yahoo.vespa.athenz.api.AthenzIdentity;
import com.yahoo.vespa.athenz.identity.ServiceIdentityProvider;
import com.yahoo.vespa.athenz.tls.AthenzIdentityVerifier;
import com.yahoo.vespa.hosted.controller.api.integration.zone.ZoneRegistry;
+import com.yahoo.yolean.concurrent.Sleeper;
import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.client.config.RequestConfig;
@@ -69,7 +69,7 @@ public class ConfigServerRestExecutorImpl extends AbstractComponent implements C
@Inject
public ConfigServerRestExecutorImpl(ZoneRegistry zoneRegistry, ServiceIdentityProvider sslContextProvider) {
- this(zoneRegistry, sslContextProvider.getIdentitySslContext(), new Sleeper.Default(),
+ this(zoneRegistry, sslContextProvider.getIdentitySslContext(), Sleeper.DEFAULT,
new ConnectionReuseStrategy(zoneRegistry));
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ProxyRequest.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ProxyRequest.java
index c3cdd69041f..2a1b8a19475 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ProxyRequest.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ProxyRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.proxy;
import com.yahoo.container.jdisc.HttpRequest;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ProxyResponse.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ProxyResponse.java
index b0b4f1a556a..0b629a577d0 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ProxyResponse.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/ProxyResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.proxy;
import com.yahoo.container.jdisc.HttpResponse;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/package-info.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/package-info.java
index c4472fb79e4..ccc874f8f7a 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/package-info.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/proxy/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Haakon Dybdahl
*/
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
index c1e6c362c83..1774694853b 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
@@ -25,6 +25,7 @@ import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.container.jdisc.LoggingRequestHandler;
import com.yahoo.io.IOUtils;
+import com.yahoo.restapi.ByteArrayResponse;
import com.yahoo.restapi.ErrorResponse;
import com.yahoo.restapi.MessageResponse;
import com.yahoo.restapi.Path;
@@ -37,6 +38,8 @@ import com.yahoo.slime.JsonParseException;
import com.yahoo.slime.Slime;
import com.yahoo.slime.SlimeUtils;
import com.yahoo.text.Text;
+import com.yahoo.vespa.flags.Flags;
+import com.yahoo.vespa.flags.ListFlag;
import com.yahoo.vespa.hosted.controller.Application;
import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.Instance;
@@ -49,6 +52,7 @@ import com.yahoo.vespa.hosted.controller.api.application.v4.model.configserverbi
import com.yahoo.vespa.hosted.controller.api.application.v4.model.configserverbindings.RestartAction;
import com.yahoo.vespa.hosted.controller.api.application.v4.model.configserverbindings.ServiceInfo;
import com.yahoo.vespa.hosted.controller.api.identifiers.DeploymentId;
+import com.yahoo.vespa.hosted.controller.api.identifiers.Hostname;
import com.yahoo.vespa.hosted.controller.api.identifiers.TenantId;
import com.yahoo.vespa.hosted.controller.api.integration.aws.TenantRoles;
import com.yahoo.vespa.hosted.controller.api.integration.billing.Quota;
@@ -57,6 +61,8 @@ import com.yahoo.vespa.hosted.controller.api.integration.configserver.Cluster;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.ConfigServerException;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Log;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeRepository;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationVersion;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobId;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
@@ -71,7 +77,6 @@ import com.yahoo.vespa.hosted.controller.api.role.Role;
import com.yahoo.vespa.hosted.controller.api.role.RoleDefinition;
import com.yahoo.vespa.hosted.controller.api.role.SecurityContext;
import com.yahoo.vespa.hosted.controller.application.ActivateResult;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.AssignedRotation;
import com.yahoo.vespa.hosted.controller.application.Change;
import com.yahoo.vespa.hosted.controller.application.Deployment;
@@ -81,6 +86,7 @@ import com.yahoo.vespa.hosted.controller.application.EndpointList;
import com.yahoo.vespa.hosted.controller.application.QuotaUsage;
import com.yahoo.vespa.hosted.controller.application.SystemApplication;
import com.yahoo.vespa.hosted.controller.application.TenantAndApplicationId;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.auditlog.AuditLoggingRequestHandler;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentStatus;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentSteps;
@@ -102,6 +108,7 @@ import com.yahoo.vespa.hosted.controller.security.Credentials;
import com.yahoo.vespa.hosted.controller.support.access.SupportAccess;
import com.yahoo.vespa.hosted.controller.tenant.AthenzTenant;
import com.yahoo.vespa.hosted.controller.tenant.CloudTenant;
+import com.yahoo.vespa.hosted.controller.tenant.DeletedTenant;
import com.yahoo.vespa.hosted.controller.tenant.LastLoginInfo;
import com.yahoo.vespa.hosted.controller.tenant.Tenant;
import com.yahoo.vespa.hosted.controller.tenant.TenantInfo;
@@ -145,6 +152,7 @@ import java.util.stream.Stream;
import static com.yahoo.jdisc.Response.Status.BAD_REQUEST;
import static com.yahoo.jdisc.Response.Status.CONFLICT;
+import static com.yahoo.yolean.Exceptions.uncheck;
import static java.util.Map.Entry.comparingByKey;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;
@@ -165,6 +173,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
private final Controller controller;
private final AccessControlRequests accessControlRequests;
private final TestConfigSerializer testConfigSerializer;
+ private final ListFlag<String> allowedServiceViewProxy;
@Inject
public ApplicationApiHandler(LoggingRequestHandler.Context parentCtx,
@@ -174,6 +183,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
this.controller = controller;
this.accessControlRequests = accessControlRequests;
this.testConfigSerializer = new TestConfigSerializer(controller.system());
+ allowedServiceViewProxy = Flags.ALLOWED_SERVICE_VIEW_APIS.bindTo(controller.flagSource());
}
@Override
@@ -237,6 +247,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/compile-version")) return compileVersion(path.get("tenant"), path.get("application"));
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/deployment")) return JobControllerApiHandlerHelper.overviewResponse(controller, TenantAndApplicationId.from(path.get("tenant"), path.get("application")), request.getUri());
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/package")) return applicationPackage(path.get("tenant"), path.get("application"), request);
+ if (path.matches("/application/v4/tenant/{tenant}/application/{application}/diff/{number}")) return applicationPackageDiff(path.get("tenant"), path.get("application"), path.get("number"));
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/deploying")) return deploying(path.get("tenant"), path.get("application"), "default", request);
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/deploying/pin")) return deploying(path.get("tenant"), path.get("application"), "default", request);
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/metering")) return metering(path.get("tenant"), path.get("application"), request);
@@ -245,8 +256,9 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/instance/{instance}/deploying")) return deploying(path.get("tenant"), path.get("application"), path.get("instance"), request);
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/instance/{instance}/deploying/pin")) return deploying(path.get("tenant"), path.get("application"), path.get("instance"), request);
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/instance/{instance}/job")) return JobControllerApiHandlerHelper.jobTypeResponse(controller, appIdFromPath(path), request.getUri());
- if (path.matches("/application/v4/tenant/{tenant}/application/{application}/instance/{instance}/job/{jobtype}")) return JobControllerApiHandlerHelper.runResponse(controller.jobController().runs(appIdFromPath(path), jobTypeFromPath(path)), Optional.ofNullable(request.getProperty("limit")), request.getUri());
+ if (path.matches("/application/v4/tenant/{tenant}/application/{application}/instance/{instance}/job/{jobtype}")) return JobControllerApiHandlerHelper.runResponse(controller.jobController().runs(appIdFromPath(path), jobTypeFromPath(path)).descendingMap(), Optional.ofNullable(request.getProperty("limit")), request.getUri());
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/instance/{instance}/job/{jobtype}/package")) return devApplicationPackage(appIdFromPath(path), jobTypeFromPath(path));
+ if (path.matches("/application/v4/tenant/{tenant}/application/{application}/instance/{instance}/job/{jobtype}/diff/{number}")) return devApplicationPackageDiff(runIdFromPath(path));
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/instance/{instance}/job/{jobtype}/test-config")) return testConfig(appIdFromPath(path), jobTypeFromPath(path));
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/instance/{instance}/job/{jobtype}/run/{number}")) return JobControllerApiHandlerHelper.runDetailsResponse(controller.jobController(), runIdFromPath(path), request.getProperty("after"));
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/instance/{instance}/environment/{environment}/region/{region}")) return deployment(path.get("tenant"), path.get("application"), path.get("instance"), path.get("environment"), path.get("region"), request);
@@ -259,6 +271,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/instance/{instance}/environment/{environment}/region/{region}/content/{*}")) return content(path.get("tenant"), path.get("application"), path.get("instance"), path.get("environment"), path.get("region"), path.getRest(), request);
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/instance/{instance}/environment/{environment}/region/{region}/logs")) return logs(path.get("tenant"), path.get("application"), path.get("instance"), path.get("environment"), path.get("region"), request.propertyMap());
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/instance/{instance}/environment/{environment}/region/{region}/access/support")) return supportAccess(path.get("tenant"), path.get("application"), path.get("instance"), path.get("environment"), path.get("region"), request.propertyMap());
+ if (path.matches("/application/v4/tenant/{tenant}/application/{application}/instance/{instance}/environment/{environment}/region/{region}/node/{node}/service-dump")) return getServiceDump(path.get("tenant"), path.get("application"), path.get("instance"), path.get("environment"), path.get("region"), path.get("node"), request);
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/environment/{environment}/region/{region}/instance/{instance}/metrics")) return metrics(path.get("tenant"), path.get("application"), path.get("instance"), path.get("environment"), path.get("region"));
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/instance/{instance}/environment/{environment}/region/{region}/global-rotation")) return rotationStatus(path.get("tenant"), path.get("application"), path.get("instance"), path.get("environment"), path.get("region"), Optional.ofNullable(request.getProperty("endpointId")));
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/instance/{instance}/environment/{environment}/region/{region}/global-rotation/override")) return getGlobalRotationOverride(path.get("tenant"), path.get("application"), path.get("instance"), path.get("environment"), path.get("region"));
@@ -309,6 +322,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/instance/{instance}/environment/{environment}/region/{region}/restart")) return restart(path.get("tenant"), path.get("application"), path.get("instance"), path.get("environment"), path.get("region"), request);
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/instance/{instance}/environment/{environment}/region/{region}/suspend")) return suspend(path.get("tenant"), path.get("application"), path.get("instance"), path.get("environment"), path.get("region"), true);
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/instance/{instance}/environment/{environment}/region/{region}/access/support")) return allowSupportAccess(path.get("tenant"), path.get("application"), path.get("instance"), path.get("environment"), path.get("region"), request);
+ if (path.matches("/application/v4/tenant/{tenant}/application/{application}/instance/{instance}/environment/{environment}/region/{region}/node/{node}/service-dump")) return requestServiceDump(path.get("tenant"), path.get("application"), path.get("instance"), path.get("environment"), path.get("region"), path.get("node"), request);
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/environment/{environment}/region/{region}/instance/{instance}")) return deploy(path.get("tenant"), path.get("application"), path.get("instance"), path.get("environment"), path.get("region"), request);
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/environment/{environment}/region/{region}/instance/{instance}/deploy")) return deploy(path.get("tenant"), path.get("application"), path.get("instance"), path.get("environment"), path.get("region"), request); // legacy synonym of the above
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/environment/{environment}/region/{region}/instance/{instance}/restart")) return restart(path.get("tenant"), path.get("application"), path.get("instance"), path.get("environment"), path.get("region"), request);
@@ -358,7 +372,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
Slime slime = new Slime();
Cursor tenantArray = slime.setArray();
List<Application> applications = controller.applications().asList();
- for (Tenant tenant : controller.tenants().asList())
+ for (Tenant tenant : controller.tenants().asList(includeDeleted(request)))
toSlime(tenantArray.addObject(),
tenant,
applications.stream().filter(app -> app.id().tenant().equals(tenant.name())).collect(toList()),
@@ -375,13 +389,13 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
private HttpResponse tenants(HttpRequest request) {
Slime slime = new Slime();
Cursor response = slime.setArray();
- for (Tenant tenant : controller.tenants().asList())
+ for (Tenant tenant : controller.tenants().asList(includeDeleted(request)))
tenantInTenantsListToSlime(tenant, request.getUri(), response.addObject());
return new SlimeJsonResponse(slime);
}
private HttpResponse tenant(String tenantName, HttpRequest request) {
- return controller.tenants().get(TenantName.from(tenantName))
+ return controller.tenants().get(TenantName.from(tenantName), includeDeleted(request))
.map(tenant -> tenant(tenant, request))
.orElseGet(() -> ErrorResponse.notFoundError("Tenant '" + tenantName + "' does not exist"));
}
@@ -543,8 +557,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
private HttpResponse applications(String tenantName, Optional<String> applicationName, HttpRequest request) {
TenantName tenant = TenantName.from(tenantName);
- if (controller.tenants().get(tenantName).isEmpty())
- return ErrorResponse.notFoundError("Tenant '" + tenantName + "' does not exist");
+ getTenantOrThrow(tenantName);
List<Application> applications = applicationName.isEmpty() ?
controller.applications().asList(tenant) :
@@ -582,13 +595,20 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
throw new IllegalArgumentException("Only manually deployed zones have dev packages");
ZoneId zone = type.zone(controller.system());
- byte[] applicationPackage = controller.applications().applicationStore().getDev(id, zone);
+ ApplicationVersion version = controller.jobController().last(id, type).get().versions().targetApplication();
+ byte[] applicationPackage = controller.applications().applicationStore().get(new DeploymentId(id, zone), version);
return new ZipResponse(id.toFullString() + "." + zone.value() + ".zip", applicationPackage);
}
+ private HttpResponse devApplicationPackageDiff(RunId runId) {
+ DeploymentId deploymentId = new DeploymentId(runId.application(), runId.job().type().zone(controller.system()));
+ return controller.applications().applicationStore().getDevDiff(deploymentId, runId.number())
+ .map(ByteArrayResponse::new)
+ .orElseThrow(() -> new NotExistsException("No application package diff found for " + runId));
+ }
+
private HttpResponse applicationPackage(String tenantName, String applicationName, HttpRequest request) {
var tenantAndApplication = TenantAndApplicationId.from(tenantName, applicationName);
- var applicationId = ApplicationId.from(tenantName, applicationName, InstanceName.defaultName().value());
long buildNumber;
var requestedBuild = Optional.ofNullable(request.getProperty("build")).map(build -> {
@@ -618,6 +638,13 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
return new ZipResponse(filename, applicationPackage.get());
}
+ private HttpResponse applicationPackageDiff(String tenant, String application, String number) {
+ TenantAndApplicationId tenantAndApplication = TenantAndApplicationId.from(tenant, application);
+ return controller.applications().applicationStore().getDiff(tenantAndApplication.tenant(), tenantAndApplication.application(), Long.parseLong(number))
+ .map(ByteArrayResponse::new)
+ .orElseThrow(() -> new NotExistsException("No application package diff found for '" + tenantAndApplication + "' with build number " + number));
+ }
+
private HttpResponse application(String tenantName, String applicationName, HttpRequest request) {
Slime slime = new Slime();
toSlime(slime.setObject(), getApplication(tenantName, applicationName), request);
@@ -865,7 +892,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
private HttpResponse nodes(String tenantName, String applicationName, String instanceName, String environment, String region) {
ApplicationId id = ApplicationId.from(tenantName, applicationName, instanceName);
ZoneId zone = requireZone(environment, region);
- List<Node> nodes = controller.serviceRegistry().configServer().nodeRepository().list(zone, id);
+ List<Node> nodes = controller.serviceRegistry().configServer().nodeRepository().list(zone, NodeFilter.all().applications(id));
Slime slime = new Slime();
Cursor nodesArray = slime.setObject().setArray("nodes");
@@ -876,11 +903,11 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
node.reservedTo().ifPresent(tenant -> nodeObject.setString("reservedTo", tenant.value()));
nodeObject.setString("orchestration", valueOf(node.serviceState()));
nodeObject.setString("version", node.currentVersion().toString());
- nodeObject.setString("flavor", node.flavor());
+ node.flavor().ifPresent(flavor -> nodeObject.setString("flavor", flavor));
toSlime(node.resources(), nodeObject);
nodeObject.setString("clusterId", node.clusterId());
nodeObject.setString("clusterType", valueOf(node.clusterType()));
- nodeObject.setBool("down", node.history().stream().anyMatch(event -> "down".equals(event.getEvent())));
+ nodeObject.setBool("down", node.history().stream().anyMatch(event -> "down".equals(event.name())));
nodeObject.setBool("retired", node.retired() || node.wantToRetire());
nodeObject.setBool("restarting", node.wantedRestartGeneration() > node.restartGeneration());
nodeObject.setBool("rebooting", node.wantedRebootGeneration() > node.rebootGeneration());
@@ -1414,6 +1441,13 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
response.setString("status", "pending");
else response.setString("status", "running");
});
+ } else {
+ var deploymentRun = JobType.from(controller.system(), deploymentId.zoneId())
+ .flatMap(jobType -> controller.jobController().last(deploymentId.applicationId(), jobType));
+
+ deploymentRun.ifPresent(run -> {
+ response.setString("status", run.hasEnded() ? "complete" : "running");
+ });
}
}
@@ -1684,6 +1718,11 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
return new HtmlResponse(result);
}
+ String normalizedRestPath = URI.create(restPath).normalize().toString();
+ if (allowedServiceViewProxy.value().stream().noneMatch(normalizedRestPath::startsWith)) {
+ return ErrorResponse.forbidden("Access denied");
+ }
+
Map<?,?> result = controller.serviceRegistry().configServer().getServiceApiResponse(deploymentId, serviceName, restPath);
ServiceApiResponse response = new ServiceApiResponse(deploymentId.zoneId(),
deploymentId.applicationId(),
@@ -1928,7 +1967,15 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
.flatMap(options -> optional("vespaVersion", options))
.map(Version::fromString);
- controller.jobController().deploy(id, type, version, applicationPackage);
+ ensureApplicationExists(TenantAndApplicationId.from(id), request);
+
+ boolean dryRun = Optional.ofNullable(dataParts.get("deployOptions"))
+ .map(json -> SlimeUtils.jsonToSlime(json).get())
+ .flatMap(options -> optional("dryRun", options))
+ .map(Boolean::valueOf)
+ .orElse(false);
+
+ controller.jobController().deploy(id, type, version, applicationPackage, dryRun);
RunId runId = controller.jobController().last(id, type).get().id();
Slime slime = new Slime();
Cursor rootObject = slime.setObject();
@@ -1976,17 +2023,17 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
}
private HttpResponse deleteTenant(String tenantName, HttpRequest request) {
- Optional<Tenant> tenant = controller.tenants().get(tenantName);
- if (tenant.isEmpty())
- return ErrorResponse.notFoundError("Could not delete tenant '" + tenantName + "': Tenant not found");
+ boolean forget = request.getBooleanProperty("forget");
+ if (forget && !isOperator(request))
+ return ErrorResponse.forbidden("Only operators can forget a tenant");
- controller.tenants().delete(tenant.get().name(),
- accessControlRequests.credentials(tenant.get().name(),
+ controller.tenants().delete(TenantName.from(tenantName),
+ () -> accessControlRequests.credentials(TenantName.from(tenantName),
toSlime(request.getData()).get(),
- request.getJDiscRequest()));
+ request.getJDiscRequest()),
+ forget);
- // TODO: Change to a message response saying the tenant was deleted
- return tenant(tenant.get(), request);
+ return new MessageResponse("Deleted tenant " + tenantName);
}
private HttpResponse deleteApplication(String tenantName, String applicationName, HttpRequest request) {
@@ -2037,6 +2084,106 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
controller.applications().reachableContentClustersByZone(deployments)));
}
+ private HttpResponse requestServiceDump(String tenant, String application, String instance, String environment,
+ String region, String hostname, HttpRequest request) {
+ NodeRepository nodeRepository = controller.serviceRegistry().configServer().nodeRepository();
+ ZoneId zone = requireZone(environment, region);
+
+ // Check that no other service dump is in progress
+ Slime report = getReport(nodeRepository, zone, tenant, application, instance, hostname).orElse(null);
+ if (report != null) {
+ Cursor cursor = report.get();
+ // Note: same behaviour for both value '0' and missing value.
+ boolean force = request.getBooleanProperty("force");
+ if (!force && cursor.field("failedAt").asLong() == 0 && cursor.field("completedAt").asLong() == 0) {
+ throw new IllegalArgumentException("Service dump already in progress for " + cursor.field("configId").asString());
+ }
+ }
+ Slime requestPayload;
+ try {
+ requestPayload = SlimeUtils.jsonToSlimeOrThrow(request.getData().readAllBytes());
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Missing or invalid JSON in request content", e);
+ }
+ Cursor requestPayloadCursor = requestPayload.get();
+ String configId = requestPayloadCursor.field("configId").asString();
+ long expiresAt = requestPayloadCursor.field("expiresAt").asLong();
+ if (configId.isEmpty()) {
+ throw new IllegalArgumentException("Missing configId");
+ }
+ Cursor artifactsCursor = requestPayloadCursor.field("artifacts");
+ int artifactEntries = artifactsCursor.entries();
+ if (artifactEntries == 0) {
+ throw new IllegalArgumentException("Missing or empty 'artifacts'");
+ }
+
+ Slime dumpRequest = new Slime();
+ Cursor dumpRequestCursor = dumpRequest.setObject();
+ dumpRequestCursor.setLong("createdMillis", controller.clock().millis());
+ dumpRequestCursor.setString("configId", configId);
+ Cursor dumpRequestArtifactsCursor = dumpRequestCursor.setArray("artifacts");
+ for (int i = 0; i < artifactEntries; i++) {
+ dumpRequestArtifactsCursor.addString(artifactsCursor.entry(i).asString());
+ }
+ if (expiresAt > 0) {
+ dumpRequestCursor.setLong("expiresAt", expiresAt);
+ }
+ Cursor dumpOptionsCursor = requestPayloadCursor.field("dumpOptions");
+ if (dumpOptionsCursor.children() > 0) {
+ SlimeUtils.copyObject(dumpOptionsCursor, dumpRequestCursor.setObject("dumpOptions"));
+ }
+ var reportsUpdate = Map.of("serviceDump", new String(uncheck(() -> SlimeUtils.toJsonBytes(dumpRequest))));
+ nodeRepository.updateReports(zone, hostname, reportsUpdate);
+ boolean wait = request.getBooleanProperty("wait");
+ if (!wait) return new MessageResponse("Request created");
+ return waitForServiceDumpResult(nodeRepository, zone, tenant, application, instance, hostname);
+ }
+
+ private HttpResponse getServiceDump(String tenant, String application, String instance, String environment,
+ String region, String hostname, HttpRequest request) {
+ NodeRepository nodeRepository = controller.serviceRegistry().configServer().nodeRepository();
+ ZoneId zone = requireZone(environment, region);
+ Slime report = getReport(nodeRepository, zone, tenant, application, instance, hostname)
+ .orElseThrow(() -> new NotExistsException("No service dump for node " + hostname));
+ return new SlimeJsonResponse(report);
+ }
+
+ private HttpResponse waitForServiceDumpResult(NodeRepository nodeRepository, ZoneId zone, String tenant,
+ String application, String instance, String hostname) {
+ int pollInterval = 2;
+ Slime report;
+ while (true) {
+ report = getReport(nodeRepository, zone, tenant, application, instance, hostname).get();
+ Cursor cursor = report.get();
+ if (cursor.field("completedAt").asLong() > 0 || cursor.field("failedAt").asLong() > 0) {
+ break;
+ }
+ final Slime copyForLambda = report;
+ log.fine(() -> uncheck(() -> new String(SlimeUtils.toJsonBytes(copyForLambda))));
+ log.fine("Sleeping " + pollInterval + " seconds before checking report status again");
+ controller.sleeper().sleep(Duration.ofSeconds(pollInterval));
+ }
+ return new SlimeJsonResponse(report);
+ }
+
+ private Optional<Slime> getReport(NodeRepository nodeRepository, ZoneId zone, String tenant,
+ String application, String instance, String hostname) {
+ Node node;
+ try {
+ node = nodeRepository.getNode(zone, hostname);
+ } catch (IllegalArgumentException e) {
+ throw new NotExistsException(new Hostname(hostname));
+ }
+ ApplicationId app = ApplicationId.from(tenant, application, instance);
+ ApplicationId owner = node.owner().orElseThrow(() -> new IllegalArgumentException("Node has no owner"));
+ if (!app.equals(owner)) {
+ throw new IllegalArgumentException("Node is not owned by " + app.toFullString());
+ }
+ String json = node.reports().get("serviceDump");
+ if (json == null) return Optional.empty();
+ return Optional.of(SlimeUtils.jsonToSlimeOrThrow(json));
+ }
+
private static SourceRevision toSourceRevision(Inspector object) {
if (!object.field("repository").valid() ||
!object.field("branch").valid() ||
@@ -2106,6 +2253,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
break;
}
+ case deleted: break;
default: throw new IllegalArgumentException("Unexpected tenant type '" + tenant.type() + "'.");
}
// TODO jonmv: This should list applications, not instances.
@@ -2195,6 +2343,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
metaData.setString("property", athenzTenant.property().id());
break;
case cloud: break;
+ case deleted: break;
default: throw new IllegalArgumentException("Unexpected tenant type '" + tenant.type() + "'.");
}
object.setString("url", withPath("/application/v4/tenant/" + tenant.name().value(), requestURI).toString());
@@ -2218,6 +2367,8 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
.flatMap(app -> app.latestVersion().flatMap(ApplicationVersion::buildTime).stream())
.max(Comparator.naturalOrder());
object.setLong("createdAtMillis", tenant.createdAt().toEpochMilli());
+ if (tenant.type() == Tenant.Type.deleted)
+ object.setLong("deletedAtMillis", ((DeletedTenant) tenant).deletedAt().toEpochMilli());
lastDev.ifPresent(instant -> object.setLong("lastDeploymentToDevMillis", instant.toEpochMilli()));
lastSubmission.ifPresent(instant -> object.setLong("lastSubmissionToProdMillis", instant.toEpochMilli()));
@@ -2422,10 +2573,15 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
return "true".equals(request.getProperty("activeInstances"));
}
+ private static boolean includeDeleted(HttpRequest request) {
+ return "true".equals(request.getProperty("includeDeleted"));
+ }
+
private static String tenantType(Tenant tenant) {
switch (tenant.type()) {
case athenz: return "ATHENS";
case cloud: return "CLOUD";
+ case deleted: return "DELETED";
default: throw new IllegalArgumentException("Unknown tenant type: " + tenant.getClass().getSimpleName());
}
}
@@ -2469,6 +2625,8 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
applicationPackage,
Optional.of(requireUserPrincipal(request)));
+ ensureApplicationExists(TenantAndApplicationId.from(tenant, application), request);
+
return JobControllerApiHandlerHelper.submitResponse(controller.jobController(),
tenant,
application,
@@ -2570,5 +2728,13 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
.anyMatch(definition -> definition == RoleDefinition.hostedOperator);
}
+ private void ensureApplicationExists(TenantAndApplicationId id, HttpRequest request) {
+ if (controller.applications().getApplication(id).isEmpty()) {
+ log.fine("Application does not exist in public, creating: " + id);
+ var credentials = accessControlRequests.credentials(id.tenant(), null /* not used on public */ , request.getJDiscRequest());
+ controller.applications().createApplication(id, credentials);
+ }
+ }
+
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/EmptyResponse.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/EmptyResponse.java
index e343615f066..dbd4250669c 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/EmptyResponse.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/EmptyResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.application;
import com.yahoo.container.jdisc.HttpResponse;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java
index eb9b0e03f3d..30bd040a682 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.application;
import com.yahoo.config.application.api.DeploymentSpec;
@@ -20,7 +20,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobId;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.RunId;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.SourceRevision;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.Change;
import com.yahoo.vespa.hosted.controller.application.TenantAndApplicationId;
import com.yahoo.vespa.hosted.controller.deployment.ConvergenceSummary;
@@ -40,18 +40,14 @@ import java.time.Instant;
import java.time.format.TextStyle;
import java.util.Arrays;
import java.util.Collection;
-import java.util.Comparator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Optional;
-import java.util.stream.Collectors;
import java.util.stream.Stream;
import static com.yahoo.config.application.api.DeploymentSpec.UpgradePolicy.canary;
import static com.yahoo.vespa.hosted.controller.deployment.Step.Status.succeeded;
-import static com.yahoo.vespa.hosted.controller.deployment.Step.Status.unfinished;
-import static com.yahoo.vespa.hosted.controller.deployment.Step.deployReal;
import static com.yahoo.vespa.hosted.controller.deployment.Step.installInitialReal;
import static com.yahoo.vespa.hosted.controller.deployment.Step.installReal;
import static com.yahoo.vespa.hosted.controller.versions.VespaVersion.Confidence.broken;
@@ -92,57 +88,17 @@ class JobControllerApiHandlerHelper {
return new SlimeJsonResponse(slime);
}
- private static void runToSlime(Cursor runObject, Run run, URI baseUriForJobType) {
- runObject.setLong("id", run.id().number());
- runObject.setString("status", nameOf(run.status()));
- runObject.setLong("start", run.start().toEpochMilli());
- run.end().ifPresent(instant -> runObject.setLong("end", instant.toEpochMilli()));
-
- versionsToSlime(runObject, run.versions());
-
- Cursor stepsObject = runObject.setObject("steps");
- run.steps().forEach((step, info) -> stepsObject.setString(step.name(), info.status().name()));
- Cursor tasksObject = runObject.setObject("tasks");
- taskStatus(deployReal, run).ifPresent(status -> tasksObject.setString("deploy", status));
- taskStatus(Step.installReal, run).ifPresent(status -> tasksObject.setString("install", status));
- taskStatus(Step.endTests, run).ifPresent(status -> tasksObject.setString("test", status));
-
- runObject.setString("log", baseUriForJobType.resolve(baseUriForJobType.getPath() + "/run/" + run.id().number()).normalize().toString());
- }
-
- /** Returns the status of the task represented by the given step, if it has started. */
- private static Optional<String> taskStatus(Step step, Run run) {
- return run.readySteps().contains(step) ? Optional.of("running")
- : Optional.ofNullable(run.steps().get(step))
- .filter(info -> info.status() != unfinished)
- .map(info -> info.status().name());
- }
-
/** Returns a response with the runs for the given job type. */
static HttpResponse runResponse(Map<RunId, Run> runs, Optional<String> limitStr, URI baseUriForJobType) {
Slime slime = new Slime();
Cursor cursor = slime.setObject();
- // TODO (freva): Remove after console migrated to use new format
- if (limitStr.isEmpty())
- runs.forEach((runid, run) -> runToSlime(cursor.setObject(Long.toString(runid.number())), run, baseUriForJobType));
- else {
- int limit = limitStr.map(Integer::parseInt).orElse(Integer.MAX_VALUE);
- toSlime(cursor.setArray("runs"), runs.values().stream()
- .sorted(Comparator.comparing((Run run) -> run.id().number()).reversed())
- .collect(Collectors.toUnmodifiableList()), limit, baseUriForJobType);
- }
+ int limit = limitStr.map(Integer::parseInt).orElse(Integer.MAX_VALUE);
+ toSlime(cursor.setArray("runs"), runs.values(), limit, baseUriForJobType);
return new SlimeJsonResponse(slime);
}
- private static void versionsToSlime(Cursor runObject, Versions versions) {
- runObject.setString("wantedPlatform", versions.targetPlatform().toString());
- applicationVersionToSlime(runObject.setObject("wantedApplication"), versions.targetApplication());
- versions.sourcePlatform().ifPresent(version -> runObject.setString("currentPlatform", version.toString()));
- versions.sourceApplication().ifPresent(version -> applicationVersionToSlime(runObject.setObject("currentApplication"), version));
- }
-
static void applicationVersionToSlime(Cursor versionObject, ApplicationVersion version) {
versionObject.setString("hash", version.id());
if (version.isUnknown())
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/MultipartParser.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/MultipartParser.java
index b49b47e0cc7..8d03ca74500 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/MultipartParser.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/MultipartParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.application;
import com.yahoo.container.jdisc.HttpRequest;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ServiceApiResponse.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ServiceApiResponse.java
index 9255cbfd7b2..888c402b6ec 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ServiceApiResponse.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ServiceApiResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.application;
import com.yahoo.config.provision.ApplicationId;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/athenz/AthenzApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/athenz/AthenzApiHandler.java
index 9ac94d0208c..621ce9189e9 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/athenz/AthenzApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/athenz/AthenzApiHandler.java
@@ -1,19 +1,14 @@
// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.athenz;
+import com.google.inject.Inject;
import com.yahoo.config.provision.SystemName;
-import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
-import com.yahoo.container.jdisc.LoggingRequestHandler;
-import com.yahoo.jdisc.http.HttpRequest.Method;
-import com.yahoo.restapi.ErrorResponse;
-import com.yahoo.restapi.MessageResponse;
-import com.yahoo.restapi.Path;
import com.yahoo.restapi.ResourceResponse;
-import com.yahoo.restapi.SlimeJsonResponse;
+import com.yahoo.restapi.RestApi;
+import com.yahoo.restapi.RestApiRequestHandler;
import com.yahoo.slime.Cursor;
import com.yahoo.slime.Slime;
-import com.yahoo.text.Text;
import com.yahoo.vespa.athenz.api.AthenzDomain;
import com.yahoo.vespa.athenz.api.AthenzPrincipal;
import com.yahoo.vespa.athenz.api.AthenzUser;
@@ -22,20 +17,19 @@ import com.yahoo.vespa.hosted.controller.api.identifiers.Property;
import com.yahoo.vespa.hosted.controller.api.identifiers.PropertyId;
import com.yahoo.vespa.hosted.controller.api.integration.entity.EntityService;
import com.yahoo.vespa.hosted.controller.athenz.impl.AthenzFacade;
-import com.yahoo.yolean.Exceptions;
import java.util.Map;
-import java.util.Optional;
-import java.util.logging.Level;
import java.util.logging.Logger;
+import static com.yahoo.restapi.RestApi.route;
+
/**
* This API proxies requests to an Athenz server.
*
* @author jonmv
*/
@SuppressWarnings("unused") // Handler
-public class AthenzApiHandler extends LoggingRequestHandler {
+public class AthenzApiHandler extends RestApiRequestHandler<AthenzApiHandler> {
private final static Logger log = Logger.getLogger(AthenzApiHandler.class.getName());
@@ -43,55 +37,32 @@ public class AthenzApiHandler extends LoggingRequestHandler {
private final AthenzDomain sandboxDomain;
private final EntityService properties;
+ @Inject
public AthenzApiHandler(Context parentCtx, AthenzFacade athenz, Controller controller) {
- super(parentCtx);
+ super(parentCtx, AthenzApiHandler::createRestApi);
this.athenz = athenz;
this.sandboxDomain = new AthenzDomain(sandboxDomainIn(controller.system()));
this.properties = controller.serviceRegistry().entityService();
}
- @Override
- public HttpResponse handle(HttpRequest request) {
- Method method = request.getMethod();
- try {
- switch (method) {
- case GET: return get(request);
- case POST: return post(request);
- default: return ErrorResponse.methodNotAllowed("Method '" + method + "' is unsupported");
- }
- }
- catch (IllegalArgumentException|IllegalStateException e) {
- return ErrorResponse.badRequest(Exceptions.toMessageString(e));
- }
- catch (RuntimeException e) {
- log.log(Level.WARNING, "Unexpected error handling '" + request.getUri() + "'", e);
- return ErrorResponse.internalServerError(Exceptions.toMessageString(e));
- }
- }
-
- private HttpResponse get(HttpRequest request) {
- Path path = new Path(request.getUri());
- if (path.matches("/athenz/v1")) return root(request);
- if (path.matches("/athenz/v1/domains")) return domainList(request);
- if (path.matches("/athenz/v1/properties")) return properties();
-
- return ErrorResponse.notFoundError(Text.format("No '%s' handler at '%s'", request.getMethod(),
- request.getUri().getPath()));
+ private static RestApi createRestApi(AthenzApiHandler self) {
+ return RestApi.builder()
+ .addRoute(route("/athenz/v1")
+ .get(self::root))
+ .addRoute(route("/athenz/v1/domains")
+ .get(self::domainList))
+ .addRoute(route("/athenz/v1/properties")
+ .get(self::properties))
+ .addRoute(route("/athenz/v1/user")
+ .post(self::signup))
+ .build();
}
- private HttpResponse post(HttpRequest request) {
- Path path = new Path(request.getUri());
- if (path.matches("/athenz/v1/user")) return signup(request);
- return ErrorResponse.notFoundError(Text.format("No '%s' handler at '%s'", request.getMethod(),
- request.getUri().getPath()));
+ private HttpResponse root(RestApi.RequestContext ctx) {
+ return new ResourceResponse(ctx.request(), "domains", "properties");
}
- private HttpResponse root(HttpRequest request) {
- return new ResourceResponse(request, "domains", "properties");
- }
-
-
- private HttpResponse properties() {
+ private Slime properties(RestApi.RequestContext ctx) {
Slime slime = new Slime();
Cursor response = slime.setObject();
Cursor array = response.setArray("properties");
@@ -100,26 +71,27 @@ public class AthenzApiHandler extends LoggingRequestHandler {
propertyObject.setString("propertyid", entry.getKey().id());
propertyObject.setString("property", entry.getValue().id());
}
- return new SlimeJsonResponse(slime);
+ return slime;
}
- private HttpResponse domainList(HttpRequest request) {
+ private Slime domainList(RestApi.RequestContext ctx) {
Slime slime = new Slime();
Cursor array = slime.setObject().setArray("data");
- for (AthenzDomain athenzDomain : athenz.getDomainList(request.getProperty("prefix")))
+ for (AthenzDomain athenzDomain : athenz.getDomainList(ctx.queryParameters().getString("prefix").orElse(null)))
array.addString(athenzDomain.getName());
- return new SlimeJsonResponse(slime);
+ return slime;
}
- private HttpResponse signup(HttpRequest request) {
- AthenzUser user = athenzUser(request);
+ private String signup(RestApi.RequestContext ctx) {
+ AthenzUser user = athenzUser(ctx);
athenz.addTenantAdmin(sandboxDomain, user);
- return new MessageResponse("User '" + user.getName() + "' added to admin role of '" + sandboxDomain.getName() + "'");
+ return "User '" + user.getName() + "' added to admin role of '" + sandboxDomain.getName() + "'";
}
- private static AthenzUser athenzUser(HttpRequest request) {
- return Optional.ofNullable(request.getJDiscRequest().getUserPrincipal()).filter(AthenzPrincipal.class::isInstance)
+ private static AthenzUser athenzUser(RestApi.RequestContext ctx) {
+ return ctx.userPrincipal()
+ .filter(AthenzPrincipal.class::isInstance)
.map(AthenzPrincipal.class::cast)
.map(AthenzPrincipal::getIdentity)
.filter(AthenzUser.class::isInstance)
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandler.java
index a890776381c..b8c8ce4e63a 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.billing;
import com.yahoo.config.provision.TenantName;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandlerV2.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandlerV2.java
index 1d2132af6a1..630305b0ab4 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandlerV2.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandlerV2.java
@@ -11,7 +11,6 @@ import com.yahoo.restapi.SlimeJsonResponse;
import com.yahoo.slime.Cursor;
import com.yahoo.slime.Inspector;
import com.yahoo.slime.Slime;
-import com.yahoo.slime.SlimeUtils;
import com.yahoo.slime.Type;
import com.yahoo.vespa.hosted.controller.ApplicationController;
import com.yahoo.vespa.hosted.controller.Controller;
@@ -26,7 +25,6 @@ import com.yahoo.vespa.hosted.controller.tenant.CloudTenant;
import com.yahoo.vespa.hosted.controller.tenant.Tenant;
import javax.ws.rs.BadRequestException;
-import java.io.IOException;
import java.math.BigDecimal;
import java.time.Clock;
import java.time.Instant;
@@ -34,8 +32,8 @@ import java.time.LocalDate;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Comparator;
-import java.util.Optional;
import java.util.List;
+import java.util.Optional;
/**
* @author ogronnesby
@@ -78,11 +76,6 @@ public class BillingApiHandlerV2 extends RestApiRequestHandler<BillingApiHandler
.addRoute(RestApi.route("/billing/v2/accountant/preview/tenant/{tenant}")
.get(self::previewBill)
.post(Slime.class, self::createBill))
- /*
- * Utility - map Slime.class => SlimeJsonResponse
- */
- .addRequestMapper(Slime.class, BillingApiHandlerV2::slimeRequestMapper)
- .addResponseMapper(Slime.class, BillingApiHandlerV2::slimeResponseMapper)
.build();
}
@@ -337,16 +330,4 @@ public class BillingApiHandlerV2 extends RestApiRequestHandler<BillingApiHandler
return inspector.field(field).asString();
}
- private static Optional<Slime> slimeRequestMapper(RestApi.RequestContext requestContext) {
- try {
- return Optional.of(SlimeUtils.jsonToSlime(requestContext.requestContentOrThrow().content().readAllBytes()));
- } catch (IOException e) {
- throw new IllegalArgumentException("Could not parse JSON input");
- }
- }
-
- private static HttpResponse slimeResponseMapper(RestApi.RequestContext ctx, Slime slime) {
- return new SlimeJsonResponse(slime);
- }
-
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/ChangeManagementApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/ChangeManagementApiHandler.java
index cffdd9fc928..0ea8d09ba09 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/ChangeManagementApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/ChangeManagementApiHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.changemanagement;
import com.yahoo.config.provision.Environment;
@@ -16,6 +16,7 @@ import com.yahoo.slime.Inspector;
import com.yahoo.slime.Slime;
import com.yahoo.slime.SlimeUtils;
import com.yahoo.vespa.hosted.controller.Controller;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.ChangeRequest;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.VespaChangeRequest;
import com.yahoo.vespa.hosted.controller.auditlog.AuditLoggingRequestHandler;
@@ -278,10 +279,9 @@ public class ChangeManagementApiHandler extends AuditLoggingRequestHandler {
}
private Optional<ZoneId> affectedZone(List<String> hosts) {
- var affectedHosts = hosts.stream()
- .map(HostName::from)
- .collect(Collectors.toList());
-
+ NodeFilter affectedHosts = NodeFilter.all().hostnames(hosts.stream()
+ .map(HostName::from)
+ .collect(Collectors.toSet()));
for (var zone : getProdZones()) {
var affectedHostsInZone = controller.serviceRegistry().configServer().nodeRepository().list(zone, affectedHosts);
if (!affectedHostsInZone.isEmpty())
@@ -293,7 +293,7 @@ public class ChangeManagementApiHandler extends AuditLoggingRequestHandler {
private List<String> hostsOnSwitch(List<String> switches) {
return getProdZones().stream()
- .flatMap(zone -> controller.serviceRegistry().configServer().nodeRepository().list(zone, false).stream())
+ .flatMap(zone -> controller.serviceRegistry().configServer().nodeRepository().list(zone, NodeFilter.all()).stream())
.filter(node -> node.switchHostname().map(switches::contains).orElse(false))
.map(node -> node.hostname().value())
.collect(Collectors.toList());
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/AccessRequestResponse.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/AccessRequestResponse.java
index e17421764e5..30e103048cf 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/AccessRequestResponse.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/AccessRequestResponse.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.controller;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiHandler.java
index 8f083f4e988..7c1f049548a 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.controller;
import com.yahoo.component.Version;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/JobsResponse.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/JobsResponse.java
index 0ac90349eaf..05768410891 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/JobsResponse.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/JobsResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.controller;
import com.yahoo.concurrent.maintenance.JobControl;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/StatsResponse.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/StatsResponse.java
index ff5ad00912f..19f1ac5449f 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/StatsResponse.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/StatsResponse.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.controller;
import com.yahoo.config.provision.zone.ZoneId;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/UpgraderResponse.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/UpgraderResponse.java
index 8968b5ecbe0..e68517f7134 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/UpgraderResponse.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/UpgraderResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.controller;
import com.yahoo.slime.Cursor;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/BadgeApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/BadgeApiHandler.java
index bd71a663328..3047d1ed234 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/BadgeApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/BadgeApiHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.deployment;
import com.yahoo.config.provision.ApplicationId;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/Badges.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/Badges.java
index c13a9b42382..1fe5ebfa9a9 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/Badges.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/Badges.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.deployment;
import com.yahoo.config.provision.ApplicationId;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/filter/ControllerAuthorizationFilter.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/filter/ControllerAuthorizationFilter.java
index 2b9fe708df6..08ec3caa829 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/filter/ControllerAuthorizationFilter.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/filter/ControllerAuthorizationFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.filter;
import com.google.inject.Inject;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/filter/LastLoginUpdateFilter.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/filter/LastLoginUpdateFilter.java
index 9b1ccc09499..4762d2c4612 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/filter/LastLoginUpdateFilter.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/filter/LastLoginUpdateFilter.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.filter;
import com.google.inject.Inject;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/horizon/HorizonApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/horizon/HorizonApiHandler.java
index 6f5b1f30592..96400e50b9a 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/horizon/HorizonApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/horizon/HorizonApiHandler.java
@@ -1,24 +1,35 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.horizon;
import com.google.inject.Inject;
import com.yahoo.config.provision.SystemName;
+import com.yahoo.config.provision.TenantName;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.container.jdisc.LoggingRequestHandler;
import com.yahoo.restapi.ErrorResponse;
import com.yahoo.restapi.Path;
+import com.yahoo.vespa.flags.BooleanFlag;
+import com.yahoo.vespa.flags.FetchVector;
+import com.yahoo.vespa.flags.FlagSource;
+import com.yahoo.vespa.flags.Flags;
import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.api.integration.horizon.HorizonClient;
import com.yahoo.vespa.hosted.controller.api.integration.horizon.HorizonResponse;
+import com.yahoo.vespa.hosted.controller.api.role.Role;
+import com.yahoo.vespa.hosted.controller.api.role.RoleDefinition;
import com.yahoo.vespa.hosted.controller.api.role.SecurityContext;
+import com.yahoo.vespa.hosted.controller.api.role.TenantRole;
import com.yahoo.yolean.Exceptions;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.util.EnumSet;
import java.util.Optional;
+import java.util.Set;
import java.util.logging.Level;
+import java.util.stream.Collectors;
/**
* Proxies metrics requests from Horizon UI
@@ -29,20 +40,32 @@ public class HorizonApiHandler extends LoggingRequestHandler {
private final SystemName systemName;
private final HorizonClient client;
+ private final BooleanFlag enabledHorizonDashboard;
+
+ private static final EnumSet<RoleDefinition> operatorRoleDefinitions =
+ EnumSet.of(RoleDefinition.hostedOperator, RoleDefinition.hostedSupporter);
@Inject
- public HorizonApiHandler(LoggingRequestHandler.Context parentCtx, Controller controller) {
+ public HorizonApiHandler(LoggingRequestHandler.Context parentCtx, Controller controller, FlagSource flagSource) {
super(parentCtx);
this.systemName = controller.system();
this.client = controller.serviceRegistry().horizonClient();
+ this.enabledHorizonDashboard = Flags.ENABLED_HORIZON_DASHBOARD.bindTo(flagSource);
}
@Override
public HttpResponse handle(HttpRequest request) {
+ var roles = getRoles(request);
+ var operator = roles.stream().map(Role::definition).anyMatch(operatorRoleDefinitions::contains);
+ var authorizedTenants = getAuthorizedTenants(roles);
+
+ if (!operator && authorizedTenants.isEmpty())
+ return ErrorResponse.forbidden("No tenant with enabled metrics view");
+
try {
switch (request.getMethod()) {
case GET: return get(request);
- case POST: return post(request);
+ case POST: return post(request, authorizedTenants, operator);
case PUT: return put(request);
default: return ErrorResponse.methodNotAllowed("Method '" + request.getMethod() + "' is not supported");
}
@@ -59,16 +82,13 @@ public class HorizonApiHandler extends LoggingRequestHandler {
private HttpResponse get(HttpRequest request) {
Path path = new Path(request.getUri());
if (path.matches("/horizon/v1/config/dashboard/topFolders")) return new JsonInputStreamResponse(client.getTopFolders());
- if (path.matches("/horizon/v1/config/dashboard/file/{id}")) return new JsonInputStreamResponse(client.getDashboard(path.get("id")));
- if (path.matches("/horizon/v1/config/dashboard/favorite")) return new JsonInputStreamResponse(client.getFavorite(request.getProperty("user")));
- if (path.matches("/horizon/v1/config/dashboard/recent")) return new JsonInputStreamResponse(client.getRecent(request.getProperty("user")));
+ if (path.matches("/horizon/v1/config/dashboard/file/{id}")) return new JsonInputStreamResponse(client.getDashboard());
return ErrorResponse.notFoundError("Nothing at " + path);
}
- private HttpResponse post(HttpRequest request) {
+ private HttpResponse post(HttpRequest request, Set<TenantName> authorizedTenants, boolean operator) {
Path path = new Path(request.getUri());
- if (path.matches("/horizon/v1/tsdb/api/query/graph")) return tsdbQuery(request, true);
- if (path.matches("/horizon/v1/meta/search/timeseries")) return tsdbQuery(request, false);
+ if (path.matches("/horizon/v1/tsdb/api/query/graph")) return tsdbQuery(request, authorizedTenants, operator);
return ErrorResponse.notFoundError("Nothing at " + path);
}
@@ -78,11 +98,10 @@ public class HorizonApiHandler extends LoggingRequestHandler {
return ErrorResponse.notFoundError("Nothing at " + path);
}
- private HttpResponse tsdbQuery(HttpRequest request, boolean isMetricQuery) {
- SecurityContext securityContext = getAttribute(request, SecurityContext.ATTRIBUTE_NAME, SecurityContext.class);
+ private HttpResponse tsdbQuery(HttpRequest request, Set<TenantName> authorizedTenants, boolean operator) {
try {
- byte[] data = TsdbQueryRewriter.rewrite(request.getData().readAllBytes(), securityContext.roles(), systemName);
- return new JsonInputStreamResponse(isMetricQuery ? client.getMetrics(data) : client.getMetaData(data));
+ byte[] data = TsdbQueryRewriter.rewrite(request.getData().readAllBytes(), authorizedTenants, operator, systemName);
+ return new JsonInputStreamResponse(client.getMetrics(data));
} catch (TsdbQueryRewriter.UnauthorizedException e) {
return ErrorResponse.forbidden("Access denied");
} catch (IOException e) {
@@ -90,11 +109,20 @@ public class HorizonApiHandler extends LoggingRequestHandler {
}
}
- private static <T> T getAttribute(HttpRequest request, String attributeName, Class<T> clazz) {
- return Optional.ofNullable(request.getJDiscRequest().context().get(attributeName))
- .filter(clazz::isInstance)
- .map(clazz::cast)
- .orElseThrow(() -> new IllegalArgumentException("Attribute '" + attributeName + "' was not set on request"));
+ private static Set<Role> getRoles(HttpRequest request) {
+ return Optional.ofNullable(request.getJDiscRequest().context().get(SecurityContext.ATTRIBUTE_NAME))
+ .filter(SecurityContext.class::isInstance)
+ .map(SecurityContext.class::cast)
+ .map(SecurityContext::roles)
+ .orElseThrow(() -> new IllegalArgumentException("Attribute '" + SecurityContext.ATTRIBUTE_NAME + "' was not set on request"));
+ }
+
+ private Set<TenantName> getAuthorizedTenants(Set<Role> roles) {
+ return roles.stream()
+ .filter(TenantRole.class::isInstance)
+ .map(role -> ((TenantRole) role).tenant())
+ .filter(tenant -> enabledHorizonDashboard.with(FetchVector.Dimension.TENANT_ID, tenant.value()).value())
+ .collect(Collectors.toSet());
}
private static class JsonInputStreamResponse extends HttpResponse {
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/horizon/TsdbQueryRewriter.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/horizon/TsdbQueryRewriter.java
index e034be46063..d6a0e785b43 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/horizon/TsdbQueryRewriter.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/horizon/TsdbQueryRewriter.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.horizon;
import com.fasterxml.jackson.databind.JsonNode;
@@ -7,12 +7,8 @@ import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.yahoo.config.provision.SystemName;
import com.yahoo.config.provision.TenantName;
-import com.yahoo.vespa.hosted.controller.api.role.Role;
-import com.yahoo.vespa.hosted.controller.api.role.RoleDefinition;
-import com.yahoo.vespa.hosted.controller.api.role.TenantRole;
import java.io.IOException;
-import java.util.EnumSet;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
@@ -23,20 +19,8 @@ import java.util.stream.Collectors;
public class TsdbQueryRewriter {
private static final ObjectMapper mapper = new ObjectMapper();
- private static final EnumSet<RoleDefinition> operatorRoleDefinitions =
- EnumSet.of(RoleDefinition.hostedOperator, RoleDefinition.hostedSupporter);
-
- public static byte[] rewrite(byte[] data, Set<Role> roles, SystemName systemName) throws IOException {
- boolean operator = roles.stream().map(Role::definition).anyMatch(operatorRoleDefinitions::contains);
-
- // Anyone with any tenant relation can view metrics for apps within those tenants
- Set<TenantName> authorizedTenants = roles.stream()
- .filter(TenantRole.class::isInstance)
- .map(role -> ((TenantRole) role).tenant())
- .collect(Collectors.toUnmodifiableSet());
- if (!operator && authorizedTenants.isEmpty())
- throw new UnauthorizedException();
+ public static byte[] rewrite(byte[] data, Set<TenantName> authorizedTenants, boolean operator, SystemName systemName) throws IOException {
JsonNode root = mapper.readTree(data);
requireLegalType(root);
getField(root, "executionGraph", ArrayNode.class)
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/routing/RoutingApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/routing/RoutingApiHandler.java
index 828e7e63483..ff8a97611f1 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/routing/RoutingApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/routing/RoutingApiHandler.java
@@ -21,6 +21,7 @@ import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.Instance;
import com.yahoo.vespa.hosted.controller.api.application.v4.model.EndpointStatus;
import com.yahoo.vespa.hosted.controller.api.identifiers.DeploymentId;
+import com.yahoo.vespa.hosted.controller.application.Endpoint;
import com.yahoo.vespa.hosted.controller.application.TenantAndApplicationId;
import com.yahoo.vespa.hosted.controller.auditlog.AuditLoggingRequestHandler;
import com.yahoo.vespa.hosted.controller.routing.GlobalRouting;
@@ -31,8 +32,10 @@ import java.time.Instant;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
+import java.util.Optional;
import java.util.logging.Level;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
/**
* This implements the /routing/v1 API, which provides operator with global routing control at both zone- and
@@ -85,11 +88,52 @@ public class RoutingApiHandler extends AuditLoggingRequestHandler {
if (path.matches("/routing/v1/status/tenant/{tenant}/application/{application}")) return application(path, request);
if (path.matches("/routing/v1/status/tenant/{tenant}/application/{application}/instance/{instance}")) return instance(path, request);
if (path.matches("/routing/v1/status/tenant/{tenant}/application/{application}/instance/{instance}/environment/{environment}/region/{region}")) return deployment(path);
+ if (path.matches("/routing/v1/status/tenant/{tenant}/application/{application}/instance/{instance}/endpoint")) return endpoints(path);
if (path.matches("/routing/v1/status/environment")) return environment(request);
if (path.matches("/routing/v1/status/environment/{environment}/region/{region}")) return zone(path);
return ErrorResponse.notFoundError("Nothing at " + path);
}
+ private HttpResponse endpoints(Path path) {
+ var instanceId = instanceFrom(path);
+ var endpoints = controller.routing().endpointsOf(instanceId)
+ .sortedBy(Comparator.comparing(Endpoint::name))
+ .asList();
+
+ var deployments = endpoints.stream()
+ .flatMap(e -> e.zones().stream())
+ .distinct()
+ .map(zoneId -> new DeploymentId(instanceId, zoneId))
+ .sorted(Comparator.comparing(DeploymentId::dottedString))
+ .collect(Collectors.toList());
+
+ var deploymentsStatus = deployments.stream()
+ .collect(Collectors.toMap(
+ deploymentId -> deploymentId,
+ deploymentId -> Stream.concat(
+ directGlobalRoutingStatus(deploymentId).stream(),
+ sharedGlobalRoutingStatus(deploymentId).stream()
+ ).collect(Collectors.toList())
+ ));
+
+ var slime = new Slime();
+ var root = slime.setObject();
+ var endpointsRoot = root.setArray("endpoints");
+ endpoints.forEach(endpoint -> {
+ var endpointRoot = endpointsRoot.addObject();
+ endpointToSlime(endpointRoot, endpoint);
+ var zonesRoot = endpointRoot.setArray("zones");
+ endpoint.zones().stream().sorted(Comparator.comparing(ZoneId::value)).forEach(zoneId -> {
+ var deploymentId = new DeploymentId(instanceId, zoneId);
+ deploymentsStatus.getOrDefault(deploymentId, List.of()).forEach(status -> {
+ deploymentStatusToSlime(zonesRoot.addObject(), deploymentId, status, endpoint.routingMethod());
+ });
+ });
+ });
+
+ return new SlimeJsonResponse(slime);
+ }
+
private HttpResponse environment(HttpRequest request) {
var zones = controller.zoneRegistry().zones().all().ids();
if (isRecursive(request)) {
@@ -241,42 +285,50 @@ public class RoutingApiHandler extends AuditLoggingRequestHandler {
for (var zone : zones) {
var deploymentId = requireDeployment(new DeploymentId(instance.id(), zone), instance);
// Include status from rotation
- if (rotationCanRouteTo(zone)) {
- var rotationStatus = controller.routing().globalRotationStatus(deploymentId);
- // Status is equal across all global endpoints, as the status is per deployment, not per endpoint.
- var endpointStatus = rotationStatus.values().stream().findFirst();
- if (endpointStatus.isPresent()) {
- var changedAt = Instant.ofEpochSecond(endpointStatus.get().getEpoch());
- GlobalRouting.Agent agent;
- try {
- agent = GlobalRouting.Agent.valueOf(endpointStatus.get().getAgent());
- } catch (IllegalArgumentException e) {
- agent = GlobalRouting.Agent.unknown;
- }
- var status = endpointStatus.get().getStatus() == EndpointStatus.Status.in
- ? GlobalRouting.Status.in
- : GlobalRouting.Status.out;
- deploymentStatusToSlime(deploymentsArray.addObject(), deploymentId,
- new GlobalRouting(status, agent, changedAt),
- RoutingMethod.shared);
- }
- }
+ sharedGlobalRoutingStatus(deploymentId).ifPresent(status -> {
+ deploymentStatusToSlime(deploymentsArray.addObject(), deploymentId, status, RoutingMethod.shared);
+ });
// Include status from routing policies
- var routingPolicies = controller.routing().policies().get(deploymentId);
- for (var policy : routingPolicies.values()) {
- if (policy.endpoints().isEmpty()) continue; // This policy does not apply to a global endpoint
- if (!controller.zoneRegistry().routingMethods(policy.id().zone()).contains(RoutingMethod.exclusive)) continue;
- deploymentStatusToSlime(deploymentsArray.addObject(), new DeploymentId(policy.id().owner(),
- policy.id().zone()),
- policy.status().globalRouting(), RoutingMethod.exclusive);
- }
+ directGlobalRoutingStatus(deploymentId).forEach(status -> {
+ deploymentStatusToSlime(deploymentsArray.addObject(), deploymentId, status, RoutingMethod.exclusive);
+ });
}
}
}
}
+ private Optional<GlobalRouting> sharedGlobalRoutingStatus(DeploymentId deploymentId) {
+ if (rotationCanRouteTo(deploymentId.zoneId())) {
+ var rotationStatus = controller.routing().globalRotationStatus(deploymentId);
+ // Status is equal across all global endpoints, as the status is per deployment, not per endpoint.
+ var endpointStatus = rotationStatus.values().stream().findFirst();
+ if (endpointStatus.isPresent()) {
+ var changedAt = Instant.ofEpochSecond(endpointStatus.get().getEpoch());
+ GlobalRouting.Agent agent;
+ try {
+ agent = GlobalRouting.Agent.valueOf(endpointStatus.get().getAgent());
+ } catch (IllegalArgumentException e) {
+ agent = GlobalRouting.Agent.unknown;
+ }
+ var status = endpointStatus.get().getStatus() == EndpointStatus.Status.in
+ ? GlobalRouting.Status.in
+ : GlobalRouting.Status.out;
+ return Optional.of(new GlobalRouting(status, agent, changedAt));
+ }
+ }
+ return Optional.empty();
+ }
+
+ private List<GlobalRouting> directGlobalRoutingStatus(DeploymentId deploymentId) {
+ return controller.routing().policies().get(deploymentId).values().stream()
+ .filter(p -> ! p.endpoints().isEmpty()) // This policy does not apply to a global endpoint
+ .filter(p -> controller.zoneRegistry().routingMethods(p.id().zone()).contains(RoutingMethod.exclusive))
+ .map(p -> p.status().globalRouting())
+ .collect(Collectors.toList());
+ }
+
/** Returns whether a rotation can route traffic to given zone */
private boolean rotationCanRouteTo(ZoneId zone) {
// A system may support multiple routing methods, i.e. it has both exclusively routed zones and zones using
@@ -304,6 +356,14 @@ public class RoutingApiHandler extends AuditLoggingRequestHandler {
object.setLong("changedAt", globalRouting.changedAt().toEpochMilli());
}
+ private static void endpointToSlime(Cursor object, Endpoint endpoint) {
+ object.setString("name", endpoint.name());
+ object.setString("dnsName", endpoint.dnsName());
+ object.setString("routingMethod", endpoint.routingMethod().name());
+ object.setString("cluster", endpoint.cluster().value());
+ object.setString("scope", endpoint.scope().name());
+ }
+
private TenantName tenantFrom(Path path) {
return TenantName.from(path.get("tenant"));
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/systemflags/SystemFlagsDeployResult.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/systemflags/SystemFlagsDeployResult.java
index d169cd97df7..529e892ced9 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/systemflags/SystemFlagsDeployResult.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/systemflags/SystemFlagsDeployResult.java
@@ -251,6 +251,13 @@ class SystemFlagsDeployResult {
return new OperationError(message, Set.of(), OperationType.VALIDATE_ARCHIVE, null, null);
}
+ static OperationError dataForUndefinedFlag(FlagsTarget target, FlagId id) {
+ return new OperationError("Flag data present for undefined flag. Remove flag data files if flag's definition " +
+ "is already removed from Flags / PermanentFlags. Consult ModelContext.FeatureFlags " +
+ "for safe removal of flag used by config-model.",
+ Set.of(), OperationType.DATA_FOR_UNDEFINED_FLAG, id, null);
+ }
+
String message() { return message; }
Set<FlagsTarget> targets() { return targets; }
OperationType operation() { return operation; }
@@ -284,7 +291,8 @@ class SystemFlagsDeployResult {
}
enum OperationType {
- CREATE("create"), DELETE("delete"), UPDATE("update"), LIST("list"), VALIDATE_ARCHIVE("validate-archive");
+ CREATE("create"), DELETE("delete"), UPDATE("update"), LIST("list"), VALIDATE_ARCHIVE("validate-archive"),
+ DATA_FOR_UNDEFINED_FLAG("data-for-undefined-flag");
private final String stringValue;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/systemflags/SystemFlagsDeployer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/systemflags/SystemFlagsDeployer.java
index 21a429b59ad..e0b65b0834d 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/systemflags/SystemFlagsDeployer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/systemflags/SystemFlagsDeployer.java
@@ -78,7 +78,7 @@ class SystemFlagsDeployer {
return SystemFlagsDeployResult.merge(results);
}
- private SystemFlagsDeployResult deployFlags(FlagsTarget target, Set<FlagData> flagData, boolean dryRun) {
+ private SystemFlagsDeployResult deployFlags(FlagsTarget target, List<FlagData> flagData, boolean dryRun) {
Map<FlagId, FlagData> wantedFlagData = lookupTable(flagData);
Map<FlagId, FlagData> currentFlagData;
List<FlagId> definedFlags;
@@ -98,7 +98,7 @@ class SystemFlagsDeployer {
updateExistingFlagData(target, dryRun, wantedFlagData, currentFlagData, results, errors);
removeOldFlagData(target, dryRun, wantedFlagData, currentFlagData, results, errors);
failOnNewFlagDataForUndefinedFlags(target, wantedFlagData, currentFlagData, definedFlags, errors);
- warnOnExistingFlagDataForUndefinedFlags(target, wantedFlagData, currentFlagData, definedFlags, warnings);
+ failOnFlagDataForUndefinedFlags(target, wantedFlagData, currentFlagData, definedFlags, errors);
return new SystemFlagsDeployResult(results, errors, warnings);
}
@@ -191,14 +191,14 @@ class SystemFlagsDeployer {
}
}
- private static void warnOnExistingFlagDataForUndefinedFlags(FlagsTarget target,
- Map<FlagId, FlagData> wantedFlagData,
- Map<FlagId, FlagData> currentFlagData,
- List<FlagId> definedFlags,
- List<Warning> warnings) {
+ private static void failOnFlagDataForUndefinedFlags(FlagsTarget target,
+ Map<FlagId, FlagData> wantedFlagData,
+ Map<FlagId, FlagData> currentFlagData,
+ List<FlagId> definedFlags,
+ List<OperationError> errors) {
for (FlagId flagId : currentFlagData.keySet()) {
if (wantedFlagData.containsKey(flagId) && !definedFlags.contains(flagId)) {
- warnings.add(Warning.dataForUndefinedFlag(target, flagId));
+ errors.add(OperationError.dataForUndefinedFlag(target, flagId));
}
}
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiHandler.java
index 7b0a2c9d6d6..7e88f127026 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiHandler.java
@@ -19,8 +19,7 @@ import com.yahoo.slime.Slime;
import com.yahoo.slime.SlimeStream;
import com.yahoo.slime.SlimeUtils;
import com.yahoo.text.Text;
-import com.yahoo.vespa.flags.BooleanFlag;
-import com.yahoo.vespa.flags.FetchVector;
+import com.yahoo.vespa.configserver.flags.FlagsDb;
import com.yahoo.vespa.flags.FlagSource;
import com.yahoo.vespa.flags.IntFlag;
import com.yahoo.vespa.flags.PermanentFlags;
@@ -41,7 +40,6 @@ import com.yahoo.vespa.hosted.controller.tenant.Tenant;
import com.yahoo.yolean.Exceptions;
import java.security.PublicKey;
-import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collection;
@@ -69,15 +67,15 @@ public class UserApiHandler extends LoggingRequestHandler {
private final UserManagement users;
private final Controller controller;
- private final BooleanFlag enable_public_signup_flow;
+ private final FlagsDb flagsDb;
private final IntFlag maxTrialTenants;
@Inject
- public UserApiHandler(Context parentCtx, UserManagement users, Controller controller, FlagSource flagSource) {
+ public UserApiHandler(Context parentCtx, UserManagement users, Controller controller, FlagSource flagSource, FlagsDb flagsDb) {
super(parentCtx);
this.users = users;
this.controller = controller;
- this.enable_public_signup_flow = PermanentFlags.ENABLE_PUBLIC_SIGNUP_FLOW.bindTo(flagSource);
+ this.flagsDb = flagsDb;
this.maxTrialTenants = PermanentFlags.MAX_TRIAL_TENANTS.bindTo(flagSource);
}
@@ -168,8 +166,6 @@ public class UserApiHandler extends LoggingRequestHandler {
root.setBool("isPublic", controller.system().isPublic());
root.setBool("isCd", controller.system().isCd());
- root.setBool(enable_public_signup_flow.id().toString(),
- enable_public_signup_flow.with(FetchVector.Dimension.CONSOLE_USER_EMAIL, user.email()).value());
root.setBool("hasTrialCapacity", hasTrialCapacity());
toSlime(root.setObject("user"), user);
@@ -191,6 +187,8 @@ public class UserApiHandler extends LoggingRequestHandler {
operatorRoles.forEach(role -> operator.addString(role.definition().name()));
}
+ UserFlagsSerializer.toSlime(root, flagsDb.getAllFlagData(), tenantRolesByTenantName.keySet(), !operatorRoles.isEmpty(), user.email());
+
return new SlimeJsonResponse(slime);
}
@@ -243,7 +241,7 @@ public class UserApiHandler extends LoggingRequestHandler {
});
}
- private void toSlime(Cursor userObject, User user) {
+ private static void toSlime(Cursor userObject, User user) {
if (user.name() != null) userObject.setString("name", user.name());
userObject.setString("email", user.email());
if (user.nickname() != null) userObject.setString("nickname", user.nickname());
@@ -370,7 +368,7 @@ public class UserApiHandler extends LoggingRequestHandler {
return Exceptions.uncheck(() -> SlimeUtils.jsonToSlime(IOUtils.readBytes(request.getData(), 1 << 10)).get());
}
- private <Type> Type require(String name, Function<Inspector, Type> mapper, Inspector object) {
+ private static <Type> Type require(String name, Function<Inspector, Type> mapper, Inspector object) {
if ( ! object.field(name).valid()) throw new IllegalArgumentException("Missing field '" + name + "'.");
return mapper.apply(object.field(name));
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/user/UserFlagsSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/user/UserFlagsSerializer.java
new file mode 100644
index 00000000000..44d537883f9
--- /dev/null
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/user/UserFlagsSerializer.java
@@ -0,0 +1,86 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.controller.restapi.user;
+
+import com.yahoo.config.provision.TenantName;
+import com.yahoo.lang.MutableBoolean;
+import com.yahoo.slime.Cursor;
+import com.yahoo.slime.SlimeUtils;
+import com.yahoo.vespa.flags.FetchVector;
+import com.yahoo.vespa.flags.FlagDefinition;
+import com.yahoo.vespa.flags.FlagId;
+import com.yahoo.vespa.flags.Flags;
+import com.yahoo.vespa.flags.RawFlag;
+import com.yahoo.vespa.flags.UnboundFlag;
+import com.yahoo.vespa.flags.json.Condition;
+import com.yahoo.vespa.flags.json.FlagData;
+import com.yahoo.vespa.flags.json.Rule;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+/**
+ * @author freva
+ */
+public class UserFlagsSerializer {
+ static void toSlime(Cursor cursor, Map<FlagId, FlagData> rawFlagData,
+ Set<TenantName> authorizedForTenantNames, boolean isOperator, String userEmail) {
+ FetchVector resolveVector = FetchVector.fromMap(Map.of(FetchVector.Dimension.CONSOLE_USER_EMAIL, userEmail));
+ List<FlagData> filteredFlagData = Flags.getAllFlags().stream()
+ // Only include flags that have CONSOLE_USER_EMAIL dimension, this should be replaced with more explicit
+ // 'target' annotation if/when that is added to flag definition
+ .filter(fd -> fd.getDimensions().contains(FetchVector.Dimension.CONSOLE_USER_EMAIL))
+ .map(FlagDefinition::getUnboundFlag)
+ .map(flag -> filteredFlagData(flag, Optional.ofNullable(rawFlagData.get(flag.id())), authorizedForTenantNames, isOperator, resolveVector))
+ .collect(Collectors.toUnmodifiableList());
+
+ byte[] bytes = FlagData.serializeListToUtf8Json(filteredFlagData);
+ SlimeUtils.copyObject(SlimeUtils.jsonToSlime(bytes).get(), cursor);
+ }
+
+ private static <T> FlagData filteredFlagData(UnboundFlag<T, ?, ?> definition, Optional<FlagData> original,
+ Set<TenantName> authorizedForTenantNames, boolean isOperator, FetchVector resolveVector) {
+ MutableBoolean encounteredEmpty = new MutableBoolean(false);
+ Optional<RawFlag> defaultValue = Optional.of(definition.serializer().serialize(definition.defaultValue()));
+ // Include the original rules from flag DB and the default value from code if there is no default rule in DB
+ List<Rule> rules = Stream.concat(original.stream().flatMap(fd -> fd.rules().stream()), Stream.of(new Rule(defaultValue)))
+ // Exclude rules that do not match the resolveVector
+ .filter(rule -> rule.partialMatch(resolveVector))
+ // Re-create each rule with value explicitly set, either from DB or default from code and
+ // a filtered set of conditions
+ .map(rule -> new Rule(rule.getValueToApply().or(() -> defaultValue),
+ rule.conditions().stream()
+ .flatMap(condition -> filteredCondition(condition, authorizedForTenantNames, isOperator, resolveVector).stream())
+ .collect(Collectors.toUnmodifiableList())))
+ // We can stop as soon as we hit the first rule that has no conditions
+ .takeWhile(rule -> !encounteredEmpty.getAndSet(rule.conditions().isEmpty()))
+ .collect(Collectors.toUnmodifiableList());
+
+ return new FlagData(definition.id(), new FetchVector(), rules);
+ }
+
+ private static Optional<Condition> filteredCondition(Condition condition, Set<TenantName> authorizedForTenantNames,
+ boolean isOperator, FetchVector resolveVector) {
+ // If the condition is one of the conditions that we resolve on the server, e.g. email, we do not need to
+ // propagate it back to the user
+ if (resolveVector.hasDimension(condition.dimension())) return Optional.empty();
+
+ // For the other dimensions, filter the values down to an allowed subset
+ switch (condition.dimension()) {
+ case TENANT_ID: return valueSubset(condition, tenant -> isOperator || authorizedForTenantNames.contains(TenantName.from(tenant)));
+ case APPLICATION_ID: return valueSubset(condition, appId -> isOperator || authorizedForTenantNames.stream().anyMatch(tenant -> appId.startsWith(tenant.value() + ":")));
+ default: throw new IllegalArgumentException("Dimension " + condition.dimension() + " is not supported for user flags");
+ }
+ }
+
+ private static Optional<Condition> valueSubset(Condition condition, Predicate<String> predicate) {
+ Condition.CreateParams createParams = condition.toCreateParams();
+ return Optional.of(createParams
+ .withValues(createParams.values().stream().filter(predicate).collect(Collectors.toUnmodifiableList()))
+ .createAs(condition.type()));
+ }
+}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiHandler.java
index fd6dfa61180..0ac4380f560 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.zone.v1;
import com.yahoo.config.provision.Environment;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/package-info.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/package-info.java
index 7793548766e..6c27f12954a 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/package-info.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author mpolden
*/
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiHandler.java
index 37c81f8c2c1..510635b005b 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.zone.v2;
import com.yahoo.config.provision.zone.ZoneId;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/package-info.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/package-info.java
index 95dfed8b7b2..9cb62748b63 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/package-info.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author mpolden
*/
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/Rotation.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/Rotation.java
index 4f608736c45..ca5d2d5915f 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/Rotation.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/Rotation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.rotation;
import com.yahoo.text.Text;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/RotationId.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/RotationId.java
index 10b15488f6e..2b75777fbbd 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/RotationId.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/RotationId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.rotation;
import java.util.Objects;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/RotationLock.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/RotationLock.java
index 508df263837..fe9280b1193 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/RotationLock.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/RotationLock.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.rotation;
import com.yahoo.vespa.curator.Lock;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/RotationRepository.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/RotationRepository.java
index 80bee1c5199..e15c8fa0ac4 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/RotationRepository.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/RotationRepository.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.rotation;
import com.yahoo.config.application.api.DeploymentInstanceSpec;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/RotationState.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/RotationState.java
index 70e554cd30d..032f01433b3 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/RotationState.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/rotation/RotationState.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.rotation;
/**
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/RoutingPolicies.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/RoutingPolicies.java
index e2a8be15361..eca763ebc33 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/RoutingPolicies.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/RoutingPolicies.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.routing;
import com.yahoo.config.application.api.DeploymentSpec;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/security/Auth0Credentials.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/security/Auth0Credentials.java
index a908b341039..d8f4370ebcf 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/security/Auth0Credentials.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/security/Auth0Credentials.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.security;
import com.yahoo.vespa.hosted.controller.api.role.Role;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/security/CloudAccessControl.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/security/CloudAccessControl.java
index 48f8d3e43cb..b8a44a682e7 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/security/CloudAccessControl.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/security/CloudAccessControl.java
@@ -72,7 +72,7 @@ public class CloudAccessControl implements AccessControl {
private void requireTenantTrialLimitNotReached(List<Tenant> existing) {
var trialPlanId = PlanId.from("trial");
- var tenantNames = existing.stream().map(Tenant::name).collect(Collectors.toList());
+ var tenantNames = existing.stream().filter(tenant -> tenant.type() == Tenant.Type.cloud).map(Tenant::name).collect(Collectors.toList());
var trialTenants = billingController.tenantsWithPlan(tenantNames, trialPlanId).size();
if (maxTrialTenants.value() >= 0 && maxTrialTenants.value() <= trialTenants) {
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/support/access/SupportAccess.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/support/access/SupportAccess.java
index a8024a2ced3..27cf61564aa 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/support/access/SupportAccess.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/support/access/SupportAccess.java
@@ -1,4 +1,4 @@
-// Copyright 2021 Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.support.access;
import java.time.Instant;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/support/access/SupportAccessChange.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/support/access/SupportAccessChange.java
index 8cb502db6ab..93659742538 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/support/access/SupportAccessChange.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/support/access/SupportAccessChange.java
@@ -1,4 +1,4 @@
-// Copyright 2021 Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.support.access;
import java.time.Instant;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/support/access/SupportAccessControl.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/support/access/SupportAccessControl.java
index 6bbec918ba9..a4af9f8e268 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/support/access/SupportAccessControl.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/support/access/SupportAccessControl.java
@@ -1,4 +1,4 @@
-// Copyright 2021 Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.support.access;
import com.yahoo.vespa.athenz.api.AthenzIdentity;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/support/access/SupportAccessGrant.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/support/access/SupportAccessGrant.java
index cdbb58675a5..76ceb6400bb 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/support/access/SupportAccessGrant.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/support/access/SupportAccessGrant.java
@@ -1,4 +1,4 @@
-// Copyright 2021 Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.support.access;
import java.security.cert.X509Certificate;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tls/ControllerSslContextFactoryProvider.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tls/ControllerSslContextFactoryProvider.java
index 1ac82317695..a08ec77bbb9 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tls/ControllerSslContextFactoryProvider.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tls/ControllerSslContextFactoryProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.tls;
import com.google.inject.Inject;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tls/package-info.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tls/package-info.java
index 508b8cc9423..e0edf2c2100 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tls/package-info.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/tls/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author mpolden
*/
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/DeploymentStatistics.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/DeploymentStatistics.java
index df018d64748..5d244875ae5 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/DeploymentStatistics.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/DeploymentStatistics.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.versions;
import com.yahoo.component.Version;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersion.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersion.java
index 2671f30255e..dadca43c5a0 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersion.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersion.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.versions;
import com.yahoo.component.Version;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersionStatus.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersionStatus.java
index 78c7b36181e..92351df9430 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersionStatus.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersionStatus.java
@@ -6,6 +6,7 @@ import com.yahoo.component.Version;
import com.yahoo.config.provision.CloudName;
import com.yahoo.config.provision.zone.ZoneApi;
import com.yahoo.vespa.hosted.controller.Controller;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.application.SystemApplication;
import com.yahoo.vespa.hosted.controller.maintenance.OsUpgrader;
@@ -71,7 +72,7 @@ public class OsVersionStatus {
.osVersion(application.nodeType())
.orElse(Version.emptyVersion);
- for (var node : controller.serviceRegistry().configServer().nodeRepository().list(zone.getVirtualId(), application.id())) {
+ for (var node : controller.serviceRegistry().configServer().nodeRepository().list(zone.getVirtualId(), NodeFilter.all().applications(application.id()))) {
if (!OsUpgrader.canUpgrade(node)) continue;
Optional<Instant> suspendedAt = node.suspendedSince();
NodeVersion nodeVersion = new NodeVersion(node.hostname(), zone.getVirtualId(), node.currentOsVersion(),
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersionTarget.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersionTarget.java
index 5dd9f4d0685..badb3014ddf 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersionTarget.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/OsVersionTarget.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.versions;
import org.jetbrains.annotations.NotNull;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VersionStatus.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VersionStatus.java
index beefaadb2a1..1833e7b3b35 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VersionStatus.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VersionStatus.java
@@ -4,6 +4,7 @@ package com.yahoo.vespa.hosted.controller.versions;
import com.yahoo.component.Version;
import com.yahoo.config.provision.HostName;
import com.yahoo.vespa.hosted.controller.Controller;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.application.ApplicationList;
import com.yahoo.vespa.hosted.controller.application.SystemApplication;
import com.yahoo.vespa.hosted.controller.maintenance.SystemUpgrader;
@@ -156,7 +157,7 @@ public class VersionStatus {
for (var zone : controller.zoneRegistry().zones().controllerUpgraded().zones()) {
for (var application : SystemApplication.notController()) {
var nodes = controller.serviceRegistry().configServer().nodeRepository()
- .list(zone.getId(), application.id()).stream()
+ .list(zone.getId(), NodeFilter.all().applications(application.id())).stream()
.filter(SystemUpgrader::eligibleForUpgrade)
.collect(Collectors.toList());
if (nodes.isEmpty()) continue;
diff --git a/controller-server/src/main/resources/configdefinitions/vespa.hosted.controller.athenz.config.athenz.def b/controller-server/src/main/resources/configdefinitions/vespa.hosted.controller.athenz.config.athenz.def
index dc1a2337aaf..672e773591e 100644
--- a/controller-server/src/main/resources/configdefinitions/vespa.hosted.controller.athenz.config.athenz.def
+++ b/controller-server/src/main/resources/configdefinitions/vespa.hosted.controller.athenz.config.athenz.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.hosted.controller.athenz.config
# URL to ZMS API endpoint
diff --git a/controller-server/src/main/resources/configdefinitions/vespa.hosted.controller.config.controller.def b/controller-server/src/main/resources/configdefinitions/vespa.hosted.controller.config.controller.def
index 069deaf276d..c63e429abcd 100644
--- a/controller-server/src/main/resources/configdefinitions/vespa.hosted.controller.config.controller.def
+++ b/controller-server/src/main/resources/configdefinitions/vespa.hosted.controller.config.controller.def
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Generic config for controller
namespace=vespa.hosted.controller.config
diff --git a/controller-server/src/main/resources/configdefinitions/vespa.hosted.controller.tls.config.tls.def b/controller-server/src/main/resources/configdefinitions/vespa.hosted.controller.tls.config.tls.def
index 1a163ba1fff..7130a5c5dc7 100644
--- a/controller-server/src/main/resources/configdefinitions/vespa.hosted.controller.tls.config.tls.def
+++ b/controller-server/src/main/resources/configdefinitions/vespa.hosted.controller.tls.config.tls.def
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.hosted.controller.tls.config
# Path to the CA trust store
diff --git a/controller-server/src/main/resources/configdefinitions/vespa.hosted.rotation.config.rotations.def b/controller-server/src/main/resources/configdefinitions/vespa.hosted.rotation.config.rotations.def
index d4f3636d0d8..77863e65a55 100644
--- a/controller-server/src/main/resources/configdefinitions/vespa.hosted.rotation.config.rotations.def
+++ b/controller-server/src/main/resources/configdefinitions/vespa.hosted.rotation.config.rotations.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.hosted.rotation.config
rotations{} string
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java
index e52d1900a9d..887e51367dc 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller;
import com.google.common.collect.Sets;
@@ -26,7 +26,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.dns.Record;
import com.yahoo.vespa.hosted.controller.api.integration.dns.RecordData;
import com.yahoo.vespa.hosted.controller.api.integration.dns.RecordName;
import com.yahoo.vespa.hosted.controller.api.integration.dns.WeightedAliasTarget;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.Deployment;
import com.yahoo.vespa.hosted.controller.application.DeploymentMetrics;
import com.yahoo.vespa.hosted.controller.application.Endpoint;
@@ -114,7 +114,7 @@ public class ControllerTest {
context.runJob(stagingTest);
// production job succeeding now
- context.jobAborted(productionUsWest1);
+ context.triggerJobs().jobAborted(productionUsWest1);
context.runJob(productionUsWest1);
// causes triggering of next production job
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java
index bae0867736a..445a1c73297 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java
@@ -57,6 +57,7 @@ import com.yahoo.vespa.hosted.controller.tenant.Tenant;
import com.yahoo.vespa.hosted.controller.versions.ControllerVersion;
import com.yahoo.vespa.hosted.controller.versions.VersionStatus;
import com.yahoo.vespa.hosted.rotation.config.RotationsConfig;
+import com.yahoo.yolean.concurrent.Sleeper;
import java.time.Duration;
import java.time.Instant;
@@ -387,7 +388,8 @@ public final class ControllerTester {
new MockMavenRepository(),
serviceRegistry,
new MetricsMock(), new SecretStoreMock(),
- new ControllerConfig.Builder().build());
+ new ControllerConfig.Builder().build(),
+ Sleeper.NOOP);
// Calculate initial versions
controller.updateVersionStatus(VersionStatus.compute(controller));
return controller;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/DeploymentQuotaCalculatorTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/DeploymentQuotaCalculatorTest.java
index 91d71a1aa25..2751b1697db 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/DeploymentQuotaCalculatorTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/DeploymentQuotaCalculatorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.application;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageDiffTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageDiffTest.java
new file mode 100644
index 00000000000..b2aba721a6f
--- /dev/null
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageDiffTest.java
@@ -0,0 +1,128 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.controller.application.pkg;
+
+import org.junit.Test;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.UncheckedIOException;
+import java.util.Map;
+import java.util.zip.Deflater;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+import static com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackageDiff.diff;
+
+import static com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackageDiff.diffAgainstEmpty;
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author freva
+ */
+public class ApplicationPackageDiffTest {
+ private static final ApplicationPackage app1 = applicationPackage(Map.of("file1", "contents of the\nfirst file", "dir/myfile", "Second file", "dir/binary", "øøøø"));
+ private static final ApplicationPackage app2 = applicationPackage(Map.of("file1", "updated contents\nof the\nfirst file\nafter some changes", "dir/myfile2", "Second file", "dir/binary", "øøøø"));
+
+ @Test
+ public void no_diff() {
+ assertEquals("No diff\n", new String(diff(app1, app1)));
+ }
+
+ @Test
+ public void diff_against_empty() {
+ assertEquals("--- dir/binary\n" +
+ "Diff skipped: File is binary (new file -> 8B)\n" +
+ "\n" +
+ "--- dir/myfile\n" +
+ "@@ -1,0 +1,1 @@\n" +
+ "+ Second file\n" +
+ "\n" +
+ "--- file1\n" +
+ "@@ -1,0 +1,2 @@\n" +
+ "+ contents of the\n" +
+ "+ first file\n" +
+ "\n", new String(diffAgainstEmpty(app1)));
+ }
+
+ @Test
+ public void full_diff() {
+ // Even though dir/binary is binary file, we can see they are identical, so it should not print "Diff skipped"
+ assertEquals("--- dir/myfile\n" +
+ "@@ -1,1 +1,0 @@\n" +
+ "- Second file\n" +
+ "\n" +
+ "--- dir/myfile2\n" +
+ "@@ -1,0 +1,1 @@\n" +
+ "+ Second file\n" +
+ "\n" +
+ "--- file1\n" +
+ "@@ -1,2 +1,4 @@\n" +
+ "+ updated contents\n" +
+ "+ of the\n" +
+ "- contents of the\n" +
+ " first file\n" +
+ "+ after some changes\n" +
+ "\n", new String(diff(app1, app2)));
+ }
+
+ @Test
+ public void skips_diff_for_too_large_files() {
+ assertEquals("--- dir/myfile\n" +
+ "@@ -1,1 +1,0 @@\n" +
+ "- Second file\n" +
+ "\n" +
+ "--- dir/myfile2\n" +
+ "@@ -1,0 +1,1 @@\n" +
+ "+ Second file\n" +
+ "\n" +
+ "--- file1\n" +
+ "Diff skipped: File too large (26B -> 53B)\n" +
+ "\n", new String(diff(app1, app2, 12, 1000, 1000)));
+ }
+
+ @Test
+ public void skips_diff_if_file_diff_is_too_large() {
+ assertEquals("--- dir/myfile\n" +
+ "@@ -1,1 +1,0 @@\n" +
+ "- Second file\n" +
+ "\n" +
+ "--- dir/myfile2\n" +
+ "@@ -1,0 +1,1 @@\n" +
+ "+ Second file\n" +
+ "\n" +
+ "--- file1\n" +
+ "Diff skipped: Diff too large (96B)\n" +
+ "\n", new String(diff(app1, app2, 1000, 50, 1000)));
+ }
+
+ @Test
+ public void skips_diff_if_total_diff_is_too_large() {
+ assertEquals("--- dir/myfile\n" +
+ "@@ -1,1 +1,0 @@\n" +
+ "- Second file\n" +
+ "\n" +
+ "--- dir/myfile2\n" +
+ "Diff skipped: Total diff size >20B)\n" +
+ "\n" +
+ "--- file1\n" +
+ "Diff skipped: Total diff size >20B)\n" +
+ "\n", new String(diff(app1, app2, 1000, 1000, 20)));
+ }
+
+ private static ApplicationPackage applicationPackage(Map<String, String> files) {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ try (ZipOutputStream out = new ZipOutputStream(baos)) {
+ out.setLevel(Deflater.NO_COMPRESSION); // This is for testing purposes so we skip compression for performance
+ for (Map.Entry<String, String> file : files.entrySet()) {
+ ZipEntry entry = new ZipEntry(file.getKey());
+ out.putNextEntry(entry);
+ out.write(file.getValue().getBytes(UTF_8));
+ out.closeEntry();
+ }
+ } catch (IOException e) {
+ throw new UncheckedIOException(e);
+ }
+ return new ApplicationPackage(baos.toByteArray());
+ }
+}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/ApplicationPackageTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageTest.java
index 1849be9b6bd..2ee03457046 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/ApplicationPackageTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageTest.java
@@ -1,5 +1,5 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.application;
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.controller.application.pkg;
import com.yahoo.config.application.api.DeploymentSpec;
import com.yahoo.config.application.api.ValidationId;
@@ -109,10 +109,10 @@ public class ApplicationPackageTest {
}
private static Map<String, String> unzip(byte[] zip) {
- return new ZipStreamReader(new ByteArrayInputStream(zip), __ -> true, 1 << 10)
+ return new ZipStreamReader(new ByteArrayInputStream(zip), __ -> true, 1 << 10, true)
.entries().stream()
.collect(Collectors.toMap(entry -> entry.zipEntry().getName(),
- entry -> new String(entry.content(), UTF_8)));
+ entry -> new String(entry.contentOrThrow(), UTF_8)));
}
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/pkg/LinesComparatorTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/pkg/LinesComparatorTest.java
new file mode 100644
index 00000000000..92137094f62
--- /dev/null
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/pkg/LinesComparatorTest.java
@@ -0,0 +1,112 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.controller.application.pkg;
+
+import org.junit.Test;
+
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+import static org.junit.Assert.assertEquals;
+
+public class LinesComparatorTest {
+ private static final String text1 = "This part of the\n" +
+ "document has stayed the\n" +
+ "same from version to\n" +
+ "version. It shouldn't\n" +
+ "be shown if it doesn't\n" +
+ "change. Otherwise, that\n" +
+ "would not be helping to\n" +
+ "compress the size of the\n" +
+ "changes.\n" +
+ "\n" +
+ "This paragraph contains\n" +
+ "text that is outdated.\n" +
+ "It will be deleted in the\n" +
+ "near future.\n" +
+ "\n" +
+ "It is important to spell\n" +
+ "check this dokument. On\n" +
+ "the other hand, a\n" +
+ "misspelled word isn't\n" +
+ "the end of the world.\n" +
+ "Nothing in the rest of\n" +
+ "this paragraph needs to\n" +
+ "be changed. Things can\n" +
+ "be added after it.";
+ private static final String text2 = "This is an important\n" +
+ "notice! It should\n" +
+ "therefore be located at\n" +
+ "the beginning of this\n" +
+ "document!\n" +
+ "\n" +
+ "This part of the\n" +
+ "document has stayed the\n" +
+ "same from version to\n" +
+ "version. It shouldn't\n" +
+ "be shown if it doesn't\n" +
+ "change. Otherwise, that\n" +
+ "would not be helping to\n" +
+ "compress the size of the\n" +
+ "changes.\n" +
+ "\n" +
+ "It is important to spell\n" +
+ "check this document. On\n" +
+ "the other hand, a\n" +
+ "misspelled word isn't\n" +
+ "the end of the world.\n" +
+ "Nothing in the rest of\n" +
+ "this paragraph needs to\n" +
+ "be changed. Things can\n" +
+ "be added after it.\n" +
+ "\n" +
+ "This paragraph contains\n" +
+ "important new additions\n" +
+ "to this document.";
+
+ @Test
+ public void diff_test() {
+ assertDiff(null, "", "");
+ assertDiff(null, text1, text1);
+ assertDiff(text1.lines().map(line -> "- " + line).collect(Collectors.joining("\n", "@@ -1,24 +1,0 @@\n", "\n")), text1, "");
+ assertDiff(text1.lines().map(line -> "+ " + line).collect(Collectors.joining("\n", "@@ -1,0 +1,24 @@\n", "\n")), "", text1);
+ assertDiff("@@ -1,3 +1,9 @@\n" +
+ "+ This is an important\n" +
+ "+ notice! It should\n" +
+ "+ therefore be located at\n" +
+ "+ the beginning of this\n" +
+ "+ document!\n" +
+ "+ \n" +
+ " This part of the\n" +
+ " document has stayed the\n" +
+ " same from version to\n" +
+ "@@ -7,14 +13,9 @@\n" +
+ " would not be helping to\n" +
+ " compress the size of the\n" +
+ " changes.\n" +
+ "- \n" +
+ "- This paragraph contains\n" +
+ "- text that is outdated.\n" +
+ "- It will be deleted in the\n" +
+ "- near future.\n" +
+ " \n" +
+ " It is important to spell\n" +
+ "+ check this document. On\n" +
+ "- check this dokument. On\n" +
+ " the other hand, a\n" +
+ " misspelled word isn't\n" +
+ " the end of the world.\n" +
+ "@@ -22,3 +23,7 @@\n" +
+ " this paragraph needs to\n" +
+ " be changed. Things can\n" +
+ " be added after it.\n" +
+ "+ \n" +
+ "+ This paragraph contains\n" +
+ "+ important new additions\n" +
+ "+ to this document.\n", text1, text2);
+ }
+
+ private static void assertDiff(String expected, String left, String right) {
+ assertEquals(Optional.ofNullable(expected),
+ LinesComparator.diff(left.lines().collect(Collectors.toList()), right.lines().collect(Collectors.toList())));
+ }
+} \ No newline at end of file
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/ZipStreamReaderTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/pkg/ZipStreamReaderTest.java
index abd234f0fa4..afbd232f01c 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/ZipStreamReaderTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/pkg/ZipStreamReaderTest.java
@@ -1,5 +1,5 @@
// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.application;
+package com.yahoo.vespa.hosted.controller.application.pkg;
import com.yahoo.security.KeyAlgorithm;
import com.yahoo.security.KeyUtils;
@@ -38,15 +38,15 @@ public class ZipStreamReaderTest {
public void test_size_limit() {
Map<String, String> entries = Map.of("foo.xml", "foobar");
try {
- new ZipStreamReader(new ByteArrayInputStream(zip(entries)), "foo.xml"::equals, 1);
+ new ZipStreamReader(new ByteArrayInputStream(zip(entries)), "foo.xml"::equals, 1, true);
fail("Expected exception");
} catch (IllegalArgumentException ignored) {}
entries = Map.of("foo.xml", "foobar",
"foo.jar", "0".repeat(100) // File not extracted and thus not subject to size limit
);
- ZipStreamReader reader = new ZipStreamReader(new ByteArrayInputStream(zip(entries)), "foo.xml"::equals,10);
- byte[] extracted = reader.entries().get(0).content();
+ ZipStreamReader reader = new ZipStreamReader(new ByteArrayInputStream(zip(entries)), "foo.xml"::equals, 10, true);
+ byte[] extracted = reader.entries().get(0).contentOrThrow();
assertEquals("foobar", new String(extracted, StandardCharsets.UTF_8));
}
@@ -65,7 +65,7 @@ public class ZipStreamReaderTest {
);
tests.forEach((name, expectException) -> {
try {
- new ZipStreamReader(new ByteArrayInputStream(zip(Map.of(name, "foo"))), name::equals, 1024);
+ new ZipStreamReader(new ByteArrayInputStream(zip(Map.of(name, "foo"))), name::equals, 1024, true);
assertFalse("Expected exception for '" + name + "'", expectException);
} catch (IllegalArgumentException ignored) {
assertTrue("Unexpected exception for '" + name + "'", expectException);
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/certificate/EndpointCertificatesTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/certificate/EndpointCertificatesTest.java
index a3580a9fda3..a509c457111 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/certificate/EndpointCertificatesTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/certificate/EndpointCertificatesTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.certificate;
import com.yahoo.config.application.api.DeploymentSpec;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/concurrent/OnceTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/concurrent/OnceTest.java
index e11fdcba7c6..e9426e96a80 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/concurrent/OnceTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/concurrent/OnceTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.concurrent;
import org.junit.Test;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/ApplicationPackageBuilder.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/ApplicationPackageBuilder.java
index 808409cf793..64821756105 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/ApplicationPackageBuilder.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/ApplicationPackageBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
import com.yahoo.component.Version;
@@ -10,7 +10,7 @@ import com.yahoo.security.SignatureAlgorithm;
import com.yahoo.security.X509CertificateBuilder;
import com.yahoo.security.X509CertificateUtils;
import com.yahoo.text.Text;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import javax.security.auth.x500.X500Principal;
import java.io.ByteArrayOutputStream;
@@ -53,6 +53,7 @@ public class ApplicationPackageBuilder {
private OptionalInt majorVersion = OptionalInt.empty();
private String instances = "default";
private String upgradePolicy = null;
+ private String upgradeRollout = null;
private String globalServiceId = null;
private String athenzIdentityAttributes = null;
private String searchDefinition = "search test { }";
@@ -75,6 +76,11 @@ public class ApplicationPackageBuilder {
return this;
}
+ public ApplicationPackageBuilder upgradeRollout(String upgradeRollout) {
+ this.upgradeRollout = upgradeRollout;
+ return this;
+ }
+
public ApplicationPackageBuilder globalServiceId(String globalServiceId) {
this.globalServiceId = globalServiceId;
return this;
@@ -221,10 +227,11 @@ public class ApplicationPackageBuilder {
}
xml.append(">\n");
xml.append(" <instance id='").append(instances).append("'>\n");
- if (upgradePolicy != null) {
- xml.append(" <upgrade policy='");
- xml.append(upgradePolicy);
- xml.append("'/>\n");
+ if (upgradePolicy != null || upgradeRollout != null) {
+ xml.append(" <upgrade ");
+ if (upgradePolicy != null) xml.append("policy='").append(upgradePolicy).append("' ");
+ if (upgradeRollout != null) xml.append("rollout='").append(upgradeRollout).append("' ");
+ xml.append("/>\n");
}
xml.append(notifications);
if (explicitSystemTest)
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentContext.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentContext.java
index 5d6f1965009..83e1a019109 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentContext.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentContext.java
@@ -1,4 +1,4 @@
-// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
import com.google.common.base.Supplier;
@@ -20,6 +20,7 @@ import com.yahoo.vespa.hosted.controller.ControllerTester;
import com.yahoo.vespa.hosted.controller.Instance;
import com.yahoo.vespa.hosted.controller.api.identifiers.DeploymentId;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.ConfigServerException;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationVersion;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobId;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
@@ -27,7 +28,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.deployment.RunId;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.SourceRevision;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.TesterCloud;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.TesterId;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.Deployment;
import com.yahoo.vespa.hosted.controller.application.EndpointId;
import com.yahoo.vespa.hosted.controller.application.TenantAndApplicationId;
@@ -192,7 +193,8 @@ public class DeploymentContext {
for (var spec : application().deploymentSpec().instances())
for (JobType type : new DeploymentSteps(spec, tester.controller()::system).productionJobs())
assertTrue(tester.configServer().nodeRepository()
- .list(type.zone(tester.controller().system()), applicationId.defaultInstance()).stream() // TODO jonmv: support more
+ .list(type.zone(tester.controller().system()),
+ NodeFilter.all().applications(applicationId.defaultInstance())).stream() // TODO jonmv: support more
.allMatch(node -> node.currentVersion().equals(version)));
assertFalse(instance().change().hasTargets());
@@ -321,7 +323,7 @@ public class DeploymentContext {
/** Runs a deployment of the given package to the given dev/perf job, on the given version. */
public DeploymentContext runJob(JobType type, ApplicationPackage applicationPackage, Version vespaVersion) {
- jobs.deploy(instanceId, type, Optional.ofNullable(vespaVersion), applicationPackage);
+ jobs.deploy(instanceId, type, Optional.ofNullable(vespaVersion), applicationPackage, false);
return runJob(type);
}
@@ -490,8 +492,8 @@ public class DeploymentContext {
Run run = jobs.last(job)
.filter(r -> r.id().type() == job.type())
.orElseThrow(() -> new AssertionError(job.type() + " is not among the active: " + jobs.active()));
- assertFalse(run.id() + " should not have failed yet", run.hasFailed());
- assertFalse(run.id() + " should not have ended yet", run.hasEnded());
+ assertFalse(run.id() + " should not have failed yet: " + run, run.hasFailed());
+ assertFalse(run.id() + " should not have ended yet: " + run, run.hasEnded());
return run;
}
@@ -543,7 +545,7 @@ public class DeploymentContext {
assertTrue(jobs.run(id).get().hasEnded());
assertFalse(jobs.run(id).get().hasFailed());
assertEquals(job.type().isProduction(), instance().deployments().containsKey(zone));
- assertTrue(configServer().nodeRepository().list(zone, TesterId.of(id.application()).id()).isEmpty());
+ assertTrue(configServer().nodeRepository().list(zone, NodeFilter.all().applications(TesterId.of(id.application()).id())).isEmpty());
}
private JobId jobId(JobType type) {
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java
index b939598c704..0f32d01ffe3 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
import com.yahoo.config.provision.ApplicationId;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java
index 7077e14a648..353756b3a4f 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
import com.yahoo.component.Version;
@@ -8,7 +8,7 @@ import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationVersion;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.RunId;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.Change;
import com.yahoo.vespa.hosted.controller.versions.VespaVersion;
import org.junit.Assert;
@@ -30,7 +30,7 @@ import static com.yahoo.vespa.hosted.controller.api.integration.deployment.JobTy
import static com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType.productionApSoutheast1;
import static com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType.productionAwsUsEast1a;
import static com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType.productionCdAwsUsEast1a;
-import static com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType.productionCdUsCentral1;
+import static com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType.productionCdUsEast1;
import static com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType.productionEuWest1;
import static com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType.productionUsCentral1;
import static com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType.productionUsEast3;
@@ -61,7 +61,7 @@ import static org.junit.Assert.assertTrue;
*/
public class DeploymentTriggerTest {
- private DeploymentTester tester = new DeploymentTester();
+ private final DeploymentTester tester = new DeploymentTester();
@Test
public void testTriggerFailing() {
@@ -107,6 +107,27 @@ public class DeploymentTriggerTest {
}
@Test
+ public void leadingUpgradeAllowsApplicationChangeWhileUpgrading() {
+ var applicationPackage = new ApplicationPackageBuilder().region("us-east-3")
+ .upgradeRollout("leading")
+ .build();
+ var app = tester.newDeploymentContext();
+
+ app.submit(applicationPackage).deploy();
+
+ Change upgrade = Change.of(new Version("7.8.9"));
+ tester.controllerTester().upgradeSystem(upgrade.platform().get());
+ tester.upgrader().maintain();
+ app.runJob(systemTest).runJob(stagingTest);
+ tester.triggerJobs();
+ app.assertRunning(productionUsEast3);
+ assertEquals(upgrade, app.instance().change());
+
+ app.submit(applicationPackage);
+ assertEquals(upgrade.with(app.lastSubmission().get()), app.instance().change());
+ }
+
+ @Test
public void abortsJobsOnNewApplicationChange() {
var app = tester.newDeploymentContext();
app.submit()
@@ -120,15 +141,15 @@ public class DeploymentTriggerTest {
app.submit();
assertTrue(tester.jobs().active(id).isPresent());
+ tester.triggerJobs();
tester.runner().run();
- assertFalse(tester.jobs().active(id).isPresent());
+ assertTrue(tester.jobs().active(id).isPresent()); // old run
+ app.runJob(systemTest).runJob(stagingTest).runJob(stagingTest); // outdated run is aborted when otherwise blocking a new run
tester.triggerJobs();
- assertEquals(EnumSet.of(systemTest, stagingTest), tester.jobs().active().stream()
- .map(run -> run.id().type())
- .collect(Collectors.toCollection(() -> EnumSet.noneOf(JobType.class))));
+ app.jobAborted(productionUsCentral1);
- app.deploy();
+ app.runJob(productionUsCentral1).runJob(productionUsWest1).runJob(productionUsEast3);
assertEquals(Change.empty(), app.instance().change());
tester.controllerTester().upgradeSystem(new Version("8.9"));
@@ -138,6 +159,8 @@ public class DeploymentTriggerTest {
// Jobs are not aborted when the new submission remains outstanding.
app.submit();
+ app.runJob(systemTest).runJob(stagingTest);
+ tester.triggerJobs();
tester.runner().run();
assertEquals(EnumSet.of(productionUsCentral1), tester.jobs().active().stream()
.map(run -> run.id().type())
@@ -468,8 +491,9 @@ public class DeploymentTriggerTest {
Version version2 = Version.fromString("7.2");
tester.controllerTester().upgradeSystem(version2);
tester.upgrader().maintain();
- app1.runJob(systemTest).runJob(stagingTest) // tests for previous version — these are "reused" later.
- .runJob(systemTest).runJob(stagingTest).timeOutConvergence(productionUsCentral1);
+ tester.triggerJobs();
+ app1.jobAborted(systemTest).jobAborted(stagingTest);
+ app1.runJob(systemTest).runJob(stagingTest).timeOutConvergence(productionUsCentral1);
assertEquals(version2, app1.deployment(productionUsCentral1.zone(main)).version());
Instant triggered = app1.instanceJobs().get(productionUsCentral1).lastTriggered().get().start();
tester.clock().advance(Duration.ofHours(1));
@@ -481,7 +505,8 @@ public class DeploymentTriggerTest {
assertEquals("Change becomes latest non-broken version", Change.of(version1), app1.instance().change());
// version1 proceeds 'til the last job, where it fails; us-central-1 is skipped, as current change is strictly dominated by what's deployed there.
- app1.failDeployment(productionEuWest1);
+ app1.runJob(systemTest).runJob(stagingTest)
+ .failDeployment(productionEuWest1);
assertEquals(triggered, app1.instanceJobs().get(productionUsCentral1).lastTriggered().get().start());
// Roll out a new application version, which gives a dual change -- this should trigger us-central-1, but only as long as it hasn't yet deployed there.
@@ -548,7 +573,7 @@ public class DeploymentTriggerTest {
app.runJob(systemTest).runJob(stagingTest);
// Finish old run of the aborted production job.
- app.jobAborted(productionUsEast3);
+ app.triggerJobs().jobAborted(productionUsEast3);
// New upgrade is already tested for both jobs.
@@ -701,16 +726,15 @@ public class DeploymentTriggerTest {
// Finish deployment for apps 2 and 3, then release a new version, leaving only app1 with an application upgrade.
app2.deploy();
app3.deploy();
- app1.assertRunning(stagingTest);
- assertEquals(1, tester.jobs().active().size());
+ app1.runJob(stagingTest);
+ assertEquals(0, tester.jobs().active().size());
tester.controllerTester().upgradeSystem(new Version("6.2"));
tester.upgrader().maintain();
app1.submit(applicationPackage);
- app1.jobAborted(stagingTest);
// Tests for app1 trigger before the others since it carries an application upgrade.
- tester.readyJobsTrigger().maintain();
+ tester.readyJobsTrigger().run();
app1.assertRunning(systemTest);
app1.assertRunning(stagingTest);
assertEquals(2, tester.jobs().active().size());
@@ -1055,12 +1079,12 @@ public class DeploymentTriggerTest {
@Test
public void mixedDirectAndPipelineJobsInProduction() {
- ApplicationPackage cdPackage = new ApplicationPackageBuilder().region("cd-us-central-1")
+ ApplicationPackage cdPackage = new ApplicationPackageBuilder().region("cd-us-east-1")
.region("cd-aws-us-east-1a")
.build();
- var zones = List.of(ZoneId.from("test.cd-us-central-1"),
- ZoneId.from("staging.cd-us-central-1"),
- ZoneId.from("prod.cd-us-central-1"),
+ var zones = List.of(ZoneId.from("test.cd-us-west-1"),
+ ZoneId.from("staging.cd-us-west-1"),
+ ZoneId.from("prod.cd-us-east-1"),
ZoneId.from("prod.cd-aws-us-east-1a"));
tester.controllerTester()
.setZones(zones, SystemName.cd)
@@ -1069,35 +1093,36 @@ public class DeploymentTriggerTest {
tester.controllerTester().computeVersionStatus();
var app = tester.newDeploymentContext();
- app.runJob(productionCdUsCentral1, cdPackage);
+ app.runJob(productionCdUsEast1, cdPackage);
app.submit(cdPackage);
app.runJob(systemTest);
// Staging test requires unknown initial version, and is broken.
- tester.controller().applications().deploymentTrigger().forceTrigger(app.instanceId(), productionCdUsCentral1, "user", false);
- app.runJob(productionCdUsCentral1)
+ tester.controller().applications().deploymentTrigger().forceTrigger(app.instanceId(), productionCdUsEast1, "user", false);
+ app.runJob(productionCdUsEast1)
.abortJob(stagingTest) // Complete failing run.
.runJob(stagingTest)
.runJob(productionCdAwsUsEast1a);
- app.runJob(productionCdUsCentral1, cdPackage);
+ app.runJob(productionCdUsEast1, cdPackage);
var version = new Version("7.1");
tester.controllerTester().upgradeSystem(version);
tester.upgrader().maintain();
// System and staging tests both require unknown versions, and are broken.
- tester.controller().applications().deploymentTrigger().forceTrigger(app.instanceId(), productionCdUsCentral1, "user", false);
- app.runJob(productionCdUsCentral1)
- .abortJob(systemTest)
- .abortJob(stagingTest)
+ tester.controller().applications().deploymentTrigger().forceTrigger(app.instanceId(), productionCdUsEast1, "user", false);
+ app.runJob(productionCdUsEast1)
+ .jobAborted(systemTest)
+ .jobAborted(stagingTest)
.runJob(systemTest)
.runJob(stagingTest)
.runJob(productionCdAwsUsEast1a);
- app.runJob(productionCdUsCentral1, cdPackage);
+ app.runJob(productionCdUsEast1, cdPackage);
app.submit(cdPackage);
- app.runJob(systemTest);
+ app.jobAborted(systemTest)
+ .runJob(systemTest);
// Staging test requires unknown initial version, and is broken.
- tester.controller().applications().deploymentTrigger().forceTrigger(app.instanceId(), productionCdUsCentral1, "user", false);
- app.runJob(productionCdUsCentral1)
+ tester.controller().applications().deploymentTrigger().forceTrigger(app.instanceId(), productionCdUsEast1, "user", false);
+ app.runJob(productionCdUsEast1)
.jobAborted(stagingTest)
.runJob(stagingTest)
.runJob(productionCdAwsUsEast1a);
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunnerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunnerTest.java
index d8bddac4187..780d2d226f3 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunnerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunnerTest.java
@@ -20,11 +20,12 @@ import com.yahoo.vespa.hosted.controller.api.application.v4.model.configserverbi
import com.yahoo.vespa.hosted.controller.api.integration.LogEntry;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.ConfigServerException;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.RunId;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.TesterCloud;
import com.yahoo.vespa.hosted.controller.api.integration.stubs.MockMailer;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.SystemApplication;
import com.yahoo.vespa.hosted.controller.config.ControllerConfig;
import com.yahoo.vespa.hosted.controller.integration.ZoneApiMock;
@@ -194,13 +195,13 @@ public class InternalStepRunnerTest {
assertEquals(succeeded, tester.jobs().last(app.instanceId(), JobType.stagingTest).get().stepStatuses().get(Step.installTester));
Node systemTestNode = tester.configServer().nodeRepository().list(JobType.systemTest.zone(system()),
- app.instanceId()).iterator().next();
+ NodeFilter.all().applications(app.instanceId())).iterator().next();
tester.clock().advance(InternalStepRunner.Timeouts.of(system()).noNodesDown().minus(Duration.ofSeconds(1)));
tester.configServer().nodeRepository().putNodes(JobType.systemTest.zone(system()),
- new Node.Builder(systemTestNode)
- .serviceState(Node.ServiceState.allowedDown)
- .suspendedSince(tester.clock().instant())
- .build());
+ Node.builder(systemTestNode)
+ .serviceState(Node.ServiceState.allowedDown)
+ .suspendedSince(tester.clock().instant())
+ .build());
tester.runner().run();
assertEquals(unfinished, tester.jobs().last(app.instanceId(), JobType.systemTest).get().stepStatuses().get(Step.installReal));
assertEquals(unfinished, tester.jobs().last(app.instanceId(), JobType.stagingTest).get().stepStatuses().get(Step.installInitialReal));
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/QuotaUsageTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/QuotaUsageTest.java
index d2901aeac97..5ce6c95ee82 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/QuotaUsageTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/QuotaUsageTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
import com.yahoo.config.provision.zone.ZoneId;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/ZipBuilderTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/ZipBuilderTest.java
index 6fb6004c60f..fd2de2e1c1d 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/ZipBuilderTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/ZipBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
import org.junit.Test;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/dns/NameServiceQueueTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/dns/NameServiceQueueTest.java
index c187552b0b3..44bcbcfb4fa 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/dns/NameServiceQueueTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/dns/NameServiceQueueTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.dns;
import com.yahoo.config.provision.HostName;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ApplicationStoreMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ApplicationStoreMock.java
index 59e2b6c04d8..a1e7dd4efe3 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ApplicationStoreMock.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ApplicationStoreMock.java
@@ -1,15 +1,15 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.integration;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ApplicationName;
import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.TenantName;
-import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.api.identifiers.DeploymentId;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationStore;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationVersion;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.TesterId;
+import com.yahoo.vespa.hosted.controller.application.TenantAndApplicationId;
import java.time.Instant;
import java.util.Map;
@@ -30,7 +30,9 @@ public class ApplicationStoreMock implements ApplicationStore {
private static final byte[] tombstone = new byte[0];
private final Map<ApplicationId, Map<ApplicationVersion, byte[]>> store = new ConcurrentHashMap<>();
- private final Map<ApplicationId, Map<ZoneId, byte[]>> devStore = new ConcurrentHashMap<>();
+ private final Map<DeploymentId, byte[]> devStore = new ConcurrentHashMap<>();
+ private final Map<ApplicationId, Map<Long, byte[]>> diffs = new ConcurrentHashMap<>();
+ private final Map<DeploymentId, Map<Long, byte[]>> devDiffs = new ConcurrentHashMap<>();
private final Map<ApplicationId, NavigableMap<Instant, byte[]>> meta = new ConcurrentHashMap<>();
private final Map<DeploymentId, NavigableMap<Instant, byte[]>> metaManual = new ConcurrentHashMap<>();
@@ -43,15 +45,30 @@ public class ApplicationStoreMock implements ApplicationStore {
}
@Override
- public byte[] get(TenantName tenant, ApplicationName application, ApplicationVersion applicationVersion) {
- byte[] bytes = store.get(appId(tenant, application)).get(applicationVersion);
+ public byte[] get(DeploymentId deploymentId, ApplicationVersion applicationVersion) {
+ if (applicationVersion.isDeployedDirectly())
+ return requireNonNull(devStore.get(deploymentId));
+
+ TenantAndApplicationId tenantAndApplicationId = TenantAndApplicationId.from(deploymentId.applicationId());
+ byte[] bytes = store.get(appId(tenantAndApplicationId.tenant(), tenantAndApplicationId.application())).get(applicationVersion);
if (bytes == null)
- throw new IllegalArgumentException("No application package found for " + tenant + "." + application +
+ throw new IllegalArgumentException("No application package found for " + tenantAndApplicationId +
" with version " + applicationVersion.id());
return bytes;
}
@Override
+ public Optional<byte[]> getDiff(TenantName tenantName, ApplicationName applicationName, long buildNumber) {
+ return Optional.ofNullable(diffs.get(appId(tenantName, applicationName))).map(map -> map.get(buildNumber));
+ }
+
+ @Override
+ public void pruneDiffs(TenantName tenantName, ApplicationName applicationName, long beforeBuildNumber) {
+ Optional.ofNullable(diffs.get(appId(tenantName, applicationName)))
+ .ifPresent(map -> map.keySet().removeIf(buildNumber -> buildNumber < beforeBuildNumber));
+ }
+
+ @Override
public Optional<byte[]> find(TenantName tenant, ApplicationName application, long buildNumber) {
return store.getOrDefault(appId(tenant, application), Map.of()).entrySet().stream()
.filter(kv -> kv.getKey().buildNumber().orElse(Long.MIN_VALUE) == buildNumber)
@@ -60,9 +77,10 @@ public class ApplicationStoreMock implements ApplicationStore {
}
@Override
- public void put(TenantName tenant, ApplicationName application, ApplicationVersion applicationVersion, byte[] applicationPackage) {
- store.putIfAbsent(appId(tenant, application), new ConcurrentHashMap<>());
- store.get(appId(tenant, application)).put(applicationVersion, applicationPackage);
+ public void put(TenantName tenant, ApplicationName application, ApplicationVersion applicationVersion, byte[] applicationPackage, byte[] diff) {
+ store.computeIfAbsent(appId(tenant, application), __ -> new ConcurrentHashMap<>()).put(applicationVersion, applicationPackage);
+ applicationVersion.buildNumber().ifPresent(buildNumber ->
+ diffs.computeIfAbsent(appId(tenant, application), __ -> new ConcurrentHashMap<>()).put(buildNumber, diff));
}
@Override
@@ -83,8 +101,8 @@ public class ApplicationStoreMock implements ApplicationStore {
@Override
public void putTester(TenantName tenant, ApplicationName application, ApplicationVersion applicationVersion, byte[] testerPackage) {
- store.putIfAbsent(testerId(tenant, application), new ConcurrentHashMap<>());
- store.get(testerId(tenant, application)).put(applicationVersion, testerPackage);
+ store.computeIfAbsent(testerId(tenant, application), key -> new ConcurrentHashMap<>())
+ .put(applicationVersion, testerPackage);
}
@Override
@@ -99,14 +117,21 @@ public class ApplicationStoreMock implements ApplicationStore {
}
@Override
- public void putDev(ApplicationId application, ZoneId zone, byte[] applicationPackage) {
- devStore.putIfAbsent(application, new ConcurrentHashMap<>());
- devStore.get(application).put(zone, applicationPackage);
+ public Optional<byte[]> getDevDiff(DeploymentId deploymentId, long buildNumber) {
+ return Optional.ofNullable(devDiffs.get(deploymentId)).map(map -> map.get(buildNumber));
+ }
+
+ @Override
+ public void pruneDevDiffs(DeploymentId deploymentId, long beforeBuildNumber) {
+ Optional.ofNullable(devDiffs.get(deploymentId))
+ .ifPresent(map -> map.keySet().removeIf(buildNumber -> buildNumber < beforeBuildNumber));
}
@Override
- public byte[] getDev(ApplicationId application, ZoneId zone) {
- return requireNonNull(devStore.get(application).get(zone));
+ public void putDev(DeploymentId deploymentId, ApplicationVersion applicationVersion, byte[] applicationPackage, byte[] diff) {
+ devStore.put(deploymentId, applicationPackage);
+ applicationVersion.buildNumber().ifPresent(buildNumber ->
+ devDiffs.computeIfAbsent(deploymentId, __ -> new ConcurrentHashMap<>()).put(buildNumber, diff));
}
@Override
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ArtifactRepositoryMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ArtifactRepositoryMock.java
index 1cbda9c165f..aa4cabb4fe8 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ArtifactRepositoryMock.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ArtifactRepositoryMock.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.integration;
import com.yahoo.component.AbstractComponent;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/AthenzFilterMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/AthenzFilterMock.java
index 6cc6ca012c7..ea7521e8250 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/AthenzFilterMock.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/AthenzFilterMock.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.integration;
import com.fasterxml.jackson.core.JsonProcessingException;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java
index 92c8cbc4889..cbdf5dcb075 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java
@@ -31,6 +31,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.configserver.ContainerE
import com.yahoo.vespa.hosted.controller.api.integration.configserver.LoadBalancer;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Log;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.PrepareResponse;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.ProxyResponse;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.QuotaUsage;
@@ -39,7 +40,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.deployment.TestReport;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.TesterCloud;
import com.yahoo.vespa.hosted.controller.api.integration.noderepository.RestartFilter;
import com.yahoo.vespa.hosted.controller.api.integration.secrets.TenantSecretStore;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.SystemApplication;
import com.yahoo.vespa.serviceview.bindings.ApplicationView;
import com.yahoo.vespa.serviceview.bindings.ClusterView;
@@ -63,10 +64,7 @@ import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;
-import java.util.concurrent.atomic.AtomicReference;
-import java.util.function.BooleanSupplier;
import java.util.function.Consumer;
-import java.util.function.Function;
import java.util.function.Supplier;
import java.util.logging.Level;
import java.util.stream.Collectors;
@@ -136,25 +134,25 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer
new com.yahoo.vespa.hosted.controller.api.integration.configserver.Application(application,
List.of(cluster)));
- Node parent = nodeRepository().list(zone, SystemApplication.tenantHost.id()).stream().findAny()
+ Node parent = nodeRepository().list(zone, NodeFilter.all().applications(SystemApplication.tenantHost.id())).stream().findAny()
.orElseThrow(() -> new IllegalStateException("No parent hosts in " + zone));
- nodeRepository().putNodes(zone, new Node.Builder().hostname(hostFor(application, zone))
- .state(Node.State.reserved)
- .type(NodeType.tenant)
- .owner(application)
- .parentHostname(parent.hostname())
- .currentVersion(initialVersion)
- .wantedVersion(initialVersion)
- .currentDockerImage(initialDockerImage)
- .wantedDockerImage(initialDockerImage)
- .currentOsVersion(Version.emptyVersion)
- .wantedOsVersion(Version.emptyVersion)
- .resources(new NodeResources(2, 8, 50, 1, slow, remote))
- .serviceState(Node.ServiceState.unorchestrated)
- .flavor("d-2-8-50")
- .clusterId(clusterId.value())
- .clusterType(Node.ClusterType.container)
- .build());
+ nodeRepository().putNodes(zone, Node.builder().hostname(hostFor(application, zone))
+ .state(Node.State.reserved)
+ .type(NodeType.tenant)
+ .owner(application)
+ .parentHostname(parent.hostname())
+ .currentVersion(initialVersion)
+ .wantedVersion(initialVersion)
+ .currentDockerImage(initialDockerImage)
+ .wantedDockerImage(initialDockerImage)
+ .currentOsVersion(Version.emptyVersion)
+ .wantedOsVersion(Version.emptyVersion)
+ .resources(new NodeResources(2, 8, 50, 1, slow, remote))
+ .serviceState(Node.ServiceState.unorchestrated)
+ .flavor("d-2-8-50")
+ .clusterId(clusterId.value())
+ .clusterType(Node.ClusterType.container)
+ .build());
}
public HostName hostFor(ApplicationId application, ZoneId zone) {
@@ -174,16 +172,16 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer
for (ZoneId zone : zones) {
for (SystemApplication application : applications) {
for (int i = 1; i <= 3; i++) {
- Node node = new Node.Builder()
- .hostname(HostName.from("node-" + i + "-" + application.id().application()
+ Node node = Node.builder()
+ .hostname(HostName.from("node-" + i + "-" + application.id().application()
.value() + "-" + zone.value()))
- .state(Node.State.active)
- .type(application.nodeType())
- .owner(application.id())
- .currentVersion(initialVersion).wantedVersion(initialVersion)
- .currentOsVersion(Version.emptyVersion).wantedOsVersion(Version.emptyVersion)
- .build();
- nodeRepository().putNode(zone, node);
+ .state(Node.State.active)
+ .type(application.nodeType())
+ .owner(application.id())
+ .currentVersion(initialVersion).wantedVersion(initialVersion)
+ .currentOsVersion(Version.emptyVersion).wantedOsVersion(Version.emptyVersion)
+ .build();
+ nodeRepository().putNodes(zone, node);
}
convergeServices(application.id(), zone);
}
@@ -192,7 +190,7 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer
/** Converge all services belonging to the given application */
public void convergeServices(ApplicationId application, ZoneId zone) {
- List<Node> nodes = nodeRepository.list(zone, application);
+ List<Node> nodes = nodeRepository.list(zone, NodeFilter.all().applications(application));
serviceStatus.put(new DeploymentId(application, zone), new ServiceConvergence(application,
zone,
true,
@@ -222,7 +220,7 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer
/** Set version for an application in a given zone */
public void setVersion(Version version, ApplicationId application, ZoneId zone) {
- setVersion(zone, nodeRepository.list(zone, application), version, false);
+ setVersion(zone, nodeRepository.list(zone, NodeFilter.all().applications(application)), version, false);
}
/** Set version for nodeCount number of nodes in application in a given zone */
@@ -232,7 +230,7 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer
/** Set OS version for an application in a given zone */
public void setOsVersion(Version version, ApplicationId application, ZoneId zone) {
- setVersion(zone, nodeRepository.list(zone, application), version, true);
+ setVersion(zone, nodeRepository.list(zone, NodeFilter.all().applications(application)), version, true);
}
/** Set OS version for an application in a given zone */
@@ -244,9 +242,9 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer
for (var node : nodes) {
Node newNode;
if (osVersion) {
- newNode = new Node.Builder(node).currentOsVersion(version).wantedOsVersion(version).build();
+ newNode = Node.builder(node).currentOsVersion(version).wantedOsVersion(version).build();
} else {
- newNode = new Node.Builder(node).currentVersion(version).wantedVersion(version).build();
+ newNode = Node.builder(node).currentVersion(version).wantedVersion(version).build();
}
nodeRepository().putNodes(zone, newNode);
}
@@ -385,7 +383,7 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer
applications.put(id, new Application(id.applicationId(), lastPrepareVersion, new ApplicationPackage(deployment.applicationPackage())));
ClusterSpec.Id cluster = ClusterSpec.Id.from("default");
- if (nodeRepository().list(id.zoneId(), id.applicationId()).isEmpty())
+ if (nodeRepository().list(id.zoneId(), NodeFilter.all().applications(id.applicationId())).isEmpty())
provision(id.zoneId(), id.applicationId(), cluster);
this.containerEndpoints.put(
@@ -408,12 +406,12 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer
return () -> {
Application application = applications.get(id);
application.activate();
- List<Node> nodes = nodeRepository.list(id.zoneId(), id.applicationId());
+ List<Node> nodes = nodeRepository.list(id.zoneId(), NodeFilter.all().applications(id.applicationId()));
for (Node node : nodes) {
- nodeRepository.putNodes(id.zoneId(), new Node.Builder(node)
- .state(Node.State.active)
- .wantedVersion(application.version().get())
- .build());
+ nodeRepository.putNodes(id.zoneId(), Node.builder(node)
+ .state(Node.State.active)
+ .wantedVersion(application.version().get())
+ .build());
}
serviceStatus.put(id, new ServiceConvergence(id.applicationId(),
id.zoneId(),
@@ -474,7 +472,7 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer
public void deactivate(DeploymentId deployment) {
ApplicationId applicationId = deployment.applicationId();
nodeRepository().removeNodes(deployment.zoneId(),
- nodeRepository().list(deployment.zoneId(), applicationId));
+ nodeRepository().list(deployment.zoneId(), NodeFilter.all().applications(applicationId)));
if ( ! applications.containsKey(deployment))
return;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerProxyMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerProxyMock.java
index d481aaa2c77..ef2b6f6f7e2 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerProxyMock.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerProxyMock.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.integration;
import com.yahoo.component.AbstractComponent;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ContainerRegistryMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ContainerRegistryMock.java
index 9fa2867631a..4791017548d 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ContainerRegistryMock.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ContainerRegistryMock.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.integration;
import com.yahoo.vespa.hosted.controller.api.integration.container.ContainerImage;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/MetricsMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/MetricsMock.java
index 61c98258549..dcea323a8e8 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/MetricsMock.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/MetricsMock.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.integration;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java
index 4079591730d..ef99183ecde 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java
@@ -1,7 +1,6 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.integration;
-import com.fasterxml.jackson.databind.JsonNode;
import com.yahoo.collections.Pair;
import com.yahoo.component.Version;
import com.yahoo.config.provision.ApplicationId;
@@ -15,25 +14,18 @@ import com.yahoo.vespa.hosted.controller.api.integration.configserver.Applicatio
import com.yahoo.vespa.hosted.controller.api.integration.configserver.ApplicationStats;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Load;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeRepoStats;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeRepository;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.TargetVersions;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeList;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeRepositoryNode;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeState;
import java.net.URI;
import java.time.Duration;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.NoSuchElementException;
import java.util.Objects;
import java.util.Optional;
-import java.util.function.Function;
import java.util.function.UnaryOperator;
import java.util.stream.Collectors;
@@ -50,159 +42,47 @@ public class NodeRepositoryMock implements NodeRepository {
private final Map<DeploymentId, Pair<Double, Double>> trafficFractions = new HashMap<>();
private final Map<ZoneId, Map<TenantName, URI>> archiveUris = new HashMap<>();
- // A separate/alternative list of NodeRepositoryNode nodes.
- // Methods operating with Node and NodeRepositoryNode lives separate lives.
- private final Map<ZoneId, List<NodeRepositoryNode>> nodeRepoNodes = new HashMap<>();
-
- private boolean allowPatching = false;
+ private boolean allowPatching = true;
private boolean hasSpareCapacity = false;
- /** Add or update given nodes in zone */
- public void putNodes(ZoneId zone, List<Node> nodes) {
- Map<HostName, Node> zoneNodes = nodeRepository.computeIfAbsent(zone, (k) -> new HashMap<>());
+ @Override
+ public void addNodes(ZoneId zone, List<Node> nodes) {
+ Map<HostName, Node> existingNodes = nodeRepository.getOrDefault(zone, Map.of());
for (var node : nodes) {
- zoneNodes.put(node.hostname(), node);
+ if (existingNodes.containsKey(node.hostname())) {
+ throw new IllegalArgumentException("Node " + node.hostname() + " already added in zone " + zone);
+ }
}
- }
-
- public void putNode(ZoneId zone, Node node) {
- nodeRepository.computeIfAbsent(zone, (k) -> new HashMap<>()).put(node.hostname(), node);
- }
-
- public void putApplication(ZoneId zone, Application application) {
- applications.putIfAbsent(zone, new HashMap<>());
- applications.get(zone).put(application.id(), application);
- }
-
- @Override
- public NodeRepoStats getStats(ZoneId zone) {
- List<ApplicationStats> applicationStats =
- applications.containsKey(zone)
- ? applications.get(zone).keySet().stream()
- .map(id -> new ApplicationStats(id, Load.zero(), 0, 0))
- .collect(Collectors.toList())
- : List.of();
-
- return new NodeRepoStats(Load.zero(), Load.zero(), applicationStats);
- }
-
- public Pair<Double, Double> getTrafficFraction(ApplicationId application, ZoneId zone) {
- return trafficFractions.get(new DeploymentId(application, zone));
- }
-
- /** Add or update given node in zone */
- public void putNodes(ZoneId zone, Node node) {
- putNodes(zone, Collections.singletonList(node));
- }
-
- /** Remove given nodes from zone */
- public void removeNodes(ZoneId zone, List<Node> nodes) {
- nodes.forEach(node -> nodeRepository.get(zone).remove(node.hostname()));
- }
-
- /** Remove all nodes in all zones */
- public void clear() {
- nodeRepository.clear();
- nodeRepoNodes.clear();
- }
-
- /** Replace nodes in zone with given nodes */
- public void setNodes(ZoneId zone, List<Node> nodes) {
- nodeRepository.put(zone, nodes.stream().collect(Collectors.toMap(Node::hostname, Function.identity())));
- }
-
- public Node require(HostName hostName) {
- return nodeRepository.values().stream()
- .map(zoneNodes -> zoneNodes.get(hostName))
- .filter(Objects::nonNull)
- .findFirst()
- .orElseThrow(() -> new NoSuchElementException("No node with the hostname " + hostName + " is known."));
- }
-
- /** Replace nodes in zone with a fixed set of nodes */
- public void setFixedNodes(ZoneId zone) {
- var nodeA = new Node.Builder()
- .hostname(HostName.from("hostA"))
- .parentHostname(HostName.from("parentHostA"))
- .state(Node.State.active)
- .type(NodeType.tenant)
- .owner(ApplicationId.from("tenant1", "app1", "default"))
- .currentVersion(Version.fromString("7.42"))
- .wantedVersion(Version.fromString("7.42"))
- .currentOsVersion(Version.fromString("7.6"))
- .wantedOsVersion(Version.fromString("7.6"))
- .serviceState(Node.ServiceState.expectedUp)
- .resources(new NodeResources(24, 24, 500, 1))
- .clusterId("clusterA")
- .clusterType(Node.ClusterType.container)
- .exclusiveTo(ApplicationId.from("t1", "a1", "i1"))
- .build();
- var nodeB = new Node.Builder()
- .hostname(HostName.from("hostB"))
- .parentHostname(HostName.from("parentHostB"))
- .state(Node.State.active)
- .type(NodeType.tenant)
- .owner(ApplicationId.from("tenant2", "app2", "default"))
- .currentVersion(Version.fromString("7.42"))
- .wantedVersion(Version.fromString("7.42"))
- .currentOsVersion(Version.fromString("7.6"))
- .wantedOsVersion(Version.fromString("7.6"))
- .serviceState(Node.ServiceState.expectedUp)
- .resources(new NodeResources(40, 24, 500, 1))
- .cost(20)
- .clusterId("clusterB")
- .clusterType(Node.ClusterType.container)
- .build();
- setNodes(zone, List.of(nodeA, nodeB));
- }
-
- @Override
- public void addNodes(ZoneId zone, Collection<NodeRepositoryNode> nodes) {
- nodeRepoNodes.put(zone, new ArrayList<>(nodes));
+ putNodes(zone, nodes);
}
@Override
public void deleteNode(ZoneId zone, String hostname) {
- throw new UnsupportedOperationException();
+ require(zone, hostname);
+ nodeRepository.get(zone).remove(HostName.from(hostname));
}
@Override
- public void setState(ZoneId zone, NodeState nodeState, String hostName) {
- var existing = list(zone, List.of(HostName.from(hostName)));
- if (existing.size() != 1) throw new IllegalArgumentException("Node " + hostName + " not found in " + zone);
-
- var node = new Node.Builder(existing.get(0))
- .state(Node.State.valueOf(nodeState.name()))
- .build();
+ public void setState(ZoneId zone, Node.State state, String hostname) {
+ Node node = Node.builder(require(zone, hostname))
+ .state(Node.State.valueOf(state.name()))
+ .build();
putNodes(zone, node);
}
@Override
- public NodeRepositoryNode getNode(ZoneId zone, String hostname) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public NodeList listNodes(ZoneId zone) {
- return new NodeList(nodeRepoNodes.get(zone));
- }
-
- @Override
- public List<Node> list(ZoneId zone, boolean includeDeprovisioned) {
- return List.copyOf(nodeRepository.getOrDefault(zone, Map.of()).values());
+ public Node getNode(ZoneId zone, String hostname) {
+ return require(zone, hostname);
}
@Override
- public List<Node> list(ZoneId zone, ApplicationId application) {
- return nodeRepository.getOrDefault(zone, Collections.emptyMap()).values().stream()
- .filter(node -> node.owner().map(application::equals).orElse(false))
- .collect(Collectors.toList());
- }
-
- @Override
- public List<Node> list(ZoneId zone, List<HostName> hostnames) {
- return nodeRepository.getOrDefault(zone, Collections.emptyMap()).values().stream()
- .filter(node -> hostnames.contains(node.hostname()))
+ public List<Node> list(ZoneId zone, NodeFilter filter) {
+ return nodeRepository.getOrDefault(zone, Map.of()).values().stream()
+ .filter(node -> filter.includeDeprovisioned() || node.state() != Node.State.deprovisioned)
+ .filter(node -> filter.applications().isEmpty() ||
+ (node.owner().isPresent() && filter.applications().contains(node.owner().get())))
+ .filter(node -> filter.hostnames().isEmpty() || filter.hostnames().contains(node.hostname()))
+ .filter(node -> filter.states().isEmpty() || filter.states().contains(node.state()))
.collect(Collectors.toList());
}
@@ -218,6 +98,18 @@ public class NodeRepositoryMock implements NodeRepository {
}
@Override
+ public NodeRepoStats getStats(ZoneId zone) {
+ List<ApplicationStats> applicationStats =
+ applications.containsKey(zone)
+ ? applications.get(zone).keySet().stream()
+ .map(id -> new ApplicationStats(id, Load.zero(), 0, 0))
+ .collect(Collectors.toList())
+ : List.of();
+
+ return new NodeRepoStats(Load.zero(), Load.zero(), applicationStats);
+ }
+
+ @Override
public Map<TenantName, URI> getArchiveUris(ZoneId zone) {
return Map.copyOf(archiveUris.getOrDefault(zone, Map.of()));
}
@@ -244,13 +136,13 @@ public class NodeRepositoryMock implements NodeRepository {
nodeRepository.getOrDefault(zone, Map.of()).values()
.stream()
.filter(node -> node.type() == type)
- .map(node -> new Node.Builder(node).wantedVersion(version).build())
+ .map(node -> Node.builder(node).wantedVersion(version).build())
.forEach(node -> putNodes(zone, node));
}
@Override
- public void upgradeOs(ZoneId zone, NodeType type, Version version, Optional<Duration> upgradeBudget) {
- upgradeBudget.ifPresent(d -> this.osUpgradeBudgets.put(Objects.hash(zone, type, version), d));
+ public void upgradeOs(ZoneId zone, NodeType type, Version version, Duration upgradeBudget) {
+ this.osUpgradeBudgets.put(Objects.hash(zone, type, version), upgradeBudget);
this.targetVersions.compute(zone, (ignored, targetVersions) -> {
if (targetVersions == null) {
targetVersions = TargetVersions.EMPTY;
@@ -261,7 +153,7 @@ public class NodeRepositoryMock implements NodeRepository {
nodeRepository.getOrDefault(zone, Map.of()).values()
.stream()
.filter(node -> node.type() == type)
- .map(node -> new Node.Builder(node).wantedOsVersion(version).build())
+ .map(node -> Node.builder(node).wantedOsVersion(version).build())
.forEach(node -> putNodes(zone, node));
}
@@ -279,80 +171,135 @@ public class NodeRepositoryMock implements NodeRepository {
}
@Override
- public void retireAndDeprovision(ZoneId zoneId, String hostName) {
- nodeRepository.get(zoneId).remove(HostName.from(hostName));
+ public void retire(ZoneId zone, String hostname, boolean wantToRetire, boolean wantToDeprovision) {
+ patchNodes(zone, hostname, (node) -> Node.builder(node).wantToRetire(wantToRetire).wantToDeprovision(wantToDeprovision).build());
}
@Override
- public void patchNode(ZoneId zoneId, String hostName, NodeRepositoryNode node) {
- if (!allowPatching) throw new UnsupportedOperationException();
- List<Node> existing = list(zoneId, List.of(HostName.from(hostName)));
- if (existing.size() != 1) throw new IllegalArgumentException("Node " + hostName + " not found in " + zoneId);
+ public void updateReports(ZoneId zone, String hostname, Map<String, String> reports) {
+ Map<String, String> trimmedReports = reports.entrySet().stream()
+ // Null value clears a report
+ .filter(kv -> kv.getValue() != null)
+ .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
+ patchNodes(zone, hostname, (node) -> Node.builder(node).reports(trimmedReports).build());
+ }
- // Note: Only supports switchHostname, modelName and wantToRetire
- Node.Builder newNode = new Node.Builder(existing.get(0));
- if (node.getSwitchHostname() != null)
- newNode.switchHostname(node.getSwitchHostname());
- if (node.getModelName() != null)
- newNode.modelName(node.getModelName());
- if (node.getWantToRetire() != null)
- newNode.wantToRetire(node.getWantToRetire());
- if (!node.getReports().isEmpty())
- newNode.reports(node.getReports());
+ @Override
+ public void updateModel(ZoneId zone, String hostname, String modelName) {
+ patchNodes(zone, hostname, (node) -> Node.builder(node).modelName(modelName).build());
+ }
- putNodes(zoneId, newNode.build());
+ @Override
+ public void updateSwitchHostname(ZoneId zone, String hostname, String switchHostname) {
+ patchNodes(zone, hostname, (node) -> Node.builder(node).switchHostname(switchHostname).build());
}
@Override
- public void reboot(ZoneId zoneId, String hostName) {
+ public void reboot(ZoneId zone, String hostname) {
throw new UnsupportedOperationException();
}
@Override
- public boolean isReplaceable(ZoneId zoneId, List<HostName> hostNames) {
+ public boolean isReplaceable(ZoneId zone, List<HostName> hostnames) {
return hasSpareCapacity;
}
+ /** Add or update given nodes in zone */
+ public void putNodes(ZoneId zone, List<Node> nodes) {
+ Map<HostName, Node> zoneNodes = nodeRepository.computeIfAbsent(zone, (k) -> new HashMap<>());
+ for (var node : nodes) {
+ zoneNodes.put(node.hostname(), node);
+ }
+ }
+
+ /** Add or update given node in zone */
+ public void putNodes(ZoneId zone, Node node) {
+ putNodes(zone, List.of(node));
+ }
+
+ public void putApplication(ZoneId zone, Application application) {
+ applications.computeIfAbsent(zone, (k) -> new HashMap<>())
+ .put(application.id(), application);
+ }
+
+ public Pair<Double, Double> getTrafficFraction(ApplicationId application, ZoneId zone) {
+ return trafficFractions.get(new DeploymentId(application, zone));
+ }
+
+ /** Remove given nodes from zone */
+ public void removeNodes(ZoneId zone, List<Node> nodes) {
+ nodes.forEach(node -> nodeRepository.get(zone).remove(node.hostname()));
+ }
+
+ /** Remove all nodes in all zones */
+ public void clear() {
+ nodeRepository.clear();
+ }
+
+ /** Add a fixed set of nodes to given zone */
+ public void addFixedNodes(ZoneId zone) {
+ var nodeA = Node.builder()
+ .hostname(HostName.from("hostA"))
+ .parentHostname(HostName.from("parentHostA"))
+ .state(Node.State.active)
+ .type(NodeType.tenant)
+ .owner(ApplicationId.from("tenant1", "app1", "default"))
+ .currentVersion(Version.fromString("7.42"))
+ .wantedVersion(Version.fromString("7.42"))
+ .currentOsVersion(Version.fromString("7.6"))
+ .wantedOsVersion(Version.fromString("7.6"))
+ .serviceState(Node.ServiceState.expectedUp)
+ .resources(new NodeResources(24, 24, 500, 1))
+ .clusterId("clusterA")
+ .clusterType(Node.ClusterType.container)
+ .exclusiveTo(ApplicationId.from("t1", "a1", "i1"))
+ .build();
+ var nodeB = Node.builder()
+ .hostname(HostName.from("hostB"))
+ .parentHostname(HostName.from("parentHostB"))
+ .state(Node.State.active)
+ .type(NodeType.tenant)
+ .owner(ApplicationId.from("tenant2", "app2", "default"))
+ .currentVersion(Version.fromString("7.42"))
+ .wantedVersion(Version.fromString("7.42"))
+ .currentOsVersion(Version.fromString("7.6"))
+ .wantedOsVersion(Version.fromString("7.6"))
+ .serviceState(Node.ServiceState.expectedUp)
+ .resources(new NodeResources(40, 24, 500, 1))
+ .cost(20)
+ .clusterId("clusterB")
+ .clusterType(Node.ClusterType.container)
+ .build();
+ putNodes(zone, List.of(nodeA, nodeB));
+ }
+
public Optional<Duration> osUpgradeBudget(ZoneId zone, NodeType type, Version version) {
return Optional.ofNullable(osUpgradeBudgets.get(Objects.hash(zone, type, version)));
}
public void doUpgrade(DeploymentId deployment, Optional<HostName> hostName, Version version) {
- modifyNodes(deployment, hostName, node -> {
- assert node.wantedVersion().equals(version);
- return new Node.Builder(node)
- .currentVersion(version)
- .currentDockerImage(node.wantedDockerImage())
- .build();
+ patchNodes(deployment, hostName, node -> {
+ return Node.builder(node)
+ .currentVersion(version)
+ .currentDockerImage(node.wantedDockerImage())
+ .build();
});
}
- private void modifyNodes(DeploymentId deployment, Optional<HostName> hostname, UnaryOperator<Node> modification) {
- List<Node> nodes = hostname.map(this::require)
- .map(Collections::singletonList)
- .orElse(list(deployment.zoneId(), deployment.applicationId()));
- putNodes(deployment.zoneId(),
- nodes.stream().map(modification).collect(Collectors.toList()));
- }
-
public void requestRestart(DeploymentId deployment, Optional<HostName> hostname) {
- modifyNodes(deployment, hostname, node -> new Node.Builder(node).wantedRestartGeneration(node.wantedRestartGeneration() + 1).build());
+ patchNodes(deployment, hostname, node -> Node.builder(node).wantedRestartGeneration(node.wantedRestartGeneration() + 1).build());
}
public void doRestart(DeploymentId deployment, Optional<HostName> hostname) {
- modifyNodes(deployment, hostname, node -> new Node.Builder(node).restartGeneration(node.restartGeneration() + 1).build());
+ patchNodes(deployment, hostname, node -> Node.builder(node).restartGeneration(node.restartGeneration() + 1).build());
}
public void requestReboot(DeploymentId deployment, Optional<HostName> hostname) {
- modifyNodes(deployment, hostname, node -> new Node.Builder(node).wantedRebootGeneration(node.wantedRebootGeneration() + 1).build());
+ patchNodes(deployment, hostname, node -> Node.builder(node).wantedRebootGeneration(node.wantedRebootGeneration() + 1).build());
}
public void doReboot(DeploymentId deployment, Optional<HostName> hostname) {
- modifyNodes(deployment, hostname, node -> new Node.Builder(node).rebootGeneration(node.rebootGeneration() + 1).build());
- }
-
- public void addReport(ZoneId zoneId, HostName hostName, String reportId, JsonNode report) {
- nodeRepository.get(zoneId).get(hostName).reports().put(reportId, report);
+ patchNodes(deployment, hostname, node -> Node.builder(node).rebootGeneration(node.rebootGeneration() + 1).build());
}
public NodeRepositoryMock allowPatching(boolean allowPatching) {
@@ -364,4 +311,33 @@ public class NodeRepositoryMock implements NodeRepository {
this.hasSpareCapacity = hasSpareCapacity;
}
+ private Node require(ZoneId zone, String hostname) {
+ return require(zone, HostName.from(hostname));
+ }
+
+ private Node require(ZoneId zone, HostName hostname) {
+ Node node = nodeRepository.getOrDefault(zone, Map.of()).get(hostname);
+ if (node == null) throw new IllegalArgumentException("Node not found in " + zone + ": " + hostname);
+ return node;
+ }
+
+ private void patchNodes(ZoneId zone, String hostname, UnaryOperator<Node> patcher) {
+ patchNodes(zone, Optional.of(HostName.from(hostname)), patcher);
+ }
+
+ private void patchNodes(DeploymentId deployment, Optional<HostName> hostname, UnaryOperator<Node> patcher) {
+ patchNodes(deployment.zoneId(), hostname, patcher);
+ }
+
+ private void patchNodes(ZoneId zone, Optional<HostName> hostname, UnaryOperator<Node> patcher) {
+ if (!allowPatching) throw new UnsupportedOperationException("Patching is disabled in this mock");
+ List<Node> nodes;
+ if (hostname.isPresent()) {
+ nodes = List.of(require(zone, hostname.get()));
+ } else {
+ nodes = list(zone, NodeFilter.all());
+ }
+ putNodes(zone, nodes.stream().map(patcher).collect(Collectors.toList()));
+ }
+
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/SecretStoreMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/SecretStoreMock.java
index c088965c2ad..37c050079e0 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/SecretStoreMock.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/SecretStoreMock.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.integration;
import com.yahoo.component.AbstractComponent;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ServiceRegistryMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ServiceRegistryMock.java
index 9002933b767..f64c54ff24d 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ServiceRegistryMock.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ServiceRegistryMock.java
@@ -13,7 +13,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.athenz.AccessControlSer
import com.yahoo.vespa.hosted.controller.api.integration.athenz.MockAccessControlService;
import com.yahoo.vespa.hosted.controller.api.integration.aws.MockRoleService;
import com.yahoo.vespa.hosted.controller.api.integration.aws.RoleService;
-import com.yahoo.vespa.hosted.controller.api.integration.aws.MockAwsEventFetcher;
+import com.yahoo.vespa.hosted.controller.api.integration.aws.MockCloudEventFetcher;
import com.yahoo.vespa.hosted.controller.api.integration.aws.MockResourceTagger;
import com.yahoo.vespa.hosted.controller.api.integration.aws.ResourceTagger;
import com.yahoo.vespa.hosted.controller.api.integration.billing.BillingController;
@@ -69,7 +69,7 @@ public class ServiceRegistryMock extends AbstractComponent implements ServiceReg
private final MemoryEntityService memoryEntityService = new MemoryEntityService();
private final DummySystemMonitor systemMonitor = new DummySystemMonitor();
private final CostReportConsumerMock costReportConsumerMock = new CostReportConsumerMock();
- private final MockAwsEventFetcher mockAwsEventFetcher = new MockAwsEventFetcher();
+ private final MockCloudEventFetcher mockAwsEventFetcher = new MockCloudEventFetcher();
private final ArtifactRepositoryMock artifactRepositoryMock = new ArtifactRepositoryMock();
private final MockTesterCloud mockTesterCloud;
private final ApplicationStoreMock applicationStoreMock = new ApplicationStoreMock();
@@ -168,7 +168,7 @@ public class ServiceRegistryMock extends AbstractComponent implements ServiceReg
}
@Override
- public MockAwsEventFetcher eventFetcherService() {
+ public MockCloudEventFetcher eventFetcherService() {
return mockAwsEventFetcher;
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneRegistryMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneRegistryMock.java
index fe03b69a3fe..7ce17aff782 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneRegistryMock.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneRegistryMock.java
@@ -9,6 +9,7 @@ import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.SystemName;
+import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.zone.RoutingMethod;
import com.yahoo.config.provision.zone.UpgradePolicy;
import com.yahoo.config.provision.zone.ZoneApi;
@@ -216,6 +217,8 @@ public class ZoneRegistryMock extends AbstractComponent implements ZoneRegistry
return URI.create("https://api.tld:4443/");
}
+ @Override public Optional<String> tenantDeveloperRoleArn(TenantName tenant) { return Optional.empty(); }
+
@Override
public boolean hasZone(ZoneId zoneId) {
return zones.stream().anyMatch(zone -> zone.getId().equals(zoneId));
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ApplicationOwnershipConfirmerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ApplicationOwnershipConfirmerTest.java
index f79d47766ba..09ee1f8fe51 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ApplicationOwnershipConfirmerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ApplicationOwnershipConfirmerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.InstanceName;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveUriUpdaterTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveUriUpdaterTest.java
index d7934f08fee..451991f9604 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveUriUpdaterTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ArchiveUriUpdaterTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.component.Version;
@@ -9,7 +9,7 @@ import com.yahoo.vespa.hosted.controller.ControllerTester;
import com.yahoo.vespa.hosted.controller.api.integration.archive.ArchiveBucket;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeRepository;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.SystemApplication;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentContext;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentTester;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeManagementAssessorTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeManagementAssessorTest.java
index 476d2465202..add1a319384 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeManagementAssessorTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeManagementAssessorTest.java
@@ -1,33 +1,33 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
+import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.zone.ZoneId;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeMembership;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeOwner;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeRepositoryNode;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeState;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeType;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
import com.yahoo.vespa.hosted.controller.integration.NodeRepositoryMock;
import org.junit.Test;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+/**
+ * @author smorgrav
+ */
public class ChangeManagementAssessorTest {
- private ChangeManagementAssessor changeManagementAssessor = new ChangeManagementAssessor(new NodeRepositoryMock());
+ private final ChangeManagementAssessor changeManagementAssessor = new ChangeManagementAssessor(new NodeRepositoryMock());
@Test
public void empty_input_variations() {
ZoneId zone = ZoneId.from("prod", "eu-trd");
List<String> hostNames = new ArrayList<>();
- List<NodeRepositoryNode> allNodesInZone = new ArrayList<>();
+ List<Node> allNodesInZone = new ArrayList<>();
// Both zone and hostnames are empty
ChangeManagementAssessor.Assessment assessment
@@ -39,7 +39,7 @@ public class ChangeManagementAssessorTest {
public void one_host_one_cluster_no_groups() {
ZoneId zone = ZoneId.from("prod", "eu-trd");
List<String> hostNames = Collections.singletonList("host1");
- List<NodeRepositoryNode> allNodesInZone = new ArrayList<>();
+ List<Node> allNodesInZone = new ArrayList<>();
allNodesInZone.add(createNode("node1", "host1", "default", 0 ));
allNodesInZone.add(createNode("node2", "host1", "default", 0 ));
allNodesInZone.add(createNode("node3", "host1", "default", 0 ));
@@ -69,8 +69,8 @@ public class ChangeManagementAssessorTest {
@Test
public void one_of_two_groups_in_one_of_two_clusters() {
ZoneId zone = ZoneId.from("prod", "eu-trd");
- List<String> hostNames = Arrays.asList("host1", "host2", "host5");
- List<NodeRepositoryNode> allNodesInZone = new ArrayList<>();
+ List<String> hostNames = List.of("host1", "host2", "host5");
+ List<Node> allNodesInZone = new ArrayList<>();
// Two impacted nodes on host1
allNodesInZone.add(createNode("node1", "host1", "default", 0 ));
@@ -123,8 +123,8 @@ public class ChangeManagementAssessorTest {
@Test
public void two_config_nodes() {
var zone = ZoneId.from("prod", "eu-trd");
- var hostNames = Arrays.asList("config1", "config2");
- var allNodesInZone = new ArrayList<NodeRepositoryNode>();
+ var hostNames = List.of("config1", "config2");
+ var allNodesInZone = new ArrayList<Node>();
// Add config nodes and parents
allNodesInZone.add(createNode("config1", "confighost1", "config", 0, NodeType.config));
@@ -141,8 +141,8 @@ public class ChangeManagementAssessorTest {
@Test
public void one_of_three_proxy_nodes() {
var zone = ZoneId.from("prod", "eu-trd");
- var hostNames = Arrays.asList("routing1");
- var allNodesInZone = new ArrayList<NodeRepositoryNode>();
+ var hostNames = List.of("routing1");
+ var allNodesInZone = new ArrayList<Node>();
// Add routing nodes and parents
allNodesInZone.add(createNode("routing1", "parentrouting1", "routing", 0, NodeType.proxy));
@@ -156,47 +156,33 @@ public class ChangeManagementAssessorTest {
assertEquals("33% of routing nodes impacted. Consider reprovisioning if too many", assessment.get(0).impact);
}
- private NodeOwner createOwner() {
- NodeOwner owner = new NodeOwner();
- owner.tenant = "mytenant";
- owner.application = "myapp";
- owner.instance = "default";
- return owner;
- }
-
- private NodeMembership createMembership(String clusterId, int group) {
- NodeMembership membership = new NodeMembership();
- membership.group = "" + group;
- membership.clusterid = clusterId;
- membership.clustertype = "content";
- membership.index = 2;
- membership.retired = false;
- return membership;
- }
-
- private NodeRepositoryNode createNode(String nodename, String hostname, String clusterId, int group) {
+ private Node createNode(String nodename, String hostname, String clusterId, int group) {
return createNode(nodename, hostname, clusterId, group, NodeType.tenant);
}
- private NodeRepositoryNode createNode(String nodename, String hostname, String clusterId, int group, NodeType nodeType) {
- NodeRepositoryNode node = new NodeRepositoryNode();
- node.setHostname(nodename);
- node.setParentHostname(hostname);
- node.setState(NodeState.active);
- node.setOwner(createOwner());
- node.setMembership(createMembership(clusterId, group));
- node.setType(nodeType);
-
- return node;
+ private Node createNode(String nodename, String hostname, String clusterId, int group, NodeType nodeType) {
+ return Node.builder().hostname(nodename)
+ .parentHostname(hostname)
+ .state(Node.State.active)
+ .owner(ApplicationId.from("mytenant", "myapp", "default"))
+ .group(String.valueOf(group))
+ .clusterId(clusterId)
+ .clusterType(Node.ClusterType.content)
+ .type(nodeType)
+ .build();
}
- private NodeRepositoryNode createHost(String hostname, NodeType nodeType) {
- NodeRepositoryNode node = new NodeRepositoryNode();
- node.setHostname(hostname);
- node.setSwitchHostname("switch1");
- node.setType(nodeType);
- node.setOwner(createOwner());
- node.setMembership(createMembership(nodeType.name(), 0));
- return node;
+ private Node createHost(String hostname, NodeType nodeType) {
+ return Node.builder()
+ .hostname(hostname)
+ .switchHostname("switch1")
+ .state(Node.State.active)
+ .owner(ApplicationId.from("mytenant", "myapp", "default"))
+ .group(String.valueOf(0))
+ .clusterId(nodeType.name())
+ .clusterType(Node.ClusterType.content)
+ .type(nodeType)
+ .build();
}
+
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeRequestMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeRequestMaintainerTest.java
index 15a2cf3063d..0e76c0375f2 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeRequestMaintainerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeRequestMaintainerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.zone.ZoneId;
@@ -39,6 +39,7 @@ public class ChangeRequestMaintainerTest {
assertEquals(Status.CANCELED, persistedChangeRequest.getChangeRequestSource().getStatus());
assertEquals(ChangeRequest.Approval.APPROVED, persistedChangeRequest.getApproval());
assertEquals(time, persistedChangeRequest.getChangeRequestSource().getPlannedStartTime());
+ assertEquals(0, changeRequestClient.getApprovedChangeRequests().size());
}
@Test
@@ -58,17 +59,39 @@ public class ChangeRequestMaintainerTest {
assertEquals(newChangeRequest, persistedChangeRequests.get(0));
}
- private ChangeRequest newChangeRequest(String id, ChangeRequest.Approval approval) {
- return newChangeRequest(id, approval, ZonedDateTime.now(), Status.CLOSED);
+ @Test
+ public void approves_change_request_if_non_prod() {
+ var time = ZonedDateTime.now();
+ var prodChangeRequest = newChangeRequest("id1", ChangeRequest.Approval.REQUESTED, time, Status.WAITING_FOR_APPROVAL);
+ var nonProdApprovalRequested = newChangeRequest("id2", "unknown-node", ChangeRequest.Approval.REQUESTED, time, Status.WAITING_FOR_APPROVAL);
+ var nonProdApproved = newChangeRequest("id3", "unknown-node", ChangeRequest.Approval.APPROVED, time, Status.WAITING_FOR_APPROVAL);
+
+ changeRequestClient.setUpcomingChangeRequests(List.of(
+ prodChangeRequest,
+ nonProdApprovalRequested,
+ nonProdApproved
+ ));
+ changeRequestMaintainer.maintain();
+
+ var persistedChangeRequests = tester.curator().readChangeRequests();
+ assertEquals(1, persistedChangeRequests.size());
+ assertEquals(prodChangeRequest.getId(), persistedChangeRequests.get(0).getId());
+
+ assertEquals(1, changeRequestClient.getApprovedChangeRequests().size());
+ assertEquals(nonProdApprovalRequested.getId(), changeRequestClient.getApprovedChangeRequests().get(0).getId());
}
private ChangeRequest newChangeRequest(String id, ChangeRequest.Approval approval, ZonedDateTime time, Status status) {
+ return newChangeRequest(id, "node-1-tenant-host-prod.us-east-3", approval, time, status);
+ }
+
+ private ChangeRequest newChangeRequest(String id, String hostname, ChangeRequest.Approval approval, ZonedDateTime time, Status status) {
return new ChangeRequest.Builder()
.id(id)
.approval(approval)
.impact(ChangeRequest.Impact.VERY_HIGH)
.impactedSwitches(List.of())
- .impactedHosts(List.of("node-1-tenant-host-prod.us-east-3"))
+ .impactedHosts(List.of(hostname))
.changeRequestSource(new ChangeRequestSource.Builder()
.plannedStartTime(time)
.plannedEndTime(time)
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventReporterTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTrackerTest.java
index 680743055c9..f0aef75bb11 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventReporterTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTrackerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.HostName;
@@ -6,8 +6,9 @@ import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.ControllerTester;
import com.yahoo.vespa.hosted.controller.api.integration.aws.CloudEvent;
-import com.yahoo.vespa.hosted.controller.api.integration.aws.MockAwsEventFetcher;
+import com.yahoo.vespa.hosted.controller.api.integration.aws.MockCloudEventFetcher;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.integration.ZoneApiMock;
import org.junit.Test;
@@ -23,7 +24,7 @@ import static org.junit.Assert.assertEquals;
/**
* @author olaa
*/
-public class CloudEventReporterTest {
+public class CloudEventTrackerTest {
private final ControllerTester tester = new ControllerTester();
private final ZoneApiMock unsupportedZone = createZone("prod.zone3", "region-1", "other");
@@ -41,20 +42,20 @@ public class CloudEventReporterTest {
@Test
public void maintain() {
setUpZones();
- CloudEventReporter cloudEventReporter = new CloudEventReporter(tester.controller(), Duration.ofMinutes(15));
- assertEquals(Set.of("host1.com", "host2.com", "host3.com"), getHostnames(unsupportedZone.getId()));
- assertEquals(Set.of("host1.com", "host2.com", "host3.com"), getHostnames(zone1.getId()));
- assertEquals(Set.of("host4.com", "host5.com", "confighost.com"), getHostnames(zone2.getId()));
+ CloudEventTracker cloudEventTracker = new CloudEventTracker(tester.controller(), Duration.ofMinutes(15));
+ assertEquals(Set.of("host1.com", "host2.com", "host3.com"), hostsNotDeprovisioning(unsupportedZone.getId()));
+ assertEquals(Set.of("host1.com", "host2.com", "host3.com"), hostsNotDeprovisioning(zone1.getId()));
+ assertEquals(Set.of("host4.com", "host5.com", "confighost.com"), hostsNotDeprovisioning(zone2.getId()));
mockEvents();
- cloudEventReporter.maintain();
- assertEquals(Set.of("host1.com", "host2.com", "host3.com"), getHostnames(unsupportedZone.getId()));
- assertEquals(Set.of("host3.com"), getHostnames(zone1.getId()));
- assertEquals(Set.of("host4.com"), getHostnames(zone2.getId()));
+ cloudEventTracker.maintain();
+ assertEquals(Set.of("host1.com", "host2.com", "host3.com"), hostsNotDeprovisioning(unsupportedZone.getId()));
+ assertEquals(Set.of("host3.com"), hostsNotDeprovisioning(zone1.getId()));
+ assertEquals(Set.of("host4.com"), hostsNotDeprovisioning(zone2.getId()));
}
private void mockEvents() {
- MockAwsEventFetcher eventFetcher = (MockAwsEventFetcher) tester.controller().serviceRegistry().eventFetcherService();
+ MockCloudEventFetcher eventFetcher = (MockCloudEventFetcher) tester.controller().serviceRegistry().eventFetcherService();
Date date = new Date();
CloudEvent event1 = new CloudEvent("event 1",
@@ -121,17 +122,18 @@ public class CloudEventReporterTest {
}
private Node createNode(String hostname, NodeType nodeType) {
- return new Node.Builder()
- .hostname(HostName.from(hostname))
- .type(nodeType)
- .build();
+ return Node.builder()
+ .hostname(HostName.from(hostname))
+ .type(nodeType)
+ .build();
}
- private Set<String> getHostnames(ZoneId zoneId) {
- return tester.configServer().nodeRepository().list(zoneId, false)
- .stream()
- .map(node -> node.hostname().value())
- .collect(Collectors.toSet());
+ private Set<String> hostsNotDeprovisioning(ZoneId zoneId) {
+ return tester.configServer().nodeRepository().list(zoneId, NodeFilter.all())
+ .stream()
+ .filter(node -> !node.wantToDeprovision())
+ .map(node -> node.hostname().value())
+ .collect(Collectors.toSet());
}
private ZoneApiMock createZone(String zoneId, String cloudNativeRegionName, String cloud) {
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirerTest.java
index f3c4f9f7438..c772ca8b8f7 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.SystemName;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ContactInformationMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ContactInformationMaintainerTest.java
index a75bada7b6f..37b138527fe 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ContactInformationMaintainerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ContactInformationMaintainerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.TenantName;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ContainerImageExpirerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ContainerImageExpirerTest.java
index 36a0c57f716..b52d9de2fe8 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ContainerImageExpirerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ContainerImageExpirerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.component.Version;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintainerTest.java
index 4bdb657d3af..a452d550488 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintainerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintainerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.SystemName;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CostReportMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CostReportMaintainerTest.java
index cbffd6d610f..d78b48c362a 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CostReportMaintainerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CostReportMaintainerTest.java
@@ -54,7 +54,7 @@ public class CostReportMaintainerTest {
private void addNodes() {
for (var zone : tester.zoneRegistry().zones().all().zones()) {
- tester.configServer().nodeRepository().setFixedNodes(zone.getId());
+ tester.configServer().nodeRepository().addFixedNodes(zone.getId());
}
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentExpirerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentExpirerTest.java
index 31f8aaf9e2d..d55b5cea4ee 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentExpirerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentExpirerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.Environment;
@@ -6,7 +6,7 @@ import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.Instance;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.Deployment;
import com.yahoo.vespa.hosted.controller.deployment.ApplicationPackageBuilder;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentTester;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentIssueReporterTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentIssueReporterTest.java
index af2c0c6b08d..0e365ffd135 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentIssueReporterTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentIssueReporterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.component.Version;
@@ -7,7 +7,7 @@ import com.yahoo.vespa.hosted.controller.LockedTenant;
import com.yahoo.vespa.hosted.controller.api.integration.organization.Contact;
import com.yahoo.vespa.hosted.controller.api.integration.organization.IssueId;
import com.yahoo.vespa.hosted.controller.api.integration.stubs.LoggingDeploymentIssues;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.Change;
import com.yahoo.vespa.hosted.controller.application.TenantAndApplicationId;
import com.yahoo.vespa.hosted.controller.deployment.ApplicationPackageBuilder;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentMetricsMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentMetricsMaintainerTest.java
index 8083b847c0b..dc50b32b338 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentMetricsMaintainerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentMetricsMaintainerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.component.Version;
@@ -9,7 +9,7 @@ import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.api.application.v4.model.ClusterMetrics;
import com.yahoo.vespa.hosted.controller.api.identifiers.DeploymentId;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.Deployment;
import com.yahoo.vespa.hosted.controller.application.DeploymentMetrics;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentTester;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentUpgraderTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentUpgraderTest.java
index 7a8f775e8b1..cc428ebc94f 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentUpgraderTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentUpgraderTest.java
@@ -1,25 +1,17 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.component.Version;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.zone.ZoneId;
-import com.yahoo.vespa.hosted.controller.Instance;
-import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
-import com.yahoo.vespa.hosted.controller.application.Deployment;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.deployment.ApplicationPackageBuilder;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentTester;
-import com.yahoo.vespa.hosted.controller.deployment.Run;
-import com.yahoo.vespa.hosted.controller.deployment.RunStatus;
import org.junit.Test;
import java.time.Duration;
import java.time.Instant;
-import java.time.temporal.ChronoUnit;
-import java.time.temporal.TemporalUnit;
-import java.util.Optional;
import static com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType.devUsEast1;
import static com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType.productionUsWest1;
@@ -63,19 +55,13 @@ public class DeploymentUpgraderTest {
assertEquals(start, tester.jobs().last(devApp.instanceId(), devUsEast1).get().start());
assertEquals(start, tester.jobs().last(prodApp.instanceId(), productionUsWest1).get().start());
- // 14 hours pass, but not upgraded before a day has passed since last deployment
- tester.clock().advance(Duration.ofHours(14));
+ // 11 hours pass, but not upgraded since it's not likely in the middle of the night
+ tester.clock().advance(Duration.ofHours(11));
upgrader.maintain();
assertEquals(start, tester.jobs().last(devApp.instanceId(), devUsEast1).get().start());
assertEquals(start, tester.jobs().last(prodApp.instanceId(), productionUsWest1).get().start());
- // 35 hours pass, but not upgraded since it's not likely in the middle of the night
- tester.clock().advance(Duration.ofHours(21));
- upgrader.maintain();
- assertEquals(start, tester.jobs().last(devApp.instanceId(), devUsEast1).get().start());
- assertEquals(start, tester.jobs().last(prodApp.instanceId(), productionUsWest1).get().start());
-
- // 38 hours pass, and the dev deployment, only, is upgraded
+ // 14 hours pass, and the dev deployment, only, is upgraded
tester.clock().advance(Duration.ofHours(3));
upgrader.maintain();
assertEquals(tester.clock().instant().truncatedTo(MILLIS), tester.jobs().last(devApp.instanceId(), devUsEast1).get().start());
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/EndpointCertificateMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/EndpointCertificateMaintainerTest.java
index 3ed26b4fb6e..5698aefaa46 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/EndpointCertificateMaintainerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/EndpointCertificateMaintainerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.ApplicationId;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/HostInfoUpdaterTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/HostInfoUpdaterTest.java
index 0baee28143c..a06e15de3c7 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/HostInfoUpdaterTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/HostInfoUpdaterTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.HostName;
@@ -6,6 +6,7 @@ import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.ControllerTester;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.api.integration.entity.NodeEntity;
import org.junit.Test;
@@ -83,12 +84,12 @@ public class HostInfoUpdaterTest {
// Updates node registered under a different hostname
ZoneId zone = tester.zoneRegistry().zones().controllerUpgraded().all().ids().get(0);
String hostnameSuffix = ".prod." + zone.value();
- Node configNode = new Node.Builder().hostname(HostName.from("cfg3" + hostnameSuffix))
- .type(NodeType.config)
- .build();
- Node configHost = new Node.Builder().hostname(HostName.from("cfghost3" + hostnameSuffix))
- .type(NodeType.confighost)
- .build();
+ Node configNode = Node.builder().hostname(HostName.from("cfg3" + hostnameSuffix))
+ .type(NodeType.config)
+ .build();
+ Node configHost = Node.builder().hostname(HostName.from("cfghost3" + hostnameSuffix))
+ .type(NodeType.confighost)
+ .build();
tester.serviceRegistry().configServer().nodeRepository().putNodes(zone, List.of(configNode, configHost));
String switchHostname = switchHostname(configHost);
NodeEntity configNodeEntity = new NodeEntity("cfg3" + hostnameSuffix, "RD350G", "Lenovo", switchHostname);
@@ -108,7 +109,7 @@ public class HostInfoUpdaterTest {
private static List<Node> allNodes(ControllerTester tester) {
List<Node> nodes = new ArrayList<>();
for (var zone : tester.zoneRegistry().zones().controllerUpgraded().all().ids()) {
- nodes.addAll(tester.serviceRegistry().configServer().nodeRepository().list(zone, false));
+ nodes.addAll(tester.serviceRegistry().configServer().nodeRepository().list(zone, NodeFilter.all()));
}
return nodes;
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunnerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunnerTest.java
index 023c5671b60..7db52b6121b 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunnerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunnerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.component.Version;
@@ -7,7 +7,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationV
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobId;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.RunId;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.SourceRevision;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.TenantAndApplicationId;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentTester;
import com.yahoo.vespa.hosted.controller.deployment.JobController;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/MetricsReporterTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/MetricsReporterTest.java
index 29c5573a1f5..2fb5aee354b 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/MetricsReporterTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/MetricsReporterTest.java
@@ -14,7 +14,8 @@ import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.ControllerTester;
import com.yahoo.vespa.hosted.controller.api.integration.billing.PlanId;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.Change;
import com.yahoo.vespa.hosted.controller.application.SystemApplication;
import com.yahoo.vespa.hosted.controller.deployment.ApplicationPackageBuilder;
@@ -28,7 +29,6 @@ import org.junit.Test;
import java.time.Duration;
import java.util.Comparator;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import java.util.function.UnaryOperator;
import java.util.stream.Collectors;
@@ -301,7 +301,7 @@ public class MetricsReporterTest {
var version0 = Version.fromString("7.0");
tester.upgradeSystem(version0);
reporter.maintain();
- var hosts = tester.configServer().nodeRepository().list(zone, SystemApplication.configServer.id());
+ var hosts = tester.configServer().nodeRepository().list(zone, NodeFilter.all().applications(SystemApplication.configServer.id()));
assertPlatformChangeDuration(Duration.ZERO, hosts);
var targets = List.of(Version.fromString("7.1"), Version.fromString("7.2"));
@@ -362,7 +362,7 @@ public class MetricsReporterTest {
tester.configServer().setOsVersion(version0, SystemApplication.tenantHost.id(), zone);
tester.configServer().setOsVersion(version0, SystemApplication.configServerHost.id(), zone);
runAll(statusUpdater, reporter);
- List<Node> hosts = tester.configServer().nodeRepository().list(zone, false);
+ List<Node> hosts = tester.configServer().nodeRepository().list(zone, NodeFilter.all());
assertOsChangeDuration(Duration.ZERO, hosts);
var targets = List.of(Version.fromString("8.1"), Version.fromString("8.2"));
@@ -383,10 +383,10 @@ public class MetricsReporterTest {
// Nodes are told to upgrade, but do not suspend yet
assertEquals("Wanted OS version is raised for all nodes", nextVersion,
- tester.configServer().nodeRepository().list(zone, SystemApplication.tenantHost.id()).stream()
+ tester.configServer().nodeRepository().list(zone, NodeFilter.all().applications(SystemApplication.tenantHost.id())).stream()
.map(Node::wantedOsVersion).min(Comparator.naturalOrder()).get());
assertTrue("No nodes are suspended", tester.controller().serviceRegistry().configServer()
- .nodeRepository().list(zone, false).stream()
+ .nodeRepository().list(zone, NodeFilter.all()).stream()
.noneMatch(node -> node.serviceState() == Node.ServiceState.allowedDown));
// Another 30 minutes pass
@@ -537,16 +537,16 @@ public class MetricsReporterTest {
}
private List<Node> getNodes(ZoneId zone, List<Node> nodes, ControllerTester tester) {
- return tester.configServer().nodeRepository().list(zone, nodes.stream()
- .map(Node::hostname)
- .collect(Collectors.toList()));
+ return tester.configServer().nodeRepository().list(zone, NodeFilter.all().hostnames(nodes.stream()
+ .map(Node::hostname)
+ .collect(Collectors.toSet())));
}
private void updateNodes(List<Node> nodes, UnaryOperator<Node.Builder> builderOps, ZoneId zone,
ControllerTester tester) {
var currentNodes = getNodes(zone, nodes, tester);
var updatedNodes = currentNodes.stream()
- .map(node -> builderOps.apply(new Node.Builder(node)).build())
+ .map(node -> builderOps.apply(Node.builder(node)).build())
.collect(Collectors.toList());
tester.configServer().nodeRepository().putNodes(zone, updatedNodes);
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java
index 770d0a898fe..51bda73025d 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.component.Version;
@@ -7,14 +7,12 @@ import com.yahoo.config.provision.zone.ZoneApi;
import com.yahoo.vespa.hosted.controller.ControllerTester;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.StableOsVersion;
import com.yahoo.vespa.hosted.controller.integration.ZoneApiMock;
-import com.yahoo.vespa.hosted.controller.versions.OsVersion;
import com.yahoo.vespa.hosted.controller.versions.OsVersionTarget;
import org.junit.Test;
import java.time.Duration;
import java.time.Instant;
import java.util.List;
-import java.util.Set;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -67,35 +65,6 @@ public class OsUpgradeSchedulerTest {
assertEquals(version1, tester.controller().osVersionTarget(cloud).get().osVersion().version());
}
- @Test // TODO(mpolden): Remove this after 2021-09-01
- public void schedule_calendar_versioned_without_scheduled_time() {
- ControllerTester tester = new ControllerTester();
- OsUpgradeScheduler scheduler = new OsUpgradeScheduler(tester.controller(), Duration.ofDays(1));
- Instant t0 = Instant.parse("2021-01-23T07:00:00.00Z"); // Inside trigger period
- tester.clock().setInstant(t0);
-
- CloudName cloud = CloudName.from("cloud");
- ZoneApi zone = zone("prod.us-west-1", cloud);
- tester.zoneRegistry().setZones(zone).reprovisionToUpgradeOsIn(zone);
-
- // Initial run does nothing as the cloud does not have a target
- scheduler.maintain();
- assertTrue("No target set", tester.controller().osVersionTarget(cloud).isEmpty());
-
- // Target is set
- Version version0 = Version.fromString("7.0.0.20210123190005");
- // Simulate setting target without scheduledAt, to force parsing scheduled time from version number
- tester.curator().writeOsVersionTargets(Set.of(new OsVersionTarget(new OsVersion(version0, cloud),
- Duration.ofDays(1), Instant.EPOCH)));
-
- // Just over 45 days pass, and a new target replaces the expired one
- Version version1 = Version.fromString("7.0.0.20210302");
- tester.clock().advance(Duration.ofDays(45).plus(Duration.ofSeconds(1)));
- scheduler.maintain();
- assertEquals("New target set", version1,
- tester.controller().osVersionTarget(cloud).get().osVersion().version());
- }
-
@Test
public void schedule_stable_release() {
ControllerTester tester = new ControllerTester();
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgraderTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgraderTest.java
index c29e10ab643..ec1a5455413 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgraderTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgraderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.component.Version;
@@ -8,6 +8,7 @@ import com.yahoo.config.provision.zone.ZoneApi;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.ControllerTester;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.application.SystemApplication;
import com.yahoo.vespa.hosted.controller.integration.NodeRepositoryMock;
import com.yahoo.vespa.hosted.controller.integration.ZoneApiMock;
@@ -261,19 +262,19 @@ public class OsUpgraderTest {
}
private List<Node> nodesRequiredToUpgrade(ZoneApi zone, SystemApplication application) {
- return nodeRepository().list(zone.getVirtualId(), application.id())
+ return nodeRepository().list(zone.getVirtualId(), NodeFilter.all().applications(application.id()))
.stream()
.filter(OsUpgrader::canUpgrade)
.collect(Collectors.toList());
}
private void failNodeIn(ZoneApi zone, SystemApplication application) {
- List<Node> nodes = nodeRepository().list(zone.getVirtualId(), application.id());
+ List<Node> nodes = nodeRepository().list(zone.getVirtualId(), NodeFilter.all().applications(application.id()));
if (nodes.isEmpty()) {
throw new IllegalArgumentException("No nodes allocated to " + application.id());
}
Node node = nodes.get(0);
- nodeRepository().putNodes(zone.getVirtualId(), new Node.Builder(node).state(Node.State.failed).build());
+ nodeRepository().putNodes(zone.getVirtualId(), Node.builder(node).state(Node.State.failed).build());
}
/** Simulate OS upgrade of nodes allocated to application. In a real system this is done by the node itself */
@@ -285,9 +286,9 @@ public class OsUpgraderTest {
assertWanted(wantedVersion, application, zones);
for (ZoneApi zone : zones) {
for (Node node : nodesRequiredToUpgrade(zone, application)) {
- nodeRepository().putNodes(zone.getVirtualId(), new Node.Builder(node).wantedOsVersion(version)
- .currentOsVersion(version)
- .build());
+ nodeRepository().putNodes(zone.getVirtualId(), Node.builder(node).wantedOsVersion(version)
+ .currentOsVersion(version)
+ .build());
}
assertCurrent(version, application, zone);
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsVersionStatusUpdaterTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsVersionStatusUpdaterTest.java
index 307540a9694..f5ae6bafc65 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsVersionStatusUpdaterTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsVersionStatusUpdaterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.component.Version;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployerTest.java
index 00d39788e38..8e90cfc69f3 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployerTest.java
@@ -1,10 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.component.Version;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.SourceRevision;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.Change;
import com.yahoo.vespa.hosted.controller.deployment.ApplicationPackageBuilder;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentTester;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ReindexingTriggererTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ReindexingTriggererTest.java
index 3c22ee3f4c3..8b5a12c8879 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ReindexingTriggererTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ReindexingTriggererTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.ApplicationId;
@@ -43,7 +43,8 @@ public class ReindexingTriggererTest {
}
now = now.plus(interval);
}
- assertEquals("Should be in window of opportunity exactly four times each period", 4, triggered);
+ // Summer/winter time :'(
+ assertTrue("Should be in window of opportunity three to five times each period", 3 <= triggered && triggered <= 5);
}
@Test
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainerTest.java
index e61516cbb1a..a255a6c37d8 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainerTest.java
@@ -12,7 +12,7 @@ import com.yahoo.vespa.hosted.controller.ControllerTester;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
import com.yahoo.vespa.hosted.controller.api.integration.resource.ResourceSnapshot;
import com.yahoo.vespa.hosted.controller.api.integration.stubs.MockMeteringClient;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.deployment.ApplicationPackageBuilder;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentTester;
import com.yahoo.vespa.hosted.controller.integration.MetricsMock;
@@ -114,8 +114,8 @@ public class ResourceMeterMaintainerTest {
ZoneApiMock zone1 = ZoneApiMock.newBuilder().withId("prod.region-2").build();
ZoneApiMock zone2 = ZoneApiMock.newBuilder().withId("test.region-3").build();
tester.zoneRegistry().setZones(zone1, zone2);
- tester.configServer().nodeRepository().setFixedNodes(zone1.getId());
- tester.configServer().nodeRepository().setFixedNodes(zone2.getId());
+ tester.configServer().nodeRepository().addFixedNodes(zone1.getId());
+ tester.configServer().nodeRepository().addFixedNodes(zone2.getId());
tester.configServer().nodeRepository().putNodes(zone1.getId(), createNodes());
}
@@ -126,21 +126,21 @@ public class ResourceMeterMaintainerTest {
Node.State.failed,
Node.State.parked,
Node.State.active)
- .map(state -> new Node.Builder()
- .hostname(HostName.from("host" + state))
- .parentHostname(HostName.from("parenthost" + state))
- .state(state)
- .type(NodeType.tenant)
- .owner(ApplicationId.from("tenant1", "app1", "default"))
- .currentVersion(Version.fromString("7.42"))
- .wantedVersion(Version.fromString("7.42"))
- .currentOsVersion(Version.fromString("7.6"))
- .wantedOsVersion(Version.fromString("7.6"))
- .serviceState(Node.ServiceState.expectedUp)
- .resources(new NodeResources(24, 24, 500, 1))
- .clusterId("clusterA")
- .clusterType(state == Node.State.active ? Node.ClusterType.admin : Node.ClusterType.container)
- .build())
+ .map(state -> Node.builder()
+ .hostname(HostName.from("host" + state))
+ .parentHostname(HostName.from("parenthost" + state))
+ .state(state)
+ .type(NodeType.tenant)
+ .owner(ApplicationId.from("tenant1", "app1", "default"))
+ .currentVersion(Version.fromString("7.42"))
+ .wantedVersion(Version.fromString("7.42"))
+ .currentOsVersion(Version.fromString("7.6"))
+ .wantedOsVersion(Version.fromString("7.6"))
+ .serviceState(Node.ServiceState.expectedUp)
+ .resources(new NodeResources(24, 24, 500, 1))
+ .clusterId("clusterA")
+ .clusterType(state == Node.State.active ? Node.ClusterType.admin : Node.ClusterType.container)
+ .build())
.collect(Collectors.toUnmodifiableList());
}
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainerTest.java
index 516c28ab5cd..a90c8a9593b 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainerTest.java
@@ -15,7 +15,6 @@ import org.junit.Test;
import java.time.Duration;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
import static com.yahoo.vespa.hosted.controller.maintenance.ResourceTagMaintainer.SHARED_HOST_APPLICATION;
import static org.junit.Assert.assertEquals;
@@ -25,7 +24,7 @@ import static org.junit.Assert.assertEquals;
*/
public class ResourceTagMaintainerTest {
- final ControllerTester tester = new ControllerTester();
+ private final ControllerTester tester = new ControllerTester();
@Test
public void maintain() {
@@ -51,24 +50,24 @@ public class ResourceTagMaintainerTest {
}
public void setNodes(ZoneId zone) {
- var hostA = new Node.Builder()
- .hostname(HostName.from("parentHostA." + zone.value()))
- .type(NodeType.host)
- .owner(ApplicationId.from(SystemApplication.TENANT.value(), "tenant-host", "default"))
- .exclusiveTo(ApplicationId.from("t1", "a1", "i1"))
- .build();
- var nodeA = new Node.Builder()
- .hostname(HostName.from("hostA." + zone.value()))
- .type(NodeType.tenant)
- .parentHostname(HostName.from("parentHostA." + zone.value()))
- .owner(ApplicationId.from("tenant1", "app1", "default"))
- .build();
- var hostB = new Node.Builder()
- .hostname(HostName.from("parentHostB." + zone.value()))
- .type(NodeType.host)
- .owner(ApplicationId.from(SystemApplication.TENANT.value(), "tenant-host", "default"))
- .build();
- tester.configServer().nodeRepository().setNodes(zone, List.of(hostA, nodeA, hostB));
+ var hostA = Node.builder()
+ .hostname(HostName.from("parentHostA." + zone.value()))
+ .type(NodeType.host)
+ .owner(ApplicationId.from(SystemApplication.TENANT.value(), "tenant-host", "default"))
+ .exclusiveTo(ApplicationId.from("t1", "a1", "i1"))
+ .build();
+ var nodeA = Node.builder()
+ .hostname(HostName.from("hostA." + zone.value()))
+ .type(NodeType.tenant)
+ .parentHostname(HostName.from("parentHostA." + zone.value()))
+ .owner(ApplicationId.from("tenant1", "app1", "default"))
+ .build();
+ var hostB = Node.builder()
+ .hostname(HostName.from("parentHostB." + zone.value()))
+ .type(NodeType.host)
+ .owner(ApplicationId.from(SystemApplication.TENANT.value(), "tenant-host", "default"))
+ .build();
+ tester.configServer().nodeRepository().putNodes(zone, List.of(hostA, nodeA, hostB));
}
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/RetriggerMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/RetriggerMaintainerTest.java
index df93efab893..0c1b3b39b65 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/RetriggerMaintainerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/RetriggerMaintainerTest.java
@@ -1,11 +1,11 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.deployment.ApplicationPackageBuilder;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentTester;
import com.yahoo.vespa.hosted.controller.deployment.RetriggerEntry;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/SystemRoutingPolicyMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/SystemRoutingPolicyMaintainerTest.java
index 1eadae18668..db4b881dabc 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/SystemRoutingPolicyMaintainerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/SystemRoutingPolicyMaintainerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.config.provision.ClusterSpec;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgraderTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgraderTest.java
index db2353860ae..7d6da68440e 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgraderTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgraderTest.java
@@ -6,6 +6,7 @@ import com.yahoo.config.provision.zone.UpgradePolicy;
import com.yahoo.config.provision.zone.ZoneApi;
import com.yahoo.vespa.hosted.controller.ControllerTester;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.application.SystemApplication;
import com.yahoo.vespa.hosted.controller.integration.NodeRepositoryMock;
import com.yahoo.vespa.hosted.controller.integration.ZoneApiMock;
@@ -305,7 +306,7 @@ public class SystemUpgraderTest {
for (Node node : listNodes(zone, application)) {
nodeRepository().putNodes(
zone.getId(),
- new Node.Builder(node).currentVersion(node.wantedVersion()).build());
+ Node.builder(node).currentVersion(node.wantedVersion()).build());
}
assertCurrentVersion(application, version, zone);
});
@@ -322,14 +323,14 @@ public class SystemUpgraderTest {
}
private void failNodeIn(ZoneApi zone, SystemApplication application) {
- List<Node> nodes = nodeRepository().list(zone.getId(), application.id());
+ List<Node> nodes = nodeRepository().list(zone.getId(), NodeFilter.all().applications(application.id()));
if (nodes.isEmpty()) {
throw new IllegalArgumentException("No nodes allocated to " + application.id());
}
Node node = nodes.get(0);
nodeRepository().putNodes(
zone.getId(),
- new Node.Builder(node).state(Node.State.failed).build());
+ Node.builder(node).state(Node.State.failed).build());
}
private void assertSystemVersion(Version version) {
@@ -372,7 +373,7 @@ public class SystemUpgraderTest {
}
private List<Node> listNodes(ZoneApi zone, SystemApplication application) {
- return nodeRepository().list(zone.getId(), application.id()).stream()
+ return nodeRepository().list(zone.getId(), NodeFilter.all().applications(application.id())).stream()
.filter(SystemUpgrader::eligibleForUpgrade)
.collect(Collectors.toList());
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/TenantRoleMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/TenantRoleMaintainerTest.java
index 050610905f3..c9cd7f41d2b 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/TenantRoleMaintainerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/TenantRoleMaintainerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
@@ -6,15 +6,17 @@ import com.yahoo.config.provision.TenantName;
import com.yahoo.vespa.hosted.controller.Instance;
import com.yahoo.vespa.hosted.controller.api.integration.aws.MockRoleService;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.deployment.ApplicationPackageBuilder;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentTester;
+import org.hamcrest.Matchers;
import org.junit.Test;
import java.time.Duration;
import java.util.List;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
/**
* @author mortent
@@ -28,6 +30,7 @@ public class TenantRoleMaintainerTest {
var devAppTenant1 = tester.newDeploymentContext("tenant1", "app1", "default");
var prodAppTenant2 = tester.newDeploymentContext("tenant2", "app2", "default");
var devAppTenant2 = tester.newDeploymentContext("tenant2","app3","default");
+ var perfAppTenant1 = tester.newDeploymentContext("tenant3","app1","default");
ApplicationPackage appPackage = new ApplicationPackageBuilder()
.region("us-west-1")
.build();
@@ -36,6 +39,9 @@ public class TenantRoleMaintainerTest {
devAppTenant1.runJob(JobType.devUsEast1, appPackage);
devAppTenant2.runJob(JobType.devUsEast1, appPackage);
+ // Deploy perf apps
+ perfAppTenant1.runJob(JobType.perfUsEast3, appPackage);
+
// Deploy prod
prodAppTenant2.submit(appPackage).deploy();
assertEquals(1, permanentDeployments(devAppTenant1.instance()));
@@ -48,8 +54,7 @@ public class TenantRoleMaintainerTest {
var roleService = tester.controller().serviceRegistry().roleService();
List<TenantName> tenantNames = ((MockRoleService) roleService).maintainedTenants();
- assertEquals(1, tenantNames.size());
- assertEquals(prodAppTenant2.application().id().tenant(), tenantNames.get(0));
+ assertThat(tenantNames, Matchers.containsInAnyOrder(prodAppTenant2.application().id().tenant(), perfAppTenant1.application().id().tenant()));
}
private long permanentDeployments(Instance instance) {
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/TrafficShareUpdaterTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/TrafficShareUpdaterTest.java
index 29d77c38b1a..08af46d8d33 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/TrafficShareUpdaterTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/TrafficShareUpdaterTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.component.Version;
@@ -7,7 +7,7 @@ import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.api.application.v4.model.ClusterMetrics;
import com.yahoo.vespa.hosted.controller.api.identifiers.DeploymentId;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentTester;
import com.yahoo.vespa.hosted.controller.integration.NodeRepositoryMock;
import org.junit.Test;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UpgraderTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UpgraderTest.java
index 326f4bf311e..1dd4ef24c9e 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UpgraderTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UpgraderTest.java
@@ -6,7 +6,7 @@ import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.test.ManualClock;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.RunId;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.Change;
import com.yahoo.vespa.hosted.controller.application.Deployment;
import com.yahoo.vespa.hosted.controller.deployment.ApplicationPackageBuilder;
@@ -167,7 +167,7 @@ public class UpgraderTest {
// --- Failing application is repaired by changing the application, causing confidence to move above 'high' threshold
// Deploy application change
default0.submit(applicationPackage("default"));
- default0.jobAborted(stagingTest);
+ default0.triggerJobs().jobAborted(stagingTest);
default0.deploy();
tester.controllerTester().computeVersionStatus();
@@ -232,7 +232,7 @@ public class UpgraderTest {
// State: Default applications started upgrading to version5
tester.clock().advance(Duration.ofHours(1));
tester.upgrader().maintain();
- default3.failDeployment(stagingTest);
+ default3.triggerJobs().jobAborted(stagingTest);
default0.runJob(systemTest)
.failDeployment(stagingTest);
default1.runJob(systemTest)
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UserManagementMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UserManagementMaintainerTest.java
new file mode 100644
index 00000000000..b658e86a575
--- /dev/null
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UserManagementMaintainerTest.java
@@ -0,0 +1,46 @@
+package com.yahoo.vespa.hosted.controller.maintenance;
+
+import com.yahoo.config.provision.ApplicationName;
+import com.yahoo.config.provision.TenantName;
+import com.yahoo.vespa.hosted.controller.ControllerTester;
+import com.yahoo.vespa.hosted.controller.api.integration.stubs.MockUserManagement;
+import com.yahoo.vespa.hosted.controller.api.integration.user.Roles;
+import com.yahoo.vespa.hosted.controller.api.integration.user.UserManagement;
+import com.yahoo.vespa.hosted.controller.api.role.Role;
+import org.junit.Test;
+
+import java.time.Duration;
+
+import static org.junit.Assert.*;
+
+/**
+ * @author olaa
+ */
+public class UserManagementMaintainerTest {
+
+ private final ControllerTester tester = new ControllerTester();
+ private final UserManagement userManagement = new MockUserManagement();
+ private final UserManagementMaintainer userManagementMaintainer = new UserManagementMaintainer(tester.controller(), Duration.ofMinutes(1), userManagement);
+
+ private final TenantName tenant = TenantName.from("tenant1");
+ private final ApplicationName app = ApplicationName.from("app1");
+ private final TenantName deletedTenant = TenantName.from("deleted-tenant");
+
+ @Test
+ public void finds_superfluous_roles() {
+ tester.createTenant(tenant.value());
+ tester.createApplication(tenant.value(), app.value());
+
+ Roles.tenantRoles(tenant).forEach(userManagement::createRole);
+ Roles.applicationRoles(tenant, app).forEach(userManagement::createRole);
+ Roles.tenantRoles(deletedTenant).forEach(userManagement::createRole);
+ userManagement.createRole(Role.hostedSupporter());
+
+ var expectedRoles = Roles.tenantRoles(deletedTenant);
+ var actualRoles = userManagementMaintainer.findLeftoverRoles();
+
+ assertEquals(expectedRoles.size(), actualRoles.size());
+ assertTrue(expectedRoles.containsAll(actualRoles) && actualRoles.containsAll(expectedRoles));
+ }
+
+} \ No newline at end of file
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/VCMRMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/VcmrMaintainerTest.java
index 16ed6b7ef98..a2da6e357b6 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/VCMRMaintainerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/VcmrMaintainerTest.java
@@ -5,11 +5,12 @@ import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.ControllerTester;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.ChangeRequest;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.ChangeRequestSource;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.HostAction;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.HostAction.State;
-import com.yahoo.vespa.hosted.controller.api.integration.vcmr.VCMRReport;
+import com.yahoo.vespa.hosted.controller.api.integration.vcmr.VcmrReport;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.VespaChangeRequest;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.VespaChangeRequest.Status;
import com.yahoo.vespa.hosted.controller.integration.NodeRepositoryMock;
@@ -20,16 +21,20 @@ import java.time.Duration;
import java.time.Instant;
import java.time.ZonedDateTime;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
/**
* @author olaa
*/
-public class VCMRMaintainerTest {
+public class VcmrMaintainerTest {
private ControllerTester tester;
- private VCMRMaintainer maintainer;
+ private VcmrMaintainer maintainer;
private NodeRepositoryMock nodeRepo;
private final ZoneId zoneId = ZoneId.from("prod.us-east-3");
private final HostName host1 = HostName.from("host1");
@@ -39,19 +44,22 @@ public class VCMRMaintainerTest {
@Before
public void setup() {
tester = new ControllerTester();
- maintainer = new VCMRMaintainer(tester.controller(), Duration.ofMinutes(1));
+ maintainer = new VcmrMaintainer(tester.controller(), Duration.ofMinutes(1));
nodeRepo = tester.serviceRegistry().configServer().nodeRepository().allowPatching(true);
}
@Test
public void recycle_hosts_after_completion() {
- var vcmrReport = new VCMRReport();
+ var vcmrReport = new VcmrReport();
vcmrReport.addVcmr("id123", ZonedDateTime.now(), ZonedDateTime.now());
var parkedNode = createNode(host1, NodeType.host, Node.State.parked, true);
var failedNode = createNode(host2, NodeType.host, Node.State.failed, false);
- parkedNode = new Node.Builder(parkedNode)
- .reports(vcmrReport.toNodeReports())
- .build();
+ Map<String, String> reports = vcmrReport.toNodeReports().entrySet().stream()
+ .collect(Collectors.toMap(Map.Entry::getKey,
+ kv -> kv.getValue().toString()));
+ parkedNode = Node.builder(parkedNode)
+ .reports(reports)
+ .build();
nodeRepo.putNodes(zoneId, List.of(parkedNode, failedNode));
@@ -59,12 +67,11 @@ public class VCMRMaintainerTest {
maintainer.maintain();
// Only the parked node is recycled, VCMR report is cleared
- var nodeList = nodeRepo.list(zoneId, List.of(host1, host2));
+ var nodeList = nodeRepo.list(zoneId, NodeFilter.all().hostnames(host1, host2));
assertEquals(Node.State.dirty, nodeList.get(0).state());
assertEquals(Node.State.failed, nodeList.get(1).state());
- var report = nodeList.get(0).reports();
- assertNull(report.get(VCMRReport.getReportId()));
+ assertTrue(nodeList.get(0).reports().isEmpty());
var writtenChangeRequest = tester.curator().readChangeRequest(changeRequestId).get();
assertEquals(Status.COMPLETED, writtenChangeRequest.getStatus());
@@ -105,7 +112,7 @@ public class VCMRMaintainerTest {
assertEquals(State.NONE, failedNodeAction.getState());
assertEquals(Status.IN_PROGRESS, writtenChangeRequest.getStatus());
- activeNode = nodeRepo.list(zoneId, List.of(activeNode.hostname())).get(0);
+ activeNode = nodeRepo.list(zoneId, NodeFilter.all().hostnames(activeNode.hostname())).get(0);
assertTrue(activeNode.wantToRetire());
}
@@ -162,8 +169,8 @@ public class VCMRMaintainerTest {
var approvedChangeRequests = tester.serviceRegistry().changeRequestClient().getApprovedChangeRequests();
assertEquals(1, approvedChangeRequests.size());
- activeNode = nodeRepo.list(zoneId, List.of(host2)).get(0);
- var report = VCMRReport.fromReports(activeNode.reports());
+ activeNode = nodeRepo.list(zoneId, NodeFilter.all().hostnames(host2)).get(0);
+ var report = VcmrReport.fromReports(activeNode.reports());
var reportAdded = report.getVcmrs().stream()
.filter(vcmr -> vcmr.getId().equals(changeRequestId))
.count() == 1;
@@ -184,11 +191,11 @@ public class VCMRMaintainerTest {
var hostAction = writtenChangeRequest.getHostActionPlan().get(0);
assertEquals(State.PENDING_RETIREMENT, hostAction.getState());
- parkedNode = nodeRepo.list(zoneId, List.of(parkedNode.hostname())).get(0);
+ parkedNode = nodeRepo.list(zoneId, NodeFilter.all().hostnames(parkedNode.hostname())).get(0);
assertEquals(Node.State.dirty, parkedNode.state());
assertFalse(parkedNode.wantToRetire());
- retiringNode = nodeRepo.list(zoneId, List.of(retiringNode.hostname())).get(0);
+ retiringNode = nodeRepo.list(zoneId, NodeFilter.all().hostnames(retiringNode.hostname())).get(0);
assertEquals(Node.State.active, retiringNode.state());
assertFalse(retiringNode.wantToRetire());
}
@@ -235,11 +242,11 @@ public class VCMRMaintainerTest {
}
private Node createNode(HostName hostname, NodeType nodeType, Node.State state, boolean wantToRetire) {
- return new Node.Builder()
- .hostname(hostname)
- .type(nodeType)
- .state(state)
- .wantToRetire(wantToRetire)
- .build();
+ return Node.builder()
+ .hostname(hostname)
+ .type(nodeType)
+ .state(state)
+ .wantToRetire(wantToRetire)
+ .build();
}
-} \ No newline at end of file
+}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/VersionStatusUpdaterTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/VersionStatusUpdaterTest.java
index 0d2390f9d92..d85ec868d56 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/VersionStatusUpdaterTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/VersionStatusUpdaterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.vespa.hosted.controller.ControllerTester;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/notification/NotificationsDbTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/notification/NotificationsDbTest.java
index 786809fb7b1..3e1d4ab14d7 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/notification/NotificationsDbTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/notification/NotificationsDbTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.notification;
import com.yahoo.config.provision.ApplicationId;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java
index 37a173ffc37..f1421b5affd 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.component.Version;
@@ -88,7 +88,8 @@ public class ApplicationSerializerTest {
Optional.of(Version.fromString("1.2.3")),
Optional.of(Instant.ofEpochMilli(666)),
Optional.empty(),
- Optional.of("best commit"));
+ Optional.of("best commit"),
+ true);
assertEquals("https://github/org/repo/tree/commit1", applicationVersion1.sourceUrl().get());
ApplicationVersion applicationVersion2 = ApplicationVersion
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/BufferedLogStoreTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/BufferedLogStoreTest.java
index 76940cf83e0..a9baeb9589d 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/BufferedLogStoreTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/BufferedLogStoreTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.config.provision.ApplicationId;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/EndpointCertificateMetadataSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/EndpointCertificateMetadataSerializerTest.java
index ff59e14947b..f2171032e98 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/EndpointCertificateMetadataSerializerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/EndpointCertificateMetadataSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.vespa.hosted.controller.api.integration.certificates.EndpointCertificateMetadata;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/LogSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/LogSerializerTest.java
index e8029e0bdbd..1e63b87e7c6 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/LogSerializerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/LogSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.vespa.hosted.controller.api.integration.LogEntry;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/NameServiceQueueSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/NameServiceQueueSerializerTest.java
index a2c995eaaf0..4ef09bbfce0 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/NameServiceQueueSerializerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/NameServiceQueueSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.config.provision.HostName;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/NotificationsSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/NotificationsSerializerTest.java
index f13f92dee85..1fec1dbce02 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/NotificationsSerializerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/NotificationsSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.config.provision.ApplicationId;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionSerializerTest.java
index c625d9f7f64..c722b3bbb96 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionSerializerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.google.common.collect.ImmutableSet;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionStatusSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionStatusSerializerTest.java
index cff845c9dbe..482303a0e49 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionStatusSerializerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionStatusSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.component.Version;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionTargetSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionTargetSerializerTest.java
index 8feaf32d9aa..1af4465528d 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionTargetSerializerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionTargetSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.google.common.collect.ImmutableSet;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializerTest.java
index 03a050db74e..eca2b17a5f1 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.google.common.collect.ImmutableMap;
@@ -82,13 +82,16 @@ public class RunSerializerTest {
assertEquals(running, run.status());
assertEquals(3, run.lastTestLogEntry());
assertEquals(new Version(1, 2, 3), run.versions().targetPlatform());
- ApplicationVersion applicationVersion = ApplicationVersion.from(new SourceRevision("git@github.com:user/repo.git",
- "master",
- "f00bad"),
+ ApplicationVersion applicationVersion = ApplicationVersion.from(Optional.of(new SourceRevision("git@github.com:user/repo.git",
+ "master",
+ "f00bad")),
123,
- "a@b",
- Version.fromString("6.3.1"),
- Instant.ofEpochMilli(100));
+ Optional.of("a@b"),
+ Optional.of(Version.fromString("6.3.1")),
+ Optional.of(Instant.ofEpochMilli(100)),
+ Optional.empty(),
+ Optional.empty(),
+ true);
assertEquals(applicationVersion, run.versions().targetApplication());
assertEquals(applicationVersion.authorEmail(), run.versions().targetApplication().authorEmail());
assertEquals(applicationVersion.buildTime(), run.versions().targetApplication().buildTime());
@@ -148,6 +151,7 @@ public class RunSerializerTest {
assertEquals(run.testerCertificate(), phoenix.testerCertificate());
assertEquals(run.versions(), phoenix.versions());
assertEquals(run.steps(), phoenix.steps());
+ assertEquals(run.isDryRun(), phoenix.isDryRun());
Run initial = Run.initial(id, run.versions(), run.isRedeployment(), run.start(), JobProfile.production);
assertEquals(initial, serializer.runFromSlime(serializer.toSlime(initial)));
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/SupportAccessSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/SupportAccessSerializerTest.java
index 97cf53d7b89..127f6b0dcbf 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/SupportAccessSerializerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/SupportAccessSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2021 Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.security.KeyAlgorithm;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java
index e123c4cca62..0b986667911 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java
@@ -1,5 +1,5 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.persistence;// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.controller.persistence;// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.google.common.collect.ImmutableBiMap;
import com.yahoo.config.provision.TenantName;
@@ -14,6 +14,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.secrets.TenantSecretSto
import com.yahoo.vespa.hosted.controller.api.role.SimplePrincipal;
import com.yahoo.vespa.hosted.controller.tenant.AthenzTenant;
import com.yahoo.vespa.hosted.controller.tenant.CloudTenant;
+import com.yahoo.vespa.hosted.controller.tenant.DeletedTenant;
import com.yahoo.vespa.hosted.controller.tenant.LastLoginInfo;
import com.yahoo.vespa.hosted.controller.tenant.TenantInfo;
import com.yahoo.vespa.hosted.controller.tenant.TenantInfoAddress;
@@ -172,6 +173,16 @@ public class TenantSerializerTest {
assertEquals(fullInfo, roundTripInfo);
}
+ @Test
+ public void deleted_tenant() {
+ DeletedTenant tenant = new DeletedTenant(
+ TenantName.from("tenant1"), Instant.ofEpochMilli(1234L), Instant.ofEpochMilli(2345L));
+ DeletedTenant serialized = (DeletedTenant) serializer.tenantFrom(serializer.toSlime(tenant));
+ assertEquals(tenant.name(), serialized.name());
+ assertEquals(tenant.createdAt(), serialized.createdAt());
+ assertEquals(tenant.deletedAt(), serialized.deletedAt());
+ }
+
private static Contact contact() {
return new Contact(
URI.create("http://contact1.test"),
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/testdata/run-status.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/testdata/run-status.json
index 0f40dd27664..7b9131a38dd 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/testdata/run-status.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/testdata/run-status.json
@@ -40,6 +40,7 @@
"branch": "master",
"commit": "f00bad",
"build": 123,
+ "deployedDirectly": true,
"authorEmail": "a@b",
"compileVersion": "6.3.1",
"buildTime": 100,
@@ -48,7 +49,8 @@
"repository": "git@github.com:user/repo.git",
"branch": "master",
"commit": "badb17",
- "build": 122
+ "build": 122,
+ "deployedDirectly": false
}
}
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/proxy/ConfigServerRestExecutorImplTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/proxy/ConfigServerRestExecutorImplTest.java
index 1fce7ba5695..0b28d94386d 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/proxy/ConfigServerRestExecutorImplTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/proxy/ConfigServerRestExecutorImplTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.proxy;
import com.github.tomakehurst.wiremock.junit.WireMockRule;
@@ -7,6 +7,7 @@ import com.yahoo.config.provision.SystemName;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.vespa.hosted.controller.integration.ZoneRegistryMock;
+import com.yahoo.yolean.concurrent.Sleeper;
import org.apache.http.protocol.HttpContext;
import org.apache.http.protocol.HttpCoreContext;
import org.junit.Rule;
@@ -38,7 +39,7 @@ public class ConfigServerRestExecutorImplTest {
public void proxy_with_retries() throws Exception {
var connectionReuseStrategy = new CountingConnectionReuseStrategy(Set.of("127.0.0.1"));
var proxy = new ConfigServerRestExecutorImpl(new ZoneRegistryMock(SystemName.cd), SSLContext.getDefault(),
- (duration) -> {}, connectionReuseStrategy);
+ Sleeper.NOOP, connectionReuseStrategy);
URI url = url();
String path = url.getPath();
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/proxy/ProxyRequestTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/proxy/ProxyRequestTest.java
index 15ec138354d..9d80dd25ec0 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/proxy/ProxyRequestTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/proxy/ProxyRequestTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.proxy;
import com.yahoo.jdisc.http.HttpRequest;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/proxy/ProxyResponseTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/proxy/ProxyResponseTest.java
index 539d4a6dd75..4cc2c1cc79e 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/proxy/ProxyResponseTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/proxy/ProxyResponseTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.proxy;
import com.yahoo.jdisc.http.HttpRequest;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ApplicationRequestToDiscFilterRequestWrapper.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ApplicationRequestToDiscFilterRequestWrapper.java
index 7cc00f1ad52..b25cb913c83 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ApplicationRequestToDiscFilterRequestWrapper.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ApplicationRequestToDiscFilterRequestWrapper.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi;
import com.yahoo.application.container.handler.Request;
@@ -114,6 +114,7 @@ public class ApplicationRequestToDiscFilterRequestWrapper extends DiscFilterRequ
}
@Override
+ @Deprecated
public void setUri(URI uri) {
throw new UnsupportedOperationException();
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ContainerTester.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ContainerTester.java
index 10f143a8e96..1d844859c37 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ContainerTester.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ContainerTester.java
@@ -26,7 +26,6 @@ import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Optional;
-import java.util.function.Consumer;
import java.util.function.Supplier;
import java.util.regex.Pattern;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ResponseHandlerToApplicationResponseWrapper.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ResponseHandlerToApplicationResponseWrapper.java
index 1af5de3e4ea..d57920e8b3c 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ResponseHandlerToApplicationResponseWrapper.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ResponseHandlerToApplicationResponseWrapper.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi;
import com.yahoo.jdisc.Response;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiCloudTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiCloudTest.java
index 5f76a30bf45..a4de6ab7700 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiCloudTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiCloudTest.java
@@ -1,6 +1,7 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.application;
+import ai.vespa.hosted.api.MultiPartStreamer;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ApplicationName;
import com.yahoo.config.provision.InstanceName;
@@ -10,10 +11,12 @@ import com.yahoo.vespa.flags.PermanentFlags;
import com.yahoo.vespa.hosted.controller.ControllerTester;
import com.yahoo.vespa.hosted.controller.LockedTenant;
import com.yahoo.vespa.hosted.controller.api.integration.billing.PlanId;
+import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationVersion;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
import com.yahoo.vespa.hosted.controller.api.integration.secrets.TenantSecretStore;
import com.yahoo.vespa.hosted.controller.api.role.Role;
import com.yahoo.vespa.hosted.controller.application.TenantAndApplicationId;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.deployment.ApplicationPackageBuilder;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentTester;
import com.yahoo.vespa.hosted.controller.restapi.ContainerTester;
@@ -232,6 +235,42 @@ public class ApplicationApiCloudTest extends ControllerContainerCloudTest {
200);
}
+ @Test
+ public void create_application_on_deploy() {
+ var application = ApplicationName.from("unique");
+ var applicationPackage = new ApplicationPackageBuilder().build();
+
+ assertTrue(tester.controller().applications().getApplication(TenantAndApplicationId.from(tenantName, application)).isEmpty());
+
+ tester.assertResponse(
+ request("/application/v4/tenant/scoober/application/unique/instance/default/deploy/dev-aws-us-east-1c", POST)
+ .data(createApplicationDeployData(Optional.of(applicationPackage), Optional.empty(), true))
+ .roles(Set.of(Role.developer(tenantName))),
+ "{\"message\":\"Deployment started in run 1 of dev-aws-us-east-1c for scoober.unique. This may take about 15 minutes the first time.\",\"run\":1}");
+
+ assertTrue(tester.controller().applications().getApplication(TenantAndApplicationId.from(tenantName, application)).isPresent());
+ }
+
+ @Test
+ public void create_application_on_submit() {
+ var application = ApplicationName.from("unique");
+ var applicationPackage = new ApplicationPackageBuilder()
+ .trustDefaultCertificate()
+ .build();
+
+ assertTrue(tester.controller().applications().getApplication(TenantAndApplicationId.from(tenantName, application)).isEmpty());
+
+ var data = ApplicationApiTest.createApplicationSubmissionData(applicationPackage, 123);
+
+ tester.assertResponse(
+ request("/application/v4/tenant/scoober/application/unique/submit", POST)
+ .data(data)
+ .roles(Set.of(Role.developer(tenantName))),
+ "{\"message\":\"Application package version: 1.0.1-commit1, source revision of repository 'repository1', branch 'master' with commit 'commit1', by a@b, built against 6.1 at 1970-01-01T00:00:01Z\"}");
+
+ assertTrue(tester.controller().applications().getApplication(TenantAndApplicationId.from(tenantName, application)).isPresent());
+ }
+
private ApplicationPackageBuilder prodBuilder() {
return new ApplicationPackageBuilder()
.instances("default")
@@ -264,8 +303,31 @@ public class ApplicationApiCloudTest extends ControllerContainerCloudTest {
JobType.productionAwsUsEast1c,
Optional.empty(),
applicationPackage);
+ }
+ private MultiPartStreamer createApplicationDeployData(Optional<ApplicationPackage> applicationPackage,
+ Optional<ApplicationVersion> applicationVersion, boolean deployDirectly) {
+ MultiPartStreamer streamer = new MultiPartStreamer();
+ streamer.addJson("deployOptions", deployOptions(deployDirectly, applicationVersion));
+ applicationPackage.ifPresent(ap -> streamer.addBytes("applicationZip", ap.zippedContent()));
+ return streamer;
+ }
+
+ private String deployOptions(boolean deployDirectly, Optional<ApplicationVersion> applicationVersion) {
+ return "{\"vespaVersion\":null," +
+ "\"ignoreValidationErrors\":false," +
+ "\"deployDirectly\":" + deployDirectly +
+ applicationVersion.map(version ->
+ "," +
+ "\"buildNumber\":" + version.buildNumber().getAsLong() + "," +
+ "\"sourceRevision\":{" +
+ "\"repository\":\"" + version.source().get().repository() + "\"," +
+ "\"branch\":\"" + version.source().get().branch() + "\"," +
+ "\"commit\":\"" + version.source().get().commit() + "\"" +
+ "}"
+ ).orElse("") +
+ "}";
}
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java
index a01097cfcb6..d2eb43d31f8 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java
@@ -1,4 +1,4 @@
-// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.application;
import ai.vespa.hosted.api.MultiPartStreamer;
@@ -52,7 +52,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.resource.MeteringData;
import com.yahoo.vespa.hosted.controller.api.integration.resource.ResourceAllocation;
import com.yahoo.vespa.hosted.controller.api.integration.resource.ResourceSnapshot;
import com.yahoo.vespa.hosted.controller.api.integration.stubs.MockMeteringClient;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.Change;
import com.yahoo.vespa.hosted.controller.application.Deployment;
import com.yahoo.vespa.hosted.controller.application.DeploymentMetrics;
@@ -84,7 +84,6 @@ import java.io.File;
import java.math.BigInteger;
import java.net.URI;
import java.security.cert.X509Certificate;
-import java.time.Duration;
import java.time.Instant;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
@@ -251,7 +250,7 @@ public class ApplicationApiTest extends ControllerContainerTest {
var app1 = deploymentTester.newDeploymentContext(id);
// POST (deploy) an application to start a manual deployment in prod is not allowed
- MultiPartStreamer entity = createApplicationDeployData(applicationPackageInstance1, true);
+ MultiPartStreamer entity = createApplicationDeployData(applicationPackageInstance1);
tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/instance/instance1/deploy/production-us-east-3/", POST)
.data(entity)
.userIdentity(USER_ID),
@@ -272,6 +271,12 @@ public class ApplicationApiTest extends ControllerContainerTest {
"{\"message\":\"Deployment started in run 1 of dev-us-east-1 for tenant1.application1.instance1. This may take about 15 minutes the first time.\",\"run\":1}");
app1.runJob(JobType.devUsEast1);
+ // POST (deploy) a job to restart a manual deployment to dev
+ tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/instance/instance1/job/dev-us-east-1", POST)
+ .userIdentity(USER_ID),
+ "{\"message\":\"Triggered dev-us-east-1 for tenant1.application1.instance1\"}");
+ app1.runJob(JobType.devUsEast1);
+
// GET dev application package
tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/instance/instance1/job/dev-us-east-1/package", GET)
.userIdentity(USER_ID),
@@ -284,7 +289,7 @@ public class ApplicationApiTest extends ControllerContainerTest {
// POST an application package is not generally allowed under user instance
tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/instance/otheruser/deploy/dev-us-east-1", POST)
.userIdentity(OTHER_USER_ID)
- .data(createApplicationDeployData(applicationPackageInstance1, false)),
+ .data(createApplicationDeployData(applicationPackageInstance1)),
accessDenied,
403);
@@ -298,9 +303,16 @@ public class ApplicationApiTest extends ControllerContainerTest {
// POST an application package is not allowed under user instance for tenant admins
tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/instance/myuser/deploy/dev-us-east-1", POST)
.userIdentity(USER_ID)
- .data(createApplicationDeployData(applicationPackageInstance1, false)),
+ .data(createApplicationDeployData(applicationPackageInstance1)),
new File("deployment-job-accepted-2.json"));
+ tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/instance/myuser/job/dev-us-east-1/diff/1", GET).userIdentity(HOSTED_VESPA_OPERATOR),
+ (response) -> assertTrue(response.getBodyAsString(),
+ response.getBodyAsString().contains("--- search-definitions/test.sd\n" +
+ "@@ -1,0 +1,1 @@\n" +
+ "+ search test { }\n")),
+ 200);
+
// DELETE a dev deployment is allowed under user instance for tenant admins
tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/instance/myuser/environment/dev/region/us-east-1", DELETE)
.userIdentity(USER_ID),
@@ -612,6 +624,18 @@ public class ApplicationApiTest extends ControllerContainerTest {
.userIdentity(USER_ID),
"{\"enabled\":true,\"clusters\":[{\"name\":\"cluster\",\"pending\":[{\"type\":\"type\",\"requiredGeneration\":100}],\"ready\":[{\"type\":\"type\",\"readyAtMillis\":345,\"startedAtMillis\":456,\"endedAtMillis\":567,\"state\":\"failed\",\"message\":\"(#`д´)ノ\",\"progress\":0.1}]}]}");
+ // POST to request a service dump
+ tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/instance/instance1/environment/prod/region/us-central-1/node/host-tenant1:application1:instance1-prod.us-central-1/service-dump", POST)
+ .userIdentity(HOSTED_VESPA_OPERATOR)
+ .data("{\"configId\":\"default/container.1\",\"artifacts\":[\"jvm-dump\"],\"dumpOptions\":{\"duration\":30}}"),
+ "{\"message\":\"Request created\"}");
+
+ // GET to get status of service dump
+ tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/instance/instance1/environment/prod/region/us-central-1/node/host-tenant1:application1:instance1-prod.us-central-1/service-dump", GET)
+ .userIdentity(HOSTED_VESPA_OPERATOR),
+ "{\"createdMillis\":" + tester.controller().clock().millis() + ",\"configId\":\"default/container.1\"" +
+ ",\"artifacts\":[\"jvm-dump\"],\"dumpOptions\":{\"duration\":30}}");
+
// POST a 'restart application' command
tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/environment/prod/region/us-central-1/instance/instance1/restart", POST)
.userIdentity(USER_ID),
@@ -746,6 +770,12 @@ public class ApplicationApiTest extends ControllerContainerTest {
.data(createApplicationSubmissionData(packageWithService, 123)),
"{\"message\":\"Application package version: 1.0.2-commit1, source revision of repository 'repository1', branch 'master' with commit 'commit1', by a@b, built against 6.1 at 1970-01-01T00:00:01Z\"}");
+ tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/diff/2", GET).userIdentity(HOSTED_VESPA_OPERATOR),
+ (response) -> assertTrue(response.getBodyAsString(),
+ response.getBodyAsString().contains("+ <deployment version='1.0' athenz-domain='domain1' athenz-service='service'>\n" +
+ "- <deployment version='1.0' >\n")),
+ 200);
+
// GET last submitted application package
tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/package", GET).userIdentity(HOSTED_VESPA_OPERATOR),
(response) -> {
@@ -805,7 +835,7 @@ public class ApplicationApiTest extends ControllerContainerTest {
// GET system test job overview.
tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/instance/instance1/job/system-test", GET)
- .userIdentity(USER_ID).properties(Map.of("limit", "100")),
+ .userIdentity(USER_ID),
new File("system-test-job.json"));
// GET system test run 1 details.
@@ -839,7 +869,32 @@ public class ApplicationApiTest extends ControllerContainerTest {
// DELETE an empty tenant
tester.assertResponse(request("/application/v4/tenant/tenant1", DELETE).userIdentity(USER_ID)
.oktaAccessToken(OKTA_AT).oktaIdentityToken(OKTA_IT),
- new File("tenant-without-applications.json"));
+ "{\"message\":\"Deleted tenant tenant1\"}");
+
+ // The tenant is not found
+ tester.assertResponse(request("/application/v4/tenant/tenant1", GET).userIdentity(USER_ID)
+ .oktaAccessToken(OKTA_AT).oktaIdentityToken(OKTA_IT),
+ "{\"error-code\":\"NOT_FOUND\",\"message\":\"Tenant 'tenant1' does not exist\"}", 404);
+
+ // ... unless we specify to show deleted tenants
+ tester.assertResponse(request("/application/v4/tenant/tenant1", GET).properties(Map.of("includeDeleted", "true"))
+ .userIdentity(HOSTED_VESPA_OPERATOR),
+ new File("tenant1-deleted.json"));
+
+ // Tenant cannot be recreated
+ tester.assertResponse(request("/application/v4/tenant/tenant1", POST).userIdentity(USER_ID)
+ .data("{\"athensDomain\":\"domain1\", \"property\":\"property1\"}")
+ .oktaAccessToken(OKTA_AT).oktaIdentityToken(OKTA_IT),
+ "{\"error-code\":\"BAD_REQUEST\",\"message\":\"Tenant 'tenant1' already exists\"}", 400);
+
+
+ // Forget a deleted tenant
+ tester.assertResponse(request("/application/v4/tenant/tenant1", DELETE).properties(Map.of("forget", "true"))
+ .userIdentity(HOSTED_VESPA_OPERATOR),
+ "{\"message\":\"Deleted tenant tenant1\"}");
+ tester.assertResponse(request("/application/v4/tenant/tenant1", GET).properties(Map.of("includeDeleted", "true"))
+ .userIdentity(HOSTED_VESPA_OPERATOR),
+ "{\"error-code\":\"NOT_FOUND\",\"message\":\"Tenant 'tenant1' does not exist\"}", 404);
}
private void addIssues(DeploymentTester tester, TenantAndApplicationId id) {
@@ -971,38 +1026,24 @@ public class ApplicationApiTest extends ControllerContainerTest {
}
@Test
- public void testDeployDirectly() {
+ public void testDeployWithApplicationPackage() {
// Setup
- createAthenzDomainWithAdmin(ATHENZ_TENANT_DOMAIN, USER_ID);
addUserToHostedOperatorRole(HostedAthenzIdentities.from(HOSTED_VESPA_OPERATOR));
- // Create tenant
- tester.assertResponse(request("/application/v4/tenant/tenant1", POST).userIdentity(USER_ID)
- .data("{\"athensDomain\":\"domain1\", \"property\":\"property1\"}")
- .oktaAccessToken(OKTA_AT).oktaIdentityToken(OKTA_IT),
- new File("tenant-without-applications.json"));
-
- // Create application
- tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/instance/instance1", POST)
- .userIdentity(USER_ID)
- .oktaAccessToken(OKTA_AT).oktaIdentityToken(OKTA_IT),
- new File("instance-reference.json"));
-
- // Add build service to operator role
- addUserToHostedOperatorRole(HostedAthenzIdentities.from(SCREWDRIVER_ID));
-
// POST (deploy) a system application with an application package
- MultiPartStreamer noAppEntity = createApplicationDeployData(Optional.empty(), true);
+ MultiPartStreamer noAppEntity = createApplicationDeployData(Optional.empty());
tester.assertResponse(request("/application/v4/tenant/hosted-vespa/application/routing/environment/prod/region/us-central-1/instance/default/deploy", POST)
.data(noAppEntity)
.userIdentity(HOSTED_VESPA_OPERATOR),
"{\"error-code\":\"BAD_REQUEST\",\"message\":\"Deployment of system applications during a system upgrade is not allowed\"}",
400);
- deploymentTester.controllerTester().upgradeSystem(deploymentTester.controller().readVersionStatus().controllerVersion().get().versionNumber());
+ deploymentTester.controllerTester()
+ .upgradeSystem(deploymentTester.controller().readVersionStatus().controllerVersion().get()
+ .versionNumber());
tester.assertResponse(request("/application/v4/tenant/hosted-vespa/application/routing/environment/prod/region/us-central-1/instance/default/deploy", POST)
- .data(noAppEntity)
- .userIdentity(HOSTED_VESPA_OPERATOR),
- new File("deploy-result.json"));
+ .data(noAppEntity)
+ .userIdentity(HOSTED_VESPA_OPERATOR),
+ new File("deploy-result.json"));
}
@Test
@@ -1058,7 +1099,7 @@ public class ApplicationApiTest extends ControllerContainerTest {
}
@Test
- public void testErrorResponses() throws Exception {
+ public void testErrorResponses() {
createAthenzDomainWithAdmin(ATHENZ_TENANT_DOMAIN, USER_ID);
// PUT (update) non-existing tenant returns 403 as tenant access cannot be determined when the tenant does not exist
@@ -1168,7 +1209,7 @@ public class ApplicationApiTest extends ControllerContainerTest {
400);
// POST (deploy) an application to legacy deploy path
- MultiPartStreamer entity = createApplicationDeployData(applicationPackageInstance1, true);
+ MultiPartStreamer entity = createApplicationDeployData(applicationPackageInstance1);
tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/environment/dev/region/us-east-1/instance/instance1/deploy", POST)
.data(entity)
.userIdentity(USER_ID),
@@ -1193,11 +1234,18 @@ public class ApplicationApiTest extends ControllerContainerTest {
"{\"error-code\":\"NOT_FOUND\",\"message\":\"Could not delete instance 'tenant1.application1.instance1': Instance not found\"}",
404);
+ // DELETE and forget an application as non-operator
+ tester.assertResponse(request("/application/v4/tenant/tenant1", DELETE).properties(Map.of("forget", "true"))
+ .userIdentity(USER_ID)
+ .oktaAccessToken(OKTA_AT).oktaIdentityToken(OKTA_IT),
+ "{\"error-code\":\"FORBIDDEN\",\"message\":\"Only operators can forget a tenant\"}",
+ 403);
+
// DELETE tenant
tester.assertResponse(request("/application/v4/tenant/tenant1", DELETE)
.userIdentity(USER_ID)
.oktaAccessToken(OKTA_AT).oktaIdentityToken(OKTA_IT),
- new File("tenant-without-applications.json"));
+ "{\"message\":\"Deleted tenant tenant1\"}");
// DELETE tenant again returns 403 as tenant access cannot be determined when the tenant does not exist
tester.assertResponse(request("/application/v4/tenant/tenant1", DELETE)
.userIdentity(USER_ID),
@@ -1268,7 +1316,7 @@ public class ApplicationApiTest extends ControllerContainerTest {
200);
// Deploy to an authorized zone by a user tenant is disallowed
- MultiPartStreamer entity = createApplicationDeployData(applicationPackageDefault, true);
+ MultiPartStreamer entity = createApplicationDeployData(applicationPackageDefault);
tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/environment/prod/region/us-west-1/instance/default/deploy", POST)
.data(entity)
.userIdentity(USER_ID),
@@ -1375,7 +1423,7 @@ public class ApplicationApiTest extends ControllerContainerTest {
.build();
createTenantAndApplication();
- MultiPartStreamer entity = createApplicationDeployData(applicationPackage, true);
+ MultiPartStreamer entity = createApplicationDeployData(applicationPackage);
// POST (deploy) an application to dev through a deployment job, with user instance and a proper tenant
tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/instance/new-user/deploy/dev-us-east-1", POST)
.data(entity)
@@ -1422,7 +1470,7 @@ public class ApplicationApiTest extends ControllerContainerTest {
.build();
// deploy the application to a dev zone. Should fail since the developer is not authorized to launch the service
- MultiPartStreamer entity = createApplicationDeployData(applicationPackage, true);
+ MultiPartStreamer entity = createApplicationDeployData(applicationPackage);
tester.assertResponse(request("/application/v4/tenant/sandbox/application/myapp/instance/default/deploy/dev-us-east-1", POST)
.data(entity)
.userIdentity(developer),
@@ -1431,7 +1479,7 @@ public class ApplicationApiTest extends ControllerContainerTest {
// Allow developer launch privilege to domain1.service. Deployment now completes.
AthenzDbMock.Domain domainMock = tester.athenzClientFactory().getSetup().getOrCreateDomain(ATHENZ_TENANT_DOMAIN);
- domainMock.withPolicy("user." + developer.id(), "launch", "service.service");
+ domainMock.withPolicy("launch-" +developer.id(), "user." + developer.id(), "launch", "service.service");
tester.assertResponse(request("/application/v4/tenant/sandbox/application/myapp/instance/default/deploy/dev-us-east-1", POST)
@@ -1583,6 +1631,62 @@ public class ApplicationApiTest extends ControllerContainerTest {
assertEquals(0, activeGrants.size());
}
+ @Test
+ public void testServiceView() {
+ createAthenzDomainWithAdmin(ATHENZ_TENANT_DOMAIN, USER_ID);
+ String serviceApi="/application/v4/tenant/tenant1/application/application1/environment/prod/region/us-central-1/instance/instance1/service";
+ // Not allowed to request apis not listed in feature flag allowed-service-view-apis. e.g /document/v1
+ tester.assertResponse(request(serviceApi + "/storagenode-awe3slno6mmq2fye191y324jl/document/v1/", GET)
+ .userIdentity(USER_ID)
+ .oktaAccessToken(OKTA_AT).oktaIdentityToken(OKTA_IT),
+ "{\"error-code\":\"FORBIDDEN\",\"message\":\"Access denied\"}",
+ 403);
+
+ // Test path traversal
+ tester.assertResponse(request(serviceApi + "/storagenode-awe3slno6mmq2fye191y324jl/state/v1/../../document/v1/", GET)
+ .userIdentity(USER_ID)
+ .oktaAccessToken(OKTA_AT).oktaIdentityToken(OKTA_IT),
+ "{\"error-code\":\"FORBIDDEN\",\"message\":\"Access denied\"}",
+ 403);
+
+ // Test urlencoded path traversal
+ tester.assertResponse(request(serviceApi + "/storagenode-awe3slno6mmq2fye191y324jl/state%2Fv1%2F..%2F..%2Fdocument%2Fv1%2F", GET)
+ .userIdentity(USER_ID)
+ .oktaAccessToken(OKTA_AT).oktaIdentityToken(OKTA_IT),
+ "{\"error-code\":\"FORBIDDEN\",\"message\":\"Access denied\"}",
+ 403);
+ }
+
+ @Test
+ public void create_application_on_deploy() {
+ // Setup
+ createAthenzDomainWithAdmin(ATHENZ_TENANT_DOMAIN, USER_ID);
+ addUserToHostedOperatorRole(HostedAthenzIdentities.from(HOSTED_VESPA_OPERATOR));
+
+ // Create tenant
+ tester.assertResponse(request("/application/v4/tenant/tenant1", POST).userIdentity(USER_ID)
+ .data("{\"athensDomain\":\"domain1\", \"property\":\"property1\"}")
+ .oktaAccessToken(OKTA_AT).oktaIdentityToken(OKTA_IT),
+ new File("tenant-without-applications.json"));
+
+ // Deploy application
+ var id = ApplicationId.from("tenant1", "application1", "instance1");
+ var appId = TenantAndApplicationId.from(id);
+ var entity = createApplicationDeployData(applicationPackageInstance1);
+
+ assertTrue(tester.controller().applications().getApplication(appId).isEmpty());
+
+ // POST (deploy) an application to start a manual deployment to dev
+ tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/instance/instance1/deploy/dev-us-east-1/", POST)
+ .data(entity)
+ .oktaIdentityToken(OKTA_IT)
+ .oktaAccessToken(OKTA_AT)
+ .userIdentity(USER_ID),
+ "{\"message\":\"Deployment started in run 1 of dev-us-east-1 for tenant1.application1.instance1. This may take about 15 minutes the first time.\",\"run\":1}");
+
+ assertTrue(tester.controller().applications().getApplication(appId).isPresent());
+ }
+
private static String serializeInstant(Instant i) {
return DateTimeFormatter.ISO_INSTANT.format(i.truncatedTo(ChronoUnit.SECONDS));
}
@@ -1595,18 +1699,18 @@ public class ApplicationApiTest extends ControllerContainerTest {
.build();
}
- private MultiPartStreamer createApplicationDeployData(ApplicationPackage applicationPackage, boolean deployDirectly) {
- return createApplicationDeployData(Optional.of(applicationPackage), deployDirectly);
+ private MultiPartStreamer createApplicationDeployData(ApplicationPackage applicationPackage) {
+ return createApplicationDeployData(Optional.of(applicationPackage));
}
- private MultiPartStreamer createApplicationDeployData(Optional<ApplicationPackage> applicationPackage, boolean deployDirectly) {
- return createApplicationDeployData(applicationPackage, Optional.empty(), deployDirectly);
+ private MultiPartStreamer createApplicationDeployData(Optional<ApplicationPackage> applicationPackage) {
+ return createApplicationDeployData(applicationPackage, Optional.empty());
}
private MultiPartStreamer createApplicationDeployData(Optional<ApplicationPackage> applicationPackage,
- Optional<ApplicationVersion> applicationVersion, boolean deployDirectly) {
+ Optional<ApplicationVersion> applicationVersion) {
MultiPartStreamer streamer = new MultiPartStreamer();
- streamer.addJson("deployOptions", deployOptions(deployDirectly, applicationVersion));
+ streamer.addJson("deployOptions", deployOptions(applicationVersion));
applicationPackage.ifPresent(ap -> streamer.addBytes("applicationZip", ap.zippedContent()));
return streamer;
}
@@ -1618,10 +1722,9 @@ public class ApplicationApiTest extends ControllerContainerTest {
.addBytes(EnvironmentResource.APPLICATION_TEST_ZIP, "content".getBytes());
}
- private String deployOptions(boolean deployDirectly, Optional<ApplicationVersion> applicationVersion) {
+ private String deployOptions(Optional<ApplicationVersion> applicationVersion) {
return "{\"vespaVersion\":null," +
- "\"ignoreValidationErrors\":false," +
- "\"deployDirectly\":" + deployDirectly +
+ "\"ignoreValidationErrors\":false" +
applicationVersion.map(version ->
"," +
"\"buildNumber\":" + version.buildNumber().getAsLong() + "," +
@@ -1654,7 +1757,8 @@ public class ApplicationApiTest extends ControllerContainerTest {
*/
private void allowLaunchOfService(com.yahoo.vespa.athenz.api.AthenzService service) {
AthenzDbMock.Domain domainMock = tester.athenzClientFactory().getSetup().getOrCreateDomain(service.getDomain());
- domainMock.withPolicy(tester.controller().zoneRegistry().accessControlDomain().value()+".provider.*","launch", "service." + service.getName());
+ String principalRegex = tester.controller().zoneRegistry().accessControlDomain().value() + ".provider.*";
+ domainMock.withPolicy("provider-launch", principalRegex,"launch", "service." + service.getName());
}
/**
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelperTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelperTest.java
index 72295497c03..2ae755ac8fe 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelperTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelperTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.application;
import com.yahoo.component.Version;
@@ -9,7 +9,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.configserver.ConfigServ
import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationVersion;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.TestReport;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.deployment.ApplicationPackageBuilder;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentTester;
import org.junit.Test;
@@ -157,9 +157,10 @@ public class JobControllerApiHandlerHelperTest {
tester.configServer().setLogStream(() -> "Nope, this won't be logged");
tester.configServer().convergeServices(app.instanceId(), zone);
tester.runner().run();
+ assertResponse(JobControllerApiHandlerHelper.runDetailsResponse(tester.jobs(), tester.jobs().last(app.instanceId(), devUsEast1).get().id(), "8"), "dev-us-east-1-log-second-part.json");
+ tester.jobs().deploy(app.instanceId(), JobType.devUsEast1, Optional.empty(), applicationPackage());
assertResponse(JobControllerApiHandlerHelper.jobTypeResponse(tester.controller(), app.instanceId(), URI.create("https://some.url:43/root")), "dev-overview.json");
- assertResponse(JobControllerApiHandlerHelper.runDetailsResponse(tester.jobs(), tester.jobs().last(app.instanceId(), devUsEast1).get().id(), "8"), "dev-us-east-1-log-second-part.json");
}
@Test
@@ -175,6 +176,19 @@ public class JobControllerApiHandlerHelperTest {
"jobs-direct-deployment.json");
}
+ @Test
+ public void testResponsesWithDryRunDeployment() {
+ var tester = new DeploymentTester();
+ var app = tester.newDeploymentContext();
+ tester.clock().setInstant(Instant.EPOCH);
+ var region = "us-west-1";
+ var applicationPackage = new ApplicationPackageBuilder().region(region).build();
+ // Deploy directly to production zone, like integration tests, with dryRun.
+ tester.controller().jobController().deploy(tester.instance().id(), productionUsWest1, Optional.empty(), applicationPackage, true);
+ assertResponse(JobControllerApiHandlerHelper.jobTypeResponse(tester.controller(), app.instanceId(), URI.create("https://some.url:43/root/")),
+ "jobs-direct-deployment.json");
+ }
+
private void compare(HttpResponse response, String expected) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
response.render(baos);
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/MultipartParserTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/MultipartParserTest.java
index 1a623c4e3eb..5bf22ede19d 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/MultipartParserTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/MultipartParserTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.application;
import com.google.inject.Key;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ServiceApiResponseTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ServiceApiResponseTest.java
index 57774c3f412..c69cd51e20d 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ServiceApiResponseTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ServiceApiResponseTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.application;
import com.yahoo.config.provision.ApplicationId;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-overview.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-overview.json
index 55be0881ec2..abe3d4100d9 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-overview.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-overview.json
@@ -413,7 +413,7 @@
"id": 1,
"url": "http://localhost:8080/application/v4/tenant/tenant1/application/application1/instance/instance1/job/production-us-west-1/run/1",
"start": "(ignore)",
- "status": "aborted",
+ "status": "running",
"versions": {
"targetPlatform": "6.1.0",
"targetApplication": {
@@ -469,7 +469,7 @@
"id": 2,
"url": "http://localhost:8080/application/v4/tenant/tenant1/application/application1/instance/instance1/job/production-us-east-3/run/2",
"start": "(ignore)",
- "status": "aborted",
+ "status": "running",
"versions": {
"targetPlatform": "6.1.0",
"targetApplication": {
@@ -502,7 +502,9 @@
"status": "success",
"versions": {
"targetPlatform": "6.1.0",
- "targetApplication": {}
+ "targetApplication": {
+ "build": 1
+ }
},
"steps": [
{
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-aws-us-east-2a-runs.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-aws-us-east-2a-runs.json
index 3a78f8c44a0..dce73ad56cd 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-aws-us-east-2a-runs.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-aws-us-east-2a-runs.json
@@ -1,22 +1,31 @@
{
- "1": {
- "id": 1,
- "status": "success",
- "start": 14503000,
- "end": 14503000,
- "wantedPlatform": "7.1",
- "wantedApplication": {
- "hash": "unknown"
- },
- "steps": {
- "deployReal": "succeeded",
- "installReal": "succeeded",
- "copyVespaLogs": "succeeded"
- },
- "tasks": {
- "deploy": "succeeded",
- "install": "succeeded"
- },
- "log": "https://some.url:43/root/run/1"
- }
+ "runs": [
+ {
+ "id": 1,
+ "url": "https://some.url:43/root/run/1",
+ "start": 14503000,
+ "end": 14503000,
+ "status": "success",
+ "versions": {
+ "targetPlatform": "7.1.0",
+ "targetApplication": {
+ "build": 1
+ }
+ },
+ "steps": [
+ {
+ "name": "deployReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "installReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "copyVespaLogs",
+ "status": "succeeded"
+ }
+ ]
+ }
+ ]
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-overview.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-overview.json
index e3beb371acd..63fd0845d1b 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-overview.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-overview.json
@@ -5,7 +5,39 @@
"runs": [
{
"versions": {
- "targetApplication": {},
+ "targetApplication": {
+ "build": 2
+ },
+ "targetPlatform": "6.1.0",
+ "sourceApplication": {
+ "build": 1
+ },
+ "sourcePlatform": "6.1.0"
+ },
+ "start": 0,
+ "id": 2,
+ "steps": [
+ {
+ "name": "deployReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "installReal",
+ "status": "unfinished"
+ },
+ {
+ "name": "copyVespaLogs",
+ "status": "unfinished"
+ }
+ ],
+ "url": "https://some.url:43/root/run/2",
+ "status": "running"
+ },
+ {
+ "versions": {
+ "targetApplication": {
+ "build": 1
+ },
"targetPlatform": "6.1.0"
},
"start": 0,
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-us-east-1-log-first-part.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-us-east-1-log-first-part.json
index 72411d155c7..3ef993c6589 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-us-east-1-log-first-part.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-us-east-1-log-first-part.json
@@ -6,7 +6,7 @@
{
"at": 0,
"type": "info",
- "message": "Deploying platform version 6.1 and application version unknown ..."
+ "message": "Deploying platform version 6.1 and application version 1.0.1 ..."
},
{
"at": 0,
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-us-east-1.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-us-east-1.json
index d61bebc81d1..f2f8e14f093 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-us-east-1.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-us-east-1.json
@@ -21,6 +21,7 @@
"revision": "(ignore)",
"deployTimeEpochMs": "(ignore)",
"screwdriverId": "123",
+ "status": "complete",
"quota": "(ignore)",
"activity": {
"lastQueried": 1527848130000,
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs.json
index 9a742a9b176..736e1fe082c 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs.json
@@ -4,6 +4,37 @@
"jobName": "dev-us-east-1",
"runs": [
{
+ "id": 2,
+ "url": "http://localhost:8080/application/v4/tenant/tenant1/application/application1/instance/instance1/job/run/2",
+ "start": "(ignore)",
+ "end": "(ignore)",
+ "status": "success",
+ "versions": {
+ "targetPlatform": "6.1.0",
+ "targetApplication": {
+ "build": 1
+ },
+ "sourcePlatform":"6.1.0",
+ "sourceApplication": {
+ "build": 1
+ }
+ },
+ "steps": [
+ {
+ "name": "deployReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "installReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "copyVespaLogs",
+ "status": "succeeded"
+ }
+ ]
+ },
+ {
"id": 1,
"url": "http://localhost:8080/application/v4/tenant/tenant1/application/application1/instance/instance1/job/run/1",
"start": "(ignore)",
@@ -11,7 +42,9 @@
"status": "success",
"versions": {
"targetPlatform": "6.1.0",
- "targetApplication": {}
+ "targetApplication": {
+ "build": 1
+ }
},
"steps": [
{
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview-user-instance.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview-user-instance.json
index 2601937faee..f8aba54356b 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview-user-instance.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview-user-instance.json
@@ -5,7 +5,9 @@
"runs": [
{
"versions": {
- "targetApplication": {},
+ "targetApplication": {
+ "build": 1
+ },
"targetPlatform": "7.1.0"
},
"start": 14503000,
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/staging-runs.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/staging-runs.json
index 37ae9e4b56b..a98ae5c678d 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/staging-runs.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/staging-runs.json
@@ -1,242 +1,402 @@
{
- "1": {
- "id": 1,
- "status": "success",
- "start": 0,
- "end": 0,
- "wantedPlatform": "6.1",
- "wantedApplication": {
- "hash": "1.0.1-commit1",
- "build": 1,
- "source": {
- "gitRepository": "repository1",
- "gitBranch": "master",
- "gitCommit": "commit1"
+ "runs": [
+ {
+ "id": 1,
+ "url": "https://some.url:43/root/run/1",
+ "start": 0,
+ "end": 0,
+ "status": "success",
+ "versions": {
+ "targetPlatform": "6.1.0",
+ "targetApplication": {
+ "build": 1,
+ "compileVersion": "6.1.0",
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
+ }
},
- "sourceUrl": "repository1/tree/commit1",
- "commit": "commit1"
+ "steps": [
+ {
+ "name": "deployTester",
+ "status": "succeeded"
+ },
+ {
+ "name": "installTester",
+ "status": "succeeded"
+ },
+ {
+ "name": "deployInitialReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "installInitialReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "startStagingSetup",
+ "status": "succeeded"
+ },
+ {
+ "name": "endStagingSetup",
+ "status": "succeeded"
+ },
+ {
+ "name": "deployReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "installReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "startTests",
+ "status": "succeeded"
+ },
+ {
+ "name": "endTests",
+ "status": "succeeded"
+ },
+ {
+ "name": "copyVespaLogs",
+ "status": "succeeded"
+ },
+ {
+ "name": "deactivateReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "deactivateTester",
+ "status": "succeeded"
+ },
+ {
+ "name": "report",
+ "status": "succeeded"
+ }
+ ]
},
- "steps": {
- "deployTester": "succeeded",
- "installTester": "succeeded",
- "deployInitialReal": "succeeded",
- "installInitialReal": "succeeded",
- "startStagingSetup": "succeeded",
- "endStagingSetup": "succeeded",
- "deployReal": "succeeded",
- "installReal": "succeeded",
- "startTests": "succeeded",
- "endTests": "succeeded",
- "copyVespaLogs": "succeeded",
- "deactivateReal": "succeeded",
- "deactivateTester": "succeeded",
- "report": "succeeded"
- },
- "tasks": {
- "deploy": "succeeded",
- "install": "succeeded",
- "test": "succeeded"
- },
- "log": "https://some.url:43/root/run/1"
- },
- "2": {
- "id": 2,
- "status": "success",
- "start": 1000,
- "end": 1000,
- "wantedPlatform": "6.1",
- "wantedApplication": {
- "hash": "1.0.2-commit1",
- "build": 2,
- "source": {
- "gitRepository": "repository1",
- "gitBranch": "master",
- "gitCommit": "commit1"
+ {
+ "id": 2,
+ "url": "https://some.url:43/root/run/2",
+ "start": 1000,
+ "end": 1000,
+ "status": "success",
+ "versions": {
+ "targetPlatform": "6.1.0",
+ "targetApplication": {
+ "build": 2,
+ "compileVersion": "6.1.0",
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
+ },
+ "sourcePlatform": "6.1.0",
+ "sourceApplication": {
+ "build": 1,
+ "compileVersion": "6.1.0",
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
+ }
},
- "sourceUrl": "repository1/tree/commit1",
- "commit": "commit1"
+ "steps": [
+ {
+ "name": "deployTester",
+ "status": "succeeded"
+ },
+ {
+ "name": "installTester",
+ "status": "succeeded"
+ },
+ {
+ "name": "deployInitialReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "installInitialReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "startStagingSetup",
+ "status": "succeeded"
+ },
+ {
+ "name": "endStagingSetup",
+ "status": "succeeded"
+ },
+ {
+ "name": "deployReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "installReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "startTests",
+ "status": "succeeded"
+ },
+ {
+ "name": "endTests",
+ "status": "succeeded"
+ },
+ {
+ "name": "copyVespaLogs",
+ "status": "succeeded"
+ },
+ {
+ "name": "deactivateReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "deactivateTester",
+ "status": "succeeded"
+ },
+ {
+ "name": "report",
+ "status": "succeeded"
+ }
+ ]
},
- "currentPlatform": "6.1",
- "currentApplication": {
- "hash": "1.0.1-commit1",
- "build": 1,
- "source": {
- "gitRepository": "repository1",
- "gitBranch": "master",
- "gitCommit": "commit1"
+ {
+ "id": 3,
+ "url": "https://some.url:43/root/run/3",
+ "start": 14403000,
+ "end": 14403000,
+ "status": "success",
+ "versions": {
+ "targetPlatform": "6.1.0",
+ "targetApplication": {
+ "build": 3,
+ "compileVersion": "6.1.0",
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
+ },
+ "sourcePlatform": "6.1.0",
+ "sourceApplication": {
+ "build": 2,
+ "compileVersion": "6.1.0",
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
+ }
},
- "sourceUrl": "repository1/tree/commit1",
- "commit": "commit1"
- },
- "steps": {
- "deployTester": "succeeded",
- "installTester": "succeeded",
- "deployInitialReal": "succeeded",
- "installInitialReal": "succeeded",
- "startStagingSetup": "succeeded",
- "endStagingSetup": "succeeded",
- "deployReal": "succeeded",
- "installReal": "succeeded",
- "startTests": "succeeded",
- "endTests": "succeeded",
- "copyVespaLogs": "succeeded",
- "deactivateReal": "succeeded",
- "deactivateTester": "succeeded",
- "report": "succeeded"
+ "steps": [
+ {
+ "name": "deployTester",
+ "status": "succeeded"
+ },
+ {
+ "name": "installTester",
+ "status": "succeeded"
+ },
+ {
+ "name": "deployInitialReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "installInitialReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "startStagingSetup",
+ "status": "succeeded"
+ },
+ {
+ "name": "endStagingSetup",
+ "status": "succeeded"
+ },
+ {
+ "name": "deployReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "installReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "startTests",
+ "status": "succeeded"
+ },
+ {
+ "name": "endTests",
+ "status": "succeeded"
+ },
+ {
+ "name": "copyVespaLogs",
+ "status": "succeeded"
+ },
+ {
+ "name": "deactivateReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "deactivateTester",
+ "status": "succeeded"
+ },
+ {
+ "name": "report",
+ "status": "succeeded"
+ }
+ ]
},
- "tasks": {
- "deploy": "succeeded",
- "install": "succeeded",
- "test": "succeeded"
- },
- "log": "https://some.url:43/root/run/2"
- },
- "3": {
- "id": 3,
- "status": "success",
- "start": 14403000,
- "end": 14403000,
- "wantedPlatform": "6.1",
- "wantedApplication": {
- "hash": "1.0.3-commit1",
- "build": 3,
- "source": {
- "gitRepository": "repository1",
- "gitBranch": "master",
- "gitCommit": "commit1"
+ {
+ "id": 4,
+ "url": "https://some.url:43/root/run/4",
+ "start": 14403000,
+ "end": 14403000,
+ "status": "installationFailed",
+ "versions": {
+ "targetPlatform": "6.1.0",
+ "targetApplication": {
+ "build": 3,
+ "compileVersion": "6.1.0",
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
+ },
+ "sourcePlatform": "6.1.0",
+ "sourceApplication": {
+ "build": 1,
+ "compileVersion": "6.1.0",
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
+ }
},
- "sourceUrl": "repository1/tree/commit1",
- "commit": "commit1"
+ "steps": [
+ {
+ "name": "deployTester",
+ "status": "succeeded"
+ },
+ {
+ "name": "installTester",
+ "status": "unfinished"
+ },
+ {
+ "name": "deployInitialReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "installInitialReal",
+ "status": "failed"
+ },
+ {
+ "name": "startStagingSetup",
+ "status": "unfinished"
+ },
+ {
+ "name": "endStagingSetup",
+ "status": "unfinished"
+ },
+ {
+ "name": "deployReal",
+ "status": "unfinished"
+ },
+ {
+ "name": "installReal",
+ "status": "unfinished"
+ },
+ {
+ "name": "startTests",
+ "status": "unfinished"
+ },
+ {
+ "name": "endTests",
+ "status": "unfinished"
+ },
+ {
+ "name": "copyVespaLogs",
+ "status": "succeeded"
+ },
+ {
+ "name": "deactivateReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "deactivateTester",
+ "status": "succeeded"
+ },
+ {
+ "name": "report",
+ "status": "succeeded"
+ }
+ ]
},
- "currentPlatform": "6.1",
- "currentApplication": {
- "hash": "1.0.2-commit1",
- "build": 2,
- "source": {
- "gitRepository": "repository1",
- "gitBranch": "master",
- "gitCommit": "commit1"
+ {
+ "id": 5,
+ "url": "https://some.url:43/root/run/5",
+ "start": 14503000,
+ "end": 14503000,
+ "status": "installationFailed",
+ "versions": {
+ "targetPlatform": "6.1.0",
+ "targetApplication": {
+ "build": 3,
+ "compileVersion": "6.1.0",
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
+ },
+ "sourcePlatform": "6.1.0",
+ "sourceApplication": {
+ "build": 1,
+ "compileVersion": "6.1.0",
+ "sourceUrl": "repository1/tree/commit1",
+ "commit": "commit1"
+ }
},
- "sourceUrl": "repository1/tree/commit1",
- "commit": "commit1"
- },
- "steps": {
- "deployTester": "succeeded",
- "installTester": "succeeded",
- "deployInitialReal": "succeeded",
- "installInitialReal": "succeeded",
- "startStagingSetup": "succeeded",
- "endStagingSetup": "succeeded",
- "deployReal": "succeeded",
- "installReal": "succeeded",
- "startTests": "succeeded",
- "endTests": "succeeded",
- "copyVespaLogs": "succeeded",
- "deactivateReal": "succeeded",
- "deactivateTester": "succeeded",
- "report": "succeeded"
- },
- "tasks": {
- "deploy": "succeeded",
- "install": "succeeded",
- "test": "succeeded"
- },
- "log": "https://some.url:43/root/run/3"
- },
- "4": {
- "id": 4,
- "status": "installationFailed",
- "start": 14403000,
- "end": 14403000,
- "wantedPlatform": "6.1",
- "wantedApplication": {
- "hash": "1.0.3-commit1",
- "build": 3,
- "source": {
- "gitRepository": "repository1",
- "gitBranch": "master",
- "gitCommit": "commit1"
- },
- "sourceUrl": "repository1/tree/commit1",
- "commit": "commit1"
- },
- "currentPlatform": "6.1",
- "currentApplication": {
- "hash": "1.0.1-commit1",
- "build": 1,
- "source": {
- "gitRepository": "repository1",
- "gitBranch": "master",
- "gitCommit": "commit1"
- },
- "sourceUrl": "repository1/tree/commit1",
- "commit": "commit1"
- },
- "steps": {
- "deployTester": "succeeded",
- "installTester": "unfinished",
- "deployInitialReal": "succeeded",
- "installInitialReal": "failed",
- "startStagingSetup": "unfinished",
- "endStagingSetup": "unfinished",
- "deployReal": "unfinished",
- "installReal": "unfinished",
- "startTests": "unfinished",
- "endTests": "unfinished",
- "copyVespaLogs": "succeeded",
- "deactivateReal": "succeeded",
- "deactivateTester": "succeeded",
- "report": "succeeded"
- },
- "tasks": {},
- "log": "https://some.url:43/root/run/4"
- },
- "5": {
- "id": 5,
- "status": "installationFailed",
- "start": 14503000,
- "end": 14503000,
- "wantedPlatform": "6.1",
- "wantedApplication": {
- "hash": "1.0.3-commit1",
- "build": 3,
- "source": {
- "gitRepository": "repository1",
- "gitBranch": "master",
- "gitCommit": "commit1"
- },
- "sourceUrl": "repository1/tree/commit1",
- "commit": "commit1"
- },
- "currentPlatform": "6.1",
- "currentApplication": {
- "hash": "1.0.1-commit1",
- "build": 1,
- "source": {
- "gitRepository": "repository1",
- "gitBranch": "master",
- "gitCommit": "commit1"
- },
- "sourceUrl": "repository1/tree/commit1",
- "commit": "commit1"
- },
- "steps": {
- "deployTester": "succeeded",
- "installTester": "unfinished",
- "deployInitialReal": "succeeded",
- "installInitialReal": "failed",
- "startStagingSetup": "unfinished",
- "endStagingSetup": "unfinished",
- "deployReal": "unfinished",
- "installReal": "unfinished",
- "startTests": "unfinished",
- "endTests": "unfinished",
- "copyVespaLogs": "succeeded",
- "deactivateReal": "succeeded",
- "deactivateTester": "succeeded",
- "report": "succeeded"
- },
- "tasks": {},
- "log": "https://some.url:43/root/run/5"
- }
+ "steps": [
+ {
+ "name": "deployTester",
+ "status": "succeeded"
+ },
+ {
+ "name": "installTester",
+ "status": "unfinished"
+ },
+ {
+ "name": "deployInitialReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "installInitialReal",
+ "status": "failed"
+ },
+ {
+ "name": "startStagingSetup",
+ "status": "unfinished"
+ },
+ {
+ "name": "endStagingSetup",
+ "status": "unfinished"
+ },
+ {
+ "name": "deployReal",
+ "status": "unfinished"
+ },
+ {
+ "name": "installReal",
+ "status": "unfinished"
+ },
+ {
+ "name": "startTests",
+ "status": "unfinished"
+ },
+ {
+ "name": "endTests",
+ "status": "unfinished"
+ },
+ {
+ "name": "copyVespaLogs",
+ "status": "succeeded"
+ },
+ {
+ "name": "deactivateReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "deactivateTester",
+ "status": "succeeded"
+ },
+ {
+ "name": "report",
+ "status": "succeeded"
+ }
+ ]
+ }
+ ]
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/staging-test-log.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/staging-test-log.json
index 2cf846ab6bb..0525f059dd0 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/staging-test-log.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/staging-test-log.json
@@ -59,6 +59,21 @@
"at": 14503000,
"type": "info",
"message": "--- container on port 43 has config generation 1, wanted is 2"
+ },
+ {
+ "at": 14503000,
+ "type": "info",
+ "message": "host-tenant:application:default-t-staging.us-east-3: unorchestrated"
+ },
+ {
+ "at": 14503000,
+ "type": "info",
+ "message": "--- platform vespa/vespa:6.1"
+ },
+ {
+ "at": 14503000,
+ "type": "info",
+ "message": "--- container on port 43 has config generation 1, wanted is 2"
}
],
"deployInitialReal": [
@@ -102,6 +117,21 @@
{
"at": 14503000,
"type": "info",
+ "message": "host-tenant:application:default-staging.us-east-3: unorchestrated"
+ },
+ {
+ "at": 14503000,
+ "type": "info",
+ "message": "--- platform vespa/vespa:6.1"
+ },
+ {
+ "at": 14503000,
+ "type": "info",
+ "message": "--- container on port 43 has config generation 1, wanted is 2"
+ },
+ {
+ "at": 14503000,
+ "type": "info",
"message": "Deployment expired before installation was successful."
}
],
@@ -120,7 +150,7 @@
}
]
},
- "lastId": 21,
+ "lastId": 27,
"steps": {
"deployTester": {
"status": "succeeded",
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-details.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-details.json
index 342db367807..7ee3952a8b5 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-details.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-details.json
@@ -78,6 +78,21 @@
{
"at": "(ignore)",
"type": "info",
+ "message": "--- container on port 43 has config generation 1, wanted is 2"
+ },
+ {
+ "at": "(ignore)",
+ "type": "info",
+ "message": "host-tenant1:application1:instance1-t-test.us-east-1: unorchestrated"
+ },
+ {
+ "at": "(ignore)",
+ "type": "info",
+ "message": "--- platform vespa/vespa:6.1"
+ },
+ {
+ "at": "(ignore)",
+ "type": "info",
"message": "Tester container successfully installed!"
}
],
@@ -197,6 +212,21 @@
{
"at": "(ignore)",
"type": "info",
+ "message": "host-tenant1:application1:instance1-test.us-east-1: unorchestrated"
+ },
+ {
+ "at": "(ignore)",
+ "type": "info",
+ "message": "--- platform vespa/vespa:6.1"
+ },
+ {
+ "at": "(ignore)",
+ "type": "info",
+ "message": "--- container on port 43 has config generation 1, wanted is 2"
+ },
+ {
+ "at": "(ignore)",
+ "type": "info",
"message": "Found endpoints:"
},
{
@@ -264,7 +294,7 @@
}
]
},
- "lastId": 48,
+ "lastId": 54,
"steps": {
"deployTester": {
"status": "succeeded",
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-log.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-log.json
index 2f5e93ea3a0..7f59eaf75c2 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-log.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/system-test-log.json
@@ -73,6 +73,21 @@
{
"at": 0,
"type": "info",
+ "message": "--- container on port 43 has config generation 1, wanted is 2"
+ },
+ {
+ "at": 0,
+ "type": "info",
+ "message": "host-tenant:application:default-t-test.us-east-1: unorchestrated"
+ },
+ {
+ "at": 0,
+ "type": "info",
+ "message": "--- platform vespa/vespa:6.1"
+ },
+ {
+ "at": 0,
+ "type": "info",
"message": "Tester container successfully installed!"
}
],
@@ -192,6 +207,21 @@
{
"at": 0,
"type": "info",
+ "message": "host-tenant:application:default-test.us-east-1: unorchestrated"
+ },
+ {
+ "at": 0,
+ "type": "info",
+ "message": "--- platform vespa/vespa:6.1"
+ },
+ {
+ "at": 0,
+ "type": "info",
+ "message": "--- container on port 43 has config generation 1, wanted is 2"
+ },
+ {
+ "at": 0,
+ "type": "info",
"message": "Found endpoints:"
},
{
@@ -259,7 +289,7 @@
}
]
},
- "lastId": 48,
+ "lastId": 54,
"steps": {
"deployTester": {
"status": "succeeded",
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/tenant1-deleted.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/tenant1-deleted.json
new file mode 100644
index 00000000000..1c4b76932ac
--- /dev/null
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/tenant1-deleted.json
@@ -0,0 +1,9 @@
+{
+ "tenant": "tenant1",
+ "type": "DELETED",
+ "applications": [],
+ "metaData": {
+ "createdAtMillis": "(ignore)",
+ "deletedAtMillis": "(ignore)"
+ }
+}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandlerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandlerTest.java
index 3d159422396..3c4ed8bc8df 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandlerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.billing;
import com.yahoo.config.provision.SystemName;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/ChangeManagementApiHandlerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/ChangeManagementApiHandlerTest.java
index 80cee3af58b..ea2c303d3f6 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/ChangeManagementApiHandlerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/ChangeManagementApiHandlerTest.java
@@ -1,24 +1,18 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.changemanagement;
import com.yahoo.application.container.handler.Request;
-import com.yahoo.config.provision.HostName;
+import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.athenz.api.AthenzIdentity;
import com.yahoo.vespa.athenz.api.AthenzUser;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeMembership;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeOwner;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeRepositoryNode;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeState;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeType;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.ChangeRequest;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.ChangeRequestSource;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.HostAction;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.VespaChangeRequest;
import com.yahoo.vespa.hosted.controller.restapi.ContainerTester;
import com.yahoo.vespa.hosted.controller.restapi.ControllerContainerTest;
-import org.intellij.lang.annotations.Language;
import org.junit.Before;
import org.junit.Test;
@@ -42,8 +36,7 @@ public class ChangeManagementApiHandlerTest extends ControllerContainerTest {
public void before() {
tester = new ContainerTester(container, responses);
addUserToHostedOperatorRole(operator);
- tester.serviceRegistry().configServer().nodeRepository().addNodes(ZoneId.from("prod.us-east-3"), createNodes());
- tester.serviceRegistry().configServer().nodeRepository().putNodes(ZoneId.from("prod.us-east-3"), createNode());
+ tester.serviceRegistry().configServer().nodeRepository().putNodes(ZoneId.from("prod.us-east-3"), createNodes());
tester.controller().curator().writeChangeRequest(createChangeRequest());
}
@@ -85,23 +78,11 @@ public class ChangeManagementApiHandlerTest extends ControllerContainerTest {
assertEquals(VespaChangeRequest.Status.COMPLETED, changeRequest.getStatus());
}
- private void assertResponse(Request request, @Language("JSON") String body, int statusCode) {
- addIdentityToRequest(request, operator);
- tester.assertResponse(request, body, statusCode);
- }
-
private void assertFile(Request request, String filename) {
addIdentityToRequest(request, operator);
tester.assertResponse(request, new File(filename));
}
- private Node createNode() {
- return new Node.Builder()
- .hostname(HostName.from("host1"))
- .switchHostname("switch1")
- .build();
- }
-
private VespaChangeRequest createChangeRequest() {
var instant = Instant.ofEpochMilli(9001);
var date = ZonedDateTime.ofInstant(instant, java.time.ZoneId.of("UTC"));
@@ -124,8 +105,8 @@ public class ChangeManagementApiHandlerTest extends ControllerContainerTest {
);
}
- private List<NodeRepositoryNode> createNodes() {
- List<NodeRepositoryNode> nodes = new ArrayList<>();
+ private List<Node> createNodes() {
+ List<Node> nodes = new ArrayList<>();
nodes.add(createNode("node1", "host1", "default", 0 ));
nodes.add(createNode("node2", "host1", "default", 0 ));
nodes.add(createNode("node3", "host1", "default", 0 ));
@@ -135,44 +116,27 @@ public class ChangeManagementApiHandlerTest extends ControllerContainerTest {
return nodes;
}
- private NodeOwner createOwner() {
- NodeOwner owner = new NodeOwner();
- owner.tenant = "mytenant";
- owner.application = "myapp";
- owner.instance = "default";
- return owner;
- }
-
- private NodeMembership createMembership(String clusterId, int group) {
- NodeMembership membership = new NodeMembership();
- membership.group = "" + group;
- membership.clusterid = clusterId;
- membership.clustertype = "content";
- membership.index = 2;
- membership.retired = false;
- return membership;
- }
-
- private NodeRepositoryNode createNode(String nodename, String hostname, String clusterId, int group) {
- NodeRepositoryNode node = new NodeRepositoryNode();
- node.setHostname(nodename);
- node.setParentHostname(hostname);
- node.setState(NodeState.active);
- node.setOwner(createOwner());
- node.setMembership(createMembership(clusterId, group));
- node.setType(NodeType.tenant);
-
- return node;
+ private Node createNode(String nodename, String hostname, String clusterId, int group) {
+ return Node.builder()
+ .hostname(nodename)
+ .parentHostname(hostname).state(Node.State.active)
+ .owner(ApplicationId.from("mytenant", "myapp", "default"))
+ .type(com.yahoo.config.provision.NodeType.tenant)
+ .clusterId(clusterId)
+ .group(String.valueOf(group))
+ .clusterType(Node.ClusterType.content)
+ .build();
}
- private NodeRepositoryNode createHost(String hostname, String switchName) {
- NodeRepositoryNode node = new NodeRepositoryNode();
- node.setHostname(hostname);
- node.setSwitchHostname(switchName);
- node.setOwner(createOwner());
- node.setType(NodeType.host);
- node.setMembership(createMembership("host", 0));
- return node;
+ private Node createHost(String hostname, String switchName) {
+ return Node.builder()
+ .hostname(hostname)
+ .switchHostname(switchName)
+ .owner(ApplicationId.from("mytenant", "myapp", "default"))
+ .type(com.yahoo.config.provision.NodeType.host)
+ .clusterId("host")
+ .group("0")
+ .build();
}
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiTest.java
index fc83c58cc67..7bc01de2053 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.controller;
import com.yahoo.application.container.handler.Request;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/maintenance.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/maintenance.json
index 668baa50cc1..2edf1867fd3 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/maintenance.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/maintenance.json
@@ -16,7 +16,7 @@
"name": "ChangeRequestMaintainer"
},
{
- "name": "CloudEventReporter"
+ "name": "CloudEventTracker"
},
{
"name": "CloudTrialExpirer"
@@ -100,7 +100,10 @@
"name": "Upgrader"
},
{
- "name": "VCMRMaintainer"
+ "name": "UserManagementMaintainer"
+ },
+ {
+ "name": "VcmrMaintainer"
},
{
"name": "VersionStatusUpdater"
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/BadgeApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/BadgeApiTest.java
index 63474ebb7c9..438da66e6e8 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/BadgeApiTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/BadgeApiTest.java
@@ -3,7 +3,7 @@ package com.yahoo.vespa.hosted.controller.restapi.deployment;
import com.yahoo.vespa.hosted.controller.ControllerTester;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.deployment.ApplicationPackageBuilder;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentTester;
import com.yahoo.vespa.hosted.controller.restapi.ContainerTester;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiTest.java
index cd24ec170c5..460afb102d9 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiTest.java
@@ -7,7 +7,7 @@ import com.yahoo.config.provision.HostName;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.ControllerTester;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.deployment.ApplicationPackageBuilder;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentTester;
import com.yahoo.vespa.hosted.controller.restapi.ContainerTester;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/filter/ControllerAuthorizationFilterTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/filter/ControllerAuthorizationFilterTest.java
index c95691fc120..9e17b44c9a6 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/filter/ControllerAuthorizationFilterTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/filter/ControllerAuthorizationFilterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.filter;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/filter/LastLoginUpdateFilterTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/filter/LastLoginUpdateFilterTest.java
index 5bf7b03295f..407d9f8765c 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/filter/LastLoginUpdateFilterTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/filter/LastLoginUpdateFilterTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.filter;
import com.yahoo.application.container.handler.Request;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/horizon/HorizonApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/horizon/HorizonApiTest.java
new file mode 100644
index 00000000000..b2b5b2286f7
--- /dev/null
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/horizon/HorizonApiTest.java
@@ -0,0 +1,64 @@
+package com.yahoo.vespa.hosted.controller.restapi.horizon;
+
+import com.yahoo.config.provision.SystemName;
+import com.yahoo.config.provision.TenantName;
+import com.yahoo.vespa.flags.Flags;
+import com.yahoo.vespa.flags.InMemoryFlagSource;
+import com.yahoo.vespa.hosted.controller.api.role.Role;
+import com.yahoo.vespa.hosted.controller.restapi.ContainerTester;
+import com.yahoo.vespa.hosted.controller.restapi.ControllerContainerCloudTest;
+import org.junit.Test;
+
+import java.util.Set;
+
+/**
+ * @author olaa
+ */
+public class HorizonApiTest extends ControllerContainerCloudTest {
+
+ @Test
+ public void only_operators_and_flag_enabled_tenants_allowed() {
+ ContainerTester tester = new ContainerTester(container, "");
+ TenantName tenantName = TenantName.defaultName();
+
+ tester.assertResponse(request("/horizon/v1/config/dashboard/topFolders")
+ .roles(Set.of(Role.hostedOperator())),
+ "", 200);
+
+ tester.assertResponse(request("/horizon/v1/config/dashboard/topFolders")
+ .roles(Set.of(Role.reader(tenantName))),
+ "{\"error-code\":\"FORBIDDEN\",\"message\":\"No tenant with enabled metrics view\"}", 403);
+
+ ((InMemoryFlagSource) tester.controller().flagSource())
+ .withBooleanFlag(Flags.ENABLED_HORIZON_DASHBOARD.id(), true);
+
+ tester.assertResponse(request("/horizon/v1/config/dashboard/topFolders")
+ .roles(Set.of(Role.reader(tenantName))),
+ "", 200);
+ }
+
+ @Override
+ protected SystemName system() {
+ return SystemName.PublicCd;
+ }
+
+ @Override
+ protected String variablePartXml() {
+ return " <component id='com.yahoo.vespa.hosted.controller.security.CloudAccessControlRequests'/>\n" +
+ " <component id='com.yahoo.vespa.hosted.controller.security.CloudAccessControl'/>\n" +
+
+ " <handler id=\"com.yahoo.vespa.hosted.controller.restapi.horizon.HorizonApiHandler\" bundle=\"controller-server\">\n" +
+ " <binding>http://*/horizon/v1/*</binding>\n" +
+ " </handler>\n" +
+
+ " <http>\n" +
+ " <server id='default' port='8080' />\n" +
+ " <filtering>\n" +
+ " <request-chain id='default'>\n" +
+ " <filter id='com.yahoo.vespa.hosted.controller.restapi.filter.ControllerAuthorizationFilter'/>\n" +
+ " <binding>http://*/*</binding>\n" +
+ " </request-chain>\n" +
+ " </filtering>\n" +
+ " </http>\n";
+ }
+} \ No newline at end of file
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/horizon/TsdbQueryRewriterTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/horizon/TsdbQueryRewriterTest.java
index ab9d50f8eae..d31d9c28c6c 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/horizon/TsdbQueryRewriterTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/horizon/TsdbQueryRewriterTest.java
@@ -22,33 +22,28 @@ public class TsdbQueryRewriterTest {
@Test
public void rewrites_query() throws IOException {
- assertRewrite("filters-complex.json", "filters-complex.expected.json", Role.reader(TenantName.from("tenant2")));
+ assertRewrite("filters-complex.json", "filters-complex.expected.json", Set.of(TenantName.from("tenant2")), false);
assertRewrite("filter-in-execution-graph.json",
"filter-in-execution-graph.expected.json",
- Role.reader(TenantName.from("tenant2")), Role.athenzTenantAdmin(TenantName.from("tenant3")));
+ Set.of(TenantName.from("tenant2"), TenantName.from("tenant3")), false);
assertRewrite("filter-in-execution-graph.json",
"filter-in-execution-graph.expected.operator.json",
- Role.reader(TenantName.from("tenant2")), Role.athenzTenantAdmin(TenantName.from("tenant3")), Role.hostedOperator());
+ Set.of(TenantName.from("tenant2"), TenantName.from("tenant3")), true);
assertRewrite("no-filters.json",
"no-filters.expected.json",
- Role.reader(TenantName.from("tenant2")), Role.athenzTenantAdmin(TenantName.from("tenant3")));
+ Set.of(TenantName.from("tenant2"), TenantName.from("tenant3")), false);
assertRewrite("filters-meta-query.json",
"filters-meta-query.expected.json",
- Role.reader(TenantName.from("tenant2")), Role.athenzTenantAdmin(TenantName.from("tenant3")));
+ Set.of(TenantName.from("tenant2"), TenantName.from("tenant3")), false);
}
- @Test(expected = TsdbQueryRewriter.UnauthorizedException.class)
- public void throws_if_no_roles() throws IOException {
- assertRewrite("filters-complex.json", "filters-complex.expected.json");
- }
-
- private static void assertRewrite(String initialFilename, String expectedFilename, Role... roles) throws IOException {
+ private static void assertRewrite(String initialFilename, String expectedFilename, Set<TenantName> tenants, boolean operator) throws IOException {
byte[] data = Files.readAllBytes(Paths.get("src/test/resources/horizon", initialFilename));
- data = TsdbQueryRewriter.rewrite(data, Set.of(roles), SystemName.Public);
+ data = TsdbQueryRewriter.rewrite(data, tenants, operator, SystemName.Public);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
new JsonFormat(false).encode(baos, SlimeUtils.jsonToSlime(data));
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/os/OsApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/os/OsApiTest.java
index 7364723f5f0..90685980835 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/os/OsApiTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/os/OsApiTest.java
@@ -10,6 +10,7 @@ import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.athenz.api.AthenzIdentity;
import com.yahoo.vespa.athenz.api.AthenzUser;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.application.SystemApplication;
import com.yahoo.vespa.hosted.controller.integration.NodeRepositoryMock;
import com.yahoo.vespa.hosted.controller.integration.ZoneApiMock;
@@ -140,9 +141,9 @@ public class OsApiTest extends ControllerContainerTest {
for (ZoneId zone : zones) {
for (SystemApplication application : SystemApplication.all()) {
var targetVersion = nodeRepository().targetVersionsOf(zone).osVersion(application.nodeType());
- for (Node node : nodeRepository().list(zone, application.id())) {
+ for (Node node : nodeRepository().list(zone, NodeFilter.all().applications(application.id()))) {
var version = targetVersion.orElse(node.wantedOsVersion());
- nodeRepository().putNodes(zone, new Node.Builder(node).currentOsVersion(version).wantedOsVersion(version).build());
+ nodeRepository().putNodes(zone, Node.builder(node).currentOsVersion(version).wantedOsVersion(version).build());
}
}
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/routing/RoutingApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/routing/RoutingApiTest.java
index b1bd7df059c..42c9b5bdf4f 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/routing/RoutingApiTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/routing/RoutingApiTest.java
@@ -362,4 +362,19 @@ public class RoutingApiTest extends ControllerContainerTest {
400);
}
+ @Test
+ public void endpoints_list() {
+ var context = deploymentTester.newDeploymentContext("t1", "a1", "default");
+ var westZone = ZoneId.from("prod", "us-west-1");
+ var eastZone = ZoneId.from("prod", "us-east-3");
+ var applicationPackage = new ApplicationPackageBuilder()
+ .region(westZone.region())
+ .region(eastZone.region())
+ .endpoint("default", "default", eastZone.region().value(), westZone.region().value())
+ .build();
+ context.submit(applicationPackage).deploy();
+
+ tester.assertResponse(operatorRequest("http://localhost:8080/routing/v1/status/tenant/t1/application/a1/instance/default/endpoint", "", Request.Method.GET),
+ new File("endpoint/endpoints.json"));
+ }
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/routing/responses/endpoint/endpoints.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/routing/responses/endpoint/endpoints.json
new file mode 100644
index 00000000000..f78f913cb7e
--- /dev/null
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/routing/responses/endpoint/endpoints.json
@@ -0,0 +1,31 @@
+{
+ "endpoints": [
+ {
+ "name": "default",
+ "dnsName": "a1--t1.global.vespa.oath.cloud",
+ "routingMethod": "shared",
+ "cluster": "default",
+ "scope": "global",
+ "zones": [
+ {
+ "routingMethod": "shared",
+ "instance": "t1:a1:default",
+ "environment": "prod",
+ "region": "us-east-3",
+ "status": "in",
+ "agent": "unknown",
+ "changedAt": 1497618757000
+ },
+ {
+ "routingMethod": "shared",
+ "instance": "t1:a1:default",
+ "environment": "prod",
+ "region": "us-west-1",
+ "status": "in",
+ "agent": "unknown",
+ "changedAt": 1497618757000
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/systemflags/SystemFlagsDeployerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/systemflags/SystemFlagsDeployerTest.java
index 35a13cdeeec..549dd1ed253 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/systemflags/SystemFlagsDeployerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/systemflags/SystemFlagsDeployerTest.java
@@ -166,8 +166,8 @@ public class SystemFlagsDeployerTest {
.build();
SystemFlagsDeployer deployer = new SystemFlagsDeployer(flagsClient, SYSTEM, Set.of(prodUsEast3Target));
SystemFlagsDeployResult result = deployer.deployFlags(archive, true);
- assertThat(result.warnings())
- .containsOnly(SystemFlagsDeployResult.Warning.dataForUndefinedFlag(prodUsEast3Target, new FlagId("my-flag")));
+ assertThat(result.errors())
+ .containsOnly(OperationError.dataForUndefinedFlag(prodUsEast3Target, new FlagId("my-flag")));
}
private static FlagData flagData(String filename) throws IOException {
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiOnPremTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiOnPremTest.java
index acd481030e2..c884eae8afc 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiOnPremTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiOnPremTest.java
@@ -5,6 +5,8 @@ import com.yahoo.application.container.handler.Request;
import com.yahoo.vespa.athenz.api.AthenzDomain;
import com.yahoo.vespa.athenz.api.AthenzIdentity;
import com.yahoo.vespa.athenz.utils.AthenzIdentities;
+import com.yahoo.vespa.flags.Flags;
+import com.yahoo.vespa.flags.PermanentFlags;
import com.yahoo.vespa.hosted.controller.ControllerTester;
import com.yahoo.vespa.hosted.controller.api.integration.user.User;
import com.yahoo.vespa.hosted.controller.restapi.ContainerTester;
@@ -25,40 +27,42 @@ public class UserApiOnPremTest extends ControllerContainerTest {
@Test
public void userMetadataOnPremTest() {
- ContainerTester tester = new ContainerTester(container, responseFiles);
- ControllerTester controller = new ControllerTester(tester);
- User user = new User("dev@domail", "Joe Developer", "dev", null);
+ try (Flags.Replacer ignored = Flags.clearFlagsForTesting(PermanentFlags.MAX_TRIAL_TENANTS.id(), PermanentFlags.ENABLE_PUBLIC_SIGNUP_FLOW.id())) {
+ ContainerTester tester = new ContainerTester(container, responseFiles);
+ ControllerTester controller = new ControllerTester(tester);
+ User user = new User("dev@domail", "Joe Developer", "dev", null);
- controller.createTenant("tenant1", "domain1", 1L);
- controller.createApplication("tenant1", "app1", "default");
- controller.createApplication("tenant1", "app2", "default");
- controller.createApplication("tenant1", "app2", "myinstance");
- controller.createApplication("tenant1", "app3");
+ controller.createTenant("tenant1", "domain1", 1L);
+ controller.createApplication("tenant1", "app1", "default");
+ controller.createApplication("tenant1", "app2", "default");
+ controller.createApplication("tenant1", "app2", "myinstance");
+ controller.createApplication("tenant1", "app3");
- controller.createTenant("tenant2", "domain2", 2L);
- controller.createApplication("tenant2", "app2", "test");
+ controller.createTenant("tenant2", "domain2", 2L);
+ controller.createApplication("tenant2", "app2", "test");
- controller.createTenant("tenant3", "domain3", 3L);
- controller.createApplication("tenant3", "app1");
+ controller.createTenant("tenant3", "domain3", 3L);
+ controller.createApplication("tenant3", "app1");
- controller.createTenant("sandbox", "domain4", 4L);
- controller.createApplication("sandbox", "app1", "default");
- controller.createApplication("sandbox", "app2", "default");
- controller.createApplication("sandbox", "app2", "dev");
+ controller.createTenant("sandbox", "domain4", 4L);
+ controller.createApplication("sandbox", "app1", "default");
+ controller.createApplication("sandbox", "app2", "default");
+ controller.createApplication("sandbox", "app2", "dev");
- AthenzIdentity operator = AthenzIdentities.from("vespa.alice");
- controller.athenzDb().addHostedOperator(operator);
- AthenzIdentity tenantAdmin = AthenzIdentities.from("domain1.bob");
- Stream.of("domain1", "domain2", "domain4")
- .map(AthenzDomain::new)
- .map(controller.athenzDb()::getOrCreateDomain)
- .forEach(d -> d.admin(AthenzIdentities.from("domain1.bob")));
+ AthenzIdentity operator = AthenzIdentities.from("vespa.alice");
+ controller.athenzDb().addHostedOperator(operator);
+ AthenzIdentity tenantAdmin = AthenzIdentities.from("domain1.bob");
+ Stream.of("domain1", "domain2", "domain4")
+ .map(AthenzDomain::new)
+ .map(controller.athenzDb()::getOrCreateDomain)
+ .forEach(d -> d.admin(AthenzIdentities.from("domain1.bob")));
- tester.assertResponse(createUserRequest(user, operator),
- new File("user-without-applications.json"));
+ tester.assertResponse(createUserRequest(user, operator),
+ new File("user-without-applications.json"));
- tester.assertResponse(createUserRequest(user, tenantAdmin),
- new File("user-with-applications-athenz.json"));
+ tester.assertResponse(createUserRequest(user, tenantAdmin),
+ new File("user-with-applications-athenz.json"));
+ }
}
private Request createUserRequest(User user, AthenzIdentity identity) {
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiTest.java
index 03f1d75a50b..9198369a3ad 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiTest.java
@@ -4,6 +4,7 @@ package com.yahoo.vespa.hosted.controller.restapi.user;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.SystemName;
import com.yahoo.config.provision.TenantName;
+import com.yahoo.vespa.flags.Flags;
import com.yahoo.vespa.flags.InMemoryFlagSource;
import com.yahoo.vespa.flags.PermanentFlags;
import com.yahoo.vespa.hosted.controller.ControllerTester;
@@ -205,65 +206,68 @@ public class UserApiTest extends ControllerContainerCloudTest {
@Test
public void userMetadataTest() {
- ContainerTester tester = new ContainerTester(container, responseFiles);
- ((InMemoryFlagSource) tester.controller().flagSource())
- .withBooleanFlag(PermanentFlags.ENABLE_PUBLIC_SIGNUP_FLOW.id(), true);
- ControllerTester controller = new ControllerTester(tester);
- Set<Role> operator = Set.of(Role.hostedOperator(), Role.hostedSupporter(), Role.hostedAccountant());
- User user = new User("dev@domail", "Joe Developer", "dev", null);
-
- tester.assertResponse(request("/user/v1/user")
- .roles(operator)
- .user(user),
- new File("user-without-applications.json"));
-
- controller.createTenant("tenant1", Tenant.Type.cloud);
- controller.createApplication("tenant1", "app1", "default");
- controller.createApplication("tenant1", "app2", "default");
- controller.createApplication("tenant1", "app2", "myinstance");
- controller.createApplication("tenant1", "app3");
-
- controller.createTenant("tenant2", Tenant.Type.cloud);
- controller.createApplication("tenant2", "app2", "test");
-
- controller.createTenant("tenant3", Tenant.Type.cloud);
- controller.createApplication("tenant3", "app1");
-
- controller.createTenant("sandbox", Tenant.Type.cloud);
- controller.createApplication("sandbox", "app1", "default");
- controller.createApplication("sandbox", "app2", "default");
- controller.createApplication("sandbox", "app2", "dev");
-
- // Should still be empty because none of the roles explicitly refer to any of the applications
- tester.assertResponse(request("/user/v1/user")
- .roles(operator)
- .user(user),
- new File("user-without-applications.json"));
-
- // Empty applications because tenant dummy does not exist
- tester.assertResponse(request("/user/v1/user")
- .roles(Set.of(Role.administrator(TenantName.from("tenant1")),
- Role.developer(TenantName.from("tenant2")),
- Role.developer(TenantName.from("sandbox")),
- Role.reader(TenantName.from("sandbox"))))
- .user(user),
- new File("user-with-applications-cloud.json"));
+ try (Flags.Replacer ignored = Flags.clearFlagsForTesting(PermanentFlags.MAX_TRIAL_TENANTS.id(), PermanentFlags.ENABLE_PUBLIC_SIGNUP_FLOW.id())) {
+ ContainerTester tester = new ContainerTester(container, responseFiles);
+ ((InMemoryFlagSource) tester.controller().flagSource())
+ .withBooleanFlag(PermanentFlags.ENABLE_PUBLIC_SIGNUP_FLOW.id(), true);
+ ControllerTester controller = new ControllerTester(tester);
+ Set<Role> operator = Set.of(Role.hostedOperator(), Role.hostedSupporter(), Role.hostedAccountant());
+ User user = new User("dev@domail", "Joe Developer", "dev", null);
+
+ tester.assertResponse(request("/user/v1/user")
+ .roles(operator)
+ .user(user),
+ new File("user-without-applications.json"));
+
+ controller.createTenant("tenant1", Tenant.Type.cloud);
+ controller.createApplication("tenant1", "app1", "default");
+ controller.createApplication("tenant1", "app2", "default");
+ controller.createApplication("tenant1", "app2", "myinstance");
+ controller.createApplication("tenant1", "app3");
+
+ controller.createTenant("tenant2", Tenant.Type.cloud);
+ controller.createApplication("tenant2", "app2", "test");
+
+ controller.createTenant("tenant3", Tenant.Type.cloud);
+ controller.createApplication("tenant3", "app1");
+
+ controller.createTenant("sandbox", Tenant.Type.cloud);
+ controller.createApplication("sandbox", "app1", "default");
+ controller.createApplication("sandbox", "app2", "default");
+ controller.createApplication("sandbox", "app2", "dev");
+
+ // Should still be empty because none of the roles explicitly refer to any of the applications
+ tester.assertResponse(request("/user/v1/user")
+ .roles(operator)
+ .user(user),
+ new File("user-without-applications.json"));
+
+ // Empty applications because tenant dummy does not exist
+ tester.assertResponse(request("/user/v1/user")
+ .roles(Set.of(Role.administrator(TenantName.from("tenant1")),
+ Role.developer(TenantName.from("tenant2")),
+ Role.developer(TenantName.from("sandbox")),
+ Role.reader(TenantName.from("sandbox"))))
+ .user(user),
+ new File("user-with-applications-cloud.json"));
+ }
}
@Test
public void maxTrialTenants() {
- ContainerTester tester = new ContainerTester(container, responseFiles);
- ((InMemoryFlagSource) tester.controller().flagSource())
- .withIntFlag(PermanentFlags.MAX_TRIAL_TENANTS.id(), 1)
- .withBooleanFlag(PermanentFlags.ENABLE_PUBLIC_SIGNUP_FLOW.id(), true);
- ControllerTester controller = new ControllerTester(tester);
- Set<Role> operator = Set.of(Role.hostedOperator(), Role.hostedSupporter(), Role.hostedAccountant());
- User user = new User("dev@domail", "Joe Developer", "dev", null);
-
- controller.createTenant("tenant1", Tenant.Type.cloud);
-
- tester.assertResponse(
- request("/user/v1/user").user(user),
- new File("user-without-trial-capacity-cloud.json"));
+ try (Flags.Replacer ignored = Flags.clearFlagsForTesting(PermanentFlags.MAX_TRIAL_TENANTS.id(), PermanentFlags.ENABLE_PUBLIC_SIGNUP_FLOW.id())) {
+ ContainerTester tester = new ContainerTester(container, responseFiles);
+ ((InMemoryFlagSource) tester.controller().flagSource())
+ .withIntFlag(PermanentFlags.MAX_TRIAL_TENANTS.id(), 1)
+ .withBooleanFlag(PermanentFlags.ENABLE_PUBLIC_SIGNUP_FLOW.id(), true);
+ ControllerTester controller = new ControllerTester(tester);
+ User user = new User("dev@domail", "Joe Developer", "dev", null);
+
+ controller.createTenant("tenant1", Tenant.Type.cloud);
+
+ tester.assertResponse(
+ request("/user/v1/user").user(user),
+ new File("user-without-trial-capacity-cloud.json"));
+ }
}
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/UserFlagsSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/UserFlagsSerializerTest.java
new file mode 100644
index 00000000000..8625628b74e
--- /dev/null
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/UserFlagsSerializerTest.java
@@ -0,0 +1,133 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.controller.restapi.user;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.yahoo.config.provision.TenantName;
+import com.yahoo.slime.Slime;
+import com.yahoo.slime.SlimeUtils;
+import com.yahoo.test.json.JsonTestHelper;
+import com.yahoo.vespa.flags.FetchVector;
+import com.yahoo.vespa.flags.FlagId;
+import com.yahoo.vespa.flags.Flags;
+import com.yahoo.vespa.flags.JsonNodeRawFlag;
+import com.yahoo.vespa.flags.json.Condition;
+import com.yahoo.vespa.flags.json.FlagData;
+import com.yahoo.vespa.flags.json.Rule;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import static com.yahoo.vespa.flags.FetchVector.Dimension.APPLICATION_ID;
+import static com.yahoo.vespa.flags.FetchVector.Dimension.CONSOLE_USER_EMAIL;
+import static com.yahoo.vespa.flags.FetchVector.Dimension.TENANT_ID;
+
+/**
+ * @author freva
+ */
+public class UserFlagsSerializerTest {
+
+ @Test
+ public void user_flag_test() throws IOException {
+ String email1 = "alice@domain.tld";
+ String email2 = "bob@domain.tld";
+
+ try (Flags.Replacer ignored = Flags.clearFlagsForTesting()) {
+ Flags.defineStringFlag("string-id", "default value", List.of("owner"), "1970-01-01", "2100-01-01", "desc", "mod", CONSOLE_USER_EMAIL);
+ Flags.defineIntFlag("int-id", 123, List.of("owner"), "1970-01-01", "2100-01-01", "desc", "mod", CONSOLE_USER_EMAIL, TENANT_ID, APPLICATION_ID);
+ Flags.defineDoubleFlag("double-id", 3.14d, List.of("owner"), "1970-01-01", "2100-01-01", "desc", "mod");
+ Flags.defineListFlag("list-id", List.of("a"), String.class, List.of("owner"), "1970-01-01", "2100-01-01", "desc", "mod", CONSOLE_USER_EMAIL);
+ Flags.defineJacksonFlag("jackson-id", new ExampleJacksonClass(123, "abc"), ExampleJacksonClass.class,
+ List.of("owner"), "1970-01-01", "2100-01-01", "desc", "mod", CONSOLE_USER_EMAIL, TENANT_ID);
+
+ Map<FlagId, FlagData> flagData = Stream.of(
+ flagData("string-id", rule("\"value1\"", condition(CONSOLE_USER_EMAIL, Condition.Type.WHITELIST, email1))),
+ flagData("int-id", rule("456")),
+ flagData("list-id",
+ rule("[\"value1\"]", condition(CONSOLE_USER_EMAIL, Condition.Type.WHITELIST, email1), condition(APPLICATION_ID, Condition.Type.BLACKLIST, "tenant1:video:default", "tenant1:video:default", "tenant2:music:default")),
+ rule("[\"value2\"]", condition(CONSOLE_USER_EMAIL, Condition.Type.WHITELIST, email2)),
+ rule("[\"value1\",\"value3\"]", condition(APPLICATION_ID, Condition.Type.BLACKLIST, "tenant1:video:default", "tenant1:video:default", "tenant2:music:default"))),
+ flagData("jackson-id", rule("{\"integer\":456,\"string\":\"xyz\"}", condition(CONSOLE_USER_EMAIL, Condition.Type.WHITELIST, email1), condition(TENANT_ID, Condition.Type.WHITELIST, "tenant1", "tenant3")))
+ ).collect(Collectors.toMap(FlagData::id, fd -> fd));
+
+ // double-id is not here as it does not have CONSOLE_USER_EMAIL dimension
+ assertUserFlags("{\"flags\":[" +
+ "{\"id\":\"int-id\",\"rules\":[{\"value\":456}]}," + // Default from DB
+ "{\"id\":\"jackson-id\",\"rules\":[{\"conditions\":[{\"type\":\"whitelist\",\"dimension\":\"tenant\"}],\"value\":{\"integer\":456,\"string\":\"xyz\"}},{\"value\":{\"integer\":123,\"string\":\"abc\"}}]}," + // Resolved for email
+ // Resolved for email, but conditions are empty since this user is not authorized for any tenants
+ "{\"id\":\"list-id\",\"rules\":[{\"conditions\":[{\"type\":\"blacklist\",\"dimension\":\"application\"}],\"value\":[\"value1\"]},{\"conditions\":[{\"type\":\"blacklist\",\"dimension\":\"application\"}],\"value\":[\"value1\",\"value3\"]},{\"value\":[\"a\"]}]}," +
+ "{\"id\":\"string-id\",\"rules\":[{\"value\":\"value1\"}]}]}", // resolved for email
+ flagData, Set.of(), false, email1);
+
+ // Same as the first one, but user is authorized for tenant1
+ assertUserFlags("{\"flags\":[" +
+ "{\"id\":\"int-id\",\"rules\":[{\"value\":456}]}," + // Default from DB
+ "{\"id\":\"jackson-id\",\"rules\":[{\"conditions\":[{\"type\":\"whitelist\",\"dimension\":\"tenant\",\"values\":[\"tenant1\"]}],\"value\":{\"integer\":456,\"string\":\"xyz\"}},{\"value\":{\"integer\":123,\"string\":\"abc\"}}]}," + // Resolved for email
+ // Resolved for email, but conditions have filtered out tenant2
+ "{\"id\":\"list-id\",\"rules\":[{\"conditions\":[{\"type\":\"blacklist\",\"dimension\":\"application\",\"values\":[\"tenant1:video:default\",\"tenant1:video:default\"]}],\"value\":[\"value1\"]},{\"conditions\":[{\"type\":\"blacklist\",\"dimension\":\"application\",\"values\":[\"tenant1:video:default\",\"tenant1:video:default\"]}],\"value\":[\"value1\",\"value3\"]},{\"value\":[\"a\"]}]}," +
+ "{\"id\":\"string-id\",\"rules\":[{\"value\":\"value1\"}]}]}", // resolved for email
+ flagData, Set.of("tenant1"), false, email1);
+
+ // As operator no conditions are filtered, but the email precondition is applied
+ assertUserFlags("{\"flags\":[" +
+ "{\"id\":\"int-id\",\"rules\":[{\"value\":456}]}," + // Default from DB
+ "{\"id\":\"jackson-id\",\"rules\":[{\"value\":{\"integer\":123,\"string\":\"abc\"}}]}," + // Default from code, no DB values match
+ // Includes last value from DB which is not conditioned on email and the default from code
+ "{\"id\":\"list-id\",\"rules\":[{\"conditions\":[{\"type\":\"blacklist\",\"dimension\":\"application\",\"values\":[\"tenant1:video:default\",\"tenant1:video:default\",\"tenant2:music:default\"]}],\"value\":[\"value1\",\"value3\"]},{\"value\":[\"a\"]}]}," +
+ "{\"id\":\"string-id\",\"rules\":[{\"value\":\"default value\"}]}]}", // Default from code
+ flagData, Set.of(), true, "operator@domain.tld");
+ }
+ }
+
+ private static FlagData flagData(String id, Rule... rules) {
+ return new FlagData(new FlagId(id), new FetchVector(), rules);
+ }
+
+ private static Rule rule(String data, Condition... conditions) {
+ return new Rule(Optional.ofNullable(data).map(JsonNodeRawFlag::fromJson), conditions);
+ }
+
+ private static Condition condition(FetchVector.Dimension dimension, Condition.Type type, String... values) {
+ return new Condition.CreateParams(dimension).withValues(values).createAs(type);
+ }
+
+ private static void assertUserFlags(String expected, Map<FlagId, FlagData> rawFlagData,
+ Set<String> authorizedForTenantNames, boolean isOperator, String userEmail) throws IOException {
+ Slime slime = new Slime();
+ UserFlagsSerializer.toSlime(slime.setObject(), rawFlagData, authorizedForTenantNames.stream().map(TenantName::from).collect(Collectors.toSet()), isOperator, userEmail);
+ JsonTestHelper.assertJsonEquals(expected,
+ new String(SlimeUtils.toJsonBytes(slime), StandardCharsets.UTF_8));
+ }
+
+ @JsonIgnoreProperties(ignoreUnknown = true)
+ private static class ExampleJacksonClass {
+ @JsonProperty("integer") public final int integer;
+ @JsonProperty("string") public final String string;
+ private ExampleJacksonClass(@JsonProperty("integer") int integer, @JsonProperty("string") String string) {
+ this.integer = integer;
+ this.string = string;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ExampleJacksonClass that = (ExampleJacksonClass) o;
+ return integer == that.integer &&
+ Objects.equals(string, that.string);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(integer, string);
+ }
+ }
+} \ No newline at end of file
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-with-applications-athenz.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-with-applications-athenz.json
index 5d3a38334ad..006c3b98a4d 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-with-applications-athenz.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-with-applications-athenz.json
@@ -1,7 +1,6 @@
{
"isPublic": false,
"isCd": false,
- "enable-public-signup-flow": (ignore),
"hasTrialCapacity": (ignore),
"user": {
"name": "Joe Developer",
@@ -31,5 +30,6 @@
"reader"
]
}
- }
+ },
+ "flags": [{"id":"enable-public-signup-flow","rules":[{"value":false}]}]
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-with-applications-cloud.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-with-applications-cloud.json
index ae3dc68d9e3..4ae55e97baa 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-with-applications-cloud.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-with-applications-cloud.json
@@ -1,7 +1,6 @@
{
"isPublic": true,
"isCd": false,
- "enable-public-signup-flow": (ignore),
"hasTrialCapacity": true,
"user": {
"name": "Joe Developer",
@@ -26,5 +25,6 @@
"developer"
]
}
- }
+ },
+ "flags": [{"id":"enable-public-signup-flow","rules":[{"value":false}]}]
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-without-applications.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-without-applications.json
index 3bf999b490b..9f9578e6ed8 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-without-applications.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-without-applications.json
@@ -1,7 +1,6 @@
{
"isPublic": (ignore),
"isCd": (ignore),
- "enable-public-signup-flow": (ignore),
"hasTrialCapacity": (ignore),
"user": {
"name": "Joe Developer",
@@ -14,5 +13,6 @@
"hostedOperator",
"hostedSupporter",
"hostedAccountant"
- ]
+ ],
+ "flags": [{"id":"enable-public-signup-flow","rules":[{"value":false}]}]
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-without-trial-capacity-cloud.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-without-trial-capacity-cloud.json
index 27242424579..2b98a75068a 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-without-trial-capacity-cloud.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/user/responses/user-without-trial-capacity-cloud.json
@@ -1,7 +1,6 @@
{
"isPublic": true,
"isCd": false,
- "enable-public-signup-flow": true,
"hasTrialCapacity": false,
"user": {
"name": "Joe Developer",
@@ -9,5 +8,6 @@
"nickname": "dev",
"verified":false
},
- "tenants": {}
+ "tenants": {},
+ "flags": [{"id":"enable-public-signup-flow","rules":[{"value":false}]}]
} \ No newline at end of file
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiTest.java
index a8845fa92a3..fcf8402d23c 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.zone.v1;
import com.yahoo.config.provision.Environment;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiTest.java
index a260f4a138b..fd39c13707b 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.zone.v2;
import com.yahoo.application.container.handler.Request.Method;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/rotation/RotationRepositoryTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/rotation/RotationRepositoryTest.java
index aa9775f1d43..910e5943989 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/rotation/RotationRepositoryTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/rotation/RotationRepositoryTest.java
@@ -1,11 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.rotation;
import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.SystemName;
import com.yahoo.config.provision.zone.RoutingMethod;
import com.yahoo.vespa.hosted.controller.ControllerTester;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.AssignedRotation;
import com.yahoo.vespa.hosted.controller.deployment.ApplicationPackageBuilder;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentContext;
@@ -146,10 +146,10 @@ public class RotationRepositoryTest {
public void prefixes_system_when_not_main() {
ApplicationPackage applicationPackage = new ApplicationPackageBuilder()
.globalServiceId("foo")
- .region("cd-us-central-1")
+ .region("cd-us-east-1")
.region("cd-us-west-1")
.build();
- var zones = List.of(ZoneApiMock.fromId("prod.cd-us-central-1"), ZoneApiMock.fromId("prod.cd-us-west-1"));
+ var zones = List.of(ZoneApiMock.fromId("prod.cd-us-east-1"), ZoneApiMock.fromId("prod.cd-us-west-1"));
tester.controllerTester().zoneRegistry()
.setZones(zones)
.setRoutingMethod(zones, RoutingMethod.shared)
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/routing/RoutingPoliciesTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/routing/RoutingPoliciesTest.java
index 79b564eee52..2002b59dc1e 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/routing/RoutingPoliciesTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/routing/RoutingPoliciesTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.routing;
import com.google.common.collect.ImmutableMap;
@@ -24,7 +24,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
import com.yahoo.vespa.hosted.controller.api.integration.dns.Record;
import com.yahoo.vespa.hosted.controller.api.integration.dns.RecordData;
import com.yahoo.vespa.hosted.controller.api.integration.dns.RecordName;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.Endpoint;
import com.yahoo.vespa.hosted.controller.application.EndpointId;
import com.yahoo.vespa.hosted.controller.application.EndpointList;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/tls/Keys.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/tls/Keys.java
index 7d1e540b20d..7a293e661c9 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/tls/Keys.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/tls/Keys.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.tls;
import com.yahoo.security.KeyAlgorithm;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/tls/SecretStoreMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/tls/SecretStoreMock.java
index 6b5fa6503b3..8b5cdefddf8 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/tls/SecretStoreMock.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/tls/SecretStoreMock.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.tls;
import com.google.inject.Inject;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/tls/SecureContainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/tls/SecureContainerTest.java
index c1188778292..de268f34093 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/tls/SecureContainerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/tls/SecureContainerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.tls;
import com.yahoo.application.Networking;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java
index 4dd283cf5d7..a1108d5f03c 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java
@@ -9,9 +9,10 @@ import com.yahoo.config.provision.zone.ZoneApi;
import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.ControllerTester;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeFilter;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobId;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
-import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
+import com.yahoo.vespa.hosted.controller.application.pkg.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.SystemApplication;
import com.yahoo.vespa.hosted.controller.deployment.ApplicationPackageBuilder;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentTester;
@@ -69,8 +70,8 @@ public class VersionStatusTest {
Version version1 = Version.fromString("6.5");
// Upgrade some config servers
for (ZoneApi zone : tester.zoneRegistry().zones().all().zones()) {
- for (Node node : tester.configServer().nodeRepository().list(zone.getId(), SystemApplication.configServer.id())) {
- Node upgradedNode = new Node.Builder(node).currentVersion(version1).build();
+ for (Node node : tester.configServer().nodeRepository().list(zone.getId(), NodeFilter.all().applications(SystemApplication.configServer.id()))) {
+ Node upgradedNode = Node.builder(node).currentVersion(version1).build();
tester.configServer().nodeRepository().putNodes(zone.getId(), upgradedNode);
break;
}
@@ -113,8 +114,8 @@ public class VersionStatusTest {
// Downgrade one config server in each zone
Version ancientVersion = Version.fromString("5.1");
for (ZoneApi zone : tester.controller().zoneRegistry().zones().all().zones()) {
- for (Node node : tester.configServer().nodeRepository().list(zone.getId(), SystemApplication.configServer.id())) {
- Node downgradedNode = new Node.Builder(node).currentVersion(ancientVersion).build();
+ for (Node node : tester.configServer().nodeRepository().list(zone.getId(), NodeFilter.all().applications(SystemApplication.configServer.id()))) {
+ Node downgradedNode = Node.builder(node).currentVersion(ancientVersion).build();
tester.configServer().nodeRepository().putNodes(zone.getId(), downgradedNode);
break;
}
@@ -303,7 +304,7 @@ public class VersionStatusTest {
Confidence.low, confidence(tester.controller(), version2));
// Remaining canary upgrades to version2 which raises confidence to normal and more apps upgrade
- canary2.failDeployment(systemTest);
+ canary2.triggerJobs().jobAborted(systemTest).jobAborted(stagingTest);
canary2.runJob(stagingTest);
canary2.deployPlatform(version2);
tester.controllerTester().computeVersionStatus();
diff --git a/default_build_settings.cmake b/default_build_settings.cmake
index 152a0d3eef3..550cce958fd 100644
--- a/default_build_settings.cmake
+++ b/default_build_settings.cmake
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
include(VespaExtendedDefaultBuildSettings OPTIONAL)
@@ -11,26 +11,26 @@ endfunction()
function(setup_vespa_default_build_settings_rhel_7)
message("-- Setting up default build settings for rhel 7")
set(DEFAULT_EXTRA_LINK_DIRECTORY "${VESPA_DEPS}/lib64" "/usr/lib64/llvm7.0/lib" PARENT_SCOPE)
- set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" "/usr/include/llvm7.0" "/usr/include/openblas" PARENT_SCOPE)
+ set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" "/usr/include/llvm7.0" PARENT_SCOPE)
set(DEFAULT_VESPA_LLVM_VERSION "7" PARENT_SCOPE)
endfunction()
function(setup_vespa_default_build_settings_rhel_8)
message("-- Setting up default build settings for rhel 8")
- set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" "/usr/include/openblas" PARENT_SCOPE)
+ set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" PARENT_SCOPE)
set(DEFAULT_VESPA_LLVM_VERSION "10" PARENT_SCOPE)
endfunction()
function(setup_vespa_default_build_settings_centos_7)
message("-- Setting up default build settings for centos 7")
set(DEFAULT_EXTRA_LINK_DIRECTORY "${VESPA_DEPS}/lib64" "/usr/lib64/llvm7.0/lib" PARENT_SCOPE)
- set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" "/usr/include/llvm7.0" "/usr/include/openblas" PARENT_SCOPE)
+ set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" "/usr/include/llvm7.0" PARENT_SCOPE)
set(DEFAULT_VESPA_LLVM_VERSION "7" PARENT_SCOPE)
endfunction()
function(setup_vespa_default_build_settings_centos_8)
message("-- Setting up default build settings for centos 8")
- set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" "/usr/include/openblas" PARENT_SCOPE)
+ set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" PARENT_SCOPE)
if (VESPA_OS_DISTRO_NAME STREQUAL "CentOS Stream")
set(DEFAULT_VESPA_LLVM_VERSION "12" PARENT_SCOPE)
else()
@@ -40,33 +40,22 @@ endfunction()
function(setup_vespa_default_build_settings_rocky_8_4)
message("-- Setting up default build settings for rocky 8.4")
- set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" "/usr/include/openblas" PARENT_SCOPE)
+ set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" PARENT_SCOPE)
set(DEFAULT_VESPA_LLVM_VERSION "11" PARENT_SCOPE)
endfunction()
function(setup_vespa_default_build_settings_darwin)
message("-- Setting up default build settings for darwin")
- if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
- set(DEFAULT_LLVM_INCLUDE_DIRECTORY "/usr/local/opt/llvm/include")
- set(DEFAULT_LLVM_LINK_DIRECTORY "/usr/local/opt/llvm/lib")
- set(DEFAULT_VESPA_LLVM_VERSION "12" PARENT_SCOPE)
- else()
- set(DEFAULT_VESPA_LLVM_VERSION "12" PARENT_SCOPE)
- endif()
+ set(DEFAULT_VESPA_LLVM_VERSION "12" PARENT_SCOPE)
set(DEFAULT_CMAKE_PREFIX_PATH "${VESPA_DEPS}" "/usr/local/opt/bison" "/usr/local/opt/flex" "/usr/local/opt/openssl@1.1" "/usr/local/opt/openblas" "/usr/local/opt/icu4c" PARENT_SCOPE)
set(DEFAULT_EXTRA_LINK_DIRECTORY "${VESPA_DEPS}/lib" "/usr/local/opt/bison/lib" "/usr/local/opt/flex/lib" "/usr/local/opt/icu4c/lib" "/usr/local/opt/openssl@1.1/lib" "/usr/local/opt/openblas/lib")
- if(DEFINED DEFAULT_LLVM_LINK_DIRECTORY)
- list(APPEND DEFAULT_EXTRA_LINK_DIRECTORY "${DEFAULT_LLVM_LINK_DIRECTORY}")
- endif()
list(APPEND DEFAULT_EXTRA_LINK_DIRECTORY "/usr/local/lib")
set(DEFAULT_EXTRA_LINK_DIRECTORY "${DEFAULT_EXTRA_LINK_DIRECTORY}" PARENT_SCOPE)
set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" "/usr/local/opt/flex/include" "/usr/local/opt/icu4c/include" "/usr/local/opt/openssl@1.1/include" "/usr/local/opt/openblas/include")
- if(DEFINED DEFAULT_LLVM_INCLUDE_DIRECTORY)
- list(APPEND DEFAULT_EXTRA_INCLUDE_DIRECTORY "${DEFAULT_LLVM_INCLUDE_DIRECTORY}")
- endif()
list(APPEND DEFAULT_EXTRA_INCLUDE_DIRECTORY "/usr/local/include")
set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${DEFAULT_EXTRA_INCLUDE_DIRECTORY}" PARENT_SCOPE)
endfunction()
+
function(setup_vespa_default_build_settings_fedora_32)
message("-- Setting up default build settings for fedora 32")
set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" "/usr/include/openblas" PARENT_SCOPE)
@@ -88,13 +77,19 @@ endfunction()
function(setup_vespa_default_build_settings_fedora_35)
message("-- Setting up default build settings for fedora 35")
set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" "/usr/include/openblas" PARENT_SCOPE)
- set(DEFAULT_VESPA_LLVM_VERSION "12" PARENT_SCOPE)
+ set(DEFAULT_VESPA_LLVM_VERSION "13" PARENT_SCOPE)
+endfunction()
+
+function(setup_vespa_default_build_settings_fedora_36)
+ message("-- Setting up default build settings for fedora 36")
+ set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" "/usr/include/openblas" PARENT_SCOPE)
+ set(DEFAULT_VESPA_LLVM_VERSION "13" PARENT_SCOPE)
endfunction()
function(setup_vespa_default_build_settings_amzn_2)
message("-- Setting up default build settings for amzn 2")
set(DEFAULT_EXTRA_LINK_DIRECTORY "${VESPA_DEPS}/lib64" "/usr/lib64/llvm7.0/lib" PARENT_SCOPE)
- set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" "/usr/include/llvm7.0" "/usr/include/openblas" PARENT_SCOPE)
+ set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" "/usr/include/llvm7.0" PARENT_SCOPE)
set(DEFAULT_VESPA_LLVM_VERSION "7" PARENT_SCOPE)
endfunction()
@@ -209,6 +204,8 @@ function(vespa_use_default_build_settings)
setup_vespa_default_build_settings_fedora_34()
elseif(VESPA_OS_DISTRO_COMBINED STREQUAL "fedora 35")
setup_vespa_default_build_settings_fedora_35()
+ elseif(VESPA_OS_DISTRO_COMBINED STREQUAL "fedora 36")
+ setup_vespa_default_build_settings_fedora_36()
elseif(VESPA_OS_DISTRO_COMBINED STREQUAL "amzn 2")
setup_vespa_default_build_settings_amzn_2()
elseif(VESPA_OS_DISTRO STREQUAL "ubuntu")
@@ -238,6 +235,7 @@ function(vespa_use_default_build_settings)
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
if(VESPA_OS_DISTRO STREQUAL "fedora" AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
set(DEFAULT_VESPA_CPU_ARCH_FLAGS "-march=westmere -mtune=haswell")
+ elseif(APPLE AND (("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")))
else()
set(DEFAULT_VESPA_CPU_ARCH_FLAGS "-mtune=intel")
endif()
diff --git a/defaults/CMakeLists.txt b/defaults/CMakeLists.txt
index c42e5402688..da63a1c5e95 100644
--- a/defaults/CMakeLists.txt
+++ b/defaults/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
LIBS
src/vespa
@@ -7,4 +7,4 @@ vespa_define_module(
src/apps/printdefault
)
-install_fat_java_artifact(defaults)
+# No separate java artifact is installed (part of config-bundle)
diff --git a/defaults/pom.xml b/defaults/pom.xml
index 35d8c55f20e..41cf386946b 100644
--- a/defaults/pom.xml
+++ b/defaults/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
diff --git a/defaults/src/apps/printdefault/CMakeLists.txt b/defaults/src/apps/printdefault/CMakeLists.txt
index 2823b90d251..d49fd9490e0 100644
--- a/defaults/src/apps/printdefault/CMakeLists.txt
+++ b/defaults/src/apps/printdefault/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(defaults_vespa-print-default_app
SOURCES
printdefault.cpp
diff --git a/defaults/src/apps/printdefault/printdefault.cpp b/defaults/src/apps/printdefault/printdefault.cpp
index be6b989fd70..1a2d4653a71 100644
--- a/defaults/src/apps/printdefault/printdefault.cpp
+++ b/defaults/src/apps/printdefault/printdefault.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/defaults.h>
#include <stdio.h>
diff --git a/defaults/src/main/java/com/yahoo/vespa/defaults/Defaults.java b/defaults/src/main/java/com/yahoo/vespa/defaults/Defaults.java
index 04377f887b5..3a169899ff1 100644
--- a/defaults/src/main/java/com/yahoo/vespa/defaults/Defaults.java
+++ b/defaults/src/main/java/com/yahoo/vespa/defaults/Defaults.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.defaults;
import java.util.Optional;
diff --git a/defaults/src/main/java/com/yahoo/vespa/defaults/package-info.java b/defaults/src/main/java/com/yahoo/vespa/defaults/package-info.java
index 69c4a0f85cf..01d52145ec7 100644
--- a/defaults/src/main/java/com/yahoo/vespa/defaults/package-info.java
+++ b/defaults/src/main/java/com/yahoo/vespa/defaults/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.vespa.defaults;
diff --git a/defaults/src/test/java/com/yahoo/vespa/defaults/DefaultsTestCase.java b/defaults/src/test/java/com/yahoo/vespa/defaults/DefaultsTestCase.java
index 88f4ad6f2fd..ce64f7cc63d 100644
--- a/defaults/src/test/java/com/yahoo/vespa/defaults/DefaultsTestCase.java
+++ b/defaults/src/test/java/com/yahoo/vespa/defaults/DefaultsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.defaults;
import org.junit.Ignore;
diff --git a/defaults/src/vespa/CMakeLists.txt b/defaults/src/vespa/CMakeLists.txt
index 3226d53c067..b442f495c5b 100644
--- a/defaults/src/vespa/CMakeLists.txt
+++ b/defaults/src/vespa/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespadefaults
SOURCES
defaults.cpp
diff --git a/defaults/src/vespa/defaults.cpp b/defaults/src/vespa/defaults.cpp
index 069187ac284..7d1cd237ecd 100644
--- a/defaults/src/vespa/defaults.cpp
+++ b/defaults/src/vespa/defaults.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "defaults.h"
#include <stdlib.h>
diff --git a/defaults/src/vespa/defaults.h b/defaults/src/vespa/defaults.h
index c52a4511f4e..19720caaeb8 100644
--- a/defaults/src/vespa/defaults.h
+++ b/defaults/src/vespa/defaults.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <string>
diff --git a/dist.sh b/dist.sh
index b6377188892..6016599d03f 100755
--- a/dist.sh
+++ b/dist.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
if [ -z "$1" ]; then
echo "Usage: $0 VERSION" 2>&1
diff --git a/dist/README.md b/dist/README.md
index 1db8f39c1a9..b87928daceb 100644
--- a/dist/README.md
+++ b/dist/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Building Vespa RPM
diff --git a/dist/build-rpm.sh b/dist/build-rpm.sh
index 5d6d2ba7809..894f7fb01d9 100755
--- a/dist/build-rpm.sh
+++ b/dist/build-rpm.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
diff --git a/dist/getversion.pl b/dist/getversion.pl
index f3753373d8d..2370f8c8c89 100755
--- a/dist/getversion.pl
+++ b/dist/getversion.pl
@@ -1,5 +1,5 @@
#!/usr/bin/perl
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
use POSIX qw(strftime);
diff --git a/dist/release-vespa-rpm.sh b/dist/release-vespa-rpm.sh
index dbd5565729c..b2f63da8e07 100755
--- a/dist/release-vespa-rpm.sh
+++ b/dist/release-vespa-rpm.sh
@@ -1,58 +1,38 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
set -e
-if [ $# -ne 2 ]; then
+if [[ $# -ne 2 ]]; then
echo "Usage: $0 <version> <git ref>"
exit 1
fi
+if [[ -z $COPR_WEBHOOK ]]; then
+ echo "This script requires the COPR_WEBHOOK environment variable to be set."
+ exit 1
+fi
+
readonly VERSION=$1
readonly GITREF=$2
-readonly DIST_DIR="dist"
-readonly SPECFILE="${DIST_DIR}/vespa.spec"
-readonly TITO_DIR="${DIST_DIR}/.tito"
-readonly RPM_BRANCH="rpmbuild"
+readonly RELEASE_TAG="v$VERSION"
readonly CURRENT_BRANCH=$(git branch | grep "^\*" | cut -d' ' -f2)
# Make sure we are up to date
git checkout master
git pull --rebase
-# Update the VERSION file on master to be the next releasable version
-echo "$VERSION" | awk -F. '{print $1"."($2+1)".0"}' > VERSION
-git commit -am "Updating VERSION file to next releasable minor version."
-for i in 1 2 3; do
- if git push; then
- break;
- fi
- git pull --rebase
-done
-
-# Delete existing branch if exists and create new one
-git push --delete origin $RPM_BRANCH &> /dev/null || true
-git branch -D $RPM_BRANCH &> /dev/null || true
-git checkout -b $RPM_BRANCH $GITREF
-
-# Tito expects spec file and .tito directory to be on root
-git mv $TITO_DIR .
-git mv $SPECFILE .
-
-# Hide pom.xml to avoid tito doing anything to our pom.xml files
-mv pom.xml pom.xml.hide
-
-# Run tito to update spec file and tag
-tito tag --use-version=$VERSION --no-auto-changelog
+# Create a proper release tag
-# Push changes and tag to branc
-git push -u origin --follow-tags $RPM_BRANCH
+git tag -a "$RELEASE_TAG" -m "Release version $VERSION" $GITREF
+git push origin "$RELEASE_TAG"
# Trig the build on Copr
curl -X POST \
-H "Content-type: application/json" \
-H "X-GitHub-Event: create" \
- -d '{ "ref": "rpmbuild", "ref_type": "branch", "repository": { "clone_url": "https://github.com/vespa-engine/vespa.git" } }' \
- https://copr.fedorainfracloud.org/webhooks/github/8037/d1dd5867-b493-4647-a888-0c887e6087b3/
+ -d '{ "ref": "$RELEASE_TAG", "ref_type": "tag", "repository": { "clone_url": "https://github.com/vespa-engine/vespa.git" } }' \
+ "$COPR_WEBHOOK"
git reset --hard HEAD
git checkout $CURRENT_BRANCH
diff --git a/dist/vespa.spec b/dist/vespa.spec
index d8e3653af39..7196fe92e20 100644
--- a/dist/vespa.spec
+++ b/dist/vespa.spec
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Hack to speed up jar packing for now
%define __jar_repack %{nil}
@@ -79,19 +79,13 @@ BuildRequires: cmake3
BuildRequires: llvm7.0-devel
BuildRequires: vespa-boost-devel >= 1.76.0-1
BuildRequires: vespa-gtest >= 1.8.1-1
+%define _use_vespa_gtest 1
BuildRequires: vespa-icu-devel >= 65.1.0-1
BuildRequires: vespa-lz4-devel >= 1.9.2-2
BuildRequires: vespa-onnxruntime-devel = 1.7.1
-BuildRequires: vespa-openssl-devel >= 1.1.1k-1
-%if 0%{?centos}
-%if 0%{?amzn2}
-BuildRequires: vespa-protobuf-devel = 3.7.0-5.amzn2
-%else
-BuildRequires: vespa-protobuf-devel = 3.7.0-4.el7
-%endif
-%else
-BuildRequires: vespa-protobuf-devel = 3.7.0-5.el7
-%endif
+BuildRequires: vespa-openssl-devel >= 1.1.1l-1
+%define _use_vespa_openssl 1
+BuildRequires: vespa-protobuf-devel = 3.17.3
BuildRequires: vespa-libzstd-devel >= 1.4.5-2
%endif
%if 0%{?el8}
@@ -112,11 +106,13 @@ BuildRequires: (llvm-devel >= 11.0.0 and llvm-devel < 12)
BuildRequires: (llvm-devel >= 10.0.1 and llvm-devel < 11)
%endif
BuildRequires: vespa-boost-devel >= 1.76.0-1
-BuildRequires: openssl-devel
+BuildRequires: vespa-openssl-devel >= 1.1.1l-1
+%define _use_vespa_openssl 1
BuildRequires: vespa-gtest >= 1.8.1-1
+%define _use_vespa_gtest 1
BuildRequires: vespa-lz4-devel >= 1.9.2-2
BuildRequires: vespa-onnxruntime-devel = 1.7.1
-BuildRequires: vespa-protobuf-devel = 3.7.0-5.el8
+BuildRequires: vespa-protobuf-devel = 3.17.3
BuildRequires: vespa-libzstd-devel >= 1.4.5-2
%endif
%if 0%{?fedora}
@@ -149,19 +145,34 @@ BuildRequires: gmock-devel
%endif
%if 0%{?fc35}
BuildRequires: protobuf-devel
-BuildRequires: llvm-devel >= 12.0.0
-BuildRequires: boost-devel >= 1.75
+BuildRequires: llvm-devel >= 13.0.0
+BuildRequires: boost-devel >= 1.76
+BuildRequires: gtest-devel
+BuildRequires: gmock-devel
+%endif
+%if 0%{?fc36}
+BuildRequires: protobuf-devel
+BuildRequires: llvm-devel >= 13.0.0
+BuildRequires: boost-devel >= 1.76
BuildRequires: gtest-devel
BuildRequires: gmock-devel
%endif
%endif
%if 0%{?el7} && 0%{?amzn2}
BuildRequires: vespa-xxhash-devel = 0.8.0
-BuildRequires: vespa-openblas-devel = 0.3.15
-BuildRequires: vespa-re2-devel = 20190801
+%define _use_vespa_xxhash 1
+BuildRequires: vespa-openblas-devel = 0.3.17
+%define _use_vespa_openblas 1
+BuildRequires: vespa-re2-devel = 20210801
+%define _use_vespa_re2 1
%else
BuildRequires: xxhash-devel >= 0.8.0
+%if 0%{?el7} || 0%{?el8}
+BuildRequires: vespa-openblas-devel = 0.3.17
+%define _use_vespa_openblas 1
+%else
BuildRequires: openblas-devel
+%endif
BuildRequires: re2-devel
%endif
BuildRequires: zlib-devel
@@ -179,9 +190,12 @@ BuildRequires: git
BuildRequires: systemd
BuildRequires: flex >= 2.5.0
BuildRequires: bison >= 3.0.0
+BuildRequires: libedit-devel
+Requires: libedit
Requires: which
Requires: initscripts
Requires: libcgroup-tools
+Requires: numactl
Requires: perl
Requires: perl-Carp
Requires: perl-Data-Dumper
@@ -221,13 +235,10 @@ Requires: llvm7.0
Requires: vespa-telegraf >= 1.1.1-1
Requires: vespa-valgrind >= 3.17.0-1
%endif
+Requires: vespa-gtest >= 1.8.1-1
%define _vespa_llvm_version 7
%define _extra_link_directory /usr/lib64/llvm7.0/lib;%{_vespa_deps_prefix}/lib64
-%if 0%{?amzn2}
%define _extra_include_directory /usr/include/llvm7.0;%{_vespa_deps_prefix}/include
-%else
-%define _extra_include_directory /usr/include/llvm7.0;%{_vespa_deps_prefix}/include;/usr/include/openblas
-%endif
%endif
%if 0%{?el8}
%if 0%{?centos} || 0%{?rocky}
@@ -239,10 +250,12 @@ Requires: vespa-valgrind >= 3.17.0-1
%else
%define _vespa_llvm_version 10
%endif
+Requires: vespa-gtest >= 1.8.1-1
%define _extra_link_directory %{_vespa_deps_prefix}/lib64
-%define _extra_include_directory %{_vespa_deps_prefix}/include;/usr/include/openblas
+%define _extra_include_directory %{_vespa_deps_prefix}/include
%endif
%if 0%{?fedora}
+Requires: gtest
%if 0%{?fc32}
%define _vespa_llvm_version 10
%endif
@@ -253,7 +266,10 @@ Requires: vespa-valgrind >= 3.17.0-1
%define _vespa_llvm_version 12
%endif
%if 0%{?fc35}
-%define _vespa_llvm_version 12
+%define _vespa_llvm_version 13
+%endif
+%if 0%{?fc36}
+%define _vespa_llvm_version 13
%endif
%define _extra_link_directory %{_vespa_deps_prefix}/lib64
%define _extra_include_directory %{_vespa_deps_prefix}/include;/usr/include/openblas
@@ -272,12 +288,9 @@ Requires: %{name}-malloc = %{version}-%{release}
Requires: %{name}-tools = %{version}-%{release}
# Ugly workaround because vespamalloc/src/vespamalloc/malloc/mmap.cpp uses the private
-# _dl_sym function. Exclude automated reqires for libraries in /opt/vespa-deps/lib64.
-%if 0%{?amzn2}
-%global __requires_exclude ^lib(c\\.so\\.6\\(GLIBC_PRIVATE\\)|pthread\\.so\\.0\\(GLIBC_PRIVATE\\)|(crypto|icui18n|icuuc|lz4|protobuf|ssl|zstd|onnxruntime|openblas|re2|xxhash)\\.so\\.[0-9.]*\\([A-Z._0-9]*\\))\\(64bit\\)$
-%else
-%global __requires_exclude ^lib(c\\.so\\.6\\(GLIBC_PRIVATE\\)|pthread\\.so\\.0\\(GLIBC_PRIVATE\\)|(crypto|icui18n|icuuc|lz4|protobuf|ssl|zstd|onnxruntime)\\.so\\.[0-9.]*\\([A-Z._0-9]*\\))\\(64bit\\)$
-%endif
+# _dl_sym function.
+# Exclude automated requires for libraries in /opt/vespa-deps/lib64.
+%global __requires_exclude ^lib(c\\.so\\.6\\(GLIBC_PRIVATE\\)|pthread\\.so\\.0\\(GLIBC_PRIVATE\\)|(icui18n|icuuc|lz4|protobuf|zstd|onnxruntime%{?_use_vespa_openssl:|crypto|ssl}%{?_use_vespa_openblas:|openblas}%{?_use_vespa_re2:|re2}%{?_use_vespa_xxhash:|xxhash}%{?_use_vespa_gtest:|(gtest|gmock)(_main)?})\\.so\\.[0-9.]*\\([A-Za-z._0-9]*\\))\\(64bit\\)$
%description
@@ -313,29 +326,24 @@ Requires: vespa-xxhash = 0.8.0
%else
Requires: xxhash-libs >= 0.8.0
%endif
-%if 0%{?el7}
-Requires: vespa-openssl >= 1.1.1k-1
+%if 0%{?el7} || 0%{?el8}
+Requires: vespa-openssl >= 1.1.1l-1
%else
Requires: openssl-libs
%endif
Requires: vespa-lz4 >= 1.9.2-2
Requires: vespa-libzstd >= 1.4.5-2
-%if 0%{?el8}
-Requires: openblas
-Requires: glibc-langpack-en
-%else
-%if 0%{?amzn2}
-Requires: vespa-openblas = 0.3.15
+%if 0%{?el8} || 0%{?el7}
+Requires: vespa-openblas = 0.3.17
%else
Requires: openblas-serial
%endif
-%endif
%if 0%{?amzn2}
-Requires: vespa-re2 = 20190801
+Requires: vespa-re2 = 20210801
%else
Requires: re2
%endif
-%if 0%{?fedora}
+%if 0%{?fedora} || 0%{?el8}
Requires: glibc-langpack-en
%endif
@@ -351,18 +359,13 @@ Requires: %{name}-base-libs = %{version}-%{release}
%if 0%{?el7}
Requires: llvm7.0-libs
Requires: vespa-icu >= 65.1.0-1
-Requires: vespa-openssl >= 1.1.1k-1
-%if 0%{?centos}
-%if 0%{?amzn2}
-Requires: vespa-protobuf = 3.7.0-5.amzn2
-%else
-Requires: vespa-protobuf = 3.7.0-4.el7
-%endif
+Requires: vespa-protobuf = 3.17.3
%else
-Requires: vespa-protobuf = 3.7.0-5.el7
+Requires: libicu
%endif
+%if 0%{?el7} || 0%{?el8}
+Requires: vespa-openssl >= 1.1.1l-1
%else
-Requires: libicu
Requires: openssl-libs
%endif
%if 0%{?el8}
@@ -375,7 +378,7 @@ Requires: (llvm-libs >= 11.0.0 and llvm-libs < 12)
%else
Requires: (llvm-libs >= 10.0.1 and llvm-libs < 11)
%endif
-Requires: vespa-protobuf = 3.7.0-5.el8
+Requires: vespa-protobuf = 3.17.3
%endif
%if 0%{?fedora}
Requires: protobuf
@@ -389,7 +392,10 @@ Requires: llvm-libs >= 11.0.0
Requires: llvm-libs >= 12.0.0
%endif
%if 0%{?fc35}
-Requires: llvm-libs >= 12.0.0
+Requires: llvm-libs >= 13.0.0
+%endif
+%if 0%{?fc36}
+Requires: llvm-libs >= 13.0.0
%endif
%endif
Requires: vespa-onnxruntime = 1.7.1
@@ -651,7 +657,6 @@ fi
%{_prefix}/lib/jars/orchestrator-jar-with-dependencies.jar
%{_prefix}/lib/jars/predicate-search-jar-with-dependencies.jar
%{_prefix}/lib/jars/searchlib.jar
-%{_prefix}/lib/jars/searchlib-jar-with-dependencies.jar
%{_prefix}/lib/jars/service-monitor-jar-with-dependencies.jar
%{_prefix}/lib/jars/tenant-cd-api-jar-with-dependencies.jar
%{_prefix}/lib/jars/vespa_feed_perf-jar-with-dependencies.jar
@@ -693,6 +698,7 @@ fi
%endif
%dir %{_prefix}
%dir %{_prefix}/bin
+%{_prefix}/bin/vespa-jvm-dumper
%{_prefix}/bin/vespa-logfmt
%{_prefix}/bin/vespa-security-env
%dir %{_prefix}/conf
@@ -705,6 +711,7 @@ fi
%dir %{_prefix}/libexec
%dir %{_prefix}/libexec/vespa
%{_prefix}/libexec/vespa/common-env.sh
+%{_prefix}/libexec/vespa/find-pid
%{_prefix}/libexec/vespa/vespa-curl-wrapper
%files base-libs
@@ -788,7 +795,6 @@ fi
%{_prefix}/lib/jars/bcprov-jdk15on-*.jar
%{_prefix}/lib/jars/config-bundle-jar-with-dependencies.jar
%{_prefix}/lib/jars/configdefinitions-jar-with-dependencies.jar
-%{_prefix}/lib/jars/configgen.jar
%{_prefix}/lib/jars/config-model-api-jar-with-dependencies.jar
%{_prefix}/lib/jars/config-model-jar-with-dependencies.jar
%{_prefix}/lib/jars/config-provisioning-jar-with-dependencies.jar
@@ -796,7 +802,6 @@ fi
%{_prefix}/lib/jars/container-disc-jar-with-dependencies.jar
%{_prefix}/lib/jars/container-search-and-docproc-jar-with-dependencies.jar
%{_prefix}/lib/jars/container-search-gui-jar-with-dependencies.jar
-%{_prefix}/lib/jars/defaults-jar-with-dependencies.jar
%{_prefix}/lib/jars/docprocs-jar-with-dependencies.jar
%{_prefix}/lib/jars/flags-jar-with-dependencies.jar
%{_prefix}/lib/jars/hk2-*.jar
@@ -808,6 +813,7 @@ fi
%{_prefix}/lib/jars/jdisc_core-jar-with-dependencies.jar
%{_prefix}/lib/jars/jdisc-security-filters-jar-with-dependencies.jar
%{_prefix}/lib/jars/jersey-*.jar
+%{_prefix}/lib/jars/linguistics-components-jar-with-dependencies.jar
%{_prefix}/lib/jars/alpn-*.jar
%{_prefix}/lib/jars/http2-*.jar
%{_prefix}/lib/jars/jetty-*.jar
@@ -816,7 +822,7 @@ fi
%{_prefix}/lib/jars/model-integration-jar-with-dependencies.jar
%{_prefix}/lib/jars/org.apache.aries.spifly.dynamic.bundle-*.jar
%{_prefix}/lib/jars/osgi-resource-locator-*.jar
-%{_prefix}/lib/jars/security-utils-jar-with-dependencies.jar
+%{_prefix}/lib/jars/security-utils.jar
%{_prefix}/lib/jars/standalone-container-jar-with-dependencies.jar
%{_prefix}/lib/jars/validation-api-*.jar
%{_prefix}/lib/jars/vespa-athenz-jar-with-dependencies.jar
diff --git a/docker/README.md b/docker/README.md
index b73969ba1ed..18ab6648f3e 100644
--- a/docker/README.md
+++ b/docker/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Building Vespa RPM on Docker (OS X and Linux)
diff --git a/docker/build-vespa.sh b/docker/build-vespa.sh
index 4570bdf5b5a..f7b106b7800 100755
--- a/docker/build-vespa.sh
+++ b/docker/build-vespa.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
if [ $# -ne 1 ]; then
diff --git a/docker/build/build-vespa-internal.sh b/docker/build/build-vespa-internal.sh
index 63eb0efacb8..dada151a29f 100755
--- a/docker/build/build-vespa-internal.sh
+++ b/docker/build/build-vespa-internal.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
if [ $# -ne 3 ]; then
diff --git a/docproc/CMakeLists.txt b/docproc/CMakeLists.txt
index 7bb25e6a420..f8d34754c41 100644
--- a/docproc/CMakeLists.txt
+++ b/docproc/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_config_definitions()
diff --git a/docproc/pom.xml b/docproc/pom.xml
index dd5adcee578..f3202973abc 100644
--- a/docproc/pom.xml
+++ b/docproc/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/docproc/src/main/java/com/yahoo/config/docproc/package-info.java b/docproc/src/main/java/com/yahoo/config/docproc/package-info.java
index cc8394ffae2..4332ef60019 100644
--- a/docproc/src/main/java/com/yahoo/config/docproc/package-info.java
+++ b/docproc/src/main/java/com/yahoo/config/docproc/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.config.docproc;
diff --git a/docproc/src/main/java/com/yahoo/docproc/AbstractConcreteDocumentFactory.java b/docproc/src/main/java/com/yahoo/docproc/AbstractConcreteDocumentFactory.java
index 53ccbd4c325..8008f52a6db 100644
--- a/docproc/src/main/java/com/yahoo/docproc/AbstractConcreteDocumentFactory.java
+++ b/docproc/src/main/java/com/yahoo/docproc/AbstractConcreteDocumentFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import java.util.Map;
diff --git a/docproc/src/main/java/com/yahoo/docproc/Accesses.java b/docproc/src/main/java/com/yahoo/docproc/Accesses.java
index 747b129679b..fa6d67f01fd 100644
--- a/docproc/src/main/java/com/yahoo/docproc/Accesses.java
+++ b/docproc/src/main/java/com/yahoo/docproc/Accesses.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
diff --git a/docproc/src/main/java/com/yahoo/docproc/Call.java b/docproc/src/main/java/com/yahoo/docproc/Call.java
index a46e74c0f5f..3598ddaff6c 100644
--- a/docproc/src/main/java/com/yahoo/docproc/Call.java
+++ b/docproc/src/main/java/com/yahoo/docproc/Call.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import com.yahoo.component.ComponentId;
diff --git a/docproc/src/main/java/com/yahoo/docproc/CallStack.java b/docproc/src/main/java/com/yahoo/docproc/CallStack.java
index 2a09de1fdd5..41adce4b23c 100644
--- a/docproc/src/main/java/com/yahoo/docproc/CallStack.java
+++ b/docproc/src/main/java/com/yahoo/docproc/CallStack.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import com.yahoo.component.ComponentId;
diff --git a/docproc/src/main/java/com/yahoo/docproc/DocprocExecutor.java b/docproc/src/main/java/com/yahoo/docproc/DocprocExecutor.java
index d0334af857d..18f7c5bda4c 100644
--- a/docproc/src/main/java/com/yahoo/docproc/DocprocExecutor.java
+++ b/docproc/src/main/java/com/yahoo/docproc/DocprocExecutor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import com.yahoo.document.DocumentOperation;
diff --git a/docproc/src/main/java/com/yahoo/docproc/DocprocService.java b/docproc/src/main/java/com/yahoo/docproc/DocprocService.java
index b06e6bbdf40..32f28ba1294 100644
--- a/docproc/src/main/java/com/yahoo/docproc/DocprocService.java
+++ b/docproc/src/main/java/com/yahoo/docproc/DocprocService.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import com.yahoo.component.AbstractComponent;
diff --git a/docproc/src/main/java/com/yahoo/docproc/DocumentOperationWrapper.java b/docproc/src/main/java/com/yahoo/docproc/DocumentOperationWrapper.java
index 35f3ffd33ea..02d0d05b279 100644
--- a/docproc/src/main/java/com/yahoo/docproc/DocumentOperationWrapper.java
+++ b/docproc/src/main/java/com/yahoo/docproc/DocumentOperationWrapper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import com.yahoo.document.DocumentOperation;
diff --git a/docproc/src/main/java/com/yahoo/docproc/DocumentProcessor.java b/docproc/src/main/java/com/yahoo/docproc/DocumentProcessor.java
index d6b456056bd..934e1a281e5 100644
--- a/docproc/src/main/java/com/yahoo/docproc/DocumentProcessor.java
+++ b/docproc/src/main/java/com/yahoo/docproc/DocumentProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import com.yahoo.collections.Pair;
diff --git a/docproc/src/main/java/com/yahoo/docproc/HandledProcessingException.java b/docproc/src/main/java/com/yahoo/docproc/HandledProcessingException.java
index 51fe89aa358..fc53e00a2c0 100644
--- a/docproc/src/main/java/com/yahoo/docproc/HandledProcessingException.java
+++ b/docproc/src/main/java/com/yahoo/docproc/HandledProcessingException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
/**
diff --git a/docproc/src/main/java/com/yahoo/docproc/Processing.java b/docproc/src/main/java/com/yahoo/docproc/Processing.java
index 63c0e143e30..d2583fc5a6d 100644
--- a/docproc/src/main/java/com/yahoo/docproc/Processing.java
+++ b/docproc/src/main/java/com/yahoo/docproc/Processing.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import com.yahoo.component.provider.ComponentRegistry;
diff --git a/docproc/src/main/java/com/yahoo/docproc/ProcessingEndpoint.java b/docproc/src/main/java/com/yahoo/docproc/ProcessingEndpoint.java
index 27075b48be7..d478ad24bd7 100644
--- a/docproc/src/main/java/com/yahoo/docproc/ProcessingEndpoint.java
+++ b/docproc/src/main/java/com/yahoo/docproc/ProcessingEndpoint.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
/**
diff --git a/docproc/src/main/java/com/yahoo/docproc/SimpleDocumentProcessor.java b/docproc/src/main/java/com/yahoo/docproc/SimpleDocumentProcessor.java
index 356df40af88..2ff873282a5 100644
--- a/docproc/src/main/java/com/yahoo/docproc/SimpleDocumentProcessor.java
+++ b/docproc/src/main/java/com/yahoo/docproc/SimpleDocumentProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import com.yahoo.document.DocumentOperation;
diff --git a/docproc/src/main/java/com/yahoo/docproc/TransientFailureException.java b/docproc/src/main/java/com/yahoo/docproc/TransientFailureException.java
index 235e2561066..ce165c49530 100644
--- a/docproc/src/main/java/com/yahoo/docproc/TransientFailureException.java
+++ b/docproc/src/main/java/com/yahoo/docproc/TransientFailureException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
/**
diff --git a/docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingHandler.java b/docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingHandler.java
index 830d66d38f5..95558fbb524 100644
--- a/docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingHandler.java
+++ b/docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc.jdisc;
import com.google.inject.Inject;
diff --git a/docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerParameters.java b/docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerParameters.java
index b8a6aa9c105..d2fe43ccfed 100644
--- a/docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerParameters.java
+++ b/docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerParameters.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc.jdisc;
import com.yahoo.component.chain.model.ChainsModel;
diff --git a/docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingTask.java b/docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingTask.java
index 5d5f63d3958..146cd9cb988 100644
--- a/docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingTask.java
+++ b/docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingTask.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc.jdisc;
import com.yahoo.collections.Tuple2;
diff --git a/docproc/src/main/java/com/yahoo/docproc/jdisc/RequestContext.java b/docproc/src/main/java/com/yahoo/docproc/jdisc/RequestContext.java
index ec479c73bcc..d8d58265d26 100644
--- a/docproc/src/main/java/com/yahoo/docproc/jdisc/RequestContext.java
+++ b/docproc/src/main/java/com/yahoo/docproc/jdisc/RequestContext.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc.jdisc;
import com.yahoo.docproc.Processing;
diff --git a/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/MbusRequestContext.java b/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/MbusRequestContext.java
index f712231e939..70d908b8e27 100644
--- a/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/MbusRequestContext.java
+++ b/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/MbusRequestContext.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc.jdisc.messagebus;
import com.yahoo.component.provider.ComponentRegistry;
diff --git a/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/MessageFactory.java b/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/MessageFactory.java
index 1365ed955fc..1959ae8f339 100644
--- a/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/MessageFactory.java
+++ b/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/MessageFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc.jdisc.messagebus;
import com.yahoo.docproc.Processing;
diff --git a/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/ProcessingFactory.java b/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/ProcessingFactory.java
index 4696c627fe3..910d4b7961b 100644
--- a/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/ProcessingFactory.java
+++ b/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/ProcessingFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc.jdisc.messagebus;
import java.util.ArrayList;
diff --git a/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/ResponseMerger.java b/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/ResponseMerger.java
index d5aee5b5ff3..fad1e651eec 100644
--- a/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/ResponseMerger.java
+++ b/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/ResponseMerger.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc.jdisc.messagebus;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
diff --git a/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/package-info.java b/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/package-info.java
index 770b2ee6231..7c4369a07ad 100644
--- a/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/package-info.java
+++ b/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.docproc.jdisc.messagebus;
diff --git a/docproc/src/main/java/com/yahoo/docproc/jdisc/metric/NullMetric.java b/docproc/src/main/java/com/yahoo/docproc/jdisc/metric/NullMetric.java
index 9e88af4abd7..1b7ff478b14 100644
--- a/docproc/src/main/java/com/yahoo/docproc/jdisc/metric/NullMetric.java
+++ b/docproc/src/main/java/com/yahoo/docproc/jdisc/metric/NullMetric.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc.jdisc.metric;
import com.yahoo.jdisc.Metric;
diff --git a/docproc/src/main/java/com/yahoo/docproc/jdisc/package-info.java b/docproc/src/main/java/com/yahoo/docproc/jdisc/package-info.java
index 17327caa04f..770f3a02d2f 100644
--- a/docproc/src/main/java/com/yahoo/docproc/jdisc/package-info.java
+++ b/docproc/src/main/java/com/yahoo/docproc/jdisc/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.docproc.jdisc;
diff --git a/docproc/src/main/java/com/yahoo/docproc/package-info.java b/docproc/src/main/java/com/yahoo/docproc/package-info.java
index 29642292fe9..8345e905afb 100644
--- a/docproc/src/main/java/com/yahoo/docproc/package-info.java
+++ b/docproc/src/main/java/com/yahoo/docproc/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.docproc;
diff --git a/docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocument.java b/docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocument.java
index e1482dead8d..99317c8c8dd 100644
--- a/docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocument.java
+++ b/docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocument.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc.proxy;
import com.yahoo.docproc.Accesses;
diff --git a/docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocumentUpdate.java b/docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocumentUpdate.java
index 51f9afa7a2e..1ff2ed74456 100644
--- a/docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocumentUpdate.java
+++ b/docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocumentUpdate.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc.proxy;
import com.yahoo.docproc.DocumentOperationWrapper;
import com.yahoo.document.Document;
diff --git a/docproc/src/main/java/com/yahoo/docproc/proxy/SchemaMap.java b/docproc/src/main/java/com/yahoo/docproc/proxy/SchemaMap.java
index ea32eb7a549..8a544dea221 100644
--- a/docproc/src/main/java/com/yahoo/docproc/proxy/SchemaMap.java
+++ b/docproc/src/main/java/com/yahoo/docproc/proxy/SchemaMap.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc.proxy;
import com.yahoo.collections.Pair;
diff --git a/docproc/src/main/java/com/yahoo/docproc/util/JoinerDocumentProcessor.java b/docproc/src/main/java/com/yahoo/docproc/util/JoinerDocumentProcessor.java
index a91565dcd9c..46a33dbff7b 100644
--- a/docproc/src/main/java/com/yahoo/docproc/util/JoinerDocumentProcessor.java
+++ b/docproc/src/main/java/com/yahoo/docproc/util/JoinerDocumentProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc.util;
import com.yahoo.document.DocumentOperation;
diff --git a/docproc/src/main/java/com/yahoo/docproc/util/SplitterDocumentProcessor.java b/docproc/src/main/java/com/yahoo/docproc/util/SplitterDocumentProcessor.java
index 43e9c95fc1d..07248e02a4f 100644
--- a/docproc/src/main/java/com/yahoo/docproc/util/SplitterDocumentProcessor.java
+++ b/docproc/src/main/java/com/yahoo/docproc/util/SplitterDocumentProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc.util;
import com.yahoo.document.DocumentOperation;
diff --git a/docproc/src/main/java/com/yahoo/docproc/util/package-info.java b/docproc/src/main/java/com/yahoo/docproc/util/package-info.java
index 7aa6af6b078..a2d9312550b 100644
--- a/docproc/src/main/java/com/yahoo/docproc/util/package-info.java
+++ b/docproc/src/main/java/com/yahoo/docproc/util/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.docproc.util;
diff --git a/docproc/src/main/resources/configdefinitions/config.docproc.docproc.def b/docproc/src/main/resources/configdefinitions/config.docproc.docproc.def
index 53f5c2de21f..aceebe26d63 100644
--- a/docproc/src/main/resources/configdefinitions/config.docproc.docproc.def
+++ b/docproc/src/main/resources/configdefinitions/config.docproc.docproc.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config.docproc
# Queue size (in milliseconds) for this node
diff --git a/docproc/src/main/resources/configdefinitions/config.docproc.schemamapping.def b/docproc/src/main/resources/configdefinitions/config.docproc.schemamapping.def
index d70235fbfc0..a70cd089b21 100644
--- a/docproc/src/main/resources/configdefinitions/config.docproc.schemamapping.def
+++ b/docproc/src/main/resources/configdefinitions/config.docproc.schemamapping.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Use when a docproc works on a generic set of field names and the actual names
# in input doc may be different
namespace=config.docproc
diff --git a/docproc/src/main/resources/configdefinitions/config.docproc.splitter-joiner-document-processor.def b/docproc/src/main/resources/configdefinitions/config.docproc.splitter-joiner-document-processor.def
index dea6141e6cc..b6b596e9e97 100644
--- a/docproc/src/main/resources/configdefinitions/config.docproc.splitter-joiner-document-processor.def
+++ b/docproc/src/main/resources/configdefinitions/config.docproc.splitter-joiner-document-processor.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config.docproc
# The name of the enclosing (outer) document type
diff --git a/docproc/src/test/java/com/yahoo/docproc/AccessesAnnotationTestCase.java b/docproc/src/test/java/com/yahoo/docproc/AccessesAnnotationTestCase.java
index 8853d8b33c0..c1c77913ba9 100644
--- a/docproc/src/test/java/com/yahoo/docproc/AccessesAnnotationTestCase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/AccessesAnnotationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import com.yahoo.document.DataType;
diff --git a/docproc/src/test/java/com/yahoo/docproc/CallStackTestCase.java b/docproc/src/test/java/com/yahoo/docproc/CallStackTestCase.java
index 20cd935ad9b..ca034ea0343 100644
--- a/docproc/src/test/java/com/yahoo/docproc/CallStackTestCase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/CallStackTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import org.junit.Before;
diff --git a/docproc/src/test/java/com/yahoo/docproc/CallbackTestCase.java b/docproc/src/test/java/com/yahoo/docproc/CallbackTestCase.java
index 7e8d9a25026..494909fd769 100644
--- a/docproc/src/test/java/com/yahoo/docproc/CallbackTestCase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/CallbackTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import com.yahoo.document.DataType;
diff --git a/docproc/src/test/java/com/yahoo/docproc/DocumentProcessingAbstractTestCase.java b/docproc/src/test/java/com/yahoo/docproc/DocumentProcessingAbstractTestCase.java
index 2820ee2d10e..ce0fa7e37cf 100644
--- a/docproc/src/test/java/com/yahoo/docproc/DocumentProcessingAbstractTestCase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/DocumentProcessingAbstractTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import com.yahoo.document.DataType;
diff --git a/docproc/src/test/java/com/yahoo/docproc/EmptyProcessingTestCase.java b/docproc/src/test/java/com/yahoo/docproc/EmptyProcessingTestCase.java
index e7d60c2d363..763c5244b44 100644
--- a/docproc/src/test/java/com/yahoo/docproc/EmptyProcessingTestCase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/EmptyProcessingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import org.junit.Test;
diff --git a/docproc/src/test/java/com/yahoo/docproc/FailingDocumentProcessingTestCase.java b/docproc/src/test/java/com/yahoo/docproc/FailingDocumentProcessingTestCase.java
index a149a01b9ff..8e268d6b0b0 100644
--- a/docproc/src/test/java/com/yahoo/docproc/FailingDocumentProcessingTestCase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/FailingDocumentProcessingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import com.yahoo.document.DataType;
diff --git a/docproc/src/test/java/com/yahoo/docproc/FailingDocumentProcessingWithoutExceptionTestCase.java b/docproc/src/test/java/com/yahoo/docproc/FailingDocumentProcessingWithoutExceptionTestCase.java
index 98a7d3fe65e..5dc28ce8fe5 100644
--- a/docproc/src/test/java/com/yahoo/docproc/FailingDocumentProcessingWithoutExceptionTestCase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/FailingDocumentProcessingWithoutExceptionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import com.yahoo.document.DataType;
diff --git a/docproc/src/test/java/com/yahoo/docproc/FailingPermanentlyDocumentProcessingTestCase.java b/docproc/src/test/java/com/yahoo/docproc/FailingPermanentlyDocumentProcessingTestCase.java
index 0a5295a1800..2e64934d3a9 100644
--- a/docproc/src/test/java/com/yahoo/docproc/FailingPermanentlyDocumentProcessingTestCase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/FailingPermanentlyDocumentProcessingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import com.yahoo.document.DataType;
diff --git a/docproc/src/test/java/com/yahoo/docproc/FailingWithErrorTestCase.java b/docproc/src/test/java/com/yahoo/docproc/FailingWithErrorTestCase.java
index 2a56dad05ba..fd88cd60fcc 100644
--- a/docproc/src/test/java/com/yahoo/docproc/FailingWithErrorTestCase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/FailingWithErrorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import com.yahoo.document.DataType;
diff --git a/docproc/src/test/java/com/yahoo/docproc/IncrementingDocumentProcessor.java b/docproc/src/test/java/com/yahoo/docproc/IncrementingDocumentProcessor.java
index 01252a40782..7173b46dc0c 100644
--- a/docproc/src/test/java/com/yahoo/docproc/IncrementingDocumentProcessor.java
+++ b/docproc/src/test/java/com/yahoo/docproc/IncrementingDocumentProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import com.yahoo.document.DocumentPut;
diff --git a/docproc/src/test/java/com/yahoo/docproc/NotAcceptingNewProcessingsTestCase.java b/docproc/src/test/java/com/yahoo/docproc/NotAcceptingNewProcessingsTestCase.java
index 0c7122b417e..6b3e373f8f3 100644
--- a/docproc/src/test/java/com/yahoo/docproc/NotAcceptingNewProcessingsTestCase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/NotAcceptingNewProcessingsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import org.junit.Test;
diff --git a/docproc/src/test/java/com/yahoo/docproc/ProcessingTestCase.java b/docproc/src/test/java/com/yahoo/docproc/ProcessingTestCase.java
index b65327a2077..961aeac4f47 100644
--- a/docproc/src/test/java/com/yahoo/docproc/ProcessingTestCase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/ProcessingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import com.yahoo.document.DocumentOperation;
diff --git a/docproc/src/test/java/com/yahoo/docproc/ProcessingUpdateTestCase.java b/docproc/src/test/java/com/yahoo/docproc/ProcessingUpdateTestCase.java
index 4160f366fdb..1419ec1985a 100644
--- a/docproc/src/test/java/com/yahoo/docproc/ProcessingUpdateTestCase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/ProcessingUpdateTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import com.yahoo.document.DataType;
diff --git a/docproc/src/test/java/com/yahoo/docproc/SimpleDocumentProcessingTestCase.java b/docproc/src/test/java/com/yahoo/docproc/SimpleDocumentProcessingTestCase.java
index 1f106f09b3f..c8527158969 100644
--- a/docproc/src/test/java/com/yahoo/docproc/SimpleDocumentProcessingTestCase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/SimpleDocumentProcessingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import com.yahoo.component.chain.dependencies.After;
diff --git a/docproc/src/test/java/com/yahoo/docproc/SimpleDocumentProcessorTestCase.java b/docproc/src/test/java/com/yahoo/docproc/SimpleDocumentProcessorTestCase.java
index 1fff7c2658c..b5c36524421 100644
--- a/docproc/src/test/java/com/yahoo/docproc/SimpleDocumentProcessorTestCase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/SimpleDocumentProcessorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import com.yahoo.container.StatisticsConfig;
diff --git a/docproc/src/test/java/com/yahoo/docproc/TransientFailureTestCase.java b/docproc/src/test/java/com/yahoo/docproc/TransientFailureTestCase.java
index eec8c3f61c7..d5029afe7ec 100644
--- a/docproc/src/test/java/com/yahoo/docproc/TransientFailureTestCase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/TransientFailureTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc;
import com.yahoo.document.DataType;
diff --git a/docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerAllMessageTypesTestCase.java b/docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerAllMessageTypesTestCase.java
index c508e7da61d..2521daec152 100644
--- a/docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerAllMessageTypesTestCase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerAllMessageTypesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc.jdisc;
import com.yahoo.collections.Pair;
@@ -36,7 +36,7 @@ import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertNotNull;
/**
- * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
+ * @author Einar M R Rosenvinge
*/
public class DocumentProcessingHandlerAllMessageTypesTestCase extends DocumentProcessingHandlerTestBase {
diff --git a/docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerBasicTestCase.java b/docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerBasicTestCase.java
index 9dc0b2a38f5..6a4729002c4 100644
--- a/docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerBasicTestCase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerBasicTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc.jdisc;
import com.yahoo.collections.Pair;
diff --git a/docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerForkTestCase.java b/docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerForkTestCase.java
index d5a09e921b6..abb41cf98dd 100644
--- a/docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerForkTestCase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerForkTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc.jdisc;
import com.yahoo.collections.Pair;
diff --git a/docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerTestBase.java b/docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerTestBase.java
index 05009f484c8..e60cfeec155 100644
--- a/docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerTestBase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerTestBase.java
@@ -1,11 +1,14 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc.jdisc;
+import com.yahoo.cloud.config.SlobroksConfig;
import com.yahoo.collections.Pair;
import com.yahoo.component.ComponentId;
import com.yahoo.component.provider.ComponentRegistry;
import com.yahoo.container.core.document.ContainerDocumentConfig;
+import com.yahoo.container.jdisc.ContainerMbusConfig;
import com.yahoo.container.jdisc.messagebus.MbusServerProvider;
+import com.yahoo.container.jdisc.messagebus.NetworkMultiplexerProvider;
import com.yahoo.container.jdisc.messagebus.SessionCache;
import com.yahoo.docproc.CallStack;
import com.yahoo.docproc.DocprocService;
@@ -13,19 +16,26 @@ import com.yahoo.docproc.jdisc.messagebus.MbusRequestContext;
import com.yahoo.document.DocumentType;
import com.yahoo.document.DocumentTypeManager;
+import com.yahoo.document.config.DocumentmanagerConfig;
import com.yahoo.documentapi.messagebus.loadtypes.LoadType;
import com.yahoo.documentapi.messagebus.protocol.DocumentMessage;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
+import com.yahoo.documentapi.messagebus.protocol.DocumentProtocolPoliciesConfig;
import com.yahoo.jdisc.AbstractResource;
import com.yahoo.jdisc.ReferencedResource;
import com.yahoo.jdisc.application.ContainerBuilder;
+import com.yahoo.messagebus.MessagebusConfig;
import com.yahoo.messagebus.Protocol;
import com.yahoo.messagebus.SourceSessionParams;
import com.yahoo.messagebus.jdisc.MbusClient;
import com.yahoo.messagebus.jdisc.test.RemoteServer;
import com.yahoo.messagebus.jdisc.test.ServerTestDriver;
+import com.yahoo.messagebus.network.NetworkMultiplexer;
+import com.yahoo.messagebus.network.rpc.RPCNetwork;
import com.yahoo.messagebus.routing.Route;
import com.yahoo.messagebus.shared.SharedSourceSession;
+import com.yahoo.vespa.config.content.DistributionConfig;
+import com.yahoo.vespa.config.content.LoadTypeConfig;
import org.junit.After;
import org.junit.Before;
@@ -52,8 +62,13 @@ public abstract class DocumentProcessingHandlerTestBase {
driver = ServerTestDriver.newInactiveInstanceWithProtocol(protocol, true);
- sessionCache =
- new SessionCache("raw:", driver.client().slobrokId(), "test", "raw:", null, "raw:", documentTypeManager);
+ RPCNetwork net = new RPCNetwork(NetworkMultiplexerProvider.asParameters(new ContainerMbusConfig.Builder().build(),
+ driver.client().slobroksConfig(),
+ "test"));
+ sessionCache = new SessionCache(() -> NetworkMultiplexer.dedicated(net),
+ new ContainerMbusConfig.Builder().build(),
+ new MessagebusConfig.Builder().build(),
+ protocol);
ContainerBuilder builder = driver.parent().newContainerBuilder();
ComponentRegistry<DocprocService> registry = new ComponentRegistry<>();
@@ -102,7 +117,7 @@ public abstract class DocumentProcessingHandlerTestBase {
resource.release();
}
- remoteServer = RemoteServer.newInstance(driver.client().slobrokId(), "foobar", protocol);
+ remoteServer = RemoteServer.newInstance("foobar", protocol);
}
@After
diff --git a/docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerTransformingMessagesTestCase.java b/docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerTransformingMessagesTestCase.java
index 01ea5fd2fc9..c3d1686e7c8 100644
--- a/docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerTransformingMessagesTestCase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/jdisc/DocumentProcessingHandlerTransformingMessagesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc.jdisc;
import com.yahoo.collections.Pair;
diff --git a/docproc/src/test/java/com/yahoo/docproc/proxy/SchemaMappingAndAccessesTest.java b/docproc/src/test/java/com/yahoo/docproc/proxy/SchemaMappingAndAccessesTest.java
index 617cd01e6e1..cfb051e131e 100644
--- a/docproc/src/test/java/com/yahoo/docproc/proxy/SchemaMappingAndAccessesTest.java
+++ b/docproc/src/test/java/com/yahoo/docproc/proxy/SchemaMappingAndAccessesTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc.proxy;
import java.io.ByteArrayOutputStream;
diff --git a/docproc/src/test/java/com/yahoo/docproc/util/SplitterJoinerTestCase.java b/docproc/src/test/java/com/yahoo/docproc/util/SplitterJoinerTestCase.java
index 6c8c485aacb..43fe404e0c5 100644
--- a/docproc/src/test/java/com/yahoo/docproc/util/SplitterJoinerTestCase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/util/SplitterJoinerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docproc.util;
import com.yahoo.config.subscription.ConfigGetter;
diff --git a/docproc/src/test/java/com/yahoo/docproc/util/docindoc.sd b/docproc/src/test/java/com/yahoo/docproc/util/docindoc.sd
index b05f8d71c89..ca774778984 100644
--- a/docproc/src/test/java/com/yahoo/docproc/util/docindoc.sd
+++ b/docproc/src/test/java/com/yahoo/docproc/util/docindoc.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search docindoc {
document docindoc {
field name type string { }
diff --git a/docproc/src/test/java/com/yahoo/docproc/util/outerdoc.sd b/docproc/src/test/java/com/yahoo/docproc/util/outerdoc.sd
index 57a1bda323a..50981d307b9 100644
--- a/docproc/src/test/java/com/yahoo/docproc/util/outerdoc.sd
+++ b/docproc/src/test/java/com/yahoo/docproc/util/outerdoc.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search outerdoc {
document outerdoc {
field innerdocuments type array<docindoc> { }
diff --git a/docproc/src/test/vespa-configdef/config.docproc.string.def b/docproc/src/test/vespa-configdef/config.docproc.string.def
index 3e76855f1e8..3bf25c1bc03 100644
--- a/docproc/src/test/vespa-configdef/config.docproc.string.def
+++ b/docproc/src/test/vespa-configdef/config.docproc.string.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config.docproc
stringVal string default="_default_"
diff --git a/docprocs/CMakeLists.txt b/docprocs/CMakeLists.txt
index 8786a77cbf8..33f0bdbfa22 100644
--- a/docprocs/CMakeLists.txt
+++ b/docprocs/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(docprocs)
diff --git a/docprocs/pom.xml b/docprocs/pom.xml
index 2d222431d8f..ca4cf3af50a 100644
--- a/docprocs/pom.xml
+++ b/docprocs/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/docprocs/src/main/java/com/yahoo/docprocs/indexing/DocumentScript.java b/docprocs/src/main/java/com/yahoo/docprocs/indexing/DocumentScript.java
index dd894390ac2..b50c0f652b5 100644
--- a/docprocs/src/main/java/com/yahoo/docprocs/indexing/DocumentScript.java
+++ b/docprocs/src/main/java/com/yahoo/docprocs/indexing/DocumentScript.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docprocs.indexing;
import com.yahoo.document.Document;
diff --git a/docprocs/src/main/java/com/yahoo/docprocs/indexing/FastLogger.java b/docprocs/src/main/java/com/yahoo/docprocs/indexing/FastLogger.java
index ba1d5e17a78..96562d2f585 100644
--- a/docprocs/src/main/java/com/yahoo/docprocs/indexing/FastLogger.java
+++ b/docprocs/src/main/java/com/yahoo/docprocs/indexing/FastLogger.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docprocs.indexing;
import java.util.logging.Level;
diff --git a/docprocs/src/main/java/com/yahoo/docprocs/indexing/IndexingProcessor.java b/docprocs/src/main/java/com/yahoo/docprocs/indexing/IndexingProcessor.java
index 285f3e83602..15ccc17e318 100644
--- a/docprocs/src/main/java/com/yahoo/docprocs/indexing/IndexingProcessor.java
+++ b/docprocs/src/main/java/com/yahoo/docprocs/indexing/IndexingProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docprocs.indexing;
import java.util.ArrayList;
@@ -20,6 +20,8 @@ import com.yahoo.document.DocumentUpdate;
import com.yahoo.document.config.DocumentmanagerConfig;
import com.yahoo.language.Linguistics;
import java.util.logging.Level;
+
+import com.yahoo.language.process.Embedder;
import com.yahoo.vespa.configdefinition.IlscriptsConfig;
import com.yahoo.vespa.indexinglanguage.AdapterFactory;
import com.yahoo.vespa.indexinglanguage.SimpleAdapterFactory;
@@ -52,9 +54,10 @@ public class IndexingProcessor extends DocumentProcessor {
@Inject
public IndexingProcessor(DocumentmanagerConfig documentmanagerConfig,
IlscriptsConfig ilscriptsConfig,
- Linguistics linguistics) {
+ Linguistics linguistics,
+ Embedder embedder) {
docTypeMgr = DocumentTypeManagerConfigurer.configureNewManager(documentmanagerConfig);
- scriptMgr = new ScriptManager(docTypeMgr, ilscriptsConfig, linguistics);
+ scriptMgr = new ScriptManager(docTypeMgr, ilscriptsConfig, linguistics, embedder);
adapterFactory = new SimpleAdapterFactory(new ExpressionSelector());
}
diff --git a/docprocs/src/main/java/com/yahoo/docprocs/indexing/ScriptManager.java b/docprocs/src/main/java/com/yahoo/docprocs/indexing/ScriptManager.java
index a148966c250..63c6d6c4bb5 100644
--- a/docprocs/src/main/java/com/yahoo/docprocs/indexing/ScriptManager.java
+++ b/docprocs/src/main/java/com/yahoo/docprocs/indexing/ScriptManager.java
@@ -1,20 +1,22 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docprocs.indexing;
import com.yahoo.document.DocumentType;
import com.yahoo.document.DocumentTypeManager;
import com.yahoo.language.Linguistics;
import java.util.logging.Level;
+
+import com.yahoo.language.process.Embedder;
import com.yahoo.vespa.configdefinition.IlscriptsConfig;
import com.yahoo.vespa.indexinglanguage.ScriptParserContext;
import com.yahoo.vespa.indexinglanguage.expressions.InputExpression;
+import com.yahoo.vespa.indexinglanguage.expressions.OutputExpression;
import com.yahoo.vespa.indexinglanguage.expressions.ScriptExpression;
import com.yahoo.vespa.indexinglanguage.expressions.StatementExpression;
import com.yahoo.vespa.indexinglanguage.parser.IndexingInput;
import com.yahoo.vespa.indexinglanguage.parser.ParseException;
import java.util.*;
-import java.util.logging.Level;
/**
* @author Simon Thoresen Hult
@@ -26,9 +28,9 @@ public class ScriptManager {
private final Map<String, Map<String, DocumentScript>> documentFieldScripts;
private final DocumentTypeManager docTypeMgr;
- public ScriptManager(DocumentTypeManager docTypeMgr, IlscriptsConfig config, Linguistics linguistics) {
+ public ScriptManager(DocumentTypeManager docTypeMgr, IlscriptsConfig config, Linguistics linguistics, Embedder embedder) {
this.docTypeMgr = docTypeMgr;
- documentFieldScripts = createScriptsMap(docTypeMgr, config, linguistics);
+ documentFieldScripts = createScriptsMap(docTypeMgr, config, linguistics, embedder);
}
@@ -72,22 +74,30 @@ public class ScriptManager {
private static Map<String, Map<String, DocumentScript>> createScriptsMap(DocumentTypeManager docTypeMgr,
IlscriptsConfig config,
- Linguistics linguistics) {
+ Linguistics linguistics,
+ Embedder embedder) {
Map<String, Map<String, DocumentScript>> documentFieldScripts = new HashMap<>(config.ilscript().size());
- ScriptParserContext parserContext = new ScriptParserContext(linguistics);
+ ScriptParserContext parserContext = new ScriptParserContext(linguistics, embedder);
parserContext.getAnnotatorConfig().setMaxTermOccurrences(config.maxtermoccurrences());
parserContext.getAnnotatorConfig().setMaxTokenLength(config.fieldmatchmaxlength());
for (IlscriptsConfig.Ilscript ilscript : config.ilscript()) {
- InputExpression.FieldPathOptimizer fieldPathOptimizer = new InputExpression.FieldPathOptimizer(docTypeMgr.getDocumentType(ilscript.doctype()));
+ DocumentType documentType = docTypeMgr.getDocumentType(ilscript.doctype());
+ InputExpression.FieldPathOptimizer fieldPathOptimizer = new InputExpression.FieldPathOptimizer(documentType);
List<StatementExpression> expressions = new ArrayList<>(ilscript.content().size());
Map<String, DocumentScript> fieldScripts = new HashMap<>(ilscript.content().size());
for (String content : ilscript.content()) {
- expressions.add(parse(ilscript.doctype(), parserContext, content));
StatementExpression statement = parse(ilscript.doctype(), parserContext, content);
+ expressions.add(statement);
InputExpression.InputFieldNameExtractor inputFieldNameExtractor = new InputExpression.InputFieldNameExtractor();
statement.select(inputFieldNameExtractor, inputFieldNameExtractor);
+ OutputExpression.OutputFieldNameExtractor outputFieldNameExtractor = new OutputExpression.OutputFieldNameExtractor();
+ statement.select(outputFieldNameExtractor, outputFieldNameExtractor);
statement.select(fieldPathOptimizer, fieldPathOptimizer);
+ if ( ! outputFieldNameExtractor.getOutputFieldNames().isEmpty()) {
+ String outputFieldName = outputFieldNameExtractor.getOutputFieldNames().get(0);
+ statement.setStatementOutput(documentType, documentType.getField(outputFieldName));
+ }
if (inputFieldNameExtractor.getInputFieldNames().size() == 1) {
String fieldName = inputFieldNameExtractor.getInputFieldNames().get(0);
ScriptExpression script;
diff --git a/docprocs/src/test/java/com/yahoo/docprocs/indexing/DocumentScriptTestCase.java b/docprocs/src/test/java/com/yahoo/docprocs/indexing/DocumentScriptTestCase.java
index bbce023647f..01ada549397 100644
--- a/docprocs/src/test/java/com/yahoo/docprocs/indexing/DocumentScriptTestCase.java
+++ b/docprocs/src/test/java/com/yahoo/docprocs/indexing/DocumentScriptTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docprocs.indexing;
import com.yahoo.document.ArrayDataType;
diff --git a/docprocs/src/test/java/com/yahoo/docprocs/indexing/IndexingProcessorTestCase.java b/docprocs/src/test/java/com/yahoo/docprocs/indexing/IndexingProcessorTestCase.java
index 8ad2ff0aaad..ac1d3f21997 100644
--- a/docprocs/src/test/java/com/yahoo/docprocs/indexing/IndexingProcessorTestCase.java
+++ b/docprocs/src/test/java/com/yahoo/docprocs/indexing/IndexingProcessorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docprocs.indexing;
import com.yahoo.config.subscription.ConfigGetter;
@@ -13,6 +13,7 @@ import com.yahoo.document.datatypes.StringFieldValue;
import com.yahoo.document.update.AssignValueUpdate;
import com.yahoo.document.update.FieldUpdate;
import com.yahoo.document.update.ValueUpdate;
+import com.yahoo.language.process.Embedder;
import com.yahoo.language.simple.SimpleLinguistics;
import com.yahoo.vespa.configdefinition.IlscriptsConfig;
import org.junit.Test;
@@ -125,6 +126,7 @@ public class IndexingProcessorTestCase {
private static IndexingProcessor newProcessor(String configId) {
return new IndexingProcessor(ConfigGetter.getConfig(DocumentmanagerConfig.class, configId),
ConfigGetter.getConfig(IlscriptsConfig.class, configId),
- new SimpleLinguistics());
+ new SimpleLinguistics(),
+ Embedder.throwsOnUse);
}
}
diff --git a/docprocs/src/test/java/com/yahoo/docprocs/indexing/ScriptManagerTestCase.java b/docprocs/src/test/java/com/yahoo/docprocs/indexing/ScriptManagerTestCase.java
index 23df8c0eb25..ed996f56078 100644
--- a/docprocs/src/test/java/com/yahoo/docprocs/indexing/ScriptManagerTestCase.java
+++ b/docprocs/src/test/java/com/yahoo/docprocs/indexing/ScriptManagerTestCase.java
@@ -1,8 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.docprocs.indexing;
import com.yahoo.document.DocumentType;
import com.yahoo.document.DocumentTypeManager;
+import com.yahoo.language.process.Embedder;
import com.yahoo.vespa.configdefinition.IlscriptsConfig;
import com.yahoo.vespa.indexinglanguage.parser.ParseException;
import org.junit.Test;
@@ -27,8 +28,8 @@ public class ScriptManagerTestCase {
IlscriptsConfig.Builder config = new IlscriptsConfig.Builder();
config.ilscript(new IlscriptsConfig.Ilscript.Builder().doctype("newssummary")
- .content("index"));
- ScriptManager scriptMgr = new ScriptManager(typeMgr, new IlscriptsConfig(config), null);
+ .content("input title | index title"));
+ ScriptManager scriptMgr = new ScriptManager(typeMgr, new IlscriptsConfig(config), null, Embedder.throwsOnUse);
assertNotNull(scriptMgr.getScript(typeMgr.getDocumentType("newsarticle")));
assertNull(scriptMgr.getScript(new DocumentType("unknown")));
}
@@ -42,8 +43,8 @@ public class ScriptManagerTestCase {
IlscriptsConfig.Builder config = new IlscriptsConfig.Builder();
config.ilscript(new IlscriptsConfig.Ilscript.Builder().doctype("newsarticle")
- .content("index"));
- ScriptManager scriptMgr = new ScriptManager(typeMgr, new IlscriptsConfig(config), null);
+ .content("input title | index title"));
+ ScriptManager scriptMgr = new ScriptManager(typeMgr, new IlscriptsConfig(config), null, Embedder.throwsOnUse);
assertNotNull(scriptMgr.getScript(typeMgr.getDocumentType("newssummary")));
assertNull(scriptMgr.getScript(new DocumentType("unknown")));
}
@@ -52,7 +53,7 @@ public class ScriptManagerTestCase {
public void requireThatEmptyConfigurationDoesNotThrow() {
DocumentTypeManager typeMgr = new DocumentTypeManager();
typeMgr.configure("file:src/test/cfg/documentmanager_inherit.cfg");
- ScriptManager scriptMgr = new ScriptManager(typeMgr, new IlscriptsConfig(new IlscriptsConfig.Builder()), null);
+ ScriptManager scriptMgr = new ScriptManager(typeMgr, new IlscriptsConfig(new IlscriptsConfig.Builder()), null, Embedder.throwsOnUse);
assertNull(scriptMgr.getScript(new DocumentType("unknown")));
}
@@ -60,7 +61,7 @@ public class ScriptManagerTestCase {
public void requireThatUnknownDocumentTypeReturnsNull() {
DocumentTypeManager typeMgr = new DocumentTypeManager();
typeMgr.configure("file:src/test/cfg/documentmanager_inherit.cfg");
- ScriptManager scriptMgr = new ScriptManager(typeMgr, new IlscriptsConfig(new IlscriptsConfig.Builder()), null);
+ ScriptManager scriptMgr = new ScriptManager(typeMgr, new IlscriptsConfig(new IlscriptsConfig.Builder()), null, Embedder.throwsOnUse);
for (Iterator<DocumentType> it = typeMgr.documentTypeIterator(); it.hasNext(); ) {
assertNull(scriptMgr.getScript(it.next()));
}
diff --git a/document/CMakeLists.txt b/document/CMakeLists.txt
index 46da458fe6d..6505de79d39 100644
--- a/document/CMakeLists.txt
+++ b/document/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/document/doc/document-format.html b/document/doc/document-format.html
index 83a0cdd27ca..26e6cceca5c 100644
--- a/document/doc/document-format.html
+++ b/document/doc/document-format.html
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<html>
<head>
<title>Developers guide to the serialized document format</title>
diff --git a/document/pom.xml b/document/pom.xml
index acc24aca823..1bfb18767eb 100644
--- a/document/pom.xml
+++ b/document/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/document/src/main/java/com/yahoo/document/ArrayDataType.java b/document/src/main/java/com/yahoo/document/ArrayDataType.java
index 2cc3e529d06..d21535ab085 100644
--- a/document/src/main/java/com/yahoo/document/ArrayDataType.java
+++ b/document/src/main/java/com/yahoo/document/ArrayDataType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.Array;
diff --git a/document/src/main/java/com/yahoo/document/BaseStructDataType.java b/document/src/main/java/com/yahoo/document/BaseStructDataType.java
index 282c795ce90..97357f3fa7c 100755
--- a/document/src/main/java/com/yahoo/document/BaseStructDataType.java
+++ b/document/src/main/java/com/yahoo/document/BaseStructDataType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.compress.CompressionType;
diff --git a/document/src/main/java/com/yahoo/document/BucketDistribution.java b/document/src/main/java/com/yahoo/document/BucketDistribution.java
index b8752a4f49e..abacd4fdc2f 100644
--- a/document/src/main/java/com/yahoo/document/BucketDistribution.java
+++ b/document/src/main/java/com/yahoo/document/BucketDistribution.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.BucketId;
diff --git a/document/src/main/java/com/yahoo/document/BucketId.java b/document/src/main/java/com/yahoo/document/BucketId.java
index f6d3dc34af1..af3c53aa013 100755
--- a/document/src/main/java/com/yahoo/document/BucketId.java
+++ b/document/src/main/java/com/yahoo/document/BucketId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
/**
diff --git a/document/src/main/java/com/yahoo/document/BucketIdFactory.java b/document/src/main/java/com/yahoo/document/BucketIdFactory.java
index ba9f7064865..f20697db8eb 100644
--- a/document/src/main/java/com/yahoo/document/BucketIdFactory.java
+++ b/document/src/main/java/com/yahoo/document/BucketIdFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
/**
diff --git a/document/src/main/java/com/yahoo/document/CollectionDataType.java b/document/src/main/java/com/yahoo/document/CollectionDataType.java
index 9088f48d827..b78f28e8b36 100644
--- a/document/src/main/java/com/yahoo/document/CollectionDataType.java
+++ b/document/src/main/java/com/yahoo/document/CollectionDataType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.CollectionFieldValue;
diff --git a/document/src/main/java/com/yahoo/document/CompressionConfig.java b/document/src/main/java/com/yahoo/document/CompressionConfig.java
index 81eda13f7b2..69769148869 100644
--- a/document/src/main/java/com/yahoo/document/CompressionConfig.java
+++ b/document/src/main/java/com/yahoo/document/CompressionConfig.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.compress.CompressionType;
diff --git a/document/src/main/java/com/yahoo/document/DataType.java b/document/src/main/java/com/yahoo/document/DataType.java
index fd7ccfc5e96..bb1777954a3 100644
--- a/document/src/main/java/com/yahoo/document/DataType.java
+++ b/document/src/main/java/com/yahoo/document/DataType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.collections.Pair;
diff --git a/document/src/main/java/com/yahoo/document/DataTypeName.java b/document/src/main/java/com/yahoo/document/DataTypeName.java
index 1012fd69b30..b8e956e6b96 100644
--- a/document/src/main/java/com/yahoo/document/DataTypeName.java
+++ b/document/src/main/java/com/yahoo/document/DataTypeName.java
@@ -1,15 +1,13 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
-import com.yahoo.text.Lowercase;
import com.yahoo.text.Utf8Array;
import com.yahoo.text.Utf8String;
import java.io.Serializable;
/**
- * A full document type name, consisting of a <i>name</i> and a <i>version</i>. The name is case insensitive, and the
- * version must be a positive integer or 0. This is a <i>value object</i>.
+ * A full document type name. The name is case sensitive. This is a <i>value object</i>.
*
* @author bratseth
*/
diff --git a/document/src/main/java/com/yahoo/document/Document.java b/document/src/main/java/com/yahoo/document/Document.java
index 568fe9265d5..1a29bf29191 100644
--- a/document/src/main/java/com/yahoo/document/Document.java
+++ b/document/src/main/java/com/yahoo/document/Document.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.FieldValue;
diff --git a/document/src/main/java/com/yahoo/document/DocumentCalculator.java b/document/src/main/java/com/yahoo/document/DocumentCalculator.java
index aba400bebf0..76c28c93037 100644
--- a/document/src/main/java/com/yahoo/document/DocumentCalculator.java
+++ b/document/src/main/java/com/yahoo/document/DocumentCalculator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.select.Context;
diff --git a/document/src/main/java/com/yahoo/document/DocumentGet.java b/document/src/main/java/com/yahoo/document/DocumentGet.java
index 0cf67f54b65..b35ec5e00ef 100644
--- a/document/src/main/java/com/yahoo/document/DocumentGet.java
+++ b/document/src/main/java/com/yahoo/document/DocumentGet.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
/**
diff --git a/document/src/main/java/com/yahoo/document/DocumentId.java b/document/src/main/java/com/yahoo/document/DocumentId.java
index 26adb0b6dc5..8c35eaa0329 100644
--- a/document/src/main/java/com/yahoo/document/DocumentId.java
+++ b/document/src/main/java/com/yahoo/document/DocumentId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.idstring.IdString;
diff --git a/document/src/main/java/com/yahoo/document/DocumentOperation.java b/document/src/main/java/com/yahoo/document/DocumentOperation.java
index bb1e5d2b357..b719083bd11 100644
--- a/document/src/main/java/com/yahoo/document/DocumentOperation.java
+++ b/document/src/main/java/com/yahoo/document/DocumentOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
/**
diff --git a/document/src/main/java/com/yahoo/document/DocumentPut.java b/document/src/main/java/com/yahoo/document/DocumentPut.java
index 25246dc9a9e..bfadaa8d4da 100644
--- a/document/src/main/java/com/yahoo/document/DocumentPut.java
+++ b/document/src/main/java/com/yahoo/document/DocumentPut.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import java.util.Objects;
diff --git a/document/src/main/java/com/yahoo/document/DocumentRemove.java b/document/src/main/java/com/yahoo/document/DocumentRemove.java
index a815d9c0a5a..c1ba0d8594f 100644
--- a/document/src/main/java/com/yahoo/document/DocumentRemove.java
+++ b/document/src/main/java/com/yahoo/document/DocumentRemove.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import java.util.Objects;
diff --git a/document/src/main/java/com/yahoo/document/DocumentType.java b/document/src/main/java/com/yahoo/document/DocumentType.java
index af4aa62f21f..95a35b74f04 100755
--- a/document/src/main/java/com/yahoo/document/DocumentType.java
+++ b/document/src/main/java/com/yahoo/document/DocumentType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.google.common.collect.ImmutableList;
diff --git a/document/src/main/java/com/yahoo/document/DocumentTypeId.java b/document/src/main/java/com/yahoo/document/DocumentTypeId.java
index 0b90493f4cd..06b2733e367 100644
--- a/document/src/main/java/com/yahoo/document/DocumentTypeId.java
+++ b/document/src/main/java/com/yahoo/document/DocumentTypeId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
/**
diff --git a/document/src/main/java/com/yahoo/document/DocumentTypeManager.java b/document/src/main/java/com/yahoo/document/DocumentTypeManager.java
index a3ba27b640f..a6f2923d68f 100644
--- a/document/src/main/java/com/yahoo/document/DocumentTypeManager.java
+++ b/document/src/main/java/com/yahoo/document/DocumentTypeManager.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.google.inject.Inject;
diff --git a/document/src/main/java/com/yahoo/document/DocumentTypeManagerConfigurer.java b/document/src/main/java/com/yahoo/document/DocumentTypeManagerConfigurer.java
index c802d2307c0..db0566aecc1 100644
--- a/document/src/main/java/com/yahoo/document/DocumentTypeManagerConfigurer.java
+++ b/document/src/main/java/com/yahoo/document/DocumentTypeManagerConfigurer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.compress.CompressionType;
diff --git a/document/src/main/java/com/yahoo/document/DocumentUpdate.java b/document/src/main/java/com/yahoo/document/DocumentUpdate.java
index cba51ee999e..befabfb6c07 100644
--- a/document/src/main/java/com/yahoo/document/DocumentUpdate.java
+++ b/document/src/main/java/com/yahoo/document/DocumentUpdate.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.FieldValue;
diff --git a/document/src/main/java/com/yahoo/document/DocumentUtil.java b/document/src/main/java/com/yahoo/document/DocumentUtil.java
index 78fe748dac8..f1a75f78b09 100644
--- a/document/src/main/java/com/yahoo/document/DocumentUtil.java
+++ b/document/src/main/java/com/yahoo/document/DocumentUtil.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
/**
diff --git a/document/src/main/java/com/yahoo/document/ExtendedField.java b/document/src/main/java/com/yahoo/document/ExtendedField.java
index ac4fc0c58c5..7b897bd9845 100644
--- a/document/src/main/java/com/yahoo/document/ExtendedField.java
+++ b/document/src/main/java/com/yahoo/document/ExtendedField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.FieldValue;
diff --git a/document/src/main/java/com/yahoo/document/ExtendedStringField.java b/document/src/main/java/com/yahoo/document/ExtendedStringField.java
index 46678065b34..c2035f167ce 100644
--- a/document/src/main/java/com/yahoo/document/ExtendedStringField.java
+++ b/document/src/main/java/com/yahoo/document/ExtendedStringField.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.annotation.SpanTree;
diff --git a/document/src/main/java/com/yahoo/document/Field.java b/document/src/main/java/com/yahoo/document/Field.java
index dec90cb258f..58721c08d37 100644
--- a/document/src/main/java/com/yahoo/document/Field.java
+++ b/document/src/main/java/com/yahoo/document/Field.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.collections.BobHash;
diff --git a/document/src/main/java/com/yahoo/document/FieldPath.java b/document/src/main/java/com/yahoo/document/FieldPath.java
index 134681a4028..dfdf60e0791 100755
--- a/document/src/main/java/com/yahoo/document/FieldPath.java
+++ b/document/src/main/java/com/yahoo/document/FieldPath.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import java.util.ArrayList;
diff --git a/document/src/main/java/com/yahoo/document/FieldPathEntry.java b/document/src/main/java/com/yahoo/document/FieldPathEntry.java
index 58e59647500..2dcf676ac80 100755
--- a/document/src/main/java/com/yahoo/document/FieldPathEntry.java
+++ b/document/src/main/java/com/yahoo/document/FieldPathEntry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.FieldValue;
diff --git a/document/src/main/java/com/yahoo/document/FixedBucketSpaces.java b/document/src/main/java/com/yahoo/document/FixedBucketSpaces.java
index a225f5aa088..e20affb80b0 100644
--- a/document/src/main/java/com/yahoo/document/FixedBucketSpaces.java
+++ b/document/src/main/java/com/yahoo/document/FixedBucketSpaces.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
/**
diff --git a/document/src/main/java/com/yahoo/document/Generated.java b/document/src/main/java/com/yahoo/document/Generated.java
index b58471617fb..a52e7333ff2 100644
--- a/document/src/main/java/com/yahoo/document/Generated.java
+++ b/document/src/main/java/com/yahoo/document/Generated.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import java.lang.annotation.Retention;
diff --git a/document/src/main/java/com/yahoo/document/GlobalId.java b/document/src/main/java/com/yahoo/document/GlobalId.java
index 41b4a2da51c..9e90b59171c 100644
--- a/document/src/main/java/com/yahoo/document/GlobalId.java
+++ b/document/src/main/java/com/yahoo/document/GlobalId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.collections.MD5;
diff --git a/document/src/main/java/com/yahoo/document/MapDataType.java b/document/src/main/java/com/yahoo/document/MapDataType.java
index 34f50eb9e33..335cda7d3ae 100644
--- a/document/src/main/java/com/yahoo/document/MapDataType.java
+++ b/document/src/main/java/com/yahoo/document/MapDataType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.FieldValue;
diff --git a/document/src/main/java/com/yahoo/document/NumericDataType.java b/document/src/main/java/com/yahoo/document/NumericDataType.java
index 26da90a709c..052c18866fa 100644
--- a/document/src/main/java/com/yahoo/document/NumericDataType.java
+++ b/document/src/main/java/com/yahoo/document/NumericDataType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.vespa.objects.Ids;
diff --git a/document/src/main/java/com/yahoo/document/PositionDataType.java b/document/src/main/java/com/yahoo/document/PositionDataType.java
index 0e69171c106..f81dffa3837 100644
--- a/document/src/main/java/com/yahoo/document/PositionDataType.java
+++ b/document/src/main/java/com/yahoo/document/PositionDataType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.FieldValue;
diff --git a/document/src/main/java/com/yahoo/document/PrimitiveDataType.java b/document/src/main/java/com/yahoo/document/PrimitiveDataType.java
index 963bebd1b7b..b653953dce9 100644
--- a/document/src/main/java/com/yahoo/document/PrimitiveDataType.java
+++ b/document/src/main/java/com/yahoo/document/PrimitiveDataType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.FieldValue;
diff --git a/document/src/main/java/com/yahoo/document/ReferenceDataType.java b/document/src/main/java/com/yahoo/document/ReferenceDataType.java
index bf8694f4a21..78a30c0fcf2 100644
--- a/document/src/main/java/com/yahoo/document/ReferenceDataType.java
+++ b/document/src/main/java/com/yahoo/document/ReferenceDataType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.FieldValue;
diff --git a/document/src/main/java/com/yahoo/document/SimpleDocument.java b/document/src/main/java/com/yahoo/document/SimpleDocument.java
index 13e287714d0..eaa5ef83d1a 100644
--- a/document/src/main/java/com/yahoo/document/SimpleDocument.java
+++ b/document/src/main/java/com/yahoo/document/SimpleDocument.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.FieldValue;
diff --git a/document/src/main/java/com/yahoo/document/StructDataType.java b/document/src/main/java/com/yahoo/document/StructDataType.java
index 8a153856eff..34967cf6f51 100644
--- a/document/src/main/java/com/yahoo/document/StructDataType.java
+++ b/document/src/main/java/com/yahoo/document/StructDataType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.google.common.collect.ImmutableList;
diff --git a/document/src/main/java/com/yahoo/document/StructuredDataType.java b/document/src/main/java/com/yahoo/document/StructuredDataType.java
index 8a5f344e79e..57e53eda9fb 100644
--- a/document/src/main/java/com/yahoo/document/StructuredDataType.java
+++ b/document/src/main/java/com/yahoo/document/StructuredDataType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.FieldValue;
diff --git a/document/src/main/java/com/yahoo/document/TemporaryDataType.java b/document/src/main/java/com/yahoo/document/TemporaryDataType.java
index ea6ce9daa88..c32e271737c 100644
--- a/document/src/main/java/com/yahoo/document/TemporaryDataType.java
+++ b/document/src/main/java/com/yahoo/document/TemporaryDataType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.FieldValue;
diff --git a/document/src/main/java/com/yahoo/document/TemporaryStructuredDataType.java b/document/src/main/java/com/yahoo/document/TemporaryStructuredDataType.java
index f4139a597d2..9d648367c4e 100644
--- a/document/src/main/java/com/yahoo/document/TemporaryStructuredDataType.java
+++ b/document/src/main/java/com/yahoo/document/TemporaryStructuredDataType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
/**
diff --git a/document/src/main/java/com/yahoo/document/TensorDataType.java b/document/src/main/java/com/yahoo/document/TensorDataType.java
index c4fdff30f8b..a5dc4a98dad 100644
--- a/document/src/main/java/com/yahoo/document/TensorDataType.java
+++ b/document/src/main/java/com/yahoo/document/TensorDataType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.FieldValue;
@@ -21,7 +21,7 @@ public class TensorDataType extends DataType {
public static int classId = registerClass(Ids.document + 59, TensorDataType.class);
public TensorDataType(TensorType tensorType) {
- super(tensorType.toString(), DataType.tensorDataTypeCode);
+ super(tensorType == null ? "tensor" : tensorType.toString(), DataType.tensorDataTypeCode);
this.tensorType = tensorType;
}
@@ -64,4 +64,5 @@ public class TensorDataType extends DataType {
public int hashCode() {
return Objects.hash(super.hashCode(), tensorType);
}
+
}
diff --git a/document/src/main/java/com/yahoo/document/TestAndSetCondition.java b/document/src/main/java/com/yahoo/document/TestAndSetCondition.java
index a582807e38c..6f72f03fd54 100644
--- a/document/src/main/java/com/yahoo/document/TestAndSetCondition.java
+++ b/document/src/main/java/com/yahoo/document/TestAndSetCondition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import java.util.Objects;
diff --git a/document/src/main/java/com/yahoo/document/WeightedSetDataType.java b/document/src/main/java/com/yahoo/document/WeightedSetDataType.java
index d89967048d6..35dd13efb0b 100644
--- a/document/src/main/java/com/yahoo/document/WeightedSetDataType.java
+++ b/document/src/main/java/com/yahoo/document/WeightedSetDataType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.WeightedSet;
diff --git a/document/src/main/java/com/yahoo/document/annotation/AlternateSpanList.java b/document/src/main/java/com/yahoo/document/annotation/AlternateSpanList.java
index 54511d6d0b9..84851ee60d3 100644
--- a/document/src/main/java/com/yahoo/document/annotation/AlternateSpanList.java
+++ b/document/src/main/java/com/yahoo/document/annotation/AlternateSpanList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.serialization.SpanNodeReader;
diff --git a/document/src/main/java/com/yahoo/document/annotation/Annotation.java b/document/src/main/java/com/yahoo/document/annotation/Annotation.java
index 1aaaa8e1d16..a5f70c2b9e3 100644
--- a/document/src/main/java/com/yahoo/document/annotation/Annotation.java
+++ b/document/src/main/java/com/yahoo/document/annotation/Annotation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/annotation/AnnotationContainer.java b/document/src/main/java/com/yahoo/document/annotation/AnnotationContainer.java
index e9a81f16f90..fcc39384e56 100644
--- a/document/src/main/java/com/yahoo/document/annotation/AnnotationContainer.java
+++ b/document/src/main/java/com/yahoo/document/annotation/AnnotationContainer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import java.util.Collection;
diff --git a/document/src/main/java/com/yahoo/document/annotation/AnnotationReference.java b/document/src/main/java/com/yahoo/document/annotation/AnnotationReference.java
index 66ab895c88b..cb8a7a6dd0a 100644
--- a/document/src/main/java/com/yahoo/document/annotation/AnnotationReference.java
+++ b/document/src/main/java/com/yahoo/document/annotation/AnnotationReference.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/annotation/AnnotationReferenceDataType.java b/document/src/main/java/com/yahoo/document/annotation/AnnotationReferenceDataType.java
index 26b8919f4b8..912d366b634 100644
--- a/document/src/main/java/com/yahoo/document/annotation/AnnotationReferenceDataType.java
+++ b/document/src/main/java/com/yahoo/document/annotation/AnnotationReferenceDataType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/annotation/AnnotationType.java b/document/src/main/java/com/yahoo/document/annotation/AnnotationType.java
index c93c69b08fc..4acc9c00384 100644
--- a/document/src/main/java/com/yahoo/document/annotation/AnnotationType.java
+++ b/document/src/main/java/com/yahoo/document/annotation/AnnotationType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.google.common.collect.ImmutableList;
diff --git a/document/src/main/java/com/yahoo/document/annotation/AnnotationType2AnnotationContainer.java b/document/src/main/java/com/yahoo/document/annotation/AnnotationType2AnnotationContainer.java
index b0079759b21..aadbc986b10 100644
--- a/document/src/main/java/com/yahoo/document/annotation/AnnotationType2AnnotationContainer.java
+++ b/document/src/main/java/com/yahoo/document/annotation/AnnotationType2AnnotationContainer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.google.common.collect.Multimap;
diff --git a/document/src/main/java/com/yahoo/document/annotation/AnnotationTypeRegistry.java b/document/src/main/java/com/yahoo/document/annotation/AnnotationTypeRegistry.java
index 08dc602a720..dbd77fe7944 100644
--- a/document/src/main/java/com/yahoo/document/annotation/AnnotationTypeRegistry.java
+++ b/document/src/main/java/com/yahoo/document/annotation/AnnotationTypeRegistry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import java.util.Collections;
diff --git a/document/src/main/java/com/yahoo/document/annotation/AnnotationTypes.java b/document/src/main/java/com/yahoo/document/annotation/AnnotationTypes.java
index d2409652d3e..cd5d2ad2004 100644
--- a/document/src/main/java/com/yahoo/document/annotation/AnnotationTypes.java
+++ b/document/src/main/java/com/yahoo/document/annotation/AnnotationTypes.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/annotation/DummySpanNode.java b/document/src/main/java/com/yahoo/document/annotation/DummySpanNode.java
index 69f462f777c..eb9cfb5a893 100644
--- a/document/src/main/java/com/yahoo/document/annotation/DummySpanNode.java
+++ b/document/src/main/java/com/yahoo/document/annotation/DummySpanNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import java.util.Collections;
diff --git a/document/src/main/java/com/yahoo/document/annotation/InvalidatingIterator.java b/document/src/main/java/com/yahoo/document/annotation/InvalidatingIterator.java
index a780b6d16bf..a705706e795 100644
--- a/document/src/main/java/com/yahoo/document/annotation/InvalidatingIterator.java
+++ b/document/src/main/java/com/yahoo/document/annotation/InvalidatingIterator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import java.util.ListIterator;
diff --git a/document/src/main/java/com/yahoo/document/annotation/IteratingAnnotationContainer.java b/document/src/main/java/com/yahoo/document/annotation/IteratingAnnotationContainer.java
index 3a305361700..398d7f9cc12 100644
--- a/document/src/main/java/com/yahoo/document/annotation/IteratingAnnotationContainer.java
+++ b/document/src/main/java/com/yahoo/document/annotation/IteratingAnnotationContainer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import java.util.IdentityHashMap;
diff --git a/document/src/main/java/com/yahoo/document/annotation/ListAnnotationContainer.java b/document/src/main/java/com/yahoo/document/annotation/ListAnnotationContainer.java
index 9fe2f8d1cdc..966a7347173 100644
--- a/document/src/main/java/com/yahoo/document/annotation/ListAnnotationContainer.java
+++ b/document/src/main/java/com/yahoo/document/annotation/ListAnnotationContainer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import java.util.Collection;
diff --git a/document/src/main/java/com/yahoo/document/annotation/PeekableListIterator.java b/document/src/main/java/com/yahoo/document/annotation/PeekableListIterator.java
index 5a2cb544426..1f87d161cd0 100644
--- a/document/src/main/java/com/yahoo/document/annotation/PeekableListIterator.java
+++ b/document/src/main/java/com/yahoo/document/annotation/PeekableListIterator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import java.util.ListIterator;
diff --git a/document/src/main/java/com/yahoo/document/annotation/RecursiveNodeIterator.java b/document/src/main/java/com/yahoo/document/annotation/RecursiveNodeIterator.java
index 9ded7b41732..775ce41d303 100644
--- a/document/src/main/java/com/yahoo/document/annotation/RecursiveNodeIterator.java
+++ b/document/src/main/java/com/yahoo/document/annotation/RecursiveNodeIterator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import java.util.ListIterator;
diff --git a/document/src/main/java/com/yahoo/document/annotation/SerialIterator.java b/document/src/main/java/com/yahoo/document/annotation/SerialIterator.java
index 00d41e1d1cb..8d9423125f4 100644
--- a/document/src/main/java/com/yahoo/document/annotation/SerialIterator.java
+++ b/document/src/main/java/com/yahoo/document/annotation/SerialIterator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
diff --git a/document/src/main/java/com/yahoo/document/annotation/Span.java b/document/src/main/java/com/yahoo/document/annotation/Span.java
index fd030f01be1..c291ae51146 100644
--- a/document/src/main/java/com/yahoo/document/annotation/Span.java
+++ b/document/src/main/java/com/yahoo/document/annotation/Span.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.serialization.SpanNodeReader;
diff --git a/document/src/main/java/com/yahoo/document/annotation/SpanList.java b/document/src/main/java/com/yahoo/document/annotation/SpanList.java
index 5afe4678c5b..4ec30fb0686 100644
--- a/document/src/main/java/com/yahoo/document/annotation/SpanList.java
+++ b/document/src/main/java/com/yahoo/document/annotation/SpanList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.serialization.SpanNodeReader;
diff --git a/document/src/main/java/com/yahoo/document/annotation/SpanNode.java b/document/src/main/java/com/yahoo/document/annotation/SpanNode.java
index e1a7b11d2e0..3cf37083c57 100644
--- a/document/src/main/java/com/yahoo/document/annotation/SpanNode.java
+++ b/document/src/main/java/com/yahoo/document/annotation/SpanNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.datatypes.FieldValue;
diff --git a/document/src/main/java/com/yahoo/document/annotation/SpanNode2AnnotationContainer.java b/document/src/main/java/com/yahoo/document/annotation/SpanNode2AnnotationContainer.java
index c19f02f5c0b..d3f29492a74 100644
--- a/document/src/main/java/com/yahoo/document/annotation/SpanNode2AnnotationContainer.java
+++ b/document/src/main/java/com/yahoo/document/annotation/SpanNode2AnnotationContainer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
diff --git a/document/src/main/java/com/yahoo/document/annotation/SpanNodeParent.java b/document/src/main/java/com/yahoo/document/annotation/SpanNodeParent.java
index b39e92a1f3c..fa2f546a338 100644
--- a/document/src/main/java/com/yahoo/document/annotation/SpanNodeParent.java
+++ b/document/src/main/java/com/yahoo/document/annotation/SpanNodeParent.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.datatypes.StringFieldValue;
diff --git a/document/src/main/java/com/yahoo/document/annotation/SpanTree.java b/document/src/main/java/com/yahoo/document/annotation/SpanTree.java
index 9df45ab6c2e..b03f587d839 100644
--- a/document/src/main/java/com/yahoo/document/annotation/SpanTree.java
+++ b/document/src/main/java/com/yahoo/document/annotation/SpanTree.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.google.common.collect.ImmutableList;
diff --git a/document/src/main/java/com/yahoo/document/annotation/SpanTrees.java b/document/src/main/java/com/yahoo/document/annotation/SpanTrees.java
index b28bcbc98bb..9d0cde3d3f7 100644
--- a/document/src/main/java/com/yahoo/document/annotation/SpanTrees.java
+++ b/document/src/main/java/com/yahoo/document/annotation/SpanTrees.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
/**
diff --git a/document/src/main/java/com/yahoo/document/annotation/package-info.java b/document/src/main/java/com/yahoo/document/annotation/package-info.java
index 75ce02f7940..8cb1dfe3b2f 100644
--- a/document/src/main/java/com/yahoo/document/annotation/package-info.java
+++ b/document/src/main/java/com/yahoo/document/annotation/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Provides classes and interfaces for creating trees of spans over string
* values in Vespa documents, and annotating these spans.
diff --git a/document/src/main/java/com/yahoo/document/config/package-info.java b/document/src/main/java/com/yahoo/document/config/package-info.java
index 3522c2a1ad5..7066cbded3f 100644
--- a/document/src/main/java/com/yahoo/document/config/package-info.java
+++ b/document/src/main/java/com/yahoo/document/config/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.document.config;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/Array.java b/document/src/main/java/com/yahoo/document/datatypes/Array.java
index ee97bbc6669..11a8eb7a350 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/Array.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/Array.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.collections.CollectionComparator;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/BoolFieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/BoolFieldValue.java
index 0627a8dc73c..6d2b12405b4 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/BoolFieldValue.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/BoolFieldValue.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/ByteFieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/ByteFieldValue.java
index 2f8cb96219c..eefc33c9d85 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/ByteFieldValue.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/ByteFieldValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/CollectionFieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/CollectionFieldValue.java
index ad6d329cbae..63f4ea44de1 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/CollectionFieldValue.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/CollectionFieldValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.CollectionDataType;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/CompositeFieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/CompositeFieldValue.java
index 6efd5a86f75..d0ace0ce45c 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/CompositeFieldValue.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/CompositeFieldValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/DoubleFieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/DoubleFieldValue.java
index 99bac017b78..724671e4ff1 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/DoubleFieldValue.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/DoubleFieldValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/FieldPathIteratorHandler.java b/document/src/main/java/com/yahoo/document/datatypes/FieldPathIteratorHandler.java
index 9189a97dbf6..f1ebc178687 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/FieldPathIteratorHandler.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/FieldPathIteratorHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import java.util.Map;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/FieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/FieldValue.java
index 287af5c34b9..268390543cf 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/FieldValue.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/FieldValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.ArrayDataType;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/Float16FieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/Float16FieldValue.java
index 013f656b7b5..12e2507587e 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/Float16FieldValue.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/Float16FieldValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/FloatFieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/FloatFieldValue.java
index e09cbea861c..27a6d3570b5 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/FloatFieldValue.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/FloatFieldValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/IntegerFieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/IntegerFieldValue.java
index 62090bab8cb..df2d92bcfba 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/IntegerFieldValue.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/IntegerFieldValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/LongFieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/LongFieldValue.java
index 45d044bcb9a..44fbd1ba5e1 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/LongFieldValue.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/LongFieldValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/MapFieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/MapFieldValue.java
index 089b3a53d67..a82639cae0c 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/MapFieldValue.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/MapFieldValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/NumericFieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/NumericFieldValue.java
index cd2b2590d50..c0dde28aa04 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/NumericFieldValue.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/NumericFieldValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
public abstract class NumericFieldValue extends FieldValue {
diff --git a/document/src/main/java/com/yahoo/document/datatypes/PredicateFieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/PredicateFieldValue.java
index 048213d00d3..393cb01f5c2 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/PredicateFieldValue.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/PredicateFieldValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/Raw.java b/document/src/main/java/com/yahoo/document/datatypes/Raw.java
index 7900615aa93..ecd751327a3 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/Raw.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/Raw.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/ReferenceFieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/ReferenceFieldValue.java
index 034167b1121..b76c3f2989f 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/ReferenceFieldValue.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/ReferenceFieldValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/StringFieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/StringFieldValue.java
index 156fd853241..2d89d2c5db7 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/StringFieldValue.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/StringFieldValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.google.common.collect.ImmutableList;
@@ -74,7 +74,6 @@ public class StringFieldValue extends FieldValue {
* Returns {@link com.yahoo.document.DataType}.STRING.
*
* @return DataType.STRING, always
- * @see com.yahoo.document.DataType
*/
@Override
public DataType getDataType() {
diff --git a/document/src/main/java/com/yahoo/document/datatypes/Struct.java b/document/src/main/java/com/yahoo/document/datatypes/Struct.java
index db9349f22cf..fd13885ac36 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/Struct.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/Struct.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.collections.Hashlet;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/StructuredFieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/StructuredFieldValue.java
index 43016187954..396a42b1237 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/StructuredFieldValue.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/StructuredFieldValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.*;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/TensorFieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/TensorFieldValue.java
index 6dbe1c05646..7003d19e7d1 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/TensorFieldValue.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/TensorFieldValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.Field;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/UriFieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/UriFieldValue.java
index 1b51d6625e2..bf525de38ee 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/UriFieldValue.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/UriFieldValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/WeightedSet.java b/document/src/main/java/com/yahoo/document/datatypes/WeightedSet.java
index 2d78deb9479..583c68d631b 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/WeightedSet.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/WeightedSet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/package-info.java b/document/src/main/java/com/yahoo/document/datatypes/package-info.java
index 16bc154a0a9..c275d983a31 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/package-info.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.document.datatypes;
diff --git a/document/src/main/java/com/yahoo/document/fieldpathupdate/AddFieldPathUpdate.java b/document/src/main/java/com/yahoo/document/fieldpathupdate/AddFieldPathUpdate.java
index 74b94b8135e..db55f17ac70 100644
--- a/document/src/main/java/com/yahoo/document/fieldpathupdate/AddFieldPathUpdate.java
+++ b/document/src/main/java/com/yahoo/document/fieldpathupdate/AddFieldPathUpdate.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.fieldpathupdate;
import com.yahoo.document.Document;
@@ -11,9 +11,10 @@ import com.yahoo.document.serialization.DocumentUpdateReader;
import com.yahoo.document.serialization.VespaDocumentSerializer6;
/**
- * @author <a href="mailto:thomasg@yahoo-inc.com">Thomas Gundersen</a>
+ * @author Thomas Gundersen
*/
public class AddFieldPathUpdate extends FieldPathUpdate {
+
class IteratorHandler extends FieldPathIteratorHandler {
Array newValues;
diff --git a/document/src/main/java/com/yahoo/document/fieldpathupdate/AssignFieldPathUpdate.java b/document/src/main/java/com/yahoo/document/fieldpathupdate/AssignFieldPathUpdate.java
index b01742018a2..b893c168243 100644
--- a/document/src/main/java/com/yahoo/document/fieldpathupdate/AssignFieldPathUpdate.java
+++ b/document/src/main/java/com/yahoo/document/fieldpathupdate/AssignFieldPathUpdate.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.fieldpathupdate;
import com.yahoo.document.Document;
diff --git a/document/src/main/java/com/yahoo/document/fieldpathupdate/FieldPathUpdate.java b/document/src/main/java/com/yahoo/document/fieldpathupdate/FieldPathUpdate.java
index d4144116a03..84994de7069 100644
--- a/document/src/main/java/com/yahoo/document/fieldpathupdate/FieldPathUpdate.java
+++ b/document/src/main/java/com/yahoo/document/fieldpathupdate/FieldPathUpdate.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.fieldpathupdate;
import com.yahoo.document.Document;
diff --git a/document/src/main/java/com/yahoo/document/fieldpathupdate/RemoveFieldPathUpdate.java b/document/src/main/java/com/yahoo/document/fieldpathupdate/RemoveFieldPathUpdate.java
index 59e196eb40f..a0a88fc22da 100644
--- a/document/src/main/java/com/yahoo/document/fieldpathupdate/RemoveFieldPathUpdate.java
+++ b/document/src/main/java/com/yahoo/document/fieldpathupdate/RemoveFieldPathUpdate.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.fieldpathupdate;
import com.yahoo.document.Document;
diff --git a/document/src/main/java/com/yahoo/document/fieldpathupdate/package-info.java b/document/src/main/java/com/yahoo/document/fieldpathupdate/package-info.java
index 0c773f61505..8f1602f9391 100644
--- a/document/src/main/java/com/yahoo/document/fieldpathupdate/package-info.java
+++ b/document/src/main/java/com/yahoo/document/fieldpathupdate/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.document.fieldpathupdate;
diff --git a/document/src/main/java/com/yahoo/document/fieldset/AllFields.java b/document/src/main/java/com/yahoo/document/fieldset/AllFields.java
index 247d2829124..2e101d69e71 100644
--- a/document/src/main/java/com/yahoo/document/fieldset/AllFields.java
+++ b/document/src/main/java/com/yahoo/document/fieldset/AllFields.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.fieldset;
/**
diff --git a/document/src/main/java/com/yahoo/document/fieldset/DocIdOnly.java b/document/src/main/java/com/yahoo/document/fieldset/DocIdOnly.java
index eeac213e2b4..1548ddbbfc3 100644
--- a/document/src/main/java/com/yahoo/document/fieldset/DocIdOnly.java
+++ b/document/src/main/java/com/yahoo/document/fieldset/DocIdOnly.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.fieldset;
/**
diff --git a/document/src/main/java/com/yahoo/document/fieldset/FieldCollection.java b/document/src/main/java/com/yahoo/document/fieldset/FieldCollection.java
index 182980133ff..19ce3061f8e 100644
--- a/document/src/main/java/com/yahoo/document/fieldset/FieldCollection.java
+++ b/document/src/main/java/com/yahoo/document/fieldset/FieldCollection.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.fieldset;
import com.yahoo.document.DocumentType;
diff --git a/document/src/main/java/com/yahoo/document/fieldset/FieldSet.java b/document/src/main/java/com/yahoo/document/fieldset/FieldSet.java
index f787f828c94..ded387616fc 100644
--- a/document/src/main/java/com/yahoo/document/fieldset/FieldSet.java
+++ b/document/src/main/java/com/yahoo/document/fieldset/FieldSet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.fieldset;
/**
diff --git a/document/src/main/java/com/yahoo/document/fieldset/FieldSetRepo.java b/document/src/main/java/com/yahoo/document/fieldset/FieldSetRepo.java
index 905376e81ca..41a1b898867 100644
--- a/document/src/main/java/com/yahoo/document/fieldset/FieldSetRepo.java
+++ b/document/src/main/java/com/yahoo/document/fieldset/FieldSetRepo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.fieldset;
import com.yahoo.document.Document;
diff --git a/document/src/main/java/com/yahoo/document/fieldset/NoFields.java b/document/src/main/java/com/yahoo/document/fieldset/NoFields.java
index 91663067db0..02bbefbbd02 100644
--- a/document/src/main/java/com/yahoo/document/fieldset/NoFields.java
+++ b/document/src/main/java/com/yahoo/document/fieldset/NoFields.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.fieldset;
/**
diff --git a/document/src/main/java/com/yahoo/document/fieldset/package-info.java b/document/src/main/java/com/yahoo/document/fieldset/package-info.java
index 51fa1d0590a..03d24e878f2 100644
--- a/document/src/main/java/com/yahoo/document/fieldset/package-info.java
+++ b/document/src/main/java/com/yahoo/document/fieldset/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.document.fieldset;
diff --git a/document/src/main/java/com/yahoo/document/idstring/IdIdString.java b/document/src/main/java/com/yahoo/document/idstring/IdIdString.java
index bb09dff7a98..5144d304549 100644
--- a/document/src/main/java/com/yahoo/document/idstring/IdIdString.java
+++ b/document/src/main/java/com/yahoo/document/idstring/IdIdString.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.idstring;
import com.yahoo.collections.MD5;
diff --git a/document/src/main/java/com/yahoo/document/idstring/IdString.java b/document/src/main/java/com/yahoo/document/idstring/IdString.java
index c5f5a088bf9..62fd7a2df99 100644
--- a/document/src/main/java/com/yahoo/document/idstring/IdString.java
+++ b/document/src/main/java/com/yahoo/document/idstring/IdString.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.idstring;
import com.google.common.annotations.Beta;
diff --git a/document/src/main/java/com/yahoo/document/idstring/package-info.java b/document/src/main/java/com/yahoo/document/idstring/package-info.java
index 3ee22fe683a..cea4c8d88f9 100644
--- a/document/src/main/java/com/yahoo/document/idstring/package-info.java
+++ b/document/src/main/java/com/yahoo/document/idstring/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.document.idstring;
diff --git a/document/src/main/java/com/yahoo/document/json/DocumentOperationType.java b/document/src/main/java/com/yahoo/document/json/DocumentOperationType.java
index 6d53e1948c9..c85e9f5671b 100644
--- a/document/src/main/java/com/yahoo/document/json/DocumentOperationType.java
+++ b/document/src/main/java/com/yahoo/document/json/DocumentOperationType.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json;
/**
diff --git a/document/src/main/java/com/yahoo/document/json/DocumentUpdateJsonSerializer.java b/document/src/main/java/com/yahoo/document/json/DocumentUpdateJsonSerializer.java
index e2beafa66f2..52f27046640 100644
--- a/document/src/main/java/com/yahoo/document/json/DocumentUpdateJsonSerializer.java
+++ b/document/src/main/java/com/yahoo/document/json/DocumentUpdateJsonSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json;
import com.fasterxml.jackson.core.JsonFactory;
diff --git a/document/src/main/java/com/yahoo/document/json/JsonFeedReader.java b/document/src/main/java/com/yahoo/document/json/JsonFeedReader.java
index 1f2731d5fbe..d0bd41c692c 100644
--- a/document/src/main/java/com/yahoo/document/json/JsonFeedReader.java
+++ b/document/src/main/java/com/yahoo/document/json/JsonFeedReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json;
import com.fasterxml.jackson.core.JsonFactory;
diff --git a/document/src/main/java/com/yahoo/document/json/JsonReader.java b/document/src/main/java/com/yahoo/document/json/JsonReader.java
index 3162056db66..009fcb3de28 100644
--- a/document/src/main/java/com/yahoo/document/json/JsonReader.java
+++ b/document/src/main/java/com/yahoo/document/json/JsonReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json;
import com.fasterxml.jackson.core.JsonFactory;
diff --git a/document/src/main/java/com/yahoo/document/json/JsonReaderException.java b/document/src/main/java/com/yahoo/document/json/JsonReaderException.java
index 2363df30374..a7b53d4cc43 100644
--- a/document/src/main/java/com/yahoo/document/json/JsonReaderException.java
+++ b/document/src/main/java/com/yahoo/document/json/JsonReaderException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json;
import com.yahoo.document.DocumentId;
diff --git a/document/src/main/java/com/yahoo/document/json/JsonSerializationHelper.java b/document/src/main/java/com/yahoo/document/json/JsonSerializationHelper.java
index 7ae09f604b7..1d9fd3aa1ec 100644
--- a/document/src/main/java/com/yahoo/document/json/JsonSerializationHelper.java
+++ b/document/src/main/java/com/yahoo/document/json/JsonSerializationHelper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json;
import com.fasterxml.jackson.core.JsonGenerator;
diff --git a/document/src/main/java/com/yahoo/document/json/JsonWriter.java b/document/src/main/java/com/yahoo/document/json/JsonWriter.java
index 73b563a30ab..95faf753877 100644
--- a/document/src/main/java/com/yahoo/document/json/JsonWriter.java
+++ b/document/src/main/java/com/yahoo/document/json/JsonWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json;
import com.fasterxml.jackson.core.JsonFactory;
diff --git a/document/src/main/java/com/yahoo/document/json/TokenBuffer.java b/document/src/main/java/com/yahoo/document/json/TokenBuffer.java
index 9db80f3972b..4fff9c45ea5 100644
--- a/document/src/main/java/com/yahoo/document/json/TokenBuffer.java
+++ b/document/src/main/java/com/yahoo/document/json/TokenBuffer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json;
import java.io.IOException;
diff --git a/document/src/main/java/com/yahoo/document/json/document/DocumentParser.java b/document/src/main/java/com/yahoo/document/json/document/DocumentParser.java
index d6d95ca0bc6..5e1c1eb6ac4 100644
--- a/document/src/main/java/com/yahoo/document/json/document/DocumentParser.java
+++ b/document/src/main/java/com/yahoo/document/json/document/DocumentParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json.document;
import com.fasterxml.jackson.core.JsonParser;
diff --git a/document/src/main/java/com/yahoo/document/json/package-info.java b/document/src/main/java/com/yahoo/document/json/package-info.java
index e4332b5eff7..81648a39d7a 100644
--- a/document/src/main/java/com/yahoo/document/json/package-info.java
+++ b/document/src/main/java/com/yahoo/document/json/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Infrastructure for building Vespa documents and feed operations from JSON.
*/
diff --git a/document/src/main/java/com/yahoo/document/json/readers/AddRemoveCreator.java b/document/src/main/java/com/yahoo/document/json/readers/AddRemoveCreator.java
index 73be43ca9d9..b0882c3ab03 100644
--- a/document/src/main/java/com/yahoo/document/json/readers/AddRemoveCreator.java
+++ b/document/src/main/java/com/yahoo/document/json/readers/AddRemoveCreator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json.readers;
import com.fasterxml.jackson.core.JsonToken;
diff --git a/document/src/main/java/com/yahoo/document/json/readers/ArrayReader.java b/document/src/main/java/com/yahoo/document/json/readers/ArrayReader.java
index 43dfa371361..9c27b1eb9d0 100644
--- a/document/src/main/java/com/yahoo/document/json/readers/ArrayReader.java
+++ b/document/src/main/java/com/yahoo/document/json/readers/ArrayReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json.readers;
import com.fasterxml.jackson.core.JsonToken;
diff --git a/document/src/main/java/com/yahoo/document/json/readers/CompositeReader.java b/document/src/main/java/com/yahoo/document/json/readers/CompositeReader.java
index 2808e98149f..8d2b19b2818 100644
--- a/document/src/main/java/com/yahoo/document/json/readers/CompositeReader.java
+++ b/document/src/main/java/com/yahoo/document/json/readers/CompositeReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json.readers;
import com.fasterxml.jackson.core.JsonToken;
diff --git a/document/src/main/java/com/yahoo/document/json/readers/DocumentParseInfo.java b/document/src/main/java/com/yahoo/document/json/readers/DocumentParseInfo.java
index 878324d0d1e..1757da8f0cb 100644
--- a/document/src/main/java/com/yahoo/document/json/readers/DocumentParseInfo.java
+++ b/document/src/main/java/com/yahoo/document/json/readers/DocumentParseInfo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json.readers;
import com.yahoo.document.DocumentId;
diff --git a/document/src/main/java/com/yahoo/document/json/readers/JsonParserHelpers.java b/document/src/main/java/com/yahoo/document/json/readers/JsonParserHelpers.java
index 6339add222e..1723df2bd54 100644
--- a/document/src/main/java/com/yahoo/document/json/readers/JsonParserHelpers.java
+++ b/document/src/main/java/com/yahoo/document/json/readers/JsonParserHelpers.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json.readers;
diff --git a/document/src/main/java/com/yahoo/document/json/readers/MapReader.java b/document/src/main/java/com/yahoo/document/json/readers/MapReader.java
index 7cd92deda70..fa8f9bfd6c5 100644
--- a/document/src/main/java/com/yahoo/document/json/readers/MapReader.java
+++ b/document/src/main/java/com/yahoo/document/json/readers/MapReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json.readers;
import com.fasterxml.jackson.core.JsonToken;
diff --git a/document/src/main/java/com/yahoo/document/json/readers/SingleValueReader.java b/document/src/main/java/com/yahoo/document/json/readers/SingleValueReader.java
index 4a9434d43bc..929beca1e10 100644
--- a/document/src/main/java/com/yahoo/document/json/readers/SingleValueReader.java
+++ b/document/src/main/java/com/yahoo/document/json/readers/SingleValueReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json.readers;
import com.fasterxml.jackson.core.JsonToken;
diff --git a/document/src/main/java/com/yahoo/document/json/readers/StructReader.java b/document/src/main/java/com/yahoo/document/json/readers/StructReader.java
index 454d93c7eab..54591134d4c 100644
--- a/document/src/main/java/com/yahoo/document/json/readers/StructReader.java
+++ b/document/src/main/java/com/yahoo/document/json/readers/StructReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json.readers;
import com.fasterxml.jackson.core.JsonToken;
diff --git a/document/src/main/java/com/yahoo/document/json/readers/TensorReader.java b/document/src/main/java/com/yahoo/document/json/readers/TensorReader.java
index 27426f584bd..193c9491e86 100644
--- a/document/src/main/java/com/yahoo/document/json/readers/TensorReader.java
+++ b/document/src/main/java/com/yahoo/document/json/readers/TensorReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json.readers;
import com.fasterxml.jackson.core.JsonToken;
@@ -94,6 +94,8 @@ public class TensorReader {
IndexedTensor.BoundBuilder indexedBuilder = (IndexedTensor.BoundBuilder)builder;
if (buffer.currentToken() == JsonToken.VALUE_STRING) {
double[] decoded = decodeHexString(buffer.currentText(), builder.type().valueType());
+ if (decoded.length == 0)
+ throw new IllegalArgumentException("The 'values' string does not contain any values");
for (int i = 0; i < decoded.length; i++) {
indexedBuilder.cellByDirectIndex(i, decoded[i]);
}
@@ -104,6 +106,8 @@ public class TensorReader {
for (buffer.next(); buffer.nesting() >= initNesting; buffer.next()) {
indexedBuilder.cellByDirectIndex(index++, readDouble(buffer));
}
+ if (index == 0)
+ throw new IllegalArgumentException("The 'values' array does not contain any values");
expectCompositeEnd(buffer.currentToken());
}
diff --git a/document/src/main/java/com/yahoo/document/json/readers/VespaJsonDocumentReader.java b/document/src/main/java/com/yahoo/document/json/readers/VespaJsonDocumentReader.java
index 3ab9f72504b..fb160a9bb44 100644
--- a/document/src/main/java/com/yahoo/document/json/readers/VespaJsonDocumentReader.java
+++ b/document/src/main/java/com/yahoo/document/json/readers/VespaJsonDocumentReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json.readers;
import com.fasterxml.jackson.core.JsonToken;
diff --git a/document/src/main/java/com/yahoo/document/json/readers/WeightedSetReader.java b/document/src/main/java/com/yahoo/document/json/readers/WeightedSetReader.java
index cf5fbd16b4d..c9af929735e 100644
--- a/document/src/main/java/com/yahoo/document/json/readers/WeightedSetReader.java
+++ b/document/src/main/java/com/yahoo/document/json/readers/WeightedSetReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json.readers;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/package-info.java b/document/src/main/java/com/yahoo/document/package-info.java
index 69c6459a4c5..50de5f71b24 100644
--- a/document/src/main/java/com/yahoo/document/package-info.java
+++ b/document/src/main/java/com/yahoo/document/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.document;
diff --git a/document/src/main/java/com/yahoo/document/select/BucketSelector.java b/document/src/main/java/com/yahoo/document/select/BucketSelector.java
index b98d9c59657..9d540069f68 100644
--- a/document/src/main/java/com/yahoo/document/select/BucketSelector.java
+++ b/document/src/main/java/com/yahoo/document/select/BucketSelector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select;
import com.yahoo.document.BucketIdFactory;
diff --git a/document/src/main/java/com/yahoo/document/select/BucketSet.java b/document/src/main/java/com/yahoo/document/select/BucketSet.java
index d2f90f96724..e19c9bf6cda 100644
--- a/document/src/main/java/com/yahoo/document/select/BucketSet.java
+++ b/document/src/main/java/com/yahoo/document/select/BucketSet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select;
import com.yahoo.document.BucketId;
diff --git a/document/src/main/java/com/yahoo/document/select/Context.java b/document/src/main/java/com/yahoo/document/select/Context.java
index 481131b4776..9853a4d6cfd 100644
--- a/document/src/main/java/com/yahoo/document/select/Context.java
+++ b/document/src/main/java/com/yahoo/document/select/Context.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select;
import com.yahoo.document.DocumentOperation;
diff --git a/document/src/main/java/com/yahoo/document/select/DocumentSelector.java b/document/src/main/java/com/yahoo/document/select/DocumentSelector.java
index afda4eec9a9..371b8f52d23 100644
--- a/document/src/main/java/com/yahoo/document/select/DocumentSelector.java
+++ b/document/src/main/java/com/yahoo/document/select/DocumentSelector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select;
import com.yahoo.document.DocumentOperation;
diff --git a/document/src/main/java/com/yahoo/document/select/NowCheckVisitor.java b/document/src/main/java/com/yahoo/document/select/NowCheckVisitor.java
index 28d88d2f746..76d9272903a 100644
--- a/document/src/main/java/com/yahoo/document/select/NowCheckVisitor.java
+++ b/document/src/main/java/com/yahoo/document/select/NowCheckVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select;
import com.yahoo.document.select.rule.ArithmeticNode;
diff --git a/document/src/main/java/com/yahoo/document/select/Result.java b/document/src/main/java/com/yahoo/document/select/Result.java
index 5f057da900c..be8906a4271 100644
--- a/document/src/main/java/com/yahoo/document/select/Result.java
+++ b/document/src/main/java/com/yahoo/document/select/Result.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select;
import com.yahoo.document.select.rule.AttributeNode;
diff --git a/document/src/main/java/com/yahoo/document/select/ResultList.java b/document/src/main/java/com/yahoo/document/select/ResultList.java
index edf05eb044e..956efd48be8 100644
--- a/document/src/main/java/com/yahoo/document/select/ResultList.java
+++ b/document/src/main/java/com/yahoo/document/select/ResultList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select;
import com.yahoo.document.datatypes.FieldPathIteratorHandler;
diff --git a/document/src/main/java/com/yahoo/document/select/Visitor.java b/document/src/main/java/com/yahoo/document/select/Visitor.java
index 0c01189e651..4c198c9cf0d 100644
--- a/document/src/main/java/com/yahoo/document/select/Visitor.java
+++ b/document/src/main/java/com/yahoo/document/select/Visitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select;
diff --git a/document/src/main/java/com/yahoo/document/select/convert/NowQueryExpression.java b/document/src/main/java/com/yahoo/document/select/convert/NowQueryExpression.java
index a4ce6afb099..ee4222fc0fb 100644
--- a/document/src/main/java/com/yahoo/document/select/convert/NowQueryExpression.java
+++ b/document/src/main/java/com/yahoo/document/select/convert/NowQueryExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.convert;
import com.yahoo.document.select.rule.ArithmeticNode;
diff --git a/document/src/main/java/com/yahoo/document/select/convert/NowQueryNode.java b/document/src/main/java/com/yahoo/document/select/convert/NowQueryNode.java
index 0bd94a3854c..c7180b16210 100644
--- a/document/src/main/java/com/yahoo/document/select/convert/NowQueryNode.java
+++ b/document/src/main/java/com/yahoo/document/select/convert/NowQueryNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.convert;
import com.yahoo.document.select.rule.ArithmeticNode;
diff --git a/document/src/main/java/com/yahoo/document/select/convert/SelectionExpressionConverter.java b/document/src/main/java/com/yahoo/document/select/convert/SelectionExpressionConverter.java
index e949d29e60c..aa4866ffa37 100644
--- a/document/src/main/java/com/yahoo/document/select/convert/SelectionExpressionConverter.java
+++ b/document/src/main/java/com/yahoo/document/select/convert/SelectionExpressionConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.convert;
import com.yahoo.document.select.NowCheckVisitor;
diff --git a/document/src/main/java/com/yahoo/document/select/convert/package-info.java b/document/src/main/java/com/yahoo/document/select/convert/package-info.java
index aa7276099b0..eca8b1caafd 100644
--- a/document/src/main/java/com/yahoo/document/select/convert/package-info.java
+++ b/document/src/main/java/com/yahoo/document/select/convert/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.document.select.convert;
diff --git a/document/src/main/java/com/yahoo/document/select/package-info.java b/document/src/main/java/com/yahoo/document/select/package-info.java
index 813643a7f06..9b6e32977e4 100644
--- a/document/src/main/java/com/yahoo/document/select/package-info.java
+++ b/document/src/main/java/com/yahoo/document/select/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.document.select;
diff --git a/document/src/main/java/com/yahoo/document/select/parser/SelectInput.java b/document/src/main/java/com/yahoo/document/select/parser/SelectInput.java
index 4a4beabc155..210b46161af 100644
--- a/document/src/main/java/com/yahoo/document/select/parser/SelectInput.java
+++ b/document/src/main/java/com/yahoo/document/select/parser/SelectInput.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.parser;
import com.yahoo.javacc.FastCharStream;
diff --git a/document/src/main/java/com/yahoo/document/select/parser/SelectParserUtils.java b/document/src/main/java/com/yahoo/document/select/parser/SelectParserUtils.java
index 2bfed803ea7..a24b4819d7b 100644
--- a/document/src/main/java/com/yahoo/document/select/parser/SelectParserUtils.java
+++ b/document/src/main/java/com/yahoo/document/select/parser/SelectParserUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.parser;
import com.yahoo.javacc.UnicodeUtilities;
diff --git a/document/src/main/java/com/yahoo/document/select/parser/package-info.java b/document/src/main/java/com/yahoo/document/select/parser/package-info.java
index 476f0409c6f..86c6941318f 100644
--- a/document/src/main/java/com/yahoo/document/select/parser/package-info.java
+++ b/document/src/main/java/com/yahoo/document/select/parser/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.document.select.parser;
diff --git a/document/src/main/java/com/yahoo/document/select/rule/ArithmeticNode.java b/document/src/main/java/com/yahoo/document/select/rule/ArithmeticNode.java
index 2297c5228d4..b160293440e 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/ArithmeticNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/ArithmeticNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.rule;
import com.yahoo.document.BucketIdFactory;
diff --git a/document/src/main/java/com/yahoo/document/select/rule/AttributeNode.java b/document/src/main/java/com/yahoo/document/select/rule/AttributeNode.java
index 9e2759e1590..bd7b7106809 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/AttributeNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/AttributeNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.rule;
import com.yahoo.collections.BobHash;
diff --git a/document/src/main/java/com/yahoo/document/select/rule/ComparisonNode.java b/document/src/main/java/com/yahoo/document/select/rule/ComparisonNode.java
index 8f52c29e84d..24f9018937e 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/ComparisonNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/ComparisonNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.rule;
import com.yahoo.document.BucketId;
diff --git a/document/src/main/java/com/yahoo/document/select/rule/DocumentNode.java b/document/src/main/java/com/yahoo/document/select/rule/DocumentNode.java
index 6e43969b623..0c14ea46761 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/DocumentNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/DocumentNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.rule;
import com.yahoo.document.BucketIdFactory;
diff --git a/document/src/main/java/com/yahoo/document/select/rule/EmbracedNode.java b/document/src/main/java/com/yahoo/document/select/rule/EmbracedNode.java
index 7e7b748dce1..8b8c929ac04 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/EmbracedNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/EmbracedNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.rule;
import com.yahoo.document.BucketIdFactory;
diff --git a/document/src/main/java/com/yahoo/document/select/rule/ExpressionNode.java b/document/src/main/java/com/yahoo/document/select/rule/ExpressionNode.java
index 8b8144ce84a..2da82abc614 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/ExpressionNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/ExpressionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.rule;
import com.yahoo.document.BucketIdFactory;
diff --git a/document/src/main/java/com/yahoo/document/select/rule/IdNode.java b/document/src/main/java/com/yahoo/document/select/rule/IdNode.java
index 214d55a4bd8..07bef4e5926 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/IdNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/IdNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.rule;
import com.yahoo.document.DocumentId;
diff --git a/document/src/main/java/com/yahoo/document/select/rule/LiteralNode.java b/document/src/main/java/com/yahoo/document/select/rule/LiteralNode.java
index 9bf75289a26..c0055b2a651 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/LiteralNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/LiteralNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.rule;
import com.yahoo.document.BucketIdFactory;
diff --git a/document/src/main/java/com/yahoo/document/select/rule/LogicNode.java b/document/src/main/java/com/yahoo/document/select/rule/LogicNode.java
index bc34e5040c5..5cfcef2a5e5 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/LogicNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/LogicNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.rule;
import com.yahoo.document.BucketIdFactory;
diff --git a/document/src/main/java/com/yahoo/document/select/rule/NegationNode.java b/document/src/main/java/com/yahoo/document/select/rule/NegationNode.java
index b2f13f6d822..02554e165bc 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/NegationNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/NegationNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.rule;
import com.yahoo.document.BucketIdFactory;
diff --git a/document/src/main/java/com/yahoo/document/select/rule/NowNode.java b/document/src/main/java/com/yahoo/document/select/rule/NowNode.java
index 5bb88d2f84a..3bde6aac92a 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/NowNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/NowNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.rule;
import com.yahoo.document.BucketIdFactory;
diff --git a/document/src/main/java/com/yahoo/document/select/rule/VariableNode.java b/document/src/main/java/com/yahoo/document/select/rule/VariableNode.java
index aae659de129..a19e8094824 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/VariableNode.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/VariableNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.rule;
import com.yahoo.document.BucketIdFactory;
diff --git a/document/src/main/java/com/yahoo/document/select/rule/package-info.java b/document/src/main/java/com/yahoo/document/select/rule/package-info.java
index 6c643397264..60da98a52d3 100644
--- a/document/src/main/java/com/yahoo/document/select/rule/package-info.java
+++ b/document/src/main/java/com/yahoo/document/select/rule/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.document.select.rule;
diff --git a/document/src/main/java/com/yahoo/document/select/simple/IdSpecParser.java b/document/src/main/java/com/yahoo/document/select/simple/IdSpecParser.java
index db4d46e871b..48c73b9828d 100644
--- a/document/src/main/java/com/yahoo/document/select/simple/IdSpecParser.java
+++ b/document/src/main/java/com/yahoo/document/select/simple/IdSpecParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.simple;
import com.yahoo.document.select.rule.IdNode;
diff --git a/document/src/main/java/com/yahoo/document/select/simple/IntegerParser.java b/document/src/main/java/com/yahoo/document/select/simple/IntegerParser.java
index 142f8ad3fd4..15be9006811 100644
--- a/document/src/main/java/com/yahoo/document/select/simple/IntegerParser.java
+++ b/document/src/main/java/com/yahoo/document/select/simple/IntegerParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.simple;
import com.yahoo.document.select.rule.LiteralNode;
diff --git a/document/src/main/java/com/yahoo/document/select/simple/OperatorParser.java b/document/src/main/java/com/yahoo/document/select/simple/OperatorParser.java
index ad69a47c6ae..1faab42fc86 100644
--- a/document/src/main/java/com/yahoo/document/select/simple/OperatorParser.java
+++ b/document/src/main/java/com/yahoo/document/select/simple/OperatorParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.simple;
/**
diff --git a/document/src/main/java/com/yahoo/document/select/simple/Parser.java b/document/src/main/java/com/yahoo/document/select/simple/Parser.java
index 53cde8bcabb..84b40ff6f26 100644
--- a/document/src/main/java/com/yahoo/document/select/simple/Parser.java
+++ b/document/src/main/java/com/yahoo/document/select/simple/Parser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.simple;
/**
diff --git a/document/src/main/java/com/yahoo/document/select/simple/SelectionParser.java b/document/src/main/java/com/yahoo/document/select/simple/SelectionParser.java
index c250d3bede1..5faa650cc8a 100644
--- a/document/src/main/java/com/yahoo/document/select/simple/SelectionParser.java
+++ b/document/src/main/java/com/yahoo/document/select/simple/SelectionParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.simple;
import com.yahoo.document.select.rule.ComparisonNode;
diff --git a/document/src/main/java/com/yahoo/document/select/simple/StringParser.java b/document/src/main/java/com/yahoo/document/select/simple/StringParser.java
index 50d4915e360..9a16467a778 100644
--- a/document/src/main/java/com/yahoo/document/select/simple/StringParser.java
+++ b/document/src/main/java/com/yahoo/document/select/simple/StringParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select.simple;
import com.yahoo.document.select.rule.LiteralNode;
diff --git a/document/src/main/java/com/yahoo/document/select/simple/package-info.java b/document/src/main/java/com/yahoo/document/select/simple/package-info.java
index 936d63a7697..ca5d2eabdf4 100644
--- a/document/src/main/java/com/yahoo/document/select/simple/package-info.java
+++ b/document/src/main/java/com/yahoo/document/select/simple/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.document.select.simple;
diff --git a/document/src/main/java/com/yahoo/document/serialization/AnnotationReader.java b/document/src/main/java/com/yahoo/document/serialization/AnnotationReader.java
index 851cf56a33a..f127a025060 100644
--- a/document/src/main/java/com/yahoo/document/serialization/AnnotationReader.java
+++ b/document/src/main/java/com/yahoo/document/serialization/AnnotationReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.annotation.Annotation;
diff --git a/document/src/main/java/com/yahoo/document/serialization/AnnotationWriter.java b/document/src/main/java/com/yahoo/document/serialization/AnnotationWriter.java
index ef83687c1e7..9568c72f95d 100644
--- a/document/src/main/java/com/yahoo/document/serialization/AnnotationWriter.java
+++ b/document/src/main/java/com/yahoo/document/serialization/AnnotationWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.annotation.Annotation;
diff --git a/document/src/main/java/com/yahoo/document/serialization/DeserializationException.java b/document/src/main/java/com/yahoo/document/serialization/DeserializationException.java
index 7b03fb460e0..a7cda978a4e 100644
--- a/document/src/main/java/com/yahoo/document/serialization/DeserializationException.java
+++ b/document/src/main/java/com/yahoo/document/serialization/DeserializationException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
/**
diff --git a/document/src/main/java/com/yahoo/document/serialization/DocumentDeserializer.java b/document/src/main/java/com/yahoo/document/serialization/DocumentDeserializer.java
index afdce012b0f..e23103e9e63 100644
--- a/document/src/main/java/com/yahoo/document/serialization/DocumentDeserializer.java
+++ b/document/src/main/java/com/yahoo/document/serialization/DocumentDeserializer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.io.GrowableByteBuffer;
diff --git a/document/src/main/java/com/yahoo/document/serialization/DocumentDeserializerFactory.java b/document/src/main/java/com/yahoo/document/serialization/DocumentDeserializerFactory.java
index bdd99c54788..41b9c608cb2 100644
--- a/document/src/main/java/com/yahoo/document/serialization/DocumentDeserializerFactory.java
+++ b/document/src/main/java/com/yahoo/document/serialization/DocumentDeserializerFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.DocumentTypeManager;
diff --git a/document/src/main/java/com/yahoo/document/serialization/DocumentReader.java b/document/src/main/java/com/yahoo/document/serialization/DocumentReader.java
index 9bfe1573e18..12a5497a892 100644
--- a/document/src/main/java/com/yahoo/document/serialization/DocumentReader.java
+++ b/document/src/main/java/com/yahoo/document/serialization/DocumentReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.Document;
diff --git a/document/src/main/java/com/yahoo/document/serialization/DocumentSerializer.java b/document/src/main/java/com/yahoo/document/serialization/DocumentSerializer.java
index 76eea0d6850..59ba07421fb 100644
--- a/document/src/main/java/com/yahoo/document/serialization/DocumentSerializer.java
+++ b/document/src/main/java/com/yahoo/document/serialization/DocumentSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.io.GrowableByteBuffer;
diff --git a/document/src/main/java/com/yahoo/document/serialization/DocumentSerializerFactory.java b/document/src/main/java/com/yahoo/document/serialization/DocumentSerializerFactory.java
index 2120353a61d..53d532ec14a 100644
--- a/document/src/main/java/com/yahoo/document/serialization/DocumentSerializerFactory.java
+++ b/document/src/main/java/com/yahoo/document/serialization/DocumentSerializerFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.io.GrowableByteBuffer;
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 e057437626d..e3510676148 100644
--- a/document/src/main/java/com/yahoo/document/serialization/DocumentUpdateFlags.java
+++ b/document/src/main/java/com/yahoo/document/serialization/DocumentUpdateFlags.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
/**
diff --git a/document/src/main/java/com/yahoo/document/serialization/DocumentUpdateReader.java b/document/src/main/java/com/yahoo/document/serialization/DocumentUpdateReader.java
index 576fed5e771..19752f5c119 100644
--- a/document/src/main/java/com/yahoo/document/serialization/DocumentUpdateReader.java
+++ b/document/src/main/java/com/yahoo/document/serialization/DocumentUpdateReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.*;
diff --git a/document/src/main/java/com/yahoo/document/serialization/DocumentUpdateWriter.java b/document/src/main/java/com/yahoo/document/serialization/DocumentUpdateWriter.java
index d95a344be77..b2bd1cd0c63 100644
--- a/document/src/main/java/com/yahoo/document/serialization/DocumentUpdateWriter.java
+++ b/document/src/main/java/com/yahoo/document/serialization/DocumentUpdateWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/serialization/DocumentWriter.java b/document/src/main/java/com/yahoo/document/serialization/DocumentWriter.java
index a315635a1bd..b9e67a65a8d 100644
--- a/document/src/main/java/com/yahoo/document/serialization/DocumentWriter.java
+++ b/document/src/main/java/com/yahoo/document/serialization/DocumentWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.Document;
diff --git a/document/src/main/java/com/yahoo/document/serialization/FieldReader.java b/document/src/main/java/com/yahoo/document/serialization/FieldReader.java
index 0b1500ed6ba..e118ddb88b4 100644
--- a/document/src/main/java/com/yahoo/document/serialization/FieldReader.java
+++ b/document/src/main/java/com/yahoo/document/serialization/FieldReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
*
*/
diff --git a/document/src/main/java/com/yahoo/document/serialization/FieldWriter.java b/document/src/main/java/com/yahoo/document/serialization/FieldWriter.java
index 63a6d997b04..deb1e7386df 100644
--- a/document/src/main/java/com/yahoo/document/serialization/FieldWriter.java
+++ b/document/src/main/java/com/yahoo/document/serialization/FieldWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.Document;
diff --git a/document/src/main/java/com/yahoo/document/serialization/SerializationException.java b/document/src/main/java/com/yahoo/document/serialization/SerializationException.java
index 4b9cdc7d428..07a8a086a2d 100644
--- a/document/src/main/java/com/yahoo/document/serialization/SerializationException.java
+++ b/document/src/main/java/com/yahoo/document/serialization/SerializationException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
/**
diff --git a/document/src/main/java/com/yahoo/document/serialization/SpanNodeReader.java b/document/src/main/java/com/yahoo/document/serialization/SpanNodeReader.java
index d5485be95fe..79f5568a9ae 100644
--- a/document/src/main/java/com/yahoo/document/serialization/SpanNodeReader.java
+++ b/document/src/main/java/com/yahoo/document/serialization/SpanNodeReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.annotation.AlternateSpanList;
diff --git a/document/src/main/java/com/yahoo/document/serialization/SpanNodeWriter.java b/document/src/main/java/com/yahoo/document/serialization/SpanNodeWriter.java
index f52b49db08e..6d62d2f3f32 100644
--- a/document/src/main/java/com/yahoo/document/serialization/SpanNodeWriter.java
+++ b/document/src/main/java/com/yahoo/document/serialization/SpanNodeWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.annotation.AlternateSpanList;
diff --git a/document/src/main/java/com/yahoo/document/serialization/SpanTreeReader.java b/document/src/main/java/com/yahoo/document/serialization/SpanTreeReader.java
index 72c2ab3e125..4557bb44429 100644
--- a/document/src/main/java/com/yahoo/document/serialization/SpanTreeReader.java
+++ b/document/src/main/java/com/yahoo/document/serialization/SpanTreeReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.annotation.SpanTree;
diff --git a/document/src/main/java/com/yahoo/document/serialization/SpanTreeWriter.java b/document/src/main/java/com/yahoo/document/serialization/SpanTreeWriter.java
index dba4ea000b7..399eb35761b 100644
--- a/document/src/main/java/com/yahoo/document/serialization/SpanTreeWriter.java
+++ b/document/src/main/java/com/yahoo/document/serialization/SpanTreeWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.annotation.SpanTree;
diff --git a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer6.java b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer6.java
index 914f0ad8759..58cc3c22199 100644
--- a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer6.java
+++ b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer6.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.collections.Tuple2;
diff --git a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializerHead.java b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializerHead.java
index e7f1525ff81..c6fdc915401 100644
--- a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializerHead.java
+++ b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializerHead.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer6.java b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer6.java
index 1a5c5c8257b..cbcd0c64bd0 100644
--- a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer6.java
+++ b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer6.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.compress.Compressor;
diff --git a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializerHead.java b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializerHead.java
index 4be4d6fcd93..66bc8cbb4d5 100644
--- a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializerHead.java
+++ b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializerHead.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.update.TensorAddUpdate;
diff --git a/document/src/main/java/com/yahoo/document/serialization/XmlDocumentWriter.java b/document/src/main/java/com/yahoo/document/serialization/XmlDocumentWriter.java
index 9dc5b7c2480..c610af9778d 100644
--- a/document/src/main/java/com/yahoo/document/serialization/XmlDocumentWriter.java
+++ b/document/src/main/java/com/yahoo/document/serialization/XmlDocumentWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.Document;
diff --git a/document/src/main/java/com/yahoo/document/serialization/XmlSerializationHelper.java b/document/src/main/java/com/yahoo/document/serialization/XmlSerializationHelper.java
index 8c6444fb853..9b99c0c9bbd 100644
--- a/document/src/main/java/com/yahoo/document/serialization/XmlSerializationHelper.java
+++ b/document/src/main/java/com/yahoo/document/serialization/XmlSerializationHelper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.Document;
diff --git a/document/src/main/java/com/yahoo/document/serialization/XmlStream.java b/document/src/main/java/com/yahoo/document/serialization/XmlStream.java
index eb5e64400d3..40ded73b5aa 100644
--- a/document/src/main/java/com/yahoo/document/serialization/XmlStream.java
+++ b/document/src/main/java/com/yahoo/document/serialization/XmlStream.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.text.XML;
diff --git a/document/src/main/java/com/yahoo/document/serialization/package-info.java b/document/src/main/java/com/yahoo/document/serialization/package-info.java
index 05da1d3b2ab..b1c17d6922d 100644
--- a/document/src/main/java/com/yahoo/document/serialization/package-info.java
+++ b/document/src/main/java/com/yahoo/document/serialization/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.document.serialization;
diff --git a/document/src/main/java/com/yahoo/document/update/AddValueUpdate.java b/document/src/main/java/com/yahoo/document/update/AddValueUpdate.java
index 93661eb3451..0cb54d2bff8 100644
--- a/document/src/main/java/com/yahoo/document/update/AddValueUpdate.java
+++ b/document/src/main/java/com/yahoo/document/update/AddValueUpdate.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.update;
import com.yahoo.document.CollectionDataType;
diff --git a/document/src/main/java/com/yahoo/document/update/ArithmeticValueUpdate.java b/document/src/main/java/com/yahoo/document/update/ArithmeticValueUpdate.java
index 2f1fa5ad70a..9d54dc0bb89 100644
--- a/document/src/main/java/com/yahoo/document/update/ArithmeticValueUpdate.java
+++ b/document/src/main/java/com/yahoo/document/update/ArithmeticValueUpdate.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.update;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/update/AssignValueUpdate.java b/document/src/main/java/com/yahoo/document/update/AssignValueUpdate.java
index 9165d6b5ea3..0797db5772f 100644
--- a/document/src/main/java/com/yahoo/document/update/AssignValueUpdate.java
+++ b/document/src/main/java/com/yahoo/document/update/AssignValueUpdate.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.update;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/update/ClearValueUpdate.java b/document/src/main/java/com/yahoo/document/update/ClearValueUpdate.java
index b7efc95f16d..d64af37af5e 100644
--- a/document/src/main/java/com/yahoo/document/update/ClearValueUpdate.java
+++ b/document/src/main/java/com/yahoo/document/update/ClearValueUpdate.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.update;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/update/FieldUpdate.java b/document/src/main/java/com/yahoo/document/update/FieldUpdate.java
index 1702eb6b9c0..c2a3dd824a5 100644
--- a/document/src/main/java/com/yahoo/document/update/FieldUpdate.java
+++ b/document/src/main/java/com/yahoo/document/update/FieldUpdate.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.update;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/update/MapValueUpdate.java b/document/src/main/java/com/yahoo/document/update/MapValueUpdate.java
index 0a56e69b1e4..dabed452bd3 100644
--- a/document/src/main/java/com/yahoo/document/update/MapValueUpdate.java
+++ b/document/src/main/java/com/yahoo/document/update/MapValueUpdate.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.update;
import com.yahoo.document.ArrayDataType;
diff --git a/document/src/main/java/com/yahoo/document/update/RemoveValueUpdate.java b/document/src/main/java/com/yahoo/document/update/RemoveValueUpdate.java
index e4b704fdcdd..1b808e556ab 100644
--- a/document/src/main/java/com/yahoo/document/update/RemoveValueUpdate.java
+++ b/document/src/main/java/com/yahoo/document/update/RemoveValueUpdate.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.update;
import com.yahoo.document.CollectionDataType;
diff --git a/document/src/main/java/com/yahoo/document/update/ValueUpdate.java b/document/src/main/java/com/yahoo/document/update/ValueUpdate.java
index 6267dc4e682..3aa728ca5b2 100644
--- a/document/src/main/java/com/yahoo/document/update/ValueUpdate.java
+++ b/document/src/main/java/com/yahoo/document/update/ValueUpdate.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.update;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/document/update/package-info.java b/document/src/main/java/com/yahoo/document/update/package-info.java
index ef8545b1be6..9a2a9bc5a2e 100644
--- a/document/src/main/java/com/yahoo/document/update/package-info.java
+++ b/document/src/main/java/com/yahoo/document/update/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.document.update;
diff --git a/document/src/main/java/com/yahoo/vespaxmlparser/FeedReader.java b/document/src/main/java/com/yahoo/vespaxmlparser/FeedReader.java
index c993d5a5153..214a8357acf 100644
--- a/document/src/main/java/com/yahoo/vespaxmlparser/FeedReader.java
+++ b/document/src/main/java/com/yahoo/vespaxmlparser/FeedReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaxmlparser;
/**
diff --git a/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLDocumentReader.java b/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLDocumentReader.java
index c1a8cc05c0c..a941a08e904 100644
--- a/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLDocumentReader.java
+++ b/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLDocumentReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaxmlparser;
import com.yahoo.document.Document;
diff --git a/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLFeedReader.java b/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLFeedReader.java
index 7bc0cc871ca..38adf3a7f66 100644
--- a/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLFeedReader.java
+++ b/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLFeedReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaxmlparser;
import com.yahoo.document.Document;
diff --git a/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLFieldReader.java b/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLFieldReader.java
index 02682fa943f..194b60e1b5a 100644
--- a/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLFieldReader.java
+++ b/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLFieldReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaxmlparser;
import com.yahoo.document.DataType;
diff --git a/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLReader.java b/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLReader.java
index 09af5dc6242..1a1382366a8 100644
--- a/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLReader.java
+++ b/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaxmlparser;
import com.yahoo.document.DocumentTypeManager;
diff --git a/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLUpdateReader.java b/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLUpdateReader.java
index 8c941dee58b..18b62697533 100644
--- a/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLUpdateReader.java
+++ b/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLUpdateReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaxmlparser;
import com.yahoo.document.*;
diff --git a/document/src/main/java/com/yahoo/vespaxmlparser/package-info.java b/document/src/main/java/com/yahoo/vespaxmlparser/package-info.java
index 68116e777d6..45a87cf3568 100644
--- a/document/src/main/java/com/yahoo/vespaxmlparser/package-info.java
+++ b/document/src/main/java/com/yahoo/vespaxmlparser/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// TODO: Remove this package on Vespa 8
@ExportPackage
package com.yahoo.vespaxmlparser;
diff --git a/document/src/main/javacc/SelectParser.jj b/document/src/main/javacc/SelectParser.jj
index 6e1b01b27fb..4df6fd99020 100755
--- a/document/src/main/javacc/SelectParser.jj
+++ b/document/src/main/javacc/SelectParser.jj
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Simon Thoresen Hult
*/
diff --git a/document/src/test/java/com/yahoo/document/BucketIdFactoryTestCase.java b/document/src/test/java/com/yahoo/document/BucketIdFactoryTestCase.java
index 93feb198e7e..48e226ced79 100644
--- a/document/src/test/java/com/yahoo/document/BucketIdFactoryTestCase.java
+++ b/document/src/test/java/com/yahoo/document/BucketIdFactoryTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.idstring.IdIdString;
diff --git a/document/src/test/java/com/yahoo/document/DataTypeNameTestCase.java b/document/src/test/java/com/yahoo/document/DataTypeNameTestCase.java
index 310c1050c7e..0d6c50e3e4f 100644
--- a/document/src/test/java/com/yahoo/document/DataTypeNameTestCase.java
+++ b/document/src/test/java/com/yahoo/document/DataTypeNameTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import org.junit.Test;
diff --git a/document/src/test/java/com/yahoo/document/DataTypeTestCase.java b/document/src/test/java/com/yahoo/document/DataTypeTestCase.java
index ee70c427aee..b6a79f3c60a 100644
--- a/document/src/test/java/com/yahoo/document/DataTypeTestCase.java
+++ b/document/src/test/java/com/yahoo/document/DataTypeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import java.util.ArrayList;
diff --git a/document/src/test/java/com/yahoo/document/DocInDocTestCase.java b/document/src/test/java/com/yahoo/document/DocInDocTestCase.java
index d81daca74f0..f5b6b4ea9bf 100644
--- a/document/src/test/java/com/yahoo/document/DocInDocTestCase.java
+++ b/document/src/test/java/com/yahoo/document/DocInDocTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.Array;
diff --git a/document/src/test/java/com/yahoo/document/DocumentCalculatorTestCase.java b/document/src/test/java/com/yahoo/document/DocumentCalculatorTestCase.java
index 36cc18ebd6b..e9845407a1b 100755
--- a/document/src/test/java/com/yahoo/document/DocumentCalculatorTestCase.java
+++ b/document/src/test/java/com/yahoo/document/DocumentCalculatorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.ByteFieldValue;
diff --git a/document/src/test/java/com/yahoo/document/DocumentIdTestCase.java b/document/src/test/java/com/yahoo/document/DocumentIdTestCase.java
index 4cc4e75ea78..bee5f78ae83 100644
--- a/document/src/test/java/com/yahoo/document/DocumentIdTestCase.java
+++ b/document/src/test/java/com/yahoo/document/DocumentIdTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.idstring.IdIdString;
diff --git a/document/src/test/java/com/yahoo/document/DocumentPathUpdateTestCase.java b/document/src/test/java/com/yahoo/document/DocumentPathUpdateTestCase.java
index c7cdfb01413..bab94515ac5 100755
--- a/document/src/test/java/com/yahoo/document/DocumentPathUpdateTestCase.java
+++ b/document/src/test/java/com/yahoo/document/DocumentPathUpdateTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.*;
diff --git a/document/src/test/java/com/yahoo/document/DocumentRemoveTestCase.java b/document/src/test/java/com/yahoo/document/DocumentRemoveTestCase.java
index 31093e8617b..5d6706b9cd7 100644
--- a/document/src/test/java/com/yahoo/document/DocumentRemoveTestCase.java
+++ b/document/src/test/java/com/yahoo/document/DocumentRemoveTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import org.junit.Test;
diff --git a/document/src/test/java/com/yahoo/document/DocumentSerializationTestCase.java b/document/src/test/java/com/yahoo/document/DocumentSerializationTestCase.java
index b2be93bfff9..5f283df9614 100644
--- a/document/src/test/java/com/yahoo/document/DocumentSerializationTestCase.java
+++ b/document/src/test/java/com/yahoo/document/DocumentSerializationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.compress.CompressionType;
diff --git a/document/src/test/java/com/yahoo/document/DocumentTestCase.java b/document/src/test/java/com/yahoo/document/DocumentTestCase.java
index df1a56cf8e1..5a694d21dd8 100644
--- a/document/src/test/java/com/yahoo/document/DocumentTestCase.java
+++ b/document/src/test/java/com/yahoo/document/DocumentTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.fasterxml.jackson.core.type.TypeReference;
diff --git a/document/src/test/java/com/yahoo/document/DocumentTestCaseBase.java b/document/src/test/java/com/yahoo/document/DocumentTestCaseBase.java
index 6f95f77f08c..bf9960c3ca3 100644
--- a/document/src/test/java/com/yahoo/document/DocumentTestCaseBase.java
+++ b/document/src/test/java/com/yahoo/document/DocumentTestCaseBase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.FloatFieldValue;
diff --git a/document/src/test/java/com/yahoo/document/DocumentTypeIdTestCase.java b/document/src/test/java/com/yahoo/document/DocumentTypeIdTestCase.java
index c425ebea2c2..cc5f1040187 100644
--- a/document/src/test/java/com/yahoo/document/DocumentTypeIdTestCase.java
+++ b/document/src/test/java/com/yahoo/document/DocumentTypeIdTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import org.junit.Test;
diff --git a/document/src/test/java/com/yahoo/document/DocumentTypeManagerTestCase.java b/document/src/test/java/com/yahoo/document/DocumentTypeManagerTestCase.java
index 57b36d9758f..1a0e2ad1e2b 100644
--- a/document/src/test/java/com/yahoo/document/DocumentTypeManagerTestCase.java
+++ b/document/src/test/java/com/yahoo/document/DocumentTypeManagerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.annotation.*;
diff --git a/document/src/test/java/com/yahoo/document/DocumentTypeTestCase.java b/document/src/test/java/com/yahoo/document/DocumentTypeTestCase.java
index 47c7fe71343..dc405f287a6 100644
--- a/document/src/test/java/com/yahoo/document/DocumentTypeTestCase.java
+++ b/document/src/test/java/com/yahoo/document/DocumentTypeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import org.junit.Test;
diff --git a/document/src/test/java/com/yahoo/document/DocumentUpdateTestCase.java b/document/src/test/java/com/yahoo/document/DocumentUpdateTestCase.java
index 9f05a4441b2..9bbc894758b 100644
--- a/document/src/test/java/com/yahoo/document/DocumentUpdateTestCase.java
+++ b/document/src/test/java/com/yahoo/document/DocumentUpdateTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.Array;
diff --git a/document/src/test/java/com/yahoo/document/FieldPathEntryTestCase.java b/document/src/test/java/com/yahoo/document/FieldPathEntryTestCase.java
index 791310ee6f2..9e8af3694a7 100644
--- a/document/src/test/java/com/yahoo/document/FieldPathEntryTestCase.java
+++ b/document/src/test/java/com/yahoo/document/FieldPathEntryTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import org.junit.Test;
diff --git a/document/src/test/java/com/yahoo/document/FieldTestCase.java b/document/src/test/java/com/yahoo/document/FieldTestCase.java
index 036de39b7fd..fdc481273b8 100644
--- a/document/src/test/java/com/yahoo/document/FieldTestCase.java
+++ b/document/src/test/java/com/yahoo/document/FieldTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import org.junit.Test;
diff --git a/document/src/test/java/com/yahoo/document/GlobalIdTestCase.java b/document/src/test/java/com/yahoo/document/GlobalIdTestCase.java
index 77049a1c535..9c1de27a842 100644
--- a/document/src/test/java/com/yahoo/document/GlobalIdTestCase.java
+++ b/document/src/test/java/com/yahoo/document/GlobalIdTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import org.junit.Test;
diff --git a/document/src/test/java/com/yahoo/document/IdIdStringTest.java b/document/src/test/java/com/yahoo/document/IdIdStringTest.java
index a4b05d0cf7a..7396ec2390b 100644
--- a/document/src/test/java/com/yahoo/document/IdIdStringTest.java
+++ b/document/src/test/java/com/yahoo/document/IdIdStringTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.idstring.IdIdString;
diff --git a/document/src/test/java/com/yahoo/document/IncompatibleFieldTypesTest.java b/document/src/test/java/com/yahoo/document/IncompatibleFieldTypesTest.java
index 7cf0adf6ed1..7e1454c6333 100644
--- a/document/src/test/java/com/yahoo/document/IncompatibleFieldTypesTest.java
+++ b/document/src/test/java/com/yahoo/document/IncompatibleFieldTypesTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.*;
diff --git a/document/src/test/java/com/yahoo/document/NumericDataTypeTestCase.java b/document/src/test/java/com/yahoo/document/NumericDataTypeTestCase.java
index 28f6f682755..3298ac4f2ca 100644
--- a/document/src/test/java/com/yahoo/document/NumericDataTypeTestCase.java
+++ b/document/src/test/java/com/yahoo/document/NumericDataTypeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.FieldValue;
diff --git a/document/src/test/java/com/yahoo/document/PositionTypeTestCase.java b/document/src/test/java/com/yahoo/document/PositionTypeTestCase.java
index 6249d2a559e..159b016d6ef 100644
--- a/document/src/test/java/com/yahoo/document/PositionTypeTestCase.java
+++ b/document/src/test/java/com/yahoo/document/PositionTypeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.IntegerFieldValue;
diff --git a/document/src/test/java/com/yahoo/document/ReferenceDataTypeTestCase.java b/document/src/test/java/com/yahoo/document/ReferenceDataTypeTestCase.java
index 3b9392d4d2f..d44f0880395 100644
--- a/document/src/test/java/com/yahoo/document/ReferenceDataTypeTestCase.java
+++ b/document/src/test/java/com/yahoo/document/ReferenceDataTypeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.ReferenceFieldValue;
diff --git a/document/src/test/java/com/yahoo/document/SimpleDocumentTestCase.java b/document/src/test/java/com/yahoo/document/SimpleDocumentTestCase.java
index c6bf2b07443..740e11b7a12 100644
--- a/document/src/test/java/com/yahoo/document/SimpleDocumentTestCase.java
+++ b/document/src/test/java/com/yahoo/document/SimpleDocumentTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.IntegerFieldValue;
diff --git a/document/src/test/java/com/yahoo/document/StructDataTypeTestCase.java b/document/src/test/java/com/yahoo/document/StructDataTypeTestCase.java
index 225aa4afc21..bc3c715ed8a 100755
--- a/document/src/test/java/com/yahoo/document/StructDataTypeTestCase.java
+++ b/document/src/test/java/com/yahoo/document/StructDataTypeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.Struct;
diff --git a/document/src/test/java/com/yahoo/document/TemporaryDataTypeTestCase.java b/document/src/test/java/com/yahoo/document/TemporaryDataTypeTestCase.java
index 663ea96f40f..0e85e085316 100644
--- a/document/src/test/java/com/yahoo/document/TemporaryDataTypeTestCase.java
+++ b/document/src/test/java/com/yahoo/document/TemporaryDataTypeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import com.yahoo.document.datatypes.StringFieldValue;
diff --git a/document/src/test/java/com/yahoo/document/TemporaryStructuredDataTypeTestCase.java b/document/src/test/java/com/yahoo/document/TemporaryStructuredDataTypeTestCase.java
index 431d4d9746c..5e4530d0886 100644
--- a/document/src/test/java/com/yahoo/document/TemporaryStructuredDataTypeTestCase.java
+++ b/document/src/test/java/com/yahoo/document/TemporaryStructuredDataTypeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document;
import org.junit.Test;
diff --git a/document/src/test/java/com/yahoo/document/annotation/AbstractTypesTest.java b/document/src/test/java/com/yahoo/document/annotation/AbstractTypesTest.java
index 58992564372..5a8af69aa92 100755
--- a/document/src/test/java/com/yahoo/document/annotation/AbstractTypesTest.java
+++ b/document/src/test/java/com/yahoo/document/annotation/AbstractTypesTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.DataType;
diff --git a/document/src/test/java/com/yahoo/document/annotation/AlternateSpanListAdvTestCase.java b/document/src/test/java/com/yahoo/document/annotation/AlternateSpanListAdvTestCase.java
index 146f458b6e8..a6a39d16706 100644
--- a/document/src/test/java/com/yahoo/document/annotation/AlternateSpanListAdvTestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/AlternateSpanListAdvTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.DataType;
diff --git a/document/src/test/java/com/yahoo/document/annotation/AlternateSpanListTestCase.java b/document/src/test/java/com/yahoo/document/annotation/AlternateSpanListTestCase.java
index 186766f799b..9c75abdabfa 100755
--- a/document/src/test/java/com/yahoo/document/annotation/AlternateSpanListTestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/AlternateSpanListTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.datatypes.StringFieldValue;
diff --git a/document/src/test/java/com/yahoo/document/annotation/AnnotationTestCase.java b/document/src/test/java/com/yahoo/document/annotation/AnnotationTestCase.java
index cb04ca1de62..4dda4df2b9c 100644
--- a/document/src/test/java/com/yahoo/document/annotation/AnnotationTestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/AnnotationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.DataType;
diff --git a/document/src/test/java/com/yahoo/document/annotation/AnnotationTypeRegistryTestCase.java b/document/src/test/java/com/yahoo/document/annotation/AnnotationTypeRegistryTestCase.java
index b4c1bc8d004..64a98349f7f 100644
--- a/document/src/test/java/com/yahoo/document/annotation/AnnotationTypeRegistryTestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/AnnotationTypeRegistryTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.DataType;
diff --git a/document/src/test/java/com/yahoo/document/annotation/AnnotationTypeTestCase.java b/document/src/test/java/com/yahoo/document/annotation/AnnotationTypeTestCase.java
index deb41647361..521349028a9 100644
--- a/document/src/test/java/com/yahoo/document/annotation/AnnotationTypeTestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/AnnotationTypeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.DataType;
diff --git a/document/src/test/java/com/yahoo/document/annotation/AnnotationTypesTestCase.java b/document/src/test/java/com/yahoo/document/annotation/AnnotationTypesTestCase.java
index a19eba1a546..98c119d0df2 100644
--- a/document/src/test/java/com/yahoo/document/annotation/AnnotationTypesTestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/AnnotationTypesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.datatypes.DoubleFieldValue;
diff --git a/document/src/test/java/com/yahoo/document/annotation/Bug4155865TestCase.java b/document/src/test/java/com/yahoo/document/annotation/Bug4155865TestCase.java
index 8c885a33d8c..d6ec688f0d9 100644
--- a/document/src/test/java/com/yahoo/document/annotation/Bug4155865TestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/Bug4155865TestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.DataType;
diff --git a/document/src/test/java/com/yahoo/document/annotation/Bug4164299TestCase.java b/document/src/test/java/com/yahoo/document/annotation/Bug4164299TestCase.java
index b29dddc7fb9..812ed2a9f84 100644
--- a/document/src/test/java/com/yahoo/document/annotation/Bug4164299TestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/Bug4164299TestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.datatypes.StringFieldValue;
diff --git a/document/src/test/java/com/yahoo/document/annotation/Bug4259784TestCase.java b/document/src/test/java/com/yahoo/document/annotation/Bug4259784TestCase.java
index 454d34195e5..77f0e1a9c20 100644
--- a/document/src/test/java/com/yahoo/document/annotation/Bug4259784TestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/Bug4259784TestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.ArrayDataType;
diff --git a/document/src/test/java/com/yahoo/document/annotation/Bug4261985TestCase.java b/document/src/test/java/com/yahoo/document/annotation/Bug4261985TestCase.java
index 72a141ecc93..7692d2643df 100644
--- a/document/src/test/java/com/yahoo/document/annotation/Bug4261985TestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/Bug4261985TestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.ArrayDataType;
diff --git a/document/src/test/java/com/yahoo/document/annotation/Bug4475379TestCase.java b/document/src/test/java/com/yahoo/document/annotation/Bug4475379TestCase.java
index 3d2a1fd2d90..dbbe0cdfedf 100755
--- a/document/src/test/java/com/yahoo/document/annotation/Bug4475379TestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/Bug4475379TestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.Document;
diff --git a/document/src/test/java/com/yahoo/document/annotation/Bug6394548TestCase.java b/document/src/test/java/com/yahoo/document/annotation/Bug6394548TestCase.java
index a0315c53dc3..654965d1ee7 100644
--- a/document/src/test/java/com/yahoo/document/annotation/Bug6394548TestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/Bug6394548TestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.Document;
diff --git a/document/src/test/java/com/yahoo/document/annotation/Bug6425939TestCase.java b/document/src/test/java/com/yahoo/document/annotation/Bug6425939TestCase.java
index 82b730ae4ca..7c3912063d0 100644
--- a/document/src/test/java/com/yahoo/document/annotation/Bug6425939TestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/Bug6425939TestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.DataType;
diff --git a/document/src/test/java/com/yahoo/document/annotation/DocTestCase.java b/document/src/test/java/com/yahoo/document/annotation/DocTestCase.java
index e117a510691..fafca72ba7c 100644
--- a/document/src/test/java/com/yahoo/document/annotation/DocTestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/DocTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.ArrayDataType;
diff --git a/document/src/test/java/com/yahoo/document/annotation/DummySpanNodeTestCase.java b/document/src/test/java/com/yahoo/document/annotation/DummySpanNodeTestCase.java
index 3566117b33d..5a04efc2dd1 100644
--- a/document/src/test/java/com/yahoo/document/annotation/DummySpanNodeTestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/DummySpanNodeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import org.junit.Test;
diff --git a/document/src/test/java/com/yahoo/document/annotation/IndexKeyAnnotationTypeSpanTreeAdvTest.java b/document/src/test/java/com/yahoo/document/annotation/IndexKeyAnnotationTypeSpanTreeAdvTest.java
index 9a68e730d1e..01b542dbcb0 100644
--- a/document/src/test/java/com/yahoo/document/annotation/IndexKeyAnnotationTypeSpanTreeAdvTest.java
+++ b/document/src/test/java/com/yahoo/document/annotation/IndexKeyAnnotationTypeSpanTreeAdvTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
/**
diff --git a/document/src/test/java/com/yahoo/document/annotation/IndexKeyAnnotationTypeSpanTreeTestCase.java b/document/src/test/java/com/yahoo/document/annotation/IndexKeyAnnotationTypeSpanTreeTestCase.java
index 8f77e7c584f..63253b10fe4 100644
--- a/document/src/test/java/com/yahoo/document/annotation/IndexKeyAnnotationTypeSpanTreeTestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/IndexKeyAnnotationTypeSpanTreeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
/**
diff --git a/document/src/test/java/com/yahoo/document/annotation/IndexKeySpanNodeSpanTreeAdvTest.java b/document/src/test/java/com/yahoo/document/annotation/IndexKeySpanNodeSpanTreeAdvTest.java
index 3db643b071f..4e8fb431e87 100644
--- a/document/src/test/java/com/yahoo/document/annotation/IndexKeySpanNodeSpanTreeAdvTest.java
+++ b/document/src/test/java/com/yahoo/document/annotation/IndexKeySpanNodeSpanTreeAdvTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
/**
diff --git a/document/src/test/java/com/yahoo/document/annotation/IndexKeySpanNodeSpanTreeTestCase.java b/document/src/test/java/com/yahoo/document/annotation/IndexKeySpanNodeSpanTreeTestCase.java
index 52dcef61273..1acdb59ebf6 100644
--- a/document/src/test/java/com/yahoo/document/annotation/IndexKeySpanNodeSpanTreeTestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/IndexKeySpanNodeSpanTreeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
/**
diff --git a/document/src/test/java/com/yahoo/document/annotation/IndexKeySpanTreeTestCase.java b/document/src/test/java/com/yahoo/document/annotation/IndexKeySpanTreeTestCase.java
index 8c5a481764d..b649a9404d1 100644
--- a/document/src/test/java/com/yahoo/document/annotation/IndexKeySpanTreeTestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/IndexKeySpanTreeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import org.junit.Test;
diff --git a/document/src/test/java/com/yahoo/document/annotation/PeekableListIteratorTestCase.java b/document/src/test/java/com/yahoo/document/annotation/PeekableListIteratorTestCase.java
index 9e7bff0aaee..e7dc97ebf14 100644
--- a/document/src/test/java/com/yahoo/document/annotation/PeekableListIteratorTestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/PeekableListIteratorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import org.junit.Before;
diff --git a/document/src/test/java/com/yahoo/document/annotation/SpanListAdvTestCase.java b/document/src/test/java/com/yahoo/document/annotation/SpanListAdvTestCase.java
index be6e2146d78..4ec8806a360 100644
--- a/document/src/test/java/com/yahoo/document/annotation/SpanListAdvTestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/SpanListAdvTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.DataType;
diff --git a/document/src/test/java/com/yahoo/document/annotation/SpanListTestCase.java b/document/src/test/java/com/yahoo/document/annotation/SpanListTestCase.java
index 6f338fc47a3..cc5282ef27a 100755
--- a/document/src/test/java/com/yahoo/document/annotation/SpanListTestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/SpanListTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.datatypes.StringFieldValue;
diff --git a/document/src/test/java/com/yahoo/document/annotation/SpanNodeAdvTestCase.java b/document/src/test/java/com/yahoo/document/annotation/SpanNodeAdvTestCase.java
index d181549a753..e55975b21d2 100644
--- a/document/src/test/java/com/yahoo/document/annotation/SpanNodeAdvTestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/SpanNodeAdvTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.DataType;
diff --git a/document/src/test/java/com/yahoo/document/annotation/SpanNodeTestCase.java b/document/src/test/java/com/yahoo/document/annotation/SpanNodeTestCase.java
index 8e9978c8452..6dfed026a6d 100644
--- a/document/src/test/java/com/yahoo/document/annotation/SpanNodeTestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/SpanNodeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import org.junit.Test;
diff --git a/document/src/test/java/com/yahoo/document/annotation/SpanTestCase.java b/document/src/test/java/com/yahoo/document/annotation/SpanTestCase.java
index 23d62cae239..da9c2e0f5fe 100755
--- a/document/src/test/java/com/yahoo/document/annotation/SpanTestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/SpanTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.datatypes.StringFieldValue;
diff --git a/document/src/test/java/com/yahoo/document/annotation/SpanTreeAdvTest.java b/document/src/test/java/com/yahoo/document/annotation/SpanTreeAdvTest.java
index 852835ab8c4..1347759c144 100644
--- a/document/src/test/java/com/yahoo/document/annotation/SpanTreeAdvTest.java
+++ b/document/src/test/java/com/yahoo/document/annotation/SpanTreeAdvTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.DataType;
diff --git a/document/src/test/java/com/yahoo/document/annotation/SpanTreeTestCase.java b/document/src/test/java/com/yahoo/document/annotation/SpanTreeTestCase.java
index b200e72514d..f6d77bef4c8 100755
--- a/document/src/test/java/com/yahoo/document/annotation/SpanTreeTestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/SpanTreeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.DataType;
diff --git a/document/src/test/java/com/yahoo/document/annotation/SystemTestCase.java b/document/src/test/java/com/yahoo/document/annotation/SystemTestCase.java
index 5382c471963..9978fd1b014 100755
--- a/document/src/test/java/com/yahoo/document/annotation/SystemTestCase.java
+++ b/document/src/test/java/com/yahoo/document/annotation/SystemTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.annotation;
import com.yahoo.document.Document;
diff --git a/document/src/test/java/com/yahoo/document/datatypes/ArrayTestCase.java b/document/src/test/java/com/yahoo/document/datatypes/ArrayTestCase.java
index c3c69e55a4b..cafaafd7326 100755
--- a/document/src/test/java/com/yahoo/document/datatypes/ArrayTestCase.java
+++ b/document/src/test/java/com/yahoo/document/datatypes/ArrayTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.ArrayDataType;
diff --git a/document/src/test/java/com/yahoo/document/datatypes/MapTestCase.java b/document/src/test/java/com/yahoo/document/datatypes/MapTestCase.java
index eb47fb1425d..6f30569ef10 100644
--- a/document/src/test/java/com/yahoo/document/datatypes/MapTestCase.java
+++ b/document/src/test/java/com/yahoo/document/datatypes/MapTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import java.util.Map;
diff --git a/document/src/test/java/com/yahoo/document/datatypes/NumericFieldValueTestCase.java b/document/src/test/java/com/yahoo/document/datatypes/NumericFieldValueTestCase.java
index e5c5a0d0d02..b871b704dc3 100644
--- a/document/src/test/java/com/yahoo/document/datatypes/NumericFieldValueTestCase.java
+++ b/document/src/test/java/com/yahoo/document/datatypes/NumericFieldValueTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import org.junit.Test;
diff --git a/document/src/test/java/com/yahoo/document/datatypes/PredicateFieldValueTest.java b/document/src/test/java/com/yahoo/document/datatypes/PredicateFieldValueTest.java
index 374f336e483..95bdf8f4bc4 100644
--- a/document/src/test/java/com/yahoo/document/datatypes/PredicateFieldValueTest.java
+++ b/document/src/test/java/com/yahoo/document/datatypes/PredicateFieldValueTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.DataType;
diff --git a/document/src/test/java/com/yahoo/document/datatypes/RawTestCase.java b/document/src/test/java/com/yahoo/document/datatypes/RawTestCase.java
index 7513813b8b1..bb91306cdb3 100644
--- a/document/src/test/java/com/yahoo/document/datatypes/RawTestCase.java
+++ b/document/src/test/java/com/yahoo/document/datatypes/RawTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import org.junit.Test;
diff --git a/document/src/test/java/com/yahoo/document/datatypes/ReferenceFieldValueTestCase.java b/document/src/test/java/com/yahoo/document/datatypes/ReferenceFieldValueTestCase.java
index f931c6682b7..a537f5f5108 100644
--- a/document/src/test/java/com/yahoo/document/datatypes/ReferenceFieldValueTestCase.java
+++ b/document/src/test/java/com/yahoo/document/datatypes/ReferenceFieldValueTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.DataType;
diff --git a/document/src/test/java/com/yahoo/document/datatypes/StringFieldValueTestCase.java b/document/src/test/java/com/yahoo/document/datatypes/StringFieldValueTestCase.java
index 87b70134902..7a1b16c14ee 100644
--- a/document/src/test/java/com/yahoo/document/datatypes/StringFieldValueTestCase.java
+++ b/document/src/test/java/com/yahoo/document/datatypes/StringFieldValueTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import org.junit.Test;
diff --git a/document/src/test/java/com/yahoo/document/datatypes/StringTestCase.java b/document/src/test/java/com/yahoo/document/datatypes/StringTestCase.java
index 514b793f28e..fe52e3e8485 100644
--- a/document/src/test/java/com/yahoo/document/datatypes/StringTestCase.java
+++ b/document/src/test/java/com/yahoo/document/datatypes/StringTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.DataType;
diff --git a/document/src/test/java/com/yahoo/document/datatypes/StructTestCase.java b/document/src/test/java/com/yahoo/document/datatypes/StructTestCase.java
index 295cfa37e89..ea066ff4ffd 100644
--- a/document/src/test/java/com/yahoo/document/datatypes/StructTestCase.java
+++ b/document/src/test/java/com/yahoo/document/datatypes/StructTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.DataType;
diff --git a/document/src/test/java/com/yahoo/document/datatypes/TensorFieldValueTestCase.java b/document/src/test/java/com/yahoo/document/datatypes/TensorFieldValueTestCase.java
index 56a4c6c9e94..ad13ef9e95a 100644
--- a/document/src/test/java/com/yahoo/document/datatypes/TensorFieldValueTestCase.java
+++ b/document/src/test/java/com/yahoo/document/datatypes/TensorFieldValueTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.tensor.Tensor;
diff --git a/document/src/test/java/com/yahoo/document/datatypes/UriFieldValueTest.java b/document/src/test/java/com/yahoo/document/datatypes/UriFieldValueTest.java
index e2727f49239..173d69facc3 100644
--- a/document/src/test/java/com/yahoo/document/datatypes/UriFieldValueTest.java
+++ b/document/src/test/java/com/yahoo/document/datatypes/UriFieldValueTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import org.junit.Test;
diff --git a/document/src/test/java/com/yahoo/document/datatypes/WeightedSetTestCase.java b/document/src/test/java/com/yahoo/document/datatypes/WeightedSetTestCase.java
index 2c6e208f888..5e0b16916a7 100644
--- a/document/src/test/java/com/yahoo/document/datatypes/WeightedSetTestCase.java
+++ b/document/src/test/java/com/yahoo/document/datatypes/WeightedSetTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.datatypes;
import com.yahoo.document.DataType;
diff --git a/document/src/test/java/com/yahoo/document/datatypes/blog.sd b/document/src/test/java/com/yahoo/document/datatypes/blog.sd
index 1723e942370..bb077760894 100644
--- a/document/src/test/java/com/yahoo/document/datatypes/blog.sd
+++ b/document/src/test/java/com/yahoo/document/datatypes/blog.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search blog {
document blog {
diff --git a/document/src/test/java/com/yahoo/document/datatypes/documentmanager.blog.sd b/document/src/test/java/com/yahoo/document/datatypes/documentmanager.blog.sd
index 17768e87fcc..9b5966bd458 100644
--- a/document/src/test/java/com/yahoo/document/datatypes/documentmanager.blog.sd
+++ b/document/src/test/java/com/yahoo/document/datatypes/documentmanager.blog.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
enablecompression false
datatype[7]
datatype[0].id -945638949
diff --git a/document/src/test/java/com/yahoo/document/docindoc.sd b/document/src/test/java/com/yahoo/document/docindoc.sd
index b05f8d71c89..ca774778984 100644
--- a/document/src/test/java/com/yahoo/document/docindoc.sd
+++ b/document/src/test/java/com/yahoo/document/docindoc.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search docindoc {
document docindoc {
field name type string { }
diff --git a/document/src/test/java/com/yahoo/document/fieldset/FieldSetTestCase.java b/document/src/test/java/com/yahoo/document/fieldset/FieldSetTestCase.java
index fa0e3c82d01..e1e93adfb6d 100644
--- a/document/src/test/java/com/yahoo/document/fieldset/FieldSetTestCase.java
+++ b/document/src/test/java/com/yahoo/document/fieldset/FieldSetTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.fieldset;
import com.yahoo.document.Document;
diff --git a/document/src/test/java/com/yahoo/document/json/DocumentUpdateJsonSerializerTest.java b/document/src/test/java/com/yahoo/document/json/DocumentUpdateJsonSerializerTest.java
index 1772a410a36..039880185ce 100644
--- a/document/src/test/java/com/yahoo/document/json/DocumentUpdateJsonSerializerTest.java
+++ b/document/src/test/java/com/yahoo/document/json/DocumentUpdateJsonSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json;
import com.fasterxml.jackson.core.JsonFactory;
diff --git a/document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java b/document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java
index e50fd9734f7..527159dbc10 100644
--- a/document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java
+++ b/document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json;
import com.fasterxml.jackson.core.JsonFactory;
@@ -1282,6 +1282,22 @@ public class JsonReaderTestCase {
}
@Test
+ public void testDisallowedDenseTensorShortFormWithoutValues() {
+ assertCreatePutFails(inputJson("{ 'values': [] }"), "dense_tensor",
+ "The 'values' array does not contain any values");
+ assertCreatePutFails(inputJson("{ 'values': '' }"), "dense_tensor",
+ "The 'values' string does not contain any values");
+ }
+
+ @Test
+ public void testDisallowedMixedTensorShortFormWithoutValues() {
+ assertCreatePutFails(inputJson("{\"blocks\":{ \"a\": [] } }"),
+ "mixed_tensor", "Expected 3 values, but got 0");
+ assertCreatePutFails(inputJson("{\"blocks\":[ {\"address\":{\"x\":\"a\"}, \"values\": [] } ] }"),
+ "mixed_tensor", "Expected 3 values, but got 0");
+ }
+
+ @Test
public void testParsingOfSparseTensorWithCells() {
Tensor tensor = assertSparseTensorField("{{x:a,y:b}:2.0,{x:c,y:b}:3.0}}",
createPutWithSparseTensor(inputJson("{",
@@ -2029,4 +2045,13 @@ public class JsonReaderTestCase {
new JsonReader(types, jsonToInputStream(jsonData), parserFactory).next();
}
+ private void assertCreatePutFails(String tensor, String name, String msg) {
+ try {
+ createPutWithTensor(inputJson(tensor), name);
+ fail("Expected exception");
+ } catch (IllegalArgumentException e) {
+ assertTrue(e.getMessage().contains(msg));
+ }
+ }
+
}
diff --git a/document/src/test/java/com/yahoo/document/json/JsonWriterTestCase.java b/document/src/test/java/com/yahoo/document/json/JsonWriterTestCase.java
index fcc67136526..29703eadfce 100644
--- a/document/src/test/java/com/yahoo/document/json/JsonWriterTestCase.java
+++ b/document/src/test/java/com/yahoo/document/json/JsonWriterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.json;
import com.fasterxml.jackson.core.JsonFactory;
diff --git a/document/src/test/java/com/yahoo/document/outerdoc.sd b/document/src/test/java/com/yahoo/document/outerdoc.sd
index 57a1bda323a..50981d307b9 100644
--- a/document/src/test/java/com/yahoo/document/outerdoc.sd
+++ b/document/src/test/java/com/yahoo/document/outerdoc.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search outerdoc {
document outerdoc {
field innerdocuments type array<docindoc> { }
diff --git a/document/src/test/java/com/yahoo/document/select/BucketSelectorTestCase.java b/document/src/test/java/com/yahoo/document/select/BucketSelectorTestCase.java
index aea5ea7fda8..4fed84fb628 100644
--- a/document/src/test/java/com/yahoo/document/select/BucketSelectorTestCase.java
+++ b/document/src/test/java/com/yahoo/document/select/BucketSelectorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select;
import com.yahoo.document.BucketId;
diff --git a/document/src/test/java/com/yahoo/document/select/DocumentSelectorTestCase.java b/document/src/test/java/com/yahoo/document/select/DocumentSelectorTestCase.java
index 5e5e2394e49..266434bf856 100644
--- a/document/src/test/java/com/yahoo/document/select/DocumentSelectorTestCase.java
+++ b/document/src/test/java/com/yahoo/document/select/DocumentSelectorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.select;
import com.yahoo.document.ArrayDataType;
diff --git a/document/src/test/java/com/yahoo/document/serialization/PredicateFieldValueSerializationTestCase.java b/document/src/test/java/com/yahoo/document/serialization/PredicateFieldValueSerializationTestCase.java
index 0177748f25c..8b4959a5d94 100644
--- a/document/src/test/java/com/yahoo/document/serialization/PredicateFieldValueSerializationTestCase.java
+++ b/document/src/test/java/com/yahoo/document/serialization/PredicateFieldValueSerializationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.DataType;
diff --git a/document/src/test/java/com/yahoo/document/serialization/ReferenceFieldValueSerializationTestCase.java b/document/src/test/java/com/yahoo/document/serialization/ReferenceFieldValueSerializationTestCase.java
index 227f33d8d27..73741faaac4 100644
--- a/document/src/test/java/com/yahoo/document/serialization/ReferenceFieldValueSerializationTestCase.java
+++ b/document/src/test/java/com/yahoo/document/serialization/ReferenceFieldValueSerializationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.Document;
diff --git a/document/src/test/java/com/yahoo/document/serialization/SerializationHelperTestCase.java b/document/src/test/java/com/yahoo/document/serialization/SerializationHelperTestCase.java
index 547da37f555..9d7f8b447f2 100644
--- a/document/src/test/java/com/yahoo/document/serialization/SerializationHelperTestCase.java
+++ b/document/src/test/java/com/yahoo/document/serialization/SerializationHelperTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.datatypes.Raw;
diff --git a/document/src/test/java/com/yahoo/document/serialization/SerializationTestUtils.java b/document/src/test/java/com/yahoo/document/serialization/SerializationTestUtils.java
index 951ee802e58..bfb4353a80a 100644
--- a/document/src/test/java/com/yahoo/document/serialization/SerializationTestUtils.java
+++ b/document/src/test/java/com/yahoo/document/serialization/SerializationTestUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.Document;
diff --git a/document/src/test/java/com/yahoo/document/serialization/SerializeAnnotationsTestCase.java b/document/src/test/java/com/yahoo/document/serialization/SerializeAnnotationsTestCase.java
index 91d360b5d2a..d27a4ed6326 100644
--- a/document/src/test/java/com/yahoo/document/serialization/SerializeAnnotationsTestCase.java
+++ b/document/src/test/java/com/yahoo/document/serialization/SerializeAnnotationsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.DataType;
diff --git a/document/src/test/java/com/yahoo/document/serialization/TensorFieldValueSerializationTestCase.java b/document/src/test/java/com/yahoo/document/serialization/TensorFieldValueSerializationTestCase.java
index 5c65b11a0c4..e4e625f78c0 100644
--- a/document/src/test/java/com/yahoo/document/serialization/TensorFieldValueSerializationTestCase.java
+++ b/document/src/test/java/com/yahoo/document/serialization/TensorFieldValueSerializationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.DataType;
diff --git a/document/src/test/java/com/yahoo/document/serialization/TestDocumentFactory.java b/document/src/test/java/com/yahoo/document/serialization/TestDocumentFactory.java
index 13cab876942..cf26bde9f8c 100644
--- a/document/src/test/java/com/yahoo/document/serialization/TestDocumentFactory.java
+++ b/document/src/test/java/com/yahoo/document/serialization/TestDocumentFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.Document;
diff --git a/document/src/test/java/com/yahoo/document/serialization/VespaDocumentSerializerTestCase.java b/document/src/test/java/com/yahoo/document/serialization/VespaDocumentSerializerTestCase.java
index 079e16915e1..379089f1c79 100644
--- a/document/src/test/java/com/yahoo/document/serialization/VespaDocumentSerializerTestCase.java
+++ b/document/src/test/java/com/yahoo/document/serialization/VespaDocumentSerializerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.compress.CompressionType;
diff --git a/document/src/test/java/com/yahoo/document/serialization/XmlDocumentWriterTestCase.java b/document/src/test/java/com/yahoo/document/serialization/XmlDocumentWriterTestCase.java
index 4e8e73dc6af..b291d3e784d 100644
--- a/document/src/test/java/com/yahoo/document/serialization/XmlDocumentWriterTestCase.java
+++ b/document/src/test/java/com/yahoo/document/serialization/XmlDocumentWriterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.DataType;
diff --git a/document/src/test/java/com/yahoo/document/serialization/XmlStreamTestCase.java b/document/src/test/java/com/yahoo/document/serialization/XmlStreamTestCase.java
index 21795044252..afe08aeb2d6 100644
--- a/document/src/test/java/com/yahoo/document/serialization/XmlStreamTestCase.java
+++ b/document/src/test/java/com/yahoo/document/serialization/XmlStreamTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.serialization;
import com.yahoo.document.serialization.XmlStream;
diff --git a/document/src/test/java/com/yahoo/document/update/FieldUpdateTestCase.java b/document/src/test/java/com/yahoo/document/update/FieldUpdateTestCase.java
index 86ef15e8f33..d58bd197879 100644
--- a/document/src/test/java/com/yahoo/document/update/FieldUpdateTestCase.java
+++ b/document/src/test/java/com/yahoo/document/update/FieldUpdateTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.update;
import com.yahoo.document.*;
diff --git a/document/src/test/java/com/yahoo/document/update/SerializationTestCase.java b/document/src/test/java/com/yahoo/document/update/SerializationTestCase.java
index 0906f147627..13eac941afb 100644
--- a/document/src/test/java/com/yahoo/document/update/SerializationTestCase.java
+++ b/document/src/test/java/com/yahoo/document/update/SerializationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.update;
import com.yahoo.document.*;
diff --git a/document/src/test/java/com/yahoo/document/update/ValueUpdateTestCase.java b/document/src/test/java/com/yahoo/document/update/ValueUpdateTestCase.java
index 0e90e34bb5e..6418035cbfa 100644
--- a/document/src/test/java/com/yahoo/document/update/ValueUpdateTestCase.java
+++ b/document/src/test/java/com/yahoo/document/update/ValueUpdateTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.update;
import com.yahoo.document.datatypes.FieldValue;
diff --git a/document/src/test/java/com/yahoo/vespaxmlparser/PositionParserTestCase.java b/document/src/test/java/com/yahoo/vespaxmlparser/PositionParserTestCase.java
index e2aafcb4fdc..e2070edd397 100644
--- a/document/src/test/java/com/yahoo/vespaxmlparser/PositionParserTestCase.java
+++ b/document/src/test/java/com/yahoo/vespaxmlparser/PositionParserTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaxmlparser;
import com.yahoo.document.Document;
diff --git a/document/src/test/java/com/yahoo/vespaxmlparser/UriParserTestCase.java b/document/src/test/java/com/yahoo/vespaxmlparser/UriParserTestCase.java
index 0ccae4dbde5..3eb05e6871b 100644
--- a/document/src/test/java/com/yahoo/vespaxmlparser/UriParserTestCase.java
+++ b/document/src/test/java/com/yahoo/vespaxmlparser/UriParserTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaxmlparser;
import com.yahoo.document.*;
diff --git a/document/src/test/java/com/yahoo/vespaxmlparser/VespaXMLReaderTestCase.java b/document/src/test/java/com/yahoo/vespaxmlparser/VespaXMLReaderTestCase.java
index 6e975a707cc..769a73d536d 100644
--- a/document/src/test/java/com/yahoo/vespaxmlparser/VespaXMLReaderTestCase.java
+++ b/document/src/test/java/com/yahoo/vespaxmlparser/VespaXMLReaderTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaxmlparser;
import com.yahoo.document.*;
diff --git a/document/src/test/java/com/yahoo/vespaxmlparser/VespaXmlFieldReaderTestCase.java b/document/src/test/java/com/yahoo/vespaxmlparser/VespaXmlFieldReaderTestCase.java
index a3db1b06abe..4207c0495e6 100644
--- a/document/src/test/java/com/yahoo/vespaxmlparser/VespaXmlFieldReaderTestCase.java
+++ b/document/src/test/java/com/yahoo/vespaxmlparser/VespaXmlFieldReaderTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaxmlparser;
import com.yahoo.document.*;
diff --git a/document/src/test/java/com/yahoo/vespaxmlparser/VespaXmlUpdateReaderTestCase.java b/document/src/test/java/com/yahoo/vespaxmlparser/VespaXmlUpdateReaderTestCase.java
index a6e14f25bea..5d4906495b4 100644
--- a/document/src/test/java/com/yahoo/vespaxmlparser/VespaXmlUpdateReaderTestCase.java
+++ b/document/src/test/java/com/yahoo/vespaxmlparser/VespaXmlUpdateReaderTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaxmlparser;
import com.yahoo.document.DataType;
diff --git a/document/src/test/java/com/yahoo/vespaxmlparser/XMLNumericFieldErrorMsgTestCase.java b/document/src/test/java/com/yahoo/vespaxmlparser/XMLNumericFieldErrorMsgTestCase.java
index 3c93dc1429d..e0ad47a4d79 100644
--- a/document/src/test/java/com/yahoo/vespaxmlparser/XMLNumericFieldErrorMsgTestCase.java
+++ b/document/src/test/java/com/yahoo/vespaxmlparser/XMLNumericFieldErrorMsgTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaxmlparser;
import com.yahoo.document.DataType;
diff --git a/document/src/test/vespaxmlparser/test01.xml b/document/src/test/vespaxmlparser/test01.xml
index c73410c70d6..3a1d560326d 100644
--- a/document/src/test/vespaxmlparser/test01.xml
+++ b/document/src/test/vespaxmlparser/test01.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!--
NOTE: see documentmanager.cfg for document type during test
a new document, adding all possible fields available to this documenttype
diff --git a/document/src/test/vespaxmlparser/test02.xml b/document/src/test/vespaxmlparser/test02.xml
index 7a02a4f7929..83e5d3f5ea8 100644
--- a/document/src/test/vespaxmlparser/test02.xml
+++ b/document/src/test/vespaxmlparser/test02.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!--
NOTE: see documentmanager.cfg for document type during test
smaller document adding just a few fields
diff --git a/document/src/test/vespaxmlparser/test03.xml b/document/src/test/vespaxmlparser/test03.xml
index a3090cc95a1..74849a67b2f 100644
--- a/document/src/test/vespaxmlparser/test03.xml
+++ b/document/src/test/vespaxmlparser/test03.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!--
NOTE: see documentmanager.cfg for document type during test
diff --git a/document/src/test/vespaxmlparser/test04.xml b/document/src/test/vespaxmlparser/test04.xml
index 8dc1a90caab..1e475dd9319 100644
--- a/document/src/test/vespaxmlparser/test04.xml
+++ b/document/src/test/vespaxmlparser/test04.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!--
NOTE: see documentmanager.cfg for document type during test
diff --git a/document/src/test/vespaxmlparser/test05.xml b/document/src/test/vespaxmlparser/test05.xml
index af2e019d168..6f417b1f93f 100644
--- a/document/src/test/vespaxmlparser/test05.xml
+++ b/document/src/test/vespaxmlparser/test05.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!--
NOTE: see documentmanager.cfg for document type during test
diff --git a/document/src/test/vespaxmlparser/test06.xml b/document/src/test/vespaxmlparser/test06.xml
index 3c6b293e82b..febe7a2748f 100644
--- a/document/src/test/vespaxmlparser/test06.xml
+++ b/document/src/test/vespaxmlparser/test06.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!--
Document : testXML06.xml
diff --git a/document/src/test/vespaxmlparser/test07.xml b/document/src/test/vespaxmlparser/test07.xml
index 5f2873f6f20..9085dd69662 100644
--- a/document/src/test/vespaxmlparser/test07.xml
+++ b/document/src/test/vespaxmlparser/test07.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!--
- Different numeric operations
diff --git a/document/src/test/vespaxmlparser/test08.xml b/document/src/test/vespaxmlparser/test08.xml
index e3d0c00800c..fc749cdc0c8 100644
--- a/document/src/test/vespaxmlparser/test08.xml
+++ b/document/src/test/vespaxmlparser/test08.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!--
NOTE: see documentmanager.cfg for document type during test
diff --git a/document/src/test/vespaxmlparser/test09.xml b/document/src/test/vespaxmlparser/test09.xml
index b3df5202030..7957dc6fe37 100644
--- a/document/src/test/vespaxmlparser/test09.xml
+++ b/document/src/test/vespaxmlparser/test09.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!--
NOTE: see documentmanager.cfg for document type during test
diff --git a/document/src/test/vespaxmlparser/test10.xml b/document/src/test/vespaxmlparser/test10.xml
index ba7abd53738..5846fa7a445 100644
--- a/document/src/test/vespaxmlparser/test10.xml
+++ b/document/src/test/vespaxmlparser/test10.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!--
Document : test10.xml
diff --git a/document/src/test/vespaxmlparser/test12.xml b/document/src/test/vespaxmlparser/test12.xml
index 4d02b2db8d8..2c970c58598 100644
--- a/document/src/test/vespaxmlparser/test12.xml
+++ b/document/src/test/vespaxmlparser/test12.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<vespafeed>
<!--warning document: -->
diff --git a/document/src/test/vespaxmlparser/test13.xml b/document/src/test/vespaxmlparser/test13.xml
index 54194f15f0e..e8b58bc3e31 100644
--- a/document/src/test/vespaxmlparser/test13.xml
+++ b/document/src/test/vespaxmlparser/test13.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<vespafeed>
<document documenttype="alltypes" documentid="id:ns:alltypes::http://all.types">
<stringval>Banana</stringval>
diff --git a/document/src/test/vespaxmlparser/testXMLfile.xml b/document/src/test/vespaxmlparser/testXMLfile.xml
index 29b6041a14a..7a14af65828 100644
--- a/document/src/test/vespaxmlparser/testXMLfile.xml
+++ b/document/src/test/vespaxmlparser/testXMLfile.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<vespafeed>
<document documenttype="music" documentid="id:ns::music::http://music.yahoo.com/bobdylan/BestOf">
<url>http://music.yahoo.com/bobdylan/BestOf</url>
diff --git a/document/src/test/vespaxmlparser/test_docindoc.xml b/document/src/test/vespaxmlparser/test_docindoc.xml
index 5734a0e635b..ac5df3cf080 100644
--- a/document/src/test/vespaxmlparser/test_docindoc.xml
+++ b/document/src/test/vespaxmlparser/test_docindoc.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<vespafeed>
<document type="outerdoc" id="id:outer:outerdoc::this:is:outer:doc">
diff --git a/document/src/test/vespaxmlparser/test_position.xml b/document/src/test/vespaxmlparser/test_position.xml
index ee1e95580f2..c23e0a40280 100644
--- a/document/src/test/vespaxmlparser/test_position.xml
+++ b/document/src/test/vespaxmlparser/test_position.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<vespafeed>
<document documenttype="my_doc" documentid="id:ns:my_doc::">
<my_pos><x>1</x><y>2</y></my_pos>
diff --git a/document/src/test/vespaxmlparser/test_uri.xml b/document/src/test/vespaxmlparser/test_uri.xml
index 92f77d8ec99..47ec03a0fe7 100644
--- a/document/src/test/vespaxmlparser/test_uri.xml
+++ b/document/src/test/vespaxmlparser/test_uri.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<vespafeed>
<document documenttype="my_doc" documentid="id:ns:my_doc::">
<my_uri>scheme://host</my_uri>
diff --git a/document/src/test/vespaxmlparser/test_url.xml b/document/src/test/vespaxmlparser/test_url.xml
index c66625a6fe6..6adbec64ebe 100644
--- a/document/src/test/vespaxmlparser/test_url.xml
+++ b/document/src/test/vespaxmlparser/test_url.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<vespafeed>
<document documenttype="my_doc" documentid="id:ns:my_doc::">
<my_url>
diff --git a/document/src/test/vespaxmlparser/testalltypes.xml b/document/src/test/vespaxmlparser/testalltypes.xml
index 072a77ff609..a9e4e4498db 100644
--- a/document/src/test/vespaxmlparser/testalltypes.xml
+++ b/document/src/test/vespaxmlparser/testalltypes.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!--
NOTE: see documentmanager.cfg for document type during test
a new document, adding all possible fields available to this documenttype
diff --git a/document/src/test/vespaxmlparser/testandset.xml b/document/src/test/vespaxmlparser/testandset.xml
index 317d30e6860..31c1c8274f9 100644
--- a/document/src/test/vespaxmlparser/testandset.xml
+++ b/document/src/test/vespaxmlparser/testandset.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!--
Document : testandset.xml
diff --git a/document/src/test/vespaxmlparser/testmapnokey.xml b/document/src/test/vespaxmlparser/testmapnokey.xml
index 6e198d4319e..fe0713e7e25 100644
--- a/document/src/test/vespaxmlparser/testmapnokey.xml
+++ b/document/src/test/vespaxmlparser/testmapnokey.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!--
NOTE: see documentmanager.cfg for document type during test
a new document, adding all possible fields available to this documenttype
diff --git a/document/src/test/vespaxmlparser/testmapnovalue.xml b/document/src/test/vespaxmlparser/testmapnovalue.xml
index ffcca1e3676..7a5cc794d71 100644
--- a/document/src/test/vespaxmlparser/testmapnovalue.xml
+++ b/document/src/test/vespaxmlparser/testmapnovalue.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!--
NOTE: see documentmanager.cfg for document type during test
a new document, adding all possible fields available to this documenttype
diff --git a/document/src/tests/CMakeLists.txt b/document/src/tests/CMakeLists.txt
index cd446908b47..5e1e8024935 100644
--- a/document/src/tests/CMakeLists.txt
+++ b/document/src/tests/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Runner for unit tests written in gtest.
# NOTE: All new test classes should be added here.
diff --git a/document/src/tests/annotation/CMakeLists.txt b/document/src/tests/annotation/CMakeLists.txt
index ba22bcc6e23..b386d81ab9f 100644
--- a/document/src/tests/annotation/CMakeLists.txt
+++ b/document/src/tests/annotation/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(document_annotation_test_app TEST
SOURCES
annotation_test.cpp
diff --git a/document/src/tests/annotation/annotation_test.cpp b/document/src/tests/annotation/annotation_test.cpp
index 5e7fc325ecd..e940d147588 100644
--- a/document/src/tests/annotation/annotation_test.cpp
+++ b/document/src/tests/annotation/annotation_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for annotation.
#include <stdlib.h>
diff --git a/document/src/tests/arrayfieldvaluetest.cpp b/document/src/tests/arrayfieldvaluetest.cpp
index 0bdf51194fb..a8ca9d22916 100644
--- a/document/src/tests/arrayfieldvaluetest.cpp
+++ b/document/src/tests/arrayfieldvaluetest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/fieldvalue/fieldvalues.h>
#include <vespa/document/serialization/vespadocumentdeserializer.h>
diff --git a/document/src/tests/base/CMakeLists.txt b/document/src/tests/base/CMakeLists.txt
index 3ea52034d95..c3f0017dadb 100644
--- a/document/src/tests/base/CMakeLists.txt
+++ b/document/src/tests/base/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(document_documentid_test_app TEST
SOURCES
documentid_test.cpp
diff --git a/document/src/tests/base/documentid_benchmark.cpp b/document/src/tests/base/documentid_benchmark.cpp
index 20c91d4a21e..7b5dc35b6e4 100644
--- a/document/src/tests/base/documentid_benchmark.cpp
+++ b/document/src/tests/base/documentid_benchmark.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/documentid.h>
#include <cinttypes>
diff --git a/document/src/tests/base/documentid_test.cpp b/document/src/tests/base/documentid_test.cpp
index e2bb9dbc4e9..546543ccafa 100644
--- a/document/src/tests/base/documentid_test.cpp
+++ b/document/src/tests/base/documentid_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for documentid.
#include <vespa/document/base/documentid.h>
diff --git a/document/src/tests/bucketselectortest.cpp b/document/src/tests/bucketselectortest.cpp
index d8950314a3a..a2a4130831f 100644
--- a/document/src/tests/bucketselectortest.cpp
+++ b/document/src/tests/bucketselectortest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/bucket/bucketselector.h>
diff --git a/document/src/tests/buckettest.cpp b/document/src/tests/buckettest.cpp
index 763575ece4c..b3122caeaff 100644
--- a/document/src/tests/buckettest.cpp
+++ b/document/src/tests/buckettest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/bucket/bucketidfactory.h>
#include <vespa/document/base/documentid.h>
diff --git a/document/src/tests/datatype/CMakeLists.txt b/document/src/tests/datatype/CMakeLists.txt
index 7b82d234a89..ff16529f839 100644
--- a/document/src/tests/datatype/CMakeLists.txt
+++ b/document/src/tests/datatype/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(document_datatype_test_app TEST
SOURCES
datatype_test.cpp
diff --git a/document/src/tests/datatype/datatype_test.cpp b/document/src/tests/datatype/datatype_test.cpp
index 1e9b9ad64fa..b3da01dfec3 100644
--- a/document/src/tests/datatype/datatype_test.cpp
+++ b/document/src/tests/datatype/datatype_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for datatype.
#include <vespa/document/base/field.h>
diff --git a/document/src/tests/datatype/referencedatatype_test.cpp b/document/src/tests/datatype/referencedatatype_test.cpp
index 104a3c03135..9dba3541594 100644
--- a/document/src/tests/datatype/referencedatatype_test.cpp
+++ b/document/src/tests/datatype/referencedatatype_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/field.h>
#include <vespa/document/datatype/referencedatatype.h>
diff --git a/document/src/tests/document_type_repo_factory/CMakeLists.txt b/document/src/tests/document_type_repo_factory/CMakeLists.txt
index 9a9bf04fa4a..67d5b2df6de 100644
--- a/document/src/tests/document_type_repo_factory/CMakeLists.txt
+++ b/document/src/tests/document_type_repo_factory/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(document_document_type_repo_factory_test_app TEST
SOURCES
document_type_repo_factory_test.cpp
diff --git a/document/src/tests/document_type_repo_factory/document_type_repo_factory_test.cpp b/document/src/tests/document_type_repo_factory/document_type_repo_factory_test.cpp
index 091bca5fa8a..16080266ac0 100644
--- a/document/src/tests/document_type_repo_factory/document_type_repo_factory_test.cpp
+++ b/document/src/tests/document_type_repo_factory/document_type_repo_factory_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/datatype/documenttype.h>
#include <vespa/document/repo/configbuilder.h>
diff --git a/document/src/tests/documentcalculatortestcase.cpp b/document/src/tests/documentcalculatortestcase.cpp
index b6ca27f6bc7..7e27dcf2d36 100644
--- a/document/src/tests/documentcalculatortestcase.cpp
+++ b/document/src/tests/documentcalculatortestcase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/documentcalculator.h>
#include <vespa/document/base/testdocrepo.h>
diff --git a/document/src/tests/documentidtest.cpp b/document/src/tests/documentidtest.cpp
index d3f6e8a8fcd..4b646d7d35b 100644
--- a/document/src/tests/documentidtest.cpp
+++ b/document/src/tests/documentidtest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/document/bucket/bucketidfactory.h>
diff --git a/document/src/tests/documentselectparsertest.cpp b/document/src/tests/documentselectparsertest.cpp
index 7e61752cc1e..c89cefeae29 100644
--- a/document/src/tests/documentselectparsertest.cpp
+++ b/document/src/tests/documentselectparsertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/repo/configbuilder.h>
#include <vespa/document/repo/documenttyperepo.h>
diff --git a/document/src/tests/documenttestcase.cpp b/document/src/tests/documenttestcase.cpp
index e917e33f9ef..9fa72b7c1e7 100644
--- a/document/src/tests/documenttestcase.cpp
+++ b/document/src/tests/documenttestcase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/testdocman.h>
#include <vespa/document/datatype/annotationreferencedatatype.h>
diff --git a/document/src/tests/documenttypetestcase.cpp b/document/src/tests/documenttypetestcase.cpp
index 901f02652fb..95ee3f4deed 100644
--- a/document/src/tests/documenttypetestcase.cpp
+++ b/document/src/tests/documenttypetestcase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/testdocrepo.h>
#include <vespa/document/datatype/documenttype.h>
#include <vespa/document/fieldvalue/fieldvalues.h>
diff --git a/document/src/tests/documentupdatetestcase.cpp b/document/src/tests/documentupdatetestcase.cpp
index 3faec14ea7b..f505c2dd32d 100644
--- a/document/src/tests/documentupdatetestcase.cpp
+++ b/document/src/tests/documentupdatetestcase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/testdocman.h>
#include <vespa/document/base/exceptions.h>
diff --git a/document/src/tests/feed_reject_helper_test.cpp b/document/src/tests/feed_reject_helper_test.cpp
index 477ae2520b3..bb7faade164 100644
--- a/document/src/tests/feed_reject_helper_test.cpp
+++ b/document/src/tests/feed_reject_helper_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/fieldvalue/boolfieldvalue.h>
#include <vespa/document/fieldvalue/bytefieldvalue.h>
diff --git a/document/src/tests/fieldpathupdatetestcase.cpp b/document/src/tests/fieldpathupdatetestcase.cpp
index ef99feb47a5..d71ef94a595 100644
--- a/document/src/tests/fieldpathupdatetestcase.cpp
+++ b/document/src/tests/fieldpathupdatetestcase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/testdocman.h>
#include <vespa/document/fieldvalue/iteratorhandler.h>
#include <vespa/document/select/node.h>
diff --git a/document/src/tests/fieldsettest.cpp b/document/src/tests/fieldsettest.cpp
index a3b78e6081f..b4ee7713613 100644
--- a/document/src/tests/fieldsettest.cpp
+++ b/document/src/tests/fieldsettest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/testdocman.h>
#include <vespa/document/fieldset/fieldsetrepo.h>
diff --git a/document/src/tests/fieldvalue/CMakeLists.txt b/document/src/tests/fieldvalue/CMakeLists.txt
index cc544847de7..9713b1ad6a6 100644
--- a/document/src/tests/fieldvalue/CMakeLists.txt
+++ b/document/src/tests/fieldvalue/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(document_document_test_app TEST
SOURCES
document_test.cpp
diff --git a/document/src/tests/fieldvalue/document_test.cpp b/document/src/tests/fieldvalue/document_test.cpp
index b2f6f3a1999..fd277bc2eb4 100644
--- a/document/src/tests/fieldvalue/document_test.cpp
+++ b/document/src/tests/fieldvalue/document_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for document.
#include <vespa/document/base/documentid.h>
diff --git a/document/src/tests/fieldvalue/fieldvalue_test.cpp b/document/src/tests/fieldvalue/fieldvalue_test.cpp
index 6d3b1de0b2f..b70fd0d18a8 100644
--- a/document/src/tests/fieldvalue/fieldvalue_test.cpp
+++ b/document/src/tests/fieldvalue/fieldvalue_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for fieldvalue.
#include <vespa/log/log.h>
diff --git a/document/src/tests/fieldvalue/predicatefieldvalue_test.cpp b/document/src/tests/fieldvalue/predicatefieldvalue_test.cpp
index 1a9f0993b9b..99cd03dafc6 100644
--- a/document/src/tests/fieldvalue/predicatefieldvalue_test.cpp
+++ b/document/src/tests/fieldvalue/predicatefieldvalue_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for predicatefieldvalue.
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/document/src/tests/fieldvalue/referencefieldvalue_test.cpp b/document/src/tests/fieldvalue/referencefieldvalue_test.cpp
index b42e2d9cd7a..db380353a55 100644
--- a/document/src/tests/fieldvalue/referencefieldvalue_test.cpp
+++ b/document/src/tests/fieldvalue/referencefieldvalue_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/field.h>
#include <vespa/document/datatype/referencedatatype.h>
diff --git a/document/src/tests/fixed_bucket_spaces_test.cpp b/document/src/tests/fixed_bucket_spaces_test.cpp
index 87903281c46..19cd4f8195a 100644
--- a/document/src/tests/fixed_bucket_spaces_test.cpp
+++ b/document/src/tests/fixed_bucket_spaces_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/bucket/fixed_bucket_spaces.h>
#include <gtest/gtest.h>
diff --git a/document/src/tests/forcelinktest.cpp b/document/src/tests/forcelinktest.cpp
index 421138f34cf..92e18b2286e 100644
--- a/document/src/tests/forcelinktest.cpp
+++ b/document/src/tests/forcelinktest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/forcelink.h>
#include <gtest/gtest.h>
diff --git a/document/src/tests/gid_filter_test.cpp b/document/src/tests/gid_filter_test.cpp
index fec6581b8f7..15592b75e22 100644
--- a/document/src/tests/gid_filter_test.cpp
+++ b/document/src/tests/gid_filter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/select/gid_filter.h>
#include <vespa/document/select/parser.h>
diff --git a/document/src/tests/globalidtest.cpp b/document/src/tests/globalidtest.cpp
index f612b9e341c..58767c751e1 100644
--- a/document/src/tests/globalidtest.cpp
+++ b/document/src/tests/globalidtest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/bucket/bucketidfactory.h>
#include <vespa/document/base/documentid.h>
#include <vespa/document/base/globalid.h>
diff --git a/document/src/tests/positiontypetest.cpp b/document/src/tests/positiontypetest.cpp
index 7365b648e10..36c35bf46a0 100644
--- a/document/src/tests/positiontypetest.cpp
+++ b/document/src/tests/positiontypetest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/datatype/positiondatatype.h>
#include <gtest/gtest.h>
diff --git a/document/src/tests/predicate/CMakeLists.txt b/document/src/tests/predicate/CMakeLists.txt
index 682e8ab2329..b7188e3a208 100644
--- a/document/src/tests/predicate/CMakeLists.txt
+++ b/document/src/tests/predicate/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(document_predicate_test_app TEST
SOURCES
predicate_test.cpp
diff --git a/document/src/tests/predicate/predicate_builder_test.cpp b/document/src/tests/predicate/predicate_builder_test.cpp
index 8497d580776..1b3438e9351 100644
--- a/document/src/tests/predicate/predicate_builder_test.cpp
+++ b/document/src/tests/predicate/predicate_builder_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for predicate_builder.
#include <vespa/log/log.h>
diff --git a/document/src/tests/predicate/predicate_printer_test.cpp b/document/src/tests/predicate/predicate_printer_test.cpp
index 906229920ad..ba0ffe40a27 100644
--- a/document/src/tests/predicate/predicate_printer_test.cpp
+++ b/document/src/tests/predicate/predicate_printer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for predicate_printer.
#include <vespa/log/log.h>
diff --git a/document/src/tests/predicate/predicate_test.cpp b/document/src/tests/predicate/predicate_test.cpp
index 6da866cb154..cee19e8b7ab 100644
--- a/document/src/tests/predicate/predicate_test.cpp
+++ b/document/src/tests/predicate/predicate_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for predicate.
#include <vespa/document/predicate/predicate.h>
diff --git a/document/src/tests/primitivefieldvaluetest.cpp b/document/src/tests/primitivefieldvaluetest.cpp
index 8a5daf05f05..7c734544f27 100644
--- a/document/src/tests/primitivefieldvaluetest.cpp
+++ b/document/src/tests/primitivefieldvaluetest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/fieldvalue/fieldvalues.h>
#include <vespa/document/serialization/vespadocumentdeserializer.h>
diff --git a/document/src/tests/repo/CMakeLists.txt b/document/src/tests/repo/CMakeLists.txt
index 57e814ccc27..bbbcafc2650 100644
--- a/document/src/tests/repo/CMakeLists.txt
+++ b/document/src/tests/repo/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(document_documenttyperepo_test_app TEST
SOURCES
documenttyperepo_test.cpp
diff --git a/document/src/tests/repo/documenttyperepo_test.cpp b/document/src/tests/repo/documenttyperepo_test.cpp
index 7d17a3cfa11..d1456fb40c2 100644
--- a/document/src/tests/repo/documenttyperepo_test.cpp
+++ b/document/src/tests/repo/documenttyperepo_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for documenttyperepo.
#include <vespa/document/base/testdocrepo.h>
diff --git a/document/src/tests/select/CMakeLists.txt b/document/src/tests/select/CMakeLists.txt
index 02f4f50b883..0c83f54194e 100644
--- a/document/src/tests/select/CMakeLists.txt
+++ b/document/src/tests/select/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(document_select_test_app TEST
SOURCES
select_test.cpp
diff --git a/document/src/tests/select/select_test.cpp b/document/src/tests/select/select_test.cpp
index fa42487cd1b..e01564f4b3b 100644
--- a/document/src/tests/select/select_test.cpp
+++ b/document/src/tests/select/select_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/gtest/gtest.h>
#include <vespa/document/base/documentid.h>
diff --git a/document/src/tests/serialization/CMakeLists.txt b/document/src/tests/serialization/CMakeLists.txt
index 42531e4709b..f105bb117bf 100644
--- a/document/src/tests/serialization/CMakeLists.txt
+++ b/document/src/tests/serialization/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(document_vespadocumentserializer_test_app TEST
SOURCES
vespadocumentserializer_test.cpp
diff --git a/document/src/tests/serialization/annotationserializer_test.cpp b/document/src/tests/serialization/annotationserializer_test.cpp
index fef5a3b31e5..c3c9b09477b 100644
--- a/document/src/tests/serialization/annotationserializer_test.cpp
+++ b/document/src/tests/serialization/annotationserializer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/testdocrepo.h>
#include <vespa/document/annotation/alternatespanlist.h>
diff --git a/document/src/tests/serialization/vespadocumentserializer_test.cpp b/document/src/tests/serialization/vespadocumentserializer_test.cpp
index 60ec692e078..3d71371e155 100644
--- a/document/src/tests/serialization/vespadocumentserializer_test.cpp
+++ b/document/src/tests/serialization/vespadocumentserializer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for vespadocumentserializer.
#include <vespa/document/annotation/annotation.h>
diff --git a/document/src/tests/stringtokenizertest.cpp b/document/src/tests/stringtokenizertest.cpp
index ceeaee18aea..db98a3f5f55 100644
--- a/document/src/tests/stringtokenizertest.cpp
+++ b/document/src/tests/stringtokenizertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <iostream>
#include <set>
diff --git a/document/src/tests/struct_anno/CMakeLists.txt b/document/src/tests/struct_anno/CMakeLists.txt
index 1f70bc4420a..2d766b1727b 100644
--- a/document/src/tests/struct_anno/CMakeLists.txt
+++ b/document/src/tests/struct_anno/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(document_struct_anno_test_app TEST
SOURCES
struct_anno_test.cpp
diff --git a/document/src/tests/struct_anno/struct_anno_test.cpp b/document/src/tests/struct_anno/struct_anno_test.cpp
index 0b600fcb236..18e5fbc5565 100644
--- a/document/src/tests/struct_anno/struct_anno_test.cpp
+++ b/document/src/tests/struct_anno/struct_anno_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/testdocrepo.h>
#include <vespa/document/annotation/alternatespanlist.h>
diff --git a/document/src/tests/structfieldvaluetest.cpp b/document/src/tests/structfieldvaluetest.cpp
index 9cf4b38be91..38177c67bf8 100644
--- a/document/src/tests/structfieldvaluetest.cpp
+++ b/document/src/tests/structfieldvaluetest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/fieldvalue/fieldvalues.h>
#include <vespa/document/datatype/documenttype.h>
diff --git a/document/src/tests/tensor_fieldvalue/CMakeLists.txt b/document/src/tests/tensor_fieldvalue/CMakeLists.txt
index 3886a4c8e8e..4241493d523 100644
--- a/document/src/tests/tensor_fieldvalue/CMakeLists.txt
+++ b/document/src/tests/tensor_fieldvalue/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(document_tensor_fieldvalue_test_app TEST
SOURCES
tensor_fieldvalue_test.cpp
diff --git a/document/src/tests/tensor_fieldvalue/partial_add/CMakeLists.txt b/document/src/tests/tensor_fieldvalue/partial_add/CMakeLists.txt
index 862e5152758..a61d9f65920 100644
--- a/document/src/tests/tensor_fieldvalue/partial_add/CMakeLists.txt
+++ b/document/src/tests/tensor_fieldvalue/partial_add/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(document_partial_add_test_app TEST
SOURCES
partial_add_test.cpp
diff --git a/document/src/tests/tensor_fieldvalue/partial_add/partial_add_test.cpp b/document/src/tests/tensor_fieldvalue/partial_add/partial_add_test.cpp
index c67ac55e9f4..9ae87e317f7 100644
--- a/document/src/tests/tensor_fieldvalue/partial_add/partial_add_test.cpp
+++ b/document/src/tests/tensor_fieldvalue/partial_add/partial_add_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/simple_value.h>
#include <vespa/eval/eval/test/gen_spec.h>
diff --git a/document/src/tests/tensor_fieldvalue/partial_modify/CMakeLists.txt b/document/src/tests/tensor_fieldvalue/partial_modify/CMakeLists.txt
index 1c7479c6d93..691d6fca004 100644
--- a/document/src/tests/tensor_fieldvalue/partial_modify/CMakeLists.txt
+++ b/document/src/tests/tensor_fieldvalue/partial_modify/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(document_partial_modify_test_app TEST
SOURCES
partial_modify_test.cpp
diff --git a/document/src/tests/tensor_fieldvalue/partial_modify/partial_modify_test.cpp b/document/src/tests/tensor_fieldvalue/partial_modify/partial_modify_test.cpp
index 26f7a10468a..47ef9f21a27 100644
--- a/document/src/tests/tensor_fieldvalue/partial_modify/partial_modify_test.cpp
+++ b/document/src/tests/tensor_fieldvalue/partial_modify/partial_modify_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/simple_value.h>
#include <vespa/eval/eval/test/gen_spec.h>
diff --git a/document/src/tests/tensor_fieldvalue/partial_remove/CMakeLists.txt b/document/src/tests/tensor_fieldvalue/partial_remove/CMakeLists.txt
index ef04f3749a1..e4c75ede48c 100644
--- a/document/src/tests/tensor_fieldvalue/partial_remove/CMakeLists.txt
+++ b/document/src/tests/tensor_fieldvalue/partial_remove/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(document_partial_remove_test_app TEST
SOURCES
partial_remove_test.cpp
diff --git a/document/src/tests/tensor_fieldvalue/partial_remove/partial_remove_test.cpp b/document/src/tests/tensor_fieldvalue/partial_remove/partial_remove_test.cpp
index 9107f590125..ff78b9269e4 100644
--- a/document/src/tests/tensor_fieldvalue/partial_remove/partial_remove_test.cpp
+++ b/document/src/tests/tensor_fieldvalue/partial_remove/partial_remove_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/simple_value.h>
#include <vespa/eval/eval/test/gen_spec.h>
diff --git a/document/src/tests/tensor_fieldvalue/tensor_fieldvalue_test.cpp b/document/src/tests/tensor_fieldvalue/tensor_fieldvalue_test.cpp
index 092190a427b..ea0695c2366 100644
--- a/document/src/tests/tensor_fieldvalue/tensor_fieldvalue_test.cpp
+++ b/document/src/tests/tensor_fieldvalue/tensor_fieldvalue_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for tensor_fieldvalue.
#include <vespa/log/log.h>
diff --git a/document/src/tests/testbytebuffer.cpp b/document/src/tests/testbytebuffer.cpp
index 7d412be5ba3..8ce7bd3093c 100644
--- a/document/src/tests/testbytebuffer.cpp
+++ b/document/src/tests/testbytebuffer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/util/stringutil.h>
#include <vespa/document/util/bytebuffer.h>
diff --git a/document/src/tests/testdocmantest.cpp b/document/src/tests/testdocmantest.cpp
index 5a00acd58ae..5aa2b65fb99 100644
--- a/document/src/tests/testdocmantest.cpp
+++ b/document/src/tests/testdocmantest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/* $Id$*/
diff --git a/document/src/tests/teststringutil.cpp b/document/src/tests/teststringutil.cpp
index ad57c18488d..3c894c859b2 100644
--- a/document/src/tests/teststringutil.cpp
+++ b/document/src/tests/teststringutil.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/util/stringutil.h>
#include <gtest/gtest.h>
diff --git a/document/src/tests/testxml.cpp b/document/src/tests/testxml.cpp
index e6c8716b251..2fdcee029c8 100644
--- a/document/src/tests/testxml.cpp
+++ b/document/src/tests/testxml.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/testdocrepo.h>
#include <vespa/document/update/documentupdate.h>
diff --git a/document/src/tests/urltypetest.cpp b/document/src/tests/urltypetest.cpp
index ebcbcbf6b7a..5ed8a0c29d2 100644
--- a/document/src/tests/urltypetest.cpp
+++ b/document/src/tests/urltypetest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/datatype/urldatatype.h>
#include <gtest/gtest.h>
diff --git a/document/src/tests/vespaxml/fieldpathupdates.xml b/document/src/tests/vespaxml/fieldpathupdates.xml
index 6c9719a86b9..66019836f14 100644
--- a/document/src/tests/vespaxml/fieldpathupdates.xml
+++ b/document/src/tests/vespaxml/fieldpathupdates.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<vespafeed>
<update documenttype="news" documentid="id:ns:news::http://www.ntnu.no/">
<assign fieldpath="url">assignUrl</assign>
diff --git a/document/src/tests/weightedsetfieldvaluetest.cpp b/document/src/tests/weightedsetfieldvaluetest.cpp
index 71dc9f1d1a9..2c0429f8015 100644
--- a/document/src/tests/weightedsetfieldvaluetest.cpp
+++ b/document/src/tests/weightedsetfieldvaluetest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/fieldvalue/fieldvalues.h>
#include <vespa/document/datatype/weightedsetdatatype.h>
diff --git a/document/src/vespa/document/CMakeLists.txt b/document/src/vespa/document/CMakeLists.txt
index 7ae341f6d4b..a2b40906111 100644
--- a/document/src/vespa/document/CMakeLists.txt
+++ b/document/src/vespa/document/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(document
SOURCES
$<TARGET_OBJECTS:document_util>
diff --git a/document/src/vespa/document/annotation/CMakeLists.txt b/document/src/vespa/document/annotation/CMakeLists.txt
index b68a4c2950a..c53ec7afcae 100644
--- a/document/src/vespa/document/annotation/CMakeLists.txt
+++ b/document/src/vespa/document/annotation/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(document_annotation OBJECT
SOURCES
alternatespanlist.cpp
diff --git a/document/src/vespa/document/annotation/alternatespanlist.cpp b/document/src/vespa/document/annotation/alternatespanlist.cpp
index 53e5974e999..2f9c0e178bc 100644
--- a/document/src/vespa/document/annotation/alternatespanlist.cpp
+++ b/document/src/vespa/document/annotation/alternatespanlist.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "alternatespanlist.h"
#include "spantreevisitor.h"
diff --git a/document/src/vespa/document/annotation/alternatespanlist.h b/document/src/vespa/document/annotation/alternatespanlist.h
index 7420ba6e985..92c58135431 100644
--- a/document/src/vespa/document/annotation/alternatespanlist.h
+++ b/document/src/vespa/document/annotation/alternatespanlist.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/annotation/annotation.cpp b/document/src/vespa/document/annotation/annotation.cpp
index 2c561871991..7e8aeecc4c7 100644
--- a/document/src/vespa/document/annotation/annotation.cpp
+++ b/document/src/vespa/document/annotation/annotation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "annotation.h"
#include "spannode.h"
diff --git a/document/src/vespa/document/annotation/annotation.h b/document/src/vespa/document/annotation/annotation.h
index 94ffe12eb85..4acd4d2f045 100644
--- a/document/src/vespa/document/annotation/annotation.h
+++ b/document/src/vespa/document/annotation/annotation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/annotation/span.cpp b/document/src/vespa/document/annotation/span.cpp
index 3a609227c49..fbdd4f55219 100644
--- a/document/src/vespa/document/annotation/span.cpp
+++ b/document/src/vespa/document/annotation/span.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "span.h"
#include "spantreevisitor.h"
diff --git a/document/src/vespa/document/annotation/span.h b/document/src/vespa/document/annotation/span.h
index 051db3d54c0..ab6f61843d1 100644
--- a/document/src/vespa/document/annotation/span.h
+++ b/document/src/vespa/document/annotation/span.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/annotation/spanlist.cpp b/document/src/vespa/document/annotation/spanlist.cpp
index 5e9235d764a..b3ae3f6b41e 100644
--- a/document/src/vespa/document/annotation/spanlist.cpp
+++ b/document/src/vespa/document/annotation/spanlist.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "spanlist.h"
#include "spantreevisitor.h"
diff --git a/document/src/vespa/document/annotation/spanlist.h b/document/src/vespa/document/annotation/spanlist.h
index 14fcd247007..c4e71b2f29a 100644
--- a/document/src/vespa/document/annotation/spanlist.h
+++ b/document/src/vespa/document/annotation/spanlist.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/annotation/spannode.cpp b/document/src/vespa/document/annotation/spannode.cpp
index a97e34e603a..99d8cec7ee8 100644
--- a/document/src/vespa/document/annotation/spannode.cpp
+++ b/document/src/vespa/document/annotation/spannode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "spannode.h"
#include "spantreevisitor.h"
diff --git a/document/src/vespa/document/annotation/spannode.h b/document/src/vespa/document/annotation/spannode.h
index 75b2e3a4a4f..90b49b31ba0 100644
--- a/document/src/vespa/document/annotation/spannode.h
+++ b/document/src/vespa/document/annotation/spannode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/annotation/spantree.cpp b/document/src/vespa/document/annotation/spantree.cpp
index 5e40e243eaf..13d018ba029 100644
--- a/document/src/vespa/document/annotation/spantree.cpp
+++ b/document/src/vespa/document/annotation/spantree.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "spantree.h"
#include "spannode.h"
diff --git a/document/src/vespa/document/annotation/spantree.h b/document/src/vespa/document/annotation/spantree.h
index d181d755fae..0136b61438d 100644
--- a/document/src/vespa/document/annotation/spantree.h
+++ b/document/src/vespa/document/annotation/spantree.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/annotation/spantreevisitor.h b/document/src/vespa/document/annotation/spantreevisitor.h
index 264110a0547..a29c3f4b73a 100644
--- a/document/src/vespa/document/annotation/spantreevisitor.h
+++ b/document/src/vespa/document/annotation/spantreevisitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/base/CMakeLists.txt b/document/src/vespa/document/base/CMakeLists.txt
index 2abeee9950f..6c20c89863f 100644
--- a/document/src/vespa/document/base/CMakeLists.txt
+++ b/document/src/vespa/document/base/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(document_base OBJECT
SOURCES
documentcalculator.cpp
diff --git a/document/src/vespa/document/base/documentcalculator.cpp b/document/src/vespa/document/base/documentcalculator.cpp
index b611b45fc94..f4078b77237 100644
--- a/document/src/vespa/document/base/documentcalculator.cpp
+++ b/document/src/vespa/document/base/documentcalculator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentcalculator.h"
#include <vespa/document/bucket/bucketidfactory.h>
diff --git a/document/src/vespa/document/base/documentcalculator.h b/document/src/vespa/document/base/documentcalculator.h
index 6414fdd8de3..15d5cd2ebc5 100644
--- a/document/src/vespa/document/base/documentcalculator.h
+++ b/document/src/vespa/document/base/documentcalculator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/select/node.h>
diff --git a/document/src/vespa/document/base/documentid.cpp b/document/src/vespa/document/base/documentid.cpp
index 182a96985cd..f3045cd0758 100644
--- a/document/src/vespa/document/base/documentid.cpp
+++ b/document/src/vespa/document/base/documentid.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentid.h"
#include <vespa/vespalib/util/md5.h>
#include <vespa/vespalib/objects/nbostream.h>
diff --git a/document/src/vespa/document/base/documentid.h b/document/src/vespa/document/base/documentid.h
index 9da28f54b82..06f6a7f4342 100644
--- a/document/src/vespa/document/base/documentid.h
+++ b/document/src/vespa/document/base/documentid.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::DocumentId
* \ingroup base
diff --git a/document/src/vespa/document/base/exceptions.cpp b/document/src/vespa/document/base/exceptions.cpp
index 22c772cd987..eb9b2eff248 100644
--- a/document/src/vespa/document/base/exceptions.cpp
+++ b/document/src/vespa/document/base/exceptions.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "exceptions.h"
#include <vespa/document/datatype/datatype.h>
diff --git a/document/src/vespa/document/base/exceptions.h b/document/src/vespa/document/base/exceptions.h
index f79d4f4da0e..0b7f8364702 100644
--- a/document/src/vespa/document/base/exceptions.h
+++ b/document/src/vespa/document/base/exceptions.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/base/field.cpp b/document/src/vespa/document/base/field.cpp
index 806f1543cc7..5c696d80fe7 100644
--- a/document/src/vespa/document/base/field.cpp
+++ b/document/src/vespa/document/base/field.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "field.h"
#include <vespa/document/fieldvalue/fieldvalue.h>
diff --git a/document/src/vespa/document/base/field.h b/document/src/vespa/document/base/field.h
index ace5123a106..378dc16cda6 100644
--- a/document/src/vespa/document/base/field.h
+++ b/document/src/vespa/document/base/field.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::Field
* \ingroup base
diff --git a/document/src/vespa/document/base/fieldpath.cpp b/document/src/vespa/document/base/fieldpath.cpp
index f8ba5f89727..2bd8866d9fd 100644
--- a/document/src/vespa/document/base/fieldpath.cpp
+++ b/document/src/vespa/document/base/fieldpath.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fieldpath.h"
#include <vespa/document/datatype/arraydatatype.h>
diff --git a/document/src/vespa/document/base/fieldpath.h b/document/src/vespa/document/base/fieldpath.h
index d8b04cb0fbb..fdc3b369348 100644
--- a/document/src/vespa/document/base/fieldpath.h
+++ b/document/src/vespa/document/base/fieldpath.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "field.h"
diff --git a/document/src/vespa/document/base/forcelink.cpp b/document/src/vespa/document/base/forcelink.cpp
index bc0097b68f4..0462f22784c 100644
--- a/document/src/vespa/document/base/forcelink.cpp
+++ b/document/src/vespa/document/base/forcelink.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "forcelink.h"
#include <vespa/document/update/updates.h>
diff --git a/document/src/vespa/document/base/forcelink.h b/document/src/vespa/document/base/forcelink.h
index fbe5f458132..e67320dcb99 100644
--- a/document/src/vespa/document/base/forcelink.h
+++ b/document/src/vespa/document/base/forcelink.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::ForceLink
* \ingroup base
diff --git a/document/src/vespa/document/base/globalid.cpp b/document/src/vespa/document/base/globalid.cpp
index 4f96ac0e659..c9bc59a1557 100644
--- a/document/src/vespa/document/base/globalid.cpp
+++ b/document/src/vespa/document/base/globalid.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/globalid.h>
#include <vespa/vespalib/util/exceptions.h>
diff --git a/document/src/vespa/document/base/globalid.h b/document/src/vespa/document/base/globalid.h
index f84ce206093..c3757de4afd 100644
--- a/document/src/vespa/document/base/globalid.h
+++ b/document/src/vespa/document/base/globalid.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::GlobalId
* \ingroup base
diff --git a/document/src/vespa/document/base/idstring.cpp b/document/src/vespa/document/base/idstring.cpp
index 4762c940939..a364ffd90ce 100644
--- a/document/src/vespa/document/base/idstring.cpp
+++ b/document/src/vespa/document/base/idstring.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "idstring.h"
#include "idstringexception.h"
diff --git a/document/src/vespa/document/base/idstring.h b/document/src/vespa/document/base/idstring.h
index 90f307553e8..30538a5d2d4 100644
--- a/document/src/vespa/document/base/idstring.h
+++ b/document/src/vespa/document/base/idstring.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/base/idstringexception.h b/document/src/vespa/document/base/idstringexception.h
index 0e70d468bcd..b269a07241d 100644
--- a/document/src/vespa/document/base/idstringexception.h
+++ b/document/src/vespa/document/base/idstringexception.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/base/testdocman.cpp b/document/src/vespa/document/base/testdocman.cpp
index 0330a00c36a..74df8e86f9c 100644
--- a/document/src/vespa/document/base/testdocman.cpp
+++ b/document/src/vespa/document/base/testdocman.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "testdocman.h"
#include "exceptions.h"
diff --git a/document/src/vespa/document/base/testdocman.h b/document/src/vespa/document/base/testdocman.h
index 98398d5569b..3926f8b2b11 100644
--- a/document/src/vespa/document/base/testdocman.h
+++ b/document/src/vespa/document/base/testdocman.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::TestDocMan
* \ingroup base
diff --git a/document/src/vespa/document/base/testdocrepo.cpp b/document/src/vespa/document/base/testdocrepo.cpp
index 24625c6f667..e6ed37dce92 100644
--- a/document/src/vespa/document/base/testdocrepo.cpp
+++ b/document/src/vespa/document/base/testdocrepo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "testdocrepo.h"
#include <vespa/document/datatype/documenttype.h>
diff --git a/document/src/vespa/document/base/testdocrepo.h b/document/src/vespa/document/base/testdocrepo.h
index e6d7fc788fb..594057887e3 100644
--- a/document/src/vespa/document/base/testdocrepo.h
+++ b/document/src/vespa/document/base/testdocrepo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/bucket/CMakeLists.txt b/document/src/vespa/document/bucket/CMakeLists.txt
index fbbfe8b8466..6c3a39c2d73 100644
--- a/document/src/vespa/document/bucket/CMakeLists.txt
+++ b/document/src/vespa/document/bucket/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(document_bucket OBJECT
SOURCES
bucket.cpp
diff --git a/document/src/vespa/document/bucket/bucket.cpp b/document/src/vespa/document/bucket/bucket.cpp
index 73610cb5fd7..bc009a0445d 100644
--- a/document/src/vespa/document/bucket/bucket.cpp
+++ b/document/src/vespa/document/bucket/bucket.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucket.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/document/src/vespa/document/bucket/bucket.h b/document/src/vespa/document/bucket/bucket.h
index f189c2951c9..0284856c9c5 100644
--- a/document/src/vespa/document/bucket/bucket.h
+++ b/document/src/vespa/document/bucket/bucket.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/bucket/bucketid.cpp b/document/src/vespa/document/bucket/bucketid.cpp
index e2d56546ca2..f78fdbe89dc 100644
--- a/document/src/vespa/document/bucket/bucketid.cpp
+++ b/document/src/vespa/document/bucket/bucketid.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketid.h"
#include <iomanip>
diff --git a/document/src/vespa/document/bucket/bucketid.h b/document/src/vespa/document/bucket/bucketid.h
index 1168e636a4a..d54f86e4ae7 100644
--- a/document/src/vespa/document/bucket/bucketid.h
+++ b/document/src/vespa/document/bucket/bucketid.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::BucketId
* \ingroup bucket
diff --git a/document/src/vespa/document/bucket/bucketidfactory.cpp b/document/src/vespa/document/bucket/bucketidfactory.cpp
index c624b8900a0..6f31e2cf072 100644
--- a/document/src/vespa/document/bucket/bucketidfactory.cpp
+++ b/document/src/vespa/document/bucket/bucketidfactory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketidfactory.h"
#include "bucketid.h"
diff --git a/document/src/vespa/document/bucket/bucketidfactory.h b/document/src/vespa/document/bucket/bucketidfactory.h
index 24dbe37008d..019bb1673a3 100644
--- a/document/src/vespa/document/bucket/bucketidfactory.h
+++ b/document/src/vespa/document/bucket/bucketidfactory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::BucketIdFactory
* \ingroup bucket
diff --git a/document/src/vespa/document/bucket/bucketidlist.cpp b/document/src/vespa/document/bucket/bucketidlist.cpp
index 61d6d797b09..26f2062e1c4 100644
--- a/document/src/vespa/document/bucket/bucketidlist.cpp
+++ b/document/src/vespa/document/bucket/bucketidlist.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketidlist.h"
diff --git a/document/src/vespa/document/bucket/bucketidlist.h b/document/src/vespa/document/bucket/bucketidlist.h
index 6404da01de7..c21879ff375 100644
--- a/document/src/vespa/document/bucket/bucketidlist.h
+++ b/document/src/vespa/document/bucket/bucketidlist.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/bucket/bucketselector.cpp b/document/src/vespa/document/bucket/bucketselector.cpp
index 7e7f93b9ef4..34f613bef84 100644
--- a/document/src/vespa/document/bucket/bucketselector.cpp
+++ b/document/src/vespa/document/bucket/bucketselector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketselector.h"
#include "bucketidfactory.h"
diff --git a/document/src/vespa/document/bucket/bucketselector.h b/document/src/vespa/document/bucket/bucketselector.h
index 23721ec43a0..6bd37c9a7c5 100644
--- a/document/src/vespa/document/bucket/bucketselector.h
+++ b/document/src/vespa/document/bucket/bucketselector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::BucketSelector
* \ingroup bucket
diff --git a/document/src/vespa/document/bucket/bucketspace.cpp b/document/src/vespa/document/bucket/bucketspace.cpp
index 7c1c816b5ba..0c1aecfeb6e 100644
--- a/document/src/vespa/document/bucket/bucketspace.cpp
+++ b/document/src/vespa/document/bucket/bucketspace.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketspace.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/document/src/vespa/document/bucket/bucketspace.h b/document/src/vespa/document/bucket/bucketspace.h
index ab9080efd78..a6c538f211f 100644
--- a/document/src/vespa/document/bucket/bucketspace.h
+++ b/document/src/vespa/document/bucket/bucketspace.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/bucket/fixed_bucket_spaces.cpp b/document/src/vespa/document/bucket/fixed_bucket_spaces.cpp
index 4737c459bad..efd31532b4e 100644
--- a/document/src/vespa/document/bucket/fixed_bucket_spaces.cpp
+++ b/document/src/vespa/document/bucket/fixed_bucket_spaces.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fixed_bucket_spaces.h"
namespace document {
diff --git a/document/src/vespa/document/bucket/fixed_bucket_spaces.h b/document/src/vespa/document/bucket/fixed_bucket_spaces.h
index c9786306897..f8117696ebc 100644
--- a/document/src/vespa/document/bucket/fixed_bucket_spaces.h
+++ b/document/src/vespa/document/bucket/fixed_bucket_spaces.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bucketspace.h"
diff --git a/document/src/vespa/document/config/CMakeLists.txt b/document/src/vespa/document/config/CMakeLists.txt
index fc711c5e57a..541aa792fd8 100644
--- a/document/src/vespa/document/config/CMakeLists.txt
+++ b/document/src/vespa/document/config/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(document_documentconfig OBJECT
SOURCES
DEPENDS
diff --git a/document/src/vespa/document/config/documentmanager.def b/document/src/vespa/document/config/documentmanager.def
index d53fec43e5d..aec24db1282 100644
--- a/document/src/vespa/document/config/documentmanager.def
+++ b/document/src/vespa/document/config/documentmanager.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=document.config
diff --git a/document/src/vespa/document/config/documenttypes.def b/document/src/vespa/document/config/documenttypes.def
index d02e9fe49f2..6c453cc9814 100644
--- a/document/src/vespa/document/config/documenttypes.def
+++ b/document/src/vespa/document/config/documenttypes.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=document
diff --git a/document/src/vespa/document/datatype/CMakeLists.txt b/document/src/vespa/document/datatype/CMakeLists.txt
index b9277e2ce05..7f3f6268bff 100644
--- a/document/src/vespa/document/datatype/CMakeLists.txt
+++ b/document/src/vespa/document/datatype/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(document_datatypes OBJECT
SOURCES
annotationreferencedatatype.cpp
diff --git a/document/src/vespa/document/datatype/annotationreferencedatatype.cpp b/document/src/vespa/document/datatype/annotationreferencedatatype.cpp
index 758972d3944..2827f1ef04d 100644
--- a/document/src/vespa/document/datatype/annotationreferencedatatype.cpp
+++ b/document/src/vespa/document/datatype/annotationreferencedatatype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "annotationreferencedatatype.h"
#include <vespa/document/fieldvalue/annotationreferencefieldvalue.h>
diff --git a/document/src/vespa/document/datatype/annotationreferencedatatype.h b/document/src/vespa/document/datatype/annotationreferencedatatype.h
index 2184a2873a2..c50367a2dcb 100644
--- a/document/src/vespa/document/datatype/annotationreferencedatatype.h
+++ b/document/src/vespa/document/datatype/annotationreferencedatatype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/datatype/annotationtype.cpp b/document/src/vespa/document/datatype/annotationtype.cpp
index 399e72bbd45..34092c18151 100644
--- a/document/src/vespa/document/datatype/annotationtype.cpp
+++ b/document/src/vespa/document/datatype/annotationtype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "annotationtype.h"
#include "numericdatatype.h"
diff --git a/document/src/vespa/document/datatype/annotationtype.h b/document/src/vespa/document/datatype/annotationtype.h
index 00d48d6e384..6a2301ca06b 100644
--- a/document/src/vespa/document/datatype/annotationtype.h
+++ b/document/src/vespa/document/datatype/annotationtype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/datatype/arraydatatype.cpp b/document/src/vespa/document/datatype/arraydatatype.cpp
index 8eb6a6ac875..af87e488d19 100644
--- a/document/src/vespa/document/datatype/arraydatatype.cpp
+++ b/document/src/vespa/document/datatype/arraydatatype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/datatype/arraydatatype.h>
#include <vespa/document/fieldvalue/arrayfieldvalue.h>
diff --git a/document/src/vespa/document/datatype/arraydatatype.h b/document/src/vespa/document/datatype/arraydatatype.h
index 275878e5dc2..b69bdceea02 100644
--- a/document/src/vespa/document/datatype/arraydatatype.h
+++ b/document/src/vespa/document/datatype/arraydatatype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::ArrayDataType
* \ingroup datatype
diff --git a/document/src/vespa/document/datatype/collectiondatatype.cpp b/document/src/vespa/document/datatype/collectiondatatype.cpp
index 3678989adfa..d86be5d35c1 100644
--- a/document/src/vespa/document/datatype/collectiondatatype.cpp
+++ b/document/src/vespa/document/datatype/collectiondatatype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "collectiondatatype.h"
#include <vespa/document/util/stringutil.h>
diff --git a/document/src/vespa/document/datatype/collectiondatatype.h b/document/src/vespa/document/datatype/collectiondatatype.h
index 10cf636e70f..f294f8da375 100644
--- a/document/src/vespa/document/datatype/collectiondatatype.h
+++ b/document/src/vespa/document/datatype/collectiondatatype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::CollectionDataType
* \ingroup datatype
diff --git a/document/src/vespa/document/datatype/datatype.cpp b/document/src/vespa/document/datatype/datatype.cpp
index b7b511d459e..874306f08ab 100644
--- a/document/src/vespa/document/datatype/datatype.cpp
+++ b/document/src/vespa/document/datatype/datatype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/datatype/datatype.h>
#include <vespa/document/datatype/numericdatatype.h>
diff --git a/document/src/vespa/document/datatype/datatype.h b/document/src/vespa/document/datatype/datatype.h
index 723e7c69ed6..8d88ff11982 100644
--- a/document/src/vespa/document/datatype/datatype.h
+++ b/document/src/vespa/document/datatype/datatype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::DataType
* \ingroup datatype
diff --git a/document/src/vespa/document/datatype/datatypes.h b/document/src/vespa/document/datatype/datatypes.h
index 2353ac1ceaa..3960b215944 100644
--- a/document/src/vespa/document/datatype/datatypes.h
+++ b/document/src/vespa/document/datatype/datatypes.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/datatype/documenttype.cpp b/document/src/vespa/document/datatype/documenttype.cpp
index c2739dc1303..81389d25bd7 100644
--- a/document/src/vespa/document/datatype/documenttype.cpp
+++ b/document/src/vespa/document/datatype/documenttype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/datatype/documenttype.h>
#include <vespa/document/fieldvalue/document.h>
diff --git a/document/src/vespa/document/datatype/documenttype.h b/document/src/vespa/document/datatype/documenttype.h
index 5aff0a91f75..28a0f0c9d55 100644
--- a/document/src/vespa/document/datatype/documenttype.h
+++ b/document/src/vespa/document/datatype/documenttype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::DocumentType
* \ingroup datatype
diff --git a/document/src/vespa/document/datatype/mapdatatype.cpp b/document/src/vespa/document/datatype/mapdatatype.cpp
index 01a0f44c457..891f1b60f49 100644
--- a/document/src/vespa/document/datatype/mapdatatype.cpp
+++ b/document/src/vespa/document/datatype/mapdatatype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mapdatatype.h"
#include "primitivedatatype.h"
diff --git a/document/src/vespa/document/datatype/mapdatatype.h b/document/src/vespa/document/datatype/mapdatatype.h
index a7f2cef8b68..457461b32fe 100644
--- a/document/src/vespa/document/datatype/mapdatatype.h
+++ b/document/src/vespa/document/datatype/mapdatatype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::MapDataType
* \ingroup datatype
diff --git a/document/src/vespa/document/datatype/numericdatatype.cpp b/document/src/vespa/document/datatype/numericdatatype.cpp
index 17f918a8eee..af1c5b9341f 100644
--- a/document/src/vespa/document/datatype/numericdatatype.cpp
+++ b/document/src/vespa/document/datatype/numericdatatype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "numericdatatype.h"
#include <ostream>
diff --git a/document/src/vespa/document/datatype/numericdatatype.h b/document/src/vespa/document/datatype/numericdatatype.h
index 2aef5741020..096582568e9 100644
--- a/document/src/vespa/document/datatype/numericdatatype.h
+++ b/document/src/vespa/document/datatype/numericdatatype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::NumericDataType
* \ingroup datatype
diff --git a/document/src/vespa/document/datatype/positiondatatype.cpp b/document/src/vespa/document/datatype/positiondatatype.cpp
index 69e63d2ff72..e5242f01247 100644
--- a/document/src/vespa/document/datatype/positiondatatype.cpp
+++ b/document/src/vespa/document/datatype/positiondatatype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "positiondatatype.h"
diff --git a/document/src/vespa/document/datatype/positiondatatype.h b/document/src/vespa/document/datatype/positiondatatype.h
index 45ac35b1388..f1560a7921c 100644
--- a/document/src/vespa/document/datatype/positiondatatype.h
+++ b/document/src/vespa/document/datatype/positiondatatype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/datatype/structdatatype.h>
diff --git a/document/src/vespa/document/datatype/primitivedatatype.cpp b/document/src/vespa/document/datatype/primitivedatatype.cpp
index e831cd4e8f4..d45bc4731f1 100644
--- a/document/src/vespa/document/datatype/primitivedatatype.cpp
+++ b/document/src/vespa/document/datatype/primitivedatatype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "primitivedatatype.h"
#include <vespa/document/fieldvalue/fieldvalues.h>
diff --git a/document/src/vespa/document/datatype/primitivedatatype.h b/document/src/vespa/document/datatype/primitivedatatype.h
index 95e817f5692..f076e595d00 100644
--- a/document/src/vespa/document/datatype/primitivedatatype.h
+++ b/document/src/vespa/document/datatype/primitivedatatype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::PrimitiveDataType
* \ingroup datatype
diff --git a/document/src/vespa/document/datatype/referencedatatype.cpp b/document/src/vespa/document/datatype/referencedatatype.cpp
index 6caa6fdf7a9..b36c9fc165a 100644
--- a/document/src/vespa/document/datatype/referencedatatype.cpp
+++ b/document/src/vespa/document/datatype/referencedatatype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "referencedatatype.h"
#include <vespa/document/fieldvalue/referencefieldvalue.h>
diff --git a/document/src/vespa/document/datatype/referencedatatype.h b/document/src/vespa/document/datatype/referencedatatype.h
index 8f3d2a366cc..7a79efaf142 100644
--- a/document/src/vespa/document/datatype/referencedatatype.h
+++ b/document/src/vespa/document/datatype/referencedatatype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/datatype/structdatatype.cpp b/document/src/vespa/document/datatype/structdatatype.cpp
index c0c63ddb37f..bb927e6e872 100644
--- a/document/src/vespa/document/datatype/structdatatype.cpp
+++ b/document/src/vespa/document/datatype/structdatatype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "structdatatype.h"
#include <vespa/document/base/exceptions.h>
diff --git a/document/src/vespa/document/datatype/structdatatype.h b/document/src/vespa/document/datatype/structdatatype.h
index 42003d3b466..624ce3011ff 100644
--- a/document/src/vespa/document/datatype/structdatatype.h
+++ b/document/src/vespa/document/datatype/structdatatype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::StructDataType
* \ingroup datatype
diff --git a/document/src/vespa/document/datatype/structureddatatype.cpp b/document/src/vespa/document/datatype/structureddatatype.cpp
index 59584ff3b01..4e2ab5bba45 100644
--- a/document/src/vespa/document/datatype/structureddatatype.cpp
+++ b/document/src/vespa/document/datatype/structureddatatype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "structureddatatype.h"
#include <vespa/document/base/fieldpath.h>
diff --git a/document/src/vespa/document/datatype/structureddatatype.h b/document/src/vespa/document/datatype/structureddatatype.h
index 5bfcbcd19f0..2224881b7e6 100644
--- a/document/src/vespa/document/datatype/structureddatatype.h
+++ b/document/src/vespa/document/datatype/structureddatatype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::StructuredDataType
* \ingroup datatype
diff --git a/document/src/vespa/document/datatype/urldatatype.cpp b/document/src/vespa/document/datatype/urldatatype.cpp
index 4db16f4705d..6fd65666237 100644
--- a/document/src/vespa/document/datatype/urldatatype.cpp
+++ b/document/src/vespa/document/datatype/urldatatype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "urldatatype.h"
diff --git a/document/src/vespa/document/datatype/urldatatype.h b/document/src/vespa/document/datatype/urldatatype.h
index 19ae6dde2e1..5efe5fbb2c0 100644
--- a/document/src/vespa/document/datatype/urldatatype.h
+++ b/document/src/vespa/document/datatype/urldatatype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/datatype/structdatatype.h>
diff --git a/document/src/vespa/document/datatype/weightedsetdatatype.cpp b/document/src/vespa/document/datatype/weightedsetdatatype.cpp
index 02e60cce88b..82cca2dfac4 100644
--- a/document/src/vespa/document/datatype/weightedsetdatatype.cpp
+++ b/document/src/vespa/document/datatype/weightedsetdatatype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "weightedsetdatatype.h"
#include "mapdatatype.h"
diff --git a/document/src/vespa/document/datatype/weightedsetdatatype.h b/document/src/vespa/document/datatype/weightedsetdatatype.h
index 15d979a02bb..5ac47125eab 100644
--- a/document/src/vespa/document/datatype/weightedsetdatatype.h
+++ b/document/src/vespa/document/datatype/weightedsetdatatype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::WeightedSetDataType
* \ingroup datatype
diff --git a/document/src/vespa/document/document.h b/document/src/vespa/document/document.h
index 4767ee1d2d7..9c9bd0473ff 100644
--- a/document/src/vespa/document/document.h
+++ b/document/src/vespa/document/document.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
*
* \file document.h
diff --git a/document/src/vespa/document/fieldset/CMakeLists.txt b/document/src/vespa/document/fieldset/CMakeLists.txt
index 7604c814019..1e9f662f249 100644
--- a/document/src/vespa/document/fieldset/CMakeLists.txt
+++ b/document/src/vespa/document/fieldset/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(document_fieldset OBJECT
SOURCES
fieldsetrepo.cpp
diff --git a/document/src/vespa/document/fieldset/fieldset.h b/document/src/vespa/document/fieldset/fieldset.h
index 3d74659ebf5..fd604a19e08 100644
--- a/document/src/vespa/document/fieldset/fieldset.h
+++ b/document/src/vespa/document/fieldset/fieldset.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/document/src/vespa/document/fieldset/fieldsetrepo.cpp b/document/src/vespa/document/fieldset/fieldsetrepo.cpp
index f16387810ce..97b7fa09813 100644
--- a/document/src/vespa/document/fieldset/fieldsetrepo.cpp
+++ b/document/src/vespa/document/fieldset/fieldsetrepo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fieldsetrepo.h"
#include <vespa/vespalib/text/stringtokenizer.h>
diff --git a/document/src/vespa/document/fieldset/fieldsetrepo.h b/document/src/vespa/document/fieldset/fieldsetrepo.h
index d213230848a..6b641b963af 100644
--- a/document/src/vespa/document/fieldset/fieldsetrepo.h
+++ b/document/src/vespa/document/fieldset/fieldsetrepo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/fieldset/fieldset.h>
diff --git a/document/src/vespa/document/fieldset/fieldsets.cpp b/document/src/vespa/document/fieldset/fieldsets.cpp
index 317c1743bb5..403e220466c 100644
--- a/document/src/vespa/document/fieldset/fieldsets.cpp
+++ b/document/src/vespa/document/fieldset/fieldsets.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fieldsets.h"
#include <vespa/document/fieldvalue/document.h>
diff --git a/document/src/vespa/document/fieldset/fieldsets.h b/document/src/vespa/document/fieldset/fieldsets.h
index e71a96e5a7e..59cda189018 100644
--- a/document/src/vespa/document/fieldset/fieldsets.h
+++ b/document/src/vespa/document/fieldset/fieldsets.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/base/field.h>
diff --git a/document/src/vespa/document/fieldvalue/CMakeLists.txt b/document/src/vespa/document/fieldvalue/CMakeLists.txt
index dd92217ef27..b901a6fa38d 100644
--- a/document/src/vespa/document/fieldvalue/CMakeLists.txt
+++ b/document/src/vespa/document/fieldvalue/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(document_fieldvalues OBJECT
SOURCES
annotationreferencefieldvalue.cpp
diff --git a/document/src/vespa/document/fieldvalue/annotationreferencefieldvalue.cpp b/document/src/vespa/document/fieldvalue/annotationreferencefieldvalue.cpp
index 4a345159de9..e35d26d0575 100644
--- a/document/src/vespa/document/fieldvalue/annotationreferencefieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/annotationreferencefieldvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "annotationreferencefieldvalue.h"
#include <vespa/vespalib/util/xmlstream.h>
diff --git a/document/src/vespa/document/fieldvalue/annotationreferencefieldvalue.h b/document/src/vespa/document/fieldvalue/annotationreferencefieldvalue.h
index e1023296766..6fc85bf384f 100644
--- a/document/src/vespa/document/fieldvalue/annotationreferencefieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/annotationreferencefieldvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/fieldvalue/arrayfieldvalue.cpp b/document/src/vespa/document/fieldvalue/arrayfieldvalue.cpp
index 2f7f2208cbe..0a80ef8c59b 100644
--- a/document/src/vespa/document/fieldvalue/arrayfieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/arrayfieldvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "arrayfieldvalue.h"
#include "intfieldvalue.h"
#include "stringfieldvalue.h"
diff --git a/document/src/vespa/document/fieldvalue/arrayfieldvalue.h b/document/src/vespa/document/fieldvalue/arrayfieldvalue.h
index 4d36d4f0176..b37049f207a 100644
--- a/document/src/vespa/document/fieldvalue/arrayfieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/arrayfieldvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::ArrayFieldValue
* \ingroup fieldvalue
diff --git a/document/src/vespa/document/fieldvalue/boolfieldvalue.cpp b/document/src/vespa/document/fieldvalue/boolfieldvalue.cpp
index e7cab34d3ea..c542936825d 100644
--- a/document/src/vespa/document/fieldvalue/boolfieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/boolfieldvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "boolfieldvalue.h"
#include <vespa/document/datatype/datatype.h>
diff --git a/document/src/vespa/document/fieldvalue/boolfieldvalue.h b/document/src/vespa/document/fieldvalue/boolfieldvalue.h
index e453359214d..d03ded5c9f1 100644
--- a/document/src/vespa/document/fieldvalue/boolfieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/boolfieldvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/fieldvalue/bytefieldvalue.cpp b/document/src/vespa/document/fieldvalue/bytefieldvalue.cpp
index b4641e1185b..5d514352302 100644
--- a/document/src/vespa/document/fieldvalue/bytefieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/bytefieldvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bytefieldvalue.h"
#include "numericfieldvalue.hpp"
diff --git a/document/src/vespa/document/fieldvalue/bytefieldvalue.h b/document/src/vespa/document/fieldvalue/bytefieldvalue.h
index 784c400751e..b3296adbf1f 100644
--- a/document/src/vespa/document/fieldvalue/bytefieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/bytefieldvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::ByteFieldValue
* \ingroup fieldvalue
diff --git a/document/src/vespa/document/fieldvalue/collectionfieldvalue.cpp b/document/src/vespa/document/fieldvalue/collectionfieldvalue.cpp
index d7e5568c1d4..a83e8c226b9 100644
--- a/document/src/vespa/document/fieldvalue/collectionfieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/collectionfieldvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/fieldvalue/collectionfieldvalue.h>
#include <vespa/vespalib/util/exceptions.h>
diff --git a/document/src/vespa/document/fieldvalue/collectionfieldvalue.h b/document/src/vespa/document/fieldvalue/collectionfieldvalue.h
index 050708475dd..fcdd7d72ebd 100644
--- a/document/src/vespa/document/fieldvalue/collectionfieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/collectionfieldvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::CollectionFieldValue
* \ingroup fieldvalue
diff --git a/document/src/vespa/document/fieldvalue/document.cpp b/document/src/vespa/document/fieldvalue/document.cpp
index fb79b516b90..15198013c5f 100644
--- a/document/src/vespa/document/fieldvalue/document.cpp
+++ b/document/src/vespa/document/fieldvalue/document.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document.h"
#include "structuredcache.h"
diff --git a/document/src/vespa/document/fieldvalue/document.h b/document/src/vespa/document/fieldvalue/document.h
index cb27ca5f338..da6bcca777c 100644
--- a/document/src/vespa/document/fieldvalue/document.h
+++ b/document/src/vespa/document/fieldvalue/document.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::Document
* \ingroup fieldvalue
diff --git a/document/src/vespa/document/fieldvalue/doublefieldvalue.cpp b/document/src/vespa/document/fieldvalue/doublefieldvalue.cpp
index 69a68adc7a2..943255e5ffc 100644
--- a/document/src/vespa/document/fieldvalue/doublefieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/doublefieldvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "doublefieldvalue.h"
#include "numericfieldvalue.hpp"
diff --git a/document/src/vespa/document/fieldvalue/doublefieldvalue.h b/document/src/vespa/document/fieldvalue/doublefieldvalue.h
index bbeed9f9870..a8dcca7b40d 100644
--- a/document/src/vespa/document/fieldvalue/doublefieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/doublefieldvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::DoubleFieldValue
* \ingroup fieldvalue
diff --git a/document/src/vespa/document/fieldvalue/fieldvalue.cpp b/document/src/vespa/document/fieldvalue/fieldvalue.cpp
index ad93d1f30f3..caaf9548ba0 100644
--- a/document/src/vespa/document/fieldvalue/fieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/fieldvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fieldvalue.h"
#include "arrayfieldvalue.h"
diff --git a/document/src/vespa/document/fieldvalue/fieldvalue.h b/document/src/vespa/document/fieldvalue/fieldvalue.h
index 66d5eaa8c58..15828c639ec 100644
--- a/document/src/vespa/document/fieldvalue/fieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/fieldvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::FieldValue
* \ingroup fieldvalue
diff --git a/document/src/vespa/document/fieldvalue/fieldvalues.h b/document/src/vespa/document/fieldvalue/fieldvalues.h
index cc665cee95c..81bab41ed7d 100644
--- a/document/src/vespa/document/fieldvalue/fieldvalues.h
+++ b/document/src/vespa/document/fieldvalue/fieldvalues.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/fieldvalue/fieldvaluevisitor.h b/document/src/vespa/document/fieldvalue/fieldvaluevisitor.h
index 778b1c77023..76073032700 100644
--- a/document/src/vespa/document/fieldvalue/fieldvaluevisitor.h
+++ b/document/src/vespa/document/fieldvalue/fieldvaluevisitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/fieldvalue/fieldvaluewriter.h b/document/src/vespa/document/fieldvalue/fieldvaluewriter.h
index 3327548a414..b204183a565 100644
--- a/document/src/vespa/document/fieldvalue/fieldvaluewriter.h
+++ b/document/src/vespa/document/fieldvalue/fieldvaluewriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/fieldvalue/floatfieldvalue.cpp b/document/src/vespa/document/fieldvalue/floatfieldvalue.cpp
index 9f45aa046ec..e44f36295c4 100644
--- a/document/src/vespa/document/fieldvalue/floatfieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/floatfieldvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "floatfieldvalue.h"
#include "numericfieldvalue.hpp"
diff --git a/document/src/vespa/document/fieldvalue/floatfieldvalue.h b/document/src/vespa/document/fieldvalue/floatfieldvalue.h
index d515297bd26..ea3d5971673 100644
--- a/document/src/vespa/document/fieldvalue/floatfieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/floatfieldvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::FloatFieldValue
* \ingroup fieldvalue
diff --git a/document/src/vespa/document/fieldvalue/intfieldvalue.cpp b/document/src/vespa/document/fieldvalue/intfieldvalue.cpp
index 0446b7069c0..06edafcf374 100644
--- a/document/src/vespa/document/fieldvalue/intfieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/intfieldvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "intfieldvalue.h"
#include "numericfieldvalue.hpp"
diff --git a/document/src/vespa/document/fieldvalue/intfieldvalue.h b/document/src/vespa/document/fieldvalue/intfieldvalue.h
index 969c4b91cd8..e36c271f336 100644
--- a/document/src/vespa/document/fieldvalue/intfieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/intfieldvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::IntFieldValue
* \ingroup fieldvalue
diff --git a/document/src/vespa/document/fieldvalue/iteratorhandler.cpp b/document/src/vespa/document/fieldvalue/iteratorhandler.cpp
index 8764e7908cd..7af1eec52b2 100644
--- a/document/src/vespa/document/fieldvalue/iteratorhandler.cpp
+++ b/document/src/vespa/document/fieldvalue/iteratorhandler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "iteratorhandler.h"
diff --git a/document/src/vespa/document/fieldvalue/iteratorhandler.h b/document/src/vespa/document/fieldvalue/iteratorhandler.h
index cf71504e7a1..bef013e1845 100644
--- a/document/src/vespa/document/fieldvalue/iteratorhandler.h
+++ b/document/src/vespa/document/fieldvalue/iteratorhandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/fieldvalue/literalfieldvalue.cpp b/document/src/vespa/document/fieldvalue/literalfieldvalue.cpp
index 9aacc71dfb8..9b648400533 100644
--- a/document/src/vespa/document/fieldvalue/literalfieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/literalfieldvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "literalfieldvalue.h"
#include "literalfieldvalue.hpp"
diff --git a/document/src/vespa/document/fieldvalue/literalfieldvalue.h b/document/src/vespa/document/fieldvalue/literalfieldvalue.h
index bc38040c8f7..e84f0c529c7 100644
--- a/document/src/vespa/document/fieldvalue/literalfieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/literalfieldvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::LiteralFieldValue
* \ingroup fieldvalue
diff --git a/document/src/vespa/document/fieldvalue/literalfieldvalue.hpp b/document/src/vespa/document/fieldvalue/literalfieldvalue.hpp
index 2b96f0e611b..c5b30bc5ff1 100644
--- a/document/src/vespa/document/fieldvalue/literalfieldvalue.hpp
+++ b/document/src/vespa/document/fieldvalue/literalfieldvalue.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "literalfieldvalue.h"
diff --git a/document/src/vespa/document/fieldvalue/longfieldvalue.cpp b/document/src/vespa/document/fieldvalue/longfieldvalue.cpp
index 6fb37c0eb9b..f2f6cdb52b5 100644
--- a/document/src/vespa/document/fieldvalue/longfieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/longfieldvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "longfieldvalue.h"
#include "numericfieldvalue.hpp"
diff --git a/document/src/vespa/document/fieldvalue/longfieldvalue.h b/document/src/vespa/document/fieldvalue/longfieldvalue.h
index 560544db6b5..a4afb1c703c 100644
--- a/document/src/vespa/document/fieldvalue/longfieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/longfieldvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::LongFieldValue
* \ingroup fieldvalue
diff --git a/document/src/vespa/document/fieldvalue/mapfieldvalue.cpp b/document/src/vespa/document/fieldvalue/mapfieldvalue.cpp
index b5464401df2..8db3a15968b 100644
--- a/document/src/vespa/document/fieldvalue/mapfieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/mapfieldvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mapfieldvalue.h"
#include "weightedsetfieldvalue.h"
diff --git a/document/src/vespa/document/fieldvalue/mapfieldvalue.h b/document/src/vespa/document/fieldvalue/mapfieldvalue.h
index bed4275d61f..5e8de6f3ed8 100644
--- a/document/src/vespa/document/fieldvalue/mapfieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/mapfieldvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::MapFieldValue
* \ingroup fieldvalue
diff --git a/document/src/vespa/document/fieldvalue/modificationstatus.h b/document/src/vespa/document/fieldvalue/modificationstatus.h
index b5fa2896264..f9cd3787423 100644
--- a/document/src/vespa/document/fieldvalue/modificationstatus.h
+++ b/document/src/vespa/document/fieldvalue/modificationstatus.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/fieldvalue/numericfieldvalue.cpp b/document/src/vespa/document/fieldvalue/numericfieldvalue.cpp
index 76e18ceddf9..7d02054f668 100644
--- a/document/src/vespa/document/fieldvalue/numericfieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/numericfieldvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "numericfieldvalue.h"
#include "numericfieldvalue.hpp"
diff --git a/document/src/vespa/document/fieldvalue/numericfieldvalue.h b/document/src/vespa/document/fieldvalue/numericfieldvalue.h
index a211471c58b..c094cf0689c 100644
--- a/document/src/vespa/document/fieldvalue/numericfieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/numericfieldvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::NumericFieldValue
* \ingroup fieldvalue
diff --git a/document/src/vespa/document/fieldvalue/numericfieldvalue.hpp b/document/src/vespa/document/fieldvalue/numericfieldvalue.hpp
index 91873f021d1..c4f1fdf13a1 100644
--- a/document/src/vespa/document/fieldvalue/numericfieldvalue.hpp
+++ b/document/src/vespa/document/fieldvalue/numericfieldvalue.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/fieldvalue/predicatefieldvalue.cpp b/document/src/vespa/document/fieldvalue/predicatefieldvalue.cpp
index 74660e17568..3a62eb5060c 100644
--- a/document/src/vespa/document/fieldvalue/predicatefieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/predicatefieldvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "predicatefieldvalue.h"
#include <vespa/document/datatype/datatype.h>
diff --git a/document/src/vespa/document/fieldvalue/predicatefieldvalue.h b/document/src/vespa/document/fieldvalue/predicatefieldvalue.h
index 7154affc9b0..5f7db35f953 100644
--- a/document/src/vespa/document/fieldvalue/predicatefieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/predicatefieldvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/fieldvalue/rawfieldvalue.cpp b/document/src/vespa/document/fieldvalue/rawfieldvalue.cpp
index 5d4abe658c1..95f066b86ed 100644
--- a/document/src/vespa/document/fieldvalue/rawfieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/rawfieldvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rawfieldvalue.h"
#include "literalfieldvalue.hpp"
diff --git a/document/src/vespa/document/fieldvalue/rawfieldvalue.h b/document/src/vespa/document/fieldvalue/rawfieldvalue.h
index cfc2582373e..98110816a9d 100644
--- a/document/src/vespa/document/fieldvalue/rawfieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/rawfieldvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::RawFieldValue
* \ingroup fieldvalue
diff --git a/document/src/vespa/document/fieldvalue/referencefieldvalue.cpp b/document/src/vespa/document/fieldvalue/referencefieldvalue.cpp
index 273038b1cf3..83890c1acfc 100644
--- a/document/src/vespa/document/fieldvalue/referencefieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/referencefieldvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "referencefieldvalue.h"
#include <vespa/vespalib/util/exceptions.h>
diff --git a/document/src/vespa/document/fieldvalue/referencefieldvalue.h b/document/src/vespa/document/fieldvalue/referencefieldvalue.h
index 0d25e5cb392..d8160353b5f 100644
--- a/document/src/vespa/document/fieldvalue/referencefieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/referencefieldvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/fieldvalue/serializablearray.cpp b/document/src/vespa/document/fieldvalue/serializablearray.cpp
index 84fe7ba34a6..afb89ba0acf 100644
--- a/document/src/vespa/document/fieldvalue/serializablearray.cpp
+++ b/document/src/vespa/document/fieldvalue/serializablearray.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "serializablearray.h"
#include <vespa/document/util/serializableexceptions.h>
#include <vespa/document/util/bytebuffer.h>
diff --git a/document/src/vespa/document/fieldvalue/serializablearray.h b/document/src/vespa/document/fieldvalue/serializablearray.h
index 11186593e76..126f7072d6a 100644
--- a/document/src/vespa/document/fieldvalue/serializablearray.h
+++ b/document/src/vespa/document/fieldvalue/serializablearray.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::SerializableArray
* \brief key/value array that can be serialized and deserialized efficiently.
diff --git a/document/src/vespa/document/fieldvalue/shortfieldvalue.cpp b/document/src/vespa/document/fieldvalue/shortfieldvalue.cpp
index b0979903752..9f0334a12ae 100644
--- a/document/src/vespa/document/fieldvalue/shortfieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/shortfieldvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "shortfieldvalue.h"
#include "numericfieldvalue.hpp"
diff --git a/document/src/vespa/document/fieldvalue/shortfieldvalue.h b/document/src/vespa/document/fieldvalue/shortfieldvalue.h
index 3d819f1f21d..f6d485451ad 100644
--- a/document/src/vespa/document/fieldvalue/shortfieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/shortfieldvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::ShortFieldValue
* \ingroup fieldvalue
diff --git a/document/src/vespa/document/fieldvalue/stringfieldvalue.cpp b/document/src/vespa/document/fieldvalue/stringfieldvalue.cpp
index 1d38653dba2..0a46a11bddf 100644
--- a/document/src/vespa/document/fieldvalue/stringfieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/stringfieldvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "stringfieldvalue.h"
#include "literalfieldvalue.hpp"
diff --git a/document/src/vespa/document/fieldvalue/stringfieldvalue.h b/document/src/vespa/document/fieldvalue/stringfieldvalue.h
index 015fcd5ba22..15aeeccd0de 100644
--- a/document/src/vespa/document/fieldvalue/stringfieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/stringfieldvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::StringFieldValue
* \ingroup fieldvalue
diff --git a/document/src/vespa/document/fieldvalue/structfieldvalue.cpp b/document/src/vespa/document/fieldvalue/structfieldvalue.cpp
index bc2dd2a059a..fc87fbe3a59 100644
--- a/document/src/vespa/document/fieldvalue/structfieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/structfieldvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "structfieldvalue.h"
#include "fieldvaluewriter.h"
diff --git a/document/src/vespa/document/fieldvalue/structfieldvalue.h b/document/src/vespa/document/fieldvalue/structfieldvalue.h
index fc930951df3..cd8bd0fea0f 100644
--- a/document/src/vespa/document/fieldvalue/structfieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/structfieldvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/fieldvalue/structuredcache.h b/document/src/vespa/document/fieldvalue/structuredcache.h
index 3d4911477fd..8653b573715 100644
--- a/document/src/vespa/document/fieldvalue/structuredcache.h
+++ b/document/src/vespa/document/fieldvalue/structuredcache.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "fieldvalue.h"
diff --git a/document/src/vespa/document/fieldvalue/structuredfieldvalue.cpp b/document/src/vespa/document/fieldvalue/structuredfieldvalue.cpp
index be535a416a1..becdfdabb5f 100644
--- a/document/src/vespa/document/fieldvalue/structuredfieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/structuredfieldvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "structuredfieldvalue.hpp"
#include "iteratorhandler.h"
@@ -118,7 +118,7 @@ StructuredFieldValue::onIterateNested(PathRange nested, IteratorHandler & handle
const Field & field = fpe.getFieldRef();
FieldValue::UP value = getValue(field, FieldValue::UP());
LOG(spam, "fieldRef = %s", field.toString().c_str());
- LOG(spam, "fieldValueToSet = %s", value->toString().c_str());
+ LOG(spam, "fieldValueToSet = %s", value ? value->toString().c_str() : "<null>");
ModificationStatus status = ModificationStatus::NOT_MODIFIED;
if (value) {
status = value->iterateNested(nested.next(), handler);
diff --git a/document/src/vespa/document/fieldvalue/structuredfieldvalue.h b/document/src/vespa/document/fieldvalue/structuredfieldvalue.h
index 54036566a26..b1b88323a3b 100644
--- a/document/src/vespa/document/fieldvalue/structuredfieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/structuredfieldvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::StructuredFieldValue
* \ingroup fieldvalue
diff --git a/document/src/vespa/document/fieldvalue/structuredfieldvalue.hpp b/document/src/vespa/document/fieldvalue/structuredfieldvalue.hpp
index 41b285728b4..df02506c076 100644
--- a/document/src/vespa/document/fieldvalue/structuredfieldvalue.hpp
+++ b/document/src/vespa/document/fieldvalue/structuredfieldvalue.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/fieldvalue/tensorfieldvalue.cpp b/document/src/vespa/document/fieldvalue/tensorfieldvalue.cpp
index cc3aed67387..6f208ed6a89 100644
--- a/document/src/vespa/document/fieldvalue/tensorfieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/tensorfieldvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tensorfieldvalue.h"
#include <vespa/document/base/exceptions.h>
diff --git a/document/src/vespa/document/fieldvalue/tensorfieldvalue.h b/document/src/vespa/document/fieldvalue/tensorfieldvalue.h
index e6af697e696..6cb2ff08c2e 100644
--- a/document/src/vespa/document/fieldvalue/tensorfieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/tensorfieldvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/fieldvalue/variablemap.cpp b/document/src/vespa/document/fieldvalue/variablemap.cpp
index 404bbe6f966..481e5288a24 100644
--- a/document/src/vespa/document/fieldvalue/variablemap.cpp
+++ b/document/src/vespa/document/fieldvalue/variablemap.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "variablemap.h"
#include "fieldvalue.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/document/src/vespa/document/fieldvalue/variablemap.h b/document/src/vespa/document/fieldvalue/variablemap.h
index 9465f6d7c18..70dba1551ef 100644
--- a/document/src/vespa/document/fieldvalue/variablemap.h
+++ b/document/src/vespa/document/fieldvalue/variablemap.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/fieldvalue/weightedsetfieldvalue.cpp b/document/src/vespa/document/fieldvalue/weightedsetfieldvalue.cpp
index d47f1a4ae76..7893cedb2fe 100644
--- a/document/src/vespa/document/fieldvalue/weightedsetfieldvalue.cpp
+++ b/document/src/vespa/document/fieldvalue/weightedsetfieldvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "weightedsetfieldvalue.h"
#include <vespa/document/datatype/weightedsetdatatype.h>
diff --git a/document/src/vespa/document/fieldvalue/weightedsetfieldvalue.h b/document/src/vespa/document/fieldvalue/weightedsetfieldvalue.h
index 7865cd7e9fd..b88c44085ba 100644
--- a/document/src/vespa/document/fieldvalue/weightedsetfieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/weightedsetfieldvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::WeightedSetFieldValue
* \ingroup fieldvalue
diff --git a/document/src/vespa/document/predicate/CMakeLists.txt b/document/src/vespa/document/predicate/CMakeLists.txt
index d6370e023ae..dac7b123942 100644
--- a/document/src/vespa/document/predicate/CMakeLists.txt
+++ b/document/src/vespa/document/predicate/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(document_predicate OBJECT
SOURCES
predicate.cpp
diff --git a/document/src/vespa/document/predicate/predicate.cpp b/document/src/vespa/document/predicate/predicate.cpp
index df4128246a9..2c8cc0c53a2 100644
--- a/document/src/vespa/document/predicate/predicate.cpp
+++ b/document/src/vespa/document/predicate/predicate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "predicate.h"
#include <vespa/vespalib/data/slime/slime.h>
@@ -21,15 +21,11 @@ const string Predicate::SET("feature_set");
const string Predicate::RANGE_MIN("range_min");
const string Predicate::RANGE_MAX("range_max");
const string Predicate::CHILDREN("children");
-const string Predicate::PARTITIONS("partitions");
-const string Predicate::EDGE_PARTITIONS("edge_partitions");
const string Predicate::HASHED_PARTITIONS("hashed_partitions");
const string Predicate::HASHED_EDGE_PARTITIONS("hashed_edge_partitions");
const string Predicate::HASH("hash");
const string Predicate::PAYLOAD("payload");
-const string Predicate::LABEL("label");
const string Predicate::VALUE("value");
-const string Predicate::LOWER_BOUND("lower_bound");
const string Predicate::UPPER_BOUND("upper_bound");
namespace {
diff --git a/document/src/vespa/document/predicate/predicate.h b/document/src/vespa/document/predicate/predicate.h
index 4c6351f5e4c..6972ecdc898 100644
--- a/document/src/vespa/document/predicate/predicate.h
+++ b/document/src/vespa/document/predicate/predicate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -20,15 +20,11 @@ struct Predicate {
static const std::string RANGE_MIN;
static const std::string RANGE_MAX;
static const std::string CHILDREN;
- static const std::string PARTITIONS;
- static const std::string EDGE_PARTITIONS;
static const std::string HASHED_PARTITIONS;
static const std::string HASHED_EDGE_PARTITIONS;
static const std::string HASH;
static const std::string PAYLOAD;
- static const std::string LABEL;
static const std::string VALUE;
- static const std::string LOWER_BOUND;
static const std::string UPPER_BOUND;
static const int TYPE_CONJUNCTION = 1;
diff --git a/document/src/vespa/document/predicate/predicate_builder.cpp b/document/src/vespa/document/predicate/predicate_builder.cpp
index 0e2e5ff9f8d..c46a1ee018c 100644
--- a/document/src/vespa/document/predicate/predicate_builder.cpp
+++ b/document/src/vespa/document/predicate/predicate_builder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "predicate.h"
#include "predicate_builder.h"
diff --git a/document/src/vespa/document/predicate/predicate_builder.h b/document/src/vespa/document/predicate/predicate_builder.h
index 3750e3aa615..2dbadeca9c1 100644
--- a/document/src/vespa/document/predicate/predicate_builder.h
+++ b/document/src/vespa/document/predicate/predicate_builder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/predicate/predicate_printer.cpp b/document/src/vespa/document/predicate/predicate_printer.cpp
index 0b946530003..5d2f2ceb5d2 100644
--- a/document/src/vespa/document/predicate/predicate_printer.cpp
+++ b/document/src/vespa/document/predicate/predicate_printer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "predicate.h"
#include "predicate_printer.h"
diff --git a/document/src/vespa/document/predicate/predicate_printer.h b/document/src/vespa/document/predicate/predicate_printer.h
index c8f79c1d0f2..b4212a5220b 100644
--- a/document/src/vespa/document/predicate/predicate_printer.h
+++ b/document/src/vespa/document/predicate/predicate_printer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/predicate/predicate_slime_builder.cpp b/document/src/vespa/document/predicate/predicate_slime_builder.cpp
index ef3569be19e..04939486a85 100644
--- a/document/src/vespa/document/predicate/predicate_slime_builder.cpp
+++ b/document/src/vespa/document/predicate/predicate_slime_builder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "predicate.h"
#include "predicate_slime_builder.h"
diff --git a/document/src/vespa/document/predicate/predicate_slime_builder.h b/document/src/vespa/document/predicate/predicate_slime_builder.h
index d71650b939e..4a03a85f90d 100644
--- a/document/src/vespa/document/predicate/predicate_slime_builder.h
+++ b/document/src/vespa/document/predicate/predicate_slime_builder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/predicate/predicate_slime_visitor.cpp b/document/src/vespa/document/predicate/predicate_slime_visitor.cpp
index 8c33a84e162..1ba6e57e0a2 100644
--- a/document/src/vespa/document/predicate/predicate_slime_visitor.cpp
+++ b/document/src/vespa/document/predicate/predicate_slime_visitor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "predicate.h"
#include "predicate_slime_visitor.h"
diff --git a/document/src/vespa/document/predicate/predicate_slime_visitor.h b/document/src/vespa/document/predicate/predicate_slime_visitor.h
index 394c72fe8dd..208390b0bd3 100644
--- a/document/src/vespa/document/predicate/predicate_slime_visitor.h
+++ b/document/src/vespa/document/predicate/predicate_slime_visitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/repo/CMakeLists.txt b/document/src/vespa/document/repo/CMakeLists.txt
index accd204b4ad..4e5ee30c184 100644
--- a/document/src/vespa/document/repo/CMakeLists.txt
+++ b/document/src/vespa/document/repo/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(document_repo OBJECT
SOURCES
configbuilder.cpp
diff --git a/document/src/vespa/document/repo/configbuilder.cpp b/document/src/vespa/document/repo/configbuilder.cpp
index 2f507a43204..6169ccd5a23 100644
--- a/document/src/vespa/document/repo/configbuilder.cpp
+++ b/document/src/vespa/document/repo/configbuilder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configbuilder.h"
diff --git a/document/src/vespa/document/repo/configbuilder.h b/document/src/vespa/document/repo/configbuilder.h
index 52ed8d878a2..0bcebe7ddf6 100644
--- a/document/src/vespa/document/repo/configbuilder.h
+++ b/document/src/vespa/document/repo/configbuilder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/repo/document_type_repo_factory.cpp b/document/src/vespa/document/repo/document_type_repo_factory.cpp
index 7033d29c7c2..e6fc47f7e78 100644
--- a/document/src/vespa/document/repo/document_type_repo_factory.cpp
+++ b/document/src/vespa/document/repo/document_type_repo_factory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_type_repo_factory.h"
#include "documenttyperepo.h"
diff --git a/document/src/vespa/document/repo/document_type_repo_factory.h b/document/src/vespa/document/repo/document_type_repo_factory.h
index eab8d7a2879..4dc75a04e38 100644
--- a/document/src/vespa/document/repo/document_type_repo_factory.h
+++ b/document/src/vespa/document/repo/document_type_repo_factory.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/repo/documenttyperepo.cpp b/document/src/vespa/document/repo/documenttyperepo.cpp
index 129972d5524..b993f50d7b6 100644
--- a/document/src/vespa/document/repo/documenttyperepo.cpp
+++ b/document/src/vespa/document/repo/documenttyperepo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documenttyperepo.h"
@@ -296,7 +296,7 @@ void addStruct(int32_t id, const Datatype::Sstruct &s, Repo &repo) {
} else {
const DataType *existing_retry = repo.lookup(id);
LOG(spam, "Type %s not found, adding it", name.c_str());
- struct_type_ap.reset(new StructDataType(name, id));
+ struct_type_ap = std::make_unique<StructDataType>(name, id);
struct_type = struct_type_ap.get();
repo.addDataType(std::move(struct_type_ap));
if (existing_retry) {
@@ -319,18 +319,18 @@ void addStruct(int32_t id, const Datatype::Sstruct &s, Repo &repo) {
void addArray(int32_t id, const Datatype::Array &a, Repo &repo) {
const DataType &nested = repo.findOrThrow(a.element.id);
- repo.addDataType(DataType::UP(new ArrayDataType(nested, id)));
+ repo.addDataType(std::make_unique<ArrayDataType>(nested, id));
}
void addWset(int32_t id, const Datatype::Wset &w, Repo &repo) {
const DataType &key = repo.findOrThrow(w.key.id);
- repo.addDataType(DataType::UP(new WeightedSetDataType(key, w.createifnonexistent, w.removeifzero, id)));
+ repo.addDataType(std::make_unique<WeightedSetDataType>(key, w.createifnonexistent, w.removeifzero, id));
}
void addMap(int32_t id, const Datatype::Map &m, Repo &repo) {
const DataType &key = repo.findOrThrow(m.key.id);
const DataType &value = repo.findOrThrow(m.value.id);
- repo.addDataType(DataType::UP(new MapDataType(key, value, id)));
+ repo.addDataType(std::make_unique<MapDataType>(key, value, id));
}
void addAnnotationRef(int32_t id, const Datatype::Annotationref &a, Repo &r, const AnnotationTypeRepo &annotations) {
@@ -338,7 +338,7 @@ void addAnnotationRef(int32_t id, const Datatype::Annotationref &a, Repo &r, con
if (!type) {
throw IllegalArgumentException(make_string("Unknown AnnotationType %d", a.annotation.id));
}
- r.addDataType(DataType::UP(new AnnotationReferenceDataType(*type, id)));
+ r.addDataType(std::make_unique<AnnotationReferenceDataType>(*type, id));
}
void addDataType(const Datatype &type, Repo &repo, const AnnotationTypeRepo &a_repo) {
@@ -372,7 +372,7 @@ void addDocumentTypes(const DocumentTypeMap &type_map, Repo &repo) {
const DocumentType *
addDefaultDocument(DocumentTypeMap &type_map) {
- DataTypeRepo::UP data_types(new DataTypeRepo);
+ auto data_types = std::make_unique<DataTypeRepo>();
vector<const DataType *> default_types = DataType::getDefaultDataTypes();
for (size_t i = 0; i < default_types.size(); ++i) {
data_types->repo.addDataType(*default_types[i]);
@@ -425,7 +425,7 @@ void inheritDocumentTypes(const vector<DocumenttypesConfig::Documenttype::Inheri
}
DataTypeRepo::UP makeDataTypeRepo(const DocumentType &doc_type, const DocumentTypeMap &type_map) {
- DataTypeRepo::UP data_types(new DataTypeRepo);
+ auto data_types = std::make_unique<DataTypeRepo>();
data_types->repo.inherit(lookupRepo(DataType::T_DOCUMENT, type_map).repo);
data_types->annotations.inherit(lookupRepo(DataType::T_DOCUMENT, type_map).annotations);
data_types->doc_type = doc_type.clone();
@@ -483,7 +483,7 @@ void addDataTypeRepo(DataTypeRepo::UP data_types, DocumentTypeMap &doc_types) {
}
DataTypeRepo::UP makeSkeletonDataTypeRepo(const DocumenttypesConfig::Documenttype &type) {
- DataTypeRepo::UP data_types(new DataTypeRepo);
+ auto data_types = std::make_unique<DataTypeRepo>();
auto type_ap = std::make_unique<StructDataType>(type.name + ".header", type.headerstruct);
data_types->doc_type = new DocumentType(type.name, type.id, *type_ap);
data_types->repo.addDataType(std::move(type_ap));
diff --git a/document/src/vespa/document/repo/documenttyperepo.h b/document/src/vespa/document/repo/documenttyperepo.h
index 1e6da090296..87830b0aa1c 100644
--- a/document/src/vespa/document/repo/documenttyperepo.h
+++ b/document/src/vespa/document/repo/documenttyperepo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/repo/fixedtyperepo.cpp b/document/src/vespa/document/repo/fixedtyperepo.cpp
index 20865a8a6ca..74458e26bd4 100644
--- a/document/src/vespa/document/repo/fixedtyperepo.cpp
+++ b/document/src/vespa/document/repo/fixedtyperepo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fixedtyperepo.h"
#include <cassert>
diff --git a/document/src/vespa/document/repo/fixedtyperepo.h b/document/src/vespa/document/repo/fixedtyperepo.h
index 29bef846e36..ca37d893718 100644
--- a/document/src/vespa/document/repo/fixedtyperepo.h
+++ b/document/src/vespa/document/repo/fixedtyperepo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/select/CMakeLists.txt b/document/src/vespa/document/select/CMakeLists.txt
index 476440c1dbd..7c5cf0747a7 100644
--- a/document/src/vespa/document/select/CMakeLists.txt
+++ b/document/src/vespa/document/select/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
find_package(BISON REQUIRED 3.0)
find_package(FLEX REQUIRED 2.5)
diff --git a/document/src/vespa/document/select/bodyfielddetector.cpp b/document/src/vespa/document/select/bodyfielddetector.cpp
index d1961810c7a..62daa1b3a84 100644
--- a/document/src/vespa/document/select/bodyfielddetector.cpp
+++ b/document/src/vespa/document/select/bodyfielddetector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bodyfielddetector.h"
#include "valuenodes.h"
diff --git a/document/src/vespa/document/select/bodyfielddetector.h b/document/src/vespa/document/select/bodyfielddetector.h
index 99cf9f7c6ea..1b8bab83836 100644
--- a/document/src/vespa/document/select/bodyfielddetector.h
+++ b/document/src/vespa/document/select/bodyfielddetector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "traversingvisitor.h"
diff --git a/document/src/vespa/document/select/branch.cpp b/document/src/vespa/document/select/branch.cpp
index 9104e2c5544..bb08f0a5ba1 100644
--- a/document/src/vespa/document/select/branch.cpp
+++ b/document/src/vespa/document/select/branch.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "branch.h"
#include "visitor.h"
diff --git a/document/src/vespa/document/select/branch.h b/document/src/vespa/document/select/branch.h
index 77ed74030b5..a0ce81ffe25 100644
--- a/document/src/vespa/document/select/branch.h
+++ b/document/src/vespa/document/select/branch.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* @class document::select::Branch
* @ingroup select
diff --git a/document/src/vespa/document/select/cloningvisitor.cpp b/document/src/vespa/document/select/cloningvisitor.cpp
index 75c8be55729..55e8c1effc1 100644
--- a/document/src/vespa/document/select/cloningvisitor.cpp
+++ b/document/src/vespa/document/select/cloningvisitor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "cloningvisitor.h"
#include "valuenodes.h"
diff --git a/document/src/vespa/document/select/cloningvisitor.h b/document/src/vespa/document/select/cloningvisitor.h
index adc795042a3..a49f44190ef 100644
--- a/document/src/vespa/document/select/cloningvisitor.h
+++ b/document/src/vespa/document/select/cloningvisitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "visitor.h"
diff --git a/document/src/vespa/document/select/compare.cpp b/document/src/vespa/document/select/compare.cpp
index caef1bdd250..1d792041c4e 100644
--- a/document/src/vespa/document/select/compare.cpp
+++ b/document/src/vespa/document/select/compare.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "compare.h"
#include "valuenode.h"
diff --git a/document/src/vespa/document/select/compare.h b/document/src/vespa/document/select/compare.h
index 4fa46c2562f..5eacb0ff6ec 100644
--- a/document/src/vespa/document/select/compare.h
+++ b/document/src/vespa/document/select/compare.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class document::select::Compare
* @ingroup select
diff --git a/document/src/vespa/document/select/constant.cpp b/document/src/vespa/document/select/constant.cpp
index 6bca17ff917..d4b7c8c597d 100644
--- a/document/src/vespa/document/select/constant.cpp
+++ b/document/src/vespa/document/select/constant.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "constant.h"
#include "visitor.h"
diff --git a/document/src/vespa/document/select/constant.h b/document/src/vespa/document/select/constant.h
index 5766f7c9039..73fdbef1bd7 100644
--- a/document/src/vespa/document/select/constant.h
+++ b/document/src/vespa/document/select/constant.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class document::select::Constant
* @ingroup select
diff --git a/document/src/vespa/document/select/context.cpp b/document/src/vespa/document/select/context.cpp
index 384ac0dad6e..0be7e411b4f 100644
--- a/document/src/vespa/document/select/context.cpp
+++ b/document/src/vespa/document/select/context.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "context.h"
#include "variablemap.h"
diff --git a/document/src/vespa/document/select/context.h b/document/src/vespa/document/select/context.h
index d808e8907ae..8fdd073e620 100644
--- a/document/src/vespa/document/select/context.h
+++ b/document/src/vespa/document/select/context.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/document/src/vespa/document/select/doctype.cpp b/document/src/vespa/document/select/doctype.cpp
index 0b55407092e..5381fc48777 100644
--- a/document/src/vespa/document/select/doctype.cpp
+++ b/document/src/vespa/document/select/doctype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "doctype.h"
#include "visitor.h"
diff --git a/document/src/vespa/document/select/doctype.h b/document/src/vespa/document/select/doctype.h
index 749ecedc25f..1e48e5126da 100644
--- a/document/src/vespa/document/select/doctype.h
+++ b/document/src/vespa/document/select/doctype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class document::select::DocType
* @ingroup select
diff --git a/document/src/vespa/document/select/gid_filter.cpp b/document/src/vespa/document/select/gid_filter.cpp
index a9a6b8e9bc7..3a3e215db68 100644
--- a/document/src/vespa/document/select/gid_filter.cpp
+++ b/document/src/vespa/document/select/gid_filter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "gid_filter.h"
#include "node.h"
#include "visitor.h"
diff --git a/document/src/vespa/document/select/gid_filter.h b/document/src/vespa/document/select/gid_filter.h
index a6ea7e083cf..7e7816f4c65 100644
--- a/document/src/vespa/document/select/gid_filter.h
+++ b/document/src/vespa/document/select/gid_filter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/base/globalid.h>
diff --git a/document/src/vespa/document/select/grammar/lexer.ll b/document/src/vespa/document/select/grammar/lexer.ll
index d52cf0db7a9..d6ea5bea086 100644
--- a/document/src/vespa/document/select/grammar/lexer.ll
+++ b/document/src/vespa/document/select/grammar/lexer.ll
@@ -1,4 +1,4 @@
- /* Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. */
+ /* Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. */
%option c++
/* Uncomment to enable debug tracing of parsing */
diff --git a/document/src/vespa/document/select/grammar/parser.yy b/document/src/vespa/document/select/grammar/parser.yy
index 9e4a1d1a222..8d64b2382b5 100644
--- a/document/src/vespa/document/select/grammar/parser.yy
+++ b/document/src/vespa/document/select/grammar/parser.yy
@@ -1,4 +1,4 @@
- /* Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. */
+ /* Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. */
/* Skeleton implementation included as part of the generated source. Note: _not_ covered by the GPL. */
%skeleton "lalr1.cc"
diff --git a/document/src/vespa/document/select/invalidconstant.cpp b/document/src/vespa/document/select/invalidconstant.cpp
index 9327f7d1e87..a12e9cb88a3 100644
--- a/document/src/vespa/document/select/invalidconstant.cpp
+++ b/document/src/vespa/document/select/invalidconstant.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "invalidconstant.h"
#include "visitor.h"
diff --git a/document/src/vespa/document/select/invalidconstant.h b/document/src/vespa/document/select/invalidconstant.h
index a3f4a4d2c4b..e676c3b5d9c 100644
--- a/document/src/vespa/document/select/invalidconstant.h
+++ b/document/src/vespa/document/select/invalidconstant.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class document::select::InvalidConstant
* @ingroup select
diff --git a/document/src/vespa/document/select/node.h b/document/src/vespa/document/select/node.h
index 9a3b687d81c..6221d027af0 100644
--- a/document/src/vespa/document/select/node.h
+++ b/document/src/vespa/document/select/node.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class document::select::Node
* @ingroup select
diff --git a/document/src/vespa/document/select/operator.cpp b/document/src/vespa/document/select/operator.cpp
index f5cc681c906..2677eb18890 100644
--- a/document/src/vespa/document/select/operator.cpp
+++ b/document/src/vespa/document/select/operator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "operator.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/document/src/vespa/document/select/operator.h b/document/src/vespa/document/select/operator.h
index ad73d284c63..433ce5a3325 100644
--- a/document/src/vespa/document/select/operator.h
+++ b/document/src/vespa/document/select/operator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class document::select::Operator
* @ingroup select
diff --git a/document/src/vespa/document/select/parse_utils.cpp b/document/src/vespa/document/select/parse_utils.cpp
index ab4ce2f6d4a..477b956527d 100644
--- a/document/src/vespa/document/select/parse_utils.cpp
+++ b/document/src/vespa/document/select/parse_utils.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "parse_utils.h"
#include <boost/spirit/include/qi.hpp>
diff --git a/document/src/vespa/document/select/parse_utils.h b/document/src/vespa/document/select/parse_utils.h
index fb8667f0f7c..b960031db0d 100644
--- a/document/src/vespa/document/select/parse_utils.h
+++ b/document/src/vespa/document/select/parse_utils.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdint>
diff --git a/document/src/vespa/document/select/parser.cpp b/document/src/vespa/document/select/parser.cpp
index fadb46e5aa3..d28ad92a633 100644
--- a/document/src/vespa/document/select/parser.cpp
+++ b/document/src/vespa/document/select/parser.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "parser.h"
#include "parser_limits.h"
#include "scanner.h"
diff --git a/document/src/vespa/document/select/parser.h b/document/src/vespa/document/select/parser.h
index c4e686a120e..8b75abe3001 100644
--- a/document/src/vespa/document/select/parser.h
+++ b/document/src/vespa/document/select/parser.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "node.h"
diff --git a/document/src/vespa/document/select/parser_limits.cpp b/document/src/vespa/document/select/parser_limits.cpp
index 13e494b376f..078f3f428d0 100644
--- a/document/src/vespa/document/select/parser_limits.cpp
+++ b/document/src/vespa/document/select/parser_limits.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "parser_limits.h"
#include "parsing_failed_exception.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/document/src/vespa/document/select/parser_limits.h b/document/src/vespa/document/select/parser_limits.h
index 24c0a165611..1bfd21148d1 100644
--- a/document/src/vespa/document/select/parser_limits.h
+++ b/document/src/vespa/document/select/parser_limits.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdint>
diff --git a/document/src/vespa/document/select/parsing_failed_exception.cpp b/document/src/vespa/document/select/parsing_failed_exception.cpp
index ce02389ed46..dc15731150e 100644
--- a/document/src/vespa/document/select/parsing_failed_exception.cpp
+++ b/document/src/vespa/document/select/parsing_failed_exception.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "parsing_failed_exception.h"
#include <vespa/document/base/exceptions.h>
diff --git a/document/src/vespa/document/select/parsing_failed_exception.h b/document/src/vespa/document/select/parsing_failed_exception.h
index 54138a492e8..c0cba4246ec 100644
--- a/document/src/vespa/document/select/parsing_failed_exception.h
+++ b/document/src/vespa/document/select/parsing_failed_exception.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/exception.h>
diff --git a/document/src/vespa/document/select/result.cpp b/document/src/vespa/document/select/result.cpp
index f7f95732c78..e832bfde3aa 100644
--- a/document/src/vespa/document/select/result.cpp
+++ b/document/src/vespa/document/select/result.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "result.h"
#include <ostream>
diff --git a/document/src/vespa/document/select/result.h b/document/src/vespa/document/select/result.h
index 9cc33b79944..2a4f70c50d9 100644
--- a/document/src/vespa/document/select/result.h
+++ b/document/src/vespa/document/select/result.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class document::select::Result
diff --git a/document/src/vespa/document/select/resultlist.cpp b/document/src/vespa/document/select/resultlist.cpp
index 2058e443c95..e72eb36cbdb 100644
--- a/document/src/vespa/document/select/resultlist.cpp
+++ b/document/src/vespa/document/select/resultlist.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "resultlist.h"
#include <bitset>
diff --git a/document/src/vespa/document/select/resultlist.h b/document/src/vespa/document/select/resultlist.h
index 43b9b40e8fd..b59a4f1a904 100644
--- a/document/src/vespa/document/select/resultlist.h
+++ b/document/src/vespa/document/select/resultlist.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "result.h"
diff --git a/document/src/vespa/document/select/resultset.cpp b/document/src/vespa/document/select/resultset.cpp
index 27cad893d75..29de9369161 100644
--- a/document/src/vespa/document/select/resultset.cpp
+++ b/document/src/vespa/document/select/resultset.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "resultset.h"
diff --git a/document/src/vespa/document/select/resultset.h b/document/src/vespa/document/select/resultset.h
index 234792308df..ef5133807a7 100644
--- a/document/src/vespa/document/select/resultset.h
+++ b/document/src/vespa/document/select/resultset.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "result.h"
diff --git a/document/src/vespa/document/select/scanner.h b/document/src/vespa/document/select/scanner.h
index 5aa9ea1c8d3..188815afceb 100644
--- a/document/src/vespa/document/select/scanner.h
+++ b/document/src/vespa/document/select/scanner.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#if !defined(yyFlexLexerOnce)
diff --git a/document/src/vespa/document/select/simpleparser.cpp b/document/src/vespa/document/select/simpleparser.cpp
index 9a898e63eeb..1c91c7572bc 100644
--- a/document/src/vespa/document/select/simpleparser.cpp
+++ b/document/src/vespa/document/select/simpleparser.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simpleparser.h"
#include "compare.h"
diff --git a/document/src/vespa/document/select/simpleparser.h b/document/src/vespa/document/select/simpleparser.h
index 97264106913..0c19842e8eb 100644
--- a/document/src/vespa/document/select/simpleparser.h
+++ b/document/src/vespa/document/select/simpleparser.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/select/traversingvisitor.cpp b/document/src/vespa/document/select/traversingvisitor.cpp
index 26de6093ddf..a0b7441903e 100644
--- a/document/src/vespa/document/select/traversingvisitor.cpp
+++ b/document/src/vespa/document/select/traversingvisitor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "traversingvisitor.h"
#include "valuenodes.h"
diff --git a/document/src/vespa/document/select/traversingvisitor.h b/document/src/vespa/document/select/traversingvisitor.h
index 6b9a4317bea..be240c42537 100644
--- a/document/src/vespa/document/select/traversingvisitor.h
+++ b/document/src/vespa/document/select/traversingvisitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "visitor.h"
diff --git a/document/src/vespa/document/select/value.cpp b/document/src/vespa/document/select/value.cpp
index 8ada946e702..8b5d32cf842 100644
--- a/document/src/vespa/document/select/value.cpp
+++ b/document/src/vespa/document/select/value.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "value.h"
#include "operator.h"
diff --git a/document/src/vespa/document/select/value.h b/document/src/vespa/document/select/value.h
index a7f3abef81a..9f9ced18296 100644
--- a/document/src/vespa/document/select/value.h
+++ b/document/src/vespa/document/select/value.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class document::select::Value
diff --git a/document/src/vespa/document/select/valuenode.cpp b/document/src/vespa/document/select/valuenode.cpp
index ae827e3f3ae..1c79a6b0704 100644
--- a/document/src/vespa/document/select/valuenode.cpp
+++ b/document/src/vespa/document/select/valuenode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "valuenode.h"
#include <ostream>
diff --git a/document/src/vespa/document/select/valuenode.h b/document/src/vespa/document/select/valuenode.h
index 8dd535a736a..71efa73b1d8 100644
--- a/document/src/vespa/document/select/valuenode.h
+++ b/document/src/vespa/document/select/valuenode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class document::select::ValueNode
* @ingroup select
diff --git a/document/src/vespa/document/select/valuenodes.cpp b/document/src/vespa/document/select/valuenodes.cpp
index 36cb92dfe33..a34e90af383 100644
--- a/document/src/vespa/document/select/valuenodes.cpp
+++ b/document/src/vespa/document/select/valuenodes.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "valuenodes.h"
#include "visitor.h"
#include "parser.h"
diff --git a/document/src/vespa/document/select/valuenodes.h b/document/src/vespa/document/select/valuenodes.h
index a7d5fa15f37..f6fa0400d7c 100644
--- a/document/src/vespa/document/select/valuenodes.h
+++ b/document/src/vespa/document/select/valuenodes.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/select/variablemap.h b/document/src/vespa/document/select/variablemap.h
index d269e40baf5..631e1b837c0 100644
--- a/document/src/vespa/document/select/variablemap.h
+++ b/document/src/vespa/document/select/variablemap.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/stllike/hash_map.h>
#include <vespa/vespalib/stllike/string.h>
diff --git a/document/src/vespa/document/select/visitor.h b/document/src/vespa/document/select/visitor.h
index 28a91f8d0d4..a9b134f80fc 100644
--- a/document/src/vespa/document/select/visitor.h
+++ b/document/src/vespa/document/select/visitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class document::select::Visitor
* @ingroup select
diff --git a/document/src/vespa/document/serialization/CMakeLists.txt b/document/src/vespa/document/serialization/CMakeLists.txt
index 91090119667..c284312c870 100644
--- a/document/src/vespa/document/serialization/CMakeLists.txt
+++ b/document/src/vespa/document/serialization/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(document_serialization OBJECT
SOURCES
annotationdeserializer.cpp
diff --git a/document/src/vespa/document/serialization/annotationdeserializer.cpp b/document/src/vespa/document/serialization/annotationdeserializer.cpp
index 48a402620d3..e3192459574 100644
--- a/document/src/vespa/document/serialization/annotationdeserializer.cpp
+++ b/document/src/vespa/document/serialization/annotationdeserializer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "annotationdeserializer.h"
#include "vespadocumentdeserializer.h"
diff --git a/document/src/vespa/document/serialization/annotationdeserializer.h b/document/src/vespa/document/serialization/annotationdeserializer.h
index a8d2ed89c76..a5fc6bcccec 100644
--- a/document/src/vespa/document/serialization/annotationdeserializer.h
+++ b/document/src/vespa/document/serialization/annotationdeserializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/serialization/annotationserializer.cpp b/document/src/vespa/document/serialization/annotationserializer.cpp
index 1d8b7d90292..448cd661fc9 100644
--- a/document/src/vespa/document/serialization/annotationserializer.cpp
+++ b/document/src/vespa/document/serialization/annotationserializer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "annotationserializer.h"
#include "util.h"
diff --git a/document/src/vespa/document/serialization/annotationserializer.h b/document/src/vespa/document/serialization/annotationserializer.h
index b0a262f6a0e..458cd697224 100644
--- a/document/src/vespa/document/serialization/annotationserializer.h
+++ b/document/src/vespa/document/serialization/annotationserializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/serialization/documentreader.h b/document/src/vespa/document/serialization/documentreader.h
index 968d98e85f9..ac50e82391f 100644
--- a/document/src/vespa/document/serialization/documentreader.h
+++ b/document/src/vespa/document/serialization/documentreader.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/serialization/documentwriter.h b/document/src/vespa/document/serialization/documentwriter.h
index d5838023148..02f9e38eb79 100644
--- a/document/src/vespa/document/serialization/documentwriter.h
+++ b/document/src/vespa/document/serialization/documentwriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/serialization/fieldreader.h b/document/src/vespa/document/serialization/fieldreader.h
index e74cfce21da..a2d2042c0ad 100644
--- a/document/src/vespa/document/serialization/fieldreader.h
+++ b/document/src/vespa/document/serialization/fieldreader.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/serialization/fieldwriter.h b/document/src/vespa/document/serialization/fieldwriter.h
index b61fe6a123f..d5ce1b2bec3 100644
--- a/document/src/vespa/document/serialization/fieldwriter.h
+++ b/document/src/vespa/document/serialization/fieldwriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/serialization/slime_output_to_vector.cpp b/document/src/vespa/document/serialization/slime_output_to_vector.cpp
index eb9ae78c1ed..3370dd1324b 100644
--- a/document/src/vespa/document/serialization/slime_output_to_vector.cpp
+++ b/document/src/vespa/document/serialization/slime_output_to_vector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "slime_output_to_vector.h"
diff --git a/document/src/vespa/document/serialization/slime_output_to_vector.h b/document/src/vespa/document/serialization/slime_output_to_vector.h
index 588386488f4..4663e68ea5c 100644
--- a/document/src/vespa/document/serialization/slime_output_to_vector.h
+++ b/document/src/vespa/document/serialization/slime_output_to_vector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/serialization/util.h b/document/src/vespa/document/serialization/util.h
index 0e0bfabdde5..27e7844b1c7 100644
--- a/document/src/vespa/document/serialization/util.h
+++ b/document/src/vespa/document/serialization/util.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/serialization/vespadocumentdeserializer.cpp b/document/src/vespa/document/serialization/vespadocumentdeserializer.cpp
index d88f7437112..6dd6a4c21bd 100644
--- a/document/src/vespa/document/serialization/vespadocumentdeserializer.cpp
+++ b/document/src/vespa/document/serialization/vespadocumentdeserializer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "vespadocumentdeserializer.h"
#include "annotationdeserializer.h"
diff --git a/document/src/vespa/document/serialization/vespadocumentdeserializer.h b/document/src/vespa/document/serialization/vespadocumentdeserializer.h
index 5819c6a23cf..90dc13cf7df 100644
--- a/document/src/vespa/document/serialization/vespadocumentdeserializer.h
+++ b/document/src/vespa/document/serialization/vespadocumentdeserializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/serialization/vespadocumentserializer.cpp b/document/src/vespa/document/serialization/vespadocumentserializer.cpp
index 9b8fe6b120a..f68a2202788 100644
--- a/document/src/vespa/document/serialization/vespadocumentserializer.cpp
+++ b/document/src/vespa/document/serialization/vespadocumentserializer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "annotationserializer.h"
#include "slime_output_to_vector.h"
diff --git a/document/src/vespa/document/serialization/vespadocumentserializer.h b/document/src/vespa/document/serialization/vespadocumentserializer.h
index f664a32d893..a9cd79b557b 100644
--- a/document/src/vespa/document/serialization/vespadocumentserializer.h
+++ b/document/src/vespa/document/serialization/vespadocumentserializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/test/CMakeLists.txt b/document/src/vespa/document/test/CMakeLists.txt
index 1620a8fad39..5a9c59d6805 100644
--- a/document/src/vespa/document/test/CMakeLists.txt
+++ b/document/src/vespa/document/test/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(document_test OBJECT
SOURCES
make_bucket_space.cpp
diff --git a/document/src/vespa/document/test/make_bucket_space.cpp b/document/src/vespa/document/test/make_bucket_space.cpp
index 631c33da6d0..e80c4dd36ce 100644
--- a/document/src/vespa/document/test/make_bucket_space.cpp
+++ b/document/src/vespa/document/test/make_bucket_space.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "make_bucket_space.h"
diff --git a/document/src/vespa/document/test/make_bucket_space.h b/document/src/vespa/document/test/make_bucket_space.h
index efcd8007954..dd78c7fe415 100644
--- a/document/src/vespa/document/test/make_bucket_space.h
+++ b/document/src/vespa/document/test/make_bucket_space.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/test/make_document_bucket.cpp b/document/src/vespa/document/test/make_document_bucket.cpp
index a24f757c99f..0d72f8544a5 100644
--- a/document/src/vespa/document/test/make_document_bucket.cpp
+++ b/document/src/vespa/document/test/make_document_bucket.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "make_document_bucket.h"
#include "make_bucket_space.h"
diff --git a/document/src/vespa/document/test/make_document_bucket.h b/document/src/vespa/document/test/make_document_bucket.h
index 8c7411cc0e8..4e5245251e0 100644
--- a/document/src/vespa/document/test/make_document_bucket.h
+++ b/document/src/vespa/document/test/make_document_bucket.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/update/CMakeLists.txt b/document/src/vespa/document/update/CMakeLists.txt
index b0ffa056e1a..4162edd0c6d 100644
--- a/document/src/vespa/document/update/CMakeLists.txt
+++ b/document/src/vespa/document/update/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(document_updates OBJECT
SOURCES
addfieldpathupdate.cpp
diff --git a/document/src/vespa/document/update/addfieldpathupdate.cpp b/document/src/vespa/document/update/addfieldpathupdate.cpp
index ab719de38d4..86672a08fd2 100644
--- a/document/src/vespa/document/update/addfieldpathupdate.cpp
+++ b/document/src/vespa/document/update/addfieldpathupdate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "addfieldpathupdate.h"
#include <vespa/document/fieldvalue/iteratorhandler.h>
diff --git a/document/src/vespa/document/update/addfieldpathupdate.h b/document/src/vespa/document/update/addfieldpathupdate.h
index 692a30e3a73..2d1a459e0e5 100644
--- a/document/src/vespa/document/update/addfieldpathupdate.h
+++ b/document/src/vespa/document/update/addfieldpathupdate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "fieldpathupdate.h"
diff --git a/document/src/vespa/document/update/addvalueupdate.cpp b/document/src/vespa/document/update/addvalueupdate.cpp
index e1132b2b571..22e3582b14d 100644
--- a/document/src/vespa/document/update/addvalueupdate.cpp
+++ b/document/src/vespa/document/update/addvalueupdate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "addvalueupdate.h"
#include <vespa/document/base/field.h>
#include <vespa/document/datatype/arraydatatype.h>
diff --git a/document/src/vespa/document/update/addvalueupdate.h b/document/src/vespa/document/update/addvalueupdate.h
index 015d517c5a1..0707e575e50 100644
--- a/document/src/vespa/document/update/addvalueupdate.h
+++ b/document/src/vespa/document/update/addvalueupdate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class document::AddValueUpdate
* @ingroup document
diff --git a/document/src/vespa/document/update/arithmeticvalueupdate.cpp b/document/src/vespa/document/update/arithmeticvalueupdate.cpp
index 90286da521a..a30b7acdea1 100644
--- a/document/src/vespa/document/update/arithmeticvalueupdate.cpp
+++ b/document/src/vespa/document/update/arithmeticvalueupdate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "arithmeticvalueupdate.h"
#include <vespa/document/base/field.h>
#include <vespa/document/fieldvalue/fieldvalues.h>
diff --git a/document/src/vespa/document/update/arithmeticvalueupdate.h b/document/src/vespa/document/update/arithmeticvalueupdate.h
index 697798a7275..f7673adf9c4 100644
--- a/document/src/vespa/document/update/arithmeticvalueupdate.h
+++ b/document/src/vespa/document/update/arithmeticvalueupdate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class document::ArithmeticValueUpdate
* @ingroup document
diff --git a/document/src/vespa/document/update/assignfieldpathupdate.cpp b/document/src/vespa/document/update/assignfieldpathupdate.cpp
index 63e61ed3221..9fa5f4fa441 100644
--- a/document/src/vespa/document/update/assignfieldpathupdate.cpp
+++ b/document/src/vespa/document/update/assignfieldpathupdate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "assignfieldpathupdate.h"
#include <vespa/document/fieldvalue/fieldvalues.h>
diff --git a/document/src/vespa/document/update/assignfieldpathupdate.h b/document/src/vespa/document/update/assignfieldpathupdate.h
index 718d001e060..9cbd4087e0f 100644
--- a/document/src/vespa/document/update/assignfieldpathupdate.h
+++ b/document/src/vespa/document/update/assignfieldpathupdate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "fieldpathupdate.h"
diff --git a/document/src/vespa/document/update/assignvalueupdate.cpp b/document/src/vespa/document/update/assignvalueupdate.cpp
index 48b30f13437..d6eb0b501d3 100644
--- a/document/src/vespa/document/update/assignvalueupdate.cpp
+++ b/document/src/vespa/document/update/assignvalueupdate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "assignvalueupdate.h"
#include <vespa/document/base/field.h>
diff --git a/document/src/vespa/document/update/assignvalueupdate.h b/document/src/vespa/document/update/assignvalueupdate.h
index 978e61cbb3c..c877236199c 100644
--- a/document/src/vespa/document/update/assignvalueupdate.h
+++ b/document/src/vespa/document/update/assignvalueupdate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class document::AssignValueUpdate
* @ingroup document
diff --git a/document/src/vespa/document/update/clearvalueupdate.cpp b/document/src/vespa/document/update/clearvalueupdate.cpp
index e2b8dc86afd..17d7660219b 100644
--- a/document/src/vespa/document/update/clearvalueupdate.cpp
+++ b/document/src/vespa/document/update/clearvalueupdate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "clearvalueupdate.h"
#include <vespa/vespalib/util/xmlstream.h>
diff --git a/document/src/vespa/document/update/clearvalueupdate.h b/document/src/vespa/document/update/clearvalueupdate.h
index 49842653e65..49aa958c103 100644
--- a/document/src/vespa/document/update/clearvalueupdate.h
+++ b/document/src/vespa/document/update/clearvalueupdate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class document::ClearValueUpdate
* @ingroup document
diff --git a/document/src/vespa/document/update/documentupdate.cpp b/document/src/vespa/document/update/documentupdate.cpp
index f289e6a8f27..758f6fbe03c 100644
--- a/document/src/vespa/document/update/documentupdate.cpp
+++ b/document/src/vespa/document/update/documentupdate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentupdate.h"
#include "documentupdateflags.h"
diff --git a/document/src/vespa/document/update/documentupdate.h b/document/src/vespa/document/update/documentupdate.h
index fb3d6c0f7a3..69f22237c8f 100644
--- a/document/src/vespa/document/update/documentupdate.h
+++ b/document/src/vespa/document/update/documentupdate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class document::DocumentUpdate
* @ingroup document
diff --git a/document/src/vespa/document/update/documentupdateflags.h b/document/src/vespa/document/update/documentupdateflags.h
index 85508051885..08d8455ffec 100644
--- a/document/src/vespa/document/update/documentupdateflags.h
+++ b/document/src/vespa/document/update/documentupdateflags.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace document {
diff --git a/document/src/vespa/document/update/fieldpathupdate.cpp b/document/src/vespa/document/update/fieldpathupdate.cpp
index cef5dc21360..9267ff62e1b 100644
--- a/document/src/vespa/document/update/fieldpathupdate.cpp
+++ b/document/src/vespa/document/update/fieldpathupdate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fieldpathupdates.h"
#include <vespa/document/datatype/datatype.h>
#include <vespa/document/fieldvalue/document.h>
diff --git a/document/src/vespa/document/update/fieldpathupdate.h b/document/src/vespa/document/update/fieldpathupdate.h
index 0dbf8e5cc9e..6eed7e4afa6 100644
--- a/document/src/vespa/document/update/fieldpathupdate.h
+++ b/document/src/vespa/document/update/fieldpathupdate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "updatevisitor.h"
diff --git a/document/src/vespa/document/update/fieldpathupdates.h b/document/src/vespa/document/update/fieldpathupdates.h
index fb2cf1dffe2..b88f4e7f071 100644
--- a/document/src/vespa/document/update/fieldpathupdates.h
+++ b/document/src/vespa/document/update/fieldpathupdates.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "addfieldpathupdate.h"
diff --git a/document/src/vespa/document/update/fieldupdate.cpp b/document/src/vespa/document/update/fieldupdate.cpp
index d82896e6a60..7cc9a4d392d 100644
--- a/document/src/vespa/document/update/fieldupdate.cpp
+++ b/document/src/vespa/document/update/fieldupdate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fieldupdate.h"
#include <vespa/document/base/exceptions.h>
diff --git a/document/src/vespa/document/update/fieldupdate.h b/document/src/vespa/document/update/fieldupdate.h
index 77c142b3070..a00e5c73821 100644
--- a/document/src/vespa/document/update/fieldupdate.h
+++ b/document/src/vespa/document/update/fieldupdate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::FieldUpdate
* \ingroup update
diff --git a/document/src/vespa/document/update/mapvalueupdate.cpp b/document/src/vespa/document/update/mapvalueupdate.cpp
index 0837615e4fb..8f9e90b5029 100644
--- a/document/src/vespa/document/update/mapvalueupdate.cpp
+++ b/document/src/vespa/document/update/mapvalueupdate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mapvalueupdate.h"
#include <vespa/document/datatype/weightedsetdatatype.h>
diff --git a/document/src/vespa/document/update/mapvalueupdate.h b/document/src/vespa/document/update/mapvalueupdate.h
index 4e407097405..8ec57473aa5 100644
--- a/document/src/vespa/document/update/mapvalueupdate.h
+++ b/document/src/vespa/document/update/mapvalueupdate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class document::MapValueUpdate
* @ingroup document
diff --git a/document/src/vespa/document/update/removefieldpathupdate.cpp b/document/src/vespa/document/update/removefieldpathupdate.cpp
index 57832055001..325202589cd 100644
--- a/document/src/vespa/document/update/removefieldpathupdate.cpp
+++ b/document/src/vespa/document/update/removefieldpathupdate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "removefieldpathupdate.h"
#include <vespa/document/fieldvalue/iteratorhandler.h>
diff --git a/document/src/vespa/document/update/removefieldpathupdate.h b/document/src/vespa/document/update/removefieldpathupdate.h
index 1329361621e..05e0c8d88ca 100644
--- a/document/src/vespa/document/update/removefieldpathupdate.h
+++ b/document/src/vespa/document/update/removefieldpathupdate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "fieldpathupdate.h"
diff --git a/document/src/vespa/document/update/removevalueupdate.cpp b/document/src/vespa/document/update/removevalueupdate.cpp
index 60176d93dce..979e2e736de 100644
--- a/document/src/vespa/document/update/removevalueupdate.cpp
+++ b/document/src/vespa/document/update/removevalueupdate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "removevalueupdate.h"
#include <vespa/document/base/field.h>
#include <vespa/document/datatype/arraydatatype.h>
diff --git a/document/src/vespa/document/update/removevalueupdate.h b/document/src/vespa/document/update/removevalueupdate.h
index c674ebf430c..7fc1ee4a4e1 100644
--- a/document/src/vespa/document/update/removevalueupdate.h
+++ b/document/src/vespa/document/update/removevalueupdate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* This class represents an update that removes a given field value from a
* field.
diff --git a/document/src/vespa/document/update/tensor_partial_update.cpp b/document/src/vespa/document/update/tensor_partial_update.cpp
index 83741a0517a..9c3db0edb5f 100644
--- a/document/src/vespa/document/update/tensor_partial_update.cpp
+++ b/document/src/vespa/document/update/tensor_partial_update.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tensor_partial_update.h"
#include <vespa/eval/eval/operation.h>
diff --git a/document/src/vespa/document/update/tensor_partial_update.h b/document/src/vespa/document/update/tensor_partial_update.h
index 55340de18f8..196b14f6f5c 100644
--- a/document/src/vespa/document/update/tensor_partial_update.h
+++ b/document/src/vespa/document/update/tensor_partial_update.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/update/tensor_update.h b/document/src/vespa/document/update/tensor_update.h
index ecb99b849c0..1dbd743ae9c 100644
--- a/document/src/vespa/document/update/tensor_update.h
+++ b/document/src/vespa/document/update/tensor_update.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/update/updates.h b/document/src/vespa/document/update/updates.h
index 3d775f4d734..153702aa958 100644
--- a/document/src/vespa/document/update/updates.h
+++ b/document/src/vespa/document/update/updates.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/update/updatevisitor.h b/document/src/vespa/document/update/updatevisitor.h
index 823d749d1f0..d3ca58fa256 100644
--- a/document/src/vespa/document/update/updatevisitor.h
+++ b/document/src/vespa/document/update/updatevisitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/update/valueupdate.cpp b/document/src/vespa/document/update/valueupdate.cpp
index 6b893a80fd0..2be6a4f2e63 100644
--- a/document/src/vespa/document/update/valueupdate.cpp
+++ b/document/src/vespa/document/update/valueupdate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "valueupdate.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/document/src/vespa/document/update/valueupdate.h b/document/src/vespa/document/update/valueupdate.h
index 6939d10ce2c..dc7dcce785e 100644
--- a/document/src/vespa/document/update/valueupdate.h
+++ b/document/src/vespa/document/update/valueupdate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class document::ValueUpdate
* @ingroup document
diff --git a/document/src/vespa/document/util/CMakeLists.txt b/document/src/vespa/document/util/CMakeLists.txt
index 7b6423a5f34..523e7cfadeb 100644
--- a/document/src/vespa/document/util/CMakeLists.txt
+++ b/document/src/vespa/document/util/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(document_util OBJECT
SOURCES
bytebuffer.cpp
diff --git a/document/src/vespa/document/util/bufferexceptions.h b/document/src/vespa/document/util/bufferexceptions.h
index aee7f3ae568..7394f09ac40 100644
--- a/document/src/vespa/document/util/bufferexceptions.h
+++ b/document/src/vespa/document/util/bufferexceptions.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/exceptions.h>
diff --git a/document/src/vespa/document/util/bytebuffer.cpp b/document/src/vespa/document/util/bytebuffer.cpp
index ad28096cfad..3d38aba6dae 100644
--- a/document/src/vespa/document/util/bytebuffer.cpp
+++ b/document/src/vespa/document/util/bytebuffer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
@author Thomas F. Gundersen, �ystein Fledsberg
@version $Id$
diff --git a/document/src/vespa/document/util/bytebuffer.h b/document/src/vespa/document/util/bytebuffer.h
index 4c367c0f143..302d43f8742 100644
--- a/document/src/vespa/document/util/bytebuffer.h
+++ b/document/src/vespa/document/util/bytebuffer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::ByteBuffer
* \ingroup util
diff --git a/document/src/vespa/document/util/feed_reject_helper.cpp b/document/src/vespa/document/util/feed_reject_helper.cpp
index e55b408219c..f23524eddfb 100644
--- a/document/src/vespa/document/util/feed_reject_helper.cpp
+++ b/document/src/vespa/document/util/feed_reject_helper.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "feed_reject_helper.h"
#include <vespa/document/update/documentupdate.h>
diff --git a/document/src/vespa/document/util/feed_reject_helper.h b/document/src/vespa/document/util/feed_reject_helper.h
index 411a050d2aa..4401ce8b5e0 100644
--- a/document/src/vespa/document/util/feed_reject_helper.h
+++ b/document/src/vespa/document/util/feed_reject_helper.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/document/src/vespa/document/util/identifiableid.h b/document/src/vespa/document/util/identifiableid.h
index 9368b6a7cb6..1ff4d5301b5 100644
--- a/document/src/vespa/document/util/identifiableid.h
+++ b/document/src/vespa/document/util/identifiableid.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/objects/identifiable.h>
diff --git a/document/src/vespa/document/util/printable.cpp b/document/src/vespa/document/util/printable.cpp
index 2512ce2e991..8d9135af285 100644
--- a/document/src/vespa/document/util/printable.cpp
+++ b/document/src/vespa/document/util/printable.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "printable.h"
#include <sstream>
diff --git a/document/src/vespa/document/util/printable.h b/document/src/vespa/document/util/printable.h
index 71b93d4bdc4..6af3e14cd28 100644
--- a/document/src/vespa/document/util/printable.h
+++ b/document/src/vespa/document/util/printable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::Printable
* \ingroup util
diff --git a/document/src/vespa/document/util/queue.h b/document/src/vespa/document/util/queue.h
index ad5ad07b8ac..51daa8f9934 100644
--- a/document/src/vespa/document/util/queue.h
+++ b/document/src/vespa/document/util/queue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <queue>
diff --git a/document/src/vespa/document/util/serializableexceptions.cpp b/document/src/vespa/document/util/serializableexceptions.cpp
index e80e38015e8..bd770992457 100644
--- a/document/src/vespa/document/util/serializableexceptions.cpp
+++ b/document/src/vespa/document/util/serializableexceptions.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "serializableexceptions.h"
diff --git a/document/src/vespa/document/util/serializableexceptions.h b/document/src/vespa/document/util/serializableexceptions.h
index 1b692aa27b7..93f0fe9d2ca 100644
--- a/document/src/vespa/document/util/serializableexceptions.h
+++ b/document/src/vespa/document/util/serializableexceptions.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @file serializable.h
* @ingroup document
diff --git a/document/src/vespa/document/util/stringutil.cpp b/document/src/vespa/document/util/stringutil.cpp
index 0e48521670e..28b9d37755b 100644
--- a/document/src/vespa/document/util/stringutil.cpp
+++ b/document/src/vespa/document/util/stringutil.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
*
* $Id$
diff --git a/document/src/vespa/document/util/stringutil.h b/document/src/vespa/document/util/stringutil.h
index 999dd20cdc3..24bf0f9a259 100644
--- a/document/src/vespa/document/util/stringutil.h
+++ b/document/src/vespa/document/util/stringutil.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class document::StringUtil
* \ingroup util
diff --git a/document/src/vespa/document/util/xmlserializable.h b/document/src/vespa/document/util/xmlserializable.h
index 27b2a59c906..f4a5db0de58 100644
--- a/document/src/vespa/document/util/xmlserializable.h
+++ b/document/src/vespa/document/util/xmlserializable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/documentapi-dependencies/README.md b/documentapi-dependencies/README.md
index 35654dc24b2..c83f1dd0595 100644
--- a/documentapi-dependencies/README.md
+++ b/documentapi-dependencies/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Documentapi-dependencies
Pom artifact that lists dependencies that are common between `documentapi` and
diff --git a/documentapi-dependencies/pom.xml b/documentapi-dependencies/pom.xml
index 6a48c7e9c71..7a977a36842 100644
--- a/documentapi-dependencies/pom.xml
+++ b/documentapi-dependencies/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/documentapi/CMakeLists.txt b/documentapi/CMakeLists.txt
index 855fd7ad0e6..084afb75fe1 100644
--- a/documentapi/CMakeLists.txt
+++ b/documentapi/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/documentapi/pom.xml b/documentapi/pom.xml
index 0c4195d2b99..1de84b29c9f 100644
--- a/documentapi/pom.xml
+++ b/documentapi/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/documentapi/src/Doxyfile b/documentapi/src/Doxyfile
index f8c6409e716..e0a9714d2e9 100644
--- a/documentapi/src/Doxyfile
+++ b/documentapi/src/Doxyfile
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Doxyfile 1.4.1
# This file describes the settings to be used by the documentation system
diff --git a/documentapi/src/main/docapi-with-dependencies.xml b/documentapi/src/main/docapi-with-dependencies.xml
index 3b76662ebed..4e1d3633ded 100644
--- a/documentapi/src/main/docapi-with-dependencies.xml
+++ b/documentapi/src/main/docapi-with-dependencies.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<assembly>
<id>jar-with-dependencies</id>
<formats>
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/AckToken.java b/documentapi/src/main/java/com/yahoo/documentapi/AckToken.java
index b24d1b33a02..2360c673948 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/AckToken.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/AckToken.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
/**
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/AsyncParameters.java b/documentapi/src/main/java/com/yahoo/documentapi/AsyncParameters.java
index 6c6549bec76..395945c2846 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/AsyncParameters.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/AsyncParameters.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
/**
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/AsyncSession.java b/documentapi/src/main/java/com/yahoo/documentapi/AsyncSession.java
index 86665a90a47..8a7b9d74df5 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/AsyncSession.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/AsyncSession.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.document.Document;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/BucketListVisitorResponse.java b/documentapi/src/main/java/com/yahoo/documentapi/BucketListVisitorResponse.java
index b4a9cd8130f..ad4166c8fdb 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/BucketListVisitorResponse.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/BucketListVisitorResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.document.BucketId;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/DocumentAccess.java b/documentapi/src/main/java/com/yahoo/documentapi/DocumentAccess.java
index 1aa5c4c0df0..d40aaaf46d1 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/DocumentAccess.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/DocumentAccess.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.document.DocumentTypeManager;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/DocumentAccessException.java b/documentapi/src/main/java/com/yahoo/documentapi/DocumentAccessException.java
index 0b33a0f8376..7afb6af359c 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/DocumentAccessException.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/DocumentAccessException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/DocumentAccessParams.java b/documentapi/src/main/java/com/yahoo/documentapi/DocumentAccessParams.java
index 33cebd0836c..3d02e9be0f1 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/DocumentAccessParams.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/DocumentAccessParams.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.document.config.DocumentmanagerConfig;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/DocumentIdResponse.java b/documentapi/src/main/java/com/yahoo/documentapi/DocumentIdResponse.java
index e4a44fb88cd..9625a7c92ad 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/DocumentIdResponse.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/DocumentIdResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.document.DocumentId;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/DocumentOpVisitorResponse.java b/documentapi/src/main/java/com/yahoo/documentapi/DocumentOpVisitorResponse.java
index 4316003acc6..7b1a0e6734d 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/DocumentOpVisitorResponse.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/DocumentOpVisitorResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.document.DocumentOperation;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/DocumentOperationParameters.java b/documentapi/src/main/java/com/yahoo/documentapi/DocumentOperationParameters.java
index fa38312582e..4995c365992 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/DocumentOperationParameters.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/DocumentOperationParameters.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.document.fieldset.FieldSet;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/DocumentResponse.java b/documentapi/src/main/java/com/yahoo/documentapi/DocumentResponse.java
index 2a02b70d4fc..4b17fef7f59 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/DocumentResponse.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/DocumentResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.document.Document;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/DocumentUpdateResponse.java b/documentapi/src/main/java/com/yahoo/documentapi/DocumentUpdateResponse.java
index d34873aeaa6..d9c286446ac 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/DocumentUpdateResponse.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/DocumentUpdateResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.document.DocumentUpdate;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/DocumentVisitor.java b/documentapi/src/main/java/com/yahoo/documentapi/DocumentVisitor.java
index a6c3b7f10b1..6a8e6305d28 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/DocumentVisitor.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/DocumentVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
/**
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/DumpVisitorDataHandler.java b/documentapi/src/main/java/com/yahoo/documentapi/DumpVisitorDataHandler.java
index db83edde8c3..d9339f4ecf1 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/DumpVisitorDataHandler.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/DumpVisitorDataHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.document.Document;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/EmptyBucketsVisitorResponse.java b/documentapi/src/main/java/com/yahoo/documentapi/EmptyBucketsVisitorResponse.java
index 44657b9d891..15c279d2e0a 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/EmptyBucketsVisitorResponse.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/EmptyBucketsVisitorResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.document.BucketId;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/Parameters.java b/documentapi/src/main/java/com/yahoo/documentapi/Parameters.java
index 191dd46c34e..b0f411402e8 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/Parameters.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/Parameters.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
/**
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/ProgressToken.java b/documentapi/src/main/java/com/yahoo/documentapi/ProgressToken.java
index 540b92461e6..9957898e459 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/ProgressToken.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/ProgressToken.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import java.util.Base64;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/RemoveResponse.java b/documentapi/src/main/java/com/yahoo/documentapi/RemoveResponse.java
index 2d3f2934890..3b0212fa0bb 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/RemoveResponse.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/RemoveResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.messagebus.Trace;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/Response.java b/documentapi/src/main/java/com/yahoo/documentapi/Response.java
index 4e4e038e3fc..aee9dc010ab 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/Response.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/Response.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.messagebus.Trace;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/ResponseHandler.java b/documentapi/src/main/java/com/yahoo/documentapi/ResponseHandler.java
index cab591d2dc7..6050afa1343 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/ResponseHandler.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/ResponseHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
/**
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/Result.java b/documentapi/src/main/java/com/yahoo/documentapi/Result.java
index 38c49873d9b..9509a485654 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/Result.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/Result.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
/**
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/Session.java b/documentapi/src/main/java/com/yahoo/documentapi/Session.java
index 3f296723079..015c41d7643 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/Session.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/Session.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
/**
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/SimpleVisitorDocumentQueue.java b/documentapi/src/main/java/com/yahoo/documentapi/SimpleVisitorDocumentQueue.java
index e1dbe615f7d..cf276588c09 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/SimpleVisitorDocumentQueue.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/SimpleVisitorDocumentQueue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.document.Document;
@@ -14,12 +14,11 @@ import java.util.List;
* Retrieving the list is not thread safe, so wait until visitor is done. This
* is a simple class merely meant for testing.
*
- * @author <a href="mailto:humbe@yahoo-inc.com">H&aring;kon Humberset</a>
+ * @author Håkon Humberset
*/
public class SimpleVisitorDocumentQueue extends DumpVisitorDataHandler {
- private final List<Document> documents = new LinkedList<Document>();
+ private final List<Document> documents = new LinkedList<>();
- // Inherit doc from VisitorDataHandler
public void reset() {
super.reset();
documents.clear();
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/SubscriptionParameters.java b/documentapi/src/main/java/com/yahoo/documentapi/SubscriptionParameters.java
index a85774f0f36..f53cbba859c 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/SubscriptionParameters.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/SubscriptionParameters.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
/**
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/SubscriptionSession.java b/documentapi/src/main/java/com/yahoo/documentapi/SubscriptionSession.java
index 4e491787f75..19147ff91d7 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/SubscriptionSession.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/SubscriptionSession.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
/**
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/SyncParameters.java b/documentapi/src/main/java/com/yahoo/documentapi/SyncParameters.java
index 29d04c85a05..15546a3ce4a 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/SyncParameters.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/SyncParameters.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import java.time.Duration;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/SyncSession.java b/documentapi/src/main/java/com/yahoo/documentapi/SyncSession.java
index 1cee3249032..36568a69ea2 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/SyncSession.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/SyncSession.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.document.Document;
@@ -45,8 +45,6 @@ public interface SyncSession extends Session {
*
* @param documentPut the DocumentPut operation
* @param parameters parameters for the operation
- *
- * @param documentPut the DocumentPut operation
*/
default void put(DocumentPut documentPut, DocumentOperationParameters parameters) {
put(documentPut);
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/UpdateResponse.java b/documentapi/src/main/java/com/yahoo/documentapi/UpdateResponse.java
index 54c338dc6c9..3df04c872c2 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/UpdateResponse.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/UpdateResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.messagebus.Trace;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/VisitorControlHandler.java b/documentapi/src/main/java/com/yahoo/documentapi/VisitorControlHandler.java
index 05e66ef95f5..7435e48d6a3 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/VisitorControlHandler.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/VisitorControlHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.vdslib.VisitorStatistics;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/VisitorControlSession.java b/documentapi/src/main/java/com/yahoo/documentapi/VisitorControlSession.java
index 0874ffb64fc..9be8d3b8d14 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/VisitorControlSession.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/VisitorControlSession.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
/**
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/VisitorDataHandler.java b/documentapi/src/main/java/com/yahoo/documentapi/VisitorDataHandler.java
index 57d4c78d9be..7647cc358eb 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/VisitorDataHandler.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/VisitorDataHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.document.Document;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/VisitorDataQueue.java b/documentapi/src/main/java/com/yahoo/documentapi/VisitorDataQueue.java
index 5c4e6c625a9..5efea960511 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/VisitorDataQueue.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/VisitorDataQueue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.document.DocumentOperation;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/VisitorDestinationParameters.java b/documentapi/src/main/java/com/yahoo/documentapi/VisitorDestinationParameters.java
index d1d488ca190..854faa0c763 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/VisitorDestinationParameters.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/VisitorDestinationParameters.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
/**
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/VisitorDestinationSession.java b/documentapi/src/main/java/com/yahoo/documentapi/VisitorDestinationSession.java
index aa8b5892a3a..cd309d6b315 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/VisitorDestinationSession.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/VisitorDestinationSession.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
/**
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/VisitorIterator.java b/documentapi/src/main/java/com/yahoo/documentapi/VisitorIterator.java
index e98be6871b4..e11bdf7f18c 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/VisitorIterator.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/VisitorIterator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.document.BucketId;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/VisitorParameters.java b/documentapi/src/main/java/com/yahoo/documentapi/VisitorParameters.java
index 6a059699b2b..8b0c8538855 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/VisitorParameters.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/VisitorParameters.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.document.BucketId;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/VisitorResponse.java b/documentapi/src/main/java/com/yahoo/documentapi/VisitorResponse.java
index 6a10f0881c7..6d8d072acd9 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/VisitorResponse.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/VisitorResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
/**
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/VisitorSession.java b/documentapi/src/main/java/com/yahoo/documentapi/VisitorSession.java
index f28ac427d2f..4a41769ff4c 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/VisitorSession.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/VisitorSession.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.messagebus.Trace;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/local/LocalAsyncSession.java b/documentapi/src/main/java/com/yahoo/documentapi/local/LocalAsyncSession.java
index 1117d4526f8..102fa73f2ec 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/local/LocalAsyncSession.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/local/LocalAsyncSession.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.local;
import com.yahoo.document.Document;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/local/LocalDocumentAccess.java b/documentapi/src/main/java/com/yahoo/documentapi/local/LocalDocumentAccess.java
index 6a0f2d6afc2..6e4dfa86ad5 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/local/LocalDocumentAccess.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/local/LocalDocumentAccess.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.local;
import com.yahoo.document.Document;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/local/LocalSyncSession.java b/documentapi/src/main/java/com/yahoo/documentapi/local/LocalSyncSession.java
index ea0ee2eaee1..6abec594b44 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/local/LocalSyncSession.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/local/LocalSyncSession.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.local;
import com.yahoo.document.Document;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/local/LocalVisitorSession.java b/documentapi/src/main/java/com/yahoo/documentapi/local/LocalVisitorSession.java
index 1101ef0d08e..18aa3ff47f6 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/local/LocalVisitorSession.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/local/LocalVisitorSession.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.local;
import com.yahoo.document.Document;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/local/package-info.java b/documentapi/src/main/java/com/yahoo/documentapi/local/package-info.java
index 3a926525581..a6493f0d165 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/local/package-info.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/local/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.documentapi.local;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java
index 488c2040976..259b598dbf5 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus;
import com.yahoo.document.Document;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusDocumentAccess.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusDocumentAccess.java
index eaa35047c2d..f703b9ad59a 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusDocumentAccess.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusDocumentAccess.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus;
import com.yahoo.concurrent.ThreadFactoryFactory;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusParams.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusParams.java
index e167e0057e2..628bca4098f 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusParams.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusParams.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus;
import com.yahoo.documentapi.DocumentAccessParams;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSession.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSession.java
index fb6ed192cad..d60e7b5d324 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSession.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSession.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus;
/**
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSyncSession.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSyncSession.java
index 8aada611d80..4bc96ed1d22 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSyncSession.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusSyncSession.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus;
import com.yahoo.document.Document;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusVisitorDestinationSession.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusVisitorDestinationSession.java
index 521908d661c..d2b94126f7c 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusVisitorDestinationSession.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusVisitorDestinationSession.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus;
import com.yahoo.documentapi.AckToken;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusVisitorSession.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusVisitorSession.java
index f71fc54a302..5d07d433f18 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusVisitorSession.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusVisitorSession.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus;
import com.yahoo.document.BucketId;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/ScheduledEventQueue.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/ScheduledEventQueue.java
index e3b38479ddf..261b4f2c2ee 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/ScheduledEventQueue.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/ScheduledEventQueue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus;
import com.yahoo.concurrent.SystemTimer;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/loadtypes/LoadType.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/loadtypes/LoadType.java
index f76d54e652d..53c09dcbcb6 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/loadtypes/LoadType.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/loadtypes/LoadType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.loadtypes;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/loadtypes/LoadTypeSet.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/loadtypes/LoadTypeSet.java
index 0c40f527287..e28d760eddf 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/loadtypes/LoadTypeSet.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/loadtypes/LoadTypeSet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.loadtypes;
import com.yahoo.config.subscription.ConfigGetter;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/loadtypes/package-info.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/loadtypes/package-info.java
index 7f2e0af3ef1..be0f91f0f29 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/loadtypes/package-info.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/loadtypes/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.documentapi.messagebus.loadtypes;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/package-info.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/package-info.java
index 10bea09686b..1f8c6b65d03 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/package-info.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.documentapi.messagebus;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ANDPolicy.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ANDPolicy.java
index 5e6aae46989..ec4ec5ae790 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ANDPolicy.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ANDPolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.messagebus.routing.Hop;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/AbstractRoutableFactory.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/AbstractRoutableFactory.java
index 2a7633ebd70..8510c31b23d 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/AbstractRoutableFactory.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/AbstractRoutableFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.text.Utf8;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/AdaptiveLoadBalancer.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/AdaptiveLoadBalancer.java
index 621064c178e..5a616a0a391 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/AdaptiveLoadBalancer.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/AdaptiveLoadBalancer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.jrt.slobrok.api.Mirror;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ContentPolicy.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ContentPolicy.java
index 4561099c74e..5eaec70ca59 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ContentPolicy.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ContentPolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.concurrent.CopyOnWriteHashMap;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/CreateVisitorMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/CreateVisitorMessage.java
index 990585f39e1..cae0587ae39 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/CreateVisitorMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/CreateVisitorMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.BucketId;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/CreateVisitorReply.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/CreateVisitorReply.java
index 26d969fd3b3..8f524fc39d8 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/CreateVisitorReply.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/CreateVisitorReply.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.BucketId;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DestroyVisitorMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DestroyVisitorMessage.java
index 2a81c53cd46..990234ae565 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DestroyVisitorMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DestroyVisitorMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
public class DestroyVisitorMessage extends DocumentMessage {
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentAcceptedReply.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentAcceptedReply.java
index 1ee67bd5608..3028432818b 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentAcceptedReply.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentAcceptedReply.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
/**
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentIgnoredReply.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentIgnoredReply.java
index 21949dc309f..7397bd4b5c0 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentIgnoredReply.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentIgnoredReply.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
public class DocumentIgnoredReply extends DocumentReply {
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentListEntry.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentListEntry.java
index a6bbcadd8f1..fdaec7688bc 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentListEntry.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentListEntry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.Document;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentListMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentListMessage.java
index 59b3fc9be24..a6951efee1e 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentListMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentListMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.BucketId;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentMessage.java
index dbe6bb2ff45..1771528e70c 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.documentapi.messagebus.loadtypes.LoadType;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentProtocol.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentProtocol.java
index 547d7f76dc5..ac946b80429 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentProtocol.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentProtocol.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.collections.Tuple2;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentProtocolRoutingPolicy.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentProtocolRoutingPolicy.java
index e6ef169cba2..5325432731c 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentProtocolRoutingPolicy.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentProtocolRoutingPolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.messagebus.routing.RoutingPolicy;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentReply.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentReply.java
index dc669dccaa5..13bb2a47999 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentReply.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentReply.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.messagebus.Reply;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentRouteSelectorPolicy.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentRouteSelectorPolicy.java
index 07fd098c9b4..7422a303ce9 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentRouteSelectorPolicy.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentRouteSelectorPolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.config.subscription.ConfigSubscriber;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentState.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentState.java
index 7bd8c708fd2..c08ca745ac3 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentState.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentState.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.DocumentId;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentSummaryMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentSummaryMessage.java
index 8a4f93d2cdd..4866579a977 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentSummaryMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentSummaryMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.vdslib.DocumentSummary;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/EmptyBucketsMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/EmptyBucketsMessage.java
index e032c908911..6bf5971ccf8 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/EmptyBucketsMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/EmptyBucketsMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.BucketId;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ErrorPolicy.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ErrorPolicy.java
index f70128618c5..4cee9c3ffae 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ErrorPolicy.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ErrorPolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.messagebus.EmptyReply;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ExternPolicy.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ExternPolicy.java
index 26b7cb71f2d..3c64832b7f4 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ExternPolicy.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ExternPolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.jrt.Supervisor;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetBucketListMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetBucketListMessage.java
index ef0044fec9e..1e18191511d 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetBucketListMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetBucketListMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.BucketId;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetBucketListReply.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetBucketListReply.java
index 75b2db2a0af..71b73c6140c 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetBucketListReply.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetBucketListReply.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.BucketId;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetBucketStateMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetBucketStateMessage.java
index f9b715c9937..fa4e80ddc05 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetBucketStateMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetBucketStateMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.BucketId;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetBucketStateReply.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetBucketStateReply.java
index 024aceceb5b..16f62c3a14e 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetBucketStateReply.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetBucketStateReply.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import java.util.ArrayList;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetDocumentMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetDocumentMessage.java
index f65550bbf0f..669c355b2d8 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetDocumentMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetDocumentMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.DocumentId;
@@ -16,13 +16,6 @@ public class GetDocumentMessage extends DocumentMessage {
private String fieldSet = DEFAULT_FIELD_SET;
/**
- * Constructs a new message for deserialization.
- */
- GetDocumentMessage() {
- // empty
- }
-
- /**
* Constructs a new document get message.
*
* @param documentId The identifier of the document to get.
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetDocumentReply.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetDocumentReply.java
index 9d9695e71fc..2f2d90f2052 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetDocumentReply.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/GetDocumentReply.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.Document;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LazyDecoder.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LazyDecoder.java
index 002bdb2a2dd..bb68fdb57fd 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LazyDecoder.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LazyDecoder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.serialization.DocumentDeserializer;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancer.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancer.java
index bb4ed1367ae..9eab0a76d23 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancer.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.jrt.slobrok.api.Mirror;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancerPolicy.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancerPolicy.java
index e59d253b851..c77b79ee1ef 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancerPolicy.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancerPolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.jrt.slobrok.api.Mirror;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LocalServicePolicy.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LocalServicePolicy.java
index 2db45ed0472..0fe44a74968 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LocalServicePolicy.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LocalServicePolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.jrt.slobrok.api.Mirror;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/MapVisitorMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/MapVisitorMessage.java
index 4e4cb3b4cbb..15e971329e6 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/MapVisitorMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/MapVisitorMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import java.util.Map;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/MessageTypePolicy.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/MessageTypePolicy.java
index 34124cf48db..57cd70cf4b4 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/MessageTypePolicy.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/MessageTypePolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.config.subscription.ConfigSubscriber;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/PutDocumentMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/PutDocumentMessage.java
index b2bf26d3b05..4482e5bfc47 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/PutDocumentMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/PutDocumentMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.DocumentPut;
@@ -19,13 +19,6 @@ public class PutDocumentMessage extends TestAndSetMessage {
private LazyDecoder decoder = null;
/**
- * Constructs a new message for deserialization.
- */
- PutDocumentMessage() {
- // empty
- }
-
- /**
* Constructs a new message from a byte buffer.
*
* @param decoder The decoder to use for deserialization.
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/QueryResultMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/QueryResultMessage.java
index 97f19a01d05..c258b53b1c2 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/QueryResultMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/QueryResultMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.vdslib.SearchResult;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RemoveDocumentMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RemoveDocumentMessage.java
index 101fee73fc7..2264a226a07 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RemoveDocumentMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RemoveDocumentMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.DocumentId;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RemoveDocumentReply.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RemoveDocumentReply.java
index d3c29e5a7be..ae576c6eb0b 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RemoveDocumentReply.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RemoveDocumentReply.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
/**
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RemoveLocationMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RemoveLocationMessage.java
index fba1db3d5dd..7cbad4b8dcc 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RemoveLocationMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RemoveLocationMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.*;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ReplyMerger.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ReplyMerger.java
index 630a8588495..567f8316610 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ReplyMerger.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ReplyMerger.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.collections.Tuple2;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoundRobinPolicy.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoundRobinPolicy.java
index 3a1599ab71b..5187ee9d255 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoundRobinPolicy.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoundRobinPolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.jrt.slobrok.api.Mirror;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories60.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories60.java
index ace19466496..b6c87e0a27e 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories60.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories60.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.BucketId;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactory.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactory.java
index db17309aab9..d38671fa313 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactory.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.serialization.DocumentDeserializer;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableRepository.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableRepository.java
index 7fc1ad8fc84..24677a9a322 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableRepository.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableRepository.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.component.Version;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyFactories.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyFactories.java
index c313422ab1b..046976d7dfa 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyFactories.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyFactories.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocolPoliciesConfig;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyFactory.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyFactory.java
index 3e368832c98..e0aaae2bdc0 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyFactory.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.messagebus.routing.RoutingPolicy;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepository.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepository.java
index c9e3488ecb9..9e295be3a18 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepository.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepository.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.messagebus.routing.RoutingPolicy;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/SearchResultMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/SearchResultMessage.java
index ad562842f55..570aafd49e6 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/SearchResultMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/SearchResultMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.vdslib.SearchResult;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/SlobrokPolicy.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/SlobrokPolicy.java
index 1ffce622d78..7648da6dca4 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/SlobrokPolicy.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/SlobrokPolicy.java
@@ -33,7 +33,7 @@ public abstract class SlobrokPolicy implements DocumentProtocolRoutingPolicy {
}
} catch (InterruptedException e) {
}
- firstTry = true;
+ firstTry = false;
}
}
}
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/StatBucketMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/StatBucketMessage.java
index 384869049d1..3eb542283c2 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/StatBucketMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/StatBucketMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.BucketId;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/StatBucketReply.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/StatBucketReply.java
index a6cef2d5d37..0bf6dfd0757 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/StatBucketReply.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/StatBucketReply.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
public class StatBucketReply extends DocumentReply {
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/SubsetServicePolicy.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/SubsetServicePolicy.java
index ee851acc0f8..72e88e6c0b9 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/SubsetServicePolicy.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/SubsetServicePolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.jrt.slobrok.api.Mirror;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/TestAndSetMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/TestAndSetMessage.java
index 280881308f7..5ca321ae00f 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/TestAndSetMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/TestAndSetMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.TestAndSetCondition;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/UpdateDocumentMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/UpdateDocumentMessage.java
index a9bd6852e42..214fe1637cd 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/UpdateDocumentMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/UpdateDocumentMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.DocumentUpdate;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/UpdateDocumentReply.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/UpdateDocumentReply.java
index 7c9b42b4f4c..ff853f95b1e 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/UpdateDocumentReply.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/UpdateDocumentReply.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
/**
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/VisitorInfoMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/VisitorInfoMessage.java
index 78ff076e1c1..84ceb84b280 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/VisitorInfoMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/VisitorInfoMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.BucketId;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/VisitorMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/VisitorMessage.java
index 17fd256c4f5..82223826f40 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/VisitorMessage.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/VisitorMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
public abstract class VisitorMessage extends DocumentMessage {
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/VisitorReply.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/VisitorReply.java
index 3d3a9f93252..c446631b744 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/VisitorReply.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/VisitorReply.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
public class VisitorReply extends WriteDocumentReply {
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/WriteDocumentReply.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/WriteDocumentReply.java
index a150afdd27b..7074243667f 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/WriteDocumentReply.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/WriteDocumentReply.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
/**
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/WrongDistributionReply.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/WrongDistributionReply.java
index bae78233df2..b3f5e4b0c1f 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/WrongDistributionReply.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/WrongDistributionReply.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
/**
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/package-info.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/package-info.java
index 1b1009863cf..9fdde6d99fe 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/package-info.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.documentapi.messagebus.protocol;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/systemstate/rule/Argument.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/systemstate/rule/Argument.java
index c8b8e80f905..17f6deae782 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/systemstate/rule/Argument.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/systemstate/rule/Argument.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.systemstate.rule;
/**
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/systemstate/rule/Location.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/systemstate/rule/Location.java
index bb5bc55778d..56d70623229 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/systemstate/rule/Location.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/systemstate/rule/Location.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.systemstate.rule;
import java.util.ArrayList;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/systemstate/rule/NodeState.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/systemstate/rule/NodeState.java
index 0102d6cba36..49e059fb72b 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/systemstate/rule/NodeState.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/systemstate/rule/NodeState.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.systemstate.rule;
import java.util.logging.Level;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/package-info.java b/documentapi/src/main/java/com/yahoo/documentapi/package-info.java
index 9c75a3f7f43..8060387ebf3 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/package-info.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.documentapi;
diff --git a/documentapi/src/main/javacc/StateParser.jj b/documentapi/src/main/javacc/StateParser.jj
index 659d06fa5a4..ad4371b026c 100755
--- a/documentapi/src/main/javacc/StateParser.jj
+++ b/documentapi/src/main/javacc/StateParser.jj
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* A system state parser.
* When this file is changed, do "ant compileparser" to rebuild the parser.
diff --git a/documentapi/src/main/resources/configdefinitions/document-protocol-policies.def b/documentapi/src/main/resources/configdefinitions/document-protocol-policies.def
index ace4f254821..0353acc253b 100644
--- a/documentapi/src/main/resources/configdefinitions/document-protocol-policies.def
+++ b/documentapi/src/main/resources/configdefinitions/document-protocol-policies.def
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=documentapi.messagebus.protocol
##
diff --git a/documentapi/src/main/resources/configdefinitions/documentrouteselectorpolicy.def b/documentapi/src/main/resources/configdefinitions/documentrouteselectorpolicy.def
index f6f4461d220..0ea42ec3838 100644
--- a/documentapi/src/main/resources/configdefinitions/documentrouteselectorpolicy.def
+++ b/documentapi/src/main/resources/configdefinitions/documentrouteselectorpolicy.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=documentapi.messagebus.protocol
# The name of the route.
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/VisitorDataQueueTest.java b/documentapi/src/test/java/com/yahoo/documentapi/VisitorDataQueueTest.java
index 93e7b2cf309..9f6cf86ea66 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/VisitorDataQueueTest.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/VisitorDataQueueTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.document.Document;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/VisitorIteratorTestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/VisitorIteratorTestCase.java
index f71b13191f9..01cdad244a8 100755
--- a/documentapi/src/test/java/com/yahoo/documentapi/VisitorIteratorTestCase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/VisitorIteratorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.document.select.parser.ParseException;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/VisitorParametersTestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/VisitorParametersTestCase.java
index 5941c2ac0e2..88e87a632d2 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/VisitorParametersTestCase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/VisitorParametersTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
import com.yahoo.document.fieldset.AllFields;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/local/LocalDocumentApiTestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/local/LocalDocumentApiTestCase.java
index 5fb1510f9c4..3a748ca173a 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/local/LocalDocumentApiTestCase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/local/LocalDocumentApiTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.local;
import com.yahoo.document.Document;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/loadtypes/test/LoadTypesTestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/loadtypes/test/LoadTypesTestCase.java
index 81dbb483366..73c343174d4 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/loadtypes/test/LoadTypesTestCase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/loadtypes/test/LoadTypesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.loadtypes.test;
import com.yahoo.documentapi.messagebus.loadtypes.LoadTypeSet;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancerTestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancerTestCase.java
index 582bd53d8e7..bc02912a216 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancerTestCase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.jrt.slobrok.api.Mirror;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/MessageSequencingTest.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/MessageSequencingTest.java
index 28abd7b0277..e4efbd1a398 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/MessageSequencingTest.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/MessageSequencingTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.document.BucketId;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/ReplyMergerTestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/ReplyMergerTestCase.java
index 11d74800a79..0fb8ae5c2be 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/ReplyMergerTestCase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/ReplyMergerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.collections.Tuple2;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepositoryTest.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepositoryTest.java
index 823eebd46c3..2bd7c965fdc 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepositoryTest.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyRepositoryTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import org.junit.Rule;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/TargetCachingSlobrokHostFetcherTest.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/TargetCachingSlobrokHostFetcherTest.java
index 52afcdfd77c..f2bdec5285f 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/TargetCachingSlobrokHostFetcherTest.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/TargetCachingSlobrokHostFetcherTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
import com.yahoo.jrt.slobrok.api.IMirror;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/ErrorCodesTest.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/ErrorCodesTest.java
index ad587032248..3b4fac60fcd 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/ErrorCodesTest.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/ErrorCodesTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol.test;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/Messages60TestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/Messages60TestCase.java
index d420d64f461..51fef9ac557 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/Messages60TestCase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/Messages60TestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol.test;
import com.yahoo.component.Version;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/MessagesTestBase.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/MessagesTestBase.java
index 9f6ed39f599..19f77ee1335 100755
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/MessagesTestBase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/MessagesTestBase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol.test;
import com.yahoo.component.Version;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyFactoryTestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyFactoryTestCase.java
index 3e5daa08bd3..9ee58f746a5 100755
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyFactoryTestCase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyFactoryTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol.test;
import com.yahoo.document.DocumentId;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestCase.java
index 0aa5000b22a..83f2fbcff5e 100755
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestCase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol.test;
import com.yahoo.document.Document;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestFrame.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestFrame.java
index 92e94256411..b2fce64f784 100755
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestFrame.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestFrame.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol.test;
import com.yahoo.document.DocumentTypeManager;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PriorityTestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PriorityTestCase.java
index 32b9785c7e7..29b2eefcc3a 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PriorityTestCase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PriorityTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol.test;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/RoutableFactoryTestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/RoutableFactoryTestCase.java
index d9fd307d9d9..cde6a7484ea 100755
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/RoutableFactoryTestCase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/RoutableFactoryTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol.test;
import com.yahoo.component.VersionSpecification;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/TestFileUtil.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/TestFileUtil.java
index 8bc6f56e574..258efe91c3b 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/TestFileUtil.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/TestFileUtil.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol.test;
import java.io.FileOutputStream;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/storagepolicy/BasicTests.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/storagepolicy/BasicTests.java
index 018697c0719..e70968bc0ca 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/storagepolicy/BasicTests.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/storagepolicy/BasicTests.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol.test.storagepolicy;
import com.yahoo.collections.Pair;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/storagepolicy/ContentPolicyTest.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/storagepolicy/ContentPolicyTest.java
index 5aa3994a757..42625cf193d 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/storagepolicy/ContentPolicyTest.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/storagepolicy/ContentPolicyTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol.test.storagepolicy;
import org.junit.Ignore;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/storagepolicy/ContentPolicyTestEnvironment.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/storagepolicy/ContentPolicyTestEnvironment.java
index 6d2477e1871..c75e1c7832e 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/storagepolicy/ContentPolicyTestEnvironment.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/storagepolicy/ContentPolicyTestEnvironment.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol.test.storagepolicy;
import com.yahoo.collections.Pair;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/storagepolicy/Simulator.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/storagepolicy/Simulator.java
index be880e69781..651a1c15c0b 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/storagepolicy/Simulator.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/storagepolicy/Simulator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol.test.storagepolicy;
import com.yahoo.document.BucketId;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/Destination.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/Destination.java
index ac2db526689..0670358f097 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/Destination.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/Destination.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.test;
import com.yahoo.document.DocumentRemove;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/MessageBusDocumentApiTestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/MessageBusDocumentApiTestCase.java
index 78e4e49b78d..2d9cc47ee2f 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/MessageBusDocumentApiTestCase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/MessageBusDocumentApiTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.test;
import com.yahoo.document.Document;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/MessageBusVisitorSessionTestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/MessageBusVisitorSessionTestCase.java
index 35e0c21f93f..53e2445af7e 100755
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/MessageBusVisitorSessionTestCase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/MessageBusVisitorSessionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.test;
import com.yahoo.document.BucketId;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/ScheduledEventQueueTestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/ScheduledEventQueueTestCase.java
index 93146721136..4abd1cc9fea 100755
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/ScheduledEventQueueTestCase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/ScheduledEventQueueTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.test;
import com.yahoo.documentapi.messagebus.ScheduledEventQueue;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/VisitorControlHandlerTest.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/VisitorControlHandlerTest.java
index c2717df8a3f..7b9172a1a3d 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/VisitorControlHandlerTest.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/VisitorControlHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.test;
import com.yahoo.documentapi.VisitorControlHandler;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/test/AbstractDocumentApiTestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/test/AbstractDocumentApiTestCase.java
index 79309907715..a004ad368e0 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/test/AbstractDocumentApiTestCase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/test/AbstractDocumentApiTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.test;
import com.yahoo.document.Document;
diff --git a/documentapi/src/tests/messagebus/CMakeLists.txt b/documentapi/src/tests/messagebus/CMakeLists.txt
index 86cc9bc6141..a6d709b61f0 100644
--- a/documentapi/src/tests/messagebus/CMakeLists.txt
+++ b/documentapi/src/tests/messagebus/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(documentapi_messagebus_test_app TEST
SOURCES
messagebus_test.cpp
diff --git a/documentapi/src/tests/messagebus/messagebus_test.cpp b/documentapi/src/tests/messagebus/messagebus_test.cpp
index 8f60bbc78e4..7dd47a0b93e 100644
--- a/documentapi/src/tests/messagebus/messagebus_test.cpp
+++ b/documentapi/src/tests/messagebus/messagebus_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/testdocrepo.h>
#include <vespa/document/datatype/documenttype.h>
diff --git a/documentapi/src/tests/messages/CMakeLists.txt b/documentapi/src/tests/messages/CMakeLists.txt
index 87f8d4d01cd..c51bb5ebf8f 100644
--- a/documentapi/src/tests/messages/CMakeLists.txt
+++ b/documentapi/src/tests/messages/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(documentapi_messages60_test_app TEST
SOURCES
testbase.cpp
diff --git a/documentapi/src/tests/messages/error_codes_test.cpp b/documentapi/src/tests/messages/error_codes_test.cpp
index abf8ca13f41..38f2776d7a0 100644
--- a/documentapi/src/tests/messages/error_codes_test.cpp
+++ b/documentapi/src/tests/messages/error_codes_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/tests/messages/messages60app.cpp b/documentapi/src/tests/messages/messages60app.cpp
index a6c626d5b20..25a75a9e9ef 100644
--- a/documentapi/src/tests/messages/messages60app.cpp
+++ b/documentapi/src/tests/messages/messages60app.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "messages60test.h"
diff --git a/documentapi/src/tests/messages/messages60test.cpp b/documentapi/src/tests/messages/messages60test.cpp
index 5d25002021b..aa5411c8a78 100644
--- a/documentapi/src/tests/messages/messages60test.cpp
+++ b/documentapi/src/tests/messages/messages60test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// @author Vegard Sjonfjell
#include "messages60test.h"
diff --git a/documentapi/src/tests/messages/messages60test.h b/documentapi/src/tests/messages/messages60test.h
index 87954310536..1eb3e8e248f 100644
--- a/documentapi/src/tests/messages/messages60test.h
+++ b/documentapi/src/tests/messages/messages60test.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// @author Vegard Sjonfjell
#pragma once
diff --git a/documentapi/src/tests/messages/testbase.cpp b/documentapi/src/tests/messages/testbase.cpp
index 967c9990800..343f7d0b0ae 100644
--- a/documentapi/src/tests/messages/testbase.cpp
+++ b/documentapi/src/tests/messages/testbase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "testbase.h"
#include <vespa/document/repo/documenttyperepo.h>
diff --git a/documentapi/src/tests/messages/testbase.h b/documentapi/src/tests/messages/testbase.h
index 89398552f63..bf384fc2fb9 100644
--- a/documentapi/src/tests/messages/testbase.h
+++ b/documentapi/src/tests/messages/testbase.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/tests/policies/CMakeLists.txt b/documentapi/src/tests/policies/CMakeLists.txt
index adc49fa24ad..9a92d60ebdd 100644
--- a/documentapi/src/tests/policies/CMakeLists.txt
+++ b/documentapi/src/tests/policies/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(documentapi_policies_test_app TEST
SOURCES
testframe.cpp
diff --git a/documentapi/src/tests/policies/policies_test.cpp b/documentapi/src/tests/policies/policies_test.cpp
index c80e1221eba..f17114d8cd7 100644
--- a/documentapi/src/tests/policies/policies_test.cpp
+++ b/documentapi/src/tests/policies/policies_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "testframe.h"
#include <vespa/documentapi/documentapi.h>
diff --git a/documentapi/src/tests/policies/testframe.cpp b/documentapi/src/tests/policies/testframe.cpp
index 16ee97ce7f4..cb33ddd649b 100644
--- a/documentapi/src/tests/policies/testframe.cpp
+++ b/documentapi/src/tests/policies/testframe.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "testframe.h"
#include <vespa/messagebus/emptyreply.h>
diff --git a/documentapi/src/tests/policies/testframe.h b/documentapi/src/tests/policies/testframe.h
index 41f953922f9..7cb3b830627 100644
--- a/documentapi/src/tests/policies/testframe.h
+++ b/documentapi/src/tests/policies/testframe.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/tests/policyfactory/CMakeLists.txt b/documentapi/src/tests/policyfactory/CMakeLists.txt
index 35b4007e022..d660ea88ebc 100644
--- a/documentapi/src/tests/policyfactory/CMakeLists.txt
+++ b/documentapi/src/tests/policyfactory/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(documentapi_policyfactory_test_app TEST
SOURCES
policyfactory.cpp
diff --git a/documentapi/src/tests/policyfactory/policyfactory.cpp b/documentapi/src/tests/policyfactory/policyfactory.cpp
index 8c38e93e659..e28c27c3da1 100644
--- a/documentapi/src/tests/policyfactory/policyfactory.cpp
+++ b/documentapi/src/tests/policyfactory/policyfactory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/documentapi/messagebus/iroutingpolicyfactory.h>
#include <vespa/document/repo/documenttyperepo.h>
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/tests/priority/CMakeLists.txt b/documentapi/src/tests/priority/CMakeLists.txt
index 007cb7b65d5..79b2c768601 100644
--- a/documentapi/src/tests/priority/CMakeLists.txt
+++ b/documentapi/src/tests/priority/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(documentapi_priority_test_app TEST
SOURCES
priority.cpp
diff --git a/documentapi/src/tests/priority/priority.cpp b/documentapi/src/tests/priority/priority.cpp
index bc255215813..359b320c0dd 100644
--- a/documentapi/src/tests/priority/priority.cpp
+++ b/documentapi/src/tests/priority/priority.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/documentapi/messagebus/priority.h>
diff --git a/documentapi/src/tests/replymerger/CMakeLists.txt b/documentapi/src/tests/replymerger/CMakeLists.txt
index 73a52d4fd67..889823588d3 100644
--- a/documentapi/src/tests/replymerger/CMakeLists.txt
+++ b/documentapi/src/tests/replymerger/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(documentapi_replymerger_test_app TEST
SOURCES
replymerger_test.cpp
diff --git a/documentapi/src/tests/replymerger/replymerger_test.cpp b/documentapi/src/tests/replymerger/replymerger_test.cpp
index f74ad23da1d..9d0a3d346db 100644
--- a/documentapi/src/tests/replymerger/replymerger_test.cpp
+++ b/documentapi/src/tests/replymerger/replymerger_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <iostream>
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/documentapi/src/tests/routablefactory/CMakeLists.txt b/documentapi/src/tests/routablefactory/CMakeLists.txt
index 54cdcb19819..d66bb371fb2 100644
--- a/documentapi/src/tests/routablefactory/CMakeLists.txt
+++ b/documentapi/src/tests/routablefactory/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(documentapi_routablefactory_test_app TEST
SOURCES
routablefactory.cpp
diff --git a/documentapi/src/tests/routablefactory/routablefactory.cpp b/documentapi/src/tests/routablefactory/routablefactory.cpp
index 92e982b2be4..a1b0050efd8 100644
--- a/documentapi/src/tests/routablefactory/routablefactory.cpp
+++ b/documentapi/src/tests/routablefactory/routablefactory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/repo/documenttyperepo.h>
#include <vespa/documentapi/messagebus/documentprotocol.h>
#include <vespa/documentapi/messagebus/routablefactories60.h>
diff --git a/documentapi/src/vespa/documentapi/CMakeLists.txt b/documentapi/src/vespa/documentapi/CMakeLists.txt
index 3011259f856..a108e87d3d2 100644
--- a/documentapi/src/vespa/documentapi/CMakeLists.txt
+++ b/documentapi/src/vespa/documentapi/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(documentapi
SOURCES
$<TARGET_OBJECTS:documentapi_documentapimessagebus>
diff --git a/documentapi/src/vespa/documentapi/common.h b/documentapi/src/vespa/documentapi/common.h
index 86652b10dca..dfc29f48317 100644
--- a/documentapi/src/vespa/documentapi/common.h
+++ b/documentapi/src/vespa/documentapi/common.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/documentapi/src/vespa/documentapi/documentapi.h b/documentapi/src/vespa/documentapi/documentapi.h
index 0056dd2abdf..311199c94cd 100644
--- a/documentapi/src/vespa/documentapi/documentapi.h
+++ b/documentapi/src/vespa/documentapi/documentapi.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/documentapi/messagebus/messages/getbucketstatemessage.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/CMakeLists.txt b/documentapi/src/vespa/documentapi/messagebus/CMakeLists.txt
index 13852c7b1d7..87c8ba9c6ab 100644
--- a/documentapi/src/vespa/documentapi/messagebus/CMakeLists.txt
+++ b/documentapi/src/vespa/documentapi/messagebus/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(documentapi_documentapimessagebus OBJECT
SOURCES
documentprotocol.cpp
diff --git a/documentapi/src/vespa/documentapi/messagebus/documentprotocol.cpp b/documentapi/src/vespa/documentapi/messagebus/documentprotocol.cpp
index 0f86eb38aca..d5eef700a15 100644
--- a/documentapi/src/vespa/documentapi/messagebus/documentprotocol.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/documentprotocol.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "routablefactories60.h"
#include "routingpolicyfactories.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/documentprotocol.h b/documentapi/src/vespa/documentapi/messagebus/documentprotocol.h
index f35c6dd0810..ffbb63e54f1 100644
--- a/documentapi/src/vespa/documentapi/messagebus/documentprotocol.h
+++ b/documentapi/src/vespa/documentapi/messagebus/documentprotocol.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/messagebus/errorcode.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/iroutablefactory.h b/documentapi/src/vespa/documentapi/messagebus/iroutablefactory.h
index 9a41960b852..d7e60882539 100644
--- a/documentapi/src/vespa/documentapi/messagebus/iroutablefactory.h
+++ b/documentapi/src/vespa/documentapi/messagebus/iroutablefactory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/util/bytebuffer.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/iroutingpolicyfactory.h b/documentapi/src/vespa/documentapi/messagebus/iroutingpolicyfactory.h
index fe31b4d8b58..77e5ad7c33b 100644
--- a/documentapi/src/vespa/documentapi/messagebus/iroutingpolicyfactory.h
+++ b/documentapi/src/vespa/documentapi/messagebus/iroutingpolicyfactory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/messagebus/routing/iroutingpolicy.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/CMakeLists.txt b/documentapi/src/vespa/documentapi/messagebus/messages/CMakeLists.txt
index 7bd18a14719..ddbe66fc22a 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/CMakeLists.txt
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(documentapi_documentapimessages OBJECT
SOURCES
documentignoredreply.cpp
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/documentacceptedreply.h b/documentapi/src/vespa/documentapi/messagebus/messages/documentacceptedreply.h
index a4b7c509cce..ec8a6f9b1f1 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/documentacceptedreply.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/documentacceptedreply.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentreply.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/documentignoredreply.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/documentignoredreply.cpp
index cd1febbf301..2189bba2d31 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/documentignoredreply.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/documentignoredreply.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentignoredreply.h"
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/documentignoredreply.h b/documentapi/src/vespa/documentapi/messagebus/messages/documentignoredreply.h
index 98921d652e0..a97f49abe99 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/documentignoredreply.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/documentignoredreply.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentreply.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/documentmessage.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/documentmessage.cpp
index 2bd832a5855..1185226c4eb 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/documentmessage.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/documentmessage.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentmessage.h"
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/documentmessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/documentmessage.h
index d2b8f74f716..71ca7b049de 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/documentmessage.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/documentmessage.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentreply.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/documentreply.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/documentreply.cpp
index d16f5d5cd66..0921e59133a 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/documentreply.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/documentreply.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentreply.h"
#include <vespa/documentapi/messagebus/priority.h>
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/documentreply.h b/documentapi/src/vespa/documentapi/messagebus/messages/documentreply.h
index 136c4983516..0b137ba7fbc 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/documentreply.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/documentreply.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/messagebus/reply.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/documentstate.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/documentstate.cpp
index 6c8394b1b4c..dcaf9eeaac5 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/documentstate.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/documentstate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentstate.h"
#include <vespa/document/util/bytebuffer.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/documentstate.h b/documentapi/src/vespa/documentapi/messagebus/messages/documentstate.h
index 9b8443551d6..1e9c11a49e7 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/documentstate.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/documentstate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/documentsummarymessage.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/documentsummarymessage.cpp
index 44b1086289d..6be241b2e1d 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/documentsummarymessage.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/documentsummarymessage.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentsummarymessage.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/documentsummarymessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/documentsummarymessage.h
index cb7270dd246..b978bc51248 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/documentsummarymessage.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/documentsummarymessage.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "visitor.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/emptybucketsmessage.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/emptybucketsmessage.cpp
index 8429d0e54ac..8689142fb57 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/emptybucketsmessage.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/emptybucketsmessage.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "emptybucketsmessage.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/emptybucketsmessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/emptybucketsmessage.h
index e6ba19e41a1..31640c58db6 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/emptybucketsmessage.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/emptybucketsmessage.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "visitor.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/feedanswer.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/feedanswer.cpp
index 224511ec9fd..954e0af1692 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/feedanswer.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/feedanswer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "feedanswer.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/feedanswer.h b/documentapi/src/vespa/documentapi/messagebus/messages/feedanswer.h
index e9bab0d22a8..5bab2554467 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/feedanswer.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/feedanswer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/documentapi/common.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/feedmessage.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/feedmessage.cpp
index 68d050c6286..2f0b2c9d1a7 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/feedmessage.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/feedmessage.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "feedmessage.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/feedmessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/feedmessage.h
index 3ced38f793f..0cf4ae0f412 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/feedmessage.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/feedmessage.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentmessage.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/feedreply.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/feedreply.cpp
index e44fd5867ca..28a492f594d 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/feedreply.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/feedreply.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "feedreply.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/feedreply.h b/documentapi/src/vespa/documentapi/messagebus/messages/feedreply.h
index 6bcdc4a7258..ec2fccd65a0 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/feedreply.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/feedreply.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentreply.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/getbucketlistmessage.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/getbucketlistmessage.cpp
index 02b94bc8426..ba300102f78 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/getbucketlistmessage.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/getbucketlistmessage.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "getbucketlistmessage.h"
#include "getbucketlistreply.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/getbucketlistmessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/getbucketlistmessage.h
index e89020bcf37..44140c4ac19 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/getbucketlistmessage.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/getbucketlistmessage.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentmessage.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/getbucketlistreply.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/getbucketlistreply.cpp
index e144158e0ef..cbac3e2c4d0 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/getbucketlistreply.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/getbucketlistreply.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "getbucketlistreply.h"
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/getbucketlistreply.h b/documentapi/src/vespa/documentapi/messagebus/messages/getbucketlistreply.h
index 3ded7f7d08b..4b8b8179857 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/getbucketlistreply.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/getbucketlistreply.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentreply.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/getbucketstatemessage.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/getbucketstatemessage.cpp
index 7f1f186ad25..42567ef3f83 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/getbucketstatemessage.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/getbucketstatemessage.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "getbucketstatemessage.h"
#include "getbucketstatereply.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/getbucketstatemessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/getbucketstatemessage.h
index 21572e2925c..2dea4416e19 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/getbucketstatemessage.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/getbucketstatemessage.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentmessage.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/getbucketstatereply.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/getbucketstatereply.cpp
index 65d7d7cf9cf..eeaec2c0fc6 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/getbucketstatereply.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/getbucketstatereply.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "getbucketstatereply.h"
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/getbucketstatereply.h b/documentapi/src/vespa/documentapi/messagebus/messages/getbucketstatereply.h
index 0dfc40b2ed8..5c07c3c9327 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/getbucketstatereply.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/getbucketstatereply.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentreply.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentmessage.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentmessage.cpp
index acc3e61843e..8e7eae2a9c8 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentmessage.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentmessage.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "getdocumentmessage.h"
#include "getdocumentreply.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentmessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentmessage.h
index d157b68c4ed..497bde947bc 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentmessage.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentmessage.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentmessage.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentreply.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentreply.cpp
index c7422a529a3..450f3bd23c9 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentreply.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentreply.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "getdocumentreply.h"
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentreply.h b/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentreply.h
index 2cff36325ab..06558e2bbf4 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentreply.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/getdocumentreply.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentacceptedreply.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.cpp
index 2dcaccbd861..bfa87148039 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "putdocumentmessage.h"
#include "writedocumentreply.h"
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.h
index f86e594dfa4..5a7f8acb60a 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "testandsetmessage.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/queryresultmessage.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/queryresultmessage.cpp
index 08d631dc44b..f79b552a89d 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/queryresultmessage.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/queryresultmessage.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "queryresultmessage.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/queryresultmessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/queryresultmessage.h
index 6324e2664e4..3c316df50fe 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/queryresultmessage.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/queryresultmessage.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "visitor.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/removedocumentmessage.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/removedocumentmessage.cpp
index a0ab51066d8..54c53a938ed 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/removedocumentmessage.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/removedocumentmessage.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "removedocumentmessage.h"
#include "removedocumentreply.h"
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/removedocumentmessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/removedocumentmessage.h
index 137f2821b53..1d6760beeae 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/removedocumentmessage.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/removedocumentmessage.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "testandsetmessage.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/removedocumentreply.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/removedocumentreply.cpp
index 74ea2931630..ef41d7c6991 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/removedocumentreply.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/removedocumentreply.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "removedocumentreply.h"
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/removedocumentreply.h b/documentapi/src/vespa/documentapi/messagebus/messages/removedocumentreply.h
index 7193ec70880..6e831b5f53e 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/removedocumentreply.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/removedocumentreply.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "writedocumentreply.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.cpp
index a8ecef79fae..05f16639eda 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "removelocationmessage.h"
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.h
index e0fab5e9ae5..e9c50ac5d7a 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentmessage.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/searchresultmessage.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/searchresultmessage.cpp
index e7b31096bbe..b71adec745a 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/searchresultmessage.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/searchresultmessage.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "searchresultmessage.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/searchresultmessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/searchresultmessage.h
index 16fc1215662..ad8a4cb6e7d 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/searchresultmessage.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/searchresultmessage.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "visitor.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/statbucketmessage.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/statbucketmessage.cpp
index 0bd037b6386..9c59a13c29f 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/statbucketmessage.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/statbucketmessage.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "statbucketmessage.h"
#include "statbucketreply.h"
#include <vespa/document/bucket/fixed_bucket_spaces.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/statbucketmessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/statbucketmessage.h
index 5233205da4a..ca117927d7b 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/statbucketmessage.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/statbucketmessage.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentmessage.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/statbucketreply.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/statbucketreply.cpp
index 4b8c2e4f8a8..1e105e22d34 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/statbucketreply.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/statbucketreply.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "statbucketreply.h"
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/statbucketreply.h b/documentapi/src/vespa/documentapi/messagebus/messages/statbucketreply.h
index 8c9750047ae..f0cad048c72 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/statbucketreply.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/statbucketreply.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentreply.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/testandsetcondition.h b/documentapi/src/vespa/documentapi/messagebus/messages/testandsetcondition.h
index 1af0178702d..4ed291ecd68 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/testandsetcondition.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/testandsetcondition.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// @author Vegard Sjonfjell
#pragma once
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/testandsetmessage.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/testandsetmessage.cpp
index 2c6a0d08032..b8fad258f4a 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/testandsetmessage.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/testandsetmessage.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "testandsetmessage.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/testandsetmessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/testandsetmessage.h
index 2e623121c85..24ebcb2512b 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/testandsetmessage.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/testandsetmessage.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// @author Vegard Sjonfjell
#pragma once
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentmessage.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentmessage.cpp
index db5dafce271..95b5920445c 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentmessage.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentmessage.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "updatedocumentmessage.h"
#include "updatedocumentreply.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentmessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentmessage.h
index 55cb22e05e0..dfbd44d7657 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentmessage.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentmessage.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "testandsetmessage.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentreply.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentreply.cpp
index d65bbc4a619..e98867449af 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentreply.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentreply.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "updatedocumentreply.h"
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentreply.h b/documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentreply.h
index cb023cc9303..64f34e43519 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentreply.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/updatedocumentreply.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "writedocumentreply.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp
index 26e5344df2d..534a4c62efc 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/visitor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "visitor.h"
#include <vespa/document/bucket/fixed_bucket_spaces.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/visitor.h b/documentapi/src/vespa/documentapi/messagebus/messages/visitor.h
index f47fa48bd80..48fece57064 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/visitor.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/visitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/writedocumentreply.h b/documentapi/src/vespa/documentapi/messagebus/messages/writedocumentreply.h
index 678fd24333d..84c8960863a 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/writedocumentreply.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/writedocumentreply.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentacceptedreply.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/wrongdistributionreply.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/wrongdistributionreply.cpp
index 7dd5c377c5a..5c7602debbb 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/wrongdistributionreply.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/wrongdistributionreply.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "wrongdistributionreply.h"
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/wrongdistributionreply.h b/documentapi/src/vespa/documentapi/messagebus/messages/wrongdistributionreply.h
index c378d3dbf7a..36a48ba1cca 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/wrongdistributionreply.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/wrongdistributionreply.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentreply.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/CMakeLists.txt b/documentapi/src/vespa/documentapi/messagebus/policies/CMakeLists.txt
index 82865ea5996..1500403d463 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/CMakeLists.txt
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(documentapi_documentapipolicies OBJECT
SOURCES
andpolicy.cpp
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/andpolicy.cpp b/documentapi/src/vespa/documentapi/messagebus/policies/andpolicy.cpp
index 0683c0179cc..bad15282aeb 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/andpolicy.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/andpolicy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "andpolicy.h"
#include <vespa/messagebus/routing/routingcontext.h>
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/andpolicy.h b/documentapi/src/vespa/documentapi/messagebus/policies/andpolicy.h
index 2858fc28807..cba2770800b 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/andpolicy.h
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/andpolicy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/messagebus/routing/hop.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/asyncinitializationpolicy.cpp b/documentapi/src/vespa/documentapi/messagebus/policies/asyncinitializationpolicy.cpp
index 21b09f32419..ea3889bfd5e 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/asyncinitializationpolicy.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/asyncinitializationpolicy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* File: AsyncInitializationPolicy.cpp
* Author: thomasg
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/asyncinitializationpolicy.h b/documentapi/src/vespa/documentapi/messagebus/policies/asyncinitializationpolicy.h
index 3061eb3d337..fe1585eb624 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/asyncinitializationpolicy.h
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/asyncinitializationpolicy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/messagebus/routing/iroutingpolicy.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/contentpolicy.cpp b/documentapi/src/vespa/documentapi/messagebus/policies/contentpolicy.cpp
index 7150794653f..9872663ca7b 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/contentpolicy.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/contentpolicy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "contentpolicy.h"
#include <vespa/document/base/documentid.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/contentpolicy.h b/documentapi/src/vespa/documentapi/messagebus/policies/contentpolicy.h
index e29fbb75524..ac9c58bf276 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/contentpolicy.h
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/contentpolicy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "externslobrokpolicy.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/documentrouteselectorpolicy.cpp b/documentapi/src/vespa/documentapi/messagebus/policies/documentrouteselectorpolicy.cpp
index 01245843e3b..dc55bd7a8b6 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/documentrouteselectorpolicy.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/documentrouteselectorpolicy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentrouteselectorpolicy.h"
#include <vespa/document/bucket/bucketidfactory.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/documentrouteselectorpolicy.h b/documentapi/src/vespa/documentapi/messagebus/policies/documentrouteselectorpolicy.h
index 02e8e4ff282..43b28e7d35f 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/documentrouteselectorpolicy.h
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/documentrouteselectorpolicy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/documentapi/messagebus/policies/config-documentrouteselectorpolicy.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/errorpolicy.cpp b/documentapi/src/vespa/documentapi/messagebus/policies/errorpolicy.cpp
index 7b87e7df834..d375ca850b6 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/errorpolicy.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/errorpolicy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "errorpolicy.h"
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/errorpolicy.h b/documentapi/src/vespa/documentapi/messagebus/policies/errorpolicy.h
index ab63cfa47a3..d167ce0b961 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/errorpolicy.h
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/errorpolicy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/documentapi/common.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/externpolicy.cpp b/documentapi/src/vespa/documentapi/messagebus/policies/externpolicy.cpp
index 312cd2d89cb..ef1d795bec4 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/externpolicy.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/externpolicy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "externpolicy.h"
#include <boost/tokenizer.hpp>
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/externpolicy.h b/documentapi/src/vespa/documentapi/messagebus/policies/externpolicy.h
index cb0c4428e60..3bc229c4087 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/externpolicy.h
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/externpolicy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/messagebus/routing/hop.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/externslobrokpolicy.cpp b/documentapi/src/vespa/documentapi/messagebus/policies/externslobrokpolicy.cpp
index f760d5ae2b4..298df88f75c 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/externslobrokpolicy.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/externslobrokpolicy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "externslobrokpolicy.h"
#include <vespa/messagebus/routing/routingcontext.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/externslobrokpolicy.h b/documentapi/src/vespa/documentapi/messagebus/policies/externslobrokpolicy.h
index 865709daf7f..aaf009e5eda 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/externslobrokpolicy.h
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/externslobrokpolicy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "asyncinitializationpolicy.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/loadbalancer.cpp b/documentapi/src/vespa/documentapi/messagebus/policies/loadbalancer.cpp
index b3bf31a5c70..75a0e4d966c 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/loadbalancer.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/loadbalancer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "loadbalancer.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/loadbalancer.h b/documentapi/src/vespa/documentapi/messagebus/policies/loadbalancer.h
index e44e5260bea..19975bd9465 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/loadbalancer.h
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/loadbalancer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/documentapi/common.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/loadbalancerpolicy.cpp b/documentapi/src/vespa/documentapi/messagebus/policies/loadbalancerpolicy.cpp
index feee7db8640..473d04ea7d9 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/loadbalancerpolicy.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/loadbalancerpolicy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "loadbalancerpolicy.h"
#include <vespa/messagebus/emptyreply.h>
#include <vespa/messagebus/errorcode.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/loadbalancerpolicy.h b/documentapi/src/vespa/documentapi/messagebus/policies/loadbalancerpolicy.h
index 9326708013c..4257337cd9c 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/loadbalancerpolicy.h
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/loadbalancerpolicy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "loadbalancer.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/localservicepolicy.cpp b/documentapi/src/vespa/documentapi/messagebus/policies/localservicepolicy.cpp
index 9b23d593e82..95ac966ea67 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/localservicepolicy.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/localservicepolicy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "localservicepolicy.h"
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/localservicepolicy.h b/documentapi/src/vespa/documentapi/messagebus/policies/localservicepolicy.h
index c188c9f5c4b..e973b05dcfc 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/localservicepolicy.h
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/localservicepolicy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/documentapi/common.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/messagetypepolicy.cpp b/documentapi/src/vespa/documentapi/messagebus/policies/messagetypepolicy.cpp
index dbaa5611033..9c5d978546b 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/messagetypepolicy.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/messagetypepolicy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "messagetypepolicy.h"
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/messagetypepolicy.h b/documentapi/src/vespa/documentapi/messagebus/policies/messagetypepolicy.h
index 136dbced3ec..6b6ff78b810 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/messagetypepolicy.h
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/messagetypepolicy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/messagebus/routing/iroutingpolicy.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/roundrobinpolicy.cpp b/documentapi/src/vespa/documentapi/messagebus/policies/roundrobinpolicy.cpp
index e780806c8c0..1bc562103cd 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/roundrobinpolicy.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/roundrobinpolicy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "roundrobinpolicy.h"
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/roundrobinpolicy.h b/documentapi/src/vespa/documentapi/messagebus/policies/roundrobinpolicy.h
index 98e61fd1a1c..5de97e93a0b 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/roundrobinpolicy.h
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/roundrobinpolicy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/documentapi/common.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/subsetservicepolicy.cpp b/documentapi/src/vespa/documentapi/messagebus/policies/subsetservicepolicy.cpp
index 375cdc23ba2..373ebcf36cd 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/subsetservicepolicy.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/subsetservicepolicy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "subsetservicepolicy.h"
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/subsetservicepolicy.h b/documentapi/src/vespa/documentapi/messagebus/policies/subsetservicepolicy.h
index a6c2e0d6cae..c0ebe0e717c 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/subsetservicepolicy.h
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/subsetservicepolicy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/documentapi/common.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/priority.h b/documentapi/src/vespa/documentapi/messagebus/priority.h
index f763492c10d..bd04a982e94 100644
--- a/documentapi/src/vespa/documentapi/messagebus/priority.h
+++ b/documentapi/src/vespa/documentapi/messagebus/priority.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/documentapi/common.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/replymerger.cpp b/documentapi/src/vespa/documentapi/messagebus/replymerger.cpp
index 4bcf2619031..c6f0c9389cb 100644
--- a/documentapi/src/vespa/documentapi/messagebus/replymerger.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/replymerger.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "replymerger.h"
#include "documentprotocol.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/replymerger.h b/documentapi/src/vespa/documentapi/messagebus/replymerger.h
index b14bf6a5f73..91324c968bc 100644
--- a/documentapi/src/vespa/documentapi/messagebus/replymerger.h
+++ b/documentapi/src/vespa/documentapi/messagebus/replymerger.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/messagebus/reply.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp b/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp
index 8202e938bde..6d93a619e19 100644
--- a/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// @author Vegard Sjonfjell
#include "routablefactories60.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/routablefactories60.h b/documentapi/src/vespa/documentapi/messagebus/routablefactories60.h
index 7e8156ee071..b618d92a145 100644
--- a/documentapi/src/vespa/documentapi/messagebus/routablefactories60.h
+++ b/documentapi/src/vespa/documentapi/messagebus/routablefactories60.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// @author Vegard Sjonfjell
#pragma once
diff --git a/documentapi/src/vespa/documentapi/messagebus/routablerepository.cpp b/documentapi/src/vespa/documentapi/messagebus/routablerepository.cpp
index 60cdbb3a5e8..57eb871d425 100644
--- a/documentapi/src/vespa/documentapi/messagebus/routablerepository.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/routablerepository.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "routablerepository.h"
#include <vespa/document/util/stringutil.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/routablerepository.h b/documentapi/src/vespa/documentapi/messagebus/routablerepository.h
index 1b043e2b6f8..255f6abd180 100644
--- a/documentapi/src/vespa/documentapi/messagebus/routablerepository.h
+++ b/documentapi/src/vespa/documentapi/messagebus/routablerepository.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "iroutablefactory.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/routingpolicyfactories.cpp b/documentapi/src/vespa/documentapi/messagebus/routingpolicyfactories.cpp
index f945fe8cd02..ab43da5816c 100644
--- a/documentapi/src/vespa/documentapi/messagebus/routingpolicyfactories.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/routingpolicyfactories.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "routingpolicyfactories.h"
#include <vespa/documentapi/messagebus/policies/andpolicy.h>
#include <vespa/documentapi/messagebus/policies/contentpolicy.h>
diff --git a/documentapi/src/vespa/documentapi/messagebus/routingpolicyfactories.h b/documentapi/src/vespa/documentapi/messagebus/routingpolicyfactories.h
index 533ad93e644..7392ec6e133 100644
--- a/documentapi/src/vespa/documentapi/messagebus/routingpolicyfactories.h
+++ b/documentapi/src/vespa/documentapi/messagebus/routingpolicyfactories.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "iroutingpolicyfactory.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/routingpolicyrepository.cpp b/documentapi/src/vespa/documentapi/messagebus/routingpolicyrepository.cpp
index c21d8e97880..625527c795c 100644
--- a/documentapi/src/vespa/documentapi/messagebus/routingpolicyrepository.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/routingpolicyrepository.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "routingpolicyrepository.h"
diff --git a/documentapi/src/vespa/documentapi/messagebus/routingpolicyrepository.h b/documentapi/src/vespa/documentapi/messagebus/routingpolicyrepository.h
index beeb176c88b..a57de3bfc40 100644
--- a/documentapi/src/vespa/documentapi/messagebus/routingpolicyrepository.h
+++ b/documentapi/src/vespa/documentapi/messagebus/routingpolicyrepository.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "iroutingpolicyfactory.h"
diff --git a/documentgen-test/etc/complex/book.sd b/documentgen-test/etc/complex/book.sd
index dd6ccafeab5..96e76c1e2b4 100644
--- a/documentgen-test/etc/complex/book.sd
+++ b/documentgen-test/etc/complex/book.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search book {
document book inherits common {
struct ss0 {
diff --git a/documentgen-test/etc/complex/class.sd b/documentgen-test/etc/complex/class.sd
index 9aa22028ff2..3395bb0dca4 100644
--- a/documentgen-test/etc/complex/class.sd
+++ b/documentgen-test/etc/complex/class.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search class {
document {
field classf type string {
diff --git a/documentgen-test/etc/complex/common.sd b/documentgen-test/etc/complex/common.sd
index fb49c8b0e52..a5d07c455b8 100644
--- a/documentgen-test/etc/complex/common.sd
+++ b/documentgen-test/etc/complex/common.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search common {
document common {
field uri type string {
diff --git a/documentgen-test/etc/complex/common2.sd b/documentgen-test/etc/complex/common2.sd
index e32d3ed6751..65984ed8658 100644
--- a/documentgen-test/etc/complex/common2.sd
+++ b/documentgen-test/etc/complex/common2.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search common2 {
document {
field com2 type string {
diff --git a/documentgen-test/etc/complex/music.sd b/documentgen-test/etc/complex/music.sd
index 1eb3939f4eb..e91adeed039 100644
--- a/documentgen-test/etc/complex/music.sd
+++ b/documentgen-test/etc/complex/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music inherits common {
field artist type string {
diff --git a/documentgen-test/etc/complex/music2.sd b/documentgen-test/etc/complex/music2.sd
index 4cc9db0651e..2dc659d5a1e 100644
--- a/documentgen-test/etc/complex/music2.sd
+++ b/documentgen-test/etc/complex/music2.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music2 {
document music2 inherits common {
field artist type string {
diff --git a/documentgen-test/etc/complex/music3.sd b/documentgen-test/etc/complex/music3.sd
index 65f37029d04..9f82bbf31bb 100644
--- a/documentgen-test/etc/complex/music3.sd
+++ b/documentgen-test/etc/complex/music3.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music3 {
document music3 inherits music2, common2 {
field mu3 type string {
diff --git a/documentgen-test/etc/complex/music4.sd b/documentgen-test/etc/complex/music4.sd
index 5c41e1af4fe..24fce47ca06 100644
--- a/documentgen-test/etc/complex/music4.sd
+++ b/documentgen-test/etc/complex/music4.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music4 {
document music4 inherits music3 {
field mu4 type string {
diff --git a/documentgen-test/etc/complex/parent.sd b/documentgen-test/etc/complex/parent.sd
index 50b8e76cf5a..3a8dd88aea3 100644
--- a/documentgen-test/etc/complex/parent.sd
+++ b/documentgen-test/etc/complex/parent.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# This type represents a target for a parent-child reference in the `book` type.
search parent {
diff --git a/documentgen-test/etc/complex/video.sd b/documentgen-test/etc/complex/video.sd
index 0749daa01aa..f49ea910128 100644
--- a/documentgen-test/etc/complex/video.sd
+++ b/documentgen-test/etc/complex/video.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search video {
document video inherits common {
field director type string {
diff --git a/documentgen-test/pom.xml b/documentgen-test/pom.xml
index 72fbe1682a7..59a1adf7692 100644
--- a/documentgen-test/pom.xml
+++ b/documentgen-test/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -124,4 +124,11 @@
</plugin>
</plugins>
</build>
+
+ <properties>
+ <maven.javadoc.skip>true</maven.javadoc.skip>
+ <maven.deploy.skip>true</maven.deploy.skip>
+ <skipNexusStagingDeployMojo>true</skipNexusStagingDeployMojo>
+ </properties>
+
</project>
diff --git a/documentgen-test/src/main/java/com/yahoo/vespa/document/NodeImpl.java b/documentgen-test/src/main/java/com/yahoo/vespa/document/NodeImpl.java
index 45da1e85795..4782a3d6875 100644
--- a/documentgen-test/src/main/java/com/yahoo/vespa/document/NodeImpl.java
+++ b/documentgen-test/src/main/java/com/yahoo/vespa/document/NodeImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.document;
import com.yahoo.document.annotation.Annotation;
diff --git a/documentgen-test/src/main/java/com/yahoo/vespa/document/dom/DocumentImpl.java b/documentgen-test/src/main/java/com/yahoo/vespa/document/dom/DocumentImpl.java
index 1a1548b93d5..5bc4f9af884 100644
--- a/documentgen-test/src/main/java/com/yahoo/vespa/document/dom/DocumentImpl.java
+++ b/documentgen-test/src/main/java/com/yahoo/vespa/document/dom/DocumentImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.document.dom;
import com.yahoo.document.annotation.Annotation;
diff --git a/documentgen-test/src/test/java/com/yahoo/vespa/config/DocumentGenPluginTest.java b/documentgen-test/src/test/java/com/yahoo/vespa/config/DocumentGenPluginTest.java
index e4cddf0a606..c0a480f548c 100644
--- a/documentgen-test/src/test/java/com/yahoo/vespa/config/DocumentGenPluginTest.java
+++ b/documentgen-test/src/test/java/com/yahoo/vespa/config/DocumentGenPluginTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config;
import com.yahoo.compress.CompressionType;
diff --git a/eval/CMakeLists.txt b/eval/CMakeLists.txt
index d5a0b2a14ae..99c7e9c68b8 100644
--- a/eval/CMakeLists.txt
+++ b/eval/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
vespalib
@@ -12,12 +12,15 @@ vespa_define_module(
TESTS
src/tests/ann
+ src/tests/apps/eval_expr
+ src/tests/eval/addr_to_symbol
src/tests/eval/aggr
src/tests/eval/array_array_map
src/tests/eval/cell_type_space
src/tests/eval/compile_cache
src/tests/eval/compiled_function
src/tests/eval/fast_value
+ src/tests/eval/feature_name_extractor
src/tests/eval/function
src/tests/eval/function_speed
src/tests/eval/gbdt
@@ -42,7 +45,9 @@ vespa_define_module(
src/tests/eval/value_type
src/tests/gp/ponder_nov2017
src/tests/instruction/add_trivial_dimension_optimizer
+ src/tests/instruction/best_similarity_function
src/tests/instruction/dense_dot_product_function
+ src/tests/instruction/dense_hamming_distance
src/tests/instruction/dense_inplace_join_function
src/tests/instruction/dense_matmul_function
src/tests/instruction/dense_multi_matmul_function
diff --git a/eval/src/apps/analyze_onnx_model/CMakeLists.txt b/eval/src/apps/analyze_onnx_model/CMakeLists.txt
index 47cbb6504f4..e2ed64cd8cc 100644
--- a/eval/src/apps/analyze_onnx_model/CMakeLists.txt
+++ b/eval/src/apps/analyze_onnx_model/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespa-analyze-onnx-model
SOURCES
analyze_onnx_model.cpp
diff --git a/eval/src/apps/analyze_onnx_model/analyze_onnx_model.cpp b/eval/src/apps/analyze_onnx_model/analyze_onnx_model.cpp
index ce7070d6b2b..ecf38f6772b 100644
--- a/eval/src/apps/analyze_onnx_model/analyze_onnx_model.cpp
+++ b/eval/src/apps/analyze_onnx_model/analyze_onnx_model.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/onnx/onnx_wrapper.h>
#include <vespa/eval/eval/tensor_spec.h>
diff --git a/eval/src/apps/eval_expr/CMakeLists.txt b/eval/src/apps/eval_expr/CMakeLists.txt
index aca1307e76e..c3c992ab864 100644
--- a/eval/src/apps/eval_expr/CMakeLists.txt
+++ b/eval/src/apps/eval_expr/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_eval_expr_app
SOURCES
eval_expr.cpp
@@ -6,4 +6,6 @@ vespa_add_executable(eval_eval_expr_app
INSTALL bin
DEPENDS
vespaeval
+ EXTERNAL_DEPENDS
+ edit
)
diff --git a/eval/src/apps/eval_expr/eval_expr.cpp b/eval/src/apps/eval_expr/eval_expr.cpp
index 12c94c6e68e..9ae894e13d1 100644
--- a/eval/src/apps/eval_expr/eval_expr.cpp
+++ b/eval/src/apps/eval_expr/eval_expr.cpp
@@ -1,31 +1,414 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <vespa/vespalib/util/require.h>
#include <vespa/eval/eval/function.h>
-#include <vespa/eval/eval/interpreted_function.h>
#include <vespa/eval/eval/tensor_spec.h>
+#include <vespa/eval/eval/value_type.h>
+#include <vespa/eval/eval/value.h>
+#include <vespa/eval/eval/value_codec.h>
+#include <vespa/eval/eval/fast_value.h>
+#include <vespa/eval/eval/lazy_params.h>
+#include <vespa/eval/eval/interpreted_function.h>
+#include <vespa/eval/eval/feature_name_extractor.h>
+#include <vespa/eval/eval/tensor_function.h>
+#include <vespa/eval/eval/make_tensor_function.h>
+#include <vespa/eval/eval/optimize_tensor_function.h>
+#include <vespa/eval/eval/compile_tensor_function.h>
+#include <vespa/eval/eval/test/test_io.h>
+#include <vespa/vespalib/util/stringfmt.h>
+
+#include <histedit.h>
+
+using vespalib::make_string_short::fmt;
using namespace vespalib::eval;
+using namespace vespalib::eval::test;
-int main(int argc, char **argv) {
- if (argc != 2) {
- fprintf(stderr, "usage: %s <expr>\n", argv[0]);
- fprintf(stderr, " the expression must be self-contained (no arguments)\n");
- fprintf(stderr, " quote the expression to make it a single parameter\n");
- return 1;
- }
- auto function = Function::parse({}, argv[1]);
- if (function->has_error()) {
- fprintf(stderr, "expression error: %s\n", function->get_error().c_str());
- return 1;
- }
- auto result = TensorSpec::from_expr(argv[1]);
- auto type = ValueType::from_spec(result.type());
- if (type.is_error()) {
- fprintf(stdout, "error\n");
- } else if (type.is_double()) {
- fprintf(stdout, "%.32g\n", result.as_double());
+using vespalib::Slime;
+using vespalib::slime::JsonFormat;
+using vespalib::slime::Inspector;
+using vespalib::slime::Cursor;
+
+const auto &factory = FastValueBuilderFactory::get();
+
+void list_commands(FILE *file, const char *prefix) {
+ fprintf(file, "%s'exit' -> exit the program\n", prefix);
+ fprintf(file, "%s'help' -> print available commands\n", prefix);
+ fprintf(file, "%s'list' -> list named values\n", prefix);
+ fprintf(file, "%s'verbose (true|false)' -> enable or disable verbose output\n", prefix);
+ fprintf(file, "%s'def <name> <expr>' -> evaluate expression, bind result to a name\n", prefix);
+ fprintf(file, "%s'undef <name>' -> remove a named value\n", prefix);
+ fprintf(file, "%s'<expr>' -> evaluate expression\n", prefix);
+}
+
+int usage(const char *self) {
+ // -------------------------------------------------------------------------------
+ fprintf(stderr, "usage: %s [--verbose] <expr> [expr ...]\n", self);
+ fprintf(stderr, " Evaluate a sequence of expressions. The first expression must be\n");
+ fprintf(stderr, " self-contained (no external values). Later expressions may use the\n");
+ fprintf(stderr, " results of earlier expressions. Expressions are automatically named\n");
+ fprintf(stderr, " using single letter symbols ('a' through 'z'). Quote expressions to\n");
+ fprintf(stderr, " make sure they become separate parameters. The --verbose option may\n");
+ fprintf(stderr, " be specified to get more detailed informaion about how the various\n");
+ fprintf(stderr, " expressions are optimized.\n");
+ fprintf(stderr, "\n");
+ fprintf(stderr, "example: %s \"2+2\" \"a+2\" \"a+b\"\n", self);
+ fprintf(stderr, " (a=4, b=6, c=10)\n");
+ fprintf(stderr, "\n");
+ fprintf(stderr, "advanced usage: %s interactive\n", self);
+ fprintf(stderr, " This runs the progam in interactive mode. possible commands (line based):\n");
+ list_commands(stderr, " ");
+ fprintf(stderr, "\n");
+ fprintf(stderr, "advanced usage: %s json-repl\n", self);
+ fprintf(stderr, " This will put the program into a read-eval-print loop where it reads\n");
+ fprintf(stderr, " json objects from stdin and writes json objects to stdout.\n");
+ fprintf(stderr, " possible commands: (object based)\n");
+ fprintf(stderr, " {expr:<expr>, ?name:<name>, ?verbose:true}\n");
+ fprintf(stderr, " -> { result:<verbatim-expr> ?steps:[{class:string,symbol:string}] }\n");
+ fprintf(stderr, " Evaluate an expression and return the result. If a name is specified,\n");
+ fprintf(stderr, " the result will be bound to that name and will be available as a symbol\n");
+ fprintf(stderr, " when doing future evaluations. Verbose output must be enabled for each\n");
+ fprintf(stderr, " relevant command and will result in the 'steps' field being populated in\n");
+ fprintf(stderr, " the response.\n");
+ fprintf(stderr, " if any command fails, the response will be { error:string }\n");
+ fprintf(stderr, " commands may be batched using json arrays:\n");
+ fprintf(stderr, " [cmd1,cmd2,cmd3] -> [res1,res2,res3]\n");
+ fprintf(stderr, "\n");
+ // -------------------------------------------------------------------------------
+ return 1;
+}
+
+int overflow(int cnt, int max) {
+ fprintf(stderr, "error: too many expressions: %d (max is %d)\n", cnt, max);
+ return 2;
+}
+
+class Context
+{
+private:
+ std::vector<vespalib::string> _param_names;
+ std::vector<ValueType> _param_types;
+ std::vector<Value::UP> _param_values;
+ std::vector<Value::CREF> _param_refs;
+ bool _verbose;
+ vespalib::string _error;
+ CTFMetaData _meta;
+
+ void clear_state() {
+ _error.clear();
+ _meta = CTFMetaData();
+ }
+
+public:
+ Context() : _param_names(), _param_types(), _param_values(), _param_refs(), _verbose(), _meta() {}
+ ~Context();
+
+ void verbose(bool value) { _verbose = value; }
+ bool verbose() const { return _verbose; }
+
+ size_t size() const { return _param_names.size(); }
+ const vespalib::string &name(size_t idx) const { return _param_names[idx]; }
+ const ValueType &type(size_t idx) const { return _param_types[idx]; }
+
+ Value::UP eval(const vespalib::string &expr) {
+ clear_state();
+ SimpleObjectParams params(_param_refs);
+ auto fun = Function::parse(_param_names, expr, FeatureNameExtractor());
+ if (fun->has_error()) {
+ _error = fmt("expression parsing failed: %s", fun->get_error().c_str());
+ return {};
+ }
+ NodeTypes types = NodeTypes(*fun, _param_types);
+ ValueType res_type = types.get_type(fun->root());
+ if (res_type.is_error() || !types.errors().empty()) {
+ _error = fmt("type resolving failed for expression: '%s'", expr.c_str());
+ for (const auto &issue: types.errors()) {
+ _error.append(fmt("\n type issue: %s", issue.c_str()));
+ }
+ return {};
+ }
+ vespalib::Stash stash;
+ const TensorFunction &plain_fun = make_tensor_function(factory, fun->root(), types, stash);
+ const TensorFunction &optimized = optimize_tensor_function(factory, plain_fun, stash);
+ InterpretedFunction ifun(factory, optimized, _verbose ? &_meta : nullptr);
+ InterpretedFunction::Context ctx(ifun);
+ auto result = factory.copy(ifun.eval(ctx, params));
+ REQUIRE_EQ(result->type(), res_type);
+ return result;
+ }
+
+ const vespalib::string &error() const { return _error; }
+ const CTFMetaData &meta() const { return _meta; }
+
+ void save(const vespalib::string &name, Value::UP value) {
+ REQUIRE(value);
+ for (size_t i = 0; i < _param_names.size(); ++i) {
+ if (_param_names[i] == name) {
+ _param_types[i] = value->type();
+ _param_values[i] = std::move(value);
+ _param_refs[i] = *_param_values[i];
+ return;
+ }
+ }
+ _param_names.push_back(name);
+ _param_types.push_back(value->type());
+ _param_values.push_back(std::move(value));
+ _param_refs.emplace_back(*_param_values.back());
+ }
+
+ bool remove(const vespalib::string &name) {
+ for (size_t i = 0; i < _param_names.size(); ++i) {
+ if (_param_names[i] == name) {
+ _param_names.erase(_param_names.begin() + i);
+ _param_types.erase(_param_types.begin() + i);
+ _param_values.erase(_param_values.begin() + i);
+ _param_refs.erase(_param_refs.begin() + i);
+ return true;
+ }
+ }
+ return false;
+ }
+};
+Context::~Context() = default;
+
+void print_error(const vespalib::string &error) {
+ fprintf(stderr, "error: %s\n", error.c_str());
+}
+
+void print_value(const Value &value, const vespalib::string &name, const CTFMetaData &meta) {
+ bool with_name = !name.empty();
+ bool with_meta = !meta.steps.empty();
+ auto spec = spec_from_value(value);
+ if (with_meta) {
+ if (with_name) {
+ fprintf(stderr, "meta-data(%s):\n", name.c_str());
+ } else {
+ fprintf(stderr, "meta-data:\n");
+ }
+ for (const auto &step: meta.steps) {
+ fprintf(stderr, " class: %s\n", step.class_name.c_str());
+ fprintf(stderr, " symbol: %s\n", step.symbol_name.c_str());
+ }
+ }
+ if (with_name) {
+ fprintf(stdout, "%s: ", name.c_str());
+ }
+ if (value.type().is_double()) {
+ fprintf(stdout, "%.32g\n", spec.as_double());
} else {
- fprintf(stdout, "%s\n", result.to_string().c_str());
+ fprintf(stdout, "%s\n", spec.to_string().c_str());
+ }
+}
+
+void handle_message(Context &ctx, const Inspector &req, Cursor &reply) {
+ vespalib::string expr = req["expr"].asString().make_string();
+ vespalib::string name = req["name"].asString().make_string();
+ ctx.verbose(req["verbose"].asBool());
+ if (expr.empty()) {
+ reply.setString("error", "missing expression (field name: 'expr')");
+ return;
+ }
+ auto value = ctx.eval(expr);
+ if (!value) {
+ reply.setString("error", ctx.error());
+ return;
+ }
+ reply.setString("result", spec_from_value(*value).to_expr());
+ if (!name.empty()) {
+ ctx.save(name, std::move(value));
+ }
+ if (!ctx.meta().steps.empty()) {
+ auto &steps_out = reply.setArray("steps");
+ for (const auto &step: ctx.meta().steps) {
+ auto &step_out = steps_out.addObject();
+ step_out.setString("class", step.class_name);
+ step_out.setString("symbol", step.symbol_name);
+ }
+ }
+}
+
+bool is_only_whitespace(const vespalib::string &str) {
+ for (auto c: str) {
+ if (!isspace(c)) {
+ return false;
+ }
+ }
+ return true;
+}
+
+struct EditLineWrapper {
+ EditLine *my_el;
+ History *my_hist;
+ HistEvent ignore;
+ static vespalib::string prompt;
+ static char *prompt_fun(EditLine *) { return &prompt[0]; }
+ EditLineWrapper()
+ : my_el(el_init("vespa-eval-expr", stdin, stdout, stderr)),
+ my_hist(history_init())
+ {
+ memset(&ignore, 0, sizeof(ignore));
+ el_set(my_el, EL_EDITOR, "emacs");
+ el_set(my_el, EL_PROMPT, prompt_fun);
+ history(my_hist, &ignore, H_SETSIZE, 1024);
+ el_set(my_el, EL_HIST, history, my_hist);
+ }
+ ~EditLineWrapper();
+ bool read_line(vespalib::string &line_out) {
+ do {
+ int line_len = 0;
+ const char *line = el_gets(my_el, &line_len);
+ if (line == nullptr) {
+ return false;
+ }
+ line_out.assign(line, line_len);
+ if ((line_out.size() > 0) && (line_out[line_out.size() - 1] == '\n')) {
+ line_out.pop_back();
+ }
+ } while (is_only_whitespace(line_out));
+ history(my_hist, &ignore, H_ENTER, line_out.c_str());
+ return true;
+ }
+};
+EditLineWrapper::~EditLineWrapper()
+{
+ el_set(my_el, EL_HIST, history, nullptr);
+ history_end(my_hist);
+ el_end(my_el);
+}
+vespalib::string EditLineWrapper::prompt("> ");
+
+const vespalib::string exit_cmd("exit");
+const vespalib::string help_cmd("help");
+const vespalib::string list_cmd("list");
+const vespalib::string verbose_cmd("verbose ");
+const vespalib::string def_cmd("def ");
+const vespalib::string undef_cmd("undef ");
+
+int interactive_mode(Context &ctx) {
+ EditLineWrapper input;
+ vespalib::string line;
+ while (input.read_line(line)) {
+ if (line == exit_cmd) {
+ return 0;
+ }
+ if (line == help_cmd) {
+ list_commands(stdout, " ");
+ continue;
+ }
+ if (line == list_cmd) {
+ for (size_t i = 0; i < ctx.size(); ++i) {
+ fprintf(stdout, " %s: %s\n", ctx.name(i).c_str(), ctx.type(i).to_spec().c_str());
+ }
+ continue;
+ }
+ if (line.find(verbose_cmd) == 0) {
+ auto flag_str = line.substr(verbose_cmd.size());
+ bool flag = (flag_str == "true");
+ bool bad = (!flag && (flag_str != "false"));
+ if (bad) {
+ fprintf(stderr, "bad flag specifier: '%s', must be 'true' or 'false'\n", flag_str.c_str());
+ } else {
+ ctx.verbose(flag);
+ fprintf(stdout, "verbose set to %s\n", flag ? "true" : "false");
+ }
+ continue;
+ }
+ vespalib::string name;
+ if (line.find(undef_cmd) == 0) {
+ name = line.substr(undef_cmd.size());
+ if (ctx.remove(name)) {
+ fprintf(stdout, "removed value '%s'\n", name.c_str());
+ } else {
+ fprintf(stdout, "value not found: '%s'\n", name.c_str());
+ }
+ continue;
+ }
+ vespalib::string expr;
+ if (line.find(def_cmd) == 0) {
+ auto name_size = (line.find(" ", def_cmd.size()) - def_cmd.size());
+ name = line.substr(def_cmd.size(), name_size);
+ expr = line.substr(def_cmd.size() + name_size + 1);
+ } else {
+ expr = line;
+ }
+ if (ctx.verbose()) {
+ fprintf(stderr, "eval '%s'", expr.c_str());
+ if (name.empty()) {
+ fprintf(stderr, "\n");
+ } else {
+ fprintf(stderr, " -> '%s'\n", name.c_str());
+ }
+ }
+ if (auto value = ctx.eval(expr)) {
+ print_value(*value, name, ctx.meta());
+ if (!name.empty()) {
+ ctx.save(name, std::move(value));
+ }
+ } else {
+ print_error(ctx.error());
+ }
+ }
+ return 0;
+}
+
+int json_repl_mode(Context &ctx) {
+ StdIn std_in;
+ StdOut std_out;
+ for (;;) {
+ if (look_for_eof(std_in)) {
+ return 0;
+ }
+ Slime req;
+ if (!JsonFormat::decode(std_in, req)) {
+ return 3;
+ }
+ Slime reply;
+ if (req.get().type().getId() == vespalib::slime::ARRAY::ID) {
+ reply.setArray();
+ for (size_t i = 0; i < req.get().entries(); ++i) {
+ handle_message(ctx, req[i], reply.get().addObject());
+ }
+ } else {
+ handle_message(ctx, req.get(), reply.setObject());
+ }
+ write_compact(reply, std_out);
+ }
+}
+
+int main(int argc, char **argv) {
+ bool verbose = ((argc > 1) && (vespalib::string(argv[1]) == "--verbose"));
+ int expr_idx = verbose ? 2 : 1;
+ int expr_cnt = (argc - expr_idx);
+ int expr_max = ('z' - 'a') + 1;
+ if (expr_cnt == 0) {
+ return usage(argv[0]);
+ }
+ if (expr_cnt > expr_max) {
+ return overflow(expr_cnt, expr_max);
+ }
+ Context ctx;
+ if ((expr_cnt == 1) && (vespalib::string(argv[expr_idx]) == "interactive")) {
+ return interactive_mode(ctx);
+ }
+ if ((expr_cnt == 1) && (vespalib::string(argv[expr_idx]) == "json-repl")) {
+ return json_repl_mode(ctx);
+ }
+ ctx.verbose(verbose);
+ vespalib::string name("a");
+ for (int i = expr_idx; i < argc; ++i) {
+ if (auto value = ctx.eval(argv[i])) {
+ if (expr_cnt > 1) {
+ print_value(*value, name, ctx.meta());
+ ctx.save(name, std::move(value));
+ ++name[0];
+ } else {
+ vespalib::string no_name;
+ print_value(*value, no_name, ctx.meta());
+ }
+ } else {
+ print_error(ctx.error());
+ return 3;
+ }
}
return 0;
}
diff --git a/eval/src/apps/make_tensor_binary_format_test_spec/CMakeLists.txt b/eval/src/apps/make_tensor_binary_format_test_spec/CMakeLists.txt
index 1065657a71b..c39b21901a2 100644
--- a/eval/src/apps/make_tensor_binary_format_test_spec/CMakeLists.txt
+++ b/eval/src/apps/make_tensor_binary_format_test_spec/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_make_tensor_binary_format_test_spec_app
SOURCES
make_tensor_binary_format_test_spec.cpp
diff --git a/eval/src/apps/make_tensor_binary_format_test_spec/make_tensor_binary_format_test_spec.cpp b/eval/src/apps/make_tensor_binary_format_test_spec/make_tensor_binary_format_test_spec.cpp
index 974f95a2add..97daa3cea5d 100644
--- a/eval/src/apps/make_tensor_binary_format_test_spec/make_tensor_binary_format_test_spec.cpp
+++ b/eval/src/apps/make_tensor_binary_format_test_spec/make_tensor_binary_format_test_spec.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/data/slime/slime.h>
#include <vespa/vespalib/objects/nbostream.h>
diff --git a/eval/src/apps/tensor_conformance/CMakeLists.txt b/eval/src/apps/tensor_conformance/CMakeLists.txt
index 5d1072ca064..84b3a2660fd 100644
--- a/eval/src/apps/tensor_conformance/CMakeLists.txt
+++ b/eval/src/apps/tensor_conformance/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespa-tensor-conformance
SOURCES
generate.cpp
diff --git a/eval/src/apps/tensor_conformance/generate.cpp b/eval/src/apps/tensor_conformance/generate.cpp
index 8a596ad38d4..625915168b8 100644
--- a/eval/src/apps/tensor_conformance/generate.cpp
+++ b/eval/src/apps/tensor_conformance/generate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "generate.h"
#include <vespa/eval/eval/test/gen_spec.h>
@@ -14,6 +14,19 @@ using vespalib::make_string_short::fmt;
namespace {
+struct IgnoreJava : TestBuilder {
+ TestBuilder &dst;
+ IgnoreJava(TestBuilder &dst_in) : TestBuilder(dst_in.full), dst(dst_in) {}
+ void add(const vespalib::string &expression,
+ const std::map<vespalib::string,TensorSpec> &inputs,
+ const std::set<vespalib::string> &ignore) override
+ {
+ auto my_ignore = ignore;
+ my_ignore.insert("vespajlib");
+ dst.add(expression, inputs, my_ignore);
+ }
+};
+
//-----------------------------------------------------------------------------
const std::vector<vespalib::string> basic_layouts = {
@@ -273,6 +286,9 @@ void generate_join(TestBuilder &dst) {
generate_op2_join("min(a,b)", Div16(N()), dst);
generate_op2_join("max(a,b)", Div16(N()), dst);
generate_op2_join("bit(a,b)", Seq({-128, -43, -1, 0, 85, 127}), Seq({0, 1, 2, 3, 4, 5, 6, 7}), dst);
+ // TODO: add ignored Java test when it can be ignored
+ // IgnoreJava ignore_java(dst);
+ // generate_op2_join("hamming(a,b)", Seq({-128, -43, -1, 0, 85, 127}), ignore_java); // TODO: require java
// inverted lambda
generate_join_expr("join(a,b,f(a,b)(b-a))", Div16(N()), dst);
// custom lambda
@@ -331,6 +347,9 @@ void generate_merge(TestBuilder &dst) {
generate_op2_merge("min(a,b)", Div16(N()), dst);
generate_op2_merge("max(a,b)", Div16(N()), dst);
generate_op2_merge("bit(a,b)", Seq({-128, -43, -1, 0, 85, 127}), Seq({0, 1, 2, 3, 4, 5, 6, 7}), dst);
+ // TODO: add ignored Java test when it can be ignored
+ // IgnoreJava ignore_java(dst);
+ // generate_op2_merge("hamming(a,b)", Seq({-128, -43, -1, 0, 85, 127}), ignore_java); // TODO: require java
// inverted lambda
generate_merge_expr("merge(a,b,f(a,b)(b-a))", Div16(N()), dst);
// custom lambda
diff --git a/eval/src/apps/tensor_conformance/generate.h b/eval/src/apps/tensor_conformance/generate.h
index e9482b9015c..7e4a2e07176 100644
--- a/eval/src/apps/tensor_conformance/generate.h
+++ b/eval/src/apps/tensor_conformance/generate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -18,11 +18,6 @@ struct TestBuilder {
{
add(expression, inputs, {});
}
- void add_ignore_java(const vespalib::string &expression,
- const std::map<vespalib::string,TensorSpec> &inputs)
- {
- add(expression, inputs, {"vespajlib"});
- }
virtual ~TestBuilder() {}
};
diff --git a/eval/src/apps/tensor_conformance/tensor_conformance.cpp b/eval/src/apps/tensor_conformance/tensor_conformance.cpp
index e6bbb1f8a41..80714ebb491 100644
--- a/eval/src/apps/tensor_conformance/tensor_conformance.cpp
+++ b/eval/src/apps/tensor_conformance/tensor_conformance.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/data/output_writer.h>
#include <vespa/vespalib/data/slime/json_format.h>
@@ -167,6 +167,15 @@ void print_test(const Inspector &test, OutputWriter &dst) {
}
auto result = eval_expr(test, prod_factory);
dst.printf("result: %s\n", result.to_string().c_str());
+ auto ignore = extract_fields(test["ignore"]);
+ if (!ignore.empty()) {
+ dst.printf("ignore:");
+ for (const auto &impl: ignore) {
+ REQUIRE(test["ignore"][impl].asBool());
+ dst.printf(" %s", impl.c_str());
+ }
+ dst.printf("\n");
+ }
}
//-----------------------------------------------------------------------------
diff --git a/eval/src/tests/ann/bruteforce-nns.h b/eval/src/tests/ann/bruteforce-nns.h
index ecac73c0d10..d7097215845 100644
--- a/eval/src/tests/ann/bruteforce-nns.h
+++ b/eval/src/tests/ann/bruteforce-nns.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
std::vector<TopK> bruteforceResults;
diff --git a/eval/src/tests/ann/hnsw-like.h b/eval/src/tests/ann/hnsw-like.h
index ac4a346993d..6e9219c555b 100644
--- a/eval/src/tests/ann/hnsw-like.h
+++ b/eval/src/tests/ann/hnsw-like.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/tests/ann/point-vector.h b/eval/src/tests/ann/point-vector.h
index eca60e11194..764171b8aa2 100644
--- a/eval/src/tests/ann/point-vector.h
+++ b/eval/src/tests/ann/point-vector.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
struct PointVector {
float v[NUM_DIMS];
diff --git a/eval/src/tests/ann/read-vecs.h b/eval/src/tests/ann/read-vecs.h
index 39c2a332710..d8d944d7e7d 100644
--- a/eval/src/tests/ann/read-vecs.h
+++ b/eval/src/tests/ann/read-vecs.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
void read_queries(std::string fn) {
int fd = open(fn.c_str(), O_RDONLY);
diff --git a/eval/src/tests/ann/time-util.h b/eval/src/tests/ann/time-util.h
index 2f5c2bdd583..9cf4531cecb 100644
--- a/eval/src/tests/ann/time-util.h
+++ b/eval/src/tests/ann/time-util.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
using TimePoint = std::chrono::steady_clock::time_point;
using Duration = std::chrono::steady_clock::duration;
diff --git a/eval/src/tests/apps/eval_expr/CMakeLists.txt b/eval/src/tests/apps/eval_expr/CMakeLists.txt
new file mode 100644
index 00000000000..e36c5aafe23
--- /dev/null
+++ b/eval/src/tests/apps/eval_expr/CMakeLists.txt
@@ -0,0 +1,9 @@
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(eval_eval_expr_test_app TEST
+ SOURCES
+ eval_expr_test.cpp
+ DEPENDS
+ vespaeval
+)
+vespa_add_test(NAME eval_eval_expr_test_app COMMAND eval_eval_expr_test_app
+ DEPENDS eval_eval_expr_test_app eval_eval_expr_app)
diff --git a/eval/src/tests/apps/eval_expr/eval_expr_test.cpp b/eval/src/tests/apps/eval_expr/eval_expr_test.cpp
new file mode 100644
index 00000000000..077d3d2f35a
--- /dev/null
+++ b/eval/src/tests/apps/eval_expr/eval_expr_test.cpp
@@ -0,0 +1,252 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include <vespa/vespalib/testkit/test_kit.h>
+#include <vespa/vespalib/testkit/time_bomb.h>
+#include <vespa/vespalib/util/stringfmt.h>
+#include <vespa/vespalib/data/slime/slime.h>
+#include <vespa/vespalib/util/child_process.h>
+#include <vespa/vespalib/data/input.h>
+#include <vespa/vespalib/data/output.h>
+#include <vespa/vespalib/data/simple_buffer.h>
+#include <vespa/vespalib/util/size_literals.h>
+#include <vespa/eval/eval/test/test_io.h>
+
+using namespace vespalib;
+using namespace vespalib::eval::test;
+using vespalib::make_string_short::fmt;
+using vespalib::slime::JsonFormat;
+using vespalib::slime::Inspector;
+
+vespalib::string module_build_path("../../../../");
+vespalib::string binary = module_build_path + "src/apps/eval_expr/vespa-eval-expr";
+vespalib::string server_cmd = binary + " json-repl";
+
+//-----------------------------------------------------------------------------
+
+void read_until_eof(Input &input) {
+ for (auto mem = input.obtain(); mem.size > 0; mem = input.obtain()) {
+ input.evict(mem.size);
+ }
+}
+
+// Output adapter used to write to stdin of a child process
+class ChildIn : public Output {
+ ChildProcess &_child;
+ SimpleBuffer _output;
+public:
+ ChildIn(ChildProcess &child) : _child(child) {}
+ WritableMemory reserve(size_t bytes) override {
+ return _output.reserve(bytes);
+ }
+ Output &commit(size_t bytes) override {
+ _output.commit(bytes);
+ Memory buf = _output.obtain();
+ ASSERT_TRUE(_child.write(buf.data, buf.size));
+ _output.evict(buf.size);
+ return *this;
+ }
+};
+
+// Input adapter used to read from stdout of a child process
+class ChildOut : public Input {
+ ChildProcess &_child;
+ SimpleBuffer _input;
+public:
+ ChildOut(ChildProcess &child)
+ : _child(child)
+ {
+ EXPECT_TRUE(_child.running());
+ EXPECT_TRUE(!_child.failed());
+ }
+ Memory obtain() override {
+ if ((_input.get().size == 0) && !_child.eof()) {
+ WritableMemory buf = _input.reserve(4_Ki);
+ uint32_t res = _child.read(buf.data, buf.size);
+ ASSERT_TRUE((res > 0) || _child.eof());
+ _input.commit(res);
+ }
+ return _input.obtain();
+ }
+ Input &evict(size_t bytes) override {
+ _input.evict(bytes);
+ return *this;
+ }
+};
+
+//-----------------------------------------------------------------------------
+
+struct Result {
+ vespalib::string error;
+ vespalib::string result;
+ std::vector<std::pair<vespalib::string, vespalib::string>> steps;
+
+ Result(const Inspector &obj)
+ : error(obj["error"].asString().make_string()),
+ result(obj["result"].asString().make_string()),
+ steps()
+ {
+ const auto &arr = obj["steps"];
+ for (size_t i = 0; i < arr.entries(); ++i) {
+ steps.emplace_back(arr[i]["class"].asString().make_string(),
+ arr[i]["symbol"].asString().make_string());
+ }
+ }
+ void verify_result(const vespalib::string &expect) {
+ EXPECT_EQUAL(error, "");
+ EXPECT_EQUAL(result, expect);
+ }
+ void verify_error(const vespalib::string &expect) {
+ EXPECT_EQUAL(steps.size(), 0u);
+ EXPECT_EQUAL(result, "");
+ fprintf(stderr, "... does error '%s' contain message '%s'?\n",
+ error.c_str(), expect.c_str());
+ EXPECT_TRUE(error.find(expect) != error.npos);
+ }
+ ~Result();
+};
+Result::~Result() = default;
+
+void dump_message(const char *prefix, const Slime &slime) {
+ SimpleBuffer buf;
+ slime::JsonFormat::encode(slime, buf, true);
+ auto str = buf.get().make_string();
+ fprintf(stderr, "%s%s\n", prefix, str.c_str());
+}
+
+class Server {
+private:
+ TimeBomb _bomb;
+ ChildProcess _child;
+ ChildIn _child_stdin;
+ ChildOut _child_stdout;
+public:
+ Server()
+ : _bomb(60),
+ _child(server_cmd.c_str()),
+ _child_stdin(_child),
+ _child_stdout(_child) {}
+ ~Server();
+ Slime invoke(const Slime &req) {
+ dump_message("request --> ", req);
+ write_compact(req, _child_stdin);
+ Slime reply;
+ ASSERT_TRUE(JsonFormat::decode(_child_stdout, reply));
+ dump_message(" reply <-- ", reply);
+ return reply;
+ }
+ Result eval(const vespalib::string &expr, const vespalib::string &name = {}, bool verbose = false) {
+ Slime req;
+ auto &obj = req.setObject();
+ obj.setString("expr", expr.c_str());
+ if (!name.empty()) {
+ obj.setString("name", name.c_str());
+ }
+ if (verbose) {
+ obj.setBool("verbose", true);
+ }
+ Slime reply = invoke(req);
+ return {reply.get()};
+ }
+};
+Server::~Server() {
+ _child.close();
+ read_until_eof(_child_stdout);
+ ASSERT_TRUE(_child.wait());
+ ASSERT_TRUE(!_child.running());
+ ASSERT_TRUE(!_child.failed());
+}
+
+//-----------------------------------------------------------------------------
+
+TEST("print server command") {
+ fprintf(stderr, "server cmd: %s\n", server_cmd.c_str());
+}
+
+//-----------------------------------------------------------------------------
+
+TEST_F("require that simple evaluation works", Server()) {
+ TEST_DO(f1.eval("2+2").verify_result("4"));
+}
+
+TEST_F("require that multiple dependent expressions work", Server()) {
+ TEST_DO(f1.eval("2+2", "a").verify_result("4"));
+ TEST_DO(f1.eval("a+2", "b").verify_result("6"));
+ TEST_DO(f1.eval("a+b").verify_result("10"));
+}
+
+TEST_F("require that symbols can be overwritten", Server()) {
+ TEST_DO(f1.eval("1", "a").verify_result("1"));
+ TEST_DO(f1.eval("a+1", "a").verify_result("2"));
+ TEST_DO(f1.eval("a+1", "a").verify_result("3"));
+ TEST_DO(f1.eval("a+1", "a").verify_result("4"));
+}
+
+TEST_F("require that tensor result is returned in verbose verbatim form", Server()) {
+ TEST_DO(f1.eval("1", "a").verify_result("1"));
+ TEST_DO(f1.eval("2", "b").verify_result("2"));
+ TEST_DO(f1.eval("3", "c").verify_result("3"));
+ TEST_DO(f1.eval("tensor(x[3]):[a,b,c]").verify_result("tensor(x[3]):{{x:0}:1,{x:1}:2,{x:2}:3}"));
+}
+
+TEST_F("require that execution steps can be extracted", Server()) {
+ TEST_DO(f1.eval("1", "a").verify_result("1"));
+ TEST_DO(f1.eval("2", "b").verify_result("2"));
+ TEST_DO(f1.eval("3", "c").verify_result("3"));
+ auto res1 = f1.eval("a+b+c");
+ auto res2 = f1.eval("a+b+c", "", true);
+ EXPECT_EQUAL(res1.steps.size(), 0u);
+ EXPECT_EQUAL(res2.steps.size(), 5u);
+ for (const auto &step: res2.steps) {
+ fprintf(stderr, "step:\n class: %s\n symbol: %s\n",
+ step.first.c_str(), step.second.c_str());
+ }
+}
+
+//-----------------------------------------------------------------------------
+
+TEST_F("require that operation batching works", Server()) {
+ Slime req;
+ auto &arr = req.setArray();
+ auto &req1 = arr.addObject();
+ req1.setString("expr", "2+2");
+ req1.setString("name", "a");
+ auto &req2 = arr.addObject();
+ req2.setString("expr", "a+2");
+ req2.setString("name", "b");
+ auto &req3 = arr.addObject();
+ req3.setString("expr", "this does not parse");
+ auto &req4 = arr.addObject();
+ req4.setString("expr", "a+b");
+ Slime reply = f1.invoke(req);
+ EXPECT_EQUAL(reply.get().entries(), 4u);
+ EXPECT_TRUE(reply[2]["error"].asString().size > 0);
+ EXPECT_EQUAL(reply[3]["result"].asString().make_string(), "10");
+}
+
+TEST_F("require that empty operation batch works", Server()) {
+ Slime req;
+ req.setArray();
+ Slime reply = f1.invoke(req);
+ EXPECT_TRUE(reply.get().type().getId() == slime::ARRAY::ID);
+ EXPECT_EQUAL(reply.get().entries(), 0u);
+}
+
+//-----------------------------------------------------------------------------
+
+TEST_F("require that empty expression produces error", Server()) {
+ TEST_DO(f1.eval("").verify_error("missing expression"));
+}
+
+TEST_F("require that parse error produces error", Server()) {
+ TEST_DO(f1.eval("this does not parse").verify_error("expression parsing failed"));
+}
+
+TEST_F("require that type issues produces error", Server()) {
+ TEST_DO(f1.eval("tensor(x[3]):[1,2,3]", "a").verify_result("tensor(x[3]):{{x:0}:1,{x:1}:2,{x:2}:3}"));
+ TEST_DO(f1.eval("tensor(x[2]):[4,5]", "b").verify_result("tensor(x[2]):{{x:0}:4,{x:1}:5}"));
+ TEST_DO(f1.eval("a+b").verify_error("type resolving failed"));
+}
+
+//-----------------------------------------------------------------------------
+
+TEST_MAIN_WITH_PROCESS_PROXY() { TEST_RUN_ALL(); }
diff --git a/eval/src/tests/eval/addr_to_symbol/CMakeLists.txt b/eval/src/tests/eval/addr_to_symbol/CMakeLists.txt
new file mode 100644
index 00000000000..00715226d51
--- /dev/null
+++ b/eval/src/tests/eval/addr_to_symbol/CMakeLists.txt
@@ -0,0 +1,9 @@
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(eval_addr_to_symbol_test_app TEST
+ SOURCES
+ addr_to_symbol_test.cpp
+ DEPENDS
+ vespaeval
+ GTest::GTest
+)
+vespa_add_test(NAME eval_addr_to_symbol_test_app COMMAND eval_addr_to_symbol_test_app)
diff --git a/eval/src/tests/eval/addr_to_symbol/addr_to_symbol_test.cpp b/eval/src/tests/eval/addr_to_symbol/addr_to_symbol_test.cpp
new file mode 100644
index 00000000000..b803b5cccd1
--- /dev/null
+++ b/eval/src/tests/eval/addr_to_symbol/addr_to_symbol_test.cpp
@@ -0,0 +1,25 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include <vespa/eval/eval/llvm/addr_to_symbol.h>
+#include <vespa/vespalib/gtest/gtest.h>
+
+using namespace vespalib::eval;
+
+TEST(AddrToSymbol, null_ptr) {
+ auto sym = addr_to_symbol(nullptr);
+ EXPECT_EQ(sym, "<nullptr>");
+}
+
+TEST(AddrToSymbol, global_symbol) {
+ auto sym = addr_to_symbol((const void *)addr_to_symbol);
+ fprintf(stderr, "global symbol: %s\n", sym.c_str());
+ EXPECT_TRUE(sym.find("addr_to_symbol") < sym.size());
+}
+
+TEST(AddrToSymbol, local_symbol) {
+ auto sym = addr_to_symbol(get_addr_of_local_test_symbol());
+ fprintf(stderr, "local symbol: %s\n", sym.c_str());
+ EXPECT_TRUE(sym.find("my_local_test_symbol") < sym.size());
+}
+
+GTEST_MAIN_RUN_ALL_TESTS()
diff --git a/eval/src/tests/eval/aggr/CMakeLists.txt b/eval/src/tests/eval/aggr/CMakeLists.txt
index d47c595fb93..e905f921583 100644
--- a/eval/src/tests/eval/aggr/CMakeLists.txt
+++ b/eval/src/tests/eval/aggr/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_aggr_test_app TEST
SOURCES
aggr_test.cpp
diff --git a/eval/src/tests/eval/aggr/aggr_test.cpp b/eval/src/tests/eval/aggr/aggr_test.cpp
index 5eddb026406..9807f0f52bd 100644
--- a/eval/src/tests/eval/aggr/aggr_test.cpp
+++ b/eval/src/tests/eval/aggr/aggr_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/stash.h>
#include <vespa/eval/eval/aggr.h>
diff --git a/eval/src/tests/eval/array_array_map/CMakeLists.txt b/eval/src/tests/eval/array_array_map/CMakeLists.txt
index aef54d0fcb0..98e5cdd7b0d 100644
--- a/eval/src/tests/eval/array_array_map/CMakeLists.txt
+++ b/eval/src/tests/eval/array_array_map/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_array_array_map_test_app TEST
SOURCES
diff --git a/eval/src/tests/eval/array_array_map/array_array_map_test.cpp b/eval/src/tests/eval/array_array_map/array_array_map_test.cpp
index d6a97549b88..994f4130e6f 100644
--- a/eval/src/tests/eval/array_array_map/array_array_map_test.cpp
+++ b/eval/src/tests/eval/array_array_map/array_array_map_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/array_array_map.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/eval/src/tests/eval/cell_type_space/CMakeLists.txt b/eval/src/tests/eval/cell_type_space/CMakeLists.txt
index dea89bc6937..99d2e9490fd 100644
--- a/eval/src/tests/eval/cell_type_space/CMakeLists.txt
+++ b/eval/src/tests/eval/cell_type_space/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_cell_type_space_test_app TEST
SOURCES
cell_type_space_test.cpp
diff --git a/eval/src/tests/eval/cell_type_space/cell_type_space_test.cpp b/eval/src/tests/eval/cell_type_space/cell_type_space_test.cpp
index 25747cc0304..8d99ea38c5d 100644
--- a/eval/src/tests/eval/cell_type_space/cell_type_space_test.cpp
+++ b/eval/src/tests/eval/cell_type_space/cell_type_space_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/test/cell_type_space.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/eval/src/tests/eval/compile_cache/CMakeLists.txt b/eval/src/tests/eval/compile_cache/CMakeLists.txt
index c385be8ccb6..1c71dab3de3 100644
--- a/eval/src/tests/eval/compile_cache/CMakeLists.txt
+++ b/eval/src/tests/eval/compile_cache/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_compile_cache_test_app TEST
SOURCES
compile_cache_test.cpp
diff --git a/eval/src/tests/eval/compile_cache/compile_cache_test.cpp b/eval/src/tests/eval/compile_cache/compile_cache_test.cpp
index 1a809583564..6565ece735e 100644
--- a/eval/src/tests/eval/compile_cache/compile_cache_test.cpp
+++ b/eval/src/tests/eval/compile_cache/compile_cache_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/testkit/time_bomb.h>
#include <vespa/eval/eval/llvm/compile_cache.h>
diff --git a/eval/src/tests/eval/compiled_function/CMakeLists.txt b/eval/src/tests/eval/compiled_function/CMakeLists.txt
index 7e49b864934..9681b791ade 100644
--- a/eval/src/tests/eval/compiled_function/CMakeLists.txt
+++ b/eval/src/tests/eval/compiled_function/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_compiled_function_test_app TEST
SOURCES
compiled_function_test.cpp
diff --git a/eval/src/tests/eval/compiled_function/compiled_function_test.cpp b/eval/src/tests/eval/compiled_function/compiled_function_test.cpp
index 8e17aadcfff..dc7fde7f435 100644
--- a/eval/src/tests/eval/compiled_function/compiled_function_test.cpp
+++ b/eval/src/tests/eval/compiled_function/compiled_function_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/function.h>
#include <vespa/eval/eval/llvm/compiled_function.h>
diff --git a/eval/src/tests/eval/fast_value/CMakeLists.txt b/eval/src/tests/eval/fast_value/CMakeLists.txt
index 424dba081ea..fce5966f674 100644
--- a/eval/src/tests/eval/fast_value/CMakeLists.txt
+++ b/eval/src/tests/eval/fast_value/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_fast_value_test_app TEST
SOURCES
fast_value_test.cpp
diff --git a/eval/src/tests/eval/fast_value/fast_value_test.cpp b/eval/src/tests/eval/fast_value/fast_value_test.cpp
index 2acb6c448c9..412d8bad200 100644
--- a/eval/src/tests/eval/fast_value/fast_value_test.cpp
+++ b/eval/src/tests/eval/fast_value/fast_value_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/fast_value.hpp>
#include <vespa/eval/eval/fast_value.h>
diff --git a/searchlib/src/tests/rankingexpression/feature_name_extractor/.gitignore b/eval/src/tests/eval/feature_name_extractor/.gitignore
index 88c86c1720e..88c86c1720e 100644
--- a/searchlib/src/tests/rankingexpression/feature_name_extractor/.gitignore
+++ b/eval/src/tests/eval/feature_name_extractor/.gitignore
diff --git a/eval/src/tests/eval/feature_name_extractor/CMakeLists.txt b/eval/src/tests/eval/feature_name_extractor/CMakeLists.txt
new file mode 100644
index 00000000000..df89d0725cd
--- /dev/null
+++ b/eval/src/tests/eval/feature_name_extractor/CMakeLists.txt
@@ -0,0 +1,8 @@
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(eval_name_extractor_test_app TEST
+ SOURCES
+ feature_name_extractor_test.cpp
+ DEPENDS
+ vespaeval
+)
+vespa_add_test(NAME eval_name_extractor_test_app COMMAND eval_name_extractor_test_app)
diff --git a/searchlib/src/tests/rankingexpression/feature_name_extractor/feature_name_extractor_test.cpp b/eval/src/tests/eval/feature_name_extractor/feature_name_extractor_test.cpp
index 7b3683f75d5..5b01bf61698 100644
--- a/searchlib/src/tests/rankingexpression/feature_name_extractor/feature_name_extractor_test.cpp
+++ b/eval/src/tests/eval/feature_name_extractor/feature_name_extractor_test.cpp
@@ -1,8 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
-#include <vespa/searchlib/features/rankingexpression/feature_name_extractor.h>
+#include <vespa/eval/eval/feature_name_extractor.h>
-using search::features::rankingexpression::FeatureNameExtractor;
+using vespalib::eval::FeatureNameExtractor;
void verify_extract(const vespalib::string &input,
const vespalib::string &expect_symbol,
diff --git a/eval/src/tests/eval/function/CMakeLists.txt b/eval/src/tests/eval/function/CMakeLists.txt
index a5d79cfefe9..407d1c6e64b 100644
--- a/eval/src/tests/eval/function/CMakeLists.txt
+++ b/eval/src/tests/eval/function/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_function_test_app TEST
SOURCES
function_test.cpp
diff --git a/eval/src/tests/eval/function/function_test.cpp b/eval/src/tests/eval/function/function_test.cpp
index aca19e2ccc9..793ba98c59b 100644
--- a/eval/src/tests/eval/function/function_test.cpp
+++ b/eval/src/tests/eval/function/function_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/function.h>
#include <vespa/eval/eval/operator_nodes.h>
diff --git a/eval/src/tests/eval/function_speed/CMakeLists.txt b/eval/src/tests/eval/function_speed/CMakeLists.txt
index e13d4488100..9eec44d34f8 100644
--- a/eval/src/tests/eval/function_speed/CMakeLists.txt
+++ b/eval/src/tests/eval/function_speed/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_function_speed_test_app TEST
SOURCES
function_speed_test.cpp
diff --git a/eval/src/tests/eval/function_speed/function_speed_test.cpp b/eval/src/tests/eval/function_speed/function_speed_test.cpp
index b4d013fe807..f5354b64aa3 100644
--- a/eval/src/tests/eval/function_speed/function_speed_test.cpp
+++ b/eval/src/tests/eval/function_speed/function_speed_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/function.h>
#include <vespa/eval/eval/llvm/compiled_function.h>
diff --git a/eval/src/tests/eval/gbdt/CMakeLists.txt b/eval/src/tests/eval/gbdt/CMakeLists.txt
index 8515dde46d1..6eb51af46e4 100644
--- a/eval/src/tests/eval/gbdt/CMakeLists.txt
+++ b/eval/src/tests/eval/gbdt/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_gbdt_test_app TEST
SOURCES
gbdt_test.cpp
diff --git a/eval/src/tests/eval/gbdt/gbdt_benchmark.cpp b/eval/src/tests/eval/gbdt/gbdt_benchmark.cpp
index 8c34d6f7d7f..608704de879 100644
--- a/eval/src/tests/eval/gbdt/gbdt_benchmark.cpp
+++ b/eval/src/tests/eval/gbdt/gbdt_benchmark.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/gbdt.h>
#include <vespa/eval/eval/vm_forest.h>
diff --git a/eval/src/tests/eval/gbdt/gbdt_test.cpp b/eval/src/tests/eval/gbdt/gbdt_test.cpp
index d7c6b351621..09d4a081ac4 100644
--- a/eval/src/tests/eval/gbdt/gbdt_test.cpp
+++ b/eval/src/tests/eval/gbdt/gbdt_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/gbdt.h>
#include <vespa/eval/eval/vm_forest.h>
diff --git a/eval/src/tests/eval/gbdt/model.cpp b/eval/src/tests/eval/gbdt/model.cpp
index c2507d2f056..22ab22835f7 100644
--- a/eval/src/tests/eval/gbdt/model.cpp
+++ b/eval/src/tests/eval/gbdt/model.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <random>
diff --git a/eval/src/tests/eval/gen_spec/CMakeLists.txt b/eval/src/tests/eval/gen_spec/CMakeLists.txt
index 3613554f0a0..66c46a2a515 100644
--- a/eval/src/tests/eval/gen_spec/CMakeLists.txt
+++ b/eval/src/tests/eval/gen_spec/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_gen_spec_test_app TEST
SOURCES
gen_spec_test.cpp
diff --git a/eval/src/tests/eval/gen_spec/gen_spec_test.cpp b/eval/src/tests/eval/gen_spec/gen_spec_test.cpp
index b371e08960f..855b298f295 100644
--- a/eval/src/tests/eval/gen_spec/gen_spec_test.cpp
+++ b/eval/src/tests/eval/gen_spec/gen_spec_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/test/gen_spec.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/eval/src/tests/eval/inline_operation/CMakeLists.txt b/eval/src/tests/eval/inline_operation/CMakeLists.txt
index f1e4c23dbc8..55fde3dc277 100644
--- a/eval/src/tests/eval/inline_operation/CMakeLists.txt
+++ b/eval/src/tests/eval/inline_operation/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_inline_operation_test_app TEST
SOURCES
inline_operation_test.cpp
diff --git a/eval/src/tests/eval/inline_operation/inline_operation_test.cpp b/eval/src/tests/eval/inline_operation/inline_operation_test.cpp
index ae5f503b680..0bf221945ee 100644
--- a/eval/src/tests/eval/inline_operation/inline_operation_test.cpp
+++ b/eval/src/tests/eval/inline_operation/inline_operation_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/operation.h>
#include <vespa/eval/eval/inline_operation.h>
@@ -116,6 +116,7 @@ TEST(InlineOperationTest, op2_lambdas_are_recognized) {
EXPECT_EQ(as_op2("min(a,b)"), &Min::f);
EXPECT_EQ(as_op2("max(a,b)"), &Max::f);
EXPECT_EQ(as_op2("bit(a,b)"), &Bit::f);
+ EXPECT_EQ(as_op2("hamming(a,b)"), &Hamming::f);
}
TEST(InlineOperationTest, op2_lambdas_are_recognized_with_different_parameter_names) {
diff --git a/eval/src/tests/eval/int8float/CMakeLists.txt b/eval/src/tests/eval/int8float/CMakeLists.txt
index fb258f46fc2..4529bd26192 100644
--- a/eval/src/tests/eval/int8float/CMakeLists.txt
+++ b/eval/src/tests/eval/int8float/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_int8float_test_app TEST
SOURCES
int8float_test.cpp
diff --git a/eval/src/tests/eval/int8float/int8float_test.cpp b/eval/src/tests/eval/int8float/int8float_test.cpp
index 9debf712150..e1abf2c3d01 100644
--- a/eval/src/tests/eval/int8float/int8float_test.cpp
+++ b/eval/src/tests/eval/int8float/int8float_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/int8float.h>
#include <vespa/vespalib/objects/nbostream.h>
diff --git a/eval/src/tests/eval/interpreted_function/CMakeLists.txt b/eval/src/tests/eval/interpreted_function/CMakeLists.txt
index df883bce55b..8ad93246592 100644
--- a/eval/src/tests/eval/interpreted_function/CMakeLists.txt
+++ b/eval/src/tests/eval/interpreted_function/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_interpreted_function_test_app TEST
SOURCES
interpreted_function_test.cpp
diff --git a/eval/src/tests/eval/interpreted_function/interpreted_function_test.cpp b/eval/src/tests/eval/interpreted_function/interpreted_function_test.cpp
index ba73a578f6f..05136e4f679 100644
--- a/eval/src/tests/eval/interpreted_function/interpreted_function_test.cpp
+++ b/eval/src/tests/eval/interpreted_function/interpreted_function_test.cpp
@@ -1,10 +1,12 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/fast_value.h>
#include <vespa/eval/eval/function.h>
#include <vespa/eval/eval/tensor_spec.h>
+#include <vespa/eval/eval/tensor_function.h>
#include <vespa/eval/eval/operation.h>
#include <vespa/eval/eval/interpreted_function.h>
+#include <vespa/eval/eval/compile_tensor_function.h>
#include <vespa/eval/eval/test/eval_spec.h>
#include <vespa/eval/eval/basic_nodes.h>
#include <vespa/eval/eval/simple_value.h>
@@ -168,4 +170,23 @@ TEST("require that functions with non-compilable lambdas cannot be interpreted")
//-----------------------------------------------------------------------------
+TEST("require that compilation meta-data can be collected") {
+ Stash stash;
+ const auto &x2 = tensor_function::inject(ValueType::from_spec("tensor(x[2])"), 0, stash);
+ const auto &x3 = tensor_function::inject(ValueType::from_spec("tensor(x[3])"), 1, stash);
+ const auto &concat_x5 = tensor_function::concat(x3, x2, "x", stash);
+ const auto &x5 = tensor_function::inject(ValueType::from_spec("tensor(x[5])"), 2, stash);
+ const auto &mapped_x5 = tensor_function::map(x5, operation::Relu::f, stash);
+ const auto &flag = tensor_function::inject(ValueType::from_spec("double"), 0, stash);
+ const auto &root = tensor_function::if_node(flag, concat_x5, mapped_x5, stash);
+ CTFMetaData meta;
+ InterpretedFunction ifun(FastValueBuilderFactory::get(), root, &meta);
+ fprintf(stderr, "compilation meta-data:\n");
+ for (const auto &step: meta.steps) {
+ fprintf(stderr, " %s -> %s\n", step.class_name.c_str(), step.symbol_name.c_str());
+ }
+}
+
+//-----------------------------------------------------------------------------
+
TEST_MAIN() { TEST_RUN_ALL(); }
diff --git a/eval/src/tests/eval/multiply_add/CMakeLists.txt b/eval/src/tests/eval/multiply_add/CMakeLists.txt
index 07e227a7a82..e6bef5d426d 100644
--- a/eval/src/tests/eval/multiply_add/CMakeLists.txt
+++ b/eval/src/tests/eval/multiply_add/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_multiply_add_test_app TEST
SOURCES
multiply_add_test.cpp
diff --git a/eval/src/tests/eval/multiply_add/multiply_add_test.cpp b/eval/src/tests/eval/multiply_add/multiply_add_test.cpp
index 6cee82f9de2..f3dfda3f7da 100644
--- a/eval/src/tests/eval/multiply_add/multiply_add_test.cpp
+++ b/eval/src/tests/eval/multiply_add/multiply_add_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/fast_value.h>
#include <vespa/eval/eval/function.h>
diff --git a/eval/src/tests/eval/nested_loop/CMakeLists.txt b/eval/src/tests/eval/nested_loop/CMakeLists.txt
index ccd751143b1..8bf4d0e3091 100644
--- a/eval/src/tests/eval/nested_loop/CMakeLists.txt
+++ b/eval/src/tests/eval/nested_loop/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_nested_loop_test_app TEST
SOURCES
nested_loop_test.cpp
diff --git a/eval/src/tests/eval/nested_loop/nested_loop_bench.cpp b/eval/src/tests/eval/nested_loop/nested_loop_bench.cpp
index 4a46b15096e..e611df92382 100644
--- a/eval/src/tests/eval/nested_loop/nested_loop_bench.cpp
+++ b/eval/src/tests/eval/nested_loop/nested_loop_bench.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/nested_loop.h>
#include <vespa/vespalib/util/benchmark_timer.h>
diff --git a/eval/src/tests/eval/nested_loop/nested_loop_test.cpp b/eval/src/tests/eval/nested_loop/nested_loop_test.cpp
index 27c10838b3f..caa76816599 100644
--- a/eval/src/tests/eval/nested_loop/nested_loop_test.cpp
+++ b/eval/src/tests/eval/nested_loop/nested_loop_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/nested_loop.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/eval/src/tests/eval/node_tools/CMakeLists.txt b/eval/src/tests/eval/node_tools/CMakeLists.txt
index 437aea3ac8f..e3580cb706c 100644
--- a/eval/src/tests/eval/node_tools/CMakeLists.txt
+++ b/eval/src/tests/eval/node_tools/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_node_tools_test_app TEST
SOURCES
node_tools_test.cpp
diff --git a/eval/src/tests/eval/node_tools/node_tools_test.cpp b/eval/src/tests/eval/node_tools/node_tools_test.cpp
index e8296c01d73..8500c131e51 100644
--- a/eval/src/tests/eval/node_tools/node_tools_test.cpp
+++ b/eval/src/tests/eval/node_tools/node_tools_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/function.h>
@@ -101,6 +101,7 @@ TEST("require that call node types can be copied") {
TEST_DO(verify_copy("elu(a)"));
TEST_DO(verify_copy("erf(a)"));
TEST_DO(verify_copy("bit(a,b)"));
+ TEST_DO(verify_copy("hamming(a,b)"));
}
TEST("require that tensor node types can NOT be copied (yet)") {
diff --git a/eval/src/tests/eval/node_types/CMakeLists.txt b/eval/src/tests/eval/node_types/CMakeLists.txt
index b3160e8af06..5eb4cf54672 100644
--- a/eval/src/tests/eval/node_types/CMakeLists.txt
+++ b/eval/src/tests/eval/node_types/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_node_types_test_app TEST
SOURCES
node_types_test.cpp
diff --git a/eval/src/tests/eval/node_types/node_types_test.cpp b/eval/src/tests/eval/node_types/node_types_test.cpp
index b2373f0d8f5..07975ef16ed 100644
--- a/eval/src/tests/eval/node_types/node_types_test.cpp
+++ b/eval/src/tests/eval/node_types/node_types_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/function.h>
#include <vespa/eval/eval/value_type.h>
@@ -219,6 +219,7 @@ TEST("require that various operations resolve appropriate type") {
TEST_DO(verify_op1("elu(%s)")); // Elu
TEST_DO(verify_op1("erf(%s)")); // Erf
TEST_DO(verify_op2("bit(%s,%s)")); // Bit
+ TEST_DO(verify_op2("hamming(%s,%s)")); // Hamming
}
TEST("require that map resolves correct type") {
diff --git a/eval/src/tests/eval/param_usage/CMakeLists.txt b/eval/src/tests/eval/param_usage/CMakeLists.txt
index d2f05018da5..7454c7e4c67 100644
--- a/eval/src/tests/eval/param_usage/CMakeLists.txt
+++ b/eval/src/tests/eval/param_usage/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_param_usage_test_app TEST
SOURCES
param_usage_test.cpp
diff --git a/eval/src/tests/eval/param_usage/param_usage_test.cpp b/eval/src/tests/eval/param_usage/param_usage_test.cpp
index 4a8278511b3..95168e18d80 100644
--- a/eval/src/tests/eval/param_usage/param_usage_test.cpp
+++ b/eval/src/tests/eval/param_usage/param_usage_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/function.h>
#include <vespa/eval/eval/param_usage.h>
diff --git a/eval/src/tests/eval/reference_evaluation/CMakeLists.txt b/eval/src/tests/eval/reference_evaluation/CMakeLists.txt
index 0ca6987d689..172bd042d67 100644
--- a/eval/src/tests/eval/reference_evaluation/CMakeLists.txt
+++ b/eval/src/tests/eval/reference_evaluation/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_reference_evaluation_test_app TEST
SOURCES
diff --git a/eval/src/tests/eval/reference_evaluation/reference_evaluation_test.cpp b/eval/src/tests/eval/reference_evaluation/reference_evaluation_test.cpp
index b6115b78378..74816ae6e85 100644
--- a/eval/src/tests/eval/reference_evaluation/reference_evaluation_test.cpp
+++ b/eval/src/tests/eval/reference_evaluation/reference_evaluation_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/test/reference_evaluation.h>
#include <vespa/eval/eval/function.h>
diff --git a/eval/src/tests/eval/reference_operations/CMakeLists.txt b/eval/src/tests/eval/reference_operations/CMakeLists.txt
index 46838f6fc82..311cdab0677 100644
--- a/eval/src/tests/eval/reference_operations/CMakeLists.txt
+++ b/eval/src/tests/eval/reference_operations/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_reference_operations_test_app TEST
SOURCES
diff --git a/eval/src/tests/eval/reference_operations/reference_operations_test.cpp b/eval/src/tests/eval/reference_operations/reference_operations_test.cpp
index 2edbefc7717..95b9a166db1 100644
--- a/eval/src/tests/eval/reference_operations/reference_operations_test.cpp
+++ b/eval/src/tests/eval/reference_operations/reference_operations_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/cell_type.h>
#include <vespa/eval/eval/test/reference_operations.h>
diff --git a/eval/src/tests/eval/simple_value/CMakeLists.txt b/eval/src/tests/eval/simple_value/CMakeLists.txt
index 429d3ffaf3d..1e7b325472e 100644
--- a/eval/src/tests/eval/simple_value/CMakeLists.txt
+++ b/eval/src/tests/eval/simple_value/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_simple_value_test_app TEST
SOURCES
simple_value_test.cpp
diff --git a/eval/src/tests/eval/simple_value/simple_value_test.cpp b/eval/src/tests/eval/simple_value/simple_value_test.cpp
index 57c71903bf1..6b8e6d8256d 100644
--- a/eval/src/tests/eval/simple_value/simple_value_test.cpp
+++ b/eval/src/tests/eval/simple_value/simple_value_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/simple_value.h>
#include <vespa/eval/eval/value_codec.h>
diff --git a/eval/src/tests/eval/tensor_function/CMakeLists.txt b/eval/src/tests/eval/tensor_function/CMakeLists.txt
index 3b37e88813a..8080bf3de90 100644
--- a/eval/src/tests/eval/tensor_function/CMakeLists.txt
+++ b/eval/src/tests/eval/tensor_function/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_eval_tensor_function_test_app TEST
SOURCES
tensor_function_test.cpp
diff --git a/eval/src/tests/eval/tensor_function/tensor_function_test.cpp b/eval/src/tests/eval/tensor_function/tensor_function_test.cpp
index c457f68a614..2d379628a27 100644
--- a/eval/src/tests/eval/tensor_function/tensor_function_test.cpp
+++ b/eval/src/tests/eval/tensor_function/tensor_function_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/operation.h>
#include <vespa/eval/eval/simple_value.h>
@@ -510,4 +510,18 @@ TEST("require that tensor function can be dumped for debugging") {
fprintf(stderr, "function dump -->[[%s]]<-- function dump\n", root.as_string().c_str());
}
+TEST("require that full tensor reduce expands dimension list") {
+ Stash stash;
+ const auto &num = inject(ValueType::from_spec("double"), 0, stash);
+ const auto &mat = inject(ValueType::from_spec("tensor(x[5],y[5])"), 1, stash);
+ const auto *reduce_num = as<Reduce>(reduce(num, Aggr::SUM, {}, stash));
+ const auto *reduce_mat = as<Reduce>(reduce(mat, Aggr::SUM, {}, stash));
+ ASSERT_TRUE(reduce_num);
+ ASSERT_TRUE(reduce_mat);
+ EXPECT_EQUAL(reduce_num->dimensions().size(), 0u);
+ ASSERT_EQUAL(reduce_mat->dimensions().size(), 2u);
+ EXPECT_EQUAL(reduce_mat->dimensions()[0], "x");
+ EXPECT_EQUAL(reduce_mat->dimensions()[1], "y");
+}
+
TEST_MAIN() { TEST_RUN_ALL(); }
diff --git a/eval/src/tests/eval/tensor_lambda/CMakeLists.txt b/eval/src/tests/eval/tensor_lambda/CMakeLists.txt
index 29cbbd936aa..c5d561dea91 100644
--- a/eval/src/tests/eval/tensor_lambda/CMakeLists.txt
+++ b/eval/src/tests/eval/tensor_lambda/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_tensor_lambda_test_app TEST
SOURCES
tensor_lambda_test.cpp
diff --git a/eval/src/tests/eval/tensor_lambda/tensor_lambda_test.cpp b/eval/src/tests/eval/tensor_lambda/tensor_lambda_test.cpp
index bb971c5df74..657a6ca8d0e 100644
--- a/eval/src/tests/eval/tensor_lambda/tensor_lambda_test.cpp
+++ b/eval/src/tests/eval/tensor_lambda/tensor_lambda_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/tensor_function.h>
diff --git a/eval/src/tests/eval/tensor_spec/CMakeLists.txt b/eval/src/tests/eval/tensor_spec/CMakeLists.txt
index c44fbb11527..c83bc175947 100644
--- a/eval/src/tests/eval/tensor_spec/CMakeLists.txt
+++ b/eval/src/tests/eval/tensor_spec/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_tensor_spec_test_app TEST
SOURCES
tensor_spec_test.cpp
diff --git a/eval/src/tests/eval/tensor_spec/tensor_spec_test.cpp b/eval/src/tests/eval/tensor_spec/tensor_spec_test.cpp
index aa62e52f6f4..4c5b847abc1 100644
--- a/eval/src/tests/eval/tensor_spec/tensor_spec_test.cpp
+++ b/eval/src/tests/eval/tensor_spec/tensor_spec_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/tensor_spec.h>
@@ -19,6 +19,17 @@ TEST("require that a tensor spec can be converted to and from slime") {
EXPECT_EQUAL(TensorSpec::from_slime(slime.get()), spec);
}
+TEST("require that a tensor spec can be converted to and from an expression") {
+ TensorSpec spec("tensor<float>(x[2],y{})");
+ spec.add({{"x", 0}, {"y", "xxx"}}, 1.0)
+ .add({{"x", 0}, {"y", "yyy"}}, 2.0)
+ .add({{"x", 1}, {"y", "xxx"}}, 3.0)
+ .add({{"x", 1}, {"y", "yyy"}}, 4.0);
+ vespalib::string expr = spec.to_expr();
+ fprintf(stderr, "expr: \n%s\n", expr.c_str());
+ EXPECT_EQUAL(TensorSpec::from_expr(expr), spec);
+}
+
TEST("require that tensor specs can be diffed") {
TensorSpec expect("tensor(x[2],y{})");
expect.add({{"x", 0}, {"y", "xxx"}}, 1.5)
diff --git a/eval/src/tests/eval/typed_cells/CMakeLists.txt b/eval/src/tests/eval/typed_cells/CMakeLists.txt
index d57ff33eda6..74c6e995cc4 100644
--- a/eval/src/tests/eval/typed_cells/CMakeLists.txt
+++ b/eval/src/tests/eval/typed_cells/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_typed_cells_test_app TEST
SOURCES
typed_cells_test.cpp
diff --git a/eval/src/tests/eval/typed_cells/typed_cells_test.cpp b/eval/src/tests/eval/typed_cells/typed_cells_test.cpp
index ccb522fd496..e344de63846 100644
--- a/eval/src/tests/eval/typed_cells/typed_cells_test.cpp
+++ b/eval/src/tests/eval/typed_cells/typed_cells_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/arrayref.h>
diff --git a/eval/src/tests/eval/value_cache/CMakeLists.txt b/eval/src/tests/eval/value_cache/CMakeLists.txt
index 721b14bae15..1c278d0b957 100644
--- a/eval/src/tests/eval/value_cache/CMakeLists.txt
+++ b/eval/src/tests/eval/value_cache/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_value_cache_test_app TEST
SOURCES
value_cache_test.cpp
diff --git a/eval/src/tests/eval/value_cache/tensor_loader_test.cpp b/eval/src/tests/eval/value_cache/tensor_loader_test.cpp
index 3ec57e0eecb..1a77cfe847b 100644
--- a/eval/src/tests/eval/value_cache/tensor_loader_test.cpp
+++ b/eval/src/tests/eval/value_cache/tensor_loader_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/value_cache/constant_tensor_loader.h>
#include <vespa/eval/eval/simple_value.h>
diff --git a/eval/src/tests/eval/value_cache/value_cache_test.cpp b/eval/src/tests/eval/value_cache/value_cache_test.cpp
index c8e0a8c3c4e..361931c9dbe 100644
--- a/eval/src/tests/eval/value_cache/value_cache_test.cpp
+++ b/eval/src/tests/eval/value_cache/value_cache_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/value_cache/constant_value_cache.h>
#include <vespa/eval/eval/value_cache/constant_value.h>
diff --git a/eval/src/tests/eval/value_codec/CMakeLists.txt b/eval/src/tests/eval/value_codec/CMakeLists.txt
index aa1adf10136..b901ed6f227 100644
--- a/eval/src/tests/eval/value_codec/CMakeLists.txt
+++ b/eval/src/tests/eval/value_codec/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_value_codec_test_app TEST
SOURCES
diff --git a/eval/src/tests/eval/value_codec/value_codec_test.cpp b/eval/src/tests/eval/value_codec/value_codec_test.cpp
index 99afba4aed9..acddd425ac0 100644
--- a/eval/src/tests/eval/value_codec/value_codec_test.cpp
+++ b/eval/src/tests/eval/value_codec/value_codec_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <iostream>
#include <vespa/eval/eval/simple_value.h>
diff --git a/eval/src/tests/eval/value_type/CMakeLists.txt b/eval/src/tests/eval/value_type/CMakeLists.txt
index 9f485de5feb..38ba151305e 100644
--- a/eval/src/tests/eval/value_type/CMakeLists.txt
+++ b/eval/src/tests/eval/value_type/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_value_type_test_app TEST
SOURCES
value_type_test.cpp
diff --git a/eval/src/tests/eval/value_type/value_type_test.cpp b/eval/src/tests/eval/value_type/value_type_test.cpp
index 9aec613f507..3d4872c2ab3 100644
--- a/eval/src/tests/eval/value_type/value_type_test.cpp
+++ b/eval/src/tests/eval/value_type/value_type_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/value_type.h>
#include <vespa/eval/eval/value_type_spec.h>
diff --git a/eval/src/tests/gp/ponder_nov2017/CMakeLists.txt b/eval/src/tests/gp/ponder_nov2017/CMakeLists.txt
index 7c915b46de7..e0154680372 100644
--- a/eval/src/tests/gp/ponder_nov2017/CMakeLists.txt
+++ b/eval/src/tests/gp/ponder_nov2017/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_gp_ponder_nov2017_app
SOURCES
ponder_nov2017.cpp
diff --git a/eval/src/tests/gp/ponder_nov2017/ponder_nov2017.cpp b/eval/src/tests/gp/ponder_nov2017/ponder_nov2017.cpp
index c1af2f2b74c..b3c24e0f057 100644
--- a/eval/src/tests/gp/ponder_nov2017/ponder_nov2017.cpp
+++ b/eval/src/tests/gp/ponder_nov2017/ponder_nov2017.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/signalhandler.h>
diff --git a/eval/src/tests/instruction/add_trivial_dimension_optimizer/CMakeLists.txt b/eval/src/tests/instruction/add_trivial_dimension_optimizer/CMakeLists.txt
index 70d2209da5c..db1df0b6754 100644
--- a/eval/src/tests/instruction/add_trivial_dimension_optimizer/CMakeLists.txt
+++ b/eval/src/tests/instruction/add_trivial_dimension_optimizer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_add_trivial_dimension_optimizer_test_app TEST
SOURCES
add_trivial_dimension_optimizer_test.cpp
diff --git a/eval/src/tests/instruction/add_trivial_dimension_optimizer/add_trivial_dimension_optimizer_test.cpp b/eval/src/tests/instruction/add_trivial_dimension_optimizer/add_trivial_dimension_optimizer_test.cpp
index 3ad6b3ef5dc..4f13f06e955 100644
--- a/eval/src/tests/instruction/add_trivial_dimension_optimizer/add_trivial_dimension_optimizer_test.cpp
+++ b/eval/src/tests/instruction/add_trivial_dimension_optimizer/add_trivial_dimension_optimizer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/fast_value.h>
diff --git a/eval/src/tests/instruction/best_similarity_function/CMakeLists.txt b/eval/src/tests/instruction/best_similarity_function/CMakeLists.txt
new file mode 100644
index 00000000000..dd83f4c72a8
--- /dev/null
+++ b/eval/src/tests/instruction/best_similarity_function/CMakeLists.txt
@@ -0,0 +1,9 @@
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(eval_best_similarity_function_test_app TEST
+ SOURCES
+ best_similarity_function_test.cpp
+ DEPENDS
+ vespaeval
+ GTest::GTest
+)
+vespa_add_test(NAME eval_best_similarity_function_test_app COMMAND eval_best_similarity_function_test_app)
diff --git a/eval/src/tests/instruction/best_similarity_function/best_similarity_function_test.cpp b/eval/src/tests/instruction/best_similarity_function/best_similarity_function_test.cpp
new file mode 100644
index 00000000000..b461dc756d7
--- /dev/null
+++ b/eval/src/tests/instruction/best_similarity_function/best_similarity_function_test.cpp
@@ -0,0 +1,155 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include <vespa/eval/eval/fast_value.h>
+#include <vespa/eval/eval/tensor_function.h>
+#include <vespa/eval/eval/test/eval_fixture.h>
+#include <vespa/eval/eval/test/gen_spec.h>
+#include <vespa/eval/instruction/best_similarity_function.h>
+#include <vespa/vespalib/gtest/gtest.h>
+
+using namespace vespalib;
+using namespace vespalib::eval;
+using namespace vespalib::eval::test;
+
+const ValueBuilderFactory &prod_factory = FastValueBuilderFactory::get();
+
+//-----------------------------------------------------------------------------
+
+void verify_impl(const TensorSpec &a, const TensorSpec &b, const vespalib::string &expr, bool optimized) {
+ EvalFixture::ParamRepo param_repo;
+ param_repo.add("a", a).add("b", b);
+ EvalFixture fast_fixture(prod_factory, expr, param_repo, true);
+ EXPECT_EQ(fast_fixture.result(), EvalFixture::ref(expr, param_repo));
+ EXPECT_EQ(fast_fixture.find_all<BestSimilarityFunction>().size(), optimized ? 1 : 0);
+}
+
+void verify(const TensorSpec &a, const TensorSpec &b, const vespalib::string &expr, bool optimized = true) {
+ verify_impl(a, b, expr, optimized);
+ verify_impl(b, a, expr, optimized);
+}
+
+//-----------------------------------------------------------------------------
+
+GenSpec gen_double(const vespalib::string &desc, int bias) {
+ return GenSpec::from_desc(desc).cells(CellType::DOUBLE).seq(N(bias));
+}
+
+GenSpec gen_float(const vespalib::string &desc, int bias) {
+ return GenSpec::from_desc(desc).cells(CellType::FLOAT).seq(N(bias));
+}
+
+GenSpec gen_int8(const vespalib::string &desc, int bias) {
+ return GenSpec::from_desc(desc).cells(CellType::INT8).seq(N(bias));
+}
+
+vespalib::string max_sim = "reduce(reduce(a*b,sum,d),max,b)";
+vespalib::string min_hamming = "reduce(reduce(hamming(a,b),sum,d),min,b)";
+
+//-----------------------------------------------------------------------------
+
+TEST(BestSimilarityFunctionTest, result_is_mutable) {
+ tensor_function::Inject child(ValueType::double_type(), 0);
+ BestSimilarityFunction node(ValueType::double_type(), child, child, nullptr, 1);
+ EXPECT_TRUE(node.result_is_mutable());
+}
+
+TEST(BestSimilarityFunctionTest, max_sim_can_be_optimized) {
+ verify(gen_float("A3_2B3d8", 3), gen_float("b5d8", 7), max_sim);
+ verify(gen_float("A3_2B3d8", 3), gen_float("b5_2d8", 7), max_sim);
+}
+
+TEST(BestSimilarityFunctionTest, min_hamming_can_be_optimized) {
+ verify(gen_int8("A3_2B3d8", 3), gen_int8("b5d8", 7), min_hamming);
+ verify(gen_int8("A3_2B3d8", 3), gen_int8("b5_2d8", 7), min_hamming);
+}
+
+TEST(BestSimilarityFunctionTest, result_can_be_sparse) {
+ verify(gen_float("A3_2d8", 3), gen_float("b5d8", 7), max_sim);
+ verify(gen_int8("A3_2d8", 3), gen_int8("b5_2d8", 7), min_hamming);
+}
+
+TEST(BestSimilarityFunctionTest, result_can_be_dense) {
+ verify(gen_float("B3d8", 3), gen_float("b5d8", 7), max_sim);
+ verify(gen_int8("B3d8", 3), gen_int8("b5_2d8", 7), min_hamming);
+}
+
+TEST(BestSimilarityFunctionTest, result_can_be_double) {
+ verify(gen_float("d8", 3), gen_float("b5d8", 7), max_sim);
+ verify(gen_int8("d8", 3), gen_int8("b5_2d8", 7), min_hamming);
+}
+
+TEST(BestSimilarityFunctionTest, primary_dimensions_can_be_trivial) {
+ verify(gen_float("d1", 3), gen_float("b1d1", 7), max_sim);
+ verify(gen_int8("d1", 3), gen_int8("b1d1", 7), min_hamming);
+}
+
+TEST(BestSimilarityFunctionTest, extra_trivial_dimensions_are_allowed) {
+ verify(gen_float("A1a1d8x1z1", 3), gen_float("a1b5c1d8x1y1", 7), max_sim);
+}
+
+TEST(BestSimilarityFunctionTest, allow_full_reduce_for_outer_dimension) {
+ vespalib::string my_max_sim = "reduce(reduce(a*b,sum,d),max)";
+ vespalib::string my_min_hamming = "reduce(reduce(hamming(a,b),sum,d),min)";
+ verify(gen_float("d8", 3), gen_float("b5d8", 7), my_max_sim);
+ verify(gen_int8("d8", 3), gen_int8("b5_2d8", 7), my_min_hamming);
+}
+
+vespalib::string inv_max_sim = "reduce(reduce(a*b,sum,b),max,d)";
+
+TEST(BestSimilarityFunctionTest, dimensions_can_be_inverted_if_best_dimension_is_sparse) {
+ verify(gen_float("b8", 3), gen_float("b8d5_2", 7), inv_max_sim);
+}
+
+//-----------------------------------------------------------------------------
+
+TEST(BestSimilarityFunctionTest, cell_type_must_match_operation) {
+ verify(gen_double("d8", 3), gen_double("b5d8", 7), max_sim, false);
+ verify(gen_float("d8", 3), gen_float("b5_2d8", 7), min_hamming, false);
+}
+
+TEST(BestSimilarityFunctionTest, similarity_must_use_1d_vector) {
+ vespalib::string max_sim_2d_dist = "reduce(reduce(a*b,sum,d,e),max,b)";
+ verify(gen_float("d8_1", 3), gen_float("b5d8_1", 7), max_sim, false);
+ verify(gen_float("d8e1", 3), gen_float("b5d8e1", 7), max_sim_2d_dist, false);
+}
+
+TEST(BestSimilarityFunctionTest, similarity_dimension_must_be_inner) {
+ verify(gen_float("d8e3", 3), gen_float("b5d8", 7), max_sim, false);
+ verify(gen_float("b8", 3), gen_float("b8d5", 7), inv_max_sim, false);
+}
+
+TEST(BestSimilarityFunctionTest, alternatives_must_use_a_single_dimension) {
+ vespalib::string max_sim_2d_best = "reduce(reduce(a*b,sum,d),max,a,b)";
+ verify(gen_float("d8", 3), gen_float("a1b5d8", 7), max_sim_2d_best, false);
+}
+
+TEST(BestSimilarityFunctionTest, alternatives_dimension_can_not_be_common) {
+ verify(gen_float("b5d8", 3), gen_float("b5d8", 7), max_sim, false);
+}
+
+TEST(BestSimilarityFunctionTest, extra_common_nontrivial_dimensions_not_allowed) {
+ verify(gen_float("a3d8", 3), gen_float("a3b5d8", 7), max_sim, false);
+ verify(gen_float("a3_2d8", 3), gen_float("a3_2b5d8", 7), max_sim, false);
+}
+
+TEST(BestSimilarityFunctionTest, secondary_tensor_must_not_contain_extra_nontrivial_dimensions) {
+ verify(gen_float("d8", 3), gen_float("a2b5d8", 7), max_sim, false);
+ verify(gen_float("d8", 3), gen_float("a2_1b5d8", 7), max_sim, false);
+}
+
+//-----------------------------------------------------------------------------
+
+TEST(BestSimilarityFunctionTest, similar_expressions_are_not_optimized) {
+ vespalib::string other_join = "reduce(reduce(a+b,sum,d),max,b)";
+ vespalib::string other_reduce = "reduce(reduce(a*b,min,d),max,b)";
+ vespalib::string mismatch_best_sim = "reduce(reduce(a*b,sum,d),min,b)";
+ vespalib::string mismatch_best_hamming = "reduce(reduce(hamming(a,b),sum,d),max,b)";
+ verify(gen_float("d8", 3), gen_float("b5d8", 7), other_join, false);
+ verify(gen_float("d8", 3), gen_float("b5d8", 7), other_reduce, false);
+ verify(gen_float("d8", 3), gen_float("b5d8", 7), mismatch_best_sim, false);
+ verify(gen_int8("d8", 3), gen_int8("b5d8", 7), mismatch_best_hamming, false);
+}
+
+//-----------------------------------------------------------------------------
+
+GTEST_MAIN_RUN_ALL_TESTS()
diff --git a/eval/src/tests/instruction/dense_dot_product_function/CMakeLists.txt b/eval/src/tests/instruction/dense_dot_product_function/CMakeLists.txt
index 396c404b6cf..36296f922d1 100644
--- a/eval/src/tests/instruction/dense_dot_product_function/CMakeLists.txt
+++ b/eval/src/tests/instruction/dense_dot_product_function/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_dense_dot_product_function_test_app TEST
SOURCES
dense_dot_product_function_test.cpp
diff --git a/eval/src/tests/instruction/dense_dot_product_function/dense_dot_product_function_test.cpp b/eval/src/tests/instruction/dense_dot_product_function/dense_dot_product_function_test.cpp
index 8421564f38a..f64561911a5 100644
--- a/eval/src/tests/instruction/dense_dot_product_function/dense_dot_product_function_test.cpp
+++ b/eval/src/tests/instruction/dense_dot_product_function/dense_dot_product_function_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/fast_value.h>
#include <vespa/eval/eval/tensor_function.h>
diff --git a/eval/src/tests/instruction/dense_hamming_distance/CMakeLists.txt b/eval/src/tests/instruction/dense_hamming_distance/CMakeLists.txt
new file mode 100644
index 00000000000..3d18f9613b3
--- /dev/null
+++ b/eval/src/tests/instruction/dense_hamming_distance/CMakeLists.txt
@@ -0,0 +1,9 @@
+
+vespa_add_executable(eval_dense_hamming_distance_test_app TEST
+ SOURCES
+ dense_hamming_distance_test.cpp
+ DEPENDS
+ vespaeval
+ GTest::GTest
+)
+vespa_add_test(NAME eval_dense_hamming_distance_test_app COMMAND eval_dense_hamming_distance_test_app)
diff --git a/eval/src/tests/instruction/dense_hamming_distance/dense_hamming_distance_test.cpp b/eval/src/tests/instruction/dense_hamming_distance/dense_hamming_distance_test.cpp
new file mode 100644
index 00000000000..8eaa0e72ad5
--- /dev/null
+++ b/eval/src/tests/instruction/dense_hamming_distance/dense_hamming_distance_test.cpp
@@ -0,0 +1,91 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include <vespa/eval/eval/fast_value.h>
+#include <vespa/eval/eval/tensor_function.h>
+#include <vespa/eval/eval/test/eval_fixture.h>
+#include <vespa/eval/eval/test/gen_spec.h>
+#include <vespa/eval/instruction/dense_hamming_distance.h>
+#include <vespa/vespalib/util/stash.h>
+#include <vespa/vespalib/util/stringfmt.h>
+
+#include <vespa/vespalib/util/require.h>
+#include <vespa/vespalib/gtest/gtest.h>
+
+#include <vespa/log/log.h>
+LOG_SETUP("dense_hamming_distance_function_test");
+
+using namespace vespalib;
+using namespace vespalib::eval;
+using namespace vespalib::eval::test;
+
+const ValueBuilderFactory &prod_factory = FastValueBuilderFactory::get();
+
+struct FunInfo {
+ using LookFor = DenseHammingDistance;
+ void verify(const LookFor &fun) const {
+ EXPECT_TRUE(fun.result_is_mutable());
+ }
+};
+
+void assertOptimized(const vespalib::string &expr) {
+ CellTypeSpace just_int8({CellType::INT8}, 2);
+ EvalFixture::verify<FunInfo>(expr, {FunInfo{}}, just_int8);
+ CellTypeSpace just_double({CellType::DOUBLE}, 2);
+ EvalFixture::verify<FunInfo>(expr, {}, just_double);
+}
+
+void assertNotOptimized(const vespalib::string &expr) {
+ CellTypeSpace just_int8({CellType::INT8}, 2);
+ EvalFixture::verify<FunInfo>(expr, {}, just_int8);
+}
+
+TEST(DenseHammingDistanceOptimizer, hamming_distance_works_with_tensor_function) {
+ assertOptimized("reduce(hamming(x5$1,x5$2),sum)");
+ assertOptimized("reduce(hamming(x5$1,x5$2),sum,x)");
+ assertOptimized("reduce(join(x5$1,x5$2,f(x,y)(hamming(x,y))),sum)");
+ assertOptimized("reduce(join(x5$1,x5$2,f(x,y)(hamming(x,y))),sum,x)");
+}
+
+TEST(DenseHammingDistanceOptimizer, hamming_distance_with_compatible_dimensions_is_optimized) {
+ // various vector sizes
+ assertOptimized("reduce(hamming(x1$1,x1$2),sum)");
+ assertOptimized("reduce(hamming(x3$1,x3$2),sum)");
+ assertOptimized("reduce(hamming(x7$1,x7$2),sum)");
+ assertOptimized("reduce(hamming(x8$1,x8$2),sum)");
+ assertOptimized("reduce(hamming(x9$1,x9$2),sum)");
+ assertOptimized("reduce(hamming(x17$1,x17$2),sum)");
+ // multiple dimensions
+ assertOptimized("reduce(hamming(x3y3$1,x3y3$2),sum)");
+ assertOptimized("reduce(hamming(x3y4$1,x3y4$2),sum)");
+ // with trivial dimensions
+ assertOptimized("reduce(hamming(a1x3$1,x3$2),sum)");
+ assertOptimized("reduce(hamming(x3$1z1,x3$2),sum)");
+ assertOptimized("reduce(hamming(a1x3$1,b1x3$2z1),sum)");
+}
+
+TEST(DenseHammingDistanceOptimizer, hamming_distance_with_mapped_dimensions_is_NOT_optimized) {
+ assertNotOptimized("reduce(hamming(x3_1$1,x3_1$2),sum)");
+ assertNotOptimized("reduce(hamming(x3_1y2$1,x3_1y2$2),sum)");
+}
+
+TEST(DenseHammingDistanceOptimizer, hamming_distance_with_incompatible_dimensions_is_NOT_optimized) {
+ assertNotOptimized("reduce(hamming(x3,y3),sum)");
+ assertNotOptimized("reduce(hamming(y3,x3),sum)");
+ assertNotOptimized("reduce(hamming(x3,x3y3),sum)");
+ assertNotOptimized("reduce(hamming(x3y3,x3),sum)");
+}
+
+TEST(DenseHammingDistanceOptimizer, expressions_similar_to_hamming_distance_are_not_optimized) {
+ assertNotOptimized("reduce(hamming(x3$1,x3$2),prod)");
+}
+
+TEST(DenseHammingDistanceOptimizer, result_must_be_double_to_trigger_optimization) {
+ assertOptimized("reduce(hamming(x3y3$1,x3y3$2),sum,x,y)");
+ assertNotOptimized("reduce(hamming(x3y3$1,x3y3$2),sum,x)");
+ assertNotOptimized("reduce(hamming(x3y3$1,x3y3$2),sum,y)");
+}
+
+//-----------------------------------------------------------------------------
+
+GTEST_MAIN_RUN_ALL_TESTS()
+
diff --git a/eval/src/tests/instruction/dense_inplace_join_function/CMakeLists.txt b/eval/src/tests/instruction/dense_inplace_join_function/CMakeLists.txt
index 2808675bc78..5c89c90c8cd 100644
--- a/eval/src/tests/instruction/dense_inplace_join_function/CMakeLists.txt
+++ b/eval/src/tests/instruction/dense_inplace_join_function/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_dense_inplace_join_function_test_app TEST
SOURCES
dense_inplace_join_function_test.cpp
diff --git a/eval/src/tests/instruction/dense_inplace_join_function/dense_inplace_join_function_test.cpp b/eval/src/tests/instruction/dense_inplace_join_function/dense_inplace_join_function_test.cpp
index 53ac70c9a86..a4ee6ee5eee 100644
--- a/eval/src/tests/instruction/dense_inplace_join_function/dense_inplace_join_function_test.cpp
+++ b/eval/src/tests/instruction/dense_inplace_join_function/dense_inplace_join_function_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/tensor_function.h>
diff --git a/eval/src/tests/instruction/dense_multi_matmul_function/CMakeLists.txt b/eval/src/tests/instruction/dense_multi_matmul_function/CMakeLists.txt
index 1619f42c897..dda4cf4d1de 100644
--- a/eval/src/tests/instruction/dense_multi_matmul_function/CMakeLists.txt
+++ b/eval/src/tests/instruction/dense_multi_matmul_function/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_dense_multi_matmul_function_test_app TEST
SOURCES
dense_multi_matmul_function_test.cpp
diff --git a/eval/src/tests/instruction/dense_multi_matmul_function/dense_multi_matmul_function_test.cpp b/eval/src/tests/instruction/dense_multi_matmul_function/dense_multi_matmul_function_test.cpp
index 9da7f379246..8ee0ba90af9 100644
--- a/eval/src/tests/instruction/dense_multi_matmul_function/dense_multi_matmul_function_test.cpp
+++ b/eval/src/tests/instruction/dense_multi_matmul_function/dense_multi_matmul_function_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/fast_value.h>
#include <vespa/eval/eval/operation.h>
diff --git a/eval/src/tests/instruction/dense_replace_type_function/CMakeLists.txt b/eval/src/tests/instruction/dense_replace_type_function/CMakeLists.txt
index dd4a8a58082..571abc625dc 100644
--- a/eval/src/tests/instruction/dense_replace_type_function/CMakeLists.txt
+++ b/eval/src/tests/instruction/dense_replace_type_function/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_dense_replace_type_function_test_app TEST
SOURCES
dense_replace_type_function_test.cpp
diff --git a/eval/src/tests/instruction/dense_replace_type_function/dense_replace_type_function_test.cpp b/eval/src/tests/instruction/dense_replace_type_function/dense_replace_type_function_test.cpp
index 00af70d9136..dc03fbd394b 100644
--- a/eval/src/tests/instruction/dense_replace_type_function/dense_replace_type_function_test.cpp
+++ b/eval/src/tests/instruction/dense_replace_type_function/dense_replace_type_function_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/fast_value.h>
diff --git a/eval/src/tests/instruction/dense_simple_expand_function/CMakeLists.txt b/eval/src/tests/instruction/dense_simple_expand_function/CMakeLists.txt
index 9bb22da7d88..0cd8a0224cc 100644
--- a/eval/src/tests/instruction/dense_simple_expand_function/CMakeLists.txt
+++ b/eval/src/tests/instruction/dense_simple_expand_function/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_dense_simple_expand_function_test_app TEST
SOURCES
dense_simple_expand_function_test.cpp
diff --git a/eval/src/tests/instruction/dense_simple_expand_function/dense_simple_expand_function_test.cpp b/eval/src/tests/instruction/dense_simple_expand_function/dense_simple_expand_function_test.cpp
index d68f8c8b412..d89ebf44912 100644
--- a/eval/src/tests/instruction/dense_simple_expand_function/dense_simple_expand_function_test.cpp
+++ b/eval/src/tests/instruction/dense_simple_expand_function/dense_simple_expand_function_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/tensor_function.h>
#include <vespa/eval/instruction/dense_simple_expand_function.h>
diff --git a/eval/src/tests/instruction/dense_single_reduce_function/CMakeLists.txt b/eval/src/tests/instruction/dense_single_reduce_function/CMakeLists.txt
index 42b00699c31..cdfcdae68b7 100644
--- a/eval/src/tests/instruction/dense_single_reduce_function/CMakeLists.txt
+++ b/eval/src/tests/instruction/dense_single_reduce_function/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_dense_single_reduce_function_test_app TEST
SOURCES
dense_single_reduce_function_test.cpp
diff --git a/eval/src/tests/instruction/dense_single_reduce_function/dense_single_reduce_function_test.cpp b/eval/src/tests/instruction/dense_single_reduce_function/dense_single_reduce_function_test.cpp
index 6e476f7e094..7e88fe18a75 100644
--- a/eval/src/tests/instruction/dense_single_reduce_function/dense_single_reduce_function_test.cpp
+++ b/eval/src/tests/instruction/dense_single_reduce_function/dense_single_reduce_function_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/tensor_function.h>
diff --git a/eval/src/tests/instruction/dense_xw_product_function/CMakeLists.txt b/eval/src/tests/instruction/dense_xw_product_function/CMakeLists.txt
index 648c10e64bd..3cc2104025e 100644
--- a/eval/src/tests/instruction/dense_xw_product_function/CMakeLists.txt
+++ b/eval/src/tests/instruction/dense_xw_product_function/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_dense_xw_product_function_test_app TEST
SOURCES
dense_xw_product_function_test.cpp
diff --git a/eval/src/tests/instruction/dense_xw_product_function/dense_xw_product_function_test.cpp b/eval/src/tests/instruction/dense_xw_product_function/dense_xw_product_function_test.cpp
index aa4e175d0a7..ecaa06fbb3e 100644
--- a/eval/src/tests/instruction/dense_xw_product_function/dense_xw_product_function_test.cpp
+++ b/eval/src/tests/instruction/dense_xw_product_function/dense_xw_product_function_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/operation.h>
diff --git a/eval/src/tests/instruction/fast_rename_optimizer/CMakeLists.txt b/eval/src/tests/instruction/fast_rename_optimizer/CMakeLists.txt
index 3c4c3967b50..caa0b986a40 100644
--- a/eval/src/tests/instruction/fast_rename_optimizer/CMakeLists.txt
+++ b/eval/src/tests/instruction/fast_rename_optimizer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_fast_rename_optimizer_test_app TEST
SOURCES
fast_rename_optimizer_test.cpp
diff --git a/eval/src/tests/instruction/fast_rename_optimizer/fast_rename_optimizer_test.cpp b/eval/src/tests/instruction/fast_rename_optimizer/fast_rename_optimizer_test.cpp
index 58a3b119847..39264f50a8d 100644
--- a/eval/src/tests/instruction/fast_rename_optimizer/fast_rename_optimizer_test.cpp
+++ b/eval/src/tests/instruction/fast_rename_optimizer/fast_rename_optimizer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/tensor_function.h>
#include <vespa/eval/instruction/replace_type_function.h>
diff --git a/eval/src/tests/instruction/generic_cell_cast/CMakeLists.txt b/eval/src/tests/instruction/generic_cell_cast/CMakeLists.txt
index 3c7e9c5b83f..2ce8a54aa20 100644
--- a/eval/src/tests/instruction/generic_cell_cast/CMakeLists.txt
+++ b/eval/src/tests/instruction/generic_cell_cast/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_generic_cell_cast_test_app TEST
SOURCES
generic_cell_cast_test.cpp
diff --git a/eval/src/tests/instruction/generic_cell_cast/generic_cell_cast_test.cpp b/eval/src/tests/instruction/generic_cell_cast/generic_cell_cast_test.cpp
index 6e4ac6fca2b..71d38fd0f7e 100644
--- a/eval/src/tests/instruction/generic_cell_cast/generic_cell_cast_test.cpp
+++ b/eval/src/tests/instruction/generic_cell_cast/generic_cell_cast_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/simple_value.h>
#include <vespa/eval/eval/fast_value.h>
diff --git a/eval/src/tests/instruction/generic_concat/CMakeLists.txt b/eval/src/tests/instruction/generic_concat/CMakeLists.txt
index ddc6d4f5944..c49713c285a 100644
--- a/eval/src/tests/instruction/generic_concat/CMakeLists.txt
+++ b/eval/src/tests/instruction/generic_concat/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_generic_concat_test_app TEST
SOURCES
generic_concat_test.cpp
diff --git a/eval/src/tests/instruction/generic_concat/generic_concat_test.cpp b/eval/src/tests/instruction/generic_concat/generic_concat_test.cpp
index a74b0f99841..503b91c0fff 100644
--- a/eval/src/tests/instruction/generic_concat/generic_concat_test.cpp
+++ b/eval/src/tests/instruction/generic_concat/generic_concat_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/simple_value.h>
#include <vespa/eval/eval/fast_value.h>
diff --git a/eval/src/tests/instruction/generic_create/CMakeLists.txt b/eval/src/tests/instruction/generic_create/CMakeLists.txt
index eefb4f6683a..b608cdc0074 100644
--- a/eval/src/tests/instruction/generic_create/CMakeLists.txt
+++ b/eval/src/tests/instruction/generic_create/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_generic_create_test_app TEST
SOURCES
generic_create_test.cpp
diff --git a/eval/src/tests/instruction/generic_create/generic_create_test.cpp b/eval/src/tests/instruction/generic_create/generic_create_test.cpp
index 9389c8401e9..b1084232cc2 100644
--- a/eval/src/tests/instruction/generic_create/generic_create_test.cpp
+++ b/eval/src/tests/instruction/generic_create/generic_create_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/simple_value.h>
#include <vespa/eval/eval/fast_value.h>
diff --git a/eval/src/tests/instruction/generic_join/CMakeLists.txt b/eval/src/tests/instruction/generic_join/CMakeLists.txt
index 13fc6550d3c..b0fc16cc19a 100644
--- a/eval/src/tests/instruction/generic_join/CMakeLists.txt
+++ b/eval/src/tests/instruction/generic_join/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_generic_join_test_app TEST
SOURCES
generic_join_test.cpp
diff --git a/eval/src/tests/instruction/generic_join/generic_join_test.cpp b/eval/src/tests/instruction/generic_join/generic_join_test.cpp
index a4f645c5dee..99499045147 100644
--- a/eval/src/tests/instruction/generic_join/generic_join_test.cpp
+++ b/eval/src/tests/instruction/generic_join/generic_join_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/simple_value.h>
#include <vespa/eval/eval/fast_value.h>
diff --git a/eval/src/tests/instruction/generic_map/CMakeLists.txt b/eval/src/tests/instruction/generic_map/CMakeLists.txt
index 84e69e56541..0e4cf130bf2 100644
--- a/eval/src/tests/instruction/generic_map/CMakeLists.txt
+++ b/eval/src/tests/instruction/generic_map/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_generic_map_test_app TEST
SOURCES
generic_map_test.cpp
diff --git a/eval/src/tests/instruction/generic_map/generic_map_test.cpp b/eval/src/tests/instruction/generic_map/generic_map_test.cpp
index 54ba0ea2a31..771dfb26ec3 100644
--- a/eval/src/tests/instruction/generic_map/generic_map_test.cpp
+++ b/eval/src/tests/instruction/generic_map/generic_map_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/simple_value.h>
#include <vespa/eval/eval/fast_value.h>
diff --git a/eval/src/tests/instruction/generic_merge/CMakeLists.txt b/eval/src/tests/instruction/generic_merge/CMakeLists.txt
index 154b04cb32f..0aed1165b4d 100644
--- a/eval/src/tests/instruction/generic_merge/CMakeLists.txt
+++ b/eval/src/tests/instruction/generic_merge/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_generic_merge_test_app TEST
SOURCES
generic_merge_test.cpp
diff --git a/eval/src/tests/instruction/generic_merge/generic_merge_test.cpp b/eval/src/tests/instruction/generic_merge/generic_merge_test.cpp
index 701fb26d3ff..5c89ede5caa 100644
--- a/eval/src/tests/instruction/generic_merge/generic_merge_test.cpp
+++ b/eval/src/tests/instruction/generic_merge/generic_merge_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/simple_value.h>
#include <vespa/eval/eval/fast_value.h>
diff --git a/eval/src/tests/instruction/generic_peek/CMakeLists.txt b/eval/src/tests/instruction/generic_peek/CMakeLists.txt
index 11732c865ec..1a3604c55a4 100644
--- a/eval/src/tests/instruction/generic_peek/CMakeLists.txt
+++ b/eval/src/tests/instruction/generic_peek/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_generic_peek_test_app TEST
SOURCES
generic_peek_test.cpp
diff --git a/eval/src/tests/instruction/generic_peek/generic_peek_test.cpp b/eval/src/tests/instruction/generic_peek/generic_peek_test.cpp
index 4b773b07734..d8558a16e65 100644
--- a/eval/src/tests/instruction/generic_peek/generic_peek_test.cpp
+++ b/eval/src/tests/instruction/generic_peek/generic_peek_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/simple_value.h>
#include <vespa/eval/eval/fast_value.h>
diff --git a/eval/src/tests/instruction/generic_reduce/CMakeLists.txt b/eval/src/tests/instruction/generic_reduce/CMakeLists.txt
index f04664ae64c..591e5f0c499 100644
--- a/eval/src/tests/instruction/generic_reduce/CMakeLists.txt
+++ b/eval/src/tests/instruction/generic_reduce/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_generic_reduce_test_app TEST
SOURCES
generic_reduce_test.cpp
diff --git a/eval/src/tests/instruction/generic_reduce/generic_reduce_test.cpp b/eval/src/tests/instruction/generic_reduce/generic_reduce_test.cpp
index e3eea84fdea..fe531785278 100644
--- a/eval/src/tests/instruction/generic_reduce/generic_reduce_test.cpp
+++ b/eval/src/tests/instruction/generic_reduce/generic_reduce_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/simple_value.h>
#include <vespa/eval/eval/fast_value.h>
diff --git a/eval/src/tests/instruction/generic_rename/CMakeLists.txt b/eval/src/tests/instruction/generic_rename/CMakeLists.txt
index 98af0fe0212..0f70b099800 100644
--- a/eval/src/tests/instruction/generic_rename/CMakeLists.txt
+++ b/eval/src/tests/instruction/generic_rename/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_generic_rename_test_app TEST
SOURCES
generic_rename_test.cpp
diff --git a/eval/src/tests/instruction/generic_rename/generic_rename_test.cpp b/eval/src/tests/instruction/generic_rename/generic_rename_test.cpp
index ca14149f1ff..51a139958dd 100644
--- a/eval/src/tests/instruction/generic_rename/generic_rename_test.cpp
+++ b/eval/src/tests/instruction/generic_rename/generic_rename_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/simple_value.h>
#include <vespa/eval/eval/fast_value.h>
diff --git a/eval/src/tests/instruction/index_lookup_table/CMakeLists.txt b/eval/src/tests/instruction/index_lookup_table/CMakeLists.txt
index 0343ed75978..1f941a8a197 100644
--- a/eval/src/tests/instruction/index_lookup_table/CMakeLists.txt
+++ b/eval/src/tests/instruction/index_lookup_table/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_index_lookup_table_test_app TEST
SOURCES
index_lookup_table_test.cpp
diff --git a/eval/src/tests/instruction/index_lookup_table/index_lookup_table_test.cpp b/eval/src/tests/instruction/index_lookup_table/index_lookup_table_test.cpp
index cc0a7e33c1d..12518a644d2 100644
--- a/eval/src/tests/instruction/index_lookup_table/index_lookup_table_test.cpp
+++ b/eval/src/tests/instruction/index_lookup_table/index_lookup_table_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/instruction/index_lookup_table.h>
#include <vespa/eval/eval/function.h>
diff --git a/eval/src/tests/instruction/inplace_map_function/CMakeLists.txt b/eval/src/tests/instruction/inplace_map_function/CMakeLists.txt
index 7b45cbed2e2..87a1043eef6 100644
--- a/eval/src/tests/instruction/inplace_map_function/CMakeLists.txt
+++ b/eval/src/tests/instruction/inplace_map_function/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_inplace_map_function_test_app TEST
SOURCES
inplace_map_function_test.cpp
diff --git a/eval/src/tests/instruction/inplace_map_function/inplace_map_function_test.cpp b/eval/src/tests/instruction/inplace_map_function/inplace_map_function_test.cpp
index 1193060b05a..daa5721fe8a 100644
--- a/eval/src/tests/instruction/inplace_map_function/inplace_map_function_test.cpp
+++ b/eval/src/tests/instruction/inplace_map_function/inplace_map_function_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/tensor_function.h>
#include <vespa/eval/instruction/inplace_map_function.h>
diff --git a/eval/src/tests/instruction/join_with_number/CMakeLists.txt b/eval/src/tests/instruction/join_with_number/CMakeLists.txt
index 9bb170eae17..9af3251f5e7 100644
--- a/eval/src/tests/instruction/join_with_number/CMakeLists.txt
+++ b/eval/src/tests/instruction/join_with_number/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_join_with_number_function_test_app TEST
SOURCES
join_with_number_function_test.cpp
diff --git a/eval/src/tests/instruction/join_with_number/join_with_number_function_test.cpp b/eval/src/tests/instruction/join_with_number/join_with_number_function_test.cpp
index 4a0eb00e7e7..4efb09ea53f 100644
--- a/eval/src/tests/instruction/join_with_number/join_with_number_function_test.cpp
+++ b/eval/src/tests/instruction/join_with_number/join_with_number_function_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/tensor_function.h>
diff --git a/eval/src/tests/instruction/mixed_inner_product_function/CMakeLists.txt b/eval/src/tests/instruction/mixed_inner_product_function/CMakeLists.txt
index 16f59dc28ed..ad8a77eeb16 100644
--- a/eval/src/tests/instruction/mixed_inner_product_function/CMakeLists.txt
+++ b/eval/src/tests/instruction/mixed_inner_product_function/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_mixed_inner_product_function_test_app TEST
SOURCES
mixed_inner_product_function_test.cpp
diff --git a/eval/src/tests/instruction/mixed_inner_product_function/mixed_inner_product_function_test.cpp b/eval/src/tests/instruction/mixed_inner_product_function/mixed_inner_product_function_test.cpp
index 839c7bcb64a..d376b29da08 100644
--- a/eval/src/tests/instruction/mixed_inner_product_function/mixed_inner_product_function_test.cpp
+++ b/eval/src/tests/instruction/mixed_inner_product_function/mixed_inner_product_function_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/tensor_function.h>
#include <vespa/eval/eval/test/eval_fixture.h>
diff --git a/eval/src/tests/instruction/mixed_simple_join_function/CMakeLists.txt b/eval/src/tests/instruction/mixed_simple_join_function/CMakeLists.txt
index f603c600691..a1a23ee27c7 100644
--- a/eval/src/tests/instruction/mixed_simple_join_function/CMakeLists.txt
+++ b/eval/src/tests/instruction/mixed_simple_join_function/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_mixed_simple_join_function_test_app TEST
SOURCES
mixed_simple_join_function_test.cpp
diff --git a/eval/src/tests/instruction/mixed_simple_join_function/mixed_simple_join_function_test.cpp b/eval/src/tests/instruction/mixed_simple_join_function/mixed_simple_join_function_test.cpp
index 9150fb604be..9adec5a549c 100644
--- a/eval/src/tests/instruction/mixed_simple_join_function/mixed_simple_join_function_test.cpp
+++ b/eval/src/tests/instruction/mixed_simple_join_function/mixed_simple_join_function_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/fast_value.h>
diff --git a/eval/src/tests/instruction/pow_as_map_optimizer/CMakeLists.txt b/eval/src/tests/instruction/pow_as_map_optimizer/CMakeLists.txt
index 25eeb73df37..8f9a36ef471 100644
--- a/eval/src/tests/instruction/pow_as_map_optimizer/CMakeLists.txt
+++ b/eval/src/tests/instruction/pow_as_map_optimizer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_pow_as_map_optimizer_test_app TEST
SOURCES
pow_as_map_optimizer_test.cpp
diff --git a/eval/src/tests/instruction/pow_as_map_optimizer/pow_as_map_optimizer_test.cpp b/eval/src/tests/instruction/pow_as_map_optimizer/pow_as_map_optimizer_test.cpp
index d123f9c89a6..42a652751f0 100644
--- a/eval/src/tests/instruction/pow_as_map_optimizer/pow_as_map_optimizer_test.cpp
+++ b/eval/src/tests/instruction/pow_as_map_optimizer/pow_as_map_optimizer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/tensor_function.h>
#include <vespa/eval/instruction/inplace_map_function.h>
diff --git a/eval/src/tests/instruction/remove_trivial_dimension_optimizer/CMakeLists.txt b/eval/src/tests/instruction/remove_trivial_dimension_optimizer/CMakeLists.txt
index a23a97ca856..93ca0a87226 100644
--- a/eval/src/tests/instruction/remove_trivial_dimension_optimizer/CMakeLists.txt
+++ b/eval/src/tests/instruction/remove_trivial_dimension_optimizer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_remove_trivial_dimension_optimizer_test_app TEST
SOURCES
remove_trivial_dimension_optimizer_test.cpp
diff --git a/eval/src/tests/instruction/remove_trivial_dimension_optimizer/remove_trivial_dimension_optimizer_test.cpp b/eval/src/tests/instruction/remove_trivial_dimension_optimizer/remove_trivial_dimension_optimizer_test.cpp
index 6439ec305dd..27a937e08a3 100644
--- a/eval/src/tests/instruction/remove_trivial_dimension_optimizer/remove_trivial_dimension_optimizer_test.cpp
+++ b/eval/src/tests/instruction/remove_trivial_dimension_optimizer/remove_trivial_dimension_optimizer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/tensor_function.h>
diff --git a/eval/src/tests/instruction/sparse_dot_product_function/CMakeLists.txt b/eval/src/tests/instruction/sparse_dot_product_function/CMakeLists.txt
index 076f1d79796..3afb91240b5 100644
--- a/eval/src/tests/instruction/sparse_dot_product_function/CMakeLists.txt
+++ b/eval/src/tests/instruction/sparse_dot_product_function/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_sparse_dot_product_function_test_app TEST
SOURCES
sparse_dot_product_function_test.cpp
diff --git a/eval/src/tests/instruction/sparse_dot_product_function/sparse_dot_product_function_test.cpp b/eval/src/tests/instruction/sparse_dot_product_function/sparse_dot_product_function_test.cpp
index 96f156ccdb9..5324a0be1e8 100644
--- a/eval/src/tests/instruction/sparse_dot_product_function/sparse_dot_product_function_test.cpp
+++ b/eval/src/tests/instruction/sparse_dot_product_function/sparse_dot_product_function_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/fast_value.h>
#include <vespa/eval/eval/simple_value.h>
diff --git a/eval/src/tests/instruction/sparse_full_overlap_join_function/CMakeLists.txt b/eval/src/tests/instruction/sparse_full_overlap_join_function/CMakeLists.txt
index 54841140278..80bd2559de4 100644
--- a/eval/src/tests/instruction/sparse_full_overlap_join_function/CMakeLists.txt
+++ b/eval/src/tests/instruction/sparse_full_overlap_join_function/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_sparse_full_overlap_join_function_test_app TEST
SOURCES
sparse_full_overlap_join_function_test.cpp
diff --git a/eval/src/tests/instruction/sparse_full_overlap_join_function/sparse_full_overlap_join_function_test.cpp b/eval/src/tests/instruction/sparse_full_overlap_join_function/sparse_full_overlap_join_function_test.cpp
index e3001b17602..e6b680a664a 100644
--- a/eval/src/tests/instruction/sparse_full_overlap_join_function/sparse_full_overlap_join_function_test.cpp
+++ b/eval/src/tests/instruction/sparse_full_overlap_join_function/sparse_full_overlap_join_function_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/fast_value.h>
#include <vespa/eval/eval/simple_value.h>
diff --git a/eval/src/tests/instruction/sparse_merge_function/CMakeLists.txt b/eval/src/tests/instruction/sparse_merge_function/CMakeLists.txt
index f905bdd8c1b..ce7e49e3bdf 100644
--- a/eval/src/tests/instruction/sparse_merge_function/CMakeLists.txt
+++ b/eval/src/tests/instruction/sparse_merge_function/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_sparse_merge_function_test_app TEST
SOURCES
sparse_merge_function_test.cpp
diff --git a/eval/src/tests/instruction/sparse_merge_function/sparse_merge_function_test.cpp b/eval/src/tests/instruction/sparse_merge_function/sparse_merge_function_test.cpp
index 8bd27bd9a03..af3b9be99fc 100644
--- a/eval/src/tests/instruction/sparse_merge_function/sparse_merge_function_test.cpp
+++ b/eval/src/tests/instruction/sparse_merge_function/sparse_merge_function_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/fast_value.h>
#include <vespa/eval/eval/simple_value.h>
diff --git a/eval/src/tests/instruction/sparse_no_overlap_join_function/CMakeLists.txt b/eval/src/tests/instruction/sparse_no_overlap_join_function/CMakeLists.txt
index 87b58360366..bcacad91e55 100644
--- a/eval/src/tests/instruction/sparse_no_overlap_join_function/CMakeLists.txt
+++ b/eval/src/tests/instruction/sparse_no_overlap_join_function/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_sparse_no_overlap_join_function_test_app TEST
SOURCES
sparse_no_overlap_join_function_test.cpp
diff --git a/eval/src/tests/instruction/sparse_no_overlap_join_function/sparse_no_overlap_join_function_test.cpp b/eval/src/tests/instruction/sparse_no_overlap_join_function/sparse_no_overlap_join_function_test.cpp
index 60755b50c1d..6b58e64b7c2 100644
--- a/eval/src/tests/instruction/sparse_no_overlap_join_function/sparse_no_overlap_join_function_test.cpp
+++ b/eval/src/tests/instruction/sparse_no_overlap_join_function/sparse_no_overlap_join_function_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/fast_value.h>
#include <vespa/eval/eval/simple_value.h>
diff --git a/eval/src/tests/instruction/sum_max_dot_product_function/CMakeLists.txt b/eval/src/tests/instruction/sum_max_dot_product_function/CMakeLists.txt
index d9276ec3431..16e6a6caa1d 100644
--- a/eval/src/tests/instruction/sum_max_dot_product_function/CMakeLists.txt
+++ b/eval/src/tests/instruction/sum_max_dot_product_function/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_sum_max_dot_product_function_test_app TEST
SOURCES
sum_max_dot_product_function_test.cpp
diff --git a/eval/src/tests/instruction/sum_max_dot_product_function/sum_max_dot_product_function_test.cpp b/eval/src/tests/instruction/sum_max_dot_product_function/sum_max_dot_product_function_test.cpp
index f68c089e784..1b1517c255c 100644
--- a/eval/src/tests/instruction/sum_max_dot_product_function/sum_max_dot_product_function_test.cpp
+++ b/eval/src/tests/instruction/sum_max_dot_product_function/sum_max_dot_product_function_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/fast_value.h>
#include <vespa/eval/eval/tensor_function.h>
@@ -115,11 +115,9 @@ TEST(SumMaxDotProduct, similar_expressions_are_not_optimized) {
vespalib::string max_sum_expr = "reduce(reduce(reduce(a*b,sum,z),sum,y),max,x)";
vespalib::string not_dp_expr1 = "reduce(reduce(reduce(a+b,sum,z),max,y),sum,x)";
vespalib::string not_dp_expr2 = "reduce(reduce(reduce(a*b,min,z),max,y),sum,x)";
- vespalib::string sum_all_expr = "reduce(reduce(reduce(a*b,sum,z),max,y),sum)";
assert_not_optimized(query, document, max_sum_expr);
assert_not_optimized(query, document, not_dp_expr1);
assert_not_optimized(query, document, not_dp_expr2);
- assert_not_optimized(query, document, sum_all_expr);
}
//-----------------------------------------------------------------------------
diff --git a/eval/src/tests/instruction/unpack_bits_function/CMakeLists.txt b/eval/src/tests/instruction/unpack_bits_function/CMakeLists.txt
index 9416ce1fa4c..ed4deda9704 100644
--- a/eval/src/tests/instruction/unpack_bits_function/CMakeLists.txt
+++ b/eval/src/tests/instruction/unpack_bits_function/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_unpack_bits_function_test_app TEST
SOURCES
unpack_bits_function_test.cpp
diff --git a/eval/src/tests/instruction/unpack_bits_function/unpack_bits_function_test.cpp b/eval/src/tests/instruction/unpack_bits_function/unpack_bits_function_test.cpp
index c0d7cdc43e7..7de8f244d12 100644
--- a/eval/src/tests/instruction/unpack_bits_function/unpack_bits_function_test.cpp
+++ b/eval/src/tests/instruction/unpack_bits_function/unpack_bits_function_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/fast_value.h>
#include <vespa/eval/eval/simple_value.h>
diff --git a/eval/src/tests/instruction/vector_from_doubles_function/CMakeLists.txt b/eval/src/tests/instruction/vector_from_doubles_function/CMakeLists.txt
index 5b2e47ec498..dee5dcb51a9 100644
--- a/eval/src/tests/instruction/vector_from_doubles_function/CMakeLists.txt
+++ b/eval/src/tests/instruction/vector_from_doubles_function/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_vector_from_doubles_function_test_app TEST
SOURCES
vector_from_doubles_function_test.cpp
diff --git a/eval/src/tests/instruction/vector_from_doubles_function/vector_from_doubles_function_test.cpp b/eval/src/tests/instruction/vector_from_doubles_function/vector_from_doubles_function_test.cpp
index 635296ef78c..b73ffb0db08 100644
--- a/eval/src/tests/instruction/vector_from_doubles_function/vector_from_doubles_function_test.cpp
+++ b/eval/src/tests/instruction/vector_from_doubles_function/vector_from_doubles_function_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/tensor_function.h>
diff --git a/eval/src/tests/streamed/value/CMakeLists.txt b/eval/src/tests/streamed/value/CMakeLists.txt
index d2ccced8c14..d65887b3fa9 100644
--- a/eval/src/tests/streamed/value/CMakeLists.txt
+++ b/eval/src/tests/streamed/value/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_streamed_value_test_app TEST
SOURCES
streamed_value_test.cpp
diff --git a/eval/src/tests/streamed/value/streamed_value_test.cpp b/eval/src/tests/streamed/value/streamed_value_test.cpp
index bb286dbfdc8..ca32c6976f2 100644
--- a/eval/src/tests/streamed/value/streamed_value_test.cpp
+++ b/eval/src/tests/streamed/value/streamed_value_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/streamed/streamed_value_builder_factory.h>
#include <vespa/eval/eval/test/reference_operations.h>
diff --git a/eval/src/tests/tensor/binary_format/CMakeLists.txt b/eval/src/tests/tensor/binary_format/CMakeLists.txt
index ac52c2b0365..c63e158b480 100644
--- a/eval/src/tests/tensor/binary_format/CMakeLists.txt
+++ b/eval/src/tests/tensor/binary_format/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_tensor_binary_format_test_app TEST
SOURCES
binary_format_test.cpp
diff --git a/eval/src/tests/tensor/binary_format/binary_format_test.cpp b/eval/src/tests/tensor/binary_format/binary_format_test.cpp
index d0e05d303a2..bec62b0e0a6 100644
--- a/eval/src/tests/tensor/binary_format/binary_format_test.cpp
+++ b/eval/src/tests/tensor/binary_format/binary_format_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/test/test_io.h>
#include <vespa/eval/eval/test/gen_spec.h>
diff --git a/eval/src/tests/tensor/instruction_benchmark/CMakeLists.txt b/eval/src/tests/tensor/instruction_benchmark/CMakeLists.txt
index e553692dfcb..2623e72d85b 100644
--- a/eval/src/tests/tensor/instruction_benchmark/CMakeLists.txt
+++ b/eval/src/tests/tensor/instruction_benchmark/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespa-tensor-instructions-benchmark TEST
SOURCES
instruction_benchmark.cpp
diff --git a/eval/src/tests/tensor/instruction_benchmark/instruction_benchmark.cpp b/eval/src/tests/tensor/instruction_benchmark/instruction_benchmark.cpp
index ec9a5419ffb..786301a252f 100644
--- a/eval/src/tests/tensor/instruction_benchmark/instruction_benchmark.cpp
+++ b/eval/src/tests/tensor/instruction_benchmark/instruction_benchmark.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Microbenchmark exploring performance differences between
// interpreted function instructions.
diff --git a/eval/src/tests/tensor/onnx_wrapper/CMakeLists.txt b/eval/src/tests/tensor/onnx_wrapper/CMakeLists.txt
index 9c92f75476c..156f16e1783 100644
--- a/eval/src/tests/tensor/onnx_wrapper/CMakeLists.txt
+++ b/eval/src/tests/tensor/onnx_wrapper/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_onnx_wrapper_test_app TEST
SOURCES
onnx_wrapper_test.cpp
diff --git a/eval/src/tests/tensor/onnx_wrapper/dynamic.py b/eval/src/tests/tensor/onnx_wrapper/dynamic.py
index cdf59c4f700..d7a6472811d 100755
--- a/eval/src/tests/tensor/onnx_wrapper/dynamic.py
+++ b/eval/src/tests/tensor/onnx_wrapper/dynamic.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/eval/src/tests/tensor/onnx_wrapper/float_to_int8.py b/eval/src/tests/tensor/onnx_wrapper/float_to_int8.py
index 2a8e47b3ffa..1a3de6a14bc 100755
--- a/eval/src/tests/tensor/onnx_wrapper/float_to_int8.py
+++ b/eval/src/tests/tensor/onnx_wrapper/float_to_int8.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/eval/src/tests/tensor/onnx_wrapper/guess_batch.py b/eval/src/tests/tensor/onnx_wrapper/guess_batch.py
index 63b2c84e934..e0176b3b7c6 100755
--- a/eval/src/tests/tensor/onnx_wrapper/guess_batch.py
+++ b/eval/src/tests/tensor/onnx_wrapper/guess_batch.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/eval/src/tests/tensor/onnx_wrapper/int_types.py b/eval/src/tests/tensor/onnx_wrapper/int_types.py
index e5adf035e4b..2484ba941a0 100755
--- a/eval/src/tests/tensor/onnx_wrapper/int_types.py
+++ b/eval/src/tests/tensor/onnx_wrapper/int_types.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/eval/src/tests/tensor/onnx_wrapper/onnx_wrapper_test.cpp b/eval/src/tests/tensor/onnx_wrapper/onnx_wrapper_test.cpp
index 6b45172ef80..21f0044faf1 100644
--- a/eval/src/tests/tensor/onnx_wrapper/onnx_wrapper_test.cpp
+++ b/eval/src/tests/tensor/onnx_wrapper/onnx_wrapper_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/tensor_spec.h>
#include <vespa/eval/eval/int8float.h>
@@ -178,6 +178,9 @@ TEST(OnnxTest, simple_onnx_model_can_be_evaluated)
ctx.eval();
EXPECT_EQ(output.cells().typify<float>()[0], 80.0);
//-------------------------------------------------------------------------
+ ctx.clear_results();
+ EXPECT_EQ(output.cells().typify<float>()[0], 0.0);
+ //-------------------------------------------------------------------------
}
TEST(OnnxTest, dynamic_onnx_model_can_be_evaluated)
@@ -224,6 +227,9 @@ TEST(OnnxTest, dynamic_onnx_model_can_be_evaluated)
ctx.eval();
EXPECT_EQ(output.cells().typify<float>()[0], 81.0);
//-------------------------------------------------------------------------
+ ctx.clear_results();
+ EXPECT_EQ(output.cells().typify<float>()[0], 0.0);
+ //-------------------------------------------------------------------------
}
TEST(OnnxTest, int_types_onnx_model_can_be_evaluated)
@@ -270,6 +276,9 @@ TEST(OnnxTest, int_types_onnx_model_can_be_evaluated)
ctx.eval();
EXPECT_EQ(output.cells().typify<double>()[0], 80.0);
//-------------------------------------------------------------------------
+ ctx.clear_results();
+ EXPECT_EQ(output.cells().typify<double>()[0], 0.0);
+ //-------------------------------------------------------------------------
}
TEST(OnnxTest, we_guess_batch_dimension_size_when_inference_fails) {
@@ -311,6 +320,15 @@ TEST(OnnxTest, we_guess_batch_dimension_size_when_inference_fails) {
EXPECT_EQ(out_3, expect_3);
EXPECT_EQ(out_4, expect_4);
//-------------------------------------------------------------------------
+ auto zero_3 = TensorSpec::from_expr("tensor<float>(d0[3]):[0,0,0]");
+ auto zero_4 = TensorSpec::from_expr("tensor<float>(d0[4]):[0,0,0,0]");
+ ctx_3.clear_results();
+ EXPECT_EQ(TensorSpec::from_value(ctx_3.get_result(0)), zero_3);
+ EXPECT_EQ(TensorSpec::from_value(ctx_4.get_result(0)), expect_4);
+ ctx_4.clear_results();
+ EXPECT_EQ(TensorSpec::from_value(ctx_3.get_result(0)), zero_3);
+ EXPECT_EQ(TensorSpec::from_value(ctx_4.get_result(0)), zero_4);
+ //-------------------------------------------------------------------------
}
TEST(OnnxTest, zero_copy_unstable_types) {
@@ -356,6 +374,14 @@ TEST(OnnxTest, zero_copy_unstable_types) {
EXPECT_EQ(cells16.typify<BFloat16>()[1], 2.0);
EXPECT_EQ(cells16.typify<BFloat16>()[2], 3.0);
//-------------------------------------------------------------------------
+ ctx.clear_results();
+ EXPECT_EQ(cells8.typify<Int8Float>()[0], 0.0);
+ EXPECT_EQ(cells8.typify<Int8Float>()[1], 0.0);
+ EXPECT_EQ(cells8.typify<Int8Float>()[2], 0.0);
+ EXPECT_EQ(cells16.typify<BFloat16>()[0], 0.0);
+ EXPECT_EQ(cells16.typify<BFloat16>()[1], 0.0);
+ EXPECT_EQ(cells16.typify<BFloat16>()[2], 0.0);
+ //-------------------------------------------------------------------------
}
TEST(OnnxTest, converted_unstable_types) {
@@ -401,6 +427,14 @@ TEST(OnnxTest, converted_unstable_types) {
EXPECT_EQ(cells16.typify<BFloat16>()[1], 2.0);
EXPECT_EQ(cells16.typify<BFloat16>()[2], 3.0);
//-------------------------------------------------------------------------
+ ctx.clear_results();
+ EXPECT_EQ(cells8.typify<Int8Float>()[0], 0.0);
+ EXPECT_EQ(cells8.typify<Int8Float>()[1], 0.0);
+ EXPECT_EQ(cells8.typify<Int8Float>()[2], 0.0);
+ EXPECT_EQ(cells16.typify<BFloat16>()[0], 0.0);
+ EXPECT_EQ(cells16.typify<BFloat16>()[1], 0.0);
+ EXPECT_EQ(cells16.typify<BFloat16>()[2], 0.0);
+ //-------------------------------------------------------------------------
}
TEST(OnnxTest, inspect_float_to_int8_conversion) {
diff --git a/eval/src/tests/tensor/onnx_wrapper/simple.py b/eval/src/tests/tensor/onnx_wrapper/simple.py
index c8db58b5ebb..d34910c2243 100755
--- a/eval/src/tests/tensor/onnx_wrapper/simple.py
+++ b/eval/src/tests/tensor/onnx_wrapper/simple.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/eval/src/tests/tensor/onnx_wrapper/unstable_types.py b/eval/src/tests/tensor/onnx_wrapper/unstable_types.py
index 94a1975a560..60911e76da2 100755
--- a/eval/src/tests/tensor/onnx_wrapper/unstable_types.py
+++ b/eval/src/tests/tensor/onnx_wrapper/unstable_types.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/eval/src/tests/tensor/tensor_conformance/CMakeLists.txt b/eval/src/tests/tensor/tensor_conformance/CMakeLists.txt
index c883a592543..549d48b0652 100644
--- a/eval/src/tests/tensor/tensor_conformance/CMakeLists.txt
+++ b/eval/src/tests/tensor/tensor_conformance/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(eval_tensor_tensor_conformance_test_app TEST
SOURCES
tensor_conformance_test.cpp
diff --git a/eval/src/tests/tensor/tensor_conformance/tensor_conformance_test.cpp b/eval/src/tests/tensor/tensor_conformance/tensor_conformance_test.cpp
index 8271e8b57ee..ab580ef0dbe 100644
--- a/eval/src/tests/tensor/tensor_conformance/tensor_conformance_test.cpp
+++ b/eval/src/tests/tensor/tensor_conformance/tensor_conformance_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/eval/src/vespa/eval/CMakeLists.txt b/eval/src/vespa/eval/CMakeLists.txt
index 4160bdf8f34..343987a06a8 100644
--- a/eval/src/vespa/eval/CMakeLists.txt
+++ b/eval/src/vespa/eval/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespaeval
SOURCES
$<TARGET_OBJECTS:eval_eval>
diff --git a/eval/src/vespa/eval/eval/CMakeLists.txt b/eval/src/vespa/eval/eval/CMakeLists.txt
index 639ac3b5864..09ca3b83353 100644
--- a/eval/src/vespa/eval/eval/CMakeLists.txt
+++ b/eval/src/vespa/eval/eval/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(eval_eval OBJECT
SOURCES
aggr.cpp
@@ -13,6 +13,7 @@ vespa_add_library(eval_eval OBJECT
fast_addr_map.cpp
fast_forest.cpp
fast_value.cpp
+ feature_name_extractor.cpp
function.cpp
gbdt.cpp
int8float.cpp
diff --git a/eval/src/vespa/eval/eval/aggr.cpp b/eval/src/vespa/eval/eval/aggr.cpp
index a73cc4314c6..70bae43b3d7 100644
--- a/eval/src/vespa/eval/eval/aggr.cpp
+++ b/eval/src/vespa/eval/eval/aggr.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "aggr.h"
#include <vespa/vespalib/util/stash.h>
diff --git a/eval/src/vespa/eval/eval/aggr.h b/eval/src/vespa/eval/eval/aggr.h
index fe70107af79..a932d0ac932 100644
--- a/eval/src/vespa/eval/eval/aggr.h
+++ b/eval/src/vespa/eval/eval/aggr.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/array_array_map.cpp b/eval/src/vespa/eval/eval/array_array_map.cpp
index 93e17eaddc6..e9e1dd80062 100644
--- a/eval/src/vespa/eval/eval/array_array_map.cpp
+++ b/eval/src/vespa/eval/eval/array_array_map.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "array_array_map.h"
diff --git a/eval/src/vespa/eval/eval/array_array_map.h b/eval/src/vespa/eval/eval/array_array_map.h
index f49e3e4edbb..3c070210680 100644
--- a/eval/src/vespa/eval/eval/array_array_map.h
+++ b/eval/src/vespa/eval/eval/array_array_map.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/basic_nodes.cpp b/eval/src/vespa/eval/eval/basic_nodes.cpp
index 98ce50b2543..454936ca818 100644
--- a/eval/src/vespa/eval/eval/basic_nodes.cpp
+++ b/eval/src/vespa/eval/eval/basic_nodes.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "basic_nodes.h"
#include "node_traverser.h"
diff --git a/eval/src/vespa/eval/eval/basic_nodes.h b/eval/src/vespa/eval/eval/basic_nodes.h
index c6b19f6ce12..919b04f8e17 100644
--- a/eval/src/vespa/eval/eval/basic_nodes.h
+++ b/eval/src/vespa/eval/eval/basic_nodes.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/call_nodes.cpp b/eval/src/vespa/eval/eval/call_nodes.cpp
index 798583cf89a..991c9a10b87 100644
--- a/eval/src/vespa/eval/eval/call_nodes.cpp
+++ b/eval/src/vespa/eval/eval/call_nodes.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "call_nodes.h"
#include "node_visitor.h"
@@ -44,6 +44,7 @@ CallRepo::CallRepo() : _map() {
add(nodes::Elu());
add(nodes::Erf());
add(nodes::Bit());
+ add(nodes::Hamming());
}
} // namespace vespalib::eval::nodes
diff --git a/eval/src/vespa/eval/eval/call_nodes.h b/eval/src/vespa/eval/eval/call_nodes.h
index 945aba69596..9f7b5a94a73 100644
--- a/eval/src/vespa/eval/eval/call_nodes.h
+++ b/eval/src/vespa/eval/eval/call_nodes.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -140,6 +140,7 @@ struct Sigmoid : CallHelper<Sigmoid> { Sigmoid() : Helper("sigmoid", 1) {} };
struct Elu : CallHelper<Elu> { Elu() : Helper("elu", 1) {} };
struct Erf : CallHelper<Erf> { Erf() : Helper("erf", 1) {} };
struct Bit : CallHelper<Bit> { Bit() : Helper("bit", 2) {} };
+struct Hamming : CallHelper<Hamming> { Hamming() : Helper("hamming", 2) {} };
//-----------------------------------------------------------------------------
diff --git a/eval/src/vespa/eval/eval/cell_type.cpp b/eval/src/vespa/eval/eval/cell_type.cpp
index 94bd0b14573..767dc1f4ec4 100644
--- a/eval/src/vespa/eval/eval/cell_type.cpp
+++ b/eval/src/vespa/eval/eval/cell_type.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "cell_type.h"
#include <stdio.h>
diff --git a/eval/src/vespa/eval/eval/cell_type.h b/eval/src/vespa/eval/eval/cell_type.h
index 79750c5c875..a371e618f37 100644
--- a/eval/src/vespa/eval/eval/cell_type.h
+++ b/eval/src/vespa/eval/eval/cell_type.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/check_type.h b/eval/src/vespa/eval/eval/check_type.h
index 80eb6469cad..0502d5acbc4 100644
--- a/eval/src/vespa/eval/eval/check_type.h
+++ b/eval/src/vespa/eval/eval/check_type.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/compile_tensor_function.cpp b/eval/src/vespa/eval/eval/compile_tensor_function.cpp
index 4f45aa731b5..ba46ad573ba 100644
--- a/eval/src/vespa/eval/eval/compile_tensor_function.cpp
+++ b/eval/src/vespa/eval/eval/compile_tensor_function.cpp
@@ -1,12 +1,15 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "compile_tensor_function.h"
#include "tensor_function.h"
+#include <vespa/vespalib/util/classname.h>
+
namespace vespalib::eval {
namespace {
+using vespalib::getClassName;
using State = InterpretedFunction::State;
using Instruction = InterpretedFunction::Instruction;
@@ -36,7 +39,16 @@ struct ProgramCompiler {
Stash &stash;
std::vector<Frame> stack;
std::vector<Instruction> prog;
- ProgramCompiler(const ValueBuilderFactory &factory_in, Stash &stash_in) : factory(factory_in), stash(stash_in), stack(), prog() {}
+ CTFMetaData *meta;
+ ProgramCompiler(const ValueBuilderFactory &factory_in, Stash &stash_in, CTFMetaData *meta_in)
+ : factory(factory_in), stash(stash_in), stack(), prog(), meta(meta_in) {}
+ ~ProgramCompiler();
+
+ void maybe_add_meta(const TensorFunction &node, const Instruction &instr) {
+ if (meta != nullptr) {
+ meta->steps.emplace_back(getClassName(node), instr.resolve_symbol());
+ }
+ }
void append(const std::vector<Instruction> &other_prog) {
prog.insert(prog.end(), other_prog.begin(), other_prog.end());
@@ -44,9 +56,11 @@ struct ProgramCompiler {
void open(const TensorFunction &node) {
if (auto if_node = as<tensor_function::If>(node)) {
- append(compile_tensor_function(factory, if_node->cond(), stash));
- auto true_prog = compile_tensor_function(factory, if_node->true_child(), stash);
- auto false_prog = compile_tensor_function(factory, if_node->false_child(), stash);
+ append(compile_tensor_function(factory, if_node->cond(), stash, meta));
+ maybe_add_meta(node, Instruction(op_skip_if_false));
+ auto true_prog = compile_tensor_function(factory, if_node->true_child(), stash, meta);
+ maybe_add_meta(node, Instruction(op_skip));
+ auto false_prog = compile_tensor_function(factory, if_node->false_child(), stash, meta);
true_prog.emplace_back(op_skip, false_prog.size());
prog.emplace_back(op_skip_if_false, true_prog.size());
append(true_prog);
@@ -58,6 +72,7 @@ struct ProgramCompiler {
void close(const TensorFunction &node) {
prog.push_back(node.compile_self(factory, stash));
+ maybe_add_meta(node, prog.back());
}
std::vector<Instruction> compile(const TensorFunction &function) {
@@ -73,11 +88,14 @@ struct ProgramCompiler {
return std::move(prog);
}
};
+ProgramCompiler::~ProgramCompiler() = default;
} // namespace vespalib::eval::<unnamed>
-std::vector<Instruction> compile_tensor_function(const ValueBuilderFactory &factory, const TensorFunction &function, Stash &stash) {
- ProgramCompiler compiler(factory, stash);
+CTFMetaData::~CTFMetaData() = default;
+
+std::vector<Instruction> compile_tensor_function(const ValueBuilderFactory &factory, const TensorFunction &function, Stash &stash, CTFMetaData *meta) {
+ ProgramCompiler compiler(factory, stash, meta);
return compiler.compile(function);
}
diff --git a/eval/src/vespa/eval/eval/compile_tensor_function.h b/eval/src/vespa/eval/eval/compile_tensor_function.h
index b1526f21c5e..daee68f46ee 100644
--- a/eval/src/vespa/eval/eval/compile_tensor_function.h
+++ b/eval/src/vespa/eval/eval/compile_tensor_function.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -12,6 +12,33 @@ namespace vespalib::eval {
struct ValueBuilderFactory;
struct TensorFunction;
-std::vector<InterpretedFunction::Instruction> compile_tensor_function(const ValueBuilderFactory &factory, const TensorFunction &function, Stash &stash);
+/**
+ * Meta-data related to the compilation of a tensor function that may
+ * be optionally collected. Each tensor function tree node will be
+ * represented by a single 'Step' containing the class name of the
+ * corresponding tree node and the symbol name of the low-level
+ * function it compiles to. Steps are ordered according to the
+ * instructions of the final program. Note that each 'If' node will
+ * produce 2 steps; one for the conditional jump after the 'if'
+ * condition has been calculated and one for the unconditional jump
+ * after the 'true' branch.
+ **/
+struct CTFMetaData {
+ struct Step {
+ vespalib::string class_name;
+ vespalib::string symbol_name;
+ Step(vespalib::string &&class_name_in,
+ vespalib::string &&symbol_name_in) noexcept
+ : class_name(std::move(class_name_in)),
+ symbol_name(std::move(symbol_name_in))
+ {
+ }
+ };
+ std::vector<Step> steps;
+ ~CTFMetaData();
+};
+
+std::vector<InterpretedFunction::Instruction> compile_tensor_function(const ValueBuilderFactory &factory, const TensorFunction &function, Stash &stash,
+ CTFMetaData *meta);
} // namespace vespalib::eval
diff --git a/eval/src/vespa/eval/eval/delete_node.cpp b/eval/src/vespa/eval/eval/delete_node.cpp
index 52e713b6c82..fb391fef5b0 100644
--- a/eval/src/vespa/eval/eval/delete_node.cpp
+++ b/eval/src/vespa/eval/eval/delete_node.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "key_gen.h"
#include "node_visitor.h"
diff --git a/eval/src/vespa/eval/eval/delete_node.h b/eval/src/vespa/eval/eval/delete_node.h
index da683cd2fa3..376eba0653f 100644
--- a/eval/src/vespa/eval/eval/delete_node.h
+++ b/eval/src/vespa/eval/eval/delete_node.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/dense_cells_value.cpp b/eval/src/vespa/eval/eval/dense_cells_value.cpp
index a699153242d..94b65d6452f 100644
--- a/eval/src/vespa/eval/eval/dense_cells_value.cpp
+++ b/eval/src/vespa/eval/eval/dense_cells_value.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dense_cells_value.h"
diff --git a/eval/src/vespa/eval/eval/dense_cells_value.h b/eval/src/vespa/eval/eval/dense_cells_value.h
index ccf6c1388aa..7d951364570 100644
--- a/eval/src/vespa/eval/eval/dense_cells_value.h
+++ b/eval/src/vespa/eval/eval/dense_cells_value.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/value.h>
#include <cassert>
diff --git a/eval/src/vespa/eval/eval/double_value_builder.cpp b/eval/src/vespa/eval/eval/double_value_builder.cpp
index 24215104cee..b54d77734d0 100644
--- a/eval/src/vespa/eval/eval/double_value_builder.cpp
+++ b/eval/src/vespa/eval/eval/double_value_builder.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "double_value_builder.h"
diff --git a/eval/src/vespa/eval/eval/double_value_builder.h b/eval/src/vespa/eval/eval/double_value_builder.h
index 4d5aa258b5f..f29482d97b0 100644
--- a/eval/src/vespa/eval/eval/double_value_builder.h
+++ b/eval/src/vespa/eval/eval/double_value_builder.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/extract_bit.h b/eval/src/vespa/eval/eval/extract_bit.h
index ecf56b33b02..7972850eb0f 100644
--- a/eval/src/vespa/eval/eval/extract_bit.h
+++ b/eval/src/vespa/eval/eval/extract_bit.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/fast_addr_map.cpp b/eval/src/vespa/eval/eval/fast_addr_map.cpp
index ea74e8f85ce..97c2de64ed9 100644
--- a/eval/src/vespa/eval/eval/fast_addr_map.cpp
+++ b/eval/src/vespa/eval/eval/fast_addr_map.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fast_addr_map.h"
#include <vespa/vespalib/stllike/hashtable.hpp>
diff --git a/eval/src/vespa/eval/eval/fast_addr_map.h b/eval/src/vespa/eval/eval/fast_addr_map.h
index 7df6bd7fafc..a3b73afba6d 100644
--- a/eval/src/vespa/eval/eval/fast_addr_map.h
+++ b/eval/src/vespa/eval/eval/fast_addr_map.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/fast_value.cpp b/eval/src/vespa/eval/eval/fast_value.cpp
index 07d76bb6c97..9217ef13a75 100644
--- a/eval/src/vespa/eval/eval/fast_value.cpp
+++ b/eval/src/vespa/eval/eval/fast_value.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fast_value.h"
#include <vespa/vespalib/util/typify.h>
diff --git a/eval/src/vespa/eval/eval/fast_value.h b/eval/src/vespa/eval/eval/fast_value.h
index c6280b492db..9f9d2e198f7 100644
--- a/eval/src/vespa/eval/eval/fast_value.h
+++ b/eval/src/vespa/eval/eval/fast_value.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/fast_value.hpp b/eval/src/vespa/eval/eval/fast_value.hpp
index a8e1e38eba2..66b44dbbf49 100644
--- a/eval/src/vespa/eval/eval/fast_value.hpp
+++ b/eval/src/vespa/eval/eval/fast_value.hpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "value.h"
#include "fast_addr_map.h"
diff --git a/searchlib/src/vespa/searchlib/features/rankingexpression/feature_name_extractor.cpp b/eval/src/vespa/eval/eval/feature_name_extractor.cpp
index 1987f476780..43a1e62ee42 100644
--- a/searchlib/src/vespa/searchlib/features/rankingexpression/feature_name_extractor.cpp
+++ b/eval/src/vespa/eval/eval/feature_name_extractor.cpp
@@ -1,10 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "feature_name_extractor.h"
-namespace search {
-namespace features {
-namespace rankingexpression {
+namespace vespalib::eval {
namespace {
@@ -81,6 +79,4 @@ FeatureNameExtractor::extract_symbol(const char *pos_in, const char *end_in,
pos_out = pos_in;
}
-} // namespace rankingexpression
-} // namespace features
-} // namespace search
+}
diff --git a/eval/src/vespa/eval/eval/feature_name_extractor.h b/eval/src/vespa/eval/eval/feature_name_extractor.h
new file mode 100644
index 00000000000..e940de8cfc2
--- /dev/null
+++ b/eval/src/vespa/eval/eval/feature_name_extractor.h
@@ -0,0 +1,18 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "function.h"
+
+namespace vespalib::eval {
+
+/**
+ * Custom symbol extractor used to extract ranking feature names when
+ * parsing ranking expressions.
+ **/
+struct FeatureNameExtractor : public vespalib::eval::SymbolExtractor {
+ void extract_symbol(const char *pos_in, const char *end_in,
+ const char *&pos_out, vespalib::string &symbol_out) const override;
+};
+
+}
diff --git a/eval/src/vespa/eval/eval/function.cpp b/eval/src/vespa/eval/eval/function.cpp
index 580a9b120d5..0f3294543ca 100644
--- a/eval/src/vespa/eval/eval/function.cpp
+++ b/eval/src/vespa/eval/eval/function.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "function.h"
#include "basic_nodes.h"
diff --git a/eval/src/vespa/eval/eval/function.h b/eval/src/vespa/eval/eval/function.h
index 48b28d94d0b..61f2c9c2f24 100644
--- a/eval/src/vespa/eval/eval/function.h
+++ b/eval/src/vespa/eval/eval/function.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/gbdt.cpp b/eval/src/vespa/eval/eval/gbdt.cpp
index 45a737996bd..5816e0057fa 100644
--- a/eval/src/vespa/eval/eval/gbdt.cpp
+++ b/eval/src/vespa/eval/eval/gbdt.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "gbdt.h"
#include "vm_forest.h"
diff --git a/eval/src/vespa/eval/eval/gbdt.h b/eval/src/vespa/eval/eval/gbdt.h
index 8005c7c3fc3..7da44955386 100644
--- a/eval/src/vespa/eval/eval/gbdt.h
+++ b/eval/src/vespa/eval/eval/gbdt.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/hamming_distance.h b/eval/src/vespa/eval/eval/hamming_distance.h
new file mode 100644
index 00000000000..50c59c46a60
--- /dev/null
+++ b/eval/src/vespa/eval/eval/hamming_distance.h
@@ -0,0 +1,13 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+namespace vespalib::eval {
+
+inline double hamming_distance(double a, double b) {
+ uint8_t x = (uint8_t) a;
+ uint8_t y = (uint8_t) b;
+ return __builtin_popcount(x ^ y);
+}
+
+}
diff --git a/eval/src/vespa/eval/eval/inline_operation.h b/eval/src/vespa/eval/eval/inline_operation.h
index d52705e652d..9b862b59e37 100644
--- a/eval/src/vespa/eval/eval/inline_operation.h
+++ b/eval/src/vespa/eval/eval/inline_operation.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/int8float.cpp b/eval/src/vespa/eval/eval/int8float.cpp
index 38af441fd08..374ebfa9df3 100644
--- a/eval/src/vespa/eval/eval/int8float.cpp
+++ b/eval/src/vespa/eval/eval/int8float.cpp
@@ -1,3 +1,3 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "int8float.h"
diff --git a/eval/src/vespa/eval/eval/int8float.h b/eval/src/vespa/eval/eval/int8float.h
index 7279d519bed..b77e51a04a7 100644
--- a/eval/src/vespa/eval/eval/int8float.h
+++ b/eval/src/vespa/eval/eval/int8float.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/interpreted_function.cpp b/eval/src/vespa/eval/eval/interpreted_function.cpp
index 10801f276d7..12945edf9de 100644
--- a/eval/src/vespa/eval/eval/interpreted_function.cpp
+++ b/eval/src/vespa/eval/eval/interpreted_function.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "interpreted_function.h"
#include "node_visitor.h"
@@ -9,6 +9,7 @@
#include "compile_tensor_function.h"
#include <vespa/vespalib/util/classname.h>
#include <vespa/eval/eval/llvm/compile_cache.h>
+#include <vespa/eval/eval/llvm/addr_to_symbol.h>
#include <vespa/vespalib/util/benchmark_timer.h>
#include <set>
@@ -60,18 +61,27 @@ InterpretedFunction::Context::Context(const InterpretedFunction &ifun)
{
}
+vespalib::string
+InterpretedFunction::Instruction::resolve_symbol() const
+{
+ if (function == nullptr) {
+ return "<inject_param>";
+ }
+ return addr_to_symbol((const void *)function);
+}
+
InterpretedFunction::Instruction
InterpretedFunction::Instruction::nop()
{
return Instruction(my_nop);
}
-InterpretedFunction::InterpretedFunction(const ValueBuilderFactory &factory, const TensorFunction &function)
+InterpretedFunction::InterpretedFunction(const ValueBuilderFactory &factory, const TensorFunction &function, CTFMetaData *meta)
: _program(),
_stash(),
_factory(factory)
{
- _program = compile_tensor_function(factory, function, _stash);
+ _program = compile_tensor_function(factory, function, _stash, meta);
}
InterpretedFunction::InterpretedFunction(const ValueBuilderFactory &factory, const nodes::Node &root, const NodeTypes &types)
@@ -81,7 +91,7 @@ InterpretedFunction::InterpretedFunction(const ValueBuilderFactory &factory, con
{
const TensorFunction &plain_fun = make_tensor_function(factory, root, types, _stash);
const TensorFunction &optimized = optimize_tensor_function(factory, plain_fun, _stash);
- _program = compile_tensor_function(factory, optimized, _stash);
+ _program = compile_tensor_function(factory, optimized, _stash, nullptr);
}
InterpretedFunction::~InterpretedFunction() = default;
diff --git a/eval/src/vespa/eval/eval/interpreted_function.h b/eval/src/vespa/eval/eval/interpreted_function.h
index 829ae6e3b12..b5eaf3a8b9c 100644
--- a/eval/src/vespa/eval/eval/interpreted_function.h
+++ b/eval/src/vespa/eval/eval/interpreted_function.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -13,6 +13,7 @@ namespace vespalib::eval {
namespace nodes { struct Node; }
struct TensorFunction;
class TensorSpec;
+struct CTFMetaData;
/**
* A Function that has been prepared for execution. This will
@@ -72,6 +73,7 @@ public:
: function(function_in), param(0) {}
Instruction(op_function function_in, uint64_t param_in) noexcept
: function(function_in), param(param_in) {}
+ vespalib::string resolve_symbol() const;
void perform(State &state) const {
if (function == nullptr) {
state.stack.push_back(state.params->resolve(param, state.stash));
@@ -93,7 +95,9 @@ private:
public:
typedef std::unique_ptr<InterpretedFunction> UP;
// for testing; use with care; the tensor function must be kept alive
- InterpretedFunction(const ValueBuilderFactory &factory, const TensorFunction &function);
+ InterpretedFunction(const ValueBuilderFactory &factory, const TensorFunction &function, CTFMetaData *meta);
+ InterpretedFunction(const ValueBuilderFactory &factory, const TensorFunction &function)
+ : InterpretedFunction(factory, function, nullptr) {}
InterpretedFunction(const ValueBuilderFactory &factory, const nodes::Node &root, const NodeTypes &types);
InterpretedFunction(const ValueBuilderFactory &factory, const Function &function, const NodeTypes &types)
: InterpretedFunction(factory, function.root(), types) {}
diff --git a/eval/src/vespa/eval/eval/key_gen.cpp b/eval/src/vespa/eval/eval/key_gen.cpp
index a40a8887119..a8f9700e865 100644
--- a/eval/src/vespa/eval/eval/key_gen.cpp
+++ b/eval/src/vespa/eval/eval/key_gen.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "key_gen.h"
#include "node_visitor.h"
@@ -88,6 +88,7 @@ struct KeyGen : public NodeVisitor, public NodeTraverser {
void visit(const Elu &) override { add_byte(61); }
void visit(const Erf &) override { add_byte(62); }
void visit(const Bit &) override { add_byte(63); }
+ void visit(const Hamming &) override { add_byte(64); }
// traverse
bool open(const Node &node) override { node.accept(*this); return true; }
diff --git a/eval/src/vespa/eval/eval/key_gen.h b/eval/src/vespa/eval/eval/key_gen.h
index 36828e28c19..c7bbf1dbd8e 100644
--- a/eval/src/vespa/eval/eval/key_gen.h
+++ b/eval/src/vespa/eval/eval/key_gen.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/lazy_params.cpp b/eval/src/vespa/eval/eval/lazy_params.cpp
index 50b49c5b724..b5a1afd87b8 100644
--- a/eval/src/vespa/eval/eval/lazy_params.cpp
+++ b/eval/src/vespa/eval/eval/lazy_params.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "lazy_params.h"
#include <vespa/vespalib/util/stash.h>
diff --git a/eval/src/vespa/eval/eval/lazy_params.h b/eval/src/vespa/eval/eval/lazy_params.h
index 51df0229cad..44cf4d392e9 100644
--- a/eval/src/vespa/eval/eval/lazy_params.h
+++ b/eval/src/vespa/eval/eval/lazy_params.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/llvm/CMakeLists.txt b/eval/src/vespa/eval/eval/llvm/CMakeLists.txt
index 898d18c9e4c..72df903db99 100644
--- a/eval/src/vespa/eval/eval/llvm/CMakeLists.txt
+++ b/eval/src/vespa/eval/eval/llvm/CMakeLists.txt
@@ -1,6 +1,7 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(eval_eval_llvm OBJECT
SOURCES
+ addr_to_symbol.cpp
compile_cache.cpp
compiled_function.cpp
deinline_forest.cpp
diff --git a/eval/src/vespa/eval/eval/llvm/addr_to_symbol.cpp b/eval/src/vespa/eval/eval/llvm/addr_to_symbol.cpp
new file mode 100644
index 00000000000..a8ef065dcf5
--- /dev/null
+++ b/eval/src/vespa/eval/eval/llvm/addr_to_symbol.cpp
@@ -0,0 +1,66 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "addr_to_symbol.h"
+#include <vespa/vespalib/util/classname.h>
+
+#include <dlfcn.h>
+#include <llvm/Object/ObjectFile.h>
+
+using vespalib::demangle;
+using llvm::object::ObjectFile;
+using SymbolType = llvm::object::SymbolRef::Type;
+
+namespace vespalib::eval {
+
+namespace {
+
+void my_local_test_symbol() {}
+
+bool symbol_is_data_or_function(SymbolType type)
+{
+ return ((type == SymbolType::ST_Data) || (type == SymbolType::ST_Function));
+}
+
+} // <unnamed>
+
+vespalib::string addr_to_symbol(const void *addr) {
+ if (addr == nullptr) {
+ return {"<nullptr>"};
+ }
+ Dl_info info;
+ memset(&info, 0, sizeof(info));
+ if (dladdr(addr, &info) == 0) {
+ // address not in any shared object
+ return {"<invalid>"};
+ }
+ if (info.dli_sname != nullptr) {
+ // address of global symbol
+ return demangle(info.dli_sname);
+ }
+ // find addr offset into shared object
+ uint64_t offset = ((const char *)addr) - ((const char *)info.dli_fbase);
+ // use llvm to look up local symbols...
+ auto file = ObjectFile::createObjectFile(info.dli_fname);
+ if (!file) {
+ return {"<object_error>"};
+ }
+ auto symbols = file.get().getBinary()->symbols();
+ for (const auto &symbol: symbols) {
+ auto sym_name = symbol.getName();
+ auto sym_addr = symbol.getAddress();
+ auto sym_type = symbol.getType();
+ if (sym_name && sym_addr && sym_type &&
+ symbol_is_data_or_function(*sym_type) &&
+ (*sym_addr == offset)) {
+ return demangle(sym_name->str().c_str());
+ }
+ }
+ // could not resolve symbol
+ return {"<unknown>"};
+}
+
+const void *get_addr_of_local_test_symbol() {
+ return (const void *) my_local_test_symbol;
+}
+
+}
diff --git a/eval/src/vespa/eval/eval/llvm/addr_to_symbol.h b/eval/src/vespa/eval/eval/llvm/addr_to_symbol.h
new file mode 100644
index 00000000000..4298b46735d
--- /dev/null
+++ b/eval/src/vespa/eval/eval/llvm/addr_to_symbol.h
@@ -0,0 +1,19 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/vespalib/stllike/string.h>
+
+namespace vespalib::eval {
+
+// Map an address to a symbolic name.
+// Intended for function pointers.
+
+vespalib::string addr_to_symbol(const void *addr);
+
+// Return the address of a local symbol.
+// Used for testing.
+
+const void *get_addr_of_local_test_symbol();
+
+}
diff --git a/eval/src/vespa/eval/eval/llvm/compile_cache.cpp b/eval/src/vespa/eval/eval/llvm/compile_cache.cpp
index e2674a6e4d6..a439520677a 100644
--- a/eval/src/vespa/eval/eval/llvm/compile_cache.cpp
+++ b/eval/src/vespa/eval/eval/llvm/compile_cache.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "compile_cache.h"
#include <vespa/eval/eval/key_gen.h>
diff --git a/eval/src/vespa/eval/eval/llvm/compile_cache.h b/eval/src/vespa/eval/eval/llvm/compile_cache.h
index 93ecd0a02e8..5ed742b9b91 100644
--- a/eval/src/vespa/eval/eval/llvm/compile_cache.h
+++ b/eval/src/vespa/eval/eval/llvm/compile_cache.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/llvm/compiled_function.cpp b/eval/src/vespa/eval/eval/llvm/compiled_function.cpp
index 4ce4fcd7747..b0bf1583c68 100644
--- a/eval/src/vespa/eval/eval/llvm/compiled_function.cpp
+++ b/eval/src/vespa/eval/eval/llvm/compiled_function.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "compiled_function.h"
#include <vespa/eval/eval/param_usage.h>
diff --git a/eval/src/vespa/eval/eval/llvm/compiled_function.h b/eval/src/vespa/eval/eval/llvm/compiled_function.h
index 6fb68e2df72..bf522f5029b 100644
--- a/eval/src/vespa/eval/eval/llvm/compiled_function.h
+++ b/eval/src/vespa/eval/eval/llvm/compiled_function.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/llvm/deinline_forest.cpp b/eval/src/vespa/eval/eval/llvm/deinline_forest.cpp
index 4c26bdf03eb..c5e51f4dde6 100644
--- a/eval/src/vespa/eval/eval/llvm/deinline_forest.cpp
+++ b/eval/src/vespa/eval/eval/llvm/deinline_forest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "deinline_forest.h"
diff --git a/eval/src/vespa/eval/eval/llvm/deinline_forest.h b/eval/src/vespa/eval/eval/llvm/deinline_forest.h
index 04e4e37b36f..04b795eb637 100644
--- a/eval/src/vespa/eval/eval/llvm/deinline_forest.h
+++ b/eval/src/vespa/eval/eval/llvm/deinline_forest.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/llvm/llvm_wrapper.cpp b/eval/src/vespa/eval/eval/llvm/llvm_wrapper.cpp
index 2a9b7815aa8..8c1e2fb525c 100644
--- a/eval/src/vespa/eval/eval/llvm/llvm_wrapper.cpp
+++ b/eval/src/vespa/eval/eval/llvm/llvm_wrapper.cpp
@@ -1,10 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <cmath>
#include "llvm_wrapper.h"
#include <vespa/eval/eval/node_visitor.h>
#include <vespa/eval/eval/node_traverser.h>
#include <vespa/eval/eval/extract_bit.h>
+#include <vespa/eval/eval/hamming_distance.h>
#include <llvm/IR/Verifier.h>
#include <llvm/Support/TargetSelect.h>
#include <llvm/IR/IRBuilder.h>
@@ -31,6 +32,7 @@ double vespalib_eval_relu(double a) { return std::max(a, 0.0); }
double vespalib_eval_sigmoid(double a) { return 1.0 / (1.0 + std::exp(-1.0 * a)); }
double vespalib_eval_elu(double a) { return (a < 0) ? std::exp(a) - 1.0 : a; }
double vespalib_eval_bit(double a, double b) { return vespalib::eval::extract_bit(a, b); }
+double vespalib_eval_hamming(double a, double b) { return vespalib::eval::hamming_distance(a, b); }
using vespalib::eval::gbdt::Forest;
using resolve_function = double (*)(void *ctx, size_t idx);
@@ -189,8 +191,8 @@ struct FunctionBuilder : public NodeVisitor, public NodeTraverser {
} else if (pass_params == PassParams::ARRAY) {
assert(params.size() == 1);
llvm::Value *param_array = params[0];
- llvm::Value *addr = builder.CreateGEP(param_array, builder.getInt64(idx));
- return builder.CreateLoad(addr);
+ llvm::Value *addr = builder.CreateGEP(param_array->getType()->getScalarType()->getPointerElementType(), param_array, builder.getInt64(idx));
+ return builder.CreateLoad(addr->getType()->getPointerElementType(), addr);
}
assert(pass_params == PassParams::LAZY);
assert(params.size() == 2);
@@ -651,6 +653,9 @@ struct FunctionBuilder : public NodeVisitor, public NodeTraverser {
void visit(const Bit &) override {
make_call_2("vespalib_eval_bit");
}
+ void visit(const Hamming &) override {
+ make_call_2("vespalib_eval_hamming");
+ }
};
FunctionBuilder::~FunctionBuilder() { }
diff --git a/eval/src/vespa/eval/eval/llvm/llvm_wrapper.h b/eval/src/vespa/eval/eval/llvm/llvm_wrapper.h
index e04b477750d..adc195f9c55 100644
--- a/eval/src/vespa/eval/eval/llvm/llvm_wrapper.h
+++ b/eval/src/vespa/eval/eval/llvm/llvm_wrapper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -20,6 +20,7 @@ extern "C" {
double vespalib_eval_sigmoid(double a);
double vespalib_eval_elu(double a);
double vespalib_eval_bit(double a, double b);
+ double vespalib_eval_hamming(double a, double b);
};
namespace vespalib::eval {
diff --git a/eval/src/vespa/eval/eval/make_tensor_function.cpp b/eval/src/vespa/eval/eval/make_tensor_function.cpp
index 498be2a738b..1386196e719 100644
--- a/eval/src/vespa/eval/eval/make_tensor_function.cpp
+++ b/eval/src/vespa/eval/eval/make_tensor_function.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "make_tensor_function.h"
#include "value_codec.h"
@@ -360,6 +360,9 @@ struct TensorFunctionBuilder : public NodeVisitor, public NodeTraverser {
void visit(const Bit &node) override {
make_join(node, operation::Bit::f);
}
+ void visit(const Hamming &node) override {
+ make_join(node, operation::Hamming::f);
+ }
//-------------------------------------------------------------------------
diff --git a/eval/src/vespa/eval/eval/make_tensor_function.h b/eval/src/vespa/eval/eval/make_tensor_function.h
index 4ad578d43de..c720d63aa83 100644
--- a/eval/src/vespa/eval/eval/make_tensor_function.h
+++ b/eval/src/vespa/eval/eval/make_tensor_function.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/memory_usage_stuff.h b/eval/src/vespa/eval/eval/memory_usage_stuff.h
index 447ccef698d..79a4cfb0eda 100644
--- a/eval/src/vespa/eval/eval/memory_usage_stuff.h
+++ b/eval/src/vespa/eval/eval/memory_usage_stuff.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/nested_loop.h b/eval/src/vespa/eval/eval/nested_loop.h
index 46f11006137..67b8532b0ee 100644
--- a/eval/src/vespa/eval/eval/nested_loop.h
+++ b/eval/src/vespa/eval/eval/nested_loop.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/node_tools.cpp b/eval/src/vespa/eval/eval/node_tools.cpp
index fa2d16a2271..477079f0d7b 100644
--- a/eval/src/vespa/eval/eval/node_tools.cpp
+++ b/eval/src/vespa/eval/eval/node_tools.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "node_tools.h"
#include <vespa/eval/eval/node_traverser.h>
@@ -183,6 +183,7 @@ struct CopyNode : NodeTraverser, NodeVisitor {
void visit(const Elu &node) override { copy_call(node); }
void visit(const Erf &node) override { copy_call(node); }
void visit(const Bit &node) override { copy_call(node); }
+ void visit(const Hamming &node) override { copy_call(node); }
// traverse nodes
bool open(const Node &) override { return !error; }
diff --git a/eval/src/vespa/eval/eval/node_tools.h b/eval/src/vespa/eval/eval/node_tools.h
index a358056c90f..5ebc19e774f 100644
--- a/eval/src/vespa/eval/eval/node_tools.h
+++ b/eval/src/vespa/eval/eval/node_tools.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/node_traverser.h b/eval/src/vespa/eval/eval/node_traverser.h
index 311fda902bb..06c10215bc6 100644
--- a/eval/src/vespa/eval/eval/node_traverser.h
+++ b/eval/src/vespa/eval/eval/node_traverser.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/node_types.cpp b/eval/src/vespa/eval/eval/node_types.cpp
index 8622fd734f1..4ba40726f5a 100644
--- a/eval/src/vespa/eval/eval/node_types.cpp
+++ b/eval/src/vespa/eval/eval/node_types.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "check_type.h"
#include "node_traverser.h"
@@ -279,6 +279,7 @@ struct TypeResolver : public NodeVisitor, public NodeTraverser {
void visit(const Elu &node) override { resolve_op1(node); }
void visit(const Erf &node) override { resolve_op1(node); }
void visit(const Bit &node) override { resolve_op2(node); }
+ void visit(const Hamming &node) override { resolve_op2(node); }
//-------------------------------------------------------------------------
diff --git a/eval/src/vespa/eval/eval/node_types.h b/eval/src/vespa/eval/eval/node_types.h
index de867f48847..f26ddf2321b 100644
--- a/eval/src/vespa/eval/eval/node_types.h
+++ b/eval/src/vespa/eval/eval/node_types.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/node_visitor.h b/eval/src/vespa/eval/eval/node_visitor.h
index 475bbf5405c..c212612bd5f 100644
--- a/eval/src/vespa/eval/eval/node_visitor.h
+++ b/eval/src/vespa/eval/eval/node_visitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -86,6 +86,7 @@ struct NodeVisitor {
virtual void visit(const nodes::Elu &) = 0;
virtual void visit(const nodes::Erf &) = 0;
virtual void visit(const nodes::Bit &) = 0;
+ virtual void visit(const nodes::Hamming &) = 0;
virtual ~NodeVisitor() {}
};
@@ -156,6 +157,7 @@ struct EmptyNodeVisitor : NodeVisitor {
void visit(const nodes::Elu &) override {}
void visit(const nodes::Erf &) override {}
void visit(const nodes::Bit &) override {}
+ void visit(const nodes::Hamming &) override {}
};
} // namespace vespalib::eval
diff --git a/eval/src/vespa/eval/eval/operation.cpp b/eval/src/vespa/eval/eval/operation.cpp
index a82a79e6bc4..9ef915ef6ff 100644
--- a/eval/src/vespa/eval/eval/operation.cpp
+++ b/eval/src/vespa/eval/eval/operation.cpp
@@ -1,9 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "operation.h"
#include "function.h"
#include "key_gen.h"
#include "extract_bit.h"
+#include "hamming_distance.h"
#include <vespa/vespalib/util/approx.h>
#include <algorithm>
@@ -52,6 +53,7 @@ double Sigmoid::f(double a) { return 1.0 / (1.0 + std::exp(-1.0 * a)); }
double Elu::f(double a) { return (a < 0) ? std::exp(a) - 1 : a; }
double Erf::f(double a) { return std::erf(a); }
double Bit::f(double a, double b) { return extract_bit(a, b); }
+double Hamming::f(double a, double b) { return hamming_distance(a, b); }
//-----------------------------------------------------------------------------
double Inv::f(double a) { return (1.0 / a); }
double Square::f(double a) { return (a * a); }
@@ -146,6 +148,7 @@ std::map<vespalib::string,op2_t> make_op2_map() {
add_op2(map, "min(a,b)", Min::f);
add_op2(map, "max(a,b)", Max::f);
add_op2(map, "bit(a,b)", Bit::f);
+ add_op2(map, "hamming(a,b)", Hamming::f);
return map;
}
diff --git a/eval/src/vespa/eval/eval/operation.h b/eval/src/vespa/eval/eval/operation.h
index 438b510b714..18bd2522fb8 100644
--- a/eval/src/vespa/eval/eval/operation.h
+++ b/eval/src/vespa/eval/eval/operation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <optional>
@@ -50,6 +50,7 @@ struct Sigmoid { static double f(double a); };
struct Elu { static double f(double a); };
struct Erf { static double f(double a); };
struct Bit { static double f(double a, double b); };
+struct Hamming { static double f(double a, double b); };
//-----------------------------------------------------------------------------
struct Inv { static double f(double a); };
struct Square { static double f(double a); };
diff --git a/eval/src/vespa/eval/eval/operator_nodes.cpp b/eval/src/vespa/eval/eval/operator_nodes.cpp
index 98072b99324..13404ecc093 100644
--- a/eval/src/vespa/eval/eval/operator_nodes.cpp
+++ b/eval/src/vespa/eval/eval/operator_nodes.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "operator_nodes.h"
#include "node_visitor.h"
diff --git a/eval/src/vespa/eval/eval/operator_nodes.h b/eval/src/vespa/eval/eval/operator_nodes.h
index 5562659f0f7..7759958be4b 100644
--- a/eval/src/vespa/eval/eval/operator_nodes.h
+++ b/eval/src/vespa/eval/eval/operator_nodes.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/optimize_tensor_function.cpp b/eval/src/vespa/eval/eval/optimize_tensor_function.cpp
index 64acbceff04..09814cc0b06 100644
--- a/eval/src/vespa/eval/eval/optimize_tensor_function.cpp
+++ b/eval/src/vespa/eval/eval/optimize_tensor_function.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "optimize_tensor_function.h"
#include "tensor_function.h"
@@ -11,6 +11,7 @@
#include <vespa/eval/instruction/sparse_full_overlap_join_function.h>
#include <vespa/eval/instruction/mixed_inner_product_function.h>
#include <vespa/eval/instruction/sum_max_dot_product_function.h>
+#include <vespa/eval/instruction/best_similarity_function.h>
#include <vespa/eval/instruction/dense_xw_product_function.h>
#include <vespa/eval/instruction/dense_matmul_function.h>
#include <vespa/eval/instruction/dense_multi_matmul_function.h>
@@ -28,6 +29,7 @@
#include <vespa/eval/instruction/vector_from_doubles_function.h>
#include <vespa/eval/instruction/dense_tensor_create_function.h>
#include <vespa/eval/instruction/dense_tensor_peek_function.h>
+#include <vespa/eval/instruction/dense_hamming_distance.h>
#include <vespa/log/log.h>
LOG_SETUP(".eval.eval.optimize_tensor_function");
@@ -36,53 +38,60 @@ namespace vespalib::eval {
namespace {
-const TensorFunction &optimize_for_factory(const ValueBuilderFactory &, const TensorFunction &expr, Stash &stash) {
- using Child = TensorFunction::Child;
- Child root(expr);
- {
- std::vector<Child::CREF> nodes({root});
- for (size_t i = 0; i < nodes.size(); ++i) {
- nodes[i].get().get().push_children(nodes);
- }
- while (!nodes.empty()) {
- const Child &child = nodes.back().get();
- child.set(SumMaxDotProductFunction::optimize(child.get(), stash));
- child.set(DenseDotProductFunction::optimize(child.get(), stash));
- child.set(SparseDotProductFunction::optimize(child.get(), stash));
- child.set(DenseXWProductFunction::optimize(child.get(), stash));
- child.set(DenseMatMulFunction::optimize(child.get(), stash));
- child.set(DenseMultiMatMulFunction::optimize(child.get(), stash));
- child.set(MixedInnerProductFunction::optimize(child.get(), stash));
- nodes.pop_back();
- }
+using Child = TensorFunction::Child;
+
+template <typename Func>
+void run_optimize_pass(const Child &root, Func&& optimize_node) {
+ std::vector<Child::CREF> nodes({root});
+ for (size_t i = 0; i < nodes.size(); ++i) {
+ nodes[i].get().get().push_children(nodes);
}
- {
- std::vector<Child::CREF> nodes({root});
- for (size_t i = 0; i < nodes.size(); ++i) {
- nodes[i].get().get().push_children(nodes);
- }
- while (!nodes.empty()) {
- const Child &child = nodes.back().get();
- child.set(DenseSimpleExpandFunction::optimize(child.get(), stash));
- child.set(AddTrivialDimensionOptimizer::optimize(child.get(), stash));
- child.set(RemoveTrivialDimensionOptimizer::optimize(child.get(), stash));
- child.set(VectorFromDoublesFunction::optimize(child.get(), stash));
- child.set(DenseTensorCreateFunction::optimize(child.get(), stash));
- child.set(DenseTensorPeekFunction::optimize(child.get(), stash));
- child.set(DenseLambdaPeekOptimizer::optimize(child.get(), stash));
- child.set(UnpackBitsFunction::optimize(child.get(), stash));
- child.set(FastRenameOptimizer::optimize(child.get(), stash));
- child.set(PowAsMapOptimizer::optimize(child.get(), stash));
- child.set(InplaceMapFunction::optimize(child.get(), stash));
- child.set(MixedSimpleJoinFunction::optimize(child.get(), stash));
- child.set(JoinWithNumberFunction::optimize(child.get(), stash));
- child.set(DenseSingleReduceFunction::optimize(child.get(), stash));
- child.set(SparseMergeFunction::optimize(child.get(), stash));
- child.set(SparseNoOverlapJoinFunction::optimize(child.get(), stash));
- child.set(SparseFullOverlapJoinFunction::optimize(child.get(), stash));
- nodes.pop_back();
- }
+ while (!nodes.empty()) {
+ optimize_node(nodes.back().get());
+ nodes.pop_back();
}
+}
+
+const TensorFunction &optimize_for_factory(const ValueBuilderFactory &, const TensorFunction &expr, Stash &stash) {
+ Child root(expr);
+ run_optimize_pass(root, [&stash](const Child &child)
+ {
+ child.set(SumMaxDotProductFunction::optimize(child.get(), stash));
+ });
+ run_optimize_pass(root, [&stash](const Child &child)
+ {
+ child.set(BestSimilarityFunction::optimize(child.get(), stash));
+ });
+ run_optimize_pass(root, [&stash](const Child &child)
+ {
+ child.set(DenseDotProductFunction::optimize(child.get(), stash));
+ child.set(SparseDotProductFunction::optimize(child.get(), stash));
+ child.set(DenseXWProductFunction::optimize(child.get(), stash));
+ child.set(DenseMatMulFunction::optimize(child.get(), stash));
+ child.set(DenseMultiMatMulFunction::optimize(child.get(), stash));
+ child.set(MixedInnerProductFunction::optimize(child.get(), stash));
+ child.set(DenseHammingDistance::optimize(child.get(), stash));
+ });
+ run_optimize_pass(root, [&stash](const Child &child)
+ {
+ child.set(DenseSimpleExpandFunction::optimize(child.get(), stash));
+ child.set(AddTrivialDimensionOptimizer::optimize(child.get(), stash));
+ child.set(RemoveTrivialDimensionOptimizer::optimize(child.get(), stash));
+ child.set(VectorFromDoublesFunction::optimize(child.get(), stash));
+ child.set(DenseTensorCreateFunction::optimize(child.get(), stash));
+ child.set(DenseTensorPeekFunction::optimize(child.get(), stash));
+ child.set(DenseLambdaPeekOptimizer::optimize(child.get(), stash));
+ child.set(UnpackBitsFunction::optimize(child.get(), stash));
+ child.set(FastRenameOptimizer::optimize(child.get(), stash));
+ child.set(PowAsMapOptimizer::optimize(child.get(), stash));
+ child.set(InplaceMapFunction::optimize(child.get(), stash));
+ child.set(MixedSimpleJoinFunction::optimize(child.get(), stash));
+ child.set(JoinWithNumberFunction::optimize(child.get(), stash));
+ child.set(DenseSingleReduceFunction::optimize(child.get(), stash));
+ child.set(SparseMergeFunction::optimize(child.get(), stash));
+ child.set(SparseNoOverlapJoinFunction::optimize(child.get(), stash));
+ child.set(SparseFullOverlapJoinFunction::optimize(child.get(), stash));
+ });
return root.get();
}
diff --git a/eval/src/vespa/eval/eval/optimize_tensor_function.h b/eval/src/vespa/eval/eval/optimize_tensor_function.h
index 9973f9d4bf8..d8ed104f3a6 100644
--- a/eval/src/vespa/eval/eval/optimize_tensor_function.h
+++ b/eval/src/vespa/eval/eval/optimize_tensor_function.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/param_usage.cpp b/eval/src/vespa/eval/eval/param_usage.cpp
index 1f28c6eaa51..a9bec177166 100644
--- a/eval/src/vespa/eval/eval/param_usage.cpp
+++ b/eval/src/vespa/eval/eval/param_usage.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "param_usage.h"
#include "function.h"
diff --git a/eval/src/vespa/eval/eval/param_usage.h b/eval/src/vespa/eval/eval/param_usage.h
index 2397476d9c4..15047b0d4fb 100644
--- a/eval/src/vespa/eval/eval/param_usage.h
+++ b/eval/src/vespa/eval/eval/param_usage.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/simple_value.cpp b/eval/src/vespa/eval/eval/simple_value.cpp
index c44ca320470..19b5e8cd721 100644
--- a/eval/src/vespa/eval/eval/simple_value.cpp
+++ b/eval/src/vespa/eval/eval/simple_value.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simple_value.h"
#include "inline_operation.h"
diff --git a/eval/src/vespa/eval/eval/simple_value.h b/eval/src/vespa/eval/eval/simple_value.h
index a43f51f6e13..32d244a156d 100644
--- a/eval/src/vespa/eval/eval/simple_value.h
+++ b/eval/src/vespa/eval/eval/simple_value.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/tensor_function.cpp b/eval/src/vespa/eval/eval/tensor_function.cpp
index c0cd7280212..97590322a50 100644
--- a/eval/src/vespa/eval/eval/tensor_function.cpp
+++ b/eval/src/vespa/eval/eval/tensor_function.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tensor_function.h"
#include "value.h"
@@ -443,7 +443,11 @@ const TensorFunction &inject(const ValueType &type, size_t param_idx, Stash &sta
const TensorFunction &reduce(const TensorFunction &child, Aggr aggr, const std::vector<vespalib::string> &dimensions, Stash &stash) {
ValueType result_type = child.result_type().reduce(dimensions);
- return stash.create<Reduce>(result_type, child, aggr, dimensions);
+ if (dimensions.empty()) { // expand dimension list for full reduce
+ return stash.create<Reduce>(result_type, child, aggr, child.result_type().dimension_names());
+ } else {
+ return stash.create<Reduce>(result_type, child, aggr, dimensions);
+ }
}
const TensorFunction &map(const TensorFunction &child, map_fun_t function, Stash &stash) {
diff --git a/eval/src/vespa/eval/eval/tensor_function.h b/eval/src/vespa/eval/eval/tensor_function.h
index 47610d02aca..c6700b0565a 100644
--- a/eval/src/vespa/eval/eval/tensor_function.h
+++ b/eval/src/vespa/eval/eval/tensor_function.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/tensor_nodes.cpp b/eval/src/vespa/eval/eval/tensor_nodes.cpp
index ca148b4275c..ae38252a72c 100644
--- a/eval/src/vespa/eval/eval/tensor_nodes.cpp
+++ b/eval/src/vespa/eval/eval/tensor_nodes.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tensor_nodes.h"
#include "node_visitor.h"
diff --git a/eval/src/vespa/eval/eval/tensor_nodes.h b/eval/src/vespa/eval/eval/tensor_nodes.h
index 90979953531..2288740fab9 100644
--- a/eval/src/vespa/eval/eval/tensor_nodes.h
+++ b/eval/src/vespa/eval/eval/tensor_nodes.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/tensor_spec.cpp b/eval/src/vespa/eval/eval/tensor_spec.cpp
index 684242fc485..025f3e8c0a3 100644
--- a/eval/src/vespa/eval/eval/tensor_spec.cpp
+++ b/eval/src/vespa/eval/eval/tensor_spec.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tensor_spec.h"
#include "array_array_map.h"
@@ -284,6 +284,23 @@ TensorSpec::to_slime(slime::Cursor &tensor) const
}
}
+vespalib::string
+TensorSpec::to_expr() const
+{
+ if (_type == "double") {
+ return make_string("%g", as_double());
+ }
+ vespalib::string out = _type;
+ out.append(":{");
+ CommaTracker cell_list;
+ for (const auto &cell: _cells) {
+ cell_list.maybe_add_comma(out);
+ out.append(make_string("%s:%g", as_string(cell.first).c_str(), cell.second.value));
+ }
+ out.append("}");
+ return out;
+}
+
TensorSpec
TensorSpec::from_slime(const slime::Inspector &tensor)
{
diff --git a/eval/src/vespa/eval/eval/tensor_spec.h b/eval/src/vespa/eval/eval/tensor_spec.h
index eab4c4ff49d..ef1a56cb6f0 100644
--- a/eval/src/vespa/eval/eval/tensor_spec.h
+++ b/eval/src/vespa/eval/eval/tensor_spec.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -75,6 +75,7 @@ public:
vespalib::string to_string() const;
TensorSpec normalize() const;
void to_slime(slime::Cursor &tensor) const;
+ vespalib::string to_expr() const;
static TensorSpec from_slime(const slime::Inspector &tensor);
static TensorSpec from_value(const eval::Value &value);
static TensorSpec from_expr(const vespalib::string &expr);
diff --git a/eval/src/vespa/eval/eval/test/CMakeLists.txt b/eval/src/vespa/eval/eval/test/CMakeLists.txt
index aeccc00a01c..e8a291adf2a 100644
--- a/eval/src/vespa/eval/eval/test/CMakeLists.txt
+++ b/eval/src/vespa/eval/eval/test/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(eval_eval_test OBJECT
SOURCES
cell_type_space.cpp
diff --git a/eval/src/vespa/eval/eval/test/cell_type_space.cpp b/eval/src/vespa/eval/eval/test/cell_type_space.cpp
index 76bb87e5170..f3d5d67ed0c 100644
--- a/eval/src/vespa/eval/eval/test/cell_type_space.cpp
+++ b/eval/src/vespa/eval/eval/test/cell_type_space.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "cell_type_space.h"
diff --git a/eval/src/vespa/eval/eval/test/cell_type_space.h b/eval/src/vespa/eval/eval/test/cell_type_space.h
index 92c29b9cf9c..e4ab26c2f91 100644
--- a/eval/src/vespa/eval/eval/test/cell_type_space.h
+++ b/eval/src/vespa/eval/eval/test/cell_type_space.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/test/eval_fixture.cpp b/eval/src/vespa/eval/eval/test/eval_fixture.cpp
index 47a121d7750..90761e43a01 100644
--- a/eval/src/vespa/eval/eval/test/eval_fixture.cpp
+++ b/eval/src/vespa/eval/eval/test/eval_fixture.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "eval_fixture.h"
#include "reference_evaluation.h"
diff --git a/eval/src/vespa/eval/eval/test/eval_fixture.h b/eval/src/vespa/eval/eval/test/eval_fixture.h
index c726fd4af94..b078a900778 100644
--- a/eval/src/vespa/eval/eval/test/eval_fixture.h
+++ b/eval/src/vespa/eval/eval/test/eval_fixture.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/test/eval_spec.cpp b/eval/src/vespa/eval/eval/test/eval_spec.cpp
index 5d51a1d23b5..415404ffa50 100644
--- a/eval/src/vespa/eval/eval/test/eval_spec.cpp
+++ b/eval/src/vespa/eval/eval/test/eval_spec.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "eval_spec.h"
#include <vespa/vespalib/util/stringfmt.h>
@@ -8,6 +8,24 @@
namespace vespalib::eval::test {
+namespace {
+
+double byte(const vespalib::string &bits) {
+ int8_t res = 0;
+ assert(bits.size() == 8);
+ for (const auto &c: bits) {
+ if (c == '1') {
+ res = (res << 1) | 1;
+ } else {
+ assert(c == '0');
+ res = (res << 1);
+ }
+ }
+ return res;
+}
+
+} // <unnamed>
+
constexpr double my_nan = std::numeric_limits<double>::quiet_NaN();
constexpr double my_inf = std::numeric_limits<double>::infinity();
@@ -169,6 +187,9 @@ EvalSpec::add_function_call_cases() {
.add_case({85, 3}, 0.0).add_case({85, 2}, 1.0).add_case({85, 1}, 0.0).add_case({85, 0}, 1.0)
.add_case({127, 7}, 0.0).add_case({127, 6}, 1.0).add_case({127, 5}, 1.0).add_case({127, 4}, 1.0)
.add_case({127, 3}, 1.0).add_case({127, 2}, 1.0).add_case({127, 1}, 1.0).add_case({127, 0}, 1.0);
+ add_expression({"a", "b"}, "hamming(a,b)")
+ .add_case({0, 0}, 0.0).add_case({-1, -1}, 0.0).add_case({-1, 0}, 8.0).add_case({0, -1}, 8.0)
+ .add_case({byte("11001100"), byte("10101010")}, 4.0).add_case({byte("11001100"), byte("11110000")}, 4.0);
}
void
diff --git a/eval/src/vespa/eval/eval/test/eval_spec.h b/eval/src/vespa/eval/eval/test/eval_spec.h
index 7d4a8cb221f..57415a0d984 100644
--- a/eval/src/vespa/eval/eval/test/eval_spec.h
+++ b/eval/src/vespa/eval/eval/test/eval_spec.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/test/gen_spec.cpp b/eval/src/vespa/eval/eval/test/gen_spec.cpp
index 8921cf28bab..a175111a429 100644
--- a/eval/src/vespa/eval/eval/test/gen_spec.cpp
+++ b/eval/src/vespa/eval/eval/test/gen_spec.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "gen_spec.h"
#include <vespa/eval/eval/string_stuff.h>
diff --git a/eval/src/vespa/eval/eval/test/gen_spec.h b/eval/src/vespa/eval/eval/test/gen_spec.h
index 0fa07218ee9..eab2924ac37 100644
--- a/eval/src/vespa/eval/eval/test/gen_spec.h
+++ b/eval/src/vespa/eval/eval/test/gen_spec.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/test/reference_evaluation.cpp b/eval/src/vespa/eval/eval/test/reference_evaluation.cpp
index 58e4b91f6d9..da0f5a1d1f0 100644
--- a/eval/src/vespa/eval/eval/test/reference_evaluation.cpp
+++ b/eval/src/vespa/eval/eval/test/reference_evaluation.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "reference_evaluation.h"
#include "reference_operations.h"
@@ -338,6 +338,9 @@ struct EvalNode : public NodeVisitor {
void visit(const Bit &node) override {
eval_join(node.get_child(0), node.get_child(1), operation::Bit::f);
}
+ void visit(const Hamming &node) override {
+ eval_join(node.get_child(0), node.get_child(1), operation::Hamming::f);
+ }
};
TensorSpec eval_node(const Node &node, const std::vector<TensorSpec> &params) {
diff --git a/eval/src/vespa/eval/eval/test/reference_evaluation.h b/eval/src/vespa/eval/eval/test/reference_evaluation.h
index 31089c29a93..7e48160bd64 100644
--- a/eval/src/vespa/eval/eval/test/reference_evaluation.h
+++ b/eval/src/vespa/eval/eval/test/reference_evaluation.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/test/reference_operations.cpp b/eval/src/vespa/eval/eval/test/reference_operations.cpp
index 577af47e2ae..cdb197be875 100644
--- a/eval/src/vespa/eval/eval/test/reference_operations.cpp
+++ b/eval/src/vespa/eval/eval/test/reference_operations.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "reference_operations.h"
#include <vespa/vespalib/util/overload.h>
diff --git a/eval/src/vespa/eval/eval/test/reference_operations.h b/eval/src/vespa/eval/eval/test/reference_operations.h
index 02651e3971c..ec6bc0e63f5 100644
--- a/eval/src/vespa/eval/eval/test/reference_operations.h
+++ b/eval/src/vespa/eval/eval/test/reference_operations.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/test/test_io.cpp b/eval/src/vespa/eval/eval/test/test_io.cpp
index b53ee864cbe..fc7faef6555 100644
--- a/eval/src/vespa/eval/eval/test/test_io.cpp
+++ b/eval/src/vespa/eval/eval/test/test_io.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "test_io.h"
#include <vespa/vespalib/util/require.h>
@@ -63,6 +63,39 @@ StdOut::commit(size_t bytes)
//-----------------------------------------------------------------------------
+bool
+LineReader::read_line(vespalib::string &line)
+{
+ line.clear();
+ for (auto mem = _input.obtain(); mem.size > 0; mem = _input.obtain()) {
+ for (size_t i = 0; i < mem.size; ++i) {
+ if (mem.data[i] == '\n') {
+ _input.evict(i + 1);
+ return true;
+ } else {
+ line.push_back(mem.data[i]);
+ }
+ }
+ _input.evict(mem.size);
+ }
+ return !line.empty();
+}
+
+//-----------------------------------------------------------------------------
+
+bool look_for_eof(Input &input) {
+ for (auto mem = input.obtain(); mem.size > 0; mem = input.obtain()) {
+ for (size_t i = 0; i < mem.size; ++i) {
+ if (!isspace(mem.data[i])) {
+ input.evict(i);
+ return false;
+ }
+ }
+ input.evict(mem.size);
+ }
+ return true;
+}
+
void write_compact(const Slime &slime, Output &out) {
JsonFormat::encode(slime, out, true);
out.reserve(1).data[0] = '\n';
diff --git a/eval/src/vespa/eval/eval/test/test_io.h b/eval/src/vespa/eval/eval/test/test_io.h
index e57fa7e68a2..b270b07bb30 100644
--- a/eval/src/vespa/eval/eval/test/test_io.h
+++ b/eval/src/vespa/eval/eval/test/test_io.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -8,6 +8,7 @@
#include <vespa/vespalib/data/output.h>
#include <vespa/vespalib/data/simple_buffer.h>
#include <vespa/vespalib/data/slime/slime.h>
+#include <vespa/vespalib/util/size_literals.h>
#include <functional>
namespace vespalib::eval::test {
@@ -38,6 +39,22 @@ public:
};
/**
+ * Read one line at a time from an input
+ **/
+class LineReader {
+private:
+ Input &_input;
+public:
+ LineReader(Input &input) : _input(input) {}
+ bool read_line(vespalib::string &line);
+};
+
+/**
+ * Skip whitespaces from the input and return true if eof was reached.
+ **/
+bool look_for_eof(Input &input);
+
+/**
* Write a slime structure as compact json with a trailing newline.
**/
void write_compact(const Slime &slime, Output &out);
diff --git a/eval/src/vespa/eval/eval/test/value_compare.cpp b/eval/src/vespa/eval/eval/test/value_compare.cpp
index cb6eeca4b86..5c534295c28 100644
--- a/eval/src/vespa/eval/eval/test/value_compare.cpp
+++ b/eval/src/vespa/eval/eval/test/value_compare.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "value_compare.h"
#include <vespa/eval/eval/value_codec.h>
diff --git a/eval/src/vespa/eval/eval/test/value_compare.h b/eval/src/vespa/eval/eval/test/value_compare.h
index f514cec8da7..587ed5b646a 100644
--- a/eval/src/vespa/eval/eval/test/value_compare.h
+++ b/eval/src/vespa/eval/eval/test/value_compare.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/value.cpp b/eval/src/vespa/eval/eval/value.cpp
index b799658cfae..589b19bcb16 100644
--- a/eval/src/vespa/eval/eval/value.cpp
+++ b/eval/src/vespa/eval/eval/value.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "value.h"
#include "value_codec.h"
@@ -10,6 +10,11 @@ namespace eval {
namespace {
+struct EmptyView : Value::Index::View {
+ void lookup(ConstArrayRef<const string_id*> ) override {}
+ bool next_result(ConstArrayRef<string_id*> , size_t &) override { return false; }
+};
+
struct TrivialView : Value::Index::View {
bool first = false;
void lookup(ConstArrayRef<const string_id*> ) override { first = true; }
@@ -36,6 +41,20 @@ struct MySum {
} // <unnamed>
+EmptyIndex::EmptyIndex() = default;
+EmptyIndex EmptyIndex::_index;
+
+size_t
+EmptyIndex::size() const
+{
+ return 0;
+}
+
+std::unique_ptr<Value::Index::View>
+EmptyIndex::create_view(ConstArrayRef<size_t>) const
+{
+ return std::make_unique<EmptyView>();
+}
TrivialIndex::TrivialIndex() = default;
TrivialIndex TrivialIndex::_index;
diff --git a/eval/src/vespa/eval/eval/value.h b/eval/src/vespa/eval/eval/value.h
index fcdaa7131c7..ed6d63e3b8d 100644
--- a/eval/src/vespa/eval/eval/value.h
+++ b/eval/src/vespa/eval/eval/value.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -64,6 +64,19 @@ struct Value {
};
/**
+ * Common empty index
+ **/
+class EmptyIndex : public Value::Index {
+private:
+ EmptyIndex();
+ static EmptyIndex _index;
+public:
+ static const EmptyIndex &get() { return _index; }
+ size_t size() const override;
+ std::unique_ptr<View> create_view(ConstArrayRef<size_t> dims) const override;
+};
+
+/**
* Common index for values without any mapped dimensions.
**/
class TrivialIndex : public Value::Index {
diff --git a/eval/src/vespa/eval/eval/value_cache/CMakeLists.txt b/eval/src/vespa/eval/eval/value_cache/CMakeLists.txt
index 0e2fc64dd58..013b04d756c 100644
--- a/eval/src/vespa/eval/eval/value_cache/CMakeLists.txt
+++ b/eval/src/vespa/eval/eval/value_cache/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(eval_eval_value_cache OBJECT
SOURCES
constant_value_cache.cpp
diff --git a/eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.cpp b/eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.cpp
index 16917328a5a..9ddbf41f909 100644
--- a/eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.cpp
+++ b/eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "constant_tensor_loader.h"
#include <vespa/eval/eval/tensor_spec.h>
diff --git a/eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.h b/eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.h
index 1f32b3119c5..9ecd9b8f2cf 100644
--- a/eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.h
+++ b/eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/value_cache/constant_value.h b/eval/src/vespa/eval/eval/value_cache/constant_value.h
index a288ad70b53..e0f563109ad 100644
--- a/eval/src/vespa/eval/eval/value_cache/constant_value.h
+++ b/eval/src/vespa/eval/eval/value_cache/constant_value.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/value_cache/constant_value_cache.cpp b/eval/src/vespa/eval/eval/value_cache/constant_value_cache.cpp
index 96a92c55f59..87fd983fbc7 100644
--- a/eval/src/vespa/eval/eval/value_cache/constant_value_cache.cpp
+++ b/eval/src/vespa/eval/eval/value_cache/constant_value_cache.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "constant_value_cache.h"
#include <cassert>
diff --git a/eval/src/vespa/eval/eval/value_cache/constant_value_cache.h b/eval/src/vespa/eval/eval/value_cache/constant_value_cache.h
index 7139bffb65b..93fc9157c3b 100644
--- a/eval/src/vespa/eval/eval/value_cache/constant_value_cache.h
+++ b/eval/src/vespa/eval/eval/value_cache/constant_value_cache.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/value_codec.cpp b/eval/src/vespa/eval/eval/value_codec.cpp
index bd9d36bed2f..386a8f3dc7e 100644
--- a/eval/src/vespa/eval/eval/value_codec.cpp
+++ b/eval/src/vespa/eval/eval/value_codec.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "value_codec.h"
#include "tensor_spec.h"
diff --git a/eval/src/vespa/eval/eval/value_codec.h b/eval/src/vespa/eval/eval/value_codec.h
index 23eb2de8e41..3495ef4ecdf 100644
--- a/eval/src/vespa/eval/eval/value_codec.h
+++ b/eval/src/vespa/eval/eval/value_codec.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/value_type.cpp b/eval/src/vespa/eval/eval/value_type.cpp
index 440aecce76e..80e62b5f512 100644
--- a/eval/src/vespa/eval/eval/value_type.cpp
+++ b/eval/src/vespa/eval/eval/value_type.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "value_type.h"
#include "value_type_spec.h"
diff --git a/eval/src/vespa/eval/eval/value_type.h b/eval/src/vespa/eval/eval/value_type.h
index e1a0d073337..0822fa1e4b0 100644
--- a/eval/src/vespa/eval/eval/value_type.h
+++ b/eval/src/vespa/eval/eval/value_type.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/value_type_spec.cpp b/eval/src/vespa/eval/eval/value_type_spec.cpp
index 92646ed1f67..fe1151e55ee 100644
--- a/eval/src/vespa/eval/eval/value_type_spec.cpp
+++ b/eval/src/vespa/eval/eval/value_type_spec.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "value_type.h"
#include "value_type_spec.h"
diff --git a/eval/src/vespa/eval/eval/value_type_spec.h b/eval/src/vespa/eval/eval/value_type_spec.h
index 39168b34fcb..e1bf236b909 100644
--- a/eval/src/vespa/eval/eval/value_type_spec.h
+++ b/eval/src/vespa/eval/eval/value_type_spec.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/visit_stuff.cpp b/eval/src/vespa/eval/eval/visit_stuff.cpp
index 786562d823f..37b592a399d 100644
--- a/eval/src/vespa/eval/eval/visit_stuff.cpp
+++ b/eval/src/vespa/eval/eval/visit_stuff.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "visit_stuff.h"
#include "tensor_function.h"
@@ -60,6 +60,7 @@ vespalib::string name_of(join_fun_t fun) {
if (fun == operation::Min::f) return "min";
if (fun == operation::Max::f) return "max";
if (fun == operation::Bit::f) return "bit";
+ if (fun == operation::Hamming::f) return "hamming";
return "[other join function]";
}
diff --git a/eval/src/vespa/eval/eval/visit_stuff.h b/eval/src/vespa/eval/eval/visit_stuff.h
index ed63887a6e4..361a214afd1 100644
--- a/eval/src/vespa/eval/eval/visit_stuff.h
+++ b/eval/src/vespa/eval/eval/visit_stuff.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/vm_forest.cpp b/eval/src/vespa/eval/eval/vm_forest.cpp
index a31c5f502ac..9b9e6ee1124 100644
--- a/eval/src/vespa/eval/eval/vm_forest.cpp
+++ b/eval/src/vespa/eval/eval/vm_forest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "gbdt.h"
#include "vm_forest.h"
diff --git a/eval/src/vespa/eval/eval/vm_forest.h b/eval/src/vespa/eval/eval/vm_forest.h
index 95443ef0fcf..bf2eeff6c44 100644
--- a/eval/src/vespa/eval/eval/vm_forest.h
+++ b/eval/src/vespa/eval/eval/vm_forest.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/eval/wrap_param.h b/eval/src/vespa/eval/eval/wrap_param.h
index b1377cac163..59d1fc7688e 100644
--- a/eval/src/vespa/eval/eval/wrap_param.h
+++ b/eval/src/vespa/eval/eval/wrap_param.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/gp/CMakeLists.txt b/eval/src/vespa/eval/gp/CMakeLists.txt
index ea61ca3dd27..2ad5c25327d 100644
--- a/eval/src/vespa/eval/gp/CMakeLists.txt
+++ b/eval/src/vespa/eval/gp/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(eval_gp OBJECT
SOURCES
gp.cpp
diff --git a/eval/src/vespa/eval/gp/gp.cpp b/eval/src/vespa/eval/gp/gp.cpp
index 5ef9ea8f004..ca58907e320 100644
--- a/eval/src/vespa/eval/gp/gp.cpp
+++ b/eval/src/vespa/eval/gp/gp.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "gp.h"
#include <algorithm>
diff --git a/eval/src/vespa/eval/gp/gp.h b/eval/src/vespa/eval/gp/gp.h
index 5f08563fdf1..cb5cb0d442e 100644
--- a/eval/src/vespa/eval/gp/gp.h
+++ b/eval/src/vespa/eval/gp/gp.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/CMakeLists.txt b/eval/src/vespa/eval/instruction/CMakeLists.txt
index 88e3272bb7c..a462ece4734 100644
--- a/eval/src/vespa/eval/instruction/CMakeLists.txt
+++ b/eval/src/vespa/eval/instruction/CMakeLists.txt
@@ -1,10 +1,12 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(eval_instruction OBJECT
SOURCES
add_trivial_dimension_optimizer.cpp
+ best_similarity_function.cpp
dense_cell_range_function.cpp
dense_dot_product_function.cpp
+ dense_hamming_distance.cpp
dense_lambda_peek_function.cpp
dense_lambda_peek_optimizer.cpp
dense_matmul_function.cpp
diff --git a/eval/src/vespa/eval/instruction/add_trivial_dimension_optimizer.cpp b/eval/src/vespa/eval/instruction/add_trivial_dimension_optimizer.cpp
index 110ff197d1b..480cc9b5fed 100644
--- a/eval/src/vespa/eval/instruction/add_trivial_dimension_optimizer.cpp
+++ b/eval/src/vespa/eval/instruction/add_trivial_dimension_optimizer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "add_trivial_dimension_optimizer.h"
#include "replace_type_function.h"
diff --git a/eval/src/vespa/eval/instruction/add_trivial_dimension_optimizer.h b/eval/src/vespa/eval/instruction/add_trivial_dimension_optimizer.h
index ab0e6af71f7..f4f8b05d9e4 100644
--- a/eval/src/vespa/eval/instruction/add_trivial_dimension_optimizer.h
+++ b/eval/src/vespa/eval/instruction/add_trivial_dimension_optimizer.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/best_similarity_function.cpp b/eval/src/vespa/eval/instruction/best_similarity_function.cpp
new file mode 100644
index 00000000000..964f27a4564
--- /dev/null
+++ b/eval/src/vespa/eval/instruction/best_similarity_function.cpp
@@ -0,0 +1,225 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "best_similarity_function.h"
+#include <vespa/eval/eval/operation.h>
+#include <vespa/eval/eval/value.h>
+#include <vespa/vespalib/util/binary_hamming_distance.h>
+#include <cblas.h>
+
+namespace vespalib::eval {
+
+using namespace tensor_function;
+using namespace operation;
+
+namespace {
+
+struct BestSimParam {
+ ValueType res_type;
+ size_t inner_size;
+ BestSimParam(const ValueType &res_type_in, size_t inner_size_in)
+ : res_type(res_type_in), inner_size(inner_size_in) {}
+};
+
+struct UseDotProduct {
+ static float calc(const float *pri, const float *sec, size_t size) {
+ return cblas_sdot(size, pri, 1, sec, 1);
+ }
+};
+
+struct UseHammingDist {
+ static float calc(const Int8Float *pri, const Int8Float *sec, size_t size) {
+ return binary_hamming_distance(pri, sec, size);
+ }
+};
+
+template <typename CT, typename AGGR, typename DIST>
+float best_similarity(const CT *pri, ConstArrayRef<CT> sec_cells, size_t inner_size) {
+ AGGR aggr;
+ for (const CT *sec = sec_cells.begin(); sec < sec_cells.end(); sec += inner_size) {
+ aggr.sample(DIST::calc(pri, sec, inner_size));
+ }
+ return aggr.result();
+}
+
+template <bool is_double>
+const Value &create_empty_result(const ValueType &type, Stash &stash) {
+ if (is_double) {
+ return stash.create<DoubleValue>(0.0);
+ } else if (type.count_mapped_dimensions() == 0) {
+ auto zero_cells = stash.create_array<float>(type.dense_subspace_size());
+ return stash.create<ValueView>(type, TrivialIndex::get(), TypedCells(zero_cells));
+ } else {
+ return stash.create<ValueView>(type, EmptyIndex::get(), TypedCells(nullptr, CellType::FLOAT, 0));
+ }
+}
+
+template <bool is_double, typename CT, typename AGGR, typename DIST>
+void my_best_similarity_op(InterpretedFunction::State &state, uint64_t param) {
+ size_t inner_size = is_double ? param : unwrap_param<BestSimParam>(param).inner_size;
+ const ValueType &res_type = is_double ? DoubleValue::shared_type() : unwrap_param<BestSimParam>(param).res_type;
+ const Value &pri_value = state.peek(1);
+ auto pri_cells = pri_value.cells().typify<CT>();
+ auto sec_cells = state.peek(0).cells().typify<CT>();
+ if ((pri_cells.size() == 0) || (sec_cells.size() == 0)) {
+ return state.pop_pop_push(create_empty_result<is_double>(res_type, state.stash));
+ }
+ if (is_double) {
+ auto best_sim = best_similarity<CT, AGGR, DIST>(pri_cells.begin(), sec_cells, inner_size);
+ return state.pop_pop_push(state.stash.create<DoubleValue>(best_sim));
+ }
+ auto out_cells = state.stash.create_uninitialized_array<float>(pri_cells.size() / inner_size);
+ const CT *pri = pri_cells.begin();
+ for (auto &out: out_cells) {
+ out = best_similarity<CT, AGGR, DIST>(pri, sec_cells, inner_size);
+ pri += inner_size;
+ }
+ Value &result_ref = state.stash.create<ValueView>(res_type, pri_value.index(), TypedCells(out_cells));
+ state.pop_pop_push(result_ref);
+}
+
+//-----------------------------------------------------------------------------
+
+size_t stride(const ValueType &type, const vespalib::string &name) {
+ size_t stride = 0;
+ for (const auto &dim: type.dimensions()) {
+ if (dim.is_indexed()) {
+ if (dim.name == name) {
+ stride = 1;
+ } else {
+ stride *= dim.size;
+ }
+ }
+ }
+ return stride;
+}
+
+bool check_dims(const ValueType &pri, const ValueType &sec,
+ const vespalib::string &best, const vespalib::string &inner)
+{
+ if ((stride(pri, inner) != 1) || (stride(sec, inner) != 1)) {
+ return false;
+ }
+ if (pri.dimension_index(best) != ValueType::Dimension::npos) {
+ return false;
+ }
+ if (sec.dimension_index(best) == ValueType::Dimension::npos) {
+ return false;
+ }
+ for (auto &&type = sec.reduce({inner,best}); auto &&dim: type.dimensions()) {
+ if (!dim.is_trivial()) {
+ return false;
+ }
+ }
+ return true;
+}
+
+size_t get_dim_size(const ValueType &type, const vespalib::string &dim) {
+ size_t npos = ValueType::Dimension::npos;
+ size_t idx = type.dimension_index(dim);
+ assert(idx != npos);
+ assert(type.dimensions()[idx].is_indexed());
+ return type.dimensions()[idx].size;
+}
+
+const Reduce *check_reduce(const TensorFunction &expr, std::initializer_list<Aggr> allow) {
+ if (auto reduce = as<Reduce>(expr)) {
+ if (reduce->dimensions().size() == 1) {
+ if (std::find(allow.begin(), allow.end(), reduce->aggr()) != allow.end()) {
+ return reduce;
+ }
+ }
+ }
+ return nullptr;
+}
+
+const Join *check_join(const TensorFunction &expr, std::initializer_list<op2_t> allow) {
+ if (auto join = as<Join>(expr)) {
+ if (std::find(allow.begin(), allow.end(), join->function()) != allow.end()) {
+ return join;
+ }
+ }
+ return nullptr;
+}
+
+struct SelectFun {
+ const ValueType &res_type;
+ const ValueType &lhs_type;
+ const ValueType &rhs_type;
+ template <typename ResType, typename LhsType, typename RhsType>
+ SelectFun(const ResType &res, const LhsType &lhs, const RhsType &rhs)
+ : res_type(res.result_type()), lhs_type(lhs.result_type()), rhs_type(rhs.result_type()) {}
+ template <typename R1> static InterpretedFunction::op_function invoke(Aggr best_aggr, op2_t join_fun, CellType cell_types) {
+ if ((best_aggr == Aggr::MAX) && (join_fun == Mul::f) && (cell_types == CellType::FLOAT)) {
+ return my_best_similarity_op<R1::value, float, aggr::Max<float>, UseDotProduct>;
+ }
+ if ((best_aggr == Aggr::MIN) && (join_fun == Hamming::f) && (cell_types == CellType::INT8)) {
+ return my_best_similarity_op<R1::value, Int8Float, aggr::Min<float>, UseHammingDist>;
+ }
+ return nullptr;
+ }
+ InterpretedFunction::op_function operator()(Aggr best_aggr, op2_t join_fun) {
+ static_assert(std::is_same_v<float, CellValueType<CellType::FLOAT>>);
+ static_assert(std::is_same_v<Int8Float, CellValueType<CellType::INT8>>);
+ if (lhs_type.cell_type() != rhs_type.cell_type()) {
+ return nullptr;
+ }
+ return typify_invoke<1,TypifyBool,SelectFun>(res_type.is_double(), best_aggr, join_fun, lhs_type.cell_type());
+ }
+};
+
+} // namespace <unnamed>
+
+uint64_t
+BestSimilarityFunction::make_param(Stash &stash) const
+{
+ if (result_type().is_double()) {
+ return _inner_size;
+ }
+ return wrap_param<BestSimParam>(stash.create<BestSimParam>(result_type(), _inner_size));
+}
+
+BestSimilarityFunction::BestSimilarityFunction(const ValueType &res_type_in,
+ const TensorFunction &pri,
+ const TensorFunction &sec,
+ InterpretedFunction::op_function my_fun,
+ size_t inner_size)
+ : tensor_function::Op2(res_type_in, pri, sec),
+ _my_fun(my_fun),
+ _inner_size(inner_size)
+{
+}
+
+InterpretedFunction::Instruction
+BestSimilarityFunction::compile_self(const ValueBuilderFactory &, Stash &stash) const
+{
+ return InterpretedFunction::Instruction(_my_fun, make_param(stash));
+}
+
+const TensorFunction &
+BestSimilarityFunction::optimize(const TensorFunction &expr, Stash &stash)
+{
+ if (auto best_reduce = check_reduce(expr, {Aggr::MAX, Aggr::MIN})) {
+ if (auto sum_reduce = check_reduce(best_reduce->child(), {Aggr::SUM})) {
+ if (auto join = check_join(sum_reduce->child(), {Mul::f, Hamming::f})) {
+ SelectFun select_fun(expr, join->lhs(), join->rhs());
+ if (auto my_fun = select_fun(best_reduce->aggr(), join->function())) {
+ const auto &best_dim = best_reduce->dimensions()[0];
+ const auto &inner_dim = sum_reduce->dimensions()[0];
+ const TensorFunction &lhs = join->lhs();
+ const TensorFunction &rhs = join->rhs();
+ if (check_dims(lhs.result_type(), rhs.result_type(), best_dim, inner_dim)) {
+ size_t inner_size = get_dim_size(lhs.result_type(), inner_dim);
+ return stash.create<BestSimilarityFunction>(expr.result_type(), lhs, rhs, my_fun, inner_size);
+ }
+ if (check_dims(rhs.result_type(), lhs.result_type(), best_dim, inner_dim)) {
+ size_t inner_size = get_dim_size(rhs.result_type(), inner_dim);
+ return stash.create<BestSimilarityFunction>(expr.result_type(), rhs, lhs, my_fun, inner_size);
+ }
+ }
+ }
+ }
+ }
+ return expr;
+}
+
+} // namespace
diff --git a/eval/src/vespa/eval/instruction/best_similarity_function.h b/eval/src/vespa/eval/instruction/best_similarity_function.h
new file mode 100644
index 00000000000..5b61eaec085
--- /dev/null
+++ b/eval/src/vespa/eval/instruction/best_similarity_function.h
@@ -0,0 +1,38 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/eval/eval/tensor_function.h>
+
+namespace vespalib::eval {
+
+/**
+ * Tensor function combining multiple vector-based similarity measures
+ * to find the best one. This function supports the following cases:
+ *
+ * - maximum dot product of vectors with float cell type (MaxSim)
+ * - minimum hamming distance of bitvectors with int8 cell type
+ *
+ * The vectors used to calculate the individual distance metrics must
+ * be the inner dense dimension of both inputs. The dimension reduced
+ * to find the best similarity measure must be the remaining dimension
+ * of one of the inputs.
+ **/
+class BestSimilarityFunction : public tensor_function::Op2
+{
+private:
+ InterpretedFunction::op_function _my_fun;
+ size_t _inner_size;
+ uint64_t make_param(Stash &stash) const;
+public:
+ BestSimilarityFunction(const ValueType &res_type_in,
+ const TensorFunction &pri,
+ const TensorFunction &sec,
+ InterpretedFunction::op_function my_fun,
+ size_t inner_size);
+ InterpretedFunction::Instruction compile_self(const ValueBuilderFactory &factory, Stash &stash) const override;
+ bool result_is_mutable() const override { return true; }
+ static const TensorFunction &optimize(const TensorFunction &expr, Stash &stash);
+};
+
+} // namespace
diff --git a/eval/src/vespa/eval/instruction/dense_cell_range_function.cpp b/eval/src/vespa/eval/instruction/dense_cell_range_function.cpp
index 78fecbd10d8..4268768605e 100644
--- a/eval/src/vespa/eval/instruction/dense_cell_range_function.cpp
+++ b/eval/src/vespa/eval/instruction/dense_cell_range_function.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dense_cell_range_function.h"
#include <vespa/eval/eval/value.h>
diff --git a/eval/src/vespa/eval/instruction/dense_cell_range_function.h b/eval/src/vespa/eval/instruction/dense_cell_range_function.h
index b201e15c49f..e642c0af66d 100644
--- a/eval/src/vespa/eval/instruction/dense_cell_range_function.h
+++ b/eval/src/vespa/eval/instruction/dense_cell_range_function.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/dense_dot_product_function.cpp b/eval/src/vespa/eval/instruction/dense_dot_product_function.cpp
index e3cf52a8e3f..a2048707685 100644
--- a/eval/src/vespa/eval/instruction/dense_dot_product_function.cpp
+++ b/eval/src/vespa/eval/instruction/dense_dot_product_function.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dense_dot_product_function.h"
#include <vespa/eval/eval/operation.h>
diff --git a/eval/src/vespa/eval/instruction/dense_dot_product_function.h b/eval/src/vespa/eval/instruction/dense_dot_product_function.h
index efdfbf561fa..4b4684437a9 100644
--- a/eval/src/vespa/eval/instruction/dense_dot_product_function.h
+++ b/eval/src/vespa/eval/instruction/dense_dot_product_function.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/dense_hamming_distance.cpp b/eval/src/vespa/eval/instruction/dense_hamming_distance.cpp
new file mode 100644
index 00000000000..7e80fdc34e0
--- /dev/null
+++ b/eval/src/vespa/eval/instruction/dense_hamming_distance.cpp
@@ -0,0 +1,71 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "dense_hamming_distance.h"
+#include <vespa/eval/eval/operation.h>
+#include <vespa/eval/eval/value.h>
+#include <vespa/eval/eval/hamming_distance.h>
+#include <vespa/vespalib/util/binary_hamming_distance.h>
+
+#include <vespa/log/log.h>
+LOG_SETUP(".eval.instruction.dense_hamming_distance");
+
+namespace vespalib::eval {
+
+using namespace tensor_function;
+
+namespace {
+
+void int8_hamming_to_double_op(InterpretedFunction::State &state, uint64_t vector_size) {
+ const auto &lhs = state.peek(1);
+ const auto &rhs = state.peek(0);
+ auto a = lhs.cells();
+ auto b = rhs.cells();
+ double result = binary_hamming_distance(a.data, b.data, vector_size);
+ state.pop_pop_push(state.stash.create<DoubleValue>(result));
+}
+
+bool compatible_types(const ValueType &lhs, const ValueType &rhs) {
+ return ((lhs.cell_type() == CellType::INT8) &&
+ (rhs.cell_type() == CellType::INT8) &&
+ lhs.is_dense() &&
+ rhs.is_dense() &&
+ (lhs.nontrivial_indexed_dimensions() == rhs.nontrivial_indexed_dimensions()));
+}
+
+} // namespace <unnamed>
+
+DenseHammingDistance::DenseHammingDistance(const TensorFunction &lhs_child,
+ const TensorFunction &rhs_child)
+ : tensor_function::Op2(ValueType::double_type(), lhs_child, rhs_child)
+{
+}
+
+InterpretedFunction::Instruction
+DenseHammingDistance::compile_self(const ValueBuilderFactory &, Stash &) const
+{
+ auto op = int8_hamming_to_double_op;
+ const auto &lhs_type = lhs().result_type();
+ const auto &rhs_type = rhs().result_type();
+ LOG_ASSERT(lhs_type.dense_subspace_size() == rhs_type.dense_subspace_size());
+ return InterpretedFunction::Instruction(op, lhs_type.dense_subspace_size());
+}
+
+const TensorFunction &
+DenseHammingDistance::optimize(const TensorFunction &expr, Stash &stash)
+{
+ const auto & res_type = expr.result_type();
+ auto reduce = as<Reduce>(expr);
+ if (res_type.is_double() && reduce && (reduce->aggr() == Aggr::SUM)) {
+ auto join = as<Join>(reduce->child());
+ if (join && (join->function() == operation::Hamming::f)) {
+ const TensorFunction &lhs = join->lhs();
+ const TensorFunction &rhs = join->rhs();
+ if (compatible_types(lhs.result_type(), rhs.result_type())) {
+ return stash.create<DenseHammingDistance>(lhs, rhs);
+ }
+ }
+ }
+ return expr;
+}
+
+} // namespace
diff --git a/eval/src/vespa/eval/instruction/dense_hamming_distance.h b/eval/src/vespa/eval/instruction/dense_hamming_distance.h
new file mode 100644
index 00000000000..c5a610ab9b8
--- /dev/null
+++ b/eval/src/vespa/eval/instruction/dense_hamming_distance.h
@@ -0,0 +1,22 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/eval/eval/tensor_function.h>
+
+namespace vespalib::eval {
+
+/**
+ * Tensor function for a hamming distance producing a scalar result.
+ **/
+class DenseHammingDistance : public tensor_function::Op2
+{
+public:
+ DenseHammingDistance(const TensorFunction &lhs_child,
+ const TensorFunction &rhs_child);
+ InterpretedFunction::Instruction compile_self(const ValueBuilderFactory &factory, Stash &stash) const override;
+ bool result_is_mutable() const override { return true; }
+ static const TensorFunction &optimize(const TensorFunction &expr, Stash &stash);
+};
+
+} // namespace
diff --git a/eval/src/vespa/eval/instruction/dense_lambda_peek_function.cpp b/eval/src/vespa/eval/instruction/dense_lambda_peek_function.cpp
index 4a4f6b9be14..2094a37378f 100644
--- a/eval/src/vespa/eval/instruction/dense_lambda_peek_function.cpp
+++ b/eval/src/vespa/eval/instruction/dense_lambda_peek_function.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dense_lambda_peek_function.h"
#include "index_lookup_table.h"
diff --git a/eval/src/vespa/eval/instruction/dense_lambda_peek_function.h b/eval/src/vespa/eval/instruction/dense_lambda_peek_function.h
index ecd0a15a86e..f61fb71dd88 100644
--- a/eval/src/vespa/eval/instruction/dense_lambda_peek_function.h
+++ b/eval/src/vespa/eval/instruction/dense_lambda_peek_function.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/dense_lambda_peek_optimizer.cpp b/eval/src/vespa/eval/instruction/dense_lambda_peek_optimizer.cpp
index e1d5a5d4b7a..b51d882d406 100644
--- a/eval/src/vespa/eval/instruction/dense_lambda_peek_optimizer.cpp
+++ b/eval/src/vespa/eval/instruction/dense_lambda_peek_optimizer.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dense_lambda_peek_optimizer.h"
#include "dense_lambda_peek_function.h"
diff --git a/eval/src/vespa/eval/instruction/dense_lambda_peek_optimizer.h b/eval/src/vespa/eval/instruction/dense_lambda_peek_optimizer.h
index 72a642569a3..011f175aec6 100644
--- a/eval/src/vespa/eval/instruction/dense_lambda_peek_optimizer.h
+++ b/eval/src/vespa/eval/instruction/dense_lambda_peek_optimizer.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/dense_multi_matmul_function.cpp b/eval/src/vespa/eval/instruction/dense_multi_matmul_function.cpp
index 6d05c8a8d1e..acb9873ab10 100644
--- a/eval/src/vespa/eval/instruction/dense_multi_matmul_function.cpp
+++ b/eval/src/vespa/eval/instruction/dense_multi_matmul_function.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dense_multi_matmul_function.h"
#include <vespa/vespalib/objects/objectvisitor.h>
diff --git a/eval/src/vespa/eval/instruction/dense_multi_matmul_function.h b/eval/src/vespa/eval/instruction/dense_multi_matmul_function.h
index 7dd99b58a2f..a6cbf220ba6 100644
--- a/eval/src/vespa/eval/instruction/dense_multi_matmul_function.h
+++ b/eval/src/vespa/eval/instruction/dense_multi_matmul_function.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/dense_simple_expand_function.cpp b/eval/src/vespa/eval/instruction/dense_simple_expand_function.cpp
index 2815da40d0a..99ed9260d9e 100644
--- a/eval/src/vespa/eval/instruction/dense_simple_expand_function.cpp
+++ b/eval/src/vespa/eval/instruction/dense_simple_expand_function.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dense_simple_expand_function.h"
#include <vespa/vespalib/objects/objectvisitor.h>
diff --git a/eval/src/vespa/eval/instruction/dense_simple_expand_function.h b/eval/src/vespa/eval/instruction/dense_simple_expand_function.h
index 4abb3d5df02..0911c28c15d 100644
--- a/eval/src/vespa/eval/instruction/dense_simple_expand_function.h
+++ b/eval/src/vespa/eval/instruction/dense_simple_expand_function.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/dense_single_reduce_function.cpp b/eval/src/vespa/eval/instruction/dense_single_reduce_function.cpp
index 87f02f16345..0002301f33d 100644
--- a/eval/src/vespa/eval/instruction/dense_single_reduce_function.cpp
+++ b/eval/src/vespa/eval/instruction/dense_single_reduce_function.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dense_single_reduce_function.h"
#include <vespa/vespalib/util/typify.h>
diff --git a/eval/src/vespa/eval/instruction/dense_single_reduce_function.h b/eval/src/vespa/eval/instruction/dense_single_reduce_function.h
index ed68bd48c15..07d9ea036be 100644
--- a/eval/src/vespa/eval/instruction/dense_single_reduce_function.h
+++ b/eval/src/vespa/eval/instruction/dense_single_reduce_function.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/dense_xw_product_function.cpp b/eval/src/vespa/eval/instruction/dense_xw_product_function.cpp
index 371a5767382..f235144929d 100644
--- a/eval/src/vespa/eval/instruction/dense_xw_product_function.cpp
+++ b/eval/src/vespa/eval/instruction/dense_xw_product_function.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dense_xw_product_function.h"
#include <vespa/vespalib/objects/objectvisitor.h>
diff --git a/eval/src/vespa/eval/instruction/dense_xw_product_function.h b/eval/src/vespa/eval/instruction/dense_xw_product_function.h
index 7e87377f891..a77aaa8a3be 100644
--- a/eval/src/vespa/eval/instruction/dense_xw_product_function.h
+++ b/eval/src/vespa/eval/instruction/dense_xw_product_function.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/fast_rename_optimizer.cpp b/eval/src/vespa/eval/instruction/fast_rename_optimizer.cpp
index 4b9de9307a9..7793b221558 100644
--- a/eval/src/vespa/eval/instruction/fast_rename_optimizer.cpp
+++ b/eval/src/vespa/eval/instruction/fast_rename_optimizer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fast_rename_optimizer.h"
#include "replace_type_function.h"
diff --git a/eval/src/vespa/eval/instruction/fast_rename_optimizer.h b/eval/src/vespa/eval/instruction/fast_rename_optimizer.h
index 11bf6c27f74..7a8c9557209 100644
--- a/eval/src/vespa/eval/instruction/fast_rename_optimizer.h
+++ b/eval/src/vespa/eval/instruction/fast_rename_optimizer.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/generic_cell_cast.cpp b/eval/src/vespa/eval/instruction/generic_cell_cast.cpp
index b5f957c5168..17392a385e2 100644
--- a/eval/src/vespa/eval/instruction/generic_cell_cast.cpp
+++ b/eval/src/vespa/eval/instruction/generic_cell_cast.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "generic_cell_cast.h"
#include <vespa/eval/eval/value.h>
diff --git a/eval/src/vespa/eval/instruction/generic_cell_cast.h b/eval/src/vespa/eval/instruction/generic_cell_cast.h
index d11ae22aeba..81352518daa 100644
--- a/eval/src/vespa/eval/instruction/generic_cell_cast.h
+++ b/eval/src/vespa/eval/instruction/generic_cell_cast.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/generic_concat.cpp b/eval/src/vespa/eval/instruction/generic_concat.cpp
index dcd806e5de1..1c91354e4cf 100644
--- a/eval/src/vespa/eval/instruction/generic_concat.cpp
+++ b/eval/src/vespa/eval/instruction/generic_concat.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "generic_concat.h"
#include "generic_join.h"
diff --git a/eval/src/vespa/eval/instruction/generic_concat.h b/eval/src/vespa/eval/instruction/generic_concat.h
index d2a567509cc..2fb5af88181 100644
--- a/eval/src/vespa/eval/instruction/generic_concat.h
+++ b/eval/src/vespa/eval/instruction/generic_concat.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/generic_create.cpp b/eval/src/vespa/eval/instruction/generic_create.cpp
index 864571d6542..c0be28a2475 100644
--- a/eval/src/vespa/eval/instruction/generic_create.cpp
+++ b/eval/src/vespa/eval/instruction/generic_create.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "generic_create.h"
#include <vespa/eval/eval/wrap_param.h>
diff --git a/eval/src/vespa/eval/instruction/generic_create.h b/eval/src/vespa/eval/instruction/generic_create.h
index 0d461aeb7b1..628b2cd934d 100644
--- a/eval/src/vespa/eval/instruction/generic_create.h
+++ b/eval/src/vespa/eval/instruction/generic_create.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/generic_join.cpp b/eval/src/vespa/eval/instruction/generic_join.cpp
index 8881794c6bb..60949a65b62 100644
--- a/eval/src/vespa/eval/instruction/generic_join.cpp
+++ b/eval/src/vespa/eval/instruction/generic_join.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "generic_join.h"
#include <vespa/eval/eval/inline_operation.h>
diff --git a/eval/src/vespa/eval/instruction/generic_join.h b/eval/src/vespa/eval/instruction/generic_join.h
index 80a1179e0d5..72ae0b89d2c 100644
--- a/eval/src/vespa/eval/instruction/generic_join.h
+++ b/eval/src/vespa/eval/instruction/generic_join.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/generic_lambda.cpp b/eval/src/vespa/eval/instruction/generic_lambda.cpp
index 2b0d6a18035..2fe508fc310 100644
--- a/eval/src/vespa/eval/instruction/generic_lambda.cpp
+++ b/eval/src/vespa/eval/instruction/generic_lambda.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "generic_lambda.h"
#include <vespa/eval/eval/llvm/compiled_function.h>
diff --git a/eval/src/vespa/eval/instruction/generic_lambda.h b/eval/src/vespa/eval/instruction/generic_lambda.h
index a5f4c10e214..4b97050abc8 100644
--- a/eval/src/vespa/eval/instruction/generic_lambda.h
+++ b/eval/src/vespa/eval/instruction/generic_lambda.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/generic_map.cpp b/eval/src/vespa/eval/instruction/generic_map.cpp
index 33f7d565157..749d32e7bab 100644
--- a/eval/src/vespa/eval/instruction/generic_map.cpp
+++ b/eval/src/vespa/eval/instruction/generic_map.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "generic_map.h"
#include <vespa/eval/eval/inline_operation.h>
diff --git a/eval/src/vespa/eval/instruction/generic_map.h b/eval/src/vespa/eval/instruction/generic_map.h
index 6878546018d..4db20f35576 100644
--- a/eval/src/vespa/eval/instruction/generic_map.h
+++ b/eval/src/vespa/eval/instruction/generic_map.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/generic_merge.cpp b/eval/src/vespa/eval/instruction/generic_merge.cpp
index 9bff85d27c7..322935417ed 100644
--- a/eval/src/vespa/eval/instruction/generic_merge.cpp
+++ b/eval/src/vespa/eval/instruction/generic_merge.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "generic_merge.h"
#include <vespa/eval/eval/inline_operation.h>
diff --git a/eval/src/vespa/eval/instruction/generic_merge.h b/eval/src/vespa/eval/instruction/generic_merge.h
index 4f06e4259fc..f44cadf6a0d 100644
--- a/eval/src/vespa/eval/instruction/generic_merge.h
+++ b/eval/src/vespa/eval/instruction/generic_merge.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/generic_peek.cpp b/eval/src/vespa/eval/instruction/generic_peek.cpp
index da61de33f3a..ccca0b4e458 100644
--- a/eval/src/vespa/eval/instruction/generic_peek.cpp
+++ b/eval/src/vespa/eval/instruction/generic_peek.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "generic_peek.h"
#include <vespa/eval/eval/nested_loop.h>
diff --git a/eval/src/vespa/eval/instruction/generic_peek.h b/eval/src/vespa/eval/instruction/generic_peek.h
index 805eafcb2f0..182ecf70105 100644
--- a/eval/src/vespa/eval/instruction/generic_peek.h
+++ b/eval/src/vespa/eval/instruction/generic_peek.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/generic_reduce.cpp b/eval/src/vespa/eval/instruction/generic_reduce.cpp
index 7f48976048c..db3b0e49222 100644
--- a/eval/src/vespa/eval/instruction/generic_reduce.cpp
+++ b/eval/src/vespa/eval/instruction/generic_reduce.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "generic_reduce.h"
#include <vespa/eval/eval/value.h>
diff --git a/eval/src/vespa/eval/instruction/generic_reduce.h b/eval/src/vespa/eval/instruction/generic_reduce.h
index 84d5c626136..b9b6e7c5167 100644
--- a/eval/src/vespa/eval/instruction/generic_reduce.h
+++ b/eval/src/vespa/eval/instruction/generic_reduce.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/generic_rename.cpp b/eval/src/vespa/eval/instruction/generic_rename.cpp
index 9d617720a4c..06e1ece1e98 100644
--- a/eval/src/vespa/eval/instruction/generic_rename.cpp
+++ b/eval/src/vespa/eval/instruction/generic_rename.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "generic_rename.h"
#include <vespa/eval/eval/value.h>
diff --git a/eval/src/vespa/eval/instruction/generic_rename.h b/eval/src/vespa/eval/instruction/generic_rename.h
index 1fc9ebcf6c9..62a0685edce 100644
--- a/eval/src/vespa/eval/instruction/generic_rename.h
+++ b/eval/src/vespa/eval/instruction/generic_rename.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/index_lookup_table.cpp b/eval/src/vespa/eval/instruction/index_lookup_table.cpp
index 629f43afd96..f2c95cd5d4e 100644
--- a/eval/src/vespa/eval/instruction/index_lookup_table.cpp
+++ b/eval/src/vespa/eval/instruction/index_lookup_table.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "index_lookup_table.h"
#include <vespa/eval/eval/value_type.h>
diff --git a/eval/src/vespa/eval/instruction/index_lookup_table.h b/eval/src/vespa/eval/instruction/index_lookup_table.h
index 18bf0358f27..d74b8edf2ec 100644
--- a/eval/src/vespa/eval/instruction/index_lookup_table.h
+++ b/eval/src/vespa/eval/instruction/index_lookup_table.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/inplace_map_function.cpp b/eval/src/vespa/eval/instruction/inplace_map_function.cpp
index 54c6be9bea1..78323820d77 100644
--- a/eval/src/vespa/eval/instruction/inplace_map_function.cpp
+++ b/eval/src/vespa/eval/instruction/inplace_map_function.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "inplace_map_function.h"
#include <vespa/vespalib/util/typify.h>
diff --git a/eval/src/vespa/eval/instruction/inplace_map_function.h b/eval/src/vespa/eval/instruction/inplace_map_function.h
index c04934b698f..e246d2de489 100644
--- a/eval/src/vespa/eval/instruction/inplace_map_function.h
+++ b/eval/src/vespa/eval/instruction/inplace_map_function.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/join_with_number_function.cpp b/eval/src/vespa/eval/instruction/join_with_number_function.cpp
index 592076f23ce..0e5f2ecd437 100644
--- a/eval/src/vespa/eval/instruction/join_with_number_function.cpp
+++ b/eval/src/vespa/eval/instruction/join_with_number_function.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "join_with_number_function.h"
#include <vespa/vespalib/objects/objectvisitor.h>
diff --git a/eval/src/vespa/eval/instruction/join_with_number_function.h b/eval/src/vespa/eval/instruction/join_with_number_function.h
index 9d29ad5eb5d..a459d76153f 100644
--- a/eval/src/vespa/eval/instruction/join_with_number_function.h
+++ b/eval/src/vespa/eval/instruction/join_with_number_function.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/mixed_inner_product_function.cpp b/eval/src/vespa/eval/instruction/mixed_inner_product_function.cpp
index a223463240a..248f909fcf5 100644
--- a/eval/src/vespa/eval/instruction/mixed_inner_product_function.cpp
+++ b/eval/src/vespa/eval/instruction/mixed_inner_product_function.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mixed_inner_product_function.h"
#include <vespa/eval/eval/operation.h>
diff --git a/eval/src/vespa/eval/instruction/mixed_inner_product_function.h b/eval/src/vespa/eval/instruction/mixed_inner_product_function.h
index 99ef88997b6..d5967c2114d 100644
--- a/eval/src/vespa/eval/instruction/mixed_inner_product_function.h
+++ b/eval/src/vespa/eval/instruction/mixed_inner_product_function.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/mixed_simple_join_function.cpp b/eval/src/vespa/eval/instruction/mixed_simple_join_function.cpp
index 70134196d1e..18365bd4e4e 100644
--- a/eval/src/vespa/eval/instruction/mixed_simple_join_function.cpp
+++ b/eval/src/vespa/eval/instruction/mixed_simple_join_function.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mixed_simple_join_function.h"
#include <vespa/vespalib/objects/objectvisitor.h>
diff --git a/eval/src/vespa/eval/instruction/mixed_simple_join_function.h b/eval/src/vespa/eval/instruction/mixed_simple_join_function.h
index 7658ff93689..e384b291e25 100644
--- a/eval/src/vespa/eval/instruction/mixed_simple_join_function.h
+++ b/eval/src/vespa/eval/instruction/mixed_simple_join_function.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/pow_as_map_optimizer.cpp b/eval/src/vespa/eval/instruction/pow_as_map_optimizer.cpp
index 5c09ba2c8cc..0d35644884c 100644
--- a/eval/src/vespa/eval/instruction/pow_as_map_optimizer.cpp
+++ b/eval/src/vespa/eval/instruction/pow_as_map_optimizer.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "pow_as_map_optimizer.h"
#include <vespa/eval/eval/operation.h>
diff --git a/eval/src/vespa/eval/instruction/pow_as_map_optimizer.h b/eval/src/vespa/eval/instruction/pow_as_map_optimizer.h
index df9735f76ca..aa12d8347a7 100644
--- a/eval/src/vespa/eval/instruction/pow_as_map_optimizer.h
+++ b/eval/src/vespa/eval/instruction/pow_as_map_optimizer.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/remove_trivial_dimension_optimizer.cpp b/eval/src/vespa/eval/instruction/remove_trivial_dimension_optimizer.cpp
index 06c3fb886b5..e983cd782cb 100644
--- a/eval/src/vespa/eval/instruction/remove_trivial_dimension_optimizer.cpp
+++ b/eval/src/vespa/eval/instruction/remove_trivial_dimension_optimizer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "remove_trivial_dimension_optimizer.h"
#include "replace_type_function.h"
diff --git a/eval/src/vespa/eval/instruction/remove_trivial_dimension_optimizer.h b/eval/src/vespa/eval/instruction/remove_trivial_dimension_optimizer.h
index be1de0e0628..5c7be763d58 100644
--- a/eval/src/vespa/eval/instruction/remove_trivial_dimension_optimizer.h
+++ b/eval/src/vespa/eval/instruction/remove_trivial_dimension_optimizer.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/replace_type_function.cpp b/eval/src/vespa/eval/instruction/replace_type_function.cpp
index d319f2378bb..caa29838893 100644
--- a/eval/src/vespa/eval/instruction/replace_type_function.cpp
+++ b/eval/src/vespa/eval/instruction/replace_type_function.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "replace_type_function.h"
#include <vespa/eval/eval/value.h>
diff --git a/eval/src/vespa/eval/instruction/replace_type_function.h b/eval/src/vespa/eval/instruction/replace_type_function.h
index a4feb93cfbc..a7f778b2949 100644
--- a/eval/src/vespa/eval/instruction/replace_type_function.h
+++ b/eval/src/vespa/eval/instruction/replace_type_function.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/sparse_dot_product_function.cpp b/eval/src/vespa/eval/instruction/sparse_dot_product_function.cpp
index 4da3dbe4f5b..169c35155cb 100644
--- a/eval/src/vespa/eval/instruction/sparse_dot_product_function.cpp
+++ b/eval/src/vespa/eval/instruction/sparse_dot_product_function.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sparse_dot_product_function.h"
#include "generic_join.h"
diff --git a/eval/src/vespa/eval/instruction/sparse_dot_product_function.h b/eval/src/vespa/eval/instruction/sparse_dot_product_function.h
index ccc7a61f5e8..ea1afb67295 100644
--- a/eval/src/vespa/eval/instruction/sparse_dot_product_function.h
+++ b/eval/src/vespa/eval/instruction/sparse_dot_product_function.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/sparse_full_overlap_join_function.cpp b/eval/src/vespa/eval/instruction/sparse_full_overlap_join_function.cpp
index 0c6ac51cde0..7a69f0fb8f6 100644
--- a/eval/src/vespa/eval/instruction/sparse_full_overlap_join_function.cpp
+++ b/eval/src/vespa/eval/instruction/sparse_full_overlap_join_function.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sparse_full_overlap_join_function.h"
#include "generic_join.h"
diff --git a/eval/src/vespa/eval/instruction/sparse_full_overlap_join_function.h b/eval/src/vespa/eval/instruction/sparse_full_overlap_join_function.h
index 13d35065997..e28c6d85060 100644
--- a/eval/src/vespa/eval/instruction/sparse_full_overlap_join_function.h
+++ b/eval/src/vespa/eval/instruction/sparse_full_overlap_join_function.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/sparse_merge_function.cpp b/eval/src/vespa/eval/instruction/sparse_merge_function.cpp
index 728a5be43b6..c6d6b8a7eec 100644
--- a/eval/src/vespa/eval/instruction/sparse_merge_function.cpp
+++ b/eval/src/vespa/eval/instruction/sparse_merge_function.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sparse_merge_function.h"
#include "generic_merge.h"
diff --git a/eval/src/vespa/eval/instruction/sparse_merge_function.h b/eval/src/vespa/eval/instruction/sparse_merge_function.h
index d2b26196ed6..9305c2d5df0 100644
--- a/eval/src/vespa/eval/instruction/sparse_merge_function.h
+++ b/eval/src/vespa/eval/instruction/sparse_merge_function.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/sparse_no_overlap_join_function.cpp b/eval/src/vespa/eval/instruction/sparse_no_overlap_join_function.cpp
index 2dfe1b07373..f4808faadcc 100644
--- a/eval/src/vespa/eval/instruction/sparse_no_overlap_join_function.cpp
+++ b/eval/src/vespa/eval/instruction/sparse_no_overlap_join_function.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sparse_no_overlap_join_function.h"
#include "generic_join.h"
diff --git a/eval/src/vespa/eval/instruction/sparse_no_overlap_join_function.h b/eval/src/vespa/eval/instruction/sparse_no_overlap_join_function.h
index 962e6dc1361..ff49e956edd 100644
--- a/eval/src/vespa/eval/instruction/sparse_no_overlap_join_function.h
+++ b/eval/src/vespa/eval/instruction/sparse_no_overlap_join_function.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/sum_max_dot_product_function.cpp b/eval/src/vespa/eval/instruction/sum_max_dot_product_function.cpp
index bdf1682cccd..a76eaa38925 100644
--- a/eval/src/vespa/eval/instruction/sum_max_dot_product_function.cpp
+++ b/eval/src/vespa/eval/instruction/sum_max_dot_product_function.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sum_max_dot_product_function.h"
#include <vespa/eval/eval/operation.h>
diff --git a/eval/src/vespa/eval/instruction/sum_max_dot_product_function.h b/eval/src/vespa/eval/instruction/sum_max_dot_product_function.h
index 955f014ad47..195823f38b9 100644
--- a/eval/src/vespa/eval/instruction/sum_max_dot_product_function.h
+++ b/eval/src/vespa/eval/instruction/sum_max_dot_product_function.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/unpack_bits_function.cpp b/eval/src/vespa/eval/instruction/unpack_bits_function.cpp
index 330982aa4b7..7ff40bd3729 100644
--- a/eval/src/vespa/eval/instruction/unpack_bits_function.cpp
+++ b/eval/src/vespa/eval/instruction/unpack_bits_function.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "unpack_bits_function.h"
#include <vespa/eval/eval/operation.h>
diff --git a/eval/src/vespa/eval/instruction/unpack_bits_function.h b/eval/src/vespa/eval/instruction/unpack_bits_function.h
index 5b0da84072f..74a5959ae72 100644
--- a/eval/src/vespa/eval/instruction/unpack_bits_function.h
+++ b/eval/src/vespa/eval/instruction/unpack_bits_function.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/instruction/vector_from_doubles_function.cpp b/eval/src/vespa/eval/instruction/vector_from_doubles_function.cpp
index 40bd9e25dfc..69ef7414944 100644
--- a/eval/src/vespa/eval/instruction/vector_from_doubles_function.cpp
+++ b/eval/src/vespa/eval/instruction/vector_from_doubles_function.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "vector_from_doubles_function.h"
#include <vespa/eval/eval/value.h>
diff --git a/eval/src/vespa/eval/instruction/vector_from_doubles_function.h b/eval/src/vespa/eval/instruction/vector_from_doubles_function.h
index c22ea99f41a..bef114aa28a 100644
--- a/eval/src/vespa/eval/instruction/vector_from_doubles_function.h
+++ b/eval/src/vespa/eval/instruction/vector_from_doubles_function.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/onnx/CMakeLists.txt b/eval/src/vespa/eval/onnx/CMakeLists.txt
index 40444936d02..21e47f864d1 100644
--- a/eval/src/vespa/eval/onnx/CMakeLists.txt
+++ b/eval/src/vespa/eval/onnx/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(eval_onnx OBJECT
SOURCES
diff --git a/eval/src/vespa/eval/onnx/onnx_model_cache.cpp b/eval/src/vespa/eval/onnx/onnx_model_cache.cpp
index 01d5fdd9c84..2e3ea5482da 100644
--- a/eval/src/vespa/eval/onnx/onnx_model_cache.cpp
+++ b/eval/src/vespa/eval/onnx/onnx_model_cache.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "onnx_model_cache.h"
diff --git a/eval/src/vespa/eval/onnx/onnx_model_cache.h b/eval/src/vespa/eval/onnx/onnx_model_cache.h
index 35d5fefa061..d9872810c65 100644
--- a/eval/src/vespa/eval/onnx/onnx_model_cache.h
+++ b/eval/src/vespa/eval/onnx/onnx_model_cache.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/onnx/onnx_wrapper.cpp b/eval/src/vespa/eval/onnx/onnx_wrapper.cpp
index e2528fcb1c3..136ff4d6a87 100644
--- a/eval/src/vespa/eval/onnx/onnx_wrapper.cpp
+++ b/eval/src/vespa/eval/onnx/onnx_wrapper.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "onnx_wrapper.h"
#include <vespa/eval/eval/cell_type.h>
@@ -97,6 +97,17 @@ struct CreateVespaTensor {
}
};
+struct ClearVespaTensor {
+ template <typename CT> static void invoke(const Value &value) {
+ auto cells = unconstify(value.cells().typify<CT>());
+ std::fill(cells.begin(), cells.end(), CT{});
+ }
+ void operator()(const Value &value) {
+ return typify_invoke<1,TypifyCellType,ClearVespaTensor>(value.type().cell_type(), value);
+ }
+};
+ClearVespaTensor clear_vespa_tensor;
+
//-----------------------------------------------------------------------------
template <typename E> vespalib::string type_name(E enum_value) {
@@ -202,7 +213,7 @@ std::vector<int64_t> extract_sizes(const ValueType &type) {
return sizes;
}
-}
+} // <unnamed>
vespalib::string
Onnx::DimSize::as_string() const
@@ -488,6 +499,14 @@ Onnx::EvalContext::eval()
}
}
+void
+Onnx::EvalContext::clear_results()
+{
+ for (const Value::UP &result: _results) {
+ clear_vespa_tensor(*result);
+ }
+}
+
const Value &
Onnx::EvalContext::get_result(size_t i) const
{
diff --git a/eval/src/vespa/eval/onnx/onnx_wrapper.h b/eval/src/vespa/eval/onnx/onnx_wrapper.h
index 9392536eae7..bbbbe541145 100644
--- a/eval/src/vespa/eval/onnx/onnx_wrapper.h
+++ b/eval/src/vespa/eval/onnx/onnx_wrapper.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -134,6 +134,7 @@ public:
size_t num_results() const { return _result_values.size(); }
void bind_param(size_t i, const Value &param);
void eval();
+ void clear_results();
const Value &get_result(size_t i) const;
};
diff --git a/eval/src/vespa/eval/streamed/CMakeLists.txt b/eval/src/vespa/eval/streamed/CMakeLists.txt
index ee928d7b2c9..1bb77fd3774 100644
--- a/eval/src/vespa/eval/streamed/CMakeLists.txt
+++ b/eval/src/vespa/eval/streamed/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(eval_streamed OBJECT
SOURCES
diff --git a/eval/src/vespa/eval/streamed/streamed_value.cpp b/eval/src/vespa/eval/streamed/streamed_value.cpp
index 63765d9b1da..bcaccc570c7 100644
--- a/eval/src/vespa/eval/streamed/streamed_value.cpp
+++ b/eval/src/vespa/eval/streamed/streamed_value.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "streamed_value.h"
#include <vespa/log/log.h>
diff --git a/eval/src/vespa/eval/streamed/streamed_value.h b/eval/src/vespa/eval/streamed/streamed_value.h
index ffd88a56cdd..ef44eeafce3 100644
--- a/eval/src/vespa/eval/streamed/streamed_value.h
+++ b/eval/src/vespa/eval/streamed/streamed_value.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/streamed/streamed_value_builder.cpp b/eval/src/vespa/eval/streamed/streamed_value_builder.cpp
index ba5d92bf5d2..4323aa06798 100644
--- a/eval/src/vespa/eval/streamed/streamed_value_builder.cpp
+++ b/eval/src/vespa/eval/streamed/streamed_value_builder.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "streamed_value_builder.h"
diff --git a/eval/src/vespa/eval/streamed/streamed_value_builder.h b/eval/src/vespa/eval/streamed/streamed_value_builder.h
index 7c6e7091c15..f64dc74542c 100644
--- a/eval/src/vespa/eval/streamed/streamed_value_builder.h
+++ b/eval/src/vespa/eval/streamed/streamed_value_builder.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/streamed/streamed_value_builder_factory.cpp b/eval/src/vespa/eval/streamed/streamed_value_builder_factory.cpp
index 5111ba8a71e..fb5cb024aab 100644
--- a/eval/src/vespa/eval/streamed/streamed_value_builder_factory.cpp
+++ b/eval/src/vespa/eval/streamed/streamed_value_builder_factory.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "streamed_value_builder_factory.h"
#include "streamed_value_builder.h"
diff --git a/eval/src/vespa/eval/streamed/streamed_value_builder_factory.h b/eval/src/vespa/eval/streamed/streamed_value_builder_factory.h
index 58072aa31dc..540804affcc 100644
--- a/eval/src/vespa/eval/streamed/streamed_value_builder_factory.h
+++ b/eval/src/vespa/eval/streamed/streamed_value_builder_factory.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/streamed/streamed_value_index.cpp b/eval/src/vespa/eval/streamed/streamed_value_index.cpp
index 57845911026..1aaf82e48da 100644
--- a/eval/src/vespa/eval/streamed/streamed_value_index.cpp
+++ b/eval/src/vespa/eval/streamed/streamed_value_index.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "streamed_value_index.h"
#include "streamed_value_utils.h"
diff --git a/eval/src/vespa/eval/streamed/streamed_value_index.h b/eval/src/vespa/eval/streamed/streamed_value_index.h
index 8bbe388df77..724874af577 100644
--- a/eval/src/vespa/eval/streamed/streamed_value_index.h
+++ b/eval/src/vespa/eval/streamed/streamed_value_index.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/streamed/streamed_value_utils.cpp b/eval/src/vespa/eval/streamed/streamed_value_utils.cpp
index 1b4a91a9080..2348d7ff057 100644
--- a/eval/src/vespa/eval/streamed/streamed_value_utils.cpp
+++ b/eval/src/vespa/eval/streamed/streamed_value_utils.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "streamed_value_utils.h"
diff --git a/eval/src/vespa/eval/streamed/streamed_value_utils.h b/eval/src/vespa/eval/streamed/streamed_value_utils.h
index 9eb2804367d..efcaf4c6e7a 100644
--- a/eval/src/vespa/eval/streamed/streamed_value_utils.h
+++ b/eval/src/vespa/eval/streamed/streamed_value_utils.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/eval/src/vespa/eval/streamed/streamed_value_view.cpp b/eval/src/vespa/eval/streamed/streamed_value_view.cpp
index 87e1e676692..29c1c32ebae 100644
--- a/eval/src/vespa/eval/streamed/streamed_value_view.cpp
+++ b/eval/src/vespa/eval/streamed/streamed_value_view.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "streamed_value_view.h"
diff --git a/eval/src/vespa/eval/streamed/streamed_value_view.h b/eval/src/vespa/eval/streamed/streamed_value_view.h
index af2f707e0b1..908176d5cac 100644
--- a/eval/src/vespa/eval/streamed/streamed_value_view.h
+++ b/eval/src/vespa/eval/streamed/streamed_value_view.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fastlib/CMakeLists.txt b/fastlib/CMakeLists.txt
index 58d3708e9e1..035c691c04b 100644
--- a/fastlib/CMakeLists.txt
+++ b/fastlib/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/fastlib/common_config/install.sh b/fastlib/common_config/install.sh
index 7c1b0e754d3..0e6395146b0 100644
--- a/fastlib/common_config/install.sh
+++ b/fastlib/common_config/install.sh
@@ -1,4 +1,4 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
cd src/cpp
make FASTOS_DIR=${autobuild_installroot} INSTALL_DIR=${autobuild_installroot} install
diff --git a/fastlib/common_config/make.sh b/fastlib/common_config/make.sh
index 53ca793f16c..66d0cea0b76 100644
--- a/fastlib/common_config/make.sh
+++ b/fastlib/common_config/make.sh
@@ -1,4 +1,4 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
cd src/cpp
make FASTOS_DIR=${autobuild_installroot} INSTALL_DIR=${autobuild_installroot}
diff --git a/fastlib/current/release/buildspec b/fastlib/current/release/buildspec
index 8ef291ecb02..a546c902603 100644
--- a/fastlib/current/release/buildspec
+++ b/fastlib/current/release/buildspec
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Config file added by mkspec
# Added by oholsen
$fastlib_about="FAST standard library classes";
diff --git a/fastlib/src/Doxyfile b/fastlib/src/Doxyfile
index 9df5dff13b3..da1209eda82 100644
--- a/fastlib/src/Doxyfile
+++ b/fastlib/src/Doxyfile
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Doxyfile 1.3.3
# This file describes the settings to be used by the documentation system
diff --git a/fastlib/src/vespa/fastlib/io/CMakeLists.txt b/fastlib/src/vespa/fastlib/io/CMakeLists.txt
index d5dd72dbb9c..58244af5798 100644
--- a/fastlib/src/vespa/fastlib/io/CMakeLists.txt
+++ b/fastlib/src/vespa/fastlib/io/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(fastlib_io
SOURCES
bufferedfile.cpp
diff --git a/fastlib/src/vespa/fastlib/io/bufferedfile.cpp b/fastlib/src/vespa/fastlib/io/bufferedfile.cpp
index bd1dd729e39..e6972c501f5 100644
--- a/fastlib/src/vespa/fastlib/io/bufferedfile.cpp
+++ b/fastlib/src/vespa/fastlib/io/bufferedfile.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bufferedfile.h"
#include <cassert>
diff --git a/fastlib/src/vespa/fastlib/io/bufferedfile.h b/fastlib/src/vespa/fastlib/io/bufferedfile.h
index ccb9644b49b..014223c9b93 100644
--- a/fastlib/src/vespa/fastlib/io/bufferedfile.h
+++ b/fastlib/src/vespa/fastlib/io/bufferedfile.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fastlib/src/vespa/fastlib/io/tests/CMakeLists.txt b/fastlib/src/vespa/fastlib/io/tests/CMakeLists.txt
index 803892d035e..ae1e81a6170 100644
--- a/fastlib/src/vespa/fastlib/io/tests/CMakeLists.txt
+++ b/fastlib/src/vespa/fastlib/io/tests/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fastlib_bufferedfiletest_app TEST
SOURCES
bufferedfiletest.cpp
diff --git a/fastlib/src/vespa/fastlib/io/tests/bufferedfiletest.cpp b/fastlib/src/vespa/fastlib/io/tests/bufferedfiletest.cpp
index aeb37cfd903..4cc386b2d17 100644
--- a/fastlib/src/vespa/fastlib/io/tests/bufferedfiletest.cpp
+++ b/fastlib/src/vespa/fastlib/io/tests/bufferedfiletest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fastlib/io/bufferedfile.h>
#include <vespa/vespalib/testkit/test_kit.h>
diff --git a/fastlib/src/vespa/fastlib/testsuite/CMakeLists.txt b/fastlib/src/vespa/fastlib/testsuite/CMakeLists.txt
index 4bd50637ff0..5fe13b21fb9 100644
--- a/fastlib/src/vespa/fastlib/testsuite/CMakeLists.txt
+++ b/fastlib/src/vespa/fastlib/testsuite/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(fastlib_fast_testsuite
SOURCES
suite.cpp
diff --git a/fastlib/src/vespa/fastlib/testsuite/cpptest.el b/fastlib/src/vespa/fastlib/testsuite/cpptest.el
index f5014fc6ee6..31c0906d576 100644
--- a/fastlib/src/vespa/fastlib/testsuite/cpptest.el
+++ b/fastlib/src/vespa/fastlib/testsuite/cpptest.el
@@ -1,4 +1,4 @@
-;; Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+;; Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
;; cpptest.el --- C++ unit test support for c++-mode
;; $Revision: 1.179 $ $Date: 2004-02-17 17:01:15 $
diff --git a/fastlib/src/vespa/fastlib/testsuite/suite.h b/fastlib/src/vespa/fastlib/testsuite/suite.h
index ee8775518a2..43a655fab31 100644
--- a/fastlib/src/vespa/fastlib/testsuite/suite.h
+++ b/fastlib/src/vespa/fastlib/testsuite/suite.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**************************************************************************
* Author: Bård Kvalheim
*
diff --git a/fastlib/src/vespa/fastlib/testsuite/test.cpp b/fastlib/src/vespa/fastlib/testsuite/test.cpp
index a29e5053c98..18930b1bca2 100644
--- a/fastlib/src/vespa/fastlib/testsuite/test.cpp
+++ b/fastlib/src/vespa/fastlib/testsuite/test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "test.h"
diff --git a/fastlib/src/vespa/fastlib/testsuite/test.h b/fastlib/src/vespa/fastlib/testsuite/test.h
index 96f38c1577b..ed771da04ec 100644
--- a/fastlib/src/vespa/fastlib/testsuite/test.h
+++ b/fastlib/src/vespa/fastlib/testsuite/test.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**************************************************************************
* Author: Bård Kvalheim
*
diff --git a/fastlib/src/vespa/fastlib/testsuite/testproject.el b/fastlib/src/vespa/fastlib/testsuite/testproject.el
index 14cec6eb31c..983bd582a8a 100644
--- a/fastlib/src/vespa/fastlib/testsuite/testproject.el
+++ b/fastlib/src/vespa/fastlib/testsuite/testproject.el
@@ -1,4 +1,4 @@
-;; Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+;; Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
;; testproject.el
;; Local configurations for the cpptest Emacs unit-test
diff --git a/fastlib/src/vespa/fastlib/text/CMakeLists.txt b/fastlib/src/vespa/fastlib/text/CMakeLists.txt
index cfc5b0a6343..bcc3416331d 100644
--- a/fastlib/src/vespa/fastlib/text/CMakeLists.txt
+++ b/fastlib/src/vespa/fastlib/text/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(fastlib_text
SOURCES
unicodeutil.cpp
diff --git a/fastlib/src/vespa/fastlib/text/alphasort/AlphaSort1_0.dtd b/fastlib/src/vespa/fastlib/text/alphasort/AlphaSort1_0.dtd
index 8d1a3afb4fc..6c9a45bbbfc 100644
--- a/fastlib/src/vespa/fastlib/text/alphasort/AlphaSort1_0.dtd
+++ b/fastlib/src/vespa/fastlib/text/alphasort/AlphaSort1_0.dtd
@@ -1,5 +1,5 @@
<!-- (c) 2002 Fast Search & Transfer. All rights reserved. -->
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!-- Version 1.0 -->
<!ELEMENT sortOrder (sortValue*)>
diff --git a/fastlib/src/vespa/fastlib/text/alphasort/AlphaSortMasterFile.xml b/fastlib/src/vespa/fastlib/text/alphasort/AlphaSortMasterFile.xml
index 4a321e30dbb..6a9da8cc1cf 100644
--- a/fastlib/src/vespa/fastlib/text/alphasort/AlphaSortMasterFile.xml
+++ b/fastlib/src/vespa/fastlib/text/alphasort/AlphaSortMasterFile.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!DOCTYPE masterFile SYSTEM "SortMaster1_0.dtd">
<masterFile>
<sortValueWidth> 8 </sortValueWidth>
diff --git a/fastlib/src/vespa/fastlib/text/alphasort/Arabic.xml b/fastlib/src/vespa/fastlib/text/alphasort/Arabic.xml
index 493adab0a49..9789f519fd2 100644
--- a/fastlib/src/vespa/fastlib/text/alphasort/Arabic.xml
+++ b/fastlib/src/vespa/fastlib/text/alphasort/Arabic.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!DOCTYPE sortOrder SYSTEM "AlphaSort1_0.dtd">
<sortOrder>
<sortValue>
diff --git a/fastlib/src/vespa/fastlib/text/alphasort/Cyrillic.xml b/fastlib/src/vespa/fastlib/text/alphasort/Cyrillic.xml
index 973fdf25cb1..7332d1633ca 100644
--- a/fastlib/src/vespa/fastlib/text/alphasort/Cyrillic.xml
+++ b/fastlib/src/vespa/fastlib/text/alphasort/Cyrillic.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!DOCTYPE sortOrder SYSTEM "AlphaSort1_0.dtd">
<sortOrder>
<sortValue>
diff --git a/fastlib/src/vespa/fastlib/text/alphasort/Greek.xml b/fastlib/src/vespa/fastlib/text/alphasort/Greek.xml
index 9654db83344..662003aefc6 100644
--- a/fastlib/src/vespa/fastlib/text/alphasort/Greek.xml
+++ b/fastlib/src/vespa/fastlib/text/alphasort/Greek.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!DOCTYPE sortOrder SYSTEM "AlphaSort1_0.dtd">
<sortOrder>
<sortValue>
diff --git a/fastlib/src/vespa/fastlib/text/alphasort/Hangul.xml b/fastlib/src/vespa/fastlib/text/alphasort/Hangul.xml
index b8ed3bc5ec6..44ce855869e 100644
--- a/fastlib/src/vespa/fastlib/text/alphasort/Hangul.xml
+++ b/fastlib/src/vespa/fastlib/text/alphasort/Hangul.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!DOCTYPE sortOrder SYSTEM "AlphaSort1_0.dtd">
<sortOrder>
<sortValue>
diff --git a/fastlib/src/vespa/fastlib/text/alphasort/Hanzi-simplified-by-pinyin.xml b/fastlib/src/vespa/fastlib/text/alphasort/Hanzi-simplified-by-pinyin.xml
index a6ea4a4aca4..5f5486aaf4b 100644
--- a/fastlib/src/vespa/fastlib/text/alphasort/Hanzi-simplified-by-pinyin.xml
+++ b/fastlib/src/vespa/fastlib/text/alphasort/Hanzi-simplified-by-pinyin.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!DOCTYPE sortValue SYSTEM "AlphaSort1_0.dtd">
<sortOrder>
<sortValue><unicode><utf8>啊</utf8></unicode></sortValue>
diff --git a/fastlib/src/vespa/fastlib/text/alphasort/Hanzi-simplified-by-radical.xml b/fastlib/src/vespa/fastlib/text/alphasort/Hanzi-simplified-by-radical.xml
index 4badfc080d6..f6b2a47642d 100644
--- a/fastlib/src/vespa/fastlib/text/alphasort/Hanzi-simplified-by-radical.xml
+++ b/fastlib/src/vespa/fastlib/text/alphasort/Hanzi-simplified-by-radical.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!DOCTYPE sortValue SYSTEM "AlphaSort1_0.dtd">
<sortOrder>
<sortValue><unicode><utf8>兙</utf8></unicode></sortValue>
diff --git a/fastlib/src/vespa/fastlib/text/alphasort/Hanzi-traditional-by-pinyin.xml b/fastlib/src/vespa/fastlib/text/alphasort/Hanzi-traditional-by-pinyin.xml
index 9e5b35bad94..93fe57de8d2 100644
--- a/fastlib/src/vespa/fastlib/text/alphasort/Hanzi-traditional-by-pinyin.xml
+++ b/fastlib/src/vespa/fastlib/text/alphasort/Hanzi-traditional-by-pinyin.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!DOCTYPE sortValue SYSTEM "AlphaSort1_0.dtd">
<sortOrder>
<sortValue><unicode><utf8>ㄅ</utf8></unicode></sortValue>
diff --git a/fastlib/src/vespa/fastlib/text/alphasort/Hanzi-traditional-by-radical.xml b/fastlib/src/vespa/fastlib/text/alphasort/Hanzi-traditional-by-radical.xml
index 063f028fa52..28223fdcb2a 100644
--- a/fastlib/src/vespa/fastlib/text/alphasort/Hanzi-traditional-by-radical.xml
+++ b/fastlib/src/vespa/fastlib/text/alphasort/Hanzi-traditional-by-radical.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!-- DOCTYPE sortValue SYSTEM "AlphaSort1_0.dtd" -->
<sortOrder>
<sortValue><unicode><utf8>兙</utf8></unicode></sortValue>
diff --git a/fastlib/src/vespa/fastlib/text/alphasort/Hanzi-traditional-by-stroke.xml b/fastlib/src/vespa/fastlib/text/alphasort/Hanzi-traditional-by-stroke.xml
index 599212eba07..f9b4cceb89d 100644
--- a/fastlib/src/vespa/fastlib/text/alphasort/Hanzi-traditional-by-stroke.xml
+++ b/fastlib/src/vespa/fastlib/text/alphasort/Hanzi-traditional-by-stroke.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!DOCTYPE sortValue SYSTEM "AlphaSort1_0.dtd">
<sortOrder>
<sortValue><unicode><utf8>一</utf8></unicode></sortValue>
diff --git a/fastlib/src/vespa/fastlib/text/alphasort/Hebrew.xml b/fastlib/src/vespa/fastlib/text/alphasort/Hebrew.xml
index 913eaed8da0..320aa1eacd7 100644
--- a/fastlib/src/vespa/fastlib/text/alphasort/Hebrew.xml
+++ b/fastlib/src/vespa/fastlib/text/alphasort/Hebrew.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!DOCTYPE sortOrder SYSTEM "AlphaSort1_0.dtd">
<sortOrder>
<sortValue>
diff --git a/fastlib/src/vespa/fastlib/text/alphasort/Kana.xml b/fastlib/src/vespa/fastlib/text/alphasort/Kana.xml
index 2be11cc3b1f..64d67a97719 100644
--- a/fastlib/src/vespa/fastlib/text/alphasort/Kana.xml
+++ b/fastlib/src/vespa/fastlib/text/alphasort/Kana.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!DOCTYPE sortOrder SYSTEM "AlphaSort1_0.dtd">
<sortOrder>
<sortValue>
diff --git a/fastlib/src/vespa/fastlib/text/alphasort/Kanji-by-radical.xml b/fastlib/src/vespa/fastlib/text/alphasort/Kanji-by-radical.xml
index 70c1915da15..66b1fe4c447 100644
--- a/fastlib/src/vespa/fastlib/text/alphasort/Kanji-by-radical.xml
+++ b/fastlib/src/vespa/fastlib/text/alphasort/Kanji-by-radical.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!DOCTYPE sortOrder SYSTEM "AlphaSort1_0.dtd">
<--
diff --git a/fastlib/src/vespa/fastlib/text/alphasort/Latin.xml b/fastlib/src/vespa/fastlib/text/alphasort/Latin.xml
index eba9b9ac50c..4c0df6aa186 100644
--- a/fastlib/src/vespa/fastlib/text/alphasort/Latin.xml
+++ b/fastlib/src/vespa/fastlib/text/alphasort/Latin.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!DOCTYPE sortOrder SYSTEM "AlphaSort1_0.dtd">
<sortOrder>
<sortValue>
diff --git a/fastlib/src/vespa/fastlib/text/alphasort/Numbers.xml b/fastlib/src/vespa/fastlib/text/alphasort/Numbers.xml
index ced4668d9d7..e73b1fd2fd8 100644
--- a/fastlib/src/vespa/fastlib/text/alphasort/Numbers.xml
+++ b/fastlib/src/vespa/fastlib/text/alphasort/Numbers.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!DOCTYPE sortOrder SYSTEM "AlphaSort1_0.dtd">
<sortOrder>
<sortValue>
diff --git a/fastlib/src/vespa/fastlib/text/alphasort/SortMaster1_0.dtd b/fastlib/src/vespa/fastlib/text/alphasort/SortMaster1_0.dtd
index e85a8c705ea..9877d1bf8ca 100644
--- a/fastlib/src/vespa/fastlib/text/alphasort/SortMaster1_0.dtd
+++ b/fastlib/src/vespa/fastlib/text/alphasort/SortMaster1_0.dtd
@@ -1,5 +1,5 @@
<!-- (c) 2002 Fast Search & Transfer. All rights reserved. -->
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!-- Version 1.0 -->
<!ELEMENT masterFile (sortValueWidth, importFiles)>
diff --git a/fastlib/src/vespa/fastlib/text/alphasort/Space.xml b/fastlib/src/vespa/fastlib/text/alphasort/Space.xml
index 8e0c33e7b8f..bb6b08c001a 100644
--- a/fastlib/src/vespa/fastlib/text/alphasort/Space.xml
+++ b/fastlib/src/vespa/fastlib/text/alphasort/Space.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!DOCTYPE sortOrder SYSTEM "AlphaSort1_0.dtd">
<sortOrder>
<sortValue>
diff --git a/fastlib/src/vespa/fastlib/text/apps/CMakeLists.txt b/fastlib/src/vespa/fastlib/text/apps/CMakeLists.txt
index 2258f1373a6..fd1049fa689 100644
--- a/fastlib/src/vespa/fastlib/text/apps/CMakeLists.txt
+++ b/fastlib/src/vespa/fastlib/text/apps/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Ignored since these apps don't compile
diff --git a/fastlib/src/vespa/fastlib/text/apps/extcase.cpp b/fastlib/src/vespa/fastlib/text/apps/extcase.cpp
index 63ec841f84c..23486330f66 100644
--- a/fastlib/src/vespa/fastlib/text/apps/extcase.cpp
+++ b/fastlib/src/vespa/fastlib/text/apps/extcase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* Extract case information from Unicode property files.
* This program reads the UnicodeData-4.0.0.txt file and generates
diff --git a/fastlib/src/vespa/fastlib/text/apps/unicode_propertydump.cpp b/fastlib/src/vespa/fastlib/text/apps/unicode_propertydump.cpp
index 891edfabbff..551c86cff2e 100644
--- a/fastlib/src/vespa/fastlib/text/apps/unicode_propertydump.cpp
+++ b/fastlib/src/vespa/fastlib/text/apps/unicode_propertydump.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fastlib/text/unicodeutil.h>
#include <vespa/fastos/app.h>
diff --git a/fastlib/src/vespa/fastlib/text/apps/unicode_tolowerdump.cpp b/fastlib/src/vespa/fastlib/text/apps/unicode_tolowerdump.cpp
index 21d11390df4..f9a88e71008 100644
--- a/fastlib/src/vespa/fastlib/text/apps/unicode_tolowerdump.cpp
+++ b/fastlib/src/vespa/fastlib/text/apps/unicode_tolowerdump.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fastlib/text/unicodeutil.h>
#include <vespa/fastos/app.h>
diff --git a/fastlib/src/vespa/fastlib/text/latintokenizer.h b/fastlib/src/vespa/fastlib/text/latintokenizer.h
index 2f36886d6be..be5d98054d9 100644
--- a/fastlib/src/vespa/fastlib/text/latintokenizer.h
+++ b/fastlib/src/vespa/fastlib/text/latintokenizer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
*****************************************************************************
* @author Bård Kvalheim
diff --git a/fastlib/src/vespa/fastlib/text/normwordfolder.cpp b/fastlib/src/vespa/fastlib/text/normwordfolder.cpp
index ca1f260515f..a063332e3d1 100644
--- a/fastlib/src/vespa/fastlib/text/normwordfolder.cpp
+++ b/fastlib/src/vespa/fastlib/text/normwordfolder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fastlib/text/unicodeutil.h>
#include <vespa/fastlib/text/normwordfolder.h>
diff --git a/fastlib/src/vespa/fastlib/text/normwordfolder.h b/fastlib/src/vespa/fastlib/text/normwordfolder.h
index d8f8f1ed047..7136a8b3829 100644
--- a/fastlib/src/vespa/fastlib/text/normwordfolder.h
+++ b/fastlib/src/vespa/fastlib/text/normwordfolder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fastlib/src/vespa/fastlib/text/tests/CMakeLists.txt b/fastlib/src/vespa/fastlib/text/tests/CMakeLists.txt
index d5650edd1d5..bcb7be76aac 100644
--- a/fastlib/src/vespa/fastlib/text/tests/CMakeLists.txt
+++ b/fastlib/src/vespa/fastlib/text/tests/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fastlib_unicodeutiltest_app TEST
SOURCES
unicodeutiltest.cpp
diff --git a/fastlib/src/vespa/fastlib/text/tests/characterclasstest.cpp b/fastlib/src/vespa/fastlib/text/tests/characterclasstest.cpp
index e0d5b429177..4120e574233 100644
--- a/fastlib/src/vespa/fastlib/text/tests/characterclasstest.cpp
+++ b/fastlib/src/vespa/fastlib/text/tests/characterclasstest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "characterclasstest.h"
int character_class_test_app::Main()
diff --git a/fastlib/src/vespa/fastlib/text/tests/latintokenizertest.cpp b/fastlib/src/vespa/fastlib/text/tests/latintokenizertest.cpp
index ce7c72e1922..cc6f62a0149 100644
--- a/fastlib/src/vespa/fastlib/text/tests/latintokenizertest.cpp
+++ b/fastlib/src/vespa/fastlib/text/tests/latintokenizertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "latintokenizertest.h"
int LatinTokenizerTestApp::Main()
diff --git a/fastlib/src/vespa/fastlib/text/tests/latintokenizertest.h b/fastlib/src/vespa/fastlib/text/tests/latintokenizertest.h
index 1b2c7d1ed8f..8b8635db905 100644
--- a/fastlib/src/vespa/fastlib/text/tests/latintokenizertest.h
+++ b/fastlib/src/vespa/fastlib/text/tests/latintokenizertest.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/fastlib/testsuite/test.h>
diff --git a/fastlib/src/vespa/fastlib/text/tests/unicodeutiltest.cpp b/fastlib/src/vespa/fastlib/text/tests/unicodeutiltest.cpp
index 98a3831f39d..5398d742042 100644
--- a/fastlib/src/vespa/fastlib/text/tests/unicodeutiltest.cpp
+++ b/fastlib/src/vespa/fastlib/text/tests/unicodeutiltest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "unicodeutiltest.h"
int UnicodeUtilTestApp::Main()
diff --git a/fastlib/src/vespa/fastlib/text/tests/unicodeutiltest.h b/fastlib/src/vespa/fastlib/text/tests/unicodeutiltest.h
index dde37cdb4a6..13bfc5b11f8 100644
--- a/fastlib/src/vespa/fastlib/text/tests/unicodeutiltest.h
+++ b/fastlib/src/vespa/fastlib/text/tests/unicodeutiltest.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fastlib/testsuite/test.h>
#include <vespa/fastlib/text/unicodeutil.h>
#include <vespa/fastos/app.h>
diff --git a/fastlib/src/vespa/fastlib/text/tests/wordfolderstest.cpp b/fastlib/src/vespa/fastlib/text/tests/wordfolderstest.cpp
index bfb792d6e80..21d1e0129ba 100644
--- a/fastlib/src/vespa/fastlib/text/tests/wordfolderstest.cpp
+++ b/fastlib/src/vespa/fastlib/text/tests/wordfolderstest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "wordfolderstest.h"
int WordFoldersTestApp::Main()
diff --git a/fastlib/src/vespa/fastlib/text/tests/wordfolderstest.h b/fastlib/src/vespa/fastlib/text/tests/wordfolderstest.h
index eec9b2aec11..2ee97be1a00 100644
--- a/fastlib/src/vespa/fastlib/text/tests/wordfolderstest.h
+++ b/fastlib/src/vespa/fastlib/text/tests/wordfolderstest.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fastlib/testsuite/test.h>
#include <vespa/fastlib/text/normwordfolder.h>
#include <vespa/fastos/app.h>
diff --git a/fastlib/src/vespa/fastlib/text/unicodeutil-charprops.cpp b/fastlib/src/vespa/fastlib/text/unicodeutil-charprops.cpp
index 8aa8c6d5b19..ee59c5c84dd 100644
--- a/fastlib/src/vespa/fastlib/text/unicodeutil-charprops.cpp
+++ b/fastlib/src/vespa/fastlib/text/unicodeutil-charprops.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* This file is auto-generated by extprop.cpp
*
diff --git a/fastlib/src/vespa/fastlib/text/unicodeutil-lowercase.cpp b/fastlib/src/vespa/fastlib/text/unicodeutil-lowercase.cpp
index ae2bb4bcda1..def65d642cd 100644
--- a/fastlib/src/vespa/fastlib/text/unicodeutil-lowercase.cpp
+++ b/fastlib/src/vespa/fastlib/text/unicodeutil-lowercase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* This file is auto-generated by extcase.cpp
*/
diff --git a/fastlib/src/vespa/fastlib/text/unicodeutil.cpp b/fastlib/src/vespa/fastlib/text/unicodeutil.cpp
index 03ed25d30b7..54ccce9f8e8 100644
--- a/fastlib/src/vespa/fastlib/text/unicodeutil.cpp
+++ b/fastlib/src/vespa/fastlib/text/unicodeutil.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "unicodeutil.h"
#include <cstdlib>
diff --git a/fastlib/src/vespa/fastlib/text/unicodeutil.h b/fastlib/src/vespa/fastlib/text/unicodeutil.h
index 5606df4199d..d6ba0ae0e23 100644
--- a/fastlib/src/vespa/fastlib/text/unicodeutil.h
+++ b/fastlib/src/vespa/fastlib/text/unicodeutil.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Unicode utilities.
*/
diff --git a/fastlib/src/vespa/fastlib/text/wordfolder.cpp b/fastlib/src/vespa/fastlib/text/wordfolder.cpp
index 52b84658ec3..e0b1aba9356 100644
--- a/fastlib/src/vespa/fastlib/text/wordfolder.cpp
+++ b/fastlib/src/vespa/fastlib/text/wordfolder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "wordfolder.h"
diff --git a/fastlib/src/vespa/fastlib/text/wordfolder.h b/fastlib/src/vespa/fastlib/text/wordfolder.h
index d567b9e7c26..b0edd2d1385 100644
--- a/fastlib/src/vespa/fastlib/text/wordfolder.h
+++ b/fastlib/src/vespa/fastlib/text/wordfolder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/fastlib/text/unicodeutil.h>
diff --git a/fastlib/src/vespa/fastlib/util/CMakeLists.txt b/fastlib/src/vespa/fastlib/util/CMakeLists.txt
index 2cd7b7d7e64..56c7baabee2 100644
--- a/fastlib/src/vespa/fastlib/util/CMakeLists.txt
+++ b/fastlib/src/vespa/fastlib/util/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(fastlib_util
SOURCES
INSTALL lib64
diff --git a/fastlib/src/vespa/fastlib/util/testproject.el b/fastlib/src/vespa/fastlib/util/testproject.el
index 0c0546614f3..94bbe60394d 100644
--- a/fastlib/src/vespa/fastlib/util/testproject.el
+++ b/fastlib/src/vespa/fastlib/util/testproject.el
@@ -1,4 +1,4 @@
-;; Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+;; Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
;; testproject.el
;; Local configurations for the cpptest Emacs unit-test framework
diff --git a/fastlib/src/vespa/fastlib/util/tests/CMakeLists.txt b/fastlib/src/vespa/fastlib/util/tests/CMakeLists.txt
index 3254d9832d1..cf655b548e5 100644
--- a/fastlib/src/vespa/fastlib/util/tests/CMakeLists.txt
+++ b/fastlib/src/vespa/fastlib/util/tests/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fastlib_wildcard_match_test_app TEST
SOURCES
wildcard_match_test.cpp
diff --git a/fastlib/src/vespa/fastlib/util/tests/wildcard_match_test.cpp b/fastlib/src/vespa/fastlib/util/tests/wildcard_match_test.cpp
index e27ef72b978..a63a6943fc6 100644
--- a/fastlib/src/vespa/fastlib/util/tests/wildcard_match_test.cpp
+++ b/fastlib/src/vespa/fastlib/util/tests/wildcard_match_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <iostream>
#include "../wildcard_match.h"
diff --git a/fastlib/src/vespa/fastlib/util/wildcard_match.h b/fastlib/src/vespa/fastlib/util/wildcard_match.h
index ab0f369e052..2cde4364693 100644
--- a/fastlib/src/vespa/fastlib/util/wildcard_match.h
+++ b/fastlib/src/vespa/fastlib/util/wildcard_match.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace fast
diff --git a/fastlib/src/vespa/packages/CMakeLists.txt b/fastlib/src/vespa/packages/CMakeLists.txt
index 8dbf405eda9..f6a00c9ec06 100644
--- a/fastlib/src/vespa/packages/CMakeLists.txt
+++ b/fastlib/src/vespa/packages/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(fastlib_fast
SOURCES
INSTALL lib64
diff --git a/fastos/CMakeLists.txt b/fastos/CMakeLists.txt
index d831c8e3700..c17752e234c 100644
--- a/fastos/CMakeLists.txt
+++ b/fastos/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
LIBS
src/vespa/fastos
diff --git a/fastos/src/tests/CMakeLists.txt b/fastos/src/tests/CMakeLists.txt
index 8c0d255df32..dce59650973 100644
--- a/fastos/src/tests/CMakeLists.txt
+++ b/fastos/src/tests/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fastos_processtest_app TEST
SOURCES
processtest.cpp
diff --git a/fastos/src/tests/backtracetest.cpp b/fastos/src/tests/backtracetest.cpp
index 0af25966aa3..09160456b05 100644
--- a/fastos/src/tests/backtracetest.cpp
+++ b/fastos/src/tests/backtracetest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fastos/backtrace.h>
#include <cassert>
diff --git a/fastos/src/tests/coretest.cpp b/fastos/src/tests/coretest.cpp
index a53eaf9d2a4..01742791c58 100644
--- a/fastos/src/tests/coretest.cpp
+++ b/fastos/src/tests/coretest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
diff --git a/fastos/src/tests/coretest2.cpp b/fastos/src/tests/coretest2.cpp
index e11d334e65e..bd93623922b 100644
--- a/fastos/src/tests/coretest2.cpp
+++ b/fastos/src/tests/coretest2.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
diff --git a/fastos/src/tests/filetest.cpp b/fastos/src/tests/filetest.cpp
index 15f8ccb526b..09ed1ea33ae 100644
--- a/fastos/src/tests/filetest.cpp
+++ b/fastos/src/tests/filetest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tests.h"
#include <vespa/fastos/file.h>
diff --git a/fastos/src/tests/job.h b/fastos/src/tests/job.h
index 01f6dc108d0..15356270972 100644
--- a/fastos/src/tests/job.h
+++ b/fastos/src/tests/job.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fastos/src/tests/mazeserver.cpp b/fastos/src/tests/mazeserver.cpp
index d10d17ba599..b62e98645f2 100644
--- a/fastos/src/tests/mazeserver.cpp
+++ b/fastos/src/tests/mazeserver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#define DO_MAZE_SERVER 1
#include "sockettest.cpp"
diff --git a/fastos/src/tests/performancetest.cpp b/fastos/src/tests/performancetest.cpp
index 55174fcc4e3..f566979957a 100644
--- a/fastos/src/tests/performancetest.cpp
+++ b/fastos/src/tests/performancetest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <stdlib.h>
#include "tests.h"
diff --git a/fastos/src/tests/processtest.cpp b/fastos/src/tests/processtest.cpp
index 66e58df39b9..6b947523364 100644
--- a/fastos/src/tests/processtest.cpp
+++ b/fastos/src/tests/processtest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tests.h"
#include <vespa/fastos/process.h>
#include <thread>
diff --git a/fastos/src/tests/tests.h b/fastos/src/tests/tests.h
index c149c0ab428..e93081eaa53 100644
--- a/fastos/src/tests/tests.h
+++ b/fastos/src/tests/tests.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fastos/app.h>
#include <vespa/fastos/thread.h>
diff --git a/fastos/src/tests/thread_joinwait_test.cpp b/fastos/src/tests/thread_joinwait_test.cpp
index 6330a52b5f0..fc96b49f926 100644
--- a/fastos/src/tests/thread_joinwait_test.cpp
+++ b/fastos/src/tests/thread_joinwait_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tests.h"
#include "job.h"
diff --git a/fastos/src/tests/thread_stats_test.cpp b/fastos/src/tests/thread_stats_test.cpp
index 9dadda20a14..6559513f7ff 100644
--- a/fastos/src/tests/thread_stats_test.cpp
+++ b/fastos/src/tests/thread_stats_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tests.h"
#include "job.h"
diff --git a/fastos/src/tests/thread_test_base.hpp b/fastos/src/tests/thread_test_base.hpp
index 778ba29e8dd..49d37209b6a 100644
--- a/fastos/src/tests/thread_test_base.hpp
+++ b/fastos/src/tests/thread_test_base.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fastos/src/tests/threadtest.cpp b/fastos/src/tests/threadtest.cpp
index 7c792ca9033..de1e15de2b3 100644
--- a/fastos/src/tests/threadtest.cpp
+++ b/fastos/src/tests/threadtest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tests.h"
#include "job.h"
diff --git a/fastos/src/tests/typetest.cpp b/fastos/src/tests/typetest.cpp
index f9293e0bc7f..ee7f88026bc 100644
--- a/fastos/src/tests/typetest.cpp
+++ b/fastos/src/tests/typetest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tests.h"
#include <vespa/fastos/file.h>
diff --git a/fastos/src/vespa/fastos/CMakeLists.txt b/fastos/src/vespa/fastos/CMakeLists.txt
index f062432d967..466c4f775a4 100644
--- a/fastos/src/vespa/fastos/CMakeLists.txt
+++ b/fastos/src/vespa/fastos/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(fastos_objects OBJECT
SOURCES
app.cpp
diff --git a/fastos/src/vespa/fastos/app.cpp b/fastos/src/vespa/fastos/app.cpp
index 3f51a0fb3d1..0482cfea616 100644
--- a/fastos/src/vespa/fastos/app.cpp
+++ b/fastos/src/vespa/fastos/app.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
//************************************************************************
/**
* Implementation of FastOS_ApplicationInterface methods.
diff --git a/fastos/src/vespa/fastos/app.h b/fastos/src/vespa/fastos/app.h
index 4c07e680755..8d6a0b5ecbb 100644
--- a/fastos/src/vespa/fastos/app.h
+++ b/fastos/src/vespa/fastos/app.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
//************************************************************************
/**
* @file
diff --git a/fastos/src/vespa/fastos/backtrace.c b/fastos/src/vespa/fastos/backtrace.c
index 9b720e25961..786fdea8f01 100644
--- a/fastos/src/vespa/fastos/backtrace.c
+++ b/fastos/src/vespa/fastos/backtrace.c
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "backtrace.h"
#if defined(__i386__) || defined(__clang__) || defined(__aarch64__)
diff --git a/fastos/src/vespa/fastos/backtrace.h b/fastos/src/vespa/fastos/backtrace.h
index 3700319162e..3bd18111b5d 100644
--- a/fastos/src/vespa/fastos/backtrace.h
+++ b/fastos/src/vespa/fastos/backtrace.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#ifdef __cplusplus
diff --git a/fastos/src/vespa/fastos/dynamiclibrary.h b/fastos/src/vespa/fastos/dynamiclibrary.h
index 15cc28fa130..6762ad4ac76 100644
--- a/fastos/src/vespa/fastos/dynamiclibrary.h
+++ b/fastos/src/vespa/fastos/dynamiclibrary.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/****************************************************************-*-C++-*-
* @file
* Class definitions for FastOS_DynamicLibrary.
diff --git a/fastos/src/vespa/fastos/file.cpp b/fastos/src/vespa/fastos/file.cpp
index 9ff2cad0381..0764c9b1b66 100644
--- a/fastos/src/vespa/fastos/file.cpp
+++ b/fastos/src/vespa/fastos/file.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
//************************************************************************
/**
* Implementation of FastOS_FileInterface methods.
diff --git a/fastos/src/vespa/fastos/file.h b/fastos/src/vespa/fastos/file.h
index c987a9715b8..40b33e49b35 100644
--- a/fastos/src/vespa/fastos/file.h
+++ b/fastos/src/vespa/fastos/file.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
//************************************************************************
/**
* @file
diff --git a/fastos/src/vespa/fastos/file_rw_ops.cpp b/fastos/src/vespa/fastos/file_rw_ops.cpp
index 7285178c19b..79fe95b21f2 100644
--- a/fastos/src/vespa/fastos/file_rw_ops.cpp
+++ b/fastos/src/vespa/fastos/file_rw_ops.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "file_rw_ops.h"
#include <unistd.h>
diff --git a/fastos/src/vespa/fastos/file_rw_ops.h b/fastos/src/vespa/fastos/file_rw_ops.h
index 169b60eed45..4f7aa6f082f 100644
--- a/fastos/src/vespa/fastos/file_rw_ops.h
+++ b/fastos/src/vespa/fastos/file_rw_ops.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fastos/src/vespa/fastos/linux_file.cpp b/fastos/src/vespa/fastos/linux_file.cpp
index b841d25af1f..3a59b862a52 100644
--- a/fastos/src/vespa/fastos/linux_file.cpp
+++ b/fastos/src/vespa/fastos/linux_file.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
******************************************************************************
* @author Oivind H. Danielsen
diff --git a/fastos/src/vespa/fastos/linux_file.h b/fastos/src/vespa/fastos/linux_file.h
index 06f54de6870..7a8fc6245bb 100644
--- a/fastos/src/vespa/fastos/linux_file.h
+++ b/fastos/src/vespa/fastos/linux_file.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
******************************************************************************
* @author Oivind H. Danielsen
diff --git a/fastos/src/vespa/fastos/process.cpp b/fastos/src/vespa/fastos/process.cpp
index d005a73e9cd..29c53fe9326 100644
--- a/fastos/src/vespa/fastos/process.cpp
+++ b/fastos/src/vespa/fastos/process.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "process.h"
#include <cstring>
diff --git a/fastos/src/vespa/fastos/process.h b/fastos/src/vespa/fastos/process.h
index b564b9d12a9..99f045d2f56 100644
--- a/fastos/src/vespa/fastos/process.h
+++ b/fastos/src/vespa/fastos/process.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
//************************************************************************
/**
* @file
diff --git a/fastos/src/vespa/fastos/ringbuffer.h b/fastos/src/vespa/fastos/ringbuffer.h
index 89b1bb84c9c..e442faa1921 100644
--- a/fastos/src/vespa/fastos/ringbuffer.h
+++ b/fastos/src/vespa/fastos/ringbuffer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
struct FastOS_RingBufferData
diff --git a/fastos/src/vespa/fastos/thread.cpp b/fastos/src/vespa/fastos/thread.cpp
index 3e2f2674d97..7695ce3342e 100644
--- a/fastos/src/vespa/fastos/thread.cpp
+++ b/fastos/src/vespa/fastos/thread.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
//************************************************************************
/**
* Implementation of FastOS_ThreadPool and FastOS_Thread methods.
diff --git a/fastos/src/vespa/fastos/thread.h b/fastos/src/vespa/fastos/thread.h
index 257acbc92d3..0f4cc4c09f7 100644
--- a/fastos/src/vespa/fastos/thread.h
+++ b/fastos/src/vespa/fastos/thread.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
//************************************************************************
/**
* @file
diff --git a/fastos/src/vespa/fastos/types.h b/fastos/src/vespa/fastos/types.h
index c474558cdcc..a0806204e66 100644
--- a/fastos/src/vespa/fastos/types.h
+++ b/fastos/src/vespa/fastos/types.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fastos/src/vespa/fastos/unix_app.cpp b/fastos/src/vespa/fastos/unix_app.cpp
index 6129417cdb3..baf7960dc1d 100644
--- a/fastos/src/vespa/fastos/unix_app.cpp
+++ b/fastos/src/vespa/fastos/unix_app.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
******************************************************************************
* @author Oivind H. Danielsen
@@ -75,10 +75,6 @@ bool FastOS_UNIX_Application::PreThreadInit ()
if (useProcessStarter()) {
_processStarter = new FastOS_UNIX_ProcessStarter(this);
- if (!_processStarter->Start()) {
- rc = false;
- fprintf(stderr, "could not start FastOS_UNIX_ProcessStarter\n");
- }
}
} else {
rc = false;
@@ -95,32 +91,6 @@ bool FastOS_UNIX_Application::Init ()
{
int ipcDescriptor = -1;
- char *env = getenv("FASTOS_IPC_PARENT");
- if(env != nullptr)
- {
- int commaCount=0;
- int notDigitCount=0;
- char *p = env;
- while(*p != '\0')
- {
- if(*p == ',')
- commaCount++;
- else if((*p < '0') || (*p > '9'))
- notDigitCount++;
- p++;
- }
-
- if((commaCount == 2) && (notDigitCount == 0))
- {
- int ppid, gppid, descriptor;
- sscanf(env, "%d,%d,%d", &ppid, &gppid, &descriptor);
-
- if(ppid == getppid() && (descriptor != -1))
- {
- ipcDescriptor = descriptor;
- }
- }
- }
if (useIPCHelper()) {
_ipcHelper = new FastOS_UNIX_IPCHelper(this, ipcDescriptor);
GetThreadPool()->NewThread(_ipcHelper);
@@ -143,7 +113,6 @@ void FastOS_UNIX_Application::Cleanup ()
if (_processListMutex) {
guard = getProcessGuard();
}
- _processStarter->Stop();
}
delete _processStarter;
_processStarter = nullptr;
diff --git a/fastos/src/vespa/fastos/unix_app.h b/fastos/src/vespa/fastos/unix_app.h
index 0693a3d06cc..0c51b268299 100644
--- a/fastos/src/vespa/fastos/unix_app.h
+++ b/fastos/src/vespa/fastos/unix_app.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
//************************************************************************
/**
* Class definitions for FastOS_UNIX_Application.
diff --git a/fastos/src/vespa/fastos/unix_dynamiclibrary.cpp b/fastos/src/vespa/fastos/unix_dynamiclibrary.cpp
index 16533445757..68e00010211 100644
--- a/fastos/src/vespa/fastos/unix_dynamiclibrary.cpp
+++ b/fastos/src/vespa/fastos/unix_dynamiclibrary.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fastos/dynamiclibrary.h>
#include <vespa/fastos/file.h>
diff --git a/fastos/src/vespa/fastos/unix_dynamiclibrary.h b/fastos/src/vespa/fastos/unix_dynamiclibrary.h
index 1c891ee5b6d..4d52a68f093 100644
--- a/fastos/src/vespa/fastos/unix_dynamiclibrary.h
+++ b/fastos/src/vespa/fastos/unix_dynamiclibrary.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
*************************************************************-*C++-*-
* @author Eyvind Bernhardsen
diff --git a/fastos/src/vespa/fastos/unix_file.cpp b/fastos/src/vespa/fastos/unix_file.cpp
index 98480d0b217..2ef8c2f55ff 100644
--- a/fastos/src/vespa/fastos/unix_file.cpp
+++ b/fastos/src/vespa/fastos/unix_file.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
******************************************************************************
* @author Oivind H. Danielsen
diff --git a/fastos/src/vespa/fastos/unix_file.h b/fastos/src/vespa/fastos/unix_file.h
index 3c3ffedc171..c0a908a5948 100644
--- a/fastos/src/vespa/fastos/unix_file.h
+++ b/fastos/src/vespa/fastos/unix_file.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
******************************************************************************
* @author Oivind H. Danielsen
diff --git a/fastos/src/vespa/fastos/unix_ipc.cpp b/fastos/src/vespa/fastos/unix_ipc.cpp
index 09f8e6162f7..b75d07751fa 100644
--- a/fastos/src/vespa/fastos/unix_ipc.cpp
+++ b/fastos/src/vespa/fastos/unix_ipc.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "unix_ipc.h"
#include "ringbuffer.h"
#include <cassert>
@@ -10,13 +10,11 @@
#include <future>
FastOS_UNIX_IPCHelper::
-FastOS_UNIX_IPCHelper (FastOS_ApplicationInterface *app, int descriptor)
+FastOS_UNIX_IPCHelper (FastOS_ApplicationInterface *app, int)
: _lock(),
_exitFlag(false),
- _app(app),
- _appParentIPCDescriptor()
+ _app(app)
{
- _appParentIPCDescriptor._fd = descriptor;
_wakeupPipe[0] = -1;
_wakeupPipe[1] = -1;
@@ -27,13 +25,6 @@ FastOS_UNIX_IPCHelper (FastOS_ApplicationInterface *app, int descriptor)
SetBlocking(_wakeupPipe[0], false);
SetBlocking(_wakeupPipe[1], true);
}
-
- if(_appParentIPCDescriptor._fd != -1) {
- _appParentIPCDescriptor._readBuffer.reset(new FastOS_RingBuffer(16384));
- _appParentIPCDescriptor._writeBuffer.reset(new FastOS_RingBuffer(16384));
-
- SetBlocking(_appParentIPCDescriptor._fd, false);
- }
}
FastOS_UNIX_IPCHelper::~FastOS_UNIX_IPCHelper ()
@@ -44,11 +35,6 @@ FastOS_UNIX_IPCHelper::~FastOS_UNIX_IPCHelper ()
if(_wakeupPipe[1] != -1) {
close(_wakeupPipe[1]);
}
- if(_appParentIPCDescriptor._fd != -1) {
- close(_appParentIPCDescriptor._fd);
- }
- _appParentIPCDescriptor._readBuffer.reset();
- _appParentIPCDescriptor._writeBuffer.reset();
}
@@ -172,16 +158,6 @@ PerformAsyncIO()
}
}
-void FastOS_UNIX_IPCHelper::
-PerformAsyncIPCIO()
-{
- FastOS_UNIX_Process::DescriptorHandle &desc = _appParentIPCDescriptor;
- if (desc._canRead)
- (void) DoRead(desc);
- if (desc._canWrite)
- (void) DoWrite(desc);
-}
-
void FastOS_UNIX_IPCHelper::
BuildPollChecks()
@@ -201,15 +177,6 @@ BuildPollChecks()
BuildPollCheck(true, desc._fd, desc._readBuffer.get(), &desc._wantRead);
}
}
-
- if(_appParentIPCDescriptor._writeBuffer.get() != nullptr)
- BuildPollCheck(false, _appParentIPCDescriptor._fd,
- _appParentIPCDescriptor._writeBuffer.get(),
- &_appParentIPCDescriptor._wantWrite);
- if(_appParentIPCDescriptor._readBuffer.get() != nullptr)
- BuildPollCheck(true, _appParentIPCDescriptor._fd,
- _appParentIPCDescriptor._readBuffer.get(),
- &_appParentIPCDescriptor._wantRead);
}
@@ -297,30 +264,6 @@ BuildPollArray(pollfd **fds, unsigned int *nfds, unsigned int *allocnfds)
}
}
- FastOS_UNIX_Process::DescriptorHandle &desc2 = _appParentIPCDescriptor;
-
- if (desc2._fd >= 0 &&
- (desc2._wantRead || desc2._wantWrite)) {
- if (rfds >= rfdsEnd) {
- rfds = ResizePollArray(fds,
- allocnfds);
- rfdsEnd = *fds + *allocnfds;
- }
- rfds->fd = desc2._fd;
- rfds->events = 0;
- if (desc2._wantRead)
- rfds->events |= POLLRDNORM;
- if (desc2._wantWrite)
- rfds->events |= POLLWRNORM;
- rfds->revents = 0;
- desc2._pollIdx = pollIdx;
- rfds++;
- pollIdx++;
- } else {
- desc2._pollIdx = -1;
- desc2._canRead = false;
- desc2._canWrite = false;
- }
*nfds = rfds - *fds;
}
@@ -363,25 +306,6 @@ SavePollArray(pollfd *fds, unsigned int nfds)
}
}
- FastOS_UNIX_Process::DescriptorHandle &desc2 = _appParentIPCDescriptor;
-
- if (desc2._fd >= 0 &&
- static_cast<unsigned int>(desc2._pollIdx) < nfds) {
- int revents = fds[desc2._pollIdx].revents;
-
- if ((revents &
- (POLLIN | POLLRDNORM | POLLERR | POLLHUP | POLLNVAL)) != 0)
- desc2._canRead = true;
- else
- desc2._canRead = false;
- if ((revents &
- (POLLOUT | POLLWRNORM | POLLWRBAND | POLLERR | POLLHUP |
- POLLNVAL)) != 0)
- desc2._canWrite = true;
- else
- desc2._canWrite = false;
- }
-
if ((fds[0].revents & (POLLIN | POLLERR | POLLHUP)) != 0)
return true;
else
@@ -498,20 +422,7 @@ Run(FastOS_ThreadInterface *thisThread, void *arg)
}
if (exitFlag)
{
- if (_appParentIPCDescriptor._fd != -1)
- {
- if(_appParentIPCDescriptor._wantWrite)
- {
- // printf("still data to write\n");
- }
- else
- {
- // printf("no more data to write, exitting\n");
- break;
- }
- }
- else
- break;
+ break;
}
for (;;)
@@ -550,7 +461,6 @@ Run(FastOS_ThreadInterface *thisThread, void *arg)
// Do actual IO (based on file descriptor sets and buffer contents)
PerformAsyncIO();
}
- PerformAsyncIPCIO();
// Did someone want to wake us up from the poll() call?
if (woken) {
diff --git a/fastos/src/vespa/fastos/unix_ipc.h b/fastos/src/vespa/fastos/unix_ipc.h
index 62272856295..13e92411011 100644
--- a/fastos/src/vespa/fastos/unix_ipc.h
+++ b/fastos/src/vespa/fastos/unix_ipc.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "app.h"
#include "process.h"
#include "thread.h"
@@ -17,8 +17,6 @@ protected:
volatile bool _exitFlag;
FastOS_ApplicationInterface *_app;
- FastOS_UNIX_Process::DescriptorHandle _appParentIPCDescriptor;
-
int _wakeupPipe[2];
bool DoWrite (FastOS_UNIX_Process::DescriptorHandle &desc);
@@ -28,7 +26,6 @@ protected:
void BuildPollArray(pollfd **fds, unsigned int *nfds, unsigned int *allocnfds);
bool SavePollArray(pollfd *fds, unsigned int nfds);
void PerformAsyncIO ();
- void PerformAsyncIPCIO ();
void BuildPollChecks();
void PipeData (FastOS_UNIX_Process *process, FastOS_UNIX_Process::DescriptorType type);
void RemoveClosingProcesses();
diff --git a/fastos/src/vespa/fastos/unix_process.cpp b/fastos/src/vespa/fastos/unix_process.cpp
index 8db3c714822..7536ac74477 100644
--- a/fastos/src/vespa/fastos/unix_process.cpp
+++ b/fastos/src/vespa/fastos/unix_process.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "process.h"
#include "unix_ipc.h"
#include "ringbuffer.h"
@@ -14,10 +14,6 @@
#endif
#include <thread>
-#ifndef AF_LOCAL
-#define AF_LOCAL AF_UNIX
-#endif
-
extern "C"
{
@@ -25,22 +21,6 @@ extern char **environ;
}
-#ifndef FASTOS_HAVE_ACCRIGHTSLEN
-
-#ifndef ALIGN
-#define ALIGN(x) (((x) + sizeof(int) - 1) & ~(sizeof(int) - 1))
-#endif
-
-#ifndef CMSG_SPACE
-#define CMSG_SPACE(l) (ALIGN(sizeof(struct cmsghdr)) + ALIGN(l))
-#endif
-
-#ifndef CMSG_LEN
-#define CMSG_LEN(l)(ALIGN(sizeof(struct cmsghdr)) + (l))
-#endif
-
-#endif
-
using namespace std::chrono_literals;
using namespace std::chrono;
@@ -90,7 +70,6 @@ private:
int _stdinDes[2];
int _stdoutDes[2];
int _stderrDes[2];
- int _ipcSockPair[2];
int _handshakeDes[2];
std::string _runDir;
std::string _stdoutRedirName;
@@ -104,15 +83,10 @@ private:
public:
void SetRunDir(const char * runDir) { _runDir = runDir; }
- int GetIPCDescriptor() const { return _ipcSockPair[0]; }
+
int GetStdinDescriptor() const { return _stdinDes[1]; }
int GetStdoutDescriptor() const { return _stdoutDes[0]; }
int GetStderrDescriptor() const { return _stderrDes[0]; }
- int HandoverIPCDescriptor() {
- int ret = _ipcSockPair[0];
- _ipcSockPair[0] = -1;
- return ret;
- }
int HandoverStdinDescriptor() {
int ret = _stdinDes[1];
@@ -132,7 +106,6 @@ public:
return ret;
}
- void CloseIPCDescriptor();
void CloseStdinDescriptor();
void CloseStdoutDescriptor();
void CloseStderrDescriptor();
@@ -228,21 +201,12 @@ FastOS_UNIX_RealProcess::CloseDescriptors()
CloseAndResetDescriptor(&_stdoutDes[1]);
CloseAndResetDescriptor(&_stderrDes[0]);
CloseAndResetDescriptor(&_stderrDes[1]);
- CloseAndResetDescriptor(&_ipcSockPair[0]);
- CloseAndResetDescriptor(&_ipcSockPair[1]);
CloseAndResetDescriptor(&_handshakeDes[0]);
CloseAndResetDescriptor(&_handshakeDes[1]);
}
void
-FastOS_UNIX_RealProcess::CloseIPCDescriptor()
-{
- CloseAndResetDescriptor(&_ipcSockPair[0]);
-}
-
-
-void
FastOS_UNIX_RealProcess::CloseStdinDescriptor()
{
CloseAndResetDescriptor(&_stdinDes[1]);
@@ -279,7 +243,6 @@ FastOS_UNIX_RealProcess::FastOS_UNIX_RealProcess(int streamMask)
_stdinDes[0] = _stdinDes[1] = -1;
_stdoutDes[0] = _stdoutDes[1] = -1;
_stderrDes[0] = _stderrDes[1] = -1;
- _ipcSockPair[0] = _ipcSockPair[1] = -1;
_handshakeDes[0] = _handshakeDes[1] = -1;
}
@@ -467,15 +430,6 @@ ForkAndExec(const char *command,
FastOS_UNIX_ProcessStarter *processStarter)
{
bool rc = false;
-
- pid_t starterPid = getpid();
- pid_t starterPPid = getppid();
-
- sprintf(environmentVariables[0], "%s=%d,%d,%d",
- "FASTOS_IPC_PARENT",
- int(starterPid), int(starterPPid), _ipcSockPair[1]);
-
-
int numArguments = 0;
char **execArgs = nullptr;
@@ -508,7 +462,6 @@ ForkAndExec(const char *command,
processStarter->CloseProxyDescs(IsStdinPiped() ? _stdinDes[0] : -1,
IsStdoutPiped() ? _stdoutDes[1] : -1,
IsStderrPiped() ? _stderrDes[1] : -1,
- _ipcSockPair[1],
_handshakeDes[0],
_handshakeDes[1]);
}
@@ -555,8 +508,7 @@ ForkAndExec(const char *command,
// printf("fdlimit = %d\n", fdlimit);
for(int fd = STDERR_FILENO + 1; fd < fdlimit; fd++)
{
- if (fd != _ipcSockPair[1] &&
- fd != _handshakeDes[1])
+ if (fd != _handshakeDes[1])
CloseDescriptor(fd);
}
} else {
@@ -625,8 +577,6 @@ ForkAndExec(const char *command,
CloseAndResetDescriptor(&_stderrDes[1]);
}
- CloseAndResetDescriptor(&_ipcSockPair[1]);
-
CloseAndResetDescriptor(&_handshakeDes[1]);
int flags = fcntl(_handshakeDes[0], F_GETFL, 0);
@@ -772,8 +722,6 @@ FastOS_UNIX_RealProcess::Setup()
if (IsStdinPiped()) rc = rc && (pipe(_stdinDes) == 0);
if (IsStdoutPiped()) rc = rc && (pipe(_stdoutDes) == 0);
if (IsStderrPiped()) rc = rc && (pipe(_stderrDes) == 0);
- if (!IsUsingShell()) rc = rc && (socketpair(AF_LOCAL, SOCK_STREAM,
- 0, _ipcSockPair) == 0);
rc = rc && (pipe(_handshakeDes) == 0);
return rc;
}
@@ -796,9 +744,6 @@ FastOS_UNIX_Process (const char *cmdLine, bool pipeStdin,
_killed(false),
_closing(nullptr)
{
- _descriptor[TYPE_IPC]._readBuffer.reset(new FastOS_RingBuffer(bufferSize));
- _descriptor[TYPE_IPC]._writeBuffer.reset(new FastOS_RingBuffer(bufferSize));
-
if (stdoutListener != nullptr)
_descriptor[TYPE_STDOUT]._readBuffer.reset(new FastOS_RingBuffer(bufferSize));
if (stderrListener != nullptr)
@@ -816,8 +761,7 @@ FastOS_UNIX_Process::~FastOS_UNIX_Process ()
{
Kill(); // Kill if not dead or detached.
- if ((GetDescriptorHandle(TYPE_IPC)._fd != -1) ||
- (GetDescriptorHandle(TYPE_STDOUT)._fd != -1) ||
+ if ((GetDescriptorHandle(TYPE_STDOUT)._fd != -1) ||
(GetDescriptorHandle(TYPE_STDERR)._fd != -1))
{
// Let the IPC helper flush write queues and remove us from the
@@ -932,79 +876,6 @@ int FastOS_UNIX_Process::BuildStreamMask (bool useShell)
return streamMask;
}
-void FastOS_UNIX_ProcessStarter::
-ReadBytes(int fd, void *buffer, int bytes)
-{
-
- uint8_t *writePtr = static_cast<uint8_t *>(buffer);
- int remaining = bytes;
-
- while(remaining > 0)
- {
- int bytesRead;
- do
- {
- bytesRead = read(fd, writePtr, remaining);
- } while(bytesRead < 0 && (errno == EINTR));
-
- if (bytesRead < 0) {
- //perror("FATAL: FastOS_UNIX_ProcessStarter read");
- std::_Exit(1);
- }
- else if(bytesRead == 0)
- {
- //fprintf(stderr, "FATAL: FastOS_UNIX_RealProcessStart read 0\n");
- std::_Exit(1);
- }
-
- writePtr += bytesRead;
- remaining -= bytesRead;
- }
-}
-
-void FastOS_UNIX_ProcessStarter::
-WriteBytes(int fd, const void *buffer, int bytes, bool ignoreFailure)
-{
- const uint8_t *readPtr = static_cast<const uint8_t *>(buffer);
- int remaining = bytes;
-
- while(remaining > 0)
- {
- int bytesWritten;
- do {
- bytesWritten = write(fd, readPtr, remaining);
- } while (bytesWritten < 0 && (errno == EINTR));
-
- if (bytesWritten < 0) {
- if (ignoreFailure)
- return;
- //perror("FATAL: FastOS_UNIX_ProcessStarter write");
- std::_Exit(1);
- } else if (bytesWritten == 0) {
- if (ignoreFailure)
- return;
- //fprintf(stderr, "FATAL: FastOS_UNIX_RealProcessStart write 0\n");
- std::_Exit(1);
- }
-
- readPtr += bytesWritten;
- remaining -= bytesWritten;
- }
-}
-
-int FastOS_UNIX_ProcessStarter::ReadInt (int fd)
-{
- int intStorage;
- ReadBytes(fd, &intStorage, sizeof(int));
- return intStorage;
-}
-
-void FastOS_UNIX_ProcessStarter::WriteInt (int fd, int integer,
- bool ignoreFailure)
-{
- int intStorage = integer;
- WriteBytes(fd, &intStorage, sizeof(int), ignoreFailure);
-}
void FastOS_UNIX_ProcessStarter::
AddChildProcess (FastOS_UNIX_RealProcess *node)
@@ -1034,393 +905,30 @@ RemoveChildProcess (FastOS_UNIX_RealProcess *node)
node->_prev = nullptr;
}
-bool FastOS_UNIX_ProcessStarter::SendFileDescriptor (int fd)
-{
- // printf("SENDFILEDESCRIPTOR\n");
- bool rc = false;
-
- struct msghdr msg;
- struct iovec iov;
-
- memset(&msg, 0, sizeof(msg));
- memset(&iov, 0, sizeof(iov));
-
-#ifndef FASTOS_HAVE_ACCRIGHTSLEN
- union
- {
- struct cmsghdr cm;
- char control[CMSG_SPACE(sizeof(int))];
- } control_un;
- struct cmsghdr *cmptr;
-
- memset(&control_un, 0, sizeof(control_un));
- msg.msg_control = control_un.control;
- msg.msg_controllen = sizeof(control_un.control);
-
- cmptr = CMSG_FIRSTHDR(&msg);
- cmptr->cmsg_len = CMSG_LEN(sizeof(int));
- cmptr->cmsg_level = SOL_SOCKET;
- cmptr->cmsg_type = SCM_RIGHTS;
- memcpy(CMSG_DATA(cmptr), &fd, sizeof(int));
-#else
- msg.msg_accrights = static_cast<caddr_t>(&fd);
- msg.msg_accrightslen = sizeof(int);
-#endif
-
- msg.msg_name = nullptr;
- msg.msg_namelen = 0;
-
- char dummyData = '\0';
- iov.iov_base = &dummyData;
- iov.iov_len = 1;
- msg.msg_iov = &iov;
- msg.msg_iovlen = 1;
-
- int sendmsgrc = sendmsg(_starterSocketDescr, &msg, 0);
- // printf("sendmsg = %d\n", sendmsgrc);
- if (sendmsgrc < 0)
- perror("sendmsg");
- else
- rc = true;
-
- return rc;
-}
-
-void FastOS_UNIX_ProcessStarter::StarterDoWait ()
-{
- // printf("WAIT FOR PROCESSES\n");
-
- pid_t pid;
- int status;
-
- pid_t deadProcesses[MAX_PROCESSES_PER_WAIT];
- int returnCodes[MAX_PROCESSES_PER_WAIT];
- int numDeadProcesses = 0;
-
- while((pid = waitpid(-1, &status, WNOHANG)) > 0)
- {
- // printf("Child %d has died\n", pid);
- bool foundProcess = false;
-
- FastOS_UNIX_RealProcess *process, *next;
- for(process = FastOS_UNIX_ProcessStarter::_processList;
- process != nullptr; process = next)
- {
-
- // Need to do this here since we are deleting entries
- next = process->_next;
-
- if (process->GetProcessId() == pid) {
- foundProcess = true;
- RemoveChildProcess(process);
- delete process;
- break;
- }
- }
-
- if (!foundProcess && !_hasDetachedProcess)
- printf("*** Strange... We don't know about pid %d\n", int(pid));
-
- if (!foundProcess)
- continue; /* Don't report death of detached processes */
-
- deadProcesses[numDeadProcesses] = pid;
-
- returnCodes[numDeadProcesses] = normalizedWaitStatus(status);
-
- numDeadProcesses++;
- if (numDeadProcesses == MAX_PROCESSES_PER_WAIT)
- break;
- }
-
- WriteBytes(_starterSocket, &numDeadProcesses, sizeof(int));
- for(int i=0; i<numDeadProcesses; i++)
- {
- WriteBytes(_starterSocket, &deadProcesses[i], sizeof(pid_t));
- WriteBytes(_starterSocket, &returnCodes[i], sizeof(int));
- }
-}
-
-void FastOS_UNIX_ProcessStarter::StarterDoCreateProcess ()
-{
- int stringLength = ReadInt(_starterSocket);
- char cmdLine[stringLength];
-
- ReadBytes(_starterSocket, cmdLine, stringLength);
- int streamMask = ReadInt(_starterSocket);
- char **environmentVariables = ReceiveEnvironmentVariables();
-
- FastOS_UNIX_RealProcess *process = new FastOS_UNIX_RealProcess(streamMask);
-
- bool rc=false;
-
- int runDirLength = ReadInt(_starterSocket);
-
- if (runDirLength > 0) {
- char runDir[runDirLength];
- ReadBytes(_starterSocket, runDir, runDirLength);
- process->SetRunDir(runDir);
- }
-
- int stdoutRedirNameLen = ReadInt(_starterSocket);
- if (stdoutRedirNameLen > 0) {
- char stdoutRedirName[stdoutRedirNameLen];
- ReadBytes(_starterSocket, stdoutRedirName, stdoutRedirNameLen);
- process->SetStdoutRedirName(stdoutRedirName);
- }
-
- int stderrRedirNameLen = ReadInt(_starterSocket);
- if (stderrRedirNameLen > 0) {
- char stderrRedirName[stderrRedirNameLen];
- ReadBytes(_starterSocket, stderrRedirName, stderrRedirNameLen);
- process->SetStderrRedirName(stderrRedirName);
- }
-
- if (process->Setup()) {
- WriteInt(_starterSocket, CODE_SUCCESS);
-
- // Send IPC descriptor if the shell is not used
- if (process->IsUsingShell())
- rc = true;
- else {
- if (SendFileDescriptor(process->GetIPCDescriptor())) {
- process->CloseIPCDescriptor();
- WriteInt(_starterSocket, CODE_SUCCESS);
- if (ReadInt(_starterSocket) == CODE_SUCCESS)
- rc = true;
- } else {
- WriteInt(_starterSocket, CODE_FAILURE);
- }
- }
-
- if (rc) {
- rc = false;
-
- if (!process->IsStdinPiped()) {
- rc = true;
- } else {
- if (SendFileDescriptor(process->GetStdinDescriptor())) {
- process->CloseStdinDescriptor();
- WriteInt(_starterSocket, CODE_SUCCESS);
- if (ReadInt(_starterSocket) == CODE_SUCCESS)
- rc = true;
- } else {
- WriteInt(_starterSocket, CODE_FAILURE);
- }
- }
- }
-
- if (rc) {
- rc = false;
-
- if (!process->IsStdoutPiped()) {
- rc = true;
- } else {
- if (SendFileDescriptor(process->GetStdoutDescriptor())) {
- process->CloseStdoutDescriptor();
- WriteInt(_starterSocket, CODE_SUCCESS);
- if (ReadInt(_starterSocket) == CODE_SUCCESS) {
- rc = true;
- }
- } else {
- WriteInt(_starterSocket, CODE_FAILURE);
- }
- }
- }
-
- if (rc) {
- rc = false;
-
- if (!process->IsStderrPiped()) {
- rc = true;
- } else {
- if (SendFileDescriptor(process->GetStderrDescriptor())) {
- process->CloseStderrDescriptor();
- WriteInt(_starterSocket, CODE_SUCCESS);
- if (ReadInt(_starterSocket) == CODE_SUCCESS)
- rc = true;
- } else {
- WriteInt(_starterSocket, CODE_FAILURE);
- }
- }
- }
-
- if (rc) {
- rc = false;
-
- pid_t processId = -1;
- if (process->ForkAndExec(cmdLine,
- environmentVariables,
- nullptr,
- this))
- {
- processId = process->GetProcessID();
- AddChildProcess(process);
- rc = true;
- }
- WriteBytes(_starterSocket, &processId, sizeof(pid_t));
- }
- } else {
- WriteInt(_starterSocket, CODE_FAILURE);
- }
-
-
- if (!rc) delete process;
-
- char **pe = environmentVariables;
- while(*pe != nullptr) {
- delete [] *pe++;
- }
- delete [] environmentVariables;
-}
-
-void FastOS_UNIX_ProcessStarter::Run ()
-{
- for(;;)
- {
- // Receive commands from main process
- int command = ReadInt(_starterSocket);
-
- switch(command)
- {
- case CODE_WAIT: StarterDoWait(); break;
- case CODE_NEWPROCESS: StarterDoCreateProcess(); break;
- case CODE_EXIT: _exit(2);
- }
- }
-}
-
-bool FastOS_UNIX_ProcessStarter::CreateSocketPairs ()
-{
- bool rc = false;
- int fileDescriptors[2];
- if (socketpair(AF_LOCAL, SOCK_STREAM, 0, fileDescriptors) == 0) {
- _starterSocket = fileDescriptors[0];
- _mainSocket = fileDescriptors[1];
-
- // We want to use a separate pair of sockets for passing
- // file descriptors, as errors sending file descriptors
- // shouldn't intefere with handshaking of the main <-> starter
- // process protocol.
- if (socketpair(AF_LOCAL, SOCK_STREAM, 0, fileDescriptors) == 0) {
- _starterSocketDescr = fileDescriptors[0];
- _mainSocketDescr = fileDescriptors[1];
- rc = true;
- } else {
- std::error_code ec(errno, std::system_category());
- fprintf(stderr, "socketpair() failed: %s\n", ec.message().c_str());
- }
- } else {
- std::error_code ec(errno, std::system_category());
- fprintf(stderr, "socketpair() failed: %s\n", ec.message().c_str());
- }
- return rc;
-}
FastOS_UNIX_ProcessStarter::FastOS_UNIX_ProcessStarter (FastOS_ApplicationInterface *app)
: _app(app),
_processList(nullptr),
_pid(-1),
- _starterSocket(-1),
- _mainSocket(-1),
- _starterSocketDescr(-1),
- _mainSocketDescr(-1),
- _hasProxiedChildren(false),
_closedProxyProcessFiles(false),
- _hasDetachedProcess(false),
_hasDirectChildren(false)
{
}
FastOS_UNIX_ProcessStarter::~FastOS_UNIX_ProcessStarter ()
{
- if(_starterSocket != -1)
- close(_starterSocket);
- if(_mainSocket != -1)
- close(_mainSocket);
-}
-
-bool FastOS_UNIX_ProcessStarter::Start ()
-{
- bool rc = false;
-
- if (CreateSocketPairs()) {
- pid_t pid = safe_fork();
- if (pid != -1) {
- if (pid == 0) { // Child
- close(_mainSocket); // Close unused end of pipes
- close(_mainSocketDescr);
- _mainSocket = -1;
- _mainSocketDescr = -1;
- Run(); // Never returns
- } else { // Parent
- _pid = pid;
- close(_starterSocket); // Close unused end of pipes
- close(_starterSocketDescr);
- _starterSocket = -1;
- _starterSocketDescr = -1;
- rc = true;
- }
- } else {
- std::error_code ec(errno, std::system_category());
- fprintf(stderr, "could not fork(): %s\n", ec.message().c_str());
- }
- } else {
- std::error_code ec(errno, std::system_category());
- fprintf(stderr, "could not CreateSocketPairs: %s\n", ec.message().c_str());
- }
- return rc;
-}
-
-void FastOS_UNIX_ProcessStarter::Stop ()
-{
- // Ignore failure (if it already died of SIGINT, etc..)
- WriteInt(_mainSocket, CODE_EXIT, true);
-
- int result = -1;
- waitpid(_pid, &result, 0);
}
-char ** FastOS_UNIX_ProcessStarter::ReceiveEnvironmentVariables ()
-{
- int numEnvVars = ReadInt(_starterSocket);
-
- // printf("Receiving %d environment variables\n", numEnvVars);
- char **myEnvironment = new char *[numEnvVars + 2];
-
- // Reserve the first entry for the IPC parent variable
- myEnvironment[0] = new char [1024];
-
- int fillIndex=1;
- for(int i=0; i<numEnvVars; i++)
- {
- int envBytes = ReadInt(_starterSocket);
- myEnvironment[fillIndex] = new char [envBytes];
- ReadBytes(_starterSocket, myEnvironment[fillIndex], envBytes);
- // printf("Received [%s]\n", myEnvironment[fillIndex]);
-
- if (strlen(myEnvironment[fillIndex]) == 0 ||
- strncmp(myEnvironment[fillIndex], "FASTOS_IPC_PARENT=", 18) == 0)
- delete [] myEnvironment[fillIndex];
- else
- fillIndex++;
- }
- myEnvironment[fillIndex] = nullptr;
-
- return myEnvironment;
-}
void
FastOS_UNIX_ProcessStarter::CloseProxiedChildDescs()
{
- if (_starterSocket >= 0) close(_starterSocket);
- if (_starterSocketDescr >= 0) close(_starterSocketDescr);
}
void
FastOS_UNIX_ProcessStarter::CloseProxyDescs(int stdinPipedDes, int stdoutPipedDes, int stderrPipedDes,
- int ipcDes, int handshakeDes0, int handshakeDes1)
+ int handshakeDes0, int handshakeDes1)
{
return;
if (_closedProxyProcessFiles)
@@ -1431,54 +939,13 @@ FastOS_UNIX_ProcessStarter::CloseProxyDescs(int stdinPipedDes, int stdoutPipedDe
if (fd != stdinPipedDes &&
fd != stdoutPipedDes &&
fd != stderrPipedDes &&
- fd != ipcDes &&
fd != handshakeDes0 &&
- fd != handshakeDes1 &&
- fd != _starterSocket &&
- fd != _starterSocketDescr)
+ fd != handshakeDes1)
close(fd);
}
_closedProxyProcessFiles = true;
}
-char **
-FastOS_UNIX_ProcessStarter::CopyEnvironmentVariables()
-{
- char **env = environ;
- while (*env != nullptr)
- env++;
- int numEnvVars = env - environ;
- char **newEnv = new char *[numEnvVars + 2];
- newEnv[0] = new char[1024];
-
- int fillIdx = 1;
- env = environ;
- while (*env != nullptr) {
- size_t len = strlen(*env);
- if (len > 0 &&
- strncmp(*env, "FASTOS_IPC_PARENT=", 18) != 0) {
- newEnv[fillIdx] = new char[len + 1];
- memcpy(newEnv[fillIdx], *env, len + 1);
- fillIdx++;
- }
- env++;
- }
- newEnv[fillIdx] = nullptr;
- return newEnv;
-}
-
-
-void
-FastOS_UNIX_ProcessStarter::FreeEnvironmentVariables(char **env)
-{
- char **p = env;
- while (*p != nullptr) {
- delete [] *p;
- p++;
- }
- delete [] env;
-}
-
bool
FastOS_UNIX_ProcessStarter::
@@ -1508,11 +975,8 @@ CreateProcess (FastOS_UNIX_Process *process,
if (stderrRedirName != nullptr) {
rprocess->SetStderrRedirName(stderrRedirName);
}
- char **env = CopyEnvironmentVariables();
rprocess->SetTerse();
rprocess->Setup();
- if (!useShell)
- process->SetDescriptor(FastOS_UNIX_Process::TYPE_IPC, rprocess->HandoverIPCDescriptor());
if (pipeStdin)
process->SetDescriptor(FastOS_UNIX_Process::TYPE_STDIN, rprocess->HandoverStdinDescriptor());
if (pipeStdout)
@@ -1520,7 +984,7 @@ CreateProcess (FastOS_UNIX_Process *process,
if (pipeStderr)
process->SetDescriptor(FastOS_UNIX_Process::TYPE_STDERR, rprocess->HandoverStderrDescriptor());
pid_t processId = -1;
- if (rprocess->ForkAndExec(cmdLine, env, process, this)) {
+ if (rprocess->ForkAndExec(cmdLine, environ, process, this)) {
processId = rprocess->GetProcessID();
}
if (processId != -1) {
@@ -1533,7 +997,6 @@ CreateProcess (FastOS_UNIX_Process *process,
}
guard.unlock();
delete rprocess;
- FreeEnvironmentVariables(env);
return rc;
}
@@ -1562,37 +1025,6 @@ FastOS_UNIX_ProcessStarter::PollReapDirectChildren()
}
-void
-FastOS_UNIX_ProcessStarter::PollReapProxiedChildren()
-{
- // Ask our process starter to report dead processes
- WriteInt(_mainSocket, FastOS_UNIX_ProcessStarter::CODE_WAIT);
-
- int numDeadProcesses;
- ReadBytes(_mainSocket, &numDeadProcesses, sizeof(int));
-
- for(int i=0; i<numDeadProcesses; i++)
- {
- pid_t deadProcess;
- int returnCode;
-
- ReadBytes(_mainSocket, &deadProcess, sizeof(pid_t));
- ReadBytes(_mainSocket, &returnCode, sizeof(int));
-
- FastOS_ProcessInterface *node;
- for(node = _app->GetProcessList(); node != nullptr; node = node->_next)
- {
- FastOS_UNIX_Process *xproc = static_cast<FastOS_UNIX_Process *>(node);
-
- if (xproc->GetProcessId() == static_cast<unsigned int>(deadProcess))
- {
- xproc->DeathNotification(returnCode);
- }
- }
- }
-}
-
-
bool
FastOS_UNIX_ProcessStarter::Wait(FastOS_UNIX_Process *process,
int timeOutSeconds,
@@ -1612,8 +1044,6 @@ FastOS_UNIX_ProcessStarter::Wait(FastOS_UNIX_Process *process,
auto guard = process->_app->getProcessGuard();
if (_hasDirectChildren) PollReapDirectChildren();
-
- if (_hasProxiedChildren) PollReapProxiedChildren();
}
if (process->GetDeathFlag()) {
diff --git a/fastos/src/vespa/fastos/unix_process.h b/fastos/src/vespa/fastos/unix_process.h
index 0f641706bb5..a86474eccf7 100644
--- a/fastos/src/vespa/fastos/unix_process.h
+++ b/fastos/src/vespa/fastos/unix_process.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
//************************************************************************
/**
* Class definitions for FastOS_UNIX_Process.
@@ -64,7 +64,6 @@ public:
{
TYPE_STDOUT,
TYPE_STDERR,
- TYPE_IPC,
TYPE_STDIN,
TYPE_COUNT
};
@@ -156,69 +155,27 @@ private:
FastOS_UNIX_ProcessStarter(const FastOS_UNIX_ProcessStarter&);
FastOS_UNIX_ProcessStarter& operator=(const FastOS_UNIX_ProcessStarter&);
-public:
-
- enum Constants
- {
- CODE_EXIT,
- CODE_NEWPROCESS,
- CODE_WAIT,
-
- CODE_SUCCESS,
- CODE_FAILURE,
-
- MAX_PROCESSES_PER_WAIT = 50,
-
- CONSTEND
- };
-
protected:
FastOS_ApplicationInterface *_app;
- static void ReadBytes(int fd, void *buffer, int bytes);
- static void WriteBytes(int fd, const void *buffer,
- int bytes, bool ignoreFailure = false);
- static int ReadInt (int fd);
- static void WriteInt (int fd, int integer, bool ignoreFailure = false);
FastOS_UNIX_RealProcess *_processList;
pid_t _pid;
- int _starterSocket;
- int _mainSocket;
- int _starterSocketDescr;
- int _mainSocketDescr;
- bool _hasProxiedChildren;
bool _closedProxyProcessFiles;
- bool _hasDetachedProcess;
bool _hasDirectChildren;
- void StarterDoWait ();
- void StarterDoCreateProcess ();
-
- bool SendFileDescriptor (int fd);
-
- char **ReceiveEnvironmentVariables ();
-
- bool CreateSocketPairs ();
- void Run ();
-
void AddChildProcess (FastOS_UNIX_RealProcess *node);
void RemoveChildProcess (FastOS_UNIX_RealProcess *node);
- void PollReapProxiedChildren();
- char **CopyEnvironmentVariables();
- static void FreeEnvironmentVariables(char **env);
void PollReapDirectChildren();
public:
FastOS_UNIX_ProcessStarter (FastOS_ApplicationInterface *app);
~FastOS_UNIX_ProcessStarter ();
- bool Start ();
- void Stop ();
void CloseProxiedChildDescs();
void CloseProxyDescs(int stdinPipedDes, int stdoutPipedDes, int stderrPipedDes,
- int ipcDes, int handshakeDes0, int handshakeDes1);
+ int handshakeDes0, int handshakeDes1);
bool CreateProcess (FastOS_UNIX_Process *process, bool useShell,
bool pipeStdin, bool pipeStdout, bool pipeStderr);
diff --git a/fastos/src/vespa/fastos/unix_thread.cpp b/fastos/src/vespa/fastos/unix_thread.cpp
index 20b3d8e530e..d7a0ed879c0 100644
--- a/fastos/src/vespa/fastos/unix_thread.cpp
+++ b/fastos/src/vespa/fastos/unix_thread.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "thread.h"
#include <atomic>
#include <thread>
diff --git a/fastos/src/vespa/fastos/unix_thread.h b/fastos/src/vespa/fastos/unix_thread.h
index 35df3f5745f..18e840183cb 100644
--- a/fastos/src/vespa/fastos/unix_thread.h
+++ b/fastos/src/vespa/fastos/unix_thread.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
******************************************************************************
* @author Oivind H. Danielsen
diff --git a/fat-model-dependencies/pom.xml b/fat-model-dependencies/pom.xml
index 50efa870e60..97e37aa2192 100644
--- a/fat-model-dependencies/pom.xml
+++ b/fat-model-dependencies/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/fbench/CMakeLists.txt b/fbench/CMakeLists.txt
index 3da632d98a6..77d0a5e9080 100644
--- a/fbench/CMakeLists.txt
+++ b/fbench/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/fbench/src/fbench/CMakeLists.txt b/fbench/src/fbench/CMakeLists.txt
index 8c50d55a172..99f8eaa3126 100644
--- a/fbench/src/fbench/CMakeLists.txt
+++ b/fbench/src/fbench/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fbench_app
SOURCES
client.cpp
diff --git a/fbench/src/fbench/client.cpp b/fbench/src/fbench/client.cpp
index 108d44e2b9b..f3e6fba2cf1 100644
--- a/fbench/src/fbench/client.cpp
+++ b/fbench/src/fbench/client.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "client.h"
#include <util/timer.h>
diff --git a/fbench/src/fbench/client.h b/fbench/src/fbench/client.h
index 3349a112fa2..f2f354a35fb 100644
--- a/fbench/src/fbench/client.h
+++ b/fbench/src/fbench/client.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <fstream>
diff --git a/fbench/src/fbench/description.html b/fbench/src/fbench/description.html
index 007b04fedda..b6876a6d1bc 100644
--- a/fbench/src/fbench/description.html
+++ b/fbench/src/fbench/description.html
@@ -1,2 +1,2 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
The actual benchmarking program.
diff --git a/fbench/src/fbench/fbench.cpp b/fbench/src/fbench/fbench.cpp
index 1ba49e9897a..92facaa3cae 100644
--- a/fbench/src/fbench/fbench.cpp
+++ b/fbench/src/fbench/fbench.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fbench.h"
#include "client.h"
diff --git a/fbench/src/fbench/fbench.h b/fbench/src/fbench/fbench.h
index ffceabd0f2b..d157cf26aff 100644
--- a/fbench/src/fbench/fbench.h
+++ b/fbench/src/fbench/fbench.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vector>
diff --git a/fbench/src/filterfile/CMakeLists.txt b/fbench/src/filterfile/CMakeLists.txt
index f1480b4c81d..5774bdcf009 100644
--- a/fbench/src/filterfile/CMakeLists.txt
+++ b/fbench/src/filterfile/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fbench_filterfile_app
SOURCES
filterfile.cpp
diff --git a/fbench/src/filterfile/description.html b/fbench/src/filterfile/description.html
index 27f71cd30a4..82bdabbcebf 100644
--- a/fbench/src/filterfile/description.html
+++ b/fbench/src/filterfile/description.html
@@ -1,2 +1,2 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
Program used to extract query urls from fastserver logs.
diff --git a/fbench/src/filterfile/filterfile.cpp b/fbench/src/filterfile/filterfile.cpp
index 74d00ecf2b9..446a4ae2429 100644
--- a/fbench/src/filterfile/filterfile.cpp
+++ b/fbench/src/filterfile/filterfile.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <util/filereader.h>
#include <iostream>
#include <string.h>
diff --git a/fbench/src/geturl/CMakeLists.txt b/fbench/src/geturl/CMakeLists.txt
index a536a92ce57..9468e147b44 100644
--- a/fbench/src/geturl/CMakeLists.txt
+++ b/fbench/src/geturl/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fbench_geturl_app
SOURCES
geturl.cpp
diff --git a/fbench/src/geturl/description.html b/fbench/src/geturl/description.html
index 894f1df8d0b..7851fb117d2 100644
--- a/fbench/src/geturl/description.html
+++ b/fbench/src/geturl/description.html
@@ -1,2 +1,2 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
Program used to fetch the content of an URL.
diff --git a/fbench/src/geturl/geturl.cpp b/fbench/src/geturl/geturl.cpp
index 868d33f30a9..955fc0d578d 100644
--- a/fbench/src/geturl/geturl.cpp
+++ b/fbench/src/geturl/geturl.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/net/crypto_engine.h>
#include <httpclient/httpclient.h>
diff --git a/fbench/src/httpclient/CMakeLists.txt b/fbench/src/httpclient/CMakeLists.txt
index a28f3666383..163a68f9c98 100644
--- a/fbench/src/httpclient/CMakeLists.txt
+++ b/fbench/src/httpclient/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(fbench_httpclient STATIC
SOURCES
httpclient.cpp
diff --git a/fbench/src/httpclient/httpclient.cpp b/fbench/src/httpclient/httpclient.cpp
index ea10ff14269..36525be8d7b 100644
--- a/fbench/src/httpclient/httpclient.cpp
+++ b/fbench/src/httpclient/httpclient.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "httpclient.h"
#include <vespa/vespalib/net/socket_spec.h>
#include <vespa/vespalib/util/size_literals.h>
diff --git a/fbench/src/httpclient/httpclient.h b/fbench/src/httpclient/httpclient.h
index 5b96daa2441..da04378b38f 100644
--- a/fbench/src/httpclient/httpclient.h
+++ b/fbench/src/httpclient/httpclient.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <ostream>
diff --git a/fbench/src/splitfile/CMakeLists.txt b/fbench/src/splitfile/CMakeLists.txt
index 6a9456b652f..6efbb87adf5 100644
--- a/fbench/src/splitfile/CMakeLists.txt
+++ b/fbench/src/splitfile/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fbench_splitfile_app
SOURCES
splitfile.cpp
diff --git a/fbench/src/splitfile/description.html b/fbench/src/splitfile/description.html
index ba0891d10e1..0d44987a651 100644
--- a/fbench/src/splitfile/description.html
+++ b/fbench/src/splitfile/description.html
@@ -1,2 +1,2 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
Program used to split query url files.
diff --git a/fbench/src/splitfile/splitfile.cpp b/fbench/src/splitfile/splitfile.cpp
index ef85a59020d..abf42f0e9ba 100644
--- a/fbench/src/splitfile/splitfile.cpp
+++ b/fbench/src/splitfile/splitfile.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <util/filereader.h>
#include <fstream>
#include <vector>
diff --git a/fbench/src/test/CMakeLists.txt b/fbench/src/test/CMakeLists.txt
index 63d2aa617cf..d13b6b82a81 100644
--- a/fbench/src/test/CMakeLists.txt
+++ b/fbench/src/test/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fbench_httpclient_splitstring_app TEST
SOURCES
httpclient_splitstring.cpp
diff --git a/fbench/src/test/clientstatus.cpp b/fbench/src/test/clientstatus.cpp
index c8b7bce1a34..72b71fda48e 100644
--- a/fbench/src/test/clientstatus.cpp
+++ b/fbench/src/test/clientstatus.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <util/timer.h>
#include <util/clientstatus.h>
#include <fbench/client.h>
diff --git a/fbench/src/test/filereader.cpp b/fbench/src/test/filereader.cpp
index d01c42fab6f..61bbca0f9d3 100644
--- a/fbench/src/test/filereader.cpp
+++ b/fbench/src/test/filereader.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <util/filereader.h>
#include <string.h>
#include <cassert>
diff --git a/fbench/src/test/httpclient.cpp b/fbench/src/test/httpclient.cpp
index 5d11663f1da..271f95fa2c2 100644
--- a/fbench/src/test/httpclient.cpp
+++ b/fbench/src/test/httpclient.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/net/crypto_engine.h>
#include <httpclient/httpclient.h>
diff --git a/fbench/src/test/httpclient_splitstring.cpp b/fbench/src/test/httpclient_splitstring.cpp
index 4f3e0027db0..53f076609c7 100644
--- a/fbench/src/test/httpclient_splitstring.cpp
+++ b/fbench/src/test/httpclient_splitstring.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/net/crypto_engine.h>
#include <httpclient/httpclient.h>
diff --git a/fbench/src/util/CMakeLists.txt b/fbench/src/util/CMakeLists.txt
index 3cdff26ce16..c0b0a0870c3 100644
--- a/fbench/src/util/CMakeLists.txt
+++ b/fbench/src/util/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(fbench_util STATIC
SOURCES
authority.cpp
diff --git a/fbench/src/util/clientstatus.cpp b/fbench/src/util/clientstatus.cpp
index 6ef188da201..35086fd84dc 100644
--- a/fbench/src/util/clientstatus.cpp
+++ b/fbench/src/util/clientstatus.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "clientstatus.h"
#include <cstring>
#include <cmath>
diff --git a/fbench/src/util/clientstatus.h b/fbench/src/util/clientstatus.h
index f8a223e121a..89589ef75e9 100644
--- a/fbench/src/util/clientstatus.h
+++ b/fbench/src/util/clientstatus.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <map>
diff --git a/fbench/src/util/description.html b/fbench/src/util/description.html
index 37e80a0c3f7..2763b710459 100644
--- a/fbench/src/util/description.html
+++ b/fbench/src/util/description.html
@@ -1,2 +1,2 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
Library containing utility classes.
diff --git a/fbench/src/util/filereader.cpp b/fbench/src/util/filereader.cpp
index 9a48f6442a3..71c1b5ae703 100644
--- a/fbench/src/util/filereader.cpp
+++ b/fbench/src/util/filereader.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "filereader.h"
#include <iostream>
#include <unistd.h>
diff --git a/fbench/src/util/filereader.h b/fbench/src/util/filereader.h
index 5a4f6886d34..96fae6d2858 100644
--- a/fbench/src/util/filereader.h
+++ b/fbench/src/util/filereader.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <fstream>
diff --git a/fbench/src/util/timer.cpp b/fbench/src/util/timer.cpp
index 22c2a781704..40b0e713bda 100644
--- a/fbench/src/util/timer.cpp
+++ b/fbench/src/util/timer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "timer.h"
#include <stdio.h>
#include <thread>
diff --git a/fbench/src/util/timer.h b/fbench/src/util/timer.h
index 6e4d5dafc97..12aa28e9247 100644
--- a/fbench/src/util/timer.h
+++ b/fbench/src/util/timer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <chrono>
diff --git a/fbench/util/plot.pl b/fbench/util/plot.pl
index ca25bd66d4b..45311d9f97c 100755
--- a/fbench/util/plot.pl
+++ b/fbench/util/plot.pl
@@ -1,5 +1,5 @@
#!/usr/bin/perl -s
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# TODO
# - parameter for input and output file name
diff --git a/fbench/util/pretest.sh b/fbench/util/pretest.sh
index 756a72e7c5f..1bf2a0372f8 100755
--- a/fbench/util/pretest.sh
+++ b/fbench/util/pretest.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# This script will be run by the 'runtests.sh' script before
diff --git a/fbench/util/resultfilter.pl b/fbench/util/resultfilter.pl
index 4c0f885b591..f66aed42dc3 100755
--- a/fbench/util/resultfilter.pl
+++ b/fbench/util/resultfilter.pl
@@ -1,5 +1,5 @@
#!/usr/bin/perl
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# This script converts an fbench summary report read from stdin to a
# single line containing only the numerical values written to
diff --git a/fbench/util/runtests.sh b/fbench/util/runtests.sh
index dd18fd6d9b4..1c5c7583e6e 100755
--- a/fbench/util/runtests.sh
+++ b/fbench/util/runtests.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
opt_o=false
opt_l=false
diff --git a/fbench/util/separate.pl b/fbench/util/separate.pl
index a164b196ae7..418733bde7c 100755
--- a/fbench/util/separate.pl
+++ b/fbench/util/separate.pl
@@ -1,5 +1,5 @@
#!/usr/bin/perl
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
$sepcol = shift;
diff --git a/fileacquirer/CMakeLists.txt b/fileacquirer/CMakeLists.txt
index 0b71d1fc1cd..13150f58ba3 100644
--- a/fileacquirer/CMakeLists.txt
+++ b/fileacquirer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/fileacquirer/pom.xml b/fileacquirer/pom.xml
index 72529eaab3e..8be54e15682 100644
--- a/fileacquirer/pom.xml
+++ b/fileacquirer/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirer.java b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirer.java
index 9e3886934b9..03650963f96 100644
--- a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirer.java
+++ b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.filedistribution.fileacquirer;
import com.yahoo.config.FileReference;
diff --git a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirerFactory.java b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirerFactory.java
index e8a3038639a..3e7057049af 100644
--- a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirerFactory.java
+++ b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirerFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.filedistribution.fileacquirer;
/**
diff --git a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirerImpl.java b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirerImpl.java
index 19aa1cc7e44..9f8e7d253fc 100644
--- a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirerImpl.java
+++ b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileAcquirerImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.filedistribution.fileacquirer;
import com.yahoo.cloud.config.filedistribution.FiledistributorrpcConfig;
diff --git a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileReferenceDoesNotExistException.java b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileReferenceDoesNotExistException.java
index 3ef6072eb29..95aa07d14a7 100644
--- a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileReferenceDoesNotExistException.java
+++ b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileReferenceDoesNotExistException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.filedistribution.fileacquirer;
/**
diff --git a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileReferenceRemovedException.java b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileReferenceRemovedException.java
index e019318c4dd..542fbcc7532 100644
--- a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileReferenceRemovedException.java
+++ b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/FileReferenceRemovedException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.filedistribution.fileacquirer;
/**
diff --git a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/MockFileAcquirer.java b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/MockFileAcquirer.java
index 1a8a05d0a53..024aa8990d7 100644
--- a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/MockFileAcquirer.java
+++ b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/MockFileAcquirer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.filedistribution.fileacquirer;
import com.yahoo.config.FileReference;
diff --git a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/TimeoutException.java b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/TimeoutException.java
index a5d3d8fb768..ebb14a99239 100644
--- a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/TimeoutException.java
+++ b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/TimeoutException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.filedistribution.fileacquirer;
/**
diff --git a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/Timer.java b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/Timer.java
index e4ce5ae5e83..b1ef519d901 100644
--- a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/Timer.java
+++ b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/Timer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.filedistribution.fileacquirer;
import java.util.concurrent.TimeUnit;
diff --git a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/package-info.java b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/package-info.java
index 60ae75d28ad..57e8a4011de 100644
--- a/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/package-info.java
+++ b/fileacquirer/src/main/java/com/yahoo/filedistribution/fileacquirer/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.filedistribution.fileacquirer;
diff --git a/fileacquirer/src/main/resources/configdefinitions/filedistributorrpc.def b/fileacquirer/src/main/resources/configdefinitions/filedistributorrpc.def
index 3de65e632ee..9ffd31ad043 100644
--- a/fileacquirer/src/main/resources/configdefinitions/filedistributorrpc.def
+++ b/fileacquirer/src/main/resources/configdefinitions/filedistributorrpc.def
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=cloud.config.filedistribution
connectionspec string
diff --git a/fileacquirer/src/test/java/MockFileAcquirerTest.java b/fileacquirer/src/test/java/MockFileAcquirerTest.java
index 4b48bffe24b..9a505118c31 100644
--- a/fileacquirer/src/test/java/MockFileAcquirerTest.java
+++ b/fileacquirer/src/test/java/MockFileAcquirerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.config.FileReference;
import com.yahoo.filedistribution.fileacquirer.FileAcquirer;
import com.yahoo.filedistribution.fileacquirer.FileReferenceDoesNotExistException;
diff --git a/fileacquirer/src/vespa/fileacquirer/CMakeLists.txt b/fileacquirer/src/vespa/fileacquirer/CMakeLists.txt
index 27e7b37df6d..67da07cede0 100644
--- a/fileacquirer/src/vespa/fileacquirer/CMakeLists.txt
+++ b/fileacquirer/src/vespa/fileacquirer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(fileacquirer STATIC
SOURCES
DEPENDS
diff --git a/filedistribution/CMakeLists.txt b/filedistribution/CMakeLists.txt
index 78e63f81182..cddeccc9574 100644
--- a/filedistribution/CMakeLists.txt
+++ b/filedistribution/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(filedistribution)
vespa_install_script(src/main/sh/vespa-status-filedistribution.sh vespa-status-filedistribution bin)
diff --git a/filedistribution/pom.xml b/filedistribution/pom.xml
index e922d878dd7..4a79384ff67 100644
--- a/filedistribution/pom.xml
+++ b/filedistribution/pom.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
@@ -22,7 +22,7 @@
<groupId>com.yahoo.vespa</groupId>
<artifactId>container-apache-http-client-bundle</artifactId>
<version>${project.version}</version>
- <scope>provided</scope>
+ <scope>compile</scope>
</dependency>
<dependency>
<groupId>com.yahoo.vespa</groupId>
@@ -67,6 +67,11 @@
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <scope>compile</scope>
+ </dependency>
</dependencies>
<build>
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/CompressedFileReference.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/CompressedFileReference.java
index c160233dd72..e8fe09a89e3 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/CompressedFileReference.java
+++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/CompressedFileReference.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.filedistribution;
import com.google.common.io.ByteStreams;
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/Downloads.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/Downloads.java
index eab6cd39352..f3c3a91f787 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/Downloads.java
+++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/Downloads.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.filedistribution;
import com.yahoo.config.FileReference;
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/EmptyFileReferenceData.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/EmptyFileReferenceData.java
index e6e4fdb8598..8b3bc32ff71 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/EmptyFileReferenceData.java
+++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/EmptyFileReferenceData.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.filedistribution;
import com.yahoo.config.FileReference;
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDownloader.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDownloader.java
index 292674497ed..58e08cccb99 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDownloader.java
+++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDownloader.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.filedistribution;
import com.yahoo.config.FileReference;
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReceiver.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReceiver.java
index e1a8cf92513..fbc17293e8d 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReceiver.java
+++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReceiver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.filedistribution;
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceData.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceData.java
index ceb43ab3d51..db6c4b70b83 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceData.java
+++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceData.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.filedistribution;
import com.yahoo.config.FileReference;
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownload.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownload.java
index d927063ba60..cf62a67484e 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownload.java
+++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownload.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.filedistribution;
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java
index 01240357fbe..952684b7b0b 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java
+++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.filedistribution;
import com.yahoo.concurrent.DaemonThreadFactory;
@@ -96,9 +96,10 @@ public class FileReferenceDownloader {
String fileReference = fileReferenceDownload.fileReference().value();
request.parameters().add(new StringValue(fileReference));
request.parameters().add(new Int32Value(fileReferenceDownload.downloadFromOtherSourceIfNotFound() ? 0 : 1));
-
- connection.invokeSync(request, (double) rpcTimeout.getSeconds());
- Level logLevel = (retryCount > 50 ? Level.INFO : Level.FINE);
+ double timeoutSecs = (double) rpcTimeout.getSeconds();
+ timeoutSecs += retryCount * 10.0;
+ connection.invokeSync(request, timeoutSecs);
+ Level logLevel = (retryCount > 5 ? Level.INFO : Level.FINE);
if (validateResponse(request)) {
log.log(Level.FINE, () -> "Request callback, OK. Req: " + request + "\nSpec: " + connection + ", retry count " + retryCount);
if (request.returnValues().get(0).asInt32() == 0) {
@@ -113,7 +114,7 @@ public class FileReferenceDownloader {
log.log(logLevel, () -> "Downloading file " + fileReference + " from " + connection.getAddress() + " failed: " +
request + ", error: " + request.errorMessage() + ", will use another config server for next request" +
" (retry count " + retryCount + ", rpc timeout " + rpcTimeout.getSeconds() + ")");
- connectionPool.setError(connection, request.errorCode());
+ connectionPool.switchConnection(connection);
return false;
}
}
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/LazyFileReferenceData.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/LazyFileReferenceData.java
index 193111c42fb..10de9c072b9 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/LazyFileReferenceData.java
+++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/LazyFileReferenceData.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.filedistribution;
import com.yahoo.config.FileReference;
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/LazyTemporaryStorageFileReferenceData.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/LazyTemporaryStorageFileReferenceData.java
index 3fb33182c41..0d4f207b48e 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/LazyTemporaryStorageFileReferenceData.java
+++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/LazyTemporaryStorageFileReferenceData.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.filedistribution;
import com.yahoo.config.FileReference;
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/RpcTester.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/RpcTester.java
index 4d49c93db53..f3b166c60fe 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/RpcTester.java
+++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/RpcTester.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.filedistribution;
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/status/FileDistributionStatusClient.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/status/FileDistributionStatusClient.java
index 1675366fc5e..a9bbfafeaf0 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/status/FileDistributionStatusClient.java
+++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/status/FileDistributionStatusClient.java
@@ -1,19 +1,22 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.filedistribution.status;
+import ai.vespa.util.http.hc5.VespaHttpClientBuilder;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.airlift.airline.Command;
import io.airlift.airline.HelpOption;
import io.airlift.airline.Option;
import io.airlift.airline.SingleCommand;
-import org.apache.http.client.config.RequestConfig;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.utils.URIBuilder;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.util.EntityUtils;
+import org.apache.hc.client5.http.classic.methods.HttpGet;
+import org.apache.hc.client5.http.config.RequestConfig;
+import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
+import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
+import org.apache.hc.core5.http.HttpEntity;
+import org.apache.hc.core5.http.ParseException;
+import org.apache.hc.core5.http.io.entity.EntityUtils;
+import org.apache.hc.core5.net.URIBuilder;
+import org.apache.hc.core5.util.Timeout;
import javax.inject.Inject;
import java.io.IOException;
@@ -23,6 +26,8 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;
+import static org.apache.hc.client5.http.config.RequestConfig.custom;
+
/**
* Tool for getting file distribution status
*
@@ -67,28 +72,32 @@ public class FileDistributionStatusClient {
}
private String doHttpRequest() {
- int timeoutInMillis = (int) (timeout * 1000);
- RequestConfig config = RequestConfig.custom()
+ Timeout timeoutInMillis = Timeout.ofMilliseconds((long) (timeout * 1000));
+ RequestConfig config = custom()
.setConnectTimeout(timeoutInMillis)
.setConnectionRequestTimeout(timeoutInMillis)
- .setSocketTimeout(timeoutInMillis)
+ .setResponseTimeout(timeoutInMillis)
.build();
- CloseableHttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(config).build();
+ CloseableHttpClient httpClient = VespaHttpClientBuilder.create().build();
URI statusUri = createStatusApiUri();
if (debug)
System.out.println("URI:" + statusUri);
try {
- CloseableHttpResponse response = httpClient.execute(new HttpGet(statusUri));
- String content = EntityUtils.toString(response.getEntity());
+ HttpGet request = new HttpGet(statusUri);
+ request.addHeader("Connection", "Close");
+ request.setConfig(config);
+ CloseableHttpResponse response = httpClient.execute(request);
+ HttpEntity entity = response.getEntity();
+ String content = EntityUtils.toString(entity);
if (debug)
System.out.println("response:" + content);
- if (response.getStatusLine().getStatusCode() == 200) {
+ if (response.getCode() == 200) {
return content;
} else {
throw new RuntimeException("Failed to get status for request " + statusUri + ": " +
- response.getStatusLine() + ": " + content);
+ response.getCode() + ": " + content);
}
- } catch (IOException e) {
+ } catch (IOException | ParseException e) {
throw new RuntimeException(e);
}
}
diff --git a/filedistribution/src/main/sh/vespa-status-filedistribution.sh b/filedistribution/src/main/sh/vespa-status-filedistribution.sh
index 34e26889339..114186eb0d4 100644
--- a/filedistribution/src/main/sh/vespa-status-filedistribution.sh
+++ b/filedistribution/src/main/sh/vespa-status-filedistribution.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
@@ -76,11 +76,11 @@ findhost
ROOT=${VESPA_HOME%/}
-if [ "$cloudconfig_server__environment" != "" ]; then
- environment="--environment $cloudconfig_server__environment"
+if [ "$VESPA_ENVIRONMENT" != "" ]; then
+ environment="--environment $VESPA_ENVIRONMENT"
fi
-if [ "$cloudconfig_server__region" != "" ]; then
- region="--region $cloudconfig_server__region"
+if [ "$VESPA_REGION" != "" ]; then
+ region="--region $VESPA_REGION"
fi
defaults="--tenant default --application default --instance default"
diff --git a/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java b/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java
index 6169f6fbe55..15cc28007ce 100644
--- a/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java
+++ b/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.filedistribution;
import com.yahoo.config.FileReference;
@@ -325,9 +325,6 @@ public class FileDownloaderTest {
}
@Override
- public void setError(Connection connection, int errorCode) { }
-
- @Override
public Connection getCurrent() {
return this;
}
diff --git a/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileReceiverTest.java b/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileReceiverTest.java
index 69d4344d246..996f3cc2984 100644
--- a/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileReceiverTest.java
+++ b/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileReceiverTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.filedistribution;
import com.yahoo.config.FileReference;
diff --git a/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileReferenceDataTest.java b/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileReferenceDataTest.java
index d1dac1131e2..66b731f204b 100644
--- a/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileReferenceDataTest.java
+++ b/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileReferenceDataTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.filedistribution;
import com.yahoo.config.FileReference;
diff --git a/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/status/FileDistributionStatusClientTest.java b/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/status/FileDistributionStatusClientTest.java
index 43eb006cc6d..a724838e7c7 100644
--- a/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/status/FileDistributionStatusClientTest.java
+++ b/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/status/FileDistributionStatusClientTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.filedistribution.status;
diff --git a/flags/CMakeLists.txt b/flags/CMakeLists.txt
index 732ef6345f9..1b1adce2463 100644
--- a/flags/CMakeLists.txt
+++ b/flags/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(flags)
diff --git a/flags/README.md b/flags/README.md
index 6127ae3d891..c120590226e 100644
--- a/flags/README.md
+++ b/flags/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Flags
Defines flags that can be used to enable or disable new features, or change
values, independent of the release rollout.
diff --git a/flags/pom.xml b/flags/pom.xml
index 3774ab3bf5f..5f0d3e1d481 100644
--- a/flags/pom.xml
+++ b/flags/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/BooleanFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/BooleanFlag.java
index 0a4b8a1c5c2..fb0335408cb 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/BooleanFlag.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/BooleanFlag.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import javax.annotation.concurrent.Immutable;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/Deserializer.java b/flags/src/main/java/com/yahoo/vespa/flags/Deserializer.java
index 7ececa5489a..3e2b7e0f84b 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/Deserializer.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/Deserializer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
/**
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/DoubleFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/DoubleFlag.java
index 9d606887715..d8cddbff432 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/DoubleFlag.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/DoubleFlag.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import javax.annotation.concurrent.Immutable;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/FetchVector.java b/flags/src/main/java/com/yahoo/vespa/flags/FetchVector.java
index ede7bd6a109..0faef17bf63 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/FetchVector.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/FetchVector.java
@@ -1,12 +1,10 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import com.yahoo.vespa.flags.json.DimensionHelper;
import javax.annotation.concurrent.Immutable;
-import java.util.Collections;
import java.util.EnumMap;
-import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
@@ -72,15 +70,15 @@ public class FetchVector {
private final Map<Dimension, String> map;
public FetchVector() {
- this.map = Collections.emptyMap();
+ this.map = Map.of();
}
public static FetchVector fromMap(Map<Dimension, String> map) {
- return new FetchVector(new HashMap<>(map));
+ return new FetchVector(map);
}
private FetchVector(Map<Dimension, String> map) {
- this.map = Collections.unmodifiableMap(map);
+ this.map = Map.copyOf(map);
}
public Optional<String> getValue(Dimension dimension) {
@@ -93,6 +91,10 @@ public class FetchVector {
public boolean isEmpty() { return map.isEmpty(); }
+ public boolean hasDimension(FetchVector.Dimension dimension) {
+ return map.containsKey(dimension);
+ }
+
/**
* Returns a new FetchVector, identical to {@code this} except for its value in {@code dimension}.
* Dimension is removed if the value is null.
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/Flag.java b/flags/src/main/java/com/yahoo/vespa/flags/Flag.java
index 718478ab426..1bdc8e4a8c3 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/Flag.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/Flag.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import java.util.Optional;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/FlagDefinition.java b/flags/src/main/java/com/yahoo/vespa/flags/FlagDefinition.java
index d01ca64cb9f..0b4e18d496d 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/FlagDefinition.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/FlagDefinition.java
@@ -1,11 +1,11 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import javax.annotation.concurrent.Immutable;
import java.time.Instant;
-import java.util.Arrays;
-import java.util.Collections;
+import java.util.EnumSet;
import java.util.List;
+import java.util.Set;
/**
* @author hakonhall
@@ -28,14 +28,14 @@ public class FlagDefinition {
String description,
String modificationEffect,
FetchVector.Dimension... dimensions) {
- validate(owners, createdAt, expiresAt);
this.unboundFlag = unboundFlag;
this.owners = owners;
this.createdAt = createdAt;
this.expiresAt = expiresAt;
this.description = description;
this.modificationEffect = modificationEffect;
- this.dimensions = Collections.unmodifiableList(Arrays.asList(dimensions));
+ this.dimensions = List.of(dimensions);
+ validate(owners, createdAt, expiresAt, this.dimensions);
}
public UnboundFlag<?, ?, ?> getUnboundFlag() {
@@ -60,13 +60,14 @@ public class FlagDefinition {
public Instant getExpiresAt() { return expiresAt; }
- private static void validate(List<String> owners, Instant createdAt, Instant expiresAt) {
+ private static void validate(List<String> owners, Instant createdAt, Instant expiresAt, List<FetchVector.Dimension> dimensions) {
if (expiresAt.isBefore(createdAt)) {
throw new IllegalArgumentException(
String.format(
"Flag cannot expire before its creation date (createdAt='%s', expiresAt='%s')",
createdAt, expiresAt));
}
+
if (owners == PermanentFlags.OWNERS) {
if (!createdAt.equals(PermanentFlags.CREATED_AT) || !expiresAt.equals(PermanentFlags.EXPIRES_AT)) {
throw new IllegalArgumentException("Invalid creation or expiration date for permanent flag");
@@ -74,5 +75,15 @@ public class FlagDefinition {
} else if (owners.isEmpty()) {
throw new IllegalArgumentException("Owner(s) must be specified");
}
+
+ if (dimensions.contains(FetchVector.Dimension.CONSOLE_USER_EMAIL)) {
+ Set<FetchVector.Dimension> disallowedCombinations = EnumSet.allOf(FetchVector.Dimension.class);
+ disallowedCombinations.remove(FetchVector.Dimension.CONSOLE_USER_EMAIL);
+ disallowedCombinations.remove(FetchVector.Dimension.APPLICATION_ID);
+ disallowedCombinations.remove(FetchVector.Dimension.TENANT_ID);
+ disallowedCombinations.retainAll(dimensions);
+ if (!disallowedCombinations.isEmpty())
+ throw new IllegalArgumentException("Dimension " + FetchVector.Dimension.CONSOLE_USER_EMAIL + " cannot be combined with " + disallowedCombinations);
+ }
}
}
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/FlagId.java b/flags/src/main/java/com/yahoo/vespa/flags/FlagId.java
index ae38fbe7dc1..36ec5c03300 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/FlagId.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/FlagId.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import javax.annotation.concurrent.Immutable;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/FlagImpl.java b/flags/src/main/java/com/yahoo/vespa/flags/FlagImpl.java
index 79da03e4982..c32e189eaf5 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/FlagImpl.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/FlagImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
/**
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/FlagRepository.java b/flags/src/main/java/com/yahoo/vespa/flags/FlagRepository.java
index ba9919ff123..70b609584be 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/FlagRepository.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/FlagRepository.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import com.yahoo.vespa.flags.json.FlagData;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/FlagSerializer.java b/flags/src/main/java/com/yahoo/vespa/flags/FlagSerializer.java
index 697cbfcbb4a..8362574630c 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/FlagSerializer.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/FlagSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
/**
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/FlagSource.java b/flags/src/main/java/com/yahoo/vespa/flags/FlagSource.java
index 182ab85858c..34e69e735fa 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/FlagSource.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/FlagSource.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import java.util.Optional;
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 a3e6fff410e..d576bb335ab 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import com.yahoo.component.Vtag;
@@ -13,7 +13,7 @@ import java.util.Optional;
import java.util.TreeMap;
import static com.yahoo.vespa.flags.FetchVector.Dimension.APPLICATION_ID;
-import static com.yahoo.vespa.flags.FetchVector.Dimension.CLUSTER_TYPE;
+import static com.yahoo.vespa.flags.FetchVector.Dimension.CONSOLE_USER_EMAIL;
import static com.yahoo.vespa.flags.FetchVector.Dimension.HOSTNAME;
import static com.yahoo.vespa.flags.FetchVector.Dimension.TENANT_ID;
import static com.yahoo.vespa.flags.FetchVector.Dimension.VESPA_VERSION;
@@ -44,6 +44,12 @@ public class Flags {
private static volatile TreeMap<FlagId, FlagDefinition> flags = new TreeMap<>();
+ public static final UnboundBooleanFlag FORCE_DISK_ENCRYPTION = defineFeatureFlag(
+ "force-disk-encryption", true,
+ List.of("hakonhall"), "2021-10-01", "2021-11-01",
+ "Enable new conditions for when to encrypt disk.",
+ "Takes effect on next host admin tick.");
+
public static final UnboundDoubleFlag DEFAULT_TERM_WISE_LIMIT = defineDoubleFlag(
"default-term-wise-limit", 1.0,
List.of("baldersheim"), "2020-12-02", "2022-01-01",
@@ -95,22 +101,14 @@ public class Flags {
public static final UnboundBooleanFlag USE_THREE_PHASE_UPDATES = defineFeatureFlag(
"use-three-phase-updates", false,
- List.of("vekterli"), "2020-12-02", "2021-08-01",
+ List.of("vekterli"), "2020-12-02", "2021-11-01",
"Whether to enable the use of three-phase updates when bucket replicas are out of sync.",
"Takes effect at redeployment",
ZONE_ID, APPLICATION_ID);
- // TODO: Remove when models referring to this are gone in all systems
- public static final UnboundBooleanFlag TENANT_IAM_ROLE = defineFeatureFlag(
- "application-iam-roles", false,
- List.of("tokle"), "2020-12-02", "2021-08-01",
- "Allow separate iam roles when provisioning/assigning hosts",
- "Takes effect immediately on new hosts, on next redeploy for applications",
- TENANT_ID);
-
public static final UnboundBooleanFlag HIDE_SHARED_ROUTING_ENDPOINT = defineFeatureFlag(
"hide-shared-routing-endpoint", false,
- List.of("tokle", "bjormel"), "2020-12-02", "2021-09-01",
+ List.of("tokle", "bjormel"), "2020-12-02", "2021-11-01",
"Whether the controller should hide shared routing layer endpoint",
"Takes effect immediately",
APPLICATION_ID
@@ -130,167 +128,198 @@ public class Flags {
"Takes effect at redeployment",
ZONE_ID, APPLICATION_ID);
- public static final UnboundBooleanFlag GROUP_SUSPENSION = defineFeatureFlag(
- "group-suspension", true,
- List.of("hakon"), "2021-01-22", "2021-08-22",
- "Allow all content nodes in a hierarchical group to suspend at the same time",
- "Takes effect on the next suspension request to the Orchestrator.",
- APPLICATION_ID);
-
- public static final UnboundBooleanFlag ENCRYPT_DIRTY_DISK = defineFeatureFlag(
- "encrypt-dirty-disk", false,
- List.of("hakonhall"), "2021-05-14", "2021-08-05",
- "Allow migrating an unencrypted data partition to being encrypted when (de)provisioned.",
- "Takes effect on next host-admin tick.");
+ public static final UnboundIntFlag NUM_DEPLOY_HELPER_THREADS = defineIntFlag(
+ "num-model-builder-threads", -1,
+ List.of("balder"), "2021-09-09", "2021-11-01",
+ "Number of threads used for speeding up building of models.",
+ "Takes effect on first (re)start of config server");
public static final UnboundBooleanFlag ENABLE_FEED_BLOCK_IN_DISTRIBUTOR = defineFeatureFlag(
"enable-feed-block-in-distributor", true,
- List.of("geirst"), "2021-01-27", "2021-09-01",
+ List.of("geirst"), "2021-01-27", "2021-11-01",
"Enables blocking of feed in the distributor if resource usage is above limit on at least one content node",
"Takes effect at redeployment",
ZONE_ID, APPLICATION_ID);
- public static final UnboundIntFlag METRICS_PROXY_MAX_HEAP_SIZE_IN_MB = defineIntFlag(
- "metrics-proxy-max-heap-size-in-mb", 256,
- List.of("hmusum"), "2021-03-01", "2021-07-15",
- "JVM max heap size for metrics proxy in Mb",
- "Takes effect when restarting metrics proxy",
- CLUSTER_TYPE);
-
- public static final UnboundStringFlag DEDICATED_CLUSTER_CONTROLLER_FLAVOR = defineStringFlag(
- "dedicated-cluster-controller-flavor", "", List.of("jonmv"), "2021-02-25", "2021-08-25",
- "Flavor as <vpu>-<memgb>-<diskgb> to use for dedicated cluster controller nodes",
- "Takes effect immediately, for subsequent provisioning",
- APPLICATION_ID);
+ public static final UnboundBooleanFlag CONTAINER_DUMP_HEAP_ON_SHUTDOWN_TIMEOUT = defineFeatureFlag(
+ "container-dump-heap-on-shutdown-timeout", false,
+ List.of("baldersheim"), "2021-09-25", "2021-11-01",
+ "Will trigger a heap dump during if container shutdown times out",
+ "Takes effect at redeployment",
+ ZONE_ID, APPLICATION_ID);
+
+ public static final UnboundDoubleFlag CONTAINER_SHUTDOWN_TIMEOUT = defineDoubleFlag(
+ "container-shutdown-timeout", 50.0,
+ List.of("baldersheim"), "2021-09-25", "2021-11-01",
+ "Timeout for shutdown of a jdisc container",
+ "Takes effect at redeployment",
+ ZONE_ID, APPLICATION_ID);
public static final UnboundListFlag<String> ALLOWED_ATHENZ_PROXY_IDENTITIES = defineListFlag(
"allowed-athenz-proxy-identities", List.of(), String.class,
- List.of("bjorncs", "tokle"), "2021-02-10", "2021-08-01",
+ List.of("bjorncs", "tokle"), "2021-02-10", "2021-12-01",
"Allowed Athenz proxy identities",
"takes effect at redeployment");
public static final UnboundBooleanFlag GENERATE_NON_MTLS_ENDPOINT = defineFeatureFlag(
"generate-non-mtls-endpoint", true,
- List.of("tokle"), "2021-02-18", "2021-10-01",
+ List.of("tokle"), "2021-02-18", "2021-12-01",
"Whether to generate the non-mtls endpoint",
"Takes effect on next internal redeployment",
APPLICATION_ID);
public static final UnboundIntFlag MAX_ACTIVATION_INHIBITED_OUT_OF_SYNC_GROUPS = defineIntFlag(
"max-activation-inhibited-out-of-sync-groups", 0,
- List.of("vekterli"), "2021-02-19", "2021-09-01",
+ List.of("vekterli"), "2021-02-19", "2021-11-01",
"Allows replicas in up to N content groups to not be activated " +
"for query visibility if they are out of sync with a majority of other replicas",
"Takes effect at redeployment",
ZONE_ID, APPLICATION_ID);
- public static final UnboundBooleanFlag ENABLE_CUSTOM_ACL_MAPPING = defineFeatureFlag(
- "enable-custom-acl-mapping", false,
- List.of("mortent","bjorncs"), "2021-04-13", "2021-08-01",
- "Whether access control filters should read acl request mapping from handler or use default",
- "Takes effect at redeployment",
- APPLICATION_ID);
-
- public static final UnboundIntFlag NUM_DISTRIBUTOR_STRIPES = defineIntFlag(
- "num-distributor-stripes", 0,
- List.of("geirst", "vekterli"), "2021-04-20", "2021-09-01",
- "Specifies the number of stripes used by the distributor. When 0, legacy single stripe behavior is used.",
- "Takes effect after distributor restart",
- ZONE_ID, APPLICATION_ID);
-
public static final UnboundIntFlag MAX_CONCURRENT_MERGES_PER_NODE = defineIntFlag(
- "max-concurrent-merges-per-node", 16,
- List.of("balder", "vekterli"), "2021-06-06", "2021-09-01",
+ "max-concurrent-merges-per-node", 128,
+ List.of("balder", "vekterli"), "2021-06-06", "2021-11-01",
"Specifies max concurrent merges per content node.",
"Takes effect at redeploy",
ZONE_ID, APPLICATION_ID);
public static final UnboundIntFlag MAX_MERGE_QUEUE_SIZE = defineIntFlag(
"max-merge-queue-size", 1024,
- List.of("balder", "vekterli"), "2021-06-06", "2021-09-01",
+ List.of("balder", "vekterli"), "2021-06-06", "2021-11-01",
"Specifies max size of merge queue.",
"Takes effect at redeploy",
ZONE_ID, APPLICATION_ID);
- public static final UnboundBooleanFlag USE_EXTERNAL_RANK_EXPRESSION = defineFeatureFlag(
- "use-external-rank-expression", false,
- List.of("baldersheim"), "2021-05-24", "2021-09-01",
- "Whether to use distributed external rank expression or inline in rankproperties",
- "Takes effect on next internal redeployment",
- APPLICATION_ID);
-
- public static final UnboundBooleanFlag DISTRIBUTE_EXTERNAL_RANK_EXPRESSION = defineFeatureFlag(
- "distribute-external-rank-expression", false,
- List.of("baldersheim"), "2021-05-27", "2021-09-01",
- "Whether to use distributed external rank expression files by filedistribution",
- "Takes effect on next internal redeployment",
- APPLICATION_ID);
+ public static final UnboundBooleanFlag IGNORE_MERGE_QUEUE_LIMIT = defineFeatureFlag(
+ "ignore-merge-queue-limit", false,
+ List.of("vekterli", "geirst"), "2021-10-06", "2021-12-01",
+ "Specifies if merges that are forwarded (chained) from another content node are always " +
+ "allowed to be enqueued even if the queue is otherwise full.",
+ "Takes effect at redeploy",
+ ZONE_ID, APPLICATION_ID);
public static final UnboundIntFlag LARGE_RANK_EXPRESSION_LIMIT = defineIntFlag(
- "large-rank-expression-limit", 0x10000,
- List.of("baldersheim"), "2021-06-09", "2021-09-01",
+ "large-rank-expression-limit", 8192,
+ List.of("baldersheim"), "2021-06-09", "2021-11-01",
"Limit for size of rank expressions distributed by filedistribution",
"Takes effect on next internal redeployment",
APPLICATION_ID);
- public static final UnboundBooleanFlag ENABLE_ROUTING_CORE_DUMP = defineFeatureFlag(
- "enable-routing-core-dumps", false,
- List.of("tokle"), "2021-04-16", "2021-08-01",
- "Whether to enable core dumps for routing layer",
- "Takes effect on next host-admin tick",
- HOSTNAME);
-
- public static final UnboundBooleanFlag CFG_DEPLOY_MULTIPART = defineFeatureFlag(
- "cfg-deploy-multipart", false,
- List.of("tokle"), "2021-05-19", "2021-08-01",
- "Whether to deploy applications using multipart form data (instead of url params)",
- "Takes effect immediately",
- APPLICATION_ID);
-
public static final UnboundIntFlag MAX_ENCRYPTING_HOSTS = defineIntFlag(
"max-encrypting-hosts", 0,
- List.of("mpolden", "hakonhall"), "2021-05-27", "2021-10-01",
+ List.of("mpolden", "hakonhall"), "2021-05-27", "2021-11-01",
"The maximum number of hosts allowed to encrypt their disk concurrently",
"Takes effect on next run of HostEncrypter, but any currently encrypting hosts will not be cancelled when reducing the limit");
public static final UnboundBooleanFlag REQUIRE_CONNECTIVITY_CHECK = defineFeatureFlag(
"require-connectivity-check", true,
- List.of("arnej"), "2021-06-03", "2021-09-01",
+ List.of("arnej"), "2021-06-03", "2021-12-01",
"Require that config-sentinel connectivity check passes with good quality before starting services",
"Takes effect on next restart",
ZONE_ID, APPLICATION_ID);
- public static final UnboundBooleanFlag THROW_EXCEPTION_IF_RESOURCE_LIMITS_SPECIFIED = defineFeatureFlag(
- "throw-exception-if-resource-limits-specified", false,
- List.of("hmusum"), "2021-06-07", "2021-08-07",
- "Whether to throw an exception in hosted Vespa if the application specifies resource limits in services.xml",
- "Takes effect on next deployment through controller",
- APPLICATION_ID);
-
- public static final UnboundBooleanFlag LOAD_LOCAL_SESSIONS_WHEN_BOOTSTRAPPING = defineFeatureFlag(
- "load-local-sessions-when-bootstrapping", true,
- List.of("hmusum"), "2021-06-15", "2021-08-15",
- "Whether to load local sessions when bootstrapping config server",
- "Takes effect on restart of config server");
-
- public static final UnboundBooleanFlag DRY_RUN_ONNX_ON_SETUP = defineFeatureFlag(
- "dry-run-onnx-on-setup", false,
- List.of("baldersheim"), "2021-06-23", "2021-09-01",
- "Whether to dry run onnx models on setup for better error checking",
- "Takes effect on next internal redeployment",
- APPLICATION_ID);
-
public static final UnboundListFlag<String> DEFER_APPLICATION_ENCRYPTION = defineListFlag(
"defer-application-encryption", List.of(), String.class,
- List.of("mpolden", "hakonhall"), "2021-06-23", "2021-10-01",
+ List.of("mpolden", "hakonhall"), "2021-06-23", "2021-11-01",
"List of applications where encryption of their host should be deferred",
"Takes effect on next run of HostEncrypter");
- public static final UnboundBooleanFlag PODMAN3 = defineFeatureFlag(
- "podman3", false,
- List.of("mpolden"), "2021-07-05", "2021-09-01",
- "Whether to use Podman 3 on supported hosts",
- "Takes effect on host-admin restart");
+ public static final UnboundDoubleFlag MIN_NODE_RATIO_PER_GROUP = defineDoubleFlag(
+ "min-node-ratio-per-group", 0.0,
+ List.of("geirst", "vekterli"), "2021-07-16", "2021-12-01",
+ "Minimum ratio of nodes that have to be available (i.e. not Down) in any hierarchic content cluster group for the group to be Up",
+ "Takes effect at redeployment",
+ ZONE_ID, APPLICATION_ID);
+
+ public static final UnboundListFlag<String> ALLOWED_SERVICE_VIEW_APIS = defineListFlag(
+ "allowed-service-view-apis", List.of("state/v1/"), String.class,
+ List.of("mortent"), "2021-08-05", "2021-11-01",
+ "Apis allowed to proxy through the service view api",
+ "Takes effect immediately");
+
+ public static final UnboundBooleanFlag SEPARATE_TENANT_IAM_ROLES = defineFeatureFlag(
+ "separate-tenant-iam-roles", false,
+ List.of("mortent"), "2021-08-12", "2021-11-01",
+ "Create separate iam roles for tenant",
+ "Takes effect on redeploy",
+ TENANT_ID);
+
+ public static final UnboundIntFlag METRICSPROXY_NUM_THREADS = defineIntFlag(
+ "metricsproxy-num-threads", 2,
+ List.of("balder"), "2021-09-01", "2021-11-01",
+ "Number of threads for metrics proxy",
+ "Takes effect at redeployment",
+ ZONE_ID, APPLICATION_ID);
+
+ public static final UnboundBooleanFlag NEW_LOCATION_BROKER_LOGIC = defineFeatureFlag(
+ "new-location-broker-logic", true,
+ List.of("arnej"), "2021-09-07", "2021-12-31",
+ "Use new implementation of internal logic in service location broker",
+ "Takes effect immediately",
+ ZONE_ID, APPLICATION_ID);
+
+ public static final UnboundBooleanFlag ENABLED_HORIZON_DASHBOARD = defineFeatureFlag(
+ "enabled-horizon-dashboard", false,
+ List.of("olaa"), "2021-09-13", "2021-12-31",
+ "Enable Horizon dashboard",
+ "Takes effect immediately",
+ TENANT_ID, CONSOLE_USER_EMAIL
+ );
+
+ public static final UnboundBooleanFlag ENABLE_ONPREM_TENANT_S3_ARCHIVE = defineFeatureFlag(
+ "enable-onprem-tenant-s3-archive", false,
+ List.of("bjorncs"), "2021-09-14", "2021-12-31",
+ "Enable tenant S3 buckets in cd/main. Must be set on controller cluster only.",
+ "Takes effect immediately",
+ ZONE_ID, TENANT_ID
+ );
+
+ public static final UnboundBooleanFlag USE_APPLICATION_LOCK_IN_MAINTENANCE_DEPLOYMENT = defineFeatureFlag(
+ "use-application-lock-in-maintenance-deployment", true,
+ List.of("hmusum"), "2021-09-16", "2021-10-16",
+ "Whether to use application node repository lock when doing maintenance deployment.",
+ "Takes effect immediately",
+ APPLICATION_ID
+ );
+
+ public static final UnboundBooleanFlag ENABLE_TENANT_DEVELOPER_ROLE = defineFeatureFlag(
+ "enable-tenant-developer-role", false,
+ List.of("bjorncs"), "2021-09-23", "2021-12-31",
+ "Enable tenant developer Athenz role in cd/main. Must be set on controller cluster only.",
+ "Takes effect immediately",
+ TENANT_ID
+ );
+
+ public static final UnboundIntFlag MAX_CONNECTION_LIFE_IN_HOSTED = defineIntFlag(
+ "max-connection-life-in-hosted", 45,
+ List.of("bjorncs"), "2021-09-30", "2021-12-31",
+ "Max connection life for connections to jdisc endpoints in hosted",
+ "Takes effect at redeployment",
+ APPLICATION_ID);
+
+ public static final UnboundBooleanFlag ENABLE_ROUTING_REUSE_PORT = defineFeatureFlag(
+ "enable-routing-reuse-port", false,
+ List.of("mortent"), "2021-09-29", "2021-12-31",
+ "Enable reuse port in routing configuration",
+ "Takes effect on container restart",
+ HOSTNAME
+ );
+
+ public static final UnboundBooleanFlag ENABLE_TENANT_OPERATOR_ROLE = defineFeatureFlag(
+ "enable-tenant-operator-role", false,
+ List.of("bjorncs"), "2021-09-29", "2021-12-31",
+ "Enable tenant specific operator roles in public systems. For controllers only.",
+ "Takes effect on subsequent maintainer invocation",
+ TENANT_ID
+ );
+
+ public static final UnboundIntFlag DISTRIBUTOR_MERGE_BUSY_WAIT = defineIntFlag(
+ "distributor-merge-busy-wait", 10,
+ List.of("geirst", "vekterli"), "2021-10-04", "2021-12-31",
+ "Number of seconds that scheduling of new merge operations in the distributor should be inhibited " +
+ "towards a content node that has indicated merge busy",
+ "Takes effect at redeploy",
+ ZONE_ID, APPLICATION_ID);
/** WARNING: public for testing: All flags should be defined in {@link Flags}. */
public static UnboundBooleanFlag defineFeatureFlag(String flagId, boolean defaultValue, List<String> owners,
@@ -411,8 +440,8 @@ public class Flags {
*
* <p>NOT thread-safe. Tests using this cannot run in parallel.
*/
- public static Replacer clearFlagsForTesting() {
- return new Replacer();
+ public static Replacer clearFlagsForTesting(FlagId... flagsToKeep) {
+ return new Replacer(flagsToKeep);
}
public static class Replacer implements AutoCloseable {
@@ -420,10 +449,11 @@ public class Flags {
private final TreeMap<FlagId, FlagDefinition> savedFlags;
- private Replacer() {
+ private Replacer(FlagId... flagsToKeep) {
verifyAndSetFlagsCleared(true);
this.savedFlags = Flags.flags;
Flags.flags = new TreeMap<>();
+ List.of(flagsToKeep).forEach(id -> Flags.flags.put(id, savedFlags.get(id)));
}
@Override
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/InMemoryFlagSource.java b/flags/src/main/java/com/yahoo/vespa/flags/InMemoryFlagSource.java
index 3f3ab93009e..9a69adfc1a6 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/InMemoryFlagSource.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/InMemoryFlagSource.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import java.util.List;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/IntFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/IntFlag.java
index 94a6e9b6e15..689ceb9fe24 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/IntFlag.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/IntFlag.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import javax.annotation.concurrent.Immutable;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/JacksonArraySerializer.java b/flags/src/main/java/com/yahoo/vespa/flags/JacksonArraySerializer.java
index 3c509703668..5e9d04d98af 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/JacksonArraySerializer.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/JacksonArraySerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import com.fasterxml.jackson.databind.JavaType;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/JacksonFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/JacksonFlag.java
index 007110f077d..ec3953be931 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/JacksonFlag.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/JacksonFlag.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import javax.annotation.concurrent.Immutable;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/JacksonSerializer.java b/flags/src/main/java/com/yahoo/vespa/flags/JacksonSerializer.java
index b6a4c9b87c6..f677a88bccd 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/JacksonSerializer.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/JacksonSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
/**
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/JsonNodeRawFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/JsonNodeRawFlag.java
index ec49c1b0eff..753f19a44f6 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/JsonNodeRawFlag.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/JsonNodeRawFlag.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import com.fasterxml.jackson.databind.JavaType;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/ListFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/ListFlag.java
index 4c7e9683833..be7d9429858 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/ListFlag.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/ListFlag.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import javax.annotation.concurrent.Immutable;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/LongFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/LongFlag.java
index 1242d05c290..b8b38ce1ffd 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/LongFlag.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/LongFlag.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import javax.annotation.concurrent.Immutable;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/OrderedFlagSource.java b/flags/src/main/java/com/yahoo/vespa/flags/OrderedFlagSource.java
index 1c6e113f489..855e388d69a 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/OrderedFlagSource.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/OrderedFlagSource.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import java.util.Arrays;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java b/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java
index cccd75fe7ae..76ae5b16fe7 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import com.yahoo.vespa.flags.custom.ClusterCapacity;
@@ -169,6 +169,13 @@ public class PermanentFlags {
APPLICATION_ID
);
+ public static final UnboundStringFlag ENDPOINT_CERTIFICATE_ALGORITHM = defineStringFlag(
+ "endpoint-certificate-algorithm", "",
+ // Acceptable values are: "rsa_2048", "rsa_4096", "ecdsa_p256"
+ "Selects algorithm used for an applications endpoint certificate, or use provider default if blank",
+ "Takes effect when a new endpoint certificate is requested (first deployment of new application/instance)",
+ APPLICATION_ID);
+
public static final UnboundDoubleFlag RESOURCE_LIMIT_DISK = defineDoubleFlag(
"resource-limit-disk", 0.8,
"Resource limit (between 0.0 and 1.0) for disk used by cluster controller for when to block feed",
@@ -183,6 +190,19 @@ public class PermanentFlags {
APPLICATION_ID
);
+ public static final UnboundListFlag<String> LOGCTL_OVERRIDE = defineListFlag(
+ "logctl-override", List.of(), String.class,
+ "Run vespa-logctl statements on container startup. Should be on the form <service>:<component> <level>=on",
+ "Takes effect on container restart",
+ APPLICATION_ID, HOSTNAME
+ );
+
+ public static final UnboundStringFlag CONFIG_PROXY_JVM_ARGS = defineStringFlag(
+ "config-proxy-jvm-args", "",
+ "Sets jvm args for config proxy (added at the end of startup command, will override existing ones)",
+ "Takes effect on restart of Docker container",
+ ZONE_ID, APPLICATION_ID);
+
private PermanentFlags() {}
private static UnboundBooleanFlag defineFeatureFlag(
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/RawFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/RawFlag.java
index 2308659470e..4475e9e1238 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/RawFlag.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/RawFlag.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import com.fasterxml.jackson.databind.JsonNode;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/Serializer.java b/flags/src/main/java/com/yahoo/vespa/flags/Serializer.java
index 3569b10c8f4..0aede4bb657 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/Serializer.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/Serializer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
/**
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/SimpleFlagSerializer.java b/flags/src/main/java/com/yahoo/vespa/flags/SimpleFlagSerializer.java
index 2340588f54a..2b91cf7d1d1 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/SimpleFlagSerializer.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/SimpleFlagSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import com.fasterxml.jackson.databind.JsonNode;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/StringFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/StringFlag.java
index 33391f43d80..f1b6784921d 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/StringFlag.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/StringFlag.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import javax.annotation.concurrent.Immutable;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/UnboundBooleanFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/UnboundBooleanFlag.java
index c228364434c..17f8328a67e 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/UnboundBooleanFlag.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/UnboundBooleanFlag.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import com.fasterxml.jackson.databind.JsonNode;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/UnboundDoubleFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/UnboundDoubleFlag.java
index 84abaa01608..6b6911f0357 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/UnboundDoubleFlag.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/UnboundDoubleFlag.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import com.fasterxml.jackson.databind.JsonNode;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/UnboundFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/UnboundFlag.java
index 49335946a88..d2d643e79b2 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/UnboundFlag.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/UnboundFlag.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
/**
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/UnboundFlagImpl.java b/flags/src/main/java/com/yahoo/vespa/flags/UnboundFlagImpl.java
index a2eb12b64b2..a50ea18cda2 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/UnboundFlagImpl.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/UnboundFlagImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
/**
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/UnboundIntFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/UnboundIntFlag.java
index 01b660fe625..1f7c0206ee6 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/UnboundIntFlag.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/UnboundIntFlag.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import com.fasterxml.jackson.databind.JsonNode;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/UnboundJacksonFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/UnboundJacksonFlag.java
index 1cd303d1ede..21680e7d75b 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/UnboundJacksonFlag.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/UnboundJacksonFlag.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import javax.annotation.concurrent.Immutable;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/UnboundListFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/UnboundListFlag.java
index a2230171454..624f23dea7d 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/UnboundListFlag.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/UnboundListFlag.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import javax.annotation.concurrent.Immutable;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/UnboundLongFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/UnboundLongFlag.java
index 732a9073fc8..590d7958c0b 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/UnboundLongFlag.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/UnboundLongFlag.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import com.fasterxml.jackson.databind.JsonNode;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/UnboundStringFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/UnboundStringFlag.java
index 67c4bceb3e9..ae4e2269ccb 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/UnboundStringFlag.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/UnboundStringFlag.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import com.fasterxml.jackson.databind.JsonNode;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/custom/HostResources.java b/flags/src/main/java/com/yahoo/vespa/flags/custom/HostResources.java
index 129e1020b04..a4e25288d1d 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/custom/HostResources.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/custom/HostResources.java
@@ -2,10 +2,12 @@
package com.yahoo.vespa.flags.custom;
import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.Objects;
+import java.util.Optional;
import java.util.Set;
/**
@@ -18,19 +20,18 @@ import java.util.Set;
public class HostResources {
private static final Set<String> validDiskSpeeds = Set.of("slow", "fast");
private static final Set<String> validStorageTypes = Set.of("remote", "local");
+ private static final Set<String> validClusterTypes = Set.of("container", "content", "combined", "admin");
private final double vcpu;
-
private final double memoryGb;
-
private final double diskGb;
-
private final double bandwidthGbps;
private final String diskSpeed;
-
private final String storageType;
+ private final Optional<String> clusterType;
+
private final int containers;
@JsonCreator
@@ -40,6 +41,7 @@ public class HostResources {
@JsonProperty("bandwidthGbps") Double bandwidthGbps,
@JsonProperty("diskSpeed") String diskSpeed,
@JsonProperty("storageType") String storageType,
+ @JsonProperty("clusterType") String clusterType,
@JsonProperty("containers") Integer containers) {
this.vcpu = requirePositive("vcpu", vcpu);
this.memoryGb = requirePositive("memoryGb", memoryGb);
@@ -47,6 +49,7 @@ public class HostResources {
this.bandwidthGbps = requirePositive("bandwidthGbps", bandwidthGbps);
this.diskSpeed = validateEnum("diskSpeed", validDiskSpeeds, diskSpeed);
this.storageType = validateEnum("storageType", validStorageTypes, storageType);
+ this.clusterType = Optional.ofNullable(clusterType).map(cType -> validateEnum("clusterType", validClusterTypes, cType));
this.containers = requirePositive("containers", containers);
}
@@ -68,9 +71,19 @@ public class HostResources {
@JsonProperty("storageType")
public String storageType() { return storageType; }
+ @JsonProperty("clusterType")
+ public String clusterTypeOrNull() { return clusterType.orElse(null); }
+
+ @JsonIgnore
+ public Optional<String> clusterType() { return clusterType; }
+
@JsonProperty("containers")
public int containers() { return containers; }
+ public boolean satisfiesClusterType(String clusterType) {
+ return this.clusterType.map(clusterType::equalsIgnoreCase).orElse(true);
+ }
+
private static double requirePositive(String name, Double value) {
requireNonNull(name, value);
if (value <= 0)
@@ -106,6 +119,7 @@ public class HostResources {
", bandwidthGbps=" + bandwidthGbps +
", diskSpeed='" + diskSpeed + '\'' +
", storageType='" + storageType + '\'' +
+ ", clusterType='" + clusterType + '\'' +
", containers=" + containers +
'}';
}
@@ -121,11 +135,12 @@ public class HostResources {
Double.compare(resources.bandwidthGbps, bandwidthGbps) == 0 &&
diskSpeed.equals(resources.diskSpeed) &&
storageType.equals(resources.storageType) &&
+ clusterType.equals(resources.clusterType) &&
containers == resources.containers;
}
@Override
public int hashCode() {
- return Objects.hash(vcpu, memoryGb, diskGb, bandwidthGbps, diskSpeed, storageType, containers);
+ return Objects.hash(vcpu, memoryGb, diskGb, bandwidthGbps, diskSpeed, storageType, clusterType, containers);
}
}
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/custom/SharedHost.java b/flags/src/main/java/com/yahoo/vespa/flags/custom/SharedHost.java
index c952161cf72..2311c7cbf40 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/custom/SharedHost.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/custom/SharedHost.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. 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;
@@ -52,8 +52,8 @@ public class SharedHost {
}
@JsonIgnore
- public boolean isEnabled() {
- return resources.size() > 0;
+ public boolean isEnabled(String clusterType) {
+ return resources.stream().anyMatch(hr -> hr.satisfiesClusterType(clusterType));
}
@JsonIgnore
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/file/FlagDbFile.java b/flags/src/main/java/com/yahoo/vespa/flags/file/FlagDbFile.java
index 6976654a744..0b931aa7fa6 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/file/FlagDbFile.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/file/FlagDbFile.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags.file;
import java.util.logging.Level;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/file/package-info.java b/flags/src/main/java/com/yahoo/vespa/flags/file/package-info.java
index 27ad44f938e..31a22c371fd 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/file/package-info.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/file/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.flags.file;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/json/Condition.java b/flags/src/main/java/com/yahoo/vespa/flags/json/Condition.java
index 46961fbd8cc..f73e0033773 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/json/Condition.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/json/Condition.java
@@ -52,6 +52,16 @@ public interface Condition extends Predicate<FetchVector> {
public FetchVector.Dimension dimension() { return dimension; }
public List<String> values() { return values; }
public Optional<String> predicate() { return predicate; }
+
+ public Condition createAs(Condition.Type type) {
+ switch (type) {
+ case WHITELIST: return WhitelistCondition.create(this);
+ case BLACKLIST: return BlacklistCondition.create(this);
+ case RELATIONAL: return RelationalCondition.create(this);
+ }
+
+ throw new IllegalArgumentException("Unknown type '" + type + "'");
+ }
}
static Condition fromWire(WireCondition wireCondition) {
@@ -70,14 +80,14 @@ public interface Condition extends Predicate<FetchVector> {
params.withPredicate(wireCondition.predicate);
}
- switch (type) {
- case WHITELIST: return WhitelistCondition.create(params);
- case BLACKLIST: return BlacklistCondition.create(params);
- case RELATIONAL: return RelationalCondition.create(params);
- }
-
- throw new IllegalArgumentException("Unknown type '" + type + "'");
+ return params.createAs(type);
}
+ Condition.Type type();
+
+ FetchVector.Dimension dimension();
+
+ CreateParams toCreateParams();
+
WireCondition toWire();
}
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/json/DimensionHelper.java b/flags/src/main/java/com/yahoo/vespa/flags/json/DimensionHelper.java
index b18c0c43bbc..c2a7ce56054 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/json/DimensionHelper.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/json/DimensionHelper.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags.json;
import com.yahoo.vespa.flags.FetchVector;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/json/FetchVectorHelper.java b/flags/src/main/java/com/yahoo/vespa/flags/json/FetchVectorHelper.java
index d92b7a738dc..0b19be21b76 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/json/FetchVectorHelper.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/json/FetchVectorHelper.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags.json;
import com.yahoo.vespa.flags.FetchVector;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/json/FlagData.java b/flags/src/main/java/com/yahoo/vespa/flags/json/FlagData.java
index c4079380a8c..ddcf53aa5a4 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/json/FlagData.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/json/FlagData.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags.json;
import com.fasterxml.jackson.databind.JsonNode;
@@ -14,9 +14,6 @@ import com.yahoo.vespa.flags.json.wire.WireRule;
import javax.annotation.concurrent.Immutable;
import java.io.InputStream;
import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@@ -35,16 +32,16 @@ public class FlagData {
private final FetchVector defaultFetchVector;
public FlagData(FlagId id) {
- this(id, new FetchVector(), Collections.emptyList());
+ this(id, new FetchVector(), List.of());
}
public FlagData(FlagId id, FetchVector defaultFetchVector, Rule... rules) {
- this(id, defaultFetchVector, Arrays.asList(rules));
+ this(id, defaultFetchVector, List.of(rules));
}
public FlagData(FlagId id, FetchVector defaultFetchVector, List<Rule> rules) {
this.id = id;
- this.rules = Collections.unmodifiableList(new ArrayList<>(rules));
+ this.rules = List.copyOf(rules);
this.defaultFetchVector = defaultFetchVector;
}
@@ -52,6 +49,10 @@ public class FlagData {
return id;
}
+ public List<Rule> rules() {
+ return rules;
+ }
+
public boolean isEmpty() { return rules.isEmpty() && defaultFetchVector.isEmpty(); }
public Optional<RawFlag> resolve(FetchVector fetchVector) {
@@ -136,7 +137,7 @@ public class FlagData {
}
private static List<Rule> rulesFromWire(List<WireRule> wireRules) {
- if (wireRules == null) return Collections.emptyList();
+ if (wireRules == null) return List.of();
return wireRules.stream().map(Rule::fromWire).collect(Collectors.toList());
}
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/json/ListCondition.java b/flags/src/main/java/com/yahoo/vespa/flags/json/ListCondition.java
index c2c76529833..136857bea5f 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/json/ListCondition.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/json/ListCondition.java
@@ -27,6 +27,21 @@ public abstract class ListCondition implements Condition {
}
@Override
+ public Type type() {
+ return type;
+ }
+
+ @Override
+ public FetchVector.Dimension dimension() {
+ return dimension;
+ }
+
+ @Override
+ public CreateParams toCreateParams() {
+ return new CreateParams(dimension).withValues(values);
+ }
+
+ @Override
public boolean test(FetchVector fetchVector) {
boolean listContainsValue = fetchVector.getValue(dimension).map(values::contains).orElse(false);
return isWhitelist == listContainsValue;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/json/RelationalCondition.java b/flags/src/main/java/com/yahoo/vespa/flags/json/RelationalCondition.java
index db2f0a3a197..4ed3e49029f 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/json/RelationalCondition.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/json/RelationalCondition.java
@@ -48,6 +48,21 @@ public class RelationalCondition implements Condition {
}
@Override
+ public Type type() {
+ return Type.RELATIONAL;
+ }
+
+ @Override
+ public FetchVector.Dimension dimension() {
+ return dimension;
+ }
+
+ @Override
+ public CreateParams toCreateParams() {
+ return new CreateParams(dimension).withPredicate(relationalPredicate.toWire());
+ }
+
+ @Override
public boolean test(FetchVector fetchVector) {
return fetchVector.getValue(dimension).map(predicate::test).orElse(false);
}
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/json/Rule.java b/flags/src/main/java/com/yahoo/vespa/flags/json/Rule.java
index b7d60889419..d7cc5b4ddb2 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/json/Rule.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/json/Rule.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags.json;
import com.yahoo.vespa.flags.FetchVector;
@@ -6,7 +6,6 @@ import com.yahoo.vespa.flags.JsonNodeRawFlag;
import com.yahoo.vespa.flags.RawFlag;
import com.yahoo.vespa.flags.json.wire.WireRule;
-import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
@@ -20,18 +19,32 @@ public class Rule {
private final Optional<RawFlag> valueToApply;
public Rule(Optional<RawFlag> valueToApply, Condition... andConditions) {
- this(valueToApply, Arrays.asList(andConditions));
+ this(valueToApply, List.of(andConditions));
}
public Rule(Optional<RawFlag> valueToApply, List<Condition> andConditions) {
- this.andConditions = andConditions;
+ this.andConditions = List.copyOf(andConditions);
this.valueToApply = valueToApply;
}
+ public List<Condition> conditions() {
+ return andConditions;
+ }
+
+ /** Returns true if all the conditions satisfy the given fetch vector */
public boolean match(FetchVector fetchVector) {
return andConditions.stream().allMatch(condition -> condition.test(fetchVector));
}
+ /**
+ * Returns true if all the conditions on dimensions set in the fetch vector are satisfied.
+ * Conditions on dimensions not specified in the given fetch vector are ignored.
+ */
+ public boolean partialMatch(FetchVector fetchVector) {
+ return andConditions.stream()
+ .allMatch(condition -> !fetchVector.hasDimension(condition.dimension()) || condition.test(fetchVector));
+ }
+
public Optional<RawFlag> getValueToApply() {
return valueToApply;
}
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/json/package-info.java b/flags/src/main/java/com/yahoo/vespa/flags/json/package-info.java
index 6fbe3d587c5..fe0c9bf293f 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/json/package-info.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/json/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.flags.json;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/json/wire/WireCondition.java b/flags/src/main/java/com/yahoo/vespa/flags/json/wire/WireCondition.java
index 1729444fcf2..4282d18ba0d 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/json/wire/WireCondition.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/json/wire/WireCondition.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags.json.wire;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/json/wire/WireFlagData.java b/flags/src/main/java/com/yahoo/vespa/flags/json/wire/WireFlagData.java
index 8e21de3e5ad..f714d09a560 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/json/wire/WireFlagData.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/json/wire/WireFlagData.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags.json.wire;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/json/wire/WireFlagDataList.java b/flags/src/main/java/com/yahoo/vespa/flags/json/wire/WireFlagDataList.java
index 60b35d9b69e..ffa07e0bd87 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/json/wire/WireFlagDataList.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/json/wire/WireFlagDataList.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags.json.wire;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/json/wire/WireRule.java b/flags/src/main/java/com/yahoo/vespa/flags/json/wire/WireRule.java
index 38619e87488..c24007a9757 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/json/wire/WireRule.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/json/wire/WireRule.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags.json.wire;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/json/wire/package-info.java b/flags/src/main/java/com/yahoo/vespa/flags/json/wire/package-info.java
index 408908c312e..37d31a97a0f 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/json/wire/package-info.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/json/wire/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.flags.json.wire;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/package-info.java b/flags/src/main/java/com/yahoo/vespa/flags/package-info.java
index 42b9b057b29..f9a34fc525c 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/package-info.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.flags;
diff --git a/flags/src/test/java/com/yahoo/vespa/flags/FlagsTest.java b/flags/src/test/java/com/yahoo/vespa/flags/FlagsTest.java
index 48ed318af41..3c022c1ddd2 100644
--- a/flags/src/test/java/com/yahoo/vespa/flags/FlagsTest.java
+++ b/flags/src/test/java/com/yahoo/vespa/flags/FlagsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/flags/src/test/java/com/yahoo/vespa/flags/OrderedFlagSourceTest.java b/flags/src/test/java/com/yahoo/vespa/flags/OrderedFlagSourceTest.java
index b30f217f79c..dfd676b6472 100644
--- a/flags/src/test/java/com/yahoo/vespa/flags/OrderedFlagSourceTest.java
+++ b/flags/src/test/java/com/yahoo/vespa/flags/OrderedFlagSourceTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import org.junit.Test;
diff --git a/flags/src/test/java/com/yahoo/vespa/flags/PermanentFlagsTest.java b/flags/src/test/java/com/yahoo/vespa/flags/PermanentFlagsTest.java
index 956048f6e24..a4d8ecd0f29 100644
--- a/flags/src/test/java/com/yahoo/vespa/flags/PermanentFlagsTest.java
+++ b/flags/src/test/java/com/yahoo/vespa/flags/PermanentFlagsTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags;
import com.yahoo.vespa.flags.custom.HostResources;
@@ -17,7 +17,7 @@ class PermanentFlagsTest {
public void testSharedHostFlag() {
SharedHost sharedHost = new SharedHost(List.of(new HostResources(
4.0, 16.0, 50.0, 0.3,
- "fast", "local",
+ "fast", "local", "admin",
10)),
null);
testGeneric(PermanentFlags.SHARED_HOST, sharedHost);
diff --git a/flags/src/test/java/com/yahoo/vespa/flags/custom/ClusterCapacityTest.java b/flags/src/test/java/com/yahoo/vespa/flags/custom/ClusterCapacityTest.java
index 0258b562897..066955ee369 100644
--- a/flags/src/test/java/com/yahoo/vespa/flags/custom/ClusterCapacityTest.java
+++ b/flags/src/test/java/com/yahoo/vespa/flags/custom/ClusterCapacityTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. 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.databind.ObjectMapper;
diff --git a/flags/src/test/java/com/yahoo/vespa/flags/custom/SharedHostTest.java b/flags/src/test/java/com/yahoo/vespa/flags/custom/SharedHostTest.java
index f0a11f244a4..7bf39b884ef 100644
--- a/flags/src/test/java/com/yahoo/vespa/flags/custom/SharedHostTest.java
+++ b/flags/src/test/java/com/yahoo/vespa/flags/custom/SharedHostTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. 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.databind.ObjectMapper;
@@ -12,8 +12,8 @@ import static org.junit.Assert.assertEquals;
public class SharedHostTest {
@Test
public void serialization() throws IOException {
- verifySerialization(new SharedHost(List.of(new HostResources(1.0, 2.0, 3.0, 4.0, "fast", "remote", 5)), 6));
- verifySerialization(new SharedHost(List.of(new HostResources(1.0, 2.0, 3.0, 4.0, "fast", "remote", 5)), null));
+ verifySerialization(new SharedHost(List.of(new HostResources(1.0, 2.0, 3.0, 4.0, "fast", "remote", "container", 5)), 6));
+ verifySerialization(new SharedHost(List.of(new HostResources(1.0, 2.0, 3.0, 4.0, "fast", "remote", "admin", 5)), null));
}
private void verifySerialization(SharedHost sharedHost) throws IOException {
diff --git a/flags/src/test/java/com/yahoo/vespa/flags/file/FlagDbFileTest.java b/flags/src/test/java/com/yahoo/vespa/flags/file/FlagDbFileTest.java
index fd1a71e4b4a..f2d389188f9 100644
--- a/flags/src/test/java/com/yahoo/vespa/flags/file/FlagDbFileTest.java
+++ b/flags/src/test/java/com/yahoo/vespa/flags/file/FlagDbFileTest.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags.file;
import com.yahoo.vespa.flags.FetchVector;
diff --git a/flags/src/test/java/com/yahoo/vespa/flags/json/ConditionTest.java b/flags/src/test/java/com/yahoo/vespa/flags/json/ConditionTest.java
index b41da9f567c..677efd0fe1c 100644
--- a/flags/src/test/java/com/yahoo/vespa/flags/json/ConditionTest.java
+++ b/flags/src/test/java/com/yahoo/vespa/flags/json/ConditionTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags.json;
import com.yahoo.vespa.flags.FetchVector;
diff --git a/flags/src/test/java/com/yahoo/vespa/flags/json/FlagDataTest.java b/flags/src/test/java/com/yahoo/vespa/flags/json/FlagDataTest.java
index 7f939d10bb3..5856cf99558 100644
--- a/flags/src/test/java/com/yahoo/vespa/flags/json/FlagDataTest.java
+++ b/flags/src/test/java/com/yahoo/vespa/flags/json/FlagDataTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags.json;
import com.yahoo.vespa.flags.FetchVector;
diff --git a/flags/src/test/java/com/yahoo/vespa/flags/json/SerializationTest.java b/flags/src/test/java/com/yahoo/vespa/flags/json/SerializationTest.java
index 8326b14fcbf..35478768924 100644
--- a/flags/src/test/java/com/yahoo/vespa/flags/json/SerializationTest.java
+++ b/flags/src/test/java/com/yahoo/vespa/flags/json/SerializationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.flags.json;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/fnet/CMakeLists.txt b/fnet/CMakeLists.txt
index 142c19fca3e..f73db1f34f8 100644
--- a/fnet/CMakeLists.txt
+++ b/fnet/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
@@ -29,4 +29,5 @@ vespa_define_module(
src/tests/sync_execute
src/tests/thread_selection
src/tests/time
+ src/tests/transport_debugger
)
diff --git a/fnet/ethereal/Makefile.am b/fnet/ethereal/Makefile.am
index 69951b02e2a..cfe983b65a1 100644
--- a/fnet/ethereal/Makefile.am
+++ b/fnet/ethereal/Makefile.am
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Makefile.am
# Automake file for plugin
diff --git a/fnet/ethereal/Makefile.nmake b/fnet/ethereal/Makefile.nmake
index 2d07f9e349f..4e081253d6f 100644
--- a/fnet/ethereal/Makefile.nmake
+++ b/fnet/ethereal/Makefile.nmake
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
include ..\..\config.nmake
############### no need to modify below this line #########
diff --git a/fnet/ethereal/moduleinfo.h b/fnet/ethereal/moduleinfo.h
index 4430ccf0bd9..8bcee1666b2 100644
--- a/fnet/ethereal/moduleinfo.h
+++ b/fnet/ethereal/moduleinfo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/* Included *after* config.h, in order to re-define these macros */
#ifdef PACKAGE
diff --git a/fnet/ethereal/packet-fnetrpc.c b/fnet/ethereal/packet-fnetrpc.c
index 5f071836e30..5d8041d6fef 100644
--- a/fnet/ethereal/packet-fnetrpc.c
+++ b/fnet/ethereal/packet-fnetrpc.c
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/* packet-fnetrpc.c */
#ifdef HAVE_CONFIG_H
diff --git a/fnet/index.html b/fnet/index.html
index cd9d3fa16b6..867d39ad7b0 100644
--- a/fnet/index.html
+++ b/fnet/index.html
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<html>
<title>FNET Home Page</title>
<body>
diff --git a/fnet/src/Doxyfile b/fnet/src/Doxyfile
index 1b5ce071efc..8e0f0232f35 100644
--- a/fnet/src/Doxyfile
+++ b/fnet/src/Doxyfile
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Doxyfile 1.2.15
# This file describes the settings to be used by the documentation system
diff --git a/fnet/src/examples/frt/rpc/CMakeLists.txt b/fnet/src/examples/frt/rpc/CMakeLists.txt
index 109284fa222..7cad990b090 100644
--- a/fnet/src/examples/frt/rpc/CMakeLists.txt
+++ b/fnet/src/examples/frt/rpc/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fnet_rpc_server_app
SOURCES
rpc_server.cpp
diff --git a/fnet/src/examples/frt/rpc/echo_client.cpp b/fnet/src/examples/frt/rpc/echo_client.cpp
index bb2ef66c6fa..61416fb06bd 100644
--- a/fnet/src/examples/frt/rpc/echo_client.cpp
+++ b/fnet/src/examples/frt/rpc/echo_client.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fnet/frt/supervisor.h>
#include <vespa/fnet/frt/target.h>
diff --git a/fnet/src/examples/frt/rpc/rpc_callback_client.cpp b/fnet/src/examples/frt/rpc/rpc_callback_client.cpp
index c63352d8f24..9d56db3fe0a 100644
--- a/fnet/src/examples/frt/rpc/rpc_callback_client.cpp
+++ b/fnet/src/examples/frt/rpc/rpc_callback_client.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fnet/frt/supervisor.h>
#include <vespa/fnet/frt/target.h>
diff --git a/fnet/src/examples/frt/rpc/rpc_callback_server.cpp b/fnet/src/examples/frt/rpc/rpc_callback_server.cpp
index 9832a59abad..49792ddb893 100644
--- a/fnet/src/examples/frt/rpc/rpc_callback_server.cpp
+++ b/fnet/src/examples/frt/rpc/rpc_callback_server.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fnet/frt/supervisor.h>
#include <vespa/fnet/frt/rpcrequest.h>
diff --git a/fnet/src/examples/frt/rpc/rpc_client.cpp b/fnet/src/examples/frt/rpc/rpc_client.cpp
index 1c634f4b704..6eb8758157c 100644
--- a/fnet/src/examples/frt/rpc/rpc_client.cpp
+++ b/fnet/src/examples/frt/rpc/rpc_client.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fnet/frt/supervisor.h>
#include <vespa/fnet/frt/target.h>
diff --git a/fnet/src/examples/frt/rpc/rpc_info.cpp b/fnet/src/examples/frt/rpc/rpc_info.cpp
index 0f8b8422241..53adf262e35 100644
--- a/fnet/src/examples/frt/rpc/rpc_info.cpp
+++ b/fnet/src/examples/frt/rpc/rpc_info.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fnet/frt/supervisor.h>
#include <vespa/fnet/frt/target.h>
diff --git a/fnet/src/examples/frt/rpc/rpc_invoke.cpp b/fnet/src/examples/frt/rpc/rpc_invoke.cpp
index d1f35429352..987d987e672 100644
--- a/fnet/src/examples/frt/rpc/rpc_invoke.cpp
+++ b/fnet/src/examples/frt/rpc/rpc_invoke.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fnet/frt/supervisor.h>
#include <vespa/fnet/frt/target.h>
diff --git a/fnet/src/examples/frt/rpc/rpc_proxy.cpp b/fnet/src/examples/frt/rpc/rpc_proxy.cpp
index 93076344ce2..5e63d675810 100644
--- a/fnet/src/examples/frt/rpc/rpc_proxy.cpp
+++ b/fnet/src/examples/frt/rpc/rpc_proxy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fnet/frt/supervisor.h>
#include <vespa/fnet/frt/rpcrequest.h>
diff --git a/fnet/src/examples/frt/rpc/rpc_server.cpp b/fnet/src/examples/frt/rpc/rpc_server.cpp
index 4333f182cc0..83f86ed50bf 100644
--- a/fnet/src/examples/frt/rpc/rpc_server.cpp
+++ b/fnet/src/examples/frt/rpc/rpc_server.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fnet/frt/supervisor.h>
#include <vespa/fnet/frt/rpcrequest.h>
diff --git a/fnet/src/examples/ping/CMakeLists.txt b/fnet/src/examples/ping/CMakeLists.txt
index b8ea10402a8..3ff547a0951 100644
--- a/fnet/src/examples/ping/CMakeLists.txt
+++ b/fnet/src/examples/ping/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fnet_pingserver_app
SOURCES
packets.cpp
diff --git a/fnet/src/examples/ping/packets.cpp b/fnet/src/examples/ping/packets.cpp
index 6aa54838c8b..fe2c5e36793 100644
--- a/fnet/src/examples/ping/packets.cpp
+++ b/fnet/src/examples/ping/packets.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "packets.h"
#include <vespa/fnet/databuffer.h>
diff --git a/fnet/src/examples/ping/packets.h b/fnet/src/examples/ping/packets.h
index b91a053723d..d196f3e4392 100644
--- a/fnet/src/examples/ping/packets.h
+++ b/fnet/src/examples/ping/packets.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/fnet/packet.h>
diff --git a/fnet/src/examples/ping/pingclient.cpp b/fnet/src/examples/ping/pingclient.cpp
index afd2475bfa0..d57a17d2f5d 100644
--- a/fnet/src/examples/ping/pingclient.cpp
+++ b/fnet/src/examples/ping/pingclient.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fnet/transport.h>
#include <vespa/fnet/simplepacketstreamer.h>
diff --git a/fnet/src/examples/ping/pingserver.cpp b/fnet/src/examples/ping/pingserver.cpp
index cb0ab02aa0d..6e8cc081d34 100644
--- a/fnet/src/examples/ping/pingserver.cpp
+++ b/fnet/src/examples/ping/pingserver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fnet/transport.h>
#include <vespa/fnet/signalshutdown.h>
diff --git a/fnet/src/examples/proxy/CMakeLists.txt b/fnet/src/examples/proxy/CMakeLists.txt
index 3ee8d6ba007..6c72c56d20b 100644
--- a/fnet/src/examples/proxy/CMakeLists.txt
+++ b/fnet/src/examples/proxy/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fnet_proxy_app
SOURCES
proxy.cpp
diff --git a/fnet/src/examples/proxy/proxy.cpp b/fnet/src/examples/proxy/proxy.cpp
index 062a0d52627..153b2499b93 100644
--- a/fnet/src/examples/proxy/proxy.cpp
+++ b/fnet/src/examples/proxy/proxy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fnet/transport.h>
#include <vespa/fnet/transport_thread.h>
diff --git a/fnet/src/examples/timeout/CMakeLists.txt b/fnet/src/examples/timeout/CMakeLists.txt
index bde4741d990..d1c5474513c 100644
--- a/fnet/src/examples/timeout/CMakeLists.txt
+++ b/fnet/src/examples/timeout/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fnet_timeout_app
SOURCES
timeout.cpp
diff --git a/fnet/src/examples/timeout/timeout.cpp b/fnet/src/examples/timeout/timeout.cpp
index b2f6c3a8e3c..725ab8ce53d 100644
--- a/fnet/src/examples/timeout/timeout.cpp
+++ b/fnet/src/examples/timeout/timeout.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fnet/transport.h>
#include <vespa/fnet/signalshutdown.h>
diff --git a/fnet/src/tests/connect/CMakeLists.txt b/fnet/src/tests/connect/CMakeLists.txt
index 35ff9131dff..9a47c9e6d83 100644
--- a/fnet/src/tests/connect/CMakeLists.txt
+++ b/fnet/src/tests/connect/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fnet_connect_test_app TEST
SOURCES
connect_test.cpp
diff --git a/fnet/src/tests/connect/connect_test.cpp b/fnet/src/tests/connect/connect_test.cpp
index bb2acdb141e..308981542db 100644
--- a/fnet/src/tests/connect/connect_test.cpp
+++ b/fnet/src/tests/connect/connect_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/testkit/time_bomb.h>
diff --git a/fnet/src/tests/connection_spread/CMakeLists.txt b/fnet/src/tests/connection_spread/CMakeLists.txt
index 96abd381fae..1d38e62f6a6 100644
--- a/fnet/src/tests/connection_spread/CMakeLists.txt
+++ b/fnet/src/tests/connection_spread/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fnet_connection_spread_test_app TEST
SOURCES
connection_spread_test.cpp
diff --git a/fnet/src/tests/connection_spread/connection_spread_test.cpp b/fnet/src/tests/connection_spread/connection_spread_test.cpp
index e8159f4dd4b..1d19bcb2401 100644
--- a/fnet/src/tests/connection_spread/connection_spread_test.cpp
+++ b/fnet/src/tests/connection_spread/connection_spread_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/fnet/transport.h>
#include <vespa/fnet/transport_thread.h>
diff --git a/fnet/src/tests/databuffer/CMakeLists.txt b/fnet/src/tests/databuffer/CMakeLists.txt
index 19ec97be7a2..2851dc9585e 100644
--- a/fnet/src/tests/databuffer/CMakeLists.txt
+++ b/fnet/src/tests/databuffer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fnet_databuffer_test_app TEST
SOURCES
databuffer.cpp
diff --git a/fnet/src/tests/databuffer/databuffer.cpp b/fnet/src/tests/databuffer/databuffer.cpp
index c5cfb544abd..eccef0418db 100644
--- a/fnet/src/tests/databuffer/databuffer.cpp
+++ b/fnet/src/tests/databuffer/databuffer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/fnet/databuffer.h>
#include <chrono>
diff --git a/fnet/src/tests/examples/CMakeLists.txt b/fnet/src/tests/examples/CMakeLists.txt
index 8a4eb12ad83..154c86c40bd 100644
--- a/fnet/src/tests/examples/CMakeLists.txt
+++ b/fnet/src/tests/examples/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fnet_examples_test_app TEST
SOURCES
examples_test.cpp
diff --git a/fnet/src/tests/examples/examples_test.cpp b/fnet/src/tests/examples/examples_test.cpp
index 2b19edf8b31..74271a7ef5c 100644
--- a/fnet/src/tests/examples/examples_test.cpp
+++ b/fnet/src/tests/examples/examples_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/child_process.h>
#include <vespa/vespalib/util/size_literals.h>
diff --git a/fnet/src/tests/frt/method_pt/CMakeLists.txt b/fnet/src/tests/frt/method_pt/CMakeLists.txt
index 6ec067a7cb4..f33fc6984dd 100644
--- a/fnet/src/tests/frt/method_pt/CMakeLists.txt
+++ b/fnet/src/tests/frt/method_pt/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fnet_method_pt_test_app TEST
SOURCES
method_pt.cpp
diff --git a/fnet/src/tests/frt/method_pt/method_pt.cpp b/fnet/src/tests/frt/method_pt/method_pt.cpp
index 450731fe1aa..3ce3c3062af 100644
--- a/fnet/src/tests/frt/method_pt/method_pt.cpp
+++ b/fnet/src/tests/frt/method_pt/method_pt.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/stringfmt.h>
#include <vespa/fnet/frt/supervisor.h>
diff --git a/fnet/src/tests/frt/parallel_rpc/CMakeLists.txt b/fnet/src/tests/frt/parallel_rpc/CMakeLists.txt
index 6e9a7b4cd74..dfd16e4be65 100644
--- a/fnet/src/tests/frt/parallel_rpc/CMakeLists.txt
+++ b/fnet/src/tests/frt/parallel_rpc/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fnet_parallel_rpc_test_app TEST
SOURCES
parallel_rpc_test.cpp
diff --git a/fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp b/fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp
index b03df359715..0fd5029c9b9 100644
--- a/fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp
+++ b/fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/fnet/frt/supervisor.h>
#include <vespa/fnet/frt/rpcrequest.h>
diff --git a/fnet/src/tests/frt/rpc/CMakeLists.txt b/fnet/src/tests/frt/rpc/CMakeLists.txt
index 6aa2e073e4e..f0155da4b49 100644
--- a/fnet/src/tests/frt/rpc/CMakeLists.txt
+++ b/fnet/src/tests/frt/rpc/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fnet_invoke_test_app TEST
SOURCES
invoke.cpp
diff --git a/fnet/src/tests/frt/rpc/detach_return_invoke.cpp b/fnet/src/tests/frt/rpc/detach_return_invoke.cpp
index 8d65c65f768..e3c238cf633 100644
--- a/fnet/src/tests/frt/rpc/detach_return_invoke.cpp
+++ b/fnet/src/tests/frt/rpc/detach_return_invoke.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/fnet/frt/supervisor.h>
#include <vespa/fnet/frt/target.h>
diff --git a/fnet/src/tests/frt/rpc/invoke.cpp b/fnet/src/tests/frt/rpc/invoke.cpp
index bd2f6fa9e1d..1fbd356b239 100644
--- a/fnet/src/tests/frt/rpc/invoke.cpp
+++ b/fnet/src/tests/frt/rpc/invoke.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/net/socket_spec.h>
#include <vespa/vespalib/util/benchmark_timer.h>
diff --git a/fnet/src/tests/frt/rpc/my_crypto_engine.hpp b/fnet/src/tests/frt/rpc/my_crypto_engine.hpp
index 51811f4f70c..83934c430b3 100644
--- a/fnet/src/tests/frt/rpc/my_crypto_engine.hpp
+++ b/fnet/src/tests/frt/rpc/my_crypto_engine.hpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/net/crypto_engine.h>
#include <vespa/vespalib/net/tls/tls_crypto_engine.h>
diff --git a/fnet/src/tests/frt/rpc/session.cpp b/fnet/src/tests/frt/rpc/session.cpp
index b96c881ba27..f05cf9dfafc 100644
--- a/fnet/src/tests/frt/rpc/session.cpp
+++ b/fnet/src/tests/frt/rpc/session.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/fnet/frt/supervisor.h>
diff --git a/fnet/src/tests/frt/rpc/sharedblob.cpp b/fnet/src/tests/frt/rpc/sharedblob.cpp
index 09297bbf1c3..90cfa63fbdb 100644
--- a/fnet/src/tests/frt/rpc/sharedblob.cpp
+++ b/fnet/src/tests/frt/rpc/sharedblob.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/fnet/frt/supervisor.h>
diff --git a/fnet/src/tests/frt/values/CMakeLists.txt b/fnet/src/tests/frt/values/CMakeLists.txt
index cff62008d0c..d8b6033670c 100644
--- a/fnet/src/tests/frt/values/CMakeLists.txt
+++ b/fnet/src/tests/frt/values/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fnet_values_test_app TEST
SOURCES
values_test.cpp
diff --git a/fnet/src/tests/frt/values/values_test.cpp b/fnet/src/tests/frt/values/values_test.cpp
index 3b36e8989c1..0d4781e6da4 100644
--- a/fnet/src/tests/frt/values/values_test.cpp
+++ b/fnet/src/tests/frt/values/values_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/fnet/frt/values.h>
#include <vespa/fnet/databuffer.h>
diff --git a/fnet/src/tests/info/CMakeLists.txt b/fnet/src/tests/info/CMakeLists.txt
index ce69d462d84..b9a244e85bd 100644
--- a/fnet/src/tests/info/CMakeLists.txt
+++ b/fnet/src/tests/info/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fnet_info_test_app TEST
SOURCES
info.cpp
diff --git a/fnet/src/tests/info/info.cpp b/fnet/src/tests/info/info.cpp
index d093ee1da06..f2299df839e 100644
--- a/fnet/src/tests/info/info.cpp
+++ b/fnet/src/tests/info/info.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/fnet/frt/supervisor.h>
#include <vespa/fnet/frt/rpcrequest.h>
diff --git a/fnet/src/tests/locking/CMakeLists.txt b/fnet/src/tests/locking/CMakeLists.txt
index 481a98b1d81..df04dae4831 100644
--- a/fnet/src/tests/locking/CMakeLists.txt
+++ b/fnet/src/tests/locking/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fnet_drainpackets_test_app TEST
SOURCES
drainpackets.cpp
diff --git a/fnet/src/tests/locking/castspeed.cpp b/fnet/src/tests/locking/castspeed.cpp
index 2f784e625be..87f9d532407 100644
--- a/fnet/src/tests/locking/castspeed.cpp
+++ b/fnet/src/tests/locking/castspeed.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <chrono>
diff --git a/fnet/src/tests/locking/drainpackets.cpp b/fnet/src/tests/locking/drainpackets.cpp
index 2d0ab6e2808..a74c14a914a 100644
--- a/fnet/src/tests/locking/drainpackets.cpp
+++ b/fnet/src/tests/locking/drainpackets.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/fnet/packetqueue.h>
#include <vespa/fnet/packet.h>
diff --git a/fnet/src/tests/locking/dummy.cpp b/fnet/src/tests/locking/dummy.cpp
index b381619eaab..185692e210d 100644
--- a/fnet/src/tests/locking/dummy.cpp
+++ b/fnet/src/tests/locking/dummy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dummy.h"
DummyObj::DummyObj() {}
diff --git a/fnet/src/tests/locking/dummy.h b/fnet/src/tests/locking/dummy.h
index 7471f7f28b7..6af51165f31 100644
--- a/fnet/src/tests/locking/dummy.h
+++ b/fnet/src/tests/locking/dummy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
class DummyObj
diff --git a/fnet/src/tests/locking/lockspeed.cpp b/fnet/src/tests/locking/lockspeed.cpp
index a3ab48edd22..458280133c2 100644
--- a/fnet/src/tests/locking/lockspeed.cpp
+++ b/fnet/src/tests/locking/lockspeed.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include "dummy.h"
#include <chrono>
diff --git a/fnet/src/tests/printstuff/CMakeLists.txt b/fnet/src/tests/printstuff/CMakeLists.txt
index 8039f107e3a..9139eb05c6e 100644
--- a/fnet/src/tests/printstuff/CMakeLists.txt
+++ b/fnet/src/tests/printstuff/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fnet_printstuff_test_app TEST
SOURCES
printstuff_test.cpp
diff --git a/fnet/src/tests/printstuff/printstuff_test.cpp b/fnet/src/tests/printstuff/printstuff_test.cpp
index ef2d5e95d78..a9621728c5a 100644
--- a/fnet/src/tests/printstuff/printstuff_test.cpp
+++ b/fnet/src/tests/printstuff/printstuff_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/fnet/frt/rpcrequest.h>
#include <vespa/fnet/packetqueue.h>
diff --git a/fnet/src/tests/scheduling/CMakeLists.txt b/fnet/src/tests/scheduling/CMakeLists.txt
index c442942e2f0..909f96afc96 100644
--- a/fnet/src/tests/scheduling/CMakeLists.txt
+++ b/fnet/src/tests/scheduling/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fnet_schedule_test_app TEST
SOURCES
schedule.cpp
diff --git a/fnet/src/tests/scheduling/schedule.cpp b/fnet/src/tests/scheduling/schedule.cpp
index 55fe4c16398..d2d1173ccbf 100644
--- a/fnet/src/tests/scheduling/schedule.cpp
+++ b/fnet/src/tests/scheduling/schedule.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/fnet/scheduler.h>
#include <vespa/fnet/task.h>
@@ -81,7 +81,7 @@ public:
TEST("schedule") {
_time = steady_time(vespalib::duration::zero());
- _scheduler = new FNET_Scheduler(&_time, &_time);
+ _scheduler = new FNET_Scheduler(&_time);
RealTimeTask rt_task1;
RealTimeTask rt_task2;
diff --git a/fnet/src/tests/scheduling/sloweventloop.cpp b/fnet/src/tests/scheduling/sloweventloop.cpp
index 33070aa29e9..5a7f5b3e067 100644
--- a/fnet/src/tests/scheduling/sloweventloop.cpp
+++ b/fnet/src/tests/scheduling/sloweventloop.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/fnet/scheduler.h>
#include <vespa/fnet/task.h>
@@ -20,7 +20,7 @@ public:
TEST("slow event loop") {
vespalib::steady_time t(vespalib::duration::zero());
- FNET_Scheduler scheduler(&t, &t);
+ FNET_Scheduler scheduler(&t);
MyTask task(scheduler);
MyTask task2(scheduler);
diff --git a/fnet/src/tests/sync_execute/CMakeLists.txt b/fnet/src/tests/sync_execute/CMakeLists.txt
index fce699d8e83..a6393471ee8 100644
--- a/fnet/src/tests/sync_execute/CMakeLists.txt
+++ b/fnet/src/tests/sync_execute/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fnet_sync_execute_test_app TEST
SOURCES
sync_execute.cpp
diff --git a/fnet/src/tests/sync_execute/sync_execute.cpp b/fnet/src/tests/sync_execute/sync_execute.cpp
index 8738e4a3568..fac247d8ebd 100644
--- a/fnet/src/tests/sync_execute/sync_execute.cpp
+++ b/fnet/src/tests/sync_execute/sync_execute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/gate.h>
#include <vespa/vespalib/util/size_literals.h>
diff --git a/fnet/src/tests/thread_selection/CMakeLists.txt b/fnet/src/tests/thread_selection/CMakeLists.txt
index bf005de9694..d304e84b33b 100644
--- a/fnet/src/tests/thread_selection/CMakeLists.txt
+++ b/fnet/src/tests/thread_selection/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fnet_thread_selection_test_app TEST
SOURCES
thread_selection_test.cpp
diff --git a/fnet/src/tests/thread_selection/thread_selection_test.cpp b/fnet/src/tests/thread_selection/thread_selection_test.cpp
index 35df07221a2..e87a253d4f3 100644
--- a/fnet/src/tests/thread_selection/thread_selection_test.cpp
+++ b/fnet/src/tests/thread_selection/thread_selection_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/fnet/transport.h>
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/fnet/src/tests/time/CMakeLists.txt b/fnet/src/tests/time/CMakeLists.txt
index 90af37face6..d0babea907e 100644
--- a/fnet/src/tests/time/CMakeLists.txt
+++ b/fnet/src/tests/time/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fnet_timespeed_test_app TEST
SOURCES
timespeed.cpp
diff --git a/fnet/src/tests/time/timespeed.cpp b/fnet/src/tests/time/timespeed.cpp
index eda367f1990..3f930b2dc3d 100644
--- a/fnet/src/tests/time/timespeed.cpp
+++ b/fnet/src/tests/time/timespeed.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/benchmark_timer.h>
#include <chrono>
diff --git a/fnet/src/tests/transport_debugger/CMakeLists.txt b/fnet/src/tests/transport_debugger/CMakeLists.txt
new file mode 100644
index 00000000000..64a676298d7
--- /dev/null
+++ b/fnet/src/tests/transport_debugger/CMakeLists.txt
@@ -0,0 +1,8 @@
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(fnet_transport_debugger_test_app TEST
+ SOURCES
+ transport_debugger_test.cpp
+ DEPENDS
+ fnet
+)
+vespa_add_test(NAME fnet_transport_debugger_test_app COMMAND fnet_transport_debugger_test_app)
diff --git a/fnet/src/tests/transport_debugger/transport_debugger_test.cpp b/fnet/src/tests/transport_debugger/transport_debugger_test.cpp
new file mode 100644
index 00000000000..044f9da5394
--- /dev/null
+++ b/fnet/src/tests/transport_debugger/transport_debugger_test.cpp
@@ -0,0 +1,121 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include <vespa/vespalib/testkit/test_kit.h>
+#include <vespa/vespalib/testkit/time_bomb.h>
+#include <vespa/fnet/transport.h>
+#include <vespa/fnet/transport_thread.h>
+#include <vespa/fnet/transport_debugger.h>
+#include <vespa/fnet/task.h>
+#include <vespa/fnet/frt/supervisor.h>
+#include <vespa/fnet/frt/rpcrequest.h>
+#include <vespa/fnet/frt/invoker.h>
+#include <vespa/fnet/frt/target.h>
+#include <vespa/vespalib/net/tls/tls_crypto_engine.h>
+#include <vespa/vespalib/test/make_tls_options_for_testing.h>
+
+vespalib::CryptoEngine::SP tls_crypto = std::make_shared<vespalib::TlsCryptoEngine>(vespalib::test::make_tls_options_for_testing());
+
+struct Service : FRT_Invokable {
+ fnet::frt::StandaloneFRT frt;
+ Service(fnet::TimeTools::SP time_tools)
+ : frt(TransportConfig(4).crypto(tls_crypto).time_tools(time_tools))
+ {
+ init_rpc();
+ ASSERT_TRUE(frt.supervisor().Listen(0));
+ }
+ FNET_Transport &transport() { return *frt.supervisor().GetTransport(); }
+ int listen_port() const {
+ return frt.supervisor().GetListenPort();
+ }
+ FRT_Target *connect(int port) {
+ return frt.supervisor().GetTarget(port);
+ }
+ void init_rpc() {
+ FRT_ReflectionBuilder rb(&frt.supervisor());
+ rb.DefineMethod("inc", "l", "l", FRT_METHOD(Service::rpc_inc), this);
+ rb.MethodDesc("increment a 64-bit integer, returns after 5 seconds");
+ rb.ParamDesc("in", "an integer (64 bit)");
+ rb.ReturnDesc("out", "in + 1 (64 bit)");
+ }
+ struct ReturnLater : FNET_Task {
+ FRT_RPCRequest *req;
+ ReturnLater(FNET_Scheduler *scheduler, FRT_RPCRequest *req_in)
+ : FNET_Task(scheduler), req(req_in) {}
+ void PerformTask() override { req->Return(); }
+ };
+ void rpc_inc(FRT_RPCRequest *req) {
+ req->Detach();
+ FRT_Values &params = *req->GetParams();
+ FRT_Values &ret = *req->GetReturn();
+ ret.AddInt64(params[0]._intval64 + 1);
+ auto my_scheduler = req->GetConnection()->Owner()->GetScheduler();
+ auto &task = req->getStash().create<ReturnLater>(my_scheduler, req);
+ task.Schedule(5.0);
+ }
+ ~Service() = default;
+};
+
+struct Fixture {
+ fnet::TransportDebugger debugger;
+ Service server;
+ Service client;
+ Fixture()
+ : debugger(),
+ server(debugger.time_tools()),
+ client(debugger.time_tools())
+ {
+ debugger.attach({server.transport(), client.transport()});
+ }
+ ~Fixture() {
+ debugger.detach();
+ }
+};
+
+struct MyWait : FRT_IRequestWait {
+ FRT_RPCRequest *req = nullptr;
+ void RequestDone(FRT_RPCRequest *r) override { req = r; }
+};
+
+TEST_FF("transport layers can be run with transport debugger", Fixture(), vespalib::TimeBomb(60)) {
+ MyWait w4; // short timeout, should fail
+ MyWait w6; // long timeout, should be ok
+
+ FRT_Target *target = f1.client.connect(f1.server.listen_port());
+
+ FRT_RPCRequest *req4 = f1.client.frt.supervisor().AllocRPCRequest();
+ req4->SetMethodName("inc");
+ req4->GetParams()->AddInt64(3);
+ target->InvokeAsync(req4, 4.0, &w4);
+
+ FRT_RPCRequest *req6 = f1.client.frt.supervisor().AllocRPCRequest();
+ req6->SetMethodName("inc");
+ req6->GetParams()->AddInt64(7);
+ target->InvokeAsync(req6, 6.0, &w6);
+
+ bool got4 = false;
+ bool got6 = false;
+ size_t steps = 0;
+
+ while (!(got4 && got6)) {
+ f1.debugger.step();
+ ++steps;
+ if (!got4 && w4.req) {
+ got4 = true;
+ fprintf(stderr, "request with 4s timeout completed after %zu steps (~%zu ms)\n", steps, steps * 5);
+ }
+ if (!got6 && w6.req) {
+ got6 = true;
+ fprintf(stderr, "request with 6s timeout completed after %zu steps (~%zu ms)\n", steps, steps * 5);
+ }
+ }
+ ASSERT_EQUAL(req4, w4.req);
+ ASSERT_EQUAL(req6, w6.req);
+ EXPECT_EQUAL(req4->GetErrorCode(), FRTE_RPC_TIMEOUT);
+ ASSERT_TRUE(req6->CheckReturnTypes("l"));
+ EXPECT_EQUAL(req6->GetReturn()->GetValue(0)._intval64, 8u);
+ target->SubRef();
+ req4->SubRef();
+ req6->SubRef();
+}
+
+TEST_MAIN() { TEST_RUN_ALL(); }
diff --git a/fnet/src/vespa/fnet/CMakeLists.txt b/fnet/src/vespa/fnet/CMakeLists.txt
index 4b9d818e5ed..437626318d6 100644
--- a/fnet/src/vespa/fnet/CMakeLists.txt
+++ b/fnet/src/vespa/fnet/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(fnet
SOURCES
channel.cpp
@@ -19,6 +19,7 @@ vespa_add_library(fnet
simplepacketstreamer.cpp
task.cpp
transport.cpp
+ transport_debugger.cpp
transport_thread.cpp
$<TARGET_OBJECTS:fnet_frt>
INSTALL lib64
diff --git a/fnet/src/vespa/fnet/channel.cpp b/fnet/src/vespa/fnet/channel.cpp
index 32a84ad966b..d61fbd57fb1 100644
--- a/fnet/src/vespa/fnet/channel.cpp
+++ b/fnet/src/vespa/fnet/channel.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "channel.h"
#include "connection.h"
diff --git a/fnet/src/vespa/fnet/channel.h b/fnet/src/vespa/fnet/channel.h
index ced0d8632b0..52d38db17f8 100644
--- a/fnet/src/vespa/fnet/channel.h
+++ b/fnet/src/vespa/fnet/channel.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/channellookup.cpp b/fnet/src/vespa/fnet/channellookup.cpp
index fa2672fec37..6af5a574e9b 100644
--- a/fnet/src/vespa/fnet/channellookup.cpp
+++ b/fnet/src/vespa/fnet/channellookup.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "channellookup.h"
#include "vespa/fnet/channel.h"
diff --git a/fnet/src/vespa/fnet/channellookup.h b/fnet/src/vespa/fnet/channellookup.h
index 63a160a9955..3ad89b4bc20 100644
--- a/fnet/src/vespa/fnet/channellookup.h
+++ b/fnet/src/vespa/fnet/channellookup.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/config.cpp b/fnet/src/vespa/fnet/config.cpp
index daf2b57429f..50fac243afa 100644
--- a/fnet/src/vespa/fnet/config.cpp
+++ b/fnet/src/vespa/fnet/config.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "config.h"
diff --git a/fnet/src/vespa/fnet/config.h b/fnet/src/vespa/fnet/config.h
index 6cb1306a114..114d1d2c09d 100644
--- a/fnet/src/vespa/fnet/config.h
+++ b/fnet/src/vespa/fnet/config.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/connection.cpp b/fnet/src/vespa/fnet/connection.cpp
index 4315e76f7ef..83224178e15 100644
--- a/fnet/src/vespa/fnet/connection.cpp
+++ b/fnet/src/vespa/fnet/connection.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "connection.h"
#include "dummypacket.h"
diff --git a/fnet/src/vespa/fnet/connection.h b/fnet/src/vespa/fnet/connection.h
index 532bd7c6638..6efb147d37f 100644
--- a/fnet/src/vespa/fnet/connection.h
+++ b/fnet/src/vespa/fnet/connection.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/connector.cpp b/fnet/src/vespa/fnet/connector.cpp
index 552e958570a..8ef355eb1fa 100644
--- a/fnet/src/vespa/fnet/connector.cpp
+++ b/fnet/src/vespa/fnet/connector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "connector.h"
#include "transport_thread.h"
diff --git a/fnet/src/vespa/fnet/connector.h b/fnet/src/vespa/fnet/connector.h
index 8f0fc0b1d81..058c8e670db 100644
--- a/fnet/src/vespa/fnet/connector.h
+++ b/fnet/src/vespa/fnet/connector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/context.cpp b/fnet/src/vespa/fnet/context.cpp
index 33c0653182f..e77c65c0826 100644
--- a/fnet/src/vespa/fnet/context.cpp
+++ b/fnet/src/vespa/fnet/context.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "context.h"
#include <cstdio>
diff --git a/fnet/src/vespa/fnet/context.h b/fnet/src/vespa/fnet/context.h
index 7bdaa20db0f..e5594b80ea8 100644
--- a/fnet/src/vespa/fnet/context.h
+++ b/fnet/src/vespa/fnet/context.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/controlpacket.cpp b/fnet/src/vespa/fnet/controlpacket.cpp
index 036d80d4541..580bff7be69 100644
--- a/fnet/src/vespa/fnet/controlpacket.cpp
+++ b/fnet/src/vespa/fnet/controlpacket.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "controlpacket.h"
#include "context.h"
diff --git a/fnet/src/vespa/fnet/controlpacket.h b/fnet/src/vespa/fnet/controlpacket.h
index 59cb3778738..3d0bb8cd630 100644
--- a/fnet/src/vespa/fnet/controlpacket.h
+++ b/fnet/src/vespa/fnet/controlpacket.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/databuffer.cpp b/fnet/src/vespa/fnet/databuffer.cpp
index d982f9609e0..f6a7e1c25e5 100644
--- a/fnet/src/vespa/fnet/databuffer.cpp
+++ b/fnet/src/vespa/fnet/databuffer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "databuffer.h"
#include <cstdio>
diff --git a/fnet/src/vespa/fnet/databuffer.h b/fnet/src/vespa/fnet/databuffer.h
index 9cc8ce15edf..c9471e00570 100644
--- a/fnet/src/vespa/fnet/databuffer.h
+++ b/fnet/src/vespa/fnet/databuffer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/dummypacket.cpp b/fnet/src/vespa/fnet/dummypacket.cpp
index 0c2c2ee883d..0dc0ae973af 100644
--- a/fnet/src/vespa/fnet/dummypacket.cpp
+++ b/fnet/src/vespa/fnet/dummypacket.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dummypacket.h"
#include "context.h"
diff --git a/fnet/src/vespa/fnet/dummypacket.h b/fnet/src/vespa/fnet/dummypacket.h
index d14c1e4f022..50ea81b5dd8 100644
--- a/fnet/src/vespa/fnet/dummypacket.h
+++ b/fnet/src/vespa/fnet/dummypacket.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/frt/CMakeLists.txt b/fnet/src/vespa/fnet/frt/CMakeLists.txt
index 6aa42ec5568..c7bcbe27041 100644
--- a/fnet/src/vespa/fnet/frt/CMakeLists.txt
+++ b/fnet/src/vespa/fnet/frt/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(fnet_frt OBJECT
SOURCES
error.cpp
diff --git a/fnet/src/vespa/fnet/frt/error.cpp b/fnet/src/vespa/fnet/frt/error.cpp
index bab662056b6..6af9ea39757 100644
--- a/fnet/src/vespa/fnet/frt/error.cpp
+++ b/fnet/src/vespa/fnet/frt/error.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "error.h"
diff --git a/fnet/src/vespa/fnet/frt/error.h b/fnet/src/vespa/fnet/frt/error.h
index e3554796cc8..c5acfb744f6 100644
--- a/fnet/src/vespa/fnet/frt/error.h
+++ b/fnet/src/vespa/fnet/frt/error.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/frt/invokable.h b/fnet/src/vespa/fnet/frt/invokable.h
index df4abd41f90..88502f23c5c 100644
--- a/fnet/src/vespa/fnet/frt/invokable.h
+++ b/fnet/src/vespa/fnet/frt/invokable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/frt/invoker.cpp b/fnet/src/vespa/fnet/frt/invoker.cpp
index b174c3a710e..85eae6cb41a 100644
--- a/fnet/src/vespa/fnet/frt/invoker.cpp
+++ b/fnet/src/vespa/fnet/frt/invoker.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "invoker.h"
#include "supervisor.h"
diff --git a/fnet/src/vespa/fnet/frt/invoker.h b/fnet/src/vespa/fnet/frt/invoker.h
index 0838ef84dd3..d2399364562 100644
--- a/fnet/src/vespa/fnet/frt/invoker.h
+++ b/fnet/src/vespa/fnet/frt/invoker.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/frt/isharedblob.h b/fnet/src/vespa/fnet/frt/isharedblob.h
index ce262eeb7a9..39e2986ab3e 100644
--- a/fnet/src/vespa/fnet/frt/isharedblob.h
+++ b/fnet/src/vespa/fnet/frt/isharedblob.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/frt/packets.cpp b/fnet/src/vespa/fnet/frt/packets.cpp
index e6c0cd95a48..134a869eafb 100644
--- a/fnet/src/vespa/fnet/frt/packets.cpp
+++ b/fnet/src/vespa/fnet/frt/packets.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "packets.h"
#include "rpcrequest.h"
diff --git a/fnet/src/vespa/fnet/frt/packets.h b/fnet/src/vespa/fnet/frt/packets.h
index a6d14d64cd9..926137ebf3e 100644
--- a/fnet/src/vespa/fnet/frt/packets.h
+++ b/fnet/src/vespa/fnet/frt/packets.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/frt/reflection.cpp b/fnet/src/vespa/fnet/frt/reflection.cpp
index 305294f4a3c..0719c8b4c71 100644
--- a/fnet/src/vespa/fnet/frt/reflection.cpp
+++ b/fnet/src/vespa/fnet/frt/reflection.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "reflection.h"
#include "values.h"
diff --git a/fnet/src/vespa/fnet/frt/reflection.h b/fnet/src/vespa/fnet/frt/reflection.h
index 3aee3267b12..c867bbb45ec 100644
--- a/fnet/src/vespa/fnet/frt/reflection.h
+++ b/fnet/src/vespa/fnet/frt/reflection.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/frt/rpcrequest.cpp b/fnet/src/vespa/fnet/frt/rpcrequest.cpp
index 889990aabd2..ac6dbb26ad6 100644
--- a/fnet/src/vespa/fnet/frt/rpcrequest.cpp
+++ b/fnet/src/vespa/fnet/frt/rpcrequest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rpcrequest.h"
#include "packets.h"
diff --git a/fnet/src/vespa/fnet/frt/rpcrequest.h b/fnet/src/vespa/fnet/frt/rpcrequest.h
index eaa34a46b7a..d582f7cfbcb 100644
--- a/fnet/src/vespa/fnet/frt/rpcrequest.h
+++ b/fnet/src/vespa/fnet/frt/rpcrequest.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/frt/supervisor.cpp b/fnet/src/vespa/fnet/frt/supervisor.cpp
index d992567f776..74e77a0be1b 100644
--- a/fnet/src/vespa/fnet/frt/supervisor.cpp
+++ b/fnet/src/vespa/fnet/frt/supervisor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "supervisor.h"
#include "invoker.h"
@@ -8,6 +8,7 @@
#include <vespa/fnet/transport_thread.h>
#include <vespa/fnet/connector.h>
#include <vespa/fastos/thread.h>
+#include <vespa/vespalib/util/require.h>
FRT_Supervisor::FRT_Supervisor(FNET_Transport *transport)
: _transport(transport),
@@ -409,21 +410,19 @@ FRT_Supervisor::SchedulerPtr::SchedulerPtr(FNET_TransportThread *transport_threa
namespace fnet::frt {
-StandaloneFRT::StandaloneFRT()
+StandaloneFRT::StandaloneFRT(const TransportConfig &config)
: _threadPool(std::make_unique<FastOS_ThreadPool>(1024*128)),
- _transport(std::make_unique<FNET_Transport>()),
+ _transport(std::make_unique<FNET_Transport>(config)),
_supervisor(std::make_unique<FRT_Supervisor>(_transport.get()))
{
- _transport->Start(_threadPool.get());
+ REQUIRE(_transport->Start(_threadPool.get()));
}
-StandaloneFRT::StandaloneFRT(vespalib::CryptoEngine::SP crypto)
- : _threadPool(std::make_unique<FastOS_ThreadPool>(1024*128)),
- _transport(std::make_unique<FNET_Transport>(TransportConfig().crypto(std::move(crypto)))),
- _supervisor(std::make_unique<FRT_Supervisor>(_transport.get()))
-{
- _transport->Start(_threadPool.get());
-}
+StandaloneFRT::StandaloneFRT()
+ : StandaloneFRT(TransportConfig()) {}
+
+StandaloneFRT::StandaloneFRT(std::shared_ptr<vespalib::CryptoEngine> crypto)
+ : StandaloneFRT(TransportConfig().crypto(std::move(crypto))) {}
StandaloneFRT::~StandaloneFRT()
{
diff --git a/fnet/src/vespa/fnet/frt/supervisor.h b/fnet/src/vespa/fnet/frt/supervisor.h
index 2743cafae26..0207adc8adb 100644
--- a/fnet/src/vespa/fnet/frt/supervisor.h
+++ b/fnet/src/vespa/fnet/frt/supervisor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -10,6 +10,7 @@
#include <vespa/fnet/connection.h>
#include <vespa/fnet/simplepacketstreamer.h>
+class TransportConfig;
class FNET_Transport;
class FRT_Target;
class FastOS_ThreadPool;
@@ -129,10 +130,12 @@ namespace fnet::frt {
*/
class StandaloneFRT {
public:
+ explicit StandaloneFRT(const TransportConfig &config);
StandaloneFRT();
explicit StandaloneFRT(std::shared_ptr<vespalib::CryptoEngine> crypto);
~StandaloneFRT();
- FRT_Supervisor & supervisor() { return *_supervisor; }
+ FRT_Supervisor &supervisor() { return *_supervisor; }
+ const FRT_Supervisor &supervisor() const { return *_supervisor; }
void shutdown();
private:
std::unique_ptr<FastOS_ThreadPool> _threadPool;
diff --git a/fnet/src/vespa/fnet/frt/target.cpp b/fnet/src/vespa/fnet/frt/target.cpp
index 02dd4c68191..1645fba91ee 100644
--- a/fnet/src/vespa/fnet/frt/target.cpp
+++ b/fnet/src/vespa/fnet/frt/target.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "target.h"
#include "supervisor.h"
diff --git a/fnet/src/vespa/fnet/frt/target.h b/fnet/src/vespa/fnet/frt/target.h
index d00f906e982..ac6bf377a14 100644
--- a/fnet/src/vespa/fnet/frt/target.h
+++ b/fnet/src/vespa/fnet/frt/target.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/frt/values.cpp b/fnet/src/vespa/fnet/frt/values.cpp
index 593bbd173c6..d550e37af5c 100644
--- a/fnet/src/vespa/fnet/frt/values.cpp
+++ b/fnet/src/vespa/fnet/frt/values.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "values.h"
#include <vespa/fnet/databuffer.h>
diff --git a/fnet/src/vespa/fnet/frt/values.h b/fnet/src/vespa/fnet/frt/values.h
index bac1f609fbb..56f726003a6 100644
--- a/fnet/src/vespa/fnet/frt/values.h
+++ b/fnet/src/vespa/fnet/frt/values.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/iexecutable.h b/fnet/src/vespa/fnet/iexecutable.h
index 4bcd3aaa72f..440f76461da 100644
--- a/fnet/src/vespa/fnet/iexecutable.h
+++ b/fnet/src/vespa/fnet/iexecutable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/info.cpp b/fnet/src/vespa/fnet/info.cpp
index e652c240a6c..a0c817968d6 100644
--- a/fnet/src/vespa/fnet/info.cpp
+++ b/fnet/src/vespa/fnet/info.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "info.h"
#include <vespa/vespalib/component/vtag.h>
diff --git a/fnet/src/vespa/fnet/info.h b/fnet/src/vespa/fnet/info.h
index 6285c083ff1..e0be2115ebc 100644
--- a/fnet/src/vespa/fnet/info.h
+++ b/fnet/src/vespa/fnet/info.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/iocomponent.cpp b/fnet/src/vespa/fnet/iocomponent.cpp
index 471156f53ea..eeda3e12bea 100644
--- a/fnet/src/vespa/fnet/iocomponent.cpp
+++ b/fnet/src/vespa/fnet/iocomponent.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "iocomponent.h"
#include "transport_thread.h"
diff --git a/fnet/src/vespa/fnet/iocomponent.h b/fnet/src/vespa/fnet/iocomponent.h
index ee228e0126d..9220b6dfe8f 100644
--- a/fnet/src/vespa/fnet/iocomponent.h
+++ b/fnet/src/vespa/fnet/iocomponent.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/ipacketfactory.h b/fnet/src/vespa/fnet/ipacketfactory.h
index f9095a4a90a..44a0ceb0bc5 100644
--- a/fnet/src/vespa/fnet/ipacketfactory.h
+++ b/fnet/src/vespa/fnet/ipacketfactory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/ipackethandler.h b/fnet/src/vespa/fnet/ipackethandler.h
index 90d7540516d..179ea191035 100644
--- a/fnet/src/vespa/fnet/ipackethandler.h
+++ b/fnet/src/vespa/fnet/ipackethandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/ipacketstreamer.h b/fnet/src/vespa/fnet/ipacketstreamer.h
index d70245221f9..9cb08ec5d46 100644
--- a/fnet/src/vespa/fnet/ipacketstreamer.h
+++ b/fnet/src/vespa/fnet/ipacketstreamer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/iserveradapter.h b/fnet/src/vespa/fnet/iserveradapter.h
index 6ce9247f993..cad0625eb80 100644
--- a/fnet/src/vespa/fnet/iserveradapter.h
+++ b/fnet/src/vespa/fnet/iserveradapter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/packet.cpp b/fnet/src/vespa/fnet/packet.cpp
index 15bb9bbb0b3..d40bee836a9 100644
--- a/fnet/src/vespa/fnet/packet.cpp
+++ b/fnet/src/vespa/fnet/packet.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "packet.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/fnet/src/vespa/fnet/packet.h b/fnet/src/vespa/fnet/packet.h
index cad82eada56..c32c56eb6d5 100644
--- a/fnet/src/vespa/fnet/packet.h
+++ b/fnet/src/vespa/fnet/packet.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/packetqueue.cpp b/fnet/src/vespa/fnet/packetqueue.cpp
index e17d5360537..27f4923ac1a 100644
--- a/fnet/src/vespa/fnet/packetqueue.cpp
+++ b/fnet/src/vespa/fnet/packetqueue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "packetqueue.h"
#include "packet.h"
diff --git a/fnet/src/vespa/fnet/packetqueue.h b/fnet/src/vespa/fnet/packetqueue.h
index e894b47d06e..d631996cd49 100644
--- a/fnet/src/vespa/fnet/packetqueue.h
+++ b/fnet/src/vespa/fnet/packetqueue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/scheduler.cpp b/fnet/src/vespa/fnet/scheduler.cpp
index f54d3d6a9bb..34ec73bda69 100644
--- a/fnet/src/vespa/fnet/scheduler.cpp
+++ b/fnet/src/vespa/fnet/scheduler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "scheduler.h"
#include "task.h"
@@ -9,8 +9,7 @@
LOG_SETUP(".fnet.scheduler");
-FNET_Scheduler::FNET_Scheduler(vespalib::steady_time *sampler,
- vespalib::steady_time *now)
+FNET_Scheduler::FNET_Scheduler(vespalib::steady_time *sampler)
: _cond(),
_next(),
_now(),
@@ -25,13 +24,8 @@ FNET_Scheduler::FNET_Scheduler(vespalib::steady_time *sampler,
for (int i = 0; i < NUM_SLOTS; i++)
_slots[i] = nullptr;
_slots[NUM_SLOTS] = nullptr;
-
- if (now != nullptr) {
- _next = *now;
- } else {
- _next = vespalib::steady_clock::now();
- }
- _next += tick_ms;
+ _now = _sampler ? *_sampler : vespalib::steady_clock::now();
+ _next = _now + tick_ms;
}
@@ -143,11 +137,7 @@ FNET_Scheduler::Print(FILE *dst)
void
FNET_Scheduler::CheckTasks()
{
- if (_sampler != nullptr) {
- _now = *_sampler;
- } else {
- _now = vespalib::steady_clock::now();
- }
+ _now = _sampler ? *_sampler : vespalib::steady_clock::now();
// assume timely value propagation
diff --git a/fnet/src/vespa/fnet/scheduler.h b/fnet/src/vespa/fnet/scheduler.h
index 98a9442799e..0a6c9259ccc 100644
--- a/fnet/src/vespa/fnet/scheduler.h
+++ b/fnet/src/vespa/fnet/scheduler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -68,12 +68,10 @@ public:
* @param sampler if given, this object will be used to obtain the
* time when the @ref CheckTasks method is invoked. If a
* sampler is not given, time sampling will be
- * handled internally.
- * @param now if given, indicates the current time. This value is
- * used by the constructor to init internal variables.
+ * handled internally. The sampler will also be used by
+ * the constructor to init internal variables.
**/
- FNET_Scheduler(vespalib::steady_time *sampler = nullptr,
- vespalib::steady_time *now = nullptr);
+ FNET_Scheduler(vespalib::steady_time *sampler = nullptr);
virtual ~FNET_Scheduler();
diff --git a/fnet/src/vespa/fnet/signalshutdown.cpp b/fnet/src/vespa/fnet/signalshutdown.cpp
index bcd97283738..cabc564b007 100644
--- a/fnet/src/vespa/fnet/signalshutdown.cpp
+++ b/fnet/src/vespa/fnet/signalshutdown.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "signalshutdown.h"
#include "transport.h"
diff --git a/fnet/src/vespa/fnet/signalshutdown.h b/fnet/src/vespa/fnet/signalshutdown.h
index d09733934db..21b96fdcce9 100644
--- a/fnet/src/vespa/fnet/signalshutdown.h
+++ b/fnet/src/vespa/fnet/signalshutdown.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/simplepacketstreamer.cpp b/fnet/src/vespa/fnet/simplepacketstreamer.cpp
index b26d467e78e..e938088e0ec 100644
--- a/fnet/src/vespa/fnet/simplepacketstreamer.cpp
+++ b/fnet/src/vespa/fnet/simplepacketstreamer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simplepacketstreamer.h"
#include "databuffer.h"
diff --git a/fnet/src/vespa/fnet/simplepacketstreamer.h b/fnet/src/vespa/fnet/simplepacketstreamer.h
index 8aa21c47790..111c0214f4d 100644
--- a/fnet/src/vespa/fnet/simplepacketstreamer.h
+++ b/fnet/src/vespa/fnet/simplepacketstreamer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/task.cpp b/fnet/src/vespa/fnet/task.cpp
index f5263450e6a..b4511d2c0d5 100644
--- a/fnet/src/vespa/fnet/task.cpp
+++ b/fnet/src/vespa/fnet/task.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "task.h"
#include "scheduler.h"
diff --git a/fnet/src/vespa/fnet/task.h b/fnet/src/vespa/fnet/task.h
index 8529795c6ae..088cadf17aa 100644
--- a/fnet/src/vespa/fnet/task.h
+++ b/fnet/src/vespa/fnet/task.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fnet/src/vespa/fnet/transport.cpp b/fnet/src/vespa/fnet/transport.cpp
index 81d35f9852c..8661c8ecace 100644
--- a/fnet/src/vespa/fnet/transport.cpp
+++ b/fnet/src/vespa/fnet/transport.cpp
@@ -1,10 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "transport.h"
#include "transport_thread.h"
#include "iocomponent.h"
#include <vespa/vespalib/util/threadstackexecutor.h>
#include <vespa/vespalib/util/size_literals.h>
+#include <vespa/vespalib/util/rendezvous.h>
#include <chrono>
#include <xxhash.h>
@@ -24,12 +25,83 @@ struct HashState {
VESPA_THREAD_STACK_TAG(fnet_work_pool);
+struct DefaultTimeTools : fnet::TimeTools {
+ vespalib::duration event_timeout() const override {
+ return FNET_Scheduler::tick_ms;
+ }
+ vespalib::steady_time current_time() const override {
+ return vespalib::steady_clock::now();
+ }
+};
+
+struct DebugTimeTools : fnet::TimeTools {
+ vespalib::duration my_event_timeout;
+ std::function<vespalib::steady_time()> my_current_time;
+ DebugTimeTools(vespalib::duration d, std::function<vespalib::steady_time()> f) noexcept
+ : my_event_timeout(d), my_current_time(std::move(f)) {}
+ vespalib::duration event_timeout() const override {
+ return my_event_timeout;
+ }
+ vespalib::steady_time current_time() const override {
+ return my_current_time();
+ }
+};
+
+struct CaptureMeet : vespalib::Rendezvous<int,bool> {
+ using SP = std::shared_ptr<CaptureMeet>;
+ vespalib::SyncableThreadExecutor &work_pool;
+ vespalib::AsyncResolver &async_resolver;
+ std::function<bool()> capture_hook;
+ CaptureMeet(size_t N,
+ vespalib::SyncableThreadExecutor &work_pool_in,
+ vespalib::AsyncResolver &resolver_in,
+ std::function<bool()> capture_hook_in)
+ : vespalib::Rendezvous<int,bool>(N),
+ work_pool(work_pool_in),
+ async_resolver(resolver_in),
+ capture_hook(std::move(capture_hook_in)) {}
+ void mingle() override {
+ work_pool.sync();
+ async_resolver.wait_for_pending_resolves();
+ bool result = capture_hook();
+ for (size_t i = 0; i < size(); ++i) {
+ out(i) = result;
+ }
+ }
+};
+
+struct CaptureTask : FNET_Task {
+ CaptureMeet::SP meet;
+ CaptureTask(FNET_Scheduler *scheduler, CaptureMeet::SP meet_in)
+ : FNET_Task(scheduler), meet(std::move(meet_in)) {}
+ void PerformTask() override {
+ int dummy_value = 0; // rendezvous must have input value
+ if (meet->rendezvous(dummy_value)) {
+ ScheduleNow();
+ } else {
+ delete this;
+ }
+ };
+};
+
} // namespace <unnamed>
+namespace fnet {
+
+TimeTools::SP
+TimeTools::make_debug(vespalib::duration event_timeout,
+ std::function<vespalib::steady_time()> current_time)
+{
+ return std::make_shared<DebugTimeTools>(event_timeout, std::move(current_time));
+}
+
+} // fnet
+
TransportConfig::TransportConfig(int num_threads)
: _config(),
_resolver(),
_crypto(),
+ _time_tools(),
_num_threads(num_threads)
{}
@@ -39,14 +111,21 @@ vespalib::AsyncResolver::SP
TransportConfig::resolver() const {
return _resolver ? _resolver : vespalib::AsyncResolver::get_shared();
}
+
vespalib::CryptoEngine::SP
TransportConfig::crypto() const {
return _crypto ? _crypto : vespalib::CryptoEngine::get_default();
}
-FNET_Transport::FNET_Transport(TransportConfig cfg)
+fnet::TimeTools::SP
+TransportConfig::time_tools() const {
+ return _time_tools ? _time_tools : std::make_shared<DefaultTimeTools>();
+}
+
+FNET_Transport::FNET_Transport(const TransportConfig &cfg)
: _async_resolver(cfg.resolver()),
_crypto_engine(cfg.crypto()),
+ _time_tools(cfg.time_tools()),
_work_pool(std::make_unique<vespalib::ThreadStackExecutor>(1, 128_Ki, fnet_work_pool, 1024)),
_threads(),
_config(cfg.config())
@@ -175,6 +254,17 @@ FNET_Transport::Start(FastOS_ThreadPool *pool)
}
void
+FNET_Transport::attach_capture_hook(std::function<bool()> capture_hook)
+{
+ auto meet = std::make_shared<CaptureMeet>(_threads.size(), *_work_pool, *_async_resolver, std::move(capture_hook));
+ for (auto &thread: _threads) {
+ // tasks will be deleted when the capture_hook returns false
+ auto *task = new CaptureTask(thread->GetScheduler(), meet);
+ task->ScheduleNow();
+ }
+}
+
+void
FNET_Transport::Add(FNET_IOComponent *comp, bool needRef) {
comp->Owner()->Add(comp, needRef);
}
diff --git a/fnet/src/vespa/fnet/transport.h b/fnet/src/vespa/fnet/transport.h
index 6a59f9da66c..1e8faad9c1d 100644
--- a/fnet/src/vespa/fnet/transport.h
+++ b/fnet/src/vespa/fnet/transport.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -8,6 +8,7 @@
#include <vector>
#include <vespa/vespalib/net/async_resolver.h>
#include <vespa/vespalib/net/crypto_engine.h>
+#include <vespa/vespalib/util/time.h>
class FNET_TransportThread;
class FastOS_ThreadPool;
@@ -17,6 +18,29 @@ class FNET_IServerAdapter;
class FNET_IPacketHandler;
class FNET_Scheduler;
+namespace fnet {
+
+/**
+ * Low-level abstraction for event-loop time management. The
+ * event_timeout function returns the timeout to be used when waiting
+ * for io-events. The current_time function returns the current
+ * time. This interface may be implemented to control both how time is
+ * spent (event_timeout) as well as how time is observed
+ * (current_time). The default implementation will use
+ * FNET_Scheduler::tick_ms as event timeout and
+ * vespalib::steady_clock::now() as current time.
+ **/
+struct TimeTools {
+ using SP = std::shared_ptr<TimeTools>;
+ virtual vespalib::duration event_timeout() const = 0;
+ virtual vespalib::steady_time current_time() const = 0;
+ virtual ~TimeTools() = default;
+ static TimeTools::SP make_debug(vespalib::duration event_timeout,
+ std::function<vespalib::steady_time()> current_time);
+};
+
+} // fnet
+
class TransportConfig {
public:
TransportConfig() : TransportConfig(1) {}
@@ -24,6 +48,7 @@ public:
~TransportConfig();
vespalib::AsyncResolver::SP resolver() const;
vespalib::CryptoEngine::SP crypto() const;
+ fnet::TimeTools::SP time_tools() const;
TransportConfig & resolver(vespalib::AsyncResolver::SP resolver_in) {
_resolver = std::move(resolver_in);
return *this;
@@ -32,6 +57,11 @@ public:
_crypto = std::move(crypto_in);
return *this;
}
+ TransportConfig &time_tools(fnet::TimeTools::SP time_tools_in) {
+ _time_tools = std::move(time_tools_in);
+ return *this;
+ }
+
const FNET_Config & config() const { return _config; }
uint32_t num_threads() const { return _num_threads; }
@@ -62,8 +92,10 @@ private:
FNET_Config _config;
vespalib::AsyncResolver::SP _resolver;
vespalib::CryptoEngine::SP _crypto;
+ fnet::TimeTools::SP _time_tools;
uint32_t _num_threads;
};
+
/**
* This class represents the transport layer and handles a collection
* of transport threads. Note: remember to shut down your transport
@@ -77,6 +109,7 @@ private:
vespalib::AsyncResolver::SP _async_resolver;
vespalib::CryptoEngine::SP _crypto_engine;
+ fnet::TimeTools::SP _time_tools;
std::unique_ptr<vespalib::SyncableThreadExecutor> _work_pool;
Threads _threads;
const FNET_Config _config;
@@ -91,7 +124,7 @@ public:
* the current thread become the transport thread. Main may only
* be called for single-threaded transports.
**/
- explicit FNET_Transport(TransportConfig config);
+ explicit FNET_Transport(const TransportConfig &config);
explicit FNET_Transport(uint32_t num_threads)
: FNET_Transport(TransportConfig(num_threads)) {}
@@ -100,6 +133,7 @@ public:
~FNET_Transport();
const FNET_Config & getConfig() const { return _config; }
+ const fnet::TimeTools &time_tools() const { return *_time_tools; }
/**
* Try to execute the given task on the internal work pool
@@ -284,6 +318,26 @@ public:
**/
bool Start(FastOS_ThreadPool *pool);
+ /**
+ * Capture transport threads. Used for testing purposes,
+ * preferably combined with a debug variant of TimeTools.
+ *
+ * After this function is called, the capture_hook will be called
+ * repeatedly as long as it returns true. The first time it
+ * returns false, appropriate cleanup will be performed and the
+ * capture_hook will never be called again; it detaches
+ * itself. All transport threads will be blocked while the
+ * capture_hook is called. Between calls to the capture_hook each
+ * transport thread will run its event loop exactly once, all
+ * pending work in the work pool will be performed and all pending
+ * dns lookups will be performed. Note that the capture_hook
+ * should detach itself by returning false before the transport
+ * itself is shut down.
+ *
+ * @param capture_hook called until it returns false
+ **/
+ void attach_capture_hook(std::function<bool()> capture_hook);
+
//-------------------------------------------------------------------------
// forward async IO Component operations to their owners
//-------------------------------------------------------------------------
diff --git a/fnet/src/vespa/fnet/transport_debugger.cpp b/fnet/src/vespa/fnet/transport_debugger.cpp
new file mode 100644
index 00000000000..3ad6524d59b
--- /dev/null
+++ b/fnet/src/vespa/fnet/transport_debugger.cpp
@@ -0,0 +1,69 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "transport_debugger.h"
+#include <vespa/vespalib/util/require.h>
+#include <cassert>
+
+namespace fnet {
+
+void
+TransportDebugger::Meet::mingle()
+{
+ bool call_again = true;
+ for (size_t i = 0; i < size(); ++i) {
+ if (!in(i)) {
+ call_again = false;
+ }
+ }
+ for (size_t i = 0; i < size(); ++i) {
+ out(i) = call_again;
+ }
+}
+
+TransportDebugger::TransportDebugger()
+ : _time(),
+ _meet()
+{
+}
+
+TransportDebugger::~TransportDebugger()
+{
+ assert(!_meet && "error: still attached");
+}
+
+void
+TransportDebugger::attach(std::initializer_list<std::reference_wrapper<FNET_Transport> > list)
+{
+ size_t N = list.size() + 1;
+ REQUIRE(!_meet);
+ REQUIRE(N > 1);
+ _meet = std::make_shared<Meet>(N);
+ for (auto &item: list) {
+ item.get().attach_capture_hook([meet = _meet]()
+ {
+ REQUIRE(meet->rendezvous(true));
+ // capture point: between meetings
+ return meet->rendezvous(true);
+ });
+ }
+ REQUIRE(_meet->rendezvous(true)); // capture transport threads
+}
+
+void
+TransportDebugger::step(vespalib::duration time_passed)
+{
+ REQUIRE(_meet);
+ _time += time_passed; // pretend time passes between each event loop iteration
+ REQUIRE(_meet->rendezvous(true)); // release transport threads
+ REQUIRE(_meet->rendezvous(true)); // capture transport threads
+}
+
+void
+TransportDebugger::detach()
+{
+ REQUIRE(_meet);
+ REQUIRE(!_meet->rendezvous(false)); // release transport threads (final time)
+ _meet.reset();
+}
+
+}
diff --git a/fnet/src/vespa/fnet/transport_debugger.h b/fnet/src/vespa/fnet/transport_debugger.h
new file mode 100644
index 00000000000..6dc63b7c6f2
--- /dev/null
+++ b/fnet/src/vespa/fnet/transport_debugger.h
@@ -0,0 +1,68 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "transport.h"
+#include <vespa/vespalib/util/rendezvous.h>
+#include <vespa/vespalib/util/time.h>
+#include <memory>
+
+namespace fnet {
+
+/**
+ * This class is used to control transport threads during unit
+ * testing.
+ *
+ * The TimeTools created by this class should be used when setting up
+ * all transports used in the test. The supplied TimeTools will make
+ * sure no thread ever blocks waiting for io-events and also make sure
+ * all threads observe the same externally controlled current
+ * time. After the transport layers are started, the attach function
+ * is used to start controlling event loop execution. While attached,
+ * calling the step function will run each transport thread event loop
+ * exactly once (in parallel), wait for pending dns resolving, wait
+ * for pending tls handshake work and advance the current time (the
+ * default 5ms will make sure 'time passes' and 'stuff happens' at a
+ * reasonable relative rate). It is important to call detach to
+ * release the transports before trying to shut them down.
+ *
+ * Note that both server and client should be controlled by the same
+ * debugger when testing rpc. Using external services will result in
+ * (synthetic) time passing too fast compared to stuff actually
+ * happening, since you do not control the other end-point in the same
+ * way.
+ *
+ * Take a look at the unit test for this class for an example of how
+ * to use it.
+ **/
+class TransportDebugger
+{
+private:
+ struct Meet : vespalib::Rendezvous<bool,bool> {
+ Meet(size_t N) : vespalib::Rendezvous<bool,bool>(N) {}
+ void mingle() override;
+ };
+ vespalib::steady_time _time;
+ std::shared_ptr<Meet> _meet;
+
+public:
+ TransportDebugger();
+ ~TransportDebugger();
+ vespalib::steady_time time() const { return _time; }
+ TimeTools::SP time_tools() {
+ return TimeTools::make_debug(vespalib::duration::zero(), [this]() noexcept { return time(); });
+ }
+ void attach(std::initializer_list<std::reference_wrapper<FNET_Transport> > list);
+ void step(vespalib::duration time_passed = 5ms);
+ template <typename Pred>
+ bool step_until(Pred pred, vespalib::duration time_limit = 120s) {
+ auto start = time();
+ while (!pred() && ((time() - start) < time_limit)) {
+ step();
+ }
+ return pred();
+ }
+ void detach();
+};
+
+}
diff --git a/fnet/src/vespa/fnet/transport_thread.cpp b/fnet/src/vespa/fnet/transport_thread.cpp
index 5e1a9759a60..8a0f3a8534a 100644
--- a/fnet/src/vespa/fnet/transport_thread.cpp
+++ b/fnet/src/vespa/fnet/transport_thread.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "transport_thread.h"
#include "iexecutable.h"
@@ -207,7 +207,7 @@ extern "C" {
FNET_TransportThread::FNET_TransportThread(FNET_Transport &owner_in)
: _owner(owner_in),
- _now(steady_clock ::now()),
+ _now(owner_in.time_tools().current_time()),
_scheduler(&_now),
_componentsHead(nullptr),
_timeOutHead(nullptr),
@@ -246,6 +246,12 @@ FNET_TransportThread::getConfig() const {
return _owner.getConfig();
}
+const fnet::TimeTools &
+FNET_TransportThread::time_tools() const
+{
+ return _owner.time_tools();
+}
+
bool
FNET_TransportThread::tune(SocketHandle &handle) const
{
@@ -388,7 +394,7 @@ FNET_TransportThread::InitEventLoop()
LOG(error, "Transport: InitEventLoop: object already active!");
return false;
}
- _now = steady_clock::now();
+ _now = time_tools().current_time();
return true;
}
@@ -465,12 +471,12 @@ bool
FNET_TransportThread::EventLoopIteration() {
if (!IsShutDown()) {
- int msTimeout = FNET_Scheduler::tick_ms.count();
+ int msTimeout = vespalib::count_ms(time_tools().event_timeout());
// obtain I/O events
_selector.poll(msTimeout);
// sample current time (performed once per event loop iteration)
- _now = steady_clock::now();
+ _now = time_tools().current_time();
// handle io-events
auto dispatchResult = _selector.dispatch(*this);
diff --git a/fnet/src/vespa/fnet/transport_thread.h b/fnet/src/vespa/fnet/transport_thread.h
index 371544f9c8a..4452eba2825 100644
--- a/fnet/src/vespa/fnet/transport_thread.h
+++ b/fnet/src/vespa/fnet/transport_thread.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -14,6 +14,7 @@
#include <condition_variable>
#include <chrono>
+namespace fnet { struct TimeTools; }
class FNET_Transport;
class FNET_ControlPacket;
class FNET_IPacketStreamer;
@@ -138,7 +139,7 @@ private:
* @return config object.
**/
const FNET_Config & getConfig() const;
-
+ const fnet::TimeTools &time_tools() const;
void handle_add_cmd(FNET_IOComponent *ioc);
void handle_close_cmd(FNET_IOComponent *ioc);
diff --git a/fsa/CMakeLists.txt b/fsa/CMakeLists.txt
index ea6e0f140aa..0e6bb7ae201 100644
--- a/fsa/CMakeLists.txt
+++ b/fsa/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
LIBS
src/vespa/fsa
diff --git a/fsa/doc/Doxyfile b/fsa/doc/Doxyfile
index 8bb7411ac2e..cc4d0ab88c4 100644
--- a/fsa/doc/Doxyfile
+++ b/fsa/doc/Doxyfile
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Doxyfile 1.3.5
# This file describes the settings to be used by the documentation system
diff --git a/fsa/doc/docbook/fsadump.xml b/fsa/doc/docbook/fsadump.xml
index 0d3b5bf479d..a81ea5b4b87 100644
--- a/fsa/doc/docbook/fsadump.xml
+++ b/fsa/doc/docbook/fsadump.xml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<refentry id="fsadump">
<refmeta>
diff --git a/fsa/doc/docbook/fsainfo.xml b/fsa/doc/docbook/fsainfo.xml
index 073ed75385c..08fa9aa96fd 100644
--- a/fsa/doc/docbook/fsainfo.xml
+++ b/fsa/doc/docbook/fsainfo.xml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<refentry id="fsainfo">
<refmeta>
diff --git a/fsa/doc/docbook/makefsa.xml b/fsa/doc/docbook/makefsa.xml
index 0a76f61fe4f..27a14191db7 100644
--- a/fsa/doc/docbook/makefsa.xml
+++ b/fsa/doc/docbook/makefsa.xml
@@ -1,5 +1,5 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<refentry id="makefsa">
<refmeta>
diff --git a/fsa/doc/fsa_file_format.html b/fsa/doc/fsa_file_format.html
index b86328fc8b9..2c88e9d701e 100644
--- a/fsa/doc/fsa_file_format.html
+++ b/fsa/doc/fsa_file_format.html
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<html>
<head>
<title>fsa file format</title>
diff --git a/fsa/pom.xml b/fsa/pom.xml
index 307b871c44a..25e1167a240 100644
--- a/fsa/pom.xml
+++ b/fsa/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/fsa/queryproc/count_plain_grams.cpp b/fsa/queryproc/count_plain_grams.cpp
index ffb5c730cdc..fec4fcae15c 100644
--- a/fsa/queryproc/count_plain_grams.cpp
+++ b/fsa/queryproc/count_plain_grams.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <iostream>
#include <iomanip>
#include <map>
diff --git a/fsa/queryproc/count_sorted_grams.cpp b/fsa/queryproc/count_sorted_grams.cpp
index 84350068f69..16d6e1e861b 100644
--- a/fsa/queryproc/count_sorted_grams.cpp
+++ b/fsa/queryproc/count_sorted_grams.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <iostream>
#include <iomanip>
#include <map>
diff --git a/fsa/queryproc/p2s_ratio.cpp b/fsa/queryproc/p2s_ratio.cpp
index 9238df6eddc..bf2ae0bf9f4 100644
--- a/fsa/queryproc/p2s_ratio.cpp
+++ b/fsa/queryproc/p2s_ratio.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <iostream>
#include <iomanip>
#include <map>
diff --git a/fsa/queryproc/permute_query.cpp b/fsa/queryproc/permute_query.cpp
index 304ff262508..0e305ef7b75 100644
--- a/fsa/queryproc/permute_query.cpp
+++ b/fsa/queryproc/permute_query.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <iostream>
#include <iomanip>
diff --git a/fsa/queryproc/sort_grams.cpp b/fsa/queryproc/sort_grams.cpp
index 764ccf09ce0..7be42d75dee 100644
--- a/fsa/queryproc/sort_grams.cpp
+++ b/fsa/queryproc/sort_grams.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <iostream>
#include <iomanip>
diff --git a/fsa/src/alltest/CMakeLists.txt b/fsa/src/alltest/CMakeLists.txt
index 667920c6a23..dc0f13c0f55 100644
--- a/fsa/src/alltest/CMakeLists.txt
+++ b/fsa/src/alltest/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fsa_conceptnet_test_app
SOURCES
conceptnet_test.cpp
diff --git a/fsa/src/alltest/alltest.sh b/fsa/src/alltest/alltest.sh
index 684cf2e513d..89c0787c239 100755
--- a/fsa/src/alltest/alltest.sh
+++ b/fsa/src/alltest/alltest.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
if [ -z "$SOURCE_DIRECTORY" ]; then
diff --git a/fsa/src/alltest/conceptnet_test.cpp b/fsa/src/alltest/conceptnet_test.cpp
index 3b19f6eade8..9f951e4181d 100644
--- a/fsa/src/alltest/conceptnet_test.cpp
+++ b/fsa/src/alltest/conceptnet_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
diff --git a/fsa/src/alltest/detector_test.cpp b/fsa/src/alltest/detector_test.cpp
index 1cd40f17e4f..87e9b5fb0f5 100644
--- a/fsa/src/alltest/detector_test.cpp
+++ b/fsa/src/alltest/detector_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/alltest/detector_test.sh b/fsa/src/alltest/detector_test.sh
index dd87feeab19..6de5c152273 100755
--- a/fsa/src/alltest/detector_test.sh
+++ b/fsa/src/alltest/detector_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
if [ -z "$SOURCE_DIRECTORY" ]; then
diff --git a/fsa/src/alltest/fsa_create_test.cpp b/fsa/src/alltest/fsa_create_test.cpp
index 3bae88eb66f..7829324cd84 100644
--- a/fsa/src/alltest/fsa_create_test.cpp
+++ b/fsa/src/alltest/fsa_create_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <iostream>
#include <vespa/fsa/fsa.h>
diff --git a/fsa/src/alltest/fsa_perftest.cpp b/fsa/src/alltest/fsa_perftest.cpp
index ab2332f4ed2..0caf1d6013c 100644
--- a/fsa/src/alltest/fsa_perftest.cpp
+++ b/fsa/src/alltest/fsa_perftest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <stdlib.h>
#include <iostream>
diff --git a/fsa/src/alltest/fsa_test.cpp b/fsa/src/alltest/fsa_test.cpp
index e505765cfd9..db2d64dce89 100644
--- a/fsa/src/alltest/fsa_test.cpp
+++ b/fsa/src/alltest/fsa_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
diff --git a/fsa/src/alltest/fsa_test.sh b/fsa/src/alltest/fsa_test.sh
index 3995e949d7e..da00134aea1 100755
--- a/fsa/src/alltest/fsa_test.sh
+++ b/fsa/src/alltest/fsa_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
if [ -z "$SOURCE_DIRECTORY" ]; then
diff --git a/fsa/src/alltest/fsamanager_test.cpp b/fsa/src/alltest/fsamanager_test.cpp
index a4d8b234415..425acad0028 100644
--- a/fsa/src/alltest/fsamanager_test.cpp
+++ b/fsa/src/alltest/fsamanager_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fsa/fsa.h>
#include <vespa/fsamanagers/fsamanager.h>
diff --git a/fsa/src/alltest/lookup_test.cpp b/fsa/src/alltest/lookup_test.cpp
index dcc20075a98..d9ae17658d1 100644
--- a/fsa/src/alltest/lookup_test.cpp
+++ b/fsa/src/alltest/lookup_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <stdlib.h>
#include <iostream>
diff --git a/fsa/src/alltest/lookup_test.sh b/fsa/src/alltest/lookup_test.sh
index 89ff97224d0..1a6a0dd4eb5 100755
--- a/fsa/src/alltest/lookup_test.sh
+++ b/fsa/src/alltest/lookup_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
if [ -z "$SOURCE_DIRECTORY" ]; then
diff --git a/fsa/src/alltest/ngram_test.cpp b/fsa/src/alltest/ngram_test.cpp
index 7ad01ca2e8f..6cc3e0282d7 100644
--- a/fsa/src/alltest/ngram_test.cpp
+++ b/fsa/src/alltest/ngram_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <iostream>
#include <vespa/fsa/permuter.h>
diff --git a/fsa/src/alltest/ngram_test.sh b/fsa/src/alltest/ngram_test.sh
index 59d6d7f2db0..11e0703c013 100755
--- a/fsa/src/alltest/ngram_test.sh
+++ b/fsa/src/alltest/ngram_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
if [ -z "$SOURCE_DIRECTORY" ]; then
diff --git a/fsa/src/alltest/segmenter_test.cpp b/fsa/src/alltest/segmenter_test.cpp
index b0903596954..63a9d36a4d9 100644
--- a/fsa/src/alltest/segmenter_test.cpp
+++ b/fsa/src/alltest/segmenter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/alltest/segmenter_test.sh b/fsa/src/alltest/segmenter_test.sh
index be98ada0e24..45a12ff8a92 100755
--- a/fsa/src/alltest/segmenter_test.sh
+++ b/fsa/src/alltest/segmenter_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
if [ -z "$SOURCE_DIRECTORY" ]; then
diff --git a/fsa/src/alltest/vectorizer_perftest.cpp b/fsa/src/alltest/vectorizer_perftest.cpp
index 4772dcde5df..824c79a4838 100644
--- a/fsa/src/alltest/vectorizer_perftest.cpp
+++ b/fsa/src/alltest/vectorizer_perftest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/alltest/vectorizer_test.cpp b/fsa/src/alltest/vectorizer_test.cpp
index b040c56d3ef..a5b8e1af036 100644
--- a/fsa/src/alltest/vectorizer_test.cpp
+++ b/fsa/src/alltest/vectorizer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/alltest/vectorizer_test.sh b/fsa/src/alltest/vectorizer_test.sh
index 543646f833a..4744e307873 100755
--- a/fsa/src/alltest/vectorizer_test.sh
+++ b/fsa/src/alltest/vectorizer_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
if [ -z "$SOURCE_DIRECTORY" ]; then
diff --git a/fsa/src/apps/fsadump/CMakeLists.txt b/fsa/src/apps/fsadump/CMakeLists.txt
index eea10a89d75..57b1c37c77c 100644
--- a/fsa/src/apps/fsadump/CMakeLists.txt
+++ b/fsa/src/apps/fsadump/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fsa_fsadump_app
SOURCES
fsadump.cpp
diff --git a/fsa/src/apps/fsadump/fsadump.cpp b/fsa/src/apps/fsadump/fsadump.cpp
index 117f755eb22..a32cce4ed7d 100644
--- a/fsa/src/apps/fsadump/fsadump.cpp
+++ b/fsa/src/apps/fsadump/fsadump.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
diff --git a/fsa/src/apps/fsainfo/CMakeLists.txt b/fsa/src/apps/fsainfo/CMakeLists.txt
index d6165a6b314..f81b9dd6e7e 100644
--- a/fsa/src/apps/fsainfo/CMakeLists.txt
+++ b/fsa/src/apps/fsainfo/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fsa_fsainfo_app
SOURCES
fsainfo.cpp
diff --git a/fsa/src/apps/fsainfo/fsainfo.cpp b/fsa/src/apps/fsainfo/fsainfo.cpp
index 76177592257..f35415cb36f 100644
--- a/fsa/src/apps/fsainfo/fsainfo.cpp
+++ b/fsa/src/apps/fsainfo/fsainfo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
diff --git a/fsa/src/apps/makefsa/CMakeLists.txt b/fsa/src/apps/makefsa/CMakeLists.txt
index f31deff3af5..3d9c5c7dc0b 100644
--- a/fsa/src/apps/makefsa/CMakeLists.txt
+++ b/fsa/src/apps/makefsa/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(fsa_makefsa_app
SOURCES
makefsa.cpp
diff --git a/fsa/src/apps/makefsa/makefsa.cpp b/fsa/src/apps/makefsa/makefsa.cpp
index 72162851f16..36ff1813a64 100644
--- a/fsa/src/apps/makefsa/makefsa.cpp
+++ b/fsa/src/apps/makefsa/makefsa.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
diff --git a/fsa/src/libfsa/automaton-alternate.h b/fsa/src/libfsa/automaton-alternate.h
index 1d64a08ee52..f84ac4b7612 100644
--- a/fsa/src/libfsa/automaton-alternate.h
+++ b/fsa/src/libfsa/automaton-alternate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/main/java/com/yahoo/fsa/FSA.java b/fsa/src/main/java/com/yahoo/fsa/FSA.java
index 5a4a0e4475f..a964b32c54a 100644
--- a/fsa/src/main/java/com/yahoo/fsa/FSA.java
+++ b/fsa/src/main/java/com/yahoo/fsa/FSA.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.fsa;
import java.io.Closeable;
diff --git a/fsa/src/main/java/com/yahoo/fsa/MetaData.java b/fsa/src/main/java/com/yahoo/fsa/MetaData.java
index a4b69d5abc2..92f07d2fe59 100644
--- a/fsa/src/main/java/com/yahoo/fsa/MetaData.java
+++ b/fsa/src/main/java/com/yahoo/fsa/MetaData.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.fsa;
import java.io.FileInputStream;
diff --git a/fsa/src/main/java/com/yahoo/fsa/conceptnet/ConceptNet.java b/fsa/src/main/java/com/yahoo/fsa/conceptnet/ConceptNet.java
index b72e27152c6..98f01de7556 100644
--- a/fsa/src/main/java/com/yahoo/fsa/conceptnet/ConceptNet.java
+++ b/fsa/src/main/java/com/yahoo/fsa/conceptnet/ConceptNet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.fsa.conceptnet;
import java.io.FileInputStream;
diff --git a/fsa/src/main/java/com/yahoo/fsa/package-info.java b/fsa/src/main/java/com/yahoo/fsa/package-info.java
index 2fc4a520154..1c092703d98 100644
--- a/fsa/src/main/java/com/yahoo/fsa/package-info.java
+++ b/fsa/src/main/java/com/yahoo/fsa/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.fsa;
diff --git a/fsa/src/main/java/com/yahoo/fsa/segmenter/Segment.java b/fsa/src/main/java/com/yahoo/fsa/segmenter/Segment.java
index ab2ec75d7f3..b0589e71ee4 100644
--- a/fsa/src/main/java/com/yahoo/fsa/segmenter/Segment.java
+++ b/fsa/src/main/java/com/yahoo/fsa/segmenter/Segment.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.fsa.segmenter;
/**
diff --git a/fsa/src/main/java/com/yahoo/fsa/segmenter/Segmenter.java b/fsa/src/main/java/com/yahoo/fsa/segmenter/Segmenter.java
index 505085c46cf..7c3e76996bb 100644
--- a/fsa/src/main/java/com/yahoo/fsa/segmenter/Segmenter.java
+++ b/fsa/src/main/java/com/yahoo/fsa/segmenter/Segmenter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.fsa.segmenter;
import java.util.LinkedList;
diff --git a/fsa/src/main/java/com/yahoo/fsa/segmenter/Segments.java b/fsa/src/main/java/com/yahoo/fsa/segmenter/Segments.java
index e01afa91cd5..89368e2bf8f 100644
--- a/fsa/src/main/java/com/yahoo/fsa/segmenter/Segments.java
+++ b/fsa/src/main/java/com/yahoo/fsa/segmenter/Segments.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.fsa.segmenter;
import java.util.LinkedList;
diff --git a/fsa/src/main/java/com/yahoo/fsa/topicpredictor/PredictedTopic.java b/fsa/src/main/java/com/yahoo/fsa/topicpredictor/PredictedTopic.java
index 0610ee96ea6..d494e3a8cae 100644
--- a/fsa/src/main/java/com/yahoo/fsa/topicpredictor/PredictedTopic.java
+++ b/fsa/src/main/java/com/yahoo/fsa/topicpredictor/PredictedTopic.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.fsa.topicpredictor;
diff --git a/fsa/src/main/java/com/yahoo/fsa/topicpredictor/TopicPredictor.java b/fsa/src/main/java/com/yahoo/fsa/topicpredictor/TopicPredictor.java
index cc3ff2e79ac..7049ad5495d 100644
--- a/fsa/src/main/java/com/yahoo/fsa/topicpredictor/TopicPredictor.java
+++ b/fsa/src/main/java/com/yahoo/fsa/topicpredictor/TopicPredictor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.fsa.topicpredictor;
import java.util.logging.Logger;
diff --git a/fsa/src/test/java/com/yahoo/fsa/test/FSADataTestCase.java b/fsa/src/test/java/com/yahoo/fsa/test/FSADataTestCase.java
index 7d18a5b9775..3e9efc68558 100644
--- a/fsa/src/test/java/com/yahoo/fsa/test/FSADataTestCase.java
+++ b/fsa/src/test/java/com/yahoo/fsa/test/FSADataTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.fsa.test;
import com.yahoo.fsa.FSA;
diff --git a/fsa/src/test/java/com/yahoo/fsa/test/FSAIteratorTestCase.java b/fsa/src/test/java/com/yahoo/fsa/test/FSAIteratorTestCase.java
index 06150d606d0..645536e596b 100644
--- a/fsa/src/test/java/com/yahoo/fsa/test/FSAIteratorTestCase.java
+++ b/fsa/src/test/java/com/yahoo/fsa/test/FSAIteratorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.fsa.test;
import com.yahoo.fsa.FSA;
diff --git a/fsa/src/test/java/com/yahoo/fsa/test/FSATestCase.java b/fsa/src/test/java/com/yahoo/fsa/test/FSATestCase.java
index f08f58911ef..7e64362094f 100644
--- a/fsa/src/test/java/com/yahoo/fsa/test/FSATestCase.java
+++ b/fsa/src/test/java/com/yahoo/fsa/test/FSATestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.fsa.test;
import com.yahoo.fsa.FSA;
diff --git a/fsa/src/test/java/com/yahoo/fsa/test/UTF8TestCase.java b/fsa/src/test/java/com/yahoo/fsa/test/UTF8TestCase.java
index fb3e8a3215d..2034ed2f137 100644
--- a/fsa/src/test/java/com/yahoo/fsa/test/UTF8TestCase.java
+++ b/fsa/src/test/java/com/yahoo/fsa/test/UTF8TestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.fsa.test;
import com.yahoo.fsa.FSA;
diff --git a/fsa/src/util/cn_txt2xml b/fsa/src/util/cn_txt2xml
index 8662a869729..b4fe0495f24 100755
--- a/fsa/src/util/cn_txt2xml
+++ b/fsa/src/util/cn_txt2xml
@@ -1,5 +1,5 @@
#!/usr/bin/perl
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
use strict;
diff --git a/fsa/src/util/cn_xml2dat b/fsa/src/util/cn_xml2dat
index e531a955ec5..f355f7aab77 100755
--- a/fsa/src/util/cn_xml2dat
+++ b/fsa/src/util/cn_xml2dat
@@ -1,5 +1,5 @@
#!/usr/bin/perl
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
use strict;
diff --git a/fsa/src/vespa/fsa/CMakeLists.txt b/fsa/src/vespa/fsa/CMakeLists.txt
index 6b85538032e..d43d41f2f5f 100644
--- a/fsa/src/vespa/fsa/CMakeLists.txt
+++ b/fsa/src/vespa/fsa/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(fsa
SOURCES
automaton.cpp
diff --git a/fsa/src/vespa/fsa/automaton-alternate.cpp b/fsa/src/vespa/fsa/automaton-alternate.cpp
index 4b3b8db2d93..205ed08c4ff 100644
--- a/fsa/src/vespa/fsa/automaton-alternate.cpp
+++ b/fsa/src/vespa/fsa/automaton-alternate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
diff --git a/fsa/src/vespa/fsa/automaton.cpp b/fsa/src/vespa/fsa/automaton.cpp
index 5d46a994272..91592078c98 100644
--- a/fsa/src/vespa/fsa/automaton.cpp
+++ b/fsa/src/vespa/fsa/automaton.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
diff --git a/fsa/src/vespa/fsa/automaton.h b/fsa/src/vespa/fsa/automaton.h
index f1bcca87cf6..2c3f38d8a57 100644
--- a/fsa/src/vespa/fsa/automaton.h
+++ b/fsa/src/vespa/fsa/automaton.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsa/base64.cpp b/fsa/src/vespa/fsa/base64.cpp
index a5e418447d9..a326db63ee5 100644
--- a/fsa/src/vespa/fsa/base64.cpp
+++ b/fsa/src/vespa/fsa/base64.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsa/base64.h b/fsa/src/vespa/fsa/base64.h
index ce9acad9f5c..f4e1a485635 100644
--- a/fsa/src/vespa/fsa/base64.h
+++ b/fsa/src/vespa/fsa/base64.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsa/blob.cpp b/fsa/src/vespa/fsa/blob.cpp
index cd1ca9d50ab..306ad5313b2 100644
--- a/fsa/src/vespa/fsa/blob.cpp
+++ b/fsa/src/vespa/fsa/blob.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsa/blob.h b/fsa/src/vespa/fsa/blob.h
index 13eeb38141a..144762c7f46 100644
--- a/fsa/src/vespa/fsa/blob.h
+++ b/fsa/src/vespa/fsa/blob.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsa/checksum.h b/fsa/src/vespa/fsa/checksum.h
index e0e0b7d09f8..da73bfa2032 100644
--- a/fsa/src/vespa/fsa/checksum.h
+++ b/fsa/src/vespa/fsa/checksum.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/09/20
diff --git a/fsa/src/vespa/fsa/conceptnet.cpp b/fsa/src/vespa/fsa/conceptnet.cpp
index 4b6f5508755..657f6d3404c 100644
--- a/fsa/src/vespa/fsa/conceptnet.cpp
+++ b/fsa/src/vespa/fsa/conceptnet.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/10/01
diff --git a/fsa/src/vespa/fsa/conceptnet.h b/fsa/src/vespa/fsa/conceptnet.h
index d17b64bead5..04f931a3230 100644
--- a/fsa/src/vespa/fsa/conceptnet.h
+++ b/fsa/src/vespa/fsa/conceptnet.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/10/01
diff --git a/fsa/src/vespa/fsa/detector.cpp b/fsa/src/vespa/fsa/detector.cpp
index e5b68eb8e01..02c42c8f0f5 100644
--- a/fsa/src/vespa/fsa/detector.cpp
+++ b/fsa/src/vespa/fsa/detector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsa/detector.h b/fsa/src/vespa/fsa/detector.h
index 59d653808fe..24e7da8c86e 100644
--- a/fsa/src/vespa/fsa/detector.h
+++ b/fsa/src/vespa/fsa/detector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsa/file.h b/fsa/src/vespa/fsa/file.h
index 973c316cd73..043c4403d9b 100644
--- a/fsa/src/vespa/fsa/file.h
+++ b/fsa/src/vespa/fsa/file.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2008/05/30
diff --git a/fsa/src/vespa/fsa/fsa.cpp b/fsa/src/vespa/fsa/fsa.cpp
index b9f7fb63b62..50fd8bff85d 100644
--- a/fsa/src/vespa/fsa/fsa.cpp
+++ b/fsa/src/vespa/fsa/fsa.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsa/fsa.h b/fsa/src/vespa/fsa/fsa.h
index 9c668f1f85f..915aeb17a17 100644
--- a/fsa/src/vespa/fsa/fsa.h
+++ b/fsa/src/vespa/fsa/fsa.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsa/metadata.cpp b/fsa/src/vespa/fsa/metadata.cpp
index 3233fb86d46..59adbf39740 100644
--- a/fsa/src/vespa/fsa/metadata.cpp
+++ b/fsa/src/vespa/fsa/metadata.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/10/01
diff --git a/fsa/src/vespa/fsa/metadata.h b/fsa/src/vespa/fsa/metadata.h
index cd43dd454b2..15820602e6a 100644
--- a/fsa/src/vespa/fsa/metadata.h
+++ b/fsa/src/vespa/fsa/metadata.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/12/17
diff --git a/fsa/src/vespa/fsa/ngram.cpp b/fsa/src/vespa/fsa/ngram.cpp
index 2c2dd74c8ac..c8985a3b385 100644
--- a/fsa/src/vespa/fsa/ngram.cpp
+++ b/fsa/src/vespa/fsa/ngram.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsa/ngram.h b/fsa/src/vespa/fsa/ngram.h
index fb76fb10b97..e2c30ffe4d4 100644
--- a/fsa/src/vespa/fsa/ngram.h
+++ b/fsa/src/vespa/fsa/ngram.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsa/permuter.cpp b/fsa/src/vespa/fsa/permuter.cpp
index c783deed68d..47165415b52 100644
--- a/fsa/src/vespa/fsa/permuter.cpp
+++ b/fsa/src/vespa/fsa/permuter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsa/permuter.h b/fsa/src/vespa/fsa/permuter.h
index e264e2e99de..f8b6933e478 100644
--- a/fsa/src/vespa/fsa/permuter.h
+++ b/fsa/src/vespa/fsa/permuter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsa/segmenter.cpp b/fsa/src/vespa/fsa/segmenter.cpp
index 3bcb3f1b489..0800ae284e3 100644
--- a/fsa/src/vespa/fsa/segmenter.cpp
+++ b/fsa/src/vespa/fsa/segmenter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsa/segmenter.h b/fsa/src/vespa/fsa/segmenter.h
index f2826f9c967..b64956618cc 100644
--- a/fsa/src/vespa/fsa/segmenter.h
+++ b/fsa/src/vespa/fsa/segmenter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/09/13
diff --git a/fsa/src/vespa/fsa/selector.cpp b/fsa/src/vespa/fsa/selector.cpp
index 4f3d82c42f8..02cf08826fc 100644
--- a/fsa/src/vespa/fsa/selector.cpp
+++ b/fsa/src/vespa/fsa/selector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsa/selector.h b/fsa/src/vespa/fsa/selector.h
index b9e72cbf5d8..95880077e87 100644
--- a/fsa/src/vespa/fsa/selector.h
+++ b/fsa/src/vespa/fsa/selector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsa/timestamp.h b/fsa/src/vespa/fsa/timestamp.h
index ab1e217758a..774afb680bd 100644
--- a/fsa/src/vespa/fsa/timestamp.h
+++ b/fsa/src/vespa/fsa/timestamp.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsa/tokenizer.h b/fsa/src/vespa/fsa/tokenizer.h
index 398210835b2..3dfa6deb10c 100644
--- a/fsa/src/vespa/fsa/tokenizer.h
+++ b/fsa/src/vespa/fsa/tokenizer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsa/unicode.cpp b/fsa/src/vespa/fsa/unicode.cpp
index 870d16ced2c..c8af6927083 100644
--- a/fsa/src/vespa/fsa/unicode.cpp
+++ b/fsa/src/vespa/fsa/unicode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
diff --git a/fsa/src/vespa/fsa/unicode.h b/fsa/src/vespa/fsa/unicode.h
index 7546a28d1ac..4290505bf2c 100644
--- a/fsa/src/vespa/fsa/unicode.h
+++ b/fsa/src/vespa/fsa/unicode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/fsa/src/vespa/fsa/unicode_charprops.cpp b/fsa/src/vespa/fsa/unicode_charprops.cpp
index 2ba66287967..c747cbbeff7 100644
--- a/fsa/src/vespa/fsa/unicode_charprops.cpp
+++ b/fsa/src/vespa/fsa/unicode_charprops.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
diff --git a/fsa/src/vespa/fsa/unicode_lowercase.cpp b/fsa/src/vespa/fsa/unicode_lowercase.cpp
index a44de774e9d..41757ea47f7 100644
--- a/fsa/src/vespa/fsa/unicode_lowercase.cpp
+++ b/fsa/src/vespa/fsa/unicode_lowercase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
diff --git a/fsa/src/vespa/fsa/unicode_tables.cpp b/fsa/src/vespa/fsa/unicode_tables.cpp
index 31c774c0994..29072cad49d 100644
--- a/fsa/src/vespa/fsa/unicode_tables.cpp
+++ b/fsa/src/vespa/fsa/unicode_tables.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
diff --git a/fsa/src/vespa/fsa/vectorizer.cpp b/fsa/src/vespa/fsa/vectorizer.cpp
index 275a08bf998..af613fcb715 100644
--- a/fsa/src/vespa/fsa/vectorizer.cpp
+++ b/fsa/src/vespa/fsa/vectorizer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsa/vectorizer.h b/fsa/src/vespa/fsa/vectorizer.h
index 5f4c66447ff..3dead2faa2e 100644
--- a/fsa/src/vespa/fsa/vectorizer.h
+++ b/fsa/src/vespa/fsa/vectorizer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsa/wordchartokenizer.cpp b/fsa/src/vespa/fsa/wordchartokenizer.cpp
index 6ae48c595f6..468e7cc257e 100644
--- a/fsa/src/vespa/fsa/wordchartokenizer.cpp
+++ b/fsa/src/vespa/fsa/wordchartokenizer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
diff --git a/fsa/src/vespa/fsa/wordchartokenizer.h b/fsa/src/vespa/fsa/wordchartokenizer.h
index c299906890a..b736ff99c5b 100644
--- a/fsa/src/vespa/fsa/wordchartokenizer.h
+++ b/fsa/src/vespa/fsa/wordchartokenizer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsamanagers/CMakeLists.txt b/fsa/src/vespa/fsamanagers/CMakeLists.txt
index f119a0325b7..8b51f971efd 100644
--- a/fsa/src/vespa/fsamanagers/CMakeLists.txt
+++ b/fsa/src/vespa/fsamanagers/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(fsamanagers
SOURCES
conceptnetmanager.cpp
diff --git a/fsa/src/vespa/fsamanagers/conceptnethandle.h b/fsa/src/vespa/fsamanagers/conceptnethandle.h
index 1d3fc49582d..d1e5564984c 100644
--- a/fsa/src/vespa/fsamanagers/conceptnethandle.h
+++ b/fsa/src/vespa/fsamanagers/conceptnethandle.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/10/01
diff --git a/fsa/src/vespa/fsamanagers/conceptnetmanager.cpp b/fsa/src/vespa/fsamanagers/conceptnetmanager.cpp
index f817d1627bc..a8dad4345f6 100644
--- a/fsa/src/vespa/fsamanagers/conceptnetmanager.cpp
+++ b/fsa/src/vespa/fsamanagers/conceptnetmanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/10/01
diff --git a/fsa/src/vespa/fsamanagers/conceptnetmanager.h b/fsa/src/vespa/fsamanagers/conceptnetmanager.h
index 28cfb064ff5..eddc160bb50 100644
--- a/fsa/src/vespa/fsamanagers/conceptnetmanager.h
+++ b/fsa/src/vespa/fsamanagers/conceptnetmanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/10/01
diff --git a/fsa/src/vespa/fsamanagers/fsahandle.h b/fsa/src/vespa/fsamanagers/fsahandle.h
index 78cf0dbd477..d104d275a37 100644
--- a/fsa/src/vespa/fsamanagers/fsahandle.h
+++ b/fsa/src/vespa/fsamanagers/fsahandle.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/09/07
diff --git a/fsa/src/vespa/fsamanagers/fsamanager.cpp b/fsa/src/vespa/fsamanagers/fsamanager.cpp
index 607175e9ae0..c26e49adedd 100644
--- a/fsa/src/vespa/fsamanagers/fsamanager.cpp
+++ b/fsa/src/vespa/fsamanagers/fsamanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsamanagers/fsamanager.h b/fsa/src/vespa/fsamanagers/fsamanager.h
index b3b21410490..f2c663e6351 100644
--- a/fsa/src/vespa/fsamanagers/fsamanager.h
+++ b/fsa/src/vespa/fsamanagers/fsamanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/09/07
diff --git a/fsa/src/vespa/fsamanagers/metadatahandle.h b/fsa/src/vespa/fsamanagers/metadatahandle.h
index db266b0da81..d525a8e5743 100644
--- a/fsa/src/vespa/fsamanagers/metadatahandle.h
+++ b/fsa/src/vespa/fsamanagers/metadatahandle.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/10/01
diff --git a/fsa/src/vespa/fsamanagers/metadatamanager.cpp b/fsa/src/vespa/fsamanagers/metadatamanager.cpp
index 7d3120b2966..a237a8bd9e9 100644
--- a/fsa/src/vespa/fsamanagers/metadatamanager.cpp
+++ b/fsa/src/vespa/fsamanagers/metadatamanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/10/01
diff --git a/fsa/src/vespa/fsamanagers/metadatamanager.h b/fsa/src/vespa/fsamanagers/metadatamanager.h
index 881ea142f8f..606d4687af0 100644
--- a/fsa/src/vespa/fsamanagers/metadatamanager.h
+++ b/fsa/src/vespa/fsamanagers/metadatamanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/10/01
diff --git a/fsa/src/vespa/fsamanagers/mutex.cpp b/fsa/src/vespa/fsamanagers/mutex.cpp
index ba3e5b70c6f..a1024980472 100644
--- a/fsa/src/vespa/fsamanagers/mutex.cpp
+++ b/fsa/src/vespa/fsamanagers/mutex.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/09/07
diff --git a/fsa/src/vespa/fsamanagers/mutex.h b/fsa/src/vespa/fsamanagers/mutex.h
index 93f17e2e757..15429fe1f90 100644
--- a/fsa/src/vespa/fsamanagers/mutex.h
+++ b/fsa/src/vespa/fsamanagers/mutex.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/09/07
diff --git a/fsa/src/vespa/fsamanagers/refcountable.h b/fsa/src/vespa/fsamanagers/refcountable.h
index ac3fb220955..e3adc88ee27 100644
--- a/fsa/src/vespa/fsamanagers/refcountable.h
+++ b/fsa/src/vespa/fsamanagers/refcountable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/08/20
diff --git a/fsa/src/vespa/fsamanagers/rwlock.cpp b/fsa/src/vespa/fsamanagers/rwlock.cpp
index ee322494968..2a0ed5ec982 100644
--- a/fsa/src/vespa/fsamanagers/rwlock.cpp
+++ b/fsa/src/vespa/fsamanagers/rwlock.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/09/07
diff --git a/fsa/src/vespa/fsamanagers/rwlock.h b/fsa/src/vespa/fsamanagers/rwlock.h
index f441ad15ff4..47b78a50edc 100644
--- a/fsa/src/vespa/fsamanagers/rwlock.h
+++ b/fsa/src/vespa/fsamanagers/rwlock.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/09/07
diff --git a/fsa/src/vespa/fsamanagers/singleton.cpp b/fsa/src/vespa/fsamanagers/singleton.cpp
index 31793c630f6..83ba78b8d82 100644
--- a/fsa/src/vespa/fsamanagers/singleton.cpp
+++ b/fsa/src/vespa/fsamanagers/singleton.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/09/05
diff --git a/fsa/src/vespa/fsamanagers/singleton.h b/fsa/src/vespa/fsamanagers/singleton.h
index ab6bae5b06a..9496dada119 100644
--- a/fsa/src/vespa/fsamanagers/singleton.h
+++ b/fsa/src/vespa/fsamanagers/singleton.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author Peter Boros
* @date 2004/09/05
diff --git a/functions.cmake b/functions.cmake
index fe59cc3aaa9..1ec68a4585f 100644
--- a/functions.cmake
+++ b/functions.cmake
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# @author Vegard Sjonfjell
# @author Arnstein Ressem
@@ -125,17 +125,13 @@ function(vespa_generate_config TARGET RELATIVE_CONFIG_DEF_PATH)
get_filename_component(CONFIG_NAME ${RELATIVE_CONFIG_DEF_PATH} NAME_WE)
endif()
- # configgen.jar takes the parent dir of the destination dir and the destination dirname as separate parameters
- # so it can produce the correct include statements within the generated .cpp-file (silent cry)
# Make config path an absolute_path
set(CONFIG_DEF_PATH ${CMAKE_CURRENT_LIST_DIR}/${RELATIVE_CONFIG_DEF_PATH})
- # Config destination is the
+ # Config destination is the current source directory (or parallel in build tree)
+ # configgen.jar takes the destination dirname as a property parameter
set(CONFIG_DEST_DIR ${CMAKE_CURRENT_BINARY_DIR})
- # Get parent of destination directory
- set(CONFIG_DEST_PARENT_DIR ${CONFIG_DEST_DIR}/..)
-
# Get destination dirname
get_filename_component(CONFIG_DEST_DIRNAME ${CMAKE_CURRENT_BINARY_DIR} NAME)
@@ -144,8 +140,8 @@ function(vespa_generate_config TARGET RELATIVE_CONFIG_DEF_PATH)
add_custom_command(
OUTPUT ${CONFIG_H_PATH} ${CONFIG_CPP_PATH}
- COMMAND java -Dconfig.spec=${CONFIG_DEF_PATH} -Dconfig.dest=${CONFIG_DEST_PARENT_DIR} -Dconfig.lang=cpp -Dconfig.subdir=${CONFIG_DEST_DIRNAME} -Dconfig.dumpTree=false -Xms64m -Xmx64m -jar ${PROJECT_SOURCE_DIR}/configgen/target/configgen.jar
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/..
+ COMMAND java -Dconfig.spec=${CONFIG_DEF_PATH} -Dconfig.dest=${CONFIG_DEST_DIR} -Dconfig.lang=cpp -Dconfig.dumpTree=false -Xms64m -Xmx64m -jar ${PROJECT_SOURCE_DIR}/configgen/target/configgen.jar
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating cpp config for ${CONFIG_NAME} in ${CMAKE_CURRENT_SOURCE_DIR}"
MAIN_DEPENDENCY ${CONFIG_DEF_PATH}
)
@@ -157,11 +153,6 @@ function(vespa_generate_config TARGET RELATIVE_CONFIG_DEF_PATH)
# Add generated to sources for target
target_sources(${TARGET} PRIVATE ${CONFIG_H_PATH} ${CONFIG_CPP_PATH})
- # Needed to be able to do a #include <CONFIG_DEST_DIRNAME/config-<name>.h> for this target
- # This is used within the generated config-<name>.cpp
- # TODO: Should modify configgen to use #include <vespa/<modulename>/config-<name>.h> instead
- target_include_directories(${TARGET} PRIVATE ${CONFIG_DEST_PARENT_DIR})
-
# Needed to be able to do a #include <config-<name>.h> for this target
# This is used within some unit tests
target_include_directories(${TARGET} PRIVATE ${CONFIG_DEST_DIR})
diff --git a/hosted-api/src/main/java/ai/vespa/hosted/api/ControllerHttpClient.java b/hosted-api/src/main/java/ai/vespa/hosted/api/ControllerHttpClient.java
index 6a733bd8942..907d57fffe7 100644
--- a/hosted-api/src/main/java/ai/vespa/hosted/api/ControllerHttpClient.java
+++ b/hosted-api/src/main/java/ai/vespa/hosted/api/ControllerHttpClient.java
@@ -1,9 +1,10 @@
-// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.api;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ApplicationName;
import com.yahoo.config.provision.Environment;
+import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.security.KeyUtils;
@@ -36,9 +37,11 @@ import java.security.cert.X509Certificate;
import java.time.Duration;
import java.time.Instant;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.OptionalLong;
+import java.util.Set;
import java.util.concurrent.Callable;
import java.util.function.Consumer;
import java.util.function.Supplier;
@@ -168,6 +171,35 @@ public abstract class ControllerHttpClient {
GET)));
}
+ /** Returns the application package of the given id. */
+ public HttpResponse<byte[]> applicationPackage(ApplicationId id) {
+ return send(request(HttpRequest.newBuilder(applicationPackagePath(id))
+ .timeout(Duration.ofMinutes(2)),
+ GET));
+ }
+
+ /** Returns the tenants in this system. */
+ public Set<TenantName> tenants() {
+ return toTenants(send(request(HttpRequest.newBuilder(tenantsPath())
+ .timeout(Duration.ofSeconds(20)),
+ GET)));
+ }
+
+ /** Returns the applications for the given tenant. */
+ public Set<ApplicationName> applications(TenantName tenantName) {
+ return toApplications(send(request(HttpRequest.newBuilder(applicationsPath(tenantName))
+ .timeout(Duration.ofSeconds(20)),
+ GET)));
+ }
+
+ /** Returns the application instances for the given tenant. */
+ public Set<ApplicationId> applicationInstances(TenantName tenantName) {
+ return toApplicationInstances(send(request(HttpRequest.newBuilder(applicationsPath(tenantName))
+ .timeout(Duration.ofSeconds(20)),
+ GET)),
+ tenantName);
+ }
+
/** Follows the given deployment job until it is done, or this thread is interrupted, at which point the current status is returned. */
public DeploymentLog followDeploymentUntilDone(ApplicationId id, ZoneId zone, long run,
Consumer<DeploymentLog.Entry> out) {
@@ -220,10 +252,14 @@ public abstract class ControllerHttpClient {
return concatenated(endpoint, "application", "v4");
}
+ private URI tenantsPath() { return concatenated(applicationApiPath(), "tenant"); }
+
private URI tenantPath(TenantName tenant) {
return concatenated(applicationApiPath(), "tenant", tenant.value());
}
+ private URI applicationsPath(TenantName tenant) { return concatenated(tenantPath(tenant), "application"); }
+
private URI applicationPath(TenantName tenant, ApplicationName application) {
return concatenated(tenantPath(tenant), "application", application.value());
}
@@ -265,6 +301,10 @@ public abstract class ControllerHttpClient {
"after", Long.toString(after));
}
+ private URI applicationPackagePath(ApplicationId id) {
+ return concatenated(applicationPath(id.tenant(), id.application()), "package");
+ }
+
private URI defaultRegionPath(Environment environment) {
return concatenated(endpoint, "zone", "v1", "environment", environment.value(), "default");
}
@@ -340,7 +380,8 @@ public abstract class ControllerHttpClient {
Slime slime = new Slime();
Cursor rootObject = slime.setObject();
deployment.version().ifPresent(version -> rootObject.setString("vespaVersion", version));
- rootObject.setBool("deployDirectly", true);
+ if (deployment.isDryRun())
+ rootObject.setString("dryRun", "true");
return toJson(slime);
}
@@ -403,6 +444,32 @@ public abstract class ControllerHttpClient {
: OptionalLong.empty());
}
+ private static Set<TenantName> toTenants(HttpResponse<byte[]> response) {
+ Set<TenantName> tenants = new HashSet<>();
+ toInspector(response).traverse((ArrayTraverser) (___, entryObject) ->
+ tenants.add(TenantName.from(entryObject.field("tenant").asString())));
+ return tenants;
+ }
+
+ private static Set<ApplicationName> toApplications(HttpResponse<byte[]> response) {
+ Set<ApplicationName> applications = new HashSet<>();
+ toInspector(response).traverse((ArrayTraverser) (___, entryObject) ->
+ applications.add(ApplicationName.from(entryObject.field("application").asString())));
+ return applications;
+ }
+
+ private static Set<ApplicationId> toApplicationInstances(HttpResponse<byte[]> response, TenantName tenantName) {
+ Set<ApplicationId> applicationIds = new HashSet<>();
+ toInspector(response).traverse((ArrayTraverser) (___, entryObject) -> {
+ ApplicationName applicationName = ApplicationName.from(entryObject.field("application").asString());
+ entryObject.field("instances").traverse((ArrayTraverser) (____, instanceObject) ->
+ applicationIds.add(ApplicationId.from(tenantName,
+ applicationName,
+ InstanceName.from(instanceObject.field("instance").asString()))));
+ });
+ return applicationIds;
+ }
+
private static Slime toSlime(byte[] data) {
return SlimeUtils.jsonToSlime(data);
}
diff --git a/hosted-api/src/main/java/ai/vespa/hosted/api/Deployment.java b/hosted-api/src/main/java/ai/vespa/hosted/api/Deployment.java
index d012d27fbd8..77cc116b413 100644
--- a/hosted-api/src/main/java/ai/vespa/hosted/api/Deployment.java
+++ b/hosted-api/src/main/java/ai/vespa/hosted/api/Deployment.java
@@ -1,9 +1,8 @@
-// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.api;
import java.nio.file.Path;
import java.util.Optional;
-import java.util.OptionalLong;
/**
* A deployment intended for hosted Vespa, containing an application package and some meta data.
@@ -12,23 +11,31 @@ public class Deployment {
private final Optional<String> version;
private final Path applicationZip;
+ private final boolean dryRun;
- private Deployment(Optional<String> version, Path applicationZip) {
+ private Deployment(Optional<String> version, Path applicationZip, boolean dryRun) {
this.version = version;
this.applicationZip = applicationZip;
+ this.dryRun = dryRun;
}
/** Returns a deployment which will use the provided application package. */
public static Deployment ofPackage(Path applicationZipFile) {
- return new Deployment(Optional.empty(), applicationZipFile);
+ return new Deployment(Optional.empty(), applicationZipFile, false);
}
/** Returns a copy of this which will have the specified Vespa version on its nodes. */
public Deployment atVersion(String vespaVersion) {
- return new Deployment(Optional.of(vespaVersion), applicationZip);
+ return new Deployment(Optional.of(vespaVersion), applicationZip, false);
+ }
+
+ /** Returns a copy of this which will do a dry-run deployment. */
+ public Deployment withDryRun() {
+ return new Deployment(version, applicationZip, true);
}
public Optional<String> version() { return version; }
public Path applicationZip() { return applicationZip; }
+ public boolean isDryRun() { return dryRun; }
}
diff --git a/hosted-api/src/main/java/ai/vespa/hosted/api/TestDescriptor.java b/hosted-api/src/main/java/ai/vespa/hosted/api/TestDescriptor.java
index 6074bd73a20..594cea732a6 100644
--- a/hosted-api/src/main/java/ai/vespa/hosted/api/TestDescriptor.java
+++ b/hosted-api/src/main/java/ai/vespa/hosted/api/TestDescriptor.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.api;
import com.yahoo.slime.Cursor;
diff --git a/hosted-api/src/test/java/ai/vespa/hosted/api/TestDescriptorTest.java b/hosted-api/src/test/java/ai/vespa/hosted/api/TestDescriptorTest.java
index d78526c500b..71217b5283e 100644
--- a/hosted-api/src/test/java/ai/vespa/hosted/api/TestDescriptorTest.java
+++ b/hosted-api/src/test/java/ai/vespa/hosted/api/TestDescriptorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.api;
import com.yahoo.test.json.JsonTestHelper;
diff --git a/hosted-tenant-base/pom.xml b/hosted-tenant-base/pom.xml
index 08648f47ce2..8564b423f6d 100644
--- a/hosted-tenant-base/pom.xml
+++ b/hosted-tenant-base/pom.xml
@@ -298,6 +298,52 @@
<vespaVersion>${vespa.runtime.version}</vespaVersion>
</properties>
</profile>
+ <profile>
+ <id>ossrh-deploy-vespa</id>
+ <activation>
+ <activeByDefault>false</activeByDefault>
+ </activation>
+ <properties>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-gpg-plugin</artifactId>
+ <version>${maven.gpg.plugin.version}</version>
+ <executions>
+ <execution>
+ <id>sign-artifacts</id>
+ <phase>verify</phase>
+ <goals>
+ <goal>sign</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.sonatype.plugins</groupId>
+ <artifactId>nexus-staging-maven-plugin</artifactId>
+ <version>${nexus.staging.maven.plugin.version}</version>
+ <extensions>true</extensions>
+ <configuration>
+ <serverId>ossrh</serverId>
+ <nexusUrl>https://oss.sonatype.org/</nexusUrl>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <distributionManagement>
+ <snapshotRepository>
+ <id>ossrh</id>
+ <url>${snapshotDeploymentRepository}</url>
+ </snapshotRepository>
+ <repository>
+ <id>ossrh</id>
+ <url>${releaseDeploymentRepository}</url>
+ </repository>
+ </distributionManagement>
+ </profile>
</profiles>
<build>
diff --git a/hosted-zone-api/CMakeLists.txt b/hosted-zone-api/CMakeLists.txt
index cc6b2953759..ebbe7d806a1 100644
--- a/hosted-zone-api/CMakeLists.txt
+++ b/hosted-zone-api/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(hosted-zone-api)
diff --git a/hosted-zone-api/abi-spec.json b/hosted-zone-api/abi-spec.json
index e5d1db476c2..4195fd5f10c 100644
--- a/hosted-zone-api/abi-spec.json
+++ b/hosted-zone-api/abi-spec.json
@@ -1,4 +1,19 @@
{
+ "ai.vespa.cloud.Cluster": {
+ "superClass": "java.lang.Object",
+ "interfaces": [],
+ "attributes": [
+ "public"
+ ],
+ "methods": [
+ "public void <init>(int, java.util.List)",
+ "public int size()",
+ "public java.util.List indices()",
+ "public boolean equals(java.lang.Object)",
+ "public int hashCode()"
+ ],
+ "fields": []
+ },
"ai.vespa.cloud.Environment": {
"superClass": "java.lang.Enum",
"interfaces": [],
@@ -19,6 +34,20 @@
"public static final enum ai.vespa.cloud.Environment prod"
]
},
+ "ai.vespa.cloud.Node": {
+ "superClass": "java.lang.Object",
+ "interfaces": [],
+ "attributes": [
+ "public"
+ ],
+ "methods": [
+ "public void <init>(int)",
+ "public int index()",
+ "public boolean equals(java.lang.Object)",
+ "public int hashCode()"
+ ],
+ "fields": []
+ },
"ai.vespa.cloud.SystemInfo": {
"superClass": "java.lang.Object",
"interfaces": [],
@@ -26,8 +55,10 @@
"public"
],
"methods": [
- "public void <init>(ai.vespa.cloud.Zone)",
- "public ai.vespa.cloud.Zone zone()"
+ "public void <init>(ai.vespa.cloud.Zone, ai.vespa.cloud.Cluster, ai.vespa.cloud.Node)",
+ "public ai.vespa.cloud.Zone zone()",
+ "public ai.vespa.cloud.Cluster cluster()",
+ "public ai.vespa.cloud.Node node()"
],
"fields": []
},
diff --git a/hosted-zone-api/pom.xml b/hosted-zone-api/pom.xml
index 05a291c52bf..e061ff18082 100644
--- a/hosted-zone-api/pom.xml
+++ b/hosted-zone-api/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/hosted-zone-api/src/main/java/ai/vespa/cloud/Cluster.java b/hosted-zone-api/src/main/java/ai/vespa/cloud/Cluster.java
new file mode 100644
index 00000000000..dba0e3f30bc
--- /dev/null
+++ b/hosted-zone-api/src/main/java/ai/vespa/cloud/Cluster.java
@@ -0,0 +1,45 @@
+package ai.vespa.cloud;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * The properties of a cluster of nodes.
+ *
+ * @author gjoranv
+ */
+public class Cluster {
+
+ private final int size;
+ private final List<Integer> indices;
+
+ public Cluster(int size, List<Integer> indices) {
+ Objects.requireNonNull(indices, "Indices cannot be null!");
+ this.size = size;
+ this.indices = Collections.unmodifiableList(indices);
+ }
+
+ /** Returns the number of nodes in this cluster. */
+ public int size() { return size; }
+
+ /** Returns a list of node indices in this cluster. */
+ public List<Integer> indices() {
+ return indices;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ Cluster cluster = (Cluster) o;
+ return size == cluster.size &&
+ indices.equals(cluster.indices);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(size, indices);
+ }
+
+}
diff --git a/hosted-zone-api/src/main/java/ai/vespa/cloud/Environment.java b/hosted-zone-api/src/main/java/ai/vespa/cloud/Environment.java
index 8f1d9fc962a..97efd6f5e4d 100644
--- a/hosted-zone-api/src/main/java/ai/vespa/cloud/Environment.java
+++ b/hosted-zone-api/src/main/java/ai/vespa/cloud/Environment.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.cloud;
/**
diff --git a/hosted-zone-api/src/main/java/ai/vespa/cloud/Node.java b/hosted-zone-api/src/main/java/ai/vespa/cloud/Node.java
new file mode 100644
index 00000000000..19ef2757b6c
--- /dev/null
+++ b/hosted-zone-api/src/main/java/ai/vespa/cloud/Node.java
@@ -0,0 +1,34 @@
+package ai.vespa.cloud;
+
+import java.util.Objects;
+
+/**
+ * A node that is part of a cluster of e.g. Jdisc containers.
+ *
+ * @author gjoranv
+ */
+public class Node {
+
+ private final int index;
+
+ public Node(int index) {
+ this.index = index;
+ }
+
+ /** Returns the unique index for this node in the cluster.
+ * Indices are non-negative, but not necessarily contiguous or starting from zero. */
+ public int index() { return index; }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ Node node = (Node) o;
+ return index == node.index;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(index);
+ }
+}
diff --git a/hosted-zone-api/src/main/java/ai/vespa/cloud/SystemInfo.java b/hosted-zone-api/src/main/java/ai/vespa/cloud/SystemInfo.java
index 0ac93861275..15b06d40948 100644
--- a/hosted-zone-api/src/main/java/ai/vespa/cloud/SystemInfo.java
+++ b/hosted-zone-api/src/main/java/ai/vespa/cloud/SystemInfo.java
@@ -1,6 +1,8 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.cloud;
+import java.util.Objects;
+
/**
* Provides information about the system in which this container is running.
* This is available and can be injected when running in a cloud environment.
@@ -10,12 +12,25 @@ package ai.vespa.cloud;
public class SystemInfo {
private final Zone zone;
+ private final Cluster cluster;
+ private final Node node;
- public SystemInfo(Zone zone) {
+ public SystemInfo(Zone zone, Cluster cluster, Node node) {
+ Objects.requireNonNull(zone, "Zone cannot be null!");
+ Objects.requireNonNull(cluster, "Cluster cannot be null!");
+ Objects.requireNonNull(node, "Node cannot be null!");
this.zone = zone;
+ this.cluster = cluster;
+ this.node = node;
}
/** Returns the zone this is running in */
public Zone zone() { return zone; }
+ /** Returns the cluster this is part of */
+ public Cluster cluster() { return cluster; }
+
+ /** Returns the node this is running on */
+ public Node node() { return node; }
+
}
diff --git a/hosted-zone-api/src/main/java/ai/vespa/cloud/Zone.java b/hosted-zone-api/src/main/java/ai/vespa/cloud/Zone.java
index 48293aa7908..d7b314f0b72 100644
--- a/hosted-zone-api/src/main/java/ai/vespa/cloud/Zone.java
+++ b/hosted-zone-api/src/main/java/ai/vespa/cloud/Zone.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.cloud;
import java.util.Objects;
@@ -16,6 +16,8 @@ public class Zone {
private final String region;
public Zone(Environment environment, String region) {
+ Objects.requireNonNull(environment, "Environment cannot be null!");
+ Objects.requireNonNull(region, "Region cannot be null!");
this.environment = environment;
this.region = region;
}
diff --git a/hosted-zone-api/src/main/java/ai/vespa/cloud/package-info.java b/hosted-zone-api/src/main/java/ai/vespa/cloud/package-info.java
index 259a2bda258..ce03de2c213 100644
--- a/hosted-zone-api/src/main/java/ai/vespa/cloud/package-info.java
+++ b/hosted-zone-api/src/main/java/ai/vespa/cloud/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Public API to the Vespa cloud, available when this container runs in a cloud.
*/
diff --git a/hosted-zone-api/src/test/java/ai/vespa/cloud/SystemInfoTest.java b/hosted-zone-api/src/test/java/ai/vespa/cloud/SystemInfoTest.java
index 6bc8b395e00..7f6921ab114 100644
--- a/hosted-zone-api/src/test/java/ai/vespa/cloud/SystemInfoTest.java
+++ b/hosted-zone-api/src/test/java/ai/vespa/cloud/SystemInfoTest.java
@@ -1,8 +1,10 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.cloud;
import org.junit.Test;
+import java.util.List;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
@@ -14,8 +16,13 @@ public class SystemInfoTest {
@Test
public void testSystemInfo() {
Zone zone = new Zone(Environment.dev, "us-west-1");
- SystemInfo info = new SystemInfo(zone);
+ Cluster cluster = new Cluster(1, List.of());
+ Node node = new Node(0);
+
+ SystemInfo info = new SystemInfo(zone, cluster, node);
assertEquals(zone, info.zone());
+ assertEquals(cluster, info.cluster());
+ assertEquals(node, info.node());
}
@Test
@@ -46,4 +53,20 @@ public class SystemInfoTest {
}
}
+ @Test
+ public void testCluster() {
+ int size = 1;
+ var indices = List.of(1);
+ Cluster cluster = new Cluster(size, indices);
+ assertEquals(size, cluster.size());
+ assertEquals(indices, cluster.indices());
+ }
+
+ @Test
+ public void testNode() {
+ int index = 0;
+ Node node = new Node(index);
+ assertEquals(index, node.index());
+ }
+
}
diff --git a/http-utils/OWNERS b/http-utils/OWNERS
deleted file mode 100644
index 569bf1cc3a1..00000000000
--- a/http-utils/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-bjorncs
diff --git a/http-utils/README.md b/http-utils/README.md
deleted file mode 100644
index 714b7581ad4..00000000000
--- a/http-utils/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-<!-- Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
-# Http utilities for Java
diff --git a/http-utils/pom.xml b/http-utils/pom.xml
deleted file mode 100644
index 2a8ec1b9bb9..00000000000
--- a/http-utils/pom.xml
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0"?>
-<!-- Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>parent</artifactId>
- <version>7-SNAPSHOT</version>
- <relativePath>../parent/pom.xml</relativePath>
- </parent>
- <artifactId>http-utils</artifactId>
- <packaging>jar</packaging>
- <version>7-SNAPSHOT</version>
-
- <properties>
- <!-- vespa-http-client targets jdk8 and uses this library -->
- <!-- TODO remove once vespa-http-client no longer builds against jdk8 -->
- <maven.compiler.release>8</maven.compiler.release>
- </properties>
-
- <dependencies>
- <!-- provided -->
- <dependency>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>security-utils</artifactId>
- <version>${project.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <scope>provided</scope>
- </dependency>
- <!-- Apache client artifacts are provided by the jdisc container and are therefore scoped as such -->
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpcore</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.httpcomponents.client5</groupId>
- <artifactId>httpclient5</artifactId>
- <scope>provided</scope>
- <exclusions>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
- <!-- test scope -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-core</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <jdkToolchain>
- <version>${java.version}</version>
- </jdkToolchain>
- <source>${java.version}</source>
- <target>${java.version}</target>
- <showDeprecation>true</showDeprecation>
- <compilerArgs>
- <arg>-Xlint:all</arg>
- <arg>-Xlint:-serial</arg>
- <arg>-Werror</arg>
- </compilerArgs>
- </configuration>
- </plugin>
- </plugins>
- </build>
-</project>
diff --git a/indexinglanguage/pom.xml b/indexinglanguage/pom.xml
index 0c6791e05b5..cfc7b09a934 100644
--- a/indexinglanguage/pom.xml
+++ b/indexinglanguage/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/AdapterFactory.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/AdapterFactory.java
index c172e50daeb..7d33e01d777 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/AdapterFactory.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/AdapterFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.Document;
@@ -11,7 +11,8 @@ import java.util.List;
*/
public interface AdapterFactory {
- public DocumentAdapter newDocumentAdapter(Document doc);
+ DocumentAdapter newDocumentAdapter(Document doc);
+
+ List<UpdateAdapter> newUpdateAdapterList(DocumentUpdate upd);
- public List<UpdateAdapter> newUpdateAdapterList(DocumentUpdate upd);
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/DocumentAdapter.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/DocumentAdapter.java
index 6becfffaa8c..db0c470797e 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/DocumentAdapter.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/DocumentAdapter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.Document;
@@ -9,7 +9,8 @@ import com.yahoo.vespa.indexinglanguage.expressions.FieldValueAdapter;
*/
public interface DocumentAdapter extends FieldValueAdapter {
- public Document getFullOutput();
+ Document getFullOutput();
+
+ Document getUpdatableOutput();
- public Document getUpdatableOutput();
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ExpressionConverter.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ExpressionConverter.java
index 264c54ce5cb..45d8637aa3e 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ExpressionConverter.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ExpressionConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.collections.Pair;
@@ -121,7 +121,6 @@ public abstract class ExpressionConverter implements Cloneable {
}
@Override
- @SuppressWarnings("CloneDoesntDeclareCloneNotSupportedException")
public ExpressionConverter clone() {
try {
return (ExpressionConverter)super.clone();
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ExpressionOptimizer.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ExpressionOptimizer.java
index 2a87bbc2ec0..5df066f06fa 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ExpressionOptimizer.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ExpressionOptimizer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.vespa.indexinglanguage.expressions.*;
@@ -12,6 +12,7 @@ import java.util.List;
* generates a new execution value without regard for the existing one.
*/
public class ExpressionOptimizer extends ExpressionConverter {
+
@Override
protected boolean shouldConvert(Expression exp) {
return exp instanceof StatementExpression;
@@ -111,4 +112,5 @@ public class ExpressionOptimizer extends ExpressionConverter {
}
}
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ExpressionSearcher.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ExpressionSearcher.java
index f1d338371f3..0c922e0dc1e 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ExpressionSearcher.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ExpressionSearcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.vespa.indexinglanguage.expressions.Expression;
@@ -42,4 +42,5 @@ public class ExpressionSearcher<T extends Expression> {
return exp;
}
}
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ExpressionVisitor.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ExpressionVisitor.java
index 657901bc169..5f7183d60f6 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ExpressionVisitor.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ExpressionVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.vespa.indexinglanguage.expressions.Expression;
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateAdapter.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateAdapter.java
index 84245d789fd..3c3f75a6693 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateAdapter.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateAdapter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.*;
@@ -123,4 +123,5 @@ public class FieldPathUpdateAdapter implements UpdateAdapter {
update.getOriginalWhereClause()));
}
}
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateHelper.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateHelper.java
index 916b442fb74..8050efd51f9 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateHelper.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateHelper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.Document;
@@ -63,4 +63,5 @@ public abstract class FieldPathUpdateHelper {
return true;
}
}
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldUpdateAdapter.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldUpdateAdapter.java
index bb89ce736f7..4182c133000 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldUpdateAdapter.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldUpdateAdapter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.DataType;
@@ -255,4 +255,5 @@ public class FieldUpdateAdapter implements UpdateAdapter {
return super.createValueUpdates(val, nullAssign);
}
}
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldUpdateHelper.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldUpdateHelper.java
index e51f7984d65..fd0642e27ea 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldUpdateHelper.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldUpdateHelper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.DataType;
@@ -126,4 +126,5 @@ public abstract class FieldUpdateHelper {
}
throw new UnsupportedOperationException("Value update type " + upd.getClass().getName() + " not supported.");
}
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldValueConverter.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldValueConverter.java
index 96c740df7bf..4900574f549 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldValueConverter.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldValueConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.DataType;
@@ -127,6 +127,7 @@ public abstract class FieldValueConverter {
}
WeightedSet ret = DataType.getWeightedSet(nextType, val.getDataType().createIfNonExistent(),
val.getDataType().removeIfZero()).createFieldValue();
+
for (Map.Entry<FieldValue, Integer> entry : next.entrySet()) {
ret.put(entry.getKey(), entry.getValue());
}
@@ -151,8 +152,8 @@ public abstract class FieldValueConverter {
* Returns whether or not the given {@link FieldValue} should be converted. If this method returns <em>false</em>,
* the converter will proceed to traverse the value itself to see if its internal can be converted.
*
- * @param value The value to check.
- * @return True to convert, false to traverse.
+ * @param value the value to check
+ * @return true to convert, false to traverse
*/
protected abstract boolean shouldConvert(FieldValue value);
@@ -160,8 +161,9 @@ public abstract class FieldValueConverter {
* Converts the given value. It is IMPERATIVE that the implementation of this method DOES NOT mutate the given
* {@link FieldValue} in place, as that can cause SERIOUS inconsistencies in the parent structures.
*
- * @param value The value to convert.
- * @return The value to replace the old.
+ * @param value the value to convert
+ * @return the value to replace the old
*/
protected abstract FieldValue doConvert(FieldValue value);
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/IdentityFieldPathUpdateAdapter.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/IdentityFieldPathUpdateAdapter.java
index 42c9bd8c10c..5406ca67c63 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/IdentityFieldPathUpdateAdapter.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/IdentityFieldPathUpdateAdapter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.DataType;
@@ -65,4 +65,5 @@ public class IdentityFieldPathUpdateAdapter implements UpdateAdapter {
public void tryOutputType(Expression exp, String fieldName, DataType valueType) {
fwdAdapter.tryOutputType(exp, fieldName, valueType);
}
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ScriptParser.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ScriptParser.java
index 0bc82535ad8..11756ae0907 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ScriptParser.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ScriptParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.javacc.FastCharStream;
@@ -50,18 +50,19 @@ public final class ScriptParser {
});
}
- private static interface ParserMethod<T extends Expression> {
+ private interface ParserMethod<T extends Expression> {
T call(IndexingParser parser) throws ParseException;
}
- private static <T extends Expression> T parse(ScriptParserContext config, ParserMethod<T> method)
+ private static <T extends Expression> T parse(ScriptParserContext context, ParserMethod<T> method)
throws ParseException {
- CharStream input = config.getInputStream();
+ CharStream input = context.getInputStream();
IndexingParser parser = new IndexingParser(input);
- parser.setAnnotatorConfig(config.getAnnotatorConfig());
- parser.setDefaultFieldName(config.getDefaultFieldName());
- parser.setLinguistics(config.getLinguistcs());
+ parser.setAnnotatorConfig(context.getAnnotatorConfig());
+ parser.setDefaultFieldName(context.getDefaultFieldName());
+ parser.setLinguistics(context.getLinguistcs());
+ parser.setEmbedder(context.getEmbedder());
try {
return method.call(parser);
} catch (ParseException e) {
@@ -75,4 +76,5 @@ public final class ScriptParser {
}
}
}
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ScriptParserContext.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ScriptParserContext.java
index 77bd3e0306f..91c24a10e27 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ScriptParserContext.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ScriptParserContext.java
@@ -1,8 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.language.Linguistics;
-import com.yahoo.language.simple.SimpleLinguistics;
+import com.yahoo.language.process.Embedder;
import com.yahoo.vespa.indexinglanguage.linguistics.AnnotatorConfig;
import com.yahoo.vespa.indexinglanguage.parser.CharStream;
@@ -13,11 +13,13 @@ public class ScriptParserContext {
private AnnotatorConfig annotatorConfig = new AnnotatorConfig();
private Linguistics linguistics;
+ private final Embedder embedder;
private String defaultFieldName = null;
private CharStream inputStream = null;
- public ScriptParserContext(Linguistics linguistics) {
+ public ScriptParserContext(Linguistics linguistics, Embedder embedder) {
this.linguistics = linguistics;
+ this.embedder = embedder;
}
public AnnotatorConfig getAnnotatorConfig() {
@@ -38,6 +40,10 @@ public class ScriptParserContext {
return this;
}
+ public Embedder getEmbedder() {
+ return embedder;
+ }
+
public String getDefaultFieldName() {
return defaultFieldName;
}
@@ -55,4 +61,5 @@ public class ScriptParserContext {
inputStream = stream;
return this;
}
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactory.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactory.java
index 35bb70c2a88..f45fe7f97c3 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactory.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.*;
@@ -15,11 +15,13 @@ import java.util.List;
*/
@SuppressWarnings("rawtypes")
public class SimpleAdapterFactory implements AdapterFactory {
+
public static class SelectExpression {
public Expression selectExpression(DocumentType documentType, String fieldName) {
return null;
}
}
+
private final SelectExpression expressionSelector;
public SimpleAdapterFactory() {
@@ -79,4 +81,5 @@ public class SimpleAdapterFactory implements AdapterFactory {
ret.add(FieldUpdateAdapter.fromCompleteUpdate(newDocumentAdapter(complete, true)));
return ret;
}
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleDocumentAdapter.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleDocumentAdapter.java
index 16afa08cf45..f36c44539c7 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleDocumentAdapter.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleDocumentAdapter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.DataType;
@@ -76,7 +76,6 @@ public class SimpleDocumentAdapter implements DocumentAdapter {
}
}
- @SuppressWarnings({ "unchecked" })
@Override
public SimpleDocumentAdapter setOutputValue(Expression exp, String fieldName, FieldValue fieldValue) {
Field field = output.getField(fieldName);
@@ -87,4 +86,5 @@ public class SimpleDocumentAdapter implements DocumentAdapter {
output.setFieldValue(field, fieldValue);
return this;
}
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/StringFieldConverter.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/StringFieldConverter.java
index f66f1d00f93..bb347c3b819 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/StringFieldConverter.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/StringFieldConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.DataType;
@@ -21,4 +21,5 @@ public abstract class StringFieldConverter extends FieldValueConverter {
}
protected abstract FieldValue doConvert(StringFieldValue value);
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/TypedExpressionConverter.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/TypedExpressionConverter.java
index b4085e65505..dc2ce337fe2 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/TypedExpressionConverter.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/TypedExpressionConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.vespa.indexinglanguage.expressions.Expression;
@@ -25,4 +25,5 @@ public abstract class TypedExpressionConverter<T extends Expression> extends Exp
}
protected abstract Expression typedConvert(T exp);
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/UpdateAdapter.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/UpdateAdapter.java
index f1cf9a4ae4b..c6c0b6d9226 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/UpdateAdapter.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/UpdateAdapter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.DocumentUpdate;
@@ -10,6 +10,7 @@ import com.yahoo.vespa.indexinglanguage.expressions.FieldValueAdapter;
*/
public interface UpdateAdapter extends FieldValueAdapter {
- public DocumentUpdate getOutput();
- public Expression getExpression(Expression expression);
+ DocumentUpdate getOutput();
+ Expression getExpression(Expression expression);
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ValueTransformProvider.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ValueTransformProvider.java
index e9bb3dd418d..bbd8c5ebcb8 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ValueTransformProvider.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/ValueTransformProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.vespa.indexinglanguage.expressions.Expression;
@@ -60,4 +60,5 @@ public abstract class ValueTransformProvider extends ExpressionConverter {
protected abstract boolean requiresTransform(Expression exp);
protected abstract Expression newTransform();
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticExpression.java
index 68b9e79e092..fa82c4d88ee 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -68,17 +68,17 @@ public final class ArithmeticExpression extends CompositeExpression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- FieldValue input = ctx.getValue();
- ctx.setValue(evaluate(ctx.setValue(input).execute(lhs).getValue(),
- ctx.setValue(input).execute(rhs).getValue()));
+ protected void doExecute(ExecutionContext context) {
+ FieldValue input = context.getValue();
+ context.setValue(evaluate(context.setValue(input).execute(lhs).getValue(),
+ context.setValue(input).execute(rhs).getValue()));
}
@Override
protected void doVerify(VerificationContext context) {
- DataType input = context.getValue();
- context.setValue(evaluate(context.setValue(input).execute(lhs).getValue(),
- context.setValue(input).execute(rhs).getValue()));
+ DataType input = context.getValueType();
+ context.setValueType(evaluate(context.setValueType(input).execute(lhs).getValueType(),
+ context.setValueType(input).execute(rhs).getValueType()));
}
private static DataType requiredInputType(Expression lhs, Expression rhs) {
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/AttributeExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/AttributeExpression.java
index c1b3242bb19..20684b78df1 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/AttributeExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/AttributeExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
/**
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Base64DecodeExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Base64DecodeExpression.java
index 463c009e0a3..2474dadab77 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Base64DecodeExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Base64DecodeExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -16,10 +16,10 @@ public final class Base64DecodeExpression extends Expression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- String input = String.valueOf(ctx.getValue());
+ protected void doExecute(ExecutionContext context) {
+ String input = String.valueOf(context.getValue());
if (input.isEmpty()) {
- ctx.setValue(new LongFieldValue(Long.MIN_VALUE));
+ context.setValue(new LongFieldValue(Long.MIN_VALUE));
return;
}
if (input.length() > 12) {
@@ -33,12 +33,12 @@ public final class Base64DecodeExpression extends Expression {
for (int i = decoded.length; --i >= 0;) {
output = (output << 8) + (((int)decoded[i]) & 0xff);
}
- ctx.setValue(new LongFieldValue(output));
+ context.setValue(new LongFieldValue(output));
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Base64EncodeExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Base64EncodeExpression.java
index e61ac7051c1..53af897a7ee 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Base64EncodeExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Base64EncodeExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -16,20 +16,20 @@ public final class Base64EncodeExpression extends Expression {
super(DataType.LONG);
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- long input = ((LongFieldValue)ctx.getValue()).getLong();
+ protected void doExecute(ExecutionContext context) {
+ long input = ((LongFieldValue) context.getValue()).getLong();
byte[] output = new byte[8];
for (int i = 0; i < output.length; ++i) {
output[i] = (byte)(input & 0xffL);
input >>>= 8;
}
String encoded = Base64.getEncoder().encodeToString(output);
- ctx.setValue(new StringFieldValue(encoded));
+ context.setValue(new StringFieldValue(encoded));
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CatExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CatExpression.java
index f395446cb10..4c14c633fbf 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CatExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CatExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.ArrayDataType;
@@ -26,40 +26,40 @@ public final class CatExpression extends ExpressionList<Expression> {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- FieldValue input = ctx.getValue();
+ protected void doExecute(ExecutionContext context) {
+ FieldValue input = context.getValue();
DataType inputType = input != null ? input.getDataType() : null;
- VerificationContext ver = new VerificationContext(ctx);
+ VerificationContext ver = new VerificationContext(context);
List<FieldValue> values = new LinkedList<>();
List<DataType> types = new LinkedList<>();
for (Expression exp : this) {
- FieldValue val = ctx.setValue(input).execute(exp).getValue();
+ FieldValue val = context.setValue(input).execute(exp).getValue();
values.add(val);
DataType type;
if (val != null) {
type = val.getDataType();
} else {
- type = ver.setValue(inputType).execute(this).getValue();
+ type = ver.setValueType(inputType).execute(this).getValueType();
}
types.add(type);
}
DataType type = resolveOutputType(types);
- ctx.setValue(type == DataType.STRING ? asString(values) : asCollection(type, values));
+ context.setValue(type == DataType.STRING ? asString(values) : asCollection(type, values));
}
@Override
protected void doVerify(VerificationContext context) {
- DataType input = context.getValue();
+ DataType input = context.getValueType();
List<DataType> types = new LinkedList<>();
for (Expression exp : this) {
- DataType val = context.setValue(input).execute(exp).getValue();
+ DataType val = context.setValueType(input).execute(exp).getValueType();
types.add(val);
if (val == null) {
throw new VerificationException(this, "Attempting to concatenate a null value (" + exp + ").");
}
}
- context.setValue(resolveOutputType(types));
+ context.setValueType(resolveOutputType(types));
}
private static DataType resolveInputType(Collection<? extends Expression> list) {
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ClearStateExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ClearStateExpression.java
index 68aff396c54..8c2608a34ab 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ClearStateExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ClearStateExpression.java
@@ -1,8 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
-import com.yahoo.document.DocumentType;
/**
* @author Simon Thoresen Hult
@@ -13,8 +12,8 @@ public final class ClearStateExpression extends Expression {
super(null);
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- ctx.clear();
+ protected void doExecute(ExecutionContext context) {
+ context.clear();
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CompositeExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CompositeExpression.java
index 4da12bd0361..64043eddab8 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CompositeExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CompositeExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -20,4 +20,5 @@ public abstract class CompositeExpression extends Expression {
}
return new ScriptExpression(new StatementExpression(exp)).toString();
}
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EchoExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EchoExpression.java
index 8d5504b2b1c..0a97e253ba9 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EchoExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EchoExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -26,8 +26,8 @@ public final class EchoExpression extends Expression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- out.println(String.valueOf(ctx.getValue()));
+ protected void doExecute(ExecutionContext context) {
+ out.println(String.valueOf(context.getValue()));
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EmbedExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EmbedExpression.java
new file mode 100644
index 00000000000..66d912cd987
--- /dev/null
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EmbedExpression.java
@@ -0,0 +1,77 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.indexinglanguage.expressions;
+
+import com.yahoo.document.DataType;
+import com.yahoo.document.DocumentType;
+import com.yahoo.document.Field;
+import com.yahoo.document.TensorDataType;
+import com.yahoo.document.datatypes.StringFieldValue;
+import com.yahoo.document.datatypes.TensorFieldValue;
+import com.yahoo.language.process.Embedder;
+import com.yahoo.tensor.Tensor;
+import com.yahoo.tensor.TensorType;
+
+/**
+ * Embeds a string in a tensor space using the configured Embedder component
+ *
+ * @author bratseth
+ */
+public class EmbedExpression extends Expression {
+
+ private final Embedder embedder;
+
+ /** The destination the embedding will be written to on the form [schema name].[field name] */
+ private String destination;
+
+ /** The target type we are embedding into. */
+ private TensorType targetType;
+
+ public EmbedExpression(Embedder embedder) {
+ super(DataType.STRING);
+ this.embedder = embedder;
+ }
+
+ @Override
+ public void setStatementOutput(DocumentType documentType, Field field) {
+ targetType = ((TensorDataType)field.getDataType()).getTensorType();
+ destination = documentType.getName() + "." + field.getName();
+ }
+
+ @Override
+ protected void doExecute(ExecutionContext context) {
+ StringFieldValue input = (StringFieldValue) context.getValue();
+ Tensor tensor = embedder.embed(input.getString(),
+ new Embedder.Context(destination).setLanguage(context.getLanguage()),
+ targetType);
+ context.setValue(new TensorFieldValue(tensor));
+ }
+
+ @Override
+ protected void doVerify(VerificationContext context) {
+ String outputField = context.getOutputField();
+ if (outputField == null)
+ throw new VerificationException(this, "No output field in this statement: " +
+ "Don't know what tensor type to embed into.");
+ DataType outputFieldType = context.getInputType(this, outputField);
+ if ( ! (outputFieldType instanceof TensorDataType) )
+ throw new VerificationException(this, "The type of the output field " + outputField +
+ " is not a tensor but " + outputField);
+ targetType = ((TensorDataType) outputFieldType).getTensorType();
+ context.setValueType(createdOutputType());
+ }
+
+ @Override
+ public DataType createdOutputType() {
+ return new TensorDataType(targetType);
+ }
+
+ @Override
+ public String toString() { return "embed"; }
+
+ @Override
+ public int hashCode() { return 1; }
+
+ @Override
+ public boolean equals(Object o) { return o instanceof EmbedExpression; }
+
+}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExactExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExactExpression.java
index 31633cdc88b..dcf701a6db2 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExactExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExactExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -25,12 +25,12 @@ public final class ExactExpression extends Expression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- StringFieldValue input = (StringFieldValue)ctx.getValue();
+ protected void doExecute(ExecutionContext context) {
+ StringFieldValue input = (StringFieldValue) context.getValue();
if (input.getString().isEmpty()) return;
StringFieldValue output = input.clone();
- ctx.setValue(output);
+ context.setValue(output);
String prev = output.getString();
String next = toLowerCase(prev);
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExecutionContext.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExecutionContext.java
index a4f1e3a5ca4..389259cc811 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExecutionContext.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExecutionContext.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -127,4 +127,5 @@ public class ExecutionContext implements FieldTypeAdapter, FieldValueAdapter, Cl
value = null;
return this;
}
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java
index b23fe4d0ebd..a5b62c73997 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java
@@ -1,11 +1,14 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
import com.yahoo.document.Document;
+import com.yahoo.document.DocumentType;
import com.yahoo.document.DocumentUpdate;
+import com.yahoo.document.Field;
import com.yahoo.document.datatypes.FieldValue;
import com.yahoo.language.Linguistics;
+import com.yahoo.language.process.Embedder;
import com.yahoo.language.simple.SimpleLinguistics;
import com.yahoo.vespa.indexinglanguage.*;
import com.yahoo.vespa.indexinglanguage.parser.IndexingInput;
@@ -19,10 +22,20 @@ public abstract class Expression extends Selectable {
private final DataType inputType;
+ /**
+ * Creates an expression
+ *
+ * @param inputType the type of the input this expression can work with.
+ * UnresolvedDataType.INSTANCE if it works with any type,
+ * and null if it does not consume any input.
+ */
protected Expression(DataType inputType) {
this.inputType = inputType;
}
+ /** Sets the document type and field the statement this expression is part of will write to */
+ public void setStatementOutput(DocumentType documentType, Field field) {}
+
public final FieldValue execute(FieldValue val) {
return execute(new ExecutionContext().setValue(val));
}
@@ -87,14 +100,14 @@ public abstract class Expression extends Selectable {
return context.getValue();
}
- protected abstract void doExecute(ExecutionContext ctx);
+ protected abstract void doExecute(ExecutionContext context);
public final DataType verify() {
return verify(new VerificationContext());
}
public final DataType verify(DataType val) {
- return verify(new VerificationContext().setValue(val));
+ return verify(new VerificationContext().setValueType(val));
}
public final Document verify(Document doc) {
@@ -140,7 +153,7 @@ public abstract class Expression extends Selectable {
public final DataType verify(VerificationContext context) {
if (inputType != null) {
- DataType input = context.getValue();
+ DataType input = context.getValueType();
if (input == null) {
throw new VerificationException(this, "Expected " + inputType.getName() + " input, got null.");
}
@@ -155,7 +168,7 @@ public abstract class Expression extends Selectable {
doVerify(context);
DataType outputType = createdOutputType();
if (outputType != null) {
- DataType output = context.getValue();
+ DataType output = context.getValueType();
if (output == null) {
throw new VerificationException(this, "Expected " + outputType.getName() + " output, got null.");
}
@@ -167,7 +180,7 @@ public abstract class Expression extends Selectable {
output.getName() + ".");
}
}
- return context.getValue();
+ return context.getValueType();
}
protected abstract void doVerify(VerificationContext context);
@@ -178,11 +191,11 @@ public abstract class Expression extends Selectable {
/** Creates an expression with simple lingustics for testing */
public static Expression fromString(String expression) throws ParseException {
- return fromString(expression, new SimpleLinguistics());
+ return fromString(expression, new SimpleLinguistics(), Embedder.throwsOnUse);
}
- public static Expression fromString(String expression, Linguistics linguistics) throws ParseException {
- return newInstance(new ScriptParserContext(linguistics).setInputStream(new IndexingInput(expression)));
+ public static Expression fromString(String expression, Linguistics linguistics, Embedder embedder) throws ParseException {
+ return newInstance(new ScriptParserContext(linguistics, embedder).setInputStream(new IndexingInput(expression)));
}
public static Expression newInstance(ScriptParserContext context) throws ParseException {
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionList.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionList.java
index ca929773a4c..9fe63258605 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionList.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionList.java
@@ -1,8 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
import com.yahoo.document.DocumentType;
+import com.yahoo.document.Field;
import com.yahoo.vespa.objects.ObjectOperation;
import com.yahoo.vespa.objects.ObjectPredicate;
@@ -25,6 +26,12 @@ public abstract class ExpressionList<T extends Expression> extends CompositeExpr
}
}
+ @Override
+ public void setStatementOutput(DocumentType documentType, Field field) {
+ for (Expression expression : expressions)
+ expression.setStatementOutput(documentType, field);
+ }
+
public int size() {
return expressions.size();
}
@@ -70,4 +77,5 @@ public abstract class ExpressionList<T extends Expression> extends CompositeExpr
exp.select(predicate, operation);
}
}
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FieldTypeAdapter.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FieldTypeAdapter.java
index 1e8c9e430ab..79df12ce94c 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FieldTypeAdapter.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FieldTypeAdapter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -8,7 +8,8 @@ import com.yahoo.document.DataType;
*/
public interface FieldTypeAdapter {
- public DataType getInputType(Expression exp, String fieldName);
+ DataType getInputType(Expression exp, String fieldName);
+
+ void tryOutputType(Expression exp, String fieldName, DataType valueType);
- public void tryOutputType(Expression exp, String fieldName, DataType valueType);
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FieldValueAdapter.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FieldValueAdapter.java
index db3cabf8b4c..6f6074db2fd 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FieldValueAdapter.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FieldValueAdapter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.FieldPath;
@@ -9,8 +9,9 @@ import com.yahoo.document.datatypes.FieldValue;
*/
public interface FieldValueAdapter extends FieldTypeAdapter {
- public FieldValue getInputValue(String fieldName);
- public FieldValue getInputValue(FieldPath fieldPath);
+ FieldValue getInputValue(String fieldName);
+ FieldValue getInputValue(FieldPath fieldPath);
+
+ FieldValueAdapter setOutputValue(Expression exp, String fieldName, FieldValue fieldValue);
- public FieldValueAdapter setOutputValue(Expression exp, String fieldName, FieldValue fieldValue);
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FlattenExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FlattenExpression.java
index 91f46381def..8b4fab3ea2f 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FlattenExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FlattenExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -26,8 +26,8 @@ public final class FlattenExpression extends Expression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- StringFieldValue input = (StringFieldValue)ctx.getValue();
+ protected void doExecute(ExecutionContext context) {
+ StringFieldValue input = (StringFieldValue) context.getValue();
SpanTree tree = input.getSpanTree(SpanTrees.LINGUISTICS);
Map<Integer, List<String>> map = new HashMap<>();
for (Annotation anno : tree) {
@@ -65,12 +65,12 @@ public final class FlattenExpression extends Expression {
output.append(inputVal.charAt(i));
}
}
- ctx.setValue(new StringFieldValue(output.toString()));
+ context.setValue(new StringFieldValue(output.toString()));
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ForEachExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ForEachExpression.java
index 4dc2fdd0343..e7c215383aa 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ForEachExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ForEachExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.*;
@@ -27,18 +27,23 @@ public final class ForEachExpression extends CompositeExpression {
}
@Override
- protected void doExecute(final ExecutionContext ctx) {
- FieldValue input = ctx.getValue();
+ public void setStatementOutput(DocumentType documentType, Field field) {
+ exp.setStatementOutput(documentType, field);
+ }
+
+ @Override
+ protected void doExecute(final ExecutionContext context) {
+ FieldValue input = context.getValue();
if (input instanceof Array || input instanceof WeightedSet) {
- FieldValue next = new MyConverter(ctx, exp).convert(input);
+ FieldValue next = new MyConverter(context, exp).convert(input);
if (next == null) {
- VerificationContext vctx = new VerificationContext(ctx);
- vctx.setValue(input.getDataType()).execute(this);
- next = vctx.getValue().createFieldValue();
+ VerificationContext vctx = new VerificationContext(context);
+ vctx.setValueType(input.getDataType()).execute(this);
+ next = vctx.getValueType().createFieldValue();
}
- ctx.setValue(next);
+ context.setValue(next);
} else if (input instanceof Struct) {
- ctx.setValue(new MyConverter(ctx, exp).convert(input));
+ context.setValue(new MyConverter(context, exp).convert(input));
} else {
throw new IllegalArgumentException("Expected Array, Struct or WeightedSet input, got " +
input.getDataType().getName() + ".");
@@ -47,25 +52,25 @@ public final class ForEachExpression extends CompositeExpression {
@Override
protected void doVerify(VerificationContext context) {
- DataType input = context.getValue();
+ DataType input = context.getValueType();
if (input instanceof ArrayDataType || input instanceof WeightedSetDataType) {
- context.setValue(((CollectionDataType)input).getNestedType()).execute(exp);
+ context.setValueType(((CollectionDataType)input).getNestedType()).execute(exp);
if (input instanceof ArrayDataType) {
- context.setValue(DataType.getArray(context.getValue()));
+ context.setValueType(DataType.getArray(context.getValueType()));
} else {
WeightedSetDataType wset = (WeightedSetDataType)input;
- context.setValue(DataType.getWeightedSet(context.getValue(), wset.createIfNonExistent(), wset.removeIfZero()));
+ context.setValueType(DataType.getWeightedSet(context.getValueType(), wset.createIfNonExistent(), wset.removeIfZero()));
}
} else if (input instanceof StructDataType) {
for (Field field : ((StructDataType)input).getFields()) {
DataType fieldType = field.getDataType();
- DataType valueType = context.setValue(fieldType).execute(exp).getValue();
+ DataType valueType = context.setValueType(fieldType).execute(exp).getValueType();
if (!fieldType.isAssignableFrom(valueType)) {
throw new VerificationException(this, "Expected " + fieldType.getName() + " output, got " +
valueType.getName() + ".");
}
}
- context.setValue(input);
+ context.setValueType(input);
} else {
throw new VerificationException(this, "Expected Array, Struct or WeightedSet input, got " +
input.getName() + ".");
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldExpression.java
index 35bdbce1fd2..0156e36628c 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -24,8 +24,8 @@ public final class GetFieldExpression extends Expression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- FieldValue input = ctx.getValue();
+ protected void doExecute(ExecutionContext context) {
+ FieldValue input = context.getValue();
if (!(input instanceof StructuredFieldValue)) {
throw new IllegalArgumentException("Expected structured input, got " + input.getDataType().getName() + ".");
}
@@ -35,12 +35,12 @@ public final class GetFieldExpression extends Expression {
throw new IllegalArgumentException("Field '" + fieldName + "' not found in struct type '" +
struct.getDataType().getName() + "'");
}
- ctx.setValue(struct.getFieldValue(field));
+ context.setValue(struct.getFieldValue(field));
}
@Override
protected void doVerify(VerificationContext context) {
- DataType input = context.getValue();
+ DataType input = context.getValueType();
if (!(input instanceof StructuredDataType)) {
throw new VerificationException(this, "Expected structured input, got " + input.getName() + ".");
}
@@ -49,7 +49,7 @@ public final class GetFieldExpression extends Expression {
throw new VerificationException(this, "Field '" + fieldName + "' not found in struct type '" +
input.getName() + "'");
}
- context.setValue(field.getDataType());
+ context.setValueType(field.getDataType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetVarExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetVarExpression.java
index 50b502049dc..1b44b43729d 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetVarExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetVarExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -20,8 +20,8 @@ public final class GetVarExpression extends Expression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- ctx.setValue(ctx.getVariable(varName));
+ protected void doExecute(ExecutionContext context) {
+ context.setValue(context.getVariable(varName));
}
@Override
@@ -30,7 +30,7 @@ public final class GetVarExpression extends Expression {
if (input == null) {
throw new VerificationException(this, "Variable '" + varName + "' not found.");
}
- context.setValue(input);
+ context.setValueType(input);
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GuardExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GuardExpression.java
index 3973dd8b317..2e32e7ee03e 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GuardExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GuardExpression.java
@@ -1,8 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
import com.yahoo.document.DocumentType;
+import com.yahoo.document.Field;
import com.yahoo.vespa.indexinglanguage.ExpressionVisitor;
import com.yahoo.vespa.indexinglanguage.UpdateAdapter;
import com.yahoo.vespa.objects.ObjectOperation;
@@ -27,11 +28,16 @@ public final class GuardExpression extends CompositeExpression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- if (!shouldExecute && ctx.getAdapter() instanceof UpdateAdapter) {
- ctx.setValue(null);
+ public void setStatementOutput(DocumentType documentType, Field field) {
+ exp.setStatementOutput(documentType, field);
+ }
+
+ @Override
+ protected void doExecute(ExecutionContext context) {
+ if (!shouldExecute && context.getAdapter() instanceof UpdateAdapter) {
+ context.setValue(null);
} else {
- exp.execute(ctx);
+ exp.execute(context);
}
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HexDecodeExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HexDecodeExpression.java
index c97771943b7..4596d3997c9 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HexDecodeExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HexDecodeExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -17,10 +17,10 @@ public final class HexDecodeExpression extends Expression {
super(DataType.STRING);
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- String input = String.valueOf(ctx.getValue());
+ protected void doExecute(ExecutionContext context) {
+ String input = String.valueOf(context.getValue());
if (input.isEmpty()) {
- ctx.setValue(new LongFieldValue(Long.MIN_VALUE));
+ context.setValue(new LongFieldValue(Long.MIN_VALUE));
return;
}
BigInteger output;
@@ -35,12 +35,12 @@ public final class HexDecodeExpression extends Expression {
if (output.compareTo(BigInteger.ZERO) == 1 && output.bitLength() == 64) {
output = output.subtract(ULONG_MAX); // flip to negative
}
- ctx.setValue(new LongFieldValue(output.longValue()));
+ context.setValue(new LongFieldValue(output.longValue()));
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HexEncodeExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HexEncodeExpression.java
index cf91115caad..5e7288b8ecc 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HexEncodeExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HexEncodeExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -14,14 +14,14 @@ public final class HexEncodeExpression extends Expression {
super(DataType.LONG);
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- long input = ((LongFieldValue)ctx.getValue()).getLong();
- ctx.setValue(new StringFieldValue(Long.toHexString(input)));
+ protected void doExecute(ExecutionContext context) {
+ long input = ((LongFieldValue) context.getValue()).getLong();
+ context.setValue(new StringFieldValue(Long.toHexString(input)));
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HostNameExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HostNameExpression.java
index 0c614c7368d..f249dc26864 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HostNameExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HostNameExpression.java
@@ -1,8 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
-import com.yahoo.document.DocumentType;
import com.yahoo.document.datatypes.StringFieldValue;
import static com.yahoo.vespa.defaults.Defaults.getDefaults;
@@ -16,13 +15,13 @@ public final class HostNameExpression extends Expression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- ctx.setValue(new StringFieldValue(normalizeHostName(getDefaults().vespaHostname())));
+ protected void doExecute(ExecutionContext context) {
+ context.setValue(new StringFieldValue(normalizeHostName(getDefaults().vespaHostname())));
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenExpression.java
index 9e7f60aa3e3..7f6be0a9f9a 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenExpression.java
@@ -1,8 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
import com.yahoo.document.DocumentType;
+import com.yahoo.document.Field;
import com.yahoo.document.datatypes.FieldValue;
import com.yahoo.document.datatypes.NumericFieldValue;
import com.yahoo.vespa.objects.ObjectOperation;
@@ -54,6 +55,14 @@ public final class IfThenExpression extends CompositeExpression {
this.ifFalse = ifFalse;
}
+ @Override
+ public void setStatementOutput(DocumentType documentType, Field field) {
+ lhs.setStatementOutput(documentType, field);
+ rhs.setStatementOutput(documentType, field);
+ ifTrue.setStatementOutput(documentType, field);
+ ifFalse.setStatementOutput(documentType, field);
+ }
+
public Expression getLeftHandSide() {
return lhs;
}
@@ -75,34 +84,34 @@ public final class IfThenExpression extends CompositeExpression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- FieldValue input = ctx.getValue();
- FieldValue lhsVal = ctx.setValue(input).execute(lhs).getValue();
+ protected void doExecute(ExecutionContext context) {
+ FieldValue input = context.getValue();
+ FieldValue lhsVal = context.setValue(input).execute(lhs).getValue();
if (lhsVal == null) {
- ctx.setValue(null);
+ context.setValue(null);
return;
}
- FieldValue rhsVal = ctx.setValue(input).execute(rhs).getValue();
+ FieldValue rhsVal = context.setValue(input).execute(rhs).getValue();
if (rhsVal == null) {
- ctx.setValue(null);
+ context.setValue(null);
return;
}
- ctx.setValue(input);
+ context.setValue(input);
if (isTrue(lhsVal, cmp, rhsVal)) {
- ifTrue.execute(ctx);
+ ifTrue.execute(context);
} else if (ifFalse != null) {
- ifFalse.execute(ctx);
+ ifFalse.execute(context);
}
}
@Override
protected void doVerify(VerificationContext context) {
- DataType input = context.getValue();
- context.setValue(input).execute(lhs);
- context.setValue(input).execute(rhs);
- context.setValue(input).execute(ifTrue);
- context.setValue(input).execute(ifFalse);
- context.setValue(input);
+ DataType input = context.getValueType();
+ context.setValueType(input).execute(lhs);
+ context.setValueType(input).execute(rhs);
+ context.setValueType(input).execute(ifTrue);
+ context.setValueType(input).execute(ifFalse);
+ context.setValueType(input);
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/IndexExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/IndexExpression.java
index e5a046d8aa6..3e52843764a 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/IndexExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/IndexExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
/**
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java
index d707a50fbd8..cbec1ddd930 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -9,7 +9,6 @@ import com.yahoo.vespa.objects.ObjectPredicate;
import java.util.ArrayList;
import java.util.List;
-import java.util.concurrent.atomic.AtomicReference;
/**
* @author Simon Thoresen Hult
@@ -29,11 +28,11 @@ public final class InputExpression extends Expression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
+ protected void doExecute(ExecutionContext context) {
if (fieldPath != null) {
- ctx.setValue(ctx.getInputValue(fieldPath));
+ context.setValue(context.getInputValue(fieldPath));
} else {
- ctx.setValue(ctx.getInputValue(fieldName));
+ context.setValue(context.getInputValue(fieldName));
}
}
@@ -43,7 +42,7 @@ public final class InputExpression extends Expression {
if (val == null) {
throw new VerificationException(this, "Field '" + fieldName + "' not found.");
}
- context.setValue(val);
+ context.setValueType(val);
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/JoinExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/JoinExpression.java
index 5cff622f033..cf11196d870 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/JoinExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/JoinExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.ArrayDataType;
@@ -28,8 +28,8 @@ public final class JoinExpression extends Expression {
@SuppressWarnings({ "unchecked" })
@Override
- protected void doExecute(ExecutionContext ctx) {
- FieldValue input = ctx.getValue();
+ protected void doExecute(ExecutionContext context) {
+ FieldValue input = context.getValue();
if (!(input instanceof Array)) {
throw new IllegalArgumentException("Expected Array input, got " + input.getDataType().getName() + ".");
}
@@ -40,16 +40,16 @@ public final class JoinExpression extends Expression {
output.append(delimiter);
}
}
- ctx.setValue(new StringFieldValue(output.toString()));
+ context.setValue(new StringFieldValue(output.toString()));
}
@Override
protected void doVerify(VerificationContext context) {
- DataType input = context.getValue();
+ DataType input = context.getValueType();
if (!(input instanceof ArrayDataType)) {
throw new VerificationException(this, "Expected Array input, got " + input.getName() + ".");
}
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/LiteralBoolExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/LiteralBoolExpression.java
index a989f1a57d2..857e29ba572 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/LiteralBoolExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/LiteralBoolExpression.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -25,7 +25,7 @@ public class LiteralBoolExpression extends Expression {
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/LowerCaseExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/LowerCaseExpression.java
index 106045591e2..a4a40bf988b 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/LowerCaseExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/LowerCaseExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -15,13 +15,13 @@ public final class LowerCaseExpression extends Expression {
super(DataType.STRING);
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- ctx.setValue(new StringFieldValue(toLowerCase(String.valueOf(ctx.getValue()))));
+ protected void doExecute(ExecutionContext context) {
+ context.setValue(new StringFieldValue(toLowerCase(String.valueOf(context.getValue()))));
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/MathResolver.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/MathResolver.java
index c221cc91ebc..128087d3c12 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/MathResolver.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/MathResolver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import java.util.LinkedList;
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NGramExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NGramExpression.java
index 2c56f0e356b..d0181ddbf9d 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NGramExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NGramExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -16,7 +16,7 @@ import com.yahoo.vespa.indexinglanguage.linguistics.LinguisticsAnnotator;
import java.util.Iterator;
/**
- * A filter which splits incoming text into n-grams
+ * A filter which splits incoming text into n-grams.
*
* @author bratseth
*/
@@ -28,7 +28,7 @@ public final class NGramExpression extends Expression {
/**
* Creates an executable ngram expression
*
- * @param linguistics the gram splitter to use, or null if this is used for representation and will not be executed
+ * @param linguistics the gram splitter to use, or null if this is used for representation and will not be executed
* @param gramSize the gram size
*/
public NGramExpression(Linguistics linguistics, int gramSize) {
@@ -46,14 +46,14 @@ public final class NGramExpression extends Expression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- StringFieldValue input = (StringFieldValue)ctx.getValue();
+ protected void doExecute(ExecutionContext context) {
+ StringFieldValue input = (StringFieldValue) context.getValue();
if (input.getSpanTree(SpanTrees.LINGUISTICS) != null) {
// This expression is already executed for this input instance
return;
}
StringFieldValue output = input.clone();
- ctx.setValue(output);
+ context.setValue(output);
SpanList spanList = output.setSpanTree(new SpanTree(SpanTrees.LINGUISTICS)).spanList();
int lastPosition = 0;
@@ -103,7 +103,13 @@ public final class NGramExpression extends Expression {
if (!(obj instanceof NGramExpression)) return false;
NGramExpression rhs = (NGramExpression)obj;
- if (linguistics != rhs.linguistics) return false;
+ if (linguistics == null) {
+ if (rhs.linguistics != null) return false;
+ } else if (rhs.linguistics != null) {
+ if (linguistics.getClass() != rhs.linguistics.getClass()) return false;
+ } else {
+ return false;
+ }
if (gramSize != rhs.gramSize) return false;
return true;
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NormalizeExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NormalizeExpression.java
index 9c6e698a154..0f43c0341f7 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NormalizeExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NormalizeExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -6,12 +6,16 @@ import com.yahoo.document.datatypes.StringFieldValue;
import com.yahoo.language.Linguistics;
import com.yahoo.language.process.Transformer;
+import java.util.logging.Logger;
+import java.util.logging.Level;
+
/**
* @author Simon Thoresen Hult
*/
public final class NormalizeExpression extends Expression {
private final Linguistics linguistics;
+ private static final Logger logger = Logger.getLogger(NormalizeExpression.class.getName());
public NormalizeExpression(Linguistics linguistics) {
super(DataType.STRING);
@@ -22,16 +26,45 @@ public final class NormalizeExpression extends Expression {
return linguistics;
}
+
+ private static String escape(String str) {
+ StringBuilder buf = new StringBuilder();
+ for (char c : str.toCharArray()) {
+ if (c >= ' ') {
+ buf.append(c);
+ } else {
+ buf.append(String.format("U+%04X", (int)c));
+ }
+ }
+ return buf.toString();
+ }
+
@Override
protected void doExecute(ExecutionContext context) {
Transformer transformer = linguistics.getTransformer();
+ var orig = String.valueOf(context.getValue());
+ if (orig.isEmpty()) {
+ return; // must be a no-op for all linguistics/language combinations
+ }
+ var lang = context.resolveLanguage(linguistics);
+ var transformed = transformer.accentDrop(orig, lang);
+ try {
+ context.setValue(new StringFieldValue(transformed));
+ return;
+ } catch (IllegalArgumentException ex) {
+ String msg = ("bad normalize, \n" +
+ "original: >>> " + escape(orig) + " <<<\n" +
+ " -> accentDrop(" + lang + ") -> \n" +
+ "transformed: >>> " + escape(transformed) + " <<<");
+ logger.log(Level.SEVERE, msg);
+ }
context.setValue(new StringFieldValue(transformer.accentDrop(String.valueOf(context.getValue()),
context.resolveLanguage(linguistics))));
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
@@ -48,7 +81,7 @@ public final class NormalizeExpression extends Expression {
public boolean equals(Object o) {
if (!(o instanceof NormalizeExpression)) return false;
NormalizeExpression other = (NormalizeExpression)o;
- if (linguistics != other.linguistics) return false;
+ if (linguistics.getClass() != other.linguistics.getClass()) return false;
return true;
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NowExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NowExpression.java
index c8df0c0d667..5dc626ce841 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NowExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NowExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -25,13 +25,13 @@ public final class NowExpression extends Expression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- ctx.setValue(new LongFieldValue(timer.currentTimeSeconds()));
+ protected void doExecute(ExecutionContext context) {
+ context.setValue(new LongFieldValue(timer.currentTimeSeconds()));
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OptimizePredicateExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OptimizePredicateExpression.java
index 8ba129b92c1..25e65ad84ae 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OptimizePredicateExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OptimizePredicateExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -30,16 +30,16 @@ public final class OptimizePredicateExpression extends Expression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- PredicateFieldValue predicate = ((PredicateFieldValue)ctx.getValue()).clone();
- IntegerFieldValue arity = (IntegerFieldValue)ctx.getVariable("arity");
- LongFieldValue lower_bound = (LongFieldValue)ctx.getVariable("lower_bound");
- LongFieldValue upper_bound = (LongFieldValue)ctx.getVariable("upper_bound");
+ protected void doExecute(ExecutionContext context) {
+ PredicateFieldValue predicate = ((PredicateFieldValue) context.getValue()).clone();
+ IntegerFieldValue arity = (IntegerFieldValue) context.getVariable("arity");
+ LongFieldValue lower_bound = (LongFieldValue) context.getVariable("lower_bound");
+ LongFieldValue upper_bound = (LongFieldValue) context.getVariable("upper_bound");
Long lower = lower_bound != null? lower_bound.getLong() : null;
Long upper = upper_bound != null? upper_bound.getLong() : null;
PredicateOptions options = new PredicateOptions(arity.getInteger(), lower, upper);
predicate.setPredicate(optimizer.process(predicate.getPredicate(), options));
- ctx.setValue(predicate);
+ context.setValue(predicate);
}
@Override
@@ -47,7 +47,7 @@ public final class OptimizePredicateExpression extends Expression {
checkVariable(context, "arity", DataType.INT, true);
checkVariable(context, "lower_bound", DataType.LONG, false);
checkVariable(context, "upper_bound", DataType.LONG, false);
- context.setValue(DataType.PREDICATE);
+ context.setValueType(DataType.PREDICATE);
}
private void checkVariable(VerificationContext ctx, String var, DataType type, boolean required) {
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OutputExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OutputExpression.java
index 2e39c45203d..f2abefe8d5e 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OutputExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OutputExpression.java
@@ -1,8 +1,12 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
-import com.yahoo.document.DocumentType;
+import com.yahoo.vespa.objects.ObjectOperation;
+import com.yahoo.vespa.objects.ObjectPredicate;
+
+import java.util.ArrayList;
+import java.util.List;
/**
* @author Simon Thoresen Hult
@@ -23,13 +27,13 @@ public abstract class OutputExpression extends Expression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- ctx.setOutputValue(this, fieldName, ctx.getValue());
+ protected void doExecute(ExecutionContext context) {
+ context.setOutputValue(this, fieldName, context.getValue());
}
@Override
protected void doVerify(VerificationContext context) {
- context.tryOutputType(this, fieldName, context.getValue());
+ context.tryOutputType(this, fieldName, context.getValueType());
}
@Override
@@ -58,4 +62,23 @@ public abstract class OutputExpression extends Expression {
public int hashCode() {
return getClass().hashCode() + (fieldName != null ? fieldName.hashCode() : 0);
}
+
+ public static class OutputFieldNameExtractor implements ObjectOperation, ObjectPredicate {
+
+ private final List<String> outputFieldNames = new ArrayList<>(1);
+
+ public List<String> getOutputFieldNames() { return outputFieldNames; }
+
+ @Override
+ public void execute(Object obj) {
+ outputFieldNames.add(((OutputExpression) obj).getFieldName());
+ }
+
+ @Override
+ public boolean check(Object obj) {
+ return obj instanceof OutputExpression;
+ }
+
+ }
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ParenthesisExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ParenthesisExpression.java
index 70c9463eb85..30cea57dafc 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ParenthesisExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ParenthesisExpression.java
@@ -1,8 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
import com.yahoo.document.DocumentType;
+import com.yahoo.document.Field;
import com.yahoo.vespa.objects.ObjectOperation;
import com.yahoo.vespa.objects.ObjectPredicate;
@@ -23,8 +24,13 @@ public class ParenthesisExpression extends CompositeExpression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- innerExp.execute(ctx);
+ public void setStatementOutput(DocumentType documentType, Field field) {
+ innerExp.setStatementOutput(documentType, field);
+ }
+
+ @Override
+ protected void doExecute(ExecutionContext context) {
+ innerExp.execute(context);
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/PassthroughExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/PassthroughExpression.java
index 9c87883c35d..02c61c4a05b 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/PassthroughExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/PassthroughExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
/**
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/RandomExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/RandomExpression.java
index a00714798cf..e70af07cf20 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/RandomExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/RandomExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -27,19 +27,19 @@ public final class RandomExpression extends Expression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
+ protected void doExecute(ExecutionContext context) {
int max;
if (this.max != null) {
max = this.max;
} else {
- max = Integer.parseInt(String.valueOf(ctx.getValue()));
+ max = Integer.parseInt(String.valueOf(context.getValue()));
}
- ctx.setValue(new IntegerFieldValue(ThreadLocalRandom.current().nextInt(max)));
+ context.setValue(new IntegerFieldValue(ThreadLocalRandom.current().nextInt(max)));
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java
index 320c47103aa..d8e9cc4d923 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java
@@ -1,9 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
import com.yahoo.document.datatypes.FieldValue;
import com.yahoo.language.Linguistics;
+import com.yahoo.language.process.Embedder;
import com.yahoo.language.simple.SimpleLinguistics;
import com.yahoo.vespa.indexinglanguage.ScriptParser;
import com.yahoo.vespa.indexinglanguage.ScriptParserContext;
@@ -33,21 +34,21 @@ public final class ScriptExpression extends ExpressionList<StatementExpression>
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- FieldValue input = ctx.getValue();
+ protected void doExecute(ExecutionContext context) {
+ FieldValue input = context.getValue();
for (Expression exp : this) {
- ctx.setValue(input).execute(exp);
+ context.setValue(input).execute(exp);
}
- ctx.setValue(input);
+ context.setValue(input);
}
@Override
protected void doVerify(VerificationContext context) {
- DataType input = context.getValue();
+ DataType input = context.getValueType();
for (Expression exp : this) {
- context.setValue(input).execute(exp);
+ context.setValueType(input).execute(exp);
}
- context.setValue(input);
+ context.setValueType(input);
}
private static DataType resolveInputType(Collection<? extends StatementExpression> list) {
@@ -91,11 +92,11 @@ public final class ScriptExpression extends ExpressionList<StatementExpression>
/** Creates an expression with simple lingustics for testing */
@SuppressWarnings("deprecation")
public static ScriptExpression fromString(String expression) throws ParseException {
- return fromString(expression, new SimpleLinguistics());
+ return fromString(expression, new SimpleLinguistics(), Embedder.throwsOnUse);
}
- public static ScriptExpression fromString(String expression, Linguistics linguistics) throws ParseException {
- return newInstance(new ScriptParserContext(linguistics).setInputStream(new IndexingInput(expression)));
+ public static ScriptExpression fromString(String expression, Linguistics linguistics, Embedder embedder) throws ParseException {
+ return newInstance(new ScriptParserContext(linguistics, embedder).setInputStream(new IndexingInput(expression)));
}
public static ScriptExpression newInstance(ScriptParserContext config) throws ParseException {
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SelectInputExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SelectInputExpression.java
index b511410dd10..7baf8ecc9b9 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SelectInputExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SelectInputExpression.java
@@ -1,9 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.collections.Pair;
import com.yahoo.document.DataType;
import com.yahoo.document.DocumentType;
+import com.yahoo.document.Field;
import com.yahoo.document.datatypes.FieldValue;
import com.yahoo.vespa.objects.ObjectOperation;
import com.yahoo.vespa.objects.ObjectPredicate;
@@ -30,29 +31,35 @@ public final class SelectInputExpression extends CompositeExpression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- FieldValue input = ctx.getValue();
+ public void setStatementOutput(DocumentType documentType, Field field) {
+ for (var casePair : cases)
+ casePair.getSecond().setStatementOutput(documentType, field);
+ }
+
+ @Override
+ protected void doExecute(ExecutionContext context) {
+ FieldValue input = context.getValue();
for (Pair<String, Expression> entry : cases) {
- FieldValue val = ctx.getInputValue(entry.getFirst());
+ FieldValue val = context.getInputValue(entry.getFirst());
if (val != null) {
- ctx.setValue(val).execute(entry.getSecond());
+ context.setValue(val).execute(entry.getSecond());
break;
}
}
- ctx.setValue(input);
+ context.setValue(input);
}
@Override
protected void doVerify(VerificationContext context) {
- DataType input = context.getValue();
+ DataType input = context.getValueType();
for (Pair<String, Expression> entry : cases) {
DataType val = context.getInputType(this, entry.getFirst());
if (val == null) {
throw new VerificationException(this, "Field '" + entry.getFirst() + "' not found.");
}
- context.setValue(val).execute(entry.getSecond());
+ context.setValueType(val).execute(entry.getSecond());
}
- context.setValue(input);
+ context.setValueType(input);
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetLanguageExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetLanguageExpression.java
index 8ec766cd1e1..42442eebc13 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetLanguageExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetLanguageExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -15,8 +15,8 @@ public final class SetLanguageExpression extends Expression {
super(DataType.STRING);
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- ctx.setLanguage(Language.fromLanguageTag(String.valueOf(ctx.getValue())));
+ protected void doExecute(ExecutionContext context) {
+ context.setLanguage(Language.fromLanguageTag(String.valueOf(context.getValue())));
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetValueExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetValueExpression.java
index f013e22ebc3..eca5ace1610 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetValueExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetValueExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -25,13 +25,13 @@ public final class SetValueExpression extends Expression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- ctx.setValue(value);
+ protected void doExecute(ExecutionContext context) {
+ context.setValue(value);
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(value.getDataType());
+ context.setValueType(value.getDataType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetVarExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetVarExpression.java
index f15982796ce..a3c7baf7bc4 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetVarExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetVarExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -20,13 +20,13 @@ public final class SetVarExpression extends Expression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- ctx.setVariable(varName, ctx.getValue());
+ protected void doExecute(ExecutionContext context) {
+ context.setVariable(varName, context.getValue());
}
@Override
protected void doVerify(VerificationContext context) {
- DataType next = context.getValue();
+ DataType next = context.getValueType();
DataType prev = context.getVariable(varName);
if (prev != null && !prev.equals(next)) {
throw new VerificationException(this, "Attempting to assign conflicting types to variable '" + varName +
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SplitExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SplitExpression.java
index b436775b151..7755a77916b 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SplitExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SplitExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -25,8 +25,8 @@ public final class SplitExpression extends Expression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- String input = String.valueOf(ctx.getValue());
+ protected void doExecute(ExecutionContext context) {
+ String input = String.valueOf(context.getValue());
Array<StringFieldValue> output = new Array<>(DataType.getArray(DataType.STRING));
if (!input.isEmpty()) {
String[] splits = splitPattern.split(input);
@@ -34,12 +34,12 @@ public final class SplitExpression extends Expression {
output.add(new StringFieldValue(split));
}
}
- ctx.setValue(output);
+ context.setValue(output);
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/StatementExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/StatementExpression.java
index cf1e808946d..c266a0da430 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/StatementExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/StatementExpression.java
@@ -1,8 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
import com.yahoo.language.Linguistics;
+import com.yahoo.language.process.Embedder;
import com.yahoo.language.simple.SimpleLinguistics;
import com.yahoo.vespa.indexinglanguage.ScriptParser;
import com.yahoo.vespa.indexinglanguage.ScriptParserContext;
@@ -10,7 +11,6 @@ import com.yahoo.vespa.indexinglanguage.parser.IndexingInput;
import com.yahoo.vespa.indexinglanguage.parser.ParseException;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
@@ -20,6 +20,9 @@ import java.util.List;
*/
public final class StatementExpression extends ExpressionList<Expression> {
+ /** The name of the (last) output field tthis statement will write to, or null if none */
+ private String outputField;
+
public StatementExpression(Expression... lst) {
this(Arrays.asList(lst));
}
@@ -33,17 +36,21 @@ public final class StatementExpression extends ExpressionList<Expression> {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
+ protected void doExecute(ExecutionContext context) {
for (Expression exp : this) {
- ctx.execute(exp);
+ context.execute(exp);
}
}
@Override
protected void doVerify(VerificationContext context) {
- for (Expression exp : this) {
- context.execute(exp);
+ for (Expression expression : this) {
+ if (expression instanceof OutputExpression)
+ outputField = ((OutputExpression)expression).getFieldName();
}
+ context.setOutputField(outputField);
+ for (Expression expression : this)
+ context.execute(expression);
}
private static DataType resolveInputType(Iterable<Expression> lst) {
@@ -90,13 +97,12 @@ public final class StatementExpression extends ExpressionList<Expression> {
}
/** Creates an expression with simple lingustics for testing */
- @SuppressWarnings("deprecation")
public static StatementExpression fromString(String expression) throws ParseException {
- return fromString(expression, new SimpleLinguistics());
+ return fromString(expression, new SimpleLinguistics(), Embedder.throwsOnUse);
}
- public static StatementExpression fromString(String expression, Linguistics linguistics) throws ParseException {
- return newInstance(new ScriptParserContext(linguistics).setInputStream(new IndexingInput(expression)));
+ public static StatementExpression fromString(String expression, Linguistics linguistics, Embedder embedder) throws ParseException {
+ return newInstance(new ScriptParserContext(linguistics, embedder).setInputStream(new IndexingInput(expression)));
}
public static StatementExpression newInstance(ScriptParserContext config) throws ParseException {
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SubstringExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SubstringExpression.java
index 4b30d646d53..10f6890fbec 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SubstringExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SubstringExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -30,8 +30,8 @@ public final class SubstringExpression extends Expression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- String input = String.valueOf(ctx.getValue());
+ protected void doExecute(ExecutionContext context) {
+ String input = String.valueOf(context.getValue());
int len = input.length();
if (from >= len) {
input = "";
@@ -40,12 +40,12 @@ public final class SubstringExpression extends Expression {
} else {
input = input.substring(from, to);
}
- ctx.setValue(new StringFieldValue(input));
+ context.setValue(new StringFieldValue(input));
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SummaryExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SummaryExpression.java
index ae9a817a77d..c4a2ac7fd88 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SummaryExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SummaryExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
/**
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SwitchExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SwitchExpression.java
index 72dec19ef4e..e46b721df90 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SwitchExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SwitchExpression.java
@@ -1,8 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
import com.yahoo.document.DocumentType;
+import com.yahoo.document.Field;
import com.yahoo.document.datatypes.FieldValue;
import com.yahoo.document.datatypes.StringFieldValue;
import com.yahoo.text.StringUtilities;
@@ -46,8 +47,15 @@ public final class SwitchExpression extends CompositeExpression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- FieldValue input = ctx.getValue();
+ public void setStatementOutput(DocumentType documentType, Field field) {
+ defaultExp.setStatementOutput(documentType, field);
+ for (var expression : cases.values())
+ expression.setStatementOutput(documentType, field);
+ }
+
+ @Override
+ protected void doExecute(ExecutionContext context) {
+ FieldValue input = context.getValue();
Expression exp = null;
if (input != null) {
if (!(input instanceof StringFieldValue)) {
@@ -60,9 +68,9 @@ public final class SwitchExpression extends CompositeExpression {
exp = defaultExp;
}
if (exp != null) {
- exp.execute(ctx);
+ exp.execute(context);
}
- ctx.setValue(input);
+ context.setValue(input);
}
@Override
@@ -75,7 +83,7 @@ public final class SwitchExpression extends CompositeExpression {
@Override
protected void doVerify(VerificationContext context) {
- DataType input = context.getValue();
+ DataType input = context.getValueType();
if (input == null) {
throw new VerificationException(this, "Expected " + DataType.STRING.getName() + " input, got null.");
}
@@ -84,10 +92,10 @@ public final class SwitchExpression extends CompositeExpression {
input.getName() + ".");
}
for (Expression exp : cases.values()) {
- context.setValue(input).execute(exp);
+ context.setValueType(input).execute(exp);
}
- context.setValue(input).execute(defaultExp);
- context.setValue(input);
+ context.setValueType(input).execute(defaultExp);
+ context.setValueType(input);
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ThisExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ThisExpression.java
index 04ce7d2be39..7b4bb32bdb0 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ThisExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ThisExpression.java
@@ -1,8 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
-import com.yahoo.document.DocumentType;
/**
* @author Simon Thoresen Hult
@@ -13,7 +12,7 @@ public final class ThisExpression extends Expression {
super(UnresolvedDataType.INSTANCE);
}
@Override
- protected void doExecute(ExecutionContext ctx) {
+ protected void doExecute(ExecutionContext context) {
// empty
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToArrayExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToArrayExpression.java
index cad3f1f9c04..df0277a23f4 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToArrayExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToArrayExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.ArrayDataType;
@@ -16,20 +16,20 @@ public final class ToArrayExpression extends Expression {
}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
- protected void doExecute(ExecutionContext ctx) {
- FieldValue input = ctx.getValue();
+ protected void doExecute(ExecutionContext context) {
+ FieldValue input = context.getValue();
DataType inputType = input.getDataType();
ArrayDataType outputType = DataType.getArray(inputType);
Array output = outputType.createFieldValue();
output.add(input);
- ctx.setValue(output);
+ context.setValue(output);
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(DataType.getArray(context.getValue()));
+ context.setValueType(DataType.getArray(context.getValueType()));
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToBoolExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToBoolExpression.java
index d6d8ed54d26..18ac6bb1013 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToBoolExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToBoolExpression.java
@@ -1,11 +1,9 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
-import com.yahoo.document.NumericDataType;
import com.yahoo.document.datatypes.BoolFieldValue;
import com.yahoo.document.datatypes.FieldValue;
-import com.yahoo.document.datatypes.LongFieldValue;
import com.yahoo.document.datatypes.NumericFieldValue;
import com.yahoo.document.datatypes.StringFieldValue;
@@ -33,7 +31,7 @@ public final class ToBoolExpression extends Expression {
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToByteExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToByteExpression.java
index 5348493a8fd..4b398594e3e 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToByteExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToByteExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -13,13 +13,13 @@ public final class ToByteExpression extends Expression {
super(UnresolvedDataType.INSTANCE);
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- ctx.setValue(new ByteFieldValue(Byte.valueOf(String.valueOf(ctx.getValue()))));
+ protected void doExecute(ExecutionContext context) {
+ context.setValue(new ByteFieldValue(Byte.valueOf(String.valueOf(context.getValue()))));
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToDoubleExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToDoubleExpression.java
index c9a04693a25..05470d91bb3 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToDoubleExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToDoubleExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -13,13 +13,13 @@ public final class ToDoubleExpression extends Expression {
super(UnresolvedDataType.INSTANCE);
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- ctx.setValue(new DoubleFieldValue(Double.valueOf(String.valueOf(ctx.getValue()))));
+ protected void doExecute(ExecutionContext context) {
+ context.setValue(new DoubleFieldValue(Double.valueOf(String.valueOf(context.getValue()))));
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToFloatExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToFloatExpression.java
index b255702ada3..1396583e788 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToFloatExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToFloatExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -13,13 +13,13 @@ public final class ToFloatExpression extends Expression {
super(UnresolvedDataType.INSTANCE);
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- ctx.setValue(new FloatFieldValue(Float.valueOf(String.valueOf(ctx.getValue()))));
+ protected void doExecute(ExecutionContext context) {
+ context.setValue(new FloatFieldValue(Float.valueOf(String.valueOf(context.getValue()))));
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToIntegerExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToIntegerExpression.java
index 7efc25d8400..6c25b2dfa42 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToIntegerExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToIntegerExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -13,13 +13,13 @@ public final class ToIntegerExpression extends Expression {
super(UnresolvedDataType.INSTANCE);
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- ctx.setValue(new IntegerFieldValue(Integer.valueOf(String.valueOf(ctx.getValue()))));
+ protected void doExecute(ExecutionContext context) {
+ context.setValue(new IntegerFieldValue(Integer.valueOf(String.valueOf(context.getValue()))));
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToLongExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToLongExpression.java
index 74d43fc1693..0a074316773 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToLongExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToLongExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -13,13 +13,13 @@ public final class ToLongExpression extends Expression {
super(UnresolvedDataType.INSTANCE);
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- ctx.setValue(new LongFieldValue(Long.valueOf(String.valueOf(ctx.getValue()))));
+ protected void doExecute(ExecutionContext context) {
+ context.setValue(new LongFieldValue(Long.valueOf(String.valueOf(context.getValue()))));
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToPositionExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToPositionExpression.java
index 4c7cd348fbb..8f41a3329c6 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToPositionExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToPositionExpression.java
@@ -1,8 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
-import com.yahoo.document.DocumentType;
import com.yahoo.document.PositionDataType;
/**
@@ -14,13 +13,13 @@ public final class ToPositionExpression extends Expression {
super(DataType.STRING);
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- ctx.setValue(PositionDataType.fromString(String.valueOf(ctx.getValue())));
+ protected void doExecute(ExecutionContext context) {
+ context.setValue(PositionDataType.fromString(String.valueOf(context.getValue())));
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToStringExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToStringExpression.java
index 36f896a0b7f..0ff127fdc03 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToStringExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToStringExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -13,13 +13,13 @@ public final class ToStringExpression extends Expression {
super(UnresolvedDataType.INSTANCE);
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- ctx.setValue(new StringFieldValue(String.valueOf(ctx.getValue())));
+ protected void doExecute(ExecutionContext context) {
+ context.setValue(new StringFieldValue(String.valueOf(context.getValue())));
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToWsetExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToWsetExpression.java
index 8d511d442df..bb1aa82c502 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToWsetExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToWsetExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -30,20 +30,20 @@ public final class ToWsetExpression extends Expression {
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
- protected void doExecute(ExecutionContext ctx) {
- FieldValue input = ctx.getValue();
+ protected void doExecute(ExecutionContext context) {
+ FieldValue input = context.getValue();
DataType inputType = input.getDataType();
WeightedSetDataType outputType = DataType.getWeightedSet(inputType, createIfNonExistent, removeIfZero);
WeightedSet output = outputType.createFieldValue();
output.add(input);
- ctx.setValue(output);
+ context.setValue(output);
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(DataType.getWeightedSet(context.getValue(), createIfNonExistent, removeIfZero));
+ context.setValueType(DataType.getWeightedSet(context.getValueType(), createIfNonExistent, removeIfZero));
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/TokenizeExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/TokenizeExpression.java
index 1e7983d9bed..577bc1e8d28 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/TokenizeExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/TokenizeExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/TrimExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/TrimExpression.java
index 8dcf360a6ee..6f65dfb3ee4 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/TrimExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/TrimExpression.java
@@ -1,8 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
-import com.yahoo.document.DocumentType;
import com.yahoo.document.datatypes.StringFieldValue;
/**
@@ -15,13 +14,13 @@ public final class TrimExpression extends Expression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- ctx.setValue(new StringFieldValue(String.valueOf(ctx.getValue()).trim()));
+ protected void doExecute(ExecutionContext context) {
+ context.setValue(new StringFieldValue(String.valueOf(context.getValue()).trim()));
}
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/UnresolvedDataType.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/UnresolvedDataType.java
index ef08c01633a..491cee9f064 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/UnresolvedDataType.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/UnresolvedDataType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.PrimitiveDataType;
@@ -19,4 +19,5 @@ final class UnresolvedDataType extends PrimitiveDataType {
public boolean isValueCompatible(FieldValue value) {
return value != null;
}
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/UnresolvedFieldValue.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/UnresolvedFieldValue.java
index 2681865bb42..2abc55a4dcb 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/UnresolvedFieldValue.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/UnresolvedFieldValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationContext.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationContext.java
index 38b8b82f9e9..c667a0019c2 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationContext.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationContext.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -14,6 +14,7 @@ public class VerificationContext implements FieldTypeAdapter, Cloneable {
private final Map<String, DataType> variables = new HashMap<String, DataType>();
private final FieldTypeAdapter adapter;
private DataType value;
+ private String outputField;
public VerificationContext() {
this.adapter = null;
@@ -49,19 +50,30 @@ public class VerificationContext implements FieldTypeAdapter, Cloneable {
return this;
}
- public DataType getValue() {
+ public DataType getValueType() {
return value;
}
- public VerificationContext setValue(DataType value) {
+ /** Sets the output value type */
+ public VerificationContext setValueType(DataType value) {
this.value = value;
return this;
}
+ /** Sets the name of the (last) output field of the statement this is executed as a part of */
+ public void setOutputField(String outputField) { this.outputField = outputField; }
+
+ /**
+ * Returns the name of the (last) output field of the statement this is executed as a part of,
+ * or null if none or not yet verified
+ */
+ public String getOutputField() { return outputField; }
+
public VerificationContext clear() {
variables.clear();
value = null;
return this;
}
+
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationException.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationException.java
index 836600caa2b..ec05b1317e5 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationException.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
/**
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ZCurveExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ZCurveExpression.java
index ed56cdfb604..58dea7cc207 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ZCurveExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ZCurveExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -17,14 +17,14 @@ public final class ZCurveExpression extends Expression {
super(PositionDataType.INSTANCE);
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- Struct input = ((Struct)ctx.getValue());
+ protected void doExecute(ExecutionContext context) {
+ Struct input = ((Struct) context.getValue());
Integer x = getFieldValue(input, PositionDataType.FIELD_X);
Integer y = getFieldValue(input, PositionDataType.FIELD_Y);
if (x != null && y != null) {
- ctx.setValue(new LongFieldValue(ZCurve.encode(x, y)));
+ context.setValue(new LongFieldValue(ZCurve.encode(x, y)));
} else {
- ctx.setValue(DataType.LONG.createFieldValue());
+ context.setValue(DataType.LONG.createFieldValue());
}
}
@@ -35,7 +35,7 @@ public final class ZCurveExpression extends Expression {
@Override
protected void doVerify(VerificationContext context) {
- context.setValue(createdOutputType());
+ context.setValueType(createdOutputType());
}
@Override
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/package-info.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/package-info.java
index f67c61a8500..a901f9358be 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/package-info.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.indexinglanguage.expressions;
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/linguistics/AnnotatorConfig.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/linguistics/AnnotatorConfig.java
index 1d8b296d18c..441ac711cc3 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/linguistics/AnnotatorConfig.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/linguistics/AnnotatorConfig.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.linguistics;
import com.yahoo.language.Language;
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/linguistics/LinguisticsAnnotator.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/linguistics/LinguisticsAnnotator.java
index f6d2be796dc..5986ab44426 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/linguistics/LinguisticsAnnotator.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/linguistics/LinguisticsAnnotator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.linguistics;
import com.yahoo.document.annotation.Annotation;
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/linguistics/package-info.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/linguistics/package-info.java
index c593c8e464a..9bed38877c3 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/linguistics/package-info.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/linguistics/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.indexinglanguage.linguistics;
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/package-info.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/package-info.java
index 95e790cebbf..5f0c387ebbd 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/package-info.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.indexinglanguage;
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/parser/IndexingInput.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/parser/IndexingInput.java
index 8406d48ba09..3646a9f2681 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/parser/IndexingInput.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/parser/IndexingInput.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.parser;
import com.yahoo.javacc.FastCharStream;
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/parser/package-info.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/parser/package-info.java
index a9c4fe92c51..59e4b56359c 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/parser/package-info.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/parser/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.indexinglanguage.parser;
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/predicate/package-info.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/predicate/package-info.java
index 2362e3f41e7..6e010750dfb 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/predicate/package-info.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/predicate/package-info.java
@@ -1,3 +1,3 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@com.yahoo.osgi.annotation.ExportPackage
package com.yahoo.vespa.indexinglanguage.predicate;
diff --git a/indexinglanguage/src/main/javacc/IndexingParser.jj b/indexinglanguage/src/main/javacc/IndexingParser.jj
index 632a19a2c6c..bdbecadecd3 100644
--- a/indexinglanguage/src/main/javacc/IndexingParser.jj
+++ b/indexinglanguage/src/main/javacc/IndexingParser.jj
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// --------------------------------------------------------------------------------
//
// JavaCC options.
@@ -34,6 +34,7 @@ import com.yahoo.text.StringUtilities;
import com.yahoo.vespa.indexinglanguage.expressions.*;
import com.yahoo.vespa.indexinglanguage.linguistics.AnnotatorConfig;
import com.yahoo.language.process.StemMode;
+import com.yahoo.language.process.Embedder;
import com.yahoo.language.Linguistics;
/**
@@ -44,6 +45,7 @@ public class IndexingParser {
private String defaultFieldName;
private Linguistics linguistics;
+ private Embedder embedder;
private AnnotatorConfig annotatorCfg;
public IndexingParser(String str) {
@@ -60,6 +62,11 @@ public class IndexingParser {
return this;
}
+ public IndexingParser setEmbedder(Embedder embedder) {
+ this.embedder = embedder;
+ return this;
+ }
+
public IndexingParser setAnnotatorConfig(AnnotatorConfig cfg) {
annotatorCfg = cfg;
return this;
@@ -150,6 +157,7 @@ TOKEN :
<CREATE_IF_NON_EXISTENT: "create_if_non_existent"> |
<ECHO: "echo"> |
<ELSE: "else"> |
+ <EMBED: "embed"> |
<EXACT: "exact"> |
<FLATTEN: "flatten"> |
<FOR_EACH: "for_each"> |
@@ -275,6 +283,7 @@ Expression value() :
val = base64EncodeExp() |
val = clearStateExp() |
val = echoExp() |
+ val = embedExp() |
val = exactExp() |
val = flattenExp() |
val = forEachExp() |
@@ -356,6 +365,12 @@ Expression echoExp() : { }
{ return new EchoExpression(); }
}
+Expression embedExp() : { }
+{
+ ( <EMBED> )
+ { return new EmbedExpression(embedder); }
+}
+
Expression exactExp() : { }
{
( <EXACT> )
@@ -729,6 +744,7 @@ String identifier() :
<ECHO> |
<EXACT> |
<ELSE> |
+ <EMBED> |
<FLATTEN> |
<FOR_EACH> |
<GET_FIELD> |
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/DocumentTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/DocumentTestCase.java
index b74d6226010..e0960bbd872 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/DocumentTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/DocumentTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.*;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/DocumentToPathUpdateTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/DocumentToPathUpdateTestCase.java
index 3c5eb9ea1c5..da798e4dc0e 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/DocumentToPathUpdateTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/DocumentToPathUpdateTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.*;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/DocumentToValueUpdateTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/DocumentToValueUpdateTestCase.java
index 5ac4227aa14..591f5bdd2c6 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/DocumentToValueUpdateTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/DocumentToValueUpdateTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.*;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/DocumentUpdateTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/DocumentUpdateTestCase.java
index a6362e71594..39ea19b6900 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/DocumentUpdateTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/DocumentUpdateTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.*;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionConverterTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionConverterTestCase.java
index 5c86d0fe836..f1e1be0ae41 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionConverterTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionConverterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.collections.Pair;
@@ -260,7 +260,7 @@ public class ExpressionConverterTestCase {
super(null);
}
@Override
- protected void doExecute(ExecutionContext ctx) {
+ protected void doExecute(ExecutionContext context) {
}
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionOptimizerTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionOptimizerTestCase.java
index b2fae862b3a..f16e170c981 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionOptimizerTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionOptimizerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.datatypes.FieldValue;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionSearcherTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionSearcherTestCase.java
index db539549980..977a7a534db 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionSearcherTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionSearcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.collections.Pair;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionVisitorTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionVisitorTestCase.java
index bf396b79588..8683874d44d 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionVisitorTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionVisitorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.collections.Pair;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/FieldValueConverterTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/FieldValueConverterTestCase.java
index 0759d043900..81b23bd98cf 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/FieldValueConverterTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/FieldValueConverterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/PathUpdateToDocumentTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/PathUpdateToDocumentTestCase.java
index 69d019364f9..91402872658 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/PathUpdateToDocumentTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/PathUpdateToDocumentTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.*;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptParserTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptParserTestCase.java
index 0df3073cd25..87c54fd7abd 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptParserTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptParserTestCase.java
@@ -1,6 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
+import com.yahoo.language.process.Embedder;
import com.yahoo.language.simple.SimpleLinguistics;
import com.yahoo.vespa.indexinglanguage.expressions.EchoExpression;
import com.yahoo.vespa.indexinglanguage.expressions.InputExpression;
@@ -95,7 +96,7 @@ public class ScriptParserTestCase {
}
private static ScriptParserContext newContext(String input) {
- return new ScriptParserContext(new SimpleLinguistics()).setInputStream(new IndexingInput(input));
+ return new ScriptParserContext(new SimpleLinguistics(), Embedder.throwsOnUse).setInputStream(new IndexingInput(input));
}
}
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java
index 14a8f40c46c..f9a6f2225b3 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java
@@ -1,15 +1,25 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.DataType;
import com.yahoo.document.Document;
import com.yahoo.document.DocumentType;
+import com.yahoo.document.Field;
+import com.yahoo.document.TensorDataType;
import com.yahoo.document.datatypes.BoolFieldValue;
import com.yahoo.document.datatypes.StringFieldValue;
+import com.yahoo.document.datatypes.TensorFieldValue;
+import com.yahoo.language.Language;
+import com.yahoo.language.process.Embedder;
+import com.yahoo.language.simple.SimpleLinguistics;
+import com.yahoo.tensor.Tensor;
+import com.yahoo.tensor.TensorType;
import com.yahoo.vespa.indexinglanguage.expressions.*;
import com.yahoo.vespa.indexinglanguage.parser.ParseException;
import org.junit.Test;
+import java.util.List;
+
import static org.junit.Assert.*;
/**
@@ -84,10 +94,57 @@ public class ScriptTestCase {
Document input = new Document(type, "id:scheme:mytype::");
input.setFieldValue("in-1", new StringFieldValue("foo"));
var expression = Expression.fromString("if (input 'in-1' == \"foo\") { true | summary 'mybool' | attribute 'mybool' }");
- System.out.println(expression);
Document output = Expression.execute(expression, input);
assertNotNull(output);
assertEquals(new BoolFieldValue(true), output.getFieldValue("mybool"));
}
+ @Test
+ public void testEmbed() throws ParseException {
+ TensorType tensorType = TensorType.fromSpec("tensor(d[4])");
+ var expression = Expression.fromString("input myText | embed | attribute 'myTensor'",
+ new SimpleLinguistics(),
+ new MockEmbedder("myDocument.myTensor"));
+
+ SimpleTestAdapter adapter = new SimpleTestAdapter();
+ adapter.createField(new Field("myText", DataType.STRING));
+ var tensorField = new Field("myTensor", new TensorDataType(tensorType));
+ adapter.createField(tensorField);
+ adapter.setValue("myText", new StringFieldValue("input text"));
+ expression.setStatementOutput(new DocumentType("myDocument"), tensorField);
+
+ // Necessary to resolve output type
+ VerificationContext verificationContext = new VerificationContext(adapter);
+ assertEquals(TensorDataType.class, expression.verify(verificationContext).getClass());
+
+ ExecutionContext context = new ExecutionContext(adapter);
+ context.setValue(new StringFieldValue("input text"));
+ expression.execute(context);
+ assertNotNull(context);
+ assertTrue(adapter.values.containsKey("myTensor"));
+ assertEquals(Tensor.from(tensorType, "[7,3,0,0]"),
+ ((TensorFieldValue)adapter.values.get("myTensor")).getTensor().get());
+ }
+
+ private static class MockEmbedder implements Embedder {
+
+ private final String expectedDestination;
+
+ public MockEmbedder(String expectedDestination) {
+ this.expectedDestination = expectedDestination;
+ }
+
+ @Override
+ public List<Integer> embed(String text, Embedder.Context context) {
+ return null;
+ }
+
+ @Override
+ public Tensor embed(String text, Embedder.Context context, TensorType tensorType) {
+ assertEquals(expectedDestination, context.getDestination());
+ return Tensor.from(tensorType, "[7,3,0,0]");
+ }
+
+ }
+
}
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactoryTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactoryTestCase.java
index 6d0646e1311..453e2ddbe95 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactoryTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactoryTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/SimpleDocumentAdapterTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/SimpleDocumentAdapterTestCase.java
index 77e81416d4e..76f96a80bb9 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/SimpleDocumentAdapterTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/SimpleDocumentAdapterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.*;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/SimpleTestAdapter.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/SimpleTestAdapter.java
index 5d1cc514d35..cfb82034545 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/SimpleTestAdapter.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/SimpleTestAdapter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.DataType;
@@ -17,8 +17,8 @@ import java.util.Map;
*/
public class SimpleTestAdapter implements FieldValueAdapter {
- private final Map<String, DataType> types = new HashMap<String, DataType>();
- private final Map<String, FieldValue> values = new HashMap<String, FieldValue>();
+ final Map<String, DataType> types = new HashMap<>();
+ final Map<String, FieldValue> values = new HashMap<>();
public SimpleTestAdapter(Field... fields) {
for (Field field : fields) {
@@ -58,9 +58,15 @@ public class SimpleTestAdapter implements FieldValueAdapter {
}
}
+ public SimpleTestAdapter setValue(String fieldName, FieldValue fieldValue) {
+ values.put(fieldName, fieldValue);
+ return this;
+ }
+
@Override
public SimpleTestAdapter setOutputValue(Expression exp, String fieldName, FieldValue fieldValue) {
values.put(fieldName, fieldValue);
return this;
}
+
}
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/TypedExpressionConverterTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/TypedExpressionConverterTestCase.java
index ec5edbdd351..7b642a893ef 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/TypedExpressionConverterTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/TypedExpressionConverterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.vespa.indexinglanguage.expressions.*;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ValueTransformProviderTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ValueTransformProviderTestCase.java
index ad92a16019a..d0e9356ee76 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ValueTransformProviderTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ValueTransformProviderTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.collections.Pair;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ValueUpdateToDocumentTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ValueUpdateToDocumentTestCase.java
index 2468dbe5003..2aaf69fe536 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ValueUpdateToDocumentTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ValueUpdateToDocumentTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage;
import com.yahoo.document.*;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticTestCase.java
index 8b7ea5a141b..91d8f833701 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/AttributeExpressionTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/AttributeExpressionTestCase.java
index f747bdfec3a..1f69a6960e0 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/AttributeExpressionTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/AttributeExpressionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import org.junit.Test;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/Base64DecodeTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/Base64DecodeTestCase.java
index 3e547cedc4b..fee467b4c2c 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/Base64DecodeTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/Base64DecodeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/Base64EncodeTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/Base64EncodeTestCase.java
index e2395acb19b..50c8d540e81 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/Base64EncodeTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/Base64EncodeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/CatTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/CatTestCase.java
index 1b9c546fa19..09341a6f9ba 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/CatTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/CatTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -243,6 +243,6 @@ public class CatTestCase {
SimpleTestAdapter adapter = new SimpleTestAdapter(new Field("a", typeA), new Field("b", typeB));
VerificationContext ctx = new VerificationContext(adapter);
new CatExpression(new InputExpression("a"), new InputExpression("b")).verify(ctx);
- return ctx.getValue();
+ return ctx.getValueType();
}
}
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ClearStateTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ClearStateTestCase.java
index 54983d5df60..96f9ce95bd0 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ClearStateTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ClearStateTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/CompositeExpressionTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/CompositeExpressionTestCase.java
index 1a851716eb4..6ad01e1e9bf 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/CompositeExpressionTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/CompositeExpressionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.datatypes.IntegerFieldValue;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/EchoTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/EchoTestCase.java
index 665ea3d36e2..29a0cd1617d 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/EchoTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/EchoTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExactTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExactTestCase.java
index d491b80fd3d..68661c7b341 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExactTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExactTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExecutionContextTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExecutionContextTestCase.java
index 988931e6daf..7d0c722d396 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExecutionContextTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExecutionContextTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.datatypes.FieldValue;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionAssert.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionAssert.java
index e837b30707d..2608b270cce 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionAssert.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionAssert.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -18,18 +18,18 @@ class ExpressionAssert {
}
public static void assertVerify(DataType valueBefore, Expression exp, DataType expectedValueAfter) {
- assertVerifyCtx(new VerificationContext().setValue(valueBefore), exp, expectedValueAfter);
+ assertVerifyCtx(new VerificationContext().setValueType(valueBefore), exp, expectedValueAfter);
}
public static void assertVerifyThrows(DataType valueBefore, Expression exp, String expectedException) {
- assertVerifyCtxThrows(new VerificationContext().setValue(valueBefore), exp, expectedException);
+ assertVerifyCtxThrows(new VerificationContext().setValueType(valueBefore), exp, expectedException);
}
interface CreateExpression {
Expression create();
}
public static void assertVerifyThrows(DataType valueBefore, CreateExpression createExp, String expectedException) {
- assertVerifyCtxThrows(new VerificationContext().setValue(valueBefore), createExp, expectedException);
+ assertVerifyCtxThrows(new VerificationContext().setValueType(valueBefore), createExp, expectedException);
}
public static void assertVerifyCtxThrows(VerificationContext ctx, CreateExpression createExp, String expectedException) {
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionAssertTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionAssertTestCase.java
index 4b180ba7734..aa43047b527 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionAssertTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionAssertTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionTestCase.java
index 902e091d17c..d3ff552ab10 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/FlattenTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/FlattenTestCase.java
index 8867d64d193..ec0af3ba5f2 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/FlattenTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/FlattenTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ForEachTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ForEachTestCase.java
index b7b4a5cce1a..356910a299a 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ForEachTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ForEachTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -209,7 +209,7 @@ public class ForEachTestCase {
type.addField(new Field("my_int", DataType.INT));
VerificationContext ctx = new VerificationContext(new SimpleTestAdapter());
- ctx.setValue(type);
+ ctx.setValueType(type);
try {
new ForEachExpression(new ToArrayExpression()).verify(ctx);
@@ -246,8 +246,8 @@ public class ForEachTestCase {
super(null);
}
@Override
- protected void doExecute(ExecutionContext ctx) {
- lst.add(ctx.getValue());
+ protected void doExecute(ExecutionContext context) {
+ lst.add(context.getValue());
}
@Override
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldTestCase.java
index 1ceacf3a9cb..9fbb95c0def 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.*;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/GetVarTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/GetVarTestCase.java
index dfe0dfc7c35..30ee50fccc8 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/GetVarTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/GetVarTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/GuardTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/GuardTestCase.java
index f5864fe054d..092ca6b5f59 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/GuardTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/GuardTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.*;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/HexDecodeTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/HexDecodeTestCase.java
index 84c410d4168..b92d7988df2 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/HexDecodeTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/HexDecodeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/HexEncodeTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/HexEncodeTestCase.java
index 7381226776a..14745e5d61d 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/HexEncodeTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/HexEncodeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/HostNameTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/HostNameTestCase.java
index 157d06106d0..40dea6c6865 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/HostNameTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/HostNameTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenTestCase.java
index 95366111176..7f07ad996e1 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/IndexExpressionTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/IndexExpressionTestCase.java
index f3720f61c0b..653110d061d 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/IndexExpressionTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/IndexExpressionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import org.junit.Test;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/InputTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/InputTestCase.java
index c4e681ebbcb..5752c373001 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/InputTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/InputTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.*;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/JoinTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/JoinTestCase.java
index 9b9c02d87b8..a1eb46afd33 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/JoinTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/JoinTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/LiteralBoolExpressionTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/LiteralBoolExpressionTestCase.java
index 1b3beaf10ee..5c25e02df11 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/LiteralBoolExpressionTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/LiteralBoolExpressionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/LowerCaseTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/LowerCaseTestCase.java
index 54f7aac49b3..ce2251d1884 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/LowerCaseTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/LowerCaseTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/MathResolverTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/MathResolverTestCase.java
index c67948e39a9..decd0d7670e 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/MathResolverTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/MathResolverTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.datatypes.FieldValue;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/NGramTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/NGramTestCase.java
index 0b217d5ba9a..4d4f11416cb 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/NGramTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/NGramTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/NormalizeTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/NormalizeTestCase.java
index 8b4f1a8b344..f00ad6a95aa 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/NormalizeTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/NormalizeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -6,8 +6,10 @@ import com.yahoo.document.datatypes.FieldValue;
import com.yahoo.document.datatypes.StringFieldValue;
import com.yahoo.language.Language;
import com.yahoo.language.Linguistics;
+import com.yahoo.language.process.Transformer;
import com.yahoo.language.simple.SimpleLinguistics;
import com.yahoo.vespa.indexinglanguage.SimpleTestAdapter;
+
import org.junit.Test;
import org.mockito.Mockito;
@@ -56,4 +58,63 @@ public class NormalizeTestCase {
assertTrue(val instanceof StringFieldValue);
assertEquals("beyonce", ((StringFieldValue)val).getString());
}
+
+ class MyMockTransformer implements Transformer {
+ public boolean first = true;
+ @Override
+ public String accentDrop(String input, Language language) {
+ if (first) {
+ first = false;
+ return "\u0008";
+ } else {
+ return input.replace(' ', '/');
+ }
+ }
+ }
+
+ boolean getFirst(Transformer t) {
+ assertTrue(t instanceof MyMockTransformer);
+ var mmt = (MyMockTransformer)t;
+ return mmt.first;
+ }
+
+ class MyMockLinguistics extends SimpleLinguistics {
+ private Transformer transformer = new MyMockTransformer();
+ @Override
+ public Transformer getTransformer() {
+ return transformer;
+ }
+
+ @Override
+ public boolean equals(Linguistics other) { return (other instanceof MyMockLinguistics); }
+ }
+
+ @Test
+ public void requireThatBadNormalizeRetries() {
+ ExecutionContext ctx = new ExecutionContext(new SimpleTestAdapter());
+ ctx.setLanguage(Language.ENGLISH);
+ ctx.setValue(new StringFieldValue("bad norm"));
+ var linguistics = new MyMockLinguistics();
+ assertTrue(getFirst(linguistics.getTransformer()));
+ new NormalizeExpression(linguistics).execute(ctx);
+ FieldValue val = ctx.getValue();
+ assertTrue(val instanceof StringFieldValue);
+ assertEquals("bad/norm", ((StringFieldValue)val).getString());
+ assertFalse(getFirst(linguistics.getTransformer()));
+ }
+
+ @Test
+ public void requireThatEmptyIsNop() {
+ ExecutionContext ctx = new ExecutionContext(new SimpleTestAdapter());
+ ctx.setLanguage(Language.ENGLISH);
+ var orig = new StringFieldValue("");
+ ctx.setValue(orig);
+ var linguistics = new MyMockLinguistics();
+ assertTrue(getFirst(linguistics.getTransformer()));
+ new NormalizeExpression(linguistics).execute(ctx);
+ FieldValue val = ctx.getValue();
+ assertTrue(val == orig);
+ assertTrue(getFirst(linguistics.getTransformer()));
+ }
+
}
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/NowTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/NowTestCase.java
index 2c0727e43da..1c35199713c 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/NowTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/NowTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/OptimizePredicateTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/OptimizePredicateTestCase.java
index 06d74a49ed6..28dc12781f0 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/OptimizePredicateTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/OptimizePredicateTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -80,7 +80,7 @@ public class OptimizePredicateTestCase {
assertVerifyThrows(DataType.INT, exp, "Expected predicate input, got int.");
assertVerifyThrows(DataType.PREDICATE, exp, "Variable 'arity' must be set.");
- VerificationContext context = new VerificationContext().setValue(DataType.PREDICATE);
+ VerificationContext context = new VerificationContext().setValueType(DataType.PREDICATE);
context.setVariable("arity", DataType.STRING);
assertVerifyCtxThrows(context, exp, "Variable 'arity' must have type int.");
context.setVariable("arity", DataType.INT);
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/OutputAssert.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/OutputAssert.java
index 810863478ec..26bc531f806 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/OutputAssert.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/OutputAssert.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -32,14 +32,14 @@ class OutputAssert {
}
public static void assertVerify(FieldTypeAdapter adapter, DataType value, Expression exp) {
- assertEquals(value, new VerificationContext(adapter).setValue(value).execute(exp).getValue());
+ assertEquals(value, new VerificationContext(adapter).setValueType(value).execute(exp).getValueType());
}
public static void assertVerifyThrows(FieldTypeAdapter adapter, DataType value, Expression exp,
String expectedException)
{
try {
- new VerificationContext(adapter).setValue(value).execute(exp);
+ new VerificationContext(adapter).setValueType(value).execute(exp);
fail();
} catch (VerificationException e) {
assertEquals(expectedException, e.getMessage());
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/OutputAssertTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/OutputAssertTestCase.java
index 872efd470f6..c3b4298e543 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/OutputAssertTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/OutputAssertTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ParenthesisTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ParenthesisTestCase.java
index f613f560796..9f3a220249b 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ParenthesisTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ParenthesisTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/RandomTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/RandomTestCase.java
index cb735aa9045..8ce7c35d8d6 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/RandomTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/RandomTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptTestCase.java
index d35b678e0d8..2a69f094691 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SelectInputTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SelectInputTestCase.java
index 02644db25f0..46605cc5f6a 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SelectInputTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SelectInputTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.collections.Pair;
@@ -74,7 +74,7 @@ public class SelectInputTestCase {
}
private static void assertVerify(FieldTypeAdapter adapter, DataType value, Expression exp) {
- assertEquals(value, exp.verify(new VerificationContext(adapter).setValue(value)));
+ assertEquals(value, exp.verify(new VerificationContext(adapter).setValueType(value)));
}
private static void assertVerifyThrows(FieldTypeAdapter adapter, Expression exp, String expectedException) {
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SetLanguageTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SetLanguageTestCase.java
index 0a3d7ff10a8..9b95ffc31bb 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SetLanguageTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SetLanguageTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SetValueTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SetValueTestCase.java
index cb0fc92edf6..cace2c5923d 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SetValueTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SetValueTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SetVarTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SetVarTestCase.java
index 85039260cb0..0cae20af29d 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SetVarTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SetVarTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -39,7 +39,7 @@ public class SetVarTestCase {
assertVerifyThrows(null, exp, "Expected any input, got null.");
try {
- new VerificationContext().setVariable("foo", DataType.INT).setValue(DataType.STRING).execute(exp);
+ new VerificationContext().setVariable("foo", DataType.INT).setValueType(DataType.STRING).execute(exp);
fail();
} catch (VerificationException e) {
assertEquals("Attempting to assign conflicting types to variable 'foo', int vs string.", e.getMessage());
@@ -60,11 +60,11 @@ public class SetVarTestCase {
@Test
public void requireThatVariableTypeCanNotChange() {
VerificationContext ctx = new VerificationContext(new SimpleTestAdapter());
- ctx.setValue(DataType.INT);
+ ctx.setValueType(DataType.INT);
new SetVarExpression("out").verify(ctx);
try {
- ctx.setValue(DataType.STRING);
+ ctx.setValueType(DataType.STRING);
new SetVarExpression("out").verify(ctx);
fail();
} catch (VerificationException e) {
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpression.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpression.java
index 462189384c6..db51158d5c2 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpression.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -40,16 +40,16 @@ final class SimpleExpression extends Expression {
}
@Override
- protected void doExecute(ExecutionContext ctx) {
+ protected void doExecute(ExecutionContext context) {
if (hasExecuteValue) {
- ctx.setValue(executeValue);
+ context.setValue(executeValue);
}
}
@Override
protected void doVerify(VerificationContext context) {
if (hasVerifyValue) {
- context.setValue(verifyValue);
+ context.setValueType(verifyValue);
}
}
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpressionTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpressionTestCase.java
index 27e96c63702..cf454908703 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpressionTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpressionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SplitTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SplitTestCase.java
index 329dca5527e..7ad4db41e33 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SplitTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SplitTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/StatementTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/StatementTestCase.java
index bcec637e5e3..2bede31d057 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/StatementTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/StatementTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SubstringTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SubstringTestCase.java
index 308f1e09719..f6c5de398a0 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SubstringTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SubstringTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SummaryExpressionTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SummaryExpressionTestCase.java
index 45136af93cb..b68c4e949a7 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SummaryExpressionTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SummaryExpressionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import org.junit.Test;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SwitchTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SwitchTestCase.java
index e81e2ec1e7b..c79d38f5650 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SwitchTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SwitchTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ThisTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ThisTestCase.java
index 8f1419eaa3f..e33c8330d8e 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ThisTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ThisTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToArrayTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToArrayTestCase.java
index 7bd11afbbb8..294f6f2e266 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToArrayTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToArrayTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.ArrayDataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToBoolTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToBoolTestCase.java
index 5067f0c4c67..920f186c468 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToBoolTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToBoolTestCase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToByteTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToByteTestCase.java
index 8c43afde558..76e075b4315 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToByteTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToByteTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToDoubleTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToDoubleTestCase.java
index fe8881fb837..ab0263ee134 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToDoubleTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToDoubleTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToFloatTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToFloatTestCase.java
index 4f3769bbd73..d36b7c88da3 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToFloatTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToFloatTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToIntegerTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToIntegerTestCase.java
index c0e84270c0f..7831c6f675f 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToIntegerTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToIntegerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToLongTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToLongTestCase.java
index 9ca4fa68948..f586b8ce110 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToLongTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToLongTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToPositionTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToPositionTestCase.java
index 95dc8b36cd0..99d4fc2731f 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToPositionTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToPositionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToStringTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToStringTestCase.java
index e60c9aa4c72..43dfbf76b7f 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToStringTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToStringTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToWsetTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToWsetTestCase.java
index 0e029420386..3b284fd9ae9 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToWsetTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ToWsetTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/TokenizeTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/TokenizeTestCase.java
index 1ab1dd1a6c2..309c57533cc 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/TokenizeTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/TokenizeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/TrimTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/TrimTestCase.java
index be062d55fbc..5664349a96e 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/TrimTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/TrimTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/UnresolvedDataTypeTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/UnresolvedDataTypeTestCase.java
index f95bd58a825..eaabafc501e 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/UnresolvedDataTypeTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/UnresolvedDataTypeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/UnresolvedFieldValueTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/UnresolvedFieldValueTestCase.java
index d590076601b..a1c679e88f5 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/UnresolvedFieldValueTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/UnresolvedFieldValueTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import org.junit.Test;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationContextTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationContextTestCase.java
index eb4aec37770..1df92f647b9 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationContextTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationContextTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
@@ -16,8 +16,8 @@ public class VerificationContextTestCase {
public void requireThatValueCanBeSet() {
VerificationContext ctx = new VerificationContext();
DataType val = DataType.STRING;
- ctx.setValue(val);
- assertSame(val, ctx.getValue());
+ ctx.setValueType(val);
+ assertSame(val, ctx.getValueType());
}
@Test
@@ -31,9 +31,9 @@ public class VerificationContextTestCase {
@Test
public void requireThatClearRemovesValue() {
VerificationContext ctx = new VerificationContext();
- ctx.setValue(DataType.STRING);
+ ctx.setValueType(DataType.STRING);
ctx.clear();
- assertNull(ctx.getValue());
+ assertNull(ctx.getValueType());
}
@Test
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationExceptionTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationExceptionTestCase.java
index 001f2408576..451b5edd843 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationExceptionTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationExceptionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import org.junit.Test;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ZCurveTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ZCurveTestCase.java
index 746fdc36e13..ee6a5793d76 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ZCurveTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ZCurveTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
import com.yahoo.document.DataType;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/linguistics/AnnotatorConfigTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/linguistics/AnnotatorConfigTestCase.java
index e0a6d3adf75..8690bc00685 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/linguistics/AnnotatorConfigTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/linguistics/AnnotatorConfigTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.linguistics;
import com.yahoo.language.Language;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/linguistics/LinguisticsAnnotatorTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/linguistics/LinguisticsAnnotatorTestCase.java
index 5f436720990..335fccf597e 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/linguistics/LinguisticsAnnotatorTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/linguistics/LinguisticsAnnotatorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.linguistics;
import com.yahoo.document.annotation.Annotation;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/DefaultFieldNameTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/DefaultFieldNameTestCase.java
index 77998a9ac05..f6aa7e477a8 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/DefaultFieldNameTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/DefaultFieldNameTestCase.java
@@ -1,6 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.parser;
+import com.yahoo.language.process.Embedder;
import com.yahoo.language.simple.SimpleLinguistics;
import com.yahoo.vespa.indexinglanguage.ScriptParserContext;
import com.yahoo.vespa.indexinglanguage.expressions.Expression;
@@ -17,9 +18,11 @@ public class DefaultFieldNameTestCase {
@Test
public void requireThatDefaultFieldNameIsAppliedWhenArgumentIsMissing() throws ParseException {
IndexingInput input = new IndexingInput("input");
- InputExpression exp = (InputExpression)Expression.newInstance(new ScriptParserContext(new SimpleLinguistics())
+ InputExpression exp = (InputExpression)Expression.newInstance(new ScriptParserContext(new SimpleLinguistics(),
+ Embedder.throwsOnUse)
.setInputStream(input)
.setDefaultFieldName("foo"));
assertEquals("foo", exp.getFieldName());
}
+
}
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/ExpressionTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/ExpressionTestCase.java
index 223c8191186..e333eea7001 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/ExpressionTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/ExpressionTestCase.java
@@ -1,7 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.parser;
import com.yahoo.language.Linguistics;
+import com.yahoo.language.process.Embedder;
import com.yahoo.language.simple.SimpleLinguistics;
import com.yahoo.vespa.indexinglanguage.expressions.*;
import org.junit.Test;
@@ -84,9 +85,9 @@ public class ExpressionTestCase {
private static void assertExpression(Class expectedClass, String str) throws ParseException {
Linguistics linguistics = new SimpleLinguistics();
- Expression foo = Expression.fromString(str, linguistics);
+ Expression foo = Expression.fromString(str, linguistics, Embedder.throwsOnUse);
assertEquals(expectedClass, foo.getClass());
- Expression bar = Expression.fromString(foo.toString(), linguistics);
+ Expression bar = Expression.fromString(foo.toString(), linguistics, Embedder.throwsOnUse);
assertEquals(foo.hashCode(), bar.hashCode());
assertEquals(foo, bar);
}
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/FieldNameTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/FieldNameTestCase.java
index cd85a60cc14..41b8731995e 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/FieldNameTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/FieldNameTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.parser;
import com.yahoo.document.datatypes.StringFieldValue;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/IdentifierTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/IdentifierTestCase.java
index 1dc8c4a607c..e29c729a423 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/IdentifierTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/IdentifierTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.parser;
import org.junit.Test;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/MathTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/MathTestCase.java
index 0e9f136d473..9ea712cb174 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/MathTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/MathTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.parser;
import com.yahoo.document.datatypes.*;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/NumberTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/NumberTestCase.java
index 975da5db2b5..99b13b5b4b7 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/NumberTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/NumberTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.parser;
import com.yahoo.document.datatypes.*;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/PrecedenceTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/PrecedenceTestCase.java
index f7e5e8f509e..fe2c0ae3025 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/PrecedenceTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/PrecedenceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.parser;
import com.yahoo.vespa.indexinglanguage.expressions.Expression;
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/ScriptTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/ScriptTestCase.java
index dfd49e50396..ad2b9ebd6f9 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/ScriptTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/parser/ScriptTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.parser;
import com.yahoo.vespa.indexinglanguage.expressions.ScriptExpression;
diff --git a/jaxrs_client_utils/README.md b/jaxrs_client_utils/README.md
index f0d584c4e2d..3e6d80d75b5 100644
--- a/jaxrs_client_utils/README.md
+++ b/jaxrs_client_utils/README.md
@@ -1,3 +1,3 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Utilities for client-side JAX-RS
Code to make it simpler to connect to JAX-RS services (aka REST APIs).
diff --git a/jaxrs_client_utils/pom.xml b/jaxrs_client_utils/pom.xml
index e199a8e2639..93aa9a50e9d 100644
--- a/jaxrs_client_utils/pom.xml
+++ b/jaxrs_client_utils/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsClientFactory.java b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsClientFactory.java
index 27d7024b9bd..f6e044a497a 100644
--- a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsClientFactory.java
+++ b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsClientFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.jaxrs.client;
import com.yahoo.vespa.applicationmodel.HostName;
diff --git a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsStrategy.java b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsStrategy.java
index cd7d8684cbc..5ecd001c0fe 100644
--- a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsStrategy.java
+++ b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsStrategy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.jaxrs.client;
import java.io.IOException;
diff --git a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsStrategyFactory.java b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsStrategyFactory.java
index 9dbc472f4e2..ffcf1c5d707 100644
--- a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsStrategyFactory.java
+++ b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JaxRsStrategyFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.jaxrs.client;
import com.yahoo.vespa.applicationmodel.HostName;
diff --git a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JerseyJaxRsClientFactory.java b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JerseyJaxRsClientFactory.java
index 8aa880fb0e4..80eb449591e 100644
--- a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JerseyJaxRsClientFactory.java
+++ b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/JerseyJaxRsClientFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.jaxrs.client;
import com.yahoo.vespa.applicationmodel.HostName;
diff --git a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/LocalPassThroughJaxRsStrategy.java b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/LocalPassThroughJaxRsStrategy.java
index 759db5ef9b4..9f9d0d4e1bc 100644
--- a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/LocalPassThroughJaxRsStrategy.java
+++ b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/LocalPassThroughJaxRsStrategy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.jaxrs.client;
import java.io.IOException;
diff --git a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/NoRetryJaxRsStrategy.java b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/NoRetryJaxRsStrategy.java
index 7d70c37a40d..31f03396c5a 100644
--- a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/NoRetryJaxRsStrategy.java
+++ b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/NoRetryJaxRsStrategy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.jaxrs.client;
import com.yahoo.vespa.applicationmodel.HostName;
diff --git a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/RetryingJaxRsStrategy.java b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/RetryingJaxRsStrategy.java
index 9faaa1ae5b9..a185aa9cf5c 100644
--- a/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/RetryingJaxRsStrategy.java
+++ b/jaxrs_client_utils/src/main/java/com/yahoo/vespa/jaxrs/client/RetryingJaxRsStrategy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.jaxrs.client;
import com.yahoo.vespa.applicationmodel.HostName;
diff --git a/jaxrs_client_utils/src/test/java/com/yahoo/vespa/jaxrs/client/HttpPatchTest.java b/jaxrs_client_utils/src/test/java/com/yahoo/vespa/jaxrs/client/HttpPatchTest.java
index 3270ac0141e..19bd441e29d 100644
--- a/jaxrs_client_utils/src/test/java/com/yahoo/vespa/jaxrs/client/HttpPatchTest.java
+++ b/jaxrs_client_utils/src/test/java/com/yahoo/vespa/jaxrs/client/HttpPatchTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.jaxrs.client;
import com.yahoo.vespa.applicationmodel.HostName;
diff --git a/jaxrs_client_utils/src/test/java/com/yahoo/vespa/jaxrs/client/NoRetryJaxRsStrategyTest.java b/jaxrs_client_utils/src/test/java/com/yahoo/vespa/jaxrs/client/NoRetryJaxRsStrategyTest.java
index f4fb9191b86..bd9425119c8 100644
--- a/jaxrs_client_utils/src/test/java/com/yahoo/vespa/jaxrs/client/NoRetryJaxRsStrategyTest.java
+++ b/jaxrs_client_utils/src/test/java/com/yahoo/vespa/jaxrs/client/NoRetryJaxRsStrategyTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.jaxrs.client;
import com.yahoo.vespa.applicationmodel.HostName;
diff --git a/jaxrs_client_utils/src/test/java/com/yahoo/vespa/jaxrs/client/RetryingJaxRsStrategyTest.java b/jaxrs_client_utils/src/test/java/com/yahoo/vespa/jaxrs/client/RetryingJaxRsStrategyTest.java
index bc48ab1c5a6..55a316e2607 100644
--- a/jaxrs_client_utils/src/test/java/com/yahoo/vespa/jaxrs/client/RetryingJaxRsStrategyTest.java
+++ b/jaxrs_client_utils/src/test/java/com/yahoo/vespa/jaxrs/client/RetryingJaxRsStrategyTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.jaxrs.client;
import com.yahoo.vespa.applicationmodel.HostName;
diff --git a/jaxrs_utils/pom.xml b/jaxrs_utils/pom.xml
index 9ad85588daa..492bc095a57 100644
--- a/jaxrs_utils/pom.xml
+++ b/jaxrs_utils/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jaxrs_utils/src/main/java/com/yahoo/vespa/jaxrs/annotation/PATCH.java b/jaxrs_utils/src/main/java/com/yahoo/vespa/jaxrs/annotation/PATCH.java
index d8d129655ac..8d341892966 100644
--- a/jaxrs_utils/src/main/java/com/yahoo/vespa/jaxrs/annotation/PATCH.java
+++ b/jaxrs_utils/src/main/java/com/yahoo/vespa/jaxrs/annotation/PATCH.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.jaxrs.annotation;
import javax.ws.rs.HttpMethod;
diff --git a/jdisc-cloud-aws/CMakeLists.txt b/jdisc-cloud-aws/CMakeLists.txt
index cc53e39f6a5..d0c55306d12 100644
--- a/jdisc-cloud-aws/CMakeLists.txt
+++ b/jdisc-cloud-aws/CMakeLists.txt
@@ -1,3 +1,3 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(jdisc-cloud-aws)
install_config_definitions()
diff --git a/jdisc-cloud-aws/pom.xml b/jdisc-cloud-aws/pom.xml
index 0c89872aa46..41259a7fb42 100644
--- a/jdisc-cloud-aws/pom.xml
+++ b/jdisc-cloud-aws/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
diff --git a/jdisc-cloud-aws/src/main/java/com/yahoo/jdisc/cloud/aws/AwsParameterStore.java b/jdisc-cloud-aws/src/main/java/com/yahoo/jdisc/cloud/aws/AwsParameterStore.java
index 595bb4f6786..a8c62cac872 100644
--- a/jdisc-cloud-aws/src/main/java/com/yahoo/jdisc/cloud/aws/AwsParameterStore.java
+++ b/jdisc-cloud-aws/src/main/java/com/yahoo/jdisc/cloud/aws/AwsParameterStore.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.cloud.aws;
diff --git a/jdisc-cloud-aws/src/main/java/com/yahoo/jdisc/cloud/aws/AwsParameterStoreValidationHandler.java b/jdisc-cloud-aws/src/main/java/com/yahoo/jdisc/cloud/aws/AwsParameterStoreValidationHandler.java
index 665e55c8f24..387088d10b4 100644
--- a/jdisc-cloud-aws/src/main/java/com/yahoo/jdisc/cloud/aws/AwsParameterStoreValidationHandler.java
+++ b/jdisc-cloud-aws/src/main/java/com/yahoo/jdisc/cloud/aws/AwsParameterStoreValidationHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.cloud.aws;
import com.google.inject.Inject;
diff --git a/jdisc-cloud-aws/src/main/java/com/yahoo/jdisc/cloud/aws/VespaAwsCredentialsProvider.java b/jdisc-cloud-aws/src/main/java/com/yahoo/jdisc/cloud/aws/VespaAwsCredentialsProvider.java
index a50d40736a8..484e82ab00e 100644
--- a/jdisc-cloud-aws/src/main/java/com/yahoo/jdisc/cloud/aws/VespaAwsCredentialsProvider.java
+++ b/jdisc-cloud-aws/src/main/java/com/yahoo/jdisc/cloud/aws/VespaAwsCredentialsProvider.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.cloud.aws;
diff --git a/jdisc-security-filters/CMakeLists.txt b/jdisc-security-filters/CMakeLists.txt
index c1ef62a3107..d37c7b18cf8 100644
--- a/jdisc-security-filters/CMakeLists.txt
+++ b/jdisc-security-filters/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(jdisc-security-filters)
install_config_definitions()
diff --git a/jdisc-security-filters/README.md b/jdisc-security-filters/README.md
index 5d196f985fa..6fdd6fcf4c7 100644
--- a/jdisc-security-filters/README.md
+++ b/jdisc-security-filters/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# JDisc Security Filters
Contains various http security filters for JDisc / Vespa
diff --git a/jdisc-security-filters/pom.xml b/jdisc-security-filters/pom.xml
index 5f6189c5cae..bda91f0a812 100644
--- a/jdisc-security-filters/pom.xml
+++ b/jdisc-security-filters/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzAuthorizationFilter.java b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzAuthorizationFilter.java
index 6136bcdfd3a..4eac5c95141 100644
--- a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzAuthorizationFilter.java
+++ b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzAuthorizationFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.security.athenz;
import com.google.inject.Inject;
diff --git a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzPrincipalFilter.java b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzPrincipalFilter.java
index cb153ecb1fc..a302f19db99 100644
--- a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzPrincipalFilter.java
+++ b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzPrincipalFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.security.athenz;
import com.google.inject.Inject;
diff --git a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/RequestResourceMapper.java b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/RequestResourceMapper.java
index c962e973959..65e16b77cb3 100644
--- a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/RequestResourceMapper.java
+++ b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/RequestResourceMapper.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.security.athenz;
import com.yahoo.jdisc.http.filter.DiscFilterRequest;
diff --git a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/StaticRequestResourceMapper.java b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/StaticRequestResourceMapper.java
index ded13a9def4..78aadbbd52f 100644
--- a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/StaticRequestResourceMapper.java
+++ b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/StaticRequestResourceMapper.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.security.athenz;
import com.google.inject.Inject;
diff --git a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/package-info.java b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/package-info.java
index 6ec5bd4322e..789ce48bc3e 100644
--- a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/package-info.java
+++ b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/athenz/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/base/JsonSecurityRequestFilterBase.java b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/base/JsonSecurityRequestFilterBase.java
index ec6b1361ebc..92c98505cf1 100644
--- a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/base/JsonSecurityRequestFilterBase.java
+++ b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/base/JsonSecurityRequestFilterBase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.security.base;
import com.fasterxml.jackson.core.JsonProcessingException;
diff --git a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/base/package-info.java b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/base/package-info.java
index 38f7b126443..1a7b540d328 100644
--- a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/base/package-info.java
+++ b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/base/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cors/CorsLogic.java b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cors/CorsLogic.java
index 650ec851ffd..3f6801eebe7 100644
--- a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cors/CorsLogic.java
+++ b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cors/CorsLogic.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.security.cors;
import java.time.Duration;
diff --git a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cors/CorsPreflightRequestFilter.java b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cors/CorsPreflightRequestFilter.java
index 1178ec922b2..d704fb926a6 100644
--- a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cors/CorsPreflightRequestFilter.java
+++ b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cors/CorsPreflightRequestFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.security.cors;
import com.google.inject.Inject;
diff --git a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cors/CorsResponseFilter.java b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cors/CorsResponseFilter.java
index 96f134db886..0ed239e7834 100644
--- a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cors/CorsResponseFilter.java
+++ b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cors/CorsResponseFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.security.cors;
import com.google.inject.Inject;
diff --git a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cors/package-info.java b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cors/package-info.java
index cada3d3fcd8..b0f85cdd73f 100644
--- a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cors/package-info.java
+++ b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cors/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/LocalhostFilter.java b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/LocalhostFilter.java
index 1623128fac2..f65d12f30d2 100644
--- a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/LocalhostFilter.java
+++ b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/LocalhostFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.security.misc;
import com.google.common.net.InetAddresses;
diff --git a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/NoopFilter.java b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/NoopFilter.java
index cb1130e8825..83d0486f6e2 100644
--- a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/NoopFilter.java
+++ b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/NoopFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.security.misc;
import com.yahoo.jdisc.handler.ResponseHandler;
diff --git a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/SecurityHeadersResponseFilter.java b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/SecurityHeadersResponseFilter.java
index 09d02d66b1f..21edd1c8e10 100644
--- a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/SecurityHeadersResponseFilter.java
+++ b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/SecurityHeadersResponseFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.security.misc;
import com.yahoo.jdisc.http.filter.DiscFilterResponse;
diff --git a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/package-info.java b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/package-info.java
index b646e9e135e..c941d696ea1 100644
--- a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/package-info.java
+++ b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/rule/RuleBasedRequestFilter.java b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/rule/RuleBasedRequestFilter.java
index 7bdc386e4b4..fb384a3f980 100644
--- a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/rule/RuleBasedRequestFilter.java
+++ b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/rule/RuleBasedRequestFilter.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.security.rule;
import com.google.inject.Inject;
diff --git a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/rule/package-info.java b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/rule/package-info.java
index 5360416da35..73313c2c86d 100644
--- a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/rule/package-info.java
+++ b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/rule/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.athenz.athenz-authorization-filter.def b/jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.athenz.athenz-authorization-filter.def
index dd04b4a3af8..a916bd16692 100644
--- a/jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.athenz.athenz-authorization-filter.def
+++ b/jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.athenz.athenz-authorization-filter.def
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=jdisc.http.filter.security.athenz
# Which credentials to verify. Note: ANY will prioritize token over certificate if both are present.
diff --git a/jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.athenz.athenz-principal-filter.def b/jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.athenz.athenz-principal-filter.def
index 8fd95ee1dde..3749de17253 100644
--- a/jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.athenz.athenz-principal-filter.def
+++ b/jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.athenz.athenz-principal-filter.def
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=jdisc.http.filter.security.athenz
# Pass-through mode
diff --git a/jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.athenz.static-request-resource-mapper.def b/jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.athenz.static-request-resource-mapper.def
index de89c1f9198..26d347f953f 100644
--- a/jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.athenz.static-request-resource-mapper.def
+++ b/jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.athenz.static-request-resource-mapper.def
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=jdisc.http.filter.security.athenz
# Athenz resource name on format '<domain-name>:<entity-name>'
diff --git a/jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.cors.cors-filter.def b/jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.cors.cors-filter.def
index a5c69b2db62..0eefa871fb2 100644
--- a/jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.cors.cors-filter.def
+++ b/jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.cors.cors-filter.def
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=jdisc.http.filter.security.cors
allowedUrls[] string
diff --git a/jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.rule.rule-based-filter.def b/jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.rule.rule-based-filter.def
index 6abf3d43a7d..1d0dcddfc31 100644
--- a/jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.rule.rule-based-filter.def
+++ b/jdisc-security-filters/src/main/resources/configdefinitions/jdisc.http.filter.security.rule.rule-based-filter.def
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=jdisc.http.filter.security.rule
dryrun bool default=false
diff --git a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzAuthorizationFilterTest.java b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzAuthorizationFilterTest.java
index 137e4653670..8be552c1da0 100644
--- a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzAuthorizationFilterTest.java
+++ b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzAuthorizationFilterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.security.athenz;
import com.auth0.jwt.JWT;
diff --git a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzPrincipalFilterTest.java b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzPrincipalFilterTest.java
index a4e85b9f63c..23b1b7c569e 100644
--- a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzPrincipalFilterTest.java
+++ b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzPrincipalFilterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.security.athenz;
import com.yahoo.jdisc.Response;
diff --git a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/base/JsonSecurityRequestFilterBaseTest.java b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/base/JsonSecurityRequestFilterBaseTest.java
index 26478357a1d..a2746e84e1c 100644
--- a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/base/JsonSecurityRequestFilterBaseTest.java
+++ b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/base/JsonSecurityRequestFilterBaseTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.security.base;
import com.fasterxml.jackson.databind.JsonNode;
diff --git a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/cors/CorsPreflightRequestFilterTest.java b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/cors/CorsPreflightRequestFilterTest.java
index 8b77fc0abbd..ead816afdfd 100644
--- a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/cors/CorsPreflightRequestFilterTest.java
+++ b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/cors/CorsPreflightRequestFilterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.security.cors;
import com.yahoo.jdisc.HeaderFields;
diff --git a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/cors/CorsResponseFilterTest.java b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/cors/CorsResponseFilterTest.java
index 0c8cf9b0ffb..ecadd0b1b87 100644
--- a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/cors/CorsResponseFilterTest.java
+++ b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/cors/CorsResponseFilterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.security.cors;
import com.yahoo.jdisc.http.Cookie;
diff --git a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/misc/LocalhostFilterTest.java b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/misc/LocalhostFilterTest.java
index 39c3783caec..676c3e23ad7 100644
--- a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/misc/LocalhostFilterTest.java
+++ b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/misc/LocalhostFilterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.security.misc;
import com.yahoo.container.jdisc.RequestHandlerTestDriver;
diff --git a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/rule/RuleBasedRequestFilterTest.java b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/rule/RuleBasedRequestFilterTest.java
index 68879b4dd32..c4171ecd4d7 100644
--- a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/rule/RuleBasedRequestFilterTest.java
+++ b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/rule/RuleBasedRequestFilterTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter.security.rule;
import com.fasterxml.jackson.databind.JsonNode;
diff --git a/jdisc_core/CMakeLists.txt b/jdisc_core/CMakeLists.txt
index 032eacfadb6..073649a5e60 100644
--- a/jdisc_core/CMakeLists.txt
+++ b/jdisc_core/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(jdisc_core)
diff --git a/jdisc_core/README.md b/jdisc_core/README.md
index 581647bf5ad..67249555c89 100644
--- a/jdisc_core/README.md
+++ b/jdisc_core/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# JDisc core
The most basic part of JDisc.
diff --git a/jdisc_core/pom.xml b/jdisc_core/pom.xml
index 0bedd1d1704..caa97b4e7e6 100644
--- a/jdisc_core/pom.xml
+++ b/jdisc_core/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/AbstractResource.java b/jdisc_core/src/main/java/com/yahoo/jdisc/AbstractResource.java
index b561f08af92..a131fc557c4 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/AbstractResource.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/AbstractResource.java
@@ -1,17 +1,14 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
import com.yahoo.jdisc.handler.RequestHandler;
+import com.yahoo.jdisc.refcount.DebugReferencesByContextMap;
+import com.yahoo.jdisc.refcount.DebugReferencesWithStack;
+import com.yahoo.jdisc.refcount.DestructableResource;
+import com.yahoo.jdisc.refcount.ReferencesByCount;
import com.yahoo.jdisc.service.ClientProvider;
import com.yahoo.jdisc.service.ServerProvider;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.logging.Level;
-import java.util.logging.Logger;
+import com.yahoo.jdisc.refcount.References;
/**
* This class provides a thread-safe implementation of the {@link SharedResource} interface, and should be used for
@@ -22,77 +19,33 @@ import java.util.logging.Logger;
*/
public abstract class AbstractResource implements SharedResource {
- private static final Logger log = Logger.getLogger(AbstractResource.class.getName());
+ private static final Debug debug = DEBUG;
- private final boolean debug = SharedResource.DEBUG;
- private final AtomicInteger refCount;
- private final Object monitor;
- private final Set<Throwable> activeReferences;
- private final ResourceReference initialCreationReference;
+ private final References references;
protected AbstractResource() {
- if (!debug) {
- this.refCount = new AtomicInteger(1);
- this.monitor = null;
- this.activeReferences = null;
- this.initialCreationReference = new NoDebugResourceReference(this);
+ DestructableResource destructable = new WrappedResource(this);
+ if (debug == Debug.SIMPLE) {
+ references = new DebugReferencesByContextMap(destructable, this);
+ } else if (debug == Debug.STACK) {
+ references = new DebugReferencesWithStack(destructable);
} else {
- this.refCount = null;
- this.monitor = new Object();
- this.activeReferences = new HashSet<>();
- final Throwable referenceStack = new Throwable();
- this.activeReferences.add(referenceStack);
- this.initialCreationReference = new DebugResourceReference(this, referenceStack);
+ references = new ReferencesByCount(destructable);
}
}
@Override
public final ResourceReference refer() {
- if (!debug) {
- addRef(1);
- return new NoDebugResourceReference(this);
- }
-
- final Throwable referenceStack = new Throwable();
- final String state;
- synchronized (monitor) {
- if (activeReferences.isEmpty()) {
- throw new IllegalStateException("Object is already destroyed, no more new references may be created."
- + " State={ " + currentStateDebugWithLock() + " }");
- }
- activeReferences.add(referenceStack);
- state = currentStateDebugWithLock();
- }
- log.log(Level.WARNING,
- getClass().getName() + "@" + System.identityHashCode(this) + ".refer(): state={ " + state + " }",
- referenceStack);
- return new DebugResourceReference(this, referenceStack);
+ return refer(null);
}
-
@Override
- public final void release() {
- initialCreationReference.close();
+ public final ResourceReference refer(Object context) {
+ return references.refer(context);
}
- private void removeReferenceStack(final Throwable referenceStack, final Throwable releaseStack) {
- final boolean doDestroy;
- final String state;
- synchronized (monitor) {
- final boolean wasThere = activeReferences.remove(referenceStack);
- state = currentStateDebugWithLock();
- if (!wasThere) {
- throw new IllegalStateException("Reference is already released and can only be released once."
- + " reference=" + Arrays.toString(referenceStack.getStackTrace())
- + ". State={ " + state + "}");
- }
- doDestroy = activeReferences.isEmpty();
- }
- log.log(Level.WARNING,
- getClass().getName() + "@" + System.identityHashCode(this) + " release: state={ " + state + " }",
- releaseStack);
- if (doDestroy) {
- destroy();
- }
+ @Override
+ public final void release() {
+ references.release();
}
/**
@@ -102,105 +55,25 @@ public abstract class AbstractResource implements SharedResource {
* @return The current value of the reference counter.
*/
public final int retainCount() {
- if (!debug) {
- return refCount.get();
- }
-
- synchronized (monitor) {
- return activeReferences.size();
- }
+ return references.referenceCount();
}
/**
* <p>This method signals that this AbstractResource can dispose of any internal resources, and commence with shut
* down of any internal threads. This will be called once the reference count of this resource reaches zero.</p>
*/
- protected void destroy() {
-
- }
-
- private int addRef(int value) {
- while (true) {
- int prev = refCount.get();
- if (prev == 0) {
- throw new IllegalStateException(getClass().getName() + ".addRef(" + value + "):"
- + " Object is already destroyed."
- + " Consider toggling the " + SharedResource.SYSTEM_PROPERTY_NAME_DEBUG
- + " system property to get debugging assistance with reference tracking.");
- }
- int next = prev + value;
- if (refCount.compareAndSet(prev, next)) {
- return next;
- }
- }
- }
+ protected void destroy() { }
/**
* Returns a string describing the current state of references in human-friendly terms. May be used for debugging.
*/
public String currentState() {
- if (!debug) {
- return "Active references: " + refCount.get() + "."
- + " Resource reference debugging is turned off. Consider toggling the "
- + SharedResource.SYSTEM_PROPERTY_NAME_DEBUG
- + " system property to get debugging assistance with reference tracking.";
- }
- synchronized (monitor) {
- return currentStateDebugWithLock();
- }
- }
-
- private String currentStateDebugWithLock() {
- return "Active references: " + makeListOfActiveReferences();
- }
-
- private String makeListOfActiveReferences() {
- final StringBuilder builder = new StringBuilder();
- builder.append("[");
- for (final Throwable activeReference : activeReferences) {
- builder.append(" ");
- builder.append(Arrays.toString(activeReference.getStackTrace()));
- }
- builder.append(" ]");
- return builder.toString();
- }
-
- private static class NoDebugResourceReference implements ResourceReference {
- private final AbstractResource resource;
- private final AtomicBoolean isReleased = new AtomicBoolean(false);
-
- public NoDebugResourceReference(final AbstractResource resource) {
- this.resource = resource;
- }
-
- @Override
- public final void close() {
- final boolean wasReleasedBefore = isReleased.getAndSet(true);
- if (wasReleasedBefore) {
- final String message = "Reference is already released and can only be released once."
- + " State={ " + resource.currentState() + " }";
- throw new IllegalStateException(message);
- }
- int refCount = resource.addRef(-1);
- if (refCount == 0) {
- resource.destroy();
- }
- }
+ return references.currentState();
}
- private static class DebugResourceReference implements ResourceReference {
+ static private class WrappedResource implements DestructableResource {
private final AbstractResource resource;
- private final Throwable referenceStack;
-
- public DebugResourceReference(final AbstractResource resource, final Throwable referenceStack) {
- this.resource = resource;
- this.referenceStack = referenceStack;
- }
-
- @Override
- public final void close() {
- final Throwable releaseStack = new Throwable();
- resource.removeReferenceStack(referenceStack, releaseStack);
- }
+ WrappedResource(AbstractResource resource) { this.resource = resource; }
+ @Override public void close() { resource.destroy(); }
}
}
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/Container.java b/jdisc_core/src/main/java/com/yahoo/jdisc/Container.java
index 7d7d808fecc..f3ed16c65e7 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/Container.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/Container.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
import com.google.inject.ConfigurationException;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/HeaderFields.java b/jdisc_core/src/main/java/com/yahoo/jdisc/HeaderFields.java
index 532161ee272..bc243afef38 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/HeaderFields.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/HeaderFields.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
import com.google.common.collect.ImmutableList;
@@ -301,6 +301,11 @@ public class HeaderFields implements Map<String, List<String>> {
public String setValue(String value) {
throw new UnsupportedOperationException();
}
+
+ @Override
+ public String toString() {
+ return key + '=' + value;
+ }
}
}
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/Metric.java b/jdisc_core/src/main/java/com/yahoo/jdisc/Metric.java
index 0e9db8fb1ea..170dde55c19 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/Metric.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/Metric.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
import com.google.inject.ProvidedBy;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/NoopSharedResource.java b/jdisc_core/src/main/java/com/yahoo/jdisc/NoopSharedResource.java
index 7f4fe96d769..50a64d8e62c 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/NoopSharedResource.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/NoopSharedResource.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
/**
@@ -12,6 +12,10 @@ public class NoopSharedResource implements SharedResource {
public final ResourceReference refer() {
return References.NOOP_REFERENCE;
}
+ @Override
+ public final ResourceReference refer(Object context) {
+ return References.NOOP_REFERENCE;
+ }
@Override
public final void release() {
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/ProxyRequestHandler.java b/jdisc_core/src/main/java/com/yahoo/jdisc/ProxyRequestHandler.java
index 6e385535e40..47df5c9da0f 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/ProxyRequestHandler.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/ProxyRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
import com.yahoo.jdisc.handler.CompletionHandler;
@@ -63,6 +63,11 @@ class ProxyRequestHandler implements DelegatedRequestHandler {
}
@Override
+ public ResourceReference refer(Object context) {
+ return delegate.refer(context);
+ }
+
+ @Override
public void release() {
delegate.release();
}
@@ -89,7 +94,7 @@ class ProxyRequestHandler implements DelegatedRequestHandler {
Objects.requireNonNull(delegate, "delegate");
this.request = request;
this.delegate = delegate;
- this.requestReference = request.refer();
+ this.requestReference = request.refer(this);
}
@Override
@@ -121,7 +126,7 @@ class ProxyRequestHandler implements DelegatedRequestHandler {
Objects.requireNonNull(delegate, "delegate");
this.request = request;
this.delegate = delegate;
- this.requestReference = request.refer();
+ this.requestReference = request.refer(this);
}
@Override
@@ -169,7 +174,7 @@ class ProxyRequestHandler implements DelegatedRequestHandler {
public ProxyCompletionHandler(SharedResource request, CompletionHandler delegate) {
this.delegate = delegate;
- this.requestReference = request.refer();
+ this.requestReference = request.refer(this);
}
@Override
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/ReferencedResource.java b/jdisc_core/src/main/java/com/yahoo/jdisc/ReferencedResource.java
index 43a80a18a57..86828d857c9 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/ReferencedResource.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/ReferencedResource.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
/**
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/References.java b/jdisc_core/src/main/java/com/yahoo/jdisc/References.java
index e0d96395745..752b438b47f 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/References.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/References.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
/**
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/Request.java b/jdisc_core/src/main/java/com/yahoo/jdisc/Request.java
index 895ddb30a6d..c94ac5d9c60 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/Request.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/Request.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
import com.yahoo.jdisc.application.BindingMatch;
@@ -45,9 +45,9 @@ public class Request extends AbstractResource {
private volatile boolean cancel = false;
private BindingMatch<RequestHandler> bindingMatch;
private TimeoutManager timeoutManager;
- private boolean serverRequest;
+ private boolean serverRequest; // TODO could be final, only used in tests
private Long timeout;
- private URI uri;
+ private URI uri; // TODO Could be made final,
public enum RequestType {
READ, WRITE, MONITORING
@@ -79,12 +79,16 @@ public class Request extends AbstractResource {
* @param uri The identifier of this request.
*/
public Request(CurrentContainer current, URI uri) {
- container = current.newReference(uri);
+ this(current, uri, true);
+ }
+
+ public Request(CurrentContainer current, URI uri, boolean isServerRequest) {
parent = null;
parentReference = null;
- creationTime = container.currentTimeMillis();
- serverRequest = true;
+ serverRequest = isServerRequest;
setUri(uri);
+ container = current.newReference(uri, this);
+ creationTime = container.currentTimeMillis();
}
/**
@@ -113,11 +117,11 @@ public class Request extends AbstractResource {
*/
public Request(Request parent, URI uri) {
this.parent = parent;
- this.parentReference = this.parent.refer();
container = null;
creationTime = parent.container().currentTimeMillis();
serverRequest = false;
setUri(uri);
+ parentReference = this.parent.refer(this);
}
/** Returns the {@link Container} for which this Request was created */
@@ -142,6 +146,7 @@ public class Request extends AbstractResource {
* @return this, to allow chaining
* @see #getUri()
*/
+ @Deprecated
public Request setUri(URI uri) {
this.uri = uri.normalize();
return this;
@@ -166,6 +171,7 @@ public class Request extends AbstractResource {
* @return this, to allow chaining
* @see #isServerRequest()
*/
+ @Deprecated
public Request setServerRequest(boolean serverRequest) {
this.serverRequest = serverRequest;
return this;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/ResourceReference.java b/jdisc_core/src/main/java/com/yahoo/jdisc/ResourceReference.java
index 96f9561547b..b10f7c32676 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/ResourceReference.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/ResourceReference.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
/**
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/Response.java b/jdisc_core/src/main/java/com/yahoo/jdisc/Response.java
index 654c9350547..698d1c2e4e4 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/Response.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/Response.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
import com.yahoo.jdisc.handler.ContentChannel;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/SharedResource.java b/jdisc_core/src/main/java/com/yahoo/jdisc/SharedResource.java
index 20656bf7d1d..051cebee465 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/SharedResource.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/SharedResource.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
import com.yahoo.jdisc.application.ContainerActivator;
@@ -28,10 +28,22 @@ import com.yahoo.jdisc.service.ServerProvider;
public interface SharedResource {
String SYSTEM_PROPERTY_NAME_DEBUG = "jdisc.debug.resources";
- boolean DEBUG = Boolean.valueOf(System.getProperty(SYSTEM_PROPERTY_NAME_DEBUG));
+ enum Debug {NO, SIMPLE, STACK}
+ Debug DEBUG = valueOfDebug();
+ private static Debug valueOfDebug() {
+ String val = System.getProperty(SYSTEM_PROPERTY_NAME_DEBUG);
+ if (val != null) {
+ val = val.toUpperCase();
+ if (Boolean.valueOf(val)) return Debug.SIMPLE;
+ try {
+ return Debug.valueOf(val);
+ } catch (IllegalArgumentException e) { }
+ }
+ return Debug.NO;
+ }
/**
- * <p>Increments the reference count of this resource. You call this method to prevent an object from being
+ * <p>Creates a reference to this resource. You call this method to prevent an object from being
* destroyed until you have finished using it.</p>
*
* <p>You MUST keep the returned {@link ResourceReference} object and release the reference by calling
@@ -40,7 +52,24 @@ public interface SharedResource {
*
* @see ResourceReference#close()
*/
- ResourceReference refer();
+ default ResourceReference refer() {
+ return refer(null);
+ }
+
+ /**
+ * <p>Creates a reference to this resource. You call this method to prevent an object from being
+ * destroyed until you have finished using it. You can attach a context that will live as long as the reference.</p>
+ *
+ * @param context A context to be associated with the reference. It should give some clue as to who referenced it.
+ * <p>You MUST keep the returned {@link ResourceReference} object and release the reference by calling
+ * {@link ResourceReference#close()} on it. A reference created by this method can NOT be released by calling
+ * {@link #release()}.</p>
+ *
+ * @see ResourceReference#close()
+ */
+ default ResourceReference refer(Object context) {
+ return refer();
+ }
/**
* <p>Releases the "main" reference to this resource (the implicit reference due to creation of the object).</p>
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/TimeoutManager.java b/jdisc_core/src/main/java/com/yahoo/jdisc/TimeoutManager.java
index 0f3d553d96b..15cb8603ea9 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/TimeoutManager.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/TimeoutManager.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
import com.yahoo.jdisc.handler.RequestHandler;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/Timer.java b/jdisc_core/src/main/java/com/yahoo/jdisc/Timer.java
index 4db30636137..b5e32a0a297 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/Timer.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/Timer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
import com.google.inject.ImplementedBy;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/AbstractApplication.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/AbstractApplication.java
index be362157739..c91faaa5e01 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/AbstractApplication.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/AbstractApplication.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.google.inject.Inject;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/Application.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/Application.java
index 6f618006091..3252f24fca2 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/Application.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/Application.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.yahoo.jdisc.Container;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/ApplicationNotReadyException.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/ApplicationNotReadyException.java
index 0afdafb8141..5b5e8336994 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/ApplicationNotReadyException.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/ApplicationNotReadyException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
/**
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/BindingMatch.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/BindingMatch.java
index 98b0ef870e1..2ba9758ef74 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/BindingMatch.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/BindingMatch.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import java.net.URI;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/BindingRepository.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/BindingRepository.java
index 1e0d90e71f9..bb041509e83 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/BindingRepository.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/BindingRepository.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.yahoo.jdisc.Container;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/BindingSet.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/BindingSet.java
index c71390dbc1c..2f0a2806947 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/BindingSet.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/BindingSet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import java.net.URI;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/BindingSetSelector.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/BindingSetSelector.java
index 5acddbabfe1..7aef5769eb0 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/BindingSetSelector.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/BindingSetSelector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.google.inject.ImplementedBy;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/BundleInstallationException.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/BundleInstallationException.java
index 468604428ac..6b3f4d6e7d7 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/BundleInstallationException.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/BundleInstallationException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.google.common.collect.ImmutableList;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/BundleInstaller.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/BundleInstaller.java
index f5325baa53a..e9157568e61 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/BundleInstaller.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/BundleInstaller.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.google.inject.Inject;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerActivator.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerActivator.java
index 46f8789e1ed..db0b60116b5 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerActivator.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerActivator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.yahoo.jdisc.Container;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerBuilder.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerBuilder.java
index 2607ba14640..db7d7e82ffb 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerBuilder.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.google.common.collect.ImmutableMap;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerThread.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerThread.java
index d13b983c3a4..6daf7a0c945 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerThread.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerThread.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.google.inject.Inject;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/DeactivatedContainer.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/DeactivatedContainer.java
index 5b997a1fa6d..f85f626d4b7 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/DeactivatedContainer.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/DeactivatedContainer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.yahoo.jdisc.Container;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/GlobPattern.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/GlobPattern.java
index dcaf1af00d8..a1d95c46bc5 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/GlobPattern.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/GlobPattern.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import java.util.Arrays;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/GuiceRepository.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/GuiceRepository.java
index 8cd9998cd9c..2e06a5ae1e8 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/GuiceRepository.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/GuiceRepository.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.google.common.collect.ImmutableSet;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/MetricConsumer.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/MetricConsumer.java
index 44cfb205271..bff9187f39c 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/MetricConsumer.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/MetricConsumer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.google.inject.ProvidedBy;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/MetricImpl.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/MetricImpl.java
index c02563c106f..5a6a1f96bad 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/MetricImpl.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/MetricImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.google.inject.Inject;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/MetricNullProvider.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/MetricNullProvider.java
index f971aa78773..3dd3a4b8fc9 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/MetricNullProvider.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/MetricNullProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.google.inject.Provider;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/MetricProvider.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/MetricProvider.java
index 7df8082dff3..16d4861b244 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/MetricProvider.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/MetricProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.google.inject.Inject;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/OsgiFramework.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/OsgiFramework.java
index 12168663205..438ad8d8ebe 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/OsgiFramework.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/OsgiFramework.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import org.osgi.framework.Bundle;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/OsgiHeader.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/OsgiHeader.java
index 257c3858836..f5deff4d411 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/OsgiHeader.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/OsgiHeader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import org.osgi.framework.Bundle;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/ResourcePool.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/ResourcePool.java
index ccbd1693b21..102b1dd2f24 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/ResourcePool.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/ResourcePool.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.google.inject.Key;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/ServerRepository.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/ServerRepository.java
index def3332944e..39e7eb29c0f 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/ServerRepository.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/ServerRepository.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.google.common.collect.ImmutableList;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/UriPattern.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/UriPattern.java
index 642fd062b94..4d9a843b8fb 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/UriPattern.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/UriPattern.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import java.net.URI;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/package-info.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/package-info.java
index e650dfc6328..a633e4bb291 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/package-info.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* <p>Provides classes and interfaces for implementing an {@link com.yahoo.jdisc.application.Application
* Application}.</p>
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/client/AbstractClientApplication.java b/jdisc_core/src/main/java/com/yahoo/jdisc/client/AbstractClientApplication.java
index 45b005dc110..78377a0942b 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/client/AbstractClientApplication.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/client/AbstractClientApplication.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.client;
import com.google.inject.Inject;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/client/ClientApplication.java b/jdisc_core/src/main/java/com/yahoo/jdisc/client/ClientApplication.java
index 33c9b6d3941..8d53a97472a 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/client/ClientApplication.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/client/ClientApplication.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.client;
import com.yahoo.jdisc.application.Application;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/client/ClientDriver.java b/jdisc_core/src/main/java/com/yahoo/jdisc/client/ClientDriver.java
index 15283b7ab0b..72cc2c1b88c 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/client/ClientDriver.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/client/ClientDriver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.client;
import com.google.inject.AbstractModule;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/client/package-info.java b/jdisc_core/src/main/java/com/yahoo/jdisc/client/package-info.java
index c328cc1e382..57fec4b5abf 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/client/package-info.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/client/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* <p>Provides classes and interfaces for implementing a {@link com.yahoo.jdisc.client.ClientApplication
* ClientApplication}.</p>
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ActiveContainer.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ActiveContainer.java
index a9fd2c747ff..a150bb84af2 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ActiveContainer.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ActiveContainer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.google.inject.AbstractModule;
@@ -106,7 +106,7 @@ public class ActiveContainer extends AbstractResource implements CurrentContaine
}
@Override
- public ContainerSnapshot newReference(URI uri) {
+ public ContainerSnapshot newReference(URI uri, Object context) {
String name = bindingSetSelector.select(uri);
if (name == null) {
throw new NoBindingSetSelectedException(uri);
@@ -116,7 +116,7 @@ public class ActiveContainer extends AbstractResource implements CurrentContaine
if (serverBindings == null || clientBindings == null) {
throw new BindingSetNotFoundException(name);
}
- return new ContainerSnapshot(this, serverBindings, clientBindings);
+ return new ContainerSnapshot(this, serverBindings, clientBindings, context);
}
}
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationConfigModule.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationConfigModule.java
index 4c78e0c464f..11e6dd39db4 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationConfigModule.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationConfigModule.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.google.common.collect.ImmutableMap;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationEnvironmentModule.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationEnvironmentModule.java
index ef02b0791ae..43f45186f20 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationEnvironmentModule.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationEnvironmentModule.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.google.inject.AbstractModule;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationLoader.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationLoader.java
index f28731a47c7..952e8dd5f00 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationLoader.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ApplicationLoader.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.google.inject.AbstractModule;
@@ -81,12 +81,12 @@ public class ApplicationLoader implements BootstrapLoader, ContainerActivator, C
}
@Override
- public ContainerSnapshot newReference(URI uri) {
+ public ContainerSnapshot newReference(URI uri, Object context) {
ActiveContainer container = containerRef.get();
if (container == null) {
throw new ContainerNotReadyException();
}
- return container.newReference(uri);
+ return container.newReference(uri, context);
}
@Override
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/BootstrapLoader.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/BootstrapLoader.java
index 57d1c518bee..b2961136461 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/BootstrapLoader.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/BootstrapLoader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
/**
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/BundleLocationResolver.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/BundleLocationResolver.java
index ed14b5840ad..ea53d6594b2 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/BundleLocationResolver.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/BundleLocationResolver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import java.io.File;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ConsoleLogFormatter.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ConsoleLogFormatter.java
index 137d0aec26b..080f3d3f74b 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ConsoleLogFormatter.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ConsoleLogFormatter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import org.osgi.framework.Bundle;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ConsoleLogListener.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ConsoleLogListener.java
index 092c2361156..2cfa604109b 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ConsoleLogListener.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ConsoleLogListener.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.yahoo.net.HostName;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ConsoleLogManager.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ConsoleLogManager.java
index d250310a2b8..3a3a643892a 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ConsoleLogManager.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ConsoleLogManager.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import org.osgi.framework.BundleContext;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerSnapshot.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerSnapshot.java
index 7b72e95ac09..f3641f2475b 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerSnapshot.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerSnapshot.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.google.inject.Key;
@@ -28,13 +28,13 @@ class ContainerSnapshot extends AbstractResource implements Container {
private final BindingSet<RequestHandler> clientBindings;
ContainerSnapshot(ActiveContainer container, BindingSet<RequestHandler> serverBindings,
- BindingSet<RequestHandler> clientBindings)
+ BindingSet<RequestHandler> clientBindings, Object context)
{
this.timeoutMgr = container.timeoutManager();
this.container = container;
this.serverBindings = serverBindings;
this.clientBindings = clientBindings;
- this.containerReference = container.refer();
+ this.containerReference = container.refer(context);
}
@Override
@@ -101,6 +101,11 @@ class ContainerSnapshot extends AbstractResource implements Container {
}
@Override
+ public ResourceReference refer(Object context) {
+ return delegate.refer(context);
+ }
+
+ @Override
public void release() {
delegate.release();
}
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerTermination.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerTermination.java
index 7d32238bc56..928eeb88185 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerTermination.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerTermination.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.yahoo.jdisc.application.DeactivatedContainer;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerWatchdog.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerWatchdog.java
index 30aa0028465..c010eac02b5 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerWatchdog.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerWatchdog.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.yahoo.jdisc.Metric;
@@ -22,8 +22,9 @@ import java.util.logging.Logger;
*/
class ContainerWatchdog implements ContainerWatchdogMetrics, AutoCloseable {
- static final Duration GRACE_PERIOD = Duration.ofMinutes(30);
+ static final Duration GRACE_PERIOD = Duration.ofMinutes(5);
static final Duration UPDATE_PERIOD = Duration.ofMinutes(5);
+ static final Duration CHECK_PERIOD = Duration.ofSeconds(1);
private static final Logger log = Logger.getLogger(ContainerWatchdog.class.getName());
@@ -35,6 +36,7 @@ class ContainerWatchdog implements ContainerWatchdogMetrics, AutoCloseable {
private ActiveContainer currentContainer;
private Instant currentContainerActivationTime;
private int numStaleContainers;
+ private Instant lastLogTime;
ContainerWatchdog() {
this(new ScheduledThreadPoolExecutor(
@@ -50,8 +52,8 @@ class ContainerWatchdog implements ContainerWatchdogMetrics, AutoCloseable {
ContainerWatchdog(ScheduledExecutorService scheduler, Clock clock) {
this.scheduler = scheduler;
this.clock = clock;
- scheduler.scheduleAtFixedRate(
- this::monitorDeactivatedContainers, UPDATE_PERIOD.getSeconds(), UPDATE_PERIOD.getSeconds(), TimeUnit.SECONDS);
+ this.lastLogTime = clock.instant();
+ scheduler.scheduleAtFixedRate(this::monitorDeactivatedContainers, CHECK_PERIOD.getSeconds(), CHECK_PERIOD.getSeconds(), TimeUnit.SECONDS);
}
@Override
@@ -77,31 +79,43 @@ class ContainerWatchdog implements ContainerWatchdogMetrics, AutoCloseable {
void onContainerActivation(ActiveContainer nextContainer) {
synchronized (monitor) {
if (currentContainer != null) {
- deactivatedContainers.add(
- new DeactivatedContainer(currentContainer, currentContainerActivationTime, clock.instant()));
+ deactivatedContainers.add(new DeactivatedContainer(currentContainer, currentContainerActivationTime, clock.instant()));
}
currentContainer = nextContainer;
currentContainerActivationTime = clock.instant();
}
}
+ private String removalMsg(DeactivatedContainer container) {
+ return String.format("Removing deactivated container: instance=%s, activated=%s, deactivated=%s",
+ container.instance, container.timeActivated, container.timeDeactivated);
+ }
+
+ private String regularMsg(DeactivatedContainer container, int refCount) {
+ return String.format(
+ "Deactivated container still alive: instance=%s, activated=%s, deactivated=%s, ref-count=%d",
+ container.instance, container.timeActivated, container.timeDeactivated, refCount);
+ }
+
void monitorDeactivatedContainers() {
synchronized (monitor) {
int numStaleContainer = 0;
Iterator<DeactivatedContainer> iterator = deactivatedContainers.iterator();
+ boolean timeToLogAgain = clock.instant().isAfter(lastLogTime.plus(UPDATE_PERIOD));
while (iterator.hasNext()) {
DeactivatedContainer container = iterator.next();
int refCount = container.instance.retainCount();
if (refCount == 0) {
+ log.fine(removalMsg(container));
iterator.remove();
- break;
- }
- if (isPastGracePeriod(container)) {
- ++numStaleContainer;
- log.warning(
- String.format(
- "Deactivated container still alive: instance=%s, activated=%s, deactivated=%s, ref-count=%d",
- container.instance.toString(), container.timeActivated, container.timeDeactivated, refCount));
+ } else {
+ if (isPastGracePeriod(container)) {
+ ++numStaleContainer;
+ if (timeToLogAgain) {
+ log.warning(regularMsg(container, refCount));
+ lastLogTime = clock.instant();
+ }
+ }
}
}
this.numStaleContainers = numStaleContainer;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/DefaultBindingSelector.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/DefaultBindingSelector.java
index 374964c7e65..d3e18bb9415 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/DefaultBindingSelector.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/DefaultBindingSelector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.yahoo.jdisc.application.BindingSet;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ExportPackages.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ExportPackages.java
index 5a2608b63be..dda33c2d1a8 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ExportPackages.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ExportPackages.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.yahoo.io.IOUtils;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/FelixFramework.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/FelixFramework.java
index bd189f8b898..4023259dd0c 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/FelixFramework.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/FelixFramework.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.google.inject.Inject;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/FelixParams.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/FelixParams.java
index 0bca9388885..402c6c288f3 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/FelixParams.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/FelixParams.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import org.apache.felix.framework.cache.BundleCache;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/Main.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/Main.java
index 1e7f82e2f4c..0145f2ecf94 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/Main.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/Main.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.google.inject.Module;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/OsgiLogHandler.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/OsgiLogHandler.java
index d774b857b49..50ac90b6181 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/OsgiLogHandler.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/OsgiLogHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.google.common.collect.ImmutableMap;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/OsgiLogManager.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/OsgiLogManager.java
index ee1939d9bbe..dc7ab5a516b 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/OsgiLogManager.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/OsgiLogManager.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import org.osgi.framework.BundleContext;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/OsgiLogService.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/OsgiLogService.java
index f51891cada4..8d4e8fe3a11 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/OsgiLogService.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/OsgiLogService.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import org.osgi.framework.*;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ScheduledQueue.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ScheduledQueue.java
index d15947296eb..29ac57a24a1 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ScheduledQueue.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ScheduledQueue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import java.util.Objects;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/StandaloneMain.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/StandaloneMain.java
index c24e583ea46..dc5a9e7984f 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/StandaloneMain.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/StandaloneMain.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.yahoo.yolean.system.CatchSignals;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/SystemTimer.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/SystemTimer.java
index 40fce9fec54..54709c9786c 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/SystemTimer.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/SystemTimer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.yahoo.jdisc.Timer;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/TimeoutManagerImpl.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/TimeoutManagerImpl.java
index a6d6e32df06..fb72f3c845a 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/TimeoutManagerImpl.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/TimeoutManagerImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.google.inject.Inject;
@@ -145,6 +145,11 @@ public class TimeoutManagerImpl {
}
@Override
+ public ResourceReference refer(Object context) {
+ return delegate.refer(context);
+ }
+
+ @Override
public void release() {
delegate.release();
}
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/AbstractContentOutputStream.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/AbstractContentOutputStream.java
index b12bf0d9fe6..972d0c0b9b4 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/AbstractContentOutputStream.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/AbstractContentOutputStream.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import java.io.OutputStream;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/AbstractRequestHandler.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/AbstractRequestHandler.java
index 2a9b10428c6..04abf4d5b51 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/AbstractRequestHandler.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/AbstractRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.yahoo.jdisc.Request;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/BindingNotFoundException.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/BindingNotFoundException.java
index c02588e5802..8a499284b09 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/BindingNotFoundException.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/BindingNotFoundException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.yahoo.jdisc.Request;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/BlockingContentWriter.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/BlockingContentWriter.java
index db50e4661be..ff1609acdc9 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/BlockingContentWriter.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/BlockingContentWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import java.nio.ByteBuffer;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/BufferedContentChannel.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/BufferedContentChannel.java
index 6df281ce5bc..15ba2b0ea22 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/BufferedContentChannel.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/BufferedContentChannel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import java.nio.ByteBuffer;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/CallableRequestDispatch.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/CallableRequestDispatch.java
index 135a56f2d6b..ecc94698e14 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/CallableRequestDispatch.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/CallableRequestDispatch.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.yahoo.jdisc.Response;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/CallableResponseDispatch.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/CallableResponseDispatch.java
index e92edf15bba..051e3ea3230 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/CallableResponseDispatch.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/CallableResponseDispatch.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.yahoo.jdisc.Response;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/CompletionHandler.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/CompletionHandler.java
index 123c004f37f..f47079965a1 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/CompletionHandler.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/CompletionHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.yahoo.jdisc.Container;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ContentChannel.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ContentChannel.java
index b8b2d123a13..0f329bc8109 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ContentChannel.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ContentChannel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.yahoo.jdisc.Container;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ContentInputStream.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ContentInputStream.java
index 6145163f1fc..07c716b6ef0 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ContentInputStream.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ContentInputStream.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
/**
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/DelegatedRequestHandler.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/DelegatedRequestHandler.java
index 540fe03accf..d021eb5a79c 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/DelegatedRequestHandler.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/DelegatedRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/FastContentOutputStream.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/FastContentOutputStream.java
index 1ccbfad83c9..54e50df5a25 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/FastContentOutputStream.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/FastContentOutputStream.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.google.common.util.concurrent.ListenableFuture;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/FastContentWriter.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/FastContentWriter.java
index 86e9851629c..596ae07f1d5 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/FastContentWriter.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/FastContentWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.google.common.util.concurrent.ListenableFuture;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/FutureCompletion.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/FutureCompletion.java
index 2cf24ef07de..ab989b89b1f 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/FutureCompletion.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/FutureCompletion.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.google.common.util.concurrent.AbstractFuture;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/FutureConjunction.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/FutureConjunction.java
index c48798ca2ab..c2e32f3ea56 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/FutureConjunction.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/FutureConjunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.google.common.util.concurrent.Futures;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/FutureResponse.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/FutureResponse.java
index 74ed9f1c101..b8073865667 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/FutureResponse.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/FutureResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.google.common.util.concurrent.AbstractFuture;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/NullContent.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/NullContent.java
index 6c7bbe21410..82082d3361b 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/NullContent.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/NullContent.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.yahoo.jdisc.Request;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/OverloadException.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/OverloadException.java
index ba6ff200a51..5985a8e0db6 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/OverloadException.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/OverloadException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
/**
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ReadableContentChannel.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ReadableContentChannel.java
index 2066e6982f1..e16199c52d2 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ReadableContentChannel.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ReadableContentChannel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import java.nio.ByteBuffer;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestDeniedException.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestDeniedException.java
index 63638e4913e..fa07e174be0 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestDeniedException.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestDeniedException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.yahoo.jdisc.Request;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestDispatch.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestDispatch.java
index 3dc0961cdcb..c85aa6375af 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestDispatch.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestDispatch.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.google.common.util.concurrent.Futures;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestHandler.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestHandler.java
index c71ddb4f167..61ffa748163 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestHandler.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.yahoo.jdisc.Container;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ResponseDispatch.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ResponseDispatch.java
index bd519f05a57..377c8ecf4a9 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ResponseDispatch.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ResponseDispatch.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.google.common.util.concurrent.ForwardingListenableFuture;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ResponseHandler.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ResponseHandler.java
index 57d9402de5f..d450d18d952 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ResponseHandler.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ResponseHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.yahoo.jdisc.Request;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ThreadedRequestHandler.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ThreadedRequestHandler.java
index 6e2895f118b..80a19a5a5ed 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ThreadedRequestHandler.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ThreadedRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.yahoo.jdisc.Request;
@@ -150,7 +150,7 @@ public abstract class ThreadedRequestHandler extends AbstractRequestHandler {
this.request = request;
this.content = content;
this.responseHandler = responseHandler;
- this.requestReference = request.refer();
+ this.requestReference = request.refer(this);
}
@Override
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/UnsafeContentInputStream.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/UnsafeContentInputStream.java
index 1662ed5b46a..3855f053b76 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/UnsafeContentInputStream.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/UnsafeContentInputStream.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import java.io.IOException;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/package-info.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/package-info.java
index 0aaf5c532f3..1b08ef5e60c 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/package-info.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* <p>Provides classes and interfaces for implementing a {@link com.yahoo.jdisc.handler.RequestHandler
* RequestHandler}.</p>
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/package-info.java b/jdisc_core/src/main/java/com/yahoo/jdisc/package-info.java
index d1d842fa3f6..74a88b5c226 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/package-info.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* <p>Provides the common classes and interfaces of the jDISC core.</p>
*
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/refcount/CloseableOnce.java b/jdisc_core/src/main/java/com/yahoo/jdisc/refcount/CloseableOnce.java
new file mode 100644
index 00000000000..f5b41c5ee9f
--- /dev/null
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/refcount/CloseableOnce.java
@@ -0,0 +1,27 @@
+package com.yahoo.jdisc.refcount;
+
+import com.yahoo.jdisc.ResourceReference;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+
+/**
+ * Ensures that a ResourceReference can only be closed exactly once.
+ *
+ * @author baldersheim
+ */
+abstract class CloseableOnce implements ResourceReference {
+ private final AtomicBoolean isReleased = new AtomicBoolean(false);
+
+ @Override
+ public final void close() {
+ final boolean wasReleasedBefore = isReleased.getAndSet(true);
+ if (wasReleasedBefore) {
+ final String message = "Reference is already released and can only be released once."
+ + " State={ " + getReferences().currentState() + " }";
+ throw new IllegalStateException(message);
+ }
+ onClose();
+ }
+ abstract void onClose();
+ abstract References getReferences();
+}
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/refcount/DebugReferencesByContextMap.java b/jdisc_core/src/main/java/com/yahoo/jdisc/refcount/DebugReferencesByContextMap.java
new file mode 100644
index 00000000000..e18980967c8
--- /dev/null
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/refcount/DebugReferencesByContextMap.java
@@ -0,0 +1,80 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.jdisc.refcount;
+
+import com.yahoo.jdisc.ResourceReference;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Does reference counting by putting a unique key together with optional context in map
+ * Used if system property jdisc.debug.resources=simple/true
+ *
+ * @author baldersheim
+ */
+public class DebugReferencesByContextMap implements References {
+ private final Map<Object, Object> contextMap = new HashMap<>();
+ private final DestructableResource resource;
+ private final Reference initialReference;
+ private long contextId = 1;
+
+ public DebugReferencesByContextMap(DestructableResource resource, Object context) {
+ this.resource = resource;
+ Long key = 0L;
+ initialReference = new Reference(this, key);
+ contextMap.put(key, context);
+ }
+
+ @Override
+ public void release() {
+ initialReference.close();
+ }
+
+ @Override
+ public int referenceCount() {
+ synchronized (contextMap) { return contextMap.size(); }
+ }
+
+ @Override
+ public ResourceReference refer(Object context) {
+ synchronized (contextMap) {
+ if (contextMap.isEmpty()) {
+ throw new IllegalStateException("Object is already destroyed, no more new references may be created."
+ + " State={ " + currentState() + " }");
+ }
+ Long key = contextId++;
+ contextMap.put(key, context != null ? context : key);
+ return new Reference(this, key);
+ }
+ }
+
+ private void removeRef(Long key) {
+ synchronized (contextMap) {
+ contextMap.remove(key);
+ if (contextMap.isEmpty()) {
+ resource.close();
+ }
+ }
+ }
+
+ @Override
+ public String currentState() {
+ synchronized (contextMap) {
+ return contextMap.toString();
+ }
+ }
+
+ private static class Reference extends CloseableOnce {
+ private final DebugReferencesByContextMap references;
+ private final Long key;
+
+ Reference(DebugReferencesByContextMap references, Long key) {
+ this.references = references;
+ this.key = key;
+ }
+
+ @Override final void onClose() { references.removeRef(key); }
+ @Override
+ final References getReferences() { return references; }
+ }
+}
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/refcount/DebugReferencesWithStack.java b/jdisc_core/src/main/java/com/yahoo/jdisc/refcount/DebugReferencesWithStack.java
new file mode 100644
index 00000000000..db6c266534f
--- /dev/null
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/refcount/DebugReferencesWithStack.java
@@ -0,0 +1,114 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.jdisc.refcount;
+
+import com.yahoo.jdisc.ResourceReference;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Does reference counting by putting stacktraces in a map together with an optional context.
+ * Intended only for debugging as it is slow.
+ * Used if system property jdisc.debug.resources=stack
+ *
+ * @author baldersheim
+ */
+public class DebugReferencesWithStack implements References {
+ private static final Logger log = Logger.getLogger(DebugReferencesWithStack.class.getName());
+ private final Map<Throwable, Object> activeReferences = new HashMap<>();
+ private final DestructableResource resource;
+ private final DebugResourceReference initialreference;
+
+ public DebugReferencesWithStack(DestructableResource resource) {
+ final Throwable referenceStack = new Throwable();
+ this.activeReferences.put(referenceStack, this);
+ this.resource = resource;
+ initialreference = new DebugResourceReference(this, referenceStack);
+ }
+
+ @Override
+ public void release() {
+ initialreference.close();
+ }
+
+ @Override
+ public int referenceCount() {
+ synchronized (activeReferences) {
+ return activeReferences.size();
+ }
+ }
+
+ @Override
+ public ResourceReference refer(Object context) {
+ final Throwable referenceStack = new Throwable();
+ synchronized (activeReferences) {
+ if (activeReferences.isEmpty()) {
+ throw new IllegalStateException("Object is already destroyed, no more new references may be created."
+ + " State={ " + currentState() + " }");
+ }
+ activeReferences.put(referenceStack, context);
+ }
+ log.log(Level.FINE, referenceStack, () ->
+ getClass().getName() + "@" + System.identityHashCode(this) + ".refer(): state={ " + currentState() + " }");
+ return new DebugResourceReference(this, referenceStack);
+ }
+
+ private void removeReferenceStack(final Throwable referenceStack, final Throwable releaseStack) {
+ final boolean doDestroy;
+ synchronized (activeReferences) {
+ final boolean wasThere = activeReferences.containsKey(referenceStack);
+ activeReferences.remove(referenceStack);
+ if (!wasThere) {
+ throw new IllegalStateException("Reference is already released and can only be released once."
+ + " reference=" + Arrays.toString(referenceStack.getStackTrace())
+ + ". State={ " + currentState() + "}");
+ }
+ doDestroy = activeReferences.isEmpty();
+ log.log(Level.FINE, releaseStack,
+ () -> getClass().getName() + "@" + System.identityHashCode(this) + " release: state={ " + currentState() + " }");
+ }
+
+ if (doDestroy) {
+ resource.close();
+ }
+ }
+
+ @Override
+ public String currentState() {
+ return "Active references: " + makeListOfActiveReferences();
+ }
+
+ private String makeListOfActiveReferences() {
+ final StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ synchronized (activeReferences) {
+ for (var activeReference : activeReferences.entrySet()) {
+ builder.append(" ");
+ builder.append(Arrays.toString(activeReference.getKey().getStackTrace()));
+ }
+ }
+ builder.append(" ]");
+ return builder.toString();
+ }
+
+ private static class DebugResourceReference extends CloseableOnce {
+ private final DebugReferencesWithStack resource;
+ private final Throwable referenceStack;
+
+ public DebugResourceReference(DebugReferencesWithStack resource, final Throwable referenceStack) {
+ this.resource = resource;
+ this.referenceStack = referenceStack;
+ }
+
+ @Override
+ final void onClose() {
+ final Throwable releaseStack = new Throwable();
+ resource.removeReferenceStack(referenceStack, releaseStack);
+ }
+ @Override
+ final References getReferences() { return resource; }
+ }
+}
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/refcount/DestructableResource.java b/jdisc_core/src/main/java/com/yahoo/jdisc/refcount/DestructableResource.java
new file mode 100644
index 00000000000..b373473f214
--- /dev/null
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/refcount/DestructableResource.java
@@ -0,0 +1,11 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.jdisc.refcount;
+
+public interface DestructableResource extends AutoCloseable {
+
+ /**
+ * Wrapper to allow access to protected AbstractResource.destroy()
+ */
+ @Override
+ void close();
+}
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/refcount/References.java b/jdisc_core/src/main/java/com/yahoo/jdisc/refcount/References.java
new file mode 100644
index 00000000000..35b4e7c759e
--- /dev/null
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/refcount/References.java
@@ -0,0 +1,22 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.jdisc.refcount;
+
+import com.yahoo.jdisc.ResourceReference;
+
+/**
+ * Interface for implementations of reference counting
+ * @author baldersheim
+ */
+public interface References {
+ /** Release the initial reference */
+ void release();
+ /** Returns number of held references */
+ int referenceCount();
+ /**
+ * Adds a reference and return an objects that when closed will return the reference.
+ * Supply a context that can provide link to the one holding the link. Useful for debugging
+ */
+ ResourceReference refer(Object context);
+
+ String currentState();
+}
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/refcount/ReferencesByCount.java b/jdisc_core/src/main/java/com/yahoo/jdisc/refcount/ReferencesByCount.java
new file mode 100644
index 00000000000..0f417c81a8b
--- /dev/null
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/refcount/ReferencesByCount.java
@@ -0,0 +1,83 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.jdisc.refcount;
+
+import com.yahoo.jdisc.ResourceReference;
+import com.yahoo.jdisc.SharedResource;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * Does reference counting by using atomic counting of references
+ * Default in production
+ *
+ * @author baldersheim
+ */
+public class ReferencesByCount implements References {
+ private final AtomicInteger refCount;
+ private final DestructableResource resource;
+ private final NoDebugResourceReference initialReference;
+
+ public ReferencesByCount(DestructableResource resource) {
+ refCount = new AtomicInteger(1);
+ this.resource = resource;
+ initialReference = new NoDebugResourceReference(this);
+ }
+
+ @Override
+ public void release() {
+ initialReference.close();
+ }
+
+ @Override
+ public int referenceCount() {
+ return refCount.get();
+ }
+
+ @Override
+ public ResourceReference refer(Object context) {
+ addRef(1);
+ return new NoDebugResourceReference(this);
+ }
+
+ @Override
+ public String currentState() {
+ return "Active references: " + refCount.get() + "."
+ + " Resource reference debugging is turned off. Consider toggling the "
+ + SharedResource.SYSTEM_PROPERTY_NAME_DEBUG
+ + " system property to get debugging assistance with reference tracking.";
+ }
+
+ private void removeRef() {
+ int refCount = addRef(-1);
+ if (refCount == 0) {
+ resource.close();
+ }
+ }
+
+ private int addRef(int value) {
+ while (true) {
+ int prev = refCount.get();
+ if (prev == 0) {
+ throw new IllegalStateException(getClass().getName() + ".addRef(" + value + "):"
+ + " Object is already destroyed."
+ + " Consider toggling the " + SharedResource.SYSTEM_PROPERTY_NAME_DEBUG
+ + " system property to get debugging assistance with reference tracking.");
+ }
+ int next = prev + value;
+ if (refCount.compareAndSet(prev, next)) {
+ return next;
+ }
+ }
+ }
+
+ private static class NoDebugResourceReference extends CloseableOnce {
+ private final ReferencesByCount resource;
+
+ NoDebugResourceReference(final ReferencesByCount resource) {
+ this.resource = resource;
+ }
+
+ @Override final void onClose() { resource.removeRef(); }
+ @Override References getReferences() { return resource; }
+ }
+}
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/refcount/package-info.java b/jdisc_core/src/main/java/com/yahoo/jdisc/refcount/package-info.java
new file mode 100644
index 00000000000..0797951df9e
--- /dev/null
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/refcount/package-info.java
@@ -0,0 +1,4 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+@com.yahoo.osgi.annotation.ExportPackage
+package com.yahoo.jdisc.refcount;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/service/AbstractClientProvider.java b/jdisc_core/src/main/java/com/yahoo/jdisc/service/AbstractClientProvider.java
index f46cdda47c5..07e520d14b0 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/service/AbstractClientProvider.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/service/AbstractClientProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.service;
import com.yahoo.jdisc.Request;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/service/AbstractServerProvider.java b/jdisc_core/src/main/java/com/yahoo/jdisc/service/AbstractServerProvider.java
index 139a52a133b..24aee4b7414 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/service/AbstractServerProvider.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/service/AbstractServerProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.service;
import com.google.inject.Inject;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/service/BindingSetNotFoundException.java b/jdisc_core/src/main/java/com/yahoo/jdisc/service/BindingSetNotFoundException.java
index 2ba12b52998..e630b882e16 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/service/BindingSetNotFoundException.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/service/BindingSetNotFoundException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.service;
import com.yahoo.jdisc.application.BindingSet;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/service/ClientProvider.java b/jdisc_core/src/main/java/com/yahoo/jdisc/service/ClientProvider.java
index c178147a952..eb6c91d0536 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/service/ClientProvider.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/service/ClientProvider.java
@@ -1,8 +1,12 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.service;
import com.yahoo.jdisc.Container;
-import com.yahoo.jdisc.application.*;
+import com.yahoo.jdisc.application.BindingRepository;
+import com.yahoo.jdisc.application.ContainerActivator;
+import com.yahoo.jdisc.application.ContainerBuilder;
+import com.yahoo.jdisc.application.Application;
+import com.yahoo.jdisc.application.UriPattern;
import com.yahoo.jdisc.handler.RequestHandler;
/**
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/service/ContainerNotReadyException.java b/jdisc_core/src/main/java/com/yahoo/jdisc/service/ContainerNotReadyException.java
index 3b34f1fe2cc..c015782e90b 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/service/ContainerNotReadyException.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/service/ContainerNotReadyException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.service;
import com.yahoo.jdisc.Container;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/service/CurrentContainer.java b/jdisc_core/src/main/java/com/yahoo/jdisc/service/CurrentContainer.java
index 9b7af7e49f5..33e31d5c002 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/service/CurrentContainer.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/service/CurrentContainer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.service;
import com.yahoo.jdisc.Container;
@@ -27,11 +27,19 @@ public interface CurrentContainer {
*
* @param uri The identifier used to match this Request to an appropriate {@link ClientProvider} or {@link
* RequestHandler}. The hostname must be "localhost" or a fully qualified domain name.
+ * @param context that can be attached for reference tracking
* @return A reference to the current Container.
* @throws NoBindingSetSelectedException If no {@link BindingSet} was selected by the {@link BindingSetSelector}.
* @throws BindingSetNotFoundException If the named BindingSet was not found.
* @throws ContainerNotReadyException If no active Container was found, this can only happen during initial
* setup.
*/
- public Container newReference(URI uri);
+ default Container newReference(URI uri, Object context) {
+ return newReference(uri);
+ }
+
+ default Container newReference(URI uri) {
+ return newReference(uri, null);
+ }
+
}
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/service/NoBindingSetSelectedException.java b/jdisc_core/src/main/java/com/yahoo/jdisc/service/NoBindingSetSelectedException.java
index 05647379caf..77c310f6f2e 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/service/NoBindingSetSelectedException.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/service/NoBindingSetSelectedException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.service;
import com.yahoo.jdisc.application.BindingSet;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/service/ServerProvider.java b/jdisc_core/src/main/java/com/yahoo/jdisc/service/ServerProvider.java
index b58f3bc5138..ef72e643dae 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/service/ServerProvider.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/service/ServerProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.service;
import com.yahoo.jdisc.Container;
@@ -37,7 +37,7 @@ public interface ServerProvider extends SharedResource {
* {@link Container} does <em>not</em> call this method, instead it is a required step in the {@link Application}
* initialization code.</p>
*/
- public void start();
+ void start();
/**
* <p>This is a synchronous method to close the listen port (or equivalent) of this ServerProvider and flush any
@@ -48,5 +48,5 @@ public interface ServerProvider extends SharedResource {
* <p>The {@link Container} does <em>not</em> call this method, instead it is a required step in the {@link
* Application} shutdown code.</p>
*/
- public void close();
+ void close();
}
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/service/package-info.java b/jdisc_core/src/main/java/com/yahoo/jdisc/service/package-info.java
index d4df91a81a3..532d2921469 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/service/package-info.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/service/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* <p>Provides classes and interfaces for implementing a {@link com.yahoo.jdisc.service.ClientProvider ClientProvider} or
* a {@link com.yahoo.jdisc.service.ServerProvider ServerProvider}.</p>
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/statistics/ContainerWatchdogMetrics.java b/jdisc_core/src/main/java/com/yahoo/jdisc/statistics/ContainerWatchdogMetrics.java
index 2a286aef990..6d7560662b5 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/statistics/ContainerWatchdogMetrics.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/statistics/ContainerWatchdogMetrics.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.statistics;
import com.yahoo.jdisc.Metric;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/statistics/package-info.java b/jdisc_core/src/main/java/com/yahoo/jdisc/statistics/package-info.java
index cebe03c5103..e8272861707 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/statistics/package-info.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/statistics/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@com.yahoo.osgi.annotation.ExportPackage
package com.yahoo.jdisc.statistics;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/test/MockMetric.java b/jdisc_core/src/main/java/com/yahoo/jdisc/test/MockMetric.java
index 9a35c06bfe9..cb89320e580 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/test/MockMetric.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/test/MockMetric.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.yahoo.jdisc.Metric;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingClientProvider.java b/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingClientProvider.java
index b592a4eb4fc..139e24c1eca 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingClientProvider.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingClientProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.yahoo.jdisc.NoopSharedResource;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingCompletionHandler.java b/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingCompletionHandler.java
index 2d51fc260f4..3639e7f9216 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingCompletionHandler.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingCompletionHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.yahoo.jdisc.handler.CompletionHandler;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingContentChannel.java b/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingContentChannel.java
index d188907d7d7..58c1711cc43 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingContentChannel.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingContentChannel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.yahoo.jdisc.handler.CompletionHandler;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingOsgiFramework.java b/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingOsgiFramework.java
index 0f927aa97d3..01e00fe8ba3 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingOsgiFramework.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingOsgiFramework.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.yahoo.jdisc.application.OsgiFramework;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingRequest.java b/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingRequest.java
index 2286417b6e3..6897fb75848 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingRequest.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.google.inject.Module;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingRequestHandler.java b/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingRequestHandler.java
index d411fcf644f..4ed2cd83244 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingRequestHandler.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.yahoo.jdisc.NoopSharedResource;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingResponseHandler.java b/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingResponseHandler.java
index 48ebbff29fc..40f18cd9859 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingResponseHandler.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingResponseHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.yahoo.jdisc.Response;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingServerProvider.java b/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingServerProvider.java
index a754d36d036..7dc578e4ae6 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingServerProvider.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingServerProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.yahoo.jdisc.NoopSharedResource;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/test/ServerProviderConformanceTest.java b/jdisc_core/src/main/java/com/yahoo/jdisc/test/ServerProviderConformanceTest.java
index 79fe8ea11d4..82929013dda 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/test/ServerProviderConformanceTest.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/test/ServerProviderConformanceTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.google.common.annotations.Beta;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/test/TestDriver.java b/jdisc_core/src/main/java/com/yahoo/jdisc/test/TestDriver.java
index eebaf1f579f..fe968f2290a 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/test/TestDriver.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/test/TestDriver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.google.inject.AbstractModule;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/test/TestTimer.java b/jdisc_core/src/main/java/com/yahoo/jdisc/test/TestTimer.java
index 980e8e008b6..cd21ab84538 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/test/TestTimer.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/test/TestTimer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.yahoo.jdisc.Timer;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/test/package-info.java b/jdisc_core/src/main/java/com/yahoo/jdisc/test/package-info.java
index 026f0c22058..199a12216ad 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/test/package-info.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/test/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* <p>Provides classes and interfaces for implementing unit tests of jDISC components.</p>
*
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/AbstractResourceTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/AbstractResourceTestCase.java
index aad746df40f..edde64c5e58 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/AbstractResourceTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/AbstractResourceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/ContainerTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/ContainerTestCase.java
index 4c08b8f49a0..184f7b4d77d 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/ContainerTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/ContainerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
import com.google.inject.AbstractModule;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/HeaderFieldsTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/HeaderFieldsTestCase.java
index 8d0e93ada1a..2fa5700f87b 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/HeaderFieldsTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/HeaderFieldsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/ProxyRequestHandlerTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/ProxyRequestHandlerTestCase.java
index b7787a76716..017db9d39da 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/ProxyRequestHandlerTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/ProxyRequestHandlerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
import com.yahoo.jdisc.application.ContainerBuilder;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/ReferencedResourceTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/ReferencedResourceTestCase.java
index 2aa4f094119..9b42ea19c81 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/ReferencedResourceTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/ReferencedResourceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/ReferencesTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/ReferencesTestCase.java
index 99e7cd0e1e7..7a561e7fc89 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/ReferencesTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/ReferencesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/RequestTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/RequestTestCase.java
index ab92f5fdcca..987a24fe332 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/RequestTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/RequestTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
import com.google.inject.AbstractModule;
@@ -34,6 +34,7 @@ import static org.junit.Assert.fail;
public class RequestTestCase {
@Test
+ @SuppressWarnings("deprecation")
public void requireThatAccessorsWork() throws BindingSetNotFoundException {
MyTimer timer = new MyTimer();
timer.currentTime = 69;
@@ -249,6 +250,7 @@ public class RequestTestCase {
assertTrue(driver.close());
}
+ @SuppressWarnings("deprecation")
private static void assertUri(CurrentContainer container, String requestUri, String expectedUri) {
Request serverReq = new Request(container, URI.create(requestUri));
assertEquals(expectedUri, serverReq.getUri().toString());
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/ResponseTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/ResponseTestCase.java
index b52f380f427..b3fbbceb06a 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/ResponseTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/ResponseTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/application/AbstractApplicationTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/application/AbstractApplicationTestCase.java
index ecc8dca1acb..3a6aa03ad45 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/application/AbstractApplicationTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/application/AbstractApplicationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.google.inject.Inject;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/application/ApplicationNotReadyTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/application/ApplicationNotReadyTestCase.java
index 463336abfe6..63331d2014d 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/application/ApplicationNotReadyTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/application/ApplicationNotReadyTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.google.inject.Inject;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/application/BindingMatchTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/application/BindingMatchTestCase.java
index d6112947663..5c0942fbf37 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/application/BindingMatchTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/application/BindingMatchTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/application/BindingRepositoryTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/application/BindingRepositoryTestCase.java
index 273c45b2fbe..95ba6cde595 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/application/BindingRepositoryTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/application/BindingRepositoryTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.yahoo.jdisc.NoopSharedResource;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/application/BindingSetTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/application/BindingSetTestCase.java
index 64bcaf15a69..3b7d8aafcab 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/application/BindingSetTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/application/BindingSetTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.yahoo.jdisc.handler.RequestHandler;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/application/BundleInstallationExceptionTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/application/BundleInstallationExceptionTestCase.java
index e45b448dd06..681ca4dea98 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/application/BundleInstallationExceptionTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/application/BundleInstallationExceptionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/application/ContainerBuilderTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/application/ContainerBuilderTestCase.java
index aeb3c310c17..288b46c995f 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/application/ContainerBuilderTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/application/ContainerBuilderTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.google.inject.AbstractModule;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/application/ContainerThreadTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/application/ContainerThreadTestCase.java
index bda43414667..c7780808bf6 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/application/ContainerThreadTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/application/ContainerThreadTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.yahoo.jdisc.Metric;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/application/GlobPatternTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/application/GlobPatternTestCase.java
index 739fc2e2118..abe47662970 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/application/GlobPatternTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/application/GlobPatternTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/application/GuiceRepositoryTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/application/GuiceRepositoryTestCase.java
index 804f439964e..11857163970 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/application/GuiceRepositoryTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/application/GuiceRepositoryTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.google.inject.AbstractModule;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/application/MetricImplTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/application/MetricImplTestCase.java
index 2dd3ead9fd9..29c51760347 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/application/MetricImplTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/application/MetricImplTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.google.inject.AbstractModule;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/application/OsgiHeaderTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/application/OsgiHeaderTestCase.java
index b668ec210c5..da1ab024ede 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/application/OsgiHeaderTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/application/OsgiHeaderTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/application/OsgiRepositoryTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/application/OsgiRepositoryTestCase.java
index 9c0483aac3a..b57fc5ae31f 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/application/OsgiRepositoryTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/application/OsgiRepositoryTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/application/ResourcePoolTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/application/ResourcePoolTestCase.java
index 051db65d56b..b94ff063fc7 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/application/ResourcePoolTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/application/ResourcePoolTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.google.inject.AbstractModule;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/application/ServerRepositoryTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/application/ServerRepositoryTestCase.java
index f6f4df25c60..a5d7184e31a 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/application/ServerRepositoryTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/application/ServerRepositoryTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.yahoo.jdisc.NoopSharedResource;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/application/UriPatternTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/application/UriPatternTestCase.java
index 0ea82508f06..f7488aa392a 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/application/UriPatternTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/application/UriPatternTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/benchmark/BindingMatchingTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/benchmark/BindingMatchingTestCase.java
index ebc78d0b70e..d6f49c6a038 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/benchmark/BindingMatchingTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/benchmark/BindingMatchingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.benchmark;
import com.yahoo.jdisc.application.BindingRepository;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/benchmark/LatencyTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/benchmark/LatencyTestCase.java
index 9eafb93f356..0ac453d2502 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/benchmark/LatencyTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/benchmark/LatencyTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.benchmark;
import com.yahoo.jdisc.Request;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/benchmark/ThroughputTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/benchmark/ThroughputTestCase.java
index aefcac2fa91..23d94114a38 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/benchmark/ThroughputTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/benchmark/ThroughputTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.benchmark;
import com.yahoo.jdisc.Request;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/benchmark/UriMatchingTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/benchmark/UriMatchingTestCase.java
index 50b427e61f5..e822bd20536 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/benchmark/UriMatchingTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/benchmark/UriMatchingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.benchmark;
import com.yahoo.jdisc.application.UriPattern;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/client/AbstractClientApplicationTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/client/AbstractClientApplicationTestCase.java
index 2eaaf6d9041..5534a97a10c 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/client/AbstractClientApplicationTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/client/AbstractClientApplicationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.client;
import com.google.inject.AbstractModule;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/client/ClientDriverTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/client/ClientDriverTestCase.java
index f3f405ac595..cd7d5552287 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/client/ClientDriverTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/client/ClientDriverTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.client;
import com.google.inject.AbstractModule;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ActiveContainerTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ActiveContainerTestCase.java
index a0ac265ce78..cf1fa62b102 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ActiveContainerTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ActiveContainerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.google.inject.AbstractModule;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationConfigModuleTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationConfigModuleTestCase.java
index a0992f11a02..d17c5b183d8 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationConfigModuleTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationConfigModuleTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.google.inject.Guice;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationEnvironmentModuleTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationEnvironmentModuleTestCase.java
index 9c2f1308355..3bd60832ca3 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationEnvironmentModuleTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationEnvironmentModuleTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.google.inject.Binding;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationLoaderTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationLoaderTestCase.java
index 89ca49a6273..e5d335beb38 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationLoaderTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationLoaderTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.google.inject.AbstractModule;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationRestartTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationRestartTestCase.java
index 96c9d2135ac..941067ff27d 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationRestartTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationRestartTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.google.inject.AbstractModule;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationShutdownTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationShutdownTestCase.java
index 0a3aa974f76..3f906263867 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationShutdownTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationShutdownTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.yahoo.jdisc.Request;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/BundleLocationResolverTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/BundleLocationResolverTestCase.java
index 686ca0a6835..86f7f5875a7 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/BundleLocationResolverTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/BundleLocationResolverTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogFormatterTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogFormatterTestCase.java
index 402c946b77e..f8a982d02cf 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogFormatterTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogFormatterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogListenerTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogListenerTestCase.java
index 4aaa6530030..5f7f7e733fa 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogListenerTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogListenerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogManagerTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogManagerTestCase.java
index ba90baccffd..4172d6d907a 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogManagerTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogManagerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.yahoo.jdisc.test.TestDriver;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerResourceTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerResourceTestCase.java
index 5e4b7db5683..a1610c81331 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerResourceTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerResourceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.yahoo.jdisc.Container;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerShutdownTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerShutdownTestCase.java
index 5777c8ff126..cf247040c41 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerShutdownTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerShutdownTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.yahoo.jdisc.Container;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerSnapshotTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerSnapshotTestCase.java
index 0ea1040306c..3e6987c8c6f 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerSnapshotTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerSnapshotTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.google.inject.AbstractModule;
@@ -42,8 +42,7 @@ public class ContainerSnapshotTestCase {
assertNotNull(request.getBindingMatch());
request.release();
- request = new Request(driver, URI.create("http://foo/"));
- request.setServerRequest(false);
+ request = new Request(driver, URI.create("http://foo/"), false);
assertNull(request.container().resolveHandler(request));
assertNull(request.getBindingMatch());
request.release();
@@ -53,8 +52,7 @@ public class ContainerSnapshotTestCase {
assertNull(request.getBindingMatch());
request.release();
- request = new Request(driver, URI.create("http://bar/"));
- request.setServerRequest(false);
+ request = new Request(driver, URI.create("http://bar/"), false);
assertNull(request.container().resolveHandler(request));
assertNull(request.getBindingMatch());
request.release();
@@ -74,8 +72,7 @@ public class ContainerSnapshotTestCase {
assertNull(request.getBindingMatch());
request.release();
- request = new Request(driver, URI.create("http://foo/"));
- request.setServerRequest(false);
+ request = new Request(driver, URI.create("http://foo/"), false);
assertNotNull(request.container().resolveHandler(request));
assertNotNull(request.getBindingMatch());
request.release();
@@ -85,8 +82,7 @@ public class ContainerSnapshotTestCase {
assertNull(request.getBindingMatch());
request.release();
- request = new Request(driver, URI.create("http://bar/"));
- request.setServerRequest(false);
+ request = new Request(driver, URI.create("http://bar/"), false);
assertNull(request.container().resolveHandler(request));
assertNull(request.getBindingMatch());
request.release();
@@ -100,9 +96,7 @@ public class ContainerSnapshotTestCase {
ContainerBuilder builder = driver.newContainerBuilder();
builder.clientBindings().bind("http://host/path", MyRequestHandler.newInstance());
driver.activateContainer(builder);
- Request request = new Request(driver, URI.create("http://host/path"));
- assertNull(request.container().resolveHandler(request));
- request.setServerRequest(false);
+ Request request = new Request(driver, URI.create("http://host/path"), false);
assertNotNull(request.container().resolveHandler(request));
request.release();
assertTrue(driver.close());
@@ -152,7 +146,7 @@ public class ContainerSnapshotTestCase {
}
});
ActiveContainer active = new ActiveContainer(driver.newContainerBuilder());
- ContainerSnapshot snapshot = new ContainerSnapshot(active, null, null);
+ ContainerSnapshot snapshot = new ContainerSnapshot(active, null, null, null);
assertSame(obj, snapshot.getInstance(Object.class));
assertEquals("foo", snapshot.getInstance(Key.get(String.class, Names.named("foo"))));
snapshot.release();
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerTerminationTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerTerminationTestCase.java
index 69e66c96cd8..de22a49895f 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerTerminationTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerTerminationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.yahoo.jdisc.application.ContainerBuilder;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerWatchdogTest.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerWatchdogTest.java
index 94e7c3a1d22..e72b01d8b8f 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerWatchdogTest.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ContainerWatchdogTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.yahoo.jdisc.Metric;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/DefaultBindingSelectorTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/DefaultBindingSelectorTestCase.java
index e372836a918..66c92aa138a 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/DefaultBindingSelectorTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/DefaultBindingSelectorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.google.inject.Guice;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ExportPackagesTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ExportPackagesTestCase.java
index 1811e173e73..225ecd4a242 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ExportPackagesTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ExportPackagesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/FelixFrameworkTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/FelixFrameworkTestCase.java
index 3e898abeb8d..fb663afa23f 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/FelixFrameworkTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/FelixFrameworkTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.yahoo.jdisc.test.TestDriver;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/FelixParamsTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/FelixParamsTestCase.java
index 3c74172b545..490470b4fdf 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/FelixParamsTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/FelixParamsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogHandlerTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogHandlerTestCase.java
index b3dbd8712c4..6ae377a91a4 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogHandlerTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogHandlerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogManagerTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogManagerTestCase.java
index 2f4f005cbb6..be4c0ada514 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogManagerTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogManagerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.yahoo.jdisc.test.TestDriver;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogServiceTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogServiceTestCase.java
index 1434ca1b704..15377d7ae37 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogServiceTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogServiceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.yahoo.jdisc.application.OsgiFramework;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ScheduledQueueTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ScheduledQueueTestCase.java
index 5af251bd3a0..163111c641d 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ScheduledQueueTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ScheduledQueueTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/SystemTimerTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/SystemTimerTestCase.java
index 147831de5c0..52e25877402 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/SystemTimerTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/SystemTimerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.google.inject.Guice;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/TimeoutManagerImplTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/TimeoutManagerImplTestCase.java
index 100fb5d884d..75ebad12158 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/TimeoutManagerImplTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/TimeoutManagerImplTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.google.inject.Binder;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/AbstractContentOutputStreamTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/AbstractContentOutputStreamTestCase.java
index 59404293660..4951ff72ffd 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/AbstractContentOutputStreamTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/AbstractContentOutputStreamTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/AbstractRequestHandlerTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/AbstractRequestHandlerTestCase.java
index e530510b6da..6b5382b8bba 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/AbstractRequestHandlerTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/AbstractRequestHandlerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.yahoo.jdisc.Request;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/BindingNotFoundTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/BindingNotFoundTestCase.java
index 481ba728067..7d76e9de7e2 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/BindingNotFoundTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/BindingNotFoundTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.yahoo.jdisc.Request;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/BlockingContentWriterTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/BlockingContentWriterTestCase.java
index 637ff8888f5..651c24648a1 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/BlockingContentWriterTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/BlockingContentWriterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/BufferedContentChannelTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/BufferedContentChannelTestCase.java
index 0f33e52c772..705d6d008b0 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/BufferedContentChannelTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/BufferedContentChannelTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/CallableRequestDispatchTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/CallableRequestDispatchTestCase.java
index 97530cdfe8a..b11afacb518 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/CallableRequestDispatchTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/CallableRequestDispatchTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.yahoo.jdisc.Request;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/CallableResponseDispatchTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/CallableResponseDispatchTestCase.java
index 44c382260cb..bb17bb9bc41 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/CallableResponseDispatchTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/CallableResponseDispatchTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.yahoo.jdisc.Response;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/ContentInputStreamTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/ContentInputStreamTestCase.java
index cdc75fbe61a..f90251bc16e 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/ContentInputStreamTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/ContentInputStreamTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/FastContentOutputStreamTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/FastContentOutputStreamTestCase.java
index 96c80d491be..2cdc0e1256f 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/FastContentOutputStreamTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/FastContentOutputStreamTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/FastContentWriterTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/FastContentWriterTestCase.java
index 96e7799f54f..aa6c4ce3b1b 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/FastContentWriterTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/FastContentWriterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.google.common.util.concurrent.MoreExecutors;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/FutureCompletionTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/FutureCompletionTestCase.java
index 46a5d89dcaf..6c3803f4f56 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/FutureCompletionTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/FutureCompletionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.google.common.util.concurrent.MoreExecutors;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/FutureConjunctionTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/FutureConjunctionTestCase.java
index aacffc92a4a..346b06e0f23 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/FutureConjunctionTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/FutureConjunctionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.google.common.util.concurrent.AbstractFuture;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/FutureResponseTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/FutureResponseTestCase.java
index 9ec3586d563..440698257a4 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/FutureResponseTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/FutureResponseTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.google.common.util.concurrent.MoreExecutors;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/NullContentTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/NullContentTestCase.java
index b45de238c79..598d21b94ea 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/NullContentTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/NullContentTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/ReadableContentChannelTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/ReadableContentChannelTestCase.java
index 34ca028bba2..385cd4015b9 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/ReadableContentChannelTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/ReadableContentChannelTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import org.junit.Test;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/RequestDeniedTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/RequestDeniedTestCase.java
index 981df95ef41..01634498bf3 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/RequestDeniedTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/RequestDeniedTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.yahoo.jdisc.NoopSharedResource;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/RequestDispatchTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/RequestDispatchTestCase.java
index 0a15ead00e8..3b49d1f349e 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/RequestDispatchTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/RequestDispatchTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.google.common.util.concurrent.MoreExecutors;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/ResponseDispatchTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/ResponseDispatchTestCase.java
index c7d52f588b0..f9a5c22837f 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/ResponseDispatchTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/ResponseDispatchTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.google.common.util.concurrent.MoreExecutors;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/RunnableLatch.java b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/RunnableLatch.java
index 006012551be..6e1ddb07b46 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/RunnableLatch.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/RunnableLatch.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import java.util.concurrent.CountDownLatch;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/ThreadedRequestHandlerTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/ThreadedRequestHandlerTestCase.java
index 92d2fbf78b7..71f207bbbff 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/ThreadedRequestHandlerTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/ThreadedRequestHandlerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.google.common.util.concurrent.ListenableFuture;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/UnsafeContentInputStreamTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/UnsafeContentInputStreamTestCase.java
index c96450c1bd2..864604d76d6 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/handler/UnsafeContentInputStreamTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/handler/UnsafeContentInputStreamTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.handler;
import com.yahoo.text.Utf8;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/service/AbstractClientProviderTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/service/AbstractClientProviderTestCase.java
index 29cc2ebe581..bd205fd777e 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/service/AbstractClientProviderTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/service/AbstractClientProviderTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.service;
import com.yahoo.jdisc.Request;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/service/AbstractServerProviderTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/service/AbstractServerProviderTestCase.java
index e79b7201fdf..7f4d9f72980 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/service/AbstractServerProviderTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/service/AbstractServerProviderTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.service;
import com.google.inject.Inject;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/service/BindingSetNotFoundTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/service/BindingSetNotFoundTestCase.java
index b875e0b1dc8..880641fe0f0 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/service/BindingSetNotFoundTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/service/BindingSetNotFoundTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.service;
import com.google.inject.AbstractModule;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/service/ConnectToHandlerTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/service/ConnectToHandlerTestCase.java
index 2e4dbb66aa0..7182379dc85 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/service/ConnectToHandlerTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/service/ConnectToHandlerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.service;
import com.yahoo.jdisc.Request;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/service/ContainerNotReadyTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/service/ContainerNotReadyTestCase.java
index bdc9f3a0c2c..6fcc7601339 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/service/ContainerNotReadyTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/service/ContainerNotReadyTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.service;
import com.yahoo.jdisc.test.TestDriver;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/service/CurrentContainerTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/service/CurrentContainerTestCase.java
index d8fc266da03..6aa8b891480 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/service/CurrentContainerTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/service/CurrentContainerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.service;
import com.yahoo.jdisc.Request;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/service/NoBindingSetSelectedTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/service/NoBindingSetSelectedTestCase.java
index d6561e92202..cd59f676d62 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/service/NoBindingSetSelectedTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/service/NoBindingSetSelectedTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.service;
import com.google.inject.AbstractModule;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingClientTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingClientTestCase.java
index e1b664e91ca..82cf4953010 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingClientTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingClientTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.yahoo.jdisc.service.ClientProvider;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingCompletionHandlerTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingCompletionHandlerTestCase.java
index e05c937e671..7aff45e195f 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingCompletionHandlerTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingCompletionHandlerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.yahoo.jdisc.handler.CompletionHandler;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingContentChannelTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingContentChannelTestCase.java
index 446377cb472..4b26a53442d 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingContentChannelTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingContentChannelTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.yahoo.jdisc.handler.CompletionHandler;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingOsgiFrameworkTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingOsgiFrameworkTestCase.java
index f88c6951e56..64d670b3efe 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingOsgiFrameworkTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingOsgiFrameworkTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.yahoo.jdisc.application.OsgiFramework;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingRequestHandlerTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingRequestHandlerTestCase.java
index f91e29084ae..4d7e911907f 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingRequestHandlerTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingRequestHandlerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.yahoo.jdisc.handler.RequestHandler;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingRequestTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingRequestTestCase.java
index 0e321f35eb2..ac55334308c 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingRequestTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingRequestTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.google.inject.AbstractModule;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingResponseHandlerTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingResponseHandlerTestCase.java
index d6d6dc05094..6b7af12c763 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingResponseHandlerTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingResponseHandlerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.yahoo.jdisc.Response;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingServerTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingServerTestCase.java
index 6c27c516f93..1666f737459 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingServerTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/test/NonWorkingServerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.yahoo.jdisc.service.ServerProvider;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/test/ServerProviderConformanceTestTest.java b/jdisc_core/src/test/java/com/yahoo/jdisc/test/ServerProviderConformanceTestTest.java
index 678c9b2796c..01b1e72d0b6 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/test/ServerProviderConformanceTestTest.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/test/ServerProviderConformanceTestTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.google.common.util.concurrent.SettableFuture;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/test/TestDriverTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/test/TestDriverTestCase.java
index 3d59bd692aa..70ee85861e6 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/test/TestDriverTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/test/TestDriverTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.yahoo.jdisc.Request;
diff --git a/jdisc_core_test/README.md b/jdisc_core_test/README.md
index 0a07e06f38c..2dc1b1d093a 100644
--- a/jdisc_core_test/README.md
+++ b/jdisc_core_test/README.md
@@ -1,2 +1,2 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Tests for jdisc core
diff --git a/jdisc_core_test/integration_test/pom.xml b/jdisc_core_test/integration_test/pom.xml
index 0b0a1ce81ef..7aadee990c6 100644
--- a/jdisc_core_test/integration_test/pom.xml
+++ b/jdisc_core_test/integration_test/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/AbstractApplicationTestCase.java b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/AbstractApplicationTestCase.java
index 8059bff7bb0..267ba63c91b 100644
--- a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/AbstractApplicationTestCase.java
+++ b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/AbstractApplicationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.google.inject.Inject;
diff --git a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/BundleActivatorIntegrationTest.java b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/BundleActivatorIntegrationTest.java
index 9450d2f26c1..beec3fe663e 100644
--- a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/BundleActivatorIntegrationTest.java
+++ b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/BundleActivatorIntegrationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.yahoo.jdisc.test.TestDriver;
diff --git a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/BundleInstallerIntegrationTest.java b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/BundleInstallerIntegrationTest.java
index e743d04607f..3c030fcc258 100644
--- a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/BundleInstallerIntegrationTest.java
+++ b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/BundleInstallerIntegrationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.yahoo.jdisc.test.TestDriver;
diff --git a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/GuiceRepositoryIntegrationTest.java b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/GuiceRepositoryIntegrationTest.java
index 7929de8c63b..80cec61e13c 100644
--- a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/GuiceRepositoryIntegrationTest.java
+++ b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/GuiceRepositoryIntegrationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.google.inject.AbstractModule;
diff --git a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/ServerRepositoryIntegrationTest.java b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/ServerRepositoryIntegrationTest.java
index 056fba7652f..1c3fda3e855 100644
--- a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/ServerRepositoryIntegrationTest.java
+++ b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/application/ServerRepositoryIntegrationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.application;
import com.google.inject.AbstractModule;
diff --git a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/client/ClientDriverIntegrationTest.java b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/client/ClientDriverIntegrationTest.java
index 8b9b031e982..bee6592fcf3 100644
--- a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/client/ClientDriverIntegrationTest.java
+++ b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/client/ClientDriverIntegrationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.client;
import com.google.inject.AbstractModule;
diff --git a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/ApplicationLoaderIntegrationTest.java b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/ApplicationLoaderIntegrationTest.java
index d1b907a05ec..ea147f2bbc6 100644
--- a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/ApplicationLoaderIntegrationTest.java
+++ b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/ApplicationLoaderIntegrationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.google.inject.AbstractModule;
diff --git a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/ExportPackagesIntegrationTest.java b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/ExportPackagesIntegrationTest.java
index d2c1d3b5140..9727400c296 100644
--- a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/ExportPackagesIntegrationTest.java
+++ b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/ExportPackagesIntegrationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.yahoo.jdisc.test.TestDriver;
diff --git a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/FelixFrameworkIntegrationTest.java b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/FelixFrameworkIntegrationTest.java
index 9b7453d2d6b..b7d54b8d1b2 100644
--- a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/FelixFrameworkIntegrationTest.java
+++ b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/FelixFrameworkIntegrationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.yahoo.jdisc.application.BundleInstallationException;
diff --git a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/OsgiLogManagerIntegrationTest.java b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/OsgiLogManagerIntegrationTest.java
index 6c6b3611993..629bef6ded3 100644
--- a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/OsgiLogManagerIntegrationTest.java
+++ b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/OsgiLogManagerIntegrationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import org.junit.Test;
diff --git a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/OsgiLogServiceIntegrationTest.java b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/OsgiLogServiceIntegrationTest.java
index 1f839d0dc0a..6a36a13b976 100644
--- a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/OsgiLogServiceIntegrationTest.java
+++ b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/core/OsgiLogServiceIntegrationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.core;
import com.yahoo.jdisc.test.TestDriver;
diff --git a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/test/TestDriverIntegrationTest.java b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/test/TestDriverIntegrationTest.java
index 9ffe11afb19..d1ca6fa964f 100644
--- a/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/test/TestDriverIntegrationTest.java
+++ b/jdisc_core_test/integration_test/src/test/java/com/yahoo/jdisc/test/TestDriverIntegrationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.test;
import com.google.inject.AbstractModule;
diff --git a/jdisc_core_test/pom.xml b/jdisc_core_test/pom.xml
index e5cde58caa1..4216c25266e 100644
--- a/jdisc_core_test/pom.xml
+++ b/jdisc_core_test/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
@@ -24,6 +24,8 @@
<properties>
<!-- This project only builds test artifacts -->
<maven.deploy.skip>true</maven.deploy.skip>
+ <maven.javadoc.skip>true</maven.javadoc.skip>
+ <skipNexusStagingDeployMojo>true</skipNexusStagingDeployMojo>
</properties>
</project>
diff --git a/jdisc_core_test/test_bundles/app-a/pom.xml b/jdisc_core_test/test_bundles/app-a/pom.xml
index a6f43e8a8a2..9b8304284ae 100644
--- a/jdisc_core_test/test_bundles/app-a/pom.xml
+++ b/jdisc_core_test/test_bundles/app-a/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/app-a/src/main/java/com/yahoo/jdisc/bundle/ApplicationA.java b/jdisc_core_test/test_bundles/app-a/src/main/java/com/yahoo/jdisc/bundle/ApplicationA.java
index 8d67813bc7e..4932f789e24 100644
--- a/jdisc_core_test/test_bundles/app-a/src/main/java/com/yahoo/jdisc/bundle/ApplicationA.java
+++ b/jdisc_core_test/test_bundles/app-a/src/main/java/com/yahoo/jdisc/bundle/ApplicationA.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle;
import com.google.inject.Inject;
diff --git a/jdisc_core_test/test_bundles/app-b-priv/pom.xml b/jdisc_core_test/test_bundles/app-b-priv/pom.xml
index 94ead0ea2ec..3b595562718 100644
--- a/jdisc_core_test/test_bundles/app-b-priv/pom.xml
+++ b/jdisc_core_test/test_bundles/app-b-priv/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/app-b-priv/src/main/java/com/yahoo/jdisc/bundle/ApplicationB.java b/jdisc_core_test/test_bundles/app-b-priv/src/main/java/com/yahoo/jdisc/bundle/ApplicationB.java
index ddc85519fe9..5fac1be1ac0 100644
--- a/jdisc_core_test/test_bundles/app-b-priv/src/main/java/com/yahoo/jdisc/bundle/ApplicationB.java
+++ b/jdisc_core_test/test_bundles/app-b-priv/src/main/java/com/yahoo/jdisc/bundle/ApplicationB.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle;
import com.google.inject.Inject;
diff --git a/jdisc_core_test/test_bundles/app-ca/pom.xml b/jdisc_core_test/test_bundles/app-ca/pom.xml
index c77b75ae5cf..6126af80de0 100644
--- a/jdisc_core_test/test_bundles/app-ca/pom.xml
+++ b/jdisc_core_test/test_bundles/app-ca/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/app-ca/src/main/java/com/yahoo/jdisc/bundle/ApplicationC.java b/jdisc_core_test/test_bundles/app-ca/src/main/java/com/yahoo/jdisc/bundle/ApplicationC.java
index 18eefb0772b..7b0f5281fa4 100644
--- a/jdisc_core_test/test_bundles/app-ca/src/main/java/com/yahoo/jdisc/bundle/ApplicationC.java
+++ b/jdisc_core_test/test_bundles/app-ca/src/main/java/com/yahoo/jdisc/bundle/ApplicationC.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle;
import com.yahoo.jdisc.application.Application;
diff --git a/jdisc_core_test/test_bundles/app-dj/pom.xml b/jdisc_core_test/test_bundles/app-dj/pom.xml
index 6ff8165cdb6..e17020bdd0c 100644
--- a/jdisc_core_test/test_bundles/app-dj/pom.xml
+++ b/jdisc_core_test/test_bundles/app-dj/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/app-dj/src/main/java/com/yahoo/jdisc/bundle/ApplicationD.java b/jdisc_core_test/test_bundles/app-dj/src/main/java/com/yahoo/jdisc/bundle/ApplicationD.java
index ad2d9856f7b..bfbf15669b8 100644
--- a/jdisc_core_test/test_bundles/app-dj/src/main/java/com/yahoo/jdisc/bundle/ApplicationD.java
+++ b/jdisc_core_test/test_bundles/app-dj/src/main/java/com/yahoo/jdisc/bundle/ApplicationD.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle;
import com.yahoo.jdisc.application.Application;
diff --git a/jdisc_core_test/test_bundles/app-ej-priv/pom.xml b/jdisc_core_test/test_bundles/app-ej-priv/pom.xml
index db7c05542b3..7d55bfbe895 100644
--- a/jdisc_core_test/test_bundles/app-ej-priv/pom.xml
+++ b/jdisc_core_test/test_bundles/app-ej-priv/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/app-ej-priv/src/main/java/com/yahoo/jdisc/bundle/ApplicationE.java b/jdisc_core_test/test_bundles/app-ej-priv/src/main/java/com/yahoo/jdisc/bundle/ApplicationE.java
index 201bf2ecf9d..31d5c1f3aa8 100644
--- a/jdisc_core_test/test_bundles/app-ej-priv/src/main/java/com/yahoo/jdisc/bundle/ApplicationE.java
+++ b/jdisc_core_test/test_bundles/app-ej-priv/src/main/java/com/yahoo/jdisc/bundle/ApplicationE.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle;
import com.yahoo.jdisc.application.Application;
diff --git a/jdisc_core_test/test_bundles/app-f-more/pom.xml b/jdisc_core_test/test_bundles/app-f-more/pom.xml
index 886e0ccb758..a488b333092 100644
--- a/jdisc_core_test/test_bundles/app-f-more/pom.xml
+++ b/jdisc_core_test/test_bundles/app-f-more/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/app-f-more/src/main/java/com/yahoo/jdisc/bundle/ApplicationF.java b/jdisc_core_test/test_bundles/app-f-more/src/main/java/com/yahoo/jdisc/bundle/ApplicationF.java
index 7223ed693cd..21d7e22f6d4 100644
--- a/jdisc_core_test/test_bundles/app-f-more/src/main/java/com/yahoo/jdisc/bundle/ApplicationF.java
+++ b/jdisc_core_test/test_bundles/app-f-more/src/main/java/com/yahoo/jdisc/bundle/ApplicationF.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle;
import com.yahoo.jdisc.application.Application;
diff --git a/jdisc_core_test/test_bundles/app-g-act/pom.xml b/jdisc_core_test/test_bundles/app-g-act/pom.xml
index 929b337f48d..a8389b8ce33 100644
--- a/jdisc_core_test/test_bundles/app-g-act/pom.xml
+++ b/jdisc_core_test/test_bundles/app-g-act/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/app-g-act/src/main/java/com/yahoo/jdisc/bundle/g_act/ApplicationG.java b/jdisc_core_test/test_bundles/app-g-act/src/main/java/com/yahoo/jdisc/bundle/g_act/ApplicationG.java
index 02a9cd5a542..609455a7bb4 100644
--- a/jdisc_core_test/test_bundles/app-g-act/src/main/java/com/yahoo/jdisc/bundle/g_act/ApplicationG.java
+++ b/jdisc_core_test/test_bundles/app-g-act/src/main/java/com/yahoo/jdisc/bundle/g_act/ApplicationG.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.g_act;
import com.yahoo.jdisc.application.Application;
diff --git a/jdisc_core_test/test_bundles/app-g-act/src/main/java/com/yahoo/jdisc/bundle/g_act/MyBundleActivator.java b/jdisc_core_test/test_bundles/app-g-act/src/main/java/com/yahoo/jdisc/bundle/g_act/MyBundleActivator.java
index c60f4939409..120f320b0d6 100644
--- a/jdisc_core_test/test_bundles/app-g-act/src/main/java/com/yahoo/jdisc/bundle/g_act/MyBundleActivator.java
+++ b/jdisc_core_test/test_bundles/app-g-act/src/main/java/com/yahoo/jdisc/bundle/g_act/MyBundleActivator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.g_act;
import com.yahoo.jdisc.service.CurrentContainer;
diff --git a/jdisc_core_test/test_bundles/app-g-act/src/main/java/com/yahoo/jdisc/bundle/g_act/MyService.java b/jdisc_core_test/test_bundles/app-g-act/src/main/java/com/yahoo/jdisc/bundle/g_act/MyService.java
index 518f7304100..aa87377784b 100644
--- a/jdisc_core_test/test_bundles/app-g-act/src/main/java/com/yahoo/jdisc/bundle/g_act/MyService.java
+++ b/jdisc_core_test/test_bundles/app-g-act/src/main/java/com/yahoo/jdisc/bundle/g_act/MyService.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.g_act;
import com.yahoo.jdisc.service.AbstractServerProvider;
diff --git a/jdisc_core_test/test_bundles/app-h-log/pom.xml b/jdisc_core_test/test_bundles/app-h-log/pom.xml
index 2a9603151b3..99a82c5e9b1 100644
--- a/jdisc_core_test/test_bundles/app-h-log/pom.xml
+++ b/jdisc_core_test/test_bundles/app-h-log/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/app-h-log/src/main/java/com/yahoo/jdisc/bundle/ApplicationH.java b/jdisc_core_test/test_bundles/app-h-log/src/main/java/com/yahoo/jdisc/bundle/ApplicationH.java
index 04eabc67900..dadb833e49d 100644
--- a/jdisc_core_test/test_bundles/app-h-log/src/main/java/com/yahoo/jdisc/bundle/ApplicationH.java
+++ b/jdisc_core_test/test_bundles/app-h-log/src/main/java/com/yahoo/jdisc/bundle/ApplicationH.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle;
import com.google.inject.Inject;
diff --git a/jdisc_core_test/test_bundles/cert-a/pom.xml b/jdisc_core_test/test_bundles/cert-a/pom.xml
index ec27fc0b005..68986875b56 100644
--- a/jdisc_core_test/test_bundles/cert-a/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-a/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-a/src/main/java/com/yahoo/jdisc/bundle/a/CertificateA.java b/jdisc_core_test/test_bundles/cert-a/src/main/java/com/yahoo/jdisc/bundle/a/CertificateA.java
index d815c164639..95a0cbaf76a 100644
--- a/jdisc_core_test/test_bundles/cert-a/src/main/java/com/yahoo/jdisc/bundle/a/CertificateA.java
+++ b/jdisc_core_test/test_bundles/cert-a/src/main/java/com/yahoo/jdisc/bundle/a/CertificateA.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.a;
/**
diff --git a/jdisc_core_test/test_bundles/cert-b/pom.xml b/jdisc_core_test/test_bundles/cert-b/pom.xml
index 53b28cc5923..287d914cebc 100644
--- a/jdisc_core_test/test_bundles/cert-b/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-b/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-b/src/main/java/com/yahoo/jdisc/bundle/b/CertificateB.java b/jdisc_core_test/test_bundles/cert-b/src/main/java/com/yahoo/jdisc/bundle/b/CertificateB.java
index 811c95745ad..c62982b4fda 100644
--- a/jdisc_core_test/test_bundles/cert-b/src/main/java/com/yahoo/jdisc/bundle/b/CertificateB.java
+++ b/jdisc_core_test/test_bundles/cert-b/src/main/java/com/yahoo/jdisc/bundle/b/CertificateB.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.b;
/**
diff --git a/jdisc_core_test/test_bundles/cert-b/src/main/java/com/yahoo/jdisc/bundle/b/package-info.java b/jdisc_core_test/test_bundles/cert-b/src/main/java/com/yahoo/jdisc/bundle/b/package-info.java
index 3491cc7aacc..ec425bec904 100644
--- a/jdisc_core_test/test_bundles/cert-b/src/main/java/com/yahoo/jdisc/bundle/b/package-info.java
+++ b/jdisc_core_test/test_bundles/cert-b/src/main/java/com/yahoo/jdisc/bundle/b/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.jdisc.bundle.b;
diff --git a/jdisc_core_test/test_bundles/cert-ca/pom.xml b/jdisc_core_test/test_bundles/cert-ca/pom.xml
index d458105121e..32b9b1e58f9 100644
--- a/jdisc_core_test/test_bundles/cert-ca/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-ca/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-ca/src/main/java/com/yahoo/jdisc/bundle/c/CertificateC.java b/jdisc_core_test/test_bundles/cert-ca/src/main/java/com/yahoo/jdisc/bundle/c/CertificateC.java
index e6d534cf0d0..7b8784029c6 100644
--- a/jdisc_core_test/test_bundles/cert-ca/src/main/java/com/yahoo/jdisc/bundle/c/CertificateC.java
+++ b/jdisc_core_test/test_bundles/cert-ca/src/main/java/com/yahoo/jdisc/bundle/c/CertificateC.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.c;
import com.yahoo.jdisc.bundle.a.CertificateA;
diff --git a/jdisc_core_test/test_bundles/cert-dc/pom.xml b/jdisc_core_test/test_bundles/cert-dc/pom.xml
index 6fbd918eaef..77bb210fc87 100644
--- a/jdisc_core_test/test_bundles/cert-dc/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-dc/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-dc/src/main/java/com/yahoo/jdisc/bundle/d/CertificateD.java b/jdisc_core_test/test_bundles/cert-dc/src/main/java/com/yahoo/jdisc/bundle/d/CertificateD.java
index 106a43a170d..27b6e559dfc 100644
--- a/jdisc_core_test/test_bundles/cert-dc/src/main/java/com/yahoo/jdisc/bundle/d/CertificateD.java
+++ b/jdisc_core_test/test_bundles/cert-dc/src/main/java/com/yahoo/jdisc/bundle/d/CertificateD.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.d;
import com.yahoo.jdisc.bundle.c.CertificateC;
diff --git a/jdisc_core_test/test_bundles/cert-eab/pom.xml b/jdisc_core_test/test_bundles/cert-eab/pom.xml
index 6b0f5ba6028..7870603defe 100644
--- a/jdisc_core_test/test_bundles/cert-eab/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-eab/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-eab/src/main/java/com/yahoo/jdisc/bundle/e/CertificateE.java b/jdisc_core_test/test_bundles/cert-eab/src/main/java/com/yahoo/jdisc/bundle/e/CertificateE.java
index aeacd8e55fe..a7112c5616f 100644
--- a/jdisc_core_test/test_bundles/cert-eab/src/main/java/com/yahoo/jdisc/bundle/e/CertificateE.java
+++ b/jdisc_core_test/test_bundles/cert-eab/src/main/java/com/yahoo/jdisc/bundle/e/CertificateE.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.e;
import com.yahoo.jdisc.bundle.a.CertificateA;
diff --git a/jdisc_core_test/test_bundles/cert-fac/pom.xml b/jdisc_core_test/test_bundles/cert-fac/pom.xml
index f6b14f1b6a1..9bc7c947862 100644
--- a/jdisc_core_test/test_bundles/cert-fac/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-fac/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-fac/src/main/java/com/yahoo/jdisc/bundle/f/CertificateF.java b/jdisc_core_test/test_bundles/cert-fac/src/main/java/com/yahoo/jdisc/bundle/f/CertificateF.java
index c663ba9d7e2..c0728168131 100644
--- a/jdisc_core_test/test_bundles/cert-fac/src/main/java/com/yahoo/jdisc/bundle/f/CertificateF.java
+++ b/jdisc_core_test/test_bundles/cert-fac/src/main/java/com/yahoo/jdisc/bundle/f/CertificateF.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.f;
import com.yahoo.jdisc.bundle.a.CertificateA;
diff --git a/jdisc_core_test/test_bundles/cert-gg/pom.xml b/jdisc_core_test/test_bundles/cert-gg/pom.xml
index 43ae2dc73c3..09c90f2c146 100644
--- a/jdisc_core_test/test_bundles/cert-gg/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-gg/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-gg/src/main/java/com/yahoo/jdisc/bundle/g/CertificateG.java b/jdisc_core_test/test_bundles/cert-gg/src/main/java/com/yahoo/jdisc/bundle/g/CertificateG.java
index 4d4339a230b..f7108cd3ac0 100644
--- a/jdisc_core_test/test_bundles/cert-gg/src/main/java/com/yahoo/jdisc/bundle/g/CertificateG.java
+++ b/jdisc_core_test/test_bundles/cert-gg/src/main/java/com/yahoo/jdisc/bundle/g/CertificateG.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.g;
/**
diff --git a/jdisc_core_test/test_bundles/cert-hi/pom.xml b/jdisc_core_test/test_bundles/cert-hi/pom.xml
index 42b75cf96b6..b4d66abca2c 100644
--- a/jdisc_core_test/test_bundles/cert-hi/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-hi/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-hi/src/main/java/com/yahoo/jdisc/bundle/h/CertificateH.java b/jdisc_core_test/test_bundles/cert-hi/src/main/java/com/yahoo/jdisc/bundle/h/CertificateH.java
index d3d2e7fd622..d599a1f56fd 100644
--- a/jdisc_core_test/test_bundles/cert-hi/src/main/java/com/yahoo/jdisc/bundle/h/CertificateH.java
+++ b/jdisc_core_test/test_bundles/cert-hi/src/main/java/com/yahoo/jdisc/bundle/h/CertificateH.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.h;
/**
diff --git a/jdisc_core_test/test_bundles/cert-ih/pom.xml b/jdisc_core_test/test_bundles/cert-ih/pom.xml
index 3df15c66fb5..5797fdd145b 100644
--- a/jdisc_core_test/test_bundles/cert-ih/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-ih/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-ih/src/main/java/com/yahoo/jdisc/bundle/i/CertificateI.java b/jdisc_core_test/test_bundles/cert-ih/src/main/java/com/yahoo/jdisc/bundle/i/CertificateI.java
index 9a10bde4cc1..9cf2662884c 100644
--- a/jdisc_core_test/test_bundles/cert-ih/src/main/java/com/yahoo/jdisc/bundle/i/CertificateI.java
+++ b/jdisc_core_test/test_bundles/cert-ih/src/main/java/com/yahoo/jdisc/bundle/i/CertificateI.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.i;
/**
diff --git a/jdisc_core_test/test_bundles/cert-j-priv/pom.xml b/jdisc_core_test/test_bundles/cert-j-priv/pom.xml
index e9ea8a8dac8..65383b2cddb 100644
--- a/jdisc_core_test/test_bundles/cert-j-priv/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-j-priv/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-j-priv/src/main/java/com/yahoo/jdisc/bundle/j/CertificateJ.java b/jdisc_core_test/test_bundles/cert-j-priv/src/main/java/com/yahoo/jdisc/bundle/j/CertificateJ.java
index 05928a84299..9c0d664da0f 100644
--- a/jdisc_core_test/test_bundles/cert-j-priv/src/main/java/com/yahoo/jdisc/bundle/j/CertificateJ.java
+++ b/jdisc_core_test/test_bundles/cert-j-priv/src/main/java/com/yahoo/jdisc/bundle/j/CertificateJ.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.j;
/**
diff --git a/jdisc_core_test/test_bundles/cert-k-pkgs/pom.xml b/jdisc_core_test/test_bundles/cert-k-pkgs/pom.xml
index c3875cf48eb..e9ad347905b 100644
--- a/jdisc_core_test/test_bundles/cert-k-pkgs/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-k-pkgs/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-k-pkgs/src/main/java/com/yahoo/jdisc/bundle/k/CertificateK.java b/jdisc_core_test/test_bundles/cert-k-pkgs/src/main/java/com/yahoo/jdisc/bundle/k/CertificateK.java
index 29588c755e4..ad93a7f322c 100644
--- a/jdisc_core_test/test_bundles/cert-k-pkgs/src/main/java/com/yahoo/jdisc/bundle/k/CertificateK.java
+++ b/jdisc_core_test/test_bundles/cert-k-pkgs/src/main/java/com/yahoo/jdisc/bundle/k/CertificateK.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.k;
/**
diff --git a/jdisc_core_test/test_bundles/cert-l1-dup/pom.xml b/jdisc_core_test/test_bundles/cert-l1-dup/pom.xml
index b1a61bc4145..3eef44629ab 100644
--- a/jdisc_core_test/test_bundles/cert-l1-dup/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-l1-dup/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-l1-dup/src/main/java/com/yahoo/jdisc/bundle/l/CertificateL.java b/jdisc_core_test/test_bundles/cert-l1-dup/src/main/java/com/yahoo/jdisc/bundle/l/CertificateL.java
index 2060686ee4f..d7c543c21b8 100644
--- a/jdisc_core_test/test_bundles/cert-l1-dup/src/main/java/com/yahoo/jdisc/bundle/l/CertificateL.java
+++ b/jdisc_core_test/test_bundles/cert-l1-dup/src/main/java/com/yahoo/jdisc/bundle/l/CertificateL.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.l;
import java.util.concurrent.Callable;
diff --git a/jdisc_core_test/test_bundles/cert-l1/pom.xml b/jdisc_core_test/test_bundles/cert-l1/pom.xml
index a7c0367adcb..e89eeae449e 100644
--- a/jdisc_core_test/test_bundles/cert-l1/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-l1/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-l1/src/main/java/com/yahoo/jdisc/bundle/l/CertificateL.java b/jdisc_core_test/test_bundles/cert-l1/src/main/java/com/yahoo/jdisc/bundle/l/CertificateL.java
index fb8fbbd669c..a327699c3c7 100644
--- a/jdisc_core_test/test_bundles/cert-l1/src/main/java/com/yahoo/jdisc/bundle/l/CertificateL.java
+++ b/jdisc_core_test/test_bundles/cert-l1/src/main/java/com/yahoo/jdisc/bundle/l/CertificateL.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.l;
import java.util.concurrent.Callable;
diff --git a/jdisc_core_test/test_bundles/cert-l2/pom.xml b/jdisc_core_test/test_bundles/cert-l2/pom.xml
index 4749ad7a2fe..b00e1ecaec2 100644
--- a/jdisc_core_test/test_bundles/cert-l2/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-l2/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-l2/src/main/java/com/yahoo/jdisc/bundle/l/CertificateL.java b/jdisc_core_test/test_bundles/cert-l2/src/main/java/com/yahoo/jdisc/bundle/l/CertificateL.java
index a8e9ba78ada..c4f252e971c 100644
--- a/jdisc_core_test/test_bundles/cert-l2/src/main/java/com/yahoo/jdisc/bundle/l/CertificateL.java
+++ b/jdisc_core_test/test_bundles/cert-l2/src/main/java/com/yahoo/jdisc/bundle/l/CertificateL.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.l;
import java.util.concurrent.Callable;
diff --git a/jdisc_core_test/test_bundles/cert-ml-dup/pom.xml b/jdisc_core_test/test_bundles/cert-ml-dup/pom.xml
index 4382664c923..021d14a1336 100644
--- a/jdisc_core_test/test_bundles/cert-ml-dup/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-ml-dup/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-ml-dup/src/main/java/com/yahoo/jdisc/bundle/m/CertificateM.java b/jdisc_core_test/test_bundles/cert-ml-dup/src/main/java/com/yahoo/jdisc/bundle/m/CertificateM.java
index 131c9e41a1e..24147cce0e7 100644
--- a/jdisc_core_test/test_bundles/cert-ml-dup/src/main/java/com/yahoo/jdisc/bundle/m/CertificateM.java
+++ b/jdisc_core_test/test_bundles/cert-ml-dup/src/main/java/com/yahoo/jdisc/bundle/m/CertificateM.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.m;
import java.util.concurrent.Callable;
diff --git a/jdisc_core_test/test_bundles/cert-ml/pom.xml b/jdisc_core_test/test_bundles/cert-ml/pom.xml
index 1c6e3bcbc41..f3e9013ce97 100644
--- a/jdisc_core_test/test_bundles/cert-ml/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-ml/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-ml/src/main/java/com/yahoo/jdisc/bundle/m/CertificateM.java b/jdisc_core_test/test_bundles/cert-ml/src/main/java/com/yahoo/jdisc/bundle/m/CertificateM.java
index 131c9e41a1e..24147cce0e7 100644
--- a/jdisc_core_test/test_bundles/cert-ml/src/main/java/com/yahoo/jdisc/bundle/m/CertificateM.java
+++ b/jdisc_core_test/test_bundles/cert-ml/src/main/java/com/yahoo/jdisc/bundle/m/CertificateM.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.m;
import java.util.concurrent.Callable;
diff --git a/jdisc_core_test/test_bundles/cert-nac/pom.xml b/jdisc_core_test/test_bundles/cert-nac/pom.xml
index 6408a62d2eb..fe88e4cdd4f 100644
--- a/jdisc_core_test/test_bundles/cert-nac/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-nac/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-nac/src/main/java/com/yahoo/jdisc/bundle/n/CertificateN.java b/jdisc_core_test/test_bundles/cert-nac/src/main/java/com/yahoo/jdisc/bundle/n/CertificateN.java
index d2e47599822..017dfa09aa4 100644
--- a/jdisc_core_test/test_bundles/cert-nac/src/main/java/com/yahoo/jdisc/bundle/n/CertificateN.java
+++ b/jdisc_core_test/test_bundles/cert-nac/src/main/java/com/yahoo/jdisc/bundle/n/CertificateN.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.n;
import com.yahoo.jdisc.bundle.a.CertificateA;
diff --git a/jdisc_core_test/test_bundles/cert-oa-path/pom.xml b/jdisc_core_test/test_bundles/cert-oa-path/pom.xml
index 1b5ba98fee5..cdc16200b11 100644
--- a/jdisc_core_test/test_bundles/cert-oa-path/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-oa-path/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-oa-path/src/main/java/com/yahoo/jdisc/bundle/o/CertificateO.java b/jdisc_core_test/test_bundles/cert-oa-path/src/main/java/com/yahoo/jdisc/bundle/o/CertificateO.java
index 7c790d76692..d8e566572b2 100644
--- a/jdisc_core_test/test_bundles/cert-oa-path/src/main/java/com/yahoo/jdisc/bundle/o/CertificateO.java
+++ b/jdisc_core_test/test_bundles/cert-oa-path/src/main/java/com/yahoo/jdisc/bundle/o/CertificateO.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.o;
import com.yahoo.jdisc.bundle.a.CertificateA;
diff --git a/jdisc_core_test/test_bundles/cert-p-jar/pom.xml b/jdisc_core_test/test_bundles/cert-p-jar/pom.xml
index ad82c53b76b..1d6fe7bba4c 100644
--- a/jdisc_core_test/test_bundles/cert-p-jar/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-p-jar/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-p-jar/src/main/java/com/yahoo/jdisc/bundle/p/CertificateP.java b/jdisc_core_test/test_bundles/cert-p-jar/src/main/java/com/yahoo/jdisc/bundle/p/CertificateP.java
index 160d1d69cab..b5e881d75fc 100644
--- a/jdisc_core_test/test_bundles/cert-p-jar/src/main/java/com/yahoo/jdisc/bundle/p/CertificateP.java
+++ b/jdisc_core_test/test_bundles/cert-p-jar/src/main/java/com/yahoo/jdisc/bundle/p/CertificateP.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.p;
/**
diff --git a/jdisc_core_test/test_bundles/cert-q-frag/pom.xml b/jdisc_core_test/test_bundles/cert-q-frag/pom.xml
index a94b9a0c70a..563e4eb60d4 100644
--- a/jdisc_core_test/test_bundles/cert-q-frag/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-q-frag/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-q-frag/src/main/java/com/yahoo/jdisc/bundle/q/CertificateQ.java b/jdisc_core_test/test_bundles/cert-q-frag/src/main/java/com/yahoo/jdisc/bundle/q/CertificateQ.java
index 3f0169de859..6d516834855 100644
--- a/jdisc_core_test/test_bundles/cert-q-frag/src/main/java/com/yahoo/jdisc/bundle/q/CertificateQ.java
+++ b/jdisc_core_test/test_bundles/cert-q-frag/src/main/java/com/yahoo/jdisc/bundle/q/CertificateQ.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.q;
/**
diff --git a/jdisc_core_test/test_bundles/cert-rq/pom.xml b/jdisc_core_test/test_bundles/cert-rq/pom.xml
index 1d45e48ca46..0070ddadeca 100644
--- a/jdisc_core_test/test_bundles/cert-rq/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-rq/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-rq/src/main/java/com/yahoo/jdisc/bundle/r/CertificateR.java b/jdisc_core_test/test_bundles/cert-rq/src/main/java/com/yahoo/jdisc/bundle/r/CertificateR.java
index 84c6156d908..f0b3645c798 100644
--- a/jdisc_core_test/test_bundles/cert-rq/src/main/java/com/yahoo/jdisc/bundle/r/CertificateR.java
+++ b/jdisc_core_test/test_bundles/cert-rq/src/main/java/com/yahoo/jdisc/bundle/r/CertificateR.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.r;
import com.yahoo.jdisc.bundle.q.CertificateQ;
diff --git a/jdisc_core_test/test_bundles/cert-s-act/pom.xml b/jdisc_core_test/test_bundles/cert-s-act/pom.xml
index 47c7718be39..ed34708dc8a 100644
--- a/jdisc_core_test/test_bundles/cert-s-act/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-s-act/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-s-act/src/main/java/com/yahoo/jdisc/bundle/s/CertificateS.java b/jdisc_core_test/test_bundles/cert-s-act/src/main/java/com/yahoo/jdisc/bundle/s/CertificateS.java
index a5b0e819874..e5be2690f45 100644
--- a/jdisc_core_test/test_bundles/cert-s-act/src/main/java/com/yahoo/jdisc/bundle/s/CertificateS.java
+++ b/jdisc_core_test/test_bundles/cert-s-act/src/main/java/com/yahoo/jdisc/bundle/s/CertificateS.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.s;
/**
diff --git a/jdisc_core_test/test_bundles/cert-s-act/src/main/java/com/yahoo/jdisc/bundle/s/MyBundleActivator.java b/jdisc_core_test/test_bundles/cert-s-act/src/main/java/com/yahoo/jdisc/bundle/s/MyBundleActivator.java
index 1cd4bdb07ce..a5722169018 100644
--- a/jdisc_core_test/test_bundles/cert-s-act/src/main/java/com/yahoo/jdisc/bundle/s/MyBundleActivator.java
+++ b/jdisc_core_test/test_bundles/cert-s-act/src/main/java/com/yahoo/jdisc/bundle/s/MyBundleActivator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.s;
import org.osgi.framework.BundleActivator;
diff --git a/jdisc_core_test/test_bundles/cert-tp/pom.xml b/jdisc_core_test/test_bundles/cert-tp/pom.xml
index 4d4f84e245e..b657f36c695 100644
--- a/jdisc_core_test/test_bundles/cert-tp/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-tp/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-tp/src/main/java/com/yahoo/jdisc/bundle/t/CertificateT.java b/jdisc_core_test/test_bundles/cert-tp/src/main/java/com/yahoo/jdisc/bundle/t/CertificateT.java
index f2078119ad8..c45b922be57 100644
--- a/jdisc_core_test/test_bundles/cert-tp/src/main/java/com/yahoo/jdisc/bundle/t/CertificateT.java
+++ b/jdisc_core_test/test_bundles/cert-tp/src/main/java/com/yahoo/jdisc/bundle/t/CertificateT.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.t;
import com.yahoo.jdisc.bundle.p.CertificateP;
diff --git a/jdisc_core_test/test_bundles/cert-us/pom.xml b/jdisc_core_test/test_bundles/cert-us/pom.xml
index 33aad6fad95..731b5af098f 100644
--- a/jdisc_core_test/test_bundles/cert-us/pom.xml
+++ b/jdisc_core_test/test_bundles/cert-us/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/cert-us/src/main/java/com/yahoo/jdisc/bundle/u/CertificateU.java b/jdisc_core_test/test_bundles/cert-us/src/main/java/com/yahoo/jdisc/bundle/u/CertificateU.java
index ee3c8bab31e..dce16b97839 100644
--- a/jdisc_core_test/test_bundles/cert-us/src/main/java/com/yahoo/jdisc/bundle/u/CertificateU.java
+++ b/jdisc_core_test/test_bundles/cert-us/src/main/java/com/yahoo/jdisc/bundle/u/CertificateU.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.u;
import com.yahoo.jdisc.bundle.s.CertificateS;
diff --git a/jdisc_core_test/test_bundles/my-bundle-activator/pom.xml b/jdisc_core_test/test_bundles/my-bundle-activator/pom.xml
index 9b0693e4a30..5daef993b4a 100644
--- a/jdisc_core_test/test_bundles/my-bundle-activator/pom.xml
+++ b/jdisc_core_test/test_bundles/my-bundle-activator/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/my-bundle-activator/src/main/java/com/yahoo/jdisc/bundle/my_act/MyBundleActivator.java b/jdisc_core_test/test_bundles/my-bundle-activator/src/main/java/com/yahoo/jdisc/bundle/my_act/MyBundleActivator.java
index 4212fc2fd09..6ff09550cad 100644
--- a/jdisc_core_test/test_bundles/my-bundle-activator/src/main/java/com/yahoo/jdisc/bundle/my_act/MyBundleActivator.java
+++ b/jdisc_core_test/test_bundles/my-bundle-activator/src/main/java/com/yahoo/jdisc/bundle/my_act/MyBundleActivator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.my_act;
import com.yahoo.jdisc.service.CurrentContainer;
diff --git a/jdisc_core_test/test_bundles/my-bundle-activator/src/main/java/com/yahoo/jdisc/bundle/my_act/MyService.java b/jdisc_core_test/test_bundles/my-bundle-activator/src/main/java/com/yahoo/jdisc/bundle/my_act/MyService.java
index b24ee137f59..5dd46331acd 100644
--- a/jdisc_core_test/test_bundles/my-bundle-activator/src/main/java/com/yahoo/jdisc/bundle/my_act/MyService.java
+++ b/jdisc_core_test/test_bundles/my-bundle-activator/src/main/java/com/yahoo/jdisc/bundle/my_act/MyService.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle.my_act;
/**
diff --git a/jdisc_core_test/test_bundles/my-guice-module/pom.xml b/jdisc_core_test/test_bundles/my-guice-module/pom.xml
index a0321d6a3f9..296ca98acb8 100644
--- a/jdisc_core_test/test_bundles/my-guice-module/pom.xml
+++ b/jdisc_core_test/test_bundles/my-guice-module/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/my-guice-module/src/main/java/com/yahoo/jdisc/bundle/MyGuiceModule.java b/jdisc_core_test/test_bundles/my-guice-module/src/main/java/com/yahoo/jdisc/bundle/MyGuiceModule.java
index ef515b0b40e..013e3afb7fb 100644
--- a/jdisc_core_test/test_bundles/my-guice-module/src/main/java/com/yahoo/jdisc/bundle/MyGuiceModule.java
+++ b/jdisc_core_test/test_bundles/my-guice-module/src/main/java/com/yahoo/jdisc/bundle/MyGuiceModule.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle;
import com.google.inject.AbstractModule;
diff --git a/jdisc_core_test/test_bundles/my-server-provider/pom.xml b/jdisc_core_test/test_bundles/my-server-provider/pom.xml
index f83bbc69bec..3fc2ed2a755 100644
--- a/jdisc_core_test/test_bundles/my-server-provider/pom.xml
+++ b/jdisc_core_test/test_bundles/my-server-provider/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_core_test/test_bundles/my-server-provider/src/main/java/com/yahoo/jdisc/bundle/MyServerProvider.java b/jdisc_core_test/test_bundles/my-server-provider/src/main/java/com/yahoo/jdisc/bundle/MyServerProvider.java
index 83b783bd473..37b8cdcd4ec 100644
--- a/jdisc_core_test/test_bundles/my-server-provider/src/main/java/com/yahoo/jdisc/bundle/MyServerProvider.java
+++ b/jdisc_core_test/test_bundles/my-server-provider/src/main/java/com/yahoo/jdisc/bundle/MyServerProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.bundle;
import com.google.inject.Inject;
diff --git a/jdisc_core_test/test_bundles/pom.xml b/jdisc_core_test/test_bundles/pom.xml
index d62d22c67f9..8a6d4a02d15 100644
--- a/jdisc_core_test/test_bundles/pom.xml
+++ b/jdisc_core_test/test_bundles/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_jetty/CMakeLists.txt b/jdisc_jetty/CMakeLists.txt
index 9059f68d953..129cd9de06a 100644
--- a/jdisc_jetty/CMakeLists.txt
+++ b/jdisc_jetty/CMakeLists.txt
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_java_artifact(jdisc_jetty)
install_java_artifact_dependencies(jdisc_jetty)
diff --git a/jdisc_jetty/pom.xml b/jdisc_jetty/pom.xml
index 379255c4fd8..ea4aa82cb15 100644
--- a/jdisc_jetty/pom.xml
+++ b/jdisc_jetty/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/jdisc_jetty/src/main/javadoc/README b/jdisc_jetty/src/main/javadoc/README
new file mode 100644
index 00000000000..6695538e308
--- /dev/null
+++ b/jdisc_jetty/src/main/javadoc/README
@@ -0,0 +1 @@
+No javadoc available for module \ No newline at end of file
diff --git a/jrt/examples/SimpleClient.java b/jrt/examples/SimpleClient.java
index 61042d3a47d..556b812ef0a 100644
--- a/jrt/examples/SimpleClient.java
+++ b/jrt/examples/SimpleClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.jrt.*;
public class SimpleClient {
diff --git a/jrt/examples/SimpleServer.java b/jrt/examples/SimpleServer.java
index 409683104a3..d6c4c3f5999 100644
--- a/jrt/examples/SimpleServer.java
+++ b/jrt/examples/SimpleServer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.jrt.*;
public class SimpleServer {
diff --git a/jrt/pom.xml b/jrt/pom.xml
index 15cfe661350..43796b916ca 100644
--- a/jrt/pom.xml
+++ b/jrt/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/jrt/runexample.sh b/jrt/runexample.sh
index de727ca32d9..1a8dab787c2 100755
--- a/jrt/runexample.sh
+++ b/jrt/runexample.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
if [ $# -eq 0 ]; then
echo "usage: $0 <class> [class args]"
echo " available class files:"
diff --git a/jrt/src/com/yahoo/jrt/Acceptor.java b/jrt/src/com/yahoo/jrt/Acceptor.java
index aed22ac090c..8368941007b 100644
--- a/jrt/src/com/yahoo/jrt/Acceptor.java
+++ b/jrt/src/com/yahoo/jrt/Acceptor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/Buffer.java b/jrt/src/com/yahoo/jrt/Buffer.java
index 06a658740e5..48a9de28c28 100644
--- a/jrt/src/com/yahoo/jrt/Buffer.java
+++ b/jrt/src/com/yahoo/jrt/Buffer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/Connection.java b/jrt/src/com/yahoo/jrt/Connection.java
index 6158576348a..c4f906f5e35 100644
--- a/jrt/src/com/yahoo/jrt/Connection.java
+++ b/jrt/src/com/yahoo/jrt/Connection.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import java.io.IOException;
diff --git a/jrt/src/com/yahoo/jrt/Connector.java b/jrt/src/com/yahoo/jrt/Connector.java
index 10f2b3742f2..8ed5af95e08 100644
--- a/jrt/src/com/yahoo/jrt/Connector.java
+++ b/jrt/src/com/yahoo/jrt/Connector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import com.yahoo.concurrent.CachedThreadPoolWithFallback;
diff --git a/jrt/src/com/yahoo/jrt/CryptoEngine.java b/jrt/src/com/yahoo/jrt/CryptoEngine.java
index 318ee333fee..3e81a8e8750 100644
--- a/jrt/src/com/yahoo/jrt/CryptoEngine.java
+++ b/jrt/src/com/yahoo/jrt/CryptoEngine.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import com.yahoo.security.tls.MixedMode;
diff --git a/jrt/src/com/yahoo/jrt/CryptoSocket.java b/jrt/src/com/yahoo/jrt/CryptoSocket.java
index b7de30f9236..78308b76624 100644
--- a/jrt/src/com/yahoo/jrt/CryptoSocket.java
+++ b/jrt/src/com/yahoo/jrt/CryptoSocket.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/DataArray.java b/jrt/src/com/yahoo/jrt/DataArray.java
index cfd9672a1be..5805ece46ee 100644
--- a/jrt/src/com/yahoo/jrt/DataArray.java
+++ b/jrt/src/com/yahoo/jrt/DataArray.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/DataValue.java b/jrt/src/com/yahoo/jrt/DataValue.java
index 8739e4b3817..6d99cacd93b 100644
--- a/jrt/src/com/yahoo/jrt/DataValue.java
+++ b/jrt/src/com/yahoo/jrt/DataValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/DoubleArray.java b/jrt/src/com/yahoo/jrt/DoubleArray.java
index 8e3cfa39720..077aa1dfcbf 100644
--- a/jrt/src/com/yahoo/jrt/DoubleArray.java
+++ b/jrt/src/com/yahoo/jrt/DoubleArray.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/DoubleValue.java b/jrt/src/com/yahoo/jrt/DoubleValue.java
index f01fdc7fcbc..5c7dd979b05 100644
--- a/jrt/src/com/yahoo/jrt/DoubleValue.java
+++ b/jrt/src/com/yahoo/jrt/DoubleValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/EndOfQueueException.java b/jrt/src/com/yahoo/jrt/EndOfQueueException.java
index 1dc7f1d56c9..3c02df5fea2 100644
--- a/jrt/src/com/yahoo/jrt/EndOfQueueException.java
+++ b/jrt/src/com/yahoo/jrt/EndOfQueueException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/ErrorCode.java b/jrt/src/com/yahoo/jrt/ErrorCode.java
index 57955dc2856..beaabcea316 100644
--- a/jrt/src/com/yahoo/jrt/ErrorCode.java
+++ b/jrt/src/com/yahoo/jrt/ErrorCode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/ErrorPacket.java b/jrt/src/com/yahoo/jrt/ErrorPacket.java
index a74dcb23030..a66781fb258 100644
--- a/jrt/src/com/yahoo/jrt/ErrorPacket.java
+++ b/jrt/src/com/yahoo/jrt/ErrorPacket.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/FatalErrorHandler.java b/jrt/src/com/yahoo/jrt/FatalErrorHandler.java
index 3225809fc56..7fcc0bf6181 100644
--- a/jrt/src/com/yahoo/jrt/FatalErrorHandler.java
+++ b/jrt/src/com/yahoo/jrt/FatalErrorHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/FloatArray.java b/jrt/src/com/yahoo/jrt/FloatArray.java
index 546e9003d68..e4416abe35a 100644
--- a/jrt/src/com/yahoo/jrt/FloatArray.java
+++ b/jrt/src/com/yahoo/jrt/FloatArray.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/FloatValue.java b/jrt/src/com/yahoo/jrt/FloatValue.java
index 386d5b19ef4..09dd646c64c 100644
--- a/jrt/src/com/yahoo/jrt/FloatValue.java
+++ b/jrt/src/com/yahoo/jrt/FloatValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/Int16Array.java b/jrt/src/com/yahoo/jrt/Int16Array.java
index 93548266e6e..87318af676e 100644
--- a/jrt/src/com/yahoo/jrt/Int16Array.java
+++ b/jrt/src/com/yahoo/jrt/Int16Array.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/Int16Value.java b/jrt/src/com/yahoo/jrt/Int16Value.java
index 535074925ec..7ee8d429f2f 100644
--- a/jrt/src/com/yahoo/jrt/Int16Value.java
+++ b/jrt/src/com/yahoo/jrt/Int16Value.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/Int32Array.java b/jrt/src/com/yahoo/jrt/Int32Array.java
index 35520aec4fc..47a42c3a9d1 100644
--- a/jrt/src/com/yahoo/jrt/Int32Array.java
+++ b/jrt/src/com/yahoo/jrt/Int32Array.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/Int32Value.java b/jrt/src/com/yahoo/jrt/Int32Value.java
index 2978533daa0..f38663d564a 100644
--- a/jrt/src/com/yahoo/jrt/Int32Value.java
+++ b/jrt/src/com/yahoo/jrt/Int32Value.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/Int64Array.java b/jrt/src/com/yahoo/jrt/Int64Array.java
index 611f39a1224..ecaf136f1cc 100644
--- a/jrt/src/com/yahoo/jrt/Int64Array.java
+++ b/jrt/src/com/yahoo/jrt/Int64Array.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/Int64Value.java b/jrt/src/com/yahoo/jrt/Int64Value.java
index 32f3128da8b..1b520c6f967 100644
--- a/jrt/src/com/yahoo/jrt/Int64Value.java
+++ b/jrt/src/com/yahoo/jrt/Int64Value.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/Int8Array.java b/jrt/src/com/yahoo/jrt/Int8Array.java
index 50ef8eeba96..18a1b536f7a 100644
--- a/jrt/src/com/yahoo/jrt/Int8Array.java
+++ b/jrt/src/com/yahoo/jrt/Int8Array.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/Int8Value.java b/jrt/src/com/yahoo/jrt/Int8Value.java
index dea2e741bf2..5e6fa0b9ae4 100644
--- a/jrt/src/com/yahoo/jrt/Int8Value.java
+++ b/jrt/src/com/yahoo/jrt/Int8Value.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/InvocationClient.java b/jrt/src/com/yahoo/jrt/InvocationClient.java
index 71b68e5a397..567bda2262f 100644
--- a/jrt/src/com/yahoo/jrt/InvocationClient.java
+++ b/jrt/src/com/yahoo/jrt/InvocationClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/InvocationServer.java b/jrt/src/com/yahoo/jrt/InvocationServer.java
index 041fce73e15..9df92eb20a6 100644
--- a/jrt/src/com/yahoo/jrt/InvocationServer.java
+++ b/jrt/src/com/yahoo/jrt/InvocationServer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/InvokeProxy.java b/jrt/src/com/yahoo/jrt/InvokeProxy.java
index ef5f18f4494..62f8f0335c3 100644
--- a/jrt/src/com/yahoo/jrt/InvokeProxy.java
+++ b/jrt/src/com/yahoo/jrt/InvokeProxy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
/**
diff --git a/jrt/src/com/yahoo/jrt/ListenFailedException.java b/jrt/src/com/yahoo/jrt/ListenFailedException.java
index 3dfb3d2a559..0295d15d00f 100644
--- a/jrt/src/com/yahoo/jrt/ListenFailedException.java
+++ b/jrt/src/com/yahoo/jrt/ListenFailedException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/MandatoryMethods.java b/jrt/src/com/yahoo/jrt/MandatoryMethods.java
index 57dd40c324b..19b2febf0de 100644
--- a/jrt/src/com/yahoo/jrt/MandatoryMethods.java
+++ b/jrt/src/com/yahoo/jrt/MandatoryMethods.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/MaybeTlsCryptoEngine.java b/jrt/src/com/yahoo/jrt/MaybeTlsCryptoEngine.java
index 18549df6f2c..cb80440ad6f 100644
--- a/jrt/src/com/yahoo/jrt/MaybeTlsCryptoEngine.java
+++ b/jrt/src/com/yahoo/jrt/MaybeTlsCryptoEngine.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import java.nio.channels.SocketChannel;
diff --git a/jrt/src/com/yahoo/jrt/MaybeTlsCryptoSocket.java b/jrt/src/com/yahoo/jrt/MaybeTlsCryptoSocket.java
index d84b33143f3..df01f4f2fa7 100644
--- a/jrt/src/com/yahoo/jrt/MaybeTlsCryptoSocket.java
+++ b/jrt/src/com/yahoo/jrt/MaybeTlsCryptoSocket.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import java.io.IOException;
diff --git a/jrt/src/com/yahoo/jrt/Method.java b/jrt/src/com/yahoo/jrt/Method.java
index 7f1e47cbdd9..4fc9f0714da 100644
--- a/jrt/src/com/yahoo/jrt/Method.java
+++ b/jrt/src/com/yahoo/jrt/Method.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/MethodCreateException.java b/jrt/src/com/yahoo/jrt/MethodCreateException.java
index 6b2aebe43cc..e90895efcff 100644
--- a/jrt/src/com/yahoo/jrt/MethodCreateException.java
+++ b/jrt/src/com/yahoo/jrt/MethodCreateException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/MethodHandler.java b/jrt/src/com/yahoo/jrt/MethodHandler.java
index f72e196e46a..c0c7435b4a9 100644
--- a/jrt/src/com/yahoo/jrt/MethodHandler.java
+++ b/jrt/src/com/yahoo/jrt/MethodHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/NullCryptoEngine.java b/jrt/src/com/yahoo/jrt/NullCryptoEngine.java
index b97ec17a5dc..91b6005ff0f 100644
--- a/jrt/src/com/yahoo/jrt/NullCryptoEngine.java
+++ b/jrt/src/com/yahoo/jrt/NullCryptoEngine.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/NullCryptoSocket.java b/jrt/src/com/yahoo/jrt/NullCryptoSocket.java
index 81995d69a40..f1a9bda52dc 100644
--- a/jrt/src/com/yahoo/jrt/NullCryptoSocket.java
+++ b/jrt/src/com/yahoo/jrt/NullCryptoSocket.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/Packet.java b/jrt/src/com/yahoo/jrt/Packet.java
index b0e03ac843d..e52bd4007e2 100644
--- a/jrt/src/com/yahoo/jrt/Packet.java
+++ b/jrt/src/com/yahoo/jrt/Packet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/PacketInfo.java b/jrt/src/com/yahoo/jrt/PacketInfo.java
index a61c929c679..052ba471ec8 100644
--- a/jrt/src/com/yahoo/jrt/PacketInfo.java
+++ b/jrt/src/com/yahoo/jrt/PacketInfo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/Queue.java b/jrt/src/com/yahoo/jrt/Queue.java
index d74e0e4f1ba..9bcc054777a 100644
--- a/jrt/src/com/yahoo/jrt/Queue.java
+++ b/jrt/src/com/yahoo/jrt/Queue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/ReplyHandler.java b/jrt/src/com/yahoo/jrt/ReplyHandler.java
index 60b7271b4f0..f76e9914219 100644
--- a/jrt/src/com/yahoo/jrt/ReplyHandler.java
+++ b/jrt/src/com/yahoo/jrt/ReplyHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/ReplyPacket.java b/jrt/src/com/yahoo/jrt/ReplyPacket.java
index b7be67be24f..8d9d490c284 100644
--- a/jrt/src/com/yahoo/jrt/ReplyPacket.java
+++ b/jrt/src/com/yahoo/jrt/ReplyPacket.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/Request.java b/jrt/src/com/yahoo/jrt/Request.java
index 66e6f508716..70cea59580f 100644
--- a/jrt/src/com/yahoo/jrt/Request.java
+++ b/jrt/src/com/yahoo/jrt/Request.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/RequestPacket.java b/jrt/src/com/yahoo/jrt/RequestPacket.java
index fcdc24b679a..2587eb2bd69 100644
--- a/jrt/src/com/yahoo/jrt/RequestPacket.java
+++ b/jrt/src/com/yahoo/jrt/RequestPacket.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/RequestWaiter.java b/jrt/src/com/yahoo/jrt/RequestWaiter.java
index 6973e48ba7f..e7beefcecd6 100644
--- a/jrt/src/com/yahoo/jrt/RequestWaiter.java
+++ b/jrt/src/com/yahoo/jrt/RequestWaiter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/Scheduler.java b/jrt/src/com/yahoo/jrt/Scheduler.java
index 4e81b79117d..b70575bdf4b 100644
--- a/jrt/src/com/yahoo/jrt/Scheduler.java
+++ b/jrt/src/com/yahoo/jrt/Scheduler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/SessionHandler.java b/jrt/src/com/yahoo/jrt/SessionHandler.java
index 071aa1de0e1..82355d73a93 100644
--- a/jrt/src/com/yahoo/jrt/SessionHandler.java
+++ b/jrt/src/com/yahoo/jrt/SessionHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/SingleRequestWaiter.java b/jrt/src/com/yahoo/jrt/SingleRequestWaiter.java
index aa4c818a373..a5e5f2c5754 100644
--- a/jrt/src/com/yahoo/jrt/SingleRequestWaiter.java
+++ b/jrt/src/com/yahoo/jrt/SingleRequestWaiter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/Spec.java b/jrt/src/com/yahoo/jrt/Spec.java
index 7e21481f3e7..36ee5869d66 100644
--- a/jrt/src/com/yahoo/jrt/Spec.java
+++ b/jrt/src/com/yahoo/jrt/Spec.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import java.net.InetSocketAddress;
diff --git a/jrt/src/com/yahoo/jrt/StringArray.java b/jrt/src/com/yahoo/jrt/StringArray.java
index 14a62f937d7..41e8ba5f858 100644
--- a/jrt/src/com/yahoo/jrt/StringArray.java
+++ b/jrt/src/com/yahoo/jrt/StringArray.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/StringValue.java b/jrt/src/com/yahoo/jrt/StringValue.java
index 8316c9a125b..63393855e39 100644
--- a/jrt/src/com/yahoo/jrt/StringValue.java
+++ b/jrt/src/com/yahoo/jrt/StringValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/Supervisor.java b/jrt/src/com/yahoo/jrt/Supervisor.java
index b82664b2f56..e8dc6219768 100644
--- a/jrt/src/com/yahoo/jrt/Supervisor.java
+++ b/jrt/src/com/yahoo/jrt/Supervisor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import java.util.HashMap;
diff --git a/jrt/src/com/yahoo/jrt/Target.java b/jrt/src/com/yahoo/jrt/Target.java
index e18f0bba7b6..1bc62d12ac9 100644
--- a/jrt/src/com/yahoo/jrt/Target.java
+++ b/jrt/src/com/yahoo/jrt/Target.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/TargetWatcher.java b/jrt/src/com/yahoo/jrt/TargetWatcher.java
index e16ccde14c9..b71fd483936 100644
--- a/jrt/src/com/yahoo/jrt/TargetWatcher.java
+++ b/jrt/src/com/yahoo/jrt/TargetWatcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/Task.java b/jrt/src/com/yahoo/jrt/Task.java
index c5628c3040c..74b39ab4f7a 100644
--- a/jrt/src/com/yahoo/jrt/Task.java
+++ b/jrt/src/com/yahoo/jrt/Task.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/ThreadQueue.java b/jrt/src/com/yahoo/jrt/ThreadQueue.java
index b758a30214a..57574390906 100644
--- a/jrt/src/com/yahoo/jrt/ThreadQueue.java
+++ b/jrt/src/com/yahoo/jrt/ThreadQueue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/TieBreaker.java b/jrt/src/com/yahoo/jrt/TieBreaker.java
index 1dadc996d2e..5cb068c3713 100644
--- a/jrt/src/com/yahoo/jrt/TieBreaker.java
+++ b/jrt/src/com/yahoo/jrt/TieBreaker.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/TlsCryptoEngine.java b/jrt/src/com/yahoo/jrt/TlsCryptoEngine.java
index a140e87713c..165ca67ff79 100644
--- a/jrt/src/com/yahoo/jrt/TlsCryptoEngine.java
+++ b/jrt/src/com/yahoo/jrt/TlsCryptoEngine.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import com.yahoo.security.tls.TlsContext;
diff --git a/jrt/src/com/yahoo/jrt/TlsCryptoSocket.java b/jrt/src/com/yahoo/jrt/TlsCryptoSocket.java
index 09bb584c983..a899938dd45 100644
--- a/jrt/src/com/yahoo/jrt/TlsCryptoSocket.java
+++ b/jrt/src/com/yahoo/jrt/TlsCryptoSocket.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import com.yahoo.security.tls.authz.AuthorizationResult;
diff --git a/jrt/src/com/yahoo/jrt/Transport.java b/jrt/src/com/yahoo/jrt/Transport.java
index 2d2e653956d..0c8977f2c40 100644
--- a/jrt/src/com/yahoo/jrt/Transport.java
+++ b/jrt/src/com/yahoo/jrt/Transport.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
@@ -90,7 +90,7 @@ public class Transport {
boolean getTcpNoDelay() { return tcpNoDelay; }
int getEventsBeforeWakeup() { return eventsBeforeWakeup; }
- String getName() { return name; }
+ public String getName() { return name; }
/**
* Use the underlying CryptoEngine to create a CryptoSocket for
diff --git a/jrt/src/com/yahoo/jrt/TransportMetrics.java b/jrt/src/com/yahoo/jrt/TransportMetrics.java
index 70d5cbcea04..d074b926d3e 100644
--- a/jrt/src/com/yahoo/jrt/TransportMetrics.java
+++ b/jrt/src/com/yahoo/jrt/TransportMetrics.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import java.util.concurrent.atomic.AtomicLong;
diff --git a/jrt/src/com/yahoo/jrt/Value.java b/jrt/src/com/yahoo/jrt/Value.java
index 31895b2b4b5..4a6a8bd1426 100644
--- a/jrt/src/com/yahoo/jrt/Value.java
+++ b/jrt/src/com/yahoo/jrt/Value.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/Values.java b/jrt/src/com/yahoo/jrt/Values.java
index cfc8e4ad990..a83ef849293 100644
--- a/jrt/src/com/yahoo/jrt/Values.java
+++ b/jrt/src/com/yahoo/jrt/Values.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/Worker.java b/jrt/src/com/yahoo/jrt/Worker.java
index 5f0407e4f5a..19045d47869 100644
--- a/jrt/src/com/yahoo/jrt/Worker.java
+++ b/jrt/src/com/yahoo/jrt/Worker.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/XorCryptoEngine.java b/jrt/src/com/yahoo/jrt/XorCryptoEngine.java
index d720ca4dc26..b3356dcedf4 100644
--- a/jrt/src/com/yahoo/jrt/XorCryptoEngine.java
+++ b/jrt/src/com/yahoo/jrt/XorCryptoEngine.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/XorCryptoSocket.java b/jrt/src/com/yahoo/jrt/XorCryptoSocket.java
index 7477cd5816d..c017f42650a 100644
--- a/jrt/src/com/yahoo/jrt/XorCryptoSocket.java
+++ b/jrt/src/com/yahoo/jrt/XorCryptoSocket.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import java.io.IOException;
diff --git a/jrt/src/com/yahoo/jrt/package-info.java b/jrt/src/com/yahoo/jrt/package-info.java
index 4b572cb4c9f..0472907e238 100644
--- a/jrt/src/com/yahoo/jrt/package-info.java
+++ b/jrt/src/com/yahoo/jrt/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.jrt;
diff --git a/jrt/src/com/yahoo/jrt/slobrok/api/BackOff.java b/jrt/src/com/yahoo/jrt/slobrok/api/BackOff.java
index f883ac32b72..aa310556aa5 100644
--- a/jrt/src/com/yahoo/jrt/slobrok/api/BackOff.java
+++ b/jrt/src/com/yahoo/jrt/slobrok/api/BackOff.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt.slobrok.api;
class BackOff implements BackOffPolicy
diff --git a/jrt/src/com/yahoo/jrt/slobrok/api/BackOffPolicy.java b/jrt/src/com/yahoo/jrt/slobrok/api/BackOffPolicy.java
index 4cc402b1706..39699e755da 100644
--- a/jrt/src/com/yahoo/jrt/slobrok/api/BackOffPolicy.java
+++ b/jrt/src/com/yahoo/jrt/slobrok/api/BackOffPolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt.slobrok.api;
/**
diff --git a/jrt/src/com/yahoo/jrt/slobrok/api/IMirror.java b/jrt/src/com/yahoo/jrt/slobrok/api/IMirror.java
index 0079e2c9d67..4cdd043a0ab 100644
--- a/jrt/src/com/yahoo/jrt/slobrok/api/IMirror.java
+++ b/jrt/src/com/yahoo/jrt/slobrok/api/IMirror.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt.slobrok.api;
import java.util.List;
diff --git a/jrt/src/com/yahoo/jrt/slobrok/api/Mirror.java b/jrt/src/com/yahoo/jrt/slobrok/api/Mirror.java
index 07a3cca8417..47c9c545d29 100644
--- a/jrt/src/com/yahoo/jrt/slobrok/api/Mirror.java
+++ b/jrt/src/com/yahoo/jrt/slobrok/api/Mirror.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt.slobrok.api;
diff --git a/jrt/src/com/yahoo/jrt/slobrok/api/Register.java b/jrt/src/com/yahoo/jrt/slobrok/api/Register.java
index b498e0b028c..a02527eee25 100644
--- a/jrt/src/com/yahoo/jrt/slobrok/api/Register.java
+++ b/jrt/src/com/yahoo/jrt/slobrok/api/Register.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt.slobrok.api;
import com.yahoo.jrt.ErrorCode;
diff --git a/jrt/src/com/yahoo/jrt/slobrok/api/SlobrokList.java b/jrt/src/com/yahoo/jrt/slobrok/api/SlobrokList.java
index 654ccd7e350..57eaa63ef98 100644
--- a/jrt/src/com/yahoo/jrt/slobrok/api/SlobrokList.java
+++ b/jrt/src/com/yahoo/jrt/slobrok/api/SlobrokList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt.slobrok.api;
import java.util.Arrays;
diff --git a/jrt/src/com/yahoo/jrt/slobrok/api/package-info.java b/jrt/src/com/yahoo/jrt/slobrok/api/package-info.java
index 55e25fc98fc..13e01c81692 100644
--- a/jrt/src/com/yahoo/jrt/slobrok/api/package-info.java
+++ b/jrt/src/com/yahoo/jrt/slobrok/api/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.jrt.slobrok.api;
diff --git a/jrt/src/com/yahoo/jrt/slobrok/package-info.java b/jrt/src/com/yahoo/jrt/slobrok/package-info.java
index ad762ee3fcb..12135e37c24 100644
--- a/jrt/src/com/yahoo/jrt/slobrok/package-info.java
+++ b/jrt/src/com/yahoo/jrt/slobrok/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.jrt.slobrok;
diff --git a/jrt/src/com/yahoo/jrt/slobrok/server/Slobrok.java b/jrt/src/com/yahoo/jrt/slobrok/server/Slobrok.java
index 6d66a38406a..24ab63c1d2f 100644
--- a/jrt/src/com/yahoo/jrt/slobrok/server/Slobrok.java
+++ b/jrt/src/com/yahoo/jrt/slobrok/server/Slobrok.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt.slobrok.server;
import com.yahoo.jrt.Acceptor;
diff --git a/jrt/src/com/yahoo/jrt/slobrok/server/package-info.java b/jrt/src/com/yahoo/jrt/slobrok/server/package-info.java
index 74f5e9784e3..52910cdd4e9 100644
--- a/jrt/src/com/yahoo/jrt/slobrok/server/package-info.java
+++ b/jrt/src/com/yahoo/jrt/slobrok/server/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.jrt.slobrok.server;
diff --git a/jrt/src/com/yahoo/jrt/tool/RpcInvoker.java b/jrt/src/com/yahoo/jrt/tool/RpcInvoker.java
index 8f0702a9ecc..71049673d90 100644
--- a/jrt/src/com/yahoo/jrt/tool/RpcInvoker.java
+++ b/jrt/src/com/yahoo/jrt/tool/RpcInvoker.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt.tool;
import com.yahoo.jrt.DoubleValue;
diff --git a/jrt/src/com/yahoo/jrt/tool/package-info.java b/jrt/src/com/yahoo/jrt/tool/package-info.java
index a2bf18638dc..3c5c7016fb3 100644
--- a/jrt/src/com/yahoo/jrt/tool/package-info.java
+++ b/jrt/src/com/yahoo/jrt/tool/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.jrt.tool;
diff --git a/jrt/tests/com/yahoo/jrt/AbortTest.java b/jrt/tests/com/yahoo/jrt/AbortTest.java
index edd74152a1c..2f31b3a52f6 100644
--- a/jrt/tests/com/yahoo/jrt/AbortTest.java
+++ b/jrt/tests/com/yahoo/jrt/AbortTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import org.junit.After;
diff --git a/jrt/tests/com/yahoo/jrt/BackTargetTest.java b/jrt/tests/com/yahoo/jrt/BackTargetTest.java
index 2a0066d68a0..a55a6d7f474 100644
--- a/jrt/tests/com/yahoo/jrt/BackTargetTest.java
+++ b/jrt/tests/com/yahoo/jrt/BackTargetTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import org.junit.After;
diff --git a/jrt/tests/com/yahoo/jrt/BufferTest.java b/jrt/tests/com/yahoo/jrt/BufferTest.java
index 10f1fbc17d3..7b2b4f69894 100644
--- a/jrt/tests/com/yahoo/jrt/BufferTest.java
+++ b/jrt/tests/com/yahoo/jrt/BufferTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import java.nio.ByteBuffer;
diff --git a/jrt/tests/com/yahoo/jrt/ConnectTest.java b/jrt/tests/com/yahoo/jrt/ConnectTest.java
index efe4a018c70..31bb713595c 100644
--- a/jrt/tests/com/yahoo/jrt/ConnectTest.java
+++ b/jrt/tests/com/yahoo/jrt/ConnectTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import static org.junit.Assert.assertTrue;
diff --git a/jrt/tests/com/yahoo/jrt/CryptoUtils.java b/jrt/tests/com/yahoo/jrt/CryptoUtils.java
index 06f7fbb1704..f1672f86e9b 100644
--- a/jrt/tests/com/yahoo/jrt/CryptoUtils.java
+++ b/jrt/tests/com/yahoo/jrt/CryptoUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import com.yahoo.security.KeyUtils;
diff --git a/jrt/tests/com/yahoo/jrt/DetachTest.java b/jrt/tests/com/yahoo/jrt/DetachTest.java
index 8b107c8b61b..3c3356b53e2 100644
--- a/jrt/tests/com/yahoo/jrt/DetachTest.java
+++ b/jrt/tests/com/yahoo/jrt/DetachTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import org.junit.After;
diff --git a/jrt/tests/com/yahoo/jrt/EchoTest.java b/jrt/tests/com/yahoo/jrt/EchoTest.java
index c71eae78ad9..26d4315fad6 100644
--- a/jrt/tests/com/yahoo/jrt/EchoTest.java
+++ b/jrt/tests/com/yahoo/jrt/EchoTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/tests/com/yahoo/jrt/InvokeAsyncTest.java b/jrt/tests/com/yahoo/jrt/InvokeAsyncTest.java
index 92925fc1a12..5e9f426bb17 100644
--- a/jrt/tests/com/yahoo/jrt/InvokeAsyncTest.java
+++ b/jrt/tests/com/yahoo/jrt/InvokeAsyncTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/tests/com/yahoo/jrt/InvokeErrorTest.java b/jrt/tests/com/yahoo/jrt/InvokeErrorTest.java
index becc87a78c1..a9a0b18b5a1 100644
--- a/jrt/tests/com/yahoo/jrt/InvokeErrorTest.java
+++ b/jrt/tests/com/yahoo/jrt/InvokeErrorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/tests/com/yahoo/jrt/InvokeSyncTest.java b/jrt/tests/com/yahoo/jrt/InvokeSyncTest.java
index 6a227575ed9..ca7d0db129d 100644
--- a/jrt/tests/com/yahoo/jrt/InvokeSyncTest.java
+++ b/jrt/tests/com/yahoo/jrt/InvokeSyncTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import com.yahoo.jrt.tool.RpcInvoker;
diff --git a/jrt/tests/com/yahoo/jrt/InvokeVoidTest.java b/jrt/tests/com/yahoo/jrt/InvokeVoidTest.java
index 09a8de53066..8b674136fe2 100644
--- a/jrt/tests/com/yahoo/jrt/InvokeVoidTest.java
+++ b/jrt/tests/com/yahoo/jrt/InvokeVoidTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/tests/com/yahoo/jrt/ListenTest.java b/jrt/tests/com/yahoo/jrt/ListenTest.java
index 5e3bde08a20..56b3f6e3f5e 100644
--- a/jrt/tests/com/yahoo/jrt/ListenTest.java
+++ b/jrt/tests/com/yahoo/jrt/ListenTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import org.junit.After;
diff --git a/jrt/tests/com/yahoo/jrt/MandatoryMethodsTest.java b/jrt/tests/com/yahoo/jrt/MandatoryMethodsTest.java
index 0bf83240338..212447dd6da 100644
--- a/jrt/tests/com/yahoo/jrt/MandatoryMethodsTest.java
+++ b/jrt/tests/com/yahoo/jrt/MandatoryMethodsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/tests/com/yahoo/jrt/PacketTest.java b/jrt/tests/com/yahoo/jrt/PacketTest.java
index 8658cc8d61b..c56adf7f338 100644
--- a/jrt/tests/com/yahoo/jrt/PacketTest.java
+++ b/jrt/tests/com/yahoo/jrt/PacketTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import java.nio.ByteBuffer;
diff --git a/jrt/tests/com/yahoo/jrt/QueueTest.java b/jrt/tests/com/yahoo/jrt/QueueTest.java
index eced2941d6e..6143c16e870 100644
--- a/jrt/tests/com/yahoo/jrt/QueueTest.java
+++ b/jrt/tests/com/yahoo/jrt/QueueTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import static org.junit.Assert.assertEquals;
diff --git a/jrt/tests/com/yahoo/jrt/SchedulerTest.java b/jrt/tests/com/yahoo/jrt/SchedulerTest.java
index 2f5085842a8..997a4ce49e4 100644
--- a/jrt/tests/com/yahoo/jrt/SchedulerTest.java
+++ b/jrt/tests/com/yahoo/jrt/SchedulerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import org.junit.After;
diff --git a/jrt/tests/com/yahoo/jrt/SessionTest.java b/jrt/tests/com/yahoo/jrt/SessionTest.java
index b6568c2f283..61db0438959 100644
--- a/jrt/tests/com/yahoo/jrt/SessionTest.java
+++ b/jrt/tests/com/yahoo/jrt/SessionTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/tests/com/yahoo/jrt/SlobrokTest.java b/jrt/tests/com/yahoo/jrt/SlobrokTest.java
index 552780dd0fd..e1f43935a8d 100644
--- a/jrt/tests/com/yahoo/jrt/SlobrokTest.java
+++ b/jrt/tests/com/yahoo/jrt/SlobrokTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import java.util.ArrayList;
diff --git a/jrt/tests/com/yahoo/jrt/SpecTest.java b/jrt/tests/com/yahoo/jrt/SpecTest.java
index fd878f0d884..57407228b1d 100644
--- a/jrt/tests/com/yahoo/jrt/SpecTest.java
+++ b/jrt/tests/com/yahoo/jrt/SpecTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import java.net.InetSocketAddress;
diff --git a/jrt/tests/com/yahoo/jrt/Test.java b/jrt/tests/com/yahoo/jrt/Test.java
index d797bd6d1c9..59edd31ecea 100644
--- a/jrt/tests/com/yahoo/jrt/Test.java
+++ b/jrt/tests/com/yahoo/jrt/Test.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import java.util.Arrays;
diff --git a/jrt/tests/com/yahoo/jrt/TimeoutTest.java b/jrt/tests/com/yahoo/jrt/TimeoutTest.java
index 4bcc99c8519..0366020b221 100644
--- a/jrt/tests/com/yahoo/jrt/TimeoutTest.java
+++ b/jrt/tests/com/yahoo/jrt/TimeoutTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/tests/com/yahoo/jrt/TlsDetectionTest.java b/jrt/tests/com/yahoo/jrt/TlsDetectionTest.java
index 47a8a20deab..89590ed4936 100644
--- a/jrt/tests/com/yahoo/jrt/TlsDetectionTest.java
+++ b/jrt/tests/com/yahoo/jrt/TlsDetectionTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import static org.junit.Assert.assertEquals;
diff --git a/jrt/tests/com/yahoo/jrt/ValuesTest.java b/jrt/tests/com/yahoo/jrt/ValuesTest.java
index f70af0d7898..346760c5ea9 100644
--- a/jrt/tests/com/yahoo/jrt/ValuesTest.java
+++ b/jrt/tests/com/yahoo/jrt/ValuesTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
import java.nio.ByteBuffer;
diff --git a/jrt/tests/com/yahoo/jrt/WatcherTest.java b/jrt/tests/com/yahoo/jrt/WatcherTest.java
index 3926b859875..6d48ff001f6 100644
--- a/jrt/tests/com/yahoo/jrt/WatcherTest.java
+++ b/jrt/tests/com/yahoo/jrt/WatcherTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
diff --git a/jrt/tests/com/yahoo/jrt/slobrok/api/BackOffTestCase.java b/jrt/tests/com/yahoo/jrt/slobrok/api/BackOffTestCase.java
index 6a28720ace5..c4991d572d7 100644
--- a/jrt/tests/com/yahoo/jrt/slobrok/api/BackOffTestCase.java
+++ b/jrt/tests/com/yahoo/jrt/slobrok/api/BackOffTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt.slobrok.api;
import org.junit.Test;
diff --git a/jrt/tests/com/yahoo/jrt/slobrok/api/MirrorTest.java b/jrt/tests/com/yahoo/jrt/slobrok/api/MirrorTest.java
index 596dd8c9dca..50738e7307e 100644
--- a/jrt/tests/com/yahoo/jrt/slobrok/api/MirrorTest.java
+++ b/jrt/tests/com/yahoo/jrt/slobrok/api/MirrorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt.slobrok.api;
import org.junit.Test;
diff --git a/jrt/tests/com/yahoo/jrt/slobrok/api/SlobrokListTestCase.java b/jrt/tests/com/yahoo/jrt/slobrok/api/SlobrokListTestCase.java
index 02c2333b696..644dbda5dd0 100644
--- a/jrt/tests/com/yahoo/jrt/slobrok/api/SlobrokListTestCase.java
+++ b/jrt/tests/com/yahoo/jrt/slobrok/api/SlobrokListTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt.slobrok.api;
import org.junit.Test;
diff --git a/jrt/tests/com/yahoo/jrt/tool/RpcInvokerTest.java b/jrt/tests/com/yahoo/jrt/tool/RpcInvokerTest.java
index 6e2d02d548b..f4bc4c44f4a 100644
--- a/jrt/tests/com/yahoo/jrt/tool/RpcInvokerTest.java
+++ b/jrt/tests/com/yahoo/jrt/tool/RpcInvokerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt.tool;
import com.yahoo.jrt.Request;
diff --git a/jrt_test/CMakeLists.txt b/jrt_test/CMakeLists.txt
index 6a731460d89..ea8c8b94faa 100644
--- a/jrt_test/CMakeLists.txt
+++ b/jrt_test/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/jrt_test/src/binref/CMakeLists.txt b/jrt_test/src/binref/CMakeLists.txt
index 9eb0d7ef8a6..da9bcdbfd8e 100644
--- a/jrt_test/src/binref/CMakeLists.txt
+++ b/jrt_test/src/binref/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
configure_file(compilejava.in compilejava @ONLY)
configure_file(runjava.in runjava @ONLY)
diff --git a/jrt_test/src/binref/compilejava.in b/jrt_test/src/binref/compilejava.in
index 4bac09dc483..38764943ff7 100755
--- a/jrt_test/src/binref/compilejava.in
+++ b/jrt_test/src/binref/compilejava.in
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
unset VESPA_LOG_TARGET
if [ -n "$VESPA_CPP_TEST_JARS" ]; then
diff --git a/jrt_test/src/binref/env.sh.in b/jrt_test/src/binref/env.sh.in
index 45c7c25976f..c15dfdebd71 100644
--- a/jrt_test/src/binref/env.sh.in
+++ b/jrt_test/src/binref/env.sh.in
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
BINREF=@CMAKE_CURRENT_BINARY_DIR@
SBCMD=@PROJECT_BINARY_DIR@/slobrok/src/apps/sbcmd/vespa-slobrok-cmd
SLOBROK=@PROJECT_BINARY_DIR@/slobrok/src/apps/slobrok/vespa-slobrok
diff --git a/jrt_test/src/binref/runjava.in b/jrt_test/src/binref/runjava.in
index 47e7b8aa66c..f87b817b35a 100755
--- a/jrt_test/src/binref/runjava.in
+++ b/jrt_test/src/binref/runjava.in
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
unset VESPA_LOG_TARGET
if [ -n "$VESPA_CPP_TEST_JARS" ]; then
diff --git a/jrt_test/src/java/CMakeLists.txt b/jrt_test/src/java/CMakeLists.txt
index 657d0e94ca7..097c8cebac3 100644
--- a/jrt_test/src/java/CMakeLists.txt
+++ b/jrt_test/src/java/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
file(MAKE_DIRECTORY classes)
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/java_code_compiled
COMMAND ${CMAKE_CURRENT_BINARY_DIR}/../binref/compilejava -d classes *.java
diff --git a/jrt_test/src/java/DummySlobrokService.java b/jrt_test/src/java/DummySlobrokService.java
index ff7d8ffe7f2..5e5613e7d3f 100644
--- a/jrt_test/src/java/DummySlobrokService.java
+++ b/jrt_test/src/java/DummySlobrokService.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.jrt.*;
import com.yahoo.jrt.slobrok.api.*;
diff --git a/jrt_test/src/java/HelloWorld.java b/jrt_test/src/java/HelloWorld.java
index beb0df16e6a..cbf941ed76d 100644
--- a/jrt_test/src/java/HelloWorld.java
+++ b/jrt_test/src/java/HelloWorld.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
public class HelloWorld
{
public static void main(String[] args)
diff --git a/jrt_test/src/java/PollRPCServer.java b/jrt_test/src/java/PollRPCServer.java
index 2f8e75c3d25..6c84cab1ab9 100644
--- a/jrt_test/src/java/PollRPCServer.java
+++ b/jrt_test/src/java/PollRPCServer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.jrt.*;
diff --git a/jrt_test/src/java/SimpleServer.java b/jrt_test/src/java/SimpleServer.java
index 06ade36bc8e..6c1364b2d84 100644
--- a/jrt_test/src/java/SimpleServer.java
+++ b/jrt_test/src/java/SimpleServer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.jrt.*;
diff --git a/jrt_test/src/jrt-test/simpleserver/CMakeLists.txt b/jrt_test/src/jrt-test/simpleserver/CMakeLists.txt
index 402c6144574..21184699a98 100644
--- a/jrt_test/src/jrt-test/simpleserver/CMakeLists.txt
+++ b/jrt_test/src/jrt-test/simpleserver/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(jrt_test_simpleserver_app
SOURCES
simpleserver.cpp
diff --git a/jrt_test/src/jrt-test/simpleserver/simpleserver.cpp b/jrt_test/src/jrt-test/simpleserver/simpleserver.cpp
index cf23a027905..b6269253c48 100644
--- a/jrt_test/src/jrt-test/simpleserver/simpleserver.cpp
+++ b/jrt_test/src/jrt-test/simpleserver/simpleserver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fnet/frt/supervisor.h>
#include <vespa/fnet/frt/rpcrequest.h>
diff --git a/jrt_test/src/tests/connect-close/CMakeLists.txt b/jrt_test/src/tests/connect-close/CMakeLists.txt
index adece6dd711..05c9ec571fb 100644
--- a/jrt_test/src/tests/connect-close/CMakeLists.txt
+++ b/jrt_test/src/tests/connect-close/CMakeLists.txt
@@ -1 +1 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
diff --git a/jrt_test/src/tests/connect-close/Test.java b/jrt_test/src/tests/connect-close/Test.java
index c583e6c4886..055ffcfeb7c 100644
--- a/jrt_test/src/tests/connect-close/Test.java
+++ b/jrt_test/src/tests/connect-close/Test.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.jrt.*;
diff --git a/jrt_test/src/tests/echo/CMakeLists.txt b/jrt_test/src/tests/echo/CMakeLists.txt
index 001a30c9439..d90146ba67c 100644
--- a/jrt_test/src/tests/echo/CMakeLists.txt
+++ b/jrt_test/src/tests/echo/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(jrt_test_echo-client_app TEST
SOURCES
echo-client.cpp
diff --git a/jrt_test/src/tests/echo/dotest.sh b/jrt_test/src/tests/echo/dotest.sh
index 321e5f88f1e..de1b564e799 100644
--- a/jrt_test/src/tests/echo/dotest.sh
+++ b/jrt_test/src/tests/echo/dotest.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
if [ -z "$SOURCE_DIRECTORY" ]; then
SOURCE_DIRECTORY="."
fi
diff --git a/jrt_test/src/tests/echo/echo-client.cpp b/jrt_test/src/tests/echo/echo-client.cpp
index 4bc9ac743e4..0661c8cfa2c 100644
--- a/jrt_test/src/tests/echo/echo-client.cpp
+++ b/jrt_test/src/tests/echo/echo-client.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fnet/frt/supervisor.h>
#include <vespa/fnet/frt/target.h>
diff --git a/jrt_test/src/tests/echo/echo_test.sh b/jrt_test/src/tests/echo/echo_test.sh
index 6cfacc944cb..bda5c8c0dc7 100755
--- a/jrt_test/src/tests/echo/echo_test.sh
+++ b/jrt_test/src/tests/echo/echo_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
if [ -z "$SOURCE_DIRECTORY" ]; then
SOURCE_DIRECTORY="."
diff --git a/jrt_test/src/tests/echo/progdefs.sh b/jrt_test/src/tests/echo/progdefs.sh
index 3cd554667f9..2c941ea891b 100644
--- a/jrt_test/src/tests/echo/progdefs.sh
+++ b/jrt_test/src/tests/echo/progdefs.sh
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
prog javaserver 1 "tcp/$PORT_2" "$BINREF/runjava SimpleServer"
diff --git a/jrt_test/src/tests/garbage/CMakeLists.txt b/jrt_test/src/tests/garbage/CMakeLists.txt
index adece6dd711..05c9ec571fb 100644
--- a/jrt_test/src/tests/garbage/CMakeLists.txt
+++ b/jrt_test/src/tests/garbage/CMakeLists.txt
@@ -1 +1 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
diff --git a/jrt_test/src/tests/garbage/Garbage.java b/jrt_test/src/tests/garbage/Garbage.java
index 54822b53744..77a1d8bfd7d 100644
--- a/jrt_test/src/tests/garbage/Garbage.java
+++ b/jrt_test/src/tests/garbage/Garbage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.jrt.*;
import java.net.Socket;
import java.io.OutputStream;
diff --git a/jrt_test/src/tests/hello-world/CMakeLists.txt b/jrt_test/src/tests/hello-world/CMakeLists.txt
index adece6dd711..05c9ec571fb 100644
--- a/jrt_test/src/tests/hello-world/CMakeLists.txt
+++ b/jrt_test/src/tests/hello-world/CMakeLists.txt
@@ -1 +1 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
diff --git a/jrt_test/src/tests/mandatory-methods/CMakeLists.txt b/jrt_test/src/tests/mandatory-methods/CMakeLists.txt
index 939e8e7d260..33eb601c2a3 100644
--- a/jrt_test/src/tests/mandatory-methods/CMakeLists.txt
+++ b/jrt_test/src/tests/mandatory-methods/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(jrt_test_extract-reflection_app TEST
SOURCES
extract-reflection.cpp
diff --git a/jrt_test/src/tests/mandatory-methods/RPCServer.java b/jrt_test/src/tests/mandatory-methods/RPCServer.java
index 85f52ee2c51..ee187e6cd74 100644
--- a/jrt_test/src/tests/mandatory-methods/RPCServer.java
+++ b/jrt_test/src/tests/mandatory-methods/RPCServer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.jrt.*;
diff --git a/jrt_test/src/tests/mandatory-methods/dotest.sh b/jrt_test/src/tests/mandatory-methods/dotest.sh
index cad4e5a9b4f..793b1a64c82 100644
--- a/jrt_test/src/tests/mandatory-methods/dotest.sh
+++ b/jrt_test/src/tests/mandatory-methods/dotest.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
if [ -z "$SOURCE_DIRECTORY" ]; then
SOURCE_DIRECTORY="."
diff --git a/jrt_test/src/tests/mandatory-methods/extract-reflection.cpp b/jrt_test/src/tests/mandatory-methods/extract-reflection.cpp
index af9f60f84d3..96f90c59645 100644
--- a/jrt_test/src/tests/mandatory-methods/extract-reflection.cpp
+++ b/jrt_test/src/tests/mandatory-methods/extract-reflection.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fastos/app.h>
#include <vespa/fnet/frt/supervisor.h>
diff --git a/jrt_test/src/tests/mandatory-methods/mandatory-methods_test.sh b/jrt_test/src/tests/mandatory-methods/mandatory-methods_test.sh
index d8db62797a5..ca71b2b2f06 100755
--- a/jrt_test/src/tests/mandatory-methods/mandatory-methods_test.sh
+++ b/jrt_test/src/tests/mandatory-methods/mandatory-methods_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
if [ -z "$SOURCE_DIRECTORY" ]; then
SOURCE_DIRECTORY="."
diff --git a/jrt_test/src/tests/mandatory-methods/progdefs.sh b/jrt_test/src/tests/mandatory-methods/progdefs.sh
index 77ea3d53124..a7d68bd322f 100644
--- a/jrt_test/src/tests/mandatory-methods/progdefs.sh
+++ b/jrt_test/src/tests/mandatory-methods/progdefs.sh
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
prog javaserver 1 "tcp/$PORT_1" "$BINREF/runjava RPCServer"
diff --git a/jrt_test/src/tests/mockup-invoke/CMakeLists.txt b/jrt_test/src/tests/mockup-invoke/CMakeLists.txt
index dec4df48222..494f0681b78 100644
--- a/jrt_test/src/tests/mockup-invoke/CMakeLists.txt
+++ b/jrt_test/src/tests/mockup-invoke/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(jrt_test_mockup-server_app TEST
SOURCES
mockup-server.cpp
diff --git a/jrt_test/src/tests/mockup-invoke/MockupInvoke.java b/jrt_test/src/tests/mockup-invoke/MockupInvoke.java
index 71a8bf84eb5..2609921e4f6 100644
--- a/jrt_test/src/tests/mockup-invoke/MockupInvoke.java
+++ b/jrt_test/src/tests/mockup-invoke/MockupInvoke.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.jrt.*;
diff --git a/jrt_test/src/tests/mockup-invoke/dotest.sh b/jrt_test/src/tests/mockup-invoke/dotest.sh
index e7d8aeed588..0ddf87f0b51 100644
--- a/jrt_test/src/tests/mockup-invoke/dotest.sh
+++ b/jrt_test/src/tests/mockup-invoke/dotest.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
if [ -z "$SOURCE_DIRECTORY" ]; then
SOURCE_DIRECTORY="."
diff --git a/jrt_test/src/tests/mockup-invoke/mockup-invoke_test.sh b/jrt_test/src/tests/mockup-invoke/mockup-invoke_test.sh
index 4d9b1fe0aba..62347bb18a5 100755
--- a/jrt_test/src/tests/mockup-invoke/mockup-invoke_test.sh
+++ b/jrt_test/src/tests/mockup-invoke/mockup-invoke_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
if [ -z "$SOURCE_DIRECTORY" ]; then
SOURCE_DIRECTORY="."
diff --git a/jrt_test/src/tests/mockup-invoke/mockup-server.cpp b/jrt_test/src/tests/mockup-invoke/mockup-server.cpp
index 1abe27407b3..cfa40f3352d 100644
--- a/jrt_test/src/tests/mockup-invoke/mockup-server.cpp
+++ b/jrt_test/src/tests/mockup-invoke/mockup-server.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fnet/frt/supervisor.h>
#include <vespa/fnet/frt/rpcrequest.h>
diff --git a/jrt_test/src/tests/mockup-invoke/progdefs.sh b/jrt_test/src/tests/mockup-invoke/progdefs.sh
index 6d9ed78a3a2..b2661a85d53 100644
--- a/jrt_test/src/tests/mockup-invoke/progdefs.sh
+++ b/jrt_test/src/tests/mockup-invoke/progdefs.sh
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
prog server 1 "tcp/$PORT_0" "./jrt_test_mockup-server_app"
diff --git a/jrt_test/src/tests/rpc-error/CMakeLists.txt b/jrt_test/src/tests/rpc-error/CMakeLists.txt
index 1e651a4bfba..474a7e1a829 100644
--- a/jrt_test/src/tests/rpc-error/CMakeLists.txt
+++ b/jrt_test/src/tests/rpc-error/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(jrt_test_test-errors_app TEST
SOURCES
test-errors.cpp
diff --git a/jrt_test/src/tests/rpc-error/TestErrors.java b/jrt_test/src/tests/rpc-error/TestErrors.java
index 1fb67575c58..75df1a9d2ec 100644
--- a/jrt_test/src/tests/rpc-error/TestErrors.java
+++ b/jrt_test/src/tests/rpc-error/TestErrors.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.jrt.*;
diff --git a/jrt_test/src/tests/rpc-error/dotest.sh b/jrt_test/src/tests/rpc-error/dotest.sh
index 1814ff74415..a375e0a26d9 100644
--- a/jrt_test/src/tests/rpc-error/dotest.sh
+++ b/jrt_test/src/tests/rpc-error/dotest.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
if [ -z "$SOURCE_DIRECTORY" ]; then
SOURCE_DIRECTORY="."
diff --git a/jrt_test/src/tests/rpc-error/progdefs.sh b/jrt_test/src/tests/rpc-error/progdefs.sh
index 4da4a30ebd3..5fd04bb9dff 100644
--- a/jrt_test/src/tests/rpc-error/progdefs.sh
+++ b/jrt_test/src/tests/rpc-error/progdefs.sh
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
prog cppserver 1 "tcp/$CPP_PORT" "$SIMPLESERVER"
prog javaserver 1 "tcp/$JAVA_PORT" "$BINREF/runjava SimpleServer"
diff --git a/jrt_test/src/tests/rpc-error/rpc-error_test.sh b/jrt_test/src/tests/rpc-error/rpc-error_test.sh
index 304dc36c807..69a415500b7 100755
--- a/jrt_test/src/tests/rpc-error/rpc-error_test.sh
+++ b/jrt_test/src/tests/rpc-error/rpc-error_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
if [ -z "$SOURCE_DIRECTORY" ]; then
SOURCE_DIRECTORY="."
diff --git a/jrt_test/src/tests/rpc-error/test-errors.cpp b/jrt_test/src/tests/rpc-error/test-errors.cpp
index 1c0c057e433..86d699e530e 100644
--- a/jrt_test/src/tests/rpc-error/test-errors.cpp
+++ b/jrt_test/src/tests/rpc-error/test-errors.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/fnet/frt/supervisor.h>
#include <vespa/fnet/frt/target.h>
diff --git a/jrt_test/src/tests/slobrok-api/CMakeLists.txt b/jrt_test/src/tests/slobrok-api/CMakeLists.txt
index adece6dd711..05c9ec571fb 100644
--- a/jrt_test/src/tests/slobrok-api/CMakeLists.txt
+++ b/jrt_test/src/tests/slobrok-api/CMakeLists.txt
@@ -1 +1 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
diff --git a/jrt_test/src/tests/slobrok-api/SlobrokAPITest.java b/jrt_test/src/tests/slobrok-api/SlobrokAPITest.java
index 50b13a526e7..50d2fa5f92c 100644
--- a/jrt_test/src/tests/slobrok-api/SlobrokAPITest.java
+++ b/jrt_test/src/tests/slobrok-api/SlobrokAPITest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.jrt.*;
diff --git a/jrt_test/src/tests/slobrok-api/dotest.sh b/jrt_test/src/tests/slobrok-api/dotest.sh
index f6e7013460d..f7dfd76dc63 100755
--- a/jrt_test/src/tests/slobrok-api/dotest.sh
+++ b/jrt_test/src/tests/slobrok-api/dotest.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
fail=0
diff --git a/jrt_test/src/tests/slobrok-api/progdefs.sh b/jrt_test/src/tests/slobrok-api/progdefs.sh
index b5954e975cf..f741eda3192 100644
--- a/jrt_test/src/tests/slobrok-api/progdefs.sh
+++ b/jrt_test/src/tests/slobrok-api/progdefs.sh
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
prog slobrok 1 "-p $PORT_8" $SLOBROK
diff --git a/juniper/CMakeLists.txt b/juniper/CMakeLists.txt
index 5f6296367f0..34dea870ec8 100644
--- a/juniper/CMakeLists.txt
+++ b/juniper/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/juniper/doc/written/fsearchparams.html b/juniper/doc/written/fsearchparams.html
index d27e4e66de8..1a968e55c41 100644
--- a/juniper/doc/written/fsearchparams.html
+++ b/juniper/doc/written/fsearchparams.html
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<title>Juniper Configuration Documentation</title>
<h1>Juniper Configuration Documentation</h1>
diff --git a/juniper/src/Doxyfile b/juniper/src/Doxyfile
index 1aaf2b9499e..fb848bfd931 100644
--- a/juniper/src/Doxyfile
+++ b/juniper/src/Doxyfile
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Doxyfile 1.2.14
# This file describes the settings to be used by the documentation system
diff --git a/juniper/src/rpclient/testclient.rc b/juniper/src/rpclient/testclient.rc
index 0c4177a759d..d04262c364c 100644
--- a/juniper/src/rpclient/testclient.rc
+++ b/juniper/src/rpclient/testclient.rc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
## Dynamic teasers
## Some sensible default values
## This file is used by the testclient application by default,
diff --git a/juniper/src/test/CMakeLists.txt b/juniper/src/test/CMakeLists.txt
index de12252d49e..c895d5d3766 100644
--- a/juniper/src/test/CMakeLists.txt
+++ b/juniper/src/test/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(juniper_mcandTest_app TEST
SOURCES
mcandTest.cpp
diff --git a/juniper/src/test/SrcTestSuite.cpp b/juniper/src/test/SrcTestSuite.cpp
index 857bd958547..c26e73341d5 100644
--- a/juniper/src/test/SrcTestSuite.cpp
+++ b/juniper/src/test/SrcTestSuite.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "testenv.h"
#include "mcandTest.h"
diff --git a/juniper/src/test/appender_test.cpp b/juniper/src/test/appender_test.cpp
index bf790c38ee2..65e876f1a35 100644
--- a/juniper/src/test/appender_test.cpp
+++ b/juniper/src/test/appender_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#define _NEED_SUMMARY_CONFIG_IMPL
diff --git a/juniper/src/test/auxTest.cpp b/juniper/src/test/auxTest.cpp
index 2557fbf890d..069a114bfd3 100644
--- a/juniper/src/test/auxTest.cpp
+++ b/juniper/src/test/auxTest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "auxTest.h"
#include <vespa/fastos/file.h>
diff --git a/juniper/src/test/auxTest.h b/juniper/src/test/auxTest.h
index 6d7611c2c6a..dd6d79e024a 100644
--- a/juniper/src/test/auxTest.h
+++ b/juniper/src/test/auxTest.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
// Auxiliary tests for juniper - based on Juniper 1.x proximitytest.cpp
diff --git a/juniper/src/test/auxTestApp.cpp b/juniper/src/test/auxTestApp.cpp
index a17aca8aad0..ff942dc19f7 100644
--- a/juniper/src/test/auxTestApp.cpp
+++ b/juniper/src/test/auxTestApp.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "auxTest.h"
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/juniper/src/test/fakerewriter.cpp b/juniper/src/test/fakerewriter.cpp
index 9ded9d1c753..bbaf7079525 100644
--- a/juniper/src/test/fakerewriter.cpp
+++ b/juniper/src/test/fakerewriter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fakerewriter.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/juniper/src/test/fakerewriter.h b/juniper/src/test/fakerewriter.h
index 67474523eac..e1e5de59feb 100644
--- a/juniper/src/test/fakerewriter.h
+++ b/juniper/src/test/fakerewriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/juniper/rewriter.h>
diff --git a/juniper/src/test/matchobjectTest.cpp b/juniper/src/test/matchobjectTest.cpp
index 1aa05317616..07e3cf84767 100644
--- a/juniper/src/test/matchobjectTest.cpp
+++ b/juniper/src/test/matchobjectTest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* Author: Knut Omang
*/
diff --git a/juniper/src/test/matchobjectTest.h b/juniper/src/test/matchobjectTest.h
index d450281a428..5bfd29a371f 100644
--- a/juniper/src/test/matchobjectTest.h
+++ b/juniper/src/test/matchobjectTest.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* Author: Knut Omang
*/
diff --git a/juniper/src/test/matchobjectTestApp.cpp b/juniper/src/test/matchobjectTestApp.cpp
index 5ed6b2b840d..6a595e07983 100644
--- a/juniper/src/test/matchobjectTestApp.cpp
+++ b/juniper/src/test/matchobjectTestApp.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "matchobjectTest.h"
#include "testenv.h"
diff --git a/juniper/src/test/mcandTest.cpp b/juniper/src/test/mcandTest.cpp
index 085c98b63e8..5a465275a80 100644
--- a/juniper/src/test/mcandTest.cpp
+++ b/juniper/src/test/mcandTest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* Author: Knut Omang
*/
diff --git a/juniper/src/test/mcandTest.h b/juniper/src/test/mcandTest.h
index 08b6c4c224b..cdb01e91e3b 100644
--- a/juniper/src/test/mcandTest.h
+++ b/juniper/src/test/mcandTest.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* Author Knut Omang
*/
diff --git a/juniper/src/test/mcandTestApp.cpp b/juniper/src/test/mcandTestApp.cpp
index 49688bbd5cf..32d2a2e0b92 100644
--- a/juniper/src/test/mcandTestApp.cpp
+++ b/juniper/src/test/mcandTestApp.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mcandTest.h"
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/juniper/src/test/queryparserTest.cpp b/juniper/src/test/queryparserTest.cpp
index 7fcf4a5be48..e8afbcc0cee 100644
--- a/juniper/src/test/queryparserTest.cpp
+++ b/juniper/src/test/queryparserTest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* Author Knut Omang
*/
diff --git a/juniper/src/test/queryparserTest.h b/juniper/src/test/queryparserTest.h
index 612c62e56d4..7dc4dda63fa 100644
--- a/juniper/src/test/queryparserTest.h
+++ b/juniper/src/test/queryparserTest.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* Author Knut Omang
*/
diff --git a/juniper/src/test/queryparserTestApp.cpp b/juniper/src/test/queryparserTestApp.cpp
index e9c50a42eca..be0b505ac4f 100644
--- a/juniper/src/test/queryparserTestApp.cpp
+++ b/juniper/src/test/queryparserTestApp.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "queryparserTest.h"
#include "testenv.h"
diff --git a/juniper/src/test/queryvisitor_test.cpp b/juniper/src/test/queryvisitor_test.cpp
index ccb9603e645..0b99bf6583c 100644
--- a/juniper/src/test/queryvisitor_test.cpp
+++ b/juniper/src/test/queryvisitor_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <memory>
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/juniper/src/test/testenv.cpp b/juniper/src/test/testenv.cpp
index 650bc9f2cb7..bd40ae511e3 100644
--- a/juniper/src/test/testenv.cpp
+++ b/juniper/src/test/testenv.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/* Setup and parameter parsing for static Juniper environment to reuse
* within test framework
*/
diff --git a/juniper/src/test/testenv.h b/juniper/src/test/testenv.h
index aa1eea0a3d1..4435b9157d1 100644
--- a/juniper/src/test/testenv.h
+++ b/juniper/src/test/testenv.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
/* Include most of the stuff that we might need */
diff --git a/juniper/src/testproject.el b/juniper/src/testproject.el
index b67f7159e00..fa8d580b0eb 100644
--- a/juniper/src/testproject.el
+++ b/juniper/src/testproject.el
@@ -1,4 +1,4 @@
-;; Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+;; Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
;; testproject.el
;; Local configurations for the cpptest Emacs unit-test
diff --git a/juniper/src/vespa/juniper/CMakeLists.txt b/juniper/src/vespa/juniper/CMakeLists.txt
index ef9b9dc25eb..4b4ae30a7ac 100644
--- a/juniper/src/vespa/juniper/CMakeLists.txt
+++ b/juniper/src/vespa/juniper/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(juniper
SOURCES
Matcher.cpp
diff --git a/juniper/src/vespa/juniper/IJuniperProperties.h b/juniper/src/vespa/juniper/IJuniperProperties.h
index 519580b1e4f..63ada17684c 100644
--- a/juniper/src/vespa/juniper/IJuniperProperties.h
+++ b/juniper/src/vespa/juniper/IJuniperProperties.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/juniper/src/vespa/juniper/ITokenProcessor.h b/juniper/src/vespa/juniper/ITokenProcessor.h
index 184db76bdc6..fbb9a93075c 100644
--- a/juniper/src/vespa/juniper/ITokenProcessor.h
+++ b/juniper/src/vespa/juniper/ITokenProcessor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/fastlib/text/unicodeutil.h>
diff --git a/juniper/src/vespa/juniper/Matcher.cpp b/juniper/src/vespa/juniper/Matcher.cpp
index bb5bc0bdcae..e286068038b 100644
--- a/juniper/src/vespa/juniper/Matcher.cpp
+++ b/juniper/src/vespa/juniper/Matcher.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <algorithm>
#include <string>
diff --git a/juniper/src/vespa/juniper/Matcher.h b/juniper/src/vespa/juniper/Matcher.h
index db90a5a3091..5564537ae4a 100644
--- a/juniper/src/vespa/juniper/Matcher.h
+++ b/juniper/src/vespa/juniper/Matcher.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/* $Id$ */
#pragma once
diff --git a/juniper/src/vespa/juniper/SummaryConfig.cpp b/juniper/src/vespa/juniper/SummaryConfig.cpp
index 93e151c3858..5b009ea5cd2 100644
--- a/juniper/src/vespa/juniper/SummaryConfig.cpp
+++ b/juniper/src/vespa/juniper/SummaryConfig.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#define _NEED_SUMMARY_CONFIG_IMPL 1
#include "SummaryConfig.h"
diff --git a/juniper/src/vespa/juniper/SummaryConfig.h b/juniper/src/vespa/juniper/SummaryConfig.h
index 1212132c76e..fdf4cdcaae1 100644
--- a/juniper/src/vespa/juniper/SummaryConfig.h
+++ b/juniper/src/vespa/juniper/SummaryConfig.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
//
#pragma once
#include <string>
diff --git a/juniper/src/vespa/juniper/appender.h b/juniper/src/vespa/juniper/appender.h
index a74b038c5f1..ade199e00c2 100644
--- a/juniper/src/vespa/juniper/appender.h
+++ b/juniper/src/vespa/juniper/appender.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/hdr_abort.h>
diff --git a/juniper/src/vespa/juniper/charutil.h b/juniper/src/vespa/juniper/charutil.h
index 8059b373a33..859bb6e6ed9 100644
--- a/juniper/src/vespa/juniper/charutil.h
+++ b/juniper/src/vespa/juniper/charutil.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace juniper
diff --git a/juniper/src/vespa/juniper/config.cpp b/juniper/src/vespa/juniper/config.cpp
index bd0dfe6c9b1..b9213bb21f1 100644
--- a/juniper/src/vespa/juniper/config.cpp
+++ b/juniper/src/vespa/juniper/config.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "config.h"
#include "IJuniperProperties.h"
diff --git a/juniper/src/vespa/juniper/config.h b/juniper/src/vespa/juniper/config.h
index bd10f604276..a9dabdd91d1 100644
--- a/juniper/src/vespa/juniper/config.h
+++ b/juniper/src/vespa/juniper/config.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "juniperparams.h"
diff --git a/juniper/src/vespa/juniper/dpinterface.cpp b/juniper/src/vespa/juniper/dpinterface.cpp
index f74e6f8de0b..7b7c5aa7120 100644
--- a/juniper/src/vespa/juniper/dpinterface.cpp
+++ b/juniper/src/vespa/juniper/dpinterface.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/* $Id$ */
#include "dpinterface.h"
diff --git a/juniper/src/vespa/juniper/dpinterface.h b/juniper/src/vespa/juniper/dpinterface.h
index 2b797e903b7..8f538cee05d 100644
--- a/juniper/src/vespa/juniper/dpinterface.h
+++ b/juniper/src/vespa/juniper/dpinterface.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/juniper/src/vespa/juniper/expcache.cpp b/juniper/src/vespa/juniper/expcache.cpp
index 2493d5ee533..7436054932b 100644
--- a/juniper/src/vespa/juniper/expcache.cpp
+++ b/juniper/src/vespa/juniper/expcache.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "expcache.h"
#include "matchobject.h"
diff --git a/juniper/src/vespa/juniper/expcache.h b/juniper/src/vespa/juniper/expcache.h
index beaa491148c..5f16397d69a 100644
--- a/juniper/src/vespa/juniper/expcache.h
+++ b/juniper/src/vespa/juniper/expcache.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "simplemap.h"
diff --git a/juniper/src/vespa/juniper/foreach_utils.h b/juniper/src/vespa/juniper/foreach_utils.h
index 4007d721a99..ebbf1f41049 100644
--- a/juniper/src/vespa/juniper/foreach_utils.h
+++ b/juniper/src/vespa/juniper/foreach_utils.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <algorithm>
diff --git a/juniper/src/vespa/juniper/hashbase.h b/juniper/src/vespa/juniper/hashbase.h
index e826ef876c8..2cdfc02800f 100644
--- a/juniper/src/vespa/juniper/hashbase.h
+++ b/juniper/src/vespa/juniper/hashbase.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <stdio.h>
diff --git a/juniper/src/vespa/juniper/juniperdebug.h b/juniper/src/vespa/juniper/juniperdebug.h
index b54b229df18..cf6a3c971f8 100644
--- a/juniper/src/vespa/juniper/juniperdebug.h
+++ b/juniper/src/vespa/juniper/juniperdebug.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
// Include something from STL so that _STLPORT_VERSION gets defined if appropriate
diff --git a/juniper/src/vespa/juniper/juniperparams.cpp b/juniper/src/vespa/juniper/juniperparams.cpp
index a4952543123..e600c23f7c4 100644
--- a/juniper/src/vespa/juniper/juniperparams.cpp
+++ b/juniper/src/vespa/juniper/juniperparams.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "juniperdebug.h"
#include "juniperparams.h"
#include "Matcher.h"
diff --git a/juniper/src/vespa/juniper/juniperparams.h b/juniper/src/vespa/juniper/juniperparams.h
index 4ddb43d1325..44980ce8b43 100644
--- a/juniper/src/vespa/juniper/juniperparams.h
+++ b/juniper/src/vespa/juniper/juniperparams.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <string>
diff --git a/juniper/src/vespa/juniper/keyocc.cpp b/juniper/src/vespa/juniper/keyocc.cpp
index acdc8bf6617..7214bc72fe9 100644
--- a/juniper/src/vespa/juniper/keyocc.cpp
+++ b/juniper/src/vespa/juniper/keyocc.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "keyocc.h"
key_occ::key_occ(const char* term_, off_t spos, off_t stoken, int len) :
diff --git a/juniper/src/vespa/juniper/keyocc.h b/juniper/src/vespa/juniper/keyocc.h
index c957909ac90..8c79e51e3a3 100644
--- a/juniper/src/vespa/juniper/keyocc.h
+++ b/juniper/src/vespa/juniper/keyocc.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "matchelem.h"
diff --git a/juniper/src/vespa/juniper/matchelem.cpp b/juniper/src/vespa/juniper/matchelem.cpp
index 63367a5eeff..27c4c9516e9 100644
--- a/juniper/src/vespa/juniper/matchelem.cpp
+++ b/juniper/src/vespa/juniper/matchelem.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "matchelem.h"
diff --git a/juniper/src/vespa/juniper/matchelem.h b/juniper/src/vespa/juniper/matchelem.h
index b0af8f3364f..7948eabb8ed 100644
--- a/juniper/src/vespa/juniper/matchelem.h
+++ b/juniper/src/vespa/juniper/matchelem.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/* $Id: */
#pragma once
diff --git a/juniper/src/vespa/juniper/matchobject.cpp b/juniper/src/vespa/juniper/matchobject.cpp
index 17092703903..d6657250f80 100644
--- a/juniper/src/vespa/juniper/matchobject.cpp
+++ b/juniper/src/vespa/juniper/matchobject.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "query.h"
#include "matchobject.h"
diff --git a/juniper/src/vespa/juniper/matchobject.h b/juniper/src/vespa/juniper/matchobject.h
index 75d36aa361b..3278448e0f7 100644
--- a/juniper/src/vespa/juniper/matchobject.h
+++ b/juniper/src/vespa/juniper/matchobject.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "queryhandle.h"
diff --git a/juniper/src/vespa/juniper/mcand.cpp b/juniper/src/vespa/juniper/mcand.cpp
index a172c8931f4..f67788d59ed 100644
--- a/juniper/src/vespa/juniper/mcand.cpp
+++ b/juniper/src/vespa/juniper/mcand.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mcand.h"
#include "Matcher.h"
diff --git a/juniper/src/vespa/juniper/mcand.h b/juniper/src/vespa/juniper/mcand.h
index fee86fd83af..a09a18267c1 100644
--- a/juniper/src/vespa/juniper/mcand.h
+++ b/juniper/src/vespa/juniper/mcand.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/* $Id$ */
#pragma once
diff --git a/juniper/src/vespa/juniper/propreader.cpp b/juniper/src/vespa/juniper/propreader.cpp
index e93e641eaed..99a6e580126 100644
--- a/juniper/src/vespa/juniper/propreader.cpp
+++ b/juniper/src/vespa/juniper/propreader.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "propreader.h"
#include <vespa/fastlib/io/bufferedfile.h>
diff --git a/juniper/src/vespa/juniper/propreader.h b/juniper/src/vespa/juniper/propreader.h
index 837b287fab8..fbc6f53bfb1 100644
--- a/juniper/src/vespa/juniper/propreader.h
+++ b/juniper/src/vespa/juniper/propreader.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "IJuniperProperties.h"
diff --git a/juniper/src/vespa/juniper/query.h b/juniper/src/vespa/juniper/query.h
index 2d8c6b4bbe0..8208b234d6b 100644
--- a/juniper/src/vespa/juniper/query.h
+++ b/juniper/src/vespa/juniper/query.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/juniper/src/vespa/juniper/queryhandle.cpp b/juniper/src/vespa/juniper/queryhandle.cpp
index 9998695d871..ab2e24970fd 100644
--- a/juniper/src/vespa/juniper/queryhandle.cpp
+++ b/juniper/src/vespa/juniper/queryhandle.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "query.h"
#include "queryhandle.h"
diff --git a/juniper/src/vespa/juniper/queryhandle.h b/juniper/src/vespa/juniper/queryhandle.h
index 76da4a31438..d0b266e99ce 100644
--- a/juniper/src/vespa/juniper/queryhandle.h
+++ b/juniper/src/vespa/juniper/queryhandle.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/* $Id$ */
#pragma once
diff --git a/juniper/src/vespa/juniper/querymodifier.cpp b/juniper/src/vespa/juniper/querymodifier.cpp
index c938c3a43b6..797617b605a 100644
--- a/juniper/src/vespa/juniper/querymodifier.cpp
+++ b/juniper/src/vespa/juniper/querymodifier.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "juniperdebug.h"
#include "querymodifier.h"
diff --git a/juniper/src/vespa/juniper/querymodifier.h b/juniper/src/vespa/juniper/querymodifier.h
index f5798779854..ec0d20778fb 100644
--- a/juniper/src/vespa/juniper/querymodifier.h
+++ b/juniper/src/vespa/juniper/querymodifier.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "simplemap.h"
diff --git a/juniper/src/vespa/juniper/querynode.cpp b/juniper/src/vespa/juniper/querynode.cpp
index 7bde92d7211..1a7a80333c7 100644
--- a/juniper/src/vespa/juniper/querynode.cpp
+++ b/juniper/src/vespa/juniper/querynode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "querynode.h"
#include "queryvisitor.h"
diff --git a/juniper/src/vespa/juniper/querynode.h b/juniper/src/vespa/juniper/querynode.h
index cb4f4d5d8f9..c6fecaf1b9f 100644
--- a/juniper/src/vespa/juniper/querynode.h
+++ b/juniper/src/vespa/juniper/querynode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/* $Id$ */
#pragma once
diff --git a/juniper/src/vespa/juniper/queryparser.cpp b/juniper/src/vespa/juniper/queryparser.cpp
index 0c2f5544463..9b8169bee44 100644
--- a/juniper/src/vespa/juniper/queryparser.cpp
+++ b/juniper/src/vespa/juniper/queryparser.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
//
/* Simple prefix query parser for Juniper for debugging purposes */
diff --git a/juniper/src/vespa/juniper/queryparser.h b/juniper/src/vespa/juniper/queryparser.h
index f61d6f19b6e..5715daa3661 100644
--- a/juniper/src/vespa/juniper/queryparser.h
+++ b/juniper/src/vespa/juniper/queryparser.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/juniper/src/vespa/juniper/queryvisitor.cpp b/juniper/src/vespa/juniper/queryvisitor.cpp
index 96a3f4ce771..dcd716c0c0f 100644
--- a/juniper/src/vespa/juniper/queryvisitor.cpp
+++ b/juniper/src/vespa/juniper/queryvisitor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "query.h"
#include "juniperdebug.h"
diff --git a/juniper/src/vespa/juniper/queryvisitor.h b/juniper/src/vespa/juniper/queryvisitor.h
index abdd3d2b28c..7c82d3fa50a 100644
--- a/juniper/src/vespa/juniper/queryvisitor.h
+++ b/juniper/src/vespa/juniper/queryvisitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "rpinterface.h"
diff --git a/juniper/src/vespa/juniper/reducematcher.cpp b/juniper/src/vespa/juniper/reducematcher.cpp
index dadc9dac40f..642daae9773 100644
--- a/juniper/src/vespa/juniper/reducematcher.cpp
+++ b/juniper/src/vespa/juniper/reducematcher.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "juniperdebug.h"
#include "reducematcher.h"
diff --git a/juniper/src/vespa/juniper/reducematcher.h b/juniper/src/vespa/juniper/reducematcher.h
index 09b26e70afb..cfdc252b17e 100644
--- a/juniper/src/vespa/juniper/reducematcher.h
+++ b/juniper/src/vespa/juniper/reducematcher.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "rewriter.h"
diff --git a/juniper/src/vespa/juniper/result.cpp b/juniper/src/vespa/juniper/result.cpp
index 0d9e2c42dcb..653e692e015 100644
--- a/juniper/src/vespa/juniper/result.cpp
+++ b/juniper/src/vespa/juniper/result.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#define _NEED_SUMMARY_CONFIG_IMPL 1
#include "SummaryConfig.h"
diff --git a/juniper/src/vespa/juniper/result.h b/juniper/src/vespa/juniper/result.h
index 755a368da7f..f0dcf3d4335 100644
--- a/juniper/src/vespa/juniper/result.h
+++ b/juniper/src/vespa/juniper/result.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "queryhandle.h"
diff --git a/juniper/src/vespa/juniper/rewriter.h b/juniper/src/vespa/juniper/rewriter.h
index 7cd5337c548..92542da5acc 100644
--- a/juniper/src/vespa/juniper/rewriter.h
+++ b/juniper/src/vespa/juniper/rewriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/* $Id$ */
#pragma once
diff --git a/juniper/src/vespa/juniper/rpinterface.cpp b/juniper/src/vespa/juniper/rpinterface.cpp
index 07e30fe9794..75a441fb957 100644
--- a/juniper/src/vespa/juniper/rpinterface.cpp
+++ b/juniper/src/vespa/juniper/rpinterface.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rpinterface.h"
#include "juniperparams.h"
diff --git a/juniper/src/vespa/juniper/rpinterface.h b/juniper/src/vespa/juniper/rpinterface.h
index 027ebf90599..6cda324ae5c 100644
--- a/juniper/src/vespa/juniper/rpinterface.h
+++ b/juniper/src/vespa/juniper/rpinterface.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/* $Id$ */
#pragma once
diff --git a/juniper/src/vespa/juniper/simplemap.h b/juniper/src/vespa/juniper/simplemap.h
index 10e3dc7295b..079637de231 100644
--- a/juniper/src/vespa/juniper/simplemap.h
+++ b/juniper/src/vespa/juniper/simplemap.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <map>
diff --git a/juniper/src/vespa/juniper/specialtokenregistry.cpp b/juniper/src/vespa/juniper/specialtokenregistry.cpp
index 418ada10d10..cda8bc0fcd7 100644
--- a/juniper/src/vespa/juniper/specialtokenregistry.cpp
+++ b/juniper/src/vespa/juniper/specialtokenregistry.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "specialtokenregistry.h"
diff --git a/juniper/src/vespa/juniper/specialtokenregistry.h b/juniper/src/vespa/juniper/specialtokenregistry.h
index 36eca42476c..2240dcf65b0 100644
--- a/juniper/src/vespa/juniper/specialtokenregistry.h
+++ b/juniper/src/vespa/juniper/specialtokenregistry.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/juniper/src/vespa/juniper/stringmap.cpp b/juniper/src/vespa/juniper/stringmap.cpp
index f673f22e29c..3cb9e9b62e0 100644
--- a/juniper/src/vespa/juniper/stringmap.cpp
+++ b/juniper/src/vespa/juniper/stringmap.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "stringmap.h"
#include <vespa/vespalib/stllike/hashtable.hpp>
diff --git a/juniper/src/vespa/juniper/stringmap.h b/juniper/src/vespa/juniper/stringmap.h
index 068eeaf3d16..4b6265695ad 100644
--- a/juniper/src/vespa/juniper/stringmap.h
+++ b/juniper/src/vespa/juniper/stringmap.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/hash_map.h>
diff --git a/juniper/src/vespa/juniper/sumdesc.cpp b/juniper/src/vespa/juniper/sumdesc.cpp
index 2fab30b1bdb..1a27ffaefb0 100644
--- a/juniper/src/vespa/juniper/sumdesc.cpp
+++ b/juniper/src/vespa/juniper/sumdesc.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sumdesc.h"
#include "juniperdebug.h"
diff --git a/juniper/src/vespa/juniper/sumdesc.h b/juniper/src/vespa/juniper/sumdesc.h
index e80bf9ba9f2..d91bf160e04 100644
--- a/juniper/src/vespa/juniper/sumdesc.h
+++ b/juniper/src/vespa/juniper/sumdesc.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
/* $Id$ */
diff --git a/juniper/src/vespa/juniper/tokenizer.cpp b/juniper/src/vespa/juniper/tokenizer.cpp
index 3addd4eab65..db6e1ecfccd 100644
--- a/juniper/src/vespa/juniper/tokenizer.cpp
+++ b/juniper/src/vespa/juniper/tokenizer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
//
#include "tokenizer.h"
#include "juniperdebug.h"
diff --git a/juniper/src/vespa/juniper/tokenizer.h b/juniper/src/vespa/juniper/tokenizer.h
index fe0008f17f7..34ed1dba5bb 100644
--- a/juniper/src/vespa/juniper/tokenizer.h
+++ b/juniper/src/vespa/juniper/tokenizer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "specialtokenregistry.h"
diff --git a/linguistics-components/.gitignore b/linguistics-components/.gitignore
new file mode 100644
index 00000000000..8b990078588
--- /dev/null
+++ b/linguistics-components/.gitignore
@@ -0,0 +1,5 @@
+target
+*.iml
+*.ipr
+*.iws
+/pom.xml.build
diff --git a/linguistics-components/CMakeLists.txt b/linguistics-components/CMakeLists.txt
new file mode 100644
index 00000000000..b53c8001959
--- /dev/null
+++ b/linguistics-components/CMakeLists.txt
@@ -0,0 +1,5 @@
+# Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+install_fat_java_artifact(linguistics-components)
+
+install_config_definitions()
diff --git a/linguistics-components/OWNERS b/linguistics-components/OWNERS
new file mode 100644
index 00000000000..cd50f7a263a
--- /dev/null
+++ b/linguistics-components/OWNERS
@@ -0,0 +1,2 @@
+bratseth
+arnej27959
diff --git a/linguistics-components/README b/linguistics-components/README
new file mode 100644
index 00000000000..e26a51e2f53
--- /dev/null
+++ b/linguistics-components/README
@@ -0,0 +1,4 @@
+Java library for linguistic operations in Vespa.
+
+This API is pluggable - multiple implementations may be supplied.
+This module contains a default pure Java implementation, "simple". \ No newline at end of file
diff --git a/linguistics-components/abi-spec.json b/linguistics-components/abi-spec.json
new file mode 100644
index 00000000000..28025d84f25
--- /dev/null
+++ b/linguistics-components/abi-spec.json
@@ -0,0 +1,189 @@
+{
+ "com.yahoo.language.sentencepiece.Scoring": {
+ "superClass": "java.lang.Enum",
+ "interfaces": [],
+ "attributes": [
+ "public",
+ "final",
+ "enum"
+ ],
+ "methods": [
+ "public static com.yahoo.language.sentencepiece.Scoring[] values()",
+ "public static com.yahoo.language.sentencepiece.Scoring valueOf(java.lang.String)"
+ ],
+ "fields": [
+ "public static final enum com.yahoo.language.sentencepiece.Scoring highestScore",
+ "public static final enum com.yahoo.language.sentencepiece.Scoring fewestSegments"
+ ]
+ },
+ "com.yahoo.language.sentencepiece.SentencePieceConfig$Builder": {
+ "superClass": "java.lang.Object",
+ "interfaces": [
+ "com.yahoo.config.ConfigInstance$Builder"
+ ],
+ "attributes": [
+ "public"
+ ],
+ "methods": [
+ "public void <init>()",
+ "public void <init>(com.yahoo.language.sentencepiece.SentencePieceConfig)",
+ "public com.yahoo.language.sentencepiece.SentencePieceConfig$Builder collapseUnknowns(boolean)",
+ "public com.yahoo.language.sentencepiece.SentencePieceConfig$Builder scoring(com.yahoo.language.sentencepiece.SentencePieceConfig$Scoring$Enum)",
+ "public com.yahoo.language.sentencepiece.SentencePieceConfig$Builder model(com.yahoo.language.sentencepiece.SentencePieceConfig$Model$Builder)",
+ "public com.yahoo.language.sentencepiece.SentencePieceConfig$Builder model(java.util.List)",
+ "public final boolean dispatchGetConfig(com.yahoo.config.ConfigInstance$Producer)",
+ "public final java.lang.String getDefMd5()",
+ "public final java.lang.String getDefName()",
+ "public final java.lang.String getDefNamespace()",
+ "public final boolean getApplyOnRestart()",
+ "public final void setApplyOnRestart(boolean)",
+ "public com.yahoo.language.sentencepiece.SentencePieceConfig build()"
+ ],
+ "fields": [
+ "public java.util.List model"
+ ]
+ },
+ "com.yahoo.language.sentencepiece.SentencePieceConfig$Model$Builder": {
+ "superClass": "java.lang.Object",
+ "interfaces": [
+ "com.yahoo.config.ConfigBuilder"
+ ],
+ "attributes": [
+ "public"
+ ],
+ "methods": [
+ "public void <init>()",
+ "public void <init>(com.yahoo.language.sentencepiece.SentencePieceConfig$Model)",
+ "public com.yahoo.language.sentencepiece.SentencePieceConfig$Model$Builder language(java.lang.String)",
+ "public com.yahoo.language.sentencepiece.SentencePieceConfig$Model$Builder path(com.yahoo.config.FileReference)",
+ "public com.yahoo.language.sentencepiece.SentencePieceConfig$Model build()"
+ ],
+ "fields": []
+ },
+ "com.yahoo.language.sentencepiece.SentencePieceConfig$Model": {
+ "superClass": "com.yahoo.config.InnerNode",
+ "interfaces": [],
+ "attributes": [
+ "public",
+ "final"
+ ],
+ "methods": [
+ "public void <init>(com.yahoo.language.sentencepiece.SentencePieceConfig$Model$Builder)",
+ "public java.lang.String language()",
+ "public java.nio.file.Path path()"
+ ],
+ "fields": []
+ },
+ "com.yahoo.language.sentencepiece.SentencePieceConfig$Producer": {
+ "superClass": "java.lang.Object",
+ "interfaces": [
+ "com.yahoo.config.ConfigInstance$Producer"
+ ],
+ "attributes": [
+ "public",
+ "interface",
+ "abstract"
+ ],
+ "methods": [
+ "public abstract void getConfig(com.yahoo.language.sentencepiece.SentencePieceConfig$Builder)"
+ ],
+ "fields": []
+ },
+ "com.yahoo.language.sentencepiece.SentencePieceConfig$Scoring$Enum": {
+ "superClass": "java.lang.Enum",
+ "interfaces": [],
+ "attributes": [
+ "public",
+ "final",
+ "enum"
+ ],
+ "methods": [
+ "public static com.yahoo.language.sentencepiece.SentencePieceConfig$Scoring$Enum[] values()",
+ "public static com.yahoo.language.sentencepiece.SentencePieceConfig$Scoring$Enum valueOf(java.lang.String)"
+ ],
+ "fields": [
+ "public static final enum com.yahoo.language.sentencepiece.SentencePieceConfig$Scoring$Enum highestScore",
+ "public static final enum com.yahoo.language.sentencepiece.SentencePieceConfig$Scoring$Enum fewestSegments"
+ ]
+ },
+ "com.yahoo.language.sentencepiece.SentencePieceConfig$Scoring": {
+ "superClass": "com.yahoo.config.EnumNode",
+ "interfaces": [],
+ "attributes": [
+ "public",
+ "final"
+ ],
+ "methods": [
+ "public void <init>()",
+ "public void <init>(com.yahoo.language.sentencepiece.SentencePieceConfig$Scoring$Enum)"
+ ],
+ "fields": [
+ "public static final com.yahoo.language.sentencepiece.SentencePieceConfig$Scoring$Enum highestScore",
+ "public static final com.yahoo.language.sentencepiece.SentencePieceConfig$Scoring$Enum fewestSegments"
+ ]
+ },
+ "com.yahoo.language.sentencepiece.SentencePieceConfig": {
+ "superClass": "com.yahoo.config.ConfigInstance",
+ "interfaces": [],
+ "attributes": [
+ "public",
+ "final"
+ ],
+ "methods": [
+ "public static java.lang.String getDefMd5()",
+ "public static java.lang.String getDefName()",
+ "public static java.lang.String getDefNamespace()",
+ "public static java.lang.String getDefVersion()",
+ "public void <init>(com.yahoo.language.sentencepiece.SentencePieceConfig$Builder)",
+ "public boolean collapseUnknowns()",
+ "public com.yahoo.language.sentencepiece.SentencePieceConfig$Scoring$Enum scoring()",
+ "public java.util.List model()",
+ "public com.yahoo.language.sentencepiece.SentencePieceConfig$Model model(int)"
+ ],
+ "fields": [
+ "public static final java.lang.String CONFIG_DEF_MD5",
+ "public static final java.lang.String CONFIG_DEF_NAME",
+ "public static final java.lang.String CONFIG_DEF_NAMESPACE",
+ "public static final java.lang.String CONFIG_DEF_VERSION",
+ "public static final java.lang.String[] CONFIG_DEF_SCHEMA"
+ ]
+ },
+ "com.yahoo.language.sentencepiece.SentencePieceEmbedder$Builder": {
+ "superClass": "java.lang.Object",
+ "interfaces": [],
+ "attributes": [
+ "public"
+ ],
+ "methods": [
+ "public void <init>()",
+ "public void addModel(com.yahoo.language.Language, java.nio.file.Path)",
+ "public com.yahoo.language.sentencepiece.SentencePieceEmbedder$Builder addDefaultModel(java.nio.file.Path)",
+ "public java.util.Map getModels()",
+ "public com.yahoo.language.sentencepiece.SentencePieceEmbedder$Builder setCollapseUnknowns(boolean)",
+ "public boolean getCollapseUnknowns()",
+ "public com.yahoo.language.sentencepiece.SentencePieceEmbedder$Builder setScoring(com.yahoo.language.sentencepiece.Scoring)",
+ "public com.yahoo.language.sentencepiece.Scoring getScoring()",
+ "public com.yahoo.language.sentencepiece.SentencePieceEmbedder build()"
+ ],
+ "fields": []
+ },
+ "com.yahoo.language.sentencepiece.SentencePieceEmbedder": {
+ "superClass": "java.lang.Object",
+ "interfaces": [
+ "com.yahoo.language.process.Segmenter",
+ "com.yahoo.language.process.Embedder"
+ ],
+ "attributes": [
+ "public"
+ ],
+ "methods": [
+ "public void <init>(com.yahoo.language.sentencepiece.SentencePieceConfig)",
+ "public void <init>(com.yahoo.language.sentencepiece.SentencePieceEmbedder$Builder)",
+ "public java.util.List segment(java.lang.String, com.yahoo.language.Language)",
+ "public java.util.List embed(java.lang.String, com.yahoo.language.process.Embedder$Context)",
+ "public com.yahoo.tensor.Tensor embed(java.lang.String, com.yahoo.language.process.Embedder$Context, com.yahoo.tensor.TensorType)",
+ "public java.lang.String normalize(java.lang.String)"
+ ],
+ "fields": []
+ }
+} \ No newline at end of file
diff --git a/linguistics-components/pom.xml b/linguistics-components/pom.xml
new file mode 100644
index 00000000000..21482b83ca4
--- /dev/null
+++ b/linguistics-components/pom.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0"?>
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>com.yahoo.vespa</groupId>
+ <artifactId>parent</artifactId>
+ <version>7-SNAPSHOT</version>
+ <relativePath>../parent/pom.xml</relativePath>
+ </parent>
+ <artifactId>linguistics-components</artifactId>
+ <packaging>container-plugin</packaging>
+ <version>7-SNAPSHOT</version>
+ <dependencies>
+ <dependency>
+ <groupId>com.google.protobuf</groupId>
+ <artifactId>protobuf-java</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.yahoo.vespa</groupId>
+ <artifactId>component</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.yahoo.vespa</groupId>
+ <artifactId>linguistics</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.yahoo.vespa</groupId>
+ <artifactId>config-bundle</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.google.inject</groupId>
+ <artifactId>guice</artifactId>
+ <scope>provided</scope>
+ <classifier>no_aop</classifier>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.github.os72</groupId>
+ <artifactId>protoc-jar-maven-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>com.yahoo.vespa</groupId>
+ <artifactId>bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <compilerArgs>
+ <arg>-Xlint:rawtypes</arg>
+ <arg>-Xlint:unchecked</arg>
+ <arg>-Xlint:deprecation</arg>
+ <arg>-Werror</arg>
+ </compilerArgs>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>com.yahoo.vespa</groupId>
+ <artifactId>abi-check-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/Model.java b/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/Model.java
new file mode 100644
index 00000000000..74f300057dc
--- /dev/null
+++ b/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/Model.java
@@ -0,0 +1,60 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.language.sentencepiece;
+
+import com.yahoo.io.IOUtils;
+import com.yahoo.language.Language;
+import sentencepiece.SentencepieceModel;
+
+import java.io.IOException;
+import java.nio.file.Path;
+
+/**
+ * A SentencePiece model
+ *
+ * @author bratseth
+ */
+final class Model {
+
+ final Path source;
+ final Language language;
+ final float minScore;
+ final float maxScore;
+ final Trie tokens = new Trie();
+
+ Model(Language language, Path path) {
+ try {
+ this.source = path;
+ this.language = language;
+ var sp = SentencepieceModel.ModelProto.parseFrom(IOUtils.readFileBytes(path.toFile()));
+ float minScore = Float.MAX_VALUE;
+ float maxScore = Float.MIN_VALUE;
+ for (int i = 0; i < sp.getPiecesCount(); i++) {
+ var piece = sp.getPieces(i);
+ tokens.add(toTokenType(piece.getType()), i, piece.getPiece(), piece.getScore());
+ minScore = Math.min(piece.getScore(), minScore);
+ maxScore = Math.max(piece.getScore(), maxScore);
+ }
+ this.minScore = minScore;
+ this.maxScore = maxScore;
+ } catch (IOException e) {
+ throw new IllegalArgumentException("Could not read a SentencePiece model from " + path, e);
+ }
+ }
+
+ private static TokenType toTokenType(SentencepieceModel.ModelProto.SentencePiece.Type type) {
+ switch (type) {
+ case USER_DEFINED : return TokenType.userDefined;
+ case UNKNOWN : return TokenType.unknown;
+ case NORMAL : return TokenType.text;
+ case CONTROL : return TokenType.control;
+ case UNUSED : return TokenType.unused;
+ default : throw new IllegalArgumentException("Unknkown token type " + type);
+ }
+ }
+
+ @Override
+ public String toString() {
+ return "SentencePiece model for " + language + ": '" + source + "'";
+ }
+
+}
diff --git a/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/ResultBuilder.java b/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/ResultBuilder.java
new file mode 100644
index 00000000000..2141505374c
--- /dev/null
+++ b/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/ResultBuilder.java
@@ -0,0 +1,47 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.language.sentencepiece;
+
+/**
+ * Builds a result from a sentencepiece tokenization by being called for each segment in reverse
+ *
+ * @param <RESULTTYPE> the type of result this produces
+ * @author bratseth
+ */
+abstract class ResultBuilder<RESULTTYPE> {
+
+ private final RESULTTYPE result;
+
+ ResultBuilder(RESULTTYPE result) {
+ this.result = result;
+ }
+
+ /** Called for each segment, starting from the last and working backwards */
+ abstract void add(int start, int end, SentencePieceAlgorithm.SegmentEnd[] segmentEnds);
+
+ RESULTTYPE result() {return result;}
+
+ void build(String input, SentencePieceAlgorithm.SegmentEnd[] segmentEnds, boolean collapseUnknowns) {
+ if (collapseUnknowns) {
+ int segmentEnd = input.length();
+ int collapsedSegmentEnd = segmentEnd;
+ while (segmentEnd > 0) {
+ if (segmentEnds[segmentEnd].type != TokenType.unknown ) {
+ if (collapsedSegmentEnd != segmentEnd) { // We have deferred an unknown collapsed segment
+ add(segmentEnd, collapsedSegmentEnd, segmentEnds);
+ }
+ add(segmentEnds[segmentEnd].segmentStart, segmentEnd, segmentEnds);
+ collapsedSegmentEnd = segmentEnds[segmentEnd].segmentStart;
+ }
+ segmentEnd = segmentEnds[segmentEnd].segmentStart;
+ }
+ }
+ else {
+ int segmentEnd = input.length();
+ while (segmentEnd > 0) {
+ add(segmentEnds[segmentEnd].segmentStart, segmentEnd, segmentEnds);
+ segmentEnd = segmentEnds[segmentEnd].segmentStart;
+ }
+ }
+ }
+
+}
diff --git a/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/Scoring.java b/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/Scoring.java
new file mode 100644
index 00000000000..6c8560abee7
--- /dev/null
+++ b/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/Scoring.java
@@ -0,0 +1,17 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.language.sentencepiece;
+
+/**
+ * The scoring strategy to use for picking segments
+ *
+ * @author bratseth
+ */
+public enum Scoring {
+
+ /** Find the segmentation that has the highest score */
+ highestScore,
+
+ /** Find the segmentation that has the fewest segments, resolve ties by score sum */
+ fewestSegments
+
+}
diff --git a/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/SentencePieceAlgorithm.java b/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/SentencePieceAlgorithm.java
new file mode 100644
index 00000000000..1659e3c0fa7
--- /dev/null
+++ b/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/SentencePieceAlgorithm.java
@@ -0,0 +1,90 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.language.sentencepiece;
+
+/**
+ * SentencePiece algorithm implementation
+ *
+ * @author bratseth
+ */
+class SentencePieceAlgorithm {
+
+ // TODO: Support characters beyond BMP
+
+ static final char spaceSymbol = '▁';
+
+ private final boolean collapseUnknowns;
+ private final Scoring scoring;
+
+ SentencePieceAlgorithm(boolean collapseUnknowns, Scoring scoring) {
+ this.collapseUnknowns = collapseUnknowns;
+ this.scoring = scoring;
+ }
+
+ public <RESULTTYPE> void segment(String input, ResultBuilder<RESULTTYPE> resultBuilder, Model model) {
+ SegmentEnd[] segmentEnds = new SegmentEnd[input.length() + 1];
+ segmentEnds[0] = new SegmentEnd(TokenType.unknown, 0, 0, 0, 0);
+ int start = 0;
+ while (start < input.length()) { // segment from this position to the end of the text
+ Trie.Node node = model.tokens.root;
+ int characterPosition = start;
+ while (node != null && characterPosition < input.length()) { // traverse the trie one character at the time from this position
+ node = node.children.get(input.charAt(characterPosition++));
+ int length = characterPosition - start;
+ if (node != null && node.isToken() && node.type != TokenType.unused) {
+ float score = node.type == TokenType.userDefined ? (length * model.maxScore - 0.1f) : node.score;
+ addSegment(TokenType.text, node.id, start, characterPosition, score, segmentEnds);
+ }
+ else if (length == 1) { // add an 'unknown' length 1 token to make the next position reachable
+ addSegment(TokenType.unknown, 0, start, start + 1, model.minScore - 10.0f, segmentEnds);
+ }
+ }
+ start++;
+ }
+ resultBuilder.build(input, segmentEnds, collapseUnknowns);
+ }
+
+ private void addSegment(TokenType type, int id, int start, int end, float score, SegmentEnd[] segmentEnds) {
+ if (segmentEnds[end] == null ||
+ segmentEnds[start].scoreWith(score) > segmentEnds[end].score()) {
+ segmentEnds[end] = new SegmentEnd(type, id,
+ segmentEnds[start].pathScoreSum + score,
+ segmentEnds[start].pathSegmentCount + 1,
+ start);
+ }
+ }
+
+ final class SegmentEnd {
+
+ final TokenType type;
+ final int id;
+ final float pathScoreSum;
+ final int pathSegmentCount;
+ final int segmentStart;
+
+ SegmentEnd(TokenType type, int id, float pathScoreSum, int pathSegmentCount, int segmentStart) {
+ this.type = type;
+ this.id = id;
+ this.pathScoreSum = pathScoreSum;
+ this.pathSegmentCount = pathSegmentCount;
+ this.segmentStart = segmentStart;
+ }
+
+ public float score() {
+ switch (scoring) {
+ case fewestSegments: return 1f / pathSegmentCount * 10_000_000 + pathScoreSum;
+ case highestScore: return pathScoreSum;
+ default : throw new IllegalArgumentException("Unknown scoring " + scoring);
+ }
+ }
+
+ public float scoreWith(float additionalSegmentScore) {
+ switch (scoring) {
+ case fewestSegments: return 1f / (pathSegmentCount + 1) * 10_000_000 + (pathScoreSum + additionalSegmentScore );
+ case highestScore: return pathScoreSum + additionalSegmentScore;
+ default : throw new IllegalArgumentException("Unknown scoring " + scoring);
+ }
+ }
+
+ }
+
+}
diff --git a/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/SentencePieceEmbedder.java b/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/SentencePieceEmbedder.java
new file mode 100644
index 00000000000..3f4e8ee3462
--- /dev/null
+++ b/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/SentencePieceEmbedder.java
@@ -0,0 +1,223 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.language.sentencepiece;
+
+import com.google.common.annotations.Beta;
+import com.google.inject.Inject;
+import com.yahoo.language.Language;
+import com.yahoo.language.process.Embedder;
+import com.yahoo.language.process.Segmenter;
+import com.yahoo.tensor.Tensor;
+import com.yahoo.tensor.TensorAddress;
+import com.yahoo.tensor.TensorType;
+
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * A native Java implementation of SentencePiece - see https://github.com/google/sentencepiece
+ *
+ * SentencePiece is a language-agnostic segmenter and embedder for neural nets.
+ *
+ * @author bratseth
+ */
+@Beta
+public class SentencePieceEmbedder implements Segmenter, Embedder {
+
+ private final Map<Language, Model> models;
+
+ private final SentencePieceAlgorithm algorithm;
+
+ @Inject
+ public SentencePieceEmbedder(SentencePieceConfig config) {
+ this(new Builder(config));
+ }
+
+ public SentencePieceEmbedder(Builder builder) {
+ algorithm = new SentencePieceAlgorithm(builder.collapseUnknowns, builder.getScoring());
+
+ models = builder.getModels().entrySet()
+ .stream()
+ .map(e -> new Model(e.getKey(), e.getValue()))
+ .collect(Collectors.toUnmodifiableMap(m -> m.language, m -> m));
+ if (models.isEmpty())
+ throw new IllegalArgumentException("SentencePieceEmbedder requires at least one model configured");
+ }
+
+ /**
+ * Segments the given text into token segments using the SentencePiece algorithm
+ *
+ * @param rawInput the text to segment. Any sequence of BMP (Unicode-16 the True Unicode) is supported.
+ * @param language the model to use, or Language.UNKNOWN to use the default model if any
+ * @return the list of zero or more tokens resulting from segmenting the input text
+ */
+ @Override
+ public List<String> segment(String rawInput, Language language) {
+ String input = normalize(rawInput);
+ var resultBuilder = new ResultBuilder<List<String>>(new ArrayList<>()) {
+ public void add(int segmentStart, int segmentEnd, SentencePieceAlgorithm.SegmentEnd[] segmentEnds) {
+ result().add(input.substring(segmentStart, segmentEnd));
+ }
+ };
+ segment(input, language, resultBuilder);
+ Collections.reverse(resultBuilder.result());
+ return resultBuilder.result();
+ }
+
+ /**
+ * Segments the given text into token segments using the SentencePiece algorithm and returns the segment ids.
+ *
+ * @param rawInput the text to segment. Any sequence of BMP (Unicode-16 the True Unicode) is supported.
+ * @param context the context which specifies the language used to select a model
+ * @return the list of zero or more token ids resulting from segmenting the input text
+ */
+ @Override
+ public List<Integer> embed(String rawInput, Embedder.Context context) {
+ var resultBuilder = new ResultBuilder<List<Integer>>(new ArrayList<>()) {
+ public void add(int segmentStart, int segmentEnd, SentencePieceAlgorithm.SegmentEnd[] segmentEnds) {
+ result().add(segmentEnds[segmentEnd].id);
+ }
+ };
+ segment(normalize(rawInput), context.getLanguage(), resultBuilder);
+ Collections.reverse(resultBuilder.result());
+ return resultBuilder.result();
+ }
+
+ /**
+ * <p>Embeds text into a tensor.</p>
+ *
+ * <p>If the tensor type is indexed 1-d (bound or unbound) this will return a tensor containing the token ids in the order
+ * they were encountered in the text. If the dimension is bound and too large it will be zero padded, if too small
+ * it will be truncated.</p>
+ *
+ * <p>If the tensor type is1-d sparse this will return a tensor containing the token strings as keys and the token
+ * position as value.</p>
+ *
+ * <p>If the tensor is any other type IllegalArgumentException is thrown.</p>
+ *
+ * @param rawInput the text to segment. Any sequence of BMP (Unicode-16 the True Unicode) is supported.
+ * @param context the context which specifies the language used to select a model
+ * @return the list of zero or more token ids resulting from segmenting the input text
+ */
+ @Override
+ public Tensor embed(String rawInput, Embedder.Context context, TensorType type) {
+ if (type.dimensions().size() == 1 && type.dimensions().get(0).isIndexed()) {
+ // Build to a list first since we can't reverse a tensor builder
+ List<Integer> values = embed(rawInput, context);
+
+ long maxSize = values.size();
+ if (type.dimensions().get(0).size().isPresent())
+ maxSize = Math.min(maxSize, type.dimensions().get(0).size().get());
+
+ Tensor.Builder builder = Tensor.Builder.of(type);
+ for (int i = 0; i < maxSize; i++)
+ builder.cell(values.get(i), i);
+ return builder.build();
+ }
+ else if (type.dimensions().size() == 1 && type.dimensions().get(0).isMapped()) {
+ // Build to a list first since we can't reverse a tensor builder
+ List<String> values = segment(rawInput, context.getLanguage());
+
+ Tensor.Builder builder = Tensor.Builder.of(type);
+ for (int i = 0; i < values.size(); i++)
+ builder.cell(TensorAddress.ofLabels(values.get(i)), i);
+ return builder.build();
+ }
+ else {
+ throw new IllegalArgumentException("Don't know how to embed with SentencePiece into " + type);
+ }
+ }
+
+ private <RESULTTYPE> void segment(String input, Language language,
+ ResultBuilder<RESULTTYPE> resultBuilder) {
+ Model model = resolveFrom(language);
+ algorithm.segment(input, resultBuilder, model);
+ }
+
+ private Model resolveFrom(Language language) {
+ // Disregard language if there is default model
+ if (models.size() == 1 && models.containsKey(Language.UNKNOWN)) return models.get(Language.UNKNOWN);
+ if (models.containsKey(language)) return models.get(language);
+ throw new IllegalArgumentException("No SentencePiece model for language " + language + " is configured");
+ }
+
+ public String normalize(String s) {
+ StringBuilder b = new StringBuilder(s.length() + 1);
+ boolean queuedSpace = true; // Always start by one space
+ for (int i = 0; i < s.length(); i++) {
+ char c = s.charAt(i);
+ if (s.charAt(i) == ' ') {
+ queuedSpace = true;
+ }
+ else {
+ if (queuedSpace) {
+ b.append(SentencePieceAlgorithm.spaceSymbol);
+ queuedSpace = false;
+ }
+ b.append(c);
+ }
+ }
+ return b.toString();
+ }
+
+ public static class Builder {
+
+ private final Map<Language, Path> models = new HashMap<>();
+ private boolean collapseUnknowns = true;
+ private Scoring scoring = Scoring.fewestSegments;
+
+ public Builder() {
+ }
+
+ private Builder(SentencePieceConfig config) {
+ collapseUnknowns = config.collapseUnknowns();
+ scoring = config.scoring() == SentencePieceConfig.Scoring.fewestSegments ? Scoring.fewestSegments
+ : Scoring.highestScore;
+ for (SentencePieceConfig.Model model : config.model()) {
+ addModel(Language.fromLanguageTag(model.language()), model.path());
+ }
+ }
+
+ public void addModel(Language language, Path model) {
+ models.put(language, model);
+ }
+
+ /**
+ * Adds the model that will be used if the language is unknown, OR only one model is specified.
+ * The same as addModel(Language.UNKNOWN, model).
+ */
+ public Builder addDefaultModel(Path model) {
+ addModel(Language.UNKNOWN, model);
+ return this;
+ }
+ public Map<Language, Path> getModels() { return models; }
+
+ /**
+ * Sets whether consecutive unknown character should be collapsed into one large unknown token (default)
+ * or be returned as single character tokens.
+ */
+ public Builder setCollapseUnknowns(boolean collapseUnknowns) {
+ this.collapseUnknowns = collapseUnknowns;
+ return this;
+ }
+ public boolean getCollapseUnknowns() { return collapseUnknowns; }
+
+ /** Sets the scoring strategy to use when picking a segmentation. Default: fewestSegments. */
+ public Builder setScoring(Scoring scoring) {
+ this.scoring = scoring;
+ return this;
+ }
+ public Scoring getScoring() { return scoring; }
+
+ public SentencePieceEmbedder build() {
+ if (models.isEmpty()) throw new IllegalStateException("At least one model must be supplied");
+ return new SentencePieceEmbedder(this);
+ }
+
+ }
+
+}
diff --git a/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/TokenType.java b/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/TokenType.java
new file mode 100644
index 00000000000..782030a8e4d
--- /dev/null
+++ b/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/TokenType.java
@@ -0,0 +1,13 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.language.sentencepiece;
+
+/**
+ * SentencePiece token types
+ *
+ * @author bratseth
+ */
+enum TokenType {
+
+ text, control, userDefined, unknown, unused
+
+}
diff --git a/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/Trie.java b/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/Trie.java
new file mode 100644
index 00000000000..8e7c2db2ed3
--- /dev/null
+++ b/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/Trie.java
@@ -0,0 +1,36 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.language.sentencepiece;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * A simple trie for sentencepiece token lookups.
+ *
+ * @author bratseth
+ */
+class Trie {
+
+ final Node root = new Node();
+
+ void add(TokenType type, int id, String word, float score) {
+ Node current = root;
+ for (char l : word.toCharArray())
+ current = current.children.computeIfAbsent(l, c -> new Node());
+ current.type = type;
+ current.id = id;
+ current.score = score;
+ }
+
+ static class Node {
+
+ Integer id;
+ TokenType type;
+ Float score;
+ final Map<Character, Node> children = new HashMap<>();
+
+ boolean isToken() { return type != null; }
+
+ }
+
+}
diff --git a/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/package-info.java b/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/package-info.java
new file mode 100644
index 00000000000..3f97277c489
--- /dev/null
+++ b/linguistics-components/src/main/java/com/yahoo/language/sentencepiece/package-info.java
@@ -0,0 +1,7 @@
+// Copyright 2021 Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+@ExportPackage
+@PublicApi
+package com.yahoo.language.sentencepiece;
+
+import com.yahoo.api.annotations.PublicApi;
+import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/linguistics-components/src/main/protobuf/sentencepiece_model.proto b/linguistics-components/src/main/protobuf/sentencepiece_model.proto
new file mode 100644
index 00000000000..39626aede53
--- /dev/null
+++ b/linguistics-components/src/main/protobuf/sentencepiece_model.proto
@@ -0,0 +1,310 @@
+// Copyright 2016 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.!
+
+syntax = "proto2";
+
+// TODO(taku): Needs to use LITE RUNTIME in OSS release.
+option optimize_for = LITE_RUNTIME;
+
+package sentencepiece;
+
+// TrainerSpec encodes a various parameters for SentencePiece training.
+message TrainerSpec {
+ ///////////////////////////////////////////////////////////////////
+ // General parameters
+ //
+ // Input corpus files.
+ // Trainer accepts the following two formats:
+ // A) Monolingual: plain text, one sentence per line.
+ // B) Bilingual: TSV, source sentence <tab> target sentence
+ // When bilingual data is passed, shared vocabulary model is built.
+ // Note that the input file must be raw corpus, not a preprocessed corpus.
+ // Trainer only loads the first `input_sentence_size` sentences specified
+ // with this parameter.
+ repeated string input = 1;
+
+ // Input corpus format:
+ // "text": one-sentence-per-line text format (default)
+ // "tsv": sentence <tab> freq
+ optional string input_format = 7;
+
+ // Output model file prefix.
+ // <model_prefix>.model and <model_prefix>.vocab are generated.
+ optional string model_prefix = 2;
+
+ // Model type. only have UNIGRAM now.
+ enum ModelType {
+ UNIGRAM = 1; // Unigram language model with dynamic algorithm
+ BPE = 2; // Byte Pair Encoding
+ WORD = 3; // Delimitered by whitespace.
+ CHAR = 4; // tokenizes into character sequence
+ }
+ optional ModelType model_type = 3 [default = UNIGRAM];
+
+ // Vocabulary size. 8k is the default size.
+ optional int32 vocab_size = 4 [default = 8000];
+
+ // List of the languages this model can accept.
+ // Since the model is language-agnostic, this field is used as a reference.
+ repeated string accept_language = 5;
+
+ // Size of self-test samples, which are encoded in the model file.
+ optional int32 self_test_sample_size = 6 [default = 0];
+
+ ///////////////////////////////////////////////////////////////////
+ // Training parameters.
+ //
+ // Uses characters which cover the corpus with the ratio of `chars_coverage`.
+ // This parameter determines the set of basic Alphabet of sentence piece.
+ // 1.0 - `chars_coverage` characters are treated as UNK.
+ // See also required_chars field.
+ optional float character_coverage = 10 [default = 0.9995];
+
+ // Maximum size of sentences the trainer loads from `input` parameter.
+ // Trainer simply loads the `input` files in sequence.
+ // It is better to shuffle the input corpus randomly.
+ optional uint64 input_sentence_size = 11 [default = 0];
+ optional bool shuffle_input_sentence = 19 [default = true];
+
+ // Maximum size of sentences to make seed sentence pieces.
+ // Extended suffix array is constructed to extract frequent
+ // sub-strings from the corpus. This uses 20N working space,
+ // where N is the size of corpus.
+ optional int32 mining_sentence_size = 12 [deprecated = true];
+
+ // Maximum size of sentences to train sentence pieces.
+ optional int32 training_sentence_size = 13 [deprecated = true];
+
+ // The size of seed sentencepieces.
+ // `seed_sentencepiece_size` must be larger than `vocab_size`.
+ optional int32 seed_sentencepiece_size = 14 [default = 1000000];
+
+ // In every EM sub-iterations, keeps top
+ // `shrinking_factor` * `current sentencepieces size` with respect to
+ // the loss of the sentence piece. This value should be smaller than 1.0.
+ optional float shrinking_factor = 15 [default = 0.75];
+
+ // The maximum sentence length in byte. The sentences with the length
+ // larger than `max_sentence_length` is simply ignored.
+ // Longer input tends to bring the following risks:
+ // * Overflow during EM training (unigram language model only)
+ // * Performance drop because of O(n log n) cost in BPE.
+ optional int32 max_sentence_length = 18 [default = 4192];
+
+ // Number of threads in the training.
+ optional int32 num_threads = 16 [default = 16];
+
+ // Number of EM sub iterations.
+ optional int32 num_sub_iterations = 17 [default = 2];
+
+ ///////////////////////////////////////////////////////////////////
+ // SentencePiece parameters which control the shapes of sentence piece.
+ //
+ // Maximum length of sentencepiece.
+ optional int32 max_sentencepiece_length = 20 [default = 16];
+
+ // Uses Unicode script to split sentence pieces.
+ // When `split_by_unicode_script` is true, we do not allow sentence piece to
+ // include multiple Unicode scripts, e.g. "F1" is not a valid piece.
+ // Exception: CJ characters (Hiragana/Katakana/Han) are all handled
+ // as one script type, since Japanese word can consist of multiple scripts.
+ // This exception is always applied regardless of the accept-language
+ // parameter.
+ optional bool split_by_unicode_script = 21 [default = true];
+
+ // When `split_by_number` is true, put a boundary between number and
+ // non-number transition. If we want to treat "F1" is one token, set this flag
+ // to be false.
+ optional bool split_by_number = 23 [default = true];
+
+ // Use a white space to split sentence pieces.
+ // When `split_by_whitespace` is false, we may have the piece containing
+ // a white space in the middle. e.g., "in_the".
+ optional bool split_by_whitespace = 22 [default = true];
+
+ // Adds whitespace symbol (_) as a suffix instead of prefix. e.g., _hello =>
+ // hello_. When `treat_whitespace_as_suffix` is true,
+ // NormalizerSpec::add_dummy_prefix will add the dummy whitespace to the end
+ // of sentence.
+ optional bool treat_whitespace_as_suffix = 24 [default = false];
+
+ // Allows pieces that only contain whitespaces instead of appearing only as
+ // prefix or suffix of other pieces.
+ optional bool allow_whitespace_only_pieces = 26 [default = false];
+
+ // Split all digits (0-9) into separate pieces.
+ optional bool split_digits = 25 [default = false];
+
+ ///////////////////////////////////////////////////////////////////
+ // Vocabulary management
+ //
+ // Defines control symbols used as an indicator to
+ // change the behavior of the decoder. <s> and </s> are pre-defined.
+ // We can use this field to encode various meta information,
+ // including language indicator in multilingual model.
+ // These symbols are not visible to users, but visible to
+ // the decoder. Note that when the input sentence contains control symbols,
+ // they are not treated as one token, but segmented into normal pieces.
+ // Control symbols must be inserted independently from the segmentation.
+ repeated string control_symbols = 30;
+
+ // Defines user defined symbols.
+ // These symbols are added with extremely high score
+ // so they are always treated as one unique symbol in any context.
+ // Typical usage of user_defined_symbols is placeholder for named entities.
+ repeated string user_defined_symbols = 31;
+
+ // Defines required characters. Each UTF8 character in this string is included
+ // in the character set regardless of character_coverage value. Unlike
+ // user_defined_symbols, these characters have scores based on the frequency
+ // on input sentences, and the model can form subwords using characters
+ // in this field.
+ optional string required_chars = 36;
+
+ // Decomposes unknown pieces into UTF-8 bytes.
+ optional bool byte_fallback = 35 [default = false];
+
+ // When creating the vocabulary file, defines whether or not to additionally
+ // output the score for each piece.
+ optional bool vocabulary_output_piece_score = 32 [default = true];
+
+ // `vocab_size` is treated as hard limit. Crash if
+ // the model can not produce the vocab of size `vocab_size`,
+ // When `hard_vocab_limit` is false, vocab_size is treated
+ // as soft limit. Note that when model_type=char,
+ // always assumes hard_vocab_limit = false.
+ optional bool hard_vocab_limit = 33 [default = true];
+
+ // use all symbols for vocab extraction. This flag is valid
+ // if model type is either CHAR or WORD
+ optional bool use_all_vocab = 34 [default = false];
+
+ ///////////////////////////////////////////////////////////////////
+ // Reserved special meta tokens.
+ // * -1 is not used.
+ // * unk_id must not be -1.
+ // Id must starts with 0 and be contigous.
+ optional int32 unk_id = 40 [default = 0]; // <unk>
+ optional int32 bos_id = 41 [default = 1]; // <s>
+ optional int32 eos_id = 42 [default = 2]; // </s>
+ optional int32 pad_id = 43 [default = -1]; // <pad> (padding)
+ optional string unk_piece = 45 [default = "<unk>"];
+ optional string bos_piece = 46 [default = "<s>"];
+ optional string eos_piece = 47 [default = "</s>"];
+ optional string pad_piece = 48 [default = "<pad>"];
+
+ // Encodes <unk> into U+2047 (DOUBLE QUESTION MARK),
+ // since this character can be useful both for user and
+ // developer. We can easily figure out that <unk> is emitted.
+ optional string unk_surface = 44 [default = " \xE2\x81\x87 "];
+
+ // Increase bit depth to allow unigram model training on large
+ // (>10M sentences) corpora. A Side-effect of enabling this flag
+ // is increased memory usage.
+ optional bool train_extremely_large_corpus = 49 [default = false];
+
+ // Customized extensions: the range of field numbers
+ // are open to third-party extensions.
+ extensions 200 to max;
+}
+
+// NormalizerSpec encodes a various parameters for string normalizaiton
+message NormalizerSpec {
+ // name of normalization rule.
+ optional string name = 1;
+
+ // Pre-compiled normalization rule created by
+ // Builder::GetPrecompiledCharsMap() or Builder::CompileCharsMap() method.
+ // Usually this field is set by Builder::GetNormalizerSpec() method.
+ optional bytes precompiled_charsmap = 2;
+
+ // Adds dummy whitespace at the beginning of text in order to
+ // treat "world" in "world" and "hello world" in the same way.
+ optional bool add_dummy_prefix = 3 [default = true];
+
+ // Removes leading, trailing, and duplicate internal whitespace.
+ optional bool remove_extra_whitespaces = 4 [default = true];
+
+ // Replaces whitespace with meta symbol.
+ // This field must be true to train sentence piece model.
+ optional bool escape_whitespaces = 5 [default = true];
+
+ // Custom normalization rule file in TSV format.
+ // https://github.com/google/sentencepiece/blob/master/doc/normalization.md
+ // This field is only used in SentencePieceTrainer::Train() method, which
+ // compiles the rule into the binary rule stored in `precompiled_charsmap`.
+ optional string normalization_rule_tsv = 6;
+
+ // Customized extensions: the range of field numbers
+ // are open to third-party extensions.
+ extensions 200 to max;
+}
+
+// Proto to store samples for self-testing.
+message SelfTestData {
+ message Sample {
+ optional string input = 1;
+ optional string expected = 2;
+ }
+ repeated Sample samples = 1;
+
+ // Customized extensions: the range of field numbers
+ // are open to third-party extensions.
+ extensions 200 to max;
+}
+
+// ModelProto stores model parameters.
+// SentencePieceProcessor is supposed to be self-contained.
+// All settings/parameters which may change the behavior must be encoded
+// in ModelProto.
+message ModelProto {
+ message SentencePiece {
+ enum Type {
+ NORMAL = 1; // normal symbol
+ UNKNOWN = 2; // unknown symbol. only <unk> for now.
+ CONTROL = 3; // control symbols. </s>, <s>, <2ja> etc.
+ USER_DEFINED = 4; // user defined symbols.
+ // Typical usage of USER_DEFINED symbol
+ // is placeholder.
+ BYTE = 6; // byte symbols. Used when `byte_fallback` is true.
+ UNUSED = 5; // this piece is not used.
+ }
+ optional string piece = 1; // piece must not be empty.
+ optional float score = 2;
+ optional Type type = 3 [default = NORMAL];
+
+ // Customized extensions: the range of field numbers
+ // are open to third-party extensions.
+ extensions 200 to max;
+ }
+
+ // Sentence pieces with scores.
+ repeated SentencePiece pieces = 1;
+
+ // Spec used to generate this model file.
+ optional TrainerSpec trainer_spec = 2;
+
+ // Spec for text normalization.
+ optional NormalizerSpec normalizer_spec = 3;
+
+ // Stores sample input and its expected segmentation to verify the model.
+ optional SelfTestData self_test_data = 4;
+
+ // Spec for text de-normalization.
+ optional NormalizerSpec denormalizer_spec = 5;
+
+ // Customized extensions: the range of field numbers
+ // are open to third-party extensions.
+ extensions 200 to max;
+} \ No newline at end of file
diff --git a/linguistics-components/src/main/resources/configdefinitions/language.sentencepiece.sentence-piece.def b/linguistics-components/src/main/resources/configdefinitions/language.sentencepiece.sentence-piece.def
new file mode 100644
index 00000000000..16ada78688a
--- /dev/null
+++ b/linguistics-components/src/main/resources/configdefinitions/language.sentencepiece.sentence-piece.def
@@ -0,0 +1,18 @@
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+# Configures com.yahoo.language.sentencepiece.SentencePieceEmbedder
+
+namespace=language.sentencepiece
+
+# Whether consecutive unknown character should be collapsed into one large unknown token (default
+# or be returned as single character tokens.
+collapseUnknowns bool default=true
+
+# The scoring strategy to use when picking a segmentation.
+scoring enum { highestScore, fewestSegments } default=fewestSegments
+
+# The language a model is for, one of the language tags in com.yahoo.language.Language.
+# Use "unknown" for models to be used with any language.
+model[].language string
+# The path to the model relative to the application package root
+model[].path path \ No newline at end of file
diff --git a/linguistics-components/src/test/java/com/yahoo/language/sentencepiece/SentencePieceConfigurationTest.java b/linguistics-components/src/test/java/com/yahoo/language/sentencepiece/SentencePieceConfigurationTest.java
new file mode 100644
index 00000000000..1ed2271f774
--- /dev/null
+++ b/linguistics-components/src/test/java/com/yahoo/language/sentencepiece/SentencePieceConfigurationTest.java
@@ -0,0 +1,59 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+package com.yahoo.language.sentencepiece;
+
+import com.yahoo.config.FileReference;
+import com.yahoo.language.Language;
+import org.junit.Test;
+
+/**
+ * @author bratseth
+ */
+public class SentencePieceConfigurationTest {
+
+ @Test
+ public void testEnglishTokenization() {
+ var b = new SentencePieceConfig.Builder();
+ addModel("unknown", "src/test/models/sentencepiece/en.wiki.bpe.vs10000.model", b);
+ var tester = new SentencePieceTester(new SentencePieceEmbedder(b.build()));
+ tester.assertSegmented("this is another sentence", "▁this", "▁is", "▁another", "▁sentence");
+ tester.assertSegmented("KHJKJHHKJHHSH hello", "▁", "KHJKJHHKJHHSH", "▁hel", "lo");
+ }
+
+ @Test
+ public void testNoCollapse() {
+ var b = new SentencePieceConfig.Builder();
+ addModel("unknown", "src/test/models/sentencepiece/en.wiki.bpe.vs10000.model", b);
+ b.collapseUnknowns(false);
+ var tester = new SentencePieceTester(new SentencePieceEmbedder(b.build()));
+ tester.assertSegmented("KHJ hello", "▁", "K", "H", "J", "▁hel", "lo");
+ }
+
+ @Test
+ public void testHighestScore() {
+ var b = new SentencePieceConfig.Builder();
+ addModel("unknown", "src/test/models/sentencepiece/en.wiki.bpe.vs10000.model", b);
+ b.scoring(SentencePieceConfig.Scoring.highestScore);
+ var tester = new SentencePieceTester(new SentencePieceEmbedder(b.build()));
+ tester.assertSegmented("hello", "▁h", "el", "lo");
+ }
+
+ @Test
+ public void testMultiLanguageTokenization() {
+ var b = new SentencePieceConfig.Builder();
+ addModel("ja", "src/test/models/sentencepiece/ja.wiki.bpe.vs5000.model", b);
+ addModel("en", "src/test/models/sentencepiece/en.wiki.bpe.vs10000.model", b);
+ var tester = new SentencePieceTester(new SentencePieceEmbedder(b.build()));
+ tester.assertSegmented(Language.JAPANESE, "いくつかの通常のテキスト", "▁", "いく", "つか", "の", "通常", "の", "テ", "キ", "スト");
+ tester.assertSegmented(Language.ENGLISH, "hello", "▁hel", "lo");
+ tester.assertSegmented(Language.JAPANESE, "hello", "▁h", "ell", "o");
+ }
+
+ private void addModel(String language, String file, SentencePieceConfig.Builder b) {
+ var mb = new SentencePieceConfig.Model.Builder();
+ mb.language(language);
+ mb.path(new FileReference(file));
+ b.model(mb);
+ }
+
+}
diff --git a/linguistics-components/src/test/java/com/yahoo/language/sentencepiece/SentencePieceTest.java b/linguistics-components/src/test/java/com/yahoo/language/sentencepiece/SentencePieceTest.java
new file mode 100644
index 00000000000..939f8ebe9d3
--- /dev/null
+++ b/linguistics-components/src/test/java/com/yahoo/language/sentencepiece/SentencePieceTest.java
@@ -0,0 +1,89 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+package com.yahoo.language.sentencepiece;
+
+import com.yahoo.language.Language;
+import org.junit.Test;
+
+import java.io.File;
+
+/**
+ * @author bratseth
+ */
+public class SentencePieceTest {
+
+ @Test
+ public void testEnglishTokenization() {
+ var tester = new SentencePieceTester(new File("src/test/models/sentencepiece/en.wiki.bpe.vs10000.model").toPath());
+ tester.assertSegmented("h", "▁h");
+ tester.assertSegmented("he", "▁he");
+ tester.assertSegmented("hel", "▁hel");
+ tester.assertSegmented("hello", "▁hel", "lo");
+ tester.assertSegmented("hei", "▁he", "i");
+ tester.assertSegmented("hei you", "▁he", "i", "▁you");
+ tester.assertSegmented("hei you", "▁he", "i", "▁you");
+ tester.assertSegmented("this is another sentence", "▁this", "▁is", "▁another", "▁sentence");
+ tester.assertSegmented("hello world!", "▁hel", "lo", "▁world", "!");
+ tester.assertSegmented("Hello, world!", "▁", "H", "ello", ",", "▁world", "!");
+ tester.assertSegmented("HELLO, world!", "▁", "HELLO", ",", "▁world", "!");
+ tester.assertSegmented("KHJKJHHKJHHSH", "▁", "KHJKJHHKJHHSH");
+ tester.assertSegmented("KHJKJHHKJHHSH hello", "▁", "KHJKJHHKJHHSH", "▁hel", "lo");
+ tester.assertSegmented(" hello ", "▁hel", "lo");
+ tester.assertSegmented(")(/&#()/\"\")", "▁)", "(", "/", "&", "#", "(", ")", "/", "\"", "\")");
+ tester.assertSegmented(")(/&#(small)/\"in quotes\")", "▁)", "(", "/", "&", "#", "(", "sm", "all", ")", "/", "\"", "in", "▁qu", "otes", "\")");
+ tester.assertSegmented("x.400AS", "▁x", ".", "4", "00", "AS");
+ tester.assertSegmented("A normal sentence. Yes one more.", "▁", "A", "▁normal", "▁sentence", ".", "▁", "Y", "es", "▁one", "▁more", ".");
+ }
+
+ @Test
+ public void testIntegerListEncoding() {
+ var tester = new SentencePieceTester(new File("src/test/models/sentencepiece/en.wiki.bpe.vs10000.model").toPath());
+ tester.assertEmbedded("hello, world!", 908, 1418, 9934, 501, 9960);
+ tester.assertEmbedded("Hello, world!", 9912, 0, 6595, 9934, 501, 9960);
+ }
+
+ @Test
+ public void testDenseTensorEncoding() {
+ var tester = new SentencePieceTester(new File("src/test/models/sentencepiece/en.wiki.bpe.vs10000.model").toPath());
+ tester.assertEmbedded("hello, world!", "tensor(d[10])", "[908,1418,9934,501,9960,0,0,0,0,0]");
+ tester.assertEmbedded("Hello, world!", "tensor(d[10])", "[9912,0,6595,9934,501,9960,0,0,0,0]");
+ tester.assertEmbedded("hello, world!", "tensor(d[2])", "[908,1418]");
+ }
+
+ @Test
+ public void testSparseTensorEncoding() {
+ var tester = new SentencePieceTester(new File("src/test/models/sentencepiece/en.wiki.bpe.vs10000.model").toPath());
+ tester.assertEmbedded("hello", "tensor(token{})", "{lo:1.0,'▁hel':0.0}");
+ }
+
+ @Test
+ public void testNoCollapse() {
+ var tester = new SentencePieceTester(new SentencePieceEmbedder.Builder()
+ .addDefaultModel(new File("src/test/models/sentencepiece/en.wiki.bpe.vs10000.model").toPath())
+ .setCollapseUnknowns(false));
+ tester.assertSegmented("KHJ hello", "▁", "K", "H", "J", "▁hel", "lo");
+ }
+
+ @Test
+ public void testHighestScore() {
+ var tester = new SentencePieceTester(new SentencePieceEmbedder.Builder()
+ .addDefaultModel(new File("src/test/models/sentencepiece/en.wiki.bpe.vs10000.model").toPath())
+ .setScoring(Scoring.highestScore));
+ tester.assertSegmented("h", "▁h");
+ tester.assertSegmented("he", "▁he");
+ tester.assertSegmented("hel", "▁h", "el");
+ tester.assertSegmented("hello", "▁h", "el", "lo");
+ }
+
+ @Test
+ public void testMultiLanguageTokenization() {
+ SentencePieceEmbedder.Builder builder = new SentencePieceEmbedder.Builder();
+ builder.addModel(Language.JAPANESE, new File("src/test/models/sentencepiece/ja.wiki.bpe.vs5000.model").toPath());
+ builder.addModel(Language.ENGLISH, new File("src/test/models/sentencepiece/en.wiki.bpe.vs10000.model").toPath());
+ var tester = new SentencePieceTester(builder);
+ tester.assertSegmented(Language.JAPANESE, "いくつかの通常のテキスト", "▁", "いく", "つか", "の", "通常", "の", "テ", "キ", "スト");
+ tester.assertSegmented(Language.ENGLISH, "hello", "▁hel", "lo");
+ tester.assertSegmented(Language.JAPANESE, "hello", "▁h", "ell", "o");
+ }
+
+}
diff --git a/linguistics-components/src/test/java/com/yahoo/language/sentencepiece/SentencePieceTester.java b/linguistics-components/src/test/java/com/yahoo/language/sentencepiece/SentencePieceTester.java
new file mode 100644
index 00000000000..4dae53c60df
--- /dev/null
+++ b/linguistics-components/src/test/java/com/yahoo/language/sentencepiece/SentencePieceTester.java
@@ -0,0 +1,50 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+//
+
+package com.yahoo.language.sentencepiece;
+
+import com.yahoo.language.Language;
+import com.yahoo.language.process.Embedder;
+import com.yahoo.tensor.Tensor;
+import com.yahoo.tensor.TensorType;
+
+import java.nio.file.Path;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+
+class SentencePieceTester {
+
+ private final SentencePieceEmbedder embedder;
+
+ public SentencePieceTester(Path model) {
+ this(new SentencePieceEmbedder.Builder().addDefaultModel(model));
+ }
+
+ public SentencePieceTester(SentencePieceEmbedder.Builder builder) {
+ this(builder.build());
+ }
+
+ public SentencePieceTester(SentencePieceEmbedder embedder) {
+ this.embedder = embedder;
+ }
+
+ public void assertEmbedded(String input, Integer... expectedCodes) {
+ assertArrayEquals(expectedCodes, embedder.embed(input, new Embedder.Context("test")).toArray());
+ }
+
+ public void assertEmbedded(String input, String tensorType, String tensor) {
+ TensorType type = TensorType.fromSpec(tensorType);
+ Tensor expected = Tensor.from(type, tensor);
+ assertEquals(expected, embedder.embed(input, new Embedder.Context("test"), type));
+ }
+
+ public void assertSegmented(String input, String... expectedSegments) {
+ assertSegmented(Language.UNKNOWN, input, expectedSegments);
+ }
+
+ public void assertSegmented(Language language, String input, String... expectedSegments) {
+ assertArrayEquals(expectedSegments, embedder.segment(input, language).toArray());
+ }
+
+}
diff --git a/linguistics-components/src/test/models/sentencepiece/en.wiki.bpe.vs10000.model b/linguistics-components/src/test/models/sentencepiece/en.wiki.bpe.vs10000.model
new file mode 100644
index 00000000000..89f93ef3517
--- /dev/null
+++ b/linguistics-components/src/test/models/sentencepiece/en.wiki.bpe.vs10000.model
Binary files differ
diff --git a/linguistics-components/src/test/models/sentencepiece/ja.wiki.bpe.vs5000.model b/linguistics-components/src/test/models/sentencepiece/ja.wiki.bpe.vs5000.model
new file mode 100644
index 00000000000..41c0688d9df
--- /dev/null
+++ b/linguistics-components/src/test/models/sentencepiece/ja.wiki.bpe.vs5000.model
Binary files differ
diff --git a/linguistics/abi-spec.json b/linguistics/abi-spec.json
index b77b03664d4..31612bea983 100644
--- a/linguistics/abi-spec.json
+++ b/linguistics/abi-spec.json
@@ -210,7 +210,8 @@
"public abstract com.yahoo.language.process.Segmenter getSegmenter()",
"public abstract com.yahoo.language.detect.Detector getDetector()",
"public abstract com.yahoo.language.process.GramSplitter getGramSplitter()",
- "public abstract com.yahoo.language.process.CharacterClasses getCharacterClasses()"
+ "public abstract com.yahoo.language.process.CharacterClasses getCharacterClasses()",
+ "public abstract boolean equals(com.yahoo.language.Linguistics)"
],
"fields": []
},
@@ -327,6 +328,52 @@
],
"fields": []
},
+ "com.yahoo.language.process.Embedder$Context": {
+ "superClass": "java.lang.Object",
+ "interfaces": [],
+ "attributes": [
+ "public"
+ ],
+ "methods": [
+ "public void <init>(java.lang.String)",
+ "public com.yahoo.language.Language getLanguage()",
+ "public com.yahoo.language.process.Embedder$Context setLanguage(com.yahoo.language.Language)",
+ "public java.lang.String getDestination()",
+ "public com.yahoo.language.process.Embedder$Context setDestination(java.lang.String)"
+ ],
+ "fields": []
+ },
+ "com.yahoo.language.process.Embedder$FailingEmbedder": {
+ "superClass": "java.lang.Object",
+ "interfaces": [
+ "com.yahoo.language.process.Embedder"
+ ],
+ "attributes": [
+ "public"
+ ],
+ "methods": [
+ "public void <init>()",
+ "public java.util.List embed(java.lang.String, com.yahoo.language.process.Embedder$Context)",
+ "public com.yahoo.tensor.Tensor embed(java.lang.String, com.yahoo.language.process.Embedder$Context, com.yahoo.tensor.TensorType)"
+ ],
+ "fields": []
+ },
+ "com.yahoo.language.process.Embedder": {
+ "superClass": "java.lang.Object",
+ "interfaces": [],
+ "attributes": [
+ "public",
+ "interface",
+ "abstract"
+ ],
+ "methods": [
+ "public abstract java.util.List embed(java.lang.String, com.yahoo.language.process.Embedder$Context)",
+ "public abstract com.yahoo.tensor.Tensor embed(java.lang.String, com.yahoo.language.process.Embedder$Context, com.yahoo.tensor.TensorType)"
+ ],
+ "fields": [
+ "public static final com.yahoo.language.process.Embedder throwsOnUse"
+ ]
+ },
"com.yahoo.language.process.GramSplitter$Gram": {
"superClass": "java.lang.Object",
"interfaces": [],
diff --git a/linguistics/pom.xml b/linguistics/pom.xml
index 3cc430dacc6..a09f2ecb031 100644
--- a/linguistics/pom.xml
+++ b/linguistics/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
@@ -69,6 +69,10 @@
<build>
<plugins>
<plugin>
+ <groupId>com.github.os72</groupId>
+ <artifactId>protoc-jar-maven-plugin</artifactId>
+ </plugin>
+ <plugin>
<groupId>com.yahoo.vespa</groupId>
<artifactId>bundle-plugin</artifactId>
<extensions>true</extensions>
diff --git a/linguistics/src/main/java/com/yahoo/language/Language.java b/linguistics/src/main/java/com/yahoo/language/Language.java
index 59a5003e7fd..9f60985c119 100644
--- a/linguistics/src/main/java/com/yahoo/language/Language.java
+++ b/linguistics/src/main/java/com/yahoo/language/Language.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language;
import com.yahoo.text.Lowercase;
diff --git a/linguistics/src/main/java/com/yahoo/language/Linguistics.java b/linguistics/src/main/java/com/yahoo/language/Linguistics.java
index 3fdd06cff0a..791bc5dabcf 100644
--- a/linguistics/src/main/java/com/yahoo/language/Linguistics.java
+++ b/linguistics/src/main/java/com/yahoo/language/Linguistics.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language;
import com.yahoo.language.detect.Detector;
@@ -86,4 +86,7 @@ public interface Linguistics {
/** Returns a thread-unsafe character classes instance. */
CharacterClasses getCharacterClasses();
+ /** Check if another instance is equivalent to this one */
+ boolean equals(Linguistics other);
+
}
diff --git a/linguistics/src/main/java/com/yahoo/language/LinguisticsCase.java b/linguistics/src/main/java/com/yahoo/language/LinguisticsCase.java
index 174d16fbd67..3c7db88d9a9 100644
--- a/linguistics/src/main/java/com/yahoo/language/LinguisticsCase.java
+++ b/linguistics/src/main/java/com/yahoo/language/LinguisticsCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language;
import com.yahoo.text.Lowercase;
diff --git a/linguistics/src/main/java/com/yahoo/language/LocaleFactory.java b/linguistics/src/main/java/com/yahoo/language/LocaleFactory.java
index 05b57937625..bc0f5f521bb 100644
--- a/linguistics/src/main/java/com/yahoo/language/LocaleFactory.java
+++ b/linguistics/src/main/java/com/yahoo/language/LocaleFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language;
import java.util.Locale;
diff --git a/linguistics/src/main/java/com/yahoo/language/detect/AbstractDetector.java b/linguistics/src/main/java/com/yahoo/language/detect/AbstractDetector.java
index 2c37ee08cd0..9abbf477584 100644
--- a/linguistics/src/main/java/com/yahoo/language/detect/AbstractDetector.java
+++ b/linguistics/src/main/java/com/yahoo/language/detect/AbstractDetector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.detect;
import com.yahoo.text.Utf8;
diff --git a/linguistics/src/main/java/com/yahoo/language/detect/Detection.java b/linguistics/src/main/java/com/yahoo/language/detect/Detection.java
index 4b816335154..5f820e6ba6c 100644
--- a/linguistics/src/main/java/com/yahoo/language/detect/Detection.java
+++ b/linguistics/src/main/java/com/yahoo/language/detect/Detection.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.detect;
import com.yahoo.language.Language;
@@ -44,4 +44,5 @@ public class Detection {
public boolean isLocal() {
return local;
}
+
}
diff --git a/linguistics/src/main/java/com/yahoo/language/detect/DetectionException.java b/linguistics/src/main/java/com/yahoo/language/detect/DetectionException.java
index a43dc0cb537..fc62411027d 100644
--- a/linguistics/src/main/java/com/yahoo/language/detect/DetectionException.java
+++ b/linguistics/src/main/java/com/yahoo/language/detect/DetectionException.java
@@ -1,14 +1,15 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.detect;
/**
* Exception that is thrown when detection fails.
*
- * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
+ * @author Einar M R Rosenvinge
*/
public final class DetectionException extends RuntimeException {
public DetectionException(String str) {
super(str);
}
+
}
diff --git a/linguistics/src/main/java/com/yahoo/language/detect/Detector.java b/linguistics/src/main/java/com/yahoo/language/detect/Detector.java
index 420d584f3d4..b27917a1acb 100644
--- a/linguistics/src/main/java/com/yahoo/language/detect/Detector.java
+++ b/linguistics/src/main/java/com/yahoo/language/detect/Detector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.detect;
import java.nio.ByteBuffer;
diff --git a/linguistics/src/main/java/com/yahoo/language/detect/Hint.java b/linguistics/src/main/java/com/yahoo/language/detect/Hint.java
index 50291c922e8..5d8b0a79c5d 100644
--- a/linguistics/src/main/java/com/yahoo/language/detect/Hint.java
+++ b/linguistics/src/main/java/com/yahoo/language/detect/Hint.java
@@ -1,10 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.detect;
/**
- * <p>A hint that can be given to a {@link Detector}.</p>
+ * A hint that can be given to a {@link Detector}.
*
- * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
+ * @author Einar M R Rosenvinge
*/
public class Hint {
@@ -35,4 +35,5 @@ public class Hint {
public static Hint newInstance(String market, String country) {
return new Hint(market, country);
}
+
}
diff --git a/linguistics/src/main/java/com/yahoo/language/detect/package-info.java b/linguistics/src/main/java/com/yahoo/language/detect/package-info.java
index a1bf931f83b..91a6d35dcb8 100644
--- a/linguistics/src/main/java/com/yahoo/language/detect/package-info.java
+++ b/linguistics/src/main/java/com/yahoo/language/detect/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.language.detect;
diff --git a/linguistics/src/main/java/com/yahoo/language/opennlp/OpenNlpLinguistics.java b/linguistics/src/main/java/com/yahoo/language/opennlp/OpenNlpLinguistics.java
index a5f77fca0af..a27e726cda8 100644
--- a/linguistics/src/main/java/com/yahoo/language/opennlp/OpenNlpLinguistics.java
+++ b/linguistics/src/main/java/com/yahoo/language/opennlp/OpenNlpLinguistics.java
@@ -1,7 +1,8 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.opennlp;
import com.google.inject.Inject;
+import com.yahoo.language.Linguistics;
import com.yahoo.language.detect.Detector;
import com.yahoo.language.process.Tokenizer;
import com.yahoo.language.simple.SimpleDetector;
@@ -46,4 +47,7 @@ public class OpenNlpLinguistics extends SimpleLinguistics {
@Override
public Detector getDetector() { return detector; }
+ @Override
+ public boolean equals(Linguistics other) { return (other instanceof OpenNlpLinguistics); }
+
}
diff --git a/linguistics/src/main/java/com/yahoo/language/opennlp/OpenNlpTokenizer.java b/linguistics/src/main/java/com/yahoo/language/opennlp/OpenNlpTokenizer.java
index 73518876c3f..dba19b47821 100644
--- a/linguistics/src/main/java/com/yahoo/language/opennlp/OpenNlpTokenizer.java
+++ b/linguistics/src/main/java/com/yahoo/language/opennlp/OpenNlpTokenizer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.opennlp;
import com.yahoo.language.Language;
@@ -19,7 +19,6 @@ import opennlp.tools.stemmer.Stemmer;
import opennlp.tools.stemmer.snowball.SnowballStemmer;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
/**
@@ -52,7 +51,7 @@ public class OpenNlpTokenizer implements Tokenizer {
@Override
public Iterable<Token> tokenize(String input, Language language, StemMode stemMode, boolean removeAccents) {
- if (input.isEmpty()) return Collections.emptyList();
+ if (input.isEmpty()) return List.of();
Stemmer stemmer = stemmerFor(language, stemMode);
if (stemmer == null) return simpleTokenizer.tokenize(input, language, stemMode, removeAccents);
diff --git a/linguistics/src/main/java/com/yahoo/language/opennlp/OptimaizeDetector.java b/linguistics/src/main/java/com/yahoo/language/opennlp/OptimaizeDetector.java
index bf07c91ba44..9bf1281e015 100644
--- a/linguistics/src/main/java/com/yahoo/language/opennlp/OptimaizeDetector.java
+++ b/linguistics/src/main/java/com/yahoo/language/opennlp/OptimaizeDetector.java
@@ -32,10 +32,10 @@ import java.util.logging.Level;
*/
public class OptimaizeDetector implements Detector {
- static private Object initGuard = new Object();
- static private TextObjectFactory textObjectFactory = null;
- static private LanguageDetector languageDetector = null;
- static private final Logger log = Logger.getLogger(OptimaizeDetector.class.getName());
+ private static final Object initGuard = new Object();
+ private static TextObjectFactory textObjectFactory = null;
+ private static LanguageDetector languageDetector = null;
+ private static final Logger log = Logger.getLogger(OptimaizeDetector.class.getName());
static private void initOptimaize() {
synchronized (initGuard) {
@@ -60,7 +60,7 @@ public class OptimaizeDetector implements Detector {
}
}
- private SimpleDetector simpleDetector = new SimpleDetector();
+ private final SimpleDetector simpleDetector = new SimpleDetector();
public OptimaizeDetector() {
initOptimaize();
diff --git a/linguistics/src/main/java/com/yahoo/language/opennlp/package-info.java b/linguistics/src/main/java/com/yahoo/language/opennlp/package-info.java
index 2bdd315418f..9606578b3ac 100644
--- a/linguistics/src/main/java/com/yahoo/language/opennlp/package-info.java
+++ b/linguistics/src/main/java/com/yahoo/language/opennlp/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.language.opennlp;
diff --git a/linguistics/src/main/java/com/yahoo/language/package-info.java b/linguistics/src/main/java/com/yahoo/language/package-info.java
index de7281d24cd..ab723cade1e 100644
--- a/linguistics/src/main/java/com/yahoo/language/package-info.java
+++ b/linguistics/src/main/java/com/yahoo/language/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.language;
diff --git a/linguistics/src/main/java/com/yahoo/language/process/CharacterClasses.java b/linguistics/src/main/java/com/yahoo/language/process/CharacterClasses.java
index 59ae664e79e..413dce0d6c1 100644
--- a/linguistics/src/main/java/com/yahoo/language/process/CharacterClasses.java
+++ b/linguistics/src/main/java/com/yahoo/language/process/CharacterClasses.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
/**
diff --git a/linguistics/src/main/java/com/yahoo/language/process/Embedder.java b/linguistics/src/main/java/com/yahoo/language/process/Embedder.java
new file mode 100644
index 00000000000..17ee0419cea
--- /dev/null
+++ b/linguistics/src/main/java/com/yahoo/language/process/Embedder.java
@@ -0,0 +1,96 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.language.process;
+
+import com.yahoo.language.Language;
+import com.yahoo.tensor.Tensor;
+import com.yahoo.tensor.TensorType;
+
+import java.util.List;
+
+/**
+ * An embedder converts a text string to a tensor
+ *
+ * @author bratseth
+ */
+public interface Embedder {
+
+ /** An instance of this which throws IllegalStateException if attempted used */
+ Embedder throwsOnUse = new FailingEmbedder();
+
+ /**
+ * Converts text into a list of token id's (a vector embedding)
+ *
+ * @param text the text to embed
+ * @param context the context which may influence an embedder's behavior
+ * @return the text embedded as a list of token ids
+ * @throws IllegalArgumentException if the language is not supported by this embedder
+ */
+ List<Integer> embed(String text, Context context);
+
+ /**
+ * Converts text into tokens in a tensor.
+ * The information contained in the embedding may depend on the tensor type.
+ *
+ * @param text the text to embed
+ * @param context the context which may influence an embedder's behavior
+ * @param tensorType the type of the tensor to be returned
+ * @return the tensor embedding of the text, as the spoecified tensor type
+ * @throws IllegalArgumentException if the language or tensor type is not supported by this embedder
+ */
+ Tensor embed(String text, Context context, TensorType tensorType);
+
+ class Context {
+
+ private Language language = Language.UNKNOWN;
+ private String destination;
+
+ public Context(String destination) {
+ this.destination = destination;
+ }
+
+ /** Returns the language of the text, or UNKNOWN (default) to use a language independent embedding */
+ public Language getLanguage() { return language; }
+
+ /** Sets the language of the text, or UNKNOWN to use language independent embedding */
+ public Context setLanguage(Language language) {
+ this.language = language;
+ return this;
+ }
+
+ /**
+ * Returns the name of the recipient of this tensor.
+ *
+ * This is either a query feature name
+ * ("query(feature)"), or a schema and field name concatenated by a dot ("schema.field").
+ * This cannot be null.
+ */
+ public String getDestination() { return destination; }
+
+ /**
+ * Sets the name of the recipient of this tensor.
+ *
+ * This iseither a query feature name
+ * ("query(feature)"), or a schema and field name concatenated by a dot ("schema.field").
+ */
+ public Context setDestination(String destination) {
+ this.destination = destination;
+ return this;
+ }
+
+ }
+
+ class FailingEmbedder implements Embedder {
+
+ @Override
+ public List<Integer> embed(String text, Context context) {
+ throw new IllegalStateException("No embedder has been configured");
+ }
+
+ @Override
+ public Tensor embed(String text, Context context, TensorType tensorType) {
+ throw new IllegalStateException("No embedder has been configured");
+ }
+
+ }
+
+}
diff --git a/linguistics/src/main/java/com/yahoo/language/process/GramSplitter.java b/linguistics/src/main/java/com/yahoo/language/process/GramSplitter.java
index c5ce3278d72..6ee82a6fddb 100644
--- a/linguistics/src/main/java/com/yahoo/language/process/GramSplitter.java
+++ b/linguistics/src/main/java/com/yahoo/language/process/GramSplitter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
diff --git a/linguistics/src/main/java/com/yahoo/language/process/Normalizer.java b/linguistics/src/main/java/com/yahoo/language/process/Normalizer.java
index 044d249f077..2ecfa414572 100644
--- a/linguistics/src/main/java/com/yahoo/language/process/Normalizer.java
+++ b/linguistics/src/main/java/com/yahoo/language/process/Normalizer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
/**
diff --git a/linguistics/src/main/java/com/yahoo/language/process/ProcessingException.java b/linguistics/src/main/java/com/yahoo/language/process/ProcessingException.java
index 752992f5a26..51f7daf2533 100644
--- a/linguistics/src/main/java/com/yahoo/language/process/ProcessingException.java
+++ b/linguistics/src/main/java/com/yahoo/language/process/ProcessingException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
/**
@@ -15,4 +15,5 @@ public class ProcessingException extends RuntimeException {
public ProcessingException(String message, Throwable cause) {
super(message, cause);
}
+
}
diff --git a/linguistics/src/main/java/com/yahoo/language/process/Segmenter.java b/linguistics/src/main/java/com/yahoo/language/process/Segmenter.java
index 616a30cc6cd..d289bfc5996 100644
--- a/linguistics/src/main/java/com/yahoo/language/process/Segmenter.java
+++ b/linguistics/src/main/java/com/yahoo/language/process/Segmenter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
import com.yahoo.language.Language;
diff --git a/linguistics/src/main/java/com/yahoo/language/process/SegmenterImpl.java b/linguistics/src/main/java/com/yahoo/language/process/SegmenterImpl.java
index 9301e73aa5d..f696176c5d1 100644
--- a/linguistics/src/main/java/com/yahoo/language/process/SegmenterImpl.java
+++ b/linguistics/src/main/java/com/yahoo/language/process/SegmenterImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
import com.yahoo.language.Language;
diff --git a/linguistics/src/main/java/com/yahoo/language/process/SpecialTokenRegistry.java b/linguistics/src/main/java/com/yahoo/language/process/SpecialTokenRegistry.java
index b6335d67967..609b21caf89 100644
--- a/linguistics/src/main/java/com/yahoo/language/process/SpecialTokenRegistry.java
+++ b/linguistics/src/main/java/com/yahoo/language/process/SpecialTokenRegistry.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
import com.yahoo.vespa.configdefinition.SpecialtokensConfig;
diff --git a/linguistics/src/main/java/com/yahoo/language/process/SpecialTokens.java b/linguistics/src/main/java/com/yahoo/language/process/SpecialTokens.java
index 465d9b754b3..b680a964e48 100644
--- a/linguistics/src/main/java/com/yahoo/language/process/SpecialTokens.java
+++ b/linguistics/src/main/java/com/yahoo/language/process/SpecialTokens.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
import java.util.ArrayList;
diff --git a/linguistics/src/main/java/com/yahoo/language/process/StemList.java b/linguistics/src/main/java/com/yahoo/language/process/StemList.java
index a38a2e51cb6..13e46519c5a 100644
--- a/linguistics/src/main/java/com/yahoo/language/process/StemList.java
+++ b/linguistics/src/main/java/com/yahoo/language/process/StemList.java
@@ -1,8 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
import java.util.AbstractList;
import java.util.ArrayList;
+import java.util.List;
/**
* A list of strings which does not allow for duplicate elements.
@@ -10,7 +11,8 @@ import java.util.ArrayList;
* @author steinar
*/
public class StemList extends AbstractList<String> {
- private final ArrayList<String> stems;
+
+ private final List<String> stems;
public StemList() {
this(new String[0]);
diff --git a/linguistics/src/main/java/com/yahoo/language/process/StemMode.java b/linguistics/src/main/java/com/yahoo/language/process/StemMode.java
index 628f6910c9e..572711289d8 100644
--- a/linguistics/src/main/java/com/yahoo/language/process/StemMode.java
+++ b/linguistics/src/main/java/com/yahoo/language/process/StemMode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
/**
@@ -10,16 +10,10 @@ package com.yahoo.language.process;
*/
public enum StemMode {
- NONE(0),
- DEFAULT(1),
- ALL(2),
- SHORTEST(4),
- BEST(5);
-
- private final int value;
-
- StemMode(int value) {
- this.value = value;
- }
+ NONE,
+ DEFAULT,
+ ALL,
+ SHORTEST,
+ BEST;
}
diff --git a/linguistics/src/main/java/com/yahoo/language/process/Stemmer.java b/linguistics/src/main/java/com/yahoo/language/process/Stemmer.java
index da8a73407ff..15b1ee7bb67 100644
--- a/linguistics/src/main/java/com/yahoo/language/process/Stemmer.java
+++ b/linguistics/src/main/java/com/yahoo/language/process/Stemmer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
import com.yahoo.language.Language;
@@ -6,9 +6,9 @@ import com.yahoo.language.Language;
import java.util.List;
/**
- * <p>Interface providing stemming of single words.</p>
+ * Interface providing stemming of single words.
*
- * @author <a href="mailto:mathiasm@yahoo-inc.com">Mathias Mølster Lidal</a>
+ * @author Mathias Mølster Lidal
*/
public interface Stemmer {
@@ -18,7 +18,7 @@ public interface Stemmer {
* @param input the string to stem.
* @param mode the stemming mode
* @param language the language to use for stemming
- * @return list of possible stems. Empty if none.
+ * @return a list of possible stems. Empty if none.
* @throws ProcessingException thrown if there is an exception stemming this input
*/
List<StemList> stem(String input, StemMode mode, Language language);
diff --git a/linguistics/src/main/java/com/yahoo/language/process/StemmerImpl.java b/linguistics/src/main/java/com/yahoo/language/process/StemmerImpl.java
index f401ddaba99..24f41ea5db8 100644
--- a/linguistics/src/main/java/com/yahoo/language/process/StemmerImpl.java
+++ b/linguistics/src/main/java/com/yahoo/language/process/StemmerImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
import com.yahoo.language.Language;
@@ -43,4 +43,5 @@ public class StemmerImpl implements Stemmer {
}
}
}
+
}
diff --git a/linguistics/src/main/java/com/yahoo/language/process/Token.java b/linguistics/src/main/java/com/yahoo/language/process/Token.java
index 70b78ef1a92..a39d8777355 100644
--- a/linguistics/src/main/java/com/yahoo/language/process/Token.java
+++ b/linguistics/src/main/java/com/yahoo/language/process/Token.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
/**
diff --git a/linguistics/src/main/java/com/yahoo/language/process/TokenScript.java b/linguistics/src/main/java/com/yahoo/language/process/TokenScript.java
index efe4073d97e..c50a0855357 100644
--- a/linguistics/src/main/java/com/yahoo/language/process/TokenScript.java
+++ b/linguistics/src/main/java/com/yahoo/language/process/TokenScript.java
@@ -1,11 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
/**
* List of token scripts (e.g. latin, japanese, chinese, etc.) which may warrant different
* linguistics treatment.
*
- * @author <a href="mailto:mathiasm@yahoo-inc.com">Mathias Mølster Lidal</a>
+ * @author Mathias Mølster Lidal
*/
public enum TokenScript {
diff --git a/linguistics/src/main/java/com/yahoo/language/process/TokenType.java b/linguistics/src/main/java/com/yahoo/language/process/TokenType.java
index ad154d1b003..14c7e9bc144 100644
--- a/linguistics/src/main/java/com/yahoo/language/process/TokenType.java
+++ b/linguistics/src/main/java/com/yahoo/language/process/TokenType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
/**
diff --git a/linguistics/src/main/java/com/yahoo/language/process/Tokenizer.java b/linguistics/src/main/java/com/yahoo/language/process/Tokenizer.java
index 5be0a6fa635..0edf96e009b 100644
--- a/linguistics/src/main/java/com/yahoo/language/process/Tokenizer.java
+++ b/linguistics/src/main/java/com/yahoo/language/process/Tokenizer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
import com.yahoo.language.Language;
diff --git a/linguistics/src/main/java/com/yahoo/language/process/Transformer.java b/linguistics/src/main/java/com/yahoo/language/process/Transformer.java
index 4927edc98c9..81eb3dadcd0 100644
--- a/linguistics/src/main/java/com/yahoo/language/process/Transformer.java
+++ b/linguistics/src/main/java/com/yahoo/language/process/Transformer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
import com.yahoo.language.Language;
diff --git a/linguistics/src/main/java/com/yahoo/language/process/package-info.java b/linguistics/src/main/java/com/yahoo/language/process/package-info.java
index 63729b044f5..13e9045f9bc 100644
--- a/linguistics/src/main/java/com/yahoo/language/process/package-info.java
+++ b/linguistics/src/main/java/com/yahoo/language/process/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.language.process;
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/SimpleDetector.java b/linguistics/src/main/java/com/yahoo/language/simple/SimpleDetector.java
index 3de0eb3e997..53b8ad7ad70 100644
--- a/linguistics/src/main/java/com/yahoo/language/simple/SimpleDetector.java
+++ b/linguistics/src/main/java/com/yahoo/language/simple/SimpleDetector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.simple;
import com.yahoo.language.Language;
@@ -70,15 +70,6 @@ public class SimpleDetector implements Detector {
block == Character.UnicodeBlock.HANGUL_COMPATIBILITY_JAMO) {
return Language.KOREAN;
}
- // katakana phonetic extensions.
- if (0x31f0 <= c && c <= 0x31ff) {
- // See http://www.unicode.org/charts/PDF/U31F0.pdf
- // This is a special case because This range of character
- // codes is classified as unasigned in
- // Character.UnicodeBlock. But clearly it is assigned as
- // per above.
- return Language.JAPANESE;
- }
if (0x31f0 <= c && c <= 0x31ff || // these are standard character blocks for japanese characters.
block == Character.UnicodeBlock.HIRAGANA ||
block == Character.UnicodeBlock.KATAKANA ||
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/SimpleLinguistics.java b/linguistics/src/main/java/com/yahoo/language/simple/SimpleLinguistics.java
index 4ffe2a866d8..3ca46dcc4f1 100644
--- a/linguistics/src/main/java/com/yahoo/language/simple/SimpleLinguistics.java
+++ b/linguistics/src/main/java/com/yahoo/language/simple/SimpleLinguistics.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.simple;
import com.google.inject.Inject;
@@ -70,4 +70,7 @@ public class SimpleLinguistics implements Linguistics {
@Override
public CharacterClasses getCharacterClasses() { return characterClasses; }
+ @Override
+ public boolean equals(Linguistics other) { return (other instanceof SimpleLinguistics); }
+
}
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/SimpleNormalizer.java b/linguistics/src/main/java/com/yahoo/language/simple/SimpleNormalizer.java
index 98135bf72fc..62377a8dc4c 100644
--- a/linguistics/src/main/java/com/yahoo/language/simple/SimpleNormalizer.java
+++ b/linguistics/src/main/java/com/yahoo/language/simple/SimpleNormalizer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.simple;
import com.yahoo.language.process.Normalizer;
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/SimpleToken.java b/linguistics/src/main/java/com/yahoo/language/simple/SimpleToken.java
index 7b63650fa94..7479e326b45 100644
--- a/linguistics/src/main/java/com/yahoo/language/simple/SimpleToken.java
+++ b/linguistics/src/main/java/com/yahoo/language/simple/SimpleToken.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.simple;
import com.yahoo.language.process.Token;
@@ -17,16 +17,17 @@ public class SimpleToken implements Token {
private final String orig;
private TokenType type = TokenType.UNKNOWN;
private TokenScript script = TokenScript.UNKNOWN;
- private String tokenString = null;
+ private String tokenString;
private boolean specialToken = false;
private long offset = 0;
public SimpleToken(String orig) {
- this.orig = orig;
+ this(orig, null);
}
public SimpleToken(String orig, String tokenString) {
this.orig = orig;
+ this.tokenString = tokenString;
}
@Override
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/SimpleTokenType.java b/linguistics/src/main/java/com/yahoo/language/simple/SimpleTokenType.java
index d7eb8a72ed8..ace2fd3246e 100644
--- a/linguistics/src/main/java/com/yahoo/language/simple/SimpleTokenType.java
+++ b/linguistics/src/main/java/com/yahoo/language/simple/SimpleTokenType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.simple;
import com.yahoo.language.process.TokenType;
@@ -65,4 +65,5 @@ public class SimpleTokenType {
}
throw new UnsupportedOperationException(String.valueOf(Character.getType(codePoint)));
}
+
}
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/SimpleTokenizer.java b/linguistics/src/main/java/com/yahoo/language/simple/SimpleTokenizer.java
index 740307c0cca..3dc28b99144 100644
--- a/linguistics/src/main/java/com/yahoo/language/simple/SimpleTokenizer.java
+++ b/linguistics/src/main/java/com/yahoo/language/simple/SimpleTokenizer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.simple;
import com.yahoo.language.Language;
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/SimpleTransformer.java b/linguistics/src/main/java/com/yahoo/language/simple/SimpleTransformer.java
index 3ab1750bcee..9efa7007e7b 100644
--- a/linguistics/src/main/java/com/yahoo/language/simple/SimpleTransformer.java
+++ b/linguistics/src/main/java/com/yahoo/language/simple/SimpleTransformer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.simple;
import com.yahoo.language.Language;
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/kstem/CharArrayMap.java b/linguistics/src/main/java/com/yahoo/language/simple/kstem/CharArrayMap.java
index 4e8c780bbb7..d308e5a5488 100644
--- a/linguistics/src/main/java/com/yahoo/language/simple/kstem/CharArrayMap.java
+++ b/linguistics/src/main/java/com/yahoo/language/simple/kstem/CharArrayMap.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* This is adapted from the Lucene code base which is Copyright 2008 Apache Software Foundation and Licensed
* under the terms of the Apache License, Version 2.0.
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/kstem/CharArraySet.java b/linguistics/src/main/java/com/yahoo/language/simple/kstem/CharArraySet.java
index dbfb749c5ca..a487f158008 100644
--- a/linguistics/src/main/java/com/yahoo/language/simple/kstem/CharArraySet.java
+++ b/linguistics/src/main/java/com/yahoo/language/simple/kstem/CharArraySet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* This is adapted from the Lucene code base which is Copyright 2008 Apache Software Foundation and Licensed
* under the terms of the Apache License, Version 2.0.
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/kstem/CharacterUtils.java b/linguistics/src/main/java/com/yahoo/language/simple/kstem/CharacterUtils.java
index 3b7dcca3bc1..7f09580cd04 100644
--- a/linguistics/src/main/java/com/yahoo/language/simple/kstem/CharacterUtils.java
+++ b/linguistics/src/main/java/com/yahoo/language/simple/kstem/CharacterUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* This is adapted from the Lucene code base which is Copyright 2008 Apache Software Foundation and Licensed
* under the terms of the Apache License, Version 2.0.
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData1.java b/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData1.java
index b13cdd7894d..feddada4b78 100644
--- a/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData1.java
+++ b/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData1.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* This is adapted from the kstemmer code base which is Copyright 2003, CIIR University of Massachusetts
* Amherst (http://ciir.cs.umass.edu) and Licensed under the terms of a modified old-style BSD license.
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData2.java b/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData2.java
index 06670966d8c..97a1897198c 100644
--- a/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData2.java
+++ b/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData2.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* This is adapted from the kstemmer code base which is Copyright 2003, CIIR University of Massachusetts
* Amherst (http://ciir.cs.umass.edu) and Licensed under the terms of a modified old-style BSD license.
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData3.java b/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData3.java
index bc6665c7730..3faa100b1ad 100644
--- a/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData3.java
+++ b/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData3.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* This is adapted from the kstemmer code base which is Copyright 2003, CIIR University of Massachusetts
* Amherst (http://ciir.cs.umass.edu) and Licensed under the terms of a modified old-style BSD license.
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData4.java b/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData4.java
index 4dc51a522ce..e71fd155933 100644
--- a/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData4.java
+++ b/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData4.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* This is adapted from the kstemmer code base which is Copyright 2003, CIIR University of Massachusetts
* Amherst (http://ciir.cs.umass.edu) and Licensed under the terms of a modified old-style BSD license.
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData5.java b/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData5.java
index f748d6694a2..31fe5e3f013 100644
--- a/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData5.java
+++ b/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData5.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* This is adapted from the kstemmer code base which is Copyright 2003, CIIR University of Massachusetts
* Amherst (http://ciir.cs.umass.edu) and Licensed under the terms of a modified old-style BSD license.
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData6.java b/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData6.java
index f1c779dd616..97b1af4b6e0 100644
--- a/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData6.java
+++ b/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData6.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* This is adapted from the kstemmer code base which is Copyright 2003, CIIR University of Massachusetts
* Amherst (http://ciir.cs.umass.edu) and Licensed under the terms of a modified old-style BSD license.
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData7.java b/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData7.java
index ba3ce9b3137..0ae14a51132 100644
--- a/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData7.java
+++ b/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData7.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* This algorithm is adapted from the kstemmer code base which is Copyright 2003, CIIR University of Massachusetts
* Amherst (http://ciir.cs.umass.edu) and Licensed under the terms of a modified old-style BSD license.
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData8.java b/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData8.java
index 42916e36304..bb6f3960414 100644
--- a/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData8.java
+++ b/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemData8.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* This algorithm is adapted from the kstemmer code base which is Copyright 2003, CIIR University of Massachusetts
* Amherst (http://ciir.cs.umass.edu) and Licensed under the terms of a modified old-style BSD license.
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemmer.java b/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemmer.java
index 3d2a14473e5..93538db1a5b 100644
--- a/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemmer.java
+++ b/linguistics/src/main/java/com/yahoo/language/simple/kstem/KStemmer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* This algorithm is adapted from the Lucene code base which is Copyright 2008 Apache Software Foundation and Licensed
* under the terms of the Apache License, Version 2.0, which was adapted from
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/kstem/OpenStringBuilder.java b/linguistics/src/main/java/com/yahoo/language/simple/kstem/OpenStringBuilder.java
index f3a32344509..d89f1c8f9a7 100644
--- a/linguistics/src/main/java/com/yahoo/language/simple/kstem/OpenStringBuilder.java
+++ b/linguistics/src/main/java/com/yahoo/language/simple/kstem/OpenStringBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* This is adapted from the Lucene code base which is Copyright 2008 Apache Software Foundation and Licensed
* under the terms of the Apache License, Version 2.0.
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/package-info.java b/linguistics/src/main/java/com/yahoo/language/simple/package-info.java
index 846085ea517..dffe1e65db6 100644
--- a/linguistics/src/main/java/com/yahoo/language/simple/package-info.java
+++ b/linguistics/src/main/java/com/yahoo/language/simple/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.language.simple;
diff --git a/linguistics/src/main/resources/configdefinitions/language.opennlp.opennlp-linguistics.def b/linguistics/src/main/resources/configdefinitions/language.opennlp.opennlp-linguistics.def
index 13194d471fd..361a8a5f50c 100644
--- a/linguistics/src/main/resources/configdefinitions/language.opennlp.opennlp-linguistics.def
+++ b/linguistics/src/main/resources/configdefinitions/language.opennlp.opennlp-linguistics.def
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=language.opennlp
# Enable Optimaize language detector
diff --git a/linguistics/src/test/java/com/yahoo/language/LanguageTestCase.java b/linguistics/src/test/java/com/yahoo/language/LanguageTestCase.java
index c3b7392010c..5cacfb917b1 100644
--- a/linguistics/src/test/java/com/yahoo/language/LanguageTestCase.java
+++ b/linguistics/src/test/java/com/yahoo/language/LanguageTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language;
import org.junit.Test;
diff --git a/linguistics/src/test/java/com/yahoo/language/LocaleFactoryTestCase.java b/linguistics/src/test/java/com/yahoo/language/LocaleFactoryTestCase.java
index c76a85fbbd0..4ea2ccd16e7 100644
--- a/linguistics/src/test/java/com/yahoo/language/LocaleFactoryTestCase.java
+++ b/linguistics/src/test/java/com/yahoo/language/LocaleFactoryTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language;
import org.junit.Test;
diff --git a/linguistics/src/test/java/com/yahoo/language/detect/AbstractDetectorTestCase.java b/linguistics/src/test/java/com/yahoo/language/detect/AbstractDetectorTestCase.java
index f2891a0c5d5..428f75f7789 100644
--- a/linguistics/src/test/java/com/yahoo/language/detect/AbstractDetectorTestCase.java
+++ b/linguistics/src/test/java/com/yahoo/language/detect/AbstractDetectorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.detect;
import com.yahoo.language.Language;
diff --git a/linguistics/src/test/java/com/yahoo/language/opennlp/OpenNlpTokenizationTestCase.java b/linguistics/src/test/java/com/yahoo/language/opennlp/OpenNlpTokenizationTestCase.java
index 2239a62f840..77489f2eb44 100644
--- a/linguistics/src/test/java/com/yahoo/language/opennlp/OpenNlpTokenizationTestCase.java
+++ b/linguistics/src/test/java/com/yahoo/language/opennlp/OpenNlpTokenizationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.opennlp;
import com.yahoo.language.Language;
diff --git a/linguistics/src/test/java/com/yahoo/language/process/AbstractTokenizerTestCase.java b/linguistics/src/test/java/com/yahoo/language/process/AbstractTokenizerTestCase.java
index 48dcd462573..8250b49971a 100644
--- a/linguistics/src/test/java/com/yahoo/language/process/AbstractTokenizerTestCase.java
+++ b/linguistics/src/test/java/com/yahoo/language/process/AbstractTokenizerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
import com.yahoo.language.Language;
diff --git a/linguistics/src/test/java/com/yahoo/language/process/GramSplitterTestCase.java b/linguistics/src/test/java/com/yahoo/language/process/GramSplitterTestCase.java
index a37ef6bfde5..5054f5a9bff 100644
--- a/linguistics/src/test/java/com/yahoo/language/process/GramSplitterTestCase.java
+++ b/linguistics/src/test/java/com/yahoo/language/process/GramSplitterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
import com.yahoo.language.simple.SimpleLinguistics;
diff --git a/linguistics/src/test/java/com/yahoo/language/process/NormalizationTestCase.java b/linguistics/src/test/java/com/yahoo/language/process/NormalizationTestCase.java
index 524f1b5b6fe..517aa9d9dc9 100644
--- a/linguistics/src/test/java/com/yahoo/language/process/NormalizationTestCase.java
+++ b/linguistics/src/test/java/com/yahoo/language/process/NormalizationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
import com.yahoo.language.simple.SimpleLinguistics;
diff --git a/linguistics/src/test/java/com/yahoo/language/process/ProcessingExceptionTestCase.java b/linguistics/src/test/java/com/yahoo/language/process/ProcessingExceptionTestCase.java
index e8bbdaeb006..ba551596a38 100644
--- a/linguistics/src/test/java/com/yahoo/language/process/ProcessingExceptionTestCase.java
+++ b/linguistics/src/test/java/com/yahoo/language/process/ProcessingExceptionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
import org.junit.Test;
diff --git a/linguistics/src/test/java/com/yahoo/language/process/SegmenterImplTestCase.java b/linguistics/src/test/java/com/yahoo/language/process/SegmenterImplTestCase.java
index 736568b402a..59232117c7a 100644
--- a/linguistics/src/test/java/com/yahoo/language/process/SegmenterImplTestCase.java
+++ b/linguistics/src/test/java/com/yahoo/language/process/SegmenterImplTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
import com.yahoo.language.Language;
diff --git a/linguistics/src/test/java/com/yahoo/language/process/SpecialTokensTestCase.java b/linguistics/src/test/java/com/yahoo/language/process/SpecialTokensTestCase.java
index 47c3ba7933c..fb75dea86c6 100644
--- a/linguistics/src/test/java/com/yahoo/language/process/SpecialTokensTestCase.java
+++ b/linguistics/src/test/java/com/yahoo/language/process/SpecialTokensTestCase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
import com.yahoo.vespa.configdefinition.SpecialtokensConfig;
diff --git a/linguistics/src/test/java/com/yahoo/language/process/StemListTestCase.java b/linguistics/src/test/java/com/yahoo/language/process/StemListTestCase.java
index 2d3ac291716..6d84f3dae51 100644
--- a/linguistics/src/test/java/com/yahoo/language/process/StemListTestCase.java
+++ b/linguistics/src/test/java/com/yahoo/language/process/StemListTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
import static org.junit.Assert.*;
diff --git a/linguistics/src/test/java/com/yahoo/language/process/StemmerImplTestCase.java b/linguistics/src/test/java/com/yahoo/language/process/StemmerImplTestCase.java
index 665857514be..3a13d4e8015 100644
--- a/linguistics/src/test/java/com/yahoo/language/process/StemmerImplTestCase.java
+++ b/linguistics/src/test/java/com/yahoo/language/process/StemmerImplTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
import com.yahoo.language.Language;
diff --git a/linguistics/src/test/java/com/yahoo/language/process/TokenTypeTestCase.java b/linguistics/src/test/java/com/yahoo/language/process/TokenTypeTestCase.java
index a2f51ee7367..0ce9b327533 100644
--- a/linguistics/src/test/java/com/yahoo/language/process/TokenTypeTestCase.java
+++ b/linguistics/src/test/java/com/yahoo/language/process/TokenTypeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
import org.junit.Test;
diff --git a/linguistics/src/test/java/com/yahoo/language/process/TokenizationTestCase.java b/linguistics/src/test/java/com/yahoo/language/process/TokenizationTestCase.java
index f99dc5633f5..77526e2a60f 100644
--- a/linguistics/src/test/java/com/yahoo/language/process/TokenizationTestCase.java
+++ b/linguistics/src/test/java/com/yahoo/language/process/TokenizationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.process;
import com.yahoo.language.Language;
diff --git a/linguistics/src/test/java/com/yahoo/language/simple/SimpleDetectorTestCase.java b/linguistics/src/test/java/com/yahoo/language/simple/SimpleDetectorTestCase.java
index 0f5fbceccf2..d8b0f9f77ff 100644
--- a/linguistics/src/test/java/com/yahoo/language/simple/SimpleDetectorTestCase.java
+++ b/linguistics/src/test/java/com/yahoo/language/simple/SimpleDetectorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.simple;
import com.yahoo.language.Language;
diff --git a/linguistics/src/test/java/com/yahoo/language/simple/SimpleNormalizerTestCase.java b/linguistics/src/test/java/com/yahoo/language/simple/SimpleNormalizerTestCase.java
index 488d63f4327..4b6a8df2835 100644
--- a/linguistics/src/test/java/com/yahoo/language/simple/SimpleNormalizerTestCase.java
+++ b/linguistics/src/test/java/com/yahoo/language/simple/SimpleNormalizerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.simple;
import com.yahoo.language.process.Normalizer;
diff --git a/linguistics/src/test/java/com/yahoo/language/simple/SimpleTokenTestCase.java b/linguistics/src/test/java/com/yahoo/language/simple/SimpleTokenTestCase.java
index 563a09c4e52..c699f9d314b 100644
--- a/linguistics/src/test/java/com/yahoo/language/simple/SimpleTokenTestCase.java
+++ b/linguistics/src/test/java/com/yahoo/language/simple/SimpleTokenTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.simple;
import com.yahoo.language.process.TokenScript;
diff --git a/linguistics/src/test/java/com/yahoo/language/simple/SimpleTokenTypeTestCase.java b/linguistics/src/test/java/com/yahoo/language/simple/SimpleTokenTypeTestCase.java
index fe25e5fe17f..afea3c33721 100644
--- a/linguistics/src/test/java/com/yahoo/language/simple/SimpleTokenTypeTestCase.java
+++ b/linguistics/src/test/java/com/yahoo/language/simple/SimpleTokenTypeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.simple;
import com.yahoo.language.process.TokenType;
diff --git a/linguistics/src/test/java/com/yahoo/language/simple/SimpleTokenizerTestCase.java b/linguistics/src/test/java/com/yahoo/language/simple/SimpleTokenizerTestCase.java
index 4c2a8f9f591..f9ff66ee345 100644
--- a/linguistics/src/test/java/com/yahoo/language/simple/SimpleTokenizerTestCase.java
+++ b/linguistics/src/test/java/com/yahoo/language/simple/SimpleTokenizerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.simple;
import com.yahoo.language.process.AbstractTokenizerTestCase;
diff --git a/linguistics/src/test/java/com/yahoo/language/simple/SimpleTransformerTestCase.java b/linguistics/src/test/java/com/yahoo/language/simple/SimpleTransformerTestCase.java
index 926736490a6..2a441fe84e1 100644
--- a/linguistics/src/test/java/com/yahoo/language/simple/SimpleTransformerTestCase.java
+++ b/linguistics/src/test/java/com/yahoo/language/simple/SimpleTransformerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.simple;
import com.yahoo.language.Language;
diff --git a/linguistics/src/test/java/com/yahoo/language/simple/TokenizerTester.java b/linguistics/src/test/java/com/yahoo/language/simple/TokenizerTester.java
index 761f8e857fa..0030997ca57 100644
--- a/linguistics/src/test/java/com/yahoo/language/simple/TokenizerTester.java
+++ b/linguistics/src/test/java/com/yahoo/language/simple/TokenizerTester.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.language.simple;
import com.yahoo.language.Language;
diff --git a/logd/CMakeLists.txt b/logd/CMakeLists.txt
index c49632351dc..498efc36cf2 100644
--- a/logd/CMakeLists.txt
+++ b/logd/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/logd/pom.xml b/logd/pom.xml
index 4e1eb802cfa..2baf77e5aa3 100644
--- a/logd/pom.xml
+++ b/logd/pom.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/logd/src/apps/logd/CMakeLists.txt b/logd/src/apps/logd/CMakeLists.txt
index 50a9a900958..dbbf46a1c5c 100644
--- a/logd/src/apps/logd/CMakeLists.txt
+++ b/logd/src/apps/logd/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(logd_app
SOURCES
main.cpp
diff --git a/logd/src/apps/logd/main.cpp b/logd/src/apps/logd/main.cpp
index db34c38847e..03d671c7c19 100644
--- a/logd/src/apps/logd/main.cpp
+++ b/logd/src/apps/logd/main.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <logd/config_subscriber.h>
#include <logd/empty_forwarder.h>
diff --git a/logd/src/apps/retention/retention-enforcer.sh b/logd/src/apps/retention/retention-enforcer.sh
index a8f3730f4ce..6355600ee4a 100755
--- a/logd/src/apps/retention/retention-enforcer.sh
+++ b/logd/src/apps/retention/retention-enforcer.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# daemon that collects old log files.
# global settings:
diff --git a/logd/src/logd/CMakeLists.txt b/logd/src/logd/CMakeLists.txt
index cc73b51f0b1..a28bbba56c7 100644
--- a/logd/src/logd/CMakeLists.txt
+++ b/logd/src/logd/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# logd is the only cpp module using the protobuf files for the log protocol.
# We have choosen to generate the cpp code where it is used, instead of changing the java logserver module to also generate and export cpp code just for this case.
diff --git a/logd/src/logd/config_subscriber.cpp b/logd/src/logd/config_subscriber.cpp
index 3a6af0c54e4..be3d42fb6f0 100644
--- a/logd/src/logd/config_subscriber.cpp
+++ b/logd/src/logd/config_subscriber.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "config_subscriber.h"
#include "empty_forwarder.h"
diff --git a/logd/src/logd/config_subscriber.h b/logd/src/logd/config_subscriber.h
index fcda0ac1e11..9f7dea12d33 100644
--- a/logd/src/logd/config_subscriber.h
+++ b/logd/src/logd/config_subscriber.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "forwarder.h"
diff --git a/logd/src/logd/empty_forwarder.cpp b/logd/src/logd/empty_forwarder.cpp
index d571506df92..dda03c46c01 100644
--- a/logd/src/logd/empty_forwarder.cpp
+++ b/logd/src/logd/empty_forwarder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "empty_forwarder.h"
#include "metrics.h"
diff --git a/logd/src/logd/empty_forwarder.h b/logd/src/logd/empty_forwarder.h
index 4cf17160051..0ee33f3e71f 100644
--- a/logd/src/logd/empty_forwarder.h
+++ b/logd/src/logd/empty_forwarder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "forwarder.h"
diff --git a/logd/src/logd/exceptions.h b/logd/src/logd/exceptions.h
index 82e8b570c3b..f2242764060 100644
--- a/logd/src/logd/exceptions.h
+++ b/logd/src/logd/exceptions.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <stdexcept>
diff --git a/logd/src/logd/log_protocol_proto.h b/logd/src/logd/log_protocol_proto.h
index 6f82b5d28b8..2fcb7d03919 100644
--- a/logd/src/logd/log_protocol_proto.h
+++ b/logd/src/logd/log_protocol_proto.h
@@ -7,7 +7,7 @@
#pragma GCC diagnostic ignored "-Wsuggest-override"
#endif
-#include "log_protocol.pb.h"
+#include <logd/log_protocol.pb.h>
#pragma GCC diagnostic pop
diff --git a/logd/src/logd/metrics.cpp b/logd/src/logd/metrics.cpp
index edfa44021d5..9ea2880d711 100644
--- a/logd/src/logd/metrics.cpp
+++ b/logd/src/logd/metrics.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "metrics.h"
diff --git a/logd/src/logd/metrics.h b/logd/src/logd/metrics.h
index c753e200852..ae9c3c0cc6d 100644
--- a/logd/src/logd/metrics.h
+++ b/logd/src/logd/metrics.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/metrics/metrics_manager.h>
diff --git a/logd/src/logd/state_reporter.cpp b/logd/src/logd/state_reporter.cpp
index 02bd7253026..afde38d5acd 100644
--- a/logd/src/logd/state_reporter.cpp
+++ b/logd/src/logd/state_reporter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "state_reporter.h"
#include <vespa/vespalib/metrics/simple_metrics_manager.h>
diff --git a/logd/src/logd/state_reporter.h b/logd/src/logd/state_reporter.h
index 5c1428acc38..1b00a2fe662 100644
--- a/logd/src/logd/state_reporter.h
+++ b/logd/src/logd/state_reporter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/net/state_server.h>
diff --git a/logd/src/logd/watcher.cpp b/logd/src/logd/watcher.cpp
index bfec9b82c2d..bab80dab7bd 100644
--- a/logd/src/logd/watcher.cpp
+++ b/logd/src/logd/watcher.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "config_subscriber.h"
#include "exceptions.h"
diff --git a/logd/src/logd/watcher.h b/logd/src/logd/watcher.h
index 2629da040f7..19cb7fe3cd6 100644
--- a/logd/src/logd/watcher.h
+++ b/logd/src/logd/watcher.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vector>
diff --git a/logd/src/main/resources/configdefinitions/logd.def b/logd/src/main/resources/configdefinitions/logd.def
index bb5f487c47e..58cf1913a2b 100644
--- a/logd/src/main/resources/configdefinitions/logd.def
+++ b/logd/src/main/resources/configdefinitions/logd.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=cloud.config.log
## Port to serve status and metrics on
@@ -27,7 +27,7 @@ loglevel.error.forward bool default=true
loglevel.warning.forward bool default=true
loglevel.config.forward bool default=true
loglevel.info.forward bool default=true
-loglevel.event.forward bool default=false
+loglevel.event.forward bool default=true
loglevel.debug.forward bool default=false
loglevel.spam.forward bool default=false
diff --git a/logd/src/tests/empty_forwarder/CMakeLists.txt b/logd/src/tests/empty_forwarder/CMakeLists.txt
index d1dff55d9cc..acc71d026ed 100644
--- a/logd/src/tests/empty_forwarder/CMakeLists.txt
+++ b/logd/src/tests/empty_forwarder/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(logd_empty_forwarder_test_app TEST
SOURCES
empty_forwarder_test.cpp
diff --git a/logd/src/tests/empty_forwarder/empty_forwarder_test.cpp b/logd/src/tests/empty_forwarder/empty_forwarder_test.cpp
index dbc76e694f2..58b6579e237 100644
--- a/logd/src/tests/empty_forwarder/empty_forwarder_test.cpp
+++ b/logd/src/tests/empty_forwarder/empty_forwarder_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <logd/empty_forwarder.h>
#include <logd/metrics.h>
diff --git a/logd/src/tests/rotate/CMakeLists.txt b/logd/src/tests/rotate/CMakeLists.txt
index 43415ae3cba..ea0be250feb 100644
--- a/logd/src/tests/rotate/CMakeLists.txt
+++ b/logd/src/tests/rotate/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(logd_dummyserver_app
SOURCES
dummyserver.cpp
diff --git a/logd/src/tests/rotate/create_configfile.sh b/logd/src/tests/rotate/create_configfile.sh
index cff4321b3b4..0254354edae 100755
--- a/logd/src/tests/rotate/create_configfile.sh
+++ b/logd/src/tests/rotate/create_configfile.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
read port < logserver.port
diff --git a/logd/src/tests/rotate/dummylogger.cpp b/logd/src/tests/rotate/dummylogger.cpp
index a3d72e2beca..1ac82bfe16e 100644
--- a/logd/src/tests/rotate/dummylogger.cpp
+++ b/logd/src/tests/rotate/dummylogger.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
diff --git a/logd/src/tests/rotate/dummyserver.cpp b/logd/src/tests/rotate/dummyserver.cpp
index f3458edaf80..3aaf2c7133e 100644
--- a/logd/src/tests/rotate/dummyserver.cpp
+++ b/logd/src/tests/rotate/dummyserver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
diff --git a/logd/src/tests/rotate/rotate_test.sh b/logd/src/tests/rotate/rotate_test.sh
index b9f28342535..44b35765ad6 100755
--- a/logd/src/tests/rotate/rotate_test.sh
+++ b/logd/src/tests/rotate/rotate_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
if [ -z "$SOURCE_DIRECTORY" ]; then
diff --git a/logforwarder/CMakeLists.txt b/logforwarder/CMakeLists.txt
index bd1e480a074..a6506b0aab4 100644
--- a/logforwarder/CMakeLists.txt
+++ b/logforwarder/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
vespalog
diff --git a/logforwarder/src/apps/vespa-logforwarder-start/CMakeLists.txt b/logforwarder/src/apps/vespa-logforwarder-start/CMakeLists.txt
index aa5584ec108..74ca0ff6abc 100644
--- a/logforwarder/src/apps/vespa-logforwarder-start/CMakeLists.txt
+++ b/logforwarder/src/apps/vespa-logforwarder-start/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(logforwarder-start_app
SOURCES
main.cpp
diff --git a/logforwarder/src/apps/vespa-logforwarder-start/cf-handler.cpp b/logforwarder/src/apps/vespa-logforwarder-start/cf-handler.cpp
index a149c6581ac..df4c6ee7f57 100644
--- a/logforwarder/src/apps/vespa-logforwarder-start/cf-handler.cpp
+++ b/logforwarder/src/apps/vespa-logforwarder-start/cf-handler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "cf-handler.h"
#include <cstdlib>
diff --git a/logforwarder/src/apps/vespa-logforwarder-start/cf-handler.h b/logforwarder/src/apps/vespa-logforwarder-start/cf-handler.h
index 0aa977467b5..f5bd4866930 100644
--- a/logforwarder/src/apps/vespa-logforwarder-start/cf-handler.h
+++ b/logforwarder/src/apps/vespa-logforwarder-start/cf-handler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/config.h>
diff --git a/logforwarder/src/apps/vespa-logforwarder-start/child-handler.cpp b/logforwarder/src/apps/vespa-logforwarder-start/child-handler.cpp
index 9a4fb5d1d29..810491404dd 100644
--- a/logforwarder/src/apps/vespa-logforwarder-start/child-handler.cpp
+++ b/logforwarder/src/apps/vespa-logforwarder-start/child-handler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "child-handler.h"
diff --git a/logforwarder/src/apps/vespa-logforwarder-start/child-handler.h b/logforwarder/src/apps/vespa-logforwarder-start/child-handler.h
index 0c07b208871..2eb50ee8944 100644
--- a/logforwarder/src/apps/vespa-logforwarder-start/child-handler.h
+++ b/logforwarder/src/apps/vespa-logforwarder-start/child-handler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/logforwarder/src/apps/vespa-logforwarder-start/main.cpp b/logforwarder/src/apps/vespa-logforwarder-start/main.cpp
index 859a8f4dd3f..c6bb8f8946d 100644
--- a/logforwarder/src/apps/vespa-logforwarder-start/main.cpp
+++ b/logforwarder/src/apps/vespa-logforwarder-start/main.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <csignal>
#include <unistd.h>
diff --git a/logserver/CMakeLists.txt b/logserver/CMakeLists.txt
index 736878948fb..76f726f8b38 100644
--- a/logserver/CMakeLists.txt
+++ b/logserver/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(logserver)
vespa_install_script(bin/logserver-start.sh vespa-logserver-start bin)
diff --git a/logserver/bin/logserver-start.sh b/logserver/bin/logserver-start.sh
index 6af8c076246..0853413ec68 100755
--- a/logserver/bin/logserver-start.sh
+++ b/logserver/bin/logserver-start.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/logserver/pom.xml b/logserver/pom.xml
index dca3c321453..99979ac3a60 100644
--- a/logserver/pom.xml
+++ b/logserver/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/logserver/src/main/java/com/yahoo/logserver/AbstractPluginLoader.java b/logserver/src/main/java/com/yahoo/logserver/AbstractPluginLoader.java
index f897933ebe7..f85d69c354c 100644
--- a/logserver/src/main/java/com/yahoo/logserver/AbstractPluginLoader.java
+++ b/logserver/src/main/java/com/yahoo/logserver/AbstractPluginLoader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver;
import java.util.logging.Level;
diff --git a/logserver/src/main/java/com/yahoo/logserver/BuiltinPluginLoader.java b/logserver/src/main/java/com/yahoo/logserver/BuiltinPluginLoader.java
index 3a87ec920a8..e96dde85ab3 100644
--- a/logserver/src/main/java/com/yahoo/logserver/BuiltinPluginLoader.java
+++ b/logserver/src/main/java/com/yahoo/logserver/BuiltinPluginLoader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver;
import java.util.logging.Level;
diff --git a/logserver/src/main/java/com/yahoo/logserver/Flusher.java b/logserver/src/main/java/com/yahoo/logserver/Flusher.java
index 88b44e94aef..0871d84b703 100644
--- a/logserver/src/main/java/com/yahoo/logserver/Flusher.java
+++ b/logserver/src/main/java/com/yahoo/logserver/Flusher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver;
import com.yahoo.logserver.handlers.LogHandler;
diff --git a/logserver/src/main/java/com/yahoo/logserver/LogDispatcher.java b/logserver/src/main/java/com/yahoo/logserver/LogDispatcher.java
index 202d7ac966c..6d37b0737d3 100644
--- a/logserver/src/main/java/com/yahoo/logserver/LogDispatcher.java
+++ b/logserver/src/main/java/com/yahoo/logserver/LogDispatcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver;
import java.util.logging.Level;
diff --git a/logserver/src/main/java/com/yahoo/logserver/PluginLoader.java b/logserver/src/main/java/com/yahoo/logserver/PluginLoader.java
index d2c4731de13..49beb466aba 100644
--- a/logserver/src/main/java/com/yahoo/logserver/PluginLoader.java
+++ b/logserver/src/main/java/com/yahoo/logserver/PluginLoader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver;
/**
diff --git a/logserver/src/main/java/com/yahoo/logserver/Server.java b/logserver/src/main/java/com/yahoo/logserver/Server.java
index cc3ef70e62a..a0f2082e706 100644
--- a/logserver/src/main/java/com/yahoo/logserver/Server.java
+++ b/logserver/src/main/java/com/yahoo/logserver/Server.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver;
import ai.vespa.logserver.protocol.ArchiveLogMessagesMethod;
diff --git a/logserver/src/main/java/com/yahoo/logserver/filter/LevelFilter.java b/logserver/src/main/java/com/yahoo/logserver/filter/LevelFilter.java
index 00d6180ba9d..88c00608ea7 100644
--- a/logserver/src/main/java/com/yahoo/logserver/filter/LevelFilter.java
+++ b/logserver/src/main/java/com/yahoo/logserver/filter/LevelFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.filter;
import com.yahoo.log.LogMessage;
diff --git a/logserver/src/main/java/com/yahoo/logserver/filter/LogFilter.java b/logserver/src/main/java/com/yahoo/logserver/filter/LogFilter.java
index db3d5ddf0cb..980a0d0c2cc 100644
--- a/logserver/src/main/java/com/yahoo/logserver/filter/LogFilter.java
+++ b/logserver/src/main/java/com/yahoo/logserver/filter/LogFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.filter;
import com.yahoo.log.LogMessage;
diff --git a/logserver/src/main/java/com/yahoo/logserver/filter/LogFilterManager.java b/logserver/src/main/java/com/yahoo/logserver/filter/LogFilterManager.java
index 0e91bac164e..66de14a071b 100644
--- a/logserver/src/main/java/com/yahoo/logserver/filter/LogFilterManager.java
+++ b/logserver/src/main/java/com/yahoo/logserver/filter/LogFilterManager.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.filter;
import java.util.HashMap;
diff --git a/logserver/src/main/java/com/yahoo/logserver/filter/MetricsFilter.java b/logserver/src/main/java/com/yahoo/logserver/filter/MetricsFilter.java
index 144d498e290..38c3d4ebee1 100644
--- a/logserver/src/main/java/com/yahoo/logserver/filter/MetricsFilter.java
+++ b/logserver/src/main/java/com/yahoo/logserver/filter/MetricsFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.filter;
import com.yahoo.log.LogLevel;
diff --git a/logserver/src/main/java/com/yahoo/logserver/filter/MuteFilter.java b/logserver/src/main/java/com/yahoo/logserver/filter/MuteFilter.java
index f9940e4e9f4..cb6c9773df9 100644
--- a/logserver/src/main/java/com/yahoo/logserver/filter/MuteFilter.java
+++ b/logserver/src/main/java/com/yahoo/logserver/filter/MuteFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.filter;
import com.yahoo.log.LogMessage;
diff --git a/logserver/src/main/java/com/yahoo/logserver/filter/NoMetricsFilter.java b/logserver/src/main/java/com/yahoo/logserver/filter/NoMetricsFilter.java
index 86d0e382452..71782ed8b0a 100644
--- a/logserver/src/main/java/com/yahoo/logserver/filter/NoMetricsFilter.java
+++ b/logserver/src/main/java/com/yahoo/logserver/filter/NoMetricsFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.filter;
import com.yahoo.log.LogMessage;
diff --git a/logserver/src/main/java/com/yahoo/logserver/filter/NullFilter.java b/logserver/src/main/java/com/yahoo/logserver/filter/NullFilter.java
index aadd8758123..4870f4a69f5 100644
--- a/logserver/src/main/java/com/yahoo/logserver/filter/NullFilter.java
+++ b/logserver/src/main/java/com/yahoo/logserver/filter/NullFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.filter;
import com.yahoo.log.LogMessage;
diff --git a/logserver/src/main/java/com/yahoo/logserver/handlers/AbstractLogHandler.java b/logserver/src/main/java/com/yahoo/logserver/handlers/AbstractLogHandler.java
index 4113cde84dc..a79e6678664 100644
--- a/logserver/src/main/java/com/yahoo/logserver/handlers/AbstractLogHandler.java
+++ b/logserver/src/main/java/com/yahoo/logserver/handlers/AbstractLogHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.handlers;
import java.util.Iterator;
diff --git a/logserver/src/main/java/com/yahoo/logserver/handlers/HandlerThread.java b/logserver/src/main/java/com/yahoo/logserver/handlers/HandlerThread.java
index 21cc50f51c1..04da66ed8d4 100644
--- a/logserver/src/main/java/com/yahoo/logserver/handlers/HandlerThread.java
+++ b/logserver/src/main/java/com/yahoo/logserver/handlers/HandlerThread.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.handlers;
import java.util.ArrayList;
diff --git a/logserver/src/main/java/com/yahoo/logserver/handlers/LogHandler.java b/logserver/src/main/java/com/yahoo/logserver/handlers/LogHandler.java
index 58910613ec8..b0d08edafbd 100644
--- a/logserver/src/main/java/com/yahoo/logserver/handlers/LogHandler.java
+++ b/logserver/src/main/java/com/yahoo/logserver/handlers/LogHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.handlers;
import com.yahoo.log.LogMessage;
diff --git a/logserver/src/main/java/com/yahoo/logserver/handlers/archive/ArchiverHandler.java b/logserver/src/main/java/com/yahoo/logserver/handlers/archive/ArchiverHandler.java
index 021517f1cdc..0e9eeefcc46 100644
--- a/logserver/src/main/java/com/yahoo/logserver/handlers/archive/ArchiverHandler.java
+++ b/logserver/src/main/java/com/yahoo/logserver/handlers/archive/ArchiverHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.handlers.archive;
import java.util.logging.Level;
diff --git a/logserver/src/main/java/com/yahoo/logserver/handlers/archive/ArchiverPlugin.java b/logserver/src/main/java/com/yahoo/logserver/handlers/archive/ArchiverPlugin.java
index 8e424e1f81c..deb3b1adcf4 100644
--- a/logserver/src/main/java/com/yahoo/logserver/handlers/archive/ArchiverPlugin.java
+++ b/logserver/src/main/java/com/yahoo/logserver/handlers/archive/ArchiverPlugin.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.handlers.archive;
import java.util.logging.Logger;
diff --git a/logserver/src/main/java/com/yahoo/logserver/handlers/archive/LogWriter.java b/logserver/src/main/java/com/yahoo/logserver/handlers/archive/LogWriter.java
index 0d69131ff52..eca81ce95a2 100644
--- a/logserver/src/main/java/com/yahoo/logserver/handlers/archive/LogWriter.java
+++ b/logserver/src/main/java/com/yahoo/logserver/handlers/archive/LogWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.handlers.archive;
import java.io.File;
diff --git a/logserver/src/main/java/com/yahoo/logserver/handlers/archive/LogWriterLRUCache.java b/logserver/src/main/java/com/yahoo/logserver/handlers/archive/LogWriterLRUCache.java
index 5c1da722f57..c499c1c3054 100644
--- a/logserver/src/main/java/com/yahoo/logserver/handlers/archive/LogWriterLRUCache.java
+++ b/logserver/src/main/java/com/yahoo/logserver/handlers/archive/LogWriterLRUCache.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.handlers.archive;
import java.io.IOException;
diff --git a/logserver/src/main/java/com/yahoo/logserver/handlers/logmetrics/LogMetricsHandler.java b/logserver/src/main/java/com/yahoo/logserver/handlers/logmetrics/LogMetricsHandler.java
index 9566c534d5d..849e3f6ac0b 100644
--- a/logserver/src/main/java/com/yahoo/logserver/handlers/logmetrics/LogMetricsHandler.java
+++ b/logserver/src/main/java/com/yahoo/logserver/handlers/logmetrics/LogMetricsHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* $Id$
*/
diff --git a/logserver/src/main/java/com/yahoo/logserver/handlers/logmetrics/LogMetricsPlugin.java b/logserver/src/main/java/com/yahoo/logserver/handlers/logmetrics/LogMetricsPlugin.java
index c7bfe8df2b6..d2c217fb4e0 100644
--- a/logserver/src/main/java/com/yahoo/logserver/handlers/logmetrics/LogMetricsPlugin.java
+++ b/logserver/src/main/java/com/yahoo/logserver/handlers/logmetrics/LogMetricsPlugin.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* $Id$
*/
diff --git a/logserver/src/main/java/com/yahoo/logserver/testutils/VerifyLogfile.java b/logserver/src/main/java/com/yahoo/logserver/testutils/VerifyLogfile.java
index a398c2d6aff..928b4b1c687 100644
--- a/logserver/src/main/java/com/yahoo/logserver/testutils/VerifyLogfile.java
+++ b/logserver/src/main/java/com/yahoo/logserver/testutils/VerifyLogfile.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.testutils;
import java.io.BufferedReader;
diff --git a/logserver/src/main/java/com/yahoo/plugin/Config.java b/logserver/src/main/java/com/yahoo/plugin/Config.java
index 36de00d06c9..ed5cb470b13 100644
--- a/logserver/src/main/java/com/yahoo/plugin/Config.java
+++ b/logserver/src/main/java/com/yahoo/plugin/Config.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.plugin;
/**
diff --git a/logserver/src/main/java/com/yahoo/plugin/Plugin.java b/logserver/src/main/java/com/yahoo/plugin/Plugin.java
index cd9ef0eee90..1ba497be833 100644
--- a/logserver/src/main/java/com/yahoo/plugin/Plugin.java
+++ b/logserver/src/main/java/com/yahoo/plugin/Plugin.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.plugin;
/**
diff --git a/logserver/src/main/java/com/yahoo/plugin/SystemPropertyConfig.java b/logserver/src/main/java/com/yahoo/plugin/SystemPropertyConfig.java
index 4d801cd6229..01b4b584ddc 100644
--- a/logserver/src/main/java/com/yahoo/plugin/SystemPropertyConfig.java
+++ b/logserver/src/main/java/com/yahoo/plugin/SystemPropertyConfig.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.plugin;
/**
diff --git a/logserver/src/test/java/com/yahoo/logserver/FlusherTestCase.java b/logserver/src/test/java/com/yahoo/logserver/FlusherTestCase.java
index 3de6413b6ce..c2fb6a14e86 100644
--- a/logserver/src/test/java/com/yahoo/logserver/FlusherTestCase.java
+++ b/logserver/src/test/java/com/yahoo/logserver/FlusherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver;
import com.yahoo.log.LogMessage;
diff --git a/logserver/src/test/java/com/yahoo/logserver/ServerTestCase.java b/logserver/src/test/java/com/yahoo/logserver/ServerTestCase.java
index 23fa0b868b3..996c66346f7 100644
--- a/logserver/src/test/java/com/yahoo/logserver/ServerTestCase.java
+++ b/logserver/src/test/java/com/yahoo/logserver/ServerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver;
import com.yahoo.log.LogSetup;
diff --git a/logserver/src/test/java/com/yahoo/logserver/filter/test/LogFilterManagerTestCase.java b/logserver/src/test/java/com/yahoo/logserver/filter/test/LogFilterManagerTestCase.java
index 781a0d7fbe8..c8fad351c28 100644
--- a/logserver/src/test/java/com/yahoo/logserver/filter/test/LogFilterManagerTestCase.java
+++ b/logserver/src/test/java/com/yahoo/logserver/filter/test/LogFilterManagerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.filter.test;
import com.yahoo.logserver.filter.LogFilter;
diff --git a/logserver/src/test/java/com/yahoo/logserver/filter/test/MetricsFilterTestCase.java b/logserver/src/test/java/com/yahoo/logserver/filter/test/MetricsFilterTestCase.java
index c8def5619d4..c04e44e474b 100644
--- a/logserver/src/test/java/com/yahoo/logserver/filter/test/MetricsFilterTestCase.java
+++ b/logserver/src/test/java/com/yahoo/logserver/filter/test/MetricsFilterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.filter.test;
import java.io.BufferedReader;
diff --git a/logserver/src/test/java/com/yahoo/logserver/filter/test/NoMetricsFilterTestCase.java b/logserver/src/test/java/com/yahoo/logserver/filter/test/NoMetricsFilterTestCase.java
index b3264e61521..f8dcc294ce7 100644
--- a/logserver/src/test/java/com/yahoo/logserver/filter/test/NoMetricsFilterTestCase.java
+++ b/logserver/src/test/java/com/yahoo/logserver/filter/test/NoMetricsFilterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.filter.test;
import java.io.BufferedReader;
diff --git a/logserver/src/test/java/com/yahoo/logserver/handlers/HandlerThreadTestCase.java b/logserver/src/test/java/com/yahoo/logserver/handlers/HandlerThreadTestCase.java
index a512e2183cc..5041a5a6b6e 100644
--- a/logserver/src/test/java/com/yahoo/logserver/handlers/HandlerThreadTestCase.java
+++ b/logserver/src/test/java/com/yahoo/logserver/handlers/HandlerThreadTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.handlers;
import static org.junit.Assert.*;
diff --git a/logserver/src/test/java/com/yahoo/logserver/handlers/archive/ArchiverHandlerTestCase.java b/logserver/src/test/java/com/yahoo/logserver/handlers/archive/ArchiverHandlerTestCase.java
index 1c6b3e2a6ad..f3153f7bc14 100644
--- a/logserver/src/test/java/com/yahoo/logserver/handlers/archive/ArchiverHandlerTestCase.java
+++ b/logserver/src/test/java/com/yahoo/logserver/handlers/archive/ArchiverHandlerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.handlers.archive;
import com.yahoo.log.InvalidLogFormatException;
diff --git a/logserver/src/test/java/com/yahoo/logserver/handlers/logmetrics/test/LogMetricsTestCase.java b/logserver/src/test/java/com/yahoo/logserver/handlers/logmetrics/test/LogMetricsTestCase.java
index 434131878c0..5602d5be0d6 100644
--- a/logserver/src/test/java/com/yahoo/logserver/handlers/logmetrics/test/LogMetricsTestCase.java
+++ b/logserver/src/test/java/com/yahoo/logserver/handlers/logmetrics/test/LogMetricsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.handlers.logmetrics.test;
import java.util.Map;
diff --git a/logserver/src/test/java/com/yahoo/logserver/test/LogDispatcherTestCase.java b/logserver/src/test/java/com/yahoo/logserver/test/LogDispatcherTestCase.java
index 6c6f9f693ec..f205b48f088 100644
--- a/logserver/src/test/java/com/yahoo/logserver/test/LogDispatcherTestCase.java
+++ b/logserver/src/test/java/com/yahoo/logserver/test/LogDispatcherTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.logserver.test;
import java.util.ArrayList;
diff --git a/lowercasing_test/CMakeLists.txt b/lowercasing_test/CMakeLists.txt
index f33be03cbe8..b08a6ef350d 100644
--- a/lowercasing_test/CMakeLists.txt
+++ b/lowercasing_test/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/lowercasing_test/src/binref/CMakeLists.txt b/lowercasing_test/src/binref/CMakeLists.txt
index a28d2c521ea..47ec2e57926 100644
--- a/lowercasing_test/src/binref/CMakeLists.txt
+++ b/lowercasing_test/src/binref/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
configure_file(compilejava.in compilejava @ONLY)
configure_file(runjava.in runjava @ONLY)
diff --git a/lowercasing_test/src/binref/compilejava.in b/lowercasing_test/src/binref/compilejava.in
index 7ec4a04bc1b..2307ba9d8ab 100755
--- a/lowercasing_test/src/binref/compilejava.in
+++ b/lowercasing_test/src/binref/compilejava.in
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
unset VESPA_LOG_TARGET
if [ -n "$VESPA_CPP_TEST_JARS" ]; then
diff --git a/lowercasing_test/src/binref/env.sh.in b/lowercasing_test/src/binref/env.sh.in
index 05bf4966c4b..8a794622835 100644
--- a/lowercasing_test/src/binref/env.sh.in
+++ b/lowercasing_test/src/binref/env.sh.in
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
BINREF=@CMAKE_CURRENT_BINARY_DIR@
export BINREF
diff --git a/lowercasing_test/src/binref/runjava.in b/lowercasing_test/src/binref/runjava.in
index 0331afd956c..39fe8a95fa3 100755
--- a/lowercasing_test/src/binref/runjava.in
+++ b/lowercasing_test/src/binref/runjava.in
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
unset VESPA_LOG_TARGET
if [ -n "$VESPA_CPP_TEST_JARS" ]; then
diff --git a/lowercasing_test/src/tests/lowercasing/CMakeLists.txt b/lowercasing_test/src/tests/lowercasing/CMakeLists.txt
index 84437778019..83d32a4607e 100644
--- a/lowercasing_test/src/tests/lowercasing/CMakeLists.txt
+++ b/lowercasing_test/src/tests/lowercasing/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(lowercasing_test_casingvariants_fastlib_app TEST
SOURCES
casingvariants_fastlib.cpp
diff --git a/lowercasing_test/src/tests/lowercasing/CasingVariants.java b/lowercasing_test/src/tests/lowercasing/CasingVariants.java
index cb315a4bbf9..c97b9e77880 100644
--- a/lowercasing_test/src/tests/lowercasing/CasingVariants.java
+++ b/lowercasing_test/src/tests/lowercasing/CasingVariants.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import static com.yahoo.language.LinguisticsCase.toLowerCase;
import java.io.File;
diff --git a/lowercasing_test/src/tests/lowercasing/casingvariants_fastlib.cpp b/lowercasing_test/src/tests/lowercasing/casingvariants_fastlib.cpp
index e2fff25bfb9..c168cc71e15 100644
--- a/lowercasing_test/src/tests/lowercasing/casingvariants_fastlib.cpp
+++ b/lowercasing_test/src/tests/lowercasing/casingvariants_fastlib.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fastlib/text/normwordfolder.h>
#include <cassert>
diff --git a/lowercasing_test/src/tests/lowercasing/casingvariants_vespalib.cpp b/lowercasing_test/src/tests/lowercasing/casingvariants_vespalib.cpp
index 6f82da9023b..00f905f5152 100644
--- a/lowercasing_test/src/tests/lowercasing/casingvariants_vespalib.cpp
+++ b/lowercasing_test/src/tests/lowercasing/casingvariants_vespalib.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/text/lowercase.h>
#include <vespa/vespalib/text/utf8.h>
#include <fstream>
diff --git a/lowercasing_test/src/tests/lowercasing/dotest.sh b/lowercasing_test/src/tests/lowercasing/dotest.sh
index 91ff137558f..e5a7c4fa287 100755
--- a/lowercasing_test/src/tests/lowercasing/dotest.sh
+++ b/lowercasing_test/src/tests/lowercasing/dotest.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
if [ -z "$SOURCE_DIRECTORY" ]; then
diff --git a/lowercasing_test/src/tests/lowercasing/fetchletters.py b/lowercasing_test/src/tests/lowercasing/fetchletters.py
index 77efa1ca16a..b90efadf2d4 100644
--- a/lowercasing_test/src/tests/lowercasing/fetchletters.py
+++ b/lowercasing_test/src/tests/lowercasing/fetchletters.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# This program reads a Unicode database and emits all letters in lower
# and upper case.
diff --git a/lowercasing_test/src/tests/lowercasing/lowercasing_test.sh b/lowercasing_test/src/tests/lowercasing/lowercasing_test.sh
index 350752b0227..86118310af6 100755
--- a/lowercasing_test/src/tests/lowercasing/lowercasing_test.sh
+++ b/lowercasing_test/src/tests/lowercasing/lowercasing_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
if [ -z "$SOURCE_DIRECTORY" ]; then
diff --git a/maven-plugins/pom.xml b/maven-plugins/pom.xml
index 5d3fe638d4d..806015c3100 100644
--- a/maven-plugins/pom.xml
+++ b/maven-plugins/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -23,4 +23,9 @@
<module>../configgen</module>
<module>../vespa-application-maven-plugin</module>
</modules>
+
+ <properties>
+ <maven.deploy.skip>true</maven.deploy.skip>
+ <maven.javadoc.skip>true</maven.javadoc.skip>
+ </properties>
</project>
diff --git a/messagebus/CMakeLists.txt b/messagebus/CMakeLists.txt
index 8359820c06d..87cbcaa7f01 100644
--- a/messagebus/CMakeLists.txt
+++ b/messagebus/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/messagebus/abi-spec.json b/messagebus/abi-spec.json
index f3e7c5664d6..623904bef8d 100644
--- a/messagebus/abi-spec.json
+++ b/messagebus/abi-spec.json
@@ -64,9 +64,23 @@
],
"fields": []
},
+ "com.yahoo.messagebus.Connectable": {
+ "superClass": "java.lang.Object",
+ "interfaces": [],
+ "attributes": [
+ "public",
+ "interface",
+ "abstract"
+ ],
+ "methods": [
+ "public abstract void connect()"
+ ],
+ "fields": []
+ },
"com.yahoo.messagebus.DestinationSession": {
"superClass": "java.lang.Object",
"interfaces": [
+ "com.yahoo.messagebus.Connectable",
"com.yahoo.messagebus.MessageHandler"
],
"attributes": [
@@ -81,7 +95,8 @@
"public com.yahoo.messagebus.MessageHandler getMessageHandler()",
"public java.lang.String getConnectionSpec()",
"public java.lang.String getName()",
- "public void handleMessage(com.yahoo.messagebus.Message)"
+ "public void handleMessage(com.yahoo.messagebus.Message)",
+ "public void connect()"
],
"fields": []
},
@@ -213,7 +228,8 @@
"superClass": "java.lang.Object",
"interfaces": [
"com.yahoo.messagebus.MessageHandler",
- "com.yahoo.messagebus.ReplyHandler"
+ "com.yahoo.messagebus.ReplyHandler",
+ "com.yahoo.messagebus.Connectable"
],
"attributes": [
"public",
@@ -228,7 +244,8 @@
"public java.lang.String getConnectionSpec()",
"public java.lang.String getName()",
"public void handleMessage(com.yahoo.messagebus.Message)",
- "public void handleReply(com.yahoo.messagebus.Reply)"
+ "public void handleReply(com.yahoo.messagebus.Reply)",
+ "public void connect()"
],
"fields": []
},
@@ -311,6 +328,7 @@
"public void register(com.yahoo.messagebus.MessageBus$SendBlockedMessages)",
"public void <init>(com.yahoo.messagebus.network.Network, java.util.List)",
"public void <init>(com.yahoo.messagebus.network.Network, com.yahoo.messagebus.MessageBusParams)",
+ "public void <init>(com.yahoo.messagebus.network.NetworkMultiplexer, com.yahoo.messagebus.MessageBusParams)",
"public boolean destroy()",
"public void sync()",
"public com.yahoo.messagebus.SourceSession createSourceSession(com.yahoo.messagebus.ReplyHandler)",
@@ -318,15 +336,17 @@
"public com.yahoo.messagebus.SourceSession createSourceSession(com.yahoo.messagebus.SourceSessionParams)",
"public com.yahoo.messagebus.IntermediateSession createIntermediateSession(java.lang.String, boolean, com.yahoo.messagebus.MessageHandler, com.yahoo.messagebus.ReplyHandler)",
"public synchronized com.yahoo.messagebus.IntermediateSession createIntermediateSession(com.yahoo.messagebus.IntermediateSessionParams)",
+ "public synchronized com.yahoo.messagebus.IntermediateSession createDetachedIntermediateSession(com.yahoo.messagebus.IntermediateSessionParams)",
"public com.yahoo.messagebus.DestinationSession createDestinationSession(java.lang.String, boolean, com.yahoo.messagebus.MessageHandler)",
"public synchronized com.yahoo.messagebus.DestinationSession createDestinationSession(com.yahoo.messagebus.DestinationSessionParams)",
+ "public synchronized com.yahoo.messagebus.DestinationSession createDetachedDestinationSession(com.yahoo.messagebus.DestinationSessionParams)",
+ "public void connect(java.lang.String, boolean)",
"public synchronized void unregisterSession(java.lang.String, boolean)",
"public void handleMessage(com.yahoo.messagebus.Message)",
"public void handleReply(com.yahoo.messagebus.Reply)",
"public void deliverMessage(com.yahoo.messagebus.Message, java.lang.String)",
"public void putProtocol(com.yahoo.messagebus.Protocol)",
"public com.yahoo.messagebus.Protocol getProtocol(com.yahoo.text.Utf8Array)",
- "public com.yahoo.messagebus.Protocol getProtocol(com.yahoo.text.Utf8String)",
"public void deliverReply(com.yahoo.messagebus.Reply, com.yahoo.messagebus.ReplyHandler)",
"public void setupRouting(com.yahoo.messagebus.routing.RoutingSpec)",
"public com.yahoo.messagebus.routing.Resender getResender()",
diff --git a/messagebus/pom.xml b/messagebus/pom.xml
index 4e9984e482c..d2ce9cb36d8 100644
--- a/messagebus/pom.xml
+++ b/messagebus/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
diff --git a/messagebus/src/Doxyfile b/messagebus/src/Doxyfile
index dea22b85e5a..36feecfb9e3 100644
--- a/messagebus/src/Doxyfile
+++ b/messagebus/src/Doxyfile
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Doxyfile 1.4.7
# This file describes the settings to be used by the documentation system
diff --git a/messagebus/src/apps/printversion/CMakeLists.txt b/messagebus/src/apps/printversion/CMakeLists.txt
index edf0fc5f126..5ee6c33b6bb 100644
--- a/messagebus/src/apps/printversion/CMakeLists.txt
+++ b/messagebus/src/apps/printversion/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_printversion_app
SOURCES
printversion.cpp
diff --git a/messagebus/src/apps/printversion/printversion.cpp b/messagebus/src/apps/printversion/printversion.cpp
index 69cb78a64ba..f52775d798c 100644
--- a/messagebus/src/apps/printversion/printversion.cpp
+++ b/messagebus/src/apps/printversion/printversion.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/component/vtag.h>
#include <stdio.h>
diff --git a/messagebus/src/main/config/messagebus.def b/messagebus/src/main/config/messagebus.def
index b750530ec5f..39a949aae9b 100644
--- a/messagebus/src/main/config/messagebus.def
+++ b/messagebus/src/main/config/messagebus.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=messagebus
# Name of the protocol that uses this routing table. All
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/AllPassThrottlePolicy.java b/messagebus/src/main/java/com/yahoo/messagebus/AllPassThrottlePolicy.java
index a7753a7401e..ab34ee6913f 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/AllPassThrottlePolicy.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/AllPassThrottlePolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/CallStack.java b/messagebus/src/main/java/com/yahoo/messagebus/CallStack.java
index 717d2a97fe2..60eef8e419b 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/CallStack.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/CallStack.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import java.util.ArrayDeque;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/ConfigAgent.java b/messagebus/src/main/java/com/yahoo/messagebus/ConfigAgent.java
index f0c7d712f8d..4db97f0c083 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/ConfigAgent.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/ConfigAgent.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.config.subscription.ConfigSubscriber;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/ConfigHandler.java b/messagebus/src/main/java/com/yahoo/messagebus/ConfigHandler.java
index 4e29d662bd2..f6e34c3f9f3 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/ConfigHandler.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/ConfigHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.messagebus.routing.RoutingSpec;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/Connectable.java b/messagebus/src/main/java/com/yahoo/messagebus/Connectable.java
new file mode 100644
index 00000000000..db8d926db43
--- /dev/null
+++ b/messagebus/src/main/java/com/yahoo/messagebus/Connectable.java
@@ -0,0 +1,13 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.messagebus;
+
+/**
+ * Something which can be connected to a network when ready to receive incoming requests.
+ *
+ * @author jonmv
+ */
+public interface Connectable {
+
+ void connect();
+
+}
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/DestinationSession.java b/messagebus/src/main/java/com/yahoo/messagebus/DestinationSession.java
index a4b5422d502..509ea5903c5 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/DestinationSession.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/DestinationSession.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -9,7 +9,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
*
* @author Simon Thoresen Hult
*/
-public final class DestinationSession implements MessageHandler {
+public final class DestinationSession implements Connectable, MessageHandler {
private final AtomicBoolean destroyed = new AtomicBoolean(false);
private final String name;
@@ -125,4 +125,9 @@ public final class DestinationSession implements MessageHandler {
msgHandler.handleMessage(msg);
}
+ @Override
+ public void connect() {
+ mbus.connect(name, broadcastName);
+ }
+
}
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/DestinationSessionParams.java b/messagebus/src/main/java/com/yahoo/messagebus/DestinationSessionParams.java
index cf022aa52da..5c768ec997c 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/DestinationSessionParams.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/DestinationSessionParams.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/DynamicThrottlePolicy.java b/messagebus/src/main/java/com/yahoo/messagebus/DynamicThrottlePolicy.java
index 9aa7529cd8b..930b8bd8f3f 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/DynamicThrottlePolicy.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/DynamicThrottlePolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.concurrent.SystemTimer;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/EmptyReply.java b/messagebus/src/main/java/com/yahoo/messagebus/EmptyReply.java
index 38fb4c723b6..e668acc9b5d 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/EmptyReply.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/EmptyReply.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.text.Utf8String;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/Error.java b/messagebus/src/main/java/com/yahoo/messagebus/Error.java
index 475dea3d7ac..edefa14e07f 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/Error.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/Error.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/ErrorCode.java b/messagebus/src/main/java/com/yahoo/messagebus/ErrorCode.java
index 9bde5e32fd7..a233e4d4050 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/ErrorCode.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/ErrorCode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/IntermediateSession.java b/messagebus/src/main/java/com/yahoo/messagebus/IntermediateSession.java
index ca772ce6c3a..d5b7e045254 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/IntermediateSession.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/IntermediateSession.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -9,7 +9,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
*
* @author Simon Thoresen Hult
*/
-public final class IntermediateSession implements MessageHandler, ReplyHandler {
+public final class IntermediateSession implements MessageHandler, ReplyHandler, Connectable {
private final AtomicBoolean destroyed = new AtomicBoolean(false);
private final String name;
@@ -114,4 +114,9 @@ public final class IntermediateSession implements MessageHandler, ReplyHandler {
}
}
+ @Override
+ public void connect() {
+ mbus.connect(name, broadcastName);
+ }
+
}
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/IntermediateSessionParams.java b/messagebus/src/main/java/com/yahoo/messagebus/IntermediateSessionParams.java
index 19c6e6b4d7c..8b2a5b85f2c 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/IntermediateSessionParams.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/IntermediateSessionParams.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/Message.java b/messagebus/src/main/java/com/yahoo/messagebus/Message.java
index 696211d7c45..1fa240c91ee 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/Message.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/Message.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.concurrent.SystemTimer;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java b/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java
index 99d9a6d6483..085978375a6 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java
@@ -1,10 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
-import com.yahoo.concurrent.CopyOnWriteHashMap;
import com.yahoo.concurrent.SystemTimer;
import java.util.logging.Level;
import com.yahoo.messagebus.network.Network;
+import com.yahoo.messagebus.network.NetworkMultiplexer;
import com.yahoo.messagebus.network.NetworkOwner;
import com.yahoo.messagebus.routing.Resender;
import com.yahoo.messagebus.routing.RetryPolicy;
@@ -64,7 +64,7 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler,
private final ProtocolRepository protocolRepository = new ProtocolRepository();
private final AtomicReference<Map<String, RoutingTable>> tablesRef = new AtomicReference<>(null);
private final Map<String, MessageHandler> sessions = new ConcurrentHashMap<>();
- private final Network net;
+ private final NetworkMultiplexer net;
private final Messenger msn;
private final Resender resender;
private int maxPendingCount;
@@ -117,13 +117,25 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler,
/**
* <p>Constructs an instance of message bus. This requires a network object
- * that it will associate with. This assignment may not change during the
- * lifetime of this message bus.</p>
+ * that it will associate with. This assignment may not change during the lifetime
+ * of this message bus, and this bus will be the single owner of this net.</p>
*
* @param net The network to associate with.
* @param params The parameters that controls this bus.
*/
public MessageBus(Network net, MessageBusParams params) {
+ this(NetworkMultiplexer.dedicated(net), params);
+ }
+
+ /**
+ * <p>Constructs an instance of message bus. This requires a network multiplexer
+ * that it will associate with. This assignment may not change during the
+ * lifetime of this message bus.</p>
+ *
+ * @param net The network multiplexer to associate with.
+ * @param params The parameters that controls this bus.
+ */
+ public MessageBus(NetworkMultiplexer net, MessageBusParams params) {
// Add all known protocols to the repository.
maxPendingCount = params.getMaxPendingCount();
maxPendingSize = params.getMaxPendingSize();
@@ -134,7 +146,7 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler,
// Attach and start network.
this.net = net;
net.attach(this);
- if ( ! net.waitUntilReady(120))
+ if ( ! net.net().waitUntilReady(120))
throw new IllegalStateException("Network failed to become ready in time.");
// Start messenger.
@@ -167,7 +179,7 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler,
careTaker.join();
} catch (InterruptedException e) { }
protocolRepository.clearPolicyCache();
- net.shutdown();
+ net.detach(this);
msn.destroy();
if (resender != null) {
resender.destroy();
@@ -186,7 +198,7 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler,
*/
public void sync() {
msn.sync();
- net.sync();
+ net.net().sync();
}
/**
@@ -259,6 +271,12 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler,
* @return The created session.
*/
public synchronized IntermediateSession createIntermediateSession(IntermediateSessionParams params) {
+ IntermediateSession session = createDetachedIntermediateSession(params);
+ connect(params.getName(), params.getBroadcastName());
+ return session;
+ }
+
+ public synchronized IntermediateSession createDetachedIntermediateSession(IntermediateSessionParams params) {
if (destroyed.get()) {
throw new IllegalStateException("Object is destroyed.");
}
@@ -267,9 +285,6 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler,
}
IntermediateSession session = new IntermediateSession(this, params);
sessions.put(params.getName(), session);
- if (params.getBroadcastName()) {
- net.registerSession(params.getName());
- }
return session;
}
@@ -302,6 +317,12 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler,
* @return The created session.
*/
public synchronized DestinationSession createDestinationSession(DestinationSessionParams params) {
+ DestinationSession session = createDetachedDestinationSession(params);
+ connect(params.getName(), params.getBroadcastName());
+ return session;
+ }
+
+ public synchronized DestinationSession createDetachedDestinationSession(DestinationSessionParams params) {
if (destroyed.get()) {
throw new IllegalStateException("Object is destroyed.");
}
@@ -310,12 +331,14 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler,
}
DestinationSession session = new DestinationSession(this, params);
sessions.put(params.getName(), session);
- if (params.getBroadcastName()) {
- net.registerSession(params.getName());
- }
return session;
}
+ /** Connects the given session to the network, so it will receive requests. */
+ public void connect(String session, boolean broadcast) {
+ net.registerSession(session, this, broadcast);
+ }
+
/**
* <p>This method is invoked by the {@link
* com.yahoo.messagebus.IntermediateSession#destroy()} to unregister
@@ -325,9 +348,7 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler,
* @param broadcastName Whether or not session name was broadcast.
*/
public synchronized void unregisterSession(String name, boolean broadcastName) {
- if (broadcastName) {
- net.unregisterSession(name);
- }
+ net.unregisterSession(name, this, broadcastName);
sessions.remove(name);
}
@@ -371,7 +392,7 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler,
deliverError(msg, ErrorCode.SEQUENCE_ERROR, "Bucket sequences not supported when resender is enabled.");
return;
}
- SendProxy proxy = new SendProxy(this, net, resender);
+ SendProxy proxy = new SendProxy(this, net.net(), resender);
msn.deliverMessage(msg, proxy);
}
@@ -396,7 +417,7 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler,
if (msgHandler == null) {
deliverError(msg, ErrorCode.UNKNOWN_SESSION, "Session '" + session + "' does not exist.");
} else if (!checkPending(msg)) {
- deliverError(msg, ErrorCode.SESSION_BUSY, "Session '" + net.getConnectionSpec() + "/" + session +
+ deliverError(msg, ErrorCode.SESSION_BUSY, "Session '" + net.net().getConnectionSpec() + "/" + session +
"' is busy, try again later.");
} else {
msn.deliverMessage(msg, msgHandler);
@@ -419,11 +440,6 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler,
return protocolRepository.getProtocol(name.toString());
}
- public Protocol getProtocol(Utf8String name) {
- return getProtocol((Utf8Array)name);
- }
-
- @Override
public void deliverReply(Reply reply, ReplyHandler handler) {
msn.deliverReply(reply, handler);
}
@@ -569,7 +585,7 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler,
* @return The connection string.
*/
public String getConnectionSpec() {
- return net.getConnectionSpec();
+ return net.net().getConnectionSpec();
}
/**
@@ -608,5 +624,5 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler,
}
}
-}
+}
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/MessageBusParams.java b/messagebus/src/main/java/com/yahoo/messagebus/MessageBusParams.java
index 2c8382ab715..1b18178d638 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/MessageBusParams.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/MessageBusParams.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.messagebus.routing.RetryPolicy;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/MessageHandler.java b/messagebus/src/main/java/com/yahoo/messagebus/MessageHandler.java
index 5f90a220605..015094ef9f6 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/MessageHandler.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/MessageHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/Messenger.java b/messagebus/src/main/java/com/yahoo/messagebus/Messenger.java
index 0cc8310937b..f2ebbbe76cb 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/Messenger.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/Messenger.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import java.util.logging.Level;
@@ -128,7 +128,7 @@ public class Messenger implements Runnable {
*/
public boolean destroy() {
boolean done = false;
- enqueue(Terminate.INSTANCE);
+ enqueue(TERMINATE);
if (!destroyed.getAndSet(true)) {
try {
synchronized (this) {
@@ -161,7 +161,7 @@ public class Messenger implements Runnable {
task = queue.poll();
}
}
- if (task == Terminate.INSTANCE) {
+ if (task == TERMINATE) {
break;
}
if (task != null) {
@@ -175,7 +175,7 @@ public class Messenger implements Runnable {
} catch (final Exception e) {
log.warning("An exception was thrown while destroying " + task.getClass().getName() + ": " +
e.toString());
- log.warning("Someone, somewhere might have to wait indefinetly for something.");
+ log.warning("Someone, somewhere might have to wait indefinitely for something.");
}
}
for (final Task child : children) {
@@ -235,18 +235,9 @@ public class Messenger implements Runnable {
}
}
- private static class Terminate implements Task {
+ private static final Task TERMINATE = new Task() {
+ @Override public void run() { }
+ @Override public void destroy() { }
+ };
- static final Terminate INSTANCE = new Terminate();
-
- @Override
- public void run() {
- // empty
- }
-
- @Override
- public void destroy() {
- // empty
- }
- }
}
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/NetworkMessageBus.java b/messagebus/src/main/java/com/yahoo/messagebus/NetworkMessageBus.java
index 10b337bd28a..6007ab8ed38 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/NetworkMessageBus.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/NetworkMessageBus.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.messagebus.network.Network;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/Protocol.java b/messagebus/src/main/java/com/yahoo/messagebus/Protocol.java
index d1c19cda88c..fd46e2f4221 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/Protocol.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/Protocol.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.component.Version;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/ProtocolRepository.java b/messagebus/src/main/java/com/yahoo/messagebus/ProtocolRepository.java
index 4ca4887221a..a2a012b8312 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/ProtocolRepository.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/ProtocolRepository.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.concurrent.CopyOnWriteHashMap;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/RPCMessageBus.java b/messagebus/src/main/java/com/yahoo/messagebus/RPCMessageBus.java
index f5bf03c5420..da930dba513 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/RPCMessageBus.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/RPCMessageBus.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.messagebus.network.Identity;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/RateThrottlingPolicy.java b/messagebus/src/main/java/com/yahoo/messagebus/RateThrottlingPolicy.java
index 029c6a8074c..64fc1894c71 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/RateThrottlingPolicy.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/RateThrottlingPolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.concurrent.SystemTimer;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/Reply.java b/messagebus/src/main/java/com/yahoo/messagebus/Reply.java
index 445f1c966d8..78fb3d96eca 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/Reply.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/Reply.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import java.util.ArrayList;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/ReplyHandler.java b/messagebus/src/main/java/com/yahoo/messagebus/ReplyHandler.java
index e37983799fb..a2bcf5150b3 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/ReplyHandler.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/ReplyHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/Result.java b/messagebus/src/main/java/com/yahoo/messagebus/Result.java
index 0d15b79ba05..e344f50658c 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/Result.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/Result.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/Routable.java b/messagebus/src/main/java/com/yahoo/messagebus/Routable.java
index 792ec4d27cd..31adc764565 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/Routable.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/Routable.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.text.Utf8String;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/SendProxy.java b/messagebus/src/main/java/com/yahoo/messagebus/SendProxy.java
index 184d95dcd1d..a62dad67fd8 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/SendProxy.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/SendProxy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.messagebus.network.Network;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java b/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java
index fcef11b2e74..15bc15f88b8 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/Sequencer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import java.util.HashMap;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/SourceSession.java b/messagebus/src/main/java/com/yahoo/messagebus/SourceSession.java
index 248cbdca7a0..85892b4cb87 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/SourceSession.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/SourceSession.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.messagebus.routing.Route;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/SourceSessionParams.java b/messagebus/src/main/java/com/yahoo/messagebus/SourceSessionParams.java
index e9796e6c4d2..bce2c9f29dd 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/SourceSessionParams.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/SourceSessionParams.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/StaticThrottlePolicy.java b/messagebus/src/main/java/com/yahoo/messagebus/StaticThrottlePolicy.java
index 52b92737bb9..fe709baf1ad 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/StaticThrottlePolicy.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/StaticThrottlePolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/ThrottlePolicy.java b/messagebus/src/main/java/com/yahoo/messagebus/ThrottlePolicy.java
index 1c7595f2b5c..033923c5820 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/ThrottlePolicy.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/ThrottlePolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/Trace.java b/messagebus/src/main/java/com/yahoo/messagebus/Trace.java
index 87f58f6ce05..edddffc78d6 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/Trace.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/Trace.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/TraceLevel.java b/messagebus/src/main/java/com/yahoo/messagebus/TraceLevel.java
index 719e1ed571c..d859fdd6f23 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/TraceLevel.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/TraceLevel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/TraceNode.java b/messagebus/src/main/java/com/yahoo/messagebus/TraceNode.java
index b6d41a0f112..9eccec8b5c5 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/TraceNode.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/TraceNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import java.util.logging.Level;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/Identity.java b/messagebus/src/main/java/com/yahoo/messagebus/network/Identity.java
index 5fafc139c70..1362052996a 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/Identity.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/Identity.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network;
import com.yahoo.net.HostName;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/Network.java b/messagebus/src/main/java/com/yahoo/messagebus/network/Network.java
index 095ff06b033..168d776104c 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/Network.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/Network.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network;
import com.yahoo.jrt.slobrok.api.IMirror;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/NetworkMultiplexer.java b/messagebus/src/main/java/com/yahoo/messagebus/network/NetworkMultiplexer.java
new file mode 100644
index 00000000000..d36579d5be1
--- /dev/null
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/NetworkMultiplexer.java
@@ -0,0 +1,148 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.messagebus.network;
+
+import com.yahoo.messagebus.Message;
+import com.yahoo.messagebus.Protocol;
+import com.yahoo.text.Utf8Array;
+
+import java.util.Deque;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentLinkedDeque;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.logging.Logger;
+
+/**
+ * A bridge between the reusable, singleton RPC network, and the generational message bus which uses this.
+ * The RPC network is required to be singular because of its unique resources, such as sockets.
+ * This is complicated by the message bus potentially existing in different graph generation at any point in
+ * time, with all copies potential users of the network interface, but where each message bus-registered session
+ * should belong to a single message bus. This class solves these problems by tracking which sessions are
+ * active in which message bus instance, and by (de)registering only when a session is registered to (no) message
+ * bus instances.
+ *
+ * In time, this should allow us to get rid of the shared-this-and-that in the container, too ...
+ *
+ * @author jonmv
+ */
+public class NetworkMultiplexer implements NetworkOwner {
+
+ private static final Logger log = Logger.getLogger(NetworkMultiplexer.class.getName());
+
+ private final Network net;
+ private final Deque<NetworkOwner> owners = new ConcurrentLinkedDeque<>();
+ private final Map<String, Deque<NetworkOwner>> sessions = new ConcurrentHashMap<>();
+ private final AtomicBoolean disowned;
+
+ private NetworkMultiplexer(Network net, boolean shared) {
+ net.attach(this);
+ this.net = net;
+ this.disowned = new AtomicBoolean( ! shared);
+ }
+
+ /** Returns a network multiplexer which will be shared between several {@link NetworkOwner}s,
+ * and will shut down when all these have detached, and {@link #disown()} has been called, in any order. */
+ public static NetworkMultiplexer shared(Network net) {
+ return new NetworkMultiplexer(net, true);
+ }
+
+ /** Returns a network multiplexer with a single {@link NetworkOwner}, which shuts down when this owner detaches. */
+ public static NetworkMultiplexer dedicated(Network net) {
+ return new NetworkMultiplexer(net, false);
+ }
+
+ public void registerSession(String session, NetworkOwner owner, boolean broadcast) {
+ sessions.compute(session, (name, owners) -> {
+ if (owners == null) {
+ owners = new ConcurrentLinkedDeque<>();
+ if (broadcast)
+ net.registerSession(session);
+ }
+ else if (owners.contains(owner))
+ throw new IllegalArgumentException("Session '" + session + "' with owner '" + owner + "' already registered with this");
+
+ owners.push(owner);
+ return owners;
+ });
+ }
+
+ public void unregisterSession(String session, NetworkOwner owner, boolean broadcast) {
+ sessions.computeIfPresent(session, (name, owners) -> {
+ owners.remove(owner);
+ if (owners.isEmpty()) {
+ if (broadcast)
+ net.unregisterSession(session);
+ return null;
+ }
+ return owners;
+ });
+ }
+
+ @Override
+ public Protocol getProtocol(Utf8Array name) {
+ // Should ideally couple this to the actual receiver ...
+ Protocol protocol = null;
+ for (NetworkOwner owner : owners)
+ protocol = owner.getProtocol(name) == null ? protocol : owner.getProtocol(name);
+
+ return protocol;
+ }
+
+ @Override
+ public void deliverMessage(Message message, String session) {
+ // Send to first owner which has registered this session, or fall back to first attached owner (for rejection).
+ NetworkOwner owner = sessions.getOrDefault(session, owners).peek();
+ if (owner == null) { // Should not happen.
+ log.warning(this + " received message '" + message + "' with no owners attached");
+ message.discard();
+ }
+ else
+ owner.deliverMessage(message, session);
+ }
+
+ /** Attach the network owner to this, allowing this to forward messages to it. */
+ public void attach(NetworkOwner owner) {
+ if (owners.contains(owner))
+ throw new IllegalArgumentException(owner + " is already attached to this");
+
+ owners.add(owner);
+ }
+
+ /** Detach the network owner from this, no longer allowing messages to it, and shutting down this is ownerless. */
+ public void detach(NetworkOwner owner) {
+ if ( ! owners.remove(owner))
+ throw new IllegalArgumentException(owner + " not attached to this");
+
+ destroyIfOwnerless();
+ }
+
+ /** Signal that external ownership of this is relinquished, allowing destruction on last owner detachment. */
+ public void disown() {
+ if (disowned.getAndSet(true))
+ throw new IllegalStateException("Destroy called on a dedicated multiplexer--" +
+ "this automatically shuts down when detached from--or " +
+ "called multiple times on a shared multiplexer");
+
+ destroyIfOwnerless();
+ }
+
+ private void destroyIfOwnerless() {
+ if (disowned.get() && owners.isEmpty())
+ net.shutdown();
+ }
+
+ public Network net() {
+ return net;
+ }
+
+ @Override
+ public String toString() {
+ return "NetworkMultiplexer{" +
+ "net=" + net +
+ ", owners=" + owners +
+ ", sessions=" + sessions +
+ ", destructible=" + disowned +
+ '}';
+ }
+
+} \ No newline at end of file
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/NetworkOwner.java b/messagebus/src/main/java/com/yahoo/messagebus/network/NetworkOwner.java
index 2b55bf5b901..423f6eff91a 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/NetworkOwner.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/NetworkOwner.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network;
import com.yahoo.messagebus.Message;
@@ -24,7 +24,7 @@ public interface NetworkOwner {
* @param name The name of the protocol to return.
* @return The named protocol.
*/
- public Protocol getProtocol(Utf8Array name);
+ Protocol getProtocol(Utf8Array name);
/**
* All messages that arrive in the network layer is passed to its owner through this function.
@@ -32,13 +32,6 @@ public interface NetworkOwner {
* @param message The message that just arrived from the network.
* @param session The name of the session that is the recipient of the request.
*/
- public void deliverMessage(Message message, String session);
+ void deliverMessage(Message message, String session);
- /**
- * All replies that arrive in the network layer is passed through this to unentangle it from the network thread.
- *
- * @param reply The reply that just arrived from the network.
- * @param handler The handler that is to receive the reply.
- */
- public void deliverReply(Reply reply, ReplyHandler handler);
}
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/ServiceAddress.java b/messagebus/src/main/java/com/yahoo/messagebus/network/ServiceAddress.java
index a37d948f3b6..a543edd6f3e 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/ServiceAddress.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/ServiceAddress.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalNetwork.java b/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalNetwork.java
index f3c6422fbfd..cfe0a35494a 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalNetwork.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalNetwork.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.local;
import com.yahoo.component.Vtag;
@@ -115,7 +115,7 @@ public class LocalNetwork implements Network {
error.getMessage(),
error.getService() != null ? error.getService() : envelope.sender.hostId));
}
- owner.deliverReply(reply, envelope.parent.recipient);
+ envelope.parent.recipient.handleReply(reply);
});
}
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalServiceAddress.java b/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalServiceAddress.java
index b99fdfaecd3..c05f4a41d93 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalServiceAddress.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalServiceAddress.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.local;
import com.yahoo.messagebus.network.ServiceAddress;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalWire.java b/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalWire.java
index 9f6295b1ad2..6e0c3d1962e 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalWire.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalWire.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.local;
import com.yahoo.jrt.slobrok.api.IMirror;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/package-info.java b/messagebus/src/main/java/com/yahoo/messagebus/network/package-info.java
index 401a179748c..ee9afb7af2b 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/package-info.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* This package declares the API of the network layer required by the message bus.
*/
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/NamedRPCService.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/NamedRPCService.java
new file mode 100644
index 00000000000..59cafed1836
--- /dev/null
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/NamedRPCService.java
@@ -0,0 +1,48 @@
+package com.yahoo.messagebus.network.rpc;
+
+import com.yahoo.jrt.slobrok.api.IMirror;
+import com.yahoo.jrt.slobrok.api.Mirror;
+
+import java.util.List;
+import java.util.concurrent.ThreadLocalRandom;
+
+public class NamedRPCService implements RPCService {
+ private final IMirror mirror;
+ private final String pattern;
+ private int addressIdx = ThreadLocalRandom.current().nextInt(Integer.MAX_VALUE);
+ private int addressGen = 0;
+ private List<Mirror.Entry> addressList = null;
+
+ /**
+ * Create a new RPCService backed by the given network and using the given service pattern.
+ *
+ * @param mirror The naming server to send queries to.
+ * @param pattern The pattern to use when querying.
+ */
+ public NamedRPCService(IMirror mirror, String pattern) {
+ this.mirror = mirror;
+ this.pattern = pattern;
+ }
+
+ /**
+ * Resolve a concrete address from this service. This service may represent multiple remote sessions, so this will
+ * select one that is online.
+ *
+ * @return A concrete service address.
+ */
+ public synchronized RPCServiceAddress resolve() {
+ if (addressGen != mirror.updates()) {
+ addressGen = mirror.updates();
+ addressList = mirror.lookup(pattern);
+ }
+ if (addressList != null && !addressList.isEmpty()) {
+ ++addressIdx;
+ if (addressIdx >= addressList.size()) {
+ addressIdx = 0;
+ }
+ Mirror.Entry entry = addressList.get(addressIdx);
+ return new RPCServiceAddress(entry.getName(), entry.getSpec());
+ }
+ return null;
+ }
+}
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCNetwork.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCNetwork.java
index 1c41f87d1ee..6b4a0853e29 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCNetwork.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCNetwork.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.rpc;
import com.yahoo.component.Version;
@@ -184,10 +184,8 @@ public class RPCNetwork implements Network, MethodHandler {
}
this.owner = owner;
- RPCSendAdapter adapter1 = new RPCSendV1();
- RPCSendAdapter adapter2 = new RPCSendV2();
- addSendAdapter(new Version(5), adapter1);
- addSendAdapter(new Version(6,149), adapter2);
+ sendAdapters.put(new Version(5), new RPCSendV1(this));
+ sendAdapters.put(new Version(6,149), new RPCSendV2(this));
}
@Override
@@ -327,18 +325,6 @@ public class RPCNetwork implements Network, MethodHandler {
}
/**
- * Registers a send adapter for a given version. This will overwrite whatever is already registered under the same
- * version.
- *
- * @param version the version for which to register an adapter
- * @param adapter the adapter to register
- */
- private void addSendAdapter(Version version, RPCSendAdapter adapter) {
- adapter.attach(this);
- sendAdapters.put(version, adapter);
- }
-
- /**
* Determines and returns the send adapter that is compatible with the given version. If no adapter can be found,
* this method returns null.
*
@@ -362,7 +348,7 @@ public class RPCNetwork implements Network, MethodHandler {
Reply reply = new EmptyReply();
reply.getTrace().setLevel(ctx.traceLevel);
reply.addError(new Error(errCode, errMsg));
- owner.deliverReply(reply, recipient);
+ recipient.handleReply(reply);
}
}
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCNetworkParams.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCNetworkParams.java
index e69c2e82c04..2580a41d629 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCNetworkParams.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCNetworkParams.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.rpc;
import com.yahoo.messagebus.network.Identity;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCSend.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCSend.java
index 1cc45eeb2d8..690449050fb 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCSend.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCSend.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.rpc;
import com.yahoo.component.Version;
@@ -18,6 +18,7 @@ import com.yahoo.messagebus.ReplyHandler;
import com.yahoo.messagebus.Routable;
import com.yahoo.messagebus.Trace;
import com.yahoo.messagebus.TraceLevel;
+import com.yahoo.messagebus.network.NetworkOwner;
import com.yahoo.messagebus.routing.Hop;
import com.yahoo.messagebus.routing.Route;
import com.yahoo.messagebus.routing.RoutingNode;
@@ -30,9 +31,9 @@ import com.yahoo.text.Utf8Array;
*/
public abstract class RPCSend implements MethodHandler, ReplyHandler, RequestWaiter, RPCSendAdapter {
- private RPCNetwork net = null;
- private String clientIdent = "client";
- private String serverIdent = "server";
+ private final RPCNetwork net;
+ private final String clientIdent;
+ private final String serverIdent;
protected abstract Method buildMethod();
protected abstract String getReturnSpec();
@@ -41,13 +42,16 @@ public abstract class RPCSend implements MethodHandler, ReplyHandler, RequestWai
protected abstract Reply createReply(Values ret, String serviceName, Trace trace);
protected abstract Params toParams(Values req);
protected abstract void createResponse(Values ret, Reply reply, Version version, byte [] payload);
- @Override
- public final void attach(RPCNetwork net) {
+
+ protected RPCSend(RPCNetwork net) {
this.net = net;
String prefix = net.getIdentity().getServicePrefix();
if (prefix != null && prefix.length() > 0) {
- clientIdent = "'" + prefix + "'";
- serverIdent = clientIdent;
+ this.serverIdent = this.clientIdent = "'" + prefix + "'";
+ }
+ else {
+ this.clientIdent = "client";
+ this.serverIdent = "server";
}
net.getSupervisor().addMethod(buildMethod());
}
@@ -76,7 +80,7 @@ public abstract class RPCSend implements MethodHandler, ReplyHandler, RequestWai
}
Reply reply = new EmptyReply();
reply.getTrace().swap(ctx.trace);
- net.getOwner().deliverReply(reply, recipient);
+ recipient.handleReply(reply);
} else {
req.setContext(ctx);
address.getTarget().getJRTTarget().invokeAsync(req, ctx.timeout, this);
@@ -121,16 +125,16 @@ public abstract class RPCSend implements MethodHandler, ReplyHandler, RequestWai
switch (req.errorCode()) {
case com.yahoo.jrt.ErrorCode.TIMEOUT:
error = new Error(ErrorCode.TIMEOUT,
- "A timeout occured while waiting for '" + serviceName + "' (" +
+ "A timeout occurred while waiting for '" + serviceName + "' (" +
ctx.timeout + " seconds expired); " + req.errorMessage());
break;
case com.yahoo.jrt.ErrorCode.CONNECTION:
error = new Error(ErrorCode.CONNECTION_ERROR,
- "A connection error occured for '" + serviceName + "'; " + req.errorMessage());
+ "A connection error occurred for '" + serviceName + "'; " + req.errorMessage());
break;
default:
error = new Error(ErrorCode.NETWORK_ERROR,
- "A network error occured for '" + serviceName + "'; " + req.errorMessage());
+ "A network error occurred for '" + serviceName + "'; " + req.errorMessage());
}
} else {
reply = createReply(req.returnValues(), serviceName, ctx.trace);
@@ -143,7 +147,7 @@ public abstract class RPCSend implements MethodHandler, ReplyHandler, RequestWai
if (error != null) {
reply.addError(error);
}
- net.getOwner().deliverReply(reply, ctx.recipient);
+ ctx.recipient.handleReply(reply);
}
protected final class Params {
@@ -172,20 +176,20 @@ public abstract class RPCSend implements MethodHandler, ReplyHandler, RequestWai
// Make sure that the owner understands the protocol.
Protocol protocol = net.getOwner().getProtocol(p.protocolName);
if (protocol == null) {
- replyError(request, p.version, p.traceLevel,
+ replyError(request, p.version, protocol, p.traceLevel,
new Error(ErrorCode.UNKNOWN_PROTOCOL,
"Protocol '" + p.protocolName + "' is not known by " + serverIdent + "."));
return;
}
Routable routable = protocol.decode(p.version, p.payload);
if (routable == null) {
- replyError(request, p.version, p.traceLevel,
+ replyError(request, p.version, protocol, p.traceLevel,
new Error(ErrorCode.DECODE_ERROR,
"Protocol '" + protocol.getName() + "' failed to decode routable."));
return;
}
if (routable instanceof Reply) {
- replyError(request, p.version, p.traceLevel,
+ replyError(request, p.version, protocol, p.traceLevel,
new Error(ErrorCode.DECODE_ERROR,
"Payload decoded to a reply when expecting a message."));
return;
@@ -194,7 +198,7 @@ public abstract class RPCSend implements MethodHandler, ReplyHandler, RequestWai
if (p.route != null && p.route.length() > 0) {
msg.setRoute(net.getRoute(p.route));
}
- msg.setContext(new ReplyContext(request, p.version));
+ msg.setContext(new ReplyContext(request, p.version, protocol));
msg.pushHandler(this);
msg.setRetryEnabled(p.retryEnabled);
msg.setRetry(p.retry);
@@ -222,13 +226,12 @@ public abstract class RPCSend implements MethodHandler, ReplyHandler, RequestWai
// Encode and return the reply through the RPC request.
byte[] payload = new byte[0];
if (reply.getType() != 0) {
- Protocol protocol = net.getOwner().getProtocol(reply.getProtocol());
- if (protocol != null) {
- payload = protocol.encode(ctx.version, reply);
+ if (ctx.protocol != null) {
+ payload = ctx.protocol.encode(ctx.version, reply);
}
if (payload == null || payload.length == 0) {
reply.addError(new Error(ErrorCode.ENCODE_ERROR,
- "An error occured while encoding the reply."));
+ "An error occurred while encoding the reply."));
}
}
createResponse(ctx.request.returnValues(), reply, ctx.version, payload);
@@ -241,11 +244,12 @@ public abstract class RPCSend implements MethodHandler, ReplyHandler, RequestWai
* @param request The JRT request to reply to.
* @param version The version to serialize for.
* @param traceLevel The trace level to set in the reply.
+ * @param protocol The message protocol to serialize with.
* @param err The error to reply with.
*/
- private void replyError(Request request, Version version, int traceLevel, Error err) {
+ private void replyError(Request request, Version version, Protocol protocol, int traceLevel, Error err) {
Reply reply = new EmptyReply();
- reply.setContext(new ReplyContext(request, version));
+ reply.setContext(new ReplyContext(request, version, protocol));
reply.getTrace().setLevel(traceLevel);
reply.addError(err);
handleReply(reply);
@@ -268,10 +272,12 @@ public abstract class RPCSend implements MethodHandler, ReplyHandler, RequestWai
final Request request;
final Version version;
+ final Protocol protocol;
- ReplyContext(Request request, Version version) {
+ ReplyContext(Request request, Version version, Protocol protocol) {
this.request = request;
this.version = version;
+ this.protocol = protocol;
}
}
}
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCSendAdapter.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCSendAdapter.java
index 749ba4f4451..16eecaa39d7 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCSendAdapter.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCSendAdapter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.rpc;
import com.yahoo.component.Version;
@@ -13,13 +13,6 @@ import com.yahoo.messagebus.routing.RoutingNode;
public interface RPCSendAdapter {
/**
- * Attaches this adapter to the given network.
- *
- * @param net The network to attach to.
- */
- void attach(RPCNetwork net);
-
- /**
* Performs the actual sending to the given recipient.
*
* @param recipient The recipient to send to.
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCSendV1.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCSendV1.java
index ccded0e8d1b..53318aa1299 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCSendV1.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCSendV1.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.rpc;
import com.yahoo.component.Version;
@@ -33,8 +33,11 @@ public class RPCSendV1 extends RPCSend {
private final String METHOD_PARAMS = "sssbilsxi";
private final String METHOD_RETURN = "sdISSsxs";
+ protected RPCSendV1(RPCNetwork net) { super(net); }
+
@Override
protected String getReturnSpec() { return METHOD_RETURN; }
+
@Override
protected Method buildMethod() {
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCSendV2.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCSendV2.java
index bb243651447..4d7d60a57fd 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCSendV2.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCSendV2.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.rpc;
import com.yahoo.component.Version;
@@ -35,8 +35,11 @@ public class RPCSendV2 extends RPCSend {
private final static String METHOD_RETURN = "bixbix";
private final Compressor compressor = new Compressor(CompressionType.LZ4, 3, 0.90, 1024);
+ protected RPCSendV2(RPCNetwork net) { super(net); }
+
@Override
protected String getReturnSpec() { return METHOD_RETURN; }
+
@Override
protected Method buildMethod() {
@@ -97,8 +100,7 @@ public class RPCSendV2 extends RPCSend {
root.setLong(TRACELEVEL_F, traceLevel);
root.setData(BLOB_F, payload);
- byte[] serializedSlime = BinaryFormat.encode(slime);
- Compressor.Compression compressionResult = compressor.compress(serializedSlime);
+ Compressor.Compression compressionResult = BinaryFormat.encode_and_compress(slime, compressor);
v.add(new Int8Value(compressionResult.type().getCode()));
v.add(new Int32Value(compressionResult.uncompressedSize()));
@@ -197,8 +199,7 @@ public class RPCSendV2 extends RPCSend {
}
}
- byte[] serializedSlime = BinaryFormat.encode(slime);
- Compressor.Compression compressionResult = compressor.compress(serializedSlime);
+ Compressor.Compression compressionResult = BinaryFormat.encode_and_compress(slime, compressor);
ret.add(new Int8Value(compressionResult.type().getCode()));
ret.add(new Int32Value(compressionResult.uncompressedSize()));
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCService.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCService.java
index fb3c4cf9971..b50e549ecd9 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCService.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCService.java
@@ -1,11 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.rpc;
import com.yahoo.jrt.slobrok.api.IMirror;
-import com.yahoo.jrt.slobrok.api.Mirror;
-
-import java.util.List;
-import java.util.concurrent.ThreadLocalRandom;
/**
* An RPCService represents a set of remote sessions matching a service pattern. The sessions are monitored using the
@@ -13,23 +9,13 @@ import java.util.concurrent.ThreadLocalRandom;
*
* @author havardpe
*/
-public class RPCService {
-
- private final IMirror mirror;
- private final String pattern;
- private int addressIdx = ThreadLocalRandom.current().nextInt(Integer.MAX_VALUE);
- private int addressGen = 0;
- private List<Mirror.Entry> addressList = null;
+public interface RPCService {
- /**
- * Create a new RPCService backed by the given network and using the given service pattern.
- *
- * @param mirror The naming server to send queries to.
- * @param pattern The pattern to use when querying.
- */
- public RPCService(IMirror mirror, String pattern) {
- this.mirror = mirror;
- this.pattern = pattern;
+ static RPCService create(IMirror mirror, String pattern) {
+ if (pattern.startsWith("tcp/")) {
+ return new TcpRPCService(pattern);
+ }
+ return new NamedRPCService(mirror, pattern);
}
/**
@@ -38,38 +24,6 @@ public class RPCService {
*
* @return A concrete service address.
*/
- public RPCServiceAddress resolve() {
- if (pattern.startsWith("tcp/")) {
- int pos = pattern.lastIndexOf('/');
- if (pos > 0 && pos < pattern.length() - 1) {
- RPCServiceAddress ret = new RPCServiceAddress(pattern, pattern.substring(0, pos));
- if (!ret.isMalformed()) {
- return ret;
- }
- }
- } else {
- if (addressGen != mirror.updates()) {
- addressGen = mirror.updates();
- addressList = mirror.lookup(pattern);
- }
- if (addressList != null && !addressList.isEmpty()) {
- ++addressIdx;
- if (addressIdx >= addressList.size()) {
- addressIdx = 0;
- }
- Mirror.Entry entry = addressList.get(addressIdx);
- return new RPCServiceAddress(entry.getName(), entry.getSpec());
- }
- }
- return null;
- }
+ RPCServiceAddress resolve();
- /**
- * Returns the pattern used when querying for the naming server for addresses. This is given at construtor time.
- *
- * @return The service pattern.
- */
- String getPattern() {
- return pattern;
- }
}
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCServiceAddress.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCServiceAddress.java
index 0a6a58d4e89..7f036d7bca9 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCServiceAddress.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCServiceAddress.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.rpc;
import com.yahoo.messagebus.network.ServiceAddress;
@@ -34,6 +34,13 @@ public class RPCServiceAddress implements ServiceAddress {
public RPCServiceAddress(String serviceName, String connectionSpec) {
this(serviceName, new Spec(connectionSpec));
}
+ public RPCServiceAddress(RPCServiceAddress blueprint) {
+ serviceName = blueprint.serviceName;
+ sessionName = blueprint.sessionName;
+ connectionSpec = blueprint.connectionSpec;
+ target = null;
+ }
+
@Override
public boolean equals(Object obj) {
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCServicePool.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCServicePool.java
index abd33d6c9c2..23689606b5f 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCServicePool.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCServicePool.java
@@ -1,6 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.rpc;
+import com.yahoo.concurrent.CopyOnWriteHashMap;
+
import java.util.LinkedHashMap;
import java.util.Map;
@@ -12,7 +14,7 @@ import java.util.Map;
public class RPCServicePool {
private final RPCNetwork net;
- private final ThreadLocalCache services = new ThreadLocalCache();
+ private final Map<Long, ServiceLRUCache> mapOfServiceCache;
private final int maxSize;
/**
@@ -23,6 +25,7 @@ public class RPCServicePool {
*/
public RPCServicePool(RPCNetwork net, int maxSize) {
this.net = net;
+ mapOfServiceCache = new CopyOnWriteHashMap<>();
this.maxSize = maxSize;
}
@@ -34,12 +37,12 @@ public class RPCServicePool {
* @return A service address for the given pattern.
*/
public RPCServiceAddress resolve(String pattern) {
- RPCService service = services.get().get(pattern);
- if (service == null) {
- service = new RPCService(net.getMirror(), pattern);
- services.get().put(pattern, service);
- }
- return service.resolve();
+
+ return getPerThreadCache().computeIfAbsent(pattern, (key) -> RPCService.create(net.getMirror(), key)).resolve();
+ }
+
+ private ServiceLRUCache getPerThreadCache() {
+ return mapOfServiceCache.computeIfAbsent(Thread.currentThread().getId(), (key) -> new ServiceLRUCache(maxSize));
}
/**
@@ -49,7 +52,7 @@ public class RPCServicePool {
* @return The current size of this pool.
*/
public int getSize() {
- return services.get().size();
+ return getPerThreadCache().size();
}
/**
@@ -59,21 +62,15 @@ public class RPCServicePool {
* @return True if a corresponding service is in the pool.
*/
public boolean hasService(String pattern) {
- return services.get().containsKey(pattern);
- }
-
- private class ThreadLocalCache extends ThreadLocal<ServiceLRUCache> {
-
- @Override
- protected ServiceLRUCache initialValue() {
- return new ServiceLRUCache();
- }
+ return getPerThreadCache().containsKey(pattern);
}
- private class ServiceLRUCache extends LinkedHashMap<String, RPCService> {
+ private static class ServiceLRUCache extends LinkedHashMap<String, RPCService> {
+ private final int maxSize;
- ServiceLRUCache() {
+ ServiceLRUCache(int maxSize) {
super(16, 0.75f, true);
+ this.maxSize = maxSize;
}
@Override
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCTarget.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCTarget.java
index 2f81e44c74a..85f50051e34 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCTarget.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCTarget.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.rpc;
import com.yahoo.component.Version;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCTargetPool.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCTargetPool.java
index 7f5721ee2bf..cd1c6ba9612 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCTargetPool.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCTargetPool.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.rpc;
import com.yahoo.jrt.Spec;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/SlobrokConfigSubscriber.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/SlobrokConfigSubscriber.java
index d576ec50af7..fac1fc0cefd 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/SlobrokConfigSubscriber.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/SlobrokConfigSubscriber.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.rpc;
import com.yahoo.config.subscription.ConfigSubscriber;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/TcpRPCService.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/TcpRPCService.java
new file mode 100644
index 00000000000..e2fae59b429
--- /dev/null
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/TcpRPCService.java
@@ -0,0 +1,23 @@
+package com.yahoo.messagebus.network.rpc;
+
+public class TcpRPCService implements RPCService {
+ private final RPCServiceAddress blueprint;
+
+ TcpRPCService(String pattern) {
+ if ( ! pattern.startsWith("tcp/")) {
+ throw new IllegalArgumentException("Expect tcp adress to start with 'tcp/', was: " + pattern);
+ }
+ RPCServiceAddress ret = null;
+ int pos = pattern.lastIndexOf('/');
+ if (pos > 0 && pos < pattern.length() - 1) {
+ ret = new RPCServiceAddress(pattern, pattern.substring(0, pos));
+ if ( ret.isMalformed()) {
+ ret = null;
+ }
+ }
+ blueprint = ret;
+ }
+ public RPCServiceAddress resolve() {
+ return blueprint != null ? new RPCServiceAddress(blueprint) : null;
+ }
+}
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/package-info.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/package-info.java
index fdd80aece22..9e82de15fb1 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/package-info.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* This package contains an RPC implementation of the Network interface declared in the com.yahoo.messagebus.network package.
*/
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/test/SlobrokState.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/test/SlobrokState.java
index 1c5c6c09a51..b5a70bc67e8 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/test/SlobrokState.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/test/SlobrokState.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.rpc.test;
import java.util.LinkedHashMap;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/test/TestServer.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/test/TestServer.java
index cd001615842..c6dd14cf23b 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/test/TestServer.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/test/TestServer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.rpc.test;
import com.yahoo.component.Version;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/test/package-info.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/test/package-info.java
index 8cd2291c735..3648419baa6 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/test/package-info.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/test/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* This package contains utility classes for the unit tests in the com.yahoo.messagebus.network.rpc package.
*/
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/package-info.java b/messagebus/src/main/java/com/yahoo/messagebus/package-info.java
index e2674d52623..ae035232646 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/package-info.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* This package contains the main API of the message bus. The typical user will instantiate
* {@link com.yahoo.messagebus.RPCMessageBus}.
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/ApplicationSpec.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/ApplicationSpec.java
index 2936c9c22ee..24786498d2b 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/ApplicationSpec.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/ApplicationSpec.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
import java.util.HashMap;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/ErrorDirective.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/ErrorDirective.java
index 6c6a0fa9b07..e1d2d4dd82a 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/ErrorDirective.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/ErrorDirective.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/Hop.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/Hop.java
index e21aeef1ee2..879b18679e9 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/Hop.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/Hop.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
import java.util.ArrayList;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/HopBlueprint.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/HopBlueprint.java
index 62cddba791d..3b7afa9cfe4 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/HopBlueprint.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/HopBlueprint.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
import java.util.*;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/HopDirective.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/HopDirective.java
index 838b11e7a02..4b1ab4cf98a 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/HopDirective.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/HopDirective.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/HopSpec.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/HopSpec.java
index fb51ddbf667..d7f117f0452 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/HopSpec.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/HopSpec.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
import java.util.ArrayList;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/PolicyDirective.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/PolicyDirective.java
index 2391381ffed..0bde6ae3ef4 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/PolicyDirective.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/PolicyDirective.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/Resender.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/Resender.java
index ba2e8845e63..753f8e28e36 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/Resender.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/Resender.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
import com.yahoo.concurrent.SystemTimer;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/RetryPolicy.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/RetryPolicy.java
index 76ed29dc1a0..2603db29d25 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/RetryPolicy.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/RetryPolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/RetryTransientErrorsPolicy.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/RetryTransientErrorsPolicy.java
index 96655e91b90..ce269dbf55f 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/RetryTransientErrorsPolicy.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/RetryTransientErrorsPolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
import com.yahoo.messagebus.ErrorCode;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/Route.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/Route.java
index 4a5ba03a301..c80268a1465 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/Route.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/Route.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
import java.util.ArrayList;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/RouteDirective.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/RouteDirective.java
index 6725e11d77b..420efe91cc1 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/RouteDirective.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/RouteDirective.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/RouteParser.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/RouteParser.java
index 0eb9d7027ce..e025dd8c138 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/RouteParser.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/RouteParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/RouteSpec.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/RouteSpec.java
index b6bdb92b578..f987826c834 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/RouteSpec.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/RouteSpec.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
import java.util.ArrayList;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingContext.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingContext.java
index 30965ebc28b..518106f5818 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingContext.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingContext.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
import com.yahoo.jrt.slobrok.api.IMirror;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingNode.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingNode.java
index 05fc6f62236..1f63744c205 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingNode.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
import com.yahoo.messagebus.EmptyReply;
@@ -805,9 +805,13 @@ public class RoutingNode implements ReplyHandler {
this.serviceAddress = serviceAddress;
}
+ /** Proxy through message bus in case it was destroyed in the meantime. */
@Override
public void handleReply(Reply reply) {
- setReply(reply);
- notifyParent();
+ mbus.deliverReply(reply, r -> {
+ setReply(reply);
+ notifyParent();
+ });
}
+
}
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingNodeIterator.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingNodeIterator.java
index 66085d36ec7..ea104fe6bb9 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingNodeIterator.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingNodeIterator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
import com.yahoo.messagebus.Reply;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingPolicy.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingPolicy.java
index 6f65f73cf65..b37090819e7 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingPolicy.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingPolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingSpec.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingSpec.java
index b5cbfd8224e..cc1ea562138 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingSpec.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingSpec.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
import java.util.ArrayList;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingTable.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingTable.java
index e3410cdba7d..30c1a2fd5b3 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingTable.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingTable.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
import java.util.Iterator;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingTableSpec.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingTableSpec.java
index ef93d2a4454..23a45e3cf69 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingTableSpec.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingTableSpec.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
import com.yahoo.text.Utf8String;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/TcpDirective.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/TcpDirective.java
index 72f11fbd049..16674174fb4 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/TcpDirective.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/TcpDirective.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/VerbatimDirective.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/VerbatimDirective.java
index dfd2333dc4e..ce0cfa246ac 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/VerbatimDirective.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/VerbatimDirective.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
/**
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/package-info.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/package-info.java
index ffb0d3d6404..b4669eea0a8 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/package-info.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* This package contains all classes and interfaces that concern routing over message bus.
*/
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/test/CustomPolicy.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/test/CustomPolicy.java
index 15168821207..70fee668d06 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/test/CustomPolicy.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/test/CustomPolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing.test;
import com.yahoo.messagebus.EmptyReply;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/test/CustomPolicyFactory.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/test/CustomPolicyFactory.java
index 6509887ddfb..995dfa8831d 100755
--- a/messagebus/src/main/java/com/yahoo/messagebus/routing/test/CustomPolicyFactory.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/test/CustomPolicyFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing.test;
import com.yahoo.messagebus.routing.Route;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/test/QueueAdapter.java b/messagebus/src/main/java/com/yahoo/messagebus/test/QueueAdapter.java
index ecb7f2129fd..adfb243e2a7 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/test/QueueAdapter.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/test/QueueAdapter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.test;
import com.yahoo.messagebus.*;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/test/Receptor.java b/messagebus/src/main/java/com/yahoo/messagebus/test/Receptor.java
index 86fa2a8a326..db1e3abb4ed 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/test/Receptor.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/test/Receptor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.test;
import com.yahoo.messagebus.Message;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/test/SimpleMessage.java b/messagebus/src/main/java/com/yahoo/messagebus/test/SimpleMessage.java
index f87bcdbe1bb..7f4509035b4 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/test/SimpleMessage.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/test/SimpleMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.test;
import com.yahoo.messagebus.Message;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/test/SimpleProtocol.java b/messagebus/src/main/java/com/yahoo/messagebus/test/SimpleProtocol.java
index fc8ccd988c5..1ea1df87c4f 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/test/SimpleProtocol.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/test/SimpleProtocol.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.test;
import com.yahoo.component.Version;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/test/SimpleReply.java b/messagebus/src/main/java/com/yahoo/messagebus/test/SimpleReply.java
index cf15785576e..f11e4f065fd 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/test/SimpleReply.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/test/SimpleReply.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.test;
import com.yahoo.messagebus.Reply;
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/test/package-info.java b/messagebus/src/main/java/com/yahoo/messagebus/test/package-info.java
index 652c1e7d44c..bb93574c79b 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/test/package-info.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/test/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* This package contains utility classes for the unit tests in the com.yahoo.messagebus package.
*/
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/ChokeTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/ChokeTestCase.java
index d2726627e39..60ec6c400a9 100755
--- a/messagebus/src/test/java/com/yahoo/messagebus/ChokeTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/ChokeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.jrt.ListenFailedException;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/ConfigAgentTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/ConfigAgentTestCase.java
index 02fe407b3de..a32175ff414 100755
--- a/messagebus/src/test/java/com/yahoo/messagebus/ConfigAgentTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/ConfigAgentTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.config.subscription.ConfigSet;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/CustomTimer.java b/messagebus/src/test/java/com/yahoo/messagebus/CustomTimer.java
index 08b68f79cb0..539897d6485 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/CustomTimer.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/CustomTimer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.concurrent.Timer;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/DynamicThrottlePolicyTest.java b/messagebus/src/test/java/com/yahoo/messagebus/DynamicThrottlePolicyTest.java
index 63747803e75..b73dc52152a 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/DynamicThrottlePolicyTest.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/DynamicThrottlePolicyTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.messagebus.test.SimpleMessage;
@@ -97,7 +97,7 @@ public class DynamicThrottlePolicyTest {
/** Sort of a dummy test, as the conditions are perfect. In a more realistic scenario, below, the algorithm needs luck to climb this high. */
@Test
public void singlePolicySingleWorkerWithIncreasingParallelism() {
- for (int i = 0; i < 5; i++) {
+ for (int i = 0; i < 4; i++) {
CustomTimer timer = new CustomTimer();
DynamicThrottlePolicy policy = new DynamicThrottlePolicy(timer);
int scaleFactor = (int) Math.pow(10, i);
@@ -120,11 +120,11 @@ public class DynamicThrottlePolicyTest {
/** A more realistic test, where throughput gradually flattens with increasing window size, and with more variance in throughput. */
@Test
public void singlePolicyIncreasingWorkersWithNoParallelism() {
- for (int i = 0; i < 5; i++) {
+ for (int i = 0; i < 4; i++) {
CustomTimer timer = new CustomTimer();
DynamicThrottlePolicy policy = new DynamicThrottlePolicy(timer);
int scaleFactor = (int) Math.pow(10, i);
- long operations = 5_000L * scaleFactor;
+ long operations = 2_000L * scaleFactor;
// workPerSuccess determines the latency of the simulated server, which again determines the impact of the
// synthetic attractors of the algorithm, around latencies which give (close to) integer log10(1 / latency).
// With a value of 5, the impact is that the algorithm is pushed upwards slightly above 10k window size,
@@ -143,7 +143,7 @@ public class DynamicThrottlePolicyTest {
double maxMaxPending = numberOfWorkers * maximumTasksPerWorker;
assertInRange(minMaxPending, summary.averagePending, maxMaxPending);
assertInRange(minMaxPending, summary.averageWindows[0], maxMaxPending);
- assertInRange(1, summary.inefficiency, 1 + 0.2 * i); // Even slower ramp-up.
+ assertInRange(1, summary.inefficiency, 1 + 0.25 * i); // Even slower ramp-up.
assertInRange(0, summary.waste, 0);
}
}
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/ErrorTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/ErrorTestCase.java
index 271da8717bf..82696d839d9 100755
--- a/messagebus/src/test/java/com/yahoo/messagebus/ErrorTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/ErrorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.jrt.slobrok.server.Slobrok;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/MessageBusTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/MessageBusTestCase.java
index ed765a146c6..69a5401a27e 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/MessageBusTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/MessageBusTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.jrt.ListenFailedException;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/MessengerTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/MessengerTestCase.java
index 9c9a08e9200..5bfb36f194b 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/MessengerTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/MessengerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import org.junit.Test;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/ProtocolRepositoryTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/ProtocolRepositoryTestCase.java
index 98877d14e50..af2b4148a3c 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/ProtocolRepositoryTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/ProtocolRepositoryTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.messagebus.routing.RoutingContext;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/RateThrottlingTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/RateThrottlingTestCase.java
index e67b33f2303..f52cb1df2fe 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/RateThrottlingTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/RateThrottlingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.messagebus.test.SimpleMessage;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/RoutableTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/RoutableTestCase.java
index 7738b46e912..ca60bb8024c 100755
--- a/messagebus/src/test/java/com/yahoo/messagebus/RoutableTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/RoutableTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.jrt.ListenFailedException;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/SendProxyTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/SendProxyTestCase.java
index 48b0d355e87..b51fc2da3de 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/SendProxyTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/SendProxyTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.component.Vtag;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java
index b15b65cb816..07de8f238bc 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/SequencerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.messagebus.test.SimpleMessage;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/SimpleTripTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/SimpleTripTestCase.java
index 96445945d82..f13749ae213 100755
--- a/messagebus/src/test/java/com/yahoo/messagebus/SimpleTripTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/SimpleTripTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.jrt.ListenFailedException;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/ThrottlerTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/ThrottlerTestCase.java
index b3863f3ac8c..c308380dbb2 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/ThrottlerTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/ThrottlerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.jrt.ListenFailedException;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/TimeoutTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/TimeoutTestCase.java
index 08cecdb481a..a834b27156a 100755
--- a/messagebus/src/test/java/com/yahoo/messagebus/TimeoutTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/TimeoutTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.jrt.ListenFailedException;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/TraceTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/TraceTestCase.java
index 3914edd22e2..7408079b7ac 100755
--- a/messagebus/src/test/java/com/yahoo/messagebus/TraceTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/TraceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import org.junit.Test;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/TraceTripTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/TraceTripTestCase.java
index 91914051f56..cc3e689e33e 100755
--- a/messagebus/src/test/java/com/yahoo/messagebus/TraceTripTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/TraceTripTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus;
import com.yahoo.jrt.ListenFailedException;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/IdentityTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/network/IdentityTestCase.java
index d35ff62ba41..4309d17a407 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/network/IdentityTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/network/IdentityTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network;
import org.junit.Test;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/NetworkMultiplexerTest.java b/messagebus/src/test/java/com/yahoo/messagebus/network/NetworkMultiplexerTest.java
new file mode 100644
index 00000000000..58145bb4f25
--- /dev/null
+++ b/messagebus/src/test/java/com/yahoo/messagebus/network/NetworkMultiplexerTest.java
@@ -0,0 +1,196 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.messagebus.network;
+
+import com.yahoo.jrt.slobrok.api.IMirror;
+import com.yahoo.messagebus.Message;
+import com.yahoo.messagebus.Protocol;
+import com.yahoo.messagebus.routing.RoutingNode;
+import com.yahoo.messagebus.test.SimpleMessage;
+import com.yahoo.messagebus.test.SimpleProtocol;
+import com.yahoo.text.Utf8Array;
+import com.yahoo.text.Utf8String;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+/**
+ * @author jonmv
+ */
+public class NetworkMultiplexerTest {
+
+ @Test
+ public void testShared() {
+ MockNetwork net = new MockNetwork();
+ MockOwner owner1 = new MockOwner();
+ MockOwner owner2 = new MockOwner();
+ NetworkMultiplexer shared = NetworkMultiplexer.shared(net);
+ assertEquals(Set.of(shared), net.attached);
+ assertEquals(Set.of(), net.registered);
+ assertFalse(net.shutDown.get());
+
+ shared.attach(owner1);
+ shared.registerSession("s1", owner1, true);
+ try {
+ shared.registerSession("s1", owner1, true);
+ fail("Illegal to register same session multiple times with the same owner");
+ }
+ catch (IllegalArgumentException expected) {
+ assertEquals("Session 's1' with owner 'mock owner' already registered with this", expected.getMessage());
+ }
+ assertEquals(Set.of("s1"), net.registered);
+
+ shared.attach(owner2);
+ shared.registerSession("s2", owner2, true);
+ shared.registerSession("s3", owner2, false);
+ assertEquals(Set.of("s1", "s2"), net.registered);
+
+ Utf8String name = new Utf8String("protocol");
+ Protocol protocol1 = new SimpleProtocol();
+ Protocol protocol2 = new SimpleProtocol();
+ owner1.protocols.put(name, protocol1);
+ assertEquals(protocol1, shared.getProtocol(name));
+ owner2.protocols.put(name, protocol2);
+ assertEquals(protocol2, shared.getProtocol(name));
+
+ Message message1 = new SimpleMessage("one");
+ Message message2 = new SimpleMessage("two");
+ Message message3 = new SimpleMessage("three");
+ Message message4 = new SimpleMessage("four");
+ Message message5 = new SimpleMessage("five");
+ shared.deliverMessage(message1, "s1");
+ shared.deliverMessage(message2, "s2");
+
+ // New "s1" owner connects, and should have new requests.
+ shared.registerSession("s1", owner2, true);
+ shared.deliverMessage(message3, "s1");
+ shared.deliverMessage(message4, "s3");
+ shared.unregisterSession("s1", owner1, true);
+ shared.deliverMessage(message5, "s1");
+ assertEquals(Map.of("s1", List.of(message1)), owner1.messages);
+ assertEquals(Map.of("s2", List.of(message2), "s1", List.of(message3, message5), "s3", List.of(message4)), owner2.messages);
+
+ shared.detach(owner1);
+ assertEquals(protocol2, shared.getProtocol(name));
+
+ shared.detach(owner2);
+ assertFalse(net.shutDown.get());
+
+ shared.attach(owner2);
+ shared.disown();
+ assertFalse(net.shutDown.get());
+
+ shared.detach(owner2);
+ assertTrue(net.shutDown.get());
+ }
+
+ @Test
+ public void testDedicated() {
+ MockNetwork net = new MockNetwork();
+ MockOwner owner = new MockOwner();
+ NetworkMultiplexer dedicated = NetworkMultiplexer.dedicated(net);
+ assertEquals(Set.of(dedicated), net.attached);
+ assertEquals(Set.of(), net.registered);
+ assertFalse(net.shutDown.get());
+
+ dedicated.attach(owner);
+ dedicated.detach(owner);
+ assertTrue(net.shutDown.get());
+ }
+
+ static class MockOwner implements NetworkOwner {
+
+ final Map<Utf8Array, Protocol> protocols = new HashMap<>();
+ final Map<String, List<Message>> messages = new HashMap<>();
+
+ @Override
+ public Protocol getProtocol(Utf8Array name) {
+ return protocols.get(name);
+ }
+
+ @Override
+ public void deliverMessage(Message message, String session) {
+ messages.computeIfAbsent(session, __ -> new ArrayList<>()).add(message);
+ }
+
+ @Override
+ public String toString() {
+ return "mock owner";
+ }
+
+ }
+
+ static class MockNetwork implements Network {
+
+ final Set<NetworkOwner> attached = new HashSet<>();
+ final Set<String> registered = new HashSet<>();
+ final AtomicBoolean shutDown = new AtomicBoolean();
+
+ @Override
+ public boolean waitUntilReady(double seconds) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void attach(NetworkOwner owner) {
+ assertTrue(attached.add(owner));
+ }
+
+ @Override
+ public void registerSession(String session) {
+ assertTrue(registered.add(session));
+ }
+
+ @Override
+ public void unregisterSession(String session) {
+ assertTrue(registered.remove(session));
+ }
+
+ @Override
+ public boolean allocServiceAddress(RoutingNode recipient) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void freeServiceAddress(RoutingNode recipient) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void send(Message msg, List<RoutingNode> recipients) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void sync() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void shutdown() {
+ assertFalse(shutDown.getAndSet(true));
+ }
+
+ @Override
+ public String getConnectionSpec() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public IMirror getMirror() {
+ throw new UnsupportedOperationException();
+ }
+
+ }
+
+}
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/local/LocalNetworkTest.java b/messagebus/src/test/java/com/yahoo/messagebus/network/local/LocalNetworkTest.java
index c4bcaa488e2..b3fec784d38 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/network/local/LocalNetworkTest.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/network/local/LocalNetworkTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.local;
import com.yahoo.concurrent.SystemTimer;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/BasicNetworkTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/BasicNetworkTestCase.java
index 0aef3f3e994..4134e352757 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/BasicNetworkTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/BasicNetworkTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.rpc;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/LoadBalanceTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/LoadBalanceTestCase.java
index 6cb0736f6fa..8ade06335f5 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/LoadBalanceTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/LoadBalanceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.rpc;
import com.yahoo.jrt.ListenFailedException;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/RPCNetworkTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/RPCNetworkTestCase.java
index bc109a6074f..0c42c592624 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/RPCNetworkTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/RPCNetworkTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.rpc;
import com.yahoo.component.Version;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/SendAdapterTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/SendAdapterTestCase.java
index 98e821d7d38..efb1045ba84 100755
--- a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/SendAdapterTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/SendAdapterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.rpc;
import com.yahoo.component.Version;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServiceAddressTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServiceAddressTestCase.java
index 1dbb30de585..bbf1b827c87 100755
--- a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServiceAddressTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServiceAddressTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.rpc;
import com.yahoo.jrt.ListenFailedException;
@@ -83,11 +83,11 @@ public class ServiceAddressTestCase {
}
private void assertNullAddress(String pattern) {
- assertNull(new RPCService(network.getMirror(), pattern).resolve());
+ assertNull(RPCService.create(network.getMirror(), pattern).resolve());
}
private void assertAddress(String pattern, String expectedSpec, String expectedSession) {
- RPCService service = new RPCService(network.getMirror(), pattern);
+ RPCService service = RPCService.create(network.getMirror(), pattern);
RPCServiceAddress obj = service.resolve();
assertNotNull(obj);
assertNotNull(obj.getConnectionSpec());
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServicePoolTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServicePoolTestCase.java
index 5904c990278..4bb39e99a48 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServicePoolTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServicePoolTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.rpc;
import com.yahoo.jrt.ListenFailedException;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/SlobrokTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/SlobrokTestCase.java
index 886833b8b14..044ee87f4c4 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/SlobrokTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/SlobrokTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.rpc;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/TargetPoolTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/TargetPoolTestCase.java
index 71dd7ba1da2..4dde73ad8c5 100755
--- a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/TargetPoolTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/TargetPoolTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.network.rpc;
import com.yahoo.jrt.ListenFailedException;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/routing/AdvancedRoutingTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/routing/AdvancedRoutingTestCase.java
index e96f414af99..3e6f345fb93 100755
--- a/messagebus/src/test/java/com/yahoo/messagebus/routing/AdvancedRoutingTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/routing/AdvancedRoutingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
import com.yahoo.jrt.ListenFailedException;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/routing/ResenderTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/routing/ResenderTestCase.java
index 2973ea11278..375b247d286 100755
--- a/messagebus/src/test/java/com/yahoo/messagebus/routing/ResenderTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/routing/ResenderTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
import com.yahoo.jrt.ListenFailedException;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/routing/RetryPolicyTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/routing/RetryPolicyTestCase.java
index 522c4ba909c..5095de0b2e7 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/routing/RetryPolicyTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/routing/RetryPolicyTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
import com.yahoo.messagebus.ErrorCode;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/routing/RouteParserTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/routing/RouteParserTestCase.java
index e3f43b9491d..20fc66825d7 100755
--- a/messagebus/src/test/java/com/yahoo/messagebus/routing/RouteParserTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/routing/RouteParserTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
import org.junit.Test;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingContextTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingContextTestCase.java
index fd3cea2378f..2efbc0724d7 100755
--- a/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingContextTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingContextTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
import com.yahoo.jrt.ListenFailedException;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingSpecTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingSpecTestCase.java
index ac60c84638e..0f492e65421 100755
--- a/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingSpecTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingSpecTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
import com.yahoo.messagebus.ConfigAgent;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingTestCase.java
index e097572415d..aec99306ff2 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/routing/RoutingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.routing;
import com.yahoo.component.Vtag;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/test/QueueAdapterTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/test/QueueAdapterTestCase.java
index 039499feeca..3147587aa96 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/test/QueueAdapterTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/test/QueueAdapterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.test;
import com.yahoo.messagebus.Message;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/test/ReceptorTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/test/ReceptorTestCase.java
index aa037f3de8f..2e60f68eb43 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/test/ReceptorTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/test/ReceptorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.test;
import com.yahoo.messagebus.Message;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleMessageTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleMessageTestCase.java
index 3d810ab7e72..217f5347f40 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleMessageTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleMessageTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.test;
import org.junit.Test;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleProtocolTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleProtocolTestCase.java
index c6b3b09f2ed..76d6a1ee778 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleProtocolTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleProtocolTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.test;
import com.yahoo.component.Version;
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleReplyTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleReplyTestCase.java
index 160a0c33685..0d3f67bcb3c 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleReplyTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/test/SimpleReplyTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.messagebus.test;
import org.junit.Test;
diff --git a/messagebus/src/tests/CMakeLists.txt b/messagebus/src/tests/CMakeLists.txt
index e05f732d8b4..68aafbeded3 100644
--- a/messagebus/src/tests/CMakeLists.txt
+++ b/messagebus/src/tests/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
add_subdirectory(advancedrouting)
add_subdirectory(auto-reply)
add_subdirectory(blob)
diff --git a/messagebus/src/tests/advancedrouting/CMakeLists.txt b/messagebus/src/tests/advancedrouting/CMakeLists.txt
index eb57e9b8648..cc6032afd6d 100644
--- a/messagebus/src/tests/advancedrouting/CMakeLists.txt
+++ b/messagebus/src/tests/advancedrouting/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_advancedrouting_test_app TEST
SOURCES
advancedrouting.cpp
diff --git a/messagebus/src/tests/advancedrouting/advancedrouting.cpp b/messagebus/src/tests/advancedrouting/advancedrouting.cpp
index 1854662defd..fbe6c8f77bd 100644
--- a/messagebus/src/tests/advancedrouting/advancedrouting.cpp
+++ b/messagebus/src/tests/advancedrouting/advancedrouting.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/testlib/custompolicy.h>
#include <vespa/messagebus/testlib/receptor.h>
diff --git a/messagebus/src/tests/auto-reply/CMakeLists.txt b/messagebus/src/tests/auto-reply/CMakeLists.txt
index 1e7fd22bdb7..68069cc5ac6 100644
--- a/messagebus/src/tests/auto-reply/CMakeLists.txt
+++ b/messagebus/src/tests/auto-reply/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_auto-reply_test_app TEST
SOURCES
auto-reply.cpp
diff --git a/messagebus/src/tests/auto-reply/auto-reply.cpp b/messagebus/src/tests/auto-reply/auto-reply.cpp
index 0e32c218c4c..7197d1241df 100644
--- a/messagebus/src/tests/auto-reply/auto-reply.cpp
+++ b/messagebus/src/tests/auto-reply/auto-reply.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/emptyreply.h>
#include <vespa/messagebus/routablequeue.h>
diff --git a/messagebus/src/tests/blob/CMakeLists.txt b/messagebus/src/tests/blob/CMakeLists.txt
index 162c7c7af70..adf940c15a9 100644
--- a/messagebus/src/tests/blob/CMakeLists.txt
+++ b/messagebus/src/tests/blob/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_blob_test_app TEST
SOURCES
blob.cpp
diff --git a/messagebus/src/tests/blob/blob.cpp b/messagebus/src/tests/blob/blob.cpp
index b18d5f2718e..2afa21c81c8 100644
--- a/messagebus/src/tests/blob/blob.cpp
+++ b/messagebus/src/tests/blob/blob.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/messagebus/blob.h>
#include <vespa/messagebus/blobref.h>
diff --git a/messagebus/src/tests/bucketsequence/CMakeLists.txt b/messagebus/src/tests/bucketsequence/CMakeLists.txt
index 26edfb5ed2f..abe2e511f44 100644
--- a/messagebus/src/tests/bucketsequence/CMakeLists.txt
+++ b/messagebus/src/tests/bucketsequence/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_bucketsequence_test_app TEST
SOURCES
bucketsequence.cpp
diff --git a/messagebus/src/tests/bucketsequence/bucketsequence.cpp b/messagebus/src/tests/bucketsequence/bucketsequence.cpp
index 671f50efc03..eea5725463c 100644
--- a/messagebus/src/tests/bucketsequence/bucketsequence.cpp
+++ b/messagebus/src/tests/bucketsequence/bucketsequence.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/errorcode.h>
#include <vespa/messagebus/routing/retrytransienterrorspolicy.h>
diff --git a/messagebus/src/tests/choke/CMakeLists.txt b/messagebus/src/tests/choke/CMakeLists.txt
index b8560cbac75..03639038041 100644
--- a/messagebus/src/tests/choke/CMakeLists.txt
+++ b/messagebus/src/tests/choke/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_choke_test_app TEST
SOURCES
choke.cpp
diff --git a/messagebus/src/tests/choke/choke.cpp b/messagebus/src/tests/choke/choke.cpp
index e10d87ed2ba..47180f401d1 100644
--- a/messagebus/src/tests/choke/choke.cpp
+++ b/messagebus/src/tests/choke/choke.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/emptyreply.h>
#include <vespa/messagebus/errorcode.h>
diff --git a/messagebus/src/tests/configagent/CMakeLists.txt b/messagebus/src/tests/configagent/CMakeLists.txt
index 3ba659a73fc..775174e45be 100644
--- a/messagebus/src/tests/configagent/CMakeLists.txt
+++ b/messagebus/src/tests/configagent/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_configagent_test_app TEST
SOURCES
configagent.cpp
diff --git a/messagebus/src/tests/configagent/configagent.cpp b/messagebus/src/tests/configagent/configagent.cpp
index d8e4a6a265f..32c28fd8c3d 100644
--- a/messagebus/src/tests/configagent/configagent.cpp
+++ b/messagebus/src/tests/configagent/configagent.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/config/print/fileconfigreader.h>
#include <vespa/messagebus/configagent.h>
diff --git a/messagebus/src/tests/context/CMakeLists.txt b/messagebus/src/tests/context/CMakeLists.txt
index 18ccceecde3..e4c73b553f7 100644
--- a/messagebus/src/tests/context/CMakeLists.txt
+++ b/messagebus/src/tests/context/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_context_test_app TEST
SOURCES
context.cpp
diff --git a/messagebus/src/tests/context/context.cpp b/messagebus/src/tests/context/context.cpp
index dd734cbbb26..85b92cc6fa0 100644
--- a/messagebus/src/tests/context/context.cpp
+++ b/messagebus/src/tests/context/context.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/destinationsession.h>
#include <vespa/messagebus/messagebus.h>
diff --git a/messagebus/src/tests/emptyreply/CMakeLists.txt b/messagebus/src/tests/emptyreply/CMakeLists.txt
index a88b30b4f61..c1468c5543d 100644
--- a/messagebus/src/tests/emptyreply/CMakeLists.txt
+++ b/messagebus/src/tests/emptyreply/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_emptyreply_test_app TEST
SOURCES
emptyreply.cpp
diff --git a/messagebus/src/tests/emptyreply/emptyreply.cpp b/messagebus/src/tests/emptyreply/emptyreply.cpp
index 05c536d2106..fd251280267 100644
--- a/messagebus/src/tests/emptyreply/emptyreply.cpp
+++ b/messagebus/src/tests/emptyreply/emptyreply.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/messagebus/emptyreply.h>
diff --git a/messagebus/src/tests/error/CMakeLists.txt b/messagebus/src/tests/error/CMakeLists.txt
index 6a21e5eb776..0c7be3ad846 100644
--- a/messagebus/src/tests/error/CMakeLists.txt
+++ b/messagebus/src/tests/error/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_error_test_app TEST
SOURCES
error.cpp
diff --git a/messagebus/src/tests/error/error.cpp b/messagebus/src/tests/error/error.cpp
index 244efe0bf99..da7966621fa 100644
--- a/messagebus/src/tests/error/error.cpp
+++ b/messagebus/src/tests/error/error.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/destinationsession.h>
#include <vespa/messagebus/emptyreply.h>
diff --git a/messagebus/src/tests/identity/CMakeLists.txt b/messagebus/src/tests/identity/CMakeLists.txt
index 2b4f80c21c1..2ad6c083523 100644
--- a/messagebus/src/tests/identity/CMakeLists.txt
+++ b/messagebus/src/tests/identity/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_identity_test_app TEST
SOURCES
identity.cpp
diff --git a/messagebus/src/tests/identity/identity.cpp b/messagebus/src/tests/identity/identity.cpp
index 8a149b21b48..2b4b75168fe 100644
--- a/messagebus/src/tests/identity/identity.cpp
+++ b/messagebus/src/tests/identity/identity.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/messagebus/network/identity.h>
diff --git a/messagebus/src/tests/messagebus/CMakeLists.txt b/messagebus/src/tests/messagebus/CMakeLists.txt
index 9e3de79e248..5a4841e3de9 100644
--- a/messagebus/src/tests/messagebus/CMakeLists.txt
+++ b/messagebus/src/tests/messagebus/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_messagebus_test_app TEST
SOURCES
messagebus.cpp
diff --git a/messagebus/src/tests/messagebus/messagebus.cpp b/messagebus/src/tests/messagebus/messagebus.cpp
index 259c24ad176..ab94d6ee183 100644
--- a/messagebus/src/tests/messagebus/messagebus.cpp
+++ b/messagebus/src/tests/messagebus/messagebus.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/destinationsession.h>
#include <vespa/messagebus/emptyreply.h>
diff --git a/messagebus/src/tests/messageordering/CMakeLists.txt b/messagebus/src/tests/messageordering/CMakeLists.txt
index 74f2359ab59..8829b818661 100644
--- a/messagebus/src/tests/messageordering/CMakeLists.txt
+++ b/messagebus/src/tests/messageordering/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_messageordering_test_app TEST
SOURCES
messageordering.cpp
diff --git a/messagebus/src/tests/messageordering/messageordering.cpp b/messagebus/src/tests/messageordering/messageordering.cpp
index fe523135364..919d242fc47 100644
--- a/messagebus/src/tests/messageordering/messageordering.cpp
+++ b/messagebus/src/tests/messageordering/messageordering.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/messagebus/messagebus.h>
#include <vespa/messagebus/testlib/slobrok.h>
diff --git a/messagebus/src/tests/messenger/CMakeLists.txt b/messagebus/src/tests/messenger/CMakeLists.txt
index 49ea613afc1..6dbd55accad 100644
--- a/messagebus/src/tests/messenger/CMakeLists.txt
+++ b/messagebus/src/tests/messenger/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_messenger_test_app TEST
SOURCES
messenger.cpp
diff --git a/messagebus/src/tests/messenger/messenger.cpp b/messagebus/src/tests/messenger/messenger.cpp
index 0653ee52b0e..1ee34b386ae 100644
--- a/messagebus/src/tests/messenger/messenger.cpp
+++ b/messagebus/src/tests/messenger/messenger.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/messenger.h>
#include <vespa/vespalib/util/barrier.h>
diff --git a/messagebus/src/tests/protocolrepository/CMakeLists.txt b/messagebus/src/tests/protocolrepository/CMakeLists.txt
index 8d4d6e6dcfa..0a4833645aa 100644
--- a/messagebus/src/tests/protocolrepository/CMakeLists.txt
+++ b/messagebus/src/tests/protocolrepository/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_protocolrepository_test_app TEST
SOURCES
protocolrepository.cpp
diff --git a/messagebus/src/tests/protocolrepository/protocolrepository.cpp b/messagebus/src/tests/protocolrepository/protocolrepository.cpp
index b6178449918..a9a268262ee 100644
--- a/messagebus/src/tests/protocolrepository/protocolrepository.cpp
+++ b/messagebus/src/tests/protocolrepository/protocolrepository.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/protocolrepository.h>
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/messagebus/src/tests/queue/CMakeLists.txt b/messagebus/src/tests/queue/CMakeLists.txt
index 07d4455cf8a..fa53409d774 100644
--- a/messagebus/src/tests/queue/CMakeLists.txt
+++ b/messagebus/src/tests/queue/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_queue_test_app TEST
SOURCES
queue.cpp
diff --git a/messagebus/src/tests/queue/queue.cpp b/messagebus/src/tests/queue/queue.cpp
index 871589a6291..182ff6526a0 100644
--- a/messagebus/src/tests/queue/queue.cpp
+++ b/messagebus/src/tests/queue/queue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/messagebus/queue.h>
diff --git a/messagebus/src/tests/replygate/CMakeLists.txt b/messagebus/src/tests/replygate/CMakeLists.txt
index 0b28ab01221..a67ce1e9db6 100644
--- a/messagebus/src/tests/replygate/CMakeLists.txt
+++ b/messagebus/src/tests/replygate/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_replygate_test_app TEST
SOURCES
replygate.cpp
diff --git a/messagebus/src/tests/replygate/replygate.cpp b/messagebus/src/tests/replygate/replygate.cpp
index 0c0ea667462..0acdc0a5611 100644
--- a/messagebus/src/tests/replygate/replygate.cpp
+++ b/messagebus/src/tests/replygate/replygate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/emptyreply.h>
#include <vespa/messagebus/imessagehandler.h>
diff --git a/messagebus/src/tests/resender/CMakeLists.txt b/messagebus/src/tests/resender/CMakeLists.txt
index 0e06328e445..030a590d585 100644
--- a/messagebus/src/tests/resender/CMakeLists.txt
+++ b/messagebus/src/tests/resender/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_resender_test_app TEST
SOURCES
resender.cpp
diff --git a/messagebus/src/tests/resender/resender.cpp b/messagebus/src/tests/resender/resender.cpp
index f40dbdc5e4a..ee1c3409a78 100644
--- a/messagebus/src/tests/resender/resender.cpp
+++ b/messagebus/src/tests/resender/resender.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/emptyreply.h>
#include <vespa/messagebus/errorcode.h>
diff --git a/messagebus/src/tests/result/CMakeLists.txt b/messagebus/src/tests/result/CMakeLists.txt
index 2445724a413..2cd6748f65a 100644
--- a/messagebus/src/tests/result/CMakeLists.txt
+++ b/messagebus/src/tests/result/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_result_test_app TEST
SOURCES
result.cpp
diff --git a/messagebus/src/tests/result/result.cpp b/messagebus/src/tests/result/result.cpp
index 75781e88bf9..ff5f0de7242 100644
--- a/messagebus/src/tests/result/result.cpp
+++ b/messagebus/src/tests/result/result.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/messagebus/result.h>
diff --git a/messagebus/src/tests/retrypolicy/CMakeLists.txt b/messagebus/src/tests/retrypolicy/CMakeLists.txt
index 02c38dab172..1aabd6ee7a1 100644
--- a/messagebus/src/tests/retrypolicy/CMakeLists.txt
+++ b/messagebus/src/tests/retrypolicy/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_retrypolicy_test_app TEST
SOURCES
retrypolicy.cpp
diff --git a/messagebus/src/tests/retrypolicy/retrypolicy.cpp b/messagebus/src/tests/retrypolicy/retrypolicy.cpp
index b03357b9498..059c017f46a 100644
--- a/messagebus/src/tests/retrypolicy/retrypolicy.cpp
+++ b/messagebus/src/tests/retrypolicy/retrypolicy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/errorcode.h>
#include <vespa/messagebus/routing/retrytransienterrorspolicy.h>
diff --git a/messagebus/src/tests/routable/CMakeLists.txt b/messagebus/src/tests/routable/CMakeLists.txt
index 53785c76f7f..88bf438f7aa 100644
--- a/messagebus/src/tests/routable/CMakeLists.txt
+++ b/messagebus/src/tests/routable/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_routable_test_app TEST
SOURCES
routable.cpp
diff --git a/messagebus/src/tests/routable/routable.cpp b/messagebus/src/tests/routable/routable.cpp
index 5b1d14a657b..9284d0c5095 100644
--- a/messagebus/src/tests/routable/routable.cpp
+++ b/messagebus/src/tests/routable/routable.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/testlib/receptor.h>
#include <vespa/messagebus/testlib/simplemessage.h>
diff --git a/messagebus/src/tests/routablequeue/CMakeLists.txt b/messagebus/src/tests/routablequeue/CMakeLists.txt
index 4b76fa34919..7d693642776 100644
--- a/messagebus/src/tests/routablequeue/CMakeLists.txt
+++ b/messagebus/src/tests/routablequeue/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_routablequeue_test_app TEST
SOURCES
routablequeue.cpp
diff --git a/messagebus/src/tests/routablequeue/routablequeue.cpp b/messagebus/src/tests/routablequeue/routablequeue.cpp
index 04e90984f88..6f90928c53c 100644
--- a/messagebus/src/tests/routablequeue/routablequeue.cpp
+++ b/messagebus/src/tests/routablequeue/routablequeue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/routablequeue.h>
#include <vespa/messagebus/testlib/simplemessage.h>
diff --git a/messagebus/src/tests/routeparser/CMakeLists.txt b/messagebus/src/tests/routeparser/CMakeLists.txt
index 70587a3fa35..5c30d53ce61 100644
--- a/messagebus/src/tests/routeparser/CMakeLists.txt
+++ b/messagebus/src/tests/routeparser/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_routeparser_test_app TEST
SOURCES
routeparser.cpp
diff --git a/messagebus/src/tests/routeparser/routeparser.cpp b/messagebus/src/tests/routeparser/routeparser.cpp
index 12054c6c494..d8236966ff9 100644
--- a/messagebus/src/tests/routeparser/routeparser.cpp
+++ b/messagebus/src/tests/routeparser/routeparser.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/errorcode.h>
#include <vespa/messagebus/routing/errordirective.h>
diff --git a/messagebus/src/tests/routing/CMakeLists.txt b/messagebus/src/tests/routing/CMakeLists.txt
index ce95c19a6b0..5440ba15efe 100644
--- a/messagebus/src/tests/routing/CMakeLists.txt
+++ b/messagebus/src/tests/routing/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_routing_test_app TEST
SOURCES
routing.cpp
diff --git a/messagebus/src/tests/routing/routing.cpp b/messagebus/src/tests/routing/routing.cpp
index 48c86a53160..20468945edd 100644
--- a/messagebus/src/tests/routing/routing.cpp
+++ b/messagebus/src/tests/routing/routing.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/emptyreply.h>
#include <vespa/messagebus/errorcode.h>
#include <vespa/messagebus/routing/errordirective.h>
diff --git a/messagebus/src/tests/routingcontext/CMakeLists.txt b/messagebus/src/tests/routingcontext/CMakeLists.txt
index a94e3e661c6..a56922d131b 100644
--- a/messagebus/src/tests/routingcontext/CMakeLists.txt
+++ b/messagebus/src/tests/routingcontext/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_routingcontext_test_app TEST
SOURCES
routingcontext.cpp
diff --git a/messagebus/src/tests/routingcontext/routingcontext.cpp b/messagebus/src/tests/routingcontext/routingcontext.cpp
index 1c971b29ee3..737673a73ba 100644
--- a/messagebus/src/tests/routingcontext/routingcontext.cpp
+++ b/messagebus/src/tests/routingcontext/routingcontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/emptyreply.h>
#include <vespa/messagebus/errorcode.h>
diff --git a/messagebus/src/tests/routingspec/CMakeLists.txt b/messagebus/src/tests/routingspec/CMakeLists.txt
index 5dde5126943..feea7cc2b1b 100644
--- a/messagebus/src/tests/routingspec/CMakeLists.txt
+++ b/messagebus/src/tests/routingspec/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_routingspec_test_app TEST
SOURCES
routingspec.cpp
diff --git a/messagebus/src/tests/routingspec/routingspec.cpp b/messagebus/src/tests/routingspec/routingspec.cpp
index 52a07ce4ef7..0079c7c8673 100644
--- a/messagebus/src/tests/routingspec/routingspec.cpp
+++ b/messagebus/src/tests/routingspec/routingspec.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config/config.h>
#include <vespa/messagebus/configagent.h>
diff --git a/messagebus/src/tests/rpcserviceaddress/CMakeLists.txt b/messagebus/src/tests/rpcserviceaddress/CMakeLists.txt
index 5c13e8902b9..e2a0a96eec7 100644
--- a/messagebus/src/tests/rpcserviceaddress/CMakeLists.txt
+++ b/messagebus/src/tests/rpcserviceaddress/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_rpcserviceaddress_test_app TEST
SOURCES
rpcserviceaddress.cpp
diff --git a/messagebus/src/tests/rpcserviceaddress/rpcserviceaddress.cpp b/messagebus/src/tests/rpcserviceaddress/rpcserviceaddress.cpp
index 67eb8823a44..4bc7d2e3e75 100644
--- a/messagebus/src/tests/rpcserviceaddress/rpcserviceaddress.cpp
+++ b/messagebus/src/tests/rpcserviceaddress/rpcserviceaddress.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/network/rpcserviceaddress.h>
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/messagebus/src/tests/sendadapter/CMakeLists.txt b/messagebus/src/tests/sendadapter/CMakeLists.txt
index f39cf611f2b..c9d3b44da7c 100644
--- a/messagebus/src/tests/sendadapter/CMakeLists.txt
+++ b/messagebus/src/tests/sendadapter/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_sendadapter_test_app TEST
SOURCES
sendadapter.cpp
diff --git a/messagebus/src/tests/sendadapter/sendadapter.cpp b/messagebus/src/tests/sendadapter/sendadapter.cpp
index 0e6ecdde996..b5990521128 100644
--- a/messagebus/src/tests/sendadapter/sendadapter.cpp
+++ b/messagebus/src/tests/sendadapter/sendadapter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/testlib/receptor.h>
#include <vespa/messagebus/testlib/simpleprotocol.h>
diff --git a/messagebus/src/tests/sequencer/CMakeLists.txt b/messagebus/src/tests/sequencer/CMakeLists.txt
index bcf2d650afb..5d38a990716 100644
--- a/messagebus/src/tests/sequencer/CMakeLists.txt
+++ b/messagebus/src/tests/sequencer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_sequencer_test_app TEST
SOURCES
sequencer.cpp
diff --git a/messagebus/src/tests/sequencer/sequencer.cpp b/messagebus/src/tests/sequencer/sequencer.cpp
index d347c3855cb..25d9934fe8d 100644
--- a/messagebus/src/tests/sequencer/sequencer.cpp
+++ b/messagebus/src/tests/sequencer/sequencer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/testlib/simplemessage.h>
#include <vespa/messagebus/sequencer.h>
diff --git a/messagebus/src/tests/serviceaddress/CMakeLists.txt b/messagebus/src/tests/serviceaddress/CMakeLists.txt
index 47f5e16063b..6c801389fe6 100644
--- a/messagebus/src/tests/serviceaddress/CMakeLists.txt
+++ b/messagebus/src/tests/serviceaddress/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_serviceaddress_test_app TEST
SOURCES
serviceaddress.cpp
diff --git a/messagebus/src/tests/serviceaddress/serviceaddress.cpp b/messagebus/src/tests/serviceaddress/serviceaddress.cpp
index 0ecba42bf4e..e63537c3a22 100644
--- a/messagebus/src/tests/serviceaddress/serviceaddress.cpp
+++ b/messagebus/src/tests/serviceaddress/serviceaddress.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/messagebus/testlib/slobrok.h>
diff --git a/messagebus/src/tests/servicepool/CMakeLists.txt b/messagebus/src/tests/servicepool/CMakeLists.txt
index b6d343aa2d9..e3b881b2f31 100644
--- a/messagebus/src/tests/servicepool/CMakeLists.txt
+++ b/messagebus/src/tests/servicepool/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_servicepool_test_app TEST
SOURCES
servicepool.cpp
diff --git a/messagebus/src/tests/servicepool/servicepool.cpp b/messagebus/src/tests/servicepool/servicepool.cpp
index 58fc76f6b50..ee2b4e30035 100644
--- a/messagebus/src/tests/servicepool/servicepool.cpp
+++ b/messagebus/src/tests/servicepool/servicepool.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/network/rpcnetwork.h>
#include <vespa/messagebus/network/rpcnetworkparams.h>
diff --git a/messagebus/src/tests/shutdown/CMakeLists.txt b/messagebus/src/tests/shutdown/CMakeLists.txt
index bd5ae231b38..ff529b41de2 100644
--- a/messagebus/src/tests/shutdown/CMakeLists.txt
+++ b/messagebus/src/tests/shutdown/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_shutdown_test_app TEST
SOURCES
shutdown.cpp
diff --git a/messagebus/src/tests/shutdown/shutdown.cpp b/messagebus/src/tests/shutdown/shutdown.cpp
index 07d9f0fae5d..238ee3be284 100644
--- a/messagebus/src/tests/shutdown/shutdown.cpp
+++ b/messagebus/src/tests/shutdown/shutdown.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/emptyreply.h>
#include <vespa/messagebus/routing/retrytransienterrorspolicy.h>
diff --git a/messagebus/src/tests/simple-roundtrip/CMakeLists.txt b/messagebus/src/tests/simple-roundtrip/CMakeLists.txt
index adc43cd79c4..094aa70efdd 100644
--- a/messagebus/src/tests/simple-roundtrip/CMakeLists.txt
+++ b/messagebus/src/tests/simple-roundtrip/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_simple-roundtrip_test_app TEST
SOURCES
simple-roundtrip.cpp
diff --git a/messagebus/src/tests/simple-roundtrip/simple-roundtrip.cpp b/messagebus/src/tests/simple-roundtrip/simple-roundtrip.cpp
index ff2d15d2761..d3736f067c9 100644
--- a/messagebus/src/tests/simple-roundtrip/simple-roundtrip.cpp
+++ b/messagebus/src/tests/simple-roundtrip/simple-roundtrip.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/testlib/slobrok.h>
#include <vespa/messagebus/testlib/testserver.h>
diff --git a/messagebus/src/tests/simpleprotocol/CMakeLists.txt b/messagebus/src/tests/simpleprotocol/CMakeLists.txt
index 348c534e464..ef4fe0ef53c 100644
--- a/messagebus/src/tests/simpleprotocol/CMakeLists.txt
+++ b/messagebus/src/tests/simpleprotocol/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_simpleprotocol_test_app TEST
SOURCES
simpleprotocol.cpp
diff --git a/messagebus/src/tests/simpleprotocol/simpleprotocol.cpp b/messagebus/src/tests/simpleprotocol/simpleprotocol.cpp
index fda3075fc28..da23c964dd8 100644
--- a/messagebus/src/tests/simpleprotocol/simpleprotocol.cpp
+++ b/messagebus/src/tests/simpleprotocol/simpleprotocol.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/testlib/simpleprotocol.h>
#include <vespa/messagebus/testlib/simplemessage.h>
diff --git a/messagebus/src/tests/slobrok/CMakeLists.txt b/messagebus/src/tests/slobrok/CMakeLists.txt
index 2a76652a0d8..6e5a423265f 100644
--- a/messagebus/src/tests/slobrok/CMakeLists.txt
+++ b/messagebus/src/tests/slobrok/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_slobrok_test_app TEST
SOURCES
slobrok.cpp
diff --git a/messagebus/src/tests/slobrok/slobrok.cpp b/messagebus/src/tests/slobrok/slobrok.cpp
index a9e6d0f4847..fd86747fd27 100644
--- a/messagebus/src/tests/slobrok/slobrok.cpp
+++ b/messagebus/src/tests/slobrok/slobrok.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/messagebus/testlib/slobrok.h>
diff --git a/messagebus/src/tests/sourcesession/CMakeLists.txt b/messagebus/src/tests/sourcesession/CMakeLists.txt
index 10a204af2fc..eb0a0682dfd 100644
--- a/messagebus/src/tests/sourcesession/CMakeLists.txt
+++ b/messagebus/src/tests/sourcesession/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_sourcesession_test_app TEST
SOURCES
sourcesession.cpp
diff --git a/messagebus/src/tests/sourcesession/sourcesession.cpp b/messagebus/src/tests/sourcesession/sourcesession.cpp
index 25d75aa180c..6ebbc68f965 100644
--- a/messagebus/src/tests/sourcesession/sourcesession.cpp
+++ b/messagebus/src/tests/sourcesession/sourcesession.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/destinationsession.h>
#include <vespa/messagebus/error.h>
diff --git a/messagebus/src/tests/targetpool/CMakeLists.txt b/messagebus/src/tests/targetpool/CMakeLists.txt
index 9ab753cb14b..66a25dc683c 100644
--- a/messagebus/src/tests/targetpool/CMakeLists.txt
+++ b/messagebus/src/tests/targetpool/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_targetpool_test_app TEST
SOURCES
targetpool.cpp
diff --git a/messagebus/src/tests/targetpool/targetpool.cpp b/messagebus/src/tests/targetpool/targetpool.cpp
index 9ff352abcf5..b3051cb4ccc 100644
--- a/messagebus/src/tests/targetpool/targetpool.cpp
+++ b/messagebus/src/tests/targetpool/targetpool.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/network/rpctargetpool.h>
#include <vespa/messagebus/testlib/slobrok.h>
#include <vespa/messagebus/testlib/testserver.h>
diff --git a/messagebus/src/tests/throttling/CMakeLists.txt b/messagebus/src/tests/throttling/CMakeLists.txt
index 320c0ef0d39..53faba0c5de 100644
--- a/messagebus/src/tests/throttling/CMakeLists.txt
+++ b/messagebus/src/tests/throttling/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_throttling_test_app TEST
SOURCES
throttling.cpp
diff --git a/messagebus/src/tests/throttling/throttling.cpp b/messagebus/src/tests/throttling/throttling.cpp
index e11aabfd0ba..07db548be48 100644
--- a/messagebus/src/tests/throttling/throttling.cpp
+++ b/messagebus/src/tests/throttling/throttling.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/messagebus/destinationsession.h>
diff --git a/messagebus/src/tests/timeout/CMakeLists.txt b/messagebus/src/tests/timeout/CMakeLists.txt
index d17490e752a..83e3ed43f0c 100644
--- a/messagebus/src/tests/timeout/CMakeLists.txt
+++ b/messagebus/src/tests/timeout/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_timeout_test_app TEST
SOURCES
timeout.cpp
diff --git a/messagebus/src/tests/timeout/timeout.cpp b/messagebus/src/tests/timeout/timeout.cpp
index 980681a9d42..55b3a6b3bb1 100644
--- a/messagebus/src/tests/timeout/timeout.cpp
+++ b/messagebus/src/tests/timeout/timeout.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/messagebus/errorcode.h>
diff --git a/messagebus/src/tests/trace-roundtrip/CMakeLists.txt b/messagebus/src/tests/trace-roundtrip/CMakeLists.txt
index a7e5bc19cf6..1c6f783373f 100644
--- a/messagebus/src/tests/trace-roundtrip/CMakeLists.txt
+++ b/messagebus/src/tests/trace-roundtrip/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_trace-roundtrip_test_app TEST
SOURCES
trace-roundtrip.cpp
diff --git a/messagebus/src/tests/trace-roundtrip/trace-roundtrip.cpp b/messagebus/src/tests/trace-roundtrip/trace-roundtrip.cpp
index f97fc6a0010..17d4071d411 100644
--- a/messagebus/src/tests/trace-roundtrip/trace-roundtrip.cpp
+++ b/messagebus/src/tests/trace-roundtrip/trace-roundtrip.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/messagebus/emptyreply.h>
diff --git a/messagebus/src/vespa/messagebus/CMakeLists.txt b/messagebus/src/vespa/messagebus/CMakeLists.txt
index 1dfac1fbdac..83800647163 100644
--- a/messagebus/src/vespa/messagebus/CMakeLists.txt
+++ b/messagebus/src/vespa/messagebus/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(messagebus
SOURCES
blob.cpp
diff --git a/messagebus/src/vespa/messagebus/blob.cpp b/messagebus/src/vespa/messagebus/blob.cpp
index 76e6f15645a..127a7348664 100644
--- a/messagebus/src/vespa/messagebus/blob.cpp
+++ b/messagebus/src/vespa/messagebus/blob.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "blob.h"
diff --git a/messagebus/src/vespa/messagebus/blob.h b/messagebus/src/vespa/messagebus/blob.h
index 0509d71d77c..a5162a75efa 100644
--- a/messagebus/src/vespa/messagebus/blob.h
+++ b/messagebus/src/vespa/messagebus/blob.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/blobref.cpp b/messagebus/src/vespa/messagebus/blobref.cpp
index 5bc05aaa233..758b50b2a97 100644
--- a/messagebus/src/vespa/messagebus/blobref.cpp
+++ b/messagebus/src/vespa/messagebus/blobref.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "blobref.h"
diff --git a/messagebus/src/vespa/messagebus/blobref.h b/messagebus/src/vespa/messagebus/blobref.h
index 0e8475f15cc..96db0e5ebcc 100644
--- a/messagebus/src/vespa/messagebus/blobref.h
+++ b/messagebus/src/vespa/messagebus/blobref.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/callstack.cpp b/messagebus/src/vespa/messagebus/callstack.cpp
index ab22f1ace34..9b07b32570a 100644
--- a/messagebus/src/vespa/messagebus/callstack.cpp
+++ b/messagebus/src/vespa/messagebus/callstack.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "callstack.h"
#include "message.h"
diff --git a/messagebus/src/vespa/messagebus/callstack.h b/messagebus/src/vespa/messagebus/callstack.h
index d4ef44c88bb..35ebc27e2af 100644
--- a/messagebus/src/vespa/messagebus/callstack.h
+++ b/messagebus/src/vespa/messagebus/callstack.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/common.h b/messagebus/src/vespa/messagebus/common.h
index 11594fcdc22..1c0b4a49f2b 100644
--- a/messagebus/src/vespa/messagebus/common.h
+++ b/messagebus/src/vespa/messagebus/common.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/messagebus/src/vespa/messagebus/configagent.cpp b/messagebus/src/vespa/messagebus/configagent.cpp
index 768d008b39d..dc89e87f62a 100644
--- a/messagebus/src/vespa/messagebus/configagent.cpp
+++ b/messagebus/src/vespa/messagebus/configagent.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/routing/routingspec.h>
#include "configagent.h"
diff --git a/messagebus/src/vespa/messagebus/configagent.h b/messagebus/src/vespa/messagebus/configagent.h
index a390a8bd207..c7327b60527 100644
--- a/messagebus/src/vespa/messagebus/configagent.h
+++ b/messagebus/src/vespa/messagebus/configagent.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/context.h b/messagebus/src/vespa/messagebus/context.h
index e2512169859..edf875630e1 100644
--- a/messagebus/src/vespa/messagebus/context.h
+++ b/messagebus/src/vespa/messagebus/context.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/create-class-cpp.sh b/messagebus/src/vespa/messagebus/create-class-cpp.sh
index 83725dae35c..173f707b6e7 100755
--- a/messagebus/src/vespa/messagebus/create-class-cpp.sh
+++ b/messagebus/src/vespa/messagebus/create-class-cpp.sh
@@ -1,12 +1,12 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
class=$1
guard=`echo $class | tr 'a-z' 'A-Z'`
name=`echo $class | tr 'A-Z' 'a-z'`
cat <<EOF
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "$name.h"
diff --git a/messagebus/src/vespa/messagebus/create-class-h.sh b/messagebus/src/vespa/messagebus/create-class-h.sh
index 2cf6bc8ae61..63d281e6cd5 100755
--- a/messagebus/src/vespa/messagebus/create-class-h.sh
+++ b/messagebus/src/vespa/messagebus/create-class-h.sh
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#!/bin/sh
@@ -6,7 +6,7 @@ class=$1
guard=`echo $class | tr 'a-z' 'A-Z'`
cat <<EOF
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace mbus {
diff --git a/messagebus/src/vespa/messagebus/create-interface.sh b/messagebus/src/vespa/messagebus/create-interface.sh
index 196df1118a4..fc79309ac9b 100755
--- a/messagebus/src/vespa/messagebus/create-interface.sh
+++ b/messagebus/src/vespa/messagebus/create-interface.sh
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#!/bin/sh
@@ -6,7 +6,7 @@ class=$1
guard=`echo $class | tr 'a-z' 'A-Z'`
cat <<EOF
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace mbus {
diff --git a/messagebus/src/vespa/messagebus/destinationsession.cpp b/messagebus/src/vespa/messagebus/destinationsession.cpp
index 1731def825c..661873e5678 100644
--- a/messagebus/src/vespa/messagebus/destinationsession.cpp
+++ b/messagebus/src/vespa/messagebus/destinationsession.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "destinationsession.h"
#include "messagebus.h"
#include "emptyreply.h"
diff --git a/messagebus/src/vespa/messagebus/destinationsession.h b/messagebus/src/vespa/messagebus/destinationsession.h
index cac75bfb397..138e00407e8 100644
--- a/messagebus/src/vespa/messagebus/destinationsession.h
+++ b/messagebus/src/vespa/messagebus/destinationsession.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "destinationsessionparams.h"
diff --git a/messagebus/src/vespa/messagebus/destinationsessionparams.cpp b/messagebus/src/vespa/messagebus/destinationsessionparams.cpp
index ecbc036ffed..a830e04e243 100644
--- a/messagebus/src/vespa/messagebus/destinationsessionparams.cpp
+++ b/messagebus/src/vespa/messagebus/destinationsessionparams.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "destinationsessionparams.h"
namespace mbus {
diff --git a/messagebus/src/vespa/messagebus/destinationsessionparams.h b/messagebus/src/vespa/messagebus/destinationsessionparams.h
index d5acb1e8acb..fbd392a011c 100644
--- a/messagebus/src/vespa/messagebus/destinationsessionparams.h
+++ b/messagebus/src/vespa/messagebus/destinationsessionparams.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "imessagehandler.h"
diff --git a/messagebus/src/vespa/messagebus/dynamicthrottlepolicy.cpp b/messagebus/src/vespa/messagebus/dynamicthrottlepolicy.cpp
index 7145e0ec36d..00a76ca8b12 100644
--- a/messagebus/src/vespa/messagebus/dynamicthrottlepolicy.cpp
+++ b/messagebus/src/vespa/messagebus/dynamicthrottlepolicy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dynamicthrottlepolicy.h"
#include "steadytimer.h"
#include <climits>
diff --git a/messagebus/src/vespa/messagebus/dynamicthrottlepolicy.h b/messagebus/src/vespa/messagebus/dynamicthrottlepolicy.h
index c257d9f6fa7..99a549beef2 100644
--- a/messagebus/src/vespa/messagebus/dynamicthrottlepolicy.h
+++ b/messagebus/src/vespa/messagebus/dynamicthrottlepolicy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "itimer.h"
diff --git a/messagebus/src/vespa/messagebus/emptyreply.cpp b/messagebus/src/vespa/messagebus/emptyreply.cpp
index 4e858f4332d..1e0b05bae82 100644
--- a/messagebus/src/vespa/messagebus/emptyreply.cpp
+++ b/messagebus/src/vespa/messagebus/emptyreply.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "emptyreply.h"
namespace {
diff --git a/messagebus/src/vespa/messagebus/emptyreply.h b/messagebus/src/vespa/messagebus/emptyreply.h
index 909fb197697..a26e353c88c 100644
--- a/messagebus/src/vespa/messagebus/emptyreply.h
+++ b/messagebus/src/vespa/messagebus/emptyreply.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "reply.h"
diff --git a/messagebus/src/vespa/messagebus/error.cpp b/messagebus/src/vespa/messagebus/error.cpp
index 85eec140db5..f34bbb4883f 100644
--- a/messagebus/src/vespa/messagebus/error.cpp
+++ b/messagebus/src/vespa/messagebus/error.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "error.h"
#include "errorcode.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/messagebus/src/vespa/messagebus/error.h b/messagebus/src/vespa/messagebus/error.h
index 74936962113..15b5f397b56 100644
--- a/messagebus/src/vespa/messagebus/error.h
+++ b/messagebus/src/vespa/messagebus/error.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "common.h"
diff --git a/messagebus/src/vespa/messagebus/errorcode.cpp b/messagebus/src/vespa/messagebus/errorcode.cpp
index af9089b987e..09a58e13e17 100644
--- a/messagebus/src/vespa/messagebus/errorcode.cpp
+++ b/messagebus/src/vespa/messagebus/errorcode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "errorcode.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/messagebus/src/vespa/messagebus/errorcode.h b/messagebus/src/vespa/messagebus/errorcode.h
index f170e29ca8f..c02ccdab225 100644
--- a/messagebus/src/vespa/messagebus/errorcode.h
+++ b/messagebus/src/vespa/messagebus/errorcode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/iconfighandler.h b/messagebus/src/vespa/messagebus/iconfighandler.h
index acfce9a6961..91398629ca8 100644
--- a/messagebus/src/vespa/messagebus/iconfighandler.h
+++ b/messagebus/src/vespa/messagebus/iconfighandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/idiscardhandler.h b/messagebus/src/vespa/messagebus/idiscardhandler.h
index 92b2cbd76ec..049b8dfb245 100644
--- a/messagebus/src/vespa/messagebus/idiscardhandler.h
+++ b/messagebus/src/vespa/messagebus/idiscardhandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "context.h"
diff --git a/messagebus/src/vespa/messagebus/imessagehandler.h b/messagebus/src/vespa/messagebus/imessagehandler.h
index 6638bc52d7d..ee15f96b22b 100644
--- a/messagebus/src/vespa/messagebus/imessagehandler.h
+++ b/messagebus/src/vespa/messagebus/imessagehandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/intermediatesession.cpp b/messagebus/src/vespa/messagebus/intermediatesession.cpp
index 7dfd144b28b..2b8830f07e8 100644
--- a/messagebus/src/vespa/messagebus/intermediatesession.cpp
+++ b/messagebus/src/vespa/messagebus/intermediatesession.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "intermediatesession.h"
#include "messagebus.h"
diff --git a/messagebus/src/vespa/messagebus/intermediatesession.h b/messagebus/src/vespa/messagebus/intermediatesession.h
index d637ed53e37..387a77e2274 100644
--- a/messagebus/src/vespa/messagebus/intermediatesession.h
+++ b/messagebus/src/vespa/messagebus/intermediatesession.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "reply.h"
diff --git a/messagebus/src/vespa/messagebus/intermediatesessionparams.cpp b/messagebus/src/vespa/messagebus/intermediatesessionparams.cpp
index 16ff99384e8..14519e92c79 100644
--- a/messagebus/src/vespa/messagebus/intermediatesessionparams.cpp
+++ b/messagebus/src/vespa/messagebus/intermediatesessionparams.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "intermediatesessionparams.h"
namespace mbus {
diff --git a/messagebus/src/vespa/messagebus/intermediatesessionparams.h b/messagebus/src/vespa/messagebus/intermediatesessionparams.h
index e9415ea31c9..2b48342d21c 100644
--- a/messagebus/src/vespa/messagebus/intermediatesessionparams.h
+++ b/messagebus/src/vespa/messagebus/intermediatesessionparams.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "imessagehandler.h"
diff --git a/messagebus/src/vespa/messagebus/iprotocol.h b/messagebus/src/vespa/messagebus/iprotocol.h
index 301f2dad461..20726ced71b 100644
--- a/messagebus/src/vespa/messagebus/iprotocol.h
+++ b/messagebus/src/vespa/messagebus/iprotocol.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/ireplyhandler.h b/messagebus/src/vespa/messagebus/ireplyhandler.h
index 0105225f563..70ea9d31e00 100644
--- a/messagebus/src/vespa/messagebus/ireplyhandler.h
+++ b/messagebus/src/vespa/messagebus/ireplyhandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/messagebus/src/vespa/messagebus/ithrottlepolicy.h b/messagebus/src/vespa/messagebus/ithrottlepolicy.h
index 9ae149bf034..6ae0a0426ec 100644
--- a/messagebus/src/vespa/messagebus/ithrottlepolicy.h
+++ b/messagebus/src/vespa/messagebus/ithrottlepolicy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "reply.h"
diff --git a/messagebus/src/vespa/messagebus/itimer.h b/messagebus/src/vespa/messagebus/itimer.h
index fd4a954deba..b5b32fb22f4 100644
--- a/messagebus/src/vespa/messagebus/itimer.h
+++ b/messagebus/src/vespa/messagebus/itimer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/messagebus/src/vespa/messagebus/message.cpp b/messagebus/src/vespa/messagebus/message.cpp
index 8d17fd6b0ff..b385ba488d4 100644
--- a/messagebus/src/vespa/messagebus/message.cpp
+++ b/messagebus/src/vespa/messagebus/message.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "message.h"
#include "reply.h"
diff --git a/messagebus/src/vespa/messagebus/message.h b/messagebus/src/vespa/messagebus/message.h
index 22fb1e282b6..296a47edf1f 100644
--- a/messagebus/src/vespa/messagebus/message.h
+++ b/messagebus/src/vespa/messagebus/message.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "routable.h"
diff --git a/messagebus/src/vespa/messagebus/messagebus.cpp b/messagebus/src/vespa/messagebus/messagebus.cpp
index ce60f1a3969..b4b29b84793 100644
--- a/messagebus/src/vespa/messagebus/messagebus.cpp
+++ b/messagebus/src/vespa/messagebus/messagebus.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "messagebus.h"
#include "messenger.h"
diff --git a/messagebus/src/vespa/messagebus/messagebus.h b/messagebus/src/vespa/messagebus/messagebus.h
index b12054f7006..d2e82835f3e 100644
--- a/messagebus/src/vespa/messagebus/messagebus.h
+++ b/messagebus/src/vespa/messagebus/messagebus.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "destinationsession.h"
diff --git a/messagebus/src/vespa/messagebus/messagebusparams.cpp b/messagebus/src/vespa/messagebus/messagebusparams.cpp
index 7d5befb5d1a..5172bd37e92 100644
--- a/messagebus/src/vespa/messagebus/messagebusparams.cpp
+++ b/messagebus/src/vespa/messagebus/messagebusparams.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "messagebus.h"
#include <vespa/messagebus/routing/retrytransienterrorspolicy.h>
#include <vespa/vespalib/util/size_literals.h>
diff --git a/messagebus/src/vespa/messagebus/messagebusparams.h b/messagebus/src/vespa/messagebus/messagebusparams.h
index 0dcb4925baa..f4c6cc46bd8 100644
--- a/messagebus/src/vespa/messagebus/messagebusparams.h
+++ b/messagebus/src/vespa/messagebus/messagebusparams.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "iprotocol.h"
diff --git a/messagebus/src/vespa/messagebus/messenger.cpp b/messagebus/src/vespa/messagebus/messenger.cpp
index 8fa6284a5a0..13ca5317148 100644
--- a/messagebus/src/vespa/messagebus/messenger.cpp
+++ b/messagebus/src/vespa/messagebus/messenger.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "messenger.h"
#include <vespa/vespalib/util/gate.h>
diff --git a/messagebus/src/vespa/messagebus/messenger.h b/messagebus/src/vespa/messagebus/messenger.h
index 7ca3749b970..be4dbdb10d8 100644
--- a/messagebus/src/vespa/messagebus/messenger.h
+++ b/messagebus/src/vespa/messagebus/messenger.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "imessagehandler.h"
diff --git a/messagebus/src/vespa/messagebus/network/CMakeLists.txt b/messagebus/src/vespa/messagebus/network/CMakeLists.txt
index 4c8e146b8eb..fffef5518c9 100644
--- a/messagebus/src/vespa/messagebus/network/CMakeLists.txt
+++ b/messagebus/src/vespa/messagebus/network/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(messagebus_network OBJECT
SOURCES
identity.cpp
diff --git a/messagebus/src/vespa/messagebus/network/identity.cpp b/messagebus/src/vespa/messagebus/network/identity.cpp
index 17424c1b8a3..5932213375e 100644
--- a/messagebus/src/vespa/messagebus/network/identity.cpp
+++ b/messagebus/src/vespa/messagebus/network/identity.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "identity.h"
#include <vespa/vespalib/util/host_name.h>
diff --git a/messagebus/src/vespa/messagebus/network/identity.h b/messagebus/src/vespa/messagebus/network/identity.h
index 40a1af8ffae..49ac2000daa 100644
--- a/messagebus/src/vespa/messagebus/network/identity.h
+++ b/messagebus/src/vespa/messagebus/network/identity.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/messagebus/common.h>
diff --git a/messagebus/src/vespa/messagebus/network/inetwork.h b/messagebus/src/vespa/messagebus/network/inetwork.h
index 1777b9e69f5..ce65a74414f 100644
--- a/messagebus/src/vespa/messagebus/network/inetwork.h
+++ b/messagebus/src/vespa/messagebus/network/inetwork.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/messagebus/src/vespa/messagebus/network/inetworkowner.h b/messagebus/src/vespa/messagebus/network/inetworkowner.h
index 7823b45bee9..a85c85e242f 100644
--- a/messagebus/src/vespa/messagebus/network/inetworkowner.h
+++ b/messagebus/src/vespa/messagebus/network/inetworkowner.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/messagebus/common.h>
diff --git a/messagebus/src/vespa/messagebus/network/iserviceaddress.h b/messagebus/src/vespa/messagebus/network/iserviceaddress.h
index b579e71a52a..0ffce7fd2d6 100644
--- a/messagebus/src/vespa/messagebus/network/iserviceaddress.h
+++ b/messagebus/src/vespa/messagebus/network/iserviceaddress.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/messagebus/src/vespa/messagebus/network/rpcnetwork.cpp b/messagebus/src/vespa/messagebus/network/rpcnetwork.cpp
index 41298c28a88..15b5bf81670 100644
--- a/messagebus/src/vespa/messagebus/network/rpcnetwork.cpp
+++ b/messagebus/src/vespa/messagebus/network/rpcnetwork.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rpcnetwork.h"
#include "rpcservicepool.h"
#include "rpcsendv1.h"
diff --git a/messagebus/src/vespa/messagebus/network/rpcnetwork.h b/messagebus/src/vespa/messagebus/network/rpcnetwork.h
index a3722376086..3da7d88f994 100644
--- a/messagebus/src/vespa/messagebus/network/rpcnetwork.h
+++ b/messagebus/src/vespa/messagebus/network/rpcnetwork.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "inetwork.h"
diff --git a/messagebus/src/vespa/messagebus/network/rpcnetworkparams.cpp b/messagebus/src/vespa/messagebus/network/rpcnetworkparams.cpp
index 59802167c34..48c7b7e7298 100644
--- a/messagebus/src/vespa/messagebus/network/rpcnetworkparams.cpp
+++ b/messagebus/src/vespa/messagebus/network/rpcnetworkparams.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rpcnetworkparams.h"
#include <vespa/vespalib/util/size_literals.h>
diff --git a/messagebus/src/vespa/messagebus/network/rpcnetworkparams.h b/messagebus/src/vespa/messagebus/network/rpcnetworkparams.h
index 37739ee5189..01834074e6f 100644
--- a/messagebus/src/vespa/messagebus/network/rpcnetworkparams.h
+++ b/messagebus/src/vespa/messagebus/network/rpcnetworkparams.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "identity.h"
diff --git a/messagebus/src/vespa/messagebus/network/rpcsend.cpp b/messagebus/src/vespa/messagebus/network/rpcsend.cpp
index 86c9b139f1a..485c8e3e911 100644
--- a/messagebus/src/vespa/messagebus/network/rpcsend.cpp
+++ b/messagebus/src/vespa/messagebus/network/rpcsend.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rpcsend.h"
#include "rpcsend_private.h"
diff --git a/messagebus/src/vespa/messagebus/network/rpcsend.h b/messagebus/src/vespa/messagebus/network/rpcsend.h
index 1ccdea6fbc5..9b2e76a8a21 100644
--- a/messagebus/src/vespa/messagebus/network/rpcsend.h
+++ b/messagebus/src/vespa/messagebus/network/rpcsend.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "rpcsendadapter.h"
diff --git a/messagebus/src/vespa/messagebus/network/rpcsend_private.h b/messagebus/src/vespa/messagebus/network/rpcsend_private.h
index 0e299366e77..5d501cf9115 100644
--- a/messagebus/src/vespa/messagebus/network/rpcsend_private.h
+++ b/messagebus/src/vespa/messagebus/network/rpcsend_private.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/messagebus/trace.h>
diff --git a/messagebus/src/vespa/messagebus/network/rpcsendadapter.h b/messagebus/src/vespa/messagebus/network/rpcsendadapter.h
index 15b63c3117c..439049c54a8 100644
--- a/messagebus/src/vespa/messagebus/network/rpcsendadapter.h
+++ b/messagebus/src/vespa/messagebus/network/rpcsendadapter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/messagebus/blobref.h>
diff --git a/messagebus/src/vespa/messagebus/network/rpcsendv1.cpp b/messagebus/src/vespa/messagebus/network/rpcsendv1.cpp
index 775c90ea9ee..7342c264bfa 100644
--- a/messagebus/src/vespa/messagebus/network/rpcsendv1.cpp
+++ b/messagebus/src/vespa/messagebus/network/rpcsendv1.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rpcsendv1.h"
#include "rpcnetwork.h"
diff --git a/messagebus/src/vespa/messagebus/network/rpcsendv1.h b/messagebus/src/vespa/messagebus/network/rpcsendv1.h
index f9b4b0bdfe8..7010df9dde5 100644
--- a/messagebus/src/vespa/messagebus/network/rpcsendv1.h
+++ b/messagebus/src/vespa/messagebus/network/rpcsendv1.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "rpcsend.h"
diff --git a/messagebus/src/vespa/messagebus/network/rpcsendv2.cpp b/messagebus/src/vespa/messagebus/network/rpcsendv2.cpp
index 3e9a35ac7de..ead982d2c19 100644
--- a/messagebus/src/vespa/messagebus/network/rpcsendv2.cpp
+++ b/messagebus/src/vespa/messagebus/network/rpcsendv2.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rpcsendv2.h"
#include "rpcnetwork.h"
diff --git a/messagebus/src/vespa/messagebus/network/rpcsendv2.h b/messagebus/src/vespa/messagebus/network/rpcsendv2.h
index da4154e70a8..1222130c1c8 100644
--- a/messagebus/src/vespa/messagebus/network/rpcsendv2.h
+++ b/messagebus/src/vespa/messagebus/network/rpcsendv2.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "rpcsend.h"
diff --git a/messagebus/src/vespa/messagebus/network/rpcservice.cpp b/messagebus/src/vespa/messagebus/network/rpcservice.cpp
index ecf40973187..02eb7e0c9cd 100644
--- a/messagebus/src/vespa/messagebus/network/rpcservice.cpp
+++ b/messagebus/src/vespa/messagebus/network/rpcservice.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rpcservice.h"
#include "rpcnetwork.h"
diff --git a/messagebus/src/vespa/messagebus/network/rpcservice.h b/messagebus/src/vespa/messagebus/network/rpcservice.h
index 13792163693..83b7083a788 100644
--- a/messagebus/src/vespa/messagebus/network/rpcservice.h
+++ b/messagebus/src/vespa/messagebus/network/rpcservice.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "rpcserviceaddress.h"
diff --git a/messagebus/src/vespa/messagebus/network/rpcserviceaddress.cpp b/messagebus/src/vespa/messagebus/network/rpcserviceaddress.cpp
index e76832f0620..96e4b27324d 100644
--- a/messagebus/src/vespa/messagebus/network/rpcserviceaddress.cpp
+++ b/messagebus/src/vespa/messagebus/network/rpcserviceaddress.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rpcserviceaddress.h"
namespace mbus {
diff --git a/messagebus/src/vespa/messagebus/network/rpcserviceaddress.h b/messagebus/src/vespa/messagebus/network/rpcserviceaddress.h
index 77d64517c40..d5b7396fc50 100644
--- a/messagebus/src/vespa/messagebus/network/rpcserviceaddress.h
+++ b/messagebus/src/vespa/messagebus/network/rpcserviceaddress.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/network/rpcservicepool.cpp b/messagebus/src/vespa/messagebus/network/rpcservicepool.cpp
index 358698570d2..a3144039992 100644
--- a/messagebus/src/vespa/messagebus/network/rpcservicepool.cpp
+++ b/messagebus/src/vespa/messagebus/network/rpcservicepool.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rpcservicepool.h"
#include "rpcnetwork.h"
diff --git a/messagebus/src/vespa/messagebus/network/rpcservicepool.h b/messagebus/src/vespa/messagebus/network/rpcservicepool.h
index 212c975a38c..34397509ed0 100644
--- a/messagebus/src/vespa/messagebus/network/rpcservicepool.h
+++ b/messagebus/src/vespa/messagebus/network/rpcservicepool.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "rpcservice.h"
diff --git a/messagebus/src/vespa/messagebus/network/rpctarget.cpp b/messagebus/src/vespa/messagebus/network/rpctarget.cpp
index 159b86365c3..656ab081652 100644
--- a/messagebus/src/vespa/messagebus/network/rpctarget.cpp
+++ b/messagebus/src/vespa/messagebus/network/rpctarget.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rpctarget.h"
#include <vespa/vespalib/util/exceptions.h>
#include <vespa/fnet/frt/supervisor.h>
diff --git a/messagebus/src/vespa/messagebus/network/rpctarget.h b/messagebus/src/vespa/messagebus/network/rpctarget.h
index 6a57bd983e7..b6f1bf116c5 100644
--- a/messagebus/src/vespa/messagebus/network/rpctarget.h
+++ b/messagebus/src/vespa/messagebus/network/rpctarget.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/messagebus/common.h>
diff --git a/messagebus/src/vespa/messagebus/network/rpctargetpool.cpp b/messagebus/src/vespa/messagebus/network/rpctargetpool.cpp
index cfb1e120a2c..44e6890415a 100644
--- a/messagebus/src/vespa/messagebus/network/rpctargetpool.cpp
+++ b/messagebus/src/vespa/messagebus/network/rpctargetpool.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rpctargetpool.h"
#include <vespa/messagebus/steadytimer.h>
diff --git a/messagebus/src/vespa/messagebus/network/rpctargetpool.h b/messagebus/src/vespa/messagebus/network/rpctargetpool.h
index 2a6fb75d511..a11035d0426 100644
--- a/messagebus/src/vespa/messagebus/network/rpctargetpool.h
+++ b/messagebus/src/vespa/messagebus/network/rpctargetpool.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "rpcserviceaddress.h"
diff --git a/messagebus/src/vespa/messagebus/protocolrepository.cpp b/messagebus/src/vespa/messagebus/protocolrepository.cpp
index f23ef0e2ff7..f60ea0cf1e5 100644
--- a/messagebus/src/vespa/messagebus/protocolrepository.cpp
+++ b/messagebus/src/vespa/messagebus/protocolrepository.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "protocolrepository.h"
#include <cassert>
diff --git a/messagebus/src/vespa/messagebus/protocolrepository.h b/messagebus/src/vespa/messagebus/protocolrepository.h
index 28163149e2e..8092772afad 100644
--- a/messagebus/src/vespa/messagebus/protocolrepository.h
+++ b/messagebus/src/vespa/messagebus/protocolrepository.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "iprotocol.h"
diff --git a/messagebus/src/vespa/messagebus/protocolset.cpp b/messagebus/src/vespa/messagebus/protocolset.cpp
index 73feef33fa5..e360de86656 100644
--- a/messagebus/src/vespa/messagebus/protocolset.cpp
+++ b/messagebus/src/vespa/messagebus/protocolset.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "protocolset.h"
diff --git a/messagebus/src/vespa/messagebus/protocolset.h b/messagebus/src/vespa/messagebus/protocolset.h
index ba47db81ad1..5b027e31ac0 100644
--- a/messagebus/src/vespa/messagebus/protocolset.h
+++ b/messagebus/src/vespa/messagebus/protocolset.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/queue.h b/messagebus/src/vespa/messagebus/queue.h
index cc51948eba1..211498b289e 100644
--- a/messagebus/src/vespa/messagebus/queue.h
+++ b/messagebus/src/vespa/messagebus/queue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/reply.cpp b/messagebus/src/vespa/messagebus/reply.cpp
index 68bb7db1191..16e800a9841 100644
--- a/messagebus/src/vespa/messagebus/reply.cpp
+++ b/messagebus/src/vespa/messagebus/reply.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "reply.h"
#include "emptyreply.h"
#include "errorcode.h"
diff --git a/messagebus/src/vespa/messagebus/reply.h b/messagebus/src/vespa/messagebus/reply.h
index 72493ec0ae6..57cc02407b9 100644
--- a/messagebus/src/vespa/messagebus/reply.h
+++ b/messagebus/src/vespa/messagebus/reply.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "routable.h"
diff --git a/messagebus/src/vespa/messagebus/replygate.cpp b/messagebus/src/vespa/messagebus/replygate.cpp
index ea9dd3a0134..1b37a542d49 100644
--- a/messagebus/src/vespa/messagebus/replygate.cpp
+++ b/messagebus/src/vespa/messagebus/replygate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "replygate.h"
#include "message.h"
#include "reply.h"
diff --git a/messagebus/src/vespa/messagebus/replygate.h b/messagebus/src/vespa/messagebus/replygate.h
index 3890365e996..d432afa4b8b 100644
--- a/messagebus/src/vespa/messagebus/replygate.h
+++ b/messagebus/src/vespa/messagebus/replygate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/result.cpp b/messagebus/src/vespa/messagebus/result.cpp
index 970bb72e638..cefcff07e1c 100644
--- a/messagebus/src/vespa/messagebus/result.cpp
+++ b/messagebus/src/vespa/messagebus/result.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "result.h"
#include "message.h"
diff --git a/messagebus/src/vespa/messagebus/result.h b/messagebus/src/vespa/messagebus/result.h
index 08c0ddd7d4c..8be1515b21f 100644
--- a/messagebus/src/vespa/messagebus/result.h
+++ b/messagebus/src/vespa/messagebus/result.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/routable.cpp b/messagebus/src/vespa/messagebus/routable.cpp
index 801029c5bc7..4f90a018f08 100644
--- a/messagebus/src/vespa/messagebus/routable.cpp
+++ b/messagebus/src/vespa/messagebus/routable.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "emptyreply.h"
#include "errorcode.h"
#include "ireplyhandler.h"
diff --git a/messagebus/src/vespa/messagebus/routable.h b/messagebus/src/vespa/messagebus/routable.h
index 2c83daded1e..ca0bc6a438b 100644
--- a/messagebus/src/vespa/messagebus/routable.h
+++ b/messagebus/src/vespa/messagebus/routable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "callstack.h"
diff --git a/messagebus/src/vespa/messagebus/routablequeue.cpp b/messagebus/src/vespa/messagebus/routablequeue.cpp
index 6d72b7f9538..a022c952770 100644
--- a/messagebus/src/vespa/messagebus/routablequeue.cpp
+++ b/messagebus/src/vespa/messagebus/routablequeue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "routablequeue.h"
diff --git a/messagebus/src/vespa/messagebus/routablequeue.h b/messagebus/src/vespa/messagebus/routablequeue.h
index b7007792b34..9591f19f837 100644
--- a/messagebus/src/vespa/messagebus/routablequeue.h
+++ b/messagebus/src/vespa/messagebus/routablequeue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/routing/CMakeLists.txt b/messagebus/src/vespa/messagebus/routing/CMakeLists.txt
index 24a959d1f87..c252dc75e0e 100644
--- a/messagebus/src/vespa/messagebus/routing/CMakeLists.txt
+++ b/messagebus/src/vespa/messagebus/routing/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(messagebus_routing OBJECT
SOURCES
errordirective.cpp
diff --git a/messagebus/src/vespa/messagebus/routing/errordirective.cpp b/messagebus/src/vespa/messagebus/routing/errordirective.cpp
index 76263afe914..efbe91a12c9 100644
--- a/messagebus/src/vespa/messagebus/routing/errordirective.cpp
+++ b/messagebus/src/vespa/messagebus/routing/errordirective.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "errordirective.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/messagebus/src/vespa/messagebus/routing/errordirective.h b/messagebus/src/vespa/messagebus/routing/errordirective.h
index 32648d0b223..f44c21711c5 100644
--- a/messagebus/src/vespa/messagebus/routing/errordirective.h
+++ b/messagebus/src/vespa/messagebus/routing/errordirective.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "ihopdirective.h"
diff --git a/messagebus/src/vespa/messagebus/routing/hop.cpp b/messagebus/src/vespa/messagebus/routing/hop.cpp
index 76f58d57d7b..b13f282e53d 100644
--- a/messagebus/src/vespa/messagebus/routing/hop.cpp
+++ b/messagebus/src/vespa/messagebus/routing/hop.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "hop.h"
#include "routeparser.h"
diff --git a/messagebus/src/vespa/messagebus/routing/hop.h b/messagebus/src/vespa/messagebus/routing/hop.h
index 94140bdd953..af169e2dbc5 100644
--- a/messagebus/src/vespa/messagebus/routing/hop.h
+++ b/messagebus/src/vespa/messagebus/routing/hop.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "ihopdirective.h"
diff --git a/messagebus/src/vespa/messagebus/routing/hopblueprint.cpp b/messagebus/src/vespa/messagebus/routing/hopblueprint.cpp
index b9d6780fd63..034c46ba064 100644
--- a/messagebus/src/vespa/messagebus/routing/hopblueprint.cpp
+++ b/messagebus/src/vespa/messagebus/routing/hopblueprint.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "hopblueprint.h"
#include "hopspec.h"
diff --git a/messagebus/src/vespa/messagebus/routing/hopblueprint.h b/messagebus/src/vespa/messagebus/routing/hopblueprint.h
index 21b449651f1..b74c8391675 100644
--- a/messagebus/src/vespa/messagebus/routing/hopblueprint.h
+++ b/messagebus/src/vespa/messagebus/routing/hopblueprint.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "hop.h"
diff --git a/messagebus/src/vespa/messagebus/routing/hopspec.cpp b/messagebus/src/vespa/messagebus/routing/hopspec.cpp
index ba18c24c92d..0ea996982ed 100644
--- a/messagebus/src/vespa/messagebus/routing/hopspec.cpp
+++ b/messagebus/src/vespa/messagebus/routing/hopspec.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "routingspec.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/messagebus/src/vespa/messagebus/routing/hopspec.h b/messagebus/src/vespa/messagebus/routing/hopspec.h
index f3e5e6297c0..2479537d7cc 100644
--- a/messagebus/src/vespa/messagebus/routing/hopspec.h
+++ b/messagebus/src/vespa/messagebus/routing/hopspec.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/messagebus/common.h>
diff --git a/messagebus/src/vespa/messagebus/routing/ihopdirective.h b/messagebus/src/vespa/messagebus/routing/ihopdirective.h
index 2b0337f7cc9..7b0d0597fc7 100644
--- a/messagebus/src/vespa/messagebus/routing/ihopdirective.h
+++ b/messagebus/src/vespa/messagebus/routing/ihopdirective.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/messagebus/common.h>
diff --git a/messagebus/src/vespa/messagebus/routing/iretrypolicy.h b/messagebus/src/vespa/messagebus/routing/iretrypolicy.h
index b62fe3e266b..ec66eeddfad 100644
--- a/messagebus/src/vespa/messagebus/routing/iretrypolicy.h
+++ b/messagebus/src/vespa/messagebus/routing/iretrypolicy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdint>
diff --git a/messagebus/src/vespa/messagebus/routing/iroutingpolicy.h b/messagebus/src/vespa/messagebus/routing/iroutingpolicy.h
index 08d4bd3a56c..550df17196b 100644
--- a/messagebus/src/vespa/messagebus/routing/iroutingpolicy.h
+++ b/messagebus/src/vespa/messagebus/routing/iroutingpolicy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/messagebus/src/vespa/messagebus/routing/policydirective.cpp b/messagebus/src/vespa/messagebus/routing/policydirective.cpp
index 64041aa1cbc..1d8f58def28 100644
--- a/messagebus/src/vespa/messagebus/routing/policydirective.cpp
+++ b/messagebus/src/vespa/messagebus/routing/policydirective.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "policydirective.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/messagebus/src/vespa/messagebus/routing/policydirective.h b/messagebus/src/vespa/messagebus/routing/policydirective.h
index d4471b5e219..4237d3caab7 100644
--- a/messagebus/src/vespa/messagebus/routing/policydirective.h
+++ b/messagebus/src/vespa/messagebus/routing/policydirective.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "ihopdirective.h"
diff --git a/messagebus/src/vespa/messagebus/routing/resender.cpp b/messagebus/src/vespa/messagebus/routing/resender.cpp
index 979a9d61491..eb959dc17b4 100644
--- a/messagebus/src/vespa/messagebus/routing/resender.cpp
+++ b/messagebus/src/vespa/messagebus/routing/resender.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "resender.h"
#include "routingnode.h"
#include <vespa/messagebus/error.h>
diff --git a/messagebus/src/vespa/messagebus/routing/resender.h b/messagebus/src/vespa/messagebus/routing/resender.h
index f70fd57265c..599ac789cab 100644
--- a/messagebus/src/vespa/messagebus/routing/resender.h
+++ b/messagebus/src/vespa/messagebus/routing/resender.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "iretrypolicy.h"
diff --git a/messagebus/src/vespa/messagebus/routing/retrytransienterrorspolicy.cpp b/messagebus/src/vespa/messagebus/routing/retrytransienterrorspolicy.cpp
index 5aa11104b09..61c57979730 100644
--- a/messagebus/src/vespa/messagebus/routing/retrytransienterrorspolicy.cpp
+++ b/messagebus/src/vespa/messagebus/routing/retrytransienterrorspolicy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "retrytransienterrorspolicy.h"
#include <vespa/messagebus/errorcode.h>
diff --git a/messagebus/src/vespa/messagebus/routing/retrytransienterrorspolicy.h b/messagebus/src/vespa/messagebus/routing/retrytransienterrorspolicy.h
index 3968225442d..485dd08ec37 100644
--- a/messagebus/src/vespa/messagebus/routing/retrytransienterrorspolicy.h
+++ b/messagebus/src/vespa/messagebus/routing/retrytransienterrorspolicy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "iretrypolicy.h"
diff --git a/messagebus/src/vespa/messagebus/routing/route.cpp b/messagebus/src/vespa/messagebus/routing/route.cpp
index d3953a8e15d..b393c2ccd6c 100644
--- a/messagebus/src/vespa/messagebus/routing/route.cpp
+++ b/messagebus/src/vespa/messagebus/routing/route.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "route.h"
#include "routeparser.h"
diff --git a/messagebus/src/vespa/messagebus/routing/route.h b/messagebus/src/vespa/messagebus/routing/route.h
index e7542f77e00..d5ef259212a 100644
--- a/messagebus/src/vespa/messagebus/routing/route.h
+++ b/messagebus/src/vespa/messagebus/routing/route.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "hop.h"
diff --git a/messagebus/src/vespa/messagebus/routing/routedirective.cpp b/messagebus/src/vespa/messagebus/routing/routedirective.cpp
index ae40cb88a32..1c5d2932759 100644
--- a/messagebus/src/vespa/messagebus/routing/routedirective.cpp
+++ b/messagebus/src/vespa/messagebus/routing/routedirective.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "routedirective.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/messagebus/src/vespa/messagebus/routing/routedirective.h b/messagebus/src/vespa/messagebus/routing/routedirective.h
index 5923699e599..e943599e614 100644
--- a/messagebus/src/vespa/messagebus/routing/routedirective.h
+++ b/messagebus/src/vespa/messagebus/routing/routedirective.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "ihopdirective.h"
diff --git a/messagebus/src/vespa/messagebus/routing/routeparser.cpp b/messagebus/src/vespa/messagebus/routing/routeparser.cpp
index c9c10b38014..49de4fcedcd 100644
--- a/messagebus/src/vespa/messagebus/routing/routeparser.cpp
+++ b/messagebus/src/vespa/messagebus/routing/routeparser.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "errordirective.h"
#include "policydirective.h"
#include "routedirective.h"
diff --git a/messagebus/src/vespa/messagebus/routing/routeparser.h b/messagebus/src/vespa/messagebus/routing/routeparser.h
index 7a0c5a7f14a..4585ab66b51 100644
--- a/messagebus/src/vespa/messagebus/routing/routeparser.h
+++ b/messagebus/src/vespa/messagebus/routing/routeparser.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "hop.h"
diff --git a/messagebus/src/vespa/messagebus/routing/routespec.cpp b/messagebus/src/vespa/messagebus/routing/routespec.cpp
index 0ebd6745740..cc1f1a9301d 100644
--- a/messagebus/src/vespa/messagebus/routing/routespec.cpp
+++ b/messagebus/src/vespa/messagebus/routing/routespec.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "routingspec.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/messagebus/src/vespa/messagebus/routing/routespec.h b/messagebus/src/vespa/messagebus/routing/routespec.h
index d638801c9ca..61853571b9e 100644
--- a/messagebus/src/vespa/messagebus/routing/routespec.h
+++ b/messagebus/src/vespa/messagebus/routing/routespec.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/messagebus/src/vespa/messagebus/routing/routingcontext.cpp b/messagebus/src/vespa/messagebus/routing/routingcontext.cpp
index 3da0ad700a3..085820d5c3c 100644
--- a/messagebus/src/vespa/messagebus/routing/routingcontext.cpp
+++ b/messagebus/src/vespa/messagebus/routing/routingcontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "route.h"
#include "routingnode.h"
#include "policydirective.h"
diff --git a/messagebus/src/vespa/messagebus/routing/routingcontext.h b/messagebus/src/vespa/messagebus/routing/routingcontext.h
index ec17c05a170..78c7dbf3fac 100644
--- a/messagebus/src/vespa/messagebus/routing/routingcontext.h
+++ b/messagebus/src/vespa/messagebus/routing/routingcontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "routingnodeiterator.h"
diff --git a/messagebus/src/vespa/messagebus/routing/routingnode.cpp b/messagebus/src/vespa/messagebus/routing/routingnode.cpp
index 5a70f510dcc..30048d9cdd1 100644
--- a/messagebus/src/vespa/messagebus/routing/routingnode.cpp
+++ b/messagebus/src/vespa/messagebus/routing/routingnode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "routingnode.h"
#include "errordirective.h"
#include "routedirective.h"
diff --git a/messagebus/src/vespa/messagebus/routing/routingnode.h b/messagebus/src/vespa/messagebus/routing/routingnode.h
index 2f82eb0ff92..f64afa07f01 100644
--- a/messagebus/src/vespa/messagebus/routing/routingnode.h
+++ b/messagebus/src/vespa/messagebus/routing/routingnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "iroutingpolicy.h"
diff --git a/messagebus/src/vespa/messagebus/routing/routingnodeiterator.cpp b/messagebus/src/vespa/messagebus/routing/routingnodeiterator.cpp
index 10b635b4828..6d78f851f22 100644
--- a/messagebus/src/vespa/messagebus/routing/routingnodeiterator.cpp
+++ b/messagebus/src/vespa/messagebus/routing/routingnodeiterator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "routingnode.h"
namespace mbus {
diff --git a/messagebus/src/vespa/messagebus/routing/routingnodeiterator.h b/messagebus/src/vespa/messagebus/routing/routingnodeiterator.h
index 80790f9f0b5..25c1de777d1 100644
--- a/messagebus/src/vespa/messagebus/routing/routingnodeiterator.h
+++ b/messagebus/src/vespa/messagebus/routing/routingnodeiterator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "route.h"
diff --git a/messagebus/src/vespa/messagebus/routing/routingspec.cpp b/messagebus/src/vespa/messagebus/routing/routingspec.cpp
index 7d627366759..c6c28ea24ab 100644
--- a/messagebus/src/vespa/messagebus/routing/routingspec.cpp
+++ b/messagebus/src/vespa/messagebus/routing/routingspec.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "routingspec.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/messagebus/src/vespa/messagebus/routing/routingspec.h b/messagebus/src/vespa/messagebus/routing/routingspec.h
index f4d769c3037..39f407f691b 100644
--- a/messagebus/src/vespa/messagebus/routing/routingspec.h
+++ b/messagebus/src/vespa/messagebus/routing/routingspec.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vector>
diff --git a/messagebus/src/vespa/messagebus/routing/routingtable.cpp b/messagebus/src/vespa/messagebus/routing/routingtable.cpp
index c5b63f9e362..3483cd82bc6 100644
--- a/messagebus/src/vespa/messagebus/routing/routingtable.cpp
+++ b/messagebus/src/vespa/messagebus/routing/routingtable.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "routingtable.h"
#include "hop.h"
diff --git a/messagebus/src/vespa/messagebus/routing/routingtable.h b/messagebus/src/vespa/messagebus/routing/routingtable.h
index d182ea05644..99d8ade2efe 100644
--- a/messagebus/src/vespa/messagebus/routing/routingtable.h
+++ b/messagebus/src/vespa/messagebus/routing/routingtable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <map>
diff --git a/messagebus/src/vespa/messagebus/routing/routingtablespec.cpp b/messagebus/src/vespa/messagebus/routing/routingtablespec.cpp
index 40e99bf3ef7..43b1032ce57 100644
--- a/messagebus/src/vespa/messagebus/routing/routingtablespec.cpp
+++ b/messagebus/src/vespa/messagebus/routing/routingtablespec.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "routingspec.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/messagebus/src/vespa/messagebus/routing/routingtablespec.h b/messagebus/src/vespa/messagebus/routing/routingtablespec.h
index 299c030bc26..5886f82ae81 100644
--- a/messagebus/src/vespa/messagebus/routing/routingtablespec.h
+++ b/messagebus/src/vespa/messagebus/routing/routingtablespec.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <string>
diff --git a/messagebus/src/vespa/messagebus/routing/tcpdirective.cpp b/messagebus/src/vespa/messagebus/routing/tcpdirective.cpp
index 764f26c24da..8530a28e754 100644
--- a/messagebus/src/vespa/messagebus/routing/tcpdirective.cpp
+++ b/messagebus/src/vespa/messagebus/routing/tcpdirective.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tcpdirective.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/messagebus/src/vespa/messagebus/routing/tcpdirective.h b/messagebus/src/vespa/messagebus/routing/tcpdirective.h
index 3fbd933c775..b18401c8647 100644
--- a/messagebus/src/vespa/messagebus/routing/tcpdirective.h
+++ b/messagebus/src/vespa/messagebus/routing/tcpdirective.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "ihopdirective.h"
diff --git a/messagebus/src/vespa/messagebus/routing/verbatimdirective.cpp b/messagebus/src/vespa/messagebus/routing/verbatimdirective.cpp
index f4c768bfd59..963884f6a40 100644
--- a/messagebus/src/vespa/messagebus/routing/verbatimdirective.cpp
+++ b/messagebus/src/vespa/messagebus/routing/verbatimdirective.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "verbatimdirective.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/messagebus/src/vespa/messagebus/routing/verbatimdirective.h b/messagebus/src/vespa/messagebus/routing/verbatimdirective.h
index fe42c35505c..50f4be08184 100644
--- a/messagebus/src/vespa/messagebus/routing/verbatimdirective.h
+++ b/messagebus/src/vespa/messagebus/routing/verbatimdirective.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "ihopdirective.h"
diff --git a/messagebus/src/vespa/messagebus/rpcmessagebus.cpp b/messagebus/src/vespa/messagebus/rpcmessagebus.cpp
index 29b73a4e730..0700415e691 100644
--- a/messagebus/src/vespa/messagebus/rpcmessagebus.cpp
+++ b/messagebus/src/vespa/messagebus/rpcmessagebus.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rpcmessagebus.h"
#include <vespa/messagebus/network/rpcnetworkparams.h>
#include <vespa/config/subscription/configuri.h>
diff --git a/messagebus/src/vespa/messagebus/rpcmessagebus.h b/messagebus/src/vespa/messagebus/rpcmessagebus.h
index e9cfed32c44..822677e48e6 100644
--- a/messagebus/src/vespa/messagebus/rpcmessagebus.h
+++ b/messagebus/src/vespa/messagebus/rpcmessagebus.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "messagebus.h"
diff --git a/messagebus/src/vespa/messagebus/sendproxy.cpp b/messagebus/src/vespa/messagebus/sendproxy.cpp
index ff514f788cd..3222c069472 100644
--- a/messagebus/src/vespa/messagebus/sendproxy.cpp
+++ b/messagebus/src/vespa/messagebus/sendproxy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sendproxy.h"
#include <vespa/log/log.h>
diff --git a/messagebus/src/vespa/messagebus/sendproxy.h b/messagebus/src/vespa/messagebus/sendproxy.h
index 9d4a576625e..acb313894bb 100644
--- a/messagebus/src/vespa/messagebus/sendproxy.h
+++ b/messagebus/src/vespa/messagebus/sendproxy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/messagebus/routing/routingtable.h>
diff --git a/messagebus/src/vespa/messagebus/sequencer.cpp b/messagebus/src/vespa/messagebus/sequencer.cpp
index 6270284b9e2..e17509033d6 100644
--- a/messagebus/src/vespa/messagebus/sequencer.cpp
+++ b/messagebus/src/vespa/messagebus/sequencer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sequencer.h"
#include "tracelevel.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/messagebus/src/vespa/messagebus/sequencer.h b/messagebus/src/vespa/messagebus/sequencer.h
index 54ac4ce5007..676de2bd08c 100644
--- a/messagebus/src/vespa/messagebus/sequencer.h
+++ b/messagebus/src/vespa/messagebus/sequencer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/sourcesession.cpp b/messagebus/src/vespa/messagebus/sourcesession.cpp
index b22f684b848..0cf7135a1db 100644
--- a/messagebus/src/vespa/messagebus/sourcesession.cpp
+++ b/messagebus/src/vespa/messagebus/sourcesession.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sourcesession.h"
#include "errorcode.h"
#include "messagebus.h"
diff --git a/messagebus/src/vespa/messagebus/sourcesession.h b/messagebus/src/vespa/messagebus/sourcesession.h
index c7dfcdf9337..f75f41e2d20 100644
--- a/messagebus/src/vespa/messagebus/sourcesession.h
+++ b/messagebus/src/vespa/messagebus/sourcesession.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "ireplyhandler.h"
diff --git a/messagebus/src/vespa/messagebus/sourcesessionparams.cpp b/messagebus/src/vespa/messagebus/sourcesessionparams.cpp
index 5b0c920f138..8fdce7a9786 100644
--- a/messagebus/src/vespa/messagebus/sourcesessionparams.cpp
+++ b/messagebus/src/vespa/messagebus/sourcesessionparams.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sourcesessionparams.h"
#include "dynamicthrottlepolicy.h"
diff --git a/messagebus/src/vespa/messagebus/sourcesessionparams.h b/messagebus/src/vespa/messagebus/sourcesessionparams.h
index 588b13a1bd8..02d88b8ded5 100644
--- a/messagebus/src/vespa/messagebus/sourcesessionparams.h
+++ b/messagebus/src/vespa/messagebus/sourcesessionparams.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "ireplyhandler.h"
diff --git a/messagebus/src/vespa/messagebus/staticthrottlepolicy.cpp b/messagebus/src/vespa/messagebus/staticthrottlepolicy.cpp
index 7df30774efc..954737b44c3 100644
--- a/messagebus/src/vespa/messagebus/staticthrottlepolicy.cpp
+++ b/messagebus/src/vespa/messagebus/staticthrottlepolicy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "staticthrottlepolicy.h"
#include "message.h"
diff --git a/messagebus/src/vespa/messagebus/staticthrottlepolicy.h b/messagebus/src/vespa/messagebus/staticthrottlepolicy.h
index 375d7bd86ee..cbc75151306 100644
--- a/messagebus/src/vespa/messagebus/staticthrottlepolicy.h
+++ b/messagebus/src/vespa/messagebus/staticthrottlepolicy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "ithrottlepolicy.h"
diff --git a/messagebus/src/vespa/messagebus/steadytimer.cpp b/messagebus/src/vespa/messagebus/steadytimer.cpp
index 942a1f4f051..6d23c6c6fe0 100644
--- a/messagebus/src/vespa/messagebus/steadytimer.cpp
+++ b/messagebus/src/vespa/messagebus/steadytimer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "steadytimer.h"
#include <vespa/vespalib/util/time.h>
diff --git a/messagebus/src/vespa/messagebus/steadytimer.h b/messagebus/src/vespa/messagebus/steadytimer.h
index 919dd54b7d5..556d3da0bdb 100644
--- a/messagebus/src/vespa/messagebus/steadytimer.h
+++ b/messagebus/src/vespa/messagebus/steadytimer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "itimer.h"
diff --git a/messagebus/src/vespa/messagebus/testlib/CMakeLists.txt b/messagebus/src/vespa/messagebus/testlib/CMakeLists.txt
index cfc47b2db25..f4437933917 100644
--- a/messagebus/src/vespa/messagebus/testlib/CMakeLists.txt
+++ b/messagebus/src/vespa/messagebus/testlib/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(messagebus_messagebus-test
SOURCES
custompolicy.cpp
diff --git a/messagebus/src/vespa/messagebus/testlib/create-class-cpp.sh b/messagebus/src/vespa/messagebus/testlib/create-class-cpp.sh
index 83725dae35c..173f707b6e7 100755
--- a/messagebus/src/vespa/messagebus/testlib/create-class-cpp.sh
+++ b/messagebus/src/vespa/messagebus/testlib/create-class-cpp.sh
@@ -1,12 +1,12 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
class=$1
guard=`echo $class | tr 'a-z' 'A-Z'`
name=`echo $class | tr 'A-Z' 'a-z'`
cat <<EOF
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "$name.h"
diff --git a/messagebus/src/vespa/messagebus/testlib/create-class-h.sh b/messagebus/src/vespa/messagebus/testlib/create-class-h.sh
index 2cf6bc8ae61..63d281e6cd5 100755
--- a/messagebus/src/vespa/messagebus/testlib/create-class-h.sh
+++ b/messagebus/src/vespa/messagebus/testlib/create-class-h.sh
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#!/bin/sh
@@ -6,7 +6,7 @@ class=$1
guard=`echo $class | tr 'a-z' 'A-Z'`
cat <<EOF
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace mbus {
diff --git a/messagebus/src/vespa/messagebus/testlib/create-interface.sh b/messagebus/src/vespa/messagebus/testlib/create-interface.sh
index 196df1118a4..fc79309ac9b 100755
--- a/messagebus/src/vespa/messagebus/testlib/create-interface.sh
+++ b/messagebus/src/vespa/messagebus/testlib/create-interface.sh
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#!/bin/sh
@@ -6,7 +6,7 @@ class=$1
guard=`echo $class | tr 'a-z' 'A-Z'`
cat <<EOF
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace mbus {
diff --git a/messagebus/src/vespa/messagebus/testlib/custompolicy.cpp b/messagebus/src/vespa/messagebus/testlib/custompolicy.cpp
index fc16670ac32..b8518f60c76 100644
--- a/messagebus/src/vespa/messagebus/testlib/custompolicy.cpp
+++ b/messagebus/src/vespa/messagebus/testlib/custompolicy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "custompolicy.h"
#include "simpleprotocol.h"
#include <vespa/messagebus/emptyreply.h>
diff --git a/messagebus/src/vespa/messagebus/testlib/custompolicy.h b/messagebus/src/vespa/messagebus/testlib/custompolicy.h
index 78c851d175c..490d5d9fd03 100644
--- a/messagebus/src/vespa/messagebus/testlib/custompolicy.h
+++ b/messagebus/src/vespa/messagebus/testlib/custompolicy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "simpleprotocol.h"
diff --git a/messagebus/src/vespa/messagebus/testlib/receptor.cpp b/messagebus/src/vespa/messagebus/testlib/receptor.cpp
index a8199938a25..c6c87d4bc24 100644
--- a/messagebus/src/vespa/messagebus/testlib/receptor.cpp
+++ b/messagebus/src/vespa/messagebus/testlib/receptor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "receptor.h"
diff --git a/messagebus/src/vespa/messagebus/testlib/receptor.h b/messagebus/src/vespa/messagebus/testlib/receptor.h
index 4e734319ca0..52e58adb661 100644
--- a/messagebus/src/vespa/messagebus/testlib/receptor.h
+++ b/messagebus/src/vespa/messagebus/testlib/receptor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/testlib/simplemessage.cpp b/messagebus/src/vespa/messagebus/testlib/simplemessage.cpp
index 0123fccaa17..0c24191b3c6 100644
--- a/messagebus/src/vespa/messagebus/testlib/simplemessage.cpp
+++ b/messagebus/src/vespa/messagebus/testlib/simplemessage.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simplemessage.h"
#include "simpleprotocol.h"
diff --git a/messagebus/src/vespa/messagebus/testlib/simplemessage.h b/messagebus/src/vespa/messagebus/testlib/simplemessage.h
index 45d7344959f..9db67e88e24 100644
--- a/messagebus/src/vespa/messagebus/testlib/simplemessage.h
+++ b/messagebus/src/vespa/messagebus/testlib/simplemessage.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/testlib/simpleprotocol.cpp b/messagebus/src/vespa/messagebus/testlib/simpleprotocol.cpp
index 29136a276bd..e90cf0dd7a8 100644
--- a/messagebus/src/vespa/messagebus/testlib/simpleprotocol.cpp
+++ b/messagebus/src/vespa/messagebus/testlib/simpleprotocol.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simpleprotocol.h"
#include "simplemessage.h"
diff --git a/messagebus/src/vespa/messagebus/testlib/simpleprotocol.h b/messagebus/src/vespa/messagebus/testlib/simpleprotocol.h
index 09e1ee9febe..57a6e901b90 100644
--- a/messagebus/src/vespa/messagebus/testlib/simpleprotocol.h
+++ b/messagebus/src/vespa/messagebus/testlib/simpleprotocol.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/testlib/simplereply.cpp b/messagebus/src/vespa/messagebus/testlib/simplereply.cpp
index 0fce8827d57..74e95dbb330 100644
--- a/messagebus/src/vespa/messagebus/testlib/simplereply.cpp
+++ b/messagebus/src/vespa/messagebus/testlib/simplereply.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simplereply.h"
#include "simpleprotocol.h"
diff --git a/messagebus/src/vespa/messagebus/testlib/simplereply.h b/messagebus/src/vespa/messagebus/testlib/simplereply.h
index 0488e2c9870..acfa48a77fe 100644
--- a/messagebus/src/vespa/messagebus/testlib/simplereply.h
+++ b/messagebus/src/vespa/messagebus/testlib/simplereply.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/testlib/slobrok.cpp b/messagebus/src/vespa/messagebus/testlib/slobrok.cpp
index 944cd505957..3260a99678d 100644
--- a/messagebus/src/vespa/messagebus/testlib/slobrok.cpp
+++ b/messagebus/src/vespa/messagebus/testlib/slobrok.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "slobrok.h"
#include <vespa/slobrok/server/sbenv.h>
diff --git a/messagebus/src/vespa/messagebus/testlib/slobrok.h b/messagebus/src/vespa/messagebus/testlib/slobrok.h
index c59aecfee70..4b4b21ddcbd 100644
--- a/messagebus/src/vespa/messagebus/testlib/slobrok.h
+++ b/messagebus/src/vespa/messagebus/testlib/slobrok.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/testlib/slobrokstate.cpp b/messagebus/src/vespa/messagebus/testlib/slobrokstate.cpp
index 6cb33ed8ceb..55b382e5577 100644
--- a/messagebus/src/vespa/messagebus/testlib/slobrokstate.cpp
+++ b/messagebus/src/vespa/messagebus/testlib/slobrokstate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "slobrokstate.h"
diff --git a/messagebus/src/vespa/messagebus/testlib/slobrokstate.h b/messagebus/src/vespa/messagebus/testlib/slobrokstate.h
index 8e7c3d9737a..7eea0450be2 100644
--- a/messagebus/src/vespa/messagebus/testlib/slobrokstate.h
+++ b/messagebus/src/vespa/messagebus/testlib/slobrokstate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/testlib/testserver.cpp b/messagebus/src/vespa/messagebus/testlib/testserver.cpp
index 79d2539213d..80d9eaefe29 100644
--- a/messagebus/src/vespa/messagebus/testlib/testserver.cpp
+++ b/messagebus/src/vespa/messagebus/testlib/testserver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "testserver.h"
#include "simpleprotocol.h"
#include "slobrok.h"
diff --git a/messagebus/src/vespa/messagebus/testlib/testserver.h b/messagebus/src/vespa/messagebus/testlib/testserver.h
index 757e74c3554..7d144689f9f 100644
--- a/messagebus/src/vespa/messagebus/testlib/testserver.h
+++ b/messagebus/src/vespa/messagebus/testlib/testserver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/trace.h b/messagebus/src/vespa/messagebus/trace.h
index 5a26cb68e46..356a334eda5 100644
--- a/messagebus/src/vespa/messagebus/trace.h
+++ b/messagebus/src/vespa/messagebus/trace.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/messagebus/src/vespa/messagebus/tracelevel.h b/messagebus/src/vespa/messagebus/tracelevel.h
index 69490a72498..949fc1ddc9a 100644
--- a/messagebus/src/vespa/messagebus/tracelevel.h
+++ b/messagebus/src/vespa/messagebus/tracelevel.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/trace/tracelevel.h>
diff --git a/messagebus_test/CMakeLists.txt b/messagebus_test/CMakeLists.txt
index 34da1b2a3d6..6386b9960ce 100644
--- a/messagebus_test/CMakeLists.txt
+++ b/messagebus_test/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
slobrok_slobrokserver
diff --git a/messagebus_test/src/binref/CMakeLists.txt b/messagebus_test/src/binref/CMakeLists.txt
index a28d2c521ea..47ec2e57926 100644
--- a/messagebus_test/src/binref/CMakeLists.txt
+++ b/messagebus_test/src/binref/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
configure_file(compilejava.in compilejava @ONLY)
configure_file(runjava.in runjava @ONLY)
diff --git a/messagebus_test/src/binref/compilejava.in b/messagebus_test/src/binref/compilejava.in
index 31e65736706..13e4b375e3b 100755
--- a/messagebus_test/src/binref/compilejava.in
+++ b/messagebus_test/src/binref/compilejava.in
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
unset VESPA_LOG_TARGET
if [ -n "$VESPA_CPP_TEST_JARS" ]; then
diff --git a/messagebus_test/src/binref/env.sh.in b/messagebus_test/src/binref/env.sh.in
index 8ebb13dad22..7725af6e13e 100644
--- a/messagebus_test/src/binref/env.sh.in
+++ b/messagebus_test/src/binref/env.sh.in
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
BINREF=@CMAKE_CURRENT_BINARY_DIR@
export BINREF
diff --git a/messagebus_test/src/binref/runjava.in b/messagebus_test/src/binref/runjava.in
index 4436bd1c760..45250ae1f49 100755
--- a/messagebus_test/src/binref/runjava.in
+++ b/messagebus_test/src/binref/runjava.in
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
unset VESPA_LOG_TARGET
unset LD_PRELOAD
diff --git a/messagebus_test/src/tests/compile-cpp/CMakeLists.txt b/messagebus_test/src/tests/compile-cpp/CMakeLists.txt
index 78e5fdb47da..1f785b9621b 100644
--- a/messagebus_test/src/tests/compile-cpp/CMakeLists.txt
+++ b/messagebus_test/src/tests/compile-cpp/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_test_compile-cpp_test_app TEST
SOURCES
compile-cpp.cpp
diff --git a/messagebus_test/src/tests/compile-cpp/compile-cpp.cpp b/messagebus_test/src/tests/compile-cpp/compile-cpp.cpp
index 2276d1e4df3..05482cf385f 100644
--- a/messagebus_test/src/tests/compile-cpp/compile-cpp.cpp
+++ b/messagebus_test/src/tests/compile-cpp/compile-cpp.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("compile-cpp_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/messagebus_test/src/tests/compile-java/CMakeLists.txt b/messagebus_test/src/tests/compile-java/CMakeLists.txt
index 532bb6bc16d..d935920c1fb 100644
--- a/messagebus_test/src/tests/compile-java/CMakeLists.txt
+++ b/messagebus_test/src/tests/compile-java/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_test(NAME messagebus_test_compile-java_test NO_VALGRIND COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/compile-java_test.sh)
diff --git a/messagebus_test/src/tests/compile-java/TestCompile.java b/messagebus_test/src/tests/compile-java/TestCompile.java
index 81e17ad4596..499015079d8 100644
--- a/messagebus_test/src/tests/compile-java/TestCompile.java
+++ b/messagebus_test/src/tests/compile-java/TestCompile.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.messagebus.EmptyReply;
diff --git a/messagebus_test/src/tests/compile-java/compile-java_test.sh b/messagebus_test/src/tests/compile-java/compile-java_test.sh
index 970a8919e95..5dacf8a2a26 100755
--- a/messagebus_test/src/tests/compile-java/compile-java_test.sh
+++ b/messagebus_test/src/tests/compile-java/compile-java_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
if [ -z "$SOURCE_DIRECTORY" ]; then
diff --git a/messagebus_test/src/tests/error/CMakeLists.txt b/messagebus_test/src/tests/error/CMakeLists.txt
index 05a90b54877..e917632aaed 100644
--- a/messagebus_test/src/tests/error/CMakeLists.txt
+++ b/messagebus_test/src/tests/error/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_test_error_test_app TEST
SOURCES
error.cpp
diff --git a/messagebus_test/src/tests/error/JavaClient.java b/messagebus_test/src/tests/error/JavaClient.java
index bb3d84d0d60..40ea682ea6b 100644
--- a/messagebus_test/src/tests/error/JavaClient.java
+++ b/messagebus_test/src/tests/error/JavaClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.messagebus.*;
import com.yahoo.messagebus.test.*;
import com.yahoo.config.*;
diff --git a/messagebus_test/src/tests/error/JavaServer.java b/messagebus_test/src/tests/error/JavaServer.java
index e1ad49fe142..aa788355988 100644
--- a/messagebus_test/src/tests/error/JavaServer.java
+++ b/messagebus_test/src/tests/error/JavaServer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.messagebus.*;
import com.yahoo.messagebus.test.*;
import com.yahoo.config.*;
diff --git a/messagebus_test/src/tests/error/cpp-client.cpp b/messagebus_test/src/tests/error/cpp-client.cpp
index 6296253d3df..5cf88c10d64 100644
--- a/messagebus_test/src/tests/error/cpp-client.cpp
+++ b/messagebus_test/src/tests/error/cpp-client.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/messagebus.h>
#include <vespa/messagebus/errorcode.h>
diff --git a/messagebus_test/src/tests/error/cpp-server.cpp b/messagebus_test/src/tests/error/cpp-server.cpp
index 383f703317e..2343eec7254 100644
--- a/messagebus_test/src/tests/error/cpp-server.cpp
+++ b/messagebus_test/src/tests/error/cpp-server.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/messagebus.h>
#include <vespa/messagebus/testlib/simpleprotocol.h>
diff --git a/messagebus_test/src/tests/error/ctl.sh b/messagebus_test/src/tests/error/ctl.sh
index 088f5caf865..00ac7034ed6 100755
--- a/messagebus_test/src/tests/error/ctl.sh
+++ b/messagebus_test/src/tests/error/ctl.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
if [ -z "$SOURCE_DIRECTORY" ]; then
SOURCE_DIRECTORY="."
diff --git a/messagebus_test/src/tests/error/error.cpp b/messagebus_test/src/tests/error/error.cpp
index 87eb391fc86..fb2365a5980 100644
--- a/messagebus_test/src/tests/error/error.cpp
+++ b/messagebus_test/src/tests/error/error.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/testkit/test_kit.h>
diff --git a/messagebus_test/src/tests/error/error_test.sh b/messagebus_test/src/tests/error/error_test.sh
index d53807581f9..f6fefbc8507 100755
--- a/messagebus_test/src/tests/error/error_test.sh
+++ b/messagebus_test/src/tests/error/error_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
if [ -z "$SOURCE_DIRECTORY" ]; then
diff --git a/messagebus_test/src/tests/error/progdefs.sh b/messagebus_test/src/tests/error/progdefs.sh
index 41db062f9db..99676ac586b 100644
--- a/messagebus_test/src/tests/error/progdefs.sh
+++ b/messagebus_test/src/tests/error/progdefs.sh
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
prog server cpp "" "./messagebus_test_cpp-server-error_app"
prog server java "" "$BINREF/runjava JavaServer"
diff --git a/messagebus_test/src/tests/errorcodes/CMakeLists.txt b/messagebus_test/src/tests/errorcodes/CMakeLists.txt
index 474c82884b5..2cdc895aac8 100644
--- a/messagebus_test/src/tests/errorcodes/CMakeLists.txt
+++ b/messagebus_test/src/tests/errorcodes/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_test_dumpcodes_app TEST
SOURCES
dumpcodes.cpp
diff --git a/messagebus_test/src/tests/errorcodes/DumpCodes.java b/messagebus_test/src/tests/errorcodes/DumpCodes.java
index 96c7fc57a3e..3c75549a1ed 100644
--- a/messagebus_test/src/tests/errorcodes/DumpCodes.java
+++ b/messagebus_test/src/tests/errorcodes/DumpCodes.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.messagebus.ErrorCode;
public class DumpCodes {
diff --git a/messagebus_test/src/tests/errorcodes/dumpcodes.cpp b/messagebus_test/src/tests/errorcodes/dumpcodes.cpp
index ecc5c9bc42c..3aef46dbb4c 100644
--- a/messagebus_test/src/tests/errorcodes/dumpcodes.cpp
+++ b/messagebus_test/src/tests/errorcodes/dumpcodes.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/errorcode.h>
#include <vespa/fastos/app.h>
diff --git a/messagebus_test/src/tests/errorcodes/errorcodes_test.sh b/messagebus_test/src/tests/errorcodes/errorcodes_test.sh
index d3c3693f384..10d4449e9fb 100755
--- a/messagebus_test/src/tests/errorcodes/errorcodes_test.sh
+++ b/messagebus_test/src/tests/errorcodes/errorcodes_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
if [ -z "$SOURCE_DIRECTORY" ]; then
diff --git a/messagebus_test/src/tests/speed/CMakeLists.txt b/messagebus_test/src/tests/speed/CMakeLists.txt
index 1b2c20ae7df..1c637d6cb09 100644
--- a/messagebus_test/src/tests/speed/CMakeLists.txt
+++ b/messagebus_test/src/tests/speed/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_test_speed_test_app
SOURCES
speed.cpp
diff --git a/messagebus_test/src/tests/speed/JavaClient.java b/messagebus_test/src/tests/speed/JavaClient.java
index 0bbfc07bc97..14848b0acf4 100644
--- a/messagebus_test/src/tests/speed/JavaClient.java
+++ b/messagebus_test/src/tests/speed/JavaClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.messagebus.*;
import com.yahoo.messagebus.test.*;
import com.yahoo.config.*;
diff --git a/messagebus_test/src/tests/speed/JavaServer.java b/messagebus_test/src/tests/speed/JavaServer.java
index e9121ac3740..5fc9fc8338d 100644
--- a/messagebus_test/src/tests/speed/JavaServer.java
+++ b/messagebus_test/src/tests/speed/JavaServer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.messagebus.*;
import com.yahoo.messagebus.test.*;
import com.yahoo.config.*;
diff --git a/messagebus_test/src/tests/speed/cpp-client.cpp b/messagebus_test/src/tests/speed/cpp-client.cpp
index 2c20b35c597..385f983b7cb 100644
--- a/messagebus_test/src/tests/speed/cpp-client.cpp
+++ b/messagebus_test/src/tests/speed/cpp-client.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/messagebus.h>
#include <vespa/messagebus/routing/retrytransienterrorspolicy.h>
diff --git a/messagebus_test/src/tests/speed/cpp-server.cpp b/messagebus_test/src/tests/speed/cpp-server.cpp
index a1aa5a5029c..8d6fa65f530 100644
--- a/messagebus_test/src/tests/speed/cpp-server.cpp
+++ b/messagebus_test/src/tests/speed/cpp-server.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/messagebus.h>
#include <vespa/messagebus/testlib/simplemessage.h>
diff --git a/messagebus_test/src/tests/speed/ctl.sh b/messagebus_test/src/tests/speed/ctl.sh
index 088f5caf865..00ac7034ed6 100755
--- a/messagebus_test/src/tests/speed/ctl.sh
+++ b/messagebus_test/src/tests/speed/ctl.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
if [ -z "$SOURCE_DIRECTORY" ]; then
SOURCE_DIRECTORY="."
diff --git a/messagebus_test/src/tests/speed/progdefs.sh b/messagebus_test/src/tests/speed/progdefs.sh
index 550d7d59b15..12aeecfafd3 100644
--- a/messagebus_test/src/tests/speed/progdefs.sh
+++ b/messagebus_test/src/tests/speed/progdefs.sh
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
prog server cpp "" "./messagebus_test_cpp-server-speed_app"
prog server java "" "$BINREF/runjava JavaServer"
diff --git a/messagebus_test/src/tests/speed/speed.cpp b/messagebus_test/src/tests/speed/speed.cpp
index 44bd1f39e35..188aa719a5f 100644
--- a/messagebus_test/src/tests/speed/speed.cpp
+++ b/messagebus_test/src/tests/speed/speed.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("speed_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/messagebus_test/src/tests/speed/speed_test.sh b/messagebus_test/src/tests/speed/speed_test.sh
index 3ab23cbb14d..575464e59b6 100755
--- a/messagebus_test/src/tests/speed/speed_test.sh
+++ b/messagebus_test/src/tests/speed/speed_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
if [ -z "$SOURCE_DIRECTORY" ]; then
diff --git a/messagebus_test/src/tests/trace/CMakeLists.txt b/messagebus_test/src/tests/trace/CMakeLists.txt
index 4ed8197c144..5af9d184cbf 100644
--- a/messagebus_test/src/tests/trace/CMakeLists.txt
+++ b/messagebus_test/src/tests/trace/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(messagebus_test_trace_test_app TEST
SOURCES
trace.cpp
diff --git a/messagebus_test/src/tests/trace/JavaServer.java b/messagebus_test/src/tests/trace/JavaServer.java
index 899a8434900..6f7233d40d3 100644
--- a/messagebus_test/src/tests/trace/JavaServer.java
+++ b/messagebus_test/src/tests/trace/JavaServer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.messagebus.*;
import com.yahoo.messagebus.test.*;
import com.yahoo.config.*;
diff --git a/messagebus_test/src/tests/trace/cpp-server.cpp b/messagebus_test/src/tests/trace/cpp-server.cpp
index 75f4ee3a002..454c8b784eb 100644
--- a/messagebus_test/src/tests/trace/cpp-server.cpp
+++ b/messagebus_test/src/tests/trace/cpp-server.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/messagebus/messagebus.h>
#include <vespa/messagebus/testlib/simpleprotocol.h>
diff --git a/messagebus_test/src/tests/trace/ctl.sh b/messagebus_test/src/tests/trace/ctl.sh
index 088f5caf865..00ac7034ed6 100755
--- a/messagebus_test/src/tests/trace/ctl.sh
+++ b/messagebus_test/src/tests/trace/ctl.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
if [ -z "$SOURCE_DIRECTORY" ]; then
SOURCE_DIRECTORY="."
diff --git a/messagebus_test/src/tests/trace/progdefs.sh b/messagebus_test/src/tests/trace/progdefs.sh
index 2f8c732899c..ee256e465b9 100644
--- a/messagebus_test/src/tests/trace/progdefs.sh
+++ b/messagebus_test/src/tests/trace/progdefs.sh
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
prog server cpp1 "" "./messagebus_test_cpp-server-trace_app server/cpp/1/A"
prog server cpp2 "" "./messagebus_test_cpp-server-trace_app server/cpp/2/A"
prog server cpp3 "" "./messagebus_test_cpp-server-trace_app server/cpp/2/B"
diff --git a/messagebus_test/src/tests/trace/trace.cpp b/messagebus_test/src/tests/trace/trace.cpp
index a5e9251f9cc..28cda46f69e 100644
--- a/messagebus_test/src/tests/trace/trace.cpp
+++ b/messagebus_test/src/tests/trace/trace.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/testkit/test_kit.h>
diff --git a/messagebus_test/src/tests/trace/trace_test.sh b/messagebus_test/src/tests/trace/trace_test.sh
index 9926545ece6..19cfe50821c 100755
--- a/messagebus_test/src/tests/trace/trace_test.sh
+++ b/messagebus_test/src/tests/trace/trace_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
if [ -z "$SOURCE_DIRECTORY" ]; then
diff --git a/metrics-proxy/CMakeLists.txt b/metrics-proxy/CMakeLists.txt
index f6069dd2fe9..c54bbb57cf8 100644
--- a/metrics-proxy/CMakeLists.txt
+++ b/metrics-proxy/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(metrics-proxy)
vespa_install_script(src/main/sh/start-telegraf.sh libexec/vespa)
diff --git a/metrics-proxy/pom.xml b/metrics-proxy/pom.xml
index 19b545df616..83cab8de366 100644
--- a/metrics-proxy/pom.xml
+++ b/metrics-proxy/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -99,11 +99,6 @@
<!-- compile scope -->
<dependency>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>http-utils</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient</artifactId>
</dependency>
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/ConfiguredMetric.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/ConfiguredMetric.java
new file mode 100644
index 00000000000..3969ab4d7dc
--- /dev/null
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/ConfiguredMetric.java
@@ -0,0 +1,41 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package ai.vespa.metricsproxy.core;
+
+import ai.vespa.metricsproxy.metric.model.Dimension;
+import ai.vespa.metricsproxy.metric.model.DimensionId;
+import ai.vespa.metricsproxy.metric.model.MetricId;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+public class ConfiguredMetric {
+ private final MetricId name;
+ private final String description;
+ private final MetricId outputname;
+ private final List<Dimension> dimension;
+ public ConfiguredMetric(ConsumersConfig.Consumer.Metric m) {
+ name = MetricId.toMetricId(m.name());
+ outputname = MetricId.toMetricId(m.outputname());
+ description = m.description();
+ dimension = new ArrayList<>(m.dimension().size());
+ m.dimension().forEach(d -> dimension.add(new Dimension(DimensionId.toDimensionId(d.key()), d.value())));
+ }
+ public MetricId id() { return name; }
+ public MetricId outputname() { return outputname; }
+ public String description() { return description; }
+ public List<Dimension> dimension() { return dimension; }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ConfiguredMetric that = (ConfiguredMetric) o;
+ return name.equals(that.name) && description.equals(that.description) && outputname.equals(that.outputname) && dimension.equals(that.dimension);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, description, outputname, dimension);
+ }
+}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsConsumers.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsConsumers.java
index 99d7b9fe8bf..35d498b9f77 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsConsumers.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsConsumers.java
@@ -7,6 +7,7 @@ import ai.vespa.metricsproxy.metric.model.ConsumerId;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -14,7 +15,6 @@ import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collector;
-import static ai.vespa.metricsproxy.metric.model.ConsumerId.toConsumerId;
import static com.yahoo.stream.CustomCollectors.toLinkedMap;
import static java.util.Collections.unmodifiableSet;
import static java.util.stream.Collectors.collectingAndThen;
@@ -28,14 +28,14 @@ import static java.util.stream.Collectors.collectingAndThen;
public class MetricsConsumers {
// All metrics for each consumer.
- private final Map<ConsumerId, List<Consumer.Metric>> consumerMetrics;
+ private final Map<ConsumerId, List<ConfiguredMetric>> consumerMetrics;
// All consumers for each metric (more useful than the opposite map).
- private final Map<Consumer.Metric, List<ConsumerId>> consumersByMetric;
+ private final Map<ConfiguredMetric, Set<ConsumerId>> consumersByMetric;
public MetricsConsumers(ConsumersConfig config) {
consumerMetrics = config.consumer().stream().collect(
- toUnmodifiableLinkedMap(consumer -> toConsumerId(consumer.name()), Consumer::metric));
+ toUnmodifiableLinkedMap(consumer -> ConsumerId.toConsumerId(consumer.name()), consumer -> convert(consumer.metric())));
consumersByMetric = createConsumersByMetric(consumerMetrics);
}
@@ -44,11 +44,11 @@ public class MetricsConsumers {
* @param consumer The consumer
* @return The metrics for the given consumer.
*/
- public List<Consumer.Metric> getMetricDefinitions(ConsumerId consumer) {
+ public List<ConfiguredMetric> getMetricDefinitions(ConsumerId consumer) {
return consumerMetrics.get(consumer);
}
- public Map<Consumer.Metric, List<ConsumerId>> getConsumersByMetric() {
+ public Map<ConfiguredMetric, Set<ConsumerId>> getConsumersByMetric() {
return consumersByMetric;
}
@@ -60,14 +60,16 @@ public class MetricsConsumers {
* Helper function to create mapping from metric to consumers.
* TODO: consider reversing the mapping in metrics-consumers.def instead: metric{}.consumer[]
*/
- private static Map<Consumer.Metric, List<ConsumerId>>
- createConsumersByMetric(Map<ConsumerId, List<Consumer.Metric>> metricsByConsumer) {
- Map<Consumer.Metric, List<ConsumerId>> consumersByMetric = new LinkedHashMap<>();
+ private static Map<ConfiguredMetric, Set<ConsumerId>>
+ createConsumersByMetric(Map<ConsumerId, List<ConfiguredMetric>> metricsByConsumer) {
+ Map<ConfiguredMetric, Set<ConsumerId>> consumersByMetric = new LinkedHashMap<>();
metricsByConsumer.forEach(
(consumer, metrics) -> metrics.forEach(
- metric -> consumersByMetric.computeIfAbsent(metric, unused -> new ArrayList<>())
+ metric -> consumersByMetric.computeIfAbsent(metric, unused -> new HashSet<>())
.add(consumer)));
- return Collections.unmodifiableMap(consumersByMetric);
+ Map<ConfiguredMetric, Set<ConsumerId>> unmodifiableConsumersByMetric = new LinkedHashMap<>();
+ consumersByMetric.forEach((configuredMetric, consumerIds) -> unmodifiableConsumersByMetric.put(configuredMetric, Set.copyOf(consumerIds)));
+ return Collections.unmodifiableMap(unmodifiableConsumersByMetric);
}
public static <T, K, U> Collector<T, ?, Map<K, U>> toUnmodifiableLinkedMap(Function<? super T, ? extends K> keyMapper,
@@ -75,4 +77,10 @@ public class MetricsConsumers {
return collectingAndThen(toLinkedMap(keyMapper, valueMapper), Collections::unmodifiableMap);
}
+ private List<ConfiguredMetric> convert(List<Consumer.Metric> configMetrics) {
+ List<ConfiguredMetric> metrics = new ArrayList<>(configMetrics.size());
+ configMetrics.forEach(m -> metrics.add(new ConfiguredMetric(m)));
+ return metrics;
+ }
+
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java
index 53398073314..d098b56c302 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java
@@ -22,7 +22,6 @@ import java.util.logging.Logger;
import java.util.stream.Collectors;
import static ai.vespa.metricsproxy.metric.ExternalMetrics.extractConfigserverDimensions;
-import static ai.vespa.metricsproxy.metric.model.DimensionId.toDimensionId;
import static java.util.logging.Level.FINE;
import static java.util.stream.Collectors.toList;
@@ -35,7 +34,7 @@ public class MetricsManager {
private static final Logger log = Logger.getLogger(MetricsManager.class.getName());
- static final DimensionId VESPA_VERSION = toDimensionId("vespaVersion");
+ static final DimensionId VESPA_VERSION = DimensionId.toDimensionId("vespaVersion");
private final VespaServices vespaServices;
private final VespaMetrics vespaMetrics;
@@ -106,8 +105,9 @@ public class MetricsManager {
result.addAll(externalPackets);
+ Map<DimensionId, String> globalDims = getGlobalDimensions();
return result.stream()
- .map(builder -> builder.putDimensionsIfAbsent(getGlobalDimensions()))
+ .map(builder -> builder.putDimensionsIfAbsent(globalDims))
.map(builder -> builder.putDimensionsIfAbsent(extraDimensions))
.map(builder -> adjustTimestamp(builder, startTime))
.collect(Collectors.toList());
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java
index 6dda8350c8e..a8ef79d827e 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java
@@ -8,14 +8,16 @@ import ai.vespa.metricsproxy.metric.Metric;
import ai.vespa.metricsproxy.metric.Metrics;
import ai.vespa.metricsproxy.metric.MetricsFormatter;
import ai.vespa.metricsproxy.metric.model.ConsumerId;
+import ai.vespa.metricsproxy.metric.model.Dimension;
import ai.vespa.metricsproxy.metric.model.DimensionId;
+import ai.vespa.metricsproxy.metric.model.MetricId;
import ai.vespa.metricsproxy.metric.model.MetricsPacket;
+import ai.vespa.metricsproxy.service.MetricsParser;
import ai.vespa.metricsproxy.service.VespaService;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -24,17 +26,14 @@ import java.util.Set;
import java.util.stream.Collectors;
import static ai.vespa.metricsproxy.metric.dimensions.PublicDimensions.INTERNAL_SERVICE_ID;
-import static ai.vespa.metricsproxy.metric.model.ConsumerId.toConsumerId;
import static ai.vespa.metricsproxy.metric.model.DimensionId.toDimensionId;
-import static ai.vespa.metricsproxy.metric.model.ServiceId.toServiceId;
-import static com.google.common.base.Strings.isNullOrEmpty;
/**
* @author gjoranv
*/
public class VespaMetrics {
- public static final ConsumerId vespaMetricsConsumerId = toConsumerId("Vespa");
+ public static final ConsumerId vespaMetricsConsumerId = ConsumerId.toConsumerId("Vespa");
public static final DimensionId METRIC_TYPE_DIMENSION_ID = toDimensionId("metrictype");
public static final DimensionId INSTANCE_DIMENSION_ID = toDimensionId(INTERNAL_SERVICE_ID);
@@ -51,7 +50,7 @@ public class VespaMetrics {
List<MetricsPacket> result = new ArrayList<>();
for (VespaService s : services) {
HealthMetric h = s.getHealth();
- MetricsPacket.Builder builder = new MetricsPacket.Builder(toServiceId(s.getMonitoringName()))
+ MetricsPacket.Builder builder = new MetricsPacket.Builder(s.getMonitoringName())
.statusCode(h.isOk() ? 0 : 1)
.statusMessage(h.getMessage())
.putDimension(METRIC_TYPE_DIMENSION_ID, "health")
@@ -70,29 +69,27 @@ public class VespaMetrics {
public List<MetricsPacket.Builder> getMetrics(List<VespaService> services) {
List<MetricsPacket.Builder> metricsPackets = new ArrayList<>();
- Map<ConsumersConfig.Consumer.Metric, List<ConsumerId>> consumersByMetric = metricsConsumers.getConsumersByMetric();
+ Map<ConfiguredMetric, Set<ConsumerId>> consumersByMetric = metricsConsumers.getConsumersByMetric();
for (VespaService service : services) {
// One metrics packet for system metrics
Optional<MetricsPacket.Builder> systemCheck = getSystemMetrics(service);
systemCheck.ifPresent(metricsPackets::add);
- Metrics allServiceMetrics = service.getMetrics();
+ MetricAggregator aggregator = new MetricAggregator(service.getDimensions());
+ GetServiceMetricsConsumer metricsConsumer = new GetServiceMetricsConsumer(consumersByMetric, aggregator);
+ service.consumeMetrics(metricsConsumer);
- if (! allServiceMetrics.getMetrics().isEmpty()) {
- Metrics serviceMetrics = getServiceMetrics(allServiceMetrics, consumersByMetric);
+ if (! aggregator.getAggregated().isEmpty()) {
// One metrics packet per set of metrics that share the same dimensions+consumers
- // TODO: Move aggregation into MetricsPacket itself?
- Map<AggregationKey, List<Metric>> aggregatedMetrics = aggregateMetrics(service.getDimensions(), serviceMetrics);
-
- aggregatedMetrics.forEach((aggregationKey, metrics) -> {
- MetricsPacket.Builder builder = new MetricsPacket.Builder(toServiceId(service.getMonitoringName()))
+ aggregator.getAggregated().forEach((aggregationKey, metrics) -> {
+ MetricsPacket.Builder builder = new MetricsPacket.Builder(service.getMonitoringName())
.putMetrics(metrics)
.putDimension(METRIC_TYPE_DIMENSION_ID, "standard")
.putDimension(INSTANCE_DIMENSION_ID, service.getInstanceName())
.putDimensions(aggregationKey.getDimensions());
- setMetaInfo(builder, serviceMetrics.getTimeStamp());
+ setMetaInfo(builder, metrics.get(0).getTimeStamp());
builder.addConsumers(aggregationKey.getConsumers());
metricsPackets.add(builder);
});
@@ -107,7 +104,7 @@ public class VespaMetrics {
private MetricsPacket.Builder getHealth(VespaService service) {
HealthMetric health = service.getHealth();
- return new MetricsPacket.Builder(toServiceId(service.getMonitoringName()))
+ return new MetricsPacket.Builder(service.getMonitoringName())
.timestamp(System.currentTimeMillis() / 1000)
.statusCode(health.getStatus().ordinal()) // TODO: MetricsPacket should use StatusCode instead of int
.statusMessage(health.getMessage())
@@ -121,48 +118,47 @@ public class VespaMetrics {
* In order to include a metric, it must exist in the given map of metric to consumers.
* Each returned metric will contain a collection of consumers that it should be routed to.
*/
- private Metrics getServiceMetrics(Metrics allServiceMetrics, Map<ConsumersConfig.Consumer.Metric, List<ConsumerId>> consumersByMetric) {
- Metrics configuredServiceMetrics = new Metrics();
- configuredServiceMetrics.setTimeStamp(getMostRecentTimestamp(allServiceMetrics));
- for (Metric candidate : allServiceMetrics.getMetrics()) {
+ private class GetServiceMetricsConsumer implements MetricsParser.Consumer {
+ private final MetricAggregator aggregator;
+ private final Map<ConfiguredMetric, Set<ConsumerId>> consumersByMetric;
+ GetServiceMetricsConsumer(Map<ConfiguredMetric, Set<ConsumerId>> consumersByMetric, MetricAggregator aggregator) {
+ this.consumersByMetric = consumersByMetric;
+ this.aggregator = aggregator;
+ }
+
+ @Override
+ public void consume(Metric candidate) {
getConfiguredMetrics(candidate.getName(), consumersByMetric.keySet()).forEach(
- configuredMetric -> configuredServiceMetrics.add(
+ configuredMetric -> aggregator.aggregate(
metricWithConfigProperties(candidate, configuredMetric, consumersByMetric)));
}
- return configuredServiceMetrics;
}
- private Map<DimensionId, String> extractDimensions(Map<DimensionId, String> dimensions, List<ConsumersConfig.Consumer.Metric.Dimension> configuredDimensions) {
+ private Map<DimensionId, String> extractDimensions(Map<DimensionId, String> dimensions, List<Dimension> configuredDimensions) {
if ( ! configuredDimensions.isEmpty()) {
Map<DimensionId, String> dims = new HashMap<>(dimensions);
- configuredDimensions.forEach(d -> dims.put(toDimensionId(d.key()), d.value()));
+ configuredDimensions.forEach(d -> dims.put(d.key(), d.value()));
dimensions = Collections.unmodifiableMap(dims);
}
return dimensions;
}
- private Set<ConsumerId> extractConsumers(List<ConsumerId> configuredConsumers) {
+ private Set<ConsumerId> extractConsumers(Set<ConsumerId> configuredConsumers) {
Set<ConsumerId> consumers = Collections.emptySet();
if (configuredConsumers != null) {
- if ( configuredConsumers.size() == 1) {
- consumers = Collections.singleton(configuredConsumers.get(0));
- } else if (configuredConsumers.size() > 1){
- consumers = new HashSet<>();
- consumers.addAll(configuredConsumers);
- consumers = Collections.unmodifiableSet(consumers);
- }
+ consumers = configuredConsumers;
}
return consumers;
}
private Metric metricWithConfigProperties(Metric candidate,
- ConsumersConfig.Consumer.Metric configuredMetric,
- Map<ConsumersConfig.Consumer.Metric, List<ConsumerId>> consumersByMetric) {
+ ConfiguredMetric configuredMetric,
+ Map<ConfiguredMetric, Set<ConsumerId>> consumersByMetric) {
Metric metric = candidate.clone();
metric.setDimensions(extractDimensions(candidate.getDimensions(), configuredMetric.dimension()));
metric.setConsumers(extractConsumers(consumersByMetric.get(configuredMetric)));
- if (!isNullOrEmpty(configuredMetric.outputname()))
+ if (configuredMetric.outputname() != null && !configuredMetric.outputname().id.isEmpty())
metric.setName(configuredMetric.outputname());
return metric;
}
@@ -170,10 +166,9 @@ public class VespaMetrics {
/**
* Returns all configured metrics (for any consumer) that have the given id as 'name'.
*/
- private static Set<ConsumersConfig.Consumer.Metric> getConfiguredMetrics(String id,
- Set<ConsumersConfig.Consumer.Metric> configuredMetrics) {
+ private static Set<ConfiguredMetric> getConfiguredMetrics(MetricId id, Set<ConfiguredMetric> configuredMetrics) {
return configuredMetrics.stream()
- .filter(m -> m.name().equals(id))
+ .filter(m -> m.id().equals(id))
.collect(Collectors.toSet());
}
@@ -181,7 +176,7 @@ public class VespaMetrics {
Metrics systemMetrics = service.getSystemMetrics();
if (systemMetrics.size() == 0) return Optional.empty();
- MetricsPacket.Builder builder = new MetricsPacket.Builder(toServiceId(service.getMonitoringName()));
+ MetricsPacket.Builder builder = new MetricsPacket.Builder(service.getMonitoringName());
setMetaInfo(builder, systemMetrics.getTimeStamp());
builder.putDimension(METRIC_TYPE_DIMENSION_ID, "system")
@@ -193,41 +188,33 @@ public class VespaMetrics {
return Optional.of(builder);
}
- private long getMostRecentTimestamp(Metrics metrics) {
- long mostRecentTimestamp = 0L;
- for (Metric metric : metrics.getMetrics()) {
- if (metric.getTimeStamp() > mostRecentTimestamp) {
- mostRecentTimestamp = metric.getTimeStamp();
- }
+ private static class MetricAggregator {
+ private final Map<AggregationKey, List<Metric>> aggregated = new HashMap<>();
+ private final Map<DimensionId, String> serviceDimensions;
+ MetricAggregator(Map<DimensionId, String> serviceDimensions) {
+ this.serviceDimensions = serviceDimensions;
}
- return mostRecentTimestamp;
- }
-
- private Map<AggregationKey, List<Metric>> aggregateMetrics(Map<DimensionId, String> serviceDimensions,
- Metrics metrics) {
- Map<AggregationKey, List<Metric>> aggregatedMetrics = new HashMap<>();
-
- for (Metric metric : metrics.getMetrics() ) {
+ Map<AggregationKey, List<Metric>> getAggregated() { return aggregated; }
+ void aggregate(Metric metric) {
Map<DimensionId, String> mergedDimensions = new LinkedHashMap<>();
mergedDimensions.putAll(metric.getDimensions());
mergedDimensions.putAll(serviceDimensions);
AggregationKey aggregationKey = new AggregationKey(mergedDimensions, metric.getConsumers());
- if (aggregatedMetrics.containsKey(aggregationKey)) {
- aggregatedMetrics.get(aggregationKey).add(metric);
+ if (aggregated.containsKey(aggregationKey)) {
+ aggregated.get(aggregationKey).add(metric);
} else {
List<Metric> ml = new ArrayList<>();
ml.add(metric);
- aggregatedMetrics.put(aggregationKey, ml);
+ aggregated.put(aggregationKey, ml);
}
}
- return aggregatedMetrics;
}
- private List<ConsumersConfig.Consumer.Metric> getMetricDefinitions(ConsumerId consumer) {
+ private List<ConfiguredMetric> getMetricDefinitions(ConsumerId consumer) {
if (metricsConsumers == null) return Collections.emptyList();
- List<ConsumersConfig.Consumer.Metric> definitions = metricsConsumers.getMetricDefinitions(consumer);
+ List<ConfiguredMetric> definitions = metricsConsumers.getMetricDefinitions(consumer);
return definitions == null ? Collections.emptyList() : definitions;
}
@@ -237,75 +224,100 @@ public class VespaMetrics {
.statusMessage("Data collected successfully");
}
+ private class MetricStringBuilder implements MetricsParser.Consumer {
+ private final StringBuilder sb = new StringBuilder();
+ private VespaService service;
+ @Override
+ public void consume(Metric metric) {
+ MetricId key = metric.getName();
+ MetricId alias = key;
+
+ boolean isForwarded = false;
+ for (ConfiguredMetric metricConsumer : getMetricDefinitions(vespaMetricsConsumerId)) {
+ if (metricConsumer.id().equals(key)) {
+ alias = metricConsumer.outputname();
+ isForwarded = true;
+ }
+ }
+ if (isForwarded) {
+ sb.append(formatter.format(service, alias.id, metric.getValue())).append(" ");
+ }
+ }
+
+ @Override
+ public String toString() {
+ return sb.toString();
+ }
+ }
/**
* Returns a string representation of metrics for the given services;
* a space separated list of key=value.
*/
public String getMetricsAsString(List<VespaService> services) {
- StringBuilder b = new StringBuilder();
- for (VespaService s : services) {
- for (Metric metric : s.getMetrics().getMetrics()) {
- String key = metric.getName();
- String alias = key;
-
- boolean isForwarded = false;
- for (ConsumersConfig.Consumer.Metric metricConsumer : getMetricDefinitions(vespaMetricsConsumerId)) {
- if (metricConsumer.name().equals(key)) {
- alias = metricConsumer.outputname();
- isForwarded = true;
+ MetricStringBuilder msb = new MetricStringBuilder();
+ for (VespaService service : services) {
+ msb.service = service;
+ service.consumeMetrics(msb);
+ }
+ return msb.toString();
+ }
+
+ private class MetricNamesBuilder implements MetricsParser.Consumer {
+ private final StringBuilder bufferOn = new StringBuilder();
+ private final StringBuilder bufferOff = new StringBuilder();
+ private final ConsumerId consumer;
+ MetricNamesBuilder(ConsumerId consumer) {
+ this.consumer = consumer;
+ }
+ @Override
+ public void consume(Metric m) {
+ String description = m.getDescription();
+ MetricId alias = MetricId.empty;
+ boolean isForwarded = false;
+
+ for (ConfiguredMetric metric : getMetricDefinitions(consumer)) {
+ if (metric.id().equals(m.getName())) {
+ alias = metric.outputname();
+ isForwarded = true;
+ if (description.isEmpty()) {
+ description = metric.description();
}
}
- if (isForwarded) {
- b.append(formatter.format(s, alias, metric.getValue())).append(" ");
- }
}
+
+ String message = "OFF";
+ StringBuilder buffer = bufferOff;
+ if (isForwarded) {
+ buffer = bufferOn;
+ message = "ON";
+ }
+ buffer.append(m.getName()).append('=').append(message);
+ if (!description.isEmpty()) {
+ buffer.append(";description=").append(description);
+ }
+ if (!alias.id.isEmpty()) {
+ buffer.append(";output-name=").append(alias);
+ }
+ buffer.append(',');
}
- return b.toString();
- }
+ @Override
+ public String toString() {
+ return bufferOn.append(bufferOff).toString();
+ }
+ }
/**
* Get all metric names for the given services
*
* @return String representation
*/
public String getMetricNames(List<VespaService> services, ConsumerId consumer) {
- StringBuilder bufferOn = new StringBuilder();
- StringBuilder bufferOff = new StringBuilder();
- for (VespaService s : services) {
-
- for (Metric m : s.getMetrics().getMetrics()) {
- String description = m.getDescription();
- String alias = "";
- boolean isForwarded = false;
-
- for (ConsumersConfig.Consumer.Metric metric : getMetricDefinitions(consumer)) {
- if (metric.name().equals(m.getName())) {
- alias = metric.outputname();
- isForwarded = true;
- if (description.isEmpty()) {
- description = metric.description();
- }
- }
- }
-
- String message = "OFF";
- StringBuilder buffer = bufferOff;
- if (isForwarded) {
- buffer = bufferOn;
- message = "ON";
- }
- buffer.append(m.getName()).append('=').append(message);
- if (!description.isEmpty()) {
- buffer.append(";description=").append(description);
- }
- if (!alias.isEmpty()) {
- buffer.append(";output-name=").append(alias);
- }
- buffer.append(',');
- }
+ MetricNamesBuilder metricNamesBuilder = new MetricNamesBuilder(consumer);
+ for (VespaService service : services) {
+ service.consumeMetrics(metricNamesBuilder);
}
- return bufferOn.toString() + bufferOff.toString();
+ return metricNamesBuilder.toString();
}
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsException.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsException.java
deleted file mode 100644
index bdfbc65882f..00000000000
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsException.java
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-package ai.vespa.metricsproxy.http.application;
-
-/**
- * @author gjoranv
- */
-class ApplicationMetricsException extends RuntimeException {
-
- ApplicationMetricsException(String message, Throwable cause) {
- super(message, cause);
- }
-
-}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandler.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandler.java
index f8a6f47f946..d5b82b31835 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandler.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandler.java
@@ -50,6 +50,7 @@ public class ApplicationMetricsHandler extends HttpHandlerBase {
super(executor);
this.metricsRetriever = metricsRetriever;
this.metricsConsumers = metricsConsumers;
+ metricsRetriever.startPollAndWait();
}
@Override
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsRetriever.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsRetriever.java
index 619c62fae43..2603b9025c2 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsRetriever.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsRetriever.java
@@ -3,29 +3,32 @@ package ai.vespa.metricsproxy.http.application;
import ai.vespa.metricsproxy.metric.model.ConsumerId;
import ai.vespa.metricsproxy.metric.model.MetricsPacket;
-import ai.vespa.util.http.hc5.VespaHttpClientBuilder;
+import ai.vespa.util.http.hc5.VespaAsyncHttpClientBuilder;
import com.google.inject.Inject;
import com.yahoo.component.AbstractComponent;
-import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.client5.http.HttpHostConnectException;
import org.apache.hc.client5.http.config.RequestConfig;
-import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
+import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
+import org.apache.hc.core5.reactor.IOReactorConfig;
import org.apache.hc.core5.util.Timeout;
-import java.util.logging.Level;
-
+import java.io.IOException;
import java.time.Clock;
import java.time.Duration;
-import java.util.AbstractMap;
+import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.concurrent.ForkJoinPool;
+import java.util.Set;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import static ai.vespa.metricsproxy.http.ValuesFetcher.defaultMetricsConsumerId;
-import static java.util.Collections.emptyList;
-import static java.util.stream.Collectors.toMap;
/**
* This class retrieves metrics from all nodes in the given config, usually all
@@ -33,67 +36,142 @@ import static java.util.stream.Collectors.toMap;
*
* @author gjoranv
*/
-public class ApplicationMetricsRetriever extends AbstractComponent {
+public class ApplicationMetricsRetriever extends AbstractComponent implements Runnable {
private static final Logger log = Logger.getLogger(ApplicationMetricsRetriever.class.getName());
- static final int MAX_THREADS = 20;
static final Duration MIN_TIMEOUT = Duration.ofSeconds(60);
static final Duration MAX_TIMEOUT = Duration.ofSeconds(240);
private static final int HTTP_CONNECT_TIMEOUT = 5000;
private static final int HTTP_SOCKET_TIMEOUT = 30000;
+ private static final Duration METRICS_TTL = Duration.ofSeconds(30);
- private final HttpClient httpClient = createHttpClient();
+ private final CloseableHttpAsyncClient httpClient = createHttpClient();
private final List<NodeMetricsClient> clients;
- private final ForkJoinPool forkJoinPool;
+ private final Thread pollThread;
+ private final Set<ConsumerId> consumerSet;
+ private long pollCount = 0;
+ private boolean stopped;
// Non-final for testing
- private Duration taskTimeout;
+ private volatile Duration taskTimeout;
@Inject
public ApplicationMetricsRetriever(MetricsNodesConfig nodesConfig) {
clients = createNodeClients(nodesConfig);
- int numThreads = Math.min(clients.size(), MAX_THREADS);
- taskTimeout = timeout(clients.size(), numThreads);
- forkJoinPool = new ForkJoinPool(numThreads);
+ taskTimeout = timeout(clients.size());
+ stopped = false;
+ consumerSet = new HashSet<>();
+ httpClient.start();
+ pollThread = new Thread(this, "metrics-poller");
+ pollThread.setDaemon(true);
+ pollThread.start();
+ }
+
+ @Override
+ public void run() {
+ try {
+ while (true) {
+ ConsumerId [] consumers;
+ synchronized (pollThread) {
+ consumers = consumerSet.toArray(new ConsumerId[0]);
+ }
+ for (ConsumerId consumer : consumers) {
+ int numFailed = fetchMetricsAsync(consumer);
+ if (numFailed > 0 ) {
+ log.log(Level.INFO, "Updated metrics for consumer '" + consumer +"' failed for " + numFailed + " services");
+ } else {
+ log.log(Level.FINE, "Updated metrics for consumer '" + consumer +"'.");
+ }
+ }
+ Duration timeUntilNextPoll = Duration.ofMillis(1000);
+ synchronized (pollThread) {
+ pollCount++;
+ pollThread.notifyAll();
+ pollThread.wait(timeUntilNextPoll.toMillis());
+ if (stopped) return;
+ }
+ }
+ } catch (InterruptedException e) {}
}
@Override
public void deconstruct() {
- forkJoinPool.shutdownNow();
+ synchronized (pollThread) {
+ stopped = true;
+ pollThread.notifyAll();
+ }
+ try {
+ pollThread.join();
+ } catch (InterruptedException e) {}
+ try {
+ httpClient.close();
+ } catch (IOException e) {
+ log.warning("Failed closing httpclient: " + e);
+ }
super.deconstruct();
}
- public Map<Node, List<MetricsPacket>> getMetrics() {
+ Map<Node, List<MetricsPacket>> getMetrics() {
return getMetrics(defaultMetricsConsumerId);
}
public Map<Node, List<MetricsPacket>> getMetrics(ConsumerId consumer) {
- log.log(Level.FINE, () -> "Retrieving metrics from " + clients.size() + " nodes.");
- var forkJoinTask = forkJoinPool.submit(() -> clients.parallelStream()
- .map(client -> getNodeMetrics(client, consumer))
- .collect(toMap(Map.Entry::getKey, Map.Entry::getValue)));
-
- try {
- var metricsByNode = forkJoinTask.get(taskTimeout.toMillis(), TimeUnit.MILLISECONDS);
-
- log.log(Level.FINE, () -> "Finished retrieving metrics from " + clients.size() + " nodes.");
- return metricsByNode;
-
- } catch (Exception e) {
- // Since the task is a ForkJoinTask, we don't need special handling of InterruptedException
- throw new ApplicationMetricsException("Failed retrieving metrics.", e);
+ log.log(Level.INFO, () -> "Retrieving metrics from " + clients.size() + " nodes.");
+ synchronized (pollThread) {
+ if (consumerSet.add(consumer)) {
+ // Wakeup poll thread first time we see a new consumer
+ pollThread.notifyAll();
+ }
}
+ Map<Node, List<MetricsPacket>> metrics = new HashMap<>();
+ for (NodeMetricsClient client : clients) {
+ metrics.put(client.node, client.getMetrics(consumer));
+ }
+ return metrics;
}
- private Map.Entry<Node, List<MetricsPacket>> getNodeMetrics(NodeMetricsClient client, ConsumerId consumer) {
+ void startPollAndWait() {
try {
- return new AbstractMap.SimpleEntry<>(client.node, client.getMetrics(consumer));
- } catch (Exception e) {
- log.log(Level.WARNING, "Could not retrieve metrics from " + client.node.metricsUri(consumer), e);
+ synchronized (pollThread) {
+ if ( ! pollThread.isAlive()) {
+ pollThread.start();
+ }
+ long before = pollCount;
+ pollThread.notifyAll();
+ while (pollCount <= before + 1) {
+ pollThread.notifyAll();
+ pollThread.wait();
+ }
+ }
+ } catch (InterruptedException e) {}
+ }
+
+ private int fetchMetricsAsync(ConsumerId consumer) {
+ Map<Node, Future<Boolean>> futures = new HashMap<>();
+ for (NodeMetricsClient client : clients) {
+ var optional = client.startSnapshotUpdate(consumer, METRICS_TTL);
+ optional.ifPresent(future -> futures.put(client.node, future));
}
- return new AbstractMap.SimpleEntry<>(client.node, emptyList());
+ int numOk = 0;
+ int numTried = futures.size();
+ for (Map.Entry<Node, Future<Boolean>> entry : futures.entrySet()) {
+ try {
+ Boolean result = entry.getValue().get(taskTimeout.toMillis(), TimeUnit.MILLISECONDS);
+ if ((result != null) && result) numOk++;
+ } catch (InterruptedException | ExecutionException | TimeoutException e) {
+ Throwable cause = e.getCause();
+ if ( e instanceof ExecutionException && (cause != null) && (cause instanceof HttpHostConnectException)) {
+ // Remove once we have some track time.
+ log.log(Level.WARNING, "Failed retrieving metrics for '" + entry.getKey() + "' : " + cause.getMessage());
+ } else {
+ log.log(Level.WARNING, "Failed retrieving metrics for '" + entry.getKey() + "' : ", e);
+ }
+ }
+ }
+ log.log(Level.FINE, () -> "Finished retrieving metrics from " + clients.size() + " nodes.");
+ return numTried - numOk;
}
private List<NodeMetricsClient> createNodeClients(MetricsNodesConfig nodesConfig) {
@@ -101,10 +179,11 @@ public class ApplicationMetricsRetriever extends AbstractComponent {
.map(Node::new)
.map(node-> new NodeMetricsClient(httpClient, node, Clock.systemUTC()))
.collect(Collectors.toList());
- }
+ }
- private static CloseableHttpClient createHttpClient() {
- return VespaHttpClientBuilder.create()
+ static CloseableHttpAsyncClient createHttpClient() {
+ return VespaAsyncHttpClientBuilder.create()
+ .setIOReactorConfig(IOReactorConfig.custom().setIoThreadCount(2).build())
.setUserAgent("application-metrics-retriever")
.setDefaultRequestConfig(RequestConfig.custom()
.setConnectTimeout(Timeout.ofMilliseconds(HTTP_CONNECT_TIMEOUT))
@@ -113,8 +192,8 @@ public class ApplicationMetricsRetriever extends AbstractComponent {
.build();
}
- static Duration timeout(int clients, int numThreads) {
- Duration timeout = Duration.ofSeconds(Long.max(MIN_TIMEOUT.toSeconds(), 20 * clients / numThreads));
+ static Duration timeout(int clients) {
+ Duration timeout = Duration.ofSeconds(Long.max(MIN_TIMEOUT.toSeconds(), clients));
return timeout.compareTo(MAX_TIMEOUT) > 0 ? MAX_TIMEOUT : timeout;
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ClusterIdDimensionProcessor.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ClusterIdDimensionProcessor.java
index 7f58379fcb5..d12ff924527 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ClusterIdDimensionProcessor.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ClusterIdDimensionProcessor.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.metricsproxy.http.application;
import ai.vespa.metricsproxy.metric.model.MetricsPacket;
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/Node.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/Node.java
index c439a037774..c9be238cb2b 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/Node.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/Node.java
@@ -55,4 +55,10 @@ public class Node {
public int hashCode() {
return Objects.hash(role, hostname, port, path);
}
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(role).append(":").append(metricsUriBase);
+ return sb.toString();
+ }
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/NodeMetricsClient.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/NodeMetricsClient.java
index 2e17443e821..e4051f4dd5b 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/NodeMetricsClient.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/NodeMetricsClient.java
@@ -5,22 +5,26 @@ import ai.vespa.metricsproxy.metric.model.ConsumerId;
import ai.vespa.metricsproxy.metric.model.MetricsPacket;
import ai.vespa.metricsproxy.metric.model.json.GenericJsonUtil;
import ai.vespa.metricsproxy.metric.model.processing.MetricsProcessor;
-import com.yahoo.yolean.Exceptions;
-import org.apache.hc.client5.http.classic.HttpClient;
-import org.apache.hc.client5.http.classic.methods.HttpGet;
-import org.apache.hc.client5.http.impl.classic.BasicHttpClientResponseHandler;
-import java.io.IOException;
+import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
+import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
+
+import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
+import org.apache.hc.core5.concurrent.FutureCallback;
+
import java.time.Clock;
import java.time.Duration;
import java.time.Instant;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
+import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.Future;
+import java.util.concurrent.atomic.AtomicLong;
import java.util.logging.Logger;
import static ai.vespa.metricsproxy.metric.model.processing.MetricsProcessor.applyProcessors;
-import static java.util.Collections.emptyList;
import static java.util.logging.Level.FINE;
import static java.util.stream.Collectors.toList;
@@ -38,52 +42,58 @@ public class NodeMetricsClient {
private static final Logger log = Logger.getLogger(NodeMetricsClient.class.getName());
- static final Duration METRICS_TTL = Duration.ofSeconds(30);
private static final int MAX_DIMENSIONS = 10;
final Node node;
- private final HttpClient httpClient;
+ private final CloseableHttpAsyncClient httpClient;
private final Clock clock;
private final Map<ConsumerId, Snapshot> snapshots = new ConcurrentHashMap<>();
- private long snapshotsRetrieved = 0;
+ private final AtomicLong snapshotsRetrieved = new AtomicLong();
- NodeMetricsClient(HttpClient httpClient, Node node, Clock clock) {
+ NodeMetricsClient(CloseableHttpAsyncClient httpClient, Node node, Clock clock) {
this.httpClient = httpClient;
this.node = node;
this.clock = clock;
}
- public List<MetricsPacket> getMetrics(ConsumerId consumer) {
- var currentSnapshot = snapshots.get(consumer);
- if (currentSnapshot == null || currentSnapshot.isStale(clock) || currentSnapshot.metrics.isEmpty()) {
- Snapshot snapshot = retrieveMetrics(consumer);
- snapshots.put(consumer, snapshot);
- return snapshot.metrics;
- } else {
- return snapshots.get(consumer).metrics;
- }
+ List<MetricsPacket> getMetrics(ConsumerId consumer) {
+ var snapshot = snapshots.get(consumer);
+ return (snapshot != null) ? snapshot.metrics : List.of();
+ }
+
+ Optional<Future<Boolean>> startSnapshotUpdate(ConsumerId consumer, Duration ttl) {
+ var snapshot = snapshots.get(consumer);
+ if ((snapshot != null) && snapshot.isValid(clock.instant(), ttl)) return Optional.empty();
+
+ return Optional.of(retrieveMetrics(consumer));
}
- private Snapshot retrieveMetrics(ConsumerId consumer) {
+ private Future<Boolean> retrieveMetrics(ConsumerId consumer) {
String metricsUri = node.metricsUri(consumer).toString();
log.log(FINE, () -> "Retrieving metrics from host " + metricsUri);
- try {
- String metricsJson = httpClient.execute(new HttpGet(metricsUri), new BasicHttpClientResponseHandler());
- var metricsBuilders = GenericJsonUtil.toMetricsPackets(metricsJson);
- var metrics = processAndBuild(metricsBuilders,
- new ServiceIdDimensionProcessor(),
- new ClusterIdDimensionProcessor(),
- new PublicDimensionsProcessor(MAX_DIMENSIONS));
- snapshotsRetrieved ++;
- log.log(FINE, () -> "Successfully retrieved " + metrics.size() + " metrics packets from " + metricsUri);
-
- return new Snapshot(Instant.now(clock), metrics);
- } catch (IOException e) {
- log.warning("Unable to retrieve metrics from " + metricsUri + ": " + Exceptions.toMessageString(e));
- return new Snapshot(Instant.now(clock), emptyList());
- }
+ CompletableFuture<Boolean> onDone = new CompletableFuture<>();
+ httpClient.execute(SimpleRequestBuilder.get(metricsUri).build(),
+ new FutureCallback<>() {
+ @Override public void completed(SimpleHttpResponse result) {
+ handleResponse(metricsUri, consumer, result.getBodyText());
+ onDone.complete(true);
+ }
+ @Override public void failed(Exception ex) { onDone.completeExceptionally(ex); }
+ @Override public void cancelled() { onDone.cancel(false); }
+ });
+ return onDone;
+ }
+
+ void handleResponse(String metricsUri, ConsumerId consumer, String respons) {
+ var metrics = processAndBuild(GenericJsonUtil.toMetricsPackets(respons),
+ new ServiceIdDimensionProcessor(),
+ new ClusterIdDimensionProcessor(),
+ new PublicDimensionsProcessor(MAX_DIMENSIONS));
+ snapshotsRetrieved.incrementAndGet();
+ log.log(FINE, () -> "Successfully retrieved " + metrics.size() + " metrics packets from " + metricsUri);
+ snapshots.put(consumer, new Snapshot(Instant.now(clock), metrics));
}
private static List<MetricsPacket> processAndBuild(List<MetricsPacket.Builder> builders,
@@ -95,7 +105,7 @@ public class NodeMetricsClient {
}
long snapshotsRetrieved() {
- return snapshotsRetrieved;
+ return snapshotsRetrieved.get();
}
/**
@@ -110,9 +120,8 @@ public class NodeMetricsClient {
this.timestamp = timestamp;
this.metrics = metrics;
}
-
- boolean isStale(Clock clock) {
- return Instant.now(clock).isAfter(timestamp.plus(METRICS_TTL));
+ boolean isValid(Instant now, Duration ttl) {
+ return (metrics != null) && !metrics.isEmpty() && now.isBefore(timestamp.plus(ttl));
}
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/PublicDimensionsProcessor.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/PublicDimensionsProcessor.java
index 6bbc71bb2cb..50eb74e8693 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/PublicDimensionsProcessor.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/PublicDimensionsProcessor.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.metricsproxy.http.application;
import ai.vespa.metricsproxy.metric.dimensions.PublicDimensions;
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ServiceIdDimensionProcessor.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ServiceIdDimensionProcessor.java
index b4105ad32d4..444852a556d 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ServiceIdDimensionProcessor.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/ServiceIdDimensionProcessor.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.metricsproxy.http.application;
import ai.vespa.metricsproxy.metric.model.MetricsPacket;
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/yamas/YamasHandler.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/yamas/YamasHandler.java
index 2b22ea101d8..0e1c818a7c2 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/yamas/YamasHandler.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/yamas/YamasHandler.java
@@ -57,11 +57,11 @@ public class YamasHandler extends HttpHandlerBase {
return Optional.empty();
}
- private JsonResponse valuesResponse(String consumer) {
+ private HttpResponse valuesResponse(String consumer) {
try {
List<MetricsPacket> metrics = consumer == null ? valuesFetcher.fetchAllMetrics() : valuesFetcher.fetch(consumer);
metrics.addAll(nodeMetricGatherer.gatherMetrics()); // TODO: Currently only add these metrics in this handler. Eventually should be included in all handlers
- return new JsonResponse(OK, YamasJsonUtil.toYamasArray(metrics, true).serialize());
+ return new YamasResponse(OK, YamasJsonUtil.toYamasArray(metrics, true));
} catch (JsonRenderingException e) {
return new ErrorResponse(INTERNAL_SERVER_ERROR, e.getMessage());
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/yamas/YamasResponse.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/yamas/YamasResponse.java
new file mode 100644
index 00000000000..deeabb59cbe
--- /dev/null
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/yamas/YamasResponse.java
@@ -0,0 +1,34 @@
+package ai.vespa.metricsproxy.http.yamas;
+
+import ai.vespa.metricsproxy.metric.model.json.JacksonUtil;
+import ai.vespa.metricsproxy.metric.model.json.YamasArrayJsonModel;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.yahoo.container.jdisc.HttpResponse;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+/**
+ * @author olaa
+ */
+public class YamasResponse extends HttpResponse {
+
+ private final YamasArrayJsonModel data;
+
+ public YamasResponse(int code, YamasArrayJsonModel data) {
+ super(code);
+ this.data = data;
+ }
+
+ @Override
+ public String getContentType() {
+ return "application/json";
+ }
+
+ @Override
+ public void render(OutputStream outputStream) throws IOException {
+ ObjectMapper mapper = JacksonUtil.createObjectMapper();
+ mapper.writeValue(outputStream, data);
+ }
+
+}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/AggregationKey.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/AggregationKey.java
index ae79e891e3d..dbc502d24ba 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/AggregationKey.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/AggregationKey.java
@@ -14,8 +14,8 @@ import java.util.Set;
*/
public final class AggregationKey {
- private Map<DimensionId, String> dimensions;
- private Set<ConsumerId> consumers;
+ private final Map<DimensionId, String> dimensions;
+ private final Set<ConsumerId> consumers;
public AggregationKey(Map<DimensionId, String> dimensions, Set<ConsumerId> consumers) {
this.dimensions = dimensions;
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/ExternalMetrics.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/ExternalMetrics.java
index 6818a6b991f..f8d2184a454 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/ExternalMetrics.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/ExternalMetrics.java
@@ -1,8 +1,8 @@
// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.metricsproxy.metric;
+import ai.vespa.metricsproxy.core.ConfiguredMetric;
import ai.vespa.metricsproxy.core.MetricsConsumers;
-import ai.vespa.metricsproxy.core.ConsumersConfig.Consumer;
import ai.vespa.metricsproxy.metric.model.DimensionId;
import ai.vespa.metricsproxy.metric.model.MetricId;
import ai.vespa.metricsproxy.metric.model.MetricsPacket;
@@ -19,8 +19,6 @@ import java.util.Set;
import java.util.logging.Logger;
import static ai.vespa.metricsproxy.metric.model.DimensionId.toDimensionId;
-import static ai.vespa.metricsproxy.metric.model.MetricId.toMetricId;
-import static ai.vespa.metricsproxy.metric.model.ServiceId.toServiceId;
import static java.util.logging.Level.FINE;
import static java.util.stream.Collectors.toCollection;
@@ -34,7 +32,7 @@ public class ExternalMetrics {
private static final Logger log = Logger.getLogger(ExternalMetrics.class.getName());
// NOTE: node service id must be kept in sync with the same constant _value_ used in node-admin:Metrics.java
- public static final ServiceId VESPA_NODE_SERVICE_ID = toServiceId("vespa.node");
+ public static final ServiceId VESPA_NODE_SERVICE_ID = ServiceId.toServiceId("vespa.node");
public static final DimensionId ROLE_DIMENSION = toDimensionId("role");
public static final DimensionId STATE_DIMENSION = toDimensionId("state");
@@ -56,17 +54,15 @@ public class ExternalMetrics {
// Split each packet per metric, and re-aggregate based on the metrics each consumer wants.
// Then filter out all packages with no consumers.
log.log(FINE, () -> "Setting new external metrics with " + externalPackets.size() + " metrics packets.");
- externalPackets.forEach(packet -> {
- packet.addConsumers(consumers.getAllConsumers())
- .retainMetrics(metricsToRetain())
- .applyOutputNames(outputNamesById());
- });
+ externalPackets.forEach(packet -> packet.addConsumers(consumers.getAllConsumers())
+ .retainMetrics(metricsToRetain())
+ .applyOutputNames(outputNamesById()));
metrics = List.copyOf(externalPackets);
}
private Set<MetricId> metricsToRetain() {
return consumers.getConsumersByMetric().keySet().stream()
- .map(configuredMetric -> toMetricId(configuredMetric.name()))
+ .map(configuredMetric -> configuredMetric.id())
.collect(toCollection(LinkedHashSet::new));
}
@@ -74,11 +70,10 @@ public class ExternalMetrics {
* Returns a mapping from metric id to a list of the metric's output names.
* Metrics that only have their id as output name are included in the output.
*/
- private Map<MetricId, List<String>> outputNamesById() {
- Map<MetricId, List<String>> outputNamesById = new LinkedHashMap<>();
- for (Consumer.Metric metric : consumers.getConsumersByMetric().keySet()) {
- MetricId id = toMetricId(metric.name());
- outputNamesById.computeIfAbsent(id, unused -> new ArrayList<>())
+ private Map<MetricId, List<MetricId>> outputNamesById() {
+ Map<MetricId, List<MetricId>> outputNamesById = new LinkedHashMap<>();
+ for (ConfiguredMetric metric : consumers.getConsumersByMetric().keySet()) {
+ outputNamesById.computeIfAbsent(metric.id(), unused -> new ArrayList<>())
.add(metric.outputname());
}
return outputNamesById;
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/Metric.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/Metric.java
index 63e147bf6b4..8030e03b0ff 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/Metric.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/Metric.java
@@ -3,6 +3,7 @@ package ai.vespa.metricsproxy.metric;
import ai.vespa.metricsproxy.metric.model.ConsumerId;
import ai.vespa.metricsproxy.metric.model.DimensionId;
+import ai.vespa.metricsproxy.metric.model.MetricId;
import java.util.Collections;
import java.util.LinkedHashMap;
@@ -17,7 +18,7 @@ public class Metric {
private final long time;
private final Number value;
private final String description;
- private String name;
+ private MetricId name;
private Map<DimensionId, String> dimensions;
private Set<ConsumerId> consumers;
@@ -28,7 +29,7 @@ public class Metric {
* @param value The numeric value
* @param time The timestamp of this metric in seconds
*/
- public Metric(String name, Number value, long time, Map<DimensionId, String> dimensions, String description) {
+ public Metric(MetricId name, Number value, long time, Map<DimensionId, String> dimensions, String description) {
this.time = time;
this.value = value;
this.name = name;
@@ -36,11 +37,11 @@ public class Metric {
this.description = description;
}
- public Metric(String name, Number value, long timestamp) {
+ public Metric(MetricId name, Number value, long timestamp) {
this(name, value, timestamp, Collections.emptyMap(), "");
}
- public Metric(String name, Number value) {
+ public Metric(MetricId name, Number value) {
this(name, value, System.currentTimeMillis() / 1000);
}
@@ -72,14 +73,14 @@ public class Metric {
*
* @param name The name to use for this metric
*/
- public void setName(String name) {
+ public void setName(MetricId name) {
this.name = name;
}
/**
* @return The name of the metric
*/
- public String getName() {
+ public MetricId getName() {
return name;
}
@@ -94,7 +95,7 @@ public class Metric {
public String toString() {
return "Metric{" +
"time=" + time +
- ", name=" + name +
+ ", name=" + name.id +
", value='" + value + '\'' +
", dimensions=" + dimensions +
'}';
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/Metrics.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/Metrics.java
index b45e7743640..143b999cf1c 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/Metrics.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/Metrics.java
@@ -1,6 +1,8 @@
// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.metricsproxy.metric;
+import ai.vespa.metricsproxy.metric.model.MetricId;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -65,7 +67,7 @@ public class Metrics {
* @param key metric name
* @return the metric, or null
*/
- public Metric getMetric(String key) {
+ public Metric getMetric(MetricId key) {
isFrozen = true;
for (Metric m: metrics) {
if (m.getName().equals(key)) {
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/dimensions/PublicDimensions.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/dimensions/PublicDimensions.java
index 84c95f8e39e..ec59a102ab4 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/dimensions/PublicDimensions.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/dimensions/PublicDimensions.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.metricsproxy.metric.dimensions;
import java.util.List;
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ConsumerId.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ConsumerId.java
index 795d1005b10..555a49228ef 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ConsumerId.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ConsumerId.java
@@ -28,9 +28,7 @@ public class ConsumerId {
@Override
public String toString() {
- return "ConsumerId{" +
- "id='" + id + '\'' +
- '}';
+ return id;
}
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/Dimension.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/Dimension.java
new file mode 100644
index 00000000000..981f29f5f74
--- /dev/null
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/Dimension.java
@@ -0,0 +1,13 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package ai.vespa.metricsproxy.metric.model;
+
+public final class Dimension {
+ private final DimensionId key;
+ private final String value;
+ public Dimension(DimensionId key, String value) {
+ this.key = key;
+ this.value = value;
+ }
+ public DimensionId key() { return key; }
+ public String value() { return value; }
+}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/DimensionId.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/DimensionId.java
index c99e54f2607..621cc382947 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/DimensionId.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/DimensionId.java
@@ -1,17 +1,23 @@
// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.metricsproxy.metric.model;
+import com.yahoo.concurrent.CopyOnWriteHashMap;
+
+import java.util.Map;
import java.util.Objects;
/**
* @author gjoranv
*/
-public class DimensionId {
+public final class DimensionId {
+ private static final Map<String, DimensionId> dictionary = new CopyOnWriteHashMap<>();
public final String id;
private DimensionId(String id) { this.id = id; }
- public static DimensionId toDimensionId(String id) { return new DimensionId(id); }
+ public static DimensionId toDimensionId(String id) {
+ return dictionary.computeIfAbsent(id, key -> new DimensionId(key));
+ }
@Override
public boolean equals(Object o) {
@@ -28,8 +34,6 @@ public class DimensionId {
@Override
public String toString() {
- return "DimensionId{" +
- "id='" + id + '\'' +
- '}';
+ return id;
}
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricId.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricId.java
index 9be67607d4d..564628b9952 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricId.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricId.java
@@ -1,6 +1,9 @@
// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.metricsproxy.metric.model;
+import com.yahoo.concurrent.CopyOnWriteHashMap;
+
+import java.util.Map;
import java.util.Objects;
/**
@@ -8,10 +11,14 @@ import java.util.Objects;
*/
public class MetricId {
+ private static final Map<String, MetricId> dictionary = new CopyOnWriteHashMap<>();
+ public static final MetricId empty = toMetricId("");
public final String id;
private MetricId(String id) { this.id = id; }
- public static MetricId toMetricId(String id) { return new MetricId(id); }
+ public static MetricId toMetricId(String id) {
+ return dictionary.computeIfAbsent(id, key -> new MetricId(key));
+ }
@Override
public boolean equals(Object o) {
@@ -28,9 +35,7 @@ public class MetricId {
@Override
public String toString() {
- return "MetricId{" +
- "id='" + id + '\'' +
- '}';
+ return id;
}
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java
index 2d5cd9acb5d..dc289c6dac7 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java
@@ -6,6 +6,7 @@ import ai.vespa.metricsproxy.metric.Metric;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
@@ -14,7 +15,6 @@ import java.util.Objects;
import java.util.Set;
import java.util.function.Function;
-import static ai.vespa.metricsproxy.metric.model.MetricId.toMetricId;
import static java.util.Collections.unmodifiableList;
import static java.util.Collections.unmodifiableMap;
import static java.util.stream.Collectors.joining;
@@ -90,7 +90,7 @@ public class MetricsPacket {
private long timestamp = 0L;
private Map<MetricId, Number> metrics = new LinkedHashMap<>();
private final Map<DimensionId, String> dimensions = new LinkedHashMap<>();
- private final Set<ConsumerId> consumers = new LinkedHashSet<>();
+ private Set<ConsumerId> consumers = Collections.emptySet();
public Builder(ServiceId service) {
Objects.requireNonNull(service, "Service cannot be null.");
@@ -120,8 +120,7 @@ public class MetricsPacket {
public Builder putMetrics(Collection<Metric> extraMetrics) {
if (extraMetrics != null)
- extraMetrics.forEach(metric -> metrics.put(toMetricId(metric.getName()),
- metric.getValue().doubleValue()));
+ extraMetrics.forEach(metric -> metrics.put(metric.getName(), metric.getValue().doubleValue()));
return this;
}
@@ -135,11 +134,11 @@ public class MetricsPacket {
return this;
}
- public Builder applyOutputNames(Map<MetricId, List<String>> outputNamesById) {
+ public Builder applyOutputNames(Map<MetricId, List<MetricId>> outputNamesById) {
Map<MetricId, Number> newMetrics = new LinkedHashMap<>();
outputNamesById.forEach((id, outputNames) -> {
if (metrics.containsKey(id))
- outputNames.forEach(outputName -> newMetrics.put(toMetricId(outputName), metrics.get(id)));
+ outputNames.forEach(outputName -> newMetrics.put(outputName, metrics.get(id)));
});
metrics = newMetrics;
return this;
@@ -177,7 +176,20 @@ public class MetricsPacket {
}
public Builder addConsumers(Set<ConsumerId> extraConsumers) {
- if (extraConsumers != null) consumers.addAll(extraConsumers);
+ if ((extraConsumers != null) && !extraConsumers.isEmpty()) {
+ if (consumers.isEmpty()) {
+ if (extraConsumers.size() == 1) {
+ consumers = Collections.singleton(extraConsumers.iterator().next());
+ return this;
+ }
+ consumers = new LinkedHashSet<>(extraConsumers.size());
+ } else if (consumers.size() == 1) {
+ var copy = new LinkedHashSet<ConsumerId>(extraConsumers.size() + 1);
+ copy.addAll(consumers);
+ consumers = copy;
+ }
+ consumers.addAll(extraConsumers);
+ }
return this;
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ServiceId.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ServiceId.java
index 14f1a67bef3..bbc958fcda5 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ServiceId.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ServiceId.java
@@ -28,9 +28,7 @@ public class ServiceId {
@Override
public String toString() {
- return "ServiceId{" +
- "id='" + id + '\'' +
- '}';
+ return id;
}
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java
index e249338c318..c04b6ea66ad 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java
@@ -18,7 +18,6 @@ import java.util.stream.Collectors;
import static ai.vespa.metricsproxy.metric.ExternalMetrics.VESPA_NODE_SERVICE_ID;
import static ai.vespa.metricsproxy.metric.model.DimensionId.toDimensionId;
import static ai.vespa.metricsproxy.metric.model.MetricId.toMetricId;
-import static ai.vespa.metricsproxy.metric.model.ServiceId.toServiceId;
import static ai.vespa.metricsproxy.metric.model.json.JacksonUtil.createObjectMapper;
import static java.util.Collections.emptyList;
import static java.util.Collections.singletonList;
@@ -139,7 +138,7 @@ public class GenericJsonUtil {
}
private static MetricsPacket.Builder newServicePacket(GenericService service) {
- return new MetricsPacket.Builder(toServiceId(service.name))
+ return new MetricsPacket.Builder(ServiceId.toServiceId(service.name))
.statusCode(StatusCode.fromString(service.status.code).ordinal())
.statusMessage(service.status.description)
.timestamp(service.timestamp);
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModel.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModel.java
index 38038fda66a..f5b7f67038a 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModel.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModel.java
@@ -4,6 +4,7 @@ package ai.vespa.metricsproxy.metric.model.json;
import ai.vespa.metricsproxy.metric.Metric;
import ai.vespa.metricsproxy.metric.model.ConsumerId;
import ai.vespa.metricsproxy.metric.model.DimensionId;
+import ai.vespa.metricsproxy.metric.model.MetricId;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -55,7 +56,7 @@ public class YamasJsonModel {
// NOTE: do not rename to 'setMetrics', as jackson will try to use it.
public void resetMetrics(List<Metric> newMetrics) {
metrics = new LinkedHashMap<>();
- newMetrics.forEach(metric -> metrics.put(metric.getName(), metric.getValue().doubleValue()));
+ newMetrics.forEach(metric -> metrics.put(metric.getName().id, metric.getValue().doubleValue()));
}
/**
@@ -106,7 +107,7 @@ public class YamasJsonModel {
if (metrics == null) return emptyList();
return metrics.keySet().stream()
- .map(name -> new Metric(name, metrics.get(name)))
+ .map(name -> new Metric(MetricId.toMetricId(name), metrics.get(name)))
.collect(Collectors.toList());
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java
index 4413a9ebc2e..4dbe1a9a982 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java
@@ -3,6 +3,7 @@ package ai.vespa.metricsproxy.metric.model.json;
import ai.vespa.metricsproxy.metric.model.ConsumerId;
import ai.vespa.metricsproxy.metric.model.MetricsPacket;
+import ai.vespa.metricsproxy.metric.model.ServiceId;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -17,7 +18,6 @@ import java.util.logging.Logger;
import java.util.stream.Collectors;
import static ai.vespa.metricsproxy.http.ValuesFetcher.defaultMetricsConsumerId;
-import static ai.vespa.metricsproxy.metric.model.ServiceId.toServiceId;
import static com.yahoo.stream.CustomCollectors.toLinkedMap;
import static java.util.Collections.emptyList;
import static java.util.logging.Level.WARNING;
@@ -34,7 +34,7 @@ public class YamasJsonUtil {
if (jsonModel.application == null)
throw new IllegalArgumentException("Service id cannot be null");
- return new MetricsPacket.Builder(toServiceId(jsonModel.application))
+ return new MetricsPacket.Builder(ServiceId.toServiceId(jsonModel.application))
.statusCode(jsonModel.status_code)
.statusMessage(jsonModel.status_msg)
.timestamp(jsonModel.timestamp)
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/processing/MetricsProcessor.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/processing/MetricsProcessor.java
index 7c4320efa75..770b8524eea 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/processing/MetricsProcessor.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/processing/MetricsProcessor.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.metricsproxy.metric.model.processing;
import ai.vespa.metricsproxy.metric.model.MetricsPacket;
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/ServiceHealthGatherer.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/ServiceHealthGatherer.java
index a11acf07156..f9106b60ab2 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/ServiceHealthGatherer.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/ServiceHealthGatherer.java
@@ -1,10 +1,10 @@
// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.metricsproxy.node;
+import ai.vespa.metricsproxy.metric.HealthMetric;
import ai.vespa.metricsproxy.metric.model.ConsumerId;
import ai.vespa.metricsproxy.metric.model.DimensionId;
import ai.vespa.metricsproxy.metric.model.MetricsPacket;
-import ai.vespa.metricsproxy.metric.model.ServiceId;
import ai.vespa.metricsproxy.service.VespaServices;
import java.time.Instant;
@@ -20,15 +20,16 @@ public class ServiceHealthGatherer {
protected static List<MetricsPacket.Builder> gatherServiceHealthMetrics(VespaServices vespaServices) {
return vespaServices.getVespaServices()
.stream()
- .map(service ->
- new MetricsPacket.Builder(ServiceId.toServiceId(service.getMonitoringName()))
+ .map(service -> {
+ HealthMetric healt = service.getHealth();
+ return new MetricsPacket.Builder(service.getMonitoringName())
.timestamp(Instant.now().getEpochSecond())
- .statusMessage(service.getHealth().getStatus().status)
- .statusCode(service.getHealth().getStatus().code)
+ .statusMessage(healt.getStatus().status)
+ .statusCode(healt.getStatus().code)
.putDimension(DimensionId.toDimensionId("instance"), service.getInstanceName())
.putDimension(DimensionId.toDimensionId("metrictype"), "health")
- .addConsumers(Set.of(ConsumerId.toConsumerId("Vespa")))
- )
+ .addConsumers(Set.of(ConsumerId.toConsumerId("Vespa")));
+ })
.collect(Collectors.toList());
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/ConfigSentinelClient.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/ConfigSentinelClient.java
index d07a52f42bd..3d834106ebc 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/ConfigSentinelClient.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/ConfigSentinelClient.java
@@ -24,7 +24,9 @@ import java.util.logging.Logger;
public class ConfigSentinelClient extends AbstractComponent {
private final static Logger log = Logger.getLogger(ConfigSentinelClient.class.getName());
+ private static final Spec SPEC = new Spec("localhost", 19097);
private final Supervisor supervisor;
+ private Target connection = null;
@Inject
public ConfigSentinelClient() {
@@ -33,6 +35,12 @@ public class ConfigSentinelClient extends AbstractComponent {
@Override
public void deconstruct() {
+ synchronized (this) {
+ if (connection != null) {
+ connection.close();
+ connection = null;
+ }
+ }
supervisor.transport().shutdown().join();
super.deconstruct();
}
@@ -126,7 +134,7 @@ public class ConfigSentinelClient extends AbstractComponent {
}
for (int i = 1; i < parts.length; i++) {
- String keyValue[] = parts[i].split("=");
+ String [] keyValue = parts[i].split("=");
String key = keyValue[0];
String value = keyValue[1];
@@ -155,26 +163,24 @@ public class ConfigSentinelClient extends AbstractComponent {
String sentinelLs() {
String servicelist = "";
- int rpcPort = 19097;
- Spec spec = new Spec("localhost", rpcPort);
- Target connection = supervisor.connect(spec);
- try {
- if (connection.isValid()) {
- Request req = new Request("sentinel.ls");
- connection.invokeSync(req, 5.0);
- if (req.errorCode() == ErrorCode.NONE &&
- req.checkReturnTypes("s"))
- {
- servicelist = req.returnValues().get(0).asString();
- } else {
- log.log(Level.WARNING, "Bad answer to RPC request: " + req.errorMessage());
- }
+ synchronized (this) {
+ if (connection == null || ! connection.isValid()) {
+ connection = supervisor.connect(SPEC);
+ }
+ }
+ if (connection.isValid()) {
+ Request req = new Request("sentinel.ls");
+ connection.invokeSync(req, 5.0);
+ if (req.errorCode() == ErrorCode.NONE &&
+ req.checkReturnTypes("s"))
+ {
+ servicelist = req.returnValues().get(0).asString();
} else {
- log.log(Level.WARNING, "Could not connect to sentinel at: "+spec);
+ log.log(Level.WARNING, "Bad answer to RPC request: " + req.errorMessage());
}
- return servicelist;
- } finally {
- connection.close();
+ } else {
+ log.log(Level.WARNING, "Could not connect to sentinel at: " + SPEC);
}
+ return servicelist;
}
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/DummyMetricsFetcher.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/DummyMetricsFetcher.java
index b304e5d74d3..e9fbc942e6e 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/DummyMetricsFetcher.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/DummyMetricsFetcher.java
@@ -1,8 +1,6 @@
// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.metricsproxy.service;
-import ai.vespa.metricsproxy.metric.Metrics;
-
/**
* Dummy class used for getting health status for a vespa service that has no HTTP service
* for getting metrics
@@ -21,7 +19,6 @@ public class DummyMetricsFetcher extends RemoteMetricsFetcher {
/**
* Connect to remote service over http and fetch metrics
*/
- public Metrics getMetrics(int fetchCount) {
- return new Metrics();
+ public void getMetrics(MetricsParser.Consumer consumer, int fetchCount) {
}
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/HttpMetricFetcher.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/HttpMetricFetcher.java
index b4c116d1903..117503b95dc 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/HttpMetricFetcher.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/HttpMetricFetcher.java
@@ -32,7 +32,7 @@ import java.util.logging.Logger;
*/
public abstract class HttpMetricFetcher {
- private final static Logger log = Logger.getLogger(HttpMetricFetcher.class.getPackage().getName());
+ private final static Logger log = Logger.getLogger(HttpMetricFetcher.class.getName());
public final static String STATE_PATH = "/state/v1/";
// The call to apache will do 3 retries. As long as we check the services in series, we can't have this too high.
public static int CONNECTION_TIMEOUT = 5000;
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/MetricsParser.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/MetricsParser.java
index 20c2325e1f3..22812c07b78 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/MetricsParser.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/MetricsParser.java
@@ -2,8 +2,8 @@
package ai.vespa.metricsproxy.service;
import ai.vespa.metricsproxy.metric.Metric;
-import ai.vespa.metricsproxy.metric.Metrics;
import ai.vespa.metricsproxy.metric.model.DimensionId;
+import ai.vespa.metricsproxy.metric.model.MetricId;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.JsonNode;
@@ -24,61 +24,61 @@ import static ai.vespa.metricsproxy.metric.model.DimensionId.toDimensionId;
* @author Jo Kristian Bergum
*/
public class MetricsParser {
+ public interface Consumer {
+ void consume(Metric metric);
+ }
private static final ObjectMapper jsonMapper = new ObjectMapper();
- static Metrics parse(String data) throws IOException {
- return parse(jsonMapper.createParser(data));
- }
- static Metrics parse(byte [] data) throws IOException {
- return parse(jsonMapper.createParser(data));
+ static void parse(String data, Consumer consumer) throws IOException {
+ parse(jsonMapper.createParser(data), consumer);
}
- static Metrics parse(InputStream data) throws IOException {
- return parse(jsonMapper.createParser(data));
+
+ static void parse(InputStream data, Consumer consumer) throws IOException {
+ parse(jsonMapper.createParser(data), consumer);
}
- private static Metrics parse(JsonParser parser) throws IOException {
+ private static void parse(JsonParser parser, Consumer consumer) throws IOException {
if (parser.nextToken() != JsonToken.START_OBJECT) {
throw new IOException("Expected start of object, got " + parser.currentToken());
}
- Metrics metrics = new Metrics();
for (parser.nextToken(); parser.getCurrentToken() != JsonToken.END_OBJECT; parser.nextToken()) {
String fieldName = parser.getCurrentName();
JsonToken token = parser.nextToken();
if (fieldName.equals("metrics")) {
- metrics = parseMetrics(parser);
+ parseMetrics(parser, consumer);
} else {
if (token == JsonToken.START_OBJECT || token == JsonToken.START_ARRAY) {
parser.skipChildren();
}
}
}
- return metrics;
}
-
- static private Metrics parseSnapshot(JsonParser parser) throws IOException {
+ private static long secondsSince1970UTC() {
+ return System.currentTimeMillis() / 1000L;
+ }
+ static private long parseSnapshot(JsonParser parser) throws IOException {
if (parser.getCurrentToken() != JsonToken.START_OBJECT) {
throw new IOException("Expected start of 'snapshot' object, got " + parser.currentToken());
}
- Metrics metrics = new Metrics();
+ long timestamp = secondsSince1970UTC();
for (parser.nextToken(); parser.getCurrentToken() != JsonToken.END_OBJECT; parser.nextToken()) {
String fieldName = parser.getCurrentName();
JsonToken token = parser.nextToken();
if (fieldName.equals("to")) {
- long timestamp = parser.getLongValue();
+ timestamp = parser.getLongValue();
long now = System.currentTimeMillis() / 1000;
timestamp = Metric.adjustTime(timestamp, now);
- metrics = new Metrics(timestamp);
} else {
if (token == JsonToken.START_OBJECT || token == JsonToken.START_ARRAY) {
parser.skipChildren();
}
}
}
- return metrics;
+ return timestamp;
}
- static private void parseValues(JsonParser parser, Metrics metrics) throws IOException {
+ static private void parseValues(JsonParser parser, long timestamp, Consumer consumer) throws IOException {
if (parser.getCurrentToken() != JsonToken.START_ARRAY) {
throw new IOException("Expected start of 'metrics:values' array, got " + parser.currentToken());
}
@@ -88,34 +88,34 @@ public class MetricsParser {
// read everything from this START_OBJECT to the matching END_OBJECT
// and return it as a tree model ObjectNode
JsonNode value = jsonMapper.readTree(parser);
- handleValue(value, metrics.getTimeStamp(), metrics, uniqueDimensions);
+ handleValue(value, timestamp, consumer, uniqueDimensions);
// do whatever you need to do with this object
}
}
- static private Metrics parseMetrics(JsonParser parser) throws IOException {
+ static private void parseMetrics(JsonParser parser, Consumer consumer) throws IOException {
if (parser.getCurrentToken() != JsonToken.START_OBJECT) {
throw new IOException("Expected start of 'metrics' object, got " + parser.currentToken());
}
- Metrics metrics = new Metrics();
+ long timestamp = System.currentTimeMillis() / 1000L;
for (parser.nextToken(); parser.getCurrentToken() != JsonToken.END_OBJECT; parser.nextToken()) {
String fieldName = parser.getCurrentName();
JsonToken token = parser.nextToken();
if (fieldName.equals("snapshot")) {
- metrics = parseSnapshot(parser);
+ timestamp = parseSnapshot(parser);
} else if (fieldName.equals("values")) {
- parseValues(parser, metrics);
+ parseValues(parser, timestamp, consumer);
} else {
if (token == JsonToken.START_OBJECT || token == JsonToken.START_ARRAY) {
parser.skipChildren();
}
}
}
- return metrics;
}
- static private void handleValue(JsonNode metric, long timestamp, Metrics metrics, Map<String, Map<DimensionId, String>> uniqueDimensions) {
+ static private void handleValue(JsonNode metric, long timestamp, Consumer consumer,
+ Map<String, Map<DimensionId, String>> uniqueDimensions) {
String name = metric.get("name").textValue();
String description = "";
@@ -155,8 +155,8 @@ public class MetricsParser {
if (value == null) {
throw new IllegalArgumentException("Value for aggregator '" + aggregator + "' is not a number");
}
- StringBuilder metricName = (new StringBuilder()).append(name).append(".").append(aggregator);
- metrics.add(new Metric(metricName.toString(), value, timestamp, dim, description));
+ String metricName = new StringBuilder().append(name).append(".").append(aggregator).toString();
+ consumer.consume(new Metric(MetricId.toMetricId(metricName), value, timestamp, dim, description));
}
}
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteHealthMetricFetcher.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteHealthMetricFetcher.java
index 09087c32914..03e72ec36de 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteHealthMetricFetcher.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteHealthMetricFetcher.java
@@ -5,7 +5,6 @@ import ai.vespa.metricsproxy.metric.HealthMetric;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
-import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.concurrent.ExecutionException;
import java.util.logging.Level;
@@ -32,23 +31,23 @@ public class RemoteHealthMetricFetcher extends HttpMetricFetcher {
* Connect to remote service over http and fetch metrics
*/
public HealthMetric getHealth(int fetchCount) {
- try {
- return createHealthMetrics(getJson(), fetchCount);
+ try (InputStream stream = getJson()) {
+ return createHealthMetrics(stream, fetchCount);
} catch (IOException | InterruptedException | ExecutionException e) {
logMessageNoResponse(errMsgNoResponse(e), fetchCount);
- byte [] empty = {'{','}'};
- return createHealthMetrics(new ByteArrayInputStream(empty), fetchCount);
+ return HealthMetric.getUnknown("Failed fetching metrics for service: " + service.getMonitoringName());
}
}
/**
* Connect to remote service over http and fetch metrics
*/
- private HealthMetric createHealthMetrics(InputStream data, int fetchCount) {
+ private HealthMetric createHealthMetrics(InputStream data, int fetchCount) throws IOException {
try {
return parse(data);
} catch (Exception e) {
handleException(e, data, fetchCount);
+ while (data.read() != -1) {}
return HealthMetric.getDown("Failed fetching status page for service");
}
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteMetricsFetcher.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteMetricsFetcher.java
index f2cb5c4e8b3..aad2f816959 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteMetricsFetcher.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteMetricsFetcher.java
@@ -1,8 +1,6 @@
// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.metricsproxy.service;
-import ai.vespa.metricsproxy.metric.Metrics;
-
import java.io.IOException;
import java.io.InputStream;
import java.util.concurrent.ExecutionException;
@@ -23,32 +21,26 @@ public class RemoteMetricsFetcher extends HttpMetricFetcher {
/**
* Connect to remote service over http and fetch metrics
*/
- public Metrics getMetrics(int fetchCount) {
- try {
- return createMetrics(getJson(), fetchCount);
+ public void getMetrics(MetricsParser.Consumer consumer, int fetchCount) {
+ try (InputStream stream = getJson()) {
+ createMetrics(stream, consumer, fetchCount);
} catch (IOException | InterruptedException | ExecutionException e) {
- return new Metrics();
}
}
- Metrics createMetrics(String data, int fetchCount) {
- Metrics remoteMetrics = new Metrics();
+ void createMetrics(String data, MetricsParser.Consumer consumer, int fetchCount) {
try {
- remoteMetrics = MetricsParser.parse(data);
+ MetricsParser.parse(data, consumer);
} catch (Exception e) {
handleException(e, data, fetchCount);
}
-
- return remoteMetrics;
}
- Metrics createMetrics(InputStream data, int fetchCount) {
- Metrics remoteMetrics = new Metrics();
+ private void createMetrics(InputStream data, MetricsParser.Consumer consumer, int fetchCount) throws IOException {
try {
- remoteMetrics = MetricsParser.parse(data);
+ MetricsParser.parse(data, consumer);
} catch (Exception e) {
handleException(e, data, fetchCount);
+ while (data.read() != -1) {}
}
-
- return remoteMetrics;
}
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/SystemPoller.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/SystemPoller.java
index 5d119fc30e6..fbccd3dc066 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/SystemPoller.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/SystemPoller.java
@@ -3,6 +3,8 @@ package ai.vespa.metricsproxy.service;
import ai.vespa.metricsproxy.metric.Metric;
import ai.vespa.metricsproxy.metric.Metrics;
+import ai.vespa.metricsproxy.metric.model.MetricId;
+
import java.util.logging.Level;
import java.io.BufferedReader;
@@ -115,8 +117,8 @@ public class SystemPoller {
long[] size = getMemoryUsage(s);
log.log(Level.FINE, () -> "Updating memory metric for service " + s);
- metrics.add(new Metric("memory_virt", size[memoryTypeVirtual], startTime / 1000));
- metrics.add(new Metric("memory_rss", size[memoryTypeResident], startTime / 1000));
+ metrics.add(new Metric(MetricId.toMetricId("memory_virt"), size[memoryTypeVirtual], startTime / 1000));
+ metrics.add(new Metric(MetricId.toMetricId("memory_rss"), size[memoryTypeResident], startTime / 1000));
long procJiffies = getPidJiffies(s);
if (lastTotalCpuJiffies >= 0 && lastCpuJiffiesMetrics.containsKey(s)) {
@@ -124,7 +126,7 @@ public class SystemPoller {
long diff = procJiffies - last;
if (diff >= 0) {
- metrics.add(new Metric("cpu", 100 * ((double) diff) / (sysJiffies - lastTotalCpuJiffies), startTime / 1000));
+ metrics.add(new Metric(MetricId.toMetricId("cpu"), 100 * ((double) diff) / (sysJiffies - lastTotalCpuJiffies), startTime / 1000));
}
}
lastCpuJiffiesMetrics.put(s, procJiffies);
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/VespaService.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/VespaService.java
index b069256f527..c6e0b202985 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/VespaService.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/VespaService.java
@@ -2,8 +2,10 @@
package ai.vespa.metricsproxy.service;
import ai.vespa.metricsproxy.metric.HealthMetric;
+import ai.vespa.metricsproxy.metric.Metric;
import ai.vespa.metricsproxy.metric.Metrics;
import ai.vespa.metricsproxy.metric.model.DimensionId;
+import ai.vespa.metricsproxy.metric.model.ServiceId;
import java.util.Collections;
import java.util.Map;
@@ -24,7 +26,7 @@ public class VespaService implements Comparable<VespaService> {
private final String instanceName;
private final String configId;
private final String serviceName;
- private final String monitoringPrefix;
+ private final ServiceId serviceId;
private final Map<DimensionId, String> dimensions;
private volatile int pid = -1;
@@ -67,7 +69,7 @@ public class VespaService implements Comparable<VespaService> {
Map<DimensionId, String> dimensions) {
this.serviceName = serviceName;
this.instanceName = instanceName;
- this.monitoringPrefix = monitoringPrefix;
+ serviceId = ServiceId.toServiceId(monitoringPrefix + SEPARATOR + serviceName);
this.configId = configId;
this.statePort = statePort;
this.dimensions = dimensions;
@@ -81,8 +83,8 @@ public class VespaService implements Comparable<VespaService> {
* The name used for this service in the monitoring system:
* monitoring-system-name.serviceName
*/
- public String getMonitoringName() {
- return monitoringPrefix + SEPARATOR + serviceName;
+ public ServiceId getMonitoringName() {
+ return serviceId;
}
@Override
@@ -133,13 +135,23 @@ public class VespaService implements Comparable<VespaService> {
/**
* Get the Metrics registered for this service. Metrics are fetched over HTTP
* if a metric http port has been defined, otherwise from log file
- *
- * @return the non-system metrics
*/
- public Metrics getMetrics() {
- Metrics remoteMetrics = remoteMetricsFetcher.getMetrics(metricsFetchCount.get());
+ public void consumeMetrics(MetricsParser.Consumer consumer) {
+ remoteMetricsFetcher.getMetrics(consumer, metricsFetchCount.get());
metricsFetchCount.getAndIncrement();
- return remoteMetrics;
+ }
+
+ private static class CollectMetrics implements MetricsParser.Consumer {
+ private final Metrics metrics = new Metrics();
+ @Override
+ public void consume(Metric metric) {
+ metrics.add(metric);
+ }
+ }
+ public final Metrics getMetrics() {
+ CollectMetrics collector = new CollectMetrics();
+ consumeMetrics(collector);
+ return collector.metrics;
}
/**
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/VespaServices.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/VespaServices.java
index b0ea7e709a1..8d846d17553 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/VespaServices.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/VespaServices.java
@@ -105,7 +105,7 @@ public class VespaServices {
List<VespaService> myServices = new ArrayList<>();
for (VespaService s : services) {
log.log(FINE, () -> "getMonitoringServices. service=" + service + ", checking against " + s + ", which has monitoring name " + s.getMonitoringName());
- if (s.getMonitoringName().equalsIgnoreCase(service)) {
+ if (s.getMonitoringName().id.equalsIgnoreCase(service)) {
myServices.add(s);
}
}
diff --git a/metrics-proxy/src/main/sh/start-telegraf.sh b/metrics-proxy/src/main/sh/start-telegraf.sh
index c6e5f2d7f18..ca6549de5f8 100644
--- a/metrics-proxy/src/main/sh/start-telegraf.sh
+++ b/metrics-proxy/src/main/sh/start-telegraf.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/metrics-proxy/src/main/sh/stop-telegraf.sh b/metrics-proxy/src/main/sh/stop-telegraf.sh
index c4f96fbec33..3fb8ed2fe5b 100644
--- a/metrics-proxy/src/main/sh/stop-telegraf.sh
+++ b/metrics-proxy/src/main/sh/stop-telegraf.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/core/MetricsManagerTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/core/MetricsManagerTest.java
index fd1961fc168..36a6aa01620 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/core/MetricsManagerTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/core/MetricsManagerTest.java
@@ -11,6 +11,7 @@ import ai.vespa.metricsproxy.metric.dimensions.ApplicationDimensionsConfig;
import ai.vespa.metricsproxy.metric.dimensions.NodeDimensions;
import ai.vespa.metricsproxy.metric.dimensions.NodeDimensionsConfig;
import ai.vespa.metricsproxy.metric.model.DimensionId;
+import ai.vespa.metricsproxy.metric.model.MetricId;
import ai.vespa.metricsproxy.metric.model.MetricsPacket;
import ai.vespa.metricsproxy.metric.model.ServiceId;
import ai.vespa.metricsproxy.service.DownService;
@@ -54,7 +55,7 @@ public class MetricsManagerTest {
new DummyService(0, SERVICE_0_ID),
new DummyService(1, SERVICE_1_ID));
- private static final String WHITELISTED_METRIC_ID = "whitelisted";
+ private static final MetricId WHITELISTED_METRIC_ID = toMetricId("whitelisted");
@Before
public void setupMetricsManager() {
@@ -127,7 +128,7 @@ public class MetricsManagerTest {
VespaService service0 = testServices.get(0);
Metrics oldSystemMetrics = service0.getSystemMetrics();
- service0.getSystemMetrics().add(new Metric("cpu", 1));
+ service0.getSystemMetrics().add(new Metric(toMetricId("cpu"), 1));
List<MetricsPacket> packets = metricsManager.getMetrics(testServices, Instant.EPOCH);
assertEquals(3, packets.size());
@@ -154,7 +155,7 @@ public class MetricsManagerTest {
public void extra_metrics_packets_without_whitelisted_metrics_are_not_added() {
metricsManager.setExtraMetrics(ImmutableList.of(
new MetricsPacket.Builder(toServiceId("foo"))
- .putMetrics(ImmutableList.of(new Metric("not-whitelisted", 0)))));
+ .putMetrics(ImmutableList.of(new Metric(toMetricId("not-whitelisted"), 0)))));
List<MetricsPacket> packets = metricsManager.getMetrics(testServices, Instant.EPOCH);
assertThat(packets.size(), is(2));
@@ -243,8 +244,8 @@ public class MetricsManagerTest {
.consumer(new Consumer.Builder()
.name(vespaMetricsConsumerId.id)
.metric(new Consumer.Metric.Builder()
- .name(WHITELISTED_METRIC_ID)
- .outputname(WHITELISTED_METRIC_ID))
+ .name(WHITELISTED_METRIC_ID.id)
+ .outputname(WHITELISTED_METRIC_ID.id))
.metric(new Consumer.Metric.Builder()
.name(DummyService.METRIC_1)
.outputname(DummyService.METRIC_1)
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/HttpHandlerTestBase.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/HttpHandlerTestBase.java
index ab586334baa..4bfb80e0f07 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/HttpHandlerTestBase.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/HttpHandlerTestBase.java
@@ -11,6 +11,7 @@ import ai.vespa.metricsproxy.metric.dimensions.ApplicationDimensions;
import ai.vespa.metricsproxy.metric.dimensions.ApplicationDimensionsConfig;
import ai.vespa.metricsproxy.metric.dimensions.NodeDimensions;
import ai.vespa.metricsproxy.metric.dimensions.NodeDimensionsConfig;
+import ai.vespa.metricsproxy.metric.model.MetricId;
import ai.vespa.metricsproxy.metric.model.MetricsPacket;
import ai.vespa.metricsproxy.service.DownService;
import ai.vespa.metricsproxy.service.DummyService;
@@ -57,7 +58,7 @@ public class HttpHandlerTestBase {
metricsManager.setExtraMetrics(ImmutableList.of(
new MetricsPacket.Builder(VESPA_NODE_SERVICE_ID)
.timestamp(Instant.now().getEpochSecond())
- .putMetrics(ImmutableList.of(new Metric(CPU_METRIC, 12.345)))));
+ .putMetrics(ImmutableList.of(new Metric(MetricId.toMetricId(CPU_METRIC), 12.345)))));
return metricsManager;
}
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandlerTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandlerTest.java
index cf1eac3c691..d568e83c9ad 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandlerTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsHandlerTest.java
@@ -4,6 +4,7 @@ package ai.vespa.metricsproxy.http.application;
import ai.vespa.metricsproxy.core.ConsumersConfig;
import ai.vespa.metricsproxy.core.MetricsConsumers;
import ai.vespa.metricsproxy.metric.dimensions.PublicDimensions;
+import ai.vespa.metricsproxy.metric.model.ConsumerId;
import ai.vespa.metricsproxy.metric.model.json.GenericApplicationModel;
import ai.vespa.metricsproxy.metric.model.json.GenericJsonModel;
import ai.vespa.metricsproxy.metric.model.json.GenericMetrics;
@@ -84,6 +85,9 @@ public class ApplicationMetricsHandlerTest {
ApplicationMetricsHandler handler = new ApplicationMetricsHandler(Executors.newSingleThreadExecutor(),
applicationMetricsRetriever,
getMetricsConsumers());
+ applicationMetricsRetriever.getMetrics(defaultMetricsConsumerId);
+ applicationMetricsRetriever.getMetrics(ConsumerId.toConsumerId(CUSTOM_CONSUMER));
+ applicationMetricsRetriever.startPollAndWait();
testDriver = new RequestHandlerTestDriver(handler);
}
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsRetrieverTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsRetrieverTest.java
index a74989f7af6..c98b962f671 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsRetrieverTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ApplicationMetricsRetrieverTest.java
@@ -1,4 +1,4 @@
-// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.metricsproxy.http.application;
import com.github.tomakehurst.wiremock.junit.WireMockRule;
@@ -8,10 +8,8 @@ import org.junit.Test;
import java.time.Duration;
import java.util.Arrays;
-import java.util.concurrent.TimeoutException;
import static ai.vespa.metricsproxy.TestUtil.getFileContents;
-import static ai.vespa.metricsproxy.http.application.ApplicationMetricsRetriever.MAX_THREADS;
import static ai.vespa.metricsproxy.http.application.ApplicationMetricsRetriever.MAX_TIMEOUT;
import static ai.vespa.metricsproxy.http.application.ApplicationMetricsRetriever.MIN_TIMEOUT;
import static ai.vespa.metricsproxy.http.application.ApplicationMetricsRetriever.timeout;
@@ -22,7 +20,6 @@ import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options
import static java.util.stream.Collectors.toList;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
/**
* @author gjoranv
@@ -56,6 +53,8 @@ public class ApplicationMetricsRetrieverTest {
.willReturn(aResponse().withBody(RESPONSE)));
ApplicationMetricsRetriever retriever = new ApplicationMetricsRetriever(config);
+ retriever.getMetrics();
+ retriever.startPollAndWait();
var metricsByNode = retriever.getMetrics();
assertEquals(1, metricsByNode.size());
assertEquals(4, metricsByNode.get(node).size());
@@ -73,6 +72,8 @@ public class ApplicationMetricsRetrieverTest {
.willReturn(aResponse().withBody(RESPONSE)));
ApplicationMetricsRetriever retriever = new ApplicationMetricsRetriever(config);
+ retriever.getMetrics();
+ retriever.startPollAndWait();
var metricsByNode = retriever.getMetrics();
assertEquals(2, metricsByNode.size());
assertEquals(4, metricsByNode.get(node0).size());
@@ -101,6 +102,8 @@ public class ApplicationMetricsRetrieverTest {
.willReturn(aResponse().withBody(RESPONSE)));
ApplicationMetricsRetriever retriever = new ApplicationMetricsRetriever(config);
+ retriever.getMetrics();
+ retriever.startPollAndWait();
var metricsByNode = retriever.getMetrics();
assertEquals(2, metricsByNode.size());
assertEquals(0, metricsByNode.get(node0).size());
@@ -110,7 +113,7 @@ public class ApplicationMetricsRetrieverTest {
@Test
public void an_exception_is_thrown_when_retrieving_times_out() {
var config = nodesConfig("/node0");
-
+ Node node = new Node(config.node(0));
wireMockRule.stubFor(get(urlPathEqualTo(config.node(0).metricsPath()))
.willReturn(aResponse()
.withBody(RESPONSE)
@@ -118,13 +121,9 @@ public class ApplicationMetricsRetrieverTest {
ApplicationMetricsRetriever retriever = new ApplicationMetricsRetriever(config);
retriever.setTaskTimeout(Duration.ofMillis(1));
+ retriever.startPollAndWait();
+ assertTrue(retriever.getMetrics().get(node).isEmpty());
- try {
- retriever.getMetrics();
- fail("Did not get expected exception");
- } catch (ApplicationMetricsException expected) {
- assertTrue(expected.getCause() instanceof TimeoutException);
- }
}
@Test
@@ -138,13 +137,10 @@ public class ApplicationMetricsRetrieverTest {
.withFixedDelay(10)));
ApplicationMetricsRetriever retriever = new ApplicationMetricsRetriever(config);
+ retriever.getMetrics();
retriever.setTaskTimeout(Duration.ofMillis(1));
- try {
- retriever.getMetrics();
- fail("Did not get expected exception");
- } catch (ApplicationMetricsException expected) {
- }
-
+ retriever.startPollAndWait();
+ assertTrue(retriever.getMetrics().get(node).isEmpty());
// Verify successful retrieving
wireMockRule.removeStubMapping(delayedStub);
verifyRetrievingMetricsFromSingleNode(config, node);
@@ -152,13 +148,13 @@ public class ApplicationMetricsRetrieverTest {
@Test
public void test_timeout_calculation() {
- assertEquals(MIN_TIMEOUT, timeout(1, 1));
- assertEquals(MIN_TIMEOUT, timeout(MAX_THREADS, MAX_THREADS));
+ assertEquals(MIN_TIMEOUT, timeout(1));
+ assertEquals(MIN_TIMEOUT, timeout(20));
// These values must be updated if the calculation in the timeout method itself is changed.
- assertEquals(Duration.ofSeconds(100), timeout(100, MAX_THREADS));
- assertEquals(Duration.ofSeconds(200), timeout(200, MAX_THREADS));
- assertEquals(MAX_TIMEOUT, timeout(240, MAX_THREADS));
+ assertEquals(Duration.ofSeconds(100), timeout(100));
+ assertEquals(Duration.ofSeconds(200), timeout(200));
+ assertEquals(MAX_TIMEOUT, timeout(240));
}
private MetricsNodesConfig nodesConfig(String... paths) {
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ClusterIdDimensionProcessorTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ClusterIdDimensionProcessorTest.java
index 1a4168b74b1..e091f2e1eea 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ClusterIdDimensionProcessorTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ClusterIdDimensionProcessorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.metricsproxy.http.application;
import ai.vespa.metricsproxy.metric.model.DimensionId;
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/NodeMetricsClientTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/NodeMetricsClientTest.java
index ab84a4edcde..4bf62a62445 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/NodeMetricsClientTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/NodeMetricsClientTest.java
@@ -2,19 +2,21 @@
package ai.vespa.metricsproxy.http.application;
import ai.vespa.metricsproxy.http.metrics.MetricsV1Handler;
+import ai.vespa.metricsproxy.metric.model.ConsumerId;
import ai.vespa.metricsproxy.metric.model.MetricsPacket;
import com.github.tomakehurst.wiremock.junit.WireMockClassRule;
import com.yahoo.test.ManualClock;
-import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
-import org.apache.hc.client5.http.impl.classic.HttpClients;
+import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Test;
import java.net.URI;
+import java.time.Duration;
import java.util.List;
+import java.util.concurrent.ExecutionException;
import static ai.vespa.metricsproxy.TestUtil.getFileContents;
import static ai.vespa.metricsproxy.http.ValuesFetcher.defaultMetricsConsumerId;
@@ -40,15 +42,16 @@ public class NodeMetricsClientTest {
private static final String TEST_FILE = "generic-sample.json";
private static final String RESPONSE = getFileContents(TEST_FILE);
- private static final CloseableHttpClient httpClient = HttpClients.createDefault();
+ private static final CloseableHttpAsyncClient httpClient = ApplicationMetricsRetriever.createHttpClient();
private static final String CPU_METRIC = "cpu.util";
private static final String REPLACED_CPU_METRIC = "replaced_cpu_util";
private static final String CUSTOM_CONSUMER = "custom-consumer";
+ private static final Duration TTL = Duration.ofSeconds(30);
+
private static Node node;
- private ManualClock clock;
private NodeMetricsClient nodeMetricsClient;
@ClassRule
@@ -75,8 +78,8 @@ public class NodeMetricsClientTest {
@Before
public void setupClient() {
- clock = new ManualClock();
- nodeMetricsClient = new NodeMetricsClient(httpClient, node, clock);
+ httpClient.start();
+ nodeMetricsClient = new NodeMetricsClient(httpClient, node, new ManualClock());
}
@Test
@@ -85,38 +88,44 @@ public class NodeMetricsClientTest {
}
@Test
- public void metrics_are_retrieved_upon_first_request() {
+ public void metrics_are_retrieved_upon_first_update() throws InterruptedException, ExecutionException {
+ assertEquals(0, nodeMetricsClient.getMetrics(defaultMetricsConsumerId).size());
+ assertEquals(0, nodeMetricsClient.snapshotsRetrieved());
+ updateSnapshot(defaultMetricsConsumerId, TTL);
+ assertEquals(1, nodeMetricsClient.snapshotsRetrieved());
List<MetricsPacket> metrics = nodeMetricsClient.getMetrics(defaultMetricsConsumerId);
assertEquals(1, nodeMetricsClient.snapshotsRetrieved());
assertEquals(4, metrics.size());
}
@Test
- public void cached_metrics_are_used_when_ttl_has_not_expired() {
- nodeMetricsClient.getMetrics(defaultMetricsConsumerId);
- assertEquals(1, nodeMetricsClient.snapshotsRetrieved());
-
- clock.advance(NodeMetricsClient.METRICS_TTL.minusMillis(1));
- nodeMetricsClient.getMetrics(defaultMetricsConsumerId);
+ public void metrics_are_refreshed_on_every_update() {
+ assertEquals(0, nodeMetricsClient.snapshotsRetrieved());
+ updateSnapshot(defaultMetricsConsumerId, TTL);
assertEquals(1, nodeMetricsClient.snapshotsRetrieved());
+ updateSnapshot(defaultMetricsConsumerId, Duration.ZERO);
+ assertEquals(2, nodeMetricsClient.snapshotsRetrieved());
}
@Test
- public void metrics_are_refreshed_when_ttl_has_expired() {
- nodeMetricsClient.getMetrics(defaultMetricsConsumerId);
+ public void metrics_are_not_refreshed_if_ttl_not_expired() {
+ assertEquals(0, nodeMetricsClient.snapshotsRetrieved());
+ updateSnapshot(defaultMetricsConsumerId, TTL);
assertEquals(1, nodeMetricsClient.snapshotsRetrieved());
-
- clock.advance(NodeMetricsClient.METRICS_TTL.plusMillis(1));
- nodeMetricsClient.getMetrics(defaultMetricsConsumerId);
+ updateSnapshot(defaultMetricsConsumerId, TTL);
+ assertEquals(1, nodeMetricsClient.snapshotsRetrieved());
+ updateSnapshot(defaultMetricsConsumerId, Duration.ZERO);
assertEquals(2, nodeMetricsClient.snapshotsRetrieved());
}
@Test
public void metrics_for_different_consumers_are_cached_separately() {
+ updateSnapshot(defaultMetricsConsumerId, TTL);
List<MetricsPacket> defaultMetrics = nodeMetricsClient.getMetrics(defaultMetricsConsumerId);
assertEquals(1, nodeMetricsClient.snapshotsRetrieved());
assertEquals(4, defaultMetrics.size());
+ updateSnapshot(toConsumerId(CUSTOM_CONSUMER), TTL);
List<MetricsPacket> customMetrics = nodeMetricsClient.getMetrics(toConsumerId(CUSTOM_CONSUMER));
assertEquals(2, nodeMetricsClient.snapshotsRetrieved());
assertEquals(4, customMetrics.size());
@@ -124,4 +133,13 @@ public class NodeMetricsClientTest {
MetricsPacket replacedCpuMetric = customMetrics.get(0);
assertTrue(replacedCpuMetric.metrics().containsKey(toMetricId(REPLACED_CPU_METRIC)));
}
+ private void updateSnapshot(ConsumerId consumerId, Duration ttl) {
+
+ var optional = nodeMetricsClient.startSnapshotUpdate(consumerId, ttl);
+ optional.ifPresent(future -> {
+ try {
+ assertTrue(future.get());
+ } catch (InterruptedException | ExecutionException e) {}
+ });
+ }
}
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/PublicDimensionsProcessorTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/PublicDimensionsProcessorTest.java
index c29fa3a872a..68368d28fdf 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/PublicDimensionsProcessorTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/PublicDimensionsProcessorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.metricsproxy.http.application;
import ai.vespa.metricsproxy.metric.model.MetricsPacket;
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ServiceIdDimensionProcessorTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ServiceIdDimensionProcessorTest.java
index 43eacd766dc..0b441f2a5be 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ServiceIdDimensionProcessorTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/application/ServiceIdDimensionProcessorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.metricsproxy.http.application;
import ai.vespa.metricsproxy.metric.model.DimensionId;
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/MetricsTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/MetricsTest.java
index 84f40592f46..57446395afe 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/MetricsTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/MetricsTest.java
@@ -8,6 +8,7 @@ import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
+import static ai.vespa.metricsproxy.metric.model.MetricId.toMetricId;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
@@ -21,16 +22,16 @@ public class MetricsTest {
public void testIterator() {
Metrics m = new Metrics();
long now = System.currentTimeMillis() / 1000;
- m.add(new Metric("a", 1, now));
- m.add(new Metric("b", 2.5, now));
+ m.add(new Metric(toMetricId("a"), 1, now));
+ m.add(new Metric(toMetricId("b"), 2.5, now));
//should expire after 0 seconds
- m.add(new Metric("c", 2, now));
+ m.add(new Metric(toMetricId("c"), 2, now));
Map<String, Number> map = new HashMap<>();
for (Metric metric: m.getMetrics()) {
- String k = metric.getName();
+ String k = metric.getName().id;
assertThat(map.containsKey(k), is(false));
map.put(k, metric.getValue());
@@ -43,9 +44,9 @@ public class MetricsTest {
@Test
public void testBasicMetric() {
Metrics m = new Metrics();
- m.add(new Metric("count", 1, System.currentTimeMillis() / 1000));
+ m.add(new Metric(toMetricId("count"), 1, System.currentTimeMillis() / 1000));
assertThat(m.getMetrics().size(), is(1));
- assertThat(m.getMetrics().get(0).getName(), is("count"));
+ assertThat(m.getMetrics().get(0).getName(), is(toMetricId("count")));
}
@Test
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/MetricsPacketTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/MetricsPacketTest.java
index 78c80689299..7c16fe9f8f6 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/MetricsPacketTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/MetricsPacketTest.java
@@ -7,7 +7,6 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import org.junit.Test;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -66,8 +65,8 @@ public class MetricsPacketTest {
public void builder_can_retain_subset_of_metrics() {
MetricsPacket packet = new MetricsPacket.Builder(toServiceId("foo"))
.putMetrics(ImmutableList.of(
- new Metric("remove", 1),
- new Metric("keep", 2)))
+ new Metric(toMetricId("remove"), 1),
+ new Metric(toMetricId("keep"), 2)))
.retainMetrics(ImmutableSet.of(toMetricId("keep"), toMetricId("non-existent")))
.build();
@@ -87,17 +86,17 @@ public class MetricsPacketTest {
MetricId THREE_ID = toMetricId(THREE);
MetricId NON_EXISTENT_ID = toMetricId(NON_EXISTENT);
- Map<MetricId, List<String>> outputNamesById = ImmutableMap.of(
- toMetricId(ONE), ImmutableList.of(ONE),
- toMetricId(TWO), ImmutableList.of(TWO, "dos"),
- toMetricId(THREE), ImmutableList.of("3"),
- toMetricId(NON_EXISTENT), ImmutableList.of(NON_EXISTENT));
+ Map<MetricId, List<MetricId>> outputNamesById = ImmutableMap.of(
+ ONE_ID, ImmutableList.of(ONE_ID),
+ TWO_ID, ImmutableList.of(TWO_ID, toMetricId("dos")),
+ THREE_ID, ImmutableList.of(toMetricId("3")),
+ NON_EXISTENT_ID, ImmutableList.of(NON_EXISTENT_ID));
MetricsPacket packet = new MetricsPacket.Builder(toServiceId("foo"))
.putMetrics(ImmutableList.of(
- new Metric(ONE, 1),
- new Metric(TWO, 2),
- new Metric(THREE, 3)))
+ new Metric(ONE_ID, 1),
+ new Metric(TWO_ID, 2),
+ new Metric(THREE_ID, 3)))
.applyOutputNames(outputNamesById)
.build();
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcHealthMetricsTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcHealthMetricsTest.java
index ac5fae9a727..ba46c2d1066 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcHealthMetricsTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcHealthMetricsTest.java
@@ -53,7 +53,7 @@ public class RpcHealthMetricsTest {
assertThat("Status should be failed" + h.getMessage(), h.isOk(), is(false));
assertThat(h.getMessage(), is("SOMETHING FAILED"));
- String jsonRPCMessage = getHealthMetrics(tester, qrserver.getMonitoringName());
+ String jsonRPCMessage = getHealthMetrics(tester, qrserver.getMonitoringName().id);
assertThat(jsonRPCMessage, is(WANTED_RPC_RESPONSE));
}
}
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java
index 70970bfe8da..f13e63edc81 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java
@@ -19,6 +19,7 @@ import org.junit.Test;
import java.io.IOException;
import java.util.List;
+import static ai.vespa.metricsproxy.metric.model.MetricId.toMetricId;
import static ai.vespa.metricsproxy.TestUtil.getFileContents;
import static ai.vespa.metricsproxy.core.VespaMetrics.vespaMetricsConsumerId;
import static ai.vespa.metricsproxy.metric.model.DimensionId.toDimensionId;
@@ -103,13 +104,13 @@ public class RpcMetricsTest {
assertThat("#Services should be 1 for config id " + SERVICE_1_CONFIG_ID, services.size(), is(1));
VespaService qrserver = services.get(0);
- assertThat(qrserver.getMonitoringName(), is(MONITORING_SYSTEM + VespaService.SEPARATOR + "qrserver"));
+ assertThat(qrserver.getMonitoringName().id, is(MONITORING_SYSTEM + VespaService.SEPARATOR + "qrserver"));
Metrics metrics = qrserver.getMetrics();
assertThat("Fetched number of metrics is not correct", metrics.size(), is(2));
- Metric m = metrics.getMetric("foo.count");
+ Metric m = metrics.getMetric(toMetricId("foo.count"));
assertNotNull("Did not find expected metric with name 'foo.count'", m);
- Metric m2 = metrics.getMetric("bar.count");
+ Metric m2 = metrics.getMetric(toMetricId("bar.count"));
assertNotNull("Did not find expected metric with name 'bar.count'", m2);
try (RpcClient rpcClient = new RpcClient(tester.rpcPort())) {
@@ -134,7 +135,7 @@ public class RpcMetricsTest {
}
private static void verifyMetricsFromRpcRequest(VespaService service, RpcClient client) throws IOException {
- String jsonResponse = getMetricsForYamas(service.getMonitoringName(), client).trim();
+ String jsonResponse = getMetricsForYamas(service.getMonitoringName().id, client).trim();
ArrayNode metrics = (ArrayNode) jsonMapper.readTree(jsonResponse).get("metrics");
assertThat("Expected 3 metric messages", metrics.size(), is(3));
for (int i = 0; i < metrics.size() - 1; i++) { // The last "metric message" contains only status code/message
@@ -160,7 +161,7 @@ public class RpcMetricsTest {
private void verfiyMetricsFromServiceObject(VespaService service) {
Metrics storageMetrics = service.getMetrics();
assertThat(storageMetrics.size(), is(2));
- Metric foo = storageMetrics.getMetric("foo.count");
+ Metric foo = storageMetrics.getMetric(toMetricId("foo.count"));
assertNotNull("Did not find expected metric with name 'foo.count'", foo);
assertThat("Expected 2 dimensions for metric foo", foo.getDimensions().size(), is(2));
assertThat("Metric foo did not contain correct dimension mapping for key = foo.count", foo.getDimensions().containsKey(toDimensionId("foo")), is(true));
@@ -186,14 +187,14 @@ public class RpcMetricsTest {
assertThat(services.size(), is(1));
Metrics metrics = services.get(0).getMetrics();
assertThat("Fetched number of metrics is not correct", metrics.size(), is(2));
- Metric m = metrics.getMetric("foo.count");
+ Metric m = metrics.getMetric(toMetricId("foo.count"));
assertNotNull("Did not find expected metric with name 'foo.count'", m);
- Metric m2 = metrics.getMetric("bar.count");
+ Metric m2 = metrics.getMetric(toMetricId("bar.count"));
assertNotNull("Did not find expected metric with name 'bar'", m2);
try (RpcClient rpcClient = new RpcClient(tester.rpcPort())) {
- String response = getAllMetricNamesForService(services.get(0).getMonitoringName(), vespaMetricsConsumerId, rpcClient);
+ String response = getAllMetricNamesForService(services.get(0).getMonitoringName().id, vespaMetricsConsumerId, rpcClient);
assertThat(response, is("foo.count=ON;output-name=foo_count,bar.count=OFF,"));
}
}
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/ContainerServiceTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/ContainerServiceTest.java
index 7ff179e5528..1fbdaadab25 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/ContainerServiceTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/ContainerServiceTest.java
@@ -9,6 +9,7 @@ import org.junit.Test;
import static ai.vespa.metricsproxy.TestUtil.getFileContents;
import static ai.vespa.metricsproxy.metric.model.DimensionId.toDimensionId;
+import static ai.vespa.metricsproxy.metric.model.MetricId.toMetricId;
import static ai.vespa.metricsproxy.service.RemoteMetricsFetcher.METRICS_PATH;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
@@ -40,7 +41,7 @@ public class ContainerServiceTest {
int count = 0;
VespaService service = VespaService.create("service1", "id", httpServer.port());
for (Metric m : service.getMetrics().getMetrics()) {
- if (m.getName().equals("queries.rate")) {
+ if (m.getName().equals(toMetricId("queries.rate"))) {
count++;
System.out.println("Name: " + m.getName() + " value: " + m.getValue());
if (m.getDimensions().get(toDimensionId("chain")).equals("asvBlendingResult")) {
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/DownService.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/DownService.java
index d39cabcbf93..72277f54d88 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/DownService.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/DownService.java
@@ -18,8 +18,7 @@ public class DownService extends VespaService {
}
@Override
- public Metrics getMetrics() {
- return new Metrics();
+ public void consumeMetrics(MetricsParser.Consumer consumer) {
}
@Override
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/DummyService.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/DummyService.java
index 7b36e1d4b8b..28b4db12855 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/DummyService.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/DummyService.java
@@ -2,7 +2,7 @@
package ai.vespa.metricsproxy.service;
import ai.vespa.metricsproxy.metric.Metric;
-import ai.vespa.metricsproxy.metric.Metrics;
+import ai.vespa.metricsproxy.metric.model.MetricId;
/**
* @author Unknown
@@ -20,14 +20,10 @@ public class DummyService extends VespaService {
}
@Override
- public Metrics getMetrics() {
- Metrics m = new Metrics();
-
+ public void consumeMetrics(MetricsParser.Consumer consumer) {
long timestamp = System.currentTimeMillis() / 1000;
- m.add(new Metric(METRIC_1, 5 * num + 1, timestamp));
- m.add(new Metric(METRIC_2, 1.3 * num + 1.05, timestamp));
-
- return m;
+ consumer.consume(new Metric(MetricId.toMetricId(METRIC_1), 5 * num + 1, timestamp));
+ consumer.consume(new Metric(MetricId.toMetricId(METRIC_2), 1.3 * num + 1.05, timestamp));
}
}
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/MetricsFetcherTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/MetricsFetcherTest.java
index 57185d55131..ed3e8ef3d56 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/MetricsFetcherTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/MetricsFetcherTest.java
@@ -2,7 +2,9 @@
package ai.vespa.metricsproxy.service;
import ai.vespa.metricsproxy.TestUtil;
+import ai.vespa.metricsproxy.metric.Metric;
import ai.vespa.metricsproxy.metric.Metrics;
+import ai.vespa.metricsproxy.metric.model.MetricId;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.is;
@@ -14,22 +16,34 @@ public class MetricsFetcherTest {
private static int port = 9; //port number is not used in this test
+ private class MetricsConsumer implements MetricsParser.Consumer {
+ Metrics metrics = new Metrics();
+ @Override
+ public void consume(Metric metric) {
+ metrics.add(metric);
+ }
+ }
+ Metrics fetch(String data) {
+ RemoteMetricsFetcher fetcher = new RemoteMetricsFetcher(new DummyService(0, "dummy/id/0"), port);
+ MetricsConsumer consumer = new MetricsConsumer();
+ fetcher.createMetrics(data, consumer, 0);
+ return consumer.metrics;
+ }
+
@Test
public void testStateFormatMetricsParse() {
String jsonData = TestUtil.getFileContents("metrics-state.json");
- RemoteMetricsFetcher fetcher = new RemoteMetricsFetcher(new DummyService(0, "dummy/id/0"), port);
- Metrics metrics = fetcher.createMetrics(jsonData, 0);
+ Metrics metrics = fetch(jsonData);
assertThat(metrics.size(), is(10));
- assertThat(metrics.getMetric("query_hits.count").getValue().intValue(), is(28));
- assertThat(metrics.getMetric("queries.rate").getValue().doubleValue(), is(0.4667));
+ assertThat(metrics.getMetric(MetricId.toMetricId("query_hits.count")).getValue().intValue(), is(28));
+ assertThat(metrics.getMetric(MetricId.toMetricId("queries.rate")).getValue().doubleValue(), is(0.4667));
assertThat(metrics.getTimeStamp(), is(1334134700L));
}
@Test
public void testEmptyJson() {
String jsonData = "{}";
- RemoteMetricsFetcher fetcher = new RemoteMetricsFetcher(new DummyService(0, "dummy/id/0"), port);
- Metrics metrics = fetcher.createMetrics(jsonData, 0);
+ Metrics metrics = fetch(jsonData);
assertThat("Wrong number of metrics", metrics.size(), is(0));
}
@@ -38,10 +52,8 @@ public class MetricsFetcherTest {
String jsonData;
Metrics metrics;
- RemoteMetricsFetcher fetcher = new RemoteMetricsFetcher(new DummyService(0, "dummy/id/0"), port);
-
jsonData = "";
- metrics = fetcher.createMetrics(jsonData, 0);
+ metrics = fetch(jsonData);
assertThat("Wrong number of metrics", metrics.size(), is(0));
jsonData = "{\n" +
@@ -50,7 +62,7 @@ public class MetricsFetcherTest {
" \"message\" : \"Everything ok here\"\n" +
"}\n" +
"}";
- metrics = fetcher.createMetrics(jsonData, 0);
+ metrics = fetch(jsonData);
assertThat("Wrong number of metrics", metrics.size(), is(0));
jsonData = "{\n" +
@@ -79,7 +91,7 @@ public class MetricsFetcherTest {
"}\n" +
"}";
- metrics = fetcher.createMetrics(jsonData, 0);
+ metrics = fetch(jsonData);
assertThat("Wrong number of metrics", metrics.size(), is(0));
}
}
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/VespaServiceTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/VespaServiceTest.java
index 9400d74fa3a..87b55b3b00b 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/VespaServiceTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/VespaServiceTest.java
@@ -2,6 +2,7 @@
package ai.vespa.metricsproxy.service;
import ai.vespa.metricsproxy.metric.Metrics;
+import ai.vespa.metricsproxy.metric.model.MetricId;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -53,7 +54,7 @@ public class VespaServiceTest {
public void testMetricsFetching() {
VespaService service = VespaService.create("service1", "id", httpServer.port());
Metrics metrics = service.getMetrics();
- assertThat(metrics.getMetric("queries.count").getValue().intValue(), is(28));
+ assertThat(metrics.getMetric(MetricId.toMetricId("queries.count")).getValue().intValue(), is(28));
// Shutdown server and check that no metrics are returned (should use empty metrics
// when unable to fetch new metrics)
diff --git a/metrics/CMakeLists.txt b/metrics/CMakeLists.txt
index 6f854fed7c6..c5dcf89c02f 100644
--- a/metrics/CMakeLists.txt
+++ b/metrics/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/metrics/pom.xml b/metrics/pom.xml
index a021454a049..172e3c62179 100644
--- a/metrics/pom.xml
+++ b/metrics/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/metrics/src/tests/CMakeLists.txt b/metrics/src/tests/CMakeLists.txt
index 2f517d0065d..257c0a08dc2 100644
--- a/metrics/src/tests/CMakeLists.txt
+++ b/metrics/src/tests/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Runner for unit tests written in gtest.
vespa_add_executable(metrics_gtest_runner_app TEST
diff --git a/metrics/src/tests/countmetrictest.cpp b/metrics/src/tests/countmetrictest.cpp
index 3add1f78861..3e3408739da 100644
--- a/metrics/src/tests/countmetrictest.cpp
+++ b/metrics/src/tests/countmetrictest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/objects/floatingpointtype.h>
#include <vespa/metrics/countmetric.h>
diff --git a/metrics/src/tests/metric_timer_test.cpp b/metrics/src/tests/metric_timer_test.cpp
index cf73c86e4f2..59e32d6bbc4 100644
--- a/metrics/src/tests/metric_timer_test.cpp
+++ b/metrics/src/tests/metric_timer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/metrics/valuemetric.h>
#include <vespa/metrics/metrictimer.h>
diff --git a/metrics/src/tests/metricmanagertest.cpp b/metrics/src/tests/metricmanagertest.cpp
index a16a470edd7..82d8521d6db 100644
--- a/metrics/src/tests/metricmanagertest.cpp
+++ b/metrics/src/tests/metricmanagertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/metrics/jsonwriter.h>
#include <vespa/metrics/metrics.h>
diff --git a/metrics/src/tests/metricsettest.cpp b/metrics/src/tests/metricsettest.cpp
index a6071af6404..8cbcd2fbdd2 100644
--- a/metrics/src/tests/metricsettest.cpp
+++ b/metrics/src/tests/metricsettest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/metrics/metrics.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/metrics/src/tests/metrictest.cpp b/metrics/src/tests/metrictest.cpp
index ab815f5e78c..dc86e9ec281 100644
--- a/metrics/src/tests/metrictest.cpp
+++ b/metrics/src/tests/metrictest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/metrics/countmetric.h>
#include <vespa/metrics/valuemetric.h>
diff --git a/metrics/src/tests/snapshottest.cpp b/metrics/src/tests/snapshottest.cpp
index 9fb5023f019..7215823e694 100644
--- a/metrics/src/tests/snapshottest.cpp
+++ b/metrics/src/tests/snapshottest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/metrics/metricmanager.h>
#include <vespa/metrics/metrics.h>
diff --git a/metrics/src/tests/stresstest.cpp b/metrics/src/tests/stresstest.cpp
index 29bb66ad546..70b9a62c983 100644
--- a/metrics/src/tests/stresstest.cpp
+++ b/metrics/src/tests/stresstest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/metrics/metricmanager.h>
#include <vespa/metrics/metrics.h>
diff --git a/metrics/src/tests/summetrictest.cpp b/metrics/src/tests/summetrictest.cpp
index d0380a630f1..09495ff038d 100644
--- a/metrics/src/tests/summetrictest.cpp
+++ b/metrics/src/tests/summetrictest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/metrics/metrics.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/metrics/src/tests/valuemetrictest.cpp b/metrics/src/tests/valuemetrictest.cpp
index a64739f58c2..306cfc56a4c 100644
--- a/metrics/src/tests/valuemetrictest.cpp
+++ b/metrics/src/tests/valuemetrictest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/metrics/jsonwriter.h>
#include <vespa/metrics/metricmanager.h>
diff --git a/metrics/src/vespa/metrics/CMakeLists.txt b/metrics/src/vespa/metrics/CMakeLists.txt
index 13a3f09449e..2441bf95c0b 100644
--- a/metrics/src/vespa/metrics/CMakeLists.txt
+++ b/metrics/src/vespa/metrics/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(metrics
SOURCES
countmetric.cpp
diff --git a/metrics/src/vespa/metrics/common/CMakeLists.txt b/metrics/src/vespa/metrics/common/CMakeLists.txt
index 50183655dad..3819994af4c 100644
--- a/metrics/src/vespa/metrics/common/CMakeLists.txt
+++ b/metrics/src/vespa/metrics/common/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(metrics_common OBJECT
SOURCES
memory_usage_metrics.cpp
diff --git a/metrics/src/vespa/metrics/common/memory_usage_metrics.cpp b/metrics/src/vespa/metrics/common/memory_usage_metrics.cpp
index 0c38e567749..9ab01a64f27 100644
--- a/metrics/src/vespa/metrics/common/memory_usage_metrics.cpp
+++ b/metrics/src/vespa/metrics/common/memory_usage_metrics.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "memory_usage_metrics.h"
#include <vespa/vespalib/util/memoryusage.h>
diff --git a/metrics/src/vespa/metrics/common/memory_usage_metrics.h b/metrics/src/vespa/metrics/common/memory_usage_metrics.h
index 5c4c2dec403..aea407f0cbc 100644
--- a/metrics/src/vespa/metrics/common/memory_usage_metrics.h
+++ b/metrics/src/vespa/metrics/common/memory_usage_metrics.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/metrics/src/vespa/metrics/countmetric.cpp b/metrics/src/vespa/metrics/countmetric.cpp
index 672df721dc0..0eb83903a75 100644
--- a/metrics/src/vespa/metrics/countmetric.cpp
+++ b/metrics/src/vespa/metrics/countmetric.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "countmetric.hpp"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/metrics/src/vespa/metrics/countmetric.h b/metrics/src/vespa/metrics/countmetric.h
index 1701071104e..b6b89f4ab15 100644
--- a/metrics/src/vespa/metrics/countmetric.h
+++ b/metrics/src/vespa/metrics/countmetric.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class CountMetric
* \ingroup metrics
diff --git a/metrics/src/vespa/metrics/countmetric.hpp b/metrics/src/vespa/metrics/countmetric.hpp
index dfdc2586a05..e0e7c235f47 100644
--- a/metrics/src/vespa/metrics/countmetric.hpp
+++ b/metrics/src/vespa/metrics/countmetric.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "countmetric.h"
diff --git a/metrics/src/vespa/metrics/countmetricvalues.cpp b/metrics/src/vespa/metrics/countmetricvalues.cpp
index 76ab2d4d83a..7a517ee5fd3 100644
--- a/metrics/src/vespa/metrics/countmetricvalues.cpp
+++ b/metrics/src/vespa/metrics/countmetricvalues.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "countmetricvalues.hpp"
diff --git a/metrics/src/vespa/metrics/countmetricvalues.h b/metrics/src/vespa/metrics/countmetricvalues.h
index 17e6d89df5a..981c4c07631 100644
--- a/metrics/src/vespa/metrics/countmetricvalues.h
+++ b/metrics/src/vespa/metrics/countmetricvalues.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class CountMetric
* \ingroup metrics
diff --git a/metrics/src/vespa/metrics/countmetricvalues.hpp b/metrics/src/vespa/metrics/countmetricvalues.hpp
index 3f0f1ea4b49..f929706dd70 100644
--- a/metrics/src/vespa/metrics/countmetricvalues.hpp
+++ b/metrics/src/vespa/metrics/countmetricvalues.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "countmetricvalues.h"
diff --git a/metrics/src/vespa/metrics/jsonwriter.cpp b/metrics/src/vespa/metrics/jsonwriter.cpp
index 9b8232dd42f..c0d227b8f5a 100644
--- a/metrics/src/vespa/metrics/jsonwriter.cpp
+++ b/metrics/src/vespa/metrics/jsonwriter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "jsonwriter.h"
#include "countmetric.h"
diff --git a/metrics/src/vespa/metrics/jsonwriter.h b/metrics/src/vespa/metrics/jsonwriter.h
index 300f0cbb0ec..2e27d54d709 100644
--- a/metrics/src/vespa/metrics/jsonwriter.h
+++ b/metrics/src/vespa/metrics/jsonwriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/metrics/metric.h>
diff --git a/metrics/src/vespa/metrics/memoryconsumption.cpp b/metrics/src/vespa/metrics/memoryconsumption.cpp
index 7b40e8127b8..1c80b50a934 100644
--- a/metrics/src/vespa/metrics/memoryconsumption.cpp
+++ b/metrics/src/vespa/metrics/memoryconsumption.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "memoryconsumption.h"
#include <vespa/vespalib/stllike/hash_set.hpp>
#include <vespa/vespalib/util/size_literals.h>
diff --git a/metrics/src/vespa/metrics/memoryconsumption.h b/metrics/src/vespa/metrics/memoryconsumption.h
index da76819ef27..ef86bebfa72 100644
--- a/metrics/src/vespa/metrics/memoryconsumption.h
+++ b/metrics/src/vespa/metrics/memoryconsumption.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class metrics::MemoryConsumption
* \ingroup metrics
diff --git a/metrics/src/vespa/metrics/metric.cpp b/metrics/src/vespa/metrics/metric.cpp
index 50fc36c62cb..c29f4ce454e 100644
--- a/metrics/src/vespa/metrics/metric.cpp
+++ b/metrics/src/vespa/metrics/metric.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "metric.h"
#include "countmetric.h"
diff --git a/metrics/src/vespa/metrics/metric.h b/metrics/src/vespa/metrics/metric.h
index c8fb3031278..c1c5eac69fb 100644
--- a/metrics/src/vespa/metrics/metric.h
+++ b/metrics/src/vespa/metrics/metric.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "name_repo.h"
diff --git a/metrics/src/vespa/metrics/metricmanager.cpp b/metrics/src/vespa/metrics/metricmanager.cpp
index 7fa13a06e7b..6336672ac08 100644
--- a/metrics/src/vespa/metrics/metricmanager.cpp
+++ b/metrics/src/vespa/metrics/metricmanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "metricmanager.h"
#include "countmetric.h"
diff --git a/metrics/src/vespa/metrics/metricmanager.h b/metrics/src/vespa/metrics/metricmanager.h
index f5ad5c5eea3..300604d1f9f 100644
--- a/metrics/src/vespa/metrics/metricmanager.h
+++ b/metrics/src/vespa/metrics/metricmanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class metrics::MetricManager
*
@@ -43,7 +43,7 @@
*/
#pragma once
-#include "config-metricsmanager.h"
+#include <vespa/metrics/config-metricsmanager.h>
#include "metricset.h"
#include "metricsnapshot.h"
#include "memoryconsumption.h"
diff --git a/metrics/src/vespa/metrics/metrics.h b/metrics/src/vespa/metrics/metrics.h
index d22079660b3..6271789c3e7 100644
--- a/metrics/src/vespa/metrics/metrics.h
+++ b/metrics/src/vespa/metrics/metrics.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* File to include if you want to get all the most used metrics classes
* included.
diff --git a/metrics/src/vespa/metrics/metricset.cpp b/metrics/src/vespa/metrics/metricset.cpp
index e994015d487..c4a6861ddf1 100644
--- a/metrics/src/vespa/metrics/metricset.cpp
+++ b/metrics/src/vespa/metrics/metricset.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "metricset.h"
#include "memoryconsumption.h"
diff --git a/metrics/src/vespa/metrics/metricset.h b/metrics/src/vespa/metrics/metricset.h
index 84b5eb8c848..9789fe789f4 100644
--- a/metrics/src/vespa/metrics/metricset.h
+++ b/metrics/src/vespa/metrics/metricset.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class metrics::MetricSet
* \ingroup metrics
diff --git a/metrics/src/vespa/metrics/metricsmanager.def b/metrics/src/vespa/metrics/metricsmanager.def
index 80f03a8e9e8..610995b0b9b 100644
--- a/metrics/src/vespa/metrics/metricsmanager.def
+++ b/metrics/src/vespa/metrics/metricsmanager.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=metrics
# If any snapshot periods is set, these override all the default ones.
diff --git a/metrics/src/vespa/metrics/metricsnapshot.cpp b/metrics/src/vespa/metrics/metricsnapshot.cpp
index f7460c8b6ad..34ba32e9d95 100644
--- a/metrics/src/vespa/metrics/metricsnapshot.cpp
+++ b/metrics/src/vespa/metrics/metricsnapshot.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "metricsnapshot.h"
#include "metricmanager.h"
#include <cassert>
diff --git a/metrics/src/vespa/metrics/metricsnapshot.h b/metrics/src/vespa/metrics/metricsnapshot.h
index 7c9fe492ac1..f75a7031b78 100644
--- a/metrics/src/vespa/metrics/metricsnapshot.h
+++ b/metrics/src/vespa/metrics/metricsnapshot.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class metrics::MetricSnapshot
diff --git a/metrics/src/vespa/metrics/metrictimer.cpp b/metrics/src/vespa/metrics/metrictimer.cpp
index 1c5672a4060..4065fbaa871 100644
--- a/metrics/src/vespa/metrics/metrictimer.cpp
+++ b/metrics/src/vespa/metrics/metrictimer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/metrics/metrictimer.h>
namespace metrics {
diff --git a/metrics/src/vespa/metrics/metrictimer.h b/metrics/src/vespa/metrics/metrictimer.h
index 2efc274b456..e2506c96bf6 100644
--- a/metrics/src/vespa/metrics/metrictimer.h
+++ b/metrics/src/vespa/metrics/metrictimer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class MetricTimer
* @ingruop metrics
diff --git a/metrics/src/vespa/metrics/metricvalueset.cpp b/metrics/src/vespa/metrics/metricvalueset.cpp
index 0171c9abb7e..b8b83652d08 100644
--- a/metrics/src/vespa/metrics/metricvalueset.cpp
+++ b/metrics/src/vespa/metrics/metricvalueset.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "metricvalueset.hpp"
#include "valuemetricvalues.h"
diff --git a/metrics/src/vespa/metrics/metricvalueset.h b/metrics/src/vespa/metrics/metricvalueset.h
index c522876f5b1..82c01343472 100644
--- a/metrics/src/vespa/metrics/metricvalueset.h
+++ b/metrics/src/vespa/metrics/metricvalueset.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class MetricValueSet
* \ingroup metrics
diff --git a/metrics/src/vespa/metrics/metricvalueset.hpp b/metrics/src/vespa/metrics/metricvalueset.hpp
index 57b3e7f9901..fa42708f35e 100644
--- a/metrics/src/vespa/metrics/metricvalueset.hpp
+++ b/metrics/src/vespa/metrics/metricvalueset.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "metricvalueset.h"
diff --git a/metrics/src/vespa/metrics/name_repo.cpp b/metrics/src/vespa/metrics/name_repo.cpp
index 380120194d7..0dc36c5a84a 100644
--- a/metrics/src/vespa/metrics/name_repo.cpp
+++ b/metrics/src/vespa/metrics/name_repo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "name_repo.h"
#include <vespa/vespalib/metrics/name_collection.h>
diff --git a/metrics/src/vespa/metrics/name_repo.h b/metrics/src/vespa/metrics/name_repo.h
index 44f8f622bff..3bd182d9ba1 100644
--- a/metrics/src/vespa/metrics/name_repo.h
+++ b/metrics/src/vespa/metrics/name_repo.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/metrics/src/vespa/metrics/state_api_adapter.cpp b/metrics/src/vespa/metrics/state_api_adapter.cpp
index ec5705eed91..61a1ce7c2a9 100644
--- a/metrics/src/vespa/metrics/state_api_adapter.cpp
+++ b/metrics/src/vespa/metrics/state_api_adapter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "jsonwriter.h"
#include "state_api_adapter.h"
#include "metricmanager.h"
diff --git a/metrics/src/vespa/metrics/state_api_adapter.h b/metrics/src/vespa/metrics/state_api_adapter.h
index 4e152e3ab13..b097727e974 100644
--- a/metrics/src/vespa/metrics/state_api_adapter.h
+++ b/metrics/src/vespa/metrics/state_api_adapter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/metrics/src/vespa/metrics/summetric.cpp b/metrics/src/vespa/metrics/summetric.cpp
index 6cfdcded143..84905e94c3b 100644
--- a/metrics/src/vespa/metrics/summetric.cpp
+++ b/metrics/src/vespa/metrics/summetric.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "summetric.hpp"
#include "valuemetric.h"
diff --git a/metrics/src/vespa/metrics/summetric.h b/metrics/src/vespa/metrics/summetric.h
index 7b60c968e5b..c7d3a91ceed 100644
--- a/metrics/src/vespa/metrics/summetric.h
+++ b/metrics/src/vespa/metrics/summetric.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class metrics::CounterMetric
* @ingroup metrics
diff --git a/metrics/src/vespa/metrics/summetric.hpp b/metrics/src/vespa/metrics/summetric.hpp
index e067b9643c2..84f9290e1c2 100644
--- a/metrics/src/vespa/metrics/summetric.hpp
+++ b/metrics/src/vespa/metrics/summetric.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "summetric.h"
diff --git a/metrics/src/vespa/metrics/textwriter.cpp b/metrics/src/vespa/metrics/textwriter.cpp
index 4edfb93b452..94a7b7df73b 100644
--- a/metrics/src/vespa/metrics/textwriter.cpp
+++ b/metrics/src/vespa/metrics/textwriter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "textwriter.h"
#include "countmetric.h"
diff --git a/metrics/src/vespa/metrics/textwriter.h b/metrics/src/vespa/metrics/textwriter.h
index b1f09d1f0ed..f060429e931 100644
--- a/metrics/src/vespa/metrics/textwriter.h
+++ b/metrics/src/vespa/metrics/textwriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/metrics/src/vespa/metrics/updatehook.cpp b/metrics/src/vespa/metrics/updatehook.cpp
index b627d55b09e..4282cc98fb2 100644
--- a/metrics/src/vespa/metrics/updatehook.cpp
+++ b/metrics/src/vespa/metrics/updatehook.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "updatehook.h"
diff --git a/metrics/src/vespa/metrics/updatehook.h b/metrics/src/vespa/metrics/updatehook.h
index 0a0f218d61a..9fa0d52027e 100644
--- a/metrics/src/vespa/metrics/updatehook.h
+++ b/metrics/src/vespa/metrics/updatehook.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <mutex>
diff --git a/metrics/src/vespa/metrics/valuemetric.cpp b/metrics/src/vespa/metrics/valuemetric.cpp
index 8c1e49d425c..2e446fbf1c4 100644
--- a/metrics/src/vespa/metrics/valuemetric.cpp
+++ b/metrics/src/vespa/metrics/valuemetric.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "valuemetric.hpp"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/metrics/src/vespa/metrics/valuemetric.h b/metrics/src/vespa/metrics/valuemetric.h
index 6e120af191d..3470aa067e0 100644
--- a/metrics/src/vespa/metrics/valuemetric.h
+++ b/metrics/src/vespa/metrics/valuemetric.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class metrics::ValueMetric
* @ingroup metrics
diff --git a/metrics/src/vespa/metrics/valuemetric.hpp b/metrics/src/vespa/metrics/valuemetric.hpp
index 10c640b5926..a9522dcec29 100644
--- a/metrics/src/vespa/metrics/valuemetric.hpp
+++ b/metrics/src/vespa/metrics/valuemetric.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "valuemetric.h"
diff --git a/metrics/src/vespa/metrics/valuemetricvalues.cpp b/metrics/src/vespa/metrics/valuemetricvalues.cpp
index f309b07b1a4..db6588de17e 100644
--- a/metrics/src/vespa/metrics/valuemetricvalues.cpp
+++ b/metrics/src/vespa/metrics/valuemetricvalues.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "valuemetricvalues.hpp"
namespace metrics {
diff --git a/metrics/src/vespa/metrics/valuemetricvalues.h b/metrics/src/vespa/metrics/valuemetricvalues.h
index 567f0d0ae0f..905d334214c 100644
--- a/metrics/src/vespa/metrics/valuemetricvalues.h
+++ b/metrics/src/vespa/metrics/valuemetricvalues.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class metrics::ValueMetric
* @ingroup metrics
diff --git a/metrics/src/vespa/metrics/valuemetricvalues.hpp b/metrics/src/vespa/metrics/valuemetricvalues.hpp
index b33e636b120..87e4a247efb 100644
--- a/metrics/src/vespa/metrics/valuemetricvalues.hpp
+++ b/metrics/src/vespa/metrics/valuemetricvalues.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "valuemetricvalues.h"
diff --git a/metrics/src/vespa/metrics/xmlwriter.cpp b/metrics/src/vespa/metrics/xmlwriter.cpp
index 70e4f72d761..11cb450e64d 100644
--- a/metrics/src/vespa/metrics/xmlwriter.cpp
+++ b/metrics/src/vespa/metrics/xmlwriter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "xmlwriter.h"
#include "countmetric.h"
diff --git a/metrics/src/vespa/metrics/xmlwriter.h b/metrics/src/vespa/metrics/xmlwriter.h
index 31feb18bae8..a0e8a3efeea 100644
--- a/metrics/src/vespa/metrics/xmlwriter.h
+++ b/metrics/src/vespa/metrics/xmlwriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/model-evaluation/CMakeLists.txt b/model-evaluation/CMakeLists.txt
index 15480198978..ebda5698957 100644
--- a/model-evaluation/CMakeLists.txt
+++ b/model-evaluation/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(model-evaluation)
diff --git a/model-evaluation/abi-spec.json b/model-evaluation/abi-spec.json
index fac4baf4682..6728d5cd9b4 100644
--- a/model-evaluation/abi-spec.json
+++ b/model-evaluation/abi-spec.json
@@ -68,7 +68,7 @@
],
"methods": [
"public void <init>(com.yahoo.vespa.config.search.RankProfilesConfig, com.yahoo.vespa.config.search.core.RankingConstantsConfig, com.yahoo.vespa.config.search.core.RankingExpressionsConfig, com.yahoo.vespa.config.search.core.OnnxModelsConfig, com.yahoo.filedistribution.fileacquirer.FileAcquirer)",
- "public void <init>(com.yahoo.vespa.config.search.RankProfilesConfig, com.yahoo.vespa.config.search.core.RankingConstantsConfig, com.yahoo.vespa.config.search.core.OnnxModelsConfig, com.yahoo.filedistribution.fileacquirer.FileAcquirer)",
+ "public void <init>(ai.vespa.models.evaluation.RankProfilesConfigImporter, com.yahoo.vespa.config.search.RankProfilesConfig, com.yahoo.vespa.config.search.core.RankingConstantsConfig, com.yahoo.vespa.config.search.core.RankingExpressionsConfig, com.yahoo.vespa.config.search.core.OnnxModelsConfig)",
"public void <init>(java.util.Map)",
"public java.util.Map models()",
"public varargs ai.vespa.models.evaluation.FunctionEvaluator evaluatorOf(java.lang.String, java.lang.String[])",
@@ -86,6 +86,8 @@
"public void <init>(com.yahoo.filedistribution.fileacquirer.FileAcquirer)",
"public java.util.Map importFrom(com.yahoo.vespa.config.search.RankProfilesConfig, com.yahoo.vespa.config.search.core.RankingConstantsConfig, com.yahoo.vespa.config.search.core.RankingExpressionsConfig, com.yahoo.vespa.config.search.core.OnnxModelsConfig)",
"public java.util.Map importFrom(com.yahoo.vespa.config.search.RankProfilesConfig, com.yahoo.vespa.config.search.core.RankingConstantsConfig, com.yahoo.vespa.config.search.core.OnnxModelsConfig)",
+ "protected final java.lang.String readExpressionFromFile(java.io.File)",
+ "protected com.yahoo.searchlib.rankingexpression.RankingExpression readExpressionFromFile(java.lang.String, com.yahoo.config.FileReference)",
"protected com.yahoo.tensor.Tensor readTensorFromFile(java.lang.String, com.yahoo.tensor.TensorType, com.yahoo.config.FileReference)"
],
"fields": []
diff --git a/model-evaluation/pom.xml b/model-evaluation/pom.xml
index 8cdff451b42..5064d88ae63 100644
--- a/model-evaluation/pom.xml
+++ b/model-evaluation/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/model-evaluation/src/main/java/ai/vespa/models/evaluation/Constant.java b/model-evaluation/src/main/java/ai/vespa/models/evaluation/Constant.java
index e664693ab38..4df6aac359f 100644
--- a/model-evaluation/src/main/java/ai/vespa/models/evaluation/Constant.java
+++ b/model-evaluation/src/main/java/ai/vespa/models/evaluation/Constant.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.models.evaluation;
import com.yahoo.tensor.Tensor;
diff --git a/model-evaluation/src/main/java/ai/vespa/models/evaluation/FunctionEvaluator.java b/model-evaluation/src/main/java/ai/vespa/models/evaluation/FunctionEvaluator.java
index 72fefe62e61..6af33e29e62 100644
--- a/model-evaluation/src/main/java/ai/vespa/models/evaluation/FunctionEvaluator.java
+++ b/model-evaluation/src/main/java/ai/vespa/models/evaluation/FunctionEvaluator.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.models.evaluation;
import com.yahoo.searchlib.rankingexpression.ExpressionFunction;
diff --git a/model-evaluation/src/main/java/ai/vespa/models/evaluation/FunctionReference.java b/model-evaluation/src/main/java/ai/vespa/models/evaluation/FunctionReference.java
index fa45920f3c8..53592be7883 100644
--- a/model-evaluation/src/main/java/ai/vespa/models/evaluation/FunctionReference.java
+++ b/model-evaluation/src/main/java/ai/vespa/models/evaluation/FunctionReference.java
@@ -1,8 +1,7 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.models.evaluation;
import com.yahoo.collections.Pair;
-import com.yahoo.tensor.TensorType;
import java.util.Objects;
import java.util.Optional;
@@ -26,6 +25,8 @@ class FunctionReference {
private static final Pattern referencePattern =
Pattern.compile("rankingExpression\\(([a-zA-Z0-9_.]+)(@[a-f0-9]+\\.[a-f0-9]+)?\\)(\\.rankingScript)?");
+ private static final Pattern externalReferencePattern =
+ Pattern.compile("rankingExpression\\(([a-zA-Z0-9_.]+)(@[a-f0-9]+\\.[a-f0-9]+)?\\)(\\.expressionName)?");
private static final Pattern argumentTypePattern =
Pattern.compile("rankingExpression\\(([a-zA-Z0-9_.]+)(@[a-f0-9]+\\.[a-f0-9]+)?\\)\\.([a-zA-Z0-9_]+)\\.type?");
private static final Pattern returnTypePattern =
@@ -80,6 +81,16 @@ class FunctionReference {
return Optional.of(new FunctionReference(name, instance));
}
+ /** Returns a function reference from the given serial form, or empty if the string is not a valid reference */
+ static Optional<FunctionReference> fromExternalSerial(String serialForm) {
+ Matcher expressionMatcher = externalReferencePattern.matcher(serialForm);
+ if ( ! expressionMatcher.matches()) return Optional.empty();
+
+ String name = expressionMatcher.group(1);
+ String instance = expressionMatcher.group(2);
+ return Optional.of(new FunctionReference(name, instance));
+ }
+
/**
* Returns a function reference and argument name string from the given serial form,
* or empty if the string is not a valid function argument serial form
diff --git a/model-evaluation/src/main/java/ai/vespa/models/evaluation/LazyArrayContext.java b/model-evaluation/src/main/java/ai/vespa/models/evaluation/LazyArrayContext.java
index 5754977bb46..40a0a1be5fc 100644
--- a/model-evaluation/src/main/java/ai/vespa/models/evaluation/LazyArrayContext.java
+++ b/model-evaluation/src/main/java/ai/vespa/models/evaluation/LazyArrayContext.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.models.evaluation;
import com.google.common.collect.ImmutableMap;
diff --git a/model-evaluation/src/main/java/ai/vespa/models/evaluation/LazyValue.java b/model-evaluation/src/main/java/ai/vespa/models/evaluation/LazyValue.java
index a7b536ba911..8ad0714c536 100644
--- a/model-evaluation/src/main/java/ai/vespa/models/evaluation/LazyValue.java
+++ b/model-evaluation/src/main/java/ai/vespa/models/evaluation/LazyValue.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.models.evaluation;
import com.yahoo.searchlib.rankingexpression.ExpressionFunction;
diff --git a/model-evaluation/src/main/java/ai/vespa/models/evaluation/Model.java b/model-evaluation/src/main/java/ai/vespa/models/evaluation/Model.java
index 506a07be8d1..8af5f7bc499 100644
--- a/model-evaluation/src/main/java/ai/vespa/models/evaluation/Model.java
+++ b/model-evaluation/src/main/java/ai/vespa/models/evaluation/Model.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.models.evaluation;
import com.google.common.annotations.Beta;
diff --git a/model-evaluation/src/main/java/ai/vespa/models/evaluation/ModelsEvaluator.java b/model-evaluation/src/main/java/ai/vespa/models/evaluation/ModelsEvaluator.java
index 2d1a0d069a8..01427ca811a 100644
--- a/model-evaluation/src/main/java/ai/vespa/models/evaluation/ModelsEvaluator.java
+++ b/model-evaluation/src/main/java/ai/vespa/models/evaluation/ModelsEvaluator.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.models.evaluation;
import com.google.common.annotations.Beta;
@@ -31,16 +31,15 @@ public class ModelsEvaluator extends AbstractComponent {
RankingExpressionsConfig expressionsConfig,
OnnxModelsConfig onnxModelsConfig,
FileAcquirer fileAcquirer) {
- this(new RankProfilesConfigImporter(fileAcquirer)
- .importFrom(config, constantsConfig, expressionsConfig, onnxModelsConfig));
+ this(new RankProfilesConfigImporter(fileAcquirer), config, constantsConfig, expressionsConfig, onnxModelsConfig);
}
- public ModelsEvaluator(RankProfilesConfig config,
+ public ModelsEvaluator(RankProfilesConfigImporter importer,
+ RankProfilesConfig config,
RankingConstantsConfig constantsConfig,
- OnnxModelsConfig onnxModelsConfig,
- FileAcquirer fileAcquirer) {
- this(new RankProfilesConfigImporter(fileAcquirer)
- .importFrom(config, constantsConfig, new RankingExpressionsConfig.Builder().build(), onnxModelsConfig));
+ RankingExpressionsConfig expressionsConfig,
+ OnnxModelsConfig onnxModelsConfig) {
+ this(importer.importFrom(config, constantsConfig, expressionsConfig, onnxModelsConfig));
}
public ModelsEvaluator(Map<String, Model> models) {
diff --git a/model-evaluation/src/main/java/ai/vespa/models/evaluation/OnnxModel.java b/model-evaluation/src/main/java/ai/vespa/models/evaluation/OnnxModel.java
index dc27c43ef70..19a9a1dccd5 100644
--- a/model-evaluation/src/main/java/ai/vespa/models/evaluation/OnnxModel.java
+++ b/model-evaluation/src/main/java/ai/vespa/models/evaluation/OnnxModel.java
@@ -1,7 +1,8 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.models.evaluation;
import ai.vespa.modelintegration.evaluator.OnnxEvaluator;
+import ai.vespa.modelintegration.evaluator.OnnxEvaluatorOptions;
import com.yahoo.tensor.Tensor;
import com.yahoo.tensor.TensorType;
@@ -17,12 +18,14 @@ class OnnxModel {
private final String name;
private final File modelFile;
+ private final OnnxEvaluatorOptions options;
private OnnxEvaluator evaluator;
- OnnxModel(String name, File modelFile) {
+ OnnxModel(String name, File modelFile, OnnxEvaluatorOptions options) {
this.name = name;
this.modelFile = modelFile;
+ this.options = options;
}
public String name() {
@@ -31,7 +34,7 @@ class OnnxModel {
public void load() {
if (evaluator == null) {
- evaluator = new OnnxEvaluator(modelFile.getPath());
+ evaluator = new OnnxEvaluator(modelFile.getPath(), options);
}
}
diff --git a/model-evaluation/src/main/java/ai/vespa/models/evaluation/RankProfilesConfigImporter.java b/model-evaluation/src/main/java/ai/vespa/models/evaluation/RankProfilesConfigImporter.java
index 06ca7a60f4c..107a4c20a1c 100644
--- a/model-evaluation/src/main/java/ai/vespa/models/evaluation/RankProfilesConfigImporter.java
+++ b/model-evaluation/src/main/java/ai/vespa/models/evaluation/RankProfilesConfigImporter.java
@@ -1,6 +1,7 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.models.evaluation;
+import ai.vespa.modelintegration.evaluator.OnnxEvaluatorOptions;
import com.yahoo.collections.Pair;
import com.yahoo.config.FileReference;
import com.yahoo.filedistribution.fileacquirer.FileAcquirer;
@@ -12,12 +13,15 @@ import com.yahoo.searchlib.rankingexpression.parser.ParseException;
import com.yahoo.tensor.Tensor;
import com.yahoo.tensor.TensorType;
import com.yahoo.tensor.serialization.TypedBinaryFormat;
+import com.yahoo.text.Utf8;
import com.yahoo.vespa.config.search.RankProfilesConfig;
import com.yahoo.vespa.config.search.core.OnnxModelsConfig;
import com.yahoo.vespa.config.search.core.RankingConstantsConfig;
import com.yahoo.vespa.config.search.core.RankingExpressionsConfig;
+import net.jpountz.lz4.LZ4FrameInputStream;
import java.io.File;
+import java.io.FileInputStream;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.util.ArrayList;
@@ -82,6 +86,7 @@ public class RankProfilesConfigImporter {
List<OnnxModel> onnxModels = readOnnxModelsConfig(onnxModelsConfig);
List<Constant> constants = readLargeConstants(constantsConfig);
+ Map<String, RankingExpression> largeExpressions = readLargeExpressions(expressionsConfig);
Map<FunctionReference, ExpressionFunction> functions = new LinkedHashMap<>();
Map<FunctionReference, ExpressionFunction> referencedFunctions = new LinkedHashMap<>();
@@ -90,9 +95,21 @@ public class RankProfilesConfigImporter {
ExpressionFunction secondPhase = null;
for (RankProfilesConfig.Rankprofile.Fef.Property property : profile.fef().property()) {
Optional<FunctionReference> reference = FunctionReference.fromSerial(property.name());
+ Optional<FunctionReference> externalReference = FunctionReference.fromExternalSerial(property.name());
Optional<Pair<FunctionReference, String>> argumentType = FunctionReference.fromTypeArgumentSerial(property.name());
Optional<FunctionReference> returnType = FunctionReference.fromReturnTypeSerial(property.name());
- if (reference.isPresent()) {
+ if (externalReference.isPresent()) {
+ RankingExpression expression = largeExpressions.get(property.value());
+ ExpressionFunction function = new ExpressionFunction(externalReference.get().functionName(),
+ Collections.emptyList(),
+ expression);
+
+ if (externalReference.get().isFree()) // make available in model under configured name
+ functions.put(externalReference.get(), function);
+ // Make all functions, bound or not, available under the name they are referenced by in expressions
+ referencedFunctions.put(externalReference.get(), function);
+ }
+ else if (reference.isPresent()) {
RankingExpression expression = new RankingExpression(reference.get().functionName(), property.value());
ExpressionFunction function = new ExpressionFunction(reference.get().functionName(),
Collections.emptyList(),
@@ -166,7 +183,13 @@ public class RankProfilesConfigImporter {
try {
String name = onnxModelConfig.name();
File file = fileAcquirer.waitFor(onnxModelConfig.fileref(), 7, TimeUnit.DAYS);
- return new OnnxModel(name, file);
+
+ OnnxEvaluatorOptions options = new OnnxEvaluatorOptions();
+ options.setExecutionMode(onnxModelConfig.stateless_execution_mode());
+ options.setInterOpThreads(onnxModelConfig.stateless_interop_threads());
+ options.setIntraOpThreads(onnxModelConfig.stateless_intraop_threads());
+
+ return new OnnxModel(name, file, options);
} catch (InterruptedException e) {
throw new IllegalStateException("Gave up waiting for ONNX model " + onnxModelConfig.name());
}
@@ -184,6 +207,34 @@ public class RankProfilesConfigImporter {
return constants;
}
+ private Map<String, RankingExpression> readLargeExpressions(RankingExpressionsConfig expressionsConfig) throws ParseException {
+ Map<String, RankingExpression> expressions = new HashMap<>();
+
+ for (RankingExpressionsConfig.Expression expression : expressionsConfig.expression()) {
+ expressions.put(expression.name(), readExpressionFromFile(expression.name(), expression.fileref()));
+ }
+ return expressions;
+ }
+
+ protected final String readExpressionFromFile(File file) throws IOException {
+ return (file.getName().endsWith(".lz4"))
+ ? Utf8.toString(IOUtils.readBytes(new LZ4FrameInputStream(new FileInputStream(file)), 65536))
+ : Utf8.toString(IOUtils.readFileBytes(file));
+ }
+
+ protected RankingExpression readExpressionFromFile(String name, FileReference fileReference) throws ParseException {
+ try {
+ File file = fileAcquirer.waitFor(fileReference, 7, TimeUnit.DAYS);
+ return new RankingExpression(name, readExpressionFromFile(file));
+ }
+ catch (InterruptedException e) {
+ throw new IllegalStateException("Gave up waiting for expression " + name);
+ }
+ catch (IOException e) {
+ throw new UncheckedIOException(e);
+ }
+ }
+
protected Tensor readTensorFromFile(String name, TensorType type, FileReference fileReference) {
try {
File file = fileAcquirer.waitFor(fileReference, 7, TimeUnit.DAYS);
@@ -209,8 +260,8 @@ public class RankProfilesConfigImporter {
private static final Pattern valuePattern = Pattern.compile("constant\\(([a-zA-Z0-9_.]+)\\)\\.value");
private static final Pattern typePattern = Pattern.compile("constant\\(([a-zA-Z0-9_.]+)\\)\\.type");
- private Map<String, TensorType> types = new HashMap<>();
- private Map<String, String> values = new HashMap<>();
+ private final Map<String, TensorType> types = new HashMap<>();
+ private final Map<String, String> values = new HashMap<>();
void addIfSmallConstantInfo(String key, String value) {
tryValue(key, value);
diff --git a/model-evaluation/src/main/java/ai/vespa/models/evaluation/package-info.java b/model-evaluation/src/main/java/ai/vespa/models/evaluation/package-info.java
index 0edbd00affe..e156681792d 100644
--- a/model-evaluation/src/main/java/ai/vespa/models/evaluation/package-info.java
+++ b/model-evaluation/src/main/java/ai/vespa/models/evaluation/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@PublicApi
@ExportPackage
package ai.vespa.models.evaluation;
diff --git a/model-evaluation/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java b/model-evaluation/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java
index de23a8c6526..b0e2be26f8a 100644
--- a/model-evaluation/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java
+++ b/model-evaluation/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.models.handler;
import ai.vespa.models.evaluation.FunctionEvaluator;
@@ -19,6 +19,7 @@ import java.io.IOException;
import java.io.OutputStream;
import java.net.URI;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Map;
import java.util.Optional;
@@ -87,6 +88,14 @@ public class ModelsEvaluationHandler extends ThreadedHttpRequestHandler {
}
}
Tensor result = evaluator.evaluate();
+
+ Optional<String> format = property(request, "format.tensors");
+ if (format.isPresent() && format.get().equalsIgnoreCase("short")) {
+ return new Response(200, JsonFormat.encodeShortForm(result));
+ }
+ else if (format.isPresent() && format.get().equalsIgnoreCase("string")) {
+ return new Response(200, result.toString().getBytes(StandardCharsets.UTF_8));
+ }
return new Response(200, JsonFormat.encode(result));
}
@@ -140,9 +149,14 @@ public class ModelsEvaluationHandler extends ThreadedHttpRequestHandler {
private String baseUrl(HttpRequest request) {
URI uri = request.getUri();
StringBuilder sb = new StringBuilder();
- sb.append(uri.getScheme()).append("://").append(uri.getHost());
- if (uri.getPort() >= 0) {
- sb.append(":").append(uri.getPort());
+ sb.append(uri.getScheme()).append("://");
+ if (request.getHeader("Host") != null) {
+ sb.append(request.getHeader("Host"));
+ } else {
+ sb.append(uri.getHost());
+ if (uri.getPort() >= 0) {
+ sb.append(":").append(uri.getPort());
+ }
}
sb.append("/").append(API_ROOT).append("/").append(VERSION_V1).append("/");
return sb.toString();
diff --git a/model-evaluation/src/test/java/ai/vespa/models/evaluation/MlModelsImportingTest.java b/model-evaluation/src/test/java/ai/vespa/models/evaluation/MlModelsImportingTest.java
index 0d13b7d4660..f3434011401 100644
--- a/model-evaluation/src/test/java/ai/vespa/models/evaluation/MlModelsImportingTest.java
+++ b/model-evaluation/src/test/java/ai/vespa/models/evaluation/MlModelsImportingTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.models.evaluation;
import com.yahoo.searchlib.rankingexpression.ExpressionFunction;
@@ -25,7 +25,7 @@ public class MlModelsImportingTest {
public void testImportingModels() {
ModelTester tester = new ModelTester("src/test/resources/config/models/");
- assertEquals(5, tester.models().size());
+ assertEquals(6, tester.models().size());
// TODO: When we get type information in Models, replace the evaluator.context().names() check below by that
{
diff --git a/model-evaluation/src/test/java/ai/vespa/models/evaluation/ModelTester.java b/model-evaluation/src/test/java/ai/vespa/models/evaluation/ModelTester.java
index b6878f4ea1a..3f1a86e083b 100644
--- a/model-evaluation/src/test/java/ai/vespa/models/evaluation/ModelTester.java
+++ b/model-evaluation/src/test/java/ai/vespa/models/evaluation/ModelTester.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.models.evaluation;
import com.yahoo.config.FileReference;
@@ -10,9 +10,12 @@ import com.yahoo.io.GrowableByteBuffer;
import com.yahoo.io.IOUtils;
import com.yahoo.path.Path;
import com.yahoo.searchlib.rankingexpression.ExpressionFunction;
+import com.yahoo.searchlib.rankingexpression.RankingExpression;
+import com.yahoo.searchlib.rankingexpression.parser.ParseException;
import com.yahoo.tensor.Tensor;
import com.yahoo.tensor.TensorType;
import com.yahoo.tensor.serialization.TypedBinaryFormat;
+import com.yahoo.text.Utf8;
import com.yahoo.vespa.config.search.RankProfilesConfig;
import com.yahoo.vespa.config.search.core.OnnxModelsConfig;
import com.yahoo.vespa.config.search.core.RankingConstantsConfig;
@@ -70,31 +73,4 @@ public class ModelTester {
assertEquals(expression, function.getBody().getRoot().toString());
}
- /** Allows us to provide canned tensor constants during import since file distribution does not work in tests */
- public static class RankProfilesConfigImporterWithMockedConstants extends RankProfilesConfigImporter {
-
- private static final Logger log = Logger.getLogger(RankProfilesConfigImporterWithMockedConstants.class.getName());
-
- private final Path constantsPath;
-
- public RankProfilesConfigImporterWithMockedConstants(Path constantsPath, FileAcquirer fileAcquirer) {
- super(fileAcquirer);
- this.constantsPath = constantsPath;
- }
-
- @Override
- protected Tensor readTensorFromFile(String name, TensorType type, FileReference fileReference) {
- try {
- return TypedBinaryFormat.decode(Optional.of(type),
- GrowableByteBuffer.wrap(IOUtils.readFileBytes(constantsPath.append(name).toFile())));
- }
- catch (IOException e) {
- log.warning("Missing a mocked tensor constant for '" + name + "': " + e.getMessage() +
- ". Returning an empty tensor");
- return Tensor.from(type, "{}");
- }
- }
-
- }
-
}
diff --git a/model-evaluation/src/test/java/ai/vespa/models/evaluation/ModelsEvaluatorTest.java b/model-evaluation/src/test/java/ai/vespa/models/evaluation/ModelsEvaluatorTest.java
index 2a8b7479b00..4cb52216137 100644
--- a/model-evaluation/src/test/java/ai/vespa/models/evaluation/ModelsEvaluatorTest.java
+++ b/model-evaluation/src/test/java/ai/vespa/models/evaluation/ModelsEvaluatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.models.evaluation;
import com.yahoo.config.subscription.ConfigGetter;
@@ -137,7 +137,8 @@ public class ModelsEvaluatorTest {
RankingExpressionsConfig.class).getConfig("");
OnnxModelsConfig onnxModelsConfig = new ConfigGetter<>(new FileSource(configDir.append("onnx-models.cfg").toFile()),
OnnxModelsConfig.class).getConfig("");
- return new ModelsEvaluator(config, constantsConfig, expressionsConfig, onnxModelsConfig, MockFileAcquirer.returnFile(null));
+ return new ModelsEvaluator(new RankProfilesConfigImporterWithMockedConstants(Path.fromString(path).append("constants"), MockFileAcquirer.returnFile(null)),
+ config, constantsConfig, expressionsConfig, onnxModelsConfig);
}
}
diff --git a/model-evaluation/src/test/java/ai/vespa/models/evaluation/OnnxEvaluatorTest.java b/model-evaluation/src/test/java/ai/vespa/models/evaluation/OnnxEvaluatorTest.java
index c137fb9a522..a15c35fe854 100644
--- a/model-evaluation/src/test/java/ai/vespa/models/evaluation/OnnxEvaluatorTest.java
+++ b/model-evaluation/src/test/java/ai/vespa/models/evaluation/OnnxEvaluatorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.models.evaluation;
import com.yahoo.config.subscription.ConfigGetter;
diff --git a/model-evaluation/src/test/java/ai/vespa/models/evaluation/RankProfileImportingTest.java b/model-evaluation/src/test/java/ai/vespa/models/evaluation/RankProfileImportingTest.java
index 20abd9c0fb0..3fdbb370a5c 100644
--- a/model-evaluation/src/test/java/ai/vespa/models/evaluation/RankProfileImportingTest.java
+++ b/model-evaluation/src/test/java/ai/vespa/models/evaluation/RankProfileImportingTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.models.evaluation;
import org.junit.Test;
diff --git a/model-evaluation/src/test/java/ai/vespa/models/evaluation/RankProfilesConfigImporterWithMockedConstants.java b/model-evaluation/src/test/java/ai/vespa/models/evaluation/RankProfilesConfigImporterWithMockedConstants.java
new file mode 100644
index 00000000000..250ae9a4883
--- /dev/null
+++ b/model-evaluation/src/test/java/ai/vespa/models/evaluation/RankProfilesConfigImporterWithMockedConstants.java
@@ -0,0 +1,51 @@
+package ai.vespa.models.evaluation;
+
+import com.yahoo.config.FileReference;
+import com.yahoo.filedistribution.fileacquirer.FileAcquirer;
+import com.yahoo.io.GrowableByteBuffer;
+import com.yahoo.io.IOUtils;
+import com.yahoo.path.Path;
+import com.yahoo.searchlib.rankingexpression.RankingExpression;
+import com.yahoo.searchlib.rankingexpression.parser.ParseException;
+import com.yahoo.tensor.Tensor;
+import com.yahoo.tensor.TensorType;
+import com.yahoo.tensor.serialization.TypedBinaryFormat;
+
+import java.io.IOException;
+import java.util.Optional;
+import java.util.logging.Logger;
+
+/** Allows us to provide canned tensor constants during import since file distribution does not work in tests */
+public class RankProfilesConfigImporterWithMockedConstants extends RankProfilesConfigImporter {
+
+ private static final Logger log = Logger.getLogger(RankProfilesConfigImporterWithMockedConstants.class.getName());
+
+ private final Path constantsPath;
+
+ public RankProfilesConfigImporterWithMockedConstants(Path constantsPath, FileAcquirer fileAcquirer) {
+ super(fileAcquirer);
+ this.constantsPath = constantsPath;
+ }
+
+ @Override
+ protected Tensor readTensorFromFile(String name, TensorType type, FileReference fileReference) {
+ try {
+ return TypedBinaryFormat.decode(Optional.of(type),
+ GrowableByteBuffer.wrap(IOUtils.readFileBytes(constantsPath.append(name).toFile())));
+ }
+ catch (IOException e) {
+ log.warning("Missing a mocked tensor constant for '" + name + "': " + e.getMessage() +
+ ". Returning an empty tensor");
+ return Tensor.from(type, "{}");
+ }
+ }
+
+ @Override
+ protected RankingExpression readExpressionFromFile(String name, FileReference fileReference) throws ParseException {
+ try {
+ return new RankingExpression(name, readExpressionFromFile(constantsPath.append(fileReference.value()).toFile()));
+ } catch (IOException e) {
+ throw new IllegalArgumentException("Missing expression file '" + fileReference.value() + "' for expression '" + name + "'.", e);
+ }
+ }
+}
diff --git a/model-evaluation/src/test/java/ai/vespa/models/evaluation/SmallConstantImportingTest.java b/model-evaluation/src/test/java/ai/vespa/models/evaluation/SmallConstantImportingTest.java
index 5fd2e1de4ed..d721cd6554e 100644
--- a/model-evaluation/src/test/java/ai/vespa/models/evaluation/SmallConstantImportingTest.java
+++ b/model-evaluation/src/test/java/ai/vespa/models/evaluation/SmallConstantImportingTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.models.evaluation;
import org.junit.Test;
diff --git a/model-evaluation/src/test/java/ai/vespa/models/handler/HandlerTester.java b/model-evaluation/src/test/java/ai/vespa/models/handler/HandlerTester.java
index 0da7f2ed096..fc05a9936a9 100644
--- a/model-evaluation/src/test/java/ai/vespa/models/handler/HandlerTester.java
+++ b/model-evaluation/src/test/java/ai/vespa/models/handler/HandlerTester.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.models.handler;
import ai.vespa.models.evaluation.ModelsEvaluator;
@@ -32,9 +32,21 @@ class HandlerTester {
assertResponse(url, Collections.emptyMap(), expectedCode, expectedResult);
}
+ void assertResponse(String url, int expectedCode, String expectedResult, Map<String, String> headers) {
+ assertResponse(url, Collections.emptyMap(), expectedCode, expectedResult, headers);
+ }
+
void assertResponse(String url, Map<String, String> properties, int expectedCode, String expectedResult) {
+ assertResponse(url, properties, expectedCode, expectedResult, Collections.emptyMap());
+ }
+
+ void assertResponse(String url, Map<String, String> properties, int expectedCode, String expectedResult, Map<String, String> headers) {
HttpRequest getRequest = HttpRequest.createTestRequest(url, com.yahoo.jdisc.http.HttpRequest.Method.GET, null, properties);
HttpRequest postRequest = HttpRequest.createTestRequest(url, com.yahoo.jdisc.http.HttpRequest.Method.POST, null, properties);
+ if (headers.size() > 0) {
+ headers.forEach((k,v) -> getRequest.getJDiscRequest().headers().add(k, v));
+ headers.forEach((k,v) -> postRequest.getJDiscRequest().headers().add(k, v));
+ }
assertResponse(getRequest, expectedCode, expectedResult);
assertResponse(postRequest, expectedCode, expectedResult);
}
diff --git a/model-evaluation/src/test/java/ai/vespa/models/handler/ModelsEvaluationHandlerTest.java b/model-evaluation/src/test/java/ai/vespa/models/handler/ModelsEvaluationHandlerTest.java
index d5282bd52f7..33e56d5d465 100644
--- a/model-evaluation/src/test/java/ai/vespa/models/handler/ModelsEvaluationHandlerTest.java
+++ b/model-evaluation/src/test/java/ai/vespa/models/handler/ModelsEvaluationHandlerTest.java
@@ -1,8 +1,8 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.models.handler;
-import ai.vespa.models.evaluation.ModelTester;
import ai.vespa.models.evaluation.ModelsEvaluator;
+import ai.vespa.models.evaluation.RankProfilesConfigImporterWithMockedConstants;
import com.yahoo.config.subscription.ConfigGetter;
import com.yahoo.config.subscription.FileSource;
import com.yahoo.filedistribution.fileacquirer.MockFileAcquirer;
@@ -47,11 +47,20 @@ public class ModelsEvaluationHandlerTest {
public void testListModels() {
String url = "http://localhost/model-evaluation/v1";
String expected =
- "{\"mnist_softmax\":\"http://localhost/model-evaluation/v1/mnist_softmax\",\"mnist_saved\":\"http://localhost/model-evaluation/v1/mnist_saved\",\"mnist_softmax_saved\":\"http://localhost/model-evaluation/v1/mnist_softmax_saved\",\"xgboost_2_2\":\"http://localhost/model-evaluation/v1/xgboost_2_2\",\"lightgbm_regression\":\"http://localhost/model-evaluation/v1/lightgbm_regression\"}";
+ "{\"mnist_softmax\":\"http://localhost/model-evaluation/v1/mnist_softmax\",\"mnist_saved\":\"http://localhost/model-evaluation/v1/mnist_saved\",\"mnist_softmax_saved\":\"http://localhost/model-evaluation/v1/mnist_softmax_saved\",\"vespa_model\":\"http://localhost/model-evaluation/v1/vespa_model\",\"xgboost_2_2\":\"http://localhost/model-evaluation/v1/xgboost_2_2\",\"lightgbm_regression\":\"http://localhost/model-evaluation/v1/lightgbm_regression\"}";
handler.assertResponse(url, 200, expected);
}
@Test
+ public void testListModelsWithDifferentHost() {
+ String url = "http://localhost/model-evaluation/v1";
+ String expected =
+ "{\"mnist_softmax\":\"http://localhost:8088/model-evaluation/v1/mnist_softmax\",\"mnist_saved\":\"http://localhost:8088/model-evaluation/v1/mnist_saved\",\"mnist_softmax_saved\":\"http://localhost:8088/model-evaluation/v1/mnist_softmax_saved\",\"vespa_model\":\"http://localhost:8088/model-evaluation/v1/vespa_model\",\"xgboost_2_2\":\"http://localhost:8088/model-evaluation/v1/xgboost_2_2\",\"lightgbm_regression\":\"http://localhost:8088/model-evaluation/v1/lightgbm_regression\"}";
+ handler.assertResponse(url, 200, expected, Map.of("Host", "localhost:8088"));
+ }
+
+
+ @Test
public void testXgBoostEvaluationWithoutBindings() {
String url = "http://localhost/model-evaluation/v1/xgboost_2_2/eval"; // only has a single function
String expected = "{\"cells\":[{\"address\":{},\"value\":-4.376589999999999}]}";
@@ -164,6 +173,25 @@ public class ModelsEvaluationHandlerTest {
}
@Test
+ public void testMnistSoftmaxEvaluateSpecificFunctionWithBindingsShortForm() {
+ Map<String, String> properties = new HashMap<>();
+ properties.put("Placeholder", inputTensorShortForm());
+ String url = "http://localhost/model-evaluation/v1/mnist_softmax/default.add/eval";
+ String expected = "{\"cells\":[{\"address\":{\"d0\":\"0\",\"d1\":\"0\"},\"value\":-0.3546536862850189},{\"address\":{\"d0\":\"0\",\"d1\":\"1\"},\"value\":0.3759574592113495},{\"address\":{\"d0\":\"0\",\"d1\":\"2\"},\"value\":0.06054411828517914},{\"address\":{\"d0\":\"0\",\"d1\":\"3\"},\"value\":-0.251544713973999},{\"address\":{\"d0\":\"0\",\"d1\":\"4\"},\"value\":0.017951013520359993},{\"address\":{\"d0\":\"0\",\"d1\":\"5\"},\"value\":1.2899067401885986},{\"address\":{\"d0\":\"0\",\"d1\":\"6\"},\"value\":-0.10389615595340729},{\"address\":{\"d0\":\"0\",\"d1\":\"7\"},\"value\":0.6367976665496826},{\"address\":{\"d0\":\"0\",\"d1\":\"8\"},\"value\":-1.4136744737625122},{\"address\":{\"d0\":\"0\",\"d1\":\"9\"},\"value\":-0.2573896050453186}]}";
+ handler.assertResponse(url, properties, 200, expected);
+ }
+
+ @Test
+ public void testMnistSoftmaxEvaluateSpecificFunctionWithShortOutput() {
+ Map<String, String> properties = new HashMap<>();
+ properties.put("Placeholder", inputTensorShortForm());
+ properties.put("format.tensors", "short");
+ String url = "http://localhost/model-evaluation/v1/mnist_softmax/default.add/eval";
+ String expected = "{\"type\":\"tensor(d0[],d1[10])\",\"values\":[[-0.3546536862850189,0.3759574592113495,0.06054411828517914,-0.251544713973999,0.017951013520359993,1.2899067401885986,-0.10389615595340729,0.6367976665496826,-1.4136744737625122,-0.2573896050453186]]}";
+ handler.assertResponse(url, properties, 200, expected);
+ }
+
+ @Test
public void testMnistSavedDetails() {
String url = "http://localhost:8080/model-evaluation/v1/mnist_saved";
String expected = "{\"model\":\"mnist_saved\",\"functions\":[{\"function\":\"serving_default.y\",\"info\":\"http://localhost:8080/model-evaluation/v1/mnist_saved/serving_default.y\",\"eval\":\"http://localhost:8080/model-evaluation/v1/mnist_saved/serving_default.y/eval\",\"arguments\":[{\"name\":\"input\",\"type\":\"tensor(d0[],d1[784])\"}]}]}";
@@ -185,6 +213,36 @@ public class ModelsEvaluationHandlerTest {
}
@Test
+ public void testVespaModelShortOutput() {
+ Map<String, String> properties = new HashMap<>();
+ properties.put("format.tensors", "short");
+ String url = "http://localhost/model-evaluation/v1/vespa_model/";
+ handler.assertResponse(url + "test_mapped/eval", properties, 200,
+ "{\"type\":\"tensor(d0{})\",\"cells\":{\"a\":1.0,\"b\":2.0}}");
+ handler.assertResponse(url + "test_indexed/eval", properties, 200,
+ "{\"type\":\"tensor(d0[2],d1[3])\",\"values\":[[1.0,2.0,3.0],[4.0,5.0,6.0]]}");
+ handler.assertResponse(url + "test_mixed/eval", properties, 200,
+ "{\"type\":\"tensor(x{},y[3])\",\"blocks\":{\"a\":[1.0,2.0,3.0],\"b\":[4.0,5.0,6.0]}}");
+ handler.assertResponse(url + "test_mixed_2/eval", properties, 200,
+ "{\"type\":\"tensor(a[2],b[2],c{},d[2])\",\"blocks\":{\"a\":[[[1.0,2.0],[3.0,4.0]],[[5.0,6.0],[7.0,8.0]]],\"b\":[[[1.0,2.0],[3.0,4.0]],[[5.0,6.0],[7.0,8.0]]]}}");
+ }
+
+ @Test
+ public void testVespaModelLiteralOutput() {
+ Map<String, String> properties = new HashMap<>();
+ properties.put("format.tensors", "string");
+ String url = "http://localhost/model-evaluation/v1/vespa_model/";
+ handler.assertResponse(url + "test_mapped/eval", properties, 200,
+ "tensor(d0{}):{a:1.0,b:2.0}");
+ handler.assertResponse(url + "test_indexed/eval", properties, 200,
+ "tensor(d0[2],d1[3]):[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]");
+ handler.assertResponse(url + "test_mixed/eval", properties, 200,
+ "tensor(x{},y[3]):{a:[1.0, 2.0, 3.0],b:[4.0, 5.0, 6.0]}");
+ handler.assertResponse(url + "test_mixed_2/eval", properties, 200,
+ "tensor(a[2],b[2],c{},d[2]):{a:[[[1.0, 2.0], [3.0, 4.0]], [[5.0, 6.0], [7.0, 8.0]]],b:[[[1.0, 2.0], [3.0, 4.0]], [[5.0, 6.0], [7.0, 8.0]]]}");
+ }
+
+ @Test
public void testMnistSavedEvaluateSpecificFunction() {
Map<String, String> properties = new HashMap<>();
properties.put("input", inputTensor());
@@ -203,10 +261,8 @@ public class ModelsEvaluationHandlerTest {
RankingExpressionsConfig.class).getConfig("");
OnnxModelsConfig onnxModelsConfig = new ConfigGetter<>(new FileSource(configDir.append("onnx-models.cfg").toFile()),
OnnxModelsConfig.class).getConfig("");
- ModelTester.RankProfilesConfigImporterWithMockedConstants importer =
- new ModelTester.RankProfilesConfigImporterWithMockedConstants(Path.fromString(path).append("constants"),
- MockFileAcquirer.returnFile(null));
- return new ModelsEvaluator(importer.importFrom(config, constantsConfig, expressionsConfig, onnxModelsConfig));
+ return new ModelsEvaluator(new RankProfilesConfigImporterWithMockedConstants(Path.fromString(path).append("constants"), MockFileAcquirer.returnFile(null)),
+ config, constantsConfig, expressionsConfig, onnxModelsConfig);
}
private String inputTensor() {
@@ -216,4 +272,17 @@ public class ModelsEvaluationHandlerTest {
return b.build().toString();
}
+ private String inputTensorShortForm() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("[[");
+ for (int i = 0; i < 784; i++) {
+ sb.append("0.0");
+ if (i < 783) {
+ sb.append(",");
+ }
+ }
+ sb.append("]]");
+ return sb.toString();
+ }
+
}
diff --git a/model-evaluation/src/test/java/ai/vespa/models/handler/OnnxEvaluationHandlerTest.java b/model-evaluation/src/test/java/ai/vespa/models/handler/OnnxEvaluationHandlerTest.java
index 2d419751db6..6014bd7c7ef 100644
--- a/model-evaluation/src/test/java/ai/vespa/models/handler/OnnxEvaluationHandlerTest.java
+++ b/model-evaluation/src/test/java/ai/vespa/models/handler/OnnxEvaluationHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.models.handler;
import ai.vespa.models.evaluation.ModelsEvaluator;
diff --git a/model-evaluation/src/test/resources/config/models/rank-profiles.cfg b/model-evaluation/src/test/resources/config/models/rank-profiles.cfg
index 385115b7cd4..4877a24f171 100644
--- a/model-evaluation/src/test/resources/config/models/rank-profiles.cfg
+++ b/model-evaluation/src/test/resources/config/models/rank-profiles.cfg
@@ -29,3 +29,12 @@ rankprofile[3].fef.property[4].value "tensor(d1[10])"
rankprofile[4].name "lightgbm_regression"
rankprofile[4].fef.property[0].name "rankingExpression(lightgbm_regression).rankingScript"
rankprofile[4].fef.property[0].value "if (!(numerical_2 >= 0.46643291586559305), 2.1594397038037663, if (categorical_2 in ["k", "l", "m"], 2.235297305276056, 2.1792953471546546)) + if (categorical_1 in ["d", "e"], 0.03070842919354316, if (!(numerical_1 >= 0.5102250691730842), -0.04439151147520909, 0.005117411709368601)) + if (!(numerical_2 >= 0.668665477622446), if (!(numerical_2 >= 0.008118820676863816), -0.15361238490967524, -0.01192330846157292), 0.03499044894987518) + if (!(numerical_1 >= 0.5201391072644542), -0.02141000620783247, if (categorical_1 in ["a", "b"], -0.004121485787596721, 0.04534090904886873)) + if (categorical_2 in ["k", "l", "m"], if (!(numerical_2 >= 0.27283279016959255), -0.01924803254356527, 0.03643772842347651), -0.02701711918923075)"
+rankprofile[5].name "vespa_model"
+rankprofile[5].fef.property[0].name "rankingExpression(test_mapped).rankingScript"
+rankprofile[5].fef.property[0].value "tensor(d0{}):{a:1, b:2}"
+rankprofile[5].fef.property[1].name "rankingExpression(test_indexed).rankingScript"
+rankprofile[5].fef.property[1].value "tensor(d0[2],d1[3]):[[1,2,3],[4,5,6]]"
+rankprofile[5].fef.property[2].name "rankingExpression(test_mixed).rankingScript"
+rankprofile[5].fef.property[2].value "tensor(x{},y[3]):{a:[1,2,3], b:[4,5,6]}"
+rankprofile[5].fef.property[3].name "rankingExpression(test_mixed_2).rankingScript"
+rankprofile[5].fef.property[3].value "tensor(a[2],b[2],c{},d[2]):{a:[[[1,2], [3,4]], [[5,6], [7,8]]], b:[[[1,2], [3,4]], [[5,6], [7,8]]] }"
diff --git a/model-evaluation/src/test/resources/config/onnx/models/add_mul.py b/model-evaluation/src/test/resources/config/onnx/models/add_mul.py
index 3a4522042e8..221ed20d254 100755
--- a/model-evaluation/src/test/resources/config/onnx/models/add_mul.py
+++ b/model-evaluation/src/test/resources/config/onnx/models/add_mul.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/model-evaluation/src/test/resources/config/onnx/models/pytorch_one_layer.py b/model-evaluation/src/test/resources/config/onnx/models/pytorch_one_layer.py
index 1296d84e180..3975c5ca34e 100755
--- a/model-evaluation/src/test/resources/config/onnx/models/pytorch_one_layer.py
+++ b/model-evaluation/src/test/resources/config/onnx/models/pytorch_one_layer.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import torch
import torch.onnx
diff --git a/model-evaluation/src/test/resources/config/rankexpression/constants/overflow.firstphase.expr b/model-evaluation/src/test/resources/config/rankexpression/constants/overflow.firstphase.expr
new file mode 100644
index 00000000000..70a3a2eb6cc
--- /dev/null
+++ b/model-evaluation/src/test/resources/config/rankexpression/constants/overflow.firstphase.expr
@@ -0,0 +1 @@
+feature1(argument1,argument2,argument3,argument4).output + feature2(argument1,argument2,argument3,argument4).output + feature3(argument1,argument2,argument3,argument4).output + feature4(argument1,argument2,argument3,argument4).output + feature5(argument1,argument2,argument3,argument4).output + feature6(argument1,argument2,argument3,argument4).output + feature7(argument1,argument2,argument3,argument4).output + feature8(argument1,argument2,argument3,argument4).output + feature9(argument1,argument2,argument3,argument4).output + feature10(argument1,argument2,argument3,argument4).output + feature11(argument1,argument2,argument3,argument4).output + feature12(argument1,argument2,argument3,argument4).output + feature13(argument1,argument2,argument3,argument4).output + feature14(argument1,argument2,argument3,argument4).output + feature15(argument1,argument2,argument3,argument4).output + feature16(argument1,argument2,argument3,argument4).output + feature17(argument1,argument2,argument3,argument4).output + feature18(argument1,argument2,argument3,argument4).output + feature19(argument1,argument2,argument3,argument4).output + feature20(argument1,argument2,argument3,argument4).output + feature21(argument1,argument2,argument3,argument4).output + feature22(argument1,argument2,argument3,argument4).output + feature23(argument1,argument2,argument3,argument4).output + feature24(argument1,argument2,argument3,argument4).output + feature25(argument1,argument2,argument3,argument4).output + feature26(argument1,argument2,argument3,argument4).output + feature27(argument1,argument2,argument3,argument4).output + feature28(argument1,argument2,argument3,argument4).output + feature29(argument1,argument2,argument3,argument4).output + feature30(argument1,argument2,argument3,argument4).output + feature31(argument1,argument2,argument3,argument4).output + feature32(argument1,argument2,argument3,argument4).output + feature33(argument1,argument2,argument3,argument4).output + feature34(argument1,argument2,argument3,argument4).output + feature35(argument1,argument2,argument3,argument4).output + feature36(argument1,argument2,argument3,argument4).output + feature37(argument1,argument2,argument3,argument4).output + feature38(argument1,argument2,argument3,argument4).output + feature39(argument1,argument2,argument3,argument4).output + feature40(argument1,argument2,argument3,argument4).output + feature41(argument1,argument2,argument3,argument4).output + feature42(argument1,argument2,argument3,argument4).output + feature43(argument1,argument2,argument3,argument4).output + feature44(argument1,argument2,argument3,argument4).output + feature45(argument1,argument2,argument3,argument4).output + feature46(argument1,argument2,argument3,argument4).output + feature47(argument1,argument2,argument3,argument4).output + feature48(argument1,argument2,argument3,argument4).output + feature49(argument1,argument2,argument3,argument4).output + feature50(argument1,argument2,argument3,argument4).output + feature51(argument1,argument2,argument3,argument4).output + feature52(argument1,argument2,argument3,argument4).output + feature53(argument1,argument2,argument3,argument4).output + feature54(argument1,argument2,argument3,argument4).output + feature55(argument1,argument2,argument3,argument4).output + feature56(argument1,argument2,argument3,argument4).output + feature57(argument1,argument2,argument3,argument4).output + feature58(argument1,argument2,argument3,argument4).output + feature59(argument1,argument2,argument3,argument4).output + feature60(argument1,argument2,argument3,argument4).output + feature61(argument1,argument2,argument3,argument4).output + feature62(argument1,argument2,argument3,argument4).output + feature63(argument1,argument2,argument3,argument4).output + feature64(argument1,argument2,argument3,argument4).output + feature65(argument1,argument2,argument3,argument4).output + feature66(argument1,argument2,argument3,argument4).output + feature67(argument1,argument2,argument3,argument4).output + feature68(argument1,argument2,argument3,argument4).output + feature69(argument1,argument2,argument3,argument4).output + feature70(argument1,argument2,argument3,argument4).output + feature71(argument1,argument2,argument3,argument4).output + feature72(argument1,argument2,argument3,argument4).output + feature73(argument1,argument2,argument3,argument4).output + feature74(argument1,argument2,argument3,argument4).output + feature75(argument1,argument2,argument3,argument4).output + feature76(argument1,argument2,argument3,argument4).output + feature77(argument1,argument2,argument3,argument4).output + feature78(argument1,argument2,argument3,argument4).output + feature79(argument1,argument2,argument3,argument4).output + feature80(argument1,argument2,argument3,argument4).output + feature81(argument1,argument2,argument3,argument4).output + feature82(argument1,argument2,argument3,argument4).output + feature83(argument1,argument2,argument3,argument4).output + feature84(argument1,argument2,argument3,argument4).output + feature85(argument1,argument2,argument3,argument4).output + feature86(argument1,argument2,argument3,argument4).output + feature87(argument1,argument2,argument3,argument4).output + feature88(argument1,argument2,argument3,argument4).output + feature89(argument1,argument2,argument3,argument4).output + feature90(argument1,argument2,argument3,argument4).output + feature91(argument1,argument2,argument3,argument4).output + feature92(argument1,argument2,argument3,argument4).output + feature93(argument1,argument2,argument3,argument4).output + feature94(argument1,argument2,argument3,argument4).output + feature95(argument1,argument2,argument3,argument4).output + feature96(argument1,argument2,argument3,argument4).output + feature97(argument1,argument2,argument3,argument4).output + feature98(argument1,argument2,argument3,argument4).output + feature99(argument1,argument2,argument3,argument4).output + feature100(argument1,argument2,argument3,argument4).output + feature101(argument1,argument2,argument3,argument4).output + feature102(argument1,argument2,argument3,argument4).output + feature103(argument1,argument2,argument3,argument4).output + feature104(argument1,argument2,argument3,argument4).output + feature105(argument1,argument2,argument3,argument4).output + feature106(argument1,argument2,argument3,argument4).output + feature107(argument1,argument2,argument3,argument4).output + feature108(argument1,argument2,argument3,argument4).output + feature109(argument1,argument2,argument3,argument4).output + feature110(argument1,argument2,argument3,argument4).output + feature111(argument1,argument2,argument3,argument4).output + feature112(argument1,argument2,argument3,argument4).output + feature113(argument1,argument2,argument3,argument4).output + feature114(argument1,argument2,argument3,argument4).output + feature115(argument1,argument2,argument3,argument4).output + feature116(argument1,argument2,argument3,argument4).output + feature117(argument1,argument2,argument3,argument4).output + feature118(argument1,argument2,argument3,argument4).output + feature119(argument1,argument2,argument3,argument4).output + feature120(argument1,argument2,argument3,argument4).output + feature121(argument1,argument2,argument3,argument4).output + feature122(argument1,argument2,argument3,argument4).output + feature123(argument1,argument2,argument3,argument4).output + feature124(argument1,argument2,argument3,argument4).output + feature125(argument1,argument2,argument3,argument4).output + feature126(argument1,argument2,argument3,argument4).output + feature127(argument1,argument2,argument3,argument4).output + feature128(argument1,argument2,argument3,argument4).output + feature129(argument1,argument2,argument3,argument4).output + feature130(argument1,argument2,argument3,argument4).output + feature131(argument1,argument2,argument3,argument4).output + feature132(argument1,argument2,argument3,argument4).output + feature133(argument1,argument2,argument3,argument4).output + feature134(argument1,argument2,argument3,argument4).output + feature135(argument1,argument2,argument3,argument4).output + feature136(argument1,argument2,argument3,argument4).output + feature137(argument1,argument2,argument3,argument4).output + feature138(argument1,argument2,argument3,argument4).output + feature139(argument1,argument2,argument3,argument4).output + feature140(argument1,argument2,argument3,argument4).output + feature141(argument1,argument2,argument3,argument4).output + feature142(argument1,argument2,argument3,argument4).output + feature143(argument1,argument2,argument3,argument4).output + feature144(argument1,argument2,argument3,argument4).output + feature145(argument1,argument2,argument3,argument4).output + feature146(argument1,argument2,argument3,argument4).output + feature147(argument1,argument2,argument3,argument4).output + feature148(argument1,argument2,argument3,argument4).output + feature149(argument1,argument2,argument3,argument4).output + feature150(argument1,argument2,argument3,argument4).output + feature151(argument1,argument2,argument3,argument4).output + feature152(argument1,argument2,argument3,argument4).output + feature153(argument1,argument2,argument3,argument4).output + feature154(argument1,argument2,argument3,argument4).output + feature155(argument1,argument2,argument3,argument4).output + feature156(argument1,argument2,argument3,argument4).output + feature157(argument1,argument2,argument3,argument4).output + feature158(argument1,argument2,argument3,argument4).output + feature159(argument1,argument2,argument3,argument4).output + feature160(argument1,argument2,argument3,argument4).output + feature161(argument1,argument2,argument3,argument4).output + feature162(argument1,argument2,argument3,argument4).output + feature163(argument1,argument2,argument3,argument4).output + feature164(argument1,argument2,argument3,argument4).output + feature165(argument1,argument2,argument3,argument4).output + feature166(argument1,argument2,argument3,argument4).output + feature167(argument1,argument2,argument3,argument4).output + feature168(argument1,argument2,argument3,argument4).output + feature169(argument1,argument2,argument3,argument4).output + feature170(argument1,argument2,argument3,argument4).output + feature171(argument1,argument2,argument3,argument4).output + feature172(argument1,argument2,argument3,argument4).output + feature173(argument1,argument2,argument3,argument4).output + feature174(argument1,argument2,argument3,argument4).output + feature175(argument1,argument2,argument3,argument4).output + feature176(argument1,argument2,argument3,argument4).output + feature177(argument1,argument2,argument3,argument4).output + feature178(argument1,argument2,argument3,argument4).output + feature179(argument1,argument2,argument3,argument4).output + feature180(argument1,argument2,argument3,argument4).output + feature181(argument1,argument2,argument3,argument4).output + feature182(argument1,argument2,argument3,argument4).output + feature183(argument1,argument2,argument3,argument4).output + feature184(argument1,argument2,argument3,argument4).output + feature185(argument1,argument2,argument3,argument4).output + feature186(argument1,argument2,argument3,argument4).output + feature187(argument1,argument2,argument3,argument4).output + feature188(argument1,argument2,argument3,argument4).output + feature189(argument1,argument2,argument3,argument4).output + feature190(argument1,argument2,argument3,argument4).output + feature191(argument1,argument2,argument3,argument4).output + feature192(argument1,argument2,argument3,argument4).output + feature193(argument1,argument2,argument3,argument4).output + feature194(argument1,argument2,argument3,argument4).output + feature195(argument1,argument2,argument3,argument4).output + feature196(argument1,argument2,argument3,argument4).output + feature197(argument1,argument2,argument3,argument4).output + feature198(argument1,argument2,argument3,argument4).output + feature199(argument1,argument2,argument3,argument4).output + feature200(argument1,argument2,argument3,argument4).output + feature201(argument1,argument2,argument3,argument4).output + feature202(argument1,argument2,argument3,argument4).output + feature203(argument1,argument2,argument3,argument4).output + feature204(argument1,argument2,argument3,argument4).output + feature205(argument1,argument2,argument3,argument4).output + feature206(argument1,argument2,argument3,argument4).output + feature207(argument1,argument2,argument3,argument4).output + feature208(argument1,argument2,argument3,argument4).output + feature209(argument1,argument2,argument3,argument4).output + feature210(argument1,argument2,argument3,argument4).output + feature211(argument1,argument2,argument3,argument4).output + feature212(argument1,argument2,argument3,argument4).output + feature213(argument1,argument2,argument3,argument4).output + feature214(argument1,argument2,argument3,argument4).output + feature215(argument1,argument2,argument3,argument4).output + feature216(argument1,argument2,argument3,argument4).output + feature217(argument1,argument2,argument3,argument4).output + feature218(argument1,argument2,argument3,argument4).output + feature219(argument1,argument2,argument3,argument4).output + feature220(argument1,argument2,argument3,argument4).output + feature221(argument1,argument2,argument3,argument4).output + feature222(argument1,argument2,argument3,argument4).output + feature223(argument1,argument2,argument3,argument4).output + feature224(argument1,argument2,argument3,argument4).output + feature225(argument1,argument2,argument3,argument4).output + feature226(argument1,argument2,argument3,argument4).output + feature227(argument1,argument2,argument3,argument4).output + feature228(argument1,argument2,argument3,argument4).output + feature229(argument1,argument2,argument3,argument4).output + feature230(argument1,argument2,argument3,argument4).output + feature231(argument1,argument2,argument3,argument4).output + feature232(argument1,argument2,argument3,argument4).output + feature233(argument1,argument2,argument3,argument4).output + feature234(argument1,argument2,argument3,argument4).output + feature235(argument1,argument2,argument3,argument4).output + feature236(argument1,argument2,argument3,argument4).output + feature237(argument1,argument2,argument3,argument4).output + feature238(argument1,argument2,argument3,argument4).output + feature239(argument1,argument2,argument3,argument4).output + feature240(argument1,argument2,argument3,argument4).output + feature241(argument1,argument2,argument3,argument4).output + feature242(argument1,argument2,argument3,argument4).output + feature243(argument1,argument2,argument3,argument4).output + feature244(argument1,argument2,argument3,argument4).output + feature245(argument1,argument2,argument3,argument4).output + feature246(argument1,argument2,argument3,argument4).output + feature247(argument1,argument2,argument3,argument4).output + feature248(argument1,argument2,argument3,argument4).output + feature249(argument1,argument2,argument3,argument4).output + feature250(argument1,argument2,argument3,argument4).output + feature251(argument1,argument2,argument3,argument4).output + feature252(argument1,argument2,argument3,argument4).output + feature253(argument1,argument2,argument3,argument4).output + feature254(argument1,argument2,argument3,argument4).output + feature255(argument1,argument2,argument3,argument4).output + feature256(argument1,argument2,argument3,argument4).output + feature257(argument1,argument2,argument3,argument4).output + feature258(argument1,argument2,argument3,argument4).output + feature259(argument1,argument2,argument3,argument4).output + feature260(argument1,argument2,argument3,argument4).output + feature261(argument1,argument2,argument3,argument4).output + feature262(argument1,argument2,argument3,argument4).output + feature263(argument1,argument2,argument3,argument4).output + feature264(argument1,argument2,argument3,argument4).output + feature265(argument1,argument2,argument3,argument4).output + feature266(argument1,argument2,argument3,argument4).output + feature267(argument1,argument2,argument3,argument4).output + feature268(argument1,argument2,argument3,argument4).output + feature269(argument1,argument2,argument3,argument4).output + feature270(argument1,argument2,argument3,argument4).output + feature271(argument1,argument2,argument3,argument4).output + feature272(argument1,argument2,argument3,argument4).output + feature273(argument1,argument2,argument3,argument4).output + feature274(argument1,argument2,argument3,argument4).output + feature275(argument1,argument2,argument3,argument4).output + feature276(argument1,argument2,argument3,argument4).output + feature277(argument1,argument2,argument3,argument4).output + feature278(argument1,argument2,argument3,argument4).output + feature279(argument1,argument2,argument3,argument4).output + feature280(argument1,argument2,argument3,argument4).output + feature281(argument1,argument2,argument3,argument4).output + feature282(argument1,argument2,argument3,argument4).output + feature283(argument1,argument2,argument3,argument4).output + feature284(argument1,argument2,argument3,argument4).output + feature285(argument1,argument2,argument3,argument4).output + feature286(argument1,argument2,argument3,argument4).output + feature287(argument1,argument2,argument3,argument4).output + feature288(argument1,argument2,argument3,argument4).output + feature289(argument1,argument2,argument3,argument4).output + feature290(argument1,argument2,argument3,argument4).output + feature291(argument1,argument2,argument3,argument4).output + feature292(argument1,argument2,argument3,argument4).output + feature293(argument1,argument2,argument3,argument4).output + feature294(argument1,argument2,argument3,argument4).output + feature295(argument1,argument2,argument3,argument4).output + feature296(argument1,argument2,argument3,argument4).output + feature297(argument1,argument2,argument3,argument4).output + feature298(argument1,argument2,argument3,argument4).output + feature299(argument1,argument2,argument3,argument4).output + feature300(argument1,argument2,argument3,argument4).output
diff --git a/model-evaluation/src/test/resources/config/rankexpression/constants/overflow.firstphase.expr.lz4 b/model-evaluation/src/test/resources/config/rankexpression/constants/overflow.firstphase.expr.lz4
new file mode 100644
index 00000000000..30f23b963db
--- /dev/null
+++ b/model-evaluation/src/test/resources/config/rankexpression/constants/overflow.firstphase.expr.lz4
Binary files differ
diff --git a/model-evaluation/src/test/resources/config/rankexpression/rank-profiles.cfg b/model-evaluation/src/test/resources/config/rankexpression/rank-profiles.cfg
index f5652c31d2a..aab15fd400f 100644
--- a/model-evaluation/src/test/resources/config/rankexpression/rank-profiles.cfg
+++ b/model-evaluation/src/test/resources/config/rankexpression/rank-profiles.cfg
@@ -80,12 +80,12 @@ rankprofile[2].fef.property[10].value "attribute(bar4).out"
rankprofile[3].name "overflow"
rankprofile[3].fef.property[0].name "vespa.rank.firstphase"
rankprofile[3].fef.property[0].value "rankingExpression(firstphase)"
-rankprofile[3].fef.property[1].name "rankingExpression(firstphase).rankingScript"
-rankprofile[3].fef.property[1].value "feature1(argument1,argument2,argument3,argument4).output + feature2(argument1,argument2,argument3,argument4).output + feature3(argument1,argument2,argument3,argument4).output + feature4(argument1,argument2,argument3,argument4).output + feature5(argument1,argument2,argument3,argument4).output + feature6(argument1,argument2,argument3,argument4).output + feature7(argument1,argument2,argument3,argument4).output + feature8(argument1,argument2,argument3,argument4).output + feature9(argument1,argument2,argument3,argument4).output + feature10(argument1,argument2,argument3,argument4).output + feature11(argument1,argument2,argument3,argument4).output + feature12(argument1,argument2,argument3,argument4).output + feature13(argument1,argument2,argument3,argument4).output + feature14(argument1,argument2,argument3,argument4).output + feature15(argument1,argument2,argument3,argument4).output + feature16(argument1,argument2,argument3,argument4).output + feature17(argument1,argument2,argument3,argument4).output + feature18(argument1,argument2,argument3,argument4).output + feature19(argument1,argument2,argument3,argument4).output + feature20(argument1,argument2,argument3,argument4).output + feature21(argument1,argument2,argument3,argument4).output + feature22(argument1,argument2,argument3,argument4).output + feature23(argument1,argument2,argument3,argument4).output + feature24(argument1,argument2,argument3,argument4).output + feature25(argument1,argument2,argument3,argument4).output + feature26(argument1,argument2,argument3,argument4).output + feature27(argument1,argument2,argument3,argument4).output + feature28(argument1,argument2,argument3,argument4).output + feature29(argument1,argument2,argument3,argument4).output + feature30(argument1,argument2,argument3,argument4).output + feature31(argument1,argument2,argument3,argument4).output + feature32(argument1,argument2,argument3,argument4).output + feature33(argument1,argument2,argument3,argument4).output + feature34(argument1,argument2,argument3,argument4).output + feature35(argument1,argument2,argument3,argument4).output + feature36(argument1,argument2,argument3,argument4).output + feature37(argument1,argument2,argument3,argument4).output + feature38(argument1,argument2,argument3,argument4).output + feature39(argument1,argument2,argument3,argument4).output + feature40(argument1,argument2,argument3,argument4).output + feature41(argument1,argument2,argument3,argument4).output + feature42(argument1,argument2,argument3,argument4).output + feature43(argument1,argument2,argument3,argument4).output + feature44(argument1,argument2,argument3,argument4).output + feature45(argument1,argument2,argument3,argument4).output + feature46(argument1,argument2,argument3,argument4).output + feature47(argument1,argument2,argument3,argument4).output + feature48(argument1,argument2,argument3,argument4).output + feature49(argument1,argument2,argument3,argument4).output + feature50(argument1,argument2,argument3,argument4).output + feature51(argument1,argument2,argument3,argument4).output + feature52(argument1,argument2,argument3,argument4).output + feature53(argument1,argument2,argument3,argument4).output + feature54(argument1,argument2,argument3,argument4).output + feature55(argument1,argument2,argument3,argument4).output + feature56(argument1,argument2,argument3,argument4).output + feature57(argument1,argument2,argument3,argument4).output + feature58(argument1,argument2,argument3,argument4).output + feature59(argument1,argument2,argument3,argument4).output + feature60(argument1,argument2,argument3,argument4).output + feature61(argument1,argument2,argument3,argument4).output + feature62(argument1,argument2,argument3,argument4).output + feature63(argument1,argument2,argument3,argument4).output + feature64(argument1,argument2,argument3,argument4).output + feature65(argument1,argument2,argument3,argument4).output + feature66(argument1,argument2,argument3,argument4).output + feature67(argument1,argument2,argument3,argument4).output + feature68(argument1,argument2,argument3,argument4).output + feature69(argument1,argument2,argument3,argument4).output + feature70(argument1,argument2,argument3,argument4).output + feature71(argument1,argument2,argument3,argument4).output + feature72(argument1,argument2,argument3,argument4).output + feature73(argument1,argument2,argument3,argument4).output + feature74(argument1,argument2,argument3,argument4).output + feature75(argument1,argument2,argument3,argument4).output + feature76(argument1,argument2,argument3,argument4).output + feature77(argument1,argument2,argument3,argument4).output + feature78(argument1,argument2,argument3,argument4).output + feature79(argument1,argument2,argument3,argument4).output + feature80(argument1,argument2,argument3,argument4).output + feature81(argument1,argument2,argument3,argument4).output + feature82(argument1,argument2,argument3,argument4).output + feature83(argument1,argument2,argument3,argument4).output + feature84(argument1,argument2,argument3,argument4).output + feature85(argument1,argument2,argument3,argument4).output + feature86(argument1,argument2,argument3,argument4).output + feature87(argument1,argument2,argument3,argument4).output + feature88(argument1,argument2,argument3,argument4).output + feature89(argument1,argument2,argument3,argument4).output + feature90(argument1,argument2,argument3,argument4).output + feature91(argument1,argument2,argument3,argument4).output + feature92(argument1,argument2,argument3,argument4).output + feature93(argument1,argument2,argument3,argument4).output + feature94(argument1,argument2,argument3,argument4).output + feature95(argument1,argument2,argument3,argument4).output + feature96(argument1,argument2,argument3,argument4).output + feature97(argument1,argument2,argument3,argument4).output + feature98(argument1,argument2,argument3,argument4).output + feature99(argument1,argument2,argument3,argument4).output + feature100(argument1,argument2,argument3,argument4).output + feature101(argument1,argument2,argument3,argument4).output + feature102(argument1,argument2,argument3,argument4).output + feature103(argument1,argument2,argument3,argument4).output + feature104(argument1,argument2,argument3,argument4).output + feature105(argument1,argument2,argument3,argument4).output + feature106(argument1,argument2,argument3,argument4).output + feature107(argument1,argument2,argument3,argument4).output + feature108(argument1,argument2,argument3,argument4).output + feature109(argument1,argument2,argument3,argument4).output + feature110(argument1,argument2,argument3,argument4).output + feature111(argument1,argument2,argument3,argument4).output + feature112(argument1,argument2,argument3,argument4).output + feature113(argument1,argument2,argument3,argument4).output + feature114(argument1,argument2,argument3,argument4).output + feature115(argument1,argument2,argument3,argument4).output + feature116(argument1,argument2,argument3,argument4).output + feature117(argument1,argument2,argument3,argument4).output + feature118(argument1,argument2,argument3,argument4).output + feature119(argument1,argument2,argument3,argument4).output + feature120(argument1,argument2,argument3,argument4).output + feature121(argument1,argument2,argument3,argument4).output + feature122(argument1,argument2,argument3,argument4).output + feature123(argument1,argument2,argument3,argument4).output + feature124(argument1,argument2,argument3,argument4).output + feature125(argument1,argument2,argument3,argument4).output + feature126(argument1,argument2,argument3,argument4).output + feature127(argument1,argument2,argument3,argument4).output + feature128(argument1,argument2,argument3,argument4).output + feature129(argument1,argument2,argument3,argument4).output + feature130(argument1,argument2,argument3,argument4).output + feature131(argument1,argument2,argument3,argument4).output + feature132(argument1,argument2,argument3,argument4).output + feature133(argument1,argument2,argument3,argument4).output + feature134(argument1,argument2,argument3,argument4).output + feature135(argument1,argument2,argument3,argument4).output + feature136(argument1,argument2,argument3,argument4).output + feature137(argument1,argument2,argument3,argument4).output + feature138(argument1,argument2,argument3,argument4).output + feature139(argument1,argument2,argument3,argument4).output + feature140(argument1,argument2,argument3,argument4).output + feature141(argument1,argument2,argument3,argument4).output + feature142(argument1,argument2,argument3,argument4).output + feature143(argument1,argument2,argument3,argument4).output + feature144(argument1,argument2,argument3,argument4).output + feature145(argument1,argument2,argument3,argument4).output + feature146(argument1,argument2,argument3,argument4).output + feature147(argument1,argument2,argument3,argument4).output + feature148(argument1,argument2,argument3,argument4).output + feature149(argument1,argument2,argument3,argument4).output + feature150(argument1,argument2,argument3,argument4).output + feature151(argument1,argument2,argument3,argument4).output + feature152(argument1,argument2,argument3,argument4).output + feature153(argument1,argument2,argument3,argument4).output + feature154(argument1,argument2,argument3,argument4).output + feature155(argument1,argument2,argument3,argument4).output + feature156(argument1,argument2,argument3,argument4).output + feature157(argument1,argument2,argument3,argument4).output + feature158(argument1,argument2,argument3,argument4).output + feature159(argument1,argument2,argument3,argument4).output + feature160(argument1,argument2,argument3,argument4).output + feature161(argument1,argument2,argument3,argument4).output + feature162(argument1,argument2,argument3,argument4).output + feature163(argument1,argument2,argument3,argument4).output + feature164(argument1,argument2,argument3,argument4).output + feature165(argument1,argument2,argument3,argument4).output + feature166(argument1,argument2,argument3,argument4).output + feature167(argument1,argument2,argument3,argument4).output + feature168(argument1,argument2,argument3,argument4).output + feature169(argument1,argument2,argument3,argument4).output + feature170(argument1,argument2,argument3,argument4).output + feature171(argument1,argument2,argument3,argument4).output + feature172(argument1,argument2,argument3,argument4).output + feature173(argument1,argument2,argument3,argument4).output + feature174(argument1,argument2,argument3,argument4).output + feature175(argument1,argument2,argument3,argument4).output + feature176(argument1,argument2,argument3,argument4).output + feature177(argument1,argument2,argument3,argument4).output + feature178(argument1,argument2,argument3,argument4).output + feature179(argument1,argument2,argument3,argument4).output + feature180(argument1,argument2,argument3,argument4).output + feature181(argument1,argument2,argument3,argument4).output + feature182(argument1,argument2,argument3,argument4).output + feature183(argument1,argument2,argument3,argument4).output + feature184(argument1,argument2,argument3,argument4).output + feature185(argument1,argument2,argument3,argument4).output + feature186(argument1,argument2,argument3,argument4).output + feature187(argument1,argument2,argument3,argument4).output + feature188(argument1,argument2,argument3,argument4).output + feature189(argument1,argument2,argument3,argument4).output + feature190(argument1,argument2,argument3,argument4).output + feature191(argument1,argument2,argument3,argument4).output + feature192(argument1,argument2,argument3,argument4).output + feature193(argument1,argument2,argument3,argument4).output + feature194(argument1,argument2,argument3,argument4).output + feature195(argument1,argument2,argument3,argument4).output + feature196(argument1,argument2,argument3,argument4).output + feature197(argument1,argument2,argument3,argument4).output + feature198(argument1,argument2,argument3,argument4).output + feature199(argument1,argument2,argument3,argument4).output + feature200(argument1,argument2,argument3,argument4).output + feature201(argument1,argument2,argument3,argument4).output + feature202(argument1,argument2,argument3,argument4).output + feature203(argument1,argument2,argument3,argument4).output + feature204(argument1,argument2,argument3,argument4).output + feature205(argument1,argument2,argument3,argument4).output + feature206(argument1,argument2,argument3,argument4).output + feature207(argument1,argument2,argument3,argument4).output + feature208(argument1,argument2,argument3,argument4).output + feature209(argument1,argument2,argument3,argument4).output + feature210(argument1,argument2,argument3,argument4).output + feature211(argument1,argument2,argument3,argument4).output + feature212(argument1,argument2,argument3,argument4).output + feature213(argument1,argument2,argument3,argument4).output + feature214(argument1,argument2,argument3,argument4).output + feature215(argument1,argument2,argument3,argument4).output + feature216(argument1,argument2,argument3,argument4).output + feature217(argument1,argument2,argument3,argument4).output + feature218(argument1,argument2,argument3,argument4).output + feature219(argument1,argument2,argument3,argument4).output + feature220(argument1,argument2,argument3,argument4).output + feature221(argument1,argument2,argument3,argument4).output + feature222(argument1,argument2,argument3,argument4).output + feature223(argument1,argument2,argument3,argument4).output + feature224(argument1,argument2,argument3,argument4).output + feature225(argument1,argument2,argument3,argument4).output + feature226(argument1,argument2,argument3,argument4).output + feature227(argument1,argument2,argument3,argument4).output + feature228(argument1,argument2,argument3,argument4).output + feature229(argument1,argument2,argument3,argument4).output + feature230(argument1,argument2,argument3,argument4).output + feature231(argument1,argument2,argument3,argument4).output + feature232(argument1,argument2,argument3,argument4).output + feature233(argument1,argument2,argument3,argument4).output + feature234(argument1,argument2,argument3,argument4).output + feature235(argument1,argument2,argument3,argument4).output + feature236(argument1,argument2,argument3,argument4).output + feature237(argument1,argument2,argument3,argument4).output + feature238(argument1,argument2,argument3,argument4).output + feature239(argument1,argument2,argument3,argument4).output + feature240(argument1,argument2,argument3,argument4).output + feature241(argument1,argument2,argument3,argument4).output + feature242(argument1,argument2,argument3,argument4).output + feature243(argument1,argument2,argument3,argument4).output + feature244(argument1,argument2,argument3,argument4).output + feature245(argument1,argument2,argument3,argument4).output + feature246(argument1,argument2,argument3,argument4).output + feature247(argument1,argument2,argument3,argument4).output + feature248(argument1,argument2,argument3,argument4).output + feature249(argument1,argument2,argument3,argument4).output + feature250(argument1,argument2,argument3,argument4).output + feature251(argument1,argument2,argument3,argument4).output + feature252(argument1,argument2,argument3,argument4).output + feature253(argument1,argument2,argument3,argument4).output + feature254(argument1,argument2,argument3,argument4).output + feature255(argument1,argument2,argument3,argument4).output + feature256(argument1,argument2,argument3,argument4).output + feature257(argument1,argument2,argument3,argument4).output + feature258(argument1,argument2,argument3,argument4).output + feature259(argument1,argument2,argument3,argument4).output + feature260(argument1,argument2,argument3,argument4).output + feature261(argument1,argument2,argument3,argument4).output + feature262(argument1,argument2,argument3,argument4).output + feature263(argument1,argument2,argument3,argument4).output + feature264(argument1,argument2,argument3,argument4).output + feature265(argument1,argument2,argument3,argument4).output + feature266(argument1,argument2,argument3,argument4).output + feature267(argument1,argument2,argument3,argument4).output + feature268(argument1,argument2,argument3,argument4).output + feature269(argument1,argument2,argument3,argument4).output + feature270(argument1,argument2,argument3,argument4).output + feature271(argument1,argument2,argument3,argument4).output + feature272(argument1,argument2,argument3,argument4).output + feature273(argument1,argument2,argument3,argument4).output + feature274(argument1,argument2,argument3,argument4).output + feature275(argument1,argument2,argument3,argument4).output + feature276(argument1,argument2,argument3,argument4).output + feature277(argument1,argument2,argument3,argument4).output + feature278(argument1,argument2,argument3,argument4).output + feature279(argument1,argument2,argument3,argument4).output + feature280(argument1,argument2,argument3,argument4).output + feature281(argument1,argument2,argument3,argument4).output + feature282(argument1,argument2,argument3,argument4).output + feature283(argument1,argument2,argument3,argument4).output + feature284(argument1,argument2,argument3,argument4).output + feature285(argument1,argument2,argument3,argument4).output + feature286(argument1,argument2,argument3,argument4).output + feature287(argument1,argument2,argument3,argument4).output + feature288(argument1,argument2,argument3,argument4).output + feature289(argument1,argument2,argument3,argument4).output + feature290(argument1,argument2,argument3,argument4).output + feature291(argument1,argument2,argument3,argument4).output + feature292(argument1,argument2,argument3,argument4).output + feature293(argument1,argument2,argument3,argument4).output + feature294(argument1,argument2,argument3,argument4).output + feature295(argument1,argument2,argument3,argument4).output + feature296(argument1,argument2,argument3,argument4).output + feature297(argument1,argument2,argument3,argument4).output + feature298(argument1,argument2,argument3,argument4).output + feature299(argument1,argument2,argument3,argument4).output + feature300(argument1,argument2,argument3,argument4).output"
+rankprofile[3].fef.property[1].name "rankingExpression(firstphase).expressionName"
+rankprofile[3].fef.property[1].value "overflow.firstphase"
rankprofile[3].fef.property[2].name "vespa.rank.secondphase"
rankprofile[3].fef.property[2].value "rankingExpression(secondphase)"
-rankprofile[3].fef.property[3].name "rankingExpression(secondphase).rankingScript"
-rankprofile[3].fef.property[3].value "exp(0) + mysum(attribute(foo),\"attribute( bar )\",\"attribute( \\\"baz\\\" )\")"
+rankprofile[3].fef.property[3].name "rankingExpression(secondphase).expressionName"
+rankprofile[3].fef.property[3].value "overflow.secondphase"
rankprofile[3].fef.property[4].name "vespa.hitcollector.heapsize"
rankprofile[3].fef.property[4].value "101"
rankprofile[3].fef.property[5].name "vespa.hitcollector.arraysize"
@@ -293,4 +293,4 @@ rankprofile[17].fef.property[4].value "if (isNan(attribute(glmpfw)) == 1, rankin
rankprofile[17].fef.property[5].name "vespa.rank.secondphase"
rankprofile[17].fef.property[5].value "rankingExpression(secondphase)"
rankprofile[17].fef.property[6].name "rankingExpression(secondphase).rankingScript"
-rankprofile[17].fef.property[6].value "3000 * rankingExpression(m2)" \ No newline at end of file
+rankprofile[17].fef.property[6].value "3000 * rankingExpression(m2)"
diff --git a/model-evaluation/src/test/resources/config/rankexpression/rankexpression.sd b/model-evaluation/src/test/resources/config/rankexpression/rankexpression.sd
index d3e0057cfe1..f313b006acf 100644
--- a/model-evaluation/src/test/resources/config/rankexpression/rankexpression.sd
+++ b/model-evaluation/src/test/resources/config/rankexpression/rankexpression.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search rankexpression {
document rankexpression {
diff --git a/model-evaluation/src/test/resources/config/rankexpression/ranking-expressions.cfg b/model-evaluation/src/test/resources/config/rankexpression/ranking-expressions.cfg
index e69de29bb2d..8cb02567538 100644
--- a/model-evaluation/src/test/resources/config/rankexpression/ranking-expressions.cfg
+++ b/model-evaluation/src/test/resources/config/rankexpression/ranking-expressions.cfg
@@ -0,0 +1,4 @@
+expression[0].name "overflow.firstphase"
+expression[0].fileref "overflow.firstphase.expr"
+expression[1].name "overflow.secondphase"
+expression[1].fileref "overflow.firstphase.expr.lz4"
diff --git a/model-evaluation/src/test/resources/config/smallconstant/smallconstant.sd b/model-evaluation/src/test/resources/config/smallconstant/smallconstant.sd
index c41f0af4c48..50f51f6ce6a 100644
--- a/model-evaluation/src/test/resources/config/smallconstant/smallconstant.sd
+++ b/model-evaluation/src/test/resources/config/smallconstant/smallconstant.sd
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search smallconstant {
document smallconstant {
diff --git a/model-integration/CMakeLists.txt b/model-integration/CMakeLists.txt
index f8aa1c552a6..4225ac38f89 100644
--- a/model-integration/CMakeLists.txt
+++ b/model-integration/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(model-integration)
vespa_install_script(src/main/python/vespa-convert-tf2onnx.py vespa-convert-tf2onnx bin)
diff --git a/model-integration/README b/model-integration/README
index 7b29ac16e34..a58d88dc311 100644
--- a/model-integration/README
+++ b/model-integration/README
@@ -4,5 +4,3 @@ This has two purposes
- Make converters (importers) available to config models while loading them in just a single instance even when
there are multiple config models.
- Make third party models directly available to the container.
-
-TensorFlow depends on JNI code which necessitates using a separate bundle to achieve the above. \ No newline at end of file
diff --git a/model-integration/pom.xml b/model-integration/pom.xml
index dc3154c5c41..47ad6375491 100644
--- a/model-integration/pom.xml
+++ b/model-integration/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
@@ -60,14 +60,6 @@
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
</dependency>
- <dependency>
- <groupId>org.tensorflow</groupId>
- <artifactId>proto</artifactId>
- </dependency>
- <dependency>
- <groupId>org.tensorflow</groupId>
- <artifactId>tensorflow</artifactId>
- </dependency>
</dependencies>
<build>
<plugins>
@@ -106,29 +98,4 @@
</plugins>
</build>
- <profiles>
- <!-- Exclude TF JNI when building for rhel6, which needs a special, natively installed variant -->
- <profile>
- <id>rhel6</id>
- <activation>
- <property>
- <name>target.env</name>
- <value>rhel6</value>
- </property>
- </activation>
- <dependencies>
- <dependency>
- <groupId>org.tensorflow</groupId>
- <artifactId>tensorflow</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.tensorflow</groupId>
- <artifactId>libtensorflow_jni</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- </dependencies>
- </profile>
- </profiles>
-
</project>
diff --git a/model-integration/src/main/config/model-integration.xml b/model-integration/src/main/config/model-integration.xml
index 34f5f0ce31a..c7cd8e5a186 100644
--- a/model-integration/src/main/config/model-integration.xml
+++ b/model-integration/src/main/config/model-integration.xml
@@ -1,12 +1,13 @@
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!-- Component which can import some ml model.
This is included into the config server services.xml to enable it to translate
model pseudo features in ranking expressions during config model building.
+ The importers are order by the cost of their probing method, from cheap to expensive.
It is provided as separate bundles instead of being included in the config model
- because some of these (TensorFlow) includes
+ because some of these includes
JNI code, and so can only exist in one instance in the server. -->
+<component id="ai.vespa.rankingexpression.importer.vespa.VespaImporter" bundle="model-integration" />
<component id="ai.vespa.rankingexpression.importer.onnx.OnnxImporter" bundle="model-integration" />
<component id="ai.vespa.rankingexpression.importer.tensorflow.TensorFlowImporter" bundle="model-integration" />
<component id="ai.vespa.rankingexpression.importer.xgboost.XGBoostImporter" bundle="model-integration" />
<component id="ai.vespa.rankingexpression.importer.lightgbm.LightGBMImporter" bundle="model-integration" />
-<component id="ai.vespa.rankingexpression.importer.vespa.VespaImporter" bundle="model-integration" />
diff --git a/model-integration/src/main/java/ai/vespa/modelintegration/evaluator/OnnxEvaluator.java b/model-integration/src/main/java/ai/vespa/modelintegration/evaluator/OnnxEvaluator.java
index 59ad20b7714..87b964a2c56 100644
--- a/model-integration/src/main/java/ai/vespa/modelintegration/evaluator/OnnxEvaluator.java
+++ b/model-integration/src/main/java/ai/vespa/modelintegration/evaluator/OnnxEvaluator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.modelintegration.evaluator;
@@ -26,28 +26,41 @@ public class OnnxEvaluator {
private final OrtSession session;
public OnnxEvaluator(String modelPath) {
+ this(modelPath, null);
+ }
+
+ public OnnxEvaluator(String modelPath, OnnxEvaluatorOptions options) {
try {
+ if (options == null) {
+ options = new OnnxEvaluatorOptions();
+ }
environment = OrtEnvironment.getEnvironment();
- session = environment.createSession(modelPath, new OrtSession.SessionOptions());
+ session = environment.createSession(modelPath, options.getOptions());
} catch (OrtException e) {
throw new RuntimeException("ONNX Runtime exception", e);
}
}
public Tensor evaluate(Map<String, Tensor> inputs, String output) {
+ Map<String, OnnxTensor> onnxInputs = null;
try {
- Map<String, OnnxTensor> onnxInputs = TensorConverter.toOnnxTensors(inputs, environment, session);
+ onnxInputs = TensorConverter.toOnnxTensors(inputs, environment, session);
try (OrtSession.Result result = session.run(onnxInputs, Collections.singleton(output))) {
return TensorConverter.toVespaTensor(result.get(0));
}
} catch (OrtException e) {
throw new RuntimeException("ONNX Runtime exception", e);
+ } finally {
+ if (onnxInputs != null) {
+ onnxInputs.values().forEach(OnnxTensor::close);
+ }
}
}
public Map<String, Tensor> evaluate(Map<String, Tensor> inputs) {
+ Map<String, OnnxTensor> onnxInputs = null;
try {
- Map<String, OnnxTensor> onnxInputs = TensorConverter.toOnnxTensors(inputs, environment, session);
+ onnxInputs = TensorConverter.toOnnxTensors(inputs, environment, session);
Map<String, Tensor> outputs = new HashMap<>();
try (OrtSession.Result result = session.run(onnxInputs)) {
for (Map.Entry<String, OnnxValue> output : result) {
@@ -57,6 +70,10 @@ public class OnnxEvaluator {
}
} catch (OrtException e) {
throw new RuntimeException("ONNX Runtime exception", e);
+ } finally {
+ if (onnxInputs != null) {
+ onnxInputs.values().forEach(OnnxTensor::close);
+ }
}
}
diff --git a/model-integration/src/main/java/ai/vespa/modelintegration/evaluator/OnnxEvaluatorOptions.java b/model-integration/src/main/java/ai/vespa/modelintegration/evaluator/OnnxEvaluatorOptions.java
new file mode 100644
index 00000000000..8467040e5c0
--- /dev/null
+++ b/model-integration/src/main/java/ai/vespa/modelintegration/evaluator/OnnxEvaluatorOptions.java
@@ -0,0 +1,58 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+package ai.vespa.modelintegration.evaluator;
+
+import ai.onnxruntime.OrtEnvironment;
+import ai.onnxruntime.OrtException;
+import ai.onnxruntime.OrtSession;
+
+/**
+ * Session options for ONNX Runtime evaluation
+ *
+ * @author lesters
+ */
+public class OnnxEvaluatorOptions {
+
+ private OrtSession.SessionOptions.OptLevel optimizationLevel;
+ private OrtSession.SessionOptions.ExecutionMode executionMode;
+ private int interOpThreads;
+ private int intraOpThreads;
+
+ public OnnxEvaluatorOptions() {
+ // Defaults:
+ optimizationLevel = OrtSession.SessionOptions.OptLevel.ALL_OPT;
+ executionMode = OrtSession.SessionOptions.ExecutionMode.SEQUENTIAL;
+ interOpThreads = 1;
+ intraOpThreads = Math.max(1, (int) Math.ceil(((double) Runtime.getRuntime().availableProcessors()) / 4));
+ }
+
+ public OrtSession.SessionOptions getOptions() throws OrtException {
+ OrtSession.SessionOptions options = new OrtSession.SessionOptions();
+ options.setOptimizationLevel(optimizationLevel);
+ options.setExecutionMode(executionMode);
+ options.setInterOpNumThreads(interOpThreads);
+ options.setIntraOpNumThreads(intraOpThreads);
+ return options;
+ }
+
+ public void setExecutionMode(String mode) {
+ if ("parallel".equalsIgnoreCase(mode)) {
+ executionMode = OrtSession.SessionOptions.ExecutionMode.PARALLEL;
+ } else if ("sequential".equalsIgnoreCase(mode)) {
+ executionMode = OrtSession.SessionOptions.ExecutionMode.SEQUENTIAL;
+ }
+ }
+
+ public void setInterOpThreads(int threads) {
+ if (threads >= 0) {
+ interOpThreads = threads;
+ }
+ }
+
+ public void setIntraOpThreads(int threads) {
+ if (threads >= 0) {
+ intraOpThreads = threads;
+ }
+ }
+
+}
diff --git a/model-integration/src/main/java/ai/vespa/modelintegration/evaluator/TensorConverter.java b/model-integration/src/main/java/ai/vespa/modelintegration/evaluator/TensorConverter.java
index 68bebfa6183..9c79961eddf 100644
--- a/model-integration/src/main/java/ai/vespa/modelintegration/evaluator/TensorConverter.java
+++ b/model-integration/src/main/java/ai/vespa/modelintegration/evaluator/TensorConverter.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.modelintegration.evaluator;
diff --git a/model-integration/src/main/java/ai/vespa/modelintegration/evaluator/package-info.java b/model-integration/src/main/java/ai/vespa/modelintegration/evaluator/package-info.java
index e44ea96c534..5de13608288 100644
--- a/model-integration/src/main/java/ai/vespa/modelintegration/evaluator/package-info.java
+++ b/model-integration/src/main/java/ai/vespa/modelintegration/evaluator/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package ai.vespa.modelintegration.evaluator;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/DimensionRenamer.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/DimensionRenamer.java
index 11abd3d24d8..a1bc0eb0492 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/DimensionRenamer.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/DimensionRenamer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer;
import ai.vespa.rankingexpression.importer.operations.IntermediateOperation;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/ImportedModel.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/ImportedModel.java
index cf92cbc1e89..4e7710aa449 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/ImportedModel.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/ImportedModel.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer;
import com.google.common.collect.ImmutableMap;
@@ -13,7 +13,6 @@ import com.yahoo.tensor.TensorType;
import java.io.File;
import java.io.IOException;
-import java.io.StringReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/ImportedModels.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/ImportedModels.java
deleted file mode 100644
index fc576df0f09..00000000000
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/ImportedModels.java
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer;
-
-import com.yahoo.path.Path;
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
-
-// TODO: Remove this class after November 2018
-public class ImportedModels {
-
- /** All imported models, indexed by their names */
- private final Map<String, ImportedModel> importedModels;
-
- /** Create a null imported models */
- public ImportedModels() {
- importedModels = Collections.emptyMap();
- }
-
- public ImportedModels(File modelsDirectory, Collection<ModelImporter> importers) {
- Map<String, ImportedModel> models = new HashMap<>();
-
- // Find all subdirectories recursively which contains a model we can read
- importRecursively(modelsDirectory, models, importers);
- importedModels = Collections.unmodifiableMap(models);
- }
-
- /**
- * Returns the model at the given location in the application package.
- *
- * @param modelPath the path to this model (file or directory, depending on model type)
- * under the application package, both from the root or relative to the
- * models directory works
- * @return the model at this path or null if none
- */
- public ImportedModel get(File modelPath) {
- return importedModels.get(toName(modelPath));
- }
-
- /** Returns an immutable collection of all the imported models */
- public Collection<ImportedModel> all() {
- return importedModels.values();
- }
-
- private static void importRecursively(File dir,
- Map<String, ImportedModel> models,
- Collection<ModelImporter> importers) {
- if ( ! dir.isDirectory()) return;
-
- Arrays.stream(dir.listFiles()).sorted().forEach(child -> {
- Optional<ModelImporter> importer = findImporterOf(child, importers);
- if (importer.isPresent()) {
- String name = toName(child);
- ImportedModel existing = models.get(name);
- if (existing != null)
- throw new IllegalArgumentException("The models in " + child + " and " + existing.source() +
- " both resolve to the model name '" + name + "'");
- models.put(name, importer.get().importModel(name, child));
- }
- else {
- importRecursively(child, models, importers);
- }
- });
- }
-
- private static Optional<ModelImporter> findImporterOf(File path, Collection<ModelImporter> importers) {
- return importers.stream().filter(item -> item.canImport(path.toString())).findFirst();
- }
-
- private static String toName(File modelFile) {
- Path modelPath = Path.fromString(modelFile.toString());
- if (modelFile.isFile())
- modelPath = stripFileEnding(modelPath);
- String localPath = concatenateAfterModelsDirectory(modelPath);
- return localPath.replace('.', '_');
- }
-
- private static Path stripFileEnding(Path path) {
- int dotIndex = path.last().lastIndexOf(".");
- if (dotIndex <= 0) return path;
- return path.withLast(path.last().substring(0, dotIndex));
- }
-
- private static String concatenateAfterModelsDirectory(Path path) {
- boolean afterModels = false;
- StringBuilder result = new StringBuilder();
- for (String element : path.elements()) {
- if (afterModels) result.append(element).append("_");
- if (element.equals("models")) afterModels = true;
- }
- return result.substring(0, result.length()-1);
- }
-
-}
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/IntermediateGraph.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/IntermediateGraph.java
index ea981603481..69af749a2b7 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/IntermediateGraph.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/IntermediateGraph.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/ModelImporter.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/ModelImporter.java
index 3f87bfa0beb..b4b21d388b5 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/ModelImporter.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/ModelImporter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModel;
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 1cb8f3a2951..37f5ae9dd29 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
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/configmodelview/ImportedMlFunction.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/configmodelview/ImportedMlFunction.java
index 2367ac0a4c7..d532e5669af 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/configmodelview/ImportedMlFunction.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/configmodelview/ImportedMlFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.configmodelview;
import java.util.Collections;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/configmodelview/ImportedMlModel.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/configmodelview/ImportedMlModel.java
index b98dfa33320..b5be1c8e7b8 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/configmodelview/ImportedMlModel.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/configmodelview/ImportedMlModel.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.configmodelview;
import java.util.List;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/configmodelview/ImportedMlModels.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/configmodelview/ImportedMlModels.java
index 4039de85e31..367b840a728 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/configmodelview/ImportedMlModels.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/configmodelview/ImportedMlModels.java
@@ -1,6 +1,7 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.configmodelview;
+import com.yahoo.concurrent.InThreadExecutorService;
import com.yahoo.path.Path;
import java.io.File;
@@ -10,6 +11,10 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Future;
/**
* All models imported from the models/ directory in the application package.
@@ -24,18 +29,35 @@ public class ImportedMlModels {
private final Map<String, ImportedMlModel> importedModels;
/** Models that were not imported due to some error */
- private final Map<String, String> skippedModels = new HashMap<>();
+ private final Map<String, String> skippedModels = new ConcurrentHashMap<>();
/** Create a null imported models */
public ImportedMlModels() {
importedModels = Collections.emptyMap();
}
+ /** Will disappear shortly */
+ @Deprecated
public ImportedMlModels(File modelsDirectory, Collection<MlModelImporter> importers) {
- Map<String, ImportedMlModel> models = new HashMap<>();
+ this(modelsDirectory, new InThreadExecutorService(), importers);
+ }
+
+ public ImportedMlModels(File modelsDirectory, ExecutorService executor, Collection<MlModelImporter> importers) {
+ Map<String, Future<ImportedMlModel>> futureModels = new HashMap<>();
// Find all subdirectories recursively which contains a model we can read
- importRecursively(modelsDirectory, models, importers, skippedModels);
+ importRecursively(modelsDirectory, executor, futureModels, importers, skippedModels);
+ Map<String, ImportedMlModel> models = new HashMap<>();
+ futureModels.forEach((name, future) -> {
+ try {
+ ImportedMlModel model = future.get();
+ if (model != null) {
+ models.put(name, model);
+ }
+ } catch (InterruptedException | ExecutionException e) {
+ skippedModels.put(name, e.getMessage());
+ }
+ });
importedModels = Collections.unmodifiableMap(models);
}
@@ -61,7 +83,8 @@ public class ImportedMlModels {
}
private static void importRecursively(File dir,
- Map<String, ImportedMlModel> models,
+ ExecutorService executor,
+ Map<String, Future<ImportedMlModel>> models,
Collection<MlModelImporter> importers,
Map<String, String> skippedModels) {
if ( ! dir.isDirectory()) return;
@@ -70,19 +93,26 @@ public class ImportedMlModels {
Optional<MlModelImporter> importer = findImporterOf(child, importers);
if (importer.isPresent()) {
String name = toName(child);
- ImportedMlModel existing = models.get(name);
- if (existing != null)
- throw new IllegalArgumentException("The models in " + child + " and " + existing.source() +
- " both resolve to the model name '" + name + "'");
- try {
- ImportedMlModel importedModel = importer.get().importModel(name, child);
- models.put(name, importedModel);
- } catch (RuntimeException e) {
- skippedModels.put(name, e.getMessage());
+ Future<ImportedMlModel> existing = models.get(name);
+ if (existing != null) {
+ try {
+ throw new IllegalArgumentException("The models in " + child + " and " + existing.get().source() +
+ " both resolve to the model name '" + name + "'");
+ } catch (InterruptedException | ExecutionException e) {}
}
+
+ Future<ImportedMlModel> future = executor.submit(() -> {
+ try {
+ return importer.get().importModel(name, child);
+ } catch (RuntimeException e) {
+ skippedModels.put(name, e.getMessage());
+ }
+ return null;
+ });
+ models.put(name, future);
}
else {
- importRecursively(child, models, importers, skippedModels);
+ importRecursively(child, executor, models, importers, skippedModels);
}
});
}
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/lightgbm/LightGBMImporter.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/lightgbm/LightGBMImporter.java
index ef731730c84..76fcf8890c2 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/lightgbm/LightGBMImporter.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/lightgbm/LightGBMImporter.java
@@ -4,6 +4,8 @@ package ai.vespa.rankingexpression.importer.lightgbm;
import ai.vespa.rankingexpression.importer.ImportedModel;
import ai.vespa.rankingexpression.importer.ModelImporter;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModel;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
import com.yahoo.searchlib.rankingexpression.parser.ParseException;
@@ -18,6 +20,7 @@ import java.io.IOException;
*/
public class LightGBMImporter extends ModelImporter {
+ private final ObjectMapper objectMapper = new ObjectMapper();
@Override
public boolean canImport(String modelPath) {
File modelFile = new File(modelPath);
@@ -31,7 +34,14 @@ public class LightGBMImporter extends ModelImporter {
*/
private boolean probe(File modelFile) {
try {
- return new ObjectMapper().readTree(modelFile).has("tree_info");
+ JsonParser parser = objectMapper.createParser(modelFile);
+ while (parser.nextToken() != null) {
+ JsonToken token = parser.getCurrentToken();
+ if (token == JsonToken.FIELD_NAME) {
+ if ("tree_info".equals(parser.getCurrentName())) return true;
+ }
+ }
+ return false;
} catch (IOException e) {
throw new IllegalArgumentException("Could not read '" + modelFile + "'", e);
}
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/onnx/GraphImporter.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/onnx/GraphImporter.java
index 3d36b1bfffc..ec8c97bdf64 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/onnx/GraphImporter.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/onnx/GraphImporter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.onnx;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/onnx/OnnxImporter.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/onnx/OnnxImporter.java
index 8e4dd07fc73..144e3e6c03b 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/onnx/OnnxImporter.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/onnx/OnnxImporter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.onnx;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/onnx/TensorConverter.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/onnx/TensorConverter.java
index c8d7392bb8d..f12f60dcc8e 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/onnx/TensorConverter.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/onnx/TensorConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.onnx;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/onnx/TypeConverter.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/onnx/TypeConverter.java
index ef7038b1793..35ec1d8c54a 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/onnx/TypeConverter.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/onnx/TypeConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.onnx;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Argument.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Argument.java
index f68372ce4dd..e58b5341e6b 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Argument.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Argument.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.OrderedTensorType;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/ConcatV2.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/ConcatV2.java
index 7787caa83ce..9f3b15cddbd 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/ConcatV2.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/ConcatV2.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.OrderedTensorType;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Const.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Const.java
index bc883076b33..859702dec40 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Const.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Const.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import com.yahoo.searchlib.rankingexpression.Reference;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Constant.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Constant.java
index 8f6e2335b10..a381b2cb8a0 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Constant.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Constant.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.DimensionRenamer;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/ConstantOfShape.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/ConstantOfShape.java
index 887e350b430..c48e5592a56 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/ConstantOfShape.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/ConstantOfShape.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.DimensionRenamer;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Expand.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Expand.java
index 30a7bc3bbad..eda188b339f 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Expand.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Expand.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.DimensionRenamer;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/ExpandDims.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/ExpandDims.java
index e02f29a63f9..027532cd02d 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/ExpandDims.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/ExpandDims.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import com.yahoo.searchlib.rankingexpression.evaluation.DoubleValue;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Identity.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Identity.java
index af192fcec38..f096cb1e54f 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Identity.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Identity.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.OrderedTensorType;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/IntermediateOperation.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/IntermediateOperation.java
index a5244125d5a..6ebb478715a 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/IntermediateOperation.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/IntermediateOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Join.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Join.java
index 2ebc7c3ddf6..92b5f2e743b 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Join.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Join.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.OrderedTensorType;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Map.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Map.java
index ea39e289c48..1fd0f72f416 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Map.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Map.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.OrderedTensorType;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/MatMul.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/MatMul.java
index d326291a5a5..673df9be36b 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/MatMul.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/MatMul.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.DimensionRenamer;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Mean.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Mean.java
index 215edf88c4f..a4a47ca8ce7 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Mean.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Mean.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.OrderedTensorType;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Merge.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Merge.java
index 671cfe852a7..f208cc97d4f 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Merge.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Merge.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.OrderedTensorType;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/NoOp.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/NoOp.java
index 35d89cf6ab6..1d76fa3f0a7 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/NoOp.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/NoOp.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.OrderedTensorType;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/OnnxConstant.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/OnnxConstant.java
index 3c5ddf48cfc..79123cb0380 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/OnnxConstant.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/OnnxConstant.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.DimensionRenamer;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/PlaceholderWithDefault.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/PlaceholderWithDefault.java
index 177ef8d5e17..3456a24f5dd 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/PlaceholderWithDefault.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/PlaceholderWithDefault.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.OrderedTensorType;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Range.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Range.java
index 18018a1a73a..81a9e4996b4 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Range.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Range.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.DimensionRenamer;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Reshape.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Reshape.java
index 78eb5a0e7bb..57a43158c0d 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Reshape.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Reshape.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.OrderedTensorType;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Select.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Select.java
index 69283f10711..a189ff9c07c 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Select.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Select.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.DimensionRenamer;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Shape.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Shape.java
index 57175092b5c..28e0115810a 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Shape.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Shape.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.OrderedTensorType;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Split.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Split.java
index 3241732671d..2e586b38c71 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Split.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Split.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.OrderedTensorType;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Squeeze.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Squeeze.java
index 7ab01bf65c1..07110b9b966 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Squeeze.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Squeeze.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.DimensionRenamer;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Sum.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Sum.java
index c8cd235f50e..b8ca114343d 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Sum.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Sum.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.DimensionRenamer;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Switch.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Switch.java
index 4beafc68909..f41140075d1 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Switch.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Switch.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.OrderedTensorType;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Tile.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Tile.java
index a3c755bf1c0..7fe5e831391 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Tile.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Tile.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.OrderedTensorType;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Transpose.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Transpose.java
index 5e7bc1a1f36..add24e665e6 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Transpose.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Transpose.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.operations;
import ai.vespa.rankingexpression.importer.OrderedTensorType;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/AttributeConverter.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/AttributeConverter.java
deleted file mode 100644
index f2c6dfd9069..00000000000
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/AttributeConverter.java
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import com.yahoo.searchlib.rankingexpression.evaluation.BooleanValue;
-import com.yahoo.searchlib.rankingexpression.evaluation.DoubleValue;
-import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue;
-import com.yahoo.searchlib.rankingexpression.evaluation.Value;
-import ai.vespa.rankingexpression.importer.OrderedTensorType;
-import ai.vespa.rankingexpression.importer.operations.IntermediateOperation;
-import org.tensorflow.framework.AttrValue;
-import org.tensorflow.framework.NodeDef;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
-/**
- * Converts TensorFlow node attributes to Vespa attribute values.
- *
- * @author lesters
- */
-class AttributeConverter implements IntermediateOperation.AttributeMap {
-
- private final Map<String, AttrValue> attributeMap;
-
- private AttributeConverter(NodeDef node) {
- attributeMap = node.getAttrMap();
- }
-
- static AttributeConverter convert(NodeDef node) {
- return new AttributeConverter(node);
- }
-
- @Override
- public Optional<Value> get(String key) {
- if (attributeMap.containsKey(key)) {
- AttrValue attrValue = attributeMap.get(key);
- if (attrValue.getValueCase() == AttrValue.ValueCase.TENSOR) {
- return Optional.empty(); // requires type
- }
- if (attrValue.getValueCase() == AttrValue.ValueCase.B) {
- return Optional.of(new BooleanValue(attrValue.getB()));
- }
- if (attrValue.getValueCase() == AttrValue.ValueCase.I) {
- return Optional.of(new DoubleValue(attrValue.getI()));
- }
- if (attrValue.getValueCase() == AttrValue.ValueCase.F) {
- return Optional.of(new DoubleValue(attrValue.getF()));
- }
- }
- return Optional.empty();
- }
-
- @Override
- public Optional<Value> get(String key, OrderedTensorType type) {
- if (attributeMap.containsKey(key)) {
- AttrValue attrValue = attributeMap.get(key);
- if (attrValue.getValueCase() == AttrValue.ValueCase.TENSOR) {
- return Optional.of(new TensorValue(TensorConverter.toVespaTensor(attrValue.getTensor(), type)));
- }
- }
- return get(key);
- }
-
- @Override
- public Optional<List<Value>> getList(String key) {
- if (attributeMap.containsKey(key)) {
- AttrValue attrValue = attributeMap.get(key);
- if (attrValue.getValueCase() == AttrValue.ValueCase.LIST) {
- AttrValue.ListValue listValue = attrValue.getList();
- if ( ! listValue.getBList().isEmpty()) {
- return Optional.of(listValue.getBList().stream().map(BooleanValue::new).collect(Collectors.toList()));
- }
- if ( ! listValue.getIList().isEmpty()) {
- return Optional.of(listValue.getIList().stream().map(DoubleValue::new).collect(Collectors.toList()));
- }
- if ( ! listValue.getFList().isEmpty()) {
- return Optional.of(listValue.getFList().stream().map(DoubleValue::new).collect(Collectors.toList()));
- }
- // add the rest
- }
- }
- return Optional.empty();
- }
-
-}
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/GraphImporter.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/GraphImporter.java
deleted file mode 100644
index 0d2ba0cc714..00000000000
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/GraphImporter.java
+++ /dev/null
@@ -1,254 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.operations.Softmax;
-import ai.vespa.rankingexpression.importer.operations.Sum;
-import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue;
-import ai.vespa.rankingexpression.importer.IntermediateGraph;
-import ai.vespa.rankingexpression.importer.OrderedTensorType;
-import ai.vespa.rankingexpression.importer.operations.Argument;
-import ai.vespa.rankingexpression.importer.operations.ConcatV2;
-import ai.vespa.rankingexpression.importer.operations.Const;
-import ai.vespa.rankingexpression.importer.operations.Constant;
-import ai.vespa.rankingexpression.importer.operations.ExpandDims;
-import ai.vespa.rankingexpression.importer.operations.Identity;
-import ai.vespa.rankingexpression.importer.operations.IntermediateOperation;
-import ai.vespa.rankingexpression.importer.operations.Join;
-import ai.vespa.rankingexpression.importer.operations.Map;
-import ai.vespa.rankingexpression.importer.operations.MatMul;
-import ai.vespa.rankingexpression.importer.operations.Mean;
-import ai.vespa.rankingexpression.importer.operations.Merge;
-import ai.vespa.rankingexpression.importer.operations.NoOp;
-import ai.vespa.rankingexpression.importer.operations.PlaceholderWithDefault;
-import ai.vespa.rankingexpression.importer.operations.Reshape;
-import ai.vespa.rankingexpression.importer.operations.Select;
-import ai.vespa.rankingexpression.importer.operations.Shape;
-import ai.vespa.rankingexpression.importer.operations.Squeeze;
-import ai.vespa.rankingexpression.importer.operations.Switch;
-import com.yahoo.tensor.functions.ScalarFunctions;
-import org.tensorflow.SavedModelBundle;
-import org.tensorflow.Session;
-import org.tensorflow.framework.GraphDef;
-import org.tensorflow.framework.MetaGraphDef;
-import org.tensorflow.framework.NodeDef;
-import org.tensorflow.framework.SignatureDef;
-import org.tensorflow.framework.TensorInfo;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * Converts a TensorFlow graph to a Vespa IntermediateGraph which is the basis
- * for generating Vespa ranking expressions.
- *
- * @author lesters
- */
-class GraphImporter {
-
- private static IntermediateOperation mapOperation(NodeDef node,
- List<IntermediateOperation> inputs,
- IntermediateGraph graph) {
- String nodeName = node.getName();
- String modelName = graph.name();
- int nodePort = IntermediateOperation.indexPartOf(nodeName);
- OrderedTensorType nodeType = TypeConverter.typeFrom(node);
- AttributeConverter attributes = AttributeConverter.convert(node);
-
- switch (node.getOp().toLowerCase()) {
- // array ops
- case "concatv2": return new ConcatV2(modelName, nodeName, inputs);
- case "const": return new Const(modelName, nodeName, inputs, attributes, nodeType);
- case "expanddims": return new ExpandDims(modelName, nodeName, inputs);
- case "identity": return new Identity(modelName, nodeName, inputs);
- case "placeholder": return new Argument(modelName, nodeName, nodeType);
- case "placeholderwithdefault": return new PlaceholderWithDefault(modelName, nodeName, inputs);
- case "reshape": return new Reshape(modelName, nodeName, inputs, attributes);
- case "shape": return new Shape(modelName, nodeName, inputs);
- case "squeeze": return new Squeeze(modelName, nodeName, inputs, attributes);
-
- // control flow
- case "merge": return new Merge(modelName, nodeName, inputs);
- case "switch": return new Switch(modelName, nodeName, inputs, nodePort);
-
- // math ops
- case "abs": return new Map(modelName, nodeName, inputs, ScalarFunctions.abs());
- case "acos": return new Map(modelName, nodeName, inputs, ScalarFunctions.acos());
- case "add": return new Join(modelName, nodeName, inputs, ScalarFunctions.add());
- case "add_n": return new Join(modelName, nodeName, inputs, ScalarFunctions.add());
- case "asin": return new Map(modelName, nodeName, inputs, ScalarFunctions.asin());
- case "atan": return new Map(modelName, nodeName, inputs, ScalarFunctions.atan());
- case "ceil": return new Map(modelName, nodeName, inputs, ScalarFunctions.ceil());
- case "cos": return new Map(modelName, nodeName, inputs, ScalarFunctions.cos());
- case "div": return new Join(modelName, nodeName, inputs, ScalarFunctions.divide());
- case "exp": return new Map(modelName, nodeName, inputs, ScalarFunctions.exp());
- case "realdiv": return new Join(modelName, nodeName, inputs, ScalarFunctions.divide());
- case "floor": return new Map(modelName, nodeName, inputs, ScalarFunctions.floor());
- case "log": return new Map(modelName, nodeName, inputs, ScalarFunctions.log());
- case "matmul": return new MatMul(modelName, nodeName, inputs);
- case "maximum": return new Join(modelName, nodeName, inputs, ScalarFunctions.max());
- case "mean": return new Mean(modelName, nodeName, inputs, attributes);
- case "reducemean": return new Mean(modelName, nodeName, inputs, attributes);
- case "mul": return new Join(modelName, nodeName, inputs, ScalarFunctions.multiply());
- case "multiply": return new Join(modelName, nodeName, inputs, ScalarFunctions.multiply());
- case "negate": return new Map(modelName, nodeName, inputs, ScalarFunctions.neg());
- case "reciprocal": return new Map(modelName, nodeName, inputs, ScalarFunctions.reciprocal());
- case "rsqrt": return new Map(modelName, nodeName, inputs, ScalarFunctions.rsqrt());
- case "select": return new Select(modelName, nodeName, inputs);
- case "where3": return new Select(modelName, nodeName, inputs);
- case "sigmoid": return new Map(modelName, nodeName, inputs, ScalarFunctions.sigmoid());
- case "sin": return new Map(modelName, nodeName, inputs, ScalarFunctions.sin());
- case "squareddifference": return new Join(modelName, nodeName, inputs, ScalarFunctions.squareddifference());
- case "sub": return new Join(modelName, nodeName, inputs, ScalarFunctions.subtract());
- case "subtract": return new Join(modelName, nodeName, inputs, ScalarFunctions.subtract());
- case "sum": return new Sum(modelName, nodeName, inputs, attributes);
- case "square": return new Map(modelName, nodeName, inputs, ScalarFunctions.square());
- case "sqrt": return new Map(modelName, nodeName, inputs, ScalarFunctions.sqrt());
- case "tan": return new Map(modelName, nodeName, inputs, ScalarFunctions.tan());
- case "tanh": return new Map(modelName, nodeName, inputs, ScalarFunctions.tanh());
-
- // nn ops
- case "biasadd": return new Join(modelName, nodeName, inputs, ScalarFunctions.add());
- case "elu": return new Map(modelName, nodeName, inputs, ScalarFunctions.elu());
- case "relu": return new Map(modelName, nodeName, inputs, ScalarFunctions.relu());
- case "selu": return new Map(modelName, nodeName, inputs, ScalarFunctions.selu());
- case "softmax": return new Softmax(modelName, nodeName, inputs, attributes);
-
- // state ops
- case "variable": return new Constant(modelName, nodeName, nodeType);
- case "variablev2": return new Constant(modelName, nodeName, nodeType);
- case "varhandleop": return new Constant(modelName, nodeName, nodeType);
- case "readvariableop":return new Identity(modelName, nodeName, inputs);
-
- // evaluation no-ops
- case "stopgradient":return new Identity(modelName, nodeName, inputs);
- case "noop": return new NoOp(modelName, nodeName, inputs);
-
- }
-
- IntermediateOperation op = new NoOp(modelName, node.getName(), inputs);
- op.warning("Operation '" + node.getOp() + "' is currently not implemented");
- return op;
- }
-
- static IntermediateGraph importGraph(String modelName, SavedModelBundle bundle) throws IOException {
- MetaGraphDef tfGraph = MetaGraphDef.parseFrom(bundle.metaGraphDef());
-
- IntermediateGraph intermediateGraph = new IntermediateGraph(modelName);
- importSignatures(tfGraph, intermediateGraph);
- importOperations(tfGraph, intermediateGraph, bundle);
- verifyOutputTypes(tfGraph, intermediateGraph);
-
- return intermediateGraph;
- }
-
- private static void importSignatures(MetaGraphDef tfGraph, IntermediateGraph intermediateGraph) {
- for (java.util.Map.Entry<String, SignatureDef> signatureEntry : tfGraph.getSignatureDefMap().entrySet()) {
- String signatureName = signatureEntry.getKey();
- java.util.Map<String, TensorInfo> inputInfoMap = signatureEntry.getValue().getInputsMap();
- for (java.util.Map.Entry<String, TensorInfo> input : inputInfoMap.entrySet()) {
- String inputName = input.getKey();
- String nodeName = input.getValue().getName();
- intermediateGraph.inputs(signatureName).put(inputName, IntermediateOperation.namePartOf(nodeName));
- }
- java.util.Map<String, TensorInfo> outputInfoMap = signatureEntry.getValue().getOutputsMap();
- for (java.util.Map.Entry<String, TensorInfo> output : outputInfoMap.entrySet()) {
- String outputName = output.getKey();
- String nodeName = output.getValue().getName();
- intermediateGraph.outputs(signatureName).put(outputName, IntermediateOperation.namePartOf(nodeName));
- }
- }
- }
-
- private static void importOperations(MetaGraphDef tfGraph,
- IntermediateGraph intermediateGraph,
- SavedModelBundle bundle) {
- for (String signatureName : intermediateGraph.signatures()) {
- for (String outputName : intermediateGraph.outputs(signatureName).values()) {
- importOperation(outputName, tfGraph.getGraphDef(), intermediateGraph, bundle);
- }
- }
- }
-
- private static IntermediateOperation importOperation(String nodeName,
- GraphDef tfGraph,
- IntermediateGraph intermediateGraph,
- SavedModelBundle bundle) {
- if (intermediateGraph.alreadyImported(nodeName)) {
- return intermediateGraph.get(nodeName);
- }
- NodeDef node = getTensorFlowNodeFromGraph(IntermediateOperation.namePartOf(nodeName), tfGraph);
- List<IntermediateOperation> inputs = importOperationInputs(node, tfGraph, intermediateGraph, bundle);
- IntermediateOperation operation = mapOperation(node, inputs, intermediateGraph);
- intermediateGraph.put(nodeName, operation);
-
- List<IntermediateOperation> controlInputs = importControlInputs(node, tfGraph, intermediateGraph, bundle);
- if (controlInputs.size() > 0) {
- operation.setControlInputs(controlInputs);
- }
-
- if (operation.isConstant()) {
- operation.setConstantValueFunction(
- type -> new TensorValue(TensorConverter.toVespaTensor(readVariable(nodeName, bundle), type)));
- }
-
- return operation;
- }
-
- private static List<IntermediateOperation> importOperationInputs(NodeDef node,
- GraphDef tfGraph,
- IntermediateGraph intermediateGraph,
- SavedModelBundle bundle) {
- return node.getInputList().stream()
- .filter(name -> ! isControlDependency(name))
- .map(nodeName -> importOperation(nodeName, tfGraph, intermediateGraph, bundle))
- .collect(Collectors.toList());
- }
-
- private static List<IntermediateOperation> importControlInputs(NodeDef node,
- GraphDef tfGraph,
- IntermediateGraph intermediateGraph,
- SavedModelBundle bundle) {
- return node.getInputList().stream()
- .filter(nodeName -> isControlDependency(nodeName))
- .map(nodeName -> importOperation(nodeName, tfGraph, intermediateGraph, bundle))
- .collect(Collectors.toList());
- }
-
- private static boolean isControlDependency(String name) {
- return name.startsWith("^");
- }
-
- private static NodeDef getTensorFlowNodeFromGraph(String name, GraphDef tfGraph) {
- for (NodeDef node : tfGraph.getNodeList()) {
- if (node.getName().equals(name)) {
- return node;
- }
- }
- throw new IllegalArgumentException("Could not find node '" + name + "'");
- }
-
- static org.tensorflow.Tensor<?> readVariable(String name, SavedModelBundle bundle) {
- Session.Runner fetched = bundle.session().runner().fetch(name);
- List<org.tensorflow.Tensor<?>> importedTensors = fetched.run();
- if (importedTensors.size() != 1)
- throw new IllegalStateException("Expected 1 tensor from fetching " + name +
- ", but got " + importedTensors.size());
- return importedTensors.get(0);
- }
-
- private static void verifyOutputTypes(MetaGraphDef tfGraph, IntermediateGraph intermediateGraph) {
- for (String signatureName : intermediateGraph.signatures()) {
- for (String outputName : intermediateGraph.outputs(signatureName).values()) {
- IntermediateOperation operation = intermediateGraph.get(outputName);
- NodeDef node = getTensorFlowNodeFromGraph(IntermediateOperation.namePartOf(operation.name()), tfGraph.getGraphDef());
- OrderedTensorType type = operation.type().orElseThrow(
- () -> new IllegalArgumentException("Output of '" + outputName + "' has no type."));
- TypeConverter.verifyType(node, type);
- }
- }
-
- }
-
-}
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TensorConverter.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TensorConverter.java
deleted file mode 100644
index 95727acb5b4..00000000000
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TensorConverter.java
+++ /dev/null
@@ -1,238 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.OrderedTensorType;
-import com.yahoo.tensor.IndexedTensor;
-import com.yahoo.tensor.Tensor;
-import com.yahoo.tensor.TensorType;
-import org.tensorflow.framework.DataType;
-import org.tensorflow.framework.TensorProto;
-import org.tensorflow.framework.TensorShapeProto;
-
-import java.nio.ByteBuffer;
-import java.nio.DoubleBuffer;
-import java.nio.FloatBuffer;
-import java.nio.IntBuffer;
-import java.nio.LongBuffer;
-import java.util.List;
-
-/**
- * Converts TensorFlow tensors into Vespa tensors.
- *
- * @author bratseth
- * @author lesters
- */
-public class TensorConverter {
-
- public static Tensor toVespaTensor(org.tensorflow.Tensor<?> tfTensor) {
- return toVespaTensor(tfTensor, "d");
- }
-
- private static Tensor toVespaTensor(org.tensorflow.Tensor<?> tfTensor, String dimensionPrefix) {
- TensorType type = TypeConverter.typeFrom(tfTensor, dimensionPrefix);
- Values values = readValuesOf(tfTensor);
- IndexedTensor.BoundBuilder builder = (IndexedTensor.BoundBuilder)Tensor.Builder.of(type);
- for (int i = 0; i < values.size(); i++)
- builder.cellByDirectIndex(i, values.get(i));
- return builder.build();
- }
-
- static Tensor toVespaTensor(org.tensorflow.Tensor<?> tfTensor, OrderedTensorType type) {
- Values values = readValuesOf(tfTensor);
- IndexedTensor.BoundBuilder builder = (IndexedTensor.BoundBuilder) Tensor.Builder.of(type.type());
- for (int i = 0; i < values.size(); i++) {
- builder.cellByDirectIndex(type.toDirectIndex(i), values.get(i));
- }
- return builder.build();
- }
-
- static Tensor toVespaTensor(TensorProto tensorProto, OrderedTensorType type) {
- Values values = readValuesOf(tensorProto);
- if (values.size() == 0) { // Might be stored as "tensor_content" instead
- return toVespaTensor(readTensorContentOf(tensorProto), type);
- }
- IndexedTensor.BoundBuilder builder = (IndexedTensor.BoundBuilder)Tensor.Builder.of(type.type());
- for (int i = 0; i < values.size(); ++i)
- builder.cellByDirectIndex(i, values.get(i));
- return builder.build();
- }
-
- public static Long tensorSize(TensorType type) {
- Long size = 1L;
- for (TensorType.Dimension dimension : type.dimensions()) {
- size *= dimensionSize(dimension);
- }
- return size;
- }
-
- private static Long dimensionSize(TensorType.Dimension dim) {
- return dim.size().orElseThrow(() -> new IllegalArgumentException("Dimension has no size"));
- }
-
- private static Values readValuesOf(org.tensorflow.Tensor<?> tfTensor) {
- switch (tfTensor.dataType()) {
- case DOUBLE: return new DoubleValues(tfTensor);
- case FLOAT: return new FloatValues(tfTensor);
- case BOOL: return new BoolValues(tfTensor);
- case UINT8: return new IntValues(tfTensor);
- case INT32: return new IntValues(tfTensor);
- case INT64: return new LongValues(tfTensor);
- default: throw new IllegalArgumentException("Cannot convert a tensor with elements of type " +
- tfTensor.dataType() + " to a Vespa tensor");
- }
- }
-
- private static Values readValuesOf(TensorProto tensorProto) {
- switch (tensorProto.getDtype()) {
- case DT_BOOL: return new ProtoBoolValues(tensorProto);
- case DT_HALF: return new ProtoHalfValues(tensorProto);
- case DT_INT16: case DT_INT32: return new ProtoIntValues(tensorProto);
- case DT_INT64: return new ProtoInt64Values(tensorProto);
- case DT_FLOAT: return new ProtoFloatValues(tensorProto);
- case DT_DOUBLE: return new ProtoDoubleValues(tensorProto);
- default: throw new IllegalArgumentException("Unsupported data type in attribute tensor import");
- }
- }
-
- private static Class dataTypeToClass(DataType dataType) {
- switch (dataType) {
- case DT_BOOL: return Boolean.class;
- case DT_INT16: return Short.class;
- case DT_INT32: return Integer.class;
- case DT_INT64: return Long.class;
- case DT_HALF: return Float.class;
- case DT_FLOAT: return Float.class;
- case DT_DOUBLE: return Double.class;
- default: throw new IllegalArgumentException("Unsupported data type in attribute tensor import");
- }
- }
-
- private static org.tensorflow.Tensor readTensorContentOf(TensorProto tensorProto) {
- return org.tensorflow.Tensor.create(dataTypeToClass(tensorProto.getDtype()),
- asSizeArray(tensorProto.getTensorShape().getDimList()),
- tensorProto.getTensorContent().asReadOnlyByteBuffer());
- }
-
- private static long[] asSizeArray(List<TensorShapeProto.Dim> dimensions) {
- long[] sizes = new long[dimensions.size()];
- for (int i = 0; i < dimensions.size(); i++)
- sizes[i] = dimensions.get(i).getSize();
- return sizes;
- }
-
- /** Allows reading values from buffers of various numeric types as bytes */
- private static abstract class Values {
- abstract double get(int i);
- abstract int size();
- }
-
- private static abstract class TensorFlowValues extends Values {
- private final int size;
- TensorFlowValues(int size) {
- this.size = size;
- }
- @Override int size() { return this.size; }
- }
-
- private static class DoubleValues extends TensorFlowValues {
- private final DoubleBuffer values;
- DoubleValues(org.tensorflow.Tensor<?> tfTensor) {
- super(tfTensor.numElements());
- values = DoubleBuffer.allocate(tfTensor.numElements());
- tfTensor.writeTo(values);
- }
- @Override double get(int i) {
- return values.get(i);
- }
- }
-
- private static class FloatValues extends TensorFlowValues {
- private final FloatBuffer values;
- FloatValues(org.tensorflow.Tensor<?> tfTensor) {
- super(tfTensor.numElements());
- values = FloatBuffer.allocate(tfTensor.numElements());
- tfTensor.writeTo(values);
- }
- @Override double get(int i) {
- return values.get(i);
- }
- }
-
- private static class BoolValues extends TensorFlowValues {
- private final ByteBuffer values;
- BoolValues(org.tensorflow.Tensor<?> tfTensor) {
- super(tfTensor.numElements());
- values = ByteBuffer.allocate(tfTensor.numElements());
- tfTensor.writeTo(values);
- }
- @Override double get(int i) {
- return values.get(i);
- }
- }
-
- private static class IntValues extends TensorFlowValues {
- private final IntBuffer values;
- IntValues(org.tensorflow.Tensor<?> tfTensor) {
- super(tfTensor.numElements());
- values = IntBuffer.allocate(tfTensor.numElements());
- tfTensor.writeTo(values);
- }
- @Override double get(int i) {
- return values.get(i);
- }
- }
-
- private static class LongValues extends TensorFlowValues {
- private final LongBuffer values;
- LongValues(org.tensorflow.Tensor<?> tfTensor) {
- super(tfTensor.numElements());
- values = LongBuffer.allocate(tfTensor.numElements());
- tfTensor.writeTo(values);
- }
- @Override double get(int i) {
- return values.get(i);
- }
- }
-
- private static abstract class ProtoValues extends Values {
- final TensorProto tensorProto;
- ProtoValues(TensorProto tensorProto) { this.tensorProto = tensorProto; }
- }
-
- private static class ProtoBoolValues extends ProtoValues {
- ProtoBoolValues(TensorProto tensorProto) { super(tensorProto); }
- @Override double get(int i) { return tensorProto.getBoolVal(i) ? 1.0 : 0.0; }
- @Override int size() { return tensorProto.getBoolValCount(); }
- }
-
- private static class ProtoHalfValues extends ProtoValues {
- ProtoHalfValues(TensorProto tensorProto) { super(tensorProto); }
- @Override double get(int i) { return tensorProto.getHalfVal(i); }
- @Override int size() { return tensorProto.getHalfValCount(); }
- }
-
- private static class ProtoIntValues extends ProtoValues {
- ProtoIntValues(TensorProto tensorProto) { super(tensorProto); }
- @Override double get(int i) { return tensorProto.getIntVal(i); }
- @Override int size() { return tensorProto.getIntValCount(); }
- }
-
- private static class ProtoInt64Values extends ProtoValues {
- ProtoInt64Values(TensorProto tensorProto) { super(tensorProto); }
- @Override double get(int i) { return tensorProto.getInt64Val(i); }
- @Override int size() { return tensorProto.getInt64ValCount(); }
- }
-
- private static class ProtoFloatValues extends ProtoValues {
- ProtoFloatValues(TensorProto tensorProto) { super(tensorProto); }
- @Override double get(int i) { return tensorProto.getFloatVal(i); }
- @Override int size() { return tensorProto.getFloatValCount(); }
- }
-
- private static class ProtoDoubleValues extends ProtoValues {
- ProtoDoubleValues(TensorProto tensorProto) { super(tensorProto); }
- @Override double get(int i) { return tensorProto.getDoubleVal(i); }
- @Override int size() { return tensorProto.getDoubleValCount(); }
- }
-
-}
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TensorFlowImporter.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TensorFlowImporter.java
index 402c6562cc4..cb1dede26d9 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TensorFlowImporter.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TensorFlowImporter.java
@@ -1,15 +1,13 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.tensorflow;
import ai.vespa.rankingexpression.importer.ImportedModel;
-import ai.vespa.rankingexpression.importer.IntermediateGraph;
import ai.vespa.rankingexpression.importer.ModelImporter;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModel;
import ai.vespa.rankingexpression.importer.onnx.OnnxImporter;
import com.yahoo.collections.Pair;
import com.yahoo.io.IOUtils;
import com.yahoo.system.ProcessExecuter;
-import org.tensorflow.SavedModelBundle;
import java.io.File;
import java.io.IOException;
@@ -27,7 +25,7 @@ public class TensorFlowImporter extends ModelImporter {
private static final Logger log = Logger.getLogger(TensorFlowImporter.class.getName());
- private final static int[] onnxOpsetsToTry = {8, 10, 12};
+ private final static int[] onnxOpsetsToTry = {12, 10, 8};
private final OnnxImporter onnxImporter = new OnnxImporter();
@@ -56,17 +54,6 @@ public class TensorFlowImporter extends ModelImporter {
return convertToOnnxAndImport(modelName, modelDir);
}
- /** Imports a TensorFlow model - DEPRECATED */
- public ImportedModel importModel(String modelName, String modelDir, SavedModelBundle model) {
- try {
- IntermediateGraph graph = GraphImporter.importGraph(modelName, model);
- return convertIntermediateGraphToModel(graph, modelDir, ImportedMlModel.ModelType.TENSORFLOW);
- }
- catch (IOException e) {
- throw new IllegalArgumentException("Could not import TensorFlow model '" + model + "'", e);
- }
- }
-
private ImportedModel convertToOnnxAndImport(String modelName, String modelDir) {
Path tempDir = null;
try {
@@ -102,7 +89,8 @@ public class TensorFlowImporter extends ModelImporter {
private Pair<Integer, String> convertToOnnx(String savedModel, String output, int opset) throws IOException {
ProcessExecuter executer = new ProcessExecuter();
- String job = "vespa-convert-tf2onnx --saved-model " + savedModel + " --output " + output + " --opset " + opset;
+ String job = "vespa-convert-tf2onnx --saved-model " + savedModel + " --output " + output + " --opset " + opset
+ + " --use-graph-names"; // for backward compatibility with tf2onnx versions < 1.9.1
return executer.exec(job);
}
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TypeConverter.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TypeConverter.java
deleted file mode 100644
index 3102d5431d4..00000000000
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TypeConverter.java
+++ /dev/null
@@ -1,128 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.OrderedTensorType;
-import com.yahoo.tensor.TensorType;
-import org.tensorflow.framework.AttrValue;
-import org.tensorflow.framework.DataType;
-import org.tensorflow.framework.NodeDef;
-import org.tensorflow.framework.TensorShapeProto;
-
-/**
- * Converts and verifies TensorFlow tensor types into Vespa tensor types.
- *
- * @author lesters
- */
-class TypeConverter {
-
- static void verifyType(NodeDef node, OrderedTensorType type) {
- TensorShapeProto shape = tensorFlowShape(node);
- if (shape != null) {
- if (shape.getDimCount() != type.rank()) {
- throw new IllegalArgumentException("TensorFlow shape of '" + node.getName() + "' " +
- "does not match Vespa shape");
- }
- for (int tensorFlowIndex = 0; tensorFlowIndex < type.dimensions().size(); ++tensorFlowIndex) {
- int vespaIndex = type.dimensionMap(tensorFlowIndex);
- TensorShapeProto.Dim tensorFlowDimension = shape.getDim(tensorFlowIndex);
- TensorType.Dimension vespaDimension = type.type().dimensions().get(vespaIndex);
- if (tensorFlowDimension.getSize() != vespaDimension.size().orElse(-1L)) {
- throw new IllegalArgumentException("TensorFlow dimensions of '" + node.getName() + "' " +
- "does not match Vespa dimensions");
- }
- }
- }
- }
-
- static OrderedTensorType typeFrom(NodeDef node) {
- String dimensionPrefix = "d"; // standard naming convention: d0, d1, ...
- TensorShapeProto shape = tensorFlowShape(node);
- OrderedTensorType.Builder builder = new OrderedTensorType.Builder(toValueType(tensorFlowValueType(node)));
- for (int i = 0; i < shape.getDimCount(); ++ i) {
- String dimensionName = dimensionPrefix + i;
- TensorShapeProto.Dim tensorFlowDimension = shape.getDim(i);
- if (tensorFlowDimension.getSize() >= 0) {
- builder.add(TensorType.Dimension.indexed(dimensionName, tensorFlowDimension.getSize()));
- } else {
- builder.add(TensorType.Dimension.indexed(dimensionName));
- }
- }
- return builder.build();
- }
-
- static TensorType typeFrom(org.tensorflow.Tensor<?> tfTensor, String dimensionPrefix) {
- TensorType.Builder b = new TensorType.Builder(toValueType(tfTensor.dataType()));
- int dimensionIndex = 0;
- for (long dimensionSize : tfTensor.shape()) {
- if (dimensionSize == 0) dimensionSize = 1; // TensorFlow ...
- b.indexed(dimensionPrefix + (dimensionIndex++), dimensionSize);
- }
- return b.build();
- }
-
- private static TensorShapeProto tensorFlowShape(NodeDef node) {
- // Use specific shape if available...
- AttrValue attrShape = node.getAttrMap().get("shape");
- if (attrShape != null && attrShape.getValueCase() == AttrValue.ValueCase.SHAPE) {
- return attrShape.getShape();
- }
-
- // ... else use inferred shape
- AttrValue attrOutputShapes = node.getAttrMap().get("_output_shapes");
- if (attrOutputShapes == null)
- throw new IllegalArgumentException("_output_shapes attribute of '" + node.getName() + "' " +
- "does not exist");
- if (attrOutputShapes.getValueCase() != AttrValue.ValueCase.LIST)
- throw new IllegalArgumentException("_output_shapes attribute of '" + node.getName() + "' " +
- "is not of expected type");
-
- return attrOutputShapes.getList().getShape(0); // support multiple outputs?
- }
-
- private static DataType tensorFlowValueType(NodeDef node) {
- AttrValue attrValueList = node.getAttrMap().get("dtypes");
- if (attrValueList == null)
- return DataType.DT_DOUBLE; // default. This will usually (always?) be used. TODO: How can we do better?
- if (attrValueList.getValueCase() != AttrValue.ValueCase.LIST)
- return DataType.DT_DOUBLE; // default
-
- return attrValueList.getList().getType(0); // support multiple outputs?
- }
-
- private static TensorType.Value toValueType(DataType dataType) {
- switch (dataType) {
- case DT_FLOAT: return TensorType.Value.FLOAT;
- case DT_DOUBLE: return TensorType.Value.DOUBLE;
- // Imperfect conversion, for now:
- case DT_BOOL: return TensorType.Value.FLOAT;
- case DT_BFLOAT16: return TensorType.Value.FLOAT;
- case DT_HALF: return TensorType.Value.FLOAT;
- case DT_INT8: return TensorType.Value.FLOAT;
- case DT_INT16: return TensorType.Value.DOUBLE;
- case DT_INT32: return TensorType.Value.DOUBLE;
- case DT_INT64: return TensorType.Value.DOUBLE;
- case DT_UINT8: return TensorType.Value.FLOAT;
- case DT_UINT16: return TensorType.Value.DOUBLE;
- case DT_UINT32: return TensorType.Value.DOUBLE;
- case DT_UINT64: return TensorType.Value.DOUBLE;
- default: throw new IllegalArgumentException("A TensorFlow tensor with data type " + dataType +
- " cannot be converted to a Vespa tensor type");
- }
- }
-
- private static TensorType.Value toValueType(org.tensorflow.DataType dataType) {
- switch (dataType) {
- case FLOAT: return TensorType.Value.FLOAT;
- case DOUBLE: return TensorType.Value.DOUBLE;
- // Imperfect conversion, for now:
- case BOOL: return TensorType.Value.FLOAT;
- case INT32: return TensorType.Value.DOUBLE;
- case UINT8: return TensorType.Value.FLOAT;
- case INT64: return TensorType.Value.DOUBLE;
- default: throw new IllegalArgumentException("A TensorFlow tensor with data type " + dataType +
- " cannot be converted to a Vespa tensor type");
- }
- }
-
-}
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/VariableConverter.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/VariableConverter.java
deleted file mode 100644
index 85ae5238bae..00000000000
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/VariableConverter.java
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.OrderedTensorType;
-import com.yahoo.tensor.serialization.JsonFormat;
-import com.yahoo.yolean.Exceptions;
-import org.tensorflow.SavedModelBundle;
-
-import java.nio.charset.StandardCharsets;
-
-/**
- * Converts TensorFlow Variables to the Vespa document format.
- * Intended to be used from the command line to convert trained tensors to document form.
- *
- * @author bratseth
- */
-class VariableConverter {
-
- /**
- * Reads the tensor with the given TensorFlow name at the given model location,
- * and encodes it as UTF-8 Vespa document tensor JSON having the given ordered tensor type.
- * Note that order of dimensions in the tensor type does matter as the TensorFlow tensor
- * tensor dimensions are implicitly ordered.
- */
- static byte[] importVariable(String modelDir, String tensorFlowVariableName, String orderedTypeSpec) {
- try (SavedModelBundle bundle = SavedModelBundle.load(modelDir, "serve")) {
- return JsonFormat.encode(TensorConverter.toVespaTensor(GraphImporter.readVariable(tensorFlowVariableName,
- bundle),
- OrderedTensorType.fromSpec(orderedTypeSpec)));
- }
- catch (IllegalArgumentException e) {
- throw new IllegalArgumentException("Could not import TensorFlow model from directory '" + modelDir + "'", e);
- }
- }
-
- public static void main(String[] args) {
- if ( args.length != 3) {
- System.out.println("Converts a TensorFlow variable into Vespa tensor document field value JSON:");
- System.out.println("A JSON map containing a 'cells' array, see");
- System.out.println("https://docs.vespa.ai/en/reference/document-json-format.html#tensor");
- System.out.println("");
- System.out.println("Arguments: modelDirectory tensorFlowVariableName orderedTypeSpec");
- System.out.println(" - modelDirectory: The directory of the TensorFlow SavedModel");
- System.out.println(" - tensorFlowVariableName: The name of the TensorFlow variable to convert");
- System.out.println(" - orderedTypeSpec: The tensor type, e.g tensor(b[],a[10]), where dimensions are ");
- System.out.println(" ordered as given in the deployment log message starting by ");
- System.out.println(" 'Importing TensorFlow variable'");
- return;
- }
-
- try {
- System.out.println(new String(importVariable(args[0], args[1], args[2]), StandardCharsets.UTF_8));
- }
- catch (Exception e) {
- System.err.println("Import failed: " + Exceptions.toMessageString(e));
- }
- }
-
-}
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/xgboost/XGBoostImporter.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/xgboost/XGBoostImporter.java
index 5829ea77815..c176c5d293f 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/xgboost/XGBoostImporter.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/xgboost/XGBoostImporter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.xgboost;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModel;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/xgboost/XGBoostParser.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/xgboost/XGBoostParser.java
index c41a114a970..c149683d5e6 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/xgboost/XGBoostParser.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/xgboost/XGBoostParser.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.xgboost;
import java.io.File;
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/xgboost/XGBoostTree.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/xgboost/XGBoostTree.java
index e32e0f1eab5..0759aff5508 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/xgboost/XGBoostTree.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/xgboost/XGBoostTree.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.xgboost;
import java.util.List;
diff --git a/model-integration/src/main/java/org/tensorflow/package-info.java b/model-integration/src/main/java/org/tensorflow/package-info.java
deleted file mode 100644
index 237cb36a77a..00000000000
--- a/model-integration/src/main/java/org/tensorflow/package-info.java
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-@ExportPackage
-@PublicApi
-package org.tensorflow;
-
-import com.yahoo.api.annotations.PublicApi;
-import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/model-integration/src/main/python/vespa-convert-tf2onnx.py b/model-integration/src/main/python/vespa-convert-tf2onnx.py
index b349e7e9683..6ac33080bfb 100755
--- a/model-integration/src/main/python/vespa-convert-tf2onnx.py
+++ b/model-integration/src/main/python/vespa-convert-tf2onnx.py
@@ -1,5 +1,5 @@
#! /usr/bin/env python3
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from tf2onnx import convert
diff --git a/model-integration/src/test/java/ai/vespa/modelintegration/evaluator/OnnxEvaluatorTest.java b/model-integration/src/test/java/ai/vespa/modelintegration/evaluator/OnnxEvaluatorTest.java
index a7186aae5fe..4f8ea362467 100644
--- a/model-integration/src/test/java/ai/vespa/modelintegration/evaluator/OnnxEvaluatorTest.java
+++ b/model-integration/src/test/java/ai/vespa/modelintegration/evaluator/OnnxEvaluatorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.modelintegration.evaluator;
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/DimensionRenamerTest.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/DimensionRenamerTest.java
index 793258868ee..71bb309d541 100644
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/DimensionRenamerTest.java
+++ b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/DimensionRenamerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer;
import org.junit.Test;
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/OrderedTensorTypeTestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/OrderedTensorTypeTestCase.java
index 61f332327be..2c3fa8061f0 100644
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/OrderedTensorTypeTestCase.java
+++ b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/OrderedTensorTypeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer;
import org.junit.Test;
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/OnnxMnistSoftmaxImportTestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/OnnxMnistSoftmaxImportTestCase.java
index 96bf2c64485..b6b63912c52 100644
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/OnnxMnistSoftmaxImportTestCase.java
+++ b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/OnnxMnistSoftmaxImportTestCase.java
@@ -1,14 +1,8 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.rankingexpression.importer.onnx;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlFunction;
-import com.yahoo.searchlib.rankingexpression.ExpressionFunction;
-import com.yahoo.searchlib.rankingexpression.RankingExpression;
-import com.yahoo.searchlib.rankingexpression.evaluation.Context;
-import com.yahoo.searchlib.rankingexpression.evaluation.MapContext;
-import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue;
import ai.vespa.rankingexpression.importer.ImportedModel;
-import ai.vespa.rankingexpression.importer.tensorflow.TensorFlowImporter;
import com.yahoo.tensor.Tensor;
import com.yahoo.tensor.TensorType;
import org.junit.Test;
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/TestableModel.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/TestableModel.java
index c5355ebdf6f..fc9785f8cc0 100644
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/TestableModel.java
+++ b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/TestableModel.java
@@ -2,7 +2,6 @@
package ai.vespa.rankingexpression.importer.onnx;
import ai.vespa.rankingexpression.importer.ImportedModel;
-import ai.vespa.rankingexpression.importer.tensorflow.TensorConverter;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
import com.yahoo.searchlib.rankingexpression.evaluation.Context;
import com.yahoo.searchlib.rankingexpression.evaluation.ContextIndex;
@@ -14,16 +13,9 @@ import com.yahoo.searchlib.rankingexpression.rule.ExpressionNode;
import com.yahoo.searchlib.rankingexpression.rule.ReferenceNode;
import com.yahoo.tensor.Tensor;
import com.yahoo.tensor.TensorType;
-import org.tensorflow.SavedModelBundle;
-import org.tensorflow.Session;
-import java.nio.DoubleBuffer;
-import java.nio.FloatBuffer;
-import java.util.List;
import java.util.Map;
-import static org.junit.Assert.assertEquals;
-
public class TestableModel {
Tensor evaluateVespa(ImportedModel model, String operationName, Map<String, TensorType> inputs) {
@@ -39,38 +31,6 @@ public class TestableModel {
return expression.evaluate(context).asTensor();
}
- Tensor evaluateTF(SavedModelBundle tensorFlowModel, String operationName, Map<String, TensorType> inputs) {
- Session.Runner runner = tensorFlowModel.session().runner();
- for (Map.Entry<String, TensorType> entry : inputs.entrySet()) {
- try {
- runner.feed(entry.getKey(), tensorFlowFloatInputArgument(1, entry.getValue().dimensions().get(1).size().get().intValue()));
- } catch (Exception e) {
- runner.feed(entry.getKey(), tensorFlowDoubleInputArgument(1, entry.getValue().dimensions().get(1).size().get().intValue()));
- }
- }
- List<org.tensorflow.Tensor<?>> results = runner.fetch(operationName).run();
- assertEquals(1, results.size());
- return TensorConverter.toVespaTensor(results.get(0));
- }
-
- private org.tensorflow.Tensor<?> tensorFlowFloatInputArgument(int d0Size, int d1Size) {
- FloatBuffer fb1 = FloatBuffer.allocate(d0Size * d1Size);
- int i = 0;
- for (int d0 = 0; d0 < d0Size; d0++)
- for (int d1 = 0; d1 < d1Size; ++d1)
- fb1.put(i++, (float)(d1 * 1.0 / d1Size));
- return org.tensorflow.Tensor.create(new long[]{ d0Size, d1Size }, fb1);
- }
-
- private org.tensorflow.Tensor<?> tensorFlowDoubleInputArgument(int d0Size, int d1Size) {
- DoubleBuffer fb1 = DoubleBuffer.allocate(d0Size * d1Size);
- int i = 0;
- for (int d0 = 0; d0 < d0Size; d0++)
- for (int d1 = 0; d1 < d1Size; ++d1)
- fb1.put(i++, (float)(d1 * 1.0 / d1Size));
- return org.tensorflow.Tensor.create(new long[]{ d0Size, d1Size }, fb1);
- }
-
private Tensor vespaInputArgument(int d0Size, int d1Size) {
Tensor.Builder b = Tensor.Builder.of(new TensorType.Builder().indexed("d0", d0Size).indexed("d1", d1Size).build());
for (int d0 = 0; d0 < d0Size; d0++)
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/Tf2OnnxImportTestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/Tf2OnnxImportTestCase.java
deleted file mode 100644
index c7245fe53e8..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/Tf2OnnxImportTestCase.java
+++ /dev/null
@@ -1,153 +0,0 @@
-// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.onnx;
-
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import ai.vespa.rankingexpression.importer.tensorflow.TensorFlowImporter;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.yahoo.collections.Pair;
-import com.yahoo.system.ProcessExecuter;
-import com.yahoo.tensor.Tensor;
-import org.junit.Ignore;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
-import org.tensorflow.SavedModelBundle;
-
-import java.io.IOException;
-import java.nio.file.Paths;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Tries to convert a set of TensorFlow models to ONNX using the tf2onnx tool,
- * and asserts that the result when evaluated on TensorFlow, the imported
- * TensorFlow model and the imported ONNX model are equal.
- *
- * Requires the tf2onnx tool to be installed so the test itself should be ignored.
- *
- * @author lesters
- */
-public class Tf2OnnxImportTestCase extends TestableModel {
-
- @Rule
- public TemporaryFolder testFolder = new TemporaryFolder();
-
- @Test
- @Ignore
- public void testOnnxConversionAndImport() {
- Report report = new Report();
- for (int i = 1; i < 12; ++i) {
- testModelsWithOpset(report, i);
- }
- System.out.println(report);
- }
-
- private void testModelsWithOpset(Report report, int opset) {
- String [] models = {
- "tensorflow/mnist/saved/",
- "tensorflow/mnist_softmax/saved/",
- "tensorflow/9662/",
- "tensorflow/regression/test1/",
- "tensorflow/regression/test2/",
- "tensorflow/softmax/saved/",
- "tensorflow/blog/saved/",
- "tensorflow/batch_norm/saved/",
- "tensorflow/dropout/saved/",
- "tensorflow/external/Model_A/optimized_v2/",
- "tensorflow/external/Model_B/factorization_machine_v1/export/optimized/",
- "tensorflow/external/Model_B/factorization_machine_v1/export/standard/",
- "tensorflow/external/Model_C/factorization_machine_v1/export/optimized/",
- "tensorflow/external/Model_C/factorization_machine_v1/export/standard/",
- "tensorflow/external/modelv1/",
- "tensorflow/external/modelv2/"
- };
- for (String model : models) {
- try {
- testModelWithOpset(report, opset, "src/test/models/" + model);
- } catch (Exception e) {
- report.add(model, opset, false, "Exception: " + e.getMessage());
- }
- }
- }
-
- private boolean testModelWithOpset(Report report, int opset, String tfModel) throws IOException {
- String onnxModel = Paths.get(testFolder.getRoot().getAbsolutePath(), "converted.onnx").toString();
-
- var res = tf2onnxConvert(tfModel, onnxModel, opset);
- if (res.getFirst() != 0) {
- return reportAndFail(report, opset, tfModel, "tf2onnx conversion failed: " + res.getSecond());
- }
-
- SavedModelBundle tensorFlowModel = SavedModelBundle.load(tfModel, "serve");
- ImportedModel model = new TensorFlowImporter().importModel("test", tfModel, tensorFlowModel);
- ImportedModel onnxImportedModel = new OnnxImporter().importModel("test", onnxModel);
-
- if (model.signature("serving_default").skippedOutputs().size() > 0) {
- return reportAndFail(report, opset, tfModel, "Failed to import model from TensorFlow due to skipped outputs");
- }
- if (onnxImportedModel.signature("default").skippedOutputs().size() > 0) {
- return reportAndFail(report, opset, tfModel, "Failed to import model from ONNX due to skipped outputs");
- }
-
- ImportedModel.Signature sig = model.signatures().values().iterator().next();
- String output = sig.outputs().values().iterator().next();
- String onnxOutput = onnxImportedModel.signatures().values().iterator().next().outputs().values().iterator().next();
-
- Tensor tfResult = evaluateTF(tensorFlowModel, output, model.inputs());
- Tensor vespaResult = evaluateVespa(model, output, model.inputs());
- Tensor onnxResult = evaluateVespa(onnxImportedModel, onnxOutput, model.inputs());
-
- if ( ! tfResult.equals(vespaResult) ) {
- return reportAndFail(report, opset, tfModel, "Diff between tf and imported tf evaluation:\n\t" + tfResult + "\n\t" + vespaResult);
- }
- if ( ! vespaResult.equals(onnxResult) ) {
- return reportAndFail(report, opset, tfModel, "Diff between imported tf eval and onnx eval:\n\t" + vespaResult + "\n\t" + onnxResult);
- }
-
- return reportAndSucceed(report, opset, tfModel, "Ok");
- }
-
- private Pair<Integer, String> tf2onnxConvert(String savedModel, String output, int opset) throws IOException {
- ProcessExecuter executer = new ProcessExecuter();
- String job = "python3 -m tf2onnx.convert --saved-model " + savedModel + " --output " + output + " --opset " + opset;
- return executer.exec(job);
- }
-
- private static class Report {
- final ObjectMapper mapper = new ObjectMapper();
- final Map<String, ArrayNode> results = new HashMap<>();
-
- public boolean add(String model, int opset, boolean ok, String desc) {
- ObjectNode obj = mapper.createObjectNode().
- put("opset", opset).
- put("ok", ok).
- put("desc", desc);
- results.computeIfAbsent(model, r -> mapper.createArrayNode()).add(obj);
- return ok;
- }
-
- public String toString() {
- ArrayNode array = mapper.createArrayNode();
- results.forEach((key, value) -> array.add(mapper.createObjectNode().
- put("model", key).
- set("tests", value)));
- try {
- return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(array);
- } catch (JsonProcessingException e) {
- return e.getMessage();
- }
- }
- }
-
- private static boolean reportAndFail(Report report, int opset, String model, String desc) {
- return report.add(model, opset, false, desc);
- }
-
- private static boolean reportAndSucceed(Report report, int opset, String model, String desc) {
- return report.add(model, opset, true, desc);
- }
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BatchNormImportTestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BatchNormImportTestCase.java
deleted file mode 100644
index e75c7fd4da3..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BatchNormImportTestCase.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlFunction;
-import com.yahoo.searchlib.rankingexpression.ExpressionFunction;
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import org.junit.Test;
-
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-/**
- * @author lesters
- */
-public class BatchNormImportTestCase {
-
- @Test
- public void testBatchNormImport() {
- TestableTensorFlowModel model = new TestableTensorFlowModel("test",
- "src/test/models/tensorflow/batch_norm/saved");
- ImportedModel.Signature signature = model.get().signature("serving_default");
-
- assertEquals("Should have no skipped outputs",
- 0, model.get().signature("serving_default").skippedOutputs().size());
-
-
- // Test signature
- ImportedMlFunction function = signature.outputFunction("y", "y");
- assertNotNull(function);
- assertEquals("{X=tensor(d0[],d1[784])}", function.argumentTypes().toString());
-
- // Test outputs
- List<ImportedMlFunction> outputs = model.get().outputExpressions();
- assertEquals(1, outputs.size());
- assertEquals("serving_default.y", outputs.get(0).name());
- assertEquals("{X=tensor(d0[],d1[784])}", function.argumentTypes().toString());
- model.assertEqualResult("X", "dnn/batch_normalization_3/batchnorm/add_1");
- }
-
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BlogEvaluationBenchmark.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BlogEvaluationBenchmark.java
deleted file mode 100644
index 37104ab43db..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BlogEvaluationBenchmark.java
+++ /dev/null
@@ -1,116 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import com.yahoo.searchlib.rankingexpression.RankingExpression;
-import com.yahoo.searchlib.rankingexpression.evaluation.Context;
-import com.yahoo.searchlib.rankingexpression.evaluation.ContextIndex;
-import com.yahoo.searchlib.rankingexpression.evaluation.ExpressionOptimizer;
-import com.yahoo.searchlib.rankingexpression.evaluation.OptimizationReport;
-import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue;
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import com.yahoo.searchlib.rankingexpression.parser.ParseException;
-import com.yahoo.tensor.Tensor;
-import com.yahoo.tensor.TensorType;
-import org.tensorflow.SavedModelBundle;
-import org.tensorflow.Session;
-
-import java.nio.FloatBuffer;
-import java.util.List;
-
-/**
- * Microbenchmark of imported ML model evaluation.
- *
- * @author lesters
- */
-public class BlogEvaluationBenchmark {
-
- static final String modelDir = "src/test/models/tensorflow/blog/saved";
-
- public static void main(String[] args) throws ParseException {
- SavedModelBundle tensorFlowModel = SavedModelBundle.load(modelDir, "serve");
- ImportedModel model = new TensorFlowImporter().importModel("blog", modelDir, tensorFlowModel);
-
- Context context = TestableTensorFlowModel.contextFrom(model);
- Tensor u = generateInputTensor();
- Tensor d = generateInputTensor();
- context.put("input_u", new TensorValue(u));
- context.put("input_d", new TensorValue(d));
-
- // Parse the ranking expression from imported string to force primitive tensor functions.
- RankingExpression expression = new RankingExpression(model.expressions().get("y").getRoot().toString());
- benchmarkJava(expression, context, 20, 200);
-
- System.out.println("*** Optimizing expression ***");
- ExpressionOptimizer optimizer = new ExpressionOptimizer();
- OptimizationReport report = optimizer.optimize(expression, (ContextIndex)context);
- System.out.println(report.toString());
-
- benchmarkJava(expression, context, 2000, 20000);
- benchmarkTensorFlow(tensorFlowModel, 2000, 20000);
- }
-
- private static void benchmarkJava(RankingExpression expression, Context context, int warmup, int iterations) {
- System.out.println("*** Java evaluation - warmup ***");
- evaluate(expression, context, warmup);
- System.gc();
- System.out.println("*** Java evaluation - " + iterations + " iterations ***");
- double startTime = System.nanoTime();
- evaluate(expression, context, iterations);
- double endTime = System.nanoTime();
- System.out.println("Model evaluation time is " + ((endTime-startTime) / (1000*1000)) + " ms");
- System.out.println("Average model evaluation time is " + ((endTime-startTime) / (1000*1000)) / iterations + " ms");
- }
-
- private static double evaluate(RankingExpression expression, Context context, int iterations) {
- double result = 0;
- for (int i = 0 ; i < iterations; i++) {
- result = expression.evaluate(context).asTensor().sum().asDouble();
- }
- return result;
- }
-
- private static Tensor generateInputTensor() {
- Tensor.Builder b = Tensor.Builder.of(new TensorType.Builder().indexed("d0", 1).indexed("d1", 128).build());
- for (int d0 = 0; d0 < 1; d0++)
- for (int d1 = 0; d1 < 128; d1++)
- b.cell(d1 * 1.0 / 128, d0, d1);
- return b.build();
- }
-
- private static void benchmarkTensorFlow(SavedModelBundle tensorFlowModel, int warmup, int iterations) {
- org.tensorflow.Tensor<?> u = generateInputTensorFlow();
- org.tensorflow.Tensor<?> d = generateInputTensorFlow();
-
- System.out.println("*** TensorFlow evaluation - warmup ***");
- evaluateTensorflow(tensorFlowModel, u, d, warmup);
-
- System.gc();
- System.out.println("*** TensorFlow evaluation - " + iterations + " iterations ***");
- double startTime = System.nanoTime();
- evaluateTensorflow(tensorFlowModel, u, d, iterations);
- double endTime = System.nanoTime();
- System.out.println("Model evaluation time is " + ((endTime-startTime) / (1000*1000) + " ms"));
- System.out.println("Average model evaluation time is " + ((endTime-startTime) / (1000*1000)) / iterations + " ms");
- }
-
- private static double evaluateTensorflow(SavedModelBundle tensorFlowModel, org.tensorflow.Tensor<?> u, org.tensorflow.Tensor<?> d, int iterations) {
- double result = 0;
- for (int i = 0 ; i < iterations; i++) {
- Session.Runner runner = tensorFlowModel.session().runner();
- runner.feed("input_u", u);
- runner.feed("input_d", d);
- List<org.tensorflow.Tensor<?>> results = runner.fetch("y").run();
- result = TensorConverter.toVespaTensor(results.get(0)).sum().asDouble();
- }
- return result;
- }
-
- private static org.tensorflow.Tensor<?> generateInputTensorFlow() {
- FloatBuffer fb = FloatBuffer.allocate(1 * 128);
- for (int i = 0; i < 128; ++i) {
- fb.put(i, (float)(i * 1.0 / 128));
- }
- return org.tensorflow.Tensor.create(new long[]{ 1, 128 }, fb);
- }
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BlogEvaluationTestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BlogEvaluationTestCase.java
deleted file mode 100644
index 3a35efed2c0..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BlogEvaluationTestCase.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import org.junit.Test;
-import org.tensorflow.SavedModelBundle;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-/**
- * @author bratseth
- */
-public class BlogEvaluationTestCase {
-
- static final String modelDir = "src/test/models/tensorflow/blog/saved";
-
- @Test
- public void testImport() {
- SavedModelBundle tensorFlowModel = SavedModelBundle.load(modelDir, "serve");
- ImportedModel model = new TensorFlowImporter().importModel("blog", modelDir, tensorFlowModel);
-
- ImportedModel.Signature y = model.signature("serving_default.y");
- assertNotNull(y);
- assertEquals(0, y.inputs().size());
- }
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/DropoutImportTestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/DropoutImportTestCase.java
deleted file mode 100644
index 25f8acf1f6d..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/DropoutImportTestCase.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlFunction;
-import com.yahoo.searchlib.rankingexpression.ExpressionFunction;
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import com.yahoo.tensor.TensorType;
-import org.junit.Assert;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-/**
- * @author lesters
- */
-public class DropoutImportTestCase {
-
- @Test
- public void testDropoutImport() {
- TestableTensorFlowModel model = new TestableTensorFlowModel("test", "src/test/models/tensorflow/dropout/saved");
-
- // Check required functions
- Assert.assertEquals(1, model.get().inputs().size());
- assertTrue(model.get().inputs().containsKey("X"));
- Assert.assertEquals(new TensorType.Builder().indexed("d0").indexed("d1", 784).build(),
- model.get().inputs().get("X"));
-
- ImportedModel.Signature signature = model.get().signature("serving_default");
-
- Assert.assertEquals("Should have no skipped outputs",
- 0, model.get().signature("serving_default").skippedOutputs().size());
-
- ImportedMlFunction function = signature.outputFunction("y", "y");
- assertNotNull(function);
- assertEquals("join(join(reduce(constant(test_outputs_Const), sum, d1), imported_ml_function_test_outputs_BiasAdd, f(a,b)(a * b)), imported_ml_function_test_outputs_BiasAdd, f(a,b)(max(a,b)))",
- function.expression());
- model.assertEqualResult("X", "outputs/Maximum");
- assertEquals("{X=tensor(d0[],d1[784])}", function.argumentTypes().toString());
- }
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/Issue9662TestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/Issue9662TestCase.java
deleted file mode 100644
index 25b36535b50..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/Issue9662TestCase.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlFunction;
-import org.junit.Assert;
-import org.junit.Test;
-
-import static org.junit.Assert.assertNotNull;
-
-/**
- * @author bratseth
- */
-public class Issue9662TestCase {
-
- @Test
- public void testImporting() {
- TestableTensorFlowModel model = new TestableTensorFlowModel("test", "src/test/models/tensorflow/9662");
- ImportedModel.Signature signature = model.get().signature("serving_default");
- Assert.assertEquals("Should have no skipped outputs",
- 0, model.get().signature("serving_default").skippedOutputs().size());
-
- ImportedMlFunction output = signature.outputFunction("output", "output");
- assertNotNull(output);
- model.assertEqualResultSum("input_embedding_user_guid", "dense_out/Sigmoid", 0.0001);
- }
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/MnistImportTestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/MnistImportTestCase.java
deleted file mode 100644
index 56f31f6f788..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/MnistImportTestCase.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlFunction;
-import com.yahoo.searchlib.rankingexpression.ExpressionFunction;
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import org.junit.Assert;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-/**
- * @author bratseth
- */
-public class MnistImportTestCase {
-
- @Test
- public void testMnistImport() {
- TestableTensorFlowModel model = new TestableTensorFlowModel("test", "src/test/models/tensorflow/mnist/saved");
- ImportedModel.Signature signature = model.get().signature("serving_default");
- Assert.assertEquals("Should have no skipped outputs",
- 0, model.get().signature("serving_default").skippedOutputs().size());
-
- ImportedMlFunction output = signature.outputFunction("y", "y");
- assertNotNull(output);
- model.assertEqualResultSum("input", "dnn/outputs/add", 0.0001);
- }
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/RegressionTestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/RegressionTestCase.java
deleted file mode 100644
index 46ced6f42ad..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/RegressionTestCase.java
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import com.yahoo.tensor.Tensor;
-import com.yahoo.tensor.TensorType;
-import org.junit.Assert;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-/**
- * @author bratseth
- */
-public class RegressionTestCase {
-
- @Test
- public void testRegressionModel1() {
- TestableTensorFlowModel model = new TestableTensorFlowModel("test",
- "src/test/models/tensorflow/regression/test1",
- 14,
- 1536);
-
- // Check constants
- Assert.assertEquals(2, model.get().largeConstants().size());
-
- Tensor constant0 = Tensor.from(model.get().largeConstants().get("test_Variable_read"));
- assertNotNull(constant0);
- assertEquals(new TensorType.Builder().indexed("d2", 1536).indexed("d1", 14).build(),
- constant0.type());
- assertEquals(21504, constant0.size());
-
- Tensor constant1 = Tensor.from(model.get().largeConstants().get("test_Variable_1_read"));
- assertNotNull(constant1);
- assertEquals(new TensorType.Builder().indexed("d1", 14).build(), constant1.type());
- assertEquals(14, constant1.size());
-
- // Check (provided) functions
- Assert.assertEquals(0, model.get().functions().size());
-
- // Check signatures
- Assert.assertEquals(1, model.get().signatures().size());
- ImportedModel.Signature signature = model.get().signatures().get("serving_default");
- assertNotNull(signature);
-
- // Test execution
- model.assertEqualResult("input", "MatMul");
- model.assertEqualResult("input", "logits");
- model.assertEqualResult("input", "Sigmoid");
- model.assertEqualResult("input", "add");
- }
-
- @Test
- public void testRegressionModel2() {
- TestableTensorFlowModel model = new TestableTensorFlowModel("test",
- "src/test/models/tensorflow/regression/test2",
- 14,
- 1536,
- false);
-
- // Check constants
- Assert.assertEquals(2, model.get().largeConstants().size());
-
- // Check (provided) functions
- Assert.assertEquals(0, model.get().functions().size());
-
- // Check signatures
- Assert.assertEquals(1, model.get().signatures().size());
- ImportedModel.Signature signature = model.get().signatures().get("serving_default");
- assertNotNull(signature);
-
- // Test execution
- model.assertEqualResult("input", "MatMul");
- model.assertEqualResult("input", "add");
- model.assertEqualResult("input", "predict");
- }
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/SoftmaxImportTestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/SoftmaxImportTestCase.java
deleted file mode 100644
index 525f915b252..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/SoftmaxImportTestCase.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlFunction;
-import org.junit.Assert;
-import org.junit.Test;
-
-
-import static org.junit.Assert.assertNotNull;
-
-/**
- * @author lesters
- */
-public class SoftmaxImportTestCase {
-
- @Test
- public void testSoftmaxImport() {
- TestableTensorFlowModel model = new TestableTensorFlowModel("test", "src/test/models/tensorflow/softmax/saved", 1, 5);
- ImportedModel.Signature signature = model.get().signature("serving_default");
- Assert.assertEquals("Should have no skipped outputs",
- 0, model.get().signature("serving_default").skippedOutputs().size());
-
- ImportedMlFunction output = signature.outputFunction("y", "y");
- assertNotNull(output);
- model.assertEqualResult("input", "output");
- }
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/TensorFlowMnistSoftmaxImportTestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/TensorFlowMnistSoftmaxImportTestCase.java
deleted file mode 100644
index 50e24f20972..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/TensorFlowMnistSoftmaxImportTestCase.java
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlFunction;
-import com.yahoo.searchlib.rankingexpression.ExpressionFunction;
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import com.yahoo.tensor.Tensor;
-import com.yahoo.tensor.TensorType;
-import org.junit.Assert;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-/**
- * @author bratseth
- */
-public class TensorFlowMnistSoftmaxImportTestCase {
-
- @Test
- public void testMnistSoftmaxImport() {
- TestableTensorFlowModel model = new TestableTensorFlowModel("test", "src/test/models/tensorflow/mnist_softmax/saved");
-
- // Check constants
- Assert.assertEquals(2, model.get().largeConstants().size());
-
- Tensor constant0 = Tensor.from(model.get().largeConstants().get("test_Variable_read"));
- assertNotNull(constant0);
- assertEquals(new TensorType.Builder().indexed("d2", 784).indexed("d1", 10).build(),
- constant0.type());
- assertEquals(7840, constant0.size());
-
- Tensor constant1 = Tensor.from(model.get().largeConstants().get("test_Variable_1_read"));
- assertNotNull(constant1);
- assertEquals(new TensorType.Builder().indexed("d1", 10).build(),
- constant1.type());
- assertEquals(10, constant1.size());
-
- // Check (provided) functions
- Assert.assertEquals(0, model.get().functions().size());
-
- // Check required functions
- Assert.assertEquals(1, model.get().inputs().size());
- assertTrue(model.get().inputs().containsKey("Placeholder"));
- Assert.assertEquals(new TensorType.Builder().indexed("d0").indexed("d1", 784).build(),
- model.get().inputs().get("Placeholder"));
-
- // Check signatures
- Assert.assertEquals(1, model.get().signatures().size());
- ImportedModel.Signature signature = model.get().signatures().get("serving_default");
- assertNotNull(signature);
-
- // ... signature inputs
- assertEquals(1, signature.inputs().size());
- TensorType argument0 = signature.inputArgument("x");
- assertNotNull(argument0);
- assertEquals(new TensorType.Builder().indexed("d0").indexed("d1", 784).build(), argument0);
-
- // ... signature outputs
- assertEquals(1, signature.outputs().size());
- ImportedMlFunction output = signature.outputFunction("y", "y");
- assertNotNull(output);
- assertEquals("join(reduce(join(rename(Placeholder, (d0, d1), (d0, d2)), constant(test_Variable_read), f(a,b)(a * b)), sum, d2), constant(test_Variable_1_read), f(a,b)(a + b))",
- output.expression());
- assertEquals("{Placeholder=tensor(d0[],d1[784])}", output.argumentTypes().toString());
-
- // Test execution
- model.assertEqualResult("Placeholder", "MatMul");
- model.assertEqualResult("Placeholder", "add");
- }
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/TestableTensorFlowModel.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/TestableTensorFlowModel.java
deleted file mode 100644
index 41f343dbdaa..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/TestableTensorFlowModel.java
+++ /dev/null
@@ -1,173 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import com.yahoo.searchlib.rankingexpression.RankingExpression;
-import com.yahoo.searchlib.rankingexpression.evaluation.Context;
-import com.yahoo.searchlib.rankingexpression.evaluation.ContextIndex;
-import com.yahoo.searchlib.rankingexpression.evaluation.ExpressionOptimizer;
-import com.yahoo.searchlib.rankingexpression.evaluation.MapContext;
-import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue;
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import com.yahoo.searchlib.rankingexpression.rule.CompositeNode;
-import com.yahoo.searchlib.rankingexpression.rule.ExpressionNode;
-import com.yahoo.searchlib.rankingexpression.rule.ReferenceNode;
-import com.yahoo.tensor.Tensor;
-import com.yahoo.tensor.TensorType;
-import org.tensorflow.SavedModelBundle;
-import org.tensorflow.Session;
-
-import java.nio.DoubleBuffer;
-import java.nio.FloatBuffer;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * Helper for TensorFlow import tests: Imports a model and provides asserts on it.
- *
- * @author bratseth
- */
-public class TestableTensorFlowModel {
-
- private SavedModelBundle tensorFlowModel;
- private ImportedModel model;
-
- // Spec of the input vector
- private final boolean floatInput; // false: double
- private final int d0Size;
- private final int d1Size;
-
-
- public TestableTensorFlowModel(String modelName, String modelDir) {
- this(modelName, modelDir, 1, 784);
- }
-
- public TestableTensorFlowModel(String modelName, String modelDir, int d0Size, int d1Size) {
- this(modelName, modelDir, d0Size, d1Size, true);
- }
-
- public TestableTensorFlowModel(String modelName, String modelDir, int d0Size, int d1Size, boolean floatInput) {
- tensorFlowModel = SavedModelBundle.load(modelDir, "serve");
- model = new TensorFlowImporter().importModel(modelName, modelDir, tensorFlowModel);
- this.d0Size = d0Size;
- this.d1Size = d1Size;
- this.floatInput = floatInput;
- }
-
- public ImportedModel get() { return model; }
-
- /** Compare that computing the expressions produce the same result to within some tolerance delta */
- public void assertEqualResultSum(String inputName, String operationName, double delta) {
- Tensor tfResult = tensorFlowExecute(tensorFlowModel, inputName, operationName);
- Context context = contextFrom(model);
- Tensor placeholder = vespaInputArgument();
- context.put(inputName, new TensorValue(placeholder));
-
- model.functions().forEach((k, v) -> evaluateFunction(context, model, k));
-
- RankingExpression expression = model.expressions().get(operationName);
- ExpressionOptimizer optimizer = new ExpressionOptimizer();
- optimizer.optimize(expression, (ContextIndex)context);
-
- Tensor vespaResult = expression.evaluate(context).asTensor();
- assertEquals("Operation '" + operationName + "' produces equal results",
- tfResult.sum().asDouble(), vespaResult.sum().asDouble(), delta);
- }
-
- /** Compare tensors 100% exactly */
- public void assertEqualResult(String inputName, String operationName) {
- Tensor tfResult = tensorFlowExecute(tensorFlowModel, inputName, operationName);
- Context context = contextFrom(model);
- Tensor inputValue = vespaInputArgument();
- context.put(inputName, new TensorValue(inputValue));
-
- model.functions().forEach((k, v) -> evaluateFunction(context, model, k));
-
- RankingExpression expression = model.expressions().get(operationName);
- ExpressionOptimizer optimizer = new ExpressionOptimizer();
- optimizer.optimize(expression, (ContextIndex)context);
-
- Tensor vespaResult = expression.evaluate(context).asTensor();
- assertEquals("Operation '" + operationName + "': Actual value from Vespa equals expected value from TensorFlow",
- tfResult, vespaResult);
- }
-
- private Tensor tensorFlowExecute(SavedModelBundle model, String inputName, String operationName) {
- Session.Runner runner = model.session().runner();
- org.tensorflow.Tensor<?> input = floatInput ? tensorFlowFloatInputArgument() : tensorFlowDoubleInputArgument();
- runner.feed(inputName, input);
- List<org.tensorflow.Tensor<?>> results = runner.fetch(operationName).run();
- assertEquals(1, results.size());
- return TensorConverter.toVespaTensor(results.get(0));
- }
-
- static Context contextFrom(ImportedModel result) {
- TestableModelContext context = new TestableModelContext();
- result.largeConstants().forEach((name, tensor) -> context.put("constant(" + name + ")", new TensorValue(Tensor.from(tensor))));
- result.smallConstants().forEach((name, tensor) -> context.put("constant(" + name + ")", new TensorValue(Tensor.from(tensor))));
- return context;
- }
-
- /** Must be the same as vespaInputArgument() */
- private org.tensorflow.Tensor<?> tensorFlowDoubleInputArgument() {
- DoubleBuffer fb = DoubleBuffer.allocate(d0Size * d1Size);
- int i = 0;
- for (int d0 = 0; d0 < d0Size; d0++)
- for (int d1 = 0; d1 < d1Size; ++d1)
- fb.put(i++, (d1 * 1.0 / d1Size));
- return org.tensorflow.Tensor.create(new long[]{ d0Size, d1Size }, fb);
- }
-
- /** Must be the same as vespaInputArgument() */
- private org.tensorflow.Tensor<?> tensorFlowFloatInputArgument() {
- FloatBuffer fb = FloatBuffer.allocate(d0Size * d1Size);
- int i = 0;
- for (int d0 = 0; d0 < d0Size; d0++)
- for (int d1 = 0; d1 < d1Size; ++d1)
- fb.put(i++, (float)(d1 * 1.0 / d1Size));
- return org.tensorflow.Tensor.create(new long[]{ d0Size, d1Size }, fb);
- }
-
- /** Must be the same as tensorFlowFloatInputArgument() */
- private Tensor vespaInputArgument() {
- Tensor.Builder b = Tensor.Builder.of(new TensorType.Builder().indexed("d0", d0Size).indexed("d1", d1Size).build());
- for (int d0 = 0; d0 < d0Size; d0++)
- for (int d1 = 0; d1 < d1Size; d1++)
- b.cell(d1 * 1.0 / d1Size, d0, d1);
- return b.build();
- }
-
- private void evaluateFunction(Context context, ImportedModel model, String functionName) {
- if (!context.names().contains(functionName)) {
- RankingExpression e = RankingExpression.from(model.functions().get(functionName));
- evaluateFunctionDependencies(context, model, e.getRoot());
- context.put(functionName, new TensorValue(e.evaluate(context).asTensor()));
- }
- }
-
- private void evaluateFunctionDependencies(Context context, ImportedModel model, ExpressionNode node) {
- if (node instanceof ReferenceNode) {
- String name = node.toString();
- if (model.functions().containsKey(name)) {
- evaluateFunction(context, model, name);
- }
- }
- else if (node instanceof CompositeNode) {
- for (ExpressionNode child : ((CompositeNode)node).children()) {
- evaluateFunctionDependencies(context, model, child);
- }
- }
- }
-
- private static class TestableModelContext extends MapContext implements ContextIndex {
- @Override
- public int size() {
- return bindings().size();
- }
- @Override
- public int getIndex(String name) {
- throw new UnsupportedOperationException(this + " does not support index lookup by name");
- }
- }
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/Tf2OnnxImportTestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/Tf2OnnxImportTestCase.java
deleted file mode 100644
index 0510a433dd9..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/Tf2OnnxImportTestCase.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import com.yahoo.searchlib.rankingexpression.RankingExpression;
-import com.yahoo.searchlib.rankingexpression.evaluation.Context;
-import com.yahoo.searchlib.rankingexpression.evaluation.MapContext;
-import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue;
-import com.yahoo.tensor.Tensor;
-import com.yahoo.tensor.TensorType;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * @author lesters
- */
-public class Tf2OnnxImportTestCase {
-
- @Ignore // Ignored because conversion requires python tf2onnx dependencies - tested in system test
- @Test
- public void testConversionFromTensorFlowToOnnx() {
- String modelPath = "src/test/models/tensorflow/mnist_softmax/saved";
- String modelPathToConvert = "src/test/models/tensorflow/mnist_softmax/tf_2_onnx";
-
- Tensor argument = placeholderArgument();
- Tensor tensorFlowResult = evaluateTensorFlowModel(modelPath, argument, "Placeholder", "add");
- Tensor tf2OnnxResult = evaluateTensorFlowModel(modelPathToConvert, argument, "Placeholder", "add");
-
- assertEquals("Operation 'add' produces equal results", tensorFlowResult, tf2OnnxResult);
- }
-
- private Tensor evaluateTensorFlowModel(String path, Tensor argument, String input, String output) {
- ImportedModel model = new TensorFlowImporter().importModel("test", path);
- String outputExpr = model.signatures().values().iterator().next().outputs().values().iterator().next();
- return evaluateExpression(model.expressions().get(outputExpr), contextFrom(model), argument, input);
- }
-
- private Tensor evaluateExpression(RankingExpression expression, Context context, Tensor argument, String input) {
- context.put(input, new TensorValue(argument));
- return expression.evaluate(context).asTensor();
- }
-
- private Context contextFrom(ImportedModel result) {
- MapContext context = new MapContext();
- result.largeConstants().forEach((name, tensor) -> context.put("constant(" + name + ")", new TensorValue(Tensor.from(tensor))));
- result.smallConstants().forEach((name, tensor) -> context.put("constant(" + name + ")", new TensorValue(Tensor.from(tensor))));
- return context;
- }
-
- private Tensor placeholderArgument() {
- Tensor.Builder b = Tensor.Builder.of(new TensorType.Builder().indexed("d0", 1).indexed("d1", 784).build());
- for (int d0 = 0; d0 < 1; d0++)
- for (int d1 = 0; d1 < 784; d1++)
- b.cell(d1 * 1.0 / 784, d0, d1);
- return b.build();
- }
-
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/VariableConverterTestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/VariableConverterTestCase.java
deleted file mode 100644
index c9fffe143b4..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/VariableConverterTestCase.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import org.junit.Test;
-
-import java.nio.charset.StandardCharsets;
-
-import static org.junit.Assert.assertEquals;
-
-public class VariableConverterTestCase {
-
- @Test
- public void testConversion() {
- byte[] converted = VariableConverter.importVariable("src/test/models/tensorflow/mnist_softmax/saved",
- "Variable_1",
- "tensor(d0[10],d1[1])");
- assertEquals("{\"cells\":[{\"address\":{\"d0\":\"0\",\"d1\":\"0\"},\"value\":-0.3546536862850189},{\"address\":{\"d0\":\"1\",\"d1\":\"0\"},\"value\":0.3759574592113495},{\"address\":{\"d0\":\"2\",\"d1\":\"0\"},\"value\":0.06054411828517914},{\"address\":{\"d0\":\"3\",\"d1\":\"0\"},\"value\":-0.251544713973999},{\"address\":{\"d0\":\"4\",\"d1\":\"0\"},\"value\":0.017951013520359993},{\"address\":{\"d0\":\"5\",\"d1\":\"0\"},\"value\":1.2899067401885986},{\"address\":{\"d0\":\"6\",\"d1\":\"0\"},\"value\":-0.10389615595340729},{\"address\":{\"d0\":\"7\",\"d1\":\"0\"},\"value\":0.6367976665496826},{\"address\":{\"d0\":\"8\",\"d1\":\"0\"},\"value\":-1.4136744737625122},{\"address\":{\"d0\":\"9\",\"d1\":\"0\"},\"value\":-0.2573896050453186}]}",
- new String(converted, StandardCharsets.UTF_8));
- }
-
-}
diff --git a/model-integration/src/test/models/lightgbm/train_lightgbm_classification.py b/model-integration/src/test/models/lightgbm/train_lightgbm_classification.py
index 740059824b1..f4e5e30e1f0 100755
--- a/model-integration/src/test/models/lightgbm/train_lightgbm_classification.py
+++ b/model-integration/src/test/models/lightgbm/train_lightgbm_classification.py
@@ -1,5 +1,5 @@
#! /usr/bin/env python3
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# coding: utf-8
import json
diff --git a/model-integration/src/test/models/lightgbm/train_lightgbm_regression.py b/model-integration/src/test/models/lightgbm/train_lightgbm_regression.py
index e4a634236f1..3c2fe84edac 100755
--- a/model-integration/src/test/models/lightgbm/train_lightgbm_regression.py
+++ b/model-integration/src/test/models/lightgbm/train_lightgbm_regression.py
@@ -1,5 +1,5 @@
#! /usr/bin/env python3
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# coding: utf-8
import json
diff --git a/model-integration/src/test/models/onnx/add_double.py b/model-integration/src/test/models/onnx/add_double.py
index fa9aa48f4b2..6ded565b880 100755
--- a/model-integration/src/test/models/onnx/add_double.py
+++ b/model-integration/src/test/models/onnx/add_double.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/model-integration/src/test/models/onnx/add_float.py b/model-integration/src/test/models/onnx/add_float.py
index e18b2c46d9d..2549b2c762d 100755
--- a/model-integration/src/test/models/onnx/add_float.py
+++ b/model-integration/src/test/models/onnx/add_float.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/model-integration/src/test/models/onnx/add_int64.py b/model-integration/src/test/models/onnx/add_int64.py
index 87908e292a2..f865b4ed2ea 100755
--- a/model-integration/src/test/models/onnx/add_int64.py
+++ b/model-integration/src/test/models/onnx/add_int64.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/model-integration/src/test/models/onnx/cast_bfloat16_float.py b/model-integration/src/test/models/onnx/cast_bfloat16_float.py
index 14b05347262..e7bb2a986a7 100755
--- a/model-integration/src/test/models/onnx/cast_bfloat16_float.py
+++ b/model-integration/src/test/models/onnx/cast_bfloat16_float.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/model-integration/src/test/models/onnx/cast_float_int8.py b/model-integration/src/test/models/onnx/cast_float_int8.py
index bdc0850d033..ab6054587d6 100755
--- a/model-integration/src/test/models/onnx/cast_float_int8.py
+++ b/model-integration/src/test/models/onnx/cast_float_int8.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/model-integration/src/test/models/onnx/cast_int8_float.py b/model-integration/src/test/models/onnx/cast_int8_float.py
index 70bf2cf70ca..dfd3fb8db80 100755
--- a/model-integration/src/test/models/onnx/cast_int8_float.py
+++ b/model-integration/src/test/models/onnx/cast_int8_float.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/model-integration/src/test/models/onnx/pytorch/pytorch_one_layer.py b/model-integration/src/test/models/onnx/pytorch/pytorch_one_layer.py
index 1296d84e180..3975c5ca34e 100755
--- a/model-integration/src/test/models/onnx/pytorch/pytorch_one_layer.py
+++ b/model-integration/src/test/models/onnx/pytorch/pytorch_one_layer.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import torch
import torch.onnx
diff --git a/model-integration/src/test/models/onnx/simple/concat.py b/model-integration/src/test/models/onnx/simple/concat.py
index 186002c2abb..ca79f77a469 100755
--- a/model-integration/src/test/models/onnx/simple/concat.py
+++ b/model-integration/src/test/models/onnx/simple/concat.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/model-integration/src/test/models/tensorflow/9662/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/9662/saved_model.pbtxt
deleted file mode 100644
index 83c601edfc0..00000000000
--- a/model-integration/src/test/models/tensorflow/9662/saved_model.pbtxt
+++ /dev/null
@@ -1,1318 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Add"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "BiasAdd"
- input_arg {
- name: "value"
- type_attr: "T"
- }
- input_arg {
- name: "bias"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "data_format"
- type: "string"
- default_value {
- s: "NHWC"
- }
- allowed_values {
- list {
- s: "NHWC"
- s: "NCHW"
- }
- }
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "ExpandDims"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "dim"
- type_attr: "Tdim"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tdim"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Maximum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Placeholder"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- default_value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- op {
- name: "PlaceholderWithDefault"
- input_arg {
- name: "input"
- type_attr: "dtype"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- }
- }
- op {
- name: "Rsqrt"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Sigmoid"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Square"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Sub"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Sum"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- }
- tags: "serve"
- tensorflow_version: "1.13.1"
- tensorflow_git_version: "b\'v1.13.1-0-g6612da8951\'"
- }
- graph_def {
- node {
- name: "keras_learning_phase/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_BOOL
- tensor_shape {
- }
- bool_val: false
- }
- }
- }
- }
- node {
- name: "keras_learning_phase"
- op: "PlaceholderWithDefault"
- input: "keras_learning_phase/input"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "Dot/l2_normalize/Maximum/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 9.999999960041972e-13
- }
- }
- }
- }
- node {
- name: "Dot/l2_normalize/Sum/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dense_out/kernel"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- float_val: 0.1835838258266449
- }
- }
- }
- }
- node {
- name: "input_embedding_user_guid"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- node {
- name: "Dot/l2_normalize_1/Square"
- op: "Square"
- input: "input_embedding_user_guid"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "Dot/l2_normalize/Sum"
- op: "Sum"
- input: "Dot/l2_normalize_1/Square"
- input: "Dot/l2_normalize/Sum/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "Dot/l2_normalize/Maximum"
- op: "Maximum"
- input: "Dot/l2_normalize/Sum"
- input: "Dot/l2_normalize/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "Dot/l2_normalize_1/Rsqrt"
- op: "Rsqrt"
- input: "Dot/l2_normalize/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "Dot/l2_normalize_1"
- op: "Mul"
- input: "input_embedding_user_guid"
- input: "Dot/l2_normalize_1/Rsqrt"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "Dot/Mul"
- op: "Mul"
- input: "Dot/l2_normalize_1"
- input: "Dot/l2_normalize_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "Dot/Sum"
- op: "Sum"
- input: "Dot/Mul"
- input: "Dot/l2_normalize/Sum/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "batch_normalization_v1/moving_variance"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "Dot/ExpandDims"
- op: "ExpandDims"
- input: "Dot/Sum"
- input: "Dot/l2_normalize/Sum/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_v1/moving_mean"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "batch_normalization_v1/batchnorm/add/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0010000000474974513
- }
- }
- }
- }
- node {
- name: "batch_normalization_v1/batchnorm/add"
- op: "Add"
- input: "batch_normalization_v1/moving_variance"
- input: "batch_normalization_v1/batchnorm/add/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_v1/batchnorm/Rsqrt"
- op: "Rsqrt"
- input: "batch_normalization_v1/batchnorm/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_v1/batchnorm/mul"
- op: "Mul"
- input: "batch_normalization_v1/batchnorm/Rsqrt"
- input: "batch_normalization_v1/moving_variance"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_v1/batchnorm/mul_1"
- op: "Mul"
- input: "Dot/ExpandDims"
- input: "batch_normalization_v1/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_v1/batchnorm/mul_2"
- op: "Mul"
- input: "batch_normalization_v1/moving_mean"
- input: "batch_normalization_v1/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_v1/batchnorm/sub"
- op: "Sub"
- input: "batch_normalization_v1/moving_mean"
- input: "batch_normalization_v1/batchnorm/mul_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_v1/batchnorm/add_1"
- op: "Add"
- input: "batch_normalization_v1/batchnorm/mul_1"
- input: "batch_normalization_v1/batchnorm/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dense_out/MatMul"
- op: "MatMul"
- input: "batch_normalization_v1/batchnorm/add_1"
- input: "dense_out/kernel"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "dense_out/BiasAdd"
- op: "BiasAdd"
- input: "dense_out/MatMul"
- input: "batch_normalization_v1/moving_mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "data_format"
- value {
- s: "NHWC"
- }
- }
- }
- node {
- name: "dense_out/Sigmoid"
- op: "Sigmoid"
- input: "dense_out/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- versions {
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "input_embedding_user_guid"
- value {
- name: "input_embedding_user_guid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- outputs {
- key: "output"
- value {
- name: "dense_out/Sigmoid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/batch_norm/batch_normalization_mnist.py b/model-integration/src/test/models/tensorflow/batch_norm/batch_normalization_mnist.py
deleted file mode 100644
index bc6ea13ebc1..00000000000
--- a/model-integration/src/test/models/tensorflow/batch_norm/batch_normalization_mnist.py
+++ /dev/null
@@ -1,95 +0,0 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-import tensorflow as tf
-
-from functools import partial
-from tensorflow.examples.tutorials.mnist import input_data
-from datetime import datetime
-
-now = datetime.utcnow().strftime("%Y%m%d%H%M%S")
-root_logdir = "tf_logs"
-logdir = "{}/run-{}/".format(root_logdir, now)
-
-mnist = input_data.read_data_sets("/tmp/data/")
-X_train = mnist.train.images
-X_test = mnist.test.images
-y_train = mnist.train.labels.astype("int")
-y_test = mnist.test.labels.astype("int")
-
-n_inputs = 28*28 # MNIST
-n_hidden1 = 300
-n_hidden2 = 100
-n_hidden3 = 40
-n_outputs = 10
-
-learning_rate = 0.01
-n_epochs = 20
-batch_size = 200
-batch_norm_momentum = 0.9
-
-X = tf.placeholder(tf.float32, shape=(None, n_inputs), name="X")
-y = tf.placeholder(tf.int64, shape=(None), name="y")
-training = tf.placeholder_with_default(False, shape=(), name='training')
-
-def leaky_relu(z, name=None):
- return tf.maximum(0.01 * z, z, name=name)
-
-with tf.name_scope("dnn"):
- he_init = tf.contrib.layers.variance_scaling_initializer()
-
- batch_norm_layer = partial(tf.layers.batch_normalization, training=training, momentum=batch_norm_momentum)
- dense_layer = partial(tf.layers.dense, kernel_initializer=he_init)
-
- hidden1 = dense_layer(X, n_hidden1, name="hidden1", activation=leaky_relu)
- bn1 = tf.nn.elu(batch_norm_layer(hidden1))
- hidden2 = dense_layer(bn1, n_hidden2, name="hidden2", activation=tf.nn.elu)
- bn2 = tf.nn.elu(batch_norm_layer(hidden2))
- logits_before_bn = dense_layer(bn2, n_outputs, name="outputs", activation=tf.nn.selu)
- logits = batch_norm_layer(logits_before_bn)
-
-with tf.name_scope("loss"):
- xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=logits)
- loss = tf.reduce_mean(xentropy, name="loss")
-
-with tf.name_scope("train"):
- optimizer = tf.train.GradientDescentOptimizer(learning_rate)
- training_op = optimizer.minimize(loss)
-
-with tf.name_scope("eval"):
- correct = tf.nn.in_top_k(logits, y, 1)
- accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))
-
-init = tf.global_variables_initializer()
-accuracy_summary = tf.summary.scalar('Accuracy', accuracy)
-file_writer = tf.summary.FileWriter(logdir, tf.get_default_graph())
-extra_update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
-
-with tf.Session() as sess:
- init.run()
- for epoch in range(n_epochs):
- for iteration in range(mnist.train.num_examples // batch_size):
- X_batch, y_batch = mnist.train.next_batch(batch_size)
- sess.run([training_op, extra_update_ops],
- feed_dict={training: True, X: X_batch, y: y_batch})
-
- accuracy_val = accuracy.eval(feed_dict={X: mnist.test.images,
- y: mnist.test.labels})
- print(epoch, "Test accuracy:", accuracy_val)
-
- # Save summary for tensorboard
- summary_str = accuracy_summary.eval(feed_dict={X: mnist.validation.images,
- y: mnist.validation.labels})
- file_writer.add_summary(summary_str, epoch)
-
- export_path = "saved"
- print('Exporting trained model to ', export_path)
- builder = tf.saved_model.builder.SavedModelBuilder(export_path)
- signature = tf.saved_model.signature_def_utils.predict_signature_def(inputs = {'x':X}, outputs = {'y':logits})
- builder.add_meta_graph_and_variables(sess,
- [tf.saved_model.tag_constants.SERVING],
- signature_def_map={'serving_default':signature})
- builder.save(as_text=True)
-
-file_writer.close()
-
-
diff --git a/model-integration/src/test/models/tensorflow/batch_norm/saved/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/batch_norm/saved/saved_model.pbtxt
deleted file mode 100644
index f3ce68a1cbd..00000000000
--- a/model-integration/src/test/models/tensorflow/batch_norm/saved/saved_model.pbtxt
+++ /dev/null
@@ -1,32648 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Add"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "AddN"
- input_arg {
- name: "inputs"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "sum"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- type: DT_VARIANT
- }
- }
- }
- is_aggregate: true
- is_commutative: true
- }
- op {
- name: "ApplyGradientDescent"
- input_arg {
- name: "var"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "alpha"
- type_attr: "T"
- }
- input_arg {
- name: "delta"
- type_attr: "T"
- }
- output_arg {
- name: "out"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: false
- }
- }
- }
- op {
- name: "Assign"
- input_arg {
- name: "ref"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output_ref"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "validate_shape"
- type: "bool"
- default_value {
- b: true
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: true
- }
- }
- allows_uninitialized_input: true
- }
- op {
- name: "AssignSub"
- input_arg {
- name: "ref"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output_ref"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: false
- }
- }
- }
- op {
- name: "BiasAdd"
- input_arg {
- name: "value"
- type_attr: "T"
- }
- input_arg {
- name: "bias"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "data_format"
- type: "string"
- default_value {
- s: "NHWC"
- }
- allowed_values {
- list {
- s: "NHWC"
- s: "NCHW"
- }
- }
- }
- }
- op {
- name: "BiasAddGrad"
- input_arg {
- name: "out_backprop"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "data_format"
- type: "string"
- default_value {
- s: "NHWC"
- }
- allowed_values {
- list {
- s: "NHWC"
- s: "NCHW"
- }
- }
- }
- }
- op {
- name: "BroadcastGradientArgs"
- input_arg {
- name: "s0"
- type_attr: "T"
- }
- input_arg {
- name: "s1"
- type_attr: "T"
- }
- output_arg {
- name: "r0"
- type_attr: "T"
- }
- output_arg {
- name: "r1"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Cast"
- input_arg {
- name: "x"
- type_attr: "SrcT"
- }
- output_arg {
- name: "y"
- type_attr: "DstT"
- }
- attr {
- name: "SrcT"
- type: "type"
- }
- attr {
- name: "DstT"
- type: "type"
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "DynamicStitch"
- input_arg {
- name: "indices"
- type: DT_INT32
- number_attr: "N"
- }
- input_arg {
- name: "data"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "merged"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "Elu"
- input_arg {
- name: "features"
- type_attr: "T"
- }
- output_arg {
- name: "activations"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "EluGrad"
- input_arg {
- name: "gradients"
- type_attr: "T"
- }
- input_arg {
- name: "outputs"
- type_attr: "T"
- }
- output_arg {
- name: "backprops"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "ExpandDims"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "dim"
- type_attr: "Tdim"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tdim"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Fill"
- input_arg {
- name: "dims"
- type: DT_INT32
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "FloorDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "FloorMod"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "GreaterEqual"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_UINT16
- type: DT_HALF
- }
- }
- }
- }
- op {
- name: "Identity"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "InTopKV2"
- input_arg {
- name: "predictions"
- type: DT_FLOAT
- }
- input_arg {
- name: "targets"
- type_attr: "T"
- }
- input_arg {
- name: "k"
- type_attr: "T"
- }
- output_arg {
- name: "precision"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Maximum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mean"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "MergeV2Checkpoints"
- input_arg {
- name: "checkpoint_prefixes"
- type: DT_STRING
- }
- input_arg {
- name: "destination_prefix"
- type: DT_STRING
- }
- attr {
- name: "delete_old_dirs"
- type: "bool"
- default_value {
- b: true
- }
- }
- is_stateful: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Neg"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "NoOp"
- }
- op {
- name: "Pack"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "axis"
- type: "int"
- default_value {
- i: 0
- }
- }
- }
- op {
- name: "Placeholder"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- default_value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- op {
- name: "PlaceholderWithDefault"
- input_arg {
- name: "input"
- type_attr: "dtype"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- }
- }
- op {
- name: "PreventGradient"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "message"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Prod"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Range"
- input_arg {
- name: "start"
- type_attr: "Tidx"
- }
- input_arg {
- name: "limit"
- type_attr: "Tidx"
- }
- input_arg {
- name: "delta"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "Tidx"
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RealDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Reshape"
- input_arg {
- name: "tensor"
- type_attr: "T"
- }
- input_arg {
- name: "shape"
- type_attr: "Tshape"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tshape"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RestoreV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- output_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "Rsqrt"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "RsqrtGrad"
- input_arg {
- name: "y"
- type_attr: "T"
- }
- input_arg {
- name: "dy"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "SaveV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- input_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "ScalarSummary"
- input_arg {
- name: "tags"
- type: DT_STRING
- }
- input_arg {
- name: "values"
- type_attr: "T"
- }
- output_arg {
- name: "summary"
- type: DT_STRING
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_UINT16
- type: DT_HALF
- }
- }
- }
- }
- op {
- name: "Select"
- input_arg {
- name: "condition"
- type: DT_BOOL
- }
- input_arg {
- name: "t"
- type_attr: "T"
- }
- input_arg {
- name: "e"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "Selu"
- input_arg {
- name: "features"
- type_attr: "T"
- }
- output_arg {
- name: "activations"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "SeluGrad"
- input_arg {
- name: "gradients"
- type_attr: "T"
- }
- input_arg {
- name: "outputs"
- type_attr: "T"
- }
- output_arg {
- name: "backprops"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "Shape"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "out_type"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "out_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "ShardedFilename"
- input_arg {
- name: "basename"
- type: DT_STRING
- }
- input_arg {
- name: "shard"
- type: DT_INT32
- }
- input_arg {
- name: "num_shards"
- type: DT_INT32
- }
- output_arg {
- name: "filename"
- type: DT_STRING
- }
- }
- op {
- name: "SparseSoftmaxCrossEntropyWithLogits"
- input_arg {
- name: "features"
- type_attr: "T"
- }
- input_arg {
- name: "labels"
- type_attr: "Tlabels"
- }
- output_arg {
- name: "loss"
- type_attr: "T"
- }
- output_arg {
- name: "backprop"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- attr {
- name: "Tlabels"
- type: "type"
- default_value {
- type: DT_INT64
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "SquaredDifference"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Squeeze"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "squeeze_dims"
- type: "list(int)"
- default_value {
- list {
- }
- }
- has_minimum: true
- }
- }
- op {
- name: "StopGradient"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "StringJoin"
- input_arg {
- name: "inputs"
- type: DT_STRING
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type: DT_STRING
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "separator"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Sub"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Sum"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Tile"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "multiples"
- type_attr: "Tmultiples"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tmultiples"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "TruncatedNormal"
- input_arg {
- name: "shape"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "seed"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "seed2"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "dtype"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_stateful: true
- }
- op {
- name: "VariableV2"
- output_arg {
- name: "ref"
- type_attr: "dtype"
- is_ref: true
- }
- attr {
- name: "shape"
- type: "shape"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "container"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "shared_name"
- type: "string"
- default_value {
- s: ""
- }
- }
- is_stateful: true
- }
- op {
- name: "ZerosLike"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- }
- tags: "serve"
- tensorflow_version: "1.4.1"
- tensorflow_git_version: "v1.4.0-19-ga52c8d9"
- }
- graph_def {
- node {
- name: "X"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- node {
- name: "y"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- node {
- name: "training/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_BOOL
- tensor_shape {
- }
- bool_val: false
- }
- }
- }
- }
- node {
- name: "training"
- op: "PlaceholderWithDefault"
- input: "training/input"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "hidden1/kernel/Initializer/truncated_normal/shape"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\020\003\000\000,\001\000\000"
- }
- }
- }
- }
- node {
- name: "hidden1/kernel/Initializer/truncated_normal/mean"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "hidden1/kernel/Initializer/truncated_normal/stddev"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.057587556540966034
- }
- }
- }
- }
- node {
- name: "hidden1/kernel/Initializer/truncated_normal/TruncatedNormal"
- op: "TruncatedNormal"
- input: "hidden1/kernel/Initializer/truncated_normal/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "hidden1/kernel/Initializer/truncated_normal/mul"
- op: "Mul"
- input: "hidden1/kernel/Initializer/truncated_normal/TruncatedNormal"
- input: "hidden1/kernel/Initializer/truncated_normal/stddev"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "hidden1/kernel/Initializer/truncated_normal"
- op: "Add"
- input: "hidden1/kernel/Initializer/truncated_normal/mul"
- input: "hidden1/kernel/Initializer/truncated_normal/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "hidden1/kernel"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "hidden1/kernel/Assign"
- op: "Assign"
- input: "hidden1/kernel"
- input: "hidden1/kernel/Initializer/truncated_normal"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "hidden1/kernel/read"
- op: "Identity"
- input: "hidden1/kernel"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "hidden1/bias/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 300
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "hidden1/bias"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "hidden1/bias/Assign"
- op: "Assign"
- input: "hidden1/bias"
- input: "hidden1/bias/Initializer/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "hidden1/bias/read"
- op: "Identity"
- input: "hidden1/bias"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/MatMul"
- op: "MatMul"
- input: "X"
- input: "hidden1/kernel/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/hidden1/BiasAdd"
- op: "BiasAdd"
- input: "dnn/hidden1/MatMul"
- input: "hidden1/bias/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "data_format"
- value {
- s: "NHWC"
- }
- }
- }
- node {
- name: "dnn/hidden1/mul/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.009999999776482582
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/mul"
- op: "Mul"
- input: "dnn/hidden1/mul/x"
- input: "dnn/hidden1/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/Maximum"
- op: "Maximum"
- input: "dnn/hidden1/mul"
- input: "dnn/hidden1/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization/gamma/Initializer/ones"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 300
- }
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "batch_normalization/gamma"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization/gamma/Assign"
- op: "Assign"
- input: "batch_normalization/gamma"
- input: "batch_normalization/gamma/Initializer/ones"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization/gamma/read"
- op: "Identity"
- input: "batch_normalization/gamma"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization/beta/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 300
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "batch_normalization/beta"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization/beta/Assign"
- op: "Assign"
- input: "batch_normalization/beta"
- input: "batch_normalization/beta/Initializer/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization/beta/read"
- op: "Identity"
- input: "batch_normalization/beta"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization/moving_mean/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 300
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "batch_normalization/moving_mean"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization/moving_mean/Assign"
- op: "Assign"
- input: "batch_normalization/moving_mean"
- input: "batch_normalization/moving_mean/Initializer/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization/moving_mean/read"
- op: "Identity"
- input: "batch_normalization/moving_mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization/moving_variance/Initializer/ones"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 300
- }
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "batch_normalization/moving_variance"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization/moving_variance/Assign"
- op: "Assign"
- input: "batch_normalization/moving_variance"
- input: "batch_normalization/moving_variance/Initializer/ones"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization/moving_variance/read"
- op: "Identity"
- input: "batch_normalization/moving_variance"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/moments/mean/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/moments/mean"
- op: "Mean"
- input: "dnn/hidden1/Maximum"
- input: "dnn/batch_normalization/moments/mean/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/batch_normalization/moments/StopGradient"
- op: "StopGradient"
- input: "dnn/batch_normalization/moments/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/moments/SquaredDifference"
- op: "SquaredDifference"
- input: "dnn/hidden1/Maximum"
- input: "dnn/batch_normalization/moments/StopGradient"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/moments/variance/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/moments/variance"
- op: "Mean"
- input: "dnn/batch_normalization/moments/SquaredDifference"
- input: "dnn/batch_normalization/moments/variance/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/batch_normalization/moments/Squeeze"
- op: "Squeeze"
- input: "dnn/batch_normalization/moments/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/moments/Squeeze_1"
- op: "Squeeze"
- input: "dnn/batch_normalization/moments/variance"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims"
- op: "ExpandDims"
- input: "dnn/batch_normalization/moments/Squeeze"
- input: "dnn/batch_normalization/ExpandDims/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_1/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_1"
- op: "ExpandDims"
- input: "batch_normalization/moving_mean/read"
- input: "dnn/batch_normalization/ExpandDims_1/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Reshape/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Reshape"
- op: "Reshape"
- input: "training"
- input: "dnn/batch_normalization/Reshape/shape"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Select"
- op: "Select"
- input: "dnn/batch_normalization/Reshape"
- input: "dnn/batch_normalization/ExpandDims"
- input: "dnn/batch_normalization/ExpandDims_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Squeeze"
- op: "Squeeze"
- input: "dnn/batch_normalization/Select"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_2/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_2"
- op: "ExpandDims"
- input: "dnn/batch_normalization/moments/Squeeze_1"
- input: "dnn/batch_normalization/ExpandDims_2/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_3/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_3"
- op: "ExpandDims"
- input: "batch_normalization/moving_variance/read"
- input: "dnn/batch_normalization/ExpandDims_3/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Reshape_1/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Reshape_1"
- op: "Reshape"
- input: "training"
- input: "dnn/batch_normalization/Reshape_1/shape"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Select_1"
- op: "Select"
- input: "dnn/batch_normalization/Reshape_1"
- input: "dnn/batch_normalization/ExpandDims_2"
- input: "dnn/batch_normalization/ExpandDims_3"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Squeeze_1"
- op: "Squeeze"
- input: "dnn/batch_normalization/Select_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_4/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.8999999761581421
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_4/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_4"
- op: "ExpandDims"
- input: "dnn/batch_normalization/ExpandDims_4/input"
- input: "dnn/batch_normalization/ExpandDims_4/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_5/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_5/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_5"
- op: "ExpandDims"
- input: "dnn/batch_normalization/ExpandDims_5/input"
- input: "dnn/batch_normalization/ExpandDims_5/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Reshape_2/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Reshape_2"
- op: "Reshape"
- input: "training"
- input: "dnn/batch_normalization/Reshape_2/shape"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Select_2"
- op: "Select"
- input: "dnn/batch_normalization/Reshape_2"
- input: "dnn/batch_normalization/ExpandDims_4"
- input: "dnn/batch_normalization/ExpandDims_5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Squeeze_2"
- op: "Squeeze"
- input: "dnn/batch_normalization/Select_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/AssignMovingAvg/sub/x"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/AssignMovingAvg/sub"
- op: "Sub"
- input: "dnn/batch_normalization/AssignMovingAvg/sub/x"
- input: "dnn/batch_normalization/Squeeze_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/AssignMovingAvg/sub_1"
- op: "Sub"
- input: "batch_normalization/moving_mean/read"
- input: "dnn/batch_normalization/Squeeze"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/AssignMovingAvg/mul"
- op: "Mul"
- input: "dnn/batch_normalization/AssignMovingAvg/sub_1"
- input: "dnn/batch_normalization/AssignMovingAvg/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/AssignMovingAvg"
- op: "AssignSub"
- input: "batch_normalization/moving_mean"
- input: "dnn/batch_normalization/AssignMovingAvg/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/batch_normalization/AssignMovingAvg_1/sub/x"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/AssignMovingAvg_1/sub"
- op: "Sub"
- input: "dnn/batch_normalization/AssignMovingAvg_1/sub/x"
- input: "dnn/batch_normalization/Squeeze_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/AssignMovingAvg_1/sub_1"
- op: "Sub"
- input: "batch_normalization/moving_variance/read"
- input: "dnn/batch_normalization/Squeeze_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/AssignMovingAvg_1/mul"
- op: "Mul"
- input: "dnn/batch_normalization/AssignMovingAvg_1/sub_1"
- input: "dnn/batch_normalization/AssignMovingAvg_1/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/AssignMovingAvg_1"
- op: "AssignSub"
- input: "batch_normalization/moving_variance"
- input: "dnn/batch_normalization/AssignMovingAvg_1/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/batch_normalization/batchnorm/add/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0010000000474974513
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/batchnorm/add"
- op: "Add"
- input: "dnn/batch_normalization/Squeeze_1"
- input: "dnn/batch_normalization/batchnorm/add/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/batchnorm/Rsqrt"
- op: "Rsqrt"
- input: "dnn/batch_normalization/batchnorm/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/batchnorm/mul"
- op: "Mul"
- input: "dnn/batch_normalization/batchnorm/Rsqrt"
- input: "batch_normalization/gamma/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/batchnorm/mul_1"
- op: "Mul"
- input: "dnn/hidden1/Maximum"
- input: "dnn/batch_normalization/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/batchnorm/mul_2"
- op: "Mul"
- input: "dnn/batch_normalization/Squeeze"
- input: "dnn/batch_normalization/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/batchnorm/sub"
- op: "Sub"
- input: "batch_normalization/beta/read"
- input: "dnn/batch_normalization/batchnorm/mul_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/batchnorm/add_1"
- op: "Add"
- input: "dnn/batch_normalization/batchnorm/mul_1"
- input: "dnn/batch_normalization/batchnorm/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/Elu"
- op: "Elu"
- input: "dnn/batch_normalization/batchnorm/add_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "hidden2/kernel/Initializer/truncated_normal/shape"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: ",\001\000\000d\000\000\000"
- }
- }
- }
- }
- node {
- name: "hidden2/kernel/Initializer/truncated_normal/mean"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "hidden2/kernel/Initializer/truncated_normal/stddev"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.09309493005275726
- }
- }
- }
- }
- node {
- name: "hidden2/kernel/Initializer/truncated_normal/TruncatedNormal"
- op: "TruncatedNormal"
- input: "hidden2/kernel/Initializer/truncated_normal/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "hidden2/kernel/Initializer/truncated_normal/mul"
- op: "Mul"
- input: "hidden2/kernel/Initializer/truncated_normal/TruncatedNormal"
- input: "hidden2/kernel/Initializer/truncated_normal/stddev"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "hidden2/kernel/Initializer/truncated_normal"
- op: "Add"
- input: "hidden2/kernel/Initializer/truncated_normal/mul"
- input: "hidden2/kernel/Initializer/truncated_normal/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "hidden2/kernel"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "hidden2/kernel/Assign"
- op: "Assign"
- input: "hidden2/kernel"
- input: "hidden2/kernel/Initializer/truncated_normal"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "hidden2/kernel/read"
- op: "Identity"
- input: "hidden2/kernel"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "hidden2/bias/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 100
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "hidden2/bias"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "hidden2/bias/Assign"
- op: "Assign"
- input: "hidden2/bias"
- input: "hidden2/bias/Initializer/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "hidden2/bias/read"
- op: "Identity"
- input: "hidden2/bias"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden2/MatMul"
- op: "MatMul"
- input: "dnn/Elu"
- input: "hidden2/kernel/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/hidden2/BiasAdd"
- op: "BiasAdd"
- input: "dnn/hidden2/MatMul"
- input: "hidden2/bias/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "data_format"
- value {
- s: "NHWC"
- }
- }
- }
- node {
- name: "dnn/hidden2/Elu"
- op: "Elu"
- input: "dnn/hidden2/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_1/gamma/Initializer/ones"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 100
- }
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "batch_normalization_1/gamma"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization_1/gamma/Assign"
- op: "Assign"
- input: "batch_normalization_1/gamma"
- input: "batch_normalization_1/gamma/Initializer/ones"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization_1/gamma/read"
- op: "Identity"
- input: "batch_normalization_1/gamma"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_1/beta/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 100
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "batch_normalization_1/beta"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization_1/beta/Assign"
- op: "Assign"
- input: "batch_normalization_1/beta"
- input: "batch_normalization_1/beta/Initializer/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization_1/beta/read"
- op: "Identity"
- input: "batch_normalization_1/beta"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_1/moving_mean/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 100
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "batch_normalization_1/moving_mean"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization_1/moving_mean/Assign"
- op: "Assign"
- input: "batch_normalization_1/moving_mean"
- input: "batch_normalization_1/moving_mean/Initializer/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization_1/moving_mean/read"
- op: "Identity"
- input: "batch_normalization_1/moving_mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_1/moving_variance/Initializer/ones"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 100
- }
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "batch_normalization_1/moving_variance"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization_1/moving_variance/Assign"
- op: "Assign"
- input: "batch_normalization_1/moving_variance"
- input: "batch_normalization_1/moving_variance/Initializer/ones"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization_1/moving_variance/read"
- op: "Identity"
- input: "batch_normalization_1/moving_variance"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/moments/mean/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/moments/mean"
- op: "Mean"
- input: "dnn/hidden2/Elu"
- input: "dnn/batch_normalization_2/moments/mean/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/moments/StopGradient"
- op: "StopGradient"
- input: "dnn/batch_normalization_2/moments/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/moments/SquaredDifference"
- op: "SquaredDifference"
- input: "dnn/hidden2/Elu"
- input: "dnn/batch_normalization_2/moments/StopGradient"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/moments/variance/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/moments/variance"
- op: "Mean"
- input: "dnn/batch_normalization_2/moments/SquaredDifference"
- input: "dnn/batch_normalization_2/moments/variance/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/moments/Squeeze"
- op: "Squeeze"
- input: "dnn/batch_normalization_2/moments/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/moments/Squeeze_1"
- op: "Squeeze"
- input: "dnn/batch_normalization_2/moments/variance"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims"
- op: "ExpandDims"
- input: "dnn/batch_normalization_2/moments/Squeeze"
- input: "dnn/batch_normalization_2/ExpandDims/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_1/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_1"
- op: "ExpandDims"
- input: "batch_normalization_1/moving_mean/read"
- input: "dnn/batch_normalization_2/ExpandDims_1/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Reshape/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Reshape"
- op: "Reshape"
- input: "training"
- input: "dnn/batch_normalization_2/Reshape/shape"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Select"
- op: "Select"
- input: "dnn/batch_normalization_2/Reshape"
- input: "dnn/batch_normalization_2/ExpandDims"
- input: "dnn/batch_normalization_2/ExpandDims_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Squeeze"
- op: "Squeeze"
- input: "dnn/batch_normalization_2/Select"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_2/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_2"
- op: "ExpandDims"
- input: "dnn/batch_normalization_2/moments/Squeeze_1"
- input: "dnn/batch_normalization_2/ExpandDims_2/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_3/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_3"
- op: "ExpandDims"
- input: "batch_normalization_1/moving_variance/read"
- input: "dnn/batch_normalization_2/ExpandDims_3/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Reshape_1/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Reshape_1"
- op: "Reshape"
- input: "training"
- input: "dnn/batch_normalization_2/Reshape_1/shape"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Select_1"
- op: "Select"
- input: "dnn/batch_normalization_2/Reshape_1"
- input: "dnn/batch_normalization_2/ExpandDims_2"
- input: "dnn/batch_normalization_2/ExpandDims_3"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Squeeze_1"
- op: "Squeeze"
- input: "dnn/batch_normalization_2/Select_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_4/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.8999999761581421
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_4/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_4"
- op: "ExpandDims"
- input: "dnn/batch_normalization_2/ExpandDims_4/input"
- input: "dnn/batch_normalization_2/ExpandDims_4/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_5/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_5/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_5"
- op: "ExpandDims"
- input: "dnn/batch_normalization_2/ExpandDims_5/input"
- input: "dnn/batch_normalization_2/ExpandDims_5/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Reshape_2/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Reshape_2"
- op: "Reshape"
- input: "training"
- input: "dnn/batch_normalization_2/Reshape_2/shape"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Select_2"
- op: "Select"
- input: "dnn/batch_normalization_2/Reshape_2"
- input: "dnn/batch_normalization_2/ExpandDims_4"
- input: "dnn/batch_normalization_2/ExpandDims_5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Squeeze_2"
- op: "Squeeze"
- input: "dnn/batch_normalization_2/Select_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/AssignMovingAvg/sub/x"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/AssignMovingAvg/sub"
- op: "Sub"
- input: "dnn/batch_normalization_2/AssignMovingAvg/sub/x"
- input: "dnn/batch_normalization_2/Squeeze_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/AssignMovingAvg/sub_1"
- op: "Sub"
- input: "batch_normalization_1/moving_mean/read"
- input: "dnn/batch_normalization_2/Squeeze"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/AssignMovingAvg/mul"
- op: "Mul"
- input: "dnn/batch_normalization_2/AssignMovingAvg/sub_1"
- input: "dnn/batch_normalization_2/AssignMovingAvg/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/AssignMovingAvg"
- op: "AssignSub"
- input: "batch_normalization_1/moving_mean"
- input: "dnn/batch_normalization_2/AssignMovingAvg/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/AssignMovingAvg_1/sub/x"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/AssignMovingAvg_1/sub"
- op: "Sub"
- input: "dnn/batch_normalization_2/AssignMovingAvg_1/sub/x"
- input: "dnn/batch_normalization_2/Squeeze_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/AssignMovingAvg_1/sub_1"
- op: "Sub"
- input: "batch_normalization_1/moving_variance/read"
- input: "dnn/batch_normalization_2/Squeeze_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/AssignMovingAvg_1/mul"
- op: "Mul"
- input: "dnn/batch_normalization_2/AssignMovingAvg_1/sub_1"
- input: "dnn/batch_normalization_2/AssignMovingAvg_1/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/AssignMovingAvg_1"
- op: "AssignSub"
- input: "batch_normalization_1/moving_variance"
- input: "dnn/batch_normalization_2/AssignMovingAvg_1/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/batchnorm/add/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0010000000474974513
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/batchnorm/add"
- op: "Add"
- input: "dnn/batch_normalization_2/Squeeze_1"
- input: "dnn/batch_normalization_2/batchnorm/add/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/batchnorm/Rsqrt"
- op: "Rsqrt"
- input: "dnn/batch_normalization_2/batchnorm/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/batchnorm/mul"
- op: "Mul"
- input: "dnn/batch_normalization_2/batchnorm/Rsqrt"
- input: "batch_normalization_1/gamma/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/batchnorm/mul_1"
- op: "Mul"
- input: "dnn/hidden2/Elu"
- input: "dnn/batch_normalization_2/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/batchnorm/mul_2"
- op: "Mul"
- input: "dnn/batch_normalization_2/Squeeze"
- input: "dnn/batch_normalization_2/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/batchnorm/sub"
- op: "Sub"
- input: "batch_normalization_1/beta/read"
- input: "dnn/batch_normalization_2/batchnorm/mul_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/batchnorm/add_1"
- op: "Add"
- input: "dnn/batch_normalization_2/batchnorm/mul_1"
- input: "dnn/batch_normalization_2/batchnorm/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/Elu_1"
- op: "Elu"
- input: "dnn/batch_normalization_2/batchnorm/add_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/truncated_normal/shape"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "d\000\000\000\n\000\000\000"
- }
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/truncated_normal/mean"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/truncated_normal/stddev"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.16124515235424042
- }
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/truncated_normal/TruncatedNormal"
- op: "TruncatedNormal"
- input: "outputs/kernel/Initializer/truncated_normal/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/truncated_normal/mul"
- op: "Mul"
- input: "outputs/kernel/Initializer/truncated_normal/TruncatedNormal"
- input: "outputs/kernel/Initializer/truncated_normal/stddev"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/truncated_normal"
- op: "Add"
- input: "outputs/kernel/Initializer/truncated_normal/mul"
- input: "outputs/kernel/Initializer/truncated_normal/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "outputs/kernel"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "outputs/kernel/Assign"
- op: "Assign"
- input: "outputs/kernel"
- input: "outputs/kernel/Initializer/truncated_normal"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "outputs/kernel/read"
- op: "Identity"
- input: "outputs/kernel"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "outputs/bias/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 10
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "outputs/bias"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "outputs/bias/Assign"
- op: "Assign"
- input: "outputs/bias"
- input: "outputs/bias/Initializer/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "outputs/bias/read"
- op: "Identity"
- input: "outputs/bias"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/outputs/MatMul"
- op: "MatMul"
- input: "dnn/Elu_1"
- input: "outputs/kernel/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/outputs/BiasAdd"
- op: "BiasAdd"
- input: "dnn/outputs/MatMul"
- input: "outputs/bias/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "data_format"
- value {
- s: "NHWC"
- }
- }
- }
- node {
- name: "dnn/outputs/Selu"
- op: "Selu"
- input: "dnn/outputs/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_2/gamma/Initializer/ones"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 10
- }
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "batch_normalization_2/gamma"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization_2/gamma/Assign"
- op: "Assign"
- input: "batch_normalization_2/gamma"
- input: "batch_normalization_2/gamma/Initializer/ones"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization_2/gamma/read"
- op: "Identity"
- input: "batch_normalization_2/gamma"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_2/beta/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 10
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "batch_normalization_2/beta"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization_2/beta/Assign"
- op: "Assign"
- input: "batch_normalization_2/beta"
- input: "batch_normalization_2/beta/Initializer/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization_2/beta/read"
- op: "Identity"
- input: "batch_normalization_2/beta"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_2/moving_mean/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 10
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "batch_normalization_2/moving_mean"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization_2/moving_mean/Assign"
- op: "Assign"
- input: "batch_normalization_2/moving_mean"
- input: "batch_normalization_2/moving_mean/Initializer/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization_2/moving_mean/read"
- op: "Identity"
- input: "batch_normalization_2/moving_mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_2/moving_variance/Initializer/ones"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 10
- }
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "batch_normalization_2/moving_variance"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization_2/moving_variance/Assign"
- op: "Assign"
- input: "batch_normalization_2/moving_variance"
- input: "batch_normalization_2/moving_variance/Initializer/ones"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization_2/moving_variance/read"
- op: "Identity"
- input: "batch_normalization_2/moving_variance"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/moments/mean/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/moments/mean"
- op: "Mean"
- input: "dnn/outputs/Selu"
- input: "dnn/batch_normalization_3/moments/mean/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/moments/StopGradient"
- op: "StopGradient"
- input: "dnn/batch_normalization_3/moments/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/moments/SquaredDifference"
- op: "SquaredDifference"
- input: "dnn/outputs/Selu"
- input: "dnn/batch_normalization_3/moments/StopGradient"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/moments/variance/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/moments/variance"
- op: "Mean"
- input: "dnn/batch_normalization_3/moments/SquaredDifference"
- input: "dnn/batch_normalization_3/moments/variance/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/moments/Squeeze"
- op: "Squeeze"
- input: "dnn/batch_normalization_3/moments/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/moments/Squeeze_1"
- op: "Squeeze"
- input: "dnn/batch_normalization_3/moments/variance"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims"
- op: "ExpandDims"
- input: "dnn/batch_normalization_3/moments/Squeeze"
- input: "dnn/batch_normalization_3/ExpandDims/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_1/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_1"
- op: "ExpandDims"
- input: "batch_normalization_2/moving_mean/read"
- input: "dnn/batch_normalization_3/ExpandDims_1/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Reshape/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Reshape"
- op: "Reshape"
- input: "training"
- input: "dnn/batch_normalization_3/Reshape/shape"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Select"
- op: "Select"
- input: "dnn/batch_normalization_3/Reshape"
- input: "dnn/batch_normalization_3/ExpandDims"
- input: "dnn/batch_normalization_3/ExpandDims_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Squeeze"
- op: "Squeeze"
- input: "dnn/batch_normalization_3/Select"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_2/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_2"
- op: "ExpandDims"
- input: "dnn/batch_normalization_3/moments/Squeeze_1"
- input: "dnn/batch_normalization_3/ExpandDims_2/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_3/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_3"
- op: "ExpandDims"
- input: "batch_normalization_2/moving_variance/read"
- input: "dnn/batch_normalization_3/ExpandDims_3/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Reshape_1/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Reshape_1"
- op: "Reshape"
- input: "training"
- input: "dnn/batch_normalization_3/Reshape_1/shape"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Select_1"
- op: "Select"
- input: "dnn/batch_normalization_3/Reshape_1"
- input: "dnn/batch_normalization_3/ExpandDims_2"
- input: "dnn/batch_normalization_3/ExpandDims_3"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Squeeze_1"
- op: "Squeeze"
- input: "dnn/batch_normalization_3/Select_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_4/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.8999999761581421
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_4/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_4"
- op: "ExpandDims"
- input: "dnn/batch_normalization_3/ExpandDims_4/input"
- input: "dnn/batch_normalization_3/ExpandDims_4/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_5/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_5/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_5"
- op: "ExpandDims"
- input: "dnn/batch_normalization_3/ExpandDims_5/input"
- input: "dnn/batch_normalization_3/ExpandDims_5/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Reshape_2/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Reshape_2"
- op: "Reshape"
- input: "training"
- input: "dnn/batch_normalization_3/Reshape_2/shape"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Select_2"
- op: "Select"
- input: "dnn/batch_normalization_3/Reshape_2"
- input: "dnn/batch_normalization_3/ExpandDims_4"
- input: "dnn/batch_normalization_3/ExpandDims_5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Squeeze_2"
- op: "Squeeze"
- input: "dnn/batch_normalization_3/Select_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/AssignMovingAvg/sub/x"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/AssignMovingAvg/sub"
- op: "Sub"
- input: "dnn/batch_normalization_3/AssignMovingAvg/sub/x"
- input: "dnn/batch_normalization_3/Squeeze_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/AssignMovingAvg/sub_1"
- op: "Sub"
- input: "batch_normalization_2/moving_mean/read"
- input: "dnn/batch_normalization_3/Squeeze"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/AssignMovingAvg/mul"
- op: "Mul"
- input: "dnn/batch_normalization_3/AssignMovingAvg/sub_1"
- input: "dnn/batch_normalization_3/AssignMovingAvg/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/AssignMovingAvg"
- op: "AssignSub"
- input: "batch_normalization_2/moving_mean"
- input: "dnn/batch_normalization_3/AssignMovingAvg/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/AssignMovingAvg_1/sub/x"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/AssignMovingAvg_1/sub"
- op: "Sub"
- input: "dnn/batch_normalization_3/AssignMovingAvg_1/sub/x"
- input: "dnn/batch_normalization_3/Squeeze_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/AssignMovingAvg_1/sub_1"
- op: "Sub"
- input: "batch_normalization_2/moving_variance/read"
- input: "dnn/batch_normalization_3/Squeeze_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/AssignMovingAvg_1/mul"
- op: "Mul"
- input: "dnn/batch_normalization_3/AssignMovingAvg_1/sub_1"
- input: "dnn/batch_normalization_3/AssignMovingAvg_1/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/AssignMovingAvg_1"
- op: "AssignSub"
- input: "batch_normalization_2/moving_variance"
- input: "dnn/batch_normalization_3/AssignMovingAvg_1/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/batchnorm/add/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0010000000474974513
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/batchnorm/add"
- op: "Add"
- input: "dnn/batch_normalization_3/Squeeze_1"
- input: "dnn/batch_normalization_3/batchnorm/add/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/batchnorm/Rsqrt"
- op: "Rsqrt"
- input: "dnn/batch_normalization_3/batchnorm/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/batchnorm/mul"
- op: "Mul"
- input: "dnn/batch_normalization_3/batchnorm/Rsqrt"
- input: "batch_normalization_2/gamma/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/batchnorm/mul_1"
- op: "Mul"
- input: "dnn/outputs/Selu"
- input: "dnn/batch_normalization_3/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/batchnorm/mul_2"
- op: "Mul"
- input: "dnn/batch_normalization_3/Squeeze"
- input: "dnn/batch_normalization_3/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/batchnorm/sub"
- op: "Sub"
- input: "batch_normalization_2/beta/read"
- input: "dnn/batch_normalization_3/batchnorm/mul_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/batchnorm/add_1"
- op: "Add"
- input: "dnn/batch_normalization_3/batchnorm/mul_1"
- input: "dnn/batch_normalization_3/batchnorm/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/SparseSoftmaxCrossEntropyWithLogits/Shape"
- op: "Shape"
- input: "y"
- attr {
- key: "T"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits"
- op: "SparseSoftmaxCrossEntropyWithLogits"
- input: "dnn/batch_normalization_3/batchnorm/add_1"
- input: "y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tlabels"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "loss/loss"
- op: "Mean"
- input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits"
- input: "loss/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "train/gradients/Fill"
- op: "Fill"
- input: "train/gradients/Shape"
- input: "train/gradients/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Reshape/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/Fill"
- input: "train/gradients/loss/loss_grad/Reshape/shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Shape"
- op: "Shape"
- input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Tile"
- op: "Tile"
- input: "train/gradients/loss/loss_grad/Reshape"
- input: "train/gradients/loss/loss_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Shape_1"
- op: "Shape"
- input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Shape_2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Prod"
- op: "Prod"
- input: "train/gradients/loss/loss_grad/Shape_1"
- input: "train/gradients/loss/loss_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Const_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Prod_1"
- op: "Prod"
- input: "train/gradients/loss/loss_grad/Shape_2"
- input: "train/gradients/loss/loss_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Maximum"
- op: "Maximum"
- input: "train/gradients/loss/loss_grad/Prod_1"
- input: "train/gradients/loss/loss_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/floordiv"
- op: "FloorDiv"
- input: "train/gradients/loss/loss_grad/Prod"
- input: "train/gradients/loss/loss_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Cast"
- op: "Cast"
- input: "train/gradients/loss/loss_grad/floordiv"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/truediv"
- op: "RealDiv"
- input: "train/gradients/loss/loss_grad/Tile"
- input: "train/gradients/loss/loss_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/zeros_like"
- op: "ZerosLike"
- input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/PreventGradient"
- op: "PreventGradient"
- input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "message"
- value {
- s: "Currently there is no way to take the second derivative of sparse_softmax_cross_entropy_with_logits due to the fused implementation\'s interaction with tf.gradients()"
- }
- }
- }
- node {
- name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims"
- op: "ExpandDims"
- input: "train/gradients/loss/loss_grad/truediv"
- input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/mul"
- op: "Mul"
- input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims"
- input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/PreventGradient"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Shape"
- op: "Shape"
- input: "dnn/batch_normalization_3/batchnorm/mul_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Sum"
- op: "Sum"
- input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/mul"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/mul"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Shape"
- op: "Shape"
- input: "dnn/outputs/Selu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/mul"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/control_dependency"
- input: "dnn/batch_normalization_3/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/mul"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/mul_1"
- op: "Mul"
- input: "dnn/outputs/Selu"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/control_dependency_1"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/control_dependency_1"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Neg"
- op: "Neg"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Sum_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Neg"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/mul"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/control_dependency_1"
- input: "dnn/batch_normalization_3/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/mul"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/mul_1"
- op: "Mul"
- input: "dnn/batch_normalization_3/Squeeze"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Squeeze_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\n\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Squeeze_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_3/Squeeze_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/AddN"
- op: "AddN"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/tuple/control_dependency_1"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/tuple/control_dependency_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/mul"
- op: "Mul"
- input: "train/gradients/AddN"
- input: "batch_normalization_2/gamma/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/mul"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/mul_1"
- op: "Mul"
- input: "dnn/batch_normalization_3/batchnorm/Rsqrt"
- input: "train/gradients/AddN"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_grad/zeros_like"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_grad/Select"
- op: "Select"
- input: "dnn/batch_normalization_3/Reshape"
- input: "train/gradients/dnn/batch_normalization_3/Squeeze_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_3/Select_grad/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_grad/Select_1"
- op: "Select"
- input: "dnn/batch_normalization_3/Reshape"
- input: "train/gradients/dnn/batch_normalization_3/Select_grad/zeros_like"
- input: "train/gradients/dnn/batch_normalization_3/Squeeze_grad/Reshape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_3/Select_grad/Select"
- input: "^train/gradients/dnn/batch_normalization_3/Select_grad/Select_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/Select_grad/Select"
- input: "^train/gradients/dnn/batch_normalization_3/Select_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/Select_grad/Select"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/Select_grad/Select_1"
- input: "^train/gradients/dnn/batch_normalization_3/Select_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/Select_grad/Select_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/Rsqrt_grad/RsqrtGrad"
- op: "RsqrtGrad"
- input: "dnn/batch_normalization_3/batchnorm/Rsqrt"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/ExpandDims_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/ExpandDims_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/Select_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_3/ExpandDims_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/Rsqrt_grad/RsqrtGrad"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/Rsqrt_grad/RsqrtGrad"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\n\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/ExpandDims_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Squeeze_1_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\n\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Squeeze_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_3/Squeeze_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_1_grad/zeros_like"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_1_grad/Select"
- op: "Select"
- input: "dnn/batch_normalization_3/Reshape_1"
- input: "train/gradients/dnn/batch_normalization_3/Squeeze_1_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_3/Select_1_grad/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_1_grad/Select_1"
- op: "Select"
- input: "dnn/batch_normalization_3/Reshape_1"
- input: "train/gradients/dnn/batch_normalization_3/Select_1_grad/zeros_like"
- input: "train/gradients/dnn/batch_normalization_3/Squeeze_1_grad/Reshape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_3/Select_1_grad/Select"
- input: "^train/gradients/dnn/batch_normalization_3/Select_1_grad/Select_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/Select_1_grad/Select"
- input: "^train/gradients/dnn/batch_normalization_3/Select_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/Select_1_grad/Select"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/Select_1_grad/Select_1"
- input: "^train/gradients/dnn/batch_normalization_3/Select_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/Select_1_grad/Select_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/ExpandDims_2_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/ExpandDims_2_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/Select_1_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_3/ExpandDims_2_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_1_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\n\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/ExpandDims_2_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- op: "Shape"
- input: "dnn/batch_normalization_3/moments/SquaredDifference"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Size"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/add"
- op: "Add"
- input: "dnn/batch_normalization_3/moments/variance/reduction_indices"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/mod"
- op: "FloorMod"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/add"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/range/start"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/range/delta"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/range"
- op: "Range"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/range/start"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Size"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/range/delta"
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Fill/value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Fill"
- op: "Fill"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_1"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Fill/value"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/DynamicStitch"
- op: "DynamicStitch"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/range"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/mod"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Fill"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/DynamicStitch"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/floordiv"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_1_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/DynamicStitch"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Tile"
- op: "Tile"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/floordiv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2"
- op: "Shape"
- input: "dnn/batch_normalization_3/moments/SquaredDifference"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_3"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\n\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Prod"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Const_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Prod_1"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_3"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum_1/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum_1"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Prod_1"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum_1/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/floordiv_1"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Prod"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Cast"
- op: "Cast"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/floordiv_1"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/truediv"
- op: "RealDiv"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Tile"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Shape"
- op: "Shape"
- input: "dnn/outputs/Selu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\n\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/scalar"
- op: "Const"
- input: "^train/gradients/dnn/batch_normalization_3/moments/variance_grad/truediv"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 2.0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/mul"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/scalar"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/truediv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/sub"
- op: "Sub"
- input: "dnn/outputs/Selu"
- input: "dnn/batch_normalization_3/moments/StopGradient"
- input: "^train/gradients/dnn/batch_normalization_3/moments/variance_grad/truediv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/mul_1"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/mul"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Neg"
- op: "Neg"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Reshape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Neg"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Neg"
- input: "^train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Neg"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- op: "Shape"
- input: "dnn/outputs/Selu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Size"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/add"
- op: "Add"
- input: "dnn/batch_normalization_3/moments/mean/reduction_indices"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/mod"
- op: "FloorMod"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/add"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/range/start"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/range/delta"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/range"
- op: "Range"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/range/start"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Size"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/range/delta"
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Fill/value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Fill"
- op: "Fill"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_1"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Fill/value"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/DynamicStitch"
- op: "DynamicStitch"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/range"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/mod"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Fill"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/DynamicStitch"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/floordiv"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/DynamicStitch"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Tile"
- op: "Tile"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/floordiv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2"
- op: "Shape"
- input: "dnn/outputs/Selu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_3"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\n\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Prod"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Const_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Prod_1"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_3"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum_1/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum_1"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Prod_1"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum_1/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/floordiv_1"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Prod"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Cast"
- op: "Cast"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/floordiv_1"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/truediv"
- op: "RealDiv"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Tile"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/AddN_1"
- op: "AddN"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/truediv"
- attr {
- key: "N"
- value {
- i: 3
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/Selu_grad/SeluGrad"
- op: "SeluGrad"
- input: "train/gradients/AddN_1"
- input: "dnn/outputs/Selu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/BiasAdd_grad/BiasAddGrad"
- op: "BiasAddGrad"
- input: "train/gradients/dnn/outputs/Selu_grad/SeluGrad"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "data_format"
- value {
- s: "NHWC"
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/BiasAdd_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/outputs/Selu_grad/SeluGrad"
- input: "^train/gradients/dnn/outputs/BiasAdd_grad/BiasAddGrad"
- }
- node {
- name: "train/gradients/dnn/outputs/BiasAdd_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/outputs/Selu_grad/SeluGrad"
- input: "^train/gradients/dnn/outputs/BiasAdd_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/outputs/Selu_grad/SeluGrad"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/BiasAdd_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/outputs/BiasAdd_grad/BiasAddGrad"
- input: "^train/gradients/dnn/outputs/BiasAdd_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/outputs/BiasAdd_grad/BiasAddGrad"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/MatMul_grad/MatMul"
- op: "MatMul"
- input: "train/gradients/dnn/outputs/BiasAdd_grad/tuple/control_dependency"
- input: "outputs/kernel/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/MatMul_grad/MatMul_1"
- op: "MatMul"
- input: "dnn/Elu_1"
- input: "train/gradients/dnn/outputs/BiasAdd_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/MatMul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/outputs/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/outputs/MatMul_grad/MatMul_1"
- }
- node {
- name: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/outputs/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/outputs/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/outputs/MatMul_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/outputs/MatMul_grad/MatMul_1"
- input: "^train/gradients/dnn/outputs/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/outputs/MatMul_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/Elu_1_grad/EluGrad"
- op: "EluGrad"
- input: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency"
- input: "dnn/Elu_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Shape"
- op: "Shape"
- input: "dnn/batch_normalization_2/batchnorm/mul_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/Elu_1_grad/EluGrad"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/Elu_1_grad/EluGrad"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Shape"
- op: "Shape"
- input: "dnn/hidden2/Elu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/mul"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/control_dependency"
- input: "dnn/batch_normalization_2/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/mul"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/mul_1"
- op: "Mul"
- input: "dnn/hidden2/Elu"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/control_dependency_1"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/control_dependency_1"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Neg"
- op: "Neg"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Sum_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Neg"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/mul"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/control_dependency_1"
- input: "dnn/batch_normalization_2/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/mul"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/mul_1"
- op: "Mul"
- input: "dnn/batch_normalization_2/Squeeze"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Squeeze_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000d\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Squeeze_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_2/Squeeze_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/AddN_2"
- op: "AddN"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/tuple/control_dependency_1"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/tuple/control_dependency_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/mul"
- op: "Mul"
- input: "train/gradients/AddN_2"
- input: "batch_normalization_1/gamma/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/mul"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/mul_1"
- op: "Mul"
- input: "dnn/batch_normalization_2/batchnorm/Rsqrt"
- input: "train/gradients/AddN_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_grad/zeros_like"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_grad/Select"
- op: "Select"
- input: "dnn/batch_normalization_2/Reshape"
- input: "train/gradients/dnn/batch_normalization_2/Squeeze_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_2/Select_grad/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_grad/Select_1"
- op: "Select"
- input: "dnn/batch_normalization_2/Reshape"
- input: "train/gradients/dnn/batch_normalization_2/Select_grad/zeros_like"
- input: "train/gradients/dnn/batch_normalization_2/Squeeze_grad/Reshape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_2/Select_grad/Select"
- input: "^train/gradients/dnn/batch_normalization_2/Select_grad/Select_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/Select_grad/Select"
- input: "^train/gradients/dnn/batch_normalization_2/Select_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/Select_grad/Select"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/Select_grad/Select_1"
- input: "^train/gradients/dnn/batch_normalization_2/Select_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/Select_grad/Select_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/Rsqrt_grad/RsqrtGrad"
- op: "RsqrtGrad"
- input: "dnn/batch_normalization_2/batchnorm/Rsqrt"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/ExpandDims_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/ExpandDims_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/Select_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_2/ExpandDims_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/Rsqrt_grad/RsqrtGrad"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/Rsqrt_grad/RsqrtGrad"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000d\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/ExpandDims_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Squeeze_1_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000d\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Squeeze_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_2/Squeeze_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_1_grad/zeros_like"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_1_grad/Select"
- op: "Select"
- input: "dnn/batch_normalization_2/Reshape_1"
- input: "train/gradients/dnn/batch_normalization_2/Squeeze_1_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_2/Select_1_grad/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_1_grad/Select_1"
- op: "Select"
- input: "dnn/batch_normalization_2/Reshape_1"
- input: "train/gradients/dnn/batch_normalization_2/Select_1_grad/zeros_like"
- input: "train/gradients/dnn/batch_normalization_2/Squeeze_1_grad/Reshape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_2/Select_1_grad/Select"
- input: "^train/gradients/dnn/batch_normalization_2/Select_1_grad/Select_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/Select_1_grad/Select"
- input: "^train/gradients/dnn/batch_normalization_2/Select_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/Select_1_grad/Select"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/Select_1_grad/Select_1"
- input: "^train/gradients/dnn/batch_normalization_2/Select_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/Select_1_grad/Select_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/ExpandDims_2_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/ExpandDims_2_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/Select_1_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_2/ExpandDims_2_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_1_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000d\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/ExpandDims_2_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- op: "Shape"
- input: "dnn/batch_normalization_2/moments/SquaredDifference"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Size"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/add"
- op: "Add"
- input: "dnn/batch_normalization_2/moments/variance/reduction_indices"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/mod"
- op: "FloorMod"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/add"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/range/start"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/range/delta"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/range"
- op: "Range"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/range/start"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Size"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/range/delta"
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Fill/value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Fill"
- op: "Fill"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_1"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Fill/value"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/DynamicStitch"
- op: "DynamicStitch"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/range"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/mod"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Fill"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/DynamicStitch"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/floordiv"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_1_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/DynamicStitch"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Tile"
- op: "Tile"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/floordiv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2"
- op: "Shape"
- input: "dnn/batch_normalization_2/moments/SquaredDifference"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_3"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000d\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Prod"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Const_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Prod_1"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_3"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum_1/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum_1"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Prod_1"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum_1/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/floordiv_1"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Prod"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Cast"
- op: "Cast"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/floordiv_1"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/truediv"
- op: "RealDiv"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Tile"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Shape"
- op: "Shape"
- input: "dnn/hidden2/Elu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000d\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/scalar"
- op: "Const"
- input: "^train/gradients/dnn/batch_normalization_2/moments/variance_grad/truediv"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 2.0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/mul"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/scalar"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/truediv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/sub"
- op: "Sub"
- input: "dnn/hidden2/Elu"
- input: "dnn/batch_normalization_2/moments/StopGradient"
- input: "^train/gradients/dnn/batch_normalization_2/moments/variance_grad/truediv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/mul_1"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/mul"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Neg"
- op: "Neg"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Reshape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Neg"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Neg"
- input: "^train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Neg"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- op: "Shape"
- input: "dnn/hidden2/Elu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Size"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/add"
- op: "Add"
- input: "dnn/batch_normalization_2/moments/mean/reduction_indices"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/mod"
- op: "FloorMod"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/add"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/range/start"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/range/delta"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/range"
- op: "Range"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/range/start"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Size"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/range/delta"
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Fill/value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Fill"
- op: "Fill"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_1"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Fill/value"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/DynamicStitch"
- op: "DynamicStitch"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/range"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/mod"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Fill"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/DynamicStitch"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/floordiv"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/DynamicStitch"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Tile"
- op: "Tile"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/floordiv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2"
- op: "Shape"
- input: "dnn/hidden2/Elu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_3"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000d\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Prod"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Const_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Prod_1"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_3"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum_1/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum_1"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Prod_1"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum_1/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/floordiv_1"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Prod"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Cast"
- op: "Cast"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/floordiv_1"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/truediv"
- op: "RealDiv"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Tile"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/AddN_3"
- op: "AddN"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/truediv"
- attr {
- key: "N"
- value {
- i: 3
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/Elu_grad/EluGrad"
- op: "EluGrad"
- input: "train/gradients/AddN_3"
- input: "dnn/hidden2/Elu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/BiasAdd_grad/BiasAddGrad"
- op: "BiasAddGrad"
- input: "train/gradients/dnn/hidden2/Elu_grad/EluGrad"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "data_format"
- value {
- s: "NHWC"
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/BiasAdd_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/hidden2/Elu_grad/EluGrad"
- input: "^train/gradients/dnn/hidden2/BiasAdd_grad/BiasAddGrad"
- }
- node {
- name: "train/gradients/dnn/hidden2/BiasAdd_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/hidden2/Elu_grad/EluGrad"
- input: "^train/gradients/dnn/hidden2/BiasAdd_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden2/Elu_grad/EluGrad"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/BiasAdd_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden2/BiasAdd_grad/BiasAddGrad"
- input: "^train/gradients/dnn/hidden2/BiasAdd_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden2/BiasAdd_grad/BiasAddGrad"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/MatMul_grad/MatMul"
- op: "MatMul"
- input: "train/gradients/dnn/hidden2/BiasAdd_grad/tuple/control_dependency"
- input: "hidden2/kernel/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/MatMul_grad/MatMul_1"
- op: "MatMul"
- input: "dnn/Elu"
- input: "train/gradients/dnn/hidden2/BiasAdd_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/MatMul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/hidden2/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/hidden2/MatMul_grad/MatMul_1"
- }
- node {
- name: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/hidden2/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/hidden2/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden2/MatMul_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden2/MatMul_grad/MatMul_1"
- input: "^train/gradients/dnn/hidden2/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden2/MatMul_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/Elu_grad/EluGrad"
- op: "EluGrad"
- input: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency"
- input: "dnn/Elu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Shape"
- op: "Shape"
- input: "dnn/batch_normalization/batchnorm/mul_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Shape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/Elu_grad/EluGrad"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/Elu_grad/EluGrad"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Shape"
- op: "Shape"
- input: "dnn/hidden1/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Shape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/mul"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/control_dependency"
- input: "dnn/batch_normalization/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/mul"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/mul_1"
- op: "Mul"
- input: "dnn/hidden1/Maximum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Shape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/control_dependency_1"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/control_dependency_1"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Neg"
- op: "Neg"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Sum_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Neg"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Shape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/mul"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/control_dependency_1"
- input: "dnn/batch_normalization/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/mul"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/mul_1"
- op: "Mul"
- input: "dnn/batch_normalization/Squeeze"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Squeeze_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000,\001\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Squeeze_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization/Squeeze_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/AddN_4"
- op: "AddN"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/tuple/control_dependency_1"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/tuple/control_dependency_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Shape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/mul"
- op: "Mul"
- input: "train/gradients/AddN_4"
- input: "batch_normalization/gamma/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/mul"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/mul_1"
- op: "Mul"
- input: "dnn/batch_normalization/batchnorm/Rsqrt"
- input: "train/gradients/AddN_4"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_grad/zeros_like"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_grad/Select"
- op: "Select"
- input: "dnn/batch_normalization/Reshape"
- input: "train/gradients/dnn/batch_normalization/Squeeze_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization/Select_grad/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_grad/Select_1"
- op: "Select"
- input: "dnn/batch_normalization/Reshape"
- input: "train/gradients/dnn/batch_normalization/Select_grad/zeros_like"
- input: "train/gradients/dnn/batch_normalization/Squeeze_grad/Reshape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization/Select_grad/Select"
- input: "^train/gradients/dnn/batch_normalization/Select_grad/Select_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/Select_grad/Select"
- input: "^train/gradients/dnn/batch_normalization/Select_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/Select_grad/Select"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/Select_grad/Select_1"
- input: "^train/gradients/dnn/batch_normalization/Select_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/Select_grad/Select_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/Rsqrt_grad/RsqrtGrad"
- op: "RsqrtGrad"
- input: "dnn/batch_normalization/batchnorm/Rsqrt"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/ExpandDims_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/ExpandDims_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/Select_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization/ExpandDims_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Shape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/Rsqrt_grad/RsqrtGrad"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/Rsqrt_grad/RsqrtGrad"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/Squeeze_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000,\001\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/Squeeze_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/ExpandDims_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization/moments/Squeeze_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Squeeze_1_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000,\001\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Squeeze_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization/Squeeze_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_1_grad/zeros_like"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_1_grad/Select"
- op: "Select"
- input: "dnn/batch_normalization/Reshape_1"
- input: "train/gradients/dnn/batch_normalization/Squeeze_1_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization/Select_1_grad/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_1_grad/Select_1"
- op: "Select"
- input: "dnn/batch_normalization/Reshape_1"
- input: "train/gradients/dnn/batch_normalization/Select_1_grad/zeros_like"
- input: "train/gradients/dnn/batch_normalization/Squeeze_1_grad/Reshape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization/Select_1_grad/Select"
- input: "^train/gradients/dnn/batch_normalization/Select_1_grad/Select_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/Select_1_grad/Select"
- input: "^train/gradients/dnn/batch_normalization/Select_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/Select_1_grad/Select"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/Select_1_grad/Select_1"
- input: "^train/gradients/dnn/batch_normalization/Select_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/Select_1_grad/Select_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/ExpandDims_2_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/ExpandDims_2_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/Select_1_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization/ExpandDims_2_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/Squeeze_1_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000,\001\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/Squeeze_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/ExpandDims_2_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization/moments/Squeeze_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- op: "Shape"
- input: "dnn/batch_normalization/moments/SquaredDifference"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Size"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/add"
- op: "Add"
- input: "dnn/batch_normalization/moments/variance/reduction_indices"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/mod"
- op: "FloorMod"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/add"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/range/start"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/range/delta"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/range"
- op: "Range"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/range/start"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Size"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/range/delta"
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Fill/value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Fill"
- op: "Fill"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_1"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Fill/value"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/DynamicStitch"
- op: "DynamicStitch"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/range"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/mod"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Fill"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/DynamicStitch"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/floordiv"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/moments/Squeeze_1_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/DynamicStitch"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Tile"
- op: "Tile"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/floordiv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2"
- op: "Shape"
- input: "dnn/batch_normalization/moments/SquaredDifference"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_3"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000,\001\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Prod"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Const_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Prod_1"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_3"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum_1/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum_1"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Prod_1"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum_1/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/floordiv_1"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Prod"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Cast"
- op: "Cast"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/floordiv_1"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/truediv"
- op: "RealDiv"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Tile"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Shape"
- op: "Shape"
- input: "dnn/hidden1/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000,\001\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Shape"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/scalar"
- op: "Const"
- input: "^train/gradients/dnn/batch_normalization/moments/variance_grad/truediv"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 2.0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/mul"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/scalar"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/truediv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/sub"
- op: "Sub"
- input: "dnn/hidden1/Maximum"
- input: "dnn/batch_normalization/moments/StopGradient"
- input: "^train/gradients/dnn/batch_normalization/moments/variance_grad/truediv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/mul_1"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/mul"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Sum"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Neg"
- op: "Neg"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Reshape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Neg"
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Neg"
- input: "^train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Neg"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- op: "Shape"
- input: "dnn/hidden1/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Size"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/add"
- op: "Add"
- input: "dnn/batch_normalization/moments/mean/reduction_indices"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/mod"
- op: "FloorMod"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/add"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/range/start"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/range/delta"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/range"
- op: "Range"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/range/start"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Size"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/range/delta"
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Fill/value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Fill"
- op: "Fill"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_1"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Fill/value"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/DynamicStitch"
- op: "DynamicStitch"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/range"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/mod"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Fill"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/DynamicStitch"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/floordiv"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/moments/Squeeze_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/DynamicStitch"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Tile"
- op: "Tile"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/floordiv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2"
- op: "Shape"
- input: "dnn/hidden1/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_3"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000,\001\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Prod"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Const_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Prod_1"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_3"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum_1/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum_1"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Prod_1"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum_1/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/floordiv_1"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Prod"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Cast"
- op: "Cast"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/floordiv_1"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/truediv"
- op: "RealDiv"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Tile"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/AddN_5"
- op: "AddN"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/truediv"
- attr {
- key: "N"
- value {
- i: 3
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Shape"
- op: "Shape"
- input: "dnn/hidden1/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Shape_1"
- op: "Shape"
- input: "dnn/hidden1/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Shape_2"
- op: "Shape"
- input: "train/gradients/AddN_5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/zeros/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/zeros"
- op: "Fill"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Shape_2"
- input: "train/gradients/dnn/hidden1/Maximum_grad/zeros/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/GreaterEqual"
- op: "GreaterEqual"
- input: "dnn/hidden1/mul"
- input: "dnn/hidden1/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Shape"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Select"
- op: "Select"
- input: "train/gradients/dnn/hidden1/Maximum_grad/GreaterEqual"
- input: "train/gradients/AddN_5"
- input: "train/gradients/dnn/hidden1/Maximum_grad/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Select_1"
- op: "Select"
- input: "train/gradients/dnn/hidden1/Maximum_grad/GreaterEqual"
- input: "train/gradients/dnn/hidden1/Maximum_grad/zeros"
- input: "train/gradients/AddN_5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Select"
- input: "train/gradients/dnn/hidden1/Maximum_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Sum"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Select_1"
- input: "train/gradients/dnn/hidden1/Maximum_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Sum_1"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/hidden1/Maximum_grad/Reshape"
- input: "^train/gradients/dnn/hidden1/Maximum_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Reshape"
- input: "^train/gradients/dnn/hidden1/Maximum_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/Maximum_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Reshape_1"
- input: "^train/gradients/dnn/hidden1/Maximum_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/Maximum_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Shape_1"
- op: "Shape"
- input: "dnn/hidden1/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/hidden1/mul_grad/Shape"
- input: "train/gradients/dnn/hidden1/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/mul"
- op: "Mul"
- input: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency"
- input: "dnn/hidden1/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/hidden1/mul_grad/mul"
- input: "train/gradients/dnn/hidden1/mul_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/hidden1/mul_grad/Sum"
- input: "train/gradients/dnn/hidden1/mul_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/mul_1"
- op: "Mul"
- input: "dnn/hidden1/mul/x"
- input: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/hidden1/mul_grad/mul_1"
- input: "train/gradients/dnn/hidden1/mul_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/hidden1/mul_grad/Sum_1"
- input: "train/gradients/dnn/hidden1/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/hidden1/mul_grad/Reshape"
- input: "^train/gradients/dnn/hidden1/mul_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/mul_grad/Reshape"
- input: "^train/gradients/dnn/hidden1/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/mul_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/mul_grad/Reshape_1"
- input: "^train/gradients/dnn/hidden1/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/mul_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/AddN_6"
- op: "AddN"
- input: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency_1"
- input: "train/gradients/dnn/hidden1/mul_grad/tuple/control_dependency_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/Maximum_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/BiasAdd_grad/BiasAddGrad"
- op: "BiasAddGrad"
- input: "train/gradients/AddN_6"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "data_format"
- value {
- s: "NHWC"
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/BiasAdd_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/AddN_6"
- input: "^train/gradients/dnn/hidden1/BiasAdd_grad/BiasAddGrad"
- }
- node {
- name: "train/gradients/dnn/hidden1/BiasAdd_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/AddN_6"
- input: "^train/gradients/dnn/hidden1/BiasAdd_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/Maximum_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/BiasAdd_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/BiasAdd_grad/BiasAddGrad"
- input: "^train/gradients/dnn/hidden1/BiasAdd_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/BiasAdd_grad/BiasAddGrad"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/MatMul_grad/MatMul"
- op: "MatMul"
- input: "train/gradients/dnn/hidden1/BiasAdd_grad/tuple/control_dependency"
- input: "hidden1/kernel/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/MatMul_grad/MatMul_1"
- op: "MatMul"
- input: "X"
- input: "train/gradients/dnn/hidden1/BiasAdd_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/MatMul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/hidden1/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/hidden1/MatMul_grad/MatMul_1"
- }
- node {
- name: "train/gradients/dnn/hidden1/MatMul_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/hidden1/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/MatMul_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/MatMul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/MatMul_grad/MatMul_1"
- input: "^train/gradients/dnn/hidden1/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/MatMul_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/GradientDescent/learning_rate"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.009999999776482582
- }
- }
- }
- }
- node {
- name: "train/GradientDescent/update_hidden1/kernel/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "hidden1/kernel"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/hidden1/MatMul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_hidden1/bias/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "hidden1/bias"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/hidden1/BiasAdd_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_batch_normalization/gamma/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "batch_normalization/gamma"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_batch_normalization/beta/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "batch_normalization/beta"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_hidden2/kernel/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "hidden2/kernel"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_hidden2/bias/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "hidden2/bias"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/hidden2/BiasAdd_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_batch_normalization_1/gamma/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "batch_normalization_1/gamma"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_batch_normalization_1/beta/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "batch_normalization_1/beta"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_outputs/kernel/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "outputs/kernel"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_outputs/bias/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "outputs/bias"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/outputs/BiasAdd_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_batch_normalization_2/gamma/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "batch_normalization_2/gamma"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_batch_normalization_2/beta/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "batch_normalization_2/beta"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent"
- op: "NoOp"
- input: "^train/GradientDescent/update_hidden1/kernel/ApplyGradientDescent"
- input: "^train/GradientDescent/update_hidden1/bias/ApplyGradientDescent"
- input: "^train/GradientDescent/update_batch_normalization/gamma/ApplyGradientDescent"
- input: "^train/GradientDescent/update_batch_normalization/beta/ApplyGradientDescent"
- input: "^train/GradientDescent/update_hidden2/kernel/ApplyGradientDescent"
- input: "^train/GradientDescent/update_hidden2/bias/ApplyGradientDescent"
- input: "^train/GradientDescent/update_batch_normalization_1/gamma/ApplyGradientDescent"
- input: "^train/GradientDescent/update_batch_normalization_1/beta/ApplyGradientDescent"
- input: "^train/GradientDescent/update_outputs/kernel/ApplyGradientDescent"
- input: "^train/GradientDescent/update_outputs/bias/ApplyGradientDescent"
- input: "^train/GradientDescent/update_batch_normalization_2/gamma/ApplyGradientDescent"
- input: "^train/GradientDescent/update_batch_normalization_2/beta/ApplyGradientDescent"
- }
- node {
- name: "eval/in_top_k/InTopKV2/k"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT64
- tensor_shape {
- }
- int64_val: 1
- }
- }
- }
- }
- node {
- name: "eval/in_top_k/InTopKV2"
- op: "InTopKV2"
- input: "dnn/batch_normalization_3/batchnorm/add_1"
- input: "y"
- input: "eval/in_top_k/InTopKV2/k"
- attr {
- key: "T"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "eval/Cast"
- op: "Cast"
- input: "eval/in_top_k/InTopKV2"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "eval/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "eval/Mean"
- op: "Mean"
- input: "eval/Cast"
- input: "eval/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "init"
- op: "NoOp"
- input: "^hidden1/kernel/Assign"
- input: "^hidden1/bias/Assign"
- input: "^batch_normalization/gamma/Assign"
- input: "^batch_normalization/beta/Assign"
- input: "^batch_normalization/moving_mean/Assign"
- input: "^batch_normalization/moving_variance/Assign"
- input: "^hidden2/kernel/Assign"
- input: "^hidden2/bias/Assign"
- input: "^batch_normalization_1/gamma/Assign"
- input: "^batch_normalization_1/beta/Assign"
- input: "^batch_normalization_1/moving_mean/Assign"
- input: "^batch_normalization_1/moving_variance/Assign"
- input: "^outputs/kernel/Assign"
- input: "^outputs/bias/Assign"
- input: "^batch_normalization_2/gamma/Assign"
- input: "^batch_normalization_2/beta/Assign"
- input: "^batch_normalization_2/moving_mean/Assign"
- input: "^batch_normalization_2/moving_variance/Assign"
- }
- node {
- name: "Accuracy/tags"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "Accuracy"
- }
- }
- }
- }
- node {
- name: "Accuracy"
- op: "ScalarSummary"
- input: "Accuracy/tags"
- input: "eval/Mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "model"
- }
- }
- }
- }
- node {
- name: "save/StringJoin/inputs_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "_temp_2105935f653947478038680db7095a2a/part"
- }
- }
- }
- }
- node {
- name: "save/StringJoin"
- op: "StringJoin"
- input: "save/Const"
- input: "save/StringJoin/inputs_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "separator"
- value {
- s: ""
- }
- }
- }
- node {
- name: "save/num_shards"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename/shard"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename"
- op: "ShardedFilename"
- input: "save/StringJoin"
- input: "save/ShardedFilename/shard"
- input: "save/num_shards"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/SaveV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 18
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 18
- }
- }
- string_val: "batch_normalization/beta"
- string_val: "batch_normalization/gamma"
- string_val: "batch_normalization/moving_mean"
- string_val: "batch_normalization/moving_variance"
- string_val: "batch_normalization_1/beta"
- string_val: "batch_normalization_1/gamma"
- string_val: "batch_normalization_1/moving_mean"
- string_val: "batch_normalization_1/moving_variance"
- string_val: "batch_normalization_2/beta"
- string_val: "batch_normalization_2/gamma"
- string_val: "batch_normalization_2/moving_mean"
- string_val: "batch_normalization_2/moving_variance"
- string_val: "hidden1/bias"
- string_val: "hidden1/kernel"
- string_val: "hidden2/bias"
- string_val: "hidden2/kernel"
- string_val: "outputs/bias"
- string_val: "outputs/kernel"
- }
- }
- }
- }
- node {
- name: "save/SaveV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 18
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 18
- }
- }
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/SaveV2"
- op: "SaveV2"
- input: "save/ShardedFilename"
- input: "save/SaveV2/tensor_names"
- input: "save/SaveV2/shape_and_slices"
- input: "batch_normalization/beta"
- input: "batch_normalization/gamma"
- input: "batch_normalization/moving_mean"
- input: "batch_normalization/moving_variance"
- input: "batch_normalization_1/beta"
- input: "batch_normalization_1/gamma"
- input: "batch_normalization_1/moving_mean"
- input: "batch_normalization_1/moving_variance"
- input: "batch_normalization_2/beta"
- input: "batch_normalization_2/gamma"
- input: "batch_normalization_2/moving_mean"
- input: "batch_normalization_2/moving_variance"
- input: "hidden1/bias"
- input: "hidden1/kernel"
- input: "hidden2/bias"
- input: "hidden2/kernel"
- input: "outputs/bias"
- input: "outputs/kernel"
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/control_dependency"
- op: "Identity"
- input: "save/ShardedFilename"
- input: "^save/SaveV2"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@save/ShardedFilename"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints/checkpoint_prefixes"
- op: "Pack"
- input: "save/ShardedFilename"
- input: "^save/control_dependency"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints"
- op: "MergeV2Checkpoints"
- input: "save/MergeV2Checkpoints/checkpoint_prefixes"
- input: "save/Const"
- attr {
- key: "delete_old_dirs"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/Identity"
- op: "Identity"
- input: "save/Const"
- input: "^save/control_dependency"
- input: "^save/MergeV2Checkpoints"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization/beta"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2/tensor_names"
- input: "save/RestoreV2/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign"
- op: "Assign"
- input: "batch_normalization/beta"
- input: "save/RestoreV2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_1/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization/gamma"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_1/tensor_names"
- input: "save/RestoreV2_1/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_1"
- op: "Assign"
- input: "batch_normalization/gamma"
- input: "save/RestoreV2_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization/moving_mean"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_2/tensor_names"
- input: "save/RestoreV2_2/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_2"
- op: "Assign"
- input: "batch_normalization/moving_mean"
- input: "save/RestoreV2_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_3/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization/moving_variance"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_3/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_3"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_3/tensor_names"
- input: "save/RestoreV2_3/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_3"
- op: "Assign"
- input: "batch_normalization/moving_variance"
- input: "save/RestoreV2_3"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_4/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization_1/beta"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_4/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_4"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_4/tensor_names"
- input: "save/RestoreV2_4/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_4"
- op: "Assign"
- input: "batch_normalization_1/beta"
- input: "save/RestoreV2_4"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_5/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization_1/gamma"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_5/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_5"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_5/tensor_names"
- input: "save/RestoreV2_5/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_5"
- op: "Assign"
- input: "batch_normalization_1/gamma"
- input: "save/RestoreV2_5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_6/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization_1/moving_mean"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_6/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_6"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_6/tensor_names"
- input: "save/RestoreV2_6/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_6"
- op: "Assign"
- input: "batch_normalization_1/moving_mean"
- input: "save/RestoreV2_6"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_7/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization_1/moving_variance"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_7/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_7"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_7/tensor_names"
- input: "save/RestoreV2_7/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_7"
- op: "Assign"
- input: "batch_normalization_1/moving_variance"
- input: "save/RestoreV2_7"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_8/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization_2/beta"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_8/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_8"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_8/tensor_names"
- input: "save/RestoreV2_8/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_8"
- op: "Assign"
- input: "batch_normalization_2/beta"
- input: "save/RestoreV2_8"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_9/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization_2/gamma"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_9/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_9"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_9/tensor_names"
- input: "save/RestoreV2_9/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_9"
- op: "Assign"
- input: "batch_normalization_2/gamma"
- input: "save/RestoreV2_9"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_10/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization_2/moving_mean"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_10/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_10"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_10/tensor_names"
- input: "save/RestoreV2_10/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_10"
- op: "Assign"
- input: "batch_normalization_2/moving_mean"
- input: "save/RestoreV2_10"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_11/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization_2/moving_variance"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_11/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_11"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_11/tensor_names"
- input: "save/RestoreV2_11/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_11"
- op: "Assign"
- input: "batch_normalization_2/moving_variance"
- input: "save/RestoreV2_11"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_12/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "hidden1/bias"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_12/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_12"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_12/tensor_names"
- input: "save/RestoreV2_12/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_12"
- op: "Assign"
- input: "hidden1/bias"
- input: "save/RestoreV2_12"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_13/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "hidden1/kernel"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_13/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_13"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_13/tensor_names"
- input: "save/RestoreV2_13/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_13"
- op: "Assign"
- input: "hidden1/kernel"
- input: "save/RestoreV2_13"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_14/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "hidden2/bias"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_14/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_14"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_14/tensor_names"
- input: "save/RestoreV2_14/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_14"
- op: "Assign"
- input: "hidden2/bias"
- input: "save/RestoreV2_14"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_15/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "hidden2/kernel"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_15/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_15"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_15/tensor_names"
- input: "save/RestoreV2_15/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_15"
- op: "Assign"
- input: "hidden2/kernel"
- input: "save/RestoreV2_15"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_16/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "outputs/bias"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_16/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_16"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_16/tensor_names"
- input: "save/RestoreV2_16/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_16"
- op: "Assign"
- input: "outputs/bias"
- input: "save/RestoreV2_16"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_17/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "outputs/kernel"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_17/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_17"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_17/tensor_names"
- input: "save/RestoreV2_17/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_17"
- op: "Assign"
- input: "outputs/kernel"
- input: "save/RestoreV2_17"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/restore_shard"
- op: "NoOp"
- input: "^save/Assign"
- input: "^save/Assign_1"
- input: "^save/Assign_2"
- input: "^save/Assign_3"
- input: "^save/Assign_4"
- input: "^save/Assign_5"
- input: "^save/Assign_6"
- input: "^save/Assign_7"
- input: "^save/Assign_8"
- input: "^save/Assign_9"
- input: "^save/Assign_10"
- input: "^save/Assign_11"
- input: "^save/Assign_12"
- input: "^save/Assign_13"
- input: "^save/Assign_14"
- input: "^save/Assign_15"
- input: "^save/Assign_16"
- input: "^save/Assign_17"
- }
- node {
- name: "save/restore_all"
- op: "NoOp"
- input: "^save/restore_shard"
- }
- versions {
- producer: 24
- }
- }
- saver_def {
- filename_tensor_name: "save/Const:0"
- save_tensor_name: "save/Identity:0"
- restore_op_name: "save/restore_all"
- max_to_keep: 5
- sharded: true
- keep_checkpoint_every_n_hours: 10000.0
- version: V2
- }
- collection_def {
- key: "summaries"
- value {
- node_list {
- value: "Accuracy:0"
- }
- }
- }
- collection_def {
- key: "train_op"
- value {
- node_list {
- value: "train/GradientDescent"
- }
- }
- }
- collection_def {
- key: "trainable_variables"
- value {
- bytes_list {
- value: "\n\020hidden1/kernel:0\022\025hidden1/kernel/Assign\032\025hidden1/kernel/read:02-hidden1/kernel/Initializer/truncated_normal:0"
- value: "\n\016hidden1/bias:0\022\023hidden1/bias/Assign\032\023hidden1/bias/read:02 hidden1/bias/Initializer/zeros:0"
- value: "\n\033batch_normalization/gamma:0\022 batch_normalization/gamma/Assign\032 batch_normalization/gamma/read:02,batch_normalization/gamma/Initializer/ones:0"
- value: "\n\032batch_normalization/beta:0\022\037batch_normalization/beta/Assign\032\037batch_normalization/beta/read:02,batch_normalization/beta/Initializer/zeros:0"
- value: "\n\020hidden2/kernel:0\022\025hidden2/kernel/Assign\032\025hidden2/kernel/read:02-hidden2/kernel/Initializer/truncated_normal:0"
- value: "\n\016hidden2/bias:0\022\023hidden2/bias/Assign\032\023hidden2/bias/read:02 hidden2/bias/Initializer/zeros:0"
- value: "\n\035batch_normalization_1/gamma:0\022\"batch_normalization_1/gamma/Assign\032\"batch_normalization_1/gamma/read:02.batch_normalization_1/gamma/Initializer/ones:0"
- value: "\n\034batch_normalization_1/beta:0\022!batch_normalization_1/beta/Assign\032!batch_normalization_1/beta/read:02.batch_normalization_1/beta/Initializer/zeros:0"
- value: "\n\020outputs/kernel:0\022\025outputs/kernel/Assign\032\025outputs/kernel/read:02-outputs/kernel/Initializer/truncated_normal:0"
- value: "\n\016outputs/bias:0\022\023outputs/bias/Assign\032\023outputs/bias/read:02 outputs/bias/Initializer/zeros:0"
- value: "\n\035batch_normalization_2/gamma:0\022\"batch_normalization_2/gamma/Assign\032\"batch_normalization_2/gamma/read:02.batch_normalization_2/gamma/Initializer/ones:0"
- value: "\n\034batch_normalization_2/beta:0\022!batch_normalization_2/beta/Assign\032!batch_normalization_2/beta/read:02.batch_normalization_2/beta/Initializer/zeros:0"
- }
- }
- }
- collection_def {
- key: "update_ops"
- value {
- node_list {
- value: "dnn/batch_normalization/AssignMovingAvg:0"
- value: "dnn/batch_normalization/AssignMovingAvg_1:0"
- value: "dnn/batch_normalization_2/AssignMovingAvg:0"
- value: "dnn/batch_normalization_2/AssignMovingAvg_1:0"
- value: "dnn/batch_normalization_3/AssignMovingAvg:0"
- value: "dnn/batch_normalization_3/AssignMovingAvg_1:0"
- }
- }
- }
- collection_def {
- key: "variables"
- value {
- bytes_list {
- value: "\n\020hidden1/kernel:0\022\025hidden1/kernel/Assign\032\025hidden1/kernel/read:02-hidden1/kernel/Initializer/truncated_normal:0"
- value: "\n\016hidden1/bias:0\022\023hidden1/bias/Assign\032\023hidden1/bias/read:02 hidden1/bias/Initializer/zeros:0"
- value: "\n\033batch_normalization/gamma:0\022 batch_normalization/gamma/Assign\032 batch_normalization/gamma/read:02,batch_normalization/gamma/Initializer/ones:0"
- value: "\n\032batch_normalization/beta:0\022\037batch_normalization/beta/Assign\032\037batch_normalization/beta/read:02,batch_normalization/beta/Initializer/zeros:0"
- value: "\n!batch_normalization/moving_mean:0\022&batch_normalization/moving_mean/Assign\032&batch_normalization/moving_mean/read:023batch_normalization/moving_mean/Initializer/zeros:0"
- value: "\n%batch_normalization/moving_variance:0\022*batch_normalization/moving_variance/Assign\032*batch_normalization/moving_variance/read:026batch_normalization/moving_variance/Initializer/ones:0"
- value: "\n\020hidden2/kernel:0\022\025hidden2/kernel/Assign\032\025hidden2/kernel/read:02-hidden2/kernel/Initializer/truncated_normal:0"
- value: "\n\016hidden2/bias:0\022\023hidden2/bias/Assign\032\023hidden2/bias/read:02 hidden2/bias/Initializer/zeros:0"
- value: "\n\035batch_normalization_1/gamma:0\022\"batch_normalization_1/gamma/Assign\032\"batch_normalization_1/gamma/read:02.batch_normalization_1/gamma/Initializer/ones:0"
- value: "\n\034batch_normalization_1/beta:0\022!batch_normalization_1/beta/Assign\032!batch_normalization_1/beta/read:02.batch_normalization_1/beta/Initializer/zeros:0"
- value: "\n#batch_normalization_1/moving_mean:0\022(batch_normalization_1/moving_mean/Assign\032(batch_normalization_1/moving_mean/read:025batch_normalization_1/moving_mean/Initializer/zeros:0"
- value: "\n\'batch_normalization_1/moving_variance:0\022,batch_normalization_1/moving_variance/Assign\032,batch_normalization_1/moving_variance/read:028batch_normalization_1/moving_variance/Initializer/ones:0"
- value: "\n\020outputs/kernel:0\022\025outputs/kernel/Assign\032\025outputs/kernel/read:02-outputs/kernel/Initializer/truncated_normal:0"
- value: "\n\016outputs/bias:0\022\023outputs/bias/Assign\032\023outputs/bias/read:02 outputs/bias/Initializer/zeros:0"
- value: "\n\035batch_normalization_2/gamma:0\022\"batch_normalization_2/gamma/Assign\032\"batch_normalization_2/gamma/read:02.batch_normalization_2/gamma/Initializer/ones:0"
- value: "\n\034batch_normalization_2/beta:0\022!batch_normalization_2/beta/Assign\032!batch_normalization_2/beta/read:02.batch_normalization_2/beta/Initializer/zeros:0"
- value: "\n#batch_normalization_2/moving_mean:0\022(batch_normalization_2/moving_mean/Assign\032(batch_normalization_2/moving_mean/read:025batch_normalization_2/moving_mean/Initializer/zeros:0"
- value: "\n\'batch_normalization_2/moving_variance:0\022,batch_normalization_2/moving_variance/Assign\032,batch_normalization_2/moving_variance/read:028batch_normalization_2/moving_variance/Initializer/ones:0"
- }
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "x"
- value {
- name: "X:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- outputs {
- key: "y"
- value {
- name: "dnn/batch_normalization_3/batchnorm/add_1:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/batch_norm/saved/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/batch_norm/saved/variables/variables.data-00000-of-00001
deleted file mode 100644
index 875e8361e10..00000000000
--- a/model-integration/src/test/models/tensorflow/batch_norm/saved/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/batch_norm/saved/variables/variables.index b/model-integration/src/test/models/tensorflow/batch_norm/saved/variables/variables.index
deleted file mode 100644
index 46c7b258cf5..00000000000
--- a/model-integration/src/test/models/tensorflow/batch_norm/saved/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/blog/saved/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/blog/saved/saved_model.pbtxt
deleted file mode 100644
index a669e69b709..00000000000
--- a/model-integration/src/test/models/tensorflow/blog/saved/saved_model.pbtxt
+++ /dev/null
@@ -1,14726 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Add"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "AddN"
- input_arg {
- name: "inputs"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "sum"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- type: DT_VARIANT
- }
- }
- }
- is_aggregate: true
- is_commutative: true
- }
- op {
- name: "ApplyAdagrad"
- input_arg {
- name: "var"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "accum"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "lr"
- type_attr: "T"
- }
- input_arg {
- name: "grad"
- type_attr: "T"
- }
- output_arg {
- name: "out"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: false
- }
- }
- }
- op {
- name: "Assign"
- input_arg {
- name: "ref"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output_ref"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "validate_shape"
- type: "bool"
- default_value {
- b: true
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: true
- }
- }
- allows_uninitialized_input: true
- }
- op {
- name: "AssignAdd"
- input_arg {
- name: "ref"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output_ref"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: false
- }
- }
- }
- op {
- name: "BroadcastGradientArgs"
- input_arg {
- name: "s0"
- type_attr: "T"
- }
- input_arg {
- name: "s1"
- type_attr: "T"
- }
- output_arg {
- name: "r0"
- type_attr: "T"
- }
- output_arg {
- name: "r1"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Cast"
- input_arg {
- name: "x"
- type_attr: "SrcT"
- }
- output_arg {
- name: "y"
- type_attr: "DstT"
- }
- attr {
- name: "SrcT"
- type: "type"
- }
- attr {
- name: "DstT"
- type: "type"
- }
- }
- op {
- name: "ConcatV2"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- input_arg {
- name: "axis"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 2
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "Equal"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_QUINT8
- type: DT_QINT8
- type: DT_QINT32
- type: DT_STRING
- type: DT_BOOL
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Fill"
- input_arg {
- name: "dims"
- type: DT_INT32
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "FloorDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "GreaterEqual"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_UINT16
- type: DT_HALF
- }
- }
- }
- }
- op {
- name: "Identity"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "LessEqual"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_UINT16
- type: DT_HALF
- }
- }
- }
- }
- op {
- name: "Log"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Maximum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mean"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "MergeSummary"
- input_arg {
- name: "inputs"
- type: DT_STRING
- number_attr: "N"
- }
- output_arg {
- name: "summary"
- type: DT_STRING
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- }
- op {
- name: "MergeV2Checkpoints"
- input_arg {
- name: "checkpoint_prefixes"
- type: DT_STRING
- }
- input_arg {
- name: "destination_prefix"
- type: DT_STRING
- }
- attr {
- name: "delete_old_dirs"
- type: "bool"
- default_value {
- b: true
- }
- }
- is_stateful: true
- }
- op {
- name: "Minimum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Neg"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "NoOp"
- }
- op {
- name: "Pack"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "axis"
- type: "int"
- default_value {
- i: 0
- }
- }
- }
- op {
- name: "Placeholder"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- default_value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- op {
- name: "Prod"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RandomUniform"
- input_arg {
- name: "shape"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "seed"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "seed2"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "dtype"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_stateful: true
- }
- op {
- name: "RealDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Reciprocal"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Relu"
- input_arg {
- name: "features"
- type_attr: "T"
- }
- output_arg {
- name: "activations"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_UINT16
- type: DT_HALF
- }
- }
- }
- }
- op {
- name: "ReluGrad"
- input_arg {
- name: "gradients"
- type_attr: "T"
- }
- input_arg {
- name: "features"
- type_attr: "T"
- }
- output_arg {
- name: "backprops"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_UINT16
- type: DT_HALF
- }
- }
- }
- }
- op {
- name: "Reshape"
- input_arg {
- name: "tensor"
- type_attr: "T"
- }
- input_arg {
- name: "shape"
- type_attr: "Tshape"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tshape"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RestoreV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- output_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "SaveV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- input_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "ScalarSummary"
- input_arg {
- name: "tags"
- type: DT_STRING
- }
- input_arg {
- name: "values"
- type_attr: "T"
- }
- output_arg {
- name: "summary"
- type: DT_STRING
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_UINT16
- type: DT_HALF
- }
- }
- }
- }
- op {
- name: "Select"
- input_arg {
- name: "condition"
- type: DT_BOOL
- }
- input_arg {
- name: "t"
- type_attr: "T"
- }
- input_arg {
- name: "e"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "Shape"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "out_type"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "out_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "ShardedFilename"
- input_arg {
- name: "basename"
- type: DT_STRING
- }
- input_arg {
- name: "shard"
- type: DT_INT32
- }
- input_arg {
- name: "num_shards"
- type: DT_INT32
- }
- output_arg {
- name: "filename"
- type: DT_STRING
- }
- }
- op {
- name: "Sigmoid"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "SigmoidGrad"
- input_arg {
- name: "y"
- type_attr: "T"
- }
- input_arg {
- name: "dy"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "StringJoin"
- input_arg {
- name: "inputs"
- type: DT_STRING
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type: DT_STRING
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "separator"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Sub"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Sum"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Tile"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "multiples"
- type_attr: "Tmultiples"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tmultiples"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "TruncatedNormal"
- input_arg {
- name: "shape"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "seed"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "seed2"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "dtype"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_stateful: true
- }
- op {
- name: "VariableV2"
- output_arg {
- name: "ref"
- type_attr: "dtype"
- is_ref: true
- }
- attr {
- name: "shape"
- type: "shape"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "container"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "shared_name"
- type: "string"
- default_value {
- s: ""
- }
- }
- is_stateful: true
- }
- }
- tags: "serve"
- tensorflow_version: "1.4.1"
- tensorflow_git_version: "v1.4.0-19-ga52c8d9"
- }
- graph_def {
- node {
- name: "input_u"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- node {
- name: "input_d"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- node {
- name: "input_y"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- node {
- name: "input_concat/axis"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "input_concat"
- op: "ConcatV2"
- input: "input_d"
- input: "input_u"
- input: "input_concat/axis"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 256
- }
- }
- }
- }
- }
- }
- node {
- name: "truncated_normal/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\000\001\000\000\000\002\000\000"
- }
- }
- }
- }
- node {
- name: "truncated_normal/mean"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "truncated_normal/stddev"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "truncated_normal/TruncatedNormal"
- op: "TruncatedNormal"
- input: "truncated_normal/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "truncated_normal/mul"
- op: "Mul"
- input: "truncated_normal/TruncatedNormal"
- input: "truncated_normal/stddev"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "truncated_normal"
- op: "Add"
- input: "truncated_normal/mul"
- input: "truncated_normal/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "W_hidden"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "W_hidden/Assign"
- op: "Assign"
- input: "W_hidden"
- input: "truncated_normal"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "W_hidden/read"
- op: "Identity"
- input: "W_hidden"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 512
- }
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "b_hidden"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "b_hidden/Assign"
- op: "Assign"
- input: "b_hidden"
- input: "Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "b_hidden/read"
- op: "Identity"
- input: "b_hidden"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "MatMul"
- op: "MatMul"
- input: "input_concat"
- input: "W_hidden/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "add"
- op: "Add"
- input: "MatMul"
- input: "b_hidden/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "hidden_layer"
- op: "Relu"
- input: "add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "truncated_normal_1/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\000\002\000\000\200\000\000\000"
- }
- }
- }
- }
- node {
- name: "truncated_normal_1/mean"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "truncated_normal_1/stddev"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "truncated_normal_1/TruncatedNormal"
- op: "TruncatedNormal"
- input: "truncated_normal_1/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "truncated_normal_1/mul"
- op: "Mul"
- input: "truncated_normal_1/TruncatedNormal"
- input: "truncated_normal_1/stddev"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "truncated_normal_1"
- op: "Add"
- input: "truncated_normal_1/mul"
- input: "truncated_normal_1/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "W_hidden_2"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "W_hidden_2/Assign"
- op: "Assign"
- input: "W_hidden_2"
- input: "truncated_normal_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "W_hidden_2/read"
- op: "Identity"
- input: "W_hidden_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 128
- }
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "b_hidden_2"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "b_hidden_2/Assign"
- op: "Assign"
- input: "b_hidden_2"
- input: "Const_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "b_hidden_2/read"
- op: "Identity"
- input: "b_hidden_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "MatMul_1"
- op: "MatMul"
- input: "hidden_layer"
- input: "W_hidden_2/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "add_1"
- op: "Add"
- input: "MatMul_1"
- input: "b_hidden_2/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "hidden_layer_2"
- op: "Relu"
- input: "add_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "random_uniform/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\200\000\000\000\001\000\000\000"
- }
- }
- }
- }
- node {
- name: "random_uniform/min"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: -0.10000000149011612
- }
- }
- }
- }
- node {
- name: "random_uniform/max"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "random_uniform/RandomUniform"
- op: "RandomUniform"
- input: "random_uniform/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "random_uniform/sub"
- op: "Sub"
- input: "random_uniform/max"
- input: "random_uniform/min"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "random_uniform/mul"
- op: "Mul"
- input: "random_uniform/RandomUniform"
- input: "random_uniform/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "random_uniform"
- op: "Add"
- input: "random_uniform/mul"
- input: "random_uniform/min"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "W_final"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "W_final/Assign"
- op: "Assign"
- input: "W_final"
- input: "random_uniform"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "W_final/read"
- op: "Identity"
- input: "W_final"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "zeros"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "b_final"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "b_final/Assign"
- op: "Assign"
- input: "b_final"
- input: "zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "b_final/read"
- op: "Identity"
- input: "b_final"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "MatMul_2"
- op: "MatMul"
- input: "hidden_layer_2"
- input: "W_final/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "add_2"
- op: "Add"
- input: "MatMul_2"
- input: "b_final/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "y"
- op: "Sigmoid"
- input: "add_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "GreaterEqual/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.5
- }
- }
- }
- }
- node {
- name: "GreaterEqual"
- op: "GreaterEqual"
- input: "y"
- input: "GreaterEqual/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "prediction"
- op: "Cast"
- input: "GreaterEqual"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "clip_by_value/Minimum/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.9999899864196777
- }
- }
- }
- }
- node {
- name: "clip_by_value/Minimum"
- op: "Minimum"
- input: "y"
- input: "clip_by_value/Minimum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "clip_by_value/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 9.999999747378752e-06
- }
- }
- }
- }
- node {
- name: "clip_by_value"
- op: "Maximum"
- input: "clip_by_value/Minimum"
- input: "clip_by_value/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "Neg"
- op: "Neg"
- input: "input_y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "Log"
- op: "Log"
- input: "clip_by_value"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "mul"
- op: "Mul"
- input: "Neg"
- input: "Log"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "sub/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "sub"
- op: "Sub"
- input: "sub/x"
- input: "input_y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "sub_1/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "sub_1"
- op: "Sub"
- input: "sub_1/x"
- input: "clip_by_value"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "Log_1"
- op: "Log"
- input: "sub_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "mul_1"
- op: "Mul"
- input: "sub"
- input: "Log_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "sub_2"
- op: "Sub"
- input: "mul"
- input: "mul_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "Const_2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\000\000\000\000\001\000\000\000"
- }
- }
- }
- }
- node {
- name: "loss"
- op: "Mean"
- input: "sub_2"
- input: "Const_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "Equal"
- op: "Equal"
- input: "prediction"
- input: "input_y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "Cast"
- op: "Cast"
- input: "Equal"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "Const_3"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\000\000\000\000\001\000\000\000"
- }
- }
- }
- }
- node {
- name: "accuracy"
- op: "Mean"
- input: "Cast"
- input: "Const_3"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "global_step/initial_value"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "global_step"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "global_step/Assign"
- op: "Assign"
- input: "global_step"
- input: "global_step/initial_value"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@global_step"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "global_step/read"
- op: "Identity"
- input: "global_step"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@global_step"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "gradients/Fill"
- op: "Fill"
- input: "gradients/Shape"
- input: "gradients/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/loss_grad/Reshape/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\001\000\000\000"
- }
- }
- }
- }
- node {
- name: "gradients/loss_grad/Reshape"
- op: "Reshape"
- input: "gradients/Fill"
- input: "gradients/loss_grad/Reshape/shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/loss_grad/Shape"
- op: "Shape"
- input: "sub_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/loss_grad/Tile"
- op: "Tile"
- input: "gradients/loss_grad/Reshape"
- input: "gradients/loss_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/loss_grad/Shape_1"
- op: "Shape"
- input: "sub_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/loss_grad/Shape_2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/loss_grad/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "gradients/loss_grad/Prod"
- op: "Prod"
- input: "gradients/loss_grad/Shape_1"
- input: "gradients/loss_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/loss_grad/Const_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "gradients/loss_grad/Prod_1"
- op: "Prod"
- input: "gradients/loss_grad/Shape_2"
- input: "gradients/loss_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/loss_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "gradients/loss_grad/Maximum"
- op: "Maximum"
- input: "gradients/loss_grad/Prod_1"
- input: "gradients/loss_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/loss_grad/floordiv"
- op: "FloorDiv"
- input: "gradients/loss_grad/Prod"
- input: "gradients/loss_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/loss_grad/Cast"
- op: "Cast"
- input: "gradients/loss_grad/floordiv"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/loss_grad/truediv"
- op: "RealDiv"
- input: "gradients/loss_grad/Tile"
- input: "gradients/loss_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_2_grad/Shape"
- op: "Shape"
- input: "mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/sub_2_grad/Shape_1"
- op: "Shape"
- input: "mul_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/sub_2_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/sub_2_grad/Shape"
- input: "gradients/sub_2_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_2_grad/Sum"
- op: "Sum"
- input: "gradients/loss_grad/truediv"
- input: "gradients/sub_2_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/sub_2_grad/Reshape"
- op: "Reshape"
- input: "gradients/sub_2_grad/Sum"
- input: "gradients/sub_2_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_2_grad/Sum_1"
- op: "Sum"
- input: "gradients/loss_grad/truediv"
- input: "gradients/sub_2_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/sub_2_grad/Neg"
- op: "Neg"
- input: "gradients/sub_2_grad/Sum_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_2_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/sub_2_grad/Neg"
- input: "gradients/sub_2_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_2_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/sub_2_grad/Reshape"
- input: "^gradients/sub_2_grad/Reshape_1"
- }
- node {
- name: "gradients/sub_2_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/sub_2_grad/Reshape"
- input: "^gradients/sub_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/sub_2_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_2_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/sub_2_grad/Reshape_1"
- input: "^gradients/sub_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/sub_2_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_grad/Shape"
- op: "Shape"
- input: "Neg"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/mul_grad/Shape_1"
- op: "Shape"
- input: "Log"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/mul_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/mul_grad/Shape"
- input: "gradients/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_grad/mul"
- op: "Mul"
- input: "gradients/sub_2_grad/tuple/control_dependency"
- input: "Log"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_grad/Sum"
- op: "Sum"
- input: "gradients/mul_grad/mul"
- input: "gradients/mul_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/mul_grad/Reshape"
- op: "Reshape"
- input: "gradients/mul_grad/Sum"
- input: "gradients/mul_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_grad/mul_1"
- op: "Mul"
- input: "Neg"
- input: "gradients/sub_2_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_grad/Sum_1"
- op: "Sum"
- input: "gradients/mul_grad/mul_1"
- input: "gradients/mul_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/mul_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/mul_grad/Sum_1"
- input: "gradients/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/mul_grad/Reshape"
- input: "^gradients/mul_grad/Reshape_1"
- }
- node {
- name: "gradients/mul_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/mul_grad/Reshape"
- input: "^gradients/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/mul_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/mul_grad/Reshape_1"
- input: "^gradients/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/mul_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_1_grad/Shape"
- op: "Shape"
- input: "sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/mul_1_grad/Shape_1"
- op: "Shape"
- input: "Log_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/mul_1_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/mul_1_grad/Shape"
- input: "gradients/mul_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_1_grad/mul"
- op: "Mul"
- input: "gradients/sub_2_grad/tuple/control_dependency_1"
- input: "Log_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_1_grad/Sum"
- op: "Sum"
- input: "gradients/mul_1_grad/mul"
- input: "gradients/mul_1_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/mul_1_grad/Reshape"
- op: "Reshape"
- input: "gradients/mul_1_grad/Sum"
- input: "gradients/mul_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_1_grad/mul_1"
- op: "Mul"
- input: "sub"
- input: "gradients/sub_2_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_1_grad/Sum_1"
- op: "Sum"
- input: "gradients/mul_1_grad/mul_1"
- input: "gradients/mul_1_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/mul_1_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/mul_1_grad/Sum_1"
- input: "gradients/mul_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/mul_1_grad/Reshape"
- input: "^gradients/mul_1_grad/Reshape_1"
- }
- node {
- name: "gradients/mul_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/mul_1_grad/Reshape"
- input: "^gradients/mul_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/mul_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/mul_1_grad/Reshape_1"
- input: "^gradients/mul_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/mul_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Log_grad/Reciprocal"
- op: "Reciprocal"
- input: "clip_by_value"
- input: "^gradients/mul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Log_grad/mul"
- op: "Mul"
- input: "gradients/mul_grad/tuple/control_dependency_1"
- input: "gradients/Log_grad/Reciprocal"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Log_1_grad/Reciprocal"
- op: "Reciprocal"
- input: "sub_1"
- input: "^gradients/mul_1_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Log_1_grad/mul"
- op: "Mul"
- input: "gradients/mul_1_grad/tuple/control_dependency_1"
- input: "gradients/Log_1_grad/Reciprocal"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_1_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_1_grad/Shape_1"
- op: "Shape"
- input: "clip_by_value"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/sub_1_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/sub_1_grad/Shape"
- input: "gradients/sub_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_1_grad/Sum"
- op: "Sum"
- input: "gradients/Log_1_grad/mul"
- input: "gradients/sub_1_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/sub_1_grad/Reshape"
- op: "Reshape"
- input: "gradients/sub_1_grad/Sum"
- input: "gradients/sub_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_1_grad/Sum_1"
- op: "Sum"
- input: "gradients/Log_1_grad/mul"
- input: "gradients/sub_1_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/sub_1_grad/Neg"
- op: "Neg"
- input: "gradients/sub_1_grad/Sum_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_1_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/sub_1_grad/Neg"
- input: "gradients/sub_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/sub_1_grad/Reshape"
- input: "^gradients/sub_1_grad/Reshape_1"
- }
- node {
- name: "gradients/sub_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/sub_1_grad/Reshape"
- input: "^gradients/sub_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/sub_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/sub_1_grad/Reshape_1"
- input: "^gradients/sub_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/sub_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/AddN"
- op: "AddN"
- input: "gradients/Log_grad/mul"
- input: "gradients/sub_1_grad/tuple/control_dependency_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Log_grad/mul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/Shape"
- op: "Shape"
- input: "clip_by_value/Minimum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/Shape_2"
- op: "Shape"
- input: "gradients/AddN"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/zeros/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/zeros"
- op: "Fill"
- input: "gradients/clip_by_value_grad/Shape_2"
- input: "gradients/clip_by_value_grad/zeros/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/GreaterEqual"
- op: "GreaterEqual"
- input: "clip_by_value/Minimum"
- input: "clip_by_value/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/clip_by_value_grad/Shape"
- input: "gradients/clip_by_value_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/Select"
- op: "Select"
- input: "gradients/clip_by_value_grad/GreaterEqual"
- input: "gradients/AddN"
- input: "gradients/clip_by_value_grad/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/Select_1"
- op: "Select"
- input: "gradients/clip_by_value_grad/GreaterEqual"
- input: "gradients/clip_by_value_grad/zeros"
- input: "gradients/AddN"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/Sum"
- op: "Sum"
- input: "gradients/clip_by_value_grad/Select"
- input: "gradients/clip_by_value_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/Reshape"
- op: "Reshape"
- input: "gradients/clip_by_value_grad/Sum"
- input: "gradients/clip_by_value_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/Sum_1"
- op: "Sum"
- input: "gradients/clip_by_value_grad/Select_1"
- input: "gradients/clip_by_value_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/clip_by_value_grad/Sum_1"
- input: "gradients/clip_by_value_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/clip_by_value_grad/Reshape"
- input: "^gradients/clip_by_value_grad/Reshape_1"
- }
- node {
- name: "gradients/clip_by_value_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/clip_by_value_grad/Reshape"
- input: "^gradients/clip_by_value_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/clip_by_value_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/clip_by_value_grad/Reshape_1"
- input: "^gradients/clip_by_value_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/clip_by_value_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/Shape"
- op: "Shape"
- input: "y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/Shape_2"
- op: "Shape"
- input: "gradients/clip_by_value_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/zeros/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/zeros"
- op: "Fill"
- input: "gradients/clip_by_value/Minimum_grad/Shape_2"
- input: "gradients/clip_by_value/Minimum_grad/zeros/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/LessEqual"
- op: "LessEqual"
- input: "y"
- input: "clip_by_value/Minimum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/clip_by_value/Minimum_grad/Shape"
- input: "gradients/clip_by_value/Minimum_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/Select"
- op: "Select"
- input: "gradients/clip_by_value/Minimum_grad/LessEqual"
- input: "gradients/clip_by_value_grad/tuple/control_dependency"
- input: "gradients/clip_by_value/Minimum_grad/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/Select_1"
- op: "Select"
- input: "gradients/clip_by_value/Minimum_grad/LessEqual"
- input: "gradients/clip_by_value/Minimum_grad/zeros"
- input: "gradients/clip_by_value_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/Sum"
- op: "Sum"
- input: "gradients/clip_by_value/Minimum_grad/Select"
- input: "gradients/clip_by_value/Minimum_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/Reshape"
- op: "Reshape"
- input: "gradients/clip_by_value/Minimum_grad/Sum"
- input: "gradients/clip_by_value/Minimum_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/Sum_1"
- op: "Sum"
- input: "gradients/clip_by_value/Minimum_grad/Select_1"
- input: "gradients/clip_by_value/Minimum_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/clip_by_value/Minimum_grad/Sum_1"
- input: "gradients/clip_by_value/Minimum_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/clip_by_value/Minimum_grad/Reshape"
- input: "^gradients/clip_by_value/Minimum_grad/Reshape_1"
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/clip_by_value/Minimum_grad/Reshape"
- input: "^gradients/clip_by_value/Minimum_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/clip_by_value/Minimum_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/clip_by_value/Minimum_grad/Reshape_1"
- input: "^gradients/clip_by_value/Minimum_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/clip_by_value/Minimum_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/y_grad/SigmoidGrad"
- op: "SigmoidGrad"
- input: "y"
- input: "gradients/clip_by_value/Minimum_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_2_grad/Shape"
- op: "Shape"
- input: "MatMul_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/add_2_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "gradients/add_2_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/add_2_grad/Shape"
- input: "gradients/add_2_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_2_grad/Sum"
- op: "Sum"
- input: "gradients/y_grad/SigmoidGrad"
- input: "gradients/add_2_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_2_grad/Reshape"
- op: "Reshape"
- input: "gradients/add_2_grad/Sum"
- input: "gradients/add_2_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_2_grad/Sum_1"
- op: "Sum"
- input: "gradients/y_grad/SigmoidGrad"
- input: "gradients/add_2_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_2_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/add_2_grad/Sum_1"
- input: "gradients/add_2_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_2_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/add_2_grad/Reshape"
- input: "^gradients/add_2_grad/Reshape_1"
- }
- node {
- name: "gradients/add_2_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/add_2_grad/Reshape"
- input: "^gradients/add_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_2_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_2_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/add_2_grad/Reshape_1"
- input: "^gradients/add_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_2_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_2_grad/MatMul"
- op: "MatMul"
- input: "gradients/add_2_grad/tuple/control_dependency"
- input: "W_final/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "gradients/MatMul_2_grad/MatMul_1"
- op: "MatMul"
- input: "hidden_layer_2"
- input: "gradients/add_2_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/MatMul_2_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/MatMul_2_grad/MatMul"
- input: "^gradients/MatMul_2_grad/MatMul_1"
- }
- node {
- name: "gradients/MatMul_2_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/MatMul_2_grad/MatMul"
- input: "^gradients/MatMul_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_2_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_2_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/MatMul_2_grad/MatMul_1"
- input: "^gradients/MatMul_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_2_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/hidden_layer_2_grad/ReluGrad"
- op: "ReluGrad"
- input: "gradients/MatMul_2_grad/tuple/control_dependency"
- input: "hidden_layer_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_1_grad/Shape"
- op: "Shape"
- input: "MatMul_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/add_1_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 128
- }
- }
- }
- }
- node {
- name: "gradients/add_1_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/add_1_grad/Shape"
- input: "gradients/add_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_1_grad/Sum"
- op: "Sum"
- input: "gradients/hidden_layer_2_grad/ReluGrad"
- input: "gradients/add_1_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_1_grad/Reshape"
- op: "Reshape"
- input: "gradients/add_1_grad/Sum"
- input: "gradients/add_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_1_grad/Sum_1"
- op: "Sum"
- input: "gradients/hidden_layer_2_grad/ReluGrad"
- input: "gradients/add_1_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_1_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/add_1_grad/Sum_1"
- input: "gradients/add_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/add_1_grad/Reshape"
- input: "^gradients/add_1_grad/Reshape_1"
- }
- node {
- name: "gradients/add_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/add_1_grad/Reshape"
- input: "^gradients/add_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/add_1_grad/Reshape_1"
- input: "^gradients/add_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_1_grad/MatMul"
- op: "MatMul"
- input: "gradients/add_1_grad/tuple/control_dependency"
- input: "W_hidden_2/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "gradients/MatMul_1_grad/MatMul_1"
- op: "MatMul"
- input: "hidden_layer"
- input: "gradients/add_1_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/MatMul_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/MatMul_1_grad/MatMul"
- input: "^gradients/MatMul_1_grad/MatMul_1"
- }
- node {
- name: "gradients/MatMul_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/MatMul_1_grad/MatMul"
- input: "^gradients/MatMul_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_1_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/MatMul_1_grad/MatMul_1"
- input: "^gradients/MatMul_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_1_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/hidden_layer_grad/ReluGrad"
- op: "ReluGrad"
- input: "gradients/MatMul_1_grad/tuple/control_dependency"
- input: "hidden_layer"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Shape"
- op: "Shape"
- input: "MatMul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/add_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 512
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/add_grad/Shape"
- input: "gradients/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Sum"
- op: "Sum"
- input: "gradients/hidden_layer_grad/ReluGrad"
- input: "gradients/add_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_grad/Reshape"
- op: "Reshape"
- input: "gradients/add_grad/Sum"
- input: "gradients/add_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Sum_1"
- op: "Sum"
- input: "gradients/hidden_layer_grad/ReluGrad"
- input: "gradients/add_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/add_grad/Sum_1"
- input: "gradients/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/add_grad/Reshape"
- input: "^gradients/add_grad/Reshape_1"
- }
- node {
- name: "gradients/add_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/add_grad/Reshape"
- input: "^gradients/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/add_grad/Reshape_1"
- input: "^gradients/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/MatMul"
- op: "MatMul"
- input: "gradients/add_grad/tuple/control_dependency"
- input: "W_hidden/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 256
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/MatMul_1"
- op: "MatMul"
- input: "input_concat"
- input: "gradients/add_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/MatMul_grad/MatMul"
- input: "^gradients/MatMul_grad/MatMul_1"
- }
- node {
- name: "gradients/MatMul_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/MatMul_grad/MatMul"
- input: "^gradients/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 256
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/MatMul_grad/MatMul_1"
- input: "^gradients/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "W_hidden/Adagrad/Initializer/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "W_hidden/Adagrad"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "W_hidden/Adagrad/Assign"
- op: "Assign"
- input: "W_hidden/Adagrad"
- input: "W_hidden/Adagrad/Initializer/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "W_hidden/Adagrad/read"
- op: "Identity"
- input: "W_hidden/Adagrad"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "b_hidden/Adagrad/Initializer/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 512
- }
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "b_hidden/Adagrad"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "b_hidden/Adagrad/Assign"
- op: "Assign"
- input: "b_hidden/Adagrad"
- input: "b_hidden/Adagrad/Initializer/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "b_hidden/Adagrad/read"
- op: "Identity"
- input: "b_hidden/Adagrad"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "W_hidden_2/Adagrad/Initializer/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "W_hidden_2/Adagrad"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "W_hidden_2/Adagrad/Assign"
- op: "Assign"
- input: "W_hidden_2/Adagrad"
- input: "W_hidden_2/Adagrad/Initializer/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "W_hidden_2/Adagrad/read"
- op: "Identity"
- input: "W_hidden_2/Adagrad"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "b_hidden_2/Adagrad/Initializer/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 128
- }
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "b_hidden_2/Adagrad"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "b_hidden_2/Adagrad/Assign"
- op: "Assign"
- input: "b_hidden_2/Adagrad"
- input: "b_hidden_2/Adagrad/Initializer/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "b_hidden_2/Adagrad/read"
- op: "Identity"
- input: "b_hidden_2/Adagrad"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "W_final/Adagrad/Initializer/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "W_final/Adagrad"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "W_final/Adagrad/Assign"
- op: "Assign"
- input: "W_final/Adagrad"
- input: "W_final/Adagrad/Initializer/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "W_final/Adagrad/read"
- op: "Identity"
- input: "W_final/Adagrad"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "b_final/Adagrad/Initializer/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "b_final/Adagrad"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "b_final/Adagrad/Assign"
- op: "Assign"
- input: "b_final/Adagrad"
- input: "b_final/Adagrad/Initializer/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "b_final/Adagrad/read"
- op: "Identity"
- input: "b_final/Adagrad"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "Adagrad/learning_rate"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "Adagrad/update_W_hidden/ApplyAdagrad"
- op: "ApplyAdagrad"
- input: "W_hidden"
- input: "W_hidden/Adagrad"
- input: "Adagrad/learning_rate"
- input: "gradients/MatMul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "Adagrad/update_b_hidden/ApplyAdagrad"
- op: "ApplyAdagrad"
- input: "b_hidden"
- input: "b_hidden/Adagrad"
- input: "Adagrad/learning_rate"
- input: "gradients/add_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "Adagrad/update_W_hidden_2/ApplyAdagrad"
- op: "ApplyAdagrad"
- input: "W_hidden_2"
- input: "W_hidden_2/Adagrad"
- input: "Adagrad/learning_rate"
- input: "gradients/MatMul_1_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "Adagrad/update_b_hidden_2/ApplyAdagrad"
- op: "ApplyAdagrad"
- input: "b_hidden_2"
- input: "b_hidden_2/Adagrad"
- input: "Adagrad/learning_rate"
- input: "gradients/add_1_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "Adagrad/update_W_final/ApplyAdagrad"
- op: "ApplyAdagrad"
- input: "W_final"
- input: "W_final/Adagrad"
- input: "Adagrad/learning_rate"
- input: "gradients/MatMul_2_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "Adagrad/update_b_final/ApplyAdagrad"
- op: "ApplyAdagrad"
- input: "b_final"
- input: "b_final/Adagrad"
- input: "Adagrad/learning_rate"
- input: "gradients/add_2_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "Adagrad/update"
- op: "NoOp"
- input: "^Adagrad/update_W_hidden/ApplyAdagrad"
- input: "^Adagrad/update_b_hidden/ApplyAdagrad"
- input: "^Adagrad/update_W_hidden_2/ApplyAdagrad"
- input: "^Adagrad/update_b_hidden_2/ApplyAdagrad"
- input: "^Adagrad/update_W_final/ApplyAdagrad"
- input: "^Adagrad/update_b_final/ApplyAdagrad"
- }
- node {
- name: "Adagrad/value"
- op: "Const"
- input: "^Adagrad/update"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@global_step"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "Adagrad"
- op: "AssignAdd"
- input: "global_step"
- input: "Adagrad/value"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@global_step"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "loss_1/tags"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "loss_1"
- }
- }
- }
- }
- node {
- name: "loss_1"
- op: "ScalarSummary"
- input: "loss_1/tags"
- input: "loss"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "accuracy_1/tags"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "accuracy_1"
- }
- }
- }
- }
- node {
- name: "accuracy_1"
- op: "ScalarSummary"
- input: "accuracy_1/tags"
- input: "accuracy"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Merge/MergeSummary"
- op: "MergeSummary"
- input: "loss_1"
- input: "accuracy_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Merge_1/MergeSummary"
- op: "MergeSummary"
- input: "loss_1"
- input: "accuracy_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "model"
- }
- }
- }
- }
- node {
- name: "save/SaveV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 13
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 13
- }
- }
- string_val: "W_final"
- string_val: "W_final/Adagrad"
- string_val: "W_hidden"
- string_val: "W_hidden/Adagrad"
- string_val: "W_hidden_2"
- string_val: "W_hidden_2/Adagrad"
- string_val: "b_final"
- string_val: "b_final/Adagrad"
- string_val: "b_hidden"
- string_val: "b_hidden/Adagrad"
- string_val: "b_hidden_2"
- string_val: "b_hidden_2/Adagrad"
- string_val: "global_step"
- }
- }
- }
- }
- node {
- name: "save/SaveV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 13
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 13
- }
- }
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/SaveV2"
- op: "SaveV2"
- input: "save/Const"
- input: "save/SaveV2/tensor_names"
- input: "save/SaveV2/shape_and_slices"
- input: "W_final"
- input: "W_final/Adagrad"
- input: "W_hidden"
- input: "W_hidden/Adagrad"
- input: "W_hidden_2"
- input: "W_hidden_2/Adagrad"
- input: "b_final"
- input: "b_final/Adagrad"
- input: "b_hidden"
- input: "b_hidden/Adagrad"
- input: "b_hidden_2"
- input: "b_hidden_2/Adagrad"
- input: "global_step"
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_INT32
- }
- }
- }
- }
- node {
- name: "save/control_dependency"
- op: "Identity"
- input: "save/Const"
- input: "^save/SaveV2"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@save/Const"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_final"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2/tensor_names"
- input: "save/RestoreV2/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign"
- op: "Assign"
- input: "W_final"
- input: "save/RestoreV2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_1/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_final/Adagrad"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_1/tensor_names"
- input: "save/RestoreV2_1/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_1"
- op: "Assign"
- input: "W_final/Adagrad"
- input: "save/RestoreV2_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_hidden"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_2/tensor_names"
- input: "save/RestoreV2_2/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_2"
- op: "Assign"
- input: "W_hidden"
- input: "save/RestoreV2_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_3/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_hidden/Adagrad"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_3/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_3"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_3/tensor_names"
- input: "save/RestoreV2_3/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_3"
- op: "Assign"
- input: "W_hidden/Adagrad"
- input: "save/RestoreV2_3"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_4/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_hidden_2"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_4/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_4"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_4/tensor_names"
- input: "save/RestoreV2_4/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_4"
- op: "Assign"
- input: "W_hidden_2"
- input: "save/RestoreV2_4"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_5/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_hidden_2/Adagrad"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_5/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_5"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_5/tensor_names"
- input: "save/RestoreV2_5/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_5"
- op: "Assign"
- input: "W_hidden_2/Adagrad"
- input: "save/RestoreV2_5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_6/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_final"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_6/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_6"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_6/tensor_names"
- input: "save/RestoreV2_6/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_6"
- op: "Assign"
- input: "b_final"
- input: "save/RestoreV2_6"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_7/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_final/Adagrad"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_7/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_7"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_7/tensor_names"
- input: "save/RestoreV2_7/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_7"
- op: "Assign"
- input: "b_final/Adagrad"
- input: "save/RestoreV2_7"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_8/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_hidden"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_8/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_8"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_8/tensor_names"
- input: "save/RestoreV2_8/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_8"
- op: "Assign"
- input: "b_hidden"
- input: "save/RestoreV2_8"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_9/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_hidden/Adagrad"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_9/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_9"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_9/tensor_names"
- input: "save/RestoreV2_9/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_9"
- op: "Assign"
- input: "b_hidden/Adagrad"
- input: "save/RestoreV2_9"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_10/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_hidden_2"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_10/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_10"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_10/tensor_names"
- input: "save/RestoreV2_10/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_10"
- op: "Assign"
- input: "b_hidden_2"
- input: "save/RestoreV2_10"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_11/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_hidden_2/Adagrad"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_11/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_11"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_11/tensor_names"
- input: "save/RestoreV2_11/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_11"
- op: "Assign"
- input: "b_hidden_2/Adagrad"
- input: "save/RestoreV2_11"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_12/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "global_step"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_12/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_12"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_12/tensor_names"
- input: "save/RestoreV2_12/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_INT32
- }
- }
- }
- }
- node {
- name: "save/Assign_12"
- op: "Assign"
- input: "global_step"
- input: "save/RestoreV2_12"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@global_step"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/restore_all"
- op: "NoOp"
- input: "^save/Assign"
- input: "^save/Assign_1"
- input: "^save/Assign_2"
- input: "^save/Assign_3"
- input: "^save/Assign_4"
- input: "^save/Assign_5"
- input: "^save/Assign_6"
- input: "^save/Assign_7"
- input: "^save/Assign_8"
- input: "^save/Assign_9"
- input: "^save/Assign_10"
- input: "^save/Assign_11"
- input: "^save/Assign_12"
- }
- node {
- name: "init"
- op: "NoOp"
- input: "^W_hidden/Assign"
- input: "^b_hidden/Assign"
- input: "^W_hidden_2/Assign"
- input: "^b_hidden_2/Assign"
- input: "^W_final/Assign"
- input: "^b_final/Assign"
- input: "^global_step/Assign"
- input: "^W_hidden/Adagrad/Assign"
- input: "^b_hidden/Adagrad/Assign"
- input: "^W_hidden_2/Adagrad/Assign"
- input: "^b_hidden_2/Adagrad/Assign"
- input: "^W_final/Adagrad/Assign"
- input: "^b_final/Adagrad/Assign"
- }
- node {
- name: "save_1/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "model"
- }
- }
- }
- }
- node {
- name: "save_1/StringJoin/inputs_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "_temp_5848b591c8704c928f801621ecceb1c5/part"
- }
- }
- }
- }
- node {
- name: "save_1/StringJoin"
- op: "StringJoin"
- input: "save_1/Const"
- input: "save_1/StringJoin/inputs_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "separator"
- value {
- s: ""
- }
- }
- }
- node {
- name: "save_1/num_shards"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "save_1/ShardedFilename/shard"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "save_1/ShardedFilename"
- op: "ShardedFilename"
- input: "save_1/StringJoin"
- input: "save_1/ShardedFilename/shard"
- input: "save_1/num_shards"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save_1/SaveV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 13
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 13
- }
- }
- string_val: "W_final"
- string_val: "W_final/Adagrad"
- string_val: "W_hidden"
- string_val: "W_hidden/Adagrad"
- string_val: "W_hidden_2"
- string_val: "W_hidden_2/Adagrad"
- string_val: "b_final"
- string_val: "b_final/Adagrad"
- string_val: "b_hidden"
- string_val: "b_hidden/Adagrad"
- string_val: "b_hidden_2"
- string_val: "b_hidden_2/Adagrad"
- string_val: "global_step"
- }
- }
- }
- }
- node {
- name: "save_1/SaveV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 13
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 13
- }
- }
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/SaveV2"
- op: "SaveV2"
- input: "save_1/ShardedFilename"
- input: "save_1/SaveV2/tensor_names"
- input: "save_1/SaveV2/shape_and_slices"
- input: "W_final"
- input: "W_final/Adagrad"
- input: "W_hidden"
- input: "W_hidden/Adagrad"
- input: "W_hidden_2"
- input: "W_hidden_2/Adagrad"
- input: "b_final"
- input: "b_final/Adagrad"
- input: "b_hidden"
- input: "b_hidden/Adagrad"
- input: "b_hidden_2"
- input: "b_hidden_2/Adagrad"
- input: "global_step"
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_INT32
- }
- }
- }
- }
- node {
- name: "save_1/control_dependency"
- op: "Identity"
- input: "save_1/ShardedFilename"
- input: "^save_1/SaveV2"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@save_1/ShardedFilename"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save_1/MergeV2Checkpoints/checkpoint_prefixes"
- op: "Pack"
- input: "save_1/ShardedFilename"
- input: "^save_1/control_dependency"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "save_1/MergeV2Checkpoints"
- op: "MergeV2Checkpoints"
- input: "save_1/MergeV2Checkpoints/checkpoint_prefixes"
- input: "save_1/Const"
- attr {
- key: "delete_old_dirs"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/Identity"
- op: "Identity"
- input: "save_1/Const"
- input: "^save_1/control_dependency"
- input: "^save_1/MergeV2Checkpoints"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_final"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2/tensor_names"
- input: "save_1/RestoreV2/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign"
- op: "Assign"
- input: "W_final"
- input: "save_1/RestoreV2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_1/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_final/Adagrad"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_1/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_1"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_1/tensor_names"
- input: "save_1/RestoreV2_1/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign_1"
- op: "Assign"
- input: "W_final/Adagrad"
- input: "save_1/RestoreV2_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_hidden"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_2"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_2/tensor_names"
- input: "save_1/RestoreV2_2/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign_2"
- op: "Assign"
- input: "W_hidden"
- input: "save_1/RestoreV2_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_3/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_hidden/Adagrad"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_3/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_3"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_3/tensor_names"
- input: "save_1/RestoreV2_3/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign_3"
- op: "Assign"
- input: "W_hidden/Adagrad"
- input: "save_1/RestoreV2_3"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_4/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_hidden_2"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_4/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_4"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_4/tensor_names"
- input: "save_1/RestoreV2_4/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign_4"
- op: "Assign"
- input: "W_hidden_2"
- input: "save_1/RestoreV2_4"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_5/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_hidden_2/Adagrad"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_5/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_5"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_5/tensor_names"
- input: "save_1/RestoreV2_5/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign_5"
- op: "Assign"
- input: "W_hidden_2/Adagrad"
- input: "save_1/RestoreV2_5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_6/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_final"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_6/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_6"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_6/tensor_names"
- input: "save_1/RestoreV2_6/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign_6"
- op: "Assign"
- input: "b_final"
- input: "save_1/RestoreV2_6"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_7/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_final/Adagrad"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_7/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_7"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_7/tensor_names"
- input: "save_1/RestoreV2_7/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign_7"
- op: "Assign"
- input: "b_final/Adagrad"
- input: "save_1/RestoreV2_7"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_8/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_hidden"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_8/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_8"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_8/tensor_names"
- input: "save_1/RestoreV2_8/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign_8"
- op: "Assign"
- input: "b_hidden"
- input: "save_1/RestoreV2_8"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_9/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_hidden/Adagrad"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_9/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_9"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_9/tensor_names"
- input: "save_1/RestoreV2_9/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign_9"
- op: "Assign"
- input: "b_hidden/Adagrad"
- input: "save_1/RestoreV2_9"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_10/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_hidden_2"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_10/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_10"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_10/tensor_names"
- input: "save_1/RestoreV2_10/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign_10"
- op: "Assign"
- input: "b_hidden_2"
- input: "save_1/RestoreV2_10"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_11/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_hidden_2/Adagrad"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_11/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_11"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_11/tensor_names"
- input: "save_1/RestoreV2_11/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign_11"
- op: "Assign"
- input: "b_hidden_2/Adagrad"
- input: "save_1/RestoreV2_11"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_12/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "global_step"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_12/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_12"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_12/tensor_names"
- input: "save_1/RestoreV2_12/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_INT32
- }
- }
- }
- }
- node {
- name: "save_1/Assign_12"
- op: "Assign"
- input: "global_step"
- input: "save_1/RestoreV2_12"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@global_step"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/restore_shard"
- op: "NoOp"
- input: "^save_1/Assign"
- input: "^save_1/Assign_1"
- input: "^save_1/Assign_2"
- input: "^save_1/Assign_3"
- input: "^save_1/Assign_4"
- input: "^save_1/Assign_5"
- input: "^save_1/Assign_6"
- input: "^save_1/Assign_7"
- input: "^save_1/Assign_8"
- input: "^save_1/Assign_9"
- input: "^save_1/Assign_10"
- input: "^save_1/Assign_11"
- input: "^save_1/Assign_12"
- }
- node {
- name: "save_1/restore_all"
- op: "NoOp"
- input: "^save_1/restore_shard"
- }
- versions {
- producer: 24
- }
- }
- saver_def {
- filename_tensor_name: "save_1/Const:0"
- save_tensor_name: "save_1/Identity:0"
- restore_op_name: "save_1/restore_all"
- max_to_keep: 5
- sharded: true
- keep_checkpoint_every_n_hours: 10000.0
- version: V2
- }
- collection_def {
- key: "summaries"
- value {
- node_list {
- value: "loss_1:0"
- value: "accuracy_1:0"
- }
- }
- }
- collection_def {
- key: "train_op"
- value {
- node_list {
- value: "Adagrad"
- }
- }
- }
- collection_def {
- key: "trainable_variables"
- value {
- bytes_list {
- value: "\n\nW_hidden:0\022\017W_hidden/Assign\032\017W_hidden/read:02\022truncated_normal:0"
- value: "\n\nb_hidden:0\022\017b_hidden/Assign\032\017b_hidden/read:02\007Const:0"
- value: "\n\014W_hidden_2:0\022\021W_hidden_2/Assign\032\021W_hidden_2/read:02\024truncated_normal_1:0"
- value: "\n\014b_hidden_2:0\022\021b_hidden_2/Assign\032\021b_hidden_2/read:02\tConst_1:0"
- value: "\n\tW_final:0\022\016W_final/Assign\032\016W_final/read:02\020random_uniform:0"
- value: "\n\tb_final:0\022\016b_final/Assign\032\016b_final/read:02\007zeros:0"
- }
- }
- }
- collection_def {
- key: "variables"
- value {
- bytes_list {
- value: "\n\nW_hidden:0\022\017W_hidden/Assign\032\017W_hidden/read:02\022truncated_normal:0"
- value: "\n\nb_hidden:0\022\017b_hidden/Assign\032\017b_hidden/read:02\007Const:0"
- value: "\n\014W_hidden_2:0\022\021W_hidden_2/Assign\032\021W_hidden_2/read:02\024truncated_normal_1:0"
- value: "\n\014b_hidden_2:0\022\021b_hidden_2/Assign\032\021b_hidden_2/read:02\tConst_1:0"
- value: "\n\tW_final:0\022\016W_final/Assign\032\016W_final/read:02\020random_uniform:0"
- value: "\n\tb_final:0\022\016b_final/Assign\032\016b_final/read:02\007zeros:0"
- value: "\n\rglobal_step:0\022\022global_step/Assign\032\022global_step/read:02\033global_step/initial_value:0"
- value: "\n\022W_hidden/Adagrad:0\022\027W_hidden/Adagrad/Assign\032\027W_hidden/Adagrad/read:02$W_hidden/Adagrad/Initializer/Const:0"
- value: "\n\022b_hidden/Adagrad:0\022\027b_hidden/Adagrad/Assign\032\027b_hidden/Adagrad/read:02$b_hidden/Adagrad/Initializer/Const:0"
- value: "\n\024W_hidden_2/Adagrad:0\022\031W_hidden_2/Adagrad/Assign\032\031W_hidden_2/Adagrad/read:02&W_hidden_2/Adagrad/Initializer/Const:0"
- value: "\n\024b_hidden_2/Adagrad:0\022\031b_hidden_2/Adagrad/Assign\032\031b_hidden_2/Adagrad/read:02&b_hidden_2/Adagrad/Initializer/Const:0"
- value: "\n\021W_final/Adagrad:0\022\026W_final/Adagrad/Assign\032\026W_final/Adagrad/read:02#W_final/Adagrad/Initializer/Const:0"
- value: "\n\021b_final/Adagrad:0\022\026b_final/Adagrad/Assign\032\026b_final/Adagrad/read:02#b_final/Adagrad/Initializer/Const:0"
- }
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "input_d"
- value {
- name: "input_d:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- inputs {
- key: "input_u"
- value {
- name: "input_u:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- outputs {
- key: "y"
- value {
- name: "y:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/blog/saved/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/blog/saved/variables/variables.data-00000-of-00001
deleted file mode 100644
index 1efd102aef9..00000000000
--- a/model-integration/src/test/models/tensorflow/blog/saved/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/blog/saved/variables/variables.index b/model-integration/src/test/models/tensorflow/blog/saved/variables/variables.index
deleted file mode 100644
index 56c60dbe529..00000000000
--- a/model-integration/src/test/models/tensorflow/blog/saved/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/dropout/dropout.py b/model-integration/src/test/models/tensorflow/dropout/dropout.py
deleted file mode 100644
index 42c15cd2812..00000000000
--- a/model-integration/src/test/models/tensorflow/dropout/dropout.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-# Common imports
-import numpy as np
-import tensorflow as tf
-import datetime
-
-now = datetime.datetime.utcnow().strftime("%Y%m%d%H%M%S")
-root_logdir = "tf_logs"
-logdir = "{}/run-{}/".format(root_logdir, now)
-
-n_inputs = 784
-n_outputs = 10
-dropout_rate = 0.5 # == 1 - keep_prob
-
-X = tf.placeholder(tf.float32, shape=(None, n_inputs), name="X")
-y = tf.placeholder(tf.int64, shape=(None), name="y")
-training = tf.placeholder_with_default(False, shape=(), name='training')
-
-def leaky_relu_with_small_constant(z, name=None):
- return tf.maximum(tf.constant(0.01, shape=[1]) * z, z, name=name)
-
-X_drop = tf.layers.dropout(X, dropout_rate, training=training, name="xdrop")
-output = tf.layers.dense(X_drop, n_outputs, activation=leaky_relu_with_small_constant, name="outputs")
-
-init = tf.global_variables_initializer()
-file_writer = tf.summary.FileWriter(logdir, tf.get_default_graph())
-
-with tf.Session() as sess:
- init.run()
- sess.run(output, feed_dict={training: False, X: np.random.random((1,784))})
-
- export_path = "saved"
- print('Exporting trained model to ', export_path)
- builder = tf.saved_model.builder.SavedModelBuilder(export_path)
- signature = tf.saved_model.signature_def_utils.predict_signature_def(inputs = {'x':X}, outputs = {'y':output})
- builder.add_meta_graph_and_variables(sess,
- [tf.saved_model.tag_constants.SERVING],
- signature_def_map={'serving_default':signature})
- builder.save(as_text=True)
-
-file_writer.close()
-
-
diff --git a/model-integration/src/test/models/tensorflow/dropout/saved/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/dropout/saved/saved_model.pbtxt
deleted file mode 100644
index ad431f0460d..00000000000
--- a/model-integration/src/test/models/tensorflow/dropout/saved/saved_model.pbtxt
+++ /dev/null
@@ -1,2875 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Add"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "Assign"
- input_arg {
- name: "ref"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output_ref"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "validate_shape"
- type: "bool"
- default_value {
- b: true
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: true
- }
- }
- allows_uninitialized_input: true
- }
- op {
- name: "BiasAdd"
- input_arg {
- name: "value"
- type_attr: "T"
- }
- input_arg {
- name: "bias"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "data_format"
- type: "string"
- default_value {
- s: "NHWC"
- }
- allowed_values {
- list {
- s: "NHWC"
- s: "NCHW"
- }
- }
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "Floor"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "Identity"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Maximum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Merge"
- input_arg {
- name: "inputs"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- output_arg {
- name: "value_index"
- type: DT_INT32
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- }
- op {
- name: "MergeV2Checkpoints"
- input_arg {
- name: "checkpoint_prefixes"
- type: DT_STRING
- }
- input_arg {
- name: "destination_prefix"
- type: DT_STRING
- }
- attr {
- name: "delete_old_dirs"
- type: "bool"
- default_value {
- b: true
- }
- }
- is_stateful: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "NoOp"
- }
- op {
- name: "Pack"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "axis"
- type: "int"
- default_value {
- i: 0
- }
- }
- }
- op {
- name: "Placeholder"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- default_value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- op {
- name: "PlaceholderWithDefault"
- input_arg {
- name: "input"
- type_attr: "dtype"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- }
- }
- op {
- name: "RandomUniform"
- input_arg {
- name: "shape"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "seed"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "seed2"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "dtype"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_stateful: true
- }
- op {
- name: "RealDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "RestoreV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- output_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "SaveV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- input_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "Shape"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "out_type"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "out_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "ShardedFilename"
- input_arg {
- name: "basename"
- type: DT_STRING
- }
- input_arg {
- name: "shard"
- type: DT_INT32
- }
- input_arg {
- name: "num_shards"
- type: DT_INT32
- }
- output_arg {
- name: "filename"
- type: DT_STRING
- }
- }
- op {
- name: "StringJoin"
- input_arg {
- name: "inputs"
- type: DT_STRING
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type: DT_STRING
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "separator"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Sub"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Switch"
- input_arg {
- name: "data"
- type_attr: "T"
- }
- input_arg {
- name: "pred"
- type: DT_BOOL
- }
- output_arg {
- name: "output_false"
- type_attr: "T"
- }
- output_arg {
- name: "output_true"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "VariableV2"
- output_arg {
- name: "ref"
- type_attr: "dtype"
- is_ref: true
- }
- attr {
- name: "shape"
- type: "shape"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "container"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "shared_name"
- type: "string"
- default_value {
- s: ""
- }
- }
- is_stateful: true
- }
- }
- tags: "serve"
- tensorflow_version: "1.4.1"
- tensorflow_git_version: "v1.4.0-19-ga52c8d9"
- }
- graph_def {
- node {
- name: "X"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- node {
- name: "y"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- node {
- name: "training/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_BOOL
- tensor_shape {
- }
- bool_val: false
- }
- }
- }
- }
- node {
- name: "training"
- op: "PlaceholderWithDefault"
- input: "training/input"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "xdrop/cond/Switch"
- op: "Switch"
- input: "training"
- input: "training"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/switch_t"
- op: "Identity"
- input: "xdrop/cond/Switch:1"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/switch_f"
- op: "Identity"
- input: "xdrop/cond/Switch"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/pred_id"
- op: "Identity"
- input: "training"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/keep_prob"
- op: "Const"
- input: "^xdrop/cond/switch_t"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.5
- }
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/Shape/Switch"
- op: "Switch"
- input: "X"
- input: "xdrop/cond/pred_id"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@X"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/Shape"
- op: "Shape"
- input: "xdrop/cond/dropout/Shape/Switch:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/random_uniform/min"
- op: "Const"
- input: "^xdrop/cond/switch_t"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/random_uniform/max"
- op: "Const"
- input: "^xdrop/cond/switch_t"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/random_uniform/RandomUniform"
- op: "RandomUniform"
- input: "xdrop/cond/dropout/Shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/random_uniform/sub"
- op: "Sub"
- input: "xdrop/cond/dropout/random_uniform/max"
- input: "xdrop/cond/dropout/random_uniform/min"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/random_uniform/mul"
- op: "Mul"
- input: "xdrop/cond/dropout/random_uniform/RandomUniform"
- input: "xdrop/cond/dropout/random_uniform/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/random_uniform"
- op: "Add"
- input: "xdrop/cond/dropout/random_uniform/mul"
- input: "xdrop/cond/dropout/random_uniform/min"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/add"
- op: "Add"
- input: "xdrop/cond/dropout/keep_prob"
- input: "xdrop/cond/dropout/random_uniform"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/Floor"
- op: "Floor"
- input: "xdrop/cond/dropout/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/div"
- op: "RealDiv"
- input: "xdrop/cond/dropout/Shape/Switch:1"
- input: "xdrop/cond/dropout/keep_prob"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/mul"
- op: "Mul"
- input: "xdrop/cond/dropout/div"
- input: "xdrop/cond/dropout/Floor"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/Identity/Switch"
- op: "Switch"
- input: "X"
- input: "xdrop/cond/pred_id"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@X"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/Identity"
- op: "Identity"
- input: "xdrop/cond/Identity/Switch"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/Merge"
- op: "Merge"
- input: "xdrop/cond/Identity"
- input: "xdrop/cond/dropout/mul"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/random_uniform/shape"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\020\003\000\000\n\000\000\000"
- }
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/random_uniform/min"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: -0.08692913502454758
- }
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/random_uniform/max"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.08692913502454758
- }
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/random_uniform/RandomUniform"
- op: "RandomUniform"
- input: "outputs/kernel/Initializer/random_uniform/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/random_uniform/sub"
- op: "Sub"
- input: "outputs/kernel/Initializer/random_uniform/max"
- input: "outputs/kernel/Initializer/random_uniform/min"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/random_uniform/mul"
- op: "Mul"
- input: "outputs/kernel/Initializer/random_uniform/RandomUniform"
- input: "outputs/kernel/Initializer/random_uniform/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/random_uniform"
- op: "Add"
- input: "outputs/kernel/Initializer/random_uniform/mul"
- input: "outputs/kernel/Initializer/random_uniform/min"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "outputs/kernel"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "outputs/kernel/Assign"
- op: "Assign"
- input: "outputs/kernel"
- input: "outputs/kernel/Initializer/random_uniform"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "outputs/kernel/read"
- op: "Identity"
- input: "outputs/kernel"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "outputs/bias/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 10
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "outputs/bias"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "outputs/bias/Assign"
- op: "Assign"
- input: "outputs/bias"
- input: "outputs/bias/Initializer/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "outputs/bias/read"
- op: "Identity"
- input: "outputs/bias"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "outputs/MatMul"
- op: "MatMul"
- input: "xdrop/cond/Merge"
- input: "outputs/kernel/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "outputs/BiasAdd"
- op: "BiasAdd"
- input: "outputs/MatMul"
- input: "outputs/bias/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "data_format"
- value {
- s: "NHWC"
- }
- }
- }
- node {
- name: "outputs/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.009999999776482582
- }
- }
- }
- }
- node {
- name: "outputs/mul"
- op: "Mul"
- input: "outputs/Const"
- input: "outputs/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "outputs/Maximum"
- op: "Maximum"
- input: "outputs/mul"
- input: "outputs/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "init"
- op: "NoOp"
- input: "^outputs/kernel/Assign"
- input: "^outputs/bias/Assign"
- }
- node {
- name: "save/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "model"
- }
- }
- }
- }
- node {
- name: "save/StringJoin/inputs_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "_temp_6962088d414d471890a43f51e0ba56f9/part"
- }
- }
- }
- }
- node {
- name: "save/StringJoin"
- op: "StringJoin"
- input: "save/Const"
- input: "save/StringJoin/inputs_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "separator"
- value {
- s: ""
- }
- }
- }
- node {
- name: "save/num_shards"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename/shard"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename"
- op: "ShardedFilename"
- input: "save/StringJoin"
- input: "save/ShardedFilename/shard"
- input: "save/num_shards"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/SaveV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: "outputs/bias"
- string_val: "outputs/kernel"
- }
- }
- }
- }
- node {
- name: "save/SaveV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/SaveV2"
- op: "SaveV2"
- input: "save/ShardedFilename"
- input: "save/SaveV2/tensor_names"
- input: "save/SaveV2/shape_and_slices"
- input: "outputs/bias"
- input: "outputs/kernel"
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/control_dependency"
- op: "Identity"
- input: "save/ShardedFilename"
- input: "^save/SaveV2"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@save/ShardedFilename"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints/checkpoint_prefixes"
- op: "Pack"
- input: "save/ShardedFilename"
- input: "^save/control_dependency"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints"
- op: "MergeV2Checkpoints"
- input: "save/MergeV2Checkpoints/checkpoint_prefixes"
- input: "save/Const"
- attr {
- key: "delete_old_dirs"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/Identity"
- op: "Identity"
- input: "save/Const"
- input: "^save/control_dependency"
- input: "^save/MergeV2Checkpoints"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "outputs/bias"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2/tensor_names"
- input: "save/RestoreV2/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign"
- op: "Assign"
- input: "outputs/bias"
- input: "save/RestoreV2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_1/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "outputs/kernel"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_1/tensor_names"
- input: "save/RestoreV2_1/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_1"
- op: "Assign"
- input: "outputs/kernel"
- input: "save/RestoreV2_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/restore_shard"
- op: "NoOp"
- input: "^save/Assign"
- input: "^save/Assign_1"
- }
- node {
- name: "save/restore_all"
- op: "NoOp"
- input: "^save/restore_shard"
- }
- versions {
- producer: 24
- }
- }
- saver_def {
- filename_tensor_name: "save/Const:0"
- save_tensor_name: "save/Identity:0"
- restore_op_name: "save/restore_all"
- max_to_keep: 5
- sharded: true
- keep_checkpoint_every_n_hours: 10000.0
- version: V2
- }
- collection_def {
- key: "cond_context"
- value {
- bytes_list {
- value: "\n\024xdrop/cond/cond_text\022\024xdrop/cond/pred_id:0\032\025xdrop/cond/switch_t:0 \001*\241\004\n\003X:0\n\032xdrop/cond/dropout/Floor:0\n!xdrop/cond/dropout/Shape/Switch:1\n\032xdrop/cond/dropout/Shape:0\n\030xdrop/cond/dropout/add:0\n\030xdrop/cond/dropout/div:0\n\036xdrop/cond/dropout/keep_prob:0\n\030xdrop/cond/dropout/mul:0\n1xdrop/cond/dropout/random_uniform/RandomUniform:0\n\'xdrop/cond/dropout/random_uniform/max:0\n\'xdrop/cond/dropout/random_uniform/min:0\n\'xdrop/cond/dropout/random_uniform/mul:0\n\'xdrop/cond/dropout/random_uniform/sub:0\n#xdrop/cond/dropout/random_uniform:0\n\024xdrop/cond/pred_id:0\n\025xdrop/cond/switch_t:0\022(\n\003X:0\022!xdrop/cond/dropout/Shape/Switch:1"
- value: "\n\026xdrop/cond/cond_text_1\022\024xdrop/cond/pred_id:0\032\025xdrop/cond/switch_f:0*\214\001\n\003X:0\n\034xdrop/cond/Identity/Switch:0\n\025xdrop/cond/Identity:0\n\024xdrop/cond/pred_id:0\n\025xdrop/cond/switch_f:0\022#\n\003X:0\022\034xdrop/cond/Identity/Switch:0"
- }
- }
- }
- collection_def {
- key: "trainable_variables"
- value {
- bytes_list {
- value: "\n\020outputs/kernel:0\022\025outputs/kernel/Assign\032\025outputs/kernel/read:02+outputs/kernel/Initializer/random_uniform:0"
- value: "\n\016outputs/bias:0\022\023outputs/bias/Assign\032\023outputs/bias/read:02 outputs/bias/Initializer/zeros:0"
- }
- }
- }
- collection_def {
- key: "variables"
- value {
- bytes_list {
- value: "\n\020outputs/kernel:0\022\025outputs/kernel/Assign\032\025outputs/kernel/read:02+outputs/kernel/Initializer/random_uniform:0"
- value: "\n\016outputs/bias:0\022\023outputs/bias/Assign\032\023outputs/bias/read:02 outputs/bias/Initializer/zeros:0"
- }
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "x"
- value {
- name: "X:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- outputs {
- key: "y"
- value {
- name: "outputs/Maximum:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/dropout/saved/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/dropout/saved/variables/variables.data-00000-of-00001
deleted file mode 100644
index 000c9b3a7b5..00000000000
--- a/model-integration/src/test/models/tensorflow/dropout/saved/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/dropout/saved/variables/variables.index b/model-integration/src/test/models/tensorflow/dropout/saved/variables/variables.index
deleted file mode 100644
index 9492ef4bde2..00000000000
--- a/model-integration/src/test/models/tensorflow/dropout/saved/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/external/Model_A/optimized_v2/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/external/Model_A/optimized_v2/saved_model.pbtxt
deleted file mode 100644
index d2dc51ac328..00000000000
--- a/model-integration/src/test/models/tensorflow/external/Model_A/optimized_v2/saved_model.pbtxt
+++ /dev/null
@@ -1,1368 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Add"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "BiasAdd"
- input_arg {
- name: "value"
- type_attr: "T"
- }
- input_arg {
- name: "bias"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "data_format"
- type: "string"
- default_value {
- s: "NHWC"
- }
- allowed_values {
- list {
- s: "NHWC"
- s: "NCHW"
- }
- }
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "ExpandDims"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "dim"
- type_attr: "Tdim"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tdim"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Maximum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Placeholder"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- default_value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- op {
- name: "PlaceholderWithDefault"
- input_arg {
- name: "input"
- type_attr: "dtype"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- }
- }
- op {
- name: "Rsqrt"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Sigmoid"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Square"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Sum"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- }
- tags: "serve"
- tensorflow_version: "1.13.1"
- tensorflow_git_version: "b\'v1.13.1-0-g6612da8951\'"
- }
- graph_def {
- node {
- name: "keras_learning_phase/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_BOOL
- tensor_shape {
- }
- bool_val: false
- }
- }
- }
- }
- node {
- name: "keras_learning_phase"
- op: "PlaceholderWithDefault"
- input: "keras_learning_phase/input"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Maximum/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 9.999999960041972e-13
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Sum/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dense_out/kernel"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- float_val: -1.049525499343872
- }
- }
- }
- }
- node {
- name: "batch_norm/moving_mean"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/mul/_0__cf__0"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.9995003938674927
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/sub/_1__cf__1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "input_embedding_user_guid"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Square"
- op: "Square"
- input: "input_embedding_user_guid"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Sum"
- op: "Sum"
- input: "dot_0/l2_normalize_1/Square"
- input: "dot_0/l2_normalize/Sum/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Maximum"
- op: "Maximum"
- input: "dot_0/l2_normalize_1/Sum"
- input: "dot_0/l2_normalize/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Rsqrt"
- op: "Rsqrt"
- input: "dot_0/l2_normalize_1/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1"
- op: "Mul"
- input: "input_embedding_user_guid"
- input: "dot_0/l2_normalize_1/Rsqrt"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "input_embedding_product_slug"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Square"
- op: "Square"
- input: "input_embedding_product_slug"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Sum"
- op: "Sum"
- input: "dot_0/l2_normalize/Square"
- input: "dot_0/l2_normalize/Sum/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Maximum"
- op: "Maximum"
- input: "dot_0/l2_normalize/Sum"
- input: "dot_0/l2_normalize/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Rsqrt"
- op: "Rsqrt"
- input: "dot_0/l2_normalize/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize"
- op: "Mul"
- input: "input_embedding_product_slug"
- input: "dot_0/l2_normalize/Rsqrt"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/Mul"
- op: "Mul"
- input: "dot_0/l2_normalize"
- input: "dot_0/l2_normalize_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/Sum"
- op: "Sum"
- input: "dot_0/Mul"
- input: "dot_0/l2_normalize/Sum/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "dot_0/ExpandDims"
- op: "ExpandDims"
- input: "dot_0/Sum"
- input: "dot_0/l2_normalize/Sum/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/mul_1"
- op: "Mul"
- input: "dot_0/ExpandDims"
- input: "batch_norm/batchnorm/mul/_0__cf__0"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/add_1"
- op: "Add"
- input: "batch_norm/batchnorm/mul_1"
- input: "batch_norm/batchnorm/sub/_1__cf__1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dense_out/MatMul"
- op: "MatMul"
- input: "batch_norm/batchnorm/add_1"
- input: "dense_out/kernel"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "dense_out/BiasAdd"
- op: "BiasAdd"
- input: "dense_out/MatMul"
- input: "batch_norm/moving_mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "data_format"
- value {
- s: "NHWC"
- }
- }
- }
- node {
- name: "dense_out/Sigmoid"
- op: "Sigmoid"
- input: "dense_out/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- versions {
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "input_embedding_product_slug"
- value {
- name: "input_embedding_product_slug:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- inputs {
- key: "input_embedding_user_guid"
- value {
- name: "input_embedding_user_guid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- outputs {
- key: "output"
- value {
- name: "dense_out/Sigmoid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/optimized/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/optimized/saved_model.pbtxt
deleted file mode 100644
index 102428b2cf2..00000000000
--- a/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/optimized/saved_model.pbtxt
+++ /dev/null
@@ -1,1368 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Add"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "BiasAdd"
- input_arg {
- name: "value"
- type_attr: "T"
- }
- input_arg {
- name: "bias"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "data_format"
- type: "string"
- default_value {
- s: "NHWC"
- }
- allowed_values {
- list {
- s: "NHWC"
- s: "NCHW"
- }
- }
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "ExpandDims"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "dim"
- type_attr: "Tdim"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tdim"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Maximum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Placeholder"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- default_value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- op {
- name: "PlaceholderWithDefault"
- input_arg {
- name: "input"
- type_attr: "dtype"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- }
- }
- op {
- name: "Rsqrt"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Sigmoid"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Square"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Sum"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- }
- tags: "serve"
- tensorflow_version: "1.13.1"
- tensorflow_git_version: "b\'v1.13.1-0-g6612da8951\'"
- }
- graph_def {
- node {
- name: "keras_learning_phase/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_BOOL
- tensor_shape {
- }
- bool_val: false
- }
- }
- }
- }
- node {
- name: "keras_learning_phase"
- op: "PlaceholderWithDefault"
- input: "keras_learning_phase/input"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Maximum/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 9.999999960041972e-13
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Sum/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dense_out/kernel"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- float_val: -1.278536081314087
- }
- }
- }
- }
- node {
- name: "batch_norm/moving_mean"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/mul/_0__cf__2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.9995003938674927
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/sub/_1__cf__3"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "input_embedding_user_guid"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Square"
- op: "Square"
- input: "input_embedding_user_guid"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Sum"
- op: "Sum"
- input: "dot_0/l2_normalize_1/Square"
- input: "dot_0/l2_normalize/Sum/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Maximum"
- op: "Maximum"
- input: "dot_0/l2_normalize_1/Sum"
- input: "dot_0/l2_normalize/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Rsqrt"
- op: "Rsqrt"
- input: "dot_0/l2_normalize_1/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1"
- op: "Mul"
- input: "input_embedding_user_guid"
- input: "dot_0/l2_normalize_1/Rsqrt"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "input_embedding_product_slug"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Square"
- op: "Square"
- input: "input_embedding_product_slug"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Sum"
- op: "Sum"
- input: "dot_0/l2_normalize/Square"
- input: "dot_0/l2_normalize/Sum/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Maximum"
- op: "Maximum"
- input: "dot_0/l2_normalize/Sum"
- input: "dot_0/l2_normalize/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Rsqrt"
- op: "Rsqrt"
- input: "dot_0/l2_normalize/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize"
- op: "Mul"
- input: "input_embedding_product_slug"
- input: "dot_0/l2_normalize/Rsqrt"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/Mul"
- op: "Mul"
- input: "dot_0/l2_normalize"
- input: "dot_0/l2_normalize_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/Sum"
- op: "Sum"
- input: "dot_0/Mul"
- input: "dot_0/l2_normalize/Sum/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "dot_0/ExpandDims"
- op: "ExpandDims"
- input: "dot_0/Sum"
- input: "dot_0/l2_normalize/Sum/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/mul_1"
- op: "Mul"
- input: "dot_0/ExpandDims"
- input: "batch_norm/batchnorm/mul/_0__cf__2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/add_1"
- op: "Add"
- input: "batch_norm/batchnorm/mul_1"
- input: "batch_norm/batchnorm/sub/_1__cf__3"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dense_out/MatMul"
- op: "MatMul"
- input: "batch_norm/batchnorm/add_1"
- input: "dense_out/kernel"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "dense_out/BiasAdd"
- op: "BiasAdd"
- input: "dense_out/MatMul"
- input: "batch_norm/moving_mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "data_format"
- value {
- s: "NHWC"
- }
- }
- }
- node {
- name: "dense_out/Sigmoid"
- op: "Sigmoid"
- input: "dense_out/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- versions {
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "input_embedding_product_slug"
- value {
- name: "input_embedding_product_slug:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- inputs {
- key: "input_embedding_user_guid"
- value {
- name: "input_embedding_user_guid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- outputs {
- key: "output"
- value {
- name: "dense_out/Sigmoid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/saved_model.pbtxt
deleted file mode 100644
index 50aee0ebcf7..00000000000
--- a/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/saved_model.pbtxt
+++ /dev/null
@@ -1,11403 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Abs"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Add"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "Assert"
- input_arg {
- name: "condition"
- type: DT_BOOL
- }
- input_arg {
- name: "data"
- type_list_attr: "T"
- }
- attr {
- name: "T"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "summarize"
- type: "int"
- default_value {
- i: 3
- }
- }
- is_stateful: true
- }
- op {
- name: "AssignAddVariableOp"
- input_arg {
- name: "resource"
- type: DT_RESOURCE
- }
- input_arg {
- name: "value"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- is_stateful: true
- }
- op {
- name: "AssignVariableOp"
- input_arg {
- name: "resource"
- type: DT_RESOURCE
- }
- input_arg {
- name: "value"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- is_stateful: true
- }
- op {
- name: "BiasAdd"
- input_arg {
- name: "value"
- type_attr: "T"
- }
- input_arg {
- name: "bias"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "data_format"
- type: "string"
- default_value {
- s: "NHWC"
- }
- allowed_values {
- list {
- s: "NHWC"
- s: "NCHW"
- }
- }
- }
- }
- op {
- name: "Cast"
- input_arg {
- name: "x"
- type_attr: "SrcT"
- }
- output_arg {
- name: "y"
- type_attr: "DstT"
- }
- attr {
- name: "SrcT"
- type: "type"
- }
- attr {
- name: "DstT"
- type: "type"
- }
- attr {
- name: "Truncate"
- type: "bool"
- default_value {
- b: false
- }
- }
- }
- op {
- name: "ConcatV2"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- input_arg {
- name: "axis"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 2
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "DenseToDenseSetOperation"
- input_arg {
- name: "set1"
- type_attr: "T"
- }
- input_arg {
- name: "set2"
- type_attr: "T"
- }
- output_arg {
- name: "result_indices"
- type: DT_INT64
- }
- output_arg {
- name: "result_values"
- type_attr: "T"
- }
- output_arg {
- name: "result_shape"
- type: DT_INT64
- }
- attr {
- name: "set_operation"
- type: "string"
- }
- attr {
- name: "validate_indices"
- type: "bool"
- default_value {
- b: true
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_UINT8
- type: DT_UINT16
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "DivNoNan"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "Equal"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_QUINT8
- type: DT_QINT8
- type: DT_QINT32
- type: DT_STRING
- type: DT_BOOL
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Exp"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "ExpandDims"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "dim"
- type_attr: "Tdim"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tdim"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Fill"
- input_arg {
- name: "dims"
- type_attr: "index_type"
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "index_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Greater"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_INT64
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- }
- op {
- name: "GreaterEqual"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_INT64
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- }
- op {
- name: "Identity"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "Log"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Log1p"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Maximum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mean"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Merge"
- input_arg {
- name: "inputs"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- output_arg {
- name: "value_index"
- type: DT_INT32
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- }
- op {
- name: "MergeV2Checkpoints"
- input_arg {
- name: "checkpoint_prefixes"
- type: DT_STRING
- }
- input_arg {
- name: "destination_prefix"
- type: DT_STRING
- }
- attr {
- name: "delete_old_dirs"
- type: "bool"
- default_value {
- b: true
- }
- }
- is_stateful: true
- }
- op {
- name: "Minimum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Neg"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "NoOp"
- }
- op {
- name: "Pack"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "axis"
- type: "int"
- default_value {
- i: 0
- }
- }
- }
- op {
- name: "Placeholder"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- default_value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- op {
- name: "PlaceholderWithDefault"
- input_arg {
- name: "input"
- type_attr: "dtype"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- }
- }
- op {
- name: "ReadVariableOp"
- input_arg {
- name: "resource"
- type: DT_RESOURCE
- }
- output_arg {
- name: "value"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- is_stateful: true
- }
- op {
- name: "RealDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "RestoreV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- output_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "Rsqrt"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "SaveV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- input_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "Select"
- input_arg {
- name: "condition"
- type: DT_BOOL
- }
- input_arg {
- name: "t"
- type_attr: "T"
- }
- input_arg {
- name: "e"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "Shape"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "out_type"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "out_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "ShardedFilename"
- input_arg {
- name: "basename"
- type: DT_STRING
- }
- input_arg {
- name: "shard"
- type: DT_INT32
- }
- input_arg {
- name: "num_shards"
- type: DT_INT32
- }
- output_arg {
- name: "filename"
- type: DT_STRING
- }
- }
- op {
- name: "Sigmoid"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Size"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "out_type"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "out_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Square"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "StringJoin"
- input_arg {
- name: "inputs"
- type: DT_STRING
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type: DT_STRING
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "separator"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Sub"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Sum"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Switch"
- input_arg {
- name: "data"
- type_attr: "T"
- }
- input_arg {
- name: "pred"
- type: DT_BOOL
- }
- output_arg {
- name: "output_false"
- type_attr: "T"
- }
- output_arg {
- name: "output_true"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "TruncatedNormal"
- input_arg {
- name: "shape"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "seed"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "seed2"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "dtype"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_BFLOAT16
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_stateful: true
- }
- op {
- name: "VarHandleOp"
- output_arg {
- name: "resource"
- type: DT_RESOURCE
- }
- attr {
- name: "container"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "shared_name"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- }
- is_stateful: true
- }
- op {
- name: "VarIsInitializedOp"
- input_arg {
- name: "resource"
- type: DT_RESOURCE
- }
- output_arg {
- name: "is_initialized"
- type: DT_BOOL
- }
- is_stateful: true
- }
- op {
- name: "ZerosLike"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- }
- tags: "serve"
- tensorflow_version: "1.13.1"
- tensorflow_git_version: "b\'v1.13.1-0-g6612da8951\'"
- }
- graph_def {
- node {
- name: "keras_learning_phase/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_BOOL
- tensor_shape {
- }
- bool_val: false
- }
- }
- }
- }
- node {
- name: "keras_learning_phase"
- op: "PlaceholderWithDefault"
- input: "keras_learning_phase/input"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "input_embedding_product_slug"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- node {
- name: "input_embedding_user_guid"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Square"
- op: "Square"
- input: "input_embedding_product_slug"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Sum/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Sum"
- op: "Sum"
- input: "dot_0/l2_normalize/Square"
- input: "dot_0/l2_normalize/Sum/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Maximum/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 9.999999960041972e-13
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Maximum"
- op: "Maximum"
- input: "dot_0/l2_normalize/Sum"
- input: "dot_0/l2_normalize/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Rsqrt"
- op: "Rsqrt"
- input: "dot_0/l2_normalize/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize"
- op: "Mul"
- input: "input_embedding_product_slug"
- input: "dot_0/l2_normalize/Rsqrt"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Square"
- op: "Square"
- input: "input_embedding_user_guid"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Sum/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Sum"
- op: "Sum"
- input: "dot_0/l2_normalize_1/Square"
- input: "dot_0/l2_normalize_1/Sum/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Maximum/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 9.999999960041972e-13
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Maximum"
- op: "Maximum"
- input: "dot_0/l2_normalize_1/Sum"
- input: "dot_0/l2_normalize_1/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Rsqrt"
- op: "Rsqrt"
- input: "dot_0/l2_normalize_1/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1"
- op: "Mul"
- input: "input_embedding_user_guid"
- input: "dot_0/l2_normalize_1/Rsqrt"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/Mul"
- op: "Mul"
- input: "dot_0/l2_normalize"
- input: "dot_0/l2_normalize_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/Sum/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dot_0/Sum"
- op: "Sum"
- input: "dot_0/Mul"
- input: "dot_0/Sum/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "dot_0/ExpandDims/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dot_0/ExpandDims"
- op: "ExpandDims"
- input: "dot_0/Sum"
- input: "dot_0/ExpandDims/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/gamma/Initializer/ones"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "batch_norm/gamma"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "batch_norm/gamma"
- }
- }
- }
- node {
- name: "batch_norm/gamma/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "batch_norm/gamma"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/gamma/Assign"
- op: "AssignVariableOp"
- input: "batch_norm/gamma"
- input: "batch_norm/gamma/Initializer/ones"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/gamma"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/gamma/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "batch_norm/gamma"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/beta/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "batch_norm/beta"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "batch_norm/beta"
- }
- }
- }
- node {
- name: "batch_norm/beta/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "batch_norm/beta"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/beta/Assign"
- op: "AssignVariableOp"
- input: "batch_norm/beta"
- input: "batch_norm/beta/Initializer/zeros"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/beta"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/beta/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "batch_norm/beta"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/moving_mean/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "batch_norm/moving_mean"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "batch_norm/moving_mean"
- }
- }
- }
- node {
- name: "batch_norm/moving_mean/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "batch_norm/moving_mean"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/moving_mean/Assign"
- op: "AssignVariableOp"
- input: "batch_norm/moving_mean"
- input: "batch_norm/moving_mean/Initializer/zeros"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/moving_mean"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/moving_mean/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "batch_norm/moving_mean"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/moving_variance/Initializer/ones"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "batch_norm/moving_variance"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "batch_norm/moving_variance"
- }
- }
- }
- node {
- name: "batch_norm/moving_variance/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "batch_norm/moving_variance"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/moving_variance/Assign"
- op: "AssignVariableOp"
- input: "batch_norm/moving_variance"
- input: "batch_norm/moving_variance/Initializer/ones"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/moving_variance"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/moving_variance/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "batch_norm/moving_variance"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/ReadVariableOp"
- op: "ReadVariableOp"
- input: "batch_norm/moving_variance"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/add/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0010000000474974513
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/add"
- op: "Add"
- input: "batch_norm/batchnorm/ReadVariableOp"
- input: "batch_norm/batchnorm/add/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/Rsqrt"
- op: "Rsqrt"
- input: "batch_norm/batchnorm/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/mul/ReadVariableOp"
- op: "ReadVariableOp"
- input: "batch_norm/gamma"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/mul"
- op: "Mul"
- input: "batch_norm/batchnorm/Rsqrt"
- input: "batch_norm/batchnorm/mul/ReadVariableOp"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/mul_1"
- op: "Mul"
- input: "dot_0/ExpandDims"
- input: "batch_norm/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/ReadVariableOp_1"
- op: "ReadVariableOp"
- input: "batch_norm/moving_mean"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/mul_2"
- op: "Mul"
- input: "batch_norm/batchnorm/ReadVariableOp_1"
- input: "batch_norm/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/ReadVariableOp_2"
- op: "ReadVariableOp"
- input: "batch_norm/beta"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/sub"
- op: "Sub"
- input: "batch_norm/batchnorm/ReadVariableOp_2"
- input: "batch_norm/batchnorm/mul_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/add_1"
- op: "Add"
- input: "batch_norm/batchnorm/mul_1"
- input: "batch_norm/batchnorm/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dense_out/kernel/Initializer/truncated_normal/shape"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\001\000\000\000"
- }
- }
- }
- }
- node {
- name: "dense_out/kernel/Initializer/truncated_normal/mean"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "dense_out/kernel/Initializer/truncated_normal/stddev"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.607744812965393
- }
- }
- }
- }
- node {
- name: "dense_out/kernel/Initializer/truncated_normal/TruncatedNormal"
- op: "TruncatedNormal"
- input: "dense_out/kernel/Initializer/truncated_normal/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "dense_out/kernel/Initializer/truncated_normal/mul"
- op: "Mul"
- input: "dense_out/kernel/Initializer/truncated_normal/TruncatedNormal"
- input: "dense_out/kernel/Initializer/truncated_normal/stddev"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dense_out/kernel/Initializer/truncated_normal"
- op: "Add"
- input: "dense_out/kernel/Initializer/truncated_normal/mul"
- input: "dense_out/kernel/Initializer/truncated_normal/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dense_out/kernel"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "dense_out/kernel"
- }
- }
- }
- node {
- name: "dense_out/kernel/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "dense_out/kernel"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "dense_out/kernel/Assign"
- op: "AssignVariableOp"
- input: "dense_out/kernel"
- input: "dense_out/kernel/Initializer/truncated_normal"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/kernel"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "dense_out/kernel/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "dense_out/kernel"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "dense_out/bias/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "dense_out/bias"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "dense_out/bias"
- }
- }
- }
- node {
- name: "dense_out/bias/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "dense_out/bias"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "dense_out/bias/Assign"
- op: "AssignVariableOp"
- input: "dense_out/bias"
- input: "dense_out/bias/Initializer/zeros"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/bias"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "dense_out/bias/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "dense_out/bias"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "dense_out/MatMul/ReadVariableOp"
- op: "ReadVariableOp"
- input: "dense_out/kernel"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "dense_out/MatMul"
- op: "MatMul"
- input: "batch_norm/batchnorm/add_1"
- input: "dense_out/MatMul/ReadVariableOp"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "dense_out/BiasAdd/ReadVariableOp"
- op: "ReadVariableOp"
- input: "dense_out/bias"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "dense_out/BiasAdd"
- op: "BiasAdd"
- input: "dense_out/MatMul"
- input: "dense_out/BiasAdd/ReadVariableOp"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "data_format"
- value {
- s: "NHWC"
- }
- }
- }
- node {
- name: "dense_out/Sigmoid"
- op: "Sigmoid"
- input: "dense_out/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "Adam/iterations/Initializer/initial_value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/iterations"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT64
- tensor_shape {
- }
- int64_val: 0
- }
- }
- }
- }
- node {
- name: "Adam/iterations"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/iterations"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "Adam/iterations"
- }
- }
- }
- node {
- name: "Adam/iterations/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/iterations"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Adam/iterations/Assign"
- op: "AssignVariableOp"
- input: "Adam/iterations"
- input: "Adam/iterations/Initializer/initial_value"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/iterations"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- }
- node {
- name: "Adam/iterations/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "Adam/iterations"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/iterations"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- }
- node {
- name: "Adam/lr/Initializer/initial_value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/lr"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0010000000474974513
- }
- }
- }
- }
- node {
- name: "Adam/lr"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/lr"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "Adam/lr"
- }
- }
- }
- node {
- name: "Adam/lr/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/lr"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Adam/lr/Assign"
- op: "AssignVariableOp"
- input: "Adam/lr"
- input: "Adam/lr/Initializer/initial_value"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/lr"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/lr/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "Adam/lr"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/lr"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/beta_1/Initializer/initial_value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.8999999761581421
- }
- }
- }
- }
- node {
- name: "Adam/beta_1"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "Adam/beta_1"
- }
- }
- }
- node {
- name: "Adam/beta_1/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/beta_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Adam/beta_1/Assign"
- op: "AssignVariableOp"
- input: "Adam/beta_1"
- input: "Adam/beta_1/Initializer/initial_value"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_1"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/beta_1/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "Adam/beta_1"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/beta_2/Initializer/initial_value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.9990000128746033
- }
- }
- }
- }
- node {
- name: "Adam/beta_2"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "Adam/beta_2"
- }
- }
- }
- node {
- name: "Adam/beta_2/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/beta_2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Adam/beta_2/Assign"
- op: "AssignVariableOp"
- input: "Adam/beta_2"
- input: "Adam/beta_2/Initializer/initial_value"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_2"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/beta_2/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "Adam/beta_2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/decay/Initializer/initial_value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/decay"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "Adam/decay"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/decay"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "Adam/decay"
- }
- }
- }
- node {
- name: "Adam/decay/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/decay"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Adam/decay/Assign"
- op: "AssignVariableOp"
- input: "Adam/decay"
- input: "Adam/decay/Initializer/initial_value"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/decay"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/decay/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "Adam/decay"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/decay"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "dense_out_target"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- node {
- name: "Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "dense_out_sample_weights"
- op: "PlaceholderWithDefault"
- input: "Const_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- node {
- name: "total/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "total"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "total"
- }
- }
- }
- node {
- name: "total/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "total"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "total/Assign"
- op: "AssignVariableOp"
- input: "total"
- input: "total/Initializer/zeros"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "total/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "count/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "count"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "count"
- }
- }
- }
- node {
- name: "count/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "count"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "count/Assign"
- op: "AssignVariableOp"
- input: "count"
- input: "count/Initializer/zeros"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "count/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "count"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "total_1/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "total_1"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "total_1"
- }
- }
- }
- node {
- name: "total_1/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "total_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "total_1/Assign"
- op: "AssignVariableOp"
- input: "total_1"
- input: "total_1/Initializer/zeros"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total_1"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "total_1/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total_1"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "count_1/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "count_1"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "count_1"
- }
- }
- }
- node {
- name: "count_1/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "count_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "count_1/Assign"
- op: "AssignVariableOp"
- input: "count_1"
- input: "count_1/Initializer/zeros"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count_1"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "count_1/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "count_1"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "loss/dense_out_loss/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0000000116860974e-07
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/sub/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/sub"
- op: "Sub"
- input: "loss/dense_out_loss/sub/x"
- input: "loss/dense_out_loss/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/clip_by_value/Minimum"
- op: "Minimum"
- input: "dense_out/Sigmoid"
- input: "loss/dense_out_loss/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/clip_by_value"
- op: "Maximum"
- input: "loss/dense_out_loss/clip_by_value/Minimum"
- input: "loss/dense_out_loss/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/sub_1/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/sub_1"
- op: "Sub"
- input: "loss/dense_out_loss/sub_1/x"
- input: "loss/dense_out_loss/clip_by_value"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/truediv"
- op: "RealDiv"
- input: "loss/dense_out_loss/clip_by_value"
- input: "loss/dense_out_loss/sub_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/Log"
- op: "Log"
- input: "loss/dense_out_loss/truediv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/logistic_loss/zeros_like"
- op: "ZerosLike"
- input: "loss/dense_out_loss/Log"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/logistic_loss/GreaterEqual"
- op: "GreaterEqual"
- input: "loss/dense_out_loss/Log"
- input: "loss/dense_out_loss/logistic_loss/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/logistic_loss/Select"
- op: "Select"
- input: "loss/dense_out_loss/logistic_loss/GreaterEqual"
- input: "loss/dense_out_loss/Log"
- input: "loss/dense_out_loss/logistic_loss/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/logistic_loss/Neg"
- op: "Neg"
- input: "loss/dense_out_loss/Log"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/logistic_loss/Select_1"
- op: "Select"
- input: "loss/dense_out_loss/logistic_loss/GreaterEqual"
- input: "loss/dense_out_loss/logistic_loss/Neg"
- input: "loss/dense_out_loss/Log"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/logistic_loss/mul"
- op: "Mul"
- input: "loss/dense_out_loss/Log"
- input: "dense_out_target"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/logistic_loss/sub"
- op: "Sub"
- input: "loss/dense_out_loss/logistic_loss/Select"
- input: "loss/dense_out_loss/logistic_loss/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/logistic_loss/Exp"
- op: "Exp"
- input: "loss/dense_out_loss/logistic_loss/Select_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/logistic_loss/Log1p"
- op: "Log1p"
- input: "loss/dense_out_loss/logistic_loss/Exp"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/logistic_loss"
- op: "Add"
- input: "loss/dense_out_loss/logistic_loss/sub"
- input: "loss/dense_out_loss/logistic_loss/Log1p"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/Mean/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/Mean"
- op: "Mean"
- input: "loss/dense_out_loss/logistic_loss"
- input: "loss/dense_out_loss/Mean/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- op: "Shape"
- input: "dense_out_sample_weights"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/rank"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- op: "Shape"
- input: "loss/dense_out_loss/Mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/values/rank"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- op: "Equal"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar/x"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/rank"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_t"
- op: "Identity"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch:1"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_f"
- op: "Identity"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- op: "Identity"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch_1"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- op: "Equal"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/values/rank"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/values/rank"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch_1"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/rank"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/rank"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- op: "Identity"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch:1"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_f"
- op: "Identity"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id"
- op: "Identity"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/dim"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims"
- op: "ExpandDims"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch_1:1"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/dim"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch_1"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Shape"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\001\000\000\000"
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Const"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like"
- op: "Fill"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Shape"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "index_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat/axis"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat"
- op: "ConcatV2"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat/axis"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/dim"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1"
- op: "ExpandDims"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch_1:1"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/dim"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch_1"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation"
- op: "DenseToDenseSetOperation"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 2
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "set_operation"
- value {
- s: "a-b"
- }
- }
- attr {
- key: "validate_indices"
- value {
- b: true
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/num_invalid_dims"
- op: "Size"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/x"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims"
- op: "Equal"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/x"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/num_invalid_dims"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Merge"
- op: "Merge"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- op: "Merge"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Merge"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch_1:1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "weights can not be broadcast to values."
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "weights.shape="
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/Const_2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "dense_out_sample_weights:0"
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/Const_3"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "values.shape="
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/Const_4"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "loss/dense_out_loss/Mean:0"
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/Const_5"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "is_scalar="
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Switch"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t"
- op: "Identity"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Switch:1"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- op: "Identity"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Switch"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id"
- op: "Identity"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/NoOp"
- op: "NoOp"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t"
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency"
- op: "Identity"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/NoOp"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_0"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "weights can not be broadcast to values."
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_1"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "weights.shape="
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_2"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "dense_out_sample_weights:0"
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_4"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "values.shape="
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_5"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "loss/dense_out_loss/Mean:0"
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_7"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "is_scalar="
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert"
- op: "Assert"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_0"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_1"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_2"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_1"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_4"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_5"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_2"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_7"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_3"
- attr {
- key: "T"
- value {
- list {
- type: DT_STRING
- type: DT_STRING
- type: DT_STRING
- type: DT_INT32
- type: DT_STRING
- type: DT_STRING
- type: DT_INT32
- type: DT_STRING
- type: DT_BOOL
- }
- }
- }
- attr {
- key: "summarize"
- value {
- i: 3
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_1"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_2"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_3"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency_1"
- op: "Identity"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Merge"
- op: "Merge"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency_1"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/ones_like/Shape"
- op: "Shape"
- input: "loss/dense_out_loss/Mean"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Merge"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/ones_like/Const"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Merge"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/ones_like"
- op: "Fill"
- input: "loss/dense_out_loss/broadcast_weights/ones_like/Shape"
- input: "loss/dense_out_loss/broadcast_weights/ones_like/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "index_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights"
- op: "Mul"
- input: "dense_out_sample_weights"
- input: "loss/dense_out_loss/broadcast_weights/ones_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/Mul"
- op: "Mul"
- input: "loss/dense_out_loss/Mean"
- input: "loss/dense_out_loss/broadcast_weights"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/Sum"
- op: "Sum"
- input: "loss/dense_out_loss/Mul"
- input: "loss/dense_out_loss/Const_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "loss/dense_out_loss/Const_2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/Sum_1"
- op: "Sum"
- input: "loss/dense_out_loss/broadcast_weights"
- input: "loss/dense_out_loss/Const_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "loss/dense_out_loss/div_no_nan"
- op: "DivNoNan"
- input: "loss/dense_out_loss/Sum"
- input: "loss/dense_out_loss/Sum_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/Const_3"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/Mean_1"
- op: "Mean"
- input: "loss/dense_out_loss/div_no_nan"
- input: "loss/dense_out_loss/Const_3"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "loss/mul/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "loss/mul"
- op: "Mul"
- input: "loss/mul/x"
- input: "loss/dense_out_loss/Mean_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/kernel/Regularizer/Square/ReadVariableOp"
- op: "ReadVariableOp"
- input: "dense_out/kernel"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "loss/kernel/Regularizer/Square"
- op: "Square"
- input: "loss/kernel/Regularizer/Square/ReadVariableOp"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/kernel/Regularizer/mul/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "loss/kernel/Regularizer/mul"
- op: "Mul"
- input: "loss/kernel/Regularizer/mul/x"
- input: "loss/kernel/Regularizer/Square"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/kernel/Regularizer/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\000\000\000\000\001\000\000\000"
- }
- }
- }
- }
- node {
- name: "loss/kernel/Regularizer/Sum"
- op: "Sum"
- input: "loss/kernel/Regularizer/mul"
- input: "loss/kernel/Regularizer/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "loss/kernel/Regularizer/add/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "loss/kernel/Regularizer/add"
- op: "Add"
- input: "loss/kernel/Regularizer/add/x"
- input: "loss/kernel/Regularizer/Sum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/add"
- op: "Add"
- input: "loss/mul"
- input: "loss/kernel/Regularizer/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.5
- }
- }
- }
- }
- node {
- name: "metrics/acc/Greater"
- op: "Greater"
- input: "dense_out/Sigmoid"
- input: "metrics/acc/Cast/x"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast_1"
- op: "Cast"
- input: "metrics/acc/Greater"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Equal"
- op: "Equal"
- input: "dense_out_target"
- input: "metrics/acc/Cast_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast_2"
- op: "Cast"
- input: "metrics/acc/Equal"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Mean/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "metrics/acc/Mean"
- op: "Mean"
- input: "metrics/acc/Cast_2"
- input: "metrics/acc/Mean/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/acc/Size"
- op: "Size"
- input: "metrics/acc/Mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "metrics/acc/Cast_3"
- op: "Cast"
- input: "metrics/acc/Size"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "metrics/acc/Sum"
- op: "Sum"
- input: "metrics/acc/Mean"
- input: "metrics/acc/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/acc/AssignAddVariableOp"
- op: "AssignAddVariableOp"
- input: "total"
- input: "metrics/acc/Sum"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total"
- input: "^metrics/acc/AssignAddVariableOp"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/AssignAddVariableOp_1"
- op: "AssignAddVariableOp"
- input: "count"
- input: "metrics/acc/Cast_3"
- input: "^metrics/acc/ReadVariableOp"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/ReadVariableOp_1"
- op: "ReadVariableOp"
- input: "count"
- input: "^metrics/acc/AssignAddVariableOp_1"
- input: "^metrics/acc/ReadVariableOp"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/div_no_nan/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total"
- input: "^metrics/acc/ReadVariableOp_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/div_no_nan/ReadVariableOp_1"
- op: "ReadVariableOp"
- input: "count"
- input: "^metrics/acc/ReadVariableOp_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/div_no_nan"
- op: "DivNoNan"
- input: "metrics/acc/div_no_nan/ReadVariableOp"
- input: "metrics/acc/div_no_nan/ReadVariableOp_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast_4/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.5
- }
- }
- }
- }
- node {
- name: "metrics/acc/Greater_1"
- op: "Greater"
- input: "dense_out/Sigmoid"
- input: "metrics/acc/Cast_4/x"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast_5"
- op: "Cast"
- input: "metrics/acc/Greater_1"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Equal_1"
- op: "Equal"
- input: "dense_out_target"
- input: "metrics/acc/Cast_5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast_6"
- op: "Cast"
- input: "metrics/acc/Equal_1"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Mean_1/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "metrics/acc/Mean_1"
- op: "Mean"
- input: "metrics/acc/Cast_6"
- input: "metrics/acc/Mean_1/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/acc/Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "metrics/acc/Mean_2"
- op: "Mean"
- input: "metrics/acc/Mean_1"
- input: "metrics/acc/Const_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/sub"
- op: "Sub"
- input: "dense_out/Sigmoid"
- input: "dense_out_target"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Abs"
- op: "Abs"
- input: "metrics/mean_absolute_error/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Mean/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Mean"
- op: "Mean"
- input: "metrics/mean_absolute_error/Abs"
- input: "metrics/mean_absolute_error/Mean/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Size"
- op: "Size"
- input: "metrics/mean_absolute_error/Mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Cast"
- op: "Cast"
- input: "metrics/mean_absolute_error/Size"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Sum"
- op: "Sum"
- input: "metrics/mean_absolute_error/Mean"
- input: "metrics/mean_absolute_error/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/AssignAddVariableOp"
- op: "AssignAddVariableOp"
- input: "total_1"
- input: "metrics/mean_absolute_error/Sum"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total_1"
- input: "^metrics/mean_absolute_error/AssignAddVariableOp"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/AssignAddVariableOp_1"
- op: "AssignAddVariableOp"
- input: "count_1"
- input: "metrics/mean_absolute_error/Cast"
- input: "^metrics/mean_absolute_error/ReadVariableOp"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/ReadVariableOp_1"
- op: "ReadVariableOp"
- input: "count_1"
- input: "^metrics/mean_absolute_error/AssignAddVariableOp_1"
- input: "^metrics/mean_absolute_error/ReadVariableOp"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/div_no_nan/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total_1"
- input: "^metrics/mean_absolute_error/ReadVariableOp_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/div_no_nan/ReadVariableOp_1"
- op: "ReadVariableOp"
- input: "count_1"
- input: "^metrics/mean_absolute_error/ReadVariableOp_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/div_no_nan"
- op: "DivNoNan"
- input: "metrics/mean_absolute_error/div_no_nan/ReadVariableOp"
- input: "metrics/mean_absolute_error/div_no_nan/ReadVariableOp_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/sub_1"
- op: "Sub"
- input: "dense_out/Sigmoid"
- input: "dense_out_target"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Abs_1"
- op: "Abs"
- input: "metrics/mean_absolute_error/sub_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Mean_1/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Mean_1"
- op: "Mean"
- input: "metrics/mean_absolute_error/Abs_1"
- input: "metrics/mean_absolute_error/Mean_1/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Mean_2"
- op: "Mean"
- input: "metrics/mean_absolute_error/Mean_1"
- input: "metrics/mean_absolute_error/Const_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "Placeholder"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- node {
- name: "AssignVariableOp"
- op: "AssignVariableOp"
- input: "batch_norm/gamma"
- input: "Placeholder"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "ReadVariableOp"
- op: "ReadVariableOp"
- input: "batch_norm/gamma"
- input: "^AssignVariableOp"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Placeholder_1"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- node {
- name: "AssignVariableOp_1"
- op: "AssignVariableOp"
- input: "batch_norm/beta"
- input: "Placeholder_1"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "ReadVariableOp_1"
- op: "ReadVariableOp"
- input: "batch_norm/beta"
- input: "^AssignVariableOp_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Placeholder_2"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- node {
- name: "AssignVariableOp_2"
- op: "AssignVariableOp"
- input: "batch_norm/moving_mean"
- input: "Placeholder_2"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "ReadVariableOp_2"
- op: "ReadVariableOp"
- input: "batch_norm/moving_mean"
- input: "^AssignVariableOp_2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Placeholder_3"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- node {
- name: "AssignVariableOp_3"
- op: "AssignVariableOp"
- input: "batch_norm/moving_variance"
- input: "Placeholder_3"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "ReadVariableOp_3"
- op: "ReadVariableOp"
- input: "batch_norm/moving_variance"
- input: "^AssignVariableOp_3"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Placeholder_4"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- node {
- name: "AssignVariableOp_4"
- op: "AssignVariableOp"
- input: "dense_out/kernel"
- input: "Placeholder_4"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "ReadVariableOp_4"
- op: "ReadVariableOp"
- input: "dense_out/kernel"
- input: "^AssignVariableOp_4"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Placeholder_5"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- node {
- name: "AssignVariableOp_5"
- op: "AssignVariableOp"
- input: "dense_out/bias"
- input: "Placeholder_5"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "ReadVariableOp_5"
- op: "ReadVariableOp"
- input: "dense_out/bias"
- input: "^AssignVariableOp_5"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/beta_2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_1"
- op: "VarIsInitializedOp"
- input: "count_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_2"
- op: "VarIsInitializedOp"
- input: "batch_norm/gamma"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_3"
- op: "VarIsInitializedOp"
- input: "batch_norm/moving_variance"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_4"
- op: "VarIsInitializedOp"
- input: "batch_norm/beta"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_5"
- op: "VarIsInitializedOp"
- input: "dense_out/kernel"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_6"
- op: "VarIsInitializedOp"
- input: "Adam/iterations"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_7"
- op: "VarIsInitializedOp"
- input: "total_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_8"
- op: "VarIsInitializedOp"
- input: "total"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_9"
- op: "VarIsInitializedOp"
- input: "Adam/beta_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_10"
- op: "VarIsInitializedOp"
- input: "Adam/lr"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_11"
- op: "VarIsInitializedOp"
- input: "batch_norm/moving_mean"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_12"
- op: "VarIsInitializedOp"
- input: "dense_out/bias"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_13"
- op: "VarIsInitializedOp"
- input: "count"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_14"
- op: "VarIsInitializedOp"
- input: "Adam/decay"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "init"
- op: "NoOp"
- input: "^Adam/beta_1/Assign"
- input: "^Adam/beta_2/Assign"
- input: "^Adam/decay/Assign"
- input: "^Adam/iterations/Assign"
- input: "^Adam/lr/Assign"
- input: "^batch_norm/beta/Assign"
- input: "^batch_norm/gamma/Assign"
- input: "^batch_norm/moving_mean/Assign"
- input: "^batch_norm/moving_variance/Assign"
- input: "^count/Assign"
- input: "^count_1/Assign"
- input: "^dense_out/bias/Assign"
- input: "^dense_out/kernel/Assign"
- input: "^total/Assign"
- input: "^total_1/Assign"
- }
- node {
- name: "init_1"
- op: "NoOp"
- input: "^Adam/beta_1/Assign"
- input: "^Adam/beta_2/Assign"
- input: "^Adam/decay/Assign"
- input: "^Adam/iterations/Assign"
- input: "^Adam/lr/Assign"
- input: "^batch_norm/beta/Assign"
- input: "^batch_norm/gamma/Assign"
- input: "^batch_norm/moving_mean/Assign"
- input: "^batch_norm/moving_variance/Assign"
- input: "^dense_out/bias/Assign"
- input: "^dense_out/kernel/Assign"
- }
- node {
- name: "init_2"
- op: "NoOp"
- }
- node {
- name: "group_deps"
- op: "NoOp"
- input: "^init_1"
- input: "^init_2"
- }
- node {
- name: "save/filename/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "model"
- }
- }
- }
- }
- node {
- name: "save/filename"
- op: "PlaceholderWithDefault"
- input: "save/filename/input"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "save/Const"
- op: "PlaceholderWithDefault"
- input: "save/filename"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "save/StringJoin/inputs_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "_temp_7f2179765c0043bba293f5b2b9e7ba06/part"
- }
- }
- }
- }
- node {
- name: "save/StringJoin"
- op: "StringJoin"
- input: "save/Const"
- input: "save/StringJoin/inputs_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "separator"
- value {
- s: ""
- }
- }
- }
- node {
- name: "save/num_shards"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename/shard"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename"
- op: "ShardedFilename"
- input: "save/StringJoin"
- input: "save/ShardedFilename/shard"
- input: "save/num_shards"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/SaveV2/tensor_names"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 11
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 11
- }
- }
- string_val: "Adam/beta_1"
- string_val: "Adam/beta_2"
- string_val: "Adam/decay"
- string_val: "Adam/iterations"
- string_val: "Adam/lr"
- string_val: "batch_norm/beta"
- string_val: "batch_norm/gamma"
- string_val: "batch_norm/moving_mean"
- string_val: "batch_norm/moving_variance"
- string_val: "dense_out/bias"
- string_val: "dense_out/kernel"
- }
- }
- }
- }
- node {
- name: "save/SaveV2/shape_and_slices"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 11
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 11
- }
- }
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/SaveV2"
- op: "SaveV2"
- input: "save/ShardedFilename"
- input: "save/SaveV2/tensor_names"
- input: "save/SaveV2/shape_and_slices"
- input: "Adam/beta_1/Read/ReadVariableOp"
- input: "Adam/beta_2/Read/ReadVariableOp"
- input: "Adam/decay/Read/ReadVariableOp"
- input: "Adam/iterations/Read/ReadVariableOp"
- input: "Adam/lr/Read/ReadVariableOp"
- input: "batch_norm/beta/Read/ReadVariableOp"
- input: "batch_norm/gamma/Read/ReadVariableOp"
- input: "batch_norm/moving_mean/Read/ReadVariableOp"
- input: "batch_norm/moving_variance/Read/ReadVariableOp"
- input: "dense_out/bias/Read/ReadVariableOp"
- input: "dense_out/kernel/Read/ReadVariableOp"
- device: "/device:CPU:0"
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_INT64
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/control_dependency"
- op: "Identity"
- input: "save/ShardedFilename"
- input: "^save/SaveV2"
- device: "/device:CPU:0"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@save/ShardedFilename"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints/checkpoint_prefixes"
- op: "Pack"
- input: "save/ShardedFilename"
- input: "^save/control_dependency"
- device: "/device:CPU:0"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints"
- op: "MergeV2Checkpoints"
- input: "save/MergeV2Checkpoints/checkpoint_prefixes"
- input: "save/Const"
- device: "/device:CPU:0"
- attr {
- key: "delete_old_dirs"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/Identity"
- op: "Identity"
- input: "save/Const"
- input: "^save/MergeV2Checkpoints"
- input: "^save/control_dependency"
- device: "/device:CPU:0"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/tensor_names"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 11
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 11
- }
- }
- string_val: "Adam/beta_1"
- string_val: "Adam/beta_2"
- string_val: "Adam/decay"
- string_val: "Adam/iterations"
- string_val: "Adam/lr"
- string_val: "batch_norm/beta"
- string_val: "batch_norm/gamma"
- string_val: "batch_norm/moving_mean"
- string_val: "batch_norm/moving_variance"
- string_val: "dense_out/bias"
- string_val: "dense_out/kernel"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/shape_and_slices"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 11
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 11
- }
- }
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2/tensor_names"
- input: "save/RestoreV2/shape_and_slices"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_INT64
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Identity_1"
- op: "Identity"
- input: "save/RestoreV2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp"
- op: "AssignVariableOp"
- input: "Adam/beta_1"
- input: "save/Identity_1"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_2"
- op: "Identity"
- input: "save/RestoreV2:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_1"
- op: "AssignVariableOp"
- input: "Adam/beta_2"
- input: "save/Identity_2"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_3"
- op: "Identity"
- input: "save/RestoreV2:2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_2"
- op: "AssignVariableOp"
- input: "Adam/decay"
- input: "save/Identity_3"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_4"
- op: "Identity"
- input: "save/RestoreV2:3"
- attr {
- key: "T"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_3"
- op: "AssignVariableOp"
- input: "Adam/iterations"
- input: "save/Identity_4"
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- }
- node {
- name: "save/Identity_5"
- op: "Identity"
- input: "save/RestoreV2:4"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_4"
- op: "AssignVariableOp"
- input: "Adam/lr"
- input: "save/Identity_5"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_6"
- op: "Identity"
- input: "save/RestoreV2:5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_5"
- op: "AssignVariableOp"
- input: "batch_norm/beta"
- input: "save/Identity_6"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_7"
- op: "Identity"
- input: "save/RestoreV2:6"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_6"
- op: "AssignVariableOp"
- input: "batch_norm/gamma"
- input: "save/Identity_7"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_8"
- op: "Identity"
- input: "save/RestoreV2:7"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_7"
- op: "AssignVariableOp"
- input: "batch_norm/moving_mean"
- input: "save/Identity_8"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_9"
- op: "Identity"
- input: "save/RestoreV2:8"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_8"
- op: "AssignVariableOp"
- input: "batch_norm/moving_variance"
- input: "save/Identity_9"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_10"
- op: "Identity"
- input: "save/RestoreV2:9"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_9"
- op: "AssignVariableOp"
- input: "dense_out/bias"
- input: "save/Identity_10"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_11"
- op: "Identity"
- input: "save/RestoreV2:10"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_10"
- op: "AssignVariableOp"
- input: "dense_out/kernel"
- input: "save/Identity_11"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/restore_shard"
- op: "NoOp"
- input: "^save/AssignVariableOp"
- input: "^save/AssignVariableOp_1"
- input: "^save/AssignVariableOp_10"
- input: "^save/AssignVariableOp_2"
- input: "^save/AssignVariableOp_3"
- input: "^save/AssignVariableOp_4"
- input: "^save/AssignVariableOp_5"
- input: "^save/AssignVariableOp_6"
- input: "^save/AssignVariableOp_7"
- input: "^save/AssignVariableOp_8"
- input: "^save/AssignVariableOp_9"
- }
- node {
- name: "save/restore_all"
- op: "NoOp"
- input: "^save/restore_shard"
- }
- versions {
- producer: 27
- }
- }
- saver_def {
- filename_tensor_name: "save/Const:0"
- save_tensor_name: "save/Identity:0"
- restore_op_name: "save/restore_all"
- max_to_keep: 5
- sharded: true
- keep_checkpoint_every_n_hours: 10000.0
- version: V2
- }
- collection_def {
- key: "cond_context"
- value {
- bytes_list {
- value: "\nSloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/cond_text\022Sloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\032Tloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_t:0 \001*\355\005\nFloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar:0\nTloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch_1:0\nTloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch_1:1\nSloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\nTloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_t:0\022\236\001\nFloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar:0\022Tloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch_1:1\022\252\001\nSloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\022Sloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0"
- value: "\nUloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/cond_text_1\022Sloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\032Tloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_f:0*\270*\nkloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Merge:0\nkloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Merge:1\nlloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch:0\nlloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch:1\nnloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1:0\nnloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1:1\n\217\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:0\n\217\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:1\n\217\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:2\n\210\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch:0\n\212\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch_1:1\n\205\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/dim:0\n\201\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims:0\n\212\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch:0\n\214\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch_1:1\n\207\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/dim:0\n\203\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1:0\n\202\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat/axis:0\n}loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat:0\n\207\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/num_invalid_dims:0\n\206\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Const:0\n\206\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Shape:0\n\200\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like:0\nxloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/x:0\nvloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims:0\nyloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch:0\n{loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch_1:0\nrloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank:0\nmloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\nnloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_f:0\nnloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t:0\nSloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\nTloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_f:0\nHloss/dense_out_loss/broadcast_weights/assert_broadcastable/values/rank:0\nIloss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\nIloss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/rank:0\nJloss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022\326\001\nIloss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\022\210\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch:0\022\310\001\nIloss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/rank:0\022{loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch_1:0\022\252\001\nSloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\022Sloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\022\305\001\nHloss/dense_out_loss/broadcast_weights/assert_broadcastable/values/rank:0\022yloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch:0\022\331\001\nJloss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022\212\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch:02\267#\n\264#\nmloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/cond_text\022mloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\032nloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t:0 \001*\341 \n\217\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:0\n\217\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:1\n\217\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:2\n\210\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch:0\n\212\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch_1:1\n\205\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/dim:0\n\201\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims:0\n\212\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch:0\n\214\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch_1:1\n\207\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/dim:0\n\203\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1:0\n\202\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat/axis:0\n}loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat:0\n\207\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/num_invalid_dims:0\n\206\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Const:0\n\206\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Shape:0\n\200\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like:0\nxloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/x:0\nvloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims:0\nmloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\nnloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t:0\nIloss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\nJloss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022\232\002\n\212\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch:0\022\212\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch:0\022\333\001\nJloss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022\214\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch_1:1\022\330\001\nIloss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\022\212\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch_1:1\022\226\002\n\210\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch:0\022\210\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch:0\022\336\001\nmloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\022mloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:02\321\n\n\316\n\noloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/cond_text_1\022mloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\032nloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_f:0*\373\007\nnloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1:0\nnloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1:1\nrloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank:0\nmloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\nnloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_f:0\022\336\001\nmloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\022mloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\022\344\001\nrloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank:0\022nloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1:0"
- value: "\nPloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/cond_text\022Ploss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\032Qloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t:0 \001*\251\003\n[loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency:0\nPloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\nQloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t:0\022\244\001\nPloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\022Ploss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0"
- value: "\nRloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/cond_text_1\022Ploss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\032Qloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f:0*\367\021\nVloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch:0\nXloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_1:0\nXloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_2:0\nXloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_3:0\nVloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_0:0\nVloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_1:0\nVloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_2:0\nVloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_4:0\nVloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_5:0\nVloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_7:0\n]loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency_1:0\nPloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\nQloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f:0\nFloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar:0\nQloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge:0\nIloss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\nJloss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022\244\001\nPloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\022Ploss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\022\246\001\nJloss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022Xloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_1:0\022\245\001\nIloss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\022Xloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_2:0\022\242\001\nFloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar:0\022Xloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_3:0\022\253\001\nQloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge:0\022Vloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch:0"
- }
- }
- }
- collection_def {
- key: "trainable_variables"
- value {
- bytes_list {
- value: "\n\022batch_norm/gamma:0\022\027batch_norm/gamma/Assign\032&batch_norm/gamma/Read/ReadVariableOp:0(\0012#batch_norm/gamma/Initializer/ones:08\001"
- value: "\n\021batch_norm/beta:0\022\026batch_norm/beta/Assign\032%batch_norm/beta/Read/ReadVariableOp:0(\0012#batch_norm/beta/Initializer/zeros:08\001"
- value: "\n\022dense_out/kernel:0\022\027dense_out/kernel/Assign\032&dense_out/kernel/Read/ReadVariableOp:0(\0012/dense_out/kernel/Initializer/truncated_normal:08\001"
- value: "\n\020dense_out/bias:0\022\025dense_out/bias/Assign\032$dense_out/bias/Read/ReadVariableOp:0(\0012\"dense_out/bias/Initializer/zeros:08\001"
- value: "\n\021Adam/iterations:0\022\026Adam/iterations/Assign\032%Adam/iterations/Read/ReadVariableOp:0(\0012+Adam/iterations/Initializer/initial_value:08\001"
- value: "\n\tAdam/lr:0\022\016Adam/lr/Assign\032\035Adam/lr/Read/ReadVariableOp:0(\0012#Adam/lr/Initializer/initial_value:08\001"
- value: "\n\rAdam/beta_1:0\022\022Adam/beta_1/Assign\032!Adam/beta_1/Read/ReadVariableOp:0(\0012\'Adam/beta_1/Initializer/initial_value:08\001"
- value: "\n\rAdam/beta_2:0\022\022Adam/beta_2/Assign\032!Adam/beta_2/Read/ReadVariableOp:0(\0012\'Adam/beta_2/Initializer/initial_value:08\001"
- value: "\n\014Adam/decay:0\022\021Adam/decay/Assign\032 Adam/decay/Read/ReadVariableOp:0(\0012&Adam/decay/Initializer/initial_value:08\001"
- }
- }
- }
- collection_def {
- key: "variables"
- value {
- bytes_list {
- value: "\n\022batch_norm/gamma:0\022\027batch_norm/gamma/Assign\032&batch_norm/gamma/Read/ReadVariableOp:0(\0012#batch_norm/gamma/Initializer/ones:08\001"
- value: "\n\021batch_norm/beta:0\022\026batch_norm/beta/Assign\032%batch_norm/beta/Read/ReadVariableOp:0(\0012#batch_norm/beta/Initializer/zeros:08\001"
- value: "\n\030batch_norm/moving_mean:0\022\035batch_norm/moving_mean/Assign\032,batch_norm/moving_mean/Read/ReadVariableOp:0(\0012*batch_norm/moving_mean/Initializer/zeros:0"
- value: "\n\034batch_norm/moving_variance:0\022!batch_norm/moving_variance/Assign\0320batch_norm/moving_variance/Read/ReadVariableOp:0(\0012-batch_norm/moving_variance/Initializer/ones:0"
- value: "\n\022dense_out/kernel:0\022\027dense_out/kernel/Assign\032&dense_out/kernel/Read/ReadVariableOp:0(\0012/dense_out/kernel/Initializer/truncated_normal:08\001"
- value: "\n\020dense_out/bias:0\022\025dense_out/bias/Assign\032$dense_out/bias/Read/ReadVariableOp:0(\0012\"dense_out/bias/Initializer/zeros:08\001"
- value: "\n\021Adam/iterations:0\022\026Adam/iterations/Assign\032%Adam/iterations/Read/ReadVariableOp:0(\0012+Adam/iterations/Initializer/initial_value:08\001"
- value: "\n\tAdam/lr:0\022\016Adam/lr/Assign\032\035Adam/lr/Read/ReadVariableOp:0(\0012#Adam/lr/Initializer/initial_value:08\001"
- value: "\n\rAdam/beta_1:0\022\022Adam/beta_1/Assign\032!Adam/beta_1/Read/ReadVariableOp:0(\0012\'Adam/beta_1/Initializer/initial_value:08\001"
- value: "\n\rAdam/beta_2:0\022\022Adam/beta_2/Assign\032!Adam/beta_2/Read/ReadVariableOp:0(\0012\'Adam/beta_2/Initializer/initial_value:08\001"
- value: "\n\014Adam/decay:0\022\021Adam/decay/Assign\032 Adam/decay/Read/ReadVariableOp:0(\0012&Adam/decay/Initializer/initial_value:08\001"
- }
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "input_embedding_product_slug"
- value {
- name: "input_embedding_product_slug:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- inputs {
- key: "input_embedding_user_guid"
- value {
- name: "input_embedding_user_guid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- outputs {
- key: "output"
- value {
- name: "dense_out/Sigmoid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/variables/variables.data-00000-of-00001
deleted file mode 100644
index 9997691bd2c..00000000000
--- a/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/variables/variables.index b/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/variables/variables.index
deleted file mode 100644
index 98e80e982a9..00000000000
--- a/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/optimized/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/optimized/saved_model.pbtxt
deleted file mode 100644
index 4678d78fe68..00000000000
--- a/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/optimized/saved_model.pbtxt
+++ /dev/null
@@ -1,959 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "ExpandDims"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "dim"
- type_attr: "Tdim"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tdim"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Maximum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Placeholder"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- default_value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- op {
- name: "PlaceholderWithDefault"
- input_arg {
- name: "input"
- type_attr: "dtype"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- }
- }
- op {
- name: "Rsqrt"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Sigmoid"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Square"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Sum"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- }
- tags: "serve"
- tensorflow_version: "1.13.1"
- tensorflow_git_version: "b\'v1.13.1-0-g6612da8951\'"
- }
- graph_def {
- node {
- name: "keras_learning_phase/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_BOOL
- tensor_shape {
- }
- bool_val: false
- }
- }
- }
- }
- node {
- name: "keras_learning_phase"
- op: "PlaceholderWithDefault"
- input: "keras_learning_phase/input"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Maximum/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 9.999999960041972e-13
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Sum/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "input_embedding_user_guid"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Square"
- op: "Square"
- input: "input_embedding_user_guid"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Sum"
- op: "Sum"
- input: "dot_0/l2_normalize/Square"
- input: "dot_0/l2_normalize/Sum/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Maximum"
- op: "Maximum"
- input: "dot_0/l2_normalize/Sum"
- input: "dot_0/l2_normalize/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Rsqrt"
- op: "Rsqrt"
- input: "dot_0/l2_normalize/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize"
- op: "Mul"
- input: "input_embedding_user_guid"
- input: "dot_0/l2_normalize/Rsqrt"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "input_embedding_product_slug"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Square"
- op: "Square"
- input: "input_embedding_product_slug"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Sum"
- op: "Sum"
- input: "dot_0/l2_normalize_1/Square"
- input: "dot_0/l2_normalize/Sum/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Maximum"
- op: "Maximum"
- input: "dot_0/l2_normalize_1/Sum"
- input: "dot_0/l2_normalize/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Rsqrt"
- op: "Rsqrt"
- input: "dot_0/l2_normalize_1/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1"
- op: "Mul"
- input: "input_embedding_product_slug"
- input: "dot_0/l2_normalize_1/Rsqrt"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/Mul"
- op: "Mul"
- input: "dot_0/l2_normalize"
- input: "dot_0/l2_normalize_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/Sum"
- op: "Sum"
- input: "dot_0/Mul"
- input: "dot_0/l2_normalize/Sum/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "dot_0/ExpandDims"
- op: "ExpandDims"
- input: "dot_0/Sum"
- input: "dot_0/l2_normalize/Sum/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "sigmoid_out/Sigmoid"
- op: "Sigmoid"
- input: "dot_0/ExpandDims"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- versions {
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "input_embedding_product_slug"
- value {
- name: "input_embedding_product_slug:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- inputs {
- key: "input_embedding_user_guid"
- value {
- name: "input_embedding_user_guid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- outputs {
- key: "output"
- value {
- name: "sigmoid_out/Sigmoid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/saved_model.pbtxt
deleted file mode 100644
index cad3db9d898..00000000000
--- a/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/saved_model.pbtxt
+++ /dev/null
@@ -1,8622 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Abs"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Add"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "Assert"
- input_arg {
- name: "condition"
- type: DT_BOOL
- }
- input_arg {
- name: "data"
- type_list_attr: "T"
- }
- attr {
- name: "T"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "summarize"
- type: "int"
- default_value {
- i: 3
- }
- }
- is_stateful: true
- }
- op {
- name: "AssignAddVariableOp"
- input_arg {
- name: "resource"
- type: DT_RESOURCE
- }
- input_arg {
- name: "value"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- is_stateful: true
- }
- op {
- name: "AssignVariableOp"
- input_arg {
- name: "resource"
- type: DT_RESOURCE
- }
- input_arg {
- name: "value"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- is_stateful: true
- }
- op {
- name: "Cast"
- input_arg {
- name: "x"
- type_attr: "SrcT"
- }
- output_arg {
- name: "y"
- type_attr: "DstT"
- }
- attr {
- name: "SrcT"
- type: "type"
- }
- attr {
- name: "DstT"
- type: "type"
- }
- attr {
- name: "Truncate"
- type: "bool"
- default_value {
- b: false
- }
- }
- }
- op {
- name: "ConcatV2"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- input_arg {
- name: "axis"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 2
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "DenseToDenseSetOperation"
- input_arg {
- name: "set1"
- type_attr: "T"
- }
- input_arg {
- name: "set2"
- type_attr: "T"
- }
- output_arg {
- name: "result_indices"
- type: DT_INT64
- }
- output_arg {
- name: "result_values"
- type_attr: "T"
- }
- output_arg {
- name: "result_shape"
- type: DT_INT64
- }
- attr {
- name: "set_operation"
- type: "string"
- }
- attr {
- name: "validate_indices"
- type: "bool"
- default_value {
- b: true
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_UINT8
- type: DT_UINT16
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "DivNoNan"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "Equal"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_QUINT8
- type: DT_QINT8
- type: DT_QINT32
- type: DT_STRING
- type: DT_BOOL
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Exp"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "ExpandDims"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "dim"
- type_attr: "Tdim"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tdim"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Fill"
- input_arg {
- name: "dims"
- type_attr: "index_type"
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "index_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Greater"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_INT64
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- }
- op {
- name: "GreaterEqual"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_INT64
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- }
- op {
- name: "Identity"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "Log"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Log1p"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Maximum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mean"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Merge"
- input_arg {
- name: "inputs"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- output_arg {
- name: "value_index"
- type: DT_INT32
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- }
- op {
- name: "MergeV2Checkpoints"
- input_arg {
- name: "checkpoint_prefixes"
- type: DT_STRING
- }
- input_arg {
- name: "destination_prefix"
- type: DT_STRING
- }
- attr {
- name: "delete_old_dirs"
- type: "bool"
- default_value {
- b: true
- }
- }
- is_stateful: true
- }
- op {
- name: "Minimum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Neg"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "NoOp"
- }
- op {
- name: "Pack"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "axis"
- type: "int"
- default_value {
- i: 0
- }
- }
- }
- op {
- name: "Placeholder"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- default_value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- op {
- name: "PlaceholderWithDefault"
- input_arg {
- name: "input"
- type_attr: "dtype"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- }
- }
- op {
- name: "ReadVariableOp"
- input_arg {
- name: "resource"
- type: DT_RESOURCE
- }
- output_arg {
- name: "value"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- is_stateful: true
- }
- op {
- name: "RealDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "RestoreV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- output_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "Rsqrt"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "SaveV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- input_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "Select"
- input_arg {
- name: "condition"
- type: DT_BOOL
- }
- input_arg {
- name: "t"
- type_attr: "T"
- }
- input_arg {
- name: "e"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "Shape"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "out_type"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "out_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "ShardedFilename"
- input_arg {
- name: "basename"
- type: DT_STRING
- }
- input_arg {
- name: "shard"
- type: DT_INT32
- }
- input_arg {
- name: "num_shards"
- type: DT_INT32
- }
- output_arg {
- name: "filename"
- type: DT_STRING
- }
- }
- op {
- name: "Sigmoid"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Size"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "out_type"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "out_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Square"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "StringJoin"
- input_arg {
- name: "inputs"
- type: DT_STRING
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type: DT_STRING
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "separator"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Sub"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Sum"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Switch"
- input_arg {
- name: "data"
- type_attr: "T"
- }
- input_arg {
- name: "pred"
- type: DT_BOOL
- }
- output_arg {
- name: "output_false"
- type_attr: "T"
- }
- output_arg {
- name: "output_true"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "VarHandleOp"
- output_arg {
- name: "resource"
- type: DT_RESOURCE
- }
- attr {
- name: "container"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "shared_name"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- }
- is_stateful: true
- }
- op {
- name: "VarIsInitializedOp"
- input_arg {
- name: "resource"
- type: DT_RESOURCE
- }
- output_arg {
- name: "is_initialized"
- type: DT_BOOL
- }
- is_stateful: true
- }
- op {
- name: "ZerosLike"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- }
- tags: "serve"
- tensorflow_version: "1.13.1"
- tensorflow_git_version: "b\'v1.13.1-0-g6612da8951\'"
- }
- graph_def {
- node {
- name: "keras_learning_phase/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_BOOL
- tensor_shape {
- }
- bool_val: false
- }
- }
- }
- }
- node {
- name: "keras_learning_phase"
- op: "PlaceholderWithDefault"
- input: "keras_learning_phase/input"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "input_embedding_user_guid"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- node {
- name: "input_embedding_product_slug"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Square"
- op: "Square"
- input: "input_embedding_user_guid"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Sum/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Sum"
- op: "Sum"
- input: "dot_0/l2_normalize/Square"
- input: "dot_0/l2_normalize/Sum/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Maximum/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 9.999999960041972e-13
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Maximum"
- op: "Maximum"
- input: "dot_0/l2_normalize/Sum"
- input: "dot_0/l2_normalize/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Rsqrt"
- op: "Rsqrt"
- input: "dot_0/l2_normalize/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize"
- op: "Mul"
- input: "input_embedding_user_guid"
- input: "dot_0/l2_normalize/Rsqrt"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Square"
- op: "Square"
- input: "input_embedding_product_slug"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Sum/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Sum"
- op: "Sum"
- input: "dot_0/l2_normalize_1/Square"
- input: "dot_0/l2_normalize_1/Sum/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Maximum/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 9.999999960041972e-13
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Maximum"
- op: "Maximum"
- input: "dot_0/l2_normalize_1/Sum"
- input: "dot_0/l2_normalize_1/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Rsqrt"
- op: "Rsqrt"
- input: "dot_0/l2_normalize_1/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1"
- op: "Mul"
- input: "input_embedding_product_slug"
- input: "dot_0/l2_normalize_1/Rsqrt"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/Mul"
- op: "Mul"
- input: "dot_0/l2_normalize"
- input: "dot_0/l2_normalize_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/Sum/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dot_0/Sum"
- op: "Sum"
- input: "dot_0/Mul"
- input: "dot_0/Sum/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "dot_0/ExpandDims/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dot_0/ExpandDims"
- op: "ExpandDims"
- input: "dot_0/Sum"
- input: "dot_0/ExpandDims/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "sigmoid_out/Sigmoid"
- op: "Sigmoid"
- input: "dot_0/ExpandDims"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "Adam/iterations/Initializer/initial_value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/iterations"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT64
- tensor_shape {
- }
- int64_val: 0
- }
- }
- }
- }
- node {
- name: "Adam/iterations"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/iterations"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "Adam/iterations"
- }
- }
- }
- node {
- name: "Adam/iterations/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/iterations"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Adam/iterations/Assign"
- op: "AssignVariableOp"
- input: "Adam/iterations"
- input: "Adam/iterations/Initializer/initial_value"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/iterations"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- }
- node {
- name: "Adam/iterations/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "Adam/iterations"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/iterations"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- }
- node {
- name: "Adam/lr/Initializer/initial_value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/lr"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0010000000474974513
- }
- }
- }
- }
- node {
- name: "Adam/lr"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/lr"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "Adam/lr"
- }
- }
- }
- node {
- name: "Adam/lr/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/lr"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Adam/lr/Assign"
- op: "AssignVariableOp"
- input: "Adam/lr"
- input: "Adam/lr/Initializer/initial_value"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/lr"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/lr/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "Adam/lr"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/lr"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/beta_1/Initializer/initial_value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.8999999761581421
- }
- }
- }
- }
- node {
- name: "Adam/beta_1"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "Adam/beta_1"
- }
- }
- }
- node {
- name: "Adam/beta_1/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/beta_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Adam/beta_1/Assign"
- op: "AssignVariableOp"
- input: "Adam/beta_1"
- input: "Adam/beta_1/Initializer/initial_value"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_1"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/beta_1/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "Adam/beta_1"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/beta_2/Initializer/initial_value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.9990000128746033
- }
- }
- }
- }
- node {
- name: "Adam/beta_2"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "Adam/beta_2"
- }
- }
- }
- node {
- name: "Adam/beta_2/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/beta_2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Adam/beta_2/Assign"
- op: "AssignVariableOp"
- input: "Adam/beta_2"
- input: "Adam/beta_2/Initializer/initial_value"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_2"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/beta_2/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "Adam/beta_2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/decay/Initializer/initial_value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/decay"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "Adam/decay"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/decay"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "Adam/decay"
- }
- }
- }
- node {
- name: "Adam/decay/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/decay"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Adam/decay/Assign"
- op: "AssignVariableOp"
- input: "Adam/decay"
- input: "Adam/decay/Initializer/initial_value"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/decay"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/decay/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "Adam/decay"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/decay"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "sigmoid_out_target"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- node {
- name: "Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "sigmoid_out_sample_weights"
- op: "PlaceholderWithDefault"
- input: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- node {
- name: "total/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "total"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "total"
- }
- }
- }
- node {
- name: "total/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "total"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "total/Assign"
- op: "AssignVariableOp"
- input: "total"
- input: "total/Initializer/zeros"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "total/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "count/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "count"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "count"
- }
- }
- }
- node {
- name: "count/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "count"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "count/Assign"
- op: "AssignVariableOp"
- input: "count"
- input: "count/Initializer/zeros"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "count/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "count"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "total_1/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "total_1"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "total_1"
- }
- }
- }
- node {
- name: "total_1/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "total_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "total_1/Assign"
- op: "AssignVariableOp"
- input: "total_1"
- input: "total_1/Initializer/zeros"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total_1"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "total_1/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total_1"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "count_1/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "count_1"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "count_1"
- }
- }
- }
- node {
- name: "count_1/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "count_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "count_1/Assign"
- op: "AssignVariableOp"
- input: "count_1"
- input: "count_1/Initializer/zeros"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count_1"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "count_1/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "count_1"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0000000116860974e-07
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/sub/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/sub"
- op: "Sub"
- input: "loss/sigmoid_out_loss/sub/x"
- input: "loss/sigmoid_out_loss/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/clip_by_value/Minimum"
- op: "Minimum"
- input: "sigmoid_out/Sigmoid"
- input: "loss/sigmoid_out_loss/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/clip_by_value"
- op: "Maximum"
- input: "loss/sigmoid_out_loss/clip_by_value/Minimum"
- input: "loss/sigmoid_out_loss/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/sub_1/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/sub_1"
- op: "Sub"
- input: "loss/sigmoid_out_loss/sub_1/x"
- input: "loss/sigmoid_out_loss/clip_by_value"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/truediv"
- op: "RealDiv"
- input: "loss/sigmoid_out_loss/clip_by_value"
- input: "loss/sigmoid_out_loss/sub_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/Log"
- op: "Log"
- input: "loss/sigmoid_out_loss/truediv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/logistic_loss/zeros_like"
- op: "ZerosLike"
- input: "loss/sigmoid_out_loss/Log"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/logistic_loss/GreaterEqual"
- op: "GreaterEqual"
- input: "loss/sigmoid_out_loss/Log"
- input: "loss/sigmoid_out_loss/logistic_loss/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/logistic_loss/Select"
- op: "Select"
- input: "loss/sigmoid_out_loss/logistic_loss/GreaterEqual"
- input: "loss/sigmoid_out_loss/Log"
- input: "loss/sigmoid_out_loss/logistic_loss/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/logistic_loss/Neg"
- op: "Neg"
- input: "loss/sigmoid_out_loss/Log"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/logistic_loss/Select_1"
- op: "Select"
- input: "loss/sigmoid_out_loss/logistic_loss/GreaterEqual"
- input: "loss/sigmoid_out_loss/logistic_loss/Neg"
- input: "loss/sigmoid_out_loss/Log"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/logistic_loss/mul"
- op: "Mul"
- input: "loss/sigmoid_out_loss/Log"
- input: "sigmoid_out_target"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/logistic_loss/sub"
- op: "Sub"
- input: "loss/sigmoid_out_loss/logistic_loss/Select"
- input: "loss/sigmoid_out_loss/logistic_loss/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/logistic_loss/Exp"
- op: "Exp"
- input: "loss/sigmoid_out_loss/logistic_loss/Select_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/logistic_loss/Log1p"
- op: "Log1p"
- input: "loss/sigmoid_out_loss/logistic_loss/Exp"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/logistic_loss"
- op: "Add"
- input: "loss/sigmoid_out_loss/logistic_loss/sub"
- input: "loss/sigmoid_out_loss/logistic_loss/Log1p"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/Mean/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/Mean"
- op: "Mean"
- input: "loss/sigmoid_out_loss/logistic_loss"
- input: "loss/sigmoid_out_loss/Mean/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- op: "Shape"
- input: "sigmoid_out_sample_weights"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/rank"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- op: "Shape"
- input: "loss/sigmoid_out_loss/Mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/rank"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- op: "Equal"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar/x"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/rank"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_t"
- op: "Identity"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch:1"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_f"
- op: "Identity"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- op: "Identity"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch_1"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- op: "Equal"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/rank"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/rank"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch_1"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/rank"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/rank"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- op: "Identity"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch:1"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_f"
- op: "Identity"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id"
- op: "Identity"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/dim"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims"
- op: "ExpandDims"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch_1:1"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/dim"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch_1"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Shape"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\001\000\000\000"
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Const"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like"
- op: "Fill"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Shape"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "index_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat/axis"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat"
- op: "ConcatV2"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat/axis"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/dim"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1"
- op: "ExpandDims"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch_1:1"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/dim"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch_1"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation"
- op: "DenseToDenseSetOperation"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 2
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "set_operation"
- value {
- s: "a-b"
- }
- }
- attr {
- key: "validate_indices"
- value {
- b: true
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/num_invalid_dims"
- op: "Size"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/x"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims"
- op: "Equal"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/x"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/num_invalid_dims"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Merge"
- op: "Merge"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- op: "Merge"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Merge"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch_1:1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "weights can not be broadcast to values."
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "weights.shape="
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/Const_2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "sigmoid_out_sample_weights:0"
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/Const_3"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "values.shape="
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/Const_4"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "loss/sigmoid_out_loss/Mean:0"
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/Const_5"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "is_scalar="
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Switch"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t"
- op: "Identity"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Switch:1"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- op: "Identity"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Switch"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id"
- op: "Identity"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/NoOp"
- op: "NoOp"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t"
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency"
- op: "Identity"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/NoOp"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_0"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "weights can not be broadcast to values."
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_1"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "weights.shape="
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_2"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "sigmoid_out_sample_weights:0"
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_4"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "values.shape="
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_5"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "loss/sigmoid_out_loss/Mean:0"
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_7"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "is_scalar="
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert"
- op: "Assert"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_0"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_1"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_2"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_1"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_4"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_5"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_2"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_7"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_3"
- attr {
- key: "T"
- value {
- list {
- type: DT_STRING
- type: DT_STRING
- type: DT_STRING
- type: DT_INT32
- type: DT_STRING
- type: DT_STRING
- type: DT_INT32
- type: DT_STRING
- type: DT_BOOL
- }
- }
- }
- attr {
- key: "summarize"
- value {
- i: 3
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_1"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_2"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_3"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency_1"
- op: "Identity"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Merge"
- op: "Merge"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency_1"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/ones_like/Shape"
- op: "Shape"
- input: "loss/sigmoid_out_loss/Mean"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Merge"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/ones_like/Const"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Merge"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/ones_like"
- op: "Fill"
- input: "loss/sigmoid_out_loss/broadcast_weights/ones_like/Shape"
- input: "loss/sigmoid_out_loss/broadcast_weights/ones_like/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "index_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights"
- op: "Mul"
- input: "sigmoid_out_sample_weights"
- input: "loss/sigmoid_out_loss/broadcast_weights/ones_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/Mul"
- op: "Mul"
- input: "loss/sigmoid_out_loss/Mean"
- input: "loss/sigmoid_out_loss/broadcast_weights"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/Sum"
- op: "Sum"
- input: "loss/sigmoid_out_loss/Mul"
- input: "loss/sigmoid_out_loss/Const_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/Const_2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/Sum_1"
- op: "Sum"
- input: "loss/sigmoid_out_loss/broadcast_weights"
- input: "loss/sigmoid_out_loss/Const_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/div_no_nan"
- op: "DivNoNan"
- input: "loss/sigmoid_out_loss/Sum"
- input: "loss/sigmoid_out_loss/Sum_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/Const_3"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/Mean_1"
- op: "Mean"
- input: "loss/sigmoid_out_loss/div_no_nan"
- input: "loss/sigmoid_out_loss/Const_3"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "loss/mul/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "loss/mul"
- op: "Mul"
- input: "loss/mul/x"
- input: "loss/sigmoid_out_loss/Mean_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.5
- }
- }
- }
- }
- node {
- name: "metrics/acc/Greater"
- op: "Greater"
- input: "sigmoid_out/Sigmoid"
- input: "metrics/acc/Cast/x"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast_1"
- op: "Cast"
- input: "metrics/acc/Greater"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Equal"
- op: "Equal"
- input: "sigmoid_out_target"
- input: "metrics/acc/Cast_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast_2"
- op: "Cast"
- input: "metrics/acc/Equal"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Mean/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "metrics/acc/Mean"
- op: "Mean"
- input: "metrics/acc/Cast_2"
- input: "metrics/acc/Mean/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/acc/Size"
- op: "Size"
- input: "metrics/acc/Mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "metrics/acc/Cast_3"
- op: "Cast"
- input: "metrics/acc/Size"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "metrics/acc/Sum"
- op: "Sum"
- input: "metrics/acc/Mean"
- input: "metrics/acc/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/acc/AssignAddVariableOp"
- op: "AssignAddVariableOp"
- input: "total"
- input: "metrics/acc/Sum"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total"
- input: "^metrics/acc/AssignAddVariableOp"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/AssignAddVariableOp_1"
- op: "AssignAddVariableOp"
- input: "count"
- input: "metrics/acc/Cast_3"
- input: "^metrics/acc/ReadVariableOp"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/ReadVariableOp_1"
- op: "ReadVariableOp"
- input: "count"
- input: "^metrics/acc/AssignAddVariableOp_1"
- input: "^metrics/acc/ReadVariableOp"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/div_no_nan/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total"
- input: "^metrics/acc/ReadVariableOp_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/div_no_nan/ReadVariableOp_1"
- op: "ReadVariableOp"
- input: "count"
- input: "^metrics/acc/ReadVariableOp_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/div_no_nan"
- op: "DivNoNan"
- input: "metrics/acc/div_no_nan/ReadVariableOp"
- input: "metrics/acc/div_no_nan/ReadVariableOp_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast_4/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.5
- }
- }
- }
- }
- node {
- name: "metrics/acc/Greater_1"
- op: "Greater"
- input: "sigmoid_out/Sigmoid"
- input: "metrics/acc/Cast_4/x"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast_5"
- op: "Cast"
- input: "metrics/acc/Greater_1"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Equal_1"
- op: "Equal"
- input: "sigmoid_out_target"
- input: "metrics/acc/Cast_5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast_6"
- op: "Cast"
- input: "metrics/acc/Equal_1"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Mean_1/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "metrics/acc/Mean_1"
- op: "Mean"
- input: "metrics/acc/Cast_6"
- input: "metrics/acc/Mean_1/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/acc/Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "metrics/acc/Mean_2"
- op: "Mean"
- input: "metrics/acc/Mean_1"
- input: "metrics/acc/Const_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/sub"
- op: "Sub"
- input: "sigmoid_out/Sigmoid"
- input: "sigmoid_out_target"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Abs"
- op: "Abs"
- input: "metrics/mean_absolute_error/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Mean/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Mean"
- op: "Mean"
- input: "metrics/mean_absolute_error/Abs"
- input: "metrics/mean_absolute_error/Mean/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Size"
- op: "Size"
- input: "metrics/mean_absolute_error/Mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Cast"
- op: "Cast"
- input: "metrics/mean_absolute_error/Size"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Sum"
- op: "Sum"
- input: "metrics/mean_absolute_error/Mean"
- input: "metrics/mean_absolute_error/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/AssignAddVariableOp"
- op: "AssignAddVariableOp"
- input: "total_1"
- input: "metrics/mean_absolute_error/Sum"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total_1"
- input: "^metrics/mean_absolute_error/AssignAddVariableOp"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/AssignAddVariableOp_1"
- op: "AssignAddVariableOp"
- input: "count_1"
- input: "metrics/mean_absolute_error/Cast"
- input: "^metrics/mean_absolute_error/ReadVariableOp"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/ReadVariableOp_1"
- op: "ReadVariableOp"
- input: "count_1"
- input: "^metrics/mean_absolute_error/AssignAddVariableOp_1"
- input: "^metrics/mean_absolute_error/ReadVariableOp"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/div_no_nan/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total_1"
- input: "^metrics/mean_absolute_error/ReadVariableOp_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/div_no_nan/ReadVariableOp_1"
- op: "ReadVariableOp"
- input: "count_1"
- input: "^metrics/mean_absolute_error/ReadVariableOp_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/div_no_nan"
- op: "DivNoNan"
- input: "metrics/mean_absolute_error/div_no_nan/ReadVariableOp"
- input: "metrics/mean_absolute_error/div_no_nan/ReadVariableOp_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/sub_1"
- op: "Sub"
- input: "sigmoid_out/Sigmoid"
- input: "sigmoid_out_target"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Abs_1"
- op: "Abs"
- input: "metrics/mean_absolute_error/sub_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Mean_1/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Mean_1"
- op: "Mean"
- input: "metrics/mean_absolute_error/Abs_1"
- input: "metrics/mean_absolute_error/Mean_1/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Mean_2"
- op: "Mean"
- input: "metrics/mean_absolute_error/Mean_1"
- input: "metrics/mean_absolute_error/Const_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/beta_2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_1"
- op: "VarIsInitializedOp"
- input: "count_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_2"
- op: "VarIsInitializedOp"
- input: "Adam/decay"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_3"
- op: "VarIsInitializedOp"
- input: "total"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_4"
- op: "VarIsInitializedOp"
- input: "Adam/lr"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_5"
- op: "VarIsInitializedOp"
- input: "total_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_6"
- op: "VarIsInitializedOp"
- input: "count"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_7"
- op: "VarIsInitializedOp"
- input: "Adam/iterations"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_8"
- op: "VarIsInitializedOp"
- input: "Adam/beta_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "init"
- op: "NoOp"
- input: "^Adam/beta_1/Assign"
- input: "^Adam/beta_2/Assign"
- input: "^Adam/decay/Assign"
- input: "^Adam/iterations/Assign"
- input: "^Adam/lr/Assign"
- input: "^count/Assign"
- input: "^count_1/Assign"
- input: "^total/Assign"
- input: "^total_1/Assign"
- }
- node {
- name: "init_1"
- op: "NoOp"
- input: "^Adam/beta_1/Assign"
- input: "^Adam/beta_2/Assign"
- input: "^Adam/decay/Assign"
- input: "^Adam/iterations/Assign"
- input: "^Adam/lr/Assign"
- }
- node {
- name: "init_2"
- op: "NoOp"
- }
- node {
- name: "group_deps"
- op: "NoOp"
- input: "^init_1"
- input: "^init_2"
- }
- node {
- name: "save/filename/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "model"
- }
- }
- }
- }
- node {
- name: "save/filename"
- op: "PlaceholderWithDefault"
- input: "save/filename/input"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "save/Const"
- op: "PlaceholderWithDefault"
- input: "save/filename"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "save/StringJoin/inputs_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "_temp_f9ee0bde57514bd8b273ce01b6ff32fd/part"
- }
- }
- }
- }
- node {
- name: "save/StringJoin"
- op: "StringJoin"
- input: "save/Const"
- input: "save/StringJoin/inputs_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "separator"
- value {
- s: ""
- }
- }
- }
- node {
- name: "save/num_shards"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename/shard"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename"
- op: "ShardedFilename"
- input: "save/StringJoin"
- input: "save/ShardedFilename/shard"
- input: "save/num_shards"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/SaveV2/tensor_names"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 5
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 5
- }
- }
- string_val: "Adam/beta_1"
- string_val: "Adam/beta_2"
- string_val: "Adam/decay"
- string_val: "Adam/iterations"
- string_val: "Adam/lr"
- }
- }
- }
- }
- node {
- name: "save/SaveV2/shape_and_slices"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 5
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 5
- }
- }
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/SaveV2"
- op: "SaveV2"
- input: "save/ShardedFilename"
- input: "save/SaveV2/tensor_names"
- input: "save/SaveV2/shape_and_slices"
- input: "Adam/beta_1/Read/ReadVariableOp"
- input: "Adam/beta_2/Read/ReadVariableOp"
- input: "Adam/decay/Read/ReadVariableOp"
- input: "Adam/iterations/Read/ReadVariableOp"
- input: "Adam/lr/Read/ReadVariableOp"
- device: "/device:CPU:0"
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_INT64
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/control_dependency"
- op: "Identity"
- input: "save/ShardedFilename"
- input: "^save/SaveV2"
- device: "/device:CPU:0"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@save/ShardedFilename"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints/checkpoint_prefixes"
- op: "Pack"
- input: "save/ShardedFilename"
- input: "^save/control_dependency"
- device: "/device:CPU:0"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints"
- op: "MergeV2Checkpoints"
- input: "save/MergeV2Checkpoints/checkpoint_prefixes"
- input: "save/Const"
- device: "/device:CPU:0"
- attr {
- key: "delete_old_dirs"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/Identity"
- op: "Identity"
- input: "save/Const"
- input: "^save/MergeV2Checkpoints"
- input: "^save/control_dependency"
- device: "/device:CPU:0"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/tensor_names"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 5
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 5
- }
- }
- string_val: "Adam/beta_1"
- string_val: "Adam/beta_2"
- string_val: "Adam/decay"
- string_val: "Adam/iterations"
- string_val: "Adam/lr"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/shape_and_slices"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 5
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 5
- }
- }
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2/tensor_names"
- input: "save/RestoreV2/shape_and_slices"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_INT64
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Identity_1"
- op: "Identity"
- input: "save/RestoreV2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp"
- op: "AssignVariableOp"
- input: "Adam/beta_1"
- input: "save/Identity_1"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_2"
- op: "Identity"
- input: "save/RestoreV2:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_1"
- op: "AssignVariableOp"
- input: "Adam/beta_2"
- input: "save/Identity_2"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_3"
- op: "Identity"
- input: "save/RestoreV2:2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_2"
- op: "AssignVariableOp"
- input: "Adam/decay"
- input: "save/Identity_3"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_4"
- op: "Identity"
- input: "save/RestoreV2:3"
- attr {
- key: "T"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_3"
- op: "AssignVariableOp"
- input: "Adam/iterations"
- input: "save/Identity_4"
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- }
- node {
- name: "save/Identity_5"
- op: "Identity"
- input: "save/RestoreV2:4"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_4"
- op: "AssignVariableOp"
- input: "Adam/lr"
- input: "save/Identity_5"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/restore_shard"
- op: "NoOp"
- input: "^save/AssignVariableOp"
- input: "^save/AssignVariableOp_1"
- input: "^save/AssignVariableOp_2"
- input: "^save/AssignVariableOp_3"
- input: "^save/AssignVariableOp_4"
- }
- node {
- name: "save/restore_all"
- op: "NoOp"
- input: "^save/restore_shard"
- }
- versions {
- producer: 27
- }
- }
- saver_def {
- filename_tensor_name: "save/Const:0"
- save_tensor_name: "save/Identity:0"
- restore_op_name: "save/restore_all"
- max_to_keep: 5
- sharded: true
- keep_checkpoint_every_n_hours: 10000.0
- version: V2
- }
- collection_def {
- key: "cond_context"
- value {
- bytes_list {
- value: "\nUloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/cond_text\022Uloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\032Vloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_t:0 \001*\377\005\nHloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar:0\nVloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch_1:0\nVloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch_1:1\nUloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\nVloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_t:0\022\242\001\nHloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar:0\022Vloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch_1:1\022\256\001\nUloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\022Uloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0"
- value: "\nWloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/cond_text_1\022Uloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\032Vloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_f:0*\226+\nmloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Merge:0\nmloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Merge:1\nnloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch:0\nnloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch:1\nploss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1:0\nploss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1:1\n\221\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:0\n\221\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:1\n\221\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:2\n\212\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch:0\n\214\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch_1:1\n\207\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/dim:0\n\203\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims:0\n\214\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch:0\n\216\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch_1:1\n\211\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/dim:0\n\205\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1:0\n\204\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat/axis:0\n\177loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat:0\n\211\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/num_invalid_dims:0\n\210\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Const:0\n\210\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Shape:0\n\202\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like:0\nzloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/x:0\nxloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims:0\n{loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch:0\n}loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch_1:0\ntloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank:0\noloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\nploss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_f:0\nploss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t:0\nUloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\nVloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_f:0\nJloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/rank:0\nKloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\nKloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/rank:0\nLloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022\256\001\nUloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\022Uloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\022\332\001\nKloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\022\212\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch:0\022\314\001\nKloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/rank:0\022}loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch_1:0\022\335\001\nLloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022\214\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch:0\022\311\001\nJloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/rank:0\022{loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch:02\377#\n\374#\noloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/cond_text\022oloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\032ploss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t:0 \001*\243!\n\221\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:0\n\221\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:1\n\221\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:2\n\212\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch:0\n\214\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch_1:1\n\207\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/dim:0\n\203\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims:0\n\214\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch:0\n\216\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch_1:1\n\211\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/dim:0\n\205\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1:0\n\204\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat/axis:0\n\177loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat:0\n\211\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/num_invalid_dims:0\n\210\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Const:0\n\210\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Shape:0\n\202\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like:0\nzloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/x:0\nxloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims:0\noloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\nploss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t:0\nKloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\nLloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022\232\002\n\212\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch:0\022\212\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch:0\022\334\001\nKloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\022\214\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch_1:1\022\342\001\noloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\022oloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\022\236\002\n\214\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch:0\022\214\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch:0\022\337\001\nLloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022\216\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch_1:12\351\n\n\346\n\nqloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/cond_text_1\022oloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\032ploss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_f:0*\215\010\nploss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1:0\nploss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1:1\ntloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank:0\noloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\nploss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_f:0\022\350\001\ntloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank:0\022ploss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1:0\022\342\001\noloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\022oloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0"
- value: "\nRloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/cond_text\022Rloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\032Sloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t:0 \001*\263\003\n]loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency:0\nRloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\nSloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t:0\022\250\001\nRloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\022Rloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0"
- value: "\nTloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/cond_text_1\022Rloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\032Sloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f:0*\255\022\nXloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch:0\nZloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_1:0\nZloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_2:0\nZloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_3:0\nXloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_0:0\nXloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_1:0\nXloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_2:0\nXloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_4:0\nXloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_5:0\nXloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_7:0\n_loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency_1:0\nRloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\nSloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f:0\nHloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar:0\nSloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge:0\nKloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\nLloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022\246\001\nHloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar:0\022Zloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_3:0\022\251\001\nKloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\022Zloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_2:0\022\257\001\nSloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge:0\022Xloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch:0\022\250\001\nRloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\022Rloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\022\252\001\nLloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022Zloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_1:0"
- }
- }
- }
- collection_def {
- key: "trainable_variables"
- value {
- bytes_list {
- value: "\n\021Adam/iterations:0\022\026Adam/iterations/Assign\032%Adam/iterations/Read/ReadVariableOp:0(\0012+Adam/iterations/Initializer/initial_value:08\001"
- value: "\n\tAdam/lr:0\022\016Adam/lr/Assign\032\035Adam/lr/Read/ReadVariableOp:0(\0012#Adam/lr/Initializer/initial_value:08\001"
- value: "\n\rAdam/beta_1:0\022\022Adam/beta_1/Assign\032!Adam/beta_1/Read/ReadVariableOp:0(\0012\'Adam/beta_1/Initializer/initial_value:08\001"
- value: "\n\rAdam/beta_2:0\022\022Adam/beta_2/Assign\032!Adam/beta_2/Read/ReadVariableOp:0(\0012\'Adam/beta_2/Initializer/initial_value:08\001"
- value: "\n\014Adam/decay:0\022\021Adam/decay/Assign\032 Adam/decay/Read/ReadVariableOp:0(\0012&Adam/decay/Initializer/initial_value:08\001"
- }
- }
- }
- collection_def {
- key: "variables"
- value {
- bytes_list {
- value: "\n\021Adam/iterations:0\022\026Adam/iterations/Assign\032%Adam/iterations/Read/ReadVariableOp:0(\0012+Adam/iterations/Initializer/initial_value:08\001"
- value: "\n\tAdam/lr:0\022\016Adam/lr/Assign\032\035Adam/lr/Read/ReadVariableOp:0(\0012#Adam/lr/Initializer/initial_value:08\001"
- value: "\n\rAdam/beta_1:0\022\022Adam/beta_1/Assign\032!Adam/beta_1/Read/ReadVariableOp:0(\0012\'Adam/beta_1/Initializer/initial_value:08\001"
- value: "\n\rAdam/beta_2:0\022\022Adam/beta_2/Assign\032!Adam/beta_2/Read/ReadVariableOp:0(\0012\'Adam/beta_2/Initializer/initial_value:08\001"
- value: "\n\014Adam/decay:0\022\021Adam/decay/Assign\032 Adam/decay/Read/ReadVariableOp:0(\0012&Adam/decay/Initializer/initial_value:08\001"
- }
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "input_embedding_product_slug"
- value {
- name: "input_embedding_user_guid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- inputs {
- key: "input_embedding_user_guid"
- value {
- name: "input_embedding_product_slug:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- outputs {
- key: "output"
- value {
- name: "sigmoid_out/Sigmoid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/variables/variables.data-00000-of-00001
deleted file mode 100644
index 8339979323b..00000000000
--- a/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/variables/variables.index b/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/variables/variables.index
deleted file mode 100644
index cf999e88e22..00000000000
--- a/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/external/modelv1/saved_model.pb b/model-integration/src/test/models/tensorflow/external/modelv1/saved_model.pb
deleted file mode 100644
index 223ad4baf59..00000000000
--- a/model-integration/src/test/models/tensorflow/external/modelv1/saved_model.pb
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/external/modelv1/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/external/modelv1/variables/variables.data-00000-of-00001
deleted file mode 100644
index 76e3a429612..00000000000
--- a/model-integration/src/test/models/tensorflow/external/modelv1/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/external/modelv1/variables/variables.index b/model-integration/src/test/models/tensorflow/external/modelv1/variables/variables.index
deleted file mode 100644
index 285449d22c5..00000000000
--- a/model-integration/src/test/models/tensorflow/external/modelv1/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/external/modelv2/saved_model.pb b/model-integration/src/test/models/tensorflow/external/modelv2/saved_model.pb
deleted file mode 100644
index e2af4d90552..00000000000
--- a/model-integration/src/test/models/tensorflow/external/modelv2/saved_model.pb
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/external/modelv2/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/external/modelv2/variables/variables.data-00000-of-00001
deleted file mode 100644
index 4bc7ff8a5d5..00000000000
--- a/model-integration/src/test/models/tensorflow/external/modelv2/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/external/modelv2/variables/variables.index b/model-integration/src/test/models/tensorflow/external/modelv2/variables/variables.index
deleted file mode 100644
index 398e369c5e3..00000000000
--- a/model-integration/src/test/models/tensorflow/external/modelv2/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/external/train.py b/model-integration/src/test/models/tensorflow/external/train.py
deleted file mode 100644
index 32b14c481c3..00000000000
--- a/model-integration/src/test/models/tensorflow/external/train.py
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-import numpy as np
-import tensorflow as tf
-import tensorflow.keras.backend as K
-
-from tensorflow.keras.layers import Input, Dense, concatenate
-from tensorflow.keras.models import Model
-
-input_user = Input(shape=(3,))
-input_ad = Input(shape=(3,))
-
-merged = concatenate([input_user, input_ad])
-output_1 = Dense(64, activation='relu')(merged)
-output_2 = Dense(64, activation='relu')(output_1)
-predictions = Dense(1)(output_2)
-
-model = Model(inputs=[input_user, input_ad], outputs=predictions)
-model.compile(optimizer='adam',
- loss='binary_crossentropy',
- metrics=['accuracy'])
-model.summary()
-
-SAMPLES = 1000
-user_data = np.random.rand(SAMPLES,3)
-ad_data = np.random.rand(SAMPLES,3)
-labels = np.random.rand(SAMPLES,1)
-print(user_data[:10])
-print(ad_data[:10])
-print(labels[:10])
-
-model.fit([user_data, ad_data], labels, epochs=10, ) # starts training
-
-user_data_sample1 = np.random.rand(1, 3)
-ad_data_sample1 = np.random.rand(1, 3)
-
-print("predicting for:")
-print(user_data_sample1)
-print(ad_data_sample1)
-predictions = model.predict([user_data_sample1, ad_data_sample1])
-print(predictions)
-
-signature = tf.saved_model.signature_def_utils.predict_signature_def(
- inputs={'input1': model.inputs[0],'input2': model.inputs[1] }, outputs={'pctr': model.outputs[0]})
-
-builder = tf.saved_model.builder.SavedModelBuilder('modelv1')
-builder.add_meta_graph_and_variables(
- sess=K.get_session(),
- tags=[tf.saved_model.tag_constants.SERVING],
- signature_def_map={
- tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY:
- signature
- })
-builder.save()
diff --git a/model-integration/src/test/models/tensorflow/external/train_embed.py b/model-integration/src/test/models/tensorflow/external/train_embed.py
deleted file mode 100644
index 2d1ab18a0eb..00000000000
--- a/model-integration/src/test/models/tensorflow/external/train_embed.py
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-import numpy as np
-import tensorflow as tf
-import tensorflow.keras.backend as K
-
-from tensorflow.keras.layers import Input, Dense, concatenate, Embedding, Reshape
-from tensorflow.keras.models import Model
-
-input_user = Input(shape=(3,))
-input_ad = Input(shape=(3,))
-gender_samples = Input(shape=(1,), dtype='int32')
-
-gender_values = ['m', 'f', 'a']
-
-gender_embeddings = Embedding(len(gender_values), 1)(gender_samples)
-reshape_gender = Reshape(target_shape=[1])(gender_embeddings)
-
-model2 = Model(inputs=[gender_samples], outputs=reshape_gender)
-model2.summary()
-
-merged = concatenate([input_user, input_ad, reshape_gender])
-output_1 = Dense(64, activation='relu')(merged)
-output_2 = Dense(64, activation='relu')(output_1)
-predictions = Dense(1)(output_2)
-
-model = Model(inputs=[input_user, input_ad, gender_samples], outputs=predictions)
-model.compile(optimizer='adam',
- loss='binary_crossentropy',
- metrics=['accuracy'])
-model.summary()
-
-SAMPLES = 1000
-user_data = np.random.rand(SAMPLES,3)
-ad_data = np.random.rand(SAMPLES,3)
-gender_data = np.random.randint(len(gender_values), size=SAMPLES)
-labels = np.random.rand(SAMPLES,1)
-print(user_data[:10])
-print(ad_data[:10])
-print(gender_data[:10])
-print(labels[:10])
-
-model.fit([user_data, ad_data, gender_data], labels, epochs=10, ) # starts training
-
-user_data_sample1 = np.random.rand(1, 3)
-ad_data_sample1 = np.random.rand(1, 3)
-gender_data_sample1 = np.random.randint(len(gender_values), size=1)
-
-print("predicting for:")
-print(user_data_sample1)
-print(ad_data_sample1)
-print(gender_data_sample1)
-predictions = model.predict([user_data_sample1, ad_data_sample1, gender_data_sample1])
-print(predictions)
-
-signature = tf.saved_model.signature_def_utils.predict_signature_def(
- inputs={'input1': model.inputs[0],'input2': model.inputs[1], 'input3': model.inputs[2] }, outputs={'pctrx': model.outputs[0]})
-
-builder = tf.saved_model.builder.SavedModelBuilder('modelv2')
-builder.add_meta_graph_and_variables(
- sess=K.get_session(),
- tags=[tf.saved_model.tag_constants.SERVING],
- signature_def_map={
- tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY:
- signature
- })
-builder.save()
diff --git a/model-integration/src/test/models/tensorflow/mnist/saved/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/mnist/saved/saved_model.pbtxt
deleted file mode 100644
index eb926836576..00000000000
--- a/model-integration/src/test/models/tensorflow/mnist/saved/saved_model.pbtxt
+++ /dev/null
@@ -1,7982 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Add"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "AddN"
- input_arg {
- name: "inputs"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "sum"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- type: DT_VARIANT
- }
- }
- }
- is_aggregate: true
- is_commutative: true
- }
- op {
- name: "ApplyGradientDescent"
- input_arg {
- name: "var"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "alpha"
- type_attr: "T"
- }
- input_arg {
- name: "delta"
- type_attr: "T"
- }
- output_arg {
- name: "out"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: false
- }
- }
- }
- op {
- name: "Assign"
- input_arg {
- name: "ref"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output_ref"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "validate_shape"
- type: "bool"
- default_value {
- b: true
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: true
- }
- }
- allows_uninitialized_input: true
- }
- op {
- name: "BroadcastGradientArgs"
- input_arg {
- name: "s0"
- type_attr: "T"
- }
- input_arg {
- name: "s1"
- type_attr: "T"
- }
- output_arg {
- name: "r0"
- type_attr: "T"
- }
- output_arg {
- name: "r1"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Cast"
- input_arg {
- name: "x"
- type_attr: "SrcT"
- }
- output_arg {
- name: "y"
- type_attr: "DstT"
- }
- attr {
- name: "SrcT"
- type: "type"
- }
- attr {
- name: "DstT"
- type: "type"
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "ExpandDims"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "dim"
- type_attr: "Tdim"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tdim"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Fill"
- input_arg {
- name: "dims"
- type: DT_INT32
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "FloorDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "GreaterEqual"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_UINT16
- type: DT_HALF
- }
- }
- }
- }
- op {
- name: "Identity"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "InTopKV2"
- input_arg {
- name: "predictions"
- type: DT_FLOAT
- }
- input_arg {
- name: "targets"
- type_attr: "T"
- }
- input_arg {
- name: "k"
- type_attr: "T"
- }
- output_arg {
- name: "precision"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Maximum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mean"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "MergeV2Checkpoints"
- input_arg {
- name: "checkpoint_prefixes"
- type: DT_STRING
- }
- input_arg {
- name: "destination_prefix"
- type: DT_STRING
- }
- attr {
- name: "delete_old_dirs"
- type: "bool"
- default_value {
- b: true
- }
- }
- is_stateful: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "NoOp"
- }
- op {
- name: "Pack"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "axis"
- type: "int"
- default_value {
- i: 0
- }
- }
- }
- op {
- name: "Placeholder"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- default_value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- op {
- name: "PreventGradient"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "message"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Prod"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RealDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Reshape"
- input_arg {
- name: "tensor"
- type_attr: "T"
- }
- input_arg {
- name: "shape"
- type_attr: "Tshape"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tshape"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RestoreV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- output_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "SaveV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- input_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "ScalarSummary"
- input_arg {
- name: "tags"
- type: DT_STRING
- }
- input_arg {
- name: "values"
- type_attr: "T"
- }
- output_arg {
- name: "summary"
- type: DT_STRING
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_UINT16
- type: DT_HALF
- }
- }
- }
- }
- op {
- name: "Select"
- input_arg {
- name: "condition"
- type: DT_BOOL
- }
- input_arg {
- name: "t"
- type_attr: "T"
- }
- input_arg {
- name: "e"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "Selu"
- input_arg {
- name: "features"
- type_attr: "T"
- }
- output_arg {
- name: "activations"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "SeluGrad"
- input_arg {
- name: "gradients"
- type_attr: "T"
- }
- input_arg {
- name: "outputs"
- type_attr: "T"
- }
- output_arg {
- name: "backprops"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "Shape"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "out_type"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "out_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "ShardedFilename"
- input_arg {
- name: "basename"
- type: DT_STRING
- }
- input_arg {
- name: "shard"
- type: DT_INT32
- }
- input_arg {
- name: "num_shards"
- type: DT_INT32
- }
- output_arg {
- name: "filename"
- type: DT_STRING
- }
- }
- op {
- name: "SparseSoftmaxCrossEntropyWithLogits"
- input_arg {
- name: "features"
- type_attr: "T"
- }
- input_arg {
- name: "labels"
- type_attr: "Tlabels"
- }
- output_arg {
- name: "loss"
- type_attr: "T"
- }
- output_arg {
- name: "backprop"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- attr {
- name: "Tlabels"
- type: "type"
- default_value {
- type: DT_INT64
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "StringJoin"
- input_arg {
- name: "inputs"
- type: DT_STRING
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type: DT_STRING
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "separator"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Sum"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Tile"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "multiples"
- type_attr: "Tmultiples"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tmultiples"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "TruncatedNormal"
- input_arg {
- name: "shape"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "seed"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "seed2"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "dtype"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_stateful: true
- }
- op {
- name: "VariableV2"
- output_arg {
- name: "ref"
- type_attr: "dtype"
- is_ref: true
- }
- attr {
- name: "shape"
- type: "shape"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "container"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "shared_name"
- type: "string"
- default_value {
- s: ""
- }
- }
- is_stateful: true
- }
- op {
- name: "ZerosLike"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- }
- tags: "serve"
- tensorflow_version: "1.4.1"
- tensorflow_git_version: "v1.4.0-19-ga52c8d9"
- }
- graph_def {
- node {
- name: "input"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- node {
- name: "y"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/truncated_normal/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\020\003\000\000,\001\000\000"
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/truncated_normal/mean"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/truncated_normal/stddev"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0714285746216774
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/truncated_normal/TruncatedNormal"
- op: "TruncatedNormal"
- input: "dnn/hidden1/truncated_normal/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "dnn/hidden1/truncated_normal/mul"
- op: "Mul"
- input: "dnn/hidden1/truncated_normal/TruncatedNormal"
- input: "dnn/hidden1/truncated_normal/stddev"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/truncated_normal"
- op: "Add"
- input: "dnn/hidden1/truncated_normal/mul"
- input: "dnn/hidden1/truncated_normal/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/weights"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "dnn/hidden1/weights/Assign"
- op: "Assign"
- input: "dnn/hidden1/weights"
- input: "dnn/hidden1/truncated_normal"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden1/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/hidden1/weights/read"
- op: "Identity"
- input: "dnn/hidden1/weights"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden1/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/zeros"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 300
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/bias"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "dnn/hidden1/bias/Assign"
- op: "Assign"
- input: "dnn/hidden1/bias"
- input: "dnn/hidden1/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden1/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/hidden1/bias/read"
- op: "Identity"
- input: "dnn/hidden1/bias"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden1/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/MatMul"
- op: "MatMul"
- input: "input"
- input: "dnn/hidden1/weights/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/hidden1/add"
- op: "Add"
- input: "dnn/hidden1/MatMul"
- input: "dnn/hidden1/bias/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/mul/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.009999999776482582
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/mul"
- op: "Mul"
- input: "dnn/hidden1/mul/x"
- input: "dnn/hidden1/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/Maximum"
- op: "Maximum"
- input: "dnn/hidden1/mul"
- input: "dnn/hidden1/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden2/truncated_normal/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: ",\001\000\000d\000\000\000"
- }
- }
- }
- }
- node {
- name: "dnn/hidden2/truncated_normal/mean"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "dnn/hidden2/truncated_normal/stddev"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.1154700517654419
- }
- }
- }
- }
- node {
- name: "dnn/hidden2/truncated_normal/TruncatedNormal"
- op: "TruncatedNormal"
- input: "dnn/hidden2/truncated_normal/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "dnn/hidden2/truncated_normal/mul"
- op: "Mul"
- input: "dnn/hidden2/truncated_normal/TruncatedNormal"
- input: "dnn/hidden2/truncated_normal/stddev"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden2/truncated_normal"
- op: "Add"
- input: "dnn/hidden2/truncated_normal/mul"
- input: "dnn/hidden2/truncated_normal/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden2/weights"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "dnn/hidden2/weights/Assign"
- op: "Assign"
- input: "dnn/hidden2/weights"
- input: "dnn/hidden2/truncated_normal"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden2/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/hidden2/weights/read"
- op: "Identity"
- input: "dnn/hidden2/weights"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden2/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden2/zeros"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 100
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "dnn/hidden2/bias"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "dnn/hidden2/bias/Assign"
- op: "Assign"
- input: "dnn/hidden2/bias"
- input: "dnn/hidden2/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden2/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/hidden2/bias/read"
- op: "Identity"
- input: "dnn/hidden2/bias"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden2/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden2/MatMul"
- op: "MatMul"
- input: "dnn/hidden1/Maximum"
- input: "dnn/hidden2/weights/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/hidden2/add"
- op: "Add"
- input: "dnn/hidden2/MatMul"
- input: "dnn/hidden2/bias/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden2/Selu"
- op: "Selu"
- input: "dnn/hidden2/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/outputs/truncated_normal/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "d\000\000\000\n\000\000\000"
- }
- }
- }
- }
- node {
- name: "dnn/outputs/truncated_normal/mean"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "dnn/outputs/truncated_normal/stddev"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.20000000298023224
- }
- }
- }
- }
- node {
- name: "dnn/outputs/truncated_normal/TruncatedNormal"
- op: "TruncatedNormal"
- input: "dnn/outputs/truncated_normal/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "dnn/outputs/truncated_normal/mul"
- op: "Mul"
- input: "dnn/outputs/truncated_normal/TruncatedNormal"
- input: "dnn/outputs/truncated_normal/stddev"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/outputs/truncated_normal"
- op: "Add"
- input: "dnn/outputs/truncated_normal/mul"
- input: "dnn/outputs/truncated_normal/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/outputs/weights"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "dnn/outputs/weights/Assign"
- op: "Assign"
- input: "dnn/outputs/weights"
- input: "dnn/outputs/truncated_normal"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/outputs/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/outputs/weights/read"
- op: "Identity"
- input: "dnn/outputs/weights"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/outputs/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/outputs/zeros"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 10
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "dnn/outputs/bias"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "dnn/outputs/bias/Assign"
- op: "Assign"
- input: "dnn/outputs/bias"
- input: "dnn/outputs/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/outputs/bias/read"
- op: "Identity"
- input: "dnn/outputs/bias"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/outputs/MatMul"
- op: "MatMul"
- input: "dnn/hidden2/Selu"
- input: "dnn/outputs/weights/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/outputs/add"
- op: "Add"
- input: "dnn/outputs/MatMul"
- input: "dnn/outputs/bias/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/SparseSoftmaxCrossEntropyWithLogits/Shape"
- op: "Shape"
- input: "y"
- attr {
- key: "T"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits"
- op: "SparseSoftmaxCrossEntropyWithLogits"
- input: "dnn/outputs/add"
- input: "y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tlabels"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "loss/loss"
- op: "Mean"
- input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits"
- input: "loss/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "train/gradients/Fill"
- op: "Fill"
- input: "train/gradients/Shape"
- input: "train/gradients/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Reshape/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/Fill"
- input: "train/gradients/loss/loss_grad/Reshape/shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Shape"
- op: "Shape"
- input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Tile"
- op: "Tile"
- input: "train/gradients/loss/loss_grad/Reshape"
- input: "train/gradients/loss/loss_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Shape_1"
- op: "Shape"
- input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Shape_2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Prod"
- op: "Prod"
- input: "train/gradients/loss/loss_grad/Shape_1"
- input: "train/gradients/loss/loss_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Const_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Prod_1"
- op: "Prod"
- input: "train/gradients/loss/loss_grad/Shape_2"
- input: "train/gradients/loss/loss_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Maximum"
- op: "Maximum"
- input: "train/gradients/loss/loss_grad/Prod_1"
- input: "train/gradients/loss/loss_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/floordiv"
- op: "FloorDiv"
- input: "train/gradients/loss/loss_grad/Prod"
- input: "train/gradients/loss/loss_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Cast"
- op: "Cast"
- input: "train/gradients/loss/loss_grad/floordiv"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/truediv"
- op: "RealDiv"
- input: "train/gradients/loss/loss_grad/Tile"
- input: "train/gradients/loss/loss_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/zeros_like"
- op: "ZerosLike"
- input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/PreventGradient"
- op: "PreventGradient"
- input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "message"
- value {
- s: "Currently there is no way to take the second derivative of sparse_softmax_cross_entropy_with_logits due to the fused implementation\'s interaction with tf.gradients()"
- }
- }
- }
- node {
- name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims"
- op: "ExpandDims"
- input: "train/gradients/loss/loss_grad/truediv"
- input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/mul"
- op: "Mul"
- input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims"
- input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/PreventGradient"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/add_grad/Shape"
- op: "Shape"
- input: "dnn/outputs/MatMul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/add_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/add_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/outputs/add_grad/Shape"
- input: "train/gradients/dnn/outputs/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/add_grad/Sum"
- op: "Sum"
- input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/mul"
- input: "train/gradients/dnn/outputs/add_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/add_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/outputs/add_grad/Sum"
- input: "train/gradients/dnn/outputs/add_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/add_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/mul"
- input: "train/gradients/dnn/outputs/add_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/add_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/outputs/add_grad/Sum_1"
- input: "train/gradients/dnn/outputs/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/add_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/outputs/add_grad/Reshape"
- input: "^train/gradients/dnn/outputs/add_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/outputs/add_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/outputs/add_grad/Reshape"
- input: "^train/gradients/dnn/outputs/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/outputs/add_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/add_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/outputs/add_grad/Reshape_1"
- input: "^train/gradients/dnn/outputs/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/outputs/add_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/MatMul_grad/MatMul"
- op: "MatMul"
- input: "train/gradients/dnn/outputs/add_grad/tuple/control_dependency"
- input: "dnn/outputs/weights/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/MatMul_grad/MatMul_1"
- op: "MatMul"
- input: "dnn/hidden2/Selu"
- input: "train/gradients/dnn/outputs/add_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/MatMul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/outputs/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/outputs/MatMul_grad/MatMul_1"
- }
- node {
- name: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/outputs/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/outputs/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/outputs/MatMul_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/outputs/MatMul_grad/MatMul_1"
- input: "^train/gradients/dnn/outputs/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/outputs/MatMul_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/Selu_grad/SeluGrad"
- op: "SeluGrad"
- input: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency"
- input: "dnn/hidden2/Selu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/add_grad/Shape"
- op: "Shape"
- input: "dnn/hidden2/MatMul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/add_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/add_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/hidden2/add_grad/Shape"
- input: "train/gradients/dnn/hidden2/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/add_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/hidden2/Selu_grad/SeluGrad"
- input: "train/gradients/dnn/hidden2/add_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/add_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/hidden2/add_grad/Sum"
- input: "train/gradients/dnn/hidden2/add_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/add_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/hidden2/Selu_grad/SeluGrad"
- input: "train/gradients/dnn/hidden2/add_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/add_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/hidden2/add_grad/Sum_1"
- input: "train/gradients/dnn/hidden2/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/add_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/hidden2/add_grad/Reshape"
- input: "^train/gradients/dnn/hidden2/add_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/hidden2/add_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/hidden2/add_grad/Reshape"
- input: "^train/gradients/dnn/hidden2/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden2/add_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/add_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden2/add_grad/Reshape_1"
- input: "^train/gradients/dnn/hidden2/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden2/add_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/MatMul_grad/MatMul"
- op: "MatMul"
- input: "train/gradients/dnn/hidden2/add_grad/tuple/control_dependency"
- input: "dnn/hidden2/weights/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/MatMul_grad/MatMul_1"
- op: "MatMul"
- input: "dnn/hidden1/Maximum"
- input: "train/gradients/dnn/hidden2/add_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/MatMul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/hidden2/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/hidden2/MatMul_grad/MatMul_1"
- }
- node {
- name: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/hidden2/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/hidden2/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden2/MatMul_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden2/MatMul_grad/MatMul_1"
- input: "^train/gradients/dnn/hidden2/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden2/MatMul_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Shape"
- op: "Shape"
- input: "dnn/hidden1/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Shape_1"
- op: "Shape"
- input: "dnn/hidden1/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Shape_2"
- op: "Shape"
- input: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/zeros/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/zeros"
- op: "Fill"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Shape_2"
- input: "train/gradients/dnn/hidden1/Maximum_grad/zeros/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/GreaterEqual"
- op: "GreaterEqual"
- input: "dnn/hidden1/mul"
- input: "dnn/hidden1/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Shape"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Select"
- op: "Select"
- input: "train/gradients/dnn/hidden1/Maximum_grad/GreaterEqual"
- input: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency"
- input: "train/gradients/dnn/hidden1/Maximum_grad/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Select_1"
- op: "Select"
- input: "train/gradients/dnn/hidden1/Maximum_grad/GreaterEqual"
- input: "train/gradients/dnn/hidden1/Maximum_grad/zeros"
- input: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Select"
- input: "train/gradients/dnn/hidden1/Maximum_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Sum"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Select_1"
- input: "train/gradients/dnn/hidden1/Maximum_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Sum_1"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/hidden1/Maximum_grad/Reshape"
- input: "^train/gradients/dnn/hidden1/Maximum_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Reshape"
- input: "^train/gradients/dnn/hidden1/Maximum_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/Maximum_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Reshape_1"
- input: "^train/gradients/dnn/hidden1/Maximum_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/Maximum_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Shape_1"
- op: "Shape"
- input: "dnn/hidden1/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/hidden1/mul_grad/Shape"
- input: "train/gradients/dnn/hidden1/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/mul"
- op: "Mul"
- input: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency"
- input: "dnn/hidden1/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/hidden1/mul_grad/mul"
- input: "train/gradients/dnn/hidden1/mul_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/hidden1/mul_grad/Sum"
- input: "train/gradients/dnn/hidden1/mul_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/mul_1"
- op: "Mul"
- input: "dnn/hidden1/mul/x"
- input: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/hidden1/mul_grad/mul_1"
- input: "train/gradients/dnn/hidden1/mul_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/hidden1/mul_grad/Sum_1"
- input: "train/gradients/dnn/hidden1/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/hidden1/mul_grad/Reshape"
- input: "^train/gradients/dnn/hidden1/mul_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/mul_grad/Reshape"
- input: "^train/gradients/dnn/hidden1/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/mul_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/mul_grad/Reshape_1"
- input: "^train/gradients/dnn/hidden1/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/mul_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/AddN"
- op: "AddN"
- input: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency_1"
- input: "train/gradients/dnn/hidden1/mul_grad/tuple/control_dependency_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/Maximum_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/add_grad/Shape"
- op: "Shape"
- input: "dnn/hidden1/MatMul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/add_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/add_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/hidden1/add_grad/Shape"
- input: "train/gradients/dnn/hidden1/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/add_grad/Sum"
- op: "Sum"
- input: "train/gradients/AddN"
- input: "train/gradients/dnn/hidden1/add_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/add_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/hidden1/add_grad/Sum"
- input: "train/gradients/dnn/hidden1/add_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/add_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/AddN"
- input: "train/gradients/dnn/hidden1/add_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/add_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/hidden1/add_grad/Sum_1"
- input: "train/gradients/dnn/hidden1/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/add_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/hidden1/add_grad/Reshape"
- input: "^train/gradients/dnn/hidden1/add_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/hidden1/add_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/add_grad/Reshape"
- input: "^train/gradients/dnn/hidden1/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/add_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/add_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/add_grad/Reshape_1"
- input: "^train/gradients/dnn/hidden1/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/add_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/MatMul_grad/MatMul"
- op: "MatMul"
- input: "train/gradients/dnn/hidden1/add_grad/tuple/control_dependency"
- input: "dnn/hidden1/weights/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/MatMul_grad/MatMul_1"
- op: "MatMul"
- input: "input"
- input: "train/gradients/dnn/hidden1/add_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/MatMul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/hidden1/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/hidden1/MatMul_grad/MatMul_1"
- }
- node {
- name: "train/gradients/dnn/hidden1/MatMul_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/hidden1/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/MatMul_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/MatMul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/MatMul_grad/MatMul_1"
- input: "^train/gradients/dnn/hidden1/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/MatMul_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/GradientDescent/learning_rate"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.009999999776482582
- }
- }
- }
- }
- node {
- name: "train/GradientDescent/update_dnn/hidden1/weights/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "dnn/hidden1/weights"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/hidden1/MatMul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden1/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_dnn/hidden1/bias/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "dnn/hidden1/bias"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/hidden1/add_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden1/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_dnn/hidden2/weights/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "dnn/hidden2/weights"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden2/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_dnn/hidden2/bias/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "dnn/hidden2/bias"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/hidden2/add_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden2/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_dnn/outputs/weights/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "dnn/outputs/weights"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/outputs/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_dnn/outputs/bias/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "dnn/outputs/bias"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/outputs/add_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent"
- op: "NoOp"
- input: "^train/GradientDescent/update_dnn/hidden1/weights/ApplyGradientDescent"
- input: "^train/GradientDescent/update_dnn/hidden1/bias/ApplyGradientDescent"
- input: "^train/GradientDescent/update_dnn/hidden2/weights/ApplyGradientDescent"
- input: "^train/GradientDescent/update_dnn/hidden2/bias/ApplyGradientDescent"
- input: "^train/GradientDescent/update_dnn/outputs/weights/ApplyGradientDescent"
- input: "^train/GradientDescent/update_dnn/outputs/bias/ApplyGradientDescent"
- }
- node {
- name: "eval/in_top_k/InTopKV2/k"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT64
- tensor_shape {
- }
- int64_val: 1
- }
- }
- }
- }
- node {
- name: "eval/in_top_k/InTopKV2"
- op: "InTopKV2"
- input: "dnn/outputs/add"
- input: "y"
- input: "eval/in_top_k/InTopKV2/k"
- attr {
- key: "T"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "eval/Cast"
- op: "Cast"
- input: "eval/in_top_k/InTopKV2"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "eval/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "eval/Mean"
- op: "Mean"
- input: "eval/Cast"
- input: "eval/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "init"
- op: "NoOp"
- input: "^dnn/hidden1/weights/Assign"
- input: "^dnn/hidden1/bias/Assign"
- input: "^dnn/hidden2/weights/Assign"
- input: "^dnn/hidden2/bias/Assign"
- input: "^dnn/outputs/weights/Assign"
- input: "^dnn/outputs/bias/Assign"
- }
- node {
- name: "Accuracy/tags"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "Accuracy"
- }
- }
- }
- }
- node {
- name: "Accuracy"
- op: "ScalarSummary"
- input: "Accuracy/tags"
- input: "eval/Mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "model"
- }
- }
- }
- }
- node {
- name: "save/StringJoin/inputs_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "_temp_de3cfc5e8e7e4734ae221577e8fd36a2/part"
- }
- }
- }
- }
- node {
- name: "save/StringJoin"
- op: "StringJoin"
- input: "save/Const"
- input: "save/StringJoin/inputs_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "separator"
- value {
- s: ""
- }
- }
- }
- node {
- name: "save/num_shards"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename/shard"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename"
- op: "ShardedFilename"
- input: "save/StringJoin"
- input: "save/ShardedFilename/shard"
- input: "save/num_shards"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/SaveV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 6
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 6
- }
- }
- string_val: "dnn/hidden1/bias"
- string_val: "dnn/hidden1/weights"
- string_val: "dnn/hidden2/bias"
- string_val: "dnn/hidden2/weights"
- string_val: "dnn/outputs/bias"
- string_val: "dnn/outputs/weights"
- }
- }
- }
- }
- node {
- name: "save/SaveV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 6
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 6
- }
- }
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/SaveV2"
- op: "SaveV2"
- input: "save/ShardedFilename"
- input: "save/SaveV2/tensor_names"
- input: "save/SaveV2/shape_and_slices"
- input: "dnn/hidden1/bias"
- input: "dnn/hidden1/weights"
- input: "dnn/hidden2/bias"
- input: "dnn/hidden2/weights"
- input: "dnn/outputs/bias"
- input: "dnn/outputs/weights"
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/control_dependency"
- op: "Identity"
- input: "save/ShardedFilename"
- input: "^save/SaveV2"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@save/ShardedFilename"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints/checkpoint_prefixes"
- op: "Pack"
- input: "save/ShardedFilename"
- input: "^save/control_dependency"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints"
- op: "MergeV2Checkpoints"
- input: "save/MergeV2Checkpoints/checkpoint_prefixes"
- input: "save/Const"
- attr {
- key: "delete_old_dirs"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/Identity"
- op: "Identity"
- input: "save/Const"
- input: "^save/control_dependency"
- input: "^save/MergeV2Checkpoints"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "dnn/hidden1/bias"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2/tensor_names"
- input: "save/RestoreV2/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign"
- op: "Assign"
- input: "dnn/hidden1/bias"
- input: "save/RestoreV2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden1/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_1/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "dnn/hidden1/weights"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_1/tensor_names"
- input: "save/RestoreV2_1/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_1"
- op: "Assign"
- input: "dnn/hidden1/weights"
- input: "save/RestoreV2_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden1/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "dnn/hidden2/bias"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_2/tensor_names"
- input: "save/RestoreV2_2/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_2"
- op: "Assign"
- input: "dnn/hidden2/bias"
- input: "save/RestoreV2_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden2/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_3/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "dnn/hidden2/weights"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_3/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_3"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_3/tensor_names"
- input: "save/RestoreV2_3/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_3"
- op: "Assign"
- input: "dnn/hidden2/weights"
- input: "save/RestoreV2_3"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden2/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_4/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "dnn/outputs/bias"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_4/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_4"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_4/tensor_names"
- input: "save/RestoreV2_4/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_4"
- op: "Assign"
- input: "dnn/outputs/bias"
- input: "save/RestoreV2_4"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_5/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "dnn/outputs/weights"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_5/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_5"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_5/tensor_names"
- input: "save/RestoreV2_5/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_5"
- op: "Assign"
- input: "dnn/outputs/weights"
- input: "save/RestoreV2_5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/outputs/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/restore_shard"
- op: "NoOp"
- input: "^save/Assign"
- input: "^save/Assign_1"
- input: "^save/Assign_2"
- input: "^save/Assign_3"
- input: "^save/Assign_4"
- input: "^save/Assign_5"
- }
- node {
- name: "save/restore_all"
- op: "NoOp"
- input: "^save/restore_shard"
- }
- versions {
- producer: 24
- }
- }
- saver_def {
- filename_tensor_name: "save/Const:0"
- save_tensor_name: "save/Identity:0"
- restore_op_name: "save/restore_all"
- max_to_keep: 5
- sharded: true
- keep_checkpoint_every_n_hours: 10000.0
- version: V2
- }
- collection_def {
- key: "summaries"
- value {
- node_list {
- value: "Accuracy:0"
- }
- }
- }
- collection_def {
- key: "train_op"
- value {
- node_list {
- value: "train/GradientDescent"
- }
- }
- }
- collection_def {
- key: "trainable_variables"
- value {
- bytes_list {
- value: "\n\025dnn/hidden1/weights:0\022\032dnn/hidden1/weights/Assign\032\032dnn/hidden1/weights/read:02\036dnn/hidden1/truncated_normal:0"
- value: "\n\022dnn/hidden1/bias:0\022\027dnn/hidden1/bias/Assign\032\027dnn/hidden1/bias/read:02\023dnn/hidden1/zeros:0"
- value: "\n\025dnn/hidden2/weights:0\022\032dnn/hidden2/weights/Assign\032\032dnn/hidden2/weights/read:02\036dnn/hidden2/truncated_normal:0"
- value: "\n\022dnn/hidden2/bias:0\022\027dnn/hidden2/bias/Assign\032\027dnn/hidden2/bias/read:02\023dnn/hidden2/zeros:0"
- value: "\n\025dnn/outputs/weights:0\022\032dnn/outputs/weights/Assign\032\032dnn/outputs/weights/read:02\036dnn/outputs/truncated_normal:0"
- value: "\n\022dnn/outputs/bias:0\022\027dnn/outputs/bias/Assign\032\027dnn/outputs/bias/read:02\023dnn/outputs/zeros:0"
- }
- }
- }
- collection_def {
- key: "variables"
- value {
- bytes_list {
- value: "\n\025dnn/hidden1/weights:0\022\032dnn/hidden1/weights/Assign\032\032dnn/hidden1/weights/read:02\036dnn/hidden1/truncated_normal:0"
- value: "\n\022dnn/hidden1/bias:0\022\027dnn/hidden1/bias/Assign\032\027dnn/hidden1/bias/read:02\023dnn/hidden1/zeros:0"
- value: "\n\025dnn/hidden2/weights:0\022\032dnn/hidden2/weights/Assign\032\032dnn/hidden2/weights/read:02\036dnn/hidden2/truncated_normal:0"
- value: "\n\022dnn/hidden2/bias:0\022\027dnn/hidden2/bias/Assign\032\027dnn/hidden2/bias/read:02\023dnn/hidden2/zeros:0"
- value: "\n\025dnn/outputs/weights:0\022\032dnn/outputs/weights/Assign\032\032dnn/outputs/weights/read:02\036dnn/outputs/truncated_normal:0"
- value: "\n\022dnn/outputs/bias:0\022\027dnn/outputs/bias/Assign\032\027dnn/outputs/bias/read:02\023dnn/outputs/zeros:0"
- }
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "x"
- value {
- name: "input:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- outputs {
- key: "y"
- value {
- name: "dnn/outputs/add:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/mnist/saved/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/mnist/saved/variables/variables.data-00000-of-00001
deleted file mode 100644
index a7ca01888c7..00000000000
--- a/model-integration/src/test/models/tensorflow/mnist/saved/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/mnist/saved/variables/variables.index b/model-integration/src/test/models/tensorflow/mnist/saved/variables/variables.index
deleted file mode 100644
index 7989c109a3a..00000000000
--- a/model-integration/src/test/models/tensorflow/mnist/saved/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/mnist/simple_mnist.py b/model-integration/src/test/models/tensorflow/mnist/simple_mnist.py
deleted file mode 100644
index 86a17e81f8f..00000000000
--- a/model-integration/src/test/models/tensorflow/mnist/simple_mnist.py
+++ /dev/null
@@ -1,98 +0,0 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-# Common imports
-import numpy as np
-import tensorflow as tf
-
-from tensorflow.examples.tutorials.mnist import input_data
-from datetime import datetime
-
-now = datetime.utcnow().strftime("%Y%m%d%H%M%S")
-root_logdir = "tf_logs"
-logdir = "{}/run-{}/".format(root_logdir, now)
-
-mnist = input_data.read_data_sets("/tmp/data/")
-X_train = mnist.train.images
-X_test = mnist.test.images
-y_train = mnist.train.labels.astype("int")
-y_test = mnist.test.labels.astype("int")
-
-n_inputs = 28*28 # MNIST
-n_hidden1 = 300
-n_hidden2 = 100
-n_hidden3 = 40
-n_outputs = 10
-
-learning_rate = 0.01
-n_epochs = 20
-batch_size = 50
-
-input = tf.placeholder(tf.float32, shape=(None, n_inputs), name="input")
-y = tf.placeholder(tf.int64, shape=(None), name="y")
-
-
-def neuron_layer(X, n_neurons, name, activation=None):
- with tf.name_scope(name):
- n_inputs = int(X.get_shape()[1])
- stddev = 2 / np.sqrt(n_inputs)
- init = tf.truncated_normal((n_inputs, n_neurons), stddev=stddev)
- W = tf.Variable(init, name="weights")
- b = tf.Variable(tf.zeros([n_neurons]), name="bias")
- Z = tf.matmul(X, W) + b
- if activation is not None:
- return activation(Z)
- else:
- return Z
-
-
-def leaky_relu(z, name=None):
- return tf.maximum(0.01 * z, z, name=name)
-
-
-with tf.name_scope("dnn"):
- hidden1 = neuron_layer(input, n_hidden1, name="hidden1", activation=leaky_relu)
- hidden2 = neuron_layer(hidden1, n_hidden2, name="hidden2", activation=tf.nn.selu)
- logits = neuron_layer(hidden2, n_outputs, name="outputs") #, activation=tf.nn.sigmoid)
-
-with tf.name_scope("loss"):
- xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=logits)
- loss = tf.reduce_mean(xentropy, name="loss")
-
-with tf.name_scope("train"):
- optimizer = tf.train.GradientDescentOptimizer(learning_rate)
- training_op = optimizer.minimize(loss)
-
-with tf.name_scope("eval"):
- correct = tf.nn.in_top_k(logits, y, 1)
- accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))
-
-init = tf.global_variables_initializer()
-accuracy_summary = tf.summary.scalar('Accuracy', accuracy)
-file_writer = tf.summary.FileWriter(logdir, tf.get_default_graph())
-
-with tf.Session() as sess:
- init.run()
- for epoch in range(n_epochs):
- for iteration in range(mnist.train.num_examples // batch_size):
- X_batch, y_batch = mnist.train.next_batch(batch_size)
- sess.run(training_op, feed_dict={input: X_batch, y: y_batch})
- acc_train = accuracy.eval(feed_dict={input: X_batch, y: y_batch})
- acc_val = accuracy.eval(feed_dict={input: mnist.validation.images,
- y: mnist.validation.labels})
- print(epoch, "Train accuracy:", acc_train, "Val accuracy:", acc_val)
-
- # Save summary for tensorboard
- summary_str = accuracy_summary.eval(feed_dict={input: mnist.validation.images,
- y: mnist.validation.labels})
- file_writer.add_summary(summary_str, epoch)
-
- export_path = "saved"
- print('Exporting trained model to ', export_path)
- builder = tf.saved_model.builder.SavedModelBuilder(export_path)
- signature = tf.saved_model.signature_def_utils.predict_signature_def(inputs = {'x':input}, outputs = {'y':logits})
- builder.add_meta_graph_and_variables(sess,
- [tf.saved_model.tag_constants.SERVING],
- signature_def_map={'serving_default':signature})
- builder.save(as_text=True)
-
-file_writer.close()
diff --git a/model-integration/src/test/models/tensorflow/mnist_softmax/mnist_sftmax_with_saving.py b/model-integration/src/test/models/tensorflow/mnist_softmax/mnist_sftmax_with_saving.py
deleted file mode 100644
index 07a9fa4a213..00000000000
--- a/model-integration/src/test/models/tensorflow/mnist_softmax/mnist_sftmax_with_saving.py
+++ /dev/null
@@ -1,90 +0,0 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-# Copyright 2015 The TensorFlow Authors. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ==============================================================================
-
-"""A very simple MNIST classifier.
-
-See extensive documentation at
-https://www.tensorflow.org/get_started/mnist/beginners
-"""
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-
-import argparse
-import sys
-
-from tensorflow.examples.tutorials.mnist import input_data
-
-import tensorflow as tf
-
-FLAGS = None
-
-
-def main(_):
- # Import data
- mnist = input_data.read_data_sets(FLAGS.data_dir, one_hot=True)
-
- # Create the model
- x = tf.placeholder(tf.float32, [None, 784])
- W = tf.Variable(tf.zeros([784, 10]))
- b = tf.Variable(tf.zeros([10]))
- y = tf.matmul(x, W) + b
-
- # Define loss and optimizer
- y_ = tf.placeholder(tf.float32, [None, 10])
-
- # The raw formulation of cross-entropy,
- #
- # tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(tf.nn.softmax(y)),
- # reduction_indices=[1]))
- #
- # can be numerically unstable.
- #
- # So here we use tf.nn.softmax_cross_entropy_with_logits on the raw
- # outputs of 'y', and then average across the batch.
- cross_entropy = tf.reduce_mean(
- tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y))
- train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
-
- sess = tf.InteractiveSession()
- tf.global_variables_initializer().run()
- # Train
- for _ in range(1000):
- batch_xs, batch_ys = mnist.train.next_batch(100)
- sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
-
- # Test trained model
- correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
- accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
- print(sess.run(accuracy, feed_dict={x: mnist.test.images,
- y_: mnist.test.labels}))
-
- # Save the model
- export_path = "saved"
- print('Exporting trained model to ', export_path)
- builder = tf.saved_model.builder.SavedModelBuilder(export_path)
- signature = tf.saved_model.signature_def_utils.predict_signature_def(inputs = {'x':x}, outputs = {'y':y})
- builder.add_meta_graph_and_variables(sess,
- [tf.saved_model.tag_constants.SERVING],
- signature_def_map={'serving_default':signature})
- builder.save(as_text=True)
-
-if __name__ == '__main__':
- parser = argparse.ArgumentParser()
- parser.add_argument('--data_dir', type=str, default='/tmp/tensorflow/mnist/input_data',
- help='Directory for storing input data')
- FLAGS, unparsed = parser.parse_known_args()
- tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)
diff --git a/model-integration/src/test/models/tensorflow/mnist_softmax/saved/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/mnist_softmax/saved/saved_model.pbtxt
deleted file mode 100644
index 8100dfd594d..00000000000
--- a/model-integration/src/test/models/tensorflow/mnist_softmax/saved/saved_model.pbtxt
+++ /dev/null
@@ -1,5039 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Add"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "ApplyGradientDescent"
- input_arg {
- name: "var"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "alpha"
- type_attr: "T"
- }
- input_arg {
- name: "delta"
- type_attr: "T"
- }
- output_arg {
- name: "out"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: false
- }
- }
- }
- op {
- name: "ArgMax"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "dimension"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "output_type"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- attr {
- name: "output_type"
- type: "type"
- default_value {
- type: DT_INT64
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Assign"
- input_arg {
- name: "ref"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output_ref"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "validate_shape"
- type: "bool"
- default_value {
- b: true
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: true
- }
- }
- allows_uninitialized_input: true
- }
- op {
- name: "BroadcastGradientArgs"
- input_arg {
- name: "s0"
- type_attr: "T"
- }
- input_arg {
- name: "s1"
- type_attr: "T"
- }
- output_arg {
- name: "r0"
- type_attr: "T"
- }
- output_arg {
- name: "r1"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Cast"
- input_arg {
- name: "x"
- type_attr: "SrcT"
- }
- output_arg {
- name: "y"
- type_attr: "DstT"
- }
- attr {
- name: "SrcT"
- type: "type"
- }
- attr {
- name: "DstT"
- type: "type"
- }
- }
- op {
- name: "ConcatV2"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- input_arg {
- name: "axis"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 2
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "Equal"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_QUINT8
- type: DT_QINT8
- type: DT_QINT32
- type: DT_STRING
- type: DT_BOOL
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "ExpandDims"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "dim"
- type_attr: "Tdim"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tdim"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Fill"
- input_arg {
- name: "dims"
- type: DT_INT32
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "FloorDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Identity"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Maximum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mean"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "MergeV2Checkpoints"
- input_arg {
- name: "checkpoint_prefixes"
- type: DT_STRING
- }
- input_arg {
- name: "destination_prefix"
- type: DT_STRING
- }
- attr {
- name: "delete_old_dirs"
- type: "bool"
- default_value {
- b: true
- }
- }
- is_stateful: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "NoOp"
- }
- op {
- name: "Pack"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "axis"
- type: "int"
- default_value {
- i: 0
- }
- }
- }
- op {
- name: "Placeholder"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- default_value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- op {
- name: "Prod"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RealDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Reshape"
- input_arg {
- name: "tensor"
- type_attr: "T"
- }
- input_arg {
- name: "shape"
- type_attr: "Tshape"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tshape"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RestoreV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- output_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "SaveV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- input_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "Shape"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "out_type"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "out_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "ShardedFilename"
- input_arg {
- name: "basename"
- type: DT_STRING
- }
- input_arg {
- name: "shard"
- type: DT_INT32
- }
- input_arg {
- name: "num_shards"
- type: DT_INT32
- }
- output_arg {
- name: "filename"
- type: DT_STRING
- }
- }
- op {
- name: "Slice"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "begin"
- type_attr: "Index"
- }
- input_arg {
- name: "size"
- type_attr: "Index"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Index"
- type: "type"
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "SoftmaxCrossEntropyWithLogits"
- input_arg {
- name: "features"
- type_attr: "T"
- }
- input_arg {
- name: "labels"
- type_attr: "T"
- }
- output_arg {
- name: "loss"
- type_attr: "T"
- }
- output_arg {
- name: "backprop"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "StringJoin"
- input_arg {
- name: "inputs"
- type: DT_STRING
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type: DT_STRING
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "separator"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Sub"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Sum"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Tile"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "multiples"
- type_attr: "Tmultiples"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tmultiples"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "VariableV2"
- output_arg {
- name: "ref"
- type_attr: "dtype"
- is_ref: true
- }
- attr {
- name: "shape"
- type: "shape"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "container"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "shared_name"
- type: "string"
- default_value {
- s: ""
- }
- }
- is_stateful: true
- }
- op {
- name: "ZerosLike"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- }
- tags: "serve"
- tensorflow_version: "1.4.1"
- tensorflow_git_version: "v1.4.0-19-ga52c8d9b01"
- }
- graph_def {
- node {
- name: "Placeholder"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- node {
- name: "zeros"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "Variable"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "Variable/Assign"
- op: "Assign"
- input: "Variable"
- input: "zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "Variable/read"
- op: "Identity"
- input: "Variable"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "zeros_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 10
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "Variable_1"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "Variable_1/Assign"
- op: "Assign"
- input: "Variable_1"
- input: "zeros_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "Variable_1/read"
- op: "Identity"
- input: "Variable_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "MatMul"
- op: "MatMul"
- input: "Placeholder"
- input: "Variable/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "add"
- op: "Add"
- input: "MatMul"
- input: "Variable_1/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "Placeholder_1"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- node {
- name: "Rank"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "Shape"
- op: "Shape"
- input: "add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "Rank_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "Shape_1"
- op: "Shape"
- input: "add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "Sub/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "Sub"
- op: "Sub"
- input: "Rank_1"
- input: "Sub/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Slice/begin"
- op: "Pack"
- input: "Sub"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "Slice/size"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "Slice"
- op: "Slice"
- input: "Shape_1"
- input: "Slice/begin"
- input: "Slice/size"
- attr {
- key: "Index"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "concat/values_0"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "concat/axis"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "concat"
- op: "ConcatV2"
- input: "concat/values_0"
- input: "Slice"
- input: "concat/axis"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "Reshape"
- op: "Reshape"
- input: "add"
- input: "concat"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Rank_2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "Shape_2"
- op: "Shape"
- input: "Placeholder_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "Sub_1/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "Sub_1"
- op: "Sub"
- input: "Rank_2"
- input: "Sub_1/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Slice_1/begin"
- op: "Pack"
- input: "Sub_1"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "Slice_1/size"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "Slice_1"
- op: "Slice"
- input: "Shape_2"
- input: "Slice_1/begin"
- input: "Slice_1/size"
- attr {
- key: "Index"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "concat_1/values_0"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "concat_1/axis"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "concat_1"
- op: "ConcatV2"
- input: "concat_1/values_0"
- input: "Slice_1"
- input: "concat_1/axis"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "Reshape_1"
- op: "Reshape"
- input: "Placeholder_1"
- input: "concat_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "SoftmaxCrossEntropyWithLogits"
- op: "SoftmaxCrossEntropyWithLogits"
- input: "Reshape"
- input: "Reshape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Sub_2/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "Sub_2"
- op: "Sub"
- input: "Rank"
- input: "Sub_2/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Slice_2/begin"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "Slice_2/size"
- op: "Pack"
- input: "Sub_2"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "Slice_2"
- op: "Slice"
- input: "Shape"
- input: "Slice_2/begin"
- input: "Slice_2/size"
- attr {
- key: "Index"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Reshape_2"
- op: "Reshape"
- input: "SoftmaxCrossEntropyWithLogits"
- input: "Slice_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "Mean"
- op: "Mean"
- input: "Reshape_2"
- input: "Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "gradients/Fill"
- op: "Fill"
- input: "gradients/Shape"
- input: "gradients/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Reshape/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Reshape"
- op: "Reshape"
- input: "gradients/Fill"
- input: "gradients/Mean_grad/Reshape/shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Shape"
- op: "Shape"
- input: "Reshape_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Tile"
- op: "Tile"
- input: "gradients/Mean_grad/Reshape"
- input: "gradients/Mean_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Shape_1"
- op: "Shape"
- input: "Reshape_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Shape_2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Prod"
- op: "Prod"
- input: "gradients/Mean_grad/Shape_1"
- input: "gradients/Mean_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Const_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Prod_1"
- op: "Prod"
- input: "gradients/Mean_grad/Shape_2"
- input: "gradients/Mean_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Maximum"
- op: "Maximum"
- input: "gradients/Mean_grad/Prod_1"
- input: "gradients/Mean_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/floordiv"
- op: "FloorDiv"
- input: "gradients/Mean_grad/Prod"
- input: "gradients/Mean_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Cast"
- op: "Cast"
- input: "gradients/Mean_grad/floordiv"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/truediv"
- op: "RealDiv"
- input: "gradients/Mean_grad/Tile"
- input: "gradients/Mean_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Reshape_2_grad/Shape"
- op: "Shape"
- input: "SoftmaxCrossEntropyWithLogits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/Reshape_2_grad/Reshape"
- op: "Reshape"
- input: "gradients/Mean_grad/truediv"
- input: "gradients/Reshape_2_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/zeros_like"
- op: "ZerosLike"
- input: "SoftmaxCrossEntropyWithLogits:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/SoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "gradients/SoftmaxCrossEntropyWithLogits_grad/ExpandDims"
- op: "ExpandDims"
- input: "gradients/Reshape_2_grad/Reshape"
- input: "gradients/SoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/SoftmaxCrossEntropyWithLogits_grad/mul"
- op: "Mul"
- input: "gradients/SoftmaxCrossEntropyWithLogits_grad/ExpandDims"
- input: "SoftmaxCrossEntropyWithLogits:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Reshape_grad/Shape"
- op: "Shape"
- input: "add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/Reshape_grad/Reshape"
- op: "Reshape"
- input: "gradients/SoftmaxCrossEntropyWithLogits_grad/mul"
- input: "gradients/Reshape_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Shape"
- op: "Shape"
- input: "MatMul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/add_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/add_grad/Shape"
- input: "gradients/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Sum"
- op: "Sum"
- input: "gradients/Reshape_grad/Reshape"
- input: "gradients/add_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_grad/Reshape"
- op: "Reshape"
- input: "gradients/add_grad/Sum"
- input: "gradients/add_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Sum_1"
- op: "Sum"
- input: "gradients/Reshape_grad/Reshape"
- input: "gradients/add_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/add_grad/Sum_1"
- input: "gradients/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/add_grad/Reshape"
- input: "^gradients/add_grad/Reshape_1"
- }
- node {
- name: "gradients/add_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/add_grad/Reshape"
- input: "^gradients/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/add_grad/Reshape_1"
- input: "^gradients/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/MatMul"
- op: "MatMul"
- input: "gradients/add_grad/tuple/control_dependency"
- input: "Variable/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/MatMul_1"
- op: "MatMul"
- input: "Placeholder"
- input: "gradients/add_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/MatMul_grad/MatMul"
- input: "^gradients/MatMul_grad/MatMul_1"
- }
- node {
- name: "gradients/MatMul_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/MatMul_grad/MatMul"
- input: "^gradients/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/MatMul_grad/MatMul_1"
- input: "^gradients/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "GradientDescent/learning_rate"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.5
- }
- }
- }
- }
- node {
- name: "GradientDescent/update_Variable/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "Variable"
- input: "GradientDescent/learning_rate"
- input: "gradients/MatMul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "GradientDescent/update_Variable_1/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "Variable_1"
- input: "GradientDescent/learning_rate"
- input: "gradients/add_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "GradientDescent"
- op: "NoOp"
- input: "^GradientDescent/update_Variable/ApplyGradientDescent"
- input: "^GradientDescent/update_Variable_1/ApplyGradientDescent"
- }
- node {
- name: "init"
- op: "NoOp"
- input: "^Variable/Assign"
- input: "^Variable_1/Assign"
- }
- node {
- name: "ArgMax/dimension"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "ArgMax"
- op: "ArgMax"
- input: "add"
- input: "ArgMax/dimension"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "output_type"
- value {
- type: DT_INT64
- }
- }
- }
- node {
- name: "ArgMax_1/dimension"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "ArgMax_1"
- op: "ArgMax"
- input: "Placeholder_1"
- input: "ArgMax_1/dimension"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "output_type"
- value {
- type: DT_INT64
- }
- }
- }
- node {
- name: "Equal"
- op: "Equal"
- input: "ArgMax"
- input: "ArgMax_1"
- attr {
- key: "T"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Cast_1"
- op: "Cast"
- input: "Equal"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "Mean_1"
- op: "Mean"
- input: "Cast_1"
- input: "Const_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "save/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "model"
- }
- }
- }
- }
- node {
- name: "save/StringJoin/inputs_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "_temp_6ca9fa5171ed4237a2fbcc27277e2864/part"
- }
- }
- }
- }
- node {
- name: "save/StringJoin"
- op: "StringJoin"
- input: "save/Const"
- input: "save/StringJoin/inputs_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "separator"
- value {
- s: ""
- }
- }
- }
- node {
- name: "save/num_shards"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename/shard"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename"
- op: "ShardedFilename"
- input: "save/StringJoin"
- input: "save/ShardedFilename/shard"
- input: "save/num_shards"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/SaveV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: "Variable"
- string_val: "Variable_1"
- }
- }
- }
- }
- node {
- name: "save/SaveV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/SaveV2"
- op: "SaveV2"
- input: "save/ShardedFilename"
- input: "save/SaveV2/tensor_names"
- input: "save/SaveV2/shape_and_slices"
- input: "Variable"
- input: "Variable_1"
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/control_dependency"
- op: "Identity"
- input: "save/ShardedFilename"
- input: "^save/SaveV2"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@save/ShardedFilename"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints/checkpoint_prefixes"
- op: "Pack"
- input: "save/ShardedFilename"
- input: "^save/control_dependency"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints"
- op: "MergeV2Checkpoints"
- input: "save/MergeV2Checkpoints/checkpoint_prefixes"
- input: "save/Const"
- attr {
- key: "delete_old_dirs"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/Identity"
- op: "Identity"
- input: "save/Const"
- input: "^save/control_dependency"
- input: "^save/MergeV2Checkpoints"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "Variable"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2/tensor_names"
- input: "save/RestoreV2/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign"
- op: "Assign"
- input: "Variable"
- input: "save/RestoreV2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_1/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "Variable_1"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_1/tensor_names"
- input: "save/RestoreV2_1/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_1"
- op: "Assign"
- input: "Variable_1"
- input: "save/RestoreV2_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/restore_shard"
- op: "NoOp"
- input: "^save/Assign"
- input: "^save/Assign_1"
- }
- node {
- name: "save/restore_all"
- op: "NoOp"
- input: "^save/restore_shard"
- }
- versions {
- producer: 24
- }
- }
- saver_def {
- filename_tensor_name: "save/Const:0"
- save_tensor_name: "save/Identity:0"
- restore_op_name: "save/restore_all"
- max_to_keep: 5
- sharded: true
- keep_checkpoint_every_n_hours: 10000.0
- version: V2
- }
- collection_def {
- key: "train_op"
- value {
- node_list {
- value: "GradientDescent"
- }
- }
- }
- collection_def {
- key: "trainable_variables"
- value {
- bytes_list {
- value: "\n\nVariable:0\022\017Variable/Assign\032\017Variable/read:02\007zeros:0"
- value: "\n\014Variable_1:0\022\021Variable_1/Assign\032\021Variable_1/read:02\tzeros_1:0"
- }
- }
- }
- collection_def {
- key: "variables"
- value {
- bytes_list {
- value: "\n\nVariable:0\022\017Variable/Assign\032\017Variable/read:02\007zeros:0"
- value: "\n\014Variable_1:0\022\021Variable_1/Assign\032\021Variable_1/read:02\tzeros_1:0"
- }
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "x"
- value {
- name: "Placeholder:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- outputs {
- key: "y"
- value {
- name: "add:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/mnist_softmax/saved/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/mnist_softmax/saved/variables/variables.data-00000-of-00001
deleted file mode 100644
index 8474aa0a04c..00000000000
--- a/model-integration/src/test/models/tensorflow/mnist_softmax/saved/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/mnist_softmax/saved/variables/variables.index b/model-integration/src/test/models/tensorflow/mnist_softmax/saved/variables/variables.index
deleted file mode 100644
index cfcdac20409..00000000000
--- a/model-integration/src/test/models/tensorflow/mnist_softmax/saved/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/saved_model.pbtxt
deleted file mode 100644
index 8100dfd594d..00000000000
--- a/model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/saved_model.pbtxt
+++ /dev/null
@@ -1,5039 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Add"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "ApplyGradientDescent"
- input_arg {
- name: "var"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "alpha"
- type_attr: "T"
- }
- input_arg {
- name: "delta"
- type_attr: "T"
- }
- output_arg {
- name: "out"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: false
- }
- }
- }
- op {
- name: "ArgMax"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "dimension"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "output_type"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- attr {
- name: "output_type"
- type: "type"
- default_value {
- type: DT_INT64
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Assign"
- input_arg {
- name: "ref"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output_ref"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "validate_shape"
- type: "bool"
- default_value {
- b: true
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: true
- }
- }
- allows_uninitialized_input: true
- }
- op {
- name: "BroadcastGradientArgs"
- input_arg {
- name: "s0"
- type_attr: "T"
- }
- input_arg {
- name: "s1"
- type_attr: "T"
- }
- output_arg {
- name: "r0"
- type_attr: "T"
- }
- output_arg {
- name: "r1"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Cast"
- input_arg {
- name: "x"
- type_attr: "SrcT"
- }
- output_arg {
- name: "y"
- type_attr: "DstT"
- }
- attr {
- name: "SrcT"
- type: "type"
- }
- attr {
- name: "DstT"
- type: "type"
- }
- }
- op {
- name: "ConcatV2"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- input_arg {
- name: "axis"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 2
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "Equal"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_QUINT8
- type: DT_QINT8
- type: DT_QINT32
- type: DT_STRING
- type: DT_BOOL
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "ExpandDims"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "dim"
- type_attr: "Tdim"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tdim"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Fill"
- input_arg {
- name: "dims"
- type: DT_INT32
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "FloorDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Identity"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Maximum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mean"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "MergeV2Checkpoints"
- input_arg {
- name: "checkpoint_prefixes"
- type: DT_STRING
- }
- input_arg {
- name: "destination_prefix"
- type: DT_STRING
- }
- attr {
- name: "delete_old_dirs"
- type: "bool"
- default_value {
- b: true
- }
- }
- is_stateful: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "NoOp"
- }
- op {
- name: "Pack"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "axis"
- type: "int"
- default_value {
- i: 0
- }
- }
- }
- op {
- name: "Placeholder"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- default_value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- op {
- name: "Prod"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RealDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Reshape"
- input_arg {
- name: "tensor"
- type_attr: "T"
- }
- input_arg {
- name: "shape"
- type_attr: "Tshape"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tshape"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RestoreV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- output_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "SaveV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- input_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "Shape"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "out_type"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "out_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "ShardedFilename"
- input_arg {
- name: "basename"
- type: DT_STRING
- }
- input_arg {
- name: "shard"
- type: DT_INT32
- }
- input_arg {
- name: "num_shards"
- type: DT_INT32
- }
- output_arg {
- name: "filename"
- type: DT_STRING
- }
- }
- op {
- name: "Slice"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "begin"
- type_attr: "Index"
- }
- input_arg {
- name: "size"
- type_attr: "Index"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Index"
- type: "type"
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "SoftmaxCrossEntropyWithLogits"
- input_arg {
- name: "features"
- type_attr: "T"
- }
- input_arg {
- name: "labels"
- type_attr: "T"
- }
- output_arg {
- name: "loss"
- type_attr: "T"
- }
- output_arg {
- name: "backprop"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "StringJoin"
- input_arg {
- name: "inputs"
- type: DT_STRING
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type: DT_STRING
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "separator"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Sub"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Sum"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Tile"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "multiples"
- type_attr: "Tmultiples"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tmultiples"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "VariableV2"
- output_arg {
- name: "ref"
- type_attr: "dtype"
- is_ref: true
- }
- attr {
- name: "shape"
- type: "shape"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "container"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "shared_name"
- type: "string"
- default_value {
- s: ""
- }
- }
- is_stateful: true
- }
- op {
- name: "ZerosLike"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- }
- tags: "serve"
- tensorflow_version: "1.4.1"
- tensorflow_git_version: "v1.4.0-19-ga52c8d9b01"
- }
- graph_def {
- node {
- name: "Placeholder"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- node {
- name: "zeros"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "Variable"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "Variable/Assign"
- op: "Assign"
- input: "Variable"
- input: "zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "Variable/read"
- op: "Identity"
- input: "Variable"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "zeros_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 10
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "Variable_1"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "Variable_1/Assign"
- op: "Assign"
- input: "Variable_1"
- input: "zeros_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "Variable_1/read"
- op: "Identity"
- input: "Variable_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "MatMul"
- op: "MatMul"
- input: "Placeholder"
- input: "Variable/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "add"
- op: "Add"
- input: "MatMul"
- input: "Variable_1/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "Placeholder_1"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- node {
- name: "Rank"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "Shape"
- op: "Shape"
- input: "add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "Rank_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "Shape_1"
- op: "Shape"
- input: "add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "Sub/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "Sub"
- op: "Sub"
- input: "Rank_1"
- input: "Sub/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Slice/begin"
- op: "Pack"
- input: "Sub"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "Slice/size"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "Slice"
- op: "Slice"
- input: "Shape_1"
- input: "Slice/begin"
- input: "Slice/size"
- attr {
- key: "Index"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "concat/values_0"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "concat/axis"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "concat"
- op: "ConcatV2"
- input: "concat/values_0"
- input: "Slice"
- input: "concat/axis"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "Reshape"
- op: "Reshape"
- input: "add"
- input: "concat"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Rank_2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "Shape_2"
- op: "Shape"
- input: "Placeholder_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "Sub_1/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "Sub_1"
- op: "Sub"
- input: "Rank_2"
- input: "Sub_1/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Slice_1/begin"
- op: "Pack"
- input: "Sub_1"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "Slice_1/size"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "Slice_1"
- op: "Slice"
- input: "Shape_2"
- input: "Slice_1/begin"
- input: "Slice_1/size"
- attr {
- key: "Index"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "concat_1/values_0"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "concat_1/axis"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "concat_1"
- op: "ConcatV2"
- input: "concat_1/values_0"
- input: "Slice_1"
- input: "concat_1/axis"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "Reshape_1"
- op: "Reshape"
- input: "Placeholder_1"
- input: "concat_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "SoftmaxCrossEntropyWithLogits"
- op: "SoftmaxCrossEntropyWithLogits"
- input: "Reshape"
- input: "Reshape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Sub_2/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "Sub_2"
- op: "Sub"
- input: "Rank"
- input: "Sub_2/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Slice_2/begin"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "Slice_2/size"
- op: "Pack"
- input: "Sub_2"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "Slice_2"
- op: "Slice"
- input: "Shape"
- input: "Slice_2/begin"
- input: "Slice_2/size"
- attr {
- key: "Index"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Reshape_2"
- op: "Reshape"
- input: "SoftmaxCrossEntropyWithLogits"
- input: "Slice_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "Mean"
- op: "Mean"
- input: "Reshape_2"
- input: "Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "gradients/Fill"
- op: "Fill"
- input: "gradients/Shape"
- input: "gradients/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Reshape/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Reshape"
- op: "Reshape"
- input: "gradients/Fill"
- input: "gradients/Mean_grad/Reshape/shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Shape"
- op: "Shape"
- input: "Reshape_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Tile"
- op: "Tile"
- input: "gradients/Mean_grad/Reshape"
- input: "gradients/Mean_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Shape_1"
- op: "Shape"
- input: "Reshape_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Shape_2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Prod"
- op: "Prod"
- input: "gradients/Mean_grad/Shape_1"
- input: "gradients/Mean_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Const_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Prod_1"
- op: "Prod"
- input: "gradients/Mean_grad/Shape_2"
- input: "gradients/Mean_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Maximum"
- op: "Maximum"
- input: "gradients/Mean_grad/Prod_1"
- input: "gradients/Mean_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/floordiv"
- op: "FloorDiv"
- input: "gradients/Mean_grad/Prod"
- input: "gradients/Mean_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Cast"
- op: "Cast"
- input: "gradients/Mean_grad/floordiv"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/truediv"
- op: "RealDiv"
- input: "gradients/Mean_grad/Tile"
- input: "gradients/Mean_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Reshape_2_grad/Shape"
- op: "Shape"
- input: "SoftmaxCrossEntropyWithLogits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/Reshape_2_grad/Reshape"
- op: "Reshape"
- input: "gradients/Mean_grad/truediv"
- input: "gradients/Reshape_2_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/zeros_like"
- op: "ZerosLike"
- input: "SoftmaxCrossEntropyWithLogits:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/SoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "gradients/SoftmaxCrossEntropyWithLogits_grad/ExpandDims"
- op: "ExpandDims"
- input: "gradients/Reshape_2_grad/Reshape"
- input: "gradients/SoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/SoftmaxCrossEntropyWithLogits_grad/mul"
- op: "Mul"
- input: "gradients/SoftmaxCrossEntropyWithLogits_grad/ExpandDims"
- input: "SoftmaxCrossEntropyWithLogits:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Reshape_grad/Shape"
- op: "Shape"
- input: "add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/Reshape_grad/Reshape"
- op: "Reshape"
- input: "gradients/SoftmaxCrossEntropyWithLogits_grad/mul"
- input: "gradients/Reshape_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Shape"
- op: "Shape"
- input: "MatMul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/add_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/add_grad/Shape"
- input: "gradients/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Sum"
- op: "Sum"
- input: "gradients/Reshape_grad/Reshape"
- input: "gradients/add_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_grad/Reshape"
- op: "Reshape"
- input: "gradients/add_grad/Sum"
- input: "gradients/add_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Sum_1"
- op: "Sum"
- input: "gradients/Reshape_grad/Reshape"
- input: "gradients/add_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/add_grad/Sum_1"
- input: "gradients/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/add_grad/Reshape"
- input: "^gradients/add_grad/Reshape_1"
- }
- node {
- name: "gradients/add_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/add_grad/Reshape"
- input: "^gradients/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/add_grad/Reshape_1"
- input: "^gradients/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/MatMul"
- op: "MatMul"
- input: "gradients/add_grad/tuple/control_dependency"
- input: "Variable/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/MatMul_1"
- op: "MatMul"
- input: "Placeholder"
- input: "gradients/add_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/MatMul_grad/MatMul"
- input: "^gradients/MatMul_grad/MatMul_1"
- }
- node {
- name: "gradients/MatMul_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/MatMul_grad/MatMul"
- input: "^gradients/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/MatMul_grad/MatMul_1"
- input: "^gradients/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "GradientDescent/learning_rate"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.5
- }
- }
- }
- }
- node {
- name: "GradientDescent/update_Variable/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "Variable"
- input: "GradientDescent/learning_rate"
- input: "gradients/MatMul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "GradientDescent/update_Variable_1/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "Variable_1"
- input: "GradientDescent/learning_rate"
- input: "gradients/add_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "GradientDescent"
- op: "NoOp"
- input: "^GradientDescent/update_Variable/ApplyGradientDescent"
- input: "^GradientDescent/update_Variable_1/ApplyGradientDescent"
- }
- node {
- name: "init"
- op: "NoOp"
- input: "^Variable/Assign"
- input: "^Variable_1/Assign"
- }
- node {
- name: "ArgMax/dimension"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "ArgMax"
- op: "ArgMax"
- input: "add"
- input: "ArgMax/dimension"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "output_type"
- value {
- type: DT_INT64
- }
- }
- }
- node {
- name: "ArgMax_1/dimension"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "ArgMax_1"
- op: "ArgMax"
- input: "Placeholder_1"
- input: "ArgMax_1/dimension"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "output_type"
- value {
- type: DT_INT64
- }
- }
- }
- node {
- name: "Equal"
- op: "Equal"
- input: "ArgMax"
- input: "ArgMax_1"
- attr {
- key: "T"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Cast_1"
- op: "Cast"
- input: "Equal"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "Mean_1"
- op: "Mean"
- input: "Cast_1"
- input: "Const_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "save/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "model"
- }
- }
- }
- }
- node {
- name: "save/StringJoin/inputs_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "_temp_6ca9fa5171ed4237a2fbcc27277e2864/part"
- }
- }
- }
- }
- node {
- name: "save/StringJoin"
- op: "StringJoin"
- input: "save/Const"
- input: "save/StringJoin/inputs_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "separator"
- value {
- s: ""
- }
- }
- }
- node {
- name: "save/num_shards"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename/shard"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename"
- op: "ShardedFilename"
- input: "save/StringJoin"
- input: "save/ShardedFilename/shard"
- input: "save/num_shards"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/SaveV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: "Variable"
- string_val: "Variable_1"
- }
- }
- }
- }
- node {
- name: "save/SaveV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/SaveV2"
- op: "SaveV2"
- input: "save/ShardedFilename"
- input: "save/SaveV2/tensor_names"
- input: "save/SaveV2/shape_and_slices"
- input: "Variable"
- input: "Variable_1"
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/control_dependency"
- op: "Identity"
- input: "save/ShardedFilename"
- input: "^save/SaveV2"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@save/ShardedFilename"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints/checkpoint_prefixes"
- op: "Pack"
- input: "save/ShardedFilename"
- input: "^save/control_dependency"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints"
- op: "MergeV2Checkpoints"
- input: "save/MergeV2Checkpoints/checkpoint_prefixes"
- input: "save/Const"
- attr {
- key: "delete_old_dirs"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/Identity"
- op: "Identity"
- input: "save/Const"
- input: "^save/control_dependency"
- input: "^save/MergeV2Checkpoints"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "Variable"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2/tensor_names"
- input: "save/RestoreV2/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign"
- op: "Assign"
- input: "Variable"
- input: "save/RestoreV2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_1/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "Variable_1"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_1/tensor_names"
- input: "save/RestoreV2_1/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_1"
- op: "Assign"
- input: "Variable_1"
- input: "save/RestoreV2_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/restore_shard"
- op: "NoOp"
- input: "^save/Assign"
- input: "^save/Assign_1"
- }
- node {
- name: "save/restore_all"
- op: "NoOp"
- input: "^save/restore_shard"
- }
- versions {
- producer: 24
- }
- }
- saver_def {
- filename_tensor_name: "save/Const:0"
- save_tensor_name: "save/Identity:0"
- restore_op_name: "save/restore_all"
- max_to_keep: 5
- sharded: true
- keep_checkpoint_every_n_hours: 10000.0
- version: V2
- }
- collection_def {
- key: "train_op"
- value {
- node_list {
- value: "GradientDescent"
- }
- }
- }
- collection_def {
- key: "trainable_variables"
- value {
- bytes_list {
- value: "\n\nVariable:0\022\017Variable/Assign\032\017Variable/read:02\007zeros:0"
- value: "\n\014Variable_1:0\022\021Variable_1/Assign\032\021Variable_1/read:02\tzeros_1:0"
- }
- }
- }
- collection_def {
- key: "variables"
- value {
- bytes_list {
- value: "\n\nVariable:0\022\017Variable/Assign\032\017Variable/read:02\007zeros:0"
- value: "\n\014Variable_1:0\022\021Variable_1/Assign\032\021Variable_1/read:02\tzeros_1:0"
- }
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "x"
- value {
- name: "Placeholder:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- outputs {
- key: "y"
- value {
- name: "add:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/variables/variables.data-00000-of-00001
deleted file mode 100644
index 8474aa0a04c..00000000000
--- a/model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/variables/variables.index b/model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/variables/variables.index
deleted file mode 100644
index cfcdac20409..00000000000
--- a/model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/regression/test1/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/regression/test1/saved_model.pbtxt
deleted file mode 100644
index 678fced00d2..00000000000
--- a/model-integration/src/test/models/tensorflow/regression/test1/saved_model.pbtxt
+++ /dev/null
@@ -1,6172 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Add"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "AddN"
- input_arg {
- name: "inputs"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "sum"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- type: DT_VARIANT
- }
- }
- }
- is_aggregate: true
- is_commutative: true
- }
- op {
- name: "ApplyGradientDescent"
- input_arg {
- name: "var"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "alpha"
- type_attr: "T"
- }
- input_arg {
- name: "delta"
- type_attr: "T"
- }
- output_arg {
- name: "out"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: false
- }
- }
- }
- op {
- name: "Assign"
- input_arg {
- name: "ref"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output_ref"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "validate_shape"
- type: "bool"
- default_value {
- b: true
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: true
- }
- }
- allows_uninitialized_input: true
- }
- op {
- name: "BroadcastGradientArgs"
- input_arg {
- name: "s0"
- type_attr: "T"
- }
- input_arg {
- name: "s1"
- type_attr: "T"
- }
- output_arg {
- name: "r0"
- type_attr: "T"
- }
- output_arg {
- name: "r1"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Cast"
- input_arg {
- name: "x"
- type_attr: "SrcT"
- }
- output_arg {
- name: "y"
- type_attr: "DstT"
- }
- attr {
- name: "SrcT"
- type: "type"
- }
- attr {
- name: "DstT"
- type: "type"
- }
- attr {
- name: "Truncate"
- type: "bool"
- default_value {
- b: false
- }
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "Exp"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Fill"
- input_arg {
- name: "dims"
- type_attr: "index_type"
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "index_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "FloorDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "GreaterEqual"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_INT64
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- }
- op {
- name: "Identity"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "L2Loss"
- input_arg {
- name: "t"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_BFLOAT16
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "Log1p"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Maximum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mean"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "MergeV2Checkpoints"
- input_arg {
- name: "checkpoint_prefixes"
- type: DT_STRING
- }
- input_arg {
- name: "destination_prefix"
- type: DT_STRING
- }
- attr {
- name: "delete_old_dirs"
- type: "bool"
- default_value {
- b: true
- }
- }
- is_stateful: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Neg"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "NoOp"
- }
- op {
- name: "Pack"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "axis"
- type: "int"
- default_value {
- i: 0
- }
- }
- }
- op {
- name: "Placeholder"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- default_value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- op {
- name: "PlaceholderWithDefault"
- input_arg {
- name: "input"
- type_attr: "dtype"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- }
- }
- op {
- name: "Prod"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RealDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Reciprocal"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Reshape"
- input_arg {
- name: "tensor"
- type_attr: "T"
- }
- input_arg {
- name: "shape"
- type_attr: "Tshape"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tshape"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RestoreV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- output_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "SaveV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- input_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "Select"
- input_arg {
- name: "condition"
- type: DT_BOOL
- }
- input_arg {
- name: "t"
- type_attr: "T"
- }
- input_arg {
- name: "e"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "Shape"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "out_type"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "out_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "ShardedFilename"
- input_arg {
- name: "basename"
- type: DT_STRING
- }
- input_arg {
- name: "shard"
- type: DT_INT32
- }
- input_arg {
- name: "num_shards"
- type: DT_INT32
- }
- output_arg {
- name: "filename"
- type: DT_STRING
- }
- }
- op {
- name: "Sigmoid"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "StringJoin"
- input_arg {
- name: "inputs"
- type: DT_STRING
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type: DT_STRING
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "separator"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Sub"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Sum"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Tile"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "multiples"
- type_attr: "Tmultiples"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tmultiples"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "TruncatedNormal"
- input_arg {
- name: "shape"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "seed"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "seed2"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "dtype"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_BFLOAT16
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_stateful: true
- }
- op {
- name: "VariableV2"
- output_arg {
- name: "ref"
- type_attr: "dtype"
- is_ref: true
- }
- attr {
- name: "shape"
- type: "shape"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "container"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "shared_name"
- type: "string"
- default_value {
- s: ""
- }
- }
- is_stateful: true
- }
- op {
- name: "ZerosLike"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- }
- tags: "serve"
- tensorflow_version: "1.13.1"
- tensorflow_git_version: "b\'unknown\'"
- }
- graph_def {
- node {
- name: "input"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1536
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1536
- }
- }
- }
- }
- }
- node {
- name: "Placeholder"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- node {
- name: "truncated_normal/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\000\006\000\000\016\000\000\000"
- }
- }
- }
- }
- node {
- name: "truncated_normal/mean"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "truncated_normal/stddev"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "truncated_normal/TruncatedNormal"
- op: "TruncatedNormal"
- input: "truncated_normal/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "truncated_normal/mul"
- op: "Mul"
- input: "truncated_normal/TruncatedNormal"
- input: "truncated_normal/stddev"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "truncated_normal"
- op: "Add"
- input: "truncated_normal/mul"
- input: "truncated_normal/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "Variable"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "Variable/Assign"
- op: "Assign"
- input: "Variable"
- input: "truncated_normal"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "Variable/read"
- op: "Identity"
- input: "Variable"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "zeros"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 14
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "Variable_1"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 14
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "Variable_1/Assign"
- op: "Assign"
- input: "Variable_1"
- input: "zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "Variable_1/read"
- op: "Identity"
- input: "Variable_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "MatMul"
- op: "MatMul"
- input: "input"
- input: "Variable/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "add"
- op: "Add"
- input: "MatMul"
- input: "Variable_1/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "logits"
- op: "Identity"
- input: "add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "logistic_loss/zeros_like"
- op: "ZerosLike"
- input: "logits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "logistic_loss/GreaterEqual"
- op: "GreaterEqual"
- input: "logits"
- input: "logistic_loss/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "logistic_loss/Select"
- op: "Select"
- input: "logistic_loss/GreaterEqual"
- input: "logits"
- input: "logistic_loss/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "logistic_loss/Neg"
- op: "Neg"
- input: "logits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "logistic_loss/Select_1"
- op: "Select"
- input: "logistic_loss/GreaterEqual"
- input: "logistic_loss/Neg"
- input: "logits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "logistic_loss/mul"
- op: "Mul"
- input: "logits"
- input: "Placeholder"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "logistic_loss/sub"
- op: "Sub"
- input: "logistic_loss/Select"
- input: "logistic_loss/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "logistic_loss/Exp"
- op: "Exp"
- input: "logistic_loss/Select_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "logistic_loss/Log1p"
- op: "Log1p"
- input: "logistic_loss/Exp"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "logistic_loss"
- op: "Add"
- input: "logistic_loss/sub"
- input: "logistic_loss/Log1p"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\000\000\000\000\001\000\000\000"
- }
- }
- }
- }
- node {
- name: "Mean"
- op: "Mean"
- input: "logistic_loss"
- input: "Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "L2Loss"
- op: "L2Loss"
- input: "Variable/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "mul/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 9.999999747378752e-05
- }
- }
- }
- }
- node {
- name: "mul"
- op: "Mul"
- input: "mul/x"
- input: "L2Loss"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "add_1"
- op: "Add"
- input: "Mean"
- input: "mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "Mean_1"
- op: "Mean"
- input: "add_1"
- input: "Const_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/grad_ys_0"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "gradients/Fill"
- op: "Fill"
- input: "gradients/Shape"
- input: "gradients/grad_ys_0"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "index_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/Mean_1_grad/Reshape/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_1_grad/Reshape"
- op: "Reshape"
- input: "gradients/Fill"
- input: "gradients/Mean_1_grad/Reshape/shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_1_grad/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_1_grad/Tile"
- op: "Tile"
- input: "gradients/Mean_1_grad/Reshape"
- input: "gradients/Mean_1_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_1_grad/Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "gradients/Mean_1_grad/truediv"
- op: "RealDiv"
- input: "gradients/Mean_1_grad/Tile"
- input: "gradients/Mean_1_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/Mean_1_grad/truediv"
- }
- node {
- name: "gradients/add_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/Mean_1_grad/truediv"
- input: "^gradients/add_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_1_grad/truediv"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/Mean_1_grad/truediv"
- input: "^gradients/add_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_1_grad/truediv"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Reshape/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\001\000\000\000"
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Reshape"
- op: "Reshape"
- input: "gradients/add_1_grad/tuple/control_dependency"
- input: "gradients/Mean_grad/Reshape/shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Shape"
- op: "Shape"
- input: "logistic_loss"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Tile"
- op: "Tile"
- input: "gradients/Mean_grad/Reshape"
- input: "gradients/Mean_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Shape_1"
- op: "Shape"
- input: "logistic_loss"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Shape_2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Prod"
- op: "Prod"
- input: "gradients/Mean_grad/Shape_1"
- input: "gradients/Mean_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Prod_1"
- op: "Prod"
- input: "gradients/Mean_grad/Shape_2"
- input: "gradients/Mean_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Maximum"
- op: "Maximum"
- input: "gradients/Mean_grad/Prod_1"
- input: "gradients/Mean_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/floordiv"
- op: "FloorDiv"
- input: "gradients/Mean_grad/Prod"
- input: "gradients/Mean_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Cast"
- op: "Cast"
- input: "gradients/Mean_grad/floordiv"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/truediv"
- op: "RealDiv"
- input: "gradients/Mean_grad/Tile"
- input: "gradients/Mean_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_grad/Mul"
- op: "Mul"
- input: "gradients/add_1_grad/tuple/control_dependency_1"
- input: "L2Loss"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_grad/Mul_1"
- op: "Mul"
- input: "gradients/add_1_grad/tuple/control_dependency_1"
- input: "mul/x"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/mul_grad/Mul"
- input: "^gradients/mul_grad/Mul_1"
- }
- node {
- name: "gradients/mul_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/mul_grad/Mul"
- input: "^gradients/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/mul_grad/Mul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/mul_grad/Mul_1"
- input: "^gradients/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/mul_grad/Mul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss_grad/Shape"
- op: "Shape"
- input: "logistic_loss/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/logistic_loss_grad/Shape_1"
- op: "Shape"
- input: "logistic_loss/Log1p"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/logistic_loss_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/logistic_loss_grad/Shape"
- input: "gradients/logistic_loss_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss_grad/Sum"
- op: "Sum"
- input: "gradients/Mean_grad/truediv"
- input: "gradients/logistic_loss_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/logistic_loss_grad/Reshape"
- op: "Reshape"
- input: "gradients/logistic_loss_grad/Sum"
- input: "gradients/logistic_loss_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss_grad/Sum_1"
- op: "Sum"
- input: "gradients/Mean_grad/truediv"
- input: "gradients/logistic_loss_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/logistic_loss_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/logistic_loss_grad/Sum_1"
- input: "gradients/logistic_loss_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/logistic_loss_grad/Reshape"
- input: "^gradients/logistic_loss_grad/Reshape_1"
- }
- node {
- name: "gradients/logistic_loss_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/logistic_loss_grad/Reshape"
- input: "^gradients/logistic_loss_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/logistic_loss_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/logistic_loss_grad/Reshape_1"
- input: "^gradients/logistic_loss_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/logistic_loss_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/L2Loss_grad/mul"
- op: "Mul"
- input: "Variable/read"
- input: "gradients/mul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/sub_grad/Shape"
- op: "Shape"
- input: "logistic_loss/Select"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/logistic_loss/sub_grad/Shape_1"
- op: "Shape"
- input: "logistic_loss/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/logistic_loss/sub_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/logistic_loss/sub_grad/Shape"
- input: "gradients/logistic_loss/sub_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/sub_grad/Sum"
- op: "Sum"
- input: "gradients/logistic_loss_grad/tuple/control_dependency"
- input: "gradients/logistic_loss/sub_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/logistic_loss/sub_grad/Reshape"
- op: "Reshape"
- input: "gradients/logistic_loss/sub_grad/Sum"
- input: "gradients/logistic_loss/sub_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/sub_grad/Sum_1"
- op: "Sum"
- input: "gradients/logistic_loss_grad/tuple/control_dependency"
- input: "gradients/logistic_loss/sub_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/logistic_loss/sub_grad/Neg"
- op: "Neg"
- input: "gradients/logistic_loss/sub_grad/Sum_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/sub_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/logistic_loss/sub_grad/Neg"
- input: "gradients/logistic_loss/sub_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/sub_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/logistic_loss/sub_grad/Reshape"
- input: "^gradients/logistic_loss/sub_grad/Reshape_1"
- }
- node {
- name: "gradients/logistic_loss/sub_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/logistic_loss/sub_grad/Reshape"
- input: "^gradients/logistic_loss/sub_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/logistic_loss/sub_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/sub_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/logistic_loss/sub_grad/Reshape_1"
- input: "^gradients/logistic_loss/sub_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/logistic_loss/sub_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Log1p_grad/add/x"
- op: "Const"
- input: "^gradients/logistic_loss_grad/tuple/control_dependency_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Log1p_grad/add"
- op: "Add"
- input: "gradients/logistic_loss/Log1p_grad/add/x"
- input: "logistic_loss/Exp"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Log1p_grad/Reciprocal"
- op: "Reciprocal"
- input: "gradients/logistic_loss/Log1p_grad/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Log1p_grad/mul"
- op: "Mul"
- input: "gradients/logistic_loss_grad/tuple/control_dependency_1"
- input: "gradients/logistic_loss/Log1p_grad/Reciprocal"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Select_grad/zeros_like"
- op: "ZerosLike"
- input: "logits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Select_grad/Select"
- op: "Select"
- input: "logistic_loss/GreaterEqual"
- input: "gradients/logistic_loss/sub_grad/tuple/control_dependency"
- input: "gradients/logistic_loss/Select_grad/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Select_grad/Select_1"
- op: "Select"
- input: "logistic_loss/GreaterEqual"
- input: "gradients/logistic_loss/Select_grad/zeros_like"
- input: "gradients/logistic_loss/sub_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Select_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/logistic_loss/Select_grad/Select"
- input: "^gradients/logistic_loss/Select_grad/Select_1"
- }
- node {
- name: "gradients/logistic_loss/Select_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/logistic_loss/Select_grad/Select"
- input: "^gradients/logistic_loss/Select_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/logistic_loss/Select_grad/Select"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Select_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/logistic_loss/Select_grad/Select_1"
- input: "^gradients/logistic_loss/Select_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/logistic_loss/Select_grad/Select_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/mul_grad/Shape"
- op: "Shape"
- input: "logits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/logistic_loss/mul_grad/Shape_1"
- op: "Shape"
- input: "Placeholder"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/logistic_loss/mul_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/logistic_loss/mul_grad/Shape"
- input: "gradients/logistic_loss/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/mul_grad/Mul"
- op: "Mul"
- input: "gradients/logistic_loss/sub_grad/tuple/control_dependency_1"
- input: "Placeholder"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/mul_grad/Sum"
- op: "Sum"
- input: "gradients/logistic_loss/mul_grad/Mul"
- input: "gradients/logistic_loss/mul_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/logistic_loss/mul_grad/Reshape"
- op: "Reshape"
- input: "gradients/logistic_loss/mul_grad/Sum"
- input: "gradients/logistic_loss/mul_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/mul_grad/Mul_1"
- op: "Mul"
- input: "logits"
- input: "gradients/logistic_loss/sub_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/mul_grad/Sum_1"
- op: "Sum"
- input: "gradients/logistic_loss/mul_grad/Mul_1"
- input: "gradients/logistic_loss/mul_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/logistic_loss/mul_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/logistic_loss/mul_grad/Sum_1"
- input: "gradients/logistic_loss/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/mul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/logistic_loss/mul_grad/Reshape"
- input: "^gradients/logistic_loss/mul_grad/Reshape_1"
- }
- node {
- name: "gradients/logistic_loss/mul_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/logistic_loss/mul_grad/Reshape"
- input: "^gradients/logistic_loss/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/logistic_loss/mul_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/mul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/logistic_loss/mul_grad/Reshape_1"
- input: "^gradients/logistic_loss/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/logistic_loss/mul_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Exp_grad/mul"
- op: "Mul"
- input: "gradients/logistic_loss/Log1p_grad/mul"
- input: "logistic_loss/Exp"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Select_1_grad/zeros_like"
- op: "ZerosLike"
- input: "logistic_loss/Neg"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Select_1_grad/Select"
- op: "Select"
- input: "logistic_loss/GreaterEqual"
- input: "gradients/logistic_loss/Exp_grad/mul"
- input: "gradients/logistic_loss/Select_1_grad/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Select_1_grad/Select_1"
- op: "Select"
- input: "logistic_loss/GreaterEqual"
- input: "gradients/logistic_loss/Select_1_grad/zeros_like"
- input: "gradients/logistic_loss/Exp_grad/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Select_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/logistic_loss/Select_1_grad/Select"
- input: "^gradients/logistic_loss/Select_1_grad/Select_1"
- }
- node {
- name: "gradients/logistic_loss/Select_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/logistic_loss/Select_1_grad/Select"
- input: "^gradients/logistic_loss/Select_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/logistic_loss/Select_1_grad/Select"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Select_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/logistic_loss/Select_1_grad/Select_1"
- input: "^gradients/logistic_loss/Select_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/logistic_loss/Select_1_grad/Select_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Neg_grad/Neg"
- op: "Neg"
- input: "gradients/logistic_loss/Select_1_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/AddN"
- op: "AddN"
- input: "gradients/logistic_loss/Select_grad/tuple/control_dependency"
- input: "gradients/logistic_loss/mul_grad/tuple/control_dependency"
- input: "gradients/logistic_loss/Select_1_grad/tuple/control_dependency_1"
- input: "gradients/logistic_loss/Neg_grad/Neg"
- attr {
- key: "N"
- value {
- i: 4
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/logistic_loss/Select_grad/Select"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Shape"
- op: "Shape"
- input: "MatMul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/add_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 14
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/add_grad/Shape"
- input: "gradients/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Sum"
- op: "Sum"
- input: "gradients/AddN"
- input: "gradients/add_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_grad/Reshape"
- op: "Reshape"
- input: "gradients/add_grad/Sum"
- input: "gradients/add_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Sum_1"
- op: "Sum"
- input: "gradients/AddN"
- input: "gradients/add_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/add_grad/Sum_1"
- input: "gradients/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/add_grad/Reshape"
- input: "^gradients/add_grad/Reshape_1"
- }
- node {
- name: "gradients/add_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/add_grad/Reshape"
- input: "^gradients/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/add_grad/Reshape_1"
- input: "^gradients/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/MatMul"
- op: "MatMul"
- input: "gradients/add_grad/tuple/control_dependency"
- input: "Variable/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1536
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/MatMul_1"
- op: "MatMul"
- input: "input"
- input: "gradients/add_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/MatMul_grad/MatMul"
- input: "^gradients/MatMul_grad/MatMul_1"
- }
- node {
- name: "gradients/MatMul_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/MatMul_grad/MatMul"
- input: "^gradients/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1536
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/MatMul_grad/MatMul_1"
- input: "^gradients/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/AddN_1"
- op: "AddN"
- input: "gradients/L2Loss_grad/mul"
- input: "gradients/MatMul_grad/tuple/control_dependency_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/L2Loss_grad/mul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "GradientDescent/learning_rate"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.5
- }
- }
- }
- }
- node {
- name: "GradientDescent/update_Variable/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "Variable"
- input: "GradientDescent/learning_rate"
- input: "gradients/AddN_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "GradientDescent/update_Variable_1/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "Variable_1"
- input: "GradientDescent/learning_rate"
- input: "gradients/add_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "GradientDescent"
- op: "NoOp"
- input: "^GradientDescent/update_Variable/ApplyGradientDescent"
- input: "^GradientDescent/update_Variable_1/ApplyGradientDescent"
- }
- node {
- name: "Sigmoid"
- op: "Sigmoid"
- input: "logits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "init"
- op: "NoOp"
- input: "^Variable/Assign"
- input: "^Variable_1/Assign"
- }
- node {
- name: "save/filename/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "model"
- }
- }
- }
- }
- node {
- name: "save/filename"
- op: "PlaceholderWithDefault"
- input: "save/filename/input"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "save/Const"
- op: "PlaceholderWithDefault"
- input: "save/filename"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "save/StringJoin/inputs_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "_temp_171a1c01c56c46198d395a032e5b295b/part"
- }
- }
- }
- }
- node {
- name: "save/StringJoin"
- op: "StringJoin"
- input: "save/Const"
- input: "save/StringJoin/inputs_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "separator"
- value {
- s: ""
- }
- }
- }
- node {
- name: "save/num_shards"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename/shard"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename"
- op: "ShardedFilename"
- input: "save/StringJoin"
- input: "save/ShardedFilename/shard"
- input: "save/num_shards"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/SaveV2/tensor_names"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: "Variable"
- string_val: "Variable_1"
- }
- }
- }
- }
- node {
- name: "save/SaveV2/shape_and_slices"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/SaveV2"
- op: "SaveV2"
- input: "save/ShardedFilename"
- input: "save/SaveV2/tensor_names"
- input: "save/SaveV2/shape_and_slices"
- input: "Variable"
- input: "Variable_1"
- device: "/device:CPU:0"
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/control_dependency"
- op: "Identity"
- input: "save/ShardedFilename"
- input: "^save/SaveV2"
- device: "/device:CPU:0"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@save/ShardedFilename"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints/checkpoint_prefixes"
- op: "Pack"
- input: "save/ShardedFilename"
- input: "^save/control_dependency"
- device: "/device:CPU:0"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints"
- op: "MergeV2Checkpoints"
- input: "save/MergeV2Checkpoints/checkpoint_prefixes"
- input: "save/Const"
- device: "/device:CPU:0"
- attr {
- key: "delete_old_dirs"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/Identity"
- op: "Identity"
- input: "save/Const"
- input: "^save/MergeV2Checkpoints"
- input: "^save/control_dependency"
- device: "/device:CPU:0"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/tensor_names"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: "Variable"
- string_val: "Variable_1"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/shape_and_slices"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2/tensor_names"
- input: "save/RestoreV2/shape_and_slices"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign"
- op: "Assign"
- input: "Variable"
- input: "save/RestoreV2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/Assign_1"
- op: "Assign"
- input: "Variable_1"
- input: "save/RestoreV2:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/restore_shard"
- op: "NoOp"
- input: "^save/Assign"
- input: "^save/Assign_1"
- }
- node {
- name: "save/restore_all"
- op: "NoOp"
- input: "^save/restore_shard"
- }
- versions {
- producer: 27
- }
- }
- saver_def {
- filename_tensor_name: "save/Const:0"
- save_tensor_name: "save/Identity:0"
- restore_op_name: "save/restore_all"
- max_to_keep: 5
- sharded: true
- keep_checkpoint_every_n_hours: 10000.0
- version: V2
- }
- collection_def {
- key: "train_op"
- value {
- node_list {
- value: "GradientDescent"
- }
- }
- }
- collection_def {
- key: "trainable_variables"
- value {
- bytes_list {
- value: "\n\nVariable:0\022\017Variable/Assign\032\017Variable/read:02\022truncated_normal:08\001"
- value: "\n\014Variable_1:0\022\021Variable_1/Assign\032\021Variable_1/read:02\007zeros:08\001"
- }
- }
- }
- collection_def {
- key: "variables"
- value {
- bytes_list {
- value: "\n\nVariable:0\022\017Variable/Assign\032\017Variable/read:02\022truncated_normal:08\001"
- value: "\n\014Variable_1:0\022\021Variable_1/Assign\032\021Variable_1/read:02\007zeros:08\001"
- }
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "input"
- value {
- name: "input:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 1536
- }
- }
- }
- }
- outputs {
- key: "output"
- value {
- name: "Sigmoid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/regression/test1/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/regression/test1/variables/variables.data-00000-of-00001
deleted file mode 100644
index 083abe4a917..00000000000
--- a/model-integration/src/test/models/tensorflow/regression/test1/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/regression/test1/variables/variables.index b/model-integration/src/test/models/tensorflow/regression/test1/variables/variables.index
deleted file mode 100644
index 43ceede272c..00000000000
--- a/model-integration/src/test/models/tensorflow/regression/test1/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/regression/test2/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/regression/test2/saved_model.pbtxt
deleted file mode 100644
index 112f9a28cb7..00000000000
--- a/model-integration/src/test/models/tensorflow/regression/test2/saved_model.pbtxt
+++ /dev/null
@@ -1,389 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Add"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "Identity"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Placeholder"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- default_value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- tags: "serve"
- tensorflow_version: "1.13.1"
- tensorflow_git_version: "b\'unknown\'"
- }
- graph_def {
- node {
- name: "input"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1536
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_DOUBLE
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1536
- }
- }
- }
- }
- }
- node {
- name: "Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_DOUBLE
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_DOUBLE
- tensor_shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- tensor_content: "\306C\326o\340\326\223?\020\277\341\231\265\306\270?\316P\000\311KI\207\277\220\227\253 \371\377\301\277v\017\032|E<\276\277\341Z\0000\306X\235\277\022\234<\027\361~p?D\223\252\246^~\305?;\245\032\230\276\206\301\277\332\273f\313o\255\275\277\225\371\337T\205q\257?\344l\364\354\365iM?\333p\307\334E\010\304\277Aj6X\256?\275\277\236\217V\305\021|\300??\022\307j\253\030\301?n)\022\372Kf\246?\023\010\201\026\212\243\204\277\244\017\025\200I*\243\277\332k\317\331\036\003\267?\300\334pk\254A\301\277\235y\006\310jR\300?\001 \331\267\276\315\220?\350Y\221w\262K\200\277\024\256_\t\361\311\301?\326H\352h\226\203\260?\0237\325z\351\353\266\277.W\003\312\016g\220\277\327_\265\225\226\353\243\277N\006\376V\262\260\304?^Z\265\276\206\211\253\277\234/\315\345qM\300\277!\r\332-\263\364\221?0x\361O\221\020\261\277\343S\030|\376&\211?\272v\000{\002S\317\277\243\026:\022_\247\273?\3632&\364\360\210\224?\r\027\212\022x\224\246?((UB\235\331\223\277y\374\253\333\277\226\221?\003\004\363(\2270K?\303\370\363\270\302u\263\277&L^.\260\201\261\277\275,\250\263\003\261\251\277i\271I\261LX\261?*\347\232\245\205F\307?,\273}\203\033\251\214\277\2743\371l\037\324\272?\240\022\305\372l\252\247?\366 \300}\247a\312?\2277\227\332\340\004\247?E\327\353\221\215`\274\277\036\235\215K\247C\261\277\361\233\302H\\W\226?\375\270\022\021n\211\316\277\300\273\314!\021;\300\277a\231\255\356\312\375\310?e\306\323\212\213\375\207?\243@\212S\307\226\262\277\201\007r\200x\266\243\2776\355\264\200\224\332\226\277HVA\002\213\372\312?\203EZ3\367\337\266?\036\322\374\370\320\324\306\277D\231?\257b^\177?c\363\365z\363ZX\277\373\242TTS#\303\277\037/r\217\224\242\271\277\301\017\356\343\022\363\263\277\315%\261\213\317\301|\277\005\357\013\260M\010\320?\257^A\360\257V\262?\350f\367!\366?\275?\004\237\311\022\023F\303\277r\305^\300\243\361\300?\217\017*Q\276\201\267?\025x\212\225\343\265\304\277ey\271\324\353\033|?\246wO\244$)\240?\204\335\343\264L\242\257\277\315>y\350\346\314\305?\277\256\335%57\254?\235\024\335+FA\237\277*\244\0329\030\200l\2779\251,w\035\006\302\277\274\010\271\303\233:\236?\'9 3\346-\177?\275\320\177\351xr\302?\037<mds\021\272?ua\353~\371\275\276\277\346@\326\353T\335\227?\235*\031\227\244\006\216\277\353\177k\221\374\361}?\n\233\372Y\255L\301?e\276\364/\354\336\260\277a+U\223\216\202\245?\214\3049\306\377\361\204\277.w\252Q\223\036]\277)G\363%/\212\241?\375\252\342\027E\361\266\277]\200\252\034\302\346p?\3516\266\030\177w\312?|\014\363%\3342\226\277`6So\034\020\245?\212\'\305\377Q\344\272\277K\242]\362\014\335\253?\256\215\274\016\200\307\220?H4\370:\276\332\270?PC@dEW\206\277\237\202n\202m.\240\277\344\204w\3204]\300\277\256\353ZQ\325P\271?\311\210\262p\3524\264\2775#\025\031\262\256\240\277ku\311<\006\315\240\277\311\346\267\260\007/\252\277\t\215B\001\276.\301?\255\020\311\276\026Ay\277\372\t7b2\355\217\277\232\344\303\240F\245\307\277Gs\366_\263\220\253?\333\nA\" lv\277Q\264|\022f\232\245?\037Q\306z\232\324\271\2777\225\343p\230]\244?\371t\226F\035Zb?\267e6\331\306\032\303?\340\205\254\324\313\215\256\277\014U\r\366A\212\317\277\223\'.l\372K\270\277\226\215\020\236\233\017A?n|,W\234B\241?\330\253\022VW&j?\233\200k\303[\323\245\277L{3}J\033\237\277\353\333\214_\010R\225?\025Q\273\364\261S\211?\205b\006\200b\020\260\277tl\350]\342\007\300?Z\244f*\341\025\203?\334+\220#\226\377\271?\305\036\332,\362J\234\277\3632\232dZ[\227\277\0202E\313\230\322\274\277\205\036\235E\306\350\217?!B\354\364\325\301\303?L1\004\252\275\215\237\277\030?5\341\254\373\301\277\'\031\256\240\026\223~\277\217\002\2600\216\232\224?{\336\270\215_\371\272\277?\267\330V\1775\306\277f\200\021F\321\206\225?\303\341\377e/h\232\277\003\\>G\377\\\252?!\307\205\342,\222\255\277!m6\000~\266\223?<(\207\362\004\352\311\277\245\307\010>\257\343\264?\022\361\262\362\261Xs?<\200\362\"\013\223\300?z\2050\350C\260\304?0y\265\r\273\260\225?00\221ICa\271\277Q\3722RL.\252\277\371\036y\034\374\346\272\277\344\320\273\002\374a\225?[\022!>r\250\240\277\213\232&*x\254\237\277\332:\023\321\250W\270?\262S\367\252y\321\266?wQ/\256#\222\247\277\337+\257\226\355R\266?\217\216YI\317\203\241\277G%\322f>c\264\277M]\377\330O\026\300\2771\332\222\345-\304\265?\370\343\333a\346\225\304?o\023\303/O\330\276?\016c\265\225W\211\312?\303\250\230\361p\337|\277\306\315\360\310\372\365\267?\357\252\315\"\016\'\306?\272#[\364\016\251\271\277\013\241\007\023\317\372\273?8! \022(\362\304?n\210\2722\375L\230\277\346#\" \350\004\264\277\203\334Q\343\2455\311\277[\317\t\316\222)\314?p}\206\205\250\242\253\277\362\230\320\224d\347\305\277\205\325\211:zq\274?\322\220\367y\223\356\262\277g\201\021\233\356H\203\277\210{n\310:\034\241\277\356:\024}v\026\262\277\273\221|(\241\232\223\277*z\236m\276\377\203?\033\375a\312\334o\260?FXb\030j\021\306\277\027\260\367>\016\002\320?\246\327\215\255\301\256\244?\002\3201\264}\324\315\277\240\241\326\362\177-\300\277\2610\224#\305i\240\277\350ou\362\304\246\265\277\257l7\'u\326\300\277\234\344\232\233!\230\247\277\001/qDg\317\240?\212D\252\024\375&\272?\220\320_.|\333\262\277\346(pe\'\251\300\277E\300\255X\347s\243\277\377\034\345E\247\237\261?[\204\030\211\216\301\303?\n08\357@\222\250\277\217\267d\213\303x\311\277\225\017\320\352\212\r\227?N1M\233I\244\314?I\242\340N\";\262\277\356\327\034\317o\332\273?\026\016n\342X%\267\277h\211\002\262\336\236\223\277\245!n\033x\222\314?\013\006\353\370\274\025\255\277\000\215\237\300W`\226?V\204\252\256\034]}\277\240\353\232~\314\327&?e\010\205\222\rB\301\277paq\376c\003\305?5aA\254\225\031t\277\242\230\327z\341\017\220\277@e\367\332\302\314\265\277\362\376\313\351\327q\241\277FU\376*\361\"\300\277@\271,\363~\331\244\277\242l\357\202bF\307?x\r\377\301F\377\254?@;;\250&K\263?\235|\243\022J\035q?\'\240\005\020\272!\253\2776\334@\032h\357\245?N_\02423\343\302\277\222u\370ug\240\270?\007\222\224+\216\246\223?\332\253Ns\274b\212\277\261\211\320\310\003\343\202\277]\251\240\016\261\323\276?\236\215\212\n\270\271\300?Q\304\223\246\036\363\300?Wo\331;\227\200\257?\247\375\257\203\002X\255\277\330\310!\006\376B\222?hb\262\231\377\356\272?W\204rt\0378\320\277\201\256>V\336\231\213\277mHi\241V\236\246\277\250>@u\314\266\260\277s\317\251H;\257\270?\335\256i\004y\374\266?\001\262>\373\326\311t\277\301p\002\2409O\313\277\315\300W\253\265\310\264?K\347\234\\\321\006\263?\350\304l(c\021\264\277\031\334R\333\010l\307?\244\364\030\330N\217\225\277\262\312s\267\316\023\271\277\024G%\257\224\306\213?\255\232\215^\374\371\244\277bu!\301\354\361\321\277t\243\2336D\345\260?\303\212\026c\312\330\266??\216\2433)]\237?k\316\014n`J\306?rOS\241\373@\262\277\217\264{n\323\345\323?\354Q\337vA\263\260?\253\374\264\325A\000\254\277\003\002\256\266\304\\\304\277}\232&\'\302\300\270\277\256t\332z\344\362\277?:\210vy\025\223\246?\327\3678>\370!\302\277\202\245\210\036\372\304\271\277\\i\346~\355\327\207\277\"v9\361Nr\263?\205\323c\026\'6\265?E\nG5\034`\257?aX\266JLe\307?\324\217.\223\323f\272\277\234\366\301^\007\001\224?64d\205\3402\220?^\376\022=\233\224\315\277.<}\034e\321\246\277m\323\354\000\335\002\272\277t7\016\265m\346\240?\nFB\307\2644\257\277\013\2667W\023\210i\2770a\310\231A\205\224?\336V\364\372\244x\244\277\266\347\023!I\230\243?#B\3774<\344\250\277\261\347\300Y\371\033\251?\3005/T\370\250\255\277fe\031&lQ\267?\201\033(?\330\335\242?\206\220\372\264\324\257\274?\036X\017Qw\245~?H\301\177\014\320/\305\277\000Y\361\233P\255\263?_\240\022\341Q\000\217\277\262|\206\222\234\025\267?K\256I\276\230\n\310\277S\3749\351\252\220\227?\033 \377\224\227\247\211\277 \214\036\344u\201\307\277H\027\345x\262\300\244\277\220\026\224#n\364\303?\\Q\323\233\375\224\245?\037]!@\376\273w?\024D\2725s(\255?\223\364\307\305\025_\253\277a\352\275`\266z\227?\344,\304\371\357E\305?\373\266cR/N\272\277m\255\213q8sK?r\216\350H\307\242\311?\215S`\'\000\205\227\277\027\210\326\016\236\262\253\277sM<\260rtt?%\220Mt}Q\264?)\252\340\034\2716\247?p\272\"%\334\367\250\2775S\003o\313\240\250?w\324B\360\2212\301\277\374\215\221\332H\222s\277#\264W\r\317\305u\277\322\255\257\314\213\352\265\277Og\201ev\330\227\277\262\306\230\226u~\272?\337\273\177@\034\314\257?F\215U\353\357\037\272\277\323\307V\360T<\266?\0350\304\255o\002\321\277\334\352\301\334P\317\265?\353\333\t\271I\325\264\277\026\016\370\242\243\337n?\350%\033\302\327\310\231?\177\272,<W6\252\277\375}\267\234\246\373\202?b2\265u\375I\235?\356\335\251\010\275\332\322\277$1\332\311gn\301?\257m\327p\220{\264\277\020\251;&ZK\300?\247\177,\340S\036\271?>\224\233\247\222J\244?F\345 \260\243\252\276?\306\010\3153\211\024\261\277\2671\254S\376$\321?\006\244\230o\250\300\300\277D9\305\335l|\276?H{6\n\361\227\261\277\021K\001\225u\323\223\277\247\000S\237I\313\264\277\225m\277\016\264M\225\277\366\262Z\177\244N-\277\356\275 \342\310\304\222\277m\221<\312P\263\264\277S\250\005K\3408\311\277M\350#\014\016c\211\277\t\317}_M9y\277\352\261|a}\022\227\277\243T0\021\026\322\262\277&z\213>\205\365\267?T\273\032\344~9\300?vM\276\207\276Q\255\277\241\250\347\371H\343\244\277\2420\230\233nf\266?+\365(\214,g\311\277\344\303#\304\202\010\263?/TK\311\227]\226?\215u\337\311\330\025\311\277Zp\374\344E^\266?\3075\230\260\302>\245?\342\024s\001U\224\271?W\303\225p3O\251?\0311\033\312+\357\270\277\202\010\337\333\0106\340>\317\321r\312\354\310\273\277\207\336\226=\337O\276\277r\234\266t\253#\247\277\240q\007\342\275K\310\277+\311\247RR\366\265?\t\335\236\216+\034\302?6r\217_\003\237\300?\207\216$#\1775\245\277,&k\202\241\265\316?\244\274$\241\367^\246\277\204\327\305fHj\306?\304\256\223\371t\226\303?\023d\301\351\375^\264\277\256i#\020S\243\237?\205\035\2226\361B\224?6]\237\330\241\220\267\277\265\311O\334d:\251\277\306\366\\\037/\332\266?z\t\036\315b\371\234\277F\317A?\254\322\264\277\254g\310q?\212\276?\332~\025\000\\\345\230\277\236\347\221`|\322\277\277a\320t\211\030\311\233\2777|X\336\356\306\243\277h*\200r\321$\242?\3343{\277\277\205\311?\313\016\345\0361q\300?O\226\245\310\245\343\271?[\213\332p\3248X\277\027\006\361\307Z\225\265?\004\007TA\373!\223\277\3263\\\241G\020\236\277\3578\372\310\303\010\246\277\350\016\345`\022\035\222\277\321S7\3055Z\257\277\373F\326sjg\242?\177\314\220\212\317G\247?\204\t\256\037wo\225\277osg\363wC\267\277\376\250{\246@\330\222?\324\014}\374\r\225\242\277%\331!n3\334\246?\240p\316\005\306U|\277s\027J(\307\370\256?=\274\300=\014\024\222?; l\324\306\264\264\277q\200\035*\216]\243?\027\016G\301\375\\\224?\226\033\270QWm\302?Dt\331\302u1\303?\255\311\025\215\244\300\216?o\211\264\350\272\345S?X`\231:\224YS\277$\226\336}\027 \225\277l\203\265\375\367\306\314\277:2\307\365\014\'\246\277DU\353\224\371[y?\337\3533\232\223\274\251?:\272d\256\364\326\260\277B\326\211S\255\022\207\277=\313\3234<\247\276?+\236\310\263S\'\246?T\030|\305\206\023\304?3T\223H\001\300\325\277\322\216\350\312L\356\233?\362r\247\201\231\251\243\277b\361\177\235\262\244\260?77\326\266\222\027\322?\275\322\356\3358\312\234\277\\J\017\2700\271\264?\036\355\t\0143\010\247\277\264\340\331\300u\230\307?\315\2665)\036x\275\277&\377\275\243\304{\274?4\314B\342\026\010U?5\232j\006\240\230\245\277\270d\367\007\272\020\274?\227\221xzR\316\275\277\027)\361\3176\274\240?X\205\336\261F?\217?\273I\226\227\355\r\301\277y\361tPpz\200?\267f\326\242>\244\277\277\211\214Yinu\270\277\227\324\241\210\362\350\301?\317H\356b\371\347\250\277\327\376\232\325W\345\177?\233U\240\305\025\306\262?;\327\222\353\272 \202\277\200\234\020\226v\271\300?\245,\010\227\267\017\313\277[\320\010m\r\341\204?\214\216\256@\322\026\224\277\255\326t2\001\225\216\277K\223^\234\357j\221?:\354\267\3534\235\243??\001c\245B\331\252\277W\325\350n\034H\274\277\035\224`\003\260+\312\277\372\356S\265\246\377\207?\305\230\231\256\333\203\272\277\316k\035\202\261\037\303?\245\023\241\243\025\315\247?\276\216H{\272\223\301\277gb\355\227\205\034\314?\026N\t\274\303/\300\277\302\275]\353W\301\223?\026\254h\026C4\273\277\261\305\342D\372v\260\277~-\347\301\274h\320?\nj\255\261\027\027\213?\021Vn\025y\201\266\277\326\210e\325\266\373\271\277\254\001d\2455\326\243\277}ut\221G\262\303\277Z^\334Z(}\274?\262\345\177\231\276\357\260\277\0214\324\252\314Y\271?\360\007\337>LL\320\277E\210\016\037u\177\314?+\200\250\342\343i\261\277\261\201\263\3617b\301?\351<\212E\234E\304?\027\325\3337\n\325\312?\014\2363f$\237\250\277\247\327ziu\341\264\277\231N\010$|\263\232\277\355\315\271\200uq\233\277\201R=\004s\200\250\277\001V\334\346\240I\246?\306\021\314\376\034T{\277\243\034\320\"}b\243?%\21470\374+\262\277\277\316\273\005H\217\241?\026_\221\314\212\362\221\277pp\337i/e\304?a\007\374\245g0\241?c\235*]\342h\304\277\"\256\002\216\314\275\301\277L\360u\247\257/\276\277\340 \321Q\262\254\323?\237WwE\034r\221\277\300\274\0138\372\014\262?w\006\222\315\030.\324\277FMI\347\213\263\251?\272l\3424\217\335\304?\37179Rb\200\304\277\010,\313\367\337<\251?;rW\2172\202\300?\000T\245\376ca\230?(r\003\2559P\302\277#|\253F\3666\254?\213j\377n\007\364\264?\304I$\354\211\256\233?\352\232\333\302\271\341\256\277\272b\301\257U\201\313\277\220L\r\315H\250\306\277\007M\313KR\206\267?\352r\256)\017\017\227?LT\300\022\376S\230?):%\332\245\210\315\277\260\202\363\235\236\241\267\277\274\035`\342\304\221\223?G\330\270W;\261\276?\2154\310\374\206T\272?\017\020\220IE\334\302\277g\301\202\260\246\344\271?X+\"\253\\\002\312\277\323{\353\357o+\267?&\257\363\306\032\225z?\335\375\336\352Jj\253?\005}?\023\331\200\262\277\207\213>x\231l\263?\013\235\016mu\030\302\277\367\237u\255\240\177\242?\265\357P\020f\216\315?\365\010\333x6U\263?v\020p\321\201\242\240?)\343@\256\273\240\317\277|_E\315\225R\313?,RE\214\013\272\243\277T\337\244\314\327n`\277&\017W\211\022\377\271\277\354\361\241\035]\341\251?\327\017%\340\n,\241?y\014\246\234?\246\301?(\273\240!\317\002\236?\300k3\330\034\330\246\277rD7\002(N\322?X\030\241\251\357\313\302?\036\363g\034\007\345\264?s@\310tz\334\251?\314\347\374\300Po\306\277\346\250hC7\023\316\277\315\017\222\202;\373\254\277\244\355\237\006\351\334\244?\354\017\007^}}\270?\367\255\330\036\200P\266\277\007\020\001_I\352\243\277|\311_\340/\215\266?\216@g\024\272\311\241?\362W07\274\003\254?\035`\"*\261T\277\277-S\271\241\250e\331\277\224%q\003\344@\240\277\027j\250\2601\341\254\277-\266\232\253\220\312\313?\222At\0179\253\321?\207\247\353\354\260\356\231?7$8\312z\246\220\277\206\010\241\343\260\006\311\277\003\225|\245\014\332\253\277\347\371\364a\330ER\2776\267\206*O`\200?\250\031.4a\243\216?\026\340\365\026\343\233\216?\026\014J\026\344}\203\277\024\200C\n%\331\206?r\324;<\377\321\201?\277\022Im\317}\312?v\031<g.\230i\277\202\353\314Q\032\007\271\277\373\007L\366;\037\267?S\336\305\322\311\265\205?\"\363\314\n\005H\305?\26223\to\023\177\277\222\"T0C\243\305\277\205\341Z\3541G\265?\305\037N{+\331\253\277E\250\326\267\361\030\274?F$\360bn;\265\277\207Z\273\370Q\267\252\277\362c\255\224\347\\\242\277\275\366\373\226\007K\266\277#\346\335\354\355Q\320?\206*\304\226 \014\311\277\032\0200\205\034\372\307\277I\200\016\242\032\306\243?C;\322\244\351W\305?\231h\252\234\312\013\235?\'\246\311\t\227\251\241\277>p\353\270v\346\274?\370_\005\202\223 \250\277\244W$6\310\033\240\277t\034\343>x\034\257?\332piG\325f\270?\251Q\334\'\214\300\234?\240@U\204\335\372\276\277wR\206g\013m\260\277Mt\311\230\0357\225\277\354\022\312;\263c\247\277\346\204%\220\220v\234?*tP\333\331\267\265\277\315\177w\277\315}\266?\367\007\323WP\373\263\277\000\034\n*Z\366\324\277D\272\326\210\326\332{?\235\335Y\010L\215\266?\337\325\024tA\\\302\277\201\320\353C=\252\300?\236\203\" \354\032\265?g}\346\021g\220\210\277x7\234\"\2470\243\277|}\025\201s\007\273\277\212\310\007\263N7\223\277C\220\350\n]B\213\277c\003\351\211m\321\241\277j4r\257\331\227\245?\231\363\206\323\262\025\220?\035G(\333\006\370\273?\234\016V\242\347&\243\277ji\022h\000\266\254\277\367\211\2161\235L\266?}\n\220\376\371\263\272?\253\031\215H\006_\222\2770`\244\367\033\323\253?j5\266@\377\254\270\277r\201)\240\313\213\241\277n\2507\366jB\263? \204C\3534\007\264?\036\221\210\322\202\260\300\277\r:\200\251\003\303\211?\"\245\254\034\317\252\272\277\207tT\000\234P\211?\205\007\230,\031\346\242\277>\2727\303\313\230\243?\016\200\361\343+=\330?\203\234;\307\271Z\311\277\376\r\262D\002U\223?\317\237s\236\372\357\303\277\347\250\200w\307h\260\277\010\025\030\306f\225\303?V\345r\2650;\240\277i\331\363a/\331\202?\363\360\265\312\010\274\300\277\331\332\226\265\353\010\224?\265\332q\034\333n\265?\352~\214\261\206\020\261\277\nC\213D;^\264?\240\272\270\304\037\\\307?\276\344]\270\035\245\320\277\216\204\271\240P\371\325\277\331\221&S2\310\244\277\362g\035,\230\024\270?\314\021i|\017\356\322?\242\346iCcT\231\277WI}B\223W\267?\264e!\272.8\204\277h0\204\337\362c\267\277\250\007sFuw\246\277?f\323>sQ\254?\334mw\014\365\324\210\277\304\230\254A\206\013\236\277!\276\331O\010S\265?\224sihm\340\251\277\250YE\3144>\272\277h\355/\362\317T\251\277L\327\342[\325\027\223\277^\325\ng\331@\270\277iJ\232\004\037H\216\277\324\370$T\2426\265?T!-\266\226*\271\277\251\372I\267,\235\321??!\375PG:\310\277\027\340\t\277\275\022\237\277\316s\'V\353\n\263\277\306Hk1,\227i?\316M\270\342\t\220\263\277\352\020\314\227\305s\220\277\356\257\017>\341M\324\277ig\335}\0047\222\277\255Y\214*m\217\245?\376+\2279\353\202\316\277\305\022\'N\311\240\305\277%ItUF\004\324\277\276X\003l\313\353\266\2771<bK5\"\313\277\017g\203D<t\245\277\\\341\000\337\366\177\272\277quv\036\326\355\251?i\354\352\223\2016\270\277(-\200\004\351\211\277?\251\223\240\346#w\235?\210\222\005-\311$\261\277\360w\343Ak\341\303\277\270\265u\276\367\326\301\277\020x\014\212[;\261\277N\243\312\224;(\256\277\026\236[n$\211\205\277\3716c\214x\013\302\277\324\300\326\033Y\271\315?Xw\254\025\337\006\232\277O\306\357L\264%\260?d\204\022J\006.\326?\371\317l\013o\334\300?\300$\200\30106\251\277\373\315\177\312\226\245\246?TU8S?K\262\277\346X\336\340\370\232\223\277O\276\211\\\2768\301\277\377\010\320\344q\377\276\277|{jh_\307\255\277\021\276?\360EY\207?\260\3722\026o\254\260?F\215#\252\252v\262?\331/\341#\034\217\207?\362\356\250\032\223\320\266\277\237Wf \353\010\312?3\242F\022%\334\302?\213\36621\252G\316\277N\224\366\253\235m\251?\314\215[\323\351lv\277\036\350*\352\253Vw\277^\336\247\317\273$\303\277\304Fm<\343\353\322? -]O\200A\262?M\037\365/\344\235x\277P\267\323\205\3572\275\277\036\227\364\351ds\277?\237E\225\007\224\202\245?\212\246\334\201\346d\256\277\006\320\303\224\333\253\312\277\367\317\354-\331\321\273\277z\372\022\352\212\320[\277Miw\304Ww\271?\201\364\355\313\253\241\277\277\204\022\321f.ue?\354Q\021\221\007\323\277?\267\207\202UX\320\320?\302\303\365\034\240\032\321\277mz\3625\344\023\262?bX\316\265\203e\267?\302\023\r\336\304\274\247?j\240\314\200\360\217\264\277\215\307jN\345f\202?\355(\255\311\272\377\324?\355\005\356\372\337\272\305\277?j;\025z\021\276\277\264B\377\0055\205\310\277MZ\177)\337h\265\277\373\223\377\363\340\357\246?\014\265m\006 \256\254?8&1\375N\252\302?\003\265\244A,W\244?<|/\273\256\027\310\2770\235O\034\252\260\244\277\365\322\237\027c\346\301?R\335d[\333\315\235?\302\204\t\343V\300\273\277\035\354tv\325\204\314\277\272!T\223q\316\263?\017\020\010\341\215\t\272\277\017\213\206Q\016c\274?&t\304\335A!\272?\217P\352\335i%p?\334\351\201y\023J\232\277@\344\374\177J/\242\277/,Q\017\361\"\222\277\036T}\316\203\031\251?\245\337\"U\223\010\225\277\243d\235I\276\033\306\277\237\336\231\240\267l\246\277\024\300\244\232\024p\262\277\314:y\2678\333\254?\2677\370\261\256T\271\277q\034\353\235\373\003\264?9Sd\303\325w\272\277\360+\237uw\006\312?^\005\r\277\264/x\277\235l\242\211\311h\203\277ld[M\232a\201?\227\342/TF\307\243\277o\216\332\300\237\374\246\277\320\014I\206\225(\217?\024\277\344G\314\235\301?MI\2503\234\334\215\277\251x\337\335\330\370\270\277\241\200r\376K\241\312?\335>\206\271<\273\311\277c\005w\321\232Ar\277.n\255lY/\264\277\031d\203_\370\375\302\277\016Y\332=I\215\250?\344\202z\225&\004\306\277\t\203\001 \236\217\261?\220\207\250\224\t\267\274?\270.\017\352\240g\277?\320\350<\313\250x\243\277\320ZNae\241m?\023\037\032\274\374\363\257\277\r\313\t\027\211h\204?\014\3027\254\036Y\307\277\006\227\377HL\274\230\277\027\235@\241\216\277\261\277\250\032yI\017%\245\277M\232)\355\331z\301\277\353_\240\216\031p\264\277P\350r\231\337\227\223\277\362Jn\253\030\223\241?\311\352\002a\004\020\273?JT\363\026Jm\261?\036\016\300\363;\'\312\277\365\331\302\357V\216\321\277W\372\365\320\324<\231?%\242\276\366\202\266\270?H\370\205\310b\034\207\277\333\236\244\230d\030\233?__Oj\342\325\252\277/\252y\214\262:\267?y4\370\204GU\263?\217\350\270f\335\231\246?h\374\315\332A1\271?\300\332\354\352\311\325\275?\025\030d\375#\221\313?\021\354\262\364\210\242\233?G\356!(\317H\257\277\014Ap?\327\310\302?\205\n-\\6\332j\277~JY));\264\277\020\032Cv\024\337\276\277z|~4;v\247\277\016\354L\376C\023\263?\277g5\325\356\'\320?\312\315\260q,\231\262\277\325e\344\2725\212\301?\3312\002\355u\315\247\277\217\251\251f!\017\277\277?\031\303$A\216\227\277r9,\026U\305\301\277\273\230\344\334\207X\215\277t3\312-{N\242?\271\261n\3427\350\236?#+\316\373\360W\262?\270e\372\214\315l\263\277\345\245\267\3652\256\260?\301\022$\366\023\r\265?\"\262\"\254%\336\255\277\253B,\334\377{\304\277\356!G\221(\214\251\277\227Io\270k\201\232?gM\177\215\343\300\302?\234\247~^[&\251?\370\317/\334\023\303s?\371\353\016\202u\352\302?G=K\0014f\262\277>\234 \232<t\216?\261\027YwM\261\251?{\r\316\360\205\244\322?\317L\371T\377)\243\277\222\003\\\374\244\266\277\277\325\261\377\035a\036\305?\315XX\371\332\004\323\277\023\245\371l\355\310\262?F\266^\375\315\204\250?)\263tk\372\352\302\277\n\334\017(\020\000\242\277\331\275rH\255\'\262\277\321\337\317J\314\017\230?i:b\274d\300\306?\201b\234\230{\367\270?y \257l6K\252\277\202\025\256\260~\350\274?\200\337x\021\354q\302?0\305\035L\351\331\240?\256~\366b\353>\261?\327\213\251\21441\330\277\325\234\010ESL\241\277\025T|C\231\033\276?JQ\206\307\340\232\320\277\034\307\227Y\377\024\202?\312\200L\010\217N\273\277R\313\327\010\355\211\253\277\";\001@\351\271\254?D\314\274\003\260\342\202\277\3736\216\200\330n\264?\223{5\004k\210\303\277\302\322!h\232d\270?\346\242\363\"f\367\250\277\317\000*2L\356\274?!Vl:\335\324\277\277\250kBl\003f\244?\256H|\365\303[\205?\274\026$?\227\257q\277y\303_\322\365\337\253?\365b\303,U\247\264\277\004\tB\014\300\273\270\277!b\214\244\367\032\317\277niA\220\375\243\250\277\001\243\367\214\340\333\244\277\267\266\311\232\025b\303?\203R\227\272u^x?\343\361\311\212Dh\216\277\315\372\027\344u\242\304?\235Vg\214\347\356\305?\251f\300e\025\'\254?%\271\033R\006\325\254\277\351/\207\002\212c\321?\347\336_\\6\307\254?\360\343\374\023\007\305w?\210\016\036\351\200\373\273?\364\212\372<\274\255\323?&#\257\216g\314\222?l\351\245_\361e\300?Vl\331\367!\272\254?IM\217]\332\036\227?\306+\247\351e\307\302\277F\312\235.:\272\220\277\0133\020T\233q\227\277\224P\246\222\315\266u?\252beE\262\233\245?{\006\242\261\030\316\311\277x>{f\324T\230?\272\360\\\270p\223\257?#\313;\327\343\246\220\277\317\"\364\212\341\366\324?(%\3039\007\245\243?+/\254J\244\036\306?[\363\344\031\035\277\300\277\241=+\257\214\306@\277\337\352;\300\254B\310\277\257E f\240t\302?\363\205\027\233n\232\244\277\204\237\375\215F2\250\277\334D\331\266~\345\274?p\004\352\276\022\003\306?G\006\223,Wm\250?%\235\376n\206-\264?3\356~\026\372\031\255\277\250\333\231x\031\316\304\277_B\3432[@\232?\300Q3-\235?\242\277\211\326\326\016b\251\254\277>\274\031[\014`\251?z\324\250\220\335g\275?v\206g\023\260\246z?M\275bd\036$\275\277]\333\031\020\215 \203?r7buX\225\242?F&\364\344\"\010\255?\257\310E\301\362z\271?\315\021%~\'\n\251\277\356m\023\331\327\353\210\277=\316\177\233\213\241\277?\307 ;4ku\231\277\320\345\313\373qQ\245\2777D\001F\310:_\277X\373\250-\222&\212\277\371\026\230\233}-\302?\0130$\323\277y\321\277\273\017u\356\225Z\253?\023\242\252\034D+\255\277\352\251\\n\342\033\316\277\020o+8\354Vu?O\264\007\254a9\272?xf\037d\363K\277\277\355\222\021V\"\324\230?\340/\275\220\013f\307\277:\3754Bh\274\251\277\002xP\335\r\035\277\277\253\242Wh.\013\200\277\2540\200\333\336\335\274?\344\025m\255 \314\241?m\244$\177\005`\307?\342U!k\200w\320?|F\277\"\320\030\273\277\001E[M\320a\247\277\253\332)\361\030\272\244\277%{\264B\020^\301\277\342\300\023Za\017\222?o\266H\340[i\243?`\362\310\357\247C\232?\027\356\222\035\245\325\223\277#h\353\0339\322\246?\325Oi\321X\003\312\277l\251\267\035\240\301Q\277\354;\233\205\346\351\267?\203(`\33240\245?\035\261\016lWE\275\277O\017l\225\023\034\210?\2143#\246DD\222\277\306\351\366\261\266\024\272?DH\355\317\230\031\266?D\275 \341\361\256\235\277\266\346\322\217\306\274\303?V@\021f\347\001\244\277\'_\324f\350\335\222\277\353\3323V\007 \276\277k/\013\026\302\356\250?\313\372Le\024\354g\277\346\351\220\204ac\256\277\320+\004\013\001\266\254?\r)&\276\303\256\264?B\366h\"r9\253?\353\274\017\020E\267\270?;\270_\"!t\275\277\222\016H\330\376(\260?A\020\237\301\252\311d?\335\264\375}\217W\242?2*dJ\016\221\242\277\241\352\203M\367\301\241\277\305\376G&\275\244\310\277y\2340^\017R\203?\347\217\t\t\254\300\254?D\214\036\322\212\350\214?)\310`\"\021L\246?\247\305a\242E6\305\277ZeP\223\202\353\272?r\266\326\212D\330\237\277\366\334\200\260%\303\261?\321\221\3001\265oi\277\200I\346\200\360\200\262\277\275\204\341E\351\377G?y\302\300\360\202\215\303\277n\212\215!cy\261?\352}\030\377\242.\307?x\214\363&Wb\311?\t\263\003\336d\336\241?bFe \337!\306\277\337S\227\313\200\376\263\277\310\267A\335\230\330\267?\365oe%J1\302?\273\322\327\275\036.\242?Vq\324\201\247\214\314?+%\207\300\304\231\203?X\206CI\267\007\260?\363\354\227\t\033\267w\277 3c5\235\211\256?\313`\245\'\206n\204\277\363\2574\371\320m\221\277\330xD$\036\2776\277}\326(\330\3569\256\277\234\324c\326\277Q\310\277p\276\303\225\274\002\233\2775\215\256\314\212o\320?\020\355#>\006\207s?Ez\3270\343\262\254\2776b\332j\276\367c?\336\317\331\313V\373\251\277`\300\304\347\236;\241?\263\343:\244\237\365\252?\344\242\'\007o%\302?\224\364\244\3576\337\254?\251\221\317%\230\215\220?i\032\307\357\316\007\273?\276\270}\260\0206\276?\233\025N\331P\271\215\277\354\207[\266\352\275\264\277\275\013Q\310\016\233\260?\254D]s\255\300\273\277\326\253\212\2754\240\306\277Z\350^)\374\210\217\277\001\326\020\363c\331\224\277\201Z\0237r\351\266\277\307\321|xq\214\256?\201\t#\343\351B\263\277\266\034\300\231j\347\311?\225:\364i\346\342\244?\037\204W\354\017\233\260\277\310\373\321T[\267\216?\2777\261\177\\\221\300\277f\237\037\212\362d\264\277&\3714\352Ry\302\277\204\232+o\332\365\270?\207\306\315MM\217\271?\346J\023a\005\277\277?_\306\020E\351 \274?{\332\350\251\212\234\275?z\267\234\202\033\246\274\277\332\313\321\231\333\274\202\277\355\006\nB\240\300\206\277r\351o\314 \320\250?\237\272\022)\217\371\323?Q2\274\324i\356\221?\346t\177\274\3278\274\277\271\0253\234\276:\310?&i\226\020\305\241\242?,?\254\313\206\214\241?\223\252\241\362F8\374>6\314}X\235D\304\277\033\371\234\313\231`\254?0\236m}\'\255\264\277\271\177O\026Z\352\300\277\"uAZ\376zr\277\001\364\354\2229\235\213\277s\227\303{v \265?\212\023\033\372~\034\305?\310R\336j\304\215\214?#}QS\014\001\244?\033\222V\205\330\373\312?\334\342\225M\272\n\277\277\270\247?\265t\331\256?!T\242Vb\036\224\277\374\014P/\004\236\303\2770\336)2^P\276?M\264$\352o\217\247\277\201\261\345\212\275\201\252\277\256\267 z\225\333\254\277\026\316\256c\313}\222?S\322\'\325\332\372\213\277\343\216}\001\273W\261\277\376\226B\3463\231\257?\014bP<\376\020\263?\214\331\017Nl\215\312\277*\223\021\324\371\317\317\277\224\333\325O>~\220?\031;\340\242\305^\264?\277\365\311\341)u\226\2779ra\010\354c}\277\010\272\232\260\0178\253\277\366L\212\365\266\247\303?\346u-W\264?\223?;\2206\312&\201\205\277 VwA1\201\235?8\201\256\377\002]\305?\313\000x.Bug?\216\360\230\301gA\260\277)7\262B9\324r?\372\207N\242f\003\321\277\212\334\350\315;\234\266\277\210\031\241\235\246\270\311?\240\340T/\337\267\304\277^T1\256\224\323\243?\257\347&<\364a|?\332\277?@\370\026\270?\010\273\332\304\n2\274?}d\007\334b\316\261\277\347\361\r\307\353\211\271?\321\201W\322\227\270\237?D\276\373\240\231\315g?F\307\200\307\0311\236\277%h\245.\327\003\277\277\335\233 \275\216\361d?\377\355\376\202[c\252\277\325\036\203\204\205\340\232?\350\311\335\253\243\222\270?\305,\310\323Uz\321\2773|\022w\313%\215\277\370\002\202\001\276p\240?\361\211}(X\357\277\277K\204\363\207\"Y\272\277]9Y\367\262\020\204\277F\324\224-\322\001\302\277L3*E\314\352\267\277\365\201k\233\271\245\205?3\"\251\243\tk\306\277\233\313]\232\265T\320?\200\214\221\031\332\022\261\277\374\375\247\304\376\331\266?\363v\323k\227S\240\277\331\317\001E\'\204\236?j\373\213\261MT\261\277\016\270\310\330\232\253\221\277\312o\215\216<\321\242\277\371A\226\352\'5\243?\177[\'\275\307\211\306\277\231\241\215\003\347\002\302\277\373\267\336\300ag\304\277QC_\3306\363\254?\303\265@B\312\206\264?\"h\202\334\004\224\302?\022|\323&\303\275\271?\363X\034?\371\222\321\277\312\311\377Nho\301\277\010u>\221\270\250\262?\240\032b\035\231\303\261?h:\273P\237\322\225\277\000S\274:\345>\247\277\377\243\206\216\371\030\260?r/\203\312C\277\262?T?\346\265P\332\235?\030\302j\340W\270\245\277\r\311\201cv1\243\277\002\343a\237EX\313?\264?\351\271\215\207\241\277V\256\243\240\306\261\302?@\032\233\316>\307\277\277b)$\277:/\320?\347\211\022\203\316\251\302\277\"\206\2242\266\017\263\277\227/\334E \002\273\277A~7=\013\320\210?\373\213\306\372\364\327\271?\250\242c\2100\227\312\277\331\263o\354_\235o\277\030l\324;\037\r\264?\000\341.\244\337\365\273?8-\004\0231\022\217?\243s\254\037\234\211\301\277xBV\013\023\301\262?y\270\203\251\223\236\270\277\356\252\217\362\320\301\261\277n\030*\016,\362\312?\341J\023F\026\310\267?\245\207_\361\004\273\264\277\254\371k\013\263\242}\277\216\234\330O\347\337\271?\001\241\200\276\372\307\261?\225\212\357\372\312\020\266?K6\300\252\2607\264?\240Gc\364\375\004\274\277\014\264\253\315\231\035\312\277?\177\272\245a\344\304?\027(;\031\260\357\237\277\342:\376vt\243\303?/\025D\335\242\262\322\277\022\005$y\0309\267?\213#\205Z \\\227\277y\276\237\017\035\177\246\2771q\315\036\037\220\257\2777\024\323\024Q$x\277\232\243\202\321d`\232\277\274\007\366W|\020\304?\235F:\241\014\364\253\277p\207Qn\t,\302\277\030U\353{\320\243\252?2bp\321\022\270\317?5a\366\344@\207\301?\346!\035\336\251\024\246?\032\350\034\210;\265x?\215P\301(\352\020\242?GC(\345\035|\270?\346\252\277r*#\250?q\216\206\014\264\032\312\277\374\315\330\241\\\311\276\277\313\304\020\020\206X\277?\004\365\252f \000\253\277\005\025\350\360\301\360\247\277\32621\206\312\276\275?\227\273b\263n/\320?\333\307X\026 \023\320\277\257\032\021\222m_{\277\202\341/\247+\246\217\277\351\237]\022q\203\264\277t\364 :;\035\307?\204\371\346\217d\221\177\277\270_\365\223\2222\301?*\rh\374dq\313\277\374\217\004^Ps\237\277\316\354\225\276\350\252\240\277\362\222\203\3657i\300\277\3613\355J\215X\245\2771\224\256&x\237\262\277\027C\216y\272{\267?\266\363}\343(\332\300?\267\035\335\323\251Q\251\277G\315\243W\352\371i?\266}\001k\352S\246\277\327\33459\3649\302\277C\312SpB\350\257?\227a\016\177\204\000\273\277\255(m\242I\314\310\277\224\241\023g\315\305\266?[\331I\r\037\242\300?\016/\302>\034\244\272\277\367\222uW\3228\206?\"\023\354\324Y\331\303\277p\342\331l(2\315?\224\230&\267\215\364\325?\270\304\236\271\201\305\252?\370\350,\313\360\266\303\277\317\225\351M(@\307\2777\273\260\003\364\\\231\277\001\217\250I\204\300\247\277\375\344\246\323\336\345^\277\216\253\205(\0037\305\277j\221\260Q\347\314\254?I\214\347[\235\356\324\277\254W:\315=G\271\277\006\233\315\250l#\301?\033\325\340\203\215\246\272?\005\235E\305 \366\263?}=\347g\013\340\302\277\265\223@\316\004\032\242\277\360R\302t^\227\271?\343%\3749\374\033\201\277\316.T\364S\032\302?+\'\266gY\345\267?\2178,\025\301\364\231\277\302\342l\202\347\004\241\277@\\\373\366D\014\262?h\263\202\241>\223\226?\317L\tXe\305\312\277\327\345n,Z#\227?\\\035\'\376A\253\253?o\351\331\270\334\"\316\277&%\266\023K\'\347?J\251\026\347T\010\240?u\211Q\014\212_\311\277\250l\"v\273b\250\277G\222\352o#\377\206\277\204d\361\0004%\236\277\254\252L\034\212\323\304?\237f\240\032\342s\241?C+\022\226c\372\204?]V\377\034\217\3336\277;J\014\231\312\016\317\277\037\273\273\347\263\252\300?\266y\2709\033\361\243?3D\004\335\353D\275\277\202+\216\027\310\t\317?mbB\027\214\014\213?\257\225N\301\227\332\213?yw\216\270\250\362\304\277\261\264\273\352\t\354\260\277\2057{\246\307Y\263?\220!\334\252\010?\302\277\267\26712\372\251\310?\2551\005\007\261$\214\277\276\205\323\005F\257\227\277\240\223\377\243<*\266\277:\363\322\2074\203\244?\261\022\333\327r\326\261\277\345\010\335\261\002\000\265?\353\254\357P\324\376\242?\323\225\205\023\365z\223\277\211@zw\035\362\321\277Qh>6\243,\305?\n\r.\034L`\257\277\016#\3259\014F\203?\0103\2258v\020\210?_\302\253\244J\220\235\277x\225\376\255\247\266\255\277\275\361\004\374\336}\203\277\370\235\205\237\351J\233\277\301\224\240\306yX\204\277\300a=2\002\272\251?6v\014\310\263\336\226\277\307?\005r\212 \320?\007u\342\362K\032\261\277\273\\xD\035=\231?\377\rx\026\260P\271\2774\355X\301\265\300\272?o\257\230\017\356c\303\277m\344\225\245\016\234\267?\022\363\307H\276\253\224\277<\034\247\302%\373\221?po\0109\203\223\303?h\006\014y\203\261\311\277\234U\371/\367\320t?\032\021\345\225\373\007x?EC\350fq\265\310\277\tv\255W\032L\320?\010\025\374\375pvs\277\260\313}\020X7\307?\032\275\031\374rq\244\277Vk\263\366\311\276\311?\220\'\237z\030\223\311\277\r\377\275\"\320\347\252\277\033iI\017\252\276\272?`j\261\232\226P\263??\3211\206(\235\303\277\360\351\345\370z\321\235\277-\025\014\265\347E\234?\033\002\267\243\226>\266\277\213\322\313xI\364\260\277\024\226\260h\020&\327?\330\366\243\r\023\342\205?\252\227\242\r\221\036\241?i\247\300E\210\232\301\277\301\013\207\364Z\333\237?T\260\034\364Q\255\300?\310\244N\200\205*\242?\ra\255\357-\000\266\277D\252\307\354B\345&\277<[CB\323y\303?\257\373\004\362\247>\267\277\r4\246\320\265\273\260?\375\244s]\026\346\206\277_\302\327\265\324\201y?:\304\302P\\O\254\277;f\237\275\244\355\231?h\321O fB\303\277\236[\272\237Z\204\303?\363\005(\215\t)\234\277w\375\227\014\361\367\253?A\032\244pO\307\257?\014\201y\316\014j\304\277c\361\212;Zm\272\277L\353\316\306\337\005\231?\301\001r\302\377\005\303\277\335\343\304\373\007\217\272?\010,\225D\227\345\225?\037\320\237\031h*\264\277\002\221#\3166/\317?J-Z\267iW\240?i\376t=X\271\272\277\027\216\272\201\n\020\225?\312\271)\247\254O\226\277\2633\2106\377r\245\277\021\352\364\216\245\252m\277\367\2617\370C\255\272?\354\225\214\034\014l\256?\223\023R\245\246\324\267?v8\274s\261t\313\277\227\263\375\031\321\375\304\277p\021\010\335\301\016\213?B\335\355\351\017\036\267\277\240V\314\313\322m\261?\035\025F\352\226|p?\333_\255q.\316\221?\034\350\364RO\266\240\277^\365SQ\022\334\301?W\367~\372i\336\220?\215\327l\214\325X\307\277&n=\276\376\204\222\277D\231\020p\375\235\303?\312\031e\356\243)\266?\207r\007\211r\277\245\277L\230\350?\025\270\272?\005\331\331\345\034[\237?x`\242\325\374y\276?\203^\376\354T`\305?\305+\336@\326\nN?s\370\237 /\353\224?C\267\032\2113\307\304?q\003/\217g4\253\277\231\245\222\250|\254\262?v?dg\010\274\223?\"\036\032\017t@\306?w\024,x\036 \234\277jf\014\222\001\343\260?\364\021\264E\227\304\263\277T\017\205M\371\356\273?\200\033d\215\032\205\211\277\373\276\263\355#\272\240\277\371\215\024y\306_\307\277\264\303\032\246\241\365\242?b\331z%\275\325\255?\257~\211V\030\257\304\277\324\255\271&\324\215\260\277;\247c\236\373]\241\277B\245ziM\303\221?@7$\372t\361\321\277]2\003b\324\007\255?\325\341\336\013VP\265\277\373L\241\217\336\377\263?\204\225\\\310\356\203\313?\005\\\3044$\254\264?\200D\302\2654\272W\277z\273\252\027&\307\226\277a\223\307\372\311\213\251\277\211\357**\300\325\247?\2200\035(\337\"\241?K\224\274?\032\020\275\277\315\216\245e^Y\210?\'Y\027\374\256\323\311?j\344\013X\330\266\263\277\357\271\210\253\320\230\232\277\204\254\024\264\301\331r?3X,&P\265\263\277\345<\371\252D1\236\277\350\331\"\t\225g\272\277x\222=\336#\345g\277s\001\221bpo\302?j\331\r\0340-\233\277\353_\001\374\200@\300?\310r\204\0371;\317?z\356\025\235\351.\260?vX\273\373\357\026\235\277\014\r|\017\277c\257\277\263\346G\rQ\016\274?\007\356\033Q\235\346\246?\006\001\254\324\036\032\221?\343\354\362%\257\264\226\277\236f\000\330\000\211\234?\311(&\341\001\277\226\277Y\216H\210O\321\236\277T9\023\"\356\305\301\277\346\251/\322\0370\226\277kJ\330\371\301\243\220?T\227d\2452\237\245?L\213O\271\246\375\260?\014\001\360}w\231O\277\364\224P\272\227H\206\277G\326RK\002Y\302?\222\237)\261\007\246\250?\225I\265\205\366\275\307?\270\271\234\273p\354\274\277<Hl~\2652\270?\020\215n\202\335\345\311\277\023mz\331/\220\265?$\375\016e\261$\321\277\313\210X\231|\340\225?\221\365o\307GJ\277?\367\250j\r\016\002\230\277}xj:5j\300?\030\373m\335Nd\250?\311\022s\262\016\033\232\277\"E\205\342\222\371\322?\000\316o\010\255\303\250?\322*\300F\207)\224?\353\267\240\313\"1\224\277:\347\377\311r?\300?9\022_Q\013)\250\277\231j\321\375\366d\301?\331\327\322\"\020\341\257?\333\3733x7\014\256\277\'\0331O\376*\206\2777\030\233p}\257\253?KEr\010\206U\267?\217\020\006K\333\353\251?),X\177#Z\277?.r\301S\323\216\267\277\033\027c\005\333\343\237?bj\213\305.\010\223\277\274\221\020\370(\243\311?\\SuA2\013\301\2778\010\345\033\220\357\201?\013hp\337\343\344\313?\023V/\217\272k\336\277B\327\020\032=\242\271\277@}j\271\247\362\263\277f\346T\203\375\333\304?\3523*\335\366\r\263?\241\374\301\363\314\016\244?^\214\222\307\370\375\217\277!O\237\014\036\216\275\277\331\335\257\332\337w\247\277/pl\257A\342\251\277 -&\365\257;\321\277\303\312\203\t%B\270\277`\317\335\362\320\344\262\277\022\303\306n&-\277?\016*]\014\365\177\303?\232\351\312\200\207\203\225\277\333+\006\224\207Z\321?\342\010\274\377DI\301?\235\237\203\333U\310\245\277\242\344@M\017\331\225?\030\324\216b\243\207\302\277\246q\255D@\217\300\277W\211s\313\364\201\244?\227\371|2\325\203\302?\000\217E2\240D\274?R\252\177\223\200\275\224?*V\215\203$\254\247?\345\253N\334\250^\306\277\275<\316\263\301f\254?f\035\342\311M\017\210??\026\343\256J\036\257\277Z\314yO\037\275\310\277\263\367\023E\221\256\301?Bf~y\215r\262\277\215\203\025\000\314\362h\277\326\260\332\260\244\'\265\277\331V0\262A\037\207?G\337\316\271(\013\256?\247q\016\216\324\013\252?\302Q\n\n+\300\252?\247\000\303K\201\325\231?\271\3372\256h\242\252\277\237\336|\'@l8?\271\305\262\231Z=S\2773\312\341\221\313=\310?_>A\215\223S\306\277Vg\345t\330\360\254?\352\244\243\216S\277\232\277`\302\275*\336\232\244\277\373;F\204\177H\311\277k\375gA\323T\245\277,\036HzR\374\261?i\036#\377\036H\264?d\254\321\274\0335\267?\250\266\231h\230\255q\277\250\366L\225ne[\277\007\260\000x\244M\263?\270\254]\2135F\235\277u\213c\234\260\335\221?\265\2413\303\311\n\272?%\354(\014\000\313\213\277/\026\253j\001\254\260\277/@n\212\372\227\256?\037Z\323\006|G\326?\037\2436\340\034\324\254\277\376\207\241js\202\271\277\245\374\254\305-\224\321?\016\256\215!\311\321\307\277#\224|\n\272\305\304\277\377\355\212\017\232\332\304\2778)l\222\335W\235\277\264\263\267\342\367|\250\277\210\346\2363Li\262\277\320J\312\227I\246\270?\342\263\031^\005C\263?\030nI\n_\231\302?\240P~T\033^\276\277&S-\3572\304\260\277\033\254c\342|\211\242?Y\235\205\274\344\213\252?t\336\326e\274\226\266\277\300\347\315\227\240%\227?\345\370\267N\023\360\223?\337\347K\225#\210\321?E\251\177\307\330|\262?\321\247\330nz\337\260?\276\330,sx\177y?\374[\215\330\276\244\300\277\2407\223\322\316\355\312\277\262*\t9T\230\253?[\024\314 #\365\236\277\313\242\334\272\r\236~?\373HG)c^\234\277\323\204\002\216\326\225\243?\375\026W\370H\000\257?e\353\324\317Jy\254?j\300\360\254)k\260?=jh\246-\006\215\277\312\376\001?}\345\240?h\363\035\372\027\\\221?8\221\340R\327\270\267?\320\372\371\'#\027\234\277/\335\373j\200\033\241?\265\366\nhr\033\245\277\020\300\315T\367;\245\277\014\337z\377\021\307\317?\314\273\016\032y\361\251?\307\221\252\231\330T\272?~R\342\313.~\311\277\374\347\353\232\247G\231\277{UYj\247\234\271?\016\232\337\n`\031\265\277\n\345bl\rY\251? Z\357\372\207\027\273\277\352\234,\302\3034\250\277\345\345\245\020\252\003\251?,^\336\364)2v\277\216\266I\301\251I\246?\347:\341\336\'3\236?\267\335Ou\306[\230?\276\343\341\275\275\256\204\277\201\334\305\007\024m\245\277\2038\302]\r\231\266?y\000#\311\355\365\243?\013\220\366j>\010\260\277\313\'\303\327W\361\310?\024\r\005\177a\021g\277\206\'Ns\371x\275\277\226\307a\312;n\262\277\036($(\213 \315?\023\224fr\251\353\274\277\323\224k\342\035&\302?\213\2138\337\327)\300?i\005\3145\023i\257\277\"6P\r\372^\262\277e\017.\003\004N\303\277\262\367\021S{\026\250?\2436\214\n=D\226?\203:\016\225\232\247\251?\003g\246\344g\304\240\277\035uX[w\351\250\277j)\2217\231Y\246\277\014].Lyjr\277\007W\231\234\200@\310\277\242\220v\375$*\257?\222E\025\3122\310\253?\014zw~\2376\256\277v\035\231\273\373D\306\277k\360\335\340\300\323\246\277c\346\351\304\025\303\245\277\032\025|\316\310u\307?\245~\223\025\323A\224\277m|\355\227\355Q\303\277s\340\272On\200\271?\2105\341\023r_\265?\255]M\310)t\261?\205\027\335p\367q\212\277Y\031\003]\234j\315?\205\022N\262\002\254\264\277\246tz\271\242\227\276\277\307%\310\227\241?\263\2776\324\002h\270\212s\277^\254\231w\207\230\252?*\336\025\177\220\004\275\277\213]\263\276\3422\310\277J,\'?f8\263\277_\212\313V\350\267\271?\177m\377\313FH\313?a\362\013\203~\333\326\277\377\310\036\3116\376\254?\230\203\n\246\375x\267\277\205W\\\230j/\252?\256\361\337\275\246\200m?\314X\220\232\304\243\260?+\304\247s\264\333\272\277F>$\327\272\006\221\277\373\266\2750V\023}\277\363\307\244Y%\215\305\277\317\363\t\311`/\311\277!\204\370O\233\245\230?\211\346\275MZ[\240\277k\312\317\253~#\335?\305\341\002X\266\263\272?\354y\212\370\332\300k\277eP1\033\262c\313\277\215\347\206\261o\374\272?\242\363\252\013\365_\201?>\377\365\273TU\227?\024#G\215\310\271\261?\302\341Q\"\2413\227\277\020\005\"\221\260\266\366\276Y\006- \023\353\252?dh?//B\241?\336W\333@N\266\276?8\324\336 \321G\273?]3\302\235PL\271\277\277\032\321\313\367\267\324\277B\260\263]\275\334\222?-h/uM\005\301\277\2119i\260\325\206\260\277\302\341\332\333\356\374\263?\302Py\310\321&\234\277\224\026IOv\261\265?\353_3\270S\336\241\277O\3610\236\334\014\261?\264\0332\360!\260\272?\230\263\036wd\026{\277\234s\027\366\356\373y?F9\200Q\207=\242?r*+i:R\323?\300\304\255\335\226u\321\277\021K$c?\222\246\277\271h\320Fq\315\241\277\240\375\364\245-I\241?\025\300O\343A\375\267\277\013\317\013\350\303\205\260?\336\263Q\037\317|\276?V~\035\230\332\000\256?\214\340\212\204i\004\260\277\232\013Azt\207\266?\227\'\031\177\263f\260\277v\264\021\253=o\222\277\265,\210\031\226\221\231?\n\004F\370\201,\277?q\366-(\267`\203?-\216R\326\277\222)\277\355\346s\302G\371\255\277\371!\022r_\t\302\277W!\026\007\314@\270\277\220\250.I\343\202\302?\354\304\310\013|\247\254?g\004\'\367r\252\256?\260\271\342\333\340\022\302\277\331\321#LZ<\301?\\\211j)\210\027\276?zW\366P\021\307\271\277)\2701k\376\235\272\277\2667\377\314]u\311?\367G\"Y\344\220\250?\357@l\2512Q\274?\206\024\263\215\242N\226\277\375\273\3604\320T\224\277\327\254F_\221\272\313\277S\235;\275n\271\240\277\206w/\303\t^\236\277e\342\366\324\236A\262?\313\023\371\r\031\273\255\277avt\000J\260\237?k\024\254\031j\271\302\277\254\314\312\351\373\250\255?\r\272\353Z\'z\271?\373\364\240\237\214\023\323\277\022\037J\013\236T\274?\003R\303\252}\273h\277s\256:{\240o\261?[\033\350\213|\307\277?\273\312\32238%\243\277\267X\025\365\351hq?\037)O\355\213\'\261\277 \223\311\212\227\025R?0\003O\271\214\370\253?@\226\035\212T\272\267?\210\217\350\336\016\343\261?\307\204\035\214qY\250\277\333\342\002\341\265=u\277\252h\2437\017\333\240\277m9\355\307\003C\250?`l\364\360\251\323\253\277\326\t\241\013<\354\250?Vf\235\316b\261\254\277\023\210\370\024uf\277\277\000\356\274\025\217\267\242\277\227\213\242S\377\277i\277\013\234\363\367H\200\301\277\177\014\271\023\251\241\227?\353\343\207Z\010\367\222?9\303ku\373\277\321\277\336\342\033p\036\233\207?\352)\366zw\366\271?\345\305k\215\177J\277\277\203\245\206\333U\230\263?\246>yM\374C\230\277\034\216\352\236\n\326\266?\222pQ\2523\275\226?_\211\357\251\332}\273?LV\237\334\004j\315\277\356<4\216I,\303\277x*\337S\325|\264\277\233G6=\002\250\226\277\306\347<\220\204\326\260\277\357u+\235\305\236t\277\317\273\2752x\323\305?4\033\341\341\223\307\255?<x+~\220N\235?}#\306\225\342|\243\277q\351?\255\355Q\273?\312q\021\204\014\017\326?1j\3758h\353\222\277M\271E\202\366\026\306\277\232d\216\306\345\014\255?\343\252\222\227\227\361\253\277\032\355I\333\240\211\212\277\375\235\205H\363\027p\277/\305X@\337r\242?;[N{\250\220\271\277&\214Rz\245\271\262?|Ar\033\273\301\304\277\020Q\022\350\033\351\306?\320\351\227\342\306v\236?\245y\017\304\312\263\215?f\021\000\257(\010\225\277E_I\341_f\243\277\006\210\322a\246\312\302?5\345\034D\206T\262?\017\013\345\016\337[\306\277\022\302:k<R\220\277\\I\033\334\016\321\263?\376CH\215\243C\301\277_\344s\344\220&\273?\246\244\362\021#\016\251\277a\266\306\007\017;\263?_\032\335\324M0\330?Lh{Ay\035\315\277cB\\k\026\t\230?1\031\227z\341\016\252?8\205\216\014\260\337\302?\354\325%&\353 \316\277d\306\360\235\007\305\244\277\'\267\331\235\231\240:?X\3053*\370X\253\277\"W\037\034q\360\245\277\257\033|\232^\367\246?\323t_\335b%\246?\247\024!7\364t\246?O/\211W\354N\227?\006^-\270\244\223\257?\350\016u\257\310\253\263?\3641\247D\013e\222\277Tx\232\373\0351\272\277\n#\313\350\377o\253\277i\231;\242\036\326\236?\267\245G[\023\226\227\277\3238?h)m\243\277\360\301K\315;s\320\277\266;:|V\225\244?\374d\252\233x\245\243?\323\304#^&\242d\277\353\343!A\254\350\250?\356\014G6\364?\253\277j\345\033cu\'\272\277\325\344\366zY\375\264\277\225\324\265\357D\216\262?n\272\037dZ\300\203\277!\030\200\023Lt\256?\234\223\273\334\320s\274?\334I\206K@\336\272\277/\202\036\201|\266\230\277\220x\007\221\257S\323?\344b\352p\'k$?\345\234\277\027g\207\227\277\215\322Ex*d\234\277\345i-\243i\301\274\277\231\232\233\206\311\013\223?B\342\226r\207\353\312\277L_6h\253\005\265\2778E\317\201\335\364\252\277\317\006\\:\230\020\302?JH\263\274\347\321\206\277\221\037\331U\213;\310?\221B\361\330u\356\244\2773e\212\027\376\200\301?~\002*\323\'\374\321\277\026\347I\305\230\275{?\004\016w\313V\324\266\277U+\2420\030\177\233?\325\207\217\272,\201\252\277\237U\2157\'\214\302?\337?\271X[\350\224?\'-\204\254\323\027\277\277\252\031\267\276\033\177\266?x\334\001\270\325L\265\277\360\213J\354\032T\242?\021\316\355o\3147\300\277\267d\324\037\n,\223?\343\267\2774\027\030\263?\272\345\347c\023i\307?;W\367o\202\347\252?\330\0021C\002\355\274?7X\332^\002\200\254?\277\352\343\222+\337\256?Bc\350\022\344\274\252? *\\A>J\264\277k\236\272\344\200\034\307\277w2\240\306\220\263\306\277NW\202\273i\256\241?\200\237\271 \337\324\310?\245F\253{g\262\301\277\213f:^\365d\240?_\24406u\353\225\277\205x!\301\002>\266?R\354C\357\257n\242?\224\022v\267\r\361\300\277I\270\313\200N\026\317\2775\340\225\334\r\025\237\277b2\242\277\r\215\265?,\036y\215\343\270\316?z\023\324lJ5\265?B`\026\262\364\243\252?\341^/Mq\035\265?\211\0142\260\241(\303\277}\232\232\200e\025\315?c\r\tS$k\313\277U\301\343?\245K\255\277\024\014\205\2167\230\271\277!\375\305j\261j\264?\323\302\3555\361!\242\277\016\227T\232w/\307?\tE\315\030T\241\251?\\\014kU\177b\214?VI\001\231\212\362\304\277\231\227Y\310l\321]? \353\2451\305\033\240?\027\002\374\036\013Q\251?\233\035`\240\276v\211?\010\333\251\366\241\252x\277HM\206\025a\271\253\277\0144\315\035N`\264\277>7xakE\300\277=\365\323\211a\353\300?]\235\356\266B\005\226?\366e\021\325\245\376\274?\323\216\364\202\351>\266\277y \216\270\t\232\260?\005\203vg\230[\303?\242,}\260!\003\273\277\231NR\235\030y\272?\037\242NU.\236\310\277!\332\003\365\270\326\232?\271\365t\215pu\262\277\203\026\367\215\260\250\304?0\341T~\214d\240\277I\200b\377\270\255\267\277VG\241\272\224\005\243\277\261\274\320\\o$\246\277\377;Sj\302\301\300\277\334\221\245\352\264i\252?\331\367\250DH\334s\277\021-\251\nb\230\246?\277\203\335\370\030\237\250?#Yv\351E\276\211?&\310f\340\037\363\311\277C\022\033\020n\276\261?\367\257\337\227\242n\261?\003H{\200\256}\257?\250\361\224\026\242\246\303\277\034n\357\'\260\320\260\277\371<\\G\211(\252\277|M\307\241\202\260\267\277\221\036*3\257\357\266?8\032\014\205\215\\\251?|\366\t\007\227\024\246?H]\257}\3532\305\277\236e4\256\205\327\274?\242#0\242\231@\250?\300h\034\331?\336\271\277iT\225\330\223\242\312?\036\3232M(\301\307\277\255\031\265\rQI\261?\213\013\2568\351\241\220?\245\344\341\006\2530\227\277\nGl\250\326\220\243?\300\017!\000\027\013\300?\232\216\005Y\025\256\314\277\002\307\326)\270\377\244\2775\245\353\003\230}\274\277\206zLA6\260\307?\014r)\225\211\365\226\277\305,&\376B\274\210\277\'\343\340A\351\256\317?\306\304D\276\211%\245?7\363\014\216\301\203\267?e\032\255\262\347\'\211?_\314\266?\022\021\275?\364\270\370}\324\374\302?l,WZw\276\264\277\370a\215\333\367k\263\277\220Iz\005\265\320\243?\331\313!\251\351\210\252?PA\276\216\214?\263?c\"\324}\034f\325\277\264\223\315\307\260\023\275?\253=\264\002\213\025\260\277S\210\223\024Z\366\326\277\363}}\\i\376\260\277!\022\262w)l\241\277\215\020\330\247R\201\263?}\023\265\002\'g\257?\224\037k\200\013\013\177\277Q\345Q\257\207\363\214\277*e\222\304\244K\227?\263\021t/\215S\320\2772\365z\247\263\025\271?d\3530n\'\026\266?\324\360\301\366\353\215\260\277\006*\217\020\213{\304\277\364\247\366c\033\255\230?\351\2518\035\0244\263?\337\037C1\376,\271?\235:\332\333L\344\275\277\240\352-\031\214\353~?\321;d\244\216r\310?g\360z\336\032\206\312\277 \360\030\000t\236\261?\327nf*\032L\207\277[\025\277h=U\242\277\273\303\027\263\345\311_\277=GY\256\032\225\224\277\314\010\317\013\257$\326?\347kp\263\205I\310\277\2719T/d\351\232?\306\224\017\0027\030\224\277\301\332\325\357\223\010\265\277C\306#K0\233\260?\327\322\223n\r\364\260\277\3556]\002%\034N\277\314\023\326f\265\374\310?\374\354K\214\002\303\272\277\177P\251\335\327\254\271?\010\215#\2000\363\310\277\246`\241A9\337\267\277*\263x\220\r)\304?Z\005\365\277<X\302?\360\017\223\252\357l\341\277r\006\221\330\336\177\302\277\251\373\301\0366\360\222\277\003D\361\006XS\265\277]\261c\240\n\225\251\277\323/\rv\265\031\266\277x\262w\3433\224\260\277S\332r|7\007\310?\334\275\n\017\304{\257?fk\3759\224\346\275?\001\245\202\3711\317\262\277\311&\304(at\200\277\212\376\272\007\300\214\266\277\007\033 `q\020\303?\335\363\317\352C\203\306?N\237:\262FQ\224\277\2144\3470\341o\220?\215ST\337\3442\225\277\203\0255\nk\220\240\277\230\004\205U\372\266\262\2771)\251\001\327\364\315\277m\371E(\024\237\275\277S\307\324\246\177.\251?\321\035-vTu\266\277\214\327\025zD\227\301?\027\312S\271\302\315\262\277E\033\216\224\025\231\260?\030l\007\010\243Z\276?\005\n\274\350\327\263\312?\002\027\232\317\013D\251?\374t\247\226U\247\302?\362\316ZKw\227\263\277<R]O\232E\302\277 %\177<w\021\262\277\224\247\024\276\377:\265?\005\374eA\203\033\306\277\037\277\342\305\2719\272\277wS`<8M]?\275\321\255R\347\002\311?\251E\035\275\360\300\223?\331P\217\021\232\244\244\277\255j\330X\231\315\200\277\313\223\377\367\353\027\243\277\337\217\306\230\370\277\304\277\213\224\334\250\322\303\260\277\207L\241\nB\264\301?\224\321\242\255\375#\206?\317D\204\0246N\260?#\235\271(\362M\300\277\024w#\303\365:\201?\020_\231\357a\237\265?!/C+\025\305\251\277\"\250\354\200\004\252\274\277\366\326;}7`\260\277#\210\356\006\002\222\252\277\210\356.\355e|\267?\006\014\342\240 \265\306?2\217\264\034\306\201\256?\333r\276W\275>\304\2779\256b\350\255\021\224\277h>H\305\333\001\274?\374.\261\324\322 \306\277\352\352?\372\274\256\213\277j\251\0017Vt\305\277w\343=\222\\\360p?^\037\032`Y0\244\277\202~<\n\303\314\313\277\010X9vk\271\263\277\207\025\272\367_1\260\277\232\236\225\342\265\224\306?,\271\021-\332\236\310?\t\232o\376\363\021\215\277\367L\177\275\230\000\256?.k`\003|\323\272?\357T\250]2>\316?\274&\372\362\215\243\250?\013\313\'W\177\305\307?\253\302\022\223rI\233?\333ux;O\204\242?\336\331\253\312=\205\312\277g\231k\207d\026\236\277\320d\336\307x\023\241\277\302\\\277m\267\241\266?\027\224 \201R\177\246?=\237%K\3472\306\277q\301\257\352\272a\200\277\\1)o\227M\305?\277K\313\367mv\322?\326i%j\311\327\266\277\236<$7S\352\307\277b\245x0\273\363\235\277\304t\372\352X\272\300\277\323\342\255\021\021\020\227\277m\217\377\005\375\376\304?e Ym\307(\262?2\025\212;cb\205\277\250sp\203\331x\265\277\\\245?W{\343\323?\204\n\345\247\022\026W\277\327\027\003\013N\217\246\277@\266>$\3127\245?A\305S#\333n\275\277\016Nz\373j\325\302?\273\204\3765}Z\304?<\320XjF\320\270?\317\312\n\263\317o\303?\3161s\023\217\364\254?\305\261\316\260\253\364\241?\214\203\277\337\363\006\276?~\220{2/\276\241?)Y\027\212\020\302\210\2772(\342\343E\350\300\277\222\250|\270\201 \300\277\376\335\274JG\266\243?\372\n\371\310d\365\272\277\034&D\t\030S\303\277\\\n}\276kt\275\277\225\365D\001\303\221\230\277\020\371(\227mB\274?\374X]3\t\254\221\277\334\224\200\242\200Y\245\277h\266\307\025\006:\264?\020\026\323\332\370\210\250\277>k\177\355\301C\213?\354X\345\244\201\374\257\277h/\237\037\034\223\313?\302\342\206k\206;\254\277$Y\331\323\220\326\271\277\330q^\226\321\302\301?\265\223\333\262\016$t?~\322\r\274\2053r\277i\203\224sW\306\261\277\365\317#\301\265\000\177?EM\25526\270\240?\344\314\301L,\362\246\277e-\354\206V\261W\277 \241\335\204\r\352\250\277\241f/\224\251\177\247?\034\204\254\013\260\017\220?e|\275\337!\224\300\277\301\300\234+d\260\267?\367\201\217\337\000\310\223?\255\350\361\037\th\247?\200\033+n\263f\262?\227N\356\372L\332t\277s\3409\0137\325\273\277\003\336%\376{$\307?8x\325M\020\246\302?\351\356\336>/A\254?\035\330\245<\310\263\230?\352)\t\213\330\022\275\277/\036f\315\353\240\253\277\031P\214S\221U\227\277\225\306\340p\245\000\233\277%\261,9\230\367\307?\336\352\227\241~\226\220\277\371\267*\305\203\352\303\277]\020=$\327\237\245\277H\314Uf>\354\272\277\275r\330}\317>\240?/\235\311)\321\033\234\277D,\353l\324K\321\277B\007\206\366\\\232\265?`\232O\354\001\323\300?U\226K\367\320\211\312\277J\322Y\353R\334\300\277.\234\024\244t\254\245?\232/\211fd\360V?9\240\205I\304X\320\277\312\t@\004\341\244v\277\016F\340\2504\021\272?\177\311B\214:\002\272?19s\332\376\363\304\277\274\026\375\2000\252\271?m\207?*\240\275\310\277\'\303\315\310>3\315?r\343ea\257$\305?\347\257\317\036\n\213\262\277\247\363\231Q\016\322\261?\340\276\330UC\220\310?\006\351\252N\246\224\300\277\'\276\313_\300\372q?v\341XFM\000\312\277\371\251R\031\372\315\237\277-\315\246\304\213N\220\277 \210\336\226\234\371\304\277\357\321b\241\2475\243?UEU\327\273X\272\277\t\277\233\202\212\233\242? \032\305\332E\317\251\277\244\355\032\262\202\245\214\277h\035\3553\262\213\265?\357\007s\031E\005\310?9\321\020\2454m\231?2\206;)\217\036\257\277\374\343A\202h\203\201?\370\312\035V\353\001\325?tae\232x\277\245\277\317\323\r\247:u\257\277\'\261\317\275\215\356\313\277`n-\224\343v\320\277vx\356\025\351\026\276?&\213\264=\231i\313\277\351\354\272\351n\034\303?\264\315\n\344 \n\233?\256\304\031PCh\216\277\357\360\2608\337\333\311\277k\3608bQ\231\256?\323\205\3160\r\246\251?^\3413\206\033f\244?\217N\245\317\0023\273\277\"\333\250~Z\263\260\277|m0\210/@\302?\241\337\231s\203\345\315?K\221{np\241\261\277\230<q\032\224q\270\277P\325\025\324\300d\200?,w4t\033\236\260\277\260\006\307\245\371Y\264\2775\344j2u\001\242?\305\224\212[-\205\321?\335\354 \255\315\031\225\277\r\342!\311\304\264\250\277\312B\017V?\204\243\277\274=\330\252\210\252\270\277[\211\227\306Az\301\277}Jt\304d\350\246?\224\2474!\004\226\307?>81o6\374\201\277+\360\326E1\006\311?x\272\025\216]\002\263?\345[\227?V\201\250\277\203]@(!\264\227\277Ic\216\373\302b\270\277\220\371z\017Z\241\254?\210^\254\307\332\372k?C\354b0L\226G\277\231H\252\245\365M\301\277S\352\321\"\323\277o\277\226\010\207\220\213\247\242?W8\211B\215\331\177\277\221\'\202Z\255\247\314\277\224\243\361\224\202\023\304?X\014\3276L\216\246\277TU\263\221\340\303\252?\356\311\317\360\275\364\300\277J\237\324&\353Un\277@\255\217\274\262\336\257\277B\346\226;\252\357\255?\240\371\346\005\023:\310?\353\001\n\337I\021\202?)\261h\010B\245\301?D\337\252\272\363V\270\277\t\352\201\200\007\'\255?]q\232\2570\377\232\277\032\2234W\000\323\244\277$\034\276\207\232\343\244\277M\032%\267 \303\241\277\236\363\357\250\312q\246?\325K\202\024\2415\327\277\0066\225\243;\024\225?\255\302\342\213E\277z\277\224\233-0.\367\253\277\264W\365\343\320\267\306?#\212\320\3131-\271\2777%\202p\025}\261?u\222e\362\332)\310?L\234\213\3033\305\246\277\212\320\270\005)\324\207\277\254d\322\363\373}\276?\305\020\020\204\241\210\305?\262\267\004\037\325\223\270\277A?\2668\354\235\226\277]\221\254>\361v\326\277Yi\274d\352%\270\277\322M,v4\304\272\277-D\332\313x\375\246\277z\375\244\232BV\177\277\274\022\354\203\257C\305?\272\242\006$5)\240?\301\346\364\340%\335\221?\212\304\341*\217s\252?\221\236\251\324w\350\210?-\331\226\320\265o\205\277\026b|?\256a\262\277\001\272\240\311\271\023\265\277X\032\2726\363\376\251\277\353K\3144\312\254\314?\006\267\005\322\005A\250\277<|\320\344\327\202\261?\271\003\232\033{\004\231?\206}3\344?\326\234?\204F|o\331vv\277\221\t\300\266\020\276\235?\217W/\230^\341\253\277~\200\265\374q&\221\277v\222\256\246\210\307\274\277\273^|\376C\355\245?\223\277\233\356\021\341\303\277\022\252o\301\251$\241?_U\260F\007R\240?\270[oi\215\371\301?:?\365a1\201\246?\275\233Q]\004\320\300?\001\203T\327?\316\252?\205} \263$)\255\277\230\330T\354{\213\177\277\203h/\315\252\212\323\277/\003\021\261\026\215\276?z\2628q\247$\236?\251\231Z\234\374\217\256\277,\233#`!\005\311?d\223n0\177\035\264\277q\334\240\205Qd\250\277\r\311Ao\236\021\262\277\373VR\267\312\313\261\277\244\242\023\225\316,\206\277\032i\003\317\304\rZ\277\031:\001\026\337\255\323\277\370v\237\253\375A\253\277RX\352\364Gv\304?\2147/,\261\365t?l_\240,\336\357\320?\234\304+\215\272\212\270\277\277/4\215\353\235\250?\267\346\273\302;\241\301\277\201\240\322\003\330\024p\277(\356\242Gz\370\265\277^\234\246\214\347\001\252\277\245L\247\021\301\005\221?\007Od\377E\202u?\242\010X\200C\275\262?\271(\007\371\010\244\242\277\310k\237\327=G\262\277\203m9\306\331\333\300\277\251\321\261a\234\024\227\277\266\327R\365\201x\202\277\213\250\233\3446\372\271?\315A\354^cS\260?\2470\243\356\377\252\260\277\315\231tR\211m\266?\3353\326t\205\233\306?\350\200\363\023\221f\303?\252<_\035XY\325\277\276W\301\016\250\270\265?\036\307\277\025\000\032\315\277\364\014\207\317\214\013\263\277\255\353+\3077\315\261?\316\217\016\307\017\302n?\260#8w\362Y\205?/K\224\237\315\332\255\277\036@\213f\377nM?4KH\022\017^\302?\203\257\2610@\320\220\277.\366\316\351\210\261\236\2778\306\226\315\021\304\231\277\236ah\030\030|\257?l\270\210oO\375\275?\220\247\226\342(\267\275?\227\006\035\004\032\n\231?\213F\276\351\240\362\234\277\333\336\313\321\267\270\255?!\0051\206\253\341\242\277\350\007|\352\\\356\310?5\327\213\200n\273\241?\261?\004\025!\254%\277\332\201\002\270\266\\\242?\276OZf\371\023\223\277\242\023\275.S\336\300?%\351\003\327@u\256?\220\337\345\276\010\244\301?\355\227\372f\000\013\271\277:\242\242\366V1k?\306\016\346\362\301T\276\277\374\316\277\004mh\273?A\347\346\247\007O\263?\"3\216n,\263\254\277\323\230\316\345t\307\264?Q\265.\230\346E\321\277\371\214\252T@\324\262\277xwS\252\234cp?;\nH\336\326\005\276?}\367L\303\375\203\256?L\226{7^>\275?\005\002\202\264\216\375\305\277\2765\037\265B\274\222?\021\206\305\035\377>\263\277\207\261\234\213\377\245\225\277KY\347(\357\222\267?\255\202\013\021\n\220\266\277\'\377\245\306\331\351\244\277\241\327!\3446HY?\312\265e\356%d\301?7iu\227\311\252\245?\334\205bSO\335\234?t ma\036\026\306\277\255s^\277W\236\300?w\327\254\306BN\217?7\343|\371aN\225\277\342\024T\204u\247\202\277k\240\013\372;\375\246?\231s\033FDFk\277\344\320k\211\222Y\304?R\226\303\001\370\216\301?gN\204(wA\254\2772dR\335\207\243\255\277|>\n1\212o\271?\204\231\213\020\3353\257?P\224]\363\3105\263\277\337\224Y\242\320\207\267?o\224\262u\343r\321\277cq\333\223(\302\255\277\r\342hc\033\226\300?\317\024\265\240f\307\261\277\252-\210^\212\217\247\277Y\327\251\257\2556\274?oS\013\232\331\025\272?\267\027\206\002K\200\246?\225\030\t\205\211 \220?[:\344,\255\036\234\277@UU\200#\234\266\277\317\3157\200i\243\261\277W\2770\026\224-\267\277\211\007J%\371\207\233?\212R\245\275\320A\251?\235w\032\322\315u^\277\221e\241a)\231\247\277\314\346\254\337Ee\315?\222WF.dG\256\277\217\353\341\266\300\344\272?\341\373\211:7N\220?\0378t\327n\331\273\277~\\\022Z64\266\2779\231\271\376\365\307\274?d\361\206\350\367\243\234?\2124^T\005\354\273?\367\215\310\221\267\276\300?\212\326\251U\260\021\272\277\306\230D\225\020{\267?Gc\210\207\224\342\261?\371\037b\005X\274\270?.\224K\253\014:\307\277\326]\354\314Rb\177\277T\310@.\232-\267?\r\363\253ejn:\277r\366&\212\240\177\275\277\377r\354K\314\220\275?9\366\361u\222Z\245?\273\351\203\241\326\233\300\277\326b`U\366\336\247?v\337M\024hP\221?\306+\216(\330C\271\277z|\234A\325\347\242?\323\3622vy\345\222\277)M\030\203\"\267\242?\262\300\250\004\204\371\266\2777\213qT\261}\273?\241\263\326\375\"2\245\277\377S\301:\3010\323\277\367\005\352M\031\335\304?\324\363nZZ\305\226?\350\252Z\237v\350\311?N\254\035\3507\345\323?\356\005il\336\026\303\277\262\372\353t\261Y\274?\213\'e^F\277\254?\277\016y\004>E\243?\277\223\334\307\210Y$?d\351\303\'y\177\254?\257\240\365\270\257\261\306\277\307\260\351\214\275\206\264\277\213\256\017\354\205+\265?Pn\025 \032\360\321\277li\350\016\'\353\271\277\267\217<J4\025\274?y\335?\006Ay\226?>\266q\373\237U\246?\\\235\027\006:\033\226\2776<C\\\020_\246?(@\017\206\213\240\274?Br\240\377\003/\271\277?(L@)[\262?\322>W\342\';\313?\\\0177\230\366\341\303\277\242P,\025\0035\213?n\234ob\305\350\225\277\261\301s\310\002\225\265\277{\270\374A\014ip\277\377o\251j>%\242?\036\031t\214(\371\312?\2455Qu\2026\315\277\021\317{E\234\243\217?~-\237\036;\232\244\277\255\243\203\266\353k\264?\254\022+\306\356\201\231?e\033\026i\031\031\221\277\006\206\021\345\305\304\244\277u\036\313\206;r\256\277q\"\377\335\t-\243?\031\214\210\256\221\225\265?\372\276\240\354w\225\272?=\205Z\326\242n\241?)\326c9\347\032S\277k\337\347\223\357\004\312?\037\230\334\344\223\r?\277\244\013\300\204\204\000\260?\t\272\242\326Kv\315\277\311\373\272\323\360e\230?\005\317\210N\232S\276?X\023n\242\222l\256?\237\267]\221\243\311\304?\004\275\027\276\276\221\273\277\343\276\377\361\027E\257?]f\231\376\353;\264\2776\221\233\r\'\335\207\277\235\032x\336\221\320\241?\23071\252US\260\277\177\312\031\277\327\333\303\277\2777\222\2125\032\301?.\316\227)\336q\232?\367\206p\014\"P\223\277\177\"\344\256\017}\220?\307\271\333\275ka\252?\274\222\235I6c\266\277\234Y\007\372\252H\255?M\0224w)e\253?\201\256\n\200\"\222\255?@%\333\\l;\272\277\377zp\206w\353\320\277#\361M\316\217\321\216\277!\017+\032\355\257\306? \005\001\3272\225\275?\2114\346<\263\216\267\277\276\037z\331JB\250\277\002\217\263:\204\305\256?\014\003Z0)\251\235?\270oc`\007\347\274\277\332\322\273\027\252O\270?\210I\366\263\2212n\277Q\330\261\310\331\244\303\277p\030\332]\035\235`?\200\231\306\355\302\210\245\277!\202;\032Q\252\315?o\226\315\242\202f\261?\2657\224m\'\222\270\277\210S\230.\300\253\262?R\375\245=l\033\317\277yltB2h\252\277\226\364\025\200~\000\274?aJ\\\3371L\270?\334\210y\225m\256\226?\274\004\200V)\010\247?_)`\220\354\031\251?=\240\316\334\235\027\260?\360\372\3478\024\224\265\277\221X6Y\334\343\302\277\000\237\242\021ih\243?\245\343\013\202\210\322\232?\350\342X\'\230\276\271?\310\235\002dy\231\212?\235\034R\215Ud\321\277\257%\3442/\203y\277R\025V_\023z\277?\233\2215Y_\360\276\277\326\014\336;\244\216\237?2#\200\035z\370\270\277\275\034*\204\220O\231?}\207\327\371\n\034\306\277\375\241\245-&\254\241?4\215Rh8)\263?x\260\251\th\\\303?\006\267=XZ\007\240\277-\313D\273\310\373\303\277cG\224\303@\263\254\277\363(\373\351\014\314\237?[\321AwnW\260?\307\267\227v\037?\247?<\367E\n\353b\304?H\317Gn\030>\272?\r\214\357\0311\242\303?H\005.\341\032\003\302\277\232\304\355\220B\005\276?h\257\nhs@\250?\213\202_\312K\'\230?d\2202O\200\202w?\344\357\254E\206\254\263\277c\221?\353\rp\233\2779_B\351I$\310\277\005\251\276\371\231c\272?&\226n\327\250\265\240\2772\005\203\001\366\320\304?\300M\030q\3174\277?\357\237\372\231\232(\237?\340\0362\364\342\003\226\277i;\327\264\215\334\272?\263|\276\234\370\211\320?T\3042f\210\371\305?\330\233b\\W\253\232\277\n\342\247\343\374F|?6\274G@\250\373\245\277l?\030\305#\202\305\277\352@\242\241\2407\270?N\314\355A\237\214\212\277\370p\347HH\377\262?\373\242\330\0368,\266?7y\003\303+\206\264?\360A\233\354#,\303?\201VM\007\264\334\275?\200\017\370Q\337\211\265?\251\363\005\3708V\303?\205\002\004\204\244\374\234?\245\312\316nQ@\265?)\004\303\227\033 \322\277\211\241\342A\377L\266\277s\356\315Y\372\245\267?\2433\027\207\371,\201\277\273\311!{\212\"\316\277\267g\032\315(`\234\277\303\313\273\177b:~?kW8\324\237\267|\277/H.\321Fx\252?\003\304W\225\007\335P?\3163\026F\315\333\270\277\355\245\252\2662\003\302\277.r~\000\254\017\261\277;\371\314s#\010\271\277\362\275\204\342T\307\333\277\'\247\366\224o{\301\277q\002 \255($\267?\265\265P?*\'\260\277\377\302jS\032\n\322?\251\223R\2659\232\226\2770\307\341\027\002\347y\277\320\tgy\\\311\220\277;7\212-\215I\274\277e\315\305P\353\336\230\277F\304\365z\277\362\262\277U\252\252\233\203\336\252\277\025F,\014\274\177\264?\312Rd1\251\236\242\277\r\215r\333\350\313\321?9\231\366\263\030\306\262\277\325(2\356\013\227\206\277\266J\340wP\023\262\2778pC\0245R\206?\254\362\241\371\263\354\253?\230UB\232\311\347\267\277I\024\337\300\021x\273\277X]0c?\271\312\277=\357\234\334\221\020\213?\337w&\301\324\006\261\2779\242\026\355]\000\203\277\252TC\034\014\305\256\277\272[\344\352\273\340\300\277\200\332\024\232\332\031\234\277\007\266\272\374\244\242\253?\360\026\020\213\371J\242\277\023\212\007%\\\326\331\277^\322\355\275\3056\260?\273\325{)\361u\242?F\351<,\025\021\265?x\305K\246\326\213\262\277\225\333\272\277lA\216?\225F\215\222\340\244\255\277k3\275\034\037\351\245?\233\320\031d\205\246\217?\272\234Y@\345\302\246?\274j\200\033,\315\260\277l1\202[Sg\307?\240\207\320fHf\255?\242\256IW\307\357\260?%\306\325\177\023\275\305? \355_W\245\335\277\277O\025\334\'\226\242\263\277D;\226\244M\003\270?\237\333\377\010L\325\271?\217\010\265\225\351\212\244\277\327\353k\2209\346\275\277,&e<\266^\211\277\263\000\341\353d\231\263\277A\322\373\375\026l\256?\242}\250t\345\265\235?\274\023\021\340_\360\270?oQ\315\346w\247\264\277=\231-\n\267?\272?7\323\305\217\022\177\254?\177\333\312{\302\277\311\277\275\226\227\304\362\252\240\277\370U\356_\363E\250\277\335\036G0\2465\207?k\354\351\tam\254\277u\220v\257\313\250\217\277\017\0016k,\264\213\277\220F\257\304ft\325?5\254\014\204\302z\261?\352|\273\341\224y\305?\306\225c\3656\027\304?\364M\324\222<\357\263\277\025H\366~\020O\314\277i\367\257n\275%\325\277O\256\204Md\363\307?(\0231\256;U\266?\302S\354`\3778\301\277,\237\271\217\361\342\261\277\323\000L\216W\005\303?\230\034G\252\346\235\235?\247M\223HI`d?\350\301\024\363#y\327?D\223Cj!\004\262\277\031\306\265\013\210\261\252?\202\330|\341\221\260\256?\352T\245bEo\254?}.Ihx\377\205?G\331\304\272)I\322?\023/I\327(\003\256\277z\024\352;|16?\2357([\310\324\315\277[\300\346/\2630\257\277\231\366\'d\305\002\310\277\211\246\'i\337RR?v+n/\316\243X\277\031\213\375s\261\357\272?\204\256p\373[)\242\277Q_\241\332\245c\267\277\347\257\321p\350\247\300\277\255\267\271\300HLa??pK\024sI\226\277\251\354\346\274\237\366\311?\230\223s\332\340\351\210\277; \036\021\352\021\242?j\215;4\377\326\261?k\030\035\036\302*\245\277\321\373t\305\266)\215?,2\033_\222\005\271?L\236DB~\257\216\277\341\237\234\342N\337\273?\216\314a\214\213\\\235?z~\347\201\020\315\260\277\022cS\323\342\273\311?\177\374\361\025\304\340\215?\324o\0270.3\257\277\370\252\360\250\227\013\276\277\367\220S\316\021t\302?yG\022@s!\236?\374\375\244\3125\'\300\277\215\036\305\375M\362\266\277\321? \033\320\327\212\2770\231\251v\031i\261\277\355I\356\223\262q\252?_\2361\246\216\200\251\277S\363G\357\'\005\246?\267#\204$\211\333\224\277\347p\033wA\337\304\277H\026\230Q\217\017\242\277\n\312i^\375j\304?M.A\344>\006\242?\327\270\265\364\325\023\321\277\342A\341\243N\200\232\277\034\001!y\002q\247?V\244\253\305\003\340\321\277yAM\0273[\273?d\204\236fw\304\300\2774\242u\261\306\237\242?\013Kg\304{\360\251?l\251\334\024\323U\226?\236Xt+h\233\276\277\306:\322\014`\340\262\2774\220.b\272\000\264\277\217\312Z\276\257L\262?\207\220S\020\320g\312?\262\230\036\237\010H\245?\006M\027`\377\352\271\277[\2450t3\026\263\277\247\374[+\351\251\310\277N\350\2279\003\343\261?\341\345\331\353\024k\254\277\222`U\024\370\025\243?tF*\2267\360\276\277W>\363\256\027\240\266\277\220=Rg\316,\260\277\276`xmj\335\223?P\250N\247\2468\202?L\263i\240\216\345\270?\346e\242\275ba\256\277[\210JY/\005\270\277\'\262d\351\030T\216?r\026D\025u\341\265\277\201\256\371Cx\250\226\277\220\216\0039\023k\250\277f\262\261\227.\211\225\277F\270\300\371\325q\263\277\203\206\277B\201\n\304\277\021\005P>aT\271?)\355P\346\370\246\207\277V\020\356!\363\225\243?\003\225\337m\262xY\277\216w3T\020\350\227?\267\237\354\t@\254\231?\350\031f\240if\277?Al~\276\347h\250?\315M\013L\031\'\315\277\305\t\222\212\2220\274\277w\331E\336\336\254\241?z\203\330\204\000\202\265\277w\017\272\303V\241\272\277m\226D\346\3727Y?,\3566\354&\010\240\277\010\216\337\252\245\\\252?G\3038\216\224\364\224?\367\221#\307\307\275\274\277\234\251\212\366~\240\267?\250\364\251Hi\213\263?\030\221\375\013\374\234\310?]\213#\314>o\257?&,\232\222\2617\225?\273huH(nk\277\335\202\337(\3040\264\277\314\367e\264\\ \301?!\025\321\016\331U\242\277\201\025\335\0215K\304?i\371\001\256u;\260\277,\201`\250x\016\250?\316D\224--\346\216\277^\336\r%MS\300\277H\3479\366\265\301\250?\265\317w\274\3059\267\277WhGr\372\255\244?\372\217U\224\370\361\276?B\310I\\\210\233\215\277\201\332\2748--\263\277y\006\362\227\216\230\234\277@:\005`\252\355\246?B\t\0238Wa\264?\334\021]\273\241\243\261?f\212\264O\311u\234?\237\243\203M;\361\262\277\224d\273iz\351\242?K\374%\365v\334\220\277\372\037\345U\222G\276\277\376\350d\024\177y\250\277O+\224J[\361\265\277\370G|\275\350\352\227?\220\335y\010\363\321\301\277g}\033\006bt\242\277E\016\032\243\357\030\300?\312\037\235\301U\034\257\277?\324\033\325z\253\260?\251\375\302M\212\317\312\277\220\340jR\241\314\241?\364)tZ\t\234\302?eI\270\373\204\316\305?=\202\030\263\016L\267?\373\2757\025\204\345\260?\202\346\330\376j\005\320\277?\377\023\007/\245r\277\332x\307s|\264q\277\266\251\364\254\204\242\257?k\036K\326\361D\247?\"0L \310\346\277\277e\257\020b\367vn?\231\375v?\026T\205\277g\226\203HL\306\254?\266\371.?\027\202l\277*;;\020\311\350\212\277\230:\230\331_\030\311?\356\271\032[\0103\240?\r*B\337\354a\267\277\243\2142N-f\257\277{\3711\312\206\235\301?QI\367l\212\214\234\277/\023\006\256.#\300?s\305\271\306\234\233\241\277p\263w\363\336|\241\277\335\266O\330\306\003\236\277z\353\375G\016\214\232\277\200p\274\323l{\304?\017\317\262\241\364m\260?\002\257\252{\004\227\275?X\017\220)\320\033\302?\026QU|\214\005\261?\361\314\362\214\314\235y?0\237\263\300\024\"\234?\327\260L+/\035\323?\247\001\206\364hZ\274\2771M\213\320\306\372\261?\342\312\024V\032v\304\277\340\226\r\246d\357\202?\367U\313(\300l\230\277\263\330\332\206\345\377\243?\344W-F\025\246\221\277\200\036\241g\234f\244\277\307$\026w{\030\264?<\250jW\3616\231\277\250\3414\315\"\276\272\277\256\336R\373\317\367\305?\304k@U\2543\270?\316\236W\001\372W\212\277\246\026\005\022\2341\215?h\275F\034\307\255\316\277g\357q\312\021\252b\277OV1\274\320\276}?\034\260\375b\335:\221?\023\273*!2\266\270?\013\264\214\234\251Mg\277\373\016\354\340\217\321\217?\'\034\377e\027\027\267\277CX\021kU\013\322\277\230U\200\001\254\267\301?\337\337|\275\226\212\254\277\004\327$\265FS\311?\216\212\305?\305\222\251?D/\335\264g\033\233\277xK\371{\272\205\267\277\231\252O^\366p\240?\235\177\025\360\375\250\200\277h\261*\016]\231\245\277\207\356\255\206b\014\250?\004:\363\266\351x\321?\243\340D\341LQ\272?\025V\n\024h\325\262\277\243\'E\310\017]\303?2`_\014\236H\274\277\230tS\262\3504\243\277S*\002\202\253K\223?[.|\023\010\021\250\277\310\220\005\204\214\274\274\277%=\013Jz\013\241\277\260\217\353\356o\234\274?mR\256\233\nT\274\277\267\314\376h\214~\227\277\3306\363\300\345\234\225\277t\300P\273\305\017\325?\023\263\210\312\221\000\265\277rQ\334\027sy\217?)\r\354/\225M\267\277QG\367P\312=\306?\216\301\235\357\242p\265?\257\t\342\277\214\354\262\277),)\237<g\251?\232-}\017\256\233\244\277\303\306\"\363/\237\254\277\227~\312\200s \262\277\370\3119x\033\242\251\277\333\300k\242i\367\217?>\\2X8X\275\277\310\371^\270\241s\304?\353\327.\337\0209\251?\231\320<=\006o0?\034P\354M\217\376\301\277\371\270\301\230\032\320\267?\3531|\236\031n\230\277\003\227\020\363\202Z\300?\204\2751\321\032\243\320?\306\213$vNc\253?\3515\007Tm~s?\023G\212\031\216V\274\277b\003t\tu\022\320\277<\034q#\210{\260\277\253\313\303En\037\246\277\252\010-\265\024\'\277?\242\352\202\307\221+\254\277\212\350m\304U\263\266\277\262\324b MM\312?\304\374\301\310\323\214\226?\311~\2669\242\362\262\277\373\345\032\036\240\205\256\277\213s\311_\316\014\260?\016\312\311\037sz\255\277\263\205\316\211\222\212\301\277%\236\210\n\351/\266\277\347A\235\3416\243n\277\202\332&\214St\274?j\031K\372z<\240\277<\304[\231\262z\255\277\265\003v~\243\356\201\277`.)\000\273\244\221\277\\\350\366\227Y\212q?$?\323\301\322\236\244\277/s\016t\346\037\276?D\304{`;\250\257?\375\2467\346\212\000\272\277\230p\376j\036bv\277nD\314\231\271\256\306\277\310#\036`\"$\217?[sD\273\230.u\277\211\034\332d\233a\252\277\246\207\027I\254f\302?\376\260C\212\255-\321\277M\246P\215\017\370\214?wE\320\217\364\303\263\277u\247\357\310\203\332\246\277\235\252[\340\305\030u?\202\247z\373\256\203\266\277\325\026\335P\266.\265\277|\264\334r\240ow?J\351\346\343\370\201\237?\nKPj/[w?\344\311\263\322\323\303\270?-\031fA3\300\252?\241w\356\021\365w\222?_\"\014\240\237\\\257?b\241\323\207d\007\265\277\267\"=\224\361\316\303?\r\007\233i\233=\254?\356\267\013\372/\373\310?\214\320\024C\343\365\224?\227I\377\373\002\265\261\277vU\rr#\226\303\277\372\341O\376\344!\257?(\250\314\332\305\356\240?\230\001\207\214i\323\267\277;\345u6#\216\270?J*\235\0165\004\252\277x\355\344,#\016\305\2778\325\200t\321\203\230\277\217\\\026\365\377\305\274\277\214\253U\372m\253\270\277_\223\223F\032\326\224?\257C\273LQ\201\221?W8\244j4\324\263?$\344v\324h\326\216?\221\200O\223\204\235\243\277\375\357~2\247e\304\277\3239B\350\031\354\277\277\376\261f\032\000}\263?Ss\367\307Pz\274\277\230\274<_\223d\256?2\232\273\341\030:\260?w\241L\035H\256\265\277\206q\247\235\014\256\310\277\3545\305\211\334#\255\277\237\216<~t:\260\277+X\231\305\213\024\313\277\"\321\313\032K\364\224\277\014\020\240>\3055\301?*%\271\000\213E\214\277Wj\357\264\014\020\314?F\200>M\210\375\254?\246X\020\333\3707\227\277\304\253\202\212Uw\267\277\025Mn<e/\265?X\265XN\377H\205?c\3258\260\235n\261?\030\023J\212u@\276\277\rCc\337g8\272\277\243F\334\246\323\271\243\277\242\037\314\335\201\030y\277+0\353}\n\373\275?\205(\221eK|\261\277\250/\213\016\004\260\217?3lc\302\207\375\250\277?\255|\237\330\300\222\277K\374\276\026\022oj?~\r\202\274\t6\302\277\005\343\030\n\014O\244?\343?\373\253\342\376\252?i\037\365\245zQ\243?\362A\302\211\214\377\246\277\325\246g~\332\373\231\277\267C\347%\307D\302?\311\341Q\307\215(\315?\257\'\341\271\326\030\251?v\366Z\177WS}?\\f\316\244\237\361\266\277\034-EB\344\335\246\277\236\002\302\223Y\311\211\277\347\341\361R/\274\266?\225?\230\366/\377\235\277\031N\002\207\256}\215\277\375\t\271\256\034\365\254?\320\205kzs\036\246\277\265\276\r\263\373\267\245?\n>\020\237z!\260\277\261\351\300\212MB\276\277\2205d\333\213Y\251\277qC\310\205\003\r\204?%\322\355O\234\300\301?\007\276\311\251\010\201\323\277\254yQ@dj\221?~\027=\200\355\207\256\277VH:\345@\331\237?\010\317\006\204U&\205?\274\203zJ\233\201\255\277W\303%\342=q\262?\355o\222\276\t;\262?\2205+\3600\037\273\277\347\225\344\037B#\201\277\235\264\231\003F\336\263?\000AD6D\353\317\277=y\223\215\340\nd\277\037~nhb}\245\277\013\277\210\023\357\235\245\277\272\001\235I\331\330\272?\224]\003\315\312Y\223\2774!\231\2453\375\265\277xi\202\202}\322\303?\314bDLA\264\240?=\310AK\233\241\250?\266\017\026M\005!\252\277\277\210\014\220\355`\270?:\357\320%2\336\262?R\372\302[D\347\263\277\341\022\257uO\226\264?.\246v\321P%\234\2772\222U\343\314\324\223?+\262_{\030\007\252\277\341\014^W\345\326\303\277\347f\225\007xl\260\277~\305\355\266s\206\316\2774\204\340\331i)\233\277(m\335\264\006=t\277\235#D\026\270\356\263?wj\013$%\322\232?z\200\240\255SF\271?E/\317\210\213|\215?\266(u5K\363\261\277,\003Tb\2237\262?\230\r\030\304Hw\261\277\311fj\034\362\212\242?\302K\354\305-KV?\'\2063\322\367\026\240?\232\0137V0\022\214\277\230z\250\230\213\213\262\277\265\211\302\253#p\312\277U\365\027\262\241u\275\277\336\343Lb\302\205p?\031\')us\010\261?\260s\301I\340)\300?\\\250\032\310U~\223\277\317\304T\300Z\316\260?r\303\342\236\3217H?\203s\005\300\235\005\260\2773c+):\007\242\277\005\314\362\302w9\222?C\350\202\324\262\025\201?\016\235$\324\244\272\261\277\322}\014J?\314\302?`\321\203\203\t\204\310?2\244\243\370\324+\250\277\347\342\320a\364\341\221\277\230\023\305\033\321\337\264?$Y\263g~\363\314?\265\251\010f\231`\251?\200M\234\267h\033\250?\260{V1(\346\302? _g\024\005\216\254\277\272B\373o\364\274\251\277\217\016\n\033k\376\300\277\200+d\027\024\260\262?\354~\261\267\340\361=\277c\036\023yA\200\236\2770\244{\202\250\r\273\277\347.\014\r{\232\253\277\013\204\313m\301\250\311?\004\366\342k\311\005\200?\313xY.\346n\263\277hp\277\035p\000\262?\335\201\367\210\211\312\250?\342\370i\243\331T\256?\356\234\t\023\360\246\255?9\220\315tM.\231\277jpNA\372k\306?\025\331\206\347kW\272\277U\314\337\250\225 \261\277w\305m\213h\201\260?\374\312\307\2049\242w?|\357\310\252\177\373\272\277\263q\010\245\266\236\244?\214\252\234\000\223\322u?m\274\036\216\354\376~\277 \324\270%\037\340\257\277\265\363\245T\357\004\257\277V\375\345\223I\305\266?9X\324\372\306Y\277\277M\322gpya\237?\313\272t\365\366J\322\277\027j\366T\224\250\202\277\354U\255\307\217\r\235\277\316\232\305\026\nw\303?\331\026\204Q\241\031\251?TR(5\354\353\277?\210b\354\320\266J\256\277c\334\332\377\340\231\266?t/\033\267\023R\275\277\021\013!\314\221W\275?\345\254\311\212\024\013\260?\304\362\363\220B%\265\277P`\322r\263\242\277? yX\373xn\314\277S\177Q\325>;\310?\253^y\006\203\263\300\277\342GX\032|\306\214?/9\026)5\001\266\277Jc\210\203-\303\220\277[\3137\207K7\274?H\207L\306\005\024\226\277\263\335\211\200\354\203\214?\273!=\366\346r\257\277\202y\207\355\347^\250\277\246\227\\\362A\023\300\277EX\036\036<\371\251\277\303\356\306\321\010\215]\277\221\365\331\342+\262\262?H\220\016t@f\220\277,%\316\346\017\345\260?\027\217\252J\330\271\264\277\221\350a\300\"-\276?3\226\347B:\035\321\277U\2540y[\345\252\277&[\226}w\304\271\277\266$\275\225\225\001k?\300\n\364\327\335\304\306?an\030\'\351f\260?le\020\324\2000\222?\232e\024j\307\263\302\277g~\322\326\240J\264\277e\t\205-S\311\250\277FG\227\353ch\272?\224\265_y(R\306?.=\236\220\213\217\177?\231\314\376\273\377N\221\277\261\275\220\273\3247\262?\351\216p\0211\035\263?\r\271.K\020\232\237?x.\221\2332k\266?\367\335g\252\362\330\224?c\262{\006VV\254\277\247\177\261C[q\267\277\261O\000\241S\304\246?\033aQ\334\334\006\270?\"0]Npno?\323\376\304\264\336\022\242?\367>.\177\203z\305\277\237r\214\276\2416\243?\360,{\340\371\351\231\277\211%\005t\017\024\305\277\251\004L\375\326!\233?\275\".\231W\030\262?c\270=\355\256F\253?!\241d\335\217\231\241\277u]d\261\300\237\267\277\261@`\270\027\007\247\277\360S6\233z\243\217?\ni\215o\232\215\254\277\006s{\n\3034\272?\254\315\231\010N\"\276\277\375\\>t\033\316\311?F\260\3313\355+\221\277\306\352\026\357\251\234\260\277Ej\263\242@\204\245\277\273\210\332#\203\010\222?U;\362\002\327\t\271\277\026\343\036\225T\237\263?\315x\237\232\201\341\311\277\372\327\254\370\344\026\256?\2749\341\231\323\264\257?\007\256\321)!\027\262?\022\265\331\343\032\033\274\277\025\355%]\346\374\261\277s\030\303\243\304\014\301?\017\002\270\346_\211\271\277\227D\306\263\312j\264\277,4G\264u\247\256\277H\230\252\334=B\253?\314\345\001\024\023i\230?x\360\374\323/p\212?\003W,]\313\270\270\277w\024!e\3327\262?v)\217\323\326\352\302\277%4Vo\220\342\245\277U\323\222F\211\254\317?\361W\344\214\324K\232?y\224\216^c\351\270?,c\013\271\3127\271\277\366\263\034\356bv\275\277\000L\272\t\277\315\227\277\353\302\\\'8\226\271?1\342\004\r1b\323\277 \226\270<\"\231\217?Y Q\007\375\235\222\277\326\\\014\'\033\202\272?\341f\374\236\275\202j\2776\246%\214\355<J\277\354\001\266 \371\334\276\2772\3529\306\225~\306?\315\004;\007\005I{\277\262\225\326\276\225\005\273\277\312\033\301\327\007\307\260?\000\325\026C\252\014\277\277SC\3420\324\233\243\277\323\304Z&\373\357\303?\274~E\307\364-y\277\'\276\341\306\3647\320\277\325\315\260\224{\260\233\277\310\0144\271Q#\213\277\270\177\352%\002\266\242\277\370\206g\204lI\250\277\027\024\272X\334h\251\277]\267`\037(\233\321\277\300O1\000%\037\260\277\327l\204\320F\357\260?(\001?\261t\266\322?\272\027F\331\372\234S\277\274\325\374G\333f\271\277\227(\350/\347\303\262\277C\307L@$\336\302\277Y\300x\307,\355\301?\364e\010\377)\033.?\026\373\360\271\215\323j?\225\375\327\301`|\320?\253\362\377\221\367E\251?\201r{\344\232\225\300?\227@\357\243s\014\322\277E\344\365\306\376S\303?D\224\360\202YJ\261\277\256\363\265\0322\257\257\277\344\347\235\2553\306\233\277\215\311\2412\206h\212\277\243O\244\275\355h\244?\221\260\367I\220\363\313?\276\030\252\246U\241d?\271\224\032\377\334r\203\277+\214\332\366\200b\273?\032\000\240\211a\256Y?\010\303\246*\224E\253\277L\207\256Y\225\231\220?-\017\371?\361\013z\277>Go\300\003\377\262\277\245\016#\253\037R\303\277\025\300\377\210\237\222\276?N\305\321\r&\361\212?$\267\246K\255\035\242?9\017\323\256\265\243\272?\232\3452\021\361\014\260\277A\304f\227\213\367w\277q\247\014\356\031\204\300?~\324\307\351\215&z?\025\224r\230\341\307\321\277\310\0329s\231\273\244\277Ox\357\216\030\267\237?F\342\244\345T\271\267?oN\3519\223\\\227\277\000\003%\036\0065\273?\342_=YaN\300\277\214l-\210\016\214\320?\032OE\260\320\222\272\277\216\322\210\241\371q\302?\007$\207n\354<\307?\211\017\262\rDa\263\277\016\253\037\230;\307\212\277U\366C\n\273\332\246?A\224_\364\274\360\233?\240\254A\313\261\360\256\277\323\233T\357\004\216\251?\251~\233\241\377\205\310?z\323\221\3223\335\263?\266K\245\014\367\033\270\277\301zr\265ki\265?\177\210\220\214\371\376\207\277\307\031_l\253\200\266?\335\'t\037\032\374\247\277\311\350\375?\001\275\243\277!:\234\252\207\300\241?\020\255\370\266?\206\244?\222b\267u.\022\271?\016\376<_H\231\250?4C\242\035\363T\262\277V\351\232Z\211\364\244\277:\254Y2\322\201\243?:\374\026\250*w\272?\236X<@\000a\270\277\310VH \356\014\302?<\346\353\177\206/\312\277\"\033\373?^\263\221\277\200\360\311\262\240p\304?\335\0071\257\227\216\261?-\260\314\271S\253\324\277\214\372\006\313\217C\232\277\030\326\232\3520\305\240?7\274\213\225\306A\257?fRis\201,\242?\306\030\356\2501\304\263\277`\342\027\024\314\307\322\277l`\2420\261\030\271??<\341\300\203\261R?\306\332l\034\324\244\272\277\310@\364C\034\266\274?\316\336\305\363+\001\261\277\276\016At\036$\246?\026c(\025\n\373\260\2770\322<C\222\352\234?\014\021\235-k\343\254?\220\017\010\340\272z\274\277\365\324\323\252\255\021\263\277a\'m\310<o\235\277\327\027\267\315\236%\210?\236\306\267\266\214&\302?\005\274\344\361f\212\247\277^H\000\315^\305\264?$\003\237\030\2769\237\277\037\024\003lgi\276\277q\255\354\235\016*\247?\250\205Cm\333\274\225\277\247\202t\275,Q\247\277\357@\020\247\220<\245\277\377hT\020l\307\211?%\006\222|\025d\230?\334\224\343g\016*\310\277\273\223<Q\262t\274\277\255\333\211I\374\350\226?!\231\003!\327w\306\277\227\231\355\225\274\216\270\277\270\014v\336\324\031\224?0\321\2524v\206m?h_H\314\232\217\310?\356\216\210pa\260\201\277;\212\177\262\264\242\262\277\272\265\251\277O\304\302?\242\2204\316Fd\302?\200\255\244\261}q\243\277=v\256\377\261*\206?+\342`\177\010v\331\277g\203<\347y6\253\277\343!\024|\236\330\216?\317\256\341-\374\013\201\277\021\\\350I\332v\247?\000\215Xe|\026\261?\241C\230u\006\006\227\277t\236a\005\r\223\313?\347f2\231\352\234\264\277\350\226\261\3157\325\264?\256\023\355\031\2423\253\277\216\275\203G\232\210\260\277\225<\341\335\2712\270\277\361\265a\303H\353\275?(i\350\010L\362\301\277\273k\324q\253\335\263\277WB^\305\016\200\246\277\222?\030\322=\216\260?\213$\323\r\342\026\236?\250R_\271\254.o?\251\304\230W=(\312\2772\022\273\346\335\204\300?.\006N\032\'\232\271\277\274R\360\306\031@\270?\357\371J\204%\255\030\277uNL\004\367\322\260?\263\307\316\276\007s\200\277\301\326X\374}#\235\277._\266%\034\334\316\277#7\356\261\351_p\277\0239\177\233\314\311\272\277\306\336?a\340n\254\277\304A\203lB\265\276\277\t\266\004\214G\301\276?zRs\233A\'\322?\374\367IB\265\344Q?\261\374+\367E\262\206?\255F\217\312D\210\215?~\235\002\353\031C\222?<\270\334A/k\244?Gy\201\203\036\377\245\277L)[<\323\302U\277G>Y\336!%\310\277\264\222\327\0363\r\266\277*\257\024c\363\351\320?\224N\332>\362\243\267\2774\243\'\210I\225\263\277\315P\032\211\313\310{\277\247\202\235\031\364\327\242\277\224\315j\274\3628\222\277\340Q \014\206\327\215\277\'=\3638\325\272\320?\272\010t\\\206\"\311?\371\356\231\3072\"\223\277\001\320\205N}O\255?\000\017\376\025h\327\265\277G\265\t\266\2216h?\343\312\260\372\245\304\272?\356#\014\002\264\006\250?\255M@Y\243\206\322\277\253#\324 \303m\260?m\024\005\375\033\200\241\277\350+\201\277H\207\266?(\243\314\346v\356\276?\333\2141R4)\267?\336\347\353\220\266v\301?gC[\222\224d\273?Q\304\241\210\n|\264?\243\316L~\271\034\302\277\264\212\304\253\274\256\242?F\311F\177XY\305?\204\307\262\\\205S\233\277J\243\001+H\326\261\277\244s\340+\367\370\272\277q\0133\322\006\314\260?\334\263t\364\317\324\301?\022\265\214dp\316\225\277\364z\336\325\244\303\252?\'\030\315\272n\"\260?Z\276\236\000\365_\266?\3732L\352A\214\317\277,\235M3\301h\265\277$\030\264Q\336~\250\277\347W\277-\213\242\237\277\033\312\3502\235\023\320?F\23147\347\025\251?\272u\311\376\216\256\214?\342/\374\207\254Q\300\277\220\274\307\217\326\327\222?\310\274A\346\2259\242?\357#+\032\202\006\245?:\023l\2721\333\255?#\005B\247=-\247\277~W\177\350\253\263\220?\260\231\223\217\230<\255\277\037\213\264\312>\336\304?Mn\376\213J9\263?\367{~M51\302?\353\247D\243\235\306\326\277\252\363\225\251\320\n\237\277\373\024\245t\372\204\254?\333\376\2555\366Xs\277\233\267\200+\217+\210?\265\263(/L\027\240?\213q\236\221\014S\242?\233\000\200\016\\\220\243\277\271(\004}$\026s\277\230Y\235/\356\014\243?\021m\030\307\213\340\275\277=\037\215\307\357\201\216?\036\272\207\327\344\036\265\277\244\272\275\315\007\206\220?\3449f\264&\256\315\277\360\2315\316\361\007\272?\371\375\366\211Q\177s?n\007\271ib\005\272?\225\323\006H{k\205\277# \017[\240\341\251\277\202\"b$\311\020\263?\302$\352>\343V\307\277\362\027\376\n\033)\242?\351\212q\225)Z\271\277ct.\006k;\303\277E\345\030\254F\020\272?\312E\014\323\263f\213\277\006G\333\030\274\320\260\277\341\346\025\013GS\245?[W\247\013?v\273\277;\016\217\010\227I\273\277\016UCx,\262\310\277\024\222\330\351\313:\307?@ju\227\322T\271?\022K\013\0348\371\300\277\262\0045\326\203\311\220\277jb\251\342R\353\241\277\353\243\262\250\374]\266?\255|\210g=9\230\277**2\313\234\317\300\277\311\312\205\222\206v\272?A\\\361\024\003\005\217?\271y\260[\211\266\255?\212EVd5\322\305?\000\257{\370W.\251?nB\255\304\221\265\266?@`Q\202g\260w?T\246\357\010\304\034p\277\016\342\202;\275\377\301\277\31517\273L\200\251?I\274yN\3727}?\252\272\333\'\342\215\242\277\254X\234\312ly\270\277\201\300ZL\354\320\273\277*\355,w@Ai?`\202\371\033J\323\243\277cs>\355\253\311\310\277\010\263}sBm\266\277\272N\r\335/2\307?\200\251\343!\274\311\312?\313\215w#|K\231\277\342\213aV4\326\260\277jBEYj\005\302\277\032Pb1\201\226\304?\247M7\000\014W\210\277\034\305\376qc\317p\277S\312\360\031\010\370\300\277\262\206>#~\277\276?\370{\264\205\335\261\263\277\347\306G\r\202C\250?\222A\354\346\317\006\306\277\276\216$\253?.\210?1\242\367^\257Z\305\277\372\016\313\027M\221\272\277\325h\331\266\2762\220?\024e\354\315\267E\271?\327\370&3\2153\277\277\257%\314\330g\007\307\277\027\350\371\276 n\230\277\273\340\277\240A4\315\277j\240\361\233\234\264\300?\360*x\204\361:\270\277\274\303ms\361\306|\277\370\222\324\037\310\255\321?`T\017\244\225\270\256?\321s\301\337.\222\262?\026<[\301\243\276\261\277\306\037\326\272\3452\303\277\205\267bD\203~\225?\013\224T\214g_\245?\023\013\246\326Mo\302?\316k\223\324\032>\251?C\333\346\351Q\025\264\277\257K\n\203\\A\303\277c,\345\363\326I\267?1\017\200a\246\346v?O\260\236A\357P\241?5\243\321+(\255\302?}\246\235%\002\327\211\277\314\373\321z\207\206\256?!\033nt\242\326\242?\226\005\307\272V&\276?\220[\261|\247\375\263\277\352\234N:\'\036\307\277~\221\230\346l\r\322?\324\200%`C\341\320\277\200~\263\322\256\250\272?\"]\215Cv.\220?\010\372\275\177\003\344\304?\342\200\244*,,\265?\356\001\305\220\257\223\256\277\273\322X\366t\331\316\277\360c\313\352\356_\263?\265\275{\032\304\334\272\277\346\027\036\353\320\033\301\277\323xC\3624\334\320?\234\004\026[,G\272\277R\214\224\032\010O\300?\337M`)\361\373\273\277{~\325\226A\014\305?\233\316\357PxV\263\277\266\335\n\211J&\321\277\256\226\3528\246?\303?}g\273]2\264\314?\372\376k}\2037K\277@\201\213\321\323\025S\277r\325Y\363\016\037\275?\025^Q-~\271\267\277\031V\214\372\227\000\312?\002\027\251\267\005\205\266?\022J\276\272M\'t\277\035f\016\004\203c\232?\355\225T_)D\317\277y%\2258;\231\264\2774\242\377\001[*\202\277&y\364\323\256K\253\277\213\215qm\331\345\301\277.\363\357\000\336\033\241?\361\3632\263\342{\301?\003\252ZG\275O\233\277\'xf}\3141\273\277\2221\234\331\002\010\302\277\312^\230\006\252a\261\277i\340\203:\320k\325?\301%\367\362\324\215\230?\256-\t2\267\334\237\277=e20\326y\307\277\365\016Aq\231\230\317\277E+s\367\370\254\271?\246\372\331~\204\325\266?\"\224\256I\343\333\306?[0\320\337\026@|\277\315\335\204bl\326\272?\210\241\216c\002\216\200?W\316\273\203\361\335\237\277L\347:\314h \273\277\321s+\030\326\n\275\277\256\240\\R\324\347\321?\330\345\277\204\267\364\300\277\n\262h\323!W\262?\222\257\223%\345R\254?\001C\010\250\260Z\265?\241y)\364\357P\262?\024\3027\251\343>\205\277\241^\363\217*\320r\277\273W\241\310\336P\264?\250\013m \260\243\271\277\342\266\200n\004\'\260?\3637\327\360[1\222?\334\213\211I4\035\234?7\247!\302R\006\310\277\004\222\004\352\003\345\301?\317\241f~\261%\263? \323\010\0265\031\311\277\350*\333Z\215\236\310?\304Q\0333\266\356\261\277\223\203@\003\3324\261?\254\344\356\000x\205\245\277\217\213\367\361\225\333\203?\275\021q\231$>\202\2772\226\233\r\336\346\271\277Q\007\0349\213t\242?E*\307\367\002\254Z?_C\253\377%\024s?\264\2320\276\276\265\257\277\001\346\377\307\243\032n\277~\347\016\350R*\270?\260\254\370\024u1\305\277\343:\n\213TQ\307\277N\002\n\335\321\037\260?\320]&/<t\252?P\355J_\034\337\257?\332|\240\004\211\277\337?\216\270\213K\240N]?\347\226\r\274\200\253\263\277O;\301\300\320N\223?+ \352\342W1\264\2778\350\330q\310>\227?qC\213\254\351\311\271\277\204\231K}\246\262\301?\204-$\333,\257\214\277\032\225\2161\377\212\305\277\r+\275\'x\315\321?N\201Y\223n\267\305?\211\337\037\016\326\027\265?\002\320\352l\344\261\263\277|H\324\304\224R\245\277\223??\267OU\312\277\n(8\035\026 \223\277-\213\"\275\031\027\251\277\262k.9\025\260\304?\206\250,\314\023\212\257\277\202\371Le\254\\\242?\245\266\373\351X\343\323\277\247\267F\320\325V\254?\200\372\332v\206\272\204?;\330\036\203\340\027\273?\375\022\356\254\0132\277?G\362\317Ls\255\213?H\376\373n\377\267\266?dC\024\265\3013\302\277\250U\255\025\327\372\206\277\013\014L\030n\231\247?\242\245rO\226&\206??\354;<\337;\303?\252\267\363\230\031%\242\2775E\3143\314\332\263\277\352\353\266&iB\270?\033\220,Z\300\\\222\277\213\340\3715\225K\303\277\200\216\356>\207\t\265\277\337\020\267\360\275\364\304?\347<AP\315p\272?\301\313\360L\005G\265\277[\204\t\352\302\240\252\277`%w\210yG\260?\335\342]\272\243\250\240?\244\005\023@\262\027\246?\375\346\273\324\'\220\300\277\304\336\247\020\257\262\266?\272\215\216\253\204\241\260?2]\314\213wg\267?X\367l\0302\332\272\277\220N\257\374\244\265\235\277\361\311_\244\273}v?h\330\002\305\205\327\276?\211F\363\322\345C\220?\327\220J\215w\353\260?\3023\347\"\242n\301?k\233\253}@\027\303?\335\255\353;\263;\276\277\007\336w\371i;\265?g\301\000\275b\220\300\277c=\355\366\354#\262?\031\337\225\220\231\322\266\277\361&)\353\354_\263\277Z0\0168\377\t\247?_\010s\214\221\246\300?\\\3668\0136?\253?\315\245\215\252\202\327\302\277\237)\036Z\014d\200\277\235\006\324\322\370\323\220\277\261\356\321\202\240\241\265\277\277E6\343\247\251\231\277\263\367}ky\354\275\277\216yJw#\305\217?\2479>p\3410\313\277\322f\233`\251\254{?\355y\320*\304Z\247?\264\000\333\342\324c\256?\'9-Erd\261?L\\\r\371?\244\266?\214\256K\271\037y\271\277\030\343\2014@\023|\277\202wPRMe\244?\010\343\373\355>\310\261\277\027\326N\031\301\222\234?\337>\3630\203\030\261\277RU\265\3431\247\266\277\333\246\025\346\354\310\273\277\266P\201\307\226\027\261?\232a\001\351\027\202\261?\314B\000\321\'\352\303\277\3262>\241k\267\271?Z\243A\2160\330\302?\"\354S=o\220\263?R\275Z\220D\352\273\277\016\330i\322\032\231\245?xu?\364/\032\200?$\240><\350|\234\277\006\016H\360=\307\301\277H\177\276\217\262\240\245\27791\305\'p\'\213?\322d\227\345eV\261?;\340:\255\332\313\230?\324=x\305\010\367\250\277\301`~\275\034\251\263\277P\335F\002X\376v?\336\360\353M\251\331\277?\3355q\263%\366\265\277\3471\307\031*\025\312?\351+>\300Si\264\277x\377\370\365\270\203\244\277e\345j\214.\023\275\277\221}\320\036o\345\262\277xs\000x\220\031\314?J\274{E\277+\266\277$\010\313\356\363p\277?\352\317\010\201\001\330\305?\303\"\303\311\035Z\262?Ts\220\347\350\013\257\277\031R\216\"\007\353\275\277\206=\313+\365\313\254?\2277\031\276\023\024\263?+\2445b\242\372\301\277\261\301\002\000\270\001\254\277\310\250}\241\261@\254\277\324{\214\213\025c_\277>o\261\3403\367\252\277\324\2226\230\341E\255?M\363q\033\211\353\243\277\034\233\362b \225\251\277\333\311\302\253\237\270\316?_\275\026=\336]\216\277\027\364\034\372\277\256\260?\256\035\235R\213Yn\277/\0175\363\266\204\216?\311\271\304OCQ\273\277!\033+\tU\311\237?\034|\032F\351\234\322\277^\364\373\204R\370\265?\364\026\212\033y\353\272\277\314\034\221\232Cu\202\277D\n\230\\\327\302\273?\343\neD`V\262\277\330\200\263Y4-\205?\250\366Fi\3360\307?\345\361\030\324\220S\300\277\366Tm\227\na\273\277,\323F\341*\204\320?\0012`[\2656\262?\274\242Wl\"\371\242\277\375f\017|{\374\300\277\\6\235\361\274y\252?\374X\3272\333\022\212?\322|rvV8\262\277\366/\324\377\235\022\273?\300\213\017}\244\036\303\277\203\371\342k~\251\261\2776\013\374\302\361\254\243?`\273\367\346\324\312\315\277K\325\353\347\364\020\244?]\224#\267\313Q\221\277\"\3676\240\255\377\324?Yx\255\261\347\205\276\277$.$\366\341\244\201\277\003P\343\327\212\377\243\277\357\376\275(*\240\311?1?\263\203\326\245\241?\237\222\351\261x\310\275\277\007\301]4\264\200\254\277-\375H8\372\026\302\277R\3341\215\003\222\254\277M\363k\t\365\327\273\277\217\002\213\231^\033\275?\232\305H\340\307\226\263?X\002.yF\235\235\277\017\0024\317\253\000\304\277\246_KZ\253\006Z\277o\276\346\205\277\232\300?\235\303\305ce\177\263\277\327T\342\344\263\006\255\277\313\031*\270$\214{?\237\200\202\023\037X\300?2@Pu\312%\272\277o\202pb\253\216\276\277U1R7\324=\274?\311\227\360>`\020\241?97\330\337RX\251?\310N\215\367\016q\244\277\265\271,\312~-\252\277o)\332\007\204T\264\277_6\302wd\336\264\277\376l\233J\347\367\265\277\205wS\030\211\331z\277c\217\214\225\225\235\335?\213_g\026\256\365\256?\275\034c\230\276\375\211\277\303\255\225\224$\354\265\277\230\370i1N\247\272\277x\327\330\0042\343\306\277y\247 6\257\370\246?\234\367\350\3111\320\240\277\307\357?\021\3012\234?\232\376\316\266\203\275\223?\247F\005\252\246T\317?q\\\013lN;\261\277I\022\370\364\030\035u\2770M0\252\350\311\273\277\020c(](\260\303?%D\365\325\014\221\217?aj-\355\2236\225\277\323l\265\224\023\373\265\277\t\206\225\261v\245r?{\0067\021\340*\300\277\215\304v\006\016j\216?\377\214\n\307\332\231\310\277\002\332\247\327\262\207\272?\311t\225=$U\301\277\337\016m\221H0\321\277SN\231+x.\301\277\223\265\206~dA\316?U\342\217~\201\250\333?\237\314\231\230i\364\321\277\251\374\327\313\271n\263\277\007\001H\200T\341\272\277!7\340>_\351\265\277\253\013\210\333\037\265\313\277~{;\210\232m\246?\022\356\213\013\001E\265\277\361\224\242\222\010b\307?E\204\265z\006K\247?\252F0o\377\362\255\277\223 \010 U#\207?Y\267,\037Gy\304\277\351t\275\315}\351\257?\035\235\224\376\300\311\252\277U\211jq\250\320\245?\351Y\221\332h\007\205?\277&\350\223\3479\307\277\327\210\001\350\273=d\277\351_\375\346\266r\241\277\177\314\302b2\005\263?\356s\351\007A\373\273\277\253\311\362\300\250A\222?\306\367\312Ie\216\260?\373\2220\316\355\211\222?\205SL\"\362\320\276?\\{u\215r\370\204?\225yr\306\026\343\254?\3232M\307\322\214\266\277\356\320\216\037\312\257h?|\324\272\254\210iw\277\032\355\344\203 Pf\277\356\374\302\252\022l\267\277\347\\\337\213\233\265\300\277\3713%\200\300\325\261?\037\014\330v\225`\301\277kR\342r^\027\261\277\347\236\204\340\227\225\254\277+\273\250\242\250\\\271\277}0M\245\370lS\277?t[\207\363\031\244?\201l\322\206k\037\231\277K}z_8\002s??]\022\303C\265\304?\344\357\326Nx\206\241?\323\006`\302j\214\302\277\350\367\247\344Eb\315\277\022\243><\266\350\234?\234\327\263\341\213-\271?\305r\216\221\220\305\250?\361\"\346U\220]\245?}H\344\2026\353\243?79\242\036-\017\313\277?\217\302\"r\231\275?\266\217\261#\332\213\256?j\320\305\224\345\225\314\2778b\240\304c\020x?\254\376\001\211o>\323?HQr+\372\335a?\021\370\227 \244N\303\277li\244\310\343\216\263\277\210\303\240\263s\257\251\277\307\217\334qr\205\244?Z\302\205\334\031\277\263?\345\242\263\270w\302w?\023\342\002\352\314\246\216\277\367\255\347\001_\257\214?\r0bd\372\023\216\277U\310\265\013\227V\251?.\334$\353\205K\266?0\204\263\253f\253\220\277\024#\270m6\214\310\277\316\316\266\224&1e?QZ\307B_\213\266?\034^\243\315o\322\206?\nln\227\364\026\233\277h-\374\274\203\364\273?\230f\357\244\326\213\314?\000 \017\006\314\301\245\277\177P\350Y\210f\250?@\361\202\274\214a\244?\334_m\327 \031\251\277\361\205 \314MHm?\007M\232`-s\301?\363\311?\365\233\364\307\277/\240\350\213\017A\327\277\335\311X\272.c\264\277\340\302,\203j\272\231? \003\360x\301\n\305\277\236\276\347\304a\r\271\277M\227\241M0\304\271?\206\232\327+\361\216\322\277 \320\224\036\354f\300\277\0263,\026\362\207\306\277=\215\303\365\301\325\243\277\024\374\376m\3510\275?T\317\226\373W}\310\277\016\'\007\013}|\266?]*C\266\344\336\255\277\312\233l\306\025\201\334\277\253G\344M\333\377\300\277@\022siD\331\304\277?QO7v\313\260\277\216\252\301\0003\320\260\277\030\202\323+[w\230?\357j\003\\c\014\252?\332\306\000\n\315\303\262?\306\000R\007F\365\265\277\201P\000\n\202\037\302\277\305\026\2325\2276\232\277\236U\230\2078\024\256?\227E6\204\327\271\201?\3772\352\227\354\226\250\277\201\321I4\242\210\320?\0323(\341\'\\\261?)\001\200\245\311\010\245?5rlm\303\231\310\277\357\373\367s\272\372\271\277Pl\3003\236\242\266\277\205F\030\025\225\023\221?\342\030\311\314\320\344\320?N\264\267\220\323\376\254?&n\3740t\241\263?\350\301{d`y\252?\225\177\030\344\244\017\263\277\322/4\3635W\261\277_\270S\257K\256\331\277Q3\310\260\377\304\256?\000\277\307\277v\213\260\277\233OT\205v\347\262?\321\332\303\212\3647\263\277\334ED\216\223z\251\277?\303\336\0133\266\237\277`\314\223>z\022\230\277\r\211\274o7U\256?|\203t\312\377|\261\277*4S\3660J\243\277\337\002AL\027\016\313\277\260(\250=\260&\240?x\337;\255\027\027\241?@\243o\030\305\331\225\277=\275\344Z\366>\305?j\257\302\355\260gx?Xb\356^L9\262?\306\323\034\003\234\n\273\277L\326\370\001\031\376\275?;\014\033\242\377\252\252?5\n\265\312\270\006\221?\273\345d \214\"\236??B\246\255fB\306\277)\310:\rT\225\247?n\342X\270O\272\210?r\354u\272\254\241\301?\206\272u\255_X\263?\006\266T\361\371\224\313\277Guv\321_\272\322\277\313PY:\255\'\242?\333Xt]B\237\244\277\205\321h*Y\r\222\277\325p=\270[\340\227\277\347\256\277\031\212\351\267\277\204\352\207pu\025\246\277\3153\222~;\255\242\277k&!\307\207\037v?\000\025\327o4\277\242?\253\315h\227f\312\313?\302\311\314\312P\333\325\277$\014\326\377\246\005\264?\336\007\375O\277V\266\277\023m\356\346\354\343\274\277Q)sD\3729\211\277>\255\346Z\337A\242?\266\020\331\334Ze\260?H\010\2323\026X\242?\274\205\325\021]Y\237?\275m\307\014j\332\246?*\213h\261e\332\304\277\215H,\024\356\352\271\277\367\211\036\265\022m\266\277m\3453\220/\310\271?F\253\230\2019\236\265\277U0\225%x\356\256\277\260dN4\237\005\313?\335K\373\302\212\215\320\277|\226R\2330\372\232?aW\223E\342\202\251?>1]Ey\377\247?\266\216\370\034\263\361\272?\270\311\237(\036\320\272?\352\366\266\227\343F\247\2777\363k\255s\361\301?J\271(\210?\212\271?D\224A\3661u\260?\007lw\301I\257\255\277\352V+\013X|\306?m.\203U\231\r\314\277u%[\303\254P\307?\013\031t:\364S\304\277hwfB\021\263\261?-N\340\022\276>\301?&\201wJy+\273?\347\033\222\253\261\267\237?T\275\252y\274\351\307?\306\251$\221\370\003\256\277\350}G\235\271\207\304?\374F\3759D@u?;\363\257\227\232$\257\2774[\305B\315\367\274?|$;\363\261\364\252\277\3152\227\265f\005\271?1[\313\365Q\322\253\277\'d\334\230\331m\315\277\235\27289\347\264\276?\2101\255\332\223X\250?\261\002\331\0030a\206?\320\257\336\364\263\r\257?\013!\260\335\352\234\213?\306$\204\236\037\361\311\277{<\362Y\257-\214?\007\222\362\306\310\356\277\277\277\367\314a\331\302\301?g\317\021o\220b\234\277\240\227\237~\274\232\223\277\003f\373\275p\362\222\277/X\2113\230\254\305\277\302\304\030~W\326\301\277\324\250A\262\231\223\253?\271\302{\010\372\345\301\277\231\013q\262\247!\301?\256\264+\247\264\252\224?.\014M\002\2176j\277\363\223\277\350\273\327\274?\331o4F\362l\266?\213\212\007j\306}\212\277H\237\023\rY\225\235?\253\376\311-\367\344G\277\037\200\325\256\202\257\235\277\027:\336x6\r\235??\002\205Y\310K\271?\t\302~vk\035\225?\372W\'U\314}\244?\243N\224;\nQ\311?\024\316\016\031\212#\261?\330\330\314`\267*\241\2779\\X\245\351-\221\277\030\333\017\301`%E\277\017k\301Fx\275\265?\225\351R&)\324\245?M\nq\361\022u\273\277\035\026\342bI\331\303\277\010T\370 %-\262\277]Y\240\216j7G\277f\351\371\235=q\217\277Kk[i(\004\327?\355\333\204\320\335|\274\277Z\225\350\224L\017r\277b\023\302y\0101\232?\"\371\212\276\230l\310\277H\370\310+\247-\272\277\002\232\360$L\234\255\277\254\201\256\024\004F\301?\"v\301\314\225c\301\277\303j\230\331\216,\270?\331E\244vG\026\252?T\370\247\202\003<\300\277\246Q\361\300\210\200\250\277&\362Qk\310\220\306\277\320gx\021\345m\303\277D?\007V\"\347\250\277\324>\370a5\356\276?|nOZ\332\216\246?\257\264\366\260\371?\244\277F\232\366tC>s\277\304N\204k\204u\242?\n\350\327\0212.\305\277\356\324-$#`\273?,\264\034\344\036\206\276\277\306{$U)R\327\277\274\273\314n\334\261\222?\373H\304\003\027\366\260?\342Lsy)\014\274?\363\2651\341\356\212\331?\311\334r\234\213=\274\277\341\254\352\273\3272\245?\342\302\030M\376\300\253?z@\344I\232\372\234\277T\0324\350>D\245?\037!6Qz\005\223\277\222\321\323\006\206\252\267?\262\2437\354\300e\252?\256\276\321\220N\307\212?\n\001O\023\366{\252\277\316\021p\024\314\035k?q\222\353\310\215R\300?%\233%;d\302\240\277(\261W\320|\371j\277\273z\304~/6\242?V\'\023\206U\350\275\277[\022\207[\265\202\270?\316\216<\0228U\270\277\315\367\321\355d>\273\277n\tF]/J\241\277\017\323e\r\261\203\323\277o\002o\352\2562\264?\340\"\204t\\\340\271?\237o=\307i\324\277\277\301\322\346mc#\273?\021\2106\213\257\210\274\277UT\343]\301 \316\277\234\024!.j\356\315?>\202\230\3058\003\276?\355\265\316\301\242(\264?\n\357\250\272\300\246\310?*\311\342}x\022\263?}\304\027\0226/\321?\221\252\373D\277m\257?0~\253v\211d\311\277\r\037\326}\322\tg?\302\272A\203\360$\316\277\373I\212\243\323<\320?\222\033N\036\326\267\243?\356\220\177y)\206\256\277\210v\204\354\205\237\311?\247\215SJ\324\357\254?\254\345\273\023ph\210\277\206K\264\022\332\334\255\277^\221]_\340\224\235\277\177Q\001_\327.b\277!/\216\021<\251\257\277\014S\223\326\003F\215?\n\313\204\021\241\237\266?&\262\"\246\222L\255?,;!\262ax\257?E2\324\270\362\013\311\277&\304\272\251\202\363\261\277\361vQ=\337\310\261\277~P-\352\375\203\261?7\257T6\240\221\250\277I\337\367@\270D\256?\242Y\270)\247\216\272?>=R$\364wJ\277\321u\242\341\206>\313?\017\277\366\177F\214\266?\265\266\244\203\013\034\255\277Cb\013\233O\302\252\277\354\250!\240\036v\222?@Fe\352\3669\266?\271\002\202\262\004\005\311?#\3150\036nC\222\277M\215{\000:\260\303\277P\342\212\362<\200\304\277t\327<\272\2241\304?X\217dA\221\257\253?\023\022k\320\200u\234\277\353\333\230Lk\241\270\277t^-\344(\265\304?0\007\202\025\367\034\261?\023\"\264\362\365\253\244\277\230\277\227\201\250\273\256?P\032\372n\377\224\247?\021\3409\377\262\343\251\277\230\375\357\312\030K\254?\242\316,U;\273x?70c\2344\263h?\035O\006r\033\026\313?\271Ce\330\203\021\301?\375\312\226\231\335\364\235\277F\343PDf\016\261\277\311k\227\245U\\\267\277\335\320\234=\271\"\315\2774\032\006\226\337\204\224?\3574\224\305?\277\264\277\246;^\016\004\217\261\277\320\270\351\266D\202\264?\021\240\315\361FW\223?\237h~\020\027\330\275?L\261\362h\334\274\241?\270\217&\024\272\235\220?\231\2325.\352\204\251?<x\212;( \256?\"\321\202K\375\2650\277V\\o\310\306\211\264\277\206\322\215\336U\032\262?Xi\024\266\277g\316?\303\007\326CY\\\302?\023\000\254d\306\031\227?\314\322\221\363\307\227\241?\207e.X\330i\260?\344\260%\3109\375\264\277n\025QI\233\342\263?\351\361imPB\264\277\3745\355W$\253\265\277\207\311\204\005\306\320\237\277\"r\377\335y\035\252\277,\332\323\371\205\355\275\277M\231\212\006\235-\315?\275~\222\023 \221\225?\343\354\027kSV\310\277\200\204\341q{\227\243?\036\321\362<ov\262\277\252\210\340\235R\n\300?\321h\226\220\344B\240?\320K\243\245\024\262\250?\007\34125\355%\260\277\2445V\303\331\333\310\277\003\323\267\263gH\260?\330S\341\366\302\355\317\277R\td\274\305\357\243\277\242\334\354\2412t\227?G\254[s\323\350\247\277\005~\310\355\274\033\231\277\023#}\320Wj\320?C\255-3\'\377\213\277\313\334iJ\357\206\272?+#r\2502\330\275\277x\253\r\335\267L\244\277\376\224V\220=Q\301\277L\302\037jz\316\305?\346\314\024\234\276\247\226\277\005\032-q\252Y\240?\257`d\257\033\032\310\277\032\301>\001(x\300\2772\364\376\274G\355\221\277$\t\240\224\267\244\312?\341\023\301N\275\277\251\277\236s\273f,\n\317?Z\234\372H\271\225\244?\216\203l\335\354\271\265?*\322\216P[9\307?\'\370\335o:`\301?Mw\326*\036z\262\277\266\303p*\375\342\325?\261P|\377BE\274\277\364\302P\367iT\301\277\006\367\306\013\207r\274\277\355\350]\037\363\237\311\277=\202\300\250a\237\200?\226i\0261\327\255\300\277\265+\034}\0162\255?\022N<l\023+\254?&\256\250\350\231[\246?\210\n\037Rk\333\220?m\"n\347N\346\305\277\364\242Iq \337\243\277e\307\320\246\201G\261\277 \2473\317\236\347\225\277\271\310\232\215\276f\262\277y\276\324]=V\300?\2540\035DR\347\305\277\256B\026y\316\316\320\277\321m\315\334\352\354\231\277b\nJ\254rk\265\277p\276j$7D\302?\036p\201u~C\303\277\2116\037\226\211\316\264?\245/\362\227\345\221\230\277\221A\350\340L\277\272?\002\037\333\216\360\335\254?\001\217\375l\253\267|?\001^o\004^\271\213?\001\236\0333+\347\210\277\221\373\312,\3420\265\277SK\352+\346\343\305?\327\216[\003#\362\273\277\020\247\0059\350\014\300\277\277\313<:\343R\204?r.\216*\217q\264\277\023\371|:\320\304\250\277X]\226\212}\342y?\242\376\215D\002\027\271?\236\246\257\354\034\254\301?\246Ww\314#\030\267\277lx@\375\374\244\266?&\257g(\340)\267\277\324@\'\253=\245\262?\360V\r\255\371\010\217\277\300\0200\302\035\025\263\277:u\031\000.\224\243\277>\037\312\367J;\256\277\352+q\242\225\337\232?\210\372V\023D\023\263\277\343;\344;\343\324\257?\347O$\376\033B\301?1T\035\312\024\361\256?<\312\252b\022m\301\277NT\326\007<O\245\277@\227>\272H\301\303?\250\221P\243\223o\246?\275\365\007\315\366\223\245\277\004A\217\313w\300\303\277\017\tx\377\013\354\225?\t\234\357\331l\217\323?nLE\346s\376z\277\345\370\000+p\362\231\277\301\230\230rc\376\305?2!~|[\271\224?\212Sk\264q\327\230?\220\0041\267;@\231?,\262\235%h\222\236?/\317\353\003\241\300e?\214V\221\r\217b\271?\374\313\\\370S\022\305\277\027\357\237\023Oh\260\277\016-\\\313-\372\260\277\210?\256\031\211\313\305?\233K\334\365\301H\304\277\304\310a_vg\244\277E\337\364\237\323\312\254?n7}c\244\343\256?\327\306\230\253\330\323\235\277O\000\260m\357J\257\277\222T\032\202\244\030\264?Te\327\215\315\247\265\277\264\037e*1\002\221\277\370 -\362U\275\302\277Q\032\032\005\241\267w?;\004m\006\3166h\277{E8\233h\220#\277|\242\300\013\"\344\321\277\210\375\226k\264\267\304\277\252\274L\326\254\320\257?I!\010\360\3172\262\277\353\343\252\2455Y\263?\335\364\211\334\227f\232\277\"\311\302\323S\023f?\250\246\325\356\213/\235?\365\272l\357\3109\302\277\303S\005\025&\004\306\277^\211\210\371\\R\245?D78eQ\210\300?\200(\260a\020\014\220\277b\256\220\367(\177T?\332\253\311\274(X\302?,\253\0311\245k\306?t\347\2148D\371\251\277\346e2\305XD\245?\000w\252\007B \251\277\266Y\'\023\211\010\255\277\274\332\002v\205\252\240?Go\"\274I\363\245?I\253\201\342\322\313\277?\214V\013\222\373Q\271?}\222@\t\251T\270\277$TW\032\316|\305\277\363\271\255\234\223Yy\277\211^qOt\332\277?\311\2242j\207\361\243\277\203C\006~\320\026\260\2774g\230{\225r\265?\274\033\342\023\361\277\322\277\321\345\030~X\261\301?O\344+\252\262\226\301?\237y\227\3250;\271\277\302\370\312\020\207\225w?\016\357\311\3564+\242\277\215\2438\225\315\361\246\277\342\001UI\301\225\252?\353~\254\326\313\027\206?\004?\021\266<\t\212?\376C\331\303\320\252\265\277I\021\230\302A\330\226\277\324h\375\225\222\343i\277\363\225\217\034\370\360M?\025\225\266H\316N\247\277\255\335\230\377\\\037\270?\320/\305Qc\'\270?Ue\006Hr\026\262?\021\345!\250\331\234\232\277#\344Z>\341\257\301\277\225;\342\356\3250\237\277UA+D!\235\233\277\004\376\324\220\304d\305?\010\250\t\371%\010\263\277\004\271Fb\342\227\244\277\200\241&!L\335\320?\363c\037\245\365t\270?a\215\267\302\353\036\014\277a*U,\342C\272?S\362\3071\205\224\307\277k&A9\302\201\263?\037k3\030Wl\226?\336\230#\243\303\307t?]\004\005\220\000\217\200?\323`\360Lv\010\247\277}D\332\212\354\356\311?D \240\234s\236\257\277V\264\303\366\243\365\200\277\316\304\032x\305\213\230\277\000W)\031\230\022\327?\301\372]>n\205\217?[\224Vm\221g\222\277O\311\224\376\224w\301\277`[_Ya\203\245\277\327\267\022\3700\014\302?b\324\253\000\320\243\234?G\345h\234\374\013\257?FY\r\252\337\330\321?6\327\034\304\302\254\217?\035\023\374\264\357\013\274?\266\351\311~@\347\315\277\223&-9\001d\206?\204\013\020m\'\320\254\277\365\371VZ\265\277{\277M\\jlV\237\217\277\343UXrs\363k\277\377g\371\260|\177\226?\304\203\243\237\330\200\301\277\000\320I\276\"\346\271\277f\007!\223Y\373\260?\202\313u\234R\310\253?\275f\365\311\001e\261?Ph\340\005z\217\301?\016eo8\376\000\245\277\233\346\374a\307\347\277\277b\350\2263kQ\233?\321\301\353\350\220\357\251\277\274At\023Q\256\214\277T< \260]\037\200?z=\236\346s\010\265\277\310}\355:\306\260\233?\324\320\350\240\023*\245\277\030\305m\007+w\300\2775jB\017A\251r\277\310\365hZ\204Sd\277\344\3126\337\033\311\266\277\217\021\245\326\0071\224?\240/v;T\256\263\277\246\245\231\237\376\343\226\277\236\330\237\\\001;\255?\033\371\221_^\232\270?\361d\032\016\206y\304?X\033\216\336c\373\260\277d\317\020q\210\250\201?JP\014v\373\366\273\277x\025\244H\250\216\266?\225\270\330&cQ\260\277\014e:\305\262Q\257?\262\336\332I\244-\267?YcM%\312\243\317\277\354eF\000\014\203\227\277\333\\1\275\036\026\246\277\026[\321\206\301\226\271?\0250\014eb\345\210?\364\316\323\206~\254\224\277I\265\250=&\017\250\277\364\352\016%\334\324\204\277\221\330\315>N\206\273\277>\365\375W\375\330\266\277\004\006B\261\007\242\270?\357P\354\271\234\275\252?5\207\377z\355=z?\332&8\366\216L\232?\346\243\230$\244\007\244\277I\222\264<\321F\255?9\230\354\230\301\024\255?\034\360\265\314\177g\245?\212&v\264\225\332\266\277\351\303\257\030E\243\251?D;\264\243\"\254\304\277\356\270G~\371\336\216?\177S\325[\220\340\220?o\277B\301\342\200\232?\230\243\233`\275f\217\277HMEm\345\240\221?\344\014\324#\005\361\273?\341r\221\370\336\256\262\277\224\275R\347\374\233\270\277\321A\262v\201o\251\2771\365:\215e>\275?\36532-\001\237\275?\372B\266F\0346\304?\3754\326a\201\262\212?K\027\320\351\004\272\267?4\235\316\334\310\t\276\277Af\272\321\245{\257\277\025hi\357w,\253???\210c@\026\265\277\227\337,\357\020\300\251?\356\374\305t\245\250\301\277\352\263\004L\313\002\204\277\027\237\3574?\216\240?>\265\014\213P\333\222\277B\rP\213B#\242? \324\027\301\n\314\300?\321\364&\004\254\233\225?s4l\354~@\261?\020\321\306\005\033+\310\2777k-,\304p\262?\214\177v\336\235\277\265?\244\230\255\377j\357\244\277^\377hO\320A\242?`\251I\366L2\272\277Z\241vew{\241?Yo\001L\207#\266\277)\370V\264d[\305?z\342@m\311\026\221\277\3163\240\021\343\253\260?\374\240\362e\332\026\244\277\036R\252b\245+\220\277\262:V\224\021\n\236\277[x`X\334Z\314?j\266\372\267\373\324\311\277\035\\\013`^\354\256\277\036^\024Q\301\376\n?\365\207\216\230\025\030\305?A\273H\201\225ea\277\203\354*>\364\247\226\277\271.z8\342~\263?\305\234\020\336t;\306\2776\301\212!\005d\251\277\353\371\233\250XA\267\277\230\370\231I\242\374\266\277\352\330\332\026\340\334\265?\3147\037\036m\257\301?)\302\260J\345\034\277?\311\034b\355\017\027\271\277iq\017\0379C\223\277\221G\002\307\243\035\222?Z\302\361\247\244\030\305\277\225pm|h\036j?\01758\300\271\024\253?\302-XJ\016\241\300\277A5=\271\376\314\220?\333\356\260\000<n\230\277\365\230\246H\307R\273?Z\274\032\307\323\317\312?<3`\323\354w\310\277*r\345XM\035\277\277\032\256Nc\355\304\267\277u\367\245@\333g\262\277\n\275\303\026I\344\273?\247\364\226\342\377\325\246\277cZ\212\334g\307\314?\217\201\367,[m\243\277H\234>S\216\204\274?f\322\342!\232d\236\277\243\216\313\377\322\177\250\277b5\234-IH\321\277\352\324\365\317W\257\300\277FkA\0358+\301?\240\214\353\273\243\274\305?2Mb\004f}\234?\034UKP\\L\314?\217\207~\255\224\306\312\277\251\361\201 \013\340\240\277\276\273\323;\344\353\303\277\262\2042\305\251\303\230?H\267!\225L\326\320\277\310\230~\310_\313\273\277\333\233)Uj\202\303\277\371(\206N\022_\324\277\005(\271\300\217\262\255\277\326\245\254\240\275\005\301\277\371\263\006}C-\205?\211\333\255X\324\246\302?\207Q~\310@W\263\277\236\312m\253\0072\233?\372O\005\356\263b\340?KvMdr\272\270?\'\227\312\035 \272\271\277\005\332\261\027W\\\221?d\304\037\376\371\260\301?\3146\305\313\031\'P\277\004N\340dK\004\246?\016\010\340\372\327\003\302?\364g\362\373$\024\265?\255\356\242M2\345\276?\345\233\001\264\362p\321\277\214\323\303a\257\300\220?\327\223CzH\342\220\277c\'\370\351\267\253\266\277\207\302\025\025\241:\264?\336\370\024\375\277\326\301\277y\347\245\3665\317\247?\274M\326Pm\327\234?\263\321d\214\232\317\236\277\372\315\017\321\256*\206?&^\234\364\343\340\265\277.\036r\307\3426\277\277U9\026\202UE\261\277_\tu\356\336K\267\277~\226YQ\316p\325\277\277\371%\312\020l\211\277\377S\354[\213\006\260?\000\242\267\005\204F\253?\336\372\327\310\334\357\302?\242Aq\272\'\214\212?\374\027\207\360\200q\310? \325\242\'o\367\270\277\010n\004\265W1\274?\207\233Ce\336\273=?]^\365Z\210U\261?\210H\376\270\252s\310\277\317bdq\375\007\205?\037\331(\213\327\356\302?\373\327E\010\000\314a?W\010\002/\230\305\250\277\177a>l\364\201\244\277\034\222*\350\222:\275?\2502\354e\032\246W\277>\203\273\243\304\304w?\306\353\347\303\t\214\265?zN\034/C\271\276?\346\264\341\230\264j\247?=\031;\213,\037\304?\367k\200\277\343\356\250\277\333\216e\273\261\201\303?\220/&\221\217\220\275\277K\232\017X\313|\244?x\377 dr\222\306?X\006\226\243>\322\265?8\215\325xfs\303\277\203\307ecQQ\322\277h\214\315U\231\206\244?\342\235\0350\221w\234\277I*\222\247 \230\311?\tY\0033\035\213\317?\362\304&y+\346\242\277a\220\255}\304\013\302?\276Bn\005g\312\300?e\273\222qhI\274\277\321\354m\000\337\217\267\277x\021\"\316}\316\220?/\236\336\373\372\212\333?c\222\203!SbB\277\353\007#\311\343\254\234\277\220\373\004\225\243\006\264?y@N\300\340\355\330\277\355\005\365_\2625\267\277\352\n]\026\2402\266?\255@\274\027\235{\260?EH|\364\017{\304?\371!*Y\265i\244?\325\2113-\215\245\271\277\317\034v\360\034\231\276\277H@\357\274:\017\027?\350O\\^U\270\277\277\\\266\265\305\330\007\314\277?\315\215J~\360\277?\302\322\317\324\242\"\275?9\014\263,\3200\303\277lqM\363{\301\325?\202\2211\036\364/\235?<m<\206~S\247?\314\021\021\216\024<\273?VS \277\001\274\301?\261a\255?rQ\241\277Y[\352X\375\371\252?\"s\"\346\037-\253\277&1\010\373`\217\257\277\016\005\247K(\241\260?k\330\265x\321Y\234?2\n\013\244I\211\264?\313\355p\325\317\350\246?\036t\374\273\247T\232\277\001\206\303UL\207\300\277\177\253\365\3360\213\265?\374b\007L\t\264\311? \347] K\346\220\277\222<N\270I\004\317\277\274\263\210u`K\300?hz\201\322!\360\245?^\261\023#\335}\303?1\364v\177\233\037\211\277Y\0278\347\034/\235\277\265\007)*\226\n\313?\004\257\352oR\252\261?r\323\246\341\331]\310\277Y\313,\252\366S\256?,\300\253\342\206.\250?[\226\316\225i\357\236\277E;$\246\023.\240?\211y\345\003\376\342\307?\232\000\252\000a/\266\277\020\357buM|\273?q\037\300\257\tB\245\277-\221\027\t\263\010\312\277\313\275\033\3628\316\221\277ih\'\246\212,\275\277\004\022\273e\021w\254?\367\344\367\205f\r\216?\225\036$\354MY\257\277c+mp\227\363\270\277s\275\361\027u\240\213?\025{\263\310\341\202\256\277%\032(\353\274\363\245?\347%\321h\224\210\263?XL\333(\031/o?\340p\310\2616,\265?(K\307\366$3\272?\023 b\035\360>g?\023\371\021\032\377\316\221?Q\021\276@\004\337\273\277\333X\234\303B\260\253\277y_y\356\235\262\270?\336\265\373\246\211Z\242\277\364\023D\034^3\253\277\177V\374\307\"W\304?$\256\265~\251\307\261?\246\247>f\244\333\244\277\022\371Md\220\275\306?\330X\210\217\262\002\250\277\210?#W\337\251\301\277\254q\342\2155D\265\277H\204\324\313\310\270\255?#U\365\337w_\231?\357\203\241\002\202\245\234?\332\325@5\026+\213?>wBv\032\326\262?\273E#N\224\360\303?^\240\216\353\313\341\240\277\317\375-i\317\034\305\277\302\341\325}\236<\263\277\355SL\261\3647\255?\000\242d\010J0\227? 7O\\Yy\261?\005\346\2272\030\360\217?;S{f|8\307?\025\315\326\314\216h\302?\322<\325\3676\277\240?\021&\314\003\322\322\254?<X\364\241\035\343\302?\305(\254\305Lz\275\277\345\244\207\313\262y\303\277\235\377\222^\371\343\273\2777\375\320\274\'[\340?\033.%\254?\221\242?\245?\221$GX\276\277&\013n\332\335h\276?\223b\234\347h\022\221\277\271\305t\377\\\n\265\277\024\225\024\t\342\346\206\277\034\255\203P\364\345\302\277\3727\214\342v\312\253?\244\017\312X#\361t?Me\260\337\324\354\310\277\237\003\330=\212\030\242?S\317\010\327\014$\217?\353\344\266\r\314\036\220?\211\004L\321\014\351\264\277\311\020 \314\304x\254\277\0366\245\036\004\234\243?.\212\342\024\325\227\233\277\372\310\030=8\214\241?\224M<\316__\224?Dsd\026s\302\177?G;\241o\261*\277?\252a\325 \364\257\220?5\037\276\222)\315\230?\325\302\305\002/?\235?_\245\200A\343\021\230\277_\310\013\317\367\205\213\277}\277\265h\235\313U?6krS\216\371\301\277\271\333\022\365!\r\250?\273\t*\230\320\315\257?D\336\365xX\263\257\277\3707\037\035\002\273\305\277\257\211~\324]\356\266?\316R\372~\217\243\232\277k\342}\027\3434w?\204\351\377Khw\254\277F\210\212:2\204\265?w\013F\366X\006\253?\007\020\345\270I\330\277\277\237\255\025\217\353\317\261?3\216\025\236\375\206\272\277\035\325j\274\022\337\331?f\335,\265\344\251\244?\222S\374\371\373\214\305\277\321K\275\226\325\037\321\277&\243\3544c\224\253\277\337\024D\014\206l\242?U\304\361\215\261\310\301\277e\257\331i\010\235\240?4\235\363\262\221:\272\277\367\246\251H\0071\256?\036\355#8\336\350\305\277\246&\'\335\007\257\270?H\360\373\357\273i\227\277p\327\350Y\222r\315\277\346F\241\325%\'\236\277CyH~\321\004\216?f\224\003M?\302\272?_\201-( ?\307\277\326W\017\375\216\361\305?uB\3059tV\246?\212N\235W\235h\275?<\273l\034\336\206\275?B*x\025zv\251\277\300\216<\303 \264\232\277i\210\343\365\366K\327\277\212\251\341jD\220\261\277\310\276\307\245\265q\276?\356P\344\335w?\223\277x\357\037\304U\032\301\277\224G_~\311\275\272?\245\221+\316\366z\256\277&\371p\204\245\023\220?\370\335]\334\206\335\246?L\021\273\260\347\357\302\2779H\275\027\353\014\247?\315z\343\333\274#\256\277E\232\265\037\304\256\262\277\247\021\233[l\311\266?=\262\362\002\220\367\266?2\257\033\nYS\275\277\342\266B\275\325\341\232\277\321\246\336\264.\234\300?\252\361\234\3306\311\300?6\035\247\037\224\010\231\277\330\275y\034t \264?{\362\270\346\275\211\322\277Qj\307\023n`\273??Y\027\206\211]\264\277\327\372\344p\333\232\260\277l\372\351r\233\274\275?\0075\263V\371\317\220?\333{.\346M\370\246?\216:\253\252\212\267\275\277\177C\345~\006\335k\277j\202\314v\205\316\231?\207\261\005\367\366\264\270\277n\177\026\264$\310\227\277\365n\232\243\241T\254\277Pu3\276R1\264?_\017\2452\305\324u\277\\\240n\377\010\257\311\277y\372d\316\031\337\301?0\"x\265\201Bt? \275lc$\341\302\277\345_O\240\320:\300?\031\371\355\322\026\222\236?3\002\325\005\371\335\217\277\363\241Cb\230\200\302\277\314\027\224\371\205\224\227\277\236jG\025\337l\306\277\206R\177\345\340^u?C\205\nd\257\353\207?\025\245DN\270\'\242?\356E\302/7%\244\277i\027\034T\302\016\272?\336\021mLC\343\202\277\'Y\213\227\r\247\304?6\017\221_\236\363p\2776Y\013>\313\203\207?\215M\367b\265\226f?\006E\227?\006\031\321\277\360Y\362\001We\265\277\336\031,\311\203\335x?\270c\331\"\222\037\273?tW\361M\035.\320?\033&\\\310$\370\241\277!f\002[\217\272\315?\251m\321\350A\021\272?$\001\016s7\202\261\277?\376_T\325\210\256?\335W\263\001\017c\257?\000:\351\313\0310\256?\304\256`\207\357\004\270?\207\273\324\347lP\261?5\016\264\031\365\n\314?gt)@6*|?K\215+\256\251H\275\277\275\2472\323c\317\306\277\324\271\251\314\'\336\314?\222\346\240\'I{\262?n\025\326\351\205+\240\277R\003\314\206z|\263\277\032\241\337i\025\346\271?i\305\003\3026\003\264\277\253\233\326y\270\211\257?\026\214\311\374\000\010\277\277\266\026EYO\246\240?\363o\2265a\370\320\277Qu\177\220\344@\251\277^\013\361\371U\261\315?\206\321o\336N\320\264?6\030\007\033<\310\307?($\227\177\r\215V?X\253Ce\313?\251\277\316\335\245\336\364C\261\277\370%\224\372\276\377\210?\020\205\021w\241\356\300?\230\320\377uT\304\302\277\232<\017\343\275\006\260\277\326\206\001p\205\325\271\277\331\203\234\212D-\307\277\345\321D\314\017\035`\277\221o\315\211\341\223\300?\342\303\201%\177\334\242?\250\241\313tW\307\274?6\245r\3018\210\273?\242\022\304\373\353}\313\277\257\341r\352\310j\250\277\254\026\246|\017\212\222\277\032\000\tk\311\352\312?ZOE\250W\005\315\277^\\\362Nb;\221?\trc\206\201\n\240\277\221\373_^Zs\222\277Mw\'O\320I\220?\032=)@E\016\242?\021\352\223\245\000y\320?\370\357\344\n\204\256\244?\200\026\356>\362\313\252?\\Ls}\262\250\241\277y\247\255H I\306\277\211\200Z$@I\221\277\257\310\204\335\307\240\270\277\246D\315\226\327\025\301?+s\374\312\2608\306\277c\031\\\313\020\355\257?W\234\002\022\230\222\271?\354\347\374:\343 \307\277\016\263\337\325\370\216\250\277\030\377\250\r-\327\300\277\331\222\241\230h\010z?\023\331}\306\304\200\261\277\265.0\210cK\305?\251us\351L{\305\277\215\231\014F\323\326\325?/a\251M\243\213\233?\3657p$Uz\307\277?\267\013\265\371\244\254\277\341C\016\034,N\300?\214\366\336@o\260\260\277e6^\354\362Q\267\277?\300\224\307\353\325\243\277\246\361\254\303\352a\226\277ZW\235\001d\004\273\277\023\375\240\202\024\252\211\277\242m\277\261\260)\304?%\313\321\032\3022Z\277\207Ud\367E!\311?/`\232$\005\301\321?\201k+43[\235?w\302Ot(\351\263?\355\312t\343U?\301\277Z\367\253lo\357j\277\003q\032\3656`\250\277E\327\207\220\353\370\265\277\352\307\357\006\232\366\305?\354\374\017{F6\267?\260\216\306\274\247\274\230?!o#\335aW\270?\032\371\\\262\\\355\246\277\313Da\026I\350\212?\255\254\241\332\261|\244?\355\013\302\304]\340\310\277\344f\310-i\303\225?\357\374\351\316\301\334\245\277\037C\366\004\314\314\311?\003\027\371n\243v\261?B\265\223*\014z\300\277\302=\375\357GM\263?\344\261\027P:\013\312?1\212w`_\312\307\277v\246\272\276\250\177l?\210O\372C\317\264\225\277\016Gv\331_\"\262\277\n\033\327\361\206\320\243?F\335|\026r\345\312\277\013\3218\241\251\262\220?\035a\211\270n\003\253\277os\376\2325\276\267\277\344;FclC\277?!\022t\235\004\001\300\277:\022\331\233T\312\270\277\211F\272G\274\023\271?`\007\244\334\023\332\240?_+E\220r\025\243\277\262[\330\223\013B\265?\347\265`\001K\230\224\277\3562\005\247\355x\240?\306\366\330\027\230\212\243\277\257}e\237\3330\266\277\246\010s\'g#\302\277\362Ib\273\2577\232\277\357\376\340\234\217\242\312?d&}\343Ou\320?Z\036\210\036\341\222\256\277\177vU;\314?\226?\271\306J\255\207\251\263\277\311+8\010\207m\300?\340E\215\251\223\030\240?F+\351?\377\214\307?\036\272\004\032t\303\301\277+\271;]\234\032\256\277\035Z\210\227\244iv\277\232\271\006k\240 \315\277\306\371\037\235X\321\327?\305\214\363=\237\236\261\277\243\233\'\235\220\244\254\277\002\373\264&\2235\317\277\006\313\373D1\207\222?\264\"\362\204\233x\315?\\\t\227\016#o\266\277s^U\337\017\355\253?AGQ;\274\327c\277\207\305\\\006\026\367\206\277\240\263\323\236E\302\255\277\375^\241\213\301v\264\277\210=\260\317\344\221\257?C\364\207c:\\\262\277\'\315_E*J\265?S\252z\363\227\232v?O\3445\020\002\344\300\277\342Le\2436\025\320?&\312\037=\2223\275\277\233Wv\027s\235|?\231\025\273\201C]\266?\023\363I\270<g5?\310\372.\002f\307\213?7MG([\301\246\277P\324\307\211\245\276\273?P\276\327\241\205\215s\277\305\307!\001\022\252\251\277]\232\262\277\223\377\271\2778\376\033j\025\327\317?%\210m\365Fg\222\277W\2362A\020\200\237?\320\343\237\247\211\035\275\277\375\312\352\335\333\276\267\277\017\305\3211\014$h?\276\2246[\035\312\300?\231\'\332C\263O\260\277\255W\302\353w\006\270\277\323\356\020\004\023\205\245\277\233\033o8t6\303\277\226I=IDz\267?\034\247\321\":\257\242?\033\214\207I\256|\263\277\233\231Y\340\314D\265?\356V\353\346\265\007\204\277\\\214\237\356\025\332\271\277\001\210\003\\\300\231\310\277\031\034O2YQ\312\277\237\316|\367\270\010\235\277HR\222[\274\236\301\277\230\177R\021\374\020\236?\366\306\n\234\337(\262\277\212\234\216\'\261#\222?9E L\244\t\243?\355_+[\361\377\240?0~[[\007\246\267?Tr\346\253\213\330\305\277\022\032n\256\035>\277\277\213\372/W\006\014\220?\034(C_X\240\265\277\257\316e\tZ\272\317?c\253CN\261v\266?\240\366\345\216P\n\251?\035D\267\276F\t\254\277\244\234\306\302\243\240\323\277\031\254V\375\362\321\256\277\032]\337%5\243\307\277\311.\323\200\341\376\262?\374\230\323\r\213l\264\277t\353T\225-^\202?(\372\014\357\351=\263?5\256\0068\213%\323?v\263J\026\025\024\237\277\341\235\021\200e\363\240?w7\277\351\275*\301\277\244\325at\307[c\277`g\230\234\202\257\240?c\3221\207a\336\240?\217\325\225\3732 \321\277\371Pv\351\302\372\240\277\215_\315\221\014)\244\277\314\247\243\367\036\273\271?~\246+r$\372\253\277\276\310d\201\321\177\304?\000\231\273\342s\343\310\277\"\310\231K\3102\316?SN\260{:\\\277\277\340\332\r;\237X\264\277\354\351\'\2300\226\220?\333\207\222 $\300\243\277X3$\232L\264\267\277\324!Gg\332\205~\277\033_\306^)\n\331\277fw}\365\242\347\263?\007\032e\266\377:\246?\355\031o\022\244\254\314?[\334,\036r\200\231?\2773\235c\302\314\261?\276\347.\374\377?\245?=\364\017T\273\304\264\277\326\254\022U\373#\216?\023\312O\325\354\002\302?\326\375\366\374\026\254\276\277\2579\177\030.\231\274\277\304\014\003\210\030/r?\344h\206\226Q\372\262?\250\007%F\243\026\252\277\331\022\277\326\300\037\177?\2104g\276w(\236?\230MS\313\334g\271?^:e}sv\223?\236\016\221\334\331\301\307\277\257F\322\333&h\316?\245\003}moB\320?B\317\365\211\"u\243?\250 \361\345;<\223\277<;}\353\314h\310\277\233\205\373\035K\027\262?Uw\246\362\243\235u?,f\300\263\3521\250\277Lw\331\004\356r\304\277.\036|Kz\351\220\277\004d]\300\t\033\255?gI\264\"8\033\234\277W\230P\265k)\253?\272Kh\014B\351\200\277\315\013\303\244\0300\265\277<K\201\220g\337\275?8\250\001g\344\022\260\277\237\260\317V\027\375\254?\300l\021q\335\224\243?\270\312\332CY\351\205\277\371|\377\036\002J\251?\211\224Y~:\307v?\256\243\374\317=\024\301?\2216\373\317\255\274\275?D\206p)\227h\263?\361\361\332\214\260\365\332\277\200\342\210/\275l\247?\025=\366[\317\301\262?\303\027<7\334\332\253\277\275WG\307\353<r\277\365\323\310\007l\005\202?\376u\235\227\347\323\242\277\r\177wD\257H\310\277\352@s\256Bx\277?_mG\337\t\024D\277\232a\264\272\031\355\304\277C\2002\362=\244\316?\253m\321\0017\255_\277jNS{\347\203\315?\366\035\2656\225\366\304?v\207\255%\212\264\252\277p\2169H\230h\310\277in\"w\243i\321?.F\327\237}e\302?\023X\352\344\355\242\312?\037q$\335JK\245?\007\363\034<\201^\307\277q;\272\005\316\323\306\277ql\010\331\334\317\206\277(j\017h\271\273\232\277\354\275\240D\361\006\314?#\376\236\350\030\264\253?Y3\020V\202\274\277\277D\355\303P\223\246\250\277\341O3\206\307\323\216?h\021\263\330\'Mz?\362\363\031i4\226\306\277\215!\014y\314\004\312?\022^p\342|$\264\277\317q\273\006\021\337\245\277\305\255\355\375;\306\213?`i\325\207\037F\301?\351\277\360\374\010\024\205\2777\223\247\357\250\026\244?\257\376\0343\027\234\276?\231X:\265\377\373\303\277\006>=\241\350\352\240?\005\2240\246\220b\310?\217f\227\214F\211\261\277*)5\220\036\201\300\277\247S\347\027\273e\307?j\216\007\321\322\323\311\277\350\250A>Tm\263\277\267P\230\247\335\007\257?Z1X\365\261\031\306?\323\250\024\007s\374\263\277\342\300&\320\306\320\250\277\316\005n\330\234G\263\277\243\251nWOM\241\277\315m\252\365\252\014\260\277\227I\370\367\363\256\244\277\256}\220\037\264\264\305\277T\227\2465\277\314\242\277;\337\302\240~!\220?\270\177\010G\353C\265?@\277}\013:Z\300\277K8\203\n#0\225?\252\216z/\310\351\203\277\353M\240\357\353-\206?\274\264\t6 \334\310?4\313\t.\025>\270?\326\250N\254\277\352\303\277\222\245\341c\373^\277?\220Dx\232\177\321\271?~\372\225\225\363\305\266\277\023{\352\227k\021\266?\332\212\003\002\303\367\271\277\221\263\'\271G\323\264\277\366 \004Ib\222\321?fR\317\r\227\311\264\277\007\247$\031\334\301\231\277\266~\266>\035\247\276?\361\325\224P\023\355\245?\316<V\224\362\251r\277\314\310\331\332X\203\305\277\020.[n\361s\274\277\370\234{\240\367<\317?\246o\353\216\037H}\277\342\204\'\233\001>\300\277;JlvF@\322\277\0035V43\340\244?\033\363\307\363d\211\226?,\343\255DL\234\302?\027\330\221\315\035\234\301?\003\250\254N[\351\232?\345^\t\003m\204\245?tZUh\331\253\302\277\275N\2773\305l\300\277\021lb=\376n\263\277b!\247a3\233\266\277W\306\251\014\r\244\264?\324<\217\262\200\357\254?\342\"%;q\321\267\277\271\225C\334H\n\300?\310\265\344\304\342T~?/}q\010\271u\263?d\322\303\336V\031\255\277\250)\305\330\275\367~?r\253\215\237\025\356\233\277<\327\3404\366z\306\277C\303)\202\334\336\255\277\'\370\005j\214.\245\277\033\001\'u\256\347\304?\r`Rl\227\024\245?\301\316]F\327\000\260?eyx\242\225N\222?\343q\010D~U\267?\n\354e\345((\302\277\267\236Sr\360\255\264\277\316{\203\036\313\353\277?D\262\246\010z\026{\277\210DX\002\355\312\270\277\225\214\336<\216\214\275?\367p\320\347\214\307\312\277|\221\340\r\234\324\243\277\236\243\335\313\310F\261\277?\2233B\262\326\267?\312i\271\0058\314\215?\016A\323VE\377\224?k\375\332\350\321S\261\277\3744\031\371\324\353\233\277\326\342\320}\210\026^?\014g\247\3434>\201\277+\024\320B\375\260\267\277\202W0 \370\312\321?\345\032\025\342\016\220\267?H\336l\334\312\365\241??\330\266\205\242\247\320\277\234R}\206j\300\264?9u\322\014\245\346\264?9\260\211I\3118\303\277fU\253!k\374\303\277\330t\026\312\3720\264\277\021\273\376\230\307\000\243\277\257\311\263-\240\nY\277\233zQ\016_9\247?B\230$\210s\023\243?\272\022\336\271?\022\305?i\245\354\371\330\262\277?f\0073\000\245\345\262\277\277#\266{\026\253\276\277\260\000$\256\274\253\254\277\330\271\243\342F\252\241?\003f0\000\232\340\277\277Vm\006*\264Y\260?\205N\212D\177%\253?\316J\217\267\247\027\321?N\311\265\236\265\354m?x\215\223\332\360\006U?\333\000t\261\\\243\245\277\327\245\341\250aZ\256?\270\267\202\014\256\010\300\277s[\236\037\002e\326?`O\231b(\004\312\277\377}\037a\021\236\271?Wp\210\332\377.\267?\246m\020t\345\366\210?Z\241\335\217\276\224\312?\021\237\'\231\n/\261\277\244\2477L\247%i?dA\263Q\353\272\273\277\360\r\352\357\031\323\243?\3718%3a/\247\277\353J\257g\3234\307\277;xd\344\331\206\267\277\337H[-\t(\260?x\350\231R2\004\241?\330ZWL\2364\263?\017\220\246\271R_\266?.\221\357\377\3606\303?qC\210\252\214\\\323\277\312\t?v0\033\270\277:f\307\314\333\263\300\277\036\231R-\017L\256?T\032\346\254Q\233\316\277\371\212\233\310\243!\262\277\245/@\210\360X\245?j\256r\273\272\272\301?\016U\237\234(\343\264\277>\177vcTQ\300\277\\*\t\244\306\021\307\277e0\271\263r\341\326?\272-\214w\304\376\265\277#J\213\213\307@\305\277\014\300s\014v\251\243\277\333\346\340:t\275\300?Q\016R4k\177\204?\275\371j\212OH\302\277g}ajv\033\271?me\260_}\212\302\277\212r.\034\004\021\273\2774S\220fuZ\307?\0005\270\376M\374\244\277\343?\332\242a\347\275?\365-\327\274\265\025\306?\026\343T\240\253?\325\277\210\017\376\204\303\273\242\277\000\336\266\r>\255\320\277\320\033F\376\\F\233?\317\366y\253*/{?\r\277vS\343[\272\277\035\273djo\242\241?\317\326^`\303\331\177?\314#Y\"<\263\263\277\371\242)\306\340\370\240?\342\376b\347\025\350\261?xey\007\223\267\261?\004\215t\257\343\323\202\277\340g\307Q\370\017\227?\261\230\272-\024r\267?\027\254\252\036{\003\251\277\023\3318\030p\203\230?\245\356\343\333\367\024\265\277:\224\034!\350\017\240\277\321j\\\340&\025\270\277PJo\306\270p\214\277`\371\326[\t\002\242?P1\217\354\276\227\274?@\237\0329\302\022\240?o\022\216\3012\363\263?\003\031\317\266\305\350\242?\332q\274D\217P\300\277;+tB3\357\300?\356\242\377\325\346\317\201\277jeF%\300;\240\277\3130\221a\366\213V?^\241\327i\355\270\225?\t?>\346_\177\265?+\232\371T\030\214\207?\230\2335\205\216\020\254\277\265x\223<\006\033\310?!\247W\360\232Q\262\277\007=\313\275\204&\214?\177\225c,=\203\303\277I\021\224K\334\220\256?\344\007\177s\252\205\262\277\377\225s\206\032r\264\277m<\273\027\2256\205?\322:!\237E\374\256?\214?{TF\034\302\277]\022\214\354\364\316\231\277\234\034\225\003\031\240\237?>t.\276$\265\252?}\0067svP\266?\347\340\ru\351\313\314\277\021M\374\242\345j\213?\255\252S\314\267{\225\277p?\263\022\320]\310?\335k\275\202_O\267?0X%\333\324\'\213?\035\220a\010\300\302\323\277\377\227\372\211\007\327\215\277\331\235!\271vO\257\277\022[?\034\3113\276?b\030\361\030\272\274\250\27763\340\266\240\374\303\277\024MQv\237 \242?C\270S\341\306\306\265\277\272_^R\304\022\230?\\\1774\0236\323\252\277./\311\024=\243\265?\251\022\306\035@\332\275\277\025\270]\323\201\332\261?\321\036\000\247<\335\230?\016\237L\323\303^\244\277h;[I\"<\263?\252-\364\332\t\313\244\277\251\031)\271\352\334\276\277*\301\272\360`i\244?3\3475\273^\220\304?`\273T]\364@\264?>\251\372\242\336\013\224?\024\360\240\033\271\336\304\277\250\365\010\322<\354s\277\352\274\256)\"\224\242?2\341\346\014\365\254\301?\002#\330\301wV\224?gNJ\251\301B\311?\027\355#,\007\244\265\277\370me\305\314\030\272?\204?\204\334p{\272\2778\030\025T\221\355\257?\253\253&\242\352s\224\277\023\304\032di\243\251\277\241Q\357l\356\331\275\277\025\027\014e\255Z\244\277\341\231\301*\342\203\245\2779\251\2279\206\225\250?\236\016\320\005\003\r\247?d\177\026\235~\036\315?\\P\327\205\235\227\245?6\r\246\024\027_\274?v\373\022\313\342\363\323\277\027y\3225[2\321\277~\342Og/c\246?C\030H\271\203\006\247\277\255\203s\013H\371\240?\317\230[Z\031yr?\262\346<\303w\353\264\277\203K\026\363\t\336\266\277|\265\335\265\351\304\254\277cM\016\333\347\'\235?TJm\336\033\261b\277\014\350R\370\177\372\314?\242nb\327%\257`\277\250\355\"\203\347\367\237\277\325\202$\323x\'\301?S\350Q\277\322f\315\277\221\'t\365\331\263\250?\276\301\313P&\250\202\277\024l\362x\250\301p?\020\031\246(\t\003\232?\315s\362 \331\373\227\277\205\270Mb\265)\252?\344<gu\255\016\265?\3717\340\230\020\276\227\277\276\037Z\235*\032\234\277\275\276\235l\332\325\262?\037P\020\355\351\345\230?r\236\325:LO\265\277\266\264@\034,\300\275?\227\031\203\356\266)\273?\345=\302\366\225t\204?\001\031`\211\004[\261?\242VO}\020b\222?Q\260\241\236\027\353\262\2778\030\247\0163\007\303?\307\277\220\025\263]\305?\333x\376\350\202\226\310?5\035\224v\353\325\241?\016P%\210XX\250\277\" &\253\363\215\254\277\376$Bw-\262\263\277\272e\310\256\266\300\264\277#\014\307\210\247\371\226?\347gN\003Y\317\314?\232S\342\344\245\372\243\277\200\030\264\264\305.m\277\264\311\222:\336\014\274\277\034\003\271NK\"\260\277\353B\357\353\275\311\244?%G]\323e6\303?FK\216\351\345L\271\277A\1775o\337\342\266\277\\\376\220\"\262\330\266\277\317\332\230\254\300w\315?\233L\224\347/\275\240?^\245{L60\300\277B\340S\313&b\300\277\027Dh\333\214\376\274?\0033\n&b\204\243\277\357\245\217\310V\376\207?\262\301>\036\001\320\267\2772\017F\252e\213M?\251\037\035?\361\'U\277\252p1\220F\344\234\277\037\317\204}\333\301\265?wr\005\231\311?\311\277\307\226+\"C\246\200?F\034b\372WV\300\277M\1778\365\306\035\267\277v\232\031\005\273\326\276\277^\177\033rd\242\247?j\3239\2676v\305?e\365\334\314i\237\254?f\004\266\016\262\241\256\277\263\312\270\000\214\321\266\277\220\343\035\236\336\325\302?m\253d\231.\265\251?B\340%^>\305\235\277d:\363[\004\t\305?\035\001h\246&\213\256?\307a8\304f\233\270?8\344{M\323B\312\277\250\007\366\203y\332\240?\033\270t\376.lz\277e6\241y\\I\272\277dP2o\206p\274?##\257\262\200\252\261?=`\375\020L\233\302?t\313\373\003\266\035\274\277+\'Sd\347z\307?\005\332\321\225O4\242\277\367{\302\312}@\263?\3525\300K\3232\301\277\342^\207?u4\223\277:3\334$f\300\230?\033\3557\315:\232\320?\217%j\2367V\263\2771\211\240\035\023\314\260\277\026=S\350\354\315\236?\211\327\345\316\334\026\273\277\201i9\030\367`\223?\311\320\000\236s\235\301?g \224W\300\033\320?~\251\236j\3261\261?5\"\206qQ\262\246?\t\310\002\232\327\311\274?\227\353M\307TN\275\277\336M\223\360\345\250\277\277\222v={Abv\277\350\237\003\020\006\r\307\277\201\213\336\004\tT\246?\374#L\207\265r\243?c(\371\271\263I\267?\020\002mJm\010\272?\340\n\314\313\354ev\277\247ZQ*k\210\322?/W\330\310c\327\272\277L,\253\374\376G\306\277#\245j\314R\333\272\277F\274\223\254\'\344\303\277\351\305z\374\315\013\273?\013\332\274<c\226z?\004\345\331\3508N\260\277\215\222\362G\322 \270?z^&+\014l\242\277\302\031\314I\365\277\303\277\327\000$\275a\302\321?r\177\036`\361?\314?\272A\322\032\035F\240\277Y\010\326\306\274\365\252?\343\371\241\220\214\005\263?<=\272\2325\206\300\277\367=x\020q{\303?\306\312\037`w\306\257\277\334\314E(\206\352\257?L\2531l\245\220\251?k\222\352\233\2240u?%\030\257\327\371\223\241\277SC\340\262\345\252\222\277\177\001\352{\234\237\241\277`\315\226Q\320\252\301\277\344\257\224\235\031R\266\277zg\2545\2673\214?\330\306\177\250v\262\267\277\217g\260\355}P\264?\314\274\014C\330\374\213?\021\034\242]\022\221\305\277\354x5V\364a\274?\253|\202O\315\245\240?\366<\230\330\352e\245?8[\214\222SD\305?\332\334H\372b\273\302?\260\255\243\352u/\230\2774\240\255\"\245z\316\277G\323\305\203\300\364\216?}:\300\226\266\023\301?i\316\277\245\022\016\241?_*\007\250\n\034\265\277j\0215\351Z\373\306\277\206N\006X\366\362\272?\214\220\276\220\023D\262?\317\241\255\0013\344\234\277#\017\003\374\\0\214\277\310\214`\201\342h\250\277T\241Q\3325\270\260\277\251U\322V=\255\237\277d\366\340\372\002\271\303\277\213\231\017\263:\206\227?^y\004\263\320\257\263?R9\027\"~\241\317\277\360K\240\251\005i\251\277B\374BD\004=\237?c\345/\361D\302\260?\326\240\271q\325\245\301\277\177\257\312\025JPZ\277~I\257\255\274\270\271\277\036{\323\265\005\240\304?\014a\215jE\234\221?N \255L\335\001\252\277\020\255\304`\225\315\324?\002_5\326.)\256\277\r\206\326\253y\344x\277\276\305\007\234]\316\301\277\272\314\223R5\223\266\277]\337\354SX\250\216\277\"c\202\222\033\237x?\021\315\211\027\032g\261?\026\307\331\362\006\215\272?\376~0\'\263\344\315\277$\321% \2237\257?_;\031QO\"\247\277uw\361`\376c\244\277\322\226\251M\341\333\240?ad\000lP\334\307\277\037\0029Iv\351\252\277P\202I.\201\321\241?\003#\276a\260@\321?\203\315E\3654\002\303\277\372\002F\307_\372{\277\024\017\025\251]\217\207?M\010&\233\250O\303\277q\223\267\177PsZ\277\353,(_\232H\275?\026\022\207n\337\262\311?\3779;K\260v\301?\323#v\237\225\376\273\277\261\320\210\313^?\266?\303\020\353\372:u\313\277\314\333\300\316\364O\275\277P\214\347\t\001\212\244?\345\266r\232\222\020\267\277\375\305iE\033\275\263\2778\277c\363r\201\223\277\3141\335\312\260\340\252\277\370\344P\003\\\202e?a\327\263\371\340\261\256\277\021\315R\335,&\237?\365\353k\203\234P\265?\013\0242\310\020\274\320\277h\240\300\217\261\352\221?l-lM\243\267\203?\201\265\245%#\336\260\277!.tuc\267\255?\323\303\367\312\274\376\261?\263\214@\320\270b\274?S\215pe\006\370V\277\0057#\364p\313\246\277\'e\347\024M[\214\277w\272s\'@J\305\277\201E\256\363B\220\234\277_N\322\322\241\345?\277\241\315\233\232I\241\303?\311\326\326\374\232\321\300\277\272\026\206B\323u}?\327R\273AE\342\267\277a\310&\376V\354\305?\213\251p\343%-\204?\210\325\177\034m0\250\277\315\321\312(v\317\247?\207\237c\263\230g\323\277\r\032D\302\035\361z?\332\332Y\313\364\031\246?\236\212\355e\237I\264?\t\307\310\272`\020{?\372\225\330\206\251\302\300?\365\342=\261\346\201\272?\313\255\007\014\254\342\210?}\246\355\225]\351\274\277\353\0341+x\323\224?\343<\264(Y\373\260\277wO\004\362\213\376\222?p\017J\211\224\006\233?\366\355?\317\3065\265\277\327&\253X\277\344\206\277\016\333\002r+<\177\2774]\215\213\3675\267?.\302\245RX\305\311\277\005\200\220\261\017\203\263\277T\324\354\025V,\266?\032\234\325^\267\330q\277\177\367\316z\322\025\245?\202\353=n\355\345\260?\\\342\255\'\223^\246?\230T\337\273\260\271\303?\021\262\272o\250\027\217?\030d\220\216&\266\275\277\2325\212.n\266\317\277o\254V\201\337\340\255?\355{E6\245\230j?\007\327\242D\373\332\263?\337\254s\023v@\216\277N\227B\263C\323\276\277\303V\256x\277\337\310\277\335\216\351_b\010\265?C\363\277\3715\016\260\2777.\204\355\212\320\267\277\235\302\027\246\353\321\303?5\224\234\241sW\262?s\3247\201\001\"\275\277\320\361\210\347\240\340\255\277\333\t\200\241f\310\325\277\240>\000;\2523\253\277r\232\261\261,\262`\277(q<\n6\337\261\277\313x\035\3614\034\302?\215@1\266~\023\252?\2752\344\270\364\260\277?\3458l\263,\241\230?\377\006\006\3122O\231?A\t\245u\366\246\237\277\337\334}lR5\305\277\341\266\371\223\312\265\250?\340x:>w,\236?\246\304qF\230X\301?n\262*\206+\345\250?m\207\311\232F\360\245?\256\235!\202\307\275p?\355\036;\037\210\263\300\277\334\261\374\"\213^\311\277\335\346\335I\212\333\304?\222\353\311\242\333\037\262\277u\341\275\350\327\305\231\277\027\"\236$\036\005\240\277\322h\016\207O,\214?\266\274\322J\255!|\277\240\262\032\25559\274\277I\311\000\362\350\357\306?V\035\315\316\211\177\303?\374\036su\r,\275?\360\024;\003S\007\263?\022@\251\2378!\247\277\204\234@\313\330z\306\277iq\345\2128J\311\277V~\330\037\037(\311?:\'\212%U\234\274\277\275\235]\353\\\222\251\277\2421\274\250\304\344\310?7\222\333\322w\266\223?\263a\005e\372-\215?~\312\252k\365\306\267?\214\211\013\235\376\217\254\277\252\177\313\273?\220\226?\252\265\223\377\031|\272?\317\337\207\364\254\215\256?\342\002\232\321\026\270\273\277Hk,\335\006\253\262?i%S\310\'\034\262\277!s\270\342\237\210\251?\224\363.V!I\300?\237\215\340\350E\222~?\3175\033\324\273(\334\277\376h\024@\'\271\261\277\240\261\330\363\224\354\254\2770\022 }oJ\262\277 $\371]\363\372\243?\214\037\260\367\253x\272?\017f:t\326\025\266\277\240O\340j\223o\320?+\212\327\315\216\307\226?\024\276\230\034\371N\257\277\022\205V\033\252\037\217\277\321\206a\367\242\300\317\277\013Q\241\341D\r\241\277?\215\364\003)\334\277\277\254\205\377\322\360\227\267?;\347\253\303T\017\271\277K\177mU\037\337\270\277$\034&\214\002\037\243\277CGnW\007\375\270\277\262`>\322\272\350\262?\333\312\241%h-\314\277\263\276\217O\005\300\306?\211\347\315\325\242]\215\277\277\353\323\353G\212\240\277\277\242\0335`\363\311\277[7\304\013b\244\233?\224\354u\355\033\205l?\330\215{\3152\233\266\277\256\004\275>\350\033\310?R\034\266e\tf\276?\317\211\275\232\206\323\253\277\3746H\242Y\017\315?\'$\372\026V(\241\277Q#$\345\036a\271\277\307\024n\242\234\273\315\277\317\202\0004E\212\306\277\030\001\260@\334N\242?V\'\013>\366\254\210\277\207\265\325G\315>\313?,#\014A@\327\315?\332{S\035\335\227\202\277+>E\313~-\302\277\203\324yv2\021\250?\264\374\333\305\267%\251\277ilAe\336\264\263\277\033S+\356\033\216\277?]z)\203\233\321\275?\306\344\363\024\310\252\273?\376\3634\002+\313\306\277\212d\320DB`\275\277\2764\017h\355?\227\277\340\227p9\246\352r?@\260\332\276\271&\272?\300/x>\030\n\305\277\3508\346$\023\272\264?\364b\271S\332\006\263\277R\025\313I,\023\317\277\375\252\031\365?\275\204\277\214\033\037\372\371\013\262?\224w\226\3751C\315?\237DM\n\205\271\303\277\346Q\010\376\347+\232\277\033\2076\323L\271\243?\352_2\355u\013\230\277\334PU\034\377\274\243\277YS\226y\307\266\255?\342\341\231\rg\370\245\277\273\332\325\215$|\201?Jf-u\250,\260\277\206+\301\325V\332\243?\212\007\255\013\343\320\262?\261kBn\351|\264?j\337\007\354\241e\262\277\341Xp\347`\262\243?\033\03329\203\014\221?Htxn\202\223\276\277\003\240\253\2515\334~?\3628\234\242\224\233\254\277\3462\223\377>N\305?i\365\035\007\301\230\265?\014\204-L]v\224?U\203\324\245\362J\206\277\306/\240\312AF\212?\000\272\375\320\241\010\271\277\275\032\304\232\302\315\321\277\246A\010\373\306\035\262\277\241\245\307A\235H\262\277I\372\317L\277\002\265\277Nh\200,\023\265\266?\212\362\"\373c\261\312?\267\272m`\362\367\312\277\177\335\260\371j\346\305\277\3516I\265\312\363\221\277\322\375\010\201\014\211\313\277x\243\2019\020\274\311?\340\360\202\276>\241\252\277\2117C\277:w\305\277B&\252\\\205\247y\277\371\310\261|\344N\243?\260\220\246\001\251[\261?\357\375\267\345U7\257?\262r\010\rH`\301?7\014\201l\351\223\264?\367\246\363x\347@\247\277\224\023\242\273@\225j?[\036\316\365\236C\306?\256\322\214\236\223\201\264\277\365hD/W\304\242\277\261|\272\274\341\375\257\277\355QX\272C2\254\277\377\217\r\314\306\334d?\007\226^\230%I\225\277|\036\357+\034w\311?N\207\355\213r\030\274\277\226\274\025\327\263u\224\277\324B2~V\206\301\277\272\334\203D\235\255\307\277\262\204\206\374*\002\267?\202\036~~\341Q`?\302>@\267\365\267\231?lZn#9\370\250\277\2627\236\336\243B\276\277\271\002y\267\305\266\255\277 j\006HY\367\247\277\003s\026\313\036\357\234\277\323\323\t\277b.\276\277\034?>\232kk\322?\271\311y\233\373\005\207?5qm\275~\361\254?vj\000\016\331_\223?S\351(\037\230y;\277\262M\026x\276\177\306\277\223\375\343\217\004\310\276\277\367Nz\336\001\026\310\277\004\274\212\256\"w\225\277\177\277\365\354\251A\264?Z\r 8\377\311\227?1\227n\206\031\013u\277\221\247y7G\253\303?\213\215\007ib.\215?)\206A V\246\203\277Q\177_vuN\260?=\360.\t\233p\317?\254>\343\316k\224\270?\026\231\243\220\322\260\263\277\203\266\375\273 \373\305\277*7\265F\360>`?(\221\214=\255\276{\277\301[\322\323\237\224\232?)\376*r\0323Q?\217\261\230d\366<\304?\223\006\201\373\216\252\300?\026\005\017B \346\252\277\035R\252\r\204\227\273\277\231hDE\337\320\265?\313\272X\332\001\264f\277\327\216\004\212\201\205\250\277X}M\325\023\033\257?\333\013\272\007\301z\265\277/\014\357f3\304\272?\252\267f\321sV\311\277XY~\250\205\005\322\277\211\242\005\260\213\262\246\277J\247y\nGP\204?\310!\n\2624k\310?\221\330\272\217 \301\236\277\320\347\256\313\314\200\246\277C!\035S\232`\301\277\313\035p\026\256\253\275\277-\\\r\024\350`\212?X\314\361\352\242\346\314\277\034\202yEL\312\220\277\353\223\227\313b\334\222?FV\217\222x\032\267?z8\217\330\253\366\251\277\301\t\030\010\333\255\275?\363?b\364\341\244\243\277\203\3117<\214\333\240?,\274,-\201P\254\277|oA/75\266\277A{\215V\235\030\255\277)\014\026p\222\256\272?\340\013\336\240\003\237\304\277\250\227N\350:\342\225\277;\222\332\246\335\266\274?n\342N\006\014V\267?w\232\255~\031\202\211?\220}\022\275\rz\201?\267\000`\373\313V\251\277E\321CC[|\276\277A,%\360f/\202\277\022\330\236A?\031\276?\311\"\216\010\301=\306\277\004\230\240\001\356t\266?\\#4\254\027\315\254\277 \017\205.8\007\234?v\305\037\317\312\021\320\277\277p\314\255\224\304\267?\022\311\354L\360\243\274\277n\3349\247Z\227\301\277)\214h\334m>\240\277\005H\307/\217\246n?\353\231\000\315\024\254\302\277\306\025_\263\037*\320?aN\252\245{\336\256?\372\260\205\261R\253\222?\r\276\256|\314\276\245?\0059\257\346\027\350\263\277\334\016z\201(\350\200\277\023\310A\177\366\002\241\277\033\323\003\037V\206k?j\312S\234RA\244?\317\rH\264\271\030\253?ZO\020F\262\301\253\277d\036\302Jv@\271\2779Du\242&\035{?m\261\315\310\026N\316?\337\341\025d\224q\304\277\320m\342\377\233\002\216?\202\217\340lP\225\277\277\210\261\233?{}\263?\255\273\034z\213q\303?Y\354P\343p\266\261?\037\202wJy\302\227\277:\232\002\364\233o\307?\305\247\276\000\276\212\300\277\352\265>\032*\202\253?\3740\013r\331#\222\277\026p\002\232\006\n\265\277d%3\271\273\017\243\277\3269Hd\372f\264?\223\010\366ux\235\302?|\352\213\311\261\275\255\277\331\207\247\211\t\210\274\277\3216!\314Y\346\220?\220\203\365\253\241.\221\277\310\014\024\360\032I\300?NC{\376L\255\243\277\275\302q\275\304\276\306\277\263\301\364\357\243\232\216?\322\3732\264\3332Z\277O\314 \322\317\007\225?\"]l\177\024\331\313?S\314\320T\355\217\247?@\250?|\317\024\260?0x[X.\030\311\277\003\2515\257\005M\246?\257\265\017\236\036D\300\277\342\256\201\203\256\317\314?\335+\216\211\203\244\264? \333\261\321p\002\240?\324\307\327r\265M\240\277\217\016\017Q\032)\256\277l\333\316\355\370\233\300?B\336;\242N\346\247\277rs\313\253.k\261\277\241\252\266\017!f\261\277\337\376\353\t\362\206\242\277k\372b\353\372\254\314?K?\0161\035m\325\277]\353f\370\255\250k\277\324\034\300+\"\346\246?[\311e\t\265m\275\277\253\261o\346\2729\265?\032\250\0263\003\034\251\277q>\014W\010h\200\277\245\032>\031i\242\265?\000n>9\355\320\246?~\324\225\251\214d\272?\262#\006!\010\223\303\277\245\340\322&\251\033\263?#0\217\3352\350\221\277\260\326\373\253\177;\325\277\237\377&n~{R\277|\010\224g\357T\256?@<\260q\355\361\250\277\266HG\256HI\232?k\232\355i\227\211\320\277\236\360BZ\257i\277?\325\327;\031\377\240\200\277\244\033(\343&\214\312\277\271i\236\361\346\324\272?\\!\005\322E\003\265\277m\\\242\027\201j\260?x\342-\343q%\230\277\205\003[f!_\273\277\374\363\262[\365\216\262\277\302u\222\003\257\214\250?\365\366&\333 \373\272?WUH\2503\242\245?\007\327\025G\366{\300?}\303\\\347~\261\212\277\033\246\270\201\340+\275?\\\233\306x\245\315g\277\200\340\216\345\355\350\261\277\232#\202/\340n\237?09\245\\\0174\245?/\0130\3619[\266\277\373\316#e\363\363\225\277\255\327\254\271G\312\260?\252\356\356k\263+\260?Op\240\206_\225\305?\305|\332Cz\033\223\277(GC\3061\257-\277\207\301\213\006QA\304\2779\r\031*n\336\244?\3670_\0215K\244?Q9?\000H\272\253\277\313\272\214\211A\221\272\277\014\032\263\224\262({\277\325D\355)H!\246?\367n\262~=\221\277?\363W\341\302v>\254\277\0359\312i;\303\201\277n\177\270|\337\022\262?:)\323\252\356 n?B~\303\3408\365\264?\240\036{\323\370\214\244\277\226(74\270Q\313\277;\0060\316r\242\260\277\362V\366\254\375\214\300\277\230\372~\036\377r\267\277\302p\255\0109;\273?M\000\253\215k\316\233?\245c\242\246\022\037\244?\315E^\037p\307\323?\326\252l\250\000\270\264?i7\373\331RJ\251?\024R\035,\tq\301\277Y\347\001\301\245\004\267\277\201\327y\204l\375z\277\271\236\272\235\366(\304\2778Z\377\016x\371\202\277\260m\333\257\226\212\264\277\323\263\377\205\217\255\221?W\271\215$\214F\252\277\t\377\263\302\263\177\321?\306,\242\257\300\007\276\277\256\302\315,\233Y\254\277N\332\350\006\tt\324\277\036\302f\254\t\306\235\277\375&\007\355\231\013\306?\273\377\355\251\002\225\302\277k\324o\024L\250\245?\321\340\300\034\026\027\221\277\260Y\007kA\213\265?\352\001\215\242\343x\211?z$\032C\230\231\302\277\022\004\024\2229I)\277\257Tg\356\371\346\263\277W\212-\230\372M\320?s\271\255\307;\340\241\277\341\224\341\333B\312\306?\213-\272\005\245\200\230\277?\367\302z\001$\300\277w\023lEFt\232?\357\022h\347\t\231\266?\001\203lS\351\217\277?\345\276\274\235X\003\207\277\315\026\237\364:Q\220?\376\363\263\211\341\345\307?a\021}\337\331\272\304\2773\247-\354\215\311\255\277\003gD_\014\302\247\277\210\001\307\005t\241\255?P\223\341&\241(\220\277< `B\034\222\260\277\224\261\306\212\333\344\273?\311A\313\336u\234\260?8\315\235%\214\233\237?d\274\330\226\334R\270\277m9\301W\326\362\267\277g\302\3574\2760\270\277\227,\264.\3574\310?Q\037\333\364\274C\242\277\317~\317\032-\214\215\277\002>\001\217\373#\221?U\205\010\227\376\360x?\232r\362\203\024\007W?\370Y\246\355\332\346\216?~\265\243\000\227\227\305\277\325\226\266\206\223\364\306\277\313\006\nwXD\274?\250*M\250^hy?^e\276\266\273\235\245?\262\267f\265\312(\267\277\033\374#x\364\010\254\277<t\360\014G\037\264\277+r\362ke\202\241?\274\277\273@\371\201\311\277\330G\306\226\203a\267?\340\3765\244\210M\273\277\310J\3714f\205\267\277\225_\333\311v(\215?\356\362{&\267H\261?\302\257\241\310\241p\200\277\310)\361MK\267\270\277Y\267Z:\207@\302?\345A$\274\352\213\236?\336\'\000Q\326\021\321\277\352{J\207\017\322\231\277\356\241\344G,#\273?\201i\353\3255/\215?\303T\335K_\023{?\260|\336\330\354\303r?\003\342l\214~\004\225\277*\344\221\260\205\303\305?\3043\236\227\035u\203?\to\370\350\035\333\207\277^s\2117\202\033\177?#\260\245\356i8\261?\246\346\225\177W\321\301\277\010r\253\210\306i\320\277\032B\250(\353t\212?@<\302\243\354t\257?P\226L\312\274?\300?]\270An`\002\330?\311\262\276NJE\202\277\177Wvwa\273\272?\032\275&\214sp\247\277kS\316\177\214&\303\277r~{vi\324\240?\301n\215\316%X\212?}%\243+\352\227\303\277\347]\334\n\"\220\251?\317%\003Z\243\t\321?y\317\"\352\264-\263?\272\007;w- \327\277\305)\255\303s\230\263\277\022\330-\335\323\025\223\277\032\277I~\026\323\203\277\017bN\323\323M\217?\336@\027\222\227\371\266?\350w\316&F\342\261\277\245\303re\016\215\242?\345a\233\031R\200\231\277?N\257\304\341\346\272?\236V^<\225l\262?\306_\267O\004b\226\277>\231\320\220\360\273\227?CN\375 T\223\234\2771\016\371\337ci\271\277\022\337E\351\235p\232?\215uw\370Gp\246\277\302\247\221\363\327\321\272\277}\"\267\320f\017w?\036` d\303z\276\277\006\320h\267\014!\252\277\326\272`\025\034w\301\277m\302%\022\363\021\270?\374\214\332\324B\302\260?3q\213t\224I}?\302\256\266\244\260\263\263?\267\034\234CW%\226?u=\353\3746\014\261?\242\212\3408\351\216\304\277LtD\265\247N\220?K\340\211\031})\253?\353\225\241\253\n\"\252?\325G\245\373\030\223\303?\321\255IaM\307\301?<x\002^k\022\274?\272\016\207\311\251]\201\277\346\357q\032k\251\261?Yi\251\231\035\'\271\277n\263\217e\203i\223\2772\303Ve\347\002\242\277\372iO\270J\202\233?(\267%\225\311T\253\277\'\276{\224\202|\272?v\220\214Mt3\251?_:!\314r\273\205?3C.\321\305\037\266?\rP\360\321\307\325\306\277\226\021\217;\314\362_?\213^#\232MO\305?\262\227\250\374\322\334\024\277\274\207\357Q\317\271\255?\364\232]\256\325y\262?\223\320\276]\256\271\252?F^1\335\031e\226\277\333v\320\364\035\304\261?\332\246\334\014\203S\204\277\372N\177\356Q\326\305\277\324)\240L\212u\303\277|\341\331\025Bx\246?\374\025\215h.\257T?\024\255\036\202\342\324\245\277\245\306\374\207mV\256?.\226\362[\202r\265\2770\250\266:\201j\306?\246\232\345\343\304\353\301\277\335\2604\314\032\207\226\277\275\342a8\036\n\320\277\273\231\351f\372\367\303\277\336\3036\243\333Vk?\202\273\254mg\343\304?\202\224\334i2L\261\277\306@\025\332\203\240\224\277\346e\304QJ\316\255?\355?[\026*\333\262\277\\\370\335\305\377\325\261?<y\345f\262\\\270\277\263!w\263\273_\235?UD\355\022\354\\\315?9Iv\226\243\036\244?\221d5\372}X\255?\345\362\220\247<\331\302\277\201\r\210$\334\357\244\277\271\235\340%\'\003\263?\341\347\312\035s\274\270?)K|?{\000\267\277\034x^\321\276\371\200?\260Q\023A\031&\304\277\273\351\307\316V\270\267?!\n\374\026\026\276\300\277\233\305\177\267 T^?\322>\303X\305\001\262?-\223\230\n\376\244\303\277\355\033\330\275K\224\231\277\2416`\3763\000\303\277\365g\373\310>\250\304?\027\326@\360\371\222\252\277\274\371\321lY\303\301\277/\261\025\317\274\251\270\277\360\222%z\017\036\243?\336\277\004\270,h\264?\034\255\361k\023J\217\277\267\201\272\323\362\216\305?\324\005\332\004\251\210\263?\324\204;\230Py\270?\337\251\375\323\360F\257\277O\3237\322Q\024\231?\276U\266\327\266\244\267?\022\271\325X\2503\311\277\231\331\243\367\0223\271?\227\343\262\333[\017\245\277\275\3639\007}\'\303\277Q\206\240\321\005\274\240?\300\223\261\245\315\333\320?\367\024*V\034\263\215\2776\2123\356I2\302?\264~\2550\201\325\320?\324\341\001\367s\316\261?\260\no\234\227S1\277\252n[-\217\325\276?\265\014t2\300\346\271?z\201\2734[\273\237?\346T\304\0219\377\250\277\263\272\257:J\263\254?\3061\201\261-1\241\277\021\322\370\276kQ\304\277?#\010R:}\315?H\235\304w\013C\323\277\225+\330_\363\252\246\277T\033\262\301u\345\255?\371\243\345$\370\224\303?C\327\225_\367_\271\277\"\261\354\374<\313\250?\025\262\256Z\250V\247?\377W\024o\223E\273\277z\363\361\003\367\245\207?\211$\333\257QJ\276?E3\"h\342\003\233?\007\000\370\202\244\273\306?\0264\026\327)\310\200\277D\234\033\347\325\032\320?\037B\341\033\2226\315\277\020\373\260\306\205\210\244\277Q \353y\305\202\217\277\274\343t\300%u\322\277Pn\213e\'\260\237\277V\202l\333a\312\250?\004j\024\315EH\226?\n\016\002~\205I\244\277x\333S\375\367z\240\277\270d\t\276\006\277\200?$\341\005\322\273Wt\277{\3164\242O\245\243?K\225c\3106\206\260?r\nc[\204+\300\277)\351\001{\375-\256?\037\271\314Kxy\244?\216@\374\201W\001\266?\035\024\201\276\212\313\300\277\000k\337i\225A\306?b\302\022F\221\351\267?&\207\303\214\362K\313\277\002h\033\261\230\347\302?LB\251l8\255\221?\200\245\266u\346\205t\277O\351\257ho\231\265\277\374\215\177.\363Z\260\277\272\2647\260@\317\236?X\304\275-\250D\275\277C8:I\233\305\261?\\K\331\005{\202\272?d\216\331\336\324\177\310?\322E\334Z\235\354\277?\367\216\252\3175\305\243\277\351\277\247\217\002\251\273\277\265\215\362\267\034I\200\277\254-\235\355\233\300\273?8n4|\023\326\215?\330T\"\016\333k\266?z\341\370y\307N\327\277ni\372\334\025\211\277\277\2458\372\337\311A\243?\331\365s\334\276\320\265\277\022\321[\0061\236\265\277A:lT-\250\200\2774\273Y\251L-\245?\364))\272\360\003\235?\0331\341\275C{\266?\331\325\277>e\000\274\277\302\000\255\030\310,_\277\344\223bh\370U\207?~\200\217\303\323V\277\277\035\252*\323\017\244\222\277v)\252HV6\326\277\303\211XpxB\250?\342\346\236\021\013\214u\277Q\357W4:\231\240?\241\263>ye\226\270\277\273O\305 &\356\243?\270I\326mV\026\223\277\315e\363m9S\275?\022U\035\377B@\264\277\200\024\250\345\262\r\240?\204o\223\245%\234\303\277\006R{YB\314\306\2770\217\273\034B\246\222\277W\345JW\272\207\210\277V\356]$\341B\274\277\344P\344e\'\310B\277TmY\014\270B\240?\240S\354\323\332C\242?\2168F;\357\363\240?a\347\355\375\022s\231\277\r:\307D\314\200\243\277\351g\267}\021\377\301\277\303\220\343&.\232\320?u\031h\244\th\247?\t\351H\003\004h\255?\315\206\337\221\357X\271?Q^OyZ\331\263?,\036\030a\364J\207\277\335\001d\362 \315\217\277\017C0\246\363\367\255?\305\020 \260\231O\242\277{\236\265\230\235\272u?(`\244M\361\370\275\277\265\014o{l\275\220?-\231\314\331\036A\260\277\t\306\366\3106\006\211\2772\335\223:8%\201?\343\323\017cn0\272?\000y\233\036\347\334\300\277N\001\200<l8\314\277\201b\265\253\305\233\262?\177\372\366\365\326\211l\277\323\036Q\"s^\263?\016t\353\210\023l\266?\247\236\220\256\233[\234?\326~\306\226&\260\302?\341=7\374\351Y\262\277zg\310\263\3368\215?\304\226\205\0077\232\302\277\313\2010\017>\222\212\277!\227\211\300Y\370\221?\376s\207\226i0\253\277`\315\225_\324\323\267?)br\224\201\372\227?\325R\250+\220@\262\277\241\371\020M\276`\244\277\353\323;$\272b\304?\022Fky\271\274\314?\372\315\007\234\3452\300\277\247\215r\237k?\322?\265]*~\220{\265\277KB\227r\037\226\263\277\020\263\320\274zG\274\277#\211\334\221\2120\320?\214\267\030\274E\030\314\277Jm\022\306\030\274\313\277\367\273\375\350\210\014\236?\370\224\346\2116\234\250?\006\362eY\2343\251\277p8\2776:c\221?m\246\000\343\357\252\311?\257g\'\037\264\236\214?\351\333\2562\253x\214?\217\245m\374\314\373\234\277\325k\271p\253\013\253\2778\235\321\337}T\265\277\025aY\021\335\000\301?\335q\302\3262P\264?gagQ\243\231\210\277\247\367\3478\347\263\242\277`\311\3705_\204\210?\203\274\341\010\273n\264?\244\247f\300X\235\304\277\362r\207\223t\225\274\277\216P\206\253\256\033\277\277%\257\302@\037\020\277\277+\220\025\014\007\317\222\277]\217\274\340H}\301?\363\017\272E\3256\327?\006TB0\220Y\300\277\210\310\253\275\203\211`\2776\302\257\000O\200\243?\201\230\274<\2165\262\277\276\365\335\213\355\241{?\242\3306\030.\214\271\277[\366\352\013\'P\214\277\001\237&\345/\326\273?lJ^\014\202\014\235?\216!\253\217\0042\311?\361\337\206\224\235\343\274?\214\177\030J2>\221?{}\262?A\010\207?\'\024\005N#6\243?\325\001\316\267\356\234\266\277\007j\020\313\003S\312\277\240/\014\205\352f\235\277\032qKrqL\270\277\331\033\2041\355A\302?\3064\260M\332\246\265?\232/\2472-\310\306\277\353\002\314\rR\333\231?\rK_\220\031\234\266\277\244\233\260\3210\265\177\277\337|s\362\334>\302?\261\317\356i\231Qr?\361\217q\022-\366\255\2773*\322\027\270&\301?\211\254\360]g3\300?a}\341\342#\343\245\277\340\215-\305\212\032\225\277{=3\361\265\361\302?\013\236daTm\216?\327\024N\360\345\275\227\277r\347\033]\324\027\244?O\370\037k+\244\234\277\341R\371\225\006\223\230\277nK\022)=X\246\277\277]\234\204\013\235\305\277\357\233\2530\337\274\256?D\250h\310vH\306\277tV\207\352\024\320\263?\266I$\364\2450\232?\177-.8\220u\307?Q\230p\030\342\333\245\277\232\330A\232\347\034\301?\034\275\017\233V\205\300\277A\017h\357\037\022\271\277S\005s\343\nP\265\277S\006^\234-\021\307\277|uG\265\226\301\302?\367\r\026\243\360\210\323\277y\261\375\016[\237\300\277\365\010\005\371\332\263\222\277{cUc\3743\304?;\216e\363(#\324?c9`\204\377Z\275?c\203JS\033W\240?<j\210\227\271\307\272?\2407\002+\230\031\273\2775o\325\344ur\300\277\340La\275Ro\220\277\375\371\300\306\220\027\303?\350\035\366sC\252\262\277\224\312\333E\206\344j?\031f`\2474\\\266\277\307N\224)!\241\313\277\314\243\357\345\365\355\305?\336\320\337G\207b\311?\331UNV\247\345\243\277\303D%#rm\275\277[.D\227O\217\277\277H\033\323;)\254\312\277!_-\372I\\\246\277Lf\211\310\331\305\266\277\024\037[\261\000\235\242\277R\324\341\2426P\274?\301\\d\263h\243\240?|\333z\203\222\275\237?\3574?\370\330\211\266?\302p\316+\365\030\242?\025\264\272\256_\202\272\277\210\310\222\377K\371\315?x\362\236\345C1\302\277\016\322\224y\355\245e?#|\201F\374\331\255?S~\"\2466\242e?\370\374\252\034\006\330\250?\237D\226\025,)r\277K\316g7\232\376\225?\021,0?\231~\305?\205_9>\235\177\241?N\376\335\331\345\037\230\277F\237@z5\312\320\277\230.\305\271\007\007\271\277\342\252$\205)\033\234\277m9\006s\222\245\213\277\213\345\206\347\376\215\266?{W\377\270\304\036\251?/ZT\024>\330\202?%\365\362\243\345\364\303?U*\033\371\224g\250?\013\263\320\200\337\323\275?O\345(d\254\366\273\277\030\016>\347\360r\270\277\265s\367\246\362\330\241?P\276$\374\303\225\266\277\257[\3510\361\363\276?u\344\246\325\277\262\206\277>\325==-\345\220\2778\017\377lAH\300\277\244\262\246\276\330\000\315?\302\242i\244t\272\235?\273_\234T\250\317\266?\321\253\352\020\242(\233?\212|~4`\232N?5z\367})r\254\277a\256\200\266\314Qt\277\224y\210\244\r\336\262\277\226\315\300o\205\260\205\277\321\210\233E0.\307?\341\010X\213\001\005\200\277\013\200Sy]\341\253?S\007\273S\002\014I?\277\273\267\357h0\301?iN\221-\016\341\314?c\252\271Y\277\177\216\2779\341D\366\366\024\211\277\347\241M,\377\356\301\277\2201\315\274\300\327\300?\3079dv\211\352\202\277\245\021\263\342\0258\245\277\245/\371uC\321\306?\032\331\232(\344^\225\277\003P\301\301\354\364\231\277k-\242\343\237\374\236\277:~\224t\367h\225?\037\207*\031\256\023\244?\252\013\251|\265&\301\277\245\377.st\232\302?\036\335\343\r\335\252\252?k\224#\365\200\277\244\277\331\355\301\025d\350\313?3\206\272{\303\235\206?<\242\013\217t,\241?\202\325\306\365\361\021\255\277\330\332z.\375\302\206\277\214\220p*\356.\265\277\264n\327\t\236\215\225\277\221F\032Y\321z\221?\300\337)(\'\370\247\277.\301\250\354\267\302e?\245\316k\373\324\217\310?\207K\200ub\034\325\277\'n\026\023\337\265\207\277aE\236DW\257\264\277A<@\251\310\211\263? w\244\2119m\255?\"\204iy\342\213\201\277\343O\247\353\270\265\211\277v\'4V\322-\240\277u6\246p\006\227\300\277m\032\256\362\354U\224?\246y\371\244\313\230\264?$\262\325\351\3345\306?\201\025\311\216\2573\222?\370\207\212F\206f\310\277\274\366\261\264\352{\263?d\263\3355\216\236\244\277d\036#^\302\330\216\277q4jh\005i\247\277R=>\351\027\035X\277\222.,^\256\303~?\237$\360S\310\242\270?-\303uf`\376\233?v)\3542\352\343\221?h\\\t\264y\246\260\277*\260\0237\366\231\271?3$q9\206q\274?QKK\371}\340\303?\312\307\321\237\337a\267\277\307\373S\214\234\366\274?\'\241r\213\360\341\264\277R\302\360\372\304>\226\277\246\320\206\302\247O\301\277\332\306\200:\320\326\301\277\371\005\371\363\026\037\311?\004\226B\003G\326\252?\241TX\021\344\206\321?\246\346\023\007v\215\245?\026\200U\312K\035\300?\222\344\341\007i\322\316\277\214\020W\215\325\342\250\277\032\023\347\373<\353\252\277\312\273\216\374h@\266?j1\253\246\016\266\305\277\203\024\303y\376\025\262?L\375\010\325{h\310\277\253\264#u\250\223\312?x\320\0363\3013\271\277\363\236\365\352X\032\243?\354a(\001\242\340\246\277\032\232\231\334\001s\300?W}\214\014\333?\262\277\267\261\377\014\246Ve?T\301T\"\330\234\237?d1A\376\341q\203\277+\277\027\231\2223\271?\313/\276}\";\257\277u\240M*5\267\331\277\371\\\365\340\311]\243?\334\014Kq\204\270\256\277\005\020G\026\326\031\300\277\252\250\030\303\226\372\265\277+bw\205\244Cg\277\303\200\3306`\267\225?\361\005\260~j\032\226\277k\322\301\264&\005\237?DW\372.z\374\217\277\361\320\030b\250OG\277= \315\221\206%\303?n\312\200\032VN\226\277&f\336&c\233\235\277\212\274\301\273\237\037\227?\036Q!\340\222\304o?\"9j[E\341\225\277n\362h\352\262\277\267\277\361\303M\013`\362\262?\363WH[\277:\267\277\271\354TK\231/\227?\334)\317\270\241a\270?\017v\3240\220\r\254?v\362pT@\277\240\277\341\205\310\373\230\370\220?\373\311Z\360\230u\256?\016\206TEoH\254\277\304\256\223$E\331\266?\302\206\203L\000]H?u\320@\010\016\343\246?i\362\235\270\tZ\272\277\345R\020\312\361\316^\277\255\266g\271\017\n\312?\340~R\227iQ\247\277\024\346\202\030\325\373\224?\251\364\230:\277\256x\2777\315g\332\326\361\270?\014\340\004\207j\347u\277\030Nm\254\333m\324\277\320d5\022S\026\242\277\322\351\017c\030\272\206\277\211H\nS>\310\307?\030\256\336\030\001\235\302?\364\252\211\324F\020\300\277\024\272\366b\t\254\306?\245\001+|\311\332\247\277\273\213O\237\006\013\267\277v\304\205g\214\325\211\277\326\254\031\340\216\236\240\277\246q\\j\n\275\273?y5\316;:\030\223?\355n[\333\305W\300?r8&\007\253:\245?\327\223\245\325\270\310\231\277\252\3133\031e\237\276?\246\332\324\"\244\327\242\277\323\237\254\343\246\274\324\277W\302\3038\'\314{?\301\355\271\366\273%\265\277\325\010>^\307a\255\277\025\t\223\242&\212\302?e\3758\2228\275\220\277A\332\3552\207\217\304?2n\242\022\267\261\322?\303jwV^\275\264\277\260\033\030\222\263\016\304?\014\263\211\"\351<\303\277^<\315/\234\266\273\277r\366N\n\377T\215?\316D\3164*\374\271\277\275B\303`\214nV?\354\345\232 \347\026\267?A\324\226%tO\252\277\273\325l\r\363!\264\277\030\356\322o\204E\304?I%Y\010\006\235\251?p\t\013):t\237\277\353m\340\266i/\312\277c\361Y\305\203?\235?r\003x\257\343\320\213\277\366K0\356\335\375\314\277\245\333\2531In\262?\036\003c\215\340,\234\277rYrR\216\266\301?\317\254\005\000\032Q\315?J\374i\312\334\326\275\277[\321|\237iA\247?p\361\353\345\nH\311?\345\332\033*\272%\313\277\322W\344\025D\353\227?\320+i\034\221$\247?\330\345\007q\373|\267\277\231\316b%p\320\253?\321\024\002\365\233\221\264?\'\377\000\356v\026\302\277j\t\267\271\257\014\264?\323\3122\361E\312\306?\207M\326\353G\221\270\277~\215\033\335@\217\312?9\300\307\374\303\362\305\277w\211\250%\221\020\266\277\335}\374z\275y\272\277\"\347y\275p\031\250\277x\335\027SX\002\247?0\273\034PN\211\313\277^\310\024\310\300\320\221\277w\227\240vD\002\224?C\201\322\224q\327\300\277t\016\2676\032\265\312?\256\002\212\355)o\273\277mDH\357\311N\220?9\346q\364#\277k?\026\361\366Bf\256\245?>\253\02253\221\262?\241\277`4\177\342\256?7x\356\271g\237\305??\314\032e\227\021\236?A\\\247\216T\270\237\277\223\245edf\314\251\277\2748-\330\354\010\256?Y\372WI/w\263\277\330:P\324\305u\271?l[&\033e\320\247?\267\024H\211\213U\262?\360{\001Q\332%\266\277iO?\023E\035t?Rx\017/\211\264\325?\231<\030\302W\014\264?\002\032\272J\366\'\307\277\257\265\325\035E\211\227?[G\261\032\2509\301\277\007\333.\364\201\013\214\277m\250J4l_\242\277\354\211\233*\324\037T?T\n\373\355]F\257\277\224Q!\223\376\347\276?\234\261\375\322\257\235\300?\326\372[\203\237]r\277nn\351\274\230\225\222?\267\323\305\266\377N\251\277w=5\274\005\254\253\277a1(\000\332\272b?b\347\315zj#\273?\0048\213H\243F\233\277G,\237U8\013\250\277\254\304\216\337\376!s\277\321\210\354\257e\023\253?n$>\361\201\272\307?SU~\232\264\353[\277\264\267\216\r\316\tr?\240W9\220D=\307\277\272\002\341\231\373G\252\277\374\0067\303\372g\273?\177\014\211Ex\025\251\277/\037{\362\370\211\272\277\236s\2021{U\255\277\262K\240\026Z4\235\277\021|\262\230<y\264\277h[\005X!\312\216?d\272\\\310!\211\260\277\203\004Nn\317\244\250?r\330\244\\\246\370\311\277tr\017Q\\a\271?E\030a\027\316\273\243?]v\316\216\246\374\315\277\177\r\276\3253\010\243?<\030\255\223\303\347\266\277\340\374\010\253\262\317\247?\322\327\201~\327\265\316\277=\n\307\252\241f\276?}~\205\026\334\223\261\277{\237u\304\202^\322?\271\274\313\013\213\206\300\277\267\017\331Nv&\300?\231\002\017\317ue\210\277\227\264\211\260\305*\301?(*V\230-c\253?\204\347\276\210\021\320\247\277\272JOS{@\305?\274\022&U\302\260\265?\324\335x@+\t\275\277\025[M\007\333\314\254?\270\306\376 *U\267\277\354\375\355E\360\223\216?\2311\357\306T\016\250\277\014\201\024\205\035\215\272?,g^\325\221\277\261\277,\227\207{\025\002\227\277\"\263\305\"\363\332\303\277\022aPp\351\365\304?\233?hd9\335\232\277\240p1\221R.\266?|\006\354Wx\265\273?z\375\017\342\034L\232\277\016\310T\342\203\374\223?O,/\236Hw\276\277\375V\205-3C\275\277\363\034\332\177\027\345D\277\000\200\323C2Q\260?\242\346N\r\253\213\270?\210\330\311V\315\204\303?\344J\263\376\232L\227\277~\340\342\"\"\221\231\277\214\004\202\"}<\312?v\230L\037\306\370\260?\233\217l\036J\033\234\277\006)\235\274\241Tu\277\272G\t7V\213\226?\375\240\3562\211C\272?T(\021\256\"\"\225\277\034\333\255\264\022`\273\277\315\332x\277\010\224\260?\236\234\r\224\320\312\242\277\322\372\010\276\222\273}?J.\030\237\327g\267\277\036@c\317\024\357\237?\246\351&\226\221\344\274?\035\025^\267\270\230\260\277\025TvC\031T\263\277\250\325\345#m\201\255\27791\007P\253\336\311\277Z\003\335hp\352\304?\026\254\272\212\366j\255\277o&\003]$\344\310?KK\372\331\243L\304?n\224jN2t\246?\340+J\373\203A\303?\276\r]\214\241i\265?\351-\215\201\023\243\261\277\006\302+?%e\250?\022\230.G=\264\261?\333@\202F\324Z\252\277\0075\013#:w\245?\341\263\027{\254\224\263\277\303\257\220\215\310\331\311\277\273*\030\325L_\305?S\233\215^\005\032\237?d0\331\246A,\303?\036%\321\264\237\241\252\277\271\265Tvi\274\247?7\010h\354\004\353\215\277\347\246\242\247 \017\235?l\001\332\356\273\354\260\277L\367\347P\311/\216?\362\251a\037K`\301\277\372\0231\301\333\264\304\277\351\353\227\363\ro\237\277S\264\000\'mM\301\277\341\317D\251\262\243\270?8\202\304\2117\024\272\277\225\223`P\347\221\277?(\264\3755Z\226\327\277\363\220\253\376\200\013\321?\346\334\275;G\205\264?t0,\240\276(\316\277\024\344\265\004\261\373\270?iX\371\"\362\371\253?1M\253MB\247\305\277\033.Af\261\221u\277h\r\2179\311\013\246?f\341Rf<\360q?\000x-\377\357\322\304\277\371\230\236\247\342\353\321?\261\nq\226\232\246\302?u\273\335 \371\221\216?\356\310\367wl\227\322\277\331\240\300g\325r\260\277EA\003\225\305\n\227?\364\322\351\354e-\300?\211a\261C.+\233\277\343\002\002\024B\367\274?(\031\004\244-\213\276?\2276\353\025\217r\263?\270\252\375\236\246\304\271?\014\'\357(\252s\304?\010=\0070\235\264\304?\014\355\212\364\273J\314\277\352:h3u\217\\?\033\216\005\263\334\251\301?x\213\352\340\261.\270?<\2129\024$\370\300\277^\257\204\363\321O\245?K\013\310\304J\266\252?(\302\376\340\023\310\320\277M\017\241uk\004\275\277\343\334K\005\345\345\241?\236\325\375;^:\254?\354@\2637\320\243E\277\302\352\010\247|.\262?Sx)\266\342\333\261?\357\336\306\033l\022\311?\263\204B4B|\302?\020\330\307\310\246\014\224\277L\3213\200\357L\242?1<\246\3364\t\323\277L\021X\242O\311\202?\032\220\351\211YR\255\277Y\245h\032\035\231\276\277-7\034\013\233l\303?\252\3708\307[W\262\277\273\245mrZ\326\225\277qRc\'=\360\274?l\327\322nm\'\235?\312\354\030\030\205\234\225\277[\316p\310\t*\266?\177Z!\024\270\020\223?\333\264\310A\177C\260?\274rM\362@\360\322\277\245\232\021\373\252\222\224?\214\226?3\234\310\231?T\tE\000\253u\310\277\265\233\244\003y\231\224\277\215\202]\272\256\353\277?{v\\\271\233@\270\2778\214(\330W\327\251\277\016/\3649W<t\277\225\250Ej\363]\220\2778g\230G6n\255\277\301h\002\263\001\363\265?\320\016_\275B;\260?K\234\230D7\227\273?\3749\216`\310r\212\2774V\265\341\232\016\240?\003)\252\373\255\264\261\277\311\360\363vVl\241\27789\000\215_\315\263\277\210\227U\213\322\230\323\277\233^\270\234\270\023\260?\240n\013\363\2279\251?\265\320\020\323%k\313\277\263\n\226FK\231\232\277\024\231\375\002Y\266\262?\361{\345*\373\037\251?\337\335\271\254a\005\266\277\271R\003UY,\274\2773K?\264\035\353\263\277\003\200\215\207\031\211\303\277V\374\342\362\246\376\260?~\222\314\374k\266\306?\212\236\017J\230<\267?#\2225&\\\322\272?\r\003$\r\3601\261?\233\345\357?E\037\261?@ pTZ\247\303\277\242\246\271\307\006M\212?\020\261@\326a\004\247?\177\332\025q8\007\227?(ZW\277s\246|\277\210\224\034\361P\031E?\220\307I!\362s\251\277\371;q9ry\253?\\\232\226$\366\313\232\277>\033@\276\ns\266?#|\375\335\023 \301\277t\353\377\206*\005\300\277\325\010\377+\300\376\266\277}o?\206o\013\271\2774\373`\201\346>\274\277\272p\243\262\231\241\215?\010\376\373\263\001u\257\277<\025\263\303\313\326\323?]\261\325\337\305W\261\277,\016\224 s6\310?O\353}\244\237\210\265\277\276\357\332l\027\356\316\277>\264\342\343x/\234\277\222\034\312\341it\300?\013`\340$\nM\252\277v\301\266G\3021U?\260B\010\322\030X\303\277\320\262;\377X\367\235?2\000|\256U\306\220?\246q\306\361\241\004\252?|B\272HO\263\241?\243\004\340\206\017\261\263?(( \223Q\241\303\277=2\311\244z,\227\277i\361\210\032h5\331\277\327\336\330\357?\315\264?\010\303\033\025\000\014\266?\342U\206\310:p\265?\377~F8}P\252\277\240yJ\371\tZ\321?s{\310t\333\244b?\221\243\330B\313\316\301?\330}\3674\353\200\215?\220(\342\232\342\213\243\277\305\270\222\nKY\267?H9D\201\357\010\237?i2\225wX\361\242\277\212\346\217f\341-\237?\004\243\226\330\r\227\212\277\227\355l\255\224\036\240\277E\251m\t\364\020\237?-\007\010\205-\343\323\277.I\263\330\343\266\251?\014-\026\025\365\020\273?\245\216>\205!bz?9\324o\230\033\223\267?mW\027U\023P\271\277\251%\241\204\374\026\255?\226K\177\301\005F\277\277\022\301?\303R\307\235?\241 \305\237y\005\277?.tyP\262-\250\277H\267\002\220\200\245\301?\025\272\013\031\365\225\300\277\225\'\375\332\216\343\262\277\'\014j\037\244\263\246\277\3007)\325\\\347\266\277o\245\014\002_S\265\277S`\240\036o\024\246?U\245\321\013\275\331\234\277\363q9\361\307\225\264\277\024\224\231n\375Z\263?1\321\350\304\251\r\263?\324wV\005\007v\274?\253\236\205\300\227\343\254?\306\262\227>\330\030\264?\313\215\275<e\344\243?\373\3533\225T\371\261\277\226A\311\371\351\266\272\277\225\257\323\"\266g\201??\364:^$\272\322\277_\216j\333\344b\234?qPaH\316\226\240?\361MU\224c\314\270\277\320\025\320\001\373\252\231?\220|h\020\204\333\301?S\311\317Zz\261\260?f\355\223\374\333\234\263\277x\325\317\031\032\206n\277\007\032\243EyU\245\2775Mb\2615\337\313\277\003&B\013\313\201\272\277\215\2137\337\207\274\247?\205h\327k\005\361\262\277\223\003z\342\317T\320?\244]\247\026\033\340\266\277\254\325\205o\351E\233\277\271G\335\016B\034\264\277\255\324\017M\237\215\304?\212\n\0048\361\002\265\2773f\305\021em\256\277\346\300\236\311\021\035\241\277\177\325\223\370\232u\247\277\376\324\224\376\244K\203?\246\260\207uj\'\307?\370\2345\314\334\345\245?O\n\025\212\221\245\247\277\257C\235;f\335\231?\311\251_\013\342\376\203?\003;\2524\364\215\256\277\362\366\\R\031C\254?\254\232_\316\373\022\266?\223S\371\034[\352\207?Y\010l\335\335\005\260\277pU\005\3366\213\253\277\3705\024\350\002T\327\277\320\207\216i\371\014\273?,Zc\3422\352\243?BM\345@\0216\253?\037T\320\202\177\350z\277\331\000J\3543\300\265\277\202s5{\'\352-\277\253%\"\305\334\005\240?&\335\021\344\"\022l\277go\337\032i\351\300\277i\037\270\227v\224\231\277\"\301\023W\242}\312?Z&C#,Z\272?U\331#-\247Nz\277\315\314\227q\271\220\213\277.9\002h\306\354\250\277\212\313\322\377L8\273\277T\250m\367Ft\311?y\264\0016\320\354n?\374\331\254\224\356\362\233?\002\224\210?X\250\301?\250! \264\223\010\254\277\357\363\321\301\344p\252?x\254\225\263\304j\303\277\343\262\033\221\3505\273?\251\014\203\226q\343\313?\363l\267\341\231\322\213?\003\031o%\330\317\315?\252]\025C\244\267\274\277\010\204f#\001G\207\277\177\332\275\345\2459\244\277j\226\032>1\216\277\2778T\232\221r7\313\277\251\261\325c:\270\233\277`\221\252J\036e\261\277\221iF\037\306\254\246\277\263\025\234B\274\006\205\277Z\224*\030\325\200\261?\244\210\204\211\374q\225\277 q\334\035\1774d\277\346\341\206l\037\252\220\277\306\321!\321|\311\273?\2730Z\r\034\330\262\277w\222\370\201\345\265\257\277\212\212r\272x\261\226\2770\352\326\017\211\310\263?\246U\265>\255\\\324?\017\203\024\265\376\350\255\277\250S\341\026\217a\300\277\306i\221\016\263\037\223\277X\237\326\030\366\337\242\277\274\033&\364^\223\025?\222\245S\307\305r\264?NR3\334\\O\300?\254p\243\365\023\216\243\277\213\264\247\024\017Z\230\277\270\253\333\304\027\333\236?J\324\373\021j.\306\277\210.\236\362\232b\262?Y\202\376r5\007\275\277S\237\277`\343\352\271?\022\201\347T\213\312\276\277\206*\313\020DXi\277\010\254\215\026\035\247\270?\266e\027]z#\310\277@\236\rX\246E\267\277\221\217\375\255\361\273\235\277}}\022>\n~\304?$\231\007\262\242\347\255\277.\317\316d9\336\261?\022\326\001\022\312l\273?f\247\327@i\323\250\277\227)\360\016\352H\246\277\375\364jF\217\336\310?\377+\204&\314\256\320\277s\\\363 X\367\262?\200\024\217\001\223\315\270?,\333\277\261P\010\251\277\242\376=\031\000D\254\277\217\240b\370\363/\240?\225~:\224d\000\262\277p\273\324\300\352\211\256\277\371\350\332}\263\010\266\277Q\231!\320\250|\274\277f*\307\244\240(\244\277\340\0102a\320\254\305?_\036\255\365\003+\260?\261\331RS\264\343\273?\243\017\331\3350\035\306\277\200p\036\340\207G\213?\222\231s\005\335A\243\277|\347\263\347\241\035\241\277\306\320\004\010.-\253\277?\017_\033\214\n\266?\265\257r)yR\257?D\272\340\030\242\336\213\277\n\227F\200aAw\277B\3279\267\237\350\213\277\n\031\327\302^~\246?\327\242m\302#y\266\277k\026ra\3604\253\277\354\272P\373\233x\220?\327\361\363fZ\007\242\277\n\204t\252k\202\270?\275_\234D-0\276?\314\312\207\324c\311\271\277I\276\034s\253=\303\277>\272\255\364]\253\257?\'\363>\367i\002\200\277p\2528\372m\320\261?\201\240\245\2514\001\226?=\220=\306\203\t\273\277\021\322F\354\314}\240\277\033\333\263\273pI\242?Y^F\273\214?\232\277\261\343E\230\0338\241?\\\212\362\325\342\032\314\277I\305f\236\244\350\263?X\3760\"\027\014\314?\267^>C\"[\311?\317.\377\271\035\361\261?\014\216\322\312[@\224\277}\033Q{\210\234\225?S\323\205\240\217\004\260?2Fq\032\n\274\243\277\3375xz\254g\271?\325O\255\304\226\027\303\277\250\234\"\366\354\037\220\277\357J\312\217b\373\236?\257HI\017\037\363\322?\362\003\216v(R\226?\233EP\007F\036p?\004\204\276%\357\365\267\277\250\302Y`}\375\260\277\321\321\340%\034f\322\277io\334\363\247\337\216\277> \366|\225\225\246\2774\330\356\300\335\363\222?\237Z\242\306\337-\212?\310\335\320\177\305Zl?\323\270\231\002\354\230\314\277\223\372i\321\232\024\302\277\354\321s\3553\361\260?\322\3262&\331\300\300\277Ch\317F,p\270?\231\212?\270\007\207\274?\"\251\311\355\356/\235?\303\247\016\027\255O\303\277\206\246\340<\311\005\260\277m\000\305h&Y\253\277\324\267Lz\261\007\237?\250[\213\255\311\244\303\277w\340\202/\006K\265?\262\303!5\r/y?%\374\234\0314<\254?O\n\231\255\375D\252?L\316\271\211\321[}?\224\003\007\257\203\266\325\277\320\272\370\377\010w\247?\210\355\235k\314/x?639\326#\324\253\277\245w\2171\231L\254\277\361o!\245?\251\262?T\305+\231\017>\302?jL\025\024\365\026\232\277\262\217\231\337\362\035\276\277)\332\224`\346j\226?\234\227\343\312G\270\272?\276\023\327N\232\013\221\277\350\023\221{\210\366\256\277\334\34280\355\333\201?\001\371\261\2326v\271\277r\242G~\355p\301?D\241\370\312\314pr?\030\370\321\220\227\240\244?-\264\010t\244$\230\277\345\250.\305\234\212\222?\373\023\026\321Y%\275?\022\221\374\304N\322\275?\026\320\232\274\363\024\315\277\255\355\3503\3435\302?\001\014\"i?\371\242?\030\332S\252\303\000\272?\364\343SIb\317\212\277(\340\306]\205s\300\277\032E\306\204\253N\314\277T\235#d\321\201F?\271P\206\262?G\247?S\302\210\344\231\t\272?\262FSRH5\310?e\352\251\032\002\260\242\277\347\342\325\0029Y\315?6O\203-\316q\270?\264#*W\2201\267\277\026\014\331\361\274\266\262?\225\246\332\020\251Y\231?\236\024\021\326\205y\307?\344\0244eo\227\272?D\023\010\302\312\000\227?\250`\336F\344\036\264\277\026\213\2342] \337\277\215E\350\310\235\222n\277\276\223\262\n\\\023\232\277\316\232Nls\226\230\277\221\212\360\0130\t\300?Mu^cl\361\253\277\244\007r\225\215\006a\277\362$\305\347\243e\320?\375X\030\016s\000{?\220\022\3035e\277\265?\274_\370a\314=\261?\342$\202\327\020\277\252?\200H\326\306\2436\256\277\334\017\331l\312\006\303\277 =:5\251\275\261?=@\343\365\323\325\270\277\020\t\320\000\341\016\262?x\272\212X\032$\306?\347\344\\\254\300P\316\277\252I`\204\343w\252\277\207\227i\245t\266\304?\0034\027q \354\243\277d\341&\377\363b\255?%H\026{g[\254?\'\360\037\021)\266\304?k\'\320\033\212O\303?\362f`\023\221<\200\277\023\026\341\334<\251\275?HY\314\232dx\301\277\357\227d\021\010\016\232?*h4\177\006a\277?Rt\310\021\226\227\301\277@\261i\315\205q\211\277\274uEV\253rw?I\243\217\035\222\205\276\277:\234\323\215\016\306\275\277\2268\216\253\037P\264?8Rg\333\203\350\273\277\261\002h\022\034VA\277\262\252\325\314J?\276\2779\324\201\033\270J\216?\315\032f&\232\341\243?\276&Vu\233|\306?\301\333\225\000y\016\232\277?M\034\221\032W\257\277@\250.\303\224C\301?\262\235~\343)8\211?\237\265\225\014\347&\235?\36240Z\034\031\260\277\210\002PH\354\336\313\277\250Y\344\2710\032a?\214\340A\340iM\261\277\233\031\275L\026k\306\277\003\215W\277\216\232\226\277ezA\267\005\234\201\277\212\266\366\317\351\362\267\277\216W1B\024\251\321?\233\223\263\343kV\252?\243\021\212\221{^\310?\362\306@[\362=\246?\225\370\353\207\0041\201?\177b](\240\363\242?\333nO\r\"\003\217\277\274]\366J\024j\202\277\021\310\307mR\365\221?n\2725F)\001\266?\330\216\002\207)\325\273\277\341\002\353w\375w\260\277\210\354\337\003u\201\255\277\220\t\305\225\317\314\255?\314%\350\240\310i\300?\275K\231<\021\361\264\277\223\010\3531\021\027\255?}\377\364H\234a\301\277\377\005>\331-{\302?\312<\343\360\225\303\267\277\313\316\233\226m\371\207\277X\243$BrY\257\277(\373\3611Mo\204\277\231\302Ok2k\232?\266\023\210\306\345\347\226?#\277\306f\321\213\221\277\317\374Up\270\231\256?\234\302~$?\253\243?\215\300\352\330\232\313\300?\2638\355\3122\005\253\277\200T\301\021+u\214?E\341`\244\226l\233\277S\352\311\343\314\035\306\277\251\217c\352\301\223\312?\256}\372\344B\231\220?\022\200E\025\230\254a\277I\035\315l\324\222v\277*c\214\376\004\237\247?\314\272fE\024\270\322??jB\265\264\353\263\277V\326.\230\250)\237?\321>\323\226\202S\317?\342\316\035\336\033C\322\277\242\341\030_\360\341\221\277\r\325\250\021\021\233\305?\314k[\235\251V\302?E\206\363\335U\320\320\277}\201\231:\260\353\230?\222\222\235\271E]\243\277\272\314\270x\275J\311?*\365\002\255\243\266\235\277\270\364\305\212\254\220\266\277/h\247\332k\256\267\277\267\374x\340r\330\217\277>\253\252\242\026\366\246\277\225\255\375u\316@\253?\346\"\224\353\037\001\303\277\261\223e\333xU\235?\'\207\223=\316g\234\277;\274\324+\270\022\303\277M*\351&\323\320\267\277+\320\366\263\226\373\260\277\332\031\3259\304\003\300\277\273\363<\303\273\333\303?\355\375\025\230\372\336o?vFU\253\270\021\262?):\242\024\250\221\315\277\315\363;hRo\260?\253\277\024\326\177\273\204?\213O\2779\317m\320\277\3038lw\355z\324?|\372\234\367\335a\235\277&\242\237\220\014\264\257?\302h\310\241\3108\306\277\227\316\006-@\007\250\277\336\301X\350\034-\257\277Vo\240\362F\353\270?\367$1\336\360p\321?A\365\031\200%V\265?\275H\323\2024\207\250?z\277Wj\311=\242\277\001vna\371Dv?\375\3548\352\355\261\233\277e\226\306\343\273e\262\277\006\336\265[5\302\323?l\002Z\301e\014\261\277\004\242v\271\017\321\303\277l5\246\252\273\241\265\277\362F\374\327\3440\215?\034i\207i\202^\241\277\226\374 \020D\226\220?o\r!9\204K\220?\3505\343r\365\027\254\277\n\343\'\323\034\303\265?/-P\352\332\262\261\277\247\271\252s%?\301?-\366G\024\260fo?\364\030@\013\211\276\266\277,\356\267\355\363I\264?qu\021#\267s\202?\366UL\310\261\252\242\277\2429&_N\266\262\277.\302a\340U\252\305?\272!D\257\007,\263?WzE\352\301\312\230?r\370(6-\026q\277\366+<\302\027D\264\277\200\230\027Ag1\307\277\000RB\362`\340\311\277\351\253_g\242\276\262\277\327\304\236\203\304\342\251\277\263\343c{\034L\260?p\306\325\023(\274\252?4J\277\\Gx\227?:n\'j\203\373\276\277=\0211?J\207\305?\310\314\337\211\035\006\301?\031\355~\331\367\324\212?G\356Q\233z\242\217?X\337IQC<\316\277Z\273\306\335K\373\273?\375\322\031\314\024\246\305\277\302Nw \342E\323?i\343\351x0\373\261\277B4\210\304(z\254?\206(\021\371\240\257\242\277\255(\254\2129J\300\277\263\371\243\211)\316\271?\311m\0160\206of?\352\260g\376\352\350\300\277\311N\223\205\021\340\254?\274\272\310\301\220\331\263\277=\371Ls\356T\257?\221j\032\035\321=\305\2775\366\362\313\355\271\304\277KKh\"\027\210\307\277:c\000\253\337\330`\277\034\363\244\372\306\324\272?$h,~\377\223\250?\361\240LDi\321\245\277\000\363{\343\\\013\273?\302B\336[u\257\273\277M\215P\251z\177\236\277\327\210w\241\272]\254\277\0262\00228\006\277\277\373Z\303&-\343\251?\322\331O\250\257W\261?\325\2268\223\367\312\230?\231F\342\215\220\036\241?W\270\362E\251Y\246?c[<\320\370\360\307?\023\t\345\354\237By?\036\325\\\t\372\373\277\277#\010\r]\244\n\266?\366b\241\3476\235\262?GF5R\266\343\244?\340vx\316W\035\226\277\304\254\351o\212\320\316\277\364\014\223\026\014\246\267?\347\216\021\362\031+\241?!\202?\023vy\272?\222[\256\262\276\256\255?\026\033a\241\223}\277\277\247\363\345\303\202\317\267\277#\250P4o\303\256\277\0019KP2\265\250?\206x\355\355\377v\256\2774\327~\017\256\331\220?lj\240W#\235\234?\345U\243\026a\354\257?\007Zt<\337\343}\277\301y\255\314\363F\241\277\336%\3776\'!\271\277\230\017)\217\365+R?\350}D\210\005\377\246\277\256\310\\\272\327\024\216\277jl\242\311\225\177\241?\345^\372W$\263\274\277\213\253\014Y\\x\273\277}ZI\246b`v?\342P\252\354\204\377\311?\343\026\330V\324\t\244?\230\267c\210|I\300?\265\364\252\233\002\246\267\277\037B\303\201\375\343b?\236/\027\205\303\210\323?\357\241a7\260E\331\277\352\234a\326G\240\262?\335\226\320\024\243\"\254?\313\340(\320\305V\260?\376\342\211(\013_\245\277\375\371\307\217\023\310\265\277-\322\311\254\031\350\257\277\215\352)o^\373\215\277\216d\020\320m\260t?-y\221r\337\004\310?\306\303\233\016\357b\265?\205\225U\r\361\242d\277A\010\342?\315o\201\277\243\2459\260x\301\226?Z<xj\251\237\301\277\360\263u;\270\205\266\277.bE\251\377\034\301?f\347\306P\261\035\212?(T\311\275XT\240\277\322q\026\311V\340o?\220\343|V\212b\272\277d\306\347\376v\023\276?\353\302\370\230{\031i\277\302\254\271\220z\342\321?\345\232`\276\356\347\273\277\250\277\377[\375D\263\277\017-\374\236\nY\314?\013\204\375lf\335\261\277=bF\223iR\225\277\347\004\005Z\tZ\265\277r\377\250.\'\360\226?\'\000>?16\244?\340\026l\366\375\266\205\277\235D{\023]G\222?zs\035f\250\337\265\277]\354\251 U\000\236?\261\237\204(\255\301\240?V\206w\016\006\346\276\2771\307\213\275\234oT?\374\023\263\200\266\321\232\277, \374\001,\232\267\2778\217J\340\375\351\270\277\000n\272\365\370\351\264?,\274\324e\025\n\204\277Y\333n\305\240\352\270?\001D\305\r\371\021\305\277\232u\217\021\326\270\272\2770\342l\3656\272\274?G\250\250#\353\201\262?0\373 \275\227k\276?@\361\263\272B)\302\277po\330\211\033\020\260?A\202F\000\223\307\325?\022\223\247\321\217\221\261?\362%\215\200X\370\274\277\370\336p\333;_\272?\276\305\3571\235\275\240?\257c+\316\244)\261\277\277\262\013\t\230\250\250\277\345c\021\271l\200\237\277\361\301\361%}\006\275\277N\363J\200\272{\224\277\306=a&\376\314\256?\241\003\310\237\373:\260?|\330\246\251S\002\260\277\336\017^z N\272\277\244\2053\336=\233\271\277\350\334\000i1\002\261\277=\375\013fe\267\220\277A\211D\2604S\310?\245z\007\360\367\177\213\2772D.\203\360x\243\277(e\022\265\364`\211?\2337$]h\200\236?MBC\306\232\320P\277\216\002\252N\"P\231?\350d\242\356+\332\320?\356\221D\272\355\367k?5esk[\324\253?\376O\232\207L\210\310\277C\004\252\240\371\361\241?\306\034\371)\307y\245\277\'`\210\303H\364\276?\313\023^\352X9\251\277\277crv\337*\244?\361\n\373\235\004c\226\277\223e\004*@\215\304\277\'\254\372\312\237N\243?\312\213\375\021K`\242?K1\211\327\317M\257?\200\226;\371\233x\221\277\212\365\204\002\3443\304?\322&\332\\\350\223\255\277uJA\354k\007\253?\301\307\346\247\\&\310?4\t\233\204\352\234\250\277\211\351_\365=\341\260?J\201K\231\302\344\311\277\360\267\334\017\232\002\276?|\323\316\313\";\262?\342{X\361\347\360\273\277\364\347\361\263\rK\271?\232\004\317\256mO\242\277\330]\261\307\036\233\274\277\014]\244Z\356>\214\277\2342\322u6\334\224\2779\306}\354\217\273\233\277\267\016\331\264\367n\252?\336\005\351\203q\233\253\277w\001\213\210\363\312\221?\371\366|\200(\276\200?4\325\245\036\341!\313?\355\'\206DZ\254\270\277E\304\220\005=\352\300?\025\276\023\350_\330\243?\215n\306>\336\242\273?\"g\212\354\313\343\264\277\356\024\214\376\275\221\227?\323\225\214\331 \306\266?\263\201\323\n\240\364\261?|\200\363\205\202\323\300\277\337U\300\344\316\217t?x}k\035\247w\262\277\254l\335\242z8\236\277\rh /\250\315\274?\331\313\266\355\377;\302?]\023F;r\204\227?PAL`\214Wq\277]vZ\2268\031\260\277\210\304\236\374\325\017\320?\260\307\374\353\317$\256\277\177a\313\2612#\233?\266raN`\352\300\277\330\265!\034\256T\255?B%\366\376\225\270\223?t9O_\251O\242\277\3203J\266\0266\240?Zn>.2\243\255?\272w\2252Wr\217\277\323\314\031\307\007k\277?\255\270\376s%\357\260\277m\307\rs\217\314\203?ry\251\3252/\261\277\202\206\272$,y\311?S6\240M\255b\233\277P\222\332t\014:\247?p\345\214\3171\001\216\277v\200\341\322\343\264\224?ZkZ\021\205\205\274?\317GK\270\341\377Q\277!\306\003\033\212$\331\277e\375\334P\t~\203\277T\344\210\r&\030\301?\002aRS[\234\231?!\330\344?/\241\303\277\377\013r\202\324<~?\207X$\304\253\331\273\277\024\237\340\026cs\210?2\222\030>\334W\241\277:\304$L\365y\275\277\345\261\242\236\t\246\230\277\365V<\327\236h\305\277\'\236\374@\004\244\264\2775\350f\236\322[\243\277\201\270\3127\\\340\312?\340\030\366\236\216\262\267?\211\354Y\247\211\323\246\277 \314\252\312\360\004\326\277\305\227L\346\r\017\301?\264R\266y\325\372\312?\374\322\274\275\000\251\244\277\030^\354\243\261#\265?\\\360\261s\3335\273?\353d\025\270\334\'\240\277\343\254\233fC\030\230\277\n\2327\222\006\325\264?\030\344\207\031\253\326\201?\302\2350\3316\037\302\277%,]U\031G\241?T\256\304\r\215S\201\277EY`\315\342F\301?\260\263\3562\256\275\243?`F\303\276Z\307\251\277\312\215?\353\031\'\234\277\371H\371\226\235\204\241?\334\003\357\004\366,\326\277B\324\373\331\312\260\266\277#bUR\222\333\246?\373\r\245GFFV?J\220\256\236{}\270\277ck8\317\363l\306?{\302\234\201R\027\302\277\021\300\021l\223K\260\277\342\260)\034A\377\222?\367\311^j`\242\240\277\246\204\303\332\205J\301?\340\350_\225\r\215\254?\305E\361\276\227a\222\277u\317\204\245\300st\277\257R\375,\033m\273?\350\031\215$K_\235\277.eh\213Rx\247?=&E\013~\250\242?[[\254\244m:\271\277\245\204cA\224\201\242\277\355\261\003R\370\320\322\277&\214\270A\336\326\300?L\345\215\352\3371\260\277y\226\220hw#l?\003\031\270HC\360\231\277\357\021\215\344\373\266\265\277\014\340-?\325\206k\277k\301K\320\356\300\227?\310\271$\262\262\326\246?)\025f\367\345\203\256\277\335x\311\027\254F\315?\331\210(\273\247n\305\2776\002Y\376w\273\254\277}e\336\302\344\352\261\277\315\025S\346\350\206\251\277\214\376\010\201\236\260\331?\35314\003Jb\227?\275&Y_\232\332\303?\003\237\355\260\222\030\304?\027\005\251x0\027\303\277\212\252 =\325E\261?\326v\366\312\264\363\273\277\336m\006\201/v\245?\372o\222\374\340X\263?@\243\n\030\306\\\232?\306\333\305\212\214\367\303\277\247\206\0332u.\260?\255\302\377\346 \265\214?=\332>\236\200x\276\277\305\\\206\260\013\217B?+*]}\222\352\275\2777\314x\017>\265\302?\2530\3275\037\243\242?\223\330\025\326\327(\266?Iv\273u!\303\255\277\342\330\334\320\024\266\242\277\000\213t&Y\200P\277Y\201\203\253\332\316\243\277\213+\241\213\014\213\302\277E\340\\\330X)\267\277\324Z\007\\\032\263\300\277\237\007E\327\030\007\312?\275\337\206/\233\276\267?c%\000\351#>\275\277\335n\337\247\265e\266\277I-s\315\025\351\317\277\212s\022Z\206\261\307?C[\0342d\030\267?\n\322lH&`\267?\247\213\212\322\320\001\262?\031\006\241\356\312\310\305?\2343\346\364\342\325\207\277\034\263\2175\204\216\205\277\360rp\203V{\313\277@\275H\303\211\223>\277DO\t\264\204\334\252?\304O\271\377>x\275?\321q\005\256!\306\303\277\346Pr%\256\202}?\246\242\310\324\255\334\277\277\025nv\304Hb\271\277o9\205\307fS\227?\354\0243\256C\270\231?\372\222V\r\305E\303?}g\021X\346\017\321?\302r3\273\211\014\253\277\220`L~\027\242\255?\223x\270H\233\251\241\277j\322\243\033~\377y\277\245*\377\326\314c\250\277\220\346/$\256\301\242?\375P\324\360\036n\327\277\023\037\352Q5\300\270\277\242BS\207\274\021\245?\310Z\354\327a\233\265\277\3510\007\207\375Q\271?\017\037@\237\246\356\220?\264O\342\255)J\247\277 =Ph\316\305\247?.\353\367\363\276\233\253?\260\031\240u0l\273?\024\215\001~\340>\261?\030)\370YG\277\241?\263R\211\267\242\223\267\277\245v\347\277T\213\272\277\\\235\021\254\256#\312\277G\'\227@\333\234\356>\326<!\345\210q\241?j\223G\201\025\202\300?\326\352\370nH\221\244\277\251\264x`?\223\276?f7\361~\177\254\201\277\245~\2247\366\323\305\277@\273\232\330d\022\212\277voM\215H\304\232\277\350$:9\235\263\314?\200\346\243\304\272\260\207\277\354\213\306\002\310Jr\277\217\321\224r\235\367\330?I\352i\226\032x\322\277\257MW\263\007\230\237\277\361\362\244nJ}\221\277\312YHj\345\t\306\277\256\257)\321\023\321\273?g\235\024\254\2013\264\277\375\357\307\255\226\260\227?\211\363\3116o\332\274\277\207\"wJ\253\362\300?q\377^]^\030\275?\363q\346{\341 \264\277\327\242A\301\341\210\273?\346\007\306\231Em\273\277\212\305\241\2601\310\250?^1,\253\312x\241?q\037\377\231\376a\224?S\025\254\274\374/\227\277\250\315\237$E\\\307?\242\tR\377\205\234\246?\334ll^\027\002y\277\267_\263\350\274\275\246?\227\300\231\370|\327\264\277\306CH\236\\\347\266?2Fqowm\261\277\030Kh\363^\353\265\277*\353E\235t\323\206?\206w`f\031}\274?\265\251\271\277\r\025\243?a5C&\253a\301?\033\375\242\212\261\201\264\277.\235\237C\217\342\250?x\213\035lO\226\262\277m\337\033R\377\243\250?W3B.N7\211\277\210*/<zd\274\277\210\013\233(\344`\267\277l5\356\032\227\241\262\277\257\244T\233\216\354\211\277\243\231\241.L\210\255\277|\222t\004\3048\253\277~q7y\035r\257?\320\271=\361c\223\300\277\215\210\301\250d\ts?\2735~6\245\224\222?\314e\307Dk\036\304\277\301\020\247a\'\202\207?\272\227\303d\000c}?4ZY\317\016\267\265\277\233\010\206\233\355\277\225\277iSr(H\336\304\277\224\370\213\350w\373\300?\014\365\320\210\340\230v\277 \346\276\004\276\017\277\277\210\032\207[\330j\251?\365a\031\347\227\016\302\277\342\367\232\350^\260\302?\024;{\235Ok\264?_:\315\000\320\365\272?\3336,\374\307\254\300?^\354\312\371]\232\213?>D\035\315\253\033\204?\326\207\247\217!$\240?\330\351O\024\003N\300?\243d\363+f\323\306\277\324A\252\370\227\345v\277@9\247\306\307\326\245\277JG\275\355\326\242\252\277\212w#.\250\362^?\264\2535\261#<\245?\241Rdo\356\322\317?\004\026\210\270\312\264\306?\333\215\275y\334I\243\277q\237\365}\"?\300\277/\221\343\20555\202\277m\332\325\210\025\255\220?\317\033\020\007\014\302\264?cAn\205\260\306\257\277\320\236\001\013\257\370\315\277\001\202\255\010i\203\270?\264\326\245*Rk\301?\315\370^\373r\274\263?%\207H\004\010\302\275?\261\177\217W\345\255\255\277\226\260\267\002\277\257\306?h-\353\0308f\274?2\267\177\026M\232\275?\250\232\353\024\255\271\263\277\232u\351y=\264\267?M\321\004m\000\314\250\277\316^\371ekk\230\277\306\213Q\300\0208\260\277\2364y\346\324\270\211\277\262\270vW\024S\261?\316\0178\303\013X\314?\202\251\323\201\217\037\315\277\037\3617<\005\236\246\277-;%\355\256$]?\\\035\365pn\006\325\277@\007%\274\373\200\317?\220\240e\377sr\247\277L\331\016\274b\371\301\277\223\312Rz`M\265\277\032\311\r\241]\205\243?\376\276\213+\356\326\270\277\240UN{\251\033\306\277\020\330\347AFp\254\277,\311\361\230\032\250\243?\217\242R\223\033\273\276\277/V\220\323\227\334\300?;\033\332\260M\250\247?\323\270\377d@\274\245?\037\230\037y\027\344\323?~d\034p\000\375\250\277W\345\247\022|\215\232?Y\205\035\364\333\'\301\277,$\351-Ngc\277v\010x\340R\022e\277Cmqdl\027\303?\016\236E\013\3344\274\277\207\321\302\272U\203\254\277@b*\316|5\217\277&?BA\210v\221\277\331\001\\\2458\207\300\277\013h\301\216\332L\300?\274\211PAxQA\277\024JJ\346Gl\265?R\237s\305\347X\255?f\200\200\010A4\226?,\225\3446\342b\307?\357\2531\316\r\200\275?\"\261\321![\371\265\277\236\255\345\2461f\255?P\037L\247\254\310\250?\300\263\365\366\316Z\266?\030\017\232\010Q\362\267\277\202 V\374\302\342\240\277T\252DdN\267\240\277\254z\010\231tv\262\277b7/\253j\244\247\277<\'\346\337d\247\314\277Z\353\225.n\360\254\277$\004a\345r;\247?\345X\026\344\213d\271\277\022\035\273\020\307F|?h\256$\016V\243\264?\346 \032(\364\356\273\277l\326\001\267}\027\302\277\231\346\"\333\345\337\207\277/\223J\2067\200\245\277\301 \3455\312F\316?\374O\306\274\303\027\260?\315\206\267\213\303\313\270\277\210\344NQ\007\206\235?Jj\003\006\035\344\301?e2\375@p1\301?\271\224\2744\217n\234\2776\005b\245Z\272\233\277\035#a1Xo\231?\304\243J\334U\346\255\277\255\205\016\320\021\307\277?\314\020\370\377\206\022\213\277\247g`\026D \275?\031a\343R\336Fn\277\255dI\371d\363\304?ujW\\\2408\304\277\217\252\367\232\264\266\254\277\342\232\331\214\014\351\242?\214\307\024\010\235\254\262?x\tq\005\005\226\216?\213D\321\325(\013\263\277<\265T\304L\246\227?6\250\306!\365\246\265\277\336\245\307\312\350\362\230\277g\271\262\225O\215\300\277\301\237\361\235\026\316\223?l`f\224VU\274\277 lm<\302L\201?\264\200\002\024h\314\272?\007\301\340\021\030\000\274?\313\010\263%\342\374\235?\225\025Q\034A6\241\277.:\002\325r~\225?\342@\214\235\257\270\317\277\306\020\336wE\260]\27737B\321\013\014\263\277{\252\336\263DP\223\277\211\306&\240F;\253?\326\340\341\337\010\227\265\277`\007\326\277\371\004\306?:\3744\203y\004\261?8\375\326/\r\352\232\277!4\\\030\211\036\214?6\365q\014\210\371\265\277\361\2076\024\010\230\231?Z\342e\301$6\221\277\024\344\020\013\247\232\225?\353\260\255\306\223\274\275?\253\020\017/B\301\274?d\033t\017xr\263\277\361o\240e\206\031\322\277\243|\006\344\330\373\260?\261\350N.\352\231\222\277f\367,I\330\213\210?\230NK\246\363\252\226?=\2343\037z\370\221?\304\350\010\201Zf\246?\201\326\334\273(\010\265?+\324\240\024f\363\260\277[N\374\232\353\027\260\277\246\236\361^G\227\317\277\321\354\035\234\343\373\222\277\003\253\350tF\363\263\277V\305,,\\\005t\277\010\301\330\376=\350\212??\277\340\366\302n\300?\246\023LI\373\035\260?\233\376\177o\0206\262\277\330\276\312\271\212-\271?\263:\037yM<\261?\300u\366\017\320\316\252\277W\320\320%\2646\300?\330\242\364&\202\372\244?\343\261\217\344\033\257\275\277\221\245}\264\375\324\231?\212\341e\270\253\330\262\277\353\033\265\206\322C\242?;^\np\360\363\276?\332-\377\235\273?\313\277\033\257\222\224\254\037\244\277`n\"\256\305+\252?\332\"u\232p\234\305\277\320\3255\\Y\370\316?|:\260f\025\221\263?b\021\214(\005\242\277\277[\026m\232A\371J?\203}\240\236{\240\305\277\337^1\325A0\307?zU\222\362\210\345\207?\216\313\207\276\3553\324\277\035E\256\376\267\316\222?1w\352q-\r\267\277\371\325\303d\354[\252?\315\236;\217\020\343\272?/\007\241N~\037\303\277A?\306&Rr\276?\211\244\377`\272}\273?d\277/\365\321|\304?\264\206\203\235{B\272?\305z\277\210;\231\266?\177\231`\005\n8\222\277\373\217\231C;r\303\277\014gz\352\250D\245?\367\367c\326\344~\250\277*\312FJ\331\370\251\277\016G\342\340\202C\261\277\274\324rys\213\312?\300.\277\003\036\233\312?EZ\002o\021`\251\277\224\360\271\241\030\331\235\277\224\212P\340\010\325\237?O\356\345>Bw\272\277\231\362bT\r\315\240\277\245\242\374<\204t\277\277\201\222\035\347\365\306\224\277``\366\030\234\367\226?qc\266zO\214\270?\337\026\322\314\337\275\323?\275\3751\"\324\237\230\277\020\376\302D\021\366\222?\242,\321I\013\366\251?\316\322X\242`,\301?\371\006[\030\022\276\217\277\002\"\201\0175\036\223?%\362\210\215`\256\270\277\312\256\356\024\202\315\267?n6\321\341\314\262\220\277\023\252\003\231\'\336\254\277\016\245\304O\363k6\277\245|\005\251*{v\277\217\245\207\250\037\375\262\277\376\033\275^\310\305\316\277\01401b\340\225\303?\331)\351\026\266(\274?\301\344p@F~\311?\373\010#\0043\236\263?e\354K5\357\204\254?8s\\\251,C\210?O\345;\320\030S\211?\013T\334\022\235*v?\302\036\375\243\370\271\277\277A\201\000U\372R\223?\361\"\263\350\357\234\255\277w\344U\037\243\'\246?0\351\350/\365<\300\277\356\375\221N=o\274\277/\265\267\021\3731\222?\377\"L~5W\252\277n\230rs9\242\324\277\315<\241\026\204A\246?\304\r\322\216\221W\252\277\236^b\2702\306\233?\031\266\233\212r(\255?r\356\003\007\254wk\277\351\270\327\031/\266\221\277\233\014\014\037\307B\277\277\344\314S\260\364\351H\277[U\317s\317`\263\277\344\010\327>\000#\313\277\023\205 oD\354\313?\203}=w\033\025\260?\2728\000\250k>\271\277\017H\227\233\262\365\240?\365\3155y\204\000\267\2775\345\310e\275\215\232\277\260\276J\343:\200\273?\323\255?\220`E\255?\201+\257>\007\343\305?\354\274{\257\210\023\245?\333\315;\255R[\277?\177U\271N\276\374q?\265\205\270\201\311:\262?\276\013\220\305\253\013\221\277j\016\222l.N\300\277f\227Kz\341g\267?\272\375\302nk\243\260?0\031iv\215\320\232\277n\003\003B\337b\261?\033*y\254w\026\267?\214\256\206\362\r\036\260\2771\215\365\333\216\'\254?\223r\2149:|\235?{\345 \344l\037\262?Ia@\303\335\345\302\277\255\227\333\344\216 \273?c\3709\\\266\206\300?\003\312\237\033\r\255\220?gpF]l\230\272\277\234\327\320\\#v\247?\232\001\266\224\260\330\270\277\310\204\352\232\345\316\266?\332\336\221P\337\tw?\363\227\300\\K\037\261?Q\327N0D\317\305?\311\3456\226\016\213\262?\276A\331\337!V\274\277\255\274d6\327\324\247\277\257\321\375I\003S\266\277\023?Y\240\350\317\275?\270)r\027sR\262\277\334\273\216R\355\025\200?\017\210\232\356\372i\320?\334\230\231\322NI\267\277\032\214\357\227\007\377\251\277\252\252\270\375\016\310\306?F\201\316\316-\215\252\277\323\272?\360>&\246\277\316_\'\271\212\201\257\277\307T(\370\260\006^\277\017\231)A\013\217\236?\304\274Iu\301\272\253?\203m%:\230\236\235\277C\341xIy\222\260\277x\327N\221\327\334\224?G\276\225;\004[\245?\213<\217\036\252\241\303?\255\254\010?\356\201\241\277O\250\277\247#\322z\277\270\205$\022\270\231\212?\006\327\335\347\n\327\274\277te\321\202\306\356\225?\236\342\274\372\215\206\263?fJ\017\300\235m\314?\205r\010\267+\262\266?\307\221\317\234o\304\263?\2133\255\241\2574\211?r\203\360e\223o\231?\317\374\336|3g\224\277\314<q\200l/\270\2774\223z\260\262\364\306\277\352\361:\203\223W\247?m\t\257.;\227\267\2778\025\344\277\3568\262?\034t\330\024<{\262?\262\300i\213\357\310\245?\334\266yvk8\257?\243T\032\357\343k\304\277\3018\317\255\256\261\210\277\235#\224\235j!?\277\345\255\350l\000s\264?}<<\260\302\327\301?\375\',\334\215\314\224?\340\226/\320\234\023\265\277\257\255?:T\247\307\277a^\301\340\317P\244\277\341Qx\276\026\353\260?7\301\213E\2261\265?8\013-!\210E\204?.\026\231\306\037\326\\\277L\010\244\226g\027\275?Q\245\177\236C\306\245?\374v\267\331Z\301\225\277\374\323\034<\004#\255\277\301\241\226\366\305\315\314?3\364\251\222\2653\263\277\256\253\323\236\006\027\272\277\035\327\022/\233\224m\2779\207A\347\274-\301\277sK\215\344\253\'\261\2774)\035L\326\303\302\277K\315\224~w\251\265?,\347N\'@\363\320?\365\327\177[,\223\236?X\317\024\332\236\000\242?\377bP\267\222\377g\277r3\261\377\331\226\301\277\366\237?%\245l\257\277\345\375D\020O\332\262?\014^\237|\354\346\267?\017%\363\315\027\227\275\277<~4U\026\217\265\2770\003d\031\225+\317\277lL\013\353{\262\215?\322-[#a<\304?\025\363\347NOJ\261?\3015\004\211\207\354\302?;\357\275\'\177\257\307?\t]%\364\360\370\265?eN\223\231\214\n\260\277;\232\246&\247\342\255?\315\333\232\335\356z\311?)$K\212m\323\305\2770\030\251\265dL\300\277\013\321\353\034x\343\263\277V\227\232gX\333\273\277\272\260D&A\255\324?\334LKX\332\366\242?\225\356O\237\024\316\276?XJ\027\'\216U\220?\375\240(\246r\000_?\016k\000\320\310\327\262?`\230Hf\027\'\236?T1\211K\225\377\266\277\225^\t\227vA\274?\251o\360\214G\227\256\277\t\010\354\t\221\334\233?\002\323\026\014\361g\250??\027lA\324*\236?\371U\356F\313\322\304?\256\245\355\243O\352\321\277\271\252\272\305\032\000\264\277\2627\336\226\243_\255?H%#\000\212qi\277\240\246\231\016y\016p\277\004\262\276v\240_\230?\265\031\306\241\007\272`\277o\210\367=\240\366\236?\255\000\210\326\031\026\310\277j$\332J+\377\226?\336\3406\217\364\230\303\277\025\363v\034\273\275\234?\312\007\343T\313~\205?\322$\301\t\314\002\304\277\224\216\014\030%\345\214?\237\0239c\317\262\264\277\327\314qt\236x\306?%\264D\244!\325\301\277\0315\006\024Z\242\302?,\272\246d\2430\272?\307\310\361\017\3037\265\277\255;\214\251\243\220\256?\221\210\304D\222\347\177?\340H\332b\237d\266?\247\217c\177i\254\250\277\327\334k|\371w\241\277\341\257\032gud\231?m\263\364\303\206\021\245\277\030\273\263\013\253\265\304\277\207\270\313:gL\265?L\353\231\374\265t\274?\373\335\2007\037!\317?7\371:B\202\345\267\277\370\037\256\032\373\211w?\313\370\377A\367\366\257?\347\326r@7\216\276\277\321\355\013=83v?\246\266\t\305^x\265?V,A~\302\206\265\277\000\257\221]\273\322\263\2770\206h\201$\350\232\277\023\rX\301\357?\256\277REz\216\315V\261?\324_\300\263\361\221\262\277)\231\276!\225\010\306?rA\2550\001\357\264?\340\260\002E-5\262?~\216\242\335\327\000\267\277y\240\006\202\246\334\275\277\037+p\301\323\372\265?\017\221R\361\306\274\276?\275\336 TR*\237\277\334\313tt\344\272\321?,\033!1\247,\262\277\361_\362(2\357\214?\025$\007Z\035\202\244?\310d\'\206;_\307?\324\332\035\222g\206\204\277\270L\3724\310R\260?[\204\213eb\350\300\277>\326fX\350\331\307\277\223[(\374\376\272\300?\177q7h\\\002\222\277\263r\002\244I\253\241?O7<$a)\262\277\263\371\"\334$A\266?\373\023\367\243_\325\303\277)\"X_^,\304\277\354\240\334Sg)\203\277C\356x\360\201\253\314\277\263\370\343\331\025\001\242?\300\326\000K\'\320\220\277\2464P\023*j\303\277\241\323d\331>\006\301?k\357\365\001Q\241\266?\020$\377\366\r\355\273?!\004H\255\236\007\267\277\230\022\343\300\347\267\317\277w\234\300\342/\014\272?\207}}r\332\010\264\277X\003\325s\337\006\307\277\213\235\277\277\251\332\234?\205G\037\247\324\310\223?=\314>\351hh\325?z%<F\202\315\326\277\316I\r\344o\366\261?\"\200m\200\212y\231\277\257\'\224\240\021\247\272\277\364:\346\335\347\320\307?\342\324f\362{3\261?\031\243\350\"\'\nt?j\324\237Q\202Y\272?\213\354\341\224\035 \221\2774PQ\310\254C\231\277\251N-\315\017D\304?=\261\303\n?\036\237\277\335\244KB\024_\252\277e\341<k\317\215\316\277\207T\276\252\034\036\262\277\034\242\343\256\223\373\222\277\007w\375\031NK\301?\\\370&>\006\233\315\277Ww\324\314\0078\232?\013\177\277A!\246\247?T\343P\033\255\363\214\277\261x\004\t5!\275\277\375\271\020\210\205X\265\277\274Y~\374\352f\243?=|yAK[\250?F\305\207\254\223\367\271\277\272\'\237LA\332\241\277\032G\321\253\005\346D\277{mo\t\237\310\214\277-\261gV\277\331\271?lY\327\3236}\252?\334T\342!\267\032\310?\330\322\330\305\332\306\242?1\010v2\330\363\263?\345\243\254\270\302x\265\277K\006\343Y\375\n\217\277\014\022]\035\353\276\244\2775M\332\273\253\260\245?5\340:|\230\366\303?&\223\263\353Q\206\255\277\227\214|\205{\001\273\277+\03500\307\004\300?n\000^\351%m\311?\025 \335\217\210E\273?\237\203\221*\230\370\261\277{a\224\263\212-\273?\027\232\304\034G\016\311?7\343\377\370m^\227\277}\\\325\177K\212\226\277\366F0\255\234D\307?\307\024.\243\327{\261\277F]Q\224\315\232\303\277\203\305\034N\255\274\261?i\342\210T\007\250\251?AJq\213\313t\266\277x \031b\354C\266\277[S\265\3357\216\263\277\303\nE-5\031\246\277\247\371d<\\\'\261\277\341\234S\003{\203\265\277zG\017\231\331\252\277?\252\367~\0313\373\214\277\363\271\262|C,~?\225{\023\254<\310\270?\257\324\354Wk\210\253\27776\234\374Gg\300?\332\302\311\034H\246\202?\'6J\270+q\214?\356\0316,\314\214\264?R\305Z\304\0103\264?6\304\242\365:#\204?PG\033\003\023\312\267?x\236\336\024>F\245?\030\205\236G\014\366\300?\245\305\361|\224\354\242\277\370\350\277]\022\006\270?\033\003NC\346v\244\277B\214-/\264\035\300\277`I\342v\301\262\242?x\035\233\3279y\211?eb\227}\301\366\235\277\212\250<\303\330:{\277\007S\261O\275\222\255?\300\036\016\257kT\304\277\'\325\334<\013\016\270?\231D\262\004\005\326\234\277\277k0^\372P\253?\365\304\207U^\342\304?~\374aR\217\343\225?\177\202\007\024\020h\303?\313\222\270\201\n\262\213\277\367\347+\357\334O\262?S\265\375\242\327\031\256\277\334\276\0132\362\034\201?\314\263\227\363!\355\315\277\206\321\317\241\002\253\222\277\020\374\234+\370\215\240\277\357J7;\254\010\321?\022\264\263]w\366\251?se\200\310\356\201\234\277\215{\245UG\203\274?\003N\367\025\342B\234\277\322\313\314o\014\334\273?\253\025\350\276\032\277\201\277?iP\302r?\276\277\341\027so\004\232\302\277k\366\250g\001\000\256\277T8FU\265\337\261?\362d\337\324\303\241\314\277\243pTZ%5~\277\264O\002pp\034\237?\0320\362k\257\371K\277\366\005$9\033\013\312?R+C`\362\021\255?>\337\027,\350)\220?jT\001\267?Y\270?\255\202A4F\232\302\277\307\033\236\267\370\316\307?\354\20618\2401\247?\300\231\210\321\346\006\265\277\303\'\001\354\270A\274\277\325:#\035H{\257?up\262\362\312\224\274?\305\354D}\353\023\257\277\207\377|\r\272[\273\277\314^\035\257\360\225\264?+W\271%-#\265?b{\321\272\231\251\255\2773j\307\242Sw\244?$\340\303\312pB\276?O\333\001\273\3516\231?\361\t\223\t\221\006\206\277\264\254\020\305U\344\273\277\231M!\002\300\261{?\010y5e?\365\263?\262\262\332>\315\230\224?\330\354\237\177<\215\232\277\330\350\n\300n\223\277\277Dz\373\021\271D\201?\261\373\373\270\002\223\244\277\251\333L\264}\243\277?\211\245\370Z\033Y\261?\363\302iG\235\372\213\277\272\014\332E\251\033\311?\242\347\201\336Rg\223?\224sO\205\017\237\260\277\222<!Xr\300\314\277\205Y\003\004\274\013\334\277:\035q!\353\260\262?\314\227\r\316\230\353t\277\363,\\\372Gh\242?+\"um\315\254\265?dn\004\252\331\023\275?\235\355\264_\262\355\302\277\203>l\035\2547\301?`\223\010\003r\210\177?s\361\321h$\217\275?\372\'\350\245\3530\302\277qp\264\232\365\353\215\277\220\201\203N\234\\\301\277:\355i\235\3536\306\277\022kVx\305P\300?h\022\031\262b\n\310?\374\266 \376\215\031\271?\301\212\037\345\013\022\300?\271\230\000N\230\366\246?\027h\217\036v\325\246\277;\273B\352~\030\247?\023\216\276\\\363\023\327\277\032t\375\325\372\214\250?\026\003\006\323\341:\322?^\'\244\2063\346\322?\322f\246Q\263\244\256\277\361>\000\022\266+\300?]\263\031\177\027\265\250?E\375!\243Me\277\277\257a\272\211N\322\247?\261\276W\375{V\317?V\253g\233u\353\240?d\270y\013\004\337\305\277\371t\333\366\3151\300\277\031\1770r2\211\230\277BZ\314\377\277\315\262\277\021\353\352\244P\341\227?x\326\330\271\250\263\252?\370\230\037\0258*\267?7w\036\032P\267\304\277\271\257\372#)\364\256?\212\250s\024z2\211\277\352\013\202E]9\276?\334\300\361\372=\014\225\277o\247p\246\345\027{?\n\267\031\036O[\217?\\\301\032\276\355\331g\277B$(\234B\377\270?\310\273\234\210\177\377\246\277\001_A\264\261x\325\2772|N\005\330\267\257\277G\244G\243i\222\256\2772v\305v8\033\233\277j\346\377%\305.\277?\203O\242\021u\177\233\277\227\206fLt`\252?\230\207m\301\025\217\312\277\001Y\023>S\375\231?K\341\327\177\350\220\261?\240\303\327S|*\265?\363 j93f\253\2775b\214\316\201p\231?\331\237G-Ue\255?\352\016`\005O\032\321?\310<\262z\336\350\256\277\247/\007\345$\023\265\277\"H\350A\242\230\273\277\200\226\005o\205\204\217\277p_\244\014\365\025\307\277\206\202xPmB\212?$\205:y\r\377\313\277\302v\336?\035N\305?Iq\\/n\016\275\277\250\307\257\232M\350\312?\323\230\251\212\214Z\244?\371br\016\226\315\261?\270M\364h9\210\310?\374a\266;M\026\310\277Z:F<\256\025\257\277x\353z\366\013O\273\277\303,\236)\222\030\300?A\017\005\211\r8\214?\177\307\026\234\032\010\255?u\242\364:\333z\240?\246\251\216\223\025\343\246\277<\3511\306{\234\244?\355\341\221\273\022<\265\277\264>\332\262X\261\247?\336z\235\325IH\277?\330\023\216\254\214h\251?T\317\371jQ\311\242?\000x\033\365D\021\261\277K\321\236{Ic\244\277\214\024G_e6\240\277\244ZZ\363<\237\315\277+\310\215\235\214\021\250\277\2455\327\177Mf\276\277\266z\'\341F\304\252?\\\207+L-\323\300\277\346\007T}m\001\242\277\201\003Bq\374\220\224\277\201u}N\272\025\312?\006\374N(\316\331\255\277!vr\3125\337\247?\275\365\004G\304\032(?&\373\317dOt\307?\205\"\370\026\337\001\260\277\324\021H\220\307Q\210\277\204\027\256\202\311\326\230?\374\013ge\030\212\260\277to\207\211s\030\227\277:\312\352\276\345\266\201\277^\313\001\273lf\244\277\243\324R\340\361\204\261\277\'\246\345\316s\006\266\277\317,B\027l\335\254?6\260\373u\357\006\251?\3432\222\304\242\206\266?$\006\241\327\327\322\263\277\204=\222\227\"U\252\277\234\316\302\010\343\247p\277\262\327\206d\373\336\267\277>L\363\231-\356\215\277\256\002:\235u\323\274?Lt\341\031R\257\270\277\031\207p4\035\252\267?`\366\247\242\300x\310?13I\317<\317\254?\020\242t\207\246\302\244\277\207\253\216\304\363\033\274\277\213_\313{5>\254\277\257{\207\021^A\264\277KG\031\355!\377\303\277\223Fyu\027q\304\277#f\021\234\0206\205?\210\303\300}\245\001\304?\244\376\001\341\2241\314?\013\334\004k\370-\273\277^\0037:\354\237\260\277Z7ay!\035\301\277\232: \366(\345\205?\3551\006+~\352\272?\263\226[H\\\000~\277ITr\034)\'\272\277\003\364\367\357\027F\253?;s\313Q\320\346\234\277\201]F\245\240\026\305\277\375\350\000\214m\352\322?\311\030h\\\267?\254?y\006\023\364Mu\260?\237\232%\260\355>\226\277\004\332\355HUO\274\277\374\024\275\322\342-\254?\361\022\000\265\340\373\223?\253H\306\206t\002\266?V\001\235\005G\221\270?E0\344\213=A\224?L8;\321\301\027\270\277\213\253\031r\212\273w\277\005\035\256\237\207\035\222?8\177RP\020o\240?\213\274\030\2522\221\304\277\206\314\252\261\206\344\204?\320\033\275l\256\230\235\277\333\303\325\204Y\352\267?\330\203\270+(\"\301?\016/9\316\336\201\227\277\302\242\376\237\225N\224\277\371G\311\204\201n\273\277q,\316\375\261\204\260?\032\243\177\257#\221\270?\331[\013\223B\030\275?\003\255\246\235U.\257\277\217FX\302\261R\211\277\343\001+vm\351\254\277i\252\024n\343#\264?5\307h\216\016B\262\277\017&\217\210\322=\303?H\207#5D,J\277\340i\243V\324r\250?R-H\312\257\307\204\277\244\220\210\243L)\303\277\261\227\365\377#\364\266\277 L\367\024H\372\244\277\361\237\343\217Vx\225\277\r\n%\267n\320\276\277=\251\225af\320\206\277\221\376\023\327(\327\261\277|\345\343\n\277-\316?\260\3170\352x\357\305?\003\353\346\202\354\020\255?\250\275\246\325\234\210\240?\277\26417\033\216\240?\220|\200=\372P\246\277\"\335\002\022\t\305\257\277q\352\017m\0077\263?\016\275fn!\346\255?P\355g\277\372\373\241\277\350\n!W\273V\267?\033s\274\204\227\317\242\2779\301\376A\255\352\236\277\367\240D\346so\247\277\365V\006\307H\304\316\277`\365\311(\0065\323?\242\242*\365\247\200\256\277c\201\002D\021\232\300\277f\031Qa\275Q\302?\030\027\2247p\237\300?\264\317\227\373\";\262?\242\241|\376f\357\245?h2\322D\315\200\225\277w\245$$\232P\252\277\326\223\">O\r\241?;i-kQ~\252?\006\233\221\361\316\016\261?\200k\\\333\223|}?\353\314\027\002\013\311\262?\224\002\037\231\242\037\232?\241r\213\251\274{\312?\235\033\303\255\302\214\251\277\350I(,Fk\255\277$\"\340]\207\341\246\277\341<:}\355\177\214?l\353\237\255\332\237e\277\352\275oX\373\303\310\277MN\030\315\367y\222?3\030\032\236jQ\247?_\226:\354\300\311\253?\307}\266\370(\033\276?\250O\211X~\235\275\2772&\006T\203d\256?\262\374M\267\235o\250\2779\027q\262\037\202\221?L\3321\016\251\203\313?_RMU\376o\276?\260\344|\236\372\202\310?\230\306z\344\231Z\265\277\362`@\374H\260\253\277\2615-F[^\310?\276\3271\026\3131\277?\3441\032\007\363L\254?YBw\243dW\312\277\360\005\243_\260N\204\277b\373\n)\302\024\303\277\177\326\372\3514\276\246\277\334\'\231[o\260\223?&\204d\313\303Z\255?G\312\000\0172\312j?\224\350y!1\305\307?\260\301l\177\227D\252?\2466\024<\333\001\244\277\301\037\313y]G\242\277;\340F\241^\205\261\277\327\244\264\203\177T\240?\216\305\345\310\362\t\300?{\334\312g\320\320\307?\371\373\263\320\226\242\277?\022\027\244Ep7\210\277\350\345\3025\211\"\317\277\003\033\324\006\363>\227\277\201\330\332\310r\000\262?\027\310\324\376>~\206?\032\005\310\331^\356\270?[t\240{&\376\271?f\347\ru\246\227\305\277e\375>0\212>\302\277\034\374\315ev\327\265\277\013C\260\001:\233`\277\006\2127g\250\365\312?\301\333\213\370\215E\301?\335\275\210\302\231L\267\277E\373\';\312U\252?@\006*|\177\221d?\235NT\261r\264\307\277\200$k\336\201\222\265?\357|,\"w]\263\277\001\350\312\256\274\260\335\2779\030\223\325\024\366\236?:\215\362|Q\005\236\277XHIIw(\277\277\325t\232\260\333=\275?\317\001u \006\311\222?\336\346\321\323\024?H\277\257\r\014\312\226\272\272?\355\267R\017\236\031\223\277\223\211D\305\357I\275?WEY\353\355\326\255\277\013\"\023M/\332\274\277\324C\003\310\000\317v\277\313\310!~\2768\300?V\325\004\307\355\366\257\277\r\203\244\325\306\346\262\277D,3\227\370D\302\277<\331\036\211\217U\243?\262\201\246\023\344z\311\277\230\035E(,\245\247?\355\002S\035\311i\274\277\311\315\326\214\326\326\262\277\240B\"\266Q\010\263?hj\370\241\214t\260\277\024\317\204n\261\375\203?\277\321h\321\241S\322?\315\213/\357R\327\253\277\377)E0\025\371\320\277\326\367\225k\310\242\246\277\245\353lfX\'\313?\332\314\364q\366\221\216?\323N\323C\2449\312?wxkP\270\261\266\277\027\314\177\267\242\375\232?\375\366\207z*x\322?]\206\3366\205Ox\277\247J\227\302d\205\241\277\007=l-\356\246\314\277\347\232V\'7\372\250?\344\317\316\370`\256\316?\267\"S\036\016da?\300\005\3257\371\263\316?\251\264V}\032\233\267\277c\307\021U\207\345\320?\363\013\352`2\234\305?\365h\224\n\241\272\245\277\244\003\272.\216\254\273?\271\377TB!\032\206?`3\227\344\241=\263\277\007\2210\350xI\307\277^.\035\010\2103\271\277\303\014\357\242\357\254\254?\277\210C6Fp\323\277\342\261\\\301&i\261?\005\000\321\0219\360\261\277CR\205}\000\005\253?\321\313\334F;\274\327?G]\374J\252x\313\277~\343?\273[<\272\277\276]\261Xs1\240\277\352p\212\276\343\263\230?\360\211\356\202y\345\274?\210O\026\217\344\001\241?\355\377\272\020\021:\267\277\222\032h%l\375\302\277<\375\243\216#\270\267?\021\"R\363\233\307\240?:8\242\245\026[\260\277\217\031\302\232\277P\254\277#\336\377\213\241\252\256\277\315\252\2338\274\262\314\277\313\177\256!~\033\320\277\257\213\022\232\226\007\272?\021%mX\222\203\205?\245X\006\0016\272\264?*\354M\311\007\306\314?\271\301X\360\271\341\260\277[\231g\375S\253\270?\373\016\303\005\210D\235\277\261v\266\200F\216\255?\0311\026\267_\234\255\277\007\256\206,\371\221\305\277 k\241\342wH\261\277\025\312\003\346WT\271?\360-\370\262dqZ\277h\017\253|\220Y\266?U\277\234g\361s\257?\377g\323T\263\235\177?5\250\350\321\256\014\241?y\3249B\312\306\235?\'\332\207\217\205\225\272?he=\214\225\033\304\277\251\003Z\024PN\220\277[\031&\201}\345\260\277\341\217\252\337\2765\251?\200\322\203j\373\264\243\277\370\257\270\003#1\241??\206\315\336Wm\233?\205\026\263 pJ\264?C\312Z\230\221_\225\277C\272\017C\243\374\305?j\006^\377~\257\253?\336\207F\344\241\333\230?k%\300\260\257\305\235?\210aeRr\253\275?1S\347\212\275w\260\277<H\261\177k%\243?\227\201\320%\232 \247?\225\222l3]\231\263\277\352Cc\351\021\330\255\277\t%\373\033.\202\267\277\345\242EF\314\274\225?o`\361\322C\227\265?\026\263X\350\030:\267\277\030\272\205\235\333\223\222?\362\216\263\311\245)\261?1\201\361\330\320\030\316?\252\246\035M=\177\217?3x\2676\266g\270?>\375A\025;\306\275\277S$\371\026my\265\277@\314f\243\2325\261\277k/\250\216-P\261?cp|\333\273\245\321\277\212\254\030\321jo\240?\256l\263\220(\353\322?\321\227\316\220\302\367Y\277\017\253\272Ek\371\261?\177y\001]<\202\241\277\301\230\365\337&w\240\277\020\351\310n\360-\301\277\2043Y\2753I\243?f~\276\371?G\272\277\024\345\255\235z]\210?\256s\007\270\336\253\241?o\205\211\372\242\231\260\277=\310\265*\036U\270?\342J>.~\353\304?\215\r\225\310N\360\256?\215\376\267P3,\270\277\207z#\362\373d\266?\205\n_\014\246i\200\277\242\367\322N\007\275u\277\326\314~H\225r\213\277_[y \036V\307\277\237\326\022\203\036\235\233?\270\263I\265\235\001\257\277\215\344`N\366\271\262?*5\235\276@\350y?\352\341D\010\203 \230?\252\003v\314\265A\324?l\021\350\376\214\331\261\277J\0175\325\316\326\301\277q07\325[\000\310?\361\357\253_\001\335\243\277\247\366\250x\246\202\311\277m~U\340\351\277\266?g\220\265$\313\306\301?\002\236\277\253v\222\300?IE\231m\204\266\237\277*Eb\023x\223\260\277\363!7\202&\314\274\277\375\251\335\017\014\212\205\277\004\007,Q8\364V\277*\355! R\366q?\303\267\272\210[\"\235\277\374\225\302\207\270U\221\277\237\245M?\376l\247\277\272\213V\245\337\306m?Ng\000F\366\316\271?\223\224u\230V\201\247?b@\202\n\256\345\224?\356\233\202\207\364D\220\277\223\253\026\242\n\341\260?E\030C\003d7\256?}\331\264\330\006\233\241?\204\307n\005\3722{?_-\304\266\350\007\220?m\21105\2544\250\277\317\247\257{j\330\214\277t\177\325k\227V\222\277\203M\332TgZ\246\277W\210wAs\000\264\277\353T\217\364\253\361\207?\205\2762\363\246\'\203\277p\317\303\346f\030\241\277x#\020?~<\253\277L\304\320K6\274\211?Z\333\231\265\002m\300?\023>o\320\331/\261\277\376\246\021D\342\312t\277\347\277\345\232\2439\\\2770\352\025\026\313n\302?7\256\254=\014.\310\277R\3013\323\031\267\245\277U\205C.;n\260?\335\212\271\273\002\241\302?*=\346\034\301\334\305\2771w\310\316\351D\240?\327\223\365\020\007)|\277L\262\026\214\301\264\247?\201\214\327\331\036o|\277\023\253t\321\227\372\264\277\262\361\030<\247\255\246\277:\323]\332\001\310\216?2\246\\\270\303\007|\277r\340\361\340H\270\267?\346\247\3725\310\371\216\277\217\327\034\210\215\247\247?\274+&i\347B\255?F\220\010\306\247h\271?\214u\227\233\276\266\227\277\213\001J\332u\302\305\277\230\353\362\341\275\344\266?\311\352z\221=K\265\277_\345\335k\322\003\272\277\305\203\273\227\322\373\210?K\207i|-Y\231\277\357\356L\233wL\226\277\244*\n\233@\254\221?2\204<\354\000\375M?Z\326\'\336\205\207P\277Ke@\373!O\260?C\241q\322\024\"\266\277\350wyC\313\363\234?\"\257]}\342\233\253\277\302\037\362\020?z\302\277\352\260\370dSYt?\306\337+!\307\211\303\277\013bj*\020\240\250\277\340\271\306\334\231\272\261?\252n\234\002\204\215\302\2777\332>/\177\276\214\277fLdZ=\367\255\277L\334\000%\340\312\241?\243\300\025\311\336\342\302\277\tM\215\233\n\267\260?\031\246\335\3278\034\216\277\344\235\206\313\240u\320?\334lyX\245\026\300\277W_\337\241Wv\260?\t\241\005\236\234F\264?#^M\"\316\035\322\277\3224@\241W\377\257?L1\205H\313\242\267?\237\371\271\354\333}\260?\177\245\334T\2643\236\277\236+o\017\022\342\271?]\022\247!\273\263\305\277U\2558\305\240\323\247?\002mG\235\036\205\253\2771\340\347\324\343h\310?\311\337\362\274\365\006\323\277\376\262Iy\305P\262?V\342\246.\001b\265?\'3`\276\305\367\233?\3526\321{\217gr\277\265>\014G\211\303\257?\227\365\326\025\267C\276?\204=o\364/9\302?\030\013\372\346\301:\222\277\031\237\'\001\255\252\203?e\007\264\204\342\033\273?X\227\221\243\236>\271\277\3162;7j\236\261?\364\335\024\206\307\r\253\277;\277[\226\362\016\234\277\363\322\370\355Us\266?\014:\256\256\023\241\266\277l\244i\235b+\300?\266\221\"T\266\020\264?\032\277\\\263L)\201\277{\230\240\253\345\202\030\277_\211P\031\236_\313?*7\213a\364\300c\277V\344\376\007$R\275\277-\237\022\220\213\276\276\277\240z>M\036\320\261?\305.\373\006M\305k\277\324ed\233B\340\254?\204\036\345\211\217\261\222\277\2654\265\005\n\322\235\277\273\310,V\312\334\276\277?J\304\"ms\240\277e<\027z\025\351\234\277\372\277\242\367\350\325\234?I\026=\t]\213\271?\215\307\344\222\037\371\311?\362`m]\351\251\273?\013\233{k\360\332\303\277\221\354\264\353v\374\300\277lVg-Q\354\216\277\n\253Y&\363\204\245?#\313\353\016@\203\266?\026\254\311\335\322\203\236?v\234E\256\326m\225\277\246\244\020I\207\234\254?\212\212/\367\363L\263\277^\013\217\257\361E\266\277\354+Vp\330\013\211\277 \216\375[/\007\250\277t\336Ek\021v\255\277\232\324\r\203~\353\263\277^\332YSn\205\257\277\302B\261Q\014\003\313\277\031\016\311\017\230~\330?\374\252\334\335\034\350\225?S\235\230\366H\233\263\277D\326\r&{\340\262\277\301\206c\230\203b\305??\331\366\016\030\'\253\277\231N_\333Y\264\241?D\027E\320\300\301\302?v&\337\334\235\324\243?\211\324G\304\353z\263?\374\306\327ol\353\316\277\251\244\370\372\265d\262?\177\010|\321\273\250\266\277|\262\223\313\024\366\265?\335Mx\r\030\354\247?w\237\317\315\220\305\260\277\371\262\023\307{=\274\277C\337\021E\r\032\261?\250Xb\232\332\352\246?\255\352\226*\021U\250?\364\020\032\312x\326\304?\335\261y!1\255u?C\304&\313\020\346\212\277X\242L\214?t\243?\2416\017q8\001\204\277\314\032R\312\0069\261?\022\360\337/\0022\244\277\213\006,.\366\237\264\277\211\274\326\300\"\255\303\277\217\332\226\362\206\304\262?\370\333\215\212\371\317\302\277\207mJ\232\001\024\230?\316\344\315\341+\200\247?P\t\270R:.\260\277kR\263\037\211\031\220?\306bX\303\336+\220\277(\325\000N,o\235\277\323:\025\224\363\233\260?\022\304G\263\3733\321?e\037_\371\315\216\214\277o\237\2375\027\314\211\277\031\237\000\025P\360\324?\321\351\242d\237\346\266\277\356\363\007\273\3272\236?\004(\007\2518\245\213\277\207\2243\263\353\307\303?\240T\020!\377Q\232?M\312\032\313\214\262\272?]PE\036QW\307?\003%\244\307\2739\274?\251ir 5\353\263?\022\003\201\243&D\265\277\233H\223\377-\317\277?U\372\252[Y\244\273?`\261\237~v\253\266\277\276\031g\260\017\272\230\277\355\356\345\334\337\301\265?\250b\223\253\357\262)\277\324\341*\005:\t\251?D\341(j&q\315\277\271\300\303\220A\262\234?.\316+~\317x\255?\265\031\2663\356\357\260\277\263\366y_E\207\242?u\030<J\240\345X?\273O\216Q\252P\270?\277\333\226\017}b\277? $\213\323>\300\302\277g\303u\352\336\031\274\277\373\226\216\255o\356\252\277i:\262\335j\341\275?\251\004n%\255\r\226?\347\363\034\323\000\t\301?\333\027\'B13\262?\005\370J\031\276%\300\277s8K$\233\210\234?\003s\352\264\177\275\256?\031\367\267E#`\260\277^\357s\341\217\251\255\277\362\262\203#\257\354\227\2778@\347\317M\025\265?\263\2748\250\0239\277?\\\276E\032\375\362\257?B\234\235\361:\215\330\277m\372\023\236\316e\264\277S\232G;G\222\275?\202\240\363Z\302\301\225?m\343\203\022j:\277\277Xm\034\013\026\251}\277k0\270(\246\265\263?\275\205!]\261\366\264?\361\210 \324F\261\307?\336Z\242\336\310W\263\277\372\210F\332\214x\005?\207,\313&\226\314\242\277\"m\356d\266X\300\277c\261\033=A\024\237?\243\334b2\223_\207?y\202\032\3038 \262?\216\300\306Qr\245\262?\023\324\213\220D\263\317\277\235\210\272\207\350\215\261?\030\3329\210\355\322\221\277:\347\037\304\345!\261\277\231\264U+\301\353\200\277\257\323\335W\377f\270?Y%\271\327^\212\223\277x\017\343y4\363\224\277\331C\223\'\360~\245?@/<O*\317\274\277p\020\326L^\225\250?\026?\336VX\320\245\277\270\331\343\3724\007\267\277`\007b\260\355\336\241\277Q2?\371\261%\305?\207)\340\265 \341\270\277\352\375\031\2209\226\314?\025\301[\006\362\246\261\277\221_\266\33621\216\277J\341\366s\367\007\316?\273\rfR\366,\260?\374\303\'c\3625\245\277>\314\230T\254\200\303?\322\345\331\227\036\006\306\277nS\243\340\260\226\223\277o\246\372\177\313\315\246\277+\247\3527\207r\300\277\217\311\310\213\204\371\244?m\321\021u\266v\304?{\n\004\016\200\311\227?\023\265\204\016\tD\320\277\221E\370\0056\204\224?[\321X\332QU\267?\212ug\304\267[\267\277\234s\003\371t\"\253?\nr\315\231\252\221\301\277\022\372\014Lxi\241?\312\250\003\036m\007\305\277\325\242\332\023\tg\322?\271\0177UH+\240?\207U\246\277\376y\321\277\211Sl\364\212=\267?z\211\364\227CL\226\277\262[4F\265k\263?`\335\211\341w\375\262\277\220^t)\245\272\250?\3769\014\003\246\036\303\277\270\006\035/=^\222\277\200B#W?f\242\2778\267\3532\2073\262?\262y*\254 \314\303?\233\326\310\317\332\364q\277\347\034\212\213O\027@\277\260\025o\304\266\336\254\277=\265\216\025\214\225\307\277\016\266\027(s\346\276?W)!Is\230\253\277\242?>\355T\207\246\277\211\030\"\005\366u\266\277\027 \243.O\347\265?\230\272\256\023\007q\234\277!.\002\344\004\251\307\277\201\217F\2731\237\230\277\276r\022@\235:\254?\222\262\2447\023\336\300\277\312\206\342\322\007K\261?;\354\272\242AI\276\277\215\250\242\txi\270?\330<\271\340<\373\306?\375t`\245+\301\272?\355\337Ht}\325\257?\206\002U!\350&\275\277\2629\010\316\365O\242\277\376\272\'.C}\240\277\374\300\206\236\225\363\202\277\372((\240\363H\300\277i\352\336LFv\260?%))\312\225\300\302?\231h\277;e\261\227\277\3620\n\310\320\354\216\277g\016`\375i\313\222\277\366L\213\233\231\022\262?\257\rbg\303\021\311?h\210+\303\212\024\261?,+\274\263\310\"\302?\272\214\344\203I\366\311\277.t\276\271\303\023\241?\201\205\366\332\214\306\320\277\001\232e\013+)\226\277rUo\272\263\371\261\277\022\310\321\026i\035\262?Fl%\017\0063\277\277\252\350fc\252\365\242?/\005\316\036\361\214\227\277\312\243p\204\030\243\242?\200,E\373\215%\300?\261\244\217\232o\226\330\277\3362\'h\257\231\226?\323\276\251T\344\345\237\277\316\314\342\335\001\321\256?\251I!\'7\267\263?\351.:\340\317\304~\277\325F\222\232:T\253?-\016X\302\n\236\241\277^#\030\327!}\245\277\240\334\226\227\361Z\304\277\353dT\306=\300\307?\315\305\205\034\342\332\300?\272(\220\365\001/\241\277\35421\342\307\003\303?~K\231\200\313\372\310\277\325\201O\303\270\227\217?iW\177\274J\246\232??\372W\243Qr\272\277\177\276\025\031\233\221\253?\223v$\376(\033\257\277Y/$\370\226\030\205?G\n\303$\267\304\274?\237\240\262\014\224\230\266?\'`\237\245\324\027\243?\2757\225\333\213\364\257?\237\346\021\277\221\017\205\277\266\260\226\365\311\335\245\277zQ!\236J\262\321?\240yL\002\336t\225\277\303@\364\302\334(\253\277\0253p\204|\376w?\305\234\337\213J\310\274?\335:(/\330\361\224?{~e\207\304\255\245?\201\325\371\256#\217\266\277\202\334\302O\rN\240\277=l\3656\345\373\260?Q\210\372\343\3068\270\277\003\202\311\213o\250\263?\020\227\003\004q\332\277\2773\034F\274\302\204\253\277:J\327\226\351\027\316?\275\262\220S}\362\261?\311{6\277\212\242\250\277\233M\200\235\341\000\257?\340BR\377\252\032\275\277\225yoy\253\177\257?u)\272\347g\316\305\277c5\302\224\233\353\245?<\214\002|O\277\235\277\032i\252\355\312e\240?i\036\245*\325\202\240?\372d\233\2466\303\302\277\354\022\254\006V9f\277\310\241\376\242X\021\277\277\326N\341\300\256\335\263?\342=+\r\361;\322?\205\366\210\215\370U\270?\202\254H\270\t\315\246\277z>\344\202\313=\300\277s\365\232\225\316n\310?z!\323\334\352&\227?\014\367\277\005``\261\277\214\201\234\223\262\037\274?i7x\371m\306\215\277|\347\350\374\300+\256?\366\007\202\252\013\263\303?\316w\357\242\253\312\260?Q\006\003Q2\265\273\277/\003j\301\201c\246?\340\007\342y\222\344\247?$\215\233\351\221\277\277?3\\\333\020\302(\276\277\300\301\236\237\2558\264\277j\230\257\3645v\257\277&X\203\217C\313\233?|\231\014V\267\364\300\277f\262\006V\214\301\310?)h\266\306\367.n\277\372)\217\024\276\343\264\277\302n\372\200\215\315\262\277Hl=t\035\315\264?z\367[\033\331\303\302?\364\037\210\005\231\204\266?\317\251\354\203\335\221\326\277\331\024>\010\313\036k?4\344\320\344\304O\271\277h+1\220r\\\252?\237\377\313\0136\270\264\277\004\326(]H\206\255\277^~_\002\312\270\257\277\275\010\352\r\235*\215\277\326\207\317\021I\224\273\277\005\026C\2255y\265?u\005\201\230Mb\300\277/Xh\273b\231\246\277wa\007\353\254\031\270?\034\300\023\260R\235\261?\353\212\342\251\241\371\245\277\234u\200{bN\301\277l?Jj\361m\220?\350\310\016\026\261\271\310\2775\033\323i\200y\263?\223\325\032\361D\236\244\277\305wF\224r9\274?U\010k\262\013\311\307\277\353\006\377\036\361\203H?\333\331g\034H)\303\277\004:\315\255\034\363\237?i&f\265\353\222\274\277\377/*3\016\322\237?\367\374\2639\334\246\312\277\030\363\ntC\013\224?/7c\303\027\321\223?:m\211\313|2\250\277\227\036i7\264\013\206?x\261\244\2609\265\222?\261\340w,\252^\272\277\032[\261\303\254\227\224?\001\275\372\354\313\257\240\277\236\230>\3036\333\246\277yQ\302\020\020\373\243?\347\301\267\236+\323\312\277\tD\023\2168\255\243?Le\262\376\232\032\206\277\010\202j\262\370\014\245\277N\273\244@4B\255?n\346\204t\352\272\205\277*\263\330\246|#\223\277\370\317\215\264\032 \275?\250\271\375L)\302\216?\227n\243{\325\341\263?\361\321\251<\222\235\302\277\022\036-\005\201\303\237?\\\345\020\234\326\220\\\277\013\220\252K0\375\260?i\275\263B\362\350\271?X\323\212\003T\203\246?m\"u\250\345(\326?\007\347T\017\n\005\320\277\220a\0345\300r\263?\316\235\010\214\263_\277\277\014\026\377\002\247\337\300\277\032mG\373\342\000\301\277\027\001\031\366\214\207\243\277\355\302\2251\314g\264?#PX,(6\207\277]\016Rf\036d\237\277Y\007+\303[j\250?i\256>@uB\263\277\250d!\377\032Q\215\277\200\032a*\025V\301? \256\364\254\356\032z?:/\223n\370g\214?\355c \247\037\032\235?\272\267e\341\304\250\233?\301\204\354\321\334\"\257?\200\316D\r\255Yy?l\202=\366C.\302\277\014\t\033p\275\227\251\277;qg/\236,\300\277BQ~\202v\276\206?-P\367\2459\364\272\277\254\024\307\373\203\343r?\210\004\036\\\370\302h\277\\H\332{\251\350\256?\n\264\212\022\342W\224?\246\352\261=8\272\313?U\314k\214w\204\262?]\236\272\r\024\361_\277\326s\227\262\005\005\256?\247\262\354\014\307\214\264?\007\372\t;\305R\263?1I\204\013\243\345\245\277\360\t\3251\032\177\302\277)\231O(N\034\304\277W\024\t4A\332P?\246\"\217\352\354^\275\277I\324\251\300\366\305\321\277\255@\265\re\305\261?\203\004{\311\262C\230\2776\363f\271\225A\301?x\027\317[\345\274\320?\236H\221\005\245\255\264\277\315\370\235\350\340\235\307?Kx\353\2626a\243?\264\373\276\200E\255\302\277\027FuOH\010\270\277\372\307\0331\263X\275?$\220A\020D\214\266\277\\\006\026\265P\350\260?\305\357g\0367\301\264\277\300\245\233}S\233\276?\374\273BoyK\220?\020\r\236\020]9\260\277\271!\232\355\014\371\302?4[\216\260\230\006\271\277\252XP\030\220\321\255\277\020\\}t\226C\233\277p\2347!I\210\323?\303\263\'h\030O\236?\027\243T\224\204aq\277\210\020\224\216\363\232\300?\006\023P*^\r\204\277AG;\373\275m\243\277\272u\301\210MP\232?\006>\035\254\271\343\270\277\243\362\013\2531O\253\277$?\311,O\006\271\277\362\371n\005\377_\301\277\310\306U\311|Z\312\277\214\304%\006\316h\307?\364\245\337\027\216B\256\277\006\307\376\272\303k\226\277p%9d\236\311\302\277\357\330\226\325e7\300\277\263\202\271DK\332\217?|\215\235\302[*p?R&\323\355\264#\277\277N\363v[\020\343\240?%\03593\021\351\242?\261Aa\260z\334\227?!@qY\2440\275\277\"\360\226\tX{\262\277\200\360_*\3263\257?\\\273\014\360\3674\252\277\342\275#\021\023U\245?\030\266\313L\264\321\304?\214\211q\262O\211\273?\262\337\367\004/\333\260?\216\253^\"\024\034\313?|\267\343\232\373\347\227?\376]\255\377\360@\241\277\211L .\240H\264\277\315!\307\022\303V\246?$\277\326\240\235\222\215?Uaa\331Ce\222\277\3569\000\234\237\334\265?\224\234\340U]\363\322\277C_z\202A\320\225\277\204\210P2\312\315\223\277\013TA/\253\372\261\277\265\007)&W\023\271?`\260i\323\244\365\261\277\311\266\221V)@\300?7\360\014vw\263\244?$\326\304E-\215\255?\220\nX\361\373,\242?\205\004`\340e\n\302?\\6\'\266a,\213\277\300\271\364\310\003J\206\277\000\236\021\332\211\210\277\277\247\333\245j\r\271\320\277\372:\307i\203 \224?\254;_\211\312\034\303?\366g\3137\222zz\277u\333\020\216\367\370\252?\302(\32279\270\303\277\177\375op_\026\307\277\341l\010W\'\267\302?\n\250d1f1\301?\251\252\222s\004i\300\277\262S\227\361\377B\305?\201\233^\355\357v\241?*\331\314\352\270\341\304?s\245\264k\333\337\313\277\016\2253E\271\372\300\277v\027\347L\222\206\236?l\353\016\226\335p\260?Y\335\241\210\235\316\265\277\0073\023\374fB\224\277\377\006<l\036\246\303\277(\366\244\031^]\250?\006\343\366y\236Z\271\277\332\215[\202\344\315\226?\354\312\275c\307c\261\277\223\240\264\t\255\263\320\277\210Q\307hd\243\266\277/\372iQ{\234\240?\376\375x\032pN\277?\225\263\027k\177\202\243\277\334\341\277m.\266\266?\005jc\020\244X\251\277\242\314F:\351\373\303\277\355J\037\202\016\346\272?\352\263\307c\327\004\255?\t6\366\320\210\201f?\306mho2T\310\277m\2228\237@\305\264?\003\201\270U`\3651\277\355\203\031B\"\233\260?\033\340$\332\332$r?.\032\336\256\342[\254?y\276D/\353\360\320\277i3\255\3151P\267?q\335\235\274\010\226\241\277i\273\211\016\001[\266?\311\337\372\0224U\264\277\237\336}\034\272K\256\277z\357I\320v\252\225\277\346\316\200\333\237\013\264?\257\261R\221\227\367\247\277U.]\000j\242\207\277\301\212[\002@\331\214?\016\272Y\375Y\025\303?\266\245{G\324\212\263?\252d\342\241+\232\312\277u\032`\016\312/\300?\314a4Eq\016\220?\233\362hm\034\010n?\273\347\315\306\021\354\223?\251\237\313\206C\235\257?\212\373G\002\343\332]\277\372\025\301$\2705\211?\244^0\3463W\261\277\352t\346(J8\310?pU\321\235\016b\235?\252\312fnz\353\235\277\250\022\235}i\277\244\277\001O\355.\004\253\241\277\235\023k\306\221\205\240?\370K\254;\027\361\302\277\262\217b\363\217K\302\277\353F\214\251\302\342\276\277\025\377\322\367KA\306?5V\253\377\321\322\326?\373u\317\357\006\213\325\277\301\016\031\357?>\204?&zCX\321|\245?{6\314P\000\237\262?3\206A\351\253\002\236?\350\2145a\211\265\263\277P\205\246`\2652|\277\245\212\r\224\255^\247?R\245\027\202\023\014\306?\215\252D\313\2656\267\277\326\370j)o&\312\277=\263\270\207\006\033\253?\210\376\312\261m\347\313\277T\305N\222\333\335\300\277\222EH\327\337\372\235\277\333.\256cT\333\234?)\003)\355\241\233\224\277p\3751\201s\364\305\277\005\350m\002M&\227?\203\275\024\275\363\237\245?\357\203\004\361\2349\273?\361\213B\032\222$\300\277\375\354\321|*\245\303\277~Z{_xG\326?\321\332\225nG\345\336?g?\341\034\013\001\265?\213{\013?\014<\220\277$\353\254\247]M\253\277\274\263Y\363\032o\303\277\025\204L\034\366\371\265?\232\270\221tc\200a\277\377\362@\320\227\345\257?\360c\0329\316A\230?5\tWM\367\374\307\277\362\300\2315\233t\271\277\251\240\267\024\261\342\274?\013[\354\355\345\374\256\277x\222\001\201R\252\243\277m\333\313\257\276\323\341?\335Hv\210\035\274\241\277-{\246[/(\227?\323\361\256u\302\226\276\277\317?\306\236\t\322\277?n~G\017\303\371\273?\240\254\013Rk\341\267\277\237\030\235u\232\364\300?]\340\013\014o\222\251?Z\347\203\351\302!\226\277\254\216\005P\232\252\306?\021\026\306\024\001\035\265\277P\262\205\232\037ms\277\373\207\002\306\335_\320?\t\200X\201\353\224\327\277\0347\212\221\321\'\250?\236\ni\231\274\237\310?\345;\342\317\303\315\234?\237(\237\215\004\036\300?V\374\371\265\n\321\235\277\3660n\360\004\314\220\277p\337\316\307\240\356\246?\265\013\337\274B\363\243\277t\304\246\333i\352\262?L\003\317\240\316\326\263?\016 \n\032pj\300?\'\254\265\326\024|\217\277\303(\253\270@8\224\277\326\331\217\301s\216\264?/+EqP\363\205?S\\7>\331\241\227?\366+{UW\354\260\277%\304__\270\372\251\277\024\001\241\306\363\246\263\277\271\326s\254|h\223?\321\253(`G\342\254?\013\216*\003\3038\272?\206\352\261d\316\364\273\277:\360\371\007\236\202\273?3J\031Y\"<\260\277\2633\255\202-h{\277\277h\242u\r\305\272?e\271\302\314\251\253\315?\357r\0271\213\177\262\277\263cb\030\275\361\274?\274\001g\334c\252\310\277\323\246\332)\374Q\276\277\333\'\236\337O\317j\277U\352\'\205Ie\241\277>>\247(V\326\303\277T\366\203N\247g\260?2O/-5\000\200?AUuD\027\270\270?Z_:\344\3725\250\277C\321\n.\341\031\246?~s\252\035\303\330\301?\273%e\177|\320\306?\230\261r\224\006L\270?\323\221\255v&\376\272?2h\234\037\245\306\256\277\036\026Z\205\272r\230\277\227uy\270\332\366\303\277G\274w\222\363\332\252?\347n\350f\244\307\247?~^\310\242\351\014\256?lGlB\374\244|?7\244\341\221w\235\253\277\242\020\277L\263\034\300?vb\334\225mf\310?\213\262IME\230\307\27701\367\301\\\320\307\277j\021\330d\005\217\264?G\321\204\222\347\020\310\277G\rz\373\341\017\303\277L\213!\333O1\271?\2663\217\206\3732\265\277\320\007_>\353`p\277\236\345\355\337s\350\260?\031]q\200\364\316\263?N\274{f\314\313\257?\264\217\032\020\364;\325\277\004\250\314\355\000|\262?\374.\367\236\332\345n?\020[\353!\245\341\207?\210\224\227\014x\362\207?\371\376\231\307s\037\215?B\232\341*\tf\274?\242\251\244\r\235\020\270?\344\232\261\333\375o\251\277!W\243U~X\245\277\352\267Lf\202\226\265\277\225\347Y5\311\243\303\277\034\3032>\363\354\240?\355\333qS\365V\241\277Bt=\232\022\355\303?\261\316d\334\321.\243?\003]#\360uK\270\277\300\210\n\262\276C\275\277\003\227:\221\322\220\306?\210\260D\324\332\212\227?zV\262\372\257\013\260\277\221\033(\306\013+\300\277L\"mV\3755\224\277\031\335\215\r>\261\253\277\014\345\335,H\311\306?^^1\0366\253\265?\310\334d\271Q\337\216\277>TiG\314t\257\277\223\361\226\350\2371\240?s\014\217g\255\320\244\277\241\200E\335\3740\240?\333Oi\247V\000\267\277dh\224m\255l\203?N\300\247\364Cp\242?\352x\325\037\363|\247\277\330\330\311b}$\276\277\232\214\364\341\271\362\255\277W\232\370\315\266\323\304?\261YJ\217\022\353\272?\014;\345b\262g|\277\226\350O\252}\245\256?\010\371\255\310\023\'\274\277\360c\340\005\006L\267?\231\326\321\301\373-\244\277!\030B(&\001\262?E\323\345\350/?\240?p\022\\\231\307\336\265\277\253\027\036\215\376\355\221\277\2623Se&\265\243?;N@\312\336D\321\277\236\341+uL\344\226\277`\363\214\262>\357v?\342[\374r\2537\265?@\023\231\205\001\311\256\277\3500\365\334H\270\263?3\263\220b\004\275\222?\234\323\301{N\033\216?I\366\202\336(\226\302\277\311\370\023\264d\225\211\277qCf\350\210\353\305?\"\373\306\376\343}\312?n\273\003\321^\241\203?\331#3\004\253\263\253?\212E\342\030\214\023\261\277J\321\332I\330\t\246\277\246x\256:\007\266}\277>\351\201>\205R\247?4\220\3002\302U\322?\371\307H+k\353\255?\\\263\023\006t:\242?\020\271i\002\375\326\223?\217R\326U\023g\255\277<\276\035\215\3773\250\277\3119H\220\007 \253?\321kS\036\017F\303?A\213\035\271\270/\260\277\324&\3753\201\224\275\277E\215\315K~r\300?qv1\001\343+\324\277=\3413\376-\017\244\277\2600\371s\000\331\300?\275|\\H\352(\321?&G\001[\242`{\277\216j\2170:\362\214?\376\212;6\205\371\274?\212{\210 sk\244\277(3X\320@\010\240?\335Gpp\314\027\300\277\305>1\002=j\227?\201A\301\344\276\242\250\277\310z\346h\301\366\306?\256\210}\220\223\274\277\2772\025\210/\214\355\270?]\250S\325\'i\224\277z\273\376R\233\244\274?\317|\323\273\025\004t\277\025[S\340\316\325\202?\222\177\034\022\312\020\245?\343\267\261l\205\252\311\277\356\214z\000B\013\244?\240\213\205\206\'T\217?\215\006\312\333\321\022\271\277\333\237h\006\250\240\223?%\377>24\236\261?\305\206B\367R\204\262?\224\335\305H\223\363\303?d\322\366\311\331\267\274?D|0\020g:\230?x\241\372Y\374\265\266?\245\247\004/\245/e\277\361\331\215\3001\370\220\277\352s\226~x\241\267\277_\320\327hu\027\260\277\230\364\355\376g\322\266?\233\016\363\221\350\007\241?\264\240\222^\214M\307\277\254\367?\212\276\256\241\277\332*S{i4\237?\272\331\3143A\201\265\277\346\260C\231\365\307\300?f\262\035\210_\351\226?\306Ex\034\311\217\260?\016\272h\250G\327\243\277v i\210\276\223\276\277\367F\3025\246!~?\266kb~\002\014\305?\232\242\243\202Q7\240?[\323_tx\357\256?$^\201\000a:\241\277X\253\255\316?i\236\277}\0139\201\323\213\223\277\2271\220\252\260u\202\277\306\246\351\"\242\202\300\277T\026\230.\373\321\327?\316\243\247\327#\226\300\277\241U\330\003\311\323\240\277n\201z[\312a\241?\274\344\363\327\030\257\241?l\210\205\327\325\341\214\277\'\245\215\313\260\341\220\277p\300\224\216^u\324\277\275[\311\330\305\341\226\277\243\257\2079\236\014N\277&\211\256j\272_\272?\356\3453Z\2147\277?\361\205\354\375g\245\231?w\334?\230\305\215\210\277\244r\n<\2712\263?@\332\216?l\\\266\277\251\360\t\267\224P{\277\034D(0\252\303\241\277\327C\221>\361\214\232?\261\210\355x2\362\262\277\267M\270\330v\030\274?sv\251\267d\337\272\277\353p\344e\375\323\255?\350\024/\243\0225\245?5%A\212aa\323?\010J\253{\202\"\263\277\354v\217V\373y\257?\203\316&\034\252\323\304\277\277\204*\030\265\014\317\277vjg\025_\372\270?oQ\t\315\0131\211?\350\003M\206\251\277\272?p\377=\207\005\307\257\277n\247\250\352\244P\256?\016\305\261\342\263H\276?-uw\224\325Bn?\004\270\217Lf\025\177\277\001\224\267\007C\000\262?e\302\237\376I1\316\277BOd#DH\325?X\375\'R\213\265\211?\302\026~\273\323\334\303?%\370\200\233\3320\310\277X\004\236\203\220\341\250?c\255v\255\025n\301\277\005\273V=+\030\255\277\333);\006\016d\314?\273\3172\216K\327\250?P\3572\030\256D\214\277\246\246\373\373\206\213\252?\324b\031\034M\305\261?\253\326!\016\210@\221?\214@\264\020`)\260\277\273\215\300%+\342\334\277B\\u\0235\227\301?\207#\200\307\327\030\263\277\313\256\246Zf\247\220?}\"\252\357\216\220\264?\233\n\013T\272\027\243?&\2348\344J\311\262?\306\357\335\263][\307\277\367\364\246\032\037\223\247\277,|\007\302:1\261\277\314\350|\207\022\355\256?\023\030=r\324\203\216?\177)\351]\205\335\251\277\226p=+\312y\267?\204v\366\266\374\233\315?\224\307\370lV\021\225\277\350eD\365\316(\312\277-\201\344\367\312`\201?\217\241\364\262\023W\213?s.pS\223)\275\277^\006\367pg\263\251?]\376\"?\234\366\300\277_\"*bZ\230\211\277#F\333\"\257\362\243\277W\"P\300!\317\260\277\0050\221\030\025\354\240?dBP91\024\242\277:Q\214\275\010_\310\277\362\352\246@Y\004\327?agu&9*\277?\363\215\246r\336\272\253\277\304\236\303JpP\240?\023\353O\230\246\333\266?\246\'0E\326\033\200?\250I7Mr\210\206\2777\250M\222.B\263\277)I\213\364ks\301\277w\243H4\240Q\302?%,c\225\354\356\247?\025T\362\246\214\204\274\277\013+\267\246\247>\270\277\246\275\006\316\326\342\307\277\200\225\335\275\330\021\323?\306X\257`J)\251?\366dG\370\235\245\252?\026qTJ\035p\254\277\002\r\232l\214\036\201\277D\177\014t \374\244\277\207\002\327\177r=\265\277hq\033\205\000\352\263\277O\235;\013\371\357Z\277\222V\330M\214\336d?\016\257\216p\323\263\272\277G\247\3568\251F\243\277\375\233\232gX\324\205\277\245n\'\342\335\265\321?\203z8\354\016\032\337?v\016N\237%_\232?l\352GI\320\207\247\277oz\371\307]\001\240\277\300K\343\177P\377\240?\010\215\241\276x\354m?\342s\337\350D%\264\277\314!\277\";\221{?a\025&\202\234#\224\277\304\374\251\337\002\211\273?\325{[\262?w\266\277\3469w\231\261\375_\277\234Y\376-\211}\206\277nc-SjE\304\277\247\355~^\315\252\244\277\0233\354,\030\013\253?\370\326K\327\026\220\261?y\2703\205Z\207p\277\330\036\301\030\213\207\266?\177@\304\203e(\267?\014P\231\026\004\310\227\277\370\007\213\0358\357\310?\372\330\033\224\003\245\261\277\347Qo\303\351B\264\277\027\023F\364K\323\272?Y\374\355\350\204&\251?\210AGOp\276\226?\273\372 \241BJ\312\277\251\322\016\334Uo\271?|\030\261x\313\034\266?XF)\010\310\203\255\277-*\003\340\370\275\262\277\310un)x?\245\277\007\3700\3765J\205\277\247\257\255\204\326D\303?>\242%\244\235z\301?\274\210S\252\262;\250\277N$\361LX\360\261?\224o\r\234ar\250?\231\021\310V\237*\253?\217\023\252\306\2263\260\277\212\t\372~\352\n\304\277\032\306\216\313}\025\262?\242\177K\271\343\213\230\277f\257\247f\035\340\212\277\210\243=\273\001\024\232\277\344\253\3652\363\342\222\277\331\364m+\n\371\260\277\367\317\222\003\006\306\264\277\211!\210\271\314h\303?e\220)\371\224\n\177\277\254z4\020\226\324\303\277\371\371\274[\370\371\316?\376..\276\305\333\270\277\177\366\021\022\221\354\265?\224 j\2452\005\260\277e\307\245\0200i\274\277\257\310$\003\365\252\240?\2339\236P\230\010\273\277\334\260]\030!\237\317\277\234K\237\3009{\263?p\341\273\332\017/\237\277\366\344q\301YA\307\277\324\035\310\234\3660\302\277\2176\037\366fk\251\277\343\352&\2472\036\275?5QT\365FR\271\277\367=\207\203\232\314\245\277\200\363;G\035\313\211\277\304x\263\214QC\263\277\361\002\006\254V\"\276\277\374\362\343^>\220\253\277.\327\r\r\003\021\245?8\212\r\236\006\363\303\277\362\357\021gk`\300?\377\001\344\t\206R\300?F\213\207I\301\000\253\277\270BG\370\260\233\237\277{\020\373\002fc\303\277\014\343\251\2326G\300\277\241\203W\3525\370\275\277\216s\313\321\226Mr\277\243B\365Y\223}\265?L\337\312\375#\271\266\277(\306\017\t\273\030\222?\321\037V\331A\202\221\277\003f\330A\270\221\250\277\224\310\006U\021\373\261\277u\026/\020\017\205\256\277\033\226\323l~\331d??\307o\225\027\376\264\277o\313WqmL\267?C&R\264\206\036\200?\317\375\261\230\306\234\303?\314\354\2174\336\363\231?W\274\233\377\036\264\265\277w$\372Q\323\310\301\277\332$\232W\266\037\306?\321\256\356\226\357\331\266\277^\365\206\306\220l\223\277\025\312\\@\030\267\261\277\304b\313\312%y\223?\311\254.>g7\246\277\201O\3526\300\301\250\277\001\006\345\310\220P\251\277!\236\220z\257\332\266?Y\026\021\212\000\271\237?E\372\377/O\256\276?\207\346\346\255\366\222\265\277B\222\274\317\036\222\273\2770`\331\313\210\341\245\277\230\326\240aNw\257?\014\366\354j%0\312?p7\177\276\351\363\233\277\215\255\010Th\277\317?\017%a\320\255\375\301?\372\022bMH%\247?\221\007\300\375\316K\302\277\326\254,$Y-\276?\344\301T\336l\314\245?V@\021\005\035\222\227?\210%|D\371W\317?\246j4\247\022\273\301?S\020!F\025\213\270?\035\032\331\233\336\256\274\277\205\276\377\027\336\315\314?\027\227\265]\0374\320\277\216}lyY6\256\277\225+\240d\213\222\272?\366\247\203w\205(\267\277\224\262\206\206\275r\236?\373\355\007\017\254\253\217?q\255\327\231\316\342\260\277\263?!\n\022g\220?\363\3452\365\377\235\274?\340\344\272\317+q\313\277\370\264\244O\023\333\262\277\270^\221&P\300\247\277{\002\355\326\212\003\271?\322p\260\337\236\374\266?\362H!8`a\276\277!\345\022^>e\251\277q\010\261\272\0107\300?\200Ls\003i-\255?\265\211\303\013\342\265\220\277q\334.&\254\277\265\2775@\231\372\307*\251\277\035\241\264Ws_\211?\346\327.\233\n\357\260?u?,A\341\032\271?\356\236\307\r\003|\247?\3032K\352\002D\247\277\253f1\\cx\261\277\256\010\266\340\346]\263?1\361%\222H\t\264?\237\231\373;]\376\252\277\026c \206\340\340\245?\373\227\313B\r\303\262\277$n\335v\265\020\204\277\202\262\330\215\277\"\254?\211\337 !\305\203\242?\377 ?\252\330\237\310?4s\240\313Y\214\246?]\"\367\360\323\305\222\277D\030mS\356\"\275?\305w\200%x\260\250\277\216m;\034\340F\254\277\343|i\025\036;\237?\303\225u\316\320\275\300\277\036\333\342M?\323\217\277n\260\031\346:j\301\277_y\276\3107_x?;\020\313\314\221\036\271\277\324\343H4N\244\271?jn\024\270\267\245\231\277Dh \215\036z\305\277\252hM\321\0026\260\277-~A\226\013\313\212\277k\246kB\353(\306?\352\217\034\307U\372\226?\237\360\235>2\326\226?\231\306\tk\344\014\304\277\316\367\333\373#%\275\277L8\346\202J\327~?\231KK\272\232I\301\277\275\314\317\036\276\312\301?\225\217\014\020\256\030\226\2771\224\006\206B\350\305?\363:\314\241\272\222\242?\221L\355T\014^\303?\034\3646\277Wl\203?4\320\211^\3069\271?E\214R\303f\343\261?\007\2065\335\247\321\215?\330\017@\360\3040\242\2778\034!\221w\025\226\277\021\327\335\322R>\323?\217\267k^>\231\264\277!\204&\221\312\203\266\277\234jq\250h\316J\2777\276~\237\"_\312\277\361c\'}j\336\237?\310`\306\n\3135\241\277{\244\315\350\241\271\216?\026=\030\304\324\001C?\370!\201\"\r3\275?.Z\277\307\033\203\272\277\206\217\277u&\320\225\277!\247\357\375&s\260?\245\250\314\2573\002\310?\272\025\346\302\360\260\200\277\353U\327\036\016O\265?\256E\305\302\010~\305\277\312\332\313\n\222\013\261?\341g>\245yD\306?x!\365\020\363\373\261?\352\t\013e\322}\256\277\243\316P>\206W\256\277tJ\222\202\027,j\277?\360\266\262_\212\274\277\3400\2564\300\365\275\277\023\254P\372L\016\242\277\311\261\345\351 \273\260? k`\003UY\244?\321\257\354\311\245\350\241\277\n\315\312\3314\373\263?]\254\221\273\370V\214\277z\315\n\226>,\255??Y\232\327\211.\212\277\244\243|D\235\231\210\277\017\201Q\214Z\332\260\277QO\252\346q\213\262\277;#\317\205\336\017\254?\347P\215!\264\246\273?\274\325\221\232M#\304\277cP\010\270\333\234\225?\000R]{:\213\300?\367\222y\234f\342\273\277\333\3517\315\222\256p\277\220\204\217\217ea\242?\301J`j\340\031\226\277\271\257\230\221\321\217\257\277}\203\264o\363\026\220?\273\215\374\206O`\264\277\316lG\367\313\236\261\277\254\032\212/\340\305v\277\007\223\330\376H\277\267\277c\274\\H/k\264\277\374Am\367\233x\274\277\336)\241\3055NB?M\346H5\025S\274?\345\321\357 (\010\257?\367}\277\027\330\353\273\277\325\232\346\024\271\343\257\277f\030V\343Z\003\237?UWX\022k\014\307?\275\330L\350>\303\257\277DZ\031m^\361\244\277\3551\331\306v\244\217\277\234\005Zi\320\366\220\277$\331\240\372\242\023|\277F^\324\210\246-\260\277-\321\325T\374\020\266?\264q\317\370oU\300?K\016\tW*n\276\277\364\312\347\322\314R\244\277\341\211\037j\315\230\234\277\274\223wj#\334\267?\261C:_K\t\314\277\257\356\360(\242\345\267?\207\004\240\032t\272\273?\220\037\341G\276S\265?\0173w\247\363\303\216?9\237\242\025\372\362\304?\177\tO,\307\374\250\277\242\013\264\24560l\277\321\261t\005\364$\247?\256\031k%\312\323\267\277\266N~\272\034\372\223\277xh\215\360\375\220\305\277\274T\267f\237>\306?k\014\364\335\241]\262\277\212b\013O\251\223\251?\206AL\265%\247\305?\271\0252\247\370\311\313\277\006\2471g\260\370\266\277\242\2468~\345\177\265\277\311x\223o\330\271\257?E\016U\376\026\312@?arU\330B\346\216\277\333\003a\203i\371\201?\205\346\215\332\017\343\265\277\0327\224(\037\252\313\277u\305.\232kF\307?\264\027n\332\211\231\331?r-s(\376\334\266\277\300\201Jv\354\034\274?z\345\236L\365\325\231?`\226@\246\312\025\231\277\265+\302\212\355\262\233?\260\371\013\020\037\316\312\277|\310(I\341_\276?\315^Z\2437\033\244\277\304\351}&`\010\302?Q\004|8\216V\267\2770\324\334\203\351\254\261\277\312\222\002\325\346\245\265?n\340i3\007{\226?\245\263\335\314\003(\250?\320pNr\303\377\211\277\377\240\342\030\341\000\251\277\234\205\\\226\340\204\265?B\360\207\364\010\345\220?\374M+\222C\020\265?vN\275h\263.\213\277\325\271\371\n\267t\232?\tl\216Ir\254\240?%\306x\232\217\320\275?\277\237\245\212&Y\274?\215\307\250\342\020Ts?\310\323x\033b2\300\277Dpv\315\313\253\222?\314:>\23755\266\277\037\231`\331\275\021\242\277\205r\302\370:\327\272?bZ\323\257zB\236?c\364@\231T<\265\277&A\261\272w\023\313\277\377T\245\254\000\257\213\277\344XO\360\362@\265\277*\033\013Y;\242\236\277\013\261\262u\032v\276\277\376\332\331|\027\366\264?\2257o\244\365\366\225\277\244\2640 ,\204\277?q\346\264\036\317?\302\277,\3314(l^\326\277ut\243#\374\364\263\277\006:o\022\216\006\300\277\316 v\232\t\316\311?X\013\301&\363!\267?\n+\366x\"X\237?\0316W\271\213\260\270?\235b\301y\323\217\273?(\002\316\265\352\252\204\277\215\272\236\206{\216\216?\000c\253\026\020A\322\277w\"\204\270\024K\275\277\261&\250\274\375\252\211\277\366\214\000\226\234\\\277?\025\036\236\354=[\317?\206\007\342{\333k\275\277\353|\304\340\214\244\306\277U\231\244\266[\330\322\277\206-\363w\221*\266?\336Y\266\322K\177\306\277_\207\234\253\033-\261?\302\322Y/\016\355\311?L\262\364Md\204\237\277\300\347\225\243\305\201\302?\007\261\255\027_\341\271?\213\327\0319\"\023\265?aT\3548\004\034\265\277v\327\005\346\371\352\306?\315\005]*\261_\212\277\210L\000\274\346\243\234?\245PCZ\205,\262?\037\t\2527\2313\325\277\223\024\333{\211\257\266?1\244\327\010\2401\302?A\212\365\371\035\221\212?D\265\302Rw\030\255?\255QT\030\213Z\260\277/\355{\260m\223\266\277\373\177\2162\325\315\304?\001\024\217a\3405\255?\245]\236|\263\333\246\277\220\374\004\205\247\035\233\277H\370\347\364\334I\320\2777\242Y\2165\260\273\277\210\276\026\216\254\263\251\277\334\n\211p\206Gu?]o\"\234\035G\210?\230C\265)\274\013\302\277\247\332\250\324\225.\302?Z\251\213\312\3328\235?\306\311i}P\235\250?\027%\000m\254J\223\277M\211\240\377F[s?\342\221\026\327\304\350\310\277\365\021\224\241\361\360\300?;V\270\345mM\243?d\311\372\206\355\226\300?;\342\353`\272J\223\277S\006\304\363\374\275\255\277t\326RTSY\313\277\243\231\211\351H\220\255?^=\255\216gU\230?\007_\202\034\311X\255\277JYl\330\266 \241?m\376\367\362\233\034\274?7\205\250,\250\226\220\277\000+\004l\357\251\236\277C\253\242O\n\030\277\277v\232w\212B\017\270?Q\331\321\237\207\222\320\277R\034\177b\213b\302\277\333\246\020\370\002\261\243?\251\020\344\235|\320\301\277\302\006\021\020\3721\242\277\231\330J\347\200J\261?\330\317a\243O\321\265\277>\003\"Y\300;\264\277p\017\320\020&\214\311\277Og\377E\377\335\234\277\313\177\033\222\340J\235?\211\277\t\005\231\372\313\2771`\n\336\207\272\262?\376i\2574\006\200\271?\252\242\241}\005\225\312\277\3602\370dg\327\253\277\276\367\n\364\376y\257?\302x\371WV7[?\345\224\331\3374\315\254?^|U\006\223\343\226\277LP\006\240A\'\246\277\202\334J\370kU\266\277\311\326c:\343\250\304\277\247I\247%\3077o?\277*\301,\303>\253\277\001}\375LIG\261\277\217\020\244\260Vn\274\277a\263\244\252-\265\254?:YY\017\177\372\264\277\366P\327\363\252\337\246\277\215!N4\343\333\205?\241\235\025\303d\r~?\360\252?[\327t\241?\271\212S\361\001\326\270?7LS*\357%\245\277\247\343e\243\2634\246\277<\002\326\0107\213\316\277\3727aqQ\236\242\277\037\030\327/bZ\213?T\265+=\3264\236\277OB\032r0\201\262\277\222;Ms\267\250\302?\201\324Y\216\313\330\264?\324\nZ\371\001\345\274?lz\253\202\345\342\251\277n\241\256\005\225\361\302\277)\221q\236\231\376\261\277\213\237\010%\010\303\272?\027\271/m\2042\261?\t4\261I\362a\260\277\366\217\244\371*\342\313?\243\342:W\227\007\256?\004\331\367\3729\226\244?P\200N\222w\342\320?CL\363Fuk\265?\366\273lc\274#\247\277\024\371\316\334\265a\216\277B=U\020j\007\244\277\346\001;\007\245.\262\2775\352\324\2230\021\222\277\374|\324\254P\354\315\277o\333\365\202/d\267?\206\221\255\360\327\361\251?\347\275\343?\3249\252\277wN\376\233\345\314\254\277h\255\263\202\213\236\301\277\313\223G\363\241\322v\277~G\263\315\010\242\275?\232E`{.\325\260\277;\341\356F\240\204\227?\037\276c!\'\321\200\277\237\204\013^\304\312\300?\341\241`\215C\250\264\277Q(\277\372\t\227\300\277v\266\374\216\351\223\205\277\223\212D\236\3517P?v\"\205O\307\301\273?\340\212\272\231\362\317\256\277\246\351]q\317\322\263?\270\261\2100.\220\260\277M\347\276\242\217\275\224?\027\263\273\233r#\320?r\275\265*\210\302\304\277n\357\277\340\201\260\240\277q\233\331V\017\026\252\277u\371\257V\360\361\316?5O\263g\226\333\256?x\315\021\2122\374\223\277\260)\0337\3309\313\277\202\303\300\270d\203a\277BSU?\237\221\300?\035\313E\016\233\235\244\277q\010\344!\274\243\261?\372\344\301;]\007\223\277l;+\360\001\353\241\277b\345\204\300\232k\220\277\023:\323\311p\033\270\277\351\001\324Z\204\260\251\277$\247\352\261>Y\307?aLL\214\325\354\242\277\341^C\276\370\371\244\277\341\373\350\301a\227\245?Mj\213\266\274\310\256?\207j\204\030\312D\212\277\025d\205\320t~\240?\345\347\265p\377$\266\277\250\356\027\363\342\265\301\277\370\013\347\365g\n\267\277\200\231J\0275l\246?:\372\310\332\361\274\275\277\267\363by\226\007\233?\311\245\322\254z\340\272?\261\r\204/\315c\303?\263\324z\364\241_\264\277Y-eZN/X?\313\377\\\034\355}\257\277\320\376\340\320\224\255\302\277;\223s0/(\271?\244b\025 $\344\260?\315\222\350\335V)\234?\331\\\312\002\365\261\301?\332\302\016\252K\251\227?\355\226/\224\355\027\221?W?\005\276bM\274\277O\313_\245\024\016\266?\r\3302\026\264\344\314\277\2441\366\n\006\211`\277\347]\377\244e\320\317?\246l\223\317\355\223\263?\322\247\241\224\025\037\242?\345\264\177\271`\363\214?\253\"\252\242\263\023\271?Q\031\361\204!o\232\277T\021\341\342h\206\275\277%t|\341D\370\265?K\340\355\3460\316\203\277\217\211I\366h\206\271\277\366\313\372,\2222\303?\350\266\010\2324i\267?e\251\225\014n\214\311\277kj\020%4\177\327?l\334\014\236\177\262\242\277\227l\367\261\006\207\260\277\223#\330\262-A\301?\205K$\223\005}\226?\007\"\016\014\371%\303?f\255.\253\375\272\263\277\341\372\266\301|i\206?\334\224w}\353\324\301\277t\322\226SL\355\226\277+\207\013EN_\226?Q\026\261\r\271\373\322?\240\2239\220+\365\250?t\350C\350\300\236\252?\000)-\272\275\367\242\277\246\305\361\200O\002\306\277]\343\331Y\274\210\242?\275\306\332JO`\300\277\3041Z\363x\357\253\277\277\254\337\344\020D\267\277C\357\323\256\201\334\227\277i\210\211&+\363\267\277\246U=\217\321\267\237?B^\350\216\\\217\257?\230d\347Ps!\202?b\217\361\253\013p\227?q~\204\345s\371\203\277sw\353\201\366\256\221?\363\254i\367\366R\270\277W\210\251\277\035G\217?\227\n\235\\\207]q?\343 1o4\336\302?\350(\371B\027r\274\277\246C\t\327F\305\206\277j\032\035\226\3163\247\277\310h\361\217e\224\300?\316&\305\270\305\203|?;\253\253\231\312\241\222?<Dw\250]\227\260?\t\017\027\037\313K\271?\310h\006:\302i\247?\021\376\242\223)2\261\277\237\213\243\177\273\302\307?\317\\S\341\332\312\315\277pt\025\3415:\235?8\366\262+\252\232\215?4ec\327\014K\247?\340\377\247\364%\246\257?7\304\301\225Q\364\246?VSU]U\364\310?I9\341\262\253\240\226?\024\007sd[\203\261?Z\231$\031\266\030\262\277S\3118\242\331\377\266\277\325N{\024\001\335\267?LO\332\002g\214\242\277\251\037\'W\337\217\261?L\024\305X\252\220\\\277\316\"\342%\272W\227?\r\301H\215\346L~\277\016\370k\000\033\021\274?b\327\265\\\344\334\257\2778\254\317\375&\220\261\277\266{\336H\232\010\310\277\243\300\267$\020N\305?R\257Yw\355;\243\277\235>\352B#IP\277\023\2467\344T \272\277\257|\010{Ql\274?\371\335\330\376\236\372\224?\000\375\375\032\025r\251?\276-}\232\356\373\306\277/@C\323\336\036{\2770\325\366\2422!\266?e]\254\010Lh\254\277\033\305\331\275e\n\204?\363N\271\300\370\365\232\277\252o7\223\352\242\306?\317\224{w\251\373\243?N0$\302\232\205\271\277\323\315H\036\325\224v?\010m\024T\315\023\234\277\206I\275\003\357\214\274?u{|y\013P\311\277\364Q\303\370c\220\260\277^\261\022\203\r\274\322?\345\257\272\006\310\241\261?c\207_\205,\360\260?\346\314\220\343\242\245\235?\263\n\2245Rc\251\277ag\325-8_\253?&?^\374\213\306\255\277H?}\376t,\265\277\022\200q\242\"\340\275\2776y\340\244\032\367\232\277\331HcE\251\315\247\277\274e\315\264\313\016X?\246\327\001\362\333\304\235\277\377\365!\301\363\301\234?@u\371\\\'\004\324?\230\240\005\032\277I\205\277)\263\252qJ\016\267\277\245\014\232)\013\327\267?\332i\367\313\255\024\267\277S\372\036\017\032)\254?\026\304\r\200\366n\250?\240\310$\336A\341\263\277\201\204\0359-\270\265?\016?\324E\353=\204\277!\270\006\300v7\321\277^P\034\244\020k\264?\203\225\2178eq\247?\366\275\0367\307p\307?wo%[\230\312\247?\221\267bg\005P\257?\331\276>\031C\346\263?C\354\353E\2721\302\277\333\266\013\320\371T\267\277\227\236\230\3700\251\256?\302m\"2d\315\221?\252\331L)\302\322\310\277\235\337\362\375\251M\272?s\315\344\360cV\227\277\313\223\362\236J&r\277\277/\334\200\205\315\231\277\367\244&\254\224\376\220\277z\272.\360\r\003\272?\013\243N\247\303\272\271?ll + \261\235\277\244\330\026z\256\022\215?\032D\235\356(\261\300\277Z\t\031\007\025\022\245?\177\313\024(c\266\207\277\307\021\202C\001.\263?\361:\310\305l9\230\277m\200s\350\260\255\240?\322\236\225\232\325\363^\277\2743i$\217\213\306\277\201`\345\032fZ\305?C\322\230\343\330E\251?\257\034\266\263>\244\304?\226)O\002\274\320\304\277>\"X\262 v\240?Q\216\367N\0254O\277\353\3723v\316\210\300?\216}v\327\177\022\275?\337>\344>\336\354\234\277\037\353\261 \234\250\266\277,\260\216\2109\241\250\277x\212\362O\254\363l\277\0336\261\342\037\323\240?\203\3745\243\361(r\277\t\200\321\221\327\212\255\277of\026\350oZ\265\277\202\356\013?\343c\305?7\220\260\316\353\327\267?\257\313\025-\304\020\267?\255t(+\007\305\260?\275h\243[U\310\272\277S\365\030\352?Y\302?\263v\262\301\225)\250?\301\346\210\001\300\262\310\277\262\rE\362\264\377\325\277\034\3532\231\315\243\242?{\033\027\366\255\360\240\277\t^\366(=\215\264\277o\251\246\374\256\206\320\277F/\001\303\307\272\322?*\243W\343\242\350\247?`\020W\365\376\230\304?\021\375\266\354(\220\267\277\322\274\347\254u\356\261\277\374\306U\217{)\320\277\262\372\260q\201=\313\277\264/~\267\212{\272\277\256%\312F\210\336\225?\013\370t\3728\005\260?&[\237O\227\275\240\277}\006\314\234\331\375\234?\306\365\006\250\007*\265\277X6g\221\021=\223?\277\r\342\344\334\307\245?\0006\332\251\341\246\314?[\326r~\277~e?\371.\247H1\263\235\277c}Q\177Bj\215\277\tq\352\361B\355|?\216\036\334\265\3142\200\277\315J\370\001\257\370\246\277\277f\272\030\306\232\274?eb\30428\004\266\277\003\264\204\245\365W\300\277\033m\326\373\t\264\263?\244\251\n\264\351\002\320?\315\000\313\364\366[\275?\017P\006\231-\022\306\277z5\025Ck\215\256?s\2160\002\303\237\272\277\242<\'\217Xx\261\277\025\207\273\372\027\324\303?=\272\226\\\256\322\270\277-\263\311\262T~\253\277\254\\0\356\201\r\250\277\302\336\223\240\002X\321?Y4\314\352\305\211\306?a\231\310\350\307jG\277\2575\200\"\324\005\231\277x\245O\033\016.\303\277\333\2445\"\t\351\305?\370\202\331\204<\274\274\277\262_F\261?\033\270\277\222\273\274\241q\030\241\277\230C,z\315\322\227\277a>>\213\234\\\306?\364\'\314.\272?\240?\247\rD\375\356\010\224\277\213<\217\023`T\266?\220a\247\367\352+\300?\230\343\373\177y\033\304?\264\253\205\207\347\220\254\277\204<\331\255\271Q\252?.H\222\251n\304\206?\311\237q\225\204\207`\277\323\004N\357\035\026\244\277\023O\246\364G\226\254\277\332 \373M\204\333\262\277\350u\024\2500\361u\277\345\316<\247o\r\264\277\267\255\237\n2E\261\277\272\020\220\227S$\271\277\350h\300\362\260Y\263?\234[\265Z\242\206\320\277\323\346NH(\024\276?;\265\3409\263\330\245\277v\311\021\367\216u\200?-\307!\237\311E\265?\261\332\22437\230\241\277VLD\235\215\227\264\277x\305\360EJ\272\260\277\257\303\264\361\357\253\315?\n*\377\233P4\266\2774\022\251\'tz\232?\302\025\022B\210V\312?\325I|C\266&\307?\224\372B\227\203\364\205\277r\245\260\352\271\330\244\277\020\305\030+D\254\253\277\206\226i\377X\r\263\277o\227\010v\213\006\226?\024!b\217\260\020\241\277>\371\032\345\361a\203?\350b\021\t\360t\252\277\200i\246\272i^\257?\353\245\271\350o\210\315?[C\232\004\211\243\205\277\223\343\360%\262\006\233\277O\247\032q1-\240?\246\341\345\020C\020\266\277X\217\230\2777ba\277\244\201\272A\014.\275?\366\275\341b\370=\261?W\260\272\267\002\353\235?\023\205>\310\006\374\246?\336\033x\031\332\366\257?\353/\251[?\033\272\277q\224\034\003\314\347\276\277\210\366\211\026\316C\256\2774\234wV\315I\304?\217~\2430\027\034\243\277\355\276\266K\021(\301?\205\216>&g\233\252\277\021\270\323%\002*\225\277\341F\212\031\226\226\256?<N\371\"\326\342\266?\236\300\201\257I\266\302\277\300IRVx\312\212\2771\373-\2261\022\242?d\342\005\377\372#\221\277\371\030l\276\330\253\263\277\325\3265:bYw?4l8Yx\024\241?o^\256\031I\355\305?\232.q\356\212\203\260?\245\335\346{\017x\240\277\277\207\376\221\341w\237?\315\234r\035\303\201\256\277,\257T\332\231\354\236?}\036\313\252_\245\277?\324\214\323\301\327\331\214?\004\255\256\340\323#\251?\354\250\203ptM\246?\350\234\332L\364R\301\277\304l(iZ)\267\277\265\277\332\000%\354\264\277\221\016\0279V\245\300\277\013#j\333\354\217B?\320\332G\356\037[\265?a\177;Q\313x\246?D\035\373\362(\322\250?\017\223E\311,\301\262?W\267DpX\014{?\366\332\361\300\213j\254?o\021:Q\365\344\241\277\201\203\037\261\n\307\201\277\231\"\204\'\013\317\212\277\234\234\247\307\016\024\225?)V\004C\220\206d?\364\262\375f\356\273\227\277\022j\025\334=\244\307\277J.\314o\376\221\276\277\254O0e\202\270\263?\024\007w\020M!\224\277\342{\317\000\025\276\246?p-\321~X \200?G\257C\246t?\223?\310\240\265\274\276\356\302?\364\201\312pb\025\240\277\273\263\372\t_,\241\277\317\254k\363\tH\305?\325\311\376\001\033\323\302?;\310B\324s}\301??G<_|\322\245\277\0267\346\017c\370\260?\300\216\346\350\272?\313\277wP\014\260\356\274\260\277m,<\026q\255\253\277\305{\355 \300\025\265\277\325U\275\026\215\374\271\2772\321\226\020\245\021\270\277c\276Px6\375\265\277\315MM\'}\325\240\277\373<3\345\324\356\251\277\300\216\342\025\262n\247\277\033q\346,\311\357\227?\214n\204\277Zz\207?\231@\221>\277\322\245?7\377Y\212\263\374\267?\265s(T\331\274\266\277\343\320\3011u\374\302\277\013y\"\216\025\374[\277\322\352\270v\327Z\213\277l\320\277\202S\276\260?\023\363\211y[\251r?\311Z,\353\253\022\217?\006x\347i\321\317\302\277\376\220\037h\333\224\272\277\370\344\263\2527t\231?\354m0vB\266\300\277\327v*\035%z\247\277\212\332\311p\205x~\277\302\227\021w\201\205\247\2771\006\020\350\025\255\267?l\002\220\237e\375\243?g\272\267g\334\233\272?*c\373\307/A\267\277\340\316\270\272\013v\266?\255\333\013\317Ufo?-k\353\370\373\373\243\277\020\024T2\"\342\302\277\223\007\370z\024\265\245\277o\321\221\271\2705\267\277/\001\330FE\316\251\277\0269\005\202y\205\306?v\353\225\354[\255\265?wC\356!\366K\305?\323\225j\022u\365\241\277\325\231_d\364J\266\277P\005m\"\240\024\272?\257P\367t\310\001\261?\371a\326\351\353y\314\277\270Ih\271\277G\231\277\027{\201\342\353\017\273\277\'\336on\230^\267\277\272/>:<\203\227\277\001\336UW\303\310\200?\274?\346\2643%\300?\022\236\010\373*g\262\277r\360\202\n\202\343\212\277:z\374D\274\322\307?\213\256r\264\323\272\273?/|\014\207\244U\221?\004\263Hw\366\252\301?o\322-\377d\246\304\277W7\264\312\374N\251\277\177\272w\331\300`\260\277R\354\021<\263+\261?\257\203\354\361\220Q\242?\013\234E=\322\376\204?\2464\327\224\342\340\260\277\215\334Z\253;6\314\277@\244\231C\021?\246?\336.\004h\244\340\207\277\350\020Z\2468\311\247\277\225\177EI\020\307\320\277\353L\263\347\213\214\226?\307va\300\305t\256?\007\322\277\017\327\260\265?\026\263\324Evd\243?L9k\276\374Rx\277\305\021\330\035\303w\274\277\327\270\225K\253\n\262\277\022\260\330(\371E\235?=\032:\303;\355\273\277n\312h\005\'l\251\277@B\217\027tX\232?\226\341\333b{\337\256?\373\324\215\343\234\003\240\277\216\250w\236\325\250\276\277l\001&n2\267\261?o`\373\251\371\264\227\277\254\320x\014ee\260?\201\306\203\333\362\006\215\277\314`\362}\226\270\273\277U\220\353s\202\023\222?\302\335\324ET=\312?]z\354\361o\021\240?\022\332p]H\003\270\277\222\360\211\246Z>\277\277G.;>P\275\274?\000\017\231!\272x\312\277\326\014a\362\257l\277?s#yK:d\242?\215\177\370\2171\233\275?\316\002\236\006b9\300?\314\230\276\225\242\240\306?U\371GyS)\300?\031a\330;\244&\261\277lg\275\367\353p\267?\343\023\016kE\025\310?\007{\252\261?C\264?^\227\256\326\023\032\310\277\347\300\342\251\244!\261\277\310\\\256_\256\260\230?\001;\310\207 m\205\277\037d\022d\345\212\252\277\223\315\202&a\333\326\277\251~pM\322\366\252?3vT\236v\252\266?!\335\316\233\315-\267\277\334eF\035\013H\223?\226|\017\013(\215\232?<\257\214\224\256\025\302\277\2233\260\030\217\t\273\277\021ff\223LY\215?\027\367n\270O\241\277\277P\315\2357\226!\325?`/\000AK\303\246\277\2040\224\2716Gw\277\245\256\314\001\236\224\241?\246\354=\207\033\006\261?s{\322;z\035\243\277\006\221\225C\033\377\267\277\034\313\367?\267\312\320\277\213Py\027\221\200\213?\307\204\006\235\221Q\252\277\251\352\342\335\306\206\261\277\353\003\033N\372;\306\277\304\355\022c\266C\221?N+\013-S:\261?e\3553\205\323\025\234\277-\273V\302P\024\231?L\202\274HB\211\264?\350\316\033\243\204\375\252\277\364\225\247\206\201>\267?\350#d\342\340B\247?\373\025\036f_el\277\354Nz\367\252\235\262\277\t\235{.\267\261\221\277\232\231\025i\033\022\231\277\0250\225\320\276\375\267?G\234\357\325\232\r\262?\366\005t\005+\004/?@\223\375t[\025\265?;}\222{\240\353\320\277\"\352\343\341a{\267\2778F\317\364\250\223\272?\025|\350\207\247\223\223?\373\3553\354\270\324\222\277\217\211_\254^\007\277\277K\365\032}\217y\266?y\351\242%\311\006\263?u\003\356n\250\363\270\277\177sux\245i\245?B\321\246\035.\243\254?\\\346\335\tH2\276\2774\023\034ba\305\217\277\272Lj\350\235\214:\277*\034\276\331\350\345\302?\230\02466hX\240\277D\274\202tu\222\302?\201\251\262ft\302\252?\271I\222\274\362\262\262\277\235\025~.)I\272\2771\001g\374\342_\272\277E\2219\235\367\346\275\277\246\313z\261\345\217\321\277\370\357\367B\262\313\242?7a\266l\203\034\276\277\231\315\327&J\001\223\277?\002%|\270Y\253?\336\240\273*W6\222?}\255y\267\367.\302\276\347`\217K\025\365\273?Zf\017\017\036vj\277Pm\267\270\003V\264\277X\035P0Y\307\246?\r\315\034\006Dv\213?\214NB=R\214\265?\301\200\300\001\305\351\273\277\247\317u\'\362\307\266?\230b\206\300\301pT\277\013\301\307\373k\r\257\277\'\010\020>\255\263\211?\032z\212\t\220p\301\277i\351\267\372\306\357\266\277\240\r\210MZ9\301?Q\037\226D \032\200\277\333\233\2139)w\300\277\'\266\246x\0030\263?\022uw\240\345\271\244?v\256\201\373\226\204\242\277\317\223T\346\254\021\272\277\\\354\'0\230\035\251\277\250\241S\006\245\r\273?\363\3113g\275\203\220?i\254\373\025Q\203\234?\267\207\030\r\3377\260?;\311\r\323\261^\200\277\204i\354\362\2056\253\277\352\375\357^\227\034\245\277V\237G\n\306\372\270?\325o\263O\212\026\314\2776\213\034\0224\207\253\277|+\263\')\302\321?\315\243\270\004\013\264Q?\0209 \2042P\255?~\374/\017\307\223\272?\030H\035\262\033\344\267?\035vg;8\243W?\261\3664\331\\\034\276?\331\247e\253\3038\276\277F\331\376\314\246@\265?us7-\347@\261\277\225%\001\330\345\200\265\277\201\307\374}\177\010\223?$\t<0\336\205\252\277m\366\314\364R\347\261?H\t\'.\246\347\322?=\232/\224\202\246\265?7c^\r\374\t\213\277\316@e\014F(\223\277\320\321b\246\3345\317\277\335\325\220\325V\030\274?\014\357?\274\003\335\231\277\300+\232 \023\367\275\277\336f{\010\000>)?\356\242&\303\252\226\255?\322\016dP\017\004\270?\247\336\363\231\267\316\220?\0361\326\272\365\023\237\277\017\235\241\267\273\263\232\277\022\270\237(\253\227\277\277_\270\330gYOy?\207\344MY\373`\261?\303\263\nn\n\317\276?\343(;p\372U\314?@P{\370\200+\262?\0168\231\340J\210\264\277\006\002)k<\231\330\277\316\303\220\242h\221\257\2779&v\230\250\216\227?\000(\3326g\255\216\277\360\020\031J\0347\246\277\376\245\373\023\002\240\251\277\225L\253\030b\301\216?4(\371uo\245\306?\303\234\030\230\252\232\247\277\374\347N\221\007\305\251?\340\177\242\335X\356\247?\344nY\336\311<\300?\322.t\325\225\356\271?kt~\355To\214\277\252\3015mC\002\307\277\031%\341\240\215\274\251?~~\277\307=\237\272\277\023L\023\347\023}\312?\232\005\377\214\305\322\265\277\n\224\320\004\023\224\252\277\364\340\250\005\365@\267?\320\251\374\336\234\233v?\031\n\025YCK\211?a\317\001)\004]\300\277\236\327\255\227L\030\320?\026\"\025\204\020k\223\277\254\241\\\300\202U\256\277sj\204\327$_\263?\241\034\243\205o\235\221\277\365q\230\r\376\341\252\277[\265\024y\325\233\260\277b\251\306\361MH\307?1\n`\366\\?\300\277\204\361\227\367\324\271\256\277\242{\230Y\215(\274?\224P(\205\021\256\310?\214\374\016\324s\200\263?na\022xG\241\272\277\231\207\221\271\345V\241\277\244\256!{\347\374\262?)T\372\346\343\305\240?\276$\237\024\267\340\256\277\220>I\365s\225\240?\212}\254\256\214O\261?7@\237c\351\345\250\2777\255iz\252[\314\277\360\261\221\313\245~\204?\276\355w\335\272@\301?8\236\333\342:2\265\277\265w\030\320\340\337\325\277\205\312\366\301x\233\273?\177o\333O\262v\273?\201\305-\337\360\307\310?$sl\353\312h\250?\317\357\374Y2\256\243?D\336\327\344\3604\302\277\272\224\256\030..\233\277\2548vE\310\020\227?\267?\233\360\321Y\214\277 \333\371(\030,\300\277\240\r$\"\034@\242?\027\007_*\226\037\267?\252_zL\306{\243\277f\312\367\002\210\204\241?\020\2219\3753\n\201?\321\267\027$M\262\235?\227\222cxB,\275\277\321#\2626\207\007\241\277\226\337\303\372\210\337\270?\366\307\325/\022\246\260\277\022\365K\334\025\262\220?\210\230\245\360\366\370\251\277\\\"\227\020\026\360\243\277\203%\312\353\310\240\240?\200\342\362\373B\343\177?P\n\231\277\242\201\232?+(\361\271\217\002\265\277\300\264\342\232n \303\277\234\2772\0330\221\246\277r\217`.W\250\266?K\t\2168\352\256\303\277:`Q\311\257\340\261?Dv\322\233\346\014\257?\327\025u\340E\032\301?\352\351!\326\206b\306?\014\3429xH\032\257\277\307/\265\271~\314\261?\222\017x\261\220\365\303\277u\030\006\036Y]\272\277+\320\361I\275\373\277?t\362G\232~\324\227\277,}\024\202>|\273\277\014\340P\272q\257\264\277kC\343?\273\346\211\277\263I\324[\321\264\276?\031\366\323\177\341\214\242\277\242[\312ex\274\226?\212\030\0005`\355\244?\300\220\322\246e\\\304\277E\177\242\305\"\032v\277\232f\335\270Oo\300?\314\277\352\214\"\263\311\277>\313\004\311B!\302\277}\002\376\215@\000\272?\203I\256\306\346\260\253\277\362C\247\372\201p\301?\333=.w\255\000\214\277.\367\':+\375\256\277\3633\316;\320Z\235\277\205\360b\362p/\241?\264\366e2\244,\222?#zq\217\274\033\264\277_\364\371(\241*\237\277\021\271eGly\312\277\t\340\020\\\251\030\312\277\t\242\014\271C\330\237\277E\315\247E@E\315\277{\324\370wfW\262\277\305c\364\'t\236\315\277W\031^\277_F\253\277t\n\022\215\245&\311\277\022\334h\304\247\247\257?\207m\206B:\276\316\277y\327\347\005rT\272\277:\230\023\tq\370\261\277S\370\n\250\262\237p\277\373\207\002\301g\023\311\277yP\246\r\374\307g?k\031\313\036AH\261\277\226W}mV\t\301\277\310\277,R\205\345\262\2777+a\\\326t\274?3@\240\rZ\370\266?\313XJ\203|\235\310\277HR\001 \250\252\245\277O%\213\020b\207\261\277\305t\020\216\340\205\241?\010#\007G& \245?\251RaI/\225f\277\326 \346\324\236k\240?\305l\263q\217\236\247\277:\2006\205K\272\257?.}Y\336y\351~\277\305\020#\261k\036\201\277\235\217\334\260\362q\272?\263\225\217k9\350\274\277\353\010\232i[\200\315?D\254\353\314f(\253\277d-\342\036\334\274\263\277;\246\244_\177\014\256?\263D\202\221k9\210\277\304\206j6\226\264\305?RH\263lgI\276?I\026^\241dw\211?\231U%\220\351\256\275?\334\025\016ls\314\271?\366\205\263\362o\205\222\2779\241\177\'\356\356\300?\026\244\360.\252\251\271?v\036\336\355Q\367\262\277\005L\330\177k\265\267?^\220!\013\366\210\321\277\244\020}r\004R\243\277e\350\304\337\021@\272?\025\324\003{f\033\300?\022\303\335\204\210\244\274?\345\362\357\010\243\333\233?\027\355\301\260\213\363\274?/\315\007\342\t\276\300?\226\023=\274\221\301\246\277/\001B\023\365%w?\222\344\345\026\356\244\301?\235\254x\2223 \231?r\2511\004\035X\311\277\244\245, \275\226\273\277\366#ZU\030\236\310\277\013\205\023\224C\254\210\277{\340w\223\256\252}\277\'u\206kt\310\304\277:\003\241\341c@\302?C)\332\336O\263\225?D\030\254\0167\246\255?\251\244\005\202g\350\310?\"\313z:|\024u\277\332\325\216\3325\340\215?\313\223;\304S\n\266\277\255A\236\320\336a\263\277\024\256Z\307<b\251?Ik\317/>&\257?0/\006\224\255\"\320\277\321|\373dJ\230\275\277\236\340\311<k\000\262\277\314\307S\270\007\272\273\277\250\003\035)\245<\265\277\264\317\226\300\n/\206\277\321\r9c}j\226\277O\177q\262,\201\225\277\033\226\330\023\'\304\243?b\347CK\365\363\262\277,\000\010<\311\214\276?\304\026\352,N\203\203\277N\342i\332J\004\242\277rp\241\"\201\356\301\2779\363G\223?\355\272?D5\252Tf\240d?\331\304\0314C\340\241\277\347\367$Y;\001\232\277\335\251\272O\223,\276\277<\253\316\254\211.\253?\220k\261J\317\333\230\277fD\224e\025\242\300?\361\367k\267F7\261?\223\226l\003a\363\253\277di\246F\370]\255?\177\233\035\302\210\344\230?\215\314\210\261\315~\255?CY\235\244\341@\302\277\216\373\312#\242\254\251\277\212N\310\027\234^\273\277\270\213\216\313\206\327\255?\347\270\031t\306\257\267\277s\311O\227\034k\262\277x\306]\026^`\267\277\246\373\374\2248\345\230\277\274Z\200\010\210j\311\277n8\260\327an\257\277.\3643\345\004\322\234\277T[\t\211\360\367\321?\025\360\342\030\312%\300\277\247L+\006QY\304?`?\030\301i\300\273\277\233\233\276 H+\305\277\257T\267\305X\337\274?\223F\347L\001\005\300\277N\206O&Z\373\275\277a\02146\333\302\246?\3103>\267\262\243\226?L\232\263\331w@\243\277f0\353\365Q\023\211\277\242X\332R\037/\202?\361\313m\212F\206\252\277x]}\257J\336\272?\271\177\016*:\021\221?\355\000\341Wy\027\235\277\343\3442G\215\357\257?\201\351\222\353T\276\307\277\347\223q\t]\272\220?\372\024\216q\276~\272\277l\036!\3604y\314\277\321\330\343+\223\372\264?\374l\370\267]\310\225?\3342 s\327\215\265\277-\356#M\326\334\240\277a\306$\315\t&\213?t\303\376C[\250\300?\241\241\207\364\340\r\321?C\312\265\301\310M\254?f\266t\"^\033\306\277\205Sf_Z\224\213\277\216H\252\321!\344\261?=g\020\307\263\317\240\277\025CK\277\376\013\273?\021\036\307\202\350|\306?\351\207\233\216,\207\245?\250\315\351r!\273\247?YvE\224\342q\271\277\2632\261\264\203\354\245\277\265\241\261H\360\363\204\277D\005f\267\021\350\256\277.O\260\245\345\343\267?X\020\276\340P\014\243\277\353*\330?\325\273\247\277\2201\342\361\273Q\313\277:h;\376\"+\234\277\005\365e\023\246Y\263?\302\336\312\005OV\207\277A\034\3505b\256\234?t\211\200>\363\371b\277\214\263\254\221\322\347\261\277\322Z\205\005k\214\245?\337\031\327\357\250O\210?\342\246\026\3478T~\277\237\232\372\364g\254\225?\304;\177c+J\312?1e\311\267\340d\266?\230\372v\212^a\261?\224\006DT\n\310\275\277\213\353\307e\020L\333\277Z\340\240bR|\304\277\367\3376\005\372\353\200\277\002\025D\327\305\274{\277\022W\026\367\362[\226?\000\334\360\334\315_\237\277A=\373m8\325\261?\027\312Hz8|\276?\032\2520\221\363\323\261\277\230e\367\345J\354\231\277C\006r\234\316K\304?@\333\t\304F\035\226\277g\257;\355\000\216\275\277|\350\230\277\0034\274?\013\023~N\025\302\314\277\006h\'ro\307\267?\252\266Y\364bq\301?\010\233\211\331\351%p?\257\311\207\037\214&\311?YI\363a\r\221\223\2773p\367\202\322\005\274?\202BD\267\204m\266\277\261\005\353\004y\227\272?h\272z\223\276\354\245\277\177b\037\260\n\035\222?\026\323\342r\341\234\246\2770\241\243\3662\264\260?v\253\345\006\240PF?p\037\312\336\232J\270\277f |\302u\301\305?)[\204\336\377\205\203\277\016\340lJE\307\256\277$\311BP\201G\227?w#\230\351\234\314\256\277Z\323@\226\324\276\315\277\010\322\207Br\216\266\277~\342\314\233\020\322\244?S\034\024\231-\203\274\277\021\352\202\325\023M\303\277\350\203gc\230c\266\277\232\261\263}\3229\256?\212\005G\2628\036\265?:l)f\324E\226\27793d\223#\302\241?\370\0102*\375i\252?\256\323w\037\340\242\260?\266\023}\232\263\221\263?\207\204\274\211\205z\\?\222I\315\301\0300\223\277l)\324\230e\225\276?\261fC,\215\212\267?<\'\340\300\370\201\226\277\200p\322+D\207\331?\323D]i\223\t\222\277Y\225\2740\022\013\265\277u\221\017\030n[\272\277\001\267\336\334!\232\303\277\326\313\340\276\351\023\304\277^\302\037\233\036h\217?/\347\352\020\376\025\253?\300=\177\272|C\301\277PH\355w5\314\227\277\315H\241*\245\203\253?\016\302\327\363 0\311?\362=\\z\367t\251\277\336zk\326\335\377\210\277,\270\002\3055\366\304?F\023&\254\200\002\274?Zi%RI\236\315\277\332\337H\234\350[\235\277\374t\250+\343\001\312?\242\307A\034!\036\263?\253\2430\036X$\237?\256>\314\036\014\265\177?@\324cJl\363\300?\342\242\n$\355K\224?\242\266+*\210\034\260?\362\341\025\345C6\251?\022\370PA\301\036\203\277\304\340\204\252\"/\265?c7\277\017\027\330\314\277Y5f%\301\007\223?q\226\007\343\225n\252\277\014\223\026\320c)\265?L\351\331\002n\243\200\277\255\274\234/\001\010\254\277\021]\326\3318\371\257?\351\232\265\253\356\306\326?\251\334\345\224G\363\271?L\254;I\355\203\273?\026~nq>\323\253\277\360|\227v\225\232\246?\262\202}\034\006l\271?\030[y\253!\304\177\277B\253IH\351\276\277\277\023\016z\304\342\272\270?6\326\261d\216V\263?\220)\214@\246\r\274?\204\333\'\241\276\303\341\277\317\211\214\216\304\312\236?j\233\227Eo\250\311?\322\222\013\343\323d\303?\277v\020\336K\242\212?\241n\315\373\264\001\214\277\277h\373;\363\350\227?\265|b\022RTu\277A&-\332x\377\242\277\254\233\230Z\370\274\214?^\231\367]v\261\271?b\"\255\223\215\317\241?N\024G\306]\005\273?\2507\007gFY\265\277k\035f\020\276`\320\277r\034\004\017\"\022\244\277\371\002\341F`\200\302\277u\353\265uS\236\267?\235\2432`%R\316\277\227M\247=uA\236\2777\211\252\307\336*\241?fv\207\001\002\031\300\277\323\270\353u\370M\250?\356\362\304UYf\236\277\310\005\376\027\271\010\250?@\031\320\300x\003\265\277\'}u\202@\306\246?,\226\325\ti-\252\277\370\251\313\353\2017\312?\245\323\033\371-\237\261\277\253\024\350\370\037m\230\277\010?\310&d\311\304\277\005\266f!~\000\263\277\177\256\266\265\337\177\275\277\031o\246t\3541\255?\274\376\201\247\003\204\264?\221\027\214\200e\344\301\277\203\351\374*|}\266\277\024/cq\315\310\327?\243\344\254\365\203x\266?\216i\352\205\242\274\306\277UN\323Rp\361\264?\\\263\007\035\274\236\221\277\214>\326o\253*\266\277\261\232H:\"`\266\277\207\243\261\325m\277\245\277ci\223\314\202\245\271?\r\t\336N\223\211\237?\267NDW\274\247\272\277\374\215c(bv\300?_\315\r\357\251\002\221?V\344g\340\005\215\270\277x!\224i:\233\277?&\303Q\204!\320{\277\261\\2\305^\026\300?|w\325M\355\322\260\277\335\262\016Y\314\373\310\277\332\223f^H\024R\277\314\254\330\021\032\214o?\276.\002\027\031\373\265?\206R3\246\331]\236\277\223\307\033\265\036\247\252\277\031\347:h\215\"\270?\354#\3710\227\250\212\277v\224\335\352\211\376\212\277\3659\277\363<\177\264\277\347\311\274*\346;\236\277W\225?)YU\244?hv\202\226Lu\253\277#\277\227\321\230\363\261?\270-\212$wh\312?\242\026|~B\363\251?^\205\265\254bM\301\277y\276\216\207\257M\272\277Y\205\'(\\a\300\277\250\241[\200\242\201\267\277NY\211\030\343J\307?\317&\265\"\201\250\267\277\266\225\244\253}U\257\277\344\223\323\215\236\274\220?\034\361\336\341\342\355\247?\243\177L\302\302\030\256\277\223\n\335\nlS\235\277\273R\202\300\014\010\251?^\243T\3532=\266\277W\"ci\237\313\300?V\341b\215t\255\260??\253\2367N.\273?D\214jv<\022\236\277.T\326\\,\\P\277\\\323X\215\245<\251\277\034\254!a\245\346\326?\227-\340\317\001\301\202?\363\360b\267\274\255\205?\351\323\032RX<\301?b\031\2701\264\022\264\277u\346\274\352~?\251\277\0071\007y\"\022\300\277\322\0026\375#\340\303?\253uEP\333&\255?\216&\327\306\355\340\303\277<[\345\r\204\025\305\277mu\023\3238\007\243\277\242\347\2135!Y\306\277\027\237i\231\337\376\251\277dG\027\334\275\226\241?\370\225o\255G \202?\2172\245sA\017x?\214\364\336\312\020\241\302?L\370\016h5\033\241\277\306:\305\326;\207\300?\235\2028\005c\303\257\277)\374\3565\203\344\304\277\343\221\210\341\330\252\210?\376\246Yy\370\351\206?qO\271l\216X\226\277%<\231f\006\000\270?x\354\001\210\336\035\203\277\340\007\233\210]\213\266\277\210\035wW\023A\266\277\266-\330Cn-\250?[\271\320\225\374\371\243?I\"\231%\010\022\272\277\350\365\200\026B\006\234?!\245B\247:\307\206?1\025\335\256V\272\311\277\346\250\376\336<\244\307?\336fu\317\002i\271?c;\002\267\037b\231\2779\244\302\355]\001|?vf\023ey{\272\277\371\243`\027`\273\246?\334Pv\342\236\033\205\277\317\212\354\n\356%\270?\265;\363f\274\021\261?vh\350 \201\277\206\277d\372m\237,g\247?v~*^B\026\205\277/\357\275\025Q5\274\277\032O\322\217E\222\240\277\272*\325\320n\311\235?G9\321\324\353\301\230\277}\253w\237\347L\260?!2l\253\324O\301?\005\035\351:\245\377\275?\275\3344\373\326\225\251\277`\337\245\356\025\323\260?Z\241\227G\315I\331\277%\266\311\306\241\036z\277\352\246\321|{\324\213\277\364\007\311\355\2313\244?C\341e\376\025\324\212?=l\220\251\034b\240\277\262Q+n\335\t\300?\342!\244\347\001B\316?3_\307\353} \256?nn#dR2\261\277\334\215\n\333\225ty?6s\275\257\323|\203\277b\224\361\246.\374\244\277Zh\205\213}\234\211?)\201\265\025\376\214\264?\341\366\274\337\357\235j\277>\026\361Z\034\242\214\277\035\013\002\0374\352\264\277\036\023\036w\004^A?m\312_\205\033{\260?i\343\300J:\274z?\346~w\356\274\031\270\277\362\230\347\0360\211\253?\210\271;/\344!\241\277\tL\250\3157;\313\2772\266\360\262\334\336\262?1\341_8\211\n\230\277\271;\020\276\346Q\267?13\\\243\377-i\277\315\002g+\343\357\273?\032\033\256-\350\277x\277m7W\237C\226\251?R\373s\257\033\251\254\277&InH\265\331\267?\217\320\203\t\377\302\241\277/\356P\352\276\326\234?\377nj\330c\013\256\277r\374\032\360\3531\266?\004W\274\245K\210x?\0377\337\220\311 \265?Y c\010F\201\211?\231\302>c]G\311?##\361;\256:\224\277\357\315\355L\366\334\274\277L\305\322X\336j\262?f\322\331\375U!\257?\242\\E\264=\021y\2772;\332\202\324\246g?\245\003\017\037\342\342\245\277\372\234\341\242\263\337\302\277\304\307\302\367\217\020\261\277g\360\'\336:\355\226?\377o\332Ab1\233\277\233\224\210\325<\336\224??\303\240\231{&\222\277\362\246\3063\373\350~\277\0255\267\377B<\307?\216\026>*\307+\205\277\254\037\036\340\372-\271\277\316\266\372\023\317\312\222\277\377\027\233\351z\007\204\277u\332E\237t\233\247\277\"P2P)\005\240\277\024\372>~\252\205\264\277\375\361\032\225\237\316\222\277WH\311V\371\026\231?Ourh\355\234\275?\326\351\036L\036\227\270\277v5*<\207%\201\277xE\326[\274\253y\277\002Q!\264r\361\251\277t\221\362\320\312\253n?\202\246\240ae\205\227\277\375\030!$\326\276\234\277\330\240\254\237\200\020n\277\327&\027\2115\177\240\277\354\230\316\376\321\014\264?\017A\036u\235\t\303?\351\347\366b)\021\246?1\\\350S\315\007\263\277\204\355L\236\275\014\256?\026\373\200\311\3733\304\277A|\212\233\266_\265\277\217\331\030\013U\234\252?\340S\t\267P\324\301?\206k\273\372d\213\300?\377\350f\334\016\030\271?%b\021\227\004\203\245\2775?\"\nx\t\240?\024\353\244\013\'!\230?\020\3228\205\257\024\225\277D\363\354\324\345\221\324?\311\2306\364s\023t?\306\326|\252\006\247\300\277&%4\200h@\253\277&\036\002\272\032L\274\277Ux\217\216\244\375\265?\233\361\203\355\032\n\255?\177\225\327\n\3576\205?\024\216x.\247Y\263?;\234\220\236E\214\264\2771\270\340\245_\352\303?\367\275\253\206x\035\274?J\357\027\t,\003\244?\231\306\2568\234)\304\2776P7q\226u\273?\267J\266)\261\335\240\277\214\020^\303\275f\312\277\203L\237a\231A\224\277e-s;\276\212\213\277.a\264\026\357D\262\277\302\243\265\307\270\213\301\277\352w\306\027l\234\317?\322M\n\022\3324\277?\241\006%H\241R\241\277ZT_Xa\301\311?d\017\177,|\302\235?\353\310\307&\317X\307\277Rvm\033w\237\260\277\353\300_\230\023\300\341\277\230j;wVC\262?\315\216\352\226\250\036\240\277:\302]\332\372\250\272?\346\251\375\226\261\231\310?\t\201[6\375~\252?\211\303?\272^\013\227\277\347K\022_\230\020\304?G\023/\336\037\306\210?\214\006\3656e\030\261?\226\220\017\210Bk\301?\334\033\372\220Z\233\223?\365-d*\373\036\217?\322D\210Ms\234\211\277o\026@\362\'\\\270\2779\311E\341\230\265\204?\377\260\241\351[a\263?w\374\253\301\025\256\250?|\300\346vO\266\260\277w\251Q\307y\352{?,n\307\215\300>\242?\200\317\236\343jM\227?tjQ\222\217b\251?\250]q\364v\321\263?%\234h\217\357\234\202\277\225\002]rL\275\267?\2713D%\310)\265\277u\2029\002;B\246?i\325\216\340D\371\312\277(\340\255C\325`X?\267h\246\376\033\332\267?C\262HV#\210\267?aSzh:\200\272?\322\233W\025\332\'\211?FX\233\324\004\031\252?\013.b\244#\\\232?\357\235u2\373\266\261\277E\206\225\270\312\025f\277\371\360\321\214S\213}\277\331\200\036\362\371\345\303?\343\225Y-E\260\311\277\324\3728@#\t\222\277\2249\241\2234+\332?\0041\204Y\272!\233?\314T\347\341\275\357\302\277w\326\327/\023q\244\277!\311m\322d\021\242\277\3145Ws\354/\265?\032\341\026l.@\304\277\335\262\221\317\326\301\321?\373\263Y\223\341\005\204\277\363lM\222=\252\261?\247QT\306\007L\255\277\377\250\265\354\320d\213?\211\215c\375\256&\263\277~\001&f\n\211\301?\247<\346R?\350\314?\355\205S\275\220V\243?\333O3D\245\207\265\277\234\316\350\320n\302\331\277F\t\234\274\351\005\254?\244\371+\225_\327\233\277lv\361\372\211\240U?\220X\311.Ga\273\277Nj\304Px\021\220?Q\356c\324\270\347\265\277\205+\'\2042\257\300\2774\371.\351\276^\260\277z\367\234G\346\366\252?\217\326<\272\007B\254\277>o=Mf_\247?>\370\306\246\"\365\210\277\223=\"\204\242_\300??F\312\236\202N\214\277ml\003\350\202;K\277I\313\231\314\354\277\221\277\3415:\323x\231\312\277\020\341\313\020^I\241\277\tq#y\034\223\242?\t\327L\234\275\217\273\277\030\304\243\036\3572\223\277q\307\304\233\236Z\255?X-\253\nm\r\313?\014\0210j\030\371\272\277\303\017\346m\326\005\265?K\206\252M\270\245\242?\227\275)\326\203\333\237\277\327UAL\270(\264?\215\211\034\225\364n\313\277-\r\344O ?\246\277\n\024\004\340\355\276\311?\270\267\326\300[\327\272\277\301\342M\273\325/\232?\343A\237\201\3749\226?\374\225\031:\027\253\241\277\306G\312\377)\235l\277\001\306\027\340\013\177\242?\355\027\324\2760\036\250\277G\377\356\244\336\364o\277\036\213\231V\341n\246\277nrz\301<\004\273\277\355\233\342kyZ\272\277\204\312\034e{?\242?y\312\311h\177P\230\277^\322\343\255S\374\262\277\365\235\227\316\364\344\311\2779\244\246\242\355\020\215\277m;\271\256a$\277?\224L\265\333j\352\303\277\262\366%\030\326d\275?@CQ={\302\224?\006\r\257\306Z\364\274?\347\373\227K:\312\313?u\335\203\221\327U\252\277\313\356\203oBD\254?z#\236\201\305\270\276?3=8\217\357\305\240?]\352\1770\2768\212?\014\350tp\010\373\200?\000!k\313\240\242\254??h\215~\221d\272\277y\005\031\323\300\363\262\277\006\325\003\230J\325\262?}V/Ad\207\262?\233|i\311\213\244\270?_H)\254\255\037\302\277\366\313\254z\236)\267\277\207;E\\\036\213\266?A\350\034\224\022k\224\277T\253\2249\334\264\260?\352\236\301V\242\341\311\277\326$\373\204a\007\203\277|\237\036o\322\207\317? P\223C\374\333\300?v\357?\240\225.w\277\232\nw\350\222U\270?\326>s!\212\016\321\277o\272/-\t\355\223?w\303\336\205\325o\305?\254\212!\370\252`\312?\035\333\007\356\001*\322\277\027\272\373\023\334\021\254\277c!\204Zt5\262?6F\205\231\207\310|?\373\270\'\240\207$z\277>9\275\2000\031\225?r`]\273\336{m?L\352oJ`\314\234\277_\366mak\261\253?N:2\351\322v\303\277\257]\306C\232\027\323\277\017h_\020\310\334x\2779P\036\216\354\234\265?6G\034\r\020U\300\277\315\367$\216.\223\302?\366\361\004\216+\261\241?\216$\021\356\2212\262?\251U]U~\200\257\277.\222a\302\365\001\240?g\332\035\232\357\031\207?\020\262\270\220 -\247\277\235\205*\212\250a\264?\005(-\311\366\257\222?\324\213@\313\003\334\265?\347\235p J*\262\277Y\025\304:7\274\214\277\302\324\334\233E\033\234?\215\007\273\370G\213\265?\337\373\301\312\013\017\254\277/\261\027\222w,\261?q\372\300\214b\200\264\2778\305G\307\276!v?\264\367\261\356-\027\266\277\263y\204/\263\021\253\277N \334\264\356H\262?\003<Q2\3565\227?\237\241;w\342[\256\277\340\313\366\003\356\233\237\277X\336g\010Vw\310?\257\375\207\370\264\014\243?\324\237\274\315\323s\241\277\216\275\301%\311\264\215?<\336\363\021P^\273?\323\013\371\355\0062\221\277\212=\323-3\204\307\277\001\250\256\304GZ\275\277\010KY\332\245\341\236\277N\"\016\3479\362n?|\223\216J\250\215\212\277\227\035\243Y`]\250\277\303\2313R\307\272\270\277\242q\265\273\302@\303?\2660\320\205\304\023\267\277\373\267%\007d\020\207?\224\373\304\244:B\266\277\365\'\203f\213\230\311\277\345\006E\376\201\361\305?\225m\004\372\037\376\225?Z\301]8J\362\265?\'\004\341\305\2711\241?B\0258\23561\302?\2647\207\t\347#\263?\355\r\271\320$\216\231?\375\220\242\274\tr\275?\265\255\212\301\314\220\261?m\010I#\246\223\303?\370\274\207g}\332}\277\371?\3148\2116\302?\025\3078Na\215\222?\225\346\303\010\256W\305\277\263\313\010\034\310,\251\277n\362\014h\027(\211\277\207;k\003\353\002\276?_d\242{\373\t\256?J\377\376\207\237\332\231?.\305\204\365-@\244\277\254\317\303\227\003\333\233\277\021v\372\252\022?\263?\\|\241\361\245\221\263\277\267\352o\375\265x\214?\365|k\266n4\321\277\034:\244\014\366\327\255?\317\353/\307\222\367\273?\225\306d\347\304b\273?)\215\0067:\254\257?$\235\220\037\023\024\246\277tB@=~\236\303?\020F\250\236\226\237\302\277-\362\362\010\374\257\221?\345\371\207\033\372\257[\277\371\264\232\356\246J\265\277c\374\373\332o[\251?\2750\312\324\313V\262?\300\236B\352<\227\252\277o\263\2743\274k\247\277V:S\345\211(\236?\244\r\255\243\332\315\252\277w \346\205\261\263\213\277\211\\\006\233?\205\272?\007x\360z\224\221\252?\027\241D(\374q\263?[\365\'\036]\202\251?z\003\034\030\363\232\306\277\373\271\007\345\350C\244\277\0033\377l:\220\265?!Z\217\277pz\300\277\371D\001M\033\301h\277\262+g\203\2340\212\277,\323\300\350\303\363\303?\253Q\231\354\226C\274?n\215\264\203\307\005\265\277#\243\266\324\214\203\300?\220-\026-\332V\271\277\371\305*\272c\356\270\277\336\270\001\237\220\256\300?\311\240\323|\220\005\305?\005\273\205eWo\270?\266\227\255\333\317^\207?(\362\005\311\370\240\233\277\355z\373\372\252\375\310?X\320n\010 \276\244?I\265q\014\372\000\251\277c\266\264\230\320{\271\277P\346}i\355\244\260?\306M\301Y\366W\256\277\324*\327\035\373\365\251\277\266\264\252\373\325\033\200?\335\361\313\334H\364\227?\221gx\007\331R\302?\rK\320\242\264\233\204\277Q>\002\025\302\002\232\277g\254qyl\016\243?:\253I\256\350\216\200?|\353\233\003\273\026\300?\241)\204\004\200\221\270?\255\002;?\316 \213\2779\247$?r$\263\277\000\034f\204\312L\264?0\354\307\226y\256\271\277\020\220\207`\333\215\302?\326\227\205\tI\343\316?\240k\034V\334\330\240\277*\264\250\347\224\276\266?\331 \027\277\000\257\254\277\005\215\277\256\005I\260\277p\356\363$\373\277\225\277Fd\310\227\201\031\302?\242V\277v$\243\301?o-\357l\273\007P\277\r\024\367b`\363 ?w\001\312G7\340\300\277\343\353\317N\016\363\277?\242w\373\373\320_\210\277\035\023\231o~\335\270\277\347\372\3106\r\"\240\277\\\366\330\0256T\262\277\257\021\334\010\326\017\304?]\267e\013\\~\261?\342%5\274\233\342\300\277\024l\376\220\020|\244?\n\256\035s\017\325\305?\243\255I\342\260\032\271\277\027\351<|`\312\262?\\\371\024\301q>\230?b\327\246\210}\240\245?o\2455\306)M\210?\261\315\276\224\266\324\251\277\202..\275\254\315\267?_\365z\003!E\242\277\036\024\001\2721\246x\277j$\342\034\"r\231\277\361Y\221\027#\357\311\277\334Ps\240\363-\216\277\320\201\321\031\335\230\210?\r\207\343\241P\227\255\277\004\004\326\302\264\036\322?\004\202\300\246\203:\255\277\224\021U\203\207\335\273\277\335\204J\240\255\032\233\277W\233\007\242D\313\243?\273I\305\210\261S\277\277W\0213>\231\340\277?\367=\343dz\256\315?QGp\320\245\006\254\277\301\211/\013\254u\276?\037#\244\224\014\217\276\277W-\352\247:E\270?L\370\t\330I.\264?\t2\217\271I\265\312\277I\304\207\240\364\221\252\277\002@p\306\212\320\243?K\317\362(\275\370\263?n+\016\360\267E\325\277\222\031\335\023?9\256?\t\241]\007*\004\233?\032\212k\242c\250\261?\010;Q(%\334\303?\026u\235\177\203\224\247\277c\223\224\237\0267a?\341\336\361\376\261\204\253?g\347\276{\r\241\271?\215\326\266\220\306\032\272\277\230\244\010\373\236\250\262?\343\322\004\330\036y\224\277\365\307\233~\263\337\260?\375\265\"@ta\225?\233\022\312\005\271\370\256\277\rG\225\2109\266\211?\312y\006\351w k\277\225\t E\204\024\303?B\343\222M\312b\266\277\n\332\247e\264\230\253?\314\262\365\206R|\270?\351\200\271\026=\025\273\277\261Z\346\313\272\237\255?\004\302\035\333\362\343\250?\np\215N\277\271\301\277B\327\205\030\372\270\242\277miR\320\362\r\233?\372\327u\"T\215\264\277\023UX/P!\312\277Ct\366\330\312\323\221\277\327,\230\267.\277\237?&\221\212\347.\366\243?\337\'\2077\037\361\311?\237\264\002D\003\303\222\277<\323\005z\037\376\306?+\000\000_\346\\\301?/\227;\253\221\351\246\277\023\372\305Ms\240\214\277\250\371\'z\243\242\301?\013\244FZV+\302?\261\346\"\014\004\256\276\277[\323\204$\344\177\245\277\213\035JIig\236\277\320L(J:\211\202\277\3557M\256\214\340\244?\273\370D\255[\201\250? \001`\037\205\211\234\277\337\373\315aTG\254\277\023\364^(at|?3\264\331\026\342\233s\277-z4\372\t\242\304\277d\215\335\262xLw?\245\213A0/\225\205\277\212\\L\034j\361\262\277\223!\224#j\341\260?rD^\361-\002\221?P%\022\331t|\301?\'\243\023\033\017\341\271\277og?\203\245\307\246?\272\223y\322\277?\265?q\267\303\321\004\275\276\277d\006\030\324\373\367\261?i\302\200\246\250\303\271\277\311x\034l\241\347\266?}4\226\332\377\256\231\2773X\263}\321\200\245\277\265\233\303%8Y\264\277\017\026\204\351\2246\262\277\037\327}\r*\376r\277\224!\375\350\243\021\301\277\177I\361\207\271\314\313?\016\266I\304\366\327\253\277\346\205[e\336\250\226\277\003\236\222\367\214]\202?\242\213N\221\362\222\306?\256\244e\344 \035\247?\320\006gS\353\230\304?\217\317\242\014ID\260?\275\222\214.\021u\263\277\324\225\177\314~n\250?v\353\356\241RE\254\277q\252\244\346o\273\327?\207}^s\235W\223\277\250\304R\353\343\362\237?\213\354\n\257\235\251\316??\256\355\316\316P\234?l\323z\026wO\244\277p>\262#bm\264\277\327\344\230\372G}\320\277\177q\206\017\303\362\270\277\235\366\010\357\2310\272?S\215.d\036\327\243?\001S\274\330`\377\312?:\202\022\217`l\252\277\022\262\341\024\203g\244\277\343\021\211\246\350\251\336?l\230\232\004\342\217\221\277.\321\301-\003\r\205\2770F\261\236\246z\325\277\210\243\365cW\365\267?*\306I\246\2359\215?m\033\245\330\366\363\277?\031v\335z\271\323\313\277\312{\241\033\232\010\245?,\224\317N \270\265?o\277a\263Lu\231\277\r\004\333\257\210+\273\277;\263tHp\024\273?([\211u?\362\243?)\362\341\335\317\273\223?+\005\032=\345\377\221\277\nc\243\305\316\326\244?\033\000\303\371\220r\231\277!\250\203*\023\307\240\277\245\246\307_\342\204y\277,Q\225+\321\263\251?Y\371|\353Mq\320?\355\021\035\256\216\0306?=\n\202\267U\000\230?\325Iy>4\224\267\277|\357\320s\253r\220?\017d\322\320\033<\257\277\311h\277}\260t\253\277\256G:o\"[\257?\320 q\316pu\245\277\340\240\272h\325\000\242\277\342\325\230\363\200\035\325?\230\236\301\035)\260\235\277I\200\306NB3k?]\230\210Aqt\276\277\220|\367\334lU\241?.y\222\2729\272\266\277\003\354Zft\334\207?,\301\217W\024\211\270\277!\323H\rSH\246?\026\024\305R\342\233]?\352\374\342\274S\263\202?\203\265\343Q\001\267\276\277\205\341nG\323c\270\277\222\365\237Y[%\265\277\007\243[M\\\003\260\277p_&t\377\211\302\277(.\322\302\363\365\300?gr\r\336\355\246\255\277\255\3748\330\010\337\306?\007\310vHD\273\304?\010\244?\t\345\t\203?#\205\3018\250\177\261?\212\310n\t\037C\302\277<\201\365k\t\376;\277\024\037\336\303\023/\304\277\277Y\307\2046\r\304?!x1\230\221N\202?\356|\324\352T(\266\277\3644\32050B\273?]\"\257G~\343\274\277\351\377\323\364!\r\220\277g\333\032\270;o\261?-\301\3210p~\266?\322\374\022v\331E\251\277\270\020\370SP\266\266\277)\311\005\341}r\263?L\006}\205\035\260\277\277\304\356v\213\347\227\255\277v\302`\356r\"\260?v\2209\177\017e\271\277\232%\004_\244\256\264\277\245\337cS\031\006\215?\266\267U\215\207\024\273?\300\022\010\312\322w\301?\025\330<\255*\337\277\277\321\3547\232\262\232\275?\341\033\221\344=.\260\277\255\207\304\3410\261\244\277\317\310\233\251\245D\261\277O\037\352\021\337\221\242?\237\226\206}\352&\263?\366\237A\300#\342\273?\376\250\347,N\306\211\277\252Y\320\375lV\251?T5\t/\375\r\260\277\225\'c\354\210\322\262\277\354\2417\261}\315\245\277\001\250JKq\275\241\277a\227+\005\014\023\277\277\204\r\303U&8\262?y5\334J\316\314\303?\235\235c\214\206\304\217?\025\337Q\206\235y\275?R\274\253\2604\037\277?b\027\026\325\352\242\311\277j#\211\014\252\363\306?>\343\244\234\277?\\?\03421\203/\312\270\277\251^;v\257\361\277\277\352\002\325\370\240\350\247?S`%z\034\236\270?\371J\243\375\002\236\262\277\207\233\033nh\275\274\277)\351\262#\235\254\261?b\311\254`\000\374\256\277c\335\244\033\254\343\234?\211\374\223\325\303\n\246\277\342=\3738\253G\241\277wV \265\023\337\263?\027\215(\236>\313\244?;\021\316\022bP\302\277-\253\374\206>\371\260?\034\321^\226Rd\254\277\230\313e\013iS\275?\231D\025\\\337\204\322?\214\255v\022\177\031\202\277Sp=\321\261\231\227?\352b\337\353\216\n\250\277H{|\000\n\271\240?\036\356\233P\002\320\246\277\205Z\371\362\"\n\241\277\026\271U9\360\357\270?e\270\267L\210\323\302\277g\320J\231o\220\246\277\237\\MG?\365\260\277[\256>\013\355\257\247?\364\016n\361W$\271?J\303\336\3424\343\245\277\021\373\302#vS\302\277zM\262\271\371\323\225\277\376F8\204\332\\\261?\312\036\311\345;\221\262\277\377\275!]\337\205\273?\350\215\303\354Q\221\266?\334\351\240;a\317\241\277\037\274[\333\031\177\270?\023\367F\321\221\365\261\277\036s\245\346\362\377\241\277\200\347\337\3725\031\251\277[6\376\217\241\306\301\277X|6\330\366o\213\277\024K\275\263\001\226\300\2771\000\306\334\024\214\242?r\231~a\314I\265?\007<)>\214(\275\277\016&\217\355\205\223\243?C\374~H\224\260\236?\320$\027\370\354\027\240\277\211\237\311\322Y\366\214?\372;\332\037\373O\263?\277\324\315l\205R\205?I?\260\317C\025\224\277\304\342\245m4\256S?$\276\201\'\347\373\307\2774\002E\313\237\233\222?\'\320\317\022~b\307\2779O\313cd\334\324?h\010\326\3507\315\260\277zo1z\256\001\214?\300fy\007Q\265\265?\363v\037\205\240\\\324\277\331\250\260\230\344\337\220?\316\000^\301\310\017\234?2A\256\376P\261\260\277\363e\2678Vc\251?\201\274\241\020\206\316\304\277Z\013\227\302\225\226\266\277\350=\000+\207\025\321?/\270>\003\210\251\254\277\3121\247\252\364\346c\277\251\371\023^^\341\300\277\213\345c\006\010i\235?\032\322\353\240\230\004\306\277{\213\274\323j\275\300\277Oa\037\244:\306\250?\253\205Y\335\027\273\301?\320G\241\273\033\253\270?\030K\333W\333\344\235\277\037v\244r\266\036\253\277\340L\315\030\241\247\267?\3265k\270\371\021\230\277\364\016\016\037\230\221\303?\323u\267\250\272h\300?\307\235\375\372\037\236\263?\325\346A\271\240\212\315\277o\020\271\342r\035\265?/\216\276\0303b\262\277V; R\213\351\315?\3723\352\347\257\035\320\277\357((\306\213\036\257?\337\303@l\366\340\307?d\260y\tz\265>?n\275r\\\216y\236\277\'\332\273\245tm\242?N\342\032\305F\215\267\277\277\014\342\327\361e\273?U2\337\017=\320\256\277\201\332jT\243`\315\277j\243\225\201\372I\315\277\246a\264r\026\001\211\277\351\361\366^r\364\306?;\336\003\334p\241\247\277%\244\214\246Q\337\314\277\317\275\261\311^\373m?\356\246\360O4P\226\277h\006V\260^\357\247\277\373\200\307\001\317\306\253\277)2\367\221.C\264\277\335ci\340\255\036z\277\016&\202\026@M\300\277%G\3716\016\275\251\277\250\237\247\\\223\250\267??\365D\357\335\200\304?L\254\337s\177\315\300\277\327\006\217!\200\312\264\277\341\024\210\253\007=\221\277\276B\245M\'e\306?\246\036\302\357\016\211\266?^H\263p\240?\267?\344#\302q\207\224\270?R8>6\221\215\301\277QP\261\021O\261\263\277\006<\354y(*\252\277\377W\361\353?\355\325\277f\022\315Y\213,\266?\033;\036\326\026\310\224?\361\326\t+\311\343\325?\257\334\2076N\206\256?GX\242v\351\336\247?\375\000\206g\301|\241?\221\315\240\254 \355\302\277\350_~\364\361|\244?\325\307\340\022O$\260?\352\254+\240\206\365\236?+\333\355\261\370\332\240\2772\331u\244sN\276\277\376\301o\364\316\250\274\277\t\332\272\237\201\020\250\277\204^\302n\305\007\231\277\214\352\341\005\014h\261?&\261M\304\252T\301?\005( \324\361\226\276\277@\224\253\251~\037\317?b0@W\330Y\316\277b8\022\006<\261\227?\214E4\n).\231\277\205D_m\352\273\271\2770\253k\333\243\r\250?Xh\372A\202a\243?j$\204z\271\010\244\277i+\030\340\302\314\277?\301\263V\024mT\303\277y\354\376\205\344\276\236?U\242\277-fO\247?\367V0\253\301\255\244?Xr\353}5\026\256?C\360lh\264q\261?H\003\267\034GF\321?F\260p\'\2529\320\277j\246M\304A\022\262?\254g[I$2\302\277\317\331\210\322\257\025\306?\026X\356\300Q\273\317\277\340P\217\272\3126\252?\205\235\213i\342W\262\277\345\230rw\322=\263?\320i\301W\240\343`\277V\366S\334{\024\255?1qQW\262\345\260\277\2229\232v\260\202\272?\366\375\020\217a\372\227?\"\252\366\326R\025\256\277\213\355\366\\\020t\305\277\232\355\244so\365\250\277vM\346W\030R\254\277\336\007\016 \177\355\277?\277T~(r\016\220?\233\206\320\315j\222\272?\244\020\267^\314\365\310?m\313dU\3749\321\277\261\232\2154d4\224\2776)\200\006\230~\270\277\336\263\247lV\332n?K\356\313M\005j\246?\365\\?Y\262N\306?\251h}\3675\032\266?\233\251?\307\013\231\311\277\205\233\003\010a\361z?\313\232\374\261\220\220\262?\"\343f\231\250z\270?\236S4\267\305\316\251?\023\205\360ci\340\254\277%\255*\002\247\377\246\277\323\177\253W\020c\307?\n\206qw\031\rt?\0242\341\257\302\253\264\277(a\024\353\356\372\304?\034\250\305\2307\017\247\277c\367\374z\001`\243\277\276\304(%Q\377\240?&\310jd\300\364\307\277bQi\355Z+\235?(\273Mt\235\376\273\277\336\225s\302\304M\245?\263\234\323\230M\265\303?\227\255\262\227\005qu\277n(\364\032\343[\232\277\200\026Z\346\221\235\237?2\211\342J)l\266?/{\341\300\300\361\264\277\246}/\200sO\304\277\010!b\253\320L\272\277zjI\271\321X\312?\345\202\237\350\026\247\275?\025$\251\235\366\277\253\277M\344\250\004\330\206\257?\271>\023F\237M\300\277\006\305(m\024\320\272\277$\374\256\007\264r\272\277\372\317\311\246/C\210?\017L\276\013\027\245\260\277\216\333\276\257\021\264\302\277S\237\007&it\207?\200\2626ML\270\241\277x(\000\216(\261\260?\353,\231A\377\343\272\277\357\240l\371t\272\261?1\203\340\340\353d\272?\273\002!]!\375\274?\200\375\222\346t\211\251\277$\215\364\0007\276\201\277\206h\365\001J\002\277?\241\232\024\254m\277\270\277\240\3414\312\371\335\262\277\212\035>\025\207\000\267\277GZf\254i/\322\277\360\366=\035\231\032\272\277\'\013\0253-!\237?R\t\360!.\341\226\277\217\312\024b3\343\253?\252\355\265\343\352\023\266?\276\004*\347G<\263\277_\336\326\231y\212\266?E\221O\n\002A\232\277\210|<t\247I\264\277\366\nvH*\037\235\277l$\363\203S\331\256\277b\306\365\207\210Z\216\277P\220R#\022z\310\277\027\"\031\353\301\272\201?\321\343f\317q\303\226?\033\301}q\314\216\302?^\325Yl\237F\314?\357\211\2730F\004\273?\324\262L\322YH\311\277@\226\005v\311\002\300?\275\2037;<\006\312\277p\010L\nF-\251\277^f\\\212\211\275\266?\226\204\005\007\202\241\257?AGC\216xC\304?\203f!}\205h\250\277w\303ls\266\331\261?\353ov8\275b\253\277\3730\266gE\001\251?\376!\320s\264\256\245?M\327\'R\033N\312\277\316\007\321\342\305\244v?\240\014\243A#\346\256?D|\375*\231\223\255\277\030\230\314\343\263\005\261?\317\376X\n\246\nv?\330\001\320CC\032\246?\343[\005\350\221\315\211?\343a\375\240\261\221\250\277+\375m\253\220m\253\277Z\033{$\001\253\227\277\270\331e\332\373/\272?p/;\325\026\005\256\277\230\240\371\221\277\375\264?\001\375\"\\\202\017\306\277\220\337\243F\317\343\263?\206\251+El\262\240?\341\370[\276\360\225\241\277\"\272\3226\330\006\246\277I\306x\025\375\020b\277\207W\353i\342\t\277?C\231+\355\341\357\221?\337\242\247\310\200\360\262\277\030\024\226\255\024\313\303\277hP\2569\030\247\251?4+}\230N/\250\277{g\030\367\t\007\233?\030-\313\214\330\"\222\277^\027\377\nN\355\300\277\267\367\377\352\242C\250\277\024+\214\344\277\332h?\277\204\332\316\365[\300?f\314p\000\213v\214\277\034\204NBe\316\257?D9K_\214%\263?\024A\177\351v\226\274\277\021\270?\372\315\033\266\277\033\014\275\231\223-\263\277J&\270c\017\266\231?\246\303\207\214\243\303\277?O\213-\256\276D\261\277\023\323\224\021X0\261\277\2266\335\276_\332\311\277\340\305T\270\222\276\227\277\363\311\002\2314\277\325?\304\363\007\376v\267\311\277\016n\331\000E\206\321\277-\353\306\304%i\273\277%lY{\211\240\263\277L\002\212\3344\256\222?\347Q\006\n\024\212\200\277.\004\312\317d\025\223\277\010\'\214\352\365)\264\277\362\205\261C\250\212\245?\267\237\254\257\355\357\277?\324f\177\267f\344\266?\245!\013\020$\376\234\277)ti\231\023\226\260\277\247\250a\023\020\203\267?o\016m\021(\014\267?!a\302,\265\227\267\277\017\206VY\335v\260?\317\'\344_\212@\251?Z\014n\240\225T\266\277\024\372\305\313\365+\254\277Fp\275/oY\231\277xE\362\351\323\265\313\277\335\027uq\216\020\255\277\260\211(K\027\367\251\277^\356\034\331w\212\224?:\025\231\346Po\261\277w\330\026\253>\311\251\277\226\357\332c\007\005\273?\312\300\220V\2469\244\277\023H\331\273{\274\322?r\014<!#\245\205?\357>F\021\035V\305\277\223\0176\3150Ti?s\2557\217}\313\243?\335u\374\236m\312\252\277\335X\375\362\035F\250\277\341\037\020\020\014J\276?S#\260\335\0033\264\2778E\221\244@w\275\277\377\246\000\245\367F\266\277U\322\241PJ\254\264?\340\211\274;\217\016\236?;\346\367\267\025F\275?\340\221z\213\215\370\251\277\362\n\206nd\000\273\277\007^\226\r\\\327\234\277\177\3033\004Z\252\276\277\210\3330ev\033\266\277\235\242\2621\331#\246?5\353o3.S\321\277FH?\002\357o\303?\007\262\\9\225f\242?\326\274\345\300\221\023\306\277\"C\336\312\317\237\320\2772\250\337\235g\272\222\277\356\'\245\001\333j\320?\026Z\276X\214\202\320?\317\212\254\341\274Z\267\277\323\322\324O|\341\235?\374&@\330,\024\215?\276\256\323C\3345\245?@T H+\305\263\277\267\334vVd\021\177\277\334\r?\254\232u\255?\354\341P\221\324-\325\277\013\351\273\263\354\006\227?TF\335h~L\252\277\037\2374\215k8\251\277_p\350\0062IF?v\344T\210-\241\276?\212\340\007\020\334\233\310?x\321\267I\344\231\233\277z%\225z`\024\246\277\230y\215W\324\231\242\277\275\215c=a\025\271?\317\321\024\326\366\264\264?\010\363q*%\'\267?n\351\021\332\036q\274?5\007\232\213\363@\246\277\006\032\2662\227\334v?\364\345|\271!\277\273?!\tH\332\310>\260\277?sjD\236M\260?\345\\:\315\367\375\237\277-\302\006\223\360\334\241\277NV\226\2608\\\303\277\236x\372\013\225\017\261?\377\372\033\300\233\203\266?O*{4\tg\275?9\217\361\206ZY\315\277\363\322\216\\\334\300\257\277fNU\352wN\234?\324\014\303\031\025\354\306?\262\226zf\257\001\237\277\222os\274)\326\261\277\r\232 \234\221 \265\277&\230\242\334\343\375>?\241R\014qwz\251?S\233\335+\271\340\265?a\261@c\241\323\303\277&\276\250\272\004K\246\277!S\234\3404h\272\277\256|)+C\212\267\277\002W\373\266P\200\224?\222\362\030\352\255\251\267?\341\334\262\217\006\205\301?J\207,r\303\241\253?\020\326\366\362Q\315\237\277\270/*\030-\331\230\277\263E\336W\240G\264\277\320i\021\361j\320\256\277s\244\232\247\003\217\220?}\213Y[ g\261\2770\233~\301\013\346\311\277\264\203\006^\362\351\265?:\244\320$\364\\\245\277\203\037G:\334\265\243\277\364p\004.$}\236\277H\3363\016\244]\257\277cP\365\352?Q\303\277\003>/\177b\035\267?j\r\024\233\t\337\244?Y\245m\215\016\230\242?\226\2043\254\301\320\272?%\352\301;\272\313\255\277\004u\311\373tU\302\2775K\355bS\340\302?\374K\376\377\202\200\243\277\375,\242\233\000\262\233\277g\205\352\374S\313\300?,\231\216\301\262\207\272\277\205\257\037v\013)\304?\t\230\331\321\345\201\267?\021\000\232\377\370\277m?\230\227\322\225\202\324\307\277\371\366\002\215\345\276\235?\233\025\334\177 \260\226?\260S\177\370\216\010\277?\002\320\205\212\217\205\205?0Xeoa!\255?\206\261/\201\213\267\302\277\224\341B\247\371\314\255\277&\364\353\271\213\345s\277\300NH0\335\027\252?\340f\003\013\014\025\027?\001\223\001\276\203E\263?\346\231m,\303\300\263?\002\017j\322\353\262\305?C\017&\3307*\304\277\365\375\t\357\211\375W?W\351g\013\267K\264?T)\036\335\242\351\264\277\304\270\215\0201\352\247\277IK.V\006H\267\277\226\322[k7\302d?;\345\025\266#\320\274?\001a\227j\203\310\244\277 b\272>}\375\214\277,\312T\0070C\237?i\220\016\361H\377\272?\362o\2509\263\223\201?\3574~\306\373o\256\277\203\251\240f,a\265\277U~\031\245\014L\222?(\276t\274\216\304b?m\237d\236\021F\272?+P\004l\275\330\272\277>\t\206\376{*\237\277\020\347\3026]D\240\277k\305\265\"\301n\313?\t\013\0218\006\326\261\277\340\331\263\374\'~\230?\023\252\243\300-\312\301?5\035{\256\000u\263\277\325\r\000ejgj?\254\344\360Z\016\244\264\277O\312>\256\305\203\242?\346\240\342\221\376\270\271\277\254\346\243\225\035E\220?\363\251Q\177\247/\262\277x\324\003z\242&\266?\352\330\247\365\352\253\236?\257`\210\205\337\302\317\277\004vvV\266\310\314?\374f\356i\317\3701\277\377\231\267\223We\261\277\311\365\273\357\373\227\224\277\031\0067\010\223\333\304\277I\333\204{\201\312\207\277\306\346\353#\252M\222\277\354a\270\"\013\234O?\016\300\376\220\177\340\270?\357\374I\035\322\250\263?2{K\276\224\223\232\277-{\262\206\353\246\250?@\276\256\030\273%\313\277fr\211\226\273\300\275?p\210D\342\001~\277?X\315\034\340\210n\262\277L\324u\346?\346\215?6A~\002\253r\260?O\367\227c\361\322\275?UA\220\256t\n\264?\340!fP\321\032\271\277\274\304\205zy\025\247?\336\334\035\367\010F\222\277\325\367AXw/\247\277\206f\377\334>\224\272\277w\n\304\005\214\302\222?\037\344\330\276\263\036\263?H\023\235\3339\257\313\277UK\277\266\004!\274?\023\245\303\327\301\010\244\277:\213EQ[\302\213\277r\321\0345\340\335\274?\027\235\316\235=G\250\277\275\270\234\027\200#\277\277\216?\273\367`O\264\277\346):\215\355T\260\277\242k;\037\271`\261\277\r[G\221\364\253\266\277\246\327 \316\273gw?\342\245\022\345g.\300?\004&\332\341\253\273\251?\216\017Jna\370\277?]\000@}\366i\242\277\307\214h\375zq\251\277t\365\035\333Z\315\233\277.D\251\224\375\017\275?B\016jv\304u\244\277S\311\rq\360M\301?\337\257v\262\212~\250\277zF\301\364xg\306\277\355\313j\325\n\326\200?\002chK\024\227\215?\311\225 yX\203\316?.0\221\313\252\317\265\277$\347\035\004!\206\276\277\210\177\325JW\236\301?<\024\317\247\364\024\262?\325\243H\341P]\250?\265\360IV:\242W?\326M\305\204\315\275\246?\242\367t\017\225\326\246?\354+\004\026p\202\252\277\332\222T\333\230\355D\277\337*\356%w\t\303?\\\336%\360b0\242\277i\333\032\230\n#\226?\014\352>\372y\032\263\2772\010\312\256\375\207\251?\010o\366\212\022\214\231\277\253\233\265\230v\335\271?r\247\223\300\346\"\305?\261\215\'[\231\253\224?P\032\275\342&\302\267\277\307W\2445/\013\255\277@\364\272X\266\032\260\277\376:\3328\223v\206\277V\366\364\334\232\025\264\277\320y\232\315\352\367\300\277\221vm0\251\377\243?\362\354\006\005\333m\266\277\327\245Z;\024\214\237?\222\360+\277\332\r\226\277_\227hQ\302\333\245?|\2329\323\212\270\300?_\233\216\245\020\262\226\277bx\022\277\365\263\255?n\014g\ti\354\304\277\2508\023\247\270cW?\332\221\335-\017\031\247?f\220\226\370\177\243p?W|\021\236\031k\260\277\346\0267\023X\213\332\277\20019\325\325\024\233\277\346\254\327\232\243m\270\277\006\305\331\223\302f\300?\025(\272\006\3127\307\277kV\212\325\350\251\303?S\001\226eA<\253?\312\010~\327\026N\232\277\035\362P\003\302\006\261?S\204\000\342O\221\253\277`q(\375K\362\243\277\256\021P\013F\212\252?\r4l\207\314\341\266\2776\226\253*\0065\243\277\255\262I\304\344\223\276?U\346\033\t|\371\267\277hHq\341\235w\255?\201\362\243,+\236\323\277\256\204\035`\000\034c\277H\331\315X\211\245\242?\317\023\013\331^n\262?L\025\023\343\207B\262?Q\276\260\002\3630\226?\013\337\223\245K\366\244?;\364\"\364\220\261\213?\244O\262\017\231\261\257?6\033k+\307\312\255?\326\326\231\365\335\320\277?[.\347\316\371\323\332?\267Y\030\205\356\266\274?CI\353h~)\245\277\260Jn>\343[T\277P\233\243\376V\264\222?$\351B\362[e\264\277CW\227&$\320\306\277-\327\245\005*\366\325\277\263\346\025\314\276\215\267?\215U\274\316M\364\246?\224\n\247\301G\324\261? \027\242y\330m\247\277\205\345-\2476>\260\277\356\033\\]\244\362\265?V\022\262\232\300\263\243?\253\207\323\263\205\270\271?\033\372\237\027\272]{??\005\010! M\315\277Kpx.S\334\216\277\206\325\324{\353M\271?\336\275~\002#x\226\277\251[0U\237\234\265\277\024\315^\363\310\026\264\277/\205M\246:L\245?\023G\r\322Nk\205\2776n\033}\256D\277?\376\021\005\331\217\304\256\277t\021v\026\021{\277\277\253\366d\367\243\266\217?lkJ\266\310\325\257\277\224\301\343\345\207\321\271\277\343\260F\245qw\267?\240.\004\255\350L\224\277\242K\356\355\201\267\255\277{\215\014\351\337\257\322?\257\217\014\020\211\364m?\320\322{\312k\330}?\265\337y2\214\031t\277\3552\240\021\231\005\301\277\024 \261\260\237m\227?\250\364\256\362}\000\237?\336%\340\357\313Y\274?|\025\'E\3266\277\277\026\027\010\024\324&\235?\216u\201\330\263K\261\277\r\265\240\304\302\374\241?\272\273R\310N\315\244\277\035\002G\016N\233\303?\256\363\241\215\320$\233?\235\244F.\323$\322\277\244\002\233\203Jo\246?\373\364\2653B7\275\277o\203G\247\201L\251\277\2672\274O<\035\277\277U@\031(T\024\247\277bP@@\236\217\310\277~\311\022.\273\302\307?\272\035\334k:k\233?\241\201\201\325\213B\276\277KA\351\240N?\311?\232(\n\234\314\312r?\2535\032\374\016\006\221?r\261\254e\365\222\260?\213\220\013\032\022~\266?j\374U\217\372\271\203\277w\323\327\243_\345\220?\\H\363\357\313>\250\277\252\030dN}\355\224\277\226DN\270\314\256\212?b\222\214O\312\336\267??\201*T\364\355\242\277P3\331Cr)\267\277\316\226\216\374H\371\301\277\2105\230\203Bs\274\277\362*\217\307\320\367\226\277\361\312\233\344jQ\207?\177\355ES\242@\220?\027\206\351\377\302\227\272\277\225\230\305\265]0\244?K\210\"\262 Q\276\277c\213C{\274a\271?%N\313L\241\265\257?\311\373\360\235=\217\245?\233%v\006`\255\310\277\336j\010..W\201??Kd\350qs\207\277\242\200*S\261\032\257?U\366\235\005\031)\240\277;\366\010\274\330\017\265?M3Pm\021\313\275??\354\226\033\253T\243?\272\332\3638\265\032\316\277D\224\021z}c\246\277\271\372R\332%\026\261\277\234\302\026\213\\\232\224?\374\340\336Z\227\320\272?\201C\024\346\341xU\277O<\204\215\005rh?\010\000\231n\030W\203\277\241\342j\004\013\270\235\277\232\264\316\206\304F\220?8\221\035\211~\235\213\277\300\326ad\023\201\220?I*?\022\225h\260\277\336W\036\235[\271\317\277e\034E\205\227\221\201?\361\335C6%Q\225?\347\222\\\374\245L\274?7\374E>\245\205\263\277$?\213\376\3633\257?G\351\031\306\324\215\203\277\374-\240\305I2\322?\276\342)u\307\307\301\277\254\270Ht\256\307\252\277\n,&\253%\307\276?\010\230\243\274\211O\267?8\333\374k\362\246\211?\214\322\244\275C?\217?\261\006\351\327\326<\313?L27\016~\365\312\277f]\336\204U\305\204?\311\222Tu*\300\300\277a\363\250sd\272\260\277\265\235\276\300X\252\263\277\234\"\0232*\304\261\277$o\210o=L\305?\203_\rsoKf\277\321\205X\004\227n\257?\340\315\377\321nN\256?\257\237\252\031*\020\315\277K\356\253m\225 \241?\264E\375TY\216\261?W\304.\273\261na\277\031\260Sr\277\247\301?\365\331k\2279\343\300?\252\013\031\324~\367\272?\366\003\216@\014\362\227\277!\362#\204\241\372\262\277\206\361@\252h\273v? \001\250\024\261\267\270?\337Gx\"m\236\301\277\307\325ov\031\376\254\277,\373\021\344*\026\264?\207\035\332\034\207\260\304?n\316\264=\262\265\224?\323\330\345e\372\235\227\277\030\206\320\232\211\257\311?\311\331\275\372jj\226\277\032\323\316\277\303\332\260?\323\257d\261\002*\273\277|\235\350\203\351\236\300\277B\351C9\021,\236?\325*\000\350m\263\177\277*\030h\315\354\371\301?W\314\236\221\333\374\267\277\371\316>y?\241\246?a\322\353\315\266\234\277?\021k\375\324\354D\306\277\025)\\\346B\341\270?#\337\036\005\007_\270\277\355\364\256\200\241$\245?\026m\266rrS\330?&(\232\037\250t\300?\347\'>D\233\367\271?g\273\334,x\233\267?\266\271K\r\363\276h\277\325\205\375\234\370{\250?\200\377\352\246\211i\252?L\247\323\267\264&\233?\005H\365BK\256\241?\301\030E\302q\330\262?\335\251\346\366\024\207\275\277q\302\210\361\032\'\220\277\236\000\253\021\233mM?\375\t\254\026\373\370\266?\200\336\275\274|\264\262\277\022*\346Ofu\263\277\033\352\250\0137\225\240\277/P\224C\022\376\266\277\264\233\254\344c\307\217?\253o\267=\213\346\216?\224%\037\031:\266\244?[~4g\337\265\230?/(`S\340\352[?\306\306\300~q\323\225\277\006\n\256\234\242\312\275?Z\026E\224\344\373\260?9o\217\373\326Su\277ef\014\300e\363\246?\353\013\301\355\261\013\263?\253\351\222\n:\301\266?\236A\365\316\306\000\270\277\310\304\274y\2303\200?\036\\\341\367|\241\276\277\235\273\036(Uu\260?\036?\323\330@\177\251?\245\326}\010P\344\246?G\271\262\237%F\221\277\316\tP\211\022m\224?\3703\365\240f\240\300?\235\351\211\253\033\370\260?SX\347\214\203\036\303\277\204\302f\257_\376\323?\316\231\374\320\324-\216\277\327\014\206\261\307=\245?\003\206\'\370\224\017\310\277\3735\017u\303\036\302?3\301\300\305\360\353\304?\316s\235\037&/\254?*Bs\030\200\332\217?g\'\026m\211Ax\277\211\222\226Y\364\222\246?\021\276\030.\245\216\254\277\312y\236\013\246\244\255?\327\322\206\024\013c\234\277\236\027\235Q0\334\217\277\3458\014\177\371\300\276?\032\342\232\n\2362\311\277\027\273P\323\206\"\244\277\022A\230\242Nj\203\277\330\"\216\276\201 \234\277\254\336\017\221+\364\260?\007M \236K\261w?\026\300P9\010!\245?\3053p\020\270\351\257\277\357\373t\271\213H\213\277\362H*\351\004\177\211\277\233\252\240\201m\215\321\277\316\0362\036\022\343\271?R5n\016\207\274\260?\010\216\017\224\325V\241?V`\002\337:W\306\277\347<H\270\334\351w\2771\217#\026=\362\250?Z$\000-\263D\230\277\250\265<>\215\366\300?\306t\217+\\\n\265?\375\303$0wu\261?\216y\032\274/;\316\277\327\326\324\014#\231\272?\203z\200\376\236_\266?\273q\271\313S\033\251?\333\363JY\3313\256?\334hi\223\222\272\301\277E\373P\372\211\232\240\2779\251\"O\306\200\240\277\030\253\336H\304a\212\277\330e\t=\221\326\240\277\270\223\2061\250\010\240?\342\2101\351\3527\275?p\224=\027\014`\245?\222\346S\244\366\002\220\277<\335\347\217<c\275\277<\256$@\017p\227\277\360\017\323\262\227[\256\277\343\372\010\215\224:\303?\275pb\025\027z\243?8\032CHX\237\275?U\227P\371\373\027\204\277\307r>\3459\206\255\277sp\352bwz\240\277\325C\246#\270\361\244\277Z9Oik\225\265\277Fa\355+\353\275\241?\232\352\324\026\273x\277\277\301\350\354.V\t\242?\233\374\326Y\205[\265?\310\3170\324\022\335\261\277\021\363\210A\207\026\263\277\320E\231\370\310\341\273\277\026\313A\327\271\t\256?\223\022x28\001\312\277/{1\345\306\260\317?N\306&\365\037\025j\277\004\333\345\0343\370\306?)9\377\177\353{\245\277\300\\\255\337\370\304\305?\357\037\335\242\016\305\241?\210\211?\310g\357\211?1\253\204\362,\377\236?D\375\335\321\374\222\277?eX\277g\341\305\244\277B{\253o\357\345\256\277\315\200+\257\325\265\310\277\037s\260]\216\314\227\277\343\221\264\200EQ\241?\233\365\255\241\254\335\244\277o\006Ct\235P\323\277\307{\211\262Uc\220?#\353\344\314-\376\253\277\334\323R\342\326\260\260\277\312\376\203\\\201\375\302?\325\301u\337\014\334\240?3\210\"\037C\300\272?\303I*c\'X\306?\254\302o\"U\037\235?\314Z\310\362\242\312\265?\226s\360\003\372\254\264?y\374\305\242\330\231\256?\3624\226\307\224P\243\277Z\252@lH\273\315\277\360\325P\272B\261\255\277\227\256N=Tv\273?\312\213\0056F\332\310?\\$\225\374t\t\246?I\346\230`\311\213y?L4)p\020\202\303?0\361\036\t`\361\275\277\023e\227\273o\"\233?\233MLz4a\250?Dttk\265\230i?[\314|\215@\327\264\277\314\223\271\272\254\260\201\277\2371\207\036\277\211\263?\026X\356+\331\243\222\277\221\250\2453k%\300\277\222_)\202\313.\224\277t\3302\221\020G\247\277j\364\305)\233\'\265?\351P\230p\006E\247?8\024\206\230w\362\244?1\247Y|\327w\271\277\226\330f\364U\331\320\277\336\313\270\035\376.\212\277\343M\255g\334\234\244\277\211v\354\263\307\354\311?F\2173\345Nf\303\277\215\314\354\227\n\224\304?\361!\242C0`\320\277\265I\020\005\316\000\323?\251#\270\267)W\305\277-\036\211;?\255\247\277\027\210\330\\8k\256\2778E\271\333\216\327\211\277\366\307y\366tv\230?Z~:\221\006F\240\277e\002\206\013\327b\312?z\302)\225\017B\264?y\206\274\320^\030\212\277-^\246\210\341\325\226\277\251j\326\367=\303\302\277\234\210\231s%\030\261\277\212\'\372\333\216b\305?\272C\260!Q\027\240\277\341\244<\250YW\243?\302\342\330\031\255\202\267?\331Xjq\017X\220\277\311\t7y\346\003\205?\003\356^\004\267\274\242\277\342\324\3505\035\006\267\277\033w\202\323\237\227\221\277\232\037\310\261\326\244\261?\266\264\007\324X>\262\277\0134\334R\266C\264\277\2230\n\362\024%\204\277\220\341\234,u$}?0\377\356\033\363N\312\277k\033\357\212\377v\241?\'>\001#W\215\260\277\350+\340*=\327\256?$\374\003\265\302\207\245?G\300\236\225\010\022\245\277\343\361\241\024o0\205\277\017H:\334\'\t\235\277~8Q\305\262\034\275?\263`\334\005\324\250\221\277<#qg\007T\246?\315!^\355\205\206\244?J}\004\3562O\242\277\006\213\375\374Y\330\211?\3670l$H\004\265\277\354\351\023\274Q\251\265\277\376k\320\315%FP?\332*A\327:=r\277\201\003\317\302<L\304?\215#(\344\013j\265?\321*-Gbg\227\277\315\r]\314L\374\256?\213\335G\3332w\266?\0030\226\016d\270\215\277\263\361B4\356}\255?\0311\273\234tA\262\277M\265\374\366\224\"\270?\235\253u\312Ov\267\277\241\320\325\327ef~\277\004\220\374\324;Z\305\277\2626\3001x\263\305?\230v]\rn\337\246?\206\340\271\274\353\"\306\277qo\351\344s\014\263?\211\261O\224E\214\267?^f:\221\371\302\251\277\275j\354\203\271\347\231\277\264\324N\010\330o\213?\377s\271a\222J\266?\214\310\307?\354\262\317?\206m\364L\236\206\236\277\226\240\243|L;\262\277\246\360+\254\022C\321\277\277A!\342F_\313?\"\327\364\353\017\030\236\277\306Z\324\334\213:\300\277+\257\373\311\200\270\264?\024\267x\344\363\t\275\277\27779@\311\024\243\277Iw\240\304\330\305\273\277\314c\302\035[\224\206\277\212\025A\255a\024\266\277.wd\224\2746\235\277\000\333u\246\010\252\302?\026\307q\007\312\374\202\277\3619\351\223\261\212\253?C\353\215\260\031\225\244\2778y\3551[\337\316?w\277VF\371\t\260\277\027\227\0071W\357\310\277\3534\343\315RX\311\277\tM\271\236.C\306\277\236\353\223\037\266\205\255?^rM\301\317AU\277\202\355\206\244\\2\240\277\236\311}\357\213T\221\277\271A%I\230\\\264\277\001\242\n\216\243f\300?\"\035\t\177^?\217\277\302\027\266f\314\037\251\277\303\333/0\t\032\200?\333\377*hK\222\314?hBt\247M\265\260?w. \233K\004w?\337y!3^W\246\277aTyH\357-\273?M(^\204\244\035\245?B:C\264\240\242\201\277\307\327\261D\003D\263?t\207\275\355A\216\250?=\n\324\023P\260\265\277]\025%\367O\271\313?\034\032P\355\252\205\261?Q\260\017c\360\246\262\277s\230\322\034I\317\306?\355\004V{\2368\301?>\260\333\004\250\310\235?\316\0070\233\367\272\224?3[D\254n\344\273\277q<\232\276/F\227\277\204\255\370\264\264\215\232\2772\027\250=\361q\274?!\007&q\324\334\276?\367\013K\250\300\272\245?\240\313\311`\374\200\220?\005\276\373yV\217\226\277\256\216\233\267\363\'\242\277!\224?\233\032\237\235?\005n;\250\036=\302?>^)\350!n\322\277H\260\341\366LGa\2771\010\204\005H?k?e\005\301\213\036/\301\277\376.\244\201\322\344\256\277|*\257\021\247\r\264\277\314\263y\221t\262\252?;\276\r9\275\275\312\277\366\306c\257\340\313\206\277t\313\017\004\263\361\223\277\343;K\3704\264Q?\261?\320\206\343g\253\277x\001\3325\306\215\273?g\336\0073&\330\260\277d\375Mh\210\032\266\277#\373hf\252\361\254\277*j\033\232\273\316\272\277\030\2115\21412\226\277\324\311\354:\354\212\250?\326\375>\313\013\031\244\277,<\257\362\014\326\265?\351_Wn=\316\242\277nyY\304G\005\220?\341\245\203Kn$\255?7\177\305\002\331\006\273\277kQ\251:\352c\264\277\353\322\213\337\030O\260?$\327F\323\202\305\310\277d.\305e\000\243\220?\220m\"\255\322_\240\277[\032L\031\212J\223\277\321\212\316R0\244\243?\336{\016\237p\232\242\277\327\005iZ\274A\223\2776\324(\366\334s\303\277\353t\250\030U\016\276\277lb\333z\306]\261?RR\352\377\353`\207\277\t\310\251S\277\335\301?\017\362\240n\t0\222\277\377@\030\"\017\203\226\277\252\256\25240.\323?IE\355\201O\023\273\277\373jKF|I\265?YM\2541\034g\226\277\265\037\316\255\233T\217\277>\'Y\253\244\356\233?\201\302\342G\375\273\260?=\0167\322\233\000w?\354(\340<m?\274?\307\366\037\222\242#\231\277g~\276\355\307\264\215?\373!\177W\236}\304?\220\212\352@\013\017\271\277w\245)V_\336\232\277\356l\322/\276X\264?\266Z\031\r\t\232\306?\224|G\026\324\333\257?\265u\307\257}\356\236\277\013\366\037\003*6\220\277\344\002n1\352J\224?\3562\261\350\"\212\260?\256\221\277\255!\273\227?\337\371\273F\363\026\312?g2\332\034n\000\255\2772\361\360\036n\004\245?\341\214\032\307b~\321\2774A\033\303$\262\260\277\371\024\326\223\250I\255?\264\307\353e\236\316\257\2771\r\024\\\277v\302\277\204\001\275\202\026\232\253\277\004\334\214\327\276n\260\277\354\3346\226@\006\273\277\032\352b\202\221\202\260?\346yO\214\036\177\\\277\330X\240\330&ql?\035\217\202\340\245.\253?\346\361,w\004\342P\277\374L`\237\202z\251\277S{\331\333\361\322\256?\333\037a[\027\002\266\277\304lW\361\232H\245?\004\027\210\3146\213\213?\035WtE\234L\244\277F\267\233\357`\221i?\030\032\323,\324\344\250\277\370\320=Z\251F\251\277\323_a-\251\207\270?m\024h\357\312\212\263\277\205\211m:W;\210\277\344D[~\300A$?4R\006a\301\'\245\277\367\261\317%#\351\313?\346\250\367^\313\337\261?\320R\267\354Q\036\256\277\250$B;\371>\227\277\274\371\367vz\224\307\277\375\374\340\230\333\177\310\277\222\305i\005\037\365\265?\r\371\030\224\270/\257?-p\314\n\r\021\266?\270\315\034,\255k\221\277\240R\273+\354w\220?\207\206i\251\207\254E?\txi\353\222D\220?j\271\341\244\0201\246?\375v\3244?E\253?\364\255\372\264\251\320\267?\325\266\315\352\256*\201\277\200\357\203\215z\223\272\277V\312\333\257\364\350t?\247\021Tp\224H\177?uE\262\373.\014\257?\232\373P\007\256\357\275\277\022\340\251\230\365\247\264?\213\006\033\3423/\236\277\303\252o\270~ml?|\364;\237\315\244\274?I^\003\211\213\253\274?\003\rV\353m\200\247?\266\254@\035\322\313\272?\021O\003a\224\247\261?a]\312\272s\377\275?!\323\303]\264\353\273\277[\351U\343\316\251\244\277\236\366u\214b\242\263\277\335\271\230\347\323\337\212?\221C\300\245\231+\265?\376\3702\324\263(\303?J.\303\324g\"}\277\333\034\3638>\346\252?\305e\300\204\356\241\251\277\343T\230IY\372\262\277\252\223=\214\240\016\300?\177GPJ@\032\275?-\263\335\221\347D\272\277\321\300`W\351\235\301?W\374\365\361\363k\303\277e\244j\001?~\246\277\332\275\361\301\310\207\327?\342Z\372\002o\316\251\277\240\354\366}\264\273\244\277\252HM\320\ns\225\277\221\010\202e\343Uy\277q+b<n\316\242?\\\003~\325\000C\224?\007C\345\233\260\375\277\277\266P\375\334\257j\262\277\357\353\377\220h\200\230\277\013R\372T=\215\325\277T\200#\203\320\307\264\277#\334o\257\351\006\277?\374Ed\310\2005\303?\366%I\026M\277\216\277\255\266T\210\350q\266?sS\355}\314H\270\277P\220\"Ad\272\234?\0277\371/\246\227\304\277O\267jw2\330\270?\0144\354h\030\322\271?\324\016[\030>\373p\2771\366\'\3122\220\302\277)\002^\307\001\013\231?\367\n\014,\211m\267\277\177\030\026\023\2460\251\277\243\364\013\037\252\233\240\277\364T\366!Z\236\275\277\302\370\'\034RM\304?7\340\303\033\261+\272\277\033c\226-\340\316\260?\371\345\350\023\243\230\275\277@X\210\3277#\273??\367\261]\316\217\271?\365rM\352fZ\225?\276\250\271\\\032\020\310?G\3561\271c\024\274\277\353|GJ\345\251\251\277\331\275\375\0175P\301\277\272\367\325\344\234p\215\277.\2627\341sF\226?\031\371\203\302\010j\265\277Z\010T\016\031\\\276\277P\200\030\261\320\246\252?r\363r\247\224\013\225\277\244b}\300\337g\310\277[\201%\002\347\017\271?by\371\273\322\314c\277\233\005Y/\036{\311\277\2035\207\344\367W\253?F\034@\362\306\226\304?k\177\372Z\027\236\263\277Qk\030iM|\266?\275\035\207=\230\331\257?Q<\317?\t\270\261\277.\036\203sXOv\277\032\005\357x\316\356\303?\2728\006\033-%\213?\033\rW\266\352\240\247?\377\224\036\030\030\332\252\277(\340m}\r@i\2775\333\314qW\340\217?MR,o:T\177\277 \246\360\254G\257\226\277\372q\005\347\252\232b?\0373\367\224^\345}\277\030\225=\225\022\240\271?Na\306\211\361\024\272?*\007\370qj\200\303\277\242\037\300^\223~\251?\006\311\203\230\232\345\245?\227\320\340\343+\201\300\277N\213\'\265\032\223\234\277p/\"F\237V\251\277\366+\370u\022\032\203?\230E+b>\"\265?#)\322.p\345\300\277\276h\3742\212\321\276?I1\2075\032\325\250\277:\366\336=\323>\225?C8T(e\252\267?\034H\002\310\321V\220?\017\217\340\366z\331\213\277w\037\235\036\320Y\270?R\251\006\207\243B\273?\305\344\301\237H\203\243\277\320\235C\n@]\262\277\374&o6\r\256\256\277;t\322\375\326v\263?\245\241r\244\252#m\277\315\030\273Z\037.\314?\226L\256\274\2544\274\277\367\316Q\003\231m\277\277+r\010ri\315\266?\373\3053\274\254\251\256\277>\346\376\240\251Y\214\277\261\022s\035;\024\210\277\026P\036\001\032\253\224?\315\0310^\346h\200?\261=\227-\010\014\245?\373{`@2z\275\277kx!\001k\020\233\277_\200\013\255\023\351\231\277g\233[@-\027\257\277\022\361--\242\035\251\277\211\211\235\315)\252\301\277 (\317\373\351\205\260?2#`jK^\244?m\274A\363^\312\303?\026\331\310\302\374\007\242\277[\205\212\353\350j\272?\255\276\352\n$\343\310\277s\275\334\000I\304[\277=\227\340b\204;\222?tTM\005\227o\264\277 \347\026Iq\372p?\371\0361:\367\257\274\277\366w\377~\262j\225\277P\335\321\003#\210\232\277\272\235r\315\2661\206\277\221l{\017|\373\257?:a\362\000[|\255\277\035e=\002\322\332\265\277\013\017\251\367\377~\216?\tR\025\262\001\243\262\2773D{\350J\331\320?\252\243\000i\315p\264?\256L\326\301\254v\253?2\032a\203$\253\231?fag\370%\017\265\277`\236~\351\340W\243?\246\361r\244\021=\251?\005\301\215\215\237F\220\277Zj\000\325\332\366\271\277&\373\345Qq_}\277\237\235\031\232\320\031\245?\362x\236\203BH\330\277\211\006\250xXX\265?\222&\332nL\231\246?\240\330\034\316\323%\222?\364w\303\252\366\037\327?\305\n\357\370\302\023\252?\346r\247<Rw\243?l]\273?^d\265\277\254\223\311\300DW\257?[2\371\351\267\273\207\277\301\2479W\203\246\266?\257\321\325\276m!\265\277\005q\345I\353\247\257?z\341bDb\377i\277\245\342&\225jg\264\277\033Ts\037\005\360\240?1s\320\304;\335x\277\256%^\231\276\306\221\277\022\0031f+|\310?.I\'\n[\252\271?\250\016\332\213.F\247\277\177+3\007a\264u?\250$q\230\033x\267\277\300\177\257\240~*\250?\262\266`L\314\320a?\313)5\366l|\300?\323\032\201\037\332\370\243?\000\27768\276\034\227?\345<\022\256\373\273\252?B\237\362\306\224E\242?\030\220QD\216\273\264\277_\263O0\354\315\275?<L_\362\241\242\322\277i\260\242n^\335\222\277\023L\240H\346G\265?\272\320\256\001\312)Y\277\017\010\3642$\242\263?AZ\027\263X\211\264?B\n\001\364\013\226\227\277\3726\206\325\214e\325\277\270L\355\200\203~\224\277\032S\3125\331\335\033\277/\301Y\005&\032z\277\341\234\277\375*\271\222?\315.\335\314\377]\306?\262\365z\354\202=\307\277\342 Q\257\321\207\314?4\013K\366\313\355\301\277\207\034D3\260l\246\277\357\034\355gq\000\273?-\360\323\301W\306\262\277;\262\001\325*f\251?\351\357\270\330\035&\271?\021ek\317\024\"\310?\320-2\036\310\376\210\277\204\243\322\220\3544\256?\t\254\352n\226\022\272?\313+\360\3407q\244\277\230\231 li\267\274\277\311F[hs\342\242?\340\273\271\302w-\255\277~?\034>\003C\224?\260\225\016\214k\034\251\277\237\307\330h\327\251\303\277\363\0324?\006=q\277N\027\267\202c\200\264\277H~\316\035Z\216D?\266\375\032\300\204\021\313?r\005\035\r{D\216?\325\206\213\236\342\366\250?\033\220\177[\235\362\267?\377\204\335\307\202\236\245\277T\237_\022-\304\242\277lP\230\016\300?~\277D\316n\007\220\331\253\277\023\027s\203q_\201?\306/\022n5\257\241?h\311Oi\324\334\262?\304\'\315\016\256\244\240?r\235\3768|3\262\277\\\026s0t\252j\2776\3649t\3745\270\277\343\343\217\260\350|\252?\214\230\207\365\322B\246?\374m\022-[m\271\277\332\306@\332\340\237\260\277s\300\267\3664\306\217?Q\226\177*\030fs\277\266\222&\364Q\301\264\277\350\374\207e\3540\261?\0065\211\324\316\363\301\277\230\225\224\020G\r\303?\366+\007\232\003\333\260\277\2611\317\307B\376\206\277\332k\272\257-G\301?\312\355Jri\273\254\277;\013\275\304R\244\251?H\305\267\001\356\325\200?\2644\253\357l\226\306\277\016\360\301p9\351\301\277)3\230\255\275e\271?\177\002\350\246\231$\245?\320\002\273.q\360\275?7M\332\3771m\250\277o\304\006\207\235\270\254\277\340k\'\001\306\205\272?\002\303#\2775\361\230\277\351\332\026\303\243Y\224\277Y21\334\302\305\310?\204\010\3630\016y\241?\350n\363\026a{\240\277\267\372\240K\345\311\301?g\003\2712h6\274\277{\256\226&|\311\231?\323]7\001d\240\253?~\310DF\312a\204\277\212\032d\321\276\311\221\277\303v$N\001\232\262\277\362\355\270b\220B\306\277l\001X\322\032*\305\277\276cuiep\272\277\244\'@o(y\265?\351]w\366\334\322\313\277\270Zm\205\261\203\261?\250\276\230J\246\020\301?S\3525\347\245EO\277\351F\270 c\"\311\277\377\345\016p\313\316\221\277\327O\014\333\363\235\214?\345\314\nd\217\206\305?RkL\023\221F\272?\355\326\226\351\253@Z\277\010\355\030\3659\251\275\277Z\374!l\016q\253\277\204\351|\351\230E\247?\371\024\324\000\277\301\302?\003\332\231\257\247\273\223?\200Q\304\313sM\261\277\235\311a\250\344\311\252\277a!\274\303\260\306x?\272\331\3021!?\223\2770\263\203B\021\204\243?\275\346S\277fp\262\277\276\016\025\374\234d\312\277P\362\352h\353\345\314?\276\016b\374\257J\264\277\326\271\002&\000B\273?\327\307D3\035\022\315?\367m\177\244\241,\256?\262R\213\024\340s\242\277\345\230=WH\211\261\277T\360\332$\221\024\315?\304+\373\212Um\243?e\223\030\031\367\322\303?\333\231o\241\032m\271?q\312\224\274B\000\246?\006\271P[\342X\321\277\010\232\330\0027\323\205?+a\256\362\222V\246\277[\336\022\252\013yk\277#c\334\260\376>\224\277J\24482<F\313?\232\261q\022\033\225\206\277\235\341\376\332\017N9\277\270\200\243\203\021\t\231?\352\364\364\345\313\'\332\277.\260N!\367\273}\277\022\016H\347\244\243\267?)\021/\371A\270\301\277?\r\003\312\305\312\262\277Sb\035\323\260\323\253?\237\376\323\023\302\276\267\277v\316\223h\013V\317?B\207c\0011/\202\277\224\231[\247P*\241?\221\206\241\264/\337\263?J\374\0011\334\253\261\277Mu\005f\337\325\245\277\216\2671\202\231\214\221?Gi\371\306\362x\313\277S\252\000\'\261\356\263\277\324,\346\231\310\206\252?p\341\345\264\277\245\240\277\340\302\257\326Zo\217\277\275\322\"\224\201\273\267?\231\302\347p\225\225\253\277\330\241o$LB\301\277\304,c\013\233k^?\250\320]J\035d\265?\306@\"s\321\354\234?\n~\023\343\374\333\300?.Gt_zu\223?\326\316\037\331\177d\216\277\333\225\021\376\336l\212?E\307\311\276\373n\256\277\021\337\177\207\274\250Q?\267\362D\300\003\325\260\277\240\270j\005\253\362\240?R\275\266\202\025\234\316?\274\215g\032\375\225\303\277q\025Ry\231\001\322\277\004\245 ]\376\343\247\277\213\006\265\014B[\270\277n!\257e5o\261\277\300J%\016``\271\277\rk\224\345y\356_?_P\223\242\226\310\323?\017\274\023\027\327\233\303\277\030Z\325ux:\227?n\373\035.g\370\225\277\315\243\221=h\306\273\277~\276\347+xh{\277\005e\266yy\312\266?f\253\001L\333b\205\277\313Y\302\000K\243\315?\177N\026\301\374\245\220?[\266\333L1\242\303\277(\031\251\251\355,\302\2779\255\025\007\222\223\310\277f&a\334\353\014W?*@\021+\351\257\216?\373\360{\272\204\201\321\277W\225\\1\272H\267\277A\313,e\337:\224\277\347\257\007A\303\225\275?zs\251\261\013ls?\037\311cS\021\271j?s\313\r$\303\n\277?\\\231\315=\327\336\266\277\214\260\337\n\300\271\225?\016*\352\305\230K\303\277\232\214\340\336jw\275?\235\270\332\325^=\203?\002O\371\376\330\031\264?{\374\275\033?\255\233\277\332%\221\337w\305\321?h\375\203\265\326\331\270\277%\2132\375\250\315\300\277\263\224\346#\240\000\321\277\'\377\245=\215]\246?}\230\2269\366O\275?\223\264&\367O\311\276?H\377\327/\376\275\242\277\'\th\364I{^?j\024\352B\272\303\301?\256\t2\325\306\276\251\277\302\n\311\0350M\203?f\363\332\354\331\240\240?\345\017\347{\2067\222\277V\325\313\347\177\302\270?\375\353\316c\366\001\242?#\223\007\202\234J\266\277\233.\351/\276\375\306\277-\232Hp\261Jp\277\r\333\000\201\317^\262?1\244\345phh\271?\364\271\274\252\254v\271?\002\371\356\030\321\332\244\277\204\n!Z\346\226\257\277\274\331\273\240\246\017\275\277\375\351\303\030K<\302\277\223\267!\263Q\364s\277\363 \254:\201w\256?\314\354\366\3047\235\300\277E\334\006\350PF\223\277\271\263\204\252\002jw\277\207\301\3557J)\231\277HT\312\270\036\033z?\204\332\037\256\376\374\265\277vY*a]\356\266?\244KV\231t\347\316?9`\324\306\227\"\302\277\266\330\003\240b\347o\277\227/\237\376m\006\262?JX\250\334F\261\252?\225g)\203b\361b?\343\001Y\335\030\333\300\277\316k\3505\223\t\233?\010\034\t\301\261\256\227?*Xy\001\342\341\240\277\316\212\342M5y\321\277\241\007N\212\374\025\211\277\233#\235\371\371\322\255\277\265%i\347\232\233\275?\370*^\224D\360\234?\017\361JL\326u\223?8B#\326\341\300\217?\000,\262\325\363\333\235?4\326#R2\316\301?\224Y\343X\236\036\240?\211I\275$\306I\263?\343d,OM\371\301?$$\021\271\311;F\277ti-\351P\263b?\326\3754\344\021\021\203?e\237\020\363\206\032\250\277\2144Cq4\363\262\277\206\254N\320@\005\270\277B/\372\034=\250\300?\324\247\017\216\345\302\242\277\372\037h\265e\267\253?\301\272j\304\323\020\235?M\333\350\\\217\256a?\364\365d\337n\355\262?\307\357\251\366\236y\221?tN\267uG{\265?\323\373QO\363?\271\277SF\351\220\034T\221?\375>S\365%\334\265?.\270.\374\247^\271?Q\014\326\274\260\215\201\277\351\215s\345x\323\321\277\373\245%\311\n\310\241?NY\265\360!r\267\277\004be\347\2612\264\277\225\376\273\206 d\304?\253\243\362\254\253\346\234\277ZH\270\206.D\261?\220k\330X\336\003\266\277\227\025\361\010e\203\302?\231\302\304\314\354\253\236?k\226\235\021\267\341E?mE\320X\035|\222\277u\\\360\t\031\207\263\277\'\2578\032D\"\274\277\303\277f]\217\374\264?u\003\207x\302\264\257?w\313\2476\025\364\252\277\336\353aKC\323\265?\356\210\014\261P\014\264\277\026\330Q>\253\332\327?P\236A`#\223g\277\317\023\343\250w0r?hK\317N\303M\273?\254\317Pc\\D\237?T\364\251g7y\243?\221\241\210\336\260z\254?\035\221K\004\264\335\243\277\303\366\364\334{\261\304\277^\343\251U\322\317D?s\027\004\205\225\225\307\277%J\207\253\242\352\247?\237f\013\031\227L\245?\234D\034\225D\237\263\277\025\343\242\262\275\236\304?\0060\\\243\335\342\225?\252\364\261\317]\017\235\277\002K\\)\300\216\240\277*\202\206{|\232\267?_\014q\365I\352\250\277`\300\034\262$\362\320\277\251\200J\204\210\014\267\277-\244\211\263\010\337\264\277T&O%\213F\300?\301\200\266\"!\302\316?s\266`\220(\030S?\213l\340H\016c\233?\004e\032k\026z\311?6\272\302\326\217!\271?\317i_T3@\231\277Oz-\270P3\220\277)\301\236c\030~\263\277\3575\306\304\302\337\221\277\3039s\020\034\213\240?\3570\024\332\370L\300\277v\023\036\247};\224\277\243_\006\332\345\263\302?\023\017uq\217\351u?M\205\216F\312\255\312\277b\332\217\255#5\245\277\366\372\307 \276\021\222?,\317\313#\022X\275?\254\232\266\017\221t\274\277\310\236\330a\300\013\255\277\035\\\351\353l\212\264?\355\231\322\224sr\226?j;\257\220\330d\225\277_.i\355f`\304\277\332@\342\020\312\331\321?l#\366\020\307K\260\277\221\204\035d\352\355\257\2775\216\270\307\222\345\262\277\354\322+\337tx\264\277\017\"\325\267.LT\277I\347rT\'b\272?\3754\007\244\326\306\243?\0045\337\213\272\311\243?\365\007\262\\&X\221\277\344\335\363\270[_\263?71\371B\214]\306\277\022\216\252\2013E\264\2777aD6.\230\263?\302\035\340\371\222\264\233\277r4\362\330\232g\213\2771\275o\231\315c\242?\301\032\266\033\335\325\265?r\3166$Y\034\303?\230\021\347\310\237t\265\277\247\335,A\275\316\300\277\007!E\022\253\244\212\277\013\340\001\256\340\231\302\277_\374\370_:{\220?\377\001\217\214yA\264\277\326\'|\304\367\332\270?\025\305.\017\227Q\205\277\323/F\374\271+>\277\351#L`\2628\305\277\231\024\276\272\307\003\241?[U\330\235\317\337\242\277\260\\\324\204\007\222\275\277\271~f\334\377\327\322?\356\321\341\222\273\231\262\2774\023K\315\317\302\264\277e\214Va\035y\270\277\235\350\014\204\021\023\300?W\206\353\225\"\361\256\277\243D+\307E\317\260?\362\370\233i\271\341\271\277\271n\204\336\036\263\240\277\230\364\342\274\335\242\265\277\336\355(\224\376\230\300\277\263\'\267N}\024\242\277\320\310\317[\324x\300?\257\035c\202\231\200\307?\255xX8\227\224\306\277\334\304A\215\200M\264?H?V\241\324\0135\277\004\237\375j\335\316\255?\037t\344\035\2345\275?\310\0047\355\210\r\263?2\220\360\312\222\001\273\277\240\347\301\330\343\266\307\277\035m\025\371\366\357p?\316\351y:X\324\256?[PLn\343P\213?\020\370O\350\314\267\230?\265\2513\023\220L\254\277\366go\245\031(\305\277\255\t\360\330\241\\\320?x\266\210\257\013M\231\277\006\200B\302\207$\267?M\032\247\237M\322y?E>\306\215\"/\275?[\365e}\3525_\277$\271\2310!\216[\277\306C\267\004\247\362\246?!U\200\323{\356\253?\006f.\275k5\255?\037\224~E\267{\245?n7\007\202\266\201\272\277\374\254\237vx\271\270?\233L\200s\375a\274?\031\226|D\302\235\320\277_7\353\033\276\341\204?MN\266\230[\267\302?\203\t\251e\213\342\254?\031\330>\205\362\177\264?.S\220~\324\023\312\277$\326\353B>\335\233\277\241\202d2\326\314\301?\314T\370\037\002\013\260\277&a\342\270\312\n\253?\270J\270\317Qx\275\277? e\210+\030\200?\364b1\373y\365\250\2772b\021\021\256\364\244?\334t\177\21702\261?\312\272\361}\ry\243?\371\325NG\330\357\237\277B\214\370\322\3109\245\277\201\246m9\200\305\263\277\021\3541\235w\367\271\277\200\017c;y\237l?\216\320\232p\370\010\322?<f\336\377)D\253?\242\373r\327!\233\245?\356\215D0\301!\325\2779\025\010#\336\024\252?8\027\021\221LO\261\277\225\340F2_\346\301?\315\250\213I-\342\303\277\342\233\342\257B\374\233?tpl\200\0372\202\277\272s\334\367\027\212\311\277\320\364{\030Y\357\303?N2\352aP*\261?\332\264\371W\216\010\225?\360o\261\275\251\366\220?\273?Z\032\005\301\245\277\017qV\034\2606\231\277\247\346\'\030\256L\234?\343\322\376K\277\217\236?\177\362\233A+\373\250\277\366\333^q\336\330\235?\355\030\303\013\354$\325?\215\301Q\221\321\361\256?\244\254\323(\372k\301\277\370\273\rw\r\345\205?R?\325\274X\306\300\2771\253\023\203;\255\261\277\257\032\251\335\207F\272\277l\251\320o^@\267?V\221pc\212|\255?\366\352F\264JU\267\277_Y\035>\213\010\274?\332\227\201\252\246\343o?\377eN\217!\320\240\277\356\344\370\326\226W\205?\215J\237\361\237\244\303\2776\203\245\024J\312\204?\353q\371\214\273V\265\277I\0228\356qRe?N\330u%S\t\266?\362\335\213\014$\362\242\277a\267l\277J\376\266?\036\206\344\225\306Y\244?j}\227\220o\363\232?d\363\214\2109h\261\277\366\346\221\356\241\371\321\277d\342\330D\357Q\252?\273V\304\035A\204\252?O\255\344\303+\032\267\277\322\316\350\334\226V\307\277\001\254\026\'\024\367\232?kH\263\243\305\202\261\277\331r\367%Cn\257\277\377R-\325\0059\301?X\021\037\242\022.\253\277\240\235\351\271\304\357\213?+\020\345\354mK\300\277\337\024\266\000\312\n\277\277\246\214\032\356\003\202`\277\360\371\030\234>Yr?3\342\336|O\325\214?\272&Qg\332\302\264?\233\177S}\254\200\244?\364\350\014\375\035\235\222?\036\002\307\3662\374\263??\207\013<kW\243\2775+\256\202\032\034\267\277\200 \205%s\371\261\277\244\366\266\005\235O\243?xg\203R\372\343w\277|NI\026\020\345\303\277\271Z>2_\240\245\277J\304%\234\353\301\242?\275\355\265\035\324\027\310\277\305\301\330C\332\351\247\277\276\245\244<\265\210\300?\035i\230\264z5\203?\301\322\300j\226\262\257?\336wN\211\212\327\207?\331\232\242\306\030;\220?\r\264,\270\036\243\223\277\030\313\255\277\245\374\220\277=\201z8%\373\245\277\014\270b\210\020`\301?\237\265$\302\267\263\274\277?\331\233\274B\005\266\277\037\003\027\262\010\324|\277\223\352.\327\014\006\316?Z\"#Xq\241\265\277\304\006\205b\224\345\225?\261\215\212}\353\330\253?! \301\016H\027\303\277\035aA\214}K\274\277p>\242\002\335n\302\277\035\356\257\346@)\261\277\365\204\020\260\204\\\273\277\210W;\332\233\270\247?\347f\211\342t+\307?\tD5T+D\300\277\264o\213\023\303Q\265\277\237\330|\025<\"\206?\343\221\347\346\037r\301\277\317\366\035\270l\265\206?jm\267\265o\217\251\2770\243\263k\006{\260\277\027\020\374\251\324~\321?\241\355\'\356Lx\220\277CG\020\360\321s\275\277\016\246\316\007\314\244\277\277\212\264\014y0c\311\277\016\247\201\'\363\273\274?\230D~^\006S\237\277m\205\207JPgu?\321\255\255\200Y\031\272\277\353\373\026\000f\026\277\277-\255/\317\211%\321?\343\300\351\003\331X\242\277\237%\272\312[\352\266?M\226/\304\354\3054?\t\325\211i\366\037\262\277\360\024o\362\260y\243\277\021\333\0104\372N\207?\367\251\335\025]q\265\277\361l\362\324<4\226?\20448\222\330\260\237\277\020\"H[F\210\263?e3\203\263\357\026\273\277\217\301\261owO\254\277W#\244\251\232s\242\277\177\312}\024J]\307\277M\250\201\230 \014\200?oC\032\002\257 \276?Z\344Rb]\350\242\277\272K\017\374Y\367x?ii\224\326\263[\251\277\030\362\237\364\254\t\327\277\2005?T\355\250\262?\221\354\250\2564p\220\277G\001\220U]\366\250\277J\014-CR\351\236\277\313\314:jJ\010\300\277\"\243\032\321\206.\250\277\373\220\301\034\271\376\302?\023\365#I\340\213\307\277~\231%\312\356~\211\277\267\214I\224d\014\276?\326\031\274[\226\330\266\277\350n\245P\255\004\224?\357\2434\227\263Q\227\277\347l\235q^\031\254?\tr8>\260\222\274?\326\320z\203\010(\254?\347\034\304\374\277\016\243?\374-\370k\217`\276?nW}T\2775\307\277H\312r\343\276/\307\277\361\336\356M\253n\243?\211\177\252\350\nkg?s\377\266yhw\251?\345p\307\207\240\251s?\303\200\303tR\235\266?\257\366\322\364/\200\300\277\353\323:am\201\220?G3\222\220\275\236\242\277wkR\323\262\302\234\277\221TG\350\335;\250?\254\236\363P\301\036\245\277\303\341\370d\322\225\305\277\354\374\364\301b\036\306?\375h:\370\031\035\256\277\342\310O_\374\352\262\277\376\026!v\341\014\307?=\027\207<.\261\204?\031y\303\241\345\204\302?m\306\233\361N\023\230\277\"\320b\245[\017\307\277j\271\016t\335\302\247?\320i\214\370\310\270\300?\336Y6\007\302\226\253?>\240$a\340\231\224\277<\313\207b{P\262\277}\356\264\333\221\374\253\277\307\033:\223\363\250\316\277/\377\335%\237o\236\277\027V\360?\324\247\271\277m\257\3548w\036\235?\353\020\000\210\272\007b?\375\374A\214(\230\261\277\201\307&\376W\350\320?@_\321a\374,\323?#2$%?4\227\277&J\331\302\020I\272\277\344\010\312\370\326*\320?\203\327\230\366B\344\242\277,\331\335\313){\251?\332\300vS\221*\227\277~\263\367\3672J\271\277\231\311\265\211\300\004\265\2772\335]\324\213t\235\277\255\272\255oc|\237?\231r\2729\003/\245?\355\210\365 !0\301?\010a\372\\bN\250\277\000\265[\356\272\312\257\277r\253\225\t\336\312\270?\352>\231\\\335M\252\277\010\302\010v8\027\311?\312N|u\025i\240\277\261|U-j\371\226\277Ul\355\245 \371\271\277jl\372%m\362\277?\246\323\202Ct\220\257\277\377A\215L,\246\310\277B\314L(\317\346\304\277\202#\026\0246\361\257\277IZ<NG\316\272?S\"\312Y?\254\272?t:?\245\'\376\266?Q\036@\265\335\374\265?tXJ\331z\034\257\277/#\340\257\267JT?\345\263ulP.\243\277\"\271\3178S\346\266?VJ\n\211\340\333\300\277\370\'S\306\317Q\254?;$\267\270=F\241?\363l\317z\375#\245\277pn\362\367BV\274\277v\357_H\021\037\216?\270\020J\024N\035\217?\323\003\020\332\204\272\263?\373\320v\252l[\305\2772A\277\301C\344\252\277:\206\273Ta\036\257?\267\036RT\003\022\253\277\014!\207\203=\305\206?I\267\336L\241-\221?\322\363pN=\320\226\277\230<\017%\225\274\261\277\341+\024{P$\270?\316\221kR\266\266`?&`\335\t\337\266\267?4\267\001fD\317\222\277r\366\266D\236J\302\277\t\352dO\224\023\262?\217\226W\203\327\273\304\277v9\200\243=za\277\"\376\364[\t\203\226\277\256PQ\007\004\262\314?\365\205\231\327\313\014\307?$\017\210\332.\311\270?]\303\247\'+<\275?\335\324G\224m\n\275?)\251H\300\026\002\242?\004?C\213\277p\217\277\373\027$\376DY\266\277\314\001\244X&\361\256\2775\260[\334\232\313\242?\260\2527\263\035\261\256\277e\3576\231\302g\216\2777\023\014\350{J\236?ti\334\002\2238\242?4\034\301\215\177\207\243\277\020\n\363m/\207\265?P\325E\364\354d\237\277\245\315\356=[B\237\277L\321\301]&\343\266?\276\372\"\004\267\217\267?\262\335\"\006I\201\276\277\250\250\207\315\3565\226?\034\311T8S2\237?T\266c\375\202[\261?T`\017\215\275T\276\277)\205:\337\204\363\213\277\352\207\317\350\025;\207?-l\327\272\372%\311?\335\341\010/\336\005\216\277j\307\253\373\342\223\207\277\247\251R\345\020\263\211\277\245\364\360\313\214\264\233?!Z\331]\216\242\310\277\304\026\353B\216\354\225\277\326\013\323\274^D\257?\232\204\266\314\230\312\247\277<\320\265}x>\263?\340J\223\375\215}\316?\023\220\343\361\337\375\302\277\216\001\315\'\322\034\220?\210\345\"\223\330\202\263\277\376\244\366z\202\321\266\277\352\322\000YT\230\214\277\316<\267\246?Z\262\277\312\017f\024\330q\276\277\236sVHU\377\264?\200!\321\361\016\004\221?\303e,\364a\016\242\277\177\363o\243\024\253\253\277\206e\267\031\357\023\276\277\252 ^\273\004\231\203?\016~`\335`\021G\277\264\302\265F5z\272?e\031\230\343M\233\200\277\022\2457\205\226\014\211\277\222\311\026\307)\334\271\277X\362\330\001\205s\302\277U\373\3237\270\364\255\277\323\245\010R\354\346\241\277\306\277V\310\240h\243?\260\335&\235?\363\252?\242\367)\336D\327\240?\333\022}\224\205\033\260\277\272\236\342\245\235\302\256?]\345\\\362\341I\265?\210\345\t\371\367\000\234\277\026B\221\374\216.\241\277nB+\311\255`\267\277\035\023\014])O\232?\310~\327\002:\304\211\277\355\341\314s\232\007\245?\"\221\302\314\375\246\302\277\276\313\253\340\215\005\203\277\321\334o\270%\264\304?\272P\"f\354\313\303?`\nc\243@&\276\277\'U8#\014\220{\277d\361\321j\363}\270\277\035i\210h\201=\251\277l\004D\275{!\260?,\244\331\305\036v\266\277\344WSKF\334\311?\345\001\236\365\177r\275\277\223m\303\213\016\343\233\277\306\276v\271\023\010\313\2772\354%\315\201\343\225\277\246.\240\352\217\323\245\277\200\222\326\246$K\303\277\227\337\223:\252k\332?\266\002P\273\232\016\220\277G\324\256\304E\303\272\277\242\004\351\235,:\227?\317J\277\335M\306\270?_r\272!\033\334\304\277\222\231A>\023\025\310?\304\344\024\002\211\326\273\277\235\266\252\245w\271\241\277\202\025Xu\321\214\213?!.$\243T\257\313\277\035\223\361\325L\275\262?^\331W\277\030C\242?\035\236\263;\230\252\306\277\267\205G2\036\330\314?\031\343\352\240m\320\215?\225 \242`f0\277\2778*\220\335<o\320?*b\033\026\227\223\272?\004^-Z\\>\321\277\2404\327\242\321\321\257?\000\331\0149\243\261\321?\257\007#\241/g\234\277\36634\276\320Sr\277\233\241\273\334s\357\267?\316M;<\302\203\272\277I;\332K\346\010\237?\245\372\377e\265\314\266?7AT\335\n;\222\277\177T/\275)(\220?\301\257\317_c\342\247?\3603\006\307Z\215\204\277\333\345\177\225.\\\242\277\002\324\177,\"\024\257\277\004.~RV\303\276?\006G,\315\306\002\225?\177\334Mr\276g\240?\316\365Q\335\262\024\234\277\314\270\217\027 \364\256?w\357La\265v\257\277\300\223\376\236{\256\252?#\313\022\204\350\362\237\277\361}4\037]V\237?\362E\320\235H\217v?X\304\302\2535\305\265\277yt\014\337\355\036\232?\016\372wE\365\304\242?\177l\0255\007S\247\277\023?\333\037\220\234\263?|\002\242\243{^\315\277\345\334\337\246y\223\244\277\t\335(\025u\324\274?Vs-\377/\301\310?Dv\325!C\306\273?j5EP\014c\273?HB]\244\\rC?\267\245\211\256\332\241\313\277\372\276d\247\275s\243?\273\211\"[&\373\230?C tt)\334\254?t\020Y\330tw\243\277(\263\236\356\2546\242\277\334E\366\307\nS\240\277IPW\036\375W\330?\315\362\312\251H\336\227?Kj\201\371@M\266\277?\0070B-T\305?\000\232\236\356\273\355\315\277\002JvY\300\321\274\277a^L\361\261\307\272?+\240?~\205\370\267?\302D\317\210Z%\262?\224\320\372N\2475\300\277D\3611\323\273\301\253\277\267V\014\025hK\262\277eu\347\206nC\301?d\\\236K\333\344\303?\347\345R\326\251c\240\277\214\237\023\035>\232\220\277Y\331\224\032\224\330\227\277\203\311\305\036Q\177\230\277\326l\036\206\304!\315\277\333\211\301.\351M\262\277@2E\206\n\024\265?\261\375\300,M\224\273\277\345\353\2510\324/\207\277\200\020\274|fx\255?\231\262\035\274@(\302?\002u\201\360wQ\317\277\017\313\2541\345\225\224?{\242M\254\346\275\235?\2362\240\336\254c\254\2776&\033\240\243{\243\277\362k\017\300\3347\310\277\200P\253\214\006X\261\277\010\305\352A\211\261\311\2770T\243\350\270\207\220?\021R\320\302#y\211?\322\254\335@\312\323\302\277\315@o*\367\373\276?\232\375\\\265L@\266?\0066\314\235\273\363a\277\016\002\rN\"\306\265\277\271G}\231\270\344\253\277\347\354\005\\\307*\245?\024\332\331\235l\246\310?\240k\204\252\327A\241\277_q\303\007\307\214\246?\314\275\226\025\342E\242?\021\331\327\205\304:\223?\022Sv\001b\227\274\277\215I\200\267\267\253\222?\250\272\344\231\333\256\204?cDp4\331\027\240?IM\272\n8\343z\277E\252w\336\022H\245?\222\331\210\302k\023\263?\361\220\255K*\200\266\277p*\3310\347\257\254\277q\001\203\177y\353s?6\323\022XF\255\222?`\211\361\365\344\215\232\277\247\222\301%6\213\272?\2246x\004\210*\232?\004:_\237\376\263q\277`\343ae\242\024\273\277\355\313o\002M\000\213\277\214\254/Y./\254\2777\250\346\266\314\014\224?\234)S^\365\367\311\277\274\325I\212\271sF\277\361\317\2022!\201\305?1\3753\002\\\276\252\277\314\204@\224*a\201\277\254L\030\373Nu\244?\236s[z\234t\263\277\224\212\274J\321\241w?\226\245|\316\300\025\304\277\234\213\325\177e\036\217?\362\236~\014\362\301\314\277\301\300\361\335\304\227\221?\365:\033v\250\207\276?\r\351Q]>\245\250\277\007\037\242\253\326-\320?\355\350\376\372\350\364\252?q\306\373V\377\335\255\277<ny\233]\325\270?_\356df\243\261\264\277\'\265xT\342\242\247\277(\250\372\372\334\335\237\277+\213\247\204\233\255\276\277\263 \002z\304\274\274\2777k0\351\233\307\213\277\001Y\360\317*i\244?k92CV\264\257\277\302\201\014\224\265\004\274\277,\350<\362\252+\244?\036\024I\252\251\017\253?$\350\007\250\032\023\220?5|\244\213\206\007}?$\217\347\235\245\037\307?a\212\212\"\311z\322\277h\343\272R\303\312s?\3474bL\002\320\264\277\026\016\266\335\202\340\231?x\236|\215\022/\321?\365Y\322\356Q\266\264?L\nH\224\351\352\262?\307\227bD\350G\260\277\227r\300\241\263>\225?\241\230\254\2475\365\221?1!\014\323\275\n\301\277\2067\233\325\246\314\251?\263\225\357\360`Z\305?\004\356\n\350\003L\273\277{\215\033\301\372?\261\277%\200\323\360\355:\264\277;\246EU\355W\262\277\240Z\267d\026%\322\277\353\275E\371\362\232\262\277\377\264\351,\\^\262?\0359\214\325*\224\240\277H\343zJ\225\265n\277\307\034\263\3367\224\245\277\231\310eH\245\201z?\3349\371\325\271\367\264\277\314B\020\010\2000\242?o\246\344\014\000\204\243?\254\2604\227\024\005\223\277\200\213[f\037\260\262\277\371\t}\035\216v\206\277\'\343\276L\304\037\235\277\177\243\233\272~\272\261\277\250>\372\025\273\207\271\277}.\214\361\021\"\255\277\265\322\213F\337&\264?=\307\033\014\271\351\275?\372\343\306\026i>\212?\007\352\320\302\325\232\234\277f\274I[#.\301\277\022\022*UL$\276\277\341\247\257k\256\203\253?\277\007\367\333\311\216\224\277\236\"\002f\313\251\302?\330\236\335\247\"(\303?\037L\222\177\235\233\236?\373\235\221\205\371R\256\277)7\263\335\255\227\261\277\323&\201\365\246\001\260\277$\003=\206R\310\242?\006\232P=\303\277\307?o\302\313\356]\037\305?\311X\374\376\026\205\301\277o\006e\25045\242\277(+X|L\361\244?\3439\024\3653\303\302\277\231)j\031\243\241\264\277\272\330~\277\272\204\303\277\034\250\323\340K\364\244?\367\001`\"\237\006\266?@\034J\232\277\360\267\277J7C\013 \350\247\277v\247\321\244\323\034\240?~\221\002\275\221\227\245?\217.&$/\342\302\277\376w\230F_\014\272?F\340\302\251\207\010\265\277i{`\3677\211\270?I\260JD\320\302\260?\211\361\203\0372\007\314\277\305\\L\246\216`\306?\267\207\203sB\331\313?\027:\\\242\227\326g?C`9\021\311\354\245?6\t\350G\177\026\203\277\"^\016\353\276\271\252?G\3605\264V^\253?u\265iJ \235\271\277\030}j\355\3658\307?6\255x\263Q0\201?\205\000G?D\253\264?F\222\216\247\305F\261\277\261Ua\274\331\243\212?-\336\203\013K\203\225?{\032\035\0136\'\266?\313\334\221L\372^\304?\344z\216\365 Vr\277\305x{\302\033r\230\277I\324\337[\255_\303\277u\316\211*\016^\262?x\230\333y\350o\273\277\345\'m\0240\307\263?y\240\245\223\366\205\177?_\351\035`\025?x?v\315#\226\2335\261?\026upS\212\212\223\277tn\'\177\036\016\275\277\222\2340c\016\350\277?\357\037\361\277]\370\251\277\310\371+\253I\321\322\277\007$\222\354?\360\250\277\256a\373\223\263:\240\277U\217\326\206K\253\226?\2141)\223\nhy?\"\211t\362\253\237\377\276\333CT\245\325\223\237?U3\n\323\366\322\323\277\017\276\276\273y\204\234?\210\244\\\245\213\362\255?\251?\336M[E\270?.1n\243{\030\253\277\270\261Lxq>\241\277\276\263\005\320\372\'\267\277Q\007\246\353\212\367\231?\357\312\3764\376\332\261?\270\374\362u}\255\242?\371\370}\350\233\215\307\277\334@`\226J@\270?\237\201\004We\301\240\277n\370\037\374\366/\312\277\363\313\316_ =\260?+\202\371\342\342R\205\277L\362\347\312\226\311\231?\201\203#$(^\300\277qa\224\364\357\270\257?\033\226\360\274ke\255\277\357\316\207d\363\301\201?\201\2354<\344\234\261\2771\024?\310\223S\311?e\320T\262\022\276\266?\375i\003\334\005\305\201\277|:\261q\361\356\300?\334\277\313\247\340\313\223?\245[@\214Q\030\252\277\360\376\342\300\204&\267?\321>\272\003}\203\270\277\007\353\246,m\267\221\277p^REJ)\303?\320\250O2\2768\234?2\204\013\250\255H\255?^\337=\360\037\246\270?\233\311\370\340\3313\327\277\301\274;\036\321\243\270?K\301R;\330\336p?6\353<\230\252\370\206?S\322]\373\321\235\231?\211\312G\n\300\247\250\277\214\032\035\361\000\236\301\277\021!\367\215\377\217\300?\206\357\244\014\214\201\273\277\331\204\270R\315\302\214?\206\244\013\216\010S\242?aAj\375\337\347\224?\362\266\034~7\270\310?\261uTv\022\r\214?\324\250 \261\010m\265\277W\200\243\245;\345\216?\330P\231\226\0212\270\277\267\021\330D\207\223\312\277\"\235p\035j\003\310\277\370X9_\373\221\271\277\006\2351[<+\247?\344VU\t?\364\265\277+1e\036o\262\232?\317\013\327\001\225;\250\277\023%N\355\337Y\264?\013\372\200q\305\235\275\277\206\347\267\201\217\315\300?;\345\366_\236\002\263\277\357\020[\r\270\222\253\277\357\376\223\302\231[~?O\314\254q\252F\302\277\032|\307\250\326\362\302?\263\367\221\211\007 \251?\377\014T}\362\337\247?\373\266\024\360`\303\263\277I\227?e;\276\250\277,3\006w\r\303\250\277\325/)\262A\017\255\277J\215\353\366T%\273?\272\303\235\260\342O\235\277\371\325]\205_\365\207\277v\324\221\215\004i\223\277\2465aA\374\362\240?t\213\022_$\214\221?\373~\202\244J\003\223?\322\230\243\030%\034\306\277rB!I\367\367\273\277WjarU{\266?\220\314\316yb\222r\277L\225^+\241\021\222?\027\033\346\000(\226\227\277\361\336?\265\233\025\255?:R\233c\326\005\226\277\005 )\252\277\005~\277\266-\310\243:\017\224?\265k\210\323Sp\263?\016S\025\266\236\232\311?p\300\265O\027\244\254\277\254\272z\332q\311\251\277\206\363\026\303\365\312\266\277\032\002&,f\016\267\277:\253P\333M\'\240?K]\267p\375\245\311\277\237\236\337\227>F\250\277\201QK9\232\317\206\277\001\025\0200x\207\266\277\275~H\345\327)\250\277\241\306k]\031\322u\277\016\301\327\036\303{\233\277\230\306KAot\260\277\3328\333Bt[\266?Q\274\202\034\360\307\265?_#-\366)>\222\277\330\227,1\341\306\262?\014\"\367\t\014\334\207\277\243\307\355Up\246\236?\263)\377Sj\240\266?\032\370\236`@Dv\277\214\177\235\321\241\211~?1\303\325\344\021]^\277\003G\032\221\303A\305?\326\367A\026\024\326\243\2777GO\214\312\370\215?/2\255\2409\000\220\277\205YDBZ-\271\277\253\3636\270\271P\260\277xe>\nP\320l\277\313\240A\315\240\341\260?(\342\020\254OE\305\277\253\336\327\021\350<\273\277\r\257\375\366\371_\231\2772\223\376\010\017nt?\237\342\352+>\014\273?\024\236u\376\255\017\225?\307R;\005@\214\301\277\367*\230;\n\342u\277\200\343\243Z\364\242\224?\372\376\234\236/C\243?\003~H(ap\265\277\313g\270U\020\303\205?e2\207\347Wh\252?\315\361\2675\202\330\300?\372\315\220+\0234s?\226p;\306\262\t\262?|*\250\263\365\254\274?\377\220\274\327g\263\274\277\'\237\334w\365{\264\277\213\317\357v\314\213\260\277\216\340i\317\0135\214?\255\330R\245\230\346\244?\240\02262b\007\201\2779#C\370b\353\271?\2724\213\366\242H\245?\270/\373\203\032\032\233\277~Xg\'\306_\270\277\\6\244\204\373b\205?\253)\3539\356u\256\277r8\232\305\361\257\242\277G\272\021\0168\263\224\277x|\010\244\340k\210\277\234\274\325\212r\002\253\277\353\007\254\247\030uj?(gC\247\332\203\315\277\007\272n\0364i\227?:k\2236\201\334\273\277\267\363\026+0^\313?\003\350\375\363\3539n\277X\020\200\320\037u\272?\270`\344\303U8\262\277#\374y\243\333\340\223?7>\301\014\023\027\306?\025\265}9}\347\267?\227\337{\314\372\002\302\277\277~\313U\252&\256?\250U>\332\336\010\243?\331\376\376Ck\237\211?\335\037\374\027\333\352\243\277?\030(\335\313;}\277\023\256\003q\312\364\270\277\016\351\326L\234b\254?\361lOP\307\213\303\277\201\244{ \037\207\262?\221Lp\255h\372\265?\274\242\235N_\276\257\277\303~-\"`j\222?S\275\263Y\215\311\300?\377[)o\352\002\251?4\207\351\313\3251\213?\n\311\215\232ip\273?\372y2\375\310\354&\277^CZ\304\352\351\307?\024\322N\022\343\334\265\277\024\337\002\347\364\346\261\277\n\315\222\033y.\264\277\274YZ4\371\302\250?R\177FX\271\270\250\277\317\336\324\304\2010\277?,U\373\211\177\204\264\277\r\335\340;\303\343\235\277Bg\003-)\032\276?iD\301u:-\302\277\315\207\355\3039*\303?^\016#\307\374\375\265?G\036\216\357jA\242\277<\347BV\021\331\251?\361:T\3759M\024\277\273=\266\252\356\302\312\277q\223TE\'\310\324?\231^\230\271J\364\240?r\354\007#\301\027\263?\031gS\025\276\206\317?\021I\226\201\001w\267\277\0278G\3716v\300?\361\313\310\337@\272\236\277\3504\271\2463?\273\277\026\023\242:\272\230\263?\201\326`hW]\222?\311|\t]\215\321\261\277\rwVeQ\375\306?Tb\247\322tq\250\277E=lz\262\253\267\277\351\033(\213\310+\267?vE\226+x\237\222?\r\336Y\320\321\261\235\277+\007\335v!\213\214\277\350\027\013\nm\271\277\277\210\327y\215\371\361\265?r\013*Po\335\202?\030>b\2325\360\235?\r\205y\t\3366\260?m\037V\201\374f\272?\0258\323\010\0019\310?K\365EF\352\220\277?0FJ\016\306\260\231\277\217_v\307}(\236\277QF\225\334\237\226\324\277\361\341is@\230\246?}HO\277\367,\230\277\030\352\327c\212\342\273\277\272!\266.\303\t\260?\322\264\252=\215\004\233?\n\033\223U\364\203\273\277\302\027\332\010\374\223\272\277\257F|\301k\213\270\277&\242dZ\363x\252\277q\023\355x\354o\272\277\363H\261\312#\035\270?E!,,\300\377w?\343&\222\262Ap\311?\235\'n\300\233#\252?\335\360x\375\313\224\306\277@\347\234P\222\237u\277\205\".\246-i\213\277\260\016\265\006\374\205\262?\200?z\037r\320~\277\t\035\026\265\253\356\246\277\216\224\371\272\235k\277?\350\365v\270\025J\311?\254\207\3522\364Lr\277z\030\320{\236\n\222\277Z\005)\022>\327\245\277\204\354\362\214\375r\215?\352\253\374\274z&\252\277\304\037l\245\006\223x?J\227\235\221\340\377H?\265\200\252m\033M\201?A\236\262\371\332\311\301\277\232QE\347\351\341\302?\"\253\003\265\364T\245\277I5S\350\237\264v?\002\n\345F\327\355l?\262\275\211\000\0200\217\277\273InZ\361\334\270?\220R\"\376\361/\263\277\347\200,g\307\322\316?c\001\000\327\265\252\241\277\360\374\361X!\037\206?\250S\352i\261\237\266\277\270\305\3261\376\211\265\277\300\237U\325H\266\267\277+\303\232\200\3129\311\277\001\363\354\272e\372\302?\003\177\202p\326\267\301?\277\256#\252}9\233?&\361;\026\251\334\243?/\177FgCk\220\277\327\210\001n%\340N\277\215\217\001\302\235O\255\2778$\032^\217<\262?2+\202\n\0216\221?4\200\271I<\\\252?8-S\221\241\022\233?\007\373\212]\211f\263\277\034\004\3500\307\202\231\277\326\\>js\315\257\277\205\363\363X\304\315\301\277\325\353\254\373\202\360\253\277\025\010\313l\300\232\270?\277\243\030\226:^\265?\0074\357\247\211\016\301\277 \273\364\252\242?\263\277\204~\\4= \242\277\224#\3103\341G\263?\3117~\221>K\241?\363\323d[D\253\267\277\275\330!\031\2721\200\277d\234\272\267\274\345\271?5:\003\227z\243X?)\241\327*\"\245\247?\246\272\236\023*\207\241\277N\004\325ZQ\016\255\277\234\325\363\3676\332\260\277O\177|\014\030m\257?<\201\261\030\227E\272\277S\360!\007C\374\244?\377\306{\327k\266\223\277\r\255\027\236\316\025\320?\376\230 \347\024_\276\277\207C4\351P#\225\277\001\360U\232\232 \277\277\337-\276\017\257\221\261\277\211\026\245g\361m\266?\255~&\310\356H\257?-\024\230Z\004\004\267\2779*o\010\224J\231?\0179\"zD\323\226\277\261$\212\300\356\004\231?\246\022\257f\010\336\250\277\202\001\300\037\363\262\260\277q\312\014\232\341\'\275?6sKT3\000\251\277d\320B\331\005\013\255\277\027%r.<\374\201?q\365\343C\262=m?]f\204\034\020\360\261\277s\222\335\037\251\376\264\277bz\237\265\222\010\227?\r\3144\026\224\305\300?-\244BDv\206G\277ia\251w\254y\237\277w?\374\n4}\300?\325\226\371p\023>\307\277<\262I4q\217\270\277\226\"\'\031\377X\260?_a\246\341n\357\202?\226\314\243\265\276Q\234\277\231\n\240\364\\\206\310?\n%\034j7\324\305\2774\020\276\020\306\'\313\277\302(\\\304A@\244?A\334\002\351\207j\251?\235\337\315\033\223v\204?\276%\021\355\355s\261\277U7A\026\265.\251\277\303\022R\207\325\271\256?z\036\001M)B\320\277H\266N\223T]\227?\253\324x6\312\200\266?\035;\343.\321\022\303?v\366^\206\356S\261?\326\001\210%z\354\313\277\251X|\330\262o\245?\254\355{\035\200\360\321?\336B!\362C\250\242\277lc\265wO\244\215?\036\243\357\204\037q\221?A\tr\025T\235\204?\345\314v\026\260\204\265\277\'\226J\344+M\301\2779\361\243!\351\350\317\2772\240\032\207l\371\237?f\225\373T+\220\246\277\324\371\n\036\2401\234\277I\201\237\220\207[z\277\300\222\354\252\212.\202\277\322=\300\361Kr\263\277\"dM\310@\307\312?\031Q\350\236\025pb\277\n\244\356U\260V\220?\315m\260\361h\257\311?\002\354\350\375\277\330\244?\352,z\367\000T\266\277\004,+\345\340\251\301?/\014_\010\325\306\304\277\236H,\023\232(\264\277\227L G\271\200\251\277\352\037}\021D\320\250\277\373;!U\351\304\270\277\241\246\367\336\203N\240?\3478#\022\036\342\252?@j4\341MN\255?\005\207\032\324\307\233\264?\336\342\235\271\242W\276\277\355\000\315\364D\231\221\277E\005c\367\2514\261?H\223\215\311\366\262\247?\213\261\246T\010\337\256?)\023>F\271\256\243?ON\025\220\004E\256?\245\307\365h]\362\241?\313}A\307\021 \313?U\017\277\216\274:\250?]\014\277\357\271\275p\277\221l\376\253\343A\257?\276\003\351\240.\020\275\277\020z\265\267px\226?\272O&w92\261?m\230\307@\321\220\251?=\310y\201,5\304?A\244\272\375\245\351\263\277J[\237\311o\366\242\277\260\023\377\212\325\203\235?\226\016\207\336D\363Q?y8\207v\212Y\263?\271\234\211)\020&v?\245;:\271\353t0\277\363N\314\251c\010\273\277f~\311(\254\214\273?`\355\217\263\271\023\262?\323\241\201\211vX\244?xC\240\246\225\301x?\320\315\263@4\036\242?\253\262\240\275\242N\257?\203\325\372>o\320\306?\274\323\277\332\273\017\302\277\262\206\321\326\310U\320?\257\\u\037\261`\246\277q\241\230\366\207\250\260?K\341\300\273\221R\244\277 \035\016\224\207G\220?O\032R+m\302\251?\rF\003\224\241\244\262\277>(X\255\n\005\315\277\2652\216\207\304:\240\277+[\211\200a\207\224?\211\277\337\214@V\301\277\332\357\032\333\205&\240?\360\3038RB\375\261?\002\007\260\321\376W\245?\203\022D\366\032O\332\277\320\246M\264\347\372\253?O)\273\374\246C\247?\320\013\263\372}f\323?\320}\204\321 \311\276\277v\262:*\246\335\264?\205U\304JX\327\302\277\333\251>\334\203\321\275?\227x\037X\027o\277\277M\237+\257\026O\243?\032\355\'\2414\244\242?\207\327\023\\\355\312\247?\001l8J\273;\265\277\014\300)\032\005W\271?\025\275=\340i\363\241?\273\200\315\321\202\274~?C\276)q\274\347\253?;\027\231\247L\261\301?\355>W\355\211\020\257?F\300\'\tw\033\302?\341\004\261\224\252\223\301\277U\003k.\031G\320\277\321F\211\224G\353\235\277\353\375\252\373\315\210\214?\206\321`DTi\226\277\023\335\261N\375\266\300\277%\335\271^\245\004\231\277\305Q\333\232\232\244\266\277`\004%\207~\177\267?%\001\325z\202o\241\277\317},\203\274\244\250\277\362\336s\313z7\276?!\027\274g\323\212\246\277\360\216kg/\313\212\277\361`/\342\305@\266\277Av\0132\232\305\263\277,\301*pu\213\277?\005~\355\234\032\272\232?Y\267J$&\215\300?\237Q\010\026Z\220\261\277\240\335\001\310x\271\253\277\r\370\315\016a\363\272\277HK,\365\275\331\267?\273\000\307\036\314\020j?\203\016\315\376L\265\261\277\331\200\373\305[X\266\277M\237E\313\256*\232\277\376\234\313\244\354\253w?V\024\363b\325\021\303\277\023\rE\321\025\\\300?<\200r\353\316\035\244\277\315\200|\335\267\265\202?\264-Z\n\210]\223\277B\"\3700\205\277\220?\253\352\263\241\231(\245?\344\230\272!\017\031\261?m\200\367\032\362R\240?Y\3663\235\026\253\305?\241\370J\032\234r\252?M\177\253;F\246\275\277\003\265,\323q\222\245?\362\357\356un\260\304\277N;\017\005\240\255\262\277\300_\365x<(\304?\223\203\341\3018\327\214\277\316\275 (97\256?\317\301\202\266\271\014\261\277\356\374\367q\246\374\255?N\376Od\020K\233\277\270B\207\272K\010\230?h\\ms4D\307?\024z\014\253\3526\263\277\240E\265\235p\240\202\277b(\227\377\3252\317?\2301Q\242\221\261\254?\231E7\260\352\006\261\27730M\266\2546\312\277!u\242\005b\252\265\277\305\016&\337\220\237\244?\ntI\31472\246?\323G\212\243\031\213\243?\213\002\367\305\204\\\277\277[\001\204k\256\302\203?+\345\277\357\235\326s?\370w\014\334\276\233\320?\204F\217)\315\007\236\277\020\267\177:\265\353\264\277A\212\203@@\000\231\277\300Au{\030\215\264?{b\340\007\315h\202?\366/\323]b\302\310?\342L\3007\272\363\324\277f\226\233d[}\226?z\225Zo./\301?\361\250\245:\010v\310\277\312\373\014q\302\360\273?\315\277\324F\006\r\230?\245\207\'\227\215^\261?\216\254\366qB\310\254\277\340jGu\353\275\255\2779\232^\212}\371\262\277\341\224%k\371*\277\277R\212\rX:\310\232?V\325\235E\341p\246\277\311\027\234\332\022\247\272?\232\'\351\364\373\334\311?}t\217@\360\032\220?\263\256\2058\213\000\263\277\303\242\006\2632\351\203\277\365\244Bi\367f\277?\325\246.\303\366\356\272?L.\272^x\356\202\277\312\212\330-\005\362\242?\232\357\354\240\014?\201?\364\001*_\025\303\264?\007\215VI\226\273\272\277\t\357\231%\251\331\220?\242\253c\226\222\336\304\277\375\010=\030J\031\211?\365\206c\n\343%\254\277\323\303Q!\254/\245\277BWtr\366\325\275?Fk\272\345\307\272\247?\3173\357\031\013\336\267?-l?&%\033\262?\0328#H\350\267\260?i\024G\265N\276\271?3Z\251\235\307o\304\277\323\271\263\357h]\241\277J\230\237@e]\262\277\017=\006\323\365\273\256?\010\257J\320\262\177\303?`\267\3252v\304\271\277\2355\350s\245r\306\277n\251\260\237\305\306\261\277\211L\341\250\352\351\257\277:\241\366;\0366\317?\0208\224\305\326C\276\277\2659\360\373*\377\244\277\276\360]\005\275\303\215?\314\262\025\017\376\243\272\277?\211\"^\201\231\304\277\002O\351\365]_\243?_\032A!\357R\313?5\ny\035\177E\275\277\326\262H\321\0357\300?v0\236\223\177t\301?\3743n.r\261\322?\0031\236\311u;\246\277z\245 Q2\277\311\277\3208c\331\335\235\275\277Gt^b\014c\277\277\327v\020\177\274q\300\277%\2758\371M+\315\277\202\257|\005\254\006\317?\343T\260=\002\333\234?\256\272\326\3674G\235\277\023\340\351\267\233\234\304?\357\377);\007B\251\277v\257\243\037o\240\260\2772Md[\232p\260?\245\336v\255\306\347\322\277S\246\035\"c\347z?$M)\263\215\357\300?$7\2542\210\032\317\277`\306s\273\027\335\276?ut\221\323@n\220\277\201\263\0029&h\302\277\242\200\032\277U\304\214\277\244pE\r\337T\266\277\214\374b>\331\240\265\277\203\336\234\033We\275\277\262\346-\274 \003\220\277\334Z\306\007|\317\261?ndL\337\224Y\262?=\377\346p\374\312\261?5?\246\322\304\214j\277fxE\267\375\207\306?\242\223\241|T\374\314\277X\221\253\311\364D\260?\374\203\274\022\312\242\241?i\362\263c\2356\246\277\327\320\242)#\373\307?\001o\364\017\226n\255\277\273\321\367a\034\037\245\277\t\273-Cb\244\255?\000)3\0136\322z\277\321\206c\351\332\204\262\277\021\227\356^\230\341\245?\027\322hBK]\241\277\025\332\273o\037\370\243\277\370n\025\243~\225\247?4t*h<\373\267?~\277\373\213b*\243?\326\007;\324 A\261?\266>[*\340\310\251?K\0174\371\213\315\310?\252\007\325\233@i\272\277M\255\253\346\264\225\265\277\243\357\260\252\266\013\303\277\206\206\376\344\346l\264?q7\233\352;\336\310\277\261A\205#\030\207\310?\230\267\325\261\025\t\252?H\214\333\265$\005\227?\324w\225\004\327A\254?|\375.7\326\366\307?x%\227\250\000X\256\277\266\327\214V\003\201\241?F\240n^\214\344\264?\266t\270\322\023\261\264\277\356/\207\326\311\205\264\277\317\205+\211U\367\262?2\376\240~C\370\311?\327\251\234\307a7\250?3\343\363\347b\217\241\277\246\364\326\317e\310\245?\301t\316\3060%\310\277\271\267j\241\251\352\225\277\370\273Z\312\205\357\254?\212\261cm\250\336\271?\205\3052\013\023h\243?\253\357\246\037@\326\240\277V\362)\317vn\207?y\025zD(\211\322\277\256\241y\343\005\376\202?U8\316\331\362\261\254\277\327\2777\241\314S\303\277|UQ\361\351\326\223\277\215\253\262\027H\024\324?U(\236\231\216\366\273?\004\230h\245X\360\326\277\016\242`\273\273\007\223\277kD\231.!\220x?\305+\034\352\272\371\263\277\"\202u\210Q\243\300?\022G\245\240-i\272?pu\271\304wf\244\277\206n\201[_T\242\277\335\014\367V\240\035\275\277\367\262\001\230-s\262?\305\025v8\021\215\301?\330\344\376\251\311s\217\277\251\370\356{y\261\270?\255C)\207\263S\233?\217\230]\334\303\347\244\277\027M\350\2764\265\233\277\223\\\034\002\2175\265?\243X\343C1\002\303\277j\243\362\017\030\007\227?\375\364\364\260\232\221\264?\3653\350\033p\360\251?M\226\244\023\317\357\301\277\374\200\367m\2610\231\277\270\230\272\226\262A\301?\267^@\317j\027\277\277\001;\204J\253\037\212?\300Af\017\006\314`?X\323p\273\327:\245?<\362\374\374\202F\316?\033@-Q\224\303\214\277\025\205k\025\t\277\255?R>g\322M\214\235?\240\372)S\030j\234\277\023\275\315U|\210\200\277\211&\0104r \253?\207\244\"u\252\272\263?4L\342\247\302\302\267\277\034z+\31647\260\277K\220\252\017bn\314\277\037\272\223f\345\314\241\277R\321\201\246\007M\266?`\310\0274`Y\307??\315Nj\211\365\274\277oT\257\222\001\357\234?\204\252\231b1\267\267\277j<T\205\237T\257\277\271\3535J\232j\265?\200b\371\n:\343\240?\343\327V\241\304\217\236?^\330%\313\215\344j?<U\267\321\314\366\240\277\311\010\253\2058c\221?`V\034\333\271\247\215\277a\257\275\216\315\244\242?WFvW\375\353\270\277\335\000\224\371h\337\306?/\230\220\261\014\366\303?\006\232\227,n\367\254\277\000k*\237\237\201\240\277\032\225\237\365\213*\204\277v\241\3440\271\261\275?5\336\326w\021\266x\277/\017\235E\335Pr\277\244\r\nqA\376\273\277\355\344c\213\235\342\261?\237hq\257\223?\305?\303i\275/E\266\261?\364\327\037k\336\000\242\277\366\362\003G]\033\267?\211\321\375\217{_\274\277%\211i\350\221\020\307\277l\243\003s\351\003\264?\327*[\034\245!\240?\371\310\337b\t\303\235?_\323\270jc\311\260?\\1\337u\363\360\277\277\026\250\2125o\030\267?\221\326\204\344\306\212\322\277\3473_\264\240\315\230?\302K\232\225\260V\222?\n$\003\336x\022\303\277\233[\327\272\234\334\267\277x\364z\3506\203\240?\232\024\274g\324\003\275\277QE\244\361\311\351\334?V\372\375\254\261\365\257?\325I\210\370D\035\263\277\3664O\321F\331\250\277x\330\\\2450\237\272\277\356*\207\221\031\222\221\277\251\230*\225\333\320\257?p\274\233\034\252\331\271\277\014\001\330\276\242\341\253\277\345\312\355\247\212\377\255\277\264\337\035`i\376\272?\006p\352?\006p\254\277\346;\025^\026\222\220\277o\251\262\226\014x\247\277X\372\017\270l\235\312?&\013K\\\245\236\263?\340\221+`6\022\217? T\023\243\360\203\307?\217\201\364\227(\375\277\277\270p\267%s\267\277\277\273\362&\231\341\236\260\277\003>\030\332\265\376\274?=\235\343\033\036\364\212?\367\334\031\327\334\335\303\277\226\2573P\217\235K?2>\273\377<\024\220?\204\030\240URv\265\277\307jc\350\013\270\311?\346\026\255\340\267\350\240?\225\335\374\217\206\330\205?\230IP\265!\321\214\277k\340&(\021{\302\277r\350\367%\223\242\307\277\336\021\1773r@\243?\254\341\317\2050\314\200\277<\352%\277\231t\273?\017\207g\205\362\220\221?\254\223\372\260\025\307\252?\017B\354\375\337x\301\277r\032\316\371\213\326H?J;\271\027\313\274\215?\334\300\373\351\243\204\273\277\236\265\203FUt\322?B\205_\321d\255\260? \310\311\006\252L\304\277\007`\323\332GK\301\277iK\332\236\264>\260\277J\234\036\271\374\r\241?\372\330\272^\205\025\260?\265X\027\372\013r\302\277\210E\003\200\375I\277\277\266!qK\246\313\256?\302?/\214\305\234\276?\213\367\001Y*s\241?\350\243\021)Qj\266?\3202XSM\217\245\277\020$m\216\201\211\257\277\242\007\225unWy?\351\3157\007*?\273\277\351\225w\257i*\273\277`&\031%\370g\304?\302\003\334\247\202\277\202?\205\247TF\250-\242\277\026]\022\276\247\340\304\277e\352(\244 y\253?\037\202E\345\023C\233\277zT/3\364\362\247\277lK\212\324\374\355\221?j\263\334\023\272v\261?\347t@\004\302\304\237\277\261\254sJ\\\305\251\277\301\034\306\207\305\031\275?\203\306wg*\226e\277\261\327\225\370J\005\242\277\020\234\026\363\336\332\241\277\324\320\206\207!\216\267\277\377>\204Nh\205\264?ZG\334\273\215\366\252?\"\021\251\002\363\323\212\277\205\316\370\327\210\324\267?\230#JDV@\325\277\252\n\220\"\224=\223\277>\330\310\366J\246\271?D\321|\256\200A\271\277\311\216\247\304E\036\323?]\304\363\333\251L\266\277\255\324\351\307\330\303\266\277\345\355\237\230\277\014\267\277/\247\256\364\3039\265\277Wp\020=\246\357\206\277v\313\246\267!D\260?\253\016\271\004f\361\311?;P\377\006=\223\246?\000\034\367\301\377\244\223?\224\0318\020\312\335\326\277\030\263\032\007\277~\223\277X\337\026\313b\371\252\277x\200l\201,\214\200?R:QH\266O\301?|^\204SS\321\260?6\024V0\027\251\253?\2326\261\322\252\236\264?\232\254\"#\367F\253\277\022\033.\342\325Wd?\177i1\205\233\352\243\277\226\226\362Z\235W\305\277\330l\205\2639\353\246?\244\331(\207N\017\244\277-\215\372\204\207%\305\277\275:\260Y\276X\240\277x@\306\326\237\'\211?nc\307-\234\250\301?\226\343I\3538E\305?\266_@\343H\327\215?K\237\221Vs\271\233\277\302\365\006\211\367b\245\277\030b\214\334\201*\276\277\211\343N\306\350\326\242\277\212\2633\276sL\233?\025\021\377\335\330|\312?\322@\001D&M\232\277S\321jS\tD\301\2772k*T\371F\241\277.:\266\310\314\r\251\2773\177\331\330z\237\262?\212\374\261\314\016\342\274\277\325iTK\363\021\301?\021\212\211\300\201\001d?\3416S\355\031\021\257\277\1770\310\227\276A\260\277\036P\231\344\014k\244?\327\313\375\357\207z\265\277?m\023\370\006\262\217\277\332I`S\337y\273?%\313t\032\254\333\274?\027\224\217\232D\006\272\277\210@\226\357vL\304\277t\264\2514d\036\241\277k\td:5\354\203\277\236\322\227u\214%\206?5`\351;\031\356\320?E\323\232\036A\341\213\277t;A\t\212\006\300\277\355\364w\353\340\022\261?\344\241\276>\364\225\202?\355\017\030%h\264\264?\204\203#m>\246\253\277\211\355{\310\345\376\301\277\351\262\304>\256\246\260?\347\255m\3345\033\267\277\304\037\362/\260\311\313\277\216\371\213\3068\004\202?\233\250\2158\252O\306?\214\364\347\214\'\220\246?\316I\212(\242?\262\277\215\230\372\250\216\301\256\277\036ZTm\342\261\241\277\362V\007\355<\225\302\277\212g!\022\035g\257?\036\270\351\035Z\260r\277\372.\364e^\t\243?\367\200\305gZd\276?\274\324\366\247\312\337\207\277\024\343H\360\311q\273\277\n\025\023S\241\026\320?\243Q\236\013\210\016\236\277~\301KB\350\363\255\277\240\017\214\375\030W\304\277B\265\343\000S-\266\277\231\tt\210\272\013\230\277\014\270Xh\250\"\300?\"\254\371C\345O\256?\266\353n\3013\220\261\277\236 kR\305\324\262\277\332\251b\025\304@\261?\335I\252OU_\314\27748Z\223\255\232\201\277\335\311\232\006K\334\264?\343\230\235Q\312c\271?\245\255f\026\3778\177?Y\212\203\353\244\302\267\277Q\266SO\023\357\276?\362\334\256\240\311\233\324\277`8o\305\233\310Q??@\344\313\226\323\227\277ohp\332\321A\263?\006.q\365\263\236\241\277\206\300XD\276\211\243\277jr)\253\331\003\202\277\236\376\336\365v\034\242\277\252\201\313b\352R\230\277O\363\207\206r}\256\277\262\342\230\312\001\377\303?F>\007\202\347\204\266\277\235\215v\356\376\277\316?/\324\000\177Y\265t?\332\257\203*@-\250\277Y\334\225^\370\225\270\277\247\333]\334\035\375\275\277\022=Z\243K\350\301\277\304\240g\365\215\014\264\277\206\3431^\302\235\225?^P\273]\017\007\260?\330K&\261\270\037\266\277\372c\202\377\267\034\300\277\325\237\257\334\343\375t?\323\026n\036\220\211\273\277\\3\244427\256\277w{\235\241\2178\320?s\004g:\3411\273\277\354\221\035\272\224\027\276?\363\217a\257\231\346\246\277\362:\347\343@\251\231?\342\231\330\244\216\255\235?R\325=\2443\201\222\2771<\235\322\263a\231\277\310\257\335\272\246\371\261\277\205|\375\207b8\302\277\214\\\372*7\034\246\277\354@hS\005\014\242\277R\372W\354c\230a?\312m\234\242\266]}?A\216\224\263L>\266?9\025\220\275\321q\241\277\361?\036\336a\316\302?j\341=\213M\017\246?!\230-\265\376\264r?\201yit55\262\277\301l\253\270?u\237\277\241\024E\306\273\353\221\277\217\335\246P\370\365\253?Z\310\243\002\373%\223\277\221OzG\n\264\276\277\336\r7>\310\317\262?\3144(\241\202\376\231?\265[\360\006*[\246\277\310\347-\345\313\351\267?\306 \024\305\345Fw\277\203\034)I\353\010\320\277E\326\233\204\313\210\241\277OX\334\277~x\274?d\326+\345\221\244\251?\035&0\261&\254\271\277\243\212\210\2059\314\265?X\021\273\277\003$\250\277\027\214\230#\027\t\250?f\314\007Z\224\351\255\277\357\036\221\243\007\262\217\277\300\374\233\346\330\020\237?\247_\217\362\025\354\255?\260\377\007\260\222*\252\277\207\360\245\315\205W\234?[7\321c\003\001\264\277\370c\325\331\223g\246\277\262Z8Y\'i\304?c\224Y\241\367G\264?)1\222\021\231\355\243\277f\212\230hR\274\232?\224c\315Tc\262\304\277(D\031\256E\371\310\277:Rbp6\320\221?L\0348\340\333\226\304?\0262\202\322\324_\245?\327\326WA\222My?P0\243\\\007\n\264\277\301\000F\316P\336\231?\234\301\322\003\034<\323?\261lM(w\367\302\277\347\026|A\323\023\277?a{\244\204\210\201\227\277\312!\256\206\245\242\232?\321\340\031\327V\\\303?\"ld\007>\257\241\277\\\230\222\001`\366\264\277\316/z\365\014>\200?;\350\024)\004j\245?\310\017\222<58\250?\274\325\321\232\356\r\253\277\332_\311\243e\375\264?\344\'M*\236\233\260\277\265]\022\204\276\262\211?\320C.\333\037;\250?\374IHa\001|\246\277\200\014\376T\304n\262\277v\001J\370e\272\301\277\274\334@Q\017\247\203?oS\026_z\272\246?F\317\032\002?=\251\277\r\037\010\244\301R\207\277\250\270\303\234_\351\247\277\203\007G\033yI\325?\025\277g\341T\300\257?\321\233N\026\275\375\250\277\013,\000ZF\025\311\277x[\346\236\372\014\257\277\221\350\340\326\337\271\226\277m\230vcX\275\245\277\260/\343{\341u\263\277X\035\"\317o\341w\277\317<\306\210\035\324\270?\275\0321s\034\376\272?\253O\316;\265\351\331\277H\302\221yl\314\273\277\205\320\331\272\224h\261?\310g\217\212\244k\242\277\354\306t\003\201\362\271?\236B9\013jX\321?\273\237\034@1U\301\277\356&\303\273c\304\246\277>D\200P\267\265G?;<\215\n\247\005\300\277\223\021[#\372\253s?&\357\324\032~\375\306\277\32712\250f\340\231?\'M\315;r\265\242?V\353 V\n\206\257\2776\363$\r\235\001\220?\257\215\326W\254\320~\277\373\236A\344\243\223\301\277\017\325\271\372\233\027\212\277\305\335\037\343n\302\266?M\324\023\265\010\000\313?i7\343\371\371\007\270\277\340\275\310\205\"zm?\350t\344q\261\350\241?\037\311\275\211zU\231?\365$\207C\334}\264\277\356r\222\245\317bz?\234\252_8\216\022\254?\242\003\221$\227\355\275\277w\235\240!I\364\215?dt\333\'\221/\241\277\224\351m\032\241\356\317?Q\253w\004[H\260\277\263v\273\203v\210\240\277\254\341\236e\376{\245\277S\255\254\025\007\352\203\277\025v\005\036.\220\265\277\321\206\277\361\262\313x\277&2\327\335\030\r\225\277\264\371\017^3\314\304?\351N\274;\033\205\267\277m)\210\235\362\327\263?\342EM\014\241N\271\2778\365P\213\345\222\230?QB`\324iD\231?\272Jq\244yz\316?\024GV\271\276*\244?\034b&\232\334\375\301\277\337F\333\207.\016\267\2771\010Ht\216\214\266?\331\024\301\267m\344\265\277 +\237\362\r\307\241?\227\274\202\366CT\245\277\203\307\nF\264\224\242?\323\304~aR\212\300\277\340\036\031\324/\016\272\277\025Z`\276Vr\232\277K\240\020\004\356\\\255?\204<\350\355\330\034\263\277\217F\327\273\264\254\316?/\036j\207\034I\266\277O\265\321Y\231\233\200\277\023)+f\367\334\272\277Y\034\326I\222L\277?f\211.\332.o\225\277@\177+G\027\3002?&\\\270\371r\315\263\277Ddv\243\231\242\205?.I\244\004\273\376\253?\332\301\324it\251\253\277\276\037\034m\345\367\262?\212\214\331\021\221\365\223\277\231\310\3030i\257\263\277x)\360vZ\226\271?\370\205OV\006\213~?\310\356\315\324\003\265\313?\274Mrwe\t\264\277k,\236\261u\331\263\277\242ep.\314+\256?B\362\263\367\006\376\220\277s\252\361\234\0038\322\277}\315\213\347\375\210\241?\366\005\034?{\024\236\277\244\356\225\017S\227\257\277\312\025\256(5\356\242\277^b)\346c\033\241\277s\207h+\234\230\220?_\010&\201\213\314\224?n\345\210~\r\010V?3\340\217U\250\251\224?oC\247Z3\362\313\277\207vw\362\233\212\310?\305o\242\007~\355p\277\263\343$d\254\320\262?~H9\314e\034\251\277\2322BK\264\261\304?\355>.\211\315S\261\277\272V\334\324\364\004\216?C\2209\204\007\n\225?\030\037\306b\205\376\244?\r:@\342\210\037\266\277\221]~\037\305\310\263?\235\033\021f\361L\207\277\272\313\376H\2115\263?\0203\032\325E\352\300\2775\307+ZS\371\250?p}u7\235\021x\277\000LG\231\305\260\304\277{);\007t\204\261?\316\350a@o\371{?{M\251\320\303\342\232?YV\212\333\2526\250\277WGWy9\216\243\277\225\341\354\247W\213\263?\237}\347D\365`\252?:\024\324\305\205F\276?%\007\226\325Xk\245?\313\302\374\335\265W\257\277\3542]+\272\321\315?\320\004\243p\033\337\260?\207\373@\2172tv?\246\310^\364\245)\320?\235\367.\201@\363\253\277\217\364\311\263Cy\256?p\200e\370<\232\301?\307\221\t#\263\374\300\277\026\210ac\235+\221\277j1s\322Fp\234\277kl\231\242\013N\275?\226/:\0301R\246?\240\026T;\n\002y\277\017\245\375\001x\224\267?\371\350Hu\271\266\317\277\223\315\367-\237\262\302\277\237b#\371\246\316\203\277\216Uk@)p\247? U3g(Z\276?\337QM\005\374\tL?FX\004\035\250\232u?\177\003\270\254P\217\244\277s\010\265.k\256\253?\356\201X\347:\310\264\277j\270\037co\217\206?l\315\233\336\202?\323?\345\001w\2665\255\202\277%j\027\277S\334\304\277\016\305\331=\202\302\305?tF\257\266\210\201\256\277\325\247\311\330\363!\261\277$\024\245` \306\237\277\003a\036![\356\300?\254\346\251\241\353\003\260?\201\230%\014\214\226\203\277c\"\315\260-]\302\277\240\364\3640\t\320\313\2773\377g\352\210\304\252\277\374>J\343\014\014\216\277\301F2\303\2777\327?\001\001\307x\363O\303\277\366En\226~\353\257?\336\362\246\260\364\221\265\277\321\031\313\026Ao\271\277V\321\366)Y\340\221\277H[\262L\260&\301?.\243\252\347Em\267\277=\376\031\344\024}\256?\037@\216SM\357\254?|\241 \221\265\302\301\277m\251\307\355\304\346\253?x\250\036\332\351\333\245?L\260fQm\"\206\277s\322\362\206\344\323\320?J\321\212?-\005\211?\007\353\244\312\226W\303\277\370\311Q\n\311\204\264?+T\223r\242\265\263\277\243}\270\256w\252\203\2771\315s>+\236J\277t/?6\331\206\200?\243[\210\357j\351\267\277<\026S\024+e\226?b\326y\344\360S\220\277{\341`\346_\034\252\277\2354\304\340!\002\242?\225\274_d\210,\240\277\017\247\247\240+T\313\277qM2\364\033\272\244?\030\007\273h\024\347\213?\260w\343\252\202\201\256?\306\005\314\021\367N\307?\026\0273l@\202\235?\337A\336\'\\\010\205?d\331\313>\305)\307\277\361\232\031!\344\336\304\277\354@A\031}\263\263\2775\2769A\362z\305\277\217\000`}8:\276\277\261\025\352\252\2575\253?zFL^\311\252\244\2776\010/\276j\341\302?t\353k\351\325L\245\277\330R\263\343\211o\277?\221\223^v\007\362\271?\026\265j\323\255\234\323\277(\217\210\230NO\274\277y\033]\332\016u\235?\305:\360\306\331Q\277\277\302\353\324\245\346\014\361>\327\027*\273Uo\246?9&\264\233t\026\276?\3210\362W\340\303\304?\264\312V5\217\234\232?\230\017\035\301\001\311\224\277\347s\321\322D\260\320\277\n\206\254\315\335\240\263?o\003\203R\177\211\221?Q\265s\0271?\302\277t\020\250\273`\262\307\277\241\342$\362pd\221?e\2504\322.\361\246?\037\361g\312\216\013\251?9\324\004\313U\025\304\277\317\321\246\005\320u\265?\251-\322\256Q\252\247?\030^\022\033Zb\305\277\026\036D\014d\334\242?5\023\347:-\343\205?\347\320\036\211\0330\301\277\245\334r\222,g\256\277\302\022\372\226\212Q\206\277\244\217\032\201\216\223\241?^\227x\352\270 \233?\207m\223\224\215\033\254\277]\345\332P\367/\211\277h\250\023\326\210\346\265?]\334D\201C\005\241?\376\177\202<\245/\261\277\"\377/\216\335q\255\277\267{\007\2108\r\260\277\017\210\023\205\234:\211?\316\214\372\370\310\\\267?C\251\225\277fr\300?7\030\016]L\356\227\277\200%W\265\205\267Q?\306\006\177\362\332Q\177\277\360\374\243\036\032\024\313?)Q\006\230\322\242\212?<\233\0334\313Y\267\277W\342\321\276\305\335\276?A\243\"\350\370\277\300\277\322\200\266\260\034\333\205\277\tF\333\t\003\010\265\277/\260;\3045\337\326?\244\001\314\375HM\264?HF|\255\265\377\251?\306:\312\303\247\370\320\277\023\275\0213\263\201\266\277\007\001%\243I\323\204\277\254\3433\010\314|\322?Ne\360\021\002!\247\277\275.f\251^\230\205\277\255\201\206\336\342#\311?\036\307\255\351\024\332\240\277B\034\203\345\371\232\267?d\376\220t\215\354\240?\3778\036\033M0\207?\311\254\334\210Y\346\312\277\021\326`j<\025\227?\364\205:\230DC\260?\245l\351\322\277\271\221?\217\241>t\371\256\304\277x\264\021NoC\260?\223P\"t6_\201?\367\333\353+V\357\326\277\337\331\325\266g\203\241?\3731\236=\360\027\262\277\253D\002\361\030\366\251\277\203\201\365\366ML\267?\240\357\"\005\274\222\256\277%N\307\334\320\234\300?\0005\240\204\3235\300\277?\016\255\267\362\345\266\277\204\367\016\247\212\017\213\277\177\342^\033\025\344~?\031\321\3169f\377\252\277m+\342\364\211\230\256?c^\370\016C3\223?<\376/R\202Z\276\277\342\326}s}\270\252\277\327\256\221l_\262\300\277>\360\232\366N\377\242?,7\177J\270*\260\277{\340\313\032gf\263\277\t\033\377\271\224\024\274\277\200\244T Q\345\300?Q\032\232\\\203\017\266\277\376\207\035pb\244\233\277e\237a\016\321\364\302?\034\377\307\341\271\376\235\277\037\"\300\032\242\234\270?\277\371\034\350R\263\247?\327F\271o\321\344\316\277\353\271U\213eG\264\277\036\325\224\253\330\215\317\277\364%\346\202\032\370\254\277_H\240F\364\345\262?\360#\026 h\345\270?\227\336\2236\371\306\252?\271Y\351\240%\365\311?\311\336Td\r\202\200?\005N\376B5\231\260?\273\376\242\373\034\221\244\277\016\353\343\220\017\300\245\277\254\333\010\342*\036\256\277hF\264 \324\204\206?\256\323\311\246\323\226\271\277fS#\004\223\253q\277b\257\322\242\247\332\242\277~\326l]\007\326\305\277\024\231^\216\013,\252?\234C\237_J\374\265\277\331m\235\353\'\230\310\277\225\347\\\3331\304\261?\255t\202J\004\311\237?\314\245\211\371\0254\244\277|2\317_\322\232\262?\004J\313kJ\034\225\277\244\374\0109\247\254\263?SoG\320\027\277\204\2771\251\245\246\371\022\262?F\224k\223\330,\307\277\006o:\n\273T\222\277qdi\232oU\230\277?u\026f\024\375\230?\221\356v\222\264\252\225\277\002\024\243\314\010_\314\2772=7[/\211\271?\203\006\r\274\n\243\237\277P\2513\316]\203\312\277p*\265?\204\351\262?y\275\272\261L\356\266?<z\310&x\363\260?\336tG\177[\252\265\277\370\314\301\252q\371\264\277\333k\232oN\317\227?|\332b\342A\310\242\277\320\261U\230G\274\263?\016R\241\303a;\275\277\304-z\253\252\007\250\277dV\353\023\247m\263\277\262\357\374\016\305=\230\277\270[R(\r\"\220?\372\211\365\260\371\225\253\277G\344F>\353\363\274?\245%\2358\303Y\200?\317\221\233Mi\357\225?z\260\020f\024b\251?A\'\034P\337#\307\277I\353\365>\304f\246\277\311\235\353\3268H\224?\003Tf}\335o\303\277\224\350\360\320\020\232\245\277\004o\030\335\247\035\203?\214\001\035}\2635\265\277\236\277C\032[\301\250\277s\254\232\260S\336\302?^\201\220Z\007\002\241\277\306#\323%\304\256\306?&\346\030\372\265\367\261?\013.\342\217\237\264\245\277s`\326\037GO\260?(\224\334\313\002\210\263?\234O\032]\344I\242\277\255\262U\364Dm\251?\366QRc\317\231\300\2772L?\376\232[\276?\313\312\331\240{0\215?\026g*uk\266\265?\314\305D\210{-\320\277\3512\211D{\327\260\277\237\223\235J\334\314\275\277h\n\005\000\325\324\300?\270\206\311\376$\364\222\277sz_x9\266\265?\335o\267\320?X\270?c\231\362\235\025\355\220?\021W}\310\360q\210??\264\242\302z\354\305\277.\245\2067J\244\205?\233\325\234}m<\273\277\274\020\342\201\013\322\241\277A&\353\321>H\303?);\233@\373\367\246\277\321L/\315\305\005\226?\327\247\332\"\331\311y?\013\304\265\311\210\225V?\350PG\207\271-i\277L\3125\260}\356\202?E\372t$\352v\261\277\326\021U`It\271\277B(\264\257\230L\262?n\354e\306R\356\257\277\233bl\251\2655\255?\207\\N\323\366\331\303?&Je\000\303)\235\277\311Lx\275G/\252?uO\0343\007\361\254?\325\365h\205\2171q\277\026\300\"\364\357\021\270\277\3451f\372\314j\322\277\230b\"\204\262\277\245\277\037\205\256\002\231:\226\277\314\253\341g\223F\221\277Z\341F\237\337\234\234?\331\370\023~\325\262\270?\222}\375\367;\334\226\277]\034Y\r\200x\301?\226)\032\311\030\213\245?\271dN\036\352\234\213?\005o\037\311\327\357\266\277\001\223-\367\0044\232?\'\261\017L\354\001\273?Ne\245\2672S\255?2>\274\250\036\373\302\277\006\025\000@\362s~?\352T\332zkQ\226\277=\277\247l\354V\306\277W>\001\236\351w\301?i\025\213\341\377U\201?\213`\005\372\371\243\266?s\266\336a\277\340\271?\252r\257<\020q\274?4\331\205\371\223\344\273?\177\334\2532\310H\307?I\267%\253\021\r\263?\024%\303\025I\321\252?)\346\342\345\304|\305?\320(\264\323Bq\236?\207\375\272\362X)\213?\036\207W\304\006,\272\277\217\251$3\364\304\216?\225!\275_,6h\277/&+Te\265\311\277\027n\331\254\356Y\263?\340(\322\254\025_\252\277*\324\232\005b\333k?S?\327\273!\235\254\277\337\314)?\336R\261?$\336\017G\005B\303?\320N)\300\307\325\254\277^o]\221\271\333b\277\244M\235\211A\301\311?\\\017],%J\265?\'G\036\020\266\224\307\277N\027Q\324\025\233\263\277\216\327\244\277\007\224\241\277\"\251\320\362P\006\247\277\267\2325\320\032h\300?\302\304\037\346\021\307\241\277\216\\\212#\370e\240?\003\372\026\007\020\351\225\2775\241*\322\373=\230?oE\n\037\203\267\240\277f\245\022\240\361d\243\277\347w\360\026\201#3?\210\213\246uBO\320\277\247+\252CK\204\224\277\301\235\366\235\321\010\210?O\377:7\322\245\267\277I\307\336n\031\317\323?\252\337m\014U~\243\277\rP\007\257\024\t\253\277\320\001\374Td\347\300?$\374n\210\361\336\302\277\034m\016\302\306\250\242?\347\211,\342\305\236\251\277\325\024\201\024\024@\220\277\'\030\351\344~\236\234?\n\377\354_\325N\262?\267\364\355\275\245j\302\277\025\0039\235n\022n?\212M\371Jm\022\255?\004\020\223\2434\305\244?G\212[\203\360D\321?\256uH]L=n?\274\211Z\323\010\201\235?\362\242U\032\226\216\310\277\n\355\243\257\216w\274?f_\006%\257\371\262?\025U@\223\221\334\301?\347\372\317z\275\307\251\277\027\"}\236\005\246\270\277\346\320\321\372A\276\246?\220\376h\026TU\320?g\0145\233\341<\246?\020\3662X\317\247W\277\266\254\324d\370\373\300\277\241!~\376\t?\277\277\375H|\263\'\255\222?B\031qC1{\264?\232\315\373\3674\260\235?\024u\210#Y+\201\277k:l\342f\250\275?\305\222\354z{\247\246?\210\313\310T\345\321\326\277\n\177\364\372\227\355\256\277\257\376H\224;1\253\277\350\327b\371\317\303\223?\243\3769\360\274\233\301\277C\037\023\362\271C\274?.ga\373&\366\312?j\343\315<MZ\305?\220\245\350\361/\031\261\277\314sy\2733\020\275?\227j\003\245\307g\245\277\304\373bp\237\236\300\277\367\336\327\224\371i\270\277\201\017\252\312\336\027\306\277 \207J\\\243J\262?\300\353\014\016\200\227\244?\001AvA\206\377\305\277\361\355\321\025\353\231\272?@\345\340O\212\372o\277#9(\317sx\277\277\277\263\313\311\371\246\255?\271\3722\341\365b\302?\336/\377U\354\353\301\277\361y\271\276\333\206\300?\351\274\177\276\247\314\310?QCC\r0\256\303?\237n\364\315\223\330|?\302\247\266h\376N\302\277K\372\355#A\t\220\2772\035\002\216\323\032G?{\n%\346Ko\255\277\342uA6\350`\240?\311\330/U1\007\243?\347Wb\251#s\312?\034\210\243\224}\366\265\277\327\277\034\3377Y\327\277\254\232\374W\230\033\250?\252\243\354\276 \027\266\277\253\254/\304\207\353\271\277M\272^\264\001\203w?,\014TB\262F\302\277\240\365\007=\001\360\301?8\377\377\207Z\235\305\277\212|o\361\246b\221?\021\n\353\305\377\367\274?\366\177\314S]\266\207\277\344\261\251^=I\271?;\226\371\234\217\341\240?\030\322_\354^\347\314\277\370\003\027\346w\243\304\277\202\030\010\260`\347\210?SV\3323\357\t\275\277\333x\363\312\267b\224\277\236=\266\370\332\230\231?\3340\346%`N\223\277\327\202\340\325M\244|\277\327\305zg\370\260\301\277,\341b\002\356\323\262\277K\246\372p=e\235\277x\360\332l\035\300\255\277R\254y:\374\003\251\277/\244\354\370F\315\252?\020\037O\016i\034\223\277\2176\243F\211\222\304?,\317.\000\211u\250?U\227s\305\263\346\256\277\236\350\300+rT\234?\037\320W2D\003\274\277}+t^wD]?\303~\217\004.\350\242?t\0324=\327\203\270?}\"\236\241y\"\230?U\242k\307\356\235\256\277r\221\n\220\002\022\271?Wo\\\236\300!\301\277\252M\362s)\002[?\205\214\242\013\347b\227?\206l\216\251j\030\334?\006\004\233\344\0238\250?}Kc|\207\235\300\277\252b$\303\320\370\267?\320(t\335~f\305\277\341p\372\300\240\034\244\277\357\'\230YW\265|?!\313\256\246y\214\244\277\331\005\001Pr-\277\277\00511^\246\225~\277\376\372\214\260=\264\237?\277*\233\336\260O\210?\\y\270\201>\217\254?\n\2604\350\247\300\223\277\273\242V\365\236\201\260\277\215\331\211\001\272\305\254?\302\362\255\342\276\276p\277\022\275\374\004\377\350D?\243\031\270\263\256\321\275\277\260P\301\010\257O\300?\270\366\232l\275<\312?\366\243<\030~\017\304\277\364PU\3729I\265\277\035.\233\225\023\335\252?X\322\376J\013\344\273\277V\r\026\320\321\344Y\277\232,/\254\216C\241\277N\274v\206\344\307\304\277\231\221\017^\217X\261?\304!r\342\374\207\267\277\004C\371\246\016\230D?\277\303Y\204T]\311?\202\201\261\363\203#\247?\365\333.\021V\350\246?\314\222\231\233\213\001\257?\340Lk0\003\r\302?:\362:T\257\036\207?\"\310\'+\366rs?\230\257\340\260v9\255?{\022\333l\344\252\235?\322\'4\024\204\002\274\277r\200(K\301\314\260?$\010\310rOy\273?S9X\256\263A6?\206\010\025\222\212\rs\277X\317Y\"\"\353\277\277\304\345\340p\033\177\270\277\3716\2138\247\322\240\277\274h\013\315u\035\252?\255\344\227\225\220\016\234\2779\245\315\201\2029\267\277\013\350\321\374\340<\224?\240!\346/p?\274\277\224\231\263\007\341W\241?\t\322\202\314\275:\270\277\273b\206\253\375\244\261?\223\n#m,\221\300?\334\225\\yB\274\253?\217>\\\205\314\225\242?B~\337i#r\230?[\205\014\036G}\264?\316\264\271C\367\303\260?5\275\257n\235\304F\277H\'s\256\311\275\242\277\376\355\204\017\334=\213?@V\277\362z\273\264?\324\031\354\344\277\221\251?\252\341\312\3513\225\242?\023h6\035\320\026\236\277mK\014&\\\031\202?\334)\226K\034\n\270\277\265\027\241\347^\305\260\277</l?\250\204\254?z(\3726\001\374\230\277\017\017\371J\303\217\266?\reM\352]j\254\277\374\310\2054\267x\253?\342\242\327\014%\236\314\277\342{z\366\260\006\243?)\303\326 \030\372\232\277\032\355w`m$\317\277\213f\205\264\\\230\255?1\323Y9\215J\261?{\3219\013\212f\306?e(x-;w\242?&\027\233\222\022\001\250?K>z\365|s\271?8\024\364rI\311\216?\342\331>\374\263K\304\277\277\267\341\000\0344\301\277\372\212\033\202B\324\202\277~\\\3756\t&\305\277\317\242*G\235\033\272\277\026\367\204\331\005\t\263?\305v-\237q\273\257\277\204|Ci\017!\301\277\243\316\020\310P\200\302?\013y\323\300\240\363\320\277Mxm&\t\253\245?\366\323,\243V\264\242\277C\316/`6\\\226?q\217\335\234\201\211\251?\003.r\313\311D\304\277a\3550\261\202S\261\277>lNZ\252\177\245\277.\3524\005\337w\306?^\223\002\010G\377\234\277\017\267\007\214\265\037\272\277\335UTu\0270\302?\013$\013c\230\367\275\277\267\252\224\027W\247\273?2\004\332\303\274#\310\277\301H\370\300\361\221\324\277&\264\257\336\302i\242?\027\206\243\303\224v\244\277f\to\350\333\277\276\277\305\262v>e\255\213\277\014\003\014\001\306_\202\277=\024I\007\365y\241?\003\265\370\242]\347\265\277\206>n\266\243\260\267\277h\305\265\263\222H\270?W[\316\355\0331\320\277\003\2770\320\323\020\277?:\372$\300\356\375\275?\335\357\304p\264\307\301?\233\316\204\237\t\212\303\277\205\n\025\271\254&\202?\241u\261\223\254\220\260?$\315L~\361\315\246\277\205Gn\335\001L\240\277\032\226@\3103x_\277\2460\304\261\306\343\230?\345\214\353\342\t\'\232?\362\201T\267\212\342\242\277i\3622u\237\217\235\277,R\013gH\021\227?\330}\0270o\341\242? \351T0\355\001\247\277\001\234\036>\325\222\223\277\225E>\342\312\375\306?\266\372\344&\3000\241?%b\220\326\325\270\301?f\220\004h\230Y\316?$\021\013\352\332\032\212\277\300\205\213^vgu?\t\271\314(\"k\201?%\031\177\233\010n\222\277W\000\252\354\345\354\271\2775v\262\243\351\224\231?WbP-\271#\307?\331\220\271\341\246$\266\277/\345~\3548\010\222?\376\372\343\204\\\340\246\277\275\367.\210\330\311\303\277Oh\37545\350\255?\256\355\262\021\003\n\250?*\002jn\r)\264?\262F1\003\327\r\305\277\207\354\372\203\302\320\311\277\272\201\277\343\334\247\266?\005oa\177S\311\210\277\341\016I\371M\231\217\277\252\212B;1e\231?\262l\010\260\207[\272?\002\270Zk\267\244\216?\207\301\262d\363<\265\277\263 \301\212\023*\302\277\322\357/\330}\252\244?\022\220\"\353\2643\262\277\017\215\222rB8\237\277Kk\rO\353\020\256\277\241\025\014\226\325\254\302?\360\234\312\305\252/\247?\232\223\306\236\237\212\240\277\rf\270\236\322\221\316?\251\242F\304L\324\202\277\030\242\357\3618\206\243\277\237Tc\262=6\321?a6V\020\004\371\245\277a\336\0343Y\025\241\277S]i\250\201=\306\277\225\023l\202U\017\311\2770]\343\316\006Y\217\2776\014\034\010\\dc\277\216\312\'\266\3574\310\27771\335\242\214r\274?a[[qL\347\232\277\374\326\024\214\177\310l?B\250@L\372\014\237?B\\\340z%\321\210\277A\222\345\261\311c\262\277\003\315\315\366T\204\263?j\345\246\031,\377\216?\022$N\343J\304\246\277G\235|uta\214\277W\302\263\021w\216\324?\242\304\211?f\370\264?+R\003\306\206\247\303\277aGL\255}\266\257\277\'\242\241\3234_\260\277S\253\343\331\371*\244?\272]\272\037\262\305\262\277\316\243&z[\177\254\277\004s\375/\271.\211\277\341|l:\231\237\243?l\341\2717\276\\\205\277\320Nc\263U2\271\277p\226\r\0078\224\253\277\310H\221Si\354\266?v{\033\277\\\337m\277A\251\220\234zJ\257\277\276d\'\276n\236\265\277fe\267v,Z\272\277\033\245\0039\"S\222?\346\3279*]]|\277\035\035{\237\002]\235?\313\305;_\243|\270?\213\307&\356\225\204}\27722\345\255U\000\262\277 \227\027\356\022\212\270?\250\257,\353\324\017\272?\310_\271\225/\255\236\277\205\313\312v\2468\275?\301\226\210\315\373T\307\277S\353Q\227\346*\264?&\002x\244H\234\260\277\213\024&\203k\000\300\277\355\003\337Jm\222\270?\242\201\335\260\327\225\275?T_\275\314\256\235\232\277,@\377y\242\217\307\277r-@0\024\020\236\277\201n#\324\204W\273?G\234G\315\212\251\302\277\254!\317O\303\035\241?\327\234\324{QM\273?\267\2502\202h;\260\277\216\r\203\243\262q\213\277\364x\255}\000I\001?\202\316\261\031N\014\264\277\3760\030\315\006\235\235\277\255\206Y\277s$\221?\262\025\247L\240S\244?\023\340\226\013\343;\315?\006*\014\000\324\302\270?\302\324\321\265A\310\262?\351O\003\366N\032\261?\223\000\311\257\257\343\253?p\034\201\247\227\250\235?\\\272\207E:4\260\277\326\337#\323\357\304\251\277~\210#\223 q\310\277\375v@F\346\345q\277\223\001\001\322\251\031\274?\366\261\241~p\237\302\277[\212\363H\337n\214\277ym\274\265\203\211u?\033\244\365\201\215\003\260\277\341 \tH5\302\301?\244\000^\331H0\241?K\331a2Cs`\277\306\261O\001\2422\301?\224\341,\247\363d\303\277p:\013\224\311 \262\277@\214\004\375\243`\301\277\177k\264\310S\362\201\277L\370\360G\325\177\270\277\030\200R\271cG\274\277\361e\022\275\254\035\272\277\007\236\265\207\337\227\244?\245\241E\326O\006\266?\246\3436c\005\305\234\277D\th\003>\004\243?\r\322\215\322\323he?\232\315\263\250\223t\261?\252\272\363\'\362\357\251\277XceAS\014\241?\347-\335\265uH\312\277\217n\223\310aF\255?\355A\002\341\n\222\220\277\253\037\272\3764\301\251?\345m\343[\361\321\255?\332\371\313\240.\300\276?\013F\034\014u\241\243?B\335=i\006x\275?\255\345\375a,`\275\277j`!\304\005l\317?\252l\246\014\3272\257?\341\350:z\013`\255\277\201\256O\202\000\001\265\277)-[\272\347U\254?\2748\211|\320m\305\277&[\r\256\316\374\225?\352\023\375`\372\302\314?\314oA\010\nZ\261\277\240\3018D\033\000\256?c\337g\330\021\033\274\277a\3616eT\024\271\277\336\224\213\30327\243?oP\356b\264\213\252\277G\204\310\331\244\324\300\277s\216KG\321o\234\277\353_\364[\325s\266?b\307\243P:\366\322?\321_\002\323]\300\263?B\250\2401\350\365j?0\215(dU\215\265\277\367yU\376P\355\310\277\270\371\247O5[\241\277\tz\0374\260t\270?\352-\373et\337\273?\001Z\3254\317\027\236\277=\260\344\373\033GM?\234\235\332\312\236\364\251?\357\246\205\314\243}\264?O\000D<\350\014\257?\021z\256\335\226\034\251?f\301\256\207,%\312\277\264b\334\355\324\317\246?\025\203\023\353\030D\266\277\227\340\006\200\370\363\252\277\n~\275&9i\247\277t\327\205q\313\341\251?Q\216n@\223\266\274\277X\333\306\305F[\220\277\220\221;: \252\305\277-\203\375!|I\231\277\375\225(.\247\314\222\277\230}SY\276T\270\277\020\277\352\264\245\\\266\277\376\316\247\236\243\213\215?\260\034U{O|\252\277\003A8w$\033\250?\002\036\262\267gk\274?\331]N;z\261\262?\356\346$\362Vb\303\277-t@\247\nR\265?\214+\370\334\022\340\210\277\245\332\017\240\033q\262?\211\325.h\224\366\253?\334\203I\341\261s\225\277I\257r\010Kc\251\277\347\253\016+\324\247|\277\0075\360O\340_\260?S\332\205\363U\340\275?#\232\310\370d\t\205?\014\013\333\030>7\243\277\022\006\244\312Ew\260?%\352\343\237Bu\312\277\010w!\323\242\353\273\277o\274\250y\362\256\255?r\367\254\373G\035\250\277\273\303\006\017[\261\266?qQ\233u#\224\264\277\260\030\312\004Dd\226\277\204\221\372\210\332^\235?4lls\212\020\247?\021\366\261\000)R\256?sB\302\301\t\227\244?\271\254\303\322\3160\267?\025\017\344z\364I\227?a\024h\322\240\010A?k\254\222\013}\203\270?\023X\207\203\245a\323\277\030xN\362$\301\241?\206\337\263\362\363\375\273\277\252\347E\337\276\017\265?7\002\003\217\225\211\244?\276\270%\277\342\222\227\277\314\303f\316\024\323\245\277>^<r1\211\206\277\022\270k\007&\371\274\277\206\036_\316\223\025\267?Dk\300\240\036X\273\277\031<+\205\343\322\245\277\326a\002\027f$\246\277\341\217\323\314\262\000u\277$}\261\016wN\326?\251\374e\3216c\223?u6n\037\303,\260\277v\260\346Zx\214\266?y\002\252c\300\027\305?\224O\022q\221d\257\277\351\250y\021,\275\244?\235edg\216+\305\277[\360\035a7\264\276?q\312\323\036\212\212\262?\224R(\314\243k\311?A|6\023\216\004\252?\325\275\237h\312(\300\277\276<\346\244U\200\257\277\212\351\326\027\005@\321\277J\001S@\352\325\271?}\266kM\372\233\252?>\036\230|\373E\301?\207\353\367a\247\356\263?\327Y\320\334\006\312\225\277\326\024/N,\340\234?kL\370\203\030\204\275\277\025\237\376\226\231\233\243?\372\247\261\275\206Y\247?\376\243\332\322\334\237\265\277:\340\024OQ\205\255\277/\267f\357\\d\253\277\204\t\376\266\346p\317?u\226\254\203_\246\312\277\000^0\227o\030\220?\362G/\265\325\312\310\277\010\337\235\005\022\373\247?\370\311\201\300\224\320\262\2778\203\010\216\303\203\254\277\262L\245s}\233c\277\020\224-\213\351g\230\277Qk\311\236=\353\272?}i%\367\270\373\261?\250\315\t\360\017n\300\277\t\374\331n\0014\263\277\002vH\332\335h\257\277T`\277\327\335\277\253?\256\212\364O=\231\320?\215\010\r\211\264f\247\277S\246\265\r\243\004\274?oT\276\003\302T\303?\226\317[\204P?\216\277&F)\367q\367\261\277\235\212\242\2447\305\300?\222>5\000A\261\246\2779\302%u@H\267\277\233\003\026\314B\035=\277\221d\223\036B\027\322?\346m\235\352\305\242\230\277\364\312\333\031\023\001\251?\001\351v\365\321\375\330\277\327\377\n\363\240\030\257\277\251\t\357X\200\332\277?\377\340\334\235\275n\266\277)b\177T\246\375\313?\031\346\375\242\270\327\260\2777e@\250\0374\305?9\014\214E\320\254\244?\211(t\2769I\265?]\000\003\332)\t\253?\354\317\216\266)\367\212\277\034@\245\021\344\301\305\277\014\240\331\245\363\357X?\344@\305\341\"\305\263\277\353\220\240<\375\312\200\277\225\3210\244k~\317?d\337\2651\343\227z\277\331\351\033\201J\232\273?gZ\033\214\261\177\265\277j\226\324#\314K\304?\204\276\205E\315\035\301\277\242\020[m\366\343\300?\261\241\374\221\010g\311\277L8OtY\253\257? \253\373\212\256\023\301?\206Mt.\316\002\312\277c\005CW\210L\262?\253\203\036\204\224\324\235\277\023\243<\357%,\255??\375\367l\351\234\272?\350\206#\035\346\203\201?\357J\244R\322\315N?Hb\255E\357yJ?/\347g\251/\t\304\277n\350\362\004+\373\260\277\200\364\315\206\322\022\270\277-\351@R\221q\310?l\222\201\274\266\313\254?\305G>\265\027>\304\277T\307Z\364\215\221\323\2779\352\203\315\277s\267\277\267\350\177\230\216\004\270?\346\377\326\234Qi\260?U[\247\210[\204\310?[b\375\302\032\223\246?\350\202S`B\334\300\277B\317\241\210,\002\264\277\323\366\220g\225+\305\277\356qr\321\376\275u\277\307\225\245L\365\r\254\277Y\364\375\343\314\213\264\2772\234\224\355\333\017\241\277\262-\035\377\336~\227\277\2631\264\277\342\354}\277\262\276\211\007\214T\247\277\276\344\366Hr5\265?\260\266c.\344\341\311\277\301d\3461\224S\245?X\016^\373aF\220?H`\314\"\017)\257\277\027\2504K$I\242?\r\231\271\r\262,\251\277\\.\221\305\217|\266\277K\022\242\004\272\321\275\277\2615\022\rMD\270\277;\236dWo,\235?rD\331\"b\253\274?\373\332[<\033\372m\277o\221\006\372Y\202\216?\343\335\321\324Zj\254?\024`\235\014d\304s?.\237\355\331\271\211\306?\212\363d\242Y\360\277\277\223\220\0249\212\013\262?\327a=\342\220\003\300?\001\233\225\237\242C\300?\310\235f\2713[\233??xp\361*o\235\277y\326\307\001\257\226\262?pj\361\013$\002\242\277\001\252?=\006t\236\277L\'\004\"\232\243\302?\251\336\343\253\301X\226?N\357\210\206M\311\240?\034\240\325\032*\341\252\277\274\203\034\027\335\n\242?\226*\206\341\342z\301\277\006*\253\371\211\320\264\277TV\247}\373\027\245\277\177\266\020\227L\000\214?\347\262\310z\252\262\226?\026-\333\304\270c\202\277\003\200\031\370\023m\223?\336\300\332\211\r\207\274?\205\037\230\021\321\333\250?\271\267-\256\255{\320\277\216\307\367\371?o\207?\274\350\300\217\332\241\244?%^\304\301\204\002\262?\335\375\337\372#\027\302\277\016x\003\022\267\004\231\277\177tA\303P\324\272\277\252\013\353W\3768\306\277#]zs&y\251?\320\2468\342\327\250\256?\330\222gI)W\272?\217\344\214$\246\304\305\277wg\367_\346\246\260?4a:\215\226\343\264?\030\033\341\177%~\223?\362)\307\324\035\025\207\277\017\257\252A\357g\244?\306\227\201\316KW\273?+~KAf\246\312\277\353a/\010j5v\277\0046,vJ\322\276\277\037\004\022\207\362\357\207?J~\316\236z\322\251?C\241\327\"\375\t\261?\221N\361\277\356\310\266?\231\202\224R&\242\245?\245\320D\261\001\310\253\277\"\203\031\354\n\322\262?\351f`\376\035\037\306?\316F\352\233\347\022\265?y\365,\217\223\023\273\277\320sQ6\353\034\251?\203\311\t\304\301\221\325\277\335[z\353\351f\240\277\212br\n\222\020\260?eD\t\226u\002\312?\205\230\231\272\371\314r?$Q\017\026\370_\261\277`Zjy%\350\301\277>=\337F`\215\233\277\020\302R\317\305b\255\277YQu\027\254\223\262\277\021Ao\362r\037\257?\375\361\233\204\374\252\203?2H\345\223\374\341\253\277\t\3776\312\013\002\261?.\237\252T8j\265?\372\260\331\344\231\251\227?\331\247\242LS\254K\277\340\004\330\035*\217\242\277\\\315\276\333\226(\257?9\024\270\013\335\037\221\277+\354@\313\267b\206?\226\356\177\311l\357\262?R\r\373&wy\221\277\231\272A\373R\231\250?}&\306@T\214\260?\252#\024O\224\350\256?\257\330M~~g\267?&N\333;W\274n?\3173\300\302aa\322\277\356\372,\235\213\237\245\277\276\000m\326\255\355\266\277Hb\037\3318T\203?\250\366Z\217\005\273z\277\202\224\035\243BH\271\277\363X\347\363iw\230?-ig\245\377\232\265?\345\277\321\002n\362\241?\362C\207d\357^\226?\327\365\270\226\354\024\201\277\021\244\006v\037\311\260?\256B\253\3378B\306\277\347\322\256\317\222_\307\277OYG\216M\344\326?\254\372\354J\t\020\271??\177\274k\032{\215?\037\325k\265\237\'\212?\361\336\270\032/\320\226\277\027\375+\237\217\272\204?8\326\242kYs\247?\017\203\207@\321\221\265?\013\024\247\035+V\203\277\030\242\036o\231\300\260?s\233\3071\327b\277?\323u4]\233\240\267?Lf\323\2253h\211\277\023\\\207w\315i\257?^\214c\374\254M\311\277m\352(\333\265@\214?N\217u\275\276\321\235?61\374\341\314C\270\277\004c\224\212\r\017\277?\\\242\307\001\357\304\237\277\031\232\330\373\t\033\272?q\250\250\226\"\017\307\277\225\020\334\305\006t}?\021\t\'yW\022\211?M\372I\324-\235\261\277\001\2304\347Q\337\302\277\344\007/r\332m\264?\003n\244Ij\337\277\277e\203%\273h\264\204\277\236\227\262w\255\246h\277)\374\013\351\201\360\270\277\267\265*\325\337l\273\277W\014\356FRx\272?\026\017Xn\253\016\220?\223\276\004\246\221\364\314\277\253\'!\022\033\266\266\277\322\001\253\262&\212\243\277\245\334\224tX\322\232\277]\202\241,\374\273\254?r\366A\264\243\005\272\277\377\277\030B9V\210\277i\312\0068%\274\256?4\000\037\253l\272\330?\014\217\373P;`\251?\231\204668q\246?+\330s\273\3548\220?\001*u\3609\244\250\277\236\207%\006\317j\245?\322\233t\373=\n\255?\253\033Fc\003*\313?\371\323\345K\"\215\244\277\202\224\223H^\225\236?\337?m\010\323\330\216\277[-\376\026\230\236\263?\252\260\350\344<\244\277\277\211\313\307\303\301N\203?\2325\027\370\243R\304\277\330#\367\\\031\223\256\277%\234\265\205\327\374\226\277\335\357\211\244\352\211\251\277\026lg\304\304\374h?r\310\370i\371\315\275?\336\244\323\024\243\337\267?\203\376\207i\224q\240\277m\246\350B\331\t\232?\310\365\311\322\313\340\252\2773\271\361\356Q\376\260?\337 \367I\213^\253\2778?H\267\213S\243\277T.\024\265\035\230\256?\340\254\371\257\351\334\301\277G\267\374S>\231\256?\n\037TtP!\270?$\247\023lK\221\234?\304x\233(\274\003\264?C\325\017YGBk?\214\257\207\252\203\365\272?#.\227p{\232\274\277\345\242\220S\353\221\206?;\231$\310F\334\272\277\345~\270c\323\213\274\277\346\034\275\221\254\031\220\277\3631\340\034\311\324\236?\014\344i\330\210\007|\277\375[\265\321#h\241?\214\336Ym\301\t\272?\310\'\203f6\374\253?Q\373f\313\3563\261\277\344\301\300\337|\332\273?\342\250[t1s\202\277\026^\325x\223\036\300\277\370\365#\274M\365\315\277\004W\310L06u?n\311d3\244\370\264\2778&\241\221\220\223\317?\276E\tf\"\373\240\277X\2150\324\373\255\247?\356\3233\322\302^\223?k#\243N\327\203\242\277\375\001?\216\320\225\262\277N\332\037\\{\321\272?\252A\311E2\211\244?\246\332\300b\321\244\301\277\001\302\337\357tH\263?\006\177{k\014S\264?O\037\261\027\001\233\274?\316\020n\261?2\243?\245R\211\007\r\300}?\260u?&\335\212\255\277IF\311\005\2740\275?\206\331z6\236T\247\277\216:\240\271i\246\312?\031\244\307J{\347\306\277^82\\\310\301\262?\200{I4<\311\263\277m\207\006\323Z\362\266?W\322:t\270\370\270\277\277\000\230\307z\323\245?\347\005\317\337\351\030\271\277\r\373\346\211+y\265\277\216\3667\217\351:\266\277\300\353\004-\007\200\257\277$^\210\375\266\331\203?\033\342\'\251\031\277\222?l\225\335\337\206\275g\277\361\223\364\020\370p\264?\241\177\316#\363T\271?\276\013\035\353^\243\217\277\203y\302\243\312Mu\277\371 G\256\337\304\225?\306\242\200xN\010\260\277\256\220\005\003o\270\245?\256\362\340\261>K\305\277B)\325\217f\376\234?\211\020\256\343!?\257\277\024\217\002\004\251\017\262\277@$u\266\301C\247?{\310\266Nj\341\246\277N\nv\330\322\211\247?\253S\201q\243G}\277\244\'\024\2672k\232?\3159\312\366q\331q?\217\010\023&\231V\241\277d\006c\025vu\261?\215\203\2726p!\321?=9\366j\2271\227?\260\343a\263\034n\256?J\254\304\267\360E\321?\376o\213\037\263C\274?\310\013KDrA~?!\224\343\'\333\221\274\277\266s3\200\236\305\240?LK\336@\025V\257\277\224\316\373\336\242[\303?\304\340\276\326\250|\215\277,\272\001OW\320\254\277\374\013\004\n\312\021\261\277\177\'<\001\024\367\241?\223R\'\343\313\204\301\277\272\223\205\223\340\366\223\277\t\014.\221\336\330\206?\206/9\037V\"\256?\344j\276\003\371w\232?N\000\363\372R\027\207\277\002=\356n{\372\314\277>\256\300\233f\245\253?\325#\244{5\315q?\027\205\021\007\371>\210?4\220.\013|\231\325?\275t\310-\036(\261\277H\215#U\215,\256?\016\327S\322Z\n\307\277J\t\'r\013T\301\277\031\030\244\372\234\240\270?q\265P\333U\204\251\277\215\304z\342x&\310\277\273.\324\000@\356\256?\243r\375\007~lv?\033\3438a\315\202\274?o\223\026\232\310\225b\277\202uD7\344\351\266\277\375\3334\210\304N\246\277\370\024\250\031\347\235\312?\020q\2719\315\371\247\277\206jd\244e\027\213?\260v\3266\222\217\307?\364\312\030\313\033\260\262?\177=\264\327Ux\261\277\200\350\312qc@\304?[H6\213\263*\273\277C\311\024\265i\266s?\336XCu\254u\225?\'\212S!\273\244\262?\226y\023XY\275\213?h-T\261\323\003\250\277\234\366/B\006\016\270?\263\257\254X\272k\311\277\241\007\243\346\'\r\235\277\245z\201,%\035\270?f\360\327\003\2300\205\277tJ\221?\323\355v\277\026\204Z\000h#\251?D\322X\223jY\225\277#n\357\275\031\354\312?\251\200\025\220\213\356\231\277\254\034\243-\2240\204?T\360\177E\237p\267\277=\205\360\235\310\266\262\277Y\260iT\337\314\250?\320\361C\353V\200\273\277\0060\020+\264\306\304\277\021\3360\257\321S\256?G\016\314\276(1\225?\332\237\2070?j\244?\265\032\311,\300K\277\277\367\337B\340\247\004\252\277\245\370=h\327\357\225\277\343\341\032\023\203\026\264\277\030`\227zM\226\261?\037\375\361\2173\303\243\277\360@\336\331\204x\304?^IE\204\n[\256?\206\261\346\266Y\305\275\277Q\323\332\341Y\366\261?\266\000\200\262\t\351\260\277u@|\213N\311\216\2777\231\315\031R|\253?GW\336\\\331\266\265?$\354\021\036\350\311r\277\006<w\315G\325\255\277\035\357\254\205L\360\225?\365\337/\272\2222\250\277\016\200\352ou\345\254\277\007\302\270\377\214\367\220\277vrTG\274\305\205?\364+(\255\375\275\243?|\200p.\032u\211\277\344j\377\276\274\251\200\2771\037\000A\352\025\274?M\220?\273\372\225\221?h\2544o\020u\224?\007\'\237\257\326\366\261?\031\307\007\242\272\016u\277R&\'8!\035\230?\373R\222\204\261\"\303?W\023\314\206\0257\274\277\302\226\023\034#\244\304\277\242\231\353\264\370\313\301\277DX\307\354R\305\305\277G.L\326\301\316\224?\333\1775A\031,\203\277N\006\243\310\202l\303?\305\346\354\304\276[\207\277\031\262cdd\231F\277oK7K\343\226\274\277\256\207\236\263|\357\310?\342\270\333Y\000.\246\277`\321\2547\345q\211?\341\370\325J\033K\221?*cf\260\354\017\305?jy\271\245\250\347\256?\271\343k\346\345\376\252?M\255#~\032\304\325?\324Q\347\362sz\266?F\242\203\240=\364\315\277a\317:\250dQ\233\277\221$G\360\3356\253\277\330;\241\3773\270\233?\345\275xFNc\263\277\335\226Z.HJ\256\277vu\255v\333\220\271?\266/\231\227\232\242\277?\316\321\255E\346\210\270?\033\360IP\303\254\301?\n\\\243\350\017\244\253?y\311fF\353\351q\277c\262\205\205\0332\242\277\177\335T[\336\245\250?\345\030\032\032xh\265\277\377\225:\217oI\276\277\332H\341j\006N\326?\"6\336\002).\302?\325\315\201\276t\225\200?\250h\341H\363`y\277\345\365\371\313\001/\316\277\375A\241\347\037\206\301?\020\261\244\344\217 \305\277\205\177\024\362;\374\307\277\351\342\230\271\370\207\244\277\207\270Oq&\314\276\277\313g\240\331t\237\300?T\243\375\201\0271\256\277&uh1\356r\266?\343\217\332\214\306N\227?/:=\2657K\240?ArD\rQ]\262?2\033\311\364\254S\251?\334J\020(:\344\246\277&mIi\267\362\255\2777J\233\210r\031\266\277\333\360\212\330\342\336R\277\\\341\343\351#\023\261\277\020G]\357\221c\214\277*\360 \303\263\226\270?0\261}X\215:\255\27701*\364f\000\214\277\325\326\346\0311\230\270?\030\320n\321d\232m\277\033\253\346\326+Y\271?g\315Y@\222\271\227\277\227\236W-\344\242\265?+\034\346V\273\341\223\277\037\205\221\240\222b\245\277\\\026\213\034\313\222\222\277 _Y[r\250\241\2779\276\321\302\005\n\257\277eW\231&\206\207\273\277\001_\314\355E\276\300?\034\356\311NB\356\315?1y\311\374\202\303\270\277;\3206\036u,\260\277\355\362u\341=\201\275\277{\005\271v\035\177\260\277O\2705P\221e\247?^\227\233\006\221\207\275\277\204\000i\224\253\221\262\277T\"\335\007\210I\253\277\014\010\241<\t6\300\277HL\322\223\366\323v\277\233h\035\221f?\322?4\342\321\275\016\236\261?0\\b\237\206_\264?\223\rB\266\345\017\216\277@=\254\356^\256\207?\202\0219\237\377,\257\277\035I\031\251P^\277?\302\276[\372\351Ry\277\233\206\256u\332A\246\277\270A\336:\245E\235\277\304b\333g\371\361\301\277\344\030\371\345\2078\241?`D\345:\325\023\261?\340s\315~\035\241\264?\177\217\227\352UJ\270?\364D\'\3420f\255?\372\253\306H\275\263\251\277\310!\376i\250\355\301\277\207\361\321\016\221\360v\277\355\030\336\202\205\233\215?\376\020\033\216y\236Q\277\337\334\225\370\334T\231?\007\313\207\324\352\004\227?\340l\357\360o\250\305\277\243\251f\257\265\346 \277\317l1,\320\266\265?\270\264\t\225\305\030b\277zI\3003e4\271\277\202\002\236\266\\\226\250?\377w\254\r\367:\224\277\364\030a\220|\020\242\277:H\202\246\230l\235\277\232e1`O\261\230\277I(\255\033k\333\255?\251)D\217\r@\303?3$\340Sy\267j?\236\326\264\217\2128\260\277\263O\365\236s\375\215\277\317\010,\340HQ\226?\204\3502@H\224\243?<\033d\017\304Q\272\277\r\324\377\001\257E\220?\356\270\033\213\240\366\270?\251\225\255!\r\262]\2772\363\177\350\352za?\032\346M\357\306\001\317?\361W-\373\227{\243?\365#h\256C\020\322\277\241]\356\263\205?\243?\231\006\205a\350\022\323?n\247\245\202\352~\207\277\007\230|&#\242\307?\231\234\334\316\000\217\216?\240\177P\227\351\256\273?\211ls\306nh\244?d}\354\363H\003\252?\321\342\300\031\316\273\305?\352\326\t\313N\270\223?\205\360*\325_\212\236\277\027\303$\254\220o\256?\350\275\010\310\024\252\250?\327\032\276U\001\016k\277\"D4\304\377\025\302\277\013\327\230F\363a\327\277\002\243g\261\016@\233?\004g\240v%\000\267?\314\323Vr\014\375\264\277\020\226\032)\207c\277?*\304\230\311\333\313\245?\026`\275Y\231\234\273\277\357\337\352\245\237~\264\277)\365-\r\305\223\251?\356tQv\323\225\244?\256\360P\305%>\177?,\253\240z\341\232\261\277\306f\311\360\312f\274\277\357\260\031\245>\315\311?$\270w\242!\007\253\277\271\023N\r\372\347u\277\237<\365\305\330\341\244?\207\023\247\257\352c\232?\227\207\247\245\314\211\305?\0326&\377#\254h?&u\234\357\242-\221?\365~\255\000+I\251\277*~~\343h\034\237\277_W\211\207I\366\235?\203\223\210~\345[\224\277\232x\345\201\026S\260?\225\206 \222\224\254\271?\222\342^a\332 \274\277\365\324@\004\355\212\310\277\376\2614Y\2360\265?\351%\321v\023r\304\277\275r\300\217\355\370\247?D\363\255,\223\213\312\277\220\321\307\244\267w\220\277\236\362\341\345\027\026\270?I ]\367\034\335\247?\377\232\221\002\'\314\240\277t\354\244\356\234\275\274?\362\365N\'\323\310\310?\326\205K&\177N\244?\025\226e\216\027\035\265?D\217\220\374Y#\265\277\237k\311!-\371\307\277\031Tu)S\375\237\277\241\322I\3314\341\231\277CM\331W\204l\300?\356\344b\340\0072\256\277qf\036\356\333M\242?t\212\222\361\356\200\301?\213VA-d\000\243?\234R\016M|\004M\277\223\275\217\035\263+\252?y\317**\344\252\250\277R\212\306\307\245\372\207\277\027\316\010\204N\271\250\277\374\303\"\331\026}\245\277\311\351\363\303\260\266\223\277.)\005\333\026@\247?\305\036\024s\256C\304\277\330\"\2368g\253\272?\2050sr\334d\241\277\272f\273\203#\337\262?L\026j\224!fd\277\330\203\330\243 \333\310\277|9KL]\274)?\"|\031\357\217\216\270?k\336\357\000\370}\242\277\3015\027\3541{\254\277N\317RT\222\235\302?\317!\237B\200\030\262\277\376\300{\302\367\317\255\277\341\304\034X\315\247\177?Q\336h\344\3670\261?\224\312\242\'\300\017\250\277\340\254\334\266\260r\247\277j\211\025\234\212g\273\277T|\207[f;\303\277`\365j\031\360<\305?\2064-=iu\267?\004\226\273\027\353\355`\277\3635\370\232.\252\302\277A\201\025\022\'m\262?\234 \203\363\'\247\275?\247nPg\327\361\307?U\247\224.bY\274\277\2235\371\257\005s\262?gkr\371]_\243?\277\315\244\241\324y\275?\244\366\376\215\236@\301\277%\024q\347\000\370~?\302W\214\031\265k\223\277\306\224\367\346q2\307?\270\323s\376\002^\273?i?\333-V\226\257\277\361\323\017\0372\324\256\277y\225\177\221Pn\217\277\364\277\211)\005\205\227?\2427\023\362+\344\320?\030\241\362\342\345\367\266?6\277o\312ct\225\277\315\274U&\344X\233\277\366\236L\235\252\366\232\277\205\257jG\000c\301?\254!\321T\335K\210?\271\256m\231\014#\251?\3074\247vbp\302\277\257\204\221Bq\205\276?\214\211\325\330w\204{?\201\010zE\340\262\320\277\354\243j\301+\014\233?\2407\306\2252\330m?\tp\006Q\262\361\276?\002\360\330\035TK\315?{9Zq\313A\252\277\341\312\370.;\314\264?!f^w\2274\272\277\214I\"\025\020\220\260?3\363\305\211\'\257\230\277k\337E\204\257[\207?\213\272W\222\202\345\302\277\212=\265X\201\010\270?\255\244\311f\030h\225\277I\363fP#G\303?qm\"o\'8\261\277x\266\222\251\206g\264?\275Ol\234x\253e?\345\262\377w\'5\310\277\324\331\223J\221_\256?N-\205]F|\277\277\207\341=~q\224\276\277\277\033\023W\341y\225?\317\353\312\330\344*v?i*H\277P\310x\277\337\264<\367\177U\217?x\213\350\020uw\266\277\230D\032i\375w\261\277\235k\006\027\266\252\257?\230\246\33721\303\254\277j<\366\226\314\352\241\277\234Z*\350E\337\266\277j$\0059\377C\306?\364\237L*\016\033y\277\005vU4q\\\205\277Gq\201%Y\303\276\277\215\207\003`\261\204\237\277O\r\376\270\r\267\263?P+\234\037\004\237\275\277\302\354\232\236\035\036\203\277\262\243\247\026\3239\265\2772\275_au\304\276?.\236\336\2515\326\235\277\310\036lu\024C\251\277\325\270\375\372\357.p?\204\004\277\262\034\237u?\252\035\271\202\251\240\262?\262\024\3522\000\332\306\277H\302-_\276\026\262\277,\374\r)6\217\265?\230>)\305\365&\270\277\262\222\323\330\247\321\237\277H:=\277\370\320\265\277\312\214{\037eV\241?o\326$\223\362>h\277\260\nQ\232:\360\272?z\337\315\306\277\356\272\277}X\317\325\013\357\245?|\233m\205[\244\304?\250\374\375\350\270\217\263\277\3513a$\207>\301\277g\"\325\347>@\267\277\201j 7X\004\261\277\2526\210c\3469x?H\313\314\032d\322\177\277fQ;\004\251y\242\277\312\312\031A\177\266\243\277\372\304>\026\366,\270?\341\006%j\337\317\300?U\240*ZDX\274\277\003r\247\315\321\356\323?\362}\344\341\"\013\241?\330\320Y>\000@\261\277vnr\307\375\333\301\277\263\376\257w\367\334f\277rdz\375\336\013\244\277\372\230M&\032\277\265?q\313GZ\025\346\305?:\270x\035\344\202\223\277\334\177F\325\226g\252\277\324\006\030f\343/\261?\345\035\204\037\302+\314?\242\247*\271\256c\262?\n\365\025^6\306\263?I\214\366S\002\366\307?QB\213\003d\216\267?\r\250:\232\373G\244\277#3`\341\276`\306\277Q\020\367\260\264\037\263\277JhO\310\351\r\242?\256e\263f\207\345\264?q[\370H\214\252\313\2772gey\003\014\305\277\302=HC\030=\261\277\007\026Q\374\250\211\254\277\322oW\356\207v\301?P\277:\210\3568\203\277\364\362\214\234\302A\216\277\033\320-Q\344\276v\277\257\277T\262\344a`\277\230\341U\006\002\206\264\277\222\257\263\n/\224\261\277\222j\352\335\306\257\306\277J\340t\034\356\315\277?\362\207\215\332\007_\271?\224\272\3365a.\272?\216\324\215\330I\361\243?p\330\316Ta\236[\2776)f\014\215a\250?\343J\253\025b\324\245\277\217\243~\316#\375\244?\323I\206\345\321>\226\277\013\265f\304(Q\302\277\351\261\241!\255Q\263\2770\201w>\344\363\274?L\270\374\276\313&\300?\021\217eHq\213\267\277\333\267\332\340\214\353\211\277\261\3560\023=A\254\277\203\n\206\277\326\341\240\277\206\235\n\227j\342\264?\223\342\234\364\335\304\267\277\035\314\021U\253\324\221\277m\312R3z\243\265?m\250\207\202\224\252\276?\232\356\014\237\336Q\231?\004WBE\261\023\264\277\005\315K1M)\232\277O\002\344\335\302\025\264?_\270B\343\327\217\267\277\212!\316-+/\316\277{\201$\243s\344\252?\375\317\014\245}\023\271\277\353\355\232t2\264\303?\002~\017\341A\215\264?\237n\343\3575\314\240?~t<\000/C\267\277\210\246\301\247\223\363\301?\375\2648hP`\213?\357\245\314ulh\270\277\327c\340\322W\"\274\277\227@\010\321\211\001\304?F\346\205\n\301\255\241?\223)\023\262\205\'\226?_|\253\010\245\007\311\277\004\242!\277y\022\254?\201\357\261\322hC\266?\374\010\234\346j\033\260?\004\277\0070\2462\240\2775[g5~b\252?~\357\003Cq1\274\277\353xH0R\000\301\277\311\212\210\353\014|\270?\177f\013\366\322\336}?\206\216\223e\253\327u?I\354\036\255\2610\236?|\340\273\327(G\225\277\n\225\232\2750\217\303\2778F\024\302\2546\320?\226>\315\260\210\347\255\277\037\224\213(_\030\224?\246\365\331\236\327\340\216\277\003P8\313\215B\307?\320n$\"z\202\252\277\236\244_L_\n\252\277\020\352\032\231\227\003\307\277d\344F\010m7\265?\331\335,\262m\375\275\277\246\261\362\362^-\321?}\337\237.\2245\260\277xl\024\217\023\237\256?F\213\252\026\021\274\310\277\241D\364\320\372\210~\277\025}\270\337\251\244\206?\264P\364\221\317\021\302?\270\341\3341\250\266\252?=\026g\246]4\241\277\336\325\"?\213D\202\277\345\331\022\342V\212\254?g\315\020\301~\344\277\277m\240$N\371\021\262? >\210\322\007\233\260\277\305!4<\374y\265\277\342m\305\310\377A\272?\322\233D1\030\206\232\277\220Tf\376R\247\261??)\243.m\035\302?\201p<\317s\363\264?\221=\211Ns\252\301?\022\242\325\201x\201\301\277\235#\332\230\324C\266\277uuv)\030\212\277?\271+u\031\231\r\265?\275\236!\022\334\034\304?v\274vg\275y\300?~\254h\027R\221\214\277*\"\000i\201\005\244?_;y\271\226\345\231\277\030\300\225){\252\277?vJ&\277\021\312\301\277\265\355Hp?\236\320\277h+p\304\210\351\177?q\237\363o\234z\264\277$\226\331\252b\035\263\277D\363\237\313\333P\244?\342O\037\213\217_\262\277\274\251\343K?\313\275\277l\2527.\255\356\310?\305\256\017\305\033\240\236\277\276\'\"\357/\310\262?\003\326\034R\352\306\221\277\375\205\016X\002\017\245\277M\004px\372\327\316?\275\3713HB\243\273\277\021K\000\232I\254\276\277\277\2377\374\272<\224\277\2706\362\230,\335\245?[n\314TP\240\315\277\034y\273\205\025\247\266\277\025.\323\307\000\017\234\277\313\033\243\010\013p\250?\303K\353FK0\227?n\3021\322\354\237\236\2776\275\266uF\017\250\277\373\331_\356\037\217\257\277\245\237lr\276\177\271?\344\013\321\004{\037\300\277x\002\206\344\203\365\206\277L`\211~7\241\315?\"\235\344\032\371\247{?\332\344\261\001\373\034\230?4&\025\374\303\277\250?\307\333U\220\272\261\241?\216\205\343\204}bz\277wngOp\351\237\277F\257a\251\306\242\300?/\267\025,\216\204\302?\302\332\214\023\364\364\272\277\365\226\256\307\273\324\314?\371.$\210Z\265\243?\241\235\030\200\313q\272\277\256\271&Y\366h\272\277\014\322\250+\270\367\302?\313\032c\035F\177\255?i6\\O[\342\260\277\3058_\006\367\\\262?\217S\007\315\217\306\261?\314\223\203X\370|\251\2772\037\217\214\2278\224? \346\216.\031\'\314?7\341\362\333g\213f?|\r\306\355P\022\226?\207\356B\365_\356\264?W\323\353\336^\335\301?\2159$\315\223\207\301\277\355P\243\203\264x\276\277NC\277\322qH\216\277]\212\246\324\235\001\264?\216(\337\221\004o\266?\275\242\231\254^\224\277\277}i\203\366\357\030[?6\334G\325S \241\277/|\251\372\200\030\273\277\261\265\032Zn`\323?i\034\020\036\344\277\247\277\361\031\376\275\t\330\246\277N\3519W\270i\305\277~>9\207#\223\236?s\013\3559\345\220\222?\2708\203\031+\353\266\277\024\330\252\204w\214\236?`z\371\031#\211\214?3\372\215\306sf4?\237\214R5\021\266\301\277\263\017_L\320\220\300\277\362\330\267\327d\330\231?$\343\025\365\206\270\236?\236p[\221a\362\243?\tfo{\225\032\254?\365q\n\2401\244\251?\345\375lQj\317\302?\344A&\306\3112v\277\035\330\307 u8\240\277\314\250\331]\316>\276\277\333\257\021P\364\244\225?\244`\374\225*\241~\277R\235\032\235F\325\220\277|q\2726\362\236\227\277y7\034u}\256\251\277\177\000\367I\310\355\221?\255\337\240\336\240\216\261?Qn\224<\223\230\254?\240\325\177\254\241\371\233\277\357 s\326\251i\272?\001\307\201\331\376\275\321\277\251;\275Z\345|\261\277v\277\306\207\025\245\302?L\024\366\202\243O\255\277\203EQ\336\227\225\202\277RC~#\022-\264?@\233\277d\027Q\261?\3336\010\201\270\021\217?K=?\256\024\032\270?\331;\301Xy%\224\277\203jf\250C\271\270\277\0333\341O\327\265\256\277\254\201\266G\001u{?\234\341\325\272\223\230\203?2S\243\033\254u\275?T_z\302\311\212\263\277zH,Z\336\363\303\277cH\314\374\253\353\255?\304\306\242\343\350\027\340?\001\363nD\270f\252\277Vm\335\355\267\262\265\277\256\n\035\256Z\007\265\277Gu\3059\323f\307\277\207w[\273\313\"\246\277V\000\267\317\253\007\226?V\033\257O\324\272\272\277\331\265\357\327\351\241\227\277\004Y\305\217*\340\201?C[\033\321%n\266\277g\331g\330y\316\221\277\265\254\374\207\177D\230?n\020\254\351\254\036\225\277c9\025\262\233\330\274?\316\354\2707S\216r\277u\336\354{\367\217l?\303\270\007Y\233\270\263?<8\224\367Q\024\264\277\222c\204\242 .\213\277j\234T\001\3061\300?vb}\264kA\270?\033o\245\314\246Z\247?\320P6\334U7\303?\207z\231\335\271\032\237\277(\007b\317\364o\201\277\301\372pJ0\205\277\277\254\201=\225x\232\321\277\314\213\344\342\226\"\302\277i\337\343\265\235\001\242\277\007\030\221#3\200\247?\007\370\361\216\220?\321?X=R&\0324\261?-\220\272Rp\363\215\277]\205$\024\002O\271?8\005\024bb\007\255\277\210\257O_\351\335\255\277\353l\357NWp\241?vBvO\367\023\317\2773\030zt\234\254\223\277\322\203\302\213\330`\277\277\215\211*:q.\320?\303s\n\006\034\231\250?\375\017\204\275U\315\241?O\224\240\035\334\357\314\277g\233A\r\357\305\222?\272%\371\212\214\001\325?\037\364T\311\nr\261?\004\206A\354~i\226\277\352\362\"w\235e\305\277UC<B\031%\261?Ks\224\2244\270\225\277\014\300\236\330\265\241\265\277s\267t\375\240j\272\277V<\377\210\230^\306?\226\203\022\005R\335\273\277\264\331\035\310aX\276?nc52\360;\250\277\017U\3721\230\217Q?\203@\213\311\\;\244\277\317\252\232\377$k\255\277\2531(g\265n\273?\254*\336\000\244p\276\277\207\245s\235\274\224\231\277\010\225VW\332\270\220?\362\212n*Q\370\246\277f\321\253\267\321\265\266?\373?\207\240\347*\200?tUA\202B\247\265?\300A\317+\251i\265?\344v\022\3746m\313\277\247u!%\250\034\262?\264JDt\035\271\241\277\205\t/\177;\270\245?D5\263\202\352\332\246?\264\267\024\205\034\347\231?\315\001\242\270\031\224\254\277\201\227\242\302\234\227\324?\025@\337^\004v\303\277\2638W\024\2137\263?\262uE+\314\240\264\277v\226\350\313\010O\236\2772\343\310\224\t|\231?\217\377\207\203\325X\227?\202\2151\333\265\223\302\277\310\022t\356\232\310\271\277\376;\001~I\021\237\277T\212\231\033\r\377\257?\301V\364\220j,\303\277\'\275\346\274\236\323N\277y]\210\220\304\360\263\277p\344\302\na\236\215\277\202:P\376\357\312e?\212E8\035n\001\252?q\3207\255\355\225\313?pB\342\006\242\273\252\277\320\341c\207a\n\266\277Q\240c\377\257\035\273?4\316\310\250O\335\323\277\231\336\200`\236A\240?\237\244\264\302u\270\220?G\202\330f\324\214\303?B\304om\002\022\247?\224\220g\307\313\255\250?\311\n\365NVqq??\311 \324\366\237\320\277\177,\333.w\355\262\277\3210S\261\002=\251?\244\212H\211\350Z\322\277l\343E\033\232\247j?\206m0{\324]\215\277\\}\255\235y\353\301\277\372\242?\325 \311\327?\333\342_\021\340\326\261?\257u!\024o\320\250?\351\037\2378<\002\253?\323\036\246N8\346\301?f\212\220\227%,\253\277F\202q\003\313\252\263?0\302S\215\024\024\301?hk\003\006W\320\250\277P\227\225\307\205\232\300\277\262\021\345J\362\261\232\277\361@\306\207\205=\273?\302\217\036D\020X\207\277l}E1\2427\235\277U\334\t\322Z_\263?+\021^\270\217\330\256?\335\270\362\317\276e\257?\2313u\343\363v\271\277\226\026\025H\360\030\225?\350d\375Z\010\220\260\277vS\247={<\300?\355s\343\2111\236\321?\2374\304\251\024I>?D\272\377:0\243\263?Q\023\215)\242\210\251\277q\350\300;\374\240\275?\036\272\305\'Jm\312\277\264\315\327\035\013\300\271?/\306\341\335\230&\301\277\000G\023n\007\224\217\277\205\257g\302J\265\216\277\323\372\202\')i\254?\237\021K\322\\\001\255?\375CX\341\205z\243\277\243\304\373\215\351\304\300\277\310E\240\005\247.\313?\304\334]\250\317\313\225?t\025\341<\377\235\241\277WSf\221u\274\300\277=n\205\343\330\236\264\277\027\374\343\241\267\235\252?w\316x\023o\305\241\277\237\241Z|\256\201\316?\201\026\263\007\316\235\246\277\250J[\252_\227\231?\306\253\213+\272\034w\277C\264\314\336\353\275\273\277\344M?[\214i\252\277l\003s\273$\321\256\277\361sJ~\t\337\270\277#\335\220\224\371\n\221\277\307\177\037\323Fo\213?\342\003-c\026i\331?\307\272.\031\327\340\261\277N\211\224\355\ta\300?\304\215\346U\360\210\274\277\363F\330\020u\005\326\277g\212;\\M\010\213?\027\177\000b\243\025\236\277\261\024\321J\260\211\265\277f>\243\253\217.\240\277F\235\003\0027\340\260\277^?O\316\226\316\271?\0354\2271\2661\305?B\264\001[\203\005\021?y=\366\255\373\316\250\277\311\203\252\030~q\260\277\350\206\265\271\231\000\252\277\360/\007\330\362\347\245?\244\263cR5\n\242\277)\226V\002>\346\224\277\037g\237\345\034\202\265?\021o\240\021\264p\260?\214@\014d\r\032\212?\243\371\325\177\307S\276?\304\2346B2\007\220?&\215\022\305&\326\307\277{\362\204\336\325\240\212?z\300\305\272\246\005\262\277\350\345\017N\n\004\266\277\030\200\363\335g\003\310??\354\007\311r\032\245\277=\350:k\255\210\264?\353\026\366\232\323\256\273\277\036\251!\014i$\217?-\267\373F\3268\223\277\212\331V\247\001\364\267\277TR\000!\000z\217\277K\201\024z\177\023\220?\361F\336\332\350\233\237?~Y\332\r\222\023\216?\020\262c\342\025J\272\277.\231\236\300\353K\266\277\013\276\223\353`\322\241?d\001%,Tl\275?\232\336[?\230/\246\277\252\313\020]\342\270\251?\032\213w\225\342I\276\277\331\222?\036\246eu?\350umGr\252\203?\365\375<\245\246\344\254\277\200\227\202\240\207B\212?\330\013\333P\235\257\261?\246\007\342\013\254\264\241\277C=y9\331o\223\2779\240<\307\317\311\301?F\315x\002\366c\177\277\252\370\207sF\334\277\277f6\207\261\3175\251?\001$\001\330W\227\241?6\323\014\237K6\260?j\\\231\367\025B\245\277_\355\016\353\216\270\330\277*\270\240\303U\030p\2777F\025\2744r\266?uT\2114)(\274?\372\264\230\217f\230\253?\301\007\237\255\207\352\270?<f\336\224)>\275\277\251\322I\034\334\305\252?c\n\032\232\327\326\300\277~\224\357\330 \313\251\277\274\340\276\304\333\007\277?c\277\343\332\214\327\270?\215\000\352\312\211\353q\277\206\347\007!\327\243\323?\322\215\267\326\t\363\263?\017;@\372\223\332\266?\353\317\017!\231\361\252\277\242\207z\001\270\235\260?`0\205\022\250L\240\277\030S\010\234\315\206\272?\016-#\243\224\030\270?\204\301B\361\242\316\216?\315\310\242%\'\004\244?\006%O\3125\351\256?\014?@\375Y\325\276\277\215Jb\206\264N\261\277\271\341\244\006\271\232\241\277\204W\205\237\021d\257\277j\321_\n\214\321\273\277\376\204\342\272@ \257?\376\363\376x\254\302\232\277\324\214\322p\350\312\262\277&\205\036\260\220\207\254?\037D\375\r\010\310\263\277\241\350\023\024\363y\232\277\206\314]T=\337\267\277z\257\227\322\017\347z?\212\314m\236\355\367\276\277D\310z\334\000\002\243\277\350j\306Y\"t\262?\211\235KL)\325\273?\233\245}\213N\346\301\277(\262\221N\031\346\266\277\003\217\200\317\312\023\304\277T\341\324\201$\022\265\277\245Rms\033\363\260?\256\214O`\013M\211\277\270\177r\r\226\"\302?\265\225\255O\270\004\265?\305X\360\311\205\024\271\277\273\227\tc\300\356\236?\253H\242R\t_\300?c\333\362\334\030\235\265?\205\274\303\2531{\262?\366[\306\032\240\222\303\277\374\332T\321\301m\261\277\304\321\223\327\240\r\323?T;\222\352%\217\245\277\275z\212B\223ww\277\003\311\214\224\273>\206\277O\'\017\357M\303\254?\267\267\301\001P\277\217\277&\313\216\332\323\260\267\277Z\361g\3303\030\273?\312\266\305F\304H\260\277\002\343\217\203\022\350e\2777\025\250\210\376\266\275\277Fp\326D+6\220?\222\374X\026\005Qx?{\362\302\3453z\231\277%=\r\311fd\271\277a \332\327\004\016p\277\035\3528(N\207\256?\226\'\276\352z\310\240\2776\321\004\357\356\200\301?.\213\263\344HY\244?y$*\031Y5\233?p\310~\250\303\330\254\277\357\303[\327YEx\277\331\313\023\357\227\030\251?\033\341\200\303-\026\326?_\223\211\246\221\267\247?\211\322[\352\257\271\227\277\375y\343GE\031\260\277\027u(\247\255\363\325\277\246\245\225\0303\271\253?L\256P\364\233:\303\277\201J\020\304|\021\304?\235A\276\3636\035\236?hvc\324<\337\271\277Po-\250g\320\260\277\223\363\260\363\307\363\327\277hD\377[\317\236\242\277\355\354G2\237\365\256?\257>\337#\344\233\320?\265\320`>k[\233?\031p}\325H\334\260?\230\336H\263^@\300\277?U-3r\364\211?o\007`\210\010\226\204\277\240Q\216\347<\'\250\27731OE\266O\307?mY\353\217\276\244\222\277\254\273\314o\032\276\251\277\364js5\324\t\234?a\024.\203\024=\322?-\217\034\237\005\006\241?\322\035\2363B\352\255\277\254=3\327\232\342\253\277\355\226\320t\000\036\242?\246;M\362\356,\226?rA\020\026d\347\260?\3716\026\362\326\277\201?\275\023\026\356\364\335\244?\002VOzk\333\264?:\273\240#\270B\222\277o\026\014\302\271\364\305\277\"\373\rM\352\212\236?\304bj\360V\261\306\277Gw\273\274q$\262\277c\236\365\367E\200\270?,\023\216\312\021\006\213\277P\026C\364_\212\313?\237\236\350\311BZ\263?\006t4\036\357k\225?u\205e4\345\233\271?G\227\023~\203\003\322\277\373/^Lc\n\310\277 \270v\213\276s\263\277\272.ww\253\356\260?e\312Ge\265\220\225?\362e\005\245\367\333\242\277\345\36642\201\006\272\277\033v\216\207\341j\246?\036\361\330\275\230\233\242?\341\376\237k\317*\301\277WGT\006[\372\302\277\256zIL\215\315\225\277\257\002\241q\272x\256?Y\245{\314\007\330\302\277\320\3409\335\346\332\314?V!\320\331>+\252?|\303B\334R!\271?\025\224\301\376\2142\270\277m\252\253.0C\304\277\342\203D`?\322\217?\274\362s\344\231\247\246?;\223\203|\347*\302\277\3144;\310\032ek\2770\300tI8y\276?\336Q\316AC\232\267\2770\341\267\301\033\020u\277#\370\3630\257\345<?\336\023@\311\263\352\305?\343\010M\303\273M\251\277\010\374[\235T\373\240\277;\376\034&d\331\213\277\226;\321\320\377\317\277?O\343r\233\204\273\257?|\326j\236\213\000\235?\243\262\250\006\332_\250\277]r\024\256!h\235?\007\2223\371\2030\231\277\022\334\226\304\3311\230?\272\262lg<\265\263\277\0373I\310\213U\250\277<\332\376\34569\311?U\205\225\326\363\257\266\277\035\367\304\006\t\360\236?\0334{b\334\361\240\277A\351f\243\340T\253\277\241v\362\272\325-\224?u[y\222.\"\267\277\021O\343\035<\310\260?\031\3532\272\257\330\225\277\005\240r\336\203\200\300\277\376\216\231\337\0277\252\277\033\247\306\334\177\221\265\277D\007\355\215\030U\271\277(\005\264\353\330\215\267\277\0249\t\243\240\246U\277\261\353\273@\230\214\262?o\354\024\315\257\363\306?\350\376V\t3q\276?\237Y\027\264<d\240?\221\302\214>\374\006\306?\306\267\231Z\264\241\231\277Z\274\212\327\'\212\241?\264\213\375V$\027\263?P.\273\253\032b\305?G1\010\033\016m\241\277\265\362vE\230u\266\27789\372\257\315\374\237\277f\2406\314=\273\257?\246\221\037\362\337:\266?W\361\305\304)D\226\277\231\354\023\2208\225\263?\242\334\246\255{\314\245\277hH\327\227\210F\257\277dMc\244\314\254\302\277\221\337\324FT\264\313\277e\301\312_8G\232\277\307\367\002\343\311\270;?\022\001\001ZXA\314?\0108\231\037f0\224\277\315\030f\023\361$\244\277\203%\033\315~\301\307?iJ\236WW\303\302?\022d\355L\033\252\314\277n\037\314k[\212\303?(\205\271\013\321\255\312?\250j\370asO\263\277\2141^w\022g\300\277\031gl\357\307\375\264?a\350\201\303R\335|\277\357t\327\3543\026\260?l\361\005_~a\311?\246\3054\305|&\255?\317V\355\235\316\212\263\277\0369\356\002\365d\241?l[\371\357\301\214\241?]\177E4\241\253\221\277{\203\233~\316c\246?\036a\"kX\315\244\277n\316\317\314\355\257\275\277\347A\032\016\316\024\300\277F\325\244\330\025\305\264\277\343\333\032\030u\315\240\277\027\366\207\025\3344\272?\356\214\205\361r\177\220\277m\372\363`>\226\235\277$1\'[X\300\301\277\356\002\366V\242\377\267\277\320\'\023\250\232\206\247?\232\216/\2729\034\213?\371_u\314n\215}?\3501\264\327\200\231\311?+\006\263\3561\010\271\277=EIie\234\267?3\251\234\250\333m\227?\261\351E\353\3613\302\277\222S\375\213\335R\245?\220\304\220\211\243\033\241\277\346\375\312\366\001\307\222\277\222\270\211\rsR2\277\360\004!%\222\360\265?\014M\314a\251\n\260\277\214i\234\322\311\207\303\277\032\353F\211L\317\212?\017\375I\326s\246\255\277\034\025\226\2443\325\313?!b\303\016\304\230\237?\362\341\346\206C\204\247\277\350\373\336\177Hum?\334\200MP{V\240\277\024p7A\036\304\305\277\373\277\251L{\275\250\277R\317+fViu?\n\302\254\356\025N\300?\220rg\361\226\306\303?\245Z\034\324 \250\242\277\025rF`\241\256\220?\007|\005\356\271\360\264\277^\271\363\005\354\331\260?\312\346\321#&\234\254?U\t\336~\014\260\220?.\025\210\227\"\035\222?\023\317\361\326_\240\246\277,\3452bSI\260?\002\270\227\210\274\276\272\277\247<\367\222\241C\236\277\265J\215\201\233=p\277\347\273\202:\321\000\266\277\233\n\223\317\216w\272?\374\272g\271\315\177\212?!\206\271.\312\323\226?\304\000\303It;\252\277k\330\033\034\361\334\244?\242\005y\263\220P\262?\244g\234\342?\376\306\277l$.\001\247\326\212\277f=\341_\016s\263\277\224V\236z\224\323\257?\032h\0055\243t\302\277\301\263\204D\376C\263\277\026\362\035t\002\234\235\277\235\n\330\212\004|\266?\352\311\314\333\324\346\242\277\360\2046rQ\261\225\277\362/\243\177\221\273\242?c5\256i\352\230\237?\357|\344^m\372\246\277|k\341K\251\033\247\277nG\275\322\273\022\267?D\251\030%B\264\271\277\345*\3079[d\246\277\202\311,\350\264\177\246\277\232E\337bgP\275\277\321\254(\340g\024\236?\201\321\254\313\007+\241?\226}Q\246\315\272\240\277gL\005\344]Z\245\2770o\366x\265\034\251\277Y\\\246wF\303\240\277Yq\r\236\262t\320?\313\356,\020E\006\253?mq\363\207=U\266\277u9\311oM\374\243?\272\2349\006\310\300\234\277e\361\005\300\324`\264\277\264\313vR\017\024\253\277\335c\2235o\t\277\277\224\355\274\005\023\003\301\277\010\265LF\336\336\304\277G\323+\202v@\243\277\230\362+u\202#\310?^\235f6)\177|?\351\210\250\'\370\213Z?\016\006\375)\361\177\314\277\347\023\2277\217\257\221\277\213\002bY\222\201\302\277\362\212\313\375\220\267\324\277&\357T\007D\036\333?\343\262\351;\370A\237?V\252\207\035\210\034\240\277\251\314\253\275P)\324?\2413A\005\370l\306?P\222gU\350,\267?l\217\016\204~s\270?hh\023\252\274\227\312\277\010\311\336\264\333\262\262?>\306\202\224D\230\262?g\017\2477L\235\311\277W\223\245`V\021\215?\232\251X\304\211\302\260?p\204\233\362\334\\\256\277\252\256\260\377\301\036\275?\020\357\371v\236c\264\277\345\313\353\202~\236\247?\000a\217\370\213[\241\277K\014\236\241\364|\261\277\356bCf\214\035\240\277P\262\354\201\331\343\262?pdI\206\304\301\245\277)\357@\256\214\320\255?\212}y\017\035=\232\277fc\305j\314P\225?\211\017zGr\316\261\277\346`\005\300A\365\221?\234P\023\246W3\265?\356qW\354\263\024\333\277\230\374_\'\r\233\246\2773Vf6\022\307\310?\312\312\360\303\017\204\265?0\230\000\377\314\r\217?\236#\322\313\201\312\233\277\364\037{tal\303?\260\r\211m)L\216\277\253\t\033\256\356m\303\277\337_\332\230\257\006\267?\311\223\277,\364\344\266\277\207\273\234R\014\312\230\277}\345\022)\331&\200?\017\0105\330q\247\311\277\322bR\257\266\235\310?\336m\234\274\245\257\225\277\322\303v20\036\311\277u\260mV8Dh\277\263\210\344\260\3474\277?]\355\360\275\300Q\222\277{\205\305\032\033\274\272\277\364J\2455s\345\276\277\312\240\270l\267a\250?\2436-a\360M\301?\225\022\334X\0339\305?\324\276Y\300\007\030\263?\270\326i\370yh\305\277\347\210\342\220/0\244?\274\025\332\224\307N\300?iC\2661\002Y\265?\244\350\263\264\244e\303?\037Vk\373,\257\235\277\355\255 \375#|\274?a\373-\261\252Y\213?x:\\\004\251\030\242?Nj\2018\325\364\250\277\030\374\200\236F\230t?\235\272\334\0042Z\204?\037T$\365\310\340\310?\003z\220?p\316\252\277\2755=\304\352T\314?\320\266\222\370\246\204\216\277&\016`\367yx\303\277\351x\003\267\222\264q?\226G\325E\213C\237?gm $\252\376\252\277\211\376\361\377?\273\306\277\211\014*\026Q\246p\277\221\01495+w\246?\3601\337\275h\266\220\277\014\300\"\035\214\256\225\277A7!\020g6\201?\324z6\342\336r\317?1OiaZ1\265?@\014\345\252y\007\261\277X\360/\233p\362\300\277\365\033\303]\266>\326\277\207\356@\010\372\207\216?\234\033\260u\366\360\262?8\327\32706\256\263\277\330\237?\333\t~\305?\255)\034\342\316\223\201?%\027\367K\351\001\257?@b\266K-!\232\277\346\305\262\257`\232\260?\376\364)\277.\326\271?9Nu\"\247\333\220?\035\"9\003\257\345\255\277\220\205\217\345\230\320\260\2772\351\273\234\222\204\277?\256B?7X\271\253\277 {\210\225\207\225\266?=\357\3167\204\037\242?\244\266El\205\351\240\277\037\370\260\\\317\312\226?D\320a^Tr\206?\027nw\034\004}\242?\355\305\236\245}\362\315?\325\305\270d\216\242\210\277\004\317Gi\3559\243?c\222\001\254=\216\313?\033\353z\325\001\032\205?g\024dN\347\323\267\277\032\277\235~\005\264\251\277\373\212\340\207\244\275\257?\211\232\224\264\240<\222\277\034\350\255\3764\260\234?7]2\217\347\270\243\2773\023,@\243\033\266\277\225\205\t\242\324n\223?sO\347\324\350\372\305\277\364\302\020Qn\241\214?\277\321L\365/&\264\277}\301j-\020\342\210\277\302\315;b\r\356\273?\316\345K\2269#x?\031\306C\\\372c\302\277\373f\225\234v\302\305?o\355v\237\321`\276?a\261\243\333\300\221v\277\'\241\264\376A\315\244?\231\327(Z\311R\272? \210\010\315;^\241?|\212X.\230\\\260?\'\207Q\363\212I\231?\303\016\315\013\220L\303?\034\345\376:\206\nq\277\206>\246\315\r\004\206?\261\361\302\177\306f\272\277\327\324Cc\001\315\250\277p\343\317*\'\221\221?;U2\001\265\277\305\277^\250\226\372\316\020$\277\352\235X\247x\313\254?\363\355tA(Y\300?\003\333go\316\375\275\277\347\352\277O\367a{\277N-Ri\327\247\222?Kj\2279\324\231\234?>\351@\354\3277\230\277[\267\2050\234T\243\277\2656\322\222n\005p\277)\205\'\340\263\n\274\277\215\344\371\251]w\270?\000KfF\304V\241\277%x\271\224\251\354\261\277\277*_*\375.\275\277\004\320\351\004T\234\233?\207\256\2423\317\243\273?65\'\216Q&\224?\001\372\377}\340\036\274?\362\022\031R\016s\205?\006u\374\023XZ\244?\032}\214\226\347\251\255\277SN\223\264\r\206\251?\320U\241\036R\304\300\277\310X\260\203\'\201\327\277\220RR\216\256\306\214?J2\373\2116\033\276?\277\274E\205~\213\256\277\277\237\001\234\357\303\304?\t\3072\340\371\"\272?n\233\020K\217\232\250\277\346\227\203\to\033\272\277\353\224\030):o\262?n\rT\227\215\315\243?!R\371no{\225\277\260U\311\253\336\244\276\277f\375mI\365\252\242?X\371|\216\221{\276\277&\234\222\250\324\312\320?#~\2326\211\241\227?\336\336\343\324J\373\272?\007\323\256N^\360\210?\353\274\314o\271\347\216\277\2646\370\211\020y\251?jY\177\365T\305\270?^\243\206\247\300\375\232?U@\010\311\236\227\200\277\016RW\202\275\322\240?\227/\037-@\037\267?k;\315\212\312Z\243\277\325\356\204\245N~\205?\341\326\0334\272w\225\277\356\230U\210\306\305\312\277\033|oF\304\375\227\277\025\367s\230S\233\271?IU\276d#\243\246\2776\354go=\276\243\277]\230i\370\376\206\262\277h\013&\345[\024\273\277\344\037\315o\301\355o\277\320#vZ\007U\226\277#\005\372\330\316\264\220?\345hk\035uZ\270?\005?m\341@\273\300\277\370\267\337\277\037q\261\277b\017Q,\033P\277?\356S@\364 2\250\277]{.yk9\262\277\375p\275%\034\363\267?%\216,6\256v\306\277\r\227\240\215&R\303?\200B\353\304\322\361\261\277e\331\323\361\002g\260\277K#S\251\376\360\241\277\371\331\356\215\267\252\221\277\031\313q\264\314Tp?1m\316z%\032\261\2773\016\263)(n\300\277\005\'\362\2432\334\227?\363\n\330\245p\344Z?YN\033*Z\322\241?\321\267%\302\341#\257?Yz5\037A$\303\277\357\221\353\337s\207\267?u\245\030@\361H\303?\026\375??Q\231\212\277h\267N\031\246\t\276?\241B\024c\326\225\307?\326\n\355I\274\332y?\247\0376\253\224\035\267?I\255\347_;`\270\277\276\226g\373\334=\237\277\332\274.|\243e\243\277t\376z\355u\361\242\277eT\254\244r\207\307?h\370>[G\255\202?zG\356yk\317\303?\314\266\351\232\206\223\312\277\217\344\242g\303\377\305?G\244yBk\356\246\277\0039KM\306\311\270?\237u\211\324a\265\244?\226s\342\375 \272\231?\356X\017a\377\203\235\277\263\2374TCI\272?\374(|\335\327Z\300\277\332m\376]\000\017\206\277`1\3731\023\r\267\277\204op;j\200\266\277\236\224\327/]\035\271\277\004\336\365\223f\213\264?\025#\262<\210-\262\277K@\207U?\220\260?\336\227#~\216\207\261?H\232r\271hS\260\277K\376\n5\254\335\251\277\364\354}i\022\303\243\277\324\0170!\260H\200\277\310M:\237`\315\261?\305\305\340y9\005\271\277NB:Q\270\274\241\277HP\243\214\247]\254\277\247d\333\322c\023\300\277YD\0362\272\205\267?&6\'q\034\352\262?\020\210\374\261Eg\250?;\003\2555p\006\300\277\275C\364\344\032\344\230\277\367\014\014\017\273\035\227\277\370Y\020A*\226\251?;\177s9\326\353\245?A\3144\200ykd\277\3663\312\022\017\006\250?L\261\274j\3465\300?\334j\372g\3150\202\277\037\020N\222\300\326\203\277\245\336\335\270QV\221\277\344\235:\021\376\331\241\277\006}B&x\362\207\277\371x\230O\025\343\306?\223k\207]l\316\302\277\323{Qr\265N\237?\007\306\377/\333)\235\277b(\226\020\035h\271?\217\033!/\322d\310\2770\177\032\267\257q\264?\316\373Ez\014\320\243?0\322\300O\241:\310?\2726.Kw\354\215\277\021\017o\204\364-\177?\244V\202\377P6\313\277\355\256c\2611Lp\277L\001\025\021J)\265\277\275L\272N\272\205\262?v\325r&h\246\266\277\311\346\234F\364\202\237\277=\253W\221\325\034\250?\352\2070\323\363\320\261\277\314\246=\r\017/\302\277M6L\307\\\240\272?\277\273\311\354q\014\250\277\353\310x\273\332*b\277\0160y\213\203q\252?\241\265>\031\216\217\264\277\257y\344\034\271\275\330?\025\210\\f\3413\222\277\374\206\204\342\331\306\202?\035g\215\351\374q\310?Z\227\241<(D\322\277N.\317`\277\255}\277\246*\033\021H\376\246?\270\223\030\'\201\330\305\277nA\326\002/\201\243?B\232s=\014\375\242?Xr\204Z\201\335\266?$\240\210n\257\216\304?\264\006\300i\033\206\264?\302\322\254T\207k\234?#\267\025U_\227\261\277{\247\335\273rp\260\277\223@%8\224<\312?\232n\332H\321\321\266\277\367\311\3037x-\322\277\215\027\353\220E\'\253?\332|I\210>\216\225\277{\322\006\213\352:\263?j\225\031\261\221\231\037\277\277\240\357\335\237\344\252?e\002\315\3652\'\271?\tt\306\256p(\307\277\364\323-\203\340m\230\277Q\376\031-\004\300n?\003\317ie#f\270\277\023\032\361\330\375\200\235?8\247\335\257{\372\244?S\003\\\230\267\336\241?\035D)2\275\373\277?Q\346\243\217\370\243\270\277\r\274u\243\246\364\233\277\036 \025\317U\034{?\275?\'sF\260\302?dM\323\200\017\226\220\277TzpF\364P4?\372\354#\216\213c\323\2771\234\316\216Mi\271\277_\271\234\031\262\263\227\277\365s;\035#b\301?\014\2254\375\272\350\211?\332\325\026\032\362\315\260?^\341\334\032\231\277\323\277\264:\343\3163\322\316?\253;@\303I\264\272\277\223\300\236\262\233L\256\277\210\301\330\347R\215\241?\2576\231\212\234_\260\277<\342n\320\003\007\263\277\322\346_^\236w\300\277\263\204t\213x\331\247\277\350\0231VHu\252?\020\002\334\351\302\177\213?\354\372\331\317\002\266\302\277\306\364\203\027Z\237\241?\272~\221\360Y\3361?I\350\220\034\177\210\225\277\006\234\337\037\004\205\334?\361\262E\252\3179^?E\264b4\020\310\265\277\2069\366\315\343e\277\277\007W\265\016p\223\267?&\221\204\300P\006\177?kI]\317\363\207\223\277#+\217\004\212\223\300?\212\214\001YY\020\214\277c\373\2074\245\024\273?\261\033\302/\242@\262\277\266\235\003\0376b\252?\256<UY\367\327\302\277XQ\241\021\025\245\306?\016\303{\024\200\364\320?\200\017\273\210\3232\231\277:Y\004j\201\003\225\277\261\0077\332\262W\270?\357%\240(\331\211\236?|\307T\r\010\270T?\377;M\315\030\251\304\277/\\\325I\206\247\315?\304\311d\317,\275\266?\215\025W\010\250\037S?-j\031e\242g\305\277\267\236\276\245\324e\217\277\'\2776\310Z\233S?5)\276a\333\332\270\277*\247\366\354\300\352\324?\217?:\341\270D\261?\331\237\004?gF\267\277\332#\321\036\231\373\254?0\315\306\335\335\261\266\277H\261\034I\316\030\233?\314\343\365y\305\253\236?\\G\340\253T3\311\277M\035|\370\222\254\225\277CR\241\217[(\276?h\021\225\323p.\216\277\303g\236}\271I{?M\177\221\202~\361\245\277n\305\253\331\351W\304?\220\306\001z\247\013\251?\304Vy\3126\376\301\2773\013\007I>(\211\277\212\013\3366\232\033\243?p\'\0209\360\215\250\277b\323Ycn\273\246\277\260u@&\323\250\265?5x\277\212=\241\274\277\370J\342\321|\t\253?r\225J\010\345\307\257\277\220\265\240\027\027\262\310?O\200\027\257})\242?VU\"h14\246\277?\377\276F\367\363\240\277\221\315\356+\232\331\320\277+\336\374\214y\266\270?C\312\021\333\362\237\260\277A\226\025%\254~\262?\034\220\343)\345d\250?\223OCY\005\202l?\216D\0176\007R\260?\220AT\213\355@\304\277tgoV4\246\226\277\323\332g\312LZ\255?W\376\031y\241\030\306\277;\323\300\32275\232\2770\330!R~\244\270\277\016\272\355N\356\014\227?B\026\375.\354\010\273\277\344\023*\302\370J\302?\376\233>\266tK\306?\211K:\360n\236\262\277B7{\303\333\014\311?1\320\350,\377:\244\277H\226\275\350\353\246\264\277\271\225\356x<\261\257\277}\224\265\312\332\200\236\277\223\237;\022\265\336\300\277\271\257N\320\367\034\307?\370 \372m\030\350\207?\213rZ<\014@\247\277{\320s\177\202\336\271\277\332\325\246\200!j\261?\255\273\324\370\315\224\273?\376\025)b\022A\234\277\207_\306a\233\343\273?=-CM\222\'\262?\032[\214\0230\365u?\354\221\207S\207\025\220?\255\31317\\\224\306?\217\214\362\373\266#\242?1\004D\323\300x\276?O\031\006\025\266\276\330\277\324\345F3\230i\232?\\\241h\242Wvd\277\342p\203t\331\345i?]z\341\2505\333\266\277\274\332>\212\207+\224\277c;\nd\343\314\272?\275\nA0\350\t\247\277\202\010\324\303\034\202\246?E\000\324S\321/\253?\242\342\376\311Wrc?\'\023\252\034\010\033\257\277\263a@\264\340\355\225\277L\231\016\177O^\303?\222\010\273\007X\003\307\277\346\251\214\002\"\347\177\277\342\225\2511\212j\274\277\327\266\026\226\267\232\203?R\311\344\014\221\315\325?Ua\377\226\270S\306\277`\314\376\352)\275\260\277s\343=\\V\363\255\277\245}s<\364\237\261?I\203\371\301\204(\257?\344\363\016W\214\347\242?9\353\035\231\267\361\267\277*U\362X\262\321\225?\177\377i\323\027\216\301\277|T\027K\220G\271?\364\245hm\016\231r\277Q\273\r+\nv\242?\360X\013\303G+\260\277d\264Vr*I\262\277\036\307\005\004fb\274?|u!\245~{\230?\007\\\261\221k\241\255\277Btx\245\362{\252\277+(O\244\346\256\245\2770\263\212\230\225\315\265?\006=1Q\2216\252?\223hE\023e\377y\277C(\300\242w\016\252\277,\002P\2726\254G\277\305\214\326\325\0175\265?\254\001`lAN\276\277\364O\222)<\001\253\277>\274\243\210\257=\305?\321.\230.\025\031\301?G\271%\265|\370\251?\337\2626i\2475\225?yxy\r\245\252\233?\377S\260\tb_\210?6t>3tG\257\277*\206\246{\300/\305?\336\026iwTp\177\277)\352\'\223\325S\224?^\222\240x\360\236\300\277\307\355\263\326\202.\273\277K\311\364k_\305\207?\244wS\3777\370\301\277\342l#7\355\334\257\277\271\223\006\2027\204\260\277\016C\317\216\320\240\271\277\322\032\224\336n@\277?\035w>BI\236\301?\255f\324!\201/\250?X\227\215N\330\033\266\277\010\013\010\222\244\'\321?\232<\230\000\024/\262?\277\260\224\226\371A\206\277Q\261y\374\326\245\256\277\326\227\224\257\271%\243\277\270P\305\212(\351\255\277\370;\221\"Tn\270?\376;\332\263\271\365\305\277\272\201\005\337\227\243\243?n\240\264N+\247\300?\315\231\2160\246\222\256?`M\316\350\303\010\202?\232qo\\\344\256\215\277)\360\177\300c\254\204\277\245\242CI\231\225\270?\017_\314\023aB\231?\263\232K\305\3676\274\277\317~\222\3643-\261\277\206|\314\0145\262\257\277*w\202\253\335n\305?\222GC\000\210!\275\277f\014\r 1U\340\277\005\312\276\251\330\235\264?:$\0332\311\261\243?;\264\233\376\034\034\261?\275:\224\353{\200\241?.\326\307p^\351\241\277/\321:A\370~\203?\205\360\025H{\000\217\277\264\335\222fK\217\277?\210\241QW\356\376\251\277v\273\337\357\207/\221?I}O}@\375\260\277\302\000\266\341\332\334\270?Al\271\360$\320\276\277\000`a\251XZ\323\277K)]\234\222\307\250\2774\t\256{\247\231\262?\245\017\337\370Q\004\234?\310]\rk\005\261\205?Rd_\273\373\277\243\277\341\377\354\326\364R\214?\214Z]\213xX\311?<;\234\310\3625\246?\361Zp\271\261Q\256?\351\333\242\360\333\036\325\277\367\257\235E\300\370\237\277}\356\355?\332\033\302?\013\324\273\322\347\205<\2773q\274b\352\347\220\277\255sR\216\307g\261\277\007\375L2O\307\216?ZU\274\247\256\254\275?\276Fs\210\017\331\274\277(\003\234TMe\232\277\243\2260{\252\n\232?\034\t\340U9#\302\277\3724I{\224\225\270\277L\377\272\177\366T\266\277\261\257\253\261pz\272\277\233\311\213\230Py\234?\002N\212\265u\036\300\277#91\021%f\231?\273ck\336i|\271?\366\037\036\241]\014\277?\026\233\365\315\201\244\247\277\273\262\224\221\351\320\303?\335F\013\354\217\333\264?\2740\211\367h\235\276?\221\232\347\363\025!\277\277\365\240v\"|\006\276?\306\260\342k\267\377\261\277a\330)2n\311\270\277\227\r\3254\035w\303?\n\224\023\360\255\241\303\277|\246%\022\326\r\253?\353\314+VC\230\275\277Cy&s\227S\264?\264\267\362\345\034\261\300?\0371@\242}\253\237?\017\206E\324M\001\272\277$\317\342E\005\364u\277\362\205\312}\336\032\262\277\374\2318\365M^\252\277\032\346\327^o2\262?\244\203R0K\206\204?\234K\221\314$\217\243??\311\216)\216%\307?(hq\262\334\000\237\277\236\036]+%\315\300\277\272\327\252+\356\004\273\277\312GA\'E}\325?\343\234\366p\237\330\266\277\250\230\0174\307\265\264\277\010Z\371g\306\340\246\277\026I\004\212Ml\303\277\272\357\027n\304\020\223?\t\307\345\032p\356\220?&\340,\271\320\305\271?\204\217\347x\377\001\204?\350\211D;\237\037\270\277\225\304\312\321\365\031\310?\355\346\206#\330\214\302?\347\337\323\001\376\305\266\277\326s\025\311\241o\251\277i\326\334{\002\200\265?\276W8\350\352\264\216?\007w\004\332_{\266\277\313Q\352\314\250l\204?\022-\n_\312\327\304\277S\223i>\273\225\270?\001\224\363_4 w?E`\227k\274\r\255\277\266\024\203\276\201\364B?\326\235\r\374\324\264\302\277\341\214 \230\277\244\314?p\323 9\371\355\263?\257|F\030W7\214\277\2674\3357\276\212\305\277\251\224\007\312\'\344\261\277\004G\342\014\221\320\300?\246\251\013\302TC\237?\026ou\235=L\302\277\016\257Xt\364\373\304?\026\013\314Kj8\226?\306\236\217\351\271\005\261?\235\257\324\322N\334\310?!\373y\273\035Ha?O\273\010nK\007\241\277S\373k~\2653\263\277`8\030*\020\310\231?\213s|\000\177\370\250\277kS\256\007\204\320\251?\255\272Na\301\013\251?\201W\003\346\300\304\261?\3673\260\254\"\311\262\277\203\331|\330\2674\266\277\006\337\3265gv|\277\237\362\356\376\035\271\272?\244\317\246sT\262\220\277G<\241\007\336X\261?5\363\333\306\326\265\221?\365\212\000\313%\211{?\222\251\253`\006\317\272?\227D\033\253l\025\234\277\373^\000\2407j\253?\232\3416\036\352\372\256?\262\261;\265Im\323\277\325\022#\004\t\205\303\277\033\332\001\355\354\351i\277]:9\222\355t\305?-P\362\233C>\266\277Sf^\341\177s\251\277\227~\325\\}\225\234\277\241\353\305{cT\303\277\316\275z\233Sbz\277\321t\277\"\304\301\246\277`y<\365\366\200~?Ve\\j\022\252\266\277{\315\007\217\316\304\230\277+S=\230Bm\237?\236<\021\274EJ\324?\225e\330\271\371\035\273?\356M\023\207\030>\260\277\334\024K\356\356\245\277\277\214\307 \211\246]\256?J\307\177\207m\261\235?<\234\307\375\273>\257\277\220\214\321\2301o\330\277\240\030}\210m\236\247\277\333\353\'\247\222\365\202?<\333\363A/\211\271\277\205\306\325\243\033\352\243?\335\313\213\0230\036\302?\335\003\323\314\027\272\302\277 \005w\325T\021\300?\014o\341\267I\370\271\277\007\272s\361\221`\245?\232\303\016\007>\323\302\277\311\264\034\235\244u\253?\r\313\353/\200\256\270?\002\255+E\247\333\264?7b%\035\223\341\307?X\340~E\343\303\237?\226\032\036\267\007\215Y\277K3\307\233\004\323\244?\274\370\3637\"o\246\277\033\2219\000[\377\247\277\215\023,x\274\341\255\277g\036\026~\347\217\217\277\030c\'\000\032\260x?W\246\034\320a\216\241\277\351\215\225\221\2470\300\277\364QU\001\000\177\254?\227\t$j\026\314\252\277\275\347q\264\345\270\267?\336\034\331\023\\\321\321?t(\362\0136\003\262\277\237\027\300f\316\244\233\277\347\266\344\321\261\007\235\2777M&\022\323^\251?w\237\360\351\004\375\207?\364\323L>w\256\276\277tS~\201\224\372\311\277\360\352\211IB\303\252\277\247\036\224\356B\335\262\277\324l\245\342\336\310\227?X\031\374o:\001\177?+3\313\376\225\305\213\277\207\241\032\261\360\r\241?\243\022Rr9b\205\277[\323\370\310\336)\206\277h\335\035\237\325\332\240?\030\306\300\3445R\245\277\347m\277\216\rA\271\277\025\240%zp\020\243?\306\'\356\035\2149\317?\343\020\275{F\232\302\277\342#\260\277\244I\226\277)\3460L\374\261\275\277\317`!\200\334-\260?\236\325\'l\303\235\311\277\234\002\266\004\272\033c\277*03}\224\345\260?j\277\301o\255\013\205\277?\001\206\227O\300\300?\262\322\333J\347\372\247\2774\00662pn\275?\220h\000S\016\000\246\277I\031\207\302\277r\233\277r\001Pv\231k\221\277\245\004nF\375\342\261?\356/y\243\275L\242\277\236\304\215\313/\r\270\277\032\335>\321U\305\235?\277p\354\341#y\270?\0069\202a\256\271g?\353\305\263^\177\261\263?\250\023\247\305\032^\302?b\355\205[\025L\212\277\2164\203N\300\242\270?\312\325\247\302\234\020\310\277\265u\351\257\365\226\210\277\345a\265\216\225\231\301?S\304K\363\325\031\273\277s\027\356\335\006\205\302\277\334o\033nC\001\237?\343\312\270v.\262\251?\353\312\0074\r\356\304\277L\245\030\260\006\323\300?\252\224\2251\027\251\246?>\314\375\007\374\256\254\277\343h\315\361\363\255\303?H{)G\274\257\260?\023\352\236\016\233\237\254?\236\263\000\246\355>\244?J\017c\312\322\217\236?\373\273RN\313+\224\277O\226\301\214bO\253\277\236\321\r\007\247~\275\277=\303\"P\t\322\260?*\250\007c/\360\232?\'o\227f\025\344\263\277)\273\314\235h\230a\277M\035D\316\254\337\240\2774:\022,6\372\271?\257;mcT\263\322?\205\252N\226\206\035|\277(\241g\222\206@\262\277\341\352\246e\263\314\304\277\321\377\321\247\256I\242\277\246\002\"b\217\262\262?K\374*x\375\022\300\277BJ|x3m\235?b+\177\000\370v\261\277\276\t\217X\230\314\265?S6\266\n\3256\310\277\025/k\222\200\371\304?\005Q\351P\357\030\244\277\010\252\357^\n\312\241\277\275\013\200\316\221\010\301?n\324\237\343m\314\317?\253\336uN\275\032\204?\221\256\332\262\361\261\227\277\203\025\036i\265\006g\277\272\0378\305k\301\252\277aQ\267x\263\355\261\277\254u_L\000\354\276?\322D\330\314^2\247\277\263\213\013\323v\221\266?\301\322\306[\202\257\277\277\315\304\307\317\322\234\206?\034\246fsU\210\250\277\005\255\025\214v\262\261\277=wlV\226{\247\2776Y\013N<\032\244\277&e\255\230\233d\255\277\217\210|\260\276S\255\2771\025\326q\231Zw\277URC\360*\266\260\277\310MW\021\355\327\254\277\363\025\342\342\375\016\330?Y\3045X\014`\254\277#SWU\262$\240\277#$eE\207\334\252\277\345E\204\203\3665\240?\250\t\252\302\347\010\246\277\377\233\233o\'\'\265\277\247\026\203\025g\216\267\277\307\374a\245Od\260?\013zo=s\023\227?\'eag9\351\226?\336\210h\247V\322w\277\034\007\352\315\010\036\300\277\335\322_\330\031\001\241\277\372i\321\317\211\340\332?|Z\035\207\322\016\227?\232\216\223H\007\025\253\277\241\244\337?S\275\240?\312\205\310\344<\211\225\277\322\220\246\222\365\030\257?*S\360\253C\260\300?|\244e\3625\330\214?SQ\270\020\237\330\227\277;\027|1\256\354\270?K\026\350pp\253\323\277\307\371d\211\367\243}\277`\322\342\353\223{\277\277\312\325VXM\373\273\277\014\344\363Q9\365\320?\326\227M\t4\254\247\277\371\303\007\300\324n\243?\311\262\261q\027\"\231\277\3347\035\001\220f\263?\243\206RJ7\302\225\277\215\275\355\306\364\332\266?\r7\346\033\331\360\315?Q1z\305\352\000\255?\213\324(\032U:\263?\367\324\315j3U\325\277\330\234\312\344];\226\277\023\205\367\260\251\300\302\277\352\030\002[R\272\217\277?t\255\033\262,\272?Kw@\335\340%\227?{\352\220\205o \274?\035\317h\251`\236F\277\236\005\222\210\005>\303?\305\0042\263X\340\221?\331&\364c\231u\263\277\244Ki\232\247\350\225?\nF\212\255\236y\245\277\301\010\234P\203F\272\277\252\251\250C\261\\\307\277\323\010\000\033l\200\250?\267\037\3554\020-\240?\274\336\360\257\357\255\315?\005\260\261:\356.}\277\016\306\037\351ER\260?\3358\026\377\2339\257?\364(\233\212\361\236\263\277\3247\374\n\262S\260?g[\260i\375\204\221?1\344\355\273\360\242\240?\013\n\303\223\342\203q?5\212\025\214\177\370t\277\234\266\361\267\032|\260\277\000J\032\356\201\323c?\247f4{\004\313x\277M\276\343\376\342\032\261?\247\025\331\245#\201\223\277\331\326\002\334\266\\\202?J\032\222\ro\254}\277\255\367w\263\026\031\310\277\274\336\375u$I\302\277\032\t@\257tY\247?\221\326\210aP\322\273\277\t\342\236,\330\206\304\277?R\316f\367\244\303\277VV\222\262H\263\235\2779\027]\305v\237\305?\325\031\271;\336\310\240?F\327\307\t\3254\252?: =\177\220`\233\277.\352\352\367\250\325\322?h\2230_\224\360\223\277\r\002\357\r\313c\252\277/\375\326\305\177\270\266?\255\271[\240\307\356\270?\361\224\312YC\333y\277\370\270\352\326h\007\211?\215/0\211|7\252\277\034J2l\367\230}?\215\\\024\365\030\357\204?\255t\223\207\206\343\272?\336=\305\213\232\351\264\277\202[Q~o}\221?\215\301\205\001\241\373\303?\t\343o\375\\\331X\277|J\321\207i\321\276\277\230nb\316\217\262\254\277f\373T\264\246\260b?9\'\360\216C\013\270?v@XJ\"4\263?-\204(hi\352[?\366?s\246\263\022\234\277cx\200\365j?\265?\026\270H\252\233\336S??>q\311n\026\301?\205\342\376\305\272\022\321?\240\0303\312\333K\251?\326:\361^A\257\271\277\241?\372y\241H\307\277\341\035A]?v\312?\365\337\213=\330\265\225\277o\337\262\243\2068\252\277QK\223fVs\300?\r\246\313D@#\277?\2322snIfy\277\274\033\270\202q9\261\277\032}\264\300\024\207\316\277\2060\275\376\0373\277\277\313\002\334\226\310\332\231?}K\224Y\277)\230\277\362\206/\027\345\234\232\277\333)p\231b\252\246\277\003\261\n\321\360\027\222\277\004\311)0\310n\300\277\025\250\235u\035\027\253\277\330c\276-\021Wl?\342\216\231)*\235\317?>\313\202\215\r\377\272?\240\030y(\030\260\271?\0075=d^?\205?\016\341\323\362\256\367\266\277n\225\034\256\315@\271\277x\371\215\340<\253\272?\235\345\017\241D \306\277\022R1\230\335\n\277\277\022\241\002n\253/\271?\005\231\374\014\375t\252?\344~!.p\010\305?.u\323\277L\233\242\277l\235O%\375\265\307\277\262\274\213\t]\032r?\312\304;\214\365\017\247\277\352i\326\331\374\264\263\277\271\354\345V!r\276\277bs1\251e\001\300\277\320\347rX&S\244?\214\234\341M\365\334\221\277=\213~\247[b\270\277\314\251\035&Vy\267\277\010(\311U\211\264\260\277\r{\346b\241\250\263\277\371s\235\205\013\266\306\277b\234\272+\307\000\267?\362\325\353\236\263\005\261?hd\026\354)m\307?Q\342@\356\225@\204?M\317\373\371\027R\302?^\227\006\037\031L\252\277\202`\242\016\357D\276\277:\235\345\270\316\003\227\2775\262\303.\336\323\221?\274\223\"+\345\335\333?\356\234\312\300P4\305\277|\226\t\256\236\276\270?\361i\346\336uy\270\277\022\340Uq\324\310\266\277\017\325Z\301\220\350\232?\032\373\250\372:\303\261?kb\027\240q\351\316\277po\255\245I\323\312\277\376\202\311\033~R\265\277Z\0018\r\242%\224\277\210\243\243\235\007\241\307?\267(\030|Sl\261?\243\375\306\347\034\033\301\277V\215\275\226\340\375\312?Hu\211S\371d\260?9,\023q\345\307\277\277K\027\301\361=\031\261?\\\261e_!\336\177?\321\212\247\371\251\003\266?R;\255\310f\313\305?\260\367~\372\364\243\223?\230\361x3\306D\300\277\200\367\360\302\343\321\230?\027\312\263\222\034\033\257?s\024I\273\026\347\244\277\321\273\2459I\014\304?1\212Fg\242.\251?q\014J\236\345\327\271?\351\004\336\277n\231\227\277\214d\200\354\260_\261\277w\305.o\310=\301?\031F}\376\216i\243\277\210\003\316\024\030q\217\277\314\300\3431\250[\300?7\000\013\313B\354\244\277\3232\001\254\344\"\225\277a^\362&\272\346\224?|\003>\352e\224\300\277\034\010\013=Z\214\300\277{\226\227\300.sq?\025\032\022\363\031E\254?\355m\305\030\032\266\276?\245\277\"&\244\261\245?O\325\021\230\215\"\217\277\177\242P\244\331h\261\277\365f\345\372\017\025\306?@>`w\240\371\256\277\206\005\210)\030\372\260\277v\000Z\337B\303h?\315\022\376Tdl\306\277jd\343;\244!\277?s>\034,\2142\266\277\177\355N\246\370\234\211?\234|\261\213Al\302?\245\004\306\242\235I\271?\300\310\010\250=\314\266\277\305vg\251\212\035\244?\247\254^my\252\270\277\351\276t2\024r\317?\307\212\216\372E\214\267\277?\270\247\337\377\230\263\277\021\004c\251\346\024\314?\333\245\264\375C7\263\277\251\224{\203G\001\212?C0\'V\020q\204\277u\243\000\t!\213\234?\260c_\300\007\245\200\277N\030\205\031\344D\246?\213D`\005[\252\200\277\224\235\203\'i\240l\277&\\8\000!\373\236?\347\n\021\304\307\330\301\277P\262+\265\310j\254?q\263\201\370>\200\263\277\024\016\321rK\265\273?N\007\271T\n#\274?[\344\360\277\223\221\274?\226i\311*\220\016\253\277\336\333\030\251\247\363\266?rnn\355Q(\312\277\017\275\350\004\226e\212\277\325Q\nV\307\321\306?\367\023\363_G\203\241?\005\222\215\375\274\"\262?\022\n\252\3467\272\241?9\\\013%\004(\240\277v\361}\361\231\236\310?W\257t\333#\315\200?\354\270\370d\3717\267\277\304\024#b\303\273{\277\t\360\371\334\366\345@\277\257\202Pk\026Z\230\277\007\376\2169- \271\277k1\010t\263\243\235?\373\006\220\334?O\310\277\321\374\202<\"j\261\277\255\205~\244\211\343\270\277]<\215\246\272\010\252?\246\300W\022(\306\245\277\300y\357\007\342,\206?z\263\275\312\210\351\267\277nTW\366\0208\301?\030\217\362D+\226\272\277z\270@\0266t\241\277 \352\006\200\237\235\251\277*\367\275\226\033\310v?\362\324\307\000\340\337\221\277U[\332\022)n\253\277\343\236\345$EJ\317\277\372\030\0069\\\264\264\277\300\016\004\342}F\221\2779\335\255\021\365\214\302?\330\205\346\224\370\364\221?\204\372&\377\262\356\314?\346\302\357i\014:\265\277\203Xf\033\261\365\317\277\2147;!\334N~?\274_\017v\231\254\314\277Fc\r}eg\273?)l\023\036\007I\303\277_\036\213\024H\256\211\277\002\360\245\343\275\026\201?\212\340K\207\267\'\263?I\271\231@\240\034\242\277k\203\257\353H\321\252\277\326\216t\223\205\246\311?\t\303\327+\326\374}\277\223Q\010\353R\177\267\277w\264\277\007\375\221\240?-\357w\350\2406\320\277M%f\216lJ\246?\0020\013\016\272\337\271?\225\201\264!~]\303\277F\021\334rS\250\265?\003\247\304ZL\363\246\277c\344^:\257 \313\277\377\327\234C\363=\251?\032-,S\355\274\240?V\345\373\031\375\365\263\277\311\"\323\267\314\216\325?%\2147\316\030\255\243?\020h\245h\336\007\260\277o\251\237$7v\271\277\002$\202l\325\342\254\277\315e\346\354\215p\233\277U\311\363S\333\250\276?i3w\351\221@\277?v\247w\336\227\274\232?MZ\303\233\037\365F\277\007p\337\311\237n\241?ZWg\326\237\330\201\277h\207\355\303\320\035\244?]\026\014\232\036\016\272?\n\225\3047\rr\252\277\347\206\'\357Wi\256?ms\177}w-\237\277\223\026\027\361l\335y?f\363\321\2459\336\271\277Fg\"4\230\306\256\277cC\031\363\354M\244\277\210\235\200\327\327`\270?\215\031\'\201;\243\314?\327H\r\336\251S\251?g\323i\354\0169\241\277\177\355\302\221\262\221\310?\274.~C73\273?@\255\335\232\304f\236?\027\314m\022\003\356\262?\006\205#t\367J\242?2\323w\220\014\370\260\277t)\321\230\262#\302\277\274Smq\036\343\261\277\265\025\023\3448\267\255\277\267\201\376ma\177\250?\377m\306\347\030%\270\277\235+\n\245.Z\277\277\377\363\317\013\215\236s\277\307h\202\224R=\260\277U\201\372C>\032\256\277\236\t\214\317\340\224\255?\\\"\210$\266\267\223?\254\3717\307\237\001\275?J\300\260b\346!\257\277\256[b\3563\206\264\277\264\363\233\232Q\220\273?\001y\270\237\236z\250\2774\200\002\261+\"\234\277\306K{\031*G\270?L\003\311o,\030\274?2\021\266$\311y\221\277E\013\343\217M\030\224?O\301>2\326!\272?\216\t8\201N\231\300?\363=(\273\247\227\255?\r\337\374\323H\262\250?\234\255\346\361\314\244\230\277{R\231\\\3608\232\277\027\2212\"\377*\263\277\362]\022\221~\027\245\277\305U\310\017\217{\304?-*<?\tO\252\277e$a\200\2029m?\010\340 \225s\312\304\277\351\333\233cZ\"q?\272\312\373Y\004\325@?,\333\375\274]\264l\277\373u?$\252F\330?`s\310\377tL\232?\tB\317l\206\337\260\277|}\037\300\307\361\316?\3303C,\354\311\225?\036{\025#\007\260\312\277\340\237:\233\t\355\300?\314\365\t*\023\"\243\277\n\357,W\264\227\261?\252\233\227\236\024\006\262?\251Q\037e\237\307\260\277\373\272z\307\357?\242?zw\031Sv\344\244?\264_\n\n\227\225\263?\010HR\364t\301\273\277=C\007\0148\037\250\277\234(\315\037\007\361T\277\"ze\230W\363\245\277\026\273ZRu\213\221?\023\353\245\361\305\332\272\277\331,W\n\207g\256?\242\001u\013w\230\265?@\310i\030\365\215\243\277*\357Alu\214\204\277\332\202\257\363\025\306\271?\205&\024l\221\307\301?\313\300\331\307k\211\224?\367c\\\317\013\312\264?\326E\203@\212\260\251?\363rs\222\367\371\242\277N\214\307\355K;\276\277\001N\365\322\245j\311\2771>\213KF@\221?S\257\004\247%\026\240?\023\251<Dz\217\300?]\323\266\244\036\244\253?\243Pc\272\351\220\271??>\213\274Dk\274?N\323\372\330\036l\261\277\264B\336\314\364.\303\277#\301%\014$k\212?\217\033\327\363\211\324\305?\t\251MX\001\027\241\277\252~\276\033\201\363\225?\213\357_y\2117\235\277\271[O\355\207\020\307?,\024\326\372\301\243\277?\024$\301\234j\002\273\277\246or\023\235\256\304\277\333qK\310[\230\306?\242\247BC\351R\257\277\2635\234*V\236\270\277D\234\366\320\364\235\253?\215j\365\024w\362\264\277Z\247@2\347K\247\277.d\013\206\313H\252\277\002\025\252\036eJ\270\277\247\260\256\364mN\243\277o%U\200\213>\246\277BS\001\310\342t\315?\300\226\304Y\232\371\177\277\224\024\230\205\365;`\277W\0357E\372`q\277uJ\271\212%t\243?\357\353\331\203\260\332\240\277\023j\312\330j\016\266\277\301\304k\016\362\223\304\277\017\200\250<\323c\245?*O6)\207\317\270\277\307\333\265Z\021n\271?x\232\313un\216\205?fc\370\r>\234\244?\261M%\256\014\324\300?\256\222v\n\0004\260?\003\233j\306\320\274\242\277\020 H\216h\024\257\277\320\025\267\207J\376\266\277\306\253\377\376\324l\266\277>\324t\311\252\'\240\277n\252O\020\327\'\264?\021\241\034\025pr\233?\243\337\245\231\332\365\257?\260/\232\302\335\240\203\277 \\\235W\021\317\267?\026\203\314\272\232\032\311\277\035>%\"\264A\250?\204\266t\024\204\330\266?D\204\0109\201\032\310\277\350Tkb\373\002\244?I\342\244\313{\016\220\277=\240kY\360\343\304?\352\201x8|\345\177\277\345?\022\217\201E\205\277\\\225q\215q\325\307\277\3646J\351!\300\261?\213;v\245\300\031\270\277Z\005X\221cJw\277\342\037\357j6\211\237?X\342\245#\360\217\240? \235\307\207\\\376\274?\237p.)\346\265\275?2\372\337\000\024\272\242?\020\353eA>\270u?\366\016\233\345(\360\310\277\257\27225\270O\276?\375S\353\313\367\257\310?\210>\270\r\021j\255\277\341{X^\305\233\263?E+\3416\376l\201\277.\310\360\233D7\301??\004\343\006n\311\271?a\343]b\276\354\236\277\313N\202\227\226w\253\277\367\021{\264\237\240\227?\001\211\344\016\271\347\244?^t\034\016tR\324\277\274\2259)\036\324\317\277]5\2225\210\323\261?\257\342\033dy\304s\277\337\207\211\256M\r\324?\264\014\273\204\270\354\275\277\362g`\336\033\221\261?\373\017\372\234\262\275\277\277u\2263\014]\203\263?E&X\024)\201\221\277=\273L\254J-\216?\273\017\271FD8\270?\331\320\026\234,\352\225\277\016\370H\"\006\370\257\277\242\200\006\207\032\357\300\277\363\317iJ\267\321\225\277coH\000Q\257\305?\311.\351\232}\020\326\277\027\354\332\356]\n\273\277L\010\004S\325\210\206\277\'\0221\215c\323\255\277\240\377\267\334O#\251\277\336!\254E\023\\\271\277\373 \236-\200O\242?\366\322\026\341\232`\233?A\200\203\364\272\305\240?\220\024P\366\210\376\264?\030G&^g&\237\277\326\220\370+\340\322\246\277\275\324\024b\251C\210\277\240\377\311z8\345\275?/.\016o\035\226\204?<\325\033\242\220\244\260\277\356^C3\352Dw?*T\342J8*\266\277o2zj\201\375\243\277\021\277/se\373\273?\354N\377\357h\346R?\027{\005Dq\272\274?1\326\271PK\330\305?\247\375WG\027\236\221\277\206\312\332\03120\241\277u\005\232\355I \261\277\353\341\366\002\035\344\275?\022\265$\317\250j\243?\217\030\3420\231\311\305\2779k-.\351\010\324\277a\027\270\331`k\260?I\255\366pj\261\263?\247\342\324\214j\322\233?\247ax\220\341B\226\277E\251\277301\201?\206\035\343\361\216o\254\277\240\353@\350\264\213\257\277\r\326\013\341\2376\234?\212 \024\212*\204\237?\021$Y\223\346.\236\277v/.\030k)\276\277\262\367K\372\2562\300?G?>\326\365\223\276\277\301K\362\376\177/\316\277\342J\"2\310\341\263\2770<\312\200\270\261\237\277x\334\245\235\303\n\210\277HR\324\202\203\270\262\277\203\361r\301\205[\244\277\316\346\256\">\370\301\277\237\316}\375\200:\317?\025\347x\257}M\255?0K\202\236\374\366\222\277\026*\270\265\346`\302\277\243\023\202\252zb\224?m\022\305eX\004q?\025\007q\333\322\030\270?\252\356\300\201\0350\227?\366\312b\206\307>\303\277f\344v\321\240\247\243?\334\366\370;\310\352\214?T\224d\372\007\253\261?\234\334\035q\334\234\227\277WI\340Ej\214\205?/\213\220\317(^\224\2778\024\346\001\360\257\250?p\020\327c]\277\221\277\234O\214\310,\354\266\277\365\200\223\343\302\003\215?/\303\330\363\340\313\177?M\034\234\352P\351\234?\270\276\370w<\255\225?\206s}No\301\252\277\006f\037-\217\332\245\277\322\260\366\316!\336c?\337\272\307\220lK\252?w\246~\022\213S\213?\256B\356\360\233\224\275?F\252\320\332l\214\311\277u/\254\366\307Y\211?d\025\253.\270\307\300?S\203l\257[\337\333\277+>x2_z\260\277K*hi\311D\247?\230\013\250n\323\357\273?\272\252*\226\224\312\322?*\366\253U\211\301\216?i\362+\313\357A\300\277X.(U\234\350\241\277\312\032\320\243(\332\265?m\252\347\310@\223\247\277@\363Z*p\225\310?=l\235\026H\215\267\277\300\313S\364\036\325l\277\371\301\'\202\3274\275?\231\302\252\037)\353\320?\307\366\241\217Y\026\221\277\334\325\334\363\025\245g?2\247\002\200\210?\261\277\366w\370l\210\266\323\277,BV\2205\266\224\277\207<\337es\033\256\277h\307\231\207\004\017\245?3\240\210b\2045\261?\207\200[\341]\316\212?9DF\327p\300\251\277\326.A\363\360vt\277\252\33640\333f\247?\344\322\311\361\344>\270\277\"\006\271\330\304\227\304\277\254\020\020W\344\361u\277\220\343\351\3666\014\242?\362\025\271\262\t\257\273?M@\252\244L\r\317?N\271\356\224E\207\231?\0260\301yG1\240?\023\340T^;O\277\277\263\tE\371w?\262\277\365\361\005\370-\030\270\277\210\3544\276\022\377\247?\222C/\364(\347\226\277\366\341\353*\215l\206\277i\265\320\366\362>\267?\007\327\023\303\245G\311?\032\177\213d\035D\214\277\234_~\000\3411\262?\337\024S7\342\032\220\277*\005\313\030.c\260\277\266\t\241_d6\262\277w\037\274\245\r\341\224?O$*8\014R\266\277\237\217\272\207Rg\235\277\343\320p\310\366\020\207?\260\016\270\277\211\260\222\2773s\327O\373\226\320\277G\214\247\357\377\360z\277g\224\002\214@o\232?a\250\301\326\250\030\261\277>i\317V\311+\206\277j#\r\340yW\311?3\304y\340H\363\304\277Xf\255cS\355\300?wE`\334\202\344\255?\230\356\022\317\363\362\250\277\240\220\225!\203\030\261?\331u\002\253:\264\275\277\025\025\2020\325\335\271\277S\362\277\244)\261\254\277\336\257\234\274s\370\302\277\267\363\333v\236\315\253\277\233\263\267\230B\240\251?\207k\301\267Y\315\272\277\250e\200\001\245K\240\277\221O\255\373\177\350\242?\352\344\204qo\316\272?\314\\Y\302\016y\306?\367\327OVPr\261\277\'\265Ne\342\227\241\277<D\005\037\244\207\267\277w\364\027\341\017N\261\277\032\350\177\3525#g\2770Tj?\232\265\265?\256\305K\325\036\360\320\277\247\261\325\215\021^\274\277\370\313\203E\2163\225\277\207\nA\274\227\343\301\277\221\256\276\023\017\331\272\277\243e4z\313\223\261?w\376|\006\030R\267\277\234\351\022Fs\021\263?\262\362t\02726\235?~\373\376Uy\272\254?\322?\333C\251\361\255\277\357\205\316d\004\316\267\277\215\374\321i\363\230\225?@\361\245q\2528\277?\310\222\317\206\303!\303?\256\260\016j\327*\265\277\006\234\310\326V\332\270?\244\222M\267\312\213\326\277\272A\023S[\320\266\277\263\364\026\260\210\001Y\277\252\214Q<]\353\303?\220\305?\277+\260\270?\005\316F\006K\222\236\277&t\033\234\277\037\240?\013)\244T\342Dx\277\367vZX\260\027z?\210\021c;\243\305\212?\277\314\365;\361\252\265\277\305j\243\226\347\274\314?s\021\314\316\273\307\276?\350\351z\267\317\317g\277\236\253\364Q\347\033\312?\366\320b\247\244\254\227\277qQB\333ev\303\277\245\314\020\367\035Hu?\306Gp\213\231\306y?\370\204\257\321\362\271\245\277\363L\206\032\313\302z\277\215\002\241OCI\273?w\301;\300\260F\221?]\215\023\310\024\005\220\277.\355vO\241\231\206\2770\023\244:\222\347\205\277_s\n\034\275\311\242??\006E=y\213\217\277\372\"b\305\224\201\254\277\007\300\357\005\225\216\224?\342K\304\250j\002\242\277nWO\226S\217y?\354\324\254m3\336\331?\375\242w\372&7\251?\256\023\237%\247\314\232?\205\030X1;\233\272\277\342%\003~#z\264\277\221\036\305x\236\007\241?\313w\270\233{\246\301\277-\346!O\001j\311\277K\007qC\302\203\210\277rc\233\354f+\261\277\276\304\262{\277g\221\2771\370\0307\025\263\243?-\244\214\353\274\331\262?\206`\212UH\'\315?UE[\203\330\\f?\317\007\243\232;\276\272?\207\311\025\343\323\307s\277\215\244\003\036\211\0312\277\023\351\376\376(\013\311\277*\232v\221\354\361\244\277b\243\240l\005{\232\277\305\231\252\355\313\217\261?\"\270 O%\010\253?\362\347\022\206\225?\246?\033\244\250Q\364\357\303\277wh_\300\260\002\272?\376Z\255\307\016\026\231\277G\206,/\340\313\271?U\243\331\334\275\375\314\277amQ\275/\247\237??\244\352\324\345\302\230?\371`\346\355=\263\276\277\276XG\347\022\007\261\277\241\255\302\343\377\236\262\277\353\222G\203%o\205?\2071\302\374\324\341\227?\026\003\241e<\035\263?c*g1\324 \300?w\310\t!\013/\257\277\336\373$\235\372\222u\277\206\347\374\253\010\303\250\277\365\223\030s-\035\275?\361\366c\'\n8\315\277p\311\271\210\371\232\273?\314Z\251@\200\t\307?O>\313\354\356\243\244\277C\211o\255\014\342\261?\030\254\312`\343\004\227?s\255\310\226\025\245\312?\231\200.s9\356\311?\270\366\221\255\263\230\231?\367\n\034o\213\346\220\277N1(\226\276\374\301\277]\201}$\313J\271?\263\207\214\220dP\263\277=\014O\002j\321\262?mHEL\364\367\307\277h,\037\322\325\307\253\277\322\340\336\330\020\252\247\277Sv\335Xi\356\242?\313\214wW\324\302\241?\2340=\025\365\247\272\277T\273\000c\370\322\301?\032\303\265\237\226%\306\277\356\323)\345\345\340\217\277bA\\=f^t?\205\305\233\304\2519\242?\215\350>S\256j\247?\226\325\221\211\307s\240?\267\0370\264\007\'c?\351\271-,t(\313\277\264\021{\344\r\356\264\277\222@\232\303F\274\254?C\372gv0{\256?\267{\014\016\246\255\265?r\335\346\233:$\272\277b0\374\350\252\265\265?r|\224\255\236\346\201?\247GaA\314\023\252\277\212\001\352J!\347\241?\360\332p\234pr\320\277\341\031\262\335/X\260?\277\016\t\355\277\220\210\277y\030\235\1771 \270?\034\266\354ZB\237\311?\261\027\177h\366\216\264\277\034`\265tgm\260\277a\304\3130u\277\313?\310\\\001\233\206S\261\277\376\362h%\334i\225?1\017\221\216\332E\273\277\250\024\263\274\2450m\277\r\224d\365\325\363\240?u5 r\347\025\271?\2221S`}X\320?\316\267\216\027hm\300\277\007\205rw\322\204\235\277@\n\255/\200^\311?U0\035\rd\256\303\277y\221|\303\272\255o\277fVF\365\231(\251\277\266\tfA\232\225\312?hU\332\375\357^\261?22wg\261\345\252\277/>h>\010\370q\277\035\371\312Ut-\253\277\030C\372^h\016\255\277\347\352S\360\027\321\256?\337.Z\0102\355\277\277\335\251S\330}j\266?\344\352\021*\320\356\205?\346\2322\213\207\344\255\277\3454\271\355\250|\255?\251\205\"D\016\020\271?\336\345\"jen\263?b6n\250\325\302\302?\264b\300\021<\017\257?\306p\225\3654\203\226\277v\267\3510c\351|?D\240\366@\240\242\257?\355\250\2607\373\304\245?|\353\367\236\221\030\237?Hj\323V\333\320\272\277\004\247\276Y#a\237\277\255\224\346\3356\213\271?\341KE\207\rF\252?~G\200i\350_\221\277[@\207\236\210\025{?\022\255X\267\315o\261?r\326\204!\356\253\313\277\007\017\335\331\276\016\212\277\373\263\205\344\262\256\265\277\216\005EO\205L\264?||A\362\026\000\306?*\333\337\336\351n\262\277g#\210\024\271\213\300\277\303y\'\237w}\265\277v\303\246y\350\032\211?0T\276p\326\300\303\277\357p\346\354r\206\252?;\\\272\302V<\320?R\371\024\267\200\326U\277\335\nApo\364\250?sfl\351\315\266\272?\000Y\255F\325\351\225\277Q\353\330\326d\237\247?\031\342X;\002\234\243?\227\341\314pn\357\266\2777\234|\251\367/\177?\341Z\0326\233\351\246?\364\3509\332\205z\260?pd\221C@\316\265\277\345Y\214w\016\343\260\277\016\217d>\270\361\266\277\250\000\007=t7\327?\370u\247\206\251R\200?\352\0374\330\030\360\246\277\352-\006\035\333\217\272?\036h\007\215\037\356\246\277\363\0068\346z\241\256?\255\205\275\271\273pd?C\312\314\235\234[\263?\202\367|\026\242]\246?\022\266\202\246\301-\277\277r1L\005\006\017\216?\365\236\367\256\317E\271\2775p\016-j\243\303?Rq\303\242\021F\263?\263\233\340\2368\250\264?\245~\030\320\027R\306?\224\343.\226%\203\257\277V`~\236\035U\211\277\240\373\240\337\227\346\307\2778\231\370\273\\x\204\277\350\272\233O\272k\306\277y\315f\004w\013\307?\377\322\252\322Z\212\245?6\326\211\235LH\230?m\014@o\307r\274?\177\200w\256\237\220s?\321\017.c\246\303\266\277hH\341\333Th\276\277\255X\365\225\245\312\262?u\"H\225(\277\216?3\031e\233\251G\246\277\352\014\236\n\310)\274?\311\350~\323Qb}?\252\224\250\256\201Q\203?\371\034N*\2362a?\340\256\351\275\364t\263\277w\241\260:\240|\302?fk\252\344\014\006\301?\333\017\020\233\023\304\306\277\017\016iel?\205\277\265\t\245\235p\260\210\277\317\245\224f\3755\264\277\007\207Hq\024\314\240\277-t\224u\210h\267?2\"\350\246\267[\240?j:\263\205\351\275\222? +#p\207\227\265\277\312\334\022\024\210>\211\277\t\241\277\032\267\013\314\277\266\200\363\034\355\261\306?\311<l6@\"\276?\337\346\247\2237!\262?Jx=Q\270\222\302\277(\214\335\351\246w\260\2779\262ia\035T\224\277\222ik.\304-\204\277\037\037{\2347\312\325?\351\225\303\013\234\032\225?V[\242\357i\271\302?\235\271=\3679\034\241?\244nL\017\220r\260?!8\222f^\217\246\277\222t\317\275\357s\253?t\374\333U\351\021\307\277_\343I\032\311\217\200?\034\265i\204>\226\250\277{w\273mu\007\315?\230w\312\343L2\222\277\314Nt\333\361\365\250?\034\226\014\324\217\337\250\277=\031\351]\217\003\325\277\304\271C\270\360\037\221\277#\256fy\014f\270\277\237h\201u-\213\236?S\243\226\207\225\344\261?\256E\255\224\311\322\234\277.\tNebv\264?\226 \272\210w\'\322\277>i\210\013~>v\277\3216\340\357\303\240\253\277jRx\240vT\207\277Jq\352w\272.\201\2777Z0I\205\n\260?\266l\345\244\024\333\270?\211^\2066\327\350\301?\202\265\250\273\317\254\304?uk=e\345\341\210?\207[\210\240>\217}?\302\271\033\031\252.\201?\366\357\250\333\0239\266\277NqR\362\034\262\302?\201\210.$0\255\241?\210\306ZC\177\330\225\2770e]t\"6\234?\366\177\2347]Q\305\277\037IZ\031\020\001\261\277\031\267\226\003l\177\242\277\307\375\tKE\355\260?\007\316\2433\300\251\310?\035\037\3635E\334\257?%\300:\002\036\002\300?8@~\313\271\327\265?%\210\177g\312\227\227\2774\214\275\374D\000\242\277\027\271\334r\240\261\266?\301\342o\016\221\307\231\277\022s%\220\337\343\267?\271\252\370\374\034\003\273?\027U\377\270\2555\302?\333\241\261\247\\w\201?%[0\0318\367\301\277+\022g\311\372\270\300?\3531\256\231\002\027\332\277\336\225K\206\330\256\263\277\022>\206Z\230\236\276?\361\354Z\311%\242\263\277\253x:\364D\034\306?LHL\271V\306\220??\236\t\362\334\226\254\277\335\346\311\213\031\r\332?\223\005\301\370q\372\212?~\"Z\251\210\363\265?\241\017R\273A\337\223\277\3778\003.lP\247?*F\177]\264\254\252\277\313\305\010\254\304\266\261\277\233\237\307\214\241fu?\211\206l\303\347\271\220?I\004t\213\327\304\205\277,*\325\021\n\365\221\277t\225:b\242\024\264\277\2700(\243\232#\262\277R\332\307;\353\331\226\277q\374\200\"pM\311?\335\t?\324\303\333\223\277\213\250\340R\221\034\274?\001O|k\230\013\304\277\301\226^\371\021\254\243?\340\320B2D\177\256\2775^\024\345_\033\273?\265\350\371\263\315\354\304?`\322i0\205\014\241?\t\260@\363\037\316\274\277L\343R\360Gg\237\277\203\033\200\262{\013\252\277\231j\203IY\315\215\277\234\220\221\240\361\'\267?\251\0271\223\022\352\273?eTWcyb\264\277^\360\330\242\255\024\211?9\234\031\2059\277\323\277\3728\033v\323.\272?\\(\2408$9\267?\303\021\327\250\016\267\322?2`\005\345\330*\317\277T\202\036\312MQ\201\277\026=\006\361\362\312\300?\005}%`\211\'\204?mU<\207\310\020\274\277\353$\271aI5\260\277\253\254\333\027\242\026\277?\"\257\267\222\006\340\236\277\214\375\211\256\331\246\263\2773x\006\225\340\331\272?](\237\022\270P\310\277j\370\237/\330\321\303\277Z\247\220\376\207\275\320?WEQ\365\310\315\223\277J\340\027\205eo\325\277\366\344\340\324Q\266\274\277\317\030\241;\2158\271\277c\327\237\207D4\266\277Yx\210\263Ep\251?63z\376c\"\247\277\344\201\243\303L\251\264?\366\331\001W\330\270\327\277z\303Y\254\204\200\250\277^t6\025_\240\252\277\304\'S\177\263d\265?\203\204Q,6t\266\277\314\350\034\332\362(\273?C\353h\257\314\240\272?(\026\316\207,\030\317\277-PJ\034#\007\262?\222\247\026\303\251Z\240\277\231\016\032j^G\265\277\017i1\367\334\225\244?\023V\250\0368\270\233\277\271\361\234su\004\254\277\200\342\247B\304\227\264\277|\343&/\r\010\241\277|\243\246\260\035\204\224?\326\340\321o\030\017\300\277\200A)\231t\032\257?:SI0\271)\235?\232\224v\005qd|\277L!W\031\333\002\304?2/cm\'\221\247?\n5\253\010\376\242\255\277H\207\376%!\272\320?\035y>\340)\321\220\277!\242\252\036V.\267?0[~\230m\010\277?\357\217D!\332\007\242\277K\255\342\276Jl\246\277@|\024\001\256\326\252\277!\262\315\024\034\325\305\277\367\032<Y\303\216\227\277u\334CTs\343\313?\367;B\232:\314\321\277\363C5\343,R\301?wX\262\3052\346\263\277+ \202\037W\210\236\277\370\232x\247\366\357\247?\233RK\330\310\025\304?\"\"\265\2467\316q?\326\222\t\031\202\337\271\277\246\336\256\305\365\366\274\277\200\005\010\325\030\264\241?l\344k_\340\217\260\277\356p\001\204\023\351\246?\351\014\"<j\251\257?Zs\251\276j\220^?\013y6\210[&\266\277\274\265\nt:\315\327?I\320\204\200\3354\232\277\006\035\303\305\n\004w?,\372B5\271a\273\277p\241\337\273\367!\307\277\355\277\304\375\0024\224?\260c\3567Vy\273\277\347\255\020r9`\305?\267\247\316U\261\234\251\277\036\344%kD?\222??%79\353\227\321?^\252\327\313\347~\250\277\222\034\250\352,\211\213?\2323\341\276\327\265\210\277\000\005\363T\030\242\232\277Ud\345\333\2449\303\277\213Y-R\310\374\257?\311\017\362\020\365\"\236?L\277Eh8w\252?\007\360U`\002`\240\277\347O>\207\232\036\240?\262 j\032S\262\317?*^]\202!\371\310\277F\372\330\353\356\223|?\216\2319J\377M\264?\334k\351\210?9\242\277\306\246N\224\345\371\243?X\344\357\017\2350\266\277H\032\307\202\0005\262\277r\n\200\2113\236\257?\214aaG\255\271\271\277\003\037\265s-u\303?\245\342\373g?\310\236\277\317\377\352\221\274Z\231\277#\245v\235lb\265\277i\234\200_\033\377z\277[D)-\307:\236?\351\037\033\350\010+\264\277 pb3i\032\316?\034E\344\353%\360\207?\033C\002\013\300\376}\277~\005\313P\355\217\206?\275\2179s\320\371\301\277\217\024\344\230\273\323\221?\226\372U\324\347%\251\277\277~\3224\253`\227\277Ar\367h\236~\254?\310\201PA\375\035\232\277\037\243\253\204\335\344\273\277a\261\024\rN\245\272?\244\302lW\220\350\264\277\333kK{^i\242?7\326\003!aK\321?F2\177\")\255\226\277k\344\334\275\031\260\231?6\234bk\207\306\305\277zN\245zF\372\312\277\317r\017\342\207u\220\277\026-Y\272\246m\214\277<\005e\322F\010\261\277%;\247\036\222\217\242?1$K~\002\237.\277\211\204:T\305\327\265\277\250d\250\337\327T\315\277\226\231\306\204\322\203\300\277\321\003<k\tl\233\277\244K6f\374\223\307\277\216\243\301\235\301\363\246?\002\307\365\2401\206\304?Q\335}k@e\241?\315l\003\331\273,\272?\006\373I\250\034\257\301\277I6\374\321\255[\266?=\212+\260\024+\251?\000|\304\022\326\263\244?\250\021\241K\311\225\211\277\007\327\377\364x\036\227?\020\233Ku\203\355\277?\372}}\227x\271\273\277m\007\323e\006\016\264?\203\315?\277\016\236\253\277\341)T\215\354K\262\277\037\266\032\375>a\261\277M\336\375&\260\000\326?\313\226\205\267\341\364\250\277Bw\235hC\232\204?\371\375#$\371W\232?\356\034\223;\354\306\261\277\357\210_\323\272L\230?\277\354$P\037\212n?\274\036\225\t/([\277\204\033\221^t/\300\277\366\3708\220\020+\246\2772\\\376\237\242\037\253\277Z\342/,x\037\321?\342.&\371\336\210\245?\034\204\351\212\230\034\217\277\031\203m\2014\025\265\277\244\365\226G\214\376\246?\022t@\371\020\032\274\277\336b\033\307\003\010\271?=\337\366\243\n\361\302\277\310\261\t\t\"\210\255\277\024:\007\027\256V\247\277\351\352_\360\333-\277\277\333\227`\335\2433\310\277\273C;3]\233\244?nP|\300\234\351\206\277\310\304{Nqg\252?u\250\251\327\357N\205\277~\200E\030\232q\277?/<\020\0378\374\260\277i*\232\210n\026\302?_\324\021\240\003;\260\277\3636\233\323X\316\241\277\250\371\372E^\306\274?\243t\0078|\367\263\277~\216\352\206\031\306\265\277aY\223q\212\333\247\277\232\"\313\276\033,\232\2771\275\302L+\201\265?\203.r\034\226\277x?\263y\336\366\224\031\270?\353\364\320\364\035\375o?/\331\035\360\013\261\274?\321\233=<\244j\302\2773S\224\225q\342\334\277\221|\372\264\363g\264?\r\3604\270\222Z\264\277\306\227\020\206\014\016\227?t$+7A<\260?%|\370u\303\340\215\277\214\347y\225!h\300?\352{%g\"cB?\316-\322\n\223?\226\277$\024i\313\005+\240?\024\223b\031\324\006\274?\025\372\361C\"\336\256?\3163\366\377\222l\302\277\260\323\306{\246\367w\277\014y\'\223\270\337\265\277*\332\352D\227x\274?o@\267\235n\337\305\277$\217\\6\036\323}\277]\037\031\023\3221\246?\207\034\022\251\250w\275?n\353\260=\222d\237\2776\336b\303\010\036\322\277\237\220\312U\243\221\250?\"J\364\262\027:\301?I\335\276o\001\340\302?\351\245Y\323\027\032\277\277\205\233\361q\n\'\235\277\325\021\r\216\3627\256?\177ER\353#\376\275?\214\263\336P\332\331\244\277\235l\250\355\2128\220?\312\326\257A\330z\243?S\250\322rX\261\255?PWd\352\232\340\226?\271\'\004\300B\271R\277i\232\224FB\000\275?\264\014\307\343\320S\251?\256\246\242X\270A\213?\210\t\007\345*\377\301? k\326\234\323\241\267?\334P\314\373\377\302\266\277\301>\207#^\227\274\277,\2023\010>\203\301\277\341\372g\306Mc\251\277\372!\373\333\250K\250\277\374K\310d?\303\254\277\332\250S\017\177j\254?j\224\372d]\354\250?\364\313,\246&[\250?\356vv!\004\361\262\277A\2555nV\337\260\277\275\031\323#F\030\301\277\246K\310\260\r\000\222\277\250\313A_\'\344\255?\276}\034\362l\207\231?\342\261a\013\027i\261?v\215\227\317\252\206\256?T\355\026\002\234\032\266?Z\327\377P\2334\276\277)%\022b\t\233\266?7\241\177GQ4{\277\216\225\365Y[.h\277\334\337\212\376<@\300?\347\267\004\366\232\370\262\277\332\361gv\033\345\262\277\253M\202\325\200t\224?l\266LW\251\000\315\277J\213R\262\025\334\242?\212\323>\216\227\321\252\277\037\202|\354*]\250?y\317\036\rP\264\300\277\356\367\310\234g>\241\277\340~\214\006\342\345\264?}+0\255\200+\263?\330\007\235_\030\241\252?c\007\210\344\001)\274?;\374\334|\3006\267\277<zf\372\211\272\276?\203\325\031\235\223\257\236?\"\366\025\000\251\n\250\277^\271\207\002k\004\307?q\326\326\356l<\243?\277H,\222\013\020\254\277\314X`\321\036\237\277?\201v\353\004\316\261\316?\361\2527S\000\237p\277\242\300\240\0200\240\272?\235Yo\321\370\177\263\277H=\355\0107\327\246?\312GK\014=\032\236\277\036\034\272\353\000\351\266\277bF\262=\371\004\300?1\320\244mc\245\200?\357\252\347\3418\024\243?\344z~\342\007\313\226?XD\267l\035\267\214\277US|5 \244\257?\302\273\253\325\314D\255\277\n$\025\3279a\223?\323I\030W\013\246\205\277\362\240\211\n\223\301\242?e\350\033\337\'|\315\277\217\231\002\312\356Z\203\277{\357\210[1\032\246\2778~\014\\\177\213\222\277\236\243\212\340d\034\271\277\201B\252;{\221\277?\035\036\246\375P\033\265?!k\375( \026\306\277,\336\354JB\256\200?\222\232\212\271\351\337\276\277K>\350\326\021\027\270?\370\224\024\022L\245\313?y\374a\243B\343\246?\306\250h\227>\245\267\277\333]%\243q\255\260?Hi+\263\366%\260?+\023\324\325\014\247\242?\302|\364M\367\337\261?\242T\244\000\313\261\270\277\353\220\033C\235\005\246?\273\206Y\266\0377\262\277\277\315M\202\335\017\255?&\265P\353E\266\256?\351\315\352\277A\336\243\277k\334\217I\323\214\261\277\024_e\374\000E\271?\203&\230,[\336\266?\215\373\236.>\245\223\277\251\232\326\2646:\246\2777\252?\270R\r\224?\227M G\373\207\256?[F\273\036\305\236\220?\261\213 \246\351\t\301\277D\010oZ?\202\232?X\335 \020B\252\221?\245m\013\325\177E\322?\022\255t\276\2664\307?\240\310\251\315T\301\266\277J%s-}\243\326\277\361U\320?;\274\323?*L\3744R\223\237\277\337\331\377\222P\241\200\277\262@\372\242\377\256\251?\373\215~\036\020\316\202\277e\014\313\013\263\"\270\277A\262\301\374\363j\261?\315B\261)X\306\267\277F\333\260$\030W\224?\3538\272\212J\t\234\277J\366\247?\365c\224\2777\300\260Mf6\213?\347\"\021^s\245\307?f\325!\364\202\340\315\277HZ\3474S\026\266\277G+\214\271=\016\276?=\356Jl\243@\220\277E\262\374\205.n\242?\271\004\227Y\260\240t?Eh\371U\244P\271\277\257a.)\367\332\204\277\000\214\3158=p\267?;\251\230\256\350\240\234?s\354\315\370\r\177\232?@\214\"O\227O\313\277\310\354\250\236\303T\204\277Q\226\312\036\013\220\227?\361\257\036\250\025\356\201\277\303\211\211y9\316\227?\336\270K3\360\243\232?\330\013\035Z\256|\273?\360c\272\261-\t\260?\231c\273\202\231\027\253?\375\253\031\271\354\305\204\277\365\311$f$7\262\277\246c\004\"\211\013\310?Y\003M\227\340x\267?F\347\321\307\320\207\244?\032\023\035\330\243\312\262? m\032\360\266\001\261?\253\315\177\347\273{\263\277(\316\027\362H\326\275\277\352\362@1\316\363\227?\345\300\347\2205\337\245\277\271K\3441\'S\261?\241|%\036\337\313w?Y\270\235\305%A\270\277\224\313\266\211m\022\255\277\034.\201\3420\317\227\277K\274s\245u\t\273\277]$\001x\207\024\303\277B\300\315\371\020\344\277?\253\2453\202\t\306\262\277j\026\310\035\177\230\202?\253\243\017C\341\216\302?R\016\206\316\036\264\240\277\227\202\235eI6\240?\"\027\021\360>\377\243\277\373w\333\252\004\247\243?\312\007\0143B\315\274?\313\202\361\232Y\250\205?$\352\367\r\3667\233\277\241\t8\306o\375\272\277D\r\202\261\240\215\212\277=3\007\354\025\237\265?*\263\010Y\327\213\300?%;y\227\031\350\272\277\026\242\275\262\263!\253?\2124\222\026\314\233\257?Ns*,\031|\311?\305<\231\310=p+\277\316;_[\242f\251\277\231\005A\306\221?\233\277>\224>\330\004\350\306\277b\017\314\314\303\310\316?KO\220?Q\263\275?\231\271\330\301v\207\243\277\244s_\371\243\255\270?\244\321\013\000\2652\216\277\010)\014w\317\027\240?>\302\332r\314D\270?lx\320\270\277\223\264\277\'\n\320Pbw\224?\300F\331\335\001N\270?\177\215\202=R\377\261\277}\373^\323\004s\237\277\354\251(K\301I\307?=\331\001\243\036\236\325\277J\nh&\\Vt\277\273\007Z\352S\252\225\277\220\355~\2103\013\300?\313\370`\005\340`\310?\214\363\035\301\354A\205?\320)\276Wa\305\270?\317`D]#\270\277\277\220\372\035\263t$\234?]q\341l\2068|\277/\000\0204\351\023\326\277\000\311\300\231f\036\311?\366\277k\274z6\261?\212\257\255\234\370\231\204\277B\310~!\006wh\277D\274\255,\347\344\302\277\227\311)=\260\010\261\277\321^\337\357\354h\265\277\376\261D\365\027\255\273\277I\261BC\331\304\240\277\373C\335\370\033\364\307\277\026\242\223\344\370D\277\277\353\306\177\367\236v\225?\223\317\272\002\305\352\225?\362\003~\363C\233\200\277\305B;e\354\312\321?Y\n0oE0\244?\216\257\233Q\241\025\300?\215\2511\251\"}\231\277\2001\240\212\207\177\260?0\223\350\304\200\314\230\277\256Cf\021\222\355\177\277\200@m(\245\025\215\277\256\305N\247\342E\273\277m\343\031\366\374\272\256?:\030\342k\301\017\300\277\303/\360F\203\300\310?\243\335N\243Z\215\261\277`\356\007\357\261\360\314?\315\273\317\333\225\201\300?(\267\223\233\326\350\261?v\001\212\276\310\230\271?\274\233\007\204\237\266\322?t\3339\260\251>\251?\274\306\316$#\331\234?\265\214\225\333\300#\253?\252(\270\031\344n\261\277\002\203\340\212`\377\242\277\347eV4u0\254\277h\247\210\212\250\261\301\277\353\017\246S\332\313\261?D,\231\034f2w\277\376xy\340\003\375\276?\260V\022T1l\205\277\304\236o\252Q\363\244\277\235u\366\275\276\334\223\277\224\233Q\371\014\350\251\277\332\200\270mt\351\252?%\232\235\220],\253?z\236\362\376\277*\302\277\215J\314\341\277\275\277?\266L#[\212n\300?1]0\215\334O\255?\345\333Tg9M\213?\362V\205j\006\273\266?\'\215\354\360\253q\263\277\270N0\330(\035\250\2778\307\316*Rr\260\277S/\231r\264o\252\277C\356\\<\201\036~?\227\347!U\355L\245?\207c\371\234t\327\265\277\301\367\245\"\325\315\312?I\006\277\374\3060\274\277L:\244\364\275W\202?p\221\264\233h\264}?N\226\343H\253\017\263\277\230\212b\023\363\263\327\277\321\221\206\226\020b\226\2778\271u7\322\204\240\277{\312\311\035\272#\266\277\212\271;\235\266\367\325?\"\204d&\031x\225?]H\317\317z\373\266?M\217;\364\357\260\244?~\250\215q\036\334\224\277\323\307t\023\275\236\272\277\306\362I\262\327\037\277\277\320 \364*\305\276\261\277)7Q\222:\355\273?\320\262\277\331\303`\274?\373\234]BF\275\322\277\t\2745b\240F\252\2775d\371\022(J\253?\320\3032\2269\240\211?:\"u.\277\016\246?I\246J\021\2228\242?\\\010\256%<\247\256\277@\177\325}\361J\301?\'k\366J(n\251?V\211\341\227{\217\272?\303\366\007\361wF\307\277,N\"\0137\320\276?\027J\317\220\3550\260?\362h\315\270~&\266?\3608\303\244U<\327\277Xn\366\2530.\241\277\315\354\000\346\370 \222\277a\375\354C\272\250\270?&E\321\'=\304\275\277\211p4\223X\316\260\277\306\212\306\030ct\301?!V\026\274?\\\214?\243\021\215\306\325`\260?\177&v\020\372\355\215\277\3169\327Q\211+\260?\223\253-\317\271\353\300?\010\352\260C\374\235\242?\350\013\245\262\360\364\226\277\225\270\313\314\260t\224\277\233\0264\370\nU\236?\332y7\021d\315\250?\350?\316x\004\213\265\277_\005Rf\372s\216\2778\232\002<\210\354\255?w<t\311\304+\220?\224y\021\324\022F\316\277\230Y\tR\320\306\211?]\260\320\331.\034\245\277\003\001\320U\255yx?\324,\t\037X\212\244\277n\320\245g\"Y\265?\310\246*V\241\221\247\277,\205\312*\312\304\314\277dS\236\210Q[\260?\216\357\342\363b\375y?~\034\214\010I\205\246\277\330\016\305F\206W\320?GE\300\357\nI\247?\371\010\304&\r\222\257\277\310Z\252\373\204F\265?\036\013\263Y\320\t\273\277\324\177\301]\302\243\221\277M\213G\302\333\213\266?\312\024\201\031Q\247\267?\347G\373\227\210\267\242?^\247\344\207\341\010\211\277\376\267Y\262t\373\244\277^\343s\374v\270y\277\333%+<Q!\254\277\303\377\213\0202\002\220\277\325P\351\236\245Q\305\277S\260\263\246\n\353p?zQ\005u:\215\220?\225\256\301\262\356~\270?\322\375\035W\274\253\230?}\376D\2372\303\237?\227\007J\332\362\253\261?L>J\207\225R\301?JP\355-\317\215\253\277\205$\332\241\260\261\244?\222/\204\245\312\300\234\277O\273\355XJ\363\251\277\001Js\343\026\027\303\2775\321\301\245\237|\247\277D(\234\212\010\225\303\277ft\010M\3443\220\277\377D4w_\354\201\277\306\214\203\350b\251\274?\371\227\374\2711$\247\277O\237\231B\370\365\271?\362\r/\003ea\243?f\233\306\001\371\t\233?\r\257\202\267\333h\241?\327\226\223\373\207-\304?ZHo\010=v\301?,\0309\334\262\357\272\277\331\245\2523#q\264\277MG\276j\322\272\276??t\257\006&\212\200?\343-cD\274\375b\277\374\231\222\274\347\216\232\277\244A\250?\205\354\256?\346A\021\222\335~\302?\231+E\3376?\271\277\343A\270\252\177\370\275?\213\241K\325\207>\225?\005\363\264Z\377\353\233\277\371\023d\223\022e\261?\020\360]\360\270v\300\277\300\363\231\362\335c\203?\205\317\004\357;\364\243\277@\314\270\350(\030\260?\214\307\336,\327\326\273?ip0\334\323\225\274?H\244\231\013\0255\300\277\371w\332A\333\027\261\2777\221\\)y\233\263?\252\257\245\014w<\266?\251\373xQ] \232\277is\324o+\341\314?2v\305dQ\033\265\277\262c\223iIM\230\277U\034M\224\373\377\252\277)\325\255&av\206?\021[\026g\267\327\226?\213\227\347\331\346j\272\277Z\3146\250\347;\241\277\240!d%\2361\224?\005\354\371\177\364,\264?aT\207\016sV\263\277\306U\n\177x{\260\277\201\030\245R7\014\265\27742\254\014\231\253b\277\376\255\000{\037\333\254\277\246c\274\357\225\242\222?\303)\315\311\r\361\221\2774\213\237\311K\376\267?\317\354\177\325bl\202\277\364\nf\260\004\352\303\277\204\240\273\277W%\246\277\022\027\\\201\342\246\275?\026\035\r\016:\371\241?S\003\213N\353\264\253?\346\372\273\361\216]\302?\017\265\344\200\372\267\307\277q*X\037\362o\205\277:\310\026\007N\256\261\277(NZ@\367\002\231?\016\305`\0307\374\254?*\307b\276\361\373\246\277F\341@\001\350\274\267\277\302\256\010\204\261\321\273\277\356\205\255\365\363L\312?\300\263\361\342@\230\226?\003\337\254\321\254\267\312\277\267\246i(\220\276\271\277\031\241S\371=L\256?%\031=A\260C\262\277\030\364\010\214.H\263\277T)\026\177\2602\262\277\262\237\277s\314\022\262\277K\014\177\\t\025\305\277{\250\366\373\304\021\251\277|<i\3714\263\226\277\006\361T\370j\200\254\277\364\2103\376_5\253\277V\273G\005\305W\222\277g\201\002\301\314^\265?;\267\017#/(\305\277\010\361\342\025\'\330\304\277\034)\353,T\277\304\277\3526\234\023\306\037\313?\034\235\376\353\3611\217\277\260Ae*\262\027\260\277\035H\215\337\033\351\274\277\223\210\244\234J\024\250?\0373O,\326D\261\277\314\220\315`\301\004\301\277\n<tzZ\252\316\277\355\377\314\325b\276\264\277\266M\267Ew\252w?\017\307\234^\354k\303\277\024\006\221\177\344\310\332?\311\342\261+b\372\212?u\255\300\302\232a\221\277FEAw\347\356\254?\220\234\335\\\026\032\313\277\345\254P\224\230)\300\277`\330\367M\010\323\303\277\217\347~\214\322\371\266\277f\362\024\023\332k\254?\273\253\034e\021\320\277\277\212\031\033\306\023~\224?\255\000\023\035\203\340\211?Dh\221\351\252\352\251\277\263\241G3AK\265\277\303]5\246\\\315\246\277,\n\271Q\324Z\276?Rq\314\361K\271\237\277!\007YK\322s\302?\372\241\222e_\002\300\277\221\302\031\024\312#\242?\341cv\221K\007\265\277\242\230\275\363\233g\246?\343\324)?l\262\262?\033`\315\'\232}\236?l\013U\255\226\326\224?\002o\254/\2213\235\277D)_+\331\253\241\277&\202\271Pk\215\301?K\301\253\233\013\247\262\277\313\'\314s\364`\271?n\"\214\232\3227\302?mT\230\303\362W\202?\036\027 @\345\355\255\277\344\032:L\247\360\266\277\206zB:\343\245\263?\327I\346(\305\307\277\277\261\204\023T\276k\273?\206\033\322\331\331=\274?D\024\355\t\r\001\251?^\265\213<]\304\261?\351\r\211\241\221\370\263\277\222S/<\n \260?\275\365\317Pj\'\271?\263\265\r7>#\264\277\207)R\216\215\350\263?;\024\372:\356\346\254\277\375\006\023\364\014u\221\277\212\374Le\371p\204\277\3752(\033<q\241\277\026u\325\001QB\301?`q\335\202+0\267?\021n\024OSS\213?_\312\320EA\363\232?7\'\316\240iK\257\277\212G\232\322\240\277\304\277#v#\224 \264\265?\271\364\254=\240\214\265\277\316[a\256\320\032\247?\200\034i\374\244=\300?5r\027<Q\267\312?\020\200\242\017\3115\246?$\372\367\204\257e\223?\007\035O\361\350\251\260?\030\371\360\263\035\327\271?\303y%{\221\355\245?\030\212|\025*\222\215?f\3425\007+\245\250?\222|\0253\014A\226\277\325/\275w\323\205\260\277\212 \377W\370\001\261\277}a\336g\003R\275\2775\304\227}w]{\277\213:s\030\347$\307?\311A\030\336\305[\261\277g3\330\347\361\003\243\277{\353\215%\261\n\241?\276)\r\r\344\031\300?\272\226f\177\021}\266?\243\365]\342\002\003\245?\260\030<A\303\n\250?%n\331\236\225\256\270?q_\240-P\356\251\277\223h\316z\253\362\247\277c@\036\027\315y\225?+\313>b\302\324\247?\201yC\304\236\237\250\277\341W\323\016\022\224\263?A\300e\214s\277\302\277A\272\227\346\036/\216?\276t\343.An\242\2775eu\347n~\251?\274bN\177\331\366\310\277$1\245\033C\246\236?:NT\246\342o\254?\207\206J\240\370O\204?_\224)\222=\200\241\277K\035n;\020\222\262?Y\266#\234\313\003\207?\233\010$\326\2670\247\277U\222\256\211\316\360\240?X6dVa\031\221?D*/\tq\343\310?\255A\300\356\247\231\305\277=\324J\375\271\005\276\277\230!\312\205\346:\265?w,\331\212%\345r?.\373w\022\371\274\253\277\236\255_\223\204\337\264?k\025E\366\213|\313?\366\211\0169&f\222\277\240\344\376]\003\256\215?)[=\243\201S\222\277\227\312\376\036B\323\265\277eH3\\X\225\272\277\375ttX\265\350\237\277N\363\253\337\232\323\236?\t\377}\341\255\300\262\277\233j6\204\273\355\270?\250\233$<\r\344\244\277\301\242*\225\001\305\244\277\355@\025\0366P\212?\267\216%6\274}\263\277uu\353\340\232:\314?\316\000\245\017>\350N?\273\212\354\217\365\361\232\277\003\177\262\346\030\320\244\277\024J1\236\007\354\250?\237\246vFz%\231?\367\300[\341Q\311\260?\351\026\326\314\0175\246\277C\223\243u\332\245\274?T\264\311>\244\224a\277\212O\257|\0019\251\277\263\024\311\350|r\311?Y}\013\244H9\222?\273\343\301\354:_\301\277)\313z7\237\314\263\277f\246\237\306\356\013\264?\305X\303\030\325\257\250\277\3255<\3672;\313\277i\372X.\316\220\324?\016\332\214\333s\"\255?M\3174\235M\223\271?5\203\230\363\225\000\255\277\372\271\237\233Mw\242?\020\023\354\216\263ps\277\214\275^i\2279\271?J\017\237\376\2528\303?\237\243\312?\376\266\266\277?Ka\262;\301\216\277\351\275Ws\363\341\260\277\301\"\271\366\200v\244\277%q\2158\026\207\307?\325I\301{\'2\320\277Y\305\367\202\001\321\302\277\033\307\351\254\266\r\245?a\334J\346\255\243\263?\372\223\223t,\201\250\277\3764u\270X\005\256\277*\367-\265\000l\240\277\210\265\001~\244\272\211?\013\tqs\035\275\214?\244\0376dV\321\256?\261M\220\004_*\236\277\367\210A`\206d\272?\235\r\350l\250\317\250?\205\2001\345\266\245\301\277\034kt\247\212)\277\277\340\376`ix\313\201?N\205b/\013\200\265\2772\243\252\3162,\245?\231\235\350\236$\034\270?\022\002_\275\365\005\242?l\001\223\260h\352\256?\032\273\311\263\007N\247?{\\,\333\272o\211?\027{\370\223\240\221\232?\302^\213E\361\270\217\277%\007\325;\206\245\264?V7\242\204%a\253?\235\0369M\333r\306\2772n\232\237*\007\240?H\014\3360\322;\250?QRW\006\252\203\250?c2\014/\240\274I?\345\357~b\224\224\253\277e\032\021w\350a\315?<\307\332 \'\355\275?p\020\000{\003\326\272?\252\307\033}\252N\276?\000\225\311\350\343\300\241\277\274}$/\276E\220?\232\222\214Zx\250\271\277\222\220\215c\221\221\245?\004\035s\325\032\206\267\277j\310;\307\365\346\270\277\2444F\224*\365\322?\213\300\3548t\351\263\277\r\335\316\233\3712x?*\356\370\002\330\337\266?\342\016\213\334\267|\305\277\270\000+\242\334D\254?\264\000\226\007\201^\260?\025o\020\226\336F\321\277\000\247\r\026\2034\250\277[\007v\032oK\205?\014c\311\211\316\214\202?\275eN\033hP\240\277\213\226j*e`\223?\027\233\"\204N\006\237?6\314Z\357\020\265\321\277\340Xl\323\233_\234?\004\016d}\367}\261\277\327\243-\225G\270\237\2777)\341\023Ue\303?\022\t\030\241>+\264?\305\006\356\371\307\221\275\277l4\271P\231P\313?\036\336\370@0\217\247\277P|\244\370\226\310\252?\307\320[\372\342\274q\277\375\233T^\340\324\300?\253\353\227\363\367\314\303\277\276W\316\216\302\316\272?\3368\177\251\372K\274\277\335\350\364\001\277v\254\277p_3AjMe?\201\332\250*\364\256\327?\215\241\373\345k\337\260?)F\324\td\005\256?\347t\347\002\246P\264\277^XsY\207{\275\277P=dJ-G\261?D\236G\205l\231\273?\211&\253\212\'\377\310?HZ\321\341\205 \252\277\230E9\272\r\242\240?\276\207s\353n\203\301\277\024\305cz\215\366\262\277\361Q\366 @D\246\277\223Cw\343\366e\237?\313_a\277m\020\253?\306\266a\006\363z=\277\211\212\336+\226\027\307\277\315\363]&\2334\316?\203\251qq\246\033\315\277\203o\rb\276\324\235\277\357\213\264\270\237\024\277?\316\257\312\303J\315X\277\024=\003\245S\233\271?\227\314x\243\222\273\303\277m\010\202\216\351\352\237?X\314\226]~\264\306?\313\245:\272c\373_\277\005\301\261\327lR\301\277\275i^d\234r\310?\010 \350\300\344\361\256\277i\036\230\364l\252\223?d;\201@\271\354\257\277;\342@\202\2402\251?\306\353\215m\376\251\227\277\251\304\005\271v\274\214\277\241I\005<\330\224\225\277\255\205L\2377\013\247\277\021\360\\2\221|\264?{&\253\032\275\\\306?W\250\355(J\344\313\277,e\376\226L`\223\277\017:\303E\304\010\202\277X\263\321\230;\363\243\277\335\364\004\271\210\367\250?\227i\331\334\026\033@\277\352\341\353\0315\351\266?]\276\"\232\361s\226\277:\342\376\352\007\207\261\277\277\313\314\205\244^\247\277c\006\2056q.\261\277]U\375\251\004\303\201\277\016+\317\371\371\014\264\277\004k\371X\216\031\262?\327\007\261>)\361\327?v\341\312da\276\271?\321q-Nn]\222\277 D\037\021\232\365\321\277\005\231C\244\317\356\264?\270~\247fG\334\300?S|S\277\206\341\276\277\254z\237\355\n\031\243\277\376q\014\361\200]\240\277\007?L!\272\257\260\277\243J\261/\023p\275?3\017\371\226l\325\241?\306\355\362h\036d\251\277\245\276zj\2435\251?\260E\260\330\216\006y?\205p\0354\201O\305\277\242\266g\303\311\322\266?\326\206:n\275\000\213\277\221\306mJ#\337\235\277\210-\373b\270+\267?\325s`\336\342\266\274?\340\326Qe\353Q\304\277\030\242m:\371w\262\277\021\367\210\356\333\014\233?t\327\265\263\270\247\301?\364`MK\035Q\252\277\340\353q\221\246_\256?\236\010!\001\224\202\266\277B/(\366\305E\273\277i\320\253\027}\243\261?rUV\352\224m\245?\035\270\013\241Z\t\245?\226;\321\202$\014\250\277\322!\235`,\372\240?u}=\220T\342\177?>\355\215\341X\000\230\277\370\351F\n\377d\272?\364\266PN\310\332\240\277m\230J\272\346?\307?vJ5l\212\200\301\277\201$\206\223\344\260\260?m\210\276\230\273x\321\277+p\333\003\332d\307\277\252[\273o\000\227\247?\306\361\323v\305\245\246\277\026c\336JO<\200\277m\370\0105\036T\200?s<\300\247\330D\261\277\237h\277\"\336\200l?]$\263p\377\214\222?-\032\025\221\036\256\256\277,^[\032u\353\250?\310U\220dR\340\260?\225\267\322\202\205\205\240?2ro\344\265\331X\277\216xr\347\341k\262\277\310QG\032\027k\253?\023\300$\222(M\265?p?\016\203\026\373\243\277\020h[\030#\335\261?\331K\374r\317\271\262\277y\257+\327\341j\270\277\214\014\257.\020t\267\277c\213\0348JI\321?^\316\231\000\253\366\203\277\314\210\272\257 e\221\277\361\362\302\014wl\245\277\030\324\365\020Q)\236\277\360\206&\356\261j\236?\357f\006\236\314\007\304?\254\330KC\315\347\254\277\356\252\345 \241#\244\277\255tT\236+,\205?v\210\221\300\025\'\272\277\325\331~\330C\005r\277\235N\200\207\321\265\267\277\330\336\323\356\206\276\256\277\0255\227)\\H\301\277X\211\033&\017\277\263?\371W\375\035\354e\212\277\277\327\363\177\254m\214\277\214?C\252\020g\255\277\314(\236v_\351\212?\247\235\023\241\320\024\270?:\357&p\3730\265?\025\325d\026#\276\220?\035\254\331\351\\\355\274?D\303\032M\003\375\265\277\031\250\'aV\275\312?GF\263.@\216\236?V\223\317X{\372z?m\275\tJQ\276\300\277\376\334R%\037\222\272?$b\333c\307\032\254?\370\337\2430\r\246\273?\371\367*\313\267L\246\277\000@\235\211\327]\224\277\2624\355\337?\274\223?\321_)\355\213\313\314?M\310t\344\245P\252?9gM\310L,\304\277\031\tP\"\016\225\251\2772\323\316{\332\322\265?0\267!\273\225\370\222?\244\343\227_%\351\261?\037\'\344\313\352>\314?\022\024G\205\2736\273\277\233\000\360\240QE\222?\303\033W\210\357\260\201?\243\r2}\n\004\245?\203K\352\217\177\364\277\277\352\025\232\r\342N\311\277d\317\004\330\311\'\301\277R~&W\2020\263\2777YK\352Fi\241?\322\277\310i\254\206\261?a\311\372\313\206\266\261?a\327\3354;\013\205?n\264\006\261+\023\227?\270\227a\241\224\246\273?\302\200\323\010\357\253\244\277\364D\374(t\016\207?\003H\301\"\031\215\266?1\374H@\377f\252?5\276#\234\216v\272\277\255 \320\217X\301\241\277\202\231\005\035\035\242\301\277!\364=t\276\201\253?\214?\210\361\tU\263?\273\017\353\343\213$\300?IqQ\371\367$\304?\315\202\361\017\240\021\264?\371*\264?y\037\231?G\356V\005\310\222\233\277\261|\331\253Io\247\277\334<\023\367$\037\242\277\263W\237\367\356\376\300\277\264RA\225\037@\227?\367a+0?\204\204?\246\333\266\214tL\306?Np\342\247\356\021\274\277\240\305\003\201\004\362\177\277cn\353\n\3104\254?\370r\rt\026_\270?]+BF u\302?\324\237[m\256\331\231\277"
- }
- }
- }
- }
- node {
- name: "Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_DOUBLE
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_DOUBLE
- tensor_shape {
- dim {
- size: 14
- }
- }
- tensor_content: "\247X\347\2675\264\217\2776y\323\323 \301\226\277\214\261\027Ns\000\225\2772\204\nm\231\232\237\277\306i\204\000\242\315\231\277\245D\217\003\3660\226\277\021\365B\360P\003\226?\331X2\327\340\225\235\277#\335\372\000|\000\242\277p\370\027\263\343\200\227\277\2660{\320?\205\221\277\233\341\253q5<\246\277\357\211\251\233\2604\242\277\300\245M\305}\017\241\277"
- }
- }
- }
- }
- node {
- name: "MatMul"
- op: "MatMul"
- input: "input"
- input: "Const"
- attr {
- key: "T"
- value {
- type: DT_DOUBLE
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "add"
- op: "Add"
- input: "MatMul"
- input: "Const_1"
- attr {
- key: "T"
- value {
- type: DT_DOUBLE
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "predict"
- op: "Identity"
- input: "add"
- attr {
- key: "T"
- value {
- type: DT_DOUBLE
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- versions {
- producer: 27
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "input"
- value {
- name: "input:0"
- dtype: DT_DOUBLE
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 1536
- }
- }
- }
- }
- outputs {
- key: "output"
- value {
- name: "predict:0"
- dtype: DT_DOUBLE
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/softmax/saved/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/softmax/saved/saved_model.pbtxt
deleted file mode 100644
index 11435ce3fa1..00000000000
--- a/model-integration/src/test/models/tensorflow/softmax/saved/saved_model.pbtxt
+++ /dev/null
@@ -1,1999 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Add"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "Assign"
- input_arg {
- name: "ref"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output_ref"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "validate_shape"
- type: "bool"
- default_value {
- b: true
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: true
- }
- }
- allows_uninitialized_input: true
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "Identity"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "MergeV2Checkpoints"
- input_arg {
- name: "checkpoint_prefixes"
- type: DT_STRING
- }
- input_arg {
- name: "destination_prefix"
- type: DT_STRING
- }
- attr {
- name: "delete_old_dirs"
- type: "bool"
- default_value {
- b: true
- }
- }
- is_stateful: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "NoOp"
- }
- op {
- name: "Pack"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "axis"
- type: "int"
- default_value {
- i: 0
- }
- }
- }
- op {
- name: "Placeholder"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- default_value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- op {
- name: "RandomUniform"
- input_arg {
- name: "shape"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "seed"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "seed2"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "dtype"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_BFLOAT16
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_stateful: true
- }
- op {
- name: "Relu"
- input_arg {
- name: "features"
- type_attr: "T"
- }
- output_arg {
- name: "activations"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_INT64
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- type: DT_QINT8
- }
- }
- }
- }
- op {
- name: "RestoreV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- output_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "SaveV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- input_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "ShardedFilename"
- input_arg {
- name: "basename"
- type: DT_STRING
- }
- input_arg {
- name: "shard"
- type: DT_INT32
- }
- input_arg {
- name: "num_shards"
- type: DT_INT32
- }
- output_arg {
- name: "filename"
- type: DT_STRING
- }
- }
- op {
- name: "Softmax"
- input_arg {
- name: "logits"
- type_attr: "T"
- }
- output_arg {
- name: "softmax"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_BFLOAT16
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "StringJoin"
- input_arg {
- name: "inputs"
- type: DT_STRING
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type: DT_STRING
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "separator"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Sub"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "VariableV2"
- output_arg {
- name: "ref"
- type_attr: "dtype"
- is_ref: true
- }
- attr {
- name: "shape"
- type: "shape"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "container"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "shared_name"
- type: "string"
- default_value {
- s: ""
- }
- }
- is_stateful: true
- }
- }
- tags: "serve"
- tensorflow_version: "1.12.0"
- tensorflow_git_version: "v1.12.0-rc2-3-ga6d8ffae09"
- }
- graph_def {
- node {
- name: "input"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 5
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 5
- }
- }
- }
- }
- }
- node {
- name: "random_uniform/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\005\000\000\000\003\000\000\000"
- }
- }
- }
- }
- node {
- name: "random_uniform/min"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "random_uniform/max"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "random_uniform/RandomUniform"
- op: "RandomUniform"
- input: "random_uniform/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 5
- }
- dim {
- size: 3
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "random_uniform/sub"
- op: "Sub"
- input: "random_uniform/max"
- input: "random_uniform/min"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "random_uniform/mul"
- op: "Mul"
- input: "random_uniform/RandomUniform"
- input: "random_uniform/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 5
- }
- dim {
- size: 3
- }
- }
- }
- }
- }
- }
- node {
- name: "random_uniform"
- op: "Add"
- input: "random_uniform/mul"
- input: "random_uniform/min"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 5
- }
- dim {
- size: 3
- }
- }
- }
- }
- }
- }
- node {
- name: "weights"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 5
- }
- dim {
- size: 3
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 5
- }
- dim {
- size: 3
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "weights/Assign"
- op: "Assign"
- input: "weights"
- input: "random_uniform"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 5
- }
- dim {
- size: 3
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "weights/read"
- op: "Identity"
- input: "weights"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 5
- }
- dim {
- size: 3
- }
- }
- }
- }
- }
- }
- node {
- name: "random_uniform_1/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 3
- }
- }
- }
- }
- node {
- name: "random_uniform_1/min"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "random_uniform_1/max"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "random_uniform_1/RandomUniform"
- op: "RandomUniform"
- input: "random_uniform_1/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 3
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "random_uniform_1/sub"
- op: "Sub"
- input: "random_uniform_1/max"
- input: "random_uniform_1/min"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "random_uniform_1/mul"
- op: "Mul"
- input: "random_uniform_1/RandomUniform"
- input: "random_uniform_1/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 3
- }
- }
- }
- }
- }
- }
- node {
- name: "random_uniform_1"
- op: "Add"
- input: "random_uniform_1/mul"
- input: "random_uniform_1/min"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 3
- }
- }
- }
- }
- }
- }
- node {
- name: "bias"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 3
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 3
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "bias/Assign"
- op: "Assign"
- input: "bias"
- input: "random_uniform_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 3
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "bias/read"
- op: "Identity"
- input: "bias"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 3
- }
- }
- }
- }
- }
- }
- node {
- name: "MatMul"
- op: "MatMul"
- input: "input"
- input: "weights/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 3
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "add"
- op: "Add"
- input: "MatMul"
- input: "bias/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 3
- }
- }
- }
- }
- }
- }
- node {
- name: "Relu"
- op: "Relu"
- input: "add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 3
- }
- }
- }
- }
- }
- }
- node {
- name: "output"
- op: "Softmax"
- input: "Relu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 3
- }
- }
- }
- }
- }
- }
- node {
- name: "init"
- op: "NoOp"
- input: "^bias/Assign"
- input: "^weights/Assign"
- }
- node {
- name: "save/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "model"
- }
- }
- }
- }
- node {
- name: "save/StringJoin/inputs_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "_temp_6341ee658682497a95c4fd82a2c87cc6/part"
- }
- }
- }
- }
- node {
- name: "save/StringJoin"
- op: "StringJoin"
- input: "save/Const"
- input: "save/StringJoin/inputs_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "separator"
- value {
- s: ""
- }
- }
- }
- node {
- name: "save/num_shards"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename/shard"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename"
- op: "ShardedFilename"
- input: "save/StringJoin"
- input: "save/ShardedFilename/shard"
- input: "save/num_shards"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/SaveV2/tensor_names"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: "bias"
- string_val: "weights"
- }
- }
- }
- }
- node {
- name: "save/SaveV2/shape_and_slices"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/SaveV2"
- op: "SaveV2"
- input: "save/ShardedFilename"
- input: "save/SaveV2/tensor_names"
- input: "save/SaveV2/shape_and_slices"
- input: "bias"
- input: "weights"
- device: "/device:CPU:0"
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/control_dependency"
- op: "Identity"
- input: "save/ShardedFilename"
- input: "^save/SaveV2"
- device: "/device:CPU:0"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@save/ShardedFilename"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints/checkpoint_prefixes"
- op: "Pack"
- input: "save/ShardedFilename"
- input: "^save/control_dependency"
- device: "/device:CPU:0"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints"
- op: "MergeV2Checkpoints"
- input: "save/MergeV2Checkpoints/checkpoint_prefixes"
- input: "save/Const"
- device: "/device:CPU:0"
- attr {
- key: "delete_old_dirs"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/Identity"
- op: "Identity"
- input: "save/Const"
- input: "^save/MergeV2Checkpoints"
- input: "^save/control_dependency"
- device: "/device:CPU:0"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/tensor_names"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: "bias"
- string_val: "weights"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/shape_and_slices"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2/tensor_names"
- input: "save/RestoreV2/shape_and_slices"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign"
- op: "Assign"
- input: "bias"
- input: "save/RestoreV2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 3
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/Assign_1"
- op: "Assign"
- input: "weights"
- input: "save/RestoreV2:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 5
- }
- dim {
- size: 3
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/restore_shard"
- op: "NoOp"
- input: "^save/Assign"
- input: "^save/Assign_1"
- }
- node {
- name: "save/restore_all"
- op: "NoOp"
- input: "^save/restore_shard"
- }
- versions {
- producer: 27
- }
- }
- saver_def {
- filename_tensor_name: "save/Const:0"
- save_tensor_name: "save/Identity:0"
- restore_op_name: "save/restore_all"
- max_to_keep: 5
- sharded: true
- keep_checkpoint_every_n_hours: 10000.0
- version: V2
- }
- collection_def {
- key: "trainable_variables"
- value {
- bytes_list {
- value: "\n\tweights:0\022\016weights/Assign\032\016weights/read:02\020random_uniform:08\001"
- value: "\n\006bias:0\022\013bias/Assign\032\013bias/read:02\022random_uniform_1:08\001"
- }
- }
- }
- collection_def {
- key: "variables"
- value {
- bytes_list {
- value: "\n\tweights:0\022\016weights/Assign\032\016weights/read:02\020random_uniform:08\001"
- value: "\n\006bias:0\022\013bias/Assign\032\013bias/read:02\022random_uniform_1:08\001"
- }
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "x"
- value {
- name: "input:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 5
- }
- }
- }
- }
- outputs {
- key: "y"
- value {
- name: "output:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 3
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/softmax/saved/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/softmax/saved/variables/variables.data-00000-of-00001
deleted file mode 100644
index a9edaf376d0..00000000000
--- a/model-integration/src/test/models/tensorflow/softmax/saved/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/softmax/saved/variables/variables.index b/model-integration/src/test/models/tensorflow/softmax/saved/variables/variables.index
deleted file mode 100644
index 0ae49491ce6..00000000000
--- a/model-integration/src/test/models/tensorflow/softmax/saved/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/softmax/softmax.py b/model-integration/src/test/models/tensorflow/softmax/softmax.py
deleted file mode 100644
index aab9956f914..00000000000
--- a/model-integration/src/test/models/tensorflow/softmax/softmax.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-import numpy as np
-import tensorflow as tf
-
-# Creates simple random neural network that has softmax on output. No training.
-
-n_inputs = 5
-n_outputs = 3
-
-input = tf.placeholder(tf.float32, shape=(None, n_inputs), name="input")
-W = tf.Variable(tf.random.uniform([n_inputs, n_outputs]), name="weights")
-b = tf.Variable(tf.random.uniform([n_outputs]), name="bias")
-Z = tf.matmul(input, W) + b
-hidden_layer = tf.nn.relu(Z)
-output_layer = tf.nn.softmax(hidden_layer, name="output")
-
-init = tf.global_variables_initializer()
-
-with tf.Session() as sess:
- init.run()
- export_path = "saved"
- builder = tf.saved_model.builder.SavedModelBuilder(export_path)
- signature = tf.saved_model.signature_def_utils.predict_signature_def(inputs = {'x':input}, outputs = {'y':output_layer})
- builder.add_meta_graph_and_variables(sess,
- [tf.saved_model.tag_constants.SERVING],
- signature_def_map={'serving_default':signature})
- builder.save(as_text=True)
-
diff --git a/node-admin/README.md b/node-admin/README.md
index 4ef9a67e1b5..0e35b75a422 100644
--- a/node-admin/README.md
+++ b/node-admin/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Node Admin
Manages docker containers that run different applications on a host.
diff --git a/node-admin/pom.xml b/node-admin/pom.xml
index 473d106775e..29bc8406b15 100644
--- a/node-admin/pom.xml
+++ b/node-admin/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
@@ -95,6 +95,16 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.junit.vintage</groupId>
+ <artifactId>junit-vintage-engine</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>com.yahoo.vespa</groupId>
<artifactId>application</artifactId>
<version>${project.version}</version>
diff --git a/node-admin/src/main/application/services.xml b/node-admin/src/main/application/services.xml
index e8747ca2977..7d1b1855c14 100644
--- a/node-admin/src/main/application/services.xml
+++ b/node-admin/src/main/application/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0" xmlns:preprocess="properties">
<container id="node-admin" version="1.0">
<!-- Please update container test when changing this file -->
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/ConfigServerInfo.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/ConfigServerInfo.java
index 9da480e55c7..cea8a18b3b4 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/ConfigServerInfo.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/ConfigServerInfo.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.component;
import com.yahoo.vespa.athenz.api.AthenzIdentity;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/IdempotentTask.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/IdempotentTask.java
index 5bb5d35e781..f527094edb5 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/IdempotentTask.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/IdempotentTask.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.component;
/**
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TaskContext.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TaskContext.java
index b84e25f59ed..1a2f5799d94 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TaskContext.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TaskContext.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.component;
import java.util.logging.Level;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TestTaskContext.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TestTaskContext.java
index f30712cd8eb..de3fcee7e59 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TestTaskContext.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TestTaskContext.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.component;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/package-info.java
index 6863a0050cd..33e3bc145c5 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.node.admin.component;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApi.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApi.java
index 90768facf34..c5362772dbd 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApi.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApi.java
@@ -1,6 +1,7 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver;
+import java.net.URI;
import java.time.Duration;
import java.util.Optional;
@@ -10,41 +11,65 @@ import java.util.Optional;
* @author freva
*/
public interface ConfigServerApi extends AutoCloseable {
- class Params {
- private Optional<Duration> connectionTimeout;
+
+ /**
+ * The result of sending a request to a config server results in a jackson response or exception. If a response
+ * is returned, an instance of this interface is conferred to discard the result and try the next config server,
+ * unless it was the last attempt.
+ *
+ * @param <T> the type of the returned jackson response
+ */
+ interface RetryPolicy<T> {
+ boolean tryNextConfigServer(URI configServerEndpoint, T response);
+ }
+
+ class Params<T> {
+ private Optional<Duration> connectionTimeout = Optional.empty();
+
+ private RetryPolicy<T> retryPolicy = (configServerEndpoint, response) -> false;
+
+ public Params() {}
/** Set the socket connect and read timeouts. */
- public Params setConnectionTimeout(Duration connectionTimeout) {
+ public Params<T> setConnectionTimeout(Duration connectionTimeout) {
this.connectionTimeout = Optional.of(connectionTimeout);
return this;
}
public Optional<Duration> getConnectionTimeout() { return connectionTimeout; }
+
+ /** Set the retry policy to use against the config servers. */
+ public Params<T> setRetryPolicy(RetryPolicy<T> retryPolicy) {
+ this.retryPolicy = retryPolicy;
+ return this;
+ }
+
+ public RetryPolicy<T> getRetryPolicy() { return retryPolicy; }
}
- <T> T get(String path, Class<T> wantedReturnType, Params params);
+ <T> T get(String path, Class<T> wantedReturnType, Params<T> params);
default <T> T get(String path, Class<T> wantedReturnType) {
- return get(path, wantedReturnType, null);
+ return get(path, wantedReturnType, new Params<>());
}
- <T> T post(String path, Object bodyJsonPojo, Class<T> wantedReturnType, Params params);
+ <T> T post(String path, Object bodyJsonPojo, Class<T> wantedReturnType, Params<T> params);
default <T> T post(String path, Object bodyJsonPojo, Class<T> wantedReturnType) {
- return post(path, bodyJsonPojo, wantedReturnType, null);
+ return post(path, bodyJsonPojo, wantedReturnType, new Params<>());
}
- <T> T put(String path, Optional<Object> bodyJsonPojo, Class<T> wantedReturnType, Params params);
+ <T> T put(String path, Optional<Object> bodyJsonPojo, Class<T> wantedReturnType, Params<T> params);
default <T> T put(String path, Optional<Object> bodyJsonPojo, Class<T> wantedReturnType) {
- return put(path, bodyJsonPojo, wantedReturnType, null);
+ return put(path, bodyJsonPojo, wantedReturnType, new Params<>());
}
- <T> T patch(String path, Object bodyJsonPojo, Class<T> wantedReturnType, Params params);
+ <T> T patch(String path, Object bodyJsonPojo, Class<T> wantedReturnType, Params<T> params);
default <T> T patch(String path, Object bodyJsonPojo, Class<T> wantedReturnType) {
- return patch(path, bodyJsonPojo, wantedReturnType, null);
+ return patch(path, bodyJsonPojo, wantedReturnType, new Params<>());
}
- <T> T delete(String path, Class<T> wantedReturnType, Params params);
+ <T> T delete(String path, Class<T> wantedReturnType, Params<T> params);
default <T> T delete(String path, Class<T> wantedReturnType) {
- return delete(path, wantedReturnType, null);
+ return delete(path, wantedReturnType, new Params<>());
}
/** Close the underlying HTTP client and any threads this class might have started. */
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApiImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApiImpl.java
index 67dcb6744ce..506ab842cff 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApiImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApiImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver;
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -106,8 +106,10 @@ public class ConfigServerApiImpl implements ConfigServerApi {
HttpUriRequest createRequest(URI configServerUri) throws JsonProcessingException, UnsupportedEncodingException;
}
- private <T> T tryAllConfigServers(CreateRequest requestFactory, Class<T> wantedReturnType) {
+ private <T> T tryAllConfigServers(CreateRequest requestFactory, Class<T> wantedReturnType, Params<T> params) {
+ T lastResult = null;
Exception lastException = null;
+
for (URI configServer : configServers) {
var request = Exceptions.uncheck(() -> requestFactory.createRequest(configServer));
try (CloseableHttpResponse response = client.execute(request)) {
@@ -115,15 +117,26 @@ public class ConfigServerApiImpl implements ConfigServerApi {
HttpException.handleStatusCode(response.getStatusLine().getStatusCode(),
request.getMethod() + " " + request.getURI() +
" failed with response '" + responseBody + "'");
+
+ T result;
try {
- return mapper.readValue(responseBody, wantedReturnType);
+ result = mapper.readValue(responseBody, wantedReturnType);
} catch (IOException e) {
throw new UncheckedIOException("Failed parse response from config server", e);
}
+
+ if (params.getRetryPolicy().tryNextConfigServer(configServer, result)) {
+ lastResult = result;
+ lastException = null;
+ } else {
+ return result;
+ }
} catch (HttpException e) {
if (!e.isRetryable()) throw e;
+ lastResult = null;
lastException = e;
} catch (Exception e) {
+ lastResult = null;
lastException = e;
if (configServers.size() == 1) break;
@@ -136,6 +149,11 @@ public class ConfigServerApiImpl implements ConfigServerApi {
}
}
+ if (lastResult != null) {
+ logger.warning("Giving up after trying all config servers: returning result: " + lastResult);
+ return lastResult;
+ }
+
String prefix = configServers.size() == 1 ?
"Request against " + configServers.get(0) + " failed: " :
"All requests against the config servers (" + configServers + ") failed, last as follows: ";
@@ -143,8 +161,8 @@ public class ConfigServerApiImpl implements ConfigServerApi {
}
@Override
- public <T> T put(String path, Optional<Object> bodyJsonPojo, Class<T> wantedReturnType, Params paramsOrNull) {
- Optional<RequestConfig> requestConfigOverride = getRequestConfigOverride(paramsOrNull);
+ public <T> T put(String path, Optional<Object> bodyJsonPojo, Class<T> wantedReturnType, Params<T> params) {
+ Optional<RequestConfig> requestConfigOverride = getRequestConfigOverride(params);
return tryAllConfigServers(configServer -> {
HttpPut put = new HttpPut(configServer.resolve(path));
requestConfigOverride.ifPresent(put::setConfig);
@@ -153,51 +171,51 @@ public class ConfigServerApiImpl implements ConfigServerApi {
put.setEntity(new StringEntity(mapper.writeValueAsString(bodyJsonPojo.get())));
}
return put;
- }, wantedReturnType);
+ }, wantedReturnType, params);
}
@Override
- public <T> T patch(String path, Object bodyJsonPojo, Class<T> wantedReturnType, Params paramsOrNull) {
- Optional<RequestConfig> requestConfigOverride = getRequestConfigOverride(paramsOrNull);
+ public <T> T patch(String path, Object bodyJsonPojo, Class<T> wantedReturnType, Params<T> params) {
+ Optional<RequestConfig> requestConfigOverride = getRequestConfigOverride(params);
return tryAllConfigServers(configServer -> {
HttpPatch patch = new HttpPatch(configServer.resolve(path));
requestConfigOverride.ifPresent(patch::setConfig);
setContentTypeToApplicationJson(patch);
patch.setEntity(new StringEntity(mapper.writeValueAsString(bodyJsonPojo)));
return patch;
- }, wantedReturnType);
+ }, wantedReturnType, params);
}
@Override
- public <T> T delete(String path, Class<T> wantedReturnType, Params paramsOrNull) {
- Optional<RequestConfig> requestConfigOverride = getRequestConfigOverride(paramsOrNull);
+ public <T> T delete(String path, Class<T> wantedReturnType, Params<T> params) {
+ Optional<RequestConfig> requestConfigOverride = getRequestConfigOverride(params);
return tryAllConfigServers(configServer -> {
HttpDelete delete = new HttpDelete(configServer.resolve(path));
requestConfigOverride.ifPresent(delete::setConfig);
return delete;
- }, wantedReturnType);
+ }, wantedReturnType, params);
}
@Override
- public <T> T get(String path, Class<T> wantedReturnType, Params paramsOrNull) {
- Optional<RequestConfig> requestConfig = getRequestConfigOverride(paramsOrNull);
+ public <T> T get(String path, Class<T> wantedReturnType, Params<T> params) {
+ Optional<RequestConfig> requestConfig = getRequestConfigOverride(params);
return tryAllConfigServers(configServer -> {
HttpGet get = new HttpGet(configServer.resolve(path));
requestConfig.ifPresent(get::setConfig);
return get;
- }, wantedReturnType);
+ }, wantedReturnType, params);
}
@Override
- public <T> T post(String path, Object bodyJsonPojo, Class<T> wantedReturnType, Params paramsOrNull) {
- Optional<RequestConfig> requestConfigOverride = getRequestConfigOverride(paramsOrNull);
+ public <T> T post(String path, Object bodyJsonPojo, Class<T> wantedReturnType, Params<T> params) {
+ Optional<RequestConfig> requestConfigOverride = getRequestConfigOverride(params);
return tryAllConfigServers(configServer -> {
HttpPost post = new HttpPost(configServer.resolve(path));
requestConfigOverride.ifPresent(post::setConfig);
setContentTypeToApplicationJson(post);
post.setEntity(new StringEntity(mapper.writeValueAsString(bodyJsonPojo)));
return post;
- }, wantedReturnType);
+ }, wantedReturnType, params);
}
@Override
@@ -235,12 +253,12 @@ public class ConfigServerApiImpl implements ConfigServerApi {
.build();
}
- private static Optional<RequestConfig> getRequestConfigOverride(Params paramsOrNull) {
- if (paramsOrNull == null) return Optional.empty();
+ private static <T> Optional<RequestConfig> getRequestConfigOverride(Params<T> params) {
+ if (params.getConnectionTimeout().isEmpty()) return Optional.empty();
RequestConfig.Builder builder = RequestConfig.copy(DEFAULT_REQUEST_CONFIG);
- paramsOrNull.getConnectionTimeout().ifPresent(connectionTimeout -> {
+ params.getConnectionTimeout().ifPresent(connectionTimeout -> {
builder.setConnectTimeout((int) connectionTimeout.toMillis());
builder.setSocketTimeout((int) connectionTimeout.toMillis());
});
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerClients.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerClients.java
index 6623a995006..4a9f761a72f 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerClients.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerClients.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver;
import com.yahoo.vespa.flags.FlagRepository;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/HttpException.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/HttpException.java
index c618fd480ba..4de7582fb7b 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/HttpException.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/HttpException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver;
import com.yahoo.vespa.hosted.node.admin.nodeadmin.ConvergenceException;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/RealConfigServerClients.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/RealConfigServerClients.java
index 7d52b9d72b0..6c650700432 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/RealConfigServerClients.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/RealConfigServerClients.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver;
import com.yahoo.vespa.flags.FlagRepository;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/flags/RealFlagRepository.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/flags/RealFlagRepository.java
index 8d9c5a2d98e..1b88aef39c7 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/flags/RealFlagRepository.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/flags/RealFlagRepository.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.flags;
import com.yahoo.vespa.flags.FlagId;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/flags/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/flags/package-info.java
index b991adfc639..d6b6ab5f47a 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/flags/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/flags/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.node.admin.configserver.flags;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/Acl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/Acl.java
index 58c9c197d65..e721ac3fc20 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/Acl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/Acl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.noderepository;
import com.google.common.net.InetAddresses;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/AddNode.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/AddNode.java
index 1cf9c2bfb76..12934c23926 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/AddNode.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/AddNode.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.noderepository;
import com.yahoo.config.provision.NodeResources;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/Event.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/Event.java
new file mode 100644
index 00000000000..ca374533940
--- /dev/null
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/Event.java
@@ -0,0 +1,54 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.node.admin.configserver.noderepository;
+
+import java.time.Instant;
+import java.util.Objects;
+
+/**
+ * @author freva
+ */
+public class Event {
+ private final String agent;
+ private final String type;
+ private final Instant at;
+
+ public Event(String agent, String type, Instant at) {
+ this.agent = Objects.requireNonNull(agent);
+ this.type = Objects.requireNonNull(type);
+ this.at = Objects.requireNonNull(at);
+ }
+
+ public String agent() {
+ return agent;
+ }
+
+ public String type() {
+ return type;
+ }
+
+ public Instant at() {
+ return at;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ Event event1 = (Event) o;
+ return agent.equals(event1.agent) && type.equals(event1.type) && at.equals(event1.at);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(agent, type, at);
+ }
+
+ @Override
+ public String toString() {
+ return "Event{" +
+ "agent='" + agent + '\'' +
+ ", type='" + type + '\'' +
+ ", at=" + at +
+ '}';
+ }
+}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NoSuchNodeException.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NoSuchNodeException.java
index 1548b41f0af..4a6846d734c 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NoSuchNodeException.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NoSuchNodeException.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.noderepository;
public class NoSuchNodeException extends NodeRepositoryException {
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java
index 2379659f74b..8d897c86f1f 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.noderepository;
import com.fasterxml.jackson.databind.JsonNode;
@@ -6,9 +6,11 @@ import com.yahoo.component.Version;
import com.yahoo.config.provision.DockerImage;
import java.time.Instant;
+import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
+import java.util.Set;
import java.util.TreeMap;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -29,6 +31,7 @@ public class NodeAttributes {
private Optional<Version> vespaVersion = Optional.empty();
private Optional<Version> currentOsVersion = Optional.empty();
private Optional<Instant> currentFirmwareCheck = Optional.empty();
+ private List<TrustStoreItem> trustStore = List.of();
/** The list of reports to patch. A null value is used to remove the report. */
private Map<String, JsonNode> reports = new TreeMap<>();
@@ -144,7 +147,17 @@ public class NodeAttributes {
&& Objects.equals(vespaVersion, other.vespaVersion)
&& Objects.equals(currentOsVersion, other.currentOsVersion)
&& Objects.equals(currentFirmwareCheck, other.currentFirmwareCheck)
- && Objects.equals(reports, other.reports);
+ && Objects.equals(reports, other.reports)
+ && Objects.equals(trustStore, other.trustStore);
+ }
+
+ public NodeAttributes withTrustStore(List<TrustStoreItem> trustStore) {
+ this.trustStore = List.copyOf(trustStore);
+ return this;
+ }
+
+ public List<TrustStoreItem> getTrustStore() {
+ return trustStore;
}
@Override
@@ -156,7 +169,8 @@ public class NodeAttributes {
vespaVersion.map(ver -> "vespaVersion=" + ver.toFullString()),
currentOsVersion.map(ver -> "currentOsVersion=" + ver.toFullString()),
currentFirmwareCheck.map(at -> "currentFirmwareCheck=" + at),
- Optional.ofNullable(reports.isEmpty() ? null : "reports=" + reports))
+ Optional.ofNullable(reports.isEmpty() ? null : "reports=" + reports),
+ Optional.ofNullable(trustStore.isEmpty() ? null : "trustStore=" + trustStore))
.filter(Optional::isPresent)
.map(Optional::get)
.collect(Collectors.joining(", ", "{", "}"));
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeMembership.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeMembership.java
index 6fe5ef47eb5..2fbbe1eb122 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeMembership.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeMembership.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.noderepository;
import java.util.Objects;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeRepository.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeRepository.java
index 4cce6ce08d6..c45d53ae97b 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeRepository.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeRepository.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.noderepository;
import java.util.List;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeRepositoryException.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeRepositoryException.java
index 10e61d373d2..a0b0499bb1e 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeRepositoryException.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeRepositoryException.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.noderepository;
import com.yahoo.vespa.hosted.node.admin.nodeadmin.ConvergenceException;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java
index fa1f8528b31..7ac8d43f881 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.noderepository;
import com.fasterxml.jackson.databind.JsonNode;
@@ -12,6 +12,7 @@ import com.yahoo.vespa.hosted.node.admin.task.util.file.DiskSize;
import java.net.URI;
import java.time.Instant;
import java.util.EnumSet;
+import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
@@ -55,16 +56,20 @@ public class NodeSpec {
private final Optional<NodeMembership> membership;
private final NodeResources resources;
+ private final NodeResources realResources;
private final Set<String> ipAddresses;
private final Set<String> additionalIpAddresses;
private final NodeReports reports;
+ private final List<Event> events;
private final Optional<String> parentHostname;
private final Optional<URI> archiveUri;
private final Optional<ApplicationId> exclusiveTo;
+ private final List<TrustStoreItem> trustStore;
+
public NodeSpec(
String hostname,
Optional<String> id,
@@ -88,12 +93,15 @@ public class NodeSpec {
Optional<Instant> currentFirmwareCheck,
Optional<String> modelName,
NodeResources resources,
+ NodeResources realResources,
Set<String> ipAddresses,
Set<String> additionalIpAddresses,
NodeReports reports,
+ List<Event> events,
Optional<String> parentHostname,
Optional<URI> archiveUri,
- Optional<ApplicationId> exclusiveTo) {
+ Optional<ApplicationId> exclusiveTo,
+ List<TrustStoreItem> trustStore) {
if (state == NodeState.active) {
requireOptional(owner, "owner");
requireOptional(membership, "membership");
@@ -125,12 +133,15 @@ public class NodeSpec {
this.wantedFirmwareCheck = Objects.requireNonNull(wantedFirmwareCheck);
this.currentFirmwareCheck = Objects.requireNonNull(currentFirmwareCheck);
this.resources = Objects.requireNonNull(resources);
- this.ipAddresses = Objects.requireNonNull(ipAddresses);
- this.additionalIpAddresses = Objects.requireNonNull(additionalIpAddresses);
+ this.realResources = Objects.requireNonNull(realResources);
+ this.ipAddresses = Set.copyOf(ipAddresses);
+ this.additionalIpAddresses = Set.copyOf(additionalIpAddresses);
this.reports = Objects.requireNonNull(reports);
+ this.events = List.copyOf(events);
this.parentHostname = Objects.requireNonNull(parentHostname);
this.archiveUri = Objects.requireNonNull(archiveUri);
this.exclusiveTo = Objects.requireNonNull(exclusiveTo);
+ this.trustStore = Objects.requireNonNull(trustStore);
}
public String hostname() {
@@ -222,28 +233,32 @@ public class NodeSpec {
return resources;
}
+ public NodeResources realResources() {
+ return realResources;
+ }
+
public double vcpu() {
- return resources.vcpu();
+ return realResources.vcpu();
}
public double memoryGb() {
- return resources.memoryGb();
+ return realResources.memoryGb();
}
public DiskSize diskSize() {
- return DiskSize.of(resources.diskGb(), DiskSize.Unit.GB);
+ return DiskSize.of(realResources.diskGb(), DiskSize.Unit.GB);
}
public double diskGb() {
- return resources.diskGb();
+ return realResources.diskGb();
}
public boolean isFastDisk() {
- return resources.diskSpeed() == fast;
+ return realResources.diskSpeed() == fast;
}
public double bandwidthGbps() {
- return resources.bandwidthGbps();
+ return realResources.bandwidthGbps();
}
public Set<String> ipAddresses() {
@@ -256,6 +271,10 @@ public class NodeSpec {
public NodeReports reports() { return reports; }
+ public List<Event> events() {
+ return events;
+ }
+
public Optional<String> parentHostname() {
return parentHostname;
}
@@ -268,6 +287,10 @@ public class NodeSpec {
return exclusiveTo;
}
+ public List<TrustStoreItem> trustStore() {
+ return trustStore;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -297,12 +320,15 @@ public class NodeSpec {
Objects.equals(wantedFirmwareCheck, that.wantedFirmwareCheck) &&
Objects.equals(currentFirmwareCheck, that.currentFirmwareCheck) &&
Objects.equals(resources, that.resources) &&
+ Objects.equals(realResources, that.realResources) &&
Objects.equals(ipAddresses, that.ipAddresses) &&
Objects.equals(additionalIpAddresses, that.additionalIpAddresses) &&
Objects.equals(reports, that.reports) &&
+ Objects.equals(events, that.events) &&
Objects.equals(parentHostname, that.parentHostname) &&
Objects.equals(archiveUri, that.archiveUri) &&
- Objects.equals(exclusiveTo, that.exclusiveTo);
+ Objects.equals(exclusiveTo, that.exclusiveTo) &&
+ Objects.equals(trustStore, that.trustStore);
}
@Override
@@ -330,12 +356,15 @@ public class NodeSpec {
wantedFirmwareCheck,
currentFirmwareCheck,
resources,
+ realResources,
ipAddresses,
additionalIpAddresses,
reports,
+ events,
parentHostname,
archiveUri,
- exclusiveTo);
+ exclusiveTo,
+ trustStore);
}
@Override
@@ -363,12 +392,15 @@ public class NodeSpec {
+ " wantedFirmwareCheck=" + wantedFirmwareCheck
+ " currentFirmwareCheck=" + currentFirmwareCheck
+ " resources=" + resources
+ + " realResources=" + realResources
+ " ipAddresses=" + ipAddresses
+ " additionalIpAddresses=" + additionalIpAddresses
+ " reports=" + reports
+ + " events=" + events
+ " parentHostname=" + parentHostname
+ " archiveUri=" + archiveUri
+ " exclusiveTo=" + exclusiveTo
+ + " trustStore=" + trustStore
+ " }";
}
@@ -394,13 +426,16 @@ public class NodeSpec {
private Optional<Instant> wantedFirmwareCheck = Optional.empty();
private Optional<Instant> currentFirmwareCheck = Optional.empty();
private Optional<String> modelName = Optional.empty();
- private NodeResources resources = new NodeResources(0, 0, 0, 0, slow);
+ private NodeResources resources;
+ private NodeResources realResources;
private Set<String> ipAddresses = Set.of();
private Set<String> additionalIpAddresses = Set.of();
private NodeReports reports = new NodeReports();
+ private List<Event> events = List.of();
private Optional<String> parentHostname = Optional.empty();
private Optional<URI> archiveUri = Optional.empty();
private Optional<ApplicationId> exclusiveTo = Optional.empty();
+ private List<TrustStoreItem> trustStore = List.of();
public Builder() {}
@@ -410,12 +445,14 @@ public class NodeSpec {
type(node.type);
flavor(node.flavor);
resources(node.resources);
+ realResources(node.realResources);
ipAddresses(node.ipAddresses);
additionalIpAddresses(node.additionalIpAddresses);
wantedRebootGeneration(node.wantedRebootGeneration);
currentRebootGeneration(node.currentRebootGeneration);
orchestratorStatus(node.orchestratorStatus);
reports(new NodeReports(node.reports));
+ events(node.events);
node.wantedDockerImage.ifPresent(this::wantedDockerImage);
node.currentDockerImage.ifPresent(this::currentDockerImage);
node.wantedVespaVersion.ifPresent(this::wantedVespaVersion);
@@ -431,6 +468,7 @@ public class NodeSpec {
node.parentHostname.ifPresent(this::parentHostname);
node.archiveUri.ifPresent(this::archiveUri);
node.exclusiveTo.ifPresent(this::exclusiveTo);
+ trustStore(node.trustStore);
}
public Builder hostname(String hostname) {
@@ -538,24 +576,29 @@ public class NodeSpec {
return this;
}
+ public Builder realResources(NodeResources realResources) {
+ this.realResources = realResources;
+ return this;
+ }
+
public Builder vcpu(double vcpu) {
- return resources(resources.withVcpu(vcpu));
+ return realResources(realResources.withVcpu(vcpu));
}
public Builder memoryGb(double memoryGb) {
- return resources(resources.withMemoryGb(memoryGb));
+ return realResources(realResources.withMemoryGb(memoryGb));
}
public Builder diskGb(double diskGb) {
- return resources(resources.withDiskGb(diskGb));
+ return realResources(realResources.withDiskGb(diskGb));
}
public Builder fastDisk(boolean fastDisk) {
- return resources(resources.with(fastDisk ? fast : slow));
+ return realResources(realResources.with(fastDisk ? fast : slow));
}
public Builder bandwidthGbps(double bandwidthGbps) {
- return resources(resources.withBandwidthGbps(bandwidthGbps));
+ return realResources(realResources.withBandwidthGbps(bandwidthGbps));
}
public Builder ipAddresses(Set<String> ipAddresses) {
@@ -583,6 +626,11 @@ public class NodeSpec {
return this;
}
+ public Builder events(List<Event> events) {
+ this.events = events;
+ return this;
+ }
+
public Builder parentHostname(String parentHostname) {
this.parentHostname = Optional.of(parentHostname);
return this;
@@ -598,12 +646,19 @@ public class NodeSpec {
return this;
}
+ public Builder trustStore(List<TrustStoreItem> trustStore) {
+ this.trustStore = List.copyOf(trustStore);
+ return this;
+ }
+
public Builder updateFromNodeAttributes(NodeAttributes attributes) {
attributes.getHostId().ifPresent(this::id);
attributes.getDockerImage().ifPresent(this::currentDockerImage);
attributes.getCurrentOsVersion().ifPresent(this::currentOsVersion);
attributes.getRebootGeneration().ifPresent(this::currentRebootGeneration);
attributes.getRestartGeneration().ifPresent(this::currentRestartGeneration);
+ // Always replace entire trust store
+ trustStore(attributes.getTrustStore());
this.reports.updateFromRawMap(attributes.getReports());
return this;
@@ -681,6 +736,10 @@ public class NodeSpec {
return resources;
}
+ public NodeResources realResources() {
+ return realResources;
+ }
+
public Set<String> ipAddresses() {
return ipAddresses;
}
@@ -693,6 +752,10 @@ public class NodeSpec {
return reports;
}
+ public List<Event> events() {
+ return events;
+ }
+
public Optional<String> parentHostname() {
return parentHostname;
}
@@ -708,8 +771,8 @@ public class NodeSpec {
wantedRestartGeneration, currentRestartGeneration,
wantedRebootGeneration, currentRebootGeneration,
wantedFirmwareCheck, currentFirmwareCheck, modelName,
- resources, ipAddresses, additionalIpAddresses,
- reports, parentHostname, archiveUri, exclusiveTo);
+ resources, realResources, ipAddresses, additionalIpAddresses,
+ reports, events, parentHostname, archiveUri, exclusiveTo, trustStore);
}
@@ -727,7 +790,8 @@ public class NodeSpec {
.state(state)
.type(NodeType.tenant)
.flavor("d-2-8-50")
- .resources(new NodeResources(2, 8, 50, 10));
+ .resources(new NodeResources(2, 8, 50, 10))
+ .realResources(new NodeResources(2, 8, 50, 10));
// Set the required allocated fields
if (EnumSet.of(NodeState.active, NodeState.inactive, NodeState.reserved).contains(state)) {
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/OrchestratorStatus.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/OrchestratorStatus.java
index 689882d61c5..f0a648827b6 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/OrchestratorStatus.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/OrchestratorStatus.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.noderepository;
import java.util.stream.Stream;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java
index 8e069ab923b..9336451d08d 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.noderepository;
import com.fasterxml.jackson.databind.JsonNode;
@@ -151,6 +151,15 @@ public class RealNodeRepository implements NodeRepository {
Optional<NodeMembership> membership = Optional.ofNullable(node.membership)
.map(m -> new NodeMembership(m.clusterType, m.clusterId, m.group, m.index, m.retired));
NodeReports reports = NodeReports.fromMap(Optional.ofNullable(node.reports).orElseGet(Map::of));
+ List<Event> events = node.history.stream()
+ .map(event -> new Event(event.agent, event.event, Optional.ofNullable(event.at).map(Instant::ofEpochMilli).orElse(Instant.EPOCH)))
+ .collect(Collectors.toUnmodifiableList());
+
+ List<TrustStoreItem> trustStore = Optional.ofNullable(node.trustStore).orElse(List.of()).stream()
+ .map(item -> new TrustStoreItem(item.fingerprint, Instant.ofEpochMilli(item.expiry)))
+ .collect(Collectors.toList());
+
+
return new NodeSpec(
node.hostname,
Optional.ofNullable(node.openStackId),
@@ -173,19 +182,26 @@ public class RealNodeRepository implements NodeRepository {
Optional.ofNullable(node.wantedFirmwareCheck).map(Instant::ofEpochMilli),
Optional.ofNullable(node.currentFirmwareCheck).map(Instant::ofEpochMilli),
Optional.ofNullable(node.modelName),
- new NodeResources(
- node.resources.vcpu,
- node.resources.memoryGb,
- node.resources.diskGb,
- node.resources.bandwidthGbps,
- diskSpeedFromString(node.resources.diskSpeed),
- storageTypeFromString(node.resources.storageType)),
+ nodeResources(node.resources),
+ nodeResources(node.realResources),
node.ipAddresses,
node.additionalIpAddresses,
reports,
+ events,
Optional.ofNullable(node.parentHostname),
Optional.ofNullable(node.archiveUri).map(URI::create),
- Optional.ofNullable(node.exclusiveTo).map(ApplicationId::fromSerializedForm));
+ Optional.ofNullable(node.exclusiveTo).map(ApplicationId::fromSerializedForm),
+ trustStore);
+ }
+
+ private static NodeResources nodeResources(NodeRepositoryNode.NodeResources nodeResources) {
+ return new NodeResources(
+ nodeResources.vcpu,
+ nodeResources.memoryGb,
+ nodeResources.diskGb,
+ nodeResources.bandwidthGbps,
+ diskSpeedFromString(nodeResources.diskSpeed),
+ storageTypeFromString(nodeResources.storageType));
}
private static NodeResources.DiskSpeed diskSpeedFromString(String diskSpeed) {
@@ -260,7 +276,9 @@ public class RealNodeRepository implements NodeRepository {
node.vespaVersion = nodeAttributes.getVespaVersion().map(Version::toFullString).orElse(null);
node.currentOsVersion = nodeAttributes.getCurrentOsVersion().map(Version::toFullString).orElse(null);
node.currentFirmwareCheck = nodeAttributes.getCurrentFirmwareCheck().map(Instant::toEpochMilli).orElse(null);
-
+ node.trustStore = nodeAttributes.getTrustStore().stream()
+ .map(item -> new NodeRepositoryNode.TrustStoreItem(item.fingerprint(), item.expiry().toEpochMilli()))
+ .collect(Collectors.toList());
Map<String, JsonNode> reports = nodeAttributes.getReports();
node.reports = reports == null || reports.isEmpty() ? null : new TreeMap<>(reports);
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/TrustStoreItem.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/TrustStoreItem.java
new file mode 100644
index 00000000000..d3e797bca24
--- /dev/null
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/TrustStoreItem.java
@@ -0,0 +1,48 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+package com.yahoo.vespa.hosted.node.admin.configserver.noderepository;
+
+import java.time.Instant;
+import java.util.Objects;
+
+/**
+ * @author mortent
+ */
+public class TrustStoreItem {
+ private final String fingerprint;
+ private final Instant expiry;
+
+ public TrustStoreItem(String fingerprint, Instant expiry) {
+ this.fingerprint = fingerprint;
+ this.expiry = expiry;
+ }
+
+ public String fingerprint() {
+ return fingerprint;
+ }
+
+ public Instant expiry() {
+ return expiry;
+ }
+
+ @Override
+ public String toString() {
+ return "TrustStoreItem{" +
+ "fingerprint='" + fingerprint + '\'' +
+ ", expiry=" + expiry +
+ '}';
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ TrustStoreItem that = (TrustStoreItem) o;
+ return Objects.equals(fingerprint, that.fingerprint) && Objects.equals(expiry, that.expiry);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(fingerprint, expiry);
+ }
+}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/GetAclResponse.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/GetAclResponse.java
index 2d59898dc52..f228743a33f 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/GetAclResponse.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/GetAclResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.noderepository.bindings;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/GetNodesResponse.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/GetNodesResponse.java
index b96a2075b2c..03eada47367 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/GetNodesResponse.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/GetNodesResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.noderepository.bindings;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeMessageResponse.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeMessageResponse.java
index 0f5e896c290..f4c6181f219 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeMessageResponse.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeMessageResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.noderepository.bindings;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java
index 988bd2a4bf3..1e51fe279bb 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.noderepository.bindings;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@@ -6,6 +6,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.JsonNode;
+import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -30,6 +31,8 @@ public class NodeRepositoryNode {
public String flavor;
@JsonProperty("resources")
public NodeResources resources;
+ @JsonProperty("realResources")
+ public NodeResources realResources;
@JsonProperty("membership")
public Membership membership;
@JsonProperty("owner")
@@ -80,6 +83,11 @@ public class NodeRepositoryNode {
public String archiveUri;
@JsonProperty("exclusiveTo")
public String exclusiveTo;
+ @JsonProperty("history")
+ public List<Event> history;
+ @JsonProperty("trustStore")
+ @JsonInclude(JsonInclude.Include.NON_EMPTY)
+ public List<TrustStoreItem> trustStore;
@JsonProperty("reports")
public Map<String, JsonNode> reports = null;
@@ -95,6 +103,7 @@ public class NodeRepositoryNode {
", modelName='" + modelName + '\'' +
", flavor='" + flavor + '\'' +
", resources=" + resources +
+ ", realResources=" + realResources +
", membership=" + membership +
", owner=" + owner +
", restartGeneration=" + restartGeneration +
@@ -120,6 +129,7 @@ public class NodeRepositoryNode {
", archiveUri=" + archiveUri +
", reports=" + reports +
", exclusiveTo=" + exclusiveTo +
+ ", history=" + history +
'}';
}
@@ -195,4 +205,36 @@ public class NodeRepositoryNode {
}
}
+ @JsonIgnoreProperties(ignoreUnknown = true)
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ public static class Event {
+ @JsonProperty
+ public String event;
+ @JsonProperty
+ public String agent;
+ @JsonProperty
+ public Long at;
+
+ @Override
+ public String toString() {
+ return "Event{" +
+ "agent=" + agent +
+ ", event=" + event +
+ ", at=" + at +
+ '}';
+ }
+ }
+ @JsonIgnoreProperties(ignoreUnknown = true)
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ public static class TrustStoreItem {
+ @JsonProperty ("fingerprint")
+ public String fingerprint;
+ @JsonProperty ("expiry")
+ public long expiry;
+
+ public TrustStoreItem(@JsonProperty("fingerprint") String fingerprint, @JsonProperty("expiry") long expiry) {
+ this.fingerprint = fingerprint;
+ this.expiry = expiry;
+ }
+ }
}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/package-info.java
index deb5352d1eb..6e54bdfdf47 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.node.admin.configserver.noderepository;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/Orchestrator.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/Orchestrator.java
index ba4e7ab7b7c..41b77d914fe 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/Orchestrator.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/Orchestrator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.orchestrator;
import java.util.List;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/OrchestratorException.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/OrchestratorException.java
index 8575bf7f655..9b8a749c33d 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/OrchestratorException.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/OrchestratorException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.orchestrator;
import com.yahoo.vespa.hosted.node.admin.nodeadmin.ConvergenceException;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/OrchestratorImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/OrchestratorImpl.java
index a3cc7042c47..281d43e0afc 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/OrchestratorImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/OrchestratorImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.orchestrator;
import com.yahoo.vespa.hosted.node.admin.configserver.ConfigServerApi;
@@ -6,11 +6,14 @@ import com.yahoo.vespa.hosted.node.admin.configserver.ConnectionException;
import com.yahoo.vespa.hosted.node.admin.configserver.HttpException;
import com.yahoo.vespa.hosted.node.admin.nodeadmin.ConvergenceException;
import com.yahoo.vespa.orchestrator.restapi.wire.BatchOperationResult;
+import com.yahoo.vespa.orchestrator.restapi.wire.HostStateChangeDenialReason;
import com.yahoo.vespa.orchestrator.restapi.wire.UpdateHostResponse;
+import java.net.URI;
import java.time.Duration;
import java.util.List;
import java.util.Optional;
+import java.util.logging.Logger;
/**
* @author stiankri
@@ -18,6 +21,8 @@ import java.util.Optional;
* @author dybis
*/
public class OrchestratorImpl implements Orchestrator {
+ private static final Logger logger = Logger.getLogger(OrchestratorImpl.class.getName());
+
// The server-side Orchestrator has an internal timeout of 10s.
//
// Note: A 409 has been observed to be returned after 33s in a case possibly involving
@@ -44,7 +49,10 @@ public class OrchestratorImpl implements Orchestrator {
public void suspend(final String hostName) {
UpdateHostResponse response;
try {
- var params = new ConfigServerApi.Params().setConnectionTimeout(CONNECTION_TIMEOUT);
+ var params = new ConfigServerApi
+ .Params<UpdateHostResponse>()
+ .setConnectionTimeout(CONNECTION_TIMEOUT)
+ .setRetryPolicy(createRetryPolicyForSuspend());
response = configServerApi.put(getSuspendPath(hostName), Optional.empty(), UpdateHostResponse.class, params);
} catch (HttpException.NotFoundException n) {
throw new OrchestratorNotFoundException("Failed to suspend " + hostName + ", host not found");
@@ -61,11 +69,35 @@ public class OrchestratorImpl implements Orchestrator {
});
}
+ private static ConfigServerApi.RetryPolicy<UpdateHostResponse> createRetryPolicyForSuspend() {
+ return new ConfigServerApi.RetryPolicy<UpdateHostResponse>() {
+ @Override
+ public boolean tryNextConfigServer(URI configServerEndpoint, UpdateHostResponse response) {
+ HostStateChangeDenialReason reason = response.reason();
+ if (reason == null) {
+ return false;
+ }
+
+ // The config server has likely just bootstrapped, so try the next.
+ if ("unknown-service-status".equals(reason.constraintName())) {
+ // Warn for now and until this feature has proven to work well
+ logger.warning("Config server at [" + configServerEndpoint +
+ "] failed with transient error (will try next): " +
+ reason.message());
+
+ return true;
+ }
+
+ return false;
+ }
+ };
+ }
+
@Override
public void suspend(String parentHostName, List<String> hostNames) {
final BatchOperationResult batchOperationResult;
try {
- var params = new ConfigServerApi.Params().setConnectionTimeout(CONNECTION_TIMEOUT);
+ var params = new ConfigServerApi.Params<BatchOperationResult>().setConnectionTimeout(CONNECTION_TIMEOUT);
String hostnames = String.join("&hostname=", hostNames);
String url = String.format("%s/%s?hostname=%s", ORCHESTRATOR_PATH_PREFIX_HOST_SUSPENSION_API,
parentHostName, hostnames);
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/OrchestratorNotFoundException.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/OrchestratorNotFoundException.java
index ac39f7c3280..3b016aac03f 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/OrchestratorNotFoundException.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/OrchestratorNotFoundException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.orchestrator;
@SuppressWarnings("serial")
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/package-info.java
index 6f67fe2ea08..ffba8fb0dc4 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.node.admin.configserver.orchestrator;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/package-info.java
index 347f6eaf516..66dbef517bd 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.node.admin.configserver;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/HealthCode.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/HealthCode.java
index 7ca7a1b30dd..057a173ccc6 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/HealthCode.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/HealthCode.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.state;
/**
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/State.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/State.java
index ab9d0786f5a..a05aac6b23f 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/State.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/State.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.state;
/**
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/StateImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/StateImpl.java
index e99a107cfe1..ed42f0ed971 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/StateImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/StateImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.state;
import com.yahoo.vespa.hosted.node.admin.configserver.ConfigServerApi;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/bindings/HealthResponse.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/bindings/HealthResponse.java
index 26ad5413fb8..06e47b30ca5 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/bindings/HealthResponse.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/bindings/HealthResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.state.bindings;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/package-info.java
index ea39d079d15..d6ec33caf53 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/state/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.node.admin.configserver.state;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/Cgroup.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/Cgroup.java
index 3efadda183b..c7616abd508 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/Cgroup.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/Cgroup.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
//
package com.yahoo.vespa.hosted.node.admin.container;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/Container.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/Container.java
index 24b77e52a02..f2f8ffb8d22 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/Container.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/Container.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container;
import com.yahoo.config.provision.DockerImage;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngine.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngine.java
index 75069fa815e..a3bce4c687e 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngine.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngine.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container;
import com.yahoo.config.provision.DockerImage;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerId.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerId.java
index 0e6a4835abf..3db4feebcf8 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerId.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerId.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
//
package com.yahoo.vespa.hosted.node.admin.container;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerName.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerName.java
index a81404902bc..6e3b5b3f703 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerName.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerName.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container;
import java.util.Objects;
@@ -11,14 +11,14 @@ import java.util.regex.Pattern;
*/
public class ContainerName implements Comparable<ContainerName> {
- private static final Pattern LEGAL_CONTAINER_NAME_PATTERN = Pattern.compile("^[a-zA-Z0-9-]+$");
+ private static final Pattern LEGAL_CONTAINER_NAME_PATTERN = Pattern.compile("^[a-zA-Z0-9_-]+$");
private final String name;
public ContainerName(final String name) {
this.name = Objects.requireNonNull(name);
if (! LEGAL_CONTAINER_NAME_PATTERN.matcher(name).matches()) {
throw new IllegalArgumentException("Illegal container name: " + name + ". Must match " +
- LEGAL_CONTAINER_NAME_PATTERN.toString());
+ LEGAL_CONTAINER_NAME_PATTERN.pattern());
}
}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerNetworkMode.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerNetworkMode.java
index 877a429c84a..56e690864ac 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerNetworkMode.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerNetworkMode.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container;
import java.util.Objects;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerOperations.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerOperations.java
index 49216ddfdaf..acac2098d53 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerOperations.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerOperations.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container;
import com.yahoo.config.provision.DockerImage;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerResources.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerResources.java
index f01527f58d1..b89a70c29b7 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerResources.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerResources.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container;
import java.util.Objects;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerStats.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerStats.java
index 78adcebe31e..fae4fc72145 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerStats.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerStats.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container;
import java.util.Collections;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerStatsCollector.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerStatsCollector.java
index 91466efd43e..e2176341bc0 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerStatsCollector.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/ContainerStatsCollector.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container;
import java.io.IOException;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/PartialContainer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/PartialContainer.java
index f960201b2a9..d320ffd294c 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/PartialContainer.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/PartialContainer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container;
import com.yahoo.config.provision.DockerImage;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/RegistryCredentials.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/RegistryCredentials.java
index 6437497fa68..1ac61cd6c1f 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/RegistryCredentials.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/RegistryCredentials.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container;
import java.util.Objects;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/RegistryCredentialsProvider.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/RegistryCredentialsProvider.java
index 1cd342d68a5..15123ddacba 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/RegistryCredentialsProvider.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/RegistryCredentialsProvider.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container;
/**
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImageDownloader.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImageDownloader.java
index 066114dc41f..1e37e080528 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImageDownloader.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImageDownloader.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container.image;
import com.yahoo.concurrent.DaemonThreadFactory;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImagePruner.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImagePruner.java
index 37601055d00..82a898b4d4b 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImagePruner.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImagePruner.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container.image;
import com.google.common.base.Strings;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/image/Image.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/image/Image.java
index a1b0ae0d809..5a47e5d335b 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/image/Image.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/image/Image.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container.image;
import java.util.List;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/image/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/image/package-info.java
index 9ba1d7d6e7f..35497e2baca 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/image/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/image/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author mpolden
*/
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/DimensionMetrics.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/DimensionMetrics.java
index 929fcde9492..c47a83056be 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/DimensionMetrics.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/DimensionMetrics.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container.metrics;
import java.util.HashMap;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/Metrics.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/Metrics.java
index ec3b2d347e5..5f641ce3996 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/Metrics.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/Metrics.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container.metrics;
import com.google.inject.Inject;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/package-info.java
index 3f514f96f84..419c2d9725b 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/metrics/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.node.admin.container.metrics;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/package-info.java
index 2fbd94c8b65..80d1c4c6a9c 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/container/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.node.admin.container;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java
index 5fd7d2e4119..7d98a76dc6e 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java
@@ -1,13 +1,13 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import com.yahoo.config.provision.DockerImage;
import com.yahoo.config.provision.NodeType;
+import com.yahoo.vespa.hosted.node.admin.component.TaskContext;
import com.yahoo.vespa.hosted.node.admin.container.Container;
import com.yahoo.vespa.hosted.node.admin.container.ContainerName;
-import com.yahoo.vespa.hosted.node.admin.component.TaskContext;
import com.yahoo.vespa.hosted.node.admin.maintenance.coredump.CoredumpHandler;
import com.yahoo.vespa.hosted.node.admin.maintenance.disk.CoredumpCleanupRule;
import com.yahoo.vespa.hosted.node.admin.maintenance.disk.DiskCleanup;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainer.java
index 20ca842784d..cb2134b36af 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainer.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.acl;
import com.google.common.net.InetAddresses;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/FilterTableLineEditor.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/FilterTableLineEditor.java
index 65941ed533a..462790b8d0f 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/FilterTableLineEditor.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/FilterTableLineEditor.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.acl;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.Acl;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/NatTableLineEditor.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/NatTableLineEditor.java
index be08e1b2aec..9458cc3a3e2 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/NatTableLineEditor.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/NatTableLineEditor.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.acl;
import com.yahoo.vespa.hosted.node.admin.task.util.file.LineEdit;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/package-info.java
index e679cd259a3..2ac8dd47d30 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.node.admin.maintenance.acl;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollector.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollector.java
index 12dcc04b952..ec043036c81 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollector.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollector.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.coredump;
import com.yahoo.vespa.hosted.node.admin.container.ContainerOperations;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpHandler.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpHandler.java
index 0fd912b528c..f812f4096bd 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpHandler.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.coredump;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -54,7 +54,7 @@ public class CoredumpHandler {
private final CoredumpReporter coredumpReporter;
private final Path crashPatchInContainer;
private final Path doneCoredumpsPath;
- private final String operatorGroupName;
+ private final int operatorGroupId;
private final Metrics metrics;
private final Clock clock;
private final Supplier<String> coredumpIdSupplier;
@@ -62,23 +62,23 @@ public class CoredumpHandler {
/**
* @param crashPathInContainer path inside the container where core dump are dumped
* @param doneCoredumpsPath path on host where processed core dumps are stored
- * @param operatorGroupName name of the group that will be set as the owner of the processed coredump
+ * @param operatorGroupId group ID of the group that will be set as the owner of the processed coredump
*/
public CoredumpHandler(Terminal terminal, CoreCollector coreCollector, CoredumpReporter coredumpReporter,
- Path crashPathInContainer, Path doneCoredumpsPath, String operatorGroupName, Metrics metrics) {
+ Path crashPathInContainer, Path doneCoredumpsPath, int operatorGroupId, Metrics metrics) {
this(terminal, coreCollector, coredumpReporter, crashPathInContainer, doneCoredumpsPath,
- operatorGroupName, metrics, Clock.systemUTC(), () -> UUID.randomUUID().toString());
+ operatorGroupId, metrics, Clock.systemUTC(), () -> UUID.randomUUID().toString());
}
CoredumpHandler(Terminal terminal, CoreCollector coreCollector, CoredumpReporter coredumpReporter,
- Path crashPathInContainer, Path doneCoredumpsPath, String operatorGroupName, Metrics metrics,
+ Path crashPathInContainer, Path doneCoredumpsPath, int operatorGroupId, Metrics metrics,
Clock clock, Supplier<String> coredumpIdSupplier) {
this.terminal = terminal;
this.coreCollector = coreCollector;
this.coredumpReporter = coredumpReporter;
this.crashPatchInContainer = crashPathInContainer;
this.doneCoredumpsPath = doneCoredumpsPath;
- this.operatorGroupName = operatorGroupName;
+ this.operatorGroupId = operatorGroupId;
this.metrics = metrics;
this.clock = clock;
this.coredumpIdSupplier = coredumpIdSupplier;
@@ -198,7 +198,7 @@ public class CoredumpHandler {
.add(LZ4_PATH, "-f", coreFile.toString(), compressedCoreFile.toString())
.setTimeout(Duration.ofMinutes(30))
.execute();
- new UnixPath(compressedCoreFile).setGroup(operatorGroupName).setPermissions("rw-r-----");
+ new UnixPath(compressedCoreFile).setGroupId(operatorGroupId).setPermissions("rw-r-----");
Files.delete(coreFile);
Path newCoredumpDirectory = doneCoredumpsPath.resolve(context.containerName().asString());
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpReporter.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpReporter.java
index 57dc3402c6b..0e2bb724f50 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpReporter.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpReporter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.coredump;
/**
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/package-info.java
index 0184ff1189f..d76c340a552 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.node.admin.maintenance.coredump;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/CoredumpCleanupRule.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/CoredumpCleanupRule.java
index 2ad887514e5..8d179b08bfb 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/CoredumpCleanupRule.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/CoredumpCleanupRule.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.disk;
import com.yahoo.vespa.hosted.node.admin.maintenance.coredump.CoredumpHandler;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/DiskCleanup.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/DiskCleanup.java
index 0ce6f1e6b45..c49a555d546 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/DiskCleanup.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/DiskCleanup.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.disk;
import com.yahoo.vespa.hosted.node.admin.component.TaskContext;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/DiskCleanupRule.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/DiskCleanupRule.java
index a4c8229d0d7..ebc47a0038b 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/DiskCleanupRule.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/DiskCleanupRule.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.disk;
import com.yahoo.vespa.hosted.node.admin.task.util.file.FileFinder;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/LinearCleanupRule.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/LinearCleanupRule.java
index 3ef4e2e4f6a..e6fcbf024f3 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/LinearCleanupRule.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/LinearCleanupRule.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.disk;
import java.util.Collection;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/package-info.java
index dff40015522..4daf177ebc9 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.node.admin.maintenance.disk;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/AthenzCredentialsMaintainer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/AthenzCredentialsMaintainer.java
index a0d074c29d9..bd01b320666 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/AthenzCredentialsMaintainer.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/AthenzCredentialsMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.identity;
import com.yahoo.security.KeyAlgorithm;
@@ -211,7 +211,7 @@ public class AthenzCredentialsMaintainer implements CredentialsMaintainer {
EntityBindingsMapper.toAttestationData(signedIdentityDocument),
csr);
EntityBindingsMapper.writeSignedIdentityDocumentToFile(identityDocumentFile, signedIdentityDocument);
- writePrivateKeyAndCertificate(context.vespaUserOnHost(), privateKeyFile, keyPair.getPrivate(),
+ writePrivateKeyAndCertificate(context.userNamespace().vespaUserIdOnHost(), privateKeyFile, keyPair.getPrivate(),
certificateFile, instanceIdentity.certificate());
context.log(logger, "Instance successfully registered and credentials written to file");
}
@@ -239,7 +239,7 @@ public class AthenzCredentialsMaintainer implements CredentialsMaintainer {
context.identity(),
identityDocument.providerUniqueId().asDottedString(),
csr);
- writePrivateKeyAndCertificate(context.vespaUserOnHost(), privateKeyFile, keyPair.getPrivate(),
+ writePrivateKeyAndCertificate(context.userNamespace().vespaUserIdOnHost(), privateKeyFile, keyPair.getPrivate(),
certificateFile, instanceIdentity.certificate());
context.log(logger, "Instance successfully refreshed and credentials written to file");
} catch (ZtsClientException e) {
@@ -256,20 +256,20 @@ public class AthenzCredentialsMaintainer implements CredentialsMaintainer {
}
- private static void writePrivateKeyAndCertificate(String vespaUserOnHost,
+ private static void writePrivateKeyAndCertificate(int vespaUidOnHost,
Path privateKeyFile,
PrivateKey privateKey,
Path certificateFile,
X509Certificate certificate) {
- writeFile(privateKeyFile, vespaUserOnHost, KeyUtils.toPem(privateKey));
- writeFile(certificateFile, vespaUserOnHost, X509CertificateUtils.toPem(certificate));
+ writeFile(privateKeyFile, vespaUidOnHost, KeyUtils.toPem(privateKey));
+ writeFile(certificateFile, vespaUidOnHost, X509CertificateUtils.toPem(certificate));
}
- private static void writeFile(Path path, String vespaUserOnHost, String utf8Content) {
+ private static void writeFile(Path path, int vespaUidOnHost, String utf8Content) {
new UnixPath(path.toString() + ".tmp")
.deleteIfExists()
.createNewFile("r--------")
- .setOwner(vespaUserOnHost)
+ .setOwnerId(vespaUidOnHost)
.writeUtf8File(utf8Content)
.atomicMove(path);
}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/package-info.java
index 7ee04a33b05..e400c1f776a 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/identity/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/package-info.java
index f868d657795..a8c13a58cca 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.node.admin.maintenance;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/AbstractProducer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/AbstractProducer.java
new file mode 100644
index 00000000000..6bcf41b89c2
--- /dev/null
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/AbstractProducer.java
@@ -0,0 +1,68 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.node.admin.maintenance.servicedump;
+
+import com.yahoo.vespa.hosted.node.admin.container.ContainerOperations;
+import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext;
+import com.yahoo.vespa.hosted.node.admin.task.util.process.CommandResult;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+
+/**
+ * @author bjorncs
+ */
+abstract class AbstractProducer implements ArtifactProducer {
+
+ private final Logger log = Logger.getLogger(getClass().getName());
+
+ private final ContainerOperations container;
+
+ protected AbstractProducer(ContainerOperations container) { this.container = container; }
+
+ protected ContainerOperations container() { return container; }
+
+ protected CommandResult executeCommand(NodeAgentContext ctx, List<String> command, boolean logOutput) throws IOException {
+ CommandResult result = container.executeCommandInContainerAsRoot(ctx, command.toArray(new String[0]));
+ String cmdString = command.stream().map(s -> "'" + s + "'").collect(Collectors.joining(" ", "\"", "\""));
+ int exitCode = result.getExitCode();
+ String output = result.getOutput().trim();
+ String prefixedOutput = output.contains("\n")
+ ? "\n" + output
+ : (output.isEmpty() ? "<no output>" : output);
+ if (exitCode > 0) {
+ String errorMsg = logOutput
+ ? String.format("Failed to execute %s (exited with code %d): %s", cmdString, exitCode, prefixedOutput)
+ : String.format("Failed to execute %s (exited with code %d)", cmdString, exitCode);
+ throw new IOException(errorMsg);
+ } else {
+ String logMsg = logOutput
+ ? String.format("Executed command %s. Exited with code %d and output: %s", cmdString, exitCode, prefixedOutput)
+ : String.format("Executed command %s. Exited with code %d.", cmdString, exitCode);
+ ctx.log(log, logMsg);
+ }
+ return result;
+ }
+
+ protected int findVespaServicePid(NodeAgentContext ctx, String configId) throws IOException {
+ Path findPidBinary = ctx.pathInNodeUnderVespaHome("libexec/vespa/find-pid");
+ CommandResult findPidResult = executeCommand(ctx, List.of(findPidBinary.toString(), configId), true);
+ return Integer.parseInt(findPidResult.getOutput());
+ }
+
+ protected double duration(NodeAgentContext ctx, ServiceDumpReport.DumpOptions options, double defaultValue) {
+ double duration = options != null && options.duration() != null && options.duration() > 0
+ ? options.duration() : defaultValue;
+ double maxDuration = 300;
+ if (duration > maxDuration) {
+ ctx.log(log, Level.WARNING,
+ String.format("Specified duration %.3fs longer than max allowed (%.3fs)", duration, maxDuration));
+ return maxDuration;
+ }
+ return duration;
+ }
+
+}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/ArtifactProducer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/ArtifactProducer.java
new file mode 100644
index 00000000000..83e83f1f4d2
--- /dev/null
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/ArtifactProducer.java
@@ -0,0 +1,22 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.node.admin.maintenance.servicedump;
+
+import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext;
+import com.yahoo.vespa.hosted.node.admin.task.util.file.UnixPath;
+
+import java.io.IOException;
+
+/**
+ * Produces service dump artifacts.
+ *
+ * @author bjorncs
+ */
+interface ArtifactProducer {
+
+ String name();
+
+ void produceArtifact(NodeAgentContext context, String configId, ServiceDumpReport.DumpOptions options,
+ UnixPath resultDirectoryInNode) throws IOException;
+
+
+}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/JavaFlightRecorder.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/JavaFlightRecorder.java
new file mode 100644
index 00000000000..4d2b9d10069
--- /dev/null
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/JavaFlightRecorder.java
@@ -0,0 +1,51 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.node.admin.maintenance.servicedump;
+
+import com.yahoo.yolean.concurrent.Sleeper;
+import com.yahoo.vespa.hosted.node.admin.container.ContainerOperations;
+import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext;
+import com.yahoo.vespa.hosted.node.admin.task.util.file.UnixPath;
+
+import java.io.IOException;
+import java.time.Duration;
+import java.util.List;
+
+/**
+ * Creates a Java Flight Recorder dump.
+ *
+ * @author bjorncs
+ */
+class JavaFlightRecorder extends AbstractProducer {
+
+ private final Sleeper sleeper;
+
+ JavaFlightRecorder(ContainerOperations container, Sleeper sleeper) {
+ super(container);
+ this.sleeper = sleeper;
+ }
+
+ static String NAME = "jfr-recording";
+
+ @Override public String name() { return NAME; }
+
+ @Override
+ public void produceArtifact(NodeAgentContext ctx, String configId, ServiceDumpReport.DumpOptions options,
+ UnixPath resultDirectoryInNode) throws IOException {
+ int pid = findVespaServicePid(ctx, configId);
+ int seconds = (int) (duration(ctx, options, 30.0));
+ UnixPath outputFile = resultDirectoryInNode.resolve("recording.jfr");
+ List<String> startCommand = List.of("jcmd", Integer.toString(pid), "JFR.start", "name=host-admin",
+ "path-to-gc-roots=true", "settings=profile", "filename=" + outputFile, "duration=" + seconds + "s");
+ executeCommand(ctx, startCommand, true);
+ sleeper.sleep(Duration.ofSeconds(seconds).plusSeconds(1));
+ int maxRetries = 10;
+ List<String> checkCommand = List.of("jcmd", Integer.toString(pid), "JFR.check", "name=host-admin");
+ for (int i = 0; i < maxRetries; i++) {
+ boolean stillRunning = executeCommand(ctx, checkCommand, true).getOutputLines().stream()
+ .anyMatch(l -> l.contains("name=host-admin") && l.contains("running"));
+ if (!stillRunning) return;
+ sleeper.sleep(Duration.ofSeconds(1));
+ }
+ throw new IOException("Failed to wait for JFR dump to complete after " + maxRetries + " retries");
+ }
+}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/JvmDumpProducer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/JvmDumpProducer.java
new file mode 100644
index 00000000000..5cbbf304bb8
--- /dev/null
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/JvmDumpProducer.java
@@ -0,0 +1,30 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.node.admin.maintenance.servicedump;
+
+import com.yahoo.vespa.hosted.node.admin.container.ContainerOperations;
+import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext;
+import com.yahoo.vespa.hosted.node.admin.task.util.file.UnixPath;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * Creates a dump of JVM based Vespa services using vespa-jvm-dumper
+ *
+ * @author bjorncs
+ */
+class JvmDumpProducer extends AbstractProducer {
+
+ JvmDumpProducer(ContainerOperations container) { super(container); }
+
+ public static String NAME = "jvm-dump";
+
+ @Override public String name() { return NAME; }
+
+ @Override
+ public void produceArtifact(NodeAgentContext context, String configId, ServiceDumpReport.DumpOptions options,
+ UnixPath resultDirectoryInNode) throws IOException {
+ UnixPath vespaJvmDumper = new UnixPath(context.pathInNodeUnderVespaHome("bin/vespa-jvm-dumper"));
+ executeCommand(context, List.of(vespaJvmDumper.toString(), configId, resultDirectoryInNode.toString()), true);
+ }
+}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/PerfReportProducer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/PerfReportProducer.java
new file mode 100644
index 00000000000..1370f09acac
--- /dev/null
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/PerfReportProducer.java
@@ -0,0 +1,40 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.node.admin.maintenance.servicedump;
+
+import com.yahoo.vespa.hosted.node.admin.container.ContainerOperations;
+import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext;
+import com.yahoo.vespa.hosted.node.admin.task.util.file.UnixPath;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author bjorncs
+ */
+class PerfReportProducer extends AbstractProducer {
+
+ public static String NAME = "perf-report";
+
+ PerfReportProducer(ContainerOperations container) { super(container); }
+
+ @Override public String name() { return NAME; }
+
+ @Override
+ public void produceArtifact(NodeAgentContext context, String configId, ServiceDumpReport.DumpOptions options,
+ UnixPath resultDirectoryInNode) throws IOException {
+ int pid = findVespaServicePid(context, configId);
+ int duration = (int) duration(context, options, 30.0);
+ List<String> perfRecordCommand = new ArrayList<>(List.of("perf", "record"));
+ if (options != null && Boolean.TRUE.equals(options.callGraphRecording())) {
+ perfRecordCommand.add("-g");
+ }
+ String recordFile = resultDirectoryInNode.resolve("perf-record.bin").toString();
+ perfRecordCommand.addAll(
+ List.of("--output=" + recordFile,
+ "--pid=" + pid, "sleep", Integer.toString(duration)));
+ executeCommand(context, perfRecordCommand, true);
+ String perfReportFile = resultDirectoryInNode.resolve("perf-report.txt").toString();
+ executeCommand(context, List.of("bash", "-c", "perf report --input=" + recordFile + " > " + perfReportFile), true);
+ }
+}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/ServiceDumpReport.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/ServiceDumpReport.java
new file mode 100644
index 00000000000..09fac496b19
--- /dev/null
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/ServiceDumpReport.java
@@ -0,0 +1,133 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.node.admin.maintenance.servicedump;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonGetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.reports.BaseReport;
+
+import java.net.URI;
+import java.time.Instant;
+import java.util.List;
+
+/**
+ * JSON representation of Vespa service dump report.
+ *
+ * @author bjorncs
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+class ServiceDumpReport extends BaseReport {
+
+ public static final String REPORT_ID = "serviceDump";
+
+ private static final String STARTED_AT_FIELD = "startedAt";
+ private static final String COMPLETED_AT_FIELD = "completedAt";
+ private static final String FAILED_AT_FIELD = "failedAt";
+ private static final String LOCATION_FIELD = "location";
+ private static final String CONFIG_ID_FIELD = "configId";
+ private static final String EXPIRE_AT_FIELD = "expireAt";
+ private static final String ERROR_FIELD = "error";
+ private static final String ARTIFACTS_FIELD = "artifacts";
+ private static final String DUMP_OPTIONS_FIELD = "dumpOptions";
+
+ private final Long startedAt;
+ private final Long completedAt;
+ private final Long failedAt;
+ private final String location;
+ private final String configId;
+ private final Long expireAt;
+ private final String error;
+ private final List<String> artifacts;
+ private final DumpOptions dumpOptions;
+
+ @JsonCreator
+ public ServiceDumpReport(@JsonProperty(CREATED_FIELD) Long createdAt,
+ @JsonProperty(STARTED_AT_FIELD) Long startedAt,
+ @JsonProperty(COMPLETED_AT_FIELD) Long completedAt,
+ @JsonProperty(FAILED_AT_FIELD) Long failedAt,
+ @JsonProperty(LOCATION_FIELD) String location,
+ @JsonProperty(CONFIG_ID_FIELD) String configId,
+ @JsonProperty(EXPIRE_AT_FIELD) Long expireAt,
+ @JsonProperty(ERROR_FIELD) String error,
+ @JsonProperty(ARTIFACTS_FIELD) List<String> artifacts,
+ @JsonProperty(DUMP_OPTIONS_FIELD) DumpOptions dumpOptions) {
+ super(createdAt, null);
+ this.startedAt = startedAt;
+ this.completedAt = completedAt;
+ this.failedAt = failedAt;
+ this.location = location;
+ this.configId = configId;
+ this.expireAt = expireAt;
+ this.error = error;
+ this.artifacts = artifacts;
+ this.dumpOptions = dumpOptions;
+ }
+
+ public static ServiceDumpReport createRequestReport(Instant createdAt, Instant expireAt, String configId,
+ List<String> artifacts, DumpOptions options) {
+ return new ServiceDumpReport(
+ createdAt.toEpochMilli(), null, null, null, null, configId,
+ expireAt != null ? expireAt.toEpochMilli() : null, null, artifacts, options);
+ }
+
+ public static ServiceDumpReport createStartedReport(ServiceDumpReport request, Instant startedAt) {
+ return new ServiceDumpReport(
+ request.getCreatedMillisOrNull(), startedAt.toEpochMilli(), null, null, null, request.configId(),
+ request.expireAt(), null, request.artifacts(), request.dumpOptions());
+ }
+
+ public static ServiceDumpReport createSuccessReport(
+ ServiceDumpReport request, Instant startedAt, Instant completedAt, URI location) {
+ return new ServiceDumpReport(
+ request.getCreatedMillisOrNull(), startedAt.toEpochMilli(), completedAt.toEpochMilli(), null,
+ location.toString(), request.configId(), request.expireAt(), null, request.artifacts(),
+ request.dumpOptions());
+ }
+
+ public static ServiceDumpReport createErrorReport(
+ ServiceDumpReport request, Instant startedAt, Instant failedAt, String message) {
+ return new ServiceDumpReport(
+ request.getCreatedMillisOrNull(), startedAt.toEpochMilli(), null, failedAt.toEpochMilli(), null,
+ request.configId(), request.expireAt(), message, request.artifacts(), request.dumpOptions());
+ }
+
+ @JsonGetter(STARTED_AT_FIELD) public Long startedAt() { return startedAt; }
+ @JsonGetter(COMPLETED_AT_FIELD) public Long completedAt() { return completedAt; }
+ @JsonGetter(FAILED_AT_FIELD) public Long failedAt() { return failedAt; }
+ @JsonGetter(LOCATION_FIELD) public String location() { return location; }
+ @JsonGetter(CONFIG_ID_FIELD) public String configId() { return configId; }
+ @JsonGetter(EXPIRE_AT_FIELD) public Long expireAt() { return expireAt; }
+ @JsonGetter(ERROR_FIELD) public String error() { return error; }
+ @JsonGetter(ARTIFACTS_FIELD) public List<String> artifacts() { return artifacts; }
+ @JsonGetter(DUMP_OPTIONS_FIELD) public DumpOptions dumpOptions() { return dumpOptions; }
+
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ @JsonIgnoreProperties(ignoreUnknown = true)
+ public static class DumpOptions {
+
+ private static final String CALL_GRAPH_RECORDING_FIELD = "callGraphRecording";
+ private static final String DURATION_FIELD = "duration";
+
+ private final Boolean callGraphRecording;
+ private final Double duration;
+
+ @JsonCreator
+ public DumpOptions(@JsonProperty(CALL_GRAPH_RECORDING_FIELD) Boolean callGraphRecording,
+ @JsonProperty(DURATION_FIELD) Double duration) {
+ this.callGraphRecording = callGraphRecording;
+ this.duration = duration;
+ }
+
+ @JsonGetter(CALL_GRAPH_RECORDING_FIELD) public Boolean callGraphRecording() { return callGraphRecording; }
+ @JsonGetter(DURATION_FIELD) public Double duration() { return duration; }
+ }
+
+ @JsonIgnore public boolean isCompletedOrFailed() { return !isNullTimestamp(failedAt) || !isNullTimestamp(completedAt); }
+
+ public static boolean isNullTimestamp(Long timestamp) { return timestamp == null || timestamp == 0; }
+
+}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumper.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumper.java
new file mode 100644
index 00000000000..34e5cdf2ec7
--- /dev/null
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumper.java
@@ -0,0 +1,13 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.node.admin.maintenance.servicedump;
+
+import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext;
+
+/**
+ * @author bjorncs
+ */
+public interface VespaServiceDumper {
+ void processServiceDumpRequest(NodeAgentContext context);
+
+ VespaServiceDumper DUMMY_INSTANCE = context -> {};
+}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImpl.java
new file mode 100644
index 00000000000..a202fb7acd0
--- /dev/null
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImpl.java
@@ -0,0 +1,185 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.node.admin.maintenance.servicedump;
+
+import com.yahoo.yolean.concurrent.Sleeper;
+import com.yahoo.text.Lowercase;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttributes;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeRepository;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
+import com.yahoo.vespa.hosted.node.admin.container.ContainerOperations;
+import com.yahoo.vespa.hosted.node.admin.maintenance.sync.SyncClient;
+import com.yahoo.vespa.hosted.node.admin.maintenance.sync.SyncFileInfo;
+import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext;
+import com.yahoo.vespa.hosted.node.admin.task.util.file.FileFinder;
+import com.yahoo.vespa.hosted.node.admin.task.util.file.UnixPath;
+
+import java.net.URI;
+import java.time.Clock;
+import java.time.Instant;
+import java.time.temporal.ChronoUnit;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+
+import static com.yahoo.vespa.hosted.node.admin.maintenance.servicedump.ServiceDumpReport.isNullTimestamp;
+
+/**
+ * Generates dumps for Vespa services and uploads resulting files to S3.
+ *
+ * @author bjorncs
+ */
+public class VespaServiceDumperImpl implements VespaServiceDumper {
+
+ private static final Logger log = Logger.getLogger(VespaServiceDumperImpl.class.getName());
+
+ private final ContainerOperations container;
+ private final SyncClient syncClient;
+ private final NodeRepository nodeRepository;
+ private final Clock clock;
+ private final Map<String, ArtifactProducer> artifactProducers;
+
+ public VespaServiceDumperImpl(ContainerOperations container, SyncClient syncClient, NodeRepository nodeRepository) {
+ this(container, syncClient, nodeRepository, Clock.systemUTC(), Sleeper.DEFAULT);
+ }
+
+ // For unit testing
+ VespaServiceDumperImpl(ContainerOperations container, SyncClient syncClient, NodeRepository nodeRepository,
+ Clock clock, Sleeper sleeper) {
+ this.container = container;
+ this.syncClient = syncClient;
+ this.nodeRepository = nodeRepository;
+ this.clock = clock;
+ List<AbstractProducer> producers = List.of(
+ new JvmDumpProducer(container),
+ new PerfReportProducer(container),
+ new JavaFlightRecorder(container, sleeper));
+ this.artifactProducers = producers.stream()
+ .collect(Collectors.toMap(ArtifactProducer::name, Function.identity()));
+ }
+
+ @Override
+ public void processServiceDumpRequest(NodeAgentContext context) {
+ Instant startedAt = clock.instant();
+ NodeSpec nodeSpec = context.node();
+ ServiceDumpReport request = nodeSpec.reports().getReport(ServiceDumpReport.REPORT_ID, ServiceDumpReport.class)
+ .orElse(null);
+ if (request == null || request.isCompletedOrFailed()) {
+ context.log(log, Level.FINE, "No service dump requested or dump already completed/failed");
+ return;
+ }
+ if (isNullTimestamp(request.getCreatedMillisOrNull())) {
+ handleFailure(context, request, startedAt, "'createdMillis' is missing or null");
+ return;
+ }
+ String configId = request.configId();
+ if (configId == null) {
+ handleFailure(context, request, startedAt, "Service config id is missing from request");
+ return;
+ }
+ Instant expiry = expireAt(startedAt, request);
+ if (expiry.isBefore(startedAt)) {
+ handleFailure(context, request, startedAt, "Request already expired");
+ return;
+ }
+ List<String> artifactTypes = request.artifacts();
+ if (artifactTypes == null || artifactTypes.isEmpty()) {
+ handleFailure(context, request, startedAt, "No artifacts requested");
+ return;
+ }
+ UnixPath directoryInNode = new UnixPath(context.pathInNodeUnderVespaHome("tmp/vespa-service-dump"));
+ UnixPath directoryOnHost = new UnixPath(context.pathOnHostFromPathInNode(directoryInNode.toPath()));
+ try {
+ context.log(log, Level.INFO,
+ "Creating service dump for " + configId + " requested at "
+ + Instant.ofEpochMilli(request.getCreatedMillisOrNull()));
+ storeReport(context, ServiceDumpReport.createStartedReport(request, startedAt));
+ if (directoryOnHost.exists()) {
+ context.log(log, Level.INFO, "Removing existing directory '" + directoryOnHost +"'.");
+ directoryOnHost.deleteRecursively();
+ }
+ context.log(log, Level.INFO, "Creating '" + directoryOnHost +"'.");
+ directoryOnHost.createDirectory();
+ directoryOnHost.setPermissions("rwxrwxrwx");
+ List<SyncFileInfo> files = new ArrayList<>();
+ URI destination = serviceDumpDestination(nodeSpec, createDumpId(request));
+ for (String artifactType : artifactTypes) {
+ ArtifactProducer producer = artifactProducers.get(artifactType);
+ if (producer == null) {
+ String supportedValues = String.join(",", artifactProducers.keySet());
+ handleFailure(context, request, startedAt, "No artifact producer exists for '" + artifactType + "'. " +
+ "Following values are allowed: " + supportedValues);
+ return;
+ }
+ context.log(log, "Producing artifact of type '" + artifactType + "'");
+ UnixPath producerDirectoryOnHost = directoryOnHost.resolve(artifactType);
+ producerDirectoryOnHost.createDirectory();
+ producerDirectoryOnHost.setPermissions("rwxrwxrwx");
+ UnixPath producerDirectoryInNode = directoryInNode.resolve(artifactType);
+ producer.produceArtifact(context, configId, request.dumpOptions(), producerDirectoryInNode);
+ collectArtifactFilesToUpload(files, producerDirectoryOnHost, destination.resolve(artifactType + '/'), expiry);
+ }
+ context.log(log, Level.INFO, "Uploading files with destination " + destination + " and expiry " + expiry);
+ if (!syncClient.sync(context, files, Integer.MAX_VALUE)) {
+ handleFailure(context, request, startedAt, "Unable to upload all files");
+ return;
+ }
+ context.log(log, Level.INFO, "Upload complete");
+ storeReport(context, ServiceDumpReport.createSuccessReport(request, startedAt, clock.instant(), destination));
+ } catch (Exception e) {
+ handleFailure(context, request, startedAt, e);
+ } finally {
+ if (directoryOnHost.exists()) {
+ context.log(log, Level.INFO, "Deleting directory '" + directoryOnHost +"'.");
+ directoryOnHost.deleteRecursively();
+ }
+ }
+ }
+
+ private void collectArtifactFilesToUpload(List<SyncFileInfo> files, UnixPath directoryOnHost, URI destination, Instant expiry) {
+ FileFinder.files(directoryOnHost.toPath()).stream()
+ .flatMap(file -> SyncFileInfo.forServiceDump(destination, file.path(), expiry).stream())
+ .forEach(files::add);
+ }
+
+ private static Instant expireAt(Instant startedAt, ServiceDumpReport request) {
+ return isNullTimestamp(request.expireAt())
+ ? startedAt.plus(7, ChronoUnit.DAYS)
+ : Instant.ofEpochMilli(request.expireAt());
+ }
+
+ private void handleFailure(NodeAgentContext context, ServiceDumpReport request, Instant startedAt, Exception failure) {
+ context.log(log, Level.WARNING, failure.toString(), failure);
+ ServiceDumpReport report = ServiceDumpReport.createErrorReport(request, startedAt, clock.instant(), failure.toString());
+ storeReport(context, report);
+ }
+
+ private void handleFailure(NodeAgentContext context, ServiceDumpReport request, Instant startedAt, String message) {
+ context.log(log, Level.WARNING, message);
+ ServiceDumpReport report = ServiceDumpReport.createErrorReport(request, startedAt, clock.instant(), message);
+ storeReport(context, report);
+ }
+
+ private void storeReport(NodeAgentContext context, ServiceDumpReport report) {
+ NodeAttributes nodeAttributes = new NodeAttributes();
+ nodeAttributes.withReport(ServiceDumpReport.REPORT_ID, report.toJsonNode());
+ nodeRepository.updateNodeAttributes(context.hostname().value(), nodeAttributes);
+ }
+
+ static String createDumpId(ServiceDumpReport request) {
+ String sanitizedConfigId = Lowercase.toLowerCase(request.configId()).replaceAll("[^a-z_0-9]", "-");
+ return sanitizedConfigId + "-" + request.getCreatedMillisOrNull().toString();
+ }
+
+ private static URI serviceDumpDestination(NodeSpec spec, String dumpId) {
+ URI archiveUri = spec.archiveUri()
+ .orElseThrow(() -> new IllegalStateException("Archive URI is missing for " + spec.hostname()));
+ String targetDirectory = "service-dump/" + dumpId + "/";
+ return archiveUri.resolve(targetDirectory);
+ }
+
+
+}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/package-info.java
new file mode 100644
index 00000000000..669d140d230
--- /dev/null
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/package-info.java
@@ -0,0 +1,8 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+/**
+ * @author bjorncs
+ */
+@ExportPackage
+package com.yahoo.vespa.hosted.node.admin.maintenance.servicedump;
+
+import com.yahoo.osgi.annotation.ExportPackage; \ No newline at end of file
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/SyncClient.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/SyncClient.java
index 64684a4b3e7..df30621d725 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/SyncClient.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/SyncClient.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.sync;
import com.yahoo.vespa.hosted.node.admin.component.TaskContext;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/SyncFileInfo.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/SyncFileInfo.java
index cf7f54ae0f5..8b05425d2d9 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/SyncFileInfo.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/SyncFileInfo.java
@@ -1,8 +1,10 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.sync;
import java.net.URI;
import java.nio.file.Path;
+import java.time.Instant;
+import java.util.List;
import java.util.Optional;
/**
@@ -13,11 +15,13 @@ public class SyncFileInfo {
private final Path source;
private final URI destination;
private final Compression uploadCompression;
+ private final Instant expiry;
- private SyncFileInfo(Path source, URI destination, Compression uploadCompression) {
+ private SyncFileInfo(Path source, URI destination, Compression uploadCompression, Instant expiry) {
this.source = source;
this.destination = destination;
this.uploadCompression = uploadCompression;
+ this.expiry = expiry;
}
/** Source path of the file to sync */
@@ -35,6 +39,9 @@ public class SyncFileInfo {
return uploadCompression;
}
+ /** File expiry */
+ public Optional<Instant> expiry() { return Optional.ofNullable(expiry); }
+
public static Optional<SyncFileInfo> forLogFile(URI uri, Path logFile, boolean rotatedOnly) {
String filename = logFile.getFileName().toString();
Compression compression;
@@ -55,7 +62,16 @@ public class SyncFileInfo {
if (dir == null) return Optional.empty();
return Optional.of(new SyncFileInfo(
- logFile, uri.resolve(dir + logFile.getFileName() + compression.extension), compression));
+ logFile, uri.resolve(dir + logFile.getFileName() + compression.extension), compression, null));
+ }
+
+ public static Optional<SyncFileInfo> forServiceDump(URI directory, Path file, Instant expiry) {
+ String filename = file.getFileName().toString();
+ List<String> filesToCompress = List.of(".bin", ".hprof", ".jfr", ".log");
+ Compression compression = filesToCompress.stream().anyMatch(filename::endsWith) ? Compression.ZSTD : Compression.NONE;
+ if (filename.startsWith(".")) return Optional.empty();
+ URI location = directory.resolve(filename + compression.extension);
+ return Optional.of(new SyncFileInfo(file, location, compression, expiry));
}
public enum Compression {
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/ZstdCompressingInputStream.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/ZstdCompressingInputStream.java
index 0cf8eaa9983..280b28e87ca 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/ZstdCompressingInputStream.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/ZstdCompressingInputStream.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.sync;
import com.yahoo.compress.ZstdCompressor;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/package-info.java
index fc197450492..6fb4e0e088c 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author freva
*/
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/ConvergenceException.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/ConvergenceException.java
index 8c1663bcf49..16a5eb022ad 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/ConvergenceException.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/ConvergenceException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.nodeadmin;
/**
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdmin.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdmin.java
index e510618c5a4..c6b4272d7ce 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdmin.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdmin.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.nodeadmin;
import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImpl.java
index 8c8f3d88a71..3d7a3b73ccd 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.nodeadmin;
import com.yahoo.vespa.hosted.node.admin.container.metrics.Counter;
@@ -79,7 +79,7 @@ public class NodeAdminImpl implements NodeAdmin {
@Override
public void refreshContainersToRun(Set<NodeAgentContext> nodeAgentContexts) {
Map<String, NodeAgentContext> nodeAgentContextsByHostname = nodeAgentContexts.stream()
- .collect(Collectors.toMap(nac -> nac.hostname().value(), Function.identity()));
+ .collect(Collectors.toMap(NodeAdminImpl::nodeAgentId, Function.identity()));
// Stop and remove NodeAgents that should no longer be running
diff(nodeAgentWithSchedulerByHostname.keySet(), nodeAgentContextsByHostname.keySet())
@@ -222,4 +222,14 @@ public class NodeAdminImpl implements NodeAdmin {
NodeAgent nodeAgent = nodeAgentFactory.create(contextManager, context);
return new NodeAgentWithScheduler(nodeAgent, contextManager);
}
+
+ private static String nodeAgentId(NodeAgentContext nac) {
+ // NodeAgentImpl has some internal state that should not be reused when the same hostname is re-allocated
+ // to a different application/cluster, solve this by including reservation timestamp in the key.
+ return nac.hostname().value() + "-" + nac.node().events().stream()
+ .filter(event -> "reserved".equals(event.type()))
+ .findFirst()
+ .map(event -> Long.toString(event.at().toEpochMilli()))
+ .orElse("");
+ }
}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java
index c24b2261f42..53c9e741f59 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.nodeadmin;
import com.yahoo.concurrent.ThreadFactoryFactory;
@@ -102,6 +102,8 @@ public class NodeAdminStateUpdater {
* with respect to: freeze, Orchestrator, and services running.
*/
public void converge(State wantedState) {
+ NodeSpec node = nodeRepository.getNode(hostHostname);
+ boolean hostIsActiveInNR = node.state() == NodeState.active;
if (wantedState == RESUMED) {
adjustNodeAgentsToRunFromNodeRepository();
} else if (currentState == TRANSITIONING && nodeAdmin.subsystemFreezeDuration().compareTo(FREEZE_CONVERGENCE_TIMEOUT) > 0) {
@@ -110,21 +112,18 @@ public class NodeAdminStateUpdater {
adjustNodeAgentsToRunFromNodeRepository();
nodeAdmin.setFrozen(false);
- NodeState currentNodeState = nodeRepository.getNode(hostHostname).state();
- if (currentNodeState == NodeState.active) orchestrator.resume(hostHostname);
+ if (hostIsActiveInNR) orchestrator.resume(hostHostname);
throw new ConvergenceException("Timed out trying to freeze all nodes: will force an unfrozen tick");
}
- if (currentState == wantedState) return;
+ boolean wantFrozen = wantedState != RESUMED;
+ if (currentState == wantedState && wantFrozen == node.orchestratorStatus().isSuspended()) return;
currentState = TRANSITIONING;
- boolean wantFrozen = wantedState != RESUMED;
- if (!nodeAdmin.setFrozen(wantFrozen)) {
+ if (!nodeAdmin.setFrozen(wantFrozen))
throw new ConvergenceException("NodeAdmin is not yet " + (wantFrozen ? "frozen" : "unfrozen"));
- }
- boolean hostIsActiveInNR = nodeRepository.getNode(hostHostname).state() == NodeState.active;
switch (wantedState) {
case RESUMED:
if (hostIsActiveInNR) orchestrator.resume(hostHostname);
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/package-info.java
index e607a270bc8..4d15b333858 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.node.admin.nodeadmin;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/ContainerData.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/ContainerData.java
index 5e56b088d76..e32641c0276 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/ContainerData.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/ContainerData.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.nodeagent;
import java.nio.file.Path;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgent.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgent.java
index 341b4438f2c..5b9bcee83bf 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgent.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgent.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.nodeagent;
/**
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContext.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContext.java
index 479f2342773..c585bd14e94 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContext.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContext.java
@@ -42,11 +42,7 @@ public interface NodeAgentContext extends TaskContext {
ZoneApi zone();
- String vespaUser();
-
- String vespaGroup();
-
- String vespaUserOnHost();
+ UserNamespace userNamespace();
default boolean isDisabled(NodeAgentTask task) {
return false;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextFactory.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextFactory.java
index 3e0991d4357..4e40db60602 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextFactory.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.nodeagent;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.Acl;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java
index c0406f91c30..2751d4d96b0 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.nodeagent;
import com.yahoo.config.provision.ApplicationId;
@@ -43,9 +43,7 @@ public class NodeAgentContextImpl implements NodeAgentContext {
private final FileSystem fileSystem;
private final Path pathToNodeRootOnHost;
private final Path pathToVespaHome;
- private final String vespaUser;
- private final String vespaGroup;
- private final String vespaUserOnHost;
+ private final UserNamespace userNamespace;
private final double cpuSpeedup;
private final Set<NodeAgentTask> disabledNodeAgentTasks;
private final Optional<ApplicationId> hostExclusiveTo;
@@ -54,7 +52,7 @@ public class NodeAgentContextImpl implements NodeAgentContext {
ContainerNetworkMode containerNetworkMode, ZoneApi zone,
FileSystem fileSystem, FlagSource flagSource,
Path pathToContainerStorage, Path pathToVespaHome,
- String vespaUser, String vespaGroup, String vespaUserOnHost, double cpuSpeedup,
+ UserNamespace userNamespace, double cpuSpeedup,
Optional<ApplicationId> hostExclusiveTo) {
if (cpuSpeedup <= 0)
throw new IllegalArgumentException("cpuSpeedUp must be positive, was: " + cpuSpeedup);
@@ -69,9 +67,7 @@ public class NodeAgentContextImpl implements NodeAgentContext {
this.pathToNodeRootOnHost = requireValidPath(pathToContainerStorage).resolve(containerName.asString());
this.pathToVespaHome = requireValidPath(pathToVespaHome);
this.logPrefix = containerName.asString() + ": ";
- this.vespaUser = vespaUser;
- this.vespaGroup = vespaGroup;
- this.vespaUserOnHost = vespaUserOnHost;
+ this.userNamespace = Objects.requireNonNull(userNamespace);
this.cpuSpeedup = cpuSpeedup;
this.disabledNodeAgentTasks = NodeAgentTask.fromString(
PermanentFlags.DISABLED_HOST_ADMIN_TASKS.bindTo(flagSource).with(FetchVector.Dimension.HOSTNAME, node.hostname()).value());
@@ -109,18 +105,8 @@ public class NodeAgentContextImpl implements NodeAgentContext {
}
@Override
- public String vespaUser() {
- return vespaUser;
- }
-
- @Override
- public String vespaGroup() {
- return vespaGroup;
- }
-
- @Override
- public String vespaUserOnHost() {
- return vespaUserOnHost;
+ public UserNamespace userNamespace() {
+ return userNamespace;
}
@Override
@@ -202,9 +188,6 @@ public class NodeAgentContextImpl implements NodeAgentContext {
", zone=" + zone +
", pathToNodeRootOnHost=" + pathToNodeRootOnHost +
", pathToVespaHome=" + pathToVespaHome +
- ", vespaUser='" + vespaUser + '\'' +
- ", vespaGroup='" + vespaGroup + '\'' +
- ", vespaUserOnHost='" + vespaUserOnHost + '\'' +
", hostExclusiveTo='" + hostExclusiveTo + '\'' +
'}';
}
@@ -228,9 +211,7 @@ public class NodeAgentContextImpl implements NodeAgentContext {
private AthenzIdentity identity;
private ContainerNetworkMode containerNetworkMode;
private ZoneApi zone;
- private String vespaUser;
- private String vespaGroup;
- private String vespaUserOnHost;
+ private UserNamespace userNamespace;
private FileSystem fileSystem = FileSystems.getDefault();
private FlagSource flagSource;
private double cpuSpeedUp = 1;
@@ -275,18 +256,8 @@ public class NodeAgentContextImpl implements NodeAgentContext {
return this;
}
- public Builder vespaUser(String vespaUser) {
- this.vespaUser = vespaUser;
- return this;
- }
-
- public Builder vespaGroup(String vespaGroup) {
- this.vespaGroup = vespaGroup;
- return this;
- }
-
- public Builder vespaUserOnHost(String vespaUserOnHost) {
- this.vespaUserOnHost = vespaUserOnHost;
+ public Builder userNamespace(UserNamespace userNamespace) {
+ this.userNamespace = userNamespace;
return this;
}
@@ -347,9 +318,7 @@ public class NodeAgentContextImpl implements NodeAgentContext {
Optional.ofNullable(flagSource).orElseGet(InMemoryFlagSource::new),
Optional.ofNullable(containerStorage).orElseGet(() -> fileSystem.getPath("/home/docker/container-storage")),
fileSystem.getPath("/opt/vespa"),
- Optional.ofNullable(vespaUser).orElse("vespa"),
- Optional.ofNullable(vespaGroup).orElse("vespa"),
- Optional.ofNullable(vespaUserOnHost).orElse("container_vespa"),
+ Optional.ofNullable(userNamespace).orElseGet(() -> new UserNamespace(10000, 10000, "vespa", "users", 1000, 100)),
cpuSpeedUp, hostExclusiveTo);
}
}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextManager.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextManager.java
index ad67e13e044..ef294d8bd2e 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextManager.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextManager.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.nodeagent;
import java.time.Clock;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextSupplier.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextSupplier.java
index 65611886f9c..a0b690b7ad4 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextSupplier.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextSupplier.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.nodeagent;
/**
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentFactory.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentFactory.java
index 6ad68d9c4e9..aea6bb4c606 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentFactory.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.nodeagent;
/**
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
index b9855bf3bfc..391aa46716a 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.nodeagent;
import com.yahoo.config.provision.ApplicationId;
@@ -25,6 +25,7 @@ import com.yahoo.vespa.hosted.node.admin.container.RegistryCredentialsProvider;
import com.yahoo.vespa.hosted.node.admin.maintenance.StorageMaintainer;
import com.yahoo.vespa.hosted.node.admin.maintenance.acl.AclMaintainer;
import com.yahoo.vespa.hosted.node.admin.maintenance.identity.CredentialsMaintainer;
+import com.yahoo.vespa.hosted.node.admin.maintenance.servicedump.VespaServiceDumper;
import com.yahoo.vespa.hosted.node.admin.nodeadmin.ConvergenceException;
import java.nio.file.Path;
@@ -68,6 +69,7 @@ public class NodeAgentImpl implements NodeAgent {
private final Clock clock;
private final Duration warmUpDuration;
private final DoubleFlag containerCpuCap;
+ private final VespaServiceDumper serviceDumper;
private Thread loopThread;
private ContainerState containerState = UNKNOWN;
@@ -103,10 +105,11 @@ public class NodeAgentImpl implements NodeAgent {
Orchestrator orchestrator, ContainerOperations containerOperations,
RegistryCredentialsProvider registryCredentialsProvider, StorageMaintainer storageMaintainer,
FlagSource flagSource, List<CredentialsMaintainer> credentialsMaintainers,
- Optional<AclMaintainer> aclMaintainer, Optional<HealthChecker> healthChecker, Clock clock) {
+ Optional<AclMaintainer> aclMaintainer, Optional<HealthChecker> healthChecker, Clock clock,
+ VespaServiceDumper serviceDumper) {
this(contextSupplier, nodeRepository, orchestrator, containerOperations, registryCredentialsProvider,
storageMaintainer, flagSource, credentialsMaintainers, aclMaintainer, healthChecker, clock,
- DEFAULT_WARM_UP_DURATION);
+ DEFAULT_WARM_UP_DURATION, serviceDumper);
}
public NodeAgentImpl(NodeAgentContextSupplier contextSupplier, NodeRepository nodeRepository,
@@ -114,7 +117,7 @@ public class NodeAgentImpl implements NodeAgent {
RegistryCredentialsProvider registryCredentialsProvider, StorageMaintainer storageMaintainer,
FlagSource flagSource, List<CredentialsMaintainer> credentialsMaintainers,
Optional<AclMaintainer> aclMaintainer, Optional<HealthChecker> healthChecker, Clock clock,
- Duration warmUpDuration) {
+ Duration warmUpDuration, VespaServiceDumper serviceDumper) {
this.contextSupplier = contextSupplier;
this.nodeRepository = nodeRepository;
this.orchestrator = orchestrator;
@@ -127,6 +130,7 @@ public class NodeAgentImpl implements NodeAgent {
this.clock = clock;
this.warmUpDuration = warmUpDuration;
this.containerCpuCap = PermanentFlags.CONTAINER_CPU_CAP.bindTo(flagSource);
+ this.serviceDumper = serviceDumper;
}
@Override
@@ -484,6 +488,7 @@ public class NodeAgentImpl implements NodeAgent {
throw new ConvergenceException("Refusing to resume until warm up period ends (" +
(timeLeft.isNegative() ? "next tick" : "in " + timeLeft) + ")");
}
+ serviceDumper.processServiceDumpRequest(context);
// Because it's more important to stop a bad release from rolling out in prod,
// we put the resume call last. So if we fail after updating the node repo attributes
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentScheduler.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentScheduler.java
index 956302dcdcc..2da89f7c351 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentScheduler.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentScheduler.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.nodeagent;
import java.time.Duration;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentTask.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentTask.java
index c29c72657e5..ff9c049456d 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentTask.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentTask.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.nodeagent;
import java.util.Arrays;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/UserNamespace.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/UserNamespace.java
new file mode 100644
index 00000000000..020a8b6c7f6
--- /dev/null
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/UserNamespace.java
@@ -0,0 +1,53 @@
+package com.yahoo.vespa.hosted.node.admin.nodeagent;
+
+/**
+ * @author valerijf
+ */
+public class UserNamespace {
+
+ /** Total number of UID/GID that are mapped for each container */
+ private static final int ID_RANGE = 1 << 16;
+
+ private final int uidOffset;
+ private final int gidOffset;
+ private final String vespaUser;
+ private final String vespaGroup;
+ private final int vespaUserId;
+ private final int vespaGroupId;
+
+ public UserNamespace(int uidOffset, int gidOffset, String vespaUser, String vespaGroup, int vespaUserId, int vespaGroupId) {
+ this.uidOffset = uidOffset;
+ this.gidOffset = gidOffset;
+ this.vespaUser = vespaUser;
+ this.vespaGroup = vespaGroup;
+ this.vespaUserId = vespaUserId;
+ this.vespaGroupId = vespaGroupId;
+ }
+
+ public int userIdOnHost(int userIdInContainer) {
+ assertValidId("User", userIdInContainer);
+ return uidOffset + userIdInContainer;
+ }
+
+ public int groupIdOnHost(int groupIdInContainer) {
+ assertValidId("Group", groupIdInContainer);
+ return gidOffset + groupIdInContainer;
+ }
+
+ int rootUserId() { return 0; }
+ int rootGroupId() { return 0; }
+ int rootUserIdOnHost() { return userIdOnHost(rootUserId()); }
+ int rootGroupIdOnHost() { return groupIdOnHost(rootGroupId()); }
+
+ public String vespaUser() { return vespaUser; }
+ public String vespaGroup() { return vespaGroup; }
+ public int vespaUserId() { return vespaUserId; }
+ public int vespaGroupId() { return vespaGroupId; }
+ public int vespaUserIdOnHost() { return userIdOnHost(vespaUserId()); }
+ public int vespaGroupIdOnHost() { return groupIdOnHost(vespaGroupId()); }
+
+ private static void assertValidId(String type, int id) {
+ if (id < 0) throw new IllegalArgumentException(type + " ID cannot be negative, was " + id);
+ if (id >= ID_RANGE) throw new IllegalArgumentException(type + " ID must be less than " + ID_RANGE + ", was " + id);
+ }
+}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/package-info.java
index cb2cc8589f1..7166aa5f645 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.node.admin.nodeagent;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/package-info.java
index 948dfc070bc..6e529fe8d77 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.node.admin;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/DebugHandlerHelper.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/DebugHandlerHelper.java
index 5bd3d7800e6..275a99a4993 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/DebugHandlerHelper.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/DebugHandlerHelper.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.provider;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/NodeAdminDebugHandler.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/NodeAdminDebugHandler.java
index 7b5eaa2f326..d2928891a53 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/NodeAdminDebugHandler.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/NodeAdminDebugHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.provider;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/package-info.java
index 408ede816e5..601693cfa63 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.node.admin.provider;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Cursor.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Cursor.java
index 85e98052bba..aa42f812d28 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Cursor.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Cursor.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.editor;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/CursorImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/CursorImpl.java
index f5b5c8ae31e..88b406ff15a 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/CursorImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/CursorImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.editor;
import java.util.List;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/FileEditor.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/FileEditor.java
index 9896c86e286..768de5b3c27 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/FileEditor.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/FileEditor.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.editor;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Mark.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Mark.java
index 5de570d5910..8058fecc631 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Mark.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Mark.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.editor;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Match.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Match.java
index a1b5b7e2200..c97620e67c7 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Match.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Match.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.editor;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Position.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Position.java
index f69b850ee91..ff6ebf32b06 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Position.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Position.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.editor;
import javax.annotation.concurrent.Immutable;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/StringEditor.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/StringEditor.java
index b6875c79e18..38582671959 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/StringEditor.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/StringEditor.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.editor;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/TextBuffer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/TextBuffer.java
index 1a224d5fab6..19393054e14 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/TextBuffer.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/TextBuffer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.editor;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/TextBufferImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/TextBufferImpl.java
index e09fc4deec0..7d99c5f5e97 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/TextBufferImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/TextBufferImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.editor;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/TextUtil.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/TextUtil.java
index 410ccbfc880..2ed74c2e26e 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/TextUtil.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/TextUtil.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.editor;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Version.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Version.java
index d40197db470..375f6ae1d2c 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Version.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/Version.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.editor;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/AttributeSync.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/AttributeSync.java
index a781615e44d..f3ac4b7912d 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/AttributeSync.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/AttributeSync.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import com.yahoo.vespa.hosted.node.admin.component.TaskContext;
@@ -22,8 +22,8 @@ public class AttributeSync {
private final UnixPath path;
- private Optional<String> owner = Optional.empty();
- private Optional<String> group = Optional.empty();
+ private Optional<Integer> ownerId = Optional.empty();
+ private Optional<Integer> groupId = Optional.empty();
private Optional<String> permissions = Optional.empty();
public AttributeSync(Path path) {
@@ -39,27 +39,27 @@ public class AttributeSync {
return this;
}
- public Optional<String> getOwner() {
- return owner;
+ public Optional<Integer> ownerId() {
+ return ownerId;
}
- public AttributeSync withOwner(String owner) {
- this.owner = Optional.of(owner);
+ public AttributeSync withOwnerId(int ownerId) {
+ this.ownerId = Optional.of(ownerId);
return this;
}
- public Optional<String> getGroup() {
- return group;
+ public Optional<Integer> groupId() {
+ return groupId;
}
- public AttributeSync withGroup(String group) {
- this.group = Optional.of(group);
+ public AttributeSync withGroupId(int groupId) {
+ this.groupId = Optional.of(groupId);
return this;
}
public AttributeSync with(PartialFileData fileData) {
- owner = fileData.getOwner();
- group = fileData.getGroup();
+ ownerId = fileData.getOwnerId();
+ groupId = fileData.getGroupId();
permissions = fileData.getPermissions();
return this;
}
@@ -74,17 +74,17 @@ public class AttributeSync {
public boolean converge(TaskContext context, FileAttributesCache currentAttributes) {
boolean systemModified = updateAttribute(
context,
- "owner",
- owner,
- () -> currentAttributes.getOrThrow().owner(),
- path::setOwner);
+ "user ID",
+ ownerId,
+ () -> currentAttributes.getOrThrow().ownerId(),
+ path::setOwnerId);
systemModified |= updateAttribute(
context,
- "group",
- group,
- () -> currentAttributes.getOrThrow().group(),
- path::setGroup);
+ "group ID",
+ groupId,
+ () -> currentAttributes.getOrThrow().groupId(),
+ path::setGroupId);
systemModified |= updateAttribute(
context,
@@ -96,16 +96,16 @@ public class AttributeSync {
return systemModified;
}
- private boolean updateAttribute(TaskContext context,
+ private <T> boolean updateAttribute(TaskContext context,
String attributeName,
- Optional<String> wantedValue,
- Supplier<String> currentValueSupplier,
- Consumer<String> valueSetter) {
+ Optional<T> wantedValue,
+ Supplier<T> currentValueSupplier,
+ Consumer<T> valueSetter) {
if (wantedValue.isEmpty()) {
return false;
}
- String currentValue = currentValueSupplier.get();
+ T currentValue = currentValueSupplier.get();
if (Objects.equals(currentValue, wantedValue.get())) {
return false;
}
@@ -114,7 +114,7 @@ public class AttributeSync {
logger,
String.format("Changing %s of %s from %s to %s",
attributeName,
- path.toString(),
+ path,
currentValue,
wantedValue.get()));
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/DiskSize.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/DiskSize.java
index 2a41423f1e7..637790dcf5a 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/DiskSize.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/DiskSize.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import java.util.Locale;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Editor.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Editor.java
index 2b66c5fad2e..88bb1f49582 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Editor.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Editor.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import com.yahoo.vespa.hosted.node.admin.component.TaskContext;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/EditorFactory.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/EditorFactory.java
index a167840a8a6..93ce5a529f0 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/EditorFactory.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/EditorFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import java.nio.file.Path;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileAttributes.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileAttributes.java
index 611e2c32bcd..332b4e61dc1 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileAttributes.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileAttributes.java
@@ -1,28 +1,55 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
-import java.nio.file.attribute.PosixFileAttributes;
+import java.nio.file.attribute.FileTime;
+import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
import java.time.Instant;
+import java.util.Map;
+import java.util.Set;
/**
* This wrapper around PosixFileAttributes.
- *
+ *
* @author hakonhall
*/
public class FileAttributes {
- private final PosixFileAttributes attributes;
- FileAttributes(PosixFileAttributes attributes) {
- this.attributes = attributes;
+ private final Instant lastModifiedTime;
+ private final int ownerId;
+ private final int groupId;
+ private final String permissions;
+ private final boolean isRegularFile;
+ private final boolean isDirectory;
+ private final long size;
+
+ public FileAttributes(Instant lastModifiedTime, int ownerId, int groupId, String permissions, boolean isRegularFile, boolean isDirectory, long size) {
+ this.lastModifiedTime = lastModifiedTime;
+ this.ownerId = ownerId;
+ this.groupId = groupId;
+ this.permissions = permissions;
+ this.isRegularFile = isRegularFile;
+ this.isDirectory = isDirectory;
+ this.size = size;
}
- public Instant lastModifiedTime() { return attributes.lastModifiedTime().toInstant(); }
- public String owner() { return attributes.owner().getName(); }
- public String group() { return attributes.group().getName(); }
- public String permissions() { return PosixFilePermissions.toString(attributes.permissions()); }
- public boolean isRegularFile() { return attributes.isRegularFile(); }
- public boolean isDirectory() { return attributes.isDirectory(); }
- public long size() { return attributes.size(); }
+ public Instant lastModifiedTime() { return lastModifiedTime; }
+ public int ownerId() { return ownerId; }
+ public int groupId() { return groupId; }
+ public String permissions() { return permissions; }
+ public boolean isRegularFile() { return isRegularFile; }
+ public boolean isDirectory() { return isDirectory; }
+ public long size() { return size; }
+
+ @SuppressWarnings("unchecked")
+ static FileAttributes fromAttributes(Map<String, Object> attributes) {
+ return new FileAttributes(
+ ((FileTime) attributes.get("lastModifiedTime")).toInstant(),
+ (int) attributes.get("uid"),
+ (int) attributes.get("gid"),
+ PosixFilePermissions.toString(((Set<PosixFilePermission>) attributes.get("permissions"))),
+ (boolean) attributes.get("isRegularFile"),
+ (boolean) attributes.get("isDirectory"),
+ (long) attributes.get("size"));
+ }
}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileAttributesCache.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileAttributesCache.java
index a35bc844b8f..fcd5e0d0ac0 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileAttributesCache.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileAttributesCache.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import java.util.Optional;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileContentCache.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileContentCache.java
index 974ab68dc1c..296306f0c8b 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileContentCache.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileContentCache.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import java.time.Instant;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileFinder.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileFinder.java
index 52900e35fe2..4caccc36b6f 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileFinder.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileFinder.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import com.yahoo.lang.MutableInteger;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileSync.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileSync.java
index 7a11ecdf6ab..63abce87487 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileSync.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileSync.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import com.yahoo.vespa.hosted.node.admin.component.TaskContext;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileWriter.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileWriter.java
index 57f3417b789..162a5fbbaec 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileWriter.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import com.yahoo.vespa.hosted.node.admin.component.TaskContext;
@@ -43,13 +43,13 @@ public class FileWriter {
public Path path() { return path; }
- public FileWriter withOwner(String owner) {
- fileDataBuilder.withOwner(owner);
+ public FileWriter withOwnerId(int ownerId) {
+ fileDataBuilder.withOwnerId(ownerId);
return this;
}
- public FileWriter withGroup(String group) {
- fileDataBuilder.withGroup(group);
+ public FileWriter withGroupId(int groupId) {
+ fileDataBuilder.withGroupId(groupId);
return this;
}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/IOExceptionUtil.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/IOExceptionUtil.java
index 4588a9edcf4..1f757bd6aba 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/IOExceptionUtil.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/IOExceptionUtil.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import com.yahoo.yolean.Exceptions;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/LineEdit.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/LineEdit.java
index 88bf25c65a9..8015cc27fd4 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/LineEdit.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/LineEdit.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import javax.annotation.concurrent.Immutable;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/LineEditor.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/LineEditor.java
index de43eb57074..30453ac94bc 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/LineEditor.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/LineEditor.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import java.util.List;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/MakeDirectory.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/MakeDirectory.java
index e2366470f61..61c4e7475a6 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/MakeDirectory.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/MakeDirectory.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import com.yahoo.vespa.hosted.node.admin.component.TaskContext;
@@ -34,8 +34,8 @@ public class MakeDirectory {
*/
public MakeDirectory createParents() { this.createParents = true; return this; }
- public MakeDirectory withOwner(String owner) { attributeSync.withOwner(owner); return this; }
- public MakeDirectory withGroup(String group) { attributeSync.withGroup(group); return this; }
+ public MakeDirectory withOwnerId(int ownerId) { attributeSync.withOwnerId(ownerId); return this; }
+ public MakeDirectory withGroupId(int groupId) { attributeSync.withGroupId(groupId); return this; }
public MakeDirectory withPermissions(String permissions) {
attributeSync.withPermissions(permissions);
return this;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/PartialFileData.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/PartialFileData.java
index 0fae9b17eba..2ce663f80da 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/PartialFileData.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/PartialFileData.java
@@ -1,5 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import java.nio.charset.Charset;
@@ -14,8 +13,8 @@ import java.util.Optional;
// @Immutable
public class PartialFileData {
private final Optional<byte[]> content;
- private final Optional<String> owner;
- private final Optional<String> group;
+ private final Optional<Integer> ownerId;
+ private final Optional<Integer> groupId;
private final Optional<String> permissions;
public static Builder builder() {
@@ -23,12 +22,12 @@ public class PartialFileData {
}
private PartialFileData(Optional<byte[]> content,
- Optional<String> owner,
- Optional<String> group,
+ Optional<Integer> ownerId,
+ Optional<Integer> groupId,
Optional<String> permissions) {
this.content = content;
- this.owner = owner;
- this.group = group;
+ this.ownerId = ownerId;
+ this.groupId = groupId;
this.permissions = permissions;
}
@@ -36,12 +35,12 @@ public class PartialFileData {
return content;
}
- public Optional<String> getOwner() {
- return owner;
+ public Optional<Integer> getOwnerId() {
+ return ownerId;
}
- public Optional<String> getGroup() {
- return group;
+ public Optional<Integer> getGroupId() {
+ return groupId;
}
public Optional<String> getPermissions() {
@@ -50,19 +49,19 @@ public class PartialFileData {
public static class Builder {
private Optional<byte[]> content = Optional.empty();
- private Optional<String> owner = Optional.empty();
- private Optional<String> group = Optional.empty();
+ private Optional<Integer> ownerId = Optional.empty();
+ private Optional<Integer> groupId = Optional.empty();
private Optional<String> permissions = Optional.empty();
public Builder withContent(byte[] content) { this.content = Optional.of(content); return this; }
public Builder withContent(String content, Charset charset) { return withContent(content.getBytes(charset)); }
public Builder withContent(String content) { return withContent(content, StandardCharsets.UTF_8); }
- public Builder withOwner(String owner) { this.owner = Optional.of(owner); return this; }
- public Builder withGroup(String group) { this.group = Optional.of(group); return this; }
+ public Builder withOwnerId(int ownerId) { this.ownerId = Optional.of(ownerId); return this; }
+ public Builder withGroupId(int groupId) { this.groupId = Optional.of(groupId); return this; }
public Builder withPermissions(String permissions) { this.permissions = Optional.of(permissions); return this; }
public PartialFileData create() {
- return new PartialFileData(content, owner, group, permissions);
+ return new PartialFileData(content, ownerId, groupId, permissions);
}
}
}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/StoredInteger.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/StoredInteger.java
index 2d52622db0a..e2a6bd1b83a 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/StoredInteger.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/StoredInteger.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import com.yahoo.vespa.hosted.node.admin.component.TaskContext;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Template.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Template.java
index 1ab4a30dc58..26d97d06724 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Template.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/Template.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import org.apache.velocity.VelocityContext;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java
index f41d0e8e3bc..1121db99399 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPath.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import java.io.IOException;
@@ -7,6 +7,7 @@ import java.nio.charset.StandardCharsets;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files;
import java.nio.file.NoSuchFileException;
+import java.nio.file.NotDirectoryException;
import java.nio.file.OpenOption;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -15,7 +16,6 @@ import java.nio.file.attribute.FileAttribute;
import java.nio.file.attribute.FileTime;
import java.nio.file.attribute.GroupPrincipal;
import java.nio.file.attribute.PosixFileAttributeView;
-import java.nio.file.attribute.PosixFileAttributes;
import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
import java.nio.file.attribute.UserPrincipal;
@@ -56,7 +56,7 @@ public class UnixPath {
Path filename = path.getFileName();
if (filename == null) {
// E.g. "/".
- throw new IllegalStateException("Path has no filename: '" + path.toString() + "'");
+ throw new IllegalStateException("Path has no filename: '" + path + "'");
}
return filename.toString();
@@ -128,28 +128,32 @@ public class UnixPath {
return this;
}
- public String getOwner() {
- return getAttributes().owner();
+ public int getOwnerId() {
+ return getAttributes().ownerId();
}
- public UnixPath setOwner(String owner) {
+ public UnixPath setOwner(String user) { return setOwner(user, "user"); }
+ public UnixPath setOwnerId(int uid) { return setOwner(String.valueOf(uid), "uid"); }
+ private UnixPath setOwner(String owner, String type) {
UserPrincipalLookupService service = path.getFileSystem().getUserPrincipalLookupService();
UserPrincipal principal = uncheck(
() -> service.lookupPrincipalByName(owner),
- "While looking up user %s", owner);
+ "While looking up %s %s", type, owner);
uncheck(() -> Files.setOwner(path, principal));
return this;
}
- public String getGroup() {
- return getAttributes().group();
+ public int getGroupId() {
+ return getAttributes().groupId();
}
- public UnixPath setGroup(String group) {
+ public UnixPath setGroup(String group) { return setGroup(group, "group"); }
+ public UnixPath setGroupId(int gid) { return setGroup(String.valueOf(gid), "gid"); }
+ public UnixPath setGroup(String group, String type) {
UserPrincipalLookupService service = path.getFileSystem().getUserPrincipalLookupService();
GroupPrincipal principal = uncheck(
() -> service.lookupPrincipalByGroupName(group),
- "while looking up group %s", group);
+ "While looking up group %s %s", type, group);
uncheck(() -> Files.getFileAttributeView(path, PosixFileAttributeView.class).setGroup(principal));
return this;
}
@@ -168,9 +172,7 @@ public class UnixPath {
}
public FileAttributes getAttributes() {
- PosixFileAttributes attributes = uncheck(() ->
- Files.getFileAttributeView(path, PosixFileAttributeView.class).readAttributes());
- return new FileAttributes(attributes);
+ return uncheck(() -> FileAttributes.fromAttributes(Files.readAttributes(path, "unix:*")));
}
public Optional<FileAttributes> getAttributesIfExists() {
@@ -253,6 +255,17 @@ public class UnixPath {
return this;
}
+ /** @return false path does not exist, is not a directory, or has at least one entry. */
+ public boolean isEmptyDirectory() {
+ try (var entryStream = Files.list(path)) {
+ return entryStream.findAny().isEmpty();
+ } catch (NotDirectoryException | NoSuchFileException e) {
+ return false;
+ } catch (IOException e) {
+ throw new UncheckedIOException(e);
+ }
+ }
+
/** Lists the contents of this as a stream. Callers should use try-with to ensure that the stream is closed */
public Stream<UnixPath> listContentsOfDirectory() {
try {
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/package-info.java
index 076912c073d..7b663a1411c 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.node.admin.task.util.file;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPAddresses.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPAddresses.java
index 09c1f3be682..fc181eb3107 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPAddresses.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPAddresses.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.network;
import com.google.common.net.InetAddresses;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPAddressesImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPAddressesImpl.java
index c9fbf4865ab..1b5e6c57f5c 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPAddressesImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPAddressesImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.network;
import java.net.InetAddress;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPVersion.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPVersion.java
index 4cc825dacd6..b4ebb1bc572 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPVersion.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPVersion.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.network;
import com.google.common.net.InetAddresses;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/package-info.java
index 9f2704d57de..1b59d6f11b3 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.node.admin.task.util.network;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcess2.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcess2.java
index 4fdca85363f..e7b133b357a 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcess2.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcess2.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcess2Impl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcess2Impl.java
index 668bffd570a..947406184c2 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcess2Impl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcess2Impl.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcessException.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcessException.java
index bc88702b0fc..8663aba4244 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcessException.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcessException.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcessFailureException.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcessFailureException.java
index 5c6785a646c..833a1d6c4ff 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcessFailureException.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcessFailureException.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/CommandLine.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/CommandLine.java
index bda7590e38f..be7ee1707ba 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/CommandLine.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/CommandLine.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/CommandResult.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/CommandResult.java
index 39eccac23c4..2032fecf4d9 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/CommandResult.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/CommandResult.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/LargeOutputChildProcessException.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/LargeOutputChildProcessException.java
index 5c764757e84..9e231f30896 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/LargeOutputChildProcessException.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/LargeOutputChildProcessException.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessApi2.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessApi2.java
index 124f319e932..e6d2f32ee81 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessApi2.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessApi2.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessApi2Impl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessApi2Impl.java
index 853558c38e6..3bb94149a21 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessApi2Impl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessApi2Impl.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessFactory.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessFactory.java
index 3351563faf5..3fa994e0f39 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessFactory.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessFactoryImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessFactoryImpl.java
index 65561793a09..c374dc30baf 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessFactoryImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessFactoryImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessStarter.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessStarter.java
index 0afd4c6ee37..cf492ad9bed 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessStarter.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessStarter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessStarterImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessStarterImpl.java
index 4fb7ff5571a..d60e9a48fc1 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessStarterImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessStarterImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/Terminal.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/Terminal.java
index 849099ab5ca..30f864fc080 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/Terminal.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/Terminal.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TerminalImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TerminalImpl.java
index 8ec0d267f0d..28395f50217 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TerminalImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TerminalImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
import com.yahoo.jdisc.Timer;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TestChildProcess2.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TestChildProcess2.java
index 4e678522168..6decca64c86 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TestChildProcess2.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TestChildProcess2.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
import java.util.Optional;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TestProcessFactory.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TestProcessFactory.java
index 6771e0d5a27..6bd9deb76ed 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TestProcessFactory.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TestProcessFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
import java.util.ArrayList;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TestTerminal.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TestTerminal.java
index 57aeeb04532..b0a925d7a92 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TestTerminal.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TestTerminal.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
import com.yahoo.vespa.hosted.node.admin.component.TaskContext;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TimeoutChildProcessException.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TimeoutChildProcessException.java
index df9e2dc3471..1eea3c7585e 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TimeoutChildProcessException.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/TimeoutChildProcessException.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/UnexpectedOutputException.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/UnexpectedOutputException.java
index c7f572fa041..efb45fb9dcd 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/UnexpectedOutputException.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/UnexpectedOutputException.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/UnkillableChildProcessException.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/UnkillableChildProcessException.java
index 1da27dd853e..19027f4904b 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/UnkillableChildProcessException.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/UnkillableChildProcessException.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/package-info.java
index 16da9a3b7ca..0a7498a85b5 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/process/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.node.admin.task.util.process;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/systemd/SystemCtl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/systemd/SystemCtl.java
index 4f06ee47504..61090bbf252 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/systemd/SystemCtl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/systemd/SystemCtl.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.systemd;
import com.yahoo.vespa.hosted.node.admin.component.TaskContext;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/systemd/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/systemd/package-info.java
index e1bc1c5cbda..a0a968e9559 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/systemd/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/systemd/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.node.admin.task.util.systemd;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/Yum.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/Yum.java
index d8a131f5ed1..191b81e2263 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/Yum.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/Yum.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.yum;
import com.yahoo.vespa.hosted.node.admin.component.TaskContext;
@@ -22,7 +22,7 @@ public class Yum {
}
public Optional<YumPackageName> queryInstalled(TaskContext context, String packageName) {
- return YumCommand.queryInstalled(terminal, context, packageName);
+ return YumCommand.queryInstalled(terminal, context, YumPackageName.fromString(packageName));
}
/** Lock and install, or if necessary downgrade, a package to a given version. */
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumCommand.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumCommand.java
index ba9ba80ccb7..1530b3c72f0 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumCommand.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumCommand.java
@@ -241,10 +241,11 @@ public abstract class YumCommand<T extends YumCommand<T>> {
}
protected boolean isInstalled(TaskContext context, YumPackageName yumPackage) {
- return queryInstalled(terminal, context, yumPackage.getName()).map(yumPackage::isSubsetOf).orElse(false);
+ return queryInstalled(terminal, context, yumPackage).map(yumPackage::isSubsetOf).orElse(false);
}
- static Optional<YumPackageName> queryInstalled(Terminal terminal, TaskContext context, String packageName) {
+ static Optional<YumPackageName> queryInstalled(Terminal terminal, TaskContext context, YumPackageName yumPackage) {
+ String packageName = yumPackage.toName();
CommandResult commandResult = terminal.newCommandLine(context)
.add("rpm", "-q", packageName, "--queryformat", RPM_QUERYFORMAT)
.ignoreExitCode()
@@ -255,10 +256,12 @@ public abstract class YumCommand<T extends YumCommand<T>> {
YumPackageName.Builder builder = new YumPackageName.Builder();
List<Function<String, YumPackageName.Builder>> builders = PACKAGE_NAME_BUILDERS_GENERATOR.apply(builder);
List<Optional<String>> lines = commandResult.mapEachLine(line -> Optional.of(line).filter(s -> !"(none)".equals(s)));
- if (lines.size() != builders.size()) throw new IllegalStateException(String.format(
- "Unexpected response from rpm, expected %d lines, got %s", builders.size(), commandResult.getOutput()));
+ if (lines.size() % builders.size() != 0) throw new IllegalStateException(String.format("Unexpected response from rpm, expected %d lines, got '%s'", builders.size(), commandResult.getOutput()));
+ if (lines.size() > builders.size()) throw new IllegalArgumentException("Found multiple installed packages for '" + packageName + "'. Version is required to match package exactly");
IntStream.range(0, builders.size()).forEach(i -> lines.get(i).ifPresent(builders.get(i)::apply));
+ if (builder.epoch().isEmpty()) builder.setEpoch("0");
+
return Optional.of(builder.build());
}
}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java
index 5b32f50ad49..2baab4cfad5 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.yum;
import com.google.common.base.Strings;
@@ -80,6 +80,12 @@ public class YumPackageName {
public Builder setRelease(String release) { this.release = Optional.of(release); return this; }
public Builder setArchitecture(String architecture) { this.architecture = Optional.of(architecture); return this; }
+ public Optional<String> epoch() { return epoch; }
+ public String name() { return name; }
+ public Optional<String> version() { return version; }
+ public Optional<String> release() { return release; }
+ public Optional<String> architecture() { return architecture; }
+
public YumPackageName build() { return new YumPackageName(epoch, name, version, release, architecture); }
}
@@ -162,11 +168,6 @@ public class YumPackageName {
release = Optional.ofNullable(matcher.group(3));
}
- // Set default epoch if we have a version
- if (version.isPresent() && epoch.isEmpty()) {
- epoch = Optional.of("0");
- }
-
if (!NAME_PATTERN.matcher(spec).find()) {
throw new IllegalArgumentException("Bad package name in " + packageSpec + ": '" + spec + "'");
}
@@ -211,11 +212,7 @@ public class YumPackageName {
* @throws IllegalStateException if any field required for the version lock spec is missing
*/
public String toVersionLockName() {
- Builder b = new Builder(this).setArchitecture("*");
- if (epoch.isEmpty()) {
- b.setEpoch("0");
- }
- YumPackageName lockSpec = b.build();
+ YumPackageName lockSpec = new Builder(this).setArchitecture("*").build();
if (lockSpec.getVersion().isEmpty()) throw new IllegalStateException("Version is missing for YUM package " + name);
if (lockSpec.getRelease().isEmpty()) throw new IllegalStateException("Release is missing for YUM package " + name);
return lockSpec.toName();
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/package-info.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/package-info.java
index 3c5292982d0..0a1bfc6d795 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/package-info.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.node.admin.task.util.yum;
diff --git a/node-admin/src/main/sh/node-admin.sh b/node-admin/src/main/sh/node-admin.sh
index c87c57d0a40..c239afc39e1 100755
--- a/node-admin/src/main/sh/node-admin.sh
+++ b/node-admin/src/main/sh/node-admin.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApiImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApiImplTest.java
index a11fdc903e7..64406fcfafa 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApiImplTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/ConfigServerApiImplTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@@ -116,7 +116,7 @@ public class ConfigServerApiImplTest {
public void testBasicSuccessWithCustomTimeouts() {
mockReturnCode = TIMEOUT_RETURN_CODE;
- var params = new ConfigServerApi.Params();
+ var params = new ConfigServerApi.Params<TestPojo>();
params.setConnectionTimeout(Duration.ofSeconds(3));
try {
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/flags/RealFlagRepositoryTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/flags/RealFlagRepositoryTest.java
index c9e4e33f8bb..29581fe8b4d 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/flags/RealFlagRepositoryTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/flags/RealFlagRepositoryTest.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.flags;
import com.yahoo.vespa.flags.FlagId;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/AclTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/AclTest.java
index 341f2b8ca02..87f3d71ec7a 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/AclTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/AclTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.noderepository;
import com.yahoo.vespa.hosted.node.admin.task.util.network.IPVersion;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java
index fe06812c608..6a21814d5da 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.noderepository;
import com.yahoo.application.Networking;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/OrchestratorImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/OrchestratorImplTest.java
index d118da07247..7f2c584303b 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/OrchestratorImplTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/orchestrator/OrchestratorImplTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.orchestrator;
import com.yahoo.vespa.hosted.node.admin.configserver.ConfigServerApiImpl;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/state/HealthResponseTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/state/HealthResponseTest.java
index fcb6f6786a8..18feee9cb63 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/state/HealthResponseTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/state/HealthResponseTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.state;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/state/StateImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/state/StateImplTest.java
index a3256b6955b..3184f36b75e 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/state/StateImplTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/state/StateImplTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.configserver.state;
import com.yahoo.vespa.hosted.node.admin.configserver.ConfigServerApi;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngineMock.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngineMock.java
index 1d077449ed6..4507c424c98 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngineMock.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngineMock.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container;
import com.yahoo.config.provision.DockerImage;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerNameTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerNameTest.java
index f98c78c740a..bff3fb34663 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerNameTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerNameTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container;
import org.junit.Test;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerOperationsTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerOperationsTest.java
index 666c5fb31f9..e40265ac00d 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerOperationsTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerOperationsTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container;
import com.yahoo.config.provision.DockerImage;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerStatsCollectorTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerStatsCollectorTest.java
index 0bb7aee8e0a..80dbbfb9d13 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerStatsCollectorTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerStatsCollectorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container;
import com.yahoo.vespa.test.file.TestFileSystem;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImageDownloaderTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImageDownloaderTest.java
index f50f2b8b053..12482b07b91 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImageDownloaderTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImageDownloaderTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container.image;
import com.yahoo.config.provision.DockerImage;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImagePrunerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImagePrunerTest.java
index f6d941c4299..43d3fe94552 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImagePrunerTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImagePrunerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container.image;
import com.yahoo.config.provision.DockerImage;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/metrics/MetricsTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/metrics/MetricsTest.java
index 6c48fe65142..c7f7058d4f5 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/metrics/MetricsTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/metrics/MetricsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.container.metrics;
import org.junit.Test;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/ContainerFailTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/ContainerFailTest.java
index 898d7ebe901..b3404b4108e 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/ContainerFailTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/ContainerFailTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.integration;
import com.yahoo.config.provision.DockerImage;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/ContainerTester.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/ContainerTester.java
index 3f2083638dc..38c1dcb2fb6 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/ContainerTester.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/ContainerTester.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.integration;
import com.yahoo.config.provision.DockerImage;
@@ -13,6 +13,7 @@ import com.yahoo.vespa.hosted.node.admin.container.ContainerOperations;
import com.yahoo.vespa.hosted.node.admin.container.RegistryCredentials;
import com.yahoo.vespa.hosted.node.admin.container.metrics.Metrics;
import com.yahoo.vespa.hosted.node.admin.maintenance.StorageMaintainer;
+import com.yahoo.vespa.hosted.node.admin.maintenance.servicedump.VespaServiceDumper;
import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminImpl;
import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminStateUpdater;
import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext;
@@ -77,7 +78,7 @@ public class ContainerTester implements AutoCloseable {
for (int i = 1; i < 4; i++) ipAddresses.addAddress("host" + i + ".test.yahoo.com", "f000::" + i);
NodeSpec hostSpec = NodeSpec.Builder.testSpec(HOST_HOSTNAME.value()).type(NodeType.host).build();
- nodeRepository.updateNodeRepositoryNode(hostSpec);
+ nodeRepository.updateNodeSpec(hostSpec);
Clock clock = Clock.systemUTC();
Metrics metrics = new Metrics();
@@ -86,7 +87,8 @@ public class ContainerTester implements AutoCloseable {
NodeAgentFactory nodeAgentFactory = (contextSupplier, nodeContext) -> new NodeAgentImpl(
contextSupplier, nodeRepository, orchestrator, containerOperations, () -> RegistryCredentials.none,
storageMaintainer, flagSource,
- Collections.emptyList(), Optional.empty(), Optional.empty(), clock, Duration.ofSeconds(-1));
+ Collections.emptyList(), Optional.empty(), Optional.empty(), clock, Duration.ofSeconds(-1),
+ VespaServiceDumper.DUMMY_INSTANCE);
nodeAdmin = new NodeAdminImpl(nodeAgentFactory, metrics, clock, Duration.ofMillis(10), Duration.ZERO);
NodeAgentContextFactory nodeAgentContextFactory = (nodeSpec, acl) ->
new NodeAgentContextImpl.Builder(nodeSpec).acl(acl).fileSystem(fileSystem).build();
@@ -120,7 +122,7 @@ public class ContainerTester implements AutoCloseable {
", but that image does not exist in the container engine");
}
}
- nodeRepository.updateNodeRepositoryNode(new NodeSpec.Builder(nodeSpec)
+ nodeRepository.updateNodeSpec(new NodeSpec.Builder(nodeSpec)
.parentHostname(HOST_HOSTNAME.value())
.build());
}
@@ -130,7 +132,7 @@ public class ContainerTester implements AutoCloseable {
}
<T> T inOrder(T t) {
- return inOrder.verify(t, timeout(5000));
+ return inOrder.verify(t, timeout(10000));
}
public static NodeAgentContext containerMatcher(ContainerName containerName) {
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/MultiContainerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/MultiContainerTest.java
index fdfb3457330..de769d6a2d0 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/MultiContainerTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/MultiContainerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.integration;
import com.yahoo.config.provision.DockerImage;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/NodeRepoMock.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/NodeRepoMock.java
index 83154723266..cb9bcea7da3 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/NodeRepoMock.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/NodeRepoMock.java
@@ -1,17 +1,19 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.integration;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.Acl;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.AddNode;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NoSuchNodeException;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttributes;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeRepository;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeState;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Function;
import java.util.stream.Collectors;
/**
@@ -20,55 +22,60 @@ import java.util.stream.Collectors;
* @author dybis
*/
public class NodeRepoMock implements NodeRepository {
- private static final Object monitor = new Object();
- private final Map<String, NodeSpec> nodeRepositoryNodesByHostname = new HashMap<>();
+ private final Map<String, NodeSpec> nodeSpecByHostname = new ConcurrentHashMap<>();
+ private volatile Map<String, Acl> aclByHostname = Map.of();
@Override
public void addNodes(List<AddNode> nodes) { }
@Override
public List<NodeSpec> getNodes(String baseHostName) {
- synchronized (monitor) {
- return nodeRepositoryNodesByHostname.values().stream()
- .filter(node -> baseHostName.equals(node.parentHostname().orElse(null)))
- .collect(Collectors.toList());
- }
+ return nodeSpecByHostname.values().stream()
+ .filter(node -> baseHostName.equals(node.parentHostname().orElse(null)))
+ .collect(Collectors.toList());
}
@Override
public Optional<NodeSpec> getOptionalNode(String hostName) {
- synchronized (monitor) {
- return Optional.ofNullable(nodeRepositoryNodesByHostname.get(hostName));
- }
+ return Optional.ofNullable(nodeSpecByHostname.get(hostName));
}
@Override
public Map<String, Acl> getAcls(String hostname) {
- return Map.of();
+ return aclByHostname;
}
@Override
public void updateNodeAttributes(String hostName, NodeAttributes nodeAttributes) {
- synchronized (monitor) {
- updateNodeRepositoryNode(new NodeSpec.Builder(getNode(hostName))
- .updateFromNodeAttributes(nodeAttributes)
- .build());
- }
+ updateNodeSpec(new NodeSpec.Builder(getNode(hostName))
+ .updateFromNodeAttributes(nodeAttributes)
+ .build());
}
@Override
public void setNodeState(String hostName, NodeState nodeState) {
- synchronized (monitor) {
- updateNodeRepositoryNode(new NodeSpec.Builder(getNode(hostName))
- .state(nodeState)
- .build());
- }
+ updateNodeSpec(new NodeSpec.Builder(getNode(hostName))
+ .state(nodeState)
+ .build());
}
- void updateNodeRepositoryNode(NodeSpec nodeSpec) {
- synchronized (monitor) {
- nodeRepositoryNodesByHostname.put(nodeSpec.hostname(), nodeSpec);
- }
+ public void updateNodeSpec(NodeSpec nodeSpec) {
+ nodeSpecByHostname.put(nodeSpec.hostname(), nodeSpec);
+ }
+
+ public void updateNodeSpec(String hostname, Function<NodeSpec.Builder, NodeSpec.Builder> mapper) {
+ nodeSpecByHostname.compute(hostname, (__, nodeSpec) -> {
+ if (nodeSpec == null) throw new NoSuchNodeException(hostname);
+ return mapper.apply(new NodeSpec.Builder(nodeSpec)).build();
+ });
+ }
+
+ public void resetNodeSpecs() {
+ nodeSpecByHostname.clear();
+ }
+
+ public void setAcl(Map<String, Acl> aclByHostname) {
+ this.aclByHostname = Map.copyOf(aclByHostname);
}
}
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/RebootTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/RebootTest.java
index 109fb61d0c9..aec9336c13c 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/RebootTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/RebootTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.integration;
import com.yahoo.config.provision.DockerImage;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/RestartTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/RestartTest.java
index b848a5a91d9..13b3db1c55c 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/RestartTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integration/RestartTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.integration;
import com.yahoo.config.provision.DockerImage;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java
index beca554fb2d..241f04ee2d6 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance;
import com.yahoo.config.provision.NodeResources;
@@ -143,7 +143,7 @@ public class StorageMaintainerTest {
@Test
public void not_run_if_not_enough_used() throws IOException {
NodeAgentContext context = new NodeAgentContextImpl.Builder(
- NodeSpec.Builder.testSpec("h123a.domain.tld").resources(new NodeResources(1, 1, 1, 1)).build())
+ NodeSpec.Builder.testSpec("h123a.domain.tld").realResources(new NodeResources(1, 1, 1, 1)).build())
.fileSystem(fileSystem).build();
Files.createDirectories(context.pathOnHostFromPathInNode("/"));
mockDiskUsage(500L);
@@ -155,7 +155,7 @@ public class StorageMaintainerTest {
@Test
public void deletes_correct_amount() throws IOException {
NodeAgentContext context = new NodeAgentContextImpl.Builder(
- NodeSpec.Builder.testSpec("h123a.domain.tld").resources(new NodeResources(1, 1, 1, 1)).build())
+ NodeSpec.Builder.testSpec("h123a.domain.tld").realResources(new NodeResources(1, 1, 1, 1)).build())
.fileSystem(fileSystem).build();
Files.createDirectories(context.pathOnHostFromPathInNode("/"));
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainerTest.java
index 224cb3305f8..a10ce1c7d74 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainerTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.acl;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.Acl;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollectorTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollectorTest.java
index cfb9aaa4001..f56794382e8 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollectorTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollectorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.coredump;
import com.yahoo.vespa.hosted.node.admin.container.ContainerOperations;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpHandlerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpHandlerTest.java
index d5ac850c770..673ad9eee86 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpHandlerTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.coredump;
import com.yahoo.test.ManualClock;
@@ -58,7 +58,7 @@ public class CoredumpHandlerTest {
@SuppressWarnings("unchecked")
private final Supplier<String> coredumpIdSupplier = mock(Supplier.class);
private final CoredumpHandler coredumpHandler = new CoredumpHandler(terminal, coreCollector, coredumpReporter,
- crashPathInContainer, doneCoredumpsPath, "users", metrics, clock, coredumpIdSupplier);
+ crashPathInContainer, doneCoredumpsPath, 100, metrics, clock, coredumpIdSupplier);
@Test
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/CoredumpCleanupRuleTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/CoredumpCleanupRuleTest.java
index e8ca2ff8491..272fdba7e9a 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/CoredumpCleanupRuleTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/CoredumpCleanupRuleTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.disk;
import com.yahoo.vespa.test.file.TestFileSystem;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/DiskCleanupTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/DiskCleanupTest.java
index 7065b261b1b..1386177d17a 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/DiskCleanupTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/DiskCleanupTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.disk;
import com.yahoo.vespa.hosted.node.admin.component.TestTaskContext;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/LinearCleanupRuleTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/LinearCleanupRuleTest.java
index ae2d3af4f21..55a379054d4 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/LinearCleanupRuleTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/disk/LinearCleanupRuleTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.disk;
import org.junit.Test;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImplTest.java
new file mode 100644
index 00000000000..c8a67fcc8d8
--- /dev/null
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImplTest.java
@@ -0,0 +1,191 @@
+package com.yahoo.vespa.hosted.node.admin.maintenance.servicedump;// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+import com.yahoo.yolean.concurrent.Sleeper;
+import com.yahoo.test.ManualClock;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeState;
+import com.yahoo.vespa.hosted.node.admin.container.ContainerOperations;
+import com.yahoo.vespa.hosted.node.admin.integration.NodeRepoMock;
+import com.yahoo.vespa.hosted.node.admin.maintenance.sync.SyncClient;
+import com.yahoo.vespa.hosted.node.admin.maintenance.sync.SyncFileInfo;
+import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContextImpl;
+import com.yahoo.vespa.hosted.node.admin.task.util.process.CommandResult;
+import com.yahoo.vespa.test.file.TestFileSystem;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.ArgumentCaptor;
+
+import java.io.IOException;
+import java.net.URI;
+import java.nio.file.FileSystem;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.time.Instant;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+/**
+ * @author bjorncs
+ */
+class VespaServiceDumperImplTest {
+
+ private static final String HOSTNAME = "host-1.domain.tld";
+
+ private final FileSystem fileSystem = TestFileSystem.create();;
+ private final Path tmpDirectory = fileSystem.getPath("/home/docker/container-storage/host-1/opt/vespa/tmp");
+
+ @BeforeEach
+ void create_tmp_directory() throws IOException {
+ // Create temporary directory in container
+ Files.createDirectories(tmpDirectory);
+ }
+
+ @Test
+ void creates_valid_dump_id_from_dump_request() {
+ long nowMillis = Instant.now().toEpochMilli();
+ ServiceDumpReport request = new ServiceDumpReport(
+ nowMillis, null, null, null, null, "default/container.3", null, null, List.of(JvmDumpProducer.NAME), null);
+ String dumpId = VespaServiceDumperImpl.createDumpId(request);
+ assertEquals("default-container-3-" + nowMillis, dumpId);
+ }
+
+ @Test
+ void generates_jvm_dump_from_request() throws IOException {
+ // Setup mocks
+ ContainerOperations operations = mock(ContainerOperations.class);
+ when(operations.executeCommandInContainerAsRoot(any(), any()))
+ .thenAnswer(invocation -> {
+ // Create dummy files to simulate vespa-jvm-dumper
+ Files.createFile(tmpDirectory.resolve("vespa-service-dump/" + JvmDumpProducer.NAME + "/heap.bin"));
+ Files.createFile(tmpDirectory.resolve("vespa-service-dump/" + JvmDumpProducer.NAME + "/jstack"));
+ return new CommandResult(null, 0, "result");
+ });
+ SyncClient syncClient = createSyncClientMock();
+ NodeRepoMock nodeRepository = new NodeRepoMock();
+ ManualClock clock = new ManualClock(Instant.ofEpochMilli(1600001000000L));
+ NodeSpec initialSpec = createNodeSpecWithDumpRequest(nodeRepository, JvmDumpProducer.NAME, null);
+
+ // Create dumper and invoke tested method
+ VespaServiceDumper reporter = new VespaServiceDumperImpl(operations, syncClient, nodeRepository, clock, Sleeper.NOOP);
+ NodeAgentContextImpl context = new NodeAgentContextImpl.Builder(initialSpec)
+ .fileSystem(fileSystem)
+ .build();
+ reporter.processServiceDumpRequest(context);
+
+ // Verify
+ String expectedJson =
+ "{\"createdMillis\":1600000000000,\"startedAt\":1600001000000,\"completedAt\":1600001000000," +
+ "\"location\":\"s3://uri-1/tenant1/service-dump/default-container-1-1600000000000/\"," +
+ "\"configId\":\"default/container.1\",\"artifacts\":[\"jvm-dump\"]}";
+ assertReportEquals(nodeRepository, expectedJson);
+ verify(operations).executeCommandInContainerAsRoot(
+ context, "/opt/vespa/bin/vespa-jvm-dumper", "default/container.1", "/opt/vespa/tmp/vespa-service-dump/jvm-dump");
+ List<URI> expectedUris = List.of(
+ URI.create("s3://uri-1/tenant1/service-dump/default-container-1-1600000000000/jvm-dump/heap.bin.zst"),
+ URI.create("s3://uri-1/tenant1/service-dump/default-container-1-1600000000000/jvm-dump/jstack"));
+ assertSyncedFiles(context, syncClient, expectedUris);
+ }
+
+ @Test
+ void invokes_perf_commands_when_generating_perf_report() {
+ // Setup mocks
+ ContainerOperations operations = mock(ContainerOperations.class);
+ when(operations.executeCommandInContainerAsRoot(any(), any()))
+ .thenReturn(new CommandResult(null, 0, "12345"))
+ .thenReturn(new CommandResult(null, 0, ""))
+ .thenReturn(new CommandResult(null, 0, ""));
+ SyncClient syncClient = createSyncClientMock();
+ NodeRepoMock nodeRepository = new NodeRepoMock();
+ ManualClock clock = new ManualClock(Instant.ofEpochMilli(1600001000000L));
+ NodeSpec nodeSpec = createNodeSpecWithDumpRequest(nodeRepository, PerfReportProducer.NAME, new ServiceDumpReport.DumpOptions(true, 45.0));
+
+ VespaServiceDumper reporter = new VespaServiceDumperImpl(operations, syncClient, nodeRepository, clock, Sleeper.NOOP);
+ NodeAgentContextImpl context = new NodeAgentContextImpl.Builder(nodeSpec)
+ .fileSystem(fileSystem)
+ .build();
+ reporter.processServiceDumpRequest(context);
+
+ verify(operations).executeCommandInContainerAsRoot(
+ context, "/opt/vespa/libexec/vespa/find-pid", "default/container.1");
+ verify(operations).executeCommandInContainerAsRoot(
+ context, "perf", "record", "-g", "--output=/opt/vespa/tmp/vespa-service-dump/perf-report/perf-record.bin",
+ "--pid=12345", "sleep", "45");
+ verify(operations).executeCommandInContainerAsRoot(
+ context, "bash", "-c", "perf report --input=/opt/vespa/tmp/vespa-service-dump/perf-report/perf-record.bin" +
+ " > /opt/vespa/tmp/vespa-service-dump/perf-report/perf-report.txt");
+ }
+
+ @Test
+ void invokes_jcmd_commands_when_creating_jfr_recording() {
+ // Setup mocks
+ ContainerOperations operations = mock(ContainerOperations.class);
+ when(operations.executeCommandInContainerAsRoot(any(), any()))
+ .thenReturn(new CommandResult(null, 0, "12345"))
+ .thenReturn(new CommandResult(null, 0, "ok"))
+ .thenReturn(new CommandResult(null, 0, "name=host-admin success"));
+ SyncClient syncClient = createSyncClientMock();
+ NodeRepoMock nodeRepository = new NodeRepoMock();
+ ManualClock clock = new ManualClock(Instant.ofEpochMilli(1600001000000L));
+ NodeSpec nodeSpec = createNodeSpecWithDumpRequest(
+ nodeRepository, JavaFlightRecorder.NAME, new ServiceDumpReport.DumpOptions(null, null));
+
+ VespaServiceDumper reporter = new VespaServiceDumperImpl(operations, syncClient, nodeRepository, clock, Sleeper.NOOP);
+ NodeAgentContextImpl context = new NodeAgentContextImpl.Builder(nodeSpec)
+ .fileSystem(fileSystem)
+ .build();
+ reporter.processServiceDumpRequest(context);
+
+ verify(operations).executeCommandInContainerAsRoot(
+ context, "/opt/vespa/libexec/vespa/find-pid", "default/container.1");
+ verify(operations).executeCommandInContainerAsRoot(
+ context, "jcmd", "12345", "JFR.start", "name=host-admin", "path-to-gc-roots=true", "settings=profile",
+ "filename=/opt/vespa/tmp/vespa-service-dump/jfr-recording/recording.jfr", "duration=30s");
+ verify(operations).executeCommandInContainerAsRoot(context, "jcmd", "12345", "JFR.check", "name=host-admin");
+ }
+
+ private static NodeSpec createNodeSpecWithDumpRequest(NodeRepoMock repository, String artifactName, ServiceDumpReport.DumpOptions options) {
+ ServiceDumpReport request = ServiceDumpReport.createRequestReport(
+ Instant.ofEpochMilli(1600000000000L), null, "default/container.1", List.of(artifactName), options);
+ NodeSpec spec = NodeSpec.Builder
+ .testSpec(HOSTNAME, NodeState.active)
+ .report(ServiceDumpReport.REPORT_ID, request.toJsonNode())
+ .archiveUri(URI.create("s3://uri-1/tenant1/"))
+ .build();
+ repository.updateNodeSpec(spec);
+ return spec;
+ }
+
+ private static void assertReportEquals(NodeRepoMock nodeRepository, String expectedJson) {
+ ServiceDumpReport report = nodeRepository.getNode(HOSTNAME).reports()
+ .getReport(ServiceDumpReport.REPORT_ID, ServiceDumpReport.class).get();
+ String actualJson = report.toJson();
+ assertEquals(expectedJson, actualJson);
+ }
+
+ @SuppressWarnings("unchecked")
+ private static void assertSyncedFiles(NodeAgentContextImpl context, SyncClient client, List<URI> expectedDestinations) {
+ ArgumentCaptor<List<SyncFileInfo>> filesCaptor = ArgumentCaptor.forClass(List.class);
+ verify(client).sync(eq(context), filesCaptor.capture(), eq(Integer.MAX_VALUE));
+ List<SyncFileInfo> actualFiles = filesCaptor.getValue();
+ List<URI> actualFilenames = actualFiles.stream()
+ .map(SyncFileInfo::destination)
+ .sorted()
+ .collect(Collectors.toList());
+ assertEquals(expectedDestinations, actualFilenames);
+ }
+
+ private SyncClient createSyncClientMock() {
+ SyncClient client = mock(SyncClient.class);
+ when(client.sync(any(), any(), anyInt()))
+ .thenReturn(true);
+ return client;
+ }
+} \ No newline at end of file
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/SyncFileInfoTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/SyncFileInfoTest.java
index 8fe39bf7a9c..4478a26396e 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/SyncFileInfoTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/SyncFileInfoTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.sync;
import com.yahoo.vespa.test.file.TestFileSystem;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/ZstdCompressingInputStreamTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/ZstdCompressingInputStreamTest.java
index 9341d45aa9a..ce8c260a7a4 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/ZstdCompressingInputStreamTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/sync/ZstdCompressingInputStreamTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.sync;
import org.junit.Test;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImplTest.java
index 68519cfc53d..ed400a160c9 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImplTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImplTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.nodeadmin;
import com.yahoo.test.ManualClock;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java
index 8ee3a95744b..f9b0070a3d6 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java
@@ -1,14 +1,16 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.nodeadmin;
import com.yahoo.config.provision.HostName;
+import com.yahoo.config.provision.NodeType;
import com.yahoo.test.ManualClock;
import com.yahoo.vespa.flags.InMemoryFlagSource;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.Acl;
-import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeRepository;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeState;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.OrchestratorStatus;
import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.Orchestrator;
+import com.yahoo.vespa.hosted.node.admin.integration.NodeRepoMock;
import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContextFactory;
import org.junit.Test;
@@ -16,7 +18,6 @@ import java.time.Duration;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
@@ -45,7 +46,7 @@ import static org.mockito.Mockito.when;
*/
public class NodeAdminStateUpdaterTest {
private final NodeAgentContextFactory nodeAgentContextFactory = mock(NodeAgentContextFactory.class);
- private final NodeRepository nodeRepository = mock(NodeRepository.class);
+ private final NodeRepoMock nodeRepository = spy(new NodeRepoMock());
private final Orchestrator orchestrator = mock(Orchestrator.class);
private final NodeAdmin nodeAdmin = mock(NodeAdmin.class);
private final HostName hostHostname = HostName.from("basehost1.test.yahoo.com");
@@ -78,10 +79,17 @@ public class NodeAdminStateUpdaterTest {
verify(orchestrator, times(1)).resume(hostHostname.value());
verify(nodeAdmin, times(2)).setFrozen(eq(false));
+ // Host is externally suspended in orchestrator, should be resumed by node-admin
+ setHostOrchestratorStatus(hostHostname, OrchestratorStatus.ALLOWED_TO_BE_DOWN);
+ updater.converge(RESUMED);
+ verify(orchestrator, times(2)).resume(hostHostname.value());
+ verify(nodeAdmin, times(3)).setFrozen(eq(false));
+ setHostOrchestratorStatus(hostHostname, OrchestratorStatus.NO_REMARKS);
+
// Lets try to suspend node admin only
when(nodeAdmin.setFrozen(eq(true))).thenReturn(false);
assertConvergeError(SUSPENDED_NODE_ADMIN, "NodeAdmin is not yet frozen");
- verify(nodeAdmin, times(2)).setFrozen(eq(false));
+ verify(nodeAdmin, times(3)).setFrozen(eq(false));
}
{
@@ -92,10 +100,24 @@ public class NodeAdminStateUpdaterTest {
doThrow(new RuntimeException(exceptionMessage)).doNothing()
.when(orchestrator).suspend(eq(hostHostname.value()));
assertConvergeError(SUSPENDED_NODE_ADMIN, exceptionMessage);
- verify(nodeAdmin, times(2)).setFrozen(eq(false));
+ verify(nodeAdmin, times(3)).setFrozen(eq(false));
updater.converge(SUSPENDED_NODE_ADMIN);
- verify(nodeAdmin, times(2)).setFrozen(eq(false));
+ verify(nodeAdmin, times(3)).setFrozen(eq(false));
+ verify(orchestrator, times(2)).suspend(hostHostname.value());
+ setHostOrchestratorStatus(hostHostname, OrchestratorStatus.ALLOWED_TO_BE_DOWN);
+
+ // Already suspended, no changes
+ updater.converge(SUSPENDED_NODE_ADMIN);
+ verify(nodeAdmin, times(3)).setFrozen(eq(false));
+ verify(orchestrator, times(2)).suspend(hostHostname.value());
+
+ // Host is externally resumed
+ setHostOrchestratorStatus(hostHostname, OrchestratorStatus.NO_REMARKS);
+ updater.converge(SUSPENDED_NODE_ADMIN);
+ verify(nodeAdmin, times(3)).setFrozen(eq(false));
+ verify(orchestrator, times(3)).suspend(hostHostname.value());
+ setHostOrchestratorStatus(hostHostname, OrchestratorStatus.ALLOWED_TO_BE_DOWN);
}
{
@@ -106,7 +128,7 @@ public class NodeAdminStateUpdaterTest {
assertConvergeError(SUSPENDED, exceptionMessage);
verify(orchestrator, times(1)).suspend(eq(hostHostname.value()), eq(suspendHostnames));
// Make sure we dont roll back if we fail to stop services - we will try to stop again next tick
- verify(nodeAdmin, times(2)).setFrozen(eq(false));
+ verify(nodeAdmin, times(3)).setFrozen(eq(false));
// Finally we are successful in transitioning to frozen
updater.converge(SUSPENDED);
@@ -238,20 +260,22 @@ public class NodeAdminStateUpdaterTest {
}
private void mockNodeRepo(NodeState hostState, int numberOfNodes) {
- List<NodeSpec> containersToRun = IntStream.range(1, numberOfNodes + 1)
- .mapToObj(i -> NodeSpec.Builder.testSpec("host" + i + ".yahoo.com").build())
- .collect(Collectors.toList());
+ nodeRepository.resetNodeSpecs();
+
+ IntStream.rangeClosed(1, numberOfNodes)
+ .mapToObj(i -> NodeSpec.Builder.testSpec("host" + i + ".yahoo.com").parentHostname(hostHostname.value()).build())
+ .forEach(nodeRepository::updateNodeSpec);
- when(nodeRepository.getNodes(eq(hostHostname.value()))).thenReturn(containersToRun);
- when(nodeRepository.getNode(eq(hostHostname.value()))).thenReturn(
- NodeSpec.Builder.testSpec(hostHostname.value(), hostState).build());
+ nodeRepository.updateNodeSpec(NodeSpec.Builder.testSpec(hostHostname.value(), hostState).type(NodeType.host).build());
}
private void mockAcl(Acl acl, int... nodeIds) {
- Map<String, Acl> aclByHostname = Arrays.stream(nodeIds)
+ nodeRepository.setAcl(Arrays.stream(nodeIds)
.mapToObj(i -> "host" + i + ".yahoo.com")
- .collect(Collectors.toMap(Function.identity(), h -> acl));
+ .collect(Collectors.toMap(Function.identity(), h -> acl)));
+ }
- when(nodeRepository.getAcls(eq(hostHostname.value()))).thenReturn(aclByHostname);
+ private void setHostOrchestratorStatus(HostName hostname, OrchestratorStatus orchestratorStatus) {
+ nodeRepository.updateNodeSpec(hostname.value(), node -> node.orchestratorStatus(orchestratorStatus));
}
}
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextManagerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextManagerTest.java
index a082addd775..2ed3b66c1b1 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextManagerTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextManagerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.nodeagent;
import org.junit.Test;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java
index f2b761b614d..3aec6c1902a 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.nodeagent;
import com.yahoo.component.Version;
@@ -25,6 +25,7 @@ import com.yahoo.vespa.hosted.node.admin.container.RegistryCredentials;
import com.yahoo.vespa.hosted.node.admin.maintenance.StorageMaintainer;
import com.yahoo.vespa.hosted.node.admin.maintenance.acl.AclMaintainer;
import com.yahoo.vespa.hosted.node.admin.maintenance.identity.CredentialsMaintainer;
+import com.yahoo.vespa.hosted.node.admin.maintenance.servicedump.VespaServiceDumper;
import com.yahoo.vespa.hosted.node.admin.nodeadmin.ConvergenceException;
import org.junit.Before;
import org.junit.Test;
@@ -696,13 +697,10 @@ public class NodeAgentImplTest {
}
private void verifyThatContainerIsStopped(NodeState nodeState, Optional<ApplicationId> owner) {
- NodeSpec.Builder nodeBuilder = new NodeSpec.Builder()
- .resources(resources)
- .hostname(hostName)
+ NodeSpec.Builder nodeBuilder = nodeBuilder(nodeState)
.type(NodeType.tenant)
.flavor("docker")
- .wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
- .state(nodeState);
+ .wantedDockerImage(dockerImage).currentDockerImage(dockerImage);
owner.ifPresent(nodeBuilder::owner);
NodeSpec node = nodeBuilder.build();
@@ -748,7 +746,7 @@ public class NodeAgentImplTest {
return new NodeAgentImpl(contextSupplier, nodeRepository, orchestrator, containerOperations,
() -> RegistryCredentials.none, storageMaintainer, flagSource,
List.of(credentialsMaintainer), Optional.of(aclMaintainer),
- Optional.of(healthChecker), clock, warmUpDuration);
+ Optional.of(healthChecker), clock, warmUpDuration, VespaServiceDumper.DUMMY_INSTANCE);
}
private void mockGetContainer(DockerImage dockerImage, boolean isRunning) {
@@ -783,6 +781,6 @@ public class NodeAgentImplTest {
}
private NodeSpec.Builder nodeBuilder(NodeState state) {
- return NodeSpec.Builder.testSpec(hostName, state).resources(resources);
+ return NodeSpec.Builder.testSpec(hostName, state).realResources(resources);
}
}
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/provider/DebugHandlerHelperTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/provider/DebugHandlerHelperTest.java
index afb0c86ba2a..fd16b974e18 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/provider/DebugHandlerHelperTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/provider/DebugHandlerHelperTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.provider;
import org.junit.Test;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/StringEditorTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/StringEditorTest.java
index b1bf5c12dd0..a66d77edbfa 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/StringEditorTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/StringEditorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.editor;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/TextBufferImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/TextBufferImplTest.java
index 619b1de4877..584b7c2c906 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/TextBufferImplTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/editor/TextBufferImplTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.editor;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/DiskSizeTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/DiskSizeTest.java
index 898ddf57428..9c7bad3b130 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/DiskSizeTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/DiskSizeTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import org.junit.Test;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/EditorTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/EditorTest.java
index 06cb382a5c4..59bc7864ef5 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/EditorTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/EditorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import com.yahoo.vespa.hosted.node.admin.component.TaskContext;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileAttributesCacheTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileAttributesCacheTest.java
index 88b33a7f9a8..9a2ada2bebe 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileAttributesCacheTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileAttributesCacheTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import org.junit.Test;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileContentCacheTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileContentCacheTest.java
index f499d8b46ad..32eb7708f68 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileContentCacheTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileContentCacheTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileFinderTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileFinderTest.java
index 26897839b32..80e88e302d3 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileFinderTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileFinderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import com.yahoo.vespa.hosted.node.admin.component.TaskContext;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileSyncTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileSyncTest.java
index cbf471bd611..2355f047b00 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileSyncTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileSyncTest.java
@@ -1,5 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import com.yahoo.vespa.hosted.node.admin.component.TestTaskContext;
@@ -27,26 +26,25 @@ public class FileSyncTest {
private final FileSync fileSync = new FileSync(path);
private String content = "content";
- private String owner = "owner"; // default is user
- private String group = "group1"; // default is group
+ private int ownerId = 123; // default is 1
+ private int groupId = 456; // default is 2
private String permissions = "rw-r-xr--";
@Test
public void trivial() {
assertConvergence("Creating file /dir/file.txt",
- "Changing owner of /dir/file.txt from user to owner",
- "Changing group of /dir/file.txt from group to group1",
+ "Changing user ID of /dir/file.txt from 1 to 123",
+ "Changing group ID of /dir/file.txt from 2 to 456",
"Changing permissions of /dir/file.txt from rw-r--r-- to rw-r-xr--");
content = "new-content";
assertConvergence("Patching file /dir/file.txt");
- owner = "new-owner";
- assertConvergence("Changing owner of /dir/file.txt from owner to " +
- owner);
+ ownerId = 124;
+ assertConvergence("Changing user ID of /dir/file.txt from 123 to 124");
- group = "new-group1";
- assertConvergence("Changing group of /dir/file.txt from group1 to new-group1");
+ groupId = 457;
+ assertConvergence("Changing group ID of /dir/file.txt from 456 to 457");
permissions = "rwxr--rwx";
assertConvergence("Changing permissions of /dir/file.txt from rw-r-xr-- to " +
@@ -56,8 +54,8 @@ public class FileSyncTest {
private void assertConvergence(String... systemModificationMessages) {
PartialFileData fileData = PartialFileData.builder()
.withContent(content)
- .withOwner(owner)
- .withGroup(group)
+ .withOwnerId(ownerId)
+ .withGroupId(groupId)
.withPermissions(permissions)
.create();
taskContext.clearSystemModificationLog();
@@ -65,8 +63,8 @@ public class FileSyncTest {
assertTrue(Files.isRegularFile(path));
fileData.getContent().ifPresent(content -> assertArrayEquals(content, unixPath.readBytes()));
- fileData.getOwner().ifPresent(owner -> assertEquals(owner, unixPath.getOwner()));
- fileData.getGroup().ifPresent(group -> assertEquals(group, unixPath.getGroup()));
+ fileData.getOwnerId().ifPresent(owner -> assertEquals((int) owner, unixPath.getOwnerId()));
+ fileData.getGroupId().ifPresent(group -> assertEquals((int) group, unixPath.getGroupId()));
fileData.getPermissions().ifPresent(permissions -> assertEquals(permissions, unixPath.getPermissions()));
List<String> actualMods = taskContext.getSystemModificationLog();
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileWriterTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileWriterTest.java
index e1a0ed5d972..0f11a4c9a7a 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileWriterTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileWriterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
@@ -27,14 +27,14 @@ public class FileWriterTest {
public void testWrite() {
final String content = "content";
final String permissions = "rwxr-xr-x";
- final String owner = "owner";
- final String group = "group";
+ final int owner = 123;
+ final int group = 456;
Path path = fileSystem.getPath("/opt/vespa/tmp/file.txt");
FileWriter writer = new FileWriter(path, () -> content)
.withPermissions(permissions)
- .withOwner(owner)
- .withGroup(group)
+ .withOwnerId(owner)
+ .withGroupId(group)
.onlyIfFileDoesNotAlreadyExist();
assertTrue(writer.converge(context));
verify(context, times(1)).recordSystemModification(any(), eq("Creating file " + path));
@@ -42,8 +42,8 @@ public class FileWriterTest {
UnixPath unixPath = new UnixPath(path);
assertEquals(content, unixPath.readUtf8File());
assertEquals(permissions, unixPath.getPermissions());
- assertEquals(owner, unixPath.getOwner());
- assertEquals(group, unixPath.getGroup());
+ assertEquals(owner, unixPath.getOwnerId());
+ assertEquals(group, unixPath.getGroupId());
Instant fileTime = unixPath.getLastModifiedTime();
// Second time is a no-op.
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/MakeDirectoryTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/MakeDirectoryTest.java
index c28aa6faa30..b2c02690443 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/MakeDirectoryTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/MakeDirectoryTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
import com.yahoo.vespa.hosted.node.admin.component.TestTaskContext;
@@ -25,21 +25,21 @@ public class MakeDirectoryTest {
private final String path = "/parent/dir";
private String permissions = "rwxr----x";
- private String owner = "test-owner";
- private String group = "test-group";
+ private int ownerId = 123;
+ private int groupId = 456;
@Test
public void newDirectory() {
verifySystemModifications(
"Creating directory " + path,
- "Changing owner of /parent/dir from user to test-owner",
- "Changing group of /parent/dir from group to test-group");
+ "Changing user ID of /parent/dir from 1 to 123",
+ "Changing group ID of /parent/dir from 2 to 456");
- owner = "new-owner";
- verifySystemModifications("Changing owner of /parent/dir from test-owner to new-owner");
+ ownerId = 124;
+ verifySystemModifications("Changing user ID of /parent/dir from 123 to 124");
- group = "new-group";
- verifySystemModifications("Changing group of /parent/dir from test-group to new-group");
+ groupId = 457;
+ verifySystemModifications("Changing group ID of /parent/dir from 456 to 457");
permissions = "--x---r--";
verifySystemModifications("Changing permissions of /parent/dir from rwxr----x to --x---r--");
@@ -50,8 +50,8 @@ public class MakeDirectoryTest {
MakeDirectory makeDirectory = new MakeDirectory(fileSystem.getPath(path))
.createParents()
.withPermissions(permissions)
- .withOwner(owner)
- .withGroup(group);
+ .withOwnerId(ownerId)
+ .withGroupId(groupId);
assertTrue(makeDirectory.converge(context));
assertEquals(List.of(modifications), context.getSystemModificationLog());
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/TemplateTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/TemplateTest.java
index 20f406463a8..d82bd517cae 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/TemplateTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/TemplateTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPathTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPathTest.java
index 3159689c22e..952bf04620f 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPathTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/UnixPathTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.file;
@@ -63,11 +63,11 @@ public class UnixPathTest {
UnixPath unixPath = new UnixPath(path);
unixPath.writeUtf8File("foo");
- unixPath.setOwner("owner");
- assertEquals("owner", unixPath.getOwner());
+ unixPath.setOwnerId(123);
+ assertEquals(123, unixPath.getOwnerId());
- unixPath.setGroup("group");
- assertEquals("group", unixPath.getGroup());
+ unixPath.setGroupId(456);
+ assertEquals(456, unixPath.getGroupId());
}
@Test
@@ -127,6 +127,22 @@ public class UnixPathTest {
}
@Test
+ public void isEmptyDirectory() {
+ var path = new UnixPath((fs.getPath("/foo")));
+ assertFalse(path.isEmptyDirectory());
+
+ path.writeUtf8File("");
+ assertFalse(path.isEmptyDirectory());
+
+ path.deleteIfExists();
+ path.createDirectory();
+ assertTrue(path.isEmptyDirectory());
+
+ path.resolve("bar").writeUtf8File("");
+ assertFalse(path.isEmptyDirectory());
+ }
+
+ @Test
public void atomicWrite() {
var path = new UnixPath(fs.getPath("/dir/foo"));
path.createParents();
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPAddressesMock.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPAddressesMock.java
index 52e7ff7e977..5bcb084ed88 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPAddressesMock.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPAddressesMock.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.network;
import com.google.common.net.InetAddresses;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPAddressesTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPAddressesTest.java
index f2091e4550e..703b81af9ae 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPAddressesTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPAddressesTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.network;
import com.google.common.net.InetAddresses;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcess2ImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcess2ImplTest.java
index 6151d16b69e..a4220956272 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcess2ImplTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ChildProcess2ImplTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
import com.yahoo.jdisc.Timer;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/CommandLineTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/CommandLineTest.java
index 9f601d53f73..e434274aacc 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/CommandLineTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/CommandLineTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
import com.yahoo.vespa.hosted.node.admin.component.TestTaskContext;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessFactoryImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessFactoryImplTest.java
index 09b6e65aca5..722abe1f7bd 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessFactoryImplTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessFactoryImplTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.process;
import com.yahoo.vespa.hosted.node.admin.task.util.file.UnixPath;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/systemd/SystemCtlTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/systemd/SystemCtlTest.java
index 23a68321059..163c3410c4a 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/systemd/SystemCtlTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/systemd/SystemCtlTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.systemd;
import com.yahoo.vespa.hosted.node.admin.component.TaskContext;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageNameTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageNameTest.java
index a4dc3ac359a..45e1dc73521 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageNameTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageNameTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.yum;
import org.junit.Test;
@@ -65,7 +65,7 @@ public class YumPackageNameTest {
// name-ver
verifyPackageName("docker-engine-selinux-1.12.6",
- "0",
+ null,
"docker-engine-selinux",
"1.12.6",
null,
@@ -75,7 +75,7 @@ public class YumPackageNameTest {
// name-ver-rel
verifyPackageName("docker-engine-selinux-1.12.6-1.el7",
- "0",
+ null,
"docker-engine-selinux",
"1.12.6",
"1.el7",
@@ -85,7 +85,7 @@ public class YumPackageNameTest {
// name-ver-rel.arch
verifyPackageName("docker-engine-selinux-1.12.6-1.el7.x86_64",
- "0",
+ null,
"docker-engine-selinux",
"1.12.6",
"1.el7",
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java
index 62fd7410e95..feafb2a9a31 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.task.util.yum;
import com.yahoo.vespa.hosted.node.admin.component.TaskContext;
@@ -31,7 +31,7 @@ public class YumTest {
}
@Test
- public void testQueryInstalledNevra() {
+ public void testQueryInstalled() {
terminal.expectCommand(
"rpm -q docker --queryformat \"%{NAME}\\\\n%{EPOCH}\\\\n%{VERSION}\\\\n%{RELEASE}\\\\n%{ARCH}\" 2>&1",
0,
@@ -58,7 +58,7 @@ public class YumTest {
assertTrue(installed.isPresent());
assertEquals("vespa-node-admin", installed.get().getName());
- assertFalse(installed.get().getEpoch().isPresent());
+ assertEquals("0", installed.get().getEpoch().get());
assertEquals("6.283.62", installed.get().getVersion().get());
assertEquals("1.el7", installed.get().getRelease().get());
assertEquals("noarch", installed.get().getArchitecture().get());
@@ -77,6 +77,29 @@ public class YumTest {
}
@Test
+ public void testQueryInstalledMultiplePackages() {
+ terminal.expectCommand(
+ "rpm -q kernel-devel --queryformat \"%{NAME}\\\\n%{EPOCH}\\\\n%{VERSION}\\\\n%{RELEASE}\\\\n%{ARCH}\" 2>&1",
+ 0,
+ "kernel-devel\n" +
+ "(none)\n" +
+ "4.18.0\n" +
+ "305.7.1.el8_4\n" +
+ "x86_64\n" +
+ "kernel-devel\n" +
+ "(none)\n" +
+ "4.18.0\n" +
+ "240.15.1.el8_3\n" +
+ "x86_64\n");
+ try {
+ yum.queryInstalled(taskContext, "kernel-devel");
+ fail("Expected exception");
+ } catch (IllegalArgumentException e) {
+ assertEquals("Found multiple installed packages for 'kernel-devel'. Version is required to match package exactly", e.getMessage());
+ }
+ }
+
+ @Test
public void testAlreadyInstalled() {
mockRpmQuery("package-1", null);
terminal.expectCommand(
@@ -133,7 +156,7 @@ public class YumTest {
@Test
public void skipsYumInstallIfInRpm() {
- mockRpmQuery("package-1", YumPackageName.fromString("package-1-1.2.3-1"));
+ mockRpmQuery("package-1-0:1.2.3-1", YumPackageName.fromString("package-1-1.2.3-1"));
mockRpmQuery("package-2", YumPackageName.fromString("1:package-2-1.2.3-1.el7.x86_64"));
assertFalse(yum.install("package-1-1.2.3-1", "package-2").converge(taskContext));
}
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTesterTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTesterTest.java
index 93fffffb2fa..8bfc401be5e 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTesterTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTesterTest.java
@@ -8,7 +8,6 @@ import org.junit.Test;
import java.util.List;
import java.util.Optional;
import java.util.function.Function;
-import java.util.stream.Stream;
import static org.junit.Assert.assertEquals;
@@ -19,8 +18,8 @@ public class YumTesterTest {
private static final String[] packages = {"pkg1", "pkg2"};
private static final String[] repos = {"repo1", "repo2"};
- private static final YumPackageName minimalPackage = YumPackageName.fromString("my-pkg-1.13.1-0.el7");
- private static final YumPackageName fullPackage = YumPackageName.fromString("2:my-pkg-1.13.1-0.el7.x86_64");
+ private static final YumPackageName minimalPackage = YumPackageName.fromString("pkg-1.13.1-0.el7");
+ private static final YumPackageName fullPackage = YumPackageName.fromString("2:pkg-1.13.1-0.el7.x86_64");
private final TestTerminal terminal = new TestTerminal();
private final YumTester yum = new YumTester(terminal);
@@ -43,11 +42,9 @@ public class YumTesterTest {
@Test
public void expect_query_installed() {
- Stream.of(minimalPackage, fullPackage, null).forEach(pkg -> {
- yum.expectQueryInstalled(packages[0]).andReturn(pkg);
- assertEquals(Optional.ofNullable(pkg), yum.queryInstalled(context, packages[0]));
- terminal.verifyAllCommandsExecuted();
- });
+ yum.expectQueryInstalled(packages[0]).andReturn(fullPackage);
+ assertEquals(Optional.of(fullPackage), yum.queryInstalled(context, packages[0]));
+ terminal.verifyAllCommandsExecuted();
}
private void assertYumMethod(Function<YumTester, YumTester.GenericYumCommandExpectation> yumTesterExpectationFunction,
diff --git a/node-repository/CMakeLists.txt b/node-repository/CMakeLists.txt
index 24a8f7e4177..fe4e09dc8a1 100644
--- a/node-repository/CMakeLists.txt
+++ b/node-repository/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(node-repository)
install(FILES src/main/config/node-repository.xml
diff --git a/node-repository/pom.xml b/node-repository/pom.xml
index e7fdc560bc5..1732499d835 100644
--- a/node-repository/pom.xml
+++ b/node-repository/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
@@ -81,13 +81,7 @@
<dependency>
<groupId>org.questdb</groupId>
<artifactId>questdb</artifactId>
- <version>6.0.3</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>http-utils</artifactId>
- <version>${project.version}</version>
+ <version>6.0.4</version>
<scope>compile</scope>
</dependency>
diff --git a/node-repository/src/main/config/node-repository.xml b/node-repository/src/main/config/node-repository.xml
index 8a6e466fdf3..a501d7c8f14 100644
--- a/node-repository/src/main/config/node-repository.xml
+++ b/node-repository/src/main/config/node-repository.xml
@@ -1,5 +1,5 @@
<!-- services.xml snippet for the node repository. Included in config server services.xml if the package is installed-->
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<component id="com.yahoo.vespa.hosted.provision.provisioning.InfraDeployerImpl" bundle="node-repository"/>
<component id="com.yahoo.vespa.hosted.provision.autoscale.MetricsV2MetricsFetcher" bundle="node-repository"/>
<component id="com.yahoo.vespa.hosted.provision.autoscale.QuestMetricsDb" bundle="node-repository"/>
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/LockedNodeList.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/LockedNodeList.java
index e6186b8eb77..dc86daf2c67 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/LockedNodeList.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/LockedNodeList.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision;
import com.yahoo.transaction.Mutex;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NoSuchNodeException.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NoSuchNodeException.java
index 658a024e3f6..3b10f6c166b 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NoSuchNodeException.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NoSuchNodeException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision;
/**
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java
index 3dbafdc2aba..812befda432 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java
@@ -1,9 +1,10 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision;
import com.yahoo.component.Version;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ClusterMembership;
+import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.Flavor;
import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.NodeType;
@@ -17,13 +18,16 @@ import com.yahoo.vespa.hosted.provision.node.IP;
import com.yahoo.vespa.hosted.provision.node.NodeAcl;
import com.yahoo.vespa.hosted.provision.node.Reports;
import com.yahoo.vespa.hosted.provision.node.Status;
+import com.yahoo.vespa.hosted.provision.node.TrustStoreItem;
import java.time.Instant;
import java.util.Arrays;
import java.util.EnumSet;
+import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
+import java.util.stream.Collectors;
/**
* A node in the node repository. The identity of a node is given by its id.
@@ -46,8 +50,10 @@ public final class Node implements Nodelike {
private final Reports reports;
private final Optional<String> modelName;
private final Optional<TenantName> reservedTo;
- private final Optional<ApplicationId> exclusiveTo;
+ private final Optional<ApplicationId> exclusiveToApplicationId;
+ private final Optional<ClusterSpec.Type> exclusiveToClusterType;
private final Optional<String> switchHostname;
+ private final List<TrustStoreItem> trustStoreItems;
/** Record of the last event of each type happening to this node */
private final History history;
@@ -76,7 +82,8 @@ public final class Node implements Nodelike {
public Node(String id, IP.Config ipConfig, String hostname, Optional<String> parentHostname,
Flavor flavor, Status status, State state, Optional<Allocation> allocation, History history, NodeType type,
Reports reports, Optional<String> modelName, Optional<TenantName> reservedTo,
- Optional<ApplicationId> exclusiveTo, Optional<String> switchHostname) {
+ Optional<ApplicationId> exclusiveToApplicationId, Optional<ClusterSpec.Type> exclusiveToClusterType,
+ Optional<String> switchHostname, List<TrustStoreItem> trustStoreItems) {
this.id = Objects.requireNonNull(id, "A node must have an ID");
this.hostname = requireNonEmptyString(hostname, "A node must have a hostname");
this.ipConfig = Objects.requireNonNull(ipConfig, "A node must a have an IP config");
@@ -90,8 +97,10 @@ public final class Node implements Nodelike {
this.reports = Objects.requireNonNull(reports, "A null reports is not permitted");
this.modelName = Objects.requireNonNull(modelName, "A null modelName is not permitted");
this.reservedTo = Objects.requireNonNull(reservedTo, "reservedTo cannot be null");
- this.exclusiveTo = Objects.requireNonNull(exclusiveTo, "exclusiveTo cannot be null");
+ this.exclusiveToApplicationId = Objects.requireNonNull(exclusiveToApplicationId, "exclusiveToApplicationId cannot be null");
+ this.exclusiveToClusterType = Objects.requireNonNull(exclusiveToClusterType, "exclusiveToClusterType cannot be null");
this.switchHostname = requireNonEmptyString(switchHostname, "switchHostname cannot be null");
+ this.trustStoreItems = trustStoreItems.stream().distinct().collect(Collectors.toUnmodifiableList());
if (state == State.active)
requireNonEmpty(ipConfig.primary(), "Active node " + hostname + " must have at least one valid IP address");
@@ -110,8 +119,11 @@ public final class Node implements Nodelike {
if (type != NodeType.host && reservedTo.isPresent())
throw new IllegalArgumentException("Only tenant hosts can be reserved to a tenant");
- if (type != NodeType.host && exclusiveTo.isPresent())
+ if (type != NodeType.host && exclusiveToApplicationId.isPresent())
throw new IllegalArgumentException("Only tenant hosts can be exclusive to an application");
+
+ if (type != NodeType.host && exclusiveToClusterType.isPresent())
+ throw new IllegalArgumentException("Only tenant hosts can be exclusive to a cluster type");
}
/** Returns the IP config of this node */
@@ -182,17 +194,29 @@ public final class Node implements Nodelike {
public Optional<TenantName> reservedTo() { return reservedTo; }
/**
- * Returns the application this node is exclusive to, if any. Only hosts can be exclusive to an application.
+ * Returns the application this host is exclusive to, if any. Only tenant hosts can be exclusive to an application.
* If this is set, resources on this host cannot be allocated to any other application. This is set during
* provisioning and applies for the entire lifetime of the host
*/
- public Optional<ApplicationId> exclusiveTo() { return exclusiveTo; }
+ public Optional<ApplicationId> exclusiveToApplicationId() { return exclusiveToApplicationId; }
+
+ /**
+ * Returns the cluster type this host is exclusive to, if any. Only tenant hosts can be exclusive to a cluster type.
+ * If this is set, resources on this host cannot be allocated to any other cluster type. This is set during
+ * provisioning and applies for the entire lifetime of the host
+ */
+ public Optional<ClusterSpec.Type> exclusiveToClusterType() { return exclusiveToClusterType; }
/** Returns the hostname of the switch this node is connected to, if any */
public Optional<String> switchHostname() {
return switchHostname;
}
+ /** Returns the trusted certificates for this host if any. */
+ public List<TrustStoreItem> trustedCertificates() {
+ return trustStoreItems;
+ }
+
/**
* Returns a copy of this where wantToFail is set to true and history is updated to reflect this.
*/
@@ -281,13 +305,13 @@ public final class Node implements Nodelike {
/** Returns a node with the status assigned to the given value */
public Node with(Status status) {
return new Node(id, ipConfig, hostname, parentHostname, flavor, status, state, allocation, history, type,
- reports, modelName, reservedTo, exclusiveTo, switchHostname);
+ reports, modelName, reservedTo, exclusiveToApplicationId, exclusiveToClusterType, switchHostname, trustStoreItems);
}
/** Returns a node with the type assigned to the given value */
public Node with(NodeType type) {
return new Node(id, ipConfig, hostname, parentHostname, flavor, status, state, allocation, history, type,
- reports, modelName, reservedTo, exclusiveTo, switchHostname);
+ reports, modelName, reservedTo, exclusiveToApplicationId, exclusiveToClusterType, switchHostname, trustStoreItems);
}
/** Returns a node with the flavor assigned to the given value */
@@ -295,31 +319,31 @@ public final class Node implements Nodelike {
if (flavor.equals(this.flavor)) return this;
History updateHistory = history.with(new History.Event(History.Event.Type.resized, agent, instant));
return new Node(id, ipConfig, hostname, parentHostname, flavor, status, state, allocation, updateHistory, type,
- reports, modelName, reservedTo, exclusiveTo, switchHostname);
+ reports, modelName, reservedTo, exclusiveToApplicationId, exclusiveToClusterType, switchHostname, trustStoreItems);
}
/** Returns a copy of this with the reboot generation set to generation */
public Node withReboot(Generation generation) {
return new Node(id, ipConfig, hostname, parentHostname, flavor, status.withReboot(generation), state,
- allocation, history, type, reports, modelName, reservedTo, exclusiveTo, switchHostname);
+ allocation, history, type, reports, modelName, reservedTo, exclusiveToApplicationId, exclusiveToClusterType, switchHostname, trustStoreItems);
}
/** Returns a copy of this with the openStackId set */
public Node withOpenStackId(String openStackId) {
return new Node(openStackId, ipConfig, hostname, parentHostname, flavor, status, state,
- allocation, history, type, reports, modelName, reservedTo, exclusiveTo, switchHostname);
+ allocation, history, type, reports, modelName, reservedTo, exclusiveToApplicationId, exclusiveToClusterType, switchHostname, trustStoreItems);
}
/** Returns a copy of this with model name set to given value */
public Node withModelName(String modelName) {
return new Node(id, ipConfig, hostname, parentHostname, flavor, status, state,
- allocation, history, type, reports, Optional.of(modelName), reservedTo, exclusiveTo, switchHostname);
+ allocation, history, type, reports, Optional.of(modelName), reservedTo, exclusiveToApplicationId, exclusiveToClusterType, switchHostname, trustStoreItems);
}
/** Returns a copy of this with model name cleared */
public Node withoutModelName() {
return new Node(id, ipConfig, hostname, parentHostname, flavor, status, state,
- allocation, history, type, reports, Optional.empty(), reservedTo, exclusiveTo, switchHostname);
+ allocation, history, type, reports, Optional.empty(), reservedTo, exclusiveToApplicationId, exclusiveToClusterType, switchHostname, trustStoreItems);
}
/** Returns a copy of this with a history record saying it was detected to be down at this instant */
@@ -350,50 +374,55 @@ public final class Node implements Nodelike {
*/
public Node with(Allocation allocation) {
return new Node(id, ipConfig, hostname, parentHostname, flavor, status, state,
- Optional.of(allocation), history, type, reports, modelName, reservedTo, exclusiveTo, switchHostname);
+ Optional.of(allocation), history, type, reports, modelName, reservedTo, exclusiveToApplicationId, exclusiveToClusterType, switchHostname, trustStoreItems);
}
/** Returns a new Node without an allocation. */
public Node withoutAllocation() {
return new Node(id, ipConfig, hostname, parentHostname, flavor, status, state,
- Optional.empty(), history, type, reports, modelName, reservedTo, exclusiveTo, switchHostname);
+ Optional.empty(), history, type, reports, modelName, reservedTo, exclusiveToApplicationId, exclusiveToClusterType, switchHostname, trustStoreItems);
}
/** Returns a copy of this node with IP config set to the given value. */
public Node with(IP.Config ipConfig) {
return new Node(id, ipConfig, hostname, parentHostname, flavor, status, state,
- allocation, history, type, reports, modelName, reservedTo, exclusiveTo, switchHostname);
+ allocation, history, type, reports, modelName, reservedTo, exclusiveToApplicationId, exclusiveToClusterType, switchHostname, trustStoreItems);
}
/** Returns a copy of this node with the parent hostname assigned to the given value. */
public Node withParentHostname(String parentHostname) {
return new Node(id, ipConfig, hostname, Optional.of(parentHostname), flavor, status, state,
- allocation, history, type, reports, modelName, reservedTo, exclusiveTo, switchHostname);
+ allocation, history, type, reports, modelName, reservedTo, exclusiveToApplicationId, exclusiveToClusterType, switchHostname, trustStoreItems);
}
public Node withReservedTo(TenantName tenant) {
if (type != NodeType.host)
throw new IllegalArgumentException("Only host nodes can be reserved, " + hostname + " has type " + type);
return new Node(id, ipConfig, hostname, parentHostname, flavor, status, state,
- allocation, history, type, reports, modelName, Optional.of(tenant), exclusiveTo, switchHostname);
+ allocation, history, type, reports, modelName, Optional.of(tenant), exclusiveToApplicationId, exclusiveToClusterType, switchHostname, trustStoreItems);
}
/** Returns a copy of this node which is not reserved to a tenant */
public Node withoutReservedTo() {
return new Node(id, ipConfig, hostname, parentHostname, flavor, status, state,
- allocation, history, type, reports, modelName, Optional.empty(), exclusiveTo, switchHostname);
+ allocation, history, type, reports, modelName, Optional.empty(), exclusiveToApplicationId, exclusiveToClusterType, switchHostname, trustStoreItems);
+ }
+
+ public Node withExclusiveToApplicationId(ApplicationId exclusiveTo) {
+ return new Node(id, ipConfig, hostname, parentHostname, flavor, status, state,
+ allocation, history, type, reports, modelName, reservedTo, Optional.ofNullable(exclusiveTo), exclusiveToClusterType, switchHostname, trustStoreItems);
}
- public Node withExclusiveTo(ApplicationId exclusiveTo) {
+ public Node withExclusiveToClusterType(ClusterSpec.Type exclusiveTo) {
return new Node(id, ipConfig, hostname, parentHostname, flavor, status, state,
- allocation, history, type, reports, modelName, reservedTo, Optional.ofNullable(exclusiveTo), switchHostname);
+ allocation, history, type, reports, modelName, reservedTo, exclusiveToApplicationId, Optional.ofNullable(exclusiveTo), switchHostname, trustStoreItems);
}
/** Returns a copy of this node with switch hostname set to given value */
public Node withSwitchHostname(String switchHostname) {
return new Node(id, ipConfig, hostname, parentHostname, flavor, status, state,
- allocation, history, type, reports, modelName, reservedTo, exclusiveTo, Optional.ofNullable(switchHostname));
+ allocation, history, type, reports, modelName, reservedTo, exclusiveToApplicationId, exclusiveToClusterType, Optional.ofNullable(switchHostname), trustStoreItems);
}
/** Returns a copy of this node with switch hostname unset */
@@ -431,12 +460,18 @@ public final class Node implements Nodelike {
/** Returns a copy of this node with the given history. */
public Node with(History history) {
return new Node(id, ipConfig, hostname, parentHostname, flavor, status, state,
- allocation, history, type, reports, modelName, reservedTo, exclusiveTo, switchHostname);
+ allocation, history, type, reports, modelName, reservedTo, exclusiveToApplicationId, exclusiveToClusterType, switchHostname, trustStoreItems);
}
public Node with(Reports reports) {
return new Node(id, ipConfig, hostname, parentHostname, flavor, status, state,
- allocation, history, type, reports, modelName, reservedTo, exclusiveTo, switchHostname);
+ allocation, history, type, reports, modelName, reservedTo, exclusiveToApplicationId, exclusiveToClusterType, switchHostname, trustStoreItems);
+ }
+
+ public Node with(List<TrustStoreItem> trustStoreItems) {
+ return new Node(id, ipConfig, hostname, parentHostname, flavor, status, state,
+ allocation, history, type, reports, modelName, reservedTo, exclusiveToApplicationId, exclusiveToClusterType, switchHostname,
+ trustStoreItems);
}
private static Optional<String> requireNonEmptyString(Optional<String> value, String message) {
@@ -567,13 +602,15 @@ public final class Node implements Nodelike {
private String parentHostname;
private String modelName;
private TenantName reservedTo;
- private ApplicationId exclusiveTo;
+ private ApplicationId exclusiveToApplicationId;
+ private ClusterSpec.Type exclusiveToClusterType;
private String switchHostname;
private Allocation allocation;
private IP.Config ipConfig;
private Status status;
private Reports reports;
private History history;
+ private List<TrustStoreItem> trustStoreItems;
private Builder(String id, String hostname, Flavor flavor, State state, NodeType type) {
this.id = id;
@@ -598,8 +635,13 @@ public final class Node implements Nodelike {
return this;
}
- public Builder exclusiveTo(ApplicationId exclusiveTo) {
- this.exclusiveTo = exclusiveTo;
+ public Builder exclusiveToApplicationId(ApplicationId exclusiveTo) {
+ this.exclusiveToApplicationId = exclusiveTo;
+ return this;
+ }
+
+ public Builder exclusiveToClusterType(ClusterSpec.Type exclusiveTo) {
+ this.exclusiveToClusterType = exclusiveTo;
return this;
}
@@ -638,12 +680,18 @@ public final class Node implements Nodelike {
return this;
}
+ public Builder trustedCertificates(List<TrustStoreItem> trustStoreItems) {
+ this.trustStoreItems = trustStoreItems;
+ return this;
+ }
+
public Node build() {
return new Node(id, Optional.ofNullable(ipConfig).orElse(IP.Config.EMPTY), hostname, Optional.ofNullable(parentHostname),
- flavor, Optional.ofNullable(status).orElseGet(Status::initial), state, Optional.ofNullable(allocation),
- Optional.ofNullable(history).orElseGet(History::empty), type, Optional.ofNullable(reports).orElseGet(Reports::new),
- Optional.ofNullable(modelName), Optional.ofNullable(reservedTo), Optional.ofNullable(exclusiveTo),
- Optional.ofNullable(switchHostname));
+ flavor, Optional.ofNullable(status).orElseGet(Status::initial), state, Optional.ofNullable(allocation),
+ Optional.ofNullable(history).orElseGet(History::empty), type, Optional.ofNullable(reports).orElseGet(Reports::new),
+ Optional.ofNullable(modelName), Optional.ofNullable(reservedTo), Optional.ofNullable(exclusiveToApplicationId),
+ Optional.ofNullable(exclusiveToClusterType), Optional.ofNullable(switchHostname),
+ Optional.ofNullable(trustStoreItems).orElseGet(List::of));
}
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java
index 594f2b6e619..dd3c26fd653 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision;
import com.yahoo.collections.AbstractFilteringList;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeMutex.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeMutex.java
index 814b40a73b7..60fd07951c6 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeMutex.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeMutex.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision;
import com.yahoo.transaction.Mutex;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepoStats.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepoStats.java
index 05a98c5b4da..a2965db696b 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepoStats.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepoStats.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision;
import com.yahoo.collections.Pair;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
index f084b83bf97..d2287d32dec 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
@@ -196,13 +196,11 @@ public class NodeRepository extends AbstractComponent {
.collect(Collectors.toUnmodifiableList());
}
- /** Removes this application: Active nodes are deactivated while all non-active nodes are set dirty. */
+ /** Removes this application: all nodes are set dirty. */
public void remove(ApplicationTransaction transaction) {
NodeList applicationNodes = nodes().list().owner(transaction.application());
- NodeList activeNodes = applicationNodes.state(State.active);
- nodes().deactivate(activeNodes.asList(), transaction);
db.writeTo(State.dirty,
- applicationNodes.except(activeNodes.asSet()).asList(),
+ applicationNodes.asList(),
Agent.system,
Optional.of("Application is removed"),
transaction.nested());
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Nodelike.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Nodelike.java
index 75d475e7947..9a15fc9f609 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Nodelike.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Nodelike.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision;
import com.yahoo.config.provision.NodeResources;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodesAndHosts.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodesAndHosts.java
new file mode 100644
index 00000000000..70e5cf14b54
--- /dev/null
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodesAndHosts.java
@@ -0,0 +1,83 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.provision;
+
+import com.yahoo.vespa.hosted.provision.node.IP;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * Wraps a NodeList and builds a host to children mapping for faster access
+ * as that is done very frequently.
+ *
+ * @author baldersheim
+ */
+public class NodesAndHosts<NL extends NodeList> {
+ private final NL nodes;
+ private final Map<String, HostAndNodes> host2Nodes = new HashMap<>();
+ private final Set<String> allPrimaryIps = new HashSet<>();
+ private final Set<String> allHostNames;
+
+ public static <L extends NodeList> NodesAndHosts<L> create(L nodes) {
+ return new NodesAndHosts<L>(nodes);
+ }
+
+ private NodesAndHosts(NL nodes) {
+ this.nodes = nodes;
+ nodes.forEach(node -> node.ipConfig().primary().forEach(ip -> allPrimaryIps.add(ip)));
+ allHostNames = nodes.stream().map(Node::hostname).collect(Collectors.toSet());
+ nodes.forEach(node -> {
+ node.parentHostname().ifPresentOrElse(
+ parent -> host2Nodes.computeIfAbsent(parent, key -> new HostAndNodes()).add(node),
+ () -> host2Nodes.computeIfAbsent(node.hostname(), key -> new HostAndNodes()).setHost(node));
+ });
+
+ }
+
+ /// Return the NodeList used for construction
+ public NL nodes() { return nodes; }
+
+ public NodeList childrenOf(Node host) {
+ return childrenOf(host.hostname());
+ }
+ public NodeList childrenOf(String hostname) {
+ HostAndNodes hostAndNodes = host2Nodes.get(hostname);
+ return hostAndNodes != null ? NodeList.copyOf(hostAndNodes.children) : NodeList.of();
+ }
+
+ public Optional<Node> parentOf(Node node) {
+ if (node.parentHostname().isEmpty()) return Optional.empty();
+
+ HostAndNodes hostAndNodes = host2Nodes.get(node.parentHostname().get());
+ return hostAndNodes != null ? Optional.ofNullable(hostAndNodes.host) : Optional.empty();
+ }
+
+ /**
+ * Returns the number of unused IP addresses in the pool, assuming any and all unaccounted for hostnames
+ * in the pool are resolved to exactly 1 IP address (or 2 with {@link IP.IpAddresses.Protocol#dualStack}).
+ */
+ public int eventuallyUnusedIpAddressCount(Node host) {
+ // The count in this method relies on the size of the IP address pool if that's non-empty,
+ // otherwise fall back to the address/hostname pool.
+ return (int) (host.ipConfig().pool().ipSet().isEmpty()
+ ? host.ipConfig().pool().getAddressList().stream().filter(address -> !allHostNames.contains(address.hostname())).count()
+ : host.ipConfig().pool().ipSet().stream().filter(address -> !allPrimaryIps.contains(address)).count());
+ }
+
+ private static class HostAndNodes {
+ private Node host;
+ private final List<Node> children;
+ HostAndNodes() {
+ this.host = null;
+ children = new ArrayList<>();
+ }
+ void setHost(Node host) { this.host = host; }
+ void add(Node child) { children.add(child); }
+ }
+}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Application.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Application.java
index c8d5e4361a5..3c2ab8cead2 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Application.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Application.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.applications;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Applications.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Applications.java
index fe363bf3786..3d28a7d7ca3 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Applications.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Applications.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.applications;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Cluster.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Cluster.java
index d4bbe6adc1b..5478999e4fe 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Cluster.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Cluster.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.applications;
import com.yahoo.config.provision.ClusterResources;
@@ -82,7 +82,7 @@ public class Cluster {
public boolean shouldSuggestResources(ClusterResources currentResources) {
if (suggested.isEmpty()) return false;
if (suggested.get().resources().isWithin(min, max)) return false;
- if (Autoscaler.similar(suggested.get().resources(), currentResources)) return false;
+ if ( ! Autoscaler.worthRescaling(currentResources, suggested.get().resources())) return false;
return true;
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/ScalingEvent.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/ScalingEvent.java
index 745fdcd736d..e88989514c4 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/ScalingEvent.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/ScalingEvent.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.applications;
import com.yahoo.config.provision.ClusterResources;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Status.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Status.java
index ace05d85bbd..0e0d8b2310b 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Status.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Status.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.applications;
import java.util.Objects;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java
index b799e0056f3..f1e707be7b4 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import com.yahoo.config.provision.ClusterResources;
@@ -43,10 +43,10 @@ public class AllocatableClusterResources {
this.fulfilment = 1;
}
- public AllocatableClusterResources(List<Node> nodes, NodeRepository nodeRepository, boolean exclusive) {
+ public AllocatableClusterResources(List<Node> nodes, NodeRepository nodeRepository) {
this.nodes = nodes.size();
this.groups = (int)nodes.stream().map(node -> node.allocation().get().membership().cluster().group()).distinct().count();
- this.realResources = averageRealResourcesOf(nodes, nodeRepository, exclusive); // Average since we average metrics over nodes
+ this.realResources = averageRealResourcesOf(nodes, nodeRepository); // Average since we average metrics over nodes
this.advertisedResources = nodes.get(0).allocation().get().requestedResources();
this.clusterSpec = nodes.get(0).allocation().get().membership().cluster();
this.fulfilment = 1;
@@ -124,10 +124,10 @@ public class AllocatableClusterResources {
(fulfilment < 1.0 ? " (fulfilment " + fulfilment + ")" : "");
}
- private static NodeResources averageRealResourcesOf(List<Node> nodes, NodeRepository nodeRepository, boolean exclusive) {
+ private static NodeResources averageRealResourcesOf(List<Node> nodes, NodeRepository nodeRepository) {
NodeResources sum = new NodeResources(0, 0, 0, 0);
for (Node node : nodes)
- sum = sum.add(nodeRepository.resourcesCalculator().realResourcesOf(node, nodeRepository, exclusive).justNumbers());
+ sum = sum.add(nodeRepository.resourcesCalculator().realResourcesOf(node, nodeRepository).justNumbers());
return nodes.get(0).allocation().get().requestedResources().justNonNumbers()
.withVcpu(sum.vcpu() / nodes.size())
.withMemoryGb(sum.memoryGb() / nodes.size())
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocationOptimizer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocationOptimizer.java
index 6eaae755708..6fd9801164a 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocationOptimizer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocationOptimizer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import com.yahoo.config.provision.ClusterResources;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Autoscaler.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Autoscaler.java
index ccaf23c49ed..dcfb8fb7246 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Autoscaler.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Autoscaler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import com.yahoo.config.provision.ClusterResources;
@@ -85,7 +85,7 @@ public class Autoscaler {
"Have measurements from " + clusterModel.nodeTimeseries().nodesMeasured() +
" nodes, but require from " + clusterNodes.size());
- var currentAllocation = new AllocatableClusterResources(clusterNodes.asList(), nodeRepository, cluster.exclusive());
+ var currentAllocation = new AllocatableClusterResources(clusterNodes.asList(), nodeRepository);
var target = ResourceTarget.idealLoad(clusterModel, currentAllocation);
Optional<AllocatableClusterResources> bestAllocation =
@@ -93,7 +93,7 @@ public class Autoscaler {
if (bestAllocation.isEmpty())
return Advice.dontScale(Status.insufficient, "No allocations are possible within configured limits");
- if (similar(bestAllocation.get().realResources(), currentAllocation.realResources())) {
+ if (! worthRescaling(currentAllocation.realResources(), bestAllocation.get().realResources())) {
if (bestAllocation.get().fulfilment() < 1)
return Advice.dontScale(Status.insufficient, "Configured limits prevents better scaling of this cluster");
else
@@ -122,12 +122,19 @@ public class Autoscaler {
return true;
}
- /** Returns true if both total real resources and total cost are similar */
- public static boolean similar(ClusterResources a, ClusterResources b) {
- return similar(a.cost(), b.cost(), costDifferenceWorthReallocation) &&
- similar(a.totalResources().vcpu(), b.totalResources().vcpu(), resourceDifferenceWorthReallocation) &&
- similar(a.totalResources().memoryGb(), b.totalResources().memoryGb(), resourceDifferenceWorthReallocation) &&
- similar(a.totalResources().diskGb(), b.totalResources().diskGb(), resourceDifferenceWorthReallocation);
+ /** Returns true if it is worthwhile to make the given resource change, false if it is too insignificant */
+ public static boolean worthRescaling(ClusterResources from, ClusterResources to) {
+ // *Increase* if needed with no regard for cost difference to prevent running out of a resource
+ if (meaningfulIncrease(from.totalResources().vcpu(), to.totalResources().vcpu())) return true;
+ if (meaningfulIncrease(from.totalResources().memoryGb(), to.totalResources().memoryGb())) return true;
+ if (meaningfulIncrease(from.totalResources().diskGb(), to.totalResources().diskGb())) return true;
+
+ // Otherwise, only *decrease* if it reduces cost meaningfully
+ return ! similar(from.cost(), to.cost(), costDifferenceWorthReallocation);
+ }
+
+ private static boolean meaningfulIncrease(double from, double to) {
+ return from < to && ! similar(from, to, resourceDifferenceWorthReallocation);
}
private static boolean similar(double r1, double r2, double threshold) {
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterMetricSnapshot.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterMetricSnapshot.java
index f13d49e35a9..e60bab4c80c 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterMetricSnapshot.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterMetricSnapshot.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import java.time.Instant;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterModel.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterModel.java
index 4d4ed146f5a..35aafd3e0f4 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterModel.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterModel.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import com.yahoo.config.provision.ClusterSpec;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterNodesTimeseries.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterNodesTimeseries.java
index 9b77d8b48c8..f5657966e5f 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterNodesTimeseries.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterNodesTimeseries.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import com.yahoo.vespa.hosted.provision.NodeList;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterTimeseries.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterTimeseries.java
index 79e2d3b3398..96896bb1ba0 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterTimeseries.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterTimeseries.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import com.yahoo.config.provision.ClusterSpec;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Limits.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Limits.java
index cafea4b0eaf..3c9cbfe2620 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Limits.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Limits.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import com.yahoo.config.provision.Capacity;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Load.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Load.java
index 1e400bd2627..a52b048a9e0 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Load.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Load.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import com.yahoo.config.provision.NodeResources;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MemoryMetricsDb.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MemoryMetricsDb.java
index 6b8ba3f7dc4..d9544b334ea 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MemoryMetricsDb.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MemoryMetricsDb.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import com.yahoo.collections.Pair;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsDb.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsDb.java
index ba317c0a58e..a7e13486a48 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsDb.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsDb.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import com.yahoo.collections.Pair;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsFetcher.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsFetcher.java
index ba833519b0c..b9f16a27d73 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsFetcher.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsFetcher.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import com.yahoo.collections.Pair;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsResponse.java
index 3a037efed98..6ea5df5e3bf 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsResponse.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsResponse.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import com.yahoo.collections.ListMap;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsV2MetricsFetcher.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsV2MetricsFetcher.java
index 7d870bd678d..21745f23177 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsV2MetricsFetcher.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsV2MetricsFetcher.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import ai.vespa.util.http.hc5.VespaAsyncHttpClientBuilder;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricSnapshot.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricSnapshot.java
index 6329d350642..706692d58d5 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricSnapshot.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricSnapshot.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import java.time.Instant;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/NodeTimeseries.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/NodeTimeseries.java
index f8100677b10..864df9a16c4 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/NodeTimeseries.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/NodeTimeseries.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import java.time.Instant;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/QuestMetricsDb.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/QuestMetricsDb.java
index b57b3070d15..08a9e373085 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/QuestMetricsDb.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/QuestMetricsDb.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import com.google.inject.Inject;
@@ -333,6 +333,9 @@ public class QuestMetricsDb extends AbstractComponent implements MetricsDb {
SqlCompiler sqlCompiler = sqlCompilerPool.alloc();
try {
return sqlCompiler.compile(sql, context);
+ } catch (SqlException e) {
+ log.log(Level.WARNING, "Could not execute SQL statement '" + sql + "'");
+ throw e;
} finally {
sqlCompilerPool.free(sqlCompiler);
}
@@ -365,35 +368,15 @@ public class QuestMetricsDb extends AbstractComponent implements MetricsDb {
}
TableWriter getWriter() {
- return engine().getWriter(newContext().getCairoSecurityContext(), name);
+ return engine().getWriter(newContext().getCairoSecurityContext(), name, "getWriter");
}
void gc() {
synchronized (writeLock) {
- // We remove full days at once and we want to see at least three days to not every only see weekend data
- Instant oldestToKeep = clock.instant().minus(Duration.ofDays(4));
- SqlExecutionContext context = newContext();
- int partitions = 0;
try {
- List<String> removeList = new ArrayList<>();
- for (String dirEntry : dir.list()) {
- File partitionDir = new File(dir, dirEntry);
- if (!partitionDir.isDirectory()) continue;
-
- partitions++;
- DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME.withZone(ZoneId.of("UTC"));
- Instant partitionDay = Instant.from(formatter.parse(dirEntry.substring(0, 10) + "T00:00:00"));
- if (partitionDay.isBefore(oldestToKeep))
- removeList.add(dirEntry);
-
- }
- // Remove unless all partitions are old: Removing all partitions "will be supported in the future"
- if (removeList.size() < partitions && !removeList.isEmpty()) {
- issue("alter table " + name + " drop partition list " +
- removeList.stream().map(dir -> "'" + dir + "'").collect(Collectors.joining(",")),
- context);
- }
- } catch (SqlException e) {
+ issue("alter table " + name + " drop partition where at < dateadd('d', -4, now());", newContext());
+ }
+ catch (SqlException e) {
log.log(Level.WARNING, "Failed to gc old metrics data in " + dir + " table " + name, e);
}
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ResourceTarget.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ResourceTarget.java
index 3b8b7f08684..72836baaf5b 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ResourceTarget.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ResourceTarget.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import com.yahoo.config.provision.NodeResources;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancer.java
index a6bb57bef29..4befa14942a 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.lb;
import com.yahoo.vespa.hosted.provision.maintenance.LoadBalancerExpirer;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerId.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerId.java
index 3630cf4c1e4..7a699feea4d 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerId.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerId.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.lb;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerService.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerService.java
index 40f9b330634..ef127e04fba 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerService.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerService.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.lb;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerServiceMock.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerServiceMock.java
index f752cbc4349..51f59bc3ea0 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerServiceMock.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerServiceMock.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.lb;
import com.google.common.collect.ImmutableSet;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerSpec.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerSpec.java
index b76f5ba2bcf..f29cdeaa768 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerSpec.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerSpec.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.lb;
import com.google.common.collect.ImmutableSortedSet;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancers.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancers.java
index 9a2652e884c..d2c1aab72e2 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancers.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancers.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.lb;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/Real.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/Real.java
index 56a2e8aef8b..b8ebf808ae7 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/Real.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/Real.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.lb;
import com.google.common.net.InetAddresses;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerService.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerService.java
index e17e5a5a449..44fc8cf53b5 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerService.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerService.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.lb;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/package-info.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/package-info.java
index cdcf58b81e3..85288e67b57 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/package-info.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author mpolden
*/
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java
index 24160c19dfa..d6ef152dcb2 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.concurrent.DaemonThreadFactory;
@@ -9,7 +9,7 @@ import com.yahoo.vespa.hosted.provision.NodeRepository;
import java.time.Duration;
import java.time.Instant;
-import java.util.Set;
+import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
@@ -62,28 +62,28 @@ public abstract class ApplicationMaintainer extends NodeRepositoryMaintainer {
* The default implementation deploys asynchronously to make sure we do all applications timely
* even when deployments are slow.
*/
- protected void deploy(ApplicationId application) {
+ protected void deploy(ApplicationId application, String reason) {
if (pendingDeployments.addIfAbsent(application)) { // Avoid queuing multiple deployments for same application
- deploymentExecutor.execute(() -> deployWithLock(application));
+ deploymentExecutor.execute(() -> deployWithLock(application, reason));
}
}
protected Deployer deployer() { return deployer; }
/** Returns the applications that should be maintained by this now. */
- protected abstract Set<ApplicationId> applicationsNeedingMaintenance();
+ protected abstract Map<ApplicationId, String> applicationsNeedingMaintenance();
/**
* Redeploy this application. A lock will be taken for the duration of the deployment activation
- *
- * @return whether it was successfully deployed
*/
- protected final boolean deployWithLock(ApplicationId application) {
+ protected final void deployWithLock(ApplicationId application, String reason) {
try (MaintenanceDeployment deployment = new MaintenanceDeployment(application, deployer, metric, nodeRepository())) {
- if ( ! deployment.isValid()) return false; // this will be done at another config server
- if ( ! canDeployNow(application)) return false; // redeployment is no longer needed
- log.log(Level.INFO, application + " will be deployed, last deploy time " + getLastDeployTime(application));
- return deployment.activate().isPresent();
+ if ( ! deployment.isValid()) return; // this will be done at another config server
+ if ( ! canDeployNow(application)) return; // redeployment is no longer needed
+ log.log(Level.INFO, () -> application + " will be redeployed" +
+ (reason == null || reason.isBlank() ? "" : " due to " + reason) +
+ ", last deploy time " + getLastDeployTime(application));
+ deployment.activate();
} finally {
pendingDeployments.remove(application);
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainer.java
index 3914a0c9f07..84d677abde6 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.ApplicationId;
@@ -82,7 +82,7 @@ public class AutoscalingMaintainer extends NodeRepositoryMaintainer {
applications().put(application.get().with(updatedCluster), lock);
if (advice.isPresent() && advice.target().isPresent() && !cluster.get().targetResources().equals(advice.target())) {
// 2. Also autoscale
- logAutoscaling(advice.target().get(), applicationId, updatedCluster, clusterNodes);
+ logAutoscaling(advice.target().get(), applicationId, clusterNodes);
try (MaintenanceDeployment deployment = new MaintenanceDeployment(applicationId, deployer, metric, nodeRepository())) {
if (deployment.isValid())
deployment.activate();
@@ -121,11 +121,8 @@ public class AutoscalingMaintainer extends NodeRepositoryMaintainer {
return cluster.with(event.withCompletion(completionTime));
}
- private void logAutoscaling(ClusterResources target,
- ApplicationId application,
- Cluster cluster,
- NodeList clusterNodes) {
- ClusterResources current = new AllocatableClusterResources(clusterNodes.asList(), nodeRepository(), cluster.exclusive()).advertisedResources();
+ private void logAutoscaling(ClusterResources target, ApplicationId application, NodeList clusterNodes) {
+ ClusterResources current = new AllocatableClusterResources(clusterNodes.asList(), nodeRepository()).advertisedResources();
log.info("Autoscaling " + application + " " + clusterNodes.clusterSpec() + ":" +
"\nfrom " + toString(current) + "\nto " + toString(target));
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DirtyExpirer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DirtyExpirer.java
index f072891f210..08898c47129 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DirtyExpirer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DirtyExpirer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.jdisc.Metric;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java
index 0eb2038e233..9c5b556b309 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java
@@ -22,6 +22,7 @@ import com.yahoo.vespa.hosted.provision.LockedNodeList;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeList;
import com.yahoo.vespa.hosted.provision.NodeRepository;
+import com.yahoo.vespa.hosted.provision.NodesAndHosts;
import com.yahoo.vespa.hosted.provision.node.Agent;
import com.yahoo.vespa.hosted.provision.node.History;
import com.yahoo.vespa.hosted.provision.node.IP;
@@ -206,7 +207,7 @@ public class DynamicProvisioningMaintainer extends NodeRepositoryMaintainer {
return nodeList.stream()
.filter(node -> Nodes.canAllocateTenantNodeTo(node, true))
.filter(node -> node.reservedTo().isEmpty())
- .filter(node -> node.exclusiveTo().isEmpty())
+ .filter(node -> node.exclusiveToApplicationId().isEmpty())
.collect(Collectors.toMap(Node::hostname, Function.identity()));
}
@@ -245,7 +246,7 @@ public class DynamicProvisioningMaintainer extends NodeRepositoryMaintainer {
Version osVersion = nodeRepository().osVersions().targetFor(NodeType.host).orElse(Version.emptyVersion);
List<Integer> provisionIndices = nodeRepository().database().readProvisionIndices(count);
List<Node> hosts = hostProvisioner.provisionHosts(provisionIndices, NodeType.host, nodeResources,
- ApplicationId.defaultId(), osVersion, HostSharing.shared)
+ ApplicationId.defaultId(), osVersion, HostSharing.shared, Optional.empty())
.stream()
.map(ProvisionedHost::generateHost)
.collect(Collectors.toList());
@@ -269,8 +270,8 @@ public class DynamicProvisioningMaintainer extends NodeRepositoryMaintainer {
ArrayList<Node> mutableNodes) {
for (int clusterIndex = 0; clusterIndex < preprovisionCapacity.size(); ++clusterIndex) {
ClusterCapacity clusterCapacity = preprovisionCapacity.get(clusterIndex);
- LockedNodeList nodeList = new LockedNodeList(mutableNodes, () -> {});
- List<Node> candidates = findCandidates(clusterCapacity, clusterIndex, nodeList);
+ NodesAndHosts<LockedNodeList> nodesAndHosts = NodesAndHosts.create(new LockedNodeList(mutableNodes, () -> {}));
+ List<Node> candidates = findCandidates(clusterCapacity, clusterIndex, nodesAndHosts);
int deficit = Math.max(0, clusterCapacity.count() - candidates.size());
if (deficit > 0) {
return Optional.of(clusterCapacity.withCount(deficit));
@@ -283,7 +284,7 @@ public class DynamicProvisioningMaintainer extends NodeRepositoryMaintainer {
return Optional.empty();
}
- private List<Node> findCandidates(ClusterCapacity clusterCapacity, int clusterIndex, LockedNodeList nodeList) {
+ private List<Node> findCandidates(ClusterCapacity clusterCapacity, int clusterIndex, NodesAndHosts<LockedNodeList> nodesAndHosts) {
NodeResources nodeResources = toNodeResources(clusterCapacity);
// We'll allocate each ClusterCapacity as a unique cluster in a dummy application
@@ -296,7 +297,7 @@ public class DynamicProvisioningMaintainer extends NodeRepositoryMaintainer {
NodeSpec nodeSpec = NodeSpec.from(clusterCapacity.count(), nodeResources, false, true);
int wantedGroups = 1;
- NodePrioritizer prioritizer = new NodePrioritizer(nodeList, applicationId, clusterSpec, nodeSpec, wantedGroups,
+ NodePrioritizer prioritizer = new NodePrioritizer(nodesAndHosts, applicationId, clusterSpec, nodeSpec, wantedGroups,
true, nodeRepository().nameResolver(), nodeRepository().resourcesCalculator(),
nodeRepository().spareCount());
List<NodeCandidate> nodeCandidates = prioritizer.collect(List.of());
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ExpeditedChangeApplicationMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ExpeditedChangeApplicationMaintainer.java
index 39183688340..fa6b201def4 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ExpeditedChangeApplicationMaintainer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ExpeditedChangeApplicationMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.ApplicationId;
@@ -9,14 +9,13 @@ import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeList;
import com.yahoo.vespa.hosted.provision.NodeRepository;
import com.yahoo.vespa.hosted.provision.node.Agent;
-import com.yahoo.vespa.hosted.provision.node.History;
import java.time.Duration;
import java.time.Instant;
-import java.util.LinkedHashSet;
+import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Optional;
-import java.util.Set;
import java.util.stream.Collectors;
/**
@@ -40,15 +39,27 @@ public class ExpeditedChangeApplicationMaintainer extends ApplicationMaintainer
}
@Override
- protected Set<ApplicationId> applicationsNeedingMaintenance() {
- Map<ApplicationId, NodeList> nodesByApplication = nodeRepository().nodes().list()
- .nodeType(NodeType.tenant, NodeType.proxy)
- .matching(node -> node.allocation().isPresent())
- .groupingBy(node -> node.allocation().get().owner());
- return nodesByApplication.entrySet().stream()
- .filter(entry -> hasNodesWithChanges(entry.getKey(), entry.getValue()))
- .map(Map.Entry::getKey)
- .collect(Collectors.toCollection(LinkedHashSet::new));
+ protected Map<ApplicationId, String> applicationsNeedingMaintenance() {
+ var applications = new HashMap<ApplicationId, String>();
+
+ nodeRepository().nodes()
+ .list()
+ .nodeType(NodeType.tenant, NodeType.proxy)
+ .matching(node -> node.allocation().isPresent())
+ .groupingBy(node -> node.allocation().get().owner())
+ .forEach((applicationId, nodes) -> {
+ hasNodesWithChanges(applicationId, nodes)
+ .ifPresent(reason -> applications.put(applicationId, reason));
+ });
+
+ // A ready proxy node should trigger a redeployment as it will activate the node.
+ if (!nodeRepository().nodes().list(Node.State.ready, Node.State.reserved).nodeType(NodeType.proxy).isEmpty()) {
+ applications.merge(ApplicationId.from("hosted-vespa", "routing", "default"),
+ "nodes being ready",
+ (oldValue, newValue) -> oldValue + ", " + newValue);
+ }
+
+ return applications;
}
/**
@@ -56,22 +67,29 @@ public class ExpeditedChangeApplicationMaintainer extends ApplicationMaintainer
* longer to deploy than the (short) maintenance interval of this
*/
@Override
- protected void deploy(ApplicationId application) {
- boolean deployed = deployWithLock(application);
- if (deployed)
- log.info("Redeployed application " + application.toShortString() +
- " as an expedited change was made to its nodes");
+ protected void deploy(ApplicationId application, String reason) {
+ deployWithLock(application, reason);
}
- private boolean hasNodesWithChanges(ApplicationId applicationId, NodeList nodes) {
+ /** Returns the reason for doing an expedited deploy. */
+ private Optional<String> hasNodesWithChanges(ApplicationId applicationId, NodeList nodes) {
Optional<Instant> lastDeployTime = deployer().lastDeployTime(applicationId);
- if (lastDeployTime.isEmpty()) return false;
+ if (lastDeployTime.isEmpty()) return Optional.empty();
+
+ List<String> reasons = nodes.stream()
+ .flatMap(node -> node.history()
+ .events()
+ .stream()
+ .filter(event -> expediteChangeBy(event.agent()))
+ .filter(event -> lastDeployTime.get().isBefore(event.at()))
+ .map(event -> event.type() + (event.agent() == Agent.system ? "" : " by " + event.agent())))
+ .sorted()
+ .distinct()
+ .collect(Collectors.toList());
- return nodes.stream()
- .flatMap(node -> node.history().events().stream())
- .filter(event -> expediteChangeBy(event.agent()))
- .map(History.Event::at)
- .anyMatch(e -> lastDeployTime.get().isBefore(e));
+ return reasons.isEmpty() ?
+ Optional.empty() :
+ Optional.of("recent node events: [" + String.join(", ", reasons) + "]");
}
@Override
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Expirer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Expirer.java
index 25108425e6e..5a77fcca85c 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Expirer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Expirer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.jdisc.Metric;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java
index 7505ce42668..6133705ed59 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.Environment;
@@ -42,9 +42,6 @@ import java.util.stream.Collectors;
public class FailedExpirer extends NodeRepositoryMaintainer {
private static final Logger log = Logger.getLogger(FailedExpirer.class.getName());
- // Try recycling nodes until reaching this many failures
- // TODO: Consider removing this altogether as this effectively always recycles nodes
- private static final int maxAllowedFailures = 50;
private final NodeRepository nodeRepository;
private final Duration statefulExpiry; // Stateful nodes: Grace period to allow recovery of data
@@ -107,16 +104,11 @@ public class FailedExpirer extends NodeRepositoryMaintainer {
"unparked children: %s", candidate.hostname(),
String.join(", ", unparkedChildren)));
}
- } else if (!failCountIndicatesHardwareIssue(candidate)) {
+ } else {
nodesToRecycle.add(candidate);
}
}
nodeRepository.nodes().deallocate(nodesToRecycle, Agent.FailedExpirer, "Expired by FailedExpirer");
}
- /** Returns whether the current node fail count should be used as an indicator of hardware issue */
- private boolean failCountIndicatesHardwareIssue(Node node) {
- return node.type().isHost() && node.status().failCount() >= maxAllowedFailures;
- }
-
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypter.java
index a4569f03d82..017e30c2d46 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypter.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypter.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.component.Version;
@@ -116,9 +116,6 @@ public class HostEncrypter extends NodeRepositoryMaintainer {
}
private boolean encryptHost(Node host, NodeList allNodes, Set<ApplicationId> deferredApplications) {
- // TODO: Require a minimum number of proxies in Orchestrator. For now skip proxy hosts.
- if (host.type() == NodeType.proxyhost) return false;
-
Set<ApplicationId> applicationsOnHost = allNodes.childrenOf(host).stream()
.filter(node -> node.allocation().isPresent())
.map(node -> node.allocation().get().owner())
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveExpirer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveExpirer.java
index 238f89fc448..81ba2870a92 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveExpirer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveExpirer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.NodeType;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureProvisioner.java
index d9f5ea6a7a9..5392df3d5b3 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureProvisioner.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureProvisioner.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.InfraDeployer;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureVersions.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureVersions.java
index 00d6282d40f..4f913bb55dd 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureVersions.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureVersions.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.component.Version;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirer.java
index c3d6f5c42b8..3b74533772b 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.google.common.collect.Sets;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java
index 892372f27e7..9cffc361444 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java
@@ -23,6 +23,8 @@ import java.util.function.Supplier;
import java.util.logging.Level;
import java.util.logging.Logger;
+import static com.yahoo.vespa.flags.Flags.USE_APPLICATION_LOCK_IN_MAINTENANCE_DEPLOYMENT;
+
/**
* A wrapper of a deployment suitable for maintenance.
* This is a single-use, single-thread object.
@@ -46,7 +48,11 @@ class MaintenanceDeployment implements Closeable {
NodeRepository nodeRepository) {
this.application = application;
this.metric = metric;
- Optional<Mutex> lock = tryLock(application, nodeRepository);
+
+ Optional<Mutex> lock = USE_APPLICATION_LOCK_IN_MAINTENANCE_DEPLOYMENT.bindTo(nodeRepository.flagSource()).value()
+ ? tryLock(application, nodeRepository)
+ : Optional.of(() -> { });
+
try {
deployment = tryDeployment(lock, application, deployer, nodeRepository);
this.lock = lock;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java
index d8bbf305b57..725e3fccec5 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.collections.Pair;
@@ -216,7 +216,6 @@ public class MetricsReporter extends NodeRepositoryMaintainer {
.ifPresent(info -> {
int suspended = info.status().isSuspended() ? 1 : 0;
metric.set("suspended", suspended, context);
- metric.set("allowedToBeDown", suspended, context); // remove summer 2020.
long suspendedSeconds = info.suspendedSince()
.map(suspendedSince -> Duration.between(suspendedSince, clock().instant()).getSeconds())
.orElse(0L);
@@ -248,6 +247,8 @@ public class MetricsReporter extends NodeRepositoryMaintainer {
metric.set("someServicesDown", (numberOfServicesDown > 0 ? 1 : 0), context);
+ metric.set("numberOfServicesUnknown", servicesCount.getOrDefault(ServiceStatus.UNKNOWN, 0L), context);
+
boolean down = NodeHealthTracker.allDown(services);
metric.set("nodeFailerBadNode", (down ? 1 : 0), context);
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java
index f16459ee8b9..5f174b89858 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.Deployer;
@@ -155,17 +155,13 @@ public class NodeFailer extends NodeRepositoryMaintainer {
Map<Node, String> nodesByFailureReason = new HashMap<>();
for (Node node : nodeRepository().nodes().list(Node.State.ready)) {
- if (expectConfigRequests(node) && ! hasNodeRequestedConfigAfter(node, oldestAcceptableRequestTime)) {
- nodesByFailureReason.put(node, "Not receiving config requests from node");
- } else {
- Node hostNode = node.parentHostname().flatMap(parent -> nodeRepository().nodes().node(parent)).orElse(node);
- List<String> failureReports = reasonsToFailParentHost(hostNode);
- if (failureReports.size() > 0) {
- if (hostNode.equals(node)) {
- nodesByFailureReason.put(node, "Host has failure reports: " + failureReports);
- } else {
- nodesByFailureReason.put(node, "Parent (" + hostNode + ") has failure reports: " + failureReports);
- }
+ Node hostNode = node.parentHostname().flatMap(parent -> nodeRepository().nodes().node(parent)).orElse(node);
+ List<String> failureReports = reasonsToFailParentHost(hostNode);
+ if (failureReports.size() > 0) {
+ if (hostNode.equals(node)) {
+ nodesByFailureReason.put(node, "Host has failure reports: " + failureReports);
+ } else {
+ nodesByFailureReason.put(node, "Parent (" + hostNode + ") has failure reports: " + failureReports);
}
}
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeHealthTracker.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeHealthTracker.java
index 37969a30b81..874ff91d8a4 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeHealthTracker.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeHealthTracker.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.ApplicationId;
@@ -116,7 +116,8 @@ public class NodeHealthTracker extends NodeRepositoryMaintainer {
.collect(Collectors.groupingBy(ServiceInstance::serviceStatus, counting()));
return countsByStatus.getOrDefault(ServiceStatus.UP, 0L) <= 0L &&
- countsByStatus.getOrDefault(ServiceStatus.DOWN, 0L) > 0L;
+ countsByStatus.getOrDefault(ServiceStatus.DOWN, 0L) > 0L &&
+ countsByStatus.getOrDefault(ServiceStatus.UNKNOWN, 0L) == 0L;
}
/** Get node by given hostname and application. The applicationLock must be held when calling this */
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMetricsDbMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMetricsDbMaintainer.java
index 4d16c90c002..b299369db1a 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMetricsDbMaintainer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMetricsDbMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMover.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMover.java
index 29dcfddd821..6c103627ad4 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMover.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMover.java
@@ -1,17 +1,21 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.Deployer;
+import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.NodeType;
import com.yahoo.jdisc.Metric;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeList;
import com.yahoo.vespa.hosted.provision.NodeRepository;
+import com.yahoo.vespa.hosted.provision.NodesAndHosts;
import com.yahoo.vespa.hosted.provision.provisioning.HostCapacity;
import java.time.Duration;
import java.time.Instant;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Random;
import java.util.Set;
@@ -36,29 +40,44 @@ public abstract class NodeMover<MOVE> extends NodeRepositoryMaintainer {
}
/** Returns a suggested move for given node */
- protected abstract MOVE suggestedMove(Node node, Node fromHost, Node toHost, NodeList allNodes);
+ protected abstract MOVE suggestedMove(Node node, Node fromHost, Node toHost, NodesAndHosts<? extends NodeList> allNodes);
+
+ private static class HostWithResources {
+ private final Node node;
+ private final NodeResources hostResources;
+ HostWithResources(Node node, NodeResources hostResources) {
+ this.node = node;
+ this.hostResources = hostResources;
+ }
+ boolean hasCapacity(NodeResources requested) {
+ return hostResources.satisfies(requested);
+ }
+
+ }
/** Find the best possible move */
- protected final MOVE findBestMove(NodeList allNodes) {
+ protected final MOVE findBestMove(NodesAndHosts<? extends NodeList> allNodes) {
HostCapacity capacity = new HostCapacity(allNodes, nodeRepository().resourcesCalculator());
MOVE bestMove = emptyMove;
// Shuffle nodes so we did not get stuck if the chosen move is consistently discarded. Node moves happen through
// a soft request to retire (preferToRetire), which node allocation can disregard
- NodeList activeNodes = allNodes.nodeType(NodeType.tenant)
+ NodeList activeNodes = allNodes.nodes().nodeType(NodeType.tenant)
.state(Node.State.active)
.shuffle(random);
- Set<Node> spares = capacity.findSpareHosts(allNodes.asList(), nodeRepository().spareCount());
+ Set<Node> spares = capacity.findSpareHosts(allNodes.nodes().asList(), nodeRepository().spareCount());
+ List<HostWithResources> hostResources = new ArrayList<>();
+ allNodes.nodes().matching(nodeRepository().nodes()::canAllocateTenantNodeTo).forEach(host -> hostResources.add(new HostWithResources(host, capacity.availableCapacityOf(host))));
for (Node node : activeNodes) {
if (node.parentHostname().isEmpty()) continue;
ApplicationId applicationId = node.allocation().get().owner();
if (applicationId.instance().isTester()) continue;
if (deployedRecently(applicationId)) continue;
- for (Node toHost : allNodes.matching(nodeRepository().nodes()::canAllocateTenantNodeTo)) {
- if (toHost.hostname().equals(node.parentHostname().get())) continue;
- if (spares.contains(toHost)) continue; // Do not offer spares as a valid move as they are reserved for replacement of failed nodes
- if ( ! capacity.freeCapacityOf(toHost).satisfies(node.resources())) continue;
+ for (HostWithResources toHost : hostResources) {
+ if (toHost.node.hostname().equals(node.parentHostname().get())) continue;
+ if (spares.contains(toHost.node)) continue; // Do not offer spares as a valid move as they are reserved for replacement of failed nodes
+ if ( ! toHost.hasCapacity(node.resources())) continue;
- MOVE suggestedMove = suggestedMove(node, allNodes.parentOf(node).get(), toHost, allNodes);
+ MOVE suggestedMove = suggestedMove(node, allNodes.parentOf(node).get(), toHost.node, allNodes);
bestMove = bestMoveOf(bestMove, suggestedMove);
}
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooter.java
index c282fcdb7fc..3cd97c64e4d 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooter.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.jdisc.Metric;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintainer.java
index 0fade7b32f8..77fe4ba129d 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintainer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.concurrent.maintenance.JobMetrics;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java
index 79d6fbfbdcd..873d8ceb7b9 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.google.inject.Inject;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainer.java
index e0f6c9d78bb..036c46479d1 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.ApplicationId;
@@ -14,10 +14,7 @@ import com.yahoo.vespa.hosted.provision.NodeRepository;
import java.time.Duration;
import java.time.Instant;
-import java.util.LinkedHashSet;
-import java.util.List;
import java.util.Map;
-import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -52,8 +49,8 @@ public class PeriodicApplicationMaintainer extends ApplicationMaintainer {
// Returns the applications that need to be redeployed by this config server at this point in time.
@Override
- protected Set<ApplicationId> applicationsNeedingMaintenance() {
- if (deployer().bootstrapping()) return Set.of();
+ protected Map<ApplicationId, String> applicationsNeedingMaintenance() {
+ if (deployer().bootstrapping()) return Map.of();
// Collect all deployment times before sorting as deployments may happen while we build the set, breaking
// the comparable contract. Stale times are fine as the time is rechecked in ApplicationMaintainer#deployWithLock
@@ -66,8 +63,8 @@ public class PeriodicApplicationMaintainer extends ApplicationMaintainer {
return deploymentTimes.entrySet().stream()
.sorted(Map.Entry.comparingByValue())
.map(Map.Entry::getKey)
- .filter(id -> shouldMaintain(id))
- .collect(Collectors.toCollection(LinkedHashSet::new));
+ .filter(this::shouldMaintain)
+ .collect(Collectors.toMap(applicationId -> applicationId, applicationId -> "current deployment being too old"));
}
private boolean shouldMaintain(ApplicationId id) {
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ProvisionedExpirer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ProvisionedExpirer.java
index 76c8210338e..d08a5f0deb6 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ProvisionedExpirer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ProvisionedExpirer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.NodeType;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Rebalancer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Rebalancer.java
index 7bb748c92c9..bbe2a8e3e1d 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Rebalancer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Rebalancer.java
@@ -8,6 +8,7 @@ import com.yahoo.jdisc.Metric;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeList;
import com.yahoo.vespa.hosted.provision.NodeRepository;
+import com.yahoo.vespa.hosted.provision.NodesAndHosts;
import com.yahoo.vespa.hosted.provision.node.Agent;
import com.yahoo.vespa.hosted.provision.provisioning.HostCapacity;
@@ -40,15 +41,15 @@ public class Rebalancer extends NodeMover<Rebalancer.Move> {
if (nodeRepository().zone().environment().isTest()) return 1.0; // Short lived deployments; no need to rebalance
// Work with an unlocked snapshot as this can take a long time and full consistency is not needed
- NodeList allNodes = nodeRepository().nodes().list();
+ NodesAndHosts<NodeList> allNodes = NodesAndHosts.create(nodeRepository().nodes().list());
updateSkewMetric(allNodes);
- if ( ! zoneIsStable(allNodes)) return 1.0;
+ if ( ! zoneIsStable(allNodes.nodes())) return 1.0;
findBestMove(allNodes).execute(true, Agent.Rebalancer, deployer, metric, nodeRepository());
return 1.0;
}
@Override
- protected Move suggestedMove(Node node, Node fromHost, Node toHost, NodeList allNodes) {
+ protected Move suggestedMove(Node node, Node fromHost, Node toHost, NodesAndHosts<? extends NodeList> allNodes) {
HostCapacity capacity = new HostCapacity(allNodes, nodeRepository().resourcesCalculator());
double skewReductionAtFromHost = skewReductionByRemoving(node, fromHost, capacity);
double skewReductionAtToHost = skewReductionByAdding(node, toHost, capacity);
@@ -63,26 +64,26 @@ public class Rebalancer extends NodeMover<Rebalancer.Move> {
}
/** We do this here rather than in MetricsReporter because it is expensive and frequent updates are unnecessary */
- private void updateSkewMetric(NodeList allNodes) {
+ private void updateSkewMetric(NodesAndHosts<? extends NodeList> allNodes) {
HostCapacity capacity = new HostCapacity(allNodes, nodeRepository().resourcesCalculator());
double totalSkew = 0;
int hostCount = 0;
- for (Node host : allNodes.nodeType(NodeType.host).state(Node.State.active)) {
+ for (Node host : allNodes.nodes().nodeType(NodeType.host).state(Node.State.active)) {
hostCount++;
- totalSkew += Node.skew(host.flavor().resources(), capacity.freeCapacityOf(host));
+ totalSkew += Node.skew(host.flavor().resources(), capacity.unusedCapacityOf(host));
}
metric.set("hostedVespa.docker.skew", totalSkew/hostCount, null);
}
private double skewReductionByRemoving(Node node, Node fromHost, HostCapacity capacity) {
- NodeResources freeHostCapacity = capacity.freeCapacityOf(fromHost);
+ NodeResources freeHostCapacity = capacity.unusedCapacityOf(fromHost);
double skewBefore = Node.skew(fromHost.flavor().resources(), freeHostCapacity);
double skewAfter = Node.skew(fromHost.flavor().resources(), freeHostCapacity.add(node.flavor().resources().justNumbers()));
return skewBefore - skewAfter;
}
private double skewReductionByAdding(Node node, Node toHost, HostCapacity capacity) {
- NodeResources freeHostCapacity = capacity.freeCapacityOf(toHost);
+ NodeResources freeHostCapacity = capacity.unusedCapacityOf(toHost);
double skewBefore = Node.skew(toHost.flavor().resources(), freeHostCapacity);
double skewAfter = Node.skew(toHost.flavor().resources(), freeHostCapacity.subtract(node.resources().justNumbers()));
return skewBefore - skewAfter;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirer.java
index e55e735bda6..6f06a2ac22e 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.jdisc.Metric;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirer.java
index 3f5893b368a..3d9296a0369 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.google.common.util.concurrent.UncheckedTimeoutException;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ScalingSuggestionsMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ScalingSuggestionsMaintainer.java
index b606e40ef42..9cb5f887e48 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ScalingSuggestionsMaintainer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ScalingSuggestionsMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainer.java
index 0589571e9d8..b12f2c052c5 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.ApplicationId;
@@ -9,6 +9,7 @@ import com.yahoo.jdisc.Metric;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeList;
import com.yahoo.vespa.hosted.provision.NodeRepository;
+import com.yahoo.vespa.hosted.provision.NodesAndHosts;
import com.yahoo.vespa.hosted.provision.maintenance.MaintenanceDeployment.Move;
import com.yahoo.vespa.hosted.provision.node.Agent;
import com.yahoo.vespa.hosted.provision.provisioning.HostCapacity;
@@ -116,13 +117,13 @@ public class SpareCapacityMaintainer extends NodeRepositoryMaintainer {
if (nodeWhichCantMove.isEmpty()) return List.of();
Node node = nodeWhichCantMove.get();
- NodeList allNodes = nodeRepository().nodes().list();
+ NodesAndHosts<NodeList> allNodes = NodesAndHosts.create(nodeRepository().nodes().list());
// Allocation will assign the spareCount most empty nodes as "spares", which will not be allocated on
// unless needed for node failing. Our goal here is to make room on these spares for the given node
HostCapacity hostCapacity = new HostCapacity(allNodes, nodeRepository().resourcesCalculator());
- Set<Node> spareHosts = hostCapacity.findSpareHosts(allNodes.hosts().satisfies(node.resources()).asList(),
+ Set<Node> spareHosts = hostCapacity.findSpareHosts(allNodes.nodes().hosts().satisfies(node.resources()).asList(),
nodeRepository().spareCount());
- List<Node> hosts = allNodes.hosts().except(spareHosts).asList();
+ List<Node> hosts = allNodes.nodes().hosts().except(spareHosts).asList();
CapacitySolver capacitySolver = new CapacitySolver(hostCapacity, maxIterations);
List<Move> shortestMitigation = null;
@@ -220,7 +221,7 @@ public class SpareCapacityMaintainer extends NodeRepositoryMaintainer {
return null;
if ( ! host.resources().satisfies(node.resources())) return null;
- NodeResources freeCapacity = freeCapacityWith(movesMade, host);
+ NodeResources freeCapacity = availableCapacityWith(movesMade, host);
if (freeCapacity.satisfies(node.resources())) return List.of();
List<Move> shortest = null;
@@ -291,8 +292,8 @@ public class SpareCapacityMaintainer extends NodeRepositoryMaintainer {
return list;
}
- private NodeResources freeCapacityWith(List<Move> moves, Node host) {
- NodeResources resources = hostCapacity.freeCapacityOf(host);
+ private NodeResources availableCapacityWith(List<Move> moves, Node host) {
+ NodeResources resources = hostCapacity.availableCapacityOf(host);
for (Move move : moves) {
if ( ! move.toHost().equals(host)) continue;
resources = resources.subtract(move.node().resources());
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/SwitchRebalancer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/SwitchRebalancer.java
index 44890f2f5af..7bea671fbac 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/SwitchRebalancer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/SwitchRebalancer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.ApplicationId;
@@ -8,6 +8,7 @@ import com.yahoo.jdisc.Metric;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeList;
import com.yahoo.vespa.hosted.provision.NodeRepository;
+import com.yahoo.vespa.hosted.provision.NodesAndHosts;
import com.yahoo.vespa.hosted.provision.maintenance.MaintenanceDeployment.Move;
import com.yahoo.vespa.hosted.provision.node.Agent;
@@ -36,17 +37,17 @@ public class SwitchRebalancer extends NodeMover<Move> {
protected double maintain() {
if (!nodeRepository().nodes().isWorking()) return 0.0;
if (!nodeRepository().zone().environment().isProduction()) return 1.0;
- NodeList allNodes = nodeRepository().nodes().list(); // Lockless as strong consistency is not needed
- if (!zoneIsStable(allNodes)) return 1.0;
+ NodesAndHosts<NodeList> allNodes = NodesAndHosts.create(nodeRepository().nodes().list()); // Lockless as strong consistency is not needed
+ if (!zoneIsStable(allNodes.nodes())) return 1.0;
findBestMove(allNodes).execute(false, Agent.SwitchRebalancer, deployer, metric, nodeRepository());
return 1.0;
}
@Override
- protected Move suggestedMove(Node node, Node fromHost, Node toHost, NodeList allNodes) {
- NodeList clusterNodes = clusterOf(node, allNodes);
- NodeList clusterHosts = allNodes.parentsOf(clusterNodes);
+ protected Move suggestedMove(Node node, Node fromHost, Node toHost, NodesAndHosts<? extends NodeList> allNodes) {
+ NodeList clusterNodes = clusterOf(node, allNodes.nodes());
+ NodeList clusterHosts = allNodes.nodes().parentsOf(clusterNodes);
if (onExclusiveSwitch(node, clusterHosts)) return Move.empty();
if (!increasesExclusiveSwitches(clusterNodes, clusterHosts, toHost)) return Move.empty();
return new Move(node, fromHost, toHost);
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Address.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Address.java
index bdef06f1070..fd9771103de 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Address.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Address.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.node;
import java.util.Objects;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Agent.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Agent.java
index ed82470fa42..2c5a3b924d8 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Agent.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Agent.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.node;
/**
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Allocation.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Allocation.java
index b476a2bdefc..9c71d621c69 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Allocation.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Allocation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.node;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/ClusterId.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/ClusterId.java
index ec9e4dc981b..49eb25025a8 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/ClusterId.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/ClusterId.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.node;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Generation.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Generation.java
index 8572a2f3f4d..2894e1575ca 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Generation.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Generation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.node;
import javax.annotation.concurrent.Immutable;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/History.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/History.java
index af549b8bcec..eae335ba36f 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/History.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/History.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.node;
import com.google.common.collect.ImmutableMap;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/IP.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/IP.java
index 1b7c629416a..54e48f881cd 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/IP.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/IP.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.node;
import com.google.common.collect.ImmutableSet;
@@ -307,27 +307,6 @@ public class IP {
return Collections.unmodifiableSet(unusedAddresses);
}
- /**
- * Returns the number of unused IP addresses in the pool, assuming any and all unaccounted for hostnames
- * in the pool are resolved to exactly 1 IP address (or 2 with {@link IpAddresses.Protocol#dualStack}).
- */
- public int eventuallyUnusedAddressCount(NodeList nodes) {
- // The address pool is filled immediately upon provisioning in dynamically provisioned zones,
- // and within short time the IP address pool is filled. For all other cases, the IP address
- // pool is already filled.
- //
- // The count in this method relies on the size of the IP address pool if that's non-empty,
- // otherwise fall back to the address/hostname pool.
-
-
- Set<String> currentIpAddresses = this.ipAddresses.asSet();
- if (!currentIpAddresses.isEmpty()) {
- return findUnusedIpAddresses(nodes).size();
- }
-
- return (int) findUnusedAddressStream(nodes).count();
- }
-
private Stream<Address> findUnusedAddressStream(NodeList nodes) {
Set<String> hostnames = nodes.stream().map(Node::hostname).collect(Collectors.toSet());
return addresses.stream().filter(address -> !hostnames.contains(address.hostname()));
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/NodeAcl.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/NodeAcl.java
index 4cd01167293..88a62c94f43 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/NodeAcl.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/NodeAcl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.node;
import com.google.common.collect.ImmutableSet;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java
index 4d67c83a179..9ba7f5684ee 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.node;
import com.yahoo.collections.ListMap;
@@ -236,13 +236,15 @@ public class Nodes {
* transaction commits.
*/
public List<Node> deactivate(List<Node> nodes, ApplicationTransaction transaction) {
+ if ( ! zone.environment().isProduction() || zone.system().isCd())
+ return deallocate(nodes, Agent.application, "Deactivated by application", transaction.nested());
+
var stateless = NodeList.copyOf(nodes).stateless();
var stateful = NodeList.copyOf(nodes).stateful();
List<Node> written = new ArrayList<>();
written.addAll(deallocate(stateless.asList(), Agent.application, "Deactivated by application", transaction.nested()));
written.addAll(db.writeTo(Node.State.inactive, stateful.asList(), Agent.application, Optional.empty(), transaction.nested()));
return written;
-
}
/**
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Status.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Status.java
index 39d0d80b88f..cc3f610cc44 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Status.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Status.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.node;
import com.yahoo.component.Version;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/TrustStoreItem.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/TrustStoreItem.java
new file mode 100644
index 00000000000..6fb94d0bc62
--- /dev/null
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/TrustStoreItem.java
@@ -0,0 +1,68 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+package com.yahoo.vespa.hosted.provision.node;
+
+import com.yahoo.slime.Cursor;
+import com.yahoo.slime.Inspector;
+
+import java.time.Instant;
+import java.util.Objects;
+
+/**
+ * Contains the fingerprint and expiry of certificates in a hosts truststore.
+ *
+ * @author mortent
+ */
+public class TrustStoreItem {
+ private static final String FINGERPRINT_FIELD = "fingerprint";
+ private static final String EXPIRY_FIELD = "expiry";
+
+ private final String fingerprint;
+ private final Instant expiry;
+
+ public TrustStoreItem(String fingerprint, Instant expiry) {
+ this.fingerprint = fingerprint;
+ this.expiry = expiry;
+ }
+
+ public String fingerprint() {
+ return fingerprint;
+ }
+
+ public Instant expiry() {
+ return expiry;
+ }
+
+ public void toSlime(Cursor trustedCertificatesRoot) {
+ Cursor object = trustedCertificatesRoot.addObject();
+ object.setString(FINGERPRINT_FIELD, fingerprint);
+ object.setLong(EXPIRY_FIELD, expiry.toEpochMilli());
+ }
+
+ public static TrustStoreItem fromSlime(Inspector inspector) {
+ String fingerprint = inspector.field(FINGERPRINT_FIELD).asString();
+ Instant expiry = Instant.ofEpochMilli(inspector.field(EXPIRY_FIELD).asLong());
+ return new TrustStoreItem(fingerprint, expiry);
+ }
+
+ @Override
+ public String toString() {
+ return "TrustedCertificate{" +
+ "fingerprint='" + fingerprint + '\'' +
+ ", expiry=" + expiry +
+ '}';
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ TrustStoreItem that = (TrustStoreItem) o;
+ return Objects.equals(fingerprint, that.fingerprint) && Objects.equals(expiry, that.expiry);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(fingerprint, expiry);
+ }
+} \ No newline at end of file
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ApplicationFilter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ApplicationFilter.java
index d2226fa71b0..2a4e320fd6a 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ApplicationFilter.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ApplicationFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.node.filter;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeHostFilter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeHostFilter.java
index 8891720ec33..24cda94d12c 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeHostFilter.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeHostFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.node.filter;
import com.yahoo.config.provision.HostFilter;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeListFilter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeListFilter.java
index 0e33eab6aba..8578e3eb5ec 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeListFilter.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeListFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.node.filter;
import com.yahoo.vespa.hosted.provision.Node;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeOsVersionFilter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeOsVersionFilter.java
index 5c3040b12bd..cbb004324cb 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeOsVersionFilter.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeOsVersionFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.node.filter;
import com.yahoo.component.Version;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeTypeFilter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeTypeFilter.java
index cac7b870366..95436dcbf10 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeTypeFilter.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeTypeFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.node.filter;
import com.yahoo.config.provision.NodeType;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ParentHostFilter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ParentHostFilter.java
index 25ce0373f15..7386ba066aa 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ParentHostFilter.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ParentHostFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.node.filter;
import com.yahoo.text.StringUtilities;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/StateFilter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/StateFilter.java
index 48f9513a434..9e3928ecbe5 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/StateFilter.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/StateFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.node.filter;
import com.yahoo.text.StringUtilities;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/package-info.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/package-info.java
index 5d0a3cc6093..2800d925aff 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/package-info.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/DelegatingOsUpgrader.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/DelegatingOsUpgrader.java
index 4f2012ded8f..30fd2713017 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/DelegatingOsUpgrader.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/DelegatingOsUpgrader.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.os;
import com.yahoo.config.provision.NodeType;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsUpgrader.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsUpgrader.java
index 5dcbf245028..5310ef339ed 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsUpgrader.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsUpgrader.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.os;
import com.yahoo.config.provision.NodeType;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersionChange.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersionChange.java
index b9c7adb4914..7eb9c964218 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersionChange.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersionChange.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.os;
import com.google.common.collect.ImmutableSortedMap;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersionTarget.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersionTarget.java
index 582cd92d239..aec0f02e22e 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersionTarget.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersionTarget.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.os;
import com.yahoo.component.Version;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersions.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersions.java
index a0b78461b34..7c6d1cb69db 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersions.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/OsVersions.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.os;
import com.yahoo.component.Version;
@@ -33,9 +33,6 @@ public class OsVersions {
/** The maximum number of concurrent upgrades per node type triggered by {@link DelegatingOsUpgrader} */
private static final int MAX_DELEGATED_UPGRADES = 30;
- /** The maximum number of concurrent upgrades (rebuilds) per node type triggered by {@link RebuildingOsUpgrader} */
- private static final int MAX_REBUILDS = 10;
-
private final NodeRepository nodeRepository;
private final CuratorDatabaseClient db;
private final boolean reprovisionToUpgradeOs;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RebuildingOsUpgrader.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RebuildingOsUpgrader.java
index e373f5edbfb..efc377e6cc3 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RebuildingOsUpgrader.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RebuildingOsUpgrader.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.os;
import com.yahoo.component.Version;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringOsUpgrader.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringOsUpgrader.java
index 1e48be189cd..ba59ff8e425 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringOsUpgrader.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringOsUpgrader.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.os;
import com.yahoo.component.Version;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/package-info.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/package-info.java
index 14d1952f12f..5777f7f23b6 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/package-info.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.provision;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/ApplicationSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/ApplicationSerializer.java
index e3fb3379da1..9cdb4c69b97 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/ApplicationSerializer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/ApplicationSerializer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.persistence;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CacheStats.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CacheStats.java
index a2a2bcf3ab4..d53b6398d4b 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CacheStats.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CacheStats.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.persistence;
/**
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabase.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabase.java
index fa5a72eea52..659636de581 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabase.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.persistence;
import com.google.common.cache.AbstractCache;
@@ -54,7 +54,7 @@ public class CuratorDatabase {
public CuratorDatabase(Curator curator, Path root, boolean useCache) {
this.useCache = useCache;
this.curator = curator;
- changeGenerationCounter = new CuratorCounter(curator, root.append("changeCounter").getAbsolute());
+ changeGenerationCounter = new CuratorCounter(curator, root.append("changeCounter"));
cache.set(newCache(changeGenerationCounter.get()));
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java
index c37db2fa526..45aaedd9550 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.persistence;
import com.google.common.util.concurrent.UncheckedTimeoutException;
@@ -82,7 +82,7 @@ public class CuratorDatabaseClient {
this.nodeSerializer = new NodeSerializer(flavors, nodeCacheSize);
this.db = new CuratorDatabase(curator, root, useCache);
this.clock = clock;
- this.provisionIndexCounter = new CuratorCounter(curator, root.append("provisionIndexCounter").getAbsolute());
+ this.provisionIndexCounter = new CuratorCounter(curator, root.append("provisionIndexCounter"));
initZK();
}
@@ -210,7 +210,7 @@ public class CuratorDatabaseClient {
toState.isAllocated() ? node.allocation() : Optional.empty(),
node.history().recordStateTransition(node.state(), toState, agent, clock.instant()),
node.type(), node.reports(), node.modelName(), node.reservedTo(),
- node.exclusiveTo(), node.switchHostname());
+ node.exclusiveToApplicationId(), node.exclusiveToClusterType(), node.switchHostname(), node.trustedCertificates());
writeNode(toState, curatorTransaction, node, newNode);
writtenNodes.add(newNode);
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/DnsNameResolver.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/DnsNameResolver.java
index 1367e4d0884..14b961c7882 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/DnsNameResolver.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/DnsNameResolver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.persistence;
import com.google.common.net.InetAddresses;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/JobControlFlags.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/JobControlFlags.java
index bea3240a0e8..13cc1ce5027 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/JobControlFlags.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/JobControlFlags.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.persistence;
import com.yahoo.concurrent.maintenance.JobControlState;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/LoadBalancerSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/LoadBalancerSerializer.java
index 04c8f012b8b..c361c9183d2 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/LoadBalancerSerializer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/LoadBalancerSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.persistence;
import com.yahoo.config.provision.HostName;
@@ -51,8 +51,7 @@ public class LoadBalancerSerializer {
Cursor root = slime.setObject();
root.setString(idField, loadBalancer.id().serializedForm());
- // TODO(mpolden): Stop writing this field for empty instance after 2021-06-01
- root.setString(hostnameField, loadBalancer.instance().map(instance -> instance.hostname().value()).orElse(""));
+ loadBalancer.instance().ifPresent(instance -> root.setString(hostnameField, instance.hostname().value()));
root.setString(stateField, asString(loadBalancer.state()));
root.setLong(changedAtField, loadBalancer.changedAt().toEpochMilli());
loadBalancer.instance().flatMap(LoadBalancerInstance::dnsZone).ifPresent(dnsZone -> root.setString(dnsZoneField, dnsZone.id()));
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NameResolver.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NameResolver.java
index 31e313b6706..59f29d7629a 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NameResolver.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NameResolver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.persistence;
import java.util.Optional;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeResourcesSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeResourcesSerializer.java
index 8b792c8790b..8c421443a65 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeResourcesSerializer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeResourcesSerializer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.persistence;
import com.yahoo.config.provision.NodeResources;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java
index dff4a66bd42..7d03c14f172 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.persistence;
import com.google.common.cache.Cache;
@@ -10,6 +10,7 @@ import com.yahoo.component.Version;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ApplicationName;
import com.yahoo.config.provision.ClusterMembership;
+import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.DockerImage;
import com.yahoo.config.provision.Flavor;
import com.yahoo.config.provision.InstanceName;
@@ -35,6 +36,7 @@ import com.yahoo.vespa.hosted.provision.node.IP;
import com.yahoo.vespa.hosted.provision.node.OsVersion;
import com.yahoo.vespa.hosted.provision.node.Reports;
import com.yahoo.vespa.hosted.provision.node.Status;
+import com.yahoo.vespa.hosted.provision.node.TrustStoreItem;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
@@ -91,8 +93,10 @@ public class NodeSerializer {
private static final String reportsKey = "reports";
private static final String modelNameKey = "modelName";
private static final String reservedToKey = "reservedTo";
- private static final String exclusiveToKey = "exclusiveTo";
+ private static final String exclusiveToApplicationIdKey = "exclusiveTo";
+ private static final String exclusiveToClusterTypeKey = "exclusiveToClusterType";
private static final String switchHostnameKey = "switchHostname";
+ private static final String trustedCertificatesKey = "trustedCertificates";
// Node resource fields
private static final String flavorKey = "flavor";
@@ -120,6 +124,10 @@ public class NodeSerializer {
// Network port fields
private static final String networkPortsKey = "networkPorts";
+ // Trusted certificates fields
+ private static final String fingerprintKey = "fingerprint";
+ private static final String expiresKey = "expires";
+
// A cache of deserialized Node objects. The cache is keyed on the hash of serialized node data.
//
// Deserializing a Node from slime is expensive, and happens frequently. Node instances that have already been
@@ -178,7 +186,9 @@ public class NodeSerializer {
node.reports().toSlime(object, reportsKey);
node.modelName().ifPresent(modelName -> object.setString(modelNameKey, modelName));
node.reservedTo().ifPresent(tenant -> object.setString(reservedToKey, tenant.value()));
- node.exclusiveTo().ifPresent(applicationId -> object.setString(exclusiveToKey, applicationId.serializedForm()));
+ node.exclusiveToApplicationId().ifPresent(applicationId -> object.setString(exclusiveToApplicationIdKey, applicationId.serializedForm()));
+ node.exclusiveToClusterType().ifPresent(clusterType -> object.setString(exclusiveToClusterTypeKey, clusterType.name()));
+ trustedCertificatesToSlime(node.trustedCertificates(), object.setArray(trustedCertificatesKey));
}
private void toSlime(Flavor flavor, Cursor object) {
@@ -233,6 +243,14 @@ public class NodeSerializer {
});
}
+ private void trustedCertificatesToSlime(List<TrustStoreItem> trustStoreItems, Cursor array) {
+ trustStoreItems.forEach(cert -> {
+ Cursor object = array.addObject();
+ object.setString(fingerprintKey, cert.fingerprint());
+ object.setLong(expiresKey, cert.expiry().toEpochMilli());
+ });
+ }
+
// ---------------- Deserialization --------------------------------------------------
public Node fromJson(Node.State state, byte[] data) {
@@ -264,8 +282,10 @@ public class NodeSerializer {
Reports.fromSlime(object.field(reportsKey)),
modelNameFromSlime(object),
reservedToFromSlime(object.field(reservedToKey)),
- exclusiveToFromSlime(object.field(exclusiveToKey)),
- switchHostnameFromSlime(object.field(switchHostnameKey)));
+ exclusiveToApplicationIdFromSlime(object.field(exclusiveToApplicationIdKey)),
+ exclusiveToClusterTypeFromSlime(object.field(exclusiveToClusterTypeKey)),
+ switchHostnameFromSlime(object.field(switchHostnameKey)),
+ trustedCertificatesFromSlime(object));
}
private Status statusFromSlime(Inspector object) {
@@ -401,13 +421,27 @@ public class NodeSerializer {
return Optional.of(TenantName.from(object.asString()));
}
- private Optional<ApplicationId> exclusiveToFromSlime(Inspector object) {
+ private Optional<ApplicationId> exclusiveToApplicationIdFromSlime(Inspector object) {
if (! object.valid()) return Optional.empty();
if (object.type() != Type.STRING)
throw new IllegalArgumentException("Expected 'exclusiveTo' to be a string but is " + object);
return Optional.of(ApplicationId.fromSerializedForm(object.asString()));
}
+ private Optional<ClusterSpec.Type> exclusiveToClusterTypeFromSlime(Inspector object) {
+ if (! object.valid()) return Optional.empty();
+ if (object.type() != Type.STRING)
+ throw new IllegalArgumentException("Expected 'exclusiveToClusterType' to be a string but is " + object);
+ return Optional.of(ClusterSpec.Type.from(object.asString()));
+ }
+
+ private List<TrustStoreItem> trustedCertificatesFromSlime(Inspector object) {
+ return SlimeUtils.entriesStream(object.field(trustedCertificatesKey))
+ .map(elem -> new TrustStoreItem(elem.field(fingerprintKey).asString(),
+ Instant.ofEpochMilli(elem.field(expiresKey).asLong())))
+ .collect(Collectors.toList());
+ }
+
// ----------------- Enum <-> string mappings ----------------------------------------
/** Returns the event type, or null if this event type should be ignored */
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeVersionsSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeVersionsSerializer.java
index e27cdcd1842..45a5a768575 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeVersionsSerializer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeVersionsSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.persistence;
import com.yahoo.component.Version;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/OsVersionChangeSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/OsVersionChangeSerializer.java
index 2034e7f25d2..8ce9c20e7d7 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/OsVersionChangeSerializer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/OsVersionChangeSerializer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.persistence;
import com.yahoo.component.Version;
@@ -56,9 +56,7 @@ public class OsVersionChangeSerializer {
inspector.field(TARGETS_FIELD).traverse((ArrayTraverser) (idx, arrayInspector) -> {
var version = Version.fromString(arrayInspector.field(VERSION_FIELD).asString());
var nodeType = NodeSerializer.nodeTypeFromString(arrayInspector.field(NODE_TYPE_FIELD).asString());
- // TODO(mpolden): Require this field after 2021-05-01
- Duration budget = optionalLong(arrayInspector.field(UPGRADE_BUDGET_FIELD)).map(Duration::ofMillis)
- .orElse(Duration.ZERO);
+ Duration budget = SlimeUtils.duration(arrayInspector.field(UPGRADE_BUDGET_FIELD));
Optional<Instant> lastRetiredAt = optionalLong(arrayInspector.field(LAST_RETIRED_AT_FIELD)).map(Instant::ofEpochMilli);
targets.put(nodeType, new OsVersionTarget(nodeType, version, budget, lastRetiredAt));
});
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/TenantArchiveUriSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/TenantArchiveUriSerializer.java
index 3f0c8f90887..d381d25704a 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/TenantArchiveUriSerializer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/TenantArchiveUriSerializer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.persistence;
import com.yahoo.config.provision.TenantName;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Activator.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Activator.java
index cb965e87739..0d32b21016c 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Activator.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Activator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ArchiveUris.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ArchiveUris.java
index c59de5865b8..1cd8bb0fccd 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ArchiveUris.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ArchiveUris.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.config.provision.TenantName;
@@ -24,7 +24,7 @@ import java.util.regex.Pattern;
public class ArchiveUris {
private static final Logger log = Logger.getLogger(ArchiveUris.class.getName());
- private static final Pattern validUriPattern = Pattern.compile("[a-z0-9]+://(?:(?:[a-z0-9]+(?:-[a-z0-9.]+)*)+/)+");
+ private static final Pattern validUriPattern = Pattern.compile("[a-z0-9]+://(?:(?:[a-z0-9]+(?:[-_][a-z0-9.]+)*)+/)+");
private static final Duration cacheTtl = Duration.ofMinutes(1);
private final CuratorDatabaseClient db;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java
index abd910485ac..839bc21827c 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.config.provision.ApplicationId;
@@ -11,7 +11,7 @@ import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.flags.PermanentFlags;
import com.yahoo.vespa.hosted.provision.NodeRepository;
-import java.util.function.Supplier;
+import java.util.function.Function;
/**
* Defines the policies for assigning cluster capacity in various environments
@@ -22,11 +22,11 @@ import java.util.function.Supplier;
public class CapacityPolicies {
private final Zone zone;
- private final Supplier<Boolean> sharedHosts;
+ private final Function<ClusterSpec.Type, Boolean> sharedHosts;
public CapacityPolicies(NodeRepository nodeRepository) {
this.zone = nodeRepository.zone();
- this.sharedHosts = PermanentFlags.SHARED_HOST.bindTo(nodeRepository.flagSource()).value()::isEnabled;
+ this.sharedHosts = type -> PermanentFlags.SHARED_HOST.bindTo(nodeRepository.flagSource()).value().isEnabled(type.name());
}
public int decideSize(int requested, Capacity capacity, ClusterSpec cluster, ApplicationId application) {
@@ -66,7 +66,7 @@ public class CapacityPolicies {
// Use small logserver in dev system
return new NodeResources(0.1, 1, 10, 0.3);
}
- return zone.getCloud().dynamicProvisioning() && ! sharedHosts.get() ?
+ return zone.getCloud().dynamicProvisioning() && ! sharedHosts.apply(clusterType) ?
new NodeResources(0.5, 4, 50, 0.3) :
new NodeResources(0.5, 2, 50, 0.3);
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/EmptyProvisionServiceProvider.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/EmptyProvisionServiceProvider.java
index 599f6b8bcb0..fa86fd9a29e 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/EmptyProvisionServiceProvider.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/EmptyProvisionServiceProvider.java
@@ -35,7 +35,7 @@ public class EmptyProvisionServiceProvider implements ProvisionServiceProvider {
private static class IdentityHostResourcesCalculator implements HostResourcesCalculator {
@Override
- public NodeResources realResourcesOf(Nodelike node, NodeRepository repository, boolean exclusive) { return node.resources(); }
+ public NodeResources realResourcesOf(Nodelike node, NodeRepository repository) { return node.resources(); }
@Override
public NodeResources advertisedResourcesOf(Flavor flavor) { return flavor.resources(); }
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FlavorConfigBuilder.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FlavorConfigBuilder.java
index 19f932407d3..7caed006fba 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FlavorConfigBuilder.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FlavorConfigBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.config.provision.Flavor;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java
index 5d45bed19e8..ba46f0a9535 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.component.Version;
@@ -10,6 +10,7 @@ import com.yahoo.transaction.Mutex;
import com.yahoo.vespa.hosted.provision.LockedNodeList;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeRepository;
+import com.yahoo.vespa.hosted.provision.NodesAndHosts;
import com.yahoo.vespa.hosted.provision.node.Agent;
import com.yahoo.vespa.hosted.provision.provisioning.HostProvisioner.HostSharing;
@@ -30,6 +31,18 @@ public class GroupPreparer {
private final NodeRepository nodeRepository;
private final Optional<HostProvisioner> hostProvisioner;
+ /**
+ * Contains list of prepared nodes and the NodesAndHost object to use for next prepare call.
+ */
+ public static class PrepareResult {
+ public final List<Node> prepared;
+ public final NodesAndHosts<LockedNodeList> allNodesAndHosts;
+ PrepareResult(List<Node> prepared, NodesAndHosts<LockedNodeList> allNodesAndHosts) {
+ this.prepared = prepared;
+ this.allNodesAndHosts = allNodesAndHosts;
+ }
+ }
+
public GroupPreparer(NodeRepository nodeRepository, Optional<HostProvisioner> hostProvisioner) {
this.nodeRepository = nodeRepository;
this.hostProvisioner = hostProvisioner;
@@ -45,33 +58,44 @@ public class GroupPreparer {
* This method will remove from this list if it finds it needs additional nodes
* @param indices the next available node indices for this cluster.
* This method will consume these when it allocates new nodes to the cluster.
- * @return the list of nodes this cluster group will have allocated if activated
+ * @param allNodesAndHosts list of all nodes and hosts. Use createNodesAndHostUnlocked to create param for
+ * first invocation. Then use previous PrepareResult.allNodesAndHosts for the following.
+ * @return the list of nodes this cluster group will have allocated if activated, and
*/
// Note: This operation may make persisted changes to the set of reserved and inactive nodes,
// but it may not change the set of active nodes, as the active nodes must stay in sync with the
// active config model which is changed on activate
- public List<Node> prepare(ApplicationId application, ClusterSpec cluster, NodeSpec requestedNodes,
- List<Node> surplusActiveNodes, NodeIndices indices, int wantedGroups) {
+ public PrepareResult prepare(ApplicationId application, ClusterSpec cluster, NodeSpec requestedNodes,
+ List<Node> surplusActiveNodes, NodeIndices indices, int wantedGroups,
+ NodesAndHosts<LockedNodeList> allNodesAndHosts) {
// Try preparing in memory without global unallocated lock. Most of the time there should be no changes and we
// can return nodes previously allocated.
- {
- NodeAllocation probeAllocation = prepareAllocation(application, cluster, requestedNodes, surplusActiveNodes,
- indices::probeNext, wantedGroups, PROBE_LOCK);
- if (probeAllocation.fulfilledAndNoChanges()) {
- List<Node> acceptedNodes = probeAllocation.finalNodes();
- surplusActiveNodes.removeAll(acceptedNodes);
- indices.commitProbe();
- return acceptedNodes;
- }
+ NodeAllocation probeAllocation = prepareAllocation(application, cluster, requestedNodes, surplusActiveNodes,
+ indices::probeNext, wantedGroups, allNodesAndHosts);
+ if (probeAllocation.fulfilledAndNoChanges()) {
+ List<Node> acceptedNodes = probeAllocation.finalNodes();
+ surplusActiveNodes.removeAll(acceptedNodes);
+ indices.commitProbe();
+ return new PrepareResult(acceptedNodes, allNodesAndHosts);
+ } else {
+ // There were some changes, so re-do the allocation with locks
indices.resetProbe();
+ List<Node> prepared = prepareWithLocks(application, cluster, requestedNodes, surplusActiveNodes, indices, wantedGroups);
+ return new PrepareResult(prepared, createNodesAndHostUnlocked());
}
+ }
+
+ // Use this to create allNodesAndHosts param to prepare method for first invocation of prepare
+ public NodesAndHosts<LockedNodeList> createNodesAndHostUnlocked() { return NodesAndHosts.create(nodeRepository.nodes().list(PROBE_LOCK)); }
- // There were some changes, so re-do the allocation with locks
+ /// Note that this will write to the node repo.
+ private List<Node> prepareWithLocks(ApplicationId application, ClusterSpec cluster, NodeSpec requestedNodes,
+ List<Node> surplusActiveNodes, NodeIndices indices, int wantedGroups) {
try (Mutex lock = nodeRepository.nodes().lock(application);
Mutex allocationLock = nodeRepository.nodes().lockUnallocated()) {
-
+ NodesAndHosts<LockedNodeList> allNodesAndHosts = NodesAndHosts.create(nodeRepository.nodes().list(allocationLock));
NodeAllocation allocation = prepareAllocation(application, cluster, requestedNodes, surplusActiveNodes,
- indices::next, wantedGroups, allocationLock);
+ indices::next, wantedGroups, allNodesAndHosts);
NodeType hostType = allocation.nodeType().hostType();
if (canProvisionDynamically(hostType)) {
HostSharing sharing = hostSharing(requestedNodes, hostType);
@@ -81,7 +105,8 @@ public class GroupPreparer {
hostType,
deficit.resources(),
application, osVersion,
- sharing))
+ sharing,
+ Optional.of(cluster.type())))
.orElseGet(List::of);
// At this point we have started provisioning of the hosts, the first priority is to make sure that
@@ -114,10 +139,10 @@ public class GroupPreparer {
private NodeAllocation prepareAllocation(ApplicationId application, ClusterSpec cluster, NodeSpec requestedNodes,
List<Node> surplusActiveNodes, Supplier<Integer> nextIndex, int wantedGroups,
- Mutex allocationLock) {
- LockedNodeList allNodes = nodeRepository.nodes().list(allocationLock);
- NodeAllocation allocation = new NodeAllocation(allNodes, application, cluster, requestedNodes, nextIndex, nodeRepository);
- NodePrioritizer prioritizer = new NodePrioritizer(allNodes,
+ NodesAndHosts<LockedNodeList> allNodesAndHosts) {
+
+ NodeAllocation allocation = new NodeAllocation(allNodesAndHosts, application, cluster, requestedNodes, nextIndex, nodeRepository);
+ NodePrioritizer prioritizer = new NodePrioritizer(allNodesAndHosts,
application,
cluster,
requestedNodes,
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostCapacity.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostCapacity.java
index 58a7aa2b189..b112c4f6531 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostCapacity.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostCapacity.java
@@ -1,11 +1,13 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.NodeType;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeList;
+import com.yahoo.vespa.hosted.provision.NodesAndHosts;
+import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Set;
@@ -21,15 +23,18 @@ import java.util.stream.Collectors;
*/
public class HostCapacity {
- private final NodeList allNodes;
+ private final NodesAndHosts<? extends NodeList> allNodes;
private final HostResourcesCalculator hostResourcesCalculator;
public HostCapacity(NodeList allNodes, HostResourcesCalculator hostResourcesCalculator) {
+ this(NodesAndHosts.create(Objects.requireNonNull(allNodes, "allNodes must be non-null")), hostResourcesCalculator);
+ }
+ public HostCapacity(NodesAndHosts<? extends NodeList> allNodes, HostResourcesCalculator hostResourcesCalculator) {
this.allNodes = Objects.requireNonNull(allNodes, "allNodes must be non-null");
this.hostResourcesCalculator = Objects.requireNonNull(hostResourcesCalculator, "hostResourcesCalculator must be non-null");
}
- public NodeList allNodes() { return allNodes; }
+ public NodeList allNodes() { return allNodes.nodes(); }
/**
* Spare hosts are the hosts in the system with the most free capacity. A zone may reserve a minimum number of spare
@@ -42,14 +47,33 @@ public class HostCapacity {
* @param count the max number of spare hosts to return
*/
public Set<Node> findSpareHosts(List<Node> candidates, int count) {
- return candidates.stream()
- .filter(node -> node.type().canRun(NodeType.tenant))
- .filter(host -> host.state() == Node.State.active)
- .filter(host -> host.reservedTo().isEmpty())
- .filter(host -> freeIps(host) > 0)
- .sorted(this::compareWithoutInactive)
- .limit(count)
- .collect(Collectors.toSet());
+ ArrayList<NodeWithHostResources> nodesWithIp = new ArrayList<>(candidates.size());
+ for (Node node : candidates) {
+ if (node.type().canRun(NodeType.tenant) && (node.state() == Node.State.active) && node.reservedTo().isEmpty()) {
+ int numFreeIps = freeIps(node);
+ if (numFreeIps > 0) {
+ nodesWithIp.add(new NodeWithHostResources(node, availableCapacityOf(node, true, false), numFreeIps));
+ }
+ }
+ }
+ return nodesWithIp.stream().sorted().limit(count).map(n -> n.node).collect(Collectors.toSet());
+ }
+ private static class NodeWithHostResources implements Comparable<NodeWithHostResources> {
+ private final Node node;
+ private final NodeResources hostResources;
+ private final int numFreeIps;
+ NodeWithHostResources(Node node, NodeResources hostResources, int freeIps) {
+ this.node = node;
+ this.hostResources = hostResources;
+ this.numFreeIps = freeIps;
+ }
+
+ @Override
+ public int compareTo(HostCapacity.NodeWithHostResources b) {
+ int result = compare(b.hostResources, hostResources);
+ if (result != 0) return result;
+ return b.numFreeIps - numFreeIps;
+ }
}
public Set<Node> findSpareHostsInDynamicallyProvisionedZones(List<Node> candidates) {
@@ -61,48 +85,48 @@ public class HostCapacity {
.collect(Collectors.toSet());
}
- private int compareWithoutInactive(Node a, Node b) {
- int result = compare(freeCapacityOf(b, true), freeCapacityOf(a, true));
- if (result != 0) return result;
-
- // If resources are equal we want to assign to the one with the most IP addresses free
- return freeIps(b) - freeIps(a);
- }
-
- private int compare(NodeResources a, NodeResources b) {
+ private static int compare(NodeResources a, NodeResources b) {
return NodeResourceComparator.defaultOrder().compare(a, b);
}
- /** Returns whether host has room for requested capacity */
- boolean hasCapacity(Node host, NodeResources requestedCapacity) {
- return freeCapacityOf(host, false).satisfies(requestedCapacity) && freeIps(host) > 0;
+ /** Returns whether host can allocate a node with requested capacity */
+ public boolean hasCapacity(Node host, NodeResources requestedCapacity) {
+ return availableCapacityOf(host).satisfies(requestedCapacity);
}
/** Returns the number of available IP addresses on given host */
int freeIps(Node host) {
if (host.type() == NodeType.host) {
- return host.ipConfig().pool().eventuallyUnusedAddressCount(allNodes);
- } else {
- return host.ipConfig().pool().findUnusedIpAddresses(allNodes).size();
+ return (allNodes.eventuallyUnusedIpAddressCount(host));
}
+ return host.ipConfig().pool().findUnusedIpAddresses(allNodes.nodes()).size();
+ }
+
+ /** Returns the capacity of given host that is both free and usable */
+ public NodeResources availableCapacityOf(Node host) {
+ return availableCapacityOf(host, false, true);
}
/**
- * Calculate the remaining capacity of a host.
+ * Calculate the unused capacity of given host.
+ *
+ * Note that unlike {@link #availableCapacityOf(Node)}, this only considers resources and returns any unused
+ * capacity even if the host does not have available IP addresses.
*
- * @param host the host to find free capacity of.
- * @return a default (empty) capacity if not host, otherwise the free/unallocated/rest capacity
+ * @param host the host to find free capacity of
+ * @return a default (empty) capacity if not host, otherwise the free capacity
*/
- public NodeResources freeCapacityOf(Node host) {
- return freeCapacityOf(host, false);
+ public NodeResources unusedCapacityOf(Node host) {
+ return availableCapacityOf(host, false, false);
}
- NodeResources freeCapacityOf(Node host, boolean excludeInactive) {
+ private NodeResources availableCapacityOf(Node host, boolean excludeInactive, boolean requireIps) {
// Only hosts have free capacity
- if ( ! host.type().canRun(NodeType.tenant)) return new NodeResources(0, 0, 0, 0);
+ if ( ! host.type().canRun(NodeType.tenant)) return NodeResources.zero();
+ if ( requireIps && freeIps(host) == 0) return NodeResources.zero();
NodeResources hostResources = hostResourcesCalculator.advertisedResourcesOf(host.flavor());
- return allNodes.childrenOf(host).asList().stream()
+ return allNodes.childrenOf(host).stream()
.filter(node -> !(excludeInactive && inactiveOrRetired(node)))
.map(node -> node.flavor().resources().justNumbers())
.reduce(hostResources.justNumbers(), NodeResources::subtract)
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostProvisioner.java
index bfb526a518f..77bee2b346e 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostProvisioner.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostProvisioner.java
@@ -3,11 +3,13 @@ package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.component.Version;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.NodeType;
import com.yahoo.vespa.hosted.provision.Node;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
/**
@@ -48,7 +50,8 @@ public interface HostProvisioner {
NodeResources resources,
ApplicationId applicationId,
Version osVersion,
- HostSharing sharing);
+ HostSharing sharing,
+ Optional<ClusterSpec.Type> clusterType);
/**
* Continue provisioning of given list of Nodes.
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostResourcesCalculator.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostResourcesCalculator.java
index fc7023be743..92d7ba95604 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostResourcesCalculator.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostResourcesCalculator.java
@@ -19,7 +19,7 @@ import com.yahoo.vespa.hosted.provision.Nodelike;
public interface HostResourcesCalculator {
/** Returns the real resources available on a node */
- NodeResources realResourcesOf(Nodelike node, NodeRepository nodeRepository, boolean exclusive);
+ NodeResources realResourcesOf(Nodelike node, NodeRepository nodeRepository);
/** Returns the advertised resources of a flavor */
NodeResources advertisedResourcesOf(Flavor flavor);
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java
index b5579451a0e..7cc4acc20b0 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.config.provision.ApplicationId;
@@ -11,6 +11,7 @@ import com.yahoo.config.provision.SystemName;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeList;
import com.yahoo.vespa.hosted.provision.NodeRepository;
+import com.yahoo.vespa.hosted.provision.NodesAndHosts;
import com.yahoo.vespa.hosted.provision.node.Agent;
import com.yahoo.vespa.hosted.provision.node.Allocation;
@@ -40,7 +41,7 @@ class NodeAllocation {
private static final Logger LOG = Logger.getLogger(NodeAllocation.class.getName());
/** List of all nodes in node-repository */
- private final NodeList allNodes;
+ private final NodesAndHosts<? extends NodeList> allNodesAndHosts;
/** The application this list is for */
private final ApplicationId application;
@@ -80,9 +81,9 @@ class NodeAllocation {
private final NodeRepository nodeRepository;
private final NodeResourceLimits nodeResourceLimits;
- NodeAllocation(NodeList allNodes, ApplicationId application, ClusterSpec cluster, NodeSpec requestedNodes,
+ NodeAllocation(NodesAndHosts<? extends NodeList> allNodesAndHosts, ApplicationId application, ClusterSpec cluster, NodeSpec requestedNodes,
Supplier<Integer> nextIndex, NodeRepository nodeRepository) {
- this.allNodes = allNodes;
+ this.allNodesAndHosts = allNodesAndHosts;
this.application = application;
this.cluster = cluster;
this.requestedNodes = requestedNodes;
@@ -189,14 +190,17 @@ class NodeAllocation {
private boolean violatesExclusivity(NodeCandidate candidate) {
if (candidate.parentHostname().isEmpty()) return false;
- // In dynamic provisioned zones a node requiring exclusivity must be on a host that has exclusiveTo equal to its owner
- if (nodeRepository.zone().getCloud().dynamicProvisioning())
- return requestedNodes.isExclusive() &&
- ! candidate.parent.flatMap(Node::exclusiveTo).map(application::equals).orElse(false);
+ // In dynamic provisioned zones, exclusivity is violated if...
+ if (nodeRepository.zone().getCloud().dynamicProvisioning()) {
+ // If either the parent is dedicated to a cluster type different from this cluster
+ return ! candidate.parent.flatMap(Node::exclusiveToClusterType).map(cluster.type()::equals).orElse(true) ||
+ // or this cluster is requiring exclusivity, but the host is exclusive to a different owner
+ (requestedNodes.isExclusive() && !candidate.parent.flatMap(Node::exclusiveToApplicationId).map(application::equals).orElse(false));
+ }
// In non-dynamic provisioned zones we require that if either of the nodes on the host requires exclusivity,
// then all the nodes on the host must have the same owner
- for (Node nodeOnHost : allNodes.childrenOf(candidate.parentHostname().get())) {
+ for (Node nodeOnHost : allNodesAndHosts.childrenOf(candidate.parentHostname().get())) {
if (nodeOnHost.allocation().isEmpty()) continue;
if (requestedNodes.isExclusive() || nodeOnHost.allocation().get().membership().cluster().isExclusive()) {
if ( ! nodeOnHost.allocation().get().owner().equals(application)) return true;
@@ -270,7 +274,7 @@ class NodeAllocation {
}
private Node resize(Node node) {
- NodeResources hostResources = allNodes.parentOf(node).get().flavor().resources();
+ NodeResources hostResources = allNodesAndHosts.parentOf(node).get().flavor().resources();
return node.with(new Flavor(requestedNodes.resources().get()
.with(hostResources.diskSpeed())
.with(hostResources.storageType())),
@@ -321,7 +325,7 @@ class NodeAllocation {
if (hostType == NodeType.host) return nodeRepository.database().readProvisionIndices(count);
// Infrastructure hosts have fixed indices, starting at 1
- Set<Integer> currentIndices = allNodes.nodeType(hostType)
+ Set<Integer> currentIndices = allNodesAndHosts.nodes().nodeType(hostType)
.hostnames()
.stream()
// TODO(mpolden): Use cluster index instead of parsing hostname, once all
@@ -421,7 +425,7 @@ class NodeAllocation {
if (nodeType() == NodeType.tenant) return accepted;
// Infrastructure nodes are always allocated by type. Count all nodes as accepted so that we never exceed
// the wanted number of nodes for the type.
- return allNodes.nodeType(nodeType()).size();
+ return allNodesAndHosts.nodes().nodeType(nodeType()).size();
}
/** Prefer to retire nodes we want the least */
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeCandidate.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeCandidate.java
index a364c42eee3..4f0ae688b1c 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeCandidate.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeCandidate.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.component.Version;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeIndices.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeIndices.java
index da4ae2a119e..e75804fb343 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeIndices.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeIndices.java
@@ -1,9 +1,6 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
-import com.yahoo.config.provision.ClusterSpec;
-import com.yahoo.vespa.hosted.provision.NodeList;
-
import java.util.List;
import static java.util.Comparator.naturalOrder;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java
index 695f0dd8659..85a43e38e07 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.config.provision.ApplicationId;
@@ -7,6 +7,7 @@ import com.yahoo.config.provision.NodeType;
import com.yahoo.vespa.hosted.provision.LockedNodeList;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeList;
+import com.yahoo.vespa.hosted.provision.NodesAndHosts;
import com.yahoo.vespa.hosted.provision.node.Nodes;
import com.yahoo.vespa.hosted.provision.persistence.NameResolver;
@@ -30,7 +31,7 @@ import java.util.stream.Collectors;
public class NodePrioritizer {
private final List<NodeCandidate> nodes = new ArrayList<>();
- private final LockedNodeList allNodes;
+ private final NodesAndHosts<LockedNodeList> allNodesAndHosts;
private final HostCapacity capacity;
private final NodeSpec requestedNodes;
private final ApplicationId application;
@@ -44,21 +45,21 @@ public class NodePrioritizer {
private final int currentClusterSize;
private final Set<Node> spareHosts;
- public NodePrioritizer(LockedNodeList allNodes, ApplicationId application, ClusterSpec clusterSpec, NodeSpec nodeSpec,
+ public NodePrioritizer(NodesAndHosts<LockedNodeList> allNodesAndHosts, ApplicationId application, ClusterSpec clusterSpec, NodeSpec nodeSpec,
int wantedGroups, boolean dynamicProvisioning, NameResolver nameResolver,
HostResourcesCalculator hostResourcesCalculator, int spareCount) {
- this.allNodes = allNodes;
- this.capacity = new HostCapacity(allNodes, hostResourcesCalculator);
+ this.allNodesAndHosts = allNodesAndHosts;
+ this.capacity = new HostCapacity(this.allNodesAndHosts, hostResourcesCalculator);
this.requestedNodes = nodeSpec;
this.clusterSpec = clusterSpec;
this.application = application;
this.dynamicProvisioning = dynamicProvisioning;
this.spareHosts = dynamicProvisioning ?
- capacity.findSpareHostsInDynamicallyProvisionedZones(allNodes.asList()) :
- capacity.findSpareHosts(allNodes.asList(), spareCount);
+ capacity.findSpareHostsInDynamicallyProvisionedZones(this.allNodesAndHosts.nodes().asList()) :
+ capacity.findSpareHosts(this.allNodesAndHosts.nodes().asList(), spareCount);
this.nameResolver = nameResolver;
- NodeList nodesInCluster = allNodes.owner(application).type(clusterSpec.type()).cluster(clusterSpec.id());
+ NodeList nodesInCluster = this.allNodesAndHosts.nodes().owner(application).type(clusterSpec.type()).cluster(clusterSpec.id());
NodeList nonRetiredNodesInCluster = nodesInCluster.not().retired();
long currentGroups = nonRetiredNodesInCluster.state(Node.State.active).stream()
.flatMap(node -> node.allocation()
@@ -76,7 +77,7 @@ public class NodePrioritizer {
// In dynamically provisioned zones, we can always take spare hosts since we can provision new on-demand,
// NodeCandidate::compareTo will ensure that they will not be used until there is no room elsewhere.
// In non-dynamically provisioned zones, we only allow allocating to spare hosts to replace failed nodes.
- this.canAllocateToSpareHosts = dynamicProvisioning || isReplacement(nodesInCluster);
+ this.canAllocateToSpareHosts = dynamicProvisioning || isReplacement(nodesInCluster, clusterSpec.group());
// Do not allocate new nodes for exclusive deployments in dynamically provisioned zones: provision new host instead.
this.canAllocateNew = requestedNodes instanceof NodeSpec.CountNodeSpec
&& (!dynamicProvisioning || !requestedNodes.isExclusive());
@@ -94,8 +95,10 @@ public class NodePrioritizer {
/** Returns the list of nodes sorted by {@link NodeCandidate#compareTo(NodeCandidate)} */
private List<NodeCandidate> prioritize() {
// Group candidates by their switch hostname
- Map<Optional<String>, List<NodeCandidate>> candidatesBySwitch = this.nodes.stream()
- .collect(Collectors.groupingBy(candidate -> candidate.parent.orElseGet(candidate::toNode).switchHostname()));
+ Map<String, List<NodeCandidate>> candidatesBySwitch = this.nodes.stream()
+ .collect(Collectors.groupingBy(candidate -> candidate.parent.orElseGet(candidate::toNode)
+ .switchHostname()
+ .orElse("")));
// Mark lower priority nodes on shared switch as non-exclusive
List<NodeCandidate> nodes = new ArrayList<>(this.nodes.size());
for (var clusterSwitch : candidatesBySwitch.keySet()) {
@@ -132,19 +135,20 @@ public class NodePrioritizer {
private void addCandidatesOnExistingHosts() {
if ( !canAllocateNew) return;
- for (Node host : allNodes) {
+ for (Node host : allNodesAndHosts.nodes()) {
if ( ! Nodes.canAllocateTenantNodeTo(host, dynamicProvisioning)) continue;
if (host.reservedTo().isPresent() && !host.reservedTo().get().equals(application.tenant())) continue;
if (host.reservedTo().isPresent() && application.instance().isTester()) continue;
- if (host.exclusiveTo().isPresent()) continue; // Never allocate new nodes to exclusive hosts
+ if (host.exclusiveToApplicationId().isPresent()) continue; // Never allocate new nodes to exclusive hosts
+ if ( ! host.exclusiveToClusterType().map(clusterSpec.type()::equals).orElse(true)) continue;
if (spareHosts.contains(host) && !canAllocateToSpareHosts) continue;
if ( ! capacity.hasCapacity(host, requestedNodes.resources().get())) continue;
- if ( ! allNodes.childrenOf(host).owner(application).cluster(clusterSpec.id()).isEmpty()) continue;
+ if ( ! allNodesAndHosts.childrenOf(host).owner(application).cluster(clusterSpec.id()).isEmpty()) continue;
nodes.add(NodeCandidate.createNewChild(requestedNodes.resources().get(),
- capacity.freeCapacityOf(host, false),
+ capacity.availableCapacityOf(host),
host,
spareHosts.contains(host),
- allNodes,
+ allNodesAndHosts.nodes(),
nameResolver));
}
}
@@ -152,7 +156,7 @@ public class NodePrioritizer {
/** Add existing nodes allocated to the application */
private void addApplicationNodes() {
EnumSet<Node.State> legalStates = EnumSet.of(Node.State.active, Node.State.inactive, Node.State.reserved);
- allNodes.asList().stream()
+ allNodesAndHosts.nodes().stream()
.filter(node -> node.type() == requestedNodes.type())
.filter(node -> legalStates.contains(node.state()))
.filter(node -> node.allocation().isPresent())
@@ -165,7 +169,7 @@ public class NodePrioritizer {
/** Add nodes already provisioned, but not allocated to any application */
private void addReadyNodes() {
- allNodes.asList().stream()
+ allNodesAndHosts.nodes().stream()
.filter(node -> node.type() == requestedNodes.type())
.filter(node -> node.state() == Node.State.ready)
.map(node -> candidateFrom(node, false))
@@ -175,30 +179,34 @@ public class NodePrioritizer {
/** Create a candidate from given pre-existing node */
private NodeCandidate candidateFrom(Node node, boolean isSurplus) {
- Optional<Node> parent = allNodes.parentOf(node);
- if (parent.isPresent()) {
+ Optional<Node> optionalParent = allNodesAndHosts.parentOf(node);
+ if (optionalParent.isPresent()) {
+ Node parent = optionalParent.get();
return NodeCandidate.createChild(node,
- capacity.freeCapacityOf(parent.get(), false),
- parent.get(),
- spareHosts.contains(parent.get()),
+ capacity.availableCapacityOf(parent),
+ parent,
+ spareHosts.contains(parent),
isSurplus,
false,
- parent.get().exclusiveTo().isEmpty()
+ parent.exclusiveToApplicationId().isEmpty()
&& requestedNodes.canResize(node.resources(),
- capacity.freeCapacityOf(parent.get(), false),
+ capacity.availableCapacityOf(parent),
+ clusterSpec.type(),
topologyChange,
currentClusterSize));
- }
- else {
+ } else {
return NodeCandidate.createStandalone(node, isSurplus, false);
}
}
/** Returns whether we are allocating to replace a failed node */
- private boolean isReplacement(NodeList nodesInCluster) {
- int failedNodesInCluster = nodesInCluster.failing().size() + nodesInCluster.state(Node.State.failed).size();
- if (failedNodesInCluster == 0) return false;
- return ! requestedNodes.fulfilledBy(nodesInCluster.size() - failedNodesInCluster);
+ private boolean isReplacement(NodeList nodesInCluster, Optional<ClusterSpec.Group> group) {
+ NodeList nodesInGroup = group.map(ClusterSpec.Group::index)
+ .map(nodesInCluster::group)
+ .orElse(nodesInCluster);
+ int failedNodesInGroup = nodesInGroup.failing().size() + nodesInGroup.state(Node.State.failed).size();
+ if (failedNodesInGroup == 0) return false;
+ return ! requestedNodes.fulfilledBy(nodesInGroup.size() - failedNodesInGroup);
}
/**
@@ -209,9 +217,8 @@ public class NodePrioritizer {
*/
private boolean canStillAllocate(Node node) {
if (node.type() != NodeType.tenant || node.parentHostname().isEmpty()) return true;
- Optional<Node> parent = allNodes.parentOf(node);
- if (parent.isEmpty()) return false;
- return Nodes.canAllocateTenantNodeTo(parent.get(), dynamicProvisioning);
+ Optional<Node> parent = allNodesAndHosts.parentOf(node);
+ return parent.isPresent() ? Nodes.canAllocateTenantNodeTo(parent.get(), dynamicProvisioning) : null;
}
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
index 24d23f13bb5..0ab04a1a73d 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.google.inject.Inject;
@@ -161,7 +161,7 @@ public class NodeRepositoryProvisioner implements Provisioner {
AllocatableClusterResources currentResources =
firstDeployment // start at min, preserve current resources otherwise
? new AllocatableClusterResources(requested.minResources(), clusterSpec, nodeRepository)
- : new AllocatableClusterResources(nodes.asList(), nodeRepository, clusterSpec.isExclusive());
+ : new AllocatableClusterResources(nodes.asList(), nodeRepository);
var clusterModel = new ClusterModel(application, cluster, clusterSpec, nodes, nodeRepository.metricsDb(), nodeRepository.clock());
return within(Limits.of(requested), currentResources, firstDeployment, clusterModel);
}
@@ -199,7 +199,7 @@ public class NodeRepositoryProvisioner implements Provisioner {
log.log(Level.FINE, () -> "Prepared node " + node.hostname() + " - " + node.flavor());
Allocation nodeAllocation = node.allocation().orElseThrow(IllegalStateException::new);
hosts.add(new HostSpec(node.hostname(),
- nodeRepository.resourcesCalculator().realResourcesOf(node, nodeRepository, node.allocation().get().membership().cluster().isExclusive()),
+ nodeRepository.resourcesCalculator().realResourcesOf(node, nodeRepository),
node.flavor().resources(),
requestedResources,
nodeAllocation.membership(),
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeResourceLimits.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeResourceLimits.java
index 2b64cc86c9a..d5dbe08dca9 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeResourceLimits.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeResourceLimits.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.config.provision.ClusterSpec;
@@ -41,10 +41,7 @@ public class NodeResourceLimits {
/** Returns whether the real resources we'll end up with on a given tenant node are within limits */
public boolean isWithinRealLimits(NodeCandidate candidateNode, ClusterSpec cluster) {
if (candidateNode.type() != NodeType.tenant) return true; // Resource limits only apply to tenant nodes
- // This node is allocated exclusively if that has been explicitly requested, or if the host of the node was
- // provisioned exclusively
- boolean exclusive = cluster.isExclusive() || candidateNode.parent.flatMap(Node::exclusiveTo).isPresent();
- return isWithinRealLimits(nodeRepository.resourcesCalculator().realResourcesOf(candidateNode, nodeRepository, exclusive),
+ return isWithinRealLimits(nodeRepository.resourcesCalculator().realResourcesOf(candidateNode, nodeRepository),
cluster.type());
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java
index a84f35a314b..b6c392c84db 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java
@@ -1,6 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
+import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.Flavor;
import com.yahoo.config.provision.NodeFlavors;
import com.yahoo.config.provision.NodeResources;
@@ -72,7 +73,7 @@ public interface NodeSpec {
* in-place to resources in this spec.
*/
default boolean canResize(NodeResources currentNodeResources, NodeResources currentSpareHostResources,
- boolean hasTopologyChange, int currentClusterSize) {
+ ClusterSpec.Type type, boolean hasTopologyChange, int currentClusterSize) {
return false;
}
@@ -153,12 +154,12 @@ public interface NodeSpec {
@Override
public boolean canResize(NodeResources currentNodeResources, NodeResources currentSpareHostResources,
- boolean hasTopologyChange, int currentClusterSize) {
+ ClusterSpec.Type type, boolean hasTopologyChange, int currentClusterSize) {
// Never allow in-place resize when also changing topology or decreasing cluster size
if (hasTopologyChange || count < currentClusterSize) return false;
- // Do not allow increasing cluster size and decreasing node resources at the same time
- if (count > currentClusterSize && !requestedNodeResources.satisfies(currentNodeResources.justNumbers()))
+ // Do not allow increasing cluster size and decreasing node resources at the same time for content nodes
+ if (type.isContent() && count > currentClusterSize && !requestedNodeResources.satisfies(currentNodeResources.justNumbers()))
return false;
// Otherwise, allowed as long as the host can satisfy the new requested resources
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java
index 3fa44d4c091..282b0d96cf4 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java
@@ -1,13 +1,15 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ClusterMembership;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.OutOfCapacityException;
+import com.yahoo.vespa.hosted.provision.LockedNodeList;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeList;
import com.yahoo.vespa.hosted.provision.NodeRepository;
+import com.yahoo.vespa.hosted.provision.NodesAndHosts;
import com.yahoo.vespa.hosted.provision.node.Nodes;
import java.util.ArrayList;
@@ -57,23 +59,23 @@ class Preparer {
// but it may not change the set of active nodes, as the active nodes must stay in sync with the
// active config model which is changed on activate
private List<Node> prepareNodes(ApplicationId application, ClusterSpec cluster, NodeSpec requestedNodes, int wantedGroups) {
- List<Node> surplusNodes = findNodesInRemovableGroups(application, cluster, wantedGroups);
+ NodesAndHosts<LockedNodeList> allNodesAndHosts = groupPreparer.createNodesAndHostUnlocked();
+ NodeList appNodes = allNodesAndHosts.nodes().owner(application);
+ List<Node> surplusNodes = findNodesInRemovableGroups(appNodes, cluster, wantedGroups);
- List<Integer> usedIndices = nodeRepository.nodes().list()
- .owner(application)
- .cluster(cluster.id())
- .mapToList(node -> node.allocation().get().membership().index());
+ List<Integer> usedIndices = appNodes.cluster(cluster.id()).mapToList(node -> node.allocation().get().membership().index());
NodeIndices indices = new NodeIndices(usedIndices, ! cluster.type().isContent());
List<Node> acceptedNodes = new ArrayList<>();
+
for (int groupIndex = 0; groupIndex < wantedGroups; groupIndex++) {
ClusterSpec clusterGroup = cluster.with(Optional.of(ClusterSpec.Group.from(groupIndex)));
- List<Node> accepted = groupPreparer.prepare(application, clusterGroup,
- requestedNodes.fraction(wantedGroups), surplusNodes,
- indices, wantedGroups);
-
+ GroupPreparer.PrepareResult result = groupPreparer.prepare(
+ application, clusterGroup, requestedNodes.fraction(wantedGroups),
+ surplusNodes, indices, wantedGroups, allNodesAndHosts);
+ allNodesAndHosts = result.allNodesAndHosts; // Might have changed
+ List<Node> accepted = result.prepared;
if (requestedNodes.rejectNonActiveParent()) {
- Nodes nodes = nodeRepository.nodes();
- NodeList activeHosts = nodes.list(Node.State.active).parents().nodeType(requestedNodes.type().hostType());
+ NodeList activeHosts = allNodesAndHosts.nodes().state(Node.State.active).parents().nodeType(requestedNodes.type().hostType());
accepted = accepted.stream()
.filter(node -> node.parentHostname().isEmpty() || activeHosts.parentOf(node).isPresent())
.collect(Collectors.toList());
@@ -95,9 +97,9 @@ class Preparer {
* Returns a list of the nodes which are
* in groups with index number above or equal the group count
*/
- private List<Node> findNodesInRemovableGroups(ApplicationId application, ClusterSpec requestedCluster, int wantedGroups) {
+ private List<Node> findNodesInRemovableGroups(NodeList appNodes, ClusterSpec requestedCluster, int wantedGroups) {
List<Node> surplusNodes = new ArrayList<>(0);
- for (Node node : nodeRepository.nodes().list(Node.State.active).owner(application)) {
+ for (Node node : appNodes.state(Node.State.active)) {
ClusterSpec nodeCluster = node.allocation().get().membership().cluster();
if ( ! nodeCluster.id().equals(requestedCluster.id())) continue;
if ( ! nodeCluster.type().equals(requestedCluster.type())) continue;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionedHost.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionedHost.java
index caaea1167b5..f0eb4a59af8 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionedHost.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionedHost.java
@@ -3,6 +3,7 @@ package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.component.Version;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.Flavor;
import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.NodeType;
@@ -28,18 +29,21 @@ public class ProvisionedHost {
private final String hostHostname;
private final Flavor hostFlavor;
private final NodeType hostType;
- private final Optional<ApplicationId> exclusiveTo;
+ private final Optional<ApplicationId> exclusiveToApplicationId;
+ private final Optional<ClusterSpec.Type> exclusiveToClusterType;
private final List<Address> nodeAddresses;
private final NodeResources nodeResources;
private final Version osVersion;
- public ProvisionedHost(String id, String hostHostname, Flavor hostFlavor, NodeType hostType, Optional<ApplicationId> exclusiveTo,
+ public ProvisionedHost(String id, String hostHostname, Flavor hostFlavor, NodeType hostType,
+ Optional<ApplicationId> exclusiveToApplicationId, Optional<ClusterSpec.Type> exclusiveToClusterType,
List<Address> nodeAddresses, NodeResources nodeResources, Version osVersion) {
this.id = Objects.requireNonNull(id, "Host id must be set");
this.hostHostname = Objects.requireNonNull(hostHostname, "Host hostname must be set");
this.hostFlavor = Objects.requireNonNull(hostFlavor, "Host flavor must be set");
this.hostType = Objects.requireNonNull(hostType, "Host type must be set");
- this.exclusiveTo = Objects.requireNonNull(exclusiveTo, "exclusiveTo must be set");
+ this.exclusiveToApplicationId = Objects.requireNonNull(exclusiveToApplicationId, "exclusiveToApplicationId must be set");
+ this.exclusiveToClusterType = Objects.requireNonNull(exclusiveToClusterType, "exclusiveToClusterType must be set");
this.nodeAddresses = validateNodeAddresses(nodeAddresses);
this.nodeResources = Objects.requireNonNull(nodeResources, "Node resources must be set");
this.osVersion = Objects.requireNonNull(osVersion, "OS version must be set");
@@ -59,7 +63,8 @@ public class ProvisionedHost {
Node.Builder builder = Node
.create(id, IP.Config.of(Set.of(), Set.of(), nodeAddresses), hostHostname, hostFlavor, hostType)
.status(Status.initial().withOsVersion(OsVersion.EMPTY.withCurrent(Optional.of(osVersion))));
- exclusiveTo.ifPresent(builder::exclusiveTo);
+ exclusiveToApplicationId.ifPresent(builder::exclusiveToApplicationId);
+ exclusiveToClusterType.ifPresent(builder::exclusiveToClusterType);
return builder.build();
}
@@ -98,6 +103,9 @@ public class ProvisionedHost {
return id.equals(that.id) &&
hostHostname.equals(that.hostHostname) &&
hostFlavor.equals(that.hostFlavor) &&
+ hostType == that.hostType &&
+ exclusiveToApplicationId.equals(that.exclusiveToApplicationId) &&
+ exclusiveToClusterType.equals(that.exclusiveToClusterType) &&
nodeAddresses.equals(that.nodeAddresses) &&
nodeResources.equals(that.nodeResources) &&
osVersion.equals(that.osVersion);
@@ -105,7 +113,7 @@ public class ProvisionedHost {
@Override
public int hashCode() {
- return Objects.hash(id, hostHostname, hostFlavor, nodeAddresses, nodeResources, osVersion);
+ return Objects.hash(id, hostHostname, hostFlavor, hostType, exclusiveToApplicationId, exclusiveToClusterType, nodeAddresses, nodeResources, osVersion);
}
@Override
@@ -114,7 +122,10 @@ public class ProvisionedHost {
"id='" + id + '\'' +
", hostHostname='" + hostHostname + '\'' +
", hostFlavor=" + hostFlavor +
- ", nodeAddresses='" + nodeAddresses + '\'' +
+ ", hostType=" + hostType +
+ ", exclusiveToApplicationId=" + exclusiveToApplicationId +
+ ", exclusiveToClusterType=" + exclusiveToClusterType +
+ ", nodeAddresses=" + nodeAddresses +
", nodeResources=" + nodeResources +
", osVersion=" + osVersion +
'}';
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/package-info.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/package-info.java
index 7cd1e5ee87a..561f0846d14 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/package-info.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.hosted.provision.provisioning;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationPatcher.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationPatcher.java
index 035141356b9..cb3c6c0f5f4 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationPatcher.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationPatcher.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.restapi;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationSerializer.java
index e800f6c9c84..f0b8e77ee56 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationSerializer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationSerializer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.restapi;
import com.yahoo.config.provision.ClusterResources;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ArchiveResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ArchiveResponse.java
index 486139ad1f4..3cff3c5e05f 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ArchiveResponse.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ArchiveResponse.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.restapi;
import com.yahoo.restapi.SlimeJsonResponse;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/HostCapacityResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/HostCapacityResponse.java
index 3c06533b8f5..54c3daa7bd7 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/HostCapacityResponse.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/HostCapacityResponse.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.restapi;
import com.yahoo.container.jdisc.HttpRequest;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/JobsResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/JobsResponse.java
index eb425095978..dbcdb30719e 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/JobsResponse.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/JobsResponse.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.restapi;
import com.yahoo.concurrent.maintenance.JobControl;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/LoadBalancersResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/LoadBalancersResponse.java
index bcd0af4e121..f5b0c791d0a 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/LoadBalancersResponse.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/LoadBalancersResponse.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.restapi;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/LoadBalancersV1ApiHandler.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/LoadBalancersV1ApiHandler.java
index e73f97304c1..aa6209ae80d 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/LoadBalancersV1ApiHandler.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/LoadBalancersV1ApiHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.restapi;
import com.yahoo.container.jdisc.HttpResponse;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/LocksResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/LocksResponse.java
index 0f9babb53aa..8a66a9394b2 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/LocksResponse.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/LocksResponse.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.restapi;
import com.yahoo.container.jdisc.HttpResponse;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeAclResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeAclResponse.java
index 1ea7e1c4881..b03d37b4d46 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeAclResponse.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeAclResponse.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.restapi;
import com.yahoo.container.jdisc.HttpRequest;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java
index 1bea7056790..6f48b6b9164 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java
@@ -1,9 +1,10 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.restapi;
import com.google.common.base.Suppliers;
import com.yahoo.component.Version;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.DockerImage;
import com.yahoo.config.provision.NodeFlavors;
import com.yahoo.config.provision.NodeResources;
@@ -24,6 +25,7 @@ import com.yahoo.vespa.hosted.provision.node.Allocation;
import com.yahoo.vespa.hosted.provision.node.IP;
import com.yahoo.vespa.hosted.provision.node.Report;
import com.yahoo.vespa.hosted.provision.node.Reports;
+import com.yahoo.vespa.hosted.provision.node.TrustStoreItem;
import java.io.IOException;
import java.io.InputStream;
@@ -179,9 +181,14 @@ public class NodePatcher implements AutoCloseable {
case "reservedTo":
return value.type() == Type.NIX ? node.withoutReservedTo() : node.withReservedTo(TenantName.from(value.asString()));
case "exclusiveTo":
- return node.withExclusiveTo(SlimeUtils.optionalString(value).map(ApplicationId::fromSerializedForm).orElse(null));
+ case "exclusiveToApplicationId":
+ return node.withExclusiveToApplicationId(SlimeUtils.optionalString(value).map(ApplicationId::fromSerializedForm).orElse(null));
+ case "exclusiveToClusterType":
+ return node.withExclusiveToClusterType(SlimeUtils.optionalString(value).map(ClusterSpec.Type::valueOf).orElse(null));
case "switchHostname":
return value.type() == Type.NIX ? node.withoutSwitchHostname() : node.withSwitchHostname(value.asString());
+ case "trustStore":
+ return nodeWithTrustStore(node, value);
default :
throw new IllegalArgumentException("Could not apply field '" + name + "' on a node: No such modifiable field");
}
@@ -226,6 +233,14 @@ public class NodePatcher implements AutoCloseable {
return patchedNode;
}
+ private Node nodeWithTrustStore(Node node, Inspector inspector) {
+ List<TrustStoreItem> trustStoreItems =
+ SlimeUtils.entriesStream(inspector)
+ .map(TrustStoreItem::fromSlime)
+ .collect(Collectors.toList());
+ return node.with(trustStoreItems);
+ }
+
private Set<String> asStringSet(Inspector field) {
if ( ! field.type().equals(Type.ARRAY))
throw new IllegalArgumentException("Expected an ARRAY value, got a " + field.type());
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeResourcesSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeResourcesSerializer.java
index 625ee89434e..1d254b3e531 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeResourcesSerializer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeResourcesSerializer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.restapi;
import com.yahoo.config.provision.NodeResources;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeSerializer.java
index 706c36b35ac..be011c886a5 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeSerializer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeSerializer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.restapi;
import com.yahoo.config.provision.NodeType;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java
index 1b3b2f81f11..df6e24aa8a3 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java
@@ -1,10 +1,11 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.restapi;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ClusterMembership;
import com.yahoo.config.provision.DockerImage;
import com.yahoo.config.provision.Flavor;
+import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.serialization.NetworkPortsSerializer;
import com.yahoo.container.jdisc.HttpRequest;
@@ -15,6 +16,7 @@ import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeRepository;
import com.yahoo.vespa.hosted.provision.node.Address;
import com.yahoo.vespa.hosted.provision.node.History;
+import com.yahoo.vespa.hosted.provision.node.TrustStoreItem;
import com.yahoo.vespa.orchestrator.Orchestrator;
import com.yahoo.vespa.orchestrator.status.HostInfo;
import com.yahoo.vespa.orchestrator.status.HostStatus;
@@ -115,8 +117,9 @@ class NodesResponse extends SlimeJsonResponse {
toSlime(node, true, object);
}
- @SuppressWarnings("deprecation")
private void toSlime(Node node, boolean allFields, Cursor object) {
+ NodeResources realResources = nodeRepository.resourcesCalculator().realResourcesOf(node, nodeRepository);
+
object.setString("url", nodeParentUrl + node.hostname());
if ( ! allFields) return;
object.setString("id", node.hostname());
@@ -129,10 +132,12 @@ class NodesResponse extends SlimeJsonResponse {
object.setString("openStackId", node.id());
object.setString("flavor", node.flavor().name());
node.reservedTo().ifPresent(reservedTo -> object.setString("reservedTo", reservedTo.value()));
- node.exclusiveTo().ifPresent(exclusiveTo -> object.setString("exclusiveTo", exclusiveTo.serializedForm()));
+ node.exclusiveToApplicationId().ifPresent(applicationId -> object.setString("exclusiveTo", applicationId.serializedForm()));
+ node.exclusiveToClusterType().ifPresent(clusterType -> object.setString("exclusiveToClusterType", clusterType.name()));
if (node.flavor().isConfigured())
object.setDouble("cpuCores", node.flavor().resources().vcpu());
NodeResourcesSerializer.toSlime(node.flavor().resources(), object.setObject("resources"));
+ NodeResourcesSerializer.toSlime(realResources, object.setObject("realResources"));
if (node.flavor().cost() > 0)
object.setLong("cost", node.flavor().cost());
object.setString("environment", node.flavor().getType().name());
@@ -148,8 +153,6 @@ class NodesResponse extends SlimeJsonResponse {
allocation.networkPorts().ifPresent(ports -> NetworkPortsSerializer.toSlime(ports, object.setArray("networkPorts")));
orchestrator.apply(new HostName(node.hostname()))
.ifPresent(info -> {
- object.setBool("allowedToBeDown", info.status().isSuspended());
- // TODO: Remove allowedToBeDown as a special-case of orchestratorStatus
if (info.status() != HostStatus.NO_REMARKS) {
object.setString("orchestratorStatus", info.status().asString());
}
@@ -178,6 +181,7 @@ class NodesResponse extends SlimeJsonResponse {
node.modelName().ifPresent(modelName -> object.setString("modelName", modelName));
node.switchHostname().ifPresent(switchHostname -> object.setString("switchHostname", switchHostname));
nodeRepository.archiveUris().archiveUriFor(node).ifPresent(uri -> object.setString("archiveUri", uri));
+ trustedCertsToSlime(node.trustedCertificates(), object);
}
private void toSlime(ApplicationId id, Cursor object) {
@@ -224,6 +228,12 @@ class NodesResponse extends SlimeJsonResponse {
addresses.forEach(address -> addressesArray.addString(address.hostname()));
}
+ private void trustedCertsToSlime(List<TrustStoreItem> trustStoreItems, Cursor object) {
+ if (trustStoreItems.isEmpty()) return;
+ Cursor array = object.setArray("trustStore");
+ trustStoreItems.forEach(cert -> cert.toSlime(array));
+ }
+
private String lastElement(String path) {
if (path.endsWith("/"))
path = path.substring(0, path.length()-1);
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java
index 24e297de179..fa89e2e58f0 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.restapi;
import com.yahoo.component.Version;
@@ -283,7 +283,7 @@ public class NodesV2ApiHandler extends LoggingRequestHandler {
optionalString(inspector.field("parentHostname")).ifPresent(builder::parentHostname);
optionalString(inspector.field("modelName")).ifPresent(builder::modelName);
optionalString(inspector.field("reservedTo")).map(TenantName::from).ifPresent(builder::reservedTo);
- optionalString(inspector.field("exclusiveTo")).map(ApplicationId::fromSerializedForm).ifPresent(builder::exclusiveTo);
+ optionalString(inspector.field("exclusiveTo")).map(ApplicationId::fromSerializedForm).ifPresent(builder::exclusiveToApplicationId);
optionalString(inspector.field("switchHostname")).ifPresent(builder::switchHostname);
return builder.build();
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NotFoundException.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NotFoundException.java
index 1b74ba31d00..5423562cfa6 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NotFoundException.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NotFoundException.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.restapi;
/**
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/UpgradeResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/UpgradeResponse.java
index b34f1b1a875..cc5d7745d2f 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/UpgradeResponse.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/UpgradeResponse.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.restapi;
import com.yahoo.container.jdisc.HttpResponse;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ContainerConfig.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ContainerConfig.java
index ebaf4d47887..83a80847ec8 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ContainerConfig.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ContainerConfig.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.testutils;
/**
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDeployer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDeployer.java
index 4fd55fb56fe..99f1b7146df 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDeployer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDeployer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.testutils;
import com.google.inject.Inject;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDuperModel.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDuperModel.java
index a57bcce7db4..49ddfceea71 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDuperModel.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDuperModel.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.testutils;
import com.google.inject.Inject;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java
index 25e74df677b..49fc3c2b7b2 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java
@@ -1,8 +1,9 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.testutils;
import com.yahoo.component.Version;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.Flavor;
import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.NodeType;
@@ -54,7 +55,8 @@ public class MockHostProvisioner implements HostProvisioner {
@Override
public List<ProvisionedHost> provisionHosts(List<Integer> provisionIndices, NodeType hostType, NodeResources resources,
- ApplicationId applicationId, Version osVersion, HostSharing sharing) {
+ ApplicationId applicationId, Version osVersion, HostSharing sharing,
+ Optional<ClusterSpec.Type> clusterType) {
Flavor hostFlavor = this.hostFlavor.orElseGet(() -> flavors.stream().filter(f -> compatible(f, resources))
.findFirst()
.orElseThrow(() -> new OutOfCapacityException("No host flavor matches " + resources)));
@@ -66,6 +68,7 @@ public class MockHostProvisioner implements HostProvisioner {
hostFlavor,
hostType,
Optional.empty(),
+ Optional.empty(),
createAddressesForHost(hostType, hostFlavor, index),
resources,
osVersion));
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockMetricsFetcher.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockMetricsFetcher.java
index da5fa67425f..97fea9648c6 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockMetricsFetcher.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockMetricsFetcher.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.testutils;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNameResolver.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNameResolver.java
index 1b76d02dfd1..0764d4527d5 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNameResolver.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNameResolver.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.testutils;
import com.yahoo.vespa.hosted.provision.persistence.NameResolver;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeFlavors.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeFlavors.java
index c893a0bfb12..cadd1ae0001 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeFlavors.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeFlavors.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.testutils;
import com.yahoo.config.provision.Flavor;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java
index 79a6101750e..00937fe22ce 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.testutils;
import com.yahoo.component.Version;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockProvisioner.java
index 073cf8f6b12..5a9da1e1c3f 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockProvisioner.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockProvisioner.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.testutils;
import com.yahoo.config.provision.ActivationContext;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/OrchestratorMock.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/OrchestratorMock.java
index ff9cb98783c..4247e2bcec5 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/OrchestratorMock.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/OrchestratorMock.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.testutils;
import com.yahoo.component.AbstractComponent;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/README.md b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/README.md
index f7421bf07c9..59e9f4a03c8 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/README.md
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
The test resources are used by both NodeAdmin and NodeRepository
tests to verify APIs. So when modifying this test data
remember to check tests for both NodeAdmin and NodeRepository.
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java
index 23c20adb842..778d34c676f 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.testutils;
import com.google.inject.Inject;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/TestHostLivenessTracker.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/TestHostLivenessTracker.java
index 9242bb2b883..28d0d5f89d7 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/TestHostLivenessTracker.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/TestHostLivenessTracker.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.testutils;
import com.yahoo.config.provision.HostLivenessTracker;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeListMicroBenchmarkTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeListMicroBenchmarkTest.java
new file mode 100644
index 00000000000..b7f9dcb8e8a
--- /dev/null
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeListMicroBenchmarkTest.java
@@ -0,0 +1,106 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.provision;
+
+import com.yahoo.config.provision.Flavor;
+import com.yahoo.config.provision.NodeFlavors;
+import com.yahoo.config.provision.NodeResources;
+import com.yahoo.config.provision.NodeType;
+import com.yahoo.config.provisioning.FlavorsConfig;
+import com.yahoo.vespa.hosted.provision.node.IP;
+import com.yahoo.vespa.hosted.provision.provisioning.FlavorConfigBuilder;
+import com.yahoo.vespa.hosted.provision.provisioning.ProvisioningTester;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import java.time.Duration;
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Optional;
+import java.util.Random;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * @author hmusum
+ */
+public class NodeListMicroBenchmarkTest {
+
+ private static final NodeFlavors nodeFlavors = createNodeFlavors();
+ private final NodeResources resources0 = new NodeResources(1, 30, 20, 1.5);
+ private int nodeCounter = 0;
+ private static final int hostCount = 1000;
+
+ @Ignore
+ @Test
+ public void testChildrenOf() {
+ List<Node> nodes = createHosts();
+
+ List<Node> childNodes = nodes.stream().map(host -> createNodes(host.hostname())).flatMap(Collection::stream).collect(Collectors.toList());
+ nodes.addAll(childNodes);
+ NodeList nodeList = new NodeList(nodes, false);
+
+ int iterations = 100000;
+ Random random = new Random(0);
+ ArrayList<Integer> indexes = new ArrayList<>();
+ for (int i = 0; i < iterations; i++) {
+ indexes.add(random.nextInt(hostCount));
+ }
+ // Warmup for stable results.
+ for (int i = 0; i < 10000; i++) {
+ nodeList.childrenOf(nodes.get(indexes.get(i)));
+ }
+
+ Instant start = Instant.now();
+ for (int i = 0; i < iterations; i++) {
+ nodeList.childrenOf(nodes.get(indexes.get(i)));
+ }
+ Duration duration = Duration.between(start, Instant.now());
+ System.out.println("Calling NodeList.childrenOf took " + duration + " (" + duration.toNanos() / iterations / 1000 + " microseconds per invocation)");
+ }
+
+ private List<Node> createHosts() {
+ List<Node> hosts = new ArrayList<>();
+ for (int i = 0; i < hostCount; i++) {
+ hosts.add(Node.create("host" + i, IP.Config.of(Set.of("::1"), createIps(), List.of()),
+ "host" + i, getFlavor("host"), NodeType.host).build());
+ }
+ return hosts;
+ }
+
+ private List<Node> createNodes(String parentHostname) {
+ List<Node> nodes = new ArrayList<>();
+ for (int i = 0; i < 10; i++) {
+ nodeCounter++;
+ Node node = Node.reserve(Set.of("::2"), "node" + nodeCounter, parentHostname, resources0, NodeType.tenant).build();
+ nodes.add(node);
+ }
+ return nodes;
+ }
+
+ private static NodeFlavors createNodeFlavors() {
+ FlavorConfigBuilder builder = new FlavorConfigBuilder();
+ builder.addFlavor("host", 30, 30, 40, 3, Flavor.Type.BARE_METAL);
+ builder.addFlavor("node", 3, 3, 4, 3, Flavor.Type.DOCKER_CONTAINER);
+ FlavorsConfig flavorsConfig = builder.build();
+ return new NodeFlavors(Optional.ofNullable(flavorsConfig).orElseGet(ProvisioningTester::createConfig));
+ }
+
+ private Flavor getFlavor(String name) {
+ return nodeFlavors.getFlavor(name).orElseThrow(() -> new RuntimeException("Unknown flavor"));
+ }
+
+ private Set<String> createIps() {
+ // Allow 4 containers
+ int start = 2;
+ int count = 4;
+ Set<String> ipAddressPool = new LinkedHashSet<>();
+ for (int i = start; i < (start + count); i++) {
+ ipAddressPool.add("::" + i);
+ }
+ return ipAddressPool;
+ }
+
+}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepoStatsTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepoStatsTest.java
index 44376fc103c..56f4863c881 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepoStatsTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepoStatsTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision;
import com.yahoo.collections.Pair;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java
index 4bfe01375c1..078df5264a1 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision;
import com.yahoo.config.provision.NodeType;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTester.java
index c986a5df1d3..aaccd7b31cc 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTester.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision;
import com.yahoo.config.provision.DockerImage;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/RealDataScenarioTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/RealDataScenarioTest.java
index 2b180853d83..27233791cf1 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/RealDataScenarioTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/RealDataScenarioTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision;
import com.yahoo.component.Version;
@@ -35,6 +35,7 @@ import java.io.UncheckedIOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.util.Collection;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
@@ -49,13 +50,21 @@ import static com.yahoo.config.provision.NodeResources.DiskSpeed.fast;
import static com.yahoo.config.provision.NodeResources.StorageType.local;
import static com.yahoo.config.provision.NodeResources.StorageType.remote;
import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.junit.Assert.assertEquals;
/**
* Scenario tester with real node-repository data loaded from ZK snapshot file
*
+ * How to use:
+ *
+ * 1. Copy /opt/vespa/conf/configserver-app/node-flavors.xml from config server to /tmp/node-flavors.xml
+ * 2. Copy /opt/vespa/var/zookeeper/version-2/snapshot.XXX from config server to /tmp/snapshot
+ * 3. Set capacities and specs according to the wanted scenario
+ *
* @author valerijf
*/
public class RealDataScenarioTest {
+
private static final Logger log = Logger.getLogger(RealDataScenarioTest.class.getSimpleName());
@Ignore
@@ -63,11 +72,11 @@ public class RealDataScenarioTest {
public void test() {
ProvisioningTester tester = new ProvisioningTester.Builder()
.zone(new Zone(Cloud.builder().dynamicProvisioning(true).build(), SystemName.defaultSystem(), Environment.prod, RegionName.defaultName()))
- .flavorsConfig(parseFlavors(Paths.get(System.getProperty("user.home"), ".flavors.xml")))
+ .flavorsConfig(parseFlavors(Paths.get("/tmp/node-flavors.xml")))
.nameResolver(new DnsNameResolver())
.spareCount(1)
.build();
- initFromZk(tester.nodeRepository(), Paths.get(System.getProperty("user.home"), "snapshot"));
+ initFromZk(tester.nodeRepository(), Paths.get("/tmp/snapshot"));
ApplicationId app = ApplicationId.from("tenant", "app", "default");
Version version = Version.fromString("7.123.4");
@@ -91,10 +100,11 @@ public class RealDataScenarioTest {
}
private void deploy(ProvisioningTester tester, ApplicationId app, ClusterSpec[] specs, Capacity[] capacities) {
+ assertEquals("Equal capacity and spec count", capacities.length, specs.length);
List<HostSpec> hostSpecs = IntStream.range(0, capacities.length)
- .mapToObj(i -> tester.provisioner().prepare(app, specs[i], capacities[i], log::log).stream())
- .flatMap(s -> s)
- .collect(Collectors.toList());
+ .mapToObj(i -> tester.provisioner().prepare(app, specs[i], capacities[i], log::log))
+ .flatMap(Collection::stream)
+ .collect(Collectors.toList());
NestedTransaction transaction = new NestedTransaction();
tester.provisioner().activate(hostSpecs, new ActivationContext(0), new ApplicationTransaction(new ProvisionLock(app, () -> {}), transaction));
transaction.commit();
@@ -144,4 +154,5 @@ public class RealDataScenarioTest {
throw new UncheckedIOException(e);
}
}
+
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/applications/ApplicationsTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/applications/ApplicationsTest.java
index 1d11b46acf5..92d53b657b6 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/applications/ApplicationsTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/applications/ApplicationsTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.applications;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingIntegrationTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingIntegrationTest.java
index 2eab0453d58..4a0c2012ae4 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingIntegrationTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingIntegrationTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java
index d65ae143487..a3c7b7d2d2b 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java
@@ -1,10 +1,9 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.Capacity;
import com.yahoo.config.provision.Cloud;
-import com.yahoo.config.provision.CloudName;
import com.yahoo.config.provision.ClusterResources;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.Environment;
@@ -691,11 +690,11 @@ public class AutoscalingTest {
5, 1, 9.5, 100, 100,
tester.autoscale(application1, cluster1.id(), min, max).target());
- tester.addCpuMeasurements(0.4f, 1f, 100, application1);
+ tester.addCpuMeasurements(0.3f, 1f, 100, application1);
tester.clock().advance(Duration.ofMinutes(-100 * 5));
tester.addLoadMeasurements(application1, cluster1.id(), 100, t -> t == 0 ? 20.0 : 10.0, t -> 100.0);
tester.assertResources("Write load is 10x query load -> scale down",
- 5, 1, 3.8, 100, 100,
+ 5, 1, 2.9, 100, 100,
tester.autoscale(application1, cluster1.id(), min, max).target());
tester.addCpuMeasurements(0.4f, 1f, 100, application1);
@@ -747,7 +746,7 @@ public class AutoscalingTest {
}
@Override
- public NodeResources realResourcesOf(Nodelike node, NodeRepository nodeRepository, boolean exclusive) {
+ public NodeResources realResourcesOf(Nodelike node, NodeRepository nodeRepository) {
return node.resources();
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java
index 1902d762fb4..c45b6caf14c 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import com.yahoo.collections.Pair;
@@ -28,8 +28,6 @@ import com.yahoo.vespa.hosted.provision.provisioning.HostResourcesCalculator;
import com.yahoo.vespa.hosted.provision.provisioning.ProvisioningTester;
import java.time.Duration;
-import java.time.Instant;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@@ -362,7 +360,7 @@ class AutoscalingTester {
}
@Override
- public NodeResources realResourcesOf(Nodelike node, NodeRepository nodeRepository, boolean exclusive) {
+ public NodeResources realResourcesOf(Nodelike node, NodeRepository nodeRepository) {
if (zone.getCloud().dynamicProvisioning())
return node.resources().withMemoryGb(node.resources().memoryGb() - 3);
else
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterModelTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterModelTest.java
index af1bd2aa231..0e37d953d2d 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterModelTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterModelTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterTimeseriesTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterTimeseriesTest.java
index c56e65ebbba..9e448b4b614 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterTimeseriesTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterTimeseriesTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import com.yahoo.config.provision.ClusterSpec;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsV2MetricsFetcherTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsV2MetricsFetcherTest.java
index 07f8fa41d24..d1913a10b49 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsV2MetricsFetcherTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsV2MetricsFetcherTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import com.yahoo.collections.Pair;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsDbTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsDbTest.java
index ae14b94e619..5e2d13d784d 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsDbTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsDbTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import com.yahoo.collections.Pair;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/QuestMetricsDbTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/QuestMetricsDbTest.java
index 34243f4548f..9e3213fc977 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/QuestMetricsDbTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/QuestMetricsDbTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
import com.yahoo.collections.Pair;
@@ -22,6 +22,7 @@ import java.util.stream.Collectors;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
/**
* Tests the Quest metrics db.
@@ -163,21 +164,25 @@ public class QuestMetricsDbTest {
String dataDir = "data/QuestMetricsDbGc";
IOUtils.recursiveDeleteDir(new File(dataDir));
IOUtils.createDirectory(dataDir + "/metrics");
- ManualClock clock = new ManualClock("2020-10-01T00:00:00");
- QuestMetricsDb db = new QuestMetricsDb(dataDir, clock);
+ ManualClock clock = new ManualClock();
+ int days = 10; // The first metrics are this many days in the past
+ clock.retreat(Duration.ofDays(10));
Instant startTime = clock.instant();
- int dayOffset = 3;
- clock.advance(Duration.ofHours(dayOffset));
- db.addNodeMetrics(nodeTimeseries(24 * 10, Duration.ofHours(1), clock, "host1", "host2", "host3"));
- assertEquals(24 * 10, db.getNodeTimeseries(Duration.between(startTime, clock.instant()),
- Set.of("host1")).get(0).size());
- db.gc();
- assertEquals(75, db.getNodeTimeseries(Duration.between(startTime, clock.instant()),
+ QuestMetricsDb db = new QuestMetricsDb(dataDir, clock);
+
+ db.addNodeMetrics(nodeTimeseries(24 * days, Duration.ofHours(1), clock, "host1", "host2", "host3"));
+
+ var application1 = ApplicationId.from("t1", "a1", "i1");
+ var cluster1 = new ClusterSpec.Id("cluster1");
+ db.addClusterMetrics(application1, Map.of(cluster1, new ClusterMetricSnapshot(clock.instant(), 30.0, 15.0)));
+
+ assertEquals(24 * days, db.getNodeTimeseries(Duration.between(startTime, clock.instant()),
Set.of("host1")).get(0).size());
+ db.gc();
+ assertTrue(db.getNodeTimeseries(Duration.between(startTime, clock.instant()), Set.of("host1")).get(0).size() < 24 * 4);
db.gc(); // no-op
- assertEquals(75, db.getNodeTimeseries(Duration.between(startTime, clock.instant()),
- Set.of("host1")).get(0).size());
+ assertTrue(db.getNodeTimeseries(Duration.between(startTime, clock.instant()), Set.of("host1")).get(0).size() < 24 * 4);
}
/** To manually test that we can read existing data */
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerServiceTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerServiceTest.java
index 06f18d94c5f..bcde89152bb 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerServiceTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerServiceTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.lb;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTest.java
index b0b3f8c3ed8..4bda7b137a0 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTester.java
index 4ca12e4ab53..e36bd5e70bc 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTester.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.collections.Pair;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DirtyExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DirtyExpirerTest.java
index cf5cfb93782..275708d9ae0 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DirtyExpirerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DirtyExpirerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.component.Version;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ExpeditedChangeApplicationMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ExpeditedChangeApplicationMaintainerTest.java
index 62d09c99f16..908598b25fb 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ExpeditedChangeApplicationMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ExpeditedChangeApplicationMaintainerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.ApplicationId;
@@ -68,9 +68,15 @@ public class ExpeditedChangeApplicationMaintainerTest {
maintainer.maintain();
assertEquals("Operator change -> redeployment", 5, fixture.deployer.redeployments);
+ clock.advance(Duration.ofSeconds(1));
+ fixture.tester.makeReadyNodes(1, fixture.nodeResources, NodeType.proxy);
+ clock.advance(Duration.ofMinutes(2));
+ maintainer.maintain();
+ assertEquals("Ready proxy node -> redeployment", 6, fixture.deployer.redeployments);
+
clock.advance(Duration.ofMinutes(2));
maintainer.maintain();
- assertEquals("No further operator changes -> no (new) redeployments", 5, fixture.deployer.redeployments);
+ assertEquals("No further operator changes -> no (new) redeployments", 6, fixture.deployer.redeployments);
}
private static class Fixture {
@@ -82,7 +88,7 @@ public class ExpeditedChangeApplicationMaintainerTest {
final NodeResources nodeResources = new NodeResources(2, 8, 50, 1);
final ApplicationId app1 = ApplicationId.from(TenantName.from("foo1"), ApplicationName.from("bar"), InstanceName.from("fuz"));
final ApplicationId app2 = ApplicationId.from(TenantName.from("foo2"), ApplicationName.from("bar"), InstanceName.from("fuz"));
- final ApplicationId app3 = ApplicationId.from(TenantName.from("vespa-hosted"), ApplicationName.from("routing"), InstanceName.from("default"));
+ final ApplicationId app3 = ApplicationId.from(TenantName.from("hosted-vespa"), ApplicationName.from("routing"), InstanceName.from("default"));
final ClusterSpec clusterApp1 = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("test")).vespaVersion("6.42").build();
final ClusterSpec clusterApp2 = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("test")).vespaVersion("6.42").build();
final ClusterSpec clusterApp3 = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("routing")).vespaVersion("6.42").build();
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java
index 6ec4853dbca..660a84e6c15 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.ActivationContext;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypterTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypterTest.java
index 1e5d57263fa..2149badda70 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypterTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypterTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.component.Version;
@@ -70,9 +70,11 @@ public class HostEncrypterTest {
NodeList allNodes = tester.nodeRepository().nodes().list();
NodeList encryptingHosts = allNodes.encrypting().parents();
- assertEquals(1, encryptingHosts.size());
+ assertEquals(1, encryptingHosts.nodeType(NodeType.proxyhost).size());
+
+ assertEquals(1, encryptingHosts.nodeType(NodeType.host).size());
assertEquals("Host of included application is encrypted", Set.of(app1),
- allNodes.childrenOf(encryptingHosts.asList().get(0)).stream()
+ allNodes.childrenOf(encryptingHosts.nodeType(NodeType.host).asList().get(0)).stream()
.map(node -> node.allocation().get().owner())
.collect(Collectors.toSet()));
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java
index e4225d780f0..5e9137f8713 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.component.Vtag;
@@ -63,7 +63,7 @@ public class InactiveAndFailedExpirerTest {
List<HostSpec> preparedNodes = tester.prepare(applicationId, cluster, Capacity.from(new ClusterResources(2, 1, nodeResources)));
tester.activate(applicationId, new HashSet<>(preparedNodes));
assertEquals(2, tester.getNodes(applicationId, Node.State.active).size());
- tester.deactivate(applicationId);
+ tester.activate(applicationId, List.of());
List<Node> inactiveNodes = tester.getNodes(applicationId, Node.State.inactive).asList();
assertEquals(2, inactiveNodes.size());
@@ -149,7 +149,7 @@ public class InactiveAndFailedExpirerTest {
List<HostSpec> preparedNodes = tester.prepare(testerId, cluster, Capacity.from(new ClusterResources(2, 1, nodeResources)));
tester.activate(testerId, new HashSet<>(preparedNodes));
assertEquals(1, tester.getNodes(testerId, Node.State.active).size());
- tester.deactivate(testerId);
+ tester.activate(testerId, List.of());
List<Node> inactiveNodes = tester.getNodes(testerId, Node.State.inactive).asList();
assertEquals(1, inactiveNodes.size());
@@ -171,7 +171,7 @@ public class InactiveAndFailedExpirerTest {
List<HostSpec> preparedNodes = tester.prepare(applicationId, cluster, Capacity.fromRequiredNodeType(NodeType.host));
tester.activate(applicationId, new HashSet<>(preparedNodes));
assertEquals(2, tester.getNodes(applicationId, Node.State.active).size());
- tester.deactivate(applicationId);
+ tester.activate(applicationId, List.of());
List<Node> inactiveNodes = tester.getNodes(applicationId, Node.State.inactive).asList();
assertEquals(2, inactiveNodes.size());
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureVersionsTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureVersionsTest.java
index 62e783be1f7..636846f9fc4 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureVersionsTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InfrastructureVersionsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.component.Version;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java
index 7fa6810c1ba..f01f98064a0 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.component.Version;
@@ -115,7 +115,6 @@ public class MetricsReporterTest {
expectedMetrics.put("failReport", 0);
- expectedMetrics.put("allowedToBeDown", 1);
expectedMetrics.put("suspended", 1);
expectedMetrics.put("suspendedSeconds", 123L);
expectedMetrics.put("numberOfServices", 0L);
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java
index 9ded28094d2..0ea7011a930 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.ActivationContext;
@@ -114,6 +114,34 @@ public class NodeFailTester {
return tester;
}
+ /** Create hostCount hosts, one app with containerCount containers, and one app with contentCount content nodes. */
+ public static NodeFailTester withTwoApplications(int hostCount, int containerCount, int contentCount) {
+ NodeFailTester tester = new NodeFailTester();
+ tester.createHostNodes(hostCount);
+
+ // Create tenant host application
+ ClusterSpec clusterNodeAdminApp = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("node-admin")).vespaVersion("6.42").build();
+ ClusterSpec clusterApp1 = ClusterSpec.request(ClusterSpec.Type.container, testCluster).vespaVersion("6.75.0").build();
+ ClusterSpec clusterApp2 = ClusterSpec.request(ClusterSpec.Type.content, testCluster).vespaVersion("6.75.0").build();
+ Capacity allHosts = Capacity.fromRequiredNodeType(NodeType.host);
+ Capacity capacity1 = Capacity.from(new ClusterResources(containerCount, 1, new NodeResources(1, 4, 10, 0.3)), false, true);
+ Capacity capacity2 = Capacity.from(new ClusterResources(contentCount, 1, new NodeResources(1, 4, 10, 0.3)), false, true);
+ tester.activate(tenantHostApp, clusterNodeAdminApp, allHosts);
+ tester.activate(app1, clusterApp1, capacity1);
+ tester.activate(app2, clusterApp2, capacity2);
+ assertEquals(Set.of(tester.nodeRepository.nodes().list().nodeType(NodeType.host).asList()),
+ Set.of(tester.nodeRepository.nodes().list(Node.State.active).owner(tenantHostApp).asList()));
+ assertEquals(capacity1.minResources().nodes(), tester.nodeRepository.nodes().list(Node.State.active).owner(app1).size());
+ assertEquals(capacity2.minResources().nodes(), tester.nodeRepository.nodes().list(Node.State.active).owner(app2).size());
+
+ Map<ApplicationId, MockDeployer.ApplicationContext> apps = Map.of(
+ tenantHostApp, new MockDeployer.ApplicationContext(tenantHostApp, clusterNodeAdminApp, allHosts),
+ app1, new MockDeployer.ApplicationContext(app1, clusterApp1, capacity1),
+ app2, new MockDeployer.ApplicationContext(app2, clusterApp2, capacity2));
+ tester.initializeMaintainers(apps);
+ return tester;
+ }
+
public static NodeFailTester withTwoApplications(int numberOfHosts) {
NodeFailTester tester = new NodeFailTester();
@@ -148,11 +176,12 @@ public class NodeFailTester {
}
public static NodeFailTester withOneUndeployedApplication(Capacity capacity) {
- NodeFailTester tester = new NodeFailTester();
+ return withOneUndeployedApplication(capacity, ClusterSpec.request(ClusterSpec.Type.container, testCluster).vespaVersion("6.42").build());
+ }
- // Create applications
- ClusterSpec clusterApp = ClusterSpec.request(ClusterSpec.Type.container, testCluster).vespaVersion("6.42").build();
- Map<ApplicationId, MockDeployer.ApplicationContext> apps = Map.of(app1, new MockDeployer.ApplicationContext(app1, clusterApp, capacity));
+ public static NodeFailTester withOneUndeployedApplication(Capacity capacity, ClusterSpec spec) {
+ NodeFailTester tester = new NodeFailTester();
+ Map<ApplicationId, MockDeployer.ApplicationContext> apps = Map.of(app1, new MockDeployer.ApplicationContext(app1, spec, capacity));
tester.initializeMaintainers(apps);
return tester;
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailerTest.java
index 7eff8af8b8d..cf1cea49fa6 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.Capacity;
@@ -377,41 +377,29 @@ public class NodeFailerTest {
}
@Test
- public void failing_ready_nodes() {
- NodeFailTester tester = NodeFailTester.withTwoApplications();
-
- // Add ready node
- NodeResources newNodeResources = new NodeResources(3, 4, 5, 1);
- tester.createReadyNodes(1, 16, newNodeResources);
-
- // For a day all nodes work so nothing happens
- for (int minutes = 0, interval = 30; minutes < 24 * 60; minutes += interval) {
- tester.clock.advance(Duration.ofMinutes(interval));
- tester.allNodesMakeAConfigRequestExcept();
- tester.runMaintainers();
- assertEquals( 5, tester.nodeRepository.nodes().list(Node.State.ready).nodeType(NodeType.tenant).size());
- }
-
- NodeList ready = tester.nodeRepository.nodes().list(Node.State.ready).nodeType(NodeType.tenant);
+ public void node_failing_can_allocate_spare_to_replace_failed_node_in_group() {
+ NodeResources resources = new NodeResources(1, 20, 15, 1);
+ Capacity capacity = Capacity.from(new ClusterResources(4, 2, resources), false, true);
+ ClusterSpec spec = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("test")).vespaVersion("6.42").build();
+ NodeFailTester tester = NodeFailTester.withOneUndeployedApplication(capacity, spec);
+ assertEquals("Test depends on this setting in NodeFailTester", 1, tester.nodeRepository.spareCount());
+ tester.createAndActivateHosts(5, resources); // One extra - becomes designated spare
+ tester.activate(NodeFailTester.app1, spec, capacity);
- // Two ready hosts and a ready node die, but only 2 of those are failed out
- tester.clock.advance(Duration.ofMinutes(180));
- Node failingNode = ready.stream().filter(node -> node.resources().equals(newNodeResources)).findFirst().get();
- List<Node> otherNodes = ready.stream()
- .filter(node -> !node.resources().equals(newNodeResources))
- .collect(Collectors.toList());
- tester.allNodesMakeAConfigRequestExcept(otherNodes.get(0), otherNodes.get(2), failingNode);
- tester.runMaintainers();
- assertEquals( 3, tester.nodeRepository.nodes().list(Node.State.ready).nodeType(NodeType.tenant).size());
- assertEquals( 2, tester.nodeRepository.nodes().list(Node.State.failed).nodeType(NodeType.tenant).size());
+ // Hardware failure is reported for host
+ NodeList activeNodes = tester.nodeRepository.nodes().list(Node.State.active);
+ Node downNode = activeNodes.owner(NodeFailTester.app1).first().get();
+ Node downHost = activeNodes.parentOf(downNode).get();
+ tester.tester.patchNode(downHost, (node) -> node.with(node.reports().withReport(badTotalMemorySizeReport)));
+ tester.suspend(downHost.hostname());
+ tester.suspend(downNode.hostname());
- // Another ready node dies and the node that died earlier, are allowed to fail
- tester.clock.advance(Duration.ofDays(1));
- tester.allNodesMakeAConfigRequestExcept(otherNodes.get(0), otherNodes.get(2), failingNode, otherNodes.get(3));
+ // Node is failed and replaced
tester.runMaintainers();
- assertEquals( 1, tester.nodeRepository.nodes().list(Node.State.ready).nodeType(NodeType.tenant).size());
- assertEquals(otherNodes.get(1), tester.nodeRepository.nodes().list(Node.State.ready).nodeType(NodeType.tenant).first().get());
- assertEquals( 4, tester.nodeRepository.nodes().list(Node.State.failed).nodeType(NodeType.tenant).size());
+ assertEquals(1, tester.deployer.redeployments);
+ NodeList failedOrActive = tester.nodeRepository.nodes().list(Node.State.active, Node.State.failed);
+ assertEquals(4, failedOrActive.state(Node.State.active).nodeType(NodeType.tenant).size());
+ assertEquals(Set.of(downNode.hostname()), failedOrActive.state(Node.State.failed).nodeType(NodeType.tenant).hostnames());
}
@Test
@@ -601,61 +589,20 @@ public class NodeFailerTest {
public void node_failing_throttle() {
// Throttles based on a absolute number in small zone
{
- // 50 regular tenant nodes, 10 hosts with each 3 tenant nodes, total 90 nodes
+ // 10 hosts with 3 tenant nodes each, total 40 nodes
NodeFailTester tester = NodeFailTester.withTwoApplications(10);
- List<Node> readyNodes = tester.createReadyNodes(50, 30);
NodeList hosts = tester.nodeRepository.nodes().list().nodeType(NodeType.host);
- List<Node> deadNodes = readyNodes.subList(0, 4);
-
- // 2 hours pass, 4 physical nodes die
- for (int minutes = 0, interval = 30; minutes < 2 * 60; minutes += interval) {
- tester.clock.advance(Duration.ofMinutes(interval));
- tester.allNodesMakeAConfigRequestExcept(deadNodes);
- }
-
- // 2 nodes are failed (the minimum amount that are always allowed to fail)
- tester.runMaintainers();
- assertEquals(2, tester.nodeRepository.nodes().list(Node.State.failed).size());
- assertEquals("Throttling is indicated by the metric", 1, tester.metric.values.get(NodeFailer.throttlingActiveMetric));
- assertEquals("Throttled node failures", 2, tester.metric.values.get(NodeFailer.throttledNodeFailuresMetric));
-
- // 6 more hours pass, no more nodes are failed
- for (int minutes = 0, interval = 30; minutes < 6 * 60; minutes += interval) {
- tester.clock.advance(Duration.ofMinutes(interval));
- tester.allNodesMakeAConfigRequestExcept(deadNodes);
- }
- tester.runMaintainers();
- assertEquals(2, tester.nodeRepository.nodes().list(Node.State.failed).size());
- assertEquals("Throttling is indicated by the metric", 1, tester.metric.values.get(NodeFailer.throttlingActiveMetric));
- assertEquals("Throttled node failures", 2, tester.metric.values.get(NodeFailer.throttledNodeFailuresMetric));
-
- // 18 more hours pass, the remaining dead nodes are allowed to fail
- for (int minutes = 0, interval = 30; minutes < 18 * 60; minutes += interval) {
- tester.clock.advance(Duration.ofMinutes(interval));
- tester.allNodesMakeAConfigRequestExcept(deadNodes);
- }
- tester.runMaintainers();
- assertEquals(4, tester.nodeRepository.nodes().list(Node.State.failed).size());
-
- // 24 more hours pass, nothing happens
- for (int minutes = 0, interval = 30; minutes < 24 * 60; minutes += interval) {
- tester.clock.advance(Duration.ofMinutes(interval));
- tester.allNodesMakeAConfigRequestExcept(deadNodes);
- }
// 3 hosts fail. 2 of them and all of their children are allowed to fail
List<Node> failedHosts = hosts.asList().subList(0, 3);
failedHosts.forEach(host -> {
tester.serviceMonitor.setHostDown(host.hostname());
- deadNodes.add(host);
});
tester.runMaintainers();
tester.clock.advance(Duration.ofMinutes(61));
- tester.allNodesMakeAConfigRequestExcept(deadNodes);
tester.runMaintainers();
- assertEquals(4 + /* already failed */
- 2 + /* hosts */
+ assertEquals(2 + /* hosts */
(2 * 3) /* containers per host */,
tester.nodeRepository.nodes().list(Node.State.failed).size());
assertEquals("Throttling is indicated by the metric", 1, tester.metric.values.get(NodeFailer.throttlingActiveMetric));
@@ -664,61 +611,58 @@ public class NodeFailerTest {
// 24 more hours pass without any other nodes being failed out
for (int minutes = 0, interval = 30; minutes <= 23 * 60; minutes += interval) {
tester.clock.advance(Duration.ofMinutes(interval));
- tester.allNodesMakeAConfigRequestExcept(deadNodes);
}
tester.runMaintainers();
- assertEquals(12, tester.nodeRepository.nodes().list(Node.State.failed).size());
+ assertEquals(8, tester.nodeRepository.nodes().list(Node.State.failed).size());
assertEquals("Throttling is indicated by the metric", 1, tester.metric.values.get(NodeFailer.throttlingActiveMetric));
assertEquals("Throttled host failures", 1, tester.metric.values.get(NodeFailer.throttledHostFailuresMetric));
// The final host and its containers are failed out
tester.clock.advance(Duration.ofMinutes(30));
tester.runMaintainers();
- assertEquals(16, tester.nodeRepository.nodes().list(Node.State.failed).size());
+ assertEquals(12, tester.nodeRepository.nodes().list(Node.State.failed).size());
assertEquals("Throttling is not indicated by the metric, as no throttled attempt is made", 0, tester.metric.values.get(NodeFailer.throttlingActiveMetric));
assertEquals("No throttled node failures", 0, tester.metric.values.get(NodeFailer.throttledNodeFailuresMetric));
// Nothing else to fail
tester.clock.advance(Duration.ofHours(25));
- tester.allNodesMakeAConfigRequestExcept(deadNodes);
tester.runMaintainers();
- assertEquals(16, tester.nodeRepository.nodes().list(Node.State.failed).size());
+ assertEquals(12, tester.nodeRepository.nodes().list(Node.State.failed).size());
assertEquals("Throttling is not indicated by the metric", 0, tester.metric.values.get(NodeFailer.throttlingActiveMetric));
assertEquals("No throttled node failures", 0, tester.metric.values.get(NodeFailer.throttledNodeFailuresMetric));
}
// Throttles based on percentage in large zone
{
- NodeFailTester tester = NodeFailTester.withNoApplications();
- List<Node> readyNodes = tester.createReadyNodes(500);
- List<Node> deadNodes = readyNodes.subList(0, 15);
+ NodeFailTester tester = NodeFailTester.withTwoApplications(300, 100, 100);
+ NodeList allNodes = tester.nodeRepository.nodes().list();
+ assertEquals(500, allNodes.size());
// 2 hours pass, 15 nodes (3%) die
- for (int minutes = 0, interval = 30; minutes < 2 * 60; minutes += interval) {
- tester.clock.advance(Duration.ofMinutes(interval));
- tester.allNodesMakeAConfigRequestExcept(deadNodes);
- }
tester.runMaintainers();
+ allNodes.state(Node.State.active)
+ .nodeType(NodeType.tenant)
+ .stream()
+ .limit(15)
+ .forEach(host -> tester.serviceMonitor.setHostDown(host.hostname()));
+ tester.runMaintainers();
+ tester.clock.advance(Duration.ofHours(2));
+ tester.runMaintainers();
+
// 2% are allowed to fail
assertEquals(10, tester.nodeRepository.nodes().list(Node.State.failed).size());
assertEquals("Throttling is indicated by the metric.", 1, tester.metric.values.get(NodeFailer.throttlingActiveMetric));
assertEquals("Throttled node failures", 5, tester.metric.values.get(NodeFailer.throttledNodeFailuresMetric));
// 6 more hours pass, no more nodes are failed
- for (int minutes = 0, interval = 30; minutes < 6 * 60; minutes += interval) {
- tester.clock.advance(Duration.ofMinutes(interval));
- tester.allNodesMakeAConfigRequestExcept(deadNodes);
- }
+ tester.clock.advance(Duration.ofHours(6));
tester.runMaintainers();
assertEquals(10, tester.nodeRepository.nodes().list(Node.State.failed).size());
assertEquals("Throttling is indicated by the metric.", 1, tester.metric.values.get(NodeFailer.throttlingActiveMetric));
assertEquals("Throttled node failures", 5, tester.metric.values.get(NodeFailer.throttledNodeFailuresMetric));
// 18 more hours pass, 24 hours since the first 10 nodes were failed. The remaining 5 are failed
- for (int minutes = 0, interval = 30; minutes < 18 * 60; minutes += interval) {
- tester.clock.advance(Duration.ofMinutes(interval));
- tester.allNodesMakeAConfigRequestExcept(deadNodes);
- }
+ tester.clock.advance(Duration.ofHours(18));
tester.runMaintainers();
assertEquals(15, tester.nodeRepository.nodes().list(Node.State.failed).size());
assertEquals("Throttling is not indicated by the metric, as no throttled attempt is made.", 0, tester.metric.values.get(NodeFailer.throttlingActiveMetric));
@@ -728,14 +672,23 @@ public class NodeFailerTest {
@Test
public void testUpness() {
- assertFalse(badNode(0, 0, 0));
- assertFalse(badNode(0, 0, 2));
- assertFalse(badNode(0, 3, 0));
- assertFalse(badNode(0, 3, 2));
- assertTrue(badNode(1, 0, 0));
- assertTrue(badNode(1, 0, 2));
- assertFalse(badNode(1, 3, 0));
- assertFalse(badNode(1, 3, 2));
+ assertFalse(badNode(0, 0, 0, 0));
+ assertFalse(badNode(0, 0, 0, 2));
+ assertFalse(badNode(0, 3, 0, 0));
+ assertFalse(badNode(0, 3, 0, 2));
+ assertTrue(badNode(1, 0, 0, 0));
+ assertTrue(badNode(1, 0, 0, 2));
+ assertFalse(badNode(1, 3, 0, 0));
+ assertFalse(badNode(1, 3, 0, 2));
+
+ assertFalse(badNode(0, 0, 1, 0));
+ assertFalse(badNode(0, 0, 1, 2));
+ assertFalse(badNode(0, 3, 1, 0));
+ assertFalse(badNode(0, 3, 1, 2));
+ assertFalse(badNode(1, 0, 1, 0));
+ assertFalse(badNode(1, 0, 1, 2));
+ assertFalse(badNode(1, 3, 1, 0));
+ assertFalse(badNode(1, 3, 1, 2));
}
private void addServiceInstances(List<ServiceInstance> list, ServiceStatus status, int num) {
@@ -746,10 +699,11 @@ public class NodeFailerTest {
}
}
- private boolean badNode(int numDown, int numUp, int numNotChecked) {
+ private boolean badNode(int numDown, int numUp, int numUnknown, int numNotChecked) {
List<ServiceInstance> services = new ArrayList<>();
addServiceInstances(services, ServiceStatus.DOWN, numDown);
addServiceInstances(services, ServiceStatus.UP, numUp);
+ addServiceInstances(services, ServiceStatus.UNKNOWN, numUnknown);
addServiceInstances(services, ServiceStatus.NOT_CHECKED, numNotChecked);
Collections.shuffle(services);
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMetricsDbMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMetricsDbMaintainerTest.java
index cfe6e4d348d..8a84c81e082 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMetricsDbMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMetricsDbMaintainerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.Capacity;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooterTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooterTest.java
index 1894ef6ed70..b8f6011d6bf 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooterTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.component.Version;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java
index 07a29d899a3..2b808917597 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RebalancerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RebalancerTest.java
index f6db9a45a61..edc83c2c74e 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RebalancerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RebalancerTest.java
@@ -89,12 +89,13 @@ public class RebalancerTest {
tester.nodeRepository().nodes().deactivate(List.of(cpuSkewedNode),
new ApplicationTransaction(new ProvisionLock(cpuApp, () -> {}), tx));
tx.commit();
+ assertEquals(1, tester.getNodes(Node.State.dirty).size());
// ... if activation fails when trying, we clean up the state
tester.deployer().setFailActivate(true);
tester.maintain();
assertTrue("Want to retire is reset", tester.getNodes(Node.State.active).stream().noneMatch(node -> node.status().wantToRetire()));
- assertEquals("Reserved node was moved to dirty", 1, tester.getNodes(Node.State.dirty).size());
+ assertEquals("Reserved node was moved to dirty", 2, tester.getNodes(Node.State.dirty).size());
String reservedHostname = tester.getNodes(Node.State.dirty).first().get().hostname();
tester.nodeRepository().nodes().setReady(reservedHostname, Agent.system, "Cleanup");
tester.nodeRepository().nodes().removeRecursively(reservedHostname);
@@ -163,12 +164,12 @@ public class RebalancerTest {
static class RebalancerTester {
- static ApplicationId cpuApp = makeApplicationId("t1", "a1");
- static ApplicationId memoryApp = makeApplicationId("t2", "a2");
- private static NodeResources cpuResources = new NodeResources(8, 4, 10, 0.1);
- private static NodeResources memResources = new NodeResources(4, 9, 10, 0.1);
- private TestMetric metric = new TestMetric();
- private ProvisioningTester tester = new ProvisioningTester.Builder()
+ static final ApplicationId cpuApp = makeApplicationId("t1", "a1");
+ static final ApplicationId memoryApp = makeApplicationId("t2", "a2");
+ private static final NodeResources cpuResources = new NodeResources(8, 4, 10, 0.1);
+ private static final NodeResources memResources = new NodeResources(4, 9, 10, 0.1);
+ private final TestMetric metric = new TestMetric();
+ private final ProvisioningTester tester = new ProvisioningTester.Builder()
.zone(new Zone(Environment.perf, RegionName.from("us-east")))
.flavorsConfig(flavorsConfig())
.build();
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirerTest.java
index 0baa435fa76..93cbce3f894 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java
index 02d8c94941b..4575f7b4355 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.component.Version;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ScalingSuggestionsMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ScalingSuggestionsMaintainerTest.java
index 0a6a1497fdc..03b41412896 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ScalingSuggestionsMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ScalingSuggestionsMaintainerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.collections.Pair;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java
index 2790c8dc9c3..7a42c3a11f0 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SwitchRebalancerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SwitchRebalancerTest.java
index ab63691151c..f2f5869ece3 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SwitchRebalancerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SwitchRebalancerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/TestMetric.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/TestMetric.java
index b20524f678c..eeacedafa61 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/TestMetric.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/TestMetric.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
import com.yahoo.jdisc.Metric;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/node/IPTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/node/IPTest.java
index 8101405ad7f..be35176ed98 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/node/IPTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/node/IPTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.node;
import com.google.common.collect.ImmutableSet;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java
index d20d6dd1dc4..26be6d95336 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.os;
import com.yahoo.component.Version;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/ApplicationSerializerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/ApplicationSerializerTest.java
index 61ff494679f..7266da9ff46 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/ApplicationSerializerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/ApplicationSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.persistence;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClientTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClientTest.java
index 99f6ce4fb00..f11cfa9a15d 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClientTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClientTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.persistence;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseTest.java
index 44026f835dd..40fb741fde8 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.persistence;
import com.yahoo.path.Path;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/LoadBalancerSerializerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/LoadBalancerSerializerTest.java
index 51d6f7fb2fb..38724175c90 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/LoadBalancerSerializerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/LoadBalancerSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.persistence;
import com.google.common.collect.ImmutableSet;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializerTest.java
index 523ceeb94ce..3de3f4139d1 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.persistence;
import com.google.common.collect.ImmutableSet;
@@ -7,6 +7,7 @@ import com.yahoo.component.Vtag;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ApplicationName;
import com.yahoo.config.provision.ClusterMembership;
+import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.NetworkPorts;
import com.yahoo.config.provision.NodeFlavors;
@@ -28,6 +29,7 @@ import com.yahoo.vespa.hosted.provision.node.History;
import com.yahoo.vespa.hosted.provision.node.IP;
import com.yahoo.vespa.hosted.provision.node.Report;
import com.yahoo.vespa.hosted.provision.node.Reports;
+import com.yahoo.vespa.hosted.provision.node.TrustStoreItem;
import com.yahoo.vespa.hosted.provision.provisioning.FlavorConfigBuilder;
import org.junit.Test;
@@ -450,12 +452,25 @@ public class NodeSerializerTest {
Node.Builder builder = Node.create("myId", IP.Config.EMPTY, "myHostname",
nodeFlavors.getFlavorOrThrow("default"), NodeType.host);
Node node = nodeSerializer.fromJson(State.provisioned, nodeSerializer.toJson(builder.build()));
- assertFalse(node.exclusiveTo().isPresent());
+ assertFalse(node.exclusiveToApplicationId().isPresent());
+ assertFalse(node.exclusiveToClusterType().isPresent());
- ApplicationId exclusiveTo = ApplicationId.from("tenant1", "app1", "instance1");
- node = builder.exclusiveTo(exclusiveTo).build();
+ ApplicationId exclusiveToApp = ApplicationId.from("tenant1", "app1", "instance1");
+ ClusterSpec.Type exclusiveToCluster = ClusterSpec.Type.admin;
+ node = builder.exclusiveToApplicationId(exclusiveToApp).exclusiveToClusterType(exclusiveToCluster).build();
node = nodeSerializer.fromJson(State.provisioned, nodeSerializer.toJson(node));
- assertEquals(exclusiveTo, node.exclusiveTo().get());
+ assertEquals(exclusiveToApp, node.exclusiveToApplicationId().get());
+ assertEquals(exclusiveToCluster, node.exclusiveToClusterType().get());
+ }
+
+ @Test
+ public void truststore_serialization() {
+ Node node = nodeSerializer.fromJson(State.active, nodeSerializer.toJson(createNode()));
+ assertEquals(List.of(), node.trustedCertificates());
+ List<TrustStoreItem> trustStoreItems = List.of(new TrustStoreItem("foo", Instant.parse("2023-09-01T23:59:59Z")), new TrustStoreItem("bar", Instant.parse("2025-05-20T23:59:59Z")));
+ node = node.with(trustStoreItems);
+ node = nodeSerializer.fromJson(State.active, nodeSerializer.toJson(node));
+ assertEquals(trustStoreItems, node.trustedCertificates());
}
private byte[] createNodeJson(String hostname, String... ipAddress) {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeVersionsSerializerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeVersionsSerializerTest.java
index 4639a86aeec..913a3165231 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeVersionsSerializerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeVersionsSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.persistence;
import com.yahoo.component.Version;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/OsVersionChangeSerializerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/OsVersionChangeSerializerTest.java
index 3b927fae4cd..3bcecdbfeb3 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/OsVersionChangeSerializerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/OsVersionChangeSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.persistence;
import com.yahoo.component.Version;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/TenantArchiveUriSerializerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/TenantArchiveUriSerializerTest.java
index ce32a38b049..2ae4f6363e0 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/TenantArchiveUriSerializerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/TenantArchiveUriSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.persistence;
import com.yahoo.config.provision.TenantName;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java
index 744322c9edc..23f5701f825 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.component.Version;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationSimulator.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationSimulator.java
index 24b3139a91b..9a88b4664b0 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationSimulator.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationSimulator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.component.Version;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationSnapshot.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationSnapshot.java
index 4b6bbaa27f7..d363aaacaae 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationSnapshot.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationSnapshot.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.vespa.hosted.provision.NodeList;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationVisualizer.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationVisualizer.java
index 569ca96ba5c..694b7cec9df 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationVisualizer.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationVisualizer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.vespa.hosted.provision.Node;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ArchiveUrisTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ArchiveUrisTest.java
index cf773052991..4d753d0cbd8 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ArchiveUrisTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ArchiveUrisTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.component.Version;
@@ -55,12 +55,15 @@ public class ArchiveUrisTest {
assertEquals("ftp://domain/legal-dir123/", normalizeUri("ftp://domain/legal-dir123"));
assertEquals("ftp://domain/legal-dir123/", normalizeUri("ftp://domain/legal-dir123/"));
assertEquals("s3://my-bucket-prod.region/my-tenant-123/", normalizeUri("s3://my-bucket-prod.region/my-tenant-123/"));
+ assertEquals("s3://my-bucket-prod.region/my-tenant_123/", normalizeUri("s3://my-bucket-prod.region/my-tenant_123/"));
assertThrows(IllegalArgumentException.class, () -> normalizeUri("domain/dir/"));
assertThrows(IllegalArgumentException.class, () -> normalizeUri("ftp:/domain/dir/"));
assertThrows(IllegalArgumentException.class, () -> normalizeUri("ftp:/domain//dir/"));
- assertThrows(IllegalArgumentException.class, () -> normalizeUri("ftp://domain/illegal_dir/"));
+ assertThrows(IllegalArgumentException.class, () -> normalizeUri("ftp://domain/illegal:dir/"));
assertThrows(IllegalArgumentException.class, () -> normalizeUri("ftp://domain/-illegal-dir/"));
+ assertThrows(IllegalArgumentException.class, () -> normalizeUri("ftp://domain/_illegal-dir/"));
assertThrows(IllegalArgumentException.class, () -> normalizeUri("ftp://domain/illegal-dir-/"));
+ assertThrows(IllegalArgumentException.class, () -> normalizeUri("ftp://domain/illegal-dir_/"));
}
private static void assertThrows(Class<? extends Throwable> clazz, Runnable runnable) {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicAllocationTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicAllocationTest.java
index 5c452989f56..df9e8efde93 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicAllocationTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicAllocationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.config.provision.ApplicationId;
@@ -310,7 +310,7 @@ public class DynamicAllocationTest {
tester.activate(application, hosts);
NodeList activeNodes = tester.nodeRepository().nodes().list().owner(application);
- assertEquals(Set.of("127.0.127.13", "::13"), activeNodes.asList().get(0).ipConfig().primary());
+ assertEquals(Set.of("127.0.127.13", "::d"), activeNodes.asList().get(0).ipConfig().primary());
assertEquals(Set.of("127.0.127.2", "::2"), activeNodes.asList().get(1).ipConfig().primary());
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicProvisioningTest.java
index 0b7b9f2fa13..97b664b6ba4 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicProvisioningTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.component.Version;
@@ -28,6 +28,7 @@ import org.junit.Test;
import java.time.Instant;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -72,7 +73,7 @@ public class DynamicProvisioningTest {
mockHostProvisioner(hostProvisioner, "large", 3, null); // Provision shared hosts
prepareAndActivate(application1, clusterSpec("mycluster"), 4, 1, resources);
verify(hostProvisioner).provisionHosts(List.of(100, 101, 102, 103), NodeType.host, resources, application1,
- Version.emptyVersion, HostSharing.any);
+ Version.emptyVersion, HostSharing.any, Optional.of(ClusterSpec.Type.content));
// Total of 8 nodes should now be in node-repo, 4 active hosts and 4 active nodes
assertEquals(8, tester.nodeRepository().nodes().list().size());
@@ -96,7 +97,7 @@ public class DynamicProvisioningTest {
mockHostProvisioner(hostProvisioner, "large", 3, application3);
prepareAndActivate(application3, clusterSpec("mycluster", true), 4, 1, resources);
verify(hostProvisioner).provisionHosts(List.of(104, 105, 106, 107), NodeType.host, resources, application3,
- Version.emptyVersion, HostSharing.exclusive);
+ Version.emptyVersion, HostSharing.exclusive, Optional.of(ClusterSpec.Type.content));
// Total of 20 nodes should now be in node-repo, 8 active hosts and 12 active nodes
assertEquals(20, tester.nodeRepository().nodes().list().size());
@@ -468,7 +469,7 @@ public class DynamicProvisioningTest {
}).collect(Collectors.toSet());
Node parent = Node.create(hostHostname, new IP.Config(Set.of(hostIp), pool), hostHostname, hostFlavor, NodeType.host)
- .exclusiveTo(exclusiveTo).build();
+ .exclusiveToApplicationId(exclusiveTo).build();
Node child = Node.reserve(Set.of("::" + hostIndex + ":1"), hostHostname + "-1", hostHostname, nodeResources, NodeType.tenant).build();
ProvisionedHost provisionedHost = mock(ProvisionedHost.class);
when(provisionedHost.generateHost()).thenReturn(parent);
@@ -476,7 +477,7 @@ public class DynamicProvisioningTest {
return provisionedHost;
})
.collect(Collectors.toList());
- }).when(hostProvisioner).provisionHosts(any(), any(), any(), any(), any(), any());
+ }).when(hostProvisioner).provisionHosts(any(), any(), any(), any(), any(), any(), any());
}
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/HostCapacityTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/HostCapacityTest.java
index 995d25043f3..390df571b04 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/HostCapacityTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/HostCapacityTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.config.provision.Flavor;
@@ -34,7 +34,10 @@ public class HostCapacityTest {
private final HostResourcesCalculator hostResourcesCalculator = mock(HostResourcesCalculator.class);
private HostCapacity capacity;
private List<Node> nodes;
- private Node host1, host2, host3;
+ private Node host1;
+ private Node host2;
+ private Node host3;
+ private Node host4;
private final NodeResources resources0 = new NodeResources(1, 30, 20, 1.5);
private final NodeResources resources1 = new NodeResources(2, 40, 40, 0.5);
@@ -45,10 +48,11 @@ public class HostCapacityTest {
// Create flavors
NodeFlavors nodeFlavors = FlavorConfigBuilder.createDummies("host", "docker", "docker2");
- // Create three hosts
+ // Create hosts
host1 = Node.create("host1", IP.Config.of(Set.of("::1"), createIps(2, 4), List.of()), "host1", nodeFlavors.getFlavorOrThrow("host"), NodeType.host).build();
host2 = Node.create("host2", IP.Config.of(Set.of("::11"), createIps(12, 3), List.of()), "host2", nodeFlavors.getFlavorOrThrow("host"), NodeType.host).build();
- host3 = Node.create("host3", IP.Config.of(Set.of("::21"), createIps(22, 1), List.of()), "host3", nodeFlavors.getFlavorOrThrow("host"), NodeType.host).build();
+ host3 = Node.create("host3", IP.Config.of(Set.of("::21"), createIps(22, 2), List.of()), "host3", nodeFlavors.getFlavorOrThrow("host"), NodeType.host).build();
+ host4 = Node.create("host3", IP.Config.of(Set.of("::21"), createIps(50, 0), List.of()), "host4", nodeFlavors.getFlavorOrThrow("host"), NodeType.host).build();
// Add two containers to host1
var nodeA = Node.reserve(Set.of("::2"), "nodeA", "host1", resources0, NodeType.tenant).build();
@@ -72,8 +76,10 @@ public class HostCapacityTest {
assertTrue(capacity.hasCapacity(host1, resources1));
assertTrue(capacity.hasCapacity(host2, resources0));
assertTrue(capacity.hasCapacity(host2, resources1));
- assertFalse(capacity.hasCapacity(host3, resources0)); // No ip available
- assertFalse(capacity.hasCapacity(host3, resources1)); // No ip available
+ assertTrue(capacity.hasCapacity(host3, resources0));
+ assertTrue(capacity.hasCapacity(host3, resources1));
+ assertFalse(capacity.hasCapacity(host4, resources0)); // No IPs available
+ assertFalse(capacity.hasCapacity(host4, resources1)); // No IPs available
// Add a new node to host1 to deplete the memory resource
Node nodeF = Node.reserve(Set.of("::6"), "nodeF", "host1", resources0, NodeType.tenant).build();
@@ -87,15 +93,18 @@ public class HostCapacityTest {
public void freeIPs() {
assertEquals(2, capacity.freeIps(host1));
assertEquals(1, capacity.freeIps(host2));
- assertEquals(0, capacity.freeIps(host3));
+ assertEquals(1, capacity.freeIps(host3));
+ assertEquals(0, capacity.freeIps(host4));
}
@Test
- public void freeCapacityOf() {
+ public void unusedCapacityOf() {
assertEquals(new NodeResources(5, 40, 80, 2, NodeResources.DiskSpeed.fast, NodeResources.StorageType.remote),
- capacity.freeCapacityOf(host1, false));
+ capacity.unusedCapacityOf(host1));
assertEquals(new NodeResources(5, 60, 80, 4.5, NodeResources.DiskSpeed.fast, NodeResources.StorageType.remote),
- capacity.freeCapacityOf(host3, false));
+ capacity.unusedCapacityOf(host3));
+ assertEquals(new NodeResources(7, 100, 120, 5, NodeResources.DiskSpeed.fast, NodeResources.StorageType.remote),
+ capacity.unusedCapacityOf(host4));
doAnswer(invocation -> {
NodeResources totalHostResources = ((Flavor) invocation.getArguments()[0]).resources();
@@ -103,9 +112,19 @@ public class HostCapacityTest {
}).when(hostResourcesCalculator).advertisedResourcesOf(any());
assertEquals(new NodeResources(4, 38, 77, 1.5, NodeResources.DiskSpeed.fast, NodeResources.StorageType.remote),
- capacity.freeCapacityOf(host1, false));
+ capacity.unusedCapacityOf(host1));
assertEquals(new NodeResources(4, 58, 77, 4, NodeResources.DiskSpeed.fast, NodeResources.StorageType.remote),
- capacity.freeCapacityOf(host3, false));
+ capacity.unusedCapacityOf(host3));
+ }
+
+ @Test
+ public void availableCapacityOf() {
+ assertEquals(new NodeResources(5, 40, 80, 2, NodeResources.DiskSpeed.fast, NodeResources.StorageType.remote),
+ capacity.availableCapacityOf(host1));
+ assertEquals(new NodeResources(5, 60, 80, 4.5, NodeResources.DiskSpeed.fast, NodeResources.StorageType.remote),
+ capacity.availableCapacityOf(host3));
+ assertEquals(NodeResources.zero(),
+ capacity.availableCapacityOf(host4));
}
@Test
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InPlaceResizeProvisionTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InPlaceResizeProvisionTest.java
index 8f07e57a26b..06a9bc9ac12 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InPlaceResizeProvisionTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InPlaceResizeProvisionTest.java
@@ -29,20 +29,17 @@ import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
/**
- * If there is no change in cluster size or topology, any increase in node resource allocation is fine as long as:
- * a. We have the necessary spare resources available on the all hosts used in the cluster
- * b. We have the necessary spare resources available on a subset of the hosts used in the cluster AND
- * also have available capacity to migrate the remaining nodes to different hosts.
- * c. Any decrease in node resource allocation is fine.
+ * Node resources can be increased in-place if
+ * 1. No change to topology
+ * 2. No reduction to cluster size
+ * 3. There is enough spare capacity on host
*
- * If there is an increase in cluster size, this can be combined with increase in resource allocations given there is
- * available resources and new nodes.
+ * Node resources can be decreased in-place if
+ * 1. No change to topology
+ * 2. No reduction to cluster size
+ * 3. For content/combined nodes: No increase to cluster size
*
- * No other changes should be supported at this time, due to risks in complexity and possibly unknowns.
- * Specifically, the following is intentionally not supported by the above changes:
- * a. Decrease in resource allocation combined with cluster size increase
- * b. Change in resource allocation combined with cluster size reduction
- * c. Change in resource allocation combined with cluster topology changes
+ * Node resources are increased if at least one of the components (vcpu, memory, disk, bandwidth) is increased.
*
* @author freva
*/
@@ -218,10 +215,10 @@ public class InPlaceResizeProvisionTest {
public void cannot_inplace_decrease_resources_while_increasing_cluster_size() {
addParentHosts(6, mediumResources.with(fast).with(local));
- new PrepareHelper(tester, app).prepare(container1, 4, 1, mediumResources).activate();
- assertSizeAndResources(container1, 4, new NodeResources(4, 8, 160, 1, fast, local));
+ new PrepareHelper(tester, app).prepare(content1, 4, 1, mediumResources).activate();
+ assertSizeAndResources(content1, 4, new NodeResources(4, 8, 160, 1, fast, local));
- new PrepareHelper(tester, app).prepare(container1, 6, 1, smallResources);
+ new PrepareHelper(tester, app).prepare(content1, 6, 1, smallResources);
}
@Test(expected = OutOfCapacityException.class)
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java
index ccc4a155d56..482b798d736 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeIncidesTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeIncidesTest.java
index eee9c2ffc01..4e35bd54435 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeIncidesTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeIncidesTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import org.junit.Test;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java
index e94d1c1230e..4a9707f52f8 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
index cd89cea60e3..20546cc5bd9 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.component.Version;
@@ -39,6 +39,7 @@ import java.util.List;
import java.util.Optional;
import java.util.Random;
import java.util.Set;
+import java.util.function.BiConsumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@@ -103,12 +104,10 @@ public class ProvisioningTest {
assertEquals(3, tester.getNodes(application1, Node.State.inactive).size());
// delete app
- NodeList previouslyActive = tester.getNodes(application1, Node.State.active);
- NodeList previouslyInactive = tester.getNodes(application1, Node.State.inactive);
+ NodeList previousNodes = tester.getNodes(application1);
tester.remove(application1);
- assertEquals(previouslyActive.not().container().hostnames(),
- tester.nodeRepository().nodes().list(Node.State.inactive).owner(application1).hostnames());
- assertTrue(tester.nodeRepository().nodes().list(Node.State.dirty).asList().containsAll(previouslyActive.container().asList()));
+ assertEquals(previousNodes.hostnames(),
+ tester.nodeRepository().nodes().list(Node.State.dirty).owner(application1).hostnames());
assertEquals(0, tester.getNodes(application1, Node.State.active).size());
assertTrue(tester.nodeRepository().applications().get(application1).isEmpty());
@@ -967,6 +966,24 @@ public class ProvisioningTest {
newNodes.stream().map(n -> n.membership().get().cluster().type()).collect(Collectors.toSet()));
}
+ @Test
+ public void transitions_directly_to_dirty_in_cd() {
+ ApplicationId application = ProvisioningTester.applicationId();
+ ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("music")).vespaVersion("1.2.3").build();
+ Capacity capacity = Capacity.from(new ClusterResources(2, 1, defaultResources));
+
+ BiConsumer<Zone, Node.State> stateAsserter = (zone, state) -> {
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(zone).build();
+ tester.makeReadyHosts(2, defaultResources).activateTenantHosts();
+ tester.activate(application, tester.prepare(application, cluster, capacity));
+ tester.activate(application, List.of());
+ assertEquals(2, tester.getNodes(application, state).size());
+ };
+
+ stateAsserter.accept(new Zone(Environment.prod, RegionName.from("us-east")), Node.State.inactive);
+ stateAsserter.accept(new Zone(SystemName.cd, Environment.prod, RegionName.from("us-east")), Node.State.dirty);
+ }
+
private SystemState prepare(ApplicationId application, int container0Size, int container1Size, int content0Size,
int content1Size, NodeResources flavor, ProvisioningTester tester) {
return prepare(application, tester, container0Size, container1Size, content0Size, content1Size, flavor, "6.42");
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
index 21e9058cd7c..4c9597d00bd 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
@@ -43,7 +43,6 @@ import com.yahoo.vespa.hosted.provision.node.filter.NodeHostFilter;
import com.yahoo.vespa.hosted.provision.persistence.NameResolver;
import com.yahoo.vespa.hosted.provision.testutils.MockNameResolver;
import com.yahoo.vespa.hosted.provision.testutils.MockProvisionServiceProvider;
-import com.yahoo.vespa.orchestrator.OrchestrationException;
import com.yahoo.vespa.orchestrator.Orchestrator;
import com.yahoo.vespa.service.duper.ConfigServerApplication;
@@ -411,7 +410,7 @@ public class ProvisioningTester {
// One test involves two provision testers - to detect this we check if the
// name resolver already contains the next host - if this is the case - bump the indices and move on
- String testIp = String.format("127.0.0.%d", nextIP);
+ String testIp = String.format("127.0.%d.%d", nextIP / 256, nextIP % 256);
MockNameResolver nameResolver = (MockNameResolver)nodeRepository().nameResolver();
if (nameResolver.resolveHostname(testIp).isPresent()) {
nextHost += 100;
@@ -419,8 +418,8 @@ public class ProvisioningTester {
}
String hostname = nodeNamer.apply(nextHost);
- String ipv4 = String.format("127.0.0.%d", nextIP);
- String ipv6 = String.format("::%d", nextIP);
+ String ipv4 = String.format("127.0.%d.%d", nextIP / 256, nextIP % 256);
+ String ipv6 = String.format("::%x", nextIP);
nameResolver.addRecord(hostname, ipv4, ipv6);
HashSet<String> hostIps = new HashSet<>();
@@ -430,11 +429,11 @@ public class ProvisioningTester {
Set<String> ipAddressPool = new LinkedHashSet<>();
for (int poolIp = 1; poolIp <= ipAddressPoolSize; poolIp++) {
nextIP++;
- String ipv6Addr = String.format("::%d", nextIP);
+ String ipv6Addr = String.format("::%x", nextIP);
ipAddressPool.add(ipv6Addr);
nameResolver.addRecord(String.format("node-%d-of-%s", poolIp, hostname), ipv6Addr);
if (dualStack) {
- String ipv4Addr = String.format("127.0.127.%d", nextIP);
+ String ipv4Addr = String.format("127.0.%d.%d", (127 + (nextIP / 256)), nextIP % 256);
ipAddressPool.add(ipv4Addr);
nameResolver.addRecord(String.format("node-%d-of-%s", poolIp, hostname), ipv4Addr);
}
@@ -687,11 +686,7 @@ public class ProvisioningTester {
Orchestrator orchestrator = Optional.ofNullable(this.orchestrator)
.orElseGet(() -> {
Orchestrator orch = mock(Orchestrator.class);
- try {
- doThrow(new RuntimeException()).when(orch).acquirePermissionToRemove(any());
- } catch (OrchestrationException e) {
- throw new RuntimeException(e);
- }
+ doThrow(new RuntimeException()).when(orch).acquirePermissionToRemove(any());
return orch;
});
@@ -744,7 +739,7 @@ public class ProvisioningTester {
}
@Override
- public NodeResources realResourcesOf(Nodelike node, NodeRepository nodeRepository, boolean exclusive) {
+ public NodeResources realResourcesOf(Nodelike node, NodeRepository nodeRepository) {
NodeResources resources = node.resources();
if (node.type() == NodeType.host) return resources;
return resources.withMemoryGb(resources.memoryGb() - memoryTaxGb)
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ResourceCapacityTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ResourceCapacityTest.java
index f3fbe1555eb..eb5a9b29007 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ResourceCapacityTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ResourceCapacityTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.config.provision.Flavor;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningCompleteHostCalculatorTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningCompleteHostCalculatorTest.java
index 5f2d567bd24..2f0caf8092f 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningCompleteHostCalculatorTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningCompleteHostCalculatorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.config.provision.ApplicationId;
@@ -81,7 +81,7 @@ public class VirtualNodeProvisioningCompleteHostCalculatorTest {
}
@Override
- public NodeResources realResourcesOf(Nodelike node, NodeRepository nodeRepository, boolean exclusive) {
+ public NodeResources realResourcesOf(Nodelike node, NodeRepository nodeRepository) {
if (node.parentHostname().isEmpty()) return node.resources(); // hosts use configured flavors
return realResourcesOf(node.resources());
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java
index 18fcb56d87f..9a056541c20 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.component.Version;
@@ -333,6 +333,34 @@ public class VirtualNodeProvisioningTest {
assertNodeParentReservation(tester.getNodes(application1_1).asList(), Optional.empty(), tester); // Reservation is cleared after activation
}
+ @Test
+ public void respects_exclusive_to_cluster_type() {
+ NodeResources resources = new NodeResources(10, 10, 100, 10);
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
+
+ tester.makeReadyNodes(10, resources, Optional.empty(), NodeType.host, 1);
+ tester.activateTenantHosts();
+ // All hosts are exclusive to content nodes
+ tester.patchNodes(tester.nodeRepository().nodes().list().asList(), node -> node.withExclusiveToClusterType(ClusterSpec.Type.content));
+
+ Version wantedVespaVersion = Version.fromString("6.39");
+ try {
+ // No capacity for 'container' nodes
+ tester.prepare(applicationId,
+ ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("myContent")).vespaVersion(wantedVespaVersion).build(),
+ 6, 1, resources);
+ fail("Expected to fail due to out of capacity");
+ } catch (OutOfCapacityException ignored) { }
+
+ // Same cluster, but content type is now 'content'
+ List<HostSpec> nodes = tester.prepare(applicationId,
+ ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("myContent")).vespaVersion(wantedVespaVersion).build(),
+ 6, 1, resources);
+ tester.activate(applicationId, nodes);
+
+ assertEquals(6, tester.nodeRepository().nodes().list(Node.State.active).owner(applicationId).size());
+ }
+
/** Exclusive app first, then non-exclusive: Should give the same result as below */
@Test
public void application_deployment_with_exclusive_app_first() {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationPatcherTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationPatcherTest.java
index 85469e74c0f..244bb40b2bf 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationPatcherTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationPatcherTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.restapi;
import com.yahoo.config.provision.ApplicationId;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/LoadBalancersV1ApiTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/LoadBalancersV1ApiTest.java
index 1ca552bca94..340dfb46dc3 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/LoadBalancersV1ApiTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/LoadBalancersV1ApiTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.restapi;
import com.yahoo.application.container.handler.Request;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodeSerializerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodeSerializerTest.java
index 9bc27c0cc04..0ae0e314f66 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodeSerializerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodeSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.restapi;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java
index dd16d4674ad..1ab0efb42bd 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.restapi;
import com.yahoo.application.container.handler.Request;
@@ -993,11 +993,15 @@ public class NodesV2ApiTest {
String url = "http://localhost:8080/nodes/v2/node/dockerhost1.yahoo.com";
tester.assertPartialResponse(new Request(url), "exclusiveTo", false); // Initially there is no exclusiveTo
- assertResponse(new Request(url, Utf8.toBytes("{\"exclusiveTo\": \"t1:a1:i1\"}"), Request.Method.PATCH),
+ assertResponse(new Request(url, Utf8.toBytes("{\"exclusiveToApplicationId\": \"t1:a1:i1\"}"), Request.Method.PATCH),
"{\"message\":\"Updated dockerhost1.yahoo.com\"}");
tester.assertPartialResponse(new Request(url), "exclusiveTo\":\"t1:a1:i1\",", true);
- assertResponse(new Request(url, Utf8.toBytes("{\"exclusiveTo\": null}"), Request.Method.PATCH),
+ assertResponse(new Request(url, Utf8.toBytes("{\"exclusiveToClusterType\": \"admin\"}"), Request.Method.PATCH),
+ "{\"message\":\"Updated dockerhost1.yahoo.com\"}");
+ tester.assertPartialResponse(new Request(url), "exclusiveTo\":\"t1:a1:i1\",\"exclusiveToClusterType\":\"admin\",", true);
+
+ assertResponse(new Request(url, Utf8.toBytes("{\"exclusiveTo\": null, \"exclusiveToClusterType\": null}"), Request.Method.PATCH),
"{\"message\":\"Updated dockerhost1.yahoo.com\"}");
tester.assertPartialResponse(new Request(url), "exclusiveTo", false);
}
@@ -1019,6 +1023,26 @@ public class NodesV2ApiTest {
tester.assertPartialResponse(new Request("http://localhost:8080/nodes/v2/node/host4.yahoo.com"), "archiveUri", false);
}
+ @Test
+ public void trusted_certificates_patch() throws IOException {
+ String url = "http://localhost:8080/nodes/v2/node/dockerhost1.yahoo.com";
+ tester.assertPartialResponse(new Request(url), "\"trustStore\":[]", false); // initially empty list
+
+ String trustStore = "\"trustStore\":[" +
+ "{" +
+ "\"fingerprint\":\"foo\"," +
+ "\"expiry\":1632302251000" +
+ "}," +
+ "{" +
+ "\"fingerprint\":\"bar\"," +
+ "\"expiry\":1758532706000" +
+ "}" +
+ "]";
+ assertResponse(new Request(url, Utf8.toBytes("{"+trustStore+"}"), Request.Method.PATCH),
+ "{\"message\":\"Updated dockerhost1.yahoo.com\"}");
+ tester.assertPartialResponse(new Request(url), trustStore, true);
+ }
+
private static String asDockerNodeJson(String hostname, String parentHostname, String... ipAddress) {
return asDockerNodeJson(hostname, NodeType.tenant, parentHostname, ipAddress);
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/RestApiTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/RestApiTester.java
index 847a4e2500b..a17fd4f5dda 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/RestApiTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/RestApiTester.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.restapi;
import com.yahoo.application.Networking;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg1.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg1.json
index 87fa1b15d84..fb2b32fac20 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg1.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg1.json
@@ -8,6 +8,7 @@
"flavor": "default",
"cpuCores": 2.0,
"resources":{"vcpu":2.0,"memoryGb":16.0,"diskGb":400.0,"bandwidthGbps":10.0,"diskSpeed":"fast","storageType":"remote"},
+ "realResources":{"vcpu":2.0,"memoryGb":16.0,"diskGb":400.0,"bandwidthGbps":10.0,"diskSpeed":"fast","storageType":"remote"},
"environment": "BARE_METAL",
"rebootGeneration": 0,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg2.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg2.json
index ed95343586b..eccde886d7e 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg2.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/cfg2.json
@@ -8,6 +8,7 @@
"flavor": "default",
"cpuCores": 2.0,
"resources":{"vcpu":2.0,"memoryGb":16.0,"diskGb":400.0,"bandwidthGbps":10.0,"diskSpeed":"fast","storageType":"remote"},
+ "realResources":{"vcpu":2.0,"memoryGb":16.0,"diskGb":400.0,"bandwidthGbps":10.0,"diskSpeed":"fast","storageType":"remote"},
"environment": "BARE_METAL",
"rebootGeneration": 0,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/controller1.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/controller1.json
index a4a71e0f48b..1631e46fc32 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/controller1.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/controller1.json
@@ -8,6 +8,7 @@
"flavor": "default",
"cpuCores": 2.0,
"resources":{"vcpu":2.0,"memoryGb":16.0,"diskGb":400.0,"bandwidthGbps":10.0,"diskSpeed":"fast","storageType":"remote"},
+ "realResources":{"vcpu":2.0,"memoryGb":16.0,"diskGb":400.0,"bandwidthGbps":10.0,"diskSpeed":"fast","storageType":"remote"},
"environment": "BARE_METAL",
"rebootGeneration": 0,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-container1.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-container1.json
index 4f8dd0ade37..33b7a91fc61 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-container1.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-container1.json
@@ -8,6 +8,7 @@
"openStackId": "fake-test-node-pool-102-2",
"flavor": "[vcpu: 1.0, memory: 4.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps, storage type: remote]",
"resources":{"vcpu":1.0,"memoryGb":4.0,"diskGb":100.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"remote"},
+ "realResources":{"vcpu":1.0,"memoryGb":4.0,"diskGb":100.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"remote"},
"environment": "DOCKER_CONTAINER",
"owner": {
"tenant": "tenant3",
@@ -26,7 +27,6 @@
"wantedDockerImage": "docker-registry.domain.tld:8080/dist/vespa:6.42.0",
"wantedVespaVersion": "6.42.0",
"requestedResources": { "vcpu":1.0, "memoryGb":4.0, "diskGb":100.0, "bandwidthGbps":1.0,"diskSpeed":"fast", "storageType":"any" },
- "allowedToBeDown": false,
"rebootGeneration": 0,
"currentRebootGeneration": 0,
"failCount": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-os-upgrade-complete.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-os-upgrade-complete.json
index cf395653a42..ec46755b5ac 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-os-upgrade-complete.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-os-upgrade-complete.json
@@ -8,6 +8,7 @@
"flavor": "large",
"cpuCores": 4.0,
"resources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
+ "realResources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
"environment": "BARE_METAL",
"owner": {
"tenant": "zoneapp",
@@ -26,7 +27,6 @@
"wantedDockerImage": "docker-registry.domain.tld:8080/dist/vespa:6.42.0",
"wantedVespaVersion": "6.42.0",
"requestedResources": { "vcpu":4.0, "memoryGb":32.0, "diskGb":1600.0, "bandwidthGbps":20.0, "diskSpeed": "fast", "storageType":"remote" },
- "allowedToBeDown": false,
"rebootGeneration": 0,
"currentRebootGeneration": 0,
"currentOsVersion": "7.5.2",
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-2.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-2.json
index 98f9c9b245e..c44b172633d 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-2.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-2.json
@@ -7,14 +7,8 @@
"openStackId": "dockerhost1",
"flavor": "large",
"cpuCores": 4.0,
- "resources": {
- "vcpu": 4.0,
- "memoryGb": 32.0,
- "diskGb": 1600.0,
- "bandwidthGbps": 20.0,
- "diskSpeed": "fast",
- "storageType": "remote"
- },
+ "resources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
+ "realResources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
"environment": "BARE_METAL",
"owner": {
"tenant": "zoneapp",
@@ -40,7 +34,6 @@
"diskSpeed": "fast",
"storageType": "remote"
},
- "allowedToBeDown": false,
"rebootGeneration": 0,
"currentRebootGeneration": 0,
"failCount": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-3.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-3.json
index fe56b7ae711..df745729288 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-3.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-3.json
@@ -7,14 +7,8 @@
"openStackId": "dockerhost1",
"flavor": "large",
"cpuCores": 4.0,
- "resources": {
- "vcpu": 4.0,
- "memoryGb": 32.0,
- "diskGb": 1600.0,
- "bandwidthGbps": 20.0,
- "diskSpeed": "fast",
- "storageType": "remote"
- },
+ "resources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
+ "realResources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
"environment": "BARE_METAL",
"owner": {
"tenant": "zoneapp",
@@ -40,7 +34,6 @@
"diskSpeed": "fast",
"storageType": "remote"
},
- "allowedToBeDown": false,
"rebootGeneration": 0,
"currentRebootGeneration": 0,
"failCount": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-4.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-4.json
index ca1944b661d..f6ff292c830 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-4.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports-4.json
@@ -7,14 +7,8 @@
"openStackId": "dockerhost1",
"flavor": "large",
"cpuCores": 4.0,
- "resources": {
- "vcpu": 4.0,
- "memoryGb": 32.0,
- "diskGb": 1600.0,
- "bandwidthGbps": 20.0,
- "diskSpeed": "fast",
- "storageType": "remote"
- },
+ "resources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
+ "realResources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
"environment": "BARE_METAL",
"owner": {
"tenant": "zoneapp",
@@ -40,7 +34,6 @@
"diskSpeed": "fast",
"storageType": "remote"
},
- "allowedToBeDown": false,
"rebootGeneration": 0,
"currentRebootGeneration": 0,
"failCount": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports.json
index dda664f52c6..335a95f47f5 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1-reports.json
@@ -7,14 +7,8 @@
"openStackId": "dockerhost1",
"flavor": "large",
"cpuCores": 4.0,
- "resources": {
- "vcpu": 4.0,
- "memoryGb": 32.0,
- "diskGb": 1600.0,
- "bandwidthGbps": 20.0,
- "diskSpeed": "fast",
- "storageType": "remote"
- },
+ "resources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
+ "realResources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
"environment": "BARE_METAL",
"owner": {
"tenant": "zoneapp",
@@ -40,7 +34,6 @@
"diskSpeed": "fast",
"storageType": "remote"
},
- "allowedToBeDown": false,
"rebootGeneration": 0,
"currentRebootGeneration": 0,
"failCount": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1.json
index 5a897527077..4b7eecdfc26 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node1.json
@@ -8,6 +8,7 @@
"flavor": "large",
"cpuCores": 4.0,
"resources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
+ "realResources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
"environment": "BARE_METAL",
"owner": {
"tenant": "zoneapp",
@@ -26,7 +27,6 @@
"wantedDockerImage": "docker-registry.domain.tld:8080/dist/vespa:6.42.0",
"wantedVespaVersion": "6.42.0",
"requestedResources": { "vcpu":4.0, "memoryGb":32.0, "diskGb":1600.0, "bandwidthGbps":20.0, "diskSpeed":"fast", "storageType":"remote" },
- "allowedToBeDown": false,
"rebootGeneration": 0,
"currentRebootGeneration": 0,
"failCount": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node2.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node2.json
index 35b778b08d0..e0a7448c111 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node2.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node2.json
@@ -8,6 +8,7 @@
"flavor": "large",
"cpuCores": 4.0,
"resources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
+ "realResources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
"environment": "BARE_METAL",
"owner": {
"tenant": "zoneapp",
@@ -26,7 +27,6 @@
"wantedDockerImage": "docker-registry.domain.tld:8080/dist/vespa:6.42.0",
"wantedVespaVersion": "6.42.0",
"requestedResources": { "vcpu":4.0, "memoryGb":32.0, "diskGb":1600.0, "bandwidthGbps":20.0, "diskSpeed":"fast", "storageType":"remote" },
- "allowedToBeDown": false,
"rebootGeneration": 0,
"currentRebootGeneration": 0,
"failCount": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node3.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node3.json
index 0ff0747cc43..21f3a54311f 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node3.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node3.json
@@ -8,6 +8,7 @@
"flavor": "large",
"cpuCores": 4.0,
"resources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
+ "realResources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
"environment": "BARE_METAL",
"owner": {
"tenant": "zoneapp",
@@ -26,7 +27,6 @@
"wantedDockerImage": "docker-registry.domain.tld:8080/dist/vespa:6.42.0",
"wantedVespaVersion": "6.42.0",
"requestedResources": { "vcpu":4.0, "memoryGb":32.0, "diskGb":1600.0, "bandwidthGbps":20.0, "diskSpeed":"fast", "storageType":"remote" },
- "allowedToBeDown": false,
"rebootGeneration": 0,
"currentRebootGeneration": 0,
"failCount": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node4.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node4.json
index 6e085066c9f..789b0580357 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node4.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node4.json
@@ -8,6 +8,7 @@
"flavor": "large",
"cpuCores": 4.0,
"resources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
+ "realResources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
"environment": "BARE_METAL",
"owner": {
"tenant": "zoneapp",
@@ -26,7 +27,6 @@
"wantedDockerImage": "docker-registry.domain.tld:8080/dist/vespa:6.42.0",
"wantedVespaVersion": "6.42.0",
"requestedResources": { "vcpu":4.0, "memoryGb":32.0, "diskGb":1600.0, "bandwidthGbps":20.0, "diskSpeed":"fast", "storageType":"remote" },
- "allowedToBeDown": false,
"rebootGeneration": 0,
"currentRebootGeneration": 0,
"failCount": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node5.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node5.json
index b15e748084e..35ec6fc0273 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node5.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/docker-node5.json
@@ -8,6 +8,7 @@
"flavor": "large",
"cpuCores": 4.0,
"resources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
+ "realResources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
"environment": "BARE_METAL",
"owner": {
"tenant": "zoneapp",
@@ -26,7 +27,6 @@
"wantedDockerImage": "docker-registry.domain.tld:8080/dist/vespa:6.42.0",
"wantedVespaVersion": "6.42.0",
"requestedResources": { "vcpu":4.0, "memoryGb":32.0, "diskGb":1600.0, "bandwidthGbps":20.0, "diskSpeed":"fast", "storageType":"remote" },
- "allowedToBeDown": false,
"rebootGeneration": 0,
"currentRebootGeneration": 0,
"failCount": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/dockerhost1-with-firmware-data.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/dockerhost1-with-firmware-data.json
index 2f58fadd187..498780a2eba 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/dockerhost1-with-firmware-data.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/dockerhost1-with-firmware-data.json
@@ -8,6 +8,7 @@
"flavor": "large",
"cpuCores": 4.0,
"resources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
+ "realResources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
"environment": "BARE_METAL",
"owner": {
"tenant": "zoneapp",
@@ -26,7 +27,6 @@
"wantedDockerImage": "docker-registry.domain.tld:8080/dist/vespa:6.42.0",
"wantedVespaVersion": "6.42.0",
"requestedResources": { "vcpu":4.0, "memoryGb":32.0, "diskGb":1600.0, "bandwidthGbps":20.0, "diskSpeed":"fast", "storageType":"remote" },
- "allowedToBeDown": false,
"rebootGeneration": 0,
"currentRebootGeneration": 0,
"currentFirmwareCheck": 100,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/dockerhost6.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/dockerhost6.json
index 68da9b9427d..1ba16743e25 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/dockerhost6.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/dockerhost6.json
@@ -7,14 +7,8 @@
"openStackId": "dockerhost6",
"flavor": "large",
"cpuCores": 4.0,
- "resources": {
- "vcpu": 4.0,
- "memoryGb": 32.0,
- "diskGb": 1600.0,
- "bandwidthGbps": 20.0,
- "diskSpeed": "fast",
- "storageType": "remote"
- },
+ "resources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
+ "realResources":{"vcpu":4.0,"memoryGb":32.0,"diskGb":1600.0,"bandwidthGbps":20.0,"diskSpeed":"fast","storageType":"remote"},
"environment": "BARE_METAL",
"rebootGeneration": 0,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node1.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node1.json
index 0eec239f7dc..a35e8aa638b 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node1.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node1.json
@@ -7,6 +7,7 @@
"openStackId": "node1",
"flavor": "[vcpu: 2.0, memory: 8.0 Gb, disk 50.0 Gb, bandwidth: 1.0 Gbps, storage type: local]",
"resources":{"vcpu":2.0,"memoryGb":8.0,"diskGb":50.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"local"},
+ "realResources":{"vcpu":2.0,"memoryGb":8.0,"diskGb":50.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"local"},
"environment": "DOCKER_CONTAINER",
"owner": {
"tenant": "tenant1",
@@ -25,7 +26,6 @@
"wantedDockerImage": "docker-registry.domain.tld:8080/dist/vespa:6.42.0",
"wantedVespaVersion": "6.42.0",
"requestedResources": { "vcpu":2.0, "memoryGb":8.0, "diskGb":50.0, "bandwidthGbps":1.0, "diskSpeed":"fast", "storageType":"any" },
- "allowedToBeDown": false,
"rebootGeneration": 0,
"currentRebootGeneration": 0,
"failCount": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node10.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node10.json
index bc101402725..5d98c75f346 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node10.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node10.json
@@ -8,6 +8,7 @@
"openStackId": "node10",
"flavor": "[vcpu: 2.0, memory: 8.0 Gb, disk 50.0 Gb, bandwidth: 1.0 Gbps, storage type: local]",
"resources":{"vcpu":2.0,"memoryGb":8.0,"diskGb":50.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"local"},
+ "realResources":{"vcpu":2.0,"memoryGb":8.0,"diskGb":50.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"local"},
"environment": "DOCKER_CONTAINER",
"owner": {
"tenant": "tenant1",
@@ -26,7 +27,6 @@
"wantedDockerImage": "docker-registry.domain.tld:8080/dist/vespa:6.42.0",
"wantedVespaVersion": "6.42.0",
"requestedResources": { "vcpu":2.0, "memoryGb":8.0, "diskGb":50.0, "bandwidthGbps":1.0, "diskSpeed":"fast", "storageType":"any" },
- "allowedToBeDown": false,
"rebootGeneration": 0,
"currentRebootGeneration": 0,
"vespaVersion": "5.104.142",
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node11.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node11.json
index 4e6ae69de38..4cfb5ac8e78 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node11.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node11.json
@@ -8,6 +8,7 @@
"openStackId": "host11.yahoo.com",
"flavor": "[vcpu: 1.0, memory: 1.0 Gb, disk 100.0 Gb, bandwidth: 0.3 Gbps]",
"resources":{"vcpu":1.0,"memoryGb":1.0,"diskGb":100.0,"bandwidthGbps":0.3,"diskSpeed":"fast","storageType":"any"},
+ "realResources":{"vcpu":1.0,"memoryGb":1.0,"diskGb":100.0,"bandwidthGbps":0.3,"diskSpeed":"fast","storageType":"any"},
"environment": "DOCKER_CONTAINER",
"rebootGeneration": 0,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node13.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node13.json
index 96ff3eab48d..477a87124e7 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node13.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node13.json
@@ -7,6 +7,7 @@
"openStackId": "node13",
"flavor": "[vcpu: 10.0, memory: 48.0 Gb, disk 500.0 Gb, bandwidth: 1.0 Gbps, storage type: local]",
"resources":{"vcpu":10.0,"memoryGb":48.0,"diskGb":500.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"local"},
+ "realResources":{"vcpu":10.0,"memoryGb":48.0,"diskGb":500.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"local"},
"environment": "DOCKER_CONTAINER",
"owner": {
"tenant": "tenant4",
@@ -25,7 +26,6 @@
"wantedDockerImage": "docker-registry.domain.tld:8080/dist/vespa:6.42.0",
"wantedVespaVersion": "6.42.0",
"requestedResources": { "vcpu":10.0, "memoryGb":48.0, "diskGb":500.0, "bandwidthGbps":1.0, "diskSpeed":"fast", "storageType":"any" },
- "allowedToBeDown": false,
"rebootGeneration": 0,
"currentRebootGeneration": 0,
"failCount": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node14.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node14.json
index eb58f5fd928..fd533b6372c 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node14.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node14.json
@@ -7,6 +7,7 @@
"openStackId": "node14",
"flavor": "[vcpu: 10.0, memory: 48.0 Gb, disk 500.0 Gb, bandwidth: 1.0 Gbps, storage type: local]",
"resources":{"vcpu":10.0,"memoryGb":48.0,"diskGb":500.0,"bandwidthGbps":1.0, "diskSpeed":"fast","storageType":"local"},
+ "realResources":{"vcpu":10.0,"memoryGb":48.0,"diskGb":500.0,"bandwidthGbps":1.0, "diskSpeed":"fast","storageType":"local"},
"environment": "DOCKER_CONTAINER",
"owner": {
"tenant": "tenant4",
@@ -25,7 +26,6 @@
"wantedDockerImage": "docker-registry.domain.tld:8080/dist/vespa:6.42.0",
"wantedVespaVersion": "6.42.0",
"requestedResources": { "vcpu":10.0, "memoryGb":48.0, "diskGb":500.0, "bandwidthGbps":1.0, "diskSpeed":"fast", "storageType":"any" },
- "allowedToBeDown": false,
"rebootGeneration": 0,
"currentRebootGeneration": 0,
"failCount": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node2.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node2.json
index 73f9cabba17..e288aaccc28 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node2.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node2.json
@@ -7,6 +7,7 @@
"openStackId": "node2",
"flavor": "[vcpu: 2.0, memory: 8.0 Gb, disk 50.0 Gb, bandwidth: 1.0 Gbps, storage type: local]",
"resources":{"vcpu":2.0,"memoryGb":8.0,"diskGb":50.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"local"},
+ "realResources":{"vcpu":2.0,"memoryGb":8.0,"diskGb":50.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"local"},
"environment": "DOCKER_CONTAINER",
"owner": {
"tenant": "tenant2",
@@ -25,7 +26,6 @@
"wantedDockerImage": "docker-registry.domain.tld:8080/dist/vespa:6.42.0",
"wantedVespaVersion": "6.42.0",
"requestedResources": { "vcpu":2.0, "memoryGb":8.0, "diskGb":50.0, "bandwidthGbps":1.0, "diskSpeed":"fast", "storageType":"any" },
- "allowedToBeDown": false,
"rebootGeneration": 0,
"currentRebootGeneration": 0,
"failCount": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node3.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node3.json
index 9997478d8bb..ac3e9ef96b0 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node3.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node3.json
@@ -7,6 +7,7 @@
"openStackId": "node3",
"flavor": "[vcpu: 0.5, memory: 48.0 Gb, disk 500.0 Gb, bandwidth: 1.0 Gbps, storage type: local]",
"resources":{"vcpu":0.5,"memoryGb":48.0,"diskGb":500.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"local"},
+ "realResources":{"vcpu":0.5,"memoryGb":48.0,"diskGb":500.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"local"},
"environment": "DOCKER_CONTAINER",
"rebootGeneration": 0,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node4-after-changes.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node4-after-changes.json
index 04d4cdfa505..6f25254b420 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node4-after-changes.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node4-after-changes.json
@@ -9,6 +9,7 @@
"flavor": "d-2-8-100",
"cpuCores": 2.0,
"resources":{"vcpu":2.0,"memoryGb":8.0,"diskGb":100.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"remote"},
+ "realResources":{"vcpu":2.0,"memoryGb":8.0,"diskGb":100.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"remote"},
"environment": "DOCKER_CONTAINER",
"owner": {
"tenant": "tenant3",
@@ -27,7 +28,6 @@
"wantedDockerImage": "docker-registry.domain.tld:8080/my/image:6.42.0",
"wantedVespaVersion": "6.42.0",
"requestedResources": { "vcpu":1.0, "memoryGb":4.0, "diskGb":100.0, "bandwidthGbps":1.0, "diskSpeed":"fast", "storageType":"any" },
- "allowedToBeDown": true,
"orchestratorStatus": "ALLOWED_TO_BE_DOWN",
"suspendedSinceMillis": 0,
"rebootGeneration": 2,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node4-with-hostnames.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node4-with-hostnames.json
index e6c2ba350d2..165e2480340 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node4-with-hostnames.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node4-with-hostnames.json
@@ -8,6 +8,7 @@
"openStackId": "node4",
"flavor": "[vcpu: 1.0, memory: 4.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps, storage type: local]",
"resources":{"vcpu":1.0,"memoryGb":4.0,"diskGb":100.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"local"},
+ "realResources":{"vcpu":1.0,"memoryGb":4.0,"diskGb":100.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"local"},
"environment": "DOCKER_CONTAINER",
"owner": {
"tenant": "tenant3",
@@ -26,7 +27,6 @@
"wantedDockerImage": "docker-registry.domain.tld:8080/dist/vespa:6.42.0",
"wantedVespaVersion": "6.42.0",
"requestedResources": { "vcpu":1.0, "memoryGb":4.0, "diskGb":100.0, "bandwidthGbps":1.0, "diskSpeed":"fast", "storageType":"any" },
- "allowedToBeDown": false,
"rebootGeneration": 0,
"currentRebootGeneration": 0,
"vespaVersion": "6.41.0",
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node4.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node4.json
index 1ae403bcba6..ceb9d88763f 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node4.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node4.json
@@ -8,6 +8,7 @@
"openStackId": "node4",
"flavor": "[vcpu: 1.0, memory: 4.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps, storage type: local]",
"resources":{"vcpu":1.0,"memoryGb":4.0,"diskGb":100.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"local"},
+ "realResources":{"vcpu":1.0,"memoryGb":4.0,"diskGb":100.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"local"},
"environment": "DOCKER_CONTAINER",
"owner": {
"tenant": "tenant3",
@@ -26,7 +27,6 @@
"wantedDockerImage": "docker-registry.domain.tld:8080/dist/vespa:6.42.0",
"wantedVespaVersion": "6.42.0",
"requestedResources": { "vcpu":1.0, "memoryGb":4.0, "diskGb":100.0, "bandwidthGbps":1.0, "diskSpeed":"fast", "storageType":"any" },
- "allowedToBeDown": false,
"rebootGeneration": 0,
"currentRebootGeneration": 0,
"vespaVersion": "6.41.0",
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node5-after-changes.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node5-after-changes.json
index 35c2ee570c8..62ecb313588 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node5-after-changes.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node5-after-changes.json
@@ -8,6 +8,7 @@
"openStackId": "node5",
"flavor": "[vcpu: 1.0, memory: 8.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps, disk speed: slow, storage type: remote]",
"resources":{"vcpu":1.0,"memoryGb":8.0,"diskGb":100.0,"bandwidthGbps":1.0,"diskSpeed":"slow","storageType":"remote"},
+ "realResources":{"vcpu":1.0,"memoryGb":8.0,"diskGb":100.0,"bandwidthGbps":1.0,"diskSpeed":"slow","storageType":"remote"},
"environment": "DOCKER_CONTAINER",
"rebootGeneration": 0,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node5.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node5.json
index a45bf4a0c53..55c16c23a0a 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node5.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node5.json
@@ -8,6 +8,7 @@
"openStackId": "node5",
"flavor": "[vcpu: 1.0, memory: 8.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps, disk speed: slow, storage type: remote]",
"resources":{"vcpu":1.0,"memoryGb":8.0,"diskGb":100.0,"bandwidthGbps":1.0,"diskSpeed":"slow","storageType":"remote"},
+ "realResources":{"vcpu":1.0,"memoryGb":8.0,"diskGb":100.0,"bandwidthGbps":1.0,"diskSpeed":"slow","storageType":"remote"},
"environment": "DOCKER_CONTAINER",
"rebootGeneration": 0,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node55.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node55.json
index 9ccb0f1c1f4..2ac665bf742 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node55.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node55.json
@@ -7,6 +7,7 @@
"openStackId": "node55",
"flavor": "[vcpu: 2.0, memory: 8.0 Gb, disk 50.0 Gb, bandwidth: 1.0 Gbps, storage type: local]",
"resources":{"vcpu":2.0,"memoryGb":8.0,"diskGb":50.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"local"},
+ "realResources":{"vcpu":2.0,"memoryGb":8.0,"diskGb":50.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"local"},
"environment": "DOCKER_CONTAINER",
"rebootGeneration": 0,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node6.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node6.json
index a6eede0675c..1e64c8a8edd 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node6.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node6.json
@@ -7,6 +7,7 @@
"openStackId": "node6",
"flavor": "[vcpu: 2.0, memory: 8.0 Gb, disk 50.0 Gb, bandwidth: 1.0 Gbps, storage type: local]",
"resources":{"vcpu":2.0,"memoryGb":8.0,"diskGb":50.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"local"},
+ "realResources":{"vcpu":2.0,"memoryGb":8.0,"diskGb":50.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"local"},
"environment": "DOCKER_CONTAINER",
"owner": {
"tenant": "tenant2",
@@ -25,7 +26,6 @@
"wantedDockerImage": "docker-registry.domain.tld:8080/dist/vespa:6.42.0",
"wantedVespaVersion": "6.42.0",
"requestedResources": { "vcpu":2.0, "memoryGb":8.0, "diskGb":50.0, "bandwidthGbps":1.0, "diskSpeed":"fast", "storageType":"any" },
- "allowedToBeDown": false,
"rebootGeneration": 0,
"currentRebootGeneration": 0,
"failCount": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node7.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node7.json
index 289e37f6aeb..051325612d6 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node7.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node7.json
@@ -7,6 +7,7 @@
"openStackId": "node7",
"flavor": "[vcpu: 2.0, memory: 8.0 Gb, disk 50.0 Gb, bandwidth: 1.0 Gbps, storage type: local]",
"resources":{"vcpu":2.0,"memoryGb":8.0,"diskGb":50.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"local"},
+ "realResources":{"vcpu":2.0,"memoryGb":8.0,"diskGb":50.0,"bandwidthGbps":1.0,"diskSpeed":"fast","storageType":"local"},
"environment": "DOCKER_CONTAINER",
"rebootGeneration": 0,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node8.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node8.json
index e270b10a753..11eb5149fbc 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node8.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node8.json
@@ -8,6 +8,7 @@
"flavor": "default",
"cpuCores": 2.0,
"resources":{"vcpu":2.0,"memoryGb":16.0,"diskGb":400.0,"bandwidthGbps":10.0,"diskSpeed":"fast","storageType": "remote"},
+ "realResources":{"vcpu":2.0,"memoryGb":16.0,"diskGb":400.0,"bandwidthGbps":10.0,"diskSpeed":"fast","storageType": "remote"},
"environment": "BARE_METAL",
"rebootGeneration": 0,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node9.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node9.json
index 7a69f51f2e4..a1eb16195d2 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node9.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/node9.json
@@ -8,6 +8,7 @@
"flavor": "large-variant",
"cpuCores": 64.0,
"resources":{"vcpu":64.0,"memoryGb":128.0,"diskGb":2000.0,"bandwidthGbps":15.0,"diskSpeed":"fast","storageType":"remote"},
+ "realResources":{"vcpu":64.0,"memoryGb":128.0,"diskGb":2000.0,"bandwidthGbps":15.0,"diskSpeed":"fast","storageType":"remote"},
"environment": "BARE_METAL",
"rebootGeneration": 0,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/parent2.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/parent2.json
index cf53435a860..acf481cd9c9 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/parent2.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/parent2.json
@@ -10,6 +10,7 @@
"exclusiveTo": "tenant1:app1:instance1",
"cpuCores": 64.0,
"resources": {"vcpu":64.0,"memoryGb":128.0,"diskGb":2000.0,"bandwidthGbps":15.0,"diskSpeed":"fast","storageType":"remote"},
+ "realResources": {"vcpu":64.0,"memoryGb":128.0,"diskGb":2000.0,"bandwidthGbps":15.0,"diskSpeed":"fast","storageType":"remote"},
"environment": "BARE_METAL",
"rebootGeneration": 0,
"currentRebootGeneration": 0,
diff --git a/node-repository/src/test/resources/hosts.xml b/node-repository/src/test/resources/hosts.xml
index 9a04cc6fc76..10179ed79ad 100644
--- a/node-repository/src/test/resources/hosts.xml
+++ b/node-repository/src/test/resources/hosts.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<hosts>
<host name="hostname1">
<alias>myhostalias1</alias>
diff --git a/node-repository/src/test/resources/services.xml b/node-repository/src/test/resources/services.xml
index 7f9597b9c2f..030ac5a4bc7 100644
--- a/node-repository/src/test/resources/services.xml
+++ b/node-repository/src/test/resources/services.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services version="1.0">
<container version="1.0" id="default">
<nodes>
diff --git a/orchestrator-restapi/README.md b/orchestrator-restapi/README.md
index 5cd998249a4..28cbe38ff00 100644
--- a/orchestrator-restapi/README.md
+++ b/orchestrator-restapi/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# REST API definitions for Orchestrator.
Having the API definitions in a separate module makes it easier
diff --git a/orchestrator-restapi/pom.xml b/orchestrator-restapi/pom.xml
index 37552b7aa0b..da40a1a50a1 100644
--- a/orchestrator-restapi/pom.xml
+++ b/orchestrator-restapi/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/BatchOperationResult.java b/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/BatchOperationResult.java
index 601dcad6208..e010a22658a 100644
--- a/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/BatchOperationResult.java
+++ b/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/BatchOperationResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.restapi.wire;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/GetHostResponse.java b/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/GetHostResponse.java
index 2a582020bb3..4cf32900291 100644
--- a/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/GetHostResponse.java
+++ b/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/GetHostResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.restapi.wire;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/HostService.java b/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/HostService.java
index 8a02e368f86..53d48f9272f 100644
--- a/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/HostService.java
+++ b/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/HostService.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.restapi.wire;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/HostStateChangeDenialReason.java b/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/HostStateChangeDenialReason.java
index 054396a8eb9..8efd560c133 100644
--- a/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/HostStateChangeDenialReason.java
+++ b/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/HostStateChangeDenialReason.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.restapi.wire;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/PatchHostRequest.java b/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/PatchHostRequest.java
index fae4a089e24..d72d29ac8e9 100644
--- a/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/PatchHostRequest.java
+++ b/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/PatchHostRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.restapi.wire;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/PatchHostResponse.java b/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/PatchHostResponse.java
index 20364d30547..bb26b6f47ca 100644
--- a/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/PatchHostResponse.java
+++ b/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/PatchHostResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.restapi.wire;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/SlobrokEntryResponse.java b/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/SlobrokEntryResponse.java
index 672f391a4cd..0e66c2ea546 100644
--- a/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/SlobrokEntryResponse.java
+++ b/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/SlobrokEntryResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.restapi.wire;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/UpdateHostResponse.java b/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/UpdateHostResponse.java
index 667abf09cd6..f145aa4da2c 100644
--- a/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/UpdateHostResponse.java
+++ b/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/UpdateHostResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.restapi.wire;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/WireHostInfo.java b/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/WireHostInfo.java
index 6b656f73305..4f1190e4980 100644
--- a/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/WireHostInfo.java
+++ b/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/WireHostInfo.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.restapi.wire;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/orchestrator/CMakeLists.txt b/orchestrator/CMakeLists.txt
index 5ff6a7ac576..77e1238d9bc 100644
--- a/orchestrator/CMakeLists.txt
+++ b/orchestrator/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(orchestrator)
diff --git a/orchestrator/README.md b/orchestrator/README.md
index de2995cb143..53e56c3e4b6 100644
--- a/orchestrator/README.md
+++ b/orchestrator/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Orchestrator, a.k.a. Maestro
A service to facilitate safe and staggered restart and upgrades of services in a Vespa instance.
It uses consolidated information from Slobrok and the application model to decide if a hosts
diff --git a/orchestrator/pom.xml b/orchestrator/pom.xml
index da4a7dc4efc..f321dbe7e9e 100644
--- a/orchestrator/pom.xml
+++ b/orchestrator/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/ApplicationIdNotFoundException.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/ApplicationIdNotFoundException.java
index 9022b56e8bd..067d0c545f1 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/ApplicationIdNotFoundException.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/ApplicationIdNotFoundException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator;
/**
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/ApplicationStateChangeDeniedException.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/ApplicationStateChangeDeniedException.java
index 0668f5ea164..dfe2b2ca344 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/ApplicationStateChangeDeniedException.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/ApplicationStateChangeDeniedException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator;
/**
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/BatchHostNameNotFoundException.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/BatchHostNameNotFoundException.java
index 7deff4daf9e..25e053a717e 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/BatchHostNameNotFoundException.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/BatchHostNameNotFoundException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator;
import com.yahoo.vespa.applicationmodel.HostName;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/BatchInternalErrorException.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/BatchInternalErrorException.java
index d033078bb22..70dc661c071 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/BatchInternalErrorException.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/BatchInternalErrorException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator;
import com.yahoo.vespa.applicationmodel.HostName;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/Host.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/Host.java
index 8f5f00af7a0..958450c3478 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/Host.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/Host.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator;
import com.yahoo.vespa.applicationmodel.ApplicationInstanceReference;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/HostNameNotFoundException.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/HostNameNotFoundException.java
index 98108499e5c..3313b45dda2 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/HostNameNotFoundException.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/HostNameNotFoundException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator;
import com.yahoo.vespa.applicationmodel.HostName;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestrationException.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestrationException.java
index 95d862d9e72..cf68cb55d5b 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestrationException.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestrationException.java
@@ -1,9 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator;
import java.util.Arrays;
-public class OrchestrationException extends Exception {
+public class OrchestrationException extends RuntimeException {
public OrchestrationException(Throwable cause) {
super(cause);
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/Orchestrator.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/Orchestrator.java
index 20a30d45fe5..14136308299 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/Orchestrator.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/Orchestrator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator;
import com.yahoo.config.provision.ApplicationId;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorContext.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorContext.java
index 468a4aa94ab..aa218755792 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorContext.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorContext.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator;
import com.yahoo.time.TimeBudget;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorImpl.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorImpl.java
index 6d50002669d..2a9cdb7e0eb 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorImpl.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator;
import com.google.common.util.concurrent.UncheckedTimeoutException;
@@ -13,6 +13,7 @@ import com.yahoo.vespa.applicationmodel.HostName;
import com.yahoo.vespa.applicationmodel.ServiceCluster;
import com.yahoo.vespa.applicationmodel.ServiceInstance;
import com.yahoo.vespa.flags.FlagSource;
+import com.yahoo.vespa.flags.Flags;
import com.yahoo.vespa.orchestrator.config.OrchestratorConfig;
import com.yahoo.vespa.orchestrator.controller.ClusterControllerClient;
import com.yahoo.vespa.orchestrator.controller.ClusterControllerClientFactory;
@@ -70,24 +71,45 @@ public class OrchestratorImpl implements Orchestrator {
private final ApplicationApiFactory applicationApiFactory;
@Inject
- public OrchestratorImpl(ClusterControllerClientFactory clusterControllerClientFactory,
+ public OrchestratorImpl(OrchestratorConfig orchestratorConfig,
+ ConfigserverConfig configServerConfig,
+ ClusterControllerClientFactory clusterControllerClientFactory,
StatusService statusService,
- OrchestratorConfig orchestratorConfig,
ServiceMonitor serviceMonitor,
- ConfigserverConfig configServerConfig,
FlagSource flagSource,
Zone zone)
{
+ this(clusterControllerClientFactory,
+ statusService,
+ serviceMonitor,
+ flagSource,
+ zone,
+ Clock.systemUTC(),
+ new ApplicationApiFactory(configServerConfig.zookeeperserver().size(),
+ orchestratorConfig.numProxies(),
+ Clock.systemUTC()),
+ orchestratorConfig.serviceMonitorConvergenceLatencySeconds());
+ }
+
+ private OrchestratorImpl(ClusterControllerClientFactory clusterControllerClientFactory,
+ StatusService statusService,
+ ServiceMonitor serviceMonitor,
+ FlagSource flagSource,
+ Zone zone,
+ Clock clock,
+ ApplicationApiFactory applicationApiFactory,
+ int serviceMonitorConvergenceLatencySeconds)
+ {
this(new HostedVespaPolicy(new HostedVespaClusterPolicy(flagSource, zone),
clusterControllerClientFactory,
- new ApplicationApiFactory(configServerConfig.zookeeperserver().size(), Clock.systemUTC())),
- clusterControllerClientFactory,
- statusService,
- serviceMonitor,
- orchestratorConfig.serviceMonitorConvergenceLatencySeconds(),
- Clock.systemUTC(),
- new ApplicationApiFactory(configServerConfig.zookeeperserver().size(), Clock.systemUTC()),
- flagSource);
+ applicationApiFactory),
+ clusterControllerClientFactory,
+ statusService,
+ serviceMonitor,
+ serviceMonitorConvergenceLatencySeconds,
+ clock,
+ applicationApiFactory,
+ flagSource);
}
public OrchestratorImpl(Policy policy,
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorUtil.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorUtil.java
index 5e4491d854e..54b0bc4ddd1 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorUtil.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorUtil.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator;
import com.yahoo.config.provision.ApplicationId;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClient.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClient.java
index 15ae69b3a0d..20b27ea7632 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClient.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.controller;
import com.google.common.util.concurrent.UncheckedTimeoutException;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientFactory.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientFactory.java
index 03b839edb1b..98c631d0874 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientFactory.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.controller;
import com.yahoo.vespa.applicationmodel.HostName;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientImpl.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientImpl.java
index 04725c330e0..7c8be703310 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientImpl.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.controller;
import com.google.common.util.concurrent.UncheckedTimeoutException;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerJaxRsApi.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerJaxRsApi.java
index 4831f4c121a..01e3cc6718a 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerJaxRsApi.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerJaxRsApi.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.controller;
import javax.ws.rs.Consumes;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerNodeState.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerNodeState.java
index 60ecff60026..8c829b607e8 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerNodeState.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerNodeState.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.controller;
import com.fasterxml.jackson.annotation.JsonValue;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerStateRequest.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerStateRequest.java
index 696c01689f9..e08788cb238 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerStateRequest.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerStateRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.controller;
import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerStateResponse.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerStateResponse.java
index 323d801cada..2d7ba3afa7d 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerStateResponse.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerStateResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.controller;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/RetryingClusterControllerClientFactory.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/RetryingClusterControllerClientFactory.java
index e2e769f8556..c4132d490dc 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/RetryingClusterControllerClientFactory.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/controller/RetryingClusterControllerClientFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.controller;
import com.google.inject.Inject;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ApplicationApi.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ApplicationApi.java
index a8734dd67e5..8a5eaa51bb9 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ApplicationApi.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ApplicationApi.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.model;
import com.yahoo.config.provision.ApplicationId;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ApplicationApiFactory.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ApplicationApiFactory.java
index d913a1791ba..35dd9c5051a 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ApplicationApiFactory.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ApplicationApiFactory.java
@@ -1,7 +1,11 @@
// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.model;
+import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.vespa.orchestrator.OrchestratorUtil;
import com.yahoo.vespa.orchestrator.controller.ClusterControllerClientFactory;
+import com.yahoo.vespa.orchestrator.policy.HostedVespaOrchestration;
+import com.yahoo.vespa.orchestrator.policy.OrchestrationParams;
import com.yahoo.vespa.orchestrator.status.ApplicationLock;
import java.time.Clock;
@@ -11,19 +15,20 @@ import java.time.Clock;
*/
public class ApplicationApiFactory {
- private final int numberOfConfigServers;
+ private final OrchestrationParams orchestrationParams;
private final Clock clock;
- public ApplicationApiFactory(int numberOfConfigServers, Clock clock) {
- this.numberOfConfigServers = numberOfConfigServers;
+ public ApplicationApiFactory(int numberOfConfigServers, int numProxies, Clock clock) {
+ this.orchestrationParams = HostedVespaOrchestration.create(numberOfConfigServers, numProxies);
this.clock = clock;
}
public ApplicationApi create(NodeGroup nodeGroup,
ApplicationLock lock,
ClusterControllerClientFactory clusterControllerClientFactory) {
+ ApplicationId applicationId = OrchestratorUtil.toApplicationId(lock.getApplicationInstanceReference());
return new ApplicationApiImpl(nodeGroup, lock, clusterControllerClientFactory,
- numberOfConfigServers, clock);
+ orchestrationParams.getApplicationParams(applicationId), clock);
}
}
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ApplicationApiImpl.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ApplicationApiImpl.java
index efbf9ff7981..380e34aab8d 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ApplicationApiImpl.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ApplicationApiImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.model;
import com.yahoo.config.provision.ApplicationId;
@@ -9,6 +9,7 @@ import com.yahoo.vespa.applicationmodel.ServiceInstance;
import com.yahoo.vespa.orchestrator.OrchestratorContext;
import com.yahoo.vespa.orchestrator.OrchestratorUtil;
import com.yahoo.vespa.orchestrator.controller.ClusterControllerClientFactory;
+import com.yahoo.vespa.orchestrator.policy.ApplicationParams;
import com.yahoo.vespa.orchestrator.status.ApplicationInstanceStatus;
import com.yahoo.vespa.orchestrator.status.ApplicationLock;
import com.yahoo.vespa.orchestrator.status.HostInfos;
@@ -38,13 +39,13 @@ public class ApplicationApiImpl implements ApplicationApi {
public ApplicationApiImpl(NodeGroup nodeGroup,
ApplicationLock lock,
ClusterControllerClientFactory clusterControllerClientFactory,
- int numberOfConfigServers, Clock clock) {
+ ApplicationParams params, Clock clock) {
this.applicationInstance = nodeGroup.getApplication();
this.nodeGroup = nodeGroup;
this.lock = lock;
this.clock = clock;
this.hostInfos = lock.getHostInfos();
- this.clusterInOrder = makeClustersInOrder(nodeGroup, hostInfos, clusterControllerClientFactory, numberOfConfigServers);
+ this.clusterInOrder = makeClustersInOrder(nodeGroup, hostInfos, clusterControllerClientFactory, params);
}
@Override
@@ -113,7 +114,7 @@ public class ApplicationApiImpl implements ApplicationApi {
private List<ClusterApi> makeClustersInOrder(NodeGroup nodeGroup,
HostInfos hostInfos,
ClusterControllerClientFactory clusterControllerClientFactory,
- int numberOfConfigServers) {
+ ApplicationParams params) {
Set<ServiceCluster> clustersInGroup = getServiceClustersInGroup(nodeGroup);
return clustersInGroup.stream()
.map(serviceCluster -> new ClusterApiImpl(
@@ -122,7 +123,7 @@ public class ApplicationApiImpl implements ApplicationApi {
nodeGroup,
hostInfos,
clusterControllerClientFactory,
- numberOfConfigServers,
+ params.clusterParamsFor(serviceCluster.clusterId(), serviceCluster.serviceType()),
clock))
.sorted(ApplicationApiImpl::compareClusters)
.collect(Collectors.toList());
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ClusterApi.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ClusterApi.java
index 78373282df8..4198c572431 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ClusterApi.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ClusterApi.java
@@ -1,9 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.model;
-import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.applicationmodel.ClusterId;
import com.yahoo.vespa.applicationmodel.ServiceType;
+import com.yahoo.vespa.orchestrator.policy.HostStateChangeDeniedException;
import com.yahoo.vespa.orchestrator.policy.SuspensionReasons;
import java.util.Optional;
@@ -17,18 +17,24 @@ public interface ClusterApi {
String clusterInfo();
ClusterId clusterId();
ServiceType serviceType();
+
+ /** Some human-readable string naming the service(s) to a human reader. */
+ String serviceDescription(boolean plural);
+
boolean isStorageCluster();
- /** Returns the reasons no services are up in the implied group, or empty if some services are up. */
- Optional<SuspensionReasons> reasonsForNoServicesInGroupIsUp();
- boolean noServicesOutsideGroupIsDown();
+ boolean isConfigServerLike();
+
+ /** Returns the non-empty reasons for why all services are down, or otherwise empty. */
+ Optional<SuspensionReasons> allServicesDown();
- int percentageOfServicesDown();
+ boolean noServicesOutsideGroupIsDown() throws HostStateChangeDeniedException;
+
+ int percentageOfServicesDownOutsideGroup();
int percentageOfServicesDownIfGroupIsAllowedToBeDown();
Optional<StorageNode> storageNodeInGroup();
Optional<StorageNode> upStorageNodeInGroup();
String downDescription();
-
}
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ClusterApiImpl.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ClusterApiImpl.java
index 57dcb5f3069..4a10cde66b3 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ClusterApiImpl.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ClusterApiImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.model;
import com.yahoo.vespa.applicationmodel.ClusterId;
@@ -8,6 +8,9 @@ import com.yahoo.vespa.applicationmodel.ServiceInstance;
import com.yahoo.vespa.applicationmodel.ServiceStatus;
import com.yahoo.vespa.applicationmodel.ServiceType;
import com.yahoo.vespa.orchestrator.controller.ClusterControllerClientFactory;
+import com.yahoo.vespa.orchestrator.policy.ClusterParams;
+import com.yahoo.vespa.orchestrator.policy.HostStateChangeDeniedException;
+import com.yahoo.vespa.orchestrator.policy.HostedVespaPolicy;
import com.yahoo.vespa.orchestrator.policy.SuspensionReasons;
import com.yahoo.vespa.orchestrator.status.HostInfos;
import com.yahoo.vespa.orchestrator.status.HostStatus;
@@ -37,9 +40,10 @@ class ClusterApiImpl implements ClusterApi {
private final ClusterControllerClientFactory clusterControllerClientFactory;
private final Clock clock;
private final Set<ServiceInstance> servicesInGroup;
- private final Set<ServiceInstance> servicesDownInGroup;
private final Set<ServiceInstance> servicesNotInGroup;
- private final Set<ServiceInstance> servicesDownAndNotInGroup;
+
+ /** Lazily initialized in servicesDownAndNotInGroup(), do not access directly. */
+ private Set<ServiceInstance> servicesDownAndNotInGroup = null;
/*
* There are two sources for the number of config servers in a cluster. The config server config and the node
@@ -59,7 +63,7 @@ class ClusterApiImpl implements ClusterApi {
NodeGroup nodeGroup,
HostInfos hostInfos,
ClusterControllerClientFactory clusterControllerClientFactory,
- int numberOfConfigServers,
+ ClusterParams clusterParams,
Clock clock) {
this.applicationApi = applicationApi;
this.serviceCluster = serviceCluster;
@@ -77,13 +81,9 @@ class ClusterApiImpl implements ClusterApi {
servicesInGroup = serviceInstancesByLocality.getOrDefault(true, Collections.emptySet());
servicesNotInGroup = serviceInstancesByLocality.getOrDefault(false, Collections.emptySet());
- servicesDownInGroup = servicesInGroup.stream().filter(this::serviceEffectivelyDown).collect(Collectors.toSet());
- servicesDownAndNotInGroup = servicesNotInGroup.stream().filter(this::serviceEffectivelyDown).collect(Collectors.toSet());
-
int serviceInstances = serviceCluster.serviceInstances().size();
- if ((serviceCluster.isConfigServerLike() || serviceCluster.isConfigServerHostLike()) &&
- serviceInstances < numberOfConfigServers) {
- missingServices = numberOfConfigServers - serviceInstances;
+ if (clusterParams.size().isPresent() && serviceInstances < clusterParams.size().getAsInt()) {
+ missingServices = clusterParams.size().getAsInt() - serviceInstances;
descriptionOfMissingServices = missingServices + " missing " + serviceCluster.nodeDescription(missingServices > 1);
} else {
missingServices = 0;
@@ -107,6 +107,11 @@ class ClusterApiImpl implements ClusterApi {
}
@Override
+ public String serviceDescription(boolean plural) {
+ return serviceCluster.serviceDescription(plural);
+ }
+
+ @Override
public boolean isStorageCluster() {
return VespaModelUtil.isStorage(serviceCluster);
}
@@ -117,7 +122,12 @@ class ClusterApiImpl implements ClusterApi {
}
@Override
- public Optional<SuspensionReasons> reasonsForNoServicesInGroupIsUp() {
+ public boolean isConfigServerLike() {
+ return serviceCluster.isConfigServerLike();
+ }
+
+ @Override
+ public Optional<SuspensionReasons> allServicesDown() {
SuspensionReasons reasons = new SuspensionReasons();
for (ServiceInstance service : servicesInGroup) {
@@ -152,19 +162,19 @@ class ClusterApiImpl implements ClusterApi {
int missingServices() { return missingServices; }
@Override
- public boolean noServicesOutsideGroupIsDown() {
- return servicesDownAndNotInGroup.size() + missingServices == 0;
+ public boolean noServicesOutsideGroupIsDown() throws HostStateChangeDeniedException {
+ return servicesDownAndNotInGroup().size() + missingServices == 0;
}
@Override
- public int percentageOfServicesDown() {
- int numberOfServicesDown = servicesDownAndNotInGroup.size() + missingServices + servicesDownInGroup.size();
+ public int percentageOfServicesDownOutsideGroup() {
+ int numberOfServicesDown = servicesDownAndNotInGroup().size() + missingServices;
return numberOfServicesDown * 100 / (serviceCluster.serviceInstances().size() + missingServices);
}
@Override
public int percentageOfServicesDownIfGroupIsAllowedToBeDown() {
- int numberOfServicesDown = servicesDownAndNotInGroup.size() + missingServices + servicesInGroup.size();
+ int numberOfServicesDown = servicesDownAndNotInGroup().size() + missingServices + servicesInGroup.size();
return numberOfServicesDown * 100 / (serviceCluster.serviceInstances().size() + missingServices);
}
@@ -186,15 +196,14 @@ class ClusterApiImpl implements ClusterApi {
description.append(" ");
final int nodeLimit = 3;
- description.append("Suspended hosts: ");
description.append(suspended.stream().sorted().distinct().limit(nodeLimit).collect(Collectors.toList()).toString());
if (suspended.size() > nodeLimit) {
- description.append(", and " + (suspended.size() - nodeLimit) + " more");
+ description.append(" and " + (suspended.size() - nodeLimit) + " others");
}
- description.append(".");
+ description.append(" are suspended.");
}
- Set<ServiceInstance> downElsewhere = servicesDownAndNotInGroup.stream()
+ Set<ServiceInstance> downElsewhere = servicesDownAndNotInGroup().stream()
.filter(serviceInstance -> !suspended.contains(serviceInstance.hostName()))
.collect(Collectors.toSet());
@@ -203,7 +212,6 @@ class ClusterApiImpl implements ClusterApi {
description.append(" ");
final int serviceLimit = 2; // services info is verbose
- description.append("Services down on resumed hosts: ");
description.append(Stream.concat(
downElsewhere.stream().map(ServiceInstance::toString).sorted(),
missingServices > 0 ? Stream.of(descriptionOfMissingServices) : Stream.of())
@@ -212,9 +220,9 @@ class ClusterApiImpl implements ClusterApi {
.toString());
if (downElsewhereTotal > serviceLimit) {
- description.append(", and " + (downElsewhereTotal - serviceLimit) + " more");
+ description.append(" and " + (downElsewhereTotal - serviceLimit) + " others");
}
- description.append(".");
+ description.append(" are down.");
}
return description.toString();
@@ -274,19 +282,31 @@ class ClusterApiImpl implements ClusterApi {
return "{ clusterId=" + clusterId() + ", serviceType=" + serviceType() + " }";
}
+ private Set<ServiceInstance> servicesDownAndNotInGroup() {
+ if (servicesDownAndNotInGroup == null) {
+ servicesDownAndNotInGroup = servicesNotInGroup.stream().filter(this::serviceEffectivelyDown).collect(Collectors.toSet());
+ }
+ return servicesDownAndNotInGroup;
+ }
+
private HostStatus hostStatus(HostName hostName) {
return hostInfos.getOrNoRemarks(hostName).status();
}
- private boolean serviceEffectivelyDown(ServiceInstance service) {
+ private boolean serviceEffectivelyDown(ServiceInstance service) throws HostStateChangeDeniedException {
if (hostStatus(service.hostName()).isSuspended()) {
return true;
}
- if (service.serviceStatus() == ServiceStatus.DOWN) {
- return true;
+ switch (service.serviceStatus()) {
+ case DOWN: return true;
+ case UNKNOWN:
+ throw new HostStateChangeDeniedException(
+ nodeGroup,
+ HostedVespaPolicy.UNKNOWN_SERVICE_STATUS,
+ "Service status of " + service.descriptiveName() + " is not yet known");
+ default:
+ return false;
}
-
- return false;
}
}
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/NodeGroup.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/NodeGroup.java
index 74b4b534acc..c4bcb48a6a6 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/NodeGroup.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/NodeGroup.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.model;
import com.yahoo.vespa.applicationmodel.ApplicationInstance;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/StorageNode.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/StorageNode.java
index a54d829a029..863c817fe6f 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/StorageNode.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/StorageNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.model;
import com.yahoo.vespa.applicationmodel.HostName;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/StorageNodeImpl.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/StorageNodeImpl.java
index 72033e41192..fc790089517 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/StorageNodeImpl.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/StorageNodeImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.model;
import com.google.common.util.concurrent.UncheckedTimeoutException;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/VespaModelUtil.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/VespaModelUtil.java
index 9274fd48cb9..a869a3e84b0 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/VespaModelUtil.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/VespaModelUtil.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.model;
import com.yahoo.config.provision.ApplicationId;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/package-info.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/package-info.java
index c7a00322e67..6d5a0d7fd3e 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/package-info.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.orchestrator;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/ApplicationParams.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/ApplicationParams.java
new file mode 100644
index 00000000000..f148e9107e4
--- /dev/null
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/ApplicationParams.java
@@ -0,0 +1,68 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.orchestrator.policy;
+
+import com.yahoo.vespa.applicationmodel.ClusterId;
+import com.yahoo.vespa.applicationmodel.ServiceCluster;
+import com.yahoo.vespa.applicationmodel.ServiceClusterKey;
+import com.yahoo.vespa.applicationmodel.ServiceType;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * Per-application parameters controlling the orchestration.
+ *
+ * @author hakonhall
+ */
+public class ApplicationParams {
+
+ private static final ApplicationParams DEFAULT = new ApplicationParams.Builder().build();
+
+ private final Map<ServiceClusterKey, ClusterParams> clusterParams;
+
+ public static class Builder {
+ private final Map<ServiceClusterKey, ClusterParams> clusterParams = new HashMap<>();
+
+ public Builder() {}
+
+ public Builder add(ClusterId clusterId, ServiceType serviceType, ClusterParams clusterParams) {
+ this.clusterParams.put(new ServiceClusterKey(clusterId, serviceType), clusterParams);
+ return this;
+ }
+
+ public ApplicationParams build() {
+ return new ApplicationParams(clusterParams);
+ }
+ }
+
+ public static ApplicationParams getDefault() {
+ return DEFAULT;
+ }
+
+ private ApplicationParams(Map<ServiceClusterKey, ClusterParams> clusterParams) {
+ this.clusterParams = Map.copyOf(clusterParams);
+ }
+
+ public ClusterParams clusterParamsFor(ServiceCluster serviceCluster) {
+ return clusterParamsFor(serviceCluster.clusterId(), serviceCluster.serviceType());
+ }
+
+ public ClusterParams clusterParamsFor(ClusterId clusterId, ServiceType serviceType) {
+ var key = new ServiceClusterKey(clusterId, serviceType);
+ return clusterParams.getOrDefault(key, ClusterParams.getDefault());
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ApplicationParams that = (ApplicationParams) o;
+ return clusterParams.equals(that.clusterParams);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(clusterParams);
+ }
+}
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/BatchHostStateChangeDeniedException.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/BatchHostStateChangeDeniedException.java
index ec8ec302dca..652fb5b2143 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/BatchHostStateChangeDeniedException.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/BatchHostStateChangeDeniedException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.policy;
import com.yahoo.vespa.applicationmodel.HostName;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/ClusterParams.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/ClusterParams.java
new file mode 100644
index 00000000000..ab010da50ad
--- /dev/null
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/ClusterParams.java
@@ -0,0 +1,61 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.orchestrator.policy;
+
+import java.util.Objects;
+import java.util.OptionalInt;
+
+/**
+ * Parameters controlling orchestration of a particular service cluster of an implied application.
+ *
+ * @author hakonhall
+ */
+public class ClusterParams {
+
+ private static final ClusterParams DEFAULT = new ClusterParams.Builder().build();
+
+ private final int size;
+
+ public static class Builder {
+ private int size = 0;
+
+ public Builder() {}
+
+ public Builder setSize(int size) {
+ this.size = size;
+ return this;
+ }
+
+ public ClusterParams build() {
+ return new ClusterParams(size);
+ }
+ }
+
+ public static ClusterParams getDefault() {
+ return DEFAULT;
+ }
+
+ private ClusterParams(int size) {
+ this.size = size;
+ }
+
+ /**
+ * The expected and ideal number of members of the cluster: Count missing services as down,
+ * and expected to be added to the application soon.
+ */
+ public OptionalInt size() {
+ return size > 0 ? OptionalInt.of(size) : OptionalInt.empty();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ClusterParams that = (ClusterParams) o;
+ return size == that.size;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(size);
+ }
+}
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/ClusterPolicy.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/ClusterPolicy.java
index a0738b725ec..e0c0758ee2c 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/ClusterPolicy.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/ClusterPolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.policy;
import com.yahoo.vespa.orchestrator.model.ClusterApi;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/ConcurrentSuspensionLimitForCluster.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/ConcurrentSuspensionLimitForCluster.java
index ce90d5d96e1..66c9a853259 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/ConcurrentSuspensionLimitForCluster.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/ConcurrentSuspensionLimitForCluster.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.policy;
/**
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostStateChangeDeniedException.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostStateChangeDeniedException.java
index a6b3cbc87dc..9c14522ed7d 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostStateChangeDeniedException.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostStateChangeDeniedException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.policy;
import com.yahoo.vespa.applicationmodel.HostName;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaClusterPolicy.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaClusterPolicy.java
index e3989fd86d4..8193974c35a 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaClusterPolicy.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaClusterPolicy.java
@@ -1,13 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.policy;
import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.applicationmodel.ClusterId;
import com.yahoo.vespa.applicationmodel.ServiceType;
-import com.yahoo.vespa.flags.BooleanFlag;
-import com.yahoo.vespa.flags.FetchVector;
import com.yahoo.vespa.flags.FlagSource;
-import com.yahoo.vespa.flags.Flags;
import com.yahoo.vespa.orchestrator.model.ClusterApi;
import com.yahoo.vespa.orchestrator.model.VespaModelUtil;
@@ -18,182 +15,135 @@ import static com.yahoo.vespa.orchestrator.policy.HostedVespaPolicy.ENOUGH_SERVI
public class HostedVespaClusterPolicy implements ClusterPolicy {
- private final BooleanFlag groupSuspensionFlag;
private final Zone zone;
public HostedVespaClusterPolicy(FlagSource flagSource, Zone zone) {
- // Note that the "group" in this flag refers to hierarchical groups of a content cluster.
- this.groupSuspensionFlag = Flags.GROUP_SUSPENSION.bindTo(flagSource);
this.zone = zone;
}
@Override
public SuspensionReasons verifyGroupGoingDownIsFine(ClusterApi clusterApi) throws HostStateChangeDeniedException {
- boolean enableContentGroupSuspension = groupSuspensionFlag
- .with(FetchVector.Dimension.APPLICATION_ID, clusterApi.getApplication().applicationId().serializedForm())
- .value();
+ return verifyGroupGoingDownIsFine(clusterApi, false);
+ }
+
+ @Override
+ public void verifyGroupGoingDownPermanentlyIsFine(ClusterApi clusterApi) throws HostStateChangeDeniedException {
+ verifyGroupGoingDownIsFine(clusterApi, true);
+ }
+ private SuspensionReasons verifyGroupGoingDownIsFine(ClusterApi clusterApi, boolean permanent)
+ throws HostStateChangeDeniedException {
if (clusterApi.noServicesOutsideGroupIsDown()) {
return SuspensionReasons.nothingNoteworthy();
}
- int percentageOfServicesAllowedToBeDown = getConcurrentSuspensionLimit(clusterApi, enableContentGroupSuspension).asPercentage();
+ int percentageOfServicesAllowedToBeDown = getConcurrentSuspensionLimit(clusterApi).asPercentage();
if (clusterApi.percentageOfServicesDownIfGroupIsAllowedToBeDown() <= percentageOfServicesAllowedToBeDown) {
return SuspensionReasons.nothingNoteworthy();
}
- Optional<SuspensionReasons> suspensionReasons = clusterApi.reasonsForNoServicesInGroupIsUp();
- if (suspensionReasons.isPresent()) {
- return suspensionReasons.get();
+ // Be a bit more cautious when removing nodes permanently
+ if (!permanent) {
+ // Disallow suspending a 2nd and downed config server to avoid losing ZK quorum.
+ if (!clusterApi.isConfigServerLike()) {
+ Optional<SuspensionReasons> suspensionReasons = clusterApi.allServicesDown();
+ if (suspensionReasons.isPresent()) {
+ return suspensionReasons.get();
+ }
+ }
}
String message = percentageOfServicesAllowedToBeDown <= 0
- ? "Suspension of service with type '" + clusterApi.serviceType() + "' not allowed: "
- + clusterApi.percentageOfServicesDown() + "% are suspended already." + clusterApi.downDescription()
- : "Suspension of service with type '" + clusterApi.serviceType()
- + "' would increase from " + clusterApi.percentageOfServicesDown()
- + "% to " + clusterApi.percentageOfServicesDownIfGroupIsAllowedToBeDown()
- + "%, over the limit of " + percentageOfServicesAllowedToBeDown + "%."
- + clusterApi.downDescription();
+ ? clusterApi.percentageOfServicesDownOutsideGroup() + "% of the " + clusterApi.serviceDescription(true)
+ + " are down or suspended already:" + clusterApi.downDescription()
+ : "The percentage of downed or suspended " + clusterApi.serviceDescription(true)
+ + " would increase from " + clusterApi.percentageOfServicesDownOutsideGroup() + "% to "
+ + clusterApi.percentageOfServicesDownIfGroupIsAllowedToBeDown() + "% (limit is "
+ + percentageOfServicesAllowedToBeDown + "%):" + clusterApi.downDescription();
throw new HostStateChangeDeniedException(clusterApi.getNodeGroup(), ENOUGH_SERVICES_UP_CONSTRAINT, message);
}
- @Override
- public void verifyGroupGoingDownPermanentlyIsFine(ClusterApi clusterApi) throws HostStateChangeDeniedException {
- // This policy is similar to verifyGroupGoingDownIsFine, except that services being down in the group
- // is no excuse to allow suspension (like it is for verifyGroupGoingDownIsFine), since if we grant
- // suspension in this case they will permanently be down/removed.
-
- if (clusterApi.noServicesOutsideGroupIsDown()) {
- return;
+ // Non-private for testing purposes
+ ConcurrentSuspensionLimitForCluster getConcurrentSuspensionLimit(ClusterApi clusterApi) {
+ // Possible service clusters on a node as of 2021-01-22:
+ //
+ // CLUSTER ID SERVICE TYPE HEALTH ASSOCIATION
+ // 1 CCN-controllers container-clustercontrollers Slobrok 1, 3, or 6 in content cluster
+ // 2 CCN distributor Slobrok content cluster
+ // 3 CCN storagenode Slobrok content cluster
+ // 4 CCN searchnode Slobrok content cluster
+ // 5 CCN transactionlogserver not checked content cluster
+ // 6 JCCN container Slobrok jdisc container cluster
+ // 7 admin slobrok not checked 1-3 in jdisc container cluster
+ // 8 metrics metricsproxy-container Slobrok application
+ // 9 admin logd not checked application
+ // 10 admin config-sentinel not checked application
+ // 11 admin configproxy not checked application
+ // 12 admin logforwarder not checked application
+ // 13 controller controller state/v1 controllers
+ // 14 zone-config-servers configserver state/v1 config servers
+ // 15 controller-host hostadmin state/v1 controller hosts
+ // 16 configserver-host hostadmin state/v1 config server hosts
+ // 17 tenant-host hostadmin state/v1 tenant hosts
+ // 18 proxy-host hostadmin state/v1 proxy hosts
+ //
+ // CCN refers to the content cluster's name, as specified in services.xml.
+ // JCCN refers to the jdisc container cluster's name, as specified in services.xml.
+ //
+ // For instance a content node will have 2-5 and 8-12 and possibly 1, while a combined
+ // cluster node may have all 1-12.
+ //
+ // The services on a node can be categorized into these main types, ref association column above:
+ // A content
+ // B container
+ // C tenant host
+ // D config server
+ // E config server host
+ // F controller
+ // G controller host
+ // H proxy (same as B)
+ // I proxy host
+
+ if (clusterApi.serviceType().equals(ServiceType.CLUSTER_CONTROLLER)) {
+ return ConcurrentSuspensionLimitForCluster.ONE_NODE;
}
- int percentageOfServicesAllowedToBeDown = getConcurrentSuspensionLimit(clusterApi, false).asPercentage();
- if (clusterApi.percentageOfServicesDownIfGroupIsAllowedToBeDown() <= percentageOfServicesAllowedToBeDown) {
- return;
+ if (Set.of(ServiceType.STORAGE, ServiceType.SEARCH, ServiceType.DISTRIBUTOR, ServiceType.TRANSACTION_LOG_SERVER)
+ .contains(clusterApi.serviceType())) {
+ // Delegate to the cluster controller
+ return ConcurrentSuspensionLimitForCluster.ALL_NODES;
}
- throw new HostStateChangeDeniedException(
- clusterApi.getNodeGroup(),
- ENOUGH_SERVICES_UP_CONSTRAINT,
- "Down percentage for service type " + clusterApi.serviceType()
- + " would increase to " + clusterApi.percentageOfServicesDownIfGroupIsAllowedToBeDown()
- + "%, over the limit of " + percentageOfServicesAllowedToBeDown + "%."
- + clusterApi.downDescription());
- }
-
- // Non-private for testing purposes
- ConcurrentSuspensionLimitForCluster getConcurrentSuspensionLimit(ClusterApi clusterApi, boolean enableContentGroupSuspension) {
- if (enableContentGroupSuspension) {
- // Possible service clusters on a node as of 2021-01-22:
- //
- // CLUSTER ID SERVICE TYPE HEALTH ASSOCIATION
- // 1 CCN-controllers container-clustercontrollers Slobrok 1, 3, or 6 in content cluster
- // 2 CCN distributor Slobrok content cluster
- // 3 CCN storagenode Slobrok content cluster
- // 4 CCN searchnode Slobrok content cluster
- // 5 CCN transactionlogserver not checked content cluster
- // 6 JCCN container Slobrok jdisc container cluster
- // 7 admin slobrok not checked 1-3 in jdisc container cluster
- // 8 metrics metricsproxy-container Slobrok application
- // 9 admin logd not checked application
- // 10 admin config-sentinel not checked application
- // 11 admin configproxy not checked application
- // 12 admin logforwarder not checked application
- // 13 controller controller state/v1 controllers
- // 14 zone-config-servers configserver state/v1 config servers
- // 15 controller-host hostadmin state/v1 controller hosts
- // 16 configserver-host hostadmin state/v1 config server hosts
- // 17 tenant-host hostadmin state/v1 tenant hosts
- // 18 proxy-host hostadmin state/v1 proxy hosts
- //
- // CCN refers to the content cluster's name, as specified in services.xml.
- // JCCN refers to the jdisc container cluster's name, as specified in services.xml.
- //
- // For instance a content node will have 2-5 and 8-12 and possibly 1, while a combined
- // cluster node may have all 1-12.
- //
- // The services on a node can be categorized into these main types, ref association column above:
- // A content
- // B container
- // C tenant host
- // D config server
- // E config server host
- // F controller
- // G controller host
- // H proxy (same as B)
- // I proxy host
-
- if (clusterApi.serviceType().equals(ServiceType.CLUSTER_CONTROLLER)) {
- return ConcurrentSuspensionLimitForCluster.ONE_NODE;
- }
-
- if (Set.of(ServiceType.STORAGE, ServiceType.SEARCH, ServiceType.DISTRIBUTOR, ServiceType.TRANSACTION_LOG_SERVER)
- .contains(clusterApi.serviceType())) {
- // Delegate to the cluster controller
- return ConcurrentSuspensionLimitForCluster.ALL_NODES;
- }
-
- if (clusterApi.serviceType().equals(ServiceType.CONTAINER)) {
- return ConcurrentSuspensionLimitForCluster.TEN_PERCENT;
- }
-
- if (VespaModelUtil.ADMIN_CLUSTER_ID.equals(clusterApi.clusterId())) {
- if (ServiceType.SLOBROK.equals(clusterApi.serviceType())) {
- return ConcurrentSuspensionLimitForCluster.ONE_NODE;
- }
-
- return ConcurrentSuspensionLimitForCluster.ALL_NODES;
- } else if (ServiceType.METRICS_PROXY.equals(clusterApi.serviceType())) {
- return ConcurrentSuspensionLimitForCluster.ALL_NODES;
- }
-
- if (Set.of(ServiceType.CONFIG_SERVER, ServiceType.CONTROLLER).contains(clusterApi.serviceType())) {
- return ConcurrentSuspensionLimitForCluster.ONE_NODE;
- }
-
- if (clusterApi.serviceType().equals(ServiceType.HOST_ADMIN)) {
- if (Set.of(ClusterId.CONFIG_SERVER_HOST, ClusterId.CONTROLLER_HOST).contains(clusterApi.clusterId())) {
- return ConcurrentSuspensionLimitForCluster.ONE_NODE;
- }
-
- return zone.system().isCd()
- ? ConcurrentSuspensionLimitForCluster.FIFTY_PERCENT
- : ConcurrentSuspensionLimitForCluster.TWENTY_PERCENT;
- }
-
- // The above should cover all cases, but if not we'll return a reasonable default:
+ if (clusterApi.serviceType().equals(ServiceType.CONTAINER)) {
return ConcurrentSuspensionLimitForCluster.TEN_PERCENT;
- } else {
- // TODO: Remove this legacy branch
- if (clusterApi.isStorageCluster()) {
- return ConcurrentSuspensionLimitForCluster.ONE_NODE;
- }
+ }
- if (ServiceType.CLUSTER_CONTROLLER.equals(clusterApi.serviceType())) {
+ if (VespaModelUtil.ADMIN_CLUSTER_ID.equals(clusterApi.clusterId())) {
+ if (ServiceType.SLOBROK.equals(clusterApi.serviceType())) {
return ConcurrentSuspensionLimitForCluster.ONE_NODE;
}
- if (ServiceType.METRICS_PROXY.equals(clusterApi.serviceType())) {
- return ConcurrentSuspensionLimitForCluster.ALL_NODES;
- }
-
- if (VespaModelUtil.ADMIN_CLUSTER_ID.equals(clusterApi.clusterId())) {
- if (ServiceType.SLOBROK.equals(clusterApi.serviceType())) {
- return ConcurrentSuspensionLimitForCluster.ONE_NODE;
- }
+ return ConcurrentSuspensionLimitForCluster.ALL_NODES;
+ } else if (ServiceType.METRICS_PROXY.equals(clusterApi.serviceType())) {
+ return ConcurrentSuspensionLimitForCluster.ALL_NODES;
+ }
- return ConcurrentSuspensionLimitForCluster.ALL_NODES;
- }
+ if (Set.of(ServiceType.CONFIG_SERVER, ServiceType.CONTROLLER).contains(clusterApi.serviceType())) {
+ return ConcurrentSuspensionLimitForCluster.ONE_NODE;
+ }
- if (clusterApi.getApplication().applicationId().equals(VespaModelUtil.TENANT_HOST_APPLICATION_ID)) {
- return zone.system().isCd()
- ? ConcurrentSuspensionLimitForCluster.FIFTY_PERCENT
- : ConcurrentSuspensionLimitForCluster.TWENTY_PERCENT;
+ if (clusterApi.serviceType().equals(ServiceType.HOST_ADMIN)) {
+ if (Set.of(ClusterId.CONFIG_SERVER_HOST, ClusterId.CONTROLLER_HOST).contains(clusterApi.clusterId())) {
+ return ConcurrentSuspensionLimitForCluster.ONE_NODE;
}
- return ConcurrentSuspensionLimitForCluster.TEN_PERCENT;
+ return zone.system().isCd()
+ ? ConcurrentSuspensionLimitForCluster.FIFTY_PERCENT
+ : ConcurrentSuspensionLimitForCluster.TWENTY_PERCENT;
}
+
+ // The above should cover all cases, but if not we'll return a reasonable default:
+ return ConcurrentSuspensionLimitForCluster.TEN_PERCENT;
}
}
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaOrchestration.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaOrchestration.java
new file mode 100644
index 00000000000..0028a5a252c
--- /dev/null
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaOrchestration.java
@@ -0,0 +1,95 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.orchestrator.policy;
+
+import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.vespa.applicationmodel.ClusterId;
+import com.yahoo.vespa.applicationmodel.ServiceType;
+
+/**
+ * Creates orchestration parameters for hosted Vespa.
+ *
+ * @author hakonhall
+ */
+public class HostedVespaOrchestration {
+ public static OrchestrationParams create(int numConfigServers, int numProxies) {
+ // We'll create parameters for both the controller and config server applications, even though
+ // only one of them is present, as (a) no harm is done by having the extra parameters, and
+ // (b) it leads to simpler code below.
+
+ return new OrchestrationParams.Builder()
+
+ // Controller host
+ .addApplicationParams(ApplicationId.fromSerializedForm("hosted-vespa:controller-host:default"),
+ new ApplicationParams
+ .Builder()
+ .add(ClusterId.CONTROLLER,
+ ServiceType.HOST_ADMIN,
+ new ClusterParams
+ .Builder()
+ .setSize(numConfigServers)
+ .build())
+ .build())
+
+ // Controller
+ .addApplicationParams(ApplicationId.fromSerializedForm("hosted-vespa:controller:default"),
+ new ApplicationParams
+ .Builder()
+ .add(ClusterId.CONTROLLER,
+ ServiceType.CONTROLLER,
+ new ClusterParams
+ .Builder()
+ .setSize(numConfigServers)
+ .build())
+ .build())
+
+ // Config server host
+ .addApplicationParams(ApplicationId.fromSerializedForm("hosted-vespa:configserver-host:default"),
+ new ApplicationParams
+ .Builder()
+ .add(ClusterId.CONFIG_SERVER_HOST,
+ ServiceType.HOST_ADMIN,
+ new ClusterParams
+ .Builder()
+ .setSize(numConfigServers)
+ .build())
+ .build())
+
+ // Config server
+ .addApplicationParams(ApplicationId.fromSerializedForm("hosted-vespa:zone-config-servers:default"),
+ new ApplicationParams
+ .Builder()
+ .add(ClusterId.CONFIG_SERVER,
+ ServiceType.CONFIG_SERVER,
+ new ClusterParams
+ .Builder()
+ .setSize(numConfigServers)
+ .build())
+ .build())
+
+ // Proxy host
+ .addApplicationParams(ApplicationId.fromSerializedForm("hosted-vespa:proxy-host:default"),
+ new ApplicationParams
+ .Builder()
+ .add(ClusterId.PROXY_HOST,
+ ServiceType.HOST_ADMIN,
+ new ClusterParams
+ .Builder()
+ .setSize(numProxies)
+ .build())
+ .build())
+
+ // Proxy
+ .addApplicationParams(ApplicationId.fromSerializedForm("hosted-vespa:routing:default"),
+ new ApplicationParams
+ .Builder()
+ .add(ClusterId.ROUTING,
+ ServiceType.CONTAINER,
+ new ClusterParams
+ .Builder()
+ .setSize(numProxies)
+ .build())
+ .build())
+
+ .build();
+ }
+}
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaPolicy.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaPolicy.java
index d9fc2a989de..2ce62081f51 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaPolicy.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/HostedVespaPolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.policy;
import com.yahoo.vespa.applicationmodel.ApplicationInstance;
@@ -22,6 +22,7 @@ public class HostedVespaPolicy implements Policy {
public static final String APPLICATION_SUSPENDED_CONSTRAINT = "application-suspended";
public static final String ENOUGH_SERVICES_UP_CONSTRAINT = "enough-services-up";
+ public static final String UNKNOWN_SERVICE_STATUS = "unknown-service-status";
public static final String SET_NODE_STATE_CONSTRAINT = "controller-set-node-state";
public static final String CLUSTER_CONTROLLER_AVAILABLE_CONSTRAINT = "controller-available";
public static final String DEADLINE_CONSTRAINT = "deadline";
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/OrchestrationParams.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/OrchestrationParams.java
new file mode 100644
index 00000000000..530f2dc8faf
--- /dev/null
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/OrchestrationParams.java
@@ -0,0 +1,53 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.orchestrator.policy;
+
+import com.yahoo.config.provision.ApplicationId;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * Parameters controlling orchestration.
+ *
+ * @author hakonhall
+ */
+public class OrchestrationParams {
+ private final Map<ApplicationId, ApplicationParams> applicationParams;
+
+ public static class Builder {
+ private final Map<ApplicationId, ApplicationParams> applicationParams = new HashMap<>();
+
+ public Builder() {}
+
+ public Builder addApplicationParams(ApplicationId applicationId, ApplicationParams params) {
+ this.applicationParams.put(applicationId, params);
+ return this;
+ }
+
+ public OrchestrationParams build() {
+ return new OrchestrationParams(applicationParams);
+ }
+ }
+
+ private OrchestrationParams(Map<ApplicationId, ApplicationParams> applicationParams) {
+ this.applicationParams = Map.copyOf(applicationParams);
+ }
+
+ public ApplicationParams getApplicationParams(ApplicationId applicationId) {
+ return applicationParams.getOrDefault(applicationId, ApplicationParams.getDefault());
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ OrchestrationParams that = (OrchestrationParams) o;
+ return applicationParams.equals(that.applicationParams);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(applicationParams);
+ }
+}
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/Policy.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/Policy.java
index 86538450782..43e6ef95d98 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/Policy.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/Policy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.policy;
import com.yahoo.vespa.applicationmodel.ApplicationInstance;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/SuspensionReasons.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/SuspensionReasons.java
index c043396497b..ba2b1c716d9 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/SuspensionReasons.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/SuspensionReasons.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.policy;
import com.yahoo.vespa.applicationmodel.HostName;
@@ -23,12 +23,19 @@ public class SuspensionReasons {
private final Map<HostName, List<String>> reasons = new HashMap<>();
public static SuspensionReasons nothingNoteworthy() { return new SuspensionReasons(); }
+
public static SuspensionReasons isDown(ServiceInstance service) {
return new SuspensionReasons().addReason(
service.hostName(),
service.descriptiveName() + " is down");
}
+ public static SuspensionReasons unknownStatus(ServiceInstance service) {
+ return new SuspensionReasons().addReason(
+ service.hostName(),
+ service.descriptiveName() + " has not yet been probed for health");
+ }
+
public static SuspensionReasons downSince(ServiceInstance service, Instant instant, Duration downDuration) {
return new SuspensionReasons().addReason(
service.hostName(),
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionRequestHandler.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionRequestHandler.java
index c706aed1143..012018f3889 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionRequestHandler.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.resources;
import com.google.inject.Inject;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/HealthRequestHandler.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/HealthRequestHandler.java
index b5e63786df9..bdfd2c16df2 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/HealthRequestHandler.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/HealthRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.resources;
import com.google.inject.Inject;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandler.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandler.java
index 4b8b295964a..c56866fdad6 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandler.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.resources;
import com.google.common.util.concurrent.UncheckedTimeoutException;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/HostSuspensionRequestHandler.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/HostSuspensionRequestHandler.java
index d2fdf70df19..33391e42a93 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/HostSuspensionRequestHandler.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/HostSuspensionRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.resources;
import com.google.common.util.concurrent.UncheckedTimeoutException;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandler.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandler.java
index 567013e7453..9dd69773595 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandler.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.resources;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceStatusResponse.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceStatusResponse.java
index 313c73e5c68..5766c344e32 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceStatusResponse.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/InstanceStatusResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.resources;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/ApplicationInstanceStatus.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/ApplicationInstanceStatus.java
index c0b366b4da0..6a8fb956e58 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/ApplicationInstanceStatus.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/ApplicationInstanceStatus.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.status;
/**
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/ApplicationLock.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/ApplicationLock.java
index 8883f78b693..6749ca387f8 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/ApplicationLock.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/ApplicationLock.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.status;
import com.yahoo.vespa.applicationmodel.ApplicationInstanceReference;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/HostInfosCache.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/HostInfosCache.java
index 7ee65ebcd0b..8c51607dd84 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/HostInfosCache.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/HostInfosCache.java
@@ -1,6 +1,7 @@
-// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.status;
+import com.yahoo.path.Path;
import com.yahoo.vespa.applicationmodel.ApplicationInstanceReference;
import com.yahoo.vespa.applicationmodel.HostName;
import com.yahoo.vespa.curator.Curator;
@@ -15,7 +16,7 @@ import java.util.concurrent.atomic.AtomicLong;
* @author hakonhall
*/
public class HostInfosCache implements HostInfosService {
- final static String HOST_STATUS_CACHE_COUNTER_PATH = "/vespa/host-status-service-cache-counter";
+ final static Path HOST_STATUS_CACHE_COUNTER_PATH = Path.fromString("/vespa/host-status-service-cache-counter");
private final CuratorCounter counter;
private final HostInfosService wrappedService;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/HostInfosServiceImpl.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/HostInfosServiceImpl.java
index 61c9624cd6e..54b3ec1d9a8 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/HostInfosServiceImpl.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/HostInfosServiceImpl.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.status;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/HostStatus.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/HostStatus.java
index 330e53f9586..f561aea2478 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/HostStatus.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/HostStatus.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.status;
/**
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/StatusService.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/StatusService.java
index f6d14f609ee..00ab1a964c8 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/StatusService.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/StatusService.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.status;
import com.google.common.util.concurrent.UncheckedTimeoutException;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/ZkApplicationLock.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/ZkApplicationLock.java
index 1a8105e682f..85e9829b8de 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/ZkApplicationLock.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/ZkApplicationLock.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.status;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/ZkStatusService.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/ZkStatusService.java
index 8902bf1641c..a29c186d30c 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/ZkStatusService.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/ZkStatusService.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.status;
import com.google.common.util.concurrent.UncheckedTimeoutException;
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/package-info.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/package-info.java
index 9bc46a6ff76..efa61e40eb2 100644
--- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/package-info.java
+++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/status/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.orchestrator.status;
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/DummyAntiServiceMonitor.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/DummyAntiServiceMonitor.java
index d22d99b5c9c..3dcdfd916b2 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/DummyAntiServiceMonitor.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/DummyAntiServiceMonitor.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator;
import com.yahoo.vespa.service.monitor.AntiServiceMonitor;
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/DummyServiceMonitor.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/DummyServiceMonitor.java
index 62d5e744938..757e6a1bf70 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/DummyServiceMonitor.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/DummyServiceMonitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator;
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorImplTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorImplTest.java
index 7d1b69d7171..3c5af5d1447 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorImplTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorImplTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator;
import com.yahoo.config.provision.ApplicationId;
@@ -81,7 +81,7 @@ public class OrchestratorImplTest {
private static final Zone zone = Zone.defaultZone();
private final ManualClock clock = new ManualClock();
- private final ApplicationApiFactory applicationApiFactory = new ApplicationApiFactory(3, clock);
+ private final ApplicationApiFactory applicationApiFactory = new ApplicationApiFactory(3, 5, clock);
private final InMemoryFlagSource flagSource = new InMemoryFlagSource();
private final MockCurator curator = new MockCurator();
private final ZkStatusService statusService = new ZkStatusService(
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorTest.java
index 193798d35fc..5951a3b0e21 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator;
import com.yahoo.config.model.api.SuperModel;
@@ -57,7 +57,7 @@ public class OrchestratorTest {
var flagSource = new InMemoryFlagSource();
var timer = new TestTimer();
var clustercontroller = new ClusterControllerClientFactoryMock();
- var applicationApiFactory = new ApplicationApiFactory(3, timer.toUtcClock());
+ var applicationApiFactory = new ApplicationApiFactory(3, 5, timer.toUtcClock());
var policy = new HostedVespaPolicy(new HostedVespaClusterPolicy(flagSource, zone), clustercontroller, applicationApiFactory);
var zone = new Zone(SystemName.cd, Environment.prod, RegionName.from("cd-us-east-1"));
this.superModelManager = new MySuperModelProvider();
@@ -102,7 +102,7 @@ public class OrchestratorTest {
fail();
} catch (HostStateChangeDeniedException e) {
assertThat(e.getMessage(), containsString("Changing the state of cfg2 would violate enough-services-up"));
- assertThat(e.getMessage(), containsString("Suspended hosts: [cfg1]"));
+ assertThat(e.getMessage(), containsString("[cfg1] are suspended."));
}
// cfg1 is removed from the application
@@ -114,7 +114,7 @@ public class OrchestratorTest {
fail();
} catch (HostStateChangeDeniedException e) {
assertThat(e.getMessage(), containsString("Changing the state of cfg2 would violate enough-services-up"));
- assertThat(e.getMessage(), containsString("Services down on resumed hosts: [1 missing config server]"));
+ assertThat(e.getMessage(), containsString("[1 missing config server] are down."));
}
// cfg1 is reprovisioned, added to the node repo, and activated
@@ -129,7 +129,7 @@ public class OrchestratorTest {
fail();
} catch (HostStateChangeDeniedException e) {
assertThat(e.getMessage(), containsString("Changing the state of cfg1 would violate enough-services-up"));
- assertThat(e.getMessage(), containsString("Suspended hosts: [cfg2]"));
+ assertThat(e.getMessage(), containsString("[cfg2] are suspended"));
}
// etc (should be the same as for cfg1)
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorUtilTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorUtilTest.java
index 76fbb5c9fe2..70381e99b97 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorUtilTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/OrchestratorUtilTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator;
import com.yahoo.config.provision.ApplicationId;
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/TestIds.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/TestIds.java
index 41e02d20a2a..3b65bb23782 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/TestIds.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/TestIds.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator;
import com.yahoo.vespa.applicationmodel.ApplicationInstanceId;
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/TestUtil.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/TestUtil.java
index dd27f899423..b246a5a724c 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/TestUtil.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/TestUtil.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator;
import com.yahoo.vespa.applicationmodel.ConfigId;
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientFactoryMock.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientFactoryMock.java
index 502e42481aa..fcd4c8404a3 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientFactoryMock.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientFactoryMock.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.controller;
import com.yahoo.vespa.applicationmodel.ApplicationInstance;
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientTest.java
index 1d3225a1d28..655b7921612 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/controller/ClusterControllerClientTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.controller;
import com.yahoo.vespa.jaxrs.client.JaxRsStrategy;
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ApplicationApiImplTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ApplicationApiImplTest.java
index c3e53b2f340..a3054703b61 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ApplicationApiImplTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ApplicationApiImplTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.model;
import com.yahoo.vespa.applicationmodel.ApplicationInstance;
@@ -165,9 +165,11 @@ public class ApplicationApiImplTest {
verifyNoRemarksConditionWith(HostStatus.NO_REMARKS, ServiceStatus.UP, true);
verifyNoRemarksConditionWith(HostStatus.NO_REMARKS, ServiceStatus.NOT_CHECKED, true);
verifyNoRemarksConditionWith(HostStatus.NO_REMARKS, ServiceStatus.DOWN, true);
+ verifyNoRemarksConditionWith(HostStatus.NO_REMARKS, ServiceStatus.UNKNOWN, true);
verifyNoRemarksConditionWith(HostStatus.ALLOWED_TO_BE_DOWN, ServiceStatus.UP, false);
verifyNoRemarksConditionWith(HostStatus.ALLOWED_TO_BE_DOWN, ServiceStatus.NOT_CHECKED, false);
verifyNoRemarksConditionWith(HostStatus.ALLOWED_TO_BE_DOWN, ServiceStatus.DOWN, false);
+ verifyNoRemarksConditionWith(HostStatus.ALLOWED_TO_BE_DOWN, ServiceStatus.UNKNOWN, false);
}
private void verifyNoRemarksConditionWith(HostStatus hostStatus, ServiceStatus serviceStatus, boolean expectUp) {
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ClusterApiImplTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ClusterApiImplTest.java
index 6bf46052933..babfa666577 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ClusterApiImplTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ClusterApiImplTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.model;
import com.yahoo.config.provision.Zone;
@@ -10,11 +10,12 @@ import com.yahoo.vespa.applicationmodel.ServiceInstance;
import com.yahoo.vespa.applicationmodel.ServiceStatus;
import com.yahoo.vespa.applicationmodel.ServiceStatusInfo;
import com.yahoo.vespa.applicationmodel.ServiceType;
-import com.yahoo.vespa.flags.Flags;
import com.yahoo.vespa.flags.InMemoryFlagSource;
import com.yahoo.vespa.orchestrator.OrchestratorUtil;
+import com.yahoo.vespa.orchestrator.policy.ClusterParams;
import com.yahoo.vespa.orchestrator.policy.HostStateChangeDeniedException;
import com.yahoo.vespa.orchestrator.policy.HostedVespaClusterPolicy;
+import com.yahoo.vespa.orchestrator.policy.HostedVespaPolicy;
import com.yahoo.vespa.orchestrator.policy.SuspensionReasons;
import com.yahoo.vespa.orchestrator.status.HostInfos;
import com.yahoo.vespa.orchestrator.status.HostStatus;
@@ -88,53 +89,105 @@ public class ClusterApiImplTest {
serviceCluster,
new NodeGroup(modelUtils.createApplicationInstance(new ArrayList<>()), hostName5),
modelUtils.getHostInfos(),
- modelUtils.getClusterControllerClientFactory(), ModelTestUtils.NUMBER_OF_CONFIG_SERVERS, clock);
+ modelUtils.getClusterControllerClientFactory(),
+ ModelTestUtils.APPLICATION_PARAMS.clusterParamsFor(serviceCluster),
+ clock);
assertEquals("{ clusterId=cluster, serviceType=service-type }", clusterApi.clusterInfo());
assertFalse(clusterApi.isStorageCluster());
- assertEquals(" Suspended hosts: [host3, host4]. Services down on resumed hosts: [" +
- "ServiceInstance{configId=service-2, hostName=host2, serviceStatus=" +
- "ServiceStatusInfo{status=DOWN, since=Optional.empty, lastChecked=Optional.empty}}].",
+ assertEquals(" [host3, host4] are suspended. [ServiceInstance{configId=service-2, hostName=host2, " +
+ "serviceStatus=ServiceStatusInfo{status=DOWN, since=Optional.empty, lastChecked=Optional.empty}}] " +
+ "are down.",
clusterApi.downDescription());
- assertEquals(60, clusterApi.percentageOfServicesDown());
+ assertEquals(60, clusterApi.percentageOfServicesDownOutsideGroup());
assertEquals(80, clusterApi.percentageOfServicesDownIfGroupIsAllowedToBeDown());
}
- /** Make a ClusterApiImpl for the cfg1 config server, with cfg3 missing from the cluster (not provisioned). */
- private ClusterApiImpl makeCfg1ClusterApi(ServiceStatus cfg1ServiceStatus, ServiceStatus cfg2ServiceStatus) {
- return makeConfigClusterApi(ModelTestUtils.NUMBER_OF_CONFIG_SERVERS, cfg1ServiceStatus, cfg2ServiceStatus);
+ @Test
+ public void testUnknownServiceStatusInGroup() throws HostStateChangeDeniedException {
+ ClusterApi clusterApi = makeClusterApiWithUnknownStatus(ServiceStatus.UNKNOWN, ServiceStatus.UP, ServiceStatus.UP);
+ clusterApi.noServicesOutsideGroupIsDown();
}
@Test
- public void testCfg1SuspensionFailsWithMissingCfg3() {
- ClusterApiImpl clusterApi = makeCfg1ClusterApi(ServiceStatus.UP, ServiceStatus.UP);
-
- HostedVespaClusterPolicy policy = new HostedVespaClusterPolicy(flagSource, zone);
+ public void testUnknownServiceStatusOutsideGroup() {
+ ClusterApi clusterApi = makeClusterApiWithUnknownStatus(ServiceStatus.UP, ServiceStatus.UNKNOWN, ServiceStatus.UP);
try {
- policy.verifyGroupGoingDownIsFine(clusterApi);
+ clusterApi.noServicesOutsideGroupIsDown();
fail();
} catch (HostStateChangeDeniedException e) {
- assertThat(e.getMessage(),
- containsString("Changing the state of cfg1 would violate enough-services-up: " +
- "Suspension of service with type 'configserver' not allowed: 33% are suspended already. " +
- "Services down on resumed hosts: [1 missing config server]."));
+ assertEquals(HostedVespaPolicy.UNKNOWN_SERVICE_STATUS, e.getConstraintName());
}
+ }
- flagSource.withBooleanFlag(Flags.GROUP_SUSPENSION.id(), true);
+ /** The first service status will be for the service IN the node group, the rest are OUTSIDE. */
+ private ClusterApi makeClusterApiWithUnknownStatus(ServiceStatus... statuses) {
+ var serviceStatusList = List.of(statuses);
+ var infraApplication = new ConfigServerApplication();
+
+ var hostnames = IntStream.rangeClosed(1, serviceStatusList.size())
+ .mapToObj(i -> new HostName("cfg" + i))
+ .collect(Collectors.toList());
+ var instances = new ArrayList<ServiceInstance>();
+ for (int i = 0; i < hostnames.size(); i++) {
+ instances.add(modelUtils.createServiceInstance("cs" + i + 1, hostnames.get(i), serviceStatusList.get(i)));
+ }
+
+ ServiceCluster serviceCluster = modelUtils.createServiceCluster(
+ infraApplication.getClusterId().s(),
+ infraApplication.getServiceType(),
+ instances
+ );
+ for (var instance : instances) {
+ instance.setServiceCluster(serviceCluster);
+ }
+
+ Set<ServiceCluster> serviceClusterSet = Set.of(serviceCluster);
+
+ ApplicationInstance application = new ApplicationInstance(
+ infraApplication.getTenantId(),
+ infraApplication.getApplicationInstanceId(Zone.defaultZone()),
+ serviceClusterSet);
+
+ serviceCluster.setApplicationInstance(application);
+
+ when(applicationApi.applicationId()).thenReturn(OrchestratorUtil.toApplicationId(application.reference()));
+
+ return new ClusterApiImpl(
+ applicationApi,
+ serviceCluster,
+ new NodeGroup(application, hostnames.get(0)),
+ modelUtils.getHostInfos(),
+ modelUtils.getClusterControllerClientFactory(),
+ new ClusterParams.Builder().setSize(serviceStatusList.size()).build(),
+ clock);
+ }
+
+ /** Make a ClusterApiImpl for the cfg1 config server, with cfg3 missing from the cluster (not provisioned). */
+ private ClusterApiImpl makeCfg1ClusterApi(ServiceStatus cfg1ServiceStatus, ServiceStatus cfg2ServiceStatus)
+ throws HostStateChangeDeniedException {
+ return makeConfigClusterApi(ModelTestUtils.NUMBER_OF_CONFIG_SERVERS, cfg1ServiceStatus, cfg2ServiceStatus);
+ }
+
+ @Test
+ public void testCfg1SuspensionFailsWithMissingCfg3() throws HostStateChangeDeniedException {
+ ClusterApiImpl clusterApi = makeCfg1ClusterApi(ServiceStatus.UP, ServiceStatus.UP);
+
+ HostedVespaClusterPolicy policy = new HostedVespaClusterPolicy(flagSource, zone);
try {
policy.verifyGroupGoingDownIsFine(clusterApi);
fail();
} catch (HostStateChangeDeniedException e) {
assertThat(e.getMessage(),
- containsString("Suspension of service with type 'configserver' not allowed: 33% are suspended already. " +
- "Services down on resumed hosts: [1 missing config server]."));
+ containsString("Changing the state of cfg1 would violate enough-services-up: 33% of the config " +
+ "servers are down or suspended already: [1 missing config server] are down."));
}
}
@Test
- public void testCfghost1SuspensionFailsWithMissingCfghost3() {
+ public void testCfghost1SuspensionFailsWithMissingCfghost3() throws HostStateChangeDeniedException {
ClusterApiImpl clusterApi = makeConfigClusterApi(
ModelTestUtils.NUMBER_OF_CONFIG_SERVERS,
new ConfigServerHostApplication(),
@@ -148,33 +201,28 @@ public class ClusterApiImplTest {
fail();
} catch (HostStateChangeDeniedException e) {
assertThat(e.getMessage(),
- containsString("Changing the state of cfg1 would violate enough-services-up: " +
- "Suspension of service with type 'hostadmin' not allowed: 33% are suspended already. " +
- "Services down on resumed hosts: [1 missing config server host]."));
+ containsString("Changing the state of cfg1 would violate enough-services-up: 33% of the config " +
+ "server hosts are down or suspended already: [1 missing config server host] are down."));
}
+ }
- flagSource.withBooleanFlag(Flags.GROUP_SUSPENSION.id(), true);
+ @Test
+ public void testCfg1DoesNotSuspendIfDownWithMissingCfg3() throws HostStateChangeDeniedException {
+ ClusterApiImpl clusterApi = makeCfg1ClusterApi(ServiceStatus.DOWN, ServiceStatus.UP);
+
+ HostedVespaClusterPolicy policy = new HostedVespaClusterPolicy(flagSource, zone);
try {
policy.verifyGroupGoingDownIsFine(clusterApi);
fail();
} catch (HostStateChangeDeniedException e) {
assertThat(e.getMessage(),
- containsString("Suspension of service with type 'hostadmin' not allowed: 33% are suspended already. " +
- "Services down on resumed hosts: [1 missing config server host]."));
+ containsString("Changing the state of cfg1 would violate enough-services-up: 33% of the config " +
+ "servers are down or suspended already: [1 missing config server] are down."));
}
}
@Test
- public void testCfg1SuspendsIfDownWithMissingCfg3() throws HostStateChangeDeniedException {
- ClusterApiImpl clusterApi = makeCfg1ClusterApi(ServiceStatus.DOWN, ServiceStatus.UP);
-
- HostedVespaClusterPolicy policy = new HostedVespaClusterPolicy(flagSource, zone);
-
- policy.verifyGroupGoingDownIsFine(clusterApi);
- }
-
- @Test
public void testCfghost1SuspendsIfDownWithMissingCfghost3() throws HostStateChangeDeniedException {
ClusterApiImpl clusterApi = makeConfigClusterApi(
ModelTestUtils.NUMBER_OF_CONFIG_SERVERS,
@@ -188,8 +236,8 @@ public class ClusterApiImplTest {
}
@Test
- public void testSingleConfigServerCanSuspend() {
- for (var status : EnumSet.of(ServiceStatus.UP, ServiceStatus.DOWN)) {
+ public void testSingleConfigServerCanSuspend() throws HostStateChangeDeniedException {
+ for (var status : EnumSet.of(ServiceStatus.UP, ServiceStatus.DOWN, ServiceStatus.UNKNOWN)) {
var clusterApi = makeConfigClusterApi(1, status);
var policy = new HostedVespaClusterPolicy(flagSource, zone);
try {
@@ -201,7 +249,7 @@ public class ClusterApiImplTest {
}
@Test
- public void testNoServices() {
+ public void testNoServices() throws HostStateChangeDeniedException {
HostName hostName1 = new HostName("host1");
HostName hostName2 = new HostName("host2");
HostName hostName3 = new HostName("host3");
@@ -268,16 +316,18 @@ public class ClusterApiImplTest {
private void verifyNoServices(ServiceCluster serviceCluster,
Optional<SuspensionReasons> expectedNoServicesInGroupIsUp,
boolean expectedNoServicesOutsideGroupIsDown,
- HostName... groupNodes) {
+ HostName... groupNodes) throws HostStateChangeDeniedException {
ClusterApiImpl clusterApi = new ClusterApiImpl(
applicationApi,
serviceCluster,
new NodeGroup(modelUtils.createApplicationInstance(new ArrayList<>()), groupNodes),
modelUtils.getHostInfos(),
- modelUtils.getClusterControllerClientFactory(), ModelTestUtils.NUMBER_OF_CONFIG_SERVERS, clock);
+ modelUtils.getClusterControllerClientFactory(),
+ ModelTestUtils.APPLICATION_PARAMS.clusterParamsFor(serviceCluster),
+ clock);
assertEquals(expectedNoServicesInGroupIsUp.map(SuspensionReasons::getMessagesInOrder),
- clusterApi.reasonsForNoServicesInGroupIsUp().map(SuspensionReasons::getMessagesInOrder));
+ clusterApi.allServicesDown().map(SuspensionReasons::getMessagesInOrder));
assertEquals(expectedNoServicesOutsideGroupIsDown, clusterApi.noServicesOutsideGroupIsDown());
}
@@ -305,18 +355,22 @@ public class ClusterApiImplTest {
serviceCluster,
new NodeGroup(applicationInstance, hostName1, hostName3),
new HostInfos(),
- modelUtils.getClusterControllerClientFactory(), ModelTestUtils.NUMBER_OF_CONFIG_SERVERS, clock);
+ modelUtils.getClusterControllerClientFactory(),
+ ModelTestUtils.APPLICATION_PARAMS.clusterParamsFor(serviceCluster),
+ clock);
assertTrue(clusterApi.isStorageCluster());
assertEquals(Optional.of(hostName1), clusterApi.storageNodeInGroup().map(storageNode -> storageNode.hostName()));
}
- private ClusterApiImpl makeConfigClusterApi(int clusterSize, ServiceStatus first, ServiceStatus... rest) {
+ private ClusterApiImpl makeConfigClusterApi(int clusterSize, ServiceStatus first, ServiceStatus... rest)
+ throws HostStateChangeDeniedException {
return makeConfigClusterApi(clusterSize, new ConfigServerApplication(), first, rest);
}
private ClusterApiImpl makeConfigClusterApi(int clusterSize, InfraApplication infraApplication,
- ServiceStatus first, ServiceStatus... rest) {
+ ServiceStatus first, ServiceStatus... rest)
+ throws HostStateChangeDeniedException {
var serviceStatusList = new ArrayList<ServiceStatus>();
serviceStatusList.add(first);
serviceStatusList.addAll(List.of(rest));
@@ -353,7 +407,9 @@ public class ClusterApiImplTest {
serviceCluster,
new NodeGroup(application, hostnames.get(0)),
modelUtils.getHostInfos(),
- modelUtils.getClusterControllerClientFactory(), clusterSize, clock);
+ modelUtils.getClusterControllerClientFactory(),
+ new ClusterParams.Builder().setSize(clusterSize).build(),
+ clock);
assertEquals(clusterSize - serviceStatusList.size(), clusterApi.missingServices());
assertEquals(clusterSize == serviceStatusList.size(), clusterApi.noServicesOutsideGroupIsDown());
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ModelTestUtils.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ModelTestUtils.java
index 7cb20350845..291f96e3dc3 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ModelTestUtils.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ModelTestUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.model;
import com.yahoo.config.provision.Zone;
@@ -24,10 +24,14 @@ import com.yahoo.vespa.orchestrator.OrchestrationException;
import com.yahoo.vespa.orchestrator.Orchestrator;
import com.yahoo.vespa.orchestrator.OrchestratorContext;
import com.yahoo.vespa.orchestrator.OrchestratorImpl;
+import com.yahoo.vespa.orchestrator.OrchestratorUtil;
import com.yahoo.vespa.orchestrator.controller.ClusterControllerClientFactory;
import com.yahoo.vespa.orchestrator.controller.ClusterControllerClientFactoryMock;
+import com.yahoo.vespa.orchestrator.policy.ApplicationParams;
import com.yahoo.vespa.orchestrator.policy.HostedVespaClusterPolicy;
+import com.yahoo.vespa.orchestrator.policy.HostedVespaOrchestration;
import com.yahoo.vespa.orchestrator.policy.HostedVespaPolicy;
+import com.yahoo.vespa.orchestrator.policy.OrchestrationParams;
import com.yahoo.vespa.orchestrator.status.ApplicationLock;
import com.yahoo.vespa.orchestrator.status.HostInfo;
import com.yahoo.vespa.orchestrator.status.HostInfos;
@@ -54,7 +58,17 @@ import static org.mockito.Mockito.mock;
*/
class ModelTestUtils {
+ private static final TenantId TENANT_ID = new TenantId("tenant");
+ private static final ApplicationInstanceId APPLICATION_INSTANCE_ID =
+ new ApplicationInstanceId("application-name:foo:bar:default");
+
public static final int NUMBER_OF_CONFIG_SERVERS = 3;
+ public static final int NUMBER_OF_PROXIES = 5;
+ public static final OrchestrationParams ORCHESTRATION_PARAMS =
+ HostedVespaOrchestration.create(NUMBER_OF_CONFIG_SERVERS, NUMBER_OF_PROXIES);
+ public static final ApplicationParams APPLICATION_PARAMS = ORCHESTRATION_PARAMS
+ .getApplicationParams(OrchestratorUtil.toApplicationId(
+ new ApplicationInstanceReference(TENANT_ID, APPLICATION_INSTANCE_ID)));
private final InMemoryFlagSource flagSource = new InMemoryFlagSource();
private final Map<ApplicationInstanceReference, ApplicationInstance> applications = new HashMap<>();
@@ -79,7 +93,7 @@ class ModelTestUtils {
private final ManualClock clock = new ManualClock();
ApplicationApiFactory applicationApiFactory() {
- return new ApplicationApiFactory(NUMBER_OF_CONFIG_SERVERS, clock);
+ return new ApplicationApiFactory(NUMBER_OF_CONFIG_SERVERS, NUMBER_OF_PROXIES, clock);
}
HostInfos getHostInfos() {
@@ -134,8 +148,8 @@ class ModelTestUtils {
Set<ServiceCluster> serviceClusterSet = new HashSet<>(serviceClusters);
ApplicationInstance application = new ApplicationInstance(
- new TenantId("tenant"),
- new ApplicationInstanceId("application-name:foo:bar:default"),
+ TENANT_ID,
+ APPLICATION_INSTANCE_ID,
serviceClusterSet);
applications.put(application.reference(), application);
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/NodeGroupTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/NodeGroupTest.java
index c0e012c63a2..2b31703e1f2 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/NodeGroupTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/NodeGroupTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.model;
import com.yahoo.vespa.applicationmodel.ApplicationInstance;
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ScopedApplicationApi.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ScopedApplicationApi.java
index 33e709248f3..c60234b9f09 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ScopedApplicationApi.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ScopedApplicationApi.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.model;
import com.yahoo.vespa.orchestrator.status.ApplicationLock;
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/VespaModelUtilTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/VespaModelUtilTest.java
index c34dddfa823..f5e5a7236fe 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/VespaModelUtilTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/VespaModelUtilTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.model;
import com.yahoo.vespa.applicationmodel.ApplicationInstance;
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/policy/HostedVespaClusterPolicyTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/policy/HostedVespaClusterPolicyTest.java
index a100b3efc52..eb70d809855 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/policy/HostedVespaClusterPolicyTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/policy/HostedVespaClusterPolicyTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.policy;
import com.yahoo.config.provision.ApplicationId;
@@ -20,6 +20,7 @@ import java.util.Optional;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
@@ -36,6 +37,25 @@ public class HostedVespaClusterPolicyTest {
public void setUp() {
when(clusterApi.getApplication()).thenReturn(applicationApi);
when(zone.system()).thenReturn(SystemName.main);
+
+ NodeGroup nodeGroup = mock(NodeGroup.class);
+ when(clusterApi.getNodeGroup()).thenReturn(nodeGroup);
+ when(nodeGroup.toCommaSeparatedString()).thenReturn("node-group");
+ }
+
+ @Test
+ public void testUnknownServiceStatus() throws HostStateChangeDeniedException {
+ doThrow(new HostStateChangeDeniedException(clusterApi.getNodeGroup(),
+ HostedVespaPolicy.UNKNOWN_SERVICE_STATUS,
+ "foo"))
+ .when(clusterApi).noServicesOutsideGroupIsDown();
+
+ try {
+ policy.verifyGroupGoingDownIsFine(clusterApi);
+ fail();
+ } catch (HostStateChangeDeniedException e) {
+ assertEquals(HostedVespaPolicy.UNKNOWN_SERVICE_STATUS, e.getConstraintName());
+ }
}
@Test
@@ -43,7 +63,7 @@ public class HostedVespaClusterPolicyTest {
when(clusterApi.clusterId()).thenReturn(VespaModelUtil.ADMIN_CLUSTER_ID);
when(clusterApi.serviceType()).thenReturn(ServiceType.SLOBROK);
assertEquals(ConcurrentSuspensionLimitForCluster.ONE_NODE,
- policy.getConcurrentSuspensionLimit(clusterApi, false));
+ policy.getConcurrentSuspensionLimit(clusterApi));
}
@Test
@@ -51,88 +71,77 @@ public class HostedVespaClusterPolicyTest {
when(clusterApi.clusterId()).thenReturn(VespaModelUtil.ADMIN_CLUSTER_ID);
when(clusterApi.serviceType()).thenReturn(new ServiceType("non-slobrok-service-type"));
assertEquals(ConcurrentSuspensionLimitForCluster.ALL_NODES,
- policy.getConcurrentSuspensionLimit(clusterApi, false));
+ policy.getConcurrentSuspensionLimit(clusterApi));
}
@Test
public void testStorageSuspensionLimit() {
when(clusterApi.serviceType()).thenReturn(ServiceType.STORAGE);
when(clusterApi.clusterId()).thenReturn(new ClusterId("some-cluster-id"));
- when(clusterApi.isStorageCluster()).thenReturn(true);
assertEquals(ConcurrentSuspensionLimitForCluster.ALL_NODES,
- policy.getConcurrentSuspensionLimit(clusterApi, true));
- }
-
- @Test
- public void testStorageSuspensionLimit_legacy() {
- when(clusterApi.clusterId()).thenReturn(new ClusterId("some-cluster-id"));
- when(clusterApi.isStorageCluster()).thenReturn(true);
- assertEquals(ConcurrentSuspensionLimitForCluster.ONE_NODE,
- policy.getConcurrentSuspensionLimit(clusterApi, false));
+ policy.getConcurrentSuspensionLimit(clusterApi));
}
@Test
public void testTenantHostSuspensionLimit() {
when(applicationApi.applicationId()).thenReturn(VespaModelUtil.TENANT_HOST_APPLICATION_ID);
- when(clusterApi.isStorageCluster()).thenReturn(false);
+ when(clusterApi.clusterId()).thenReturn(ClusterId.TENANT_HOST);
+ when(clusterApi.serviceType()).thenReturn(ServiceType.HOST_ADMIN);
assertEquals(ConcurrentSuspensionLimitForCluster.TWENTY_PERCENT,
- policy.getConcurrentSuspensionLimit(clusterApi, false));
+ policy.getConcurrentSuspensionLimit(clusterApi));
when(zone.system()).thenReturn(SystemName.cd);
assertEquals(ConcurrentSuspensionLimitForCluster.FIFTY_PERCENT,
- policy.getConcurrentSuspensionLimit(clusterApi, false));
+ policy.getConcurrentSuspensionLimit(clusterApi));
}
@Test
public void testDefaultSuspensionLimit() {
when(applicationApi.applicationId()).thenReturn(ApplicationId.fromSerializedForm("a:b:c"));
when(clusterApi.clusterId()).thenReturn(new ClusterId("some-cluster-id"));
- when(clusterApi.isStorageCluster()).thenReturn(false);
+ when(clusterApi.serviceType()).thenReturn(new ServiceType("some-service-type"));
assertEquals(ConcurrentSuspensionLimitForCluster.TEN_PERCENT,
- policy.getConcurrentSuspensionLimit(clusterApi, false));
+ policy.getConcurrentSuspensionLimit(clusterApi));
}
@Test
- public void verifyGroupGoingDownIsFine_noServicesOutsideGroupIsDownIsFine() {
+ public void verifyGroupGoingDownIsFine_noServicesOutsideGroupIsDownIsFine() throws HostStateChangeDeniedException {
verifyGroupGoingDownIsFine(true, Optional.empty(), 13, true);
}
@Test
- public void verifyGroupGoingDownIsFine_noServicesInGroupIsUp() {
+ public void verifyGroupGoingDownIsFine_noServicesInGroupIsUp() throws HostStateChangeDeniedException {
var reasons = new SuspensionReasons().addReason(new HostName("host1"), "supension reason 1");
verifyGroupGoingDownIsFine(false, Optional.of(reasons), 13, true);
}
@Test
- public void verifyGroupGoingDownIsFine_percentageIsFine() {
+ public void verifyGroupGoingDownIsFine_percentageIsFine() throws HostStateChangeDeniedException {
verifyGroupGoingDownIsFine(false, Optional.empty(), 9, true);
}
@Test
- public void verifyGroupGoingDownIsFine_fails() {
+ public void verifyGroupGoingDownIsFine_fails() throws HostStateChangeDeniedException {
verifyGroupGoingDownIsFine(false, Optional.empty(), 13, false);
}
private void verifyGroupGoingDownIsFine(boolean noServicesOutsideGroupIsDown,
Optional<SuspensionReasons> noServicesInGroupIsUp,
int percentageOfServicesDownIfGroupIsAllowedToBeDown,
- boolean expectSuccess) {
+ boolean expectSuccess) throws HostStateChangeDeniedException {
when(clusterApi.noServicesOutsideGroupIsDown()).thenReturn(noServicesOutsideGroupIsDown);
- when(clusterApi.reasonsForNoServicesInGroupIsUp()).thenReturn(noServicesInGroupIsUp);
+ when(clusterApi.allServicesDown()).thenReturn(noServicesInGroupIsUp);
when(clusterApi.percentageOfServicesDownIfGroupIsAllowedToBeDown()).thenReturn(20);
- doReturn(ConcurrentSuspensionLimitForCluster.TEN_PERCENT).when(policy).getConcurrentSuspensionLimit(clusterApi, false);
+ doReturn(ConcurrentSuspensionLimitForCluster.TEN_PERCENT).when(policy).getConcurrentSuspensionLimit(clusterApi);
when(applicationApi.applicationId()).thenReturn(ApplicationId.fromSerializedForm("a:b:c"));
when(clusterApi.serviceType()).thenReturn(new ServiceType("service-type"));
- when(clusterApi.percentageOfServicesDown()).thenReturn(5);
+ when(clusterApi.serviceDescription(true)).thenReturn("services of {service-type,cluster-id}");
+ when(clusterApi.percentageOfServicesDownOutsideGroup()).thenReturn(5);
when(clusterApi.percentageOfServicesDownIfGroupIsAllowedToBeDown()).thenReturn(percentageOfServicesDownIfGroupIsAllowedToBeDown);
when(clusterApi.downDescription()).thenReturn(" Down description");
- NodeGroup nodeGroup = mock(NodeGroup.class);
- when(clusterApi.getNodeGroup()).thenReturn(nodeGroup);
- when(nodeGroup.toCommaSeparatedString()).thenReturn("node-group");
-
try {
SuspensionReasons reasons = policy.verifyGroupGoingDownIsFine(clusterApi);
if (!expectSuccess) {
@@ -144,9 +153,10 @@ public class HostedVespaClusterPolicyTest {
}
} catch (HostStateChangeDeniedException e) {
if (!expectSuccess) {
- assertEquals("Changing the state of node-group would violate enough-services-up: " +
- "Suspension of service with type 'service-type' would increase from 5% to 13%, " +
- "over the limit of 10%. Down description", e.getMessage());
+ assertEquals("Changing the state of node-group would violate enough-services-up: The percentage of downed " +
+ "or suspended services of {service-type,cluster-id} would increase from 5% to 13% (limit is 10%): " +
+ "Down description",
+ e.getMessage());
assertEquals("enough-services-up", e.getConstraintName());
}
}
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/policy/HostedVespaPolicyTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/policy/HostedVespaPolicyTest.java
index 385f7b238af..f01ce5a2227 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/policy/HostedVespaPolicyTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/policy/HostedVespaPolicyTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.policy;
@@ -36,7 +36,7 @@ public class HostedVespaPolicyTest {
private final ClusterControllerClientFactory clientFactory = mock(ClusterControllerClientFactory.class);
private final ClusterControllerClient client = mock(ClusterControllerClient.class);
private final ManualClock clock = new ManualClock();
- private final ApplicationApiFactory applicationApiFactory = new ApplicationApiFactory(3, clock);
+ private final ApplicationApiFactory applicationApiFactory = new ApplicationApiFactory(3, 5, clock);
@Before
public void setUp() {
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/policy/SuspensionReasonsTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/policy/SuspensionReasonsTest.java
index 10290e5c814..51995df4f37 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/policy/SuspensionReasonsTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/policy/SuspensionReasonsTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.policy;
import com.yahoo.test.ManualClock;
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionRequestHandlerTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionRequestHandlerTest.java
index 76d00943e07..b32413273bb 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionRequestHandlerTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionRequestHandlerTest.java
@@ -1,4 +1,4 @@
-package com.yahoo.vespa.orchestrator.resources;// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.orchestrator.resources;// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.fasterxml.jackson.core.type.TypeReference;
import com.yahoo.cloud.config.ConfigserverConfig;
@@ -44,11 +44,9 @@ class ApplicationSuspensionRequestHandlerTest {
void createHandler() {
DummyServiceMonitor serviceMonitor = new DummyServiceMonitor();
Orchestrator orchestrator = new OrchestratorImpl(
- new ClusterControllerClientFactoryMock(),
+ new OrchestratorConfig(new OrchestratorConfig.Builder()), new ConfigserverConfig(new ConfigserverConfig.Builder()), new ClusterControllerClientFactoryMock(),
new ZkStatusService(new MockCurator(), new MockMetric(), new SystemTimer(), serviceMonitor),
- new OrchestratorConfig(new OrchestratorConfig.Builder()),
serviceMonitor,
- new ConfigserverConfig(new ConfigserverConfig.Builder()),
new InMemoryFlagSource(),
Zone.defaultZone());
var handler = new ApplicationSuspensionRequestHandler(RestApiTestDriver.createHandlerTestContext(), orchestrator);
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java
index f6dc6d7676c..ea7566f9d51 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.resources;
import com.google.common.util.concurrent.UncheckedTimeoutException;
@@ -79,7 +79,7 @@ class HostRequestHandlerTest {
private static final ServiceMonitor serviceMonitor = mock(ServiceMonitor.class);
private static final StatusService EVERY_HOST_IS_UP_HOST_STATUS_SERVICE = new ZkStatusService(
new MockCurator(), mock(Metric.class), new TestTimer(), new DummyAntiServiceMonitor());
- private static final ApplicationApiFactory applicationApiFactory = new ApplicationApiFactory(3, clock);
+ private static final ApplicationApiFactory applicationApiFactory = new ApplicationApiFactory(3, 5, clock);
static {
when(serviceMonitor.getApplication(any(HostName.class)))
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostSuspensionRequestHandlerTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostSuspensionRequestHandlerTest.java
index 3b12160e708..089a2dc8709 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostSuspensionRequestHandlerTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostSuspensionRequestHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.resources;
import com.google.common.util.concurrent.UncheckedTimeoutException;
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandlerTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandlerTest.java
index 0a2c73e831f..d8bc0a91b87 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandlerTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.resources;
import com.fasterxml.jackson.core.type.TypeReference;
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/status/InMemoryStatusService.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/status/InMemoryStatusService.java
index 834ee6ba7b2..07c8662f656 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/status/InMemoryStatusService.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/status/InMemoryStatusService.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.status;
import com.google.common.util.concurrent.UncheckedTimeoutException;
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/status/ZkStatusServiceTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/status/ZkStatusServiceTest.java
index fa53ff7f996..874b3d32325 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/status/ZkStatusServiceTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/status/ZkStatusServiceTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.orchestrator.status;
import com.yahoo.config.provision.ApplicationId;
diff --git a/parent/pom.xml b/parent/pom.xml
index 2a8527f80ea..f627e39d7d1 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>parent</artifactId>
@@ -315,11 +315,35 @@
</build>
</profile>
<profile>
+ <id>custom-javadoc</id>
+ <activation>
+ <file><exists>src/main/javadoc</exists></file>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ <configuration>
+ <classifier>javadoc</classifier>
+ <classesDirectory>${project.basedir}/src/main/javadoc</classesDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
<id>generate-javadoc</id>
<activation>
- <property>
- <name>!skipJavadoc</name>
- </property>
+ <file><missing>src/main/javadoc</missing></file>
</activation>
<build>
<plugins>
@@ -543,18 +567,6 @@
<version>${prometheus.client.version}</version>
</dependency>
<dependency>
- <!-- TODO: Try to remove, as this overlaps with javax.activation. -->
- <groupId>jakarta.activation</groupId>
- <artifactId>jakarta.activation-api</artifactId>
- <version>1.2.1</version>
- </dependency>
- <dependency>
- <!-- TODO: Try to remove, as this conflicts with javax.xml.bind:jaxb-api -->
- <groupId>jakarta.xml.bind</groupId>
- <artifactId>jakarta.xml.bind-api</artifactId>
- <version>2.3.2</version>
- </dependency>
- <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
@@ -587,7 +599,7 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
- <version>1.19</version>
+ <version>1.21</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
@@ -811,16 +823,6 @@
<version>${asm.version}</version>
</dependency>
<dependency>
- <groupId>org.tensorflow</groupId>
- <artifactId>proto</artifactId>
- <version>${tensorflow.version}</version>
- </dependency>
- <dependency>
- <groupId>org.tensorflow</groupId>
- <artifactId>tensorflow</artifactId>
- <version>${tensorflow.version}</version>
- </dependency>
- <dependency>
<groupId>org.twdata.maven</groupId>
<artifactId>mojo-executor</artifactId>
<version>2.3.0</version>
@@ -886,7 +888,6 @@
<protobuf.version>3.11.4</protobuf.version>
<spifly.version>1.3.3</spifly.version>
<surefire.version>2.22.0</surefire.version>
- <tensorflow.version>1.12.0</tensorflow.version>
<zookeeper.client.version>3.6.3</zookeeper.client.version>
<doclint>all</doclint>
diff --git a/persistence/CMakeLists.txt b/persistence/CMakeLists.txt
index bacbff891c9..48a1265f81d 100644
--- a/persistence/CMakeLists.txt
+++ b/persistence/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/persistence/src/Doxyfile b/persistence/src/Doxyfile
index 671dc341e73..0ae14d0acc1 100644
--- a/persistence/src/Doxyfile
+++ b/persistence/src/Doxyfile
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Doxyfile 1.2.18
# This file describes the settings to be used by the documentation system
diff --git a/persistence/src/tests/CMakeLists.txt b/persistence/src/tests/CMakeLists.txt
index 1f5c609dcc3..cc59217c372 100644
--- a/persistence/src/tests/CMakeLists.txt
+++ b/persistence/src/tests/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(persistence_testrunner_app TEST
SOURCES
testrunner.cpp
diff --git a/persistence/src/tests/dummyimpl/CMakeLists.txt b/persistence/src/tests/dummyimpl/CMakeLists.txt
index 0a8993dd8b3..713877885d6 100644
--- a/persistence/src/tests/dummyimpl/CMakeLists.txt
+++ b/persistence/src/tests/dummyimpl/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(persistence_dummyimpl_conformance_test_app TEST
SOURCES
dummyimpltest.cpp
diff --git a/persistence/src/tests/dummyimpl/dummyimpltest.cpp b/persistence/src/tests/dummyimpl/dummyimpltest.cpp
index 23e59892357..e2b07a03e2b 100644
--- a/persistence/src/tests/dummyimpl/dummyimpltest.cpp
+++ b/persistence/src/tests/dummyimpl/dummyimpltest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/persistence/conformancetest/conformancetest.h>
#include <vespa/persistence/dummyimpl/dummypersistence.h>
diff --git a/persistence/src/tests/dummyimpl/dummypersistence_test.cpp b/persistence/src/tests/dummyimpl/dummypersistence_test.cpp
index 4ca78181fb8..21cf7cb9ae3 100644
--- a/persistence/src/tests/dummyimpl/dummypersistence_test.cpp
+++ b/persistence/src/tests/dummyimpl/dummypersistence_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for dummypersistence.
#include <vespa/persistence/dummyimpl/dummypersistence.h>
diff --git a/persistence/src/tests/spi/CMakeLists.txt b/persistence/src/tests/spi/CMakeLists.txt
index 1a9a23bf112..6c9de03f6c0 100644
--- a/persistence/src/tests/spi/CMakeLists.txt
+++ b/persistence/src/tests/spi/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(persistence_testspi
SOURCES
clusterstatetest.cpp
diff --git a/persistence/src/tests/spi/clusterstatetest.cpp b/persistence/src/tests/spi/clusterstatetest.cpp
index 51131f5b187..8a303c1a1ac 100644
--- a/persistence/src/tests/spi/clusterstatetest.cpp
+++ b/persistence/src/tests/spi/clusterstatetest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/persistence/spi/test.h>
#include <vespa/persistence/dummyimpl/dummypersistence.h>
diff --git a/persistence/src/tests/testrunner.cpp b/persistence/src/tests/testrunner.cpp
index 0a46cc17ac6..7e7409b4cc3 100644
--- a/persistence/src/tests/testrunner.cpp
+++ b/persistence/src/tests/testrunner.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/persistence/src/vespa/persistence/CMakeLists.txt b/persistence/src/vespa/persistence/CMakeLists.txt
index 456c3f8f87f..b314354026c 100644
--- a/persistence/src/vespa/persistence/CMakeLists.txt
+++ b/persistence/src/vespa/persistence/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(persistence
SOURCES
$<TARGET_OBJECTS:persistence_dummyimpl>
diff --git a/persistence/src/vespa/persistence/conformancetest/CMakeLists.txt b/persistence/src/vespa/persistence/conformancetest/CMakeLists.txt
index 01d034840e8..96a8e6f4d72 100644
--- a/persistence/src/vespa/persistence/conformancetest/CMakeLists.txt
+++ b/persistence/src/vespa/persistence/conformancetest/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(persistence_conformancetest_lib OBJECT
SOURCES
conformancetest.cpp
diff --git a/persistence/src/vespa/persistence/conformancetest/conformancetest.cpp b/persistence/src/vespa/persistence/conformancetest/conformancetest.cpp
index 3e55a240184..c5f0e60a43a 100644
--- a/persistence/src/vespa/persistence/conformancetest/conformancetest.cpp
+++ b/persistence/src/vespa/persistence/conformancetest/conformancetest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/testdocman.h>
#include <vespa/persistence/conformancetest/conformancetest.h>
diff --git a/persistence/src/vespa/persistence/conformancetest/conformancetest.h b/persistence/src/vespa/persistence/conformancetest/conformancetest.h
index 19be63cf3cb..a55461bca80 100644
--- a/persistence/src/vespa/persistence/conformancetest/conformancetest.h
+++ b/persistence/src/vespa/persistence/conformancetest/conformancetest.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* This conformance test class has been created in order to run the same tests
* on multiple implementations of the persistence SPI.
diff --git a/persistence/src/vespa/persistence/dummyimpl/CMakeLists.txt b/persistence/src/vespa/persistence/dummyimpl/CMakeLists.txt
index ff730045070..b0c7143686a 100644
--- a/persistence/src/vespa/persistence/dummyimpl/CMakeLists.txt
+++ b/persistence/src/vespa/persistence/dummyimpl/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(persistence_dummyimpl OBJECT
SOURCES
dummypersistence.cpp
diff --git a/persistence/src/vespa/persistence/dummyimpl/dummy_bucket_executor.cpp b/persistence/src/vespa/persistence/dummyimpl/dummy_bucket_executor.cpp
index 2e929832718..3eda5146af1 100644
--- a/persistence/src/vespa/persistence/dummyimpl/dummy_bucket_executor.cpp
+++ b/persistence/src/vespa/persistence/dummyimpl/dummy_bucket_executor.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dummy_bucket_executor.h"
#include <vespa/vespalib/util/threadstackexecutor.h>
diff --git a/persistence/src/vespa/persistence/dummyimpl/dummy_bucket_executor.h b/persistence/src/vespa/persistence/dummyimpl/dummy_bucket_executor.h
index a3cf146a0f4..86b497437fe 100644
--- a/persistence/src/vespa/persistence/dummyimpl/dummy_bucket_executor.h
+++ b/persistence/src/vespa/persistence/dummyimpl/dummy_bucket_executor.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp b/persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp
index 305f1c81192..66f03edafa2 100644
--- a/persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp
+++ b/persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dummypersistence.h"
#include <vespa/document/select/parser.h>
diff --git a/persistence/src/vespa/persistence/dummyimpl/dummypersistence.h b/persistence/src/vespa/persistence/dummyimpl/dummypersistence.h
index ad50648abaf..486f4cec2f2 100644
--- a/persistence/src/vespa/persistence/dummyimpl/dummypersistence.h
+++ b/persistence/src/vespa/persistence/dummyimpl/dummypersistence.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::spi::dummy::DummyPersistence
* \ingroup dummy
diff --git a/persistence/src/vespa/persistence/spi/CMakeLists.txt b/persistence/src/vespa/persistence/spi/CMakeLists.txt
index c621b838371..14550ef97a6 100644
--- a/persistence/src/vespa/persistence/spi/CMakeLists.txt
+++ b/persistence/src/vespa/persistence/spi/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(persistence_spi OBJECT
SOURCES
abstractpersistenceprovider.cpp
diff --git a/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.cpp b/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.cpp
index 1d873e9a20e..23a8f600024 100644
--- a/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.cpp
+++ b/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "abstractpersistenceprovider.h"
#include <vespa/document/datatype/documenttype.h>
diff --git a/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.h b/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.h
index 016928ab10e..2332c05b57f 100644
--- a/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.h
+++ b/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "persistenceprovider.h"
diff --git a/persistence/src/vespa/persistence/spi/attribute_resource_usage.cpp b/persistence/src/vespa/persistence/spi/attribute_resource_usage.cpp
index 42979be6d86..a4235737392 100644
--- a/persistence/src/vespa/persistence/spi/attribute_resource_usage.cpp
+++ b/persistence/src/vespa/persistence/spi/attribute_resource_usage.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_resource_usage.h"
#include <iostream>
diff --git a/persistence/src/vespa/persistence/spi/attribute_resource_usage.h b/persistence/src/vespa/persistence/spi/attribute_resource_usage.h
index 02e0c248e3d..e0c19aaeda0 100644
--- a/persistence/src/vespa/persistence/spi/attribute_resource_usage.h
+++ b/persistence/src/vespa/persistence/spi/attribute_resource_usage.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -13,7 +13,7 @@ namespace storage::spi {
class AttributeResourceUsage
{
double _usage;
- vespalib::string _name; // document_type.subdb.attribute
+ vespalib::string _name; // document_type.subdb.attribute.component
public:
AttributeResourceUsage(double usage, const vespalib::string& name)
diff --git a/persistence/src/vespa/persistence/spi/bucket.cpp b/persistence/src/vespa/persistence/spi/bucket.cpp
index f7d4ec021d5..d179ad06ec5 100644
--- a/persistence/src/vespa/persistence/spi/bucket.cpp
+++ b/persistence/src/vespa/persistence/spi/bucket.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucket.h"
#include <ostream>
diff --git a/persistence/src/vespa/persistence/spi/bucket.h b/persistence/src/vespa/persistence/spi/bucket.h
index 507cc80ad76..5bdff936dcf 100644
--- a/persistence/src/vespa/persistence/spi/bucket.h
+++ b/persistence/src/vespa/persistence/spi/bucket.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::spi::Bucket
* \ingroup spi
diff --git a/persistence/src/vespa/persistence/spi/bucket_limits.h b/persistence/src/vespa/persistence/spi/bucket_limits.h
index 81c837da747..46b7d488169 100644
--- a/persistence/src/vespa/persistence/spi/bucket_limits.h
+++ b/persistence/src/vespa/persistence/spi/bucket_limits.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdint>
diff --git a/persistence/src/vespa/persistence/spi/bucket_tasks.h b/persistence/src/vespa/persistence/spi/bucket_tasks.h
index 9468dd09dc3..53857604fef 100644
--- a/persistence/src/vespa/persistence/spi/bucket_tasks.h
+++ b/persistence/src/vespa/persistence/spi/bucket_tasks.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/persistence/src/vespa/persistence/spi/bucketexecutor.h b/persistence/src/vespa/persistence/spi/bucketexecutor.h
index 350376be595..cefaf82114a 100644
--- a/persistence/src/vespa/persistence/spi/bucketexecutor.h
+++ b/persistence/src/vespa/persistence/spi/bucketexecutor.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/persistence/src/vespa/persistence/spi/bucketinfo.cpp b/persistence/src/vespa/persistence/spi/bucketinfo.cpp
index 5bef59a65f1..fa2643bb5c5 100644
--- a/persistence/src/vespa/persistence/spi/bucketinfo.cpp
+++ b/persistence/src/vespa/persistence/spi/bucketinfo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketinfo.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/persistence/src/vespa/persistence/spi/bucketinfo.h b/persistence/src/vespa/persistence/spi/bucketinfo.h
index 827aad48d7f..5759ceb2518 100644
--- a/persistence/src/vespa/persistence/spi/bucketinfo.h
+++ b/persistence/src/vespa/persistence/spi/bucketinfo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::spi::BucketInfo
* \ingroup spi
diff --git a/persistence/src/vespa/persistence/spi/clusterstate.cpp b/persistence/src/vespa/persistence/spi/clusterstate.cpp
index 03e3d3ee02f..4bc538996ca 100644
--- a/persistence/src/vespa/persistence/spi/clusterstate.cpp
+++ b/persistence/src/vespa/persistence/spi/clusterstate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "clusterstate.h"
#include "bucket.h"
diff --git a/persistence/src/vespa/persistence/spi/clusterstate.h b/persistence/src/vespa/persistence/spi/clusterstate.h
index 1333c44ec51..8e48758e243 100644
--- a/persistence/src/vespa/persistence/spi/clusterstate.h
+++ b/persistence/src/vespa/persistence/spi/clusterstate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/persistence/src/vespa/persistence/spi/context.cpp b/persistence/src/vespa/persistence/spi/context.cpp
index 80f5f05c59b..561a0cbfc68 100644
--- a/persistence/src/vespa/persistence/spi/context.cpp
+++ b/persistence/src/vespa/persistence/spi/context.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "context.h"
diff --git a/persistence/src/vespa/persistence/spi/context.h b/persistence/src/vespa/persistence/spi/context.h
index 1fd7805b471..b832d9b7af7 100644
--- a/persistence/src/vespa/persistence/spi/context.h
+++ b/persistence/src/vespa/persistence/spi/context.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* The context object is used to pass optional per operation data down to the
* persistence layer. It contains the following:
diff --git a/persistence/src/vespa/persistence/spi/docentry.cpp b/persistence/src/vespa/persistence/spi/docentry.cpp
index f46be6f3a25..8669bbf666b 100644
--- a/persistence/src/vespa/persistence/spi/docentry.cpp
+++ b/persistence/src/vespa/persistence/spi/docentry.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "docentry.h"
#include <vespa/document/fieldvalue/document.h>
diff --git a/persistence/src/vespa/persistence/spi/docentry.h b/persistence/src/vespa/persistence/spi/docentry.h
index aa9bf20a7f9..3374ef6c02d 100644
--- a/persistence/src/vespa/persistence/spi/docentry.h
+++ b/persistence/src/vespa/persistence/spi/docentry.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::spi::DocEntry
* \ingroup spi
diff --git a/persistence/src/vespa/persistence/spi/documentselection.h b/persistence/src/vespa/persistence/spi/documentselection.h
index eeea1f6c2bc..47f195c536c 100644
--- a/persistence/src/vespa/persistence/spi/documentselection.h
+++ b/persistence/src/vespa/persistence/spi/documentselection.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::spi::DocumentSelection
* \ingroup spi
diff --git a/persistence/src/vespa/persistence/spi/exceptions.cpp b/persistence/src/vespa/persistence/spi/exceptions.cpp
index d17c0f90ca0..7dcc829695c 100644
--- a/persistence/src/vespa/persistence/spi/exceptions.cpp
+++ b/persistence/src/vespa/persistence/spi/exceptions.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "exceptions.h"
diff --git a/persistence/src/vespa/persistence/spi/exceptions.h b/persistence/src/vespa/persistence/spi/exceptions.h
index 8ac9c3765f0..8eca1fdb1c5 100644
--- a/persistence/src/vespa/persistence/spi/exceptions.h
+++ b/persistence/src/vespa/persistence/spi/exceptions.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/exception.h>
diff --git a/persistence/src/vespa/persistence/spi/i_resource_usage_listener.h b/persistence/src/vespa/persistence/spi/i_resource_usage_listener.h
index 72f6f8fbc59..d6fe6af862b 100644
--- a/persistence/src/vespa/persistence/spi/i_resource_usage_listener.h
+++ b/persistence/src/vespa/persistence/spi/i_resource_usage_listener.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/persistence/src/vespa/persistence/spi/operationcomplete.h b/persistence/src/vespa/persistence/spi/operationcomplete.h
index 5a9b8d258df..fd6b846b2a4 100644
--- a/persistence/src/vespa/persistence/spi/operationcomplete.h
+++ b/persistence/src/vespa/persistence/spi/operationcomplete.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/persistence/src/vespa/persistence/spi/persistenceprovider.cpp b/persistence/src/vespa/persistence/spi/persistenceprovider.cpp
index 38fcd2fd072..9d40a494ca6 100644
--- a/persistence/src/vespa/persistence/spi/persistenceprovider.cpp
+++ b/persistence/src/vespa/persistence/spi/persistenceprovider.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "persistenceprovider.h"
#include <future>
diff --git a/persistence/src/vespa/persistence/spi/persistenceprovider.h b/persistence/src/vespa/persistence/spi/persistenceprovider.h
index 81a9484e98c..56ef21b5c77 100644
--- a/persistence/src/vespa/persistence/spi/persistenceprovider.h
+++ b/persistence/src/vespa/persistence/spi/persistenceprovider.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bucket.h"
diff --git a/persistence/src/vespa/persistence/spi/read_consistency.cpp b/persistence/src/vespa/persistence/spi/read_consistency.cpp
index c3b55e5a261..557f4532ff1 100644
--- a/persistence/src/vespa/persistence/spi/read_consistency.cpp
+++ b/persistence/src/vespa/persistence/spi/read_consistency.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "read_consistency.h"
#include <ostream>
diff --git a/persistence/src/vespa/persistence/spi/read_consistency.h b/persistence/src/vespa/persistence/spi/read_consistency.h
index d90c43af407..74713628f70 100644
--- a/persistence/src/vespa/persistence/spi/read_consistency.h
+++ b/persistence/src/vespa/persistence/spi/read_consistency.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <iosfwd>
diff --git a/persistence/src/vespa/persistence/spi/resource_usage.cpp b/persistence/src/vespa/persistence/spi/resource_usage.cpp
index 517a45a3d41..a55155db8a4 100644
--- a/persistence/src/vespa/persistence/spi/resource_usage.cpp
+++ b/persistence/src/vespa/persistence/spi/resource_usage.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "resource_usage.h"
#include <iostream>
@@ -21,8 +21,7 @@ std::ostream& operator<<(std::ostream& out, const ResourceUsage& resource_usage)
{
out << "{disk_usage=" << resource_usage.get_disk_usage() <<
", memory_usage=" << resource_usage.get_memory_usage() <<
- ", attribute_enum_store_usage=" << resource_usage.get_attribute_enum_store_usage() <<
- ", attribute_multivalue_usage=" << resource_usage.get_attribute_multivalue_usage() << "}";
+ ", attribute_address_space_usage=" << resource_usage.get_attribute_address_space_usage() << "}";
return out;
}
diff --git a/persistence/src/vespa/persistence/spi/resource_usage.h b/persistence/src/vespa/persistence/spi/resource_usage.h
index 921da8bbf06..6e0fefaca9b 100644
--- a/persistence/src/vespa/persistence/spi/resource_usage.h
+++ b/persistence/src/vespa/persistence/spi/resource_usage.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -14,21 +14,20 @@ class ResourceUsage
{
double _disk_usage;
double _memory_usage;
- AttributeResourceUsage _attribute_enum_store_usage;
- AttributeResourceUsage _attribute_multivalue_usage;
+ AttributeResourceUsage _attribute_address_space_usage;
public:
- ResourceUsage(double disk_usage, double memory_usage, const AttributeResourceUsage &attribute_enum_store_usage, const AttributeResourceUsage &attribute_multivalue_usage)
+ ResourceUsage(double disk_usage, double memory_usage,
+ const AttributeResourceUsage &attribute_address_space_usage)
: _disk_usage(disk_usage),
_memory_usage(memory_usage),
- _attribute_enum_store_usage(attribute_enum_store_usage),
- _attribute_multivalue_usage(attribute_multivalue_usage)
+ _attribute_address_space_usage(attribute_address_space_usage)
{
}
ResourceUsage(double disk_usage, double memory_usage)
- : ResourceUsage(disk_usage, memory_usage, AttributeResourceUsage(), AttributeResourceUsage())
+ : ResourceUsage(disk_usage, memory_usage, AttributeResourceUsage())
{
}
@@ -49,14 +48,12 @@ public:
double get_disk_usage() const noexcept { return _disk_usage; }
double get_memory_usage() const noexcept { return _memory_usage; }
- const AttributeResourceUsage& get_attribute_enum_store_usage() const noexcept { return _attribute_enum_store_usage; }
- const AttributeResourceUsage& get_attribute_multivalue_usage() const noexcept { return _attribute_multivalue_usage; }
+ const AttributeResourceUsage& get_attribute_address_space_usage() const noexcept { return _attribute_address_space_usage; }
bool operator==(const ResourceUsage &rhs) const noexcept {
return ((_disk_usage == rhs._disk_usage) &&
(_memory_usage == rhs._memory_usage) &&
- (_attribute_enum_store_usage == rhs._attribute_enum_store_usage) &&
- (_attribute_multivalue_usage == rhs._attribute_multivalue_usage));
+ (_attribute_address_space_usage == rhs._attribute_address_space_usage));
}
bool operator!=(const ResourceUsage &rhs) const noexcept {
return !operator==(rhs);
diff --git a/persistence/src/vespa/persistence/spi/resource_usage_listener.cpp b/persistence/src/vespa/persistence/spi/resource_usage_listener.cpp
index 3ad3fa7182c..b998fb2dfbe 100644
--- a/persistence/src/vespa/persistence/spi/resource_usage_listener.cpp
+++ b/persistence/src/vespa/persistence/spi/resource_usage_listener.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "resource_usage_listener.h"
#include <vespa/vespalib/util/idestructorcallback.h>
diff --git a/persistence/src/vespa/persistence/spi/resource_usage_listener.h b/persistence/src/vespa/persistence/spi/resource_usage_listener.h
index 9b1e54c7302..62c289450e6 100644
--- a/persistence/src/vespa/persistence/spi/resource_usage_listener.h
+++ b/persistence/src/vespa/persistence/spi/resource_usage_listener.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/persistence/src/vespa/persistence/spi/result.cpp b/persistence/src/vespa/persistence/spi/result.cpp
index ccfbd36d630..2e24c9c2f91 100644
--- a/persistence/src/vespa/persistence/spi/result.cpp
+++ b/persistence/src/vespa/persistence/spi/result.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "result.h"
#include <vespa/document/fieldvalue/document.h>
diff --git a/persistence/src/vespa/persistence/spi/result.h b/persistence/src/vespa/persistence/spi/result.h
index 35203d41540..4ec323c6b47 100644
--- a/persistence/src/vespa/persistence/spi/result.h
+++ b/persistence/src/vespa/persistence/spi/result.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bucketinfo.h"
diff --git a/persistence/src/vespa/persistence/spi/selection.cpp b/persistence/src/vespa/persistence/spi/selection.cpp
index c7ed98b9d92..a6ee4786545 100644
--- a/persistence/src/vespa/persistence/spi/selection.cpp
+++ b/persistence/src/vespa/persistence/spi/selection.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "selection.h"
diff --git a/persistence/src/vespa/persistence/spi/selection.h b/persistence/src/vespa/persistence/spi/selection.h
index 744af849c83..d4c7df8972f 100644
--- a/persistence/src/vespa/persistence/spi/selection.h
+++ b/persistence/src/vespa/persistence/spi/selection.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::spi::Selection
* \ingroup spi
diff --git a/persistence/src/vespa/persistence/spi/test.cpp b/persistence/src/vespa/persistence/spi/test.cpp
index a94cda96f2a..32381110630 100644
--- a/persistence/src/vespa/persistence/spi/test.cpp
+++ b/persistence/src/vespa/persistence/spi/test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "test.h"
#include <vespa/document/test/make_bucket_space.h>
diff --git a/persistence/src/vespa/persistence/spi/test.h b/persistence/src/vespa/persistence/spi/test.h
index 5cc92ee4397..af7109ec80c 100644
--- a/persistence/src/vespa/persistence/spi/test.h
+++ b/persistence/src/vespa/persistence/spi/test.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/persistencetypes/CMakeLists.txt b/persistencetypes/CMakeLists.txt
index 486786b30b9..a41f8eb6661 100644
--- a/persistencetypes/CMakeLists.txt
+++ b/persistencetypes/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/persistencetypes/src/persistence/CMakeLists.txt b/persistencetypes/src/persistence/CMakeLists.txt
index da012ed684a..2ea62581c4e 100644
--- a/persistencetypes/src/persistence/CMakeLists.txt
+++ b/persistencetypes/src/persistence/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(persistencetypes
SOURCES
$<TARGET_OBJECTS:persistencetypes_spi>
diff --git a/persistencetypes/src/persistence/spi/CMakeLists.txt b/persistencetypes/src/persistence/spi/CMakeLists.txt
index aaab19214c0..5a5f335ef40 100644
--- a/persistencetypes/src/persistence/spi/CMakeLists.txt
+++ b/persistencetypes/src/persistence/spi/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(persistencetypes_spi OBJECT
SOURCES
types.cpp
diff --git a/persistencetypes/src/persistence/spi/types.cpp b/persistencetypes/src/persistence/spi/types.cpp
index d7054e28249..260355213d9 100644
--- a/persistencetypes/src/persistence/spi/types.cpp
+++ b/persistencetypes/src/persistence/spi/types.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "types.h"
#include <vespa/vespalib/objects/nbostream.h>
diff --git a/persistencetypes/src/persistence/spi/types.h b/persistencetypes/src/persistence/spi/types.h
index de6aa304af0..a75b977c14a 100644
--- a/persistencetypes/src/persistence/spi/types.h
+++ b/persistencetypes/src/persistence/spi/types.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/pom.xml b/pom.xml
index d4569f2039f..72e34510a57 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.yahoo.vespa</groupId>
@@ -66,7 +66,6 @@
<module>container-search</module>
<module>container-search-gui</module>
<module>container-test</module>
- <module>container-test-jars</module>
<module>controller-api</module>
<module>controller-server</module>
<module>defaults</module>
@@ -84,7 +83,6 @@
<module>hosted-api</module>
<module>hosted-tenant-base</module>
<module>hosted-zone-api</module>
- <module>http-utils</module>
<module>indexinglanguage</module>
<module>jaxrs_client_utils</module>
<module>jaxrs_utils</module>
@@ -95,6 +93,7 @@
<module>jdisc_jetty</module>
<module>jrt</module>
<module>linguistics</module>
+ <module>linguistics-components</module>
<module>logd</module>
<module>logserver</module>
<module>messagebus</module>
@@ -149,5 +148,10 @@
<module>zookeeper-command-line-client</module>
<module>zookeeper-server</module>
</modules>
-</project>
+ <properties>
+ <maven.deploy.skip>true</maven.deploy.skip>
+ <maven.javadoc.skip>true</maven.javadoc.skip>
+ </properties>
+
+</project>
diff --git a/predicate-search-core/README.md b/predicate-search-core/README.md
index 8241f342076..e46ee23eac3 100644
--- a/predicate-search-core/README.md
+++ b/predicate-search-core/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# API classes for boolean/predicate search
* Contains Java code for parsing and representing boolean predicates.
diff --git a/predicate-search-core/pom.xml b/predicate-search-core/pom.xml
index 0707c7ef064..08354fd5826 100644
--- a/predicate-search-core/pom.xml
+++ b/predicate-search-core/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/predicate-search-core/src/main/antlr3/com/yahoo/document/predicate/parser/Predicate.g b/predicate-search-core/src/main/antlr3/com/yahoo/document/predicate/parser/Predicate.g
index 1123d3904a8..5e4a5823a4b 100644
--- a/predicate-search-core/src/main/antlr3/com/yahoo/document/predicate/parser/Predicate.g
+++ b/predicate-search-core/src/main/antlr3/com/yahoo/document/predicate/parser/Predicate.g
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
grammar Predicate;
@header {
diff --git a/predicate-search-core/src/main/java/com/yahoo/document/predicate/BinaryFormat.java b/predicate-search-core/src/main/java/com/yahoo/document/predicate/BinaryFormat.java
index 848306260ab..ae2a660c2ca 100644
--- a/predicate-search-core/src/main/java/com/yahoo/document/predicate/BinaryFormat.java
+++ b/predicate-search-core/src/main/java/com/yahoo/document/predicate/BinaryFormat.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import com.yahoo.slime.Cursor;
diff --git a/predicate-search-core/src/main/java/com/yahoo/document/predicate/BooleanPredicate.java b/predicate-search-core/src/main/java/com/yahoo/document/predicate/BooleanPredicate.java
index 4fe5675b03b..19f6df2bf97 100644
--- a/predicate-search-core/src/main/java/com/yahoo/document/predicate/BooleanPredicate.java
+++ b/predicate-search-core/src/main/java/com/yahoo/document/predicate/BooleanPredicate.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
/**
diff --git a/predicate-search-core/src/main/java/com/yahoo/document/predicate/Conjunction.java b/predicate-search-core/src/main/java/com/yahoo/document/predicate/Conjunction.java
index bfd2122dd69..49ed3be8060 100644
--- a/predicate-search-core/src/main/java/com/yahoo/document/predicate/Conjunction.java
+++ b/predicate-search-core/src/main/java/com/yahoo/document/predicate/Conjunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import java.util.ArrayList;
diff --git a/predicate-search-core/src/main/java/com/yahoo/document/predicate/Disjunction.java b/predicate-search-core/src/main/java/com/yahoo/document/predicate/Disjunction.java
index a21a1ab897f..c5404c0c309 100644
--- a/predicate-search-core/src/main/java/com/yahoo/document/predicate/Disjunction.java
+++ b/predicate-search-core/src/main/java/com/yahoo/document/predicate/Disjunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import java.util.ArrayList;
diff --git a/predicate-search-core/src/main/java/com/yahoo/document/predicate/FeatureConjunction.java b/predicate-search-core/src/main/java/com/yahoo/document/predicate/FeatureConjunction.java
index 8e5fdfe379f..15ead262b0f 100644
--- a/predicate-search-core/src/main/java/com/yahoo/document/predicate/FeatureConjunction.java
+++ b/predicate-search-core/src/main/java/com/yahoo/document/predicate/FeatureConjunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import java.util.ArrayList;
diff --git a/predicate-search-core/src/main/java/com/yahoo/document/predicate/FeatureRange.java b/predicate-search-core/src/main/java/com/yahoo/document/predicate/FeatureRange.java
index e1a2d931ffd..496e84fd4a5 100644
--- a/predicate-search-core/src/main/java/com/yahoo/document/predicate/FeatureRange.java
+++ b/predicate-search-core/src/main/java/com/yahoo/document/predicate/FeatureRange.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import java.util.ArrayList;
diff --git a/predicate-search-core/src/main/java/com/yahoo/document/predicate/FeatureSet.java b/predicate-search-core/src/main/java/com/yahoo/document/predicate/FeatureSet.java
index b82cf46f2ec..76f70bbc1fe 100644
--- a/predicate-search-core/src/main/java/com/yahoo/document/predicate/FeatureSet.java
+++ b/predicate-search-core/src/main/java/com/yahoo/document/predicate/FeatureSet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import java.util.Arrays;
diff --git a/predicate-search-core/src/main/java/com/yahoo/document/predicate/Negation.java b/predicate-search-core/src/main/java/com/yahoo/document/predicate/Negation.java
index ec63c442329..f106e8c8eef 100644
--- a/predicate-search-core/src/main/java/com/yahoo/document/predicate/Negation.java
+++ b/predicate-search-core/src/main/java/com/yahoo/document/predicate/Negation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import java.util.List;
diff --git a/predicate-search-core/src/main/java/com/yahoo/document/predicate/Predicate.java b/predicate-search-core/src/main/java/com/yahoo/document/predicate/Predicate.java
index 3c2a6ec2a2b..c15e5415abf 100644
--- a/predicate-search-core/src/main/java/com/yahoo/document/predicate/Predicate.java
+++ b/predicate-search-core/src/main/java/com/yahoo/document/predicate/Predicate.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import com.yahoo.document.predicate.parser.PredicateLexer;
diff --git a/predicate-search-core/src/main/java/com/yahoo/document/predicate/PredicateHash.java b/predicate-search-core/src/main/java/com/yahoo/document/predicate/PredicateHash.java
index d096c3e68c1..3eba062931d 100644
--- a/predicate-search-core/src/main/java/com/yahoo/document/predicate/PredicateHash.java
+++ b/predicate-search-core/src/main/java/com/yahoo/document/predicate/PredicateHash.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import com.yahoo.text.Utf8;
diff --git a/predicate-search-core/src/main/java/com/yahoo/document/predicate/PredicateOperator.java b/predicate-search-core/src/main/java/com/yahoo/document/predicate/PredicateOperator.java
index 791324b1df4..ca8c39c8317 100644
--- a/predicate-search-core/src/main/java/com/yahoo/document/predicate/PredicateOperator.java
+++ b/predicate-search-core/src/main/java/com/yahoo/document/predicate/PredicateOperator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import java.util.List;
diff --git a/predicate-search-core/src/main/java/com/yahoo/document/predicate/PredicateValue.java b/predicate-search-core/src/main/java/com/yahoo/document/predicate/PredicateValue.java
index 607eef86273..a48c138cd77 100644
--- a/predicate-search-core/src/main/java/com/yahoo/document/predicate/PredicateValue.java
+++ b/predicate-search-core/src/main/java/com/yahoo/document/predicate/PredicateValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
/**
diff --git a/predicate-search-core/src/main/java/com/yahoo/document/predicate/Predicates.java b/predicate-search-core/src/main/java/com/yahoo/document/predicate/Predicates.java
index 7ff681e4aad..452f3cf4c3b 100644
--- a/predicate-search-core/src/main/java/com/yahoo/document/predicate/Predicates.java
+++ b/predicate-search-core/src/main/java/com/yahoo/document/predicate/Predicates.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
/**
diff --git a/predicate-search-core/src/main/java/com/yahoo/document/predicate/RangeEdgePartition.java b/predicate-search-core/src/main/java/com/yahoo/document/predicate/RangeEdgePartition.java
index 19d74b8cc89..e02926150bd 100644
--- a/predicate-search-core/src/main/java/com/yahoo/document/predicate/RangeEdgePartition.java
+++ b/predicate-search-core/src/main/java/com/yahoo/document/predicate/RangeEdgePartition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
/**
diff --git a/predicate-search-core/src/main/java/com/yahoo/document/predicate/RangePartition.java b/predicate-search-core/src/main/java/com/yahoo/document/predicate/RangePartition.java
index 026ebfd7fbe..fcb7c00d097 100644
--- a/predicate-search-core/src/main/java/com/yahoo/document/predicate/RangePartition.java
+++ b/predicate-search-core/src/main/java/com/yahoo/document/predicate/RangePartition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
/**
diff --git a/predicate-search-core/src/main/java/com/yahoo/document/predicate/SimplePredicates.java b/predicate-search-core/src/main/java/com/yahoo/document/predicate/SimplePredicates.java
index 3f69cae13f5..4e319810e60 100644
--- a/predicate-search-core/src/main/java/com/yahoo/document/predicate/SimplePredicates.java
+++ b/predicate-search-core/src/main/java/com/yahoo/document/predicate/SimplePredicates.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import java.util.ArrayList;
diff --git a/predicate-search-core/src/main/java/com/yahoo/document/predicate/package-info.java b/predicate-search-core/src/main/java/com/yahoo/document/predicate/package-info.java
index 2216f96eb7f..9f250c3dc0c 100644
--- a/predicate-search-core/src/main/java/com/yahoo/document/predicate/package-info.java
+++ b/predicate-search-core/src/main/java/com/yahoo/document/predicate/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@com.yahoo.osgi.annotation.ExportPackage
@com.yahoo.api.annotations.PublicApi
/*
diff --git a/predicate-search-core/src/main/java/com/yahoo/search/predicate/PredicateQueryParser.java b/predicate-search-core/src/main/java/com/yahoo/search/predicate/PredicateQueryParser.java
index d10892cd44f..29b38be839a 100644
--- a/predicate-search-core/src/main/java/com/yahoo/search/predicate/PredicateQueryParser.java
+++ b/predicate-search-core/src/main/java/com/yahoo/search/predicate/PredicateQueryParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate;
import com.fasterxml.jackson.core.JsonFactory;
diff --git a/predicate-search-core/src/main/java/com/yahoo/search/predicate/SubqueryBitmap.java b/predicate-search-core/src/main/java/com/yahoo/search/predicate/SubqueryBitmap.java
index d6ca4971329..a59ae589685 100644
--- a/predicate-search-core/src/main/java/com/yahoo/search/predicate/SubqueryBitmap.java
+++ b/predicate-search-core/src/main/java/com/yahoo/search/predicate/SubqueryBitmap.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate;
/**
diff --git a/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/AndOrSimplifier.java b/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/AndOrSimplifier.java
index bcb5ce1ba05..0e01f41a4b1 100644
--- a/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/AndOrSimplifier.java
+++ b/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/AndOrSimplifier.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.optimization;
import com.yahoo.document.predicate.Conjunction;
diff --git a/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/BooleanSimplifier.java b/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/BooleanSimplifier.java
index e209aa725c1..8cb9603df4d 100644
--- a/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/BooleanSimplifier.java
+++ b/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/BooleanSimplifier.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.optimization;
import com.yahoo.document.predicate.BooleanPredicate;
diff --git a/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/ComplexNodeTransformer.java b/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/ComplexNodeTransformer.java
index 98021c71ae8..94ec054b359 100644
--- a/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/ComplexNodeTransformer.java
+++ b/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/ComplexNodeTransformer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.optimization;
import com.yahoo.document.predicate.FeatureRange;
diff --git a/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/NotNodeReorderer.java b/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/NotNodeReorderer.java
index 5b4301d4b72..58e65e91d20 100644
--- a/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/NotNodeReorderer.java
+++ b/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/NotNodeReorderer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.optimization;
import com.yahoo.document.predicate.Conjunction;
diff --git a/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/OrSimplifier.java b/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/OrSimplifier.java
index 23458dfca56..0215ed63d73 100644
--- a/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/OrSimplifier.java
+++ b/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/OrSimplifier.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.optimization;
import com.yahoo.document.predicate.Conjunction;
diff --git a/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/PredicateOptions.java b/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/PredicateOptions.java
index a270b1f5122..15c498077d6 100644
--- a/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/PredicateOptions.java
+++ b/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/PredicateOptions.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.optimization;
import java.util.OptionalLong;
diff --git a/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/PredicateProcessor.java b/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/PredicateProcessor.java
index b327ae820e6..2358ae733e5 100644
--- a/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/PredicateProcessor.java
+++ b/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/PredicateProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.optimization;
import com.yahoo.document.predicate.Predicate;
diff --git a/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/package-info.java b/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/package-info.java
index d025fe8d81b..6fbf3658192 100644
--- a/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/package-info.java
+++ b/predicate-search-core/src/main/java/com/yahoo/search/predicate/optimization/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@com.yahoo.osgi.annotation.ExportPackage
package com.yahoo.search.predicate.optimization;
diff --git a/predicate-search-core/src/main/java/com/yahoo/search/predicate/package-info.java b/predicate-search-core/src/main/java/com/yahoo/search/predicate/package-info.java
index f671e1f5cbc..b24120b4595 100644
--- a/predicate-search-core/src/main/java/com/yahoo/search/predicate/package-info.java
+++ b/predicate-search-core/src/main/java/com/yahoo/search/predicate/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@com.yahoo.osgi.annotation.ExportPackage
package com.yahoo.search.predicate;
diff --git a/predicate-search-core/src/test/java/com/yahoo/document/predicate/BinaryFormatTest.java b/predicate-search-core/src/test/java/com/yahoo/document/predicate/BinaryFormatTest.java
index 230b22b4ff5..c37d6b246a5 100644
--- a/predicate-search-core/src/test/java/com/yahoo/document/predicate/BinaryFormatTest.java
+++ b/predicate-search-core/src/test/java/com/yahoo/document/predicate/BinaryFormatTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import com.yahoo.slime.Inspector;
diff --git a/predicate-search-core/src/test/java/com/yahoo/document/predicate/BooleanPredicateTest.java b/predicate-search-core/src/test/java/com/yahoo/document/predicate/BooleanPredicateTest.java
index 46acbc921d7..92c45520504 100644
--- a/predicate-search-core/src/test/java/com/yahoo/document/predicate/BooleanPredicateTest.java
+++ b/predicate-search-core/src/test/java/com/yahoo/document/predicate/BooleanPredicateTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import org.junit.Test;
diff --git a/predicate-search-core/src/test/java/com/yahoo/document/predicate/ConjunctionTest.java b/predicate-search-core/src/test/java/com/yahoo/document/predicate/ConjunctionTest.java
index 4397fc39c8a..cbcab2917e5 100644
--- a/predicate-search-core/src/test/java/com/yahoo/document/predicate/ConjunctionTest.java
+++ b/predicate-search-core/src/test/java/com/yahoo/document/predicate/ConjunctionTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import org.junit.Test;
diff --git a/predicate-search-core/src/test/java/com/yahoo/document/predicate/DisjunctionTest.java b/predicate-search-core/src/test/java/com/yahoo/document/predicate/DisjunctionTest.java
index 4a3804dbfa9..1dab0dd80a2 100644
--- a/predicate-search-core/src/test/java/com/yahoo/document/predicate/DisjunctionTest.java
+++ b/predicate-search-core/src/test/java/com/yahoo/document/predicate/DisjunctionTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import org.junit.Test;
diff --git a/predicate-search-core/src/test/java/com/yahoo/document/predicate/FeatureConjunctionTest.java b/predicate-search-core/src/test/java/com/yahoo/document/predicate/FeatureConjunctionTest.java
index 378a9c07a8b..059022f87e8 100644
--- a/predicate-search-core/src/test/java/com/yahoo/document/predicate/FeatureConjunctionTest.java
+++ b/predicate-search-core/src/test/java/com/yahoo/document/predicate/FeatureConjunctionTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import org.junit.Test;
diff --git a/predicate-search-core/src/test/java/com/yahoo/document/predicate/FeatureRangeTest.java b/predicate-search-core/src/test/java/com/yahoo/document/predicate/FeatureRangeTest.java
index 581ce5cdccf..0951ae3bbc6 100644
--- a/predicate-search-core/src/test/java/com/yahoo/document/predicate/FeatureRangeTest.java
+++ b/predicate-search-core/src/test/java/com/yahoo/document/predicate/FeatureRangeTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import org.junit.Test;
diff --git a/predicate-search-core/src/test/java/com/yahoo/document/predicate/FeatureSetTest.java b/predicate-search-core/src/test/java/com/yahoo/document/predicate/FeatureSetTest.java
index baed1223a7f..e0ed8da13c8 100644
--- a/predicate-search-core/src/test/java/com/yahoo/document/predicate/FeatureSetTest.java
+++ b/predicate-search-core/src/test/java/com/yahoo/document/predicate/FeatureSetTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import org.junit.Test;
diff --git a/predicate-search-core/src/test/java/com/yahoo/document/predicate/NegationTest.java b/predicate-search-core/src/test/java/com/yahoo/document/predicate/NegationTest.java
index 33caef5eaec..904dce795c3 100644
--- a/predicate-search-core/src/test/java/com/yahoo/document/predicate/NegationTest.java
+++ b/predicate-search-core/src/test/java/com/yahoo/document/predicate/NegationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import org.junit.Test;
diff --git a/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateHashTest.java b/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateHashTest.java
index e6155899837..7b1b6886aa0 100644
--- a/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateHashTest.java
+++ b/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateHashTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import org.junit.Test;
diff --git a/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateOperatorTest.java b/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateOperatorTest.java
index f69a0275454..2bcc62b76e0 100644
--- a/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateOperatorTest.java
+++ b/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateOperatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import org.junit.Test;
diff --git a/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateParserTest.java b/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateParserTest.java
index bdfb7d4c027..b4b45ab198e 100644
--- a/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateParserTest.java
+++ b/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateParserTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import org.junit.Test;
diff --git a/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateTest.java b/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateTest.java
index 729b31c81b6..10de465f342 100644
--- a/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateTest.java
+++ b/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import org.junit.Test;
diff --git a/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateValueTest.java b/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateValueTest.java
index 78fb15e4160..fe5f6db1cfa 100644
--- a/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateValueTest.java
+++ b/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicateValueTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import org.junit.Test;
diff --git a/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicatesTest.java b/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicatesTest.java
index b07df5e99d7..c8cd3f776c8 100644
--- a/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicatesTest.java
+++ b/predicate-search-core/src/test/java/com/yahoo/document/predicate/PredicatesTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import org.junit.Test;
diff --git a/predicate-search-core/src/test/java/com/yahoo/document/predicate/RangeEdgePartitionTest.java b/predicate-search-core/src/test/java/com/yahoo/document/predicate/RangeEdgePartitionTest.java
index ba1729da37d..be01b1cd842 100644
--- a/predicate-search-core/src/test/java/com/yahoo/document/predicate/RangeEdgePartitionTest.java
+++ b/predicate-search-core/src/test/java/com/yahoo/document/predicate/RangeEdgePartitionTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import org.junit.Test;
diff --git a/predicate-search-core/src/test/java/com/yahoo/document/predicate/RangePartitionTest.java b/predicate-search-core/src/test/java/com/yahoo/document/predicate/RangePartitionTest.java
index 235379ef971..c11a7fb433f 100644
--- a/predicate-search-core/src/test/java/com/yahoo/document/predicate/RangePartitionTest.java
+++ b/predicate-search-core/src/test/java/com/yahoo/document/predicate/RangePartitionTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.predicate;
import org.junit.Test;
diff --git a/predicate-search-core/src/test/java/com/yahoo/search/predicate/PredicateQueryParserTest.java b/predicate-search-core/src/test/java/com/yahoo/search/predicate/PredicateQueryParserTest.java
index 35fc7399dfb..bd580ac232e 100644
--- a/predicate-search-core/src/test/java/com/yahoo/search/predicate/PredicateQueryParserTest.java
+++ b/predicate-search-core/src/test/java/com/yahoo/search/predicate/PredicateQueryParserTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate;
import org.junit.Test;
diff --git a/predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/AndOrSimplifierTest.java b/predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/AndOrSimplifierTest.java
index 2dd12c10b8e..2725132e68a 100644
--- a/predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/AndOrSimplifierTest.java
+++ b/predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/AndOrSimplifierTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.optimization;
import com.yahoo.document.predicate.Predicate;
diff --git a/predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/BooleanSimplifierTest.java b/predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/BooleanSimplifierTest.java
index a5450e7bbac..54031d36b47 100644
--- a/predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/BooleanSimplifierTest.java
+++ b/predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/BooleanSimplifierTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.optimization;
import com.yahoo.document.predicate.Predicate;
diff --git a/predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/ComplexNodeTransformerTest.java b/predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/ComplexNodeTransformerTest.java
index 2e3e57508cf..ac491d57ecd 100644
--- a/predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/ComplexNodeTransformerTest.java
+++ b/predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/ComplexNodeTransformerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.optimization;
import com.yahoo.document.predicate.FeatureRange;
diff --git a/predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/NotNodeReordererTest.java b/predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/NotNodeReordererTest.java
index 2b25c22b6ec..b1a0be796ab 100644
--- a/predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/NotNodeReordererTest.java
+++ b/predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/NotNodeReordererTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.optimization;
import com.yahoo.document.predicate.Predicate;
diff --git a/predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/OrSimplifierTest.java b/predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/OrSimplifierTest.java
index 05fd5a02f8f..90487b761db 100644
--- a/predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/OrSimplifierTest.java
+++ b/predicate-search-core/src/test/java/com/yahoo/search/predicate/optimization/OrSimplifierTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.optimization;
import com.yahoo.document.predicate.Predicate;
diff --git a/predicate-search/README.md b/predicate-search/README.md
index bd0863ce9a1..1e95956f2de 100644
--- a/predicate-search/README.md
+++ b/predicate-search/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Predicate search library
Java library for indexing predicates and querying them using boolean constraints.
diff --git a/predicate-search/pom.xml b/predicate-search/pom.xml
index 778ede93366..02dd7d31ec1 100644
--- a/predicate-search/pom.xml
+++ b/predicate-search/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/Config.java b/predicate-search/src/main/java/com/yahoo/search/predicate/Config.java
index f96f00eff6c..9b347ebe652 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/Config.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/Config.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate;
import com.google.common.annotations.Beta;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/Hit.java b/predicate-search/src/main/java/com/yahoo/search/predicate/Hit.java
index c1fc6d9adbc..5314e8b8f5e 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/Hit.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/Hit.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate;
import com.google.common.annotations.Beta;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/PredicateIndex.java b/predicate-search/src/main/java/com/yahoo/search/predicate/PredicateIndex.java
index e6643fce824..f718ca4aba5 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/PredicateIndex.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/PredicateIndex.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate;
import com.google.common.annotations.Beta;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/PredicateIndexBuilder.java b/predicate-search/src/main/java/com/yahoo/search/predicate/PredicateIndexBuilder.java
index 1b92c96aa58..c1500299d02 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/PredicateIndexBuilder.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/PredicateIndexBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate;
import com.google.common.annotations.Beta;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/PredicateQuery.java b/predicate-search/src/main/java/com/yahoo/search/predicate/PredicateQuery.java
index 839e00618f1..bb0b33e8522 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/PredicateQuery.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/PredicateQuery.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate;
import com.google.common.annotations.Beta;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/annotator/PredicateTreeAnalyzer.java b/predicate-search/src/main/java/com/yahoo/search/predicate/annotator/PredicateTreeAnalyzer.java
index af3d4960f16..3a97d27afc1 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/annotator/PredicateTreeAnalyzer.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/annotator/PredicateTreeAnalyzer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.annotator;
import com.yahoo.document.predicate.Conjunction;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/annotator/PredicateTreeAnalyzerResult.java b/predicate-search/src/main/java/com/yahoo/search/predicate/annotator/PredicateTreeAnalyzerResult.java
index 1233bb01e39..0441febc6ac 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/annotator/PredicateTreeAnalyzerResult.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/annotator/PredicateTreeAnalyzerResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.annotator;
import com.yahoo.document.predicate.Predicate;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/annotator/PredicateTreeAnnotations.java b/predicate-search/src/main/java/com/yahoo/search/predicate/annotator/PredicateTreeAnnotations.java
index 5e1fda41571..eb1395632da 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/annotator/PredicateTreeAnnotations.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/annotator/PredicateTreeAnnotations.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.annotator;
import com.yahoo.search.predicate.index.IntervalWithBounds;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/annotator/PredicateTreeAnnotator.java b/predicate-search/src/main/java/com/yahoo/search/predicate/annotator/PredicateTreeAnnotator.java
index 732148bdbd4..0ed918b3860 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/annotator/PredicateTreeAnnotator.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/annotator/PredicateTreeAnnotator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.annotator;
import com.yahoo.document.predicate.Conjunction;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/benchmarks/HitsVerificationBenchmark.java b/predicate-search/src/main/java/com/yahoo/search/predicate/benchmarks/HitsVerificationBenchmark.java
index bd22de15634..f58360307aa 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/benchmarks/HitsVerificationBenchmark.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/benchmarks/HitsVerificationBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.benchmarks;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/benchmarks/PredicateIndexBenchmark.java b/predicate-search/src/main/java/com/yahoo/search/predicate/benchmarks/PredicateIndexBenchmark.java
index 5a16b0d746a..38f139cba9a 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/benchmarks/PredicateIndexBenchmark.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/benchmarks/PredicateIndexBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.benchmarks;
import com.fasterxml.jackson.databind.ObjectMapper;
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 e76f9b8915c..11103a2a66a 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
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.benchmarks;
import java.util.Map;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/BoundsPostingList.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/BoundsPostingList.java
index 25d34f752b8..3ea3cebb45a 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/index/BoundsPostingList.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/BoundsPostingList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.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 9356e86aa2f..e6db1dec7c3 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
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
import com.google.common.collect.MinMaxPriorityQueue;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/Feature.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/Feature.java
index 6a9140585c5..125c7aeb62c 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/index/Feature.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/Feature.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
import com.yahoo.document.predicate.PredicateHash;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/Interval.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/Interval.java
index a742df139d6..18d8f5de288 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/index/Interval.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/Interval.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
/**
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/IntervalPostingList.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/IntervalPostingList.java
index 6d56bd2906b..6ae00817dd0 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/index/IntervalPostingList.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/IntervalPostingList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
/**
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/IntervalWithBounds.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/IntervalWithBounds.java
index ea4dd56e8d8..87bfa613873 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/index/IntervalWithBounds.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/IntervalWithBounds.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
import java.util.stream.Stream;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/MultiIntervalPostingList.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/MultiIntervalPostingList.java
index 917e4aeef06..37744657d9f 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/index/MultiIntervalPostingList.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/MultiIntervalPostingList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
import com.yahoo.search.predicate.utils.PostingListSearch;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/Posting.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/Posting.java
index bc1ba0fc475..aafa846e049 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/index/Posting.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/Posting.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
/**
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/PostingList.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/PostingList.java
index fd14d18ec31..1162f4eba09 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/index/PostingList.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/PostingList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
/**
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/PredicateIntervalStore.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/PredicateIntervalStore.java
index e827db5eed5..4edf2971a2a 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/index/PredicateIntervalStore.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/PredicateIntervalStore.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
import com.google.common.primitives.Ints;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/PredicateOptimizer.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/PredicateOptimizer.java
index f4441173b3e..aa84d973e61 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/index/PredicateOptimizer.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/PredicateOptimizer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
import com.yahoo.document.predicate.Predicate;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/PredicateRangeTermExpander.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/PredicateRangeTermExpander.java
index 198dfd46b74..d31a935c5cc 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/index/PredicateRangeTermExpander.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/PredicateRangeTermExpander.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
import com.yahoo.document.predicate.PredicateHash;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/PredicateSearch.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/PredicateSearch.java
index a46b50916b0..143eb071852 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/index/PredicateSearch.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/PredicateSearch.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
import com.yahoo.search.predicate.Hit;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/SimpleIndex.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/SimpleIndex.java
index 3e1ed7ad9e4..99ca2100502 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/index/SimpleIndex.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/SimpleIndex.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
import com.yahoo.search.predicate.serialization.SerializationHelper;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/ZeroConstraintPostingList.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/ZeroConstraintPostingList.java
index 7f68897c558..6f51da0847e 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/index/ZeroConstraintPostingList.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/ZeroConstraintPostingList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
import com.yahoo.search.predicate.SubqueryBitmap;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/ZstarCompressedPostingList.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/ZstarCompressedPostingList.java
index 487dc328b0f..e569aa79700 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/index/ZstarCompressedPostingList.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/ZstarCompressedPostingList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
import com.yahoo.search.predicate.SubqueryBitmap;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionHit.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionHit.java
index 1706746af58..e5a909651c8 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionHit.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionHit.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index.conjunction;
import com.yahoo.search.predicate.SubqueryBitmap;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionId.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionId.java
index 031e9087268..0c8168ba4a7 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionId.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionId.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index.conjunction;
/**
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIdIterator.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIdIterator.java
index 8c7dd278f1d..ca1afc949a9 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIdIterator.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIdIterator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index.conjunction;
/**
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIndex.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIndex.java
index d062af43f22..390c2c5e591 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIndex.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIndex.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index.conjunction;
import com.yahoo.document.predicate.FeatureConjunction;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIndexBuilder.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIndexBuilder.java
index 8e3261a4cf8..3c8ce70df29 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIndexBuilder.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIndexBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index.conjunction;
import com.google.common.primitives.Ints;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/IndexableFeatureConjunction.java b/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/IndexableFeatureConjunction.java
index 5e423d36245..8ffc972072c 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/IndexableFeatureConjunction.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/index/conjunction/IndexableFeatureConjunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index.conjunction;
import com.yahoo.document.predicate.FeatureConjunction;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/optimization/FeatureConjunctionTransformer.java b/predicate-search/src/main/java/com/yahoo/search/predicate/optimization/FeatureConjunctionTransformer.java
index 3ed803b6dd6..096b98f3e26 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/optimization/FeatureConjunctionTransformer.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/optimization/FeatureConjunctionTransformer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.optimization;
import com.yahoo.document.predicate.Conjunction;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/package-info.java b/predicate-search/src/main/java/com/yahoo/search/predicate/package-info.java
index 48897b06fc6..25869136ac0 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/package-info.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@com.yahoo.osgi.annotation.ExportPackage
@com.yahoo.api.annotations.PublicApi
/*
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/serialization/PredicateQuerySerializer.java b/predicate-search/src/main/java/com/yahoo/search/predicate/serialization/PredicateQuerySerializer.java
index 17af31b2640..018f037603d 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/serialization/PredicateQuerySerializer.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/serialization/PredicateQuerySerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.serialization;
import com.fasterxml.jackson.core.JsonFactory;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/serialization/SerializationHelper.java b/predicate-search/src/main/java/com/yahoo/search/predicate/serialization/SerializationHelper.java
index ee1ba817dbc..071ddc5e5de 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/serialization/SerializationHelper.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/serialization/SerializationHelper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.serialization;
import com.yahoo.search.predicate.PredicateIndex;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/utils/PostingListSearch.java b/predicate-search/src/main/java/com/yahoo/search/predicate/utils/PostingListSearch.java
index edb3ab41b23..a5925299091 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/utils/PostingListSearch.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/utils/PostingListSearch.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.utils;
/**
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/utils/PrimitiveArraySorter.java b/predicate-search/src/main/java/com/yahoo/search/predicate/utils/PrimitiveArraySorter.java
index cb24d16fb44..9d42cfa1523 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/utils/PrimitiveArraySorter.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/utils/PrimitiveArraySorter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.utils;
/**
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/utils/TargetingQueryFileConverter.java b/predicate-search/src/main/java/com/yahoo/search/predicate/utils/TargetingQueryFileConverter.java
index b7e94578f23..c7fb5970643 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/utils/TargetingQueryFileConverter.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/utils/TargetingQueryFileConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.utils;
import com.google.common.net.UrlEscapers;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/utils/VespaFeedParser.java b/predicate-search/src/main/java/com/yahoo/search/predicate/utils/VespaFeedParser.java
index 27367e8aacc..a20800758ce 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/utils/VespaFeedParser.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/utils/VespaFeedParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.utils;
import com.yahoo.document.predicate.Predicate;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/utils/VespaFeedWriter.java b/predicate-search/src/main/java/com/yahoo/search/predicate/utils/VespaFeedWriter.java
index 982d2488105..7c8c1513a50 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/utils/VespaFeedWriter.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/utils/VespaFeedWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.utils;
import com.google.common.html.HtmlEscapers;
diff --git a/predicate-search/src/main/java/com/yahoo/search/predicate/utils/VespaQueryParser.java b/predicate-search/src/main/java/com/yahoo/search/predicate/utils/VespaQueryParser.java
index 79024bff180..d5ab21114d9 100644
--- a/predicate-search/src/main/java/com/yahoo/search/predicate/utils/VespaQueryParser.java
+++ b/predicate-search/src/main/java/com/yahoo/search/predicate/utils/VespaQueryParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.utils;
import com.yahoo.search.predicate.PredicateQuery;
diff --git a/predicate-search/src/test/java/com/yahoo/search/predicate/PredicateIndexBuilderTest.java b/predicate-search/src/test/java/com/yahoo/search/predicate/PredicateIndexBuilderTest.java
index 11a506fc5b3..bed1228c8b8 100644
--- a/predicate-search/src/test/java/com/yahoo/search/predicate/PredicateIndexBuilderTest.java
+++ b/predicate-search/src/test/java/com/yahoo/search/predicate/PredicateIndexBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate;
import com.yahoo.document.predicate.BooleanPredicate;
diff --git a/predicate-search/src/test/java/com/yahoo/search/predicate/PredicateIndexTest.java b/predicate-search/src/test/java/com/yahoo/search/predicate/PredicateIndexTest.java
index b1fbf6a8004..5ed04418664 100644
--- a/predicate-search/src/test/java/com/yahoo/search/predicate/PredicateIndexTest.java
+++ b/predicate-search/src/test/java/com/yahoo/search/predicate/PredicateIndexTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate;
import com.yahoo.document.predicate.Predicate;
diff --git a/predicate-search/src/test/java/com/yahoo/search/predicate/annotator/PredicateTreeAnalyzerTest.java b/predicate-search/src/test/java/com/yahoo/search/predicate/annotator/PredicateTreeAnalyzerTest.java
index e51f4ad6cfe..789a8e0a7f4 100644
--- a/predicate-search/src/test/java/com/yahoo/search/predicate/annotator/PredicateTreeAnalyzerTest.java
+++ b/predicate-search/src/test/java/com/yahoo/search/predicate/annotator/PredicateTreeAnalyzerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.annotator;
import com.yahoo.document.predicate.FeatureConjunction;
diff --git a/predicate-search/src/test/java/com/yahoo/search/predicate/annotator/PredicateTreeAnnotatorTest.java b/predicate-search/src/test/java/com/yahoo/search/predicate/annotator/PredicateTreeAnnotatorTest.java
index 24aa59955bc..6414104f996 100644
--- a/predicate-search/src/test/java/com/yahoo/search/predicate/annotator/PredicateTreeAnnotatorTest.java
+++ b/predicate-search/src/test/java/com/yahoo/search/predicate/annotator/PredicateTreeAnnotatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.annotator;
import com.google.common.primitives.Ints;
diff --git a/predicate-search/src/test/java/com/yahoo/search/predicate/index/BoundsPostingListTest.java b/predicate-search/src/test/java/com/yahoo/search/predicate/index/BoundsPostingListTest.java
index a292d02961f..ad9f5b8cdd1 100644
--- a/predicate-search/src/test/java/com/yahoo/search/predicate/index/BoundsPostingListTest.java
+++ b/predicate-search/src/test/java/com/yahoo/search/predicate/index/BoundsPostingListTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
import com.google.common.primitives.Ints;
diff --git a/predicate-search/src/test/java/com/yahoo/search/predicate/index/CachedPostingListCounterTest.java b/predicate-search/src/test/java/com/yahoo/search/predicate/index/CachedPostingListCounterTest.java
index 13a15cab52a..21691a47f3e 100644
--- a/predicate-search/src/test/java/com/yahoo/search/predicate/index/CachedPostingListCounterTest.java
+++ b/predicate-search/src/test/java/com/yahoo/search/predicate/index/CachedPostingListCounterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
import com.google.common.primitives.Ints;
diff --git a/predicate-search/src/test/java/com/yahoo/search/predicate/index/IntervalPostingListTest.java b/predicate-search/src/test/java/com/yahoo/search/predicate/index/IntervalPostingListTest.java
index db1ae5b1fa2..6cf8821c5f4 100644
--- a/predicate-search/src/test/java/com/yahoo/search/predicate/index/IntervalPostingListTest.java
+++ b/predicate-search/src/test/java/com/yahoo/search/predicate/index/IntervalPostingListTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
import com.yahoo.search.predicate.SubqueryBitmap;
diff --git a/predicate-search/src/test/java/com/yahoo/search/predicate/index/PredicateIntervalStoreTest.java b/predicate-search/src/test/java/com/yahoo/search/predicate/index/PredicateIntervalStoreTest.java
index 5f645dc750c..c12817fbcf6 100644
--- a/predicate-search/src/test/java/com/yahoo/search/predicate/index/PredicateIntervalStoreTest.java
+++ b/predicate-search/src/test/java/com/yahoo/search/predicate/index/PredicateIntervalStoreTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
import com.google.common.primitives.Ints;
diff --git a/predicate-search/src/test/java/com/yahoo/search/predicate/index/PredicateRangeTermExpanderTest.java b/predicate-search/src/test/java/com/yahoo/search/predicate/index/PredicateRangeTermExpanderTest.java
index b59c8922d2c..90db2aea89b 100644
--- a/predicate-search/src/test/java/com/yahoo/search/predicate/index/PredicateRangeTermExpanderTest.java
+++ b/predicate-search/src/test/java/com/yahoo/search/predicate/index/PredicateRangeTermExpanderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
import com.yahoo.document.predicate.PredicateHash;
diff --git a/predicate-search/src/test/java/com/yahoo/search/predicate/index/PredicateSearchTest.java b/predicate-search/src/test/java/com/yahoo/search/predicate/index/PredicateSearchTest.java
index 38e8c1e8a72..654b944fb3f 100644
--- a/predicate-search/src/test/java/com/yahoo/search/predicate/index/PredicateSearchTest.java
+++ b/predicate-search/src/test/java/com/yahoo/search/predicate/index/PredicateSearchTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
import com.yahoo.search.predicate.Hit;
diff --git a/predicate-search/src/test/java/com/yahoo/search/predicate/index/SimpleIndexTest.java b/predicate-search/src/test/java/com/yahoo/search/predicate/index/SimpleIndexTest.java
index 7a0cf0f269c..b0ff62e33fb 100644
--- a/predicate-search/src/test/java/com/yahoo/search/predicate/index/SimpleIndexTest.java
+++ b/predicate-search/src/test/java/com/yahoo/search/predicate/index/SimpleIndexTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
import org.junit.Test;
diff --git a/predicate-search/src/test/java/com/yahoo/search/predicate/index/ZeroConstraintPostingListTest.java b/predicate-search/src/test/java/com/yahoo/search/predicate/index/ZeroConstraintPostingListTest.java
index 37338ec93d2..bade49aaeca 100644
--- a/predicate-search/src/test/java/com/yahoo/search/predicate/index/ZeroConstraintPostingListTest.java
+++ b/predicate-search/src/test/java/com/yahoo/search/predicate/index/ZeroConstraintPostingListTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
import org.junit.Test;
diff --git a/predicate-search/src/test/java/com/yahoo/search/predicate/index/ZstarCompressedPostingListTest.java b/predicate-search/src/test/java/com/yahoo/search/predicate/index/ZstarCompressedPostingListTest.java
index 637cbca0ce9..e0378bdb7e9 100644
--- a/predicate-search/src/test/java/com/yahoo/search/predicate/index/ZstarCompressedPostingListTest.java
+++ b/predicate-search/src/test/java/com/yahoo/search/predicate/index/ZstarCompressedPostingListTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index;
import org.junit.Test;
diff --git a/predicate-search/src/test/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIdIteratorTest.java b/predicate-search/src/test/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIdIteratorTest.java
index 34069aa9a3a..56c6721fe76 100644
--- a/predicate-search/src/test/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIdIteratorTest.java
+++ b/predicate-search/src/test/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIdIteratorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index.conjunction;
import com.yahoo.search.predicate.SubqueryBitmap;
diff --git a/predicate-search/src/test/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIndexTest.java b/predicate-search/src/test/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIndexTest.java
index 6287daaeece..07bcf83776a 100644
--- a/predicate-search/src/test/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIndexTest.java
+++ b/predicate-search/src/test/java/com/yahoo/search/predicate/index/conjunction/ConjunctionIndexTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.index.conjunction;
import com.yahoo.document.predicate.FeatureConjunction;
diff --git a/predicate-search/src/test/java/com/yahoo/search/predicate/optimization/FeatureConjunctionTransformerTest.java b/predicate-search/src/test/java/com/yahoo/search/predicate/optimization/FeatureConjunctionTransformerTest.java
index a9646fbab9b..88b8bf005a4 100644
--- a/predicate-search/src/test/java/com/yahoo/search/predicate/optimization/FeatureConjunctionTransformerTest.java
+++ b/predicate-search/src/test/java/com/yahoo/search/predicate/optimization/FeatureConjunctionTransformerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.optimization;
import com.yahoo.document.predicate.FeatureConjunction;
diff --git a/predicate-search/src/test/java/com/yahoo/search/predicate/serialization/PredicateQuerySerializerTest.java b/predicate-search/src/test/java/com/yahoo/search/predicate/serialization/PredicateQuerySerializerTest.java
index 0962611ac8b..0bd9a1cda01 100644
--- a/predicate-search/src/test/java/com/yahoo/search/predicate/serialization/PredicateQuerySerializerTest.java
+++ b/predicate-search/src/test/java/com/yahoo/search/predicate/serialization/PredicateQuerySerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.serialization;
import com.yahoo.search.predicate.PredicateQuery;
diff --git a/predicate-search/src/test/java/com/yahoo/search/predicate/serialization/SerializationHelperTest.java b/predicate-search/src/test/java/com/yahoo/search/predicate/serialization/SerializationHelperTest.java
index f539bc80a9a..fa8fbb1e77d 100644
--- a/predicate-search/src/test/java/com/yahoo/search/predicate/serialization/SerializationHelperTest.java
+++ b/predicate-search/src/test/java/com/yahoo/search/predicate/serialization/SerializationHelperTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.serialization;
import org.junit.Test;
diff --git a/predicate-search/src/test/java/com/yahoo/search/predicate/serialization/SerializationTestHelper.java b/predicate-search/src/test/java/com/yahoo/search/predicate/serialization/SerializationTestHelper.java
index 1d741c9cb7c..42cfa861f34 100644
--- a/predicate-search/src/test/java/com/yahoo/search/predicate/serialization/SerializationTestHelper.java
+++ b/predicate-search/src/test/java/com/yahoo/search/predicate/serialization/SerializationTestHelper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.serialization;
import java.io.ByteArrayInputStream;
diff --git a/predicate-search/src/test/java/com/yahoo/search/predicate/utils/PostingListSearchTest.java b/predicate-search/src/test/java/com/yahoo/search/predicate/utils/PostingListSearchTest.java
index e999010163a..a1bb225fb9f 100644
--- a/predicate-search/src/test/java/com/yahoo/search/predicate/utils/PostingListSearchTest.java
+++ b/predicate-search/src/test/java/com/yahoo/search/predicate/utils/PostingListSearchTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.utils;
import org.junit.Test;
diff --git a/predicate-search/src/test/java/com/yahoo/search/predicate/utils/PrimitiveArraySorterTest.java b/predicate-search/src/test/java/com/yahoo/search/predicate/utils/PrimitiveArraySorterTest.java
index a5d9b933758..eb641b6fa05 100644
--- a/predicate-search/src/test/java/com/yahoo/search/predicate/utils/PrimitiveArraySorterTest.java
+++ b/predicate-search/src/test/java/com/yahoo/search/predicate/utils/PrimitiveArraySorterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.predicate.utils;
import org.junit.Test;
diff --git a/protocols/README.md b/protocols/README.md
index c24eacba704..c170055c394 100644
--- a/protocols/README.md
+++ b/protocols/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Cross-module protocol definitions
This module can be used as a place to put cross-module definitions of APIs
diff --git a/provided-dependencies/README.md b/provided-dependencies/README.md
index 672a49e67bb..e965227e059 100644
--- a/provided-dependencies/README.md
+++ b/provided-dependencies/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# JDisc provided dependencies
Dependencies that are installed in JDisc and should not be included in artifacts with dependencies.
diff --git a/provided-dependencies/pom.xml b/provided-dependencies/pom.xml
index acad1f9e444..a322be55560 100755
--- a/provided-dependencies/pom.xml
+++ b/provided-dependencies/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/provided-dependencies/src/main/javadoc/README b/provided-dependencies/src/main/javadoc/README
new file mode 100644
index 00000000000..6695538e308
--- /dev/null
+++ b/provided-dependencies/src/main/javadoc/README
@@ -0,0 +1 @@
+No javadoc available for module \ No newline at end of file
diff --git a/screwdriver.yaml b/screwdriver.yaml
index 1bf5804e0f6..4f62f1ef302 100644
--- a/screwdriver.yaml
+++ b/screwdriver.yaml
@@ -1,13 +1,15 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
---
cache:
- job:
- build-vespa: [/main_job_cache]
+ job:
+ build-vespa: [/main_job_cache]
+
+shared:
+ image: vespaengine/vespa-build-centos7:latest
jobs:
build-vespa:
requires: [~pr, ~commit]
- image: vespaengine/vespa-build-centos7:current
annotations:
screwdriver.cd/cpu: 7
screwdriver.cd/ram: 16
@@ -70,3 +72,64 @@ jobs:
du -sh /tmp/vespa/*
ls -la /main_job_cache || true
df -h
+
+ verify-opensource-release-7days:
+ environment:
+ USER_SHELL_BIN: bash
+ annotations:
+ screwdriver.cd/buildPeriodically: H 0 * * *
+ steps:
+ - now-epoch: |
+ now_epoch=`date "+%s"`
+ echo "Now epoch: " $now_epoch
+ - calculate-current-release-age: |
+ current_release_date=`curl -s 'https://repo1.maven.org/maven2/com/yahoo/vespa/parent/' | \
+ grep '^<a href="[0-9]' | awk '{print $4}' | sort | tail -1`
+ echo "Current release date: " $current_release_date
+ current_release_epoch=`date -d "$current_release_date" "+%s"`
+ echo "Current release epoch: " $current_release_epoch
+ release_age_days=$((($now_epoch-$current_release_epoch)/86400))
+ echo "Release age days: " $release_age_days
+ - error-if-current-release-too-old: |
+ if [ "$release_age_days" -gt 7 ]; then
+ echo "Current open source release is older than 7 days"
+ exit 1
+ fi
+ - calculate-docker-image-age: |
+ image_date=`curl https://hub.docker.com/v2/repositories/vespaengine/vespa/ | \
+ python -m json.tool| grep last_updated | awk '{print $2}' | tr -d '",'`
+ echo "Docker image last_updated: " $image_date
+ image_epoch=`date -d "$image_date" "+%s"`
+ echo "Docker image epoch: " $image_epoch
+ docker_image_age_days=$((($now_epoch-$image_epoch)/86400))
+ echo "Docker image age days: " $docker_image_age_days
+ - error-if-docker-image-too-old: |
+ if [ "$docker_image_age_days" -gt 7 ]; then
+ echo "Current Docker image is older than 7 days"
+ exit 1
+ fi
+
+ mirror-copr-rpms-to-artifactory:
+ annotations:
+ screwdriver.cd/cpu: LOW
+ screwdriver.cd/ram: LOW
+ screwdriver.cd/disk: HIGH
+ screwdriver.cd/timeout: 60
+ screwdriver.cd/buildPeriodically: H 6 * * *
+ secrets:
+ - JFROG_API_TOKEN
+ steps:
+ - mirror: |
+ screwdriver/publish-unpublished-rpms-to-jfrog-cloud.sh
+
+ delete-old-versions-on-artifactory:
+ annotations:
+ screwdriver.cd/cpu: LOW
+ screwdriver.cd/ram: LOW
+ screwdriver.cd/timeout: 10
+ screwdriver.cd/buildPeriodically: H 6 * * 1
+ secrets:
+ - JFROG_API_TOKEN
+ steps:
+ - cleanup: |
+ screwdriver/delete-old-artifactory-artifacts.sh
diff --git a/screwdriver/build-vespa.sh b/screwdriver/build-vespa.sh
index 91375728ca9..997422f3822 100755
--- a/screwdriver/build-vespa.sh
+++ b/screwdriver/build-vespa.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
@@ -38,7 +38,11 @@ case $SHOULD_BUILD in
./bootstrap.sh java
mvn -V $VESPA_MAVEN_EXTRA_OPTS install
;;
+ go)
+ make -C client/go -j ${NUM_THREADS}
+ ;;
*)
+ make -C client/go -j ${NUM_THREADS}
./bootstrap.sh java
time mvn -V $VESPA_MAVEN_EXTRA_OPTS install
cmake3 -DVESPA_UNPRIVILEGED=no .
@@ -69,7 +73,7 @@ if [[ $SHOULD_BUILD == systemtest ]]; then
export SYSTEM_TEST_DIR=$(pwd)/system-test
export RUBYLIB="$SYSTEM_TEST_DIR/lib:$SYSTEM_TEST_DIR/tests"
useradd vespa
- export USER=$(whoami)
+ export USER=vespa
$SYSTEM_TEST_DIR/lib/node_server.rb &
NODE_SERVER_PID=$!
diff --git a/screwdriver/delete-old-artifactory-artifacts.sh b/screwdriver/delete-old-artifactory-artifacts.sh
new file mode 100755
index 00000000000..431dbd221bf
--- /dev/null
+++ b/screwdriver/delete-old-artifactory-artifacts.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+set -euo pipefail
+
+MAX_NUMBER_OF_RELEASES=200
+ARTIFACTORY_URL="https://artifactory.verizonmedia.com/artifactory"
+
+# JFrog Cloud repo file
+if [[ ! -f /etc/yum.repos.d/vespa.repo ]]; then
+ cat << EOF > /etc/yum.repos.d/vespa.repo
+[vespa-release]
+name=Vespa releases
+baseurl=$ARTIFACTORY_URL/vespa/centos/7/release/\$basearch
+gpgcheck=0
+enabled=1
+EOF
+fi
+
+VERSIONS_TO_DELETE=$(yum list --quiet --showduplicates --disablerepo='*' --enablerepo=vespa-release vespa | awk '/[0-9].*\.[0-9].*\.[0-9].*/{print $2}' | sort -V | head -n -200)
+
+RPMS_TO_DELETE=$(mktemp)
+trap "rm -f $RPMS_TO_DELETE" EXIT
+
+for VERSION in $VERSIONS_TO_DELETE; do
+ curl -sSL -H "content-type:text/plain" -H "Authorization: Bearer $JFROG_API_TOKEN" \
+ --data "items.find({ \"repo\": { \"\$eq\": \"vespa\" }, \"name\": {\"\$match\": \"vespa*$VERSION*\"} }).include(\"repo\", \"path\", \"name\")" \
+ "$ARTIFACTORY_URL/api/search/aql" \
+ | jq -re ".results[]|\"$ARTIFACTORY_URL/\(.repo)/\(.path)/\(.name)\"" >> $RPMS_TO_DELETE
+done
+
+echo "Deleting the following RPMs:"
+cat $RPMS_TO_DELETE
+
+if [[ -n $SCREWDRIVER ]] && [[ -z $SD_PULL_REQUEST ]]; then
+ for RPM in $(cat $RPMS_TO_DELETE); do
+ curl -sSL -H "Authorization: Bearer $JFROG_API_TOKEN" -X DELETE $RPM
+ done
+fi
+
+
diff --git a/screwdriver/detect-what-to-build.sh b/screwdriver/detect-what-to-build.sh
index 608dfda9e0e..358c855f7bd 100755
--- a/screwdriver/detect-what-to-build.sh
+++ b/screwdriver/detect-what-to-build.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
if (( ${#BASH_SOURCE[@]} == 1 )); then
echo "This script must be sourced."
@@ -27,6 +27,8 @@ elif ! grep -v -E "(\.h|\.hh|\.hxx|\.c|\.cpp|\.cxx)$" <<< "$FILES" &> /dev/null;
SHOULD_BUILD=cpp
elif ! grep -v -E "(\.java)$" <<< "$FILES" &> /dev/null; then
SHOULD_BUILD=java
+elif ! grep -v -E "(\.go)$" <<< "$FILES" &> /dev/null; then
+ SHOULD_BUILD=go
else
SHOULD_BUILD=all
fi
diff --git a/screwdriver/publish-unpublished-rpms-to-jfrog-cloud.sh b/screwdriver/publish-unpublished-rpms-to-jfrog-cloud.sh
new file mode 100755
index 00000000000..c200d347621
--- /dev/null
+++ b/screwdriver/publish-unpublished-rpms-to-jfrog-cloud.sh
@@ -0,0 +1,72 @@
+#!/bin/bash
+
+set -euo pipefail
+
+readonly MYDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+yum install -y yum-utils &> /dev/null
+
+# Copr repo file
+if [[ ! -f /etc/yum.repos.d/group_vespa-vespa-epel-7.repo ]]; then
+ cat << 'EOF' > /etc/yum.repos.d/group_vespa-vespa-epel-7.repo
+[copr:copr.fedorainfracloud.org:group_vespa:vespa]
+name=Copr repo for vespa owned by @vespa
+baseurl=https://copr-be.cloud.fedoraproject.org/results/@vespa/vespa/epel-7-$basearch/
+type=rpm-md
+gpgcheck=1
+gpgkey=https://copr-be.cloud.fedoraproject.org/results/@vespa/vespa/pubkey.gpg
+repo_gpgcheck=0
+enabled=1
+EOF
+fi
+
+# JFrog Cloud repo file
+if [[ ! -f /etc/yum.repos.d/vespa.repo ]]; then
+ cat << 'EOF' > /etc/yum.repos.d/vespa.repo
+[vespa-release]
+name=Vespa releases
+baseurl=https://artifactory.verizonmedia.com/artifactory/vespa/centos/7/release/$basearch
+gpgcheck=0
+enabled=1
+EOF
+fi
+
+readonly COPR_PACKAGES=$(mktemp)
+trap "rm -f $COPR_PACKAGES" EXIT
+
+yum list -q --disablerepo='*' --enablerepo=copr:copr.fedorainfracloud.org:group_vespa:vespa --showduplicates 'vespa*' | grep "Available Packages" -A 100000 | tail -n +2 | sed "s/\.x86_64\ */-/"| awk '{print $1}' > $COPR_PACKAGES
+
+echo "Packages on Copr:"
+cat $COPR_PACKAGES
+echo
+
+for pv in $(cat $COPR_PACKAGES); do
+ if ! yum list -q --disablerepo='*' --enablerepo=vespa-release $pv &> /dev/null; then
+ echo "$pv not found on JFrog Clould. Downloading..."
+ yumdownloader -q $pv
+ echo "$pv downloaded."
+ fi
+done
+echo
+
+if ! ls *.rpm &> /dev/null; then
+ echo "All packages already on JFrog Cloud."
+ exit 0
+fi
+
+echo "RPMs missing on JFrog Cloud:"
+ls -lh *.rpm
+echo
+
+if [[ -n $SCREWDRIVER ]] && [[ -z $SD_PULL_REQUEST ]]; then
+ for rpm in $(ls *.rpm); do
+ echo "Uploading $rpm ..."
+ if ! $MYDIR/upload-rpm-to-artifactory.sh $rpm ; then
+ echo "Could not upload $rpm"
+ else
+ echo "$rpm uploaded"
+ fi
+ done
+ echo
+fi
+
diff --git a/screwdriver/pubring.gpg.enc b/screwdriver/pubring.gpg.enc
new file mode 100644
index 00000000000..aee68d7aab9
--- /dev/null
+++ b/screwdriver/pubring.gpg.enc
Binary files differ
diff --git a/screwdriver/secring.gpg.enc b/screwdriver/secring.gpg.enc
new file mode 100644
index 00000000000..f12013a1ba8
--- /dev/null
+++ b/screwdriver/secring.gpg.enc
Binary files differ
diff --git a/screwdriver/settings-publish.xml b/screwdriver/settings-publish.xml
new file mode 100644
index 00000000000..33b6e48ea40
--- /dev/null
+++ b/screwdriver/settings-publish.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
+ <servers>
+ <server>
+ <id>ossrh</id>
+ <username>${env.OSSRH_USER}</username>
+ <password>${env.OSSRH_TOKEN}</password>
+ </server>
+ </servers>
+
+ <profiles>
+ <profile>
+ <id>ossrh-deploy-vespa</id>
+ <activation>
+ <activeByDefault>false</activeByDefault>
+ </activation>
+ <properties>
+ <snapshotDeploymentRepository>https://oss.sonatype.org/content/repositories/snapshots</snapshotDeploymentRepository>
+ <releaseDeploymentRepository>https://oss.sonatype.org/service/local/staging/deploy/maven2/</releaseDeploymentRepository>
+ <altDeploymentRepository>ossrh::default::${snapshotDeploymentRepository}</altDeploymentRepository>
+ <altSnapshotDeploymentRepository>ossrh::default::${snapshotDeploymentRepository}</altSnapshotDeploymentRepository>
+ <altReleaseDeploymentRepository>ossrh::default::${releaseDeploymentRepository}</altReleaseDeploymentRepository>
+ <gpg.executable>gpg</gpg.executable>
+ <gpg.keyname>${env.GPG_KEYNAME}</gpg.keyname>
+ <gpg.passphrase>${env.GPG_PASSPHRASE}</gpg.passphrase>
+ <gpg.defaultKeyring>false</gpg.defaultKeyring>
+ <gpg.homedir>${env.SD_SOURCE_DIR}/screwdriver/deploy</gpg.homedir>
+ <gpg.publickeyring>pubring.gpg</gpg.publickeyring>
+ <gpg.secretkeyring>secring.gpg</gpg.secretkeyring>
+ <maven.gpg.plugin.version>1.6</maven.gpg.plugin.version>
+ <nexus.staging.maven.plugin.version>1.6.7</nexus.staging.maven.plugin.version>
+ </properties>
+ </profile>
+ </profiles>
+
+</settings>
diff --git a/screwdriver/upload-rpm-to-artifactory.sh b/screwdriver/upload-rpm-to-artifactory.sh
new file mode 100755
index 00000000000..638f70806a8
--- /dev/null
+++ b/screwdriver/upload-rpm-to-artifactory.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+set -euo pipefail
+
+RPM=$1
+OS_DISTRO=centos
+RELEASEVER=7
+MATURITY=release
+BASEARCH=x86_64
+
+main() {
+ if [[ -z $JFROG_API_TOKEN ]] || [[ -z $RPM ]]; then
+ echo "Usage: $0 <RPM package>."
+ echo "Environment variable JFROG_API_TOKEN must be set in environment."
+ exit 1
+ fi
+
+ curl -vL -H "Authorization: Bearer $JFROG_API_TOKEN" \
+ -H "X-Checksum-Sha1: $(sha1sum $RPM | awk '{print $1}')" \
+ -H "X-Checksum-Sha256: $(sha256sum $RPM | awk '{print $1}')" \
+ -H "X-Checksum-MD5: $(md5sum $RPM | awk '{print $1}')" \
+ -X PUT "https://artifactory.verizonmedia.com/artifactory/vespa/$OS_DISTRO/$RELEASEVER/$MATURITY/$BASEARCH/Packages/$RPM" \
+ -T $RPM
+}
+
+main "$@"
diff --git a/searchcommon/CMakeLists.txt b/searchcommon/CMakeLists.txt
index e94ab92d6bf..e5260ecb69e 100644
--- a/searchcommon/CMakeLists.txt
+++ b/searchcommon/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/searchcommon/src/tests/attribute/config/CMakeLists.txt b/searchcommon/src/tests/attribute/config/CMakeLists.txt
index f0597f9b7b7..71df8414aee 100644
--- a/searchcommon/src/tests/attribute/config/CMakeLists.txt
+++ b/searchcommon/src/tests/attribute/config/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcommon_attribute_config_test_app TEST
SOURCES
attribute_config_test.cpp
diff --git a/searchcommon/src/tests/attribute/config/attribute_config_test.cpp b/searchcommon/src/tests/attribute/config/attribute_config_test.cpp
index 12a9837629d..918e14546e6 100644
--- a/searchcommon/src/tests/attribute/config/attribute_config_test.cpp
+++ b/searchcommon/src/tests/attribute/config/attribute_config_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchcommon/attribute/config.h>
diff --git a/searchcommon/src/tests/schema/CMakeLists.txt b/searchcommon/src/tests/schema/CMakeLists.txt
index ae24462ef23..515a5206f04 100644
--- a/searchcommon/src/tests/schema/CMakeLists.txt
+++ b/searchcommon/src/tests/schema/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcommon_schema_test_app TEST
SOURCES
schema_test.cpp
diff --git a/searchcommon/src/tests/schema/schema_test.cpp b/searchcommon/src/tests/schema/schema_test.cpp
index ff4c22bad84..09a7359bac7 100644
--- a/searchcommon/src/tests/schema/schema_test.cpp
+++ b/searchcommon/src/tests/schema/schema_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config/common/configparser.h>
#include <vespa/searchcommon/common/schema.h>
#include <vespa/searchcommon/common/schemaconfigurer.h>
diff --git a/searchcommon/src/vespa/searchcommon/CMakeLists.txt b/searchcommon/src/vespa/searchcommon/CMakeLists.txt
index 64bd88d79ca..4d0d900bdf2 100644
--- a/searchcommon/src/vespa/searchcommon/CMakeLists.txt
+++ b/searchcommon/src/vespa/searchcommon/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcommon
SOURCES
$<TARGET_OBJECTS:searchcommon_searchcommon_common>
diff --git a/searchcommon/src/vespa/searchcommon/attribute/CMakeLists.txt b/searchcommon/src/vespa/searchcommon/attribute/CMakeLists.txt
index 0ab126147a6..704fe238ed5 100644
--- a/searchcommon/src/vespa/searchcommon/attribute/CMakeLists.txt
+++ b/searchcommon/src/vespa/searchcommon/attribute/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcommon_searchcommon_attribute OBJECT
SOURCES
attribute_utils.cpp
diff --git a/searchcommon/src/vespa/searchcommon/attribute/attributecontent.h b/searchcommon/src/vespa/searchcommon/attribute/attributecontent.h
index 67b269139d3..f5960ce358b 100644
--- a/searchcommon/src/vespa/searchcommon/attribute/attributecontent.h
+++ b/searchcommon/src/vespa/searchcommon/attribute/attributecontent.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcommon/src/vespa/searchcommon/attribute/basictype.cpp b/searchcommon/src/vespa/searchcommon/attribute/basictype.cpp
index b3137181ce1..5bab2fc06d2 100644
--- a/searchcommon/src/vespa/searchcommon/attribute/basictype.cpp
+++ b/searchcommon/src/vespa/searchcommon/attribute/basictype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcommon/attribute/basictype.h>
#include <vespa/vespalib/util/exceptions.h>
diff --git a/searchcommon/src/vespa/searchcommon/attribute/basictype.h b/searchcommon/src/vespa/searchcommon/attribute/basictype.h
index 926246c7029..bd7b4a2b4bc 100644
--- a/searchcommon/src/vespa/searchcommon/attribute/basictype.h
+++ b/searchcommon/src/vespa/searchcommon/attribute/basictype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcommon/src/vespa/searchcommon/attribute/collectiontype.cpp b/searchcommon/src/vespa/searchcommon/attribute/collectiontype.cpp
index d5d33718183..b77382f6126 100644
--- a/searchcommon/src/vespa/searchcommon/attribute/collectiontype.cpp
+++ b/searchcommon/src/vespa/searchcommon/attribute/collectiontype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcommon/attribute/collectiontype.h>
#include <vespa/vespalib/util/exceptions.h>
diff --git a/searchcommon/src/vespa/searchcommon/attribute/collectiontype.h b/searchcommon/src/vespa/searchcommon/attribute/collectiontype.h
index 2cd46ce2bba..35cb7612ed0 100644
--- a/searchcommon/src/vespa/searchcommon/attribute/collectiontype.h
+++ b/searchcommon/src/vespa/searchcommon/attribute/collectiontype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcommon/src/vespa/searchcommon/attribute/config.cpp b/searchcommon/src/vespa/searchcommon/attribute/config.cpp
index c62d7ef0ea1..aae565ff775 100644
--- a/searchcommon/src/vespa/searchcommon/attribute/config.cpp
+++ b/searchcommon/src/vespa/searchcommon/attribute/config.cpp
@@ -1,27 +1,28 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "config.h"
namespace search::attribute {
Config::Config() noexcept :
- _basicType(BasicType::NONE),
- _type(CollectionType::SINGLE),
- _fastSearch(false),
- _huge(false),
- _enableBitVectors(false),
- _enableOnlyBitVector(false),
- _isFilter(false),
- _fastAccess(false),
- _mutable(false),
- _match(Match::UNCASED),
- _dictionary(),
- _growStrategy(),
- _compactionStrategy(),
- _predicateParams(),
- _tensorType(vespalib::eval::ValueType::error_type()),
- _distance_metric(DistanceMetric::Euclidean),
- _hnsw_index_params()
+ _basicType(BasicType::NONE),
+ _type(CollectionType::SINGLE),
+ _fastSearch(false),
+ _huge(false),
+ _enableBitVectors(false),
+ _enableOnlyBitVector(false),
+ _isFilter(false),
+ _fastAccess(false),
+ _mutable(false),
+ _paged(false),
+ _match(Match::UNCASED),
+ _dictionary(),
+ _growStrategy(),
+ _compactionStrategy(),
+ _predicateParams(),
+ _tensorType(vespalib::eval::ValueType::error_type()),
+ _distance_metric(DistanceMetric::Euclidean),
+ _hnsw_index_params()
{
}
@@ -35,6 +36,7 @@ Config::Config(BasicType bt, CollectionType ct, bool fastSearch_, bool huge_) no
_isFilter(false),
_fastAccess(false),
_mutable(false),
+ _paged(false),
_match(Match::UNCASED),
_dictionary(),
_growStrategy(),
@@ -64,6 +66,7 @@ Config::operator==(const Config &b) const
_isFilter == b._isFilter &&
_fastAccess == b._fastAccess &&
_mutable == b._mutable &&
+ _paged == b._paged &&
_match == b._match &&
_dictionary == b._dictionary &&
_growStrategy == b._growStrategy &&
diff --git a/searchcommon/src/vespa/searchcommon/attribute/config.h b/searchcommon/src/vespa/searchcommon/attribute/config.h
index fdf3a00ac99..9734124ff69 100644
--- a/searchcommon/src/vespa/searchcommon/attribute/config.h
+++ b/searchcommon/src/vespa/searchcommon/attribute/config.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -40,6 +40,7 @@ public:
CollectionType collectionType() const { return _type; }
bool fastSearch() const { return _fastSearch; }
bool huge() const { return _huge; }
+ bool paged() const { return _paged; }
const PredicateParams &predicateParams() const { return _predicateParams; }
const vespalib::eval::ValueType & tensorType() const { return _tensorType; }
DistanceMetric distance_metric() const { return _distance_metric; }
@@ -116,6 +117,7 @@ public:
*/
Config & setIsFilter(bool isFilter) { _isFilter = isFilter; return *this; }
Config & setMutable(bool isMutable) { _mutable = isMutable; return *this; }
+ Config & setPaged(bool paged_in) { _paged = paged_in; return *this; }
Config & setFastAccess(bool v) { _fastAccess = v; return *this; }
Config & setGrowStrategy(const GrowStrategy &gs) { _growStrategy = gs; return *this; }
Config & setCompactionStrategy(const CompactionStrategy &compactionStrategy) {
@@ -137,6 +139,7 @@ private:
bool _isFilter;
bool _fastAccess;
bool _mutable;
+ bool _paged;
Match _match;
DictionaryConfig _dictionary;
GrowStrategy _growStrategy;
diff --git a/searchcommon/src/vespa/searchcommon/attribute/distance_metric.h b/searchcommon/src/vespa/searchcommon/attribute/distance_metric.h
index 6397eaf0c56..26efa30bba4 100644
--- a/searchcommon/src/vespa/searchcommon/attribute/distance_metric.h
+++ b/searchcommon/src/vespa/searchcommon/attribute/distance_metric.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcommon/src/vespa/searchcommon/attribute/i_attribute_functor.h b/searchcommon/src/vespa/searchcommon/attribute/i_attribute_functor.h
index 7216d499f25..da5127de8ee 100644
--- a/searchcommon/src/vespa/searchcommon/attribute/i_attribute_functor.h
+++ b/searchcommon/src/vespa/searchcommon/attribute/i_attribute_functor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcommon/src/vespa/searchcommon/attribute/i_search_context.h b/searchcommon/src/vespa/searchcommon/attribute/i_search_context.h
index 795129bf3b8..f13b79acb4b 100644
--- a/searchcommon/src/vespa/searchcommon/attribute/i_search_context.h
+++ b/searchcommon/src/vespa/searchcommon/attribute/i_search_context.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcommon/src/vespa/searchcommon/attribute/iattributecontext.h b/searchcommon/src/vespa/searchcommon/attribute/iattributecontext.h
index b80711a2e76..bb349057ca9 100644
--- a/searchcommon/src/vespa/searchcommon/attribute/iattributecontext.h
+++ b/searchcommon/src/vespa/searchcommon/attribute/iattributecontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcommon/src/vespa/searchcommon/attribute/iattributevector.h b/searchcommon/src/vespa/searchcommon/attribute/iattributevector.h
index cc01d1d95e1..b28855ae4f4 100644
--- a/searchcommon/src/vespa/searchcommon/attribute/iattributevector.h
+++ b/searchcommon/src/vespa/searchcommon/attribute/iattributevector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcommon/src/vespa/searchcommon/attribute/persistent_predicate_params.h b/searchcommon/src/vespa/searchcommon/attribute/persistent_predicate_params.h
index baa341e8d15..d81eb9c5d3c 100644
--- a/searchcommon/src/vespa/searchcommon/attribute/persistent_predicate_params.h
+++ b/searchcommon/src/vespa/searchcommon/attribute/persistent_predicate_params.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcommon/src/vespa/searchcommon/attribute/predicate_params.h b/searchcommon/src/vespa/searchcommon/attribute/predicate_params.h
index 6a49bdd4d8e..133b7331689 100644
--- a/searchcommon/src/vespa/searchcommon/attribute/predicate_params.h
+++ b/searchcommon/src/vespa/searchcommon/attribute/predicate_params.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcommon/src/vespa/searchcommon/attribute/search_context_params.cpp b/searchcommon/src/vespa/searchcommon/attribute/search_context_params.cpp
index 8de2efd8518..2e8aba6f5f8 100644
--- a/searchcommon/src/vespa/searchcommon/attribute/search_context_params.cpp
+++ b/searchcommon/src/vespa/searchcommon/attribute/search_context_params.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "search_context_params.h"
#include <cstdint>
diff --git a/searchcommon/src/vespa/searchcommon/attribute/search_context_params.h b/searchcommon/src/vespa/searchcommon/attribute/search_context_params.h
index 538e7a01822..168f4215ef6 100644
--- a/searchcommon/src/vespa/searchcommon/attribute/search_context_params.h
+++ b/searchcommon/src/vespa/searchcommon/attribute/search_context_params.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcommon/src/vespa/searchcommon/attribute/status.cpp b/searchcommon/src/vespa/searchcommon/attribute/status.cpp
index f2bb49c348a..0509e9a51c4 100644
--- a/searchcommon/src/vespa/searchcommon/attribute/status.cpp
+++ b/searchcommon/src/vespa/searchcommon/attribute/status.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "status.h"
namespace search::attribute {
diff --git a/searchcommon/src/vespa/searchcommon/attribute/status.h b/searchcommon/src/vespa/searchcommon/attribute/status.h
index a624309da65..0280bfaae4e 100644
--- a/searchcommon/src/vespa/searchcommon/attribute/status.h
+++ b/searchcommon/src/vespa/searchcommon/attribute/status.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcommon/src/vespa/searchcommon/common/CMakeLists.txt b/searchcommon/src/vespa/searchcommon/common/CMakeLists.txt
index 46824bb9750..77e638d7193 100644
--- a/searchcommon/src/vespa/searchcommon/common/CMakeLists.txt
+++ b/searchcommon/src/vespa/searchcommon/common/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcommon_searchcommon_common OBJECT
SOURCES
compaction_strategy.cpp
diff --git a/searchcommon/src/vespa/searchcommon/common/compaction_strategy.cpp b/searchcommon/src/vespa/searchcommon/common/compaction_strategy.cpp
index c3377ed5857..22f50ba3049 100644
--- a/searchcommon/src/vespa/searchcommon/common/compaction_strategy.cpp
+++ b/searchcommon/src/vespa/searchcommon/common/compaction_strategy.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "compaction_strategy.h"
#include <iostream>
diff --git a/searchcommon/src/vespa/searchcommon/common/compaction_strategy.h b/searchcommon/src/vespa/searchcommon/common/compaction_strategy.h
index 1d52e4bf659..ced28436471 100644
--- a/searchcommon/src/vespa/searchcommon/common/compaction_strategy.h
+++ b/searchcommon/src/vespa/searchcommon/common/compaction_strategy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcommon/src/vespa/searchcommon/common/datatype.cpp b/searchcommon/src/vespa/searchcommon/common/datatype.cpp
index be4ed5c3715..1fe3a488aac 100644
--- a/searchcommon/src/vespa/searchcommon/common/datatype.cpp
+++ b/searchcommon/src/vespa/searchcommon/common/datatype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "datatype.h"
#include <vespa/config/common/exceptions.h>
diff --git a/searchcommon/src/vespa/searchcommon/common/datatype.h b/searchcommon/src/vespa/searchcommon/common/datatype.h
index 35f885aee53..e1c6a44b620 100644
--- a/searchcommon/src/vespa/searchcommon/common/datatype.h
+++ b/searchcommon/src/vespa/searchcommon/common/datatype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcommon/src/vespa/searchcommon/common/dictionary_config.cpp b/searchcommon/src/vespa/searchcommon/common/dictionary_config.cpp
index 0156a7f9d8c..e1b990e5660 100644
--- a/searchcommon/src/vespa/searchcommon/common/dictionary_config.cpp
+++ b/searchcommon/src/vespa/searchcommon/common/dictionary_config.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dictionary_config.h"
#include <ostream>
diff --git a/searchcommon/src/vespa/searchcommon/common/dictionary_config.h b/searchcommon/src/vespa/searchcommon/common/dictionary_config.h
index b429b910d4e..f51341ad799 100644
--- a/searchcommon/src/vespa/searchcommon/common/dictionary_config.h
+++ b/searchcommon/src/vespa/searchcommon/common/dictionary_config.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcommon/src/vespa/searchcommon/common/growstrategy.cpp b/searchcommon/src/vespa/searchcommon/common/growstrategy.cpp
index 534be3060a7..f35cdbaa640 100644
--- a/searchcommon/src/vespa/searchcommon/common/growstrategy.cpp
+++ b/searchcommon/src/vespa/searchcommon/common/growstrategy.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "growstrategy.h"
#include <iostream>
diff --git a/searchcommon/src/vespa/searchcommon/common/growstrategy.h b/searchcommon/src/vespa/searchcommon/common/growstrategy.h
index 60ca0977ea9..b9b4a42cf72 100644
--- a/searchcommon/src/vespa/searchcommon/common/growstrategy.h
+++ b/searchcommon/src/vespa/searchcommon/common/growstrategy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcommon/src/vespa/searchcommon/common/iblobconverter.h b/searchcommon/src/vespa/searchcommon/common/iblobconverter.h
index 428a1d7c296..6581c3e5ccb 100644
--- a/searchcommon/src/vespa/searchcommon/common/iblobconverter.h
+++ b/searchcommon/src/vespa/searchcommon/common/iblobconverter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcommon/src/vespa/searchcommon/common/range.h b/searchcommon/src/vespa/searchcommon/common/range.h
index f00afa0c0aa..ea2553c129b 100644
--- a/searchcommon/src/vespa/searchcommon/common/range.h
+++ b/searchcommon/src/vespa/searchcommon/common/range.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcommon/src/vespa/searchcommon/common/schema.cpp b/searchcommon/src/vespa/searchcommon/common/schema.cpp
index 735365f6aaf..af730f38018 100644
--- a/searchcommon/src/vespa/searchcommon/common/schema.cpp
+++ b/searchcommon/src/vespa/searchcommon/common/schema.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "schema.h"
#include <fstream>
diff --git a/searchcommon/src/vespa/searchcommon/common/schema.h b/searchcommon/src/vespa/searchcommon/common/schema.h
index 740cf4ffad6..f86bb3068c5 100644
--- a/searchcommon/src/vespa/searchcommon/common/schema.h
+++ b/searchcommon/src/vespa/searchcommon/common/schema.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcommon/src/vespa/searchcommon/common/schemaconfigurer.cpp b/searchcommon/src/vespa/searchcommon/common/schemaconfigurer.cpp
index 3750f8d1d62..ff69ca9818a 100644
--- a/searchcommon/src/vespa/searchcommon/common/schemaconfigurer.cpp
+++ b/searchcommon/src/vespa/searchcommon/common/schemaconfigurer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "schemaconfigurer.h"
#include <vespa/config-attributes.h>
diff --git a/searchcommon/src/vespa/searchcommon/common/schemaconfigurer.h b/searchcommon/src/vespa/searchcommon/common/schemaconfigurer.h
index 75d75bc256b..925aefcfa25 100644
--- a/searchcommon/src/vespa/searchcommon/common/schemaconfigurer.h
+++ b/searchcommon/src/vespa/searchcommon/common/schemaconfigurer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcommon/src/vespa/searchcommon/common/undefinedvalues.h b/searchcommon/src/vespa/searchcommon/common/undefinedvalues.h
index 3185cad34bd..3d545eeb603 100644
--- a/searchcommon/src/vespa/searchcommon/common/undefinedvalues.h
+++ b/searchcommon/src/vespa/searchcommon/common/undefinedvalues.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcommon/src/vespa/searchcommon/config/CMakeLists.txt b/searchcommon/src/vespa/searchcommon/config/CMakeLists.txt
index f499705e2b8..e97068a5662 100644
--- a/searchcommon/src/vespa/searchcommon/config/CMakeLists.txt
+++ b/searchcommon/src/vespa/searchcommon/config/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcommon_config INTERFACE
SOURCES
INSTALL lib64
diff --git a/searchcommon/src/vespa/searchcommon/config/subscriptionproxyng.h b/searchcommon/src/vespa/searchcommon/config/subscriptionproxyng.h
index fa5faaa1232..7683ca771b8 100644
--- a/searchcommon/src/vespa/searchcommon/config/subscriptionproxyng.h
+++ b/searchcommon/src/vespa/searchcommon/config/subscriptionproxyng.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/helper/legacysubscriber.h>
diff --git a/searchcore/CMakeLists.txt b/searchcore/CMakeLists.txt
index dfcc7542e09..f7d1b763117 100644
--- a/searchcore/CMakeLists.txt
+++ b/searchcore/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
@@ -20,6 +20,7 @@ vespa_define_module(
fileacquirer
LIBS
+ src/vespa/searchcore/bmcluster
src/vespa/searchcore/config
src/vespa/searchcore/grouping
src/vespa/searchcore/proton/attribute
@@ -49,6 +50,7 @@ vespa_define_module(
src/apps/vespa-feed-bm
src/apps/vespa-gen-testdocs
src/apps/vespa-proton-cmd
+ src/apps/vespa-redistribute-bm
src/apps/vespa-transactionlog-inspect
TESTS
@@ -61,6 +63,7 @@ vespa_define_module(
src/tests/proton/attribute/attribute_populator
src/tests/proton/attribute/attribute_usage_filter
src/tests/proton/attribute/attribute_usage_sampler_functor
+ src/tests/proton/attribute/attribute_usage_stats
src/tests/proton/attribute/attributes_state_explorer
src/tests/proton/attribute/document_field_extractor
src/tests/proton/attribute/document_field_populator
diff --git a/searchcore/pom.xml b/searchcore/pom.xml
index 1254e9db39a..a13390a0f8d 100644
--- a/searchcore/pom.xml
+++ b/searchcore/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/searchcore/src/apps/proton/CMakeLists.txt b/searchcore/src/apps/proton/CMakeLists.txt
index 6a1e0263a89..90aefd3dde5 100644
--- a/searchcore/src/apps/proton/CMakeLists.txt
+++ b/searchcore/src/apps/proton/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_proton_app
SOURCES
proton.cpp
diff --git a/searchcore/src/apps/proton/proton.cpp b/searchcore/src/apps/proton/proton.cpp
index 180815554fe..d7e073c9a56 100644
--- a/searchcore/src/apps/proton/proton.cpp
+++ b/searchcore/src/apps/proton/proton.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/server/proton.h>
#include <vespa/storage/storageserver/storagenode.h>
diff --git a/searchcore/src/apps/tests/CMakeLists.txt b/searchcore/src/apps/tests/CMakeLists.txt
index 42be4091f66..12e19d40aca 100644
--- a/searchcore/src/apps/tests/CMakeLists.txt
+++ b/searchcore/src/apps/tests/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_persistenceconformance_test_app TEST
SOURCES
persistenceconformance_test.cpp
diff --git a/searchcore/src/apps/tests/persistenceconformance_test.cpp b/searchcore/src/apps/tests/persistenceconformance_test.cpp
index 24db810b9df..8238eb21831 100644
--- a/searchcore/src/apps/tests/persistenceconformance_test.cpp
+++ b/searchcore/src/apps/tests/persistenceconformance_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchcore/src/apps/verify_ranksetup/CMakeLists.txt b/searchcore/src/apps/verify_ranksetup/CMakeLists.txt
index 01de50b36e0..cc8434ef46f 100644
--- a/searchcore/src/apps/verify_ranksetup/CMakeLists.txt
+++ b/searchcore/src/apps/verify_ranksetup/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_verify_ranksetup_app
SOURCES
verify_ranksetup.cpp
diff --git a/searchcore/src/apps/verify_ranksetup/verify-ranksetup.def b/searchcore/src/apps/verify_ranksetup/verify-ranksetup.def
index f2199c4e726..6825ed522a7 100644
--- a/searchcore/src/apps/verify_ranksetup/verify-ranksetup.def
+++ b/searchcore/src/apps/verify_ranksetup/verify-ranksetup.def
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search.core
file[].ref string
diff --git a/searchcore/src/apps/verify_ranksetup/verify_ranksetup.cpp b/searchcore/src/apps/verify_ranksetup/verify_ranksetup.cpp
index 7a3803626c8..019c7f898bf 100644
--- a/searchcore/src/apps/verify_ranksetup/verify_ranksetup.cpp
+++ b/searchcore/src/apps/verify_ranksetup/verify_ranksetup.cpp
@@ -1,8 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "config-verify-ranksetup.h"
#include <vespa/config-attributes.h>
-#include <vespa/config-imported-fields.h>
#include <vespa/config-indexschema.h>
#include <vespa/config-rank-profiles.h>
#include <vespa/config/config.h>
@@ -65,6 +64,7 @@ RankingExpressions make_expressions(const RankingExpressionsConfig &expressionsC
RankingExpressions expressions;
for (const auto &entry: expressionsCfg.expression) {
if (auto file = get_file(entry.fileref, myCfg)) {
+ LOG(debug, "Add expression %s with ref=%s and path=%s", entry.name.c_str(), entry.fileref.c_str(), file.value().c_str());
expressions.add(entry.name, file.value());
} else {
LOG(warning, "could not find file name for ranking expression '%s' (ref:'%s')",
diff --git a/searchcore/src/apps/vespa-dump-feed/CMakeLists.txt b/searchcore/src/apps/vespa-dump-feed/CMakeLists.txt
index f22e6c8b241..086b047c55a 100644
--- a/searchcore/src/apps/vespa-dump-feed/CMakeLists.txt
+++ b/searchcore/src/apps/vespa-dump-feed/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_vespa-dump-feed_app
SOURCES
vespa-dump-feed.cpp
diff --git a/searchcore/src/apps/vespa-dump-feed/vespa-dump-feed.cpp b/searchcore/src/apps/vespa-dump-feed/vespa-dump-feed.cpp
index a842caef379..8db828920c0 100644
--- a/searchcore/src/apps/vespa-dump-feed/vespa-dump-feed.cpp
+++ b/searchcore/src/apps/vespa-dump-feed/vespa-dump-feed.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config/config.h>
#include <vespa/config/print/fileconfigwriter.h>
diff --git a/searchcore/src/apps/vespa-feed-bm/CMakeLists.txt b/searchcore/src/apps/vespa-feed-bm/CMakeLists.txt
index fe83c89d83a..5934057e702 100644
--- a/searchcore/src/apps/vespa-feed-bm/CMakeLists.txt
+++ b/searchcore/src/apps/vespa-feed-bm/CMakeLists.txt
@@ -1,40 +1,8 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_vespa_feed_bm_app
SOURCES
vespa_feed_bm.cpp
- bm_cluster_controller.cpp
- bm_message_bus.cpp
- bm_storage_chain_builder.cpp
- bm_storage_link.cpp
- bucket_info_queue.cpp
- document_api_message_bus_bm_feed_handler.cpp
- pending_tracker.cpp
- pending_tracker_hash.cpp
- spi_bm_feed_handler.cpp
- storage_api_chain_bm_feed_handler.cpp
- storage_api_message_bus_bm_feed_handler.cpp
- storage_api_rpc_bm_feed_handler.cpp
- storage_reply_error_checker.cpp
OUTPUT_NAME vespa-feed-bm
DEPENDS
- searchcore_server
- searchcore_initializer
- searchcore_reprocessing
- searchcore_index
- searchcore_persistenceengine
- searchcore_docsummary
- searchcore_feedoperation
- searchcore_matching
- searchcore_attribute
- searchcore_documentmetastore
- searchcore_bucketdb
- searchcore_flushengine
- searchcore_pcommon
- searchcore_grouping
- searchcore_proton_metrics
- searchcore_fconfig
- storageserver_storageapp
- messagebus_messagebus-test
- messagebus
- searchlib_searchlib_uca
+ searchcore_bmcluster
)
diff --git a/searchcore/src/apps/vespa-feed-bm/bm_cluster_controller.h b/searchcore/src/apps/vespa-feed-bm/bm_cluster_controller.h
deleted file mode 100644
index 699036be5c9..00000000000
--- a/searchcore/src/apps/vespa-feed-bm/bm_cluster_controller.h
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#pragma once
-
-namespace storage::api { class StorageMessageAddress; }
-namespace storage::rpc { class SharedRpcResources; }
-
-namespace feedbm {
-
-/*
- * Fake cluster controller that sets cluster state to be up.
- */
-class BmClusterController
-{
- storage::rpc::SharedRpcResources& _shared_rpc_resources;
-public:
- BmClusterController(storage::rpc::SharedRpcResources& shared_rpc_resources_in);
- void set_cluster_up(bool distributor);
-};
-
-}
diff --git a/searchcore/src/apps/vespa-feed-bm/bucket_info_queue.cpp b/searchcore/src/apps/vespa-feed-bm/bucket_info_queue.cpp
deleted file mode 100644
index fc43402d68e..00000000000
--- a/searchcore/src/apps/vespa-feed-bm/bucket_info_queue.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include "bucket_info_queue.h"
-#include <vespa/persistence/spi/persistenceprovider.h>
-
-namespace feedbm {
-
-BucketInfoQueue::BucketInfoQueue(storage::spi::PersistenceProvider& provider, std::atomic<uint32_t>& errors)
- : _mutex(),
- _buckets(),
- _provider(provider),
- _errors(errors)
-{
-}
-
-BucketInfoQueue::~BucketInfoQueue()
-{
- get_bucket_info_loop();
-}
-
-void
-BucketInfoQueue::get_bucket_info_loop()
-{
- std::unique_lock guard(_mutex);
- while (!_buckets.empty()) {
- auto bucket = _buckets.front();
- _buckets.pop_front();
- guard.unlock();
- auto bucket_info = _provider.getBucketInfo(bucket);
- if (bucket_info.hasError()) {
- ++_errors;
- }
- guard.lock();
- }
-}
-
-}
-
diff --git a/searchcore/src/apps/vespa-feed-bm/runtest.sh b/searchcore/src/apps/vespa-feed-bm/runtest.sh
index adf299d424c..38dcc6cdd71 100755
--- a/searchcore/src/apps/vespa-feed-bm/runtest.sh
+++ b/searchcore/src/apps/vespa-feed-bm/runtest.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
numdocs=500000
stripe_bits=8
diff --git a/searchcore/src/apps/vespa-feed-bm/storage_api_chain_bm_feed_handler.cpp b/searchcore/src/apps/vespa-feed-bm/storage_api_chain_bm_feed_handler.cpp
deleted file mode 100644
index 82cf2df065f..00000000000
--- a/searchcore/src/apps/vespa-feed-bm/storage_api_chain_bm_feed_handler.cpp
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include "storage_api_chain_bm_feed_handler.h"
-#include "pending_tracker.h"
-#include "storage_reply_error_checker.h"
-#include "bm_storage_link_context.h"
-#include "bm_storage_link.h"
-#include <vespa/document/fieldvalue/document.h>
-#include <vespa/document/update/documentupdate.h>
-#include <vespa/storageapi/messageapi/storagemessage.h>
-#include <vespa/storageapi/message/persistence.h>
-#include <vespa/storageapi/message/state.h>
-#include <vespa/vdslib/state/clusterstate.h>
-#include <vespa/vdslib/state/cluster_state_bundle.h>
-#include <cassert>
-
-using document::Document;
-using document::DocumentId;
-using document::DocumentUpdate;
-
-namespace feedbm {
-
-namespace {
-
-std::shared_ptr<storage::api::StorageCommand> make_set_cluster_state_cmd() {
- storage::lib::ClusterStateBundle bundle(storage::lib::ClusterState("version:2 distributor:1 storage:1"));
- auto cmd = std::make_shared<storage::api::SetSystemStateCommand>(bundle);
- cmd->setPriority(storage::api::StorageMessage::VERYHIGH);
- return cmd;
-}
-
-}
-
-StorageApiChainBmFeedHandler::StorageApiChainBmFeedHandler(std::shared_ptr<BmStorageLinkContext> context, bool distributor)
- : IBmFeedHandler(),
- _name(vespalib::string("StorageApiChainBmFeedHandler(") + (distributor ? "distributor" : "service-layer") + ")"),
- _distributor(distributor),
- _context(std::move(context))
-{
- auto cmd = make_set_cluster_state_cmd();
- PendingTracker tracker(1);
- send_msg(std::move(cmd), tracker);
- tracker.drain();
-}
-
-StorageApiChainBmFeedHandler::~StorageApiChainBmFeedHandler() = default;
-
-void
-StorageApiChainBmFeedHandler::send_msg(std::shared_ptr<storage::api::StorageCommand> cmd, PendingTracker& pending_tracker)
-{
- cmd->setSourceIndex(0);
- auto bm_link = _context->bm_link;
- bm_link->retain(cmd->getMsgId(), pending_tracker);
- bm_link->sendDown(std::move(cmd));
-}
-
-void
-StorageApiChainBmFeedHandler::put(const document::Bucket& bucket, std::unique_ptr<Document> document, uint64_t timestamp, PendingTracker& tracker)
-{
- auto cmd = std::make_unique<storage::api::PutCommand>(bucket, std::move(document), timestamp);
- send_msg(std::move(cmd), tracker);
-}
-
-void
-StorageApiChainBmFeedHandler::update(const document::Bucket& bucket, std::unique_ptr<DocumentUpdate> document_update, uint64_t timestamp, PendingTracker& tracker)
-{
- auto cmd = std::make_unique<storage::api::UpdateCommand>(bucket, std::move(document_update), timestamp);
- send_msg(std::move(cmd), tracker);
-}
-
-void
-StorageApiChainBmFeedHandler::remove(const document::Bucket& bucket, const DocumentId& document_id, uint64_t timestamp, PendingTracker& tracker)
-{
- auto cmd = std::make_unique<storage::api::RemoveCommand>(bucket, document_id, timestamp);
- send_msg(std::move(cmd), tracker);
-}
-
-void
-StorageApiChainBmFeedHandler::get(const document::Bucket& bucket, vespalib::stringref field_set_string, const document::DocumentId& document_id, PendingTracker& tracker)
-{
- auto cmd = std::make_unique<storage::api::GetCommand>(bucket, document_id, field_set_string);
- send_msg(std::move(cmd), tracker);
-}
-
-void
-StorageApiChainBmFeedHandler::attach_bucket_info_queue(PendingTracker&)
-{
-}
-
-uint32_t
-StorageApiChainBmFeedHandler::get_error_count() const
-{
- return _context->bm_link->get_error_count();
-}
-
-const vespalib::string&
-StorageApiChainBmFeedHandler::get_name() const
-{
- return _name;
-}
-
-bool
-StorageApiChainBmFeedHandler::manages_timestamp() const
-{
- return _distributor;
-}
-
-}
diff --git a/searchcore/src/apps/vespa-feed-bm/storage_api_chain_bm_feed_handler.h b/searchcore/src/apps/vespa-feed-bm/storage_api_chain_bm_feed_handler.h
deleted file mode 100644
index 0c4b715122e..00000000000
--- a/searchcore/src/apps/vespa-feed-bm/storage_api_chain_bm_feed_handler.h
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#pragma once
-
-#include "i_bm_feed_handler.h"
-
-namespace storage::api { class StorageCommand; }
-
-namespace feedbm {
-
-struct BmStorageLinkContext;
-
-/*
- * Benchmark feed handler for feed to service layer or distributor
- * using storage api protocol directly on the storage chain.
- */
-class StorageApiChainBmFeedHandler : public IBmFeedHandler
-{
-private:
- vespalib::string _name;
- bool _distributor;
- std::shared_ptr<BmStorageLinkContext> _context;
- void send_msg(std::shared_ptr<storage::api::StorageCommand> cmd, PendingTracker& tracker);
-public:
- StorageApiChainBmFeedHandler(std::shared_ptr<BmStorageLinkContext> context, bool distributor);
- ~StorageApiChainBmFeedHandler();
- void put(const document::Bucket& bucket, std::unique_ptr<document::Document> document, uint64_t timestamp, PendingTracker& tracker) override;
- void update(const document::Bucket& bucket, std::unique_ptr<document::DocumentUpdate> document_update, uint64_t timestamp, PendingTracker& tracker) override;
- void remove(const document::Bucket& bucket, const document::DocumentId& document_id, uint64_t timestamp, PendingTracker& tracker) override;
- void get(const document::Bucket& bucket, vespalib::stringref field_set_string, const document::DocumentId& document_id, PendingTracker& tracker) override;
-
- void attach_bucket_info_queue(PendingTracker &tracker) override;
- uint32_t get_error_count() const override;
- const vespalib::string &get_name() const override;
- bool manages_timestamp() const override;
-};
-
-}
diff --git a/searchcore/src/apps/vespa-feed-bm/storage_api_message_bus_bm_feed_handler.cpp b/searchcore/src/apps/vespa-feed-bm/storage_api_message_bus_bm_feed_handler.cpp
deleted file mode 100644
index f63a8e33cc0..00000000000
--- a/searchcore/src/apps/vespa-feed-bm/storage_api_message_bus_bm_feed_handler.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include "storage_api_message_bus_bm_feed_handler.h"
-#include "bm_message_bus.h"
-#include "pending_tracker.h"
-#include <vespa/document/fieldvalue/document.h>
-#include <vespa/document/update/documentupdate.h>
-#include <vespa/storageapi/messageapi/storagemessage.h>
-#include <vespa/storageapi/message/persistence.h>
-#include <vespa/storageapi/mbusprot/storagecommand.h>
-
-using document::Document;
-using document::DocumentId;
-using document::DocumentUpdate;
-using storage::api::StorageMessageAddress;
-using storage::lib::NodeType;
-
-namespace feedbm {
-
-namespace {
- vespalib::string _Storage("storage");
-}
-StorageApiMessageBusBmFeedHandler::StorageApiMessageBusBmFeedHandler(BmMessageBus &message_bus, bool distributor)
- : IBmFeedHandler(),
- _name(vespalib::string("StorageApiMessageBusBmFeedHandler(") + (distributor ? "distributor" : "service-layer") + ")"),
- _distributor(distributor),
- _storage_address(std::make_unique<StorageMessageAddress>(&_Storage, distributor ? NodeType::DISTRIBUTOR : NodeType::STORAGE, 0)),
- _message_bus(message_bus),
- _route(_storage_address->to_mbus_route())
-{
-}
-
-StorageApiMessageBusBmFeedHandler::~StorageApiMessageBusBmFeedHandler() = default;
-
-void
-StorageApiMessageBusBmFeedHandler::send_msg(std::shared_ptr<storage::api::StorageCommand> cmd, PendingTracker& pending_tracker)
-{
- cmd->setSourceIndex(0);
- auto msg = std::make_unique<storage::mbusprot::StorageCommand>(cmd);
- _message_bus.send_msg(std::move(msg), _route, pending_tracker);
-}
-
-void
-StorageApiMessageBusBmFeedHandler::put(const document::Bucket& bucket, std::unique_ptr<Document> document, uint64_t timestamp, PendingTracker& tracker)
-{
- auto cmd = std::make_unique<storage::api::PutCommand>(bucket, std::move(document), timestamp);
- send_msg(std::move(cmd), tracker);
-}
-
-void
-StorageApiMessageBusBmFeedHandler::update(const document::Bucket& bucket, std::unique_ptr<DocumentUpdate> document_update, uint64_t timestamp, PendingTracker& tracker)
-{
- auto cmd = std::make_unique<storage::api::UpdateCommand>(bucket, std::move(document_update), timestamp);
- send_msg(std::move(cmd), tracker);
-}
-
-void
-StorageApiMessageBusBmFeedHandler::remove(const document::Bucket& bucket, const DocumentId& document_id, uint64_t timestamp, PendingTracker& tracker)
-{
- auto cmd = std::make_unique<storage::api::RemoveCommand>(bucket, document_id, timestamp);
- send_msg(std::move(cmd), tracker);
-}
-
-void
-StorageApiMessageBusBmFeedHandler::get(const document::Bucket& bucket, vespalib::stringref field_set_string, const document::DocumentId& document_id, PendingTracker& tracker)
-{
- auto cmd = std::make_unique<storage::api::GetCommand>(bucket, document_id, field_set_string);
- send_msg(std::move(cmd), tracker);
-}
-
-void
-StorageApiMessageBusBmFeedHandler::attach_bucket_info_queue(PendingTracker&)
-{
-}
-
-uint32_t
-StorageApiMessageBusBmFeedHandler::get_error_count() const
-{
- return _message_bus.get_error_count();
-}
-
-const vespalib::string&
-StorageApiMessageBusBmFeedHandler::get_name() const
-{
- return _name;
-}
-
-bool
-StorageApiMessageBusBmFeedHandler::manages_timestamp() const
-{
- return _distributor;
-}
-
-}
diff --git a/searchcore/src/apps/vespa-feed-bm/storage_api_message_bus_bm_feed_handler.h b/searchcore/src/apps/vespa-feed-bm/storage_api_message_bus_bm_feed_handler.h
deleted file mode 100644
index 2aafd0c6830..00000000000
--- a/searchcore/src/apps/vespa-feed-bm/storage_api_message_bus_bm_feed_handler.h
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#pragma once
-
-#include "i_bm_feed_handler.h"
-#include <vespa/messagebus/routing/route.h>
-
-namespace document { class DocumentTypeRepo; }
-namespace documentapi { class DocumentMessage; };
-namespace storage::api {
-class StorageCommand;
-class StorageMessageAddress;
-}
-
-namespace feedbm {
-
-class BmMessageBus;
-
-/*
- * Benchmark feed handler for feed to service layer or distributor
- * using storage api protocol over message bus.
- */
-class StorageApiMessageBusBmFeedHandler : public IBmFeedHandler
-{
- vespalib::string _name;
- bool _distributor;
- std::unique_ptr<storage::api::StorageMessageAddress> _storage_address;
- BmMessageBus& _message_bus;
- mbus::Route _route;
- void send_msg(std::shared_ptr<storage::api::StorageCommand> cmd, PendingTracker& tracker);
-public:
- StorageApiMessageBusBmFeedHandler(BmMessageBus &message_bus, bool distributor);
- ~StorageApiMessageBusBmFeedHandler();
- void put(const document::Bucket& bucket, std::unique_ptr<document::Document> document, uint64_t timestamp, PendingTracker& tracker) override;
- void update(const document::Bucket& bucket, std::unique_ptr<document::DocumentUpdate> document_update, uint64_t timestamp, PendingTracker& tracker) override;
- void remove(const document::Bucket& bucket, const document::DocumentId& document_id, uint64_t timestamp, PendingTracker& tracker) override;
- void get(const document::Bucket& bucket, vespalib::stringref field_set_string, const document::DocumentId& document_id, PendingTracker& tracker) override;
- void attach_bucket_info_queue(PendingTracker &tracker) override;
- uint32_t get_error_count() const override;
- const vespalib::string &get_name() const override;
- bool manages_timestamp() const override;
-};
-
-}
diff --git a/searchcore/src/apps/vespa-feed-bm/storage_api_rpc_bm_feed_handler.cpp b/searchcore/src/apps/vespa-feed-bm/storage_api_rpc_bm_feed_handler.cpp
deleted file mode 100644
index 04d49bba0a3..00000000000
--- a/searchcore/src/apps/vespa-feed-bm/storage_api_rpc_bm_feed_handler.cpp
+++ /dev/null
@@ -1,143 +0,0 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include "storage_api_rpc_bm_feed_handler.h"
-#include "pending_tracker.h"
-#include "pending_tracker_hash.h"
-#include "storage_reply_error_checker.h"
-#include <vespa/document/fieldvalue/document.h>
-#include <vespa/document/update/documentupdate.h>
-#include <vespa/storageapi/messageapi/storagemessage.h>
-#include <vespa/storageapi/message/persistence.h>
-#include <vespa/storage/storageserver/message_dispatcher.h>
-#include <vespa/storage/storageserver/rpc/message_codec_provider.h>
-#include <vespa/storage/storageserver/rpc/shared_rpc_resources.h>
-#include <vespa/storage/storageserver/rpc/storage_api_rpc_service.h>
-
-using document::Document;
-using document::DocumentId;
-using document::DocumentUpdate;
-using document::DocumentTypeRepo;
-using storage::api::StorageMessageAddress;
-using storage::rpc::SharedRpcResources;
-using storage::rpc::StorageApiRpcService;
-using storage::lib::NodeType;
-
-namespace feedbm {
-
-namespace {
- vespalib::string _Storage("storage");
-}
-
-class StorageApiRpcBmFeedHandler::MyMessageDispatcher : public storage::MessageDispatcher,
- public StorageReplyErrorChecker
-{
- PendingTrackerHash _pending_hash;
-public:
- MyMessageDispatcher()
- : storage::MessageDispatcher(),
- StorageReplyErrorChecker(),
- _pending_hash()
- {
- }
- ~MyMessageDispatcher() override;
- void dispatch_sync(std::shared_ptr<storage::api::StorageMessage> msg) override {
- check_error(*msg);
- release(msg->getMsgId());
- }
- void dispatch_async(std::shared_ptr<storage::api::StorageMessage> msg) override {
- check_error(*msg);
- release(msg->getMsgId());
- }
- void retain(uint64_t msg_id, PendingTracker &tracker) { _pending_hash.retain(msg_id, tracker); }
- void release(uint64_t msg_id) {
- auto tracker = _pending_hash.release(msg_id);
- if (tracker != nullptr) {
- tracker->release();
- } else {
- ++_errors;
- }
- }
-};
-
-StorageApiRpcBmFeedHandler::MyMessageDispatcher::~MyMessageDispatcher()
-{
-}
-
-StorageApiRpcBmFeedHandler::StorageApiRpcBmFeedHandler(SharedRpcResources& shared_rpc_resources_in,
- std::shared_ptr<const DocumentTypeRepo> repo,
- const StorageApiRpcService::Params& rpc_params,
- bool distributor)
- : IBmFeedHandler(),
- _name(vespalib::string("StorageApiRpcBmFeedHandler(") + (distributor ? "distributor" : "service-layer") + ")"),
- _distributor(distributor),
- _storage_address(std::make_unique<StorageMessageAddress>(&_Storage, distributor ? NodeType::DISTRIBUTOR : NodeType::STORAGE, 0)),
- _shared_rpc_resources(shared_rpc_resources_in),
- _message_dispatcher(std::make_unique<MyMessageDispatcher>()),
- _message_codec_provider(std::make_unique<storage::rpc::MessageCodecProvider>(repo)),
- _rpc_client(std::make_unique<storage::rpc::StorageApiRpcService>(*_message_dispatcher, _shared_rpc_resources, *_message_codec_provider, rpc_params))
-{
-}
-
-StorageApiRpcBmFeedHandler::~StorageApiRpcBmFeedHandler() = default;
-
-void
-StorageApiRpcBmFeedHandler::send_rpc(std::shared_ptr<storage::api::StorageCommand> cmd, PendingTracker& pending_tracker)
-{
- cmd->setSourceIndex(0);
- cmd->setAddress(*_storage_address);
- _message_dispatcher->retain(cmd->getMsgId(), pending_tracker);
- _rpc_client->send_rpc_v1_request(std::move(cmd));
-}
-
-void
-StorageApiRpcBmFeedHandler::put(const document::Bucket& bucket, std::unique_ptr<Document> document, uint64_t timestamp, PendingTracker& tracker)
-{
- auto cmd = std::make_unique<storage::api::PutCommand>(bucket, std::move(document), timestamp);
- send_rpc(std::move(cmd), tracker);
-}
-
-void
-StorageApiRpcBmFeedHandler::update(const document::Bucket& bucket, std::unique_ptr<DocumentUpdate> document_update, uint64_t timestamp, PendingTracker& tracker)
-{
- auto cmd = std::make_unique<storage::api::UpdateCommand>(bucket, std::move(document_update), timestamp);
- send_rpc(std::move(cmd), tracker);
-}
-
-void
-StorageApiRpcBmFeedHandler::remove(const document::Bucket& bucket, const DocumentId& document_id, uint64_t timestamp, PendingTracker& tracker)
-{
- auto cmd = std::make_unique<storage::api::RemoveCommand>(bucket, document_id, timestamp);
- send_rpc(std::move(cmd), tracker);
-}
-
-void
-StorageApiRpcBmFeedHandler::get(const document::Bucket& bucket, vespalib::stringref field_set_string, const document::DocumentId& document_id, PendingTracker& tracker)
-{
- auto cmd = std::make_unique<storage::api::GetCommand>(bucket, document_id, field_set_string);
- send_rpc(std::move(cmd), tracker);
-}
-
-void
-StorageApiRpcBmFeedHandler::attach_bucket_info_queue(PendingTracker&)
-{
-}
-
-uint32_t
-StorageApiRpcBmFeedHandler::get_error_count() const
-{
- return _message_dispatcher->get_error_count();
-}
-
-const vespalib::string&
-StorageApiRpcBmFeedHandler::get_name() const
-{
- return _name;
-}
-
-bool
-StorageApiRpcBmFeedHandler::manages_timestamp() const
-{
- return _distributor;
-}
-
-}
diff --git a/searchcore/src/apps/vespa-feed-bm/storage_api_rpc_bm_feed_handler.h b/searchcore/src/apps/vespa-feed-bm/storage_api_rpc_bm_feed_handler.h
deleted file mode 100644
index 5057d8889a5..00000000000
--- a/searchcore/src/apps/vespa-feed-bm/storage_api_rpc_bm_feed_handler.h
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#pragma once
-
-#include "i_bm_feed_handler.h"
-#include <vespa/storage/storageserver/rpc/storage_api_rpc_service.h>
-
-namespace document { class DocumentTypeRepo; }
-namespace storage::api {
-class StorageMessageAddress;
-class StorageCommand;
-}
-
-namespace storage::rpc {
-class MessageCodecProvider;
-class SharedRpcResources;
-}
-
-namespace feedbm {
-
-/*
- * Benchmark feed handler for feed to service layer or distributor
- * using storage api protocol over rpc.
- */
-class StorageApiRpcBmFeedHandler : public IBmFeedHandler
-{
- class MyMessageDispatcher;
- vespalib::string _name;
- bool _distributor;
- std::unique_ptr<storage::api::StorageMessageAddress> _storage_address;
- storage::rpc::SharedRpcResources& _shared_rpc_resources;
- std::unique_ptr<MyMessageDispatcher> _message_dispatcher;
- std::unique_ptr<storage::rpc::MessageCodecProvider> _message_codec_provider;
- std::unique_ptr<storage::rpc::StorageApiRpcService> _rpc_client;
-
- void send_rpc(std::shared_ptr<storage::api::StorageCommand> cmd, PendingTracker& tracker);
-public:
- StorageApiRpcBmFeedHandler(storage::rpc::SharedRpcResources& shared_rpc_resources_in,
- std::shared_ptr<const document::DocumentTypeRepo> repo,
- const storage::rpc::StorageApiRpcService::Params& rpc_params,
- bool distributor);
- ~StorageApiRpcBmFeedHandler();
- void put(const document::Bucket& bucket, std::unique_ptr<document::Document> document, uint64_t timestamp, PendingTracker& tracker) override;
- void update(const document::Bucket& bucket, std::unique_ptr<document::DocumentUpdate> document_update, uint64_t timestamp, PendingTracker& tracker) override;
- void remove(const document::Bucket& bucket, const document::DocumentId& document_id, uint64_t timestamp, PendingTracker& tracker) override;
- void get(const document::Bucket& bucket, vespalib::stringref field_set_string, const document::DocumentId& document_id, PendingTracker& tracker) override;
- void attach_bucket_info_queue(PendingTracker &tracker) override;
- uint32_t get_error_count() const override;
- const vespalib::string &get_name() const override;
- bool manages_timestamp() const override;
-};
-
-}
diff --git a/searchcore/src/apps/vespa-feed-bm/vespa_feed_bm.cpp b/searchcore/src/apps/vespa-feed-bm/vespa_feed_bm.cpp
index cd1920d237f..1ccd8221aff 100644
--- a/searchcore/src/apps/vespa-feed-bm/vespa_feed_bm.cpp
+++ b/searchcore/src/apps/vespa-feed-bm/vespa_feed_bm.cpp
@@ -1,80 +1,29 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include "bm_cluster_controller.h"
-#include "bm_message_bus.h"
-#include "bm_storage_chain_builder.h"
-#include "bm_storage_link_context.h"
-#include "pending_tracker.h"
-#include "spi_bm_feed_handler.h"
-#include "storage_api_chain_bm_feed_handler.h"
-#include "storage_api_message_bus_bm_feed_handler.h"
-#include "storage_api_rpc_bm_feed_handler.h"
-#include "document_api_message_bus_bm_feed_handler.h"
-#include <tests/proton/common/dummydbowner.h>
-#include <vespa/config-attributes.h>
-#include <vespa/config-bucketspaces.h>
-#include <vespa/config-imported-fields.h>
-#include <vespa/config-indexschema.h>
-#include <vespa/config-persistence.h>
-#include <vespa/config-rank-profiles.h>
-#include <vespa/config-slobroks.h>
-#include <vespa/config-stor-distribution.h>
-#include <vespa/config-stor-filestor.h>
-#include <vespa/config-summary.h>
-#include <vespa/config-summarymap.h>
-#include <vespa/config-upgrading.h>
-#include <vespa/config/common/configcontext.h>
-#include <vespa/document/datatype/documenttype.h>
-#include <vespa/document/fieldset/fieldsetrepo.h>
-#include <vespa/document/fieldvalue/intfieldvalue.h>
#include <vespa/document/repo/configbuilder.h>
#include <vespa/document/repo/document_type_repo_factory.h>
#include <vespa/document/repo/documenttyperepo.h>
-#include <vespa/document/test/make_bucket_space.h>
-#include <vespa/document/update/assignvalueupdate.h>
-#include <vespa/document/update/documentupdate.h>
#include <vespa/fastos/app.h>
-#include <vespa/messagebus/config-messagebus.h>
-#include <vespa/messagebus/testlib/slobrok.h>
-#include <vespa/metrics/config-metricsmanager.h>
-#include <vespa/searchcommon/common/schemaconfigurer.h>
-#include <vespa/searchcore/proton/common/alloc_config.h>
-#include <vespa/searchcore/proton/common/hw_info.h>
-#include <vespa/searchcore/proton/matching/querylimiter.h>
-#include <vespa/searchcore/proton/metrics/metricswireservice.h>
-#include <vespa/searchcore/proton/persistenceengine/ipersistenceengineowner.h>
-#include <vespa/searchcore/proton/persistenceengine/persistenceengine.h>
-#include <vespa/searchcore/proton/server/bootstrapconfig.h>
-#include <vespa/searchcore/proton/server/document_db_maintenance_config.h>
-#include <vespa/searchcore/proton/server/documentdb.h>
-#include <vespa/searchcore/proton/server/documentdbconfigmanager.h>
-#include <vespa/searchcore/proton/server/fileconfigmanager.h>
-#include <vespa/searchcore/proton/server/memoryconfigstore.h>
-#include <vespa/searchcore/proton/server/persistencehandlerproxy.h>
-#include <vespa/searchcore/proton/server/threading_service_config.h>
-#include <vespa/searchcore/proton/test/disk_mem_usage_notifier.h>
+#include <vespa/searchcore/bmcluster/avg_sampler.h>
+#include <vespa/searchcore/bmcluster/bm_cluster.h>
+#include <vespa/searchcore/bmcluster/bm_cluster_controller.h>
+#include <vespa/searchcore/bmcluster/bm_cluster_params.h>
+#include <vespa/searchcore/bmcluster/bm_feed.h>
+#include <vespa/searchcore/bmcluster/bm_feeder.h>
+#include <vespa/searchcore/bmcluster/bm_feed_params.h>
+#include <vespa/searchcore/bmcluster/bm_node.h>
+#include <vespa/searchcore/bmcluster/bm_node_stats.h>
+#include <vespa/searchcore/bmcluster/bm_node_stats_reporter.h>
+#include <vespa/searchcore/bmcluster/bm_range.h>
+#include <vespa/searchcore/bmcluster/bucket_selector.h>
+#include <vespa/searchcore/bmcluster/spi_bm_feed_handler.h>
#include <vespa/searchlib/index/dummyfileheadercontext.h>
-#include <vespa/searchlib/transactionlog/translogserver.h>
-#include <vespa/searchsummary/config/config-juniperrc.h>
-#include <vespa/slobrok/sbmirror.h>
-#include <vespa/storage/bucketdb/config-stor-bucket-init.h>
-#include <vespa/storage/common/i_storage_chain_builder.h>
-#include <vespa/storage/config/config-stor-bouncer.h>
-#include <vespa/storage/config/config-stor-communicationmanager.h>
-#include <vespa/storage/config/config-stor-distributormanager.h>
-#include <vespa/storage/config/config-stor-opslogger.h>
-#include <vespa/storage/config/config-stor-prioritymapping.h>
-#include <vespa/storage/config/config-stor-server.h>
-#include <vespa/storage/config/config-stor-status.h>
-#include <vespa/storage/config/config-stor-visitordispatcher.h>
-#include <vespa/storage/storageserver/rpc/shared_rpc_resources.h>
-#include <vespa/storage/visiting/config-stor-visitor.h>
-#include <vespa/storageserver/app/distributorprocess.h>
-#include <vespa/storageserver/app/servicelayerprocess.h>
#include <vespa/vespalib/io/fileutil.h>
+#include <vespa/vespalib/objects/nbostream.h>
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/lambdatask.h>
#include <vespa/vespalib/util/size_literals.h>
+#include <vespa/vespalib/util/threadstackexecutor.h>
#include <getopt.h>
#include <iostream>
#include <thread>
@@ -82,82 +31,33 @@
#include <vespa/log/log.h>
LOG_SETUP("vespa-feed-bm");
-using namespace cloud::config::filedistribution;
-using namespace config;
using namespace proton;
using namespace std::chrono_literals;
-using namespace vespa::config::search::core;
-using namespace vespa::config::search::summary;
-using namespace vespa::config::search;
-using vespa::config::content::PersistenceConfigBuilder;
-using vespa::config::content::StorDistributionConfigBuilder;
-using vespa::config::content::StorFilestorConfigBuilder;
-using vespa::config::content::UpgradingConfigBuilder;
-using vespa::config::content::core::BucketspacesConfig;
-using vespa::config::content::core::BucketspacesConfigBuilder;
-using vespa::config::content::core::StorBouncerConfigBuilder;
-using vespa::config::content::core::StorBucketInitConfigBuilder;
-using vespa::config::content::core::StorCommunicationmanagerConfigBuilder;
-using vespa::config::content::core::StorDistributormanagerConfigBuilder;
-using vespa::config::content::core::StorOpsloggerConfigBuilder;
-using vespa::config::content::core::StorPrioritymappingConfigBuilder;
-using vespa::config::content::core::StorServerConfigBuilder;
-using vespa::config::content::core::StorStatusConfigBuilder;
-using vespa::config::content::core::StorVisitorConfigBuilder;
-using vespa::config::content::core::StorVisitordispatcherConfigBuilder;
-using cloud::config::SlobroksConfigBuilder;
-using messagebus::MessagebusConfigBuilder;
-using metrics::MetricsmanagerConfigBuilder;
-using config::ConfigContext;
-using config::ConfigSet;
-using config::ConfigUri;
-using config::IConfigContext;
-using document::AssignValueUpdate;
-using document::BucketId;
-using document::BucketSpace;
-using document::Document;
-using document::DocumentId;
-using document::DocumentType;
using document::DocumentTypeRepo;
using document::DocumentTypeRepoFactory;
-using document::DocumentUpdate;
using document::DocumenttypesConfig;
using document::DocumenttypesConfigBuilder;
-using document::Field;
-using document::FieldSetRepo;
-using document::FieldUpdate;
-using document::IntFieldValue;
-using document::test::makeBucketSpace;
-using feedbm::BmClusterController;
-using feedbm::BmMessageBus;
-using feedbm::BmStorageChainBuilder;
-using feedbm::BmStorageLinkContext;
-using feedbm::IBmFeedHandler;
-using feedbm::DocumentApiMessageBusBmFeedHandler;
-using feedbm::SpiBmFeedHandler;
-using feedbm::StorageApiChainBmFeedHandler;
-using feedbm::StorageApiMessageBusBmFeedHandler;
-using feedbm::StorageApiRpcBmFeedHandler;
-using search::TuneFileDocumentDB;
+using search::bmcluster::AvgSampler;
+using search::bmcluster::BmClusterController;
+using search::bmcluster::IBmFeedHandler;
+using search::bmcluster::BmClusterParams;
+using search::bmcluster::BmCluster;
+using search::bmcluster::BmFeed;
+using search::bmcluster::BmFeedParams;
+using search::bmcluster::BmFeeder;
+using search::bmcluster::BmNode;
+using search::bmcluster::BmNodeStatsReporter;
+using search::bmcluster::BmRange;
+using search::bmcluster::BucketSelector;
using search::index::DummyFileHeaderContext;
-using search::index::Schema;
-using search::index::SchemaBuilder;
-using search::transactionlog::TransLogServer;
-using storage::rpc::SharedRpcResources;
-using storage::rpc::StorageApiRpcService;
-using storage::spi::PersistenceProvider;
-using vespalib::compression::CompressionConfig;
-using vespalib::makeLambdaTask;
-using proton::ThreadingServiceConfig;
-
-using DocumentDBMap = std::map<DocTypeName, std::shared_ptr<DocumentDB>>;
namespace {
vespalib::string base_dir = "testdb";
+constexpr int base_port = 9017;
-std::shared_ptr<DocumenttypesConfig> make_document_type() {
+std::shared_ptr<DocumenttypesConfig> make_document_types() {
using Struct = document::config_builder::Struct;
using DataType = document::DataType;
document::config_builder::DocumenttypesConfigBuilderHelper builder;
@@ -165,1184 +65,124 @@ std::shared_ptr<DocumenttypesConfig> make_document_type() {
return std::make_shared<DocumenttypesConfig>(builder.config());
}
-std::shared_ptr<AttributesConfig> make_attributes_config() {
- AttributesConfigBuilder builder;
- AttributesConfig::Attribute attribute;
- attribute.name = "int";
- attribute.datatype = AttributesConfig::Attribute::Datatype::INT32;
- builder.attribute.emplace_back(attribute);
- return std::make_shared<AttributesConfig>(builder);
-}
-
-std::shared_ptr<DocumentDBConfig> make_document_db_config(std::shared_ptr<DocumenttypesConfig> document_types, std::shared_ptr<const DocumentTypeRepo> repo, const DocTypeName& doc_type_name)
-{
- auto indexschema = std::make_shared<IndexschemaConfig>();
- auto attributes = make_attributes_config();
- auto summary = std::make_shared<SummaryConfig>();
- std::shared_ptr<Schema> schema(new Schema());
- SchemaBuilder::build(*indexschema, *schema);
- SchemaBuilder::build(*attributes, *schema);
- SchemaBuilder::build(*summary, *schema);
- return std::make_shared<DocumentDBConfig>(
- 1,
- std::make_shared<RankProfilesConfig>(),
- std::make_shared<matching::RankingConstants>(),
- std::make_shared<matching::RankingExpressions>(),
- std::make_shared<matching::OnnxModels>(),
- indexschema,
- attributes,
- summary,
- std::make_shared<SummarymapConfig>(),
- std::make_shared<JuniperrcConfig>(),
- document_types,
- repo,
- std::make_shared<ImportedFieldsConfig>(),
- std::make_shared<TuneFileDocumentDB>(),
- schema,
- std::make_shared<DocumentDBMaintenanceConfig>(),
- search::LogDocumentStore::Config(),
- std::make_shared<const ThreadingServiceConfig>(ThreadingServiceConfig::make(1)),
- std::make_shared<const AllocConfig>(),
- "client",
- doc_type_name.getName());
-}
-
-void
-make_slobroks_config(SlobroksConfigBuilder& slobroks, int slobrok_port)
+class BMParams : public BmClusterParams,
+ public BmFeedParams
{
- SlobroksConfigBuilder::Slobrok slobrok;
- slobrok.connectionspec = vespalib::make_string("tcp/localhost:%d", slobrok_port);
- slobroks.slobrok.push_back(std::move(slobrok));
-}
-
-void
-make_bucketspaces_config(BucketspacesConfigBuilder &bucketspaces)
-{
- BucketspacesConfigBuilder::Documenttype bucket_space_map;
- bucket_space_map.name = "test";
- bucket_space_map.bucketspace = "default";
- bucketspaces.documenttype.emplace_back(std::move(bucket_space_map));
-}
-
-class MyPersistenceEngineOwner : public IPersistenceEngineOwner
-{
- void setClusterState(BucketSpace, const storage::spi::ClusterState &) override { }
-};
-
-struct MyResourceWriteFilter : public IResourceWriteFilter
-{
- bool acceptWriteOperation() const override { return true; }
- State getAcceptState() const override { return IResourceWriteFilter::State(); }
-};
-
-class BucketSelector
-{
- uint32_t _thread_id;
- uint32_t _threads;
- uint32_t _num_buckets;
-public:
- BucketSelector(uint32_t thread_id_in, uint32_t threads_in, uint32_t num_buckets_in)
- : _thread_id(thread_id_in),
- _threads(threads_in),
- _num_buckets((num_buckets_in / _threads) * _threads)
- {
- }
- uint64_t operator()(uint32_t i) const {
- return (static_cast<uint64_t>(i) * _threads + _thread_id) % _num_buckets;
- }
-};
-
-class BMRange
-{
- uint32_t _start;
- uint32_t _end;
-public:
- BMRange(uint32_t start_in, uint32_t end_in)
- : _start(start_in),
- _end(end_in)
- {
- }
- uint32_t get_start() const { return _start; }
- uint32_t get_end() const { return _end; }
-};
-
-class BMParams {
- uint32_t _documents;
- uint32_t _client_threads;
uint32_t _get_passes;
- vespalib::string _indexing_sequencer;
uint32_t _put_passes;
uint32_t _update_passes;
uint32_t _remove_passes;
- uint32_t _rpc_network_threads;
- uint32_t _rpc_events_before_wakeup;
- uint32_t _rpc_targets_per_node;
- uint32_t _response_threads;
- uint32_t _max_pending;
- bool _enable_distributor;
- bool _enable_service_layer;
- bool _skip_get_spi_bucket_info;
- bool _use_document_api;
- bool _use_message_bus;
- bool _use_storage_chain;
- bool _use_async_message_handling_on_schedule;
- uint32_t _bucket_db_stripe_bits;
- uint32_t _distributor_stripes;
- bool _skip_communicationmanager_thread;
- uint32_t get_start(uint32_t thread_id) const {
- return (_documents / _client_threads) * thread_id + std::min(thread_id, _documents % _client_threads);
- }
public:
BMParams()
- : _documents(160000),
- _client_threads(1),
+ : BmClusterParams(),
+ BmFeedParams(),
_get_passes(0),
- _indexing_sequencer(),
_put_passes(2),
_update_passes(1),
- _remove_passes(2),
- _rpc_network_threads(1), // Same default as previous in stor-communicationmanager.def
- _rpc_events_before_wakeup(1), // Same default as in stor-communicationmanager.def
- _rpc_targets_per_node(1), // Same default as in stor-communicationmanager.def
- _response_threads(2), // Same default as in stor-filestor.def
- _max_pending(1000),
- _enable_distributor(false),
- _enable_service_layer(false),
- _skip_get_spi_bucket_info(false),
- _use_document_api(false),
- _use_message_bus(false),
- _use_storage_chain(false),
- _use_async_message_handling_on_schedule(false),
- _bucket_db_stripe_bits(0),
- _distributor_stripes(0),
- _skip_communicationmanager_thread(false) // Same default as in stor-communicationmanager.def
+ _remove_passes(2)
{
}
- BMRange get_range(uint32_t thread_id) const {
- return BMRange(get_start(thread_id), get_start(thread_id + 1));
- }
- uint32_t get_documents() const { return _documents; }
- uint32_t get_max_pending() const { return _max_pending; }
- uint32_t get_client_threads() const { return _client_threads; }
uint32_t get_get_passes() const { return _get_passes; }
- const vespalib::string & get_indexing_sequencer() const { return _indexing_sequencer; }
uint32_t get_put_passes() const { return _put_passes; }
uint32_t get_update_passes() const { return _update_passes; }
uint32_t get_remove_passes() const { return _remove_passes; }
- uint32_t get_rpc_network_threads() const { return _rpc_network_threads; }
- uint32_t get_rpc_events_before_wakup() const { return _rpc_events_before_wakeup; }
- uint32_t get_rpc_targets_per_node() const { return _rpc_targets_per_node; }
- uint32_t get_response_threads() const { return _response_threads; }
- bool get_enable_distributor() const { return _enable_distributor; }
- bool get_skip_get_spi_bucket_info() const { return _skip_get_spi_bucket_info; }
- bool get_use_document_api() const { return _use_document_api; }
- bool get_use_message_bus() const { return _use_message_bus; }
- bool get_use_storage_chain() const { return _use_storage_chain; }
- bool get_use_async_message_handling_on_schedule() const { return _use_async_message_handling_on_schedule; }
- uint32_t get_bucket_db_stripe_bits() const { return _bucket_db_stripe_bits; }
- uint32_t get_distributor_stripes() const { return _distributor_stripes; }
- bool get_skip_communicationmanager_thread() const { return _skip_communicationmanager_thread; }
- void set_documents(uint32_t documents_in) { _documents = documents_in; }
- void set_max_pending(uint32_t max_pending_in) { _max_pending = max_pending_in; }
- void set_client_threads(uint32_t threads_in) { _client_threads = threads_in; }
void set_get_passes(uint32_t get_passes_in) { _get_passes = get_passes_in; }
- void set_indexing_sequencer(vespalib::stringref sequencer) { _indexing_sequencer = sequencer; }
void set_put_passes(uint32_t put_passes_in) { _put_passes = put_passes_in; }
void set_update_passes(uint32_t update_passes_in) { _update_passes = update_passes_in; }
void set_remove_passes(uint32_t remove_passes_in) { _remove_passes = remove_passes_in; }
- void set_rpc_network_threads(uint32_t threads_in) { _rpc_network_threads = threads_in; }
- void set_rpc_events_before_wakeup(uint32_t value) { _rpc_events_before_wakeup = value; }
- void set_rpc_targets_per_node(uint32_t targets_in) { _rpc_targets_per_node = targets_in; }
- void set_response_threads(uint32_t threads_in) { _response_threads = threads_in; }
- void set_enable_distributor(bool value) { _enable_distributor = value; }
- void set_enable_service_layer(bool value) { _enable_service_layer = value; }
- void set_skip_get_spi_bucket_info(bool value) { _skip_get_spi_bucket_info = value; }
- void set_use_document_api(bool value) { _use_document_api = value; }
- void set_use_message_bus(bool value) { _use_message_bus = value; }
- void set_use_storage_chain(bool value) { _use_storage_chain = value; }
- void set_use_async_message_handling_on_schedule(bool value) { _use_async_message_handling_on_schedule = value; }
- void set_bucket_db_stripe_bits(uint32_t value) { _bucket_db_stripe_bits = value; }
- void set_distributor_stripes(uint32_t value) { _distributor_stripes = value; }
- void set_skip_communicationmanager_thread(bool value) { _skip_communicationmanager_thread = value; }
bool check() const;
- bool needs_service_layer() const { return _enable_service_layer || _enable_distributor || _use_storage_chain || _use_message_bus || _use_document_api; }
- bool needs_distributor() const { return _enable_distributor || _use_document_api; }
- bool needs_message_bus() const { return _use_message_bus || _use_document_api; }
};
bool
BMParams::check() const
{
- if (_client_threads < 1) {
- std::cerr << "Too few client threads: " << _client_threads << std::endl;
- return false;
- }
- if (_client_threads > 256) {
- std::cerr << "Too many client threads: " << _client_threads << std::endl;
+ if (!BmClusterParams::check()) {
return false;
}
- if (_documents < _client_threads) {
- std::cerr << "Too few documents: " << _documents << std::endl;
+ if (!BmFeedParams::check()) {
return false;
}
if (_put_passes < 1) {
std::cerr << "Put passes too low: " << _put_passes << std::endl;
return false;
}
- if (_rpc_network_threads < 1) {
- std::cerr << "Too few rpc network threads: " << _rpc_network_threads << std::endl;
- return false;
- }
- if (_rpc_targets_per_node < 1) {
- std::cerr << "Too few rpc targets per node: " << _rpc_targets_per_node << std::endl;
- return false;
- }
- if (_response_threads < 1) {
- std::cerr << "Too few response threads: " << _response_threads << std::endl;
+ if (get_groups() > 0 && !needs_distributor()) {
+ std::cerr << "grouped distribution only allowed when using distributor" << std::endl;
return false;
}
return true;
}
-class MyServiceLayerProcess : public storage::ServiceLayerProcess {
- PersistenceProvider& _provider;
-
-public:
- MyServiceLayerProcess(const config::ConfigUri & configUri,
- PersistenceProvider &provider,
- std::unique_ptr<storage::IStorageChainBuilder> chain_builder);
- ~MyServiceLayerProcess() override { shutdown(); }
-
- void shutdown() override;
- void setupProvider() override;
- PersistenceProvider& getProvider() override;
-};
-
-MyServiceLayerProcess::MyServiceLayerProcess(const config::ConfigUri & configUri,
- PersistenceProvider &provider,
- std::unique_ptr<storage::IStorageChainBuilder> chain_builder)
- : ServiceLayerProcess(configUri),
- _provider(provider)
-{
- if (chain_builder) {
- set_storage_chain_builder(std::move(chain_builder));
- }
-}
-
-void
-MyServiceLayerProcess::shutdown()
-{
- ServiceLayerProcess::shutdown();
-}
-
-void
-MyServiceLayerProcess::setupProvider()
-{
-}
-
-PersistenceProvider&
-MyServiceLayerProcess::getProvider()
-{
- return _provider;
}
-struct MyStorageConfig
-{
- vespalib::string config_id;
- DocumenttypesConfigBuilder documenttypes;
- StorDistributionConfigBuilder stor_distribution;
- StorBouncerConfigBuilder stor_bouncer;
- StorCommunicationmanagerConfigBuilder stor_communicationmanager;
- StorOpsloggerConfigBuilder stor_opslogger;
- StorPrioritymappingConfigBuilder stor_prioritymapping;
- UpgradingConfigBuilder upgrading;
- StorServerConfigBuilder stor_server;
- StorStatusConfigBuilder stor_status;
- BucketspacesConfigBuilder bucketspaces;
- MetricsmanagerConfigBuilder metricsmanager;
- SlobroksConfigBuilder slobroks;
- MessagebusConfigBuilder messagebus;
-
- MyStorageConfig(bool distributor, const vespalib::string& config_id_in, const DocumenttypesConfig& documenttypes_in,
- int slobrok_port, int mbus_port, int rpc_port, int status_port, const BMParams& params)
- : config_id(config_id_in),
- documenttypes(documenttypes_in),
- stor_distribution(),
- stor_bouncer(),
- stor_communicationmanager(),
- stor_opslogger(),
- stor_prioritymapping(),
- upgrading(),
- stor_server(),
- stor_status(),
- bucketspaces(),
- metricsmanager(),
- slobroks(),
- messagebus()
- {
- {
- auto &dc = stor_distribution;
- {
- StorDistributionConfigBuilder::Group group;
- {
- StorDistributionConfigBuilder::Group::Nodes node;
- node.index = 0;
- group.nodes.push_back(std::move(node));
- }
- group.index = "invalid";
- group.name = "invalid";
- group.capacity = 1.0;
- group.partitions = "";
- dc.group.push_back(std::move(group));
- }
- dc.redundancy = 1;
- dc.readyCopies = 1;
- }
- stor_server.isDistributor = distributor;
- stor_server.contentNodeBucketDbStripeBits = params.get_bucket_db_stripe_bits();
- if (distributor) {
- stor_server.rootFolder = "distributor";
- } else {
- stor_server.rootFolder = "storage";
- }
- make_slobroks_config(slobroks, slobrok_port);
- stor_communicationmanager.rpc.numNetworkThreads = params.get_rpc_network_threads();
- stor_communicationmanager.rpc.eventsBeforeWakeup = params.get_rpc_events_before_wakup();
- stor_communicationmanager.rpc.numTargetsPerNode = params.get_rpc_targets_per_node();
- stor_communicationmanager.mbusport = mbus_port;
- stor_communicationmanager.rpcport = rpc_port;
- stor_communicationmanager.skipThread = params.get_skip_communicationmanager_thread();
-
- stor_status.httpport = status_port;
- make_bucketspaces_config(bucketspaces);
- }
-
- ~MyStorageConfig();
-
- void add_builders(ConfigSet &set) {
- set.addBuilder(config_id, &documenttypes);
- set.addBuilder(config_id, &stor_distribution);
- set.addBuilder(config_id, &stor_bouncer);
- set.addBuilder(config_id, &stor_communicationmanager);
- set.addBuilder(config_id, &stor_opslogger);
- set.addBuilder(config_id, &stor_prioritymapping);
- set.addBuilder(config_id, &upgrading);
- set.addBuilder(config_id, &stor_server);
- set.addBuilder(config_id, &stor_status);
- set.addBuilder(config_id, &bucketspaces);
- set.addBuilder(config_id, &metricsmanager);
- set.addBuilder(config_id, &slobroks);
- set.addBuilder(config_id, &messagebus);
- }
-};
-
-MyStorageConfig::~MyStorageConfig() = default;
-
-struct MyServiceLayerConfig : public MyStorageConfig
-{
- PersistenceConfigBuilder persistence;
- StorFilestorConfigBuilder stor_filestor;
- StorBucketInitConfigBuilder stor_bucket_init;
- StorVisitorConfigBuilder stor_visitor;
-
- MyServiceLayerConfig(const vespalib::string& config_id_in, const DocumenttypesConfig& documenttypes_in,
- int slobrok_port, int mbus_port, int rpc_port, int status_port, const BMParams& params)
- : MyStorageConfig(false, config_id_in, documenttypes_in, slobrok_port, mbus_port, rpc_port, status_port, params),
- persistence(),
- stor_filestor(),
- stor_bucket_init(),
- stor_visitor()
- {
- stor_filestor.numResponseThreads = params.get_response_threads();
- stor_filestor.numNetworkThreads = params.get_rpc_network_threads();
- stor_filestor.useAsyncMessageHandlingOnSchedule = params.get_use_async_message_handling_on_schedule();
- }
-
- ~MyServiceLayerConfig();
-
- void add_builders(ConfigSet &set) {
- MyStorageConfig::add_builders(set);
- set.addBuilder(config_id, &persistence);
- set.addBuilder(config_id, &stor_filestor);
- set.addBuilder(config_id, &stor_bucket_init);
- set.addBuilder(config_id, &stor_visitor);
- }
-};
-
-MyServiceLayerConfig::~MyServiceLayerConfig() = default;
-
-struct MyDistributorConfig : public MyStorageConfig
-{
- StorDistributormanagerConfigBuilder stor_distributormanager;
- StorVisitordispatcherConfigBuilder stor_visitordispatcher;
-
- MyDistributorConfig(const vespalib::string& config_id_in, const DocumenttypesConfig& documenttypes_in,
- int slobrok_port, int mbus_port, int rpc_port, int status_port, const BMParams& params)
- : MyStorageConfig(true, config_id_in, documenttypes_in, slobrok_port, mbus_port, rpc_port, status_port, params),
- stor_distributormanager(),
- stor_visitordispatcher()
- {
- stor_distributormanager.numDistributorStripes = params.get_distributor_stripes();
- }
-
- ~MyDistributorConfig();
-
- void add_builders(ConfigSet &set) {
- MyStorageConfig::add_builders(set);
- set.addBuilder(config_id, &stor_distributormanager);
- set.addBuilder(config_id, &stor_visitordispatcher);
- }
-};
-
-MyDistributorConfig::~MyDistributorConfig() = default;
-
-struct MyRpcClientConfig {
- vespalib::string config_id;
- SlobroksConfigBuilder slobroks;
-
- MyRpcClientConfig(const vespalib::string &config_id_in, int slobrok_port)
- : config_id(config_id_in),
- slobroks()
- {
- make_slobroks_config(slobroks, slobrok_port);
- }
- ~MyRpcClientConfig();
-
- void add_builders(ConfigSet &set) {
- set.addBuilder(config_id, &slobroks);
- }
-};
-
-MyRpcClientConfig::~MyRpcClientConfig() = default;
-
-struct MyMessageBusConfig {
- vespalib::string config_id;
- SlobroksConfigBuilder slobroks;
- MessagebusConfigBuilder messagebus;
-
- MyMessageBusConfig(const vespalib::string &config_id_in, int slobrok_port)
- : config_id(config_id_in),
- slobroks(),
- messagebus()
- {
- make_slobroks_config(slobroks, slobrok_port);
- }
- ~MyMessageBusConfig();
-
- void add_builders(ConfigSet &set) {
- set.addBuilder(config_id, &slobroks);
- set.addBuilder(config_id, &messagebus);
- }
-};
-
-MyMessageBusConfig::~MyMessageBusConfig() = default;
-
-}
-
-struct PersistenceProviderFixture {
- std::shared_ptr<DocumenttypesConfig> _document_types;
+class Benchmark {
+ BMParams _params;
+ std::shared_ptr<const DocumenttypesConfig> _document_types;
std::shared_ptr<const DocumentTypeRepo> _repo;
- DocTypeName _doc_type_name;
- const DocumentType* _document_type;
- const Field& _field;
- std::shared_ptr<DocumentDBConfig> _document_db_config;
- vespalib::string _base_dir;
- DummyFileHeaderContext _file_header_context;
- int _tls_listen_port;
- int _slobrok_port;
- int _rpc_client_port;
- int _service_layer_mbus_port;
- int _service_layer_rpc_port;
- int _service_layer_status_port;
- int _distributor_mbus_port;
- int _distributor_rpc_port;
- int _distributor_status_port;
- TransLogServer _tls;
- vespalib::string _tls_spec;
- matching::QueryLimiter _query_limiter;
- vespalib::Clock _clock;
- DummyWireService _metrics_wire_service;
- MemoryConfigStores _config_stores;
- vespalib::ThreadStackExecutor _summary_executor;
- DummyDBOwner _document_db_owner;
- BucketSpace _bucket_space;
- std::shared_ptr<DocumentDB> _document_db;
- MyPersistenceEngineOwner _persistence_owner;
- MyResourceWriteFilter _write_filter;
- test::DiskMemUsageNotifier _disk_mem_usage_notifier;
- std::shared_ptr<PersistenceEngine> _persistence_engine;
- std::unique_ptr<const FieldSetRepo> _field_set_repo;
- uint32_t _bucket_bits;
- MyServiceLayerConfig _service_layer_config;
- MyDistributorConfig _distributor_config;
- MyRpcClientConfig _rpc_client_config;
- MyMessageBusConfig _message_bus_config;
- ConfigSet _config_set;
- std::shared_ptr<IConfigContext> _config_context;
- std::unique_ptr<IBmFeedHandler> _feed_handler;
- std::unique_ptr<mbus::Slobrok> _slobrok;
- std::shared_ptr<BmStorageLinkContext> _service_layer_chain_context;
- std::unique_ptr<MyServiceLayerProcess> _service_layer;
- std::unique_ptr<SharedRpcResources> _rpc_client_shared_rpc_resources;
- std::shared_ptr<BmStorageLinkContext> _distributor_chain_context;
- std::unique_ptr<storage::DistributorProcess> _distributor;
- std::unique_ptr<BmMessageBus> _message_bus;
-
- explicit PersistenceProviderFixture(const BMParams& params);
- ~PersistenceProviderFixture();
- void create_document_db(const BMParams & params);
- uint32_t num_buckets() const { return (1u << _bucket_bits); }
- BucketId make_bucket_id(uint32_t n) const { return BucketId(_bucket_bits, n & (num_buckets() - 1)); }
- document::Bucket make_bucket(uint32_t n) const { return document::Bucket(_bucket_space, make_bucket_id(n)); }
- DocumentId make_document_id(uint32_t n, uint32_t i) const;
- std::unique_ptr<Document> make_document(uint32_t n, uint32_t i) const;
- std::unique_ptr<DocumentUpdate> make_document_update(uint32_t n, uint32_t i) const;
- void create_buckets();
- void wait_slobrok(const vespalib::string &name);
- void start_service_layer(const BMParams& params);
- void start_distributor(const BMParams& params);
- void start_message_bus();
- void create_feed_handler(const BMParams& params);
- void shutdown_feed_handler();
- void shutdown_message_bus();
- void shutdown_distributor();
- void shutdown_service_layer();
-};
-
-PersistenceProviderFixture::PersistenceProviderFixture(const BMParams& params)
- : _document_types(make_document_type()),
- _repo(DocumentTypeRepoFactory::make(*_document_types)),
- _doc_type_name("test"),
- _document_type(_repo->getDocumentType(_doc_type_name.getName())),
- _field(_document_type->getField("int")),
- _document_db_config(make_document_db_config(_document_types, _repo, _doc_type_name)),
- _base_dir(base_dir),
- _file_header_context(),
- _tls_listen_port(9017),
- _slobrok_port(9018),
- _rpc_client_port(9019),
- _service_layer_mbus_port(9020),
- _service_layer_rpc_port(9021),
- _service_layer_status_port(9022),
- _distributor_mbus_port(9023),
- _distributor_rpc_port(9024),
- _distributor_status_port(9025),
- _tls("tls", _tls_listen_port, _base_dir, _file_header_context),
- _tls_spec(vespalib::make_string("tcp/localhost:%d", _tls_listen_port)),
- _query_limiter(),
- _clock(),
- _metrics_wire_service(),
- _config_stores(),
- _summary_executor(8, 128_Ki),
- _document_db_owner(),
- _bucket_space(makeBucketSpace(_doc_type_name.getName())),
- _document_db(),
- _persistence_owner(),
- _write_filter(),
- _disk_mem_usage_notifier(),
- _persistence_engine(),
- _field_set_repo(std::make_unique<const FieldSetRepo>(*_repo)),
- _bucket_bits(16),
- _service_layer_config("bm-servicelayer", *_document_types, _slobrok_port, _service_layer_mbus_port, _service_layer_rpc_port, _service_layer_status_port, params),
- _distributor_config("bm-distributor", *_document_types, _slobrok_port, _distributor_mbus_port, _distributor_rpc_port, _distributor_status_port, params),
- _rpc_client_config("bm-rpc-client", _slobrok_port),
- _message_bus_config("bm-message-bus", _slobrok_port),
- _config_set(),
- _config_context(std::make_shared<ConfigContext>(_config_set)),
- _feed_handler(),
- _slobrok(),
- _service_layer_chain_context(),
- _service_layer(),
- _rpc_client_shared_rpc_resources(),
- _distributor_chain_context(),
- _distributor(),
- _message_bus()
-{
- create_document_db(params);
- _persistence_engine = std::make_unique<PersistenceEngine>(_persistence_owner, _write_filter, _disk_mem_usage_notifier, -1, false);
- auto proxy = std::make_shared<PersistenceHandlerProxy>(_document_db);
- _persistence_engine->putHandler(_persistence_engine->getWLock(), _bucket_space, _doc_type_name, proxy);
- _service_layer_config.add_builders(_config_set);
- _distributor_config.add_builders(_config_set);
- _rpc_client_config.add_builders(_config_set);
- _message_bus_config.add_builders(_config_set);
- _feed_handler = std::make_unique<SpiBmFeedHandler>(*_persistence_engine, *_field_set_repo, params.get_skip_get_spi_bucket_info());
-}
-
-PersistenceProviderFixture::~PersistenceProviderFixture()
-{
- if (_persistence_engine) {
- _persistence_engine->destroyIterators();
- _persistence_engine->removeHandler(_persistence_engine->getWLock(), _bucket_space, _doc_type_name);
- }
- if (_document_db) {
- _document_db->close();
- }
-}
-
-void
-PersistenceProviderFixture::create_document_db(const BMParams & params)
-{
- vespalib::mkdir(_base_dir, false);
- vespalib::mkdir(_base_dir + "/" + _doc_type_name.getName(), false);
- vespalib::string input_cfg = _base_dir + "/" + _doc_type_name.getName() + "/baseconfig";
- {
- FileConfigManager fileCfg(input_cfg, "", _doc_type_name.getName());
- fileCfg.saveConfig(*_document_db_config, 1);
- }
- config::DirSpec spec(input_cfg + "/config-1");
- auto tuneFileDocDB = std::make_shared<TuneFileDocumentDB>();
- DocumentDBConfigHelper mgr(spec, _doc_type_name.getName());
- auto protonCfg = std::make_shared<ProtonConfigBuilder>();
- if ( ! params.get_indexing_sequencer().empty()) {
- vespalib::string sequencer = params.get_indexing_sequencer();
- std::transform(sequencer.begin(), sequencer.end(), sequencer.begin(), [](unsigned char c){ return std::toupper(c); });
- protonCfg->indexing.optimize = ProtonConfig::Indexing::getOptimize(sequencer);
- }
- auto bootstrap_config = std::make_shared<BootstrapConfig>(1,
- _document_types,
- _repo,
- std::move(protonCfg),
- std::make_shared<FiledistributorrpcConfig>(),
- std::make_shared<BucketspacesConfig>(),
- tuneFileDocDB, HwInfo());
- mgr.forwardConfig(bootstrap_config);
- mgr.nextGeneration(0ms);
- _document_db = DocumentDB::create(_base_dir, mgr.getConfig(), _tls_spec, _query_limiter, _clock, _doc_type_name,
- _bucket_space, *bootstrap_config->getProtonConfigSP(), _document_db_owner,
- _summary_executor, _summary_executor, *_persistence_engine, _tls,
- _metrics_wire_service, _file_header_context,
- _config_stores.getConfigStore(_doc_type_name.toString()),
- std::make_shared<vespalib::ThreadStackExecutor>(16, 128_Ki), HwInfo());
- _document_db->start();
- _document_db->waitForOnlineState();
-}
-
-DocumentId
-PersistenceProviderFixture::make_document_id(uint32_t n, uint32_t i) const
-{
- DocumentId id(vespalib::make_string("id::test:n=%u:%u", n & (num_buckets() - 1), i));
- return id;
-}
-
-std::unique_ptr<Document>
-PersistenceProviderFixture::make_document(uint32_t n, uint32_t i) const
-{
- auto id = make_document_id(n, i);
- auto document = std::make_unique<Document>(*_document_type, id);
- document->setRepo(*_repo);
- document->setFieldValue(_field, std::make_unique<IntFieldValue>(i));
- return document;
-}
-
-std::unique_ptr<DocumentUpdate>
-PersistenceProviderFixture::make_document_update(uint32_t n, uint32_t i) const
-{
- auto id = make_document_id(n, i);
- auto document_update = std::make_unique<DocumentUpdate>(*_repo, *_document_type, id);
- document_update->addUpdate(FieldUpdate(_field).addUpdate(AssignValueUpdate(IntFieldValue(15))));
- return document_update;
-}
-
-void
-PersistenceProviderFixture::create_buckets()
-{
- SpiBmFeedHandler feed_handler(*_persistence_engine, *_field_set_repo, false);
- for (unsigned int i = 0; i < num_buckets(); ++i) {
- feed_handler.create_bucket(make_bucket(i));
- }
-}
-
-void
-PersistenceProviderFixture::wait_slobrok(const vespalib::string &name)
-{
- auto &mirror = _rpc_client_shared_rpc_resources->slobrok_mirror();
- LOG(info, "Waiting for %s in slobrok", name.c_str());
- for (;;) {
- auto specs = mirror.lookup(name);
- if (!specs.empty()) {
- LOG(info, "Found %s in slobrok", name.c_str());
- return;
- }
- std::this_thread::sleep_for(100ms);
- }
-}
-
-void
-PersistenceProviderFixture::start_service_layer(const BMParams& params)
-{
- LOG(info, "start slobrok");
- _slobrok = std::make_unique<mbus::Slobrok>(_slobrok_port);
- LOG(info, "start service layer");
- config::ConfigUri config_uri("bm-servicelayer", _config_context);
- std::unique_ptr<BmStorageChainBuilder> chain_builder;
- if (params.get_use_storage_chain() && !params.needs_distributor()) {
- chain_builder = std::make_unique<BmStorageChainBuilder>();
- _service_layer_chain_context = chain_builder->get_context();
- }
- _service_layer = std::make_unique<MyServiceLayerProcess>(config_uri,
- *_persistence_engine,
- std::move(chain_builder));
- _service_layer->setupConfig(100ms);
- _service_layer->createNode();
- _service_layer->getNode().waitUntilInitialized();
- LOG(info, "start rpc client shared resources");
- config::ConfigUri client_config_uri("bm-rpc-client", _config_context);
- _rpc_client_shared_rpc_resources = std::make_unique<SharedRpcResources>
- (client_config_uri, _rpc_client_port, 100, params.get_rpc_events_before_wakup());
- _rpc_client_shared_rpc_resources->start_server_and_register_slobrok("bm-rpc-client");
- wait_slobrok("storage/cluster.storage/storage/0/default");
- wait_slobrok("storage/cluster.storage/storage/0");
- BmClusterController fake_controller(*_rpc_client_shared_rpc_resources);
- fake_controller.set_cluster_up(false);
-}
-
-void
-PersistenceProviderFixture::start_distributor(const BMParams& params)
-{
- config::ConfigUri config_uri("bm-distributor", _config_context);
- std::unique_ptr<BmStorageChainBuilder> chain_builder;
- if (params.get_use_storage_chain() && !params.get_use_document_api()) {
- chain_builder = std::make_unique<BmStorageChainBuilder>();
- _distributor_chain_context = chain_builder->get_context();
- }
- _distributor = std::make_unique<storage::DistributorProcess>(config_uri);
- if (chain_builder) {
- _distributor->set_storage_chain_builder(std::move(chain_builder));
- }
- _distributor->setupConfig(100ms);
- _distributor->createNode();
- wait_slobrok("storage/cluster.storage/distributor/0/default");
- wait_slobrok("storage/cluster.storage/distributor/0");
- BmClusterController fake_controller(*_rpc_client_shared_rpc_resources);
- fake_controller.set_cluster_up(true);
- // Wait for bucket ownership transfer safe time
- std::this_thread::sleep_for(2s);
-}
-
-void
-PersistenceProviderFixture::start_message_bus()
-{
- config::ConfigUri config_uri("bm-message-bus", _config_context);
- LOG(info, "Starting message bus");
- _message_bus = std::make_unique<BmMessageBus>(config_uri, _repo);
- LOG(info, "Started message bus");
-}
-
-void
-PersistenceProviderFixture::create_feed_handler(const BMParams& params)
-{
- StorageApiRpcService::Params rpc_params;
- // This is the same compression config as the default in stor-communicationmanager.def.
- rpc_params.compression_config = CompressionConfig(CompressionConfig::Type::LZ4, 3, 90, 1024);
- rpc_params.num_rpc_targets_per_node = params.get_rpc_targets_per_node();
- if (params.get_use_document_api()) {
- _feed_handler = std::make_unique<DocumentApiMessageBusBmFeedHandler>(*_message_bus);
- } else if (params.get_enable_distributor()) {
- if (params.get_use_storage_chain()) {
- assert(_distributor_chain_context);
- _feed_handler = std::make_unique<StorageApiChainBmFeedHandler>(_distributor_chain_context, true);
- } else if (params.get_use_message_bus()) {
- _feed_handler = std::make_unique<StorageApiMessageBusBmFeedHandler>(*_message_bus, true);
- } else {
- _feed_handler = std::make_unique<StorageApiRpcBmFeedHandler>(*_rpc_client_shared_rpc_resources, _repo, rpc_params, true);
- }
- } else if (params.needs_service_layer()) {
- if (params.get_use_storage_chain()) {
- assert(_service_layer_chain_context);
- _feed_handler = std::make_unique<StorageApiChainBmFeedHandler>(_service_layer_chain_context, false);
- } else if (params.get_use_message_bus()) {
- _feed_handler = std::make_unique<StorageApiMessageBusBmFeedHandler>(*_message_bus, false);
- } else {
- _feed_handler = std::make_unique<StorageApiRpcBmFeedHandler>(*_rpc_client_shared_rpc_resources, _repo, rpc_params, false);
- }
- }
-}
-
-void
-PersistenceProviderFixture::shutdown_feed_handler()
-{
- _feed_handler.reset();
-}
-
-void
-PersistenceProviderFixture::shutdown_message_bus()
-{
- if (_message_bus) {
- LOG(info, "stop message bus");
- _message_bus.reset();
- }
-}
-
-void
-PersistenceProviderFixture::shutdown_distributor()
-{
- if (_distributor) {
- LOG(info, "stop distributor");
- _distributor->getNode().requestShutdown("controlled shutdown");
- _distributor->shutdown();
- }
-}
-
-void
-PersistenceProviderFixture::shutdown_service_layer()
-{
- if (_rpc_client_shared_rpc_resources) {
- LOG(info, "stop rpc client shared resources");
- _rpc_client_shared_rpc_resources->shutdown();
- _rpc_client_shared_rpc_resources.reset();
- }
- if (_service_layer) {
- LOG(info, "stop service layer");
- _service_layer->getNode().requestShutdown("controlled shutdown");
- _service_layer->shutdown();
- }
- if (_slobrok) {
- LOG(info, "stop slobrok");
- _slobrok.reset();
- }
-}
-
-vespalib::nbostream
-make_put_feed(PersistenceProviderFixture &f, BMRange range, BucketSelector bucket_selector)
-{
- vespalib::nbostream serialized_feed;
- LOG(debug, "make_put_feed([%u..%u))", range.get_start(), range.get_end());
- for (unsigned int i = range.get_start(); i < range.get_end(); ++i) {
- auto n = bucket_selector(i);
- serialized_feed << f.make_bucket_id(n);
- auto document = f.make_document(n, i);
- document->serialize(serialized_feed);
- }
- return serialized_feed;
-}
-
-std::vector<vespalib::nbostream>
-make_feed(vespalib::ThreadStackExecutor &executor, const BMParams &bm_params, std::function<vespalib::nbostream(BMRange,BucketSelector)> func, uint32_t num_buckets, const vespalib::string &label)
-{
- LOG(info, "make_feed %s %u small documents", label.c_str(), bm_params.get_documents());
- std::vector<vespalib::nbostream> serialized_feed_v;
- auto start_time = std::chrono::steady_clock::now();
- serialized_feed_v.resize(bm_params.get_client_threads());
- for (uint32_t i = 0; i < bm_params.get_client_threads(); ++i) {
- auto range = bm_params.get_range(i);
- BucketSelector bucket_selector(i, bm_params.get_client_threads(), num_buckets);
- executor.execute(makeLambdaTask([&serialized_feed_v, i, range, &func, bucket_selector]()
- { serialized_feed_v[i] = func(range, bucket_selector); }));
- }
- executor.sync();
- auto end_time = std::chrono::steady_clock::now();
- std::chrono::duration<double> elapsed = end_time - start_time;
- LOG(info, "%8.2f %s data elements/s", bm_params.get_documents() / elapsed.count(), label.c_str());
- return serialized_feed_v;
-}
-
-void
-put_async_task(PersistenceProviderFixture &f, uint32_t max_pending, BMRange range, const vespalib::nbostream &serialized_feed, int64_t time_bias)
-{
- LOG(debug, "put_async_task([%u..%u))", range.get_start(), range.get_end());
- feedbm::PendingTracker pending_tracker(max_pending);
- f._feed_handler->attach_bucket_info_queue(pending_tracker);
- auto &repo = *f._repo;
- vespalib::nbostream is(serialized_feed.data(), serialized_feed.size());
- BucketId bucket_id;
- auto bucket_space = f._bucket_space;
- bool use_timestamp = !f._feed_handler->manages_timestamp();
- for (unsigned int i = range.get_start(); i < range.get_end(); ++i) {
- is >> bucket_id;
- document::Bucket bucket(bucket_space, bucket_id);
- auto document = std::make_unique<Document>(repo, is);
- f._feed_handler->put(bucket, std::move(document), (use_timestamp ? (time_bias + i) : 0), pending_tracker);
- }
- assert(is.empty());
- pending_tracker.drain();
-}
-
-class AvgSampler {
-private:
- double _total;
- size_t _samples;
+ std::unique_ptr<BmCluster> _cluster;
+ BmFeed _feed;
+ void benchmark_feed(BmFeeder& feeder, int64_t& time_bias, const std::vector<vespalib::nbostream>& serialized_feed, uint32_t passes, const vespalib::string &op_name);
public:
- AvgSampler() : _total(0), _samples(0) {}
- void sample(double val) {
- _total += val;
- ++_samples;
- }
- double avg() const { return _total / (double)_samples; }
+ explicit Benchmark(const BMParams& params);
+ ~Benchmark();
+ void run();
};
-void
-run_put_async_tasks(PersistenceProviderFixture& f, vespalib::ThreadStackExecutor& executor, int pass, int64_t& time_bias,
- const std::vector<vespalib::nbostream>& serialized_feed_v, const BMParams& bm_params, AvgSampler& sampler)
-{
- uint32_t old_errors = f._feed_handler->get_error_count();
- auto start_time = std::chrono::steady_clock::now();
- for (uint32_t i = 0; i < bm_params.get_client_threads(); ++i) {
- auto range = bm_params.get_range(i);
- executor.execute(makeLambdaTask([&f, max_pending = bm_params.get_max_pending(), &serialized_feed = serialized_feed_v[i], range, time_bias]()
- { put_async_task(f, max_pending, range, serialized_feed, time_bias); }));
- }
- executor.sync();
- auto end_time = std::chrono::steady_clock::now();
- std::chrono::duration<double> elapsed = end_time - start_time;
- uint32_t new_errors = f._feed_handler->get_error_count() - old_errors;
- double throughput = bm_params.get_documents() / elapsed.count();
- sampler.sample(throughput);
- LOG(info, "putAsync: pass=%u, errors=%u, puts/s: %8.2f", pass, new_errors, throughput);
- time_bias += bm_params.get_documents();
-}
-
-vespalib::nbostream
-make_update_feed(PersistenceProviderFixture &f, BMRange range, BucketSelector bucket_selector)
-{
- vespalib::nbostream serialized_feed;
- LOG(debug, "make_update_feed([%u..%u))", range.get_start(), range.get_end());
- for (unsigned int i = range.get_start(); i < range.get_end(); ++i) {
- auto n = bucket_selector(i);
- serialized_feed << f.make_bucket_id(n);
- auto document_update = f.make_document_update(n, i);
- document_update->serializeHEAD(serialized_feed);
- }
- return serialized_feed;
-}
-
-void
-update_async_task(PersistenceProviderFixture &f, uint32_t max_pending, BMRange range, const vespalib::nbostream &serialized_feed, int64_t time_bias)
-{
- LOG(debug, "update_async_task([%u..%u))", range.get_start(), range.get_end());
- feedbm::PendingTracker pending_tracker(max_pending);
- f._feed_handler->attach_bucket_info_queue(pending_tracker);
- auto &repo = *f._repo;
- vespalib::nbostream is(serialized_feed.data(), serialized_feed.size());
- BucketId bucket_id;
- auto bucket_space = f._bucket_space;
- bool use_timestamp = !f._feed_handler->manages_timestamp();
- for (unsigned int i = range.get_start(); i < range.get_end(); ++i) {
- is >> bucket_id;
- document::Bucket bucket(bucket_space, bucket_id);
- auto document_update = DocumentUpdate::createHEAD(repo, is);
- f._feed_handler->update(bucket, std::move(document_update), (use_timestamp ? (time_bias + i) : 0), pending_tracker);
- }
- assert(is.empty());
- pending_tracker.drain();
-}
-
-void
-run_update_async_tasks(PersistenceProviderFixture& f, vespalib::ThreadStackExecutor& executor, int pass, int64_t& time_bias,
- const std::vector<vespalib::nbostream>& serialized_feed_v, const BMParams& bm_params, AvgSampler& sampler)
-{
- uint32_t old_errors = f._feed_handler->get_error_count();
- auto start_time = std::chrono::steady_clock::now();
- for (uint32_t i = 0; i < bm_params.get_client_threads(); ++i) {
- auto range = bm_params.get_range(i);
- executor.execute(makeLambdaTask([&f, max_pending = bm_params.get_max_pending(), &serialized_feed = serialized_feed_v[i], range, time_bias]()
- { update_async_task(f, max_pending, range, serialized_feed, time_bias); }));
- }
- executor.sync();
- auto end_time = std::chrono::steady_clock::now();
- std::chrono::duration<double> elapsed = end_time - start_time;
- uint32_t new_errors = f._feed_handler->get_error_count() - old_errors;
- double throughput = bm_params.get_documents() / elapsed.count();
- sampler.sample(throughput);
- LOG(info, "updateAsync: pass=%u, errors=%u, updates/s: %8.2f", pass, new_errors, throughput);
- time_bias += bm_params.get_documents();
-}
-
-void
-get_async_task(PersistenceProviderFixture &f, uint32_t max_pending, BMRange range, const vespalib::nbostream &serialized_feed)
-{
- LOG(debug, "get_async_task([%u..%u))", range.get_start(), range.get_end());
- feedbm::PendingTracker pending_tracker(max_pending);
- vespalib::nbostream is(serialized_feed.data(), serialized_feed.size());
- BucketId bucket_id;
- vespalib::string all_fields(document::AllFields::NAME);
- auto bucket_space = f._bucket_space;
- for (unsigned int i = range.get_start(); i < range.get_end(); ++i) {
- is >> bucket_id;
- document::Bucket bucket(bucket_space, bucket_id);
- DocumentId document_id(is);
- f._feed_handler->get(bucket, all_fields, document_id, pending_tracker);
- }
- assert(is.empty());
- pending_tracker.drain();
-}
-
-void
-run_get_async_tasks(PersistenceProviderFixture& f, vespalib::ThreadStackExecutor& executor, int pass,
- const std::vector<vespalib::nbostream>& serialized_feed_v, const BMParams& bm_params, AvgSampler& sampler)
-{
- uint32_t old_errors = f._feed_handler->get_error_count();
- auto start_time = std::chrono::steady_clock::now();
- for (uint32_t i = 0; i < bm_params.get_client_threads(); ++i) {
- auto range = bm_params.get_range(i);
- executor.execute(makeLambdaTask([&f, max_pending = bm_params.get_max_pending(), &serialized_feed = serialized_feed_v[i], range]()
- { get_async_task(f, max_pending, range, serialized_feed); }));
- }
- executor.sync();
- auto end_time = std::chrono::steady_clock::now();
- std::chrono::duration<double> elapsed = end_time - start_time;
- uint32_t new_errors = f._feed_handler->get_error_count() - old_errors;
- double throughput = bm_params.get_documents() / elapsed.count();
- sampler.sample(throughput);
- LOG(info, "getAsync: pass=%u, errors=%u, gets/s: %8.2f", pass, new_errors, throughput);
-}
-
-vespalib::nbostream
-make_remove_feed(PersistenceProviderFixture &f, BMRange range, BucketSelector bucket_selector)
-{
- vespalib::nbostream serialized_feed;
- LOG(debug, "make_update_feed([%u..%u))", range.get_start(), range.get_end());
- for (unsigned int i = range.get_start(); i < range.get_end(); ++i) {
- auto n = bucket_selector(i);
- serialized_feed << f.make_bucket_id(n);
- auto document_id = f.make_document_id(n, i);
- vespalib::string raw_id = document_id.toString();
- serialized_feed.write(raw_id.c_str(), raw_id.size() + 1);
- }
- return serialized_feed;
-}
-
-void
-remove_async_task(PersistenceProviderFixture &f, uint32_t max_pending, BMRange range, const vespalib::nbostream &serialized_feed, int64_t time_bias)
-{
- LOG(debug, "remove_async_task([%u..%u))", range.get_start(), range.get_end());
- feedbm::PendingTracker pending_tracker(max_pending);
- f._feed_handler->attach_bucket_info_queue(pending_tracker);
- vespalib::nbostream is(serialized_feed.data(), serialized_feed.size());
- BucketId bucket_id;
- auto bucket_space = f._bucket_space;
- bool use_timestamp = !f._feed_handler->manages_timestamp();
- for (unsigned int i = range.get_start(); i < range.get_end(); ++i) {
- is >> bucket_id;
- document::Bucket bucket(bucket_space, bucket_id);
- DocumentId document_id(is);
- f._feed_handler->remove(bucket, document_id, (use_timestamp ? (time_bias + i) : 0), pending_tracker);
- }
- assert(is.empty());
- pending_tracker.drain();
-}
-
-void
-run_remove_async_tasks(PersistenceProviderFixture& f, vespalib::ThreadStackExecutor& executor, int pass, int64_t& time_bias,
- const std::vector<vespalib::nbostream>& serialized_feed_v, const BMParams& bm_params, AvgSampler& sampler)
+Benchmark::Benchmark(const BMParams& params)
+ : _params(params),
+ _document_types(make_document_types()),
+ _repo(document::DocumentTypeRepoFactory::make(*_document_types)),
+ _cluster(std::make_unique<BmCluster>(base_dir, base_port, _params, _document_types, _repo)),
+ _feed(_repo)
{
- uint32_t old_errors = f._feed_handler->get_error_count();
- auto start_time = std::chrono::steady_clock::now();
- for (uint32_t i = 0; i < bm_params.get_client_threads(); ++i) {
- auto range = bm_params.get_range(i);
- executor.execute(makeLambdaTask([&f, max_pending = bm_params.get_max_pending(), &serialized_feed = serialized_feed_v[i], range, time_bias]()
- { remove_async_task(f, max_pending, range, serialized_feed, time_bias); }));
- }
- executor.sync();
- auto end_time = std::chrono::steady_clock::now();
- std::chrono::duration<double> elapsed = end_time - start_time;
- uint32_t new_errors = f._feed_handler->get_error_count() - old_errors;
- double throughput = bm_params.get_documents() / elapsed.count();
- sampler.sample(throughput);
- LOG(info, "removeAsync: pass=%u, errors=%u, removes/s: %8.2f", pass, new_errors, throughput);
- time_bias += bm_params.get_documents();
+ _cluster->make_nodes();
}
-void
-benchmark_async_put(PersistenceProviderFixture& f, vespalib::ThreadStackExecutor& executor,
- int64_t& time_bias, const std::vector<vespalib::nbostream>& feed, const BMParams& params)
-{
- AvgSampler sampler;
- LOG(info, "--------------------------------");
- LOG(info, "putAsync: %u small documents, passes=%u", params.get_documents(), params.get_put_passes());
- for (uint32_t pass = 0; pass < params.get_put_passes(); ++pass) {
- run_put_async_tasks(f, executor, pass, time_bias, feed, params, sampler);
- }
- LOG(info, "putAsync: AVG puts/s: %8.2f", sampler.avg());
-}
+Benchmark::~Benchmark() = default;
void
-benchmark_async_update(PersistenceProviderFixture& f, vespalib::ThreadStackExecutor& executor,
- int64_t& time_bias, const std::vector<vespalib::nbostream>& feed, const BMParams& params)
+Benchmark::benchmark_feed(BmFeeder& feeder, int64_t& time_bias, const std::vector<vespalib::nbostream>& serialized_feed, uint32_t passes, const vespalib::string &op_name)
{
- if (params.get_update_passes() == 0) {
+ if (passes == 0) {
return;
}
AvgSampler sampler;
LOG(info, "--------------------------------");
- LOG(info, "updateAsync: %u small documents, passes=%u", params.get_documents(), params.get_update_passes());
- for (uint32_t pass = 0; pass < params.get_update_passes(); ++pass) {
- run_update_async_tasks(f, executor, pass, time_bias, feed, params, sampler);
- }
- LOG(info, "updateAsync: AVG updates/s: %8.2f", sampler.avg());
-}
-
-void
-benchmark_async_get(PersistenceProviderFixture& f, vespalib::ThreadStackExecutor& executor,
- const std::vector<vespalib::nbostream>& feed, const BMParams& params)
-{
- if (params.get_get_passes() == 0) {
- return;
- }
- LOG(info, "--------------------------------");
- LOG(info, "getAsync: %u small documents, passes=%u", params.get_documents(), params.get_get_passes());
- AvgSampler sampler;
- for (uint32_t pass = 0; pass < params.get_get_passes(); ++pass) {
- run_get_async_tasks(f, executor, pass, feed, params, sampler);
+ LOG(info, "%sAsync: %u small documents, passes=%u", op_name.c_str(), _params.get_documents(), passes);
+ for (uint32_t pass = 0; pass < passes; ++pass) {
+ feeder.run_feed_tasks(pass, time_bias, serialized_feed, _params, sampler, op_name);
}
- LOG(info, "getAsync: AVG gets/s: %8.2f", sampler.avg());
+ LOG(info, "%sAsync: AVG %s/s: %8.2f", op_name.c_str(), op_name.c_str(), sampler.avg());
}
void
-benchmark_async_remove(PersistenceProviderFixture& f, vespalib::ThreadStackExecutor& executor,
- int64_t& time_bias, const std::vector<vespalib::nbostream>& feed, const BMParams& params)
-{
- if (params.get_remove_passes() == 0) {
- return;
- }
- LOG(info, "--------------------------------");
- LOG(info, "removeAsync: %u small documents, passes=%u", params.get_documents(), params.get_remove_passes());
- AvgSampler sampler;
- for (uint32_t pass = 0; pass < params.get_remove_passes(); ++pass) {
- run_remove_async_tasks(f, executor, pass, time_bias, feed, params, sampler);
- }
- LOG(info, "removeAsync: AVG removes/s: %8.2f", sampler.avg());
-}
-
-void benchmark_async_spi(const BMParams &bm_params)
-{
- vespalib::rmdir(base_dir, true);
- PersistenceProviderFixture f(bm_params);
- auto &provider = *f._persistence_engine;
- LOG(info, "start initialize");
- provider.initialize();
- LOG(info, "create %u buckets", f.num_buckets());
- if (!bm_params.needs_distributor()) {
- f.create_buckets();
- }
- if (bm_params.needs_service_layer()) {
- f.start_service_layer(bm_params);
- }
- if (bm_params.needs_distributor()) {
- f.start_distributor(bm_params);
- }
- if (bm_params.needs_message_bus()) {
- f.start_message_bus();
- }
- f.create_feed_handler(bm_params);
- vespalib::ThreadStackExecutor executor(bm_params.get_client_threads(), 128_Ki);
- auto put_feed = make_feed(executor, bm_params, [&f](BMRange range, BucketSelector bucket_selector) { return make_put_feed(f, range, bucket_selector); }, f.num_buckets(), "put");
- auto update_feed = make_feed(executor, bm_params, [&f](BMRange range, BucketSelector bucket_selector) { return make_update_feed(f, range, bucket_selector); }, f.num_buckets(), "update");
- auto remove_feed = make_feed(executor, bm_params, [&f](BMRange range, BucketSelector bucket_selector) { return make_remove_feed(f, range, bucket_selector); }, f.num_buckets(), "remove");
- int64_t time_bias = 1;
- LOG(info, "Feed handler is '%s'", f._feed_handler->get_name().c_str());
- benchmark_async_put(f, executor, time_bias, put_feed, bm_params);
- benchmark_async_update(f, executor, time_bias, update_feed, bm_params);
- benchmark_async_get(f, executor, remove_feed, bm_params);
- benchmark_async_remove(f, executor, time_bias, remove_feed, bm_params);
+Benchmark::run()
+{
+ _cluster->start(_feed);
+ vespalib::ThreadStackExecutor executor(_params.get_client_threads(), 128_Ki);
+ BmFeeder feeder(_repo, *_cluster->get_feed_handler(), executor);
+ auto put_feed = _feed.make_feed(executor, _params, [this](BmRange range, BucketSelector bucket_selector) { return _feed.make_put_feed(range, bucket_selector); }, _feed.num_buckets(), "put");
+ auto update_feed = _feed.make_feed(executor, _params, [this](BmRange range, BucketSelector bucket_selector) { return _feed.make_update_feed(range, bucket_selector); }, _feed.num_buckets(), "update");
+ auto get_feed = _feed.make_feed(executor, _params, [this](BmRange range, BucketSelector bucket_selector) { return _feed.make_get_feed(range, bucket_selector); }, _feed.num_buckets(), "get");
+ auto remove_feed = _feed.make_feed(executor, _params, [this](BmRange range, BucketSelector bucket_selector) { return _feed.make_remove_feed(range, bucket_selector); }, _feed.num_buckets(), "remove");
+ BmNodeStatsReporter reporter(*_cluster, false);
+ reporter.start(500ms);
+ int64_t time_bias = std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::system_clock::now().time_since_epoch() - 24h).count();
+ LOG(info, "Feed handler is '%s'", feeder.get_feed_handler().get_name().c_str());
+ benchmark_feed(feeder, time_bias, put_feed, _params.get_put_passes(), "put");
+ reporter.report_now();
+ benchmark_feed(feeder, time_bias, update_feed, _params.get_update_passes(), "update");
+ reporter.report_now();
+ benchmark_feed(feeder, time_bias, get_feed, _params.get_get_passes(), "get");
+ reporter.report_now();
+ benchmark_feed(feeder, time_bias, remove_feed, _params.get_remove_passes(), "remove");
+ reporter.report_now();
+ reporter.stop();
LOG(info, "--------------------------------");
- f.shutdown_feed_handler();
- f.shutdown_message_bus();
- f.shutdown_distributor();
- f.shutdown_service_layer();
+ _cluster->stop();
}
class App : public FastOS_Application
@@ -1375,23 +215,25 @@ App::usage()
"[--bucket-db-stripe-bits bits]\n"
"[--client-threads threads]\n"
"[--distributor-stripes stripes]\n"
+ "[--documents documents]\n"
+ "[--enable-distributor]\n"
+ "[--enable-service-layer]\n"
"[--get-passes get-passes]\n"
+ "[--groups groups]\n"
"[--indexing-sequencer [latency,throughput,adaptive]]\n"
"[--max-pending max-pending]\n"
- "[--documents documents]\n"
+ "[--nodes-per-group nodes-per-group]\n"
"[--put-passes put-passes]\n"
- "[--update-passes update-passes]\n"
"[--remove-passes remove-passes]\n"
+ "[--response-threads threads]\n"
"[--rpc-events-before-wakeup events]\n"
"[--rpc-network-threads threads]\n"
"[--rpc-targets-per-node targets]\n"
- "[--response-threads threads]\n"
- "[--enable-distributor]\n"
- "[--enable-service-layer]\n"
"[--skip-communicationmanager-thread]\n"
"[--skip-get-spi-bucket-info]\n"
- "[--use-document-api]\n"
+ "[--update-passes update-passes]\n"
"[--use-async-message-handling]\n"
+ "[--use-document-api]\n"
"[--use-message-bus\n"
"[--use-storage-chain]" << std::endl;
}
@@ -1410,8 +252,10 @@ App::get_options()
{ "enable-distributor", 0, nullptr, 0 },
{ "enable-service-layer", 0, nullptr, 0 },
{ "get-passes", 1, nullptr, 0 },
+ { "groups", 1, nullptr, 0 },
{ "indexing-sequencer", 1, nullptr, 0 },
{ "max-pending", 1, nullptr, 0 },
+ { "nodes-per-group", 1, nullptr, 0 },
{ "put-passes", 1, nullptr, 0 },
{ "remove-passes", 1, nullptr, 0 },
{ "response-threads", 1, nullptr, 0 },
@@ -1424,7 +268,8 @@ App::get_options()
{ "use-async-message-handling", 0, nullptr, 0 },
{ "use-document-api", 0, nullptr, 0 },
{ "use-message-bus", 0, nullptr, 0 },
- { "use-storage-chain", 0, nullptr, 0 }
+ { "use-storage-chain", 0, nullptr, 0 },
+ { nullptr, 0, nullptr, 0 }
};
enum longopts_enum {
LONGOPT_BUCKET_DB_STRIPE_BITS,
@@ -1434,8 +279,10 @@ App::get_options()
LONGOPT_ENABLE_DISTRIBUTOR,
LONGOPT_ENABLE_SERVICE_LAYER,
LONGOPT_GET_PASSES,
+ LONGOPT_GROUPS,
LONGOPT_INDEXING_SEQUENCER,
LONGOPT_MAX_PENDING,
+ LONGOPT_NODES_PER_GROUP,
LONGOPT_PUT_PASSES,
LONGOPT_REMOVE_PASSES,
LONGOPT_RESPONSE_THREADS,
@@ -1477,12 +324,18 @@ App::get_options()
case LONGOPT_GET_PASSES:
_bm_params.set_get_passes(atoi(opt_argument));
break;
+ case LONGOPT_GROUPS:
+ _bm_params.set_groups(atoi(opt_argument));
+ break;
case LONGOPT_INDEXING_SEQUENCER:
_bm_params.set_indexing_sequencer(opt_argument);
break;
case LONGOPT_MAX_PENDING:
_bm_params.set_max_pending(atoi(opt_argument));
break;
+ case LONGOPT_NODES_PER_GROUP:
+ _bm_params.set_nodes_per_group(atoi(opt_argument));
+ break;
case LONGOPT_PUT_PASSES:
_bm_params.set_put_passes(atoi(opt_argument));
break;
@@ -1540,7 +393,9 @@ App::Main()
usage();
return 1;
}
- benchmark_async_spi(_bm_params);
+ vespalib::rmdir(base_dir, true);
+ Benchmark bm(_bm_params);
+ bm.run();
return 0;
}
diff --git a/searchcore/src/apps/vespa-gen-testdocs/CMakeLists.txt b/searchcore/src/apps/vespa-gen-testdocs/CMakeLists.txt
index dd40dab8ef2..6337c286b8e 100644
--- a/searchcore/src/apps/vespa-gen-testdocs/CMakeLists.txt
+++ b/searchcore/src/apps/vespa-gen-testdocs/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_vespa-gen-testdocs_app
SOURCES
vespa-gen-testdocs.cpp
diff --git a/searchcore/src/apps/vespa-gen-testdocs/vespa-gen-testdocs.cpp b/searchcore/src/apps/vespa-gen-testdocs/vespa-gen-testdocs.cpp
index 86efd8496f2..fcaac9796ad 100644
--- a/searchcore/src/apps/vespa-gen-testdocs/vespa-gen-testdocs.cpp
+++ b/searchcore/src/apps/vespa-gen-testdocs/vespa-gen-testdocs.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/rand48.h>
#include <vespa/vespalib/stllike/string.h>
diff --git a/searchcore/src/apps/vespa-proton-cmd/CMakeLists.txt b/searchcore/src/apps/vespa-proton-cmd/CMakeLists.txt
index 81d8f1e8543..fd2a78bae9d 100644
--- a/searchcore/src/apps/vespa-proton-cmd/CMakeLists.txt
+++ b/searchcore/src/apps/vespa-proton-cmd/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_vespa-proton-cmd_app
SOURCES
vespa-proton-cmd.cpp
diff --git a/searchcore/src/apps/vespa-proton-cmd/vespa-proton-cmd.cpp b/searchcore/src/apps/vespa-proton-cmd/vespa-proton-cmd.cpp
index 2ba3960dd1d..5c22c0b4196 100644
--- a/searchcore/src/apps/vespa-proton-cmd/vespa-proton-cmd.cpp
+++ b/searchcore/src/apps/vespa-proton-cmd/vespa-proton-cmd.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/slobrok/sbmirror.h>
#include <vespa/config/common/configsystem.h>
diff --git a/searchcore/src/apps/vespa-redistribute-bm/.gitignore b/searchcore/src/apps/vespa-redistribute-bm/.gitignore
new file mode 100644
index 00000000000..4a7424f7ef4
--- /dev/null
+++ b/searchcore/src/apps/vespa-redistribute-bm/.gitignore
@@ -0,0 +1 @@
+vespa-redistribute-bm
diff --git a/searchcore/src/apps/vespa-redistribute-bm/CMakeLists.txt b/searchcore/src/apps/vespa-redistribute-bm/CMakeLists.txt
new file mode 100644
index 00000000000..5b34c1aefb8
--- /dev/null
+++ b/searchcore/src/apps/vespa-redistribute-bm/CMakeLists.txt
@@ -0,0 +1,8 @@
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(searchcore_vespa_redistribute_bm_app
+ SOURCES
+ vespa_redistribute_bm.cpp
+ OUTPUT_NAME vespa-redistribute-bm
+ DEPENDS
+ searchcore_bmcluster
+)
diff --git a/searchcore/src/apps/vespa-redistribute-bm/vespa_redistribute_bm.cpp b/searchcore/src/apps/vespa-redistribute-bm/vespa_redistribute_bm.cpp
new file mode 100644
index 00000000000..b957226dd8a
--- /dev/null
+++ b/searchcore/src/apps/vespa-redistribute-bm/vespa_redistribute_bm.cpp
@@ -0,0 +1,688 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include <vespa/document/repo/configbuilder.h>
+#include <vespa/document/repo/document_type_repo_factory.h>
+#include <vespa/document/repo/documenttyperepo.h>
+#include <vespa/fastos/app.h>
+#include <vespa/searchcore/bmcluster/avg_sampler.h>
+#include <vespa/searchcore/bmcluster/bm_cluster.h>
+#include <vespa/searchcore/bmcluster/bm_cluster_controller.h>
+#include <vespa/searchcore/bmcluster/bm_cluster_params.h>
+#include <vespa/searchcore/bmcluster/bm_distribution.h>
+#include <vespa/searchcore/bmcluster/bm_feed.h>
+#include <vespa/searchcore/bmcluster/bm_feeder.h>
+#include <vespa/searchcore/bmcluster/bm_feed_params.h>
+#include <vespa/searchcore/bmcluster/bm_node.h>
+#include <vespa/searchcore/bmcluster/bm_node_stats.h>
+#include <vespa/searchcore/bmcluster/bm_node_stats_reporter.h>
+#include <vespa/searchcore/bmcluster/bm_range.h>
+#include <vespa/searchcore/bmcluster/bucket_db_snapshot_vector.h>
+#include <vespa/searchcore/bmcluster/bucket_selector.h>
+#include <vespa/searchcore/bmcluster/spi_bm_feed_handler.h>
+#include <vespa/searchlib/index/dummyfileheadercontext.h>
+#include <vespa/vespalib/io/fileutil.h>
+#include <vespa/vespalib/objects/nbostream.h>
+#include <vespa/vespalib/testkit/testapp.h>
+#include <vespa/vespalib/util/lambdatask.h>
+#include <vespa/vespalib/util/size_literals.h>
+#include <vespa/vespalib/util/threadstackexecutor.h>
+#include <getopt.h>
+#include <iostream>
+#include <thread>
+
+#include <vespa/log/log.h>
+LOG_SETUP("vespa-redistribute-bm");
+
+using namespace proton;
+using namespace std::chrono_literals;
+
+using document::DocumentTypeRepo;
+using document::DocumentTypeRepoFactory;
+using document::DocumenttypesConfig;
+using document::DocumenttypesConfigBuilder;
+using search::bmcluster::AvgSampler;
+using search::bmcluster::BmClusterController;
+using search::bmcluster::IBmFeedHandler;
+using search::bmcluster::BmClusterParams;
+using search::bmcluster::BmCluster;
+using search::bmcluster::BmFeed;
+using search::bmcluster::BmFeedParams;
+using search::bmcluster::BmFeeder;
+using search::bmcluster::BmNode;
+using search::bmcluster::BmNodeStatsReporter;
+using search::bmcluster::BmRange;
+using search::bmcluster::BucketSelector;
+using search::index::DummyFileHeaderContext;
+using storage::lib::State;
+using vespalib::makeLambdaTask;
+
+namespace {
+
+vespalib::string base_dir = "testdb";
+constexpr int base_port = 9017;
+
+std::shared_ptr<DocumenttypesConfig> make_document_types() {
+ using Struct = document::config_builder::Struct;
+ using DataType = document::DataType;
+ document::config_builder::DocumenttypesConfigBuilderHelper builder;
+ builder.document(42, "test", Struct("test.header").addField("int", DataType::T_INT), Struct("test.body"));
+ return std::make_shared<DocumenttypesConfig>(builder.config());
+}
+
+enum class Mode {
+ GROW,
+ SHRINK,
+ PERM_CRASH,
+ TEMP_CRASH,
+ REPLACE,
+ BAD
+};
+
+std::vector<vespalib::string> mode_names = {
+ "grow",
+ "shrink",
+ "perm-crash",
+ "temp-crash",
+ "replace"
+};
+
+vespalib::string bad_mode_name("bad");
+
+Mode get_mode(const vespalib::string& mode_name) {
+ for (uint32_t i = 0; i < mode_names.size(); ++i) {
+ if (mode_name == mode_names[i]) {
+ return static_cast<Mode>(i);
+ }
+ }
+ return Mode::BAD;
+}
+
+vespalib::string& get_mode_name(Mode mode) {
+ uint32_t i = static_cast<uint32_t>(mode);
+ return (i < mode_names.size()) ? mode_names[i] : bad_mode_name;
+}
+
+enum ReFeedMode {
+ NONE,
+ PUT,
+ UPDATE,
+ BAD
+};
+
+std::vector<vespalib::string> refeed_mode_names = {
+ "none",
+ "put",
+ "update"
+};
+
+ReFeedMode get_refeed_mode(const vespalib::string& refeed_mode_name) {
+ for (uint32_t i = 0; i < refeed_mode_names.size(); ++i) {
+ if (refeed_mode_name == refeed_mode_names[i]) {
+ return static_cast<ReFeedMode>(i);
+ }
+ }
+ return ReFeedMode::BAD;
+}
+
+class BMParams : public BmClusterParams,
+ public BmFeedParams
+{
+ uint32_t _flip_nodes;
+ Mode _mode;
+ ReFeedMode _refeed_mode;
+ bool _use_feed_settle;
+public:
+ BMParams();
+ uint32_t get_flip_nodes() const noexcept { return _flip_nodes; }
+ Mode get_mode() const noexcept { return _mode; }
+ ReFeedMode get_refeed_mode() const noexcept { return _refeed_mode; }
+ bool get_use_feed_settle() const noexcept { return _use_feed_settle; }
+ void set_flip_nodes(uint32_t value) { _flip_nodes = value; }
+ void set_mode(Mode value) { _mode = value; }
+ void set_refeed_mode(ReFeedMode value) { _refeed_mode = value; }
+ void set_use_feed_settle(bool value) { _use_feed_settle = value; }
+ bool check() const;
+};
+
+BMParams::BMParams()
+ : BmClusterParams(),
+ BmFeedParams(),
+ _flip_nodes(1u),
+ _mode(Mode::GROW),
+ _refeed_mode(ReFeedMode::NONE),
+ _use_feed_settle(false)
+{
+ set_enable_service_layer(true);
+ set_enable_distributor(true);
+ set_use_document_api(true);
+ set_nodes_per_group(4);
+}
+
+
+bool
+BMParams::check() const
+{
+ if (!BmClusterParams::check()) {
+ return false;
+ }
+ if (!BmFeedParams::check()) {
+ return false;
+ }
+ if (get_num_nodes() < 2u) {
+ std::cerr << "Too few nodes: " << get_num_nodes() << std::endl;
+ return false;
+ }
+ if (_mode == Mode::REPLACE) {
+ if (_flip_nodes * 2 > get_num_nodes()) {
+ std::cerr << "Too many flip nodes (" << _flip_nodes << ") with " << get_num_nodes() << " nodes (replace mode)" << std::endl;
+ return false;
+ }
+ } else {
+ if (_flip_nodes >= get_num_nodes()) {
+ std::cerr << "Too many flip nodes (" << _flip_nodes << ") with " << get_num_nodes() << " nodes (" << get_mode_name(_mode) << " mode)" << std::endl;
+ return false;
+ }
+ }
+ if (_mode == Mode::BAD) {
+ std::cerr << "Bad mode" << std::endl;
+ return false;
+ }
+ if (_refeed_mode == ReFeedMode::BAD) {
+ std::cerr << "Bad refeed-mode" << std::endl;
+ return false;
+ }
+ return true;
+}
+
+class ReFeed {
+ vespalib::ThreadStackExecutor _top_executor;
+ vespalib::ThreadStackExecutor _executor;
+ BmFeeder _feeder;
+ const vespalib::string _op_name;
+ const BMParams& _params;
+ int64_t& _time_bias;
+ const std::vector<vespalib::nbostream>& _feed;
+
+ void run();
+public:
+ ReFeed(const BMParams& params, std::shared_ptr<const DocumentTypeRepo> repo, IBmFeedHandler& feed_handler, int64_t& time_bias, const std::vector<vespalib::nbostream>& feed, const vespalib::string& op_name);
+ ~ReFeed();
+};
+
+ReFeed::ReFeed(const BMParams& params, std::shared_ptr<const DocumentTypeRepo> repo, IBmFeedHandler& feed_handler, int64_t& time_bias, const std::vector<vespalib::nbostream>& feed, const vespalib::string& op_name)
+ : _top_executor(1, 128_Ki),
+ _executor(params.get_client_threads(), 128_Ki),
+ _feeder(repo, feed_handler, _executor),
+ _op_name(op_name),
+ _params(params),
+ _time_bias(time_bias),
+ _feed(feed)
+{
+ _top_executor.execute(makeLambdaTask([this]()
+ { run(); }));
+}
+
+ReFeed::~ReFeed()
+{
+ _feeder.stop();
+ _top_executor.sync();
+ _top_executor.shutdown();
+}
+
+void
+ReFeed::run()
+{
+ std::this_thread::sleep_for(2s);
+ _feeder.run_feed_tasks_loop(_time_bias, _feed, _params, _op_name);
+}
+
+}
+
+class Benchmark {
+ BMParams _params;
+ std::shared_ptr<const DocumenttypesConfig> _document_types;
+ std::shared_ptr<const DocumentTypeRepo> _repo;
+ std::unique_ptr<BmCluster> _cluster;
+ BmFeed _feed;
+ std::vector<vespalib::nbostream> _put_feed;
+ std::vector<vespalib::nbostream> _update_feed;
+ int64_t _time_bias;
+
+ void adjust_cluster_state_before_feed();
+ void adjust_cluster_state_after_feed();
+ void adjust_cluster_state_after_first_redistribution();
+ void make_feed();
+ void feed();
+ std::chrono::duration<double> redistribute();
+
+public:
+ explicit Benchmark(const BMParams& params);
+ ~Benchmark();
+ void run();
+};
+
+Benchmark::Benchmark(const BMParams& params)
+ : _params(params),
+ _document_types(make_document_types()),
+ _repo(document::DocumentTypeRepoFactory::make(*_document_types)),
+ _cluster(std::make_unique<BmCluster>(base_dir, base_port, _params, _document_types, _repo)),
+ _feed(_repo),
+ _put_feed(),
+ _update_feed(),
+ _time_bias(std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::system_clock::now().time_since_epoch() - 24h).count())
+{
+ _cluster->make_nodes();
+}
+
+Benchmark::~Benchmark() = default;
+
+void
+Benchmark::adjust_cluster_state_before_feed()
+{
+ auto& dist = _cluster->get_real_distribution();
+ auto& mode_name = get_mode_name(_params.get_mode());
+ switch (_params.get_mode()) {
+ case Mode::GROW:
+ case Mode::REPLACE:
+ for (uint32_t i = 0; i < _params.get_flip_nodes(); ++i) {
+ dist.set_node_state(i, State::DOWN);
+ }
+ LOG(info, "Mode %s: Taking down %u node(s) initially", mode_name.c_str(), _params.get_flip_nodes());
+ break;
+ default:
+ LOG(info, "Mode %s: No cluster state adjust before feed", mode_name.c_str());
+ }
+ dist.commit_cluster_state_change();
+}
+
+void
+Benchmark::adjust_cluster_state_after_feed()
+{
+ auto& dist = _cluster->get_real_distribution();
+ auto& mode_name = get_mode_name(_params.get_mode());
+ switch (_params.get_mode()) {
+ case Mode::GROW:
+ for (uint32_t i = 0; i < _params.get_flip_nodes(); ++i) {
+ dist.set_node_state(i, State::UP);
+ }
+ LOG(info, "Mode %s: taking up %u node(s)", mode_name.c_str(), _params.get_flip_nodes());
+ break;
+ case Mode::SHRINK:
+ for (uint32_t i = 0; i < _params.get_flip_nodes(); ++i) {
+ dist.set_node_state(i, State::RETIRED);
+ }
+ LOG(info, "Mode %s: Retiring %u node(s)", mode_name.c_str(), _params.get_flip_nodes());
+ break;
+ case Mode::PERM_CRASH:
+ case Mode::TEMP_CRASH:
+ for (uint32_t i = 0; i < _params.get_flip_nodes(); ++i) {
+ dist.set_node_state(i, State::DOWN);
+ }
+ LOG(info, "Mode %s: taking down %u node(s)", mode_name.c_str(), _params.get_flip_nodes());
+ break;
+ case Mode::REPLACE:
+ for (uint32_t i = 0; i < _params.get_flip_nodes(); ++i) {
+ dist.set_node_state(i, State::UP);
+ }
+ for (uint32_t i = 0; i < _params.get_flip_nodes(); ++i) {
+ dist.set_node_state(i + _params.get_flip_nodes(), State::RETIRED);
+ }
+ LOG(info, "Mode %s: Taking up %u node(s) and retiring %u node(s)", mode_name.c_str(), _params.get_flip_nodes(), _params.get_flip_nodes());
+ break;
+ default:
+ LOG(info, "Mode %s: No cluster state adjust after feed", mode_name.c_str());
+ }
+ dist.commit_cluster_state_change();
+}
+
+void
+Benchmark::adjust_cluster_state_after_first_redistribution()
+{
+ auto& dist = _cluster->get_real_distribution();
+ auto& mode_name = get_mode_name(_params.get_mode());
+ switch (_params.get_mode()) {
+ case Mode::TEMP_CRASH:
+ for (uint32_t i = 0; i < _params.get_flip_nodes(); ++i) {
+ dist.set_node_state(i, State::UP);
+ }
+ LOG(info, "Mode %s: taking up %u node(s)", mode_name.c_str(), _params.get_flip_nodes());
+ break;
+ default:
+ LOG(info, "Mode %s: No cluster state adjust after first redistribution", mode_name.c_str());
+ }
+ dist.commit_cluster_state_change();
+}
+
+void
+Benchmark::make_feed()
+{
+ vespalib::ThreadStackExecutor executor(_params.get_client_threads(), 128_Ki);
+ _put_feed = _feed.make_feed(executor, _params, [this](BmRange range, BucketSelector bucket_selector) { return _feed.make_put_feed(range, bucket_selector); }, _feed.num_buckets(), "put");
+ if (_params.get_refeed_mode() == ReFeedMode::UPDATE) {
+ _update_feed = _feed.make_feed(executor, _params, [this](BmRange range, BucketSelector bucket_selector) { return _feed.make_update_feed(range, bucket_selector); }, _feed.num_buckets(), "update");
+ }
+}
+
+void
+Benchmark::feed()
+{
+ vespalib::ThreadStackExecutor executor(_params.get_client_threads(), 128_Ki);
+ BmFeeder feeder(_repo, *_cluster->get_feed_handler(), executor);
+ BmNodeStatsReporter reporter(*_cluster, false);
+ reporter.start(500ms);
+ LOG(info, "Feed handler is '%s'", feeder.get_feed_handler().get_name().c_str());
+ AvgSampler sampler;
+ feeder.run_feed_tasks(0, _time_bias, _put_feed, _params, sampler, "put");
+ reporter.report_now();
+ if (_params.get_use_feed_settle()) {
+ LOG(info, "Settling feed");
+ std::this_thread::sleep_for(2s);
+ reporter.report_now();
+ }
+}
+
+
+std::chrono::duration<double>
+Benchmark::redistribute()
+{
+ BmNodeStatsReporter reporter(*_cluster, true);
+ auto before = std::chrono::steady_clock::now();
+ reporter.start(500ms);
+ _cluster->propagate_cluster_state();
+ reporter.report_now();
+ std::unique_ptr<ReFeed> refeed;
+ switch (_params.get_refeed_mode()) {
+ case ReFeedMode::PUT:
+ refeed = std::make_unique<ReFeed>(_params, _repo, *_cluster->get_feed_handler(), _time_bias, _put_feed, "put");
+ break;
+ case ReFeedMode::UPDATE:
+ refeed = std::make_unique<ReFeed>(_params, _repo, *_cluster->get_feed_handler(), _time_bias, _update_feed, "update");
+ break;
+ default:
+ ;
+ }
+ for (;;) {
+ auto duration = std::chrono::steady_clock::now() - reporter.get_change_time();
+ if (duration >= 6s) {
+ break;
+ }
+ std::this_thread::sleep_for(100ms);
+ }
+ refeed.reset();
+ return reporter.get_change_time() - before;
+}
+
+void
+Benchmark::run()
+{
+ adjust_cluster_state_before_feed();
+ _cluster->start(_feed);
+ make_feed();
+ feed();
+ LOG(info, "--------------------------------");
+ auto old_snapshot = _cluster->get_bucket_db_snapshots();
+ adjust_cluster_state_after_feed();
+ auto elapsed = redistribute();
+ auto new_snapshot = _cluster->get_bucket_db_snapshots();
+ uint32_t moved_docs = new_snapshot.count_moved_documents(old_snapshot);
+ uint32_t lost_unique_docs = new_snapshot.count_lost_unique_documents(old_snapshot);
+ LOG(info, "Redistributed %u docs in %5.3f seconds, %4.2f docs/s, %u lost unique docs", moved_docs, elapsed.count(), moved_docs / elapsed.count(), lost_unique_docs);
+ if (_params.get_mode() == Mode::TEMP_CRASH) {
+ if (_params.get_use_feed_settle()) {
+ LOG(info, "Settling redistribution");
+ std::this_thread::sleep_for(2s);
+ }
+ adjust_cluster_state_after_first_redistribution();
+ elapsed = redistribute();
+ LOG(info, "Cleanup of %u docs in %5.3f seconds, %4.2f docs/s, %u refound unique docs", moved_docs, elapsed.count(), moved_docs / elapsed.count(), lost_unique_docs);
+ }
+ _cluster->stop();
+}
+
+class App : public FastOS_Application
+{
+ BMParams _bm_params;
+public:
+ App();
+ ~App() override;
+ void usage();
+ bool get_options();
+ int Main() override;
+};
+
+App::App()
+ : _bm_params()
+{
+}
+
+App::~App() = default;
+
+void
+App::usage()
+{
+ std::cerr <<
+ "vespa-redistribute-bm version 0.0\n"
+ "\n"
+ "USAGE:\n";
+ std::cerr <<
+ "vespa-redistribute-bm\n"
+ "[--bucket-db-stripe-bits bits]\n"
+ "[--client-threads threads]\n"
+ "[--distributor-merge-busy-wait distributor-merge-busy-wait]\n"
+ "[--distributor-stripes stripes]\n"
+ "[--doc-store-chunk-compression-level level]\n"
+ "[--doc-store-chunk-maxbytes maxbytes]\n"
+ "[--documents documents]\n"
+ "[--flip-nodes flip-nodes]\n"
+ "[--groups groups]\n"
+ "[--ignore-merge-queue-limit]\n"
+ "[--indexing-sequencer [latency,throughput,adaptive]]\n"
+ "[--max-merges-per-node max-merges-per-node]\n"
+ "[--max-merge-queue-size max-merge-queue-size]\n"
+ "[--max-pending max-pending]\n"
+ "[--max-pending-idealstate-operations max-pending-idealstate-operations]\n"
+ "[--mbus-distributor-node-max-pending-count] count\n"
+ "[--mode [grow, shrink, perm-crash, temp-crash, replace]\n"
+ "[--nodes-per-group nodes-per-group]\n"
+ "[--redundancy redundancy]\n"
+ "[--refeed-mode [none, put, update]\n"
+ "[--rpc-events-before-wakeup events]\n"
+ "[--rpc-network-threads threads]\n"
+ "[--rpc-targets-per-node targets]\n"
+ "[--response-threads threads]\n"
+ "[--skip-communicationmanager-thread]\n"
+ "[--use-async-message-handling]\n"
+ "[--use-feed-settle]" << std::endl;
+}
+
+bool
+App::get_options()
+{
+ int c;
+ const char *opt_argument = nullptr;
+ int long_opt_index = 0;
+ static struct option long_opts[] = {
+ { "bucket-db-stripe-bits", 1, nullptr, 0 },
+ { "client-threads", 1, nullptr, 0 },
+ { "distributor-merge-busy-wait", 1, nullptr, 0 },
+ { "distributor-stripes", 1, nullptr, 0 },
+ { "doc-store-chunk-compression-level", 1, nullptr, 0 },
+ { "doc-store-chunk-maxbytes", 1, nullptr, 0 },
+ { "documents", 1, nullptr, 0 },
+ { "flip-nodes", 1, nullptr, 0 },
+ { "groups", 1, nullptr, 0 },
+ { "ignore-merge-queue-limit", 0, nullptr, 0 },
+ { "indexing-sequencer", 1, nullptr, 0 },
+ { "max-merges-per-node", 1, nullptr, 0 },
+ { "max-merge-queue-size", 1, nullptr, 0 },
+ { "max-pending", 1, nullptr, 0 },
+ { "max-pending-idealstate-operations", 1, nullptr, 0 },
+ { "mbus-distributor-node-max-pending-count", 1, nullptr, 0 },
+ { "mode", 1, nullptr, 0 },
+ { "nodes-per-group", 1, nullptr, 0 },
+ { "redundancy", 1, nullptr, 0 },
+ { "refeed-mode", 1, nullptr, 0 },
+ { "response-threads", 1, nullptr, 0 },
+ { "rpc-events-before-wakeup", 1, nullptr, 0 },
+ { "rpc-network-threads", 1, nullptr, 0 },
+ { "rpc-targets-per-node", 1, nullptr, 0 },
+ { "skip-communicationmanager-thread", 0, nullptr, 0 },
+ { "use-async-message-handling", 0, nullptr, 0 },
+ { "use-feed-settle", 0, nullptr, 0 },
+ { nullptr, 0, nullptr, 0 }
+ };
+ enum longopts_enum {
+ LONGOPT_BUCKET_DB_STRIPE_BITS,
+ LONGOPT_CLIENT_THREADS,
+ LONGOPT_DISTRIBUTOR_MERGE_BUSY_WAIT,
+ LONGOPT_DISTRIBUTOR_STRIPES,
+ LONGOPT_DOC_STORE_CHUNK_COMPRESSION_LEVEL,
+ LONGOPT_DOC_STORE_CHUNK_MAXBYTES,
+ LONGOPT_DOCUMENTS,
+ LONGOPT_FLIP_NODES,
+ LONGOPT_GROUPS,
+ LONGOPT_IGNORE_MERGE_QUEUE_LIMIT,
+ LONGOPT_INDEXING_SEQUENCER,
+ LONGOPT_MAX_MERGES_PER_NODE,
+ LONGOPT_MAX_MERGE_QUEUE_SIZE,
+ LONGOPT_MAX_PENDING,
+ LONGOPT_MAX_PENDING_IDEALSTATE_OPERATIONS,
+ LONGOPT_MBUS_DISTRIBUTOR_NODE_MAX_PENDING_COUNT,
+ LONGOPT_MODE,
+ LONGOPT_NODES_PER_GROUP,
+ LONGOPT_REDUNDANCY,
+ LONGOPT_REFEED,
+ LONGOPT_RESPONSE_THREADS,
+ LONGOPT_RPC_EVENTS_BEFORE_WAKEUP,
+ LONGOPT_RPC_NETWORK_THREADS,
+ LONGOPT_RPC_TARGETS_PER_NODE,
+ LONGOPT_SKIP_COMMUNICATIONMANAGER_THREAD,
+ LONGOPT_USE_ASYNC_MESSAGE_HANDLING,
+ LONGOPT_USE_FEED_SETTLE
+ };
+ int opt_index = 1;
+ resetOptIndex(opt_index);
+ while ((c = GetOptLong("", opt_argument, opt_index, long_opts, &long_opt_index)) != -1) {
+ switch (c) {
+ case 0:
+ switch(long_opt_index) {
+ case LONGOPT_BUCKET_DB_STRIPE_BITS:
+ _bm_params.set_bucket_db_stripe_bits(atoi(opt_argument));
+ break;
+ case LONGOPT_CLIENT_THREADS:
+ _bm_params.set_client_threads(atoi(opt_argument));
+ break;
+ case LONGOPT_DISTRIBUTOR_MERGE_BUSY_WAIT:
+ _bm_params.set_distributor_merge_busy_wait(atoi(opt_argument));
+ break;
+ case LONGOPT_DISTRIBUTOR_STRIPES:
+ _bm_params.set_distributor_stripes(atoi(opt_argument));
+ break;
+ case LONGOPT_DOC_STORE_CHUNK_COMPRESSION_LEVEL:
+ _bm_params.set_doc_store_chunk_compression_level(atoi(opt_argument));
+ break;
+ case LONGOPT_DOC_STORE_CHUNK_MAXBYTES:
+ _bm_params.set_doc_store_chunk_maxbytes(atoi(opt_argument));
+ break;
+ case LONGOPT_DOCUMENTS:
+ _bm_params.set_documents(atoi(opt_argument));
+ break;
+ case LONGOPT_FLIP_NODES:
+ _bm_params.set_flip_nodes(atoi(opt_argument));
+ break;
+ case LONGOPT_GROUPS:
+ _bm_params.set_groups(atoi(opt_argument));
+ break;
+ case LONGOPT_IGNORE_MERGE_QUEUE_LIMIT:
+ _bm_params.set_disable_queue_limits_for_chained_merges(true);
+ break;
+ case LONGOPT_INDEXING_SEQUENCER:
+ _bm_params.set_indexing_sequencer(opt_argument);
+ break;
+ case LONGOPT_MAX_MERGES_PER_NODE:
+ _bm_params.set_max_merges_per_node(atoi(opt_argument));
+ break;
+ case LONGOPT_MAX_MERGE_QUEUE_SIZE:
+ _bm_params.set_max_merge_queue_size(atoi(opt_argument));
+ break;
+ case LONGOPT_MAX_PENDING:
+ _bm_params.set_max_pending(atoi(opt_argument));
+ break;
+ case LONGOPT_MAX_PENDING_IDEALSTATE_OPERATIONS:
+ _bm_params.set_max_pending_idealstate_operations(atoi(opt_argument));
+ break;
+ case LONGOPT_MBUS_DISTRIBUTOR_NODE_MAX_PENDING_COUNT:
+ _bm_params.set_mbus_distributor_node_max_pending_count(atoi(opt_argument));
+ break;
+ case LONGOPT_MODE:
+ _bm_params.set_mode(get_mode(opt_argument));
+ if (_bm_params.get_mode() == Mode::BAD) {
+ std::cerr << "Unknown mode name " << opt_argument << std::endl;
+ }
+ break;
+ case LONGOPT_NODES_PER_GROUP:
+ _bm_params.set_nodes_per_group(atoi(opt_argument));
+ break;
+ case LONGOPT_REDUNDANCY:
+ _bm_params.set_redundancy(atoi(opt_argument));
+ break;
+ case LONGOPT_REFEED:
+ _bm_params.set_refeed_mode(get_refeed_mode(opt_argument));
+ if (_bm_params.get_refeed_mode() == ReFeedMode::BAD) {
+ std::cerr << "Unknown refeed-mode name " << opt_argument << std::endl;
+ }
+ break;
+ case LONGOPT_RESPONSE_THREADS:
+ _bm_params.set_response_threads(atoi(opt_argument));
+ break;
+ case LONGOPT_RPC_EVENTS_BEFORE_WAKEUP:
+ _bm_params.set_rpc_events_before_wakeup(atoi(opt_argument));
+ break;
+ case LONGOPT_RPC_NETWORK_THREADS:
+ _bm_params.set_rpc_network_threads(atoi(opt_argument));
+ break;
+ case LONGOPT_RPC_TARGETS_PER_NODE:
+ _bm_params.set_rpc_targets_per_node(atoi(opt_argument));
+ break;
+ case LONGOPT_SKIP_COMMUNICATIONMANAGER_THREAD:
+ _bm_params.set_skip_communicationmanager_thread(true);
+ break;
+ case LONGOPT_USE_ASYNC_MESSAGE_HANDLING:
+ _bm_params.set_use_async_message_handling_on_schedule(true);
+ break;
+ case LONGOPT_USE_FEED_SETTLE:
+ _bm_params.set_use_feed_settle(true);
+ break;
+ default:
+ return false;
+ }
+ break;
+ default:
+ return false;
+ }
+ }
+ return _bm_params.check();
+}
+
+int
+App::Main()
+{
+ if (!get_options()) {
+ usage();
+ return 1;
+ }
+ vespalib::rmdir(base_dir, true);
+ Benchmark bm(_bm_params);
+ bm.run();
+ return 0;
+}
+
+int
+main(int argc, char* argv[])
+{
+ DummyFileHeaderContext::setCreator("vespa-redistribute-bm");
+ App app;
+ auto exit_value = app.Entry(argc, argv);
+ vespalib::rmdir(base_dir, true);
+ return exit_value;
+}
diff --git a/searchcore/src/apps/vespa-remove-indexes/vespa-remove-index.sh b/searchcore/src/apps/vespa-remove-indexes/vespa-remove-index.sh
index fa36566b01d..a326616fe30 100755
--- a/searchcore/src/apps/vespa-remove-indexes/vespa-remove-index.sh
+++ b/searchcore/src/apps/vespa-remove-indexes/vespa-remove-index.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/searchcore/src/apps/vespa-transactionlog-inspect/CMakeLists.txt b/searchcore/src/apps/vespa-transactionlog-inspect/CMakeLists.txt
index bf19ef4bc6c..616ff52718d 100644
--- a/searchcore/src/apps/vespa-transactionlog-inspect/CMakeLists.txt
+++ b/searchcore/src/apps/vespa-transactionlog-inspect/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_vespa-transactionlog-inspect_app
SOURCES
vespa-transactionlog-inspect.cpp
diff --git a/searchcore/src/apps/vespa-transactionlog-inspect/vespa-transactionlog-inspect.cpp b/searchcore/src/apps/vespa-transactionlog-inspect/vespa-transactionlog-inspect.cpp
index c649709c2eb..5c777baa3bb 100644
--- a/searchcore/src/apps/vespa-transactionlog-inspect/vespa-transactionlog-inspect.cpp
+++ b/searchcore/src/apps/vespa-transactionlog-inspect/vespa-transactionlog-inspect.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/server/replaypacketdispatcher.h>
#include <vespa/searchcore/proton/feedoperation/operations.h>
diff --git a/searchcore/src/main/java/com/yahoo/vespa/config/search/core/package-info.java b/searchcore/src/main/java/com/yahoo/vespa/config/search/core/package-info.java
index c29162d65ae..5b0f18203ec 100644
--- a/searchcore/src/main/java/com/yahoo/vespa/config/search/core/package-info.java
+++ b/searchcore/src/main/java/com/yahoo/vespa/config/search/core/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.config.search.core;
diff --git a/searchcore/src/tests/grouping/CMakeLists.txt b/searchcore/src/tests/grouping/CMakeLists.txt
index 781f0cab66f..cacdda484be 100644
--- a/searchcore/src/tests/grouping/CMakeLists.txt
+++ b/searchcore/src/tests/grouping/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_grouping_test_app TEST
SOURCES
grouping.cpp
diff --git a/searchcore/src/tests/grouping/grouping.cpp b/searchcore/src/tests/grouping/grouping.cpp
index 6d7bd243e71..65c7361953e 100644
--- a/searchcore/src/tests/grouping/grouping.cpp
+++ b/searchcore/src/tests/grouping/grouping.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/aggregation/grouping.h>
#include <vespa/searchlib/aggregation/sumaggregationresult.h>
diff --git a/searchcore/src/tests/proton/attribute/CMakeLists.txt b/searchcore/src/tests/proton/attribute/CMakeLists.txt
index 2055dd1769c..56c0d7301b2 100644
--- a/searchcore/src/tests/proton/attribute/CMakeLists.txt
+++ b/searchcore/src/tests/proton/attribute/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_attribute_test_app TEST
SOURCES
attribute_test.cpp
diff --git a/searchcore/src/tests/proton/attribute/attribute_aspect_delayer/CMakeLists.txt b/searchcore/src/tests/proton/attribute/attribute_aspect_delayer/CMakeLists.txt
index 168c24ad025..0e3d64d4c3a 100644
--- a/searchcore/src/tests/proton/attribute/attribute_aspect_delayer/CMakeLists.txt
+++ b/searchcore/src/tests/proton/attribute/attribute_aspect_delayer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_attribute_aspect_delayer_test_app TEST
SOURCES
attribute_aspect_delayer_test.cpp
diff --git a/searchcore/src/tests/proton/attribute/attribute_aspect_delayer/attribute_aspect_delayer_test.cpp b/searchcore/src/tests/proton/attribute/attribute_aspect_delayer/attribute_aspect_delayer_test.cpp
index 6e73904e031..a0d0958d095 100644
--- a/searchcore/src/tests/proton/attribute/attribute_aspect_delayer/attribute_aspect_delayer_test.cpp
+++ b/searchcore/src/tests/proton/attribute/attribute_aspect_delayer/attribute_aspect_delayer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config-attributes.h>
#include <vespa/config-indexschema.h>
diff --git a/searchcore/src/tests/proton/attribute/attribute_directory/CMakeLists.txt b/searchcore/src/tests/proton/attribute/attribute_directory/CMakeLists.txt
index 21a8b609c44..36fb6a92ea7 100644
--- a/searchcore/src/tests/proton/attribute/attribute_directory/CMakeLists.txt
+++ b/searchcore/src/tests/proton/attribute/attribute_directory/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_attribute_directory_test_app TEST
SOURCES
attribute_directory_test.cpp
diff --git a/searchcore/src/tests/proton/attribute/attribute_directory/attribute_directory_test.cpp b/searchcore/src/tests/proton/attribute/attribute_directory/attribute_directory_test.cpp
index f95ea478ce1..ee2904d736c 100644
--- a/searchcore/src/tests/proton/attribute/attribute_directory/attribute_directory_test.cpp
+++ b/searchcore/src/tests/proton/attribute/attribute_directory/attribute_directory_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/attribute/attribute_directory.h>
#include <vespa/searchcore/proton/attribute/attributedisklayout.h>
diff --git a/searchcore/src/tests/proton/attribute/attribute_initializer/CMakeLists.txt b/searchcore/src/tests/proton/attribute/attribute_initializer/CMakeLists.txt
index dbdbc5a3266..92e4a8d6319 100644
--- a/searchcore/src/tests/proton/attribute/attribute_initializer/CMakeLists.txt
+++ b/searchcore/src/tests/proton/attribute/attribute_initializer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_attribute_initializer_test_app TEST
SOURCES
attribute_initializer_test.cpp
diff --git a/searchcore/src/tests/proton/attribute/attribute_initializer/attribute_initializer_test.cpp b/searchcore/src/tests/proton/attribute/attribute_initializer/attribute_initializer_test.cpp
index 264d6d397e1..cbc345f68d8 100644
--- a/searchcore/src/tests/proton/attribute/attribute_initializer/attribute_initializer_test.cpp
+++ b/searchcore/src/tests/proton/attribute/attribute_initializer/attribute_initializer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchcore/proton/attribute/attribute_directory.h>
@@ -8,6 +8,7 @@
#include <vespa/searchcore/proton/test/attribute_utils.h>
#include <vespa/searchlib/attribute/attributefactory.h>
#include <vespa/searchlib/test/directory_handler.h>
+#include <vespa/vespalib/util/threadstackexecutor.h>
#include <vespa/log/log.h>
LOG_SETUP("attribute_initializer_test");
@@ -89,6 +90,7 @@ struct Fixture
DirectoryHandler _dirHandler;
std::shared_ptr<AttributeDiskLayout> _diskLayout;
AttributeFactory _factory;
+ vespalib::ThreadStackExecutor _executor;
Fixture();
~Fixture();
std::unique_ptr<AttributeInitializer> createInitializer(const AttributeSpec &spec, SerialNum serialNum);
@@ -97,7 +99,8 @@ struct Fixture
Fixture::Fixture()
: _dirHandler(test_dir),
_diskLayout(AttributeDiskLayout::create(test_dir)),
- _factory()
+ _factory(),
+ _executor(1, 0x10000)
{
}
@@ -106,7 +109,7 @@ Fixture::~Fixture() = default;
std::unique_ptr<AttributeInitializer>
Fixture::createInitializer(const AttributeSpec &spec, SerialNum serialNum)
{
- return std::make_unique<AttributeInitializer>(_diskLayout->createAttributeDir(spec.getName()), "test.subdb", spec, serialNum, _factory);
+ return std::make_unique<AttributeInitializer>(_diskLayout->createAttributeDir(spec.getName()), "test.subdb", spec, serialNum, _factory, _executor);
}
TEST("require that integer attribute can be initialized")
diff --git a/searchcore/src/tests/proton/attribute/attribute_manager/CMakeLists.txt b/searchcore/src/tests/proton/attribute/attribute_manager/CMakeLists.txt
index 75ab705daac..f59d400fe17 100644
--- a/searchcore/src/tests/proton/attribute/attribute_manager/CMakeLists.txt
+++ b/searchcore/src/tests/proton/attribute/attribute_manager/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_attribute_manager_test_app TEST
SOURCES
attribute_manager_test.cpp
diff --git a/searchcore/src/tests/proton/attribute/attribute_manager/attribute_manager_test.cpp b/searchcore/src/tests/proton/attribute/attribute_manager/attribute_manager_test.cpp
index 8f55c5ee319..7b3a2514347 100644
--- a/searchcore/src/tests/proton/attribute/attribute_manager/attribute_manager_test.cpp
+++ b/searchcore/src/tests/proton/attribute/attribute_manager/attribute_manager_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config-attributes.h>
#include <vespa/fastos/file.h>
diff --git a/searchcore/src/tests/proton/attribute/attribute_populator/CMakeLists.txt b/searchcore/src/tests/proton/attribute/attribute_populator/CMakeLists.txt
index b28de5a737a..a7ec601e3dc 100644
--- a/searchcore/src/tests/proton/attribute/attribute_populator/CMakeLists.txt
+++ b/searchcore/src/tests/proton/attribute/attribute_populator/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_attribute_populator_test_app TEST
SOURCES
attribute_populator_test.cpp
diff --git a/searchcore/src/tests/proton/attribute/attribute_populator/attribute_populator_test.cpp b/searchcore/src/tests/proton/attribute/attribute_populator/attribute_populator_test.cpp
index 2a5444c2525..62145a118b0 100644
--- a/searchcore/src/tests/proton/attribute/attribute_populator/attribute_populator_test.cpp
+++ b/searchcore/src/tests/proton/attribute/attribute_populator/attribute_populator_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/fieldvalue/intfieldvalue.h>
#include <vespa/document/repo/configbuilder.h>
diff --git a/searchcore/src/tests/proton/attribute/attribute_test.cpp b/searchcore/src/tests/proton/attribute/attribute_test.cpp
index 754cf99b00a..7ffb26cd922 100644
--- a/searchcore/src/tests/proton/attribute/attribute_test.cpp
+++ b/searchcore/src/tests/proton/attribute/attribute_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config-attributes.h>
#include <vespa/document/datatype/tensor_data_type.h>
@@ -803,12 +803,14 @@ public:
mutable size_t prepare_set_tensor_cnt;
mutable size_t complete_set_tensor_cnt;
size_t clear_doc_cnt;
+ const Value* exp_tensor;
MockDenseTensorAttribute(vespalib::stringref name, const AVConfig& cfg)
: DenseTensorAttribute(name, cfg),
prepare_set_tensor_cnt(0),
complete_set_tensor_cnt(0),
- clear_doc_cnt(0)
+ clear_doc_cnt(0),
+ exp_tensor()
{}
uint32_t clearDoc(DocId docid) override {
++clear_doc_cnt;
@@ -816,6 +818,7 @@ public:
}
std::unique_ptr<PrepareResult> prepare_set_tensor(uint32_t docid, const Value& tensor) const override {
++prepare_set_tensor_cnt;
+ EXPECT_EQ(*exp_tensor, tensor);
return std::make_unique<MockPrepareResult>(docid, tensor);
}
@@ -873,6 +876,7 @@ class TwoPhasePutTest : public AttributeWriterTest {
public:
Schema schema;
DocBuilder builder;
+ vespalib::string doc_id;
std::shared_ptr<MockDenseTensorAttribute> attr;
std::unique_ptr<Value> tensor;
@@ -880,6 +884,7 @@ public:
: AttributeWriterTest(),
schema(createTensorSchema(dense_tensor)),
builder(schema),
+ doc_id("id:ns:searchdocument::1"),
attr()
{
setup(2);
@@ -889,6 +894,7 @@ public:
attr->clear_doc_cnt = 0;
tensor = make_tensor(TensorSpec(dense_tensor)
.add({{"x", 0}}, 3).add({{"x", 1}}, 5));
+ attr->exp_tensor = tensor.get();
}
void expect_tensor_attr_calls(size_t exp_prepare_cnt,
size_t exp_complete_cnt,
@@ -901,13 +907,23 @@ public:
return createTensorPutDoc(builder, *tensor);
}
Document::UP make_no_field_doc() {
- return builder.startDocument("id:ns:searchdocument::1").endDocument();
+ return builder.startDocument(doc_id).endDocument();
}
Document::UP make_no_tensor_doc() {
- return builder.startDocument("id:ns:searchdocument::1").
+ return builder.startDocument(doc_id).
startAttributeField("a1").
addTensor(std::unique_ptr<vespalib::eval::Value>()).endField().endDocument();
}
+ DocumentUpdate::UP make_assign_update() {
+ auto upd = std::make_unique<DocumentUpdate>(*builder.getDocumentTypeRepo(),
+ builder.getDocumentType(),
+ DocumentId(doc_id));
+ TensorDataType tensor_type(vespalib::eval::ValueType::from_spec(dense_tensor));
+ TensorFieldValue tensor_value(tensor_type);
+ tensor_value= SimpleValue::from_value(*tensor);
+ upd->addUpdate(FieldUpdate(upd->getType().getField("a1")).addUpdate(AssignValueUpdate(tensor_value)));
+ return upd;
+ }
void expect_shared_executor_tasks(size_t exp_accepted_tasks) {
auto stats = _shared.getStats();
EXPECT_EQ(exp_accepted_tasks, stats.acceptedTasks);
@@ -958,6 +974,22 @@ TEST_F(TwoPhasePutTest, document_is_cleared_if_tensor_in_field_is_not_set)
assertExecuteHistory({0});
}
+TEST_F(TwoPhasePutTest, handles_assign_update_as_two_phase_put_when_specified_for_tensor_attribute)
+{
+ auto upd = make_assign_update();
+
+ DummyFieldUpdateCallback on_update;
+ update(1, *upd, 1, on_update);
+ expect_tensor_attr_calls(1, 1);
+ expect_shared_executor_tasks(1);
+ assertExecuteHistory({0});
+
+ update(2, *upd, 2, on_update);
+ expect_tensor_attr_calls(2, 2);
+ expect_shared_executor_tasks(2);
+ assertExecuteHistory({0, 0});
+}
+
ImportedAttributeVector::SP
createImportedAttribute(const vespalib::string &name)
diff --git a/searchcore/src/tests/proton/attribute/attribute_usage_filter/CMakeLists.txt b/searchcore/src/tests/proton/attribute/attribute_usage_filter/CMakeLists.txt
index dc3f2213ecd..e9c5035b589 100644
--- a/searchcore/src/tests/proton/attribute/attribute_usage_filter/CMakeLists.txt
+++ b/searchcore/src/tests/proton/attribute/attribute_usage_filter/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_attribute_usage_filter_test_app TEST
SOURCES
attribute_usage_filter_test.cpp
diff --git a/searchcore/src/tests/proton/attribute/attribute_usage_filter/attribute_usage_filter_test.cpp b/searchcore/src/tests/proton/attribute/attribute_usage_filter/attribute_usage_filter_test.cpp
index bcfdca9da19..bf2d663b3a2 100644
--- a/searchcore/src/tests/proton/attribute/attribute_usage_filter/attribute_usage_filter_test.cpp
+++ b/searchcore/src/tests/proton/attribute/attribute_usage_filter/attribute_usage_filter_test.cpp
@@ -1,14 +1,18 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/log/log.h>
-LOG_SETUP("attribute_usage_filter_test");
-#include <vespa/vespalib/testkit/testapp.h>
-#include <vespa/vespalib/util/size_literals.h>
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
#include <vespa/searchcore/proton/attribute/attribute_usage_filter.h>
#include <vespa/searchcore/proton/attribute/i_attribute_usage_listener.h>
+#include <vespa/searchlib/attribute/address_space_components.h>
+#include <vespa/vespalib/testkit/testapp.h>
+#include <vespa/vespalib/util/size_literals.h>
+
+#include <vespa/log/log.h>
+LOG_SETUP("attribute_usage_filter_test");
using proton::AttributeUsageFilter;
using proton::AttributeUsageStats;
using proton::IAttributeUsageListener;
+using search::AddressSpaceComponents;
using search::AddressSpaceUsage;
using vespalib::AddressSpace;
@@ -24,17 +28,15 @@ class MyAttributeStats : public AttributeUsageStats
{
public:
void triggerEnumStoreLimit() {
- merge({ enumStoreOverLoad,
- search::AddressSpaceUsage::defaultMultiValueUsage() },
- "enumeratedName",
- "ready");
+ AddressSpaceUsage usage;
+ usage.set(AddressSpaceComponents::enum_store, enumStoreOverLoad);
+ merge(usage, "enumeratedName", "ready");
}
void triggerMultiValueLimit() {
- merge({ search::AddressSpaceUsage::defaultEnumStoreUsage(),
- multiValueOverLoad },
- "multiValueName",
- "ready");
+ AddressSpaceUsage usage;
+ usage.set(AddressSpaceComponents::multi_value, multiValueOverLoad);
+ merge(usage, "multiValueName", "ready");
}
};
@@ -92,71 +94,43 @@ TEST_F("Check that default filter allows write", Fixture)
TEST_F("Check that enum store limit can be reached", Fixture)
{
- f.filter.setConfig(Fixture::Config(0.8, 1.0));
+ f.filter.setConfig(Fixture::Config(0.8));
MyAttributeStats stats;
stats.triggerEnumStoreLimit();
f.setAttributeStats(stats);
- f.testWrite("enumStoreLimitReached: { "
+ f.testWrite("addressSpaceLimitReached: { "
"action: \""
"add more content nodes"
"\", "
"reason: \""
- "enum store address space used (0.9375) > limit (0.8)"
+ "max address space in attribute vector components used (0.9375) > limit (0.8)"
"\", "
- "enumStore: { used: 32212254720, dead: 0, limit: 34359738368}, "
- "attributeName: \"enumeratedName\", subdb: \"ready\"}");
+ "addressSpace: { used: 32212254720, dead: 0, limit: 34359738368}, "
+ "attributeName: \"enumeratedName\", componentName: \"enum-store\", subdb: \"ready\"}");
}
TEST_F("Check that multivalue limit can be reached", Fixture)
{
- f.filter.setConfig(Fixture::Config(1.0, 0.8));
+ f.filter.setConfig(Fixture::Config(0.8));
MyAttributeStats stats;
stats.triggerMultiValueLimit();
f.setAttributeStats(stats);
- f.testWrite("multiValueLimitReached: { "
- "action: \""
- "add more content nodes"
- "\", "
- "reason: \""
- "multiValue address space used (0.992188) > limit (0.8)"
- "\", "
- "multiValue: { used: 133169152, dead: 0, limit: 134217728}, "
- "attributeName: \"multiValueName\", subdb: \"ready\"}");
-}
-
-TEST_F("Check that both enumstore limit and multivalue limit can be reached",
- Fixture)
-{
- f.filter.setConfig(Fixture::Config(0.8, 0.8));
- MyAttributeStats stats;
- stats.triggerEnumStoreLimit();
- stats.triggerMultiValueLimit();
- f.setAttributeStats(stats);
- f.testWrite("enumStoreLimitReached: { "
- "action: \""
- "add more content nodes"
- "\", "
- "reason: \""
- "enum store address space used (0.9375) > limit (0.8)"
- "\", "
- "enumStore: { used: 32212254720, dead: 0, limit: 34359738368}, "
- "attributeName: \"enumeratedName\", subdb: \"ready\"}"
- ", "
- "multiValueLimitReached: { "
+ f.testWrite("addressSpaceLimitReached: { "
"action: \""
"add more content nodes"
"\", "
"reason: \""
- "multiValue address space used (0.992188) > limit (0.8)"
+ "max address space in attribute vector components used (0.992188) > limit (0.8)"
"\", "
- "multiValue: { used: 133169152, dead: 0, limit: 134217728}, "
- "attributeName: \"multiValueName\", subdb: \"ready\"}");
+ "addressSpace: { used: 133169152, dead: 0, limit: 134217728}, "
+ "attributeName: \"multiValueName\", componentName: \"multi-value\", subdb: \"ready\"}");
}
TEST_F("listener is updated when attribute stats change", Fixture)
{
AttributeUsageStats stats;
- AddressSpaceUsage usage(AddressSpace(12, 10, 15), AddressSpace(22, 20, 25));
+ AddressSpaceUsage usage;
+ usage.set("my_comp", AddressSpace(12, 10, 15));
stats.merge(usage, "my_attr", "my_subdb");
f.setAttributeStats(stats);
EXPECT_EQUAL(stats, f.listener->stats);
diff --git a/searchcore/src/tests/proton/attribute/attribute_usage_sampler_functor/CMakeLists.txt b/searchcore/src/tests/proton/attribute/attribute_usage_sampler_functor/CMakeLists.txt
index a9bd85904b8..6034f5a1309 100644
--- a/searchcore/src/tests/proton/attribute/attribute_usage_sampler_functor/CMakeLists.txt
+++ b/searchcore/src/tests/proton/attribute/attribute_usage_sampler_functor/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_attribute_usage_sampler_functor_test_app TEST
SOURCES
attribute_usage_sampler_functor_test.cpp
diff --git a/searchcore/src/tests/proton/attribute/attribute_usage_sampler_functor/attribute_usage_sampler_functor_test.cpp b/searchcore/src/tests/proton/attribute/attribute_usage_sampler_functor/attribute_usage_sampler_functor_test.cpp
index c99abcdaa59..31f90075421 100644
--- a/searchcore/src/tests/proton/attribute/attribute_usage_sampler_functor/attribute_usage_sampler_functor_test.cpp
+++ b/searchcore/src/tests/proton/attribute/attribute_usage_sampler_functor/attribute_usage_sampler_functor_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config-attributes.h>
#include <vespa/searchlib/attribute/attributefactory.h>
diff --git a/searchcore/src/tests/proton/attribute/attribute_usage_stats/CMakeLists.txt b/searchcore/src/tests/proton/attribute/attribute_usage_stats/CMakeLists.txt
new file mode 100644
index 00000000000..806990423b7
--- /dev/null
+++ b/searchcore/src/tests/proton/attribute/attribute_usage_stats/CMakeLists.txt
@@ -0,0 +1,9 @@
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(searchcore_attribute_usage_stats_test_app TEST
+ SOURCES
+ attribute_usage_stats_test.cpp
+ DEPENDS
+ searchcore_attribute
+ GTest::GTest
+)
+vespa_add_test(NAME searchcore_attribute_usage_stats_test_app COMMAND searchcore_attribute_usage_stats_test_app)
diff --git a/searchcore/src/tests/proton/attribute/attribute_usage_stats/attribute_usage_stats_test.cpp b/searchcore/src/tests/proton/attribute/attribute_usage_stats/attribute_usage_stats_test.cpp
new file mode 100644
index 00000000000..427e3135ea0
--- /dev/null
+++ b/searchcore/src/tests/proton/attribute/attribute_usage_stats/attribute_usage_stats_test.cpp
@@ -0,0 +1,47 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <vespa/searchcore/proton/attribute/attribute_usage_stats.h>
+#include <vespa/vespalib/gtest/gtest.h>
+
+using proton::AddressSpaceUsageStats;
+using proton::AttributeUsageStats;
+using search::AddressSpaceUsage;
+using vespalib::AddressSpace;
+
+void
+expect_max_usage(size_t used, const vespalib::string& attr_name,
+ const vespalib::string& comp_name, const vespalib::string& sub_name,
+ const AttributeUsageStats& stats)
+{
+ const auto& max = stats.max_address_space_usage();
+ EXPECT_EQ(used, max.getUsage().used());
+ EXPECT_EQ(attr_name, max.getAttributeName());
+ EXPECT_EQ(comp_name, max.get_component_name());
+ EXPECT_EQ(sub_name, max.getSubDbName());
+}
+
+TEST(AttributeUsageStatsTest, tracks_max_address_space_usage)
+{
+ AttributeUsageStats stats;
+ {
+ AddressSpaceUsage usage;
+ usage.set("comp1", AddressSpace(2, 0, 10));
+ usage.set("comp2", AddressSpace(3, 0, 10));
+ stats.merge(usage, "attr1", "sub1");
+ expect_max_usage(3, "attr1", "comp2", "sub1", stats);
+ }
+ {
+ AddressSpaceUsage usage;
+ usage.set("comp3", AddressSpace(5, 0, 10));
+ usage.set("comp4", AddressSpace(4, 0, 10));
+ stats.merge(usage, "attr2", "sub2");
+ expect_max_usage(5, "attr2", "comp3", "sub2", stats);
+ }
+ {
+ AddressSpaceUsage usage;
+ usage.set("comp5", AddressSpace(5, 0, 10));
+ stats.merge(usage, "attr3", "sub2");
+ expect_max_usage(5, "attr2", "comp3", "sub2", stats);
+ }
+}
+
+GTEST_MAIN_RUN_ALL_TESTS()
diff --git a/searchcore/src/tests/proton/attribute/attributeflush_test.cpp b/searchcore/src/tests/proton/attribute/attributeflush_test.cpp
index 4f3f096884f..e29040a7984 100644
--- a/searchcore/src/tests/proton/attribute/attributeflush_test.cpp
+++ b/searchcore/src/tests/proton/attribute/attributeflush_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fastos/file.h>
#include <vespa/searchcore/proton/attribute/attribute_writer.h>
diff --git a/searchcore/src/tests/proton/attribute/attributeflush_test.sh b/searchcore/src/tests/proton/attribute/attributeflush_test.sh
index b44fc81d0fa..2363c7f26ef 100755
--- a/searchcore/src/tests/proton/attribute/attributeflush_test.sh
+++ b/searchcore/src/tests/proton/attribute/attributeflush_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
rm -rf flush
$VALGRIND ./searchcore_attributeflush_test_app
diff --git a/searchcore/src/tests/proton/attribute/attributes_state_explorer/CMakeLists.txt b/searchcore/src/tests/proton/attribute/attributes_state_explorer/CMakeLists.txt
index ca53d04c0cb..76336b52f56 100644
--- a/searchcore/src/tests/proton/attribute/attributes_state_explorer/CMakeLists.txt
+++ b/searchcore/src/tests/proton/attribute/attributes_state_explorer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_attributes_state_explorer_test_app TEST
SOURCES
attributes_state_explorer_test.cpp
diff --git a/searchcore/src/tests/proton/attribute/attributes_state_explorer/attributes_state_explorer_test.cpp b/searchcore/src/tests/proton/attribute/attributes_state_explorer/attributes_state_explorer_test.cpp
index 3fc80cfa5c5..3737d6eb89a 100644
--- a/searchcore/src/tests/proton/attribute/attributes_state_explorer/attributes_state_explorer_test.cpp
+++ b/searchcore/src/tests/proton/attribute/attributes_state_explorer/attributes_state_explorer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/attribute/attribute_manager_explorer.h>
#include <vespa/searchcore/proton/attribute/attributemanager.h>
diff --git a/searchcore/src/tests/proton/attribute/document_field_extractor/CMakeLists.txt b/searchcore/src/tests/proton/attribute/document_field_extractor/CMakeLists.txt
index 7d7b798febe..2ac4096a991 100644
--- a/searchcore/src/tests/proton/attribute/document_field_extractor/CMakeLists.txt
+++ b/searchcore/src/tests/proton/attribute/document_field_extractor/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_document_field_extractor_test_app TEST
SOURCES
document_field_extractor_test.cpp
diff --git a/searchcore/src/tests/proton/attribute/document_field_extractor/document_field_extractor_test.cpp b/searchcore/src/tests/proton/attribute/document_field_extractor/document_field_extractor_test.cpp
index 89dbf20eb61..65d17d207ec 100644
--- a/searchcore/src/tests/proton/attribute/document_field_extractor/document_field_extractor_test.cpp
+++ b/searchcore/src/tests/proton/attribute/document_field_extractor/document_field_extractor_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/documentid.h>
#include <vespa/document/base/exceptions.h>
diff --git a/searchcore/src/tests/proton/attribute/document_field_populator/CMakeLists.txt b/searchcore/src/tests/proton/attribute/document_field_populator/CMakeLists.txt
index becce6e61fa..dea03cbf040 100644
--- a/searchcore/src/tests/proton/attribute/document_field_populator/CMakeLists.txt
+++ b/searchcore/src/tests/proton/attribute/document_field_populator/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_document_field_populator_test_app TEST
SOURCES
document_field_populator_test.cpp
diff --git a/searchcore/src/tests/proton/attribute/document_field_populator/document_field_populator_test.cpp b/searchcore/src/tests/proton/attribute/document_field_populator/document_field_populator_test.cpp
index 4fd8b4208da..2815bd7d88e 100644
--- a/searchcore/src/tests/proton/attribute/document_field_populator/document_field_populator_test.cpp
+++ b/searchcore/src/tests/proton/attribute/document_field_populator/document_field_populator_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchcommon/common/schema.h>
diff --git a/searchcore/src/tests/proton/attribute/exclusive_attribute_read_accessor/CMakeLists.txt b/searchcore/src/tests/proton/attribute/exclusive_attribute_read_accessor/CMakeLists.txt
index 2acee11a3ad..981d2acd7c5 100644
--- a/searchcore/src/tests/proton/attribute/exclusive_attribute_read_accessor/CMakeLists.txt
+++ b/searchcore/src/tests/proton/attribute/exclusive_attribute_read_accessor/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_exclusive_attribute_read_accessor_test_app TEST
SOURCES
exclusive_attribute_read_accessor_test.cpp
diff --git a/searchcore/src/tests/proton/attribute/exclusive_attribute_read_accessor/exclusive_attribute_read_accessor_test.cpp b/searchcore/src/tests/proton/attribute/exclusive_attribute_read_accessor/exclusive_attribute_read_accessor_test.cpp
index cb64a1a59d8..8b093be08b7 100644
--- a/searchcore/src/tests/proton/attribute/exclusive_attribute_read_accessor/exclusive_attribute_read_accessor_test.cpp
+++ b/searchcore/src/tests/proton/attribute/exclusive_attribute_read_accessor/exclusive_attribute_read_accessor_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchcore/proton/attribute/exclusive_attribute_read_accessor.h>
diff --git a/searchcore/src/tests/proton/attribute/imported_attributes_context/CMakeLists.txt b/searchcore/src/tests/proton/attribute/imported_attributes_context/CMakeLists.txt
index 261242077b4..50904da621a 100644
--- a/searchcore/src/tests/proton/attribute/imported_attributes_context/CMakeLists.txt
+++ b/searchcore/src/tests/proton/attribute/imported_attributes_context/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_imported_attributes_context_test_app TEST
SOURCES
imported_attributes_context_test.cpp
diff --git a/searchcore/src/tests/proton/attribute/imported_attributes_context/imported_attributes_context_test.cpp b/searchcore/src/tests/proton/attribute/imported_attributes_context/imported_attributes_context_test.cpp
index fa08df6faa1..996ddac2d2a 100644
--- a/searchcore/src/tests/proton/attribute/imported_attributes_context/imported_attributes_context_test.cpp
+++ b/searchcore/src/tests/proton/attribute/imported_attributes_context/imported_attributes_context_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchcore/src/tests/proton/attribute/imported_attributes_repo/CMakeLists.txt b/searchcore/src/tests/proton/attribute/imported_attributes_repo/CMakeLists.txt
index 2cbbcabed42..aa59cf1e52d 100644
--- a/searchcore/src/tests/proton/attribute/imported_attributes_repo/CMakeLists.txt
+++ b/searchcore/src/tests/proton/attribute/imported_attributes_repo/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_imported_attributes_repo_test_app TEST
SOURCES
imported_attributes_repo_test.cpp
diff --git a/searchcore/src/tests/proton/attribute/imported_attributes_repo/imported_attributes_repo_test.cpp b/searchcore/src/tests/proton/attribute/imported_attributes_repo/imported_attributes_repo_test.cpp
index 3155d7930e1..59f40f2fc2a 100644
--- a/searchcore/src/tests/proton/attribute/imported_attributes_repo/imported_attributes_repo_test.cpp
+++ b/searchcore/src/tests/proton/attribute/imported_attributes_repo/imported_attributes_repo_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("imported_attributes_repo_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchcore/src/tests/proton/bucketdb/bucketdb/CMakeLists.txt b/searchcore/src/tests/proton/bucketdb/bucketdb/CMakeLists.txt
index b9015204d0b..c388b59bcbf 100644
--- a/searchcore/src/tests/proton/bucketdb/bucketdb/CMakeLists.txt
+++ b/searchcore/src/tests/proton/bucketdb/bucketdb/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_bucketdb_test_app TEST
SOURCES
bucketdb_test.cpp
diff --git a/searchcore/src/tests/proton/bucketdb/bucketdb/bucketdb_test.cpp b/searchcore/src/tests/proton/bucketdb/bucketdb/bucketdb_test.cpp
index aff5573e4e0..94300d4abac 100644
--- a/searchcore/src/tests/proton/bucketdb/bucketdb/bucketdb_test.cpp
+++ b/searchcore/src/tests/proton/bucketdb/bucketdb/bucketdb_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/bucketdb/bucket_db_explorer.h>
#include <vespa/searchcore/proton/bucketdb/bucketdb.h>
#include <vespa/vespalib/data/slime/slime.h>
diff --git a/searchcore/src/tests/proton/clean_tests.sh b/searchcore/src/tests/proton/clean_tests.sh
index adf54f9b02d..11eb5467a72 100755
--- a/searchcore/src/tests/proton/clean_tests.sh
+++ b/searchcore/src/tests/proton/clean_tests.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
for file in *
do
if [ -d "$file" ]; then
diff --git a/searchcore/src/tests/proton/common/CMakeLists.txt b/searchcore/src/tests/proton/common/CMakeLists.txt
index 30ec8c035ad..384b19656b2 100644
--- a/searchcore/src/tests/proton/common/CMakeLists.txt
+++ b/searchcore/src/tests/proton/common/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_selectpruner_test_app TEST
SOURCES
selectpruner_test.cpp
diff --git a/searchcore/src/tests/proton/common/alloc_config/CMakeLists.txt b/searchcore/src/tests/proton/common/alloc_config/CMakeLists.txt
index 26a2dc72cc2..7c6fac345ea 100644
--- a/searchcore/src/tests/proton/common/alloc_config/CMakeLists.txt
+++ b/searchcore/src/tests/proton/common/alloc_config/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_alloc_config_test_app TEST
SOURCES
alloc_config_test.cpp
diff --git a/searchcore/src/tests/proton/common/alloc_config/alloc_config_test.cpp b/searchcore/src/tests/proton/common/alloc_config/alloc_config_test.cpp
index 18a0ee47a47..1483a0bd653 100644
--- a/searchcore/src/tests/proton/common/alloc_config/alloc_config_test.cpp
+++ b/searchcore/src/tests/proton/common/alloc_config/alloc_config_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/common/alloc_config.h>
#include <vespa/searchcore/proton/common/subdbtype.h>
diff --git a/searchcore/src/tests/proton/common/attribute_updater/CMakeLists.txt b/searchcore/src/tests/proton/common/attribute_updater/CMakeLists.txt
index 8b552cb2b47..5955ee52756 100644
--- a/searchcore/src/tests/proton/common/attribute_updater/CMakeLists.txt
+++ b/searchcore/src/tests/proton/common/attribute_updater/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_attribute_updater_test_app TEST
SOURCES
attribute_updater_test.cpp
diff --git a/searchcore/src/tests/proton/common/attribute_updater/attribute_updater_test.cpp b/searchcore/src/tests/proton/common/attribute_updater/attribute_updater_test.cpp
index e92f0363ec2..924abc81711 100644
--- a/searchcore/src/tests/proton/common/attribute_updater/attribute_updater_test.cpp
+++ b/searchcore/src/tests/proton/common/attribute_updater/attribute_updater_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/testdocrepo.h>
#include <vespa/document/datatype/tensor_data_type.h>
diff --git a/searchcore/src/tests/proton/common/cachedselect_test.cpp b/searchcore/src/tests/proton/common/cachedselect_test.cpp
index b74ee5ac803..5799753f075 100644
--- a/searchcore/src/tests/proton/common/cachedselect_test.cpp
+++ b/searchcore/src/tests/proton/common/cachedselect_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/documentid.h>
#include <vespa/document/datatype/documenttype.h>
diff --git a/searchcore/src/tests/proton/common/document_type_inspector/CMakeLists.txt b/searchcore/src/tests/proton/common/document_type_inspector/CMakeLists.txt
index f0030a887fc..5598afb08b3 100644
--- a/searchcore/src/tests/proton/common/document_type_inspector/CMakeLists.txt
+++ b/searchcore/src/tests/proton/common/document_type_inspector/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_document_type_inspector_test_app TEST
SOURCES
document_type_inspector_test.cpp
diff --git a/searchcore/src/tests/proton/common/document_type_inspector/document_type_inspector_test.cpp b/searchcore/src/tests/proton/common/document_type_inspector/document_type_inspector_test.cpp
index 5e8f320d86a..4ac43799834 100644
--- a/searchcore/src/tests/proton/common/document_type_inspector/document_type_inspector_test.cpp
+++ b/searchcore/src/tests/proton/common/document_type_inspector/document_type_inspector_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/common/document_type_inspector.h>
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/document/base/field.h>
diff --git a/searchcore/src/tests/proton/common/dummydbowner.h b/searchcore/src/tests/proton/common/dummydbowner.h
index 5b16fe9a20e..1fa9c17257c 100644
--- a/searchcore/src/tests/proton/common/dummydbowner.h
+++ b/searchcore/src/tests/proton/common/dummydbowner.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/tests/proton/common/hw_info_sampler/CMakeLists.txt b/searchcore/src/tests/proton/common/hw_info_sampler/CMakeLists.txt
index 00d160cfef4..7173431dae2 100644
--- a/searchcore/src/tests/proton/common/hw_info_sampler/CMakeLists.txt
+++ b/searchcore/src/tests/proton/common/hw_info_sampler/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_hw_info_sampler_test_app TEST
SOURCES
hw_info_sampler_test.cpp
diff --git a/searchcore/src/tests/proton/common/hw_info_sampler/hw_info_sampler_test.cpp b/searchcore/src/tests/proton/common/hw_info_sampler/hw_info_sampler_test.cpp
index 0373d46a905..b9894f660e1 100644
--- a/searchcore/src/tests/proton/common/hw_info_sampler/hw_info_sampler_test.cpp
+++ b/searchcore/src/tests/proton/common/hw_info_sampler/hw_info_sampler_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config/print/fileconfigwriter.h>
#include <vespa/searchcore/config/config-hwinfo.h>
diff --git a/searchcore/src/tests/proton/common/operation_rate_tracker/CMakeLists.txt b/searchcore/src/tests/proton/common/operation_rate_tracker/CMakeLists.txt
index 4cbe5141786..c0f391749b9 100644
--- a/searchcore/src/tests/proton/common/operation_rate_tracker/CMakeLists.txt
+++ b/searchcore/src/tests/proton/common/operation_rate_tracker/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_operation_rate_tracker_test_app TEST
SOURCES
operation_rate_tracker_test.cpp
diff --git a/searchcore/src/tests/proton/common/operation_rate_tracker/operation_rate_tracker_test.cpp b/searchcore/src/tests/proton/common/operation_rate_tracker/operation_rate_tracker_test.cpp
index ce19867e286..395425c5e05 100644
--- a/searchcore/src/tests/proton/common/operation_rate_tracker/operation_rate_tracker_test.cpp
+++ b/searchcore/src/tests/proton/common/operation_rate_tracker/operation_rate_tracker_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/common/operation_rate_tracker.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/searchcore/src/tests/proton/common/pendinglidtracker_test.cpp b/searchcore/src/tests/proton/common/pendinglidtracker_test.cpp
index bcf494346d8..20740883fc7 100644
--- a/searchcore/src/tests/proton/common/pendinglidtracker_test.cpp
+++ b/searchcore/src/tests/proton/common/pendinglidtracker_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchcore/proton/common/pendinglidtracker.h>
diff --git a/searchcore/src/tests/proton/common/selectpruner_test.cpp b/searchcore/src/tests/proton/common/selectpruner_test.cpp
index 744159962ad..3c793c4e6c3 100644
--- a/searchcore/src/tests/proton/common/selectpruner_test.cpp
+++ b/searchcore/src/tests/proton/common/selectpruner_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/stllike/string.h>
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/document/repo/configbuilder.h>
diff --git a/searchcore/src/tests/proton/common/state_reporter_utils/CMakeLists.txt b/searchcore/src/tests/proton/common/state_reporter_utils/CMakeLists.txt
index 71c5d6fd42c..574f7f7bb19 100644
--- a/searchcore/src/tests/proton/common/state_reporter_utils/CMakeLists.txt
+++ b/searchcore/src/tests/proton/common/state_reporter_utils/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_state_reporter_utils_test_app TEST
SOURCES
state_reporter_utils_test.cpp
diff --git a/searchcore/src/tests/proton/common/state_reporter_utils/state_reporter_utils_test.cpp b/searchcore/src/tests/proton/common/state_reporter_utils/state_reporter_utils_test.cpp
index 680665c10c6..42a6d1059a2 100644
--- a/searchcore/src/tests/proton/common/state_reporter_utils/state_reporter_utils_test.cpp
+++ b/searchcore/src/tests/proton/common/state_reporter_utils/state_reporter_utils_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("state_reporter_utils_test");
diff --git a/searchcore/src/tests/proton/docsummary/CMakeLists.txt b/searchcore/src/tests/proton/docsummary/CMakeLists.txt
index ce1a0b3d68c..4286bbea224 100644
--- a/searchcore/src/tests/proton/docsummary/CMakeLists.txt
+++ b/searchcore/src/tests/proton/docsummary/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_docsummary_test_app TEST
SOURCES
docsummary.cpp
diff --git a/searchcore/src/tests/proton/docsummary/docsummary.cpp b/searchcore/src/tests/proton/docsummary/docsummary.cpp
index 5c803b96a5d..47197bcbea1 100644
--- a/searchcore/src/tests/proton/docsummary/docsummary.cpp
+++ b/searchcore/src/tests/proton/docsummary/docsummary.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <tests/proton/common/dummydbowner.h>
#include <vespa/config/helper/configgetter.hpp>
diff --git a/searchcore/src/tests/proton/docsummary/docsummary_test.sh b/searchcore/src/tests/proton/docsummary/docsummary_test.sh
index 555744dfd2f..3722c967455 100755
--- a/searchcore/src/tests/proton/docsummary/docsummary_test.sh
+++ b/searchcore/src/tests/proton/docsummary/docsummary_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
rm -rf tmp
rm -rf tmpdb
diff --git a/searchcore/src/tests/proton/docsummary/summaryfieldconverter_test.cpp b/searchcore/src/tests/proton/docsummary/summaryfieldconverter_test.cpp
index 86f0e8fdcf8..1fe32c8c1b3 100644
--- a/searchcore/src/tests/proton/docsummary/summaryfieldconverter_test.cpp
+++ b/searchcore/src/tests/proton/docsummary/summaryfieldconverter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for summaryfieldconverter.
#include <vespa/document/annotation/annotation.h>
diff --git a/searchcore/src/tests/proton/document_iterator/CMakeLists.txt b/searchcore/src/tests/proton/document_iterator/CMakeLists.txt
index 27bd4cef68d..8ba6062a194 100644
--- a/searchcore/src/tests/proton/document_iterator/CMakeLists.txt
+++ b/searchcore/src/tests/proton/document_iterator/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_document_iterator_test_app TEST
SOURCES
document_iterator_test.cpp
diff --git a/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp b/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp
index 7ee811e66bf..fab46e61494 100644
--- a/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp
+++ b/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/fieldset/fieldsets.h>
#include <vespa/document/fieldvalue/fieldvalues.h>
diff --git a/searchcore/src/tests/proton/documentdb/CMakeLists.txt b/searchcore/src/tests/proton/documentdb/CMakeLists.txt
index d4a08e9de5c..8ebeaef9a99 100644
--- a/searchcore/src/tests/proton/documentdb/CMakeLists.txt
+++ b/searchcore/src/tests/proton/documentdb/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_documentdb_test_app TEST
SOURCES
documentdb_test.cpp
diff --git a/searchcore/src/tests/proton/documentdb/buckethandler/CMakeLists.txt b/searchcore/src/tests/proton/documentdb/buckethandler/CMakeLists.txt
index e955aa76d37..272b239dd2e 100644
--- a/searchcore/src/tests/proton/documentdb/buckethandler/CMakeLists.txt
+++ b/searchcore/src/tests/proton/documentdb/buckethandler/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_buckethandler_test_app TEST
SOURCES
buckethandler_test.cpp
diff --git a/searchcore/src/tests/proton/documentdb/buckethandler/buckethandler_test.cpp b/searchcore/src/tests/proton/documentdb/buckethandler/buckethandler_test.cpp
index 62f87c984d0..4b68481c386 100644
--- a/searchcore/src/tests/proton/documentdb/buckethandler/buckethandler_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/buckethandler/buckethandler_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/server/buckethandler.h>
#include <vespa/searchcore/proton/server/ibucketstatechangedhandler.h>
#include <vespa/searchcore/proton/server/ibucketmodifiedhandler.h>
diff --git a/searchcore/src/tests/proton/documentdb/clusterstatehandler/CMakeLists.txt b/searchcore/src/tests/proton/documentdb/clusterstatehandler/CMakeLists.txt
index 77bdae70ebd..1ea6f5cc729 100644
--- a/searchcore/src/tests/proton/documentdb/clusterstatehandler/CMakeLists.txt
+++ b/searchcore/src/tests/proton/documentdb/clusterstatehandler/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_clusterstatehandler_test_app TEST
SOURCES
clusterstatehandler_test.cpp
diff --git a/searchcore/src/tests/proton/documentdb/clusterstatehandler/clusterstatehandler_test.cpp b/searchcore/src/tests/proton/documentdb/clusterstatehandler/clusterstatehandler_test.cpp
index 149af7dcf79..8d012afdb1f 100644
--- a/searchcore/src/tests/proton/documentdb/clusterstatehandler/clusterstatehandler_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/clusterstatehandler/clusterstatehandler_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/server/clusterstatehandler.h>
#include <vespa/searchcore/proton/server/iclusterstatechangedhandler.h>
#include <vespa/searchcore/proton/test/test.h>
diff --git a/searchcore/src/tests/proton/documentdb/combiningfeedview/CMakeLists.txt b/searchcore/src/tests/proton/documentdb/combiningfeedview/CMakeLists.txt
index e810b2191bb..038a1ce0d27 100644
--- a/searchcore/src/tests/proton/documentdb/combiningfeedview/CMakeLists.txt
+++ b/searchcore/src/tests/proton/documentdb/combiningfeedview/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_combiningfeedview_test_app TEST
SOURCES
combiningfeedview_test.cpp
diff --git a/searchcore/src/tests/proton/documentdb/combiningfeedview/combiningfeedview_test.cpp b/searchcore/src/tests/proton/documentdb/combiningfeedview/combiningfeedview_test.cpp
index 48490706a47..5ef02f60152 100644
--- a/searchcore/src/tests/proton/documentdb/combiningfeedview/combiningfeedview_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/combiningfeedview/combiningfeedview_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/test/make_bucket_space.h>
#include <vespa/searchcore/proton/feedoperation/operations.h>
diff --git a/searchcore/src/tests/proton/documentdb/configurer/CMakeLists.txt b/searchcore/src/tests/proton/documentdb/configurer/CMakeLists.txt
index a7cdfff8085..6472134f6e1 100644
--- a/searchcore/src/tests/proton/documentdb/configurer/CMakeLists.txt
+++ b/searchcore/src/tests/proton/documentdb/configurer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_configurer_test_app TEST
SOURCES
configurer_test.cpp
diff --git a/searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp b/searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp
index 3f65f61cbaa..e20c4268f88 100644
--- a/searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchcore/src/tests/proton/documentdb/document_scan_iterator/CMakeLists.txt b/searchcore/src/tests/proton/documentdb/document_scan_iterator/CMakeLists.txt
index 6b825829948..924db9bb76d 100644
--- a/searchcore/src/tests/proton/documentdb/document_scan_iterator/CMakeLists.txt
+++ b/searchcore/src/tests/proton/documentdb/document_scan_iterator/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_document_scan_iterator_test_app TEST
SOURCES
document_scan_iterator_test.cpp
diff --git a/searchcore/src/tests/proton/documentdb/document_scan_iterator/document_scan_iterator_test.cpp b/searchcore/src/tests/proton/documentdb/document_scan_iterator/document_scan_iterator_test.cpp
index beadf5abfe1..73160d1db94 100644
--- a/searchcore/src/tests/proton/documentdb/document_scan_iterator/document_scan_iterator_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/document_scan_iterator/document_scan_iterator_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/documentmetastore/documentmetastore.h>
#include <vespa/searchcore/proton/server/document_scan_iterator.h>
#include <vespa/searchcore/proton/bucketdb/bucket_db_owner.h>
diff --git a/searchcore/src/tests/proton/documentdb/document_subdbs/CMakeLists.txt b/searchcore/src/tests/proton/documentdb/document_subdbs/CMakeLists.txt
index 697666f8e02..0bc1235bb6f 100644
--- a/searchcore/src/tests/proton/documentdb/document_subdbs/CMakeLists.txt
+++ b/searchcore/src/tests/proton/documentdb/document_subdbs/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_document_subdbs_test_app TEST
SOURCES
document_subdbs_test.cpp
diff --git a/searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp b/searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp
index b9894a92447..60d5f57ac8c 100644
--- a/searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config-bucketspaces.h>
#include <vespa/document/test/make_bucket_space.h>
diff --git a/searchcore/src/tests/proton/documentdb/documentbucketmover/CMakeLists.txt b/searchcore/src/tests/proton/documentdb/documentbucketmover/CMakeLists.txt
index 1aa0b1c585d..6ca815cd216 100644
--- a/searchcore/src/tests/proton/documentdb/documentbucketmover/CMakeLists.txt
+++ b/searchcore/src/tests/proton/documentdb/documentbucketmover/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcore_bucketmover_test STATIC
SOURCES
diff --git a/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.cpp b/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.cpp
index 714d519cab3..42e85f2909f 100644
--- a/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.cpp
+++ b/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketmover_common.h"
#include <vespa/searchcore/proton/documentmetastore/documentmetastore.h>
diff --git a/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h b/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h
index f70a4bfad11..35b6e21588b 100644
--- a/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h
+++ b/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/bucketdb/bucketdbhandler.h>
#include <vespa/searchcore/proton/bucketdb/bucket_create_notifier.h>
diff --git a/searchcore/src/tests/proton/documentdb/documentbucketmover/documentbucketmover_test.cpp b/searchcore/src/tests/proton/documentdb/documentbucketmover/documentbucketmover_test.cpp
index 64398503dfa..e2f2f21f596 100644
--- a/searchcore/src/tests/proton/documentdb/documentbucketmover/documentbucketmover_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/documentbucketmover/documentbucketmover_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketmover_common.h"
#include <vespa/searchcore/proton/server/bucketmovejob.h>
diff --git a/searchcore/src/tests/proton/documentdb/documentbucketmover/documentmover_test.cpp b/searchcore/src/tests/proton/documentdb/documentbucketmover/documentmover_test.cpp
index 143d8f290c6..8d0d11295cd 100644
--- a/searchcore/src/tests/proton/documentdb/documentbucketmover/documentmover_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/documentbucketmover/documentmover_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketmover_common.h"
#include <vespa/searchcore/proton/server/documentbucketmover.h>
diff --git a/searchcore/src/tests/proton/documentdb/documentbucketmover/scaniterator_test.cpp b/searchcore/src/tests/proton/documentdb/documentbucketmover/scaniterator_test.cpp
index 91b8709e8da..0fa3dcd4932 100644
--- a/searchcore/src/tests/proton/documentdb/documentbucketmover/scaniterator_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/documentbucketmover/scaniterator_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketmover_common.h"
#include <vespa/searchcore/proton/bucketdb/bucketscaniterator.h>
diff --git a/searchcore/src/tests/proton/documentdb/documentdb_test.cpp b/searchcore/src/tests/proton/documentdb/documentdb_test.cpp
index 3013e8f38d1..a24eeb262ab 100644
--- a/searchcore/src/tests/proton/documentdb/documentdb_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/documentdb_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <tests/proton/common/dummydbowner.h>
#include <vespa/document/datatype/documenttype.h>
diff --git a/searchcore/src/tests/proton/documentdb/documentdb_test.sh b/searchcore/src/tests/proton/documentdb/documentdb_test.sh
index 41fa740d9c0..d878bb1db2b 100755
--- a/searchcore/src/tests/proton/documentdb/documentdb_test.sh
+++ b/searchcore/src/tests/proton/documentdb/documentdb_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
$VALGRIND ./searchcore_documentdb_test_app
rm -rf typea tmp
diff --git a/searchcore/src/tests/proton/documentdb/documentdbconfig/CMakeLists.txt b/searchcore/src/tests/proton/documentdb/documentdbconfig/CMakeLists.txt
index 4bb6a180c82..2df75a35cf4 100644
--- a/searchcore/src/tests/proton/documentdb/documentdbconfig/CMakeLists.txt
+++ b/searchcore/src/tests/proton/documentdb/documentdbconfig/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_documentdbconfig_test_app TEST
SOURCES
documentdbconfig_test.cpp
diff --git a/searchcore/src/tests/proton/documentdb/documentdbconfig/documentdbconfig_test.cpp b/searchcore/src/tests/proton/documentdb/documentdbconfig/documentdbconfig_test.cpp
index 544ff853384..0d07da8858a 100644
--- a/searchcore/src/tests/proton/documentdb/documentdbconfig/documentdbconfig_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/documentdbconfig/documentdbconfig_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config-attributes.h>
#include <vespa/config-imported-fields.h>
diff --git a/searchcore/src/tests/proton/documentdb/documentdbconfigscout/CMakeLists.txt b/searchcore/src/tests/proton/documentdb/documentdbconfigscout/CMakeLists.txt
index a40dda0de2d..3602517a8bc 100644
--- a/searchcore/src/tests/proton/documentdb/documentdbconfigscout/CMakeLists.txt
+++ b/searchcore/src/tests/proton/documentdb/documentdbconfigscout/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_documentdbconfigscout_test_app TEST
SOURCES
documentdbconfigscout_test.cpp
diff --git a/searchcore/src/tests/proton/documentdb/documentdbconfigscout/documentdbconfigscout_test.cpp b/searchcore/src/tests/proton/documentdb/documentdbconfigscout/documentdbconfigscout_test.cpp
index 2ae28936476..4350ebc0ee2 100644
--- a/searchcore/src/tests/proton/documentdb/documentdbconfigscout/documentdbconfigscout_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/documentdbconfigscout/documentdbconfigscout_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/repo/documenttyperepo.h>
#include <vespa/searchcore/proton/server/documentdbconfig.h>
@@ -43,6 +43,9 @@ assertDefaultAttribute(const AttributesConfig::Attribute &attribute,
if (!EXPECT_FALSE(attribute.huge)) {
return false;
}
+ if (!EXPECT_FALSE(attribute.paged)) {
+ return false;
+ }
if (!EXPECT_FALSE(attribute.enablebitvectors)) {
return false;
}
@@ -66,6 +69,9 @@ assertFastSearchAttribute(const AttributesConfig::Attribute &attribute,
if (!EXPECT_FALSE(attribute.huge)) {
return false;
}
+ if (!EXPECT_FALSE(attribute.paged)) {
+ return false;
+ }
if (!EXPECT_FALSE(attribute.enablebitvectors)) {
return false;
}
@@ -89,6 +95,9 @@ assertFastSearchAndMoreAttribute(const AttributesConfig::Attribute &attribute,
if (!EXPECT_TRUE(attribute.huge)) {
return false;
}
+ if (!EXPECT_TRUE(attribute.paged)) {
+ return false;
+ }
if (!EXPECT_TRUE(attribute.enablebitvectors)) {
return false;
}
@@ -233,6 +242,7 @@ setupFastSearchAndMoreAttribute(const vespalib::string name)
attribute.name = name;
attribute.fastsearch = true;
attribute.huge = true;
+ attribute.paged = true;
attribute.enablebitvectors = true;
attribute.enableonlybitvector = true;
return attribute;
diff --git a/searchcore/src/tests/proton/documentdb/feedhandler/CMakeLists.txt b/searchcore/src/tests/proton/documentdb/feedhandler/CMakeLists.txt
index 84027130cdb..e3d2afe7734 100644
--- a/searchcore/src/tests/proton/documentdb/feedhandler/CMakeLists.txt
+++ b/searchcore/src/tests/proton/documentdb/feedhandler/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_feedhandler_test_app TEST
SOURCES
feedhandler_test.cpp
diff --git a/searchcore/src/tests/proton/documentdb/feedhandler/feedhandler_test.cpp b/searchcore/src/tests/proton/documentdb/feedhandler/feedhandler_test.cpp
index bcb0c049e56..5384a985af0 100644
--- a/searchcore/src/tests/proton/documentdb/feedhandler/feedhandler_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/feedhandler/feedhandler_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/persistence/spi/result.h>
#include <vespa/document/datatype/tensor_data_type.h>
diff --git a/searchcore/src/tests/proton/documentdb/feedhandler/feedhandler_test.sh b/searchcore/src/tests/proton/documentdb/feedhandler/feedhandler_test.sh
index ddb94964d77..a8724f1ad68 100755
--- a/searchcore/src/tests/proton/documentdb/feedhandler/feedhandler_test.sh
+++ b/searchcore/src/tests/proton/documentdb/feedhandler/feedhandler_test.sh
@@ -1,4 +1,4 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
$VALGRIND ./searchcore_feedhandler_test_app
diff --git a/searchcore/src/tests/proton/documentdb/feedview/CMakeLists.txt b/searchcore/src/tests/proton/documentdb/feedview/CMakeLists.txt
index a46ca246d9a..04d9800653b 100644
--- a/searchcore/src/tests/proton/documentdb/feedview/CMakeLists.txt
+++ b/searchcore/src/tests/proton/documentdb/feedview/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_feedview_test_app TEST
SOURCES
feedview_test.cpp
diff --git a/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp b/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp
index 91df4476a6a..d4ac1ac0e96 100644
--- a/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/attribute/i_attribute_writer.h>
#include <vespa/searchcore/proton/attribute/ifieldupdatecallback.h>
diff --git a/searchcore/src/tests/proton/documentdb/fileconfigmanager/CMakeLists.txt b/searchcore/src/tests/proton/documentdb/fileconfigmanager/CMakeLists.txt
index 47fbe88709f..e3a97676d7a 100644
--- a/searchcore/src/tests/proton/documentdb/fileconfigmanager/CMakeLists.txt
+++ b/searchcore/src/tests/proton/documentdb/fileconfigmanager/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_fileconfigmanager_test_app TEST
SOURCES
fileconfigmanager_test.cpp
diff --git a/searchcore/src/tests/proton/documentdb/fileconfigmanager/fileconfigmanager_test.cpp b/searchcore/src/tests/proton/documentdb/fileconfigmanager/fileconfigmanager_test.cpp
index 4ac66e464e2..469cffaa31a 100644
--- a/searchcore/src/tests/proton/documentdb/fileconfigmanager/fileconfigmanager_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/fileconfigmanager/fileconfigmanager_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "config-mycfg.h"
#include <vespa/config-attributes.h>
diff --git a/searchcore/src/tests/proton/documentdb/fileconfigmanager/fileconfigmanager_test.sh b/searchcore/src/tests/proton/documentdb/fileconfigmanager/fileconfigmanager_test.sh
index 34108577b1f..fe5ebd4b83c 100755
--- a/searchcore/src/tests/proton/documentdb/fileconfigmanager/fileconfigmanager_test.sh
+++ b/searchcore/src/tests/proton/documentdb/fileconfigmanager/fileconfigmanager_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
rm -rf out
rm -rf out2
diff --git a/searchcore/src/tests/proton/documentdb/fileconfigmanager/mycfg.def b/searchcore/src/tests/proton/documentdb/fileconfigmanager/mycfg.def
index 52b374e1bbf..cfaf04140d1 100644
--- a/searchcore/src/tests/proton/documentdb/fileconfigmanager/mycfg.def
+++ b/searchcore/src/tests/proton/documentdb/fileconfigmanager/mycfg.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=config
myField string default=""
diff --git a/searchcore/src/tests/proton/documentdb/job_tracked_maintenance_job/CMakeLists.txt b/searchcore/src/tests/proton/documentdb/job_tracked_maintenance_job/CMakeLists.txt
index 725a26234ba..2ff44d3b7d7 100644
--- a/searchcore/src/tests/proton/documentdb/job_tracked_maintenance_job/CMakeLists.txt
+++ b/searchcore/src/tests/proton/documentdb/job_tracked_maintenance_job/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_job_tracked_maintenance_job_test_app TEST
SOURCES
job_tracked_maintenance_job_test.cpp
diff --git a/searchcore/src/tests/proton/documentdb/job_tracked_maintenance_job/job_tracked_maintenance_job_test.cpp b/searchcore/src/tests/proton/documentdb/job_tracked_maintenance_job/job_tracked_maintenance_job_test.cpp
index 8862a6d3bb2..0cf00a79650 100644
--- a/searchcore/src/tests/proton/documentdb/job_tracked_maintenance_job/job_tracked_maintenance_job_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/job_tracked_maintenance_job/job_tracked_maintenance_job_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/server/i_blockable_maintenance_job.h>
diff --git a/searchcore/src/tests/proton/documentdb/lid_space_compaction/CMakeLists.txt b/searchcore/src/tests/proton/documentdb/lid_space_compaction/CMakeLists.txt
index 21afe6220be..d19f5f4debf 100644
--- a/searchcore/src/tests/proton/documentdb/lid_space_compaction/CMakeLists.txt
+++ b/searchcore/src/tests/proton/documentdb/lid_space_compaction/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcore_lidspace_test STATIC
SOURCES
diff --git a/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_common.cpp b/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_common.cpp
index 4b9d893eca5..3abeaf37062 100644
--- a/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_common.cpp
+++ b/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_common.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "lid_space_common.h"
#include <vespa/searchcore/proton/test/dummy_document_sub_db.h>
diff --git a/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_common.h b/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_common.h
index 348499d937f..42976104836 100644
--- a/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_common.h
+++ b/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_common.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_compaction_test.cpp b/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_compaction_test.cpp
index f1353a30887..a2d4315dad5 100644
--- a/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_compaction_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_compaction_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "lid_space_jobtest.h"
diff --git a/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_handler_test.cpp b/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_handler_test.cpp
index 2ca1101ac3a..bc9cd9a93fa 100644
--- a/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_handler_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_handler_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "lid_space_common.h"
#include <vespa/searchcore/proton/bucketdb/bucket_db_owner.h>
diff --git a/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_jobtest.cpp b/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_jobtest.cpp
index ef54aafcec2..c9b009e4a17 100644
--- a/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_jobtest.cpp
+++ b/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_jobtest.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "lid_space_jobtest.h"
#include <vespa/searchcore/proton/server/lid_space_compaction_job.h>
diff --git a/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_jobtest.h b/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_jobtest.h
index 747e5c9faca..774acd0071a 100644
--- a/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_jobtest.h
+++ b/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_jobtest.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "lid_space_common.h"
#include <vespa/searchcore/proton/server/blockable_maintenance_job.h>
diff --git a/searchcore/src/tests/proton/documentdb/maintenancecontroller/CMakeLists.txt b/searchcore/src/tests/proton/documentdb/maintenancecontroller/CMakeLists.txt
index 7a2f741c1be..8febaf0bb26 100644
--- a/searchcore/src/tests/proton/documentdb/maintenancecontroller/CMakeLists.txt
+++ b/searchcore/src/tests/proton/documentdb/maintenancecontroller/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_maintenancecontroller_test_app TEST
SOURCES
maintenancecontroller_test.cpp
diff --git a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp
index 59bb33f51ce..1463be8cdbd 100644
--- a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/attribute/attribute_config_inspector.h>
diff --git a/searchcore/src/tests/proton/documentdb/move_operation_limiter/CMakeLists.txt b/searchcore/src/tests/proton/documentdb/move_operation_limiter/CMakeLists.txt
index 1cf0cf59ad3..e48e71cec36 100644
--- a/searchcore/src/tests/proton/documentdb/move_operation_limiter/CMakeLists.txt
+++ b/searchcore/src/tests/proton/documentdb/move_operation_limiter/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_move_operation_limiter_test_app TEST
SOURCES
move_operation_limiter_test.cpp
diff --git a/searchcore/src/tests/proton/documentdb/move_operation_limiter/move_operation_limiter_test.cpp b/searchcore/src/tests/proton/documentdb/move_operation_limiter/move_operation_limiter_test.cpp
index 8466a016fc3..65aa0ce371f 100644
--- a/searchcore/src/tests/proton/documentdb/move_operation_limiter/move_operation_limiter_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/move_operation_limiter/move_operation_limiter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/server/i_blockable_maintenance_job.h>
#include <vespa/searchcore/proton/server/move_operation_limiter.h>
diff --git a/searchcore/src/tests/proton/documentdb/storeonlyfeedview/CMakeLists.txt b/searchcore/src/tests/proton/documentdb/storeonlyfeedview/CMakeLists.txt
index 8ee9ff6d4e9..3cdad86e9d7 100644
--- a/searchcore/src/tests/proton/documentdb/storeonlyfeedview/CMakeLists.txt
+++ b/searchcore/src/tests/proton/documentdb/storeonlyfeedview/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_storeonlyfeedview_test_app TEST
SOURCES
storeonlyfeedview_test.cpp
diff --git a/searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp b/searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp
index 7d181eaa0ee..5146a16272a 100644
--- a/searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/documentid.h>
#include <vespa/document/datatype/datatype.h>
diff --git a/searchcore/src/tests/proton/documentdb/threading_service_config/CMakeLists.txt b/searchcore/src/tests/proton/documentdb/threading_service_config/CMakeLists.txt
index 214b5c9b86d..31814569698 100644
--- a/searchcore/src/tests/proton/documentdb/threading_service_config/CMakeLists.txt
+++ b/searchcore/src/tests/proton/documentdb/threading_service_config/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_threading_service_config_test_app TEST
SOURCES
threading_service_config_test.cpp
diff --git a/searchcore/src/tests/proton/documentdb/threading_service_config/threading_service_config_test.cpp b/searchcore/src/tests/proton/documentdb/threading_service_config/threading_service_config_test.cpp
index e05383387d6..353ebeb3abc 100644
--- a/searchcore/src/tests/proton/documentdb/threading_service_config/threading_service_config_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/threading_service_config/threading_service_config_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/config/config-proton.h>
#include <vespa/searchcore/proton/common/hw_info.h>
diff --git a/searchcore/src/tests/proton/documentmetastore/CMakeLists.txt b/searchcore/src/tests/proton/documentmetastore/CMakeLists.txt
index 23199e320d1..3c9a4e05b50 100644
--- a/searchcore/src/tests/proton/documentmetastore/CMakeLists.txt
+++ b/searchcore/src/tests/proton/documentmetastore/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_documentmetastore_test_app TEST
SOURCES
documentmetastore_test.cpp
diff --git a/searchcore/src/tests/proton/documentmetastore/documentmetastore_test.cpp b/searchcore/src/tests/proton/documentmetastore/documentmetastore_test.cpp
index 5dd6f0ff10f..9c175da5794 100644
--- a/searchcore/src/tests/proton/documentmetastore/documentmetastore_test.cpp
+++ b/searchcore/src/tests/proton/documentmetastore/documentmetastore_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/documentid.h>
#include <vespa/persistence/spi/bucket_limits.h>
diff --git a/searchcore/src/tests/proton/documentmetastore/documentmetastore_test.sh b/searchcore/src/tests/proton/documentmetastore/documentmetastore_test.sh
index 818581305ce..199a71106f8 100755
--- a/searchcore/src/tests/proton/documentmetastore/documentmetastore_test.sh
+++ b/searchcore/src/tests/proton/documentmetastore/documentmetastore_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
$VALGRIND ./searchcore_documentmetastore_test_app
rm -rf documentmetastore*.dat
diff --git a/searchcore/src/tests/proton/documentmetastore/lidreusedelayer/CMakeLists.txt b/searchcore/src/tests/proton/documentmetastore/lidreusedelayer/CMakeLists.txt
index 49f929e0127..81c939770f5 100644
--- a/searchcore/src/tests/proton/documentmetastore/lidreusedelayer/CMakeLists.txt
+++ b/searchcore/src/tests/proton/documentmetastore/lidreusedelayer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_lidreusedelayer_test_app TEST
SOURCES
lidreusedelayer_test.cpp
diff --git a/searchcore/src/tests/proton/documentmetastore/lidreusedelayer/lidreusedelayer_test.cpp b/searchcore/src/tests/proton/documentmetastore/lidreusedelayer/lidreusedelayer_test.cpp
index 4bf8f36caa3..c49ec67f220 100644
--- a/searchcore/src/tests/proton/documentmetastore/lidreusedelayer/lidreusedelayer_test.cpp
+++ b/searchcore/src/tests/proton/documentmetastore/lidreusedelayer/lidreusedelayer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchcore/proton/documentmetastore/i_store.h>
diff --git a/searchcore/src/tests/proton/feed_and_search/CMakeLists.txt b/searchcore/src/tests/proton/feed_and_search/CMakeLists.txt
index 2c37e4f4a71..a565d791988 100644
--- a/searchcore/src/tests/proton/feed_and_search/CMakeLists.txt
+++ b/searchcore/src/tests/proton/feed_and_search/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_feed_and_search_test_app TEST
SOURCES
feed_and_search.cpp
diff --git a/searchcore/src/tests/proton/feed_and_search/feed_and_search.cpp b/searchcore/src/tests/proton/feed_and_search/feed_and_search.cpp
index 59b1fc80ab0..ded0f624474 100644
--- a/searchcore/src/tests/proton/feed_and_search/feed_and_search.cpp
+++ b/searchcore/src/tests/proton/feed_and_search/feed_and_search.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/datatype/datatype.h>
#include <vespa/document/fieldvalue/document.h>
diff --git a/searchcore/src/tests/proton/feedoperation/CMakeLists.txt b/searchcore/src/tests/proton/feedoperation/CMakeLists.txt
index 756bd928641..82bca5ab63a 100644
--- a/searchcore/src/tests/proton/feedoperation/CMakeLists.txt
+++ b/searchcore/src/tests/proton/feedoperation/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_feedoperation_test_app TEST
SOURCES
feedoperation_test.cpp
diff --git a/searchcore/src/tests/proton/feedoperation/feedoperation_test.cpp b/searchcore/src/tests/proton/feedoperation/feedoperation_test.cpp
index 53fdcb7757f..567fbf5dfec 100644
--- a/searchcore/src/tests/proton/feedoperation/feedoperation_test.cpp
+++ b/searchcore/src/tests/proton/feedoperation/feedoperation_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for feedoperation.
diff --git a/searchcore/src/tests/proton/feedtoken/CMakeLists.txt b/searchcore/src/tests/proton/feedtoken/CMakeLists.txt
index 5b5f409da25..8cf242dd3c1 100644
--- a/searchcore/src/tests/proton/feedtoken/CMakeLists.txt
+++ b/searchcore/src/tests/proton/feedtoken/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_feedtoken_test_app TEST
SOURCES
feedtoken.cpp
diff --git a/searchcore/src/tests/proton/feedtoken/feedtoken.cpp b/searchcore/src/tests/proton/feedtoken/feedtoken.cpp
index 8bd1d92657f..19521dfb4f9 100644
--- a/searchcore/src/tests/proton/feedtoken/feedtoken.cpp
+++ b/searchcore/src/tests/proton/feedtoken/feedtoken.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchcore/proton/common/feedtoken.h>
#include <vespa/vespalib/util/exceptions.h>
diff --git a/searchcore/src/tests/proton/flushengine/CMakeLists.txt b/searchcore/src/tests/proton/flushengine/CMakeLists.txt
index 6e8df3c9b7f..b45c4fa411c 100644
--- a/searchcore/src/tests/proton/flushengine/CMakeLists.txt
+++ b/searchcore/src/tests/proton/flushengine/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_flushengine_test_app TEST
SOURCES
flushengine_test.cpp
diff --git a/searchcore/src/tests/proton/flushengine/flushengine_test.cpp b/searchcore/src/tests/proton/flushengine/flushengine_test.cpp
index 13dcfb45dc9..3bff3649634 100644
--- a/searchcore/src/tests/proton/flushengine/flushengine_test.cpp
+++ b/searchcore/src/tests/proton/flushengine/flushengine_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/flushengine/cachedflushtarget.h>
#include <vespa/searchcore/proton/flushengine/flush_engine_explorer.h>
diff --git a/searchcore/src/tests/proton/flushengine/prepare_restart_flush_strategy/CMakeLists.txt b/searchcore/src/tests/proton/flushengine/prepare_restart_flush_strategy/CMakeLists.txt
index d955f05814d..9f0c777a4d7 100644
--- a/searchcore/src/tests/proton/flushengine/prepare_restart_flush_strategy/CMakeLists.txt
+++ b/searchcore/src/tests/proton/flushengine/prepare_restart_flush_strategy/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_flushengine_prepare_restart_flush_strategy_test_app TEST
SOURCES
prepare_restart_flush_strategy_test.cpp
diff --git a/searchcore/src/tests/proton/flushengine/prepare_restart_flush_strategy/prepare_restart_flush_strategy_test.cpp b/searchcore/src/tests/proton/flushengine/prepare_restart_flush_strategy/prepare_restart_flush_strategy_test.cpp
index 1b8be388c13..40c4c491940 100644
--- a/searchcore/src/tests/proton/flushengine/prepare_restart_flush_strategy/prepare_restart_flush_strategy_test.cpp
+++ b/searchcore/src/tests/proton/flushengine/prepare_restart_flush_strategy/prepare_restart_flush_strategy_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchcore/proton/flushengine/prepare_restart_flush_strategy.h>
diff --git a/searchcore/src/tests/proton/flushengine/shrink_lid_space_flush_target/CMakeLists.txt b/searchcore/src/tests/proton/flushengine/shrink_lid_space_flush_target/CMakeLists.txt
index 3971d81e465..e6e685d1258 100644
--- a/searchcore/src/tests/proton/flushengine/shrink_lid_space_flush_target/CMakeLists.txt
+++ b/searchcore/src/tests/proton/flushengine/shrink_lid_space_flush_target/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_flushengine_shrink_lid_space_flush_target_test_app TEST
SOURCES
shrink_lid_space_flush_target_test.cpp
diff --git a/searchcore/src/tests/proton/flushengine/shrink_lid_space_flush_target/shrink_lid_space_flush_target_test.cpp b/searchcore/src/tests/proton/flushengine/shrink_lid_space_flush_target/shrink_lid_space_flush_target_test.cpp
index acf3f66653d..5eb4dd380d4 100644
--- a/searchcore/src/tests/proton/flushengine/shrink_lid_space_flush_target/shrink_lid_space_flush_target_test.cpp
+++ b/searchcore/src/tests/proton/flushengine/shrink_lid_space_flush_target/shrink_lid_space_flush_target_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchcore/proton/flushengine/shrink_lid_space_flush_target.h>
diff --git a/searchcore/src/tests/proton/index/CMakeLists.txt b/searchcore/src/tests/proton/index/CMakeLists.txt
index 130ed2e97f4..62a631dc26e 100644
--- a/searchcore/src/tests/proton/index/CMakeLists.txt
+++ b/searchcore/src/tests/proton/index/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_indexmanager_test_app TEST
SOURCES
indexmanager_test.cpp
diff --git a/searchcore/src/tests/proton/index/diskindexcleaner_test.cpp b/searchcore/src/tests/proton/index/diskindexcleaner_test.cpp
index f2f133a10cd..6eab2c5bf3d 100644
--- a/searchcore/src/tests/proton/index/diskindexcleaner_test.cpp
+++ b/searchcore/src/tests/proton/index/diskindexcleaner_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for diskindexcleaner.
#include <vespa/searchcorespi/index/activediskindexes.h>
diff --git a/searchcore/src/tests/proton/index/fusionrunner_test.cpp b/searchcore/src/tests/proton/index/fusionrunner_test.cpp
index 5243b50eac2..5793e366126 100644
--- a/searchcore/src/tests/proton/index/fusionrunner_test.cpp
+++ b/searchcore/src/tests/proton/index/fusionrunner_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fastos/file.h>
#include <vespa/searchcore/proton/index/indexmanager.h>
diff --git a/searchcore/src/tests/proton/index/index_writer/CMakeLists.txt b/searchcore/src/tests/proton/index/index_writer/CMakeLists.txt
index 6d1c4ab53a4..7a0090a4f38 100644
--- a/searchcore/src/tests/proton/index/index_writer/CMakeLists.txt
+++ b/searchcore/src/tests/proton/index/index_writer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_index_writer_test_app TEST
SOURCES
index_writer_test.cpp
diff --git a/searchcore/src/tests/proton/index/index_writer/index_writer_test.cpp b/searchcore/src/tests/proton/index/index_writer/index_writer_test.cpp
index a2d08f0121e..c1cdbdf9889 100644
--- a/searchcore/src/tests/proton/index/index_writer/index_writer_test.cpp
+++ b/searchcore/src/tests/proton/index/index_writer/index_writer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchcore/src/tests/proton/index/indexcollection_test.cpp b/searchcore/src/tests/proton/index/indexcollection_test.cpp
index a0007027d51..07fbacde49a 100644
--- a/searchcore/src/tests/proton/index/indexcollection_test.cpp
+++ b/searchcore/src/tests/proton/index/indexcollection_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/matching/fakesearchcontext.h>
#include <vespa/searchcorespi/index/warmupindexcollection.h>
diff --git a/searchcore/src/tests/proton/index/indexmanager_test.cpp b/searchcore/src/tests/proton/index/indexmanager_test.cpp
index 85cd2513c0f..7021f04d845 100644
--- a/searchcore/src/tests/proton/index/indexmanager_test.cpp
+++ b/searchcore/src/tests/proton/index/indexmanager_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fastos/file.h>
#include <vespa/searchcore/proton/index/indexmanager.h>
diff --git a/searchcore/src/tests/proton/initializer/CMakeLists.txt b/searchcore/src/tests/proton/initializer/CMakeLists.txt
index 1ace9aab74b..94f1fb27deb 100644
--- a/searchcore/src/tests/proton/initializer/CMakeLists.txt
+++ b/searchcore/src/tests/proton/initializer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_task_runner_test_app TEST
SOURCES
task_runner_test.cpp
diff --git a/searchcore/src/tests/proton/initializer/task_runner_test.cpp b/searchcore/src/tests/proton/initializer/task_runner_test.cpp
index 2b14f0d3008..adbc3feead2 100644
--- a/searchcore/src/tests/proton/initializer/task_runner_test.cpp
+++ b/searchcore/src/tests/proton/initializer/task_runner_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("task_runner_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchcore/src/tests/proton/matchengine/CMakeLists.txt b/searchcore/src/tests/proton/matchengine/CMakeLists.txt
index b378f2c58e7..1a91fd2a799 100644
--- a/searchcore/src/tests/proton/matchengine/CMakeLists.txt
+++ b/searchcore/src/tests/proton/matchengine/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_matchengine_test_app TEST
SOURCES
matchengine.cpp
diff --git a/searchcore/src/tests/proton/matchengine/matchengine.cpp b/searchcore/src/tests/proton/matchengine/matchengine.cpp
index fd48fffcb5c..481a9f061be 100644
--- a/searchcore/src/tests/proton/matchengine/matchengine.cpp
+++ b/searchcore/src/tests/proton/matchengine/matchengine.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/matchengine/matchengine.h>
#include <vespa/vespalib/data/slime/slime.h>
#include <vespa/searchlib/engine/docsumreply.h>
diff --git a/searchcore/src/tests/proton/matching/CMakeLists.txt b/searchcore/src/tests/proton/matching/CMakeLists.txt
index e3c5fa2bd97..c42a11be8ea 100644
--- a/searchcore/src/tests/proton/matching/CMakeLists.txt
+++ b/searchcore/src/tests/proton/matching/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_matching_test_app TEST
SOURCES
matching_test.cpp
diff --git a/searchcore/src/tests/proton/matching/constant_value_repo/CMakeLists.txt b/searchcore/src/tests/proton/matching/constant_value_repo/CMakeLists.txt
index bb46b14d99e..a000943306d 100644
--- a/searchcore/src/tests/proton/matching/constant_value_repo/CMakeLists.txt
+++ b/searchcore/src/tests/proton/matching/constant_value_repo/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_constant_value_repo_test_app TEST
SOURCES
constant_value_repo_test.cpp
diff --git a/searchcore/src/tests/proton/matching/constant_value_repo/constant_value_repo_test.cpp b/searchcore/src/tests/proton/matching/constant_value_repo/constant_value_repo_test.cpp
index 68959d8e20f..4c06feb6ae7 100644
--- a/searchcore/src/tests/proton/matching/constant_value_repo/constant_value_repo_test.cpp
+++ b/searchcore/src/tests/proton/matching/constant_value_repo/constant_value_repo_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
diff --git a/searchcore/src/tests/proton/matching/docid_range_scheduler/CMakeLists.txt b/searchcore/src/tests/proton/matching/docid_range_scheduler/CMakeLists.txt
index 8bb9c91750f..4a14e9df475 100644
--- a/searchcore/src/tests/proton/matching/docid_range_scheduler/CMakeLists.txt
+++ b/searchcore/src/tests/proton/matching/docid_range_scheduler/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_docid_range_scheduler_test_app TEST
SOURCES
docid_range_scheduler_test.cpp
diff --git a/searchcore/src/tests/proton/matching/docid_range_scheduler/docid_range_scheduler_bench.cpp b/searchcore/src/tests/proton/matching/docid_range_scheduler/docid_range_scheduler_bench.cpp
index ccf31032e30..f82377c9188 100644
--- a/searchcore/src/tests/proton/matching/docid_range_scheduler/docid_range_scheduler_bench.cpp
+++ b/searchcore/src/tests/proton/matching/docid_range_scheduler/docid_range_scheduler_bench.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchcore/proton/matching/docid_range_scheduler.h>
diff --git a/searchcore/src/tests/proton/matching/docid_range_scheduler/docid_range_scheduler_test.cpp b/searchcore/src/tests/proton/matching/docid_range_scheduler/docid_range_scheduler_test.cpp
index 510269f2195..6d581ba1bd4 100644
--- a/searchcore/src/tests/proton/matching/docid_range_scheduler/docid_range_scheduler_test.cpp
+++ b/searchcore/src/tests/proton/matching/docid_range_scheduler/docid_range_scheduler_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/testkit/time_bomb.h>
diff --git a/searchcore/src/tests/proton/matching/index_environment/CMakeLists.txt b/searchcore/src/tests/proton/matching/index_environment/CMakeLists.txt
index bb1dff70b24..b40d44bbe60 100644
--- a/searchcore/src/tests/proton/matching/index_environment/CMakeLists.txt
+++ b/searchcore/src/tests/proton/matching/index_environment/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_index_environment_test_app TEST
SOURCES
index_environment_test.cpp
diff --git a/searchcore/src/tests/proton/matching/index_environment/index_environment_test.cpp b/searchcore/src/tests/proton/matching/index_environment/index_environment_test.cpp
index 20b9e1206c7..f6c10f7ddb5 100644
--- a/searchcore/src/tests/proton/matching/index_environment/index_environment_test.cpp
+++ b/searchcore/src/tests/proton/matching/index_environment/index_environment_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/value_cache/constant_value.h>
diff --git a/searchcore/src/tests/proton/matching/match_loop_communicator/CMakeLists.txt b/searchcore/src/tests/proton/matching/match_loop_communicator/CMakeLists.txt
index 2ef4d66167a..a53c7d44949 100644
--- a/searchcore/src/tests/proton/matching/match_loop_communicator/CMakeLists.txt
+++ b/searchcore/src/tests/proton/matching/match_loop_communicator/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_match_loop_communicator_test_app TEST
SOURCES
match_loop_communicator_test.cpp
diff --git a/searchcore/src/tests/proton/matching/match_loop_communicator/match_loop_communicator_test.cpp b/searchcore/src/tests/proton/matching/match_loop_communicator/match_loop_communicator_test.cpp
index 0b0f28962c4..4c2afe32ae8 100644
--- a/searchcore/src/tests/proton/matching/match_loop_communicator/match_loop_communicator_test.cpp
+++ b/searchcore/src/tests/proton/matching/match_loop_communicator/match_loop_communicator_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchcore/proton/matching/match_loop_communicator.h>
#include <algorithm>
diff --git a/searchcore/src/tests/proton/matching/match_phase_limiter/CMakeLists.txt b/searchcore/src/tests/proton/matching/match_phase_limiter/CMakeLists.txt
index ae1c9a98ab8..e2ebb119045 100644
--- a/searchcore/src/tests/proton/matching/match_phase_limiter/CMakeLists.txt
+++ b/searchcore/src/tests/proton/matching/match_phase_limiter/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_match_phase_limiter_test_app TEST
SOURCES
match_phase_limiter_test.cpp
diff --git a/searchcore/src/tests/proton/matching/match_phase_limiter/match_phase_limiter_test.cpp b/searchcore/src/tests/proton/matching/match_phase_limiter/match_phase_limiter_test.cpp
index 201824cd764..be17c39f542 100644
--- a/searchcore/src/tests/proton/matching/match_phase_limiter/match_phase_limiter_test.cpp
+++ b/searchcore/src/tests/proton/matching/match_phase_limiter/match_phase_limiter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchcore/proton/matching/match_phase_limiter.h>
#include <vespa/searchlib/queryeval/termasstring.h>
diff --git a/searchcore/src/tests/proton/matching/matching_stats_test.cpp b/searchcore/src/tests/proton/matching/matching_stats_test.cpp
index 607a644a302..ce623aa877e 100644
--- a/searchcore/src/tests/proton/matching/matching_stats_test.cpp
+++ b/searchcore/src/tests/proton/matching/matching_stats_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchcore/proton/matching/matching_stats.h>
diff --git a/searchcore/src/tests/proton/matching/matching_test.cpp b/searchcore/src/tests/proton/matching/matching_test.cpp
index 2bee53a5215..a4952fa3154 100644
--- a/searchcore/src/tests/proton/matching/matching_test.cpp
+++ b/searchcore/src/tests/proton/matching/matching_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/document/base/globalid.h>
diff --git a/searchcore/src/tests/proton/matching/partial_result/CMakeLists.txt b/searchcore/src/tests/proton/matching/partial_result/CMakeLists.txt
index 6af432d939e..a4aab46776f 100644
--- a/searchcore/src/tests/proton/matching/partial_result/CMakeLists.txt
+++ b/searchcore/src/tests/proton/matching/partial_result/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_partial_result_test_app TEST
SOURCES
partial_result_test.cpp
diff --git a/searchcore/src/tests/proton/matching/partial_result/partial_result_test.cpp b/searchcore/src/tests/proton/matching/partial_result/partial_result_test.cpp
index d82ac2fce2f..139288f6b6f 100644
--- a/searchcore/src/tests/proton/matching/partial_result/partial_result_test.cpp
+++ b/searchcore/src/tests/proton/matching/partial_result/partial_result_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchcore/proton/matching/partial_result.h>
#include <vespa/vespalib/util/box.h>
diff --git a/searchcore/src/tests/proton/matching/query_test.cpp b/searchcore/src/tests/proton/matching/query_test.cpp
index 02e6b05622e..432a17392e5 100644
--- a/searchcore/src/tests/proton/matching/query_test.cpp
+++ b/searchcore/src/tests/proton/matching/query_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for query.
#include <vespa/searchcore/proton/matching/fakesearchcontext.h>
diff --git a/searchcore/src/tests/proton/matching/querynodes_test.cpp b/searchcore/src/tests/proton/matching/querynodes_test.cpp
index 7795d1563d2..14014853cc9 100644
--- a/searchcore/src/tests/proton/matching/querynodes_test.cpp
+++ b/searchcore/src/tests/proton/matching/querynodes_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for querynodes.
#include <vespa/searchcore/proton/matching/querynodes.h>
diff --git a/searchcore/src/tests/proton/matching/resolveviewvisitor_test.cpp b/searchcore/src/tests/proton/matching/resolveviewvisitor_test.cpp
index 4fd079949d5..c9216c85af2 100644
--- a/searchcore/src/tests/proton/matching/resolveviewvisitor_test.cpp
+++ b/searchcore/src/tests/proton/matching/resolveviewvisitor_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for resolveviewvisitor.
#include <vespa/log/log.h>
diff --git a/searchcore/src/tests/proton/matching/same_element_builder/CMakeLists.txt b/searchcore/src/tests/proton/matching/same_element_builder/CMakeLists.txt
index 299fdfa385d..77ed94025d8 100644
--- a/searchcore/src/tests/proton/matching/same_element_builder/CMakeLists.txt
+++ b/searchcore/src/tests/proton/matching/same_element_builder/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_same_element_builder_test_app TEST
SOURCES
same_element_builder_test.cpp
diff --git a/searchcore/src/tests/proton/matching/same_element_builder/same_element_builder_test.cpp b/searchcore/src/tests/proton/matching/same_element_builder/same_element_builder_test.cpp
index 3eff38fbf20..cb2fa52767a 100644
--- a/searchcore/src/tests/proton/matching/same_element_builder/same_element_builder_test.cpp
+++ b/searchcore/src/tests/proton/matching/same_element_builder/same_element_builder_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
diff --git a/searchcore/src/tests/proton/matching/sessionmanager_test.cpp b/searchcore/src/tests/proton/matching/sessionmanager_test.cpp
index f3edf2bf747..47779117919 100644
--- a/searchcore/src/tests/proton/matching/sessionmanager_test.cpp
+++ b/searchcore/src/tests/proton/matching/sessionmanager_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for sessionmanager.
diff --git a/searchcore/src/tests/proton/matching/termdataextractor_test.cpp b/searchcore/src/tests/proton/matching/termdataextractor_test.cpp
index c5da26d9847..443cc1686b6 100644
--- a/searchcore/src/tests/proton/matching/termdataextractor_test.cpp
+++ b/searchcore/src/tests/proton/matching/termdataextractor_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for TermDataExtractor.
#include <vespa/log/log.h>
diff --git a/searchcore/src/tests/proton/matching/unpacking_iterators_optimizer/unpacking_iterators_optimizer_test.cpp b/searchcore/src/tests/proton/matching/unpacking_iterators_optimizer/unpacking_iterators_optimizer_test.cpp
index f81d28fc3c1..5dc9808a5b6 100644
--- a/searchcore/src/tests/proton/matching/unpacking_iterators_optimizer/unpacking_iterators_optimizer_test.cpp
+++ b/searchcore/src/tests/proton/matching/unpacking_iterators_optimizer/unpacking_iterators_optimizer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/gtest/gtest.h>
#include <vespa/searchcore/proton/matching/unpacking_iterators_optimizer.h>
diff --git a/searchcore/src/tests/proton/metrics/documentdb_job_trackers/CMakeLists.txt b/searchcore/src/tests/proton/metrics/documentdb_job_trackers/CMakeLists.txt
index 526ef43a3c3..4a5dd2acb9d 100644
--- a/searchcore/src/tests/proton/metrics/documentdb_job_trackers/CMakeLists.txt
+++ b/searchcore/src/tests/proton/metrics/documentdb_job_trackers/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_documentdb_job_trackers_test_app TEST
SOURCES
documentdb_job_trackers_test.cpp
diff --git a/searchcore/src/tests/proton/metrics/documentdb_job_trackers/documentdb_job_trackers_test.cpp b/searchcore/src/tests/proton/metrics/documentdb_job_trackers/documentdb_job_trackers_test.cpp
index 1b9c60b379e..c2937b3fcce 100644
--- a/searchcore/src/tests/proton/metrics/documentdb_job_trackers/documentdb_job_trackers_test.cpp
+++ b/searchcore/src/tests/proton/metrics/documentdb_job_trackers/documentdb_job_trackers_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/metrics/documentdb_job_trackers.h>
#include <vespa/searchcore/proton/metrics/job_tracked_flush_target.h>
diff --git a/searchcore/src/tests/proton/metrics/job_load_sampler/CMakeLists.txt b/searchcore/src/tests/proton/metrics/job_load_sampler/CMakeLists.txt
index 8535f72284c..99da01df59a 100644
--- a/searchcore/src/tests/proton/metrics/job_load_sampler/CMakeLists.txt
+++ b/searchcore/src/tests/proton/metrics/job_load_sampler/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_job_load_sampler_test_app TEST
SOURCES
job_load_sampler_test.cpp
diff --git a/searchcore/src/tests/proton/metrics/job_load_sampler/job_load_sampler_test.cpp b/searchcore/src/tests/proton/metrics/job_load_sampler/job_load_sampler_test.cpp
index 5a22ef015fa..9c66a36b381 100644
--- a/searchcore/src/tests/proton/metrics/job_load_sampler/job_load_sampler_test.cpp
+++ b/searchcore/src/tests/proton/metrics/job_load_sampler/job_load_sampler_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("job_load_sampler_test");
diff --git a/searchcore/src/tests/proton/metrics/job_tracked_flush/CMakeLists.txt b/searchcore/src/tests/proton/metrics/job_tracked_flush/CMakeLists.txt
index bf6601def32..6ab08602f67 100644
--- a/searchcore/src/tests/proton/metrics/job_tracked_flush/CMakeLists.txt
+++ b/searchcore/src/tests/proton/metrics/job_tracked_flush/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_job_tracked_flush_test_app TEST
SOURCES
job_tracked_flush_test.cpp
diff --git a/searchcore/src/tests/proton/metrics/job_tracked_flush/job_tracked_flush_test.cpp b/searchcore/src/tests/proton/metrics/job_tracked_flush/job_tracked_flush_test.cpp
index 20d75972c8b..1c1ece92e2e 100644
--- a/searchcore/src/tests/proton/metrics/job_tracked_flush/job_tracked_flush_test.cpp
+++ b/searchcore/src/tests/proton/metrics/job_tracked_flush/job_tracked_flush_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/metrics/job_tracked_flush_target.h>
#include <vespa/searchcore/proton/metrics/job_tracked_flush_task.h>
diff --git a/searchcore/src/tests/proton/metrics/metrics_engine/CMakeLists.txt b/searchcore/src/tests/proton/metrics/metrics_engine/CMakeLists.txt
index 056533bb6e5..a6821a47b87 100644
--- a/searchcore/src/tests/proton/metrics/metrics_engine/CMakeLists.txt
+++ b/searchcore/src/tests/proton/metrics/metrics_engine/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_metrics_engine_test_app TEST
SOURCES
metrics_engine_test.cpp
diff --git a/searchcore/src/tests/proton/metrics/metrics_engine/metrics_engine_test.cpp b/searchcore/src/tests/proton/metrics/metrics_engine/metrics_engine_test.cpp
index c798de01804..2ed3192409e 100644
--- a/searchcore/src/tests/proton/metrics/metrics_engine/metrics_engine_test.cpp
+++ b/searchcore/src/tests/proton/metrics/metrics_engine/metrics_engine_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/metrics/metricset.h>
#include <vespa/searchcore/proton/metrics/attribute_metrics.h>
diff --git a/searchcore/src/tests/proton/persistenceconformance/CMakeLists.txt b/searchcore/src/tests/proton/persistenceconformance/CMakeLists.txt
index 6bda19b77a3..26a7a06406b 100644
--- a/searchcore/src/tests/proton/persistenceconformance/CMakeLists.txt
+++ b/searchcore/src/tests/proton/persistenceconformance/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_test(
NAME searchcore_persistenceconformance_test_app
COMMAND searchcore_persistenceconformance_test_app
diff --git a/searchcore/src/tests/proton/persistenceengine/CMakeLists.txt b/searchcore/src/tests/proton/persistenceengine/CMakeLists.txt
index 3480038144f..0088b54d839 100644
--- a/searchcore/src/tests/proton/persistenceengine/CMakeLists.txt
+++ b/searchcore/src/tests/proton/persistenceengine/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_persistenceengine_test_app TEST
SOURCES
persistenceengine_test.cpp
diff --git a/searchcore/src/tests/proton/persistenceengine/persistence_handler_map/CMakeLists.txt b/searchcore/src/tests/proton/persistenceengine/persistence_handler_map/CMakeLists.txt
index ecfe8af5d98..2197aebcdbe 100644
--- a/searchcore/src/tests/proton/persistenceengine/persistence_handler_map/CMakeLists.txt
+++ b/searchcore/src/tests/proton/persistenceengine/persistence_handler_map/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_persistence_handler_map_test_app TEST
SOURCES
persistence_handler_map_test.cpp
diff --git a/searchcore/src/tests/proton/persistenceengine/persistence_handler_map/persistence_handler_map_test.cpp b/searchcore/src/tests/proton/persistenceengine/persistence_handler_map/persistence_handler_map_test.cpp
index 9f6b82bb277..2bb1eb44e25 100644
--- a/searchcore/src/tests/proton/persistenceengine/persistence_handler_map/persistence_handler_map_test.cpp
+++ b/searchcore/src/tests/proton/persistenceengine/persistence_handler_map/persistence_handler_map_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/persistenceengine/ipersistencehandler.h>
#include <vespa/searchcore/proton/persistenceengine/persistence_handler_map.h>
diff --git a/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp b/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp
index f1e0306a660..9613c505f77 100644
--- a/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp
+++ b/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config-stor-distribution.h>
#include <vespa/document/datatype/documenttype.h>
diff --git a/searchcore/src/tests/proton/persistenceengine/resource_usage_tracker/CMakeLists.txt b/searchcore/src/tests/proton/persistenceengine/resource_usage_tracker/CMakeLists.txt
index 171724f2077..049a5fff6f3 100644
--- a/searchcore/src/tests/proton/persistenceengine/resource_usage_tracker/CMakeLists.txt
+++ b/searchcore/src/tests/proton/persistenceengine/resource_usage_tracker/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_resource_usage_tracker_test_app TEST
SOURCES
resource_usage_tracker_test.cpp
diff --git a/searchcore/src/tests/proton/persistenceengine/resource_usage_tracker/resource_usage_tracker_test.cpp b/searchcore/src/tests/proton/persistenceengine/resource_usage_tracker/resource_usage_tracker_test.cpp
index 4144b87c61d..313f3e9a270 100644
--- a/searchcore/src/tests/proton/persistenceengine/resource_usage_tracker/resource_usage_tracker_test.cpp
+++ b/searchcore/src/tests/proton/persistenceengine/resource_usage_tracker/resource_usage_tracker_test.cpp
@@ -1,11 +1,12 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/persistence/spi/resource_usage_listener.h>
#include <vespa/persistence/spi/resource_usage.h>
+#include <vespa/persistence/spi/resource_usage_listener.h>
#include <vespa/searchcore/proton/attribute/attribute_usage_stats.h>
#include <vespa/searchcore/proton/attribute/i_attribute_usage_listener.h>
#include <vespa/searchcore/proton/persistenceengine/resource_usage_tracker.h>
#include <vespa/searchcore/proton/test/disk_mem_usage_notifier.h>
+#include <vespa/searchlib/attribute/address_space_components.h>
#include <vespa/vespalib/gtest/gtest.h>
#include <vespa/vespalib/util/idestructorcallback.h>
#include <atomic>
@@ -131,7 +132,7 @@ struct AttributeUsageStatsBuilder
~AttributeUsageStatsBuilder();
AttributeUsageStatsBuilder& reset() { stats = AttributeUsageStats(); return *this; }
- AttributeUsageStatsBuilder& merge(const NamedAttribute& named_attribute, size_t used_enum_store, size_t used_multivalue);
+ AttributeUsageStatsBuilder& merge(const NamedAttribute& named_attribute, size_t used_address_space);
AttributeUsageStats build() { return stats; }
@@ -140,11 +141,11 @@ struct AttributeUsageStatsBuilder
AttributeUsageStatsBuilder::~AttributeUsageStatsBuilder() = default;
AttributeUsageStatsBuilder&
-AttributeUsageStatsBuilder::merge(const NamedAttribute& named_attribute, size_t used_enum_store, size_t used_multivalue)
+AttributeUsageStatsBuilder::merge(const NamedAttribute& named_attribute, size_t used_address_space)
{
- vespalib::AddressSpace enum_store_usage(used_enum_store, 0, usage_limit);
- vespalib::AddressSpace multivalue_usage(used_multivalue, 0, usage_limit);
- search::AddressSpaceUsage as_usage(enum_store_usage, multivalue_usage);
+ vespalib::AddressSpace address_space_usage(used_address_space, 0, usage_limit);
+ search::AddressSpaceUsage as_usage;
+ as_usage.set("comp", address_space_usage);
stats.merge(as_usage, named_attribute.attribute, named_attribute.subdb);
return *this;
}
@@ -153,11 +154,10 @@ double rel_usage(size_t usage) noexcept {
return (double) usage / (double) usage_limit;
}
-ResourceUsage make_resource_usage(const vespalib::string& enum_store_name, size_t used_enum_store, const vespalib::string &multivalue_name, size_t used_multivalue)
+ResourceUsage make_resource_usage(const vespalib::string& attr_name, size_t used_address_space)
{
- AttributeResourceUsage enum_store_usage(rel_usage(used_enum_store), enum_store_name);
- AttributeResourceUsage multivalue_usage(rel_usage(used_multivalue), multivalue_name);
- return ResourceUsage(0.0, 0.0, enum_store_usage, multivalue_usage);
+ AttributeResourceUsage address_space_usage(rel_usage(used_address_space), attr_name);
+ return ResourceUsage(0.0, 0.0, address_space_usage);
}
}
@@ -170,24 +170,24 @@ TEST_F(ResourceUsageTrackerTest, aggregates_attribute_usage)
auto aul2 = _tracker->make_attribute_usage_listener("doctype2");
AttributeUsageStatsBuilder b1;
AttributeUsageStatsBuilder b2;
- b1.merge(ready_a1, 10, 20).merge(ready_a2, 5, 30);
- b2.merge(ready_a1, 15, 15);
+ b1.merge(ready_a1, 10).merge(ready_a2, 5);
+ b2.merge(ready_a1, 15);
aul1->notify_attribute_usage(b1.build());
aul2->notify_attribute_usage(b2.build());
- EXPECT_EQ(make_resource_usage("doctype2.0.ready.a1", 15, "doctype1.0.ready.a2", 30), get_usage());
- b1.merge(notready_a1, 5, 31);
+ EXPECT_EQ(make_resource_usage("doctype2.0.ready.a1.comp", 15), get_usage());
+ b1.merge(notready_a1, 16);
aul1->notify_attribute_usage(b1.build());
- EXPECT_EQ(make_resource_usage("doctype2.0.ready.a1", 15, "doctype1.2.notready.a1", 31), get_usage());
- b1.reset().merge(ready_a1, 10, 20).merge(ready_a2, 5, 30);
+ EXPECT_EQ(make_resource_usage("doctype1.2.notready.a1.comp", 16), get_usage());
+ b1.reset().merge(ready_a1, 10).merge(ready_a2, 5);
aul1->notify_attribute_usage(b1.build());
- EXPECT_EQ(make_resource_usage("doctype2.0.ready.a1", 15, "doctype1.0.ready.a2", 30), get_usage());
+ EXPECT_EQ(make_resource_usage("doctype2.0.ready.a1.comp", 15), get_usage());
aul2.reset();
- EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1", 10, "doctype1.0.ready.a2", 30), get_usage());
+ EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1.comp", 10), get_usage());
aul1.reset();
- EXPECT_EQ(make_resource_usage("", 0, "", 0), get_usage());
+ EXPECT_EQ(make_resource_usage("", 0), get_usage());
aul2 = _tracker->make_attribute_usage_listener("doctype2");
aul2->notify_attribute_usage(b2.build());
- EXPECT_EQ(make_resource_usage("doctype2.0.ready.a1", 15, "doctype2.0.ready.a1", 15), get_usage());
+ EXPECT_EQ(make_resource_usage("doctype2.0.ready.a1.comp", 15), get_usage());
}
TEST_F(ResourceUsageTrackerTest, can_skip_scan_when_aggregating_attributes)
@@ -198,16 +198,16 @@ TEST_F(ResourceUsageTrackerTest, can_skip_scan_when_aggregating_attributes)
auto aul2 = _tracker->make_attribute_usage_listener("doctype2");
AttributeUsageStatsBuilder b1;
AttributeUsageStatsBuilder b2;
- b1.merge(ready_a1, 20, 20).merge(ready_a2, 5, 30);
- b2.merge(ready_a1, 15, 15);
+ b1.merge(ready_a1, 20).merge(ready_a2, 5);
+ b2.merge(ready_a1, 15);
aul1->notify_attribute_usage(b1.build());
- EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1", 20, "doctype1.0.ready.a2", 30), get_usage());
+ EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1.comp", 20), get_usage());
EXPECT_EQ(2u, get_update_count());
aul1->notify_attribute_usage(b1.build());
- EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1", 20, "doctype1.0.ready.a2", 30), get_usage());
+ EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1.comp", 20), get_usage());
EXPECT_EQ(2u, get_update_count()); // usage for doctype1 has not changed
aul2->notify_attribute_usage(b2.build());
- EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1", 20, "doctype1.0.ready.a2", 30), get_usage());
+ EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1.comp", 20), get_usage());
EXPECT_EQ(2u, get_update_count()); // usage for doctype2 is less than usage for doctype1
aul2.reset();
aul1.reset();
diff --git a/searchcore/src/tests/proton/proton/CMakeLists.txt b/searchcore/src/tests/proton/proton/CMakeLists.txt
index adece6dd711..05c9ec571fb 100644
--- a/searchcore/src/tests/proton/proton/CMakeLists.txt
+++ b/searchcore/src/tests/proton/proton/CMakeLists.txt
@@ -1 +1 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
diff --git a/searchcore/src/tests/proton/proton_config_fetcher/CMakeLists.txt b/searchcore/src/tests/proton/proton_config_fetcher/CMakeLists.txt
index 013ff186d81..88332f360ce 100644
--- a/searchcore/src/tests/proton/proton_config_fetcher/CMakeLists.txt
+++ b/searchcore/src/tests/proton/proton_config_fetcher/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_proton_config_fetcher_test_app TEST
SOURCES
proton_config_fetcher_test.cpp
diff --git a/searchcore/src/tests/proton/proton_config_fetcher/proton_config_fetcher_test.cpp b/searchcore/src/tests/proton/proton_config_fetcher/proton_config_fetcher_test.cpp
index 20a10aee678..a95c4a00f0b 100644
--- a/searchcore/src/tests/proton/proton_config_fetcher/proton_config_fetcher_test.cpp
+++ b/searchcore/src/tests/proton/proton_config_fetcher/proton_config_fetcher_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/server/bootstrapconfig.h>
#include <vespa/searchcore/proton/server/bootstrapconfigmanager.h>
diff --git a/searchcore/src/tests/proton/proton_configurer/CMakeLists.txt b/searchcore/src/tests/proton/proton_configurer/CMakeLists.txt
index 83958954c29..c7d6187e90c 100644
--- a/searchcore/src/tests/proton/proton_configurer/CMakeLists.txt
+++ b/searchcore/src/tests/proton/proton_configurer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_proton_configurer_test_app TEST
SOURCES
proton_configurer_test.cpp
diff --git a/searchcore/src/tests/proton/proton_configurer/proton_configurer_test.cpp b/searchcore/src/tests/proton/proton_configurer/proton_configurer_test.cpp
index faf09be3bbd..55b2c7194ba 100644
--- a/searchcore/src/tests/proton/proton_configurer/proton_configurer_test.cpp
+++ b/searchcore/src/tests/proton/proton_configurer/proton_configurer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <map>
#include <vespa/config-attributes.h>
diff --git a/searchcore/src/tests/proton/proton_disk_layout/CMakeLists.txt b/searchcore/src/tests/proton/proton_disk_layout/CMakeLists.txt
index f63fa21a954..1c22818630c 100644
--- a/searchcore/src/tests/proton/proton_disk_layout/CMakeLists.txt
+++ b/searchcore/src/tests/proton/proton_disk_layout/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_proton_disk_layout_test_app TEST
SOURCES
proton_disk_layout_test.cpp
diff --git a/searchcore/src/tests/proton/proton_disk_layout/proton_disk_layout_test.cpp b/searchcore/src/tests/proton/proton_disk_layout/proton_disk_layout_test.cpp
index 2df7c5d629d..17bd5991b68 100644
--- a/searchcore/src/tests/proton/proton_disk_layout/proton_disk_layout_test.cpp
+++ b/searchcore/src/tests/proton/proton_disk_layout/proton_disk_layout_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/server/proton_disk_layout.h>
#include <vespa/searchcore/proton/common/doctypename.h>
diff --git a/searchcore/src/tests/proton/reference/document_db_reference/CMakeLists.txt b/searchcore/src/tests/proton/reference/document_db_reference/CMakeLists.txt
index 5dbe031d6aa..cc7cd818dd2 100644
--- a/searchcore/src/tests/proton/reference/document_db_reference/CMakeLists.txt
+++ b/searchcore/src/tests/proton/reference/document_db_reference/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_document_db_reference_test_app TEST
SOURCES
document_db_reference_test.cpp
diff --git a/searchcore/src/tests/proton/reference/document_db_reference/document_db_reference_test.cpp b/searchcore/src/tests/proton/reference/document_db_reference/document_db_reference_test.cpp
index 9b268350b0d..aba27827d56 100644
--- a/searchcore/src/tests/proton/reference/document_db_reference/document_db_reference_test.cpp
+++ b/searchcore/src/tests/proton/reference/document_db_reference/document_db_reference_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchcore/proton/attribute/imported_attributes_repo.h>
#include <vespa/searchcore/proton/reference/document_db_reference.h>
diff --git a/searchcore/src/tests/proton/reference/document_db_reference_registry/CMakeLists.txt b/searchcore/src/tests/proton/reference/document_db_reference_registry/CMakeLists.txt
index 1bc3443c501..2ff5ea30954 100644
--- a/searchcore/src/tests/proton/reference/document_db_reference_registry/CMakeLists.txt
+++ b/searchcore/src/tests/proton/reference/document_db_reference_registry/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_document_db_reference_registry_test_app TEST
SOURCES
document_db_reference_registry_test.cpp
diff --git a/searchcore/src/tests/proton/reference/document_db_reference_registry/document_db_reference_registry_test.cpp b/searchcore/src/tests/proton/reference/document_db_reference_registry/document_db_reference_registry_test.cpp
index aa6cbd40126..21f23259e91 100644
--- a/searchcore/src/tests/proton/reference/document_db_reference_registry/document_db_reference_registry_test.cpp
+++ b/searchcore/src/tests/proton/reference/document_db_reference_registry/document_db_reference_registry_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/stllike/string.h>
#include <vespa/searchcore/proton/reference/document_db_reference_registry.h>
diff --git a/searchcore/src/tests/proton/reference/document_db_reference_resolver/CMakeLists.txt b/searchcore/src/tests/proton/reference/document_db_reference_resolver/CMakeLists.txt
index 46fe9ac0781..c5081f27db6 100644
--- a/searchcore/src/tests/proton/reference/document_db_reference_resolver/CMakeLists.txt
+++ b/searchcore/src/tests/proton/reference/document_db_reference_resolver/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_document_db_reference_resolver_test_app TEST
SOURCES
document_db_reference_resolver_test.cpp
diff --git a/searchcore/src/tests/proton/reference/document_db_reference_resolver/document_db_reference_resolver_test.cpp b/searchcore/src/tests/proton/reference/document_db_reference_resolver/document_db_reference_resolver_test.cpp
index 6e0efc9188d..a76c375bbfc 100644
--- a/searchcore/src/tests/proton/reference/document_db_reference_resolver/document_db_reference_resolver_test.cpp
+++ b/searchcore/src/tests/proton/reference/document_db_reference_resolver/document_db_reference_resolver_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/config-imported-fields.h>
diff --git a/searchcore/src/tests/proton/reference/gid_to_lid_change_handler/CMakeLists.txt b/searchcore/src/tests/proton/reference/gid_to_lid_change_handler/CMakeLists.txt
index c335d260ab5..6ac416d2ce2 100644
--- a/searchcore/src/tests/proton/reference/gid_to_lid_change_handler/CMakeLists.txt
+++ b/searchcore/src/tests/proton/reference/gid_to_lid_change_handler/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_gid_to_lid_change_handler_test_app TEST
SOURCES
gid_to_lid_change_handler_test.cpp
diff --git a/searchcore/src/tests/proton/reference/gid_to_lid_change_handler/gid_to_lid_change_handler_test.cpp b/searchcore/src/tests/proton/reference/gid_to_lid_change_handler/gid_to_lid_change_handler_test.cpp
index 10c0a21d6c1..b64e972c4cf 100644
--- a/searchcore/src/tests/proton/reference/gid_to_lid_change_handler/gid_to_lid_change_handler_test.cpp
+++ b/searchcore/src/tests/proton/reference/gid_to_lid_change_handler/gid_to_lid_change_handler_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/stllike/string.h>
#include <vespa/document/base/documentid.h>
diff --git a/searchcore/src/tests/proton/reference/gid_to_lid_change_listener/CMakeLists.txt b/searchcore/src/tests/proton/reference/gid_to_lid_change_listener/CMakeLists.txt
index afb51ea86fd..0aaf55b5fea 100644
--- a/searchcore/src/tests/proton/reference/gid_to_lid_change_listener/CMakeLists.txt
+++ b/searchcore/src/tests/proton/reference/gid_to_lid_change_listener/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_gid_to_lid_change_listener_test_app TEST
SOURCES
gid_to_lid_change_listener_test.cpp
diff --git a/searchcore/src/tests/proton/reference/gid_to_lid_change_listener/gid_to_lid_change_listener_test.cpp b/searchcore/src/tests/proton/reference/gid_to_lid_change_listener/gid_to_lid_change_listener_test.cpp
index 63c861a60d9..668be4c2c2d 100644
--- a/searchcore/src/tests/proton/reference/gid_to_lid_change_listener/gid_to_lid_change_listener_test.cpp
+++ b/searchcore/src/tests/proton/reference/gid_to_lid_change_listener/gid_to_lid_change_listener_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/stllike/string.h>
#include <vespa/document/base/documentid.h>
diff --git a/searchcore/src/tests/proton/reference/gid_to_lid_change_registrator/CMakeLists.txt b/searchcore/src/tests/proton/reference/gid_to_lid_change_registrator/CMakeLists.txt
index 90f94bd87cb..30929059cab 100644
--- a/searchcore/src/tests/proton/reference/gid_to_lid_change_registrator/CMakeLists.txt
+++ b/searchcore/src/tests/proton/reference/gid_to_lid_change_registrator/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_gid_to_lid_change_registrator_test_app TEST
SOURCES
gid_to_lid_change_registrator_test.cpp
diff --git a/searchcore/src/tests/proton/reference/gid_to_lid_change_registrator/gid_to_lid_change_registrator_test.cpp b/searchcore/src/tests/proton/reference/gid_to_lid_change_registrator/gid_to_lid_change_registrator_test.cpp
index ebbd04a4738..8cff0b1ea6c 100644
--- a/searchcore/src/tests/proton/reference/gid_to_lid_change_registrator/gid_to_lid_change_registrator_test.cpp
+++ b/searchcore/src/tests/proton/reference/gid_to_lid_change_registrator/gid_to_lid_change_registrator_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/stllike/string.h>
#include <vespa/document/base/globalid.h>
diff --git a/searchcore/src/tests/proton/reference/gid_to_lid_mapper/CMakeLists.txt b/searchcore/src/tests/proton/reference/gid_to_lid_mapper/CMakeLists.txt
index b1d5560c126..31b391044e2 100644
--- a/searchcore/src/tests/proton/reference/gid_to_lid_mapper/CMakeLists.txt
+++ b/searchcore/src/tests/proton/reference/gid_to_lid_mapper/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_gid_to_lid_mapper_test_app TEST
SOURCES
gid_to_lid_mapper_test.cpp
diff --git a/searchcore/src/tests/proton/reference/gid_to_lid_mapper/gid_to_lid_mapper_test.cpp b/searchcore/src/tests/proton/reference/gid_to_lid_mapper/gid_to_lid_mapper_test.cpp
index 7f92686cfb9..7b10bf7114c 100644
--- a/searchcore/src/tests/proton/reference/gid_to_lid_mapper/gid_to_lid_mapper_test.cpp
+++ b/searchcore/src/tests/proton/reference/gid_to_lid_mapper/gid_to_lid_mapper_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchcore/proton/bucketdb/bucket_db_owner.h>
#include <vespa/searchcore/proton/documentmetastore/documentmetastore.h>
diff --git a/searchcore/src/tests/proton/reprocessing/attribute_reprocessing_initializer/CMakeLists.txt b/searchcore/src/tests/proton/reprocessing/attribute_reprocessing_initializer/CMakeLists.txt
index 47466af6353..99b7ad3821d 100644
--- a/searchcore/src/tests/proton/reprocessing/attribute_reprocessing_initializer/CMakeLists.txt
+++ b/searchcore/src/tests/proton/reprocessing/attribute_reprocessing_initializer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_attribute_reprocessing_initializer_test_app TEST
SOURCES
attribute_reprocessing_initializer_test.cpp
diff --git a/searchcore/src/tests/proton/reprocessing/attribute_reprocessing_initializer/attribute_reprocessing_initializer_test.cpp b/searchcore/src/tests/proton/reprocessing/attribute_reprocessing_initializer/attribute_reprocessing_initializer_test.cpp
index 21bb011901e..6cd07849fab 100644
--- a/searchcore/src/tests/proton/reprocessing/attribute_reprocessing_initializer/attribute_reprocessing_initializer_test.cpp
+++ b/searchcore/src/tests/proton/reprocessing/attribute_reprocessing_initializer/attribute_reprocessing_initializer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/attribute/attribute_directory.h>
#include <vespa/searchcore/proton/attribute/attribute_populator.h>
diff --git a/searchcore/src/tests/proton/reprocessing/document_reprocessing_handler/CMakeLists.txt b/searchcore/src/tests/proton/reprocessing/document_reprocessing_handler/CMakeLists.txt
index f4f692af919..f776734757d 100644
--- a/searchcore/src/tests/proton/reprocessing/document_reprocessing_handler/CMakeLists.txt
+++ b/searchcore/src/tests/proton/reprocessing/document_reprocessing_handler/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_document_reprocessing_handler_test_app TEST
SOURCES
document_reprocessing_handler_test.cpp
diff --git a/searchcore/src/tests/proton/reprocessing/document_reprocessing_handler/document_reprocessing_handler_test.cpp b/searchcore/src/tests/proton/reprocessing/document_reprocessing_handler/document_reprocessing_handler_test.cpp
index 17f53661916..da645f9a94b 100644
--- a/searchcore/src/tests/proton/reprocessing/document_reprocessing_handler/document_reprocessing_handler_test.cpp
+++ b/searchcore/src/tests/proton/reprocessing/document_reprocessing_handler/document_reprocessing_handler_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("document_reprocessing_handler_test");
diff --git a/searchcore/src/tests/proton/reprocessing/reprocessing_runner/CMakeLists.txt b/searchcore/src/tests/proton/reprocessing/reprocessing_runner/CMakeLists.txt
index 71ba395b275..b001973ec17 100644
--- a/searchcore/src/tests/proton/reprocessing/reprocessing_runner/CMakeLists.txt
+++ b/searchcore/src/tests/proton/reprocessing/reprocessing_runner/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_reprocessing_runner_test_app TEST
SOURCES
reprocessing_runner_test.cpp
diff --git a/searchcore/src/tests/proton/reprocessing/reprocessing_runner/reprocessing_runner_test.cpp b/searchcore/src/tests/proton/reprocessing/reprocessing_runner/reprocessing_runner_test.cpp
index 242ad91271e..2a9d5d371b2 100644
--- a/searchcore/src/tests/proton/reprocessing/reprocessing_runner/reprocessing_runner_test.cpp
+++ b/searchcore/src/tests/proton/reprocessing/reprocessing_runner/reprocessing_runner_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("reprocessing_runner_test");
diff --git a/searchcore/src/tests/proton/server/CMakeLists.txt b/searchcore/src/tests/proton/server/CMakeLists.txt
index 51595daf407..fc211d460ab 100644
--- a/searchcore/src/tests/proton/server/CMakeLists.txt
+++ b/searchcore/src/tests/proton/server/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_documentretriever_test_app TEST
SOURCES
documentretriever_test.cpp
diff --git a/searchcore/src/tests/proton/server/disk_mem_usage_filter/CMakeLists.txt b/searchcore/src/tests/proton/server/disk_mem_usage_filter/CMakeLists.txt
index 7355bba52f1..0bd8ca368e0 100644
--- a/searchcore/src/tests/proton/server/disk_mem_usage_filter/CMakeLists.txt
+++ b/searchcore/src/tests/proton/server/disk_mem_usage_filter/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_disk_mem_usage_filter_test_app TEST
SOURCES
disk_mem_usage_filter_test.cpp
diff --git a/searchcore/src/tests/proton/server/disk_mem_usage_filter/disk_mem_usage_filter_test.cpp b/searchcore/src/tests/proton/server/disk_mem_usage_filter/disk_mem_usage_filter_test.cpp
index 5c8ed28cd66..4fbe7a13acb 100644
--- a/searchcore/src/tests/proton/server/disk_mem_usage_filter/disk_mem_usage_filter_test.cpp
+++ b/searchcore/src/tests/proton/server/disk_mem_usage_filter/disk_mem_usage_filter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchcore/proton/common/hw_info.h>
diff --git a/searchcore/src/tests/proton/server/disk_mem_usage_metrics/CMakeLists.txt b/searchcore/src/tests/proton/server/disk_mem_usage_metrics/CMakeLists.txt
index fbd557991c8..fdde8d831bb 100644
--- a/searchcore/src/tests/proton/server/disk_mem_usage_metrics/CMakeLists.txt
+++ b/searchcore/src/tests/proton/server/disk_mem_usage_metrics/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_disk_mem_usage_metrics_test_app TEST
SOURCES
disk_mem_usage_metrics_test.cpp
diff --git a/searchcore/src/tests/proton/server/disk_mem_usage_metrics/disk_mem_usage_metrics_test.cpp b/searchcore/src/tests/proton/server/disk_mem_usage_metrics/disk_mem_usage_metrics_test.cpp
index 569633c518b..60240e06fc4 100644
--- a/searchcore/src/tests/proton/server/disk_mem_usage_metrics/disk_mem_usage_metrics_test.cpp
+++ b/searchcore/src/tests/proton/server/disk_mem_usage_metrics/disk_mem_usage_metrics_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/server/disk_mem_usage_metrics.h>
#include <vespa/searchcore/proton/server/disk_mem_usage_state.h>
diff --git a/searchcore/src/tests/proton/server/disk_mem_usage_sampler/CMakeLists.txt b/searchcore/src/tests/proton/server/disk_mem_usage_sampler/CMakeLists.txt
index ce1e3f30ebc..02b3483153d 100644
--- a/searchcore/src/tests/proton/server/disk_mem_usage_sampler/CMakeLists.txt
+++ b/searchcore/src/tests/proton/server/disk_mem_usage_sampler/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_disk_mem_usage_sampler_test_app TEST
SOURCES
disk_mem_usage_sampler_test.cpp
diff --git a/searchcore/src/tests/proton/server/disk_mem_usage_sampler/disk_mem_usage_sampler_test.cpp b/searchcore/src/tests/proton/server/disk_mem_usage_sampler/disk_mem_usage_sampler_test.cpp
index b7f217290d6..2731f51a85e 100644
--- a/searchcore/src/tests/proton/server/disk_mem_usage_sampler/disk_mem_usage_sampler_test.cpp
+++ b/searchcore/src/tests/proton/server/disk_mem_usage_sampler/disk_mem_usage_sampler_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcore/proton/common/hw_info.h>
#include <vespa/searchcore/proton/common/i_transient_resource_usage_provider.h>
@@ -62,7 +62,13 @@ TEST_F(DiskMemUsageSamplerTest, resource_usage_is_sampled)
std::this_thread::sleep_for(50ms);
}
LOG(info, "Polled %zu times (%zu ms) to get a sample", i, i * 50);
+#ifdef __linux__
+ // Anonymous resident memory used by current process is sampled.
EXPECT_GT(filter().getMemoryStats().getAnonymousRss(), 0);
+#else
+ // Anonymous resident memory used by current process is not sampled.
+ EXPECT_EQ(filter().getMemoryStats().getAnonymousRss(), 0);
+#endif
EXPECT_GT(filter().getDiskUsedSize(), 0);
EXPECT_EQ(100, filter().get_transient_memory_usage());
EXPECT_EQ(100.0 / memory_size_bytes, filter().get_relative_transient_memory_usage());
diff --git a/searchcore/src/tests/proton/server/documentretriever_test.cpp b/searchcore/src/tests/proton/server/documentretriever_test.cpp
index 234520d040b..c0035f28fd2 100644
--- a/searchcore/src/tests/proton/server/documentretriever_test.cpp
+++ b/searchcore/src/tests/proton/server/documentretriever_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for documentretriever.
#include <vespa/document/base/documentid.h>
diff --git a/searchcore/src/tests/proton/server/feeddebugger_test.cpp b/searchcore/src/tests/proton/server/feeddebugger_test.cpp
index b5bd1cfafa8..84305bb2227 100644
--- a/searchcore/src/tests/proton/server/feeddebugger_test.cpp
+++ b/searchcore/src/tests/proton/server/feeddebugger_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for feeddebugger.
#include <vespa/log/log.h>
diff --git a/searchcore/src/tests/proton/server/feedstates_test.cpp b/searchcore/src/tests/proton/server/feedstates_test.cpp
index 47d365411c9..bb0c4eeb282 100644
--- a/searchcore/src/tests/proton/server/feedstates_test.cpp
+++ b/searchcore/src/tests/proton/server/feedstates_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for feedstates.
#include <vespa/document/base/documentid.h>
diff --git a/searchcore/src/tests/proton/server/health_adapter/CMakeLists.txt b/searchcore/src/tests/proton/server/health_adapter/CMakeLists.txt
index 238c42c39c6..b6b19f045a2 100644
--- a/searchcore/src/tests/proton/server/health_adapter/CMakeLists.txt
+++ b/searchcore/src/tests/proton/server/health_adapter/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_health_adapter_test_app TEST
SOURCES
health_adapter_test.cpp
diff --git a/searchcore/src/tests/proton/server/health_adapter/health_adapter_test.cpp b/searchcore/src/tests/proton/server/health_adapter/health_adapter_test.cpp
index 998e0761104..d68b6139835 100644
--- a/searchcore/src/tests/proton/server/health_adapter/health_adapter_test.cpp
+++ b/searchcore/src/tests/proton/server/health_adapter/health_adapter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchcore/proton/server/health_adapter.h>
#include <vespa/searchcore/proton/common/statusreport.h>
diff --git a/searchcore/src/tests/proton/server/memory_flush_config_updater/CMakeLists.txt b/searchcore/src/tests/proton/server/memory_flush_config_updater/CMakeLists.txt
index ab510353f14..644b4bfcdc7 100644
--- a/searchcore/src/tests/proton/server/memory_flush_config_updater/CMakeLists.txt
+++ b/searchcore/src/tests/proton/server/memory_flush_config_updater/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_memory_flush_config_updater_test_app TEST
SOURCES
memory_flush_config_updater_test.cpp
diff --git a/searchcore/src/tests/proton/server/memory_flush_config_updater/memory_flush_config_updater_test.cpp b/searchcore/src/tests/proton/server/memory_flush_config_updater/memory_flush_config_updater_test.cpp
index 1281f0101c0..01b46dd365f 100644
--- a/searchcore/src/tests/proton/server/memory_flush_config_updater/memory_flush_config_updater_test.cpp
+++ b/searchcore/src/tests/proton/server/memory_flush_config_updater/memory_flush_config_updater_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchcore/proton/server/memory_flush_config_updater.h>
diff --git a/searchcore/src/tests/proton/server/memoryconfigstore_test.cpp b/searchcore/src/tests/proton/server/memoryconfigstore_test.cpp
index 95d44255e84..e84ef5af3b6 100644
--- a/searchcore/src/tests/proton/server/memoryconfigstore_test.cpp
+++ b/searchcore/src/tests/proton/server/memoryconfigstore_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for memoryconfigstore.
#include <vespa/log/log.h>
diff --git a/searchcore/src/tests/proton/server/memoryflush/CMakeLists.txt b/searchcore/src/tests/proton/server/memoryflush/CMakeLists.txt
index 7e386e53a39..80c5521c763 100644
--- a/searchcore/src/tests/proton/server/memoryflush/CMakeLists.txt
+++ b/searchcore/src/tests/proton/server/memoryflush/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_memoryflush_test_app TEST
SOURCES
memoryflush_test.cpp
diff --git a/searchcore/src/tests/proton/server/memoryflush/memoryflush_test.cpp b/searchcore/src/tests/proton/server/memoryflush/memoryflush_test.cpp
index 15c549e19c9..159b8806a15 100644
--- a/searchcore/src/tests/proton/server/memoryflush/memoryflush_test.cpp
+++ b/searchcore/src/tests/proton/server/memoryflush/memoryflush_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchcore/proton/flushengine/flushcontext.h>
diff --git a/searchcore/src/tests/proton/statusreport/CMakeLists.txt b/searchcore/src/tests/proton/statusreport/CMakeLists.txt
index a2b6a9cf71a..155743b0795 100644
--- a/searchcore/src/tests/proton/statusreport/CMakeLists.txt
+++ b/searchcore/src/tests/proton/statusreport/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_statusreport_test_app TEST
SOURCES
statusreport.cpp
diff --git a/searchcore/src/tests/proton/statusreport/statusreport.cpp b/searchcore/src/tests/proton/statusreport/statusreport.cpp
index ffa3798b997..10520912b2a 100644
--- a/searchcore/src/tests/proton/statusreport/statusreport.cpp
+++ b/searchcore/src/tests/proton/statusreport/statusreport.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchcore/proton/common/statusreport.h>
diff --git a/searchcore/src/tests/proton/summaryengine/CMakeLists.txt b/searchcore/src/tests/proton/summaryengine/CMakeLists.txt
index bd6b3cb5384..a32d005decd 100644
--- a/searchcore/src/tests/proton/summaryengine/CMakeLists.txt
+++ b/searchcore/src/tests/proton/summaryengine/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_summaryengine_test_app TEST
SOURCES
summaryengine.cpp
diff --git a/searchcore/src/tests/proton/summaryengine/summaryengine.cpp b/searchcore/src/tests/proton/summaryengine/summaryengine.cpp
index ccf6cf2fbfa..33eb2c4725f 100644
--- a/searchcore/src/tests/proton/summaryengine/summaryengine.cpp
+++ b/searchcore/src/tests/proton/summaryengine/summaryengine.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchcore/proton/summaryengine/summaryengine.h>
#include <vespa/searchcore/proton/summaryengine/docsum_by_slime.h>
diff --git a/searchcore/src/tests/proton/verify_ranksetup/CMakeLists.txt b/searchcore/src/tests/proton/verify_ranksetup/CMakeLists.txt
index 2b0abafc339..a9e1b762626 100644
--- a/searchcore/src/tests/proton/verify_ranksetup/CMakeLists.txt
+++ b/searchcore/src/tests/proton/verify_ranksetup/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchcore_verify_ranksetup_test_app TEST
SOURCES
verify_ranksetup_test.cpp
diff --git a/searchcore/src/tests/proton/verify_ranksetup/verify_ranksetup_test.cpp b/searchcore/src/tests/proton/verify_ranksetup/verify_ranksetup_test.cpp
index c13440de4d5..fa1c9f9ad25 100644
--- a/searchcore/src/tests/proton/verify_ranksetup/verify_ranksetup_test.cpp
+++ b/searchcore/src/tests/proton/verify_ranksetup/verify_ranksetup_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/child_process.h>
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchcore/src/tests/proton/verify_ranksetup/verify_ranksetup_test.sh b/searchcore/src/tests/proton/verify_ranksetup/verify_ranksetup_test.sh
index 7d4f8243d39..23a2825de1c 100755
--- a/searchcore/src/tests/proton/verify_ranksetup/verify_ranksetup_test.sh
+++ b/searchcore/src/tests/proton/verify_ranksetup/verify_ranksetup_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
export PWD=$(pwd)
diff --git a/searchcore/src/vespa/searchcore/bmcluster/CMakeLists.txt b/searchcore/src/vespa/searchcore/bmcluster/CMakeLists.txt
new file mode 100644
index 00000000000..ac9ae5519f7
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/CMakeLists.txt
@@ -0,0 +1,55 @@
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_library(searchcore_bmcluster STATIC
+ SOURCES
+ bm_buckets_stats.cpp
+ bm_cluster.cpp
+ bm_cluster_controller.cpp
+ bm_cluster_params.cpp
+ bm_distribution.cpp
+ bm_document_db_stats.cpp
+ bm_feed.cpp
+ bm_feeder.cpp
+ bm_feed_params.cpp
+ bm_merge_stats.cpp
+ bm_message_bus.cpp
+ bm_message_bus_routes.cpp
+ bm_node.cpp
+ bm_node_stats.cpp
+ bm_node_stats_reporter.cpp
+ bm_storage_chain_builder.cpp
+ bm_storage_link.cpp
+ bm_storage_message_addresses.cpp
+ bucket_db_snapshot.cpp
+ bucket_db_snapshot_vector.cpp
+ bucket_info_queue.cpp
+ document_api_message_bus_bm_feed_handler.cpp
+ pending_tracker.cpp
+ pending_tracker_hash.cpp
+ spi_bm_feed_handler.cpp
+ storage_api_bm_feed_handler_base.cpp
+ storage_api_chain_bm_feed_handler.cpp
+ storage_api_message_bus_bm_feed_handler.cpp
+ storage_api_rpc_bm_feed_handler.cpp
+ storage_reply_error_checker.cpp
+ DEPENDS
+ searchcore_server
+ searchcore_initializer
+ searchcore_reprocessing
+ searchcore_index
+ searchcore_persistenceengine
+ searchcore_docsummary
+ searchcore_feedoperation
+ searchcore_matching
+ searchcore_attribute
+ searchcore_documentmetastore
+ searchcore_bucketdb
+ searchcore_flushengine
+ searchcore_pcommon
+ searchcore_grouping
+ searchcore_proton_metrics
+ searchcore_fconfig
+ storageserver_storageapp
+ messagebus_messagebus-test
+ messagebus
+ searchlib_searchlib_uca
+)
diff --git a/searchcore/src/vespa/searchcore/bmcluster/avg_sampler.h b/searchcore/src/vespa/searchcore/bmcluster/avg_sampler.h
new file mode 100644
index 00000000000..deccb2520f5
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/avg_sampler.h
@@ -0,0 +1,27 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <cstddef>
+
+namespace search::bmcluster {
+
+/*
+ * Class used to calculate average feed rate.
+ */
+class AvgSampler {
+private:
+ uint64_t _ops;
+ double _elapsed;
+
+public:
+ AvgSampler() : _ops(0), _elapsed(0.0) {}
+ void sample(uint64_t ops, double elapsed) {
+ _ops += ops;
+ _elapsed += elapsed;
+ }
+ double avg() const { return valid() ? (_ops / _elapsed) : 0.0; }
+ bool valid() const { return _elapsed != 0.0; }
+};
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_buckets_stats.cpp b/searchcore/src/vespa/searchcore/bmcluster/bm_buckets_stats.cpp
new file mode 100644
index 00000000000..f4a3a8f2461
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_buckets_stats.cpp
@@ -0,0 +1,38 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "bm_buckets_stats.h"
+
+namespace search::bmcluster {
+
+BmBucketsStats::BmBucketsStats()
+ : BmBucketsStats(0u, 0u, false)
+{
+}
+
+BmBucketsStats::BmBucketsStats(uint64_t buckets, uint64_t buckets_pending, bool valid)
+ : _buckets(buckets),
+ _buckets_pending(buckets_pending),
+ _valid(valid)
+{
+}
+
+BmBucketsStats::~BmBucketsStats() = default;
+
+BmBucketsStats&
+BmBucketsStats::operator+=(const BmBucketsStats& rhs)
+{
+ _valid &= rhs._valid;
+ _buckets += rhs._buckets;
+ _buckets_pending += rhs._buckets_pending;
+ return *this;
+}
+
+bool
+BmBucketsStats::operator==(const BmBucketsStats &rhs) const
+{
+ return ((_buckets == rhs._buckets) &&
+ (_buckets_pending == rhs._buckets_pending) &&
+ (_valid == rhs._valid));
+}
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_buckets_stats.h b/searchcore/src/vespa/searchcore/bmcluster/bm_buckets_stats.h
new file mode 100644
index 00000000000..ca018ff3b50
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_buckets_stats.h
@@ -0,0 +1,29 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <cstdint>
+
+namespace search::bmcluster {
+
+/*
+ * Class containing bucket stats
+ */
+class BmBucketsStats
+{
+ uint64_t _buckets;
+ uint64_t _buckets_pending; // Buckets with pending ideal state operations
+ bool _valid;
+
+public:
+ BmBucketsStats();
+ BmBucketsStats(uint64_t buckets, uint64_t buckets_pending, bool valid);
+ ~BmBucketsStats();
+ BmBucketsStats& operator+=(const BmBucketsStats& rhs);
+ bool operator==(const BmBucketsStats &rhs) const;
+ uint64_t get_buckets() const noexcept { return _buckets; }
+ uint64_t get_buckets_pending() const noexcept { return _buckets_pending; }
+ bool get_valid() const noexcept { return _valid; }
+};
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_cluster.cpp b/searchcore/src/vespa/searchcore/bmcluster/bm_cluster.cpp
new file mode 100644
index 00000000000..a5c4fe6851a
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_cluster.cpp
@@ -0,0 +1,456 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "bm_cluster.h"
+#include "bm_cluster_controller.h"
+#include "bm_distribution.h"
+#include "bm_feed.h"
+#include "bm_message_bus.h"
+#include "bm_node.h"
+#include "bm_node_stats.h"
+#include "bucket_db_snapshot_vector.h"
+#include "document_api_message_bus_bm_feed_handler.h"
+#include "spi_bm_feed_handler.h"
+#include "storage_api_chain_bm_feed_handler.h"
+#include "storage_api_message_bus_bm_feed_handler.h"
+#include "storage_api_rpc_bm_feed_handler.h"
+#include <vespa/config/common/configcontext.h>
+#include <vespa/document/fieldset/fieldsetrepo.h>
+#include <vespa/storage/storageserver/rpc/shared_rpc_resources.h>
+#include <vespa/messagebus/config-messagebus.h>
+#include <vespa/messagebus/testlib/slobrok.h>
+#include <vespa/slobrok/sbmirror.h>
+#include <vespa/vespalib/io/fileutil.h>
+#include <vespa/vespalib/stllike/asciistream.h>
+#include <vespa/vespalib/util/stringfmt.h>
+#include <thread>
+
+#include <vespa/log/log.h>
+LOG_SETUP(".bmcluster.bm_cluster");
+
+using cloud::config::SlobroksConfigBuilder;
+using config::ConfigSet;
+using messagebus::MessagebusConfigBuilder;
+using storage::rpc::SharedRpcResources;
+using storage::rpc::StorageApiRpcService;
+using storage::spi::PersistenceProvider;
+using vespalib::compression::CompressionConfig;
+
+namespace search::bmcluster {
+
+namespace {
+
+vespalib::string message_bus_config_id("bm-message-bus");
+vespalib::string rpc_client_config_id("bm-rpc-client");
+
+enum class PortBias
+{
+ SLOBROK_PORT = 0,
+ RPC_CLIENT_PORT = 1,
+ NUM_PORTS = 2
+};
+
+int port_number(int base_port, PortBias bias)
+{
+ return base_port + static_cast<int>(bias);
+}
+
+void
+make_slobroks_config(SlobroksConfigBuilder& slobroks, int slobrok_port)
+{
+ SlobroksConfigBuilder::Slobrok slobrok;
+ slobrok.connectionspec = vespalib::make_string("tcp/localhost:%d", slobrok_port);
+ slobroks.slobrok.push_back(std::move(slobrok));
+}
+
+std::vector<std::shared_ptr<BmStorageLinkContext>>
+collect_storage_link_contexts(const std::vector<std::unique_ptr<BmNode>> &nodes, bool distributor)
+{
+ std::vector<std::shared_ptr<BmStorageLinkContext>> contexts;
+ for (auto& node : nodes) {
+ if (node) {
+ contexts.emplace_back(node->get_storage_link_context(distributor));
+ } else {
+ contexts.emplace_back();
+ }
+ }
+ return contexts;
+}
+
+std::vector<PersistenceProvider *>
+collect_persistence_providers(const std::vector<std::unique_ptr<BmNode>> &nodes)
+{
+ std::vector<PersistenceProvider *> providers;
+ for (auto& node : nodes) {
+ if (node) {
+ providers.emplace_back(node->get_persistence_provider());
+ } else {
+ providers.emplace_back(nullptr);
+ }
+ }
+ return providers;
+}
+
+}
+
+struct BmCluster::MessageBusConfigSet {
+ vespalib::string config_id;
+ SlobroksConfigBuilder slobroks;
+ MessagebusConfigBuilder messagebus;
+
+ MessageBusConfigSet(const vespalib::string &config_id_in, int slobrok_port)
+ : config_id(config_id_in),
+ slobroks(),
+ messagebus()
+ {
+ make_slobroks_config(slobroks, slobrok_port);
+ }
+ ~MessageBusConfigSet();
+
+ void add_builders(ConfigSet &set) {
+ set.addBuilder(config_id, &slobroks);
+ set.addBuilder(config_id, &messagebus);
+ }
+};
+
+BmCluster::MessageBusConfigSet::~MessageBusConfigSet() = default;
+
+struct BmCluster::RpcClientConfigSet {
+ vespalib::string config_id;
+ SlobroksConfigBuilder slobroks;
+
+ RpcClientConfigSet(const vespalib::string &config_id_in, int slobrok_port)
+ : config_id(config_id_in),
+ slobroks()
+ {
+ make_slobroks_config(slobroks, slobrok_port);
+ }
+ ~RpcClientConfigSet();
+
+ void add_builders(ConfigSet &set) {
+ set.addBuilder(config_id, &slobroks);
+ }
+};
+
+BmCluster::RpcClientConfigSet::~RpcClientConfigSet() = default;
+
+BmCluster::BmCluster(const vespalib::string& base_dir, int base_port, const BmClusterParams& params, std::shared_ptr<DocumenttypesConfig> document_types, std::shared_ptr<const document::DocumentTypeRepo> repo)
+ : _params(params),
+ _slobrok_port(port_number(base_port, PortBias::SLOBROK_PORT)),
+ _rpc_client_port(port_number(base_port, PortBias::RPC_CLIENT_PORT)),
+ _message_bus_config(std::make_unique<MessageBusConfigSet>(message_bus_config_id, _slobrok_port)),
+ _rpc_client_config(std::make_unique<RpcClientConfigSet>(rpc_client_config_id, _slobrok_port)),
+ _config_set(std::make_unique<config::ConfigSet>()),
+ _config_context(std::make_shared<config::ConfigContext>(*_config_set)),
+ _slobrok(),
+ _message_bus(),
+ _rpc_client(),
+ _base_dir(base_dir),
+ _base_port(base_port),
+ _document_types(std::move(document_types)),
+ _repo(std::move(repo)),
+ _field_set_repo(std::make_unique<const document::FieldSetRepo>(*_repo)),
+ _real_distribution(std::make_shared<BmDistribution>(params.get_groups(), params.get_nodes_per_group(), params.get_redundancy())),
+ _distribution(_real_distribution),
+ _nodes(params.get_num_nodes()),
+ _cluster_controller(std::make_shared<BmClusterController>(*this, *_distribution)),
+ _feed_handler()
+{
+ _message_bus_config->add_builders(*_config_set);
+ _rpc_client_config->add_builders(*_config_set);
+ vespalib::mkdir(_base_dir, false);
+}
+
+BmCluster::~BmCluster()
+{
+ _nodes.clear();
+ stop_message_bus();
+ stop_rpc_client();
+ stop_slobrok();
+}
+
+
+void
+BmCluster::start_slobrok()
+{
+ if (!_slobrok) {
+ LOG(info, "start slobrok");
+ _slobrok = std::make_unique<mbus::Slobrok>(_slobrok_port);
+ }
+}
+
+void
+BmCluster::stop_slobrok()
+{
+ if (_slobrok) {
+ LOG(info, "stop slobrok");
+ _slobrok.reset();
+ }
+}
+
+void
+BmCluster::wait_slobrok(const vespalib::string &name)
+{
+ auto &mirror = _rpc_client->slobrok_mirror();
+ LOG(info, "Waiting for %s in slobrok", name.c_str());
+ for (;;) {
+ auto specs = mirror.lookup(name);
+ if (!specs.empty()) {
+ LOG(info, "Found %s in slobrok", name.c_str());
+ return;
+ }
+ std::this_thread::sleep_for(100ms);
+ }
+}
+
+void
+BmCluster::start_message_bus()
+{
+ if (!_message_bus) {
+ LOG(info, "Starting message bus");
+ config::ConfigUri config_uri(message_bus_config_id, _config_context);
+ _message_bus = std::make_unique<BmMessageBus>(config_uri, _repo);
+ LOG(info, "Started message bus");
+ }
+}
+
+void
+BmCluster::stop_message_bus()
+{
+ if (_message_bus) {
+ LOG(info, "stop message bus");
+ _message_bus.reset();
+ }
+}
+
+void
+BmCluster::start_rpc_client()
+{
+ if (!_rpc_client) {
+ LOG(info, "start rpc client");
+ config::ConfigUri client_config_uri(rpc_client_config_id, _config_context);
+ _rpc_client = std::make_unique<SharedRpcResources>
+ (client_config_uri, _rpc_client_port, 100, _params.get_rpc_events_before_wakeup());
+ _rpc_client->start_server_and_register_slobrok(rpc_client_config_id);
+ }
+}
+
+void
+BmCluster::stop_rpc_client()
+{
+ if (_rpc_client) {
+ LOG(info, "stop rpc client");
+ _rpc_client->shutdown();
+ _rpc_client.reset();
+ }
+}
+
+void
+BmCluster::make_node(uint32_t node_idx)
+{
+ assert(node_idx < _nodes.size());
+ assert(!_nodes[node_idx]);
+ vespalib::asciistream s;
+ s << _base_dir << "/n" << node_idx;
+ vespalib::string node_base_dir(s.str());
+ int node_base_port = port_number(_base_port, PortBias::NUM_PORTS) + BmNode::num_ports() * node_idx;
+ _nodes[node_idx] = BmNode::create(node_base_dir, node_base_port, node_idx, *this, _params, _document_types, _slobrok_port);
+}
+
+void
+BmCluster::make_nodes()
+{
+ for (uint32_t node_idx = 0; node_idx < _nodes.size(); ++node_idx) {
+ make_node(node_idx);
+ }
+}
+
+void
+BmCluster::initialize_providers()
+{
+ LOG(info, "start initialize");
+ for (const auto &node : _nodes) {
+ if (node) {
+ node->initialize_persistence_provider();
+ }
+ }
+}
+
+void
+BmCluster::create_buckets(BmFeed& feed)
+{
+ LOG(info, "create %u buckets", feed.num_buckets());
+ for (unsigned int i = 0; i < feed.num_buckets(); ++i) {
+ auto bucket = feed.make_bucket(i);
+ uint32_t node_idx = _distribution->get_service_layer_node_idx(bucket);
+ if (node_idx < _nodes.size()) {
+ auto& node = _nodes[node_idx];
+ if (node) {
+ node->create_bucket(feed.make_bucket(i));
+ }
+ }
+ }
+}
+
+void
+BmCluster::start_service_layers()
+{
+ start_slobrok();
+ for (const auto &node : _nodes) {
+ if (node) {
+ node->start_service_layer(_params);
+ }
+ }
+ for (const auto &node : _nodes) {
+ if (node) {
+ node->wait_service_layer();
+ }
+ }
+ start_rpc_client();
+ for (const auto &node : _nodes) {
+ if (node) {
+ node->wait_service_layer_slobrok();
+ }
+ }
+ _cluster_controller->propagate_cluster_state(false);
+}
+
+void
+BmCluster::start_distributors()
+{
+ for (const auto &node : _nodes) {
+ if (node) {
+ node->start_distributor(_params);
+ }
+ }
+ for (const auto &node : _nodes) {
+ if (node) {
+ node->wait_distributor_slobrok();
+ }
+ }
+ _cluster_controller->propagate_cluster_state(true);
+ // Wait for bucket ownership transfer safe time
+ std::this_thread::sleep_for(2s);
+}
+
+void
+BmCluster::create_feed_handler()
+{
+ StorageApiRpcService::Params rpc_params;
+ // This is the same compression config as the default in stor-communicationmanager.def.
+ rpc_params.compression_config = CompressionConfig(CompressionConfig::Type::LZ4, 3, 90, 1024);
+ rpc_params.num_rpc_targets_per_node = _params.get_rpc_targets_per_node();
+ if (_params.get_use_document_api()) {
+ _feed_handler = std::make_unique<DocumentApiMessageBusBmFeedHandler>(get_message_bus(), *_distribution);
+ } else if (_params.get_enable_distributor()) {
+ if (_params.get_use_storage_chain()) {
+ auto contexts = collect_storage_link_contexts(_nodes, true);
+ _feed_handler = std::make_unique<StorageApiChainBmFeedHandler>(std::move(contexts), *_distribution, true);
+ } else if (_params.get_use_message_bus()) {
+ _feed_handler = std::make_unique<StorageApiMessageBusBmFeedHandler>(get_message_bus(), *_distribution, true);
+ } else {
+ _feed_handler = std::make_unique<StorageApiRpcBmFeedHandler>(get_rpc_client(), _repo, rpc_params, *_distribution, true);
+ }
+ } else if (_params.needs_service_layer()) {
+ if (_params.get_use_storage_chain()) {
+ auto contexts = collect_storage_link_contexts(_nodes, false);
+ _feed_handler = std::make_unique<StorageApiChainBmFeedHandler>(std::move(contexts), *_distribution, false);
+ } else if (_params.get_use_message_bus()) {
+ _feed_handler = std::make_unique<StorageApiMessageBusBmFeedHandler>(get_message_bus(), *_distribution, false);
+ } else {
+ _feed_handler = std::make_unique<StorageApiRpcBmFeedHandler>(get_rpc_client(), _repo, rpc_params, *_distribution, false);
+ }
+ } else {
+ auto providers = collect_persistence_providers(_nodes);
+ _feed_handler = std::make_unique<SpiBmFeedHandler>(std::move(providers), *_field_set_repo, *_distribution, _params.get_skip_get_spi_bucket_info());
+ }
+}
+
+void
+BmCluster::shutdown_feed_handler()
+{
+ _feed_handler.reset();
+}
+
+void
+BmCluster::shutdown_distributors()
+{
+ for (const auto &node : _nodes) {
+ if (node) {
+ node->shutdown_distributor();
+ }
+ }
+}
+
+void
+BmCluster::shutdown_service_layers()
+{
+ stop_rpc_client();
+ for (const auto &node : _nodes) {
+ if (node) {
+ node->shutdown_service_layer();
+ }
+ }
+ stop_slobrok();
+}
+
+void
+BmCluster::start(BmFeed& feed)
+{
+ initialize_providers();
+ if (!_params.needs_distributor()) {
+ create_buckets(feed);
+ }
+ if (_params.needs_service_layer()) {
+ start_service_layers();
+ }
+ if (_params.needs_distributor()) {
+ start_distributors();
+ }
+ if (_params.needs_message_bus()) {
+ start_message_bus();
+ }
+ create_feed_handler();
+}
+
+void
+BmCluster::stop()
+{
+ shutdown_feed_handler();
+ stop_message_bus();
+ shutdown_distributors();
+ shutdown_service_layers();
+}
+
+IBmFeedHandler*
+BmCluster::get_feed_handler()
+{
+ return _feed_handler.get();
+}
+
+std::vector<BmNodeStats>
+BmCluster::get_node_stats()
+{
+ std::vector<BmNodeStats> node_stats(_nodes.size());
+ storage::lib::ClusterState baseline_state(*_distribution->get_cluster_state_bundle().getBaselineClusterState());
+ for (const auto &node : _nodes) {
+ if (node) {
+ node->merge_node_stats(node_stats, baseline_state);
+ }
+ }
+ return node_stats;
+}
+
+void
+BmCluster::propagate_cluster_state()
+{
+ _cluster_controller->propagate_cluster_state();
+}
+
+BucketDbSnapshotVector
+BmCluster::get_bucket_db_snapshots()
+{
+ auto providers = collect_persistence_providers(_nodes);
+ return BucketDbSnapshotVector(providers, _distribution->get_cluster_state_bundle());
+}
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_cluster.h b/searchcore/src/vespa/searchcore/bmcluster/bm_cluster.h
new file mode 100644
index 00000000000..9fd1743321e
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_cluster.h
@@ -0,0 +1,101 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "bm_cluster_params.h"
+#include <memory>
+#include <vector>
+
+namespace config {
+
+class IConfigContext;
+class ConfigSet;
+
+}
+
+namespace document {
+
+class DocumentTypeRepo;
+class FieldSetRepo;
+
+}
+namespace document::internal { class InternalDocumenttypesType; }
+namespace mbus { class Slobrok; }
+namespace storage::rpc { class SharedRpcResources; }
+
+namespace search::bmcluster {
+
+class BmClusterController;
+class BmDistribution;
+class BmFeed;
+class BmMessageBus;
+class BmNode;
+class BmNodeStats;
+class BucketDbSnapshotVector;
+class IBmDistribution;
+class IBmFeedHandler;
+
+/*
+ * Class representing a benchmark cluster with one or more benchmark nodes.
+ */
+class BmCluster {
+ struct MessageBusConfigSet;
+ struct RpcClientConfigSet;
+ using DocumenttypesConfig = const document::internal::InternalDocumenttypesType;
+ BmClusterParams _params;
+ int _slobrok_port;
+ int _rpc_client_port;
+ std::unique_ptr<MessageBusConfigSet> _message_bus_config;
+ std::unique_ptr<RpcClientConfigSet> _rpc_client_config;
+ std::unique_ptr<config::ConfigSet> _config_set;
+ std::shared_ptr<config::IConfigContext> _config_context;
+ std::unique_ptr<mbus::Slobrok> _slobrok;
+ std::unique_ptr<BmMessageBus> _message_bus;
+ std::unique_ptr<storage::rpc::SharedRpcResources> _rpc_client;
+ vespalib::string _base_dir;
+ int _base_port;
+ std::shared_ptr<DocumenttypesConfig> _document_types;
+ std::shared_ptr<const document::DocumentTypeRepo> _repo;
+ std::unique_ptr<const document::FieldSetRepo> _field_set_repo;
+ std::shared_ptr<BmDistribution> _real_distribution;
+ std::shared_ptr<const IBmDistribution> _distribution;
+ std::vector<std::unique_ptr<BmNode>> _nodes;
+ std::shared_ptr<BmClusterController> _cluster_controller;
+ std::unique_ptr<IBmFeedHandler> _feed_handler;
+
+public:
+ BmCluster(const vespalib::string& base_dir, int base_port, const BmClusterParams& params, std::shared_ptr<DocumenttypesConfig> document_types, std::shared_ptr<const document::DocumentTypeRepo> repo);
+ ~BmCluster();
+ void start_slobrok();
+ void stop_slobrok();
+ void wait_slobrok(const vespalib::string &name);
+ void start_message_bus();
+ void stop_message_bus();
+ void start_rpc_client();
+ void stop_rpc_client();
+ void start_service_layers();
+ void start_distributors();
+ void create_feed_handler();
+ void shutdown_feed_handler();
+ void shutdown_distributors();
+ void shutdown_service_layers();
+ void create_buckets(BmFeed &feed);
+ void initialize_providers();
+ void start(BmFeed &feed);
+ void stop();
+ const storage::rpc::SharedRpcResources &get_rpc_client() const { return *_rpc_client; }
+ storage::rpc::SharedRpcResources &get_rpc_client() { return *_rpc_client; }
+ BmMessageBus& get_message_bus() { return *_message_bus; }
+ const IBmDistribution& get_distribution() { return *_distribution; }
+ void make_node(uint32_t node_idx);
+ void make_nodes();
+ IBmFeedHandler* get_feed_handler();
+ uint32_t get_num_nodes() const { return _nodes.size(); }
+ BmNode *get_node(uint32_t node_idx) const { return node_idx < _nodes.size() ? _nodes[node_idx].get() : nullptr; }
+ std::vector<BmNodeStats> get_node_stats();
+ BmDistribution& get_real_distribution() { return *_real_distribution; }
+ void propagate_cluster_state();
+ BucketDbSnapshotVector get_bucket_db_snapshots();
+};
+
+}
diff --git a/searchcore/src/apps/vespa-feed-bm/bm_cluster_controller.cpp b/searchcore/src/vespa/searchcore/bmcluster/bm_cluster_controller.cpp
index a1b40c56e11..606188f72c2 100644
--- a/searchcore/src/apps/vespa-feed-bm/bm_cluster_controller.cpp
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_cluster_controller.cpp
@@ -1,6 +1,9 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bm_cluster_controller.h"
+#include "bm_cluster.h"
+#include "bm_node.h"
+#include "i_bm_distribution.h"
#include <vespa/storage/storageserver/rpc/caching_rpc_target_resolver.h>
#include <vespa/storage/storageserver/rpc/shared_rpc_resources.h>
#include <vespa/storage/storageserver/rpc/slime_cluster_state_bundle_codec.h>
@@ -13,14 +16,14 @@ using storage::api::StorageMessageAddress;
using storage::rpc::SharedRpcResources;
using storage::lib::NodeType;
-namespace feedbm {
+namespace search::bmcluster {
namespace {
FRT_RPCRequest *
-make_set_cluster_state_request()
+make_set_cluster_state_request(const IBmDistribution& distribution)
{
- storage::lib::ClusterStateBundle bundle(storage::lib::ClusterState("version:2 distributor:1 storage:1"));
+ storage::lib::ClusterStateBundle bundle(distribution.get_cluster_state_bundle());
storage::rpc::SlimeClusterStateBundleCodec codec;
auto encoded_bundle = codec.encode(bundle);
auto *req = new FRT_RPCRequest();
@@ -34,19 +37,21 @@ make_set_cluster_state_request()
}
-BmClusterController::BmClusterController(SharedRpcResources& shared_rpc_resources_in)
- : _shared_rpc_resources(shared_rpc_resources_in)
+BmClusterController::BmClusterController(BmCluster& cluster, const IBmDistribution &distribution)
+ : _cluster(cluster),
+ _distribution(distribution)
{
}
void
-BmClusterController::set_cluster_up(bool distributor)
+BmClusterController::propagate_cluster_state(uint32_t node_idx, bool distributor)
{
static vespalib::string _storage("storage");
- StorageMessageAddress storage_address(&_storage, distributor ? NodeType::DISTRIBUTOR : NodeType::STORAGE, 0);
- auto req = make_set_cluster_state_request();
- auto target_resolver = std::make_unique<storage::rpc::CachingRpcTargetResolver>(_shared_rpc_resources.slobrok_mirror(),
- _shared_rpc_resources.target_factory(), 1);
+ StorageMessageAddress storage_address(&_storage, distributor ? NodeType::DISTRIBUTOR : NodeType::STORAGE, node_idx);
+ auto req = make_set_cluster_state_request(_distribution);
+ auto& shared_rpc_resources = _cluster.get_rpc_client();
+ auto target_resolver = std::make_unique<storage::rpc::CachingRpcTargetResolver>(shared_rpc_resources.slobrok_mirror(),
+ shared_rpc_resources.target_factory(), 1);
uint64_t fake_bucket_id = 0;
auto target = target_resolver->resolve_rpc_target(storage_address, fake_bucket_id);
target->get()->InvokeSync(req, 10.0); // 10 seconds timeout
@@ -54,4 +59,23 @@ BmClusterController::set_cluster_up(bool distributor)
req->SubRef();
}
+void
+BmClusterController::propagate_cluster_state(bool distributor)
+{
+ uint32_t num_nodes = _cluster.get_num_nodes();
+ for (uint32_t node_idx = 0; node_idx < num_nodes; ++node_idx) {
+ auto node = _cluster.get_node(node_idx);
+ if (node && node->has_storage_layer(distributor)) {
+ propagate_cluster_state(node_idx, distributor);
+ }
+ }
+}
+
+void
+BmClusterController::propagate_cluster_state()
+{
+ propagate_cluster_state(false);
+ propagate_cluster_state(true);
+}
+
}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_cluster_controller.h b/searchcore/src/vespa/searchcore/bmcluster/bm_cluster_controller.h
new file mode 100644
index 00000000000..caa469181fd
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_cluster_controller.h
@@ -0,0 +1,26 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <cstdint>
+
+namespace search::bmcluster {
+
+class BmCluster;
+class IBmDistribution;
+
+/*
+ * Fake cluster controller that sets cluster state to be up.
+ */
+class BmClusterController
+{
+ const BmCluster& _cluster;
+ const IBmDistribution& _distribution;
+public:
+ BmClusterController(BmCluster& cluster, const IBmDistribution& distribution);
+ void propagate_cluster_state(uint32_t node_idx, bool distributor);
+ void propagate_cluster_state(bool distributor);
+ void propagate_cluster_state();
+};
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_cluster_params.cpp b/searchcore/src/vespa/searchcore/bmcluster/bm_cluster_params.cpp
new file mode 100644
index 00000000000..3ff10b19164
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_cluster_params.cpp
@@ -0,0 +1,84 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "bm_cluster_params.h"
+#include <iostream>
+
+namespace search::bmcluster {
+
+BmClusterParams::BmClusterParams()
+ : _bucket_db_stripe_bits(4),
+ _disable_queue_limits_for_chained_merges(false), // Same default as in stor-server.def
+ _distributor_merge_busy_wait(10), // Same default as stor_distributormanager.def
+ _distributor_stripes(0),
+ _doc_store_chunk_compression_level(9), // Same default as in proton.def
+ _doc_store_chunk_maxbytes(65536), // Same default as in proton.def
+ _enable_distributor(false),
+ _enable_service_layer(false),
+ _groups(0),
+ _indexing_sequencer(),
+ _max_merges_per_node(16), // Same default as in stor-server.def
+ _max_merge_queue_size(1024), // Same default as in stor-server.def
+ _max_pending_idealstate_operations(100), // Same default as in stor-distributormanager.def
+ _mbus_distributor_node_max_pending_count(),
+ _num_nodes(1),
+ _nodes_per_group(1),
+ _redundancy(1),
+ _response_threads(2), // Same default as in stor-filestor.def
+ _rpc_events_before_wakeup(1), // Same default as in stor-communicationmanager.def
+ _rpc_network_threads(1), // Same default as previous in stor-communicationmanager.def
+ _rpc_targets_per_node(1), // Same default as in stor-communicationmanager.def
+ _skip_communicationmanager_thread(false), // Same default as in stor-communicationmanager.def
+ _skip_get_spi_bucket_info(false),
+ _use_async_message_handling_on_schedule(false),
+ _use_document_api(false),
+ _use_message_bus(false),
+ _use_storage_chain(false)
+{
+ recalc_nodes();
+}
+
+BmClusterParams::~BmClusterParams() = default;
+
+bool
+BmClusterParams::check() const
+{
+ if (_response_threads < 1) {
+ std::cerr << "Too few response threads: " << _response_threads << std::endl;
+ return false;
+ }
+ if (_rpc_network_threads < 1) {
+ std::cerr << "Too few rpc network threads: " << _rpc_network_threads << std::endl;
+ return false;
+ }
+ if (_rpc_targets_per_node < 1) {
+ std::cerr << "Too few rpc targets per node: " << _rpc_targets_per_node << std::endl;
+ return false;
+ }
+ if (_nodes_per_group < _redundancy) {
+ std::cerr << "Too high redundancy " << _redundancy << " with " << _nodes_per_group << " nodes per group" << std::endl;
+ return false;
+ }
+ return true;
+}
+
+void
+BmClusterParams::recalc_nodes()
+{
+ _num_nodes = std::max(1u, _groups) * _nodes_per_group;
+}
+
+void
+BmClusterParams::set_groups(uint32_t value)
+{
+ _groups = value;
+ recalc_nodes();
+}
+
+void
+BmClusterParams::set_nodes_per_group(uint32_t value)
+{
+ _nodes_per_group = value;
+ recalc_nodes();
+}
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_cluster_params.h b/searchcore/src/vespa/searchcore/bmcluster/bm_cluster_params.h
new file mode 100644
index 00000000000..d365a28b0b6
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_cluster_params.h
@@ -0,0 +1,105 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <cstdint>
+#include <vespa/vespalib/stllike/string.h>
+#include <optional>
+
+namespace search::bmcluster {
+
+/*
+ * Parameters for setting up a benchmark cluster.
+ */
+class BmClusterParams
+{
+ uint32_t _bucket_db_stripe_bits;
+ bool _disable_queue_limits_for_chained_merges;
+ uint32_t _distributor_merge_busy_wait;
+ uint32_t _distributor_stripes;
+ uint32_t _doc_store_chunk_compression_level;
+ uint32_t _doc_store_chunk_maxbytes;
+ bool _enable_distributor;
+ bool _enable_service_layer;
+ uint32_t _groups;
+ vespalib::string _indexing_sequencer;
+ uint32_t _max_merges_per_node;
+ uint32_t _max_merge_queue_size;
+ uint32_t _max_pending_idealstate_operations;
+ std::optional<uint32_t> _mbus_distributor_node_max_pending_count;
+ uint32_t _num_nodes;
+ uint32_t _nodes_per_group;
+ uint32_t _redundancy;
+ uint32_t _response_threads;
+ uint32_t _rpc_events_before_wakeup;
+ uint32_t _rpc_network_threads;
+ uint32_t _rpc_targets_per_node;
+ bool _skip_communicationmanager_thread;
+ bool _skip_get_spi_bucket_info;
+ bool _use_async_message_handling_on_schedule;
+ bool _use_document_api;
+ bool _use_message_bus;
+ bool _use_storage_chain;
+ void recalc_nodes();
+public:
+ BmClusterParams();
+ ~BmClusterParams();
+ uint32_t get_bucket_db_stripe_bits() const { return _bucket_db_stripe_bits; }
+ bool get_disable_queue_limits_for_chained_merges() const noexcept { return _disable_queue_limits_for_chained_merges; }
+ uint32_t get_distributor_merge_busy_wait() const { return _distributor_merge_busy_wait; }
+ uint32_t get_distributor_stripes() const { return _distributor_stripes; }
+ uint32_t get_doc_store_chunk_compression_level() const noexcept { return _doc_store_chunk_compression_level; }
+ uint32_t get_doc_store_chunk_maxbytes() const noexcept { return _doc_store_chunk_maxbytes; }
+ bool get_enable_distributor() const { return _enable_distributor; }
+ uint32_t get_groups() const noexcept { return _groups; }
+ const vespalib::string & get_indexing_sequencer() const { return _indexing_sequencer; }
+ uint32_t get_max_merges_per_node() const noexcept { return _max_merges_per_node; }
+ uint32_t get_max_merge_queue_size() const noexcept { return _max_merge_queue_size; }
+ uint32_t get_max_pending_idealstate_operations() const noexcept { return _max_pending_idealstate_operations; }
+ const std::optional<uint32_t>& get_mbus_distributor_node_max_pending_count() const noexcept { return _mbus_distributor_node_max_pending_count; }
+ uint32_t get_nodes_per_group() const noexcept { return _nodes_per_group; }
+ uint32_t get_num_nodes() const { return _num_nodes; }
+ uint32_t get_redundancy() const { return _redundancy; }
+ uint32_t get_response_threads() const { return _response_threads; }
+ uint32_t get_rpc_events_before_wakeup() const { return _rpc_events_before_wakeup; }
+ uint32_t get_rpc_network_threads() const { return _rpc_network_threads; }
+ uint32_t get_rpc_targets_per_node() const { return _rpc_targets_per_node; }
+ bool get_skip_communicationmanager_thread() const { return _skip_communicationmanager_thread; }
+ bool get_skip_get_spi_bucket_info() const { return _skip_get_spi_bucket_info; }
+ bool get_use_async_message_handling_on_schedule() const { return _use_async_message_handling_on_schedule; }
+ bool get_use_document_api() const { return _use_document_api; }
+ bool get_use_message_bus() const { return _use_message_bus; }
+ bool get_use_storage_chain() const { return _use_storage_chain; }
+ bool needs_distributor() const { return _enable_distributor || _use_document_api; }
+ bool needs_message_bus() const { return _use_message_bus || _use_document_api; }
+ bool needs_service_layer() const { return _enable_service_layer || _enable_distributor || _use_storage_chain || _use_message_bus || _use_document_api; }
+ void set_bucket_db_stripe_bits(uint32_t value) { _bucket_db_stripe_bits = value; }
+ void set_disable_queue_limits_for_chained_merges(bool value) { _disable_queue_limits_for_chained_merges = value; }
+ void set_distributor_merge_busy_wait(uint32_t value) { _distributor_merge_busy_wait = value; }
+ void set_distributor_stripes(uint32_t value) { _distributor_stripes = value; }
+ void set_doc_store_chunk_compression_level(uint32_t value) { _doc_store_chunk_compression_level = value; }
+ void set_doc_store_chunk_maxbytes(uint32_t value) { _doc_store_chunk_maxbytes = value; }
+ void set_enable_distributor(bool value) { _enable_distributor = value; }
+ void set_enable_service_layer(bool value) { _enable_service_layer = value; }
+ void set_groups(uint32_t value);
+ void set_indexing_sequencer(vespalib::stringref sequencer) { _indexing_sequencer = sequencer; }
+ void set_max_merges_per_node(uint32_t value) { _max_merges_per_node = value; }
+ void set_max_merge_queue_size(uint32_t value) { _max_merge_queue_size = value; }
+ void set_max_pending_idealstate_operations(uint32_t value) { _max_pending_idealstate_operations = value; }
+ void set_mbus_distributor_node_max_pending_count(int32_t value) { _mbus_distributor_node_max_pending_count = value; }
+ void set_nodes_per_group(uint32_t value);
+ void set_redundancy(uint32_t value) { _redundancy = value; }
+ void set_response_threads(uint32_t threads_in) { _response_threads = threads_in; }
+ void set_rpc_events_before_wakeup(uint32_t value) { _rpc_events_before_wakeup = value; }
+ void set_rpc_network_threads(uint32_t threads_in) { _rpc_network_threads = threads_in; }
+ void set_rpc_targets_per_node(uint32_t targets_in) { _rpc_targets_per_node = targets_in; }
+ void set_skip_communicationmanager_thread(bool value) { _skip_communicationmanager_thread = value; }
+ void set_skip_get_spi_bucket_info(bool value) { _skip_get_spi_bucket_info = value; }
+ void set_use_async_message_handling_on_schedule(bool value) { _use_async_message_handling_on_schedule = value; }
+ void set_use_document_api(bool value) { _use_document_api = value; }
+ void set_use_message_bus(bool value) { _use_message_bus = value; }
+ void set_use_storage_chain(bool value) { _use_storage_chain = value; }
+ bool check() const;
+};
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_distribution.cpp b/searchcore/src/vespa/searchcore/bmcluster/bm_distribution.cpp
new file mode 100644
index 00000000000..f2a4bf49c50
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_distribution.cpp
@@ -0,0 +1,164 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "bm_distribution.h"
+#include <vespa/document/bucket/bucket.h>
+#include <vespa/vespalib/stllike/asciistream.h>
+#include <cassert>
+
+using storage::lib::ClusterState;
+using storage::lib::ClusterStateBundle;
+using storage::lib::Node;
+using storage::lib::NodeState;
+using storage::lib::NodeType;
+using storage::lib::State;
+
+namespace search::bmcluster {
+
+using DistributionConfigBuilder = BmDistribution::DistributionConfigBuilder;
+
+namespace {
+
+void
+add_nodes_to_group(DistributionConfigBuilder::Group &group, uint32_t first_node_idx, uint32_t nodes_per_group)
+{
+ for (uint32_t i = 0; i < nodes_per_group; ++i) {
+ DistributionConfigBuilder::Group::Nodes node;
+ node.index = first_node_idx + i;
+ group.nodes.push_back(std::move(node));
+ }
+}
+
+BmDistribution::DistributionConfig
+make_distribution_config(uint32_t nodes_per_group, uint32_t groups, uint32_t redundancy)
+{
+ DistributionConfigBuilder dc;
+ {
+ {
+ DistributionConfigBuilder::Group group;
+ group.index = "invalid";
+ group.name = "invalid";
+ group.capacity = 1.0;
+ if (groups == 0u) {
+ add_nodes_to_group(group, 0, nodes_per_group);
+ group.partitions = "";
+ dc.redundancy = redundancy;
+ dc.readyCopies = redundancy;
+ } else {
+ vespalib::asciistream partitions;
+ for (uint32_t group_idx = 0; group_idx < groups; ++group_idx) {
+ if (group_idx + 1< groups) {
+ partitions << redundancy << '|';
+ } else {
+ partitions << '*';
+ }
+ }
+ group.partitions = partitions.str();
+ dc.redundancy = redundancy * groups;
+ dc.readyCopies = redundancy * groups;
+ }
+ dc.group.push_back(std::move(group));
+ }
+ uint32_t node_idx = 0;
+ for (uint32_t group_idx = 0; group_idx < groups; ++group_idx) {
+ DistributionConfigBuilder::Group group;
+ group.index = std::to_string(group_idx);
+ group.name = "group_" + group.index;
+ group.capacity = 1.0;
+ group.partitions = "";
+ add_nodes_to_group(group, node_idx, nodes_per_group);
+ node_idx += nodes_per_group;
+ dc.group.push_back(std::move(group));
+ }
+ }
+ return dc;
+}
+
+ClusterState
+make_cluster_state(uint32_t num_nodes)
+{
+ vespalib::asciistream s;
+ s << "version:2 distributor:" << num_nodes << " storage:" << num_nodes;
+ return storage::lib::ClusterState(s.str());
+}
+
+}
+
+BmDistribution::BmDistribution(uint32_t groups, uint32_t nodes_per_group, uint32_t redundancy)
+ : _num_nodes(std::max(1u, groups) * nodes_per_group),
+ _distribution_config(make_distribution_config(nodes_per_group, groups, redundancy)),
+ _distribution(_distribution_config),
+ _pending_cluster_state(make_cluster_state(_num_nodes)),
+ _cluster_state_bundle(_pending_cluster_state),
+ _has_pending_cluster_state(false)
+{
+}
+
+BmDistribution::~BmDistribution()
+{
+}
+
+uint32_t
+BmDistribution::get_num_nodes() const
+{
+ return _num_nodes;
+
+}
+
+uint32_t
+BmDistribution::get_service_layer_node_idx(const document::Bucket& bucket) const
+{
+ auto cluster_state = _cluster_state_bundle.getDerivedClusterState(bucket.getBucketSpace());
+ auto nodes = _distribution.getIdealStorageNodes(*cluster_state, bucket.getBucketId());
+ assert(!nodes.empty());
+ return nodes[0];
+}
+
+uint32_t
+BmDistribution::get_distributor_node_idx(const document::Bucket& bucket) const
+{
+ auto cluster_state = _cluster_state_bundle.getDerivedClusterState(bucket.getBucketSpace());
+ return _distribution.getIdealDistributorNode(*cluster_state, bucket.getBucketId());
+}
+
+BmDistribution::DistributionConfig
+BmDistribution::get_distribution_config() const
+{
+ return _distribution_config;
+}
+
+ClusterStateBundle
+BmDistribution::get_cluster_state_bundle() const
+{
+ return _cluster_state_bundle;
+}
+
+void
+BmDistribution::set_node_state(uint32_t node_idx, bool distributor, const State& state)
+{
+ const NodeType& node_type = distributor ? NodeType::DISTRIBUTOR : NodeType::STORAGE;
+ Node node(node_type, node_idx);
+ NodeState node_state(node_type, state);
+ _pending_cluster_state.setNodeState(node, node_state);
+ if (!_has_pending_cluster_state) {
+ _pending_cluster_state.setVersion(_pending_cluster_state.getVersion() + 1);
+ _has_pending_cluster_state = true;
+ }
+}
+
+void
+BmDistribution::set_node_state(uint32_t node_idx, const State& state)
+{
+ set_node_state(node_idx, false, state);
+ set_node_state(node_idx, true, state);
+}
+
+void
+BmDistribution::commit_cluster_state_change()
+{
+ if (_has_pending_cluster_state) {
+ _cluster_state_bundle = ClusterStateBundle(_pending_cluster_state);
+ _has_pending_cluster_state = false;
+ }
+}
+
+};
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_distribution.h b/searchcore/src/vespa/searchcore/bmcluster/bm_distribution.h
new file mode 100644
index 00000000000..9963843eea9
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_distribution.h
@@ -0,0 +1,38 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "i_bm_distribution.h"
+#include <vespa/config-stor-distribution.h>
+#include <vespa/vdslib/distribution/distribution.h>
+#include <vespa/vdslib/state/clusterstate.h>
+#include <vespa/vdslib/state/cluster_state_bundle.h>
+
+namespace search::bmcluster {
+
+/*
+ * Class for describing cluster toplogy and how messages are
+ * routed from feeders into the cluster.
+ */
+class BmDistribution : public IBmDistribution
+{
+ uint32_t _num_nodes;
+ DistributionConfigBuilder _distribution_config;
+ storage::lib::Distribution _distribution;
+ storage::lib::ClusterState _pending_cluster_state;
+ storage::lib::ClusterStateBundle _cluster_state_bundle;
+ bool _has_pending_cluster_state;
+public:
+ BmDistribution(uint32_t groups, uint32_t nodes_per_group, uint32_t redundancy);
+ ~BmDistribution() override;
+ uint32_t get_num_nodes() const override;
+ uint32_t get_service_layer_node_idx(const document::Bucket & bucket) const override;
+ uint32_t get_distributor_node_idx(const document::Bucket & bucket) const override;
+ DistributionConfig get_distribution_config() const override;
+ storage::lib::ClusterStateBundle get_cluster_state_bundle() const override;
+ void set_node_state(uint32_t node_idx, bool distributor, const storage::lib::State& state);
+ void set_node_state(uint32_t node_idx, const storage::lib::State& state);
+ void commit_cluster_state_change();
+};
+
+};
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_document_db_stats.cpp b/searchcore/src/vespa/searchcore/bmcluster/bm_document_db_stats.cpp
new file mode 100644
index 00000000000..93624353026
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_document_db_stats.cpp
@@ -0,0 +1,42 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "bm_document_db_stats.h"
+
+namespace search::bmcluster {
+
+BmDocumentDbStats::BmDocumentDbStats()
+ : BmDocumentDbStats(0u, 0u, 0u, 0u)
+{
+}
+
+BmDocumentDbStats::BmDocumentDbStats(uint64_t active_docs, uint64_t stored_docs, uint64_t total_docs, uint64_t removed_docs)
+ : _active_docs(active_docs),
+ _stored_docs(stored_docs),
+ _total_docs(total_docs),
+ _removed_docs(removed_docs)
+{
+}
+
+
+BmDocumentDbStats::~BmDocumentDbStats() = default;
+
+BmDocumentDbStats&
+BmDocumentDbStats::operator+=(const BmDocumentDbStats& rhs)
+{
+ _active_docs += rhs._active_docs;
+ _stored_docs += rhs._stored_docs;
+ _total_docs += rhs._total_docs;
+ _removed_docs += rhs._removed_docs;
+ return *this;
+}
+
+bool
+BmDocumentDbStats::operator==(const BmDocumentDbStats &rhs) const
+{
+ return ((_active_docs == rhs._active_docs) &&
+ (_stored_docs == rhs._stored_docs) &&
+ (_total_docs == rhs._total_docs) &&
+ (_removed_docs == rhs._removed_docs));
+}
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_document_db_stats.h b/searchcore/src/vespa/searchcore/bmcluster/bm_document_db_stats.h
new file mode 100644
index 00000000000..33559fcc26f
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_document_db_stats.h
@@ -0,0 +1,32 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <cstdint>
+
+namespace search::bmcluster {
+
+/*
+ * Class containing stats for a document db
+ */
+class BmDocumentDbStats
+{
+ uint64_t _active_docs;
+ uint64_t _stored_docs;
+ uint64_t _total_docs;
+ uint64_t _removed_docs;
+
+public:
+ BmDocumentDbStats();
+ BmDocumentDbStats(uint64_t active_docs, uint64_t stored_docs, uint64_t total_docs, uint64_t removed_docs);
+ ~BmDocumentDbStats();
+ BmDocumentDbStats& operator+=(const BmDocumentDbStats& rhs);
+ bool operator==(const BmDocumentDbStats &rhs) const;
+ uint64_t get_active_docs() const noexcept { return _active_docs; }
+ uint64_t get_stored_docs() const noexcept { return _stored_docs; }
+ uint64_t get_total_docs() const noexcept { return _total_docs; }
+ uint64_t get_removed_docs() const noexcept { return _removed_docs; }
+};
+
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_feed.cpp b/searchcore/src/vespa/searchcore/bmcluster/bm_feed.cpp
new file mode 100644
index 00000000000..49d1bb1c0a8
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_feed.cpp
@@ -0,0 +1,164 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "bm_feed.h"
+#include "avg_sampler.h"
+#include "bm_feed_operation.h"
+#include "bm_feed_params.h"
+#include "bm_range.h"
+#include "bucket_selector.h"
+#include "pending_tracker.h"
+#include "i_bm_feed_handler.h"
+#include <vespa/document/base/documentid.h>
+#include <vespa/document/bucket/bucketid.h>
+#include <vespa/document/datatype/documenttype.h>
+#include <vespa/document/fieldset/fieldsets.h>
+#include <vespa/document/fieldvalue/document.h>
+#include <vespa/document/fieldvalue/intfieldvalue.h>
+#include <vespa/document/repo/documenttyperepo.h>
+#include <vespa/document/test/make_bucket_space.h>
+#include <vespa/document/update/assignvalueupdate.h>
+#include <vespa/document/update/documentupdate.h>
+#include <vespa/vespalib/util/lambdatask.h>
+#include <vespa/vespalib/util/stringfmt.h>
+#include <vespa/vespalib/util/threadstackexecutor.h>
+#include <cassert>
+#include <chrono>
+
+#include <vespa/log/log.h>
+LOG_SETUP(".bmcluster.bm_feed");
+
+using document::AssignValueUpdate;
+using document::Document;
+using document::DocumentId;
+using document::DocumentType;
+using document::DocumentTypeRepo;
+using document::DocumentUpdate;
+using document::IntFieldValue;
+using document::FieldUpdate;
+using vespalib::makeLambdaTask;
+
+namespace search::bmcluster {
+
+BmFeed::BmFeed(std::shared_ptr<const DocumentTypeRepo> repo)
+ : _repo(std::move(repo)),
+ _document_type(_repo->getDocumentType("test")),
+ _field(_document_type->getField("int")),
+ _bucket_bits(16),
+ _bucket_space(document::test::makeBucketSpace("test"))
+{
+}
+
+BmFeed::~BmFeed()
+{
+}
+
+DocumentId
+BmFeed::make_document_id(uint32_t n, uint32_t i) const
+{
+ DocumentId id(vespalib::make_string("id::test:n=%u:%u", n & (num_buckets() - 1), i));
+ return id;
+}
+
+std::unique_ptr<Document>
+BmFeed::make_document(uint32_t n, uint32_t i) const
+{
+ auto id = make_document_id(n, i);
+ auto document = std::make_unique<Document>(*_document_type, id);
+ document->setRepo(*_repo);
+ document->setFieldValue(_field, std::make_unique<IntFieldValue>(i));
+ return document;
+}
+
+std::unique_ptr<DocumentUpdate>
+BmFeed::make_document_update(uint32_t n, uint32_t i) const
+{
+ auto id = make_document_id(n, i);
+ auto document_update = std::make_unique<DocumentUpdate>(*_repo, *_document_type, id);
+ document_update->addUpdate(FieldUpdate(_field).addUpdate(AssignValueUpdate(IntFieldValue(15))));
+ return document_update;
+}
+
+vespalib::nbostream
+BmFeed::make_put_feed(BmRange range, BucketSelector bucket_selector)
+{
+ vespalib::nbostream serialized_feed;
+ LOG(debug, "make_put_feed([%u..%u))", range.get_start(), range.get_end());
+ for (unsigned int i = range.get_start(); i < range.get_end(); ++i) {
+ auto n = bucket_selector(i);
+ serialized_feed << static_cast<uint8_t>(BmFeedOperation::PUT_OPERATION);
+ serialized_feed << make_bucket_id(n);
+ auto document = make_document(n, i);
+ document->serialize(serialized_feed);
+ }
+ return serialized_feed;
+}
+
+vespalib::nbostream
+BmFeed::make_update_feed(BmRange range, BucketSelector bucket_selector)
+{
+ vespalib::nbostream serialized_feed;
+ LOG(debug, "make_update_feed([%u..%u))", range.get_start(), range.get_end());
+ for (unsigned int i = range.get_start(); i < range.get_end(); ++i) {
+ auto n = bucket_selector(i);
+ serialized_feed << static_cast<uint8_t>(BmFeedOperation::UPDATE_OPERATION);
+ serialized_feed << make_bucket_id(n);
+ auto document_update = make_document_update(n, i);
+ document_update->serializeHEAD(serialized_feed);
+ }
+ return serialized_feed;
+}
+
+vespalib::nbostream
+BmFeed::make_get_or_remove_feed(BmRange range, BucketSelector bucket_selector, bool make_removes)
+{
+ vespalib::nbostream serialized_feed;
+ BmFeedOperation operation(make_removes ? BmFeedOperation::REMOVE_OPERATION : BmFeedOperation::GET_OPERATION);
+ if (make_removes) {
+ LOG(debug, "make_remove_feed([%u..%u))", range.get_start(), range.get_end());
+ } else {
+ LOG(debug, "make_get_feed([%u..%u))", range.get_start(), range.get_end());
+ }
+ for (unsigned int i = range.get_start(); i < range.get_end(); ++i) {
+ auto n = bucket_selector(i);
+ serialized_feed << static_cast<uint8_t>(operation);
+ serialized_feed << make_bucket_id(n);
+ auto document_id = make_document_id(n, i);
+ vespalib::string raw_id = document_id.toString();
+ serialized_feed.write(raw_id.c_str(), raw_id.size() + 1);
+ }
+ return serialized_feed;
+}
+
+vespalib::nbostream
+BmFeed::make_get_feed(BmRange range, BucketSelector bucket_selector)
+{
+ return make_get_or_remove_feed(range, bucket_selector, false);
+}
+
+vespalib::nbostream
+BmFeed::make_remove_feed(BmRange range, BucketSelector bucket_selector)
+{
+ return make_get_or_remove_feed(range, bucket_selector, true);
+}
+
+std::vector<vespalib::nbostream>
+BmFeed::make_feed(vespalib::ThreadStackExecutor& executor, const BmFeedParams& params, std::function<vespalib::nbostream(BmRange,BucketSelector)> func, uint32_t num_buckets, const vespalib::string &label)
+{
+ LOG(info, "make_feed %s %u small documents", label.c_str(), params.get_documents());
+ std::vector<vespalib::nbostream> serialized_feed_v;
+ auto start_time = std::chrono::steady_clock::now();
+ serialized_feed_v.resize(params.get_client_threads());
+ for (uint32_t i = 0; i < params.get_client_threads(); ++i) {
+ auto range = params.get_range(i);
+ BucketSelector bucket_selector(i, params.get_client_threads(), num_buckets);
+ executor.execute(makeLambdaTask([&serialized_feed_v, i, range, &func, bucket_selector]()
+ { serialized_feed_v[i] = func(range, bucket_selector); }));
+ }
+ executor.sync();
+ auto end_time = std::chrono::steady_clock::now();
+ std::chrono::duration<double> elapsed = end_time - start_time;
+ LOG(info, "%8.2f %s data elements/s", params.get_documents() / elapsed.count(), label.c_str());
+ return serialized_feed_v;
+}
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_feed.h b/searchcore/src/vespa/searchcore/bmcluster/bm_feed.h
new file mode 100644
index 00000000000..083eedff3bf
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_feed.h
@@ -0,0 +1,60 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/document/base/documentid.h>
+#include <vespa/document/bucket/bucketspace.h>
+#include <vespa/document/bucket/bucket.h>
+
+namespace document {
+
+class Document;
+class DocumentType;
+class DocumentTypeRepo;
+class DocumentUpdate;
+class Field;
+
+}
+
+namespace vespalib {
+
+class ThreadStackExecutor;
+class nbostream;
+
+}
+
+namespace search::bmcluster {
+
+class BmFeedParams;
+class BmRange;
+class BucketSelector;
+
+/*
+ * Class to generate synthetic feed of documents.
+ */
+class BmFeed {
+ std::shared_ptr<const document::DocumentTypeRepo> _repo;
+ const document::DocumentType* _document_type;
+ const document::Field& _field;
+ uint32_t _bucket_bits;
+ document::BucketSpace _bucket_space;
+ vespalib::nbostream make_get_or_remove_feed(BmRange range, BucketSelector bucket_selector, bool make_removes);
+public:
+
+ BmFeed(std::shared_ptr<const document::DocumentTypeRepo> document_types);
+ ~BmFeed();
+ uint32_t num_buckets() const { return (1u << _bucket_bits); }
+ document::BucketSpace get_bucket_space() const noexcept { return _bucket_space; }
+ document::BucketId make_bucket_id(uint32_t n) const { return document::BucketId(_bucket_bits, n & (num_buckets() - 1)); }
+ document::Bucket make_bucket(uint32_t n) const { return document::Bucket(_bucket_space, make_bucket_id(n)); }
+ document::DocumentId make_document_id(uint32_t n, uint32_t i) const;
+ std::unique_ptr<document::Document> make_document(uint32_t n, uint32_t i) const;
+ std::unique_ptr<document::DocumentUpdate> make_document_update(uint32_t n, uint32_t i) const;
+ vespalib::nbostream make_put_feed(BmRange range, BucketSelector bucket_selector);
+ vespalib::nbostream make_update_feed(BmRange range, BucketSelector bucket_selector);
+ vespalib::nbostream make_get_feed(BmRange range, BucketSelector bucket_selector);
+ vespalib::nbostream make_remove_feed(BmRange range, BucketSelector bucket_selector);
+ std::vector<vespalib::nbostream> make_feed(vespalib::ThreadStackExecutor& executor, const BmFeedParams& bm_params, std::function<vespalib::nbostream(BmRange,BucketSelector)> func, uint32_t num_buckets, const vespalib::string& label);
+};
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_feed_operation.h b/searchcore/src/vespa/searchcore/bmcluster/bm_feed_operation.h
new file mode 100644
index 00000000000..925619525b3
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_feed_operation.h
@@ -0,0 +1,15 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+namespace search::bmcluster {
+
+enum class BmFeedOperation
+{
+ PUT_OPERATION,
+ UPDATE_OPERATION,
+ GET_OPERATION,
+ REMOVE_OPERATION
+};
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_feed_params.cpp b/searchcore/src/vespa/searchcore/bmcluster/bm_feed_params.cpp
new file mode 100644
index 00000000000..e3d178e250c
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_feed_params.cpp
@@ -0,0 +1,42 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "bm_feed_params.h"
+#include "bm_range.h"
+#include <iostream>
+
+namespace search::bmcluster {
+
+BmFeedParams::BmFeedParams()
+ : _client_threads(1),
+ _documents(160000),
+ _max_pending(1000)
+{
+}
+
+BmFeedParams::~BmFeedParams() = default;
+
+BmRange
+BmFeedParams::get_range(uint32_t thread_id) const
+{
+ return BmRange(get_start(thread_id), get_start(thread_id + 1));
+}
+
+bool
+BmFeedParams::check() const
+{
+ if (_client_threads < 1) {
+ std::cerr << "Too few client threads: " << _client_threads << std::endl;
+ return false;
+ }
+ if (_client_threads > 1024) {
+ std::cerr << "Too many client threads: " << _client_threads << std::endl;
+ return false;
+ }
+ if (_documents < _client_threads) {
+ std::cerr << "Too few documents: " << _documents << std::endl;
+ return false;
+ }
+ return true;
+}
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_feed_params.h b/searchcore/src/vespa/searchcore/bmcluster/bm_feed_params.h
new file mode 100644
index 00000000000..bc992422982
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_feed_params.h
@@ -0,0 +1,37 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <cstdint>
+#include <vespa/vespalib/stllike/string.h>
+
+namespace search::bmcluster {
+
+class BmRange;
+
+/*
+ * Parameters for generating synthetic feed of documents and for
+ * feeding them to the cluster.
+ */
+class BmFeedParams
+{
+ uint32_t _client_threads;
+ uint32_t _documents;
+ uint32_t _max_pending;
+ uint32_t get_start(uint32_t thread_id) const {
+ return (_documents / _client_threads) * thread_id + std::min(thread_id, _documents % _client_threads);
+ }
+public:
+ BmFeedParams();
+ ~BmFeedParams();
+ uint32_t get_client_threads() const { return _client_threads; }
+ uint32_t get_documents() const { return _documents; }
+ uint32_t get_max_pending() const { return _max_pending; }
+ BmRange get_range(uint32_t thread_id) const;
+ void set_documents(uint32_t documents_in) { _documents = documents_in; }
+ void set_client_threads(uint32_t threads_in) { _client_threads = threads_in; }
+ void set_max_pending(uint32_t max_pending_in) { _max_pending = max_pending_in; }
+ bool check() const;
+};
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_feeder.cpp b/searchcore/src/vespa/searchcore/bmcluster/bm_feeder.cpp
new file mode 100644
index 00000000000..0e659e45136
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_feeder.cpp
@@ -0,0 +1,151 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "bm_feeder.h"
+#include "avg_sampler.h"
+#include "bm_feed_operation.h"
+#include "bm_feed_params.h"
+#include "bm_range.h"
+#include "bucket_selector.h"
+#include "pending_tracker.h"
+#include "i_bm_feed_handler.h"
+#include <vespa/document/base/documentid.h>
+#include <vespa/document/bucket/bucket.h>
+#include <vespa/document/fieldset/fieldsets.h>
+#include <vespa/document/fieldvalue/document.h>
+#include <vespa/document/repo/documenttyperepo.h>
+#include <vespa/document/test/make_bucket_space.h>
+#include <vespa/document/update/documentupdate.h>
+#include <vespa/vespalib/util/lambdatask.h>
+#include <vespa/vespalib/util/threadstackexecutor.h>
+#include <cassert>
+#include <chrono>
+
+#include <vespa/log/log.h>
+LOG_SETUP(".bmcluster.bm_feeder");
+
+using document::Document;
+using document::DocumentId;
+using document::DocumentTypeRepo;
+using document::DocumentUpdate;
+using vespalib::makeLambdaTask;
+
+namespace search::bmcluster {
+
+BmFeeder::BmFeeder(std::shared_ptr<const DocumentTypeRepo> repo, IBmFeedHandler& feed_handler, vespalib::ThreadStackExecutor& executor)
+ : _repo(std::move(repo)),
+ _bucket_space(document::test::makeBucketSpace("test")),
+ _feed_handler(feed_handler),
+ _executor(executor),
+ _all_fields(document::AllFields::NAME),
+ _use_timestamp(!_feed_handler.manages_timestamp()),
+ _stop(false)
+{
+}
+
+BmFeeder::~BmFeeder() = default;
+
+void
+BmFeeder::feed_operation(uint32_t op_idx, vespalib::nbostream &serialized_feed, int64_t time_bias, PendingTracker& tracker)
+{
+ document::BucketId bucket_id;
+ BmFeedOperation feed_op;
+ uint8_t feed_op_as_uint8_t;
+ serialized_feed >> feed_op_as_uint8_t;
+ feed_op = static_cast<BmFeedOperation>(feed_op_as_uint8_t);
+ switch (feed_op) {
+ case BmFeedOperation::PUT_OPERATION:
+ {
+ serialized_feed >> bucket_id;
+ document::Bucket bucket(_bucket_space, bucket_id);
+ auto document = std::make_unique<Document>(*_repo, serialized_feed);
+ _feed_handler.put(bucket, std::move(document), (_use_timestamp ? (time_bias + op_idx) : 0), tracker);
+ }
+ break;
+ case BmFeedOperation::UPDATE_OPERATION:
+ {
+ serialized_feed >> bucket_id;
+ document::Bucket bucket(_bucket_space, bucket_id);
+ auto document_update = DocumentUpdate::createHEAD(*_repo, serialized_feed);
+ _feed_handler.update(bucket, std::move(document_update), (_use_timestamp ? (time_bias + op_idx) : 0), tracker);
+ }
+ break;
+ case BmFeedOperation::GET_OPERATION:
+ {
+ serialized_feed >> bucket_id;
+ document::Bucket bucket(_bucket_space, bucket_id);
+ DocumentId document_id(serialized_feed);
+ _feed_handler.get(bucket, _all_fields, document_id, tracker);
+ }
+ break;
+ case BmFeedOperation::REMOVE_OPERATION:
+ {
+ serialized_feed >> bucket_id;
+ document::Bucket bucket(_bucket_space, bucket_id);
+ DocumentId document_id(serialized_feed);
+ _feed_handler.remove(bucket, document_id, (_use_timestamp ? (time_bias + op_idx) : 0), tracker);
+ }
+ break;
+ default:
+ LOG(error, "Bad feed operation: %u", static_cast<unsigned int>(feed_op));
+ std::_Exit(1);
+ }
+}
+
+
+uint32_t
+BmFeeder::feed_task(uint32_t max_pending, BmRange range, const vespalib::nbostream &serialized_feed, int64_t time_bias)
+{
+
+ LOG(debug, "feed_task([%u..%u))", range.get_start(), range.get_end());
+ PendingTracker pending_tracker(max_pending);
+ _feed_handler.attach_bucket_info_queue(pending_tracker);
+ vespalib::nbostream is(serialized_feed.data(), serialized_feed.size());
+ uint32_t op_count = 0;
+ for (uint32_t i = range.get_start(); i < range.get_end() && !_stop.load(std::memory_order_relaxed); ++i) {
+ feed_operation(i, is, time_bias, pending_tracker);
+ ++op_count;
+ }
+ assert(is.empty() || _stop.load(std::memory_order_relaxed));
+ pending_tracker.drain();
+ return op_count;
+}
+
+void
+BmFeeder::run_feed_tasks(int pass, int64_t& time_bias, const std::vector<vespalib::nbostream>& serialized_feed_v, const BmFeedParams& params, AvgSampler& sampler, const vespalib::string &op_name)
+{
+ uint32_t old_errors = _feed_handler.get_error_count();
+ auto start_time = std::chrono::steady_clock::now();
+ std::atomic<uint32_t> atomic_op_count(0u);
+ for (uint32_t i = 0; i < params.get_client_threads(); ++i) {
+ auto range = params.get_range(i);
+ _executor.execute(makeLambdaTask([this, max_pending = params.get_max_pending(), &serialized_feed = serialized_feed_v[i], range, time_bias, &atomic_op_count]()
+ { atomic_op_count += feed_task(max_pending, range, serialized_feed, time_bias); }));
+ }
+ _executor.sync();
+ uint32_t op_count = atomic_op_count.load(std::memory_order_relaxed);
+ auto end_time = std::chrono::steady_clock::now();
+ std::chrono::duration<double> elapsed = end_time - start_time;
+ uint32_t new_errors = _feed_handler.get_error_count() - old_errors;
+ double throughput = op_count / elapsed.count();
+ sampler.sample(op_count, elapsed.count());
+ LOG(info, "%sAsync: pass=%u, errors=%u, ops=%u of %u, %ss/s: %8.2f", op_name.c_str(), pass, new_errors, op_count, params.get_documents(), op_name.c_str(), throughput);
+ time_bias += params.get_documents();
+}
+
+void
+BmFeeder::stop()
+{
+ _stop.store(true, std::memory_order_release);
+}
+
+void
+BmFeeder::run_feed_tasks_loop(int64_t& time_bias, const std::vector<vespalib::nbostream>& serialized_feed_v, const BmFeedParams& params, const vespalib::string &op_name)
+{
+ AvgSampler sampler;
+ for (int pass = 0; !_stop.load(std::memory_order_relaxed); ++pass) {
+ run_feed_tasks(pass, time_bias, serialized_feed_v, params, sampler, op_name);
+ }
+ LOG(info, "%sAsync: AVG %s/s: %8.2f", op_name.c_str(), op_name.c_str(), sampler.avg());
+}
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_feeder.h b/searchcore/src/vespa/searchcore/bmcluster/bm_feeder.h
new file mode 100644
index 00000000000..c8236e7222b
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_feeder.h
@@ -0,0 +1,52 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/document/bucket/bucketspace.h>
+#include <memory>
+#include <atomic>
+
+namespace document {
+
+class DocumentTypeRepo;
+
+}
+
+namespace vespalib {
+
+class ThreadStackExecutor;
+class nbostream;
+
+}
+
+namespace search::bmcluster {
+
+class AvgSampler;
+class BmFeedParams;
+class BmRange;
+class IBmFeedHandler;
+class PendingTracker;
+
+/*
+ * Class to feed serialized feed operations to a feed handler.
+ */
+class BmFeeder {
+ std::shared_ptr<const document::DocumentTypeRepo> _repo;
+ document::BucketSpace _bucket_space;
+ IBmFeedHandler& _feed_handler;
+ vespalib::ThreadStackExecutor& _executor;
+ vespalib::string _all_fields;
+ bool _use_timestamp;
+ std::atomic<bool> _stop;
+public:
+ BmFeeder(std::shared_ptr<const document::DocumentTypeRepo> repo, IBmFeedHandler& feed_handler, vespalib::ThreadStackExecutor& executor);
+ ~BmFeeder();
+ void feed_operation(uint32_t op_idx, vespalib::nbostream &serialized_feed, int64_t time_bias, PendingTracker& tracker);
+ uint32_t feed_task(uint32_t max_pending, BmRange range, const vespalib::nbostream &serialized_feed, int64_t time_bias);
+ void run_feed_tasks(int pass, int64_t& time_bias, const std::vector<vespalib::nbostream>& serialized_feed_v, const BmFeedParams& params, AvgSampler& sampler, const vespalib::string& op_name);
+ IBmFeedHandler& get_feed_handler() const { return _feed_handler; }
+ void stop();
+ void run_feed_tasks_loop(int64_t& time_bias, const std::vector<vespalib::nbostream>& serialized_feed_v, const BmFeedParams& params, const vespalib::string &op_name);
+};
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_merge_stats.cpp b/searchcore/src/vespa/searchcore/bmcluster/bm_merge_stats.cpp
new file mode 100644
index 00000000000..fc8431f31a1
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_merge_stats.cpp
@@ -0,0 +1,36 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "bm_merge_stats.h"
+
+namespace search::bmcluster {
+
+BmMergeStats::BmMergeStats()
+ : BmMergeStats(0u, 0u)
+{
+}
+
+BmMergeStats::BmMergeStats(uint32_t active, uint32_t queued)
+ : _active(active),
+ _queued(queued)
+{
+}
+
+
+BmMergeStats::~BmMergeStats() = default;
+
+BmMergeStats&
+BmMergeStats::operator+=(const BmMergeStats& rhs)
+{
+ _active += rhs._active;
+ _queued += rhs._queued;
+ return *this;
+}
+
+bool
+BmMergeStats::operator==(const BmMergeStats &rhs) const
+{
+ return ((_active == rhs._active) &&
+ (_queued == rhs._queued));
+}
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_merge_stats.h b/searchcore/src/vespa/searchcore/bmcluster/bm_merge_stats.h
new file mode 100644
index 00000000000..cb26630fe7e
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_merge_stats.h
@@ -0,0 +1,27 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <cstdint>
+
+namespace search::bmcluster {
+
+/*
+ * Class containing merge (throttler) stats for a service layer node.
+ */
+class BmMergeStats
+{
+ uint32_t _active;
+ uint32_t _queued;
+
+public:
+ BmMergeStats();
+ BmMergeStats(uint32_t active, uint32_t queued);
+ ~BmMergeStats();
+ BmMergeStats& operator+=(const BmMergeStats& rhs);
+ bool operator==(const BmMergeStats &rhs) const;
+ uint32_t get_active() const noexcept { return _active; }
+ uint32_t get_queued() const noexcept { return _queued; }
+};
+
+}
diff --git a/searchcore/src/apps/vespa-feed-bm/bm_message_bus.cpp b/searchcore/src/vespa/searchcore/bmcluster/bm_message_bus.cpp
index b608593dada..ff4fed44d22 100644
--- a/searchcore/src/apps/vespa-feed-bm/bm_message_bus.cpp
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_message_bus.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bm_message_bus.h"
#include "pending_tracker_hash.h"
@@ -24,7 +24,7 @@ using mbus::SourceSession;
using storage::mbusprot::StorageProtocol;
using storage::mbusprot::StorageReply;
-namespace feedbm {
+namespace search::bmcluster {
namespace {
@@ -111,7 +111,9 @@ BmMessageBus::ReplyHandler::handleReply(std::unique_ptr<Reply> reply)
}
if (failed) {
++_errors;
- LOG(error, "Unexpected %s", reply_as_string(*reply).c_str());
+ if (_errors <= 10) {
+ LOG(error, "Unexpected %s", reply_as_string(*reply).c_str());
+ }
}
tracker->release();
} else {
diff --git a/searchcore/src/apps/vespa-feed-bm/bm_message_bus.h b/searchcore/src/vespa/searchcore/bmcluster/bm_message_bus.h
index a9cff1fb826..35f65544b63 100644
--- a/searchcore/src/apps/vespa-feed-bm/bm_message_bus.h
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_message_bus.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -16,12 +16,12 @@ class SourceSession;
}
-namespace feedbm {
+namespace search::bmcluster {
class PendingTracker;
/*
- * Message bus for feed benchmark program.
+ * Message bus for benchmark cluster.
*/
class BmMessageBus
{
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_message_bus_routes.cpp b/searchcore/src/vespa/searchcore/bmcluster/bm_message_bus_routes.cpp
new file mode 100644
index 00000000000..95131118368
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_message_bus_routes.cpp
@@ -0,0 +1,19 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "bm_message_bus_routes.h"
+#include <vespa/storageapi/messageapi/storagemessage.h>
+
+namespace search::bmcluster {
+
+BmMessageBusRoutes::BmMessageBusRoutes(uint32_t num_nodes, bool distributor)
+ : BmStorageMessageAddresses(num_nodes, distributor),
+ _routes(num_nodes)
+{
+ for (uint32_t node_idx = 0; node_idx < num_nodes; ++node_idx) {
+ _routes[node_idx] = get_address(node_idx).to_mbus_route();
+ }
+}
+
+BmMessageBusRoutes::~BmMessageBusRoutes() = default;
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_message_bus_routes.h b/searchcore/src/vespa/searchcore/bmcluster/bm_message_bus_routes.h
new file mode 100644
index 00000000000..b79905096df
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_message_bus_routes.h
@@ -0,0 +1,24 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "bm_storage_message_addresses.h"
+#include <vespa/messagebus/routing/route.h>
+
+namespace search::bmcluster {
+
+/*
+ * Class containing the message bus routes for a set of nodes at
+ * the given layer (service layer or distributor).
+ */
+class BmMessageBusRoutes : public BmStorageMessageAddresses
+{
+ std::vector<mbus::Route> _routes;
+public:
+ BmMessageBusRoutes(uint32_t num_nodes, bool distributor);
+ ~BmMessageBusRoutes();
+ const mbus::Route& get_route(uint32_t node_idx) const { return _routes[node_idx]; }
+ bool has_route(uint32_t node_idx) const { return node_idx < _routes.size(); }
+};
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_node.cpp b/searchcore/src/vespa/searchcore/bmcluster/bm_node.cpp
new file mode 100644
index 00000000000..545fb08c762
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_node.cpp
@@ -0,0 +1,802 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "bm_node.h"
+#include "bm_cluster.h"
+#include "bm_cluster_params.h"
+#include "bm_message_bus.h"
+#include "bm_node_stats.h"
+#include "bm_storage_chain_builder.h"
+#include "bm_storage_link_context.h"
+#include "storage_api_chain_bm_feed_handler.h"
+#include "storage_api_message_bus_bm_feed_handler.h"
+#include "storage_api_rpc_bm_feed_handler.h"
+#include "document_api_message_bus_bm_feed_handler.h"
+#include "i_bm_distribution.h"
+#include "i_bm_feed_handler.h"
+#include "spi_bm_feed_handler.h"
+#include <vespa/config-attributes.h>
+#include <vespa/config-bucketspaces.h>
+#include <vespa/config-imported-fields.h>
+#include <vespa/config-indexschema.h>
+#include <vespa/config-persistence.h>
+#include <vespa/config-rank-profiles.h>
+#include <vespa/config-slobroks.h>
+#include <vespa/config-stor-distribution.h>
+#include <vespa/config-stor-filestor.h>
+#include <vespa/config-summary.h>
+#include <vespa/config-summarymap.h>
+#include <vespa/config-upgrading.h>
+#include <vespa/config/common/configcontext.h>
+#include <vespa/document/bucket/bucketspace.h>
+#include <vespa/document/repo/configbuilder.h>
+#include <vespa/document/repo/document_type_repo_factory.h>
+#include <vespa/document/repo/documenttyperepo.h>
+#include <vespa/document/test/make_bucket_space.h>
+#include <vespa/messagebus/config-messagebus.h>
+#include <vespa/messagebus/testlib/slobrok.h>
+#include <vespa/metrics/config-metricsmanager.h>
+#include <vespa/searchcommon/common/schemaconfigurer.h>
+#include <vespa/searchcore/proton/common/alloc_config.h>
+#include <vespa/searchcore/proton/matching/querylimiter.h>
+#include <vespa/searchcore/proton/metrics/metricswireservice.h>
+#include <vespa/searchcore/proton/persistenceengine/ipersistenceengineowner.h>
+#include <vespa/searchcore/proton/persistenceengine/i_resource_write_filter.h>
+#include <vespa/searchcore/proton/persistenceengine/persistenceengine.h>
+#include <vespa/searchcore/proton/server/bootstrapconfig.h>
+#include <vespa/searchcore/proton/server/documentdb.h>
+#include <vespa/searchcore/proton/server/document_db_maintenance_config.h>
+#include <vespa/searchcore/proton/server/document_meta_store_read_guards.h>
+#include <vespa/searchcore/proton/server/documentdbconfigmanager.h>
+#include <vespa/searchcore/proton/server/fileconfigmanager.h>
+#include <vespa/searchcore/proton/server/memoryconfigstore.h>
+#include <vespa/searchcore/proton/server/persistencehandlerproxy.h>
+#include <vespa/searchcore/proton/test/disk_mem_usage_notifier.h>
+#include <vespa/searchlib/index/dummyfileheadercontext.h>
+#include <vespa/searchlib/transactionlog/translogserver.h>
+#include <vespa/searchsummary/config/config-juniperrc.h>
+#include <vespa/storage/bucketdb/config-stor-bucket-init.h>
+#include <vespa/storage/common/i_storage_chain_builder.h>
+#include <vespa/storage/common/storagelink.h>
+#include <vespa/storage/config/config-stor-bouncer.h>
+#include <vespa/storage/config/config-stor-communicationmanager.h>
+#include <vespa/storage/config/config-stor-distributormanager.h>
+#include <vespa/storage/config/config-stor-opslogger.h>
+#include <vespa/storage/config/config-stor-prioritymapping.h>
+#include <vespa/storage/config/config-stor-server.h>
+#include <vespa/storage/config/config-stor-status.h>
+#include <vespa/storage/config/config-stor-visitordispatcher.h>
+#include <vespa/storage/distributor/bucket_spaces_stats_provider.h>
+#include <vespa/storage/storageserver/mergethrottler.h>
+#include <vespa/storage/storageserver/rpc/shared_rpc_resources.h>
+#include <vespa/storage/visiting/config-stor-visitor.h>
+#include <vespa/storageserver/app/distributorprocess.h>
+#include <vespa/storageserver/app/servicelayerprocess.h>
+#include <vespa/vdslib/state/clusterstate.h>
+#include <vespa/vespalib/io/fileutil.h>
+#include <vespa/vespalib/stllike/asciistream.h>
+#include <vespa/vespalib/util/size_literals.h>
+#include <tests/proton/common/dummydbowner.h>
+
+#include <vespa/log/log.h>
+LOG_SETUP(".bmcluster.bm_node");
+
+using cloud::config::SlobroksConfigBuilder;
+using cloud::config::filedistribution::FiledistributorrpcConfig;
+using config::ConfigSet;
+using document::BucketSpace;
+using document::DocumenttypesConfig;
+using document::DocumenttypesConfigBuilder;
+using document::DocumentType;
+using document::DocumentTypeRepo;
+using document::Field;
+using messagebus::MessagebusConfigBuilder;
+using metrics::MetricsmanagerConfigBuilder;
+using proton::BootstrapConfig;
+using proton::DocTypeName;
+using proton::DocumentDB;
+using proton::DocumentDBConfig;
+using proton::HwInfo;
+using search::index::Schema;
+using search::index::SchemaBuilder;
+using search::transactionlog::TransLogServer;
+using storage::MergeThrottler;
+using storage::distributor::BucketSpacesStatsProvider;
+using storage::rpc::SharedRpcResources;
+using storage::rpc::StorageApiRpcService;
+using storage::spi::PersistenceProvider;
+using vespa::config::content::PersistenceConfigBuilder;
+using vespa::config::content::StorDistributionConfigBuilder;
+using vespa::config::content::StorFilestorConfigBuilder;
+using vespa::config::content::UpgradingConfigBuilder;
+using vespa::config::content::core::BucketspacesConfig;
+using vespa::config::content::core::BucketspacesConfigBuilder;
+using vespa::config::content::core::StorBouncerConfigBuilder;
+using vespa::config::content::core::StorBucketInitConfigBuilder;
+using vespa::config::content::core::StorCommunicationmanagerConfigBuilder;
+using vespa::config::content::core::StorDistributormanagerConfigBuilder;
+using vespa::config::content::core::StorOpsloggerConfigBuilder;
+using vespa::config::content::core::StorPrioritymappingConfigBuilder;
+using vespa::config::content::core::StorServerConfigBuilder;
+using vespa::config::content::core::StorStatusConfigBuilder;
+using vespa::config::content::core::StorVisitorConfigBuilder;
+using vespa::config::content::core::StorVisitordispatcherConfigBuilder;
+using vespa::config::search::AttributesConfig;
+using vespa::config::search::AttributesConfigBuilder;
+using vespa::config::search::ImportedFieldsConfig;
+using vespa::config::search::IndexschemaConfig;
+using vespa::config::search::RankProfilesConfig;
+using vespa::config::search::SummaryConfig;
+using vespa::config::search::SummarymapConfig;
+using vespa::config::search::core::ProtonConfig;
+using vespa::config::search::core::ProtonConfigBuilder;
+using vespa::config::search::summary::JuniperrcConfig;
+using vespalib::compression::CompressionConfig;
+
+namespace search::bmcluster {
+
+namespace {
+
+enum PortBias
+{
+ TLS_LISTEN_PORT,
+ SERVICE_LAYER_MBUS_PORT,
+ SERVICE_LAYER_RPC_PORT,
+ SERVICE_LAYER_STATUS_PORT,
+ DISTRIBUTOR_MBUS_PORT,
+ DISTRIBUTOR_RPC_PORT,
+ DISTRIBUTOR_STATUS_PORT,
+ NUM_PORTS,
+
+};
+
+int port_number(int base_port, PortBias bias)
+{
+ return base_port + static_cast<int>(bias);
+}
+
+storage::spi::Context context(storage::spi::Priority(0), 0);
+
+template <class ChainLink, class Process>
+ChainLink* extract_chain_link(Process &process)
+{
+ auto& node = process.getNode();
+ auto *link = node.getChain();
+ while (link != nullptr) {
+ link = link->getNextLink();
+ auto chain_link = dynamic_cast<ChainLink*>(link);
+ if (chain_link != nullptr) {
+ return chain_link;
+ }
+ }
+ return nullptr;
+}
+
+}
+
+std::shared_ptr<AttributesConfig> make_attributes_config() {
+ AttributesConfigBuilder builder;
+ AttributesConfig::Attribute attribute;
+ attribute.name = "int";
+ attribute.datatype = AttributesConfig::Attribute::Datatype::INT32;
+ builder.attribute.emplace_back(attribute);
+ return std::make_shared<AttributesConfig>(builder);
+}
+
+std::shared_ptr<DocumentDBConfig> make_document_db_config(std::shared_ptr<DocumenttypesConfig> document_types, std::shared_ptr<const DocumentTypeRepo> repo, const DocTypeName& doc_type_name)
+{
+ auto indexschema = std::make_shared<IndexschemaConfig>();
+ auto attributes = make_attributes_config();
+ auto summary = std::make_shared<SummaryConfig>();
+ std::shared_ptr<Schema> schema(new Schema());
+ SchemaBuilder::build(*indexschema, *schema);
+ SchemaBuilder::build(*attributes, *schema);
+ SchemaBuilder::build(*summary, *schema);
+ return std::make_shared<DocumentDBConfig>(
+ 1,
+ std::make_shared<RankProfilesConfig>(),
+ std::make_shared<proton::matching::RankingConstants>(),
+ std::make_shared<proton::matching::RankingExpressions>(),
+ std::make_shared<proton::matching::OnnxModels>(),
+ indexschema,
+ attributes,
+ summary,
+ std::make_shared<SummarymapConfig>(),
+ std::make_shared<JuniperrcConfig>(),
+ document_types,
+ repo,
+ std::make_shared<ImportedFieldsConfig>(),
+ std::make_shared<TuneFileDocumentDB>(),
+ schema,
+ std::make_shared<proton::DocumentDBMaintenanceConfig>(),
+ search::LogDocumentStore::Config(),
+ std::make_shared<const proton::ThreadingServiceConfig>(proton::ThreadingServiceConfig::make(1)),
+ std::make_shared<const proton::AllocConfig>(),
+ "client",
+ doc_type_name.getName());
+}
+
+void
+make_slobroks_config(SlobroksConfigBuilder& slobroks, int slobrok_port)
+{
+ SlobroksConfigBuilder::Slobrok slobrok;
+ slobrok.connectionspec = vespalib::make_string("tcp/localhost:%d", slobrok_port);
+ slobroks.slobrok.push_back(std::move(slobrok));
+}
+
+void
+make_bucketspaces_config(BucketspacesConfigBuilder& bucketspaces)
+{
+ BucketspacesConfigBuilder::Documenttype bucket_space_map;
+ bucket_space_map.name = "test";
+ bucket_space_map.bucketspace = "default";
+ bucketspaces.documenttype.emplace_back(std::move(bucket_space_map));
+}
+
+class MyPersistenceEngineOwner : public proton::IPersistenceEngineOwner
+{
+ void setClusterState(BucketSpace, const storage::spi::ClusterState&) override { }
+};
+
+struct MyResourceWriteFilter : public proton::IResourceWriteFilter
+{
+ bool acceptWriteOperation() const override { return true; }
+ State getAcceptState() const override { return IResourceWriteFilter::State(); }
+};
+
+class MyServiceLayerProcess : public storage::ServiceLayerProcess {
+ PersistenceProvider& _provider;
+
+public:
+ MyServiceLayerProcess(const config::ConfigUri& configUri,
+ PersistenceProvider& provider,
+ std::unique_ptr<storage::IStorageChainBuilder> chain_builder);
+ ~MyServiceLayerProcess() override { shutdown(); }
+
+ void shutdown() override;
+ void setupProvider() override;
+ PersistenceProvider& getProvider() override;
+};
+
+MyServiceLayerProcess::MyServiceLayerProcess(const config::ConfigUri& configUri,
+ PersistenceProvider& provider,
+ std::unique_ptr<storage::IStorageChainBuilder> chain_builder)
+ : ServiceLayerProcess(configUri),
+ _provider(provider)
+{
+ if (chain_builder) {
+ set_storage_chain_builder(std::move(chain_builder));
+ }
+}
+
+void
+MyServiceLayerProcess::shutdown()
+{
+ ServiceLayerProcess::shutdown();
+}
+
+void
+MyServiceLayerProcess::setupProvider()
+{
+}
+
+PersistenceProvider&
+MyServiceLayerProcess::getProvider()
+{
+ return _provider;
+}
+
+struct StorageConfigSet
+{
+ vespalib::string config_id;
+ DocumenttypesConfigBuilder documenttypes;
+ StorDistributionConfigBuilder stor_distribution;
+ StorBouncerConfigBuilder stor_bouncer;
+ StorCommunicationmanagerConfigBuilder stor_communicationmanager;
+ StorOpsloggerConfigBuilder stor_opslogger;
+ StorPrioritymappingConfigBuilder stor_prioritymapping;
+ UpgradingConfigBuilder upgrading;
+ StorServerConfigBuilder stor_server;
+ StorStatusConfigBuilder stor_status;
+ BucketspacesConfigBuilder bucketspaces;
+ MetricsmanagerConfigBuilder metricsmanager;
+ SlobroksConfigBuilder slobroks;
+ MessagebusConfigBuilder messagebus;
+
+ StorageConfigSet(const vespalib::string &base_dir, uint32_t node_idx, bool distributor, const vespalib::string& config_id_in, const IBmDistribution& distribution, const DocumenttypesConfig& documenttypes_in,
+ int slobrok_port, int mbus_port, int rpc_port, int status_port, const BmClusterParams& params)
+ : config_id(config_id_in),
+ documenttypes(documenttypes_in),
+ stor_distribution(),
+ stor_bouncer(),
+ stor_communicationmanager(),
+ stor_opslogger(),
+ stor_prioritymapping(),
+ upgrading(),
+ stor_server(),
+ stor_status(),
+ bucketspaces(),
+ metricsmanager(),
+ slobroks(),
+ messagebus()
+ {
+ stor_distribution = distribution.get_distribution_config();
+ stor_server.disableQueueLimitsForChainedMerges = params.get_disable_queue_limits_for_chained_merges();
+ stor_server.nodeIndex = node_idx;
+ stor_server.isDistributor = distributor;
+ stor_server.contentNodeBucketDbStripeBits = params.get_bucket_db_stripe_bits();
+ if (distributor) {
+ stor_server.rootFolder = base_dir + "/distributor";
+ } else {
+ stor_server.rootFolder = base_dir + "/storage";
+ }
+ stor_server.maxMergesPerNode = params.get_max_merges_per_node();
+ stor_server.maxMergeQueueSize = params.get_max_merge_queue_size();
+ make_slobroks_config(slobroks, slobrok_port);
+ stor_communicationmanager.rpc.numNetworkThreads = params.get_rpc_network_threads();
+ stor_communicationmanager.rpc.eventsBeforeWakeup = params.get_rpc_events_before_wakeup();
+ stor_communicationmanager.rpc.numTargetsPerNode = params.get_rpc_targets_per_node();
+ if (params.get_mbus_distributor_node_max_pending_count().has_value()) {
+ stor_communicationmanager.mbusDistributorNodeMaxPendingCount = params.get_mbus_distributor_node_max_pending_count().value();
+ }
+ stor_communicationmanager.mbusport = mbus_port;
+ stor_communicationmanager.rpcport = rpc_port;
+ stor_communicationmanager.skipThread = params.get_skip_communicationmanager_thread();
+
+ stor_status.httpport = status_port;
+ make_bucketspaces_config(bucketspaces);
+ }
+
+ ~StorageConfigSet();
+
+ void add_builders(ConfigSet& set) {
+ set.addBuilder(config_id, &documenttypes);
+ set.addBuilder(config_id, &stor_distribution);
+ set.addBuilder(config_id, &stor_bouncer);
+ set.addBuilder(config_id, &stor_communicationmanager);
+ set.addBuilder(config_id, &stor_opslogger);
+ set.addBuilder(config_id, &stor_prioritymapping);
+ set.addBuilder(config_id, &upgrading);
+ set.addBuilder(config_id, &stor_server);
+ set.addBuilder(config_id, &stor_status);
+ set.addBuilder(config_id, &bucketspaces);
+ set.addBuilder(config_id, &metricsmanager);
+ set.addBuilder(config_id, &slobroks);
+ set.addBuilder(config_id, &messagebus);
+ }
+};
+
+StorageConfigSet::~StorageConfigSet() = default;
+
+struct ServiceLayerConfigSet : public StorageConfigSet
+{
+ PersistenceConfigBuilder persistence;
+ StorFilestorConfigBuilder stor_filestor;
+ StorBucketInitConfigBuilder stor_bucket_init;
+ StorVisitorConfigBuilder stor_visitor;
+
+ ServiceLayerConfigSet(const vespalib::string& base_dir, uint32_t node_idx, const vespalib::string& config_id_in, const IBmDistribution& distribution, const DocumenttypesConfig& documenttypes_in,
+ int slobrok_port, int mbus_port, int rpc_port, int status_port, const BmClusterParams& params)
+ : StorageConfigSet(base_dir, node_idx, false, config_id_in, distribution, documenttypes_in, slobrok_port, mbus_port, rpc_port, status_port, params),
+ persistence(),
+ stor_filestor(),
+ stor_bucket_init(),
+ stor_visitor()
+ {
+ stor_filestor.numResponseThreads = params.get_response_threads();
+ stor_filestor.numNetworkThreads = params.get_rpc_network_threads();
+ stor_filestor.useAsyncMessageHandlingOnSchedule = params.get_use_async_message_handling_on_schedule();
+ }
+
+ ~ServiceLayerConfigSet();
+
+ void add_builders(ConfigSet& set) {
+ StorageConfigSet::add_builders(set);
+ set.addBuilder(config_id, &persistence);
+ set.addBuilder(config_id, &stor_filestor);
+ set.addBuilder(config_id, &stor_bucket_init);
+ set.addBuilder(config_id, &stor_visitor);
+ }
+};
+
+ServiceLayerConfigSet::~ServiceLayerConfigSet() = default;
+
+struct DistributorConfigSet : public StorageConfigSet
+{
+ StorDistributormanagerConfigBuilder stor_distributormanager;
+ StorVisitordispatcherConfigBuilder stor_visitordispatcher;
+
+ DistributorConfigSet(const vespalib::string& base_dir, uint32_t node_idx, const vespalib::string& config_id_in, const IBmDistribution& distribution, const DocumenttypesConfig& documenttypes_in,
+ int slobrok_port, int mbus_port, int rpc_port, int status_port, const BmClusterParams& params)
+ : StorageConfigSet(base_dir, node_idx, true, config_id_in, distribution, documenttypes_in, slobrok_port, mbus_port, rpc_port, status_port, params),
+ stor_distributormanager(),
+ stor_visitordispatcher()
+ {
+ stor_distributormanager.inhibitMergeSendingOnBusyNodeDurationSec = params.get_distributor_merge_busy_wait();
+ stor_distributormanager.maxpendingidealstateoperations = params.get_max_pending_idealstate_operations();
+ stor_distributormanager.numDistributorStripes = params.get_distributor_stripes();
+ }
+
+ ~DistributorConfigSet();
+
+ void add_builders(ConfigSet& set) {
+ StorageConfigSet::add_builders(set);
+ set.addBuilder(config_id, &stor_distributormanager);
+ set.addBuilder(config_id, &stor_visitordispatcher);
+ }
+};
+
+DistributorConfigSet::~DistributorConfigSet() = default;
+
+BmNode::BmNode() = default;
+
+BmNode::~BmNode() = default;
+
+class MyBmNode : public BmNode
+{
+ BmCluster& _cluster;
+ std::shared_ptr<DocumenttypesConfig> _document_types;
+ std::shared_ptr<const DocumentTypeRepo> _repo;
+ proton::DocTypeName _doc_type_name;
+ std::shared_ptr<DocumentDBConfig> _document_db_config;
+ vespalib::string _base_dir;
+ search::index::DummyFileHeaderContext _file_header_context;
+ uint32_t _node_idx;
+ int _tls_listen_port;
+ int _slobrok_port;
+ int _service_layer_mbus_port;
+ int _service_layer_rpc_port;
+ int _service_layer_status_port;
+ int _distributor_mbus_port;
+ int _distributor_rpc_port;
+ int _distributor_status_port;
+ TransLogServer _tls;
+ vespalib::string _tls_spec;
+ proton::matching::QueryLimiter _query_limiter;
+ vespalib::Clock _clock;
+ proton::DummyWireService _metrics_wire_service;
+ proton::MemoryConfigStores _config_stores;
+ vespalib::ThreadStackExecutor _summary_executor;
+ proton::DummyDBOwner _document_db_owner;
+ BucketSpace _bucket_space;
+ std::shared_ptr<DocumentDB> _document_db;
+ MyPersistenceEngineOwner _persistence_owner;
+ MyResourceWriteFilter _write_filter;
+ proton::test::DiskMemUsageNotifier _disk_mem_usage_notifier;
+ std::shared_ptr<proton::PersistenceEngine> _persistence_engine;
+ ServiceLayerConfigSet _service_layer_config;
+ DistributorConfigSet _distributor_config;
+ ConfigSet _config_set;
+ std::shared_ptr<config::IConfigContext> _config_context;
+ std::unique_ptr<mbus::Slobrok> _slobrok;
+ std::shared_ptr<BmStorageLinkContext> _service_layer_chain_context;
+ std::unique_ptr<MyServiceLayerProcess> _service_layer;
+ MergeThrottler* _merge_throttler;
+ std::shared_ptr<BmStorageLinkContext> _distributor_chain_context;
+ std::unique_ptr<storage::DistributorProcess> _distributor;
+ BucketSpacesStatsProvider* _bucket_spaces_stats_provider;
+ std::mutex _lock;
+
+ void create_document_db(const BmClusterParams& params);
+public:
+ MyBmNode(const vespalib::string &base_dir, int base_port, uint32_t node_idx, BmCluster& cluster, const BmClusterParams& params, std::shared_ptr<document::DocumenttypesConfig> document_types, int slobrok_port);
+ ~MyBmNode() override;
+ void initialize_persistence_provider() override;
+ void create_bucket(const document::Bucket& bucket) override;
+ void start_service_layer(const BmClusterParams& params) override;
+ void wait_service_layer() override;
+ void start_distributor(const BmClusterParams& params) override;
+ void shutdown_distributor() override;
+ void shutdown_service_layer() override;
+ void wait_service_layer_slobrok() override;
+ void wait_distributor_slobrok() override;
+ std::shared_ptr<BmStorageLinkContext> get_storage_link_context(bool distributor) override;
+ bool has_storage_layer(bool distributor) const override;
+ PersistenceProvider* get_persistence_provider() override;
+ void merge_node_stats(std::vector<BmNodeStats>& node_stats, storage::lib::ClusterState &baseline_state) override;
+};
+
+MyBmNode::MyBmNode(const vespalib::string& base_dir, int base_port, uint32_t node_idx, BmCluster& cluster, const BmClusterParams& params, std::shared_ptr<document::DocumenttypesConfig> document_types, int slobrok_port)
+ : BmNode(),
+ _cluster(cluster),
+ _document_types(std::move(document_types)),
+ _repo(document::DocumentTypeRepoFactory::make(*_document_types)),
+ _doc_type_name("test"),
+ _document_db_config(make_document_db_config(_document_types, _repo, _doc_type_name)),
+ _base_dir(base_dir),
+ _file_header_context(),
+ _node_idx(node_idx),
+ _tls_listen_port(port_number(base_port, PortBias::TLS_LISTEN_PORT)),
+ _slobrok_port(slobrok_port),
+ _service_layer_mbus_port(port_number(base_port, PortBias::SERVICE_LAYER_MBUS_PORT)),
+ _service_layer_rpc_port(port_number(base_port, PortBias::SERVICE_LAYER_RPC_PORT)),
+ _service_layer_status_port(port_number(base_port, PortBias::SERVICE_LAYER_STATUS_PORT)),
+ _distributor_mbus_port(port_number(base_port, PortBias::DISTRIBUTOR_MBUS_PORT)),
+ _distributor_rpc_port(port_number(base_port, PortBias::DISTRIBUTOR_RPC_PORT)),
+ _distributor_status_port(port_number(base_port, PortBias::DISTRIBUTOR_STATUS_PORT)),
+ _tls("tls", _tls_listen_port, _base_dir, _file_header_context),
+ _tls_spec(vespalib::make_string("tcp/localhost:%d", _tls_listen_port)),
+ _query_limiter(),
+ _clock(),
+ _metrics_wire_service(),
+ _config_stores(),
+ _summary_executor(8, 128_Ki),
+ _document_db_owner(),
+ _bucket_space(document::test::makeBucketSpace(_doc_type_name.getName())),
+ _document_db(),
+ _persistence_owner(),
+ _write_filter(),
+ _disk_mem_usage_notifier(),
+ _persistence_engine(),
+ _service_layer_config(_base_dir, _node_idx, "bm-servicelayer", cluster.get_distribution(), *_document_types, _slobrok_port, _service_layer_mbus_port, _service_layer_rpc_port, _service_layer_status_port, params),
+ _distributor_config(_base_dir, _node_idx, "bm-distributor", cluster.get_distribution(), *_document_types, _slobrok_port, _distributor_mbus_port, _distributor_rpc_port, _distributor_status_port, params),
+ _config_set(),
+ _config_context(std::make_shared<config::ConfigContext>(_config_set)),
+ _slobrok(),
+ _service_layer_chain_context(),
+ _service_layer(),
+ _merge_throttler(nullptr),
+ _distributor_chain_context(),
+ _distributor(),
+ _bucket_spaces_stats_provider(nullptr),
+ _lock()
+{
+ _persistence_engine = std::make_unique<proton::PersistenceEngine>(_persistence_owner, _write_filter, _disk_mem_usage_notifier, -1, false);
+ create_document_db(params);
+ auto proxy = std::make_shared<proton::PersistenceHandlerProxy>(_document_db);
+ _persistence_engine->putHandler(_persistence_engine->getWLock(), _bucket_space, _doc_type_name, proxy);
+ _service_layer_config.add_builders(_config_set);
+ _distributor_config.add_builders(_config_set);
+}
+
+MyBmNode::~MyBmNode()
+{
+ if (_persistence_engine) {
+ _persistence_engine->destroyIterators();
+ _persistence_engine->removeHandler(_persistence_engine->getWLock(), _bucket_space, _doc_type_name);
+ }
+ if (_document_db) {
+ _document_db->close();
+ }
+}
+
+void
+MyBmNode::create_document_db(const BmClusterParams& params)
+{
+ vespalib::mkdir(_base_dir, false);
+ vespalib::mkdir(_base_dir + "/" + _doc_type_name.getName(), false);
+ vespalib::string input_cfg = _base_dir + "/" + _doc_type_name.getName() + "/baseconfig";
+ {
+ proton::FileConfigManager fileCfg(input_cfg, "", _doc_type_name.getName());
+ fileCfg.saveConfig(*_document_db_config, 1);
+ }
+ config::DirSpec spec(input_cfg + "/config-1");
+ auto tuneFileDocDB = std::make_shared<TuneFileDocumentDB>();
+ proton::DocumentDBConfigHelper mgr(spec, _doc_type_name.getName());
+ auto protonCfg = std::make_shared<ProtonConfigBuilder>();
+ if ( ! params.get_indexing_sequencer().empty()) {
+ vespalib::string sequencer = params.get_indexing_sequencer();
+ std::transform(sequencer.begin(), sequencer.end(), sequencer.begin(), [](unsigned char c){ return std::toupper(c); });
+ protonCfg->indexing.optimize = ProtonConfig::Indexing::getOptimize(sequencer);
+ }
+ protonCfg->summary.log.chunk.compression.level = params.get_doc_store_chunk_compression_level();
+ protonCfg->summary.log.chunk.maxbytes = params.get_doc_store_chunk_maxbytes();
+ auto bootstrap_config = std::make_shared<BootstrapConfig>(1,
+ _document_types,
+ _repo,
+ std::move(protonCfg),
+ std::make_shared<FiledistributorrpcConfig>(),
+ std::make_shared<BucketspacesConfig>(),
+ tuneFileDocDB, HwInfo());
+ mgr.forwardConfig(bootstrap_config);
+ mgr.nextGeneration(0ms);
+ _document_db = DocumentDB::create(_base_dir, mgr.getConfig(), _tls_spec, _query_limiter, _clock, _doc_type_name,
+ _bucket_space, *bootstrap_config->getProtonConfigSP(), _document_db_owner,
+ _summary_executor, _summary_executor, *_persistence_engine, _tls,
+ _metrics_wire_service, _file_header_context,
+ _config_stores.getConfigStore(_doc_type_name.toString()),
+ std::make_shared<vespalib::ThreadStackExecutor>(16, 128_Ki), HwInfo());
+ _document_db->start();
+ _document_db->waitForOnlineState();
+}
+
+void
+MyBmNode::initialize_persistence_provider()
+{
+ get_persistence_provider()->initialize();
+}
+
+void
+MyBmNode::create_bucket(const document::Bucket& bucket)
+{
+ get_persistence_provider()->createBucket(storage::spi::Bucket(bucket), context);
+}
+
+void
+MyBmNode::start_service_layer(const BmClusterParams& params)
+{
+ config::ConfigUri config_uri("bm-servicelayer", _config_context);
+ std::unique_ptr<BmStorageChainBuilder> chain_builder;
+ if (params.get_use_storage_chain() && !params.needs_distributor()) {
+ chain_builder = std::make_unique<BmStorageChainBuilder>();
+ _service_layer_chain_context = chain_builder->get_context();
+ }
+ _service_layer = std::make_unique<MyServiceLayerProcess>(config_uri,
+ *_persistence_engine,
+ std::move(chain_builder));
+ _service_layer->setupConfig(100ms);
+ _service_layer->createNode();
+ auto merge_throttler = extract_chain_link<MergeThrottler>(*_service_layer);
+ std::lock_guard<std::mutex> guard(_lock);
+ _merge_throttler = merge_throttler;
+}
+
+void
+MyBmNode::wait_service_layer()
+{
+ _service_layer->getNode().waitUntilInitialized();
+}
+
+void
+MyBmNode::start_distributor(const BmClusterParams& params)
+{
+ config::ConfigUri config_uri("bm-distributor", _config_context);
+ std::unique_ptr<BmStorageChainBuilder> chain_builder;
+ if (params.get_use_storage_chain() && !params.get_use_document_api()) {
+ chain_builder = std::make_unique<BmStorageChainBuilder>();
+ _distributor_chain_context = chain_builder->get_context();
+ }
+ _distributor = std::make_unique<storage::DistributorProcess>(config_uri);
+ if (chain_builder) {
+ _distributor->set_storage_chain_builder(std::move(chain_builder));
+ }
+ _distributor->setupConfig(100ms);
+ _distributor->createNode();
+ auto bucket_spaces_stats_provider = extract_chain_link<BucketSpacesStatsProvider>(*_distributor);
+ std::lock_guard<std::mutex> guard(_lock);
+ _bucket_spaces_stats_provider = bucket_spaces_stats_provider;
+}
+
+void
+MyBmNode::shutdown_distributor()
+{
+ if (_distributor) {
+ LOG(info, "stop distributor");
+ {
+ std::lock_guard guard(_lock);
+ _bucket_spaces_stats_provider = nullptr;
+ }
+ _distributor->getNode().requestShutdown("controlled shutdown");
+ _distributor->shutdown();
+ }
+}
+
+void
+MyBmNode::shutdown_service_layer()
+{
+ if (_service_layer) {
+ LOG(info, "stop service layer");
+ {
+ std::lock_guard guard(_lock);
+ _merge_throttler = nullptr;
+ }
+ _service_layer->getNode().requestShutdown("controlled shutdown");
+ _service_layer->shutdown();
+ }
+}
+
+std::shared_ptr<BmStorageLinkContext>
+MyBmNode::get_storage_link_context(bool distributor)
+{
+ return distributor ? _distributor_chain_context : _service_layer_chain_context;
+}
+
+bool
+MyBmNode::has_storage_layer(bool distributor) const
+{
+ return distributor ? static_cast<bool>(_distributor) : static_cast<bool>(_service_layer);
+}
+
+PersistenceProvider*
+MyBmNode::get_persistence_provider()
+{
+ return _persistence_engine.get();
+}
+
+void
+MyBmNode::wait_service_layer_slobrok()
+{
+ vespalib::asciistream s;
+ s << "storage/cluster.storage/storage/" << _node_idx;
+ _cluster.wait_slobrok(s.str());
+ s << "/default";
+ _cluster.wait_slobrok(s.str());
+}
+
+void
+MyBmNode::wait_distributor_slobrok()
+{
+ vespalib::asciistream s;
+ s << "storage/cluster.storage/distributor/" << _node_idx;
+ _cluster.wait_slobrok(s.str());
+ s << "/default";
+ _cluster.wait_slobrok(s.str());
+}
+
+unsigned int
+BmNode::num_ports()
+{
+ return static_cast<unsigned int>(PortBias::NUM_PORTS);
+}
+
+void
+MyBmNode::merge_node_stats(std::vector<BmNodeStats>& node_stats, storage::lib::ClusterState &baseline_state)
+{
+ auto& storage_node_state = baseline_state.getNodeState(storage::lib::Node(storage::lib::NodeType::STORAGE, _node_idx));
+ if (storage_node_state.getState().oneOf("uir")) {
+ if (_document_db) {
+ proton::DocumentMetaStoreReadGuards dmss(_document_db->getDocumentSubDBs());
+ uint32_t active_docs = dmss.numActiveDocs();
+ uint32_t ready_docs = dmss.numReadyDocs();
+ uint32_t total_docs = dmss.numTotalDocs();
+ uint32_t removed_docs = dmss.numRemovedDocs();
+
+ if (_node_idx < node_stats.size()) {
+ node_stats[_node_idx].set_document_db_stats(BmDocumentDbStats(active_docs, ready_docs, total_docs, removed_docs));
+ }
+ }
+ std::lock_guard<std::mutex> guard(_lock);
+ if (_merge_throttler) {
+ auto& state_lock = _merge_throttler->getStateLock();
+ auto& active_merges = _merge_throttler->getActiveMerges();
+ auto& merge_queue = _merge_throttler->getMergeQueue();
+ uint32_t active_merges_size = 0;
+ uint32_t merge_queue_size = 0;
+ {
+ std::lock_guard mt_guard(state_lock);
+ active_merges_size = active_merges.size();
+ merge_queue_size = merge_queue.size();
+ }
+ if (_node_idx < node_stats.size()) {
+ node_stats[_node_idx].set_merge_stats(BmMergeStats(active_merges_size, merge_queue_size));
+ }
+ }
+ }
+ auto& distributor_node_state = baseline_state.getNodeState(storage::lib::Node(storage::lib::NodeType::DISTRIBUTOR, _node_idx));
+ if (distributor_node_state.getState().oneOf("u")) {
+ std::optional<BucketSpacesStatsProvider::PerNodeBucketSpacesStats> per_node_bucket_spaces_stats;
+ {
+ std::lock_guard<std::mutex> guard(_lock);
+ if (_bucket_spaces_stats_provider) {
+ per_node_bucket_spaces_stats = _bucket_spaces_stats_provider->getBucketSpacesStats();
+ }
+ }
+ if (per_node_bucket_spaces_stats.has_value()) {
+ for (auto &node_idx_and_stats : per_node_bucket_spaces_stats.value()) {
+ uint32_t node_idx = node_idx_and_stats.first;
+ if (node_idx < node_stats.size()) {
+ auto& stats = node_idx_and_stats.second;
+ for (auto &bucket_space_and_stat : stats) {
+ auto& stat = bucket_space_and_stat.second;
+ uint32_t buckets = stat.bucketsTotal();
+ uint32_t buckets_pending = stat.bucketsPending();
+ bool buckets_valid = stat.valid();
+ node_stats[node_idx].merge_bucket_stats(BmBucketsStats(buckets, buckets_pending, buckets_valid));
+ }
+ }
+ }
+ } else {
+ // Incomplete bucket stats
+ for (uint32_t node_idx = 0; node_idx < node_stats.size(); ++node_idx) {
+ node_stats[node_idx].merge_bucket_stats(BmBucketsStats());
+ }
+ }
+ }
+}
+
+std::unique_ptr<BmNode>
+BmNode::create(const vespalib::string& base_dir, int base_port, uint32_t node_idx, BmCluster &cluster, const BmClusterParams& params, std::shared_ptr<document::DocumenttypesConfig> document_types, int slobrok_port)
+{
+ return std::make_unique<MyBmNode>(base_dir, base_port, node_idx, cluster, params, std::move(document_types), slobrok_port);
+}
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_node.h b/searchcore/src/vespa/searchcore/bmcluster/bm_node.h
new file mode 100644
index 00000000000..49c80db44ce
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_node.h
@@ -0,0 +1,58 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <memory>
+#include <vespa/searchcore/proton/common/doctypename.h>
+#include <vector>
+
+namespace document {
+
+class Bucket;
+class DocumentTypeRepo;
+class DocumentType;
+class Field;
+
+};
+
+namespace document::internal { class InternalDocumenttypesType; }
+
+namespace storage::lib { class ClusterState; }
+namespace storage::spi { struct PersistenceProvider; }
+
+namespace search::bmcluster {
+
+class BmCluster;
+class BmClusterParams;
+class BmNodeStats;
+struct BmStorageLinkContext;
+class IBmFeedHandler;
+class IBMDistribution;
+
+/*
+ * Class representing a single benchmark node in a benchmark cluster.
+ */
+class BmNode {
+protected:
+
+ BmNode();
+public:
+ virtual ~BmNode();
+ virtual void initialize_persistence_provider() = 0;
+ virtual void create_bucket(const document::Bucket& bucket) = 0;
+ virtual void start_service_layer(const BmClusterParams& params) = 0;
+ virtual void wait_service_layer() = 0;
+ virtual void start_distributor(const BmClusterParams& params) = 0;
+ virtual void shutdown_distributor() = 0;
+ virtual void shutdown_service_layer() = 0;
+ virtual void wait_service_layer_slobrok() = 0;
+ virtual void wait_distributor_slobrok() = 0;
+ virtual std::shared_ptr<BmStorageLinkContext> get_storage_link_context(bool distributor) = 0;
+ virtual bool has_storage_layer(bool distributor) const = 0;
+ virtual storage::spi::PersistenceProvider *get_persistence_provider() = 0;
+ virtual void merge_node_stats(std::vector<BmNodeStats>& node_stats, storage::lib::ClusterState &baseline_state) = 0;
+ static unsigned int num_ports();
+ static std::unique_ptr<BmNode> create(const vespalib::string &base_dir, int base_port, uint32_t node_idx, BmCluster& cluster, const BmClusterParams& params, std::shared_ptr<const document::internal::InternalDocumenttypesType> document_types, int slobrok_port);
+};
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_node_stats.cpp b/searchcore/src/vespa/searchcore/bmcluster/bm_node_stats.cpp
new file mode 100644
index 00000000000..484c4722e2e
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_node_stats.cpp
@@ -0,0 +1,79 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "bm_node_stats.h"
+#include <cassert>
+
+namespace search::bmcluster {
+
+namespace {
+
+template <class Stats>
+void merge(std::optional<Stats> &lhs, const Stats &rhs)
+{
+ if (lhs) {
+ auto value = lhs.value();
+ value += rhs;
+ lhs = value;
+ } else {
+ lhs = rhs;
+ }
+}
+
+template <class Stats>
+void merge(std::optional<Stats> &lhs, const std::optional<Stats> &rhs)
+{
+ if (rhs) {
+ merge(lhs, rhs.value());
+ }
+}
+
+}
+
+BmNodeStats::BmNodeStats()
+ : _buckets(),
+ _document_db(),
+ _merges()
+{
+}
+
+
+BmNodeStats::~BmNodeStats() = default;
+
+BmNodeStats&
+BmNodeStats::operator+=(const BmNodeStats& rhs)
+{
+ merge(_buckets, rhs._buckets);
+ merge(_document_db, rhs._document_db);
+ merge(_merges, rhs._merges);
+ return *this;
+}
+
+bool
+BmNodeStats::operator==(const BmNodeStats &rhs) const
+{
+ return ((_buckets == rhs._buckets) &&
+ (_document_db == rhs._document_db) &&
+ (_merges == rhs._merges));
+}
+
+void
+BmNodeStats::set_document_db_stats(const BmDocumentDbStats &document_db)
+{
+ assert(!_document_db);
+ _document_db = document_db;
+}
+
+void
+BmNodeStats::merge_bucket_stats(const BmBucketsStats &buckets)
+{
+ merge(_buckets, buckets);
+}
+
+void
+BmNodeStats::set_merge_stats(const BmMergeStats &merges)
+{
+ assert(!_merges);
+ _merges = merges;
+}
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_node_stats.h b/searchcore/src/vespa/searchcore/bmcluster/bm_node_stats.h
new file mode 100644
index 00000000000..03dcd359c21
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_node_stats.h
@@ -0,0 +1,33 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "bm_buckets_stats.h"
+#include "bm_document_db_stats.h"
+#include "bm_merge_stats.h"
+#include <optional>
+
+namespace search::bmcluster {
+
+/*
+ * Class containing stats for a node
+ */
+class BmNodeStats
+{
+ std::optional<BmBucketsStats> _buckets;
+ std::optional<BmDocumentDbStats> _document_db;
+ std::optional<BmMergeStats> _merges;
+public:
+ BmNodeStats();
+ ~BmNodeStats();
+ BmNodeStats& operator+=(const BmNodeStats& rhs);
+ bool operator==(const BmNodeStats &rhs) const;
+ void merge_bucket_stats(const BmBucketsStats &buckets);
+ void set_document_db_stats(const BmDocumentDbStats &document_db);
+ void set_merge_stats(const BmMergeStats &merges);
+ const std::optional<BmBucketsStats>& get_buckets_stats() const noexcept { return _buckets; }
+ const std::optional<BmDocumentDbStats>& get_document_db_stats() const noexcept { return _document_db; }
+ const std::optional<BmMergeStats>& get_merge_stats() const noexcept { return _merges; }
+};
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_node_stats_reporter.cpp b/searchcore/src/vespa/searchcore/bmcluster/bm_node_stats_reporter.cpp
new file mode 100644
index 00000000000..da3964176e6
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_node_stats_reporter.cpp
@@ -0,0 +1,163 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "bm_node_stats_reporter.h"
+#include "bm_cluster.h"
+#include "bm_node_stats.h"
+#include <vespa/vespalib/util/lambdatask.h>
+#include <vespa/vespalib/util/size_literals.h>
+#include <vespa/vespalib/stllike/asciistream.h>
+#include <thread>
+
+#include <vespa/log/log.h>
+LOG_SETUP(".bmcluster.bm_node_stats_reporter");
+
+
+using vespalib::makeLambdaTask;
+
+namespace search::bmcluster {
+
+namespace {
+
+bool steady_buckets_stats(const std::optional<BmBucketsStats> buckets)
+{
+ if (!buckets.has_value()) {
+ return false; // No info available
+ }
+ auto& value = buckets.value();
+ if (!value.get_valid()) {
+ return false; // Some information still missing
+ }
+ return value.get_buckets_pending() == 0u;
+}
+
+}
+
+BmNodeStatsReporter::BmNodeStatsReporter(BmCluster &cluster, bool report_merge_stats)
+ : _cluster(cluster),
+ _executor(1, 128_Ki),
+ _mutex(),
+ _cond(),
+ _change_time(),
+ _prev_node_stats(),
+ _pending_report(1u),
+ _report_merge_stats(report_merge_stats),
+ _started(false),
+ _stop(false)
+{
+}
+
+BmNodeStatsReporter::~BmNodeStatsReporter()
+{
+ if (!_stop) {
+ stop();
+ }
+}
+
+void
+BmNodeStatsReporter::start(std::chrono::milliseconds interval)
+{
+ if (!_started) {
+ _started = true;
+ _executor.execute(makeLambdaTask([this, interval]() { run_report_loop(interval); }));
+ std::unique_lock<std::mutex> guard(_mutex);
+ _cond.wait(guard, [this]() { return _pending_report == 0u; });
+ }
+}
+
+void
+BmNodeStatsReporter::stop()
+{
+ {
+ std::lock_guard guard(_mutex);
+ _stop = true;
+ _cond.notify_all();
+ }
+ _executor.sync();
+ _executor.shutdown();
+}
+
+void
+BmNodeStatsReporter::report_now()
+{
+ std::unique_lock<std::mutex> guard(_mutex);
+ ++_pending_report;
+ _cond.notify_all();
+ _cond.wait(guard, [this]() { return _pending_report == 0u || _stop; });
+}
+
+void
+BmNodeStatsReporter::report()
+{
+ using Width = vespalib::asciistream::Width;
+ auto node_stats = _cluster.get_node_stats();
+ vespalib::asciistream s;
+ s << "nodes stats ";
+ BmNodeStats totals;
+ for (auto &node : node_stats) {
+ auto& document_db = node.get_document_db_stats();
+ if (document_db.has_value()) {
+ s << Width(10) << document_db.value().get_total_docs();
+ } else {
+ s << Width(10) << "-";
+ }
+ totals += node;
+ }
+ if (totals.get_document_db_stats().has_value()) {
+ s << Width(10) << totals.get_document_db_stats().value().get_total_docs();
+ } else {
+ s << Width(10) << "-";
+ }
+ auto& total_buckets = totals.get_buckets_stats();
+ if (total_buckets.has_value()) {
+ s << Width(8) << total_buckets.value().get_buckets_pending();
+ if (!total_buckets.value().get_valid()) {
+ s << "?";
+ }
+ } else {
+ s << Width(8) << "-";
+ }
+ vespalib::string ss(s.str());
+ LOG(info, "%s", ss.c_str());
+ if (_report_merge_stats) {
+ s.clear();
+ vespalib::asciistream ns;
+ s << "merge stats ";
+ for (auto& node : node_stats) {
+ auto &merges = node.get_merge_stats();
+ if (merges.has_value()) {
+ ns.clear();
+ ns << merges.value().get_active() << "/" << merges.value().get_queued();
+ s << Width(10) << ns.str();
+ } else {
+ s << Width(10) << "-";
+ }
+ }
+ ss = s.str();
+ LOG(info, "%s", ss.c_str());
+ }
+ if (!(node_stats == _prev_node_stats) || !steady_buckets_stats(total_buckets)) {
+ _change_time = std::chrono::steady_clock::now();
+ _prev_node_stats = node_stats;
+ }
+}
+
+void
+BmNodeStatsReporter::run_report_loop(std::chrono::milliseconds interval)
+{
+ std::unique_lock<std::mutex> guard(_mutex);
+ while (!_stop) {
+ uint32_t pending_handled = _pending_report;
+ guard.unlock();
+ report();
+ guard.lock();
+ if (pending_handled != 0u) {
+ _pending_report -= pending_handled;
+ _cond.notify_all();
+ }
+ if (!_stop && _pending_report == 0u) {
+ _cond.wait_for(guard, interval);
+ }
+ }
+}
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_node_stats_reporter.h b/searchcore/src/vespa/searchcore/bmcluster/bm_node_stats_reporter.h
new file mode 100644
index 00000000000..f4f32cf79c8
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_node_stats_reporter.h
@@ -0,0 +1,42 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/vespalib/util/threadstackexecutor.h>
+#include <chrono>
+#include <mutex>
+#include <condition_variable>
+
+namespace search::bmcluster {
+
+class BmCluster;
+class BmNodeStats;
+
+/*
+ * Class handling background reporting of node stats during feed or
+ * document redistribution.
+ */
+class BmNodeStatsReporter {
+ BmCluster& _cluster;
+ vespalib::ThreadStackExecutor _executor;
+ std::mutex _mutex;
+ std::condition_variable _cond;
+ std::chrono::time_point<std::chrono::steady_clock> _change_time;
+ std::vector<BmNodeStats> _prev_node_stats;
+ uint32_t _pending_report;
+ bool _report_merge_stats;
+ bool _started;
+ bool _stop;
+
+ void report();
+ void run_report_loop(std::chrono::milliseconds interval);
+public:
+ BmNodeStatsReporter(BmCluster& cluster, bool report_merge_stats);
+ ~BmNodeStatsReporter();
+ void start(std::chrono::milliseconds interval);
+ void stop();
+ void report_now();
+ std::chrono::time_point<std::chrono::steady_clock> get_change_time() const noexcept { return _change_time; }
+};
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_range.h b/searchcore/src/vespa/searchcore/bmcluster/bm_range.h
new file mode 100644
index 00000000000..fda2b1c52b6
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_range.h
@@ -0,0 +1,24 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+namespace search::bmcluster {
+
+/*
+ * Range of document "keys" used to generate documents
+ */
+class BmRange
+{
+ uint32_t _start;
+ uint32_t _end;
+public:
+ BmRange(uint32_t start_in, uint32_t end_in)
+ : _start(start_in),
+ _end(end_in)
+ {
+ }
+ uint32_t get_start() const { return _start; }
+ uint32_t get_end() const { return _end; }
+};
+
+}
diff --git a/searchcore/src/apps/vespa-feed-bm/bm_storage_chain_builder.cpp b/searchcore/src/vespa/searchcore/bmcluster/bm_storage_chain_builder.cpp
index bbe0de70ce2..539ef4d1d41 100644
--- a/searchcore/src/apps/vespa-feed-bm/bm_storage_chain_builder.cpp
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_storage_chain_builder.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bm_storage_chain_builder.h"
#include "bm_storage_link_context.h"
@@ -7,7 +7,7 @@
#include <vespa/log/log.h>
LOG_SETUP(".bm_storage_chain_builder");
-namespace feedbm {
+namespace search::bmcluster {
BmStorageChainBuilder::BmStorageChainBuilder()
: storage::StorageChainBuilder(),
diff --git a/searchcore/src/apps/vespa-feed-bm/bm_storage_chain_builder.h b/searchcore/src/vespa/searchcore/bmcluster/bm_storage_chain_builder.h
index bba933da9e0..053c0d3e421 100644
--- a/searchcore/src/apps/vespa-feed-bm/bm_storage_chain_builder.h
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_storage_chain_builder.h
@@ -1,10 +1,10 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storage/common/storage_chain_builder.h>
-namespace feedbm {
+namespace search::bmcluster {
struct BmStorageLinkContext;
diff --git a/searchcore/src/apps/vespa-feed-bm/bm_storage_link.cpp b/searchcore/src/vespa/searchcore/bmcluster/bm_storage_link.cpp
index 2aeda91c30c..f2c3206eb38 100644
--- a/searchcore/src/apps/vespa-feed-bm/bm_storage_link.cpp
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_storage_link.cpp
@@ -1,9 +1,9 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bm_storage_link.h"
#include "pending_tracker.h"
-namespace feedbm {
+namespace search::bmcluster {
BmStorageLink::BmStorageLink()
diff --git a/searchcore/src/apps/vespa-feed-bm/bm_storage_link.h b/searchcore/src/vespa/searchcore/bmcluster/bm_storage_link.h
index 95528d7b2d9..9c9ab0ebf8b 100644
--- a/searchcore/src/apps/vespa-feed-bm/bm_storage_link.h
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_storage_link.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -6,7 +6,7 @@
#include "pending_tracker_hash.h"
#include <vespa/storage/common/storagelink.h>
-namespace feedbm {
+namespace search::bmcluster {
class PendingTracker;
diff --git a/searchcore/src/apps/vespa-feed-bm/bm_storage_link_context.h b/searchcore/src/vespa/searchcore/bmcluster/bm_storage_link_context.h
index f2df20f1f66..cb20fb58518 100644
--- a/searchcore/src/apps/vespa-feed-bm/bm_storage_link_context.h
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_storage_link_context.h
@@ -1,6 +1,6 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-namespace feedbm {
+namespace search::bmcluster {
class BmStorageLink;
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_storage_message_addresses.cpp b/searchcore/src/vespa/searchcore/bmcluster/bm_storage_message_addresses.cpp
new file mode 100644
index 00000000000..45145a6f65c
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_storage_message_addresses.cpp
@@ -0,0 +1,27 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "bm_storage_message_addresses.h"
+#include <vespa/storageapi/messageapi/storagemessage.h>
+
+using storage::api::StorageMessageAddress;
+using storage::lib::NodeType;
+
+namespace search::bmcluster {
+
+namespace {
+
+vespalib::string _Storage("storage");
+
+}
+
+BmStorageMessageAddresses::BmStorageMessageAddresses(uint32_t num_nodes, bool distributor)
+ : _addresses(num_nodes)
+{
+ for (uint32_t node_idx = 0; node_idx < num_nodes; ++node_idx) {
+ _addresses[node_idx] = std::make_unique<StorageMessageAddress>(&_Storage, distributor ? NodeType::DISTRIBUTOR : NodeType::STORAGE, node_idx);
+ }
+}
+
+BmStorageMessageAddresses::~BmStorageMessageAddresses() = default;
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_storage_message_addresses.h b/searchcore/src/vespa/searchcore/bmcluster/bm_storage_message_addresses.h
new file mode 100644
index 00000000000..584a3b80130
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_storage_message_addresses.h
@@ -0,0 +1,28 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <memory>
+#include <vector>
+
+namespace storage::api { class StorageMessageAddress; }
+
+namespace search::bmcluster {
+
+/*
+ * Class representing the storage message addresses for a set of nodes at
+ * the given layer (service layer or distributor).
+ */
+class BmStorageMessageAddresses
+{
+ using StorageMessageAddress = storage::api::StorageMessageAddress;
+ std::vector<std::unique_ptr<const StorageMessageAddress>> _addresses;
+public:
+ BmStorageMessageAddresses(uint32_t num_nodes, bool distributor);
+ ~BmStorageMessageAddresses();
+ const StorageMessageAddress &get_address(uint32_t node_idx) const { return *_addresses[node_idx]; }
+ bool has_address(uint32_t node_idx) const { return node_idx < _addresses.size(); }
+
+};
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot.cpp b/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot.cpp
new file mode 100644
index 00000000000..3ddb1afdb35
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot.cpp
@@ -0,0 +1,74 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "bucket_db_snapshot.h"
+#include <vespa/persistence/spi/persistenceprovider.h>
+#include <vespa/vespalib/stllike/hash_set.hpp>
+#include <vespa/vespalib/stllike/hash_map.hpp>
+#include <cassert>
+
+using document::BucketId;
+using document::BucketSpace;
+using storage::spi::BucketInfo;
+using storage::spi::PersistenceProvider;
+
+namespace search::bmcluster {
+
+BucketDbSnapshot::BucketDbSnapshot()
+ : _buckets()
+{
+}
+
+BucketDbSnapshot::~BucketDbSnapshot() = default;
+
+void
+BucketDbSnapshot::populate(BucketSpace bucket_space, PersistenceProvider& provider)
+{
+ auto bucket_list = provider.listBuckets(bucket_space);
+ assert(!bucket_list.hasError());
+ for (auto& id : bucket_list.getList()) {
+ auto info = provider.getBucketInfo(storage::spi::Bucket(document::Bucket(bucket_space, id)));
+ assert(!info.hasError());
+ _buckets.insert(std::make_pair(id, info.getBucketInfo()));
+ }
+}
+
+uint32_t
+BucketDbSnapshot::count_new_documents(const BucketDbSnapshot &old) const
+{
+ uint32_t result = 0;
+ for (auto& bucket_id_and_info : _buckets) {
+ auto old_buckets_itr = old._buckets.find(bucket_id_and_info.first);
+ const BucketInfo* old_info = (old_buckets_itr != old._buckets.end()) ? &old_buckets_itr->second : nullptr;
+ auto& new_info = bucket_id_and_info.second;
+ uint32_t new_doc_cnt = new_info.getDocumentCount();
+ uint32_t old_doc_cnt = (old_info != nullptr) ? old_info->getDocumentCount() : 0u;
+ if (new_doc_cnt > old_doc_cnt) {
+ result += (new_doc_cnt - old_doc_cnt);
+ }
+ }
+ return result;
+}
+
+void
+BucketDbSnapshot::populate_bucket_id_set(BucketIdSet& buckets) const
+{
+ for (auto& id_and_info : _buckets) {
+ buckets.insert(id_and_info.first);
+ }
+}
+
+const BucketInfo*
+BucketDbSnapshot::try_get_bucket_info(BucketId bucket_id) const
+{
+ auto buckets_itr = _buckets.find(bucket_id);
+ return (buckets_itr != _buckets.end()) ? &buckets_itr->second : nullptr;
+}
+
+}
+
+namespace vespalib {
+
+template class hash_map<BucketId, BucketInfo, BucketId::hash>;
+template class hash_set<BucketId, BucketId::hash>;
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot.h b/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot.h
new file mode 100644
index 00000000000..d750a73f207
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot.h
@@ -0,0 +1,32 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/document/bucket/bucketid.h>
+#include <vespa/document/bucket/bucketspace.h>
+#include <vespa/persistence/spi/bucketinfo.h>
+#include <vespa/vespalib/stllike/hash_map.h>
+#include <vespa/vespalib/stllike/hash_set.h>
+
+namespace storage::spi { struct PersistenceProvider; }
+
+namespace search::bmcluster {
+
+/*
+ * Class representing a snapshot of bucket db below SPI for a single node and a single bucket space
+ */
+class BucketDbSnapshot
+{
+ using BucketInfoMap = vespalib::hash_map<document::BucketId, storage::spi::BucketInfo, document::BucketId::hash>;
+ BucketInfoMap _buckets;
+public:
+ using BucketIdSet = vespalib::hash_set<document::BucketId, document::BucketId::hash>;
+ BucketDbSnapshot();
+ ~BucketDbSnapshot();
+ void populate(document::BucketSpace bucket_space, storage::spi::PersistenceProvider& provider);
+ uint32_t count_new_documents(const BucketDbSnapshot &old) const;
+ void populate_bucket_id_set(BucketIdSet& buckets) const;
+ const storage::spi::BucketInfo* try_get_bucket_info(document::BucketId bucket_id) const;
+};
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot_vector.cpp b/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot_vector.cpp
new file mode 100644
index 00000000000..33a5707a763
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot_vector.cpp
@@ -0,0 +1,91 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "bucket_db_snapshot_vector.h"
+#include <vespa/document/bucket/fixed_bucket_spaces.h>
+#include <vespa/vespalib/stllike/hash_map.hpp>
+#include <vespa/vdslib/state/clusterstate.h>
+#include <vespa/vdslib/state/cluster_state_bundle.h>
+#include <cassert>
+
+using document::BucketSpace;
+using document::FixedBucketSpaces;
+using storage::lib::ClusterStateBundle;
+using storage::lib::Node;
+using storage::lib::NodeType;
+
+namespace search::bmcluster {
+
+namespace {
+
+std::vector<BucketSpace> bucket_spaces = { FixedBucketSpaces::default_space(), FixedBucketSpaces::global_space() };
+
+}
+
+
+BucketDbSnapshotVector::BucketDbSnapshotVector(const std::vector<storage::spi::PersistenceProvider *>& providers, const ClusterStateBundle &cluster_state_bundle)
+ : _snapshots()
+{
+ for (const auto bucket_space : bucket_spaces) {
+ auto &bs_snapshots = _snapshots[bucket_space];
+ bs_snapshots.resize(providers.size());
+ auto cluster_state = *cluster_state_bundle.getDerivedClusterState(bucket_space);
+ uint32_t node_idx = 0;
+ for (const auto &provider : providers) {
+ auto node_state = cluster_state.getNodeState(Node(NodeType::STORAGE, node_idx));
+ if (provider && node_state.getState().oneOf("ur")) {
+ bs_snapshots[node_idx].populate(bucket_space, *provider);
+ }
+ ++node_idx;
+ }
+ }
+}
+
+BucketDbSnapshotVector::~BucketDbSnapshotVector() = default;
+
+uint32_t
+BucketDbSnapshotVector::count_moved_documents(const BucketDbSnapshotVector &old) const
+{
+ uint32_t moved_documents = 0;
+ for (const auto bucket_space : bucket_spaces) {
+ auto& bs_snapshots = _snapshots.find(bucket_space)->second;
+ auto& old_bs_snapshots = old._snapshots.find(bucket_space)->second;
+ assert(bs_snapshots.size() == old_bs_snapshots.size());
+ for (uint32_t node_idx = 0; node_idx < bs_snapshots.size(); ++node_idx) {
+ moved_documents += bs_snapshots[node_idx].count_new_documents(old_bs_snapshots[node_idx]);
+ }
+ }
+ return moved_documents;
+}
+
+uint32_t
+BucketDbSnapshotVector::count_lost_unique_documents(const BucketDbSnapshotVector &old) const
+{
+ uint32_t lost_documents = 0;
+ for (const auto bucket_space : bucket_spaces) {
+ auto& bs_snapshots = _snapshots.find(bucket_space)->second;
+ auto& old_bs_snapshots = old._snapshots.find(bucket_space)->second;
+ BucketIdSet old_buckets;
+ BucketIdSet new_buckets;
+ for (auto &snapshot : old_bs_snapshots) {
+ snapshot.populate_bucket_id_set(old_buckets);
+ }
+ for (auto &snapshot : bs_snapshots) {
+ snapshot.populate_bucket_id_set(new_buckets);
+ }
+ for (auto &old_bucket : old_buckets) {
+ if (new_buckets.find(old_bucket) != new_buckets.end()) {
+ continue;
+ }
+ for (auto &snapshot : old_bs_snapshots) {
+ auto info = snapshot.try_get_bucket_info(old_bucket);
+ if (info != nullptr) {
+ lost_documents += info->getDocumentCount();
+ break;
+ }
+ }
+ }
+ }
+ return lost_documents;
+}
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot_vector.h b/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot_vector.h
new file mode 100644
index 00000000000..7799ed8fc58
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot_vector.h
@@ -0,0 +1,26 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "bucket_db_snapshot.h"
+
+namespace storage::lib { class ClusterStateBundle; }
+
+namespace search::bmcluster {
+
+/*
+ * Class representing snapshots of bucket db below SPI for multiple nodes and bucket spaces.
+ */
+class BucketDbSnapshotVector
+{
+ vespalib::hash_map<document::BucketSpace, std::vector<BucketDbSnapshot>, document::BucketSpace::hash> _snapshots;
+ using BucketIdSet = BucketDbSnapshot::BucketIdSet;
+public:
+
+ BucketDbSnapshotVector(const std::vector<storage::spi::PersistenceProvider *>& providers, const storage::lib::ClusterStateBundle &cluster_state_bundle);
+ ~BucketDbSnapshotVector();
+ uint32_t count_moved_documents(const BucketDbSnapshotVector &old) const;
+ uint32_t count_lost_unique_documents(const BucketDbSnapshotVector &old) const;
+};
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bucket_info_queue.cpp b/searchcore/src/vespa/searchcore/bmcluster/bucket_info_queue.cpp
new file mode 100644
index 00000000000..15a1c03a5ad
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bucket_info_queue.cpp
@@ -0,0 +1,36 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "bucket_info_queue.h"
+#include <vespa/persistence/spi/persistenceprovider.h>
+
+namespace search::bmcluster {
+
+BucketInfoQueue::BucketInfoQueue(std::atomic<uint32_t>& errors)
+ : _mutex(),
+ _pending_get_bucket_infos(),
+ _errors(errors)
+{
+}
+
+BucketInfoQueue::~BucketInfoQueue()
+{
+ get_bucket_info_loop();
+}
+
+void
+BucketInfoQueue::get_bucket_info_loop()
+{
+ std::unique_lock guard(_mutex);
+ while (!_pending_get_bucket_infos.empty()) {
+ auto pending_get_bucket_info = _pending_get_bucket_infos.front();
+ _pending_get_bucket_infos.pop_front();
+ guard.unlock();
+ auto bucket_info = pending_get_bucket_info.second->getBucketInfo(pending_get_bucket_info.first);
+ if (bucket_info.hasError()) {
+ ++_errors;
+ }
+ guard.lock();
+ }
+}
+
+}
diff --git a/searchcore/src/apps/vespa-feed-bm/bucket_info_queue.h b/searchcore/src/vespa/searchcore/bmcluster/bucket_info_queue.h
index 07a55127234..54b080576b4 100644
--- a/searchcore/src/apps/vespa-feed-bm/bucket_info_queue.h
+++ b/searchcore/src/vespa/searchcore/bmcluster/bucket_info_queue.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -9,7 +9,7 @@
namespace storage::spi { struct PersistenceProvider; }
-namespace feedbm {
+namespace search::bmcluster {
/*
* Class containing a queue of buckets where mutating feed operations
@@ -18,19 +18,19 @@ namespace feedbm {
*/
class BucketInfoQueue
{
+ using PendingGetBucketInfo = std::pair<storage::spi::Bucket, storage::spi::PersistenceProvider*>;
std::mutex _mutex;
- std::deque<storage::spi::Bucket> _buckets;
- storage::spi::PersistenceProvider& _provider;
+ std::deque<PendingGetBucketInfo> _pending_get_bucket_infos;
std::atomic<uint32_t>& _errors;
public:
- BucketInfoQueue(storage::spi::PersistenceProvider& provider, std::atomic<uint32_t>& errors);
+ BucketInfoQueue(std::atomic<uint32_t>& errors);
~BucketInfoQueue();
- void put_bucket(storage::spi::Bucket bucket)
+ void put_bucket(storage::spi::Bucket bucket, storage::spi::PersistenceProvider* provider)
{
std::lock_guard guard(_mutex);
- _buckets.emplace_back(std::move(bucket));
+ _pending_get_bucket_infos.emplace_back(std::make_pair(std::move(bucket), provider));
}
void get_bucket_info_loop();
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bucket_selector.h b/searchcore/src/vespa/searchcore/bmcluster/bucket_selector.h
new file mode 100644
index 00000000000..9549bf71401
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/bucket_selector.h
@@ -0,0 +1,28 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+namespace search::bmcluster {
+
+/*
+ * Map from document index to bucket to ensure even spread between buckets
+ * while ensuring that each bucket used belong to a specific thread.
+ */
+class BucketSelector
+{
+ uint32_t _thread_id;
+ uint32_t _threads;
+ uint32_t _num_buckets;
+public:
+ BucketSelector(uint32_t thread_id_in, uint32_t threads_in, uint32_t num_buckets_in)
+ : _thread_id(thread_id_in),
+ _threads(threads_in),
+ _num_buckets((num_buckets_in / _threads) * _threads)
+ {
+ }
+ uint64_t operator()(uint32_t i) const {
+ return (static_cast<uint64_t>(i) * _threads + _thread_id) % _num_buckets;
+ }
+};
+
+}
diff --git a/searchcore/src/apps/vespa-feed-bm/document_api_message_bus_bm_feed_handler.cpp b/searchcore/src/vespa/searchcore/bmcluster/document_api_message_bus_bm_feed_handler.cpp
index 38c8490de69..dbcd6a33228 100644
--- a/searchcore/src/apps/vespa-feed-bm/document_api_message_bus_bm_feed_handler.cpp
+++ b/searchcore/src/vespa/searchcore/bmcluster/document_api_message_bus_bm_feed_handler.cpp
@@ -1,7 +1,8 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_api_message_bus_bm_feed_handler.h"
#include "bm_message_bus.h"
+#include "i_bm_distribution.h"
#include "pending_tracker.h"
#include <vespa/document/fieldvalue/document.h>
#include <vespa/document/update/documentupdate.h>
@@ -17,55 +18,58 @@ using document::DocumentUpdate;
using storage::api::StorageMessageAddress;
using storage::lib::NodeType;
-namespace feedbm {
+namespace search::bmcluster {
-namespace {
- vespalib::string _Storage("storage");
-}
-
-DocumentApiMessageBusBmFeedHandler::DocumentApiMessageBusBmFeedHandler(BmMessageBus &message_bus)
+DocumentApiMessageBusBmFeedHandler::DocumentApiMessageBusBmFeedHandler(BmMessageBus &message_bus, const IBmDistribution& distribution)
: IBmFeedHandler(),
_name(vespalib::string("DocumentApiMessageBusBmFeedHandler(distributor)")),
- _storage_address(std::make_unique<StorageMessageAddress>(&_Storage, NodeType::DISTRIBUTOR, 0)),
_message_bus(message_bus),
- _route(_storage_address->to_mbus_route())
+ _routes(distribution.get_num_nodes(), true),
+ _no_route_error_count(0u),
+ _distribution(distribution)
{
}
DocumentApiMessageBusBmFeedHandler::~DocumentApiMessageBusBmFeedHandler() = default;
void
-DocumentApiMessageBusBmFeedHandler::send_msg(std::unique_ptr<documentapi::DocumentMessage> msg, PendingTracker& pending_tracker)
+DocumentApiMessageBusBmFeedHandler::send_msg(const document::Bucket& bucket, std::unique_ptr<documentapi::DocumentMessage> msg, PendingTracker& pending_tracker)
{
- _message_bus.send_msg(std::move(msg), _route, pending_tracker);
+ uint32_t node_idx = _distribution.get_distributor_node_idx(bucket);
+ if (_routes.has_route(node_idx)) {
+ auto &route = _routes.get_route(node_idx);
+ _message_bus.send_msg(std::move(msg), route, pending_tracker);
+ } else {
+ ++_no_route_error_count;
+ }
}
void
-DocumentApiMessageBusBmFeedHandler::put(const document::Bucket&, std::unique_ptr<Document> document, uint64_t, PendingTracker& tracker)
+DocumentApiMessageBusBmFeedHandler::put(const document::Bucket& bucket, std::unique_ptr<Document> document, uint64_t, PendingTracker& tracker)
{
auto msg = std::make_unique<documentapi::PutDocumentMessage>(std::move(document));
- send_msg(std::move(msg), tracker);
+ send_msg(bucket, std::move(msg), tracker);
}
void
-DocumentApiMessageBusBmFeedHandler::update(const document::Bucket&, std::unique_ptr<DocumentUpdate> document_update, uint64_t, PendingTracker& tracker)
+DocumentApiMessageBusBmFeedHandler::update(const document::Bucket& bucket, std::unique_ptr<DocumentUpdate> document_update, uint64_t, PendingTracker& tracker)
{
auto msg = std::make_unique<documentapi::UpdateDocumentMessage>(std::move(document_update));
- send_msg(std::move(msg), tracker);
+ send_msg(bucket, std::move(msg), tracker);
}
void
-DocumentApiMessageBusBmFeedHandler::remove(const document::Bucket&, const DocumentId& document_id, uint64_t, PendingTracker& tracker)
+DocumentApiMessageBusBmFeedHandler::remove(const document::Bucket& bucket, const DocumentId& document_id, uint64_t, PendingTracker& tracker)
{
auto msg = std::make_unique<documentapi::RemoveDocumentMessage>(document_id);
- send_msg(std::move(msg), tracker);
+ send_msg(bucket, std::move(msg), tracker);
}
void
-DocumentApiMessageBusBmFeedHandler::get(const document::Bucket&, vespalib::stringref field_set_string, const document::DocumentId& document_id, PendingTracker& tracker)
+DocumentApiMessageBusBmFeedHandler::get(const document::Bucket& bucket, vespalib::stringref field_set_string, const document::DocumentId& document_id, PendingTracker& tracker)
{
auto msg = std::make_unique<documentapi::GetDocumentMessage>(document_id, field_set_string);
- send_msg(std::move(msg), tracker);
+ send_msg(bucket, std::move(msg), tracker);
}
void
@@ -76,7 +80,7 @@ DocumentApiMessageBusBmFeedHandler::attach_bucket_info_queue(PendingTracker&)
uint32_t
DocumentApiMessageBusBmFeedHandler::get_error_count() const
{
- return _message_bus.get_error_count();
+ return _message_bus.get_error_count() + _no_route_error_count;
}
const vespalib::string&
diff --git a/searchcore/src/apps/vespa-feed-bm/document_api_message_bus_bm_feed_handler.h b/searchcore/src/vespa/searchcore/bmcluster/document_api_message_bus_bm_feed_handler.h
index c71bb113c5b..2e45a183860 100644
--- a/searchcore/src/apps/vespa-feed-bm/document_api_message_bus_bm_feed_handler.h
+++ b/searchcore/src/vespa/searchcore/bmcluster/document_api_message_bus_bm_feed_handler.h
@@ -1,17 +1,17 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_bm_feed_handler.h"
-#include <vespa/messagebus/routing/route.h>
+#include "bm_message_bus_routes.h"
+#include <atomic>
-namespace document { class DocumentTypeRepo; }
namespace documentapi { class DocumentMessage; };
-namespace storage::api { class StorageMessageAddress; }
-namespace feedbm {
+namespace search::bmcluster {
class BmMessageBus;
+class IBmDistribution;
/*
* Benchmark feed handler for feed to distributor using document api protocol
@@ -19,13 +19,14 @@ class BmMessageBus;
*/
class DocumentApiMessageBusBmFeedHandler : public IBmFeedHandler
{
- vespalib::string _name;
- std::unique_ptr<storage::api::StorageMessageAddress> _storage_address;
- BmMessageBus& _message_bus;
- mbus::Route _route;
- void send_msg(std::unique_ptr<documentapi::DocumentMessage> msg, PendingTracker& tracker);
+ vespalib::string _name;
+ BmMessageBus& _message_bus;
+ BmMessageBusRoutes _routes;
+ std::atomic<uint32_t> _no_route_error_count;
+ const IBmDistribution& _distribution;
+ void send_msg(const document::Bucket& bucket, std::unique_ptr<documentapi::DocumentMessage> msg, PendingTracker& tracker);
public:
- DocumentApiMessageBusBmFeedHandler(BmMessageBus &message_bus);
+ DocumentApiMessageBusBmFeedHandler(BmMessageBus &message_bus, const IBmDistribution& distribution);
~DocumentApiMessageBusBmFeedHandler();
void put(const document::Bucket& bucket, std::unique_ptr<document::Document> document, uint64_t timestamp, PendingTracker& tracker) override;
void update(const document::Bucket& bucket, std::unique_ptr<document::DocumentUpdate> document_update, uint64_t timestamp, PendingTracker& tracker) override;
diff --git a/searchcore/src/vespa/searchcore/bmcluster/i_bm_distribution.h b/searchcore/src/vespa/searchcore/bmcluster/i_bm_distribution.h
new file mode 100644
index 00000000000..f2c18767d1d
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/i_bm_distribution.h
@@ -0,0 +1,34 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <cstdint>
+
+namespace document { class Bucket; }
+
+namespace vespa::config::content::internal {
+ class InternalStorDistributionType;
+}
+
+namespace storage::lib { class ClusterStateBundle; }
+
+namespace search::bmcluster {
+
+/*
+ * Interface class for describing cluster toplogy and how messages are
+ * routed from feeders into the cluster.
+ */
+class IBmDistribution {
+public:
+ using DistributionConfigBuilder = vespa::config::content::internal::InternalStorDistributionType;
+ using DistributionConfig = const DistributionConfigBuilder;
+
+ virtual ~IBmDistribution() = default;
+ virtual uint32_t get_num_nodes() const = 0;
+ virtual uint32_t get_service_layer_node_idx(const document::Bucket & bucket) const = 0;
+ virtual uint32_t get_distributor_node_idx(const document::Bucket & bucket) const = 0;
+ virtual DistributionConfig get_distribution_config() const = 0;
+ virtual storage::lib::ClusterStateBundle get_cluster_state_bundle() const = 0;
+};
+
+};
diff --git a/searchcore/src/apps/vespa-feed-bm/i_bm_feed_handler.h b/searchcore/src/vespa/searchcore/bmcluster/i_bm_feed_handler.h
index 26cbf27b455..6dfb38423aa 100644
--- a/searchcore/src/apps/vespa-feed-bm/i_bm_feed_handler.h
+++ b/searchcore/src/vespa/searchcore/bmcluster/i_bm_feed_handler.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -12,7 +12,7 @@ class DocumentUpdate;
class DocumentId;
}
-namespace feedbm {
+namespace search::bmcluster {
class BucketInfoQueue;
class PendingTracker;
diff --git a/searchcore/src/apps/vespa-feed-bm/pending_tracker.cpp b/searchcore/src/vespa/searchcore/bmcluster/pending_tracker.cpp
index 94bed4cb3bd..965c43bcdad 100644
--- a/searchcore/src/apps/vespa-feed-bm/pending_tracker.cpp
+++ b/searchcore/src/vespa/searchcore/bmcluster/pending_tracker.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "pending_tracker.h"
#include "bucket_info_queue.h"
@@ -7,7 +7,7 @@
using namespace std::chrono_literals;
-namespace feedbm {
+namespace search::bmcluster {
PendingTracker::PendingTracker(uint32_t limit)
: _pending(0u),
@@ -47,9 +47,9 @@ PendingTracker::drain()
}
void
-PendingTracker::attach_bucket_info_queue(storage::spi::PersistenceProvider& provider, std::atomic<uint32_t>& errors)
+PendingTracker::attach_bucket_info_queue(std::atomic<uint32_t>& errors)
{
- _bucket_info_queue = std::make_unique<BucketInfoQueue>(provider, errors);
+ _bucket_info_queue = std::make_unique<BucketInfoQueue>(errors);
}
}
diff --git a/searchcore/src/apps/vespa-feed-bm/pending_tracker.h b/searchcore/src/vespa/searchcore/bmcluster/pending_tracker.h
index 4ca84ab7442..e87527a0206 100644
--- a/searchcore/src/apps/vespa-feed-bm/pending_tracker.h
+++ b/searchcore/src/vespa/searchcore/bmcluster/pending_tracker.h
@@ -1,13 +1,11 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <atomic>
#include <memory>
-namespace storage::spi { struct PersistenceProvider; }
-
-namespace feedbm {
+namespace search::bmcluster {
class BucketInfoQueue;
@@ -30,7 +28,7 @@ public:
void retain();
void drain();
- void attach_bucket_info_queue(storage::spi::PersistenceProvider& provider, std::atomic<uint32_t>& errors);
+ void attach_bucket_info_queue(std::atomic<uint32_t>& errors);
BucketInfoQueue *get_bucket_info_queue() { return _bucket_info_queue.get(); }
};
diff --git a/searchcore/src/apps/vespa-feed-bm/pending_tracker_hash.cpp b/searchcore/src/vespa/searchcore/bmcluster/pending_tracker_hash.cpp
index 6863d35703e..9f08ad2a238 100644
--- a/searchcore/src/apps/vespa-feed-bm/pending_tracker_hash.cpp
+++ b/searchcore/src/vespa/searchcore/bmcluster/pending_tracker_hash.cpp
@@ -1,11 +1,11 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "pending_tracker_hash.h"
#include "pending_tracker.h"
#include <vespa/vespalib/stllike/hash_map.hpp>
#include <cassert>
-namespace feedbm {
+namespace search::bmcluster {
PendingTrackerHash::PendingTrackerHash()
: _mutex(),
diff --git a/searchcore/src/apps/vespa-feed-bm/pending_tracker_hash.h b/searchcore/src/vespa/searchcore/bmcluster/pending_tracker_hash.h
index 89be93fd4ed..3e2c95ddfae 100644
--- a/searchcore/src/apps/vespa-feed-bm/pending_tracker_hash.h
+++ b/searchcore/src/vespa/searchcore/bmcluster/pending_tracker_hash.h
@@ -1,11 +1,11 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/hash_map.h>
#include <mutex>
-namespace feedbm {
+namespace search::bmcluster {
class PendingTracker;
diff --git a/searchcore/src/apps/vespa-feed-bm/spi_bm_feed_handler.cpp b/searchcore/src/vespa/searchcore/bmcluster/spi_bm_feed_handler.cpp
index 11149eecb3f..8ad120e7d05 100644
--- a/searchcore/src/apps/vespa-feed-bm/spi_bm_feed_handler.cpp
+++ b/searchcore/src/vespa/searchcore/bmcluster/spi_bm_feed_handler.cpp
@@ -1,6 +1,7 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "spi_bm_feed_handler.h"
+#include "i_bm_distribution.h"
#include "pending_tracker.h"
#include "bucket_info_queue.h"
#include <vespa/document/fieldset/fieldsetrepo.h>
@@ -15,7 +16,7 @@ using storage::spi::Bucket;
using storage::spi::PersistenceProvider;
using storage::spi::Timestamp;
-namespace feedbm {
+namespace search::bmcluster {
namespace {
@@ -31,18 +32,20 @@ void get_bucket_info_loop(PendingTracker &tracker)
class MyOperationComplete : public storage::spi::OperationComplete
{
+ PersistenceProvider* _provider;
std::atomic<uint32_t> &_errors;
Bucket _bucket;
PendingTracker& _tracker;
public:
- MyOperationComplete(std::atomic<uint32_t> &errors, const Bucket& bucket, PendingTracker& tracker);
+ MyOperationComplete(PersistenceProvider* provider, std::atomic<uint32_t> &errors, const Bucket& bucket, PendingTracker& tracker);
~MyOperationComplete() override;
void onComplete(std::unique_ptr<storage::spi::Result> result) override;
void addResultHandler(const storage::spi::ResultHandler* resultHandler) override;
};
-MyOperationComplete::MyOperationComplete(std::atomic<uint32_t> &errors, const Bucket& bucket, PendingTracker& tracker)
- : _errors(errors),
+MyOperationComplete::MyOperationComplete(PersistenceProvider* provider, std::atomic<uint32_t> &errors, const Bucket& bucket, PendingTracker& tracker)
+ : _provider(provider),
+ _errors(errors),
_bucket(bucket),
_tracker(tracker)
{
@@ -62,7 +65,7 @@ MyOperationComplete::onComplete(std::unique_ptr<storage::spi::Result> result)
} else {
auto bucket_info_queue = _tracker.get_bucket_info_queue();
if (bucket_info_queue != nullptr) {
- bucket_info_queue->put_bucket(_bucket);
+ bucket_info_queue->put_bucket(_bucket, _provider);
}
}
}
@@ -75,65 +78,90 @@ MyOperationComplete::addResultHandler(const storage::spi::ResultHandler * result
}
-SpiBmFeedHandler::SpiBmFeedHandler(PersistenceProvider& provider, const document::FieldSetRepo &field_set_repo, bool skip_get_spi_bucket_info)
+SpiBmFeedHandler::SpiBmFeedHandler(std::vector<PersistenceProvider* >providers, const document::FieldSetRepo &field_set_repo, const IBmDistribution& distribution, bool skip_get_spi_bucket_info)
: IBmFeedHandler(),
_name(vespalib::string("SpiBmFeedHandler(") + (skip_get_spi_bucket_info ? "skip-get-spi-bucket-info" : "get-spi-bucket-info") + ")"),
- _provider(provider),
+ _providers(std::move(providers)),
_field_set_repo(field_set_repo),
_errors(0u),
- _skip_get_spi_bucket_info(skip_get_spi_bucket_info)
+ _skip_get_spi_bucket_info(skip_get_spi_bucket_info),
+ _distribution(distribution)
{
}
SpiBmFeedHandler::~SpiBmFeedHandler() = default;
+PersistenceProvider*
+SpiBmFeedHandler::get_provider(const document::Bucket& bucket)
+{
+ uint32_t node_idx = _distribution.get_service_layer_node_idx(bucket);
+ if (node_idx >= _providers.size()) {
+ return nullptr;
+ }
+ return _providers[node_idx];
+}
+
void
SpiBmFeedHandler::put(const document::Bucket& bucket, std::unique_ptr<Document> document, uint64_t timestamp, PendingTracker& tracker)
{
get_bucket_info_loop(tracker);
- Bucket spi_bucket(bucket);
- _provider.putAsync(spi_bucket, Timestamp(timestamp), std::move(document), context, std::make_unique<MyOperationComplete>(_errors, spi_bucket, tracker));
+ auto provider = get_provider(bucket);
+ if (provider) {
+ Bucket spi_bucket(bucket);
+ provider->putAsync(spi_bucket, Timestamp(timestamp), std::move(document), context, std::make_unique<MyOperationComplete>(provider, _errors, spi_bucket, tracker));
+ } else {
+ ++_errors;
+ }
}
void
SpiBmFeedHandler::update(const document::Bucket& bucket, std::unique_ptr<DocumentUpdate> document_update, uint64_t timestamp, PendingTracker& tracker)
{
get_bucket_info_loop(tracker);
- Bucket spi_bucket(bucket);
- _provider.updateAsync(spi_bucket, Timestamp(timestamp), std::move(document_update), context, std::make_unique<MyOperationComplete>(_errors, spi_bucket, tracker));
+ auto provider = get_provider(bucket);
+ if (provider) {
+ Bucket spi_bucket(bucket);
+ provider->updateAsync(spi_bucket, Timestamp(timestamp), std::move(document_update), context, std::make_unique<MyOperationComplete>(provider, _errors, spi_bucket, tracker));
+ } else {
+ ++_errors;
+ }
}
void
SpiBmFeedHandler::remove(const document::Bucket& bucket, const DocumentId& document_id, uint64_t timestamp, PendingTracker& tracker)
{
get_bucket_info_loop(tracker);
- Bucket spi_bucket(bucket);
- _provider.removeAsync(spi_bucket, Timestamp(timestamp), document_id, context, std::make_unique<MyOperationComplete>(_errors, spi_bucket, tracker));
+ auto provider = get_provider(bucket);
+ if (provider) {
+ Bucket spi_bucket(bucket);
+ provider->removeAsync(spi_bucket, Timestamp(timestamp), document_id, context, std::make_unique<MyOperationComplete>(provider, _errors, spi_bucket, tracker));
+ } else {
+ ++_errors;
+ }
}
void
SpiBmFeedHandler::get(const document::Bucket& bucket, vespalib::stringref field_set_string, const document::DocumentId& document_id, PendingTracker& tracker)
{
get_bucket_info_loop(tracker);
- Bucket spi_bucket(bucket);
- auto field_set = _field_set_repo.getFieldSet(field_set_string);
- auto result = _provider.get(spi_bucket, *field_set, document_id, context);
- if (result.hasError()) {
+ auto provider = get_provider(bucket);
+ if (provider) {
+ Bucket spi_bucket(bucket);
+ auto field_set = _field_set_repo.getFieldSet(field_set_string);
+ auto result = provider->get(spi_bucket, *field_set, document_id, context);
+ if (result.hasError()) {
+ ++_errors;
+ }
+ } else {
++_errors;
}
}
void
-SpiBmFeedHandler::create_bucket(const document::Bucket& bucket)
-{
- _provider.createBucket(Bucket(bucket), context);
-}
-
-void
SpiBmFeedHandler::attach_bucket_info_queue(PendingTracker& tracker)
{
if (!_skip_get_spi_bucket_info) {
- tracker.attach_bucket_info_queue(_provider, _errors);
+ tracker.attach_bucket_info_queue(_errors);
}
}
diff --git a/searchcore/src/apps/vespa-feed-bm/spi_bm_feed_handler.h b/searchcore/src/vespa/searchcore/bmcluster/spi_bm_feed_handler.h
index a78aa06628b..95c1b804cc7 100644
--- a/searchcore/src/apps/vespa-feed-bm/spi_bm_feed_handler.h
+++ b/searchcore/src/vespa/searchcore/bmcluster/spi_bm_feed_handler.h
@@ -1,33 +1,38 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_bm_feed_handler.h"
#include <atomic>
+#include <vector>
namespace document { class FieldSetRepo; }
namespace storage::spi { struct PersistenceProvider; }
-namespace feedbm {
+namespace search::bmcluster {
+
+class IBmDistribution;
/*
* Benchmark feed handler for feed directly to persistence provider
*/
class SpiBmFeedHandler : public IBmFeedHandler
{
- vespalib::string _name;
- storage::spi::PersistenceProvider& _provider;
- const document::FieldSetRepo& _field_set_repo;
- std::atomic<uint32_t> _errors;
- bool _skip_get_spi_bucket_info;
+ vespalib::string _name;
+ std::vector<storage::spi::PersistenceProvider*> _providers;
+ const document::FieldSetRepo& _field_set_repo;
+ std::atomic<uint32_t> _errors;
+ bool _skip_get_spi_bucket_info;
+ const IBmDistribution& _distribution;
+
+ storage::spi::PersistenceProvider* get_provider(const document::Bucket &bucket);
public:
- SpiBmFeedHandler(storage::spi::PersistenceProvider& provider, const document::FieldSetRepo& field_set_repo, bool skip_get_spi_bucket_info);
+ SpiBmFeedHandler(std::vector<storage::spi::PersistenceProvider*> providers, const document::FieldSetRepo& field_set_repo, const IBmDistribution& distribution, bool skip_get_spi_bucket_info);
~SpiBmFeedHandler();
void put(const document::Bucket& bucket, std::unique_ptr<document::Document> document, uint64_t timestamp, PendingTracker& tracker) override;
void update(const document::Bucket& bucket, std::unique_ptr<document::DocumentUpdate> document_update, uint64_t timestamp, PendingTracker& tracker) override;
void remove(const document::Bucket& bucket, const document::DocumentId& document_id, uint64_t timestamp, PendingTracker& tracker) override;
void get(const document::Bucket& bucket, vespalib::stringref field_set_string, const document::DocumentId& document_id, PendingTracker& tracker) override;
- void create_bucket(const document::Bucket& bucket);
void attach_bucket_info_queue(PendingTracker &tracker) override;
uint32_t get_error_count() const override;
const vespalib::string &get_name() const override;
diff --git a/searchcore/src/vespa/searchcore/bmcluster/storage_api_bm_feed_handler_base.cpp b/searchcore/src/vespa/searchcore/bmcluster/storage_api_bm_feed_handler_base.cpp
new file mode 100644
index 00000000000..cf7b78aaab9
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/storage_api_bm_feed_handler_base.cpp
@@ -0,0 +1,72 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "storage_api_bm_feed_handler_base.h"
+#include "i_bm_distribution.h"
+#include <vespa/document/fieldvalue/document.h>
+#include <vespa/document/update/documentupdate.h>
+#include <vespa/storageapi/message/persistence.h>
+
+using document::Document;
+using document::DocumentId;
+using document::DocumentUpdate;
+
+namespace search::bmcluster {
+
+StorageApiBmFeedHandlerBase::StorageApiBmFeedHandlerBase(const vespalib::string &base_name, const IBmDistribution &distribution, bool distributor)
+ : _name(base_name + "(" + (distributor ? "distributor" : "service-layer") + ")"),
+ _distribution(distribution),
+ _distributor(distributor)
+{
+}
+
+StorageApiBmFeedHandlerBase::~StorageApiBmFeedHandlerBase() = default;
+
+uint32_t
+StorageApiBmFeedHandlerBase::route_cmd(storage::api::StorageCommand& cmd)
+{
+ auto bucket = cmd.getBucket();
+ cmd.setSourceIndex(_distributor ? 0 : _distribution.get_distributor_node_idx(bucket));
+ return _distributor ? _distribution.get_distributor_node_idx(bucket) : _distribution.get_service_layer_node_idx(bucket);
+}
+
+void
+StorageApiBmFeedHandlerBase::put(const document::Bucket& bucket, std::unique_ptr<Document> document, uint64_t timestamp, PendingTracker& tracker)
+{
+ auto cmd = std::make_unique<storage::api::PutCommand>(bucket, std::move(document), timestamp);
+ send_cmd(std::move(cmd), tracker);
+}
+
+void
+StorageApiBmFeedHandlerBase::update(const document::Bucket& bucket, std::unique_ptr<DocumentUpdate> document_update, uint64_t timestamp, PendingTracker& tracker)
+{
+ auto cmd = std::make_unique<storage::api::UpdateCommand>(bucket, std::move(document_update), timestamp);
+ send_cmd(std::move(cmd), tracker);
+}
+
+void
+StorageApiBmFeedHandlerBase::remove(const document::Bucket& bucket, const DocumentId& document_id, uint64_t timestamp, PendingTracker& tracker)
+{
+ auto cmd = std::make_unique<storage::api::RemoveCommand>(bucket, document_id, timestamp);
+ send_cmd(std::move(cmd), tracker);
+}
+
+void
+StorageApiBmFeedHandlerBase::get(const document::Bucket& bucket, vespalib::stringref field_set_string, const document::DocumentId& document_id, PendingTracker& tracker)
+{
+ auto cmd = std::make_unique<storage::api::GetCommand>(bucket, document_id, field_set_string);
+ send_cmd(std::move(cmd), tracker);
+}
+
+const vespalib::string&
+StorageApiBmFeedHandlerBase::get_name() const
+{
+ return _name;
+}
+
+bool
+StorageApiBmFeedHandlerBase::manages_timestamp() const
+{
+ return _distributor;
+}
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/storage_api_bm_feed_handler_base.h b/searchcore/src/vespa/searchcore/bmcluster/storage_api_bm_feed_handler_base.h
new file mode 100644
index 00000000000..150b19ccb10
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/storage_api_bm_feed_handler_base.h
@@ -0,0 +1,37 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "i_bm_feed_handler.h"
+
+namespace storage::api { class StorageCommand; }
+
+namespace search::bmcluster {
+
+class IBmDistribution;
+
+/*
+ * Base class for benchmark feed handlers that feed to service layer
+ * or distributor using storage api protocol.
+ */
+class StorageApiBmFeedHandlerBase : public IBmFeedHandler
+{
+protected:
+ vespalib::string _name;
+ const IBmDistribution& _distribution;
+ bool _distributor;
+
+ virtual void send_cmd(std::shared_ptr<storage::api::StorageCommand> cmd, PendingTracker& tracker) = 0;
+ uint32_t route_cmd(storage::api::StorageCommand& cmd);
+public:
+ StorageApiBmFeedHandlerBase(const vespalib::string& base_name, const IBmDistribution &distribution, bool distributor);
+ ~StorageApiBmFeedHandlerBase();
+ void put(const document::Bucket& bucket, std::unique_ptr<document::Document> document, uint64_t timestamp, PendingTracker& tracker) override;
+ void update(const document::Bucket& bucket, std::unique_ptr<document::DocumentUpdate> document_update, uint64_t timestamp, PendingTracker& tracker) override;
+ void remove(const document::Bucket& bucket, const document::DocumentId& document_id, uint64_t timestamp, PendingTracker& tracker) override;
+ void get(const document::Bucket& bucket, vespalib::stringref field_set_string, const document::DocumentId& document_id, PendingTracker& tracker) override;
+ const vespalib::string &get_name() const override;
+ bool manages_timestamp() const override;
+};
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/storage_api_chain_bm_feed_handler.cpp b/searchcore/src/vespa/searchcore/bmcluster/storage_api_chain_bm_feed_handler.cpp
new file mode 100644
index 00000000000..7501bda80a4
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/storage_api_chain_bm_feed_handler.cpp
@@ -0,0 +1,52 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "storage_api_chain_bm_feed_handler.h"
+#include "i_bm_distribution.h"
+#include "pending_tracker.h"
+#include "bm_storage_link_context.h"
+#include "bm_storage_link.h"
+#include <vespa/storageapi/messageapi/storagecommand.h>
+
+namespace search::bmcluster {
+
+StorageApiChainBmFeedHandler::StorageApiChainBmFeedHandler(std::vector<std::shared_ptr<BmStorageLinkContext>> contexts, const IBmDistribution& distribution, bool distributor)
+ : StorageApiBmFeedHandlerBase("StorageApiChainBmFeedHandler", distribution, distributor),
+ _contexts(std::move(contexts)),
+ _no_link_error_count(0u)
+{
+}
+
+StorageApiChainBmFeedHandler::~StorageApiChainBmFeedHandler() = default;
+
+void
+StorageApiChainBmFeedHandler::send_cmd(std::shared_ptr<storage::api::StorageCommand> cmd, PendingTracker& tracker)
+{
+ uint32_t node_idx = route_cmd(*cmd);
+ if (node_idx < _contexts.size() && _contexts[node_idx]) {
+ auto bm_link = _contexts[node_idx]->bm_link;
+ bm_link->retain(cmd->getMsgId(), tracker);
+ bm_link->sendDown(std::move(cmd));
+ } else {
+ ++_no_link_error_count;
+ }
+}
+
+void
+StorageApiChainBmFeedHandler::attach_bucket_info_queue(PendingTracker&)
+{
+}
+
+uint32_t
+StorageApiChainBmFeedHandler::get_error_count() const
+{
+ uint32_t error_count = 0;
+ for (auto &context : _contexts) {
+ if (context) {
+ error_count += context->bm_link->get_error_count();
+ }
+ }
+ error_count += _no_link_error_count;
+ return error_count;
+}
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/storage_api_chain_bm_feed_handler.h b/searchcore/src/vespa/searchcore/bmcluster/storage_api_chain_bm_feed_handler.h
new file mode 100644
index 00000000000..f649a5f8a2b
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/storage_api_chain_bm_feed_handler.h
@@ -0,0 +1,34 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "storage_api_bm_feed_handler_base.h"
+#include <vector>
+#include <atomic>
+
+namespace storage::api { class StorageCommand; }
+
+namespace search::bmcluster {
+
+struct BmStorageLinkContext;
+class IBmDistribution;
+
+/*
+ * Benchmark feed handler for feed to service layer or distributor
+ * using storage api protocol directly on the storage chain.
+ */
+class StorageApiChainBmFeedHandler : public StorageApiBmFeedHandlerBase
+{
+private:
+ std::vector<std::shared_ptr<BmStorageLinkContext>> _contexts;
+ std::atomic<uint32_t> _no_link_error_count;
+
+ void send_cmd(std::shared_ptr<storage::api::StorageCommand> cmd, PendingTracker& tracker) override;
+public:
+ StorageApiChainBmFeedHandler(std::vector<std::shared_ptr<BmStorageLinkContext>> contexts, const IBmDistribution& distribution, bool distributor);
+ ~StorageApiChainBmFeedHandler();
+ void attach_bucket_info_queue(PendingTracker &tracker) override;
+ uint32_t get_error_count() const override;
+};
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/storage_api_message_bus_bm_feed_handler.cpp b/searchcore/src/vespa/searchcore/bmcluster/storage_api_message_bus_bm_feed_handler.cpp
new file mode 100644
index 00000000000..41ff6442af2
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/storage_api_message_bus_bm_feed_handler.cpp
@@ -0,0 +1,44 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "storage_api_message_bus_bm_feed_handler.h"
+#include "bm_message_bus.h"
+#include "i_bm_distribution.h"
+#include <vespa/storageapi/mbusprot/storagecommand.h>
+
+namespace search::bmcluster {
+
+StorageApiMessageBusBmFeedHandler::StorageApiMessageBusBmFeedHandler(BmMessageBus &message_bus, const IBmDistribution& distribution, bool distributor)
+ : StorageApiBmFeedHandlerBase("StorageApiMessageBusBmFeedHandler", distribution, distributor),
+ _message_bus(message_bus),
+ _routes(distribution.get_num_nodes(), distributor),
+ _no_route_error_count(0)
+{
+}
+
+StorageApiMessageBusBmFeedHandler::~StorageApiMessageBusBmFeedHandler() = default;
+
+void
+StorageApiMessageBusBmFeedHandler::send_cmd(std::shared_ptr<storage::api::StorageCommand> cmd, PendingTracker& tracker)
+{
+ uint32_t node_idx = route_cmd(*cmd);
+ if (_routes.has_route(node_idx)) {
+ auto msg = std::make_unique<storage::mbusprot::StorageCommand>(cmd);
+ auto& route = _routes.get_route(node_idx);
+ _message_bus.send_msg(std::move(msg), route, tracker);
+ } else {
+ ++_no_route_error_count;
+ }
+}
+
+void
+StorageApiMessageBusBmFeedHandler::attach_bucket_info_queue(PendingTracker&)
+{
+}
+
+uint32_t
+StorageApiMessageBusBmFeedHandler::get_error_count() const
+{
+ return _message_bus.get_error_count() + _no_route_error_count;
+}
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/storage_api_message_bus_bm_feed_handler.h b/searchcore/src/vespa/searchcore/bmcluster/storage_api_message_bus_bm_feed_handler.h
new file mode 100644
index 00000000000..f709ab80a36
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/storage_api_message_bus_bm_feed_handler.h
@@ -0,0 +1,33 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "storage_api_bm_feed_handler_base.h"
+#include "bm_message_bus_routes.h"
+#include <atomic>
+
+namespace storage::api { class StorageCommand; }
+
+namespace search::bmcluster {
+
+class BmMessageBus;
+class IBmDistribution;
+
+/*
+ * Benchmark feed handler for feed to service layer or distributor
+ * using storage api protocol over message bus.
+ */
+class StorageApiMessageBusBmFeedHandler : public StorageApiBmFeedHandlerBase
+{
+ BmMessageBus& _message_bus;
+ BmMessageBusRoutes _routes;
+ std::atomic<uint32_t> _no_route_error_count;
+ void send_cmd(std::shared_ptr<storage::api::StorageCommand> cmd, PendingTracker& tracker) override;
+public:
+ StorageApiMessageBusBmFeedHandler(BmMessageBus &message_bus, const IBmDistribution& distribution, bool distributor);
+ ~StorageApiMessageBusBmFeedHandler();
+ void attach_bucket_info_queue(PendingTracker &tracker) override;
+ uint32_t get_error_count() const override;
+};
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/storage_api_rpc_bm_feed_handler.cpp b/searchcore/src/vespa/searchcore/bmcluster/storage_api_rpc_bm_feed_handler.cpp
new file mode 100644
index 00000000000..ed84c4ce703
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/storage_api_rpc_bm_feed_handler.cpp
@@ -0,0 +1,96 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "storage_api_rpc_bm_feed_handler.h"
+#include "i_bm_distribution.h"
+#include "pending_tracker.h"
+#include "pending_tracker_hash.h"
+#include "storage_reply_error_checker.h"
+#include <vespa/storageapi/messageapi/storagecommand.h>
+#include <vespa/storage/storageserver/message_dispatcher.h>
+#include <vespa/storage/storageserver/rpc/message_codec_provider.h>
+#include <vespa/storage/storageserver/rpc/shared_rpc_resources.h>
+#include <vespa/storage/storageserver/rpc/storage_api_rpc_service.h>
+
+using document::DocumentTypeRepo;
+using storage::rpc::SharedRpcResources;
+using storage::rpc::StorageApiRpcService;
+
+namespace search::bmcluster {
+
+class StorageApiRpcBmFeedHandler::MyMessageDispatcher : public storage::MessageDispatcher,
+ public StorageReplyErrorChecker
+{
+ PendingTrackerHash _pending_hash;
+public:
+ MyMessageDispatcher()
+ : storage::MessageDispatcher(),
+ StorageReplyErrorChecker(),
+ _pending_hash()
+ {
+ }
+ ~MyMessageDispatcher() override;
+ void dispatch_sync(std::shared_ptr<storage::api::StorageMessage> msg) override {
+ check_error(*msg);
+ release(msg->getMsgId());
+ }
+ void dispatch_async(std::shared_ptr<storage::api::StorageMessage> msg) override {
+ check_error(*msg);
+ release(msg->getMsgId());
+ }
+ void retain(uint64_t msg_id, PendingTracker &tracker) { _pending_hash.retain(msg_id, tracker); }
+ void release(uint64_t msg_id) {
+ auto tracker = _pending_hash.release(msg_id);
+ if (tracker != nullptr) {
+ tracker->release();
+ } else {
+ ++_errors;
+ }
+ }
+};
+
+StorageApiRpcBmFeedHandler::MyMessageDispatcher::~MyMessageDispatcher()
+{
+}
+
+StorageApiRpcBmFeedHandler::StorageApiRpcBmFeedHandler(SharedRpcResources& shared_rpc_resources_in,
+ std::shared_ptr<const DocumentTypeRepo> repo,
+ const StorageApiRpcService::Params& rpc_params,
+ const IBmDistribution& distribution,
+ bool distributor)
+ : StorageApiBmFeedHandlerBase("StorageApiRpcBmFeedHandler", distribution, distributor),
+ _addresses(distribution.get_num_nodes(), distributor),
+ _no_address_error_count(0u),
+ _shared_rpc_resources(shared_rpc_resources_in),
+ _message_dispatcher(std::make_unique<MyMessageDispatcher>()),
+ _message_codec_provider(std::make_unique<storage::rpc::MessageCodecProvider>(repo)),
+ _rpc_client(std::make_unique<storage::rpc::StorageApiRpcService>(*_message_dispatcher, _shared_rpc_resources, *_message_codec_provider, rpc_params))
+{
+}
+
+StorageApiRpcBmFeedHandler::~StorageApiRpcBmFeedHandler() = default;
+
+void
+StorageApiRpcBmFeedHandler::send_cmd(std::shared_ptr<storage::api::StorageCommand> cmd, PendingTracker& tracker)
+{
+ uint32_t node_idx = route_cmd(*cmd);
+ if (_addresses.has_address(node_idx)) {
+ cmd->setAddress(_addresses.get_address(node_idx));
+ _message_dispatcher->retain(cmd->getMsgId(), tracker);
+ _rpc_client->send_rpc_v1_request(std::move(cmd));
+ } else {
+ ++_no_address_error_count;
+ }
+}
+
+void
+StorageApiRpcBmFeedHandler::attach_bucket_info_queue(PendingTracker&)
+{
+}
+
+uint32_t
+StorageApiRpcBmFeedHandler::get_error_count() const
+{
+ return _message_dispatcher->get_error_count() + _no_address_error_count;
+}
+
+}
diff --git a/searchcore/src/vespa/searchcore/bmcluster/storage_api_rpc_bm_feed_handler.h b/searchcore/src/vespa/searchcore/bmcluster/storage_api_rpc_bm_feed_handler.h
new file mode 100644
index 00000000000..deb7feaf48f
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/bmcluster/storage_api_rpc_bm_feed_handler.h
@@ -0,0 +1,50 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "storage_api_bm_feed_handler_base.h"
+#include "bm_storage_message_addresses.h"
+#include <vespa/storage/storageserver/rpc/storage_api_rpc_service.h>
+
+namespace document { class DocumentTypeRepo; }
+namespace storage::api {
+class StorageMessageAddress;
+class StorageCommand;
+}
+
+namespace storage::rpc {
+class MessageCodecProvider;
+class SharedRpcResources;
+}
+
+namespace search::bmcluster {
+
+class IBmDistribution;
+
+/*
+ * Benchmark feed handler for feed to service layer or distributor
+ * using storage api protocol over rpc.
+ */
+class StorageApiRpcBmFeedHandler : public StorageApiBmFeedHandlerBase
+{
+ class MyMessageDispatcher;
+ BmStorageMessageAddresses _addresses;
+ std::atomic<uint32_t> _no_address_error_count;
+ storage::rpc::SharedRpcResources& _shared_rpc_resources;
+ std::unique_ptr<MyMessageDispatcher> _message_dispatcher;
+ std::unique_ptr<storage::rpc::MessageCodecProvider> _message_codec_provider;
+ std::unique_ptr<storage::rpc::StorageApiRpcService> _rpc_client;
+
+ void send_cmd(std::shared_ptr<storage::api::StorageCommand> cmd, PendingTracker& tracker) override;
+public:
+ StorageApiRpcBmFeedHandler(storage::rpc::SharedRpcResources& shared_rpc_resources_in,
+ std::shared_ptr<const document::DocumentTypeRepo> repo,
+ const storage::rpc::StorageApiRpcService::Params& rpc_params,
+ const IBmDistribution& distribution,
+ bool distributor);
+ ~StorageApiRpcBmFeedHandler();
+ void attach_bucket_info_queue(PendingTracker &tracker) override;
+ uint32_t get_error_count() const override;
+};
+
+}
diff --git a/searchcore/src/apps/vespa-feed-bm/storage_reply_error_checker.cpp b/searchcore/src/vespa/searchcore/bmcluster/storage_reply_error_checker.cpp
index 260b0c8a7af..3a57a8d204f 100644
--- a/searchcore/src/apps/vespa-feed-bm/storage_reply_error_checker.cpp
+++ b/searchcore/src/vespa/searchcore/bmcluster/storage_reply_error_checker.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "storage_reply_error_checker.h"
#include <vespa/storageapi/messageapi/storagereply.h>
@@ -6,7 +6,7 @@
#include <vespa/log/log.h>
LOG_SETUP(".storage_reply_error_checker");
-namespace feedbm {
+namespace search::bmcluster {
StorageReplyErrorChecker::StorageReplyErrorChecker()
: _errors(0u)
diff --git a/searchcore/src/apps/vespa-feed-bm/storage_reply_error_checker.h b/searchcore/src/vespa/searchcore/bmcluster/storage_reply_error_checker.h
index 4743367b426..8e2942617e2 100644
--- a/searchcore/src/apps/vespa-feed-bm/storage_reply_error_checker.h
+++ b/searchcore/src/vespa/searchcore/bmcluster/storage_reply_error_checker.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -6,8 +6,11 @@
namespace storage::api { class StorageMessage; }
-namespace feedbm {
+namespace search::bmcluster {
+/*
+ * Class tracking errors in storage replies.
+ */
class StorageReplyErrorChecker {
protected:
std::atomic<uint32_t> _errors;
diff --git a/searchcore/src/vespa/searchcore/config/CMakeLists.txt b/searchcore/src/vespa/searchcore/config/CMakeLists.txt
index a616b05e9c2..65b0096526f 100644
--- a/searchcore/src/vespa/searchcore/config/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/config/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcore_fconfig STATIC
SOURCES
DEPENDS
diff --git a/searchcore/src/vespa/searchcore/config/fdispatchrc.def b/searchcore/src/vespa/searchcore/config/fdispatchrc.def
index f2e33e463b8..aff4cab4f91 100644
--- a/searchcore/src/vespa/searchcore/config/fdispatchrc.def
+++ b/searchcore/src/vespa/searchcore/config/fdispatchrc.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search.core
## The number of transport threads used when talking to search nodes.
diff --git a/searchcore/src/vespa/searchcore/config/hwinfo.def b/searchcore/src/vespa/searchcore/config/hwinfo.def
index 981c3fe655e..60dff099fa2 100644
--- a/searchcore/src/vespa/searchcore/config/hwinfo.def
+++ b/searchcore/src/vespa/searchcore/config/hwinfo.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search.core
## Write speed, MiB/s, typically measured by writing 1 GiB data to disk.
diff --git a/searchcore/src/vespa/searchcore/config/onnx-models.def b/searchcore/src/vespa/searchcore/config/onnx-models.def
index 33ea90002c8..c117d6f162c 100644
--- a/searchcore/src/vespa/searchcore/config/onnx-models.def
+++ b/searchcore/src/vespa/searchcore/config/onnx-models.def
@@ -1,10 +1,13 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search.core
-model[].name string
-model[].fileref file
-model[].input[].name string
-model[].input[].source string
-model[].output[].name string
-model[].output[].as string
-model[].dry_run_on_setup bool default=false
+model[].name string
+model[].fileref file
+model[].input[].name string
+model[].input[].source string
+model[].output[].name string
+model[].output[].as string
+model[].dry_run_on_setup bool default=false
+model[].stateless_execution_mode string default=""
+model[].stateless_interop_threads int default=-1
+model[].stateless_intraop_threads int default=-1
diff --git a/searchcore/src/vespa/searchcore/config/proton.def b/searchcore/src/vespa/searchcore/config/proton.def
index 3a51176b0d8..c1ec37e5662 100644
--- a/searchcore/src/vespa/searchcore/config/proton.def
+++ b/searchcore/src/vespa/searchcore/config/proton.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search.core
## Base directory. The default is ignored as it is assigned by the model
@@ -431,13 +431,9 @@ visit.ignoremaxbytes bool default=true
## When set to 0 (default) we use 1 separate thread per document database.
initialize.threads int default = 0
-## Portion of enumstore address space that can be used before put and update
-## portion of feed is blocked.
-writefilter.attribute.enumstorelimit double default = 0.9
-
-## Portion of attribute multivalue mapping address space that can be used
-## before put and update portion of feed is blocked.
-writefilter.attribute.multivaluelimit double default = 0.9
+## Portion of max address space used in components in attribute vectors
+## before put and update operations in feed is blocked.
+writefilter.attribute.address_space_limit double default = 0.9
## Portion of physical memory that can be resident memory in anonymous mapping
## by the proton process before put and update portion of feed is blocked.
diff --git a/searchcore/src/vespa/searchcore/config/ranking-constants.def b/searchcore/src/vespa/searchcore/config/ranking-constants.def
index 3b55eda3308..26dfa564a85 100644
--- a/searchcore/src/vespa/searchcore/config/ranking-constants.def
+++ b/searchcore/src/vespa/searchcore/config/ranking-constants.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search.core
constant[].name string
diff --git a/searchcore/src/vespa/searchcore/config/ranking-expressions.def b/searchcore/src/vespa/searchcore/config/ranking-expressions.def
index c2e20dc5c94..a9401a4bccb 100644
--- a/searchcore/src/vespa/searchcore/config/ranking-expressions.def
+++ b/searchcore/src/vespa/searchcore/config/ranking-expressions.def
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search.core
expression[].name string
diff --git a/searchcore/src/vespa/searchcore/grouping/CMakeLists.txt b/searchcore/src/vespa/searchcore/grouping/CMakeLists.txt
index 95de834e72b..3117cab25d5 100644
--- a/searchcore/src/vespa/searchcore/grouping/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/grouping/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcore_grouping STATIC
SOURCES
groupingcontext.cpp
diff --git a/searchcore/src/vespa/searchcore/grouping/groupingcontext.cpp b/searchcore/src/vespa/searchcore/grouping/groupingcontext.cpp
index 01dd069b03c..a69cc56e6b3 100644
--- a/searchcore/src/vespa/searchcore/grouping/groupingcontext.cpp
+++ b/searchcore/src/vespa/searchcore/grouping/groupingcontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "groupingcontext.h"
#include <vespa/searchlib/aggregation/predicates.h>
diff --git a/searchcore/src/vespa/searchcore/grouping/groupingcontext.h b/searchcore/src/vespa/searchcore/grouping/groupingcontext.h
index 3ec16fab2cc..e8114c505ed 100644
--- a/searchcore/src/vespa/searchcore/grouping/groupingcontext.h
+++ b/searchcore/src/vespa/searchcore/grouping/groupingcontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/aggregation/grouping.h>
diff --git a/searchcore/src/vespa/searchcore/grouping/groupingmanager.cpp b/searchcore/src/vespa/searchcore/grouping/groupingmanager.cpp
index 49ce21ff14d..863511da5ee 100644
--- a/searchcore/src/vespa/searchcore/grouping/groupingmanager.cpp
+++ b/searchcore/src/vespa/searchcore/grouping/groupingmanager.cpp
@@ -1,10 +1,12 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "groupingmanager.h"
#include "groupingsession.h"
#include "groupingcontext.h"
#include <vespa/searchlib/aggregation/fs4hit.h>
#include <vespa/searchlib/expression/attributenode.h>
+#include <vespa/vespalib/util/issue.h>
+#include <vespa/vespalib/util/stringfmt.h>
#include <vespa/log/log.h>
LOG_SETUP(".groupingmanager");
@@ -13,6 +15,8 @@ namespace search::grouping {
using aggregation::Grouping;
using attribute::IAttributeContext;
+using vespalib::Issue;
+using vespalib::make_string_short::fmt;
//-----------------------------------------------------------------------------
@@ -56,7 +60,14 @@ GroupingManager::init(const IAttributeContext &attrCtx)
grouping.configureStaticStuff(stuff);
list.push_back(groupingList[i]);
} catch (const std::exception & e) {
- LOG(error, "Could not locate attribute for grouping number %ld : %s. Ignoring grouping '%s'", i, e.what(), grouping.asString().c_str());
+ auto msg = fmt("Could not locate attribute for grouping number %ld : %s. Ignoring grouping '%s'", i, e.what(), grouping.asString().c_str());
+ //
+ // NOTE: if this issue is reported as an error in the
+ // search reply, the grouping searcher will discard all
+ // grouping results, which may or may not be what we want.
+ //
+ // Issue::report(msg);
+ LOG(error, "%s", msg.c_str());
}
}
std::swap(list, groupingList);
diff --git a/searchcore/src/vespa/searchcore/grouping/groupingmanager.h b/searchcore/src/vespa/searchcore/grouping/groupingmanager.h
index cdbace405f0..6941f519afe 100644
--- a/searchcore/src/vespa/searchcore/grouping/groupingmanager.h
+++ b/searchcore/src/vespa/searchcore/grouping/groupingmanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/common/idocumentmetastore.h>
diff --git a/searchcore/src/vespa/searchcore/grouping/groupingsession.cpp b/searchcore/src/vespa/searchcore/grouping/groupingsession.cpp
index e336d5b25c9..fe476039ab8 100644
--- a/searchcore/src/vespa/searchcore/grouping/groupingsession.cpp
+++ b/searchcore/src/vespa/searchcore/grouping/groupingsession.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "groupingsession.h"
#include "groupingmanager.h"
diff --git a/searchcore/src/vespa/searchcore/grouping/groupingsession.h b/searchcore/src/vespa/searchcore/grouping/groupingsession.h
index 70953f212d1..f58d667446d 100644
--- a/searchcore/src/vespa/searchcore/grouping/groupingsession.h
+++ b/searchcore/src/vespa/searchcore/grouping/groupingsession.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "sessionid.h"
diff --git a/searchcore/src/vespa/searchcore/grouping/sessionid.h b/searchcore/src/vespa/searchcore/grouping/sessionid.h
index c6a54fda370..6f6097f1e9a 100644
--- a/searchcore/src/vespa/searchcore/grouping/sessionid.h
+++ b/searchcore/src/vespa/searchcore/grouping/sessionid.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/attribute/CMakeLists.txt
index fe9798b5841..4f8bc362655 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/proton/attribute/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcore_attribute STATIC
SOURCES
address_space_usage_stats.cpp
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/address_space_usage_stats.cpp b/searchcore/src/vespa/searchcore/proton/attribute/address_space_usage_stats.cpp
index 1acfa64285c..dd9f76d485c 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/address_space_usage_stats.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/address_space_usage_stats.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "address_space_usage_stats.h"
#include <ostream>
@@ -8,6 +8,7 @@ namespace proton {
AddressSpaceUsageStats::AddressSpaceUsageStats(const vespalib::AddressSpace & usage)
: _usage(usage),
_attributeName(),
+ _component_name(),
_subDbName()
{
}
@@ -17,11 +18,13 @@ AddressSpaceUsageStats::~AddressSpaceUsageStats() = default;
void
AddressSpaceUsageStats::merge(const vespalib::AddressSpace &usage,
const vespalib::string &attributeName,
+ const vespalib::string &component_name,
const vespalib::string &subDbName)
{
if (attributeName.empty() || usage.usage() > _usage.usage()) {
_usage = usage;
_attributeName = attributeName;
+ _component_name = component_name;
_subDbName = subDbName;
}
}
@@ -31,6 +34,7 @@ operator<<(std::ostream& out, const AddressSpaceUsageStats& rhs)
{
out << "{usage=" << rhs.getUsage() <<
", attribute_name=" << rhs.getAttributeName() <<
+ ", component_name=" << rhs.get_component_name() <<
", subdb_name=" << rhs.getSubDbName() << "}";
return out;
}
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/address_space_usage_stats.h b/searchcore/src/vespa/searchcore/proton/attribute/address_space_usage_stats.h
index 9ed68693ec1..d9013764558 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/address_space_usage_stats.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/address_space_usage_stats.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -8,14 +8,14 @@
namespace proton {
/**
- * Class representing usage of a single address space (enum store or
- * multi value) and the most largest attribute in that respect, relative
- * to the limit.
+ * Class representing max address space usage (relative to the limit)
+ * among components in attributes vectors in all sub databases.
*/
class AddressSpaceUsageStats
{
vespalib::AddressSpace _usage;
vespalib::string _attributeName;
+ vespalib::string _component_name;
vespalib::string _subDbName;
public:
@@ -23,15 +23,18 @@ public:
~AddressSpaceUsageStats();
void merge(const vespalib::AddressSpace &usage,
const vespalib::string &attributeName,
+ const vespalib::string &component_name,
const vespalib::string &subDbName);
const vespalib::AddressSpace &getUsage() const { return _usage; }
const vespalib::string &getAttributeName() const { return _attributeName; }
+ const vespalib::string &get_component_name() const { return _component_name; }
const vespalib::string &getSubDbName() const { return _subDbName; }
bool operator==(const AddressSpaceUsageStats& rhs) const {
return (_usage == rhs._usage) &&
(_attributeName == rhs._attributeName) &&
+ (_component_name == rhs._component_name) &&
(_subDbName == rhs._subDbName);
}
};
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_aspect_delayer.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_aspect_delayer.cpp
index 55962696492..78603512d6b 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_aspect_delayer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_aspect_delayer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_aspect_delayer.h"
#include <vespa/config-attributes.h>
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_aspect_delayer.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_aspect_delayer.h
index f28633ffda7..9ffb23dca8d 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_aspect_delayer.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_aspect_delayer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec.cpp
index 34c32112644..17707c99705 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_collection_spec.h"
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec.h
index 4c1ab2cbf1b..607be32e952 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec_factory.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec_factory.cpp
index 4189688ea81..e30c246e53a 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec_factory.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec_factory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_collection_spec_factory.h"
#include <vespa/searchlib/attribute/configconverter.h>
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec_factory.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec_factory.h
index 074c56448f3..aed99ea7d52 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec_factory.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_collection_spec_factory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_config_inspector.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_config_inspector.cpp
index d950b5e8ed3..f4692013cdf 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_config_inspector.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_config_inspector.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_config_inspector.h"
#include <vespa/searchlib/attribute/configconverter.h>
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_config_inspector.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_config_inspector.h
index 8952b34c6ff..42c920fcc5f 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_config_inspector.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_config_inspector.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_directory.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_directory.cpp
index ae4b1419165..dfd2df18194 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_directory.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_directory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_directory.h"
#include "attributedisklayout.h"
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_directory.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_directory.h
index ed370b000f3..59d5166d5f9 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_directory.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_directory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_factory.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_factory.cpp
index fb74d8f27f9..45b1dc41057 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_factory.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_factory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_factory.h"
#include <vespa/searchlib/attribute/attributefactory.h>
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_factory.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_factory.h
index 21abad1a2a6..ca2a65f77c6 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_factory.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_factory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.cpp
index 4cfa3dd8b13..5c695f7b0f2 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_initializer.h"
#include "attributedisklayout.h"
@@ -8,7 +8,6 @@
#include <vespa/searchcore/proton/common/eventlogger.h>
#include <vespa/vespalib/data/fileheader.h>
#include <vespa/vespalib/stllike/asciistream.h>
-#include <vespa/vespalib/io/fileutil.h>
#include <vespa/searchcommon/attribute/persistent_predicate_params.h>
#include <vespa/searchlib/util/fileutil.h>
#include <vespa/searchlib/attribute/attribute_header.h>
@@ -194,7 +193,7 @@ AttributeInitializer::loadAttribute(const AttributeVectorSP &attr,
assert(attr->hasLoadData());
vespalib::Timer timer;
EventLogger::loadAttributeStart(_documentSubDbName, attr->getName());
- if (!attr->load()) {
+ if (!attr->load(&_executor)) {
LOG(warning, "Could not load attribute vector '%s' from disk. Returning empty attribute vector",
attr->getBaseFileName().c_str());
return false;
@@ -235,12 +234,14 @@ AttributeInitializer::AttributeInitializer(const std::shared_ptr<AttributeDirect
const vespalib::string &documentSubDbName,
const AttributeSpec &spec,
uint64_t currentSerialNum,
- const IAttributeFactory &factory)
+ const IAttributeFactory &factory,
+ vespalib::Executor & executor)
: _attrDir(attrDir),
_documentSubDbName(documentSubDbName),
_spec(spec),
_currentSerialNum(currentSerialNum),
_factory(factory),
+ _executor(executor),
_header(),
_header_ok(false)
{
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.h
index a2277fd8134..7b5d968353a 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -8,6 +8,7 @@
#include <vespa/searchlib/common/serialnum.h>
namespace search::attribute { class AttributeHeader; }
+namespace vespalib { class Executor; }
namespace proton {
@@ -29,6 +30,7 @@ private:
const AttributeSpec _spec;
const uint64_t _currentSerialNum;
const IAttributeFactory &_factory;
+ vespalib::Executor &_executor;
std::unique_ptr<const search::attribute::AttributeHeader> _header;
bool _header_ok;
@@ -45,7 +47,8 @@ private:
public:
AttributeInitializer(const std::shared_ptr<AttributeDirectory> &attrDir, const vespalib::string &documentSubDbName,
- const AttributeSpec &spec, uint64_t currentSerialNum, const IAttributeFactory &factory);
+ const AttributeSpec &spec, uint64_t currentSerialNum, const IAttributeFactory &factory,
+ vespalib::Executor & executor);
~AttributeInitializer();
AttributeInitializerResult init() const;
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer_result.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer_result.cpp
index 37b5ee6623b..26875b23c94 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer_result.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer_result.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_initializer_result.h"
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer_result.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer_result.h
index 74426f18208..528b1eb6812 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer_result.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer_result.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_explorer.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_explorer.cpp
index 4268e12d4e6..b7d6cf9e87a 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_explorer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_explorer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_manager_explorer.h"
#include "attribute_vector_explorer.h"
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_explorer.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_explorer.h
index cb9e7e9ae2d..3d9dbda0cbc 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_explorer.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_explorer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.cpp
index 109a4bb2192..1c730b063f8 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_manager_initializer.h"
#include "attributes_initializer_base.h"
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.h
index f74a0f1519d..5e5361dfff3 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_manager_initializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_populator.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_populator.cpp
index 7c709ca5570..10e8947c38a 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_populator.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_populator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_populator.h"
#include <vespa/searchcore/proton/common/eventlogger.h>
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_populator.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_populator.h
index a0dbb2e4560..6be83fb8220 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_populator.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_populator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_spec.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_spec.cpp
index bee80e77bd6..ffbf5720b4b 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_spec.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_spec.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_spec.h"
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_spec.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_spec.h
index b6d6fc9963b..d56510709b2 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_spec.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_spec.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_transient_memory_calculator.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_transient_memory_calculator.cpp
index 37706328149..686d47f0726 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_transient_memory_calculator.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_transient_memory_calculator.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_transient_memory_calculator.h"
#include <vespa/searchlib/attribute/attribute_header.h>
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_transient_memory_calculator.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_transient_memory_calculator.h
index 34ab8f02768..a756c2ce8e1 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_transient_memory_calculator.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_transient_memory_calculator.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_type_matcher.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_type_matcher.cpp
index c99a6ae9e6e..62daadbeb2f 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_type_matcher.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_type_matcher.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_type_matcher.h"
#include <vespa/searchcommon/attribute/config.h>
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_type_matcher.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_type_matcher.h
index bbe9479083b..98700b1c765 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_type_matcher.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_type_matcher.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_filter.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_filter.cpp
index e19e7976227..32373a8394b 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_filter.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_filter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_usage_filter.h"
#include "i_attribute_usage_listener.h"
@@ -14,38 +14,24 @@ void makeAddressSpaceMessage(std::ostream &os,
os << "{ used: " <<
usage.getUsage().used() << ", dead: " <<
usage.getUsage().dead() << ", limit: " <<
- usage.getUsage().limit() << "}, attributeName: \"" <<
- usage.getAttributeName() << "\", subdb: \"" <<
- usage.getSubDbName() << "\"}";
+ usage.getUsage().limit() << "}, " <<
+ "attributeName: \"" << usage.getAttributeName() << "\", " <<
+ "componentName: \"" << usage.get_component_name() << "\", " <<
+ "subdb: \"" << usage.getSubDbName() << "\"}";
}
-void makeEnumStoreMessage(std::ostream &os,
- double used, double limit,
- const AddressSpaceUsageStats &usage)
+void make_error_message(std::ostream &os,
+ double used, double limit,
+ const AddressSpaceUsageStats &usage)
{
- os << "enumStoreLimitReached: { "
+ os << "addressSpaceLimitReached: { "
"action: \""
"add more content nodes"
"\", "
"reason: \""
- "enum store address space used (" << used << ") > "
+ "max address space in attribute vector components used (" << used << ") > "
"limit (" << limit << ")"
- "\", enumStore: ";
- makeAddressSpaceMessage(os, usage);
-}
-
-void makeMultiValueMessage(std::ostream &os,
- double used, double limit,
- const AddressSpaceUsageStats &usage)
-{
- os << "multiValueLimitReached: { "
- "action: \""
- "add more content nodes"
- "\", "
- "reason: \""
- "multiValue address space used (" << used << ") > "
- "limit (" << limit << ")"
- "\", multiValue: ";
+ "\", addressSpace: ";
makeAddressSpaceMessage(os, usage);
}
@@ -57,20 +43,11 @@ AttributeUsageFilter::recalcState(const Guard &guard)
(void) guard;
bool hasMessage = false;
std::ostringstream message;
- const AddressSpaceUsageStats &enumStoreUsage = _attributeStats.enumStoreUsage();
- double enumStoreUsed = enumStoreUsage.getUsage().usage();
- if (enumStoreUsed > _config._enumStoreLimit) {
+ const auto &max_usage = _attributeStats.max_address_space_usage();
+ double used = max_usage.getUsage().usage();
+ if (used > _config._address_space_limit) {
hasMessage = true;
- makeEnumStoreMessage(message, enumStoreUsed, _config._enumStoreLimit, enumStoreUsage);
- }
- const AddressSpaceUsageStats &multiValueUsage = _attributeStats.multiValueUsage();
- double multiValueUsed = multiValueUsage.getUsage().usage();
- if (multiValueUsed > _config._multiValueLimit) {
- if (hasMessage) {
- message << ", ";
- }
- hasMessage = true;
- makeMultiValueMessage(message, multiValueUsed, _config._multiValueLimit, multiValueUsage);
+ make_error_message(message, used, _config._address_space_limit, max_usage);
}
if (hasMessage) {
_state = State(false, message.str());
@@ -126,20 +103,6 @@ AttributeUsageFilter::set_listener(std::unique_ptr<IAttributeUsageListener> list
_listener = std::move(listener);
}
-double
-AttributeUsageFilter::getEnumStoreUsedRatio() const
-{
- Guard guard(_lock);
- return _attributeStats.enumStoreUsage().getUsage().usage();
-}
-
-double
-AttributeUsageFilter::getMultiValueUsedRatio() const
-{
- Guard guard(_lock);
- return _attributeStats.multiValueUsage().getUsage().usage();
-}
-
bool
AttributeUsageFilter::acceptWriteOperation() const
{
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_filter.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_filter.h
index 45035b40864..1f1a445ff94 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_filter.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_filter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -42,8 +42,6 @@ public:
AttributeUsageStats getAttributeUsageStats() const;
void setConfig(Config config);
void set_listener(std::unique_ptr<IAttributeUsageListener> listener);
- double getEnumStoreUsedRatio() const;
- double getMultiValueUsedRatio() const;
bool acceptWriteOperation() const override;
State getAcceptState() const override;
};
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_filter_config.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_filter_config.h
index 66f85191a0e..a8a1deb5598 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_filter_config.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_filter_config.h
@@ -1,10 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace proton {
-/*
+/**
* Struct representing config for when to filter write operations
* due to attribute resource usage (e.g. enum store and multivalue mapping).
* If resource limit is reached then further writes are denied in
@@ -14,23 +14,18 @@ namespace proton {
*/
struct AttributeUsageFilterConfig
{
- double _enumStoreLimit;
- double _multiValueLimit;
+ double _address_space_limit;
AttributeUsageFilterConfig() noexcept
- : _enumStoreLimit(1.0),
- _multiValueLimit(1.0)
- { }
+ : _address_space_limit(1.0)
+ {}
- AttributeUsageFilterConfig(double enumStoreLimit_in,
- double multiValueLimit_in) noexcept
- : _enumStoreLimit(enumStoreLimit_in),
- _multiValueLimit(multiValueLimit_in)
- { }
+ AttributeUsageFilterConfig(double address_space_limit) noexcept
+ : _address_space_limit(address_space_limit)
+ {}
bool operator==(const AttributeUsageFilterConfig &rhs) const noexcept {
- return ((_enumStoreLimit == rhs._enumStoreLimit) &&
- (_multiValueLimit == rhs._multiValueLimit));
+ return (_address_space_limit == rhs._address_space_limit);
}
};
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_sampler_context.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_sampler_context.cpp
index c299581835d..08432916d2b 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_sampler_context.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_sampler_context.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_usage_sampler_context.h"
#include "attribute_usage_filter.h"
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_sampler_context.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_sampler_context.h
index becff58fdd7..71cdc0e7f1a 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_sampler_context.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_sampler_context.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_sampler_functor.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_sampler_functor.cpp
index 685433cd5c7..6db20ab82a6 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_sampler_functor.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_sampler_functor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_usage_sampler_functor.h"
#include "attribute_usage_sampler_context.h"
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_sampler_functor.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_sampler_functor.h
index 93746165a24..963bd758494 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_sampler_functor.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_sampler_functor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_stats.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_stats.cpp
index f3da5486d3e..79a7a2ec45c 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_stats.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_stats.cpp
@@ -1,30 +1,34 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_usage_stats.h"
+#include <vespa/searchlib/attribute/address_space_components.h>
#include <iostream>
+using search::AddressSpaceComponents;
+
namespace proton {
AttributeUsageStats::AttributeUsageStats()
- : _enumStoreUsage(search::AddressSpaceUsage::defaultEnumStoreUsage()),
- _multiValueUsage(search::AddressSpaceUsage::defaultMultiValueUsage())
+ : _max_usage(vespalib::AddressSpace())
{
}
+AttributeUsageStats::~AttributeUsageStats() = default;
+
void
AttributeUsageStats::merge(const search::AddressSpaceUsage &usage,
const vespalib::string &attributeName,
const vespalib::string &subDbName)
{
- _enumStoreUsage.merge(usage.enumStoreUsage(), attributeName, subDbName);
- _multiValueUsage.merge(usage.multiValueUsage(), attributeName, subDbName);
+ for (const auto& entry : usage.get_all()) {
+ _max_usage.merge(entry.second, attributeName, entry.first, subDbName);
+ }
}
std::ostream&
operator<<(std::ostream& out, const AttributeUsageStats& rhs)
{
- out << "{enum_store=" << rhs.enumStoreUsage() <<
- ", multi_value=" << rhs.multiValueUsage() << "}";
+ out << "{max_address_space_usage=" << rhs.max_address_space_usage() << "}";
return out;
}
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_stats.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_stats.h
index 1eb6a9cc6be..6c8f670331a 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_stats.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_usage_stats.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -8,27 +8,24 @@
namespace proton {
/**
- * Class representing aggregated attribute usage, with info about
- * the most bloated attributes with regards to enum store and
- * multivalue mapping.
+ * Class representing aggregated max address space usage
+ * among components in attributes vectors in all sub databases.
*/
class AttributeUsageStats
{
- AddressSpaceUsageStats _enumStoreUsage;
- AddressSpaceUsageStats _multiValueUsage;
+ AddressSpaceUsageStats _max_usage;
public:
AttributeUsageStats();
+ ~AttributeUsageStats();
void merge(const search::AddressSpaceUsage &usage,
const vespalib::string &attributeName,
const vespalib::string &subDbName);
- const AddressSpaceUsageStats& enumStoreUsage() const { return _enumStoreUsage; }
- const AddressSpaceUsageStats& multiValueUsage() const { return _multiValueUsage; }
+ const AddressSpaceUsageStats& max_address_space_usage() const { return _max_usage; }
bool operator==(const AttributeUsageStats& rhs) const {
- return (_enumStoreUsage == rhs._enumStoreUsage) &&
- (_multiValueUsage == rhs._multiValueUsage);
+ return (_max_usage == rhs._max_usage);
}
};
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_vector_explorer.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_vector_explorer.cpp
index 2ffe3f2c901..eeb8cafb859 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_vector_explorer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_vector_explorer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_vector_explorer.h"
#include <vespa/searchlib/attribute/i_enum_store.h>
@@ -63,8 +63,9 @@ convertAddressSpaceToSlime(const AddressSpace &addressSpace, Cursor &object)
void
convertAddressSpaceUsageToSlime(const AddressSpaceUsage &usage, Cursor &object)
{
- convertAddressSpaceToSlime(usage.enumStoreUsage(), object.setObject("enumStore"));
- convertAddressSpaceToSlime(usage.multiValueUsage(), object.setObject("multiValue"));
+ for (const auto& entry : usage.get_all()) {
+ convertAddressSpaceToSlime(entry.second, object.setObject(entry.first));
+ }
}
void
@@ -158,6 +159,8 @@ AttributeVectorExplorer::get_state(const vespalib::slime::Inserter &inserter, bo
object.setLong("numDocs", status.getNumDocs());
object.setLong("lastSerialNum", status.getLastSyncToken());
object.setLong("allocatedMemory", status.getAllocated());
+ object.setLong("usedMemory", status.getUsed());
+ object.setLong("onHoldMemory", status.getOnHold());
object.setLong("committedDocIdLimit", attr.getCommittedDocIdLimit());
}
}
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_vector_explorer.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_vector_explorer.h
index 6ce78fe87de..f0ad134d2f4 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_vector_explorer.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_vector_explorer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp
index 218a37139bb..8069190ab17 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_writer.h"
#include "attributemanager.h"
@@ -7,13 +7,14 @@
#include <vespa/document/base/exceptions.h>
#include <vespa/document/datatype/documenttype.h>
#include <vespa/document/fieldvalue/document.h>
+#include <vespa/document/update/assignvalueupdate.h>
+#include <vespa/searchcommon/attribute/attribute_utils.h>
#include <vespa/searchcore/proton/attribute/imported_attributes_repo.h>
#include <vespa/searchcore/proton/common/attribute_updater.h>
#include <vespa/searchlib/attribute/imported_attribute_vector.h>
-#include <vespa/vespalib/util/idestructorcallback.h>
#include <vespa/searchlib/tensor/prepare_result.h>
-#include <vespa/searchcommon/attribute/attribute_utils.h>
#include <vespa/vespalib/stllike/hash_map.hpp>
+#include <vespa/vespalib/util/idestructorcallback.h>
#include <vespa/vespalib/util/threadexecutor.h>
#include <future>
@@ -114,6 +115,21 @@ AttributeWriter::WriteContext::buildFieldPaths(const DocumentType &docType)
}
}
+AttributeWriter::AttributeWithInfo::AttributeWithInfo()
+ : attribute(),
+ executor_id(),
+ use_two_phase_put_for_assign_updates(false)
+{
+}
+
+AttributeWriter::AttributeWithInfo::AttributeWithInfo(search::AttributeVector* attribute_in,
+ ExecutorId executor_id_in)
+ : attribute(attribute_in),
+ executor_id(executor_id_in),
+ use_two_phase_put_for_assign_updates(use_two_phase_put_for_attribute(*attribute_in))
+{
+}
+
namespace {
void
@@ -340,10 +356,14 @@ private:
std::promise<std::unique_ptr<PrepareResult>> _result_promise;
public:
- PreparePutTask(SerialNum serial_num_in,
- uint32_t docid_in,
+ PreparePutTask(SerialNum serial_num,
+ uint32_t docid,
const AttributeWriter::WriteField& field,
std::shared_ptr<DocumentFieldExtractor> field_extractor);
+ PreparePutTask(SerialNum serial_num,
+ uint32_t docid,
+ AttributeVector& attr,
+ const FieldValue& field_value);
~PreparePutTask() override;
void run() override;
SerialNum serial_num() const { return _serial_num; }
@@ -355,12 +375,12 @@ public:
}
};
-PreparePutTask::PreparePutTask(SerialNum serial_num_in,
- uint32_t docid_in,
+PreparePutTask::PreparePutTask(SerialNum serial_num,
+ uint32_t docid,
const AttributeWriter::WriteField& field,
std::shared_ptr<DocumentFieldExtractor> field_extractor)
- : _serial_num(serial_num_in),
- _docid(docid_in),
+ : _serial_num(serial_num),
+ _docid(docid),
_attr(field.getAttribute()),
_field_value(),
_result_promise()
@@ -370,6 +390,18 @@ PreparePutTask::PreparePutTask(SerialNum serial_num_in,
_field_value.reset(value.release());
}
+PreparePutTask::PreparePutTask(SerialNum serial_num,
+ uint32_t docid,
+ AttributeVector& attr,
+ const FieldValue& field_value)
+ : _serial_num(serial_num),
+ _docid(docid),
+ _attr(attr),
+ _field_value(field_value.clone()),
+ _result_promise()
+{
+}
+
PreparePutTask::~PreparePutTask() = default;
void
@@ -604,13 +636,13 @@ AttributeWriter::AttributeWriter(proton::IAttributeManager::SP mgr)
_attrMap()
{
setupWriteContexts();
- setupAttriuteMapping();
+ setupAttributeMapping();
}
-void AttributeWriter::setupAttriuteMapping() {
+void AttributeWriter::setupAttributeMapping() {
for (auto attr : getWritableAttributes()) {
vespalib::stringref name = attr->getName();
- _attrMap[name] = AttrWithId(attr, _attributeFieldWriter.getExecutorIdFromName(attr->getNamePrefix()));
+ _attrMap[name] = AttributeWithInfo(attr, _attributeFieldWriter.getExecutorIdFromName(attr->getNamePrefix()));
}
}
@@ -664,6 +696,25 @@ AttributeWriter::remove(const LidVector &lidsToRemove, SerialNum serialNum, OnWr
}
}
+namespace {
+
+bool
+is_single_assign_update(const FieldUpdate& update)
+{
+ return (update.getUpdates().size() == 1) &&
+ (update.getUpdates()[0]->getType() == ValueUpdate::Assign) &&
+ (static_cast<const AssignValueUpdate &>(*update.getUpdates()[0]).hasValue());
+}
+
+const FieldValue&
+get_single_assign_update_field_value(const FieldUpdate& update)
+{
+ const auto& assign = static_cast<const AssignValueUpdate &>(*update.getUpdates()[0]);
+ return assign.getValue();
+}
+
+}
+
void
AttributeWriter::update(SerialNum serialNum, const DocumentUpdate &upd, DocumentIdT lid,
OnWriteDoneType onWriteDone, IFieldUpdateCallback & onUpdate)
@@ -679,8 +730,8 @@ AttributeWriter::update(SerialNum serialNum, const DocumentUpdate &upd, Document
for (const auto &fupd : upd.getUpdates()) {
LOG(debug, "Retrieving guard for attribute vector '%s'.", fupd.getField().getName().data());
- auto found = _attrMap.find(fupd.getField().getName());
- AttributeVector * attrp = (found != _attrMap.end()) ? found->second.first : nullptr;
+ auto itr = _attrMap.find(fupd.getField().getName());
+ AttributeVector * attrp = (itr != _attrMap.end()) ? itr->second.attribute : nullptr;
onUpdate.onUpdateField(fupd.getField().getName(), attrp);
if (__builtin_expect(attrp == nullptr, false)) {
LOG(spam, "Failed to find attribute vector %s", fupd.getField().getName().data());
@@ -688,10 +739,21 @@ AttributeWriter::update(SerialNum serialNum, const DocumentUpdate &upd, Document
}
// TODO: Check if we must use > due to multiple entries for same
// document and attribute.
- if (__builtin_expect(attrp->getStatus().getLastSyncToken() >= serialNum, false))
+ if (__builtin_expect(attrp->getStatus().getLastSyncToken() >= serialNum, false)) {
continue;
- args[found->second.second.getId()]->_updates.emplace_back(attrp, &fupd);
- LOG(debug, "About to apply update for docId %u in attribute vector '%s'.", lid, attrp->getName().c_str());
+ }
+ if (itr->second.use_two_phase_put_for_assign_updates &&
+ is_single_assign_update(fupd)) {
+ auto prepare_task = std::make_unique<PreparePutTask>(serialNum, lid, *attrp, get_single_assign_update_field_value(fupd));
+ auto complete_task = std::make_unique<CompletePutTask>(*prepare_task, onWriteDone);
+ LOG(debug, "About to handle assign update as two phase put for docid %u in attribute vector '%s'",
+ lid, attrp->getName().c_str());
+ _shared_executor.execute(std::move(prepare_task));
+ _attributeFieldWriter.executeTask(itr->second.executor_id, std::move(complete_task));
+ } else {
+ args[itr->second.executor_id.getId()]->_updates.emplace_back(attrp, &fupd);
+ LOG(debug, "About to apply update for docId %u in attribute vector '%s'.", lid, attrp->getName().c_str());
+ }
}
// NOTE: The lifetime of the field update will be ensured by keeping the document update alive
// in a operation done context object.
@@ -708,8 +770,8 @@ void
AttributeWriter::heartBeat(SerialNum serialNum)
{
for (auto entry : _attrMap) {
- _attributeFieldWriter.execute(entry.second.second,
- [serialNum, attr=entry.second.first]()
+ _attributeFieldWriter.execute(entry.second.executor_id,
+ [serialNum, attr=entry.second.attribute]()
{ applyHeartBeat(serialNum, *attr); });
}
}
@@ -737,8 +799,8 @@ void
AttributeWriter::onReplayDone(uint32_t docIdLimit)
{
for (auto entry : _attrMap) {
- _attributeFieldWriter.execute(entry.second.second,
- [docIdLimit, attr = entry.second.first]()
+ _attributeFieldWriter.execute(entry.second.executor_id,
+ [docIdLimit, attr = entry.second.attribute]()
{ applyReplayDone(docIdLimit, *attr); });
}
_attributeFieldWriter.sync();
@@ -749,8 +811,8 @@ void
AttributeWriter::compactLidSpace(uint32_t wantedLidLimit, SerialNum serialNum)
{
for (auto entry : _attrMap) {
- _attributeFieldWriter.execute(entry.second.second,
- [wantedLidLimit, serialNum, attr=entry.second.first]()
+ _attributeFieldWriter.execute(entry.second.executor_id,
+ [wantedLidLimit, serialNum, attr=entry.second.attribute]()
{ applyCompactLidSpace(wantedLidLimit, serialNum, *attr); });
}
_attributeFieldWriter.sync();
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.h
index 1c55f53aa5e..7605b130689 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_attribute_manager.h"
@@ -67,16 +67,25 @@ public:
bool hasStructFieldAttribute() const { return _hasStructFieldAttribute; }
bool use_two_phase_put() const { return _use_two_phase_put; }
};
+
+ struct AttributeWithInfo {
+ search::AttributeVector* attribute;
+ ExecutorId executor_id;
+ bool use_two_phase_put_for_assign_updates;
+
+ AttributeWithInfo();
+ AttributeWithInfo(search::AttributeVector* attribute_in,
+ ExecutorId executor_id_in);
+ };
private:
- using AttrWithId = std::pair<search::AttributeVector *, ExecutorId>;
- using AttrMap = vespalib::hash_map<vespalib::string, AttrWithId>;
+ using AttrMap = vespalib::hash_map<vespalib::string, AttributeWithInfo>;
std::vector<WriteContext> _writeContexts;
const DataType *_dataType;
bool _hasStructFieldAttribute;
AttrMap _attrMap;
void setupWriteContexts();
- void setupAttriuteMapping();
+ void setupAttributeMapping();
void buildFieldPaths(const DocumentType &docType, const DataType *dataType);
void internalPut(SerialNum serialNum, const Document &doc, DocumentIdT lid,
bool allAttributes, OnWriteDoneType onWriteDone);
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attributedisklayout.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attributedisklayout.cpp
index 246caa6cd35..acde52681ad 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attributedisklayout.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attributedisklayout.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributedisklayout.h"
#include "attribute_directory.h"
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attributedisklayout.h b/searchcore/src/vespa/searchcore/proton/attribute/attributedisklayout.h
index 16d74c6ea09..2654ae3b5dc 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attributedisklayout.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attributedisklayout.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp
index f635ee34a04..1c5fa0892de 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_factory.h"
#include "attribute_directory.h"
@@ -19,7 +19,7 @@
#include <vespa/vespalib/util/isequencedtaskexecutor.h>
#include <vespa/searchlib/common/threaded_compactable_lid_space.h>
#include <vespa/searchlib/attribute/attributevector.h>
-#include <vespa/vespalib/io/fileutil.h>
+#include <vespa/vespalib/util/threadexecutor.h>
#include <vespa/vespalib/stllike/hash_map.hpp>
#include <vespa/vespalib/util/exceptions.h>
@@ -120,7 +120,7 @@ AttributeManager::internalAddAttribute(const AttributeSpec &spec,
uint64_t serialNum,
const IAttributeFactory &factory)
{
- AttributeInitializer initializer(_diskLayout->createAttributeDir(spec.getName()), _documentSubDbName, spec, serialNum, factory);
+ AttributeInitializer initializer(_diskLayout->createAttributeDir(spec.getName()), _documentSubDbName, spec, serialNum, factory, _shared_executor);
AttributeInitializerResult result = initializer.init();
if (result) {
result.getAttribute()->setInterlock(_interlock);
@@ -196,9 +196,9 @@ AttributeManager::addNewAttributes(const Spec &newSpec,
LOG(debug, "Creating initializer for attribute vector '%s': docIdLimit=%u, serialNumber=%" PRIu64,
aspec.getName().c_str(), newSpec.getDocIdLimit(), newSpec.getCurrentSerialNum());
- AttributeInitializer::UP initializer =
- std::make_unique<AttributeInitializer>(_diskLayout->createAttributeDir(aspec.getName()), _documentSubDbName,
- aspec, newSpec.getCurrentSerialNum(), *_factory);
+ auto initializer = std::make_unique<AttributeInitializer>(_diskLayout->createAttributeDir(aspec.getName()),
+ _documentSubDbName, aspec, newSpec.getCurrentSerialNum(),
+ *_factory, _shared_executor);
initializerRegistry.add(std::move(initializer));
// TODO: Might want to use hardlinks to make attribute vector
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h b/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h
index 10c017c84d3..64f0418c299 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attributes_initializer_base.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attributes_initializer_base.cpp
index 4f605e52cc5..cc330bc205c 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attributes_initializer_base.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attributes_initializer_base.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributes_initializer_base.h"
#include "attributemanager.h"
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attributes_initializer_base.h b/searchcore/src/vespa/searchcore/proton/attribute/attributes_initializer_base.h
index 1e54b8eb9c5..f249cf637dd 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attributes_initializer_base.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attributes_initializer_base.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attributesconfigscout.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attributesconfigscout.cpp
index 7f6d47f4ae2..7439421ea59 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attributesconfigscout.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attributesconfigscout.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributesconfigscout.h"
#include "attribute_type_matcher.h"
@@ -28,6 +28,7 @@ AttributesConfigScout::adjust(AttributesConfig::Attribute &attr,
attr.enableonlybitvector = liveAttr.enableonlybitvector;
attr.fastsearch = liveAttr.fastsearch;
attr.huge = liveAttr.huge;
+ attr.paged = liveAttr.paged;
// Note: Predicate attributes only handle changes for the dense-posting-list-threshold config.
attr.densepostinglistthreshold = liveAttr.densepostinglistthreshold;
attr.distancemetric = liveAttr.distancemetric;
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attributesconfigscout.h b/searchcore/src/vespa/searchcore/proton/attribute/attributesconfigscout.h
index 759680aaf9b..a0db26273a5 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attributesconfigscout.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attributesconfigscout.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/document_field_extractor.cpp b/searchcore/src/vespa/searchcore/proton/attribute/document_field_extractor.cpp
index bbd2221f631..1c779be18be 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/document_field_extractor.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/document_field_extractor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_field_extractor.h"
#include <vespa/document/datatype/arraydatatype.h>
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/document_field_extractor.h b/searchcore/src/vespa/searchcore/proton/attribute/document_field_extractor.h
index b9543bd87c8..0c948ee57e8 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/document_field_extractor.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/document_field_extractor.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/stllike/string.h>
#include <vespa/vespalib/stllike/hash_map.h>
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/document_field_populator.cpp b/searchcore/src/vespa/searchcore/proton/attribute/document_field_populator.cpp
index 0b49fecc79b..2ef146c298f 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/document_field_populator.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/document_field_populator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_field_populator.h"
#include "document_field_retriever.h"
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/document_field_populator.h b/searchcore/src/vespa/searchcore/proton/attribute/document_field_populator.h
index 625b7869735..ef6e3de97f2 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/document_field_populator.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/document_field_populator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/document_field_retriever.cpp b/searchcore/src/vespa/searchcore/proton/attribute/document_field_retriever.cpp
index c470b7e909c..4a220c790c9 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/document_field_retriever.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/document_field_retriever.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_field_retriever.h"
#include <vespa/document/fieldvalue/arrayfieldvalue.h>
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/document_field_retriever.h b/searchcore/src/vespa/searchcore/proton/attribute/document_field_retriever.h
index e80bd2b9d99..858f2f7a364 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/document_field_retriever.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/document_field_retriever.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/exclusive_attribute_read_accessor.cpp b/searchcore/src/vespa/searchcore/proton/attribute/exclusive_attribute_read_accessor.cpp
index 16f06bdde93..ed72418ced4 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/exclusive_attribute_read_accessor.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/exclusive_attribute_read_accessor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "exclusive_attribute_read_accessor.h"
#include <vespa/vespalib/util/gate.h>
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/exclusive_attribute_read_accessor.h b/searchcore/src/vespa/searchcore/proton/attribute/exclusive_attribute_read_accessor.h
index 233d42b2194..aa756764b1a 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/exclusive_attribute_read_accessor.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/exclusive_attribute_read_accessor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/filter_attribute_manager.cpp b/searchcore/src/vespa/searchcore/proton/attribute/filter_attribute_manager.cpp
index ffdfdbc4332..07bc1c638b5 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/filter_attribute_manager.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/filter_attribute_manager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "filter_attribute_manager.h"
#include <vespa/vespalib/util/isequencedtaskexecutor.h>
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/filter_attribute_manager.h b/searchcore/src/vespa/searchcore/proton/attribute/filter_attribute_manager.h
index 0b478a34144..9d09aef8faf 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/filter_attribute_manager.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/filter_attribute_manager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/flushableattribute.cpp b/searchcore/src/vespa/searchcore/proton/attribute/flushableattribute.cpp
index d9d269f1e91..d074025dc32 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/flushableattribute.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/flushableattribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributedisklayout.h"
#include "flushableattribute.h"
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/flushableattribute.h b/searchcore/src/vespa/searchcore/proton/attribute/flushableattribute.h
index c6654392372..e1054a19b6c 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/flushableattribute.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/flushableattribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_factory.h b/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_factory.h
index 012ddaae9a5..858bd64d095 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_factory.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_factory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_initializer_registry.h b/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_initializer_registry.h
index b9cb3ceb645..34bcd1755e9 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_initializer_registry.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_initializer_registry.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_manager.h b/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_manager.h
index 883fa43dbf4..65796fd4c74 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_manager.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_manager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_usage_listener.h b/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_usage_listener.h
index 6c7ae1248b8..a973ad57ecd 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_usage_listener.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_usage_listener.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_writer.h b/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_writer.h
index bb13893db39..1e959a4fb77 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_writer.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/i_attribute_writer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_attribute_manager.h"
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/ifieldupdatecallback.h b/searchcore/src/vespa/searchcore/proton/attribute/ifieldupdatecallback.h
index ffb8555cd2c..d8872607b44 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/ifieldupdatecallback.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/ifieldupdatecallback.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/imported_attributes_context.cpp b/searchcore/src/vespa/searchcore/proton/attribute/imported_attributes_context.cpp
index 3890b5f12e3..0069a61b818 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/imported_attributes_context.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/imported_attributes_context.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "imported_attributes_context.h"
#include "imported_attributes_repo.h"
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/imported_attributes_context.h b/searchcore/src/vespa/searchcore/proton/attribute/imported_attributes_context.h
index a82096f0e30..4b7058fdb83 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/imported_attributes_context.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/imported_attributes_context.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcommon/attribute/iattributecontext.h>
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/imported_attributes_repo.cpp b/searchcore/src/vespa/searchcore/proton/attribute/imported_attributes_repo.cpp
index d1050db4d68..fa10606299c 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/imported_attributes_repo.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/imported_attributes_repo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "imported_attributes_repo.h"
#include <vespa/searchlib/attribute/imported_attribute_vector.h>
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/imported_attributes_repo.h b/searchcore/src/vespa/searchcore/proton/attribute/imported_attributes_repo.h
index 19645e809a8..4e250b0ff5e 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/imported_attributes_repo.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/imported_attributes_repo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/hash_map.h>
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/initialized_attributes_result.cpp b/searchcore/src/vespa/searchcore/proton/attribute/initialized_attributes_result.cpp
index 3db029a95fd..b8b2a57ff9b 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/initialized_attributes_result.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/initialized_attributes_result.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "initialized_attributes_result.h"
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/initialized_attributes_result.h b/searchcore/src/vespa/searchcore/proton/attribute/initialized_attributes_result.h
index f3ba75fd9b4..fee821aec86 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/initialized_attributes_result.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/initialized_attributes_result.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/sequential_attributes_initializer.cpp b/searchcore/src/vespa/searchcore/proton/attribute/sequential_attributes_initializer.cpp
index 00bedf41c5c..287875fd5ed 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/sequential_attributes_initializer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/sequential_attributes_initializer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sequential_attributes_initializer.h"
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/sequential_attributes_initializer.h b/searchcore/src/vespa/searchcore/proton/attribute/sequential_attributes_initializer.h
index 87d78523107..3bf21bc2cd0 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/sequential_attributes_initializer.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/sequential_attributes_initializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/bucketdb/CMakeLists.txt
index 66a58ad66a3..810fe53236d 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcore_bucketdb STATIC
SOURCES
bucket_create_notifier.cpp
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_create_notifier.cpp b/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_create_notifier.cpp
index 1b988add03c..f9dac2ebe71 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_create_notifier.cpp
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_create_notifier.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucket_create_notifier.h"
#include "i_bucket_create_listener.h"
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_create_notifier.h b/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_create_notifier.h
index 4f6fe86e6c6..9d30ee9c82b 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_create_notifier.h
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_create_notifier.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_db_explorer.cpp b/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_db_explorer.cpp
index b1a24f567b1..b68892be60f 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_db_explorer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_db_explorer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucket_db_explorer.h"
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_db_explorer.h b/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_db_explorer.h
index 86babc38af4..898a8579255 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_db_explorer.h
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_db_explorer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_db_owner.cpp b/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_db_owner.cpp
index 503083502b3..ccec69691dc 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_db_owner.cpp
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_db_owner.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucket_db_owner.h"
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_db_owner.h b/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_db_owner.h
index d6bfdba8e72..2ad13576601 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_db_owner.h
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/bucket_db_owner.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdb.cpp b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdb.cpp
index 47cfef239fa..998da6b5789 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdb.cpp
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdb.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketdb.h"
#include <cassert>
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdb.h b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdb.h
index e6848d095df..1723609e48e 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdb.h
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdb.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdbhandler.cpp b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdbhandler.cpp
index e8ea924ffbf..ac3c5823147 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdbhandler.cpp
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdbhandler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketdbhandler.h"
#include "splitbucketsession.h"
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdbhandler.h b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdbhandler.h
index 1d1e304224d..2a423eaa213 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdbhandler.h
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdbhandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdeltapair.h b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdeltapair.h
index 04c189a733e..afdf274ca90 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdeltapair.h
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdeltapair.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketscaniterator.cpp b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketscaniterator.cpp
index 5d323be8f90..d535d7cd7da 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketscaniterator.cpp
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketscaniterator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketscaniterator.h"
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketscaniterator.h b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketscaniterator.h
index fe8c246fafe..2d5b71c8b29 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketscaniterator.h
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketscaniterator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketsessionbase.cpp b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketsessionbase.cpp
index 81ce49b5b69..3ad632625a4 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketsessionbase.cpp
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketsessionbase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketsessionbase.h"
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketsessionbase.h b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketsessionbase.h
index 97f0d5c3df9..cc1b2be6ada 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketsessionbase.h
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketsessionbase.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketstate.cpp b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketstate.cpp
index 0eb9c27d9cf..e041f9991fe 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketstate.cpp
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketstate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketstate.h"
#include "checksumaggregators.h"
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketstate.h b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketstate.h
index 7f16500fad0..53d57e27509 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketstate.h
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketstate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/i_bucket_create_listener.h b/searchcore/src/vespa/searchcore/proton/bucketdb/i_bucket_create_listener.h
index 53a5b02f2e3..86a2ecf4a26 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/i_bucket_create_listener.h
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/i_bucket_create_listener.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/i_bucket_create_notifier.h b/searchcore/src/vespa/searchcore/proton/bucketdb/i_bucket_create_notifier.h
index c0a0e586d2a..4ccd6a383e4 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/i_bucket_create_notifier.h
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/i_bucket_create_notifier.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/ibucketdbhandler.h b/searchcore/src/vespa/searchcore/proton/bucketdb/ibucketdbhandler.h
index 9743d86804c..fd027f64ca2 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/ibucketdbhandler.h
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/ibucketdbhandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/ibucketdbhandlerinitializer.h b/searchcore/src/vespa/searchcore/proton/bucketdb/ibucketdbhandlerinitializer.h
index 981f174e9c9..2a425630cd8 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/ibucketdbhandlerinitializer.h
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/ibucketdbhandlerinitializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/joinbucketssession.cpp b/searchcore/src/vespa/searchcore/proton/bucketdb/joinbucketssession.cpp
index 657e6a6a9bb..fd6daea56a6 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/joinbucketssession.cpp
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/joinbucketssession.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "joinbucketssession.h"
#include "bucketdeltapair.h"
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/joinbucketssession.h b/searchcore/src/vespa/searchcore/proton/bucketdb/joinbucketssession.h
index 9ef89992a9c..06e1d33ec4e 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/joinbucketssession.h
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/joinbucketssession.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/splitbucketsession.cpp b/searchcore/src/vespa/searchcore/proton/bucketdb/splitbucketsession.cpp
index cd2503553a0..9a4b869ba06 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/splitbucketsession.cpp
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/splitbucketsession.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "splitbucketsession.h"
#include "bucketdeltapair.h"
diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/splitbucketsession.h b/searchcore/src/vespa/searchcore/proton/bucketdb/splitbucketsession.h
index cc631b71ec4..3d8e0143a14 100644
--- a/searchcore/src/vespa/searchcore/proton/bucketdb/splitbucketsession.h
+++ b/searchcore/src/vespa/searchcore/proton/bucketdb/splitbucketsession.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/common/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/common/CMakeLists.txt
index 9838b598df9..07d749d8c4f 100644
--- a/searchcore/src/vespa/searchcore/proton/common/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/proton/common/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcore_pcommon STATIC
SOURCES
alloc_config.cpp
diff --git a/searchcore/src/vespa/searchcore/proton/common/alloc_config.cpp b/searchcore/src/vespa/searchcore/proton/common/alloc_config.cpp
index 1611d00fb0f..3664f67f8fb 100644
--- a/searchcore/src/vespa/searchcore/proton/common/alloc_config.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/alloc_config.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "alloc_config.h"
#include <vespa/searchcore/proton/common/subdbtype.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/alloc_config.h b/searchcore/src/vespa/searchcore/proton/common/alloc_config.h
index 25b953b9871..4eb604edb49 100644
--- a/searchcore/src/vespa/searchcore/proton/common/alloc_config.h
+++ b/searchcore/src/vespa/searchcore/proton/common/alloc_config.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/common/alloc_strategy.cpp b/searchcore/src/vespa/searchcore/proton/common/alloc_strategy.cpp
index 3af72757ccb..cbe8309b031 100644
--- a/searchcore/src/vespa/searchcore/proton/common/alloc_strategy.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/alloc_strategy.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "alloc_strategy.h"
#include <iostream>
diff --git a/searchcore/src/vespa/searchcore/proton/common/alloc_strategy.h b/searchcore/src/vespa/searchcore/proton/common/alloc_strategy.h
index 74bcc1772ee..4771a8637cd 100644
--- a/searchcore/src/vespa/searchcore/proton/common/alloc_strategy.h
+++ b/searchcore/src/vespa/searchcore/proton/common/alloc_strategy.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/common/attribute_updater.cpp b/searchcore/src/vespa/searchcore/proton/common/attribute_updater.cpp
index 4d12fdfcf5b..9c7b4bbb4b7 100644
--- a/searchcore/src/vespa/searchcore/proton/common/attribute_updater.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/attribute_updater.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_updater.h"
#include <vespa/document/base/forcelink.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/attribute_updater.h b/searchcore/src/vespa/searchcore/proton/common/attribute_updater.h
index 32d14f6dd5a..43b5f9e8477 100644
--- a/searchcore/src/vespa/searchcore/proton/common/attribute_updater.h
+++ b/searchcore/src/vespa/searchcore/proton/common/attribute_updater.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/fieldvalue/fieldvalue.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/attributefieldvaluenode.cpp b/searchcore/src/vespa/searchcore/proton/common/attributefieldvaluenode.cpp
index c516bbfc06c..87e9faa4fe2 100644
--- a/searchcore/src/vespa/searchcore/proton/common/attributefieldvaluenode.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/attributefieldvaluenode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributefieldvaluenode.h"
#include "selectcontext.h"
diff --git a/searchcore/src/vespa/searchcore/proton/common/attributefieldvaluenode.h b/searchcore/src/vespa/searchcore/proton/common/attributefieldvaluenode.h
index 89d1dac321b..bbb237d62c0 100644
--- a/searchcore/src/vespa/searchcore/proton/common/attributefieldvaluenode.h
+++ b/searchcore/src/vespa/searchcore/proton/common/attributefieldvaluenode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/select/valuenodes.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/cachedselect.cpp b/searchcore/src/vespa/searchcore/proton/common/cachedselect.cpp
index 21f757fba79..342975c7e9f 100644
--- a/searchcore/src/vespa/searchcore/proton/common/cachedselect.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/cachedselect.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributefieldvaluenode.h"
#include "cachedselect.h"
diff --git a/searchcore/src/vespa/searchcore/proton/common/cachedselect.h b/searchcore/src/vespa/searchcore/proton/common/cachedselect.h
index 563eed75c32..7ed21eea68c 100644
--- a/searchcore/src/vespa/searchcore/proton/common/cachedselect.h
+++ b/searchcore/src/vespa/searchcore/proton/common/cachedselect.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/select/resultset.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/commit_time_tracker.cpp b/searchcore/src/vespa/searchcore/proton/common/commit_time_tracker.cpp
index f6bac549691..5b25d4d124e 100644
--- a/searchcore/src/vespa/searchcore/proton/common/commit_time_tracker.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/commit_time_tracker.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "commit_time_tracker.h"
diff --git a/searchcore/src/vespa/searchcore/proton/common/commit_time_tracker.h b/searchcore/src/vespa/searchcore/proton/common/commit_time_tracker.h
index c5fdbc7bda2..f65d5b0bad3 100644
--- a/searchcore/src/vespa/searchcore/proton/common/commit_time_tracker.h
+++ b/searchcore/src/vespa/searchcore/proton/common/commit_time_tracker.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/time.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/config_hash.h b/searchcore/src/vespa/searchcore/proton/common/config_hash.h
index bec86a3d239..95b987f6fda 100644
--- a/searchcore/src/vespa/searchcore/proton/common/config_hash.h
+++ b/searchcore/src/vespa/searchcore/proton/common/config_hash.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/common/config_hash.hpp b/searchcore/src/vespa/searchcore/proton/common/config_hash.hpp
index 84e5a632c09..ceedc48d22f 100644
--- a/searchcore/src/vespa/searchcore/proton/common/config_hash.hpp
+++ b/searchcore/src/vespa/searchcore/proton/common/config_hash.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/common/dbdocumentid.cpp b/searchcore/src/vespa/searchcore/proton/common/dbdocumentid.cpp
index b8908d7b09e..773f5f72449 100644
--- a/searchcore/src/vespa/searchcore/proton/common/dbdocumentid.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/dbdocumentid.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dbdocumentid.h"
diff --git a/searchcore/src/vespa/searchcore/proton/common/dbdocumentid.h b/searchcore/src/vespa/searchcore/proton/common/dbdocumentid.h
index d6f0b5b7e8f..394953ea7ea 100644
--- a/searchcore/src/vespa/searchcore/proton/common/dbdocumentid.h
+++ b/searchcore/src/vespa/searchcore/proton/common/dbdocumentid.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/query/base.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/docid_limit.h b/searchcore/src/vespa/searchcore/proton/common/docid_limit.h
index 18a03d3ab36..2a1d72dd438 100644
--- a/searchcore/src/vespa/searchcore/proton/common/docid_limit.h
+++ b/searchcore/src/vespa/searchcore/proton/common/docid_limit.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <atomic>
diff --git a/searchcore/src/vespa/searchcore/proton/common/doctypename.cpp b/searchcore/src/vespa/searchcore/proton/common/doctypename.cpp
index 4d76018d66b..5a3eed04a60 100644
--- a/searchcore/src/vespa/searchcore/proton/common/doctypename.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/doctypename.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "doctypename.h"
#include <vespa/searchlib/engine/request.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/doctypename.h b/searchcore/src/vespa/searchcore/proton/common/doctypename.h
index f0fa3c72ee9..f0e3efbc5a1 100644
--- a/searchcore/src/vespa/searchcore/proton/common/doctypename.h
+++ b/searchcore/src/vespa/searchcore/proton/common/doctypename.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/document_type_inspector.cpp b/searchcore/src/vespa/searchcore/proton/common/document_type_inspector.cpp
index e19fa5351c2..69f5d35c382 100644
--- a/searchcore/src/vespa/searchcore/proton/common/document_type_inspector.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/document_type_inspector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_type_inspector.h"
#include <vespa/document/base/exceptions.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/document_type_inspector.h b/searchcore/src/vespa/searchcore/proton/common/document_type_inspector.h
index ddaff4a48e8..c38333d1303 100644
--- a/searchcore/src/vespa/searchcore/proton/common/document_type_inspector.h
+++ b/searchcore/src/vespa/searchcore/proton/common/document_type_inspector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/common/eventlogger.cpp b/searchcore/src/vespa/searchcore/proton/common/eventlogger.cpp
index 20b87f4bc63..149d1cc6429 100644
--- a/searchcore/src/vespa/searchcore/proton/common/eventlogger.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/eventlogger.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "eventlogger.h"
#include <vespa/searchlib/util/logutil.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/eventlogger.h b/searchcore/src/vespa/searchcore/proton/common/eventlogger.h
index 7d32c777f98..d0cb002dd4d 100644
--- a/searchcore/src/vespa/searchcore/proton/common/eventlogger.h
+++ b/searchcore/src/vespa/searchcore/proton/common/eventlogger.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/common/serialnum.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/feeddebugger.cpp b/searchcore/src/vespa/searchcore/proton/common/feeddebugger.cpp
index 73f909c115c..e86392bc7e4 100644
--- a/searchcore/src/vespa/searchcore/proton/common/feeddebugger.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/feeddebugger.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "feeddebugger.h"
#include <vespa/vespalib/text/stringtokenizer.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/feeddebugger.h b/searchcore/src/vespa/searchcore/proton/common/feeddebugger.h
index 5c582157174..41915cbceae 100644
--- a/searchcore/src/vespa/searchcore/proton/common/feeddebugger.h
+++ b/searchcore/src/vespa/searchcore/proton/common/feeddebugger.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/common/feedtoken.cpp b/searchcore/src/vespa/searchcore/proton/common/feedtoken.cpp
index 251989cd263..675dce10be4 100644
--- a/searchcore/src/vespa/searchcore/proton/common/feedtoken.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/feedtoken.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "feedtoken.h"
#include <vespa/persistence/spi/result.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/feedtoken.h b/searchcore/src/vespa/searchcore/proton/common/feedtoken.h
index 7823462fdb8..e75c16ddef6 100644
--- a/searchcore/src/vespa/searchcore/proton/common/feedtoken.h
+++ b/searchcore/src/vespa/searchcore/proton/common/feedtoken.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/idestructorcallback.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/handlermap.hpp b/searchcore/src/vespa/searchcore/proton/common/handlermap.hpp
index cb147878147..4e78bf04df6 100644
--- a/searchcore/src/vespa/searchcore/proton/common/handlermap.hpp
+++ b/searchcore/src/vespa/searchcore/proton/common/handlermap.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "doctypename.h"
diff --git a/searchcore/src/vespa/searchcore/proton/common/hw_info.h b/searchcore/src/vespa/searchcore/proton/common/hw_info.h
index d742a300d22..6856f9924ec 100644
--- a/searchcore/src/vespa/searchcore/proton/common/hw_info.h
+++ b/searchcore/src/vespa/searchcore/proton/common/hw_info.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/common/hw_info_sampler.cpp b/searchcore/src/vespa/searchcore/proton/common/hw_info_sampler.cpp
index 5627b27bb32..2f0db6083c7 100644
--- a/searchcore/src/vespa/searchcore/proton/common/hw_info_sampler.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/hw_info_sampler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "hw_info_sampler.h"
#include <vespa/config/config.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/hw_info_sampler.h b/searchcore/src/vespa/searchcore/proton/common/hw_info_sampler.h
index 3570ba1b87f..07c1a333607 100644
--- a/searchcore/src/vespa/searchcore/proton/common/hw_info_sampler.h
+++ b/searchcore/src/vespa/searchcore/proton/common/hw_info_sampler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/common/i_document_type_inspector.h b/searchcore/src/vespa/searchcore/proton/common/i_document_type_inspector.h
index c9fa2cce834..d4491db02b0 100644
--- a/searchcore/src/vespa/searchcore/proton/common/i_document_type_inspector.h
+++ b/searchcore/src/vespa/searchcore/proton/common/i_document_type_inspector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/common/i_indexschema_inspector.h b/searchcore/src/vespa/searchcore/proton/common/i_indexschema_inspector.h
index 8c1357ffdee..09d59bc128d 100644
--- a/searchcore/src/vespa/searchcore/proton/common/i_indexschema_inspector.h
+++ b/searchcore/src/vespa/searchcore/proton/common/i_indexschema_inspector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/common/i_transient_resource_usage_provider.h b/searchcore/src/vespa/searchcore/proton/common/i_transient_resource_usage_provider.h
index 035a2b19d6d..fd50f46241c 100644
--- a/searchcore/src/vespa/searchcore/proton/common/i_transient_resource_usage_provider.h
+++ b/searchcore/src/vespa/searchcore/proton/common/i_transient_resource_usage_provider.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/common/indexschema_inspector.cpp b/searchcore/src/vespa/searchcore/proton/common/indexschema_inspector.cpp
index e34ee7bb19f..a59b386f269 100644
--- a/searchcore/src/vespa/searchcore/proton/common/indexschema_inspector.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/indexschema_inspector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "indexschema_inspector.h"
#include <vespa/config-indexschema.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/indexschema_inspector.h b/searchcore/src/vespa/searchcore/proton/common/indexschema_inspector.h
index 27def104170..f52093ac43c 100644
--- a/searchcore/src/vespa/searchcore/proton/common/indexschema_inspector.h
+++ b/searchcore/src/vespa/searchcore/proton/common/indexschema_inspector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/common/ipendinglidtracker.cpp b/searchcore/src/vespa/searchcore/proton/common/ipendinglidtracker.cpp
index d6cc9bf27d2..dd7d1a79877 100644
--- a/searchcore/src/vespa/searchcore/proton/common/ipendinglidtracker.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/ipendinglidtracker.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "ipendinglidtracker.h"
diff --git a/searchcore/src/vespa/searchcore/proton/common/ipendinglidtracker.h b/searchcore/src/vespa/searchcore/proton/common/ipendinglidtracker.h
index 7ea7b8412e8..ae5636d8c2a 100644
--- a/searchcore/src/vespa/searchcore/proton/common/ipendinglidtracker.h
+++ b/searchcore/src/vespa/searchcore/proton/common/ipendinglidtracker.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdint>
diff --git a/searchcore/src/vespa/searchcore/proton/common/monitored_refcount.cpp b/searchcore/src/vespa/searchcore/proton/common/monitored_refcount.cpp
index 6b35528318a..97615abba31 100644
--- a/searchcore/src/vespa/searchcore/proton/common/monitored_refcount.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/monitored_refcount.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "monitored_refcount.h"
#include <cassert>
diff --git a/searchcore/src/vespa/searchcore/proton/common/monitored_refcount.h b/searchcore/src/vespa/searchcore/proton/common/monitored_refcount.h
index 3559278c70f..9eb713b1220 100644
--- a/searchcore/src/vespa/searchcore/proton/common/monitored_refcount.h
+++ b/searchcore/src/vespa/searchcore/proton/common/monitored_refcount.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <mutex>
diff --git a/searchcore/src/vespa/searchcore/proton/common/operation_rate_tracker.cpp b/searchcore/src/vespa/searchcore/proton/common/operation_rate_tracker.cpp
index 487102cebf6..ea3c332c5a6 100644
--- a/searchcore/src/vespa/searchcore/proton/common/operation_rate_tracker.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/operation_rate_tracker.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "operation_rate_tracker.h"
diff --git a/searchcore/src/vespa/searchcore/proton/common/operation_rate_tracker.h b/searchcore/src/vespa/searchcore/proton/common/operation_rate_tracker.h
index 7f7526faa5d..09d26f02f4e 100644
--- a/searchcore/src/vespa/searchcore/proton/common/operation_rate_tracker.h
+++ b/searchcore/src/vespa/searchcore/proton/common/operation_rate_tracker.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/common/pendinglidtracker.cpp b/searchcore/src/vespa/searchcore/proton/common/pendinglidtracker.cpp
index 1f1045bb67b..42472425f39 100644
--- a/searchcore/src/vespa/searchcore/proton/common/pendinglidtracker.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/pendinglidtracker.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "pendinglidtracker.h"
#include <cassert>
diff --git a/searchcore/src/vespa/searchcore/proton/common/pendinglidtracker.h b/searchcore/src/vespa/searchcore/proton/common/pendinglidtracker.h
index aa4cb648ce9..4770ae928d7 100644
--- a/searchcore/src/vespa/searchcore/proton/common/pendinglidtracker.h
+++ b/searchcore/src/vespa/searchcore/proton/common/pendinglidtracker.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/common/select_utils.cpp b/searchcore/src/vespa/searchcore/proton/common/select_utils.cpp
index 148c4ae9a46..8fe6579e31a 100644
--- a/searchcore/src/vespa/searchcore/proton/common/select_utils.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/select_utils.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "select_utils.h"
#include <vespa/document/select/valuenodes.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/select_utils.h b/searchcore/src/vespa/searchcore/proton/common/select_utils.h
index 62ba377d46a..29e83e75aa2 100644
--- a/searchcore/src/vespa/searchcore/proton/common/select_utils.h
+++ b/searchcore/src/vespa/searchcore/proton/common/select_utils.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/selectcontext.cpp b/searchcore/src/vespa/searchcore/proton/common/selectcontext.cpp
index ee713e19385..f37c0b8b182 100644
--- a/searchcore/src/vespa/searchcore/proton/common/selectcontext.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/selectcontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "selectcontext.h"
#include "cachedselect.h"
diff --git a/searchcore/src/vespa/searchcore/proton/common/selectcontext.h b/searchcore/src/vespa/searchcore/proton/common/selectcontext.h
index 4dd9f873088..19e0659f72e 100644
--- a/searchcore/src/vespa/searchcore/proton/common/selectcontext.h
+++ b/searchcore/src/vespa/searchcore/proton/common/selectcontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/select/context.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/selectpruner.cpp b/searchcore/src/vespa/searchcore/proton/common/selectpruner.cpp
index 21c05137ad5..c3a8e951278 100644
--- a/searchcore/src/vespa/searchcore/proton/common/selectpruner.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/selectpruner.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "select_utils.h"
#include "selectpruner.h"
diff --git a/searchcore/src/vespa/searchcore/proton/common/selectpruner.h b/searchcore/src/vespa/searchcore/proton/common/selectpruner.h
index 2c3729006c3..3b3b6202b72 100644
--- a/searchcore/src/vespa/searchcore/proton/common/selectpruner.h
+++ b/searchcore/src/vespa/searchcore/proton/common/selectpruner.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/select/node.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/state_reporter_utils.cpp b/searchcore/src/vespa/searchcore/proton/common/state_reporter_utils.cpp
index b422b4e7866..a0fd3f786a0 100644
--- a/searchcore/src/vespa/searchcore/proton/common/state_reporter_utils.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/state_reporter_utils.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "state_reporter_utils.h"
#include <vespa/vespalib/data/slime/cursor.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/state_reporter_utils.h b/searchcore/src/vespa/searchcore/proton/common/state_reporter_utils.h
index 9cf2c0016f4..eb32e5cd8cf 100644
--- a/searchcore/src/vespa/searchcore/proton/common/state_reporter_utils.h
+++ b/searchcore/src/vespa/searchcore/proton/common/state_reporter_utils.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/common/statusreport.cpp b/searchcore/src/vespa/searchcore/proton/common/statusreport.cpp
index e0d6eb71a10..fa9e8a19392 100644
--- a/searchcore/src/vespa/searchcore/proton/common/statusreport.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/statusreport.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "statusreport.h"
diff --git a/searchcore/src/vespa/searchcore/proton/common/statusreport.h b/searchcore/src/vespa/searchcore/proton/common/statusreport.h
index c7d36cb4759..70481222edf 100644
--- a/searchcore/src/vespa/searchcore/proton/common/statusreport.h
+++ b/searchcore/src/vespa/searchcore/proton/common/statusreport.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/searchcore/src/vespa/searchcore/proton/common/subdbtype.h b/searchcore/src/vespa/searchcore/proton/common/subdbtype.h
index fa8dfb06fe8..9f3021c616b 100644
--- a/searchcore/src/vespa/searchcore/proton/common/subdbtype.h
+++ b/searchcore/src/vespa/searchcore/proton/common/subdbtype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/common/transient_resource_usage_provider.cpp b/searchcore/src/vespa/searchcore/proton/common/transient_resource_usage_provider.cpp
index 7643b82855d..0d338cad9df 100644
--- a/searchcore/src/vespa/searchcore/proton/common/transient_resource_usage_provider.cpp
+++ b/searchcore/src/vespa/searchcore/proton/common/transient_resource_usage_provider.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "transient_resource_usage_provider.h"
diff --git a/searchcore/src/vespa/searchcore/proton/common/transient_resource_usage_provider.h b/searchcore/src/vespa/searchcore/proton/common/transient_resource_usage_provider.h
index 556c874caed..205e95d9fa6 100644
--- a/searchcore/src/vespa/searchcore/proton/common/transient_resource_usage_provider.h
+++ b/searchcore/src/vespa/searchcore/proton/common/transient_resource_usage_provider.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/create-base.sh b/searchcore/src/vespa/searchcore/proton/create-base.sh
index ac430a48d4b..92d129425a2 100644
--- a/searchcore/src/vespa/searchcore/proton/create-base.sh
+++ b/searchcore/src/vespa/searchcore/proton/create-base.sh
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
module="proton"
if [ $# -lt 1 ]; then
@@ -25,6 +25,6 @@ ns_open="namespace $module {"
ns_close="} // namespace $module"
cat <<EOF
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
EOF
diff --git a/searchcore/src/vespa/searchcore/proton/create-class-cpp.sh b/searchcore/src/vespa/searchcore/proton/create-class-cpp.sh
index f1f18d41390..0cd93d4401b 100755
--- a/searchcore/src/vespa/searchcore/proton/create-class-cpp.sh
+++ b/searchcore/src/vespa/searchcore/proton/create-class-cpp.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
dir=`dirname $0`
. "$dir/create-base.sh"
diff --git a/searchcore/src/vespa/searchcore/proton/create-class-h.sh b/searchcore/src/vespa/searchcore/proton/create-class-h.sh
index e34e5ea5b2f..8eaa33d4914 100644
--- a/searchcore/src/vespa/searchcore/proton/create-class-h.sh
+++ b/searchcore/src/vespa/searchcore/proton/create-class-h.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
dir=`dirname $0`
. "$dir/create-base.sh"
diff --git a/searchcore/src/vespa/searchcore/proton/create-interface.sh b/searchcore/src/vespa/searchcore/proton/create-interface.sh
index 2e9c8073ead..0315406ce34 100644
--- a/searchcore/src/vespa/searchcore/proton/create-interface.sh
+++ b/searchcore/src/vespa/searchcore/proton/create-interface.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
dir=`dirname $0`
. "$dir/create-base.sh"
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/docsummary/CMakeLists.txt
index c8ef8cecc33..f17eae06d6e 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcore_docsummary STATIC
SOURCES
docsumcontext.cpp
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp
index b8d1d2f17e6..319b647685b 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "docsumcontext.h"
#include <vespa/searchcore/proton/matching/matcher.h>
#include <vespa/document/datatype/positiondatatype.h>
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.h b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.h
index d1b656915d9..8d408bc38b2 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.h
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchsummary/docsummary/docsumstate.h>
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/document_store_explorer.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/document_store_explorer.cpp
index 2255bcede48..3dd3c72edf5 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/document_store_explorer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/document_store_explorer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_store_explorer.h"
#include <vespa/vespalib/data/slime/cursor.h>
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/document_store_explorer.h b/searchcore/src/vespa/searchcore/proton/docsummary/document_store_explorer.h
index 5ae2573290a..d3530532c36 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/document_store_explorer.h
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/document_store_explorer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp
index 0d432c069c9..8fb1415cee8 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentstoreadapter.h"
#include <vespa/searchsummary/docsummary/summaryfieldconverter.h>
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.h b/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.h
index 93a1df1dfd6..cef62751339 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.h
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/fieldcache.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/fieldcache.cpp
index 4c76361cf8e..cdf71de2346 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/fieldcache.cpp
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/fieldcache.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fieldcache.h"
#include <vespa/document/fieldvalue/document.h>
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/fieldcache.h b/searchcore/src/vespa/searchcore/proton/docsummary/fieldcache.h
index 65962375f9a..4cb6b3f8ce8 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/fieldcache.h
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/fieldcache.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/fieldcacherepo.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/fieldcacherepo.cpp
index 25fe684b949..84a2379d031 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/fieldcacherepo.cpp
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/fieldcacherepo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fieldcacherepo.h"
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/fieldcacherepo.h b/searchcore/src/vespa/searchcore/proton/docsummary/fieldcacherepo.h
index 187b3283e9d..8844ca0ab46 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/fieldcacherepo.h
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/fieldcacherepo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/isummarymanager.h b/searchcore/src/vespa/searchcore/proton/docsummary/isummarymanager.h
index 83d24e1b92b..d8df368b13e 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/isummarymanager.h
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/isummarymanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchsummary/config/config-juniperrc.h>
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/summarycompacttarget.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/summarycompacttarget.cpp
index 6bda77f97a0..07580817dc9 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/summarycompacttarget.cpp
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/summarycompacttarget.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "summarycompacttarget.h"
#include <vespa/vespalib/util/lambdatask.h>
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/summarycompacttarget.h b/searchcore/src/vespa/searchcore/proton/docsummary/summarycompacttarget.h
index 8efd4c0d3bf..a5f39e953a5 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/summarycompacttarget.h
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/summarycompacttarget.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/docstore/idocumentstore.h>
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/summaryflushtarget.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/summaryflushtarget.cpp
index 8103a28db5f..7f164af7339 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/summaryflushtarget.cpp
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/summaryflushtarget.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "summaryflushtarget.h"
#include <vespa/searchcorespi/index/i_thread_service.h>
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/summaryflushtarget.h b/searchcore/src/vespa/searchcore/proton/docsummary/summaryflushtarget.h
index 4912d99f7f7..99cfa1a2080 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/summaryflushtarget.h
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/summaryflushtarget.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/docstore/idocumentstore.h>
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.cpp
index 60853f765ea..4570151d3eb 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.cpp
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "summarymanager.h"
#include "documentstoreadapter.h"
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.h b/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.h
index f81fdedef83..9bff8723ff6 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.h
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/summarymanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "isummarymanager.h"
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/summarymanagerinitializer.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/summarymanagerinitializer.cpp
index 85c92f0da6b..21506c3014f 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/summarymanagerinitializer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/summarymanagerinitializer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "summarymanagerinitializer.h"
#include <vespa/searchcore/proton/common/eventlogger.h>
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/summarymanagerinitializer.h b/searchcore/src/vespa/searchcore/proton/docsummary/summarymanagerinitializer.h
index 0d2eb01ee8d..7075560ed56 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/summarymanagerinitializer.h
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/summarymanagerinitializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/documentmetastore/CMakeLists.txt
index be298f87cf1..5f288a116b4 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcore_documentmetastore STATIC
SOURCES
document_meta_store_explorer.cpp
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_adapter.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_adapter.h
index 170271c1abe..843a9eaaeaa 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_adapter.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_adapter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_explorer.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_explorer.cpp
index 5f15c229a7e..5a1f0f42507 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_explorer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_explorer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_meta_store_explorer.h"
#include <vespa/vespalib/data/slime/cursor.h>
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_explorer.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_explorer.h
index 5407a671178..e4aa7aec44b 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_explorer.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_explorer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_initializer_result.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_initializer_result.cpp
index 5a7899e7666..16251ec7abf 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_initializer_result.cpp
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_initializer_result.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_meta_store_initializer_result.h"
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_initializer_result.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_initializer_result.h
index f4af5b1a750..22d59e0f8cd 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_initializer_result.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_initializer_result.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_versions.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_versions.h
index 04c2d9bc55a..a1874335901 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_versions.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_versions.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.cpp
index 23481aa416a..6ada497be27 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.cpp
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentmetastore.h"
#include "documentmetastoresaver.h"
@@ -14,15 +14,15 @@
#include <vespa/searchlib/attribute/readerbase.h>
#include <vespa/searchlib/common/i_gid_to_lid_mapper.h>
#include <vespa/searchlib/query/query_term_simple.h>
+#include <vespa/searchlib/util/bufferwriter.h>
#include <vespa/vespalib/btree/btree.hpp>
#include <vespa/vespalib/btree/btreebuilder.hpp>
#include <vespa/vespalib/btree/btreenodeallocator.hpp>
#include <vespa/vespalib/btree/btreenodestore.hpp>
#include <vespa/vespalib/btree/btreeroot.hpp>
-#include <vespa/searchlib/util/bufferwriter.h>
+#include <vespa/vespalib/datastore/buffer_type.hpp>
#include <vespa/vespalib/util/exceptions.h>
#include <vespa/vespalib/util/rcuvector.hpp>
-#include <vespa/vespalib/datastore/buffer_type.hpp>
#include <vespa/log/log.h>
LOG_SETUP(".proton.documentmetastore");
@@ -33,12 +33,12 @@ using proton::bucketdb::BucketState;
using proton::documentmetastore::GidToLidMapKey;
using search::AttributeVector;
using search::FileReader;
+using search::FileWithHeader;
using search::GrowStrategy;
using search::IAttributeSaveTarget;
using search::LidUsageStats;
using search::attribute::LoadUtils;
using search::attribute::SearchContextParams;
-using vespalib::btree::BTreeNoLeafData;
using search::fef::TermFieldMatchData;
using search::queryeval::Blueprint;
using search::queryeval::SearchIterator;
@@ -47,6 +47,7 @@ using vespalib::GenerationHandler;
using vespalib::GenerationHeldBase;
using vespalib::IllegalStateException;
using vespalib::MemoryUsage;
+using vespalib::btree::BTreeNoLeafData;
using vespalib::make_string;
namespace proton {
@@ -58,36 +59,25 @@ vespalib::string VERSION("version");
class Reader {
private:
- std::unique_ptr<FastOS_FileInterface> _datFile;
+ FileWithHeader _datFile;
FileReader<uint32_t> _lidReader;
FileReader<GlobalId> _gidReader;
FileReader<uint8_t> _bucketUsedBitsReader;
FileReader<Timestamp> _timestampReader;
- vespalib::FileHeader _header;
- uint32_t _headerLen;
uint32_t _docIdLimit;
uint32_t _version;
- uint64_t _datFileSize;
public:
Reader(std::unique_ptr<FastOS_FileInterface> datFile)
: _datFile(std::move(datFile)),
- _lidReader(*_datFile),
- _gidReader(*_datFile),
- _bucketUsedBitsReader(*_datFile),
- _timestampReader(*_datFile),
- _header(),
- _headerLen(0u),
- _docIdLimit(0),
- _datFileSize(0u)
+ _lidReader(_datFile.file()),
+ _gidReader(_datFile.file()),
+ _bucketUsedBitsReader(_datFile.file()),
+ _timestampReader(_datFile.file()),
+ _docIdLimit(0)
{
- _headerLen = _header.readFile(*_datFile);
- _datFile->SetPosition(_headerLen);
- if (!search::ReaderBase::extractFileSize(_header, *_datFile, _datFileSize)) {
- LOG_ABORT("should not be reached");
- }
- _docIdLimit = _header.getTag(DOCID_LIMIT).asInteger();
- _version = _header.getTag(VERSION).asInteger();
+ _docIdLimit = _datFile.header().getTag(DOCID_LIMIT).asInteger();
+ _version = _datFile.header().getTag(VERSION).asInteger();
}
uint32_t getDocIdLimit() const { return _docIdLimit; }
@@ -118,14 +108,14 @@ public:
}
uint8_t sizeLow;
uint16_t sizeHigh;
- _datFile->ReadBuf(&sizeLow, sizeof(sizeLow));
- _datFile->ReadBuf(&sizeHigh, sizeof(sizeHigh));
+ _datFile.file().ReadBuf(&sizeLow, sizeof(sizeLow));
+ _datFile.file().ReadBuf(&sizeHigh, sizeof(sizeHigh));
return sizeLow + (static_cast<uint32_t>(sizeHigh) << 8);
}
size_t
getNumElems() const {
- return (_datFileSize - _headerLen) /
+ return _datFile.data_size() /
(sizeof(uint32_t) + sizeof(GlobalId) +
sizeof(uint8_t) + sizeof(Timestamp::Type) +
((_version == NO_DOCUMENT_SIZE_TRACKING_VERSION) ? 0 : 3));
@@ -285,7 +275,7 @@ DocumentMetaStore::readNextDoc(documentmetastore::Reader & reader, TreeType::Bui
}
bool
-DocumentMetaStore::onLoad()
+DocumentMetaStore::onLoad(vespalib::Executor *)
{
documentmetastore::Reader reader(LoadUtils::openDAT(*this));
unload();
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.h
index 9b8fa26f9c7..7c2db260a8a 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastore.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -92,7 +92,7 @@ private:
void onGenerationChange(generation_t generation) override;
void removeOldGenerations(generation_t firstUsed) override;
std::unique_ptr<search::AttributeSaver> onInitSave(vespalib::stringref fileName) override;
- bool onLoad() override;
+ bool onLoad(vespalib::Executor *executor) override;
template <typename TreeView>
typename TreeView::Iterator
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreattribute.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreattribute.cpp
index 6c5dbb8d258..4999c93df8d 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreattribute.cpp
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreattribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentmetastoreattribute.h"
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreattribute.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreattribute.h
index 01b259615d8..1a5f9c0077e 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreattribute.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreattribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastorecontext.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastorecontext.cpp
index 1f83504a284..e27bd8706e9 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastorecontext.cpp
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastorecontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentmetastorecontext.h"
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastorecontext.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastorecontext.h
index 5f5a81ac865..6a07d6566cd 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastorecontext.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastorecontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreflushtarget.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreflushtarget.cpp
index 5e6a9f354f9..6e18575a90a 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreflushtarget.cpp
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreflushtarget.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentmetastoreflushtarget.h"
#include "documentmetastore.h"
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreflushtarget.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreflushtarget.h
index c670279e3fa..17072d28515 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreflushtarget.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreflushtarget.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreinitializer.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreinitializer.cpp
index 06542111f6d..ac8f79a7cb2 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreinitializer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreinitializer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentmetastoreinitializer.h"
#include "documentmetastore.h"
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreinitializer.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreinitializer.h
index 6f313645cb2..811c3087b3b 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreinitializer.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoreinitializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoresaver.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoresaver.cpp
index 9a4054d02ca..0abe88da719 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoresaver.cpp
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoresaver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentmetastoresaver.h"
#include <vespa/searchlib/util/bufferwriter.h>
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoresaver.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoresaver.h
index a11f60af4b6..f0be17540a2 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoresaver.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastoresaver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/gid_to_lid_map_key.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/gid_to_lid_map_key.cpp
index 335aeda89b6..4fc23e6fbf8 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/gid_to_lid_map_key.cpp
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/gid_to_lid_map_key.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "gid_to_lid_map_key.h"
#include <vespa/document/base/globalid.h>
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/gid_to_lid_map_key.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/gid_to_lid_map_key.h
index 6ac8f1e6561..8fd90b3c694 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/gid_to_lid_map_key.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/gid_to_lid_map_key.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/i_bucket_handler.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/i_bucket_handler.h
index 4365e116f10..bb8c860b56e 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/i_bucket_handler.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/i_bucket_handler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/i_document_meta_store.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/i_document_meta_store.h
index f619b6555c9..a03b6325797 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/i_document_meta_store.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/i_document_meta_store.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/i_document_meta_store_context.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/i_document_meta_store_context.h
index df03212683b..6ecc164aed2 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/i_document_meta_store_context.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/i_document_meta_store_context.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/i_simple_document_meta_store.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/i_simple_document_meta_store.h
index a52391122a0..b09bd808517 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/i_simple_document_meta_store.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/i_simple_document_meta_store.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/i_store.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/i_store.h
index 3cdf7ba3a82..a4e9ad893cb 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/i_store.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/i_store.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_allocator.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_allocator.cpp
index 61662f621f1..8a6de305f0e 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_allocator.cpp
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_allocator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "lid_allocator.h"
#include <vespa/searchlib/common/bitvectoriterator.h>
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_allocator.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_allocator.h
index ccf9ef4513e..8c7e9bd0f9c 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_allocator.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_allocator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_gid_key_comparator.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_gid_key_comparator.cpp
index 29caf1ae551..d52e87a0871 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_gid_key_comparator.cpp
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_gid_key_comparator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "lid_gid_key_comparator.h"
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_gid_key_comparator.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_gid_key_comparator.h
index a8a550c7a73..c18224370e1 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_gid_key_comparator.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_gid_key_comparator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_hold_list.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_hold_list.cpp
index b971d3eb430..7157a40c5d5 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_hold_list.cpp
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_hold_list.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "lid_hold_list.h"
#include "lidstatevector.h"
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_hold_list.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_hold_list.h
index ff14f3af3b6..fc32fcb7510 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_hold_list.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_hold_list.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/generationhandler.h>
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/lidreusedelayer.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/lidreusedelayer.cpp
index 61410eed36f..b0027faac1d 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/lidreusedelayer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/lidreusedelayer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "lidreusedelayer.h"
#include "i_store.h"
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/lidreusedelayer.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/lidreusedelayer.h
index 07cfbda1dba..525558e3081 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/lidreusedelayer.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/lidreusedelayer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/lidstatevector.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/lidstatevector.cpp
index 05b1cecd84e..e1b5660f483 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/lidstatevector.cpp
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/lidstatevector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "lidstatevector.h"
#include <cassert>
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/lidstatevector.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/lidstatevector.h
index 53f94896131..13ce5e213f3 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/lidstatevector.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/lidstatevector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/operation_listener.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/operation_listener.h
index 259f1a40c9d..7ad783c0e14 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/operation_listener.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/operation_listener.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/raw_document_meta_data.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/raw_document_meta_data.h
index 51bb8f7f4cc..f83cb7bc062 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/raw_document_meta_data.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/raw_document_meta_data.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/search_context.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/search_context.cpp
index d11a99f561d..34766071af1 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/search_context.cpp
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/search_context.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "search_context.h"
#include <vespa/searchlib/attribute/attributeiterators.h>
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/search_context.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/search_context.h
index 31c520bedf5..3b26c899cba 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/search_context.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/search_context.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/feedoperation/CMakeLists.txt
index 853ca7a0f98..d5e12945a38 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcore_feedoperation STATIC
SOURCES
compact_lid_space_operation.cpp
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/compact_lid_space_operation.cpp b/searchcore/src/vespa/searchcore/proton/feedoperation/compact_lid_space_operation.cpp
index c2a3439388a..2791d1ae893 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/compact_lid_space_operation.cpp
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/compact_lid_space_operation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "compact_lid_space_operation.h"
#include <vespa/vespalib/objects/nbostream.h>
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/compact_lid_space_operation.h b/searchcore/src/vespa/searchcore/proton/feedoperation/compact_lid_space_operation.h
index bfbd98482ca..d73d49eba15 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/compact_lid_space_operation.h
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/compact_lid_space_operation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "feedoperation.h"
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/createbucketoperation.cpp b/searchcore/src/vespa/searchcore/proton/feedoperation/createbucketoperation.cpp
index d653f656192..628191556ab 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/createbucketoperation.cpp
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/createbucketoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "createbucketoperation.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/createbucketoperation.h b/searchcore/src/vespa/searchcore/proton/feedoperation/createbucketoperation.h
index f137f0eedc3..da4e2ff40ea 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/createbucketoperation.h
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/createbucketoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "feedoperation.h"
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/deletebucketoperation.cpp b/searchcore/src/vespa/searchcore/proton/feedoperation/deletebucketoperation.cpp
index 61206f60fa6..120da103ab0 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/deletebucketoperation.cpp
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/deletebucketoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "deletebucketoperation.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/deletebucketoperation.h b/searchcore/src/vespa/searchcore/proton/feedoperation/deletebucketoperation.h
index 42f876ab4df..e22e47c9932 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/deletebucketoperation.h
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/deletebucketoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "removedocumentsoperation.h"
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/documentoperation.cpp b/searchcore/src/vespa/searchcore/proton/feedoperation/documentoperation.cpp
index 1d0affe6a83..6c65d7f22b8 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/documentoperation.cpp
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/documentoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentoperation.h"
#include <vespa/document/base/documentid.h>
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/documentoperation.h b/searchcore/src/vespa/searchcore/proton/feedoperation/documentoperation.h
index 2057f025074..d5086e9394b 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/documentoperation.h
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/documentoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "feedoperation.h"
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/feedoperation.h b/searchcore/src/vespa/searchcore/proton/feedoperation/feedoperation.h
index cc1f012a1a6..393f79e15a7 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/feedoperation.h
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/feedoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/common/serialnum.h>
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/joinbucketsoperation.cpp b/searchcore/src/vespa/searchcore/proton/feedoperation/joinbucketsoperation.cpp
index f789f50b5c5..2d031c1e4ae 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/joinbucketsoperation.cpp
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/joinbucketsoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "joinbucketsoperation.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/joinbucketsoperation.h b/searchcore/src/vespa/searchcore/proton/feedoperation/joinbucketsoperation.h
index 3a6b6acbcf5..4ff430fee3b 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/joinbucketsoperation.h
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/joinbucketsoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "feedoperation.h"
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/lidvectorcontext.cpp b/searchcore/src/vespa/searchcore/proton/feedoperation/lidvectorcontext.cpp
index 1dc823a6b04..a3a180a74df 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/lidvectorcontext.cpp
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/lidvectorcontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "lidvectorcontext.h"
#include <vespa/searchlib/common/bitvector.h>
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/lidvectorcontext.h b/searchcore/src/vespa/searchcore/proton/feedoperation/lidvectorcontext.h
index 7280c382f68..7be03491cbe 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/lidvectorcontext.h
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/lidvectorcontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/query/base.h>
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/moveoperation.cpp b/searchcore/src/vespa/searchcore/proton/feedoperation/moveoperation.cpp
index 4d73d7c993f..4f8511fe2cf 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/moveoperation.cpp
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/moveoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "moveoperation.h"
#include <vespa/document/fieldvalue/document.h>
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/moveoperation.h b/searchcore/src/vespa/searchcore/proton/feedoperation/moveoperation.h
index b21ad6af9de..0304bf9da96 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/moveoperation.h
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/moveoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentoperation.h"
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/newconfigoperation.cpp b/searchcore/src/vespa/searchcore/proton/feedoperation/newconfigoperation.cpp
index de273109edb..9a6030f449c 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/newconfigoperation.cpp
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/newconfigoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "newconfigoperation.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/newconfigoperation.h b/searchcore/src/vespa/searchcore/proton/feedoperation/newconfigoperation.h
index 144aa534bf7..05b14637378 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/newconfigoperation.h
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/newconfigoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "feedoperation.h"
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/noopoperation.cpp b/searchcore/src/vespa/searchcore/proton/feedoperation/noopoperation.cpp
index 0588cdba0cb..1a6f479d617 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/noopoperation.cpp
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/noopoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "noopoperation.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/noopoperation.h b/searchcore/src/vespa/searchcore/proton/feedoperation/noopoperation.h
index d3f3a702783..0bf097906e0 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/noopoperation.h
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/noopoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "feedoperation.h"
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/operations.h b/searchcore/src/vespa/searchcore/proton/feedoperation/operations.h
index 8250ddd8b0e..30a8b11c760 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/operations.h
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/operations.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "compact_lid_space_operation.h"
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/pruneremoveddocumentsoperation.cpp b/searchcore/src/vespa/searchcore/proton/feedoperation/pruneremoveddocumentsoperation.cpp
index 26586da7784..262f882bf3d 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/pruneremoveddocumentsoperation.cpp
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/pruneremoveddocumentsoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "pruneremoveddocumentsoperation.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/pruneremoveddocumentsoperation.h b/searchcore/src/vespa/searchcore/proton/feedoperation/pruneremoveddocumentsoperation.h
index dc10812062e..64e553a8e1e 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/pruneremoveddocumentsoperation.h
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/pruneremoveddocumentsoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "removedocumentsoperation.h"
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/putoperation.cpp b/searchcore/src/vespa/searchcore/proton/feedoperation/putoperation.cpp
index dd001348093..19e85df61e9 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/putoperation.cpp
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/putoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "putoperation.h"
#include <vespa/document/fieldvalue/document.h>
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/putoperation.h b/searchcore/src/vespa/searchcore/proton/feedoperation/putoperation.h
index 5ca6d755e49..effe57636dd 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/putoperation.h
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/putoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentoperation.h"
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/removedocumentsoperation.cpp b/searchcore/src/vespa/searchcore/proton/feedoperation/removedocumentsoperation.cpp
index 14abade84b5..c67dfe2cbc3 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/removedocumentsoperation.cpp
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/removedocumentsoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "removedocumentsoperation.h"
#include <vespa/vespalib/objects/nbostream.h>
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/removedocumentsoperation.h b/searchcore/src/vespa/searchcore/proton/feedoperation/removedocumentsoperation.h
index ad058bb153d..3bbc2934c27 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/removedocumentsoperation.h
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/removedocumentsoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "feedoperation.h"
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/removeoperation.cpp b/searchcore/src/vespa/searchcore/proton/feedoperation/removeoperation.cpp
index c6bdeb08ad5..06ab745ce3e 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/removeoperation.cpp
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/removeoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "removeoperation.h"
#include <cassert>
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/removeoperation.h b/searchcore/src/vespa/searchcore/proton/feedoperation/removeoperation.h
index ea1e62b8651..6c94fd16dc5 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/removeoperation.h
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/removeoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentoperation.h"
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/splitbucketoperation.cpp b/searchcore/src/vespa/searchcore/proton/feedoperation/splitbucketoperation.cpp
index 5f2e49f7aad..fcce6d93eb8 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/splitbucketoperation.cpp
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/splitbucketoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "splitbucketoperation.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/splitbucketoperation.h b/searchcore/src/vespa/searchcore/proton/feedoperation/splitbucketoperation.h
index aedcfab2e22..9393360b2fa 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/splitbucketoperation.h
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/splitbucketoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "feedoperation.h"
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/updateoperation.cpp b/searchcore/src/vespa/searchcore/proton/feedoperation/updateoperation.cpp
index 322e158f5f1..c7c28a5bdc9 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/updateoperation.cpp
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/updateoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "updateoperation.h"
#include <vespa/document/base/exceptions.h>
#include <vespa/document/update/documentupdate.h>
diff --git a/searchcore/src/vespa/searchcore/proton/feedoperation/updateoperation.h b/searchcore/src/vespa/searchcore/proton/feedoperation/updateoperation.h
index 7975452cfc6..64fc6fb0fcd 100644
--- a/searchcore/src/vespa/searchcore/proton/feedoperation/updateoperation.h
+++ b/searchcore/src/vespa/searchcore/proton/feedoperation/updateoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentoperation.h"
diff --git a/searchcore/src/vespa/searchcore/proton/fix_log_setup.rb b/searchcore/src/vespa/searchcore/proton/fix_log_setup.rb
index 10adb438966..e7bb18739f5 100644
--- a/searchcore/src/vespa/searchcore/proton/fix_log_setup.rb
+++ b/searchcore/src/vespa/searchcore/proton/fix_log_setup.rb
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
def log_setup_name(fname)
m = fname.match("(.*)\/(.*)\.cpp")
return ".proton.#{m[1]}.#{m[2]}"
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/flushengine/CMakeLists.txt
index 340007f4513..b506e889a97 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcore_flushengine STATIC
SOURCES
cachedflushtarget.cpp
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/cachedflushtarget.cpp b/searchcore/src/vespa/searchcore/proton/flushengine/cachedflushtarget.cpp
index 0e2688ef986..3947ac1d07d 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/cachedflushtarget.cpp
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/cachedflushtarget.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "cachedflushtarget.h"
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/cachedflushtarget.h b/searchcore/src/vespa/searchcore/proton/flushengine/cachedflushtarget.h
index f2b3514fcf9..1bd51e9ab11 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/cachedflushtarget.h
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/cachedflushtarget.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcorespi/flush/iflushtarget.h>
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/flush_all_strategy.cpp b/searchcore/src/vespa/searchcore/proton/flushengine/flush_all_strategy.cpp
index 914b301b7e2..cad5fb05c9d 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/flush_all_strategy.cpp
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/flush_all_strategy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "flush_all_strategy.h"
#include <algorithm>
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/flush_all_strategy.h b/searchcore/src/vespa/searchcore/proton/flushengine/flush_all_strategy.h
index 25ad9c0a1d5..ac5028b3ab0 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/flush_all_strategy.h
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/flush_all_strategy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "iflushstrategy.h"
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/flush_engine_explorer.cpp b/searchcore/src/vespa/searchcore/proton/flushengine/flush_engine_explorer.cpp
index 1f5ad8ae3a3..da5eeec7e35 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/flush_engine_explorer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/flush_engine_explorer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "flush_engine_explorer.h"
#include "flushengine.h"
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/flush_engine_explorer.h b/searchcore/src/vespa/searchcore/proton/flushengine/flush_engine_explorer.h
index c2a90597ca2..27c3f705dcb 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/flush_engine_explorer.h
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/flush_engine_explorer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/flush_target_candidate.cpp b/searchcore/src/vespa/searchcore/proton/flushengine/flush_target_candidate.cpp
index 6be6d31372a..9a1d0238880 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/flush_target_candidate.cpp
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/flush_target_candidate.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "flush_target_candidate.h"
#include "flushcontext.h"
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/flush_target_candidate.h b/searchcore/src/vespa/searchcore/proton/flushengine/flush_target_candidate.h
index 5920fff6942..d790b6d27f1 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/flush_target_candidate.h
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/flush_target_candidate.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/flush_target_candidates.cpp b/searchcore/src/vespa/searchcore/proton/flushengine/flush_target_candidates.cpp
index f71da453559..03147f6978a 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/flush_target_candidates.cpp
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/flush_target_candidates.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "flush_target_candidates.h"
#include "flush_target_candidate.h"
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/flush_target_candidates.h b/searchcore/src/vespa/searchcore/proton/flushengine/flush_target_candidates.h
index 2979173331c..7a17d4c6504 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/flush_target_candidates.h
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/flush_target_candidates.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "prepare_restart_flush_strategy.h"
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/flushcontext.cpp b/searchcore/src/vespa/searchcore/proton/flushengine/flushcontext.cpp
index ed31317cb69..6ee0ae8e6b9 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/flushcontext.cpp
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/flushcontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "flushcontext.h"
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/flushcontext.h b/searchcore/src/vespa/searchcore/proton/flushengine/flushcontext.h
index 2c380cc28ed..22b3fce3e88 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/flushcontext.h
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/flushcontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "iflushhandler.h"
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/flushengine.cpp b/searchcore/src/vespa/searchcore/proton/flushengine/flushengine.cpp
index 16756af9d01..2b76faa8d7f 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/flushengine.cpp
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/flushengine.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "cachedflushtarget.h"
#include "flush_all_strategy.h"
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/flushengine.h b/searchcore/src/vespa/searchcore/proton/flushengine/flushengine.h
index 8aea546bd14..068d7bd033c 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/flushengine.h
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/flushengine.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "flushcontext.h"
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/flushtargetproxy.cpp b/searchcore/src/vespa/searchcore/proton/flushengine/flushtargetproxy.cpp
index f264555be1a..eb35e2b2eb1 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/flushtargetproxy.cpp
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/flushtargetproxy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "flushtargetproxy.h"
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/flushtargetproxy.h b/searchcore/src/vespa/searchcore/proton/flushengine/flushtargetproxy.h
index 2d0be231adc..0967ca1d6c1 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/flushtargetproxy.h
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/flushtargetproxy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcorespi/flush/iflushtarget.h>
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/flushtask.cpp b/searchcore/src/vespa/searchcore/proton/flushengine/flushtask.cpp
index 2b1bd3b423d..c3ff871735f 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/flushtask.cpp
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/flushtask.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "flushtask.h"
#include "flushengine.h"
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/flushtask.h b/searchcore/src/vespa/searchcore/proton/flushengine/flushtask.h
index fb3474e2a90..a07cd9fae64 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/flushtask.h
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/flushtask.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/i_tls_stats_factory.h b/searchcore/src/vespa/searchcore/proton/flushengine/i_tls_stats_factory.h
index f725332776e..b0cb2268a6c 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/i_tls_stats_factory.h
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/i_tls_stats_factory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "tls_stats.h"
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/iflushhandler.h b/searchcore/src/vespa/searchcore/proton/flushengine/iflushhandler.h
index 66ca730bfbc..6c37476541d 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/iflushhandler.h
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/iflushhandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcorespi/flush/iflushtarget.h>
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/iflushstrategy.h b/searchcore/src/vespa/searchcore/proton/flushengine/iflushstrategy.h
index 8c6a31ff270..6b64870096d 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/iflushstrategy.h
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/iflushstrategy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "iflushhandler.h"
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/prepare_restart_flush_strategy.cpp b/searchcore/src/vespa/searchcore/proton/flushengine/prepare_restart_flush_strategy.cpp
index 21f9c8465b0..028758e3fa2 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/prepare_restart_flush_strategy.cpp
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/prepare_restart_flush_strategy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "prepare_restart_flush_strategy.h"
#include "flush_target_candidates.h"
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/prepare_restart_flush_strategy.h b/searchcore/src/vespa/searchcore/proton/flushengine/prepare_restart_flush_strategy.h
index df5c5a9c569..61336b185d4 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/prepare_restart_flush_strategy.h
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/prepare_restart_flush_strategy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "iflushstrategy.h"
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/shrink_lid_space_flush_target.cpp b/searchcore/src/vespa/searchcore/proton/flushengine/shrink_lid_space_flush_target.cpp
index 45fcd1d19aa..b824f2a7c88 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/shrink_lid_space_flush_target.cpp
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/shrink_lid_space_flush_target.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "shrink_lid_space_flush_target.h"
#include <vespa/searchlib/common/i_compactable_lid_space.h>
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/shrink_lid_space_flush_target.h b/searchcore/src/vespa/searchcore/proton/flushengine/shrink_lid_space_flush_target.h
index ebd8a54004b..e3efbd9b273 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/shrink_lid_space_flush_target.h
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/shrink_lid_space_flush_target.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcorespi/flush/iflushtarget.h>
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/threadedflushtarget.cpp b/searchcore/src/vespa/searchcore/proton/flushengine/threadedflushtarget.cpp
index 3db341ecb70..fb1c8f50fae 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/threadedflushtarget.cpp
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/threadedflushtarget.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "threadedflushtarget.h"
#include <vespa/searchcore/proton/server/igetserialnum.h>
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/threadedflushtarget.h b/searchcore/src/vespa/searchcore/proton/flushengine/threadedflushtarget.h
index d949ffa9c50..888585e8ad6 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/threadedflushtarget.h
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/threadedflushtarget.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "flushtargetproxy.h"
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/tls_stats.h b/searchcore/src/vespa/searchcore/proton/flushengine/tls_stats.h
index d07bbbd7256..618f0517a09 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/tls_stats.h
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/tls_stats.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdint>
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/tls_stats_factory.cpp b/searchcore/src/vespa/searchcore/proton/flushengine/tls_stats_factory.cpp
index 9eddb342253..35321d2baab 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/tls_stats_factory.cpp
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/tls_stats_factory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tls_stats_factory.h"
#include "tls_stats_map.h"
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/tls_stats_factory.h b/searchcore/src/vespa/searchcore/proton/flushengine/tls_stats_factory.h
index 66168269630..d1be97998b8 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/tls_stats_factory.h
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/tls_stats_factory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_tls_stats_factory.h"
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/tls_stats_map.cpp b/searchcore/src/vespa/searchcore/proton/flushengine/tls_stats_map.cpp
index 5a2c5370eb0..6901aae4947 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/tls_stats_map.cpp
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/tls_stats_map.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tls_stats_map.h"
#include <vespa/vespalib/stllike/hash_map.hpp>
diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/tls_stats_map.h b/searchcore/src/vespa/searchcore/proton/flushengine/tls_stats_map.h
index 25aebe3f7bc..4235a890750 100644
--- a/searchcore/src/vespa/searchcore/proton/flushengine/tls_stats_map.h
+++ b/searchcore/src/vespa/searchcore/proton/flushengine/tls_stats_map.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/hash_map.h>
diff --git a/searchcore/src/vespa/searchcore/proton/index/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/index/CMakeLists.txt
index 3be001d091b..7f5ece11366 100644
--- a/searchcore/src/vespa/searchcore/proton/index/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/proton/index/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcore_index STATIC
SOURCES
diskindexwrapper.cpp
diff --git a/searchcore/src/vespa/searchcore/proton/index/diskindexwrapper.cpp b/searchcore/src/vespa/searchcore/proton/index/diskindexwrapper.cpp
index 4cfaac9aac0..83eb92be487 100644
--- a/searchcore/src/vespa/searchcore/proton/index/diskindexwrapper.cpp
+++ b/searchcore/src/vespa/searchcore/proton/index/diskindexwrapper.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "diskindexwrapper.h"
#include <vespa/searchcorespi/index/indexreadutilities.h>
diff --git a/searchcore/src/vespa/searchcore/proton/index/diskindexwrapper.h b/searchcore/src/vespa/searchcore/proton/index/diskindexwrapper.h
index cba29a53b82..0263dedfa08 100644
--- a/searchcore/src/vespa/searchcore/proton/index/diskindexwrapper.h
+++ b/searchcore/src/vespa/searchcore/proton/index/diskindexwrapper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcorespi/index/idiskindex.h>
diff --git a/searchcore/src/vespa/searchcore/proton/index/i_index_writer.h b/searchcore/src/vespa/searchcore/proton/index/i_index_writer.h
index 9dc437e6460..b68af5227e9 100644
--- a/searchcore/src/vespa/searchcore/proton/index/i_index_writer.h
+++ b/searchcore/src/vespa/searchcore/proton/index/i_index_writer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcorespi/index/iindexmanager.h>
diff --git a/searchcore/src/vespa/searchcore/proton/index/index_manager_initializer.cpp b/searchcore/src/vespa/searchcore/proton/index/index_manager_initializer.cpp
index 9f6bd140e54..9e915779d92 100644
--- a/searchcore/src/vespa/searchcore/proton/index/index_manager_initializer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/index/index_manager_initializer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "index_manager_initializer.h"
#include <vespa/vespalib/io/fileutil.h>
diff --git a/searchcore/src/vespa/searchcore/proton/index/index_manager_initializer.h b/searchcore/src/vespa/searchcore/proton/index/index_manager_initializer.h
index c3f01ed8420..a7acfb61d54 100644
--- a/searchcore/src/vespa/searchcore/proton/index/index_manager_initializer.h
+++ b/searchcore/src/vespa/searchcore/proton/index/index_manager_initializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/index/index_writer.cpp b/searchcore/src/vespa/searchcore/proton/index/index_writer.cpp
index 557e751b5a6..0d2f3914400 100644
--- a/searchcore/src/vespa/searchcore/proton/index/index_writer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/index/index_writer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "index_writer.h"
#include <vespa/document/fieldvalue/document.h>
diff --git a/searchcore/src/vespa/searchcore/proton/index/index_writer.h b/searchcore/src/vespa/searchcore/proton/index/index_writer.h
index c231a43e06e..48781fe23cf 100644
--- a/searchcore/src/vespa/searchcore/proton/index/index_writer.h
+++ b/searchcore/src/vespa/searchcore/proton/index/index_writer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_index_writer.h"
diff --git a/searchcore/src/vespa/searchcore/proton/index/indexmanager.cpp b/searchcore/src/vespa/searchcore/proton/index/indexmanager.cpp
index 69790b3dceb..169ba149297 100644
--- a/searchcore/src/vespa/searchcore/proton/index/indexmanager.cpp
+++ b/searchcore/src/vespa/searchcore/proton/index/indexmanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "indexmanager.h"
#include "diskindexwrapper.h"
diff --git a/searchcore/src/vespa/searchcore/proton/index/indexmanager.h b/searchcore/src/vespa/searchcore/proton/index/indexmanager.h
index f74b9074a44..af36e960202 100644
--- a/searchcore/src/vespa/searchcore/proton/index/indexmanager.h
+++ b/searchcore/src/vespa/searchcore/proton/index/indexmanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcorespi/index/iindexmaintaineroperations.h>
diff --git a/searchcore/src/vespa/searchcore/proton/index/memoryindexwrapper.cpp b/searchcore/src/vespa/searchcore/proton/index/memoryindexwrapper.cpp
index 302574704f0..b6153308fe7 100644
--- a/searchcore/src/vespa/searchcore/proton/index/memoryindexwrapper.cpp
+++ b/searchcore/src/vespa/searchcore/proton/index/memoryindexwrapper.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "memoryindexwrapper.h"
#include <vespa/searchcorespi/index/indexsearchablevisitor.h>
diff --git a/searchcore/src/vespa/searchcore/proton/index/memoryindexwrapper.h b/searchcore/src/vespa/searchcore/proton/index/memoryindexwrapper.h
index dfebaff20f3..11898d1a630 100644
--- a/searchcore/src/vespa/searchcore/proton/index/memoryindexwrapper.h
+++ b/searchcore/src/vespa/searchcore/proton/index/memoryindexwrapper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/initializer/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/initializer/CMakeLists.txt
index 81deef1f4ac..a3261db1a8b 100644
--- a/searchcore/src/vespa/searchcore/proton/initializer/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/proton/initializer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcore_initializer STATIC
SOURCES
initializer_task.cpp
diff --git a/searchcore/src/vespa/searchcore/proton/initializer/initializer_task.cpp b/searchcore/src/vespa/searchcore/proton/initializer/initializer_task.cpp
index ff423a2c9ef..b80038391c8 100644
--- a/searchcore/src/vespa/searchcore/proton/initializer/initializer_task.cpp
+++ b/searchcore/src/vespa/searchcore/proton/initializer/initializer_task.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "initializer_task.h"
diff --git a/searchcore/src/vespa/searchcore/proton/initializer/initializer_task.h b/searchcore/src/vespa/searchcore/proton/initializer/initializer_task.h
index 669a55844d6..b6fde9151db 100644
--- a/searchcore/src/vespa/searchcore/proton/initializer/initializer_task.h
+++ b/searchcore/src/vespa/searchcore/proton/initializer/initializer_task.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/searchcore/src/vespa/searchcore/proton/initializer/task_runner.cpp b/searchcore/src/vespa/searchcore/proton/initializer/task_runner.cpp
index 5d72a0fc503..75c89f9adb8 100644
--- a/searchcore/src/vespa/searchcore/proton/initializer/task_runner.cpp
+++ b/searchcore/src/vespa/searchcore/proton/initializer/task_runner.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "task_runner.h"
#include <vespa/vespalib/util/lambdatask.h>
diff --git a/searchcore/src/vespa/searchcore/proton/initializer/task_runner.h b/searchcore/src/vespa/searchcore/proton/initializer/task_runner.h
index bd0d82b0b2c..758281794b0 100644
--- a/searchcore/src/vespa/searchcore/proton/initializer/task_runner.h
+++ b/searchcore/src/vespa/searchcore/proton/initializer/task_runner.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "initializer_task.h"
diff --git a/searchcore/src/vespa/searchcore/proton/matchengine/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/matchengine/CMakeLists.txt
index 7e119c9ba21..095aa28ec8d 100644
--- a/searchcore/src/vespa/searchcore/proton/matchengine/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/proton/matchengine/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcore_matchengine STATIC
SOURCES
matchengine.cpp
diff --git a/searchcore/src/vespa/searchcore/proton/matchengine/matchengine.cpp b/searchcore/src/vespa/searchcore/proton/matchengine/matchengine.cpp
index 513d2630854..3aedd952d1e 100644
--- a/searchcore/src/vespa/searchcore/proton/matchengine/matchengine.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matchengine/matchengine.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "matchengine.h"
#include <vespa/searchcore/proton/common/state_reporter_utils.h>
#include <vespa/searchlib/fef/indexproperties.h>
@@ -115,6 +115,9 @@ MatchEngine::search(search::engine::SearchRequest::Source request,
std::unique_ptr<search::engine::SearchReply>
MatchEngine::performSearch(search::engine::SearchRequest::Source req)
{
+ auto my_issues = std::make_unique<search::UniqueIssues>();
+ auto capture_issues = vespalib::Issue::listen(*my_issues);
+
auto ret = std::make_unique<search::engine::SearchReply>();
const search::engine::SearchRequest * searchRequest = req.get();
@@ -143,6 +146,7 @@ MatchEngine::performSearch(search::engine::SearchRequest::Source req)
_threadBundlePool.release(std::move(threadBundle));
}
ret->request = req.release();
+ ret->my_issues = std::move(my_issues);
ret->setDistributionKey(_distributionKey);
if ((ret->request->trace().getLevel() > 0) && ret->request->trace().hasTrace()) {
ret->request->trace().getRoot().setLong("distribution-key", _distributionKey);
diff --git a/searchcore/src/vespa/searchcore/proton/matchengine/matchengine.h b/searchcore/src/vespa/searchcore/proton/matchengine/matchengine.h
index 39ab95c4bc2..9364fc7b097 100644
--- a/searchcore/src/vespa/searchcore/proton/matchengine/matchengine.h
+++ b/searchcore/src/vespa/searchcore/proton/matchengine/matchengine.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcore/proton/summaryengine/isearchhandler.h>
diff --git a/searchcore/src/vespa/searchcore/proton/matching/.create-overrides.sh b/searchcore/src/vespa/searchcore/proton/matching/.create-overrides.sh
index d19aace1cda..97876ee1f13 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/.create-overrides.sh
+++ b/searchcore/src/vespa/searchcore/proton/matching/.create-overrides.sh
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
ns_open="namespace proton {
namespace matching {"
ns_close="} // namespace proton::matching
diff --git a/searchcore/src/vespa/searchcore/proton/matching/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/matching/CMakeLists.txt
index d83d8ed91d9..5f0017293e7 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/proton/matching/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcore_matching STATIC
SOURCES
attribute_limiter.cpp
diff --git a/searchcore/src/vespa/searchcore/proton/matching/attribute_limiter.cpp b/searchcore/src/vespa/searchcore/proton/matching/attribute_limiter.cpp
index a0841295746..335a3dc70fb 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/attribute_limiter.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/attribute_limiter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_limiter.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchcore/src/vespa/searchcore/proton/matching/attribute_limiter.h b/searchcore/src/vespa/searchcore/proton/matching/attribute_limiter.h
index d7772c6a393..59d32bb997d 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/attribute_limiter.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/attribute_limiter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.cpp b/searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.cpp
index 7149bf9ab7f..0d640f2a599 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "querynodes.h"
#include "blueprintbuilder.h"
diff --git a/searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.h b/searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.h
index 44cd6ffabfd..6c9203ef52c 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/blueprintbuilder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/constant_value_repo.cpp b/searchcore/src/vespa/searchcore/proton/matching/constant_value_repo.cpp
index 5fd164428e7..05448d2c83b 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/constant_value_repo.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/constant_value_repo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "constant_value_repo.h"
diff --git a/searchcore/src/vespa/searchcore/proton/matching/constant_value_repo.h b/searchcore/src/vespa/searchcore/proton/matching/constant_value_repo.h
index f69e7672c74..6bf91616019 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/constant_value_repo.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/constant_value_repo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/docid_range_scheduler.cpp b/searchcore/src/vespa/searchcore/proton/matching/docid_range_scheduler.cpp
index 81557f28100..31ee4f5ce52 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/docid_range_scheduler.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/docid_range_scheduler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "docid_range_scheduler.h"
#include <cassert>
diff --git a/searchcore/src/vespa/searchcore/proton/matching/docid_range_scheduler.h b/searchcore/src/vespa/searchcore/proton/matching/docid_range_scheduler.h
index 8cbcdd7ba6f..f51043e9960 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/docid_range_scheduler.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/docid_range_scheduler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/document_scorer.cpp b/searchcore/src/vespa/searchcore/proton/matching/document_scorer.cpp
index 608e8adf5c2..76c9781d7a5 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/document_scorer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/document_scorer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_scorer.h"
#include <algorithm>
diff --git a/searchcore/src/vespa/searchcore/proton/matching/document_scorer.h b/searchcore/src/vespa/searchcore/proton/matching/document_scorer.h
index 63ee00c3412..b86e285adcb 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/document_scorer.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/document_scorer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/fakesearchcontext.cpp b/searchcore/src/vespa/searchcore/proton/matching/fakesearchcontext.cpp
index 316cf92597e..435b6f718c7 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/fakesearchcontext.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/fakesearchcontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fakesearchcontext.h"
diff --git a/searchcore/src/vespa/searchcore/proton/matching/fakesearchcontext.h b/searchcore/src/vespa/searchcore/proton/matching/fakesearchcontext.h
index d23dd2ac551..254f473c4ae 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/fakesearchcontext.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/fakesearchcontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/handlerecorder.cpp b/searchcore/src/vespa/searchcore/proton/matching/handlerecorder.cpp
index 566d3bae57e..19894e61e50 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/handlerecorder.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/handlerecorder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "handlerecorder.h"
#include <vespa/searchlib/fef/matchdata.h>
diff --git a/searchcore/src/vespa/searchcore/proton/matching/handlerecorder.h b/searchcore/src/vespa/searchcore/proton/matching/handlerecorder.h
index 49399f307dc..a74c1b10ae5 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/handlerecorder.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/handlerecorder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/i_constant_value_repo.h b/searchcore/src/vespa/searchcore/proton/matching/i_constant_value_repo.h
index d71ff82a4a0..3bc2dc642d3 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/i_constant_value_repo.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/i_constant_value_repo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/i_match_loop_communicator.cpp b/searchcore/src/vespa/searchcore/proton/matching/i_match_loop_communicator.cpp
index fe638347e1a..2a4ffc4d1fc 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/i_match_loop_communicator.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/i_match_loop_communicator.cpp
@@ -1,3 +1,3 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "i_match_loop_communicator.h"
diff --git a/searchcore/src/vespa/searchcore/proton/matching/i_match_loop_communicator.h b/searchcore/src/vespa/searchcore/proton/matching/i_match_loop_communicator.h
index c9a4a61f9c5..1f8001e130a 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/i_match_loop_communicator.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/i_match_loop_communicator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/indexenvironment.cpp b/searchcore/src/vespa/searchcore/proton/matching/indexenvironment.cpp
index 5f5cc4dcf76..f13137d182c 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/indexenvironment.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/indexenvironment.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "indexenvironment.h"
diff --git a/searchcore/src/vespa/searchcore/proton/matching/indexenvironment.h b/searchcore/src/vespa/searchcore/proton/matching/indexenvironment.h
index d270825d3f7..ee1b5f2e938 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/indexenvironment.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/indexenvironment.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/isearchcontext.h b/searchcore/src/vespa/searchcore/proton/matching/isearchcontext.h
index dc840dc79ff..354e770f1b4 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/isearchcontext.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/isearchcontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/isessioncachepruner.h b/searchcore/src/vespa/searchcore/proton/matching/isessioncachepruner.h
index a34e7211de7..b20363ee279 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/isessioncachepruner.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/isessioncachepruner.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/match_context.h b/searchcore/src/vespa/searchcore/proton/matching/match_context.h
index eec2041af0f..b292ec744d6 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/match_context.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/match_context.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/match_loop_communicator.cpp b/searchcore/src/vespa/searchcore/proton/matching/match_loop_communicator.cpp
index 4db26f6308a..0328be6e1fc 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/match_loop_communicator.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/match_loop_communicator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "match_loop_communicator.h"
#include <vespa/vespalib/util/priority_queue.h>
diff --git a/searchcore/src/vespa/searchcore/proton/matching/match_loop_communicator.h b/searchcore/src/vespa/searchcore/proton/matching/match_loop_communicator.h
index 42dd82587fa..217fa2db1f5 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/match_loop_communicator.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/match_loop_communicator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/match_master.cpp b/searchcore/src/vespa/searchcore/proton/matching/match_master.cpp
index 6e56d6365ec..26ed94f1d73 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/match_master.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/match_master.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "match_master.h"
#include "docid_range_scheduler.h"
@@ -7,6 +7,7 @@
#include "match_tools.h"
#include <vespa/searchlib/engine/trace.h>
#include <vespa/vespalib/util/thread_bundle.h>
+#include <vespa/vespalib/util/issue.h>
#include <vespa/vespalib/data/slime/inserter.h>
#include <vespa/vespalib/data/slime/inject.h>
#include <vespa/vespalib/data/slime/cursor.h>
@@ -20,6 +21,7 @@ namespace proton::matching {
using namespace search::fef;
using search::queryeval::SearchIterator;
using search::FeatureSet;
+using vespalib::Issue;
namespace {
@@ -100,6 +102,7 @@ MatchMaster::match(search::engine::Trace & trace,
if (inserter && matchThread.getTrace().hasTrace()) {
vespalib::slime::inject(matchThread.getTrace().getRoot(), *inserter);
}
+ matchThread.get_issues().for_each_message([](const auto &msg){ Issue::report(Issue(msg)); });
}
_stats.queryLatency(query_time_s);
_stats.matchTime(match_time_s - rerank_time_s);
diff --git a/searchcore/src/vespa/searchcore/proton/matching/match_master.h b/searchcore/src/vespa/searchcore/proton/matching/match_master.h
index b88963da43c..56033c3cf0f 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/match_master.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/match_master.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/match_params.cpp b/searchcore/src/vespa/searchcore/proton/matching/match_params.cpp
index 132caa8bd62..983e09716c3 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/match_params.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/match_params.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "match_params.h"
#include <algorithm>
diff --git a/searchcore/src/vespa/searchcore/proton/matching/match_params.h b/searchcore/src/vespa/searchcore/proton/matching/match_params.h
index 8590d9640fd..40f33e25914 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/match_params.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/match_params.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/match_phase_limit_calculator.cpp b/searchcore/src/vespa/searchcore/proton/matching/match_phase_limit_calculator.cpp
index 5d7afc7bab1..0748617f837 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/match_phase_limit_calculator.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/match_phase_limit_calculator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "match_phase_limit_calculator.h"
diff --git a/searchcore/src/vespa/searchcore/proton/matching/match_phase_limit_calculator.h b/searchcore/src/vespa/searchcore/proton/matching/match_phase_limit_calculator.h
index a2f4d129010..4ceb6d628aa 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/match_phase_limit_calculator.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/match_phase_limit_calculator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/match_phase_limiter.cpp b/searchcore/src/vespa/searchcore/proton/matching/match_phase_limiter.cpp
index 9a0590da0f2..d23b83282bd 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/match_phase_limiter.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/match_phase_limiter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "match_phase_limiter.h"
#include <vespa/searchlib/queryeval/andsearchstrict.h>
diff --git a/searchcore/src/vespa/searchcore/proton/matching/match_phase_limiter.h b/searchcore/src/vespa/searchcore/proton/matching/match_phase_limiter.h
index 46973092a05..c2d4074540d 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/match_phase_limiter.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/match_phase_limiter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/match_thread.cpp b/searchcore/src/vespa/searchcore/proton/matching/match_thread.cpp
index 2b8f32f2835..8f3b1554e0e 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/match_thread.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/match_thread.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "match_thread.h"
#include "document_scorer.h"
@@ -413,7 +413,8 @@ MatchThread::MatchThread(size_t thread_id_in,
match_time_s(0.0),
wait_time_s(0.0),
match_with_ranking(mtf.has_first_phase_rank() && mp.save_rank_scores()),
- trace(std::make_unique<Trace>(relativeTime, traceLevel))
+ trace(std::make_unique<Trace>(relativeTime, traceLevel)),
+ my_issues()
{
}
@@ -422,6 +423,7 @@ MatchThread::run()
{
vespalib::Timer total_time;
vespalib::Timer match_time(total_time);
+ auto capture_issues = vespalib::Issue::listen(my_issues);
trace->addEvent(4, "Start MatchThread::run");
MatchTools::UP matchTools = matchToolsFactory.createMatchTools();
search::ResultSet::UP result = findMatches(*matchTools);
diff --git a/searchcore/src/vespa/searchcore/proton/matching/match_thread.h b/searchcore/src/vespa/searchcore/proton/matching/match_thread.h
index 66bd8d29c2f..2ef51f71b73 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/match_thread.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/match_thread.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -12,6 +12,7 @@
#include <vespa/vespalib/util/dual_merge_director.h>
#include <vespa/searchlib/common/resultset.h>
#include <vespa/searchlib/common/sortresults.h>
+#include <vespa/searchlib/common/unique_issues.h>
#include <vespa/searchlib/queryeval/hitcollector.h>
#include <vespa/searchlib/fef/featureexecutor.h>
@@ -44,6 +45,7 @@ public:
using Doom = vespalib::Doom;
using Trace = search::engine::Trace;
using RelativeTime = search::engine::RelativeTime;
+ using UniqueIssues = search::UniqueIssues;
private:
size_t thread_id;
@@ -63,6 +65,7 @@ private:
double wait_time_s;
bool match_with_ranking;
std::unique_ptr<Trace> trace;
+ UniqueIssues my_issues;
class Context {
public:
@@ -129,6 +132,7 @@ public:
double get_match_time() const { return match_time_s; }
PartialResult::UP extract_result() { return std::move(resultContext->result); }
const Trace & getTrace() const { return *trace; }
+ const UniqueIssues &get_issues() const { return my_issues; }
};
}
diff --git a/searchcore/src/vespa/searchcore/proton/matching/match_tools.cpp b/searchcore/src/vespa/searchcore/proton/matching/match_tools.cpp
index 55194e51048..6a2e4988b2b 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/match_tools.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/match_tools.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "match_tools.h"
#include "querynodes.h"
@@ -196,8 +196,9 @@ MatchToolsFactory(QueryLimiter & queryLimiter,
_query.fetchPostings();
if (is_search) {
trace.addEvent(5, "MTF: Handle Global Filters");
- double global_filter_limit = GlobalFilterLimit::lookup(rankProperties, rankSetup.get_global_filter_limit());
- _query.handle_global_filters(searchContext.getDocIdLimit(), global_filter_limit);
+ double lower_limit = GlobalFilterLowerLimit::lookup(rankProperties, rankSetup.get_global_filter_lower_limit());
+ double upper_limit = GlobalFilterUpperLimit::lookup(rankProperties, rankSetup.get_global_filter_upper_limit());
+ _query.handle_global_filters(searchContext.getDocIdLimit(), lower_limit, upper_limit);
}
_query.freeze();
trace.addEvent(5, "MTF: prepareSharedState");
diff --git a/searchcore/src/vespa/searchcore/proton/matching/match_tools.h b/searchcore/src/vespa/searchcore/proton/matching/match_tools.h
index 56bf5d19f3a..7ccae2b844e 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/match_tools.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/match_tools.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/matchdatareservevisitor.h b/searchcore/src/vespa/searchcore/proton/matching/matchdatareservevisitor.h
index b7fc87d149d..ee0b4fba183 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/matchdatareservevisitor.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/matchdatareservevisitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/matcher.cpp b/searchcore/src/vespa/searchcore/proton/matching/matcher.cpp
index 806753a6660..dd7e6c2ab8d 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/matcher.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/matcher.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "isearchcontext.h"
#include "match_master.h"
diff --git a/searchcore/src/vespa/searchcore/proton/matching/matcher.h b/searchcore/src/vespa/searchcore/proton/matching/matcher.h
index d40ae9b18f1..62d608279a3 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/matcher.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/matcher.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/matching_stats.cpp b/searchcore/src/vespa/searchcore/proton/matching/matching_stats.cpp
index 8cc98816241..2c826094ddf 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/matching_stats.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/matching_stats.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "matching_stats.h"
#include <cmath>
diff --git a/searchcore/src/vespa/searchcore/proton/matching/matching_stats.h b/searchcore/src/vespa/searchcore/proton/matching/matching_stats.h
index 6b533aab7e5..7cdf8991fb4 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/matching_stats.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/matching_stats.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/onnx_models.cpp b/searchcore/src/vespa/searchcore/proton/matching/onnx_models.cpp
index 43e29e37b62..01cdd904389 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/onnx_models.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/onnx_models.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "onnx_models.h"
#include <assert.h>
diff --git a/searchcore/src/vespa/searchcore/proton/matching/onnx_models.h b/searchcore/src/vespa/searchcore/proton/matching/onnx_models.h
index 65ba524d8fc..4907c42128b 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/onnx_models.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/onnx_models.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/partial_result.cpp b/searchcore/src/vespa/searchcore/proton/matching/partial_result.cpp
index 4a63a088062..6ae97a125ad 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/partial_result.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/partial_result.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "partial_result.h"
diff --git a/searchcore/src/vespa/searchcore/proton/matching/partial_result.h b/searchcore/src/vespa/searchcore/proton/matching/partial_result.h
index ac3c6ab5e0f..f4dc2e31d4d 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/partial_result.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/partial_result.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/query.cpp b/searchcore/src/vespa/searchcore/proton/matching/query.cpp
index 07024950779..c3d15cbec2c 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/query.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/query.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "query.h"
#include "blueprintbuilder.h"
@@ -242,11 +242,17 @@ Query::fetchPostings()
}
void
-Query::handle_global_filters(uint32_t docid_limit, double global_filter_limit)
+Query::handle_global_filters(uint32_t docid_limit, double global_filter_lower_limit, double global_filter_upper_limit)
{
using search::queryeval::GlobalFilter;
double estimated_hit_ratio = _blueprint->getState().hit_ratio(docid_limit);
- if (_blueprint->getState().want_global_filter() && estimated_hit_ratio >= global_filter_limit) {
+ if ( ! _blueprint->getState().want_global_filter()) return;
+
+ LOG(debug, "docid_limit=%d, estimated_hit_ratio=%1.2f, global_filter_lower_limit=%1.2f, global_filter_upper_limit=%1.2f",
+ docid_limit, estimated_hit_ratio, global_filter_lower_limit, global_filter_upper_limit);
+ if (estimated_hit_ratio < global_filter_lower_limit) return;
+
+ if (estimated_hit_ratio <= global_filter_upper_limit) {
auto constraint = Blueprint::FilterConstraint::UPPER_BOUND;
bool strict = true;
auto filter_iterator = _blueprint->createFilterSearch(strict, constraint);
@@ -254,12 +260,15 @@ Query::handle_global_filters(uint32_t docid_limit, double global_filter_limit)
auto white_list = filter_iterator->get_hits(1);
auto global_filter = GlobalFilter::create(std::move(white_list));
_blueprint->set_global_filter(*global_filter);
- // optimized order may change after accounting for global filter:
- _blueprint = Blueprint::optimize(std::move(_blueprint));
- LOG(debug, "blueprint after handle_global_filters:\n%s\n", _blueprint->asString().c_str());
- // strictness may change if optimized order changed:
- fetchPostings();
+ } else {
+ auto no_filter = GlobalFilter::create();
+ _blueprint->set_global_filter(*no_filter);
}
+ // optimized order may change after accounting for global filter:
+ _blueprint = Blueprint::optimize(std::move(_blueprint));
+ LOG(debug, "blueprint after handle_global_filters:\n%s\n", _blueprint->asString().c_str());
+ // strictness may change if optimized order changed:
+ fetchPostings();
}
void
diff --git a/searchcore/src/vespa/searchcore/proton/matching/query.h b/searchcore/src/vespa/searchcore/proton/matching/query.h
index 952b6260da1..eff4371c4bc 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/query.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/query.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -92,7 +92,7 @@ public:
**/
void optimize();
void fetchPostings();
- void handle_global_filters(uint32_t docidLimit, double global_filter_limit);
+ void handle_global_filters(uint32_t docidLimit, double global_filter_lower_limit, double global_filter_upper_limit);
void freeze();
/**
diff --git a/searchcore/src/vespa/searchcore/proton/matching/queryenvironment.cpp b/searchcore/src/vespa/searchcore/proton/matching/queryenvironment.cpp
index 448ce14dd51..b6b0d9d1ca9 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/queryenvironment.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/queryenvironment.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "queryenvironment.h"
#include <vespa/searchlib/index/i_field_length_inspector.h>
diff --git a/searchcore/src/vespa/searchcore/proton/matching/queryenvironment.h b/searchcore/src/vespa/searchcore/proton/matching/queryenvironment.h
index 6daf488297d..eab88624e32 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/queryenvironment.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/queryenvironment.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/querylimiter.cpp b/searchcore/src/vespa/searchcore/proton/matching/querylimiter.cpp
index 37ab0054851..837d1d2c2a9 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/querylimiter.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/querylimiter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "querylimiter.h"
#include <chrono>
diff --git a/searchcore/src/vespa/searchcore/proton/matching/querylimiter.h b/searchcore/src/vespa/searchcore/proton/matching/querylimiter.h
index 576c5921b61..57a0568b57e 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/querylimiter.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/querylimiter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/querynodes.cpp b/searchcore/src/vespa/searchcore/proton/matching/querynodes.cpp
index 5f70d1f638b..5c5ea116844 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/querynodes.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/querynodes.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "querynodes.h"
#include "termdatafromnode.h"
diff --git a/searchcore/src/vespa/searchcore/proton/matching/querynodes.h b/searchcore/src/vespa/searchcore/proton/matching/querynodes.h
index 65a236e4e6e..2ebd52d7fa7 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/querynodes.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/querynodes.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/ranking_constants.cpp b/searchcore/src/vespa/searchcore/proton/matching/ranking_constants.cpp
index bf22d7ab7cb..fbf3020611a 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/ranking_constants.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/ranking_constants.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "ranking_constants.h"
diff --git a/searchcore/src/vespa/searchcore/proton/matching/ranking_constants.h b/searchcore/src/vespa/searchcore/proton/matching/ranking_constants.h
index c479a40b314..bae04c66d1e 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/ranking_constants.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/ranking_constants.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/ranking_expressions.cpp b/searchcore/src/vespa/searchcore/proton/matching/ranking_expressions.cpp
index 49cf08d76c0..3de6fb0cfbf 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/ranking_expressions.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/ranking_expressions.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "ranking_expressions.h"
#include <vespa/vespalib/io/mapped_file_input.h>
@@ -46,7 +46,7 @@ RankingExpressions::loadExpression(const vespalib::string &name) const
auto path = pos->second;
vespalib::MappedFileInput file(path);
if (!file.valid()) {
- LOG(warning, "could not read file: %s", path.c_str());
+ LOG(warning, "rankexpression: %s -> could not read file: %s", name.c_str(), path.c_str());
return {};
}
if (ends_with(path, ".lz4")) {
diff --git a/searchcore/src/vespa/searchcore/proton/matching/ranking_expressions.h b/searchcore/src/vespa/searchcore/proton/matching/ranking_expressions.h
index e1472b03ee0..a8a7a358008 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/ranking_expressions.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/ranking_expressions.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/requestcontext.cpp b/searchcore/src/vespa/searchcore/proton/matching/requestcontext.cpp
index 6ad2f69ae7a..b1bbd0c4b3d 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/requestcontext.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/requestcontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "requestcontext.h"
#include <vespa/eval/eval/fast_value.h>
diff --git a/searchcore/src/vespa/searchcore/proton/matching/requestcontext.h b/searchcore/src/vespa/searchcore/proton/matching/requestcontext.h
index 3c48e40c33c..b9e566c2429 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/requestcontext.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/requestcontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/resolveviewvisitor.cpp b/searchcore/src/vespa/searchcore/proton/matching/resolveviewvisitor.cpp
index b12b48465d9..3a4ee4580e1 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/resolveviewvisitor.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/resolveviewvisitor.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "resolveviewvisitor.h"
#include <vespa/document/datatype/positiondatatype.h>
diff --git a/searchcore/src/vespa/searchcore/proton/matching/resolveviewvisitor.h b/searchcore/src/vespa/searchcore/proton/matching/resolveviewvisitor.h
index f8c1a007c28..a24dcc96b8e 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/resolveviewvisitor.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/resolveviewvisitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/result_processor.cpp b/searchcore/src/vespa/searchcore/proton/matching/result_processor.cpp
index 28fda7428c0..3da0d17895a 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/result_processor.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/result_processor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "result_processor.h"
#include "partial_result.h"
diff --git a/searchcore/src/vespa/searchcore/proton/matching/result_processor.h b/searchcore/src/vespa/searchcore/proton/matching/result_processor.h
index 48a8aecebe1..e0220d53d1a 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/result_processor.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/result_processor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/same_element_builder.cpp b/searchcore/src/vespa/searchcore/proton/matching/same_element_builder.cpp
index 1e5df97a659..a3722c1e3b9 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/same_element_builder.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/same_element_builder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "same_element_builder.h"
#include "querynodes.h"
diff --git a/searchcore/src/vespa/searchcore/proton/matching/same_element_builder.h b/searchcore/src/vespa/searchcore/proton/matching/same_element_builder.h
index c68bdfced99..ece0006049e 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/same_element_builder.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/same_element_builder.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/sameelementmodifier.cpp b/searchcore/src/vespa/searchcore/proton/matching/sameelementmodifier.cpp
index da33d444d99..d8a206cc327 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/sameelementmodifier.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/sameelementmodifier.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sameelementmodifier.h"
#include <vespa/vespalib/util/classname.h>
diff --git a/searchcore/src/vespa/searchcore/proton/matching/sameelementmodifier.h b/searchcore/src/vespa/searchcore/proton/matching/sameelementmodifier.h
index a42e5b83a0b..f3214794cea 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/sameelementmodifier.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/sameelementmodifier.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/search_session.cpp b/searchcore/src/vespa/searchcore/proton/matching/search_session.cpp
index d502a8aba5d..c9b6ddb897f 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/search_session.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/search_session.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "search_session.h"
#include "match_tools.h"
#include "match_context.h"
diff --git a/searchcore/src/vespa/searchcore/proton/matching/search_session.h b/searchcore/src/vespa/searchcore/proton/matching/search_session.h
index 13d24624597..2e0ded7ba01 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/search_session.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/search_session.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/session_manager_explorer.cpp b/searchcore/src/vespa/searchcore/proton/matching/session_manager_explorer.cpp
index faf0cde4491..f09de8be9f2 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/session_manager_explorer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/session_manager_explorer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "session_manager_explorer.h"
#include "sessionmanager.h"
diff --git a/searchcore/src/vespa/searchcore/proton/matching/session_manager_explorer.h b/searchcore/src/vespa/searchcore/proton/matching/session_manager_explorer.h
index b8acfba0342..19034472ea3 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/session_manager_explorer.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/session_manager_explorer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/sessionmanager.cpp b/searchcore/src/vespa/searchcore/proton/matching/sessionmanager.cpp
index a1da4422f77..0eaf7eb9e39 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/sessionmanager.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/sessionmanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sessionmanager.h"
#include <vespa/vespalib/stllike/lrucache_map.hpp>
diff --git a/searchcore/src/vespa/searchcore/proton/matching/sessionmanager.h b/searchcore/src/vespa/searchcore/proton/matching/sessionmanager.h
index 0cff5583bbd..4f319b7ad11 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/sessionmanager.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/sessionmanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "search_session.h"
diff --git a/searchcore/src/vespa/searchcore/proton/matching/termdataextractor.cpp b/searchcore/src/vespa/searchcore/proton/matching/termdataextractor.cpp
index 673355f9354..efddd24c964 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/termdataextractor.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/termdataextractor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "termdataextractor.h"
#include "querynodes.h"
diff --git a/searchcore/src/vespa/searchcore/proton/matching/termdataextractor.h b/searchcore/src/vespa/searchcore/proton/matching/termdataextractor.h
index a6a3eb41e37..58b40e84d9f 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/termdataextractor.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/termdataextractor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/termdatafromnode.cpp b/searchcore/src/vespa/searchcore/proton/matching/termdatafromnode.cpp
index 3184b5cc061..08ec0e767db 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/termdatafromnode.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/termdatafromnode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "termdatafromnode.h"
#include "querynodes.h"
diff --git a/searchcore/src/vespa/searchcore/proton/matching/termdatafromnode.h b/searchcore/src/vespa/searchcore/proton/matching/termdatafromnode.h
index e445dbcfc50..79a39512771 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/termdatafromnode.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/termdatafromnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/matching/viewresolver.cpp b/searchcore/src/vespa/searchcore/proton/matching/viewresolver.cpp
index 87e6c4db12d..73b17c5e6ea 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/viewresolver.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/viewresolver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "viewresolver.h"
#include <vespa/searchcommon/common/schema.h>
diff --git a/searchcore/src/vespa/searchcore/proton/matching/viewresolver.h b/searchcore/src/vespa/searchcore/proton/matching/viewresolver.h
index edff7a696c3..00d4a7b4f33 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/viewresolver.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/viewresolver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/metrics/CMakeLists.txt
index 8a1dd7ea101..43e01420a22 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/proton/metrics/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcore_proton_metrics STATIC
SOURCES
attribute_metrics.cpp
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/attribute_metrics.cpp b/searchcore/src/vespa/searchcore/proton/metrics/attribute_metrics.cpp
index 72172b246d4..ce057249dc0 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/attribute_metrics.cpp
+++ b/searchcore/src/vespa/searchcore/proton/metrics/attribute_metrics.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_metrics.h"
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/attribute_metrics.h b/searchcore/src/vespa/searchcore/proton/metrics/attribute_metrics.h
index f60f676c31c..3745269c8cd 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/attribute_metrics.h
+++ b/searchcore/src/vespa/searchcore/proton/metrics/attribute_metrics.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/content_proton_metrics.cpp b/searchcore/src/vespa/searchcore/proton/metrics/content_proton_metrics.cpp
index 5ea89860307..0db3488dc28 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/content_proton_metrics.cpp
+++ b/searchcore/src/vespa/searchcore/proton/metrics/content_proton_metrics.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "content_proton_metrics.h"
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/content_proton_metrics.h b/searchcore/src/vespa/searchcore/proton/metrics/content_proton_metrics.h
index f99523db534..26629d13569 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/content_proton_metrics.h
+++ b/searchcore/src/vespa/searchcore/proton/metrics/content_proton_metrics.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/documentdb_job_trackers.cpp b/searchcore/src/vespa/searchcore/proton/metrics/documentdb_job_trackers.cpp
index 18475f06fc2..af250b61d03 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/documentdb_job_trackers.cpp
+++ b/searchcore/src/vespa/searchcore/proton/metrics/documentdb_job_trackers.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentdb_job_trackers.h"
#include "job_tracked_flush_target.h"
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/documentdb_job_trackers.h b/searchcore/src/vespa/searchcore/proton/metrics/documentdb_job_trackers.h
index 67f8e6dcacf..a05fbb49a41 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/documentdb_job_trackers.h
+++ b/searchcore/src/vespa/searchcore/proton/metrics/documentdb_job_trackers.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentdb_tagged_metrics.h"
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/documentdb_tagged_metrics.cpp b/searchcore/src/vespa/searchcore/proton/metrics/documentdb_tagged_metrics.cpp
index 713a03810b9..1d947bb003a 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/documentdb_tagged_metrics.cpp
+++ b/searchcore/src/vespa/searchcore/proton/metrics/documentdb_tagged_metrics.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentdb_tagged_metrics.h"
#include <vespa/vespalib/util/stringfmt.h>
@@ -91,11 +91,9 @@ DocumentDBTaggedMetrics::AttributeMetrics::AttributeMetrics(MetricSet *parent)
DocumentDBTaggedMetrics::AttributeMetrics::~AttributeMetrics() = default;
DocumentDBTaggedMetrics::AttributeMetrics::ResourceUsageMetrics::ResourceUsageMetrics(MetricSet *parent)
- : MetricSet("resource_usage", {}, "Usage metrics for various attribute vector resources", parent),
- enumStore("enum_store", {}, "The highest relative amount of enum store address space used among "
- "all enumerated attribute vectors in this document db (value in the range [0, 1])", this),
- multiValue("multi_value", {}, "The highest relative amount of multi-value address space used among "
- "all multi-value attribute vectors in this document db (value in the range [0, 1])", this),
+ : MetricSet("resource_usage", {}, "Metrics for various attribute vector resources usage", parent),
+ address_space("address_space", {}, "The max relative address space used among "
+ "components in all attribute vectors in this document db (value in the range [0, 1])", this),
feedingBlocked("feeding_blocked", {}, "Whether feeding is blocked due to attribute resource limits being reached (value is either 0 or 1)", this)
{
}
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/documentdb_tagged_metrics.h b/searchcore/src/vespa/searchcore/proton/metrics/documentdb_tagged_metrics.h
index 7f2e095a39b..bdedfeea8b9 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/documentdb_tagged_metrics.h
+++ b/searchcore/src/vespa/searchcore/proton/metrics/documentdb_tagged_metrics.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "attribute_metrics.h"
@@ -86,8 +86,7 @@ struct DocumentDBTaggedMetrics : metrics::MetricSet
{
struct ResourceUsageMetrics : metrics::MetricSet
{
- metrics::DoubleValueMetric enumStore;
- metrics::DoubleValueMetric multiValue;
+ metrics::DoubleValueMetric address_space;
metrics::LongValueMetric feedingBlocked;
ResourceUsageMetrics(metrics::MetricSet *parent);
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/executor_metrics.cpp b/searchcore/src/vespa/searchcore/proton/metrics/executor_metrics.cpp
index d4204473578..fa825024878 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/executor_metrics.cpp
+++ b/searchcore/src/vespa/searchcore/proton/metrics/executor_metrics.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "executor_metrics.h"
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/executor_metrics.h b/searchcore/src/vespa/searchcore/proton/metrics/executor_metrics.h
index 6b638391d1e..5f7dfdf45b0 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/executor_metrics.h
+++ b/searchcore/src/vespa/searchcore/proton/metrics/executor_metrics.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/executor_threading_service_metrics.cpp b/searchcore/src/vespa/searchcore/proton/metrics/executor_threading_service_metrics.cpp
index e7c11bd7dd5..030dba4d826 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/executor_threading_service_metrics.cpp
+++ b/searchcore/src/vespa/searchcore/proton/metrics/executor_threading_service_metrics.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "executor_threading_service_metrics.h"
#include "executor_threading_service_stats.h"
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/executor_threading_service_metrics.h b/searchcore/src/vespa/searchcore/proton/metrics/executor_threading_service_metrics.h
index 18326143c65..2edb10220f7 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/executor_threading_service_metrics.h
+++ b/searchcore/src/vespa/searchcore/proton/metrics/executor_threading_service_metrics.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/executor_threading_service_stats.cpp b/searchcore/src/vespa/searchcore/proton/metrics/executor_threading_service_stats.cpp
index 7a1e2213a52..af24dcd976d 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/executor_threading_service_stats.cpp
+++ b/searchcore/src/vespa/searchcore/proton/metrics/executor_threading_service_stats.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "executor_threading_service_stats.h"
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/executor_threading_service_stats.h b/searchcore/src/vespa/searchcore/proton/metrics/executor_threading_service_stats.h
index ea0e989374d..0a113207f65 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/executor_threading_service_stats.h
+++ b/searchcore/src/vespa/searchcore/proton/metrics/executor_threading_service_stats.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstddef>
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/i_job_tracker.h b/searchcore/src/vespa/searchcore/proton/metrics/i_job_tracker.h
index 4e17d47a35e..646a9f07672 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/i_job_tracker.h
+++ b/searchcore/src/vespa/searchcore/proton/metrics/i_job_tracker.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/job_load_sampler.cpp b/searchcore/src/vespa/searchcore/proton/metrics/job_load_sampler.cpp
index 71d7375daff..db5c4f4e8c7 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/job_load_sampler.cpp
+++ b/searchcore/src/vespa/searchcore/proton/metrics/job_load_sampler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "job_load_sampler.h"
#include <cassert>
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/job_load_sampler.h b/searchcore/src/vespa/searchcore/proton/metrics/job_load_sampler.h
index 141a5099f92..f5e0949b41e 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/job_load_sampler.h
+++ b/searchcore/src/vespa/searchcore/proton/metrics/job_load_sampler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/job_tracked_flush_target.cpp b/searchcore/src/vespa/searchcore/proton/metrics/job_tracked_flush_target.cpp
index 1977ec661cb..8de3c29d02b 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/job_tracked_flush_target.cpp
+++ b/searchcore/src/vespa/searchcore/proton/metrics/job_tracked_flush_target.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "job_tracked_flush_target.h"
#include "job_tracked_flush_task.h"
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/job_tracked_flush_target.h b/searchcore/src/vespa/searchcore/proton/metrics/job_tracked_flush_target.h
index b7ed6b6fb1f..7a9bae7f662 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/job_tracked_flush_target.h
+++ b/searchcore/src/vespa/searchcore/proton/metrics/job_tracked_flush_target.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_job_tracker.h"
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/job_tracked_flush_task.cpp b/searchcore/src/vespa/searchcore/proton/metrics/job_tracked_flush_task.cpp
index 80db9f6f40c..f5cf0b1afff 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/job_tracked_flush_task.cpp
+++ b/searchcore/src/vespa/searchcore/proton/metrics/job_tracked_flush_task.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "job_tracked_flush_task.h"
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/job_tracked_flush_task.h b/searchcore/src/vespa/searchcore/proton/metrics/job_tracked_flush_task.h
index 94a109305f7..fe8d59b9dd6 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/job_tracked_flush_task.h
+++ b/searchcore/src/vespa/searchcore/proton/metrics/job_tracked_flush_task.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_job_tracker.h"
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/job_tracker.cpp b/searchcore/src/vespa/searchcore/proton/metrics/job_tracker.cpp
index 6d05ce8c57d..365ca0d93b2 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/job_tracker.cpp
+++ b/searchcore/src/vespa/searchcore/proton/metrics/job_tracker.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "job_tracker.h"
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/job_tracker.h b/searchcore/src/vespa/searchcore/proton/metrics/job_tracker.h
index 50b36af31a5..49b63a6d018 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/job_tracker.h
+++ b/searchcore/src/vespa/searchcore/proton/metrics/job_tracker.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/memory_usage_metrics.h b/searchcore/src/vespa/searchcore/proton/metrics/memory_usage_metrics.h
index e82e55848a5..d264fae7012 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/memory_usage_metrics.h
+++ b/searchcore/src/vespa/searchcore/proton/metrics/memory_usage_metrics.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/metrics_engine.cpp b/searchcore/src/vespa/searchcore/proton/metrics/metrics_engine.cpp
index bf97bdda29a..d087f603fe3 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/metrics_engine.cpp
+++ b/searchcore/src/vespa/searchcore/proton/metrics/metrics_engine.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_metrics.h"
#include "documentdb_tagged_metrics.h"
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/metrics_engine.h b/searchcore/src/vespa/searchcore/proton/metrics/metrics_engine.h
index ded156774ae..b4cc1bc1c7e 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/metrics_engine.h
+++ b/searchcore/src/vespa/searchcore/proton/metrics/metrics_engine.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/metricswireservice.h b/searchcore/src/vespa/searchcore/proton/metrics/metricswireservice.h
index 5b4852cabe6..3d3165378fd 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/metricswireservice.h
+++ b/searchcore/src/vespa/searchcore/proton/metrics/metricswireservice.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.cpp b/searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.cpp
index c56db96ee8d..9bc20f95d13 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.cpp
+++ b/searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "resource_usage_metrics.h"
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.h b/searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.h
index acadeba8372..774bb645c84 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.h
+++ b/searchcore/src/vespa/searchcore/proton/metrics/resource_usage_metrics.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/sessionmanager_metrics.cpp b/searchcore/src/vespa/searchcore/proton/metrics/sessionmanager_metrics.cpp
index 82ec8ad485b..f4cc9a087f2 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/sessionmanager_metrics.cpp
+++ b/searchcore/src/vespa/searchcore/proton/metrics/sessionmanager_metrics.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sessionmanager_metrics.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/sessionmanager_metrics.h b/searchcore/src/vespa/searchcore/proton/metrics/sessionmanager_metrics.h
index a1a5dadd1f8..b8d69742033 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/sessionmanager_metrics.h
+++ b/searchcore/src/vespa/searchcore/proton/metrics/sessionmanager_metrics.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/trans_log_server_metrics.cpp b/searchcore/src/vespa/searchcore/proton/metrics/trans_log_server_metrics.cpp
index 348adf5bf41..f6decc728b9 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/trans_log_server_metrics.cpp
+++ b/searchcore/src/vespa/searchcore/proton/metrics/trans_log_server_metrics.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "trans_log_server_metrics.h"
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/trans_log_server_metrics.h b/searchcore/src/vespa/searchcore/proton/metrics/trans_log_server_metrics.h
index 38b3abbbdcd..0b99a54d646 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/trans_log_server_metrics.h
+++ b/searchcore/src/vespa/searchcore/proton/metrics/trans_log_server_metrics.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/persistenceengine/CMakeLists.txt
index 6441212f247..2a817aeb05d 100644
--- a/searchcore/src/vespa/searchcore/proton/persistenceengine/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcore_persistenceengine STATIC
SOURCES
document_iterator.cpp
diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/commit_and_wait_document_retriever.cpp b/searchcore/src/vespa/searchcore/proton/persistenceengine/commit_and_wait_document_retriever.cpp
index aa20627600f..41d8bab0920 100644
--- a/searchcore/src/vespa/searchcore/proton/persistenceengine/commit_and_wait_document_retriever.cpp
+++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/commit_and_wait_document_retriever.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "commit_and_wait_document_retriever.h"
#include <vespa/document/fieldvalue/document.h>
diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/commit_and_wait_document_retriever.h b/searchcore/src/vespa/searchcore/proton/persistenceengine/commit_and_wait_document_retriever.h
index 68f34c65362..98219c0c245 100644
--- a/searchcore/src/vespa/searchcore/proton/persistenceengine/commit_and_wait_document_retriever.h
+++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/commit_and_wait_document_retriever.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/document_iterator.cpp b/searchcore/src/vespa/searchcore/proton/persistenceengine/document_iterator.cpp
index 7485f89e635..b39b5dc5734 100644
--- a/searchcore/src/vespa/searchcore/proton/persistenceengine/document_iterator.cpp
+++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/document_iterator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_iterator.h"
#include <vespa/searchcore/proton/common/cachedselect.h>
diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/document_iterator.h b/searchcore/src/vespa/searchcore/proton/persistenceengine/document_iterator.h
index 3959c5a235f..44fba6344ca 100644
--- a/searchcore/src/vespa/searchcore/proton/persistenceengine/document_iterator.h
+++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/document_iterator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/i_document_retriever.cpp b/searchcore/src/vespa/searchcore/proton/persistenceengine/i_document_retriever.cpp
index 952d1e8a693..3faaca97f3d 100644
--- a/searchcore/src/vespa/searchcore/proton/persistenceengine/i_document_retriever.cpp
+++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/i_document_retriever.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "i_document_retriever.h"
#include <vespa/persistence/spi/read_consistency.h>
diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/i_document_retriever.h b/searchcore/src/vespa/searchcore/proton/persistenceengine/i_document_retriever.h
index 2d20ed7bc89..cb72737479e 100644
--- a/searchcore/src/vespa/searchcore/proton/persistenceengine/i_document_retriever.h
+++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/i_document_retriever.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/i_resource_write_filter.h b/searchcore/src/vespa/searchcore/proton/persistenceengine/i_resource_write_filter.h
index 04e0721d41f..c982387b506 100644
--- a/searchcore/src/vespa/searchcore/proton/persistenceengine/i_resource_write_filter.h
+++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/i_resource_write_filter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistenceengineowner.h b/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistenceengineowner.h
index 8e01e67719a..9a46e0a75ca 100644
--- a/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistenceengineowner.h
+++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistenceengineowner.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistencehandler.h b/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistencehandler.h
index 314a87a150d..b4544868bbe 100644
--- a/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistencehandler.h
+++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistencehandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_document_retriever.h"
diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/persistence_handler_map.cpp b/searchcore/src/vespa/searchcore/proton/persistenceengine/persistence_handler_map.cpp
index 5b62a290353..cc619c3a09a 100644
--- a/searchcore/src/vespa/searchcore/proton/persistenceengine/persistence_handler_map.cpp
+++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/persistence_handler_map.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "ipersistencehandler.h"
#include "persistence_handler_map.h"
diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/persistence_handler_map.h b/searchcore/src/vespa/searchcore/proton/persistenceengine/persistence_handler_map.h
index 64241e1ad2b..749f044ff0e 100644
--- a/searchcore/src/vespa/searchcore/proton/persistenceengine/persistence_handler_map.h
+++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/persistence_handler_map.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/bucket/bucketspace.h>
diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.cpp b/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.cpp
index 6fccd66e50a..42720e83917 100644
--- a/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.cpp
+++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "persistenceengine.h"
#include "ipersistenceengineowner.h"
diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.h b/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.h
index 041b031478c..0aeb3e16351 100644
--- a/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.h
+++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "document_iterator.h"
diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/resource_usage_tracker.cpp b/searchcore/src/vespa/searchcore/proton/persistenceengine/resource_usage_tracker.cpp
index 9791b55f7b7..d359583cb59 100644
--- a/searchcore/src/vespa/searchcore/proton/persistenceengine/resource_usage_tracker.cpp
+++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/resource_usage_tracker.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "resource_usage_tracker.h"
#include <vespa/searchcore/proton/attribute/i_attribute_usage_listener.h>
@@ -73,8 +73,7 @@ ResourceUsageTracker::ResourceUsageTracker(IDiskMemUsageNotifier& disk_mem_usage
_listener(nullptr),
_disk_mem_usage_notifier(disk_mem_usage_notifier),
_attribute_usage(),
- _attribute_enum_store_max_document_type(),
- _attribute_multivalue_max_document_type()
+ _attribute_address_space_max_document_type()
{
_disk_mem_usage_notifier.addDiskMemUsageListener(this);
}
@@ -84,11 +83,18 @@ ResourceUsageTracker::~ResourceUsageTracker()
_disk_mem_usage_notifier.removeDiskMemUsageListener(this);
}
+storage::spi::ResourceUsage
+ResourceUsageTracker::get_resource_usage() const
+{
+ std::lock_guard guard(_lock);
+ return _resource_usage;
+}
+
void
ResourceUsageTracker::notifyDiskMemUsage(DiskMemUsageState state)
{
std::lock_guard guard(_lock);
- _resource_usage = ResourceUsage(state.diskState().usage(), state.memoryState().usage(), _resource_usage.get_attribute_enum_store_usage(), _resource_usage.get_attribute_multivalue_usage());
+ _resource_usage = ResourceUsage(state.diskState().usage(), state.memoryState().usage(), _resource_usage.get_attribute_address_space_usage());
if (_listener != nullptr) {
_listener->update_resource_usage(_resource_usage);
}
@@ -125,6 +131,7 @@ namespace {
bool same_usage(const AddressSpaceUsageStats &lhs, const AddressSpaceUsageStats &rhs) {
return ((lhs.getUsage().usage() == rhs.getUsage().usage()) &&
+ (lhs.get_component_name() == rhs.get_component_name()) &&
(lhs.getAttributeName() == rhs.getAttributeName()) &&
(lhs.getSubDbName() == rhs.getSubDbName()));
}
@@ -140,18 +147,15 @@ ResourceUsageTracker::notify_attribute_usage(const vespalib::string &document_ty
{
std::lock_guard guard(_lock);
auto& old_usage = _attribute_usage[document_type];
- if (same_usage(old_usage.enumStoreUsage(), attribute_usage.enumStoreUsage()) &&
- same_usage(old_usage.multiValueUsage(), attribute_usage.multiValueUsage())) {
+ if (same_usage(old_usage.max_address_space_usage(), attribute_usage.max_address_space_usage())) {
return; // usage for document type has not changed
}
old_usage = attribute_usage;
- double enum_store_max = attribute_usage.enumStoreUsage().getUsage().usage();
- double multivalue_max = attribute_usage.multiValueUsage().getUsage().usage();
- double old_enum_store_max = _resource_usage.get_attribute_enum_store_usage().get_usage();
- double old_multivalue_max = _resource_usage.get_attribute_multivalue_usage().get_usage();
+ double address_space_max = attribute_usage.max_address_space_usage().getUsage().usage();
+ double old_address_space_max = _resource_usage.get_attribute_address_space_usage().get_usage();
- if (can_skip_scan(enum_store_max, old_enum_store_max, document_type == _attribute_enum_store_max_document_type) &&
- can_skip_scan(multivalue_max, old_multivalue_max, document_type == _attribute_multivalue_max_document_type)) {
+ if (can_skip_scan(address_space_max, old_address_space_max,
+ document_type == _attribute_address_space_max_document_type)) {
return; // usage for document type is less than or equal to usage for other document types
}
if (scan_attribute_usage(false, guard) && _listener != nullptr) {
@@ -168,7 +172,7 @@ class MaxAttributeUsage
double _max_usage;
vespalib::string get_name() const {
- return *_document_type + "." + _max->getSubDbName() + "." + _max->getAttributeName();
+ return *_document_type + "." + _max->getSubDbName() + "." + _max->getAttributeName() + "." + _max->get_component_name();
}
public:
@@ -203,23 +207,19 @@ public:
bool
ResourceUsageTracker::scan_attribute_usage(bool force_changed, std::lock_guard<std::mutex>&)
{
- MaxAttributeUsage enum_store_max;
- MaxAttributeUsage multivalue_max;
+ MaxAttributeUsage address_space_max;
for (const auto& kv : _attribute_usage) {
- enum_store_max.sample(kv.first, kv.second.enumStoreUsage());
- multivalue_max.sample(kv.first, kv.second.multiValueUsage());
+ address_space_max.sample(kv.first, kv.second.max_address_space_usage());
}
ResourceUsage new_resource_usage(_resource_usage.get_disk_usage(),
_resource_usage.get_memory_usage(),
- enum_store_max.get_max_resource_usage(),
- multivalue_max.get_max_resource_usage());
+ address_space_max.get_max_resource_usage());
bool changed = (new_resource_usage != _resource_usage) ||
force_changed;
if (changed) {
_resource_usage = std::move(new_resource_usage);
- _attribute_enum_store_max_document_type = enum_store_max.get_document_type();
- _attribute_multivalue_max_document_type = multivalue_max.get_document_type();
+ _attribute_address_space_max_document_type = address_space_max.get_document_type();
}
return changed;
}
diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/resource_usage_tracker.h b/searchcore/src/vespa/searchcore/proton/persistenceengine/resource_usage_tracker.h
index 879e60aeeac..9bc611f1c64 100644
--- a/searchcore/src/vespa/searchcore/proton/persistenceengine/resource_usage_tracker.h
+++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/resource_usage_tracker.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -26,13 +26,12 @@ class ResourceUsageTracker : public std::enable_shared_from_this<ResourceUsageTr
{
class ListenerGuard;
class AttributeUsageListener;
- std::mutex _lock;
+ mutable std::mutex _lock;
storage::spi::ResourceUsage _resource_usage;
storage::spi::IResourceUsageListener* _listener;
IDiskMemUsageNotifier& _disk_mem_usage_notifier;
vespalib::hash_map<vespalib::string, AttributeUsageStats> _attribute_usage;
- vespalib::string _attribute_enum_store_max_document_type;
- vespalib::string _attribute_multivalue_max_document_type;
+ vespalib::string _attribute_address_space_max_document_type;
void remove_listener();
void remove_document_type(const vespalib::string &document_type);
void notify_attribute_usage(const vespalib::string &document_type, const AttributeUsageStats &attribute_usage);
@@ -40,6 +39,7 @@ class ResourceUsageTracker : public std::enable_shared_from_this<ResourceUsageTr
public:
ResourceUsageTracker(IDiskMemUsageNotifier& notifier);
~ResourceUsageTracker() override;
+ storage::spi::ResourceUsage get_resource_usage() const;
void notifyDiskMemUsage(DiskMemUsageState state) override;
std::unique_ptr<vespalib::IDestructorCallback> set_listener(storage::spi::IResourceUsageListener& listener);
std::unique_ptr<IAttributeUsageListener> make_attribute_usage_listener(const vespalib::string &document_type);
diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/resulthandler.h b/searchcore/src/vespa/searchcore/proton/persistenceengine/resulthandler.h
index cb6fb28647e..27b1fc8bdd0 100644
--- a/searchcore/src/vespa/searchcore/proton/persistenceengine/resulthandler.h
+++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/resulthandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/persistence/spi/result.h>
diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/transport_latch.cpp b/searchcore/src/vespa/searchcore/proton/persistenceengine/transport_latch.cpp
index e44d2213462..61c240f0d6a 100644
--- a/searchcore/src/vespa/searchcore/proton/persistenceengine/transport_latch.cpp
+++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/transport_latch.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "transport_latch.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/transport_latch.h b/searchcore/src/vespa/searchcore/proton/persistenceengine/transport_latch.h
index 0e6b5d23053..084ad0e8d10 100644
--- a/searchcore/src/vespa/searchcore/proton/persistenceengine/transport_latch.h
+++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/transport_latch.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/persistence/spi/result.h>
diff --git a/searchcore/src/vespa/searchcore/proton/reference/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/reference/CMakeLists.txt
index 1ba96e9adf5..85534c9645f 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/proton/reference/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcore_reference STATIC
SOURCES
document_db_reference.cpp
diff --git a/searchcore/src/vespa/searchcore/proton/reference/document_db_reference.cpp b/searchcore/src/vespa/searchcore/proton/reference/document_db_reference.cpp
index 229006a349b..6abf912c097 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/document_db_reference.cpp
+++ b/searchcore/src/vespa/searchcore/proton/reference/document_db_reference.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_db_reference.h"
#include "gid_to_lid_mapper_factory.h"
diff --git a/searchcore/src/vespa/searchcore/proton/reference/document_db_reference.h b/searchcore/src/vespa/searchcore/proton/reference/document_db_reference.h
index 0f7e7f86ac3..244329f5b6b 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/document_db_reference.h
+++ b/searchcore/src/vespa/searchcore/proton/reference/document_db_reference.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_document_db_reference.h"
diff --git a/searchcore/src/vespa/searchcore/proton/reference/document_db_reference_registry.cpp b/searchcore/src/vespa/searchcore/proton/reference/document_db_reference_registry.cpp
index 68aaad3b557..0fa7b6924d4 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/document_db_reference_registry.cpp
+++ b/searchcore/src/vespa/searchcore/proton/reference/document_db_reference_registry.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_db_reference_registry.h"
diff --git a/searchcore/src/vespa/searchcore/proton/reference/document_db_reference_registry.h b/searchcore/src/vespa/searchcore/proton/reference/document_db_reference_registry.h
index e4917dba8f0..43253ccf977 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/document_db_reference_registry.h
+++ b/searchcore/src/vespa/searchcore/proton/reference/document_db_reference_registry.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_document_db_reference_registry.h"
diff --git a/searchcore/src/vespa/searchcore/proton/reference/document_db_reference_resolver.cpp b/searchcore/src/vespa/searchcore/proton/reference/document_db_reference_resolver.cpp
index 5ffd474834d..4cc5fb0b5db 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/document_db_reference_resolver.cpp
+++ b/searchcore/src/vespa/searchcore/proton/reference/document_db_reference_resolver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_db_reference_resolver.h"
#include "gid_to_lid_change_listener.h"
diff --git a/searchcore/src/vespa/searchcore/proton/reference/document_db_reference_resolver.h b/searchcore/src/vespa/searchcore/proton/reference/document_db_reference_resolver.h
index 03d6a64345c..761b9407fe5 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/document_db_reference_resolver.h
+++ b/searchcore/src/vespa/searchcore/proton/reference/document_db_reference_resolver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_document_db_reference_resolver.h"
diff --git a/searchcore/src/vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.cpp b/searchcore/src/vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.cpp
index a579a11e61f..1d4c4dd29e6 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.cpp
+++ b/searchcore/src/vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dummy_gid_to_lid_change_handler.h"
#include "i_pending_gid_to_lid_changes.h"
diff --git a/searchcore/src/vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.h b/searchcore/src/vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.h
index 54cc0e2144a..ef43eeae22c 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.h
+++ b/searchcore/src/vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_handler.cpp b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_handler.cpp
index 805f19b5bf0..a800abe27c2 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_handler.cpp
+++ b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_handler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "gid_to_lid_change_handler.h"
#include "i_gid_to_lid_change_listener.h"
diff --git a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_handler.h b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_handler.h
index 25645aebcc9..cf97a0bb080 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_handler.h
+++ b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_handler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.cpp b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.cpp
index cc26aad5f5b..c7e716b4173 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.cpp
+++ b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "gid_to_lid_change_listener.h"
#include <future>
diff --git a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.h b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.h
index 0a1026319a3..23bb32af87a 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.h
+++ b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_registrator.cpp b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_registrator.cpp
index 3567a69e8a3..75d60d1950a 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_registrator.cpp
+++ b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_registrator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "gid_to_lid_change_registrator.h"
#include "i_gid_to_lid_change_listener.h"
diff --git a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_registrator.h b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_registrator.h
index cd5840db6d3..fe70d3fcf0e 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_registrator.h
+++ b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_registrator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper.cpp b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper.cpp
index dde445b5075..e17c670a9d1 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper.cpp
+++ b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "gid_to_lid_mapper.h"
#include <vespa/searchlib/common/idocumentmetastore.h>
diff --git a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper.h b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper.h
index 3a112ab7efa..b0831bf2fcc 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper.h
+++ b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper_factory.cpp b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper_factory.cpp
index 66818ca9bf7..1f4e6fc081b 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper_factory.cpp
+++ b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper_factory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "gid_to_lid_mapper_factory.h"
#include "gid_to_lid_mapper.h"
diff --git a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper_factory.h b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper_factory.h
index 2b000d0d754..7fd2aa603a4 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper_factory.h
+++ b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper_factory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/reference/i_document_db_reference.h b/searchcore/src/vespa/searchcore/proton/reference/i_document_db_reference.h
index 06d7c49e5c6..52d38066909 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/i_document_db_reference.h
+++ b/searchcore/src/vespa/searchcore/proton/reference/i_document_db_reference.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/searchcore/src/vespa/searchcore/proton/reference/i_document_db_reference_registry.h b/searchcore/src/vespa/searchcore/proton/reference/i_document_db_reference_registry.h
index a4893b2764b..225cbcf2fb7 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/i_document_db_reference_registry.h
+++ b/searchcore/src/vespa/searchcore/proton/reference/i_document_db_reference_registry.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/searchcore/src/vespa/searchcore/proton/reference/i_document_db_reference_resolver.h b/searchcore/src/vespa/searchcore/proton/reference/i_document_db_reference_resolver.h
index 681538d9e34..833bbc6653a 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/i_document_db_reference_resolver.h
+++ b/searchcore/src/vespa/searchcore/proton/reference/i_document_db_reference_resolver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/time.h>
diff --git a/searchcore/src/vespa/searchcore/proton/reference/i_gid_to_lid_change_handler.h b/searchcore/src/vespa/searchcore/proton/reference/i_gid_to_lid_change_handler.h
index 0dad58b31ae..1a9a149dc5f 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/i_gid_to_lid_change_handler.h
+++ b/searchcore/src/vespa/searchcore/proton/reference/i_gid_to_lid_change_handler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/reference/i_gid_to_lid_change_listener.h b/searchcore/src/vespa/searchcore/proton/reference/i_gid_to_lid_change_listener.h
index 5ca79f1f553..9bdeb2f2e23 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/i_gid_to_lid_change_listener.h
+++ b/searchcore/src/vespa/searchcore/proton/reference/i_gid_to_lid_change_listener.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/reference/i_pending_gid_to_lid_changes.h b/searchcore/src/vespa/searchcore/proton/reference/i_pending_gid_to_lid_changes.h
index 6e4e9f240ff..30ec1d59789 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/i_pending_gid_to_lid_changes.h
+++ b/searchcore/src/vespa/searchcore/proton/reference/i_pending_gid_to_lid_changes.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/reference/pending_gid_to_lid_change.h b/searchcore/src/vespa/searchcore/proton/reference/pending_gid_to_lid_change.h
index 41416e490e8..b7cad0074c0 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/pending_gid_to_lid_change.h
+++ b/searchcore/src/vespa/searchcore/proton/reference/pending_gid_to_lid_change.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/reference/pending_gid_to_lid_changes.cpp b/searchcore/src/vespa/searchcore/proton/reference/pending_gid_to_lid_changes.cpp
index bb9da2d9c7f..143a1259285 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/pending_gid_to_lid_changes.cpp
+++ b/searchcore/src/vespa/searchcore/proton/reference/pending_gid_to_lid_changes.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "pending_gid_to_lid_changes.h"
#include "gid_to_lid_change_handler.h"
diff --git a/searchcore/src/vespa/searchcore/proton/reference/pending_gid_to_lid_changes.h b/searchcore/src/vespa/searchcore/proton/reference/pending_gid_to_lid_changes.h
index a3e74e74b1f..07c8b983cd4 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/pending_gid_to_lid_changes.h
+++ b/searchcore/src/vespa/searchcore/proton/reference/pending_gid_to_lid_changes.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/reprocessing/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/reprocessing/CMakeLists.txt
index 70a45829cd3..e45ebcb8210 100644
--- a/searchcore/src/vespa/searchcore/proton/reprocessing/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/proton/reprocessing/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcore_reprocessing STATIC
SOURCES
attribute_reprocessing_initializer.cpp
diff --git a/searchcore/src/vespa/searchcore/proton/reprocessing/attribute_reprocessing_initializer.cpp b/searchcore/src/vespa/searchcore/proton/reprocessing/attribute_reprocessing_initializer.cpp
index 1a273306c07..8e5e457b80e 100644
--- a/searchcore/src/vespa/searchcore/proton/reprocessing/attribute_reprocessing_initializer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/reprocessing/attribute_reprocessing_initializer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_reprocessing_initializer.h"
#include <vespa/searchcore/proton/attribute/attribute_populator.h>
diff --git a/searchcore/src/vespa/searchcore/proton/reprocessing/attribute_reprocessing_initializer.h b/searchcore/src/vespa/searchcore/proton/reprocessing/attribute_reprocessing_initializer.h
index 34302da236e..96605009d89 100644
--- a/searchcore/src/vespa/searchcore/proton/reprocessing/attribute_reprocessing_initializer.h
+++ b/searchcore/src/vespa/searchcore/proton/reprocessing/attribute_reprocessing_initializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/reprocessing/document_reprocessing_handler.cpp b/searchcore/src/vespa/searchcore/proton/reprocessing/document_reprocessing_handler.cpp
index 2a38f788ca4..09e6e8c727e 100644
--- a/searchcore/src/vespa/searchcore/proton/reprocessing/document_reprocessing_handler.cpp
+++ b/searchcore/src/vespa/searchcore/proton/reprocessing/document_reprocessing_handler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_reprocessing_handler.h"
diff --git a/searchcore/src/vespa/searchcore/proton/reprocessing/document_reprocessing_handler.h b/searchcore/src/vespa/searchcore/proton/reprocessing/document_reprocessing_handler.h
index 87963ed968f..74e5ea1254c 100644
--- a/searchcore/src/vespa/searchcore/proton/reprocessing/document_reprocessing_handler.h
+++ b/searchcore/src/vespa/searchcore/proton/reprocessing/document_reprocessing_handler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_handler.h b/searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_handler.h
index a60c6fecc4b..33405a863fe 100644
--- a/searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_handler.h
+++ b/searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_handler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_initializer.h b/searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_initializer.h
index fb6158d78b0..dd17606bbca 100644
--- a/searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_initializer.h
+++ b/searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_initializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_reader.h b/searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_reader.h
index 1624fc0f225..77bcab51fa9 100644
--- a/searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_reader.h
+++ b/searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_reader.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_rewriter.h b/searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_rewriter.h
index 85e692f6e0b..ef31497d237 100644
--- a/searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_rewriter.h
+++ b/searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_rewriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_task.h b/searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_task.h
index 43a2ca39734..52c9ba293d3 100644
--- a/searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_task.h
+++ b/searchcore/src/vespa/searchcore/proton/reprocessing/i_reprocessing_task.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/reprocessing/reprocess_documents_task.cpp b/searchcore/src/vespa/searchcore/proton/reprocessing/reprocess_documents_task.cpp
index d5cbb4615f4..0f5efa5b868 100644
--- a/searchcore/src/vespa/searchcore/proton/reprocessing/reprocess_documents_task.cpp
+++ b/searchcore/src/vespa/searchcore/proton/reprocessing/reprocess_documents_task.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "reprocess_documents_task.h"
#include "attribute_reprocessing_initializer.h"
diff --git a/searchcore/src/vespa/searchcore/proton/reprocessing/reprocess_documents_task.h b/searchcore/src/vespa/searchcore/proton/reprocessing/reprocess_documents_task.h
index fc82f475412..002a09a182d 100644
--- a/searchcore/src/vespa/searchcore/proton/reprocessing/reprocess_documents_task.h
+++ b/searchcore/src/vespa/searchcore/proton/reprocessing/reprocess_documents_task.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_reprocessing_task.h"
diff --git a/searchcore/src/vespa/searchcore/proton/reprocessing/reprocessingrunner.cpp b/searchcore/src/vespa/searchcore/proton/reprocessing/reprocessingrunner.cpp
index 8f5e5eab436..15e043c6e73 100644
--- a/searchcore/src/vespa/searchcore/proton/reprocessing/reprocessingrunner.cpp
+++ b/searchcore/src/vespa/searchcore/proton/reprocessing/reprocessingrunner.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "reprocessingrunner.h"
#include "i_reprocessing_task.h"
diff --git a/searchcore/src/vespa/searchcore/proton/reprocessing/reprocessingrunner.h b/searchcore/src/vespa/searchcore/proton/reprocessing/reprocessingrunner.h
index 9b4516bf578..f451dff89f2 100644
--- a/searchcore/src/vespa/searchcore/proton/reprocessing/reprocessingrunner.h
+++ b/searchcore/src/vespa/searchcore/proton/reprocessing/reprocessingrunner.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/server/CMakeLists.txt
index 285e259e1a8..e2673d8aea2 100644
--- a/searchcore/src/vespa/searchcore/proton/server/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/proton/server/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcore_server STATIC
SOURCES
blockable_maintenance_job.cpp
diff --git a/searchcore/src/vespa/searchcore/proton/server/attribute_writer_factory.h b/searchcore/src/vespa/searchcore/proton/server/attribute_writer_factory.h
index 3333041fb91..55d0cd479e3 100644
--- a/searchcore/src/vespa/searchcore/proton/server/attribute_writer_factory.h
+++ b/searchcore/src/vespa/searchcore/proton/server/attribute_writer_factory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_attribute_writer_factory.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/blockable_maintenance_job.cpp b/searchcore/src/vespa/searchcore/proton/server/blockable_maintenance_job.cpp
index 942e6c14a5f..99fca3e93fd 100644
--- a/searchcore/src/vespa/searchcore/proton/server/blockable_maintenance_job.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/blockable_maintenance_job.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "blockable_maintenance_job.h"
#include "disk_mem_usage_state.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/blockable_maintenance_job.h b/searchcore/src/vespa/searchcore/proton/server/blockable_maintenance_job.h
index adf6f2f3b6c..52a348d7a8b 100644
--- a/searchcore/src/vespa/searchcore/proton/server/blockable_maintenance_job.h
+++ b/searchcore/src/vespa/searchcore/proton/server/blockable_maintenance_job.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_blockable_maintenance_job.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/bootstrapconfig.cpp b/searchcore/src/vespa/searchcore/proton/server/bootstrapconfig.cpp
index 68abbe87c21..bc1c16ed5b9 100644
--- a/searchcore/src/vespa/searchcore/proton/server/bootstrapconfig.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/bootstrapconfig.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bootstrapconfig.h"
#include <vespa/config-bucketspaces.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/bootstrapconfig.h b/searchcore/src/vespa/searchcore/proton/server/bootstrapconfig.h
index e59b73eaf50..b8ed1226220 100644
--- a/searchcore/src/vespa/searchcore/proton/server/bootstrapconfig.h
+++ b/searchcore/src/vespa/searchcore/proton/server/bootstrapconfig.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/bootstrapconfigmanager.cpp b/searchcore/src/vespa/searchcore/proton/server/bootstrapconfigmanager.cpp
index c643c338856..e81f576cf46 100644
--- a/searchcore/src/vespa/searchcore/proton/server/bootstrapconfigmanager.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/bootstrapconfigmanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bootstrapconfigmanager.h"
#include "bootstrapconfig.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/bootstrapconfigmanager.h b/searchcore/src/vespa/searchcore/proton/server/bootstrapconfigmanager.h
index a0897204ebc..88f4484116d 100644
--- a/searchcore/src/vespa/searchcore/proton/server/bootstrapconfigmanager.h
+++ b/searchcore/src/vespa/searchcore/proton/server/bootstrapconfigmanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/buckethandler.cpp b/searchcore/src/vespa/searchcore/proton/server/buckethandler.cpp
index bedaea3fe75..c29498ad87a 100644
--- a/searchcore/src/vespa/searchcore/proton/server/buckethandler.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/buckethandler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "buckethandler.h"
#include "ibucketstatechangedhandler.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/buckethandler.h b/searchcore/src/vespa/searchcore/proton/server/buckethandler.h
index ec23447c3ac..03ec4449418 100644
--- a/searchcore/src/vespa/searchcore/proton/server/buckethandler.h
+++ b/searchcore/src/vespa/searchcore/proton/server/buckethandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/bucketmovejob.cpp b/searchcore/src/vespa/searchcore/proton/server/bucketmovejob.cpp
index 6aa78276598..c70928cd5e8 100644
--- a/searchcore/src/vespa/searchcore/proton/server/bucketmovejob.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/bucketmovejob.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketmovejob.h"
#include "imaintenancejobrunner.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/bucketmovejob.h b/searchcore/src/vespa/searchcore/proton/server/bucketmovejob.h
index 573bdef13ef..66d24efb466 100644
--- a/searchcore/src/vespa/searchcore/proton/server/bucketmovejob.h
+++ b/searchcore/src/vespa/searchcore/proton/server/bucketmovejob.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/clusterstatehandler.cpp b/searchcore/src/vespa/searchcore/proton/server/clusterstatehandler.cpp
index 49baa73fa43..3d709bd19d1 100644
--- a/searchcore/src/vespa/searchcore/proton/server/clusterstatehandler.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/clusterstatehandler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "clusterstatehandler.h"
#include "iclusterstatechangedhandler.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/clusterstatehandler.h b/searchcore/src/vespa/searchcore/proton/server/clusterstatehandler.h
index 808c9430590..5ef0bb39a5c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/clusterstatehandler.h
+++ b/searchcore/src/vespa/searchcore/proton/server/clusterstatehandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/combiningfeedview.cpp b/searchcore/src/vespa/searchcore/proton/server/combiningfeedview.cpp
index f05ba93f15e..2602ee377b7 100644
--- a/searchcore/src/vespa/searchcore/proton/server/combiningfeedview.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/combiningfeedview.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "combiningfeedview.h"
#include <vespa/searchcore/proton/documentmetastore/i_document_meta_store.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/combiningfeedview.h b/searchcore/src/vespa/searchcore/proton/server/combiningfeedview.h
index 30d78b62370..9df2c4c0c0f 100644
--- a/searchcore/src/vespa/searchcore/proton/server/combiningfeedview.h
+++ b/searchcore/src/vespa/searchcore/proton/server/combiningfeedview.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/configstore.h b/searchcore/src/vespa/searchcore/proton/server/configstore.h
index 1a3ba423b49..4971c77369c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/configstore.h
+++ b/searchcore/src/vespa/searchcore/proton/server/configstore.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/ddbstate.cpp b/searchcore/src/vespa/searchcore/proton/server/ddbstate.cpp
index 73fff1cfd42..cd9e6c360dd 100644
--- a/searchcore/src/vespa/searchcore/proton/server/ddbstate.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/ddbstate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "ddbstate.h"
#include <cassert>
diff --git a/searchcore/src/vespa/searchcore/proton/server/ddbstate.h b/searchcore/src/vespa/searchcore/proton/server/ddbstate.h
index 30415048b06..716f484c18c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/ddbstate.h
+++ b/searchcore/src/vespa/searchcore/proton/server/ddbstate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_filter.cpp b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_filter.cpp
index cbd378da9a0..3677b9165fb 100644
--- a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_filter.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_filter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "disk_mem_usage_filter.h"
#include "i_disk_mem_usage_listener.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_filter.h b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_filter.h
index 5bec34e51d9..e2e94b1abd9 100644
--- a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_filter.h
+++ b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_filter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_forwarder.cpp b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_forwarder.cpp
index b75e3455162..34c534ee75d 100644
--- a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_forwarder.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_forwarder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "disk_mem_usage_forwarder.h"
#include <vespa/vespalib/util/lambdatask.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_forwarder.h b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_forwarder.h
index 431bbad4675..076eecf828f 100644
--- a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_forwarder.h
+++ b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_forwarder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_metrics.cpp b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_metrics.cpp
index 2a97c56e63f..60f45f536d6 100644
--- a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_metrics.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_metrics.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "disk_mem_usage_metrics.h"
#include "disk_mem_usage_state.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_metrics.h b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_metrics.h
index 34d3bb36b40..10687fd38a8 100644
--- a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_metrics.h
+++ b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_metrics.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_sampler.cpp b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_sampler.cpp
index abd89345401..d9f47c2944b 100644
--- a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_sampler.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_sampler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "disk_mem_usage_sampler.h"
#include <vespa/vespalib/util/scheduledexecutor.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_sampler.h b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_sampler.h
index 2248db87960..74e14bc65de 100644
--- a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_sampler.h
+++ b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_sampler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_state.h b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_state.h
index b05cc261728..7e1314e134d 100644
--- a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_state.h
+++ b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_state.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/docstorevalidator.cpp b/searchcore/src/vespa/searchcore/proton/server/docstorevalidator.cpp
index cc2beed8de7..b1ab67ab5a4 100644
--- a/searchcore/src/vespa/searchcore/proton/server/docstorevalidator.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/docstorevalidator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "docstorevalidator.h"
#include "feedhandler.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/docstorevalidator.h b/searchcore/src/vespa/searchcore/proton/server/docstorevalidator.h
index d51d924655a..489d97622b2 100644
--- a/searchcore/src/vespa/searchcore/proton/server/docstorevalidator.h
+++ b/searchcore/src/vespa/searchcore/proton/server/docstorevalidator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/common/serialnum.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_db_config_owner.cpp b/searchcore/src/vespa/searchcore/proton/server/document_db_config_owner.cpp
index 28492c5d39a..b17218fb766 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_db_config_owner.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/document_db_config_owner.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_db_config_owner.h"
#include "document_db_directory_holder.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_db_config_owner.h b/searchcore/src/vespa/searchcore/proton/server/document_db_config_owner.h
index cc19bc14fab..cfdcea24e4c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_db_config_owner.h
+++ b/searchcore/src/vespa/searchcore/proton/server/document_db_config_owner.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_db_directory_holder.cpp b/searchcore/src/vespa/searchcore/proton/server/document_db_directory_holder.cpp
index d0807a3b8a7..4a09adccf96 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_db_directory_holder.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/document_db_directory_holder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_db_directory_holder.h"
#include <mutex>
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_db_directory_holder.h b/searchcore/src/vespa/searchcore/proton/server/document_db_directory_holder.h
index 65df1b7bd8e..dfaf859cfce 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_db_directory_holder.h
+++ b/searchcore/src/vespa/searchcore/proton/server/document_db_directory_holder.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_db_explorer.cpp b/searchcore/src/vespa/searchcore/proton/server/document_db_explorer.cpp
index 6fdf5660d06..cabda2301b8 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_db_explorer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/document_db_explorer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_db_explorer.h"
#include "document_meta_store_read_guards.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_db_explorer.h b/searchcore/src/vespa/searchcore/proton/server/document_db_explorer.h
index 22004769815..b514a5169e7 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_db_explorer.h
+++ b/searchcore/src/vespa/searchcore/proton/server/document_db_explorer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_db_flush_config.cpp b/searchcore/src/vespa/searchcore/proton/server/document_db_flush_config.cpp
index 7973ebe857d..6fd10ca013c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_db_flush_config.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/document_db_flush_config.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_db_maintenance_config.h"
namespace proton {
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_db_flush_config.h b/searchcore/src/vespa/searchcore/proton/server/document_db_flush_config.h
index 6bcbb271224..81b41889ba8 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_db_flush_config.h
+++ b/searchcore/src/vespa/searchcore/proton/server/document_db_flush_config.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdint>
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_db_maintenance_config.cpp b/searchcore/src/vespa/searchcore/proton/server/document_db_maintenance_config.cpp
index 3bcd9f3d85f..b385becd58f 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_db_maintenance_config.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/document_db_maintenance_config.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_db_maintenance_config.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_db_maintenance_config.h b/searchcore/src/vespa/searchcore/proton/server/document_db_maintenance_config.h
index a42bf65ce88..a2584be962c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_db_maintenance_config.h
+++ b/searchcore/src/vespa/searchcore/proton/server/document_db_maintenance_config.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "document_db_flush_config.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_meta_store_read_guards.cpp b/searchcore/src/vespa/searchcore/proton/server/document_meta_store_read_guards.cpp
index 952910970ae..a01fd38c795 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_meta_store_read_guards.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/document_meta_store_read_guards.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_meta_store_read_guards.h"
#include "documentsubdbcollection.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_meta_store_read_guards.h b/searchcore/src/vespa/searchcore/proton/server/document_meta_store_read_guards.h
index 7baa5576b3b..be22737a793 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_meta_store_read_guards.h
+++ b/searchcore/src/vespa/searchcore/proton/server/document_meta_store_read_guards.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_scan_iterator.cpp b/searchcore/src/vespa/searchcore/proton/server/document_scan_iterator.cpp
index 0332303abae..4265d4c7099 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_scan_iterator.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/document_scan_iterator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_scan_iterator.h"
#include <vespa/searchcore/proton/documentmetastore/i_document_meta_store.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_scan_iterator.h b/searchcore/src/vespa/searchcore/proton/server/document_scan_iterator.h
index 62dff0a7d85..b7c5131171a 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_scan_iterator.h
+++ b/searchcore/src/vespa/searchcore/proton/server/document_scan_iterator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_subdb_collection_explorer.cpp b/searchcore/src/vespa/searchcore/proton/server/document_subdb_collection_explorer.cpp
index 1530bf1668f..91764d5dceb 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_subdb_collection_explorer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/document_subdb_collection_explorer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_subdb_collection_explorer.h"
#include "document_subdb_explorer.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_subdb_collection_explorer.h b/searchcore/src/vespa/searchcore/proton/server/document_subdb_collection_explorer.h
index 34295e1586e..47ea6be1711 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_subdb_collection_explorer.h
+++ b/searchcore/src/vespa/searchcore/proton/server/document_subdb_collection_explorer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_subdb_collection_initializer.cpp b/searchcore/src/vespa/searchcore/proton/server/document_subdb_collection_initializer.cpp
index 159b5249016..196b993b0f6 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_subdb_collection_initializer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/document_subdb_collection_initializer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_subdb_collection_initializer.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_subdb_collection_initializer.h b/searchcore/src/vespa/searchcore/proton/server/document_subdb_collection_initializer.h
index 0c619a6d192..030964bfa3c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_subdb_collection_initializer.h
+++ b/searchcore/src/vespa/searchcore/proton/server/document_subdb_collection_initializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_subdb_explorer.cpp b/searchcore/src/vespa/searchcore/proton/server/document_subdb_explorer.cpp
index 7e9e9d45887..8049e76d4b6 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_subdb_explorer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/document_subdb_explorer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_subdb_explorer.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_subdb_explorer.h b/searchcore/src/vespa/searchcore/proton/server/document_subdb_explorer.h
index feb196e7a8e..f23b6b12c6c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_subdb_explorer.h
+++ b/searchcore/src/vespa/searchcore/proton/server/document_subdb_explorer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_subdb_initializer.cpp b/searchcore/src/vespa/searchcore/proton/server/document_subdb_initializer.cpp
index 510be013c52..1019e770095 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_subdb_initializer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/document_subdb_initializer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_subdb_initializer.h"
#include "idocumentsubdb.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_subdb_initializer.h b/searchcore/src/vespa/searchcore/proton/server/document_subdb_initializer.h
index 66ab54cf4a6..af80dd0df40 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_subdb_initializer.h
+++ b/searchcore/src/vespa/searchcore/proton/server/document_subdb_initializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_subdb_initializer_result.cpp b/searchcore/src/vespa/searchcore/proton/server/document_subdb_initializer_result.cpp
index 3374d835847..60ed8a54139 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_subdb_initializer_result.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/document_subdb_initializer_result.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_subdb_initializer_result.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_subdb_initializer_result.h b/searchcore/src/vespa/searchcore/proton/server/document_subdb_initializer_result.h
index c41d133eb5f..a4aeb481519 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_subdb_initializer_result.h
+++ b/searchcore/src/vespa/searchcore/proton/server/document_subdb_initializer_result.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentbucketmover.cpp b/searchcore/src/vespa/searchcore/proton/server/documentbucketmover.cpp
index a0ce668294f..b8b4fd109c4 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentbucketmover.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentbucketmover.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentbucketmover.h"
#include "i_move_operation_limiter.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentbucketmover.h b/searchcore/src/vespa/searchcore/proton/server/documentbucketmover.h
index d150ebf7436..b8f1f7c732c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentbucketmover.h
+++ b/searchcore/src/vespa/searchcore/proton/server/documentbucketmover.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp b/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp
index e53e817af8d..c15d100dcfa 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bootstrapconfig.h"
#include "combiningfeedview.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb.h b/searchcore/src/vespa/searchcore/proton/server/documentdb.h
index 999ccad708e..936ba812a44 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdb.h
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdb.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "buckethandler.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb_metrics_updater.cpp b/searchcore/src/vespa/searchcore/proton/server/documentdb_metrics_updater.cpp
index 8b923c7a372..d0bd7d4ee69 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdb_metrics_updater.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdb_metrics_updater.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "ddbstate.h"
#include "document_meta_store_read_guards.h"
@@ -302,12 +302,10 @@ DocumentDBMetricsUpdater::updateMetrics(const metrics::MetricLockGuard & guard,
void
DocumentDBMetricsUpdater::updateAttributeResourceUsageMetrics(DocumentDBTaggedMetrics::AttributeMetrics &metrics)
{
- AttributeUsageStats attributeUsageStats = _writeFilter.getAttributeUsageStats();
+ AttributeUsageStats stats = _writeFilter.getAttributeUsageStats();
bool feedBlocked = !_writeFilter.acceptWriteOperation();
- double enumStoreUsed = attributeUsageStats.enumStoreUsage().getUsage().usage();
- double multiValueUsed = attributeUsageStats.multiValueUsage().getUsage().usage();
- metrics.resourceUsage.enumStore.set(enumStoreUsed);
- metrics.resourceUsage.multiValue.set(multiValueUsed);
+ double address_space_used = stats.max_address_space_usage().getUsage().usage();
+ metrics.resourceUsage.address_space.set(address_space_used);
metrics.resourceUsage.feedingBlocked.set(feedBlocked ? 1 : 0);
}
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb_metrics_updater.h b/searchcore/src/vespa/searchcore/proton/server/documentdb_metrics_updater.h
index 4a70e756a86..b73fa3b4eb9 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdb_metrics_updater.h
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdb_metrics_updater.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcore/proton/metrics/documentdb_tagged_metrics.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdbconfig.cpp b/searchcore/src/vespa/searchcore/proton/server/documentdbconfig.cpp
index e39188042d7..4b2ef276077 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdbconfig.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdbconfig.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentdbconfig.h"
#include "threading_service_config.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdbconfig.h b/searchcore/src/vespa/searchcore/proton/server/documentdbconfig.h
index 2ca7fb1dfa8..fb29b086718 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdbconfig.h
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdbconfig.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.cpp b/searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.cpp
index fb154081963..a9873a80d0e 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentdbconfigmanager.h"
#include "bootstrapconfig.h"
@@ -8,6 +8,7 @@
#include <vespa/searchcore/config/config-ranking-constants.h>
#include <vespa/searchcore/config/config-ranking-expressions.h>
#include <vespa/searchcore/config/config-onnx-models.h>
+#include <vespa/config/common/exceptions.h>
#include <vespa/config-imported-fields.h>
#include <vespa/config-rank-profiles.h>
#include <vespa/config-summarymap.h>
@@ -151,8 +152,7 @@ buildMaintenanceConfig(const BootstrapConfig::SP &bootstrapConfig,
proton.lidspacecompaction.removeblockrate,
isDocumentTypeGlobal),
AttributeUsageFilterConfig(
- proton.writefilter.attribute.enumstorelimit,
- proton.writefilter.attribute.multivaluelimit),
+ proton.writefilter.attribute.addressSpaceLimit),
vespalib::from_s(proton.writefilter.sampleinterval),
BlockableMaintenanceJobConfig(
proton.maintenancejobs.resourcelimitfactor,
@@ -282,6 +282,10 @@ vespalib::string resolve_file(config::RpcFileAcquirer &fileAcquirer, vespalib::T
}
}
LOG(info, "Got file path from file acquirer: '%s' (%s, ref='%s')", filePath.c_str(), desc.c_str(), fileref.c_str());
+ if (filePath == "") {
+ throw config::ConfigTimeoutException(fmt("could not get file path from file acquirer for %s (ref=%s)",
+ desc.c_str(), fileref.c_str()));
+ }
return filePath;
}
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.h b/searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.h
index c4dabe7e563..a3c29212c66 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.h
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdbconfigmanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdbconfigscout.cpp b/searchcore/src/vespa/searchcore/proton/server/documentdbconfigscout.cpp
index 4cd4dbf5357..07786eba1bb 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdbconfigscout.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdbconfigscout.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentdbconfigscout.h"
#include <vespa/searchcore/proton/attribute/attributesconfigscout.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdbconfigscout.h b/searchcore/src/vespa/searchcore/proton/server/documentdbconfigscout.h
index 4fa59f28d35..5c1c9e9ac56 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdbconfigscout.h
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdbconfigscout.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentretriever.cpp b/searchcore/src/vespa/searchcore/proton/server/documentretriever.cpp
index 15d68efea59..6285f4ce70f 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentretriever.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentretriever.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentretriever.h"
#include <vespa/document/datatype/arraydatatype.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentretriever.h b/searchcore/src/vespa/searchcore/proton/server/documentretriever.h
index bab8898c8ea..ac9f6c584aa 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentretriever.h
+++ b/searchcore/src/vespa/searchcore/proton/server/documentretriever.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.cpp b/searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.cpp
index 1476a699adb..914f3d8bcfd 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentretrieverbase.h"
#include <vespa/document/repo/documenttyperepo.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.h b/searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.h
index 351a0c9142b..0ef46b7fb93 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.h
+++ b/searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentsubdbcollection.cpp b/searchcore/src/vespa/searchcore/proton/server/documentsubdbcollection.cpp
index 09790fd84b9..4a62a43709f 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentsubdbcollection.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentsubdbcollection.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "combiningfeedview.h"
#include "document_subdb_collection_initializer.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentsubdbcollection.h b/searchcore/src/vespa/searchcore/proton/server/documentsubdbcollection.h
index 15b188f7616..880fb57840b 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentsubdbcollection.h
+++ b/searchcore/src/vespa/searchcore/proton/server/documentsubdbcollection.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcore/proton/reprocessing/reprocessingrunner.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/emptysearchview.cpp b/searchcore/src/vespa/searchcore/proton/server/emptysearchview.cpp
index 9f2ec26ad4b..fd66aa27579 100644
--- a/searchcore/src/vespa/searchcore/proton/server/emptysearchview.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/emptysearchview.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "emptysearchview.h"
#include <vespa/searchlib/engine/docsumreply.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/emptysearchview.h b/searchcore/src/vespa/searchcore/proton/server/emptysearchview.h
index 92fb97f6177..6db313ca3f1 100644
--- a/searchcore/src/vespa/searchcore/proton/server/emptysearchview.h
+++ b/searchcore/src/vespa/searchcore/proton/server/emptysearchview.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/executor_explorer_utils.cpp b/searchcore/src/vespa/searchcore/proton/server/executor_explorer_utils.cpp
index 81734f681fd..c044b544675 100644
--- a/searchcore/src/vespa/searchcore/proton/server/executor_explorer_utils.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/executor_explorer_utils.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "executor_explorer_utils.h"
#include <vespa/vespalib/data/slime/cursor.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/executor_explorer_utils.h b/searchcore/src/vespa/searchcore/proton/server/executor_explorer_utils.h
index 6bf70ef4889..7ed0d073ded 100644
--- a/searchcore/src/vespa/searchcore/proton/server/executor_explorer_utils.h
+++ b/searchcore/src/vespa/searchcore/proton/server/executor_explorer_utils.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/executor_thread_service.cpp b/searchcore/src/vespa/searchcore/proton/server/executor_thread_service.cpp
index 49dc038096c..3b4f12b7c85 100644
--- a/searchcore/src/vespa/searchcore/proton/server/executor_thread_service.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/executor_thread_service.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "executor_thread_service.h"
#include <vespa/vespalib/util/lambdatask.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/executor_thread_service.h b/searchcore/src/vespa/searchcore/proton/server/executor_thread_service.h
index 325c36b7270..8adb80889e7 100644
--- a/searchcore/src/vespa/searchcore/proton/server/executor_thread_service.h
+++ b/searchcore/src/vespa/searchcore/proton/server/executor_thread_service.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcorespi/index/i_thread_service.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/executor_threading_service_explorer.cpp b/searchcore/src/vespa/searchcore/proton/server/executor_threading_service_explorer.cpp
index e3154ad6a47..89de400216e 100644
--- a/searchcore/src/vespa/searchcore/proton/server/executor_threading_service_explorer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/executor_threading_service_explorer.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "executor_explorer_utils.h"
#include "executor_threading_service_explorer.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/executor_threading_service_explorer.h b/searchcore/src/vespa/searchcore/proton/server/executor_threading_service_explorer.h
index 14d25add8d6..374a0e6b494 100644
--- a/searchcore/src/vespa/searchcore/proton/server/executor_threading_service_explorer.h
+++ b/searchcore/src/vespa/searchcore/proton/server/executor_threading_service_explorer.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/executorthreadingservice.cpp b/searchcore/src/vespa/searchcore/proton/server/executorthreadingservice.cpp
index ab1642bdc2a..558ad211e7d 100644
--- a/searchcore/src/vespa/searchcore/proton/server/executorthreadingservice.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/executorthreadingservice.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "executorthreadingservice.h"
#include "threading_service_config.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/executorthreadingservice.h b/searchcore/src/vespa/searchcore/proton/server/executorthreadingservice.h
index 7e943689012..ed34e518114 100644
--- a/searchcore/src/vespa/searchcore/proton/server/executorthreadingservice.h
+++ b/searchcore/src/vespa/searchcore/proton/server/executorthreadingservice.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "executor_thread_service.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.cpp b/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.cpp
index ca2a98d43e0..01afcdfe8bc 100644
--- a/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_writer_factory.h"
#include "emptysearchview.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.h b/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.h
index 7e2ac3a67cc..1722f72bc80 100644
--- a/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.h
+++ b/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "fast_access_doc_subdb_configurer.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.cpp b/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.cpp
index a55267e3eb2..ee811f93789 100644
--- a/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fast_access_doc_subdb_configurer.h"
#include "i_attribute_writer_factory.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.h b/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.h
index 0321ee1335c..6cde1a71794 100644
--- a/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.h
+++ b/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "searchable_doc_subdb_configurer.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/fast_access_document_retriever.cpp b/searchcore/src/vespa/searchcore/proton/server/fast_access_document_retriever.cpp
index 077c9c30646..e0d1fc48048 100644
--- a/searchcore/src/vespa/searchcore/proton/server/fast_access_document_retriever.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/fast_access_document_retriever.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fast_access_document_retriever.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/fast_access_document_retriever.h b/searchcore/src/vespa/searchcore/proton/server/fast_access_document_retriever.h
index 766fd4bd4a8..524a6858901 100644
--- a/searchcore/src/vespa/searchcore/proton/server/fast_access_document_retriever.h
+++ b/searchcore/src/vespa/searchcore/proton/server/fast_access_document_retriever.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentretriever.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/fast_access_feed_view.cpp b/searchcore/src/vespa/searchcore/proton/server/fast_access_feed_view.cpp
index 03aaec3a09a..747f6200962 100644
--- a/searchcore/src/vespa/searchcore/proton/server/fast_access_feed_view.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/fast_access_feed_view.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fast_access_feed_view.h"
#include "forcecommitcontext.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/fast_access_feed_view.h b/searchcore/src/vespa/searchcore/proton/server/fast_access_feed_view.h
index b0de224fd28..fae9527920a 100644
--- a/searchcore/src/vespa/searchcore/proton/server/fast_access_feed_view.h
+++ b/searchcore/src/vespa/searchcore/proton/server/fast_access_feed_view.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/feedconfigstore.h b/searchcore/src/vespa/searchcore/proton/server/feedconfigstore.h
index 7a6f47073ee..18ecb542128 100644
--- a/searchcore/src/vespa/searchcore/proton/server/feedconfigstore.h
+++ b/searchcore/src/vespa/searchcore/proton/server/feedconfigstore.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp b/searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp
index bd7e57dc56e..55549e986b8 100644
--- a/searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "ddbstate.h"
#include "feedhandler.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/feedhandler.h b/searchcore/src/vespa/searchcore/proton/server/feedhandler.h
index 2bee6b8d7fa..026d056b31c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/feedhandler.h
+++ b/searchcore/src/vespa/searchcore/proton/server/feedhandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/feedstate.cpp b/searchcore/src/vespa/searchcore/proton/server/feedstate.cpp
index be09816b9a1..21f2804b747 100644
--- a/searchcore/src/vespa/searchcore/proton/server/feedstate.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/feedstate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "feedstate.h"
#include <vespa/searchcore/proton/feedoperation/feedoperation.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/feedstate.h b/searchcore/src/vespa/searchcore/proton/server/feedstate.h
index 7d559eb4375..ace87a374a7 100644
--- a/searchcore/src/vespa/searchcore/proton/server/feedstate.h
+++ b/searchcore/src/vespa/searchcore/proton/server/feedstate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/feedstates.cpp b/searchcore/src/vespa/searchcore/proton/server/feedstates.cpp
index 68c47190516..8b616dc672e 100644
--- a/searchcore/src/vespa/searchcore/proton/server/feedstates.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/feedstates.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "feedconfigstore.h"
#include "feedstates.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/feedstates.h b/searchcore/src/vespa/searchcore/proton/server/feedstates.h
index 8804c77f78d..7533d6443a7 100644
--- a/searchcore/src/vespa/searchcore/proton/server/feedstates.h
+++ b/searchcore/src/vespa/searchcore/proton/server/feedstates.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/fileconfigmanager.cpp b/searchcore/src/vespa/searchcore/proton/server/fileconfigmanager.cpp
index 04aea64fbd4..9641f6157c4 100644
--- a/searchcore/src/vespa/searchcore/proton/server/fileconfigmanager.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/fileconfigmanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fileconfigmanager.h"
#include "bootstrapconfig.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/fileconfigmanager.h b/searchcore/src/vespa/searchcore/proton/server/fileconfigmanager.h
index d58d7920c67..417ab6cf394 100644
--- a/searchcore/src/vespa/searchcore/proton/server/fileconfigmanager.h
+++ b/searchcore/src/vespa/searchcore/proton/server/fileconfigmanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "configstore.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/flushhandlerproxy.cpp b/searchcore/src/vespa/searchcore/proton/server/flushhandlerproxy.cpp
index e205700143b..702a1d640e3 100644
--- a/searchcore/src/vespa/searchcore/proton/server/flushhandlerproxy.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/flushhandlerproxy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "flushhandlerproxy.h"
#include "documentdb.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/flushhandlerproxy.h b/searchcore/src/vespa/searchcore/proton/server/flushhandlerproxy.h
index 530a3997d84..fe937a35db7 100644
--- a/searchcore/src/vespa/searchcore/proton/server/flushhandlerproxy.h
+++ b/searchcore/src/vespa/searchcore/proton/server/flushhandlerproxy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/forcecommitcontext.cpp b/searchcore/src/vespa/searchcore/proton/server/forcecommitcontext.cpp
index 28f416c1732..6bff26d6fe9 100644
--- a/searchcore/src/vespa/searchcore/proton/server/forcecommitcontext.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/forcecommitcontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "forcecommitcontext.h"
#include "forcecommitdonetask.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/forcecommitcontext.h b/searchcore/src/vespa/searchcore/proton/server/forcecommitcontext.h
index cbb4e6e86e1..f79ccccd1bd 100644
--- a/searchcore/src/vespa/searchcore/proton/server/forcecommitcontext.h
+++ b/searchcore/src/vespa/searchcore/proton/server/forcecommitcontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/forcecommitdonetask.cpp b/searchcore/src/vespa/searchcore/proton/server/forcecommitdonetask.cpp
index 733c15d55bb..9ad3096f532 100644
--- a/searchcore/src/vespa/searchcore/proton/server/forcecommitdonetask.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/forcecommitdonetask.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "forcecommitdonetask.h"
#include <vespa/searchcore/proton/documentmetastore/i_document_meta_store.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/forcecommitdonetask.h b/searchcore/src/vespa/searchcore/proton/server/forcecommitdonetask.h
index fe95d1575e9..248b2cc6547 100644
--- a/searchcore/src/vespa/searchcore/proton/server/forcecommitdonetask.h
+++ b/searchcore/src/vespa/searchcore/proton/server/forcecommitdonetask.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/health_adapter.cpp b/searchcore/src/vespa/searchcore/proton/server/health_adapter.cpp
index c0f367468a7..628b7a9e549 100644
--- a/searchcore/src/vespa/searchcore/proton/server/health_adapter.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/health_adapter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "health_adapter.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/health_adapter.h b/searchcore/src/vespa/searchcore/proton/server/health_adapter.h
index 2d86f2b9391..59819400027 100644
--- a/searchcore/src/vespa/searchcore/proton/server/health_adapter.h
+++ b/searchcore/src/vespa/searchcore/proton/server/health_adapter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/heart_beat_job.cpp b/searchcore/src/vespa/searchcore/proton/server/heart_beat_job.cpp
index 59ca8d95c6a..4a738f0a609 100644
--- a/searchcore/src/vespa/searchcore/proton/server/heart_beat_job.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/heart_beat_job.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "heart_beat_job.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/heart_beat_job.h b/searchcore/src/vespa/searchcore/proton/server/heart_beat_job.h
index cd155d61653..969904fe4f5 100644
--- a/searchcore/src/vespa/searchcore/proton/server/heart_beat_job.h
+++ b/searchcore/src/vespa/searchcore/proton/server/heart_beat_job.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "document_db_maintenance_config.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/i_attribute_writer_factory.h b/searchcore/src/vespa/searchcore/proton/server/i_attribute_writer_factory.h
index dadc2182890..da1f76b7a38 100644
--- a/searchcore/src/vespa/searchcore/proton/server/i_attribute_writer_factory.h
+++ b/searchcore/src/vespa/searchcore/proton/server/i_attribute_writer_factory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcore/proton/attribute/attribute_collection_spec.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/i_blockable_maintenance_job.h b/searchcore/src/vespa/searchcore/proton/server/i_blockable_maintenance_job.h
index 63ff269580e..aa68867cf67 100644
--- a/searchcore/src/vespa/searchcore/proton/server/i_blockable_maintenance_job.h
+++ b/searchcore/src/vespa/searchcore/proton/server/i_blockable_maintenance_job.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_maintenance_job.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/i_disk_mem_usage_listener.h b/searchcore/src/vespa/searchcore/proton/server/i_disk_mem_usage_listener.h
index 0368b1948f0..c7efd8fa8e4 100644
--- a/searchcore/src/vespa/searchcore/proton/server/i_disk_mem_usage_listener.h
+++ b/searchcore/src/vespa/searchcore/proton/server/i_disk_mem_usage_listener.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/i_disk_mem_usage_notifier.h b/searchcore/src/vespa/searchcore/proton/server/i_disk_mem_usage_notifier.h
index 99de2cbd083..0abcfd6dc1b 100644
--- a/searchcore/src/vespa/searchcore/proton/server/i_disk_mem_usage_notifier.h
+++ b/searchcore/src/vespa/searchcore/proton/server/i_disk_mem_usage_notifier.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/i_document_db_config_owner.h b/searchcore/src/vespa/searchcore/proton/server/i_document_db_config_owner.h
index feb33e11721..7e1dda917f8 100644
--- a/searchcore/src/vespa/searchcore/proton/server/i_document_db_config_owner.h
+++ b/searchcore/src/vespa/searchcore/proton/server/i_document_db_config_owner.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/i_document_scan_iterator.h b/searchcore/src/vespa/searchcore/proton/server/i_document_scan_iterator.h
index bcc52ffb475..60e3d1c6081 100644
--- a/searchcore/src/vespa/searchcore/proton/server/i_document_scan_iterator.h
+++ b/searchcore/src/vespa/searchcore/proton/server/i_document_scan_iterator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/i_document_subdb_owner.h b/searchcore/src/vespa/searchcore/proton/server/i_document_subdb_owner.h
index 3acde1392d5..4bd143a077e 100644
--- a/searchcore/src/vespa/searchcore/proton/server/i_document_subdb_owner.h
+++ b/searchcore/src/vespa/searchcore/proton/server/i_document_subdb_owner.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/i_feed_handler_owner.h b/searchcore/src/vespa/searchcore/proton/server/i_feed_handler_owner.h
index b760a74137f..ae8d21decb1 100644
--- a/searchcore/src/vespa/searchcore/proton/server/i_feed_handler_owner.h
+++ b/searchcore/src/vespa/searchcore/proton/server/i_feed_handler_owner.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/i_inc_serial_num.h b/searchcore/src/vespa/searchcore/proton/server/i_inc_serial_num.h
index d0832350fe0..7a9e98cda22 100644
--- a/searchcore/src/vespa/searchcore/proton/server/i_inc_serial_num.h
+++ b/searchcore/src/vespa/searchcore/proton/server/i_inc_serial_num.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/i_lid_space_compaction_handler.h b/searchcore/src/vespa/searchcore/proton/server/i_lid_space_compaction_handler.h
index 223f4dd01d6..d7920af8407 100644
--- a/searchcore/src/vespa/searchcore/proton/server/i_lid_space_compaction_handler.h
+++ b/searchcore/src/vespa/searchcore/proton/server/i_lid_space_compaction_handler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/i_maintenance_job.h b/searchcore/src/vespa/searchcore/proton/server/i_maintenance_job.h
index 7148576b76f..3ee862481e5 100644
--- a/searchcore/src/vespa/searchcore/proton/server/i_maintenance_job.h
+++ b/searchcore/src/vespa/searchcore/proton/server/i_maintenance_job.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/i_move_operation_limiter.h b/searchcore/src/vespa/searchcore/proton/server/i_move_operation_limiter.h
index 0eae0c5924f..eacd1cad576 100644
--- a/searchcore/src/vespa/searchcore/proton/server/i_move_operation_limiter.h
+++ b/searchcore/src/vespa/searchcore/proton/server/i_move_operation_limiter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/searchcore/src/vespa/searchcore/proton/server/i_operation_storer.h b/searchcore/src/vespa/searchcore/proton/server/i_operation_storer.h
index b4e0667aaa4..1087cd0d27f 100644
--- a/searchcore/src/vespa/searchcore/proton/server/i_operation_storer.h
+++ b/searchcore/src/vespa/searchcore/proton/server/i_operation_storer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/i_proton_configurer.h b/searchcore/src/vespa/searchcore/proton/server/i_proton_configurer.h
index df7100a6415..6471a817f24 100644
--- a/searchcore/src/vespa/searchcore/proton/server/i_proton_configurer.h
+++ b/searchcore/src/vespa/searchcore/proton/server/i_proton_configurer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/i_proton_configurer_owner.h b/searchcore/src/vespa/searchcore/proton/server/i_proton_configurer_owner.h
index 5a457b168ec..0d6bb07b173 100644
--- a/searchcore/src/vespa/searchcore/proton/server/i_proton_configurer_owner.h
+++ b/searchcore/src/vespa/searchcore/proton/server/i_proton_configurer_owner.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/i_proton_disk_layout.h b/searchcore/src/vespa/searchcore/proton/server/i_proton_disk_layout.h
index 1ee521379eb..de61dcabae3 100644
--- a/searchcore/src/vespa/searchcore/proton/server/i_proton_disk_layout.h
+++ b/searchcore/src/vespa/searchcore/proton/server/i_proton_disk_layout.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/ibucketfreezelistener.h b/searchcore/src/vespa/searchcore/proton/server/ibucketfreezelistener.h
index 719e7746326..fefe945973a 100644
--- a/searchcore/src/vespa/searchcore/proton/server/ibucketfreezelistener.h
+++ b/searchcore/src/vespa/searchcore/proton/server/ibucketfreezelistener.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/ibucketfreezer.h b/searchcore/src/vespa/searchcore/proton/server/ibucketfreezer.h
index 15cb974fef5..bbf3c15d5fe 100644
--- a/searchcore/src/vespa/searchcore/proton/server/ibucketfreezer.h
+++ b/searchcore/src/vespa/searchcore/proton/server/ibucketfreezer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/ibucketmodifiedhandler.h b/searchcore/src/vespa/searchcore/proton/server/ibucketmodifiedhandler.h
index 1c23c35e082..108d14629a9 100644
--- a/searchcore/src/vespa/searchcore/proton/server/ibucketmodifiedhandler.h
+++ b/searchcore/src/vespa/searchcore/proton/server/ibucketmodifiedhandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/ibucketstatecalculator.h b/searchcore/src/vespa/searchcore/proton/server/ibucketstatecalculator.h
index 1ef3c00b2c9..b60a5ad8175 100644
--- a/searchcore/src/vespa/searchcore/proton/server/ibucketstatecalculator.h
+++ b/searchcore/src/vespa/searchcore/proton/server/ibucketstatecalculator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/ibucketstatechangedhandler.h b/searchcore/src/vespa/searchcore/proton/server/ibucketstatechangedhandler.h
index f97d1b697cb..f3252a150b5 100644
--- a/searchcore/src/vespa/searchcore/proton/server/ibucketstatechangedhandler.h
+++ b/searchcore/src/vespa/searchcore/proton/server/ibucketstatechangedhandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/ibucketstatechangednotifier.h b/searchcore/src/vespa/searchcore/proton/server/ibucketstatechangednotifier.h
index 0f1f03370d0..13302b99d53 100644
--- a/searchcore/src/vespa/searchcore/proton/server/ibucketstatechangednotifier.h
+++ b/searchcore/src/vespa/searchcore/proton/server/ibucketstatechangednotifier.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/iclusterstatechangedhandler.h b/searchcore/src/vespa/searchcore/proton/server/iclusterstatechangedhandler.h
index 4664403f5cf..e9bb36a4a79 100644
--- a/searchcore/src/vespa/searchcore/proton/server/iclusterstatechangedhandler.h
+++ b/searchcore/src/vespa/searchcore/proton/server/iclusterstatechangedhandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/iclusterstatechangednotifier.h b/searchcore/src/vespa/searchcore/proton/server/iclusterstatechangednotifier.h
index 09cbe5454cd..27f9bfcd7d9 100644
--- a/searchcore/src/vespa/searchcore/proton/server/iclusterstatechangednotifier.h
+++ b/searchcore/src/vespa/searchcore/proton/server/iclusterstatechangednotifier.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/idocumentdbowner.cpp b/searchcore/src/vespa/searchcore/proton/server/idocumentdbowner.cpp
index 6a2443241bd..30c9744d7bf 100644
--- a/searchcore/src/vespa/searchcore/proton/server/idocumentdbowner.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/idocumentdbowner.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "idocumentdbowner.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/idocumentdbowner.h b/searchcore/src/vespa/searchcore/proton/server/idocumentdbowner.h
index 64cf7f8aa75..dc060f6a84b 100644
--- a/searchcore/src/vespa/searchcore/proton/server/idocumentdbowner.h
+++ b/searchcore/src/vespa/searchcore/proton/server/idocumentdbowner.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/idocumentmovehandler.h b/searchcore/src/vespa/searchcore/proton/server/idocumentmovehandler.h
index 253b2173a81..cb3c28a1f27 100644
--- a/searchcore/src/vespa/searchcore/proton/server/idocumentmovehandler.h
+++ b/searchcore/src/vespa/searchcore/proton/server/idocumentmovehandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/idocumentsubdb.h b/searchcore/src/vespa/searchcore/proton/server/idocumentsubdb.h
index c19f38b738f..00849d6ad31 100644
--- a/searchcore/src/vespa/searchcore/proton/server/idocumentsubdb.h
+++ b/searchcore/src/vespa/searchcore/proton/server/idocumentsubdb.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcore/proton/matching/matching_stats.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/ifeedview.h b/searchcore/src/vespa/searchcore/proton/server/ifeedview.h
index ce47559435d..4015589f43a 100644
--- a/searchcore/src/vespa/searchcore/proton/server/ifeedview.h
+++ b/searchcore/src/vespa/searchcore/proton/server/ifeedview.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/igetserialnum.h b/searchcore/src/vespa/searchcore/proton/server/igetserialnum.h
index 5a4307e23d4..577595d7090 100644
--- a/searchcore/src/vespa/searchcore/proton/server/igetserialnum.h
+++ b/searchcore/src/vespa/searchcore/proton/server/igetserialnum.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/iheartbeathandler.h b/searchcore/src/vespa/searchcore/proton/server/iheartbeathandler.h
index 3e8267f5aa5..e069e7cbb02 100644
--- a/searchcore/src/vespa/searchcore/proton/server/iheartbeathandler.h
+++ b/searchcore/src/vespa/searchcore/proton/server/iheartbeathandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/imaintenancejobrunner.h b/searchcore/src/vespa/searchcore/proton/server/imaintenancejobrunner.h
index f733821a47b..f942f8069ee 100644
--- a/searchcore/src/vespa/searchcore/proton/server/imaintenancejobrunner.h
+++ b/searchcore/src/vespa/searchcore/proton/server/imaintenancejobrunner.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/ipruneremoveddocumentshandler.h b/searchcore/src/vespa/searchcore/proton/server/ipruneremoveddocumentshandler.h
index 9e9cdeebefb..75e789afc40 100644
--- a/searchcore/src/vespa/searchcore/proton/server/ipruneremoveddocumentshandler.h
+++ b/searchcore/src/vespa/searchcore/proton/server/ipruneremoveddocumentshandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/ireplayconfig.cpp b/searchcore/src/vespa/searchcore/proton/server/ireplayconfig.cpp
index de4249c29a8..5fc1ad6ea4a 100644
--- a/searchcore/src/vespa/searchcore/proton/server/ireplayconfig.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/ireplayconfig.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "ireplayconfig.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/ireplayconfig.h b/searchcore/src/vespa/searchcore/proton/server/ireplayconfig.h
index 6b9c522b688..8f023d579a0 100644
--- a/searchcore/src/vespa/searchcore/proton/server/ireplayconfig.h
+++ b/searchcore/src/vespa/searchcore/proton/server/ireplayconfig.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/ireplaypackethandler.h b/searchcore/src/vespa/searchcore/proton/server/ireplaypackethandler.h
index bd96ee0f724..6518d89ab7c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/ireplaypackethandler.h
+++ b/searchcore/src/vespa/searchcore/proton/server/ireplaypackethandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/isummaryadapter.h b/searchcore/src/vespa/searchcore/proton/server/isummaryadapter.h
index 9e4ede6204c..701d778fb88 100644
--- a/searchcore/src/vespa/searchcore/proton/server/isummaryadapter.h
+++ b/searchcore/src/vespa/searchcore/proton/server/isummaryadapter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/query/base.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/itlssyncer.h b/searchcore/src/vespa/searchcore/proton/server/itlssyncer.h
index db3da693e3c..7a2248ce0db 100644
--- a/searchcore/src/vespa/searchcore/proton/server/itlssyncer.h
+++ b/searchcore/src/vespa/searchcore/proton/server/itlssyncer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/job_tracked_maintenance_job.cpp b/searchcore/src/vespa/searchcore/proton/server/job_tracked_maintenance_job.cpp
index aa078376ece..e317c86df05 100644
--- a/searchcore/src/vespa/searchcore/proton/server/job_tracked_maintenance_job.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/job_tracked_maintenance_job.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "job_tracked_maintenance_job.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/job_tracked_maintenance_job.h b/searchcore/src/vespa/searchcore/proton/server/job_tracked_maintenance_job.h
index ecc592a00a4..1953393bad7 100644
--- a/searchcore/src/vespa/searchcore/proton/server/job_tracked_maintenance_job.h
+++ b/searchcore/src/vespa/searchcore/proton/server/job_tracked_maintenance_job.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_maintenance_job.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_handler.cpp b/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_handler.cpp
index 1e1e15eee59..185d197add7 100644
--- a/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_handler.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_handler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_scan_iterator.h"
#include "ifeedview.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_handler.h b/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_handler.h
index 5d5664c9444..490e7142d7d 100644
--- a/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_handler.h
+++ b/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_handler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_lid_space_compaction_handler.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job.cpp b/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job.cpp
index 059408f4a5e..efe92a11f02 100644
--- a/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "lid_space_compaction_job.h"
#include "i_document_scan_iterator.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job.h b/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job.h
index 725c7387bdc..717c19f093d 100644
--- a/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job.h
+++ b/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/maintenance_controller_explorer.cpp b/searchcore/src/vespa/searchcore/proton/server/maintenance_controller_explorer.cpp
index b446c5d07ba..f7123c1f862 100644
--- a/searchcore/src/vespa/searchcore/proton/server/maintenance_controller_explorer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/maintenance_controller_explorer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "maintenance_controller_explorer.h"
#include <vespa/vespalib/data/slime/cursor.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/maintenance_controller_explorer.h b/searchcore/src/vespa/searchcore/proton/server/maintenance_controller_explorer.h
index 7fa4415a8e6..e7b28232df5 100644
--- a/searchcore/src/vespa/searchcore/proton/server/maintenance_controller_explorer.h
+++ b/searchcore/src/vespa/searchcore/proton/server/maintenance_controller_explorer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.cpp b/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.cpp
index cfe8da18270..a832f00f911 100644
--- a/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketmovejob.h"
#include "heart_beat_job.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.h b/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.h
index cbc85613e1e..8d0b01465fb 100644
--- a/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.h
+++ b/searchcore/src/vespa/searchcore/proton/server/maintenance_jobs_injector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "document_db_maintenance_config.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.cpp b/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.cpp
index 011b6cb4b07..2adcdbab217 100644
--- a/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "maintenancecontroller.h"
#include "maintenancejobrunner.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.h b/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.h
index 049238ae193..bddd58a349a 100644
--- a/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.h
+++ b/searchcore/src/vespa/searchcore/proton/server/maintenancecontroller.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/maintenancedocumentsubdb.cpp b/searchcore/src/vespa/searchcore/proton/server/maintenancedocumentsubdb.cpp
index ffbf42304d2..314b4105549 100644
--- a/searchcore/src/vespa/searchcore/proton/server/maintenancedocumentsubdb.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/maintenancedocumentsubdb.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "maintenancedocumentsubdb.h"
#include <vespa/searchcore/proton/common/ipendinglidtracker.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/maintenancedocumentsubdb.h b/searchcore/src/vespa/searchcore/proton/server/maintenancedocumentsubdb.h
index 5710e893503..52c31196397 100644
--- a/searchcore/src/vespa/searchcore/proton/server/maintenancedocumentsubdb.h
+++ b/searchcore/src/vespa/searchcore/proton/server/maintenancedocumentsubdb.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/maintenancejobrunner.cpp b/searchcore/src/vespa/searchcore/proton/server/maintenancejobrunner.cpp
index d508c3193fc..16d74479ebe 100644
--- a/searchcore/src/vespa/searchcore/proton/server/maintenancejobrunner.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/maintenancejobrunner.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "maintenancejobrunner.h"
#include <vespa/vespalib/util/lambdatask.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/maintenancejobrunner.h b/searchcore/src/vespa/searchcore/proton/server/maintenancejobrunner.h
index 6d51a4418ee..151cc302cd3 100644
--- a/searchcore/src/vespa/searchcore/proton/server/maintenancejobrunner.h
+++ b/searchcore/src/vespa/searchcore/proton/server/maintenancejobrunner.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/matchers.cpp b/searchcore/src/vespa/searchcore/proton/server/matchers.cpp
index 7288e3e98fb..9ed9b45c1bd 100644
--- a/searchcore/src/vespa/searchcore/proton/server/matchers.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/matchers.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "matchers.h"
#include <vespa/searchcore/proton/matching/matcher.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/matchers.h b/searchcore/src/vespa/searchcore/proton/server/matchers.h
index aa23d740872..b9c47da4c3e 100644
--- a/searchcore/src/vespa/searchcore/proton/server/matchers.h
+++ b/searchcore/src/vespa/searchcore/proton/server/matchers.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/matchview.cpp b/searchcore/src/vespa/searchcore/proton/server/matchview.cpp
index 61b37a47d09..a265281b4ce 100644
--- a/searchcore/src/vespa/searchcore/proton/server/matchview.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/matchview.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "matchview.h"
#include "searchcontext.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/matchview.h b/searchcore/src/vespa/searchcore/proton/server/matchview.h
index 721cb439508..ee0c10cd333 100644
--- a/searchcore/src/vespa/searchcore/proton/server/matchview.h
+++ b/searchcore/src/vespa/searchcore/proton/server/matchview.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/memory_flush_config_updater.cpp b/searchcore/src/vespa/searchcore/proton/server/memory_flush_config_updater.cpp
index b842820bfe1..51243b718ec 100644
--- a/searchcore/src/vespa/searchcore/proton/server/memory_flush_config_updater.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/memory_flush_config_updater.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "memory_flush_config_updater.h"
#include <vespa/vespalib/util/size_literals.h>
@@ -78,11 +78,11 @@ MemoryFlushConfigUpdater::updateFlushStrategy(const LockGuard &guard, const char
if ( currentConfig != newConfig ) {
_flushStrategy->setConfig(newConfig);
LOG(info, "Due to %s (conservative-disk=%d, conservative-memory=%d, retired=%d) flush config updated to "
- "global-disk-bloat(%1.2f), max-tls-size(%" PRIu64 "),"
- "max-global-memory(%" PRIu64 "), max-memory-gain(%" PRIu64 ")",
+ "global-disk-bloat(%1.2f), max-tls-size(%" PRIu64 "),max-global-memory(%" PRIu64 "), max-memory-gain(%" PRIu64 ")",
why, _useConservativeDiskMode, _useConservativeMemoryMode, _nodeRetired,
newConfig.globalDiskBloatFactor, newConfig.maxGlobalTlsSize,
newConfig.maxGlobalMemory, newConfig.maxMemoryGain);
+ LOG(debug, "Old config = %s\nNew config = %s", currentConfig.toString().c_str(), newConfig.toString().c_str());
}
}
diff --git a/searchcore/src/vespa/searchcore/proton/server/memory_flush_config_updater.h b/searchcore/src/vespa/searchcore/proton/server/memory_flush_config_updater.h
index c19074c288f..ca50838e70c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/memory_flush_config_updater.h
+++ b/searchcore/src/vespa/searchcore/proton/server/memory_flush_config_updater.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/memoryconfigstore.cpp b/searchcore/src/vespa/searchcore/proton/server/memoryconfigstore.cpp
index 6f536aa4952..969462bac03 100644
--- a/searchcore/src/vespa/searchcore/proton/server/memoryconfigstore.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/memoryconfigstore.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "memoryconfigstore.h"
#include <cassert>
diff --git a/searchcore/src/vespa/searchcore/proton/server/memoryconfigstore.h b/searchcore/src/vespa/searchcore/proton/server/memoryconfigstore.h
index 02c7ebe2d0c..647ed72da8e 100644
--- a/searchcore/src/vespa/searchcore/proton/server/memoryconfigstore.h
+++ b/searchcore/src/vespa/searchcore/proton/server/memoryconfigstore.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/memoryflush.cpp b/searchcore/src/vespa/searchcore/proton/server/memoryflush.cpp
index a3f27aa7a92..31089233032 100644
--- a/searchcore/src/vespa/searchcore/proton/server/memoryflush.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/memoryflush.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "memoryflush.h"
#include <vespa/searchcore/proton/flushengine/tls_stats_map.h>
@@ -74,6 +74,18 @@ MemoryFlush::Config::Config(uint64_t maxGlobalMemory_in,
maxTimeGain(maxTimeGain_in)
{ }
+vespalib::string
+MemoryFlush::Config::toString() const {
+ vespalib::asciistream os;
+ os << "maxGlobalMemory=" << maxGlobalMemory << " ";
+ os << "maxGlobalTlsSize=" << maxGlobalTlsSize << " ";
+ os << "globalDiskBloatFactor=" << globalDiskBloatFactor << " ";
+ os << "maxMemoryGain=" << maxMemoryGain << " ";
+ os << "diskBloatFactor=" << diskBloatFactor << " ";
+ os << "maxTimeGain(ns)=" << maxTimeGain.count();
+ return os.str();
+}
+
MemoryFlush::MemoryFlush(const Config &config, vespalib::system_time startTime)
: _lock(),
_config(config),
diff --git a/searchcore/src/vespa/searchcore/proton/server/memoryflush.h b/searchcore/src/vespa/searchcore/proton/server/memoryflush.h
index 1e8d1b1f08c..02d2945ab4f 100644
--- a/searchcore/src/vespa/searchcore/proton/server/memoryflush.h
+++ b/searchcore/src/vespa/searchcore/proton/server/memoryflush.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcore/proton/flushengine/iflushstrategy.h>
@@ -44,6 +44,7 @@ public:
(maxTimeGain == rhs.maxTimeGain) &&
(diskBloatFactor == rhs. diskBloatFactor);
}
+ vespalib::string toString() const;
};
enum OrderType { DEFAULT, MAXAGE, DISKBLOAT, TLSSIZE, MEMORY };
diff --git a/searchcore/src/vespa/searchcore/proton/server/minimal_document_retriever.cpp b/searchcore/src/vespa/searchcore/proton/server/minimal_document_retriever.cpp
index a9fab85ae0d..08403940c31 100644
--- a/searchcore/src/vespa/searchcore/proton/server/minimal_document_retriever.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/minimal_document_retriever.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "minimal_document_retriever.h"
#include <vespa/searchlib/docstore/idocumentstore.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/minimal_document_retriever.h b/searchcore/src/vespa/searchcore/proton/server/minimal_document_retriever.h
index d7265915753..f4a604d783c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/minimal_document_retriever.h
+++ b/searchcore/src/vespa/searchcore/proton/server/minimal_document_retriever.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/move_operation_limiter.cpp b/searchcore/src/vespa/searchcore/proton/server/move_operation_limiter.cpp
index d8c3cbafc88..3977848578e 100644
--- a/searchcore/src/vespa/searchcore/proton/server/move_operation_limiter.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/move_operation_limiter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "i_blockable_maintenance_job.h"
#include "move_operation_limiter.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/move_operation_limiter.h b/searchcore/src/vespa/searchcore/proton/server/move_operation_limiter.h
index 096e45d3cc6..df6f5da6085 100644
--- a/searchcore/src/vespa/searchcore/proton/server/move_operation_limiter.h
+++ b/searchcore/src/vespa/searchcore/proton/server/move_operation_limiter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_move_operation_limiter.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/operationdonecontext.cpp b/searchcore/src/vespa/searchcore/proton/server/operationdonecontext.cpp
index 445f21044a8..53b12972c44 100644
--- a/searchcore/src/vespa/searchcore/proton/server/operationdonecontext.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/operationdonecontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "operationdonecontext.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/operationdonecontext.h b/searchcore/src/vespa/searchcore/proton/server/operationdonecontext.h
index ccd7721fe25..113aae8c9bf 100644
--- a/searchcore/src/vespa/searchcore/proton/server/operationdonecontext.h
+++ b/searchcore/src/vespa/searchcore/proton/server/operationdonecontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/packetwrapper.h b/searchcore/src/vespa/searchcore/proton/server/packetwrapper.h
index 6f132604662..4738936c159 100644
--- a/searchcore/src/vespa/searchcore/proton/server/packetwrapper.h
+++ b/searchcore/src/vespa/searchcore/proton/server/packetwrapper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.cpp b/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.cpp
index 95fbcdaa204..932bab9016c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "persistencehandlerproxy.h"
#include "documentdb.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.h b/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.h
index fa32c01fb23..96bfbe18423 100644
--- a/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.h
+++ b/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/prepare_restart_handler.cpp b/searchcore/src/vespa/searchcore/proton/server/prepare_restart_handler.cpp
index 1c930ef1ddc..97b66600817 100644
--- a/searchcore/src/vespa/searchcore/proton/server/prepare_restart_handler.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/prepare_restart_handler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "prepare_restart_handler.h"
#include <vespa/searchcore/proton/flushengine/flushengine.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/prepare_restart_handler.h b/searchcore/src/vespa/searchcore/proton/server/prepare_restart_handler.h
index 2adf01d36ee..a35692c9205 100644
--- a/searchcore/src/vespa/searchcore/proton/server/prepare_restart_handler.h
+++ b/searchcore/src/vespa/searchcore/proton/server/prepare_restart_handler.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/proton.cpp b/searchcore/src/vespa/searchcore/proton/server/proton.cpp
index ef72a52eb02..17c255d506a 100644
--- a/searchcore/src/vespa/searchcore/proton/server/proton.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/proton.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "disk_mem_usage_sampler.h"
#include "document_db_explorer.h"
@@ -943,8 +943,9 @@ Proton::get_child(vespalib::stringref name) const
return std::make_unique<FlushEngineExplorer>(*_flushEngine);
} else if (name == TLS_NAME && _tls) {
return std::make_unique<search::transactionlog::TransLogServerExplorer>(_tls->getTransLogServer());
- } else if (name == RESOURCE_USAGE && _diskMemUsageSampler) {
- return std::make_unique<ResourceUsageExplorer>(_diskMemUsageSampler->writeFilter());
+ } else if (name == RESOURCE_USAGE && _diskMemUsageSampler && _persistenceEngine) {
+ return std::make_unique<ResourceUsageExplorer>(_diskMemUsageSampler->writeFilter(),
+ _persistenceEngine->get_resource_usage_tracker());
} else if (name == THREAD_POOLS) {
return std::make_unique<ProtonThreadPoolsExplorer>(_sharedExecutor.get(),
(_matchEngine) ? &_matchEngine->get_executor() : nullptr,
diff --git a/searchcore/src/vespa/searchcore/proton/server/proton.h b/searchcore/src/vespa/searchcore/proton/server/proton.h
index 0651e45bc49..78dab7a61f6 100644
--- a/searchcore/src/vespa/searchcore/proton/server/proton.h
+++ b/searchcore/src/vespa/searchcore/proton/server/proton.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/proton_config_fetcher.cpp b/searchcore/src/vespa/searchcore/proton/server/proton_config_fetcher.cpp
index dd7112dbfe6..485f14b8fb9 100644
--- a/searchcore/src/vespa/searchcore/proton/server/proton_config_fetcher.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/proton_config_fetcher.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "proton_config_fetcher.h"
#include "bootstrapconfig.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/proton_config_fetcher.h b/searchcore/src/vespa/searchcore/proton/server/proton_config_fetcher.h
index 13582a6f96c..56a4d1b8c9f 100644
--- a/searchcore/src/vespa/searchcore/proton/server/proton_config_fetcher.h
+++ b/searchcore/src/vespa/searchcore/proton/server/proton_config_fetcher.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/proton_config_snapshot.cpp b/searchcore/src/vespa/searchcore/proton/server/proton_config_snapshot.cpp
index 886cd1f4a79..021b3ef72c8 100644
--- a/searchcore/src/vespa/searchcore/proton/server/proton_config_snapshot.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/proton_config_snapshot.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "proton_config_snapshot.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/proton_config_snapshot.h b/searchcore/src/vespa/searchcore/proton/server/proton_config_snapshot.h
index 0c91af9a3a0..1cfaab0f9c7 100644
--- a/searchcore/src/vespa/searchcore/proton/server/proton_config_snapshot.h
+++ b/searchcore/src/vespa/searchcore/proton/server/proton_config_snapshot.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/proton_configurer.cpp b/searchcore/src/vespa/searchcore/proton/server/proton_configurer.cpp
index 3d7e5e7af57..7c998ceca7c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/proton_configurer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/proton_configurer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "proton_configurer.h"
#include "proton_config_snapshot.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/proton_configurer.h b/searchcore/src/vespa/searchcore/proton/server/proton_configurer.h
index 54399a26365..829da0756f8 100644
--- a/searchcore/src/vespa/searchcore/proton/server/proton_configurer.h
+++ b/searchcore/src/vespa/searchcore/proton/server/proton_configurer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/proton_disk_layout.cpp b/searchcore/src/vespa/searchcore/proton/server/proton_disk_layout.cpp
index 23289296ada..1c155abfd6b 100644
--- a/searchcore/src/vespa/searchcore/proton/server/proton_disk_layout.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/proton_disk_layout.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "proton_disk_layout.h"
#include <vespa/vespalib/io/fileutil.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/proton_disk_layout.h b/searchcore/src/vespa/searchcore/proton/server/proton_disk_layout.h
index 167a1900b99..befce5396a1 100644
--- a/searchcore/src/vespa/searchcore/proton/server/proton_disk_layout.h
+++ b/searchcore/src/vespa/searchcore/proton/server/proton_disk_layout.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/proton_thread_pools_explorer.cpp b/searchcore/src/vespa/searchcore/proton/server/proton_thread_pools_explorer.cpp
index e0db9e29c35..73c63da622d 100644
--- a/searchcore/src/vespa/searchcore/proton/server/proton_thread_pools_explorer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/proton_thread_pools_explorer.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "executor_explorer_utils.h"
#include "proton_thread_pools_explorer.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/proton_thread_pools_explorer.h b/searchcore/src/vespa/searchcore/proton/server/proton_thread_pools_explorer.h
index 8022a0483c4..7f0873a750d 100644
--- a/searchcore/src/vespa/searchcore/proton/server/proton_thread_pools_explorer.h
+++ b/searchcore/src/vespa/searchcore/proton/server/proton_thread_pools_explorer.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/prune_session_cache_job.cpp b/searchcore/src/vespa/searchcore/proton/server/prune_session_cache_job.cpp
index afbabfcd0be..080d0b4e16e 100644
--- a/searchcore/src/vespa/searchcore/proton/server/prune_session_cache_job.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/prune_session_cache_job.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "prune_session_cache_job.h"
namespace proton {
diff --git a/searchcore/src/vespa/searchcore/proton/server/prune_session_cache_job.h b/searchcore/src/vespa/searchcore/proton/server/prune_session_cache_job.h
index 49d54d4b419..23ee40e48f6 100644
--- a/searchcore/src/vespa/searchcore/proton/server/prune_session_cache_job.h
+++ b/searchcore/src/vespa/searchcore/proton/server/prune_session_cache_job.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_maintenance_job.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/pruneremoveddocumentsjob.cpp b/searchcore/src/vespa/searchcore/proton/server/pruneremoveddocumentsjob.cpp
index 45e33a965ef..c266a604e33 100644
--- a/searchcore/src/vespa/searchcore/proton/server/pruneremoveddocumentsjob.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/pruneremoveddocumentsjob.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "pruneremoveddocumentsjob.h"
#include "ipruneremoveddocumentshandler.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/pruneremoveddocumentsjob.h b/searchcore/src/vespa/searchcore/proton/server/pruneremoveddocumentsjob.h
index 637c341ff6a..5c52991d0c3 100644
--- a/searchcore/src/vespa/searchcore/proton/server/pruneremoveddocumentsjob.h
+++ b/searchcore/src/vespa/searchcore/proton/server/pruneremoveddocumentsjob.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "blockable_maintenance_job.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/putdonecontext.cpp b/searchcore/src/vespa/searchcore/proton/server/putdonecontext.cpp
index ac4f79ca89b..7801f21c906 100644
--- a/searchcore/src/vespa/searchcore/proton/server/putdonecontext.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/putdonecontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "putdonecontext.h"
#include <vespa/document/fieldvalue/document.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/putdonecontext.h b/searchcore/src/vespa/searchcore/proton/server/putdonecontext.h
index 66bae97ad02..00e8ac46c93 100644
--- a/searchcore/src/vespa/searchcore/proton/server/putdonecontext.h
+++ b/searchcore/src/vespa/searchcore/proton/server/putdonecontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/reconfig_params.cpp b/searchcore/src/vespa/searchcore/proton/server/reconfig_params.cpp
index 7cdc523e381..5ed190bad46 100644
--- a/searchcore/src/vespa/searchcore/proton/server/reconfig_params.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/reconfig_params.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "reconfig_params.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/reconfig_params.h b/searchcore/src/vespa/searchcore/proton/server/reconfig_params.h
index 95b382ab870..58b7f808114 100644
--- a/searchcore/src/vespa/searchcore/proton/server/reconfig_params.h
+++ b/searchcore/src/vespa/searchcore/proton/server/reconfig_params.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/remove_operations_rate_tracker.cpp b/searchcore/src/vespa/searchcore/proton/server/remove_operations_rate_tracker.cpp
index 22294d33aba..38b7adc68c9 100644
--- a/searchcore/src/vespa/searchcore/proton/server/remove_operations_rate_tracker.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/remove_operations_rate_tracker.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "remove_operations_rate_tracker.h"
#include <vespa/vespalib/util/time.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/remove_operations_rate_tracker.h b/searchcore/src/vespa/searchcore/proton/server/remove_operations_rate_tracker.h
index b8c0315b9e9..fcf1e013622 100644
--- a/searchcore/src/vespa/searchcore/proton/server/remove_operations_rate_tracker.h
+++ b/searchcore/src/vespa/searchcore/proton/server/remove_operations_rate_tracker.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/removedonecontext.cpp b/searchcore/src/vespa/searchcore/proton/server/removedonecontext.cpp
index 5f98db0ee49..0a04d932d1e 100644
--- a/searchcore/src/vespa/searchcore/proton/server/removedonecontext.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/removedonecontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "removedonecontext.h"
#include "removedonetask.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/removedonecontext.h b/searchcore/src/vespa/searchcore/proton/server/removedonecontext.h
index 6aa5a2297d0..0e27c840be1 100644
--- a/searchcore/src/vespa/searchcore/proton/server/removedonecontext.h
+++ b/searchcore/src/vespa/searchcore/proton/server/removedonecontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/removedonetask.cpp b/searchcore/src/vespa/searchcore/proton/server/removedonetask.cpp
index 49a7490b263..21ec4829216 100644
--- a/searchcore/src/vespa/searchcore/proton/server/removedonetask.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/removedonetask.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "removedonetask.h"
#include <vespa/searchcore/proton/documentmetastore/i_document_meta_store.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/removedonetask.h b/searchcore/src/vespa/searchcore/proton/server/removedonetask.h
index 1aa59c6d37f..64e77617062 100644
--- a/searchcore/src/vespa/searchcore/proton/server/removedonetask.h
+++ b/searchcore/src/vespa/searchcore/proton/server/removedonetask.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/replaypacketdispatcher.cpp b/searchcore/src/vespa/searchcore/proton/server/replaypacketdispatcher.cpp
index a1138503085..54272314608 100644
--- a/searchcore/src/vespa/searchcore/proton/server/replaypacketdispatcher.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/replaypacketdispatcher.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "replaypacketdispatcher.h"
#include <vespa/searchcore/proton/feedoperation/operations.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/replaypacketdispatcher.h b/searchcore/src/vespa/searchcore/proton/server/replaypacketdispatcher.h
index 771a79ddad9..7fb1b8880f4 100644
--- a/searchcore/src/vespa/searchcore/proton/server/replaypacketdispatcher.h
+++ b/searchcore/src/vespa/searchcore/proton/server/replaypacketdispatcher.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/resource_usage_explorer.cpp b/searchcore/src/vespa/searchcore/proton/server/resource_usage_explorer.cpp
index 83c268fc755..4b5e97a827b 100644
--- a/searchcore/src/vespa/searchcore/proton/server/resource_usage_explorer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/resource_usage_explorer.cpp
@@ -1,10 +1,12 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "resource_usage_explorer.h"
#include "disk_mem_usage_filter.h"
+#include <vespa/searchcore/proton/persistenceengine/resource_usage_tracker.h>
#include <vespa/vespalib/data/slime/cursor.h>
using namespace vespalib::slime;
+using storage::spi::AttributeResourceUsage;
namespace proton {
@@ -24,8 +26,10 @@ convertMemoryStatsToSlime(const vespalib::ProcessMemoryStats &stats, Cursor &obj
object.setLong("anonymousRss", stats.getAnonymousRss());
}
-ResourceUsageExplorer::ResourceUsageExplorer(const DiskMemUsageFilter &usageFilter)
- : _usageFilter(usageFilter)
+ResourceUsageExplorer::ResourceUsageExplorer(const DiskMemUsageFilter& usage_filter,
+ const ResourceUsageTracker& usage_tracker)
+ : _usage_filter(usage_filter),
+ _usage_tracker(usage_tracker)
{
}
@@ -33,25 +37,31 @@ void
ResourceUsageExplorer::get_state(const vespalib::slime::Inserter &inserter, bool full) const
{
Cursor &object = inserter.insertObject();
- DiskMemUsageState usageState = _usageFilter.usageState();
+ DiskMemUsageState usageState = _usage_filter.usageState();
+ AttributeResourceUsage attr_usage = _usage_tracker.get_resource_usage().get_attribute_address_space_usage();
if (full) {
Cursor &disk = object.setObject("disk");
disk.setDouble("usage", usageState.diskState().usage());
disk.setDouble("limit", usageState.diskState().limit());
disk.setDouble("utilization", usageState.diskState().utilization());
- convertDiskStatsToSlime(_usageFilter.getHwInfo(), _usageFilter.getDiskUsedSize(), disk.setObject("stats"));
+ convertDiskStatsToSlime(_usage_filter.getHwInfo(), _usage_filter.getDiskUsedSize(), disk.setObject("stats"));
Cursor &memory = object.setObject("memory");
memory.setDouble("usage", usageState.memoryState().usage());
memory.setDouble("limit", usageState.memoryState().limit());
memory.setDouble("utilization", usageState.memoryState().utilization());
- memory.setLong("physicalMemory", _usageFilter.getHwInfo().memory().sizeBytes());
- convertMemoryStatsToSlime(_usageFilter.getMemoryStats(), memory.setObject("stats"));
- size_t transient_memory = _usageFilter.get_transient_memory_usage();
+ memory.setLong("physicalMemory", _usage_filter.getHwInfo().memory().sizeBytes());
+ convertMemoryStatsToSlime(_usage_filter.getMemoryStats(), memory.setObject("stats"));
+ size_t transient_memory = _usage_filter.get_transient_memory_usage();
memory.setLong("transient", transient_memory);
+
+ Cursor &address_space = object.setObject("attribute_address_space");
+ address_space.setDouble("usage", attr_usage.get_usage());
+ address_space.setString("name", attr_usage.get_name());
} else {
object.setDouble("disk", usageState.diskState().usage());
object.setDouble("memory", usageState.memoryState().usage());
+ object.setDouble("attribute_address_space", attr_usage.get_usage());
}
}
diff --git a/searchcore/src/vespa/searchcore/proton/server/resource_usage_explorer.h b/searchcore/src/vespa/searchcore/proton/server/resource_usage_explorer.h
index bd6deea326f..0c36b19b7ad 100644
--- a/searchcore/src/vespa/searchcore/proton/server/resource_usage_explorer.h
+++ b/searchcore/src/vespa/searchcore/proton/server/resource_usage_explorer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -7,6 +7,7 @@
namespace proton {
class DiskMemUsageFilter;
+class ResourceUsageTracker;
/**
* Class used to explore the resource usage of proton.
@@ -14,10 +15,12 @@ class DiskMemUsageFilter;
class ResourceUsageExplorer : public vespalib::StateExplorer
{
private:
- const DiskMemUsageFilter &_usageFilter;
+ const DiskMemUsageFilter& _usage_filter;
+ const ResourceUsageTracker& _usage_tracker;
public:
- ResourceUsageExplorer(const DiskMemUsageFilter &usageFilter);
+ ResourceUsageExplorer(const DiskMemUsageFilter& usage_filter,
+ const ResourceUsageTracker& usage_tracker);
virtual void get_state(const vespalib::slime::Inserter &inserter, bool full) const override;
};
diff --git a/searchcore/src/vespa/searchcore/proton/server/resource_usage_state.h b/searchcore/src/vespa/searchcore/proton/server/resource_usage_state.h
index 0b6f34ba055..3a5b2c52ee0 100644
--- a/searchcore/src/vespa/searchcore/proton/server/resource_usage_state.h
+++ b/searchcore/src/vespa/searchcore/proton/server/resource_usage_state.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/rpc_hooks.cpp b/searchcore/src/vespa/searchcore/proton/server/rpc_hooks.cpp
index 9d78b1a0399..7a8cfe9b0d1 100644
--- a/searchcore/src/vespa/searchcore/proton/server/rpc_hooks.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/rpc_hooks.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rpc_hooks.h"
#include "proton.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/rpc_hooks.h b/searchcore/src/vespa/searchcore/proton/server/rpc_hooks.h
index 4bba2752867..8dbb555830a 100644
--- a/searchcore/src/vespa/searchcore/proton/server/rpc_hooks.h
+++ b/searchcore/src/vespa/searchcore/proton/server/rpc_hooks.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/sample_attribute_usage_job.cpp b/searchcore/src/vespa/searchcore/proton/server/sample_attribute_usage_job.cpp
index a8397d95313..7dc96b92de9 100644
--- a/searchcore/src/vespa/searchcore/proton/server/sample_attribute_usage_job.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/sample_attribute_usage_job.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sample_attribute_usage_job.h"
#include <vespa/searchcore/proton/attribute/i_attribute_manager.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/sample_attribute_usage_job.h b/searchcore/src/vespa/searchcore/proton/server/sample_attribute_usage_job.h
index bb5cf4154aa..d72305496dd 100644
--- a/searchcore/src/vespa/searchcore/proton/server/sample_attribute_usage_job.h
+++ b/searchcore/src/vespa/searchcore/proton/server/sample_attribute_usage_job.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.cpp b/searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.cpp
index 05e68ee0ec4..9c8feebef50 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "reconfig_params.h"
#include "searchable_doc_subdb_configurer.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.h b/searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.h
index 1a9ba1abff7..f05a8e39ef4 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.h
+++ b/searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp b/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp
index 67f950f87cc..4f1590259cd 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "searchable_feed_view.h"
#include "forcecommitcontext.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.h b/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.h
index 4c4f9760b3f..8a4c8d814bf 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.h
+++ b/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp b/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp
index d7aaa901530..ea52cb14d00 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "searchabledocsubdb.h"
#include "fast_access_document_retriever.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.h b/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.h
index 1b9e18961f6..c310aeb2a2b 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.h
+++ b/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "fast_access_doc_subdb.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchcontext.cpp b/searchcore/src/vespa/searchcore/proton/server/searchcontext.cpp
index d9207ef70e1..4317823f5e2 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchcontext.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/searchcontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "searchcontext.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchcontext.h b/searchcore/src/vespa/searchcore/proton/server/searchcontext.h
index b21eef46733..137e75e68e7 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchcontext.h
+++ b/searchcore/src/vespa/searchcore/proton/server/searchcontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/attribute/attribute_blueprint_factory.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchhandlerproxy.cpp b/searchcore/src/vespa/searchcore/proton/server/searchhandlerproxy.cpp
index 2c1133ad1d6..f2343b61579 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchhandlerproxy.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/searchhandlerproxy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "searchhandlerproxy.h"
#include "documentdb.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchhandlerproxy.h b/searchcore/src/vespa/searchcore/proton/server/searchhandlerproxy.h
index d6690fda47e..4eaf15b3b1c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchhandlerproxy.h
+++ b/searchcore/src/vespa/searchcore/proton/server/searchhandlerproxy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchview.cpp b/searchcore/src/vespa/searchcore/proton/server/searchview.cpp
index 69657ff91ff..f12a358ba93 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchview.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/searchview.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "searchview.h"
#include <vespa/searchcore/proton/docsummary/docsumcontext.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchview.h b/searchcore/src/vespa/searchcore/proton/server/searchview.h
index 630d29c32fd..c8174c0a9a6 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchview.h
+++ b/searchcore/src/vespa/searchcore/proton/server/searchview.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/simpleflush.cpp b/searchcore/src/vespa/searchcore/proton/server/simpleflush.cpp
index d82d10fbd06..2de6dadcd26 100644
--- a/searchcore/src/vespa/searchcore/proton/server/simpleflush.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/simpleflush.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simpleflush.h"
#include <algorithm>
diff --git a/searchcore/src/vespa/searchcore/proton/server/simpleflush.h b/searchcore/src/vespa/searchcore/proton/server/simpleflush.h
index c1f6e689eaa..3a066e100f0 100644
--- a/searchcore/src/vespa/searchcore/proton/server/simpleflush.h
+++ b/searchcore/src/vespa/searchcore/proton/server/simpleflush.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcore/proton/flushengine/iflushstrategy.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp
index d59ca6647dd..ca86eaa5a84 100644
--- a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "docstorevalidator.h"
#include "document_subdb_initializer.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h
index eb0821d4535..50e5ffba0e2 100644
--- a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h
+++ b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentdbconfig.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp
index de3baa8d26e..d24bd9cbdc6 100644
--- a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "storeonlyfeedview.h"
#include "forcecommitcontext.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h
index b9e02276180..dc4b26d1ce2 100644
--- a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h
+++ b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/summaryadapter.cpp b/searchcore/src/vespa/searchcore/proton/server/summaryadapter.cpp
index 7abf30de40a..57786a5f788 100644
--- a/searchcore/src/vespa/searchcore/proton/server/summaryadapter.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/summaryadapter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "summaryadapter.h"
#include <vespa/searchcore/proton/docsummary/summarymanager.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/summaryadapter.h b/searchcore/src/vespa/searchcore/proton/server/summaryadapter.h
index dfcbc5c05a5..89b3827628c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/summaryadapter.h
+++ b/searchcore/src/vespa/searchcore/proton/server/summaryadapter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "isummaryadapter.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/threading_service_config.cpp b/searchcore/src/vespa/searchcore/proton/server/threading_service_config.cpp
index a7631148a43..e2d3c4a2366 100644
--- a/searchcore/src/vespa/searchcore/proton/server/threading_service_config.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/threading_service_config.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "threading_service_config.h"
#include <vespa/searchcore/config/config-proton.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/threading_service_config.h b/searchcore/src/vespa/searchcore/proton/server/threading_service_config.h
index f6eba2734b9..d945e9911fc 100644
--- a/searchcore/src/vespa/searchcore/proton/server/threading_service_config.h
+++ b/searchcore/src/vespa/searchcore/proton/server/threading_service_config.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcore/proton/common/hw_info.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/tls_replay_progress.h b/searchcore/src/vespa/searchcore/proton/server/tls_replay_progress.h
index eb446b71f84..ce0195ad120 100644
--- a/searchcore/src/vespa/searchcore/proton/server/tls_replay_progress.h
+++ b/searchcore/src/vespa/searchcore/proton/server/tls_replay_progress.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/tlssyncer.cpp b/searchcore/src/vespa/searchcore/proton/server/tlssyncer.cpp
index 4d104256cbd..5b3dfc76023 100644
--- a/searchcore/src/vespa/searchcore/proton/server/tlssyncer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/tlssyncer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tlssyncer.h"
#include "igetserialnum.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/tlssyncer.h b/searchcore/src/vespa/searchcore/proton/server/tlssyncer.h
index afcf8941b6a..b4ce1c46978 100644
--- a/searchcore/src/vespa/searchcore/proton/server/tlssyncer.h
+++ b/searchcore/src/vespa/searchcore/proton/server/tlssyncer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/tlswriter.h b/searchcore/src/vespa/searchcore/proton/server/tlswriter.h
index 5d51580c0ad..19f118aff94 100644
--- a/searchcore/src/vespa/searchcore/proton/server/tlswriter.h
+++ b/searchcore/src/vespa/searchcore/proton/server/tlswriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/transactionlogmanager.cpp b/searchcore/src/vespa/searchcore/proton/server/transactionlogmanager.cpp
index 08209f8b2d5..9b81904c695 100644
--- a/searchcore/src/vespa/searchcore/proton/server/transactionlogmanager.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/transactionlogmanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configstore.h"
#include "transactionlogmanager.h"
diff --git a/searchcore/src/vespa/searchcore/proton/server/transactionlogmanager.h b/searchcore/src/vespa/searchcore/proton/server/transactionlogmanager.h
index 6ed6990d8d5..7634fbb2e8c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/transactionlogmanager.h
+++ b/searchcore/src/vespa/searchcore/proton/server/transactionlogmanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/transactionlogmanagerbase.cpp b/searchcore/src/vespa/searchcore/proton/server/transactionlogmanagerbase.cpp
index a8ecb2ba07b..5fe54219868 100644
--- a/searchcore/src/vespa/searchcore/proton/server/transactionlogmanagerbase.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/transactionlogmanagerbase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "transactionlogmanagerbase.h"
#include <vespa/searchlib/transactionlog/translogclient.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/transactionlogmanagerbase.h b/searchcore/src/vespa/searchcore/proton/server/transactionlogmanagerbase.h
index 7059604dfe7..5c795ecf5ec 100644
--- a/searchcore/src/vespa/searchcore/proton/server/transactionlogmanagerbase.h
+++ b/searchcore/src/vespa/searchcore/proton/server/transactionlogmanagerbase.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/server/updatedonecontext.cpp b/searchcore/src/vespa/searchcore/proton/server/updatedonecontext.cpp
index 8558c19f1ba..5842965a18a 100644
--- a/searchcore/src/vespa/searchcore/proton/server/updatedonecontext.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/updatedonecontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "updatedonecontext.h"
#include <vespa/document/fieldvalue/document.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/updatedonecontext.h b/searchcore/src/vespa/searchcore/proton/server/updatedonecontext.h
index 6ca0e118b5b..62448102f30 100644
--- a/searchcore/src/vespa/searchcore/proton/server/updatedonecontext.h
+++ b/searchcore/src/vespa/searchcore/proton/server/updatedonecontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/summaryengine/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/summaryengine/CMakeLists.txt
index b3b7ab8d6e0..e2aa87ddacd 100644
--- a/searchcore/src/vespa/searchcore/proton/summaryengine/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/proton/summaryengine/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcore_summaryengine STATIC
SOURCES
summaryengine.cpp
diff --git a/searchcore/src/vespa/searchcore/proton/summaryengine/docsum_by_slime.cpp b/searchcore/src/vespa/searchcore/proton/summaryengine/docsum_by_slime.cpp
index 8457d697613..7999bcf85d6 100644
--- a/searchcore/src/vespa/searchcore/proton/summaryengine/docsum_by_slime.cpp
+++ b/searchcore/src/vespa/searchcore/proton/summaryengine/docsum_by_slime.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "docsum_by_slime.h"
#include <vespa/fnet/frt/rpcrequest.h>
#include <vespa/searchlib/common/packets.h>
diff --git a/searchcore/src/vespa/searchcore/proton/summaryengine/docsum_by_slime.h b/searchcore/src/vespa/searchcore/proton/summaryengine/docsum_by_slime.h
index 14438fe13f3..8203870ac91 100644
--- a/searchcore/src/vespa/searchcore/proton/summaryengine/docsum_by_slime.h
+++ b/searchcore/src/vespa/searchcore/proton/summaryengine/docsum_by_slime.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/engine/docsumapi.h>
diff --git a/searchcore/src/vespa/searchcore/proton/summaryengine/isearchhandler.h b/searchcore/src/vespa/searchcore/proton/summaryengine/isearchhandler.h
index b7dd438ae29..dd4b7f0bb53 100644
--- a/searchcore/src/vespa/searchcore/proton/summaryengine/isearchhandler.h
+++ b/searchcore/src/vespa/searchcore/proton/summaryengine/isearchhandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/thread_bundle.h>
diff --git a/searchcore/src/vespa/searchcore/proton/summaryengine/summaryengine.cpp b/searchcore/src/vespa/searchcore/proton/summaryengine/summaryengine.cpp
index 1867fb06bf4..55fa539cf0b 100644
--- a/searchcore/src/vespa/searchcore/proton/summaryengine/summaryengine.cpp
+++ b/searchcore/src/vespa/searchcore/proton/summaryengine/summaryengine.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "summaryengine.h"
#include <vespa/vespalib/data/slime/slime.h>
#include <vespa/vespalib/util/size_literals.h>
@@ -128,6 +128,9 @@ SummaryEngine::getDocsums(DocsumRequest::Source request, DocsumClient & client)
DocsumReply::UP
SummaryEngine::getDocsums(DocsumRequest::UP req)
{
+ auto my_issues = std::make_unique<search::UniqueIssues>();
+ auto capture_issues = vespalib::Issue::listen(*my_issues);
+
DocsumReply::UP reply = std::make_unique<DocsumReply>();
if (req) {
@@ -147,6 +150,7 @@ SummaryEngine::getDocsums(DocsumRequest::UP req)
updateDocsumMetrics(vespalib::to_s(req->getTimeUsed()), getNumDocs(*reply));
}
reply->request = std::move(req);
+ reply->my_issues = std::move(my_issues);
return reply;
}
diff --git a/searchcore/src/vespa/searchcore/proton/summaryengine/summaryengine.h b/searchcore/src/vespa/searchcore/proton/summaryengine/summaryengine.h
index fa3bcc805a4..a439306b69b 100644
--- a/searchcore/src/vespa/searchcore/proton/summaryengine/summaryengine.h
+++ b/searchcore/src/vespa/searchcore/proton/summaryengine/summaryengine.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "isearchhandler.h"
diff --git a/searchcore/src/vespa/searchcore/proton/test/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/test/CMakeLists.txt
index 488ac1041f1..2c5dbe0317b 100644
--- a/searchcore/src/vespa/searchcore/proton/test/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/proton/test/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcore_test STATIC
SOURCES
attribute_vectors.cpp
diff --git a/searchcore/src/vespa/searchcore/proton/test/attribute_utils.h b/searchcore/src/vespa/searchcore/proton/test/attribute_utils.h
index a58260f86cd..c296129984b 100644
--- a/searchcore/src/vespa/searchcore/proton/test/attribute_utils.h
+++ b/searchcore/src/vespa/searchcore/proton/test/attribute_utils.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/hdr_abort.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/attribute_vectors.h b/searchcore/src/vespa/searchcore/proton/test/attribute_vectors.h
index f56cfd84ff4..f073e808978 100644
--- a/searchcore/src/vespa/searchcore/proton/test/attribute_vectors.h
+++ b/searchcore/src/vespa/searchcore/proton/test/attribute_vectors.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/attribute/integerbase.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/bucketdocuments.h b/searchcore/src/vespa/searchcore/proton/test/bucketdocuments.h
index ce27cc7673b..3788f6a6897 100644
--- a/searchcore/src/vespa/searchcore/proton/test/bucketdocuments.h
+++ b/searchcore/src/vespa/searchcore/proton/test/bucketdocuments.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "document.h"
diff --git a/searchcore/src/vespa/searchcore/proton/test/bucketfactory.cpp b/searchcore/src/vespa/searchcore/proton/test/bucketfactory.cpp
index 4302b9474da..fb882ce56b9 100644
--- a/searchcore/src/vespa/searchcore/proton/test/bucketfactory.cpp
+++ b/searchcore/src/vespa/searchcore/proton/test/bucketfactory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketfactory.h"
#include <vespa/persistence/spi/test.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/bucketfactory.h b/searchcore/src/vespa/searchcore/proton/test/bucketfactory.h
index 0d8f33b436e..4314acf3c0e 100644
--- a/searchcore/src/vespa/searchcore/proton/test/bucketfactory.h
+++ b/searchcore/src/vespa/searchcore/proton/test/bucketfactory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/base/documentid.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/buckethandler.cpp b/searchcore/src/vespa/searchcore/proton/test/buckethandler.cpp
index 2a66cf9635f..0e32fe7620f 100644
--- a/searchcore/src/vespa/searchcore/proton/test/buckethandler.cpp
+++ b/searchcore/src/vespa/searchcore/proton/test/buckethandler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "buckethandler.h"
#include <cassert>
diff --git a/searchcore/src/vespa/searchcore/proton/test/buckethandler.h b/searchcore/src/vespa/searchcore/proton/test/buckethandler.h
index c76b278dd71..4faf7ad7e7a 100644
--- a/searchcore/src/vespa/searchcore/proton/test/buckethandler.h
+++ b/searchcore/src/vespa/searchcore/proton/test/buckethandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/test/bucketstatecalculator.h b/searchcore/src/vespa/searchcore/proton/test/bucketstatecalculator.h
index de72220ffed..92230aac8d6 100644
--- a/searchcore/src/vespa/searchcore/proton/test/bucketstatecalculator.h
+++ b/searchcore/src/vespa/searchcore/proton/test/bucketstatecalculator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcore/proton/server/ibucketstatecalculator.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/clusterstatehandler.cpp b/searchcore/src/vespa/searchcore/proton/test/clusterstatehandler.cpp
index 88d52afd612..58e36809a23 100644
--- a/searchcore/src/vespa/searchcore/proton/test/clusterstatehandler.cpp
+++ b/searchcore/src/vespa/searchcore/proton/test/clusterstatehandler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "clusterstatehandler.h"
#include <cassert>
diff --git a/searchcore/src/vespa/searchcore/proton/test/clusterstatehandler.h b/searchcore/src/vespa/searchcore/proton/test/clusterstatehandler.h
index 29aad7e982e..663f95c2f62 100644
--- a/searchcore/src/vespa/searchcore/proton/test/clusterstatehandler.h
+++ b/searchcore/src/vespa/searchcore/proton/test/clusterstatehandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/test/disk_mem_usage_notifier.h b/searchcore/src/vespa/searchcore/proton/test/disk_mem_usage_notifier.h
index 9a9b9b0ea14..3f5b7d13d23 100644
--- a/searchcore/src/vespa/searchcore/proton/test/disk_mem_usage_notifier.h
+++ b/searchcore/src/vespa/searchcore/proton/test/disk_mem_usage_notifier.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/test/document.h b/searchcore/src/vespa/searchcore/proton/test/document.h
index 8f7ecf3527b..857678909fb 100644
--- a/searchcore/src/vespa/searchcore/proton/test/document.h
+++ b/searchcore/src/vespa/searchcore/proton/test/document.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/fieldvalue/document.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/document_meta_store_context_observer.h b/searchcore/src/vespa/searchcore/proton/test/document_meta_store_context_observer.h
index d9ea677c98b..16b55567550 100644
--- a/searchcore/src/vespa/searchcore/proton/test/document_meta_store_context_observer.h
+++ b/searchcore/src/vespa/searchcore/proton/test/document_meta_store_context_observer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/test/document_meta_store_observer.h b/searchcore/src/vespa/searchcore/proton/test/document_meta_store_observer.h
index 3501384b5db..f91fe685ec4 100644
--- a/searchcore/src/vespa/searchcore/proton/test/document_meta_store_observer.h
+++ b/searchcore/src/vespa/searchcore/proton/test/document_meta_store_observer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/test/documentdb_config_builder.cpp b/searchcore/src/vespa/searchcore/proton/test/documentdb_config_builder.cpp
index 18774e60202..b147667202a 100644
--- a/searchcore/src/vespa/searchcore/proton/test/documentdb_config_builder.cpp
+++ b/searchcore/src/vespa/searchcore/proton/test/documentdb_config_builder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentdb_config_builder.h"
#include <vespa/config-summary.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/documentdb_config_builder.h b/searchcore/src/vespa/searchcore/proton/test/documentdb_config_builder.h
index a248ed5544a..1d927e93d16 100644
--- a/searchcore/src/vespa/searchcore/proton/test/documentdb_config_builder.h
+++ b/searchcore/src/vespa/searchcore/proton/test/documentdb_config_builder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcore/src/vespa/searchcore/proton/test/dummy_document_store.h b/searchcore/src/vespa/searchcore/proton/test/dummy_document_store.h
index acc0cdb111d..d9b83bfc3a8 100644
--- a/searchcore/src/vespa/searchcore/proton/test/dummy_document_store.h
+++ b/searchcore/src/vespa/searchcore/proton/test/dummy_document_store.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/docstore/cachestats.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/dummy_document_sub_db.h b/searchcore/src/vespa/searchcore/proton/test/dummy_document_sub_db.h
index c95a938539c..5cc0ac5a186 100644
--- a/searchcore/src/vespa/searchcore/proton/test/dummy_document_sub_db.h
+++ b/searchcore/src/vespa/searchcore/proton/test/dummy_document_sub_db.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcore/proton/server/idocumentsubdb.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/dummy_feed_view.cpp b/searchcore/src/vespa/searchcore/proton/test/dummy_feed_view.cpp
index 631dce24044..01920866f9d 100644
--- a/searchcore/src/vespa/searchcore/proton/test/dummy_feed_view.cpp
+++ b/searchcore/src/vespa/searchcore/proton/test/dummy_feed_view.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dummy_feed_view.h"
#include <cassert>
diff --git a/searchcore/src/vespa/searchcore/proton/test/dummy_feed_view.h b/searchcore/src/vespa/searchcore/proton/test/dummy_feed_view.h
index 67189a94afb..e960aa601cb 100644
--- a/searchcore/src/vespa/searchcore/proton/test/dummy_feed_view.h
+++ b/searchcore/src/vespa/searchcore/proton/test/dummy_feed_view.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcore/proton/server/ifeedview.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/dummy_flush_handler.h b/searchcore/src/vespa/searchcore/proton/test/dummy_flush_handler.h
index af2f4c63443..f35d202dcba 100644
--- a/searchcore/src/vespa/searchcore/proton/test/dummy_flush_handler.h
+++ b/searchcore/src/vespa/searchcore/proton/test/dummy_flush_handler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcore/proton/flushengine/iflushhandler.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/dummy_flush_target.h b/searchcore/src/vespa/searchcore/proton/test/dummy_flush_target.h
index 4178780da98..3689b181c52 100644
--- a/searchcore/src/vespa/searchcore/proton/test/dummy_flush_target.h
+++ b/searchcore/src/vespa/searchcore/proton/test/dummy_flush_target.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcorespi/flush/iflushtarget.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/dummy_summary_manager.h b/searchcore/src/vespa/searchcore/proton/test/dummy_summary_manager.h
index 6eed0e3fb86..4d3513c52f5 100644
--- a/searchcore/src/vespa/searchcore/proton/test/dummy_summary_manager.h
+++ b/searchcore/src/vespa/searchcore/proton/test/dummy_summary_manager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcore/proton/docsummary/isummarymanager.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/executor_observer.h b/searchcore/src/vespa/searchcore/proton/test/executor_observer.h
index adab6adc764..95b6f8f46f7 100644
--- a/searchcore/src/vespa/searchcore/proton/test/executor_observer.h
+++ b/searchcore/src/vespa/searchcore/proton/test/executor_observer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/executor.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/mock_attribute_manager.h b/searchcore/src/vespa/searchcore/proton/test/mock_attribute_manager.h
index 3c301e66057..deb6639c855 100644
--- a/searchcore/src/vespa/searchcore/proton/test/mock_attribute_manager.h
+++ b/searchcore/src/vespa/searchcore/proton/test/mock_attribute_manager.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/hdr_abort.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/mock_document_db_reference.h b/searchcore/src/vespa/searchcore/proton/test/mock_document_db_reference.h
index 882ba9941e7..6366ebfcec0 100644
--- a/searchcore/src/vespa/searchcore/proton/test/mock_document_db_reference.h
+++ b/searchcore/src/vespa/searchcore/proton/test/mock_document_db_reference.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcore/proton/reference/i_document_db_reference.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/mock_gid_to_lid_change_handler.h b/searchcore/src/vespa/searchcore/proton/test/mock_gid_to_lid_change_handler.h
index 976cdc70048..847056687f0 100644
--- a/searchcore/src/vespa/searchcore/proton/test/mock_gid_to_lid_change_handler.h
+++ b/searchcore/src/vespa/searchcore/proton/test/mock_gid_to_lid_change_handler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcore/proton/reference/i_gid_to_lid_change_handler.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/mock_index_manager.h b/searchcore/src/vespa/searchcore/proton/test/mock_index_manager.h
index 6395ec05671..9dc1fbdd9f6 100644
--- a/searchcore/src/vespa/searchcore/proton/test/mock_index_manager.h
+++ b/searchcore/src/vespa/searchcore/proton/test/mock_index_manager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcorespi/index/iindexmanager.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/mock_index_writer.h b/searchcore/src/vespa/searchcore/proton/test/mock_index_writer.h
index 8fe180533dc..30a2f638fc5 100644
--- a/searchcore/src/vespa/searchcore/proton/test/mock_index_writer.h
+++ b/searchcore/src/vespa/searchcore/proton/test/mock_index_writer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcore/proton/index/i_index_writer.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/mock_summary_adapter.h b/searchcore/src/vespa/searchcore/proton/test/mock_summary_adapter.h
index 7eec47b4929..838e5e21852 100644
--- a/searchcore/src/vespa/searchcore/proton/test/mock_summary_adapter.h
+++ b/searchcore/src/vespa/searchcore/proton/test/mock_summary_adapter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcore/proton/server/isummaryadapter.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/resulthandler.h b/searchcore/src/vespa/searchcore/proton/test/resulthandler.h
index 0950c670388..00896cb84fe 100644
--- a/searchcore/src/vespa/searchcore/proton/test/resulthandler.h
+++ b/searchcore/src/vespa/searchcore/proton/test/resulthandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcore/proton/persistenceengine/resulthandler.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/simple_job_tracker.h b/searchcore/src/vespa/searchcore/proton/test/simple_job_tracker.h
index 9048fb7a356..6a472e5ad94 100644
--- a/searchcore/src/vespa/searchcore/proton/test/simple_job_tracker.h
+++ b/searchcore/src/vespa/searchcore/proton/test/simple_job_tracker.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcore/proton/metrics/i_job_tracker.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/simple_thread_service.h b/searchcore/src/vespa/searchcore/proton/test/simple_thread_service.h
index 69f10567209..a11f1853162 100644
--- a/searchcore/src/vespa/searchcore/proton/test/simple_thread_service.h
+++ b/searchcore/src/vespa/searchcore/proton/test/simple_thread_service.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcorespi/index/i_thread_service.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/simple_threading_service.h b/searchcore/src/vespa/searchcore/proton/test/simple_threading_service.h
index 5576c8bd672..9cb97dd452f 100644
--- a/searchcore/src/vespa/searchcore/proton/test/simple_threading_service.h
+++ b/searchcore/src/vespa/searchcore/proton/test/simple_threading_service.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "simple_thread_service.h"
diff --git a/searchcore/src/vespa/searchcore/proton/test/test.h b/searchcore/src/vespa/searchcore/proton/test/test.h
index f82ffe73795..1494823e899 100644
--- a/searchcore/src/vespa/searchcore/proton/test/test.h
+++ b/searchcore/src/vespa/searchcore/proton/test/test.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "attribute_utils.h"
diff --git a/searchcore/src/vespa/searchcore/proton/test/thread_service_observer.h b/searchcore/src/vespa/searchcore/proton/test/thread_service_observer.h
index 0b1b9730363..f2e1e64eeb3 100644
--- a/searchcore/src/vespa/searchcore/proton/test/thread_service_observer.h
+++ b/searchcore/src/vespa/searchcore/proton/test/thread_service_observer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcorespi/index/i_thread_service.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/thread_utils.h b/searchcore/src/vespa/searchcore/proton/test/thread_utils.h
index 43033d35185..84b7c12cba6 100644
--- a/searchcore/src/vespa/searchcore/proton/test/thread_utils.h
+++ b/searchcore/src/vespa/searchcore/proton/test/thread_utils.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcorespi/index/ithreadingservice.h>
diff --git a/searchcore/src/vespa/searchcore/proton/test/threading_service_observer.cpp b/searchcore/src/vespa/searchcore/proton/test/threading_service_observer.cpp
index f06a50cc61d..4112564632a 100644
--- a/searchcore/src/vespa/searchcore/proton/test/threading_service_observer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/test/threading_service_observer.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "threading_service_observer.h"
diff --git a/searchcore/src/vespa/searchcore/proton/test/threading_service_observer.h b/searchcore/src/vespa/searchcore/proton/test/threading_service_observer.h
index 7f6e7b40635..94b62962f04 100644
--- a/searchcore/src/vespa/searchcore/proton/test/threading_service_observer.h
+++ b/searchcore/src/vespa/searchcore/proton/test/threading_service_observer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "executor_observer.h"
diff --git a/searchcore/src/vespa/searchcore/proton/test/userdocuments.h b/searchcore/src/vespa/searchcore/proton/test/userdocuments.h
index 09afbf4c48e..ac3b97df9dd 100644
--- a/searchcore/src/vespa/searchcore/proton/test/userdocuments.h
+++ b/searchcore/src/vespa/searchcore/proton/test/userdocuments.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bucketdocuments.h"
diff --git a/searchcore/src/vespa/searchcore/proton/test/userdocumentsbuilder.cpp b/searchcore/src/vespa/searchcore/proton/test/userdocumentsbuilder.cpp
index cf50c991207..2cdf1c45485 100644
--- a/searchcore/src/vespa/searchcore/proton/test/userdocumentsbuilder.cpp
+++ b/searchcore/src/vespa/searchcore/proton/test/userdocumentsbuilder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "userdocumentsbuilder.h"
diff --git a/searchcore/src/vespa/searchcore/proton/test/userdocumentsbuilder.h b/searchcore/src/vespa/searchcore/proton/test/userdocumentsbuilder.h
index 875ca04224b..f05b6da11de 100644
--- a/searchcore/src/vespa/searchcore/proton/test/userdocumentsbuilder.h
+++ b/searchcore/src/vespa/searchcore/proton/test/userdocumentsbuilder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "userdocuments.h"
diff --git a/searchcore/util/showschema.pl b/searchcore/util/showschema.pl
index 5ded4505ea5..1fbdc1cfec7 100644
--- a/searchcore/util/showschema.pl
+++ b/searchcore/util/showschema.pl
@@ -1,5 +1,5 @@
#!/usr/bin/perl
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
while ( <STDIN> ) {
if ( m/^indexfield\[(\d+)\]$/ ) {
diff --git a/searchcorespi/CMakeLists.txt b/searchcorespi/CMakeLists.txt
index 2faa2be3b82..66ff3fff0f2 100644
--- a/searchcorespi/CMakeLists.txt
+++ b/searchcorespi/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/searchcorespi/src/vespa/searchcorespi/CMakeLists.txt b/searchcorespi/src/vespa/searchcorespi/CMakeLists.txt
index bee83a7f936..56608a219be 100644
--- a/searchcorespi/src/vespa/searchcorespi/CMakeLists.txt
+++ b/searchcorespi/src/vespa/searchcorespi/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcorespi
SOURCES
$<TARGET_OBJECTS:searchcorespi_flush>
diff --git a/searchcorespi/src/vespa/searchcorespi/flush/CMakeLists.txt b/searchcorespi/src/vespa/searchcorespi/flush/CMakeLists.txt
index b15d8a414ab..c7fa81ffd01 100644
--- a/searchcorespi/src/vespa/searchcorespi/flush/CMakeLists.txt
+++ b/searchcorespi/src/vespa/searchcorespi/flush/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcorespi_flush OBJECT
SOURCES
flushstats.cpp
diff --git a/searchcorespi/src/vespa/searchcorespi/flush/flushstats.cpp b/searchcorespi/src/vespa/searchcorespi/flush/flushstats.cpp
index f8ff8814e90..28632219a28 100644
--- a/searchcorespi/src/vespa/searchcorespi/flush/flushstats.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/flush/flushstats.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "flushstats.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/flush/flushstats.h b/searchcorespi/src/vespa/searchcorespi/flush/flushstats.h
index d3b09b00d1e..f92187b2112 100644
--- a/searchcorespi/src/vespa/searchcorespi/flush/flushstats.h
+++ b/searchcorespi/src/vespa/searchcorespi/flush/flushstats.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/searchcorespi/src/vespa/searchcorespi/flush/flushtask.h b/searchcorespi/src/vespa/searchcorespi/flush/flushtask.h
index d6ad4b8123b..a4de3f65fff 100644
--- a/searchcorespi/src/vespa/searchcorespi/flush/flushtask.h
+++ b/searchcorespi/src/vespa/searchcorespi/flush/flushtask.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/executor.h>
diff --git a/searchcorespi/src/vespa/searchcorespi/flush/iflushtarget.h b/searchcorespi/src/vespa/searchcorespi/flush/iflushtarget.h
index 36a4a320ad4..dff6041d7d5 100644
--- a/searchcorespi/src/vespa/searchcorespi/flush/iflushtarget.h
+++ b/searchcorespi/src/vespa/searchcorespi/flush/iflushtarget.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "flushstats.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/flush/lambdaflushtask.h b/searchcorespi/src/vespa/searchcorespi/flush/lambdaflushtask.h
index fc860a4292f..75737ce73d5 100644
--- a/searchcorespi/src/vespa/searchcorespi/flush/lambdaflushtask.h
+++ b/searchcorespi/src/vespa/searchcorespi/flush/lambdaflushtask.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "flushtask.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/CMakeLists.txt b/searchcorespi/src/vespa/searchcorespi/index/CMakeLists.txt
index cd9f033f203..c1e2b2f3dd1 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/CMakeLists.txt
+++ b/searchcorespi/src/vespa/searchcorespi/index/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchcorespi_index OBJECT
SOURCES
activediskindexes.cpp
diff --git a/searchcorespi/src/vespa/searchcorespi/index/activediskindexes.cpp b/searchcorespi/src/vespa/searchcorespi/index/activediskindexes.cpp
index bec6f02324a..c7891709801 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/activediskindexes.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/activediskindexes.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "activediskindexes.h"
#include <cassert>
diff --git a/searchcorespi/src/vespa/searchcorespi/index/activediskindexes.h b/searchcorespi/src/vespa/searchcorespi/index/activediskindexes.h
index 324ca3d47da..a63dbb8b2a7 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/activediskindexes.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/activediskindexes.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcorespi/src/vespa/searchcorespi/index/disk_index_stats.cpp b/searchcorespi/src/vespa/searchcorespi/index/disk_index_stats.cpp
index 025d6c034b0..1b77061de8c 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/disk_index_stats.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/disk_index_stats.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "disk_index_stats.h"
#include "idiskindex.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/disk_index_stats.h b/searchcorespi/src/vespa/searchcorespi/index/disk_index_stats.h
index ce2b005b956..831d95e95c1 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/disk_index_stats.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/disk_index_stats.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "index_searchable_stats.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/diskindexcleaner.cpp b/searchcorespi/src/vespa/searchcorespi/index/diskindexcleaner.cpp
index e0cb8548f0d..cce880eed3f 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/diskindexcleaner.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/diskindexcleaner.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "diskindexcleaner.h"
#include "activediskindexes.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/diskindexcleaner.h b/searchcorespi/src/vespa/searchcorespi/index/diskindexcleaner.h
index 2e691105f22..798193ab00b 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/diskindexcleaner.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/diskindexcleaner.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcorespi/src/vespa/searchcorespi/index/eventlogger.cpp b/searchcorespi/src/vespa/searchcorespi/index/eventlogger.cpp
index cf1daf983b3..7a5b1bf907a 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/eventlogger.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/eventlogger.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "eventlogger.h"
#include <vespa/searchlib/util/logutil.h>
diff --git a/searchcorespi/src/vespa/searchcorespi/index/eventlogger.h b/searchcorespi/src/vespa/searchcorespi/index/eventlogger.h
index 4613f6b7e85..6191543dcb3 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/eventlogger.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/eventlogger.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/searchcorespi/src/vespa/searchcorespi/index/fakeindexsearchable.h b/searchcorespi/src/vespa/searchcorespi/index/fakeindexsearchable.h
index 3a391363e47..25a8b6847e9 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/fakeindexsearchable.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/fakeindexsearchable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcorespi/src/vespa/searchcorespi/index/fusionrunner.cpp b/searchcorespi/src/vespa/searchcorespi/index/fusionrunner.cpp
index f7e818d2d0b..1675b6091cf 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/fusionrunner.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/fusionrunner.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fusionrunner.h"
#include "eventlogger.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/fusionrunner.h b/searchcorespi/src/vespa/searchcorespi/index/fusionrunner.h
index ddb23c33dd6..92ad42b76ad 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/fusionrunner.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/fusionrunner.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcorespi/src/vespa/searchcorespi/index/fusionspec.h b/searchcorespi/src/vespa/searchcorespi/index/fusionspec.h
index dc7eed1530e..0b147140e55 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/fusionspec.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/fusionspec.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcorespi/src/vespa/searchcorespi/index/i_thread_service.h b/searchcorespi/src/vespa/searchcorespi/index/i_thread_service.h
index 65f18ac2c79..b4e51e2dd1b 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/i_thread_service.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/i_thread_service.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/runnable.h>
diff --git a/searchcorespi/src/vespa/searchcorespi/index/idiskindex.h b/searchcorespi/src/vespa/searchcorespi/index/idiskindex.h
index 1ed5415d678..010e7e7727d 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/idiskindex.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/idiskindex.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcommon/common/schema.h>
diff --git a/searchcorespi/src/vespa/searchcorespi/index/iindexcollection.cpp b/searchcorespi/src/vespa/searchcorespi/index/iindexcollection.cpp
index a50b1958302..988c0084d4f 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/iindexcollection.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/iindexcollection.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "iindexcollection.h"
#include "idiskindex.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/searchcorespi/src/vespa/searchcorespi/index/iindexcollection.h b/searchcorespi/src/vespa/searchcorespi/index/iindexcollection.h
index 99cf27dea41..1cbf994b44f 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/iindexcollection.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/iindexcollection.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcorespi/src/vespa/searchcorespi/index/iindexmaintaineroperations.h b/searchcorespi/src/vespa/searchcorespi/index/iindexmaintaineroperations.h
index 49f463c3631..9025b56dc27 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/iindexmaintaineroperations.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/iindexmaintaineroperations.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "idiskindex.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/iindexmanager.cpp b/searchcorespi/src/vespa/searchcorespi/index/iindexmanager.cpp
index d278b5c677a..70770f6f012 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/iindexmanager.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/iindexmanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "iindexmanager.h"
namespace searchcorespi {
diff --git a/searchcorespi/src/vespa/searchcorespi/index/iindexmanager.h b/searchcorespi/src/vespa/searchcorespi/index/iindexmanager.h
index 9d77abd417f..afc7a327723 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/iindexmanager.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/iindexmanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "indexsearchable.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/imemoryindex.h b/searchcorespi/src/vespa/searchcorespi/index/imemoryindex.h
index 175bc82f81e..735beb620f6 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/imemoryindex.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/imemoryindex.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/fieldvalue/document.h>
diff --git a/searchcorespi/src/vespa/searchcorespi/index/index_manager_explorer.cpp b/searchcorespi/src/vespa/searchcorespi/index/index_manager_explorer.cpp
index 63a63b0159d..855f3c69bc9 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/index_manager_explorer.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/index_manager_explorer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "index_manager_explorer.h"
#include "index_manager_stats.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/index_manager_explorer.h b/searchcorespi/src/vespa/searchcorespi/index/index_manager_explorer.h
index f858867fd82..3e52199eeda 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/index_manager_explorer.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/index_manager_explorer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcorespi/src/vespa/searchcorespi/index/index_manager_stats.cpp b/searchcorespi/src/vespa/searchcorespi/index/index_manager_stats.cpp
index e1fd5a98e10..a93934c1500 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/index_manager_stats.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/index_manager_stats.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "index_manager_stats.h"
#include "iindexmanager.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/index_manager_stats.h b/searchcorespi/src/vespa/searchcorespi/index/index_manager_stats.h
index f751d0aa706..1e218a62660 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/index_manager_stats.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/index_manager_stats.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "disk_index_stats.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/index_searchable_stats.cpp b/searchcorespi/src/vespa/searchcorespi/index/index_searchable_stats.cpp
index e6966598625..92de7d2d292 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/index_searchable_stats.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/index_searchable_stats.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "index_searchable_stats.h"
#include "indexsearchable.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/index_searchable_stats.h b/searchcorespi/src/vespa/searchcorespi/index/index_searchable_stats.h
index f37a7422e3d..a61245ddb5d 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/index_searchable_stats.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/index_searchable_stats.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexcollection.cpp b/searchcorespi/src/vespa/searchcorespi/index/indexcollection.cpp
index 031cf0178d8..5de0a8cb69d 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexcollection.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexcollection.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "indexcollection.h"
#include "indexsearchablevisitor.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexcollection.h b/searchcorespi/src/vespa/searchcorespi/index/indexcollection.h
index e71f421c3ca..d9fb8e973e1 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexcollection.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexcollection.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexdisklayout.cpp b/searchcorespi/src/vespa/searchcorespi/index/indexdisklayout.cpp
index e3c38d15252..a13633751bb 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexdisklayout.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexdisklayout.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "indexdisklayout.h"
#include <sstream>
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexdisklayout.h b/searchcorespi/src/vespa/searchcorespi/index/indexdisklayout.h
index c9f604245e3..0598ad17c8a 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexdisklayout.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexdisklayout.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexflushtarget.cpp b/searchcorespi/src/vespa/searchcorespi/index/indexflushtarget.cpp
index bbd8e9ee35f..e72525d0aaa 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexflushtarget.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexflushtarget.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "indexflushtarget.h"
#include <vespa/vespalib/util/size_literals.h>
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexflushtarget.h b/searchcorespi/src/vespa/searchcorespi/index/indexflushtarget.h
index 0d4947bc69a..2b9ecc9574b 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexflushtarget.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexflushtarget.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "indexmaintainer.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexfusiontarget.cpp b/searchcorespi/src/vespa/searchcorespi/index/indexfusiontarget.cpp
index 64f4584e465..1df6d321f99 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexfusiontarget.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexfusiontarget.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "indexfusiontarget.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexfusiontarget.h b/searchcorespi/src/vespa/searchcorespi/index/indexfusiontarget.h
index 2f00285db44..7a9f44e6612 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexfusiontarget.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexfusiontarget.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "indexmaintainer.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp b/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp
index 122c5514518..d58d0ab4ad6 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "diskindexcleaner.h"
#include "eventlogger.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.h b/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.h
index 58ea36d685b..be9d14ee1ad 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "iindexmanager.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexmaintainerconfig.cpp b/searchcorespi/src/vespa/searchcorespi/index/indexmaintainerconfig.cpp
index 485c2f223ae..695de7b84ff 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexmaintainerconfig.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexmaintainerconfig.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "indexmaintainerconfig.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexmaintainerconfig.h b/searchcorespi/src/vespa/searchcorespi/index/indexmaintainerconfig.h
index 02f0bf4cc81..3f890e6fa76 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexmaintainerconfig.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexmaintainerconfig.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "warmupconfig.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexmaintainercontext.cpp b/searchcorespi/src/vespa/searchcorespi/index/indexmaintainercontext.cpp
index 78b9930c69a..522789e7fe8 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexmaintainercontext.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexmaintainercontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "indexmaintainercontext.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexmaintainercontext.h b/searchcorespi/src/vespa/searchcorespi/index/indexmaintainercontext.h
index ab4a447168e..c90659c55bf 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexmaintainercontext.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexmaintainercontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "ithreadingservice.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexmanagerconfig.cpp b/searchcorespi/src/vespa/searchcorespi/index/indexmanagerconfig.cpp
index e32e7decdf4..8ba9efe2734 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexmanagerconfig.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexmanagerconfig.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "indexmanagerconfig.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexmanagerconfig.h b/searchcorespi/src/vespa/searchcorespi/index/indexmanagerconfig.h
index cb82264f85b..decb03d97e0 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexmanagerconfig.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexmanagerconfig.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config/retriever/configsnapshot.h>
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexreadutilities.cpp b/searchcorespi/src/vespa/searchcorespi/index/indexreadutilities.cpp
index 9e3a81cb547..14556ddef29 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexreadutilities.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexreadutilities.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "indexreadutilities.h"
#include "indexdisklayout.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexreadutilities.h b/searchcorespi/src/vespa/searchcorespi/index/indexreadutilities.h
index 3b25917fd22..aeafd746772 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexreadutilities.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexreadutilities.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "fusionspec.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexsearchable.h b/searchcorespi/src/vespa/searchcorespi/index/indexsearchable.h
index 96db89b3e61..609d7854351 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexsearchable.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexsearchable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexsearchablevisitor.h b/searchcorespi/src/vespa/searchcorespi/index/indexsearchablevisitor.h
index a8a41d7f5d8..f85a2cf4af6 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexsearchablevisitor.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexsearchablevisitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexwriteutilities.cpp b/searchcorespi/src/vespa/searchcorespi/index/indexwriteutilities.cpp
index ebb316610e1..058a21e15c7 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexwriteutilities.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexwriteutilities.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "indexwriteutilities.h"
#include "indexdisklayout.h"
#include "indexreadutilities.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexwriteutilities.h b/searchcorespi/src/vespa/searchcorespi/index/indexwriteutilities.h
index d51a6866513..37193cce4d5 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexwriteutilities.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexwriteutilities.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchcommon/common/schema.h>
diff --git a/searchcorespi/src/vespa/searchcorespi/index/isearchableindexcollection.cpp b/searchcorespi/src/vespa/searchcorespi/index/isearchableindexcollection.cpp
index e52dc406c33..85e87965cb7 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/isearchableindexcollection.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/isearchableindexcollection.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "isearchableindexcollection.h"
#include <vespa/searchlib/queryeval/isourceselector.h>
diff --git a/searchcorespi/src/vespa/searchcorespi/index/isearchableindexcollection.h b/searchcorespi/src/vespa/searchcorespi/index/isearchableindexcollection.h
index d53141097d6..efd7062af71 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/isearchableindexcollection.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/isearchableindexcollection.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchcorespi/src/vespa/searchcorespi/index/ithreadingservice.h b/searchcorespi/src/vespa/searchcorespi/index/ithreadingservice.h
index 9cfca0dcf3b..be8c9ef7d86 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/ithreadingservice.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/ithreadingservice.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_thread_service.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/memory_index_stats.h b/searchcorespi/src/vespa/searchcorespi/index/memory_index_stats.h
index 62863bcb726..ccc85ab4dc6 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/memory_index_stats.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/memory_index_stats.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "index_searchable_stats.h"
diff --git a/searchcorespi/src/vespa/searchcorespi/index/warmupconfig.h b/searchcorespi/src/vespa/searchcorespi/index/warmupconfig.h
index 9ec5b29b3b6..8582b7256bc 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/warmupconfig.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/warmupconfig.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/time.h>
diff --git a/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.cpp b/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.cpp
index 168a6680f45..d6aba7c6ff1 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "warmupindexcollection.h"
#include "idiskindex.h"
#include <vespa/searchlib/fef/matchdatalayout.h>
diff --git a/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.h b/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.h
index fb36807b8e4..d18e43b56a7 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/CMakeLists.txt b/searchlib/CMakeLists.txt
index ea47dddb99b..5022225fbf3 100644
--- a/searchlib/CMakeLists.txt
+++ b/searchlib/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
@@ -209,7 +209,6 @@ vespa_define_module(
src/tests/queryeval/weak_and_scorers
src/tests/queryeval/weighted_set_term
src/tests/queryeval/wrappers
- src/tests/rankingexpression/feature_name_extractor
src/tests/rankingexpression/intrinsic_blueprint_adapter
src/tests/ranksetup
src/tests/ranksetup/verify_feature
@@ -234,7 +233,6 @@ vespa_define_module(
)
install_java_artifact(searchlib)
-install_fat_java_artifact(searchlib)
vespa_install_script(src/main/sh/vespa-gbdt-converter bin)
vespa_install_script(src/main/sh/vespa-treenet-converter bin)
diff --git a/searchlib/abi-spec.json b/searchlib/abi-spec.json
index 65151dd6ff0..4ebca94734f 100644
--- a/searchlib/abi-spec.json
+++ b/searchlib/abi-spec.json
@@ -898,6 +898,7 @@
"public final com.yahoo.searchlib.rankingexpression.rule.TensorFunctionNode tensorMatmul()",
"public final com.yahoo.searchlib.rankingexpression.rule.TensorFunctionNode tensorSoftmax()",
"public final com.yahoo.searchlib.rankingexpression.rule.TensorFunctionNode tensorXwPlusB()",
+ "public final com.yahoo.searchlib.rankingexpression.rule.TensorFunctionNode tensorExpand()",
"public final com.yahoo.searchlib.rankingexpression.rule.TensorFunctionNode tensorArgmax()",
"public final com.yahoo.searchlib.rankingexpression.rule.TensorFunctionNode tensorArgmin()",
"public final com.yahoo.searchlib.rankingexpression.rule.TensorFunctionNode tensorCellCast()",
@@ -1034,6 +1035,7 @@
"public static final int LDEXP",
"public static final int POW",
"public static final int BIT",
+ "public static final int HAMMING",
"public static final int MAP",
"public static final int REDUCE",
"public static final int JOIN",
@@ -1052,6 +1054,7 @@
"public static final int ARGMAX",
"public static final int ARGMIN",
"public static final int CELL_CAST",
+ "public static final int EXPAND",
"public static final int AVG",
"public static final int COUNT",
"public static final int MAX",
@@ -1389,7 +1392,8 @@
"public static final enum com.yahoo.searchlib.rankingexpression.rule.Function max",
"public static final enum com.yahoo.searchlib.rankingexpression.rule.Function min",
"public static final enum com.yahoo.searchlib.rankingexpression.rule.Function pow",
- "public static final enum com.yahoo.searchlib.rankingexpression.rule.Function bit"
+ "public static final enum com.yahoo.searchlib.rankingexpression.rule.Function bit",
+ "public static final enum com.yahoo.searchlib.rankingexpression.rule.Function hamming"
]
},
"com.yahoo.searchlib.rankingexpression.rule.FunctionNode": {
@@ -1424,6 +1428,7 @@
"public void <init>(java.util.Collection, java.util.Map)",
"public void <init>(java.util.Map)",
"public void <init>(java.util.Map, java.util.Map)",
+ "protected void <init>(com.google.common.collect.ImmutableMap, java.util.Map)",
"public com.yahoo.searchlib.rankingexpression.ExpressionFunction getFunction(java.lang.String)",
"protected com.google.common.collect.ImmutableMap functions()",
"public java.lang.String getBinding(java.lang.String)",
diff --git a/searchlib/pom.xml b/searchlib/pom.xml
index f4120ca5a10..32acf742628 100644
--- a/searchlib/pom.xml
+++ b/searchlib/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/searchlib/src/Doxyfile b/searchlib/src/Doxyfile
index c4964839c1d..96544cd14d5 100644
--- a/searchlib/src/Doxyfile
+++ b/searchlib/src/Doxyfile
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Doxyfile 1.3.9.1
# This file describes the settings to be used by the documentation system
diff --git a/searchlib/src/apps/docstore/CMakeLists.txt b/searchlib/src/apps/docstore/CMakeLists.txt
index db1828ae9ee..8563602b979 100644
--- a/searchlib/src/apps/docstore/CMakeLists.txt
+++ b/searchlib/src/apps/docstore/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_vespa-verify-logdatastore_app
SOURCES
verifylogdatastore.cpp
diff --git a/searchlib/src/apps/docstore/benchmarkdatastore.cpp b/searchlib/src/apps/docstore/benchmarkdatastore.cpp
index 5277c71cea2..4a0be335b11 100644
--- a/searchlib/src/apps/docstore/benchmarkdatastore.cpp
+++ b/searchlib/src/apps/docstore/benchmarkdatastore.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/docstore/logdatastore.h>
#include <vespa/searchlib/index/dummyfileheadercontext.h>
diff --git a/searchlib/src/apps/docstore/create-idx-from-dat.cpp b/searchlib/src/apps/docstore/create-idx-from-dat.cpp
index f58b5f20ea9..477282fdbf4 100644
--- a/searchlib/src/apps/docstore/create-idx-from-dat.cpp
+++ b/searchlib/src/apps/docstore/create-idx-from-dat.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/docstore/logdatastore.h>
#include <vespa/searchlib/docstore/randreaders.h>
diff --git a/searchlib/src/apps/docstore/documentstoreinspect.cpp b/searchlib/src/apps/docstore/documentstoreinspect.cpp
index 8acc2312d46..0fc0c26f9c7 100644
--- a/searchlib/src/apps/docstore/documentstoreinspect.cpp
+++ b/searchlib/src/apps/docstore/documentstoreinspect.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/docstore/logdatastore.h>
#include <vespa/searchlib/index/dummyfileheadercontext.h>
diff --git a/searchlib/src/apps/docstore/verifylogdatastore.cpp b/searchlib/src/apps/docstore/verifylogdatastore.cpp
index c148f12f9ee..c868707e545 100644
--- a/searchlib/src/apps/docstore/verifylogdatastore.cpp
+++ b/searchlib/src/apps/docstore/verifylogdatastore.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/docstore/logdatastore.h>
diff --git a/searchlib/src/apps/tests/CMakeLists.txt b/searchlib/src/apps/tests/CMakeLists.txt
index 5507a78b8c3..6ee010c1c62 100644
--- a/searchlib/src/apps/tests/CMakeLists.txt
+++ b/searchlib/src/apps/tests/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_biglog_test_app
SOURCES
biglogtest.cpp
diff --git a/searchlib/src/apps/tests/biglogtest.cpp b/searchlib/src/apps/tests/biglogtest.cpp
index efe6585ae69..d5c59bf5b29 100644
--- a/searchlib/src/apps/tests/biglogtest.cpp
+++ b/searchlib/src/apps/tests/biglogtest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/random.h>
#include <vespa/searchlib/docstore/logdatastore.h>
diff --git a/searchlib/src/apps/tests/btreestress_test.cpp b/searchlib/src/apps/tests/btreestress_test.cpp
index b41f663f5f7..f185deed248 100644
--- a/searchlib/src/apps/tests/btreestress_test.cpp
+++ b/searchlib/src/apps/tests/btreestress_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/btree/btree.h>
diff --git a/searchlib/src/apps/tests/document_weight_attribute_lookup_stress_test.cpp b/searchlib/src/apps/tests/document_weight_attribute_lookup_stress_test.cpp
index 8aa09e261b5..0fb115a564e 100644
--- a/searchlib/src/apps/tests/document_weight_attribute_lookup_stress_test.cpp
+++ b/searchlib/src/apps/tests/document_weight_attribute_lookup_stress_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/attribute/attributefactory.h>
#include <vespa/searchlib/attribute/integerbase.h>
diff --git a/searchlib/src/apps/tests/memoryindexstress_test.cpp b/searchlib/src/apps/tests/memoryindexstress_test.cpp
index b013f6a9d27..9ee47cc6849 100644
--- a/searchlib/src/apps/tests/memoryindexstress_test.cpp
+++ b/searchlib/src/apps/tests/memoryindexstress_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/annotation/spanlist.h>
#include <vespa/document/annotation/spantree.h>
diff --git a/searchlib/src/apps/uniform/CMakeLists.txt b/searchlib/src/apps/uniform/CMakeLists.txt
index 6cdf565f821..7fbf636f7b4 100644
--- a/searchlib/src/apps/uniform/CMakeLists.txt
+++ b/searchlib/src/apps/uniform/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_uniform_app
SOURCES
uniform.cpp
diff --git a/searchlib/src/apps/uniform/uniform.cpp b/searchlib/src/apps/uniform/uniform.cpp
index b69c2ddfc56..baec62370ed 100644
--- a/searchlib/src/apps/uniform/uniform.cpp
+++ b/searchlib/src/apps/uniform/uniform.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fastos/app.h>
#include <vespa/searchlib/bitcompression/compression.h>
diff --git a/searchlib/src/apps/vespa-attribute-inspect/CMakeLists.txt b/searchlib/src/apps/vespa-attribute-inspect/CMakeLists.txt
index 50c663b516e..5375f66a1a5 100644
--- a/searchlib/src/apps/vespa-attribute-inspect/CMakeLists.txt
+++ b/searchlib/src/apps/vespa-attribute-inspect/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_vespa-attribute-inspect_app
SOURCES
vespa-attribute-inspect.cpp
diff --git a/searchlib/src/apps/vespa-attribute-inspect/loadattribute.rb b/searchlib/src/apps/vespa-attribute-inspect/loadattribute.rb
index b47c94ade73..6f30bb5bda8 100644
--- a/searchlib/src/apps/vespa-attribute-inspect/loadattribute.rb
+++ b/searchlib/src/apps/vespa-attribute-inspect/loadattribute.rb
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
attribute = ARGV[0]
dat = File.open(attribute + ".dat", "r")
diff --git a/searchlib/src/apps/vespa-attribute-inspect/vespa-attribute-inspect.cpp b/searchlib/src/apps/vespa-attribute-inspect/vespa-attribute-inspect.cpp
index 14584a46a04..2d722a53adf 100644
--- a/searchlib/src/apps/vespa-attribute-inspect/vespa-attribute-inspect.cpp
+++ b/searchlib/src/apps/vespa-attribute-inspect/vespa-attribute-inspect.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <iostream>
#include <vespa/searchlib/attribute/attribute.h>
diff --git a/searchlib/src/apps/vespa-fileheader-inspect/CMakeLists.txt b/searchlib/src/apps/vespa-fileheader-inspect/CMakeLists.txt
index bfbc88dfbe9..57a1b2370fa 100644
--- a/searchlib/src/apps/vespa-fileheader-inspect/CMakeLists.txt
+++ b/searchlib/src/apps/vespa-fileheader-inspect/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_vespa-fileheader-inspect_app
SOURCES
vespa-fileheader-inspect.cpp
diff --git a/searchlib/src/apps/vespa-fileheader-inspect/vespa-fileheader-inspect.cpp b/searchlib/src/apps/vespa-fileheader-inspect/vespa-fileheader-inspect.cpp
index d67946d29f1..29c0a533fec 100644
--- a/searchlib/src/apps/vespa-fileheader-inspect/vespa-fileheader-inspect.cpp
+++ b/searchlib/src/apps/vespa-fileheader-inspect/vespa-fileheader-inspect.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fastos/app.h>
#include <vespa/fastos/file.h>
diff --git a/searchlib/src/apps/vespa-index-inspect/CMakeLists.txt b/searchlib/src/apps/vespa-index-inspect/CMakeLists.txt
index ea6f273b870..e1ee0a3c98b 100644
--- a/searchlib/src/apps/vespa-index-inspect/CMakeLists.txt
+++ b/searchlib/src/apps/vespa-index-inspect/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_vespa-index-inspect_app
SOURCES
vespa-index-inspect.cpp
diff --git a/searchlib/src/apps/vespa-index-inspect/vespa-index-inspect.cpp b/searchlib/src/apps/vespa-index-inspect/vespa-index-inspect.cpp
index 06fb5e71e06..25e5a7bd8a3 100644
--- a/searchlib/src/apps/vespa-index-inspect/vespa-index-inspect.cpp
+++ b/searchlib/src/apps/vespa-index-inspect/vespa-index-inspect.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/index/dictionaryfile.h>
#include <vespa/searchlib/index/postinglistfile.h>
diff --git a/searchlib/src/apps/vespa-ranking-expression-analyzer/CMakeLists.txt b/searchlib/src/apps/vespa-ranking-expression-analyzer/CMakeLists.txt
index e8b3eadbb74..ee885c619e5 100644
--- a/searchlib/src/apps/vespa-ranking-expression-analyzer/CMakeLists.txt
+++ b/searchlib/src/apps/vespa-ranking-expression-analyzer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_vespa-ranking-expression-analyzer_app
SOURCES
vespa-ranking-expression-analyzer.cpp
diff --git a/searchlib/src/apps/vespa-ranking-expression-analyzer/vespa-ranking-expression-analyzer.cpp b/searchlib/src/apps/vespa-ranking-expression-analyzer/vespa-ranking-expression-analyzer.cpp
index 3445d64c477..8db85559f49 100644
--- a/searchlib/src/apps/vespa-ranking-expression-analyzer/vespa-ranking-expression-analyzer.cpp
+++ b/searchlib/src/apps/vespa-ranking-expression-analyzer/vespa-ranking-expression-analyzer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/features/rankingexpression/feature_name_extractor.h>
#include <vespa/eval/eval/llvm/compiled_function.h>
diff --git a/searchlib/src/forcelink.sh b/searchlib/src/forcelink.sh
index bf4e9d41bbb..c98728ca876 100755
--- a/searchlib/src/forcelink.sh
+++ b/searchlib/src/forcelink.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
project=searchlib
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/AggregationResult.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/AggregationResult.java
index 6858ebb8f82..3c168090695 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/AggregationResult.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/AggregationResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.searchlib.expression.ExpressionNode;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/AverageAggregationResult.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/AverageAggregationResult.java
index bee64fd8d5d..df4bdf12980 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/AverageAggregationResult.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/AverageAggregationResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.searchlib.expression.IntegerResultNode;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/CountAggregationResult.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/CountAggregationResult.java
index df92b1eee1d..b1ee77318ff 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/CountAggregationResult.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/CountAggregationResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.searchlib.expression.IntegerResultNode;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/ExpressionCountAggregationResult.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/ExpressionCountAggregationResult.java
index 36164721c83..6f2a588acbc 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/ExpressionCountAggregationResult.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/ExpressionCountAggregationResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.searchlib.aggregation.hll.*;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/FS4Hit.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/FS4Hit.java
index 07de8bbdc55..5d606493652 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/FS4Hit.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/FS4Hit.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.document.GlobalId;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/ForceLoad.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/ForceLoad.java
index 5d4371d1b52..729b070dd57 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/ForceLoad.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/ForceLoad.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/Group.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/Group.java
index c7080ec28d8..164fe55997b 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/Group.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/Group.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.searchlib.expression.AggregationRefNode;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/Grouping.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/Grouping.java
index c13bde4b633..c8b9e87c07a 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/Grouping.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/Grouping.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.searchlib.expression.BucketResultNode;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/GroupingLevel.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/GroupingLevel.java
index 239b709406f..c166aeb173f 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/GroupingLevel.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/GroupingLevel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.searchlib.expression.ExpressionNode;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/Hit.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/Hit.java
index 663bc18dc14..4da37ac6919 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/Hit.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/Hit.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/HitsAggregationResult.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/HitsAggregationResult.java
index 63b2b881e01..b3c861cc140 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/HitsAggregationResult.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/HitsAggregationResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.searchlib.expression.FloatResultNode;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/MaxAggregationResult.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/MaxAggregationResult.java
index 8555920fb5d..9f75d57d863 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/MaxAggregationResult.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/MaxAggregationResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.searchlib.expression.ResultNode;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/MinAggregationResult.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/MinAggregationResult.java
index 95ec3a8aeda..eb76ce03c17 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/MinAggregationResult.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/MinAggregationResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.searchlib.expression.ResultNode;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/RawData.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/RawData.java
index 31e5c45c5fd..8c830fa4f25 100755
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/RawData.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/RawData.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/StandardDeviationAggregationResult.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/StandardDeviationAggregationResult.java
index 2cfff01dcc4..63e345b08e9 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/StandardDeviationAggregationResult.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/StandardDeviationAggregationResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.searchlib.expression.FloatResultNode;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/SumAggregationResult.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/SumAggregationResult.java
index d0f03a9cd19..ddcd186fcf2 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/SumAggregationResult.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/SumAggregationResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.searchlib.expression.ResultNode;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/VdsHit.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/VdsHit.java
index f26bd64a6d5..3a040869141 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/VdsHit.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/VdsHit.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.text.Utf8;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/XorAggregationResult.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/XorAggregationResult.java
index b76d32a1ee2..4e8a2a667a5 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/XorAggregationResult.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/XorAggregationResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.searchlib.expression.IntegerResultNode;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/BiasEstimator.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/BiasEstimator.java
index f04a9fa52b2..be298742a12 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/BiasEstimator.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/BiasEstimator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation.hll;
import com.google.common.base.Preconditions;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/HyperLogLog.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/HyperLogLog.java
index a6e765655bc..d5147929f3b 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/HyperLogLog.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/HyperLogLog.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation.hll;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/HyperLogLogEstimator.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/HyperLogLogEstimator.java
index b5208ca4cf4..16cfe6a0254 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/HyperLogLogEstimator.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/HyperLogLogEstimator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation.hll;
import com.google.common.base.Preconditions;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/NormalSketch.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/NormalSketch.java
index d32349906ee..327d7bb12fd 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/NormalSketch.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/NormalSketch.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation.hll;
import com.google.common.base.Preconditions;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/Sketch.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/Sketch.java
index 2f5f4774ea2..f37f7d4effd 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/Sketch.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/Sketch.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation.hll;
import com.yahoo.vespa.objects.Identifiable;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/SketchMerger.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/SketchMerger.java
index 11a51e8aa6d..41e5423472a 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/SketchMerger.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/SketchMerger.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation.hll;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/SparseSketch.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/SparseSketch.java
index 29f49060a57..2b819688df0 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/SparseSketch.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/SparseSketch.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation.hll;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/UniqueCountEstimator.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/UniqueCountEstimator.java
index 1d0d0ed5fee..88512f987d5 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/UniqueCountEstimator.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/hll/UniqueCountEstimator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation.hll;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/package-info.java b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/package-info.java
index 2806bc1f163..de09a7ecb18 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/aggregation/package-info.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/aggregation/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage package com.yahoo.searchlib.aggregation;
import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/document/package-info.java b/searchlib/src/main/java/com/yahoo/searchlib/document/package-info.java
index 66334db35c3..d79e5a99046 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/document/package-info.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/document/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.searchlib.document;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/AddFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/AddFunctionNode.java
index e098b80b71a..a3d9f0368d2 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/AddFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/AddFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/AggregationRefNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/AggregationRefNode.java
index 6ba3f1b0d8e..38440da5590 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/AggregationRefNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/AggregationRefNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.searchlib.aggregation.AggregationResult;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/AndFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/AndFunctionNode.java
index 3148c76c34f..64282230e62 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/AndFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/AndFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/ArithmeticTypeConversion.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/ArithmeticTypeConversion.java
index 2530314bc9d..257be5e9a28 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/ArithmeticTypeConversion.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/ArithmeticTypeConversion.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import java.util.HashMap;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/ArrayAtLookupNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/ArrayAtLookupNode.java
index 6793cb641ef..cd498bff737 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/ArrayAtLookupNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/ArrayAtLookupNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/AttributeMapLookupNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/AttributeMapLookupNode.java
index d15b4086e42..ffcf360a349 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/AttributeMapLookupNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/AttributeMapLookupNode.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/AttributeNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/AttributeNode.java
index 33c2cee22ac..979203bc30b 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/AttributeNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/AttributeNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/BitFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/BitFunctionNode.java
index c8ae724c0fd..4767945d5fd 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/BitFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/BitFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/BoolResultNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/BoolResultNode.java
index c850c6f2c3a..e042138e88e 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/BoolResultNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/BoolResultNode.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/BoolResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/BoolResultNodeVector.java
index b8d31be8346..03fccc9f893 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/BoolResultNodeVector.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/BoolResultNodeVector.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/BucketResultNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/BucketResultNode.java
index 659228a9b15..bef3c2f9d23 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/BucketResultNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/BucketResultNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/CatFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/CatFunctionNode.java
index 9f6395bb095..ebde9b512a1 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/CatFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/CatFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/ConstantNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/ConstantNode.java
index f2e91a2d019..2bab10d1830 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/ConstantNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/ConstantNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/DebugWaitFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/DebugWaitFunctionNode.java
index e92f5f81bbb..c14edc6c427 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/DebugWaitFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/DebugWaitFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/DivideFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/DivideFunctionNode.java
index 1bb97c02b50..ec7d624f5de 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/DivideFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/DivideFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/DocumentAccessorNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/DocumentAccessorNode.java
index e9360ba6dfd..b1001fdad99 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/DocumentAccessorNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/DocumentAccessorNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/DocumentFieldNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/DocumentFieldNode.java
index 3e23025f9e7..de7ef5b4dfb 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/DocumentFieldNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/DocumentFieldNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/ExpressionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/ExpressionNode.java
index e415ae9a964..1ed09faed64 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/ExpressionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/ExpressionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/FixedWidthBucketFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/FixedWidthBucketFunctionNode.java
index 6bf7670f7cc..8104fff6b7f 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/FixedWidthBucketFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/FixedWidthBucketFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatBucketResultNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatBucketResultNode.java
index 455a8a42505..edaa1a5b722 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatBucketResultNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatBucketResultNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatBucketResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatBucketResultNodeVector.java
index 443358c7628..9c8438aa485 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatBucketResultNodeVector.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatBucketResultNodeVector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatResultNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatResultNode.java
index bcc4f061719..41f37d53281 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatResultNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatResultNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatResultNodeVector.java
index 1cb978303df..456b5227b63 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatResultNodeVector.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatResultNodeVector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/ForceLoad.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/ForceLoad.java
index ca53c6133be..0a8020cad69 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/ForceLoad.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/ForceLoad.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/FunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/FunctionNode.java
index 1c2b5a9d72a..d1a0869bb4d 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/FunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/FunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/GetDocIdNamespaceSpecificFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/GetDocIdNamespaceSpecificFunctionNode.java
index b9b5707956d..239424df643 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/GetDocIdNamespaceSpecificFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/GetDocIdNamespaceSpecificFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
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 3e15c35b25e..ae7d0a67b2f 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/Int16ResultNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/Int16ResultNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/Int16ResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/Int16ResultNodeVector.java
index 2842efe710f..3bf24a6ca01 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/Int16ResultNodeVector.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/Int16ResultNodeVector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
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 111d3f5c5f6..da31cbc236a 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/Int32ResultNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/Int32ResultNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/Int32ResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/Int32ResultNodeVector.java
index 2dd9e577cf8..aa2ca98669b 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/Int32ResultNodeVector.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/Int32ResultNodeVector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
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 f240a2d5ef7..ae53cf45a6f 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/Int8ResultNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/Int8ResultNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/Int8ResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/Int8ResultNodeVector.java
index edae250defe..23debefed14 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/Int8ResultNodeVector.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/Int8ResultNodeVector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerBucketResultNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerBucketResultNode.java
index b8f41d8b065..4bf33b15ffe 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerBucketResultNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerBucketResultNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerBucketResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerBucketResultNodeVector.java
index c999fdfc6e2..4f92b66d834 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerBucketResultNodeVector.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerBucketResultNodeVector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerResultNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerResultNode.java
index 62534377d38..5e1163a3e36 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerResultNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerResultNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerResultNodeVector.java
index 3323460da05..986ffad8a28 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerResultNodeVector.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerResultNodeVector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/InterpolatedLookupNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/InterpolatedLookupNode.java
index bba7023dad3..81faca31480 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/InterpolatedLookupNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/InterpolatedLookupNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/MD5BitFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/MD5BitFunctionNode.java
index 7a941a9de4b..c2b931f42c2 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/MD5BitFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/MD5BitFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/MathFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/MathFunctionNode.java
index de3f494196f..06af4197b46 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/MathFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/MathFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/MaxFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/MaxFunctionNode.java
index 59a6c0dc708..8564ac54145 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/MaxFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/MaxFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/MinFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/MinFunctionNode.java
index bf131be474c..7280385bb10 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/MinFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/MinFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/ModuloFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/ModuloFunctionNode.java
index 7534cf68186..21bbdc9f524 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/ModuloFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/ModuloFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/MultiArgFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/MultiArgFunctionNode.java
index 68cc9ba445c..8779503df19 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/MultiArgFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/MultiArgFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.*;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/MultiplyFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/MultiplyFunctionNode.java
index 21d6cf31ae1..94821d20666 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/MultiplyFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/MultiplyFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/NegateFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/NegateFunctionNode.java
index a5678598f25..856b723007e 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/NegateFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/NegateFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/NormalizeSubjectFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/NormalizeSubjectFunctionNode.java
index 006f8d5e70a..531b86f5ba0 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/NormalizeSubjectFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/NormalizeSubjectFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/NullResultNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/NullResultNode.java
index 6bbc93b043a..446a4554af0 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/NullResultNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/NullResultNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.ObjectVisitor;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/NumElemFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/NumElemFunctionNode.java
index 927586050aa..af9624d093e 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/NumElemFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/NumElemFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/NumericFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/NumericFunctionNode.java
index a29031a89d7..54f4b8b7be7 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/NumericFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/NumericFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/NumericResultNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/NumericResultNode.java
index 01a09fc220f..c01c3e2ea97 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/NumericResultNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/NumericResultNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/OrFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/OrFunctionNode.java
index 50b94e6fdf2..b9123daa6d3 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/OrFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/OrFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/PositiveInfinityResultNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/PositiveInfinityResultNode.java
index de49fd13547..3ed5345ba22 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/PositiveInfinityResultNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/PositiveInfinityResultNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/RangeBucketPreDefFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/RangeBucketPreDefFunctionNode.java
index 5204229d1cf..1cd210a37fc 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/RangeBucketPreDefFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/RangeBucketPreDefFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/RawBucketResultNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/RawBucketResultNode.java
index 50b63e2d5d7..1ba7325e974 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/RawBucketResultNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/RawBucketResultNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/RawBucketResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/RawBucketResultNodeVector.java
index 9013a925e83..7f9cab91a3a 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/RawBucketResultNodeVector.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/RawBucketResultNodeVector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/RawResultNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/RawResultNode.java
index 2ff573218e3..5a0e056f254 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/RawResultNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/RawResultNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.searchlib.aggregation.RawData;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/RawResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/RawResultNodeVector.java
index 4bb9fc78098..9619dc5e949 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/RawResultNodeVector.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/RawResultNodeVector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/RelevanceNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/RelevanceNode.java
index e4d3328a78b..55d3a8cf2e5 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/RelevanceNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/RelevanceNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/ResultNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/ResultNode.java
index f76eb360086..8067bb0b51d 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/ResultNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/ResultNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Identifiable;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/ResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/ResultNodeVector.java
index 99053466307..ccbfc50a4e3 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/ResultNodeVector.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/ResultNodeVector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/ReverseFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/ReverseFunctionNode.java
index bb3ad7fe0ac..34ebbdff46d 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/ReverseFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/ReverseFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/SingleResultNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/SingleResultNode.java
index 5f49793b5ce..cb218385b67 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/SingleResultNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/SingleResultNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/SortFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/SortFunctionNode.java
index d68a19c8866..0bc59a55ca2 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/SortFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/SortFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/StrCatFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/StrCatFunctionNode.java
index 2e2a7d53851..d6de81e78cc 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/StrCatFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/StrCatFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/StrLenFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/StrLenFunctionNode.java
index 5c0ee7bc633..7792f452999 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/StrLenFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/StrLenFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/StringBucketResultNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/StringBucketResultNode.java
index 279f8b17fcf..a4917da0562 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/StringBucketResultNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/StringBucketResultNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/StringBucketResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/StringBucketResultNodeVector.java
index 9b530164e5e..af035c6dc7a 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/StringBucketResultNodeVector.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/StringBucketResultNodeVector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/StringResultNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/StringResultNode.java
index 40d424a2759..6a84c7ff950 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/StringResultNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/StringResultNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.text.Utf8;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/StringResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/StringResultNodeVector.java
index 2cba466f93a..c4b8b3579d7 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/StringResultNodeVector.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/StringResultNodeVector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/TimeStampFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/TimeStampFunctionNode.java
index efff9b954b3..40de9154099 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/TimeStampFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/TimeStampFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/ToFloatFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/ToFloatFunctionNode.java
index f938f33979f..832cafc3002 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/ToFloatFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/ToFloatFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/ToIntFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/ToIntFunctionNode.java
index 060480e242e..83afc34ea96 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/ToIntFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/ToIntFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/ToRawFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/ToRawFunctionNode.java
index 24b5d9199ab..e30c8ea9e53 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/ToRawFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/ToRawFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/ToStringFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/ToStringFunctionNode.java
index 66cd502758e..e603ab0811d 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/ToStringFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/ToStringFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/UcaFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/UcaFunctionNode.java
index 07343fff07b..fdb03b4366b 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/UcaFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/UcaFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/UnaryBitFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/UnaryBitFunctionNode.java
index 223282293ce..a16a527e95a 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/UnaryBitFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/UnaryBitFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/UnaryFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/UnaryFunctionNode.java
index f2e3cb0f3bb..1686453eed8 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/UnaryFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/UnaryFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/XorBitFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/XorBitFunctionNode.java
index 8976214c67f..bbdc75f9cd0 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/XorBitFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/XorBitFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/XorFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/XorFunctionNode.java
index 1000cfb9ff8..afbac4985fc 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/XorFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/XorFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/ZCurveFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/ZCurveFunctionNode.java
index 58ea1e9a807..e3ff7754d6a 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/ZCurveFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/ZCurveFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/package-info.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/package-info.java
index a69411758e8..d52fc3063f5 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/package-info.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.searchlib.expression;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/gbdt/CategoryFeatureNode.java b/searchlib/src/main/java/com/yahoo/searchlib/gbdt/CategoryFeatureNode.java
index 1ef0c25ea19..625898d16e3 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/gbdt/CategoryFeatureNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/gbdt/CategoryFeatureNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.gbdt;
import com.yahoo.searchlib.rankingexpression.evaluation.DoubleValue;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/gbdt/FeatureNode.java b/searchlib/src/main/java/com/yahoo/searchlib/gbdt/FeatureNode.java
index a1f9ad0d5e8..f93661dc071 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/gbdt/FeatureNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/gbdt/FeatureNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.gbdt;
import com.yahoo.searchlib.rankingexpression.evaluation.StringValue;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/gbdt/GbdtConverter.java b/searchlib/src/main/java/com/yahoo/searchlib/gbdt/GbdtConverter.java
index 3f1df322d73..34c3c3a6c29 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/gbdt/GbdtConverter.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/gbdt/GbdtConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.gbdt;
import com.yahoo.yolean.Exceptions;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/gbdt/GbdtModel.java b/searchlib/src/main/java/com/yahoo/searchlib/gbdt/GbdtModel.java
index e7cc9642e3c..038ce3d4bb7 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/gbdt/GbdtModel.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/gbdt/GbdtModel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.gbdt;
import com.yahoo.searchlib.rankingexpression.evaluation.DoubleValue;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/gbdt/NumericFeatureNode.java b/searchlib/src/main/java/com/yahoo/searchlib/gbdt/NumericFeatureNode.java
index e0a0e9301ee..89120adfb5d 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/gbdt/NumericFeatureNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/gbdt/NumericFeatureNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.gbdt;
import com.yahoo.searchlib.rankingexpression.evaluation.DoubleValue;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/gbdt/ResponseNode.java b/searchlib/src/main/java/com/yahoo/searchlib/gbdt/ResponseNode.java
index 0ff692d3c94..bf02b84a589 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/gbdt/ResponseNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/gbdt/ResponseNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.gbdt;
import org.w3c.dom.Node;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/gbdt/TreeNode.java b/searchlib/src/main/java/com/yahoo/searchlib/gbdt/TreeNode.java
index d07d730febd..e912a286b96 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/gbdt/TreeNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/gbdt/TreeNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.gbdt;
import org.w3c.dom.Node;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/gbdt/XmlHelper.java b/searchlib/src/main/java/com/yahoo/searchlib/gbdt/XmlHelper.java
index de2a1053fa4..9780d4b0c17 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/gbdt/XmlHelper.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/gbdt/XmlHelper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.gbdt;
import org.w3c.dom.Document;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/package-info.java b/searchlib/src/main/java/com/yahoo/searchlib/package-info.java
index 66337948580..25d2b42cbc4 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/package-info.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.searchlib;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/ElementCompleteness.java b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/ElementCompleteness.java
index 3dfa1e39329..b86cc62d3d1 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/ElementCompleteness.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/ElementCompleteness.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.ranking.features;
import com.google.common.annotations.Beta;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/Features.java b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/Features.java
index 15de2d28865..e004564d385 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/Features.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/Features.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.ranking.features;
import com.google.common.annotations.Beta;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/FieldTermMatch.java b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/FieldTermMatch.java
index eff8bd52fae..9f86dadc378 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/FieldTermMatch.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/FieldTermMatch.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.ranking.features;
import com.google.common.annotations.Beta;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/Field.java b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/Field.java
index 671ef095c05..9492cebc608 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/Field.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/Field.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.ranking.features.fieldmatch;
import com.google.common.collect.ImmutableList;
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 200e4fbe856..5da3e18fb65 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
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.ranking.features.fieldmatch;
import java.lang.reflect.Method;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/FieldMatchMetricsComputer.java b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/FieldMatchMetricsComputer.java
index f981ad464ec..b9b14d45ab4 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/FieldMatchMetricsComputer.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/FieldMatchMetricsComputer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.ranking.features.fieldmatch;
import java.util.ArrayList;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/FieldMatchMetricsParameters.java b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/FieldMatchMetricsParameters.java
index 1f9a7487618..cada3000c2c 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/FieldMatchMetricsParameters.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/FieldMatchMetricsParameters.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.ranking.features.fieldmatch;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/Main.java b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/Main.java
index bf982228856..ef62a5dc815 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/Main.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/Main.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.ranking.features.fieldmatch;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/Query.java b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/Query.java
index c14b641f04b..d4fb52432dd 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/Query.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/Query.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.ranking.features.fieldmatch;
import com.yahoo.searchlib.ranking.features.fieldmatch.QueryTerm;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/QueryTerm.java b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/QueryTerm.java
index e4a2d261987..979b2351003 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/QueryTerm.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/QueryTerm.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.ranking.features.fieldmatch;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/SegmentStartPoint.java b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/SegmentStartPoint.java
index d4f661ca786..3565b5b139f 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/SegmentStartPoint.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/SegmentStartPoint.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.ranking.features.fieldmatch;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/Trace.java b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/Trace.java
index a1c63abd37f..9586c680c05 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/Trace.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/Trace.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.ranking.features.fieldmatch;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/package-info.java b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/package-info.java
index 1d72b90fb35..cbce8837b65 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/package-info.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/fieldmatch/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Reference implementation of the
* string segment match algorithm
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/package-info.java b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/package-info.java
index bcb9d32c54a..6e686821029 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/package-info.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/ranking/features/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Java implementations for various Vespa rank features
*/
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/ExpressionFunction.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/ExpressionFunction.java
index 3974ca7ed0d..eac87ff2f12 100755
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/ExpressionFunction.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/ExpressionFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression;
import com.google.common.collect.ImmutableList;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/FeatureList.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/FeatureList.java
index 8b5a1fbf687..6e752e4a168 100755
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/FeatureList.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/FeatureList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression;
import com.google.common.annotations.Beta;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/RankingExpression.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/RankingExpression.java
index cdaaba34a44..78d09b27b54 100755
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/RankingExpression.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/RankingExpression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression;
import com.yahoo.searchlib.rankingexpression.evaluation.Context;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/Reference.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/Reference.java
index 4622fb2c933..10004fc10ee 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/Reference.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/Reference.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression;
import com.yahoo.searchlib.rankingexpression.rule.Arguments;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/AbstractArrayContext.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/AbstractArrayContext.java
index 16549b3ee1c..340556b7e2d 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/AbstractArrayContext.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/AbstractArrayContext.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation;
import com.google.common.collect.ImmutableMap;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/ArrayContext.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/ArrayContext.java
index 82243fc493d..f9bf09caada 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/ArrayContext.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/ArrayContext.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/BooleanValue.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/BooleanValue.java
index 0e187dfc87c..1c68962c951 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/BooleanValue.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/BooleanValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation;
import com.yahoo.searchlib.rankingexpression.rule.Function;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/Context.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/Context.java
index cf17c6465f3..67024b01761 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/Context.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/Context.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation;
import com.yahoo.searchlib.rankingexpression.Reference;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/ContextIndex.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/ContextIndex.java
index 4568318612e..035bc3be02b 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/ContextIndex.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/ContextIndex.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/DoubleCompatibleValue.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/DoubleCompatibleValue.java
index 3ac11cff0cb..afd263f1553 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/DoubleCompatibleValue.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/DoubleCompatibleValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation;
import com.yahoo.searchlib.rankingexpression.rule.Function;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/DoubleOnlyArrayContext.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/DoubleOnlyArrayContext.java
index 257b344f025..8208749c73d 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/DoubleOnlyArrayContext.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/DoubleOnlyArrayContext.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/DoubleValue.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/DoubleValue.java
index 06ab4cba98f..eb808a5a4bd 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/DoubleValue.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/DoubleValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation;
import com.yahoo.searchlib.rankingexpression.rule.Function;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/ExpressionOptimizer.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/ExpressionOptimizer.java
index 84a90ee64c2..c568db34b4f 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/ExpressionOptimizer.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/ExpressionOptimizer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/MapContext.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/MapContext.java
index 69304a811b1..0010047cc28 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/MapContext.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/MapContext.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation;
import com.yahoo.searchlib.rankingexpression.Reference;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/MapTypeContext.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/MapTypeContext.java
index 959eb16a2ac..78a1e200b19 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/MapTypeContext.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/MapTypeContext.java
@@ -1,5 +1,5 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.searchlib.rankingexpression.evaluation;// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.searchlib.rankingexpression.evaluation;// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.searchlib.rankingexpression.Reference;
import com.yahoo.tensor.TensorType;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/OptimizationReport.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/OptimizationReport.java
index 9f2484f0e46..a763c24ab45 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/OptimizationReport.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/OptimizationReport.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation;
import java.util.ArrayList;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/Optimizer.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/Optimizer.java
index 044b5b589a5..7d1cf85cb36 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/Optimizer.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/Optimizer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/StringValue.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/StringValue.java
index c60507310f1..331a0ac363a 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/StringValue.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/StringValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation;
import com.yahoo.javacc.UnicodeUtilities;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/TensorValue.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/TensorValue.java
index e41732f9d16..fb195d14040 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/TensorValue.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/TensorValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation;
import com.google.common.annotations.Beta;
@@ -157,6 +157,7 @@ public class TensorValue extends Value {
case fmod: return value.fmod(argument);
case ldexp: return value.ldexp(argument);
case bit: return value.bit(argument);
+ case hamming: return value.hamming(argument);
default: throw new UnsupportedOperationException("Cannot combine two tensors using " + function);
}
}
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/Value.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/Value.java
index 071fc6e9fc2..c5ae3acb5c1 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/Value.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/Value.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation;
import com.yahoo.javacc.UnicodeUtilities;
@@ -17,7 +17,7 @@ import com.yahoo.tensor.TensorType;
*/
public abstract class Value {
- private boolean frozen=false;
+ private boolean frozen = false;
/** Returns the type of this value */
public abstract TensorType type();
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTForestNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTForestNode.java
index 579162196dc..13db51c1363 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTForestNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTForestNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation.gbdtoptimization;
import com.yahoo.searchlib.rankingexpression.Reference;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTForestOptimizer.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTForestOptimizer.java
index bb8b91eecab..6ab483800a7 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTForestOptimizer.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTForestOptimizer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation.gbdtoptimization;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
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 c1ec72ba0fc..6c6166c2869 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
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation.gbdtoptimization;
import com.yahoo.searchlib.rankingexpression.Reference;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTOptimizer.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTOptimizer.java
index a6df6b435d6..420f1f459f3 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTOptimizer.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTOptimizer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation.gbdtoptimization;
import com.yahoo.yolean.Exceptions;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/package-info.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/package-info.java
index c78ef4de5fb..12b36d48771 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/package-info.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Execution engine for ranking expressions
*/
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/tensoroptimization/TensorOptimizer.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/tensoroptimization/TensorOptimizer.java
index 41b01c9a2cb..a091cc0287c 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/tensoroptimization/TensorOptimizer.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/tensoroptimization/TensorOptimizer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation.tensoroptimization;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/package-info.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/package-info.java
index 9fd9e37e100..f6319065e8a 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/package-info.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Ranking expression execution library, see {@link com.yahoo.searchlib.rankingexpression.RankingExpression}.
*/
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/parser/package-info.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/parser/package-info.java
index 70729e87a87..3803749271d 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/parser/package-info.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/parser/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Ranking expression parser
*/
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Arguments.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Arguments.java
index d3a12d0f312..ed96a54c330 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Arguments.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Arguments.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import com.google.common.collect.ImmutableList;
@@ -6,9 +6,6 @@ import com.yahoo.searchlib.rankingexpression.evaluation.Context;
import com.yahoo.searchlib.rankingexpression.evaluation.Value;
import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
import java.util.List;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ArithmeticNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ArithmeticNode.java
index 575b9b5b3fb..0aa62513fdb 100755
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ArithmeticNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ArithmeticNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import com.google.common.collect.ImmutableList;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ArithmeticOperator.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ArithmeticOperator.java
index a715490e95a..ebeb7f8ac01 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ArithmeticOperator.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ArithmeticOperator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import com.yahoo.searchlib.rankingexpression.evaluation.Value;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/BooleanNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/BooleanNode.java
index cd4ddbcae55..3bf8d32c2b8 100755
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/BooleanNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/BooleanNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ComparisonNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ComparisonNode.java
index c4ecea22f7e..02f130cb251 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ComparisonNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ComparisonNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import com.yahoo.searchlib.rankingexpression.Reference;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/CompositeNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/CompositeNode.java
index 3508eb67ece..6fdb233299b 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/CompositeNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/CompositeNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import java.util.List;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ConstantNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ConstantNode.java
index 9ae6cc06f29..f682826997c 100755
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ConstantNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ConstantNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import com.yahoo.searchlib.rankingexpression.Reference;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/EmbracedNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/EmbracedNode.java
index dd1ef263cba..9d389a4f6e9 100755
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/EmbracedNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/EmbracedNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import com.yahoo.searchlib.rankingexpression.Reference;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ExpressionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ExpressionNode.java
index 151b70d763d..8e00be3f056 100755
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ExpressionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ExpressionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import com.yahoo.searchlib.rankingexpression.Reference;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Function.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Function.java
index 16aa947986d..4c264c37a23 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Function.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Function.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import com.yahoo.tensor.functions.ScalarFunctions;
@@ -46,7 +46,8 @@ public enum Function implements Serializable {
max(2) { public double evaluate(double x, double y) { return max(x,y); } },
min(2) { public double evaluate(double x, double y) { return min(x,y); } },
pow(2) { public double evaluate(double x, double y) { return pow(x,y); } },
- bit(2) { public double evaluate(double x, double y) { return ((int)y < 8 && (int)y >= 0 && ((int)x & (1 << (int)y)) != 0) ? 1.0 : 0.0; } };
+ bit(2) { public double evaluate(double x, double y) { return ((int)y < 8 && (int)y >= 0 && ((int)x & (1 << (int)y)) != 0) ? 1.0 : 0.0; } },
+ hamming(2) { public double evaluate(double x, double y) { return ScalarFunctions.Hamming.hamming(x, y); } };
private final int arity;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/FunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/FunctionNode.java
index 2aedec2109b..d32cfb51f95 100755
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/FunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/FunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import com.yahoo.searchlib.rankingexpression.Reference;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/FunctionReferenceContext.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/FunctionReferenceContext.java
index 6717bec0258..f0586297b0d 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/FunctionReferenceContext.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/FunctionReferenceContext.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import com.google.common.collect.ImmutableMap;
@@ -38,12 +38,16 @@ public class FunctionReferenceContext {
/** Create a context for a single serialization task */
public FunctionReferenceContext(Map<String, ExpressionFunction> functions) {
- this(functions.values());
+ this(functions, null);
}
/** Create a context for a single serialization task */
public FunctionReferenceContext(Map<String, ExpressionFunction> functions, Map<String, String> bindings) {
- this.functions = ImmutableMap.copyOf(functions);
+ this(ImmutableMap.copyOf(functions), bindings);
+ }
+
+ protected FunctionReferenceContext(ImmutableMap<String, ExpressionFunction> functions, Map<String, String> bindings) {
+ this.functions = functions;
if (bindings != null)
this.bindings.putAll(bindings);
}
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/GeneratorLambdaFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/GeneratorLambdaFunctionNode.java
index 886e179b838..7ff3a71d036 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/GeneratorLambdaFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/GeneratorLambdaFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import com.yahoo.searchlib.rankingexpression.Reference;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/IfNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/IfNode.java
index 92c6d6f8638..51b68cee443 100755
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/IfNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/IfNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import com.yahoo.searchlib.rankingexpression.Reference;
@@ -7,8 +7,6 @@ import com.yahoo.searchlib.rankingexpression.evaluation.Value;
import com.yahoo.tensor.TensorType;
import com.yahoo.tensor.evaluation.TypeContext;
-import java.util.ArrayList;
-import java.util.Collections;
import java.util.Deque;
import java.util.List;
@@ -22,7 +20,8 @@ public final class IfNode extends CompositeNode {
/** The expression nodes that make up this condition. */
private final ExpressionNode condition, trueExpression, falseExpression;
-
+ /** Frequent calls to children() makes this caching necessary. Might skip the entries above and just keep them as list.*/
+ private final List<ExpressionNode> asList;
private final Double trueProbability;
public IfNode(ExpressionNode condition, ExpressionNode trueExpression, ExpressionNode falseExpression) {
@@ -46,15 +45,12 @@ public final class IfNode extends CompositeNode {
this.trueProbability = trueProbability;
this.trueExpression = trueExpression;
this.falseExpression = falseExpression;
+ this.asList = List.of(condition, trueExpression, falseExpression);
}
@Override
public List<ExpressionNode> children() {
- List<ExpressionNode> children = new ArrayList<>(4);
- children.add(condition);
- children.add(trueExpression);
- children.add(falseExpression);
- return Collections.unmodifiableList(children);
+ return asList;
}
public ExpressionNode getCondition() { return condition; }
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/LambdaFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/LambdaFunctionNode.java
index bbf1a1a251e..a2b86360923 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/LambdaFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/LambdaFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import com.google.common.collect.ImmutableList;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/NameNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/NameNode.java
index 235e6e592a8..34c8664c0cf 100755
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/NameNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/NameNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import com.yahoo.searchlib.rankingexpression.Reference;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/NegativeNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/NegativeNode.java
index a71034e022b..57b349fdc2e 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/NegativeNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/NegativeNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import com.yahoo.searchlib.rankingexpression.Reference;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/NotNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/NotNode.java
index 0a75ba78df6..8b5ae256038 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/NotNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/NotNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import com.yahoo.searchlib.rankingexpression.Reference;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ReferenceNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ReferenceNode.java
index e96ba021750..db791a63f9c 100755
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ReferenceNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ReferenceNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import com.yahoo.searchlib.rankingexpression.ExpressionFunction;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java
index a6a64348452..cd2f966cc22 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import com.google.common.collect.ImmutableMap;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SetMembershipNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SetMembershipNode.java
index 9b3bd674814..31f3013b756 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SetMembershipNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SetMembershipNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import com.google.common.collect.ImmutableList;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TensorFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TensorFunctionNode.java
index 86541343edb..2d06e171097 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TensorFunctionNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TensorFunctionNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import com.google.common.annotations.Beta;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TruthOperator.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TruthOperator.java
index 2a3c2a46081..6f264903122 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TruthOperator.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TruthOperator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import java.io.Serializable;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/package-info.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/package-info.java
index d504a015623..5e21dbd7a7c 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/package-info.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@PublicApi
@ExportPackage
package com.yahoo.searchlib.rankingexpression.rule;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/ConstantDereferencer.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/ConstantDereferencer.java
index fed4f60e983..39afcfff541 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/ConstantDereferencer.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/ConstantDereferencer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.transform;
import com.yahoo.searchlib.rankingexpression.Reference;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/ExpressionTransformer.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/ExpressionTransformer.java
index 31567ba120b..4aee3268111 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/ExpressionTransformer.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/ExpressionTransformer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.transform;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
@@ -29,10 +29,20 @@ public abstract class ExpressionTransformer<CONTEXT extends TransformContext> {
*/
protected CompositeNode transformChildren(CompositeNode node, CONTEXT context) {
List<ExpressionNode> children = node.children();
- List<ExpressionNode> transformedChildren = new ArrayList<>(children.size());
- for (ExpressionNode child : children)
- transformedChildren.add(transform(child, context));
- return node.setChildren(transformedChildren);
+ List<ExpressionNode> transformedChildren = null;
+
+ for (int i = 0; i < children.size(); ++i) {
+ ExpressionNode child = children.get(i);
+ ExpressionNode transformedChild = transform(child, context);
+ if (child != transformedChild) {
+ if (transformedChildren == null) {
+ transformedChildren = new ArrayList<>(children);
+ }
+ transformedChildren.set(i, transformedChild);
+ }
+ }
+
+ return transformedChildren == null ? node : node.setChildren(transformedChildren);
}
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/Simplifier.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/Simplifier.java
index 1522e0025c7..a56106e8f9d 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/Simplifier.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/Simplifier.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.transform;
import com.yahoo.document.update.ArithmeticValueUpdate;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/TensorMaxMinTransformer.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/TensorMaxMinTransformer.java
index 9bed4a4ea7c..0527aabebe4 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/TensorMaxMinTransformer.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/TensorMaxMinTransformer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.transform;
import com.yahoo.searchlib.rankingexpression.Reference;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/TransformContext.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/TransformContext.java
index 0113a650277..e992196d9c4 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/TransformContext.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/TransformContext.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.transform;
import com.yahoo.searchlib.rankingexpression.Reference;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/package-info.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/package-info.java
index af567d2628a..89df2e0aae1 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/package-info.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.searchlib.rankingexpression.transform;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/tensor/EvaluateTensorConformance.java b/searchlib/src/main/java/com/yahoo/searchlib/tensor/EvaluateTensorConformance.java
index bd6fb47be1e..fa6af4cf452 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/tensor/EvaluateTensorConformance.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/tensor/EvaluateTensorConformance.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.tensor;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/treenet/TreeNetConverter.java b/searchlib/src/main/java/com/yahoo/searchlib/treenet/TreeNetConverter.java
index 578e8c76733..66a0e68a9ba 100755
--- a/searchlib/src/main/java/com/yahoo/searchlib/treenet/TreeNetConverter.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/treenet/TreeNetConverter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.treenet;
import com.yahoo.searchlib.treenet.parser.TreeNetParser;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/treenet/package-info.java b/searchlib/src/main/java/com/yahoo/searchlib/treenet/package-info.java
index 0576d0d2848..9f2f482dcbf 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/treenet/package-info.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/treenet/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.searchlib.treenet;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/treenet/parser/package-info.java b/searchlib/src/main/java/com/yahoo/searchlib/treenet/parser/package-info.java
index 75df9d0db0e..86d9d0ab09e 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/treenet/parser/package-info.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/treenet/parser/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.searchlib.treenet.parser;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/ComparisonCondition.java b/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/ComparisonCondition.java
index f3f28879bc0..0ea9444668d 100755
--- a/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/ComparisonCondition.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/ComparisonCondition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.treenet.rule;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/Condition.java b/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/Condition.java
index 34556537681..aa80c2c3bad 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/Condition.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/Condition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.treenet.rule;
import java.util.Iterator;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/Response.java b/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/Response.java
index b81d4ae97b9..11768a18452 100755
--- a/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/Response.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/Response.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.treenet.rule;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/SetMembershipCondition.java b/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/SetMembershipCondition.java
index b10452a7b32..a1fdbbdf0fe 100755
--- a/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/SetMembershipCondition.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/SetMembershipCondition.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.treenet.rule;
import java.util.ArrayList;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/Tree.java b/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/Tree.java
index 33d1e105672..90d763cb204 100755
--- a/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/Tree.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/Tree.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.treenet.rule;
import java.util.Map;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/TreeNet.java b/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/TreeNet.java
index 023ed59bf18..ce234933707 100755
--- a/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/TreeNet.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/TreeNet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.treenet.rule;
import java.util.Map;
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/TreeNode.java b/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/TreeNode.java
index 3e2539d6151..1b27d517516 100755
--- a/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/TreeNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/TreeNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.treenet.rule;
/**
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/package-info.java b/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/package-info.java
index b3d4602cd28..0889cf9337d 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/package-info.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/treenet/rule/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.searchlib.treenet.rule;
diff --git a/searchlib/src/main/javacc/RankingExpressionParser.jj b/searchlib/src/main/javacc/RankingExpressionParser.jj
index 99eff010628..aab56435e64 100755
--- a/searchlib/src/main/javacc/RankingExpressionParser.jj
+++ b/searchlib/src/main/javacc/RankingExpressionParser.jj
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* When this file is changed, do "mvn generate-sources" to rebuild the parser.
*
@@ -124,6 +124,7 @@ TOKEN :
// MIN
<POW: "pow"> |
<BIT: "bit"> |
+ <HAMMING: "hamming"> |
<MAP: "map"> |
<REDUCE: "reduce"> |
@@ -143,6 +144,7 @@ TOKEN :
<ARGMAX: "argmax"> |
<ARGMIN: "argmin"> |
<CELL_CAST: "cell_cast"> |
+ <EXPAND: "expand"> |
<AVG: "avg" > |
<COUNT: "count"> |
@@ -383,7 +385,8 @@ TensorFunctionNode tensorFunction() :
tensorExpression = tensorXwPlusB() |
tensorExpression = tensorArgmax() |
tensorExpression = tensorArgmin() |
- tensorExpression = tensorCellCast()
+ tensorExpression = tensorCellCast() |
+ tensorExpression = tensorExpand()
)
{ return tensorExpression; }
}
@@ -580,6 +583,16 @@ TensorFunctionNode tensorXwPlusB() :
dimension)); }
}
+TensorFunctionNode tensorExpand() :
+{
+ ExpressionNode argument;
+ String dimension;
+}
+{
+ <EXPAND> <LBRACE> argument = expression() <COMMA> dimension = identifier() <RBRACE>
+ { return new TensorFunctionNode(new Expand(TensorFunctionNode.wrap(argument), dimension)); }
+}
+
TensorFunctionNode tensorArgmax() :
{
ExpressionNode tensor;
@@ -695,6 +708,7 @@ String tensorFunctionName() :
( <ARGMAX> { return token.image; } ) |
( <ARGMIN> { return token.image; } ) |
( <CELL_CAST> { return token.image; } ) |
+ ( <EXPAND> { return token.image; } ) |
( aggregator = tensorReduceAggregator() { return aggregator.toString(); } )
}
@@ -735,7 +749,8 @@ Function binaryFunctionName() : { }
<MAX> { return Function.max; } |
<MIN> { return Function.min; } |
<POW> { return Function.pow; } |
- <BIT> { return Function.bit; }
+ <BIT> { return Function.bit; } |
+ <HAMMING> { return Function.hamming; }
}
List<ExpressionNode> expressionList() :
diff --git a/searchlib/src/main/javacc/TreeNetParser.jj b/searchlib/src/main/javacc/TreeNetParser.jj
index b2a60af6db1..08374835084 100755
--- a/searchlib/src/main/javacc/TreeNetParser.jj
+++ b/searchlib/src/main/javacc/TreeNetParser.jj
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* A best-effort treenet parser.
*
diff --git a/searchlib/src/main/sh/evaluation-benchmark b/searchlib/src/main/sh/evaluation-benchmark
index f665536ee3c..9c182838e9c 100755
--- a/searchlib/src/main/sh/evaluation-benchmark
+++ b/searchlib/src/main/sh/evaluation-benchmark
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
java -cp "target/test-classes:target/searchlib.jar" com.yahoo.searchlib.rankingexpression.evaluation.EvaluationBenchmark $@
diff --git a/searchlib/src/main/sh/vespa-evaluate-tensor-conformance.sh b/searchlib/src/main/sh/vespa-evaluate-tensor-conformance.sh
index 43844e07cd4..48d709da36c 100755
--- a/searchlib/src/main/sh/vespa-evaluate-tensor-conformance.sh
+++ b/searchlib/src/main/sh/vespa-evaluate-tensor-conformance.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/searchlib/src/main/sh/vespa-gbdt-converter b/searchlib/src/main/sh/vespa-gbdt-converter
index defa942922e..54f611aa292 100755
--- a/searchlib/src/main/sh/vespa-gbdt-converter
+++ b/searchlib/src/main/sh/vespa-gbdt-converter
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/searchlib/src/main/sh/vespa-treenet-converter b/searchlib/src/main/sh/vespa-treenet-converter
index eda5189e28f..a8212ec187b 100755
--- a/searchlib/src/main/sh/vespa-treenet-converter
+++ b/searchlib/src/main/sh/vespa-treenet-converter
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/searchlib/src/protobuf/search_protocol.proto b/searchlib/src/protobuf/search_protocol.proto
index ded19fe132f..b41c3b65a74 100644
--- a/searchlib/src/protobuf/search_protocol.proto
+++ b/searchlib/src/protobuf/search_protocol.proto
@@ -51,6 +51,11 @@ message SearchReply {
repeated Hit hits = 7;
bytes grouping_blob = 8; // serialized opaquely like now, to be changed later
bytes slime_trace = 9;
+ repeated Error errors = 10;
+}
+
+message Error {
+ string message = 1;
}
message Hit {
@@ -79,6 +84,7 @@ message DocsumRequest {
message DocsumReply {
bytes slime_summaries = 1; // result array inside slime object
+ repeated Error errors = 2;
}
message MonitorRequest {
diff --git a/searchlib/src/test/files/gbdt.ext.xml b/searchlib/src/test/files/gbdt.ext.xml
index 540c0458a2a..fbe42071103 100644
--- a/searchlib/src/test/files/gbdt.ext.xml
+++ b/searchlib/src/test/files/gbdt.ext.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<MlrFunction name="CHANGE THIS NUMBER" featuredef="mlrfeaturedefs.xml" version="1.0">
<!-- ADD SCORE STANDARDIZATION OR CALIBRATION HERE -->
diff --git a/searchlib/src/test/files/gbdt.xml b/searchlib/src/test/files/gbdt.xml
index 7da69badaab..b7ca5c915c9 100644
--- a/searchlib/src/test/files/gbdt.xml
+++ b/searchlib/src/test/files/gbdt.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<MlrFunction name="CHANGE THIS NUMBER" featuredef="mlrfeaturedefs.xml" version="1.0">
<!-- ADD SCORE STANDARDIZATION OR CALIBRATION HERE -->
diff --git a/searchlib/src/test/files/gbdt_empty_tree.xml b/searchlib/src/test/files/gbdt_empty_tree.xml
index 65fc6b4f20d..c9296b40de2 100644
--- a/searchlib/src/test/files/gbdt_empty_tree.xml
+++ b/searchlib/src/test/files/gbdt_empty_tree.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<MlrFunction name="CHANGE THIS NUMBER" featuredef="mlrfeaturedefs.xml" version="1.0">
<!-- ADD SCORE STANDARDIZATION OR CALIBRATION HERE -->
diff --git a/searchlib/src/test/files/gbdt_err.xml b/searchlib/src/test/files/gbdt_err.xml
index f05b74c31e2..1d795aa687d 100644
--- a/searchlib/src/test/files/gbdt_err.xml
+++ b/searchlib/src/test/files/gbdt_err.xml
@@ -1,3 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<Unknown />
diff --git a/searchlib/src/test/files/gbdt_set_inclusion_test.xml b/searchlib/src/test/files/gbdt_set_inclusion_test.xml
index bbfe97b84ac..90ab6ef6d1d 100644
--- a/searchlib/src/test/files/gbdt_set_inclusion_test.xml
+++ b/searchlib/src/test/files/gbdt_set_inclusion_test.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<MlrFunction name="CHANGE THIS NUMBER" featuredef="mlrfeaturedefs.xml" version="1.0">
<!-- ADD SCORE STANDARDIZATION OR CALIBRATION HERE -->
diff --git a/searchlib/src/test/files/gbdt_tree_response.xml b/searchlib/src/test/files/gbdt_tree_response.xml
index 883af2ac71b..391b9d9baa9 100644
--- a/searchlib/src/test/files/gbdt_tree_response.xml
+++ b/searchlib/src/test/files/gbdt_tree_response.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<MlrFunction name="CHANGE THIS NUMBER" featuredef="mlrfeaturedefs.xml" version="1.0">
<!-- ADD SCORE STANDARDIZATION OR CALIBRATION HERE -->
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/AggregationTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/AggregationTestCase.java
index 6f72f45681e..3ddd5e889d3 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/AggregationTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/AggregationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.document.DocumentId;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/ExpressionCountAggregationResultTest.java b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/ExpressionCountAggregationResultTest.java
index 9257e7fb429..6faff8d8d3f 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/ExpressionCountAggregationResultTest.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/ExpressionCountAggregationResultTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.searchlib.aggregation.hll.*;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/ForceLoadTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/ForceLoadTestCase.java
index 347c38898ee..6fc2274f69f 100755
--- a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/ForceLoadTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/ForceLoadTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import org.junit.Test;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/GroupTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/GroupTestCase.java
index 95ab1c30a3e..fd126ec2a82 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/GroupTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/GroupTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.searchlib.expression.*;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/GroupingSerializationTest.java b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/GroupingSerializationTest.java
index 31c8612990f..bf95fd4d0ce 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/GroupingSerializationTest.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/GroupingSerializationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.document.DocumentId;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/GroupingTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/GroupingTestCase.java
index e6143a17523..00378e178a8 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/GroupingTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/GroupingTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.searchlib.expression.FloatResultNode;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/MergeTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/MergeTestCase.java
index ee20415950e..c01260b11a9 100755
--- a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/MergeTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/MergeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import com.yahoo.document.DocumentId;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/StandardDeviationAggregationResultTest.java b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/StandardDeviationAggregationResultTest.java
index c5e3c2acfea..b9968bb80f4 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/StandardDeviationAggregationResultTest.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/StandardDeviationAggregationResultTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation;
import org.junit.Test;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/BiasEstimatorTest.java b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/BiasEstimatorTest.java
index 66e61eb7f8e..b4d423157ee 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/BiasEstimatorTest.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/BiasEstimatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation.hll;
import org.junit.Test;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/HyperLogLogEstimatorTest.java b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/HyperLogLogEstimatorTest.java
index 56b5bf53d00..47ffe4432d1 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/HyperLogLogEstimatorTest.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/HyperLogLogEstimatorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation.hll;
import net.jpountz.xxhash.XXHash32;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/HyperLogLogPrecisionBenchmark.java b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/HyperLogLogPrecisionBenchmark.java
index 3a265e80c89..cd283d31931 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/HyperLogLogPrecisionBenchmark.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/HyperLogLogPrecisionBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation.hll;
import net.jpountz.xxhash.XXHash32;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/NormalSketchTest.java b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/NormalSketchTest.java
index 2158eba897c..c521f9f57db 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/NormalSketchTest.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/NormalSketchTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation.hll;
import com.yahoo.vespa.objects.BufferSerializer;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/SketchMergerTest.java b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/SketchMergerTest.java
index 6cad4aa380c..0f33c8877ce 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/SketchMergerTest.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/SketchMergerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation.hll;
import org.junit.Test;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/SketchUtils.java b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/SketchUtils.java
index 1ad36c55c21..1d8af57431c 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/SketchUtils.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/SketchUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation.hll;
import java.util.Arrays;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/SparseSketchTest.java b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/SparseSketchTest.java
index 749e072f2cd..48e44113784 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/SparseSketchTest.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/SparseSketchTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.aggregation.hll;
import com.yahoo.vespa.objects.BufferSerializer;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/expression/ExpressionTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/expression/ExpressionTestCase.java
index d282dc17aaa..c5adfed4974 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/expression/ExpressionTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/expression/ExpressionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.io.GrowableByteBuffer;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/expression/FixedWidthBucketFunctionTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/expression/FixedWidthBucketFunctionTestCase.java
index b8a3e975537..2ffff7ff1cb 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/expression/FixedWidthBucketFunctionTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/expression/FixedWidthBucketFunctionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import org.junit.Test;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/expression/FloatBucketResultNodeTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/expression/FloatBucketResultNodeTestCase.java
index 68a9a40358e..1acfb3cdc7e 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/expression/FloatBucketResultNodeTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/expression/FloatBucketResultNodeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import org.junit.Test;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/expression/ForceLoadTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/expression/ForceLoadTestCase.java
index fa2c9cf1b1e..95551021fe0 100755
--- a/searchlib/src/test/java/com/yahoo/searchlib/expression/ForceLoadTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/expression/ForceLoadTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import org.junit.Test;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/expression/IntegerBucketResultNodeTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/expression/IntegerBucketResultNodeTestCase.java
index 42f657ee374..c038a207ba2 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/expression/IntegerBucketResultNodeTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/expression/IntegerBucketResultNodeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.BufferSerializer;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/expression/IntegerResultNodeTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/expression/IntegerResultNodeTestCase.java
index bb2cd640c8f..b081506dca8 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/expression/IntegerResultNodeTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/expression/IntegerResultNodeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.BufferSerializer;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/expression/NullResultNodeTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/expression/NullResultNodeTestCase.java
index 14f65d8ba35..ff2af418ad4 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/expression/NullResultNodeTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/expression/NullResultNodeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.ObjectDumper;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/expression/ObjectVisitorTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/expression/ObjectVisitorTestCase.java
index 18753737eb0..c1a903bee14 100755
--- a/searchlib/src/test/java/com/yahoo/searchlib/expression/ObjectVisitorTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/expression/ObjectVisitorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.ObjectDumper;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/expression/RangeBucketPreDefFunctionTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/expression/RangeBucketPreDefFunctionTestCase.java
index d4de0dad062..2b3d91392ae 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/expression/RangeBucketPreDefFunctionTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/expression/RangeBucketPreDefFunctionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import org.junit.Test;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/expression/RawBucketResultNodeTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/expression/RawBucketResultNodeTestCase.java
index 8132147ad93..eef4f225778 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/expression/RawBucketResultNodeTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/expression/RawBucketResultNodeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import org.junit.Test;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/expression/ResultNodeTest.java b/searchlib/src/test/java/com/yahoo/searchlib/expression/ResultNodeTest.java
index c2885e7ae70..fb033801352 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/expression/ResultNodeTest.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/expression/ResultNodeTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.BufferSerializer;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/expression/ResultNodeVectorTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/expression/ResultNodeVectorTestCase.java
index 2fc1771ece0..54f4744897a 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/expression/ResultNodeVectorTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/expression/ResultNodeVectorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import com.yahoo.vespa.objects.BufferSerializer;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/expression/StringBucketResultNodeTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/expression/StringBucketResultNodeTestCase.java
index 7d6172e916f..15c89b4beb3 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/expression/StringBucketResultNodeTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/expression/StringBucketResultNodeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import org.junit.Test;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/expression/TimeStampFunctionTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/expression/TimeStampFunctionTestCase.java
index 46f13a39a5e..5e8e556419b 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/expression/TimeStampFunctionTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/expression/TimeStampFunctionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import org.junit.Test;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/expression/ZCurveFunctionTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/expression/ZCurveFunctionTestCase.java
index 10bbe817755..bab4cc10d5f 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/expression/ZCurveFunctionTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/expression/ZCurveFunctionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.expression;
import org.junit.Test;
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 7b278cebb83..0a0a975778c 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/gbdt/GbdtConverterTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/gbdt/GbdtConverterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.gbdt;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/gbdt/GbdtModelTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/gbdt/GbdtModelTestCase.java
index 7f338f2324d..cb6dc6247c9 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/gbdt/GbdtModelTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/gbdt/GbdtModelTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.gbdt;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/gbdt/ReferenceNodeTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/gbdt/ReferenceNodeTestCase.java
index f9bb63fd119..7b1795530b6 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/gbdt/ReferenceNodeTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/gbdt/ReferenceNodeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.gbdt;
import com.yahoo.searchlib.rankingexpression.evaluation.DoubleValue;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/gbdt/ResponseNodeTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/gbdt/ResponseNodeTestCase.java
index 082470a3016..7529777c020 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/gbdt/ResponseNodeTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/gbdt/ResponseNodeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.gbdt;
import org.junit.Test;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/gbdt/TreeNodeTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/gbdt/TreeNodeTestCase.java
index 27e3ad2651a..2060a9b89ed 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/gbdt/TreeNodeTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/gbdt/TreeNodeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.gbdt;
import org.junit.Test;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/gbdt/XmlHelperTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/gbdt/XmlHelperTestCase.java
index 60f774ed4e8..b0f5987a037 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/gbdt/XmlHelperTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/gbdt/XmlHelperTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.gbdt;
import org.junit.Test;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/ElementCompletenessTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/ElementCompletenessTestCase.java
index d9f4c424314..d674fcb0bf1 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/ElementCompletenessTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/ElementCompletenessTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.ranking.features;
import static org.junit.Assert.*;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/FieldTermMatchTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/FieldTermMatchTestCase.java
index 9a2438824c5..e95b40cb412 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/FieldTermMatchTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/FieldTermMatchTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.ranking.features;
import static org.junit.Assert.*;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/SemanticDistanceTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/SemanticDistanceTestCase.java
index eb0e46ad6dc..f3d52acf878 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/SemanticDistanceTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/SemanticDistanceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.ranking.features.fieldmatch;
import org.junit.Before;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/reference/OptimalStringAlignmentDistance.java b/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/reference/OptimalStringAlignmentDistance.java
index 3160cb1858a..5541fc47b72 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/reference/OptimalStringAlignmentDistance.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/reference/OptimalStringAlignmentDistance.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.ranking.features.fieldmatch.reference;
import java.util.Arrays;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/reference/TextbookLevenshteinDistance.java b/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/reference/TextbookLevenshteinDistance.java
index 420c5ffe7fc..778eb0f4805 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/reference/TextbookLevenshteinDistance.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/reference/TextbookLevenshteinDistance.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.ranking.features.fieldmatch.reference;
/**
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/reference/test/OptimalStringAlignmentTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/reference/test/OptimalStringAlignmentTestCase.java
index c9b812894ba..9a12a58998c 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/reference/test/OptimalStringAlignmentTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/reference/test/OptimalStringAlignmentTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.ranking.features.fieldmatch.reference.test;
import com.yahoo.searchlib.ranking.features.fieldmatch.reference.OptimalStringAlignmentDistance;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/test/FieldMatchMetricsTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/test/FieldMatchMetricsTestCase.java
index 4918ee5bdcd..f4a003868f8 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/test/FieldMatchMetricsTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/ranking/features/fieldmatch/test/FieldMatchMetricsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.ranking.features.fieldmatch.test;
import com.google.common.collect.ImmutableList;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/FeatureListTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/FeatureListTestCase.java
index 85dcea3b6e6..7c312faf8d8 100755
--- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/FeatureListTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/FeatureListTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression;
import com.yahoo.searchlib.rankingexpression.parser.ParseException;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/RankingExpressionTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/RankingExpressionTestCase.java
index 4214727eb5f..9733eab9be1 100755
--- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/RankingExpressionTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/RankingExpressionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression;
import com.yahoo.searchlib.rankingexpression.parser.ParseException;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/ReferenceTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/ReferenceTestCase.java
index 5611f88dbe0..fbc7a96f1f2 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/ReferenceTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/ReferenceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression;
import com.yahoo.searchlib.rankingexpression.rule.Arguments;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/Benchmark.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/Benchmark.java
index d394a6a7d3e..b61de9b317a 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/Benchmark.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/Benchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationBenchmark.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationBenchmark.java
index ac24680e601..457c31cac50 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationBenchmark.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation;
import com.yahoo.io.IOUtils;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java
index 4a3c4b248be..b769d07e77e 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation;
import com.yahoo.javacc.UnicodeUtilities;
@@ -288,6 +288,8 @@ public class EvaluationTestCase {
tester.assertEvaluates("{ {h:0}:1.5, {h:1}:1.5 }", "0.5 + tensor0", "{ {h:0}:1.0,{h:1}:1.0 }");
tester.assertEvaluates("{ {x:0,y:0}:0, {x:1,y:0}:0 }",
"atan2(tensor0, tensor1)", "{ {x:0}:0, {x:1}:0 }", "{ {y:0}:1 }");
+ tester.assertEvaluates("{ {x:0,y:0}:2, {x:1,y:0}:7 }",
+ "hamming(tensor0, tensor1)", "{ {x:0}:97, {x:1}:-1 }", "{ {y:0}:1 }");
tester.assertEvaluates("{ {x:0,y:0}:0, {x:1,y:0}:1 }",
"tensor0 > tensor1", "{ {x:0}:3, {x:1}:7 }", "{ {y:0}:5 }");
tester.assertEvaluates("{ {x:0,y:0}:1, {x:1,y:0}:0 }",
@@ -496,7 +498,6 @@ public class EvaluationTestCase {
"tensor(d0[3],d1[2],d2[1],d3[1])(tensor0{a0:0, a1:((d0 * 2 + d1) / 3), a2:((d0 * 2 + d1) % 3) })",
"tensor(a0[1],a1[2],a2[3]):[1,2,3,4,5,6]",
"tensor(d0[4]):[3,2,-1,1]");
-
}
@Test
@@ -723,6 +724,13 @@ public class EvaluationTestCase {
tester.assertEvaluates("tensor(d0[1], d1[3]):[1, 2, 3]",
"tensor0 * tensor(d0[1])(1)",
"tensor(d1[3]):[1, 2, 3]");
+ // Add using the "expand" non-primitive function
+ tester.assertEvaluates("tensor(d0[1],d1[3]):[[1,2,3]]",
+ "expand(tensor0, d0)",
+ "tensor(d1[3]):[1, 2, 3]");
+ tester.assertEvaluates("tensor<float>(d0[1],d1[3]):[[1,2,3]]",
+ "expand(tensor0, d0)",
+ "tensor<float>(d1[3]):[1, 2, 3]");
}
@Test
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTester.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTester.java
index e974bcb47cd..0d14d044b99 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTester.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTester.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/NeuralNetEvaluationTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/NeuralNetEvaluationTestCase.java
index dc1846feaa6..5d40fd08252 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/NeuralNetEvaluationTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/NeuralNetEvaluationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/StreamEvaluationBenchmark.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/StreamEvaluationBenchmark.java
index 760e056327c..453eed7feeb 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/StreamEvaluationBenchmark.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/StreamEvaluationBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation;
import com.yahoo.io.IOUtils;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/TypeResolutionTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/TypeResolutionTestCase.java
index 88838b5aed0..74d44ae7014 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/TypeResolutionTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/TypeResolutionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/ContextReuseTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/ContextReuseTestCase.java
index 4254bec2348..8566161189d 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/ContextReuseTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/ContextReuseTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation.gbdtoptimization;
import com.yahoo.io.IOUtils;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTForestOptimizerTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTForestOptimizerTestCase.java
index 08f1a872759..3ba5fe10997 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTForestOptimizerTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTForestOptimizerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation.gbdtoptimization;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTOptimizerTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTOptimizerTestCase.java
index 82ad034e306..d2f86230980 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTOptimizerTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/gbdtoptimization/GBDTOptimizerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation.gbdtoptimization;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/tensoroptimization/TensorOptimizerTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/tensoroptimization/TensorOptimizerTestCase.java
index 50f37486b90..44f5105bf92 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/tensoroptimization/TensorOptimizerTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/tensoroptimization/TensorOptimizerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.evaluation.tensoroptimization;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/rule/ArgumentsTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/rule/ArgumentsTestCase.java
index 1292aba3605..2c2b007088d 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/rule/ArgumentsTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/rule/ArgumentsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import org.junit.Test;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/rule/ReferenceNodeTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/rule/ReferenceNodeTestCase.java
index aabb5e092b5..8b1492cad66 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/rule/ReferenceNodeTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/rule/ReferenceNodeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.rule;
import org.junit.Test;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/ConstantDereferencerTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/ConstantDereferencerTestCase.java
index bfaff0712ee..c7eab014104 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/ConstantDereferencerTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/ConstantDereferencerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.transform;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/SimplifierTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/SimplifierTestCase.java
index 7861da717f3..a6ccf9568c5 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/SimplifierTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/SimplifierTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.rankingexpression.transform;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/treenet/TreeNetParserTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/treenet/TreeNetParserTestCase.java
index c83429ed1c4..166b19955bd 100755
--- a/searchlib/src/test/java/com/yahoo/searchlib/treenet/TreeNetParserTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/treenet/TreeNetParserTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.treenet;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
diff --git a/searchlib/src/tests/aggregator/CMakeLists.txt b/searchlib/src/tests/aggregator/CMakeLists.txt
index 18a1d09e3fb..12c70cb69ff 100644
--- a/searchlib/src/tests/aggregator/CMakeLists.txt
+++ b/searchlib/src/tests/aggregator/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_perdocexpr_test_app TEST
SOURCES
perdocexpr.cpp
diff --git a/searchlib/src/tests/aggregator/attr_test.cpp b/searchlib/src/tests/aggregator/attr_test.cpp
index 21fc41e3b9d..15a0f992701 100644
--- a/searchlib/src/tests/aggregator/attr_test.cpp
+++ b/searchlib/src/tests/aggregator/attr_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/aggregation/perdocexpression.h>
diff --git a/searchlib/src/tests/aggregator/perdocexpr.cpp b/searchlib/src/tests/aggregator/perdocexpr.cpp
index 71b6ffb78ee..e0071e28428 100644
--- a/searchlib/src/tests/aggregator/perdocexpr.cpp
+++ b/searchlib/src/tests/aggregator/perdocexpr.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/aggregation/aggregation.h>
#include <vespa/searchlib/aggregation/expressioncountaggregationresult.h>
diff --git a/searchlib/src/tests/alignment/CMakeLists.txt b/searchlib/src/tests/alignment/CMakeLists.txt
index 5281e8676a9..b3459d3afa5 100644
--- a/searchlib/src/tests/alignment/CMakeLists.txt
+++ b/searchlib/src/tests/alignment/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_alignment_test_app TEST
SOURCES
alignment.cpp
diff --git a/searchlib/src/tests/alignment/alignment.cpp b/searchlib/src/tests/alignment/alignment.cpp
index 62d19839b41..06acf96e16c 100644
--- a/searchlib/src/tests/alignment/alignment.cpp
+++ b/searchlib/src/tests/alignment/alignment.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("alignment_test");
diff --git a/searchlib/src/tests/attribute/CMakeLists.txt b/searchlib/src/tests/attribute/CMakeLists.txt
index 395631be026..fe838925bac 100644
--- a/searchlib/src/tests/attribute/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_attribute_test_app TEST
SOURCES
attribute_test.cpp
diff --git a/searchlib/src/tests/attribute/attribute_header/CMakeLists.txt b/searchlib/src/tests/attribute/attribute_header/CMakeLists.txt
index c78e88bc770..57c4cad71e5 100644
--- a/searchlib/src/tests/attribute/attribute_header/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/attribute_header/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_attribute_header_test_app TEST
SOURCES
attribute_header_test.cpp
diff --git a/searchlib/src/tests/attribute/attribute_header/attribute_header_test.cpp b/searchlib/src/tests/attribute/attribute_header/attribute_header_test.cpp
index aca9b652b94..3c8c9ff17e0 100644
--- a/searchlib/src/tests/attribute/attribute_header/attribute_header_test.cpp
+++ b/searchlib/src/tests/attribute/attribute_header/attribute_header_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/value_type.h>
#include <vespa/searchcommon/attribute/config.h>
diff --git a/searchlib/src/tests/attribute/attribute_operation/CMakeLists.txt b/searchlib/src/tests/attribute/attribute_operation/CMakeLists.txt
index 2189c50d163..a8fc2512341 100644
--- a/searchlib/src/tests/attribute/attribute_operation/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/attribute_operation/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_attribute_operation_test_app TEST
SOURCES
attribute_operation_test.cpp
diff --git a/searchlib/src/tests/attribute/attribute_operation/attribute_operation_test.cpp b/searchlib/src/tests/attribute/attribute_operation/attribute_operation_test.cpp
index c7b8cd0427b..a57469e2bd1 100644
--- a/searchlib/src/tests/attribute/attribute_operation/attribute_operation_test.cpp
+++ b/searchlib/src/tests/attribute/attribute_operation/attribute_operation_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/attribute/attribute_operation.h>
#include <vespa/searchlib/attribute/attributefactory.h>
diff --git a/searchlib/src/tests/attribute/attribute_test.cpp b/searchlib/src/tests/attribute/attribute_test.cpp
index 79e120d0683..97813a2a65e 100644
--- a/searchlib/src/tests/attribute/attribute_test.cpp
+++ b/searchlib/src/tests/attribute/attribute_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/fieldvalue/intfieldvalue.h>
#include <vespa/document/fieldvalue/stringfieldvalue.h>
@@ -6,22 +6,23 @@
#include <vespa/document/update/assignvalueupdate.h>
#include <vespa/document/update/mapvalueupdate.h>
#include <vespa/fastlib/io/bufferedfile.h>
+#include <vespa/searchlib/attribute/address_space_components.h>
#include <vespa/searchlib/attribute/attribute.h>
#include <vespa/searchlib/attribute/attributefactory.h>
#include <vespa/searchlib/attribute/attributeguard.h>
#include <vespa/searchlib/attribute/attributememorysavetarget.h>
#include <vespa/searchlib/attribute/attributevector.hpp>
#include <vespa/searchlib/attribute/attrvector.h>
+#include <vespa/searchlib/attribute/multienumattribute.hpp>
#include <vespa/searchlib/attribute/multinumericattribute.h>
#include <vespa/searchlib/attribute/multistringattribute.h>
+#include <vespa/searchlib/attribute/multivalueattribute.hpp>
#include <vespa/searchlib/attribute/predicate_attribute.h>
#include <vespa/searchlib/attribute/singlenumericpostattribute.h>
#include <vespa/searchlib/attribute/singlestringattribute.h>
-#include <vespa/searchlib/attribute/multivalueattribute.hpp>
-#include <vespa/searchlib/attribute/multienumattribute.hpp>
#include <vespa/searchlib/index/dummyfileheadercontext.h>
-#include <vespa/searchlib/util/randomgenerator.h>
#include <vespa/searchlib/test/weighted_type_test_utils.h>
+#include <vespa/searchlib/util/randomgenerator.h>
#include <vespa/vespalib/io/fileutil.h>
#include <vespa/vespalib/testkit/testapp.h>
#include <cmath>
@@ -2105,30 +2106,30 @@ AttributeTest::requireThatAddressSpaceUsageIsReported(const Config &config, bool
AddressSpaceUsage after = attrPtr->getAddressSpaceUsage();
if (attrPtr->hasEnum()) {
LOG(info, "requireThatAddressSpaceUsageIsReported(%s): Has enum", attrName.c_str());
- EXPECT_EQUAL(before.enumStoreUsage().used(), 1u);
- EXPECT_EQUAL(before.enumStoreUsage().dead(), 1u);
- EXPECT_GREATER(after.enumStoreUsage().used(), before.enumStoreUsage().used());
- EXPECT_GREATER_EQUAL(after.enumStoreUsage().limit(), before.enumStoreUsage().limit());
- EXPECT_GREATER(after.enumStoreUsage().limit(), 4200000000u);
+ EXPECT_EQUAL(before.enum_store_usage().used(), 1u);
+ EXPECT_EQUAL(before.enum_store_usage().dead(), 1u);
+ EXPECT_GREATER(after.enum_store_usage().used(), before.enum_store_usage().used());
+ EXPECT_GREATER_EQUAL(after.enum_store_usage().limit(), before.enum_store_usage().limit());
+ EXPECT_GREATER(after.enum_store_usage().limit(), 4200000000u);
} else {
LOG(info, "requireThatAddressSpaceUsageIsReported(%s): NOT enum", attrName.c_str());
- EXPECT_EQUAL(before.enumStoreUsage().used(), 0u);
- EXPECT_EQUAL(before.enumStoreUsage().dead(), 0u);
- EXPECT_EQUAL(after.enumStoreUsage(), before.enumStoreUsage());
- EXPECT_EQUAL(AddressSpaceUsage::defaultEnumStoreUsage(), after.enumStoreUsage());
+ EXPECT_EQUAL(before.enum_store_usage().used(), 0u);
+ EXPECT_EQUAL(before.enum_store_usage().dead(), 0u);
+ EXPECT_EQUAL(after.enum_store_usage(), before.enum_store_usage());
+ EXPECT_EQUAL(AddressSpaceComponents::default_enum_store_usage(), after.enum_store_usage());
}
if (attrPtr->hasMultiValue()) {
LOG(info, "requireThatAddressSpaceUsageIsReported(%s): Has multi-value", attrName.c_str());
- EXPECT_EQUAL(before.multiValueUsage().used(), 1u);
- EXPECT_EQUAL(before.multiValueUsage().dead(), 1u);
- EXPECT_GREATER_EQUAL(after.multiValueUsage().used(), before.multiValueUsage().used());
- EXPECT_GREATER(after.multiValueUsage().limit(), before.multiValueUsage().limit());
- EXPECT_GREATER((1ull << 32), after.multiValueUsage().limit());
+ EXPECT_EQUAL(before.multi_value_usage().used(), 1u);
+ EXPECT_EQUAL(before.multi_value_usage().dead(), 1u);
+ EXPECT_GREATER_EQUAL(after.multi_value_usage().used(), before.multi_value_usage().used());
+ EXPECT_GREATER(after.multi_value_usage().limit(), before.multi_value_usage().limit());
+ EXPECT_GREATER((1ull << 32), after.multi_value_usage().limit());
} else {
LOG(info, "requireThatAddressSpaceUsageIsReported(%s): NOT multi-value", attrName.c_str());
- EXPECT_EQUAL(before.multiValueUsage().used(), 0u);
- EXPECT_EQUAL(after.multiValueUsage(), before.multiValueUsage());
- EXPECT_EQUAL(AddressSpaceUsage::defaultMultiValueUsage(), after.multiValueUsage());
+ EXPECT_EQUAL(before.multi_value_usage().used(), 0u);
+ EXPECT_EQUAL(after.multi_value_usage(), before.multi_value_usage());
+ EXPECT_EQUAL(AddressSpaceComponents::default_multi_value_usage(), after.multi_value_usage());
}
}
diff --git a/searchlib/src/tests/attribute/attributefilewriter/CMakeLists.txt b/searchlib/src/tests/attribute/attributefilewriter/CMakeLists.txt
index 5cb854b25e9..7152e71bd93 100644
--- a/searchlib/src/tests/attribute/attributefilewriter/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/attributefilewriter/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_attributefilewriter_test_app TEST
SOURCES
attributefilewriter_test.cpp
diff --git a/searchlib/src/tests/attribute/attributefilewriter/attributefilewriter_test.cpp b/searchlib/src/tests/attribute/attributefilewriter/attributefilewriter_test.cpp
index 1e3531dc78e..c072f722677 100644
--- a/searchlib/src/tests/attribute/attributefilewriter/attributefilewriter_test.cpp
+++ b/searchlib/src/tests/attribute/attributefilewriter/attributefilewriter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/attribute/attributefilewriter.h>
diff --git a/searchlib/src/tests/attribute/attributemanager/CMakeLists.txt b/searchlib/src/tests/attribute/attributemanager/CMakeLists.txt
index f908485ff6b..08d9575cd99 100644
--- a/searchlib/src/tests/attribute/attributemanager/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/attributemanager/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_attributemanager_test_app TEST
SOURCES
attributemanager_test.cpp
diff --git a/searchlib/src/tests/attribute/attributemanager/attributemanager_test.cpp b/searchlib/src/tests/attribute/attributemanager/attributemanager_test.cpp
index 721e7e1c805..d654be1c460 100644
--- a/searchlib/src/tests/attribute/attributemanager/attributemanager_test.cpp
+++ b/searchlib/src/tests/attribute/attributemanager/attributemanager_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/attribute/attribute.h>
#include <vespa/searchlib/attribute/attributeguard.h>
@@ -20,43 +20,13 @@ using namespace search::attribute;
using std::shared_ptr;
using vespalib::stringref;
-typedef BasicType BT;
-typedef CollectionType CT;
-typedef AttributeVector::SP AVSP;
+using BT = BasicType;
+using CT = CollectionType;
+using AVSP = AttributeVector::SP;
namespace search {
-class AttributeManagerTest : public vespalib::TestApp
-{
-private:
- void verifyLoad(AttributeVector & v);
- void testLoad();
- void testGuards();
- void testConfigConvert();
- void testContext();
- void can_get_readable_attribute_vector_by_name();
-
- bool
- assertDataType(BT::Type exp,
- AttributesConfig::Attribute::Datatype in);
-
- bool
- assertCollectionType(CollectionType exp,
- AttributesConfig::Attribute::Collectiontype in,
- bool removeIfZ = false,
- bool createIfNe = false);
-
-public:
- AttributeManagerTest()
- {
- }
- int Main() override;
-};
-
-
-typedef MultiValueNumericAttribute< IntegerAttributeTemplate<int32_t>,
- multivalue::Value<int32_t> >
-TestAttributeBase;
+using TestAttributeBase = MultiValueNumericAttribute< IntegerAttributeTemplate<int32_t>, multivalue::Value<int32_t> >;
class TestAttribute : public TestAttributeBase
{
@@ -73,8 +43,7 @@ public:
};
-void
-AttributeManagerTest::testGuards()
+TEST("Test attribute guards")
{
AttributeVector::SP vec(new TestAttribute("mvint") );
TestAttribute * v = static_cast<TestAttribute *> (vec.get());
@@ -134,7 +103,7 @@ AttributeManagerTest::testGuards()
void
-AttributeManagerTest::verifyLoad(AttributeVector & v)
+verifyLoad(AttributeVector & v)
{
EXPECT_TRUE( !v.isLoaded() );
EXPECT_TRUE( v.load() );
@@ -143,8 +112,7 @@ AttributeManagerTest::verifyLoad(AttributeVector & v)
}
-void
-AttributeManagerTest::testLoad()
+TEST("Test loading of attributes")
{
{
TestAttributeBase v("mvint");
@@ -172,14 +140,14 @@ AttributeManagerTest::testLoad()
verifyLoad(v);
}
{
- AttributeVector::Config config(BT::INT32,
+ Config config(BT::INT32,
CollectionType::ARRAY);
TestAttributeBase v("mvint", config);
verifyLoad(v);
}
{
AttributeManager manager;
- AttributeVector::Config config(BT::INT32,
+ Config config(BT::INT32,
CollectionType::ARRAY);
EXPECT_TRUE(manager.addVector("mvint", config));
AttributeManager::AttributeList list;
@@ -193,7 +161,7 @@ AttributeManagerTest::testLoad()
bool
-AttributeManagerTest::assertDataType(BT::Type exp, AttributesConfig::Attribute::Datatype in)
+assertDataType(BT::Type exp, AttributesConfig::Attribute::Datatype in)
{
AttributesConfig::Attribute a;
a.datatype = in;
@@ -202,25 +170,22 @@ AttributeManagerTest::assertDataType(BT::Type exp, AttributesConfig::Attribute::
bool
-AttributeManagerTest::
assertCollectionType(CollectionType exp, AttributesConfig::Attribute::Collectiontype in,
- bool removeIfZ, bool createIfNe)
+ bool removeIfZ = false, bool createIfNe = false)
{
AttributesConfig::Attribute a;
a.collectiontype = in;
a.removeifzero = removeIfZ;
a.createifnonexistent = createIfNe;
- AttributeVector::Config out = ConfigConverter::convert(a);
+ Config out = ConfigConverter::convert(a);
return EXPECT_EQUAL(exp.type(), out.collectionType().type()) &&
EXPECT_EQUAL(exp.removeIfZero(), out.collectionType().removeIfZero()) &&
EXPECT_EQUAL(exp.createIfNonExistant(), out.collectionType().createIfNonExistant());
}
-void
-AttributeManagerTest::testConfigConvert()
+TEST("require that config can be converted")
{
- // typedef AttributeVector::Config AVC;
typedef BT AVBT;
typedef CollectionType AVCT;
using CACA = AttributesConfig::Attribute;
@@ -271,11 +236,17 @@ AttributeManagerTest::testConfigConvert()
a.ismutable = true;
EXPECT_TRUE(CC::convert(a).isMutable());
}
+ {
+ CACA a;
+ EXPECT_TRUE(!CC::convert(a).paged());
+ a.paged = true;
+ EXPECT_TRUE(CC::convert(a).paged());
+ }
{ // tensor
CACA a;
a.datatype = CACAD::TENSOR;
a.tensortype = "tensor(x[5])";
- AttributeVector::Config out = ConfigConverter::convert(a);
+ Config out = ConfigConverter::convert(a);
EXPECT_EQUAL("tensor(x[5])", out.tensorType().to_spec());
}
{ // distance metric (default)
@@ -334,8 +305,7 @@ bool gt_attribute(const attribute::IAttributeVector * a, const attribute::IAttri
return a->getName() < b->getName();
}
-void
-AttributeManagerTest::testContext()
+TEST("test the attribute context")
{
std::vector<AVSP> attrs;
// create various attributes vectors
@@ -370,13 +340,13 @@ AttributeManagerTest::testContext()
}
for (uint32_t i = 0; i < 2; ++i) {
- EXPECT_TRUE(first->getAttribute("sint32") != NULL);
- EXPECT_TRUE(first->getAttribute("aint32") != NULL);
- EXPECT_TRUE(first->getAttribute("wsint32") != NULL);
- EXPECT_TRUE(first->getAttributeStableEnum("wsint32") != NULL);
+ EXPECT_TRUE(first->getAttribute("sint32") != nullptr);
+ EXPECT_TRUE(first->getAttribute("aint32") != nullptr);
+ EXPECT_TRUE(first->getAttribute("wsint32") != nullptr);
+ EXPECT_TRUE(first->getAttributeStableEnum("wsint32") != nullptr);
}
- EXPECT_TRUE(first->getAttribute("foo") == NULL);
- EXPECT_TRUE(first->getAttribute("bar") == NULL);
+ EXPECT_TRUE(first->getAttribute("foo") == nullptr);
+ EXPECT_TRUE(first->getAttribute("bar") == nullptr);
// one generation guard taken per attribute asked for
for (uint32_t i = 0; i < attrs.size(); ++i) {
@@ -388,10 +358,10 @@ AttributeManagerTest::testContext()
{
IAttributeContext::UP second = manager.createContext();
- EXPECT_TRUE(second->getAttribute("sint32") != NULL);
- EXPECT_TRUE(second->getAttribute("aint32") != NULL);
- EXPECT_TRUE(second->getAttribute("wsint32") != NULL);
- EXPECT_TRUE(second->getAttributeStableEnum("wsint32") != NULL);
+ EXPECT_TRUE(second->getAttribute("sint32") != nullptr);
+ EXPECT_TRUE(second->getAttribute("aint32") != nullptr);
+ EXPECT_TRUE(second->getAttribute("wsint32") != nullptr);
+ EXPECT_TRUE(second->getAttributeStableEnum("wsint32") != nullptr);
// two generation guards taken per attribute asked for
for (uint32_t i = 0; i < attrs.size(); ++i) {
@@ -428,8 +398,7 @@ AttributeManagerTest::testContext()
}
}
-void
-AttributeManagerTest::can_get_readable_attribute_vector_by_name()
+TEST("require that we can get readable attribute by name")
{
auto attr = AttributeFactory::createAttribute("cool_attr", Config(BT::INT32, CT::SINGLE));
// Ensure there's something to actually load, or fetching the attribute will throw.
@@ -443,20 +412,7 @@ AttributeManagerTest::can_get_readable_attribute_vector_by_name()
EXPECT_TRUE(av.get() == nullptr);
}
-int AttributeManagerTest::Main()
-{
- TEST_INIT("attributemanager_test");
-
- testLoad();
- testGuards();
- testConfigConvert();
- testContext();
- can_get_readable_attribute_vector_by_name();
-
- TEST_DONE();
-}
-
} // namespace search
-TEST_APPHOOK(search::AttributeManagerTest);
+TEST_MAIN() { TEST_RUN_ALL(); }
diff --git a/searchlib/src/tests/attribute/benchmark/CMakeLists.txt b/searchlib/src/tests/attribute/benchmark/CMakeLists.txt
index 86e97966e1e..0086639582c 100644
--- a/searchlib/src/tests/attribute/benchmark/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/benchmark/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_attributebenchmark_app
SOURCES
attributebenchmark.cpp
diff --git a/searchlib/src/tests/attribute/benchmark/attributebenchmark.cpp b/searchlib/src/tests/attribute/benchmark/attributebenchmark.cpp
index bf5233fd809..7d168407328 100644
--- a/searchlib/src/tests/attribute/benchmark/attributebenchmark.cpp
+++ b/searchlib/src/tests/attribute/benchmark/attributebenchmark.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/util/randomgenerator.h>
#include <vespa/searchlib/attribute/attribute.h>
diff --git a/searchlib/src/tests/attribute/benchmark/attributebenchmark.rb b/searchlib/src/tests/attribute/benchmark/attributebenchmark.rb
index db1addfb12e..b49758835ea 100644
--- a/searchlib/src/tests/attribute/benchmark/attributebenchmark.rb
+++ b/searchlib/src/tests/attribute/benchmark/attributebenchmark.rb
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vectors = ["sv-num-new", "mv-num-new", "sv-string-new", "mv-string-new"]#, "sv-num-old", "mv-num-old", "sv-string-old", "mv-string-old"]
num_docs = [500000, 1000000, 2000000, 4000000, 8000000, 16000000]
unique_percent = [0.001, 0.01, 0.05, 0.20, 0.50]
diff --git a/searchlib/src/tests/attribute/benchmark/attributesearcher.h b/searchlib/src/tests/attribute/benchmark/attributesearcher.h
index bcb70abc654..3bf3d6e8fa5 100644
--- a/searchlib/src/tests/attribute/benchmark/attributesearcher.h
+++ b/searchlib/src/tests/attribute/benchmark/attributesearcher.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/tests/attribute/benchmark/attributeupdater.h b/searchlib/src/tests/attribute/benchmark/attributeupdater.h
index e4cfaf430d8..e1aea8c7d90 100644
--- a/searchlib/src/tests/attribute/benchmark/attributeupdater.h
+++ b/searchlib/src/tests/attribute/benchmark/attributeupdater.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/tests/attribute/benchmark/benchmarkplotter.rb b/searchlib/src/tests/attribute/benchmark/benchmarkplotter.rb
index 732a0d9b9fb..78eb9e3d0c4 100644
--- a/searchlib/src/tests/attribute/benchmark/benchmarkplotter.rb
+++ b/searchlib/src/tests/attribute/benchmark/benchmarkplotter.rb
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
require 'rexml/document'
def plot_graph(plot_data, plot_png, title, xlabel, ylabel, graph_titles)
diff --git a/searchlib/src/tests/attribute/bitvector/CMakeLists.txt b/searchlib/src/tests/attribute/bitvector/CMakeLists.txt
index e12fb7d8ca1..d1e90db92b6 100644
--- a/searchlib/src/tests/attribute/bitvector/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/bitvector/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_bitvector_test_app TEST
SOURCES
bitvector_test.cpp
diff --git a/searchlib/src/tests/attribute/bitvector/bitvector_test.cpp b/searchlib/src/tests/attribute/bitvector/bitvector_test.cpp
index d965f555b79..714a96f91b9 100644
--- a/searchlib/src/tests/attribute/bitvector/bitvector_test.cpp
+++ b/searchlib/src/tests/attribute/bitvector/bitvector_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchlib/src/tests/attribute/bitvector_search_cache/CMakeLists.txt b/searchlib/src/tests/attribute/bitvector_search_cache/CMakeLists.txt
index 2442474bcea..58908af8024 100644
--- a/searchlib/src/tests/attribute/bitvector_search_cache/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/bitvector_search_cache/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_bitvector_search_cache_test_app TEST
SOURCES
bitvector_search_cache_test.cpp
diff --git a/searchlib/src/tests/attribute/bitvector_search_cache/bitvector_search_cache_test.cpp b/searchlib/src/tests/attribute/bitvector_search_cache/bitvector_search_cache_test.cpp
index 0072f83bc54..655460496d3 100644
--- a/searchlib/src/tests/attribute/bitvector_search_cache/bitvector_search_cache_test.cpp
+++ b/searchlib/src/tests/attribute/bitvector_search_cache/bitvector_search_cache_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/attribute/bitvector_search_cache.h>
diff --git a/searchlib/src/tests/attribute/changevector/CMakeLists.txt b/searchlib/src/tests/attribute/changevector/CMakeLists.txt
index a9a8a4ec4be..8e0f3fb0d3e 100644
--- a/searchlib/src/tests/attribute/changevector/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/changevector/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_changevector_test_app TEST
SOURCES
changevector_test.cpp
diff --git a/searchlib/src/tests/attribute/changevector/changevector_test.cpp b/searchlib/src/tests/attribute/changevector/changevector_test.cpp
index 93a23630407..3e2c851c541 100644
--- a/searchlib/src/tests/attribute/changevector/changevector_test.cpp
+++ b/searchlib/src/tests/attribute/changevector/changevector_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/attribute/changevector.hpp>
diff --git a/searchlib/src/tests/attribute/changevector/changevector_test.sh b/searchlib/src/tests/attribute/changevector/changevector_test.sh
index 346304c975b..c8fc5b588fa 100755
--- a/searchlib/src/tests/attribute/changevector/changevector_test.sh
+++ b/searchlib/src/tests/attribute/changevector/changevector_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
$VALGRIND ./searchlib_changevector_test_app
rm -rf *.dat
diff --git a/searchlib/src/tests/attribute/compaction/CMakeLists.txt b/searchlib/src/tests/attribute/compaction/CMakeLists.txt
index 5c8a0d1f70d..e7a821247f8 100644
--- a/searchlib/src/tests/attribute/compaction/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/compaction/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_attribute_compaction_test_app TEST
SOURCES
attribute_compaction_test.cpp
diff --git a/searchlib/src/tests/attribute/compaction/attribute_compaction_test.cpp b/searchlib/src/tests/attribute/compaction/attribute_compaction_test.cpp
index a029373821a..801aa9341fb 100644
--- a/searchlib/src/tests/attribute/compaction/attribute_compaction_test.cpp
+++ b/searchlib/src/tests/attribute/compaction/attribute_compaction_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/attribute/address_space_usage.h>
#include <vespa/searchlib/attribute/attribute.h>
#include <vespa/searchlib/attribute/attributefactory.h>
@@ -154,7 +154,7 @@ public:
return status;
}
const Config &getConfig() const { return _v->getConfig(); }
- AddressSpace getMultiValueAddressSpaceUsage() const {return _v->getAddressSpaceUsage().multiValueUsage(); }
+ AddressSpace getMultiValueAddressSpaceUsage() const {return _v->getAddressSpaceUsage().multi_value_usage(); }
AddressSpace getMultiValueAddressSpaceUsage(const vespalib::string &prefix) {
AddressSpace usage(getMultiValueAddressSpaceUsage());
LOG(info, "address space usage %s: used=%zu, dead=%zu, limit=%zu, usage=%12.8f",
diff --git a/searchlib/src/tests/attribute/document_weight_iterator/CMakeLists.txt b/searchlib/src/tests/attribute/document_weight_iterator/CMakeLists.txt
index d41f109d43f..d854febd894 100644
--- a/searchlib/src/tests/attribute/document_weight_iterator/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/document_weight_iterator/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_document_weight_iterator_test_app TEST
SOURCES
document_weight_iterator_test.cpp
diff --git a/searchlib/src/tests/attribute/document_weight_iterator/document_weight_iterator_test.cpp b/searchlib/src/tests/attribute/document_weight_iterator/document_weight_iterator_test.cpp
index bbac15828a7..5e9626baad7 100644
--- a/searchlib/src/tests/attribute/document_weight_iterator/document_weight_iterator_test.cpp
+++ b/searchlib/src/tests/attribute/document_weight_iterator/document_weight_iterator_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/attribute/attribute.h>
#include <vespa/searchlib/attribute/attributefactory.h>
diff --git a/searchlib/src/tests/attribute/document_weight_or_filter_search/CMakeLists.txt b/searchlib/src/tests/attribute/document_weight_or_filter_search/CMakeLists.txt
index d93882b0afb..ca0ca75296f 100644
--- a/searchlib/src/tests/attribute/document_weight_or_filter_search/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/document_weight_or_filter_search/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_document_weight_or_filter_search_test_app TEST
SOURCES
document_weight_or_filter_search_test.cpp
diff --git a/searchlib/src/tests/attribute/document_weight_or_filter_search/document_weight_or_filter_search_test.cpp b/searchlib/src/tests/attribute/document_weight_or_filter_search/document_weight_or_filter_search_test.cpp
index 22f928ddf45..5c1c49d8eb5 100644
--- a/searchlib/src/tests/attribute/document_weight_or_filter_search/document_weight_or_filter_search_test.cpp
+++ b/searchlib/src/tests/attribute/document_weight_or_filter_search/document_weight_or_filter_search_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/gtest/gtest.h>
#include <vespa/searchlib/attribute/i_document_weight_attribute.h>
diff --git a/searchlib/src/tests/attribute/enum_comparator/CMakeLists.txt b/searchlib/src/tests/attribute/enum_comparator/CMakeLists.txt
index 440d0a391c9..658b34f0166 100644
--- a/searchlib/src/tests/attribute/enum_comparator/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/enum_comparator/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_enum_comparator_test_app TEST
SOURCES
enum_comparator_test.cpp
diff --git a/searchlib/src/tests/attribute/enum_comparator/enum_comparator_test.cpp b/searchlib/src/tests/attribute/enum_comparator/enum_comparator_test.cpp
index 3ab29797120..8c3d7173ae3 100644
--- a/searchlib/src/tests/attribute/enum_comparator/enum_comparator_test.cpp
+++ b/searchlib/src/tests/attribute/enum_comparator/enum_comparator_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/attribute/enumcomparator.h>
#include <vespa/vespalib/btree/btreeroot.h>
diff --git a/searchlib/src/tests/attribute/enumeratedsave/CMakeLists.txt b/searchlib/src/tests/attribute/enumeratedsave/CMakeLists.txt
index 247ed35498d..23a675b877a 100644
--- a/searchlib/src/tests/attribute/enumeratedsave/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/enumeratedsave/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_enumeratedsave_test_app TEST
SOURCES
enumeratedsave_test.cpp
diff --git a/searchlib/src/tests/attribute/enumeratedsave/enumeratedsave_test.cpp b/searchlib/src/tests/attribute/enumeratedsave/enumeratedsave_test.cpp
index dadf3f21297..e9d928e0910 100644
--- a/searchlib/src/tests/attribute/enumeratedsave/enumeratedsave_test.cpp
+++ b/searchlib/src/tests/attribute/enumeratedsave/enumeratedsave_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/fieldvalue/intfieldvalue.h>
#include <vespa/document/fieldvalue/stringfieldvalue.h>
@@ -10,16 +10,17 @@
#include <vespa/searchlib/attribute/attributememorysavetarget.h>
#include <vespa/searchlib/attribute/attributesaver.h>
#include <vespa/searchlib/attribute/i_enum_store_dictionary.h>
-#include <vespa/searchlib/queryeval/executeinfo.h>
#include <vespa/searchlib/fef/termfieldmatchdata.h>
#include <vespa/searchlib/index/dummyfileheadercontext.h>
#include <vespa/searchlib/parsequery/parse.h>
+#include <vespa/searchlib/queryeval/executeinfo.h>
+#include <vespa/searchlib/util/bufferwriter.h>
+#include <vespa/searchlib/util/file_settings.h>
#include <vespa/searchlib/util/randomgenerator.h>
+#include <vespa/vespalib/data/databuffer.h>
#include <vespa/vespalib/testkit/testapp.h>
-#include <vespa/searchlib/util/bufferwriter.h>
#include <vespa/vespalib/util/compress.h>
#include <vespa/vespalib/util/size_literals.h>
-#include <vespa/vespalib/data/databuffer.h>
#include <limits>
#include <iostream>
@@ -57,7 +58,7 @@ public:
}
virtual Buffer allocBuf(size_t size) override {
- return std::make_unique<BufferBuf>(size, 4_Ki);
+ return std::make_unique<BufferBuf>(size, search::FileSettings::DIRECTIO_ALIGNMENT);
}
virtual void writeBuf(Buffer buf_in) override {
diff --git a/searchlib/src/tests/attribute/enumstore/CMakeLists.txt b/searchlib/src/tests/attribute/enumstore/CMakeLists.txt
index 023822033bd..0154cfbc46d 100644
--- a/searchlib/src/tests/attribute/enumstore/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/enumstore/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_enumstore_test_app TEST
SOURCES
enumstore_test.cpp
diff --git a/searchlib/src/tests/attribute/enumstore/enumstore_test.cpp b/searchlib/src/tests/attribute/enumstore/enumstore_test.cpp
index ada39f9d2de..9c25429932b 100644
--- a/searchlib/src/tests/attribute/enumstore/enumstore_test.cpp
+++ b/searchlib/src/tests/attribute/enumstore/enumstore_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/attribute/enumstore.hpp>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/searchlib/src/tests/attribute/extendattributes/CMakeLists.txt b/searchlib/src/tests/attribute/extendattributes/CMakeLists.txt
index 95233045d9f..e989d317b9c 100644
--- a/searchlib/src/tests/attribute/extendattributes/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/extendattributes/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_extendattribute_test_app TEST
SOURCES
extendattribute.cpp
diff --git a/searchlib/src/tests/attribute/extendattributes/extendattribute.cpp b/searchlib/src/tests/attribute/extendattributes/extendattribute.cpp
index 95a659cf344..6707a7c6edf 100644
--- a/searchlib/src/tests/attribute/extendattributes/extendattribute.cpp
+++ b/searchlib/src/tests/attribute/extendattributes/extendattribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("extendattribute_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchlib/src/tests/attribute/extendattributes/extendattribute_test.sh b/searchlib/src/tests/attribute/extendattributes/extendattribute_test.sh
index ffb21e25e8e..250725ac052 100755
--- a/searchlib/src/tests/attribute/extendattributes/extendattribute_test.sh
+++ b/searchlib/src/tests/attribute/extendattributes/extendattribute_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
$VALGRIND ./searchlib_extendattribute_test_app
rm -rf *.dat
diff --git a/searchlib/src/tests/attribute/guard/CMakeLists.txt b/searchlib/src/tests/attribute/guard/CMakeLists.txt
index 1f51b318e6f..7a2dfe2f8cf 100644
--- a/searchlib/src/tests/attribute/guard/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/guard/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_attributeguard_test_app TEST
SOURCES
attributeguard.cpp
diff --git a/searchlib/src/tests/attribute/guard/attributeguard.cpp b/searchlib/src/tests/attribute/guard/attributeguard.cpp
index b042806eb35..709316cc6fd 100644
--- a/searchlib/src/tests/attribute/guard/attributeguard.cpp
+++ b/searchlib/src/tests/attribute/guard/attributeguard.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("attributeguard_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchlib/src/tests/attribute/guard/attributeguard_test.sh b/searchlib/src/tests/attribute/guard/attributeguard_test.sh
index 3705b8c0e37..15a46d53fb4 100755
--- a/searchlib/src/tests/attribute/guard/attributeguard_test.sh
+++ b/searchlib/src/tests/attribute/guard/attributeguard_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
$VALGRIND ./searchlib_attributeguard_test_app
rm -rf *.dat
diff --git a/searchlib/src/tests/attribute/imported_attribute_vector/CMakeLists.txt b/searchlib/src/tests/attribute/imported_attribute_vector/CMakeLists.txt
index 3421bc34ca5..8626742244b 100644
--- a/searchlib/src/tests/attribute/imported_attribute_vector/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/imported_attribute_vector/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_imported_attribute_vector_test_app TEST
SOURCES
imported_attribute_vector_test.cpp
diff --git a/searchlib/src/tests/attribute/imported_attribute_vector/imported_attribute_vector_test.cpp b/searchlib/src/tests/attribute/imported_attribute_vector/imported_attribute_vector_test.cpp
index 3a74a16794d..fa567be9b76 100644
--- a/searchlib/src/tests/attribute/imported_attribute_vector/imported_attribute_vector_test.cpp
+++ b/searchlib/src/tests/attribute/imported_attribute_vector/imported_attribute_vector_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/value.h>
#include <vespa/eval/eval/simple_value.h>
diff --git a/searchlib/src/tests/attribute/imported_search_context/CMakeLists.txt b/searchlib/src/tests/attribute/imported_search_context/CMakeLists.txt
index b77671f3c6e..024d130744d 100644
--- a/searchlib/src/tests/attribute/imported_search_context/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/imported_search_context/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_imported_search_context_test_app TEST
SOURCES
imported_search_context_test.cpp
diff --git a/searchlib/src/tests/attribute/imported_search_context/imported_search_context_test.cpp b/searchlib/src/tests/attribute/imported_search_context/imported_search_context_test.cpp
index 0be6d58bb8f..35011c052d2 100644
--- a/searchlib/src/tests/attribute/imported_search_context/imported_search_context_test.cpp
+++ b/searchlib/src/tests/attribute/imported_search_context/imported_search_context_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcommon/attribute/search_context_params.h>
#include <vespa/searchlib/attribute/imported_search_context.h>
diff --git a/searchlib/src/tests/attribute/multi_value_mapping/CMakeLists.txt b/searchlib/src/tests/attribute/multi_value_mapping/CMakeLists.txt
index 3c78b65aeb2..750cc29c720 100644
--- a/searchlib/src/tests/attribute/multi_value_mapping/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/multi_value_mapping/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_multi_value_mapping_test_app TEST
SOURCES
multi_value_mapping_test.cpp
diff --git a/searchlib/src/tests/attribute/multi_value_mapping/multi_value_mapping_test.cpp b/searchlib/src/tests/attribute/multi_value_mapping/multi_value_mapping_test.cpp
index c41c8524a37..8b1906573d4 100644
--- a/searchlib/src/tests/attribute/multi_value_mapping/multi_value_mapping_test.cpp
+++ b/searchlib/src/tests/attribute/multi_value_mapping/multi_value_mapping_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/attribute/multi_value_mapping.h>
#include <vespa/searchlib/attribute/multi_value_mapping.hpp>
diff --git a/searchlib/src/tests/attribute/posting_list_merger/CMakeLists.txt b/searchlib/src/tests/attribute/posting_list_merger/CMakeLists.txt
index 6e3cccf730f..dd74c845dd7 100644
--- a/searchlib/src/tests/attribute/posting_list_merger/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/posting_list_merger/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_posting_list_merger_test_app TEST
SOURCES
posting_list_merger_test.cpp
diff --git a/searchlib/src/tests/attribute/posting_list_merger/posting_list_merger_test.cpp b/searchlib/src/tests/attribute/posting_list_merger/posting_list_merger_test.cpp
index e2ae0a387ed..abe05a52151 100644
--- a/searchlib/src/tests/attribute/posting_list_merger/posting_list_merger_test.cpp
+++ b/searchlib/src/tests/attribute/posting_list_merger/posting_list_merger_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/attribute/posting_list_merger.h>
diff --git a/searchlib/src/tests/attribute/posting_store/CMakeLists.txt b/searchlib/src/tests/attribute/posting_store/CMakeLists.txt
index 96e6ee5d49b..2b60a860a4e 100644
--- a/searchlib/src/tests/attribute/posting_store/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/posting_store/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_posting_store_test_app TEST
SOURCES
posting_store_test.cpp
diff --git a/searchlib/src/tests/attribute/posting_store/posting_store_test.cpp b/searchlib/src/tests/attribute/posting_store/posting_store_test.cpp
index a502dbcaf79..cd78332cacd 100644
--- a/searchlib/src/tests/attribute/posting_store/posting_store_test.cpp
+++ b/searchlib/src/tests/attribute/posting_store/posting_store_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcommon/attribute/config.h>
#include <vespa/searchcommon/attribute/status.h>
diff --git a/searchlib/src/tests/attribute/postinglist/CMakeLists.txt b/searchlib/src/tests/attribute/postinglist/CMakeLists.txt
index 06ef2159204..e0f2e7106cc 100644
--- a/searchlib/src/tests/attribute/postinglist/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/postinglist/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_postinglist_test_app TEST
SOURCES
postinglist.cpp
diff --git a/searchlib/src/tests/attribute/postinglist/postinglist.cpp b/searchlib/src/tests/attribute/postinglist/postinglist.cpp
index d5bcad56495..446aeaf22a7 100644
--- a/searchlib/src/tests/attribute/postinglist/postinglist.cpp
+++ b/searchlib/src/tests/attribute/postinglist/postinglist.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/btree/btreenodeallocator.hpp>
#include <vespa/vespalib/btree/btreenode.hpp>
diff --git a/searchlib/src/tests/attribute/postinglistattribute/CMakeLists.txt b/searchlib/src/tests/attribute/postinglistattribute/CMakeLists.txt
index 46f490e2060..ef98f43c968 100644
--- a/searchlib/src/tests/attribute/postinglistattribute/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/postinglistattribute/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_postinglistattribute_test_app TEST
SOURCES
postinglistattribute_test.cpp
diff --git a/searchlib/src/tests/attribute/postinglistattribute/postinglistattribute_test.cpp b/searchlib/src/tests/attribute/postinglistattribute/postinglistattribute_test.cpp
index d6238d848b4..868f7d5a93b 100644
--- a/searchlib/src/tests/attribute/postinglistattribute/postinglistattribute_test.cpp
+++ b/searchlib/src/tests/attribute/postinglistattribute/postinglistattribute_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/searchlib/src/tests/attribute/postinglistattribute/postinglistattribute_test.sh b/searchlib/src/tests/attribute/postinglistattribute/postinglistattribute_test.sh
index e38f56cbc76..f5935f62a50 100755
--- a/searchlib/src/tests/attribute/postinglistattribute/postinglistattribute_test.sh
+++ b/searchlib/src/tests/attribute/postinglistattribute/postinglistattribute_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
$VALGRIND ./searchlib_postinglistattribute_test_app
rm -rf *.dat
diff --git a/searchlib/src/tests/attribute/reference_attribute/CMakeLists.txt b/searchlib/src/tests/attribute/reference_attribute/CMakeLists.txt
index 0e45fc97ab5..3eaf4c89584 100644
--- a/searchlib/src/tests/attribute/reference_attribute/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/reference_attribute/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_reference_attribute_test_app TEST
SOURCES
reference_attribute_test.cpp
diff --git a/searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp b/searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp
index f45c3e4a1a0..bafcd545e33 100644
--- a/searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp
+++ b/searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/documentid.h>
#include <vespa/searchlib/attribute/attributeguard.h>
diff --git a/searchlib/src/tests/attribute/save_target/CMakeLists.txt b/searchlib/src/tests/attribute/save_target/CMakeLists.txt
index e2511bcccf2..356aa31ae93 100644
--- a/searchlib/src/tests/attribute/save_target/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/save_target/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_attribute_save_target_test_app TEST
SOURCES
attribute_save_target_test.cpp
diff --git a/searchlib/src/tests/attribute/save_target/attribute_save_target_test.cpp b/searchlib/src/tests/attribute/save_target/attribute_save_target_test.cpp
index 103551dd93a..505032220c1 100644
--- a/searchlib/src/tests/attribute/save_target/attribute_save_target_test.cpp
+++ b/searchlib/src/tests/attribute/save_target/attribute_save_target_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/attribute/attributefilesavetarget.h>
#include <vespa/searchlib/attribute/attributememorysavetarget.h>
diff --git a/searchlib/src/tests/attribute/searchable/CMakeLists.txt b/searchlib/src/tests/attribute/searchable/CMakeLists.txt
index 1f3b05909e3..29a4c122bf7 100644
--- a/searchlib/src/tests/attribute/searchable/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/searchable/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_attribute_searchable_adapter_test_app TEST
SOURCES
attribute_searchable_adapter_test.cpp
diff --git a/searchlib/src/tests/attribute/searchable/attribute_searchable_adapter_test.cpp b/searchlib/src/tests/attribute/searchable/attribute_searchable_adapter_test.cpp
index 29ef4e9e6ef..48f56394800 100644
--- a/searchlib/src/tests/attribute/searchable/attribute_searchable_adapter_test.cpp
+++ b/searchlib/src/tests/attribute/searchable/attribute_searchable_adapter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchcommon/attribute/iattributecontext.h>
diff --git a/searchlib/src/tests/attribute/searchable/attribute_weighted_set_blueprint_test.cpp b/searchlib/src/tests/attribute/searchable/attribute_weighted_set_blueprint_test.cpp
index 328cdcf663f..0bdd4f5b4dc 100644
--- a/searchlib/src/tests/attribute/searchable/attribute_weighted_set_blueprint_test.cpp
+++ b/searchlib/src/tests/attribute/searchable/attribute_weighted_set_blueprint_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/attribute/attribute_blueprint_factory.h>
#include <vespa/searchlib/attribute/attribute_weighted_set_blueprint.h>
diff --git a/searchlib/src/tests/attribute/searchable/attributeblueprint_test.cpp b/searchlib/src/tests/attribute/searchable/attributeblueprint_test.cpp
index ec72b348943..605a59b8a6a 100644
--- a/searchlib/src/tests/attribute/searchable/attributeblueprint_test.cpp
+++ b/searchlib/src/tests/attribute/searchable/attributeblueprint_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/tensor_spec.h>
#include <vespa/eval/eval/value.h>
diff --git a/searchlib/src/tests/attribute/searchcontext/CMakeLists.txt b/searchlib/src/tests/attribute/searchcontext/CMakeLists.txt
index df1fe25a14c..d7cdee86dc7 100644
--- a/searchlib/src/tests/attribute/searchcontext/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/searchcontext/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_searchcontext_test_app TEST
SOURCES
searchcontext_test.cpp
diff --git a/searchlib/src/tests/attribute/searchcontext/searchcontext_test.cpp b/searchlib/src/tests/attribute/searchcontext/searchcontext_test.cpp
index 1af70946fa2..4240d68a0f0 100644
--- a/searchlib/src/tests/attribute/searchcontext/searchcontext_test.cpp
+++ b/searchlib/src/tests/attribute/searchcontext/searchcontext_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/attribute/attributefactory.h>
#include <vespa/searchlib/attribute/attributeiterators.h>
diff --git a/searchlib/src/tests/attribute/searchcontext/searchcontext_test.sh b/searchlib/src/tests/attribute/searchcontext/searchcontext_test.sh
index 2d8352bd9e3..443acabec9a 100755
--- a/searchlib/src/tests/attribute/searchcontext/searchcontext_test.sh
+++ b/searchlib/src/tests/attribute/searchcontext/searchcontext_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
$VALGRIND ./searchlib_searchcontext_test_app
rm -rf *.dat
diff --git a/searchlib/src/tests/attribute/searchcontextelementiterator/CMakeLists.txt b/searchlib/src/tests/attribute/searchcontextelementiterator/CMakeLists.txt
index 5cae6f10274..b862b22572a 100644
--- a/searchlib/src/tests/attribute/searchcontextelementiterator/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/searchcontextelementiterator/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_attribute_searchcontextelementiterator_test_app TEST
SOURCES
searchcontextelementiterator_test.cpp
diff --git a/searchlib/src/tests/attribute/searchcontextelementiterator/searchcontextelementiterator_test.cpp b/searchlib/src/tests/attribute/searchcontextelementiterator/searchcontextelementiterator_test.cpp
index 7f9577eb13f..14861819bb5 100644
--- a/searchlib/src/tests/attribute/searchcontextelementiterator/searchcontextelementiterator_test.cpp
+++ b/searchlib/src/tests/attribute/searchcontextelementiterator/searchcontextelementiterator_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/attribute/searchcontextelementiterator.h>
#include <vespa/searchlib/attribute/attributevector.h>
diff --git a/searchlib/src/tests/attribute/sourceselector/CMakeLists.txt b/searchlib/src/tests/attribute/sourceselector/CMakeLists.txt
index 038bf2d9428..9782296bf21 100644
--- a/searchlib/src/tests/attribute/sourceselector/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/sourceselector/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_sourceselector_test_app TEST
SOURCES
sourceselector_test.cpp
diff --git a/searchlib/src/tests/attribute/sourceselector/sourceselector_test.cpp b/searchlib/src/tests/attribute/sourceselector/sourceselector_test.cpp
index 03584b0dde9..c6091604a97 100644
--- a/searchlib/src/tests/attribute/sourceselector/sourceselector_test.cpp
+++ b/searchlib/src/tests/attribute/sourceselector/sourceselector_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for sourceselector.
#include <vespa/searchlib/attribute/fixedsourceselector.h>
diff --git a/searchlib/src/tests/attribute/stringattribute/CMakeLists.txt b/searchlib/src/tests/attribute/stringattribute/CMakeLists.txt
index d286cc4dac3..e412d073952 100644
--- a/searchlib/src/tests/attribute/stringattribute/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/stringattribute/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_stringattribute_test_app TEST
SOURCES
stringattribute_test.cpp
diff --git a/searchlib/src/tests/attribute/stringattribute/stringattribute_test.cpp b/searchlib/src/tests/attribute/stringattribute/stringattribute_test.cpp
index 84ed72d42ca..8a17114057c 100644
--- a/searchlib/src/tests/attribute/stringattribute/stringattribute_test.cpp
+++ b/searchlib/src/tests/attribute/stringattribute/stringattribute_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/attribute/enumstore.h>
#include <vespa/searchlib/attribute/singlestringattribute.h>
diff --git a/searchlib/src/tests/attribute/stringattribute/stringattribute_test.sh b/searchlib/src/tests/attribute/stringattribute/stringattribute_test.sh
index 7a39c2cb864..a77b08a0c58 100755
--- a/searchlib/src/tests/attribute/stringattribute/stringattribute_test.sh
+++ b/searchlib/src/tests/attribute/stringattribute/stringattribute_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
$VALGRIND ./searchlib_stringattribute_test_app
rm -rf *.dat
diff --git a/searchlib/src/tests/attribute/tensorattribute/CMakeLists.txt b/searchlib/src/tests/attribute/tensorattribute/CMakeLists.txt
index 44ff45d02d3..00d55b0d428 100644
--- a/searchlib/src/tests/attribute/tensorattribute/CMakeLists.txt
+++ b/searchlib/src/tests/attribute/tensorattribute/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_tensorattribute_test_app TEST
SOURCES
tensorattribute_test.cpp
diff --git a/searchlib/src/tests/attribute/tensorattribute/tensorattribute_test.cpp b/searchlib/src/tests/attribute/tensorattribute/tensorattribute_test.cpp
index b27c26d1139..922b0d4fb3e 100644
--- a/searchlib/src/tests/attribute/tensorattribute/tensorattribute_test.cpp
+++ b/searchlib/src/tests/attribute/tensorattribute/tensorattribute_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/exceptions.h>
#include <vespa/eval/eval/simple_value.h>
@@ -17,6 +17,7 @@
#include <vespa/searchlib/tensor/hnsw_index.h>
#include <vespa/searchlib/tensor/nearest_neighbor_index.h>
#include <vespa/searchlib/tensor/nearest_neighbor_index_factory.h>
+#include <vespa/searchlib/tensor/nearest_neighbor_index_loader.h>
#include <vespa/searchlib/tensor/nearest_neighbor_index_saver.h>
#include <vespa/searchlib/tensor/serialized_fast_value_attribute.h>
#include <vespa/searchlib/tensor/tensor_attribute.h>
@@ -26,14 +27,18 @@
#include <vespa/vespalib/io/fileutil.h>
#include <vespa/vespalib/test/insertion_operators.h>
#include <vespa/vespalib/testkit/test_kit.h>
+#include <vespa/vespalib/util/mmap_file_allocator_factory.h>
#include <vespa/searchlib/util/bufferwriter.h>
+#include <vespa/vespalib/util/threadstackexecutor.h>
#include <vespa/log/log.h>
LOG_SETUP("tensorattribute_test");
using document::WrongTensorTypeException;
+using search::AddressSpaceUsage;
using search::AttributeGuard;
using search::AttributeVector;
+using search::CompactionStrategy;
using search::attribute::DistanceMetric;
using search::attribute::HnswIndexParams;
using search::queryeval::GlobalFilter;
@@ -47,6 +52,7 @@ using search::tensor::HnswIndex;
using search::tensor::HnswNode;
using search::tensor::NearestNeighborIndex;
using search::tensor::NearestNeighborIndexFactory;
+using search::tensor::NearestNeighborIndexLoader;
using search::tensor::NearestNeighborIndexSaver;
using search::tensor::PrepareResult;
using search::tensor::TensorAttribute;
@@ -85,6 +91,22 @@ public:
}
};
+class MockIndexLoader : public NearestNeighborIndexLoader {
+private:
+ int& _index_value;
+ search::FileReader<int> _reader;
+
+public:
+ MockIndexLoader(int& index_value, FastOS_FileInterface& file)
+ : _index_value(index_value),
+ _reader(file)
+ {}
+ bool load_next() override {
+ _index_value = _reader.readHostOrder();
+ return false;
+ }
+};
+
class MockPrepareResult : public PrepareResult {
public:
uint32_t docid;
@@ -145,6 +167,12 @@ public:
void expect_adds(const EntryVector &exp_adds) const {
EXPECT_EQUAL(exp_adds, _adds);
}
+ void expect_prepare_adds(const EntryVector &exp) const {
+ EXPECT_EQUAL(exp, _prepare_adds);
+ }
+ void expect_complete_adds(const EntryVector &exp) const {
+ EXPECT_EQUAL(exp, _complete_adds);
+ }
void expect_empty_remove() const {
EXPECT_TRUE(_removes.empty());
}
@@ -191,21 +219,27 @@ public:
void trim_hold_lists(generation_t first_used_gen) override {
_trim_gen = first_used_gen;
}
+ bool consider_compact(const CompactionStrategy&) override {
+ return false;
+ }
+ vespalib::MemoryUsage update_stat() override {
+ return vespalib::MemoryUsage();
+ }
vespalib::MemoryUsage memory_usage() const override {
++_memory_usage_cnt;
return vespalib::MemoryUsage();
}
+ void populate_address_space_usage(AddressSpaceUsage&) const override {}
void get_state(const vespalib::slime::Inserter&) const override {}
+ void shrink_lid_space(uint32_t) override { }
std::unique_ptr<NearestNeighborIndexSaver> make_saver() const override {
if (_index_value != 0) {
return std::make_unique<MockIndexSaver>(_index_value);
}
return std::unique_ptr<NearestNeighborIndexSaver>();
}
- bool load(const search::fileutil::LoadedBuffer& buf) override {
- ASSERT_EQUAL(sizeof(int), buf.size());
- _index_value = (reinterpret_cast<const int*>(buf.buffer()))[0];
- return true;
+ std::unique_ptr<NearestNeighborIndexLoader> make_loader(FastOS_FileInterface& file) override {
+ return std::make_unique<MockIndexLoader>(_index_value, file);
}
std::vector<Neighbor> find_top_k(uint32_t k, vespalib::eval::TypedCells vector, uint32_t explore_k,
double distance_threshold) const override
@@ -256,6 +290,7 @@ struct FixtureTraits {
bool use_direct_tensor_attribute = false;
bool enable_hnsw_index = false;
bool use_mock_index = false;
+ bool use_mmap_file_allocator = false;
FixtureTraits dense() && {
use_dense_tensor_attribute = true;
@@ -263,6 +298,11 @@ struct FixtureTraits {
return *this;
}
+ FixtureTraits mmap_file_allocator() && {
+ use_mmap_file_allocator = true;
+ return *this;
+ }
+
FixtureTraits hnsw() && {
use_dense_tensor_attribute = true;
enable_hnsw_index = true;
@@ -298,6 +338,7 @@ struct Fixture {
std::unique_ptr<NearestNeighborIndexFactory> _index_factory;
std::shared_ptr<TensorAttribute> _tensorAttr;
std::shared_ptr<AttributeVector> _attr;
+ vespalib::ThreadStackExecutor _executor;
bool _denseTensors;
FixtureTraits _traits;
@@ -310,6 +351,7 @@ struct Fixture {
_index_factory(),
_tensorAttr(),
_attr(),
+ _executor(1, 0x10000),
_denseTensors(false),
_traits(traits)
{
@@ -327,6 +369,9 @@ struct Fixture {
if (_cfg.tensorType().is_dense()) {
_denseTensors = true;
}
+ if (_traits.use_mmap_file_allocator) {
+ _cfg.setPaged(true);
+ }
if (_traits.use_mock_index) {
_index_factory = std::make_unique<MockNearestNeighborIndexFactory>();
} else {
@@ -452,6 +497,13 @@ struct Fixture {
EXPECT_TRUE(loadok);
}
+ void loadWithExecutor() {
+ _tensorAttr = makeAttr();
+ _attr = _tensorAttr;
+ bool loadok = _attr->load(&_executor);
+ EXPECT_TRUE(loadok);
+ }
+
TensorSpec expDenseTensor3() const {
return TensorSpec(denseSpec)
.add({{"x", 0}, {"y", 1}}, 11)
@@ -483,6 +535,7 @@ struct Fixture {
void testTensorTypeFileHeaderTag();
void testEmptyTensor();
void testOnHoldAccounting();
+ void test_populate_address_space_usage();
};
@@ -674,6 +727,21 @@ Fixture::testOnHoldAccounting()
EXPECT_EQUAL(0u, getStatus().getOnHold());
}
+void
+Fixture::test_populate_address_space_usage()
+{
+ search::AddressSpaceUsage usage = _attr->getAddressSpaceUsage();
+ const auto& all = usage.get_all();
+ if (_denseTensors) {
+ EXPECT_EQUAL(1u, all.size());
+ EXPECT_EQUAL(1u, all.count("tensor-store"));
+ } else {
+ EXPECT_EQUAL(2u, all.size());
+ EXPECT_EQUAL(1u, all.count("tensor-store"));
+ EXPECT_EQUAL(1u, all.count("shared-string-repo"));
+ }
+}
+
template <class MakeFixture>
void testAll(MakeFixture &&f)
{
@@ -684,6 +752,7 @@ void testAll(MakeFixture &&f)
TEST_DO(f()->testTensorTypeFileHeaderTag());
TEST_DO(f()->testEmptyTensor());
TEST_DO(f()->testOnHoldAccounting());
+ TEST_DO(f()->test_populate_address_space_usage());
}
TEST("Test sparse tensors with generic tensor attribute")
@@ -756,6 +825,16 @@ TEST_F("Hnsw index is integrated in dense tensor attribute and can be saved and
expect_level_0(1, index_b.get_node(2));
}
+TEST_F("Populates address space usage", DenseTensorAttributeHnswIndex)
+{
+ search::AddressSpaceUsage usage = f._attr->getAddressSpaceUsage();
+ const auto& all = usage.get_all();
+ EXPECT_EQUAL(3u, all.size());
+ EXPECT_EQUAL(1u, all.count("tensor-store"));
+ EXPECT_EQUAL(1u, all.count("hnsw-node-store"));
+ EXPECT_EQUAL(1u, all.count("hnsw-link-store"));
+}
+
class DenseTensorAttributeMockIndex : public Fixture {
public:
@@ -885,11 +964,28 @@ TEST_F("onLoads() ignores saved nearest neighbor index if not enabled in config"
EXPECT_EQUAL(f.as_dense_tensor().nearest_neighbor_index(), nullptr);
}
+TEST_F("onLoad() uses executor if major index parameters are changed", DenseTensorAttributeMockIndex)
+{
+ f.save_example_tensors_with_mock_index();
+ f.set_hnsw_index_params(HnswIndexParams(5, 20, DistanceMetric::Euclidean));
+ EXPECT_EQUAL(0ul, f._executor.getStats().acceptedTasks);
+ f.loadWithExecutor();
+ EXPECT_EQUAL(2ul, f._executor.getStats().acceptedTasks);
+ f.assert_example_tensors();
+ auto& index = f.mock_index();
+ EXPECT_EQUAL(0, index.get_index_value());
+ index.expect_adds({});
+ index.expect_prepare_adds({{1, {3, 5}}, {2, {7, 9}}});
+ index.expect_complete_adds({{1, {3, 5}}, {2, {7, 9}}});
+}
+
TEST_F("onLoad() ignores saved nearest neighbor index if major index parameters are changed", DenseTensorAttributeMockIndex)
{
f.save_example_tensors_with_mock_index();
f.set_hnsw_index_params(HnswIndexParams(5, 20, DistanceMetric::Euclidean));
+ EXPECT_EQUAL(0ul, f._executor.getStats().acceptedTasks);
f.load();
+ EXPECT_EQUAL(0ul, f._executor.getStats().acceptedTasks);
f.assert_example_tensors();
auto& index = f.mock_index();
EXPECT_EQUAL(0, index.get_index_value());
@@ -915,41 +1011,50 @@ TEST_F("Nearest neighbor index type is added to attribute file header", DenseTen
EXPECT_EQUAL("hnsw", header.getTag("nearest_neighbor_index").asString());
}
-class NearestNeighborBlueprintFixture : public DenseTensorAttributeMockIndex {
+template <typename ParentT>
+class NearestNeighborBlueprintFixtureBase : public ParentT {
public:
- NearestNeighborBlueprintFixture() {
- set_tensor(1, vec_2d(1, 1));
- set_tensor(2, vec_2d(2, 2));
- set_tensor(3, vec_2d(3, 3));
- set_tensor(4, vec_2d(4, 4));
- set_tensor(5, vec_2d(5, 5));
- set_tensor(6, vec_2d(6, 6));
- set_tensor(7, vec_2d(7, 7));
- set_tensor(8, vec_2d(8, 8));
- set_tensor(9, vec_2d(9, 9));
- set_tensor(10, vec_2d(0, 0));
+ NearestNeighborBlueprintFixtureBase() {
+ this->set_tensor(1, vec_2d(1, 1));
+ this->set_tensor(2, vec_2d(2, 2));
+ this->set_tensor(3, vec_2d(3, 3));
+ this->set_tensor(4, vec_2d(4, 4));
+ this->set_tensor(5, vec_2d(5, 5));
+ this->set_tensor(6, vec_2d(6, 6));
+ this->set_tensor(7, vec_2d(7, 7));
+ this->set_tensor(8, vec_2d(8, 8));
+ this->set_tensor(9, vec_2d(9, 9));
+ this->set_tensor(10, vec_2d(0, 0));
}
std::unique_ptr<Value> createDenseTensor(const TensorSpec &spec) {
return SimpleValue::from_spec(spec);
}
- std::unique_ptr<NearestNeighborBlueprint> make_blueprint(double brute_force_limit = 0.05) {
+ std::unique_ptr<NearestNeighborBlueprint> make_blueprint(bool approximate = true, double brute_force_limit = 0.05) {
search::queryeval::FieldSpec field("foo", 0, 0);
auto bp = std::make_unique<NearestNeighborBlueprint>(
field,
- as_dense_tensor(),
+ this->as_dense_tensor(),
createDenseTensor(vec_2d(17, 42)),
- 3, true, 5,
+ 3, approximate, 5,
100100.25,
brute_force_limit);
EXPECT_EQUAL(11u, bp->getState().estimate().estHits);
- EXPECT_TRUE(bp->may_approximate());
+ EXPECT_EQUAL(approximate, bp->may_approximate());
EXPECT_EQUAL(100100.25 * 100100.25, bp->get_distance_threshold());
return bp;
}
};
+class DenseTensorAttributeWithoutIndex : public Fixture {
+public:
+ DenseTensorAttributeWithoutIndex() : Fixture(vec_2d_spec, FixtureTraits().dense()) {}
+};
+
+using NearestNeighborBlueprintFixture = NearestNeighborBlueprintFixtureBase<DenseTensorAttributeMockIndex>;
+using NearestNeighborBlueprintWithoutIndexFixture = NearestNeighborBlueprintFixtureBase<DenseTensorAttributeWithoutIndex>;
+
TEST_F("NN blueprint handles empty filter", NearestNeighborBlueprintFixture)
{
auto bp = f.make_blueprint();
@@ -990,7 +1095,7 @@ TEST_F("NN blueprint handles weak filter", NearestNeighborBlueprintFixture)
TEST_F("NN blueprint handles strong filter triggering brute force search", NearestNeighborBlueprintFixture)
{
- auto bp = f.make_blueprint(0.2);
+ auto bp = f.make_blueprint(true, 0.2);
auto filter = search::BitVector::create(11);
filter->setBit(3);
filter->invalidateCachedCount();
@@ -1000,4 +1105,35 @@ TEST_F("NN blueprint handles strong filter triggering brute force search", Neare
EXPECT_FALSE(bp->may_approximate());
}
+TEST_F("NN blueprint wants global filter when having index", NearestNeighborBlueprintFixture)
+{
+ auto bp = f.make_blueprint();
+ EXPECT_TRUE(bp->getState().want_global_filter());
+}
+
+TEST_F("NN blueprint do NOT want global filter when explicitly using brute force", NearestNeighborBlueprintFixture)
+{
+ auto bp = f.make_blueprint(false);
+ EXPECT_FALSE(bp->getState().want_global_filter());
+}
+
+TEST_F("NN blueprint do NOT want global filter when NOT having index (implicit brute force)", NearestNeighborBlueprintWithoutIndexFixture)
+{
+ auto bp = f.make_blueprint();
+ EXPECT_FALSE(bp->getState().want_global_filter());
+}
+
+TEST("Dense tensor attribute with paged flag uses mmap file allocator")
+{
+ vespalib::string basedir("mmap-file-allocator-factory-dir");
+ vespalib::alloc::MmapFileAllocatorFactory::instance().setup(basedir);
+ {
+ Fixture f(vec_2d_spec, FixtureTraits().dense().mmap_file_allocator());
+ vespalib::string allocator_dir(basedir + "/0.my_attr");
+ EXPECT_TRUE(vespalib::isDirectory(allocator_dir));
+ }
+ vespalib::alloc::MmapFileAllocatorFactory::instance().setup("");
+ vespalib::rmdir(basedir, true);
+}
+
TEST_MAIN() { TEST_RUN_ALL(); }
diff --git a/searchlib/src/tests/bitcompression/expgolomb/CMakeLists.txt b/searchlib/src/tests/bitcompression/expgolomb/CMakeLists.txt
index aa5e195ca23..e40010fda8f 100644
--- a/searchlib/src/tests/bitcompression/expgolomb/CMakeLists.txt
+++ b/searchlib/src/tests/bitcompression/expgolomb/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_expgolomb_test_app TEST
SOURCES
expgolomb_test.cpp
diff --git a/searchlib/src/tests/bitcompression/expgolomb/expgolomb_test.cpp b/searchlib/src/tests/bitcompression/expgolomb/expgolomb_test.cpp
index fd3c677f328..a1a74a1d68c 100644
--- a/searchlib/src/tests/bitcompression/expgolomb/expgolomb_test.cpp
+++ b/searchlib/src/tests/bitcompression/expgolomb/expgolomb_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/bitcompression/compression.h>
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchlib/src/tests/bitvector/CMakeLists.txt b/searchlib/src/tests/bitvector/CMakeLists.txt
index fcb3daef859..4ce69cdc9f8 100644
--- a/searchlib/src/tests/bitvector/CMakeLists.txt
+++ b/searchlib/src/tests/bitvector/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_bitvectorbenchmark_test_app
SOURCES
bitvectorbenchmark.cpp
diff --git a/searchlib/src/tests/bitvector/bitvectorbenchmark.cpp b/searchlib/src/tests/bitvector/bitvectorbenchmark.cpp
index dc0dc646d77..52888d0c659 100644
--- a/searchlib/src/tests/bitvector/bitvectorbenchmark.cpp
+++ b/searchlib/src/tests/bitvector/bitvectorbenchmark.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
#include <vespa/searchlib/common/bitvector.h>
#include <vespa/fastos/app.h>
diff --git a/searchlib/src/tests/btree/CMakeLists.txt b/searchlib/src/tests/btree/CMakeLists.txt
index ff396144c52..556f6bf2b23 100644
--- a/searchlib/src/tests/btree/CMakeLists.txt
+++ b/searchlib/src/tests/btree/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_scanspeed_app
SOURCES
scanspeed.cpp
diff --git a/searchlib/src/tests/btree/scanspeed.cpp b/searchlib/src/tests/btree/scanspeed.cpp
index ed3368f4b4e..9a76d68c941 100644
--- a/searchlib/src/tests/btree/scanspeed.cpp
+++ b/searchlib/src/tests/btree/scanspeed.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/btree/btreeroot.h>
#include <vespa/vespalib/btree/btreebuilder.h>
diff --git a/searchlib/src/tests/common/bitvector/CMakeLists.txt b/searchlib/src/tests/common/bitvector/CMakeLists.txt
index 273f493f050..37a36bace60 100644
--- a/searchlib/src/tests/common/bitvector/CMakeLists.txt
+++ b/searchlib/src/tests/common/bitvector/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_bitvector_test-common_app TEST
SOURCES
bitvector_test.cpp
diff --git a/searchlib/src/tests/common/bitvector/bitvector_benchmark.cpp b/searchlib/src/tests/common/bitvector/bitvector_benchmark.cpp
index 0aeedc1a078..ae4bf2a21ab 100644
--- a/searchlib/src/tests/common/bitvector/bitvector_benchmark.cpp
+++ b/searchlib/src/tests/common/bitvector/bitvector_benchmark.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("bitvector_benchmark");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchlib/src/tests/common/bitvector/bitvector_test.cpp b/searchlib/src/tests/common/bitvector/bitvector_test.cpp
index f53d15d6dc4..faeebf9984a 100644
--- a/searchlib/src/tests/common/bitvector/bitvector_test.cpp
+++ b/searchlib/src/tests/common/bitvector/bitvector_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/searchlib/src/tests/common/bitvector/condensedbitvector_test.cpp b/searchlib/src/tests/common/bitvector/condensedbitvector_test.cpp
index cd2ab4eeee4..cb034e3f84e 100644
--- a/searchlib/src/tests/common/bitvector/condensedbitvector_test.cpp
+++ b/searchlib/src/tests/common/bitvector/condensedbitvector_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/common/condensedbitvectors.h>
#include <vespa/log/log.h>
diff --git a/searchlib/src/tests/common/location/CMakeLists.txt b/searchlib/src/tests/common/location/CMakeLists.txt
index ea0d96529e1..5cf6534918e 100644
--- a/searchlib/src/tests/common/location/CMakeLists.txt
+++ b/searchlib/src/tests/common/location/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_geo_location_test_app TEST
SOURCES
geo_location_test.cpp
diff --git a/searchlib/src/tests/common/location/geo_location_test.cpp b/searchlib/src/tests/common/location/geo_location_test.cpp
index d142733041e..71c71986bd6 100644
--- a/searchlib/src/tests/common/location/geo_location_test.cpp
+++ b/searchlib/src/tests/common/location/geo_location_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <stdio.h>
#include <vespa/searchlib/common/geo_location.h>
diff --git a/searchlib/src/tests/common/location_iterator/CMakeLists.txt b/searchlib/src/tests/common/location_iterator/CMakeLists.txt
index 532a765a8c3..8d68f261e4e 100644
--- a/searchlib/src/tests/common/location_iterator/CMakeLists.txt
+++ b/searchlib/src/tests/common/location_iterator/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_location_iterator_test_app TEST
SOURCES
diff --git a/searchlib/src/tests/common/location_iterator/location_iterator_test.cpp b/searchlib/src/tests/common/location_iterator/location_iterator_test.cpp
index 683735b1dc0..fff296f35ed 100644
--- a/searchlib/src/tests/common/location_iterator/location_iterator_test.cpp
+++ b/searchlib/src/tests/common/location_iterator/location_iterator_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/attribute/attributefactory.h>
#include <vespa/searchlib/attribute/attributeguard.h>
diff --git a/searchlib/src/tests/common/resultset/CMakeLists.txt b/searchlib/src/tests/common/resultset/CMakeLists.txt
index c03f20c068c..398c36c3af9 100644
--- a/searchlib/src/tests/common/resultset/CMakeLists.txt
+++ b/searchlib/src/tests/common/resultset/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_resultset_test_app TEST
SOURCES
resultset_test.cpp
diff --git a/searchlib/src/tests/common/resultset/resultset_test.cpp b/searchlib/src/tests/common/resultset/resultset_test.cpp
index d0513333ba6..b9b2ce10199 100644
--- a/searchlib/src/tests/common/resultset/resultset_test.cpp
+++ b/searchlib/src/tests/common/resultset/resultset_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for resultset.
#include <vespa/log/log.h>
diff --git a/searchlib/src/tests/common/summaryfeatures/CMakeLists.txt b/searchlib/src/tests/common/summaryfeatures/CMakeLists.txt
index 2eb5df2666d..7ad71a22c84 100644
--- a/searchlib/src/tests/common/summaryfeatures/CMakeLists.txt
+++ b/searchlib/src/tests/common/summaryfeatures/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_summaryfeatures_test_app TEST
SOURCES
summaryfeatures.cpp
diff --git a/searchlib/src/tests/common/summaryfeatures/summaryfeatures.cpp b/searchlib/src/tests/common/summaryfeatures/summaryfeatures.cpp
index 646b2b818b3..834cdbef50d 100644
--- a/searchlib/src/tests/common/summaryfeatures/summaryfeatures.cpp
+++ b/searchlib/src/tests/common/summaryfeatures/summaryfeatures.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("summaryfeatures_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchlib/src/tests/diskindex/bitvector/CMakeLists.txt b/searchlib/src/tests/diskindex/bitvector/CMakeLists.txt
index 17f7858fd60..deafee8b8e1 100644
--- a/searchlib/src/tests/diskindex/bitvector/CMakeLists.txt
+++ b/searchlib/src/tests/diskindex/bitvector/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_bitvector_test-diskindex_app TEST
SOURCES
bitvector_test.cpp
diff --git a/searchlib/src/tests/diskindex/bitvector/bitvector_test.cpp b/searchlib/src/tests/diskindex/bitvector/bitvector_test.cpp
index 83b5c05effb..c5ea12a7568 100644
--- a/searchlib/src/tests/diskindex/bitvector/bitvector_test.cpp
+++ b/searchlib/src/tests/diskindex/bitvector/bitvector_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("bitvector_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchlib/src/tests/diskindex/diskindex/CMakeLists.txt b/searchlib/src/tests/diskindex/diskindex/CMakeLists.txt
index 1ac70e27b63..9a19c1bf1d5 100644
--- a/searchlib/src/tests/diskindex/diskindex/CMakeLists.txt
+++ b/searchlib/src/tests/diskindex/diskindex/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_diskindex_test_app TEST
SOURCES
diskindex_test.cpp
diff --git a/searchlib/src/tests/diskindex/diskindex/diskindex_test.cpp b/searchlib/src/tests/diskindex/diskindex/diskindex_test.cpp
index 243c24f6ab5..6152d965e32 100644
--- a/searchlib/src/tests/diskindex/diskindex/diskindex_test.cpp
+++ b/searchlib/src/tests/diskindex/diskindex/diskindex_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/common/bitvectoriterator.h>
diff --git a/searchlib/src/tests/diskindex/fieldwriter/CMakeLists.txt b/searchlib/src/tests/diskindex/fieldwriter/CMakeLists.txt
index c920b7d3b3b..8caf75e76b0 100644
--- a/searchlib/src/tests/diskindex/fieldwriter/CMakeLists.txt
+++ b/searchlib/src/tests/diskindex/fieldwriter/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_fieldwriter_test_app TEST
SOURCES
fieldwriter_test.cpp
diff --git a/searchlib/src/tests/diskindex/fieldwriter/fieldwriter_test.cpp b/searchlib/src/tests/diskindex/fieldwriter/fieldwriter_test.cpp
index ad0e3d88ad5..1472d6d639a 100644
--- a/searchlib/src/tests/diskindex/fieldwriter/fieldwriter_test.cpp
+++ b/searchlib/src/tests/diskindex/fieldwriter/fieldwriter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/common/bitvector.h>
#include <vespa/searchlib/diskindex/fieldreader.h>
diff --git a/searchlib/src/tests/diskindex/fusion/CMakeLists.txt b/searchlib/src/tests/diskindex/fusion/CMakeLists.txt
index 696604dfef2..367f71783f9 100644
--- a/searchlib/src/tests/diskindex/fusion/CMakeLists.txt
+++ b/searchlib/src/tests/diskindex/fusion/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_fusion_test_app TEST
SOURCES
fusion_test.cpp
diff --git a/searchlib/src/tests/diskindex/fusion/fusion_test.cpp b/searchlib/src/tests/diskindex/fusion/fusion_test.cpp
index ac7bfc63a15..16657a373ff 100644
--- a/searchlib/src/tests/diskindex/fusion/fusion_test.cpp
+++ b/searchlib/src/tests/diskindex/fusion/fusion_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/common/flush_token.h>
#include <vespa/searchlib/diskindex/diskindex.h>
diff --git a/searchlib/src/tests/diskindex/fusion/fusion_test.sh b/searchlib/src/tests/diskindex/fusion/fusion_test.sh
index 7fa9e68f719..0802386cac7 100755
--- a/searchlib/src/tests/diskindex/fusion/fusion_test.sh
+++ b/searchlib/src/tests/diskindex/fusion/fusion_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
IINSPECT=../../../apps/vespa-index-inspect/vespa-index-inspect
ECHO_CMD=echo
diff --git a/searchlib/src/tests/diskindex/pagedict4/CMakeLists.txt b/searchlib/src/tests/diskindex/pagedict4/CMakeLists.txt
index eceb961bcfc..a0dca470f22 100644
--- a/searchlib/src/tests/diskindex/pagedict4/CMakeLists.txt
+++ b/searchlib/src/tests/diskindex/pagedict4/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_pagedict4_test_app TEST
SOURCES
pagedict4test.cpp
diff --git a/searchlib/src/tests/diskindex/pagedict4/pagedict4_hugeword_cornercase_test.cpp b/searchlib/src/tests/diskindex/pagedict4/pagedict4_hugeword_cornercase_test.cpp
index dd0bb9c8c40..6bda256f6d9 100644
--- a/searchlib/src/tests/diskindex/pagedict4/pagedict4_hugeword_cornercase_test.cpp
+++ b/searchlib/src/tests/diskindex/pagedict4/pagedict4_hugeword_cornercase_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/size_literals.h>
diff --git a/searchlib/src/tests/diskindex/pagedict4/pagedict4test.cpp b/searchlib/src/tests/diskindex/pagedict4/pagedict4test.cpp
index 6cc2f318f4b..05fdf4b70f9 100644
--- a/searchlib/src/tests/diskindex/pagedict4/pagedict4test.cpp
+++ b/searchlib/src/tests/diskindex/pagedict4/pagedict4test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/bitcompression/compression.h>
#include <vespa/vespalib/util/rand48.h>
diff --git a/searchlib/src/tests/docstore/chunk/CMakeLists.txt b/searchlib/src/tests/docstore/chunk/CMakeLists.txt
index 6c077d06c7a..9d5213f51e3 100644
--- a/searchlib/src/tests/docstore/chunk/CMakeLists.txt
+++ b/searchlib/src/tests/docstore/chunk/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_chunk_test_app TEST
SOURCES
chunk_test.cpp
diff --git a/searchlib/src/tests/docstore/chunk/chunk_test.cpp b/searchlib/src/tests/docstore/chunk/chunk_test.cpp
index 34c0a568eec..574e04d4900 100644
--- a/searchlib/src/tests/docstore/chunk/chunk_test.cpp
+++ b/searchlib/src/tests/docstore/chunk/chunk_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
diff --git a/searchlib/src/tests/docstore/document_store/CMakeLists.txt b/searchlib/src/tests/docstore/document_store/CMakeLists.txt
index b8092f1861e..f09c0953da9 100644
--- a/searchlib/src/tests/docstore/document_store/CMakeLists.txt
+++ b/searchlib/src/tests/docstore/document_store/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_document_store_test_app TEST
SOURCES
document_store_test.cpp
diff --git a/searchlib/src/tests/docstore/document_store/document_store_test.cpp b/searchlib/src/tests/docstore/document_store/document_store_test.cpp
index 04ec18aacc4..dec7b911f65 100644
--- a/searchlib/src/tests/docstore/document_store/document_store_test.cpp
+++ b/searchlib/src/tests/docstore/document_store/document_store_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/docstore/logdocumentstore.h>
#include <vespa/searchlib/docstore/value.h>
diff --git a/searchlib/src/tests/docstore/document_store/visitcache_test.cpp b/searchlib/src/tests/docstore/document_store/visitcache_test.cpp
index d5d95097c66..14e3c19fe33 100644
--- a/searchlib/src/tests/docstore/document_store/visitcache_test.cpp
+++ b/searchlib/src/tests/docstore/document_store/visitcache_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/docstore/visitcache.h>
diff --git a/searchlib/src/tests/docstore/document_store_visitor/CMakeLists.txt b/searchlib/src/tests/docstore/document_store_visitor/CMakeLists.txt
index 03323701d3a..6fbf55fdb04 100644
--- a/searchlib/src/tests/docstore/document_store_visitor/CMakeLists.txt
+++ b/searchlib/src/tests/docstore/document_store_visitor/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_document_store_visitor_test_app TEST
SOURCES
document_store_visitor_test.cpp
diff --git a/searchlib/src/tests/docstore/document_store_visitor/document_store_visitor_test.cpp b/searchlib/src/tests/docstore/document_store_visitor/document_store_visitor_test.cpp
index 22eae75b23b..792cc48c338 100644
--- a/searchlib/src/tests/docstore/document_store_visitor/document_store_visitor_test.cpp
+++ b/searchlib/src/tests/docstore/document_store_visitor/document_store_visitor_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/docstore/documentstore.h>
diff --git a/searchlib/src/tests/docstore/file_chunk/CMakeLists.txt b/searchlib/src/tests/docstore/file_chunk/CMakeLists.txt
index 3639eaed682..7ccefdb7702 100644
--- a/searchlib/src/tests/docstore/file_chunk/CMakeLists.txt
+++ b/searchlib/src/tests/docstore/file_chunk/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_file_chunk_test_app TEST
SOURCES
file_chunk_test.cpp
diff --git a/searchlib/src/tests/docstore/file_chunk/file_chunk_test.cpp b/searchlib/src/tests/docstore/file_chunk/file_chunk_test.cpp
index c1321920e3b..3b9f36d9f1f 100644
--- a/searchlib/src/tests/docstore/file_chunk/file_chunk_test.cpp
+++ b/searchlib/src/tests/docstore/file_chunk/file_chunk_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/common/fileheadercontext.h>
diff --git a/searchlib/src/tests/docstore/lid_info/CMakeLists.txt b/searchlib/src/tests/docstore/lid_info/CMakeLists.txt
index e0562a89b4b..ae35ab9c032 100644
--- a/searchlib/src/tests/docstore/lid_info/CMakeLists.txt
+++ b/searchlib/src/tests/docstore/lid_info/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_lid_info_test_app TEST
SOURCES
lid_info_test.cpp
diff --git a/searchlib/src/tests/docstore/lid_info/lid_info_test.cpp b/searchlib/src/tests/docstore/lid_info/lid_info_test.cpp
index a71d658eeff..0f0cabfc443 100644
--- a/searchlib/src/tests/docstore/lid_info/lid_info_test.cpp
+++ b/searchlib/src/tests/docstore/lid_info/lid_info_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/docstore/lid_info.h>
diff --git a/searchlib/src/tests/docstore/logdatastore/CMakeLists.txt b/searchlib/src/tests/docstore/logdatastore/CMakeLists.txt
index 764d3b0681e..5c8b1c33d00 100644
--- a/searchlib/src/tests/docstore/logdatastore/CMakeLists.txt
+++ b/searchlib/src/tests/docstore/logdatastore/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_logdatastore_test_app TEST
SOURCES
logdatastore_test.cpp
diff --git a/searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp b/searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp
index 174feb14fdf..242a3c31663 100644
--- a/searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp
+++ b/searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/document/repo/configbuilder.h>
diff --git a/searchlib/src/tests/docstore/logdatastore/logdatastore_test.sh b/searchlib/src/tests/docstore/logdatastore/logdatastore_test.sh
index 4aeea02efe2..c31a2ba51c6 100755
--- a/searchlib/src/tests/docstore/logdatastore/logdatastore_test.sh
+++ b/searchlib/src/tests/docstore/logdatastore/logdatastore_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
if [ -z "$SOURCE_DIRECTORY" ]; then
diff --git a/searchlib/src/tests/docstore/store_by_bucket/CMakeLists.txt b/searchlib/src/tests/docstore/store_by_bucket/CMakeLists.txt
index 04cfefd2f01..c30d99cc882 100644
--- a/searchlib/src/tests/docstore/store_by_bucket/CMakeLists.txt
+++ b/searchlib/src/tests/docstore/store_by_bucket/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_store_by_bucket_test_app TEST
SOURCES
store_by_bucket_test.cpp
diff --git a/searchlib/src/tests/docstore/store_by_bucket/store_by_bucket_test.cpp b/searchlib/src/tests/docstore/store_by_bucket/store_by_bucket_test.cpp
index 1fcb5ffcf5b..816e6933e5c 100644
--- a/searchlib/src/tests/docstore/store_by_bucket/store_by_bucket_test.cpp
+++ b/searchlib/src/tests/docstore/store_by_bucket/store_by_bucket_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
diff --git a/searchlib/src/tests/engine/proto_converter/proto_converter_test.cpp b/searchlib/src/tests/engine/proto_converter/proto_converter_test.cpp
index 9cf8c73765c..5efe3f9fe8c 100644
--- a/searchlib/src/tests/engine/proto_converter/proto_converter_test.cpp
+++ b/searchlib/src/tests/engine/proto_converter/proto_converter_test.cpp
@@ -8,6 +8,7 @@
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Winline"
+using ::search::UniqueIssues;
using Converter = ::search::engine::ProtoConverter;
using SearchRequest = ::search::engine::SearchRequest;
@@ -301,6 +302,20 @@ TEST_F(SearchReplyTest, require_that_slime_trace_is_converted) {
EXPECT_EQ(proto.slime_trace(), "slime-trace");
}
+TEST_F(SearchReplyTest, require_that_issues_are_converted_to_errors) {
+ reply.my_issues = std::make_unique<UniqueIssues>();
+ reply.my_issues->handle(vespalib::Issue("a"));
+ reply.my_issues->handle(vespalib::Issue("b"));
+ reply.my_issues->handle(vespalib::Issue("c"));
+ reply.my_issues->handle(vespalib::Issue("a"));
+ reply.my_issues->handle(vespalib::Issue("b"));
+ convert();
+ ASSERT_EQ(proto.errors_size(), 3);
+ EXPECT_EQ(proto.errors(0).message(), "a");
+ EXPECT_EQ(proto.errors(1).message(), "b");
+ EXPECT_EQ(proto.errors(2).message(), "c");
+}
+
//-----------------------------------------------------------------------------
struct DocsumRequestTest : ::testing::Test {
@@ -490,6 +505,20 @@ TEST_F(DocsumReplyTest, require_that_missing_root_slime_gives_empty_payload) {
EXPECT_EQ(proto.slime_summaries().size(), 0);
}
+TEST_F(DocsumReplyTest, require_that_issues_are_converted_to_errors) {
+ reply.my_issues = std::make_unique<UniqueIssues>();
+ reply.my_issues->handle(vespalib::Issue("a"));
+ reply.my_issues->handle(vespalib::Issue("b"));
+ reply.my_issues->handle(vespalib::Issue("c"));
+ reply.my_issues->handle(vespalib::Issue("a"));
+ reply.my_issues->handle(vespalib::Issue("b"));
+ convert();
+ ASSERT_EQ(proto.errors_size(), 3);
+ EXPECT_EQ(proto.errors(0).message(), "a");
+ EXPECT_EQ(proto.errors(1).message(), "b");
+ EXPECT_EQ(proto.errors(2).message(), "c");
+}
+
//-----------------------------------------------------------------------------
struct MonitorReplyTest : ::testing::Test {
diff --git a/searchlib/src/tests/expression/attributenode/CMakeLists.txt b/searchlib/src/tests/expression/attributenode/CMakeLists.txt
index 3006c27dd0d..bdd88e8abea 100644
--- a/searchlib/src/tests/expression/attributenode/CMakeLists.txt
+++ b/searchlib/src/tests/expression/attributenode/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_attribute_node_test_app TEST
SOURCES
attribute_node_test.cpp
diff --git a/searchlib/src/tests/expression/attributenode/attribute_node_test.cpp b/searchlib/src/tests/expression/attributenode/attribute_node_test.cpp
index ab45ca0bdbe..afd2c2a2fac 100644
--- a/searchlib/src/tests/expression/attributenode/attribute_node_test.cpp
+++ b/searchlib/src/tests/expression/attributenode/attribute_node_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcommon/common/undefinedvalues.h>
#include <vespa/searchlib/attribute/attributefactory.h>
diff --git a/searchlib/src/tests/features/CMakeLists.txt b/searchlib/src/tests/features/CMakeLists.txt
index 81a7959cc52..1b61ccd014d 100644
--- a/searchlib/src/tests/features/CMakeLists.txt
+++ b/searchlib/src/tests/features/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_prod_features_test_app TEST
SOURCES
prod_features.cpp
diff --git a/searchlib/src/tests/features/benchmark/fieldmatch/plot.rb b/searchlib/src/tests/features/benchmark/fieldmatch/plot.rb
index b0a1398e3b2..f6b65ead78d 100644
--- a/searchlib/src/tests/features/benchmark/fieldmatch/plot.rb
+++ b/searchlib/src/tests/features/benchmark/fieldmatch/plot.rb
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
require '../plotlib'
if ARGV.size == 0
diff --git a/searchlib/src/tests/features/benchmark/fieldmatch/run.rb b/searchlib/src/tests/features/benchmark/fieldmatch/run.rb
index cdfe10e5a56..300cb1a17cc 100644
--- a/searchlib/src/tests/features/benchmark/fieldmatch/run.rb
+++ b/searchlib/src/tests/features/benchmark/fieldmatch/run.rb
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
if ARGV.size == 0
puts "must specify folder"
exit
diff --git a/searchlib/src/tests/features/benchmark/plotlib.rb b/searchlib/src/tests/features/benchmark/plotlib.rb
index 0d316fea5e6..d163f6c5412 100644
--- a/searchlib/src/tests/features/benchmark/plotlib.rb
+++ b/searchlib/src/tests/features/benchmark/plotlib.rb
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
def plot_graph(dat, titles, png, title, xlabel, ylabel, folder)
plot_cmd = "";
plot_cmd += "set terminal png\n"
diff --git a/searchlib/src/tests/features/benchmark/rankingexpression/plot.rb b/searchlib/src/tests/features/benchmark/rankingexpression/plot.rb
index 399dd13df5d..5cdef1fe0f8 100644
--- a/searchlib/src/tests/features/benchmark/rankingexpression/plot.rb
+++ b/searchlib/src/tests/features/benchmark/rankingexpression/plot.rb
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
require '../plotlib'
folder = ARGV[0]
diff --git a/searchlib/src/tests/features/benchmark/rankingexpression/run.rb b/searchlib/src/tests/features/benchmark/rankingexpression/run.rb
index 76158d4c472..0621b912b86 100644
--- a/searchlib/src/tests/features/benchmark/rankingexpression/run.rb
+++ b/searchlib/src/tests/features/benchmark/rankingexpression/run.rb
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
if ARGV.size == 0
puts "must specify folder"
exit
diff --git a/searchlib/src/tests/features/beta/CMakeLists.txt b/searchlib/src/tests/features/beta/CMakeLists.txt
index 0af23d3f8f4..11b34d3dbdd 100644
--- a/searchlib/src/tests/features/beta/CMakeLists.txt
+++ b/searchlib/src/tests/features/beta/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_beta_features_test_app TEST
SOURCES
beta_features.cpp
diff --git a/searchlib/src/tests/features/beta/beta_features.cpp b/searchlib/src/tests/features/beta/beta_features.cpp
index 7ff8adc2a33..f3a134f39e3 100644
--- a/searchlib/src/tests/features/beta/beta_features.cpp
+++ b/searchlib/src/tests/features/beta/beta_features.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/attribute/attributeguard.h>
#include <vespa/searchlib/attribute/attributemanager.h>
diff --git a/searchlib/src/tests/features/constant/CMakeLists.txt b/searchlib/src/tests/features/constant/CMakeLists.txt
index 9b86c09d33a..8a62ca88729 100644
--- a/searchlib/src/tests/features/constant/CMakeLists.txt
+++ b/searchlib/src/tests/features/constant/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_constant_test_app TEST
SOURCES
constant_test.cpp
diff --git a/searchlib/src/tests/features/constant/constant_test.cpp b/searchlib/src/tests/features/constant/constant_test.cpp
index 1ef985f9e36..d5effe521c4 100644
--- a/searchlib/src/tests/features/constant/constant_test.cpp
+++ b/searchlib/src/tests/features/constant/constant_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <iostream>
diff --git a/searchlib/src/tests/features/element_completeness/CMakeLists.txt b/searchlib/src/tests/features/element_completeness/CMakeLists.txt
index 13d393ae81a..fa0a3c75779 100644
--- a/searchlib/src/tests/features/element_completeness/CMakeLists.txt
+++ b/searchlib/src/tests/features/element_completeness/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_element_completeness_test_app TEST
SOURCES
element_completeness_test.cpp
diff --git a/searchlib/src/tests/features/element_completeness/element_completeness_test.cpp b/searchlib/src/tests/features/element_completeness/element_completeness_test.cpp
index 654f18ef26f..d9ae5d9bde3 100644
--- a/searchlib/src/tests/features/element_completeness/element_completeness_test.cpp
+++ b/searchlib/src/tests/features/element_completeness/element_completeness_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/features/setup.h>
#include <vespa/searchlib/fef/test/indexenvironment.h>
diff --git a/searchlib/src/tests/features/element_similarity_feature/CMakeLists.txt b/searchlib/src/tests/features/element_similarity_feature/CMakeLists.txt
index 2c388908d07..0b52701e631 100644
--- a/searchlib/src/tests/features/element_similarity_feature/CMakeLists.txt
+++ b/searchlib/src/tests/features/element_similarity_feature/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_element_similarity_feature_test_app TEST
SOURCES
element_similarity_feature_test.cpp
diff --git a/searchlib/src/tests/features/element_similarity_feature/element_similarity_feature_test.cpp b/searchlib/src/tests/features/element_similarity_feature/element_similarity_feature_test.cpp
index f647738181d..dd1dc5b3689 100644
--- a/searchlib/src/tests/features/element_similarity_feature/element_similarity_feature_test.cpp
+++ b/searchlib/src/tests/features/element_similarity_feature/element_similarity_feature_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/features/setup.h>
#include <vespa/searchlib/fef/test/indexenvironment.h>
diff --git a/searchlib/src/tests/features/euclidean_distance/CMakeLists.txt b/searchlib/src/tests/features/euclidean_distance/CMakeLists.txt
index e72439c6f9b..21a05f495f9 100644
--- a/searchlib/src/tests/features/euclidean_distance/CMakeLists.txt
+++ b/searchlib/src/tests/features/euclidean_distance/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_euclidean_distance_test_app TEST
SOURCES
euclidean_distance_test.cpp
diff --git a/searchlib/src/tests/features/euclidean_distance/euclidean_distance_test.cpp b/searchlib/src/tests/features/euclidean_distance/euclidean_distance_test.cpp
index 5ecd61976a3..51609ef7f67 100644
--- a/searchlib/src/tests/features/euclidean_distance/euclidean_distance_test.cpp
+++ b/searchlib/src/tests/features/euclidean_distance/euclidean_distance_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/attribute/attributefactory.h>
diff --git a/searchlib/src/tests/features/featurebenchmark.cpp b/searchlib/src/tests/features/featurebenchmark.cpp
index 72f693e72f4..f4fc830335d 100644
--- a/searchlib/src/tests/features/featurebenchmark.cpp
+++ b/searchlib/src/tests/features/featurebenchmark.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/attribute/attributefactory.h>
#include <vespa/searchlib/attribute/attributevector.h>
diff --git a/searchlib/src/tests/features/imported_dot_product/CMakeLists.txt b/searchlib/src/tests/features/imported_dot_product/CMakeLists.txt
index 602997a0fd9..d414c8efcdf 100644
--- a/searchlib/src/tests/features/imported_dot_product/CMakeLists.txt
+++ b/searchlib/src/tests/features/imported_dot_product/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_imported_dot_product_test_app TEST
SOURCES
imported_dot_product_test.cpp
diff --git a/searchlib/src/tests/features/imported_dot_product/imported_dot_product_test.cpp b/searchlib/src/tests/features/imported_dot_product/imported_dot_product_test.cpp
index 3c9cf209484..72613cd0fd4 100644
--- a/searchlib/src/tests/features/imported_dot_product/imported_dot_product_test.cpp
+++ b/searchlib/src/tests/features/imported_dot_product/imported_dot_product_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/attribute/attribute_read_guard.h>
#include <vespa/searchlib/features/dotproductfeature.h>
diff --git a/searchlib/src/tests/features/internal_max_reduce_prod_join_feature/CMakeLists.txt b/searchlib/src/tests/features/internal_max_reduce_prod_join_feature/CMakeLists.txt
index 65b8056cb54..23420080ce3 100644
--- a/searchlib/src/tests/features/internal_max_reduce_prod_join_feature/CMakeLists.txt
+++ b/searchlib/src/tests/features/internal_max_reduce_prod_join_feature/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_internal_max_reduce_prod_join_feature_test_app TEST
SOURCES
internal_max_reduce_prod_join_feature_test.cpp
diff --git a/searchlib/src/tests/features/internal_max_reduce_prod_join_feature/internal_max_reduce_prod_join_feature_test.cpp b/searchlib/src/tests/features/internal_max_reduce_prod_join_feature/internal_max_reduce_prod_join_feature_test.cpp
index 72e2240a12a..fba88644dcb 100644
--- a/searchlib/src/tests/features/internal_max_reduce_prod_join_feature/internal_max_reduce_prod_join_feature_test.cpp
+++ b/searchlib/src/tests/features/internal_max_reduce_prod_join_feature/internal_max_reduce_prod_join_feature_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
diff --git a/searchlib/src/tests/features/item_raw_score/CMakeLists.txt b/searchlib/src/tests/features/item_raw_score/CMakeLists.txt
index ac1353bdb0b..4906a97a856 100644
--- a/searchlib/src/tests/features/item_raw_score/CMakeLists.txt
+++ b/searchlib/src/tests/features/item_raw_score/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_item_raw_score_test_app TEST
SOURCES
item_raw_score_test.cpp
diff --git a/searchlib/src/tests/features/item_raw_score/item_raw_score_test.cpp b/searchlib/src/tests/features/item_raw_score/item_raw_score_test.cpp
index 2a96862b3dc..67924d2019a 100644
--- a/searchlib/src/tests/features/item_raw_score/item_raw_score_test.cpp
+++ b/searchlib/src/tests/features/item_raw_score/item_raw_score_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/features/setup.h>
diff --git a/searchlib/src/tests/features/max_reduce_prod_join_replacer/CMakeLists.txt b/searchlib/src/tests/features/max_reduce_prod_join_replacer/CMakeLists.txt
index 5a1ac74aed0..e4f14a629ed 100644
--- a/searchlib/src/tests/features/max_reduce_prod_join_replacer/CMakeLists.txt
+++ b/searchlib/src/tests/features/max_reduce_prod_join_replacer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_max_reduce_prod_join_replacer_test_app TEST
SOURCES
max_reduce_prod_join_replacer_test.cpp
diff --git a/searchlib/src/tests/features/max_reduce_prod_join_replacer/max_reduce_prod_join_replacer_test.cpp b/searchlib/src/tests/features/max_reduce_prod_join_replacer/max_reduce_prod_join_replacer_test.cpp
index 1d1c03ab56d..d528a83a06d 100644
--- a/searchlib/src/tests/features/max_reduce_prod_join_replacer/max_reduce_prod_join_replacer_test.cpp
+++ b/searchlib/src/tests/features/max_reduce_prod_join_replacer/max_reduce_prod_join_replacer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
diff --git a/searchlib/src/tests/features/native_dot_product/CMakeLists.txt b/searchlib/src/tests/features/native_dot_product/CMakeLists.txt
index 0ca6cdb41d8..fcc6af98564 100644
--- a/searchlib/src/tests/features/native_dot_product/CMakeLists.txt
+++ b/searchlib/src/tests/features/native_dot_product/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_native_dot_product_test_app TEST
SOURCES
native_dot_product_test.cpp
diff --git a/searchlib/src/tests/features/native_dot_product/native_dot_product_test.cpp b/searchlib/src/tests/features/native_dot_product/native_dot_product_test.cpp
index 0cf13443142..4d9318311f3 100644
--- a/searchlib/src/tests/features/native_dot_product/native_dot_product_test.cpp
+++ b/searchlib/src/tests/features/native_dot_product/native_dot_product_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/features/setup.h>
#include <vespa/searchlib/fef/test/indexenvironment.h>
diff --git a/searchlib/src/tests/features/nns_closeness/CMakeLists.txt b/searchlib/src/tests/features/nns_closeness/CMakeLists.txt
index 368c75813d0..9a8c2d7c99f 100644
--- a/searchlib/src/tests/features/nns_closeness/CMakeLists.txt
+++ b/searchlib/src/tests/features/nns_closeness/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_nns_closeness_test_app TEST
SOURCES
diff --git a/searchlib/src/tests/features/nns_closeness/nns_closeness_test.cpp b/searchlib/src/tests/features/nns_closeness/nns_closeness_test.cpp
index d50b1cfc88f..713abeada6a 100644
--- a/searchlib/src/tests/features/nns_closeness/nns_closeness_test.cpp
+++ b/searchlib/src/tests/features/nns_closeness/nns_closeness_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/features/setup.h>
diff --git a/searchlib/src/tests/features/nns_distance/CMakeLists.txt b/searchlib/src/tests/features/nns_distance/CMakeLists.txt
index 5b4c8f86b44..8dbee37a194 100644
--- a/searchlib/src/tests/features/nns_distance/CMakeLists.txt
+++ b/searchlib/src/tests/features/nns_distance/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_nns_distance_test_app TEST
SOURCES
diff --git a/searchlib/src/tests/features/nns_distance/nns_distance_test.cpp b/searchlib/src/tests/features/nns_distance/nns_distance_test.cpp
index a9a3f4b2ddd..c3973a6493c 100644
--- a/searchlib/src/tests/features/nns_distance/nns_distance_test.cpp
+++ b/searchlib/src/tests/features/nns_distance/nns_distance_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/features/setup.h>
diff --git a/searchlib/src/tests/features/onnx_feature/CMakeLists.txt b/searchlib/src/tests/features/onnx_feature/CMakeLists.txt
index 8657d8987da..a58d7cfa01b 100644
--- a/searchlib/src/tests/features/onnx_feature/CMakeLists.txt
+++ b/searchlib/src/tests/features/onnx_feature/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_onnx_feature_test_app TEST
SOURCES
onnx_feature_test.cpp
diff --git a/searchlib/src/tests/features/onnx_feature/fragile.onnx b/searchlib/src/tests/features/onnx_feature/fragile.onnx
index 2a05500e95b..dc650154f83 100644
--- a/searchlib/src/tests/features/onnx_feature/fragile.onnx
+++ b/searchlib/src/tests/features/onnx_feature/fragile.onnx
@@ -1,5 +1,5 @@

-fragile.py:b
+fragile.py:]

in1
in2out"AddfragileZ
@@ -9,7 +9,8 @@ fragile.py:b
Z
in2

-batchb
-out
- 
-batchB \ No newline at end of file
+batchb
+out
+
+
+B \ No newline at end of file
diff --git a/searchlib/src/tests/features/onnx_feature/fragile.py b/searchlib/src/tests/features/onnx_feature/fragile.py
index e4eaf168e14..28fa68e2825 100755
--- a/searchlib/src/tests/features/onnx_feature/fragile.py
+++ b/searchlib/src/tests/features/onnx_feature/fragile.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
@@ -6,7 +6,7 @@ from onnx import helper, TensorProto
INPUT1 = helper.make_tensor_value_info('in1', TensorProto.FLOAT, [2])
INPUT2 = helper.make_tensor_value_info('in2', TensorProto.FLOAT, ['batch'])
-OUTPUT = helper.make_tensor_value_info('out', TensorProto.FLOAT, ['batch'])
+OUTPUT = helper.make_tensor_value_info('out', TensorProto.FLOAT, [2])
nodes = [
helper.make_node(
diff --git a/searchlib/src/tests/features/onnx_feature/onnx_feature_test.cpp b/searchlib/src/tests/features/onnx_feature/onnx_feature_test.cpp
index c07ebc48604..f2fd9ad52d6 100644
--- a/searchlib/src/tests/features/onnx_feature/onnx_feature_test.cpp
+++ b/searchlib/src/tests/features/onnx_feature/onnx_feature_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/stllike/string.h>
#include <vespa/vespalib/util/stringfmt.h>
@@ -147,20 +147,22 @@ TEST_F(OnnxFeatureTest, input_features_and_output_names_can_be_specified) {
TEST_F(OnnxFeatureTest, fragile_model_can_be_evaluated) {
add_expr("in1", "tensor<float>(x[2]):[docid,5]");
add_expr("in2", "tensor<float>(x[2]):[docid,10]");
- add_onnx(OnnxModel("fragile", fragile_model));
+ add_onnx(OnnxModel("fragile", fragile_model).dry_run_on_setup(true));
EXPECT_TRUE(try_compile(onnx_feature("fragile")));
EXPECT_EQ(get(1), TensorSpec::from_expr("tensor<float>(d0[2]):[2,15]"));
EXPECT_EQ(get(3), TensorSpec::from_expr("tensor<float>(d0[2]):[6,15]"));
}
-TEST_F(OnnxFeatureTest, runtime_broken_model_can_be_set_up_without_dry_run) {
+TEST_F(OnnxFeatureTest, broken_model_evaluates_to_all_zeros) {
add_expr("in1", "tensor<float>(x[2]):[docid,5]");
add_expr("in2", "tensor<float>(x[3]):[docid,10,31515]");
add_onnx(OnnxModel("fragile", fragile_model).dry_run_on_setup(false));
EXPECT_TRUE(try_compile(onnx_feature("fragile")));
+ EXPECT_EQ(get(1), TensorSpec::from_expr("tensor<float>(d0[2]):[0,0]"));
+ EXPECT_EQ(get(3), TensorSpec::from_expr("tensor<float>(d0[2]):[0,0]"));
}
-TEST_F(OnnxFeatureTest, runtime_broken_model_fails_with_dry_run) {
+TEST_F(OnnxFeatureTest, broken_model_fails_with_dry_run) {
add_expr("in1", "tensor<float>(x[2]):[docid,5]");
add_expr("in2", "tensor<float>(x[3]):[docid,10,31515]");
add_onnx(OnnxModel("fragile", fragile_model).dry_run_on_setup(true));
diff --git a/searchlib/src/tests/features/onnx_feature/strange_names.py b/searchlib/src/tests/features/onnx_feature/strange_names.py
index 2e3d3fe4dd1..5feeccf1325 100755
--- a/searchlib/src/tests/features/onnx_feature/strange_names.py
+++ b/searchlib/src/tests/features/onnx_feature/strange_names.py
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import onnx
from onnx import helper, TensorProto
diff --git a/searchlib/src/tests/features/prod_features.cpp b/searchlib/src/tests/features/prod_features.cpp
index 08322b5c729..1ba069818ba 100644
--- a/searchlib/src/tests/features/prod_features.cpp
+++ b/searchlib/src/tests/features/prod_features.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "prod_features.h"
#include <vespa/searchlib/attribute/attributeguard.h>
diff --git a/searchlib/src/tests/features/prod_features.h b/searchlib/src/tests/features/prod_features.h
index 56601483a09..58e6b4953cc 100644
--- a/searchlib/src/tests/features/prod_features.h
+++ b/searchlib/src/tests/features/prod_features.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/tests/features/prod_features_attributematch.cpp b/searchlib/src/tests/features/prod_features_attributematch.cpp
index 3f6031bedce..1db6212abef 100644
--- a/searchlib/src/tests/features/prod_features_attributematch.cpp
+++ b/searchlib/src/tests/features/prod_features_attributematch.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "prod_features.h"
#include <vespa/searchlib/features/attributematchfeature.h>
diff --git a/searchlib/src/tests/features/prod_features_fieldmatch.cpp b/searchlib/src/tests/features/prod_features_fieldmatch.cpp
index 53ddff9ad45..c6ff6232c23 100644
--- a/searchlib/src/tests/features/prod_features_fieldmatch.cpp
+++ b/searchlib/src/tests/features/prod_features_fieldmatch.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "prod_features.h"
#include <vespa/searchlib/features/fieldmatchfeature.h>
diff --git a/searchlib/src/tests/features/prod_features_fieldtermmatch.cpp b/searchlib/src/tests/features/prod_features_fieldtermmatch.cpp
index 96c9b9bac70..be4711e1fec 100644
--- a/searchlib/src/tests/features/prod_features_fieldtermmatch.cpp
+++ b/searchlib/src/tests/features/prod_features_fieldtermmatch.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "prod_features.h"
#include <vespa/searchlib/features/fieldtermmatchfeature.h>
diff --git a/searchlib/src/tests/features/prod_features_framework.cpp b/searchlib/src/tests/features/prod_features_framework.cpp
index bd18c58f145..1a0c5014edb 100644
--- a/searchlib/src/tests/features/prod_features_framework.cpp
+++ b/searchlib/src/tests/features/prod_features_framework.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP(".prod_features_framework");
diff --git a/searchlib/src/tests/features/prod_features_test.sh b/searchlib/src/tests/features/prod_features_test.sh
index 3f67c46fb6d..d3b5d8ab574 100755
--- a/searchlib/src/tests/features/prod_features_test.sh
+++ b/searchlib/src/tests/features/prod_features_test.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
VESPA_LOG_TARGET=file:vlog2.txt $VALGRIND ./searchlib_prod_features_test_app
rm -rf *.dat
diff --git a/searchlib/src/tests/features/ranking_expression/CMakeLists.txt b/searchlib/src/tests/features/ranking_expression/CMakeLists.txt
index 60b8303a820..181755010aa 100644
--- a/searchlib/src/tests/features/ranking_expression/CMakeLists.txt
+++ b/searchlib/src/tests/features/ranking_expression/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_ranking_expression_test_app TEST
SOURCES
ranking_expression_test.cpp
diff --git a/searchlib/src/tests/features/ranking_expression/ranking_expression_test.cpp b/searchlib/src/tests/features/ranking_expression/ranking_expression_test.cpp
index 3bc70ee7798..b65f7d08e58 100644
--- a/searchlib/src/tests/features/ranking_expression/ranking_expression_test.cpp
+++ b/searchlib/src/tests/features/ranking_expression/ranking_expression_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/eval/eval/value_type.h>
diff --git a/searchlib/src/tests/features/raw_score/CMakeLists.txt b/searchlib/src/tests/features/raw_score/CMakeLists.txt
index 89d188be19f..0adf84b9cc0 100644
--- a/searchlib/src/tests/features/raw_score/CMakeLists.txt
+++ b/searchlib/src/tests/features/raw_score/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_raw_score_test_app TEST
SOURCES
raw_score_test.cpp
diff --git a/searchlib/src/tests/features/raw_score/raw_score_test.cpp b/searchlib/src/tests/features/raw_score/raw_score_test.cpp
index 4aad6c6896e..b3ad2f3c803 100644
--- a/searchlib/src/tests/features/raw_score/raw_score_test.cpp
+++ b/searchlib/src/tests/features/raw_score/raw_score_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/features/setup.h>
#include <vespa/searchlib/fef/test/indexenvironment.h>
diff --git a/searchlib/src/tests/features/subqueries/CMakeLists.txt b/searchlib/src/tests/features/subqueries/CMakeLists.txt
index 3bd9ef64313..9326efaba65 100644
--- a/searchlib/src/tests/features/subqueries/CMakeLists.txt
+++ b/searchlib/src/tests/features/subqueries/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_subqueries_test_app TEST
SOURCES
subqueries_test.cpp
diff --git a/searchlib/src/tests/features/subqueries/subqueries_test.cpp b/searchlib/src/tests/features/subqueries/subqueries_test.cpp
index d275cf134c6..be7f6bb5e9a 100644
--- a/searchlib/src/tests/features/subqueries/subqueries_test.cpp
+++ b/searchlib/src/tests/features/subqueries/subqueries_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/features/setup.h>
#include <vespa/searchlib/fef/test/indexenvironment.h>
diff --git a/searchlib/src/tests/features/tensor/CMakeLists.txt b/searchlib/src/tests/features/tensor/CMakeLists.txt
index 1c1f6f07cb1..2772d468010 100644
--- a/searchlib/src/tests/features/tensor/CMakeLists.txt
+++ b/searchlib/src/tests/features/tensor/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_tensor_test_app TEST
SOURCES
tensor_test.cpp
diff --git a/searchlib/src/tests/features/tensor/tensor_test.cpp b/searchlib/src/tests/features/tensor/tensor_test.cpp
index 5d7698822eb..1f9db526ec4 100644
--- a/searchlib/src/tests/features/tensor/tensor_test.cpp
+++ b/searchlib/src/tests/features/tensor/tensor_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/attribute/attributefactory.h>
diff --git a/searchlib/src/tests/features/tensor_from_labels/CMakeLists.txt b/searchlib/src/tests/features/tensor_from_labels/CMakeLists.txt
index 7c3d8ec241f..8561ebcdb29 100644
--- a/searchlib/src/tests/features/tensor_from_labels/CMakeLists.txt
+++ b/searchlib/src/tests/features/tensor_from_labels/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_tensor_from_labels_test_app TEST
SOURCES
tensor_from_labels_test.cpp
diff --git a/searchlib/src/tests/features/tensor_from_labels/tensor_from_labels_test.cpp b/searchlib/src/tests/features/tensor_from_labels/tensor_from_labels_test.cpp
index 8d202100699..8ac73253625 100644
--- a/searchlib/src/tests/features/tensor_from_labels/tensor_from_labels_test.cpp
+++ b/searchlib/src/tests/features/tensor_from_labels/tensor_from_labels_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/attribute/attributefactory.h>
diff --git a/searchlib/src/tests/features/tensor_from_weighted_set/CMakeLists.txt b/searchlib/src/tests/features/tensor_from_weighted_set/CMakeLists.txt
index af45788751d..4cd341f2ddd 100644
--- a/searchlib/src/tests/features/tensor_from_weighted_set/CMakeLists.txt
+++ b/searchlib/src/tests/features/tensor_from_weighted_set/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_tensor_from_weighted_set_test_app TEST
SOURCES
tensor_from_weighted_set_test.cpp
diff --git a/searchlib/src/tests/features/tensor_from_weighted_set/tensor_from_weighted_set_test.cpp b/searchlib/src/tests/features/tensor_from_weighted_set/tensor_from_weighted_set_test.cpp
index c339d8dae63..4d213434073 100644
--- a/searchlib/src/tests/features/tensor_from_weighted_set/tensor_from_weighted_set_test.cpp
+++ b/searchlib/src/tests/features/tensor_from_weighted_set/tensor_from_weighted_set_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/attribute/attributefactory.h>
diff --git a/searchlib/src/tests/features/text_similarity_feature/CMakeLists.txt b/searchlib/src/tests/features/text_similarity_feature/CMakeLists.txt
index 72eacae0d07..dff4eb414d1 100644
--- a/searchlib/src/tests/features/text_similarity_feature/CMakeLists.txt
+++ b/searchlib/src/tests/features/text_similarity_feature/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_text_similarity_feature_test_app TEST
SOURCES
text_similarity_feature_test.cpp
diff --git a/searchlib/src/tests/features/text_similarity_feature/text_similarity_feature_test.cpp b/searchlib/src/tests/features/text_similarity_feature/text_similarity_feature_test.cpp
index 670f065d3c0..16b481ced68 100644
--- a/searchlib/src/tests/features/text_similarity_feature/text_similarity_feature_test.cpp
+++ b/searchlib/src/tests/features/text_similarity_feature/text_similarity_feature_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/features/setup.h>
#include <vespa/searchlib/fef/test/indexenvironment.h>
diff --git a/searchlib/src/tests/features/util/CMakeLists.txt b/searchlib/src/tests/features/util/CMakeLists.txt
index 843c983d742..589cf94f0f4 100644
--- a/searchlib/src/tests/features/util/CMakeLists.txt
+++ b/searchlib/src/tests/features/util/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_util_test_app TEST
SOURCES
util_test.cpp
diff --git a/searchlib/src/tests/features/util/util_test.cpp b/searchlib/src/tests/features/util/util_test.cpp
index 208c290cff3..52fe77c231b 100644
--- a/searchlib/src/tests/features/util/util_test.cpp
+++ b/searchlib/src/tests/features/util/util_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/features/utils.h>
#include <vespa/searchlib/fef/test/indexenvironment.h>
diff --git a/searchlib/src/tests/fef/CMakeLists.txt b/searchlib/src/tests/fef/CMakeLists.txt
index 003dee52a06..8b6f9d11ed2 100644
--- a/searchlib/src/tests/fef/CMakeLists.txt
+++ b/searchlib/src/tests/fef/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_fef_test_app TEST
SOURCES
fef_test.cpp
diff --git a/searchlib/src/tests/fef/attributecontent/CMakeLists.txt b/searchlib/src/tests/fef/attributecontent/CMakeLists.txt
index af963c5f2e0..1fda9b5800e 100644
--- a/searchlib/src/tests/fef/attributecontent/CMakeLists.txt
+++ b/searchlib/src/tests/fef/attributecontent/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_attributecontent_test_app TEST
SOURCES
attributecontent_test.cpp
diff --git a/searchlib/src/tests/fef/attributecontent/attributecontent_test.cpp b/searchlib/src/tests/fef/attributecontent/attributecontent_test.cpp
index c4884189859..f62bfa87d45 100644
--- a/searchlib/src/tests/fef/attributecontent/attributecontent_test.cpp
+++ b/searchlib/src/tests/fef/attributecontent/attributecontent_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("attributecontent_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchlib/src/tests/fef/featurenamebuilder/CMakeLists.txt b/searchlib/src/tests/fef/featurenamebuilder/CMakeLists.txt
index cbb30ccde06..a2ddea2f611 100644
--- a/searchlib/src/tests/fef/featurenamebuilder/CMakeLists.txt
+++ b/searchlib/src/tests/fef/featurenamebuilder/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_featurenamebuilder_test_app TEST
SOURCES
featurenamebuilder_test.cpp
diff --git a/searchlib/src/tests/fef/featurenamebuilder/featurenamebuilder_test.cpp b/searchlib/src/tests/fef/featurenamebuilder/featurenamebuilder_test.cpp
index 5b61bedfc26..f52881fa327 100644
--- a/searchlib/src/tests/fef/featurenamebuilder/featurenamebuilder_test.cpp
+++ b/searchlib/src/tests/fef/featurenamebuilder/featurenamebuilder_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("featurenamebuilder_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchlib/src/tests/fef/featurenameparser/CMakeLists.txt b/searchlib/src/tests/fef/featurenameparser/CMakeLists.txt
index 5ba14effc6c..2ef836aadb4 100644
--- a/searchlib/src/tests/fef/featurenameparser/CMakeLists.txt
+++ b/searchlib/src/tests/fef/featurenameparser/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_featurenameparser_test_app TEST
SOURCES
featurenameparser_test.cpp
diff --git a/searchlib/src/tests/fef/featurenameparser/featurenameparser_test.cpp b/searchlib/src/tests/fef/featurenameparser/featurenameparser_test.cpp
index 47405f11028..33491aa6fff 100644
--- a/searchlib/src/tests/fef/featurenameparser/featurenameparser_test.cpp
+++ b/searchlib/src/tests/fef/featurenameparser/featurenameparser_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("featurenameparser_test");
#include <vespa/vespalib/testkit/test_kit.h>
diff --git a/searchlib/src/tests/fef/featureoverride/CMakeLists.txt b/searchlib/src/tests/fef/featureoverride/CMakeLists.txt
index 6933f4dbf9f..2314f8ed03a 100644
--- a/searchlib/src/tests/fef/featureoverride/CMakeLists.txt
+++ b/searchlib/src/tests/fef/featureoverride/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_featureoverride_test_app TEST
SOURCES
featureoverride.cpp
diff --git a/searchlib/src/tests/fef/featureoverride/featureoverride.cpp b/searchlib/src/tests/fef/featureoverride/featureoverride.cpp
index e55bd7081a1..d580e361bff 100644
--- a/searchlib/src/tests/fef/featureoverride/featureoverride.cpp
+++ b/searchlib/src/tests/fef/featureoverride/featureoverride.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("featureoverride_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchlib/src/tests/fef/fef_test.cpp b/searchlib/src/tests/fef/fef_test.cpp
index 50f8a770618..59944713f23 100644
--- a/searchlib/src/tests/fef/fef_test.cpp
+++ b/searchlib/src/tests/fef/fef_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/fef/fef.h>
#include <vespa/searchlib/fef/objectstore.h>
diff --git a/searchlib/src/tests/fef/object_passing/CMakeLists.txt b/searchlib/src/tests/fef/object_passing/CMakeLists.txt
index d44add7c88a..de2ee5ceec0 100644
--- a/searchlib/src/tests/fef/object_passing/CMakeLists.txt
+++ b/searchlib/src/tests/fef/object_passing/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_object_passing_test_app TEST
SOURCES
object_passing_test.cpp
diff --git a/searchlib/src/tests/fef/object_passing/object_passing_test.cpp b/searchlib/src/tests/fef/object_passing/object_passing_test.cpp
index 793b2d40ed3..46aaf7369e3 100644
--- a/searchlib/src/tests/fef/object_passing/object_passing_test.cpp
+++ b/searchlib/src/tests/fef/object_passing/object_passing_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/stllike/string.h>
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchlib/src/tests/fef/parameter/CMakeLists.txt b/searchlib/src/tests/fef/parameter/CMakeLists.txt
index fc74aacda1a..5b4d5ac0a9c 100644
--- a/searchlib/src/tests/fef/parameter/CMakeLists.txt
+++ b/searchlib/src/tests/fef/parameter/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_parameter_test_app TEST
SOURCES
parameter_test.cpp
diff --git a/searchlib/src/tests/fef/parameter/parameter_test.cpp b/searchlib/src/tests/fef/parameter/parameter_test.cpp
index 2cff534d289..6bce9fec8ff 100644
--- a/searchlib/src/tests/fef/parameter/parameter_test.cpp
+++ b/searchlib/src/tests/fef/parameter/parameter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("parameter_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchlib/src/tests/fef/phrasesplitter/CMakeLists.txt b/searchlib/src/tests/fef/phrasesplitter/CMakeLists.txt
index da419b93e2a..c3c33b5935d 100644
--- a/searchlib/src/tests/fef/phrasesplitter/CMakeLists.txt
+++ b/searchlib/src/tests/fef/phrasesplitter/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_phrasesplitter_test_app TEST
SOURCES
phrasesplitter_test.cpp
diff --git a/searchlib/src/tests/fef/phrasesplitter/benchmark.cpp b/searchlib/src/tests/fef/phrasesplitter/benchmark.cpp
index f264a3ab949..b2a5cf0f4c0 100644
--- a/searchlib/src/tests/fef/phrasesplitter/benchmark.cpp
+++ b/searchlib/src/tests/fef/phrasesplitter/benchmark.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/fef/matchdatalayout.h>
#include <vespa/searchlib/fef/phrasesplitter.h>
diff --git a/searchlib/src/tests/fef/phrasesplitter/phrasesplitter_test.cpp b/searchlib/src/tests/fef/phrasesplitter/phrasesplitter_test.cpp
index 73fe22c2799..d7b072c8a69 100644
--- a/searchlib/src/tests/fef/phrasesplitter/phrasesplitter_test.cpp
+++ b/searchlib/src/tests/fef/phrasesplitter/phrasesplitter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("phrasesplitter_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchlib/src/tests/fef/properties/CMakeLists.txt b/searchlib/src/tests/fef/properties/CMakeLists.txt
index eced79caec5..1a7d881fb33 100644
--- a/searchlib/src/tests/fef/properties/CMakeLists.txt
+++ b/searchlib/src/tests/fef/properties/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_properties_test_app TEST
SOURCES
properties_test.cpp
diff --git a/searchlib/src/tests/fef/properties/properties_test.cpp b/searchlib/src/tests/fef/properties/properties_test.cpp
index 7b919e4aaa6..34af88b4fb8 100644
--- a/searchlib/src/tests/fef/properties/properties_test.cpp
+++ b/searchlib/src/tests/fef/properties/properties_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/fef/indexproperties.h>
#include <vespa/searchlib/fef/properties.h>
diff --git a/searchlib/src/tests/fef/rank_program/CMakeLists.txt b/searchlib/src/tests/fef/rank_program/CMakeLists.txt
index fa521dd10ed..0f184b9cf55 100644
--- a/searchlib/src/tests/fef/rank_program/CMakeLists.txt
+++ b/searchlib/src/tests/fef/rank_program/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_rank_program_test_app TEST
SOURCES
rank_program_test.cpp
diff --git a/searchlib/src/tests/fef/rank_program/rank_program_test.cpp b/searchlib/src/tests/fef/rank_program/rank_program_test.cpp
index d1b0f8112f3..11f4a01888b 100644
--- a/searchlib/src/tests/fef/rank_program/rank_program_test.cpp
+++ b/searchlib/src/tests/fef/rank_program/rank_program_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/stllike/string.h>
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchlib/src/tests/fef/resolver/CMakeLists.txt b/searchlib/src/tests/fef/resolver/CMakeLists.txt
index bae45a89063..51385469f7f 100644
--- a/searchlib/src/tests/fef/resolver/CMakeLists.txt
+++ b/searchlib/src/tests/fef/resolver/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_resolver_test_app TEST
SOURCES
resolver_test.cpp
diff --git a/searchlib/src/tests/fef/resolver/resolver_test.cpp b/searchlib/src/tests/fef/resolver/resolver_test.cpp
index 72076f3999e..77aba1664ad 100644
--- a/searchlib/src/tests/fef/resolver/resolver_test.cpp
+++ b/searchlib/src/tests/fef/resolver/resolver_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/fef/fef.h>
diff --git a/searchlib/src/tests/fef/table/CMakeLists.txt b/searchlib/src/tests/fef/table/CMakeLists.txt
index 32a943ad2b2..599fa74d221 100644
--- a/searchlib/src/tests/fef/table/CMakeLists.txt
+++ b/searchlib/src/tests/fef/table/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_table_test_app TEST
SOURCES
table_test.cpp
diff --git a/searchlib/src/tests/fef/table/table_test.cpp b/searchlib/src/tests/fef/table/table_test.cpp
index 1426a6b9927..64173b3f73f 100644
--- a/searchlib/src/tests/fef/table/table_test.cpp
+++ b/searchlib/src/tests/fef/table/table_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/fef/filetablefactory.h>
diff --git a/searchlib/src/tests/fef/termfieldmodel/CMakeLists.txt b/searchlib/src/tests/fef/termfieldmodel/CMakeLists.txt
index a4c26e461a9..98b4176927a 100644
--- a/searchlib/src/tests/fef/termfieldmodel/CMakeLists.txt
+++ b/searchlib/src/tests/fef/termfieldmodel/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_termfieldmodel_test_app TEST
SOURCES
termfieldmodel_test.cpp
diff --git a/searchlib/src/tests/fef/termfieldmodel/termfieldmodel_test.cpp b/searchlib/src/tests/fef/termfieldmodel/termfieldmodel_test.cpp
index 3de34047ecd..ca3596e7a97 100644
--- a/searchlib/src/tests/fef/termfieldmodel/termfieldmodel_test.cpp
+++ b/searchlib/src/tests/fef/termfieldmodel/termfieldmodel_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/fef/fef.h>
diff --git a/searchlib/src/tests/fef/termmatchdatamerger/CMakeLists.txt b/searchlib/src/tests/fef/termmatchdatamerger/CMakeLists.txt
index ca2fea57f6f..68f9dce5ef4 100644
--- a/searchlib/src/tests/fef/termmatchdatamerger/CMakeLists.txt
+++ b/searchlib/src/tests/fef/termmatchdatamerger/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_termmatchdatamerger_test_app TEST
SOURCES
termmatchdatamerger_test.cpp
diff --git a/searchlib/src/tests/fef/termmatchdatamerger/termmatchdatamerger_test.cpp b/searchlib/src/tests/fef/termmatchdatamerger/termmatchdatamerger_test.cpp
index eb04c34b595..4618a29cf49 100644
--- a/searchlib/src/tests/fef/termmatchdatamerger/termmatchdatamerger_test.cpp
+++ b/searchlib/src/tests/fef/termmatchdatamerger/termmatchdatamerger_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/fef/termfieldmatchdata.h>
#include <vespa/searchlib/fef/termfieldmatchdataarray.h>
#include <vespa/searchlib/fef/termmatchdatamerger.h>
diff --git a/searchlib/src/tests/fileheadertk/CMakeLists.txt b/searchlib/src/tests/fileheadertk/CMakeLists.txt
index cb1678c9f3b..d0fcab01b29 100644
--- a/searchlib/src/tests/fileheadertk/CMakeLists.txt
+++ b/searchlib/src/tests/fileheadertk/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_fileheadertk_test_app TEST
SOURCES
fileheadertk_test.cpp
diff --git a/searchlib/src/tests/fileheadertk/fileheadertk_test.cpp b/searchlib/src/tests/fileheadertk/fileheadertk_test.cpp
index 5daadaa956f..3662e371839 100644
--- a/searchlib/src/tests/fileheadertk/fileheadertk_test.cpp
+++ b/searchlib/src/tests/fileheadertk/fileheadertk_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/util/fileheadertk.h>
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchlib/src/tests/forcelink/CMakeLists.txt b/searchlib/src/tests/forcelink/CMakeLists.txt
index a5da31cdf19..81ce6beab32 100644
--- a/searchlib/src/tests/forcelink/CMakeLists.txt
+++ b/searchlib/src/tests/forcelink/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_forcelink_test_app TEST
SOURCES
forcelink.cpp
diff --git a/searchlib/src/tests/forcelink/forcelink.cpp b/searchlib/src/tests/forcelink/forcelink.cpp
index 3de7ae0e9fb..189804c3975 100644
--- a/searchlib/src/tests/forcelink/forcelink.cpp
+++ b/searchlib/src/tests/forcelink/forcelink.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("forcelink_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchlib/src/tests/grouping/CMakeLists.txt b/searchlib/src/tests/grouping/CMakeLists.txt
index e2bb73c57a4..87214455e05 100644
--- a/searchlib/src/tests/grouping/CMakeLists.txt
+++ b/searchlib/src/tests/grouping/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_grouping_test_app TEST
SOURCES
grouping_test.cpp
diff --git a/searchlib/src/tests/grouping/grouping_serialization_test.cpp b/searchlib/src/tests/grouping/grouping_serialization_test.cpp
index 7b98a846e0d..ea96c698a02 100644
--- a/searchlib/src/tests/grouping/grouping_serialization_test.cpp
+++ b/searchlib/src/tests/grouping/grouping_serialization_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for grouping_serialization.
#include <vespa/searchlib/aggregation/aggregation.h>
diff --git a/searchlib/src/tests/grouping/grouping_test.cpp b/searchlib/src/tests/grouping/grouping_test.cpp
index 94d3afd619b..ef4930de8ce 100644
--- a/searchlib/src/tests/grouping/grouping_test.cpp
+++ b/searchlib/src/tests/grouping/grouping_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/aggregation/perdocexpression.h>
diff --git a/searchlib/src/tests/grouping/hyperloglog_test.cpp b/searchlib/src/tests/grouping/hyperloglog_test.cpp
index ec65332fbec..e6617541fc8 100644
--- a/searchlib/src/tests/grouping/hyperloglog_test.cpp
+++ b/searchlib/src/tests/grouping/hyperloglog_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for hyperloglog.
#include <vespa/log/log.h>
diff --git a/searchlib/src/tests/grouping/sketch_test.cpp b/searchlib/src/tests/grouping/sketch_test.cpp
index 13c0641118c..2b5756b1950 100644
--- a/searchlib/src/tests/grouping/sketch_test.cpp
+++ b/searchlib/src/tests/grouping/sketch_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for sketch.
#include <vespa/log/log.h>
diff --git a/searchlib/src/tests/groupingengine/CMakeLists.txt b/searchlib/src/tests/groupingengine/CMakeLists.txt
index c4283b63147..4c0e48896e7 100644
--- a/searchlib/src/tests/groupingengine/CMakeLists.txt
+++ b/searchlib/src/tests/groupingengine/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_groupingengine_test_app
SOURCES
groupingengine_test.cpp
diff --git a/searchlib/src/tests/groupingengine/groupingengine_benchmark.cpp b/searchlib/src/tests/groupingengine/groupingengine_benchmark.cpp
index 36a567e5675..66fa359f1a3 100644
--- a/searchlib/src/tests/groupingengine/groupingengine_benchmark.cpp
+++ b/searchlib/src/tests/groupingengine/groupingengine_benchmark.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/aggregation/perdocexpression.h>
diff --git a/searchlib/src/tests/groupingengine/groupingengine_test.cpp b/searchlib/src/tests/groupingengine/groupingengine_test.cpp
index 81c4a427b4f..a0179c36c23 100644
--- a/searchlib/src/tests/groupingengine/groupingengine_test.cpp
+++ b/searchlib/src/tests/groupingengine/groupingengine_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/aggregation/perdocexpression.h>
diff --git a/searchlib/src/tests/hitcollector/CMakeLists.txt b/searchlib/src/tests/hitcollector/CMakeLists.txt
index 6b7fe874ea3..b7a087ca2c6 100644
--- a/searchlib/src/tests/hitcollector/CMakeLists.txt
+++ b/searchlib/src/tests/hitcollector/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_hitcollector_test_app TEST
SOURCES
hitcollector_test.cpp
diff --git a/searchlib/src/tests/hitcollector/hitcollector_test.cpp b/searchlib/src/tests/hitcollector/hitcollector_test.cpp
index 8aceb583b9c..617e0e85824 100644
--- a/searchlib/src/tests/hitcollector/hitcollector_test.cpp
+++ b/searchlib/src/tests/hitcollector/hitcollector_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/common/bitvector.h>
diff --git a/searchlib/src/tests/hitcollector/sorted_hit_sequence_test.cpp b/searchlib/src/tests/hitcollector/sorted_hit_sequence_test.cpp
index ac054ddbafd..75401892d18 100644
--- a/searchlib/src/tests/hitcollector/sorted_hit_sequence_test.cpp
+++ b/searchlib/src/tests/hitcollector/sorted_hit_sequence_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/queryeval/sorted_hit_sequence.h>
diff --git a/searchlib/src/tests/index/docbuilder/CMakeLists.txt b/searchlib/src/tests/index/docbuilder/CMakeLists.txt
index 0957dd24946..7a969f602ea 100644
--- a/searchlib/src/tests/index/docbuilder/CMakeLists.txt
+++ b/searchlib/src/tests/index/docbuilder/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_docbuilder_test_app TEST
SOURCES
docbuilder_test.cpp
diff --git a/searchlib/src/tests/index/docbuilder/docbuilder_test.cpp b/searchlib/src/tests/index/docbuilder/docbuilder_test.cpp
index f880510647d..75cccb0d573 100644
--- a/searchlib/src/tests/index/docbuilder/docbuilder_test.cpp
+++ b/searchlib/src/tests/index/docbuilder/docbuilder_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("docbuilder_test");
diff --git a/searchlib/src/tests/index/doctypebuilder/CMakeLists.txt b/searchlib/src/tests/index/doctypebuilder/CMakeLists.txt
index 8fce3fb54bb..348ecde5a7c 100644
--- a/searchlib/src/tests/index/doctypebuilder/CMakeLists.txt
+++ b/searchlib/src/tests/index/doctypebuilder/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_doctypebuilder_test_app TEST
SOURCES
doctypebuilder_test.cpp
diff --git a/searchlib/src/tests/index/doctypebuilder/doctypebuilder_test.cpp b/searchlib/src/tests/index/doctypebuilder/doctypebuilder_test.cpp
index 0aa0bb9df94..4b7062be4f8 100644
--- a/searchlib/src/tests/index/doctypebuilder/doctypebuilder_test.cpp
+++ b/searchlib/src/tests/index/doctypebuilder/doctypebuilder_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/repo/documenttyperepo.h>
#include <vespa/searchlib/index/doctypebuilder.h>
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchlib/src/tests/indexmetainfo/CMakeLists.txt b/searchlib/src/tests/indexmetainfo/CMakeLists.txt
index b6cea6db956..bbbe1eed591 100644
--- a/searchlib/src/tests/indexmetainfo/CMakeLists.txt
+++ b/searchlib/src/tests/indexmetainfo/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_indexmetainfo_test_app TEST
SOURCES
indexmetainfo_test.cpp
diff --git a/searchlib/src/tests/indexmetainfo/indexmetainfo_test.cpp b/searchlib/src/tests/indexmetainfo/indexmetainfo_test.cpp
index 0fa2e45f3be..93ad6c75a1b 100644
--- a/searchlib/src/tests/indexmetainfo/indexmetainfo_test.cpp
+++ b/searchlib/src/tests/indexmetainfo/indexmetainfo_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchlib/src/tests/ld-library-path/CMakeLists.txt b/searchlib/src/tests/ld-library-path/CMakeLists.txt
index 97f166e99cb..e064d98e42c 100644
--- a/searchlib/src/tests/ld-library-path/CMakeLists.txt
+++ b/searchlib/src/tests/ld-library-path/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_ld-library-path_test_app TEST
SOURCES
ld-library-path.cpp
diff --git a/searchlib/src/tests/ld-library-path/ld-library-path.cpp b/searchlib/src/tests/ld-library-path/ld-library-path.cpp
index 5d21e86d7a6..2f19110c6fe 100644
--- a/searchlib/src/tests/ld-library-path/ld-library-path.cpp
+++ b/searchlib/src/tests/ld-library-path/ld-library-path.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("");
diff --git a/searchlib/src/tests/memoryindex/compact_words_store/CMakeLists.txt b/searchlib/src/tests/memoryindex/compact_words_store/CMakeLists.txt
index 2ad75124993..16117c8294f 100644
--- a/searchlib/src/tests/memoryindex/compact_words_store/CMakeLists.txt
+++ b/searchlib/src/tests/memoryindex/compact_words_store/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_compact_words_store_test_app TEST
SOURCES
compact_words_store_test.cpp
diff --git a/searchlib/src/tests/memoryindex/compact_words_store/compact_words_store_test.cpp b/searchlib/src/tests/memoryindex/compact_words_store/compact_words_store_test.cpp
index 6f2e52f7a4f..a82c7ea396d 100644
--- a/searchlib/src/tests/memoryindex/compact_words_store/compact_words_store_test.cpp
+++ b/searchlib/src/tests/memoryindex/compact_words_store/compact_words_store_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/memoryindex/compact_words_store.h>
#include <vespa/vespalib/datastore/entryref.h>
diff --git a/searchlib/src/tests/memoryindex/datastore/CMakeLists.txt b/searchlib/src/tests/memoryindex/datastore/CMakeLists.txt
index 6121a501e5d..0a70db48c93 100644
--- a/searchlib/src/tests/memoryindex/datastore/CMakeLists.txt
+++ b/searchlib/src/tests/memoryindex/datastore/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_feature_store_test_app TEST
SOURCES
feature_store_test.cpp
diff --git a/searchlib/src/tests/memoryindex/datastore/feature_store_test.cpp b/searchlib/src/tests/memoryindex/datastore/feature_store_test.cpp
index 764ce6ab1b1..9a326af4c3b 100644
--- a/searchlib/src/tests/memoryindex/datastore/feature_store_test.cpp
+++ b/searchlib/src/tests/memoryindex/datastore/feature_store_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/memoryindex/feature_store.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/searchlib/src/tests/memoryindex/datastore/word_store_test.cpp b/searchlib/src/tests/memoryindex/datastore/word_store_test.cpp
index 9ab5cc685e2..698780a1dc2 100644
--- a/searchlib/src/tests/memoryindex/datastore/word_store_test.cpp
+++ b/searchlib/src/tests/memoryindex/datastore/word_store_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/memoryindex/word_store.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/searchlib/src/tests/memoryindex/document_inverter/CMakeLists.txt b/searchlib/src/tests/memoryindex/document_inverter/CMakeLists.txt
index 5d31d9c57b6..38ebf74aad0 100644
--- a/searchlib/src/tests/memoryindex/document_inverter/CMakeLists.txt
+++ b/searchlib/src/tests/memoryindex/document_inverter/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_document_inverter_test_app TEST
SOURCES
document_inverter_test.cpp
diff --git a/searchlib/src/tests/memoryindex/document_inverter/document_inverter_test.cpp b/searchlib/src/tests/memoryindex/document_inverter/document_inverter_test.cpp
index 0a3a40ec0e7..a8f1af08158 100644
--- a/searchlib/src/tests/memoryindex/document_inverter/document_inverter_test.cpp
+++ b/searchlib/src/tests/memoryindex/document_inverter/document_inverter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/index/docbuilder.h>
#include <vespa/searchlib/index/field_length_calculator.h>
diff --git a/searchlib/src/tests/memoryindex/field_index/CMakeLists.txt b/searchlib/src/tests/memoryindex/field_index/CMakeLists.txt
index 2fe31071886..54fa61573c1 100644
--- a/searchlib/src/tests/memoryindex/field_index/CMakeLists.txt
+++ b/searchlib/src/tests/memoryindex/field_index/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_field_index_test_app TEST
SOURCES
field_index_test.cpp
diff --git a/searchlib/src/tests/memoryindex/field_index/field_index_test.cpp b/searchlib/src/tests/memoryindex/field_index/field_index_test.cpp
index 0deb9893dae..bde78a6229f 100644
--- a/searchlib/src/tests/memoryindex/field_index/field_index_test.cpp
+++ b/searchlib/src/tests/memoryindex/field_index/field_index_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/diskindex/fusion.h>
#include <vespa/searchlib/diskindex/indexbuilder.h>
diff --git a/searchlib/src/tests/memoryindex/field_index_remover/CMakeLists.txt b/searchlib/src/tests/memoryindex/field_index_remover/CMakeLists.txt
index f54043fc2b7..3b5bb9fb6f7 100644
--- a/searchlib/src/tests/memoryindex/field_index_remover/CMakeLists.txt
+++ b/searchlib/src/tests/memoryindex/field_index_remover/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_field_index_remover_test_app TEST
SOURCES
field_index_remover_test.cpp
diff --git a/searchlib/src/tests/memoryindex/field_index_remover/field_index_remover_test.cpp b/searchlib/src/tests/memoryindex/field_index_remover/field_index_remover_test.cpp
index 584a8121b16..0a9964d5c31 100644
--- a/searchlib/src/tests/memoryindex/field_index_remover/field_index_remover_test.cpp
+++ b/searchlib/src/tests/memoryindex/field_index_remover/field_index_remover_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/memoryindex/field_index_remover.h>
#include <vespa/searchlib/memoryindex/i_field_index_remove_listener.h>
diff --git a/searchlib/src/tests/memoryindex/field_inverter/CMakeLists.txt b/searchlib/src/tests/memoryindex/field_inverter/CMakeLists.txt
index 56e01e3f0e7..58b184d37f7 100644
--- a/searchlib/src/tests/memoryindex/field_inverter/CMakeLists.txt
+++ b/searchlib/src/tests/memoryindex/field_inverter/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_field_inverter_test_app TEST
SOURCES
field_inverter_test.cpp
diff --git a/searchlib/src/tests/memoryindex/field_inverter/field_inverter_test.cpp b/searchlib/src/tests/memoryindex/field_inverter/field_inverter_test.cpp
index e7116eceb2d..9b718052dd0 100644
--- a/searchlib/src/tests/memoryindex/field_inverter/field_inverter_test.cpp
+++ b/searchlib/src/tests/memoryindex/field_inverter/field_inverter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/repo/fixedtyperepo.h>
#include <vespa/searchlib/index/docbuilder.h>
diff --git a/searchlib/src/tests/memoryindex/memory_index/CMakeLists.txt b/searchlib/src/tests/memoryindex/memory_index/CMakeLists.txt
index 6b727951ab7..e5915cca6f3 100644
--- a/searchlib/src/tests/memoryindex/memory_index/CMakeLists.txt
+++ b/searchlib/src/tests/memoryindex/memory_index/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_memory_index_test_app TEST
SOURCES
memory_index_test.cpp
diff --git a/searchlib/src/tests/memoryindex/memory_index/memory_index_test.cpp b/searchlib/src/tests/memoryindex/memory_index/memory_index_test.cpp
index 8dbca39b692..59ade118990 100644
--- a/searchlib/src/tests/memoryindex/memory_index/memory_index_test.cpp
+++ b/searchlib/src/tests/memoryindex/memory_index/memory_index_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/common/scheduletaskcallback.h>
#include <vespa/searchlib/fef/matchdata.h>
diff --git a/searchlib/src/tests/memoryindex/url_field_inverter/CMakeLists.txt b/searchlib/src/tests/memoryindex/url_field_inverter/CMakeLists.txt
index 369a2fbda50..88f817e20bf 100644
--- a/searchlib/src/tests/memoryindex/url_field_inverter/CMakeLists.txt
+++ b/searchlib/src/tests/memoryindex/url_field_inverter/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_url_field_inverter_test_app TEST
SOURCES
url_field_inverter_test.cpp
diff --git a/searchlib/src/tests/memoryindex/url_field_inverter/url_field_inverter_test.cpp b/searchlib/src/tests/memoryindex/url_field_inverter/url_field_inverter_test.cpp
index cc28a8fd479..5f73b9b8282 100644
--- a/searchlib/src/tests/memoryindex/url_field_inverter/url_field_inverter_test.cpp
+++ b/searchlib/src/tests/memoryindex/url_field_inverter/url_field_inverter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/repo/fixedtyperepo.h>
#include <vespa/searchlib/index/docbuilder.h>
diff --git a/searchlib/src/tests/nativerank/CMakeLists.txt b/searchlib/src/tests/nativerank/CMakeLists.txt
index 2ee0084cd53..549a7526745 100644
--- a/searchlib/src/tests/nativerank/CMakeLists.txt
+++ b/searchlib/src/tests/nativerank/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_nativerank_test_app TEST
SOURCES
nativerank.cpp
diff --git a/searchlib/src/tests/nativerank/nativerank.cpp b/searchlib/src/tests/nativerank/nativerank.cpp
index a929d6b5b23..90920a1f351 100644
--- a/searchlib/src/tests/nativerank/nativerank.cpp
+++ b/searchlib/src/tests/nativerank/nativerank.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/features/nativeattributematchfeature.h>
#include <vespa/searchlib/features/nativefieldmatchfeature.h>
diff --git a/searchlib/src/tests/nearsearch/CMakeLists.txt b/searchlib/src/tests/nearsearch/CMakeLists.txt
index c4178601094..216b85af26c 100644
--- a/searchlib/src/tests/nearsearch/CMakeLists.txt
+++ b/searchlib/src/tests/nearsearch/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_nearsearch_test_app TEST
SOURCES
nearsearch_test.cpp
diff --git a/searchlib/src/tests/nearsearch/nearsearch_test.cpp b/searchlib/src/tests/nearsearch/nearsearch_test.cpp
index cb17ea35cf8..97066087228 100644
--- a/searchlib/src/tests/nearsearch/nearsearch_test.cpp
+++ b/searchlib/src/tests/nearsearch/nearsearch_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("nearsearch_test");
diff --git a/searchlib/src/tests/postinglistbm/CMakeLists.txt b/searchlib/src/tests/postinglistbm/CMakeLists.txt
index 9e0daa5b3d8..a7a39789b44 100644
--- a/searchlib/src/tests/postinglistbm/CMakeLists.txt
+++ b/searchlib/src/tests/postinglistbm/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_posting_list_test_app TEST
SOURCES
posting_list_test.cpp
diff --git a/searchlib/src/tests/postinglistbm/postinglistbm.cpp b/searchlib/src/tests/postinglistbm/postinglistbm.cpp
index 7fa924f7002..198ff57435a 100644
--- a/searchlib/src/tests/postinglistbm/postinglistbm.cpp
+++ b/searchlib/src/tests/postinglistbm/postinglistbm.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "stress_runner.h"
#include <vespa/fastos/app.h>
diff --git a/searchlib/src/tests/postinglistbm/stress_runner.cpp b/searchlib/src/tests/postinglistbm/stress_runner.cpp
index b3ae7664614..09272a60e75 100644
--- a/searchlib/src/tests/postinglistbm/stress_runner.cpp
+++ b/searchlib/src/tests/postinglistbm/stress_runner.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "stress_runner.h"
diff --git a/searchlib/src/tests/postinglistbm/stress_runner.h b/searchlib/src/tests/postinglistbm/stress_runner.h
index 249645f70aa..cf80d8b696b 100644
--- a/searchlib/src/tests/postinglistbm/stress_runner.h
+++ b/searchlib/src/tests/postinglistbm/stress_runner.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <string>
diff --git a/searchlib/src/tests/predicate/CMakeLists.txt b/searchlib/src/tests/predicate/CMakeLists.txt
index f2b26912450..c49da8a4ebe 100644
--- a/searchlib/src/tests/predicate/CMakeLists.txt
+++ b/searchlib/src/tests/predicate/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_predicate_index_test_app TEST
SOURCES
predicate_index_test.cpp
diff --git a/searchlib/src/tests/predicate/document_features_store_test.cpp b/searchlib/src/tests/predicate/document_features_store_test.cpp
index 72f83e533c9..fbd4629cc4a 100644
--- a/searchlib/src/tests/predicate/document_features_store_test.cpp
+++ b/searchlib/src/tests/predicate/document_features_store_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for document_features_store.
#include <vespa/log/log.h>
diff --git a/searchlib/src/tests/predicate/predicate_bounds_posting_list_test.cpp b/searchlib/src/tests/predicate/predicate_bounds_posting_list_test.cpp
index 31aebf95ea2..9e87871d7e5 100644
--- a/searchlib/src/tests/predicate/predicate_bounds_posting_list_test.cpp
+++ b/searchlib/src/tests/predicate/predicate_bounds_posting_list_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for predicate_bounds_posting_list.
#include <vespa/searchlib/predicate/predicate_index.h>
diff --git a/searchlib/src/tests/predicate/predicate_index_test.cpp b/searchlib/src/tests/predicate/predicate_index_test.cpp
index 19ad0301b5c..fe98edc3a23 100644
--- a/searchlib/src/tests/predicate/predicate_index_test.cpp
+++ b/searchlib/src/tests/predicate/predicate_index_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for predicate_index.
#include <vespa/searchlib/predicate/predicate_index.h>
@@ -76,12 +76,11 @@ void indexFeature(PredicateIndex &attr, uint32_t doc_id, int min_feature,
const vector<pair<uint64_t, IntervalWithBounds>> &bounds) {
PredicateTreeAnnotations annotations(min_feature);
for (auto &p : intervals) {
- annotations.interval_map[p.first] = std::vector<Interval>{{p.second}};
+ annotations.interval_map[p.first] = vector<Interval>{{p.second}};
annotations.features.push_back(p.first);
}
for (auto &p : bounds) {
- annotations.bounds_map[p.first] =
- std::vector<IntervalWithBounds>{{p.second}};
+ annotations.bounds_map[p.first] = vector<IntervalWithBounds>{{p.second}};
annotations.features.push_back(p.first);
}
attr.indexDocument(doc_id, annotations);
@@ -116,8 +115,7 @@ TEST("require that PredicateIndex can index document") {
auto posting_it = lookupPosting(index, hash);
EXPECT_EQUAL(doc_id, posting_it.getKey());
uint32_t size;
- const auto &interval_list =
- index.getIntervalStore().get(posting_it.getData(), size, &single_buf);
+ const auto &interval_list = index.getIntervalStore().get(posting_it.getData(), size, &single_buf);
ASSERT_EQUAL(1u, size);
EXPECT_EQUAL(interval, interval_list[0]);
}
@@ -159,14 +157,12 @@ TEST("require that PredicateIndex can index document with bounds") {
uint32_t size;
IntervalWithBounds single;
- const auto &interval_list =
- index.getIntervalStore().get(posting_it.getData(), size, &single);
+ const auto &interval_list = index.getIntervalStore().get(posting_it.getData(), size, &single);
ASSERT_EQUAL(1u, size);
EXPECT_EQUAL(bounds, interval_list[0]);
}
-TEST("require that PredicateIndex can index multiple documents "
- "with the same feature") {
+TEST("require that PredicateIndex can index multiple documents with the same feature") {
PredicateIndex index(generation_holder, dummy_provider, simple_index_config, 10);
EXPECT_FALSE(index.getIntervalIndex().lookup(hash).valid());
for (uint32_t id = 1; id < 100; ++id) {
@@ -179,8 +175,7 @@ TEST("require that PredicateIndex can index multiple documents "
ASSERT_TRUE(posting_it.valid());
EXPECT_EQUAL(id, posting_it.getKey());
uint32_t size;
- const auto &interval_list = index.getIntervalStore().get(
- posting_it.getData(), size, &single_buf);
+ const auto &interval_list = index.getIntervalStore().get(posting_it.getData(), size, &single_buf);
ASSERT_EQUAL(1u, size);
EXPECT_EQUAL(interval, interval_list[0]);
++posting_it;
@@ -191,8 +186,7 @@ TEST("require that PredicateIndex can index multiple documents "
TEST("require that PredicateIndex can remove indexed documents") {
PredicateIndex index(generation_holder, dummy_provider, simple_index_config, 10);
EXPECT_FALSE(index.getIntervalIndex().lookup(hash).valid());
- indexFeature(index, doc_id, min_feature,
- {{hash, interval}}, {{hash2, bounds}});
+ indexFeature(index, doc_id, min_feature, {{hash, interval}}, {{hash2, bounds}});
index.removeDocument(doc_id);
index.commit();
auto it = index.getIntervalIndex().lookup(hash);
@@ -224,8 +218,7 @@ TEST("require that PredicateIndex can remove multiple documents") {
}
}
-TEST("require that PredicateIndex can remove multiple documents with "
- "multiple features") {
+TEST("require that PredicateIndex can remove multiple documents with multiple features") {
vector<pair<uint64_t, Interval>> intervals;
vector<pair<uint64_t, IntervalWithBounds>> bounds_intervals;
for (int i = 0; i < 100; ++i) {
@@ -254,7 +247,8 @@ TEST("require that PredicateIndex can remove multiple documents with "
// Helper function for next test.
template <typename Iterator, typename IntervalT>
void checkAllIntervals(Iterator posting_it, IntervalT expected_interval,
- const PredicateIntervalStore &interval_store) {
+ const PredicateIntervalStore &interval_store)
+{
for (uint32_t id = 1; id < 100u; ++id) {
ASSERT_TRUE(posting_it.valid());
EXPECT_EQUAL(id, posting_it.getKey());
@@ -262,8 +256,7 @@ void checkAllIntervals(Iterator posting_it, IntervalT expected_interval,
ASSERT_TRUE(ref.valid());
uint32_t size;
IntervalT single;
- const IntervalT *read_interval =
- interval_store.get(ref, size, &single);
+ const IntervalT *read_interval = interval_store.get(ref, size, &single);
EXPECT_EQUAL(1u, size);
EXPECT_EQUAL(expected_interval, read_interval[0]);
++posting_it;
@@ -308,8 +301,7 @@ TEST("require that PredicateIndex can be (de)serialized") {
EXPECT_EQUAL(199u, doc_id_limit);
EXPECT_EQUAL(index.getArity(), index2.getArity());
- EXPECT_EQUAL(index.getZeroConstraintDocs().size(),
- index2.getZeroConstraintDocs().size());
+ EXPECT_EQUAL(index.getZeroConstraintDocs().size(),index2.getZeroConstraintDocs().size());
{
auto it = index2.getZeroConstraintDocs().begin();
for (uint32_t i = 1; i < 100u; ++i) {
@@ -342,8 +334,7 @@ TEST("require that PredicateIndex can be (de)serialized") {
TEST("require that DocumentFeaturesStore is restored on deserialization") {
PredicateIndex index(generation_holder, dummy_provider, simple_index_config, 10);
EXPECT_FALSE(index.getIntervalIndex().lookup(hash).valid());
- indexFeature(index, doc_id, min_feature,
- {{hash, interval}}, {{hash2, bounds}});
+ indexFeature(index, doc_id, min_feature, {{hash, interval}}, {{hash2, bounds}});
vespalib::DataBuffer buffer;
index.serialize(buffer);
uint32_t doc_id_limit;
@@ -370,8 +361,7 @@ TEST("require that DocumentFeaturesStore is restored on deserialization") {
TEST("require that hold lists are attempted emptied on destruction") {
PredicateIndex index(generation_holder, dummy_provider, simple_index_config, 10);
- indexFeature(index, doc_id, min_feature,
- {{hash, interval}}, {{hash2, bounds}});
+ indexFeature(index, doc_id, min_feature, {{hash, interval}}, {{hash2, bounds}});
{
auto guard = generation_handler.takeGuard();
index.removeDocument(doc_id);
diff --git a/searchlib/src/tests/predicate/predicate_interval_posting_list_test.cpp b/searchlib/src/tests/predicate/predicate_interval_posting_list_test.cpp
index 660d8556b5c..8b8979fbbc1 100644
--- a/searchlib/src/tests/predicate/predicate_interval_posting_list_test.cpp
+++ b/searchlib/src/tests/predicate/predicate_interval_posting_list_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for predicate_interval_posting_list.
#include <vespa/searchlib/predicate/predicate_index.h>
diff --git a/searchlib/src/tests/predicate/predicate_interval_store_test.cpp b/searchlib/src/tests/predicate/predicate_interval_store_test.cpp
index 461bfd9ef30..7a483a1fe51 100644
--- a/searchlib/src/tests/predicate/predicate_interval_store_test.cpp
+++ b/searchlib/src/tests/predicate/predicate_interval_store_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for predicate_interval_store.
#include <vespa/log/log.h>
diff --git a/searchlib/src/tests/predicate/predicate_range_term_expander_test.cpp b/searchlib/src/tests/predicate/predicate_range_term_expander_test.cpp
index 1bf22957fe4..c0820e71254 100644
--- a/searchlib/src/tests/predicate/predicate_range_term_expander_test.cpp
+++ b/searchlib/src/tests/predicate/predicate_range_term_expander_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for predicate_range_term_expander.
#include <vespa/log/log.h>
diff --git a/searchlib/src/tests/predicate/predicate_ref_cache_test.cpp b/searchlib/src/tests/predicate/predicate_ref_cache_test.cpp
index 4d40665aa32..3e5d3282901 100644
--- a/searchlib/src/tests/predicate/predicate_ref_cache_test.cpp
+++ b/searchlib/src/tests/predicate/predicate_ref_cache_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for predicate_ref_cache.
#include <vespa/log/log.h>
diff --git a/searchlib/src/tests/predicate/predicate_tree_analyzer_test.cpp b/searchlib/src/tests/predicate/predicate_tree_analyzer_test.cpp
index 98cf2a5fe1c..b004c2c5c42 100644
--- a/searchlib/src/tests/predicate/predicate_tree_analyzer_test.cpp
+++ b/searchlib/src/tests/predicate/predicate_tree_analyzer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for PredicateTreeAnalyzer.
#include <vespa/log/log.h>
diff --git a/searchlib/src/tests/predicate/predicate_tree_annotator_test.cpp b/searchlib/src/tests/predicate/predicate_tree_annotator_test.cpp
index a72a441ba10..bd25bfc6e6d 100644
--- a/searchlib/src/tests/predicate/predicate_tree_annotator_test.cpp
+++ b/searchlib/src/tests/predicate/predicate_tree_annotator_test.cpp
@@ -1,9 +1,6 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for PredicateTreeAnnotator.
-#include <vespa/log/log.h>
-LOG_SETUP("PredicateTreeAnnotator_test");
-
#include <vespa/document/predicate/predicate.h>
#include <vespa/document/predicate/predicate_slime_builder.h>
#include <vespa/searchlib/predicate/predicate_index.h>
@@ -12,7 +9,9 @@ LOG_SETUP("PredicateTreeAnnotator_test");
#include <vespa/vespalib/data/slime/slime.h>
#include <vespa/vespalib/testkit/testapp.h>
#include <sstream>
-#include <vector>
+
+#include <vespa/log/log.h>
+LOG_SETUP("PredicateTreeAnnotator_test");
using document::Predicate;
using std::ostringstream;
@@ -217,9 +216,34 @@ TEST("show different types of NOT-intervals") {
checkInterval(result, "key=C", {0x00010005});
checkInterval(result, "key=D", {0x00070007});
checkInterval(result, Constants::z_star_compressed_attribute_name,
- {0x00010000, 0x00070002, 0x00050000,
- 0x00070006});
+ {0x00010000, 0x00070002, 0x00050000,0x00070006});
+
+}
+
+TEST("require short edge_partitions to get correct intervals and features") {
+ Slime slime;
+ Cursor &children = makeAndNode(slime.setObject());
+ makeHashedFeatureRange(children.addObject(), "key",{}, {{0, 5, -1}, {30, 0, 3}});
+ makeHashedFeatureRange(children.addObject(), "foo",{}, {{0, 5, -1}, {30, 0, 3}});
+
+ PredicateTreeAnnotations result;
+ PredicateTreeAnnotator::annotate(slime.get(), result);
+
+ EXPECT_EQUAL(2u, result.min_feature);
+ EXPECT_EQUAL(2u, result.interval_range);
+ EXPECT_EQUAL(0u, result.interval_map.size());
+ EXPECT_EQUAL(4u, result.bounds_map.size());
+ EXPECT_EQUAL(4u, result.features.size());
+ EXPECT_EQUAL(0u, result.range_features.size());
+ EXPECT_EQUAL(0xdbc38b103b5d50a9ul, result.features[0]);
+ EXPECT_EQUAL(0xbe6d86e3e2270b0aul, result.features[1]);
+ EXPECT_EQUAL(0xb2b301e26efffdc2ul, result.features[2]);
+ EXPECT_EQUAL(0x31afc4833c50e1d9ul, result.features[3]);
+ checkBounds(result, "key=0", {{0x00010001, 0xffffffff}});
+ checkBounds(result, "key=30", {{0x00010001, 3}});
+ checkBounds(result, "foo=0", {{0x00020002, 0xffffffff}});
+ checkBounds(result, "foo=30", {{0x00020002, 3}});
}
TEST("require that hashed ranges get correct intervals") {
@@ -239,6 +263,9 @@ TEST("require that hashed ranges get correct intervals") {
EXPECT_EQUAL(2u, result.interval_range);
EXPECT_EQUAL(4u, result.interval_map.size());
EXPECT_EQUAL(4u, result.bounds_map.size());
+ EXPECT_EQUAL(0u, result.features.size());
+ EXPECT_EQUAL(2u, result.range_features.size());
+
checkInterval(result, "key=10-19", {0x00010001});
checkInterval(result, "key=20-29", {0x00010001});
checkBounds(result, "key=0", {{0x00010001, 0xffffffff}});
diff --git a/searchlib/src/tests/predicate/predicate_zero_constraint_posting_list_test.cpp b/searchlib/src/tests/predicate/predicate_zero_constraint_posting_list_test.cpp
index 12de48b5d31..a1c725e6fdf 100644
--- a/searchlib/src/tests/predicate/predicate_zero_constraint_posting_list_test.cpp
+++ b/searchlib/src/tests/predicate/predicate_zero_constraint_posting_list_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for predicate_zero_constraint_posting_list.
#include <vespa/searchlib/predicate/predicate_zero_constraint_posting_list.h>
diff --git a/searchlib/src/tests/predicate/predicate_zstar_compressed_posting_list_test.cpp b/searchlib/src/tests/predicate/predicate_zstar_compressed_posting_list_test.cpp
index 6d00b45a283..cbaf865dca8 100644
--- a/searchlib/src/tests/predicate/predicate_zstar_compressed_posting_list_test.cpp
+++ b/searchlib/src/tests/predicate/predicate_zstar_compressed_posting_list_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for predicate_zstar_compressed_posting_list.
#include <vespa/searchlib/predicate/predicate_zstar_compressed_posting_list.h>
diff --git a/searchlib/src/tests/predicate/simple_index_test.cpp b/searchlib/src/tests/predicate/simple_index_test.cpp
index f7398800dba..c89987eea7d 100644
--- a/searchlib/src/tests/predicate/simple_index_test.cpp
+++ b/searchlib/src/tests/predicate/simple_index_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for simple_index.
#include <vespa/searchlib/predicate/simple_index.hpp>
diff --git a/searchlib/src/tests/predicate/tree_crumbs_test.cpp b/searchlib/src/tests/predicate/tree_crumbs_test.cpp
index 7874702209c..956e47332ac 100644
--- a/searchlib/src/tests/predicate/tree_crumbs_test.cpp
+++ b/searchlib/src/tests/predicate/tree_crumbs_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for TreeCrumbs.
#include <vespa/log/log.h>
diff --git a/searchlib/src/tests/prettyfloat/CMakeLists.txt b/searchlib/src/tests/prettyfloat/CMakeLists.txt
index eb8c73b0124..907b7661800 100644
--- a/searchlib/src/tests/prettyfloat/CMakeLists.txt
+++ b/searchlib/src/tests/prettyfloat/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_prettyfloat_test_app TEST
SOURCES
prettyfloat.cpp
diff --git a/searchlib/src/tests/prettyfloat/prettyfloat.cpp b/searchlib/src/tests/prettyfloat/prettyfloat.cpp
index 1c5fe85f5c0..a84ac59c964 100644
--- a/searchlib/src/tests/prettyfloat/prettyfloat.cpp
+++ b/searchlib/src/tests/prettyfloat/prettyfloat.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("prettyfloat_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchlib/src/tests/query/CMakeLists.txt b/searchlib/src/tests/query/CMakeLists.txt
index e0d5b3828a9..a7f09dee8cd 100644
--- a/searchlib/src/tests/query/CMakeLists.txt
+++ b/searchlib/src/tests/query/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_query_visitor_test_app TEST
SOURCES
query_visitor_test.cpp
diff --git a/searchlib/src/tests/query/customtypevisitor_test.cpp b/searchlib/src/tests/query/customtypevisitor_test.cpp
index d0812a00ebf..747b376777a 100644
--- a/searchlib/src/tests/query/customtypevisitor_test.cpp
+++ b/searchlib/src/tests/query/customtypevisitor_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for customtypevisitor.
#include <vespa/searchlib/query/tree/customtypevisitor.h>
diff --git a/searchlib/src/tests/query/query_visitor_test.cpp b/searchlib/src/tests/query/query_visitor_test.cpp
index ef255ad6878..9090575bd44 100644
--- a/searchlib/src/tests/query/query_visitor_test.cpp
+++ b/searchlib/src/tests/query/query_visitor_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for query_visitor.
#include <vespa/searchlib/query/tree/intermediatenodes.h>
diff --git a/searchlib/src/tests/query/querybuilder_test.cpp b/searchlib/src/tests/query/querybuilder_test.cpp
index 06098afe3eb..0c784287e5c 100644
--- a/searchlib/src/tests/query/querybuilder_test.cpp
+++ b/searchlib/src/tests/query/querybuilder_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for querybuilder.
#include <vespa/searchlib/parsequery/parse.h>
diff --git a/searchlib/src/tests/query/stackdumpquerycreator_test.cpp b/searchlib/src/tests/query/stackdumpquerycreator_test.cpp
index c5ef71621d1..3d84bf2de7b 100644
--- a/searchlib/src/tests/query/stackdumpquerycreator_test.cpp
+++ b/searchlib/src/tests/query/stackdumpquerycreator_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for stackdumpquerycreator.
#include <vespa/log/log.h>
diff --git a/searchlib/src/tests/query/streaming_query_large_test.cpp b/searchlib/src/tests/query/streaming_query_large_test.cpp
index 5eaa3cf0422..49875d0c6df 100644
--- a/searchlib/src/tests/query/streaming_query_large_test.cpp
+++ b/searchlib/src/tests/query/streaming_query_large_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/query/streaming/query.h>
#include <vespa/searchlib/query/tree/querybuilder.h>
#include <vespa/searchlib/query/tree/simplequery.h>
diff --git a/searchlib/src/tests/query/streaming_query_test.cpp b/searchlib/src/tests/query/streaming_query_test.cpp
index 21d55b485c0..ec292eda8eb 100644
--- a/searchlib/src/tests/query/streaming_query_test.cpp
+++ b/searchlib/src/tests/query/streaming_query_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/query/streaming/query.h>
#include <vespa/searchlib/query/tree/querybuilder.h>
diff --git a/searchlib/src/tests/query/templatetermvisitor_test.cpp b/searchlib/src/tests/query/templatetermvisitor_test.cpp
index 95679c29ccb..7643139d5ad 100644
--- a/searchlib/src/tests/query/templatetermvisitor_test.cpp
+++ b/searchlib/src/tests/query/templatetermvisitor_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for templatetermvisitor.
#include <vespa/log/log.h>
diff --git a/searchlib/src/tests/queryeval/CMakeLists.txt b/searchlib/src/tests/queryeval/CMakeLists.txt
index e24a63e09dc..65ae2dd8a6d 100644
--- a/searchlib/src/tests/queryeval/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_queryeval_test_app TEST
SOURCES
queryeval.cpp
diff --git a/searchlib/src/tests/queryeval/blueprint/CMakeLists.txt b/searchlib/src/tests/queryeval/blueprint/CMakeLists.txt
index 8b97b96ff99..bbaf7fc6490 100644
--- a/searchlib/src/tests/queryeval/blueprint/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/blueprint/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_blueprint_test_app TEST
SOURCES
blueprint_test.cpp
diff --git a/searchlib/src/tests/queryeval/blueprint/blueprint_test.cpp b/searchlib/src/tests/queryeval/blueprint/blueprint_test.cpp
index 34ab547b85d..8e8327584a7 100644
--- a/searchlib/src/tests/queryeval/blueprint/blueprint_test.cpp
+++ b/searchlib/src/tests/queryeval/blueprint/blueprint_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mysearch.h"
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/queryeval/blueprint.h>
diff --git a/searchlib/src/tests/queryeval/blueprint/intermediate_blueprints_test.cpp b/searchlib/src/tests/queryeval/blueprint/intermediate_blueprints_test.cpp
index eb6e49747a1..dbfe51926c9 100644
--- a/searchlib/src/tests/queryeval/blueprint/intermediate_blueprints_test.cpp
+++ b/searchlib/src/tests/queryeval/blueprint/intermediate_blueprints_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mysearch.h"
#include <vespa/vespalib/testkit/testapp.h>
@@ -1453,4 +1453,20 @@ TEST("require that intermediate cost tier is minimum cost tier of children") {
EXPECT_EQUAL(bp2->getState().cost_tier(), 2u);
}
+void verify_or_est(const std::vector<Blueprint::HitEstimate> &child_estimates, Blueprint::HitEstimate expect) {
+ OrBlueprint my_or;
+ my_or.setDocIdLimit(32);
+ auto my_est = my_or.combine(child_estimates);
+ EXPECT_EQUAL(my_est.empty, expect.empty);
+ EXPECT_EQUAL(my_est.estHits, expect.estHits);
+}
+
+TEST("require that OR blueprint use saturated sum as estimate") {
+ TEST_DO(verify_or_est({{0, true},{0, true},{0, true}}, {0, true}));
+ TEST_DO(verify_or_est({{0, true},{0, false},{0, true}}, {0, false}));
+ TEST_DO(verify_or_est({{4, false},{6, false},{5, false}}, {15, false}));
+ TEST_DO(verify_or_est({{5, false},{20, false},{10, false}}, {32, false}));
+ TEST_DO(verify_or_est({{100, false},{300, false},{200, false}}, {300, false}));
+}
+
TEST_MAIN() { TEST_DEBUG("lhs.out", "rhs.out"); TEST_RUN_ALL(); }
diff --git a/searchlib/src/tests/queryeval/blueprint/leaf_blueprints_test.cpp b/searchlib/src/tests/queryeval/blueprint/leaf_blueprints_test.cpp
index dd1d57fc296..81873ccae7e 100644
--- a/searchlib/src/tests/queryeval/blueprint/leaf_blueprints_test.cpp
+++ b/searchlib/src/tests/queryeval/blueprint/leaf_blueprints_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/queryeval/blueprint.h>
diff --git a/searchlib/src/tests/queryeval/blueprint/mysearch.h b/searchlib/src/tests/queryeval/blueprint/mysearch.h
index 012e19f26f5..38027b756be 100644
--- a/searchlib/src/tests/queryeval/blueprint/mysearch.h
+++ b/searchlib/src/tests/queryeval/blueprint/mysearch.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/queryeval/blueprint.h>
#include <vespa/searchlib/queryeval/multisearch.h>
#include <vespa/searchlib/fef/termfieldmatchdataarray.h>
diff --git a/searchlib/src/tests/queryeval/dot_product/CMakeLists.txt b/searchlib/src/tests/queryeval/dot_product/CMakeLists.txt
index 54a474bf441..1b2e58b0c69 100644
--- a/searchlib/src/tests/queryeval/dot_product/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/dot_product/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_dot_product_test_app TEST
SOURCES
dot_product_test.cpp
diff --git a/searchlib/src/tests/queryeval/dot_product/dot_product_test.cpp b/searchlib/src/tests/queryeval/dot_product/dot_product_test.cpp
index a05dcc4c6ea..624ad331457 100644
--- a/searchlib/src/tests/queryeval/dot_product/dot_product_test.cpp
+++ b/searchlib/src/tests/queryeval/dot_product/dot_product_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/queryeval/dot_product_search.h>
diff --git a/searchlib/src/tests/queryeval/equiv/CMakeLists.txt b/searchlib/src/tests/queryeval/equiv/CMakeLists.txt
index 9a5697d2d56..58db3504c50 100644
--- a/searchlib/src/tests/queryeval/equiv/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/equiv/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_equiv_test_app TEST
SOURCES
equiv_test.cpp
diff --git a/searchlib/src/tests/queryeval/equiv/equiv_test.cpp b/searchlib/src/tests/queryeval/equiv/equiv_test.cpp
index 412130ecaab..887128b8d5e 100644
--- a/searchlib/src/tests/queryeval/equiv/equiv_test.cpp
+++ b/searchlib/src/tests/queryeval/equiv/equiv_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("equiv_test");
#include <vespa/searchlib/queryeval/leaf_blueprints.h>
diff --git a/searchlib/src/tests/queryeval/fake_searchable/CMakeLists.txt b/searchlib/src/tests/queryeval/fake_searchable/CMakeLists.txt
index 177376d81e2..d762213f824 100644
--- a/searchlib/src/tests/queryeval/fake_searchable/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/fake_searchable/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_fake_searchable_test_app TEST
SOURCES
fake_searchable_test.cpp
diff --git a/searchlib/src/tests/queryeval/fake_searchable/fake_searchable_test.cpp b/searchlib/src/tests/queryeval/fake_searchable/fake_searchable_test.cpp
index 167fc706f4d..d8ae70d147d 100644
--- a/searchlib/src/tests/queryeval/fake_searchable/fake_searchable_test.cpp
+++ b/searchlib/src/tests/queryeval/fake_searchable/fake_searchable_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/searchlib/src/tests/queryeval/getnodeweight/CMakeLists.txt b/searchlib/src/tests/queryeval/getnodeweight/CMakeLists.txt
index cca3a5e00b2..38f072d6df9 100644
--- a/searchlib/src/tests/queryeval/getnodeweight/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/getnodeweight/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_getnodeweight_test_app TEST
SOURCES
getnodeweight_test.cpp
diff --git a/searchlib/src/tests/queryeval/getnodeweight/getnodeweight_test.cpp b/searchlib/src/tests/queryeval/getnodeweight/getnodeweight_test.cpp
index 24253469dfc..a76620420a3 100644
--- a/searchlib/src/tests/queryeval/getnodeweight/getnodeweight_test.cpp
+++ b/searchlib/src/tests/queryeval/getnodeweight/getnodeweight_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchlib/src/tests/queryeval/matching_elements_search/CMakeLists.txt b/searchlib/src/tests/queryeval/matching_elements_search/CMakeLists.txt
index 07fb1404ba1..d2470083d40 100644
--- a/searchlib/src/tests/queryeval/matching_elements_search/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/matching_elements_search/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_matching_elements_search_test_app TEST
SOURCES
diff --git a/searchlib/src/tests/queryeval/matching_elements_search/matching_elements_search_test.cpp b/searchlib/src/tests/queryeval/matching_elements_search/matching_elements_search_test.cpp
index 5841320854a..3bb59480ed9 100644
--- a/searchlib/src/tests/queryeval/matching_elements_search/matching_elements_search_test.cpp
+++ b/searchlib/src/tests/queryeval/matching_elements_search/matching_elements_search_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcommon/attribute/attributecontent.h>
#include <vespa/searchlib/attribute/attributefactory.h>
diff --git a/searchlib/src/tests/queryeval/monitoring_search_iterator/CMakeLists.txt b/searchlib/src/tests/queryeval/monitoring_search_iterator/CMakeLists.txt
index 4884572cc5d..cd6ad397299 100644
--- a/searchlib/src/tests/queryeval/monitoring_search_iterator/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/monitoring_search_iterator/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_monitoring_search_iterator_test_app TEST
SOURCES
monitoring_search_iterator_test.cpp
diff --git a/searchlib/src/tests/queryeval/monitoring_search_iterator/monitoring_search_iterator_test.cpp b/searchlib/src/tests/queryeval/monitoring_search_iterator/monitoring_search_iterator_test.cpp
index 0e0840d9013..ec31a18830e 100644
--- a/searchlib/src/tests/queryeval/monitoring_search_iterator/monitoring_search_iterator_test.cpp
+++ b/searchlib/src/tests/queryeval/monitoring_search_iterator/monitoring_search_iterator_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/queryeval/andsearch.h>
#include <vespa/searchlib/queryeval/monitoring_search_iterator.h>
diff --git a/searchlib/src/tests/queryeval/multibitvectoriterator/CMakeLists.txt b/searchlib/src/tests/queryeval/multibitvectoriterator/CMakeLists.txt
index 718b0553fc9..911cb968d63 100644
--- a/searchlib/src/tests/queryeval/multibitvectoriterator/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/multibitvectoriterator/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_multibitvectoriterator_test_app TEST
SOURCES
multibitvectoriterator_test.cpp
diff --git a/searchlib/src/tests/queryeval/multibitvectoriterator/multibitvectoriterator_bench.cpp b/searchlib/src/tests/queryeval/multibitvectoriterator/multibitvectoriterator_bench.cpp
index 10e03238e81..b5d4ec71a3b 100644
--- a/searchlib/src/tests/queryeval/multibitvectoriterator/multibitvectoriterator_bench.cpp
+++ b/searchlib/src/tests/queryeval/multibitvectoriterator/multibitvectoriterator_bench.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/queryeval/multibitvectoriterator.h>
diff --git a/searchlib/src/tests/queryeval/multibitvectoriterator/multibitvectoriterator_test.cpp b/searchlib/src/tests/queryeval/multibitvectoriterator/multibitvectoriterator_test.cpp
index 565c013a2fe..01175608bc5 100644
--- a/searchlib/src/tests/queryeval/multibitvectoriterator/multibitvectoriterator_test.cpp
+++ b/searchlib/src/tests/queryeval/multibitvectoriterator/multibitvectoriterator_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/queryeval/multibitvectoriterator.h>
#include <vespa/searchlib/queryeval/emptysearch.h>
diff --git a/searchlib/src/tests/queryeval/parallel_weak_and/CMakeLists.txt b/searchlib/src/tests/queryeval/parallel_weak_and/CMakeLists.txt
index 89b62d99efc..6a0c574591c 100644
--- a/searchlib/src/tests/queryeval/parallel_weak_and/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/parallel_weak_and/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_parallel_weak_and_test_app TEST
SOURCES
parallel_weak_and_test.cpp
diff --git a/searchlib/src/tests/queryeval/parallel_weak_and/parallel_weak_and_test.cpp b/searchlib/src/tests/queryeval/parallel_weak_and/parallel_weak_and_test.cpp
index b820a96fab6..1ac91c5d8d6 100644
--- a/searchlib/src/tests/queryeval/parallel_weak_and/parallel_weak_and_test.cpp
+++ b/searchlib/src/tests/queryeval/parallel_weak_and/parallel_weak_and_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/query/tree/simplequery.h>
#include <vespa/searchlib/queryeval/fake_searchable.h>
diff --git a/searchlib/src/tests/queryeval/predicate/CMakeLists.txt b/searchlib/src/tests/queryeval/predicate/CMakeLists.txt
index 237509a5df7..342eb7443ef 100644
--- a/searchlib/src/tests/queryeval/predicate/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/predicate/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_predicate_blueprint_test_app TEST
SOURCES
predicate_blueprint_test.cpp
diff --git a/searchlib/src/tests/queryeval/predicate/predicate_blueprint_test.cpp b/searchlib/src/tests/queryeval/predicate/predicate_blueprint_test.cpp
index 5b8d5f5b9ce..44731bac7f6 100644
--- a/searchlib/src/tests/queryeval/predicate/predicate_blueprint_test.cpp
+++ b/searchlib/src/tests/queryeval/predicate/predicate_blueprint_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for predicate_blueprint.
#include <vespa/searchlib/attribute/attributeguard.h>
diff --git a/searchlib/src/tests/queryeval/predicate/predicate_search_test.cpp b/searchlib/src/tests/queryeval/predicate/predicate_search_test.cpp
index 382e2bdb8ff..890c73ce17c 100644
--- a/searchlib/src/tests/queryeval/predicate/predicate_search_test.cpp
+++ b/searchlib/src/tests/queryeval/predicate/predicate_search_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for predicate_search.
#include <vespa/log/log.h>
diff --git a/searchlib/src/tests/queryeval/queryeval.cpp b/searchlib/src/tests/queryeval/queryeval.cpp
index f82bfabb7c3..cdfe1cfca88 100644
--- a/searchlib/src/tests/queryeval/queryeval.cpp
+++ b/searchlib/src/tests/queryeval/queryeval.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/regex/regex.h>
diff --git a/searchlib/src/tests/queryeval/same_element/CMakeLists.txt b/searchlib/src/tests/queryeval/same_element/CMakeLists.txt
index 97034c53376..95cd82bbcbb 100644
--- a/searchlib/src/tests/queryeval/same_element/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/same_element/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_same_element_test_app TEST
SOURCES
same_element_test.cpp
diff --git a/searchlib/src/tests/queryeval/same_element/same_element_test.cpp b/searchlib/src/tests/queryeval/same_element/same_element_test.cpp
index db177b98b84..7c2b5d0b135 100644
--- a/searchlib/src/tests/queryeval/same_element/same_element_test.cpp
+++ b/searchlib/src/tests/queryeval/same_element/same_element_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchlib/src/tests/queryeval/simple_phrase/CMakeLists.txt b/searchlib/src/tests/queryeval/simple_phrase/CMakeLists.txt
index 00aec4e4e23..10b547d01bd 100644
--- a/searchlib/src/tests/queryeval/simple_phrase/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/simple_phrase/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_simple_phrase_test_app TEST
SOURCES
simple_phrase_test.cpp
diff --git a/searchlib/src/tests/queryeval/simple_phrase/simple_phrase_test.cpp b/searchlib/src/tests/queryeval/simple_phrase/simple_phrase_test.cpp
index d76f13afdca..8879d591f5a 100644
--- a/searchlib/src/tests/queryeval/simple_phrase/simple_phrase_test.cpp
+++ b/searchlib/src/tests/queryeval/simple_phrase/simple_phrase_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/queryeval/fake_result.h>
#include <vespa/searchlib/queryeval/fake_searchable.h>
diff --git a/searchlib/src/tests/queryeval/sourceblender/CMakeLists.txt b/searchlib/src/tests/queryeval/sourceblender/CMakeLists.txt
index 12ab6fd27ec..3962343060c 100644
--- a/searchlib/src/tests/queryeval/sourceblender/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/sourceblender/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_sourceblender_test_app TEST
SOURCES
sourceblender.cpp
diff --git a/searchlib/src/tests/queryeval/sourceblender/sourceblender.cpp b/searchlib/src/tests/queryeval/sourceblender/sourceblender.cpp
index 64ff8898bb0..15a277d51c6 100644
--- a/searchlib/src/tests/queryeval/sourceblender/sourceblender.cpp
+++ b/searchlib/src/tests/queryeval/sourceblender/sourceblender.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/queryeval/sourceblendersearch.h>
diff --git a/searchlib/src/tests/queryeval/sparse_vector_benchmark/CMakeLists.txt b/searchlib/src/tests/queryeval/sparse_vector_benchmark/CMakeLists.txt
index 54b417dbe20..17171d38551 100644
--- a/searchlib/src/tests/queryeval/sparse_vector_benchmark/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/sparse_vector_benchmark/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_sparse_vector_benchmark_test_app
SOURCES
sparse_vector_benchmark_test.cpp
diff --git a/searchlib/src/tests/queryeval/sparse_vector_benchmark/sparse_vector_benchmark_test.cpp b/searchlib/src/tests/queryeval/sparse_vector_benchmark/sparse_vector_benchmark_test.cpp
index 0de0815731b..e83226baf84 100644
--- a/searchlib/src/tests/queryeval/sparse_vector_benchmark/sparse_vector_benchmark_test.cpp
+++ b/searchlib/src/tests/queryeval/sparse_vector_benchmark/sparse_vector_benchmark_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include "../weak_and/rise_wand.h"
diff --git a/searchlib/src/tests/queryeval/termwise_eval/CMakeLists.txt b/searchlib/src/tests/queryeval/termwise_eval/CMakeLists.txt
index 6354f6fc4f6..6e7e730743f 100644
--- a/searchlib/src/tests/queryeval/termwise_eval/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/termwise_eval/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_termwise_eval_test_app TEST
SOURCES
termwise_eval_test.cpp
diff --git a/searchlib/src/tests/queryeval/termwise_eval/termwise_eval_test.cpp b/searchlib/src/tests/queryeval/termwise_eval/termwise_eval_test.cpp
index dee1bdb0b9a..322a36eb90a 100644
--- a/searchlib/src/tests/queryeval/termwise_eval/termwise_eval_test.cpp
+++ b/searchlib/src/tests/queryeval/termwise_eval/termwise_eval_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/stringfmt.h>
#include <vespa/searchlib/queryeval/searchiterator.h>
diff --git a/searchlib/src/tests/queryeval/weak_and/CMakeLists.txt b/searchlib/src/tests/queryeval/weak_and/CMakeLists.txt
index 8ed996cedc8..8fac61609f1 100644
--- a/searchlib/src/tests/queryeval/weak_and/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/weak_and/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_weak_and_test_app TEST
SOURCES
weak_and_test.cpp
diff --git a/searchlib/src/tests/queryeval/weak_and/parallel_weak_and_bench.cpp b/searchlib/src/tests/queryeval/weak_and/parallel_weak_and_bench.cpp
index b210c4abed8..f8306a1a7e6 100644
--- a/searchlib/src/tests/queryeval/weak_and/parallel_weak_and_bench.cpp
+++ b/searchlib/src/tests/queryeval/weak_and/parallel_weak_and_bench.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "wand_bench_setup.hpp"
TEST_FF("benchmark", VespaParallelWandFactory(1000), WandSetup(f1, 10, 10000000)) { f2.benchmark(); }
diff --git a/searchlib/src/tests/queryeval/weak_and/rise_wand.h b/searchlib/src/tests/queryeval/weak_and/rise_wand.h
index bebb6d1fbc9..87f59eb3d78 100644
--- a/searchlib/src/tests/queryeval/weak_and/rise_wand.h
+++ b/searchlib/src/tests/queryeval/weak_and/rise_wand.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/tests/queryeval/weak_and/rise_wand.hpp b/searchlib/src/tests/queryeval/weak_and/rise_wand.hpp
index 04d2c022361..2be88984e86 100644
--- a/searchlib/src/tests/queryeval/weak_and/rise_wand.hpp
+++ b/searchlib/src/tests/queryeval/weak_and/rise_wand.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/tests/queryeval/weak_and/wand_bench_setup.hpp b/searchlib/src/tests/queryeval/weak_and/wand_bench_setup.hpp
index f5aafab87c3..14de5ec6475 100644
--- a/searchlib/src/tests/queryeval/weak_and/wand_bench_setup.hpp
+++ b/searchlib/src/tests/queryeval/weak_and/wand_bench_setup.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/queryeval/andsearch.h>
#include <vespa/searchlib/queryeval/andnotsearch.h>
diff --git a/searchlib/src/tests/queryeval/weak_and/weak_and_bench.cpp b/searchlib/src/tests/queryeval/weak_and/weak_and_bench.cpp
index 02573c7b66b..8d884883786 100644
--- a/searchlib/src/tests/queryeval/weak_and/weak_and_bench.cpp
+++ b/searchlib/src/tests/queryeval/weak_and/weak_and_bench.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "wand_bench_setup.hpp"
TEST_FF("benchmark", VespaWandFactory(1000), WandSetup(f1, 10, 10000000)) { f2.benchmark(); }
diff --git a/searchlib/src/tests/queryeval/weak_and/weak_and_test.cpp b/searchlib/src/tests/queryeval/weak_and/weak_and_test.cpp
index 869fdded1ff..828538b5e8e 100644
--- a/searchlib/src/tests/queryeval/weak_and/weak_and_test.cpp
+++ b/searchlib/src/tests/queryeval/weak_and/weak_and_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/queryeval/fake_search.h>
#include <vespa/searchlib/queryeval/wand/weak_and_search.h>
diff --git a/searchlib/src/tests/queryeval/weak_and/weak_and_test_expensive.cpp b/searchlib/src/tests/queryeval/weak_and/weak_and_test_expensive.cpp
index 5a555d33420..b778a3ac7e3 100644
--- a/searchlib/src/tests/queryeval/weak_and/weak_and_test_expensive.cpp
+++ b/searchlib/src/tests/queryeval/weak_and/weak_and_test_expensive.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "wand_bench_setup.hpp"
using namespace rise;
diff --git a/searchlib/src/tests/queryeval/weak_and_heap/CMakeLists.txt b/searchlib/src/tests/queryeval/weak_and_heap/CMakeLists.txt
index 896059d9dfd..ab5b65a74b4 100644
--- a/searchlib/src/tests/queryeval/weak_and_heap/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/weak_and_heap/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_weak_and_heap_test_app TEST
SOURCES
weak_and_heap_test.cpp
diff --git a/searchlib/src/tests/queryeval/weak_and_heap/weak_and_heap_test.cpp b/searchlib/src/tests/queryeval/weak_and_heap/weak_and_heap_test.cpp
index 54ce4637c4d..42d40367b03 100644
--- a/searchlib/src/tests/queryeval/weak_and_heap/weak_and_heap_test.cpp
+++ b/searchlib/src/tests/queryeval/weak_and_heap/weak_and_heap_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/queryeval/wand/weak_and_heap.h>
diff --git a/searchlib/src/tests/queryeval/weak_and_scorers/CMakeLists.txt b/searchlib/src/tests/queryeval/weak_and_scorers/CMakeLists.txt
index b453bbec34b..4fcce5b145e 100644
--- a/searchlib/src/tests/queryeval/weak_and_scorers/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/weak_and_scorers/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_weak_and_scorers_test_app TEST
SOURCES
weak_and_scorers_test.cpp
diff --git a/searchlib/src/tests/queryeval/weak_and_scorers/weak_and_scorers_test.cpp b/searchlib/src/tests/queryeval/weak_and_scorers/weak_and_scorers_test.cpp
index a9999c2eafd..d94fd12e532 100644
--- a/searchlib/src/tests/queryeval/weak_and_scorers/weak_and_scorers_test.cpp
+++ b/searchlib/src/tests/queryeval/weak_and_scorers/weak_and_scorers_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/fef/termfieldmatchdata.h>
#include <vespa/searchlib/queryeval/searchiterator.h>
diff --git a/searchlib/src/tests/queryeval/weighted_set_term/CMakeLists.txt b/searchlib/src/tests/queryeval/weighted_set_term/CMakeLists.txt
index dc02981258b..9b9f0e588cc 100644
--- a/searchlib/src/tests/queryeval/weighted_set_term/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/weighted_set_term/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_weighted_set_term_test_app TEST
SOURCES
weighted_set_term_test.cpp
diff --git a/searchlib/src/tests/queryeval/weighted_set_term/weighted_set_term_test.cpp b/searchlib/src/tests/queryeval/weighted_set_term/weighted_set_term_test.cpp
index 95553f68cbc..229c8b9501c 100644
--- a/searchlib/src/tests/queryeval/weighted_set_term/weighted_set_term_test.cpp
+++ b/searchlib/src/tests/queryeval/weighted_set_term/weighted_set_term_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/queryeval/weighted_set_term_search.h>
diff --git a/searchlib/src/tests/queryeval/wrappers/CMakeLists.txt b/searchlib/src/tests/queryeval/wrappers/CMakeLists.txt
index d424ac3048f..cfc385c1998 100644
--- a/searchlib/src/tests/queryeval/wrappers/CMakeLists.txt
+++ b/searchlib/src/tests/queryeval/wrappers/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_wrappers_test_app TEST
SOURCES
diff --git a/searchlib/src/tests/queryeval/wrappers/wrappers_test.cpp b/searchlib/src/tests/queryeval/wrappers/wrappers_test.cpp
index 62bff93ab0e..aaa9cb50f41 100644
--- a/searchlib/src/tests/queryeval/wrappers/wrappers_test.cpp
+++ b/searchlib/src/tests/queryeval/wrappers/wrappers_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/queryeval/filter_wrapper.h>
#include <vespa/searchlib/queryeval/booleanmatchiteratorwrapper.h>
diff --git a/searchlib/src/tests/rankingexpression/feature_name_extractor/CMakeLists.txt b/searchlib/src/tests/rankingexpression/feature_name_extractor/CMakeLists.txt
deleted file mode 100644
index a2e153c7527..00000000000
--- a/searchlib/src/tests/rankingexpression/feature_name_extractor/CMakeLists.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-vespa_add_executable(searchlib_feature_name_extractor_test_app TEST
- SOURCES
- feature_name_extractor_test.cpp
- DEPENDS
- searchlib
-)
-vespa_add_test(NAME searchlib_feature_name_extractor_test_app COMMAND searchlib_feature_name_extractor_test_app)
diff --git a/searchlib/src/tests/rankingexpression/intrinsic_blueprint_adapter/CMakeLists.txt b/searchlib/src/tests/rankingexpression/intrinsic_blueprint_adapter/CMakeLists.txt
index d8d6ebe0504..e6269c6059a 100644
--- a/searchlib/src/tests/rankingexpression/intrinsic_blueprint_adapter/CMakeLists.txt
+++ b/searchlib/src/tests/rankingexpression/intrinsic_blueprint_adapter/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_intrinsic_blueprint_adapter_test_app TEST
SOURCES
intrinsic_blueprint_adapter_test.cpp
diff --git a/searchlib/src/tests/rankingexpression/intrinsic_blueprint_adapter/intrinsic_blueprint_adapter_test.cpp b/searchlib/src/tests/rankingexpression/intrinsic_blueprint_adapter/intrinsic_blueprint_adapter_test.cpp
index 9394cf085fc..d339fcee3a2 100644
--- a/searchlib/src/tests/rankingexpression/intrinsic_blueprint_adapter/intrinsic_blueprint_adapter_test.cpp
+++ b/searchlib/src/tests/rankingexpression/intrinsic_blueprint_adapter/intrinsic_blueprint_adapter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/fef/blueprint.h>
diff --git a/searchlib/src/tests/rankingexpression/rankingexpressionlist b/searchlib/src/tests/rankingexpression/rankingexpressionlist
index 77b2294c668..d41570732d9 100644
--- a/searchlib/src/tests/rankingexpression/rankingexpressionlist
+++ b/searchlib/src/tests/rankingexpression/rankingexpressionlist
@@ -87,6 +87,7 @@ floor(10)
relu(10)
sigmoid(10)
atan2(10, 20); atan2(10,20)
+hamming(42, -16); hamming(42,-16)
ldexp(10, 20); ldexp(10,20)
pow(10, 20); pow(10,20)
fmod(10, 20); fmod(10,20)
diff --git a/searchlib/src/tests/ranksetup/CMakeLists.txt b/searchlib/src/tests/ranksetup/CMakeLists.txt
index da1f9d89434..50aafacbe9c 100644
--- a/searchlib/src/tests/ranksetup/CMakeLists.txt
+++ b/searchlib/src/tests/ranksetup/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_ranksetup_test_app TEST
SOURCES
ranksetup_test.cpp
diff --git a/searchlib/src/tests/ranksetup/ranksetup_test.cpp b/searchlib/src/tests/ranksetup/ranksetup_test.cpp
index 669a421d6d3..3d2b5a620de 100644
--- a/searchlib/src/tests/ranksetup/ranksetup_test.cpp
+++ b/searchlib/src/tests/ranksetup/ranksetup_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchlib/src/tests/ranksetup/verify_feature/CMakeLists.txt b/searchlib/src/tests/ranksetup/verify_feature/CMakeLists.txt
index 49fe690121c..a399f6560a0 100644
--- a/searchlib/src/tests/ranksetup/verify_feature/CMakeLists.txt
+++ b/searchlib/src/tests/ranksetup/verify_feature/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_verify_feature_test_app TEST
SOURCES
verify_feature_test.cpp
diff --git a/searchlib/src/tests/ranksetup/verify_feature/verify_feature_test.cpp b/searchlib/src/tests/ranksetup/verify_feature/verify_feature_test.cpp
index d8a821f1b3a..24358db8f3a 100644
--- a/searchlib/src/tests/ranksetup/verify_feature/verify_feature_test.cpp
+++ b/searchlib/src/tests/ranksetup/verify_feature/verify_feature_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/fef/fef.h>
#include <vespa/searchlib/fef/test/indexenvironment.h>
diff --git a/searchlib/src/tests/sort/CMakeLists.txt b/searchlib/src/tests/sort/CMakeLists.txt
index 6c11a16197f..c59b3a4d8af 100644
--- a/searchlib/src/tests/sort/CMakeLists.txt
+++ b/searchlib/src/tests/sort/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_sortbenchmark_app
SOURCES
sortbenchmark.cpp
diff --git a/searchlib/src/tests/sort/sort_test.cpp b/searchlib/src/tests/sort/sort_test.cpp
index 1c9ea0efda0..54a3542e82b 100644
--- a/searchlib/src/tests/sort/sort_test.cpp
+++ b/searchlib/src/tests/sort/sort_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/common/sort.h>
#include <vespa/searchlib/common/sortspec.h>
diff --git a/searchlib/src/tests/sort/sortbenchmark.cpp b/searchlib/src/tests/sort/sortbenchmark.cpp
index 1bba5cc8e78..59d5f16d980 100644
--- a/searchlib/src/tests/sort/sortbenchmark.cpp
+++ b/searchlib/src/tests/sort/sortbenchmark.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/common/sort.h>
#include <vespa/vespalib/util/array.h>
diff --git a/searchlib/src/tests/sort/uca.cpp b/searchlib/src/tests/sort/uca.cpp
index d7a2f66c2d8..8f6aff6a887 100644
--- a/searchlib/src/tests/sort/uca.cpp
+++ b/searchlib/src/tests/sort/uca.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/common/sort.h>
#include <vespa/searchlib/common/sortspec.h>
diff --git a/searchlib/src/tests/sortresults/CMakeLists.txt b/searchlib/src/tests/sortresults/CMakeLists.txt
index cb0f4caa1f4..345d2ccb186 100644
--- a/searchlib/src/tests/sortresults/CMakeLists.txt
+++ b/searchlib/src/tests/sortresults/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_sortresults_app TEST
SOURCES
sorttest.cpp
diff --git a/searchlib/src/tests/sortresults/sorttest.cpp b/searchlib/src/tests/sortresults/sorttest.cpp
index d6794637351..cd892800ca5 100644
--- a/searchlib/src/tests/sortresults/sorttest.cpp
+++ b/searchlib/src/tests/sortresults/sorttest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/common/bitvector.h>
#include <vespa/searchlib/common/sortresults.h>
diff --git a/searchlib/src/tests/sortspec/CMakeLists.txt b/searchlib/src/tests/sortspec/CMakeLists.txt
index 8782ce5004c..5ebaa22f154 100644
--- a/searchlib/src/tests/sortspec/CMakeLists.txt
+++ b/searchlib/src/tests/sortspec/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_multilevelsort_test_app TEST
SOURCES
multilevelsort.cpp
diff --git a/searchlib/src/tests/sortspec/multilevelsort.cpp b/searchlib/src/tests/sortspec/multilevelsort.cpp
index 06a54f462d3..f438fce0e7f 100644
--- a/searchlib/src/tests/sortspec/multilevelsort.cpp
+++ b/searchlib/src/tests/sortspec/multilevelsort.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/common/sortresults.h>
#include <vespa/searchlib/attribute/attribute.h>
diff --git a/searchlib/src/tests/stringenum/CMakeLists.txt b/searchlib/src/tests/stringenum/CMakeLists.txt
index 88ac34fd71c..d9c5a133c88 100644
--- a/searchlib/src/tests/stringenum/CMakeLists.txt
+++ b/searchlib/src/tests/stringenum/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_stringenum_test_app TEST
SOURCES
stringenum_test.cpp
diff --git a/searchlib/src/tests/stringenum/stringenum_test.cpp b/searchlib/src/tests/stringenum/stringenum_test.cpp
index a40c009e543..15ec1862338 100644
--- a/searchlib/src/tests/stringenum/stringenum_test.cpp
+++ b/searchlib/src/tests/stringenum/stringenum_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("stringenum");
diff --git a/searchlib/src/tests/tensor/dense_tensor_store/CMakeLists.txt b/searchlib/src/tests/tensor/dense_tensor_store/CMakeLists.txt
index 30779e1d009..5b78567744b 100644
--- a/searchlib/src/tests/tensor/dense_tensor_store/CMakeLists.txt
+++ b/searchlib/src/tests/tensor/dense_tensor_store/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_dense_tensor_store_test_app TEST
SOURCES
dense_tensor_store_test.cpp
diff --git a/searchlib/src/tests/tensor/dense_tensor_store/dense_tensor_store_test.cpp b/searchlib/src/tests/tensor/dense_tensor_store/dense_tensor_store_test.cpp
index eb8d89edc07..032960c3799 100644
--- a/searchlib/src/tests/tensor/dense_tensor_store/dense_tensor_store_test.cpp
+++ b/searchlib/src/tests/tensor/dense_tensor_store/dense_tensor_store_test.cpp
@@ -1,5 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <vespa/log/log.h>
+LOG_SETUP("dense_tensor_store_test");
#include <vespa/vespalib/testkit/test_kit.h>
+#include <vespa/vespalib/util/memory_allocator.h>
#include <vespa/searchlib/tensor/dense_tensor_store.h>
#include <vespa/eval/eval/simple_value.h>
#include <vespa/eval/eval/tensor_spec.h>
@@ -7,9 +10,6 @@
#include <vespa/eval/eval/value_type.h>
#include <vespa/eval/eval/test/value_compare.h>
-#include <vespa/log/log.h>
-LOG_SETUP("dense_tensor_store_test");
-
using search::tensor::DenseTensorStore;
using vespalib::eval::SimpleValue;
using vespalib::eval::TensorSpec;
@@ -28,7 +28,7 @@ struct Fixture
{
DenseTensorStore store;
Fixture(const vespalib::string &tensorType)
- : store(ValueType::from_spec(tensorType))
+ : store(ValueType::from_spec(tensorType), {})
{}
void assertSetAndGetTensor(const TensorSpec &tensorSpec) {
Value::UP expTensor = makeTensor(tensorSpec);
diff --git a/searchlib/src/tests/tensor/direct_tensor_store/CMakeLists.txt b/searchlib/src/tests/tensor/direct_tensor_store/CMakeLists.txt
index 14a70f25e3c..66913206703 100644
--- a/searchlib/src/tests/tensor/direct_tensor_store/CMakeLists.txt
+++ b/searchlib/src/tests/tensor/direct_tensor_store/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_direct_tensor_store_test_app TEST
SOURCES
direct_tensor_store_test.cpp
diff --git a/searchlib/src/tests/tensor/direct_tensor_store/direct_tensor_store_test.cpp b/searchlib/src/tests/tensor/direct_tensor_store/direct_tensor_store_test.cpp
index f5160e4b879..1574e7d38f1 100644
--- a/searchlib/src/tests/tensor/direct_tensor_store/direct_tensor_store_test.cpp
+++ b/searchlib/src/tests/tensor/direct_tensor_store/direct_tensor_store_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/tensor/direct_tensor_store.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/searchlib/src/tests/tensor/distance_functions/CMakeLists.txt b/searchlib/src/tests/tensor/distance_functions/CMakeLists.txt
index a6ef42931b1..7b38be77818 100644
--- a/searchlib/src/tests/tensor/distance_functions/CMakeLists.txt
+++ b/searchlib/src/tests/tensor/distance_functions/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_distance_functions_test_app TEST
SOURCES
distance_functions_test.cpp
diff --git a/searchlib/src/tests/tensor/distance_functions/distance_functions_test.cpp b/searchlib/src/tests/tensor/distance_functions/distance_functions_test.cpp
index 6e88cf5a115..a54f981352b 100644
--- a/searchlib/src/tests/tensor/distance_functions/distance_functions_test.cpp
+++ b/searchlib/src/tests/tensor/distance_functions/distance_functions_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/typed_cells.h>
#include <vespa/searchlib/tensor/distance_functions.h>
diff --git a/searchlib/src/tests/tensor/hnsw_index/hnsw_index_test.cpp b/searchlib/src/tests/tensor/hnsw_index/hnsw_index_test.cpp
index 3f7ec140781..9e7f082e237 100644
--- a/searchlib/src/tests/tensor/hnsw_index/hnsw_index_test.cpp
+++ b/searchlib/src/tests/tensor/hnsw_index/hnsw_index_test.cpp
@@ -1,5 +1,6 @@
// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <vespa/searchcommon/common/compaction_strategy.h>
#include <vespa/searchlib/common/bitvector.h>
#include <vespa/searchlib/tensor/distance_functions.h>
#include <vespa/searchlib/tensor/doc_vector_access.h>
@@ -20,7 +21,7 @@ using namespace search::tensor;
using namespace vespalib::slime;
using vespalib::Slime;
using search::BitVector;
-
+using search::CompactionStrategy;
template <typename FloatType>
class MyDocVectorAccess : public DocVectorAccess {
@@ -42,6 +43,8 @@ public:
ArrayRef ref(_vectors[docid]);
return vespalib::eval::TypedCells(ref);
}
+
+ void clear() { _vectors.clear(); }
};
struct LevelGenerator : public RandomLevelGenerator {
@@ -111,6 +114,10 @@ public:
MemoryUsage memory_usage() const {
return index->memory_usage();
}
+ MemoryUsage commit_and_update_stat() {
+ commit();
+ return index->update_stat();
+ }
void expect_entry_point(uint32_t exp_docid, uint32_t exp_level) {
EXPECT_EQ(exp_docid, index->get_entry_docid());
EXPECT_EQ(exp_level, index->get_entry_level());
@@ -166,6 +173,8 @@ public:
docid, hit.docid, hit.distance, thr);
}
}
+
+ FloatVectors& get_vectors() { return vectors; }
};
@@ -533,6 +542,113 @@ TEST_F(HnswIndexTest, shrink_called_heuristic)
EXPECT_TRUE(index->check_link_symmetry());
}
+namespace {
+
+template <class ResultGraph>
+ResultGraph
+make_graph_helper(HnswIndex& index)
+{
+ using LevelArrayRef = HnswGraph::LevelArrayRef;
+ using LinkArrayRef = HnswGraph::LinkArrayRef;
+ auto& graph = index.get_graph();
+ ResultGraph result(graph.size());
+ assert(!graph.get_node_ref(0).valid());
+ for (uint32_t doc_id = 1; doc_id < graph.size(); ++doc_id) {
+ auto& node = result[doc_id];
+ auto node_ref = graph.get_node_ref(doc_id);
+ if constexpr (std::is_same_v<std::remove_reference_t<decltype(node)>, uint32_t>) {
+ node = node_ref.ref();
+ } else {
+ LevelArrayRef level_array(graph.get_level_array(node_ref));
+ for (uint32_t level = 0; level < level_array.size(); ++level) {
+ if constexpr (std::is_same_v<std::remove_reference_t<decltype(node)>, std::vector<uint32_t>>) {
+ node.emplace_back(level_array[level].load_relaxed().ref());
+ } else {
+ LinkArrayRef link_array(graph.get_link_array(level_array, level));
+ node.emplace_back(std::vector<uint32_t>(link_array.begin(), link_array.end()));
+ }
+ }
+ }
+ }
+ return result;
+}
+
+using LinkGraph = std::vector<std::vector<std::vector<uint32_t>>>;
+
+LinkGraph
+make_link_graph(HnswIndex& index)
+{
+ return make_graph_helper<LinkGraph>(index);
+}
+
+using LinkArrayRefGraph = std::vector<std::vector<uint32_t>>;
+
+LinkArrayRefGraph
+make_link_array_refs(HnswIndex& index)
+{
+ return make_graph_helper<LinkArrayRefGraph>(index);
+}
+
+using LevelArrayRefGraph = std::vector<uint32_t>;
+
+LevelArrayRefGraph
+make_level_array_refs(HnswIndex& index)
+{
+ return make_graph_helper<LevelArrayRefGraph>(index);
+}
+
+}
+
+TEST_F(HnswIndexTest, hnsw_graph_is_compacted)
+{
+ init(true);
+ get_vectors().clear();
+ uint32_t doc_id = 1;
+ for (uint32_t x = 0; x < 100; ++x) {
+ for (uint32_t y = 0; y < 50; ++y) {
+ get_vectors().set(doc_id, { float(x), float(y) });
+ ++doc_id;
+ }
+ }
+ uint32_t doc_id_end = doc_id;
+ for (doc_id = 1; doc_id < doc_id_end; ++doc_id) {
+ add_document(doc_id);
+ }
+ for (doc_id = 10; doc_id < doc_id_end; ++doc_id) {
+ remove_document(doc_id);
+ }
+ auto mem_1 = commit_and_update_stat();
+ auto link_graph_1 = make_link_graph(*index);
+ auto link_array_refs_1 = make_link_array_refs(*index);
+ auto level_array_refs_1 = make_level_array_refs(*index);
+ // Normal compaction
+ EXPECT_TRUE(index->consider_compact(CompactionStrategy()));
+ auto mem_2 = commit_and_update_stat();
+ EXPECT_LT(mem_2.usedBytes(), mem_1.usedBytes());
+ for (uint32_t i = 0; i < 10; ++i) {
+ mem_1 = mem_2;
+ // Forced compaction to move things around
+ index->compact_link_arrays(true, false);
+ index->compact_level_arrays(true, false);
+ commit();
+ index->update_stat();
+ mem_2 = commit_and_update_stat();
+ EXPECT_LE(mem_2.usedBytes(), mem_1.usedBytes());
+ if (mem_2.usedBytes() == mem_1.usedBytes()) {
+ break;
+ }
+ }
+ auto link_graph_2 = make_link_graph(*index);
+ auto link_array_refs_2 = make_link_array_refs(*index);
+ auto level_array_refs_2 = make_level_array_refs(*index);
+ EXPECT_EQ(link_graph_1, link_graph_2);
+ EXPECT_NE(link_array_refs_1, link_array_refs_2);
+ EXPECT_NE(level_array_refs_1, level_array_refs_2);
+ index->shrink_lid_space(10);
+ auto mem_3 = commit_and_update_stat();
+ EXPECT_LT(mem_3.usedBytes(), mem_2.usedBytes());
+}
+
TEST(LevelGeneratorTest, gives_various_levels)
{
InvLogLevelGenerator generator(4);
diff --git a/searchlib/src/tests/tensor/hnsw_index/stress_hnsw_mt.cpp b/searchlib/src/tests/tensor/hnsw_index/stress_hnsw_mt.cpp
index 154950822ee..d559fa592ad 100644
--- a/searchlib/src/tests/tensor/hnsw_index/stress_hnsw_mt.cpp
+++ b/searchlib/src/tests/tensor/hnsw_index/stress_hnsw_mt.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <fcntl.h>
#include <cstdio>
diff --git a/searchlib/src/tests/tensor/hnsw_saver/CMakeLists.txt b/searchlib/src/tests/tensor/hnsw_saver/CMakeLists.txt
index 7f58c9e5e5d..e603f890ac9 100644
--- a/searchlib/src/tests/tensor/hnsw_saver/CMakeLists.txt
+++ b/searchlib/src/tests/tensor/hnsw_saver/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_hnsw_save_load_test_app TEST
SOURCES
hnsw_save_load_test.cpp
diff --git a/searchlib/src/tests/tensor/hnsw_saver/hnsw_save_load_test.cpp b/searchlib/src/tests/tensor/hnsw_saver/hnsw_save_load_test.cpp
index 2db6437664e..43ff6f5b83b 100644
--- a/searchlib/src/tests/tensor/hnsw_saver/hnsw_save_load_test.cpp
+++ b/searchlib/src/tests/tensor/hnsw_saver/hnsw_save_load_test.cpp
@@ -1,8 +1,8 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/tensor/hnsw_graph.h>
#include <vespa/searchlib/tensor/hnsw_index_saver.h>
-#include <vespa/searchlib/tensor/hnsw_index_loader.h>
+#include <vespa/searchlib/tensor/hnsw_index_loader.hpp>
#include <vespa/searchlib/util/bufferwriter.h>
#include <vespa/searchlib/util/fileutil.h>
#include <vespa/vespalib/gtest/gtest.h>
@@ -32,6 +32,22 @@ public:
}
};
+class VectorBufferReader {
+private:
+ const std::vector<char>& _data;
+ size_t _pos;
+
+public:
+ VectorBufferReader(const std::vector<char>& data) : _data(data), _pos(0) {}
+ uint32_t readHostOrder() {
+ uint32_t result = 0;
+ assert(_pos + sizeof(uint32_t) <= _data.size());
+ std::memcpy(&result, _data.data() + _pos, sizeof(uint32_t));
+ _pos += sizeof(uint32_t);
+ return result;
+ }
+};
+
using V = std::vector<uint32_t>;
void populate(HnswGraph &graph) {
@@ -103,9 +119,8 @@ public:
return vector_writer.output;
}
void load_copy(std::vector<char> data) {
- HnswIndexLoader loader(copy);
- LoadedBuffer buffer(&data[0], data.size());
- loader.load(buffer);
+ HnswIndexLoader<VectorBufferReader> loader(copy, std::make_unique<VectorBufferReader>(data));
+ while (loader.load_next()) {}
}
void expect_copy_as_populated() const {
diff --git a/searchlib/src/tests/transactionlog/CMakeLists.txt b/searchlib/src/tests/transactionlog/CMakeLists.txt
index 32e9fa3acaa..b09271eefe2 100644
--- a/searchlib/src/tests/transactionlog/CMakeLists.txt
+++ b/searchlib/src/tests/transactionlog/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_translogclient_test_app TEST
SOURCES
translogclient_test.cpp
diff --git a/searchlib/src/tests/transactionlog/chunks_test.cpp b/searchlib/src/tests/transactionlog/chunks_test.cpp
index aeee8a7a374..8d6620c9f8b 100644
--- a/searchlib/src/tests/transactionlog/chunks_test.cpp
+++ b/searchlib/src/tests/transactionlog/chunks_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/transactionlog/chunks.h>
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchlib/src/tests/transactionlog/translogclient_test.cpp b/searchlib/src/tests/transactionlog/translogclient_test.cpp
index fd598eb2d31..ab5d432ddfb 100644
--- a/searchlib/src/tests/transactionlog/translogclient_test.cpp
+++ b/searchlib/src/tests/transactionlog/translogclient_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/transactionlog/translogclient.h>
#include <vespa/searchlib/transactionlog/translogserver.h>
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchlib/src/tests/transactionlog/translogclient_test.sh b/searchlib/src/tests/transactionlog/translogclient_test.sh
index 46d43ddd718..50d7c73fd6a 100755
--- a/searchlib/src/tests/transactionlog/translogclient_test.sh
+++ b/searchlib/src/tests/transactionlog/translogclient_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
rm -rf test7 test8 test9 test10 test11 test12 test13 testremove
$VALGRIND ./searchlib_translogclient_test_app
diff --git a/searchlib/src/tests/transactionlogstress/CMakeLists.txt b/searchlib/src/tests/transactionlogstress/CMakeLists.txt
index 4ea55db41ab..9b75e928901 100644
--- a/searchlib/src/tests/transactionlogstress/CMakeLists.txt
+++ b/searchlib/src/tests/transactionlogstress/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_translogstress_app
SOURCES
translogstress.cpp
diff --git a/searchlib/src/tests/transactionlogstress/translogstress.cpp b/searchlib/src/tests/transactionlogstress/translogstress.cpp
index 96772a0ee00..6c0f312f0fb 100644
--- a/searchlib/src/tests/transactionlogstress/translogstress.cpp
+++ b/searchlib/src/tests/transactionlogstress/translogstress.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/buffer.h>
#include <vespa/vespalib/util/stringfmt.h>
#include <vespa/searchlib/transactionlog/translogserver.h>
diff --git a/searchlib/src/tests/transactionlogstress/translogstress_test.sh b/searchlib/src/tests/transactionlogstress/translogstress_test.sh
index 54e7506c62a..726bb65fdcb 100755
--- a/searchlib/src/tests/transactionlogstress/translogstress_test.sh
+++ b/searchlib/src/tests/transactionlogstress/translogstress_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
rm -rf server
diff --git a/searchlib/src/tests/true/CMakeLists.txt b/searchlib/src/tests/true/CMakeLists.txt
index 65bffc874b6..a2856f3391e 100644
--- a/searchlib/src/tests/true/CMakeLists.txt
+++ b/searchlib/src/tests/true/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_true_test_app TEST
SOURCES
true.cpp
diff --git a/searchlib/src/tests/true/true.cpp b/searchlib/src/tests/true/true.cpp
index 7447b4a7a7d..8dee60ddd40 100644
--- a/searchlib/src/tests/true/true.cpp
+++ b/searchlib/src/tests/true/true.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("true_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/searchlib/src/tests/url/CMakeLists.txt b/searchlib/src/tests/url/CMakeLists.txt
index 6f4380ae2ea..5352a04fea1 100644
--- a/searchlib/src/tests/url/CMakeLists.txt
+++ b/searchlib/src/tests/url/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_testurl_app TEST
SOURCES
testurl.cpp
diff --git a/searchlib/src/tests/url/dotest.sh b/searchlib/src/tests/url/dotest.sh
index 9ec19bf8792..ce97b427a2d 100755
--- a/searchlib/src/tests/url/dotest.sh
+++ b/searchlib/src/tests/url/dotest.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
# Run test
diff --git a/searchlib/src/tests/url/testurl.cpp b/searchlib/src/tests/url/testurl.cpp
index 207f77825c5..64a3827495a 100644
--- a/searchlib/src/tests/url/testurl.cpp
+++ b/searchlib/src/tests/url/testurl.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/util/url.h>
#include <cstdio>
diff --git a/searchlib/src/tests/util/CMakeLists.txt b/searchlib/src/tests/util/CMakeLists.txt
index 04e6d0953bb..d56407645aa 100644
--- a/searchlib/src/tests/util/CMakeLists.txt
+++ b/searchlib/src/tests/util/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_rawbuf_test_app TEST
SOURCES
rawbuf_test.cpp
diff --git a/searchlib/src/tests/util/bufferwriter/CMakeLists.txt b/searchlib/src/tests/util/bufferwriter/CMakeLists.txt
index 406dddb9a05..e13c3a7e617 100644
--- a/searchlib/src/tests/util/bufferwriter/CMakeLists.txt
+++ b/searchlib/src/tests/util/bufferwriter/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_bufferwriter_test_app TEST
SOURCES
bufferwriter_test.cpp
diff --git a/searchlib/src/tests/util/bufferwriter/bufferwriter_test.cpp b/searchlib/src/tests/util/bufferwriter/bufferwriter_test.cpp
index 04addfa19f6..840e2f1f419 100644
--- a/searchlib/src/tests/util/bufferwriter/bufferwriter_test.cpp
+++ b/searchlib/src/tests/util/bufferwriter/bufferwriter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/stllike/string.h>
diff --git a/searchlib/src/tests/util/rawbuf_test.cpp b/searchlib/src/tests/util/rawbuf_test.cpp
index db455a86115..e24314336af 100644
--- a/searchlib/src/tests/util/rawbuf_test.cpp
+++ b/searchlib/src/tests/util/rawbuf_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for rawbuf.
#include <vespa/searchlib/util/rawbuf.h>
diff --git a/searchlib/src/tests/util/searchable_stats/CMakeLists.txt b/searchlib/src/tests/util/searchable_stats/CMakeLists.txt
index 786c316eb4f..3f0806fd23e 100644
--- a/searchlib/src/tests/util/searchable_stats/CMakeLists.txt
+++ b/searchlib/src/tests/util/searchable_stats/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_searchable_stats_test_app TEST
SOURCES
searchable_stats_test.cpp
diff --git a/searchlib/src/tests/util/searchable_stats/searchable_stats_test.cpp b/searchlib/src/tests/util/searchable_stats/searchable_stats_test.cpp
index 7f53eaddea5..b89324c71f5 100644
--- a/searchlib/src/tests/util/searchable_stats/searchable_stats_test.cpp
+++ b/searchlib/src/tests/util/searchable_stats/searchable_stats_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/util/searchable_stats.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/searchlib/src/tests/util/slime_output_raw_buf_adapter/CMakeLists.txt b/searchlib/src/tests/util/slime_output_raw_buf_adapter/CMakeLists.txt
index 3aa5e001d7b..3f759be25c8 100644
--- a/searchlib/src/tests/util/slime_output_raw_buf_adapter/CMakeLists.txt
+++ b/searchlib/src/tests/util/slime_output_raw_buf_adapter/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_slime_output_raw_buf_adapter_test_app TEST
SOURCES
slime_output_raw_buf_adapter_test.cpp
diff --git a/searchlib/src/tests/util/slime_output_raw_buf_adapter/slime_output_raw_buf_adapter_test.cpp b/searchlib/src/tests/util/slime_output_raw_buf_adapter/slime_output_raw_buf_adapter_test.cpp
index c8231ac4b29..3687bc8d0f7 100644
--- a/searchlib/src/tests/util/slime_output_raw_buf_adapter/slime_output_raw_buf_adapter_test.cpp
+++ b/searchlib/src/tests/util/slime_output_raw_buf_adapter/slime_output_raw_buf_adapter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/util/slime_output_raw_buf_adapter.h>
#include <vespa/vespalib/data/slime/slime.h>
diff --git a/searchlib/src/tests/vespa-fileheader-inspect/CMakeLists.txt b/searchlib/src/tests/vespa-fileheader-inspect/CMakeLists.txt
index 642acb538dc..a758279a75b 100644
--- a/searchlib/src/tests/vespa-fileheader-inspect/CMakeLists.txt
+++ b/searchlib/src/tests/vespa-fileheader-inspect/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchlib_vespa-fileheader-inspect_test_app TEST
SOURCES
vespa-fileheader-inspect_test.cpp
diff --git a/searchlib/src/tests/vespa-fileheader-inspect/vespa-fileheader-inspect_test.cpp b/searchlib/src/tests/vespa-fileheader-inspect/vespa-fileheader-inspect_test.cpp
index f9306bc5fbf..15c7e114761 100644
--- a/searchlib/src/tests/vespa-fileheader-inspect/vespa-fileheader-inspect_test.cpp
+++ b/searchlib/src/tests/vespa-fileheader-inspect/vespa-fileheader-inspect_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/util/fileheadertk.h>
diff --git a/searchlib/src/vespa/searchlib/CMakeLists.txt b/searchlib/src/vespa/searchlib/CMakeLists.txt
index 4a255a8f63a..dac40e0ab5f 100644
--- a/searchlib/src/vespa/searchlib/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib
SOURCES
$<TARGET_OBJECTS:searchlib_aggregation>
diff --git a/searchlib/src/vespa/searchlib/aggregation/CMakeLists.txt b/searchlib/src/vespa/searchlib/aggregation/CMakeLists.txt
index da2be2948e7..07c74169ae6 100644
--- a/searchlib/src/vespa/searchlib/aggregation/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/aggregation/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_aggregation OBJECT
SOURCES
aggregation.cpp
diff --git a/searchlib/src/vespa/searchlib/aggregation/aggregation.cpp b/searchlib/src/vespa/searchlib/aggregation/aggregation.cpp
index 45cffde8a8c..f78547b5b68 100644
--- a/searchlib/src/vespa/searchlib/aggregation/aggregation.cpp
+++ b/searchlib/src/vespa/searchlib/aggregation/aggregation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "aggregation.h"
#include "expressioncountaggregationresult.h"
diff --git a/searchlib/src/vespa/searchlib/aggregation/aggregation.h b/searchlib/src/vespa/searchlib/aggregation/aggregation.h
index 8ca256460b9..5639520b3c8 100644
--- a/searchlib/src/vespa/searchlib/aggregation/aggregation.h
+++ b/searchlib/src/vespa/searchlib/aggregation/aggregation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "countaggregationresult.h"
diff --git a/searchlib/src/vespa/searchlib/aggregation/aggregationresult.h b/searchlib/src/vespa/searchlib/aggregation/aggregationresult.h
index 8587511497f..35df257649e 100644
--- a/searchlib/src/vespa/searchlib/aggregation/aggregationresult.h
+++ b/searchlib/src/vespa/searchlib/aggregation/aggregationresult.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/expression/expressiontree.h>
diff --git a/searchlib/src/vespa/searchlib/aggregation/averageaggregationresult.h b/searchlib/src/vespa/searchlib/aggregation/averageaggregationresult.h
index 96c6c34796a..f95d05ee7fd 100644
--- a/searchlib/src/vespa/searchlib/aggregation/averageaggregationresult.h
+++ b/searchlib/src/vespa/searchlib/aggregation/averageaggregationresult.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "aggregationresult.h"
diff --git a/searchlib/src/vespa/searchlib/aggregation/countaggregationresult.h b/searchlib/src/vespa/searchlib/aggregation/countaggregationresult.h
index 4c70011f1f7..2b0844f60d3 100644
--- a/searchlib/src/vespa/searchlib/aggregation/countaggregationresult.h
+++ b/searchlib/src/vespa/searchlib/aggregation/countaggregationresult.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "aggregationresult.h"
diff --git a/searchlib/src/vespa/searchlib/aggregation/expressioncountaggregationresult.h b/searchlib/src/vespa/searchlib/aggregation/expressioncountaggregationresult.h
index 5d534df8cda..d565dc96374 100644
--- a/searchlib/src/vespa/searchlib/aggregation/expressioncountaggregationresult.h
+++ b/searchlib/src/vespa/searchlib/aggregation/expressioncountaggregationresult.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/aggregation/forcelink.hpp b/searchlib/src/vespa/searchlib/aggregation/forcelink.hpp
index 1b65e85ec67..7b4c5ebc112 100644
--- a/searchlib/src/vespa/searchlib/aggregation/forcelink.hpp
+++ b/searchlib/src/vespa/searchlib/aggregation/forcelink.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
void forcelink_file_searchlib_aggregation_grouping();
diff --git a/searchlib/src/vespa/searchlib/aggregation/fs4hit.cpp b/searchlib/src/vespa/searchlib/aggregation/fs4hit.cpp
index a0f938974a7..a3d8caf0128 100644
--- a/searchlib/src/vespa/searchlib/aggregation/fs4hit.cpp
+++ b/searchlib/src/vespa/searchlib/aggregation/fs4hit.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fs4hit.h"
#include <vespa/vespalib/objects/visit.h>
diff --git a/searchlib/src/vespa/searchlib/aggregation/fs4hit.h b/searchlib/src/vespa/searchlib/aggregation/fs4hit.h
index 9611899334d..135bbe44887 100644
--- a/searchlib/src/vespa/searchlib/aggregation/fs4hit.h
+++ b/searchlib/src/vespa/searchlib/aggregation/fs4hit.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "hit.h"
diff --git a/searchlib/src/vespa/searchlib/aggregation/group.cpp b/searchlib/src/vespa/searchlib/aggregation/group.cpp
index d1d68f2593c..a3240ef8e25 100644
--- a/searchlib/src/vespa/searchlib/aggregation/group.cpp
+++ b/searchlib/src/vespa/searchlib/aggregation/group.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "group.h"
#include "maxaggregationresult.h"
diff --git a/searchlib/src/vespa/searchlib/aggregation/group.h b/searchlib/src/vespa/searchlib/aggregation/group.h
index 681cda43afa..4b06bcd8cae 100644
--- a/searchlib/src/vespa/searchlib/aggregation/group.h
+++ b/searchlib/src/vespa/searchlib/aggregation/group.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "rawrank.h"
diff --git a/searchlib/src/vespa/searchlib/aggregation/grouping.cpp b/searchlib/src/vespa/searchlib/aggregation/grouping.cpp
index 1a2117f642a..68098d6c35a 100644
--- a/searchlib/src/vespa/searchlib/aggregation/grouping.cpp
+++ b/searchlib/src/vespa/searchlib/aggregation/grouping.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "grouping.h"
#include "hitsaggregationresult.h"
diff --git a/searchlib/src/vespa/searchlib/aggregation/grouping.h b/searchlib/src/vespa/searchlib/aggregation/grouping.h
index 249262438da..824c52b2c2a 100644
--- a/searchlib/src/vespa/searchlib/aggregation/grouping.h
+++ b/searchlib/src/vespa/searchlib/aggregation/grouping.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "groupinglevel.h"
diff --git a/searchlib/src/vespa/searchlib/aggregation/groupinglevel.cpp b/searchlib/src/vespa/searchlib/aggregation/groupinglevel.cpp
index 460add423fd..294541c5f79 100644
--- a/searchlib/src/vespa/searchlib/aggregation/groupinglevel.cpp
+++ b/searchlib/src/vespa/searchlib/aggregation/groupinglevel.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "groupinglevel.h"
#include "grouping.h"
diff --git a/searchlib/src/vespa/searchlib/aggregation/groupinglevel.h b/searchlib/src/vespa/searchlib/aggregation/groupinglevel.h
index ad53ff20fc2..3ef9610f560 100644
--- a/searchlib/src/vespa/searchlib/aggregation/groupinglevel.h
+++ b/searchlib/src/vespa/searchlib/aggregation/groupinglevel.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "group.h"
diff --git a/searchlib/src/vespa/searchlib/aggregation/hit.cpp b/searchlib/src/vespa/searchlib/aggregation/hit.cpp
index e0d63504218..364f6e29f10 100644
--- a/searchlib/src/vespa/searchlib/aggregation/hit.cpp
+++ b/searchlib/src/vespa/searchlib/aggregation/hit.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "hit.h"
#include <vespa/vespalib/objects/visit.h>
diff --git a/searchlib/src/vespa/searchlib/aggregation/hit.h b/searchlib/src/vespa/searchlib/aggregation/hit.h
index 556f60dfb8d..b1625e7babc 100644
--- a/searchlib/src/vespa/searchlib/aggregation/hit.h
+++ b/searchlib/src/vespa/searchlib/aggregation/hit.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "rawrank.h"
diff --git a/searchlib/src/vespa/searchlib/aggregation/hitlist.cpp b/searchlib/src/vespa/searchlib/aggregation/hitlist.cpp
index 8d6f5ef42b2..597d80f4c2d 100644
--- a/searchlib/src/vespa/searchlib/aggregation/hitlist.cpp
+++ b/searchlib/src/vespa/searchlib/aggregation/hitlist.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "hitlist.h"
#include <vespa/vespalib/objects/visit.hpp>
diff --git a/searchlib/src/vespa/searchlib/aggregation/hitlist.h b/searchlib/src/vespa/searchlib/aggregation/hitlist.h
index f53dcc63e7c..37ed96ef534 100644
--- a/searchlib/src/vespa/searchlib/aggregation/hitlist.h
+++ b/searchlib/src/vespa/searchlib/aggregation/hitlist.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "fs4hit.h"
diff --git a/searchlib/src/vespa/searchlib/aggregation/hitsaggregationresult.cpp b/searchlib/src/vespa/searchlib/aggregation/hitsaggregationresult.cpp
index 636609790ff..b3dff78abfb 100644
--- a/searchlib/src/vespa/searchlib/aggregation/hitsaggregationresult.cpp
+++ b/searchlib/src/vespa/searchlib/aggregation/hitsaggregationresult.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "hitsaggregationresult.h"
#include <vespa/document/fieldvalue/document.h>
diff --git a/searchlib/src/vespa/searchlib/aggregation/hitsaggregationresult.h b/searchlib/src/vespa/searchlib/aggregation/hitsaggregationresult.h
index cd89546d55f..204417d721c 100644
--- a/searchlib/src/vespa/searchlib/aggregation/hitsaggregationresult.h
+++ b/searchlib/src/vespa/searchlib/aggregation/hitsaggregationresult.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "aggregationresult.h"
diff --git a/searchlib/src/vespa/searchlib/aggregation/maxaggregationresult.h b/searchlib/src/vespa/searchlib/aggregation/maxaggregationresult.h
index 0e2f739798e..bb8b29d4a76 100644
--- a/searchlib/src/vespa/searchlib/aggregation/maxaggregationresult.h
+++ b/searchlib/src/vespa/searchlib/aggregation/maxaggregationresult.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "aggregationresult.h"
diff --git a/searchlib/src/vespa/searchlib/aggregation/minaggregationresult.h b/searchlib/src/vespa/searchlib/aggregation/minaggregationresult.h
index b30558684c2..636948d377c 100644
--- a/searchlib/src/vespa/searchlib/aggregation/minaggregationresult.h
+++ b/searchlib/src/vespa/searchlib/aggregation/minaggregationresult.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "aggregationresult.h"
diff --git a/searchlib/src/vespa/searchlib/aggregation/modifiers.cpp b/searchlib/src/vespa/searchlib/aggregation/modifiers.cpp
index 5ffad122c7d..8f4ce5109b2 100644
--- a/searchlib/src/vespa/searchlib/aggregation/modifiers.cpp
+++ b/searchlib/src/vespa/searchlib/aggregation/modifiers.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "modifiers.h"
#include "grouping.h"
diff --git a/searchlib/src/vespa/searchlib/aggregation/modifiers.h b/searchlib/src/vespa/searchlib/aggregation/modifiers.h
index 0120cb4eac9..add05becfa9 100644
--- a/searchlib/src/vespa/searchlib/aggregation/modifiers.h
+++ b/searchlib/src/vespa/searchlib/aggregation/modifiers.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/objects/objectoperation.h>
diff --git a/searchlib/src/vespa/searchlib/aggregation/perdocexpression.h b/searchlib/src/vespa/searchlib/aggregation/perdocexpression.h
index 47ba2ea732e..7f98263197d 100644
--- a/searchlib/src/vespa/searchlib/aggregation/perdocexpression.h
+++ b/searchlib/src/vespa/searchlib/aggregation/perdocexpression.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/expression/integerresultnode.h>
diff --git a/searchlib/src/vespa/searchlib/aggregation/predicates.h b/searchlib/src/vespa/searchlib/aggregation/predicates.h
index cd2b6863b4b..5b5183cc453 100644
--- a/searchlib/src/vespa/searchlib/aggregation/predicates.h
+++ b/searchlib/src/vespa/searchlib/aggregation/predicates.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "fs4hit.h"
diff --git a/searchlib/src/vespa/searchlib/aggregation/rawrank.cpp b/searchlib/src/vespa/searchlib/aggregation/rawrank.cpp
index d074c3f9dc7..6bb0a1b05db 100644
--- a/searchlib/src/vespa/searchlib/aggregation/rawrank.cpp
+++ b/searchlib/src/vespa/searchlib/aggregation/rawrank.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rawrank.h"
#include <vespa/vespalib/util/sort.h>
#include <algorithm>
diff --git a/searchlib/src/vespa/searchlib/aggregation/rawrank.h b/searchlib/src/vespa/searchlib/aggregation/rawrank.h
index a6f50c1291a..17f7c531e89 100644
--- a/searchlib/src/vespa/searchlib/aggregation/rawrank.h
+++ b/searchlib/src/vespa/searchlib/aggregation/rawrank.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace search::aggregation {
diff --git a/searchlib/src/vespa/searchlib/aggregation/standarddeviationaggregationresult.h b/searchlib/src/vespa/searchlib/aggregation/standarddeviationaggregationresult.h
index a0ea7ef9181..3e85726bb43 100644
--- a/searchlib/src/vespa/searchlib/aggregation/standarddeviationaggregationresult.h
+++ b/searchlib/src/vespa/searchlib/aggregation/standarddeviationaggregationresult.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "aggregationresult.h"
diff --git a/searchlib/src/vespa/searchlib/aggregation/sumaggregationresult.h b/searchlib/src/vespa/searchlib/aggregation/sumaggregationresult.h
index aae77066817..f75ee2ba180 100644
--- a/searchlib/src/vespa/searchlib/aggregation/sumaggregationresult.h
+++ b/searchlib/src/vespa/searchlib/aggregation/sumaggregationresult.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "aggregationresult.h"
diff --git a/searchlib/src/vespa/searchlib/aggregation/vdshit.cpp b/searchlib/src/vespa/searchlib/aggregation/vdshit.cpp
index d67a000eb4d..4f2fce3d4b9 100644
--- a/searchlib/src/vespa/searchlib/aggregation/vdshit.cpp
+++ b/searchlib/src/vespa/searchlib/aggregation/vdshit.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "vdshit.h"
#include <vespa/vespalib/objects/visit.hpp>
diff --git a/searchlib/src/vespa/searchlib/aggregation/vdshit.h b/searchlib/src/vespa/searchlib/aggregation/vdshit.h
index c6ad690d96c..b467423a182 100644
--- a/searchlib/src/vespa/searchlib/aggregation/vdshit.h
+++ b/searchlib/src/vespa/searchlib/aggregation/vdshit.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "hit.h"
diff --git a/searchlib/src/vespa/searchlib/aggregation/xoraggregationresult.h b/searchlib/src/vespa/searchlib/aggregation/xoraggregationresult.h
index 99d23702508..3a29d16b1a5 100644
--- a/searchlib/src/vespa/searchlib/aggregation/xoraggregationresult.h
+++ b/searchlib/src/vespa/searchlib/aggregation/xoraggregationresult.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "aggregationresult.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/CMakeLists.txt b/searchlib/src/vespa/searchlib/attribute/CMakeLists.txt
index bf56b476cc9..4f46c279565 100644
--- a/searchlib/src/vespa/searchlib/attribute/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/attribute/CMakeLists.txt
@@ -1,6 +1,7 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_attribute OBJECT
SOURCES
+ address_space_components.cpp
address_space_usage.cpp
attribute.cpp
attribute_blueprint_factory.cpp
diff --git a/searchlib/src/vespa/searchlib/attribute/address_space_components.cpp b/searchlib/src/vespa/searchlib/attribute/address_space_components.cpp
new file mode 100644
index 00000000000..c8f2f93832a
--- /dev/null
+++ b/searchlib/src/vespa/searchlib/attribute/address_space_components.cpp
@@ -0,0 +1,25 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "address_space_components.h"
+#include "i_enum_store.h"
+
+namespace search {
+
+using vespalib::AddressSpace;
+
+AddressSpace AddressSpaceComponents::default_enum_store_usage() {
+ return AddressSpace(0, 0, IEnumStore::InternalIndex::offsetSize());
+}
+
+AddressSpace AddressSpaceComponents::default_multi_value_usage() {
+ return AddressSpace(0, 0, (1ull << 32));
+}
+
+const vespalib::string AddressSpaceComponents::enum_store = "enum-store";
+const vespalib::string AddressSpaceComponents::multi_value = "multi-value";
+const vespalib::string AddressSpaceComponents::tensor_store = "tensor-store";
+const vespalib::string AddressSpaceComponents::shared_string_repo = "shared-string-repo";
+const vespalib::string AddressSpaceComponents::hnsw_node_store = "hnsw-node-store";
+const vespalib::string AddressSpaceComponents::hnsw_link_store = "hnsw-link-store";
+
+}
diff --git a/searchlib/src/vespa/searchlib/attribute/address_space_components.h b/searchlib/src/vespa/searchlib/attribute/address_space_components.h
new file mode 100644
index 00000000000..3d409ece973
--- /dev/null
+++ b/searchlib/src/vespa/searchlib/attribute/address_space_components.h
@@ -0,0 +1,25 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/vespalib/stllike/string.h>
+#include <vespa/vespalib/util/address_space.h>
+
+namespace search {
+
+/**
+ * A set of components in an attribute vector that use address space.
+ */
+class AddressSpaceComponents {
+public:
+ static vespalib::AddressSpace default_enum_store_usage();
+ static vespalib::AddressSpace default_multi_value_usage();
+ static const vespalib::string enum_store;
+ static const vespalib::string multi_value;
+ static const vespalib::string tensor_store;
+ static const vespalib::string shared_string_repo;
+ static const vespalib::string hnsw_node_store;
+ static const vespalib::string hnsw_link_store;
+};
+
+}
diff --git a/searchlib/src/vespa/searchlib/attribute/address_space_usage.cpp b/searchlib/src/vespa/searchlib/attribute/address_space_usage.cpp
index 692adaf3817..1680c26368f 100644
--- a/searchlib/src/vespa/searchlib/attribute/address_space_usage.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/address_space_usage.cpp
@@ -1,33 +1,43 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include "address_space_components.h"
#include "address_space_usage.h"
-#include "i_enum_store.h"
namespace search {
using vespalib::AddressSpace;
AddressSpaceUsage::AddressSpaceUsage()
- : _enumStoreUsage(defaultEnumStoreUsage()),
- _multiValueUsage(defaultMultiValueUsage()) {
+ : _map()
+{
}
-AddressSpaceUsage::AddressSpaceUsage(const AddressSpace &enumStoreUsage_,
- const AddressSpace &multiValueUsage_)
- : _enumStoreUsage(enumStoreUsage_),
- _multiValueUsage(multiValueUsage_) {
+void
+AddressSpaceUsage::set(const vespalib::string& component, const vespalib::AddressSpace& usage)
+{
+ _map[component] = usage;
}
AddressSpace
-AddressSpaceUsage::defaultEnumStoreUsage()
+AddressSpaceUsage::get(const vespalib::string& component) const
{
- return AddressSpace(0, 0, IEnumStore::InternalIndex::offsetSize());
+ auto itr = _map.find(component);
+ if (itr != _map.end()) {
+ return itr->second;
+ }
+ return AddressSpace();
}
AddressSpace
-AddressSpaceUsage::defaultMultiValueUsage()
+AddressSpaceUsage::enum_store_usage() const
{
- return AddressSpace(0, 0, (1ull << 32));
+ return get(AddressSpaceComponents::enum_store);
}
-} // namespace search
+AddressSpace
+AddressSpaceUsage::multi_value_usage() const
+{
+ return get(AddressSpaceComponents::multi_value);
+}
+
+}
diff --git a/searchlib/src/vespa/searchlib/attribute/address_space_usage.h b/searchlib/src/vespa/searchlib/attribute/address_space_usage.h
index 3e6ad1d3f8e..908e956f83d 100644
--- a/searchlib/src/vespa/searchlib/attribute/address_space_usage.h
+++ b/searchlib/src/vespa/searchlib/attribute/address_space_usage.h
@@ -1,29 +1,30 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
+#include <vespa/vespalib/stllike/hash_fun.h>
+#include <vespa/vespalib/stllike/string.h>
#include <vespa/vespalib/util/address_space.h>
+#include <unordered_map>
namespace search {
/**
- * Represents the address space usage for enum store and multi value mapping.
+ * Represents the address space usage for a set of attribute vector components.
*/
class AddressSpaceUsage
{
private:
- vespalib::AddressSpace _enumStoreUsage;
- vespalib::AddressSpace _multiValueUsage;
+ using AddressSpaceMap = std::unordered_map<vespalib::string, vespalib::AddressSpace, vespalib::hash<vespalib::string>>;
+ AddressSpaceMap _map;
public:
AddressSpaceUsage();
- AddressSpaceUsage(const vespalib::AddressSpace &enumStoreUsage_,
- const vespalib::AddressSpace &multiValueUsage_);
- static vespalib::AddressSpace defaultEnumStoreUsage();
- static vespalib::AddressSpace defaultMultiValueUsage();
- const vespalib::AddressSpace &enumStoreUsage() const { return _enumStoreUsage; }
- const vespalib::AddressSpace &multiValueUsage() const { return _multiValueUsage; }
-
+ void set(const vespalib::string& component, const vespalib::AddressSpace& usage);
+ vespalib::AddressSpace get(const vespalib::string& component) const;
+ const AddressSpaceMap& get_all() const { return _map; }
+ vespalib::AddressSpace enum_store_usage() const;
+ vespalib::AddressSpace multi_value_usage() const;
};
-} // namespace search
+}
diff --git a/searchlib/src/vespa/searchlib/attribute/attribute.cpp b/searchlib/src/vespa/searchlib/attribute/attribute.cpp
index 9296e64bb54..0f62de5725e 100644
--- a/searchlib/src/vespa/searchlib/attribute/attribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/attribute.h b/searchlib/src/vespa/searchlib/attribute/attribute.h
index d870ef18034..847b52c1559 100644
--- a/searchlib/src/vespa/searchlib/attribute/attribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/attribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/attribute/attributevector.h>
diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp b/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp
index 449d5ac24ca..4cac7d0f2f1 100644
--- a/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_blueprint_factory.h"
#include "attribute_weighted_set_blueprint.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.h b/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.h
index 65a84522102..fe456794a04 100644
--- a/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.h
+++ b/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_params.h b/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_params.h
index 4378858415a..3d975c60d7a 100644
--- a/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_params.h
+++ b/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_params.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_header.cpp b/searchlib/src/vespa/searchlib/attribute/attribute_header.cpp
index cfbca71bd5e..b68923b90bf 100644
--- a/searchlib/src/vespa/searchlib/attribute/attribute_header.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attribute_header.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_header.h"
#include <vespa/vespalib/data/fileheader.h>
diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_header.h b/searchlib/src/vespa/searchlib/attribute/attribute_header.h
index be1324d5989..00da28baf80 100644
--- a/searchlib/src/vespa/searchlib/attribute/attribute_header.h
+++ b/searchlib/src/vespa/searchlib/attribute/attribute_header.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_operation.cpp b/searchlib/src/vespa/searchlib/attribute/attribute_operation.cpp
index 56109aa059b..347793be4c6 100644
--- a/searchlib/src/vespa/searchlib/attribute/attribute_operation.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attribute_operation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_operation.h"
#include <vespa/searchlib/attribute/singlenumericattribute.h>
diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_operation.h b/searchlib/src/vespa/searchlib/attribute/attribute_operation.h
index f872edd712f..9a2e87eea39 100644
--- a/searchlib/src/vespa/searchlib/attribute/attribute_operation.h
+++ b/searchlib/src/vespa/searchlib/attribute/attribute_operation.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_read_guard.cpp b/searchlib/src/vespa/searchlib/attribute/attribute_read_guard.cpp
index 9f88d37aa6b..d7c301f689e 100644
--- a/searchlib/src/vespa/searchlib/attribute/attribute_read_guard.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attribute_read_guard.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_read_guard.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_read_guard.h b/searchlib/src/vespa/searchlib/attribute/attribute_read_guard.h
index aeccb6c8828..d6af170a30e 100644
--- a/searchlib/src/vespa/searchlib/attribute/attribute_read_guard.h
+++ b/searchlib/src/vespa/searchlib/attribute/attribute_read_guard.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp b/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp
index 0959476158f..32bd316d58d 100644
--- a/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_weighted_set_blueprint.h"
#include <vespa/searchcommon/attribute/i_search_context.h>
diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.h b/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.h
index 7ab11aace81..2695b5f06ca 100644
--- a/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.h
+++ b/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/attributecontext.cpp b/searchlib/src/vespa/searchlib/attribute/attributecontext.cpp
index 60916c7251d..598fdc7ac40 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributecontext.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attributecontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributecontext.h"
#include "attributevector.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/attributecontext.h b/searchlib/src/vespa/searchlib/attribute/attributecontext.h
index 146b56eed03..4ba3d07ef74 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributecontext.h
+++ b/searchlib/src/vespa/searchlib/attribute/attributecontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/attributefactory.cpp b/searchlib/src/vespa/searchlib/attribute/attributefactory.cpp
index 8f03c3b3851..4f846e8d68a 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributefactory.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attributefactory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributefactory.h"
#include "attributevector.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/attributefactory.h b/searchlib/src/vespa/searchlib/attribute/attributefactory.h
index b89d4831fd6..fcdef25a963 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributefactory.h
+++ b/searchlib/src/vespa/searchlib/attribute/attributefactory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/attributefilebufferwriter.cpp b/searchlib/src/vespa/searchlib/attribute/attributefilebufferwriter.cpp
index 4efd64f72dd..a4e5a93ee26 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributefilebufferwriter.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attributefilebufferwriter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributefilebufferwriter.h"
#include <vespa/vespalib/data/databuffer.h>
diff --git a/searchlib/src/vespa/searchlib/attribute/attributefilebufferwriter.h b/searchlib/src/vespa/searchlib/attribute/attributefilebufferwriter.h
index a6052f5f6b6..df0e14d5eda 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributefilebufferwriter.h
+++ b/searchlib/src/vespa/searchlib/attribute/attributefilebufferwriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/attributefilesavetarget.cpp b/searchlib/src/vespa/searchlib/attribute/attributefilesavetarget.cpp
index f284fecbf98..ddbbbd1b736 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributefilesavetarget.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attributefilesavetarget.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributefilesavetarget.h"
#include "attributevector.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/attributefilesavetarget.h b/searchlib/src/vespa/searchlib/attribute/attributefilesavetarget.h
index 9a9d38615ea..5596d6c3932 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributefilesavetarget.h
+++ b/searchlib/src/vespa/searchlib/attribute/attributefilesavetarget.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/attributefilewriter.cpp b/searchlib/src/vespa/searchlib/attribute/attributefilewriter.cpp
index 13300fb47f2..30f417c7532 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributefilewriter.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attributefilewriter.cpp
@@ -1,14 +1,15 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include "attributefilewriter.h"
-#include "attributefilebufferwriter.h"
#include "attribute_header.h"
-#include <vespa/vespalib/data/fileheader.h>
+#include "attributefilebufferwriter.h"
+#include "attributefilewriter.h"
+#include <vespa/fastos/file.h>
#include <vespa/searchlib/common/fileheadercontext.h>
#include <vespa/searchlib/common/tunefileinfo.h>
+#include <vespa/searchlib/util/file_settings.h>
#include <vespa/vespalib/data/databuffer.h>
+#include <vespa/vespalib/data/fileheader.h>
#include <vespa/vespalib/util/size_literals.h>
-#include <vespa/fastos/file.h>
#include <vespa/log/log.h>
LOG_SETUP(".searchlib.attribute.attributefilewriter");
@@ -20,15 +21,12 @@ namespace search {
namespace {
-const uint32_t headerAlign = 4_Ki;
-const uint32_t MIN_ALIGNMENT = 4_Ki;
-
void
writeDirectIOAligned(FastOS_FileInterface &file, const void *buf, size_t length)
{
const char * data(static_cast<const char *>(buf));
size_t remaining(length);
- for (size_t maxChunk(2_Mi); maxChunk >= MIN_ALIGNMENT; maxChunk >>= 1) {
+ for (size_t maxChunk(2_Mi); maxChunk >= FileSettings::DIRECTIO_ALIGNMENT; maxChunk >>= 1) {
for ( ; remaining > maxChunk; remaining -= maxChunk, data += maxChunk) {
file.WriteBuf(data, maxChunk);
}
@@ -41,7 +39,7 @@ writeDirectIOAligned(FastOS_FileInterface &file, const void *buf, size_t length)
void
updateHeader(const vespalib::string &name, uint64_t fileBitSize)
{
- vespalib::FileHeader h(headerAlign);
+ vespalib::FileHeader h(FileSettings::DIRECTIO_ALIGNMENT);
FastOS_File f;
f.OpenReadWrite(name.c_str());
h.readFile(f);
@@ -122,11 +120,11 @@ AttributeFileWriter::open(const vespalib::string &fileName)
void
AttributeFileWriter::writeHeader()
{
- vespalib::FileHeader header(headerAlign);
+ vespalib::FileHeader header(FileSettings::DIRECTIO_ALIGNMENT);
_fileHeaderContext.addTags(header, _file->GetFileName());
addTags(header);
size_t headerLen = header.writeFile(*_file);
- assert((headerLen % MIN_ALIGNMENT) == 0);
+ assert((headerLen % FileSettings::DIRECTIO_ALIGNMENT) == 0);
_fileBitSize = headerLen * 8;
}
@@ -141,7 +139,7 @@ AttributeFileWriter::addTags(vespalib::GenericHeader &header)
AttributeFileWriter::Buffer
AttributeFileWriter::allocBuf(size_t size)
{
- return std::make_unique<BufferBuf>(size, MIN_ALIGNMENT);
+ return std::make_unique<BufferBuf>(size, FileSettings::DIRECTIO_ALIGNMENT);
}
void
diff --git a/searchlib/src/vespa/searchlib/attribute/attributefilewriter.h b/searchlib/src/vespa/searchlib/attribute/attributefilewriter.h
index 85a686ee02a..ca21213bb13 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributefilewriter.h
+++ b/searchlib/src/vespa/searchlib/attribute/attributefilewriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/attributeguard.cpp b/searchlib/src/vespa/searchlib/attribute/attributeguard.cpp
index 02f1eb39853..50f4810083a 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributeguard.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attributeguard.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributeguard.h"
#include "componentguard.hpp"
diff --git a/searchlib/src/vespa/searchlib/attribute/attributeguard.h b/searchlib/src/vespa/searchlib/attribute/attributeguard.h
index 09538b75334..1e1fdb12738 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributeguard.h
+++ b/searchlib/src/vespa/searchlib/attribute/attributeguard.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "componentguard.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/attributeiterators.cpp b/searchlib/src/vespa/searchlib/attribute/attributeiterators.cpp
index abcd8da9056..38f7e67d7d3 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributeiterators.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attributeiterators.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributeiterators.hpp"
#include "postinglistattribute.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/attributeiterators.h b/searchlib/src/vespa/searchlib/attribute/attributeiterators.h
index 5d6499ea9aa..8765e52d38a 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributeiterators.h
+++ b/searchlib/src/vespa/searchlib/attribute/attributeiterators.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/attributeiterators.hpp b/searchlib/src/vespa/searchlib/attribute/attributeiterators.hpp
index d1226a07703..ebd028b0ee4 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributeiterators.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/attributeiterators.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/attributemanager.cpp b/searchlib/src/vespa/searchlib/attribute/attributemanager.cpp
index f286de13d92..ce841fefd99 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributemanager.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attributemanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_read_guard.h"
#include "attributecontext.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/attributemanager.h b/searchlib/src/vespa/searchlib/attribute/attributemanager.h
index 9f30ff87a70..7e390d5dd19 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributemanager.h
+++ b/searchlib/src/vespa/searchlib/attribute/attributemanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "attributeguard.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/attributememoryfilebufferwriter.cpp b/searchlib/src/vespa/searchlib/attribute/attributememoryfilebufferwriter.cpp
index 454cc486f70..bb4d2fbf42d 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributememoryfilebufferwriter.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attributememoryfilebufferwriter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributememoryfilebufferwriter.h"
#include <vespa/vespalib/data/databuffer.h>
diff --git a/searchlib/src/vespa/searchlib/attribute/attributememoryfilebufferwriter.h b/searchlib/src/vespa/searchlib/attribute/attributememoryfilebufferwriter.h
index d9adb791c14..ac57a3cb5ba 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributememoryfilebufferwriter.h
+++ b/searchlib/src/vespa/searchlib/attribute/attributememoryfilebufferwriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/attributememoryfilewriter.cpp b/searchlib/src/vespa/searchlib/attribute/attributememoryfilewriter.cpp
index 7662df9443e..1064a6edc1e 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributememoryfilewriter.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attributememoryfilewriter.cpp
@@ -1,18 +1,13 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include "attributememoryfilewriter.h"
#include "attributememoryfilebufferwriter.h"
+#include "attributememoryfilewriter.h"
+#include <vespa/searchlib/util/file_settings.h>
#include <vespa/vespalib/data/databuffer.h>
#include <vespa/vespalib/util/size_literals.h>
namespace search {
-namespace {
-
-const uint32_t MIN_ALIGNMENT = 4_Ki;
-
-}
-
AttributeMemoryFileWriter::AttributeMemoryFileWriter()
: IAttributeFileWriter(),
_bufs()
@@ -26,7 +21,7 @@ AttributeMemoryFileWriter::~AttributeMemoryFileWriter() = default;
AttributeMemoryFileWriter::Buffer
AttributeMemoryFileWriter::allocBuf(size_t size)
{
- return std::make_unique<BufferBuf>(size, MIN_ALIGNMENT);
+ return std::make_unique<BufferBuf>(size, FileSettings::DIRECTIO_ALIGNMENT);
}
diff --git a/searchlib/src/vespa/searchlib/attribute/attributememoryfilewriter.h b/searchlib/src/vespa/searchlib/attribute/attributememoryfilewriter.h
index 60ad5a5bdc9..a24c01e3fda 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributememoryfilewriter.h
+++ b/searchlib/src/vespa/searchlib/attribute/attributememoryfilewriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/attributememorysavetarget.cpp b/searchlib/src/vespa/searchlib/attribute/attributememorysavetarget.cpp
index b28887691e5..fa505a7e3a5 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributememorysavetarget.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attributememorysavetarget.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributefilesavetarget.h"
#include "attributememorysavetarget.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/attributememorysavetarget.h b/searchlib/src/vespa/searchlib/attribute/attributememorysavetarget.h
index 9533b881099..b32c8fc1663 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributememorysavetarget.h
+++ b/searchlib/src/vespa/searchlib/attribute/attributememorysavetarget.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/attributesaver.cpp b/searchlib/src/vespa/searchlib/attribute/attributesaver.cpp
index f2852fe3050..bdcdf34baed 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributesaver.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attributesaver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributesaver.h"
#include "iattributesavetarget.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/attributesaver.h b/searchlib/src/vespa/searchlib/attribute/attributesaver.h
index c1bf18e775c..ce0069e2397 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributesaver.h
+++ b/searchlib/src/vespa/searchlib/attribute/attributesaver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/attributevector.cpp b/searchlib/src/vespa/searchlib/attribute/attributevector.cpp
index 08ddc01c15b..15aec41934a 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributevector.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attributevector.cpp
@@ -1,10 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include "attributevector.h"
+#include "address_space_components.h"
#include "attribute_read_guard.h"
#include "attributefilesavetarget.h"
#include "attributeiterators.hpp"
#include "attributesaver.h"
+#include "attributevector.h"
#include "attributevector.hpp"
#include "floatbase.h"
#include "interlock.h"
@@ -14,14 +15,15 @@
#include <vespa/document/update/assignvalueupdate.h>
#include <vespa/document/update/mapvalueupdate.h>
#include <vespa/fastlib/io/bufferedfile.h>
+#include <vespa/searchcommon/attribute/attribute_utils.h>
#include <vespa/searchlib/common/tunefileinfo.h>
#include <vespa/searchlib/index/dummyfileheadercontext.h>
#include <vespa/searchlib/query/query_term_decoder.h>
#include <vespa/searchlib/queryeval/emptysearch.h>
+#include <vespa/searchlib/util/file_settings.h>
+#include <vespa/searchlib/util/logutil.h>
#include <vespa/vespalib/util/exceptions.h>
#include <vespa/vespalib/util/size_literals.h>
-#include <vespa/searchlib/util/logutil.h>
-#include <vespa/searchcommon/attribute/attribute_utils.h>
#include <thread>
#include <vespa/log/log.h>
@@ -46,8 +48,6 @@ const vespalib::string dataTypeTag = "datatype";
const vespalib::string collectionTypeTag = "collectiontype";
const vespalib::string docIdLimitTag = "docIdLimit";
-constexpr size_t DIRECTIO_ALIGNMENT(4_Ki);
-
}
namespace search {
@@ -222,22 +222,20 @@ AttributeVector::getEnumStoreValuesMemoryUsage() const
return vespalib::MemoryUsage();
}
-vespalib::AddressSpace
-AttributeVector::getEnumStoreAddressSpaceUsage() const
-{
- return AddressSpaceUsage::defaultEnumStoreUsage();
-}
-
-vespalib::AddressSpace
-AttributeVector::getMultiValueAddressSpaceUsage() const
+void
+AttributeVector::populate_address_space_usage(AddressSpaceUsage& usage) const
{
- return AddressSpaceUsage::defaultMultiValueUsage();
+ // TODO: Stop inserting defaults here when code using AddressSpaceUsage no longer require these two components.
+ usage.set(AddressSpaceComponents::enum_store, AddressSpaceComponents::default_enum_store_usage());
+ usage.set(AddressSpaceComponents::multi_value, AddressSpaceComponents::default_multi_value_usage());
}
AddressSpaceUsage
AttributeVector::getAddressSpaceUsage() const
{
- return AddressSpaceUsage(getEnumStoreAddressSpaceUsage(), getMultiValueAddressSpaceUsage());
+ AddressSpaceUsage usage;
+ populate_address_space_usage(usage);
+ return usage;
}
bool
@@ -352,7 +350,7 @@ AttributeVector::isEnumeratedSaveFormat() const
{
vespalib::string datName(vespalib::make_string("%s.dat", getBaseFileName().c_str()));
Fast_BufferedFile datFile;
- vespalib::FileHeader datHeader(DIRECTIO_ALIGNMENT);
+ vespalib::FileHeader datHeader(FileSettings::DIRECTIO_ALIGNMENT);
if ( ! datFile.OpenReadOnly(datName.c_str()) ) {
LOG(error, "could not open %s: %s", datFile.GetFileName(), getLastErrorString().c_str());
throw IllegalStateException(make_string("Failed opening attribute data file '%s' for reading",
@@ -363,11 +361,15 @@ AttributeVector::isEnumeratedSaveFormat() const
return isEnumerated(datHeader);
}
-
bool
AttributeVector::load() {
+ return load(nullptr);
+}
+
+bool
+AttributeVector::load(vespalib::Executor * executor) {
assert(!_loaded);
- bool loaded = onLoad();
+ bool loaded = onLoad(executor);
if (loaded) {
commit();
}
@@ -375,7 +377,7 @@ AttributeVector::load() {
return _loaded;
}
-bool AttributeVector::onLoad() { return false; }
+bool AttributeVector::onLoad(vespalib::Executor *) { return false; }
int32_t AttributeVector::getWeight(DocId, uint32_t) const { return 1; }
bool AttributeVector::findEnum(const char *, EnumHandle &) const { return false; }
@@ -645,7 +647,7 @@ IExtendAttribute *AttributeVector::getExtendInterface() { return nullptr; }
uint64_t
AttributeVector::getEstimatedSaveByteSize() const
{
- uint64_t headerSize = 4_Ki;
+ uint64_t headerSize = FileSettings::DIRECTIO_ALIGNMENT;
uint64_t totalValueCount = _status.getNumValues();
uint64_t uniqueValueCount = _status.getNumUniqueValues();
uint64_t docIdLimit = getCommittedDocIdLimit();
diff --git a/searchlib/src/vespa/searchlib/attribute/attributevector.h b/searchlib/src/vespa/searchlib/attribute/attributevector.h
index a4294df8cb7..61c86d53dcf 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributevector.h
+++ b/searchlib/src/vespa/searchlib/attribute/attributevector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -38,6 +38,7 @@ namespace document {
namespace vespalib {
class GenericHeader;
+ class Executor;
}
namespace search {
@@ -282,6 +283,14 @@ public:
virtual IExtendAttribute * getExtendInterface();
+ /**
+ * Returns the number of readers holding a generation guard.
+ * Should be called by the writer thread.
+ **/
+ uint32_t getGenerationRefCount(generation_t gen) const {
+ return _genHandler.getGenerationRefCount(gen);
+ }
+
protected:
/**
* Called when a new document has been added, but only for
@@ -291,14 +300,6 @@ protected:
**/
virtual bool onAddDoc(DocId) { return false; }
- /**
- * Returns the number of readers holding a generation guard.
- * Should be called by the writer thread.
- */
- uint32_t getGenerationRefCount(generation_t gen) const {
- return _genHandler.getGenerationRefCount(gen);
- }
-
const GenerationHandler & getGenerationHandler() const {
return _genHandler;
}
@@ -381,8 +382,7 @@ protected:
}
virtual vespalib::MemoryUsage getEnumStoreValuesMemoryUsage() const;
- virtual vespalib::AddressSpace getEnumStoreAddressSpaceUsage() const;
- virtual vespalib::AddressSpace getMultiValueAddressSpaceUsage() const;
+ virtual void populate_address_space_usage(AddressSpaceUsage& usage) const;
public:
DECLARE_IDENTIFIABLE_ABSTRACT(AttributeVector);
@@ -448,6 +448,7 @@ public:
bool isEnumeratedSaveFormat() const;
bool load();
+ bool load(vespalib::Executor * executor);
void commit() { commit(false); }
void commit(bool forceUpdateStats);
void commit(const CommitParam & param);
@@ -571,7 +572,7 @@ private:
virtual bool applyWeight(DocId doc, const FieldValue &fv, const ArithmeticValueUpdate &wAdjust);
virtual bool applyWeight(DocId doc, const FieldValue& fv, const document::AssignValueUpdate& wAdjust);
virtual void onSave(IAttributeSaveTarget & saveTarget);
- virtual bool onLoad();
+ virtual bool onLoad(vespalib::Executor * executor);
BaseName _baseFileName;
diff --git a/searchlib/src/vespa/searchlib/attribute/attributevector.hpp b/searchlib/src/vespa/searchlib/attribute/attributevector.hpp
index 616096e9091..25658401f21 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributevector.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/attributevector.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "attributevector.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/attrvector.cpp b/searchlib/src/vespa/searchlib/attribute/attrvector.cpp
index 0912c162e82..6b692ee4b27 100644
--- a/searchlib/src/vespa/searchlib/attribute/attrvector.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attrvector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attrvector.h"
#include "attrvector.hpp"
@@ -116,7 +116,7 @@ void addString(const char * v, StringAttribute::OffsetVector & offsets, std::vec
buffer.push_back('\0');
}
-bool StringDirectAttribute::onLoad()
+bool StringDirectAttribute::onLoad(vespalib::Executor *)
{
{
std::vector<char> empty;
diff --git a/searchlib/src/vespa/searchlib/attribute/attrvector.h b/searchlib/src/vespa/searchlib/attribute/attrvector.h
index e1f8338a4ea..b6ecc7a4cae 100644
--- a/searchlib/src/vespa/searchlib/attribute/attrvector.h
+++ b/searchlib/src/vespa/searchlib/attribute/attrvector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "stringbase.h"
@@ -32,7 +32,7 @@ private:
typedef typename B::EnumHandle EnumHandle;
NumericDirectAttribute(const NumericDirectAttribute &);
NumericDirectAttribute & operator=(const NumericDirectAttribute &);
- bool onLoad() override;
+ bool onLoad(vespalib::Executor *executor) override;
typename B::BaseType getFromEnum(EnumHandle e) const override { return _data[e]; }
protected:
typedef typename B::BaseType BaseType;
@@ -139,7 +139,7 @@ private:
StringDirectAttribute(const StringDirectAttribute &);
StringDirectAttribute & operator=(const StringDirectAttribute &);
void onSave(IAttributeSaveTarget & saveTarget) override;
- bool onLoad() override;
+ bool onLoad(vespalib::Executor *executor) override;
const char * getFromEnum(EnumHandle e) const override { return &_buffer[e]; }
const char * getStringFromEnum(EnumHandle e) const override { return &_buffer[e]; }
SearchContext::UP getSearch(QueryTermSimpleUP term, const attribute::SearchContextParams & params) const override;
diff --git a/searchlib/src/vespa/searchlib/attribute/attrvector.hpp b/searchlib/src/vespa/searchlib/attribute/attrvector.hpp
index 4ce7575b28d..87f1985d7c0 100644
--- a/searchlib/src/vespa/searchlib/attribute/attrvector.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/attrvector.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "attrvector.h"
@@ -22,7 +22,7 @@ template <typename B>
NumericDirectAttribute<B>::~NumericDirectAttribute() = default;
template <typename B>
-bool NumericDirectAttribute<B>::onLoad()
+bool NumericDirectAttribute<B>::onLoad(vespalib::Executor *)
{
auto dataBuffer = attribute::LoadUtils::loadDAT(*this);
bool rc(dataBuffer.get());
diff --git a/searchlib/src/vespa/searchlib/attribute/bitvector_search_cache.cpp b/searchlib/src/vespa/searchlib/attribute/bitvector_search_cache.cpp
index cf49856234a..75e0a82ff1d 100644
--- a/searchlib/src/vespa/searchlib/attribute/bitvector_search_cache.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/bitvector_search_cache.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bitvector_search_cache.h"
#include <vespa/searchlib/common/bitvector.h>
diff --git a/searchlib/src/vespa/searchlib/attribute/bitvector_search_cache.h b/searchlib/src/vespa/searchlib/attribute/bitvector_search_cache.h
index 1cd07cf4e23..d200002bd32 100644
--- a/searchlib/src/vespa/searchlib/attribute/bitvector_search_cache.h
+++ b/searchlib/src/vespa/searchlib/attribute/bitvector_search_cache.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/changevector.cpp b/searchlib/src/vespa/searchlib/attribute/changevector.cpp
index 3252b6f3d8a..c81d0ea9ad5 100644
--- a/searchlib/src/vespa/searchlib/attribute/changevector.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/changevector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "changevector.hpp"
#include "stringbase.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/changevector.h b/searchlib/src/vespa/searchlib/attribute/changevector.h
index d63ef2e2b35..d8abdfae92a 100644
--- a/searchlib/src/vespa/searchlib/attribute/changevector.h
+++ b/searchlib/src/vespa/searchlib/attribute/changevector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/changevector.hpp b/searchlib/src/vespa/searchlib/attribute/changevector.hpp
index 5052f4b9a10..43787bf8bd4 100644
--- a/searchlib/src/vespa/searchlib/attribute/changevector.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/changevector.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/componentguard.h b/searchlib/src/vespa/searchlib/attribute/componentguard.h
index 2d7db868054..e4cdc6bb740 100644
--- a/searchlib/src/vespa/searchlib/attribute/componentguard.h
+++ b/searchlib/src/vespa/searchlib/attribute/componentguard.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/generationhandler.h>
diff --git a/searchlib/src/vespa/searchlib/attribute/componentguard.hpp b/searchlib/src/vespa/searchlib/attribute/componentguard.hpp
index 937d2b31740..f7972d5d8eb 100644
--- a/searchlib/src/vespa/searchlib/attribute/componentguard.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/componentguard.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "componentguard.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/configconverter.cpp b/searchlib/src/vespa/searchlib/attribute/configconverter.cpp
index 6387edc588b..761543f4bad 100644
--- a/searchlib/src/vespa/searchlib/attribute/configconverter.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/configconverter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configconverter.h"
@@ -108,6 +108,7 @@ ConfigConverter::convert(const AttributesConfig::Attribute & cfg)
retval.setIsFilter(cfg.enableonlybitvector);
retval.setFastAccess(cfg.fastaccess);
retval.setMutable(cfg.ismutable);
+ retval.setPaged(cfg.paged);
predicateParams.setArity(cfg.arity);
predicateParams.setBounds(cfg.lowerbound, cfg.upperbound);
predicateParams.setDensePostingListThreshold(cfg.densepostinglistthreshold);
diff --git a/searchlib/src/vespa/searchlib/attribute/configconverter.h b/searchlib/src/vespa/searchlib/attribute/configconverter.h
index cdc84850a9c..6f2b8812a80 100644
--- a/searchlib/src/vespa/searchlib/attribute/configconverter.h
+++ b/searchlib/src/vespa/searchlib/attribute/configconverter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/createarrayfastsearch.cpp b/searchlib/src/vespa/searchlib/attribute/createarrayfastsearch.cpp
index 0f74cfc7612..9de2a1750e1 100644
--- a/searchlib/src/vespa/searchlib/attribute/createarrayfastsearch.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/createarrayfastsearch.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributefactory.h"
#include "integerbase.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/createarraystd.cpp b/searchlib/src/vespa/searchlib/attribute/createarraystd.cpp
index f6b37658645..292c390997f 100644
--- a/searchlib/src/vespa/searchlib/attribute/createarraystd.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/createarraystd.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributefactory.h"
#include "defines.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/createsetfastsearch.cpp b/searchlib/src/vespa/searchlib/attribute/createsetfastsearch.cpp
index d8bc65bce78..7daea3e92f6 100644
--- a/searchlib/src/vespa/searchlib/attribute/createsetfastsearch.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/createsetfastsearch.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributefactory.h"
#include "integerbase.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/createsetstd.cpp b/searchlib/src/vespa/searchlib/attribute/createsetstd.cpp
index 2c8636cb756..99538bb748f 100644
--- a/searchlib/src/vespa/searchlib/attribute/createsetstd.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/createsetstd.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributefactory.h"
#include "defines.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/createsinglefastsearch.cpp b/searchlib/src/vespa/searchlib/attribute/createsinglefastsearch.cpp
index 187eb01e9a9..71eb88d4e52 100644
--- a/searchlib/src/vespa/searchlib/attribute/createsinglefastsearch.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/createsinglefastsearch.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributefactory.h"
#include "integerbase.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/createsinglestd.cpp b/searchlib/src/vespa/searchlib/attribute/createsinglestd.cpp
index 291215b886a..3294ecd8dd2 100644
--- a/searchlib/src/vespa/searchlib/attribute/createsinglestd.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/createsinglestd.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributefactory.h"
#include "predicate_attribute.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/defines.cpp b/searchlib/src/vespa/searchlib/attribute/defines.cpp
index 0bae2584949..2c9cbffb396 100644
--- a/searchlib/src/vespa/searchlib/attribute/defines.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/defines.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "defines.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/defines.h b/searchlib/src/vespa/searchlib/attribute/defines.h
index 1a7964e057b..1588bfb4455 100644
--- a/searchlib/src/vespa/searchlib/attribute/defines.h
+++ b/searchlib/src/vespa/searchlib/attribute/defines.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/diversity.cpp b/searchlib/src/vespa/searchlib/attribute/diversity.cpp
index 65a84baa212..41f6539884e 100644
--- a/searchlib/src/vespa/searchlib/attribute/diversity.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/diversity.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "diversity.hpp"
#include "singleenumattribute.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/diversity.h b/searchlib/src/vespa/searchlib/attribute/diversity.h
index ff7d9b5f83d..40d2009c198 100644
--- a/searchlib/src/vespa/searchlib/attribute/diversity.h
+++ b/searchlib/src/vespa/searchlib/attribute/diversity.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/diversity.hpp b/searchlib/src/vespa/searchlib/attribute/diversity.hpp
index 698f482dec1..22b29261cdd 100644
--- a/searchlib/src/vespa/searchlib/attribute/diversity.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/diversity.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/dociditerator.cpp b/searchlib/src/vespa/searchlib/attribute/dociditerator.cpp
index ab90f0550f3..bcddcee9a3c 100644
--- a/searchlib/src/vespa/searchlib/attribute/dociditerator.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/dociditerator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dociditerator.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/dociditerator.h b/searchlib/src/vespa/searchlib/attribute/dociditerator.h
index 261dff77ddb..1565cd90ca3 100644
--- a/searchlib/src/vespa/searchlib/attribute/dociditerator.h
+++ b/searchlib/src/vespa/searchlib/attribute/dociditerator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/document_weight_or_filter_search.cpp b/searchlib/src/vespa/searchlib/attribute/document_weight_or_filter_search.cpp
index d9134417d27..3c0bae00047 100644
--- a/searchlib/src/vespa/searchlib/attribute/document_weight_or_filter_search.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/document_weight_or_filter_search.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_weight_or_filter_search.h"
#include "iterator_pack.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/document_weight_or_filter_search.h b/searchlib/src/vespa/searchlib/attribute/document_weight_or_filter_search.h
index d9721871b81..62be883ab52 100644
--- a/searchlib/src/vespa/searchlib/attribute/document_weight_or_filter_search.h
+++ b/searchlib/src/vespa/searchlib/attribute/document_weight_or_filter_search.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "i_document_weight_attribute.h"
#include <vespa/searchlib/queryeval/searchiterator.h>
diff --git a/searchlib/src/vespa/searchlib/attribute/enumattribute.cpp b/searchlib/src/vespa/searchlib/attribute/enumattribute.cpp
index a333fac68c9..08e294bd7e9 100644
--- a/searchlib/src/vespa/searchlib/attribute/enumattribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/enumattribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "enumattribute.h"
#include "enumattribute.hpp"
diff --git a/searchlib/src/vespa/searchlib/attribute/enumattribute.h b/searchlib/src/vespa/searchlib/attribute/enumattribute.h
index 443433757b3..82577e7a301 100644
--- a/searchlib/src/vespa/searchlib/attribute/enumattribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/enumattribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -64,7 +64,7 @@ protected:
void insertNewUniqueValues(EnumStoreBatchUpdater& updater);
virtual void considerAttributeChange(const Change & c, EnumStoreBatchUpdater & inserter) = 0;
vespalib::MemoryUsage getEnumStoreValuesMemoryUsage() const override;
- vespalib::AddressSpace getEnumStoreAddressSpaceUsage() const override;
+ void populate_address_space_usage(AddressSpaceUsage& usage) const override;
public:
EnumAttribute(const vespalib::string & baseFileName, const AttributeVector::Config & cfg);
~EnumAttribute();
diff --git a/searchlib/src/vespa/searchlib/attribute/enumattribute.hpp b/searchlib/src/vespa/searchlib/attribute/enumattribute.hpp
index 164bb411061..2c6ac521b30 100644
--- a/searchlib/src/vespa/searchlib/attribute/enumattribute.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/enumattribute.hpp
@@ -1,7 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
+#include "address_space_components.h"
#include <vespa/vespalib/util/hdr_abort.h>
#include <vespa/searchlib/attribute/enumattribute.h>
#include <vespa/searchlib/attribute/enumstore.hpp>
@@ -76,10 +77,11 @@ EnumAttribute<B>::getEnumStoreValuesMemoryUsage() const
}
template <typename B>
-vespalib::AddressSpace
-EnumAttribute<B>::getEnumStoreAddressSpaceUsage() const
+void
+EnumAttribute<B>::populate_address_space_usage(AddressSpaceUsage& usage) const
{
- return _enumStore.get_address_space_usage();
+ B::populate_address_space_usage(usage);
+ usage.set(AddressSpaceComponents::enum_store, _enumStore.get_address_space_usage());
}
} // namespace search
diff --git a/searchlib/src/vespa/searchlib/attribute/enumattributesaver.cpp b/searchlib/src/vespa/searchlib/attribute/enumattributesaver.cpp
index 059e5defeb7..0ebf5a2913d 100644
--- a/searchlib/src/vespa/searchlib/attribute/enumattributesaver.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/enumattributesaver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "enumattributesaver.h"
#include "i_enum_store_dictionary.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/enumattributesaver.h b/searchlib/src/vespa/searchlib/attribute/enumattributesaver.h
index f7bb263d4cb..d6dceb4772a 100644
--- a/searchlib/src/vespa/searchlib/attribute/enumattributesaver.h
+++ b/searchlib/src/vespa/searchlib/attribute/enumattributesaver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/enumcomparator.cpp b/searchlib/src/vespa/searchlib/attribute/enumcomparator.cpp
index 74eae51729f..0f52b64ede0 100644
--- a/searchlib/src/vespa/searchlib/attribute/enumcomparator.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/enumcomparator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "enumcomparator.h"
#include <vespa/searchlib/util/foldedstringcompare.h>
diff --git a/searchlib/src/vespa/searchlib/attribute/enumcomparator.h b/searchlib/src/vespa/searchlib/attribute/enumcomparator.h
index e822e08cfdc..5df85cd1c57 100644
--- a/searchlib/src/vespa/searchlib/attribute/enumcomparator.h
+++ b/searchlib/src/vespa/searchlib/attribute/enumcomparator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/enumhintsearchcontext.cpp b/searchlib/src/vespa/searchlib/attribute/enumhintsearchcontext.cpp
index 4c803d6e158..26ff891fbb2 100644
--- a/searchlib/src/vespa/searchlib/attribute/enumhintsearchcontext.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/enumhintsearchcontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "enumhintsearchcontext.h"
#include <vespa/searchlib/queryeval/emptysearch.h>
diff --git a/searchlib/src/vespa/searchlib/attribute/enumhintsearchcontext.h b/searchlib/src/vespa/searchlib/attribute/enumhintsearchcontext.h
index af64f17934d..a1389c1381e 100644
--- a/searchlib/src/vespa/searchlib/attribute/enumhintsearchcontext.h
+++ b/searchlib/src/vespa/searchlib/attribute/enumhintsearchcontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/enumstore.cpp b/searchlib/src/vespa/searchlib/attribute/enumstore.cpp
index 2b7065e8705..31523012c1a 100644
--- a/searchlib/src/vespa/searchlib/attribute/enumstore.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/enumstore.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "enumstore.hpp"
#include <vespa/vespalib/datastore/sharded_hash_map.h>
diff --git a/searchlib/src/vespa/searchlib/attribute/enumstore.h b/searchlib/src/vespa/searchlib/attribute/enumstore.h
index 59d77ea0558..a140a529c7d 100644
--- a/searchlib/src/vespa/searchlib/attribute/enumstore.h
+++ b/searchlib/src/vespa/searchlib/attribute/enumstore.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/enumstore.hpp b/searchlib/src/vespa/searchlib/attribute/enumstore.hpp
index 2e6cd0e29b7..c202d780659 100644
--- a/searchlib/src/vespa/searchlib/attribute/enumstore.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/enumstore.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/extendableattributes.cpp b/searchlib/src/vespa/searchlib/attribute/extendableattributes.cpp
index feac5caabd5..12507a73564 100644
--- a/searchlib/src/vespa/searchlib/attribute/extendableattributes.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/extendableattributes.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "extendableattributes.h"
#include "attrvector.hpp"
diff --git a/searchlib/src/vespa/searchlib/attribute/extendableattributes.h b/searchlib/src/vespa/searchlib/attribute/extendableattributes.h
index ce57daa775d..33b8544f9fe 100644
--- a/searchlib/src/vespa/searchlib/attribute/extendableattributes.h
+++ b/searchlib/src/vespa/searchlib/attribute/extendableattributes.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class search::SearchVisitor
*
@@ -63,7 +63,7 @@ public:
this->_data.back() = v;
return true;
}
- bool onLoad() override {
+ bool onLoad(vespalib::Executor *) override {
return false; // Emulate that this attribute is never loaded
}
void onAddDocs(typename Super::DocId lidLimit) override {
@@ -88,7 +88,7 @@ public:
SingleStringExtAttribute(const vespalib::string & name);
bool addDoc(DocId & docId) override;
bool add(const char * v, int32_t w = 1) override;
- bool onLoad() override {
+ bool onLoad(vespalib::Executor *) override {
return false; // Emulate that this attribute is never loaded
}
void onAddDocs(DocId ) override { }
@@ -139,7 +139,7 @@ public:
this->checkSetMaxValueCount(idx.back() - idx[idx.size() - 2]);
return true;
}
- bool onLoad() override {
+ bool onLoad(vespalib::Executor *) override {
return false; // Emulate that this attribute is never loaded
}
void onAddDocs(uint32_t lidLimit) override {
@@ -167,7 +167,7 @@ public:
MultiStringExtAttribute(const vespalib::string & name);
bool addDoc(DocId & docId) override;
bool add(const char * v, int32_t w = 1) override;
- bool onLoad() override {
+ bool onLoad(vespalib::Executor *) override {
return false; // Emulate that this attribute is never loaded
}
void onAddDocs(DocId ) override { }
diff --git a/searchlib/src/vespa/searchlib/attribute/fixedsourceselector.cpp b/searchlib/src/vespa/searchlib/attribute/fixedsourceselector.cpp
index db3df4648c7..22200633229 100644
--- a/searchlib/src/vespa/searchlib/attribute/fixedsourceselector.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/fixedsourceselector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fixedsourceselector.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/fixedsourceselector.h b/searchlib/src/vespa/searchlib/attribute/fixedsourceselector.h
index 9cffe5b001b..924e5362be7 100644
--- a/searchlib/src/vespa/searchlib/attribute/fixedsourceselector.h
+++ b/searchlib/src/vespa/searchlib/attribute/fixedsourceselector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/flagattribute.cpp b/searchlib/src/vespa/searchlib/attribute/flagattribute.cpp
index ab2a588a53d..7b2b9db574d 100644
--- a/searchlib/src/vespa/searchlib/attribute/flagattribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/flagattribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "flagattribute.h"
#include "load_utils.hpp"
@@ -101,14 +101,14 @@ FlagAttributeT<B>::onLoadEnumerated(ReaderBase &attrReader)
}
template <typename B>
-bool FlagAttributeT<B>::onLoad()
+bool FlagAttributeT<B>::onLoad(vespalib::Executor * executor)
{
for (size_t i(0), m(_bitVectors.size()); i < m; i++) {
_bitVectorStore[i].reset();
_bitVectors[i] = nullptr;
}
_bitVectorSize = 0;
- return B::onLoad();
+ return B::onLoad(executor);
}
template <typename B>
diff --git a/searchlib/src/vespa/searchlib/attribute/flagattribute.h b/searchlib/src/vespa/searchlib/attribute/flagattribute.h
index d3ce5f9af46..05a2ed18e45 100644
--- a/searchlib/src/vespa/searchlib/attribute/flagattribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/flagattribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "multinumericattribute.h"
@@ -29,7 +29,7 @@ private:
template <class SC> friend class FlagAttributeIteratorT;
template <class SC> friend class FlagAttributeIteratorStrict;
};
- bool onLoad() override;
+ bool onLoad(vespalib::Executor *executor) override;
bool onLoadEnumerated(ReaderBase &attrReader) override;
AttributeVector::SearchContext::UP
getSearch(std::unique_ptr<QueryTermSimple> term, const attribute::SearchContextParams & params) const override;
diff --git a/searchlib/src/vespa/searchlib/attribute/floatbase.cpp b/searchlib/src/vespa/searchlib/attribute/floatbase.cpp
index 72c72a74826..b948ff81c1f 100644
--- a/searchlib/src/vespa/searchlib/attribute/floatbase.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/floatbase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "floatbase.hpp"
#include "attributevector.hpp"
diff --git a/searchlib/src/vespa/searchlib/attribute/floatbase.h b/searchlib/src/vespa/searchlib/attribute/floatbase.h
index 65a146d7ba7..968e7b87f6b 100644
--- a/searchlib/src/vespa/searchlib/attribute/floatbase.h
+++ b/searchlib/src/vespa/searchlib/attribute/floatbase.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "numericbase.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/floatbase.hpp b/searchlib/src/vespa/searchlib/attribute/floatbase.hpp
index 3925bb3dd4e..2d878f38464 100644
--- a/searchlib/src/vespa/searchlib/attribute/floatbase.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/floatbase.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "floatbase.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/i_document_weight_attribute.cpp b/searchlib/src/vespa/searchlib/attribute/i_document_weight_attribute.cpp
index 6ee7bee6762..cf81206f12b 100644
--- a/searchlib/src/vespa/searchlib/attribute/i_document_weight_attribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/i_document_weight_attribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "i_document_weight_attribute.h"
#include <charconv>
diff --git a/searchlib/src/vespa/searchlib/attribute/i_document_weight_attribute.h b/searchlib/src/vespa/searchlib/attribute/i_document_weight_attribute.h
index ffca480ce8a..baa65e42c03 100644
--- a/searchlib/src/vespa/searchlib/attribute/i_document_weight_attribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/i_document_weight_attribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/iattributefilewriter.h b/searchlib/src/vespa/searchlib/attribute/iattributefilewriter.h
index 94e16b37e9d..206950f4354 100644
--- a/searchlib/src/vespa/searchlib/attribute/iattributefilewriter.h
+++ b/searchlib/src/vespa/searchlib/attribute/iattributefilewriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/iattributemanager.cpp b/searchlib/src/vespa/searchlib/attribute/iattributemanager.cpp
index f7a46379f2e..13f151f0c58 100644
--- a/searchlib/src/vespa/searchlib/attribute/iattributemanager.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/iattributemanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "iattributemanager.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/iattributemanager.h b/searchlib/src/vespa/searchlib/attribute/iattributemanager.h
index 51e432f2035..88880df62b9 100644
--- a/searchlib/src/vespa/searchlib/attribute/iattributemanager.h
+++ b/searchlib/src/vespa/searchlib/attribute/iattributemanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/iattributesavetarget.cpp b/searchlib/src/vespa/searchlib/attribute/iattributesavetarget.cpp
index 33caa0d5b8d..2bc45d44c3b 100644
--- a/searchlib/src/vespa/searchlib/attribute/iattributesavetarget.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/iattributesavetarget.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "iattributesavetarget.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/iattributesavetarget.h b/searchlib/src/vespa/searchlib/attribute/iattributesavetarget.h
index 8946fc2fcdb..de33d71c100 100644
--- a/searchlib/src/vespa/searchlib/attribute/iattributesavetarget.h
+++ b/searchlib/src/vespa/searchlib/attribute/iattributesavetarget.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector.cpp b/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector.cpp
index 7ae55a243f8..1ae2b6ee749 100644
--- a/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "imported_attribute_vector.h"
#include "imported_attribute_vector_read_guard.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector.h b/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector.h
index 395f20ea403..0e631287708 100644
--- a/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector.h
+++ b/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector_factory.cpp b/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector_factory.cpp
index 5847b8953a4..b55beb812e8 100644
--- a/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector_factory.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector_factory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "imported_attribute_vector_factory.h"
#include "imported_attribute_vector.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector_factory.h b/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector_factory.h
index 5401a54f84f..78251fffb3b 100644
--- a/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector_factory.h
+++ b/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector_factory.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector_read_guard.cpp b/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector_read_guard.cpp
index f2949119ae2..2a5d57475ca 100644
--- a/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector_read_guard.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector_read_guard.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "imported_attribute_vector_read_guard.h"
#include "imported_attribute_vector.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector_read_guard.h b/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector_read_guard.h
index cb803735b89..78748b3144a 100644
--- a/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector_read_guard.h
+++ b/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector_read_guard.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/imported_search_context.cpp b/searchlib/src/vespa/searchlib/attribute/imported_search_context.cpp
index 9c40de26db6..70172199517 100644
--- a/searchlib/src/vespa/searchlib/attribute/imported_search_context.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/imported_search_context.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "imported_search_context.h"
#include "bitvector_search_cache.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/imported_search_context.h b/searchlib/src/vespa/searchlib/attribute/imported_search_context.h
index caf9b2f3c11..63b52772363 100644
--- a/searchlib/src/vespa/searchlib/attribute/imported_search_context.h
+++ b/searchlib/src/vespa/searchlib/attribute/imported_search_context.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/integerbase.cpp b/searchlib/src/vespa/searchlib/attribute/integerbase.cpp
index c288d0507d7..cd38b119e7c 100644
--- a/searchlib/src/vespa/searchlib/attribute/integerbase.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/integerbase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "integerbase.hpp"
#include "attributevector.hpp"
diff --git a/searchlib/src/vespa/searchlib/attribute/integerbase.h b/searchlib/src/vespa/searchlib/attribute/integerbase.h
index 4e5fe8fec19..234666d7845 100644
--- a/searchlib/src/vespa/searchlib/attribute/integerbase.h
+++ b/searchlib/src/vespa/searchlib/attribute/integerbase.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "numericbase.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/integerbase.hpp b/searchlib/src/vespa/searchlib/attribute/integerbase.hpp
index a08ce394a46..207af8efa5e 100644
--- a/searchlib/src/vespa/searchlib/attribute/integerbase.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/integerbase.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "integerbase.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/interlock.h b/searchlib/src/vespa/searchlib/attribute/interlock.h
index 30efeaf32fd..2b96d0427e9 100644
--- a/searchlib/src/vespa/searchlib/attribute/interlock.h
+++ b/searchlib/src/vespa/searchlib/attribute/interlock.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/ipostinglistattributebase.h b/searchlib/src/vespa/searchlib/attribute/ipostinglistattributebase.h
index 3936ed381be..135870e29a5 100644
--- a/searchlib/src/vespa/searchlib/attribute/ipostinglistattributebase.h
+++ b/searchlib/src/vespa/searchlib/attribute/ipostinglistattributebase.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/ipostinglistsearchcontext.cpp b/searchlib/src/vespa/searchlib/attribute/ipostinglistsearchcontext.cpp
index 10d06d64685..2ccbebe92e4 100644
--- a/searchlib/src/vespa/searchlib/attribute/ipostinglistsearchcontext.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/ipostinglistsearchcontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "ipostinglistsearchcontext.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/ipostinglistsearchcontext.h b/searchlib/src/vespa/searchlib/attribute/ipostinglistsearchcontext.h
index 674b2fcc8c7..6466f7c2a6a 100644
--- a/searchlib/src/vespa/searchlib/attribute/ipostinglistsearchcontext.h
+++ b/searchlib/src/vespa/searchlib/attribute/ipostinglistsearchcontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/iterator_pack.cpp b/searchlib/src/vespa/searchlib/attribute/iterator_pack.cpp
index c21870d5319..147f56d6d47 100644
--- a/searchlib/src/vespa/searchlib/attribute/iterator_pack.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/iterator_pack.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "iterator_pack.h"
#include <vespa/searchlib/common/bitvector.h>
diff --git a/searchlib/src/vespa/searchlib/attribute/iterator_pack.h b/searchlib/src/vespa/searchlib/attribute/iterator_pack.h
index 579f8428088..e042aab5eae 100644
--- a/searchlib/src/vespa/searchlib/attribute/iterator_pack.h
+++ b/searchlib/src/vespa/searchlib/attribute/iterator_pack.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/load_utils.cpp b/searchlib/src/vespa/searchlib/attribute/load_utils.cpp
index 5e9bc80f46a..f71222e6faa 100644
--- a/searchlib/src/vespa/searchlib/attribute/load_utils.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/load_utils.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "i_enum_store.h"
#include "load_utils.hpp"
@@ -24,8 +24,6 @@ LoadUtils::openFile(const AttributeVector& attr, const vespalib::string& suffix)
return FileUtil::openFile(attr.getBaseFileName() + "." + suffix);
}
-
-
FileInterfaceUP
LoadUtils::openDAT(const AttributeVector& attr)
{
diff --git a/searchlib/src/vespa/searchlib/attribute/load_utils.h b/searchlib/src/vespa/searchlib/attribute/load_utils.h
index 6833ab6b0b7..a9a41b8eaeb 100644
--- a/searchlib/src/vespa/searchlib/attribute/load_utils.h
+++ b/searchlib/src/vespa/searchlib/attribute/load_utils.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -16,10 +16,7 @@ public:
using FileInterfaceUP = std::unique_ptr<FastOS_FileInterface>;
using LoadedBufferUP = std::unique_ptr<fileutil::LoadedBuffer>;
-private:
static FileInterfaceUP openFile(const AttributeVector& attr, const vespalib::string& suffix);
-
-public:
static FileInterfaceUP openDAT(const AttributeVector& attr);
static FileInterfaceUP openIDX(const AttributeVector& attr);
static FileInterfaceUP openWeight(const AttributeVector& attr);
diff --git a/searchlib/src/vespa/searchlib/attribute/load_utils.hpp b/searchlib/src/vespa/searchlib/attribute/load_utils.hpp
index 4f856314997..50566b36e75 100644
--- a/searchlib/src/vespa/searchlib/attribute/load_utils.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/load_utils.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/loadedenumvalue.cpp b/searchlib/src/vespa/searchlib/attribute/loadedenumvalue.cpp
index 0baa17a7ace..779e020cdd0 100644
--- a/searchlib/src/vespa/searchlib/attribute/loadedenumvalue.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/loadedenumvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "loadedenumvalue.h"
#include <vespa/searchlib/common/sort.h>
diff --git a/searchlib/src/vespa/searchlib/attribute/loadedenumvalue.h b/searchlib/src/vespa/searchlib/attribute/loadedenumvalue.h
index c91fdd297f8..44144a76aaf 100644
--- a/searchlib/src/vespa/searchlib/attribute/loadedenumvalue.h
+++ b/searchlib/src/vespa/searchlib/attribute/loadedenumvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/loadednumericvalue.cpp b/searchlib/src/vespa/searchlib/attribute/loadednumericvalue.cpp
index 7365e57a5ea..54a7313e36c 100644
--- a/searchlib/src/vespa/searchlib/attribute/loadednumericvalue.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/loadednumericvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "loadednumericvalue.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/loadednumericvalue.h b/searchlib/src/vespa/searchlib/attribute/loadednumericvalue.h
index f3526404d37..bfc636d79b9 100644
--- a/searchlib/src/vespa/searchlib/attribute/loadednumericvalue.h
+++ b/searchlib/src/vespa/searchlib/attribute/loadednumericvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/loadedvalue.cpp b/searchlib/src/vespa/searchlib/attribute/loadedvalue.cpp
index 2ceaf67ae1f..555cdfecdbd 100644
--- a/searchlib/src/vespa/searchlib/attribute/loadedvalue.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/loadedvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "loadedvalue.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/loadedvalue.h b/searchlib/src/vespa/searchlib/attribute/loadedvalue.h
index 4e6b3d50df1..701ccdc902c 100644
--- a/searchlib/src/vespa/searchlib/attribute/loadedvalue.h
+++ b/searchlib/src/vespa/searchlib/attribute/loadedvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/multi_value_mapping.cpp b/searchlib/src/vespa/searchlib/attribute/multi_value_mapping.cpp
index 71f2bcf4d91..1491a92166a 100644
--- a/searchlib/src/vespa/searchlib/attribute/multi_value_mapping.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/multi_value_mapping.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributevector.h"
#include "i_enum_store.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/multi_value_mapping.h b/searchlib/src/vespa/searchlib/attribute/multi_value_mapping.h
index 35f8c89fb6d..9720e88543d 100644
--- a/searchlib/src/vespa/searchlib/attribute/multi_value_mapping.h
+++ b/searchlib/src/vespa/searchlib/attribute/multi_value_mapping.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/multi_value_mapping.hpp b/searchlib/src/vespa/searchlib/attribute/multi_value_mapping.hpp
index 715c8f75225..25065a200e9 100644
--- a/searchlib/src/vespa/searchlib/attribute/multi_value_mapping.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/multi_value_mapping.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/multi_value_mapping_base.cpp b/searchlib/src/vespa/searchlib/attribute/multi_value_mapping_base.cpp
index c57c18e1b0e..2edc30cc2c4 100644
--- a/searchlib/src/vespa/searchlib/attribute/multi_value_mapping_base.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/multi_value_mapping_base.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "multi_value_mapping_base.h"
#include <vespa/searchcommon/common/compaction_strategy.h>
diff --git a/searchlib/src/vespa/searchlib/attribute/multi_value_mapping_base.h b/searchlib/src/vespa/searchlib/attribute/multi_value_mapping_base.h
index 10efee37260..952e9dbbe56 100644
--- a/searchlib/src/vespa/searchlib/attribute/multi_value_mapping_base.h
+++ b/searchlib/src/vespa/searchlib/attribute/multi_value_mapping_base.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/multienumattribute.cpp b/searchlib/src/vespa/searchlib/attribute/multienumattribute.cpp
index 1071cc0a835..b114a355bb4 100644
--- a/searchlib/src/vespa/searchlib/attribute/multienumattribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/multienumattribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "multienumattribute.h"
#include "multienumattribute.hpp"
diff --git a/searchlib/src/vespa/searchlib/attribute/multienumattribute.h b/searchlib/src/vespa/searchlib/attribute/multienumattribute.h
index 056b1832169..de4e3dcdace 100644
--- a/searchlib/src/vespa/searchlib/attribute/multienumattribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/multienumattribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/multienumattribute.hpp b/searchlib/src/vespa/searchlib/attribute/multienumattribute.hpp
index 072398abcf9..932226add9d 100644
--- a/searchlib/src/vespa/searchlib/attribute/multienumattribute.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/multienumattribute.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.cpp b/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.cpp
index 0e1a6fac1a0..c058653bdcd 100644
--- a/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "multienumattributesaver.h"
#include "multivalueattributesaverutils.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.h b/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.h
index 766a828c147..7d635cfa755 100644
--- a/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.h
+++ b/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/multinumericattribute.cpp b/searchlib/src/vespa/searchlib/attribute/multinumericattribute.cpp
index e16474e45a8..a8c809488e4 100644
--- a/searchlib/src/vespa/searchlib/attribute/multinumericattribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/multinumericattribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "multinumericattribute.h"
#include "multinumericattribute.hpp"
diff --git a/searchlib/src/vespa/searchlib/attribute/multinumericattribute.h b/searchlib/src/vespa/searchlib/attribute/multinumericattribute.h
index c4e8795b0b1..0e4ebbcd0f4 100644
--- a/searchlib/src/vespa/searchlib/attribute/multinumericattribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/multinumericattribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -163,7 +163,7 @@ public:
void removeOldGenerations(generation_t firstUsed) override;
void onGenerationChange(generation_t generation) override;
- bool onLoad() override;
+ bool onLoad(vespalib::Executor *executor) override;
virtual bool onLoadEnumerated(ReaderBase &attrReader);
AttributeVector::SearchContext::UP
diff --git a/searchlib/src/vespa/searchlib/attribute/multinumericattribute.hpp b/searchlib/src/vespa/searchlib/attribute/multinumericattribute.hpp
index b0aa2dcb6c0..454eddeb6d4 100644
--- a/searchlib/src/vespa/searchlib/attribute/multinumericattribute.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/multinumericattribute.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "multinumericattribute.h"
@@ -128,7 +128,7 @@ MultiValueNumericAttribute<B, M>::onLoadEnumerated(ReaderBase & attrReader)
template <typename B, typename M>
bool
-MultiValueNumericAttribute<B, M>::onLoad()
+MultiValueNumericAttribute<B, M>::onLoad(vespalib::Executor *)
{
PrimitiveReader<MValueType> attrReader(*this);
bool ok(attrReader.getHasLoadData());
diff --git a/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.cpp b/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.cpp
index f4c55777e09..031d8c9649d 100644
--- a/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "multinumericattributesaver.h"
#include "multivalueattributesaverutils.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.h b/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.h
index 4053b555b2a..8000de97940 100644
--- a/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.h
+++ b/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/multinumericenumattribute.cpp b/searchlib/src/vespa/searchlib/attribute/multinumericenumattribute.cpp
index 0e5efe21de0..66ace43f682 100644
--- a/searchlib/src/vespa/searchlib/attribute/multinumericenumattribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/multinumericenumattribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "multinumericenumattribute.h"
#include "multinumericenumattribute.hpp"
diff --git a/searchlib/src/vespa/searchlib/attribute/multinumericenumattribute.h b/searchlib/src/vespa/searchlib/attribute/multinumericenumattribute.h
index e6b1103d9f4..85d01aaef78 100644
--- a/searchlib/src/vespa/searchlib/attribute/multinumericenumattribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/multinumericenumattribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -151,7 +151,7 @@ protected:
public:
MultiValueNumericEnumAttribute(const vespalib::string & baseFileName, const AttributeVector::Config & cfg);
- bool onLoad() override;
+ bool onLoad(vespalib::Executor *executor) override;
bool onLoadEnumerated(ReaderBase &attrReader);
diff --git a/searchlib/src/vespa/searchlib/attribute/multinumericenumattribute.hpp b/searchlib/src/vespa/searchlib/attribute/multinumericenumattribute.hpp
index fffdbcde1bb..5449f85bf68 100644
--- a/searchlib/src/vespa/searchlib/attribute/multinumericenumattribute.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/multinumericenumattribute.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -86,7 +86,7 @@ MultiValueNumericEnumAttribute<B, M>::onLoadEnumerated(ReaderBase &attrReader)
template <typename B, typename M>
bool
-MultiValueNumericEnumAttribute<B, M>::onLoad()
+MultiValueNumericEnumAttribute<B, M>::onLoad(vespalib::Executor *)
{
AttributeReader attrReader(*this);
bool ok(attrReader.getHasLoadData());
diff --git a/searchlib/src/vespa/searchlib/attribute/multinumericpostattribute.cpp b/searchlib/src/vespa/searchlib/attribute/multinumericpostattribute.cpp
index 83c9c2850ae..ed4e7e020ac 100644
--- a/searchlib/src/vespa/searchlib/attribute/multinumericpostattribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/multinumericpostattribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "multinumericpostattribute.h"
#include "multinumericpostattribute.hpp"
diff --git a/searchlib/src/vespa/searchlib/attribute/multinumericpostattribute.h b/searchlib/src/vespa/searchlib/attribute/multinumericpostattribute.h
index e6ce775deb4..eca6b68455c 100644
--- a/searchlib/src/vespa/searchlib/attribute/multinumericpostattribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/multinumericpostattribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/multinumericpostattribute.hpp b/searchlib/src/vespa/searchlib/attribute/multinumericpostattribute.hpp
index e3fbed1ecc2..a655c30bc37 100644
--- a/searchlib/src/vespa/searchlib/attribute/multinumericpostattribute.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/multinumericpostattribute.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/multistringattribute.cpp b/searchlib/src/vespa/searchlib/attribute/multistringattribute.cpp
index 27fca1f0d9a..c89d154949e 100644
--- a/searchlib/src/vespa/searchlib/attribute/multistringattribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/multistringattribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "multistringattribute.h"
#include "multistringattribute.hpp"
diff --git a/searchlib/src/vespa/searchlib/attribute/multistringattribute.h b/searchlib/src/vespa/searchlib/attribute/multistringattribute.h
index c4fe5d26981..5d2a5237004 100644
--- a/searchlib/src/vespa/searchlib/attribute/multistringattribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/multistringattribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/multistringattribute.hpp b/searchlib/src/vespa/searchlib/attribute/multistringattribute.hpp
index f1508cfa631..89cd8ca310a 100644
--- a/searchlib/src/vespa/searchlib/attribute/multistringattribute.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/multistringattribute.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/multistringpostattribute.cpp b/searchlib/src/vespa/searchlib/attribute/multistringpostattribute.cpp
index 0ce8711ccfc..a7a09128e37 100644
--- a/searchlib/src/vespa/searchlib/attribute/multistringpostattribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/multistringpostattribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "multistringpostattribute.h"
#include "multistringpostattribute.hpp"
diff --git a/searchlib/src/vespa/searchlib/attribute/multistringpostattribute.h b/searchlib/src/vespa/searchlib/attribute/multistringpostattribute.h
index a132e2eaff9..9fe1522709b 100644
--- a/searchlib/src/vespa/searchlib/attribute/multistringpostattribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/multistringpostattribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/multistringpostattribute.hpp b/searchlib/src/vespa/searchlib/attribute/multistringpostattribute.hpp
index 381d5b6339b..2abe5894163 100644
--- a/searchlib/src/vespa/searchlib/attribute/multistringpostattribute.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/multistringpostattribute.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/multivalue.h b/searchlib/src/vespa/searchlib/attribute/multivalue.h
index 54c10bdc7cf..eb2c27cf670 100644
--- a/searchlib/src/vespa/searchlib/attribute/multivalue.h
+++ b/searchlib/src/vespa/searchlib/attribute/multivalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/multivalueattribute.cpp b/searchlib/src/vespa/searchlib/attribute/multivalueattribute.cpp
index 206226386be..c64f6ca1b7a 100644
--- a/searchlib/src/vespa/searchlib/attribute/multivalueattribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/multivalueattribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "multivalueattribute.h"
#include "multivalueattribute.hpp"
diff --git a/searchlib/src/vespa/searchlib/attribute/multivalueattribute.h b/searchlib/src/vespa/searchlib/attribute/multivalueattribute.h
index d36777a25a9..a2d4d598c47 100644
--- a/searchlib/src/vespa/searchlib/attribute/multivalueattribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/multivalueattribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -48,7 +48,7 @@ protected:
**/
bool onAddDoc(DocId doc) override { (void) doc; return false; }
- vespalib::AddressSpace getMultiValueAddressSpaceUsage() const override;
+ void populate_address_space_usage(AddressSpaceUsage& usage) const override;
public:
MultiValueAttribute(const vespalib::string & baseFileName, const AttributeVector::Config & cfg);
diff --git a/searchlib/src/vespa/searchlib/attribute/multivalueattribute.hpp b/searchlib/src/vespa/searchlib/attribute/multivalueattribute.hpp
index 2e73909ea1e..b9ef16c6adf 100644
--- a/searchlib/src/vespa/searchlib/attribute/multivalueattribute.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/multivalueattribute.hpp
@@ -1,7 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
+#include "address_space_components.h"
#include <vespa/searchlib/attribute/multivalueattribute.h>
#include <vespa/vespalib/stllike/hash_map.h>
#include <vespa/vespalib/stllike/hash_map.hpp>
@@ -200,13 +201,13 @@ MultiValueAttribute<B, M>::apply_attribute_changes_to_wset(DocumentValues& docVa
}
template <typename B, typename M>
-vespalib::AddressSpace
-MultiValueAttribute<B, M>::getMultiValueAddressSpaceUsage() const
+void
+MultiValueAttribute<B, M>::populate_address_space_usage(AddressSpaceUsage& usage) const
{
- return _mvMapping.getAddressSpaceUsage();
+ B::populate_address_space_usage(usage);
+ usage.set(AddressSpaceComponents::multi_value, _mvMapping.getAddressSpaceUsage());
}
-
template <typename B, typename M>
bool
MultiValueAttribute<B, M>::addDoc(DocId & doc)
diff --git a/searchlib/src/vespa/searchlib/attribute/multivalueattributesaver.cpp b/searchlib/src/vespa/searchlib/attribute/multivalueattributesaver.cpp
index 3bfbec23592..92d6e45850e 100644
--- a/searchlib/src/vespa/searchlib/attribute/multivalueattributesaver.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/multivalueattributesaver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "multivalueattributesaver.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/multivalueattributesaver.h b/searchlib/src/vespa/searchlib/attribute/multivalueattributesaver.h
index e44d0da2426..cd7a5a00ff7 100644
--- a/searchlib/src/vespa/searchlib/attribute/multivalueattributesaver.h
+++ b/searchlib/src/vespa/searchlib/attribute/multivalueattributesaver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/multivalueattributesaverutils.cpp b/searchlib/src/vespa/searchlib/attribute/multivalueattributesaverutils.cpp
index 16acf70eb59..6d23840bd2b 100644
--- a/searchlib/src/vespa/searchlib/attribute/multivalueattributesaverutils.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/multivalueattributesaverutils.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "multivalueattributesaverutils.h"
#include <vespa/searchlib/util/bufferwriter.h>
diff --git a/searchlib/src/vespa/searchlib/attribute/multivalueattributesaverutils.h b/searchlib/src/vespa/searchlib/attribute/multivalueattributesaverutils.h
index e34f43deb0b..82de7726848 100644
--- a/searchlib/src/vespa/searchlib/attribute/multivalueattributesaverutils.h
+++ b/searchlib/src/vespa/searchlib/attribute/multivalueattributesaverutils.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/not_implemented_attribute.cpp b/searchlib/src/vespa/searchlib/attribute/not_implemented_attribute.cpp
index 72332bc9d89..ea42a73417b 100644
--- a/searchlib/src/vespa/searchlib/attribute/not_implemented_attribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/not_implemented_attribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "not_implemented_attribute.h"
#include <vespa/vespalib/util/exceptions.h>
diff --git a/searchlib/src/vespa/searchlib/attribute/not_implemented_attribute.h b/searchlib/src/vespa/searchlib/attribute/not_implemented_attribute.h
index f311907bd91..995efc9a2f7 100644
--- a/searchlib/src/vespa/searchlib/attribute/not_implemented_attribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/not_implemented_attribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/numericbase.cpp b/searchlib/src/vespa/searchlib/attribute/numericbase.cpp
index c94ca313aca..9e49d952bb4 100644
--- a/searchlib/src/vespa/searchlib/attribute/numericbase.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/numericbase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "numericbase.hpp"
diff --git a/searchlib/src/vespa/searchlib/attribute/numericbase.h b/searchlib/src/vespa/searchlib/attribute/numericbase.h
index d56daed7413..24ed00f2ce4 100644
--- a/searchlib/src/vespa/searchlib/attribute/numericbase.h
+++ b/searchlib/src/vespa/searchlib/attribute/numericbase.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/numericbase.hpp b/searchlib/src/vespa/searchlib/attribute/numericbase.hpp
index 012434f87f3..d3d98e2747d 100644
--- a/searchlib/src/vespa/searchlib/attribute/numericbase.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/numericbase.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/posting_list_merger.cpp b/searchlib/src/vespa/searchlib/attribute/posting_list_merger.cpp
index be407ebc849..4aa9ad01f2c 100644
--- a/searchlib/src/vespa/searchlib/attribute/posting_list_merger.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/posting_list_merger.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "posting_list_merger.h"
#include <algorithm>
diff --git a/searchlib/src/vespa/searchlib/attribute/posting_list_merger.h b/searchlib/src/vespa/searchlib/attribute/posting_list_merger.h
index 1c2e6583ad9..30ca1614e7f 100644
--- a/searchlib/src/vespa/searchlib/attribute/posting_list_merger.h
+++ b/searchlib/src/vespa/searchlib/attribute/posting_list_merger.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/posting_list_traverser.h b/searchlib/src/vespa/searchlib/attribute/posting_list_traverser.h
index fabeb3c1164..4fe2b4ff748 100644
--- a/searchlib/src/vespa/searchlib/attribute/posting_list_traverser.h
+++ b/searchlib/src/vespa/searchlib/attribute/posting_list_traverser.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/postingchange.cpp b/searchlib/src/vespa/searchlib/attribute/postingchange.cpp
index 4d4fd3aa9bf..9081d33f91e 100644
--- a/searchlib/src/vespa/searchlib/attribute/postingchange.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/postingchange.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "postingchange.h"
#include "multivalue.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/postingchange.h b/searchlib/src/vespa/searchlib/attribute/postingchange.h
index 4a358b63046..19b638809e0 100644
--- a/searchlib/src/vespa/searchlib/attribute/postingchange.h
+++ b/searchlib/src/vespa/searchlib/attribute/postingchange.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/postingdata.h b/searchlib/src/vespa/searchlib/attribute/postingdata.h
index 8fe3446dac3..785c21f9cb4 100644
--- a/searchlib/src/vespa/searchlib/attribute/postingdata.h
+++ b/searchlib/src/vespa/searchlib/attribute/postingdata.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/postinglistattribute.cpp b/searchlib/src/vespa/searchlib/attribute/postinglistattribute.cpp
index e988091db45..d01b88114ec 100644
--- a/searchlib/src/vespa/searchlib/attribute/postinglistattribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/postinglistattribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "postinglistattribute.h"
#include "loadednumericvalue.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/postinglistattribute.h b/searchlib/src/vespa/searchlib/attribute/postinglistattribute.h
index 9c00ed9c07e..b1dbefa576a 100644
--- a/searchlib/src/vespa/searchlib/attribute/postinglistattribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/postinglistattribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.cpp b/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.cpp
index f270b78f84f..f8339c05d4c 100644
--- a/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "postinglistsearchcontext.h"
#include "postinglistsearchcontext.hpp"
diff --git a/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.h b/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.h
index ceb8926bbe3..318dc4dc6c5 100644
--- a/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.h
+++ b/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.hpp b/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.hpp
index fb2617064e4..88e761a63f9 100644
--- a/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/postinglisttraits.cpp b/searchlib/src/vespa/searchlib/attribute/postinglisttraits.cpp
index 1dd6631080a..5552c9f56df 100644
--- a/searchlib/src/vespa/searchlib/attribute/postinglisttraits.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/postinglisttraits.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "postinglisttraits.h"
#include <vespa/vespalib/btree/btreestore.hpp>
diff --git a/searchlib/src/vespa/searchlib/attribute/postinglisttraits.h b/searchlib/src/vespa/searchlib/attribute/postinglisttraits.h
index 0c0b43a22e6..514d0735045 100644
--- a/searchlib/src/vespa/searchlib/attribute/postinglisttraits.h
+++ b/searchlib/src/vespa/searchlib/attribute/postinglisttraits.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/postingstore.cpp b/searchlib/src/vespa/searchlib/attribute/postingstore.cpp
index 477917debf0..3451c2b0456 100644
--- a/searchlib/src/vespa/searchlib/attribute/postingstore.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/postingstore.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "postingstore.h"
#include <vespa/searchlib/common/growablebitvector.h>
diff --git a/searchlib/src/vespa/searchlib/attribute/postingstore.h b/searchlib/src/vespa/searchlib/attribute/postingstore.h
index d1d86dc9f91..a0f0be1c430 100644
--- a/searchlib/src/vespa/searchlib/attribute/postingstore.h
+++ b/searchlib/src/vespa/searchlib/attribute/postingstore.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/postingstore.hpp b/searchlib/src/vespa/searchlib/attribute/postingstore.hpp
index 0e8cc3fb1f5..1993714e49d 100644
--- a/searchlib/src/vespa/searchlib/attribute/postingstore.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/postingstore.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "postingstore.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/predicate_attribute.cpp b/searchlib/src/vespa/searchlib/attribute/predicate_attribute.cpp
index 555117126a9..d9024af724b 100644
--- a/searchlib/src/vespa/searchlib/attribute/predicate_attribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/predicate_attribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_header.h"
#include "iattributesavetarget.h"
@@ -185,7 +185,7 @@ struct DummyObserver : SimpleIndexDeserializeObserver<> {
}
bool
-PredicateAttribute::onLoad()
+PredicateAttribute::onLoad(vespalib::Executor *)
{
auto loaded_buffer = attribute::LoadUtils::loadDAT(*this);
char *rawBuffer = const_cast<char *>(static_cast<const char *>(loaded_buffer->buffer()));
diff --git a/searchlib/src/vespa/searchlib/attribute/predicate_attribute.h b/searchlib/src/vespa/searchlib/attribute/predicate_attribute.h
index 4d7fd3c235b..0d2931a1f04 100644
--- a/searchlib/src/vespa/searchlib/attribute/predicate_attribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/predicate_attribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -47,7 +47,7 @@ public:
predicate::PredicateIndex &getIndex() { return *_index; }
void onSave(IAttributeSaveTarget & saveTarget) override;
- bool onLoad() override;
+ bool onLoad(vespalib::Executor *executor) override;
void onCommit() override;
void removeOldGenerations(generation_t firstUsed) override;
void onGenerationChange(generation_t generation) override;
diff --git a/searchlib/src/vespa/searchlib/attribute/primitivereader.h b/searchlib/src/vespa/searchlib/attribute/primitivereader.h
index cf8821526d0..12eac275f8a 100644
--- a/searchlib/src/vespa/searchlib/attribute/primitivereader.h
+++ b/searchlib/src/vespa/searchlib/attribute/primitivereader.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -13,7 +13,7 @@ namespace search {
public:
PrimitiveReader(AttributeVector &attr)
: ReaderBase(attr),
- _datReader(*_datFile)
+ _datReader(_datFile.file())
{ }
virtual ~PrimitiveReader() { }
diff --git a/searchlib/src/vespa/searchlib/attribute/readable_attribute_vector.h b/searchlib/src/vespa/searchlib/attribute/readable_attribute_vector.h
index 0e3954bdcb5..ace8c10e21e 100644
--- a/searchlib/src/vespa/searchlib/attribute/readable_attribute_vector.h
+++ b/searchlib/src/vespa/searchlib/attribute/readable_attribute_vector.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/readerbase.cpp b/searchlib/src/vespa/searchlib/attribute/readerbase.cpp
index b55ba221a42..f08130b9fbe 100644
--- a/searchlib/src/vespa/searchlib/attribute/readerbase.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/readerbase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributevector.h"
#include "load_utils.h"
@@ -19,8 +19,6 @@ const vespalib::string versionTag = "version";
const vespalib::string docIdLimitTag = "docIdLimit";
const vespalib::string createSerialNumTag = "createSerialNum";
-constexpr size_t DIRECTIO_ALIGNMENT(4_Ki);
-
uint64_t
extractCreateSerialNum(const vespalib::GenericHeader &header)
{
@@ -35,53 +33,38 @@ ReaderBase::ReaderBase(AttributeVector &attr)
attribute::LoadUtils::openWeight(attr) : std::unique_ptr<Fast_BufferedFile>()),
_idxFile(attr.hasMultiValue() ?
attribute::LoadUtils::openIDX(attr) : std::unique_ptr<Fast_BufferedFile>()),
- _weightReader(*_weightFile),
- _idxReader(*_idxFile),
- _enumReader(*_datFile),
+ _weightReader(_weightFile.file()),
+ _idxReader(_idxFile.file()),
+ _enumReader(_datFile.file()),
_currIdx(0),
- _datHeaderLen(0u),
- _idxHeaderLen(0u),
- _weightHeaderLen(0u),
_createSerialNum(0u),
_fixedWidth(attr.getFixedWidth()),
_enumerated(false),
_hasLoadData(false),
_version(0),
- _docIdLimit(0),
- _datHeader(DIRECTIO_ALIGNMENT),
- _datFileSize(0),
- _idxFileSize(0)
+ _docIdLimit(0)
{
- _datHeaderLen = _datHeader.readFile(*_datFile);
- _datFile->SetPosition(_datHeaderLen);
- if (!attr.headerTypeOK(_datHeader) ||
- !extractFileSize(_datHeader, *_datFile, _datFileSize)) {
- _datFile->Close();
+ if (!attr.headerTypeOK(_datFile.header())) {
+ _datFile.close();
}
- _createSerialNum = extractCreateSerialNum(_datHeader);
- if (_datHeader.hasTag(versionTag)) {
- _version = _datHeader.getTag(versionTag).asInteger();
+ _createSerialNum = extractCreateSerialNum(_datFile.header());
+ if (_datFile.header().hasTag(versionTag)) {
+ _version = _datFile.header().getTag(versionTag).asInteger();
}
- _docIdLimit = _datHeader.getTag(docIdLimitTag).asInteger();
+ _docIdLimit = _datFile.header().getTag(docIdLimitTag).asInteger();
if (hasIdx()) {
- vespalib::FileHeader idxHeader(DIRECTIO_ALIGNMENT);
- _idxHeaderLen = idxHeader.readFile(*_idxFile);
- _idxFile->SetPosition(_idxHeaderLen);
- if (!attr.headerTypeOK(idxHeader) ||
- !extractFileSize(idxHeader, *_idxFile, _idxFileSize)) {
- _idxFile->Close();
+ if (!attr.headerTypeOK(_idxFile.header())) {
+ _idxFile.close();
} else {
_currIdx = _idxReader.readHostOrder();
}
}
if (hasWeight()) {
- vespalib::FileHeader weightHeader(DIRECTIO_ALIGNMENT);
- _weightHeaderLen = weightHeader.readFile(*_weightFile);
- _weightFile->SetPosition(_weightHeaderLen);
- if (!attr.headerTypeOK(weightHeader))
- _weightFile->Close();
+ if (!attr.headerTypeOK(_weightFile.header())) {
+ _weightFile.close();
+ }
}
- if (hasData() && AttributeVector::isEnumerated(_datHeader)) {
+ if (hasData() && AttributeVector::isEnumerated(_datFile.header())) {
_enumerated = true;
}
_hasLoadData = hasData() &&
@@ -93,40 +76,30 @@ ReaderBase::~ReaderBase() = default;
bool
ReaderBase::hasWeight() const {
- return _weightFile.get() && _weightFile->IsOpened();
+ return _weightFile.valid();
}
bool
ReaderBase::hasIdx() const {
- return _idxFile.get() && _idxFile->IsOpened();
+ return _idxFile.valid();
}
bool
ReaderBase::hasData() const {
- return _datFile.get() && _datFile->IsOpened();
-}
-
-bool
-ReaderBase::
-extractFileSize(const vespalib::GenericHeader &header,
- FastOS_FileInterface &file, uint64_t &fileSize)
-{
- fileSize = file.GetSize();
- return FileSizeCalculator::extractFileSize(header, header.getSize(),
- file.GetFileName(), fileSize);
+ return _datFile.valid();
}
void
ReaderBase::rewind()
{
- _datFile->SetPosition(_datHeaderLen);
+ _datFile.rewind();
_currIdx = 0;
if (hasIdx()) {
- _idxFile->SetPosition(_idxHeaderLen);
+ _idxFile.rewind();
_currIdx = _idxReader.readHostOrder();
}
if (hasWeight()) {
- _weightFile->SetPosition(_weightHeaderLen);
+ _weightFile.rewind();
}
}
@@ -137,13 +110,13 @@ ReaderBase::getNumValues()
return getEnumCount();
} else {
if (_fixedWidth > 0) {
- size_t dataSize(_datFileSize - _datHeaderLen);
+ size_t dataSize = _datFile.data_size();
assert((dataSize % _fixedWidth) == 0);
return dataSize / _fixedWidth;
} else {
// TODO. This limits the number of multivalues to 2^32-1
// This is assert during write, so this should never be a problem here.
- _idxFile->SetPosition(_idxFileSize - 4);
+ _idxFile.file().SetPosition(_idxFile.file_size() - 4);
size_t numValues = _idxReader.readHostOrder();
rewind();
return numValues;
diff --git a/searchlib/src/vespa/searchlib/attribute/readerbase.h b/searchlib/src/vespa/searchlib/attribute/readerbase.h
index a7685e4532a..070dc1f99fb 100644
--- a/searchlib/src/vespa/searchlib/attribute/readerbase.h
+++ b/searchlib/src/vespa/searchlib/attribute/readerbase.h
@@ -1,7 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
+#include <vespa/searchlib/util/file_with_header.h>
#include <vespa/searchlib/util/fileutil.h>
#include <cassert>
@@ -21,18 +22,15 @@ public:
bool hasData() const;
uint32_t getNumIdx() const {
- return (_idxFileSize - _idxHeaderLen) /sizeof(uint32_t);
+ return (_idxFile.data_size()) /sizeof(uint32_t);
}
size_t getEnumCount() const {
- size_t dataSize(_datFileSize - _datHeaderLen);
+ size_t dataSize = _datFile.data_size();
assert((dataSize % sizeof(uint32_t)) == 0);
return dataSize / sizeof(uint32_t);
}
- static bool
- extractFileSize(const vespalib::GenericHeader &header, FastOS_FileInterface &file, uint64_t &fileSize);
-
size_t getNumValues();
int32_t getNextWeight() { return _weightReader.readHostOrder(); }
uint32_t getNextEnum() { return _enumReader.readHostOrder(); }
@@ -43,32 +41,26 @@ public:
uint32_t getVersion() const { return _version; }
uint32_t getDocIdLimit() const { return _docIdLimit; }
const vespalib::GenericHeader &getDatHeader() const {
- return _datHeader;
+ return _datFile.header();
}
protected:
- std::unique_ptr<FastOS_FileInterface> _datFile;
+ FileWithHeader _datFile;
private:
- std::unique_ptr<FastOS_FileInterface> _weightFile;
- std::unique_ptr<FastOS_FileInterface> _idxFile;
+ FileWithHeader _weightFile;
+ FileWithHeader _idxFile;
FileReader<int32_t> _weightReader;
FileReader<uint32_t> _idxReader;
FileReader<uint32_t> _enumReader;
uint32_t _currIdx;
- uint32_t _datHeaderLen;
- uint32_t _idxHeaderLen;
- uint32_t _weightHeaderLen;
uint64_t _createSerialNum;
size_t _fixedWidth;
bool _enumerated;
bool _hasLoadData;
uint32_t _version;
uint32_t _docIdLimit;
- vespalib::FileHeader _datHeader;
- uint64_t _datFileSize;
- uint64_t _idxFileSize;
protected:
size_t getDataCountHelper(size_t elemSize) const {
- size_t dataSize(_datFileSize - _datHeaderLen);
+ size_t dataSize = _datFile.data_size();
return dataSize / elemSize;
}
};
diff --git a/searchlib/src/vespa/searchlib/attribute/reference.h b/searchlib/src/vespa/searchlib/attribute/reference.h
index 426ce9ea314..cbd75be8367 100644
--- a/searchlib/src/vespa/searchlib/attribute/reference.h
+++ b/searchlib/src/vespa/searchlib/attribute/reference.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp b/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp
index 8261f483e55..342c1ea568b 100644
--- a/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributesaver.h"
#include "load_utils.h"
@@ -216,7 +216,7 @@ ReferenceAttribute::onInitSave(vespalib::stringref fileName)
}
bool
-ReferenceAttribute::onLoad()
+ReferenceAttribute::onLoad(vespalib::Executor *)
{
ReaderBase attrReader(*this);
bool ok(attrReader.getHasLoadData());
diff --git a/searchlib/src/vespa/searchlib/attribute/reference_attribute.h b/searchlib/src/vespa/searchlib/attribute/reference_attribute.h
index 856dd0a9f9f..b411d6cb923 100644
--- a/searchlib/src/vespa/searchlib/attribute/reference_attribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/reference_attribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -53,7 +53,7 @@ private:
void onCommit() override;
void onUpdateStat() override;
std::unique_ptr<AttributeSaver> onInitSave(vespalib::stringref fileName) override;
- bool onLoad() override;
+ bool onLoad(vespalib::Executor *executor) override;
uint64_t getUniqueValueCount() const override;
bool consider_compact_values(const CompactionStrategy &compactionStrategy);
diff --git a/searchlib/src/vespa/searchlib/attribute/reference_attribute_saver.cpp b/searchlib/src/vespa/searchlib/attribute/reference_attribute_saver.cpp
index aa76967e4ed..1dfb49268bb 100644
--- a/searchlib/src/vespa/searchlib/attribute/reference_attribute_saver.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/reference_attribute_saver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "reference_attribute_saver.h"
#include <vespa/vespalib/util/array.hpp>
diff --git a/searchlib/src/vespa/searchlib/attribute/reference_attribute_saver.h b/searchlib/src/vespa/searchlib/attribute/reference_attribute_saver.h
index ef64ee59954..cb6fb7e15e1 100644
--- a/searchlib/src/vespa/searchlib/attribute/reference_attribute_saver.h
+++ b/searchlib/src/vespa/searchlib/attribute/reference_attribute_saver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/reference_mappings.cpp b/searchlib/src/vespa/searchlib/attribute/reference_mappings.cpp
index 9022bcee7f3..615cf530354 100644
--- a/searchlib/src/vespa/searchlib/attribute/reference_mappings.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/reference_mappings.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "reference_mappings.h"
#include "reference.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/reference_mappings.h b/searchlib/src/vespa/searchlib/attribute/reference_mappings.h
index 84dea276740..28aea85a343 100644
--- a/searchlib/src/vespa/searchlib/attribute/reference_mappings.h
+++ b/searchlib/src/vespa/searchlib/attribute/reference_mappings.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/searchcontextelementiterator.cpp b/searchlib/src/vespa/searchlib/attribute/searchcontextelementiterator.cpp
index 87c09186746..aefc86ee8f7 100644
--- a/searchlib/src/vespa/searchlib/attribute/searchcontextelementiterator.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/searchcontextelementiterator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "searchcontextelementiterator.h"
#include <vespa/searchcommon/attribute/i_search_context.h>
diff --git a/searchlib/src/vespa/searchlib/attribute/searchcontextelementiterator.h b/searchlib/src/vespa/searchlib/attribute/searchcontextelementiterator.h
index c6c5aac1cd2..f5619613fd0 100644
--- a/searchlib/src/vespa/searchlib/attribute/searchcontextelementiterator.h
+++ b/searchlib/src/vespa/searchlib/attribute/searchcontextelementiterator.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/singleboolattribute.cpp b/searchlib/src/vespa/searchlib/attribute/singleboolattribute.cpp
index 6c8edea13cf..9a71248a53d 100644
--- a/searchlib/src/vespa/searchlib/attribute/singleboolattribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/singleboolattribute.cpp
@@ -1,13 +1,14 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include "singleboolattribute.h"
#include "attributevector.hpp"
-#include "primitivereader.h"
#include "iattributesavetarget.h"
#include "ipostinglistsearchcontext.h"
+#include "primitivereader.h"
+#include "singleboolattribute.h"
+#include <vespa/searchlib/common/bitvectoriterator.h>
#include <vespa/searchlib/query/query_term_simple.h>
#include <vespa/searchlib/queryeval/emptysearch.h>
-#include <vespa/searchlib/common/bitvectoriterator.h>
+#include <vespa/searchlib/util/file_settings.h>
#include <vespa/vespalib/data/databuffer.h>
#include <vespa/vespalib/util/size_literals.h>
@@ -178,7 +179,7 @@ SingleBoolAttribute::getSearch(std::unique_ptr<QueryTermSimple> term, const attr
}
bool
-SingleBoolAttribute::onLoad()
+SingleBoolAttribute::onLoad(vespalib::Executor *)
{
PrimitiveReader<uint32_t> attrReader(*this);
bool ok(attrReader.hasData());
@@ -245,7 +246,7 @@ SingleBoolAttribute::onShrinkLidSpace()
uint64_t
SingleBoolAttribute::getEstimatedSaveByteSize() const
{
- constexpr uint64_t headerSize = 4_Ki + sizeof(uint32_t);
+ constexpr uint64_t headerSize = FileSettings::DIRECTIO_ALIGNMENT + sizeof(uint32_t);
return headerSize + _bv.sizeBytes();
}
diff --git a/searchlib/src/vespa/searchlib/attribute/singleboolattribute.h b/searchlib/src/vespa/searchlib/attribute/singleboolattribute.h
index 579c77a382d..78c07719271 100644
--- a/searchlib/src/vespa/searchlib/attribute/singleboolattribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/singleboolattribute.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -22,7 +22,7 @@ public:
bool addDoc(DocId & doc) override;
void onAddDocs(DocId docIdLimit) override;
void onUpdateStat() override;
- bool onLoad() override;
+ bool onLoad(vespalib::Executor *executor) override;
void onSave(IAttributeSaveTarget &saveTarget) override;
void clearDocs(DocId lidLow, DocId lidLimit) override;
void onShrinkLidSpace() override;
diff --git a/searchlib/src/vespa/searchlib/attribute/singleenumattribute.cpp b/searchlib/src/vespa/searchlib/attribute/singleenumattribute.cpp
index 49249b4187c..4323e57f6b1 100644
--- a/searchlib/src/vespa/searchlib/attribute/singleenumattribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/singleenumattribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "singleenumattribute.h"
#include "singleenumattribute.hpp"
diff --git a/searchlib/src/vespa/searchlib/attribute/singleenumattribute.h b/searchlib/src/vespa/searchlib/attribute/singleenumattribute.h
index 065da5922a2..a6bcfd92449 100644
--- a/searchlib/src/vespa/searchlib/attribute/singleenumattribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/singleenumattribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/singleenumattribute.hpp b/searchlib/src/vespa/searchlib/attribute/singleenumattribute.hpp
index a9a94afb763..19fa87e35ae 100644
--- a/searchlib/src/vespa/searchlib/attribute/singleenumattribute.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/singleenumattribute.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/singleenumattributesaver.cpp b/searchlib/src/vespa/searchlib/attribute/singleenumattributesaver.cpp
index f3552db7c05..395fa59eeb7 100644
--- a/searchlib/src/vespa/searchlib/attribute/singleenumattributesaver.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/singleenumattributesaver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "singleenumattributesaver.h"
#include <vespa/vespalib/util/array.hpp>
diff --git a/searchlib/src/vespa/searchlib/attribute/singleenumattributesaver.h b/searchlib/src/vespa/searchlib/attribute/singleenumattributesaver.h
index 29210a8f31d..c2d63c2b017 100644
--- a/searchlib/src/vespa/searchlib/attribute/singleenumattributesaver.h
+++ b/searchlib/src/vespa/searchlib/attribute/singleenumattributesaver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.cpp b/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.cpp
index 02dd60d5da6..f107cbe55a4 100644
--- a/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "singlenumericattribute.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.h b/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.h
index ab7cbb74b47..ead825a0e9d 100644
--- a/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -101,7 +101,7 @@ public:
void removeOldGenerations(generation_t firstUsed) override;
void onGenerationChange(generation_t generation) override;
bool addDoc(DocId & doc) override;
- bool onLoad() override;
+ bool onLoad(vespalib::Executor *executor) override;
bool onLoadEnumerated(ReaderBase &attrReader);
diff --git a/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.hpp b/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.hpp
index 671bdc44e22..4f2be68683d 100644
--- a/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "attributeiterators.hpp"
@@ -126,7 +126,7 @@ SingleValueNumericAttribute<B>::onLoadEnumerated(ReaderBase &attrReader)
template <typename B>
bool
-SingleValueNumericAttribute<B>::onLoad()
+SingleValueNumericAttribute<B>::onLoad(vespalib::Executor *)
{
PrimitiveReader<T> attrReader(*this);
bool ok(attrReader.getHasLoadData());
diff --git a/searchlib/src/vespa/searchlib/attribute/singlenumericattributesaver.cpp b/searchlib/src/vespa/searchlib/attribute/singlenumericattributesaver.cpp
index 92e25097f40..f2fb0408f87 100644
--- a/searchlib/src/vespa/searchlib/attribute/singlenumericattributesaver.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/singlenumericattributesaver.cpp
@@ -1,7 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include "singlenumericattributesaver.h"
#include "iattributesavetarget.h"
+#include "singlenumericattributesaver.h"
+#include <vespa/searchlib/util/file_settings.h>
#include <vespa/vespalib/data/databuffer.h>
#include <vespa/vespalib/util/size_literals.h>
@@ -9,20 +10,13 @@ using vespalib::GenerationHandler;
namespace search {
-namespace {
-
-const uint32_t MIN_ALIGNMENT = 4_Ki;
-
-}
-
-
SingleValueNumericAttributeSaver::
SingleValueNumericAttributeSaver(const attribute::AttributeHeader &header,
const void *data, size_t size)
: AttributeSaver(vespalib::GenerationHandler::Guard(), header),
_buf()
{
- _buf = std::make_unique<BufferBuf>(size, MIN_ALIGNMENT);
+ _buf = std::make_unique<BufferBuf>(size, FileSettings::DIRECTIO_ALIGNMENT);
assert(_buf->getFreeLen() >= size);
if (size > 0) {
memcpy(_buf->getFree(), data, size);
@@ -31,11 +25,8 @@ SingleValueNumericAttributeSaver(const attribute::AttributeHeader &header,
assert(_buf->getDataLen() == size);
}
-
SingleValueNumericAttributeSaver::~SingleValueNumericAttributeSaver() = default;
-
-
bool
SingleValueNumericAttributeSaver::onSave(IAttributeSaveTarget &saveTarget)
{
@@ -43,5 +34,4 @@ SingleValueNumericAttributeSaver::onSave(IAttributeSaveTarget &saveTarget)
return true;
}
-
} // namespace search
diff --git a/searchlib/src/vespa/searchlib/attribute/singlenumericattributesaver.h b/searchlib/src/vespa/searchlib/attribute/singlenumericattributesaver.h
index 3205f88b1eb..6847cc202fd 100644
--- a/searchlib/src/vespa/searchlib/attribute/singlenumericattributesaver.h
+++ b/searchlib/src/vespa/searchlib/attribute/singlenumericattributesaver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.cpp b/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.cpp
index 6c831cade89..b1c84e240f8 100644
--- a/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "singlenumericenumattribute.h"
#include "singlenumericenumattribute.hpp"
diff --git a/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.h b/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.h
index 192af9373b6..4383527a4a4 100644
--- a/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -92,7 +92,7 @@ public:
~SingleValueNumericEnumAttribute();
void onCommit() override;
- bool onLoad() override;
+ bool onLoad(vespalib::Executor *executor) override;
bool onLoadEnumerated(ReaderBase &attrReader);
diff --git a/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.hpp b/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.hpp
index 096e2146e02..0c3e7aa92d5 100644
--- a/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -110,7 +110,7 @@ SingleValueNumericEnumAttribute<B>::onLoadEnumerated(ReaderBase &attrReader)
template <typename B>
bool
-SingleValueNumericEnumAttribute<B>::onLoad()
+SingleValueNumericEnumAttribute<B>::onLoad(vespalib::Executor *)
{
PrimitiveReader<T> attrReader(*this);
bool ok(attrReader.getHasLoadData());
diff --git a/searchlib/src/vespa/searchlib/attribute/singlenumericpostattribute.cpp b/searchlib/src/vespa/searchlib/attribute/singlenumericpostattribute.cpp
index 9de02dbeaf9..7fe3c76ec2e 100644
--- a/searchlib/src/vespa/searchlib/attribute/singlenumericpostattribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/singlenumericpostattribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "singlenumericpostattribute.h"
#include "singlenumericpostattribute.hpp"
diff --git a/searchlib/src/vespa/searchlib/attribute/singlenumericpostattribute.h b/searchlib/src/vespa/searchlib/attribute/singlenumericpostattribute.h
index aed561076ed..e98d9f527c2 100644
--- a/searchlib/src/vespa/searchlib/attribute/singlenumericpostattribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/singlenumericpostattribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/singlenumericpostattribute.hpp b/searchlib/src/vespa/searchlib/attribute/singlenumericpostattribute.hpp
index e1c2a817af7..64421b16b8b 100644
--- a/searchlib/src/vespa/searchlib/attribute/singlenumericpostattribute.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/singlenumericpostattribute.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/singlesmallnumericattribute.cpp b/searchlib/src/vespa/searchlib/attribute/singlesmallnumericattribute.cpp
index 8d460b5c661..9346bc43370 100644
--- a/searchlib/src/vespa/searchlib/attribute/singlesmallnumericattribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/singlesmallnumericattribute.cpp
@@ -1,12 +1,13 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include "singlesmallnumericattribute.h"
-#include "attributevector.hpp"
-#include "primitivereader.h"
#include "attributeiterators.hpp"
+#include "attributevector.hpp"
#include "iattributesavetarget.h"
+#include "primitivereader.h"
+#include "singlesmallnumericattribute.h"
#include <vespa/searchlib/query/query_term_simple.h>
#include <vespa/searchlib/queryeval/emptysearch.h>
+#include <vespa/searchlib/util/file_settings.h>
#include <vespa/vespalib/data/databuffer.h>
#include <vespa/vespalib/util/size_literals.h>
@@ -121,7 +122,7 @@ SingleValueSmallNumericAttribute::onGenerationChange(generation_t generation)
bool
-SingleValueSmallNumericAttribute::onLoad()
+SingleValueSmallNumericAttribute::onLoad(vespalib::Executor *)
{
PrimitiveReader<Word> attrReader(*this);
bool ok(attrReader.hasData());
@@ -200,7 +201,7 @@ SingleValueSmallNumericAttribute::onShrinkLidSpace()
uint64_t
SingleValueSmallNumericAttribute::getEstimatedSaveByteSize() const
{
- uint64_t headerSize = 4_Ki;
+ uint64_t headerSize = FileSettings::DIRECTIO_ALIGNMENT;
const size_t numDocs(getCommittedDocIdLimit());
const size_t numDataWords((numDocs + _valueShiftMask) >> _wordShift);
const size_t sz((numDataWords + 1) * sizeof(Word));
diff --git a/searchlib/src/vespa/searchlib/attribute/singlesmallnumericattribute.h b/searchlib/src/vespa/searchlib/attribute/singlesmallnumericattribute.h
index 965d046782b..9d95610c171 100644
--- a/searchlib/src/vespa/searchlib/attribute/singlesmallnumericattribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/singlesmallnumericattribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -118,7 +118,7 @@ public:
void removeOldGenerations(generation_t firstUsed) override;
void onGenerationChange(generation_t generation) override;
bool addDoc(DocId & doc) override;
- bool onLoad() override;
+ bool onLoad(vespalib::Executor *executor) override;
void onSave(IAttributeSaveTarget &saveTarget) override;
SearchContext::UP
diff --git a/searchlib/src/vespa/searchlib/attribute/singlestringattribute.cpp b/searchlib/src/vespa/searchlib/attribute/singlestringattribute.cpp
index 195926f656f..3ac0e3fd0f9 100644
--- a/searchlib/src/vespa/searchlib/attribute/singlestringattribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/singlestringattribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "singlestringattribute.h"
#include "singlestringattribute.hpp"
diff --git a/searchlib/src/vespa/searchlib/attribute/singlestringattribute.h b/searchlib/src/vespa/searchlib/attribute/singlestringattribute.h
index 6e1957c0ab2..cd0fe5cfb9a 100644
--- a/searchlib/src/vespa/searchlib/attribute/singlestringattribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/singlestringattribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/singlestringattribute.hpp b/searchlib/src/vespa/searchlib/attribute/singlestringattribute.hpp
index 532b83ea03c..606c99161be 100644
--- a/searchlib/src/vespa/searchlib/attribute/singlestringattribute.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/singlestringattribute.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/singlestringpostattribute.cpp b/searchlib/src/vespa/searchlib/attribute/singlestringpostattribute.cpp
index 0ee2dea3d85..6a1ec89a684 100644
--- a/searchlib/src/vespa/searchlib/attribute/singlestringpostattribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/singlestringpostattribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "singlestringpostattribute.h"
#include "singlestringpostattribute.hpp"
diff --git a/searchlib/src/vespa/searchlib/attribute/singlestringpostattribute.h b/searchlib/src/vespa/searchlib/attribute/singlestringpostattribute.h
index 46a84f966a1..a209dd4bfad 100644
--- a/searchlib/src/vespa/searchlib/attribute/singlestringpostattribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/singlestringpostattribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/singlestringpostattribute.hpp b/searchlib/src/vespa/searchlib/attribute/singlestringpostattribute.hpp
index 4432acf2c55..70d97d7b64c 100644
--- a/searchlib/src/vespa/searchlib/attribute/singlestringpostattribute.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/singlestringpostattribute.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/sourceselector.cpp b/searchlib/src/vespa/searchlib/attribute/sourceselector.cpp
index 8c1cbc3d672..b46866e61e2 100644
--- a/searchlib/src/vespa/searchlib/attribute/sourceselector.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/sourceselector.cpp
@@ -1,8 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sourceselector.h"
#include <vespa/fastlib/io/bufferedfile.h>
#include <vespa/searchlib/common/fileheadercontext.h>
+#include <vespa/searchlib/util/file_settings.h>
#include <vespa/vespalib/util/size_literals.h>
using search::queryeval::Source;
@@ -83,7 +84,7 @@ SourceSelector::LoadInfo::load()
// XXX no checking for success
file.ReadOpen(fileName.c_str());
- FileHeader fileHeader(4_Ki);
+ FileHeader fileHeader(FileSettings::DIRECTIO_ALIGNMENT);
fileHeader.readFile(file);
if (fileHeader.hasTag(defaultSourceTag)) {
_header._defaultSource = fileHeader.getTag(defaultSourceTag).asInteger();
diff --git a/searchlib/src/vespa/searchlib/attribute/sourceselector.h b/searchlib/src/vespa/searchlib/attribute/sourceselector.h
index 734bce42ac8..7ab79ea34e8 100644
--- a/searchlib/src/vespa/searchlib/attribute/sourceselector.h
+++ b/searchlib/src/vespa/searchlib/attribute/sourceselector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/stringattribute.cpp b/searchlib/src/vespa/searchlib/attribute/stringattribute.cpp
index 3573d11eb6f..2f47f2f9862 100644
--- a/searchlib/src/vespa/searchlib/attribute/stringattribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/stringattribute.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "stringattribute.h"
diff --git a/searchlib/src/vespa/searchlib/attribute/stringattribute.h b/searchlib/src/vespa/searchlib/attribute/stringattribute.h
index 9c6d2d40f73..bd0ca998a1a 100644
--- a/searchlib/src/vespa/searchlib/attribute/stringattribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/stringattribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/attribute/stringbase.cpp b/searchlib/src/vespa/searchlib/attribute/stringbase.cpp
index c3d7ba778ba..ec9b212fcf8 100644
--- a/searchlib/src/vespa/searchlib/attribute/stringbase.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/stringbase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributevector.hpp"
#include "load_utils.h"
@@ -364,7 +364,7 @@ StringAttribute::onLoadEnumerated(ReaderBase &attrReader)
}
bool
-StringAttribute::onLoad()
+StringAttribute::onLoad(vespalib::Executor *)
{
ReaderBase attrReader(*this);
bool ok(attrReader.getHasLoadData());
diff --git a/searchlib/src/vespa/searchlib/attribute/stringbase.h b/searchlib/src/vespa/searchlib/attribute/stringbase.h
index a136a9485cc..d5a407d412e 100644
--- a/searchlib/src/vespa/searchlib/attribute/stringbase.h
+++ b/searchlib/src/vespa/searchlib/attribute/stringbase.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -93,7 +93,7 @@ protected:
using EnumEntryType = const char*;
ChangeVector _changes;
Change _defaultValue;
- bool onLoad() override;
+ bool onLoad(vespalib::Executor *executor) override;
bool onLoadEnumerated(ReaderBase &attrReader);
diff --git a/searchlib/src/vespa/searchlib/bitcompression/CMakeLists.txt b/searchlib/src/vespa/searchlib/bitcompression/CMakeLists.txt
index bebfccc6433..1572fbced7d 100644
--- a/searchlib/src/vespa/searchlib/bitcompression/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/bitcompression/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_bitcompression OBJECT
SOURCES
compression.cpp
diff --git a/searchlib/src/vespa/searchlib/bitcompression/compression.cpp b/searchlib/src/vespa/searchlib/bitcompression/compression.cpp
index 62ae8854880..0d5835b4fa9 100644
--- a/searchlib/src/vespa/searchlib/bitcompression/compression.cpp
+++ b/searchlib/src/vespa/searchlib/bitcompression/compression.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "compression.h"
#include <vespa/searchlib/fef/termfieldmatchdata.h>
diff --git a/searchlib/src/vespa/searchlib/bitcompression/compression.h b/searchlib/src/vespa/searchlib/bitcompression/compression.h
index 48b12c193ed..973d622461a 100644
--- a/searchlib/src/vespa/searchlib/bitcompression/compression.h
+++ b/searchlib/src/vespa/searchlib/bitcompression/compression.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/bitcompression/countcompression.cpp b/searchlib/src/vespa/searchlib/bitcompression/countcompression.cpp
index e056ce3169f..c5943309817 100644
--- a/searchlib/src/vespa/searchlib/bitcompression/countcompression.cpp
+++ b/searchlib/src/vespa/searchlib/bitcompression/countcompression.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "countcompression.h"
#include <vespa/searchlib/index/postinglistcounts.h>
diff --git a/searchlib/src/vespa/searchlib/bitcompression/countcompression.h b/searchlib/src/vespa/searchlib/bitcompression/countcompression.h
index 06e01c4c6f4..664a1245c2f 100644
--- a/searchlib/src/vespa/searchlib/bitcompression/countcompression.h
+++ b/searchlib/src/vespa/searchlib/bitcompression/countcompression.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/bitcompression/pagedict4.cpp b/searchlib/src/vespa/searchlib/bitcompression/pagedict4.cpp
index cf8f4173f5b..9a711a028fb 100644
--- a/searchlib/src/vespa/searchlib/bitcompression/pagedict4.cpp
+++ b/searchlib/src/vespa/searchlib/bitcompression/pagedict4.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "pagedict4.h"
#include <vespa/searchlib/index/postinglistcounts.h>
diff --git a/searchlib/src/vespa/searchlib/bitcompression/pagedict4.h b/searchlib/src/vespa/searchlib/bitcompression/pagedict4.h
index cfd9277b184..421032c95ec 100644
--- a/searchlib/src/vespa/searchlib/bitcompression/pagedict4.h
+++ b/searchlib/src/vespa/searchlib/bitcompression/pagedict4.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/bitcompression/posocccompression.cpp b/searchlib/src/vespa/searchlib/bitcompression/posocccompression.cpp
index a2b19c8d8b0..76a65a7244a 100644
--- a/searchlib/src/vespa/searchlib/bitcompression/posocccompression.cpp
+++ b/searchlib/src/vespa/searchlib/bitcompression/posocccompression.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "compression.h"
#include "posocccompression.h"
diff --git a/searchlib/src/vespa/searchlib/bitcompression/posocccompression.h b/searchlib/src/vespa/searchlib/bitcompression/posocccompression.h
index 03f2e223f14..184e2414638 100644
--- a/searchlib/src/vespa/searchlib/bitcompression/posocccompression.h
+++ b/searchlib/src/vespa/searchlib/bitcompression/posocccompression.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/index/docidandfeatures.h>
diff --git a/searchlib/src/vespa/searchlib/common/CMakeLists.txt b/searchlib/src/vespa/searchlib/common/CMakeLists.txt
index 3de063a70ee..6495fa8561d 100644
--- a/searchlib/src/vespa/searchlib/common/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/common/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_common OBJECT
SOURCES
allocatedbitvector.cpp
@@ -13,8 +13,8 @@ vespa_add_library(searchlib_common OBJECT
fileheadercontext.cpp
flush_token.cpp
geo_location.cpp
- geo_location_spec.cpp
geo_location_parser.cpp
+ geo_location_spec.cpp
growablebitvector.cpp
indexmetainfo.cpp
location.cpp
@@ -32,5 +32,6 @@ vespa_add_library(searchlib_common OBJECT
sortspec.cpp
threaded_compactable_lid_space.cpp
tunefileinfo.cpp
+ unique_issues.cpp
DEPENDS
)
diff --git a/searchlib/src/vespa/searchlib/common/allocatedbitvector.cpp b/searchlib/src/vespa/searchlib/common/allocatedbitvector.cpp
index 6e340615305..80c6549499d 100644
--- a/searchlib/src/vespa/searchlib/common/allocatedbitvector.cpp
+++ b/searchlib/src/vespa/searchlib/common/allocatedbitvector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "allocatedbitvector.h"
#include <cstring>
diff --git a/searchlib/src/vespa/searchlib/common/allocatedbitvector.h b/searchlib/src/vespa/searchlib/common/allocatedbitvector.h
index 5a7d2e634ea..c57ca93ac02 100644
--- a/searchlib/src/vespa/searchlib/common/allocatedbitvector.h
+++ b/searchlib/src/vespa/searchlib/common/allocatedbitvector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/base.h b/searchlib/src/vespa/searchlib/common/base.h
index 3f462d3e3d1..e59d0a77fb8 100644
--- a/searchlib/src/vespa/searchlib/common/base.h
+++ b/searchlib/src/vespa/searchlib/common/base.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/bitvector.cpp b/searchlib/src/vespa/searchlib/common/bitvector.cpp
index fa63b846e17..a3a1b9bed66 100644
--- a/searchlib/src/vespa/searchlib/common/bitvector.cpp
+++ b/searchlib/src/vespa/searchlib/common/bitvector.cpp
@@ -1,9 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bitvector.h"
#include "allocatedbitvector.h"
#include "growablebitvector.h"
#include "partialbitvector.h"
+#include <vespa/searchlib/util/file_settings.h>
#include <vespa/vespalib/hwaccelrated/iaccelrated.h>
#include <vespa/vespalib/util/exceptions.h>
#include <vespa/vespalib/util/size_literals.h>
@@ -33,8 +34,7 @@ void verifyInclusiveStart(const search::BitVector & a, const search::BitVector &
}
}
-constexpr size_t MMAP_LIMIT = 32_Mi;
-constexpr size_t DIRECTIO_ALIGNMENT = 4_Ki;
+constexpr size_t MMAP_LIMIT = 256_Mi;
}
@@ -341,7 +341,8 @@ BitVector::create(Index numberOfElements, FastOS_FileInterface &file,
size_t vectorsize = getFileBytes(numberOfElements);
file.DirectIOPadding(offset, vectorsize, padbefore, padafter);
assert((padbefore & (getAlignment() - 1)) == 0);
- AllocatedBitVector::Alloc alloc = Alloc::alloc(padbefore + vectorsize + padafter, MMAP_LIMIT, DIRECTIO_ALIGNMENT);
+ AllocatedBitVector::Alloc alloc = Alloc::alloc(padbefore + vectorsize + padafter,
+ MMAP_LIMIT, FileSettings::DIRECTIO_ALIGNMENT);
void * alignedBuffer = alloc.get();
file.ReadBuf(alignedBuffer, alloc.size(), offset - padbefore);
bv = std::make_unique<AllocatedBitVector>(numberOfElements, std::move(alloc), padbefore);
diff --git a/searchlib/src/vespa/searchlib/common/bitvector.h b/searchlib/src/vespa/searchlib/common/bitvector.h
index 712de96093c..184669829cb 100644
--- a/searchlib/src/vespa/searchlib/common/bitvector.h
+++ b/searchlib/src/vespa/searchlib/common/bitvector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/bitvectorcache.cpp b/searchlib/src/vespa/searchlib/common/bitvectorcache.cpp
index 8cfab1f64cf..cb4d112b77e 100644
--- a/searchlib/src/vespa/searchlib/common/bitvectorcache.cpp
+++ b/searchlib/src/vespa/searchlib/common/bitvectorcache.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bitvectorcache.h"
#include <vespa/vespalib/stllike/hash_map.hpp>
#include <algorithm>
diff --git a/searchlib/src/vespa/searchlib/common/bitvectorcache.h b/searchlib/src/vespa/searchlib/common/bitvectorcache.h
index a642d66f42f..33610afc108 100644
--- a/searchlib/src/vespa/searchlib/common/bitvectorcache.h
+++ b/searchlib/src/vespa/searchlib/common/bitvectorcache.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "condensedbitvectors.h"
diff --git a/searchlib/src/vespa/searchlib/common/bitvectoriterator.cpp b/searchlib/src/vespa/searchlib/common/bitvectoriterator.cpp
index 18cece7b8b0..6291636155b 100644
--- a/searchlib/src/vespa/searchlib/common/bitvectoriterator.cpp
+++ b/searchlib/src/vespa/searchlib/common/bitvectoriterator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bitvectoriterator.h"
#include <vespa/searchlib/queryeval/emptysearch.h>
diff --git a/searchlib/src/vespa/searchlib/common/bitvectoriterator.h b/searchlib/src/vespa/searchlib/common/bitvectoriterator.h
index 8b1112de97e..08d2e76f9ee 100644
--- a/searchlib/src/vespa/searchlib/common/bitvectoriterator.h
+++ b/searchlib/src/vespa/searchlib/common/bitvectoriterator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/bitword.cpp b/searchlib/src/vespa/searchlib/common/bitword.cpp
index cd91ed28ca7..fbace5fcc56 100644
--- a/searchlib/src/vespa/searchlib/common/bitword.cpp
+++ b/searchlib/src/vespa/searchlib/common/bitword.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bitword.h"
diff --git a/searchlib/src/vespa/searchlib/common/bitword.h b/searchlib/src/vespa/searchlib/common/bitword.h
index 052c8d89a9f..96665d47c93 100644
--- a/searchlib/src/vespa/searchlib/common/bitword.h
+++ b/searchlib/src/vespa/searchlib/common/bitword.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/commit_param.h b/searchlib/src/vespa/searchlib/common/commit_param.h
index f86a6a92020..038349df9a5 100644
--- a/searchlib/src/vespa/searchlib/common/commit_param.h
+++ b/searchlib/src/vespa/searchlib/common/commit_param.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/condensedbitvectors.cpp b/searchlib/src/vespa/searchlib/common/condensedbitvectors.cpp
index 50b971f499f..d03f995f99e 100644
--- a/searchlib/src/vespa/searchlib/common/condensedbitvectors.cpp
+++ b/searchlib/src/vespa/searchlib/common/condensedbitvectors.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "condensedbitvectors.h"
#include <vespa/vespalib/util/exceptions.h>
#include <vespa/vespalib/util/rcuvector.h>
diff --git a/searchlib/src/vespa/searchlib/common/condensedbitvectors.h b/searchlib/src/vespa/searchlib/common/condensedbitvectors.h
index 02355a61e40..f56890e730f 100644
--- a/searchlib/src/vespa/searchlib/common/condensedbitvectors.h
+++ b/searchlib/src/vespa/searchlib/common/condensedbitvectors.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/generationholder.h>
diff --git a/searchlib/src/vespa/searchlib/common/converters.h b/searchlib/src/vespa/searchlib/common/converters.h
index a53e800d1f5..a109b501f8c 100644
--- a/searchlib/src/vespa/searchlib/common/converters.h
+++ b/searchlib/src/vespa/searchlib/common/converters.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/docstamp.h b/searchlib/src/vespa/searchlib/common/docstamp.h
index 1b02e18795f..d0515e7d331 100644
--- a/searchlib/src/vespa/searchlib/common/docstamp.h
+++ b/searchlib/src/vespa/searchlib/common/docstamp.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/documentlocations.cpp b/searchlib/src/vespa/searchlib/common/documentlocations.cpp
index 3b2f6e58929..eeddd04b2e5 100644
--- a/searchlib/src/vespa/searchlib/common/documentlocations.cpp
+++ b/searchlib/src/vespa/searchlib/common/documentlocations.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentlocations.h"
#include <vespa/searchlib/attribute/attributeguard.h>
diff --git a/searchlib/src/vespa/searchlib/common/documentlocations.h b/searchlib/src/vespa/searchlib/common/documentlocations.h
index d637c12ac84..ab8de606a43 100644
--- a/searchlib/src/vespa/searchlib/common/documentlocations.h
+++ b/searchlib/src/vespa/searchlib/common/documentlocations.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/documentsummary.cpp b/searchlib/src/vespa/searchlib/common/documentsummary.cpp
index a9cd05a8b0d..8e70ffa7844 100644
--- a/searchlib/src/vespa/searchlib/common/documentsummary.cpp
+++ b/searchlib/src/vespa/searchlib/common/documentsummary.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentsummary.h"
#include <vespa/fastlib/io/bufferedfile.h>
diff --git a/searchlib/src/vespa/searchlib/common/documentsummary.h b/searchlib/src/vespa/searchlib/common/documentsummary.h
index 09512d92c1e..b49bac2cd8d 100644
--- a/searchlib/src/vespa/searchlib/common/documentsummary.h
+++ b/searchlib/src/vespa/searchlib/common/documentsummary.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/feature.h b/searchlib/src/vespa/searchlib/common/feature.h
index abbc3092718..e52cc9e0a9d 100644
--- a/searchlib/src/vespa/searchlib/common/feature.h
+++ b/searchlib/src/vespa/searchlib/common/feature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/featureset.cpp b/searchlib/src/vespa/searchlib/common/featureset.cpp
index adf24196200..a03befed4a2 100644
--- a/searchlib/src/vespa/searchlib/common/featureset.cpp
+++ b/searchlib/src/vespa/searchlib/common/featureset.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "featureset.h"
diff --git a/searchlib/src/vespa/searchlib/common/featureset.h b/searchlib/src/vespa/searchlib/common/featureset.h
index 71f503baded..3bce5c92640 100644
--- a/searchlib/src/vespa/searchlib/common/featureset.h
+++ b/searchlib/src/vespa/searchlib/common/featureset.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/fileheadercontext.cpp b/searchlib/src/vespa/searchlib/common/fileheadercontext.cpp
index 5c23953b9b3..1b1c4d310fd 100644
--- a/searchlib/src/vespa/searchlib/common/fileheadercontext.cpp
+++ b/searchlib/src/vespa/searchlib/common/fileheadercontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fileheadercontext.h"
#include <vespa/vespalib/data/fileheader.h>
diff --git a/searchlib/src/vespa/searchlib/common/fileheadercontext.h b/searchlib/src/vespa/searchlib/common/fileheadercontext.h
index 8bb3d6a56a6..9b6f80c46e7 100644
--- a/searchlib/src/vespa/searchlib/common/fileheadercontext.h
+++ b/searchlib/src/vespa/searchlib/common/fileheadercontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/searchlib/src/vespa/searchlib/common/flush_token.cpp b/searchlib/src/vespa/searchlib/common/flush_token.cpp
index b5b34bef9a5..753ef922951 100644
--- a/searchlib/src/vespa/searchlib/common/flush_token.cpp
+++ b/searchlib/src/vespa/searchlib/common/flush_token.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "flush_token.h"
diff --git a/searchlib/src/vespa/searchlib/common/flush_token.h b/searchlib/src/vespa/searchlib/common/flush_token.h
index ea882dbbe45..8a383846295 100644
--- a/searchlib/src/vespa/searchlib/common/flush_token.h
+++ b/searchlib/src/vespa/searchlib/common/flush_token.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "i_flush_token.h"
#include <atomic>
diff --git a/searchlib/src/vespa/searchlib/common/fslimits.h b/searchlib/src/vespa/searchlib/common/fslimits.h
index 40b9be96c24..85c2ba0c5ad 100644
--- a/searchlib/src/vespa/searchlib/common/fslimits.h
+++ b/searchlib/src/vespa/searchlib/common/fslimits.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/geo_location.cpp b/searchlib/src/vespa/searchlib/common/geo_location.cpp
index a58a0592008..1806ba1338c 100644
--- a/searchlib/src/vespa/searchlib/common/geo_location.cpp
+++ b/searchlib/src/vespa/searchlib/common/geo_location.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "geo_location.h"
diff --git a/searchlib/src/vespa/searchlib/common/geo_location.h b/searchlib/src/vespa/searchlib/common/geo_location.h
index 506434e75e0..07e6fd055cc 100644
--- a/searchlib/src/vespa/searchlib/common/geo_location.h
+++ b/searchlib/src/vespa/searchlib/common/geo_location.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/geo_location_parser.cpp b/searchlib/src/vespa/searchlib/common/geo_location_parser.cpp
index 7d793f9eb55..5ebce7906b9 100644
--- a/searchlib/src/vespa/searchlib/common/geo_location_parser.cpp
+++ b/searchlib/src/vespa/searchlib/common/geo_location_parser.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "geo_location_parser.h"
#include <limits>
diff --git a/searchlib/src/vespa/searchlib/common/geo_location_parser.h b/searchlib/src/vespa/searchlib/common/geo_location_parser.h
index e1a68163fbb..efa0f3278ea 100644
--- a/searchlib/src/vespa/searchlib/common/geo_location_parser.h
+++ b/searchlib/src/vespa/searchlib/common/geo_location_parser.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/geo_location_spec.cpp b/searchlib/src/vespa/searchlib/common/geo_location_spec.cpp
index 271946e2df6..7c04d66d179 100644
--- a/searchlib/src/vespa/searchlib/common/geo_location_spec.cpp
+++ b/searchlib/src/vespa/searchlib/common/geo_location_spec.cpp
@@ -1,3 +1,3 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "geo_location_spec.h"
diff --git a/searchlib/src/vespa/searchlib/common/geo_location_spec.h b/searchlib/src/vespa/searchlib/common/geo_location_spec.h
index 42c2b8e6c8c..ea0104aa058 100644
--- a/searchlib/src/vespa/searchlib/common/geo_location_spec.h
+++ b/searchlib/src/vespa/searchlib/common/geo_location_spec.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/gid.h b/searchlib/src/vespa/searchlib/common/gid.h
index 33b17fe94e6..1f73e16ad46 100644
--- a/searchlib/src/vespa/searchlib/common/gid.h
+++ b/searchlib/src/vespa/searchlib/common/gid.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/growablebitvector.cpp b/searchlib/src/vespa/searchlib/common/growablebitvector.cpp
index cf53b202a42..177266c5618 100644
--- a/searchlib/src/vespa/searchlib/common/growablebitvector.cpp
+++ b/searchlib/src/vespa/searchlib/common/growablebitvector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "growablebitvector.h"
#include <cassert>
diff --git a/searchlib/src/vespa/searchlib/common/growablebitvector.h b/searchlib/src/vespa/searchlib/common/growablebitvector.h
index e13e3b42e3d..08c9fede8f2 100644
--- a/searchlib/src/vespa/searchlib/common/growablebitvector.h
+++ b/searchlib/src/vespa/searchlib/common/growablebitvector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/hitrank.h b/searchlib/src/vespa/searchlib/common/hitrank.h
index 824c01f9f9e..652d431193b 100644
--- a/searchlib/src/vespa/searchlib/common/hitrank.h
+++ b/searchlib/src/vespa/searchlib/common/hitrank.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/i_compactable_lid_space.h b/searchlib/src/vespa/searchlib/common/i_compactable_lid_space.h
index ba28bec3604..bb404f27709 100644
--- a/searchlib/src/vespa/searchlib/common/i_compactable_lid_space.h
+++ b/searchlib/src/vespa/searchlib/common/i_compactable_lid_space.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/i_document_meta_store_context.h b/searchlib/src/vespa/searchlib/common/i_document_meta_store_context.h
index 8de10721b2e..a10a85331a6 100644
--- a/searchlib/src/vespa/searchlib/common/i_document_meta_store_context.h
+++ b/searchlib/src/vespa/searchlib/common/i_document_meta_store_context.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/i_flush_token.h b/searchlib/src/vespa/searchlib/common/i_flush_token.h
index 281c1a13382..64cef487db1 100644
--- a/searchlib/src/vespa/searchlib/common/i_flush_token.h
+++ b/searchlib/src/vespa/searchlib/common/i_flush_token.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace search {
diff --git a/searchlib/src/vespa/searchlib/common/i_gid_to_lid_mapper.h b/searchlib/src/vespa/searchlib/common/i_gid_to_lid_mapper.h
index 01431d0c75d..fbeda20da5c 100644
--- a/searchlib/src/vespa/searchlib/common/i_gid_to_lid_mapper.h
+++ b/searchlib/src/vespa/searchlib/common/i_gid_to_lid_mapper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/i_gid_to_lid_mapper_factory.h b/searchlib/src/vespa/searchlib/common/i_gid_to_lid_mapper_factory.h
index 08d7d5ddec4..ac104aac9c1 100644
--- a/searchlib/src/vespa/searchlib/common/i_gid_to_lid_mapper_factory.h
+++ b/searchlib/src/vespa/searchlib/common/i_gid_to_lid_mapper_factory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/identifiable.h b/searchlib/src/vespa/searchlib/common/identifiable.h
index adab458378b..1f5aff6d2d0 100644
--- a/searchlib/src/vespa/searchlib/common/identifiable.h
+++ b/searchlib/src/vespa/searchlib/common/identifiable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/objects/identifiable.h>
diff --git a/searchlib/src/vespa/searchlib/common/idocumentmetastore.h b/searchlib/src/vespa/searchlib/common/idocumentmetastore.h
index c1eaf6eb0d6..968492602bf 100644
--- a/searchlib/src/vespa/searchlib/common/idocumentmetastore.h
+++ b/searchlib/src/vespa/searchlib/common/idocumentmetastore.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/indexmetainfo.cpp b/searchlib/src/vespa/searchlib/common/indexmetainfo.cpp
index 25bc754a86f..f33b571f263 100644
--- a/searchlib/src/vespa/searchlib/common/indexmetainfo.cpp
+++ b/searchlib/src/vespa/searchlib/common/indexmetainfo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "indexmetainfo.h"
#include <vespa/vespalib/io/fileutil.h>
diff --git a/searchlib/src/vespa/searchlib/common/indexmetainfo.h b/searchlib/src/vespa/searchlib/common/indexmetainfo.h
index c81a3e19bee..9b6c7c8e477 100644
--- a/searchlib/src/vespa/searchlib/common/indexmetainfo.h
+++ b/searchlib/src/vespa/searchlib/common/indexmetainfo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/lid_usage_stats.h b/searchlib/src/vespa/searchlib/common/lid_usage_stats.h
index 97e16ffe768..9c6677e5020 100644
--- a/searchlib/src/vespa/searchlib/common/lid_usage_stats.h
+++ b/searchlib/src/vespa/searchlib/common/lid_usage_stats.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <chrono>
diff --git a/searchlib/src/vespa/searchlib/common/location.cpp b/searchlib/src/vespa/searchlib/common/location.cpp
index 171dcecaa33..0c50f35c7f8 100644
--- a/searchlib/src/vespa/searchlib/common/location.cpp
+++ b/searchlib/src/vespa/searchlib/common/location.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "location.h"
#include <limits>
diff --git a/searchlib/src/vespa/searchlib/common/location.h b/searchlib/src/vespa/searchlib/common/location.h
index 197f92326cd..919d21277af 100644
--- a/searchlib/src/vespa/searchlib/common/location.h
+++ b/searchlib/src/vespa/searchlib/common/location.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/locationiterators.cpp b/searchlib/src/vespa/searchlib/common/locationiterators.cpp
index 413930522c6..10bd667bccb 100644
--- a/searchlib/src/vespa/searchlib/common/locationiterators.cpp
+++ b/searchlib/src/vespa/searchlib/common/locationiterators.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "locationiterators.h"
#include <vespa/searchlib/bitcompression/compression.h>
diff --git a/searchlib/src/vespa/searchlib/common/locationiterators.h b/searchlib/src/vespa/searchlib/common/locationiterators.h
index d963ac2e479..0584e93b63f 100644
--- a/searchlib/src/vespa/searchlib/common/locationiterators.h
+++ b/searchlib/src/vespa/searchlib/common/locationiterators.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/mapnames.cpp b/searchlib/src/vespa/searchlib/common/mapnames.cpp
index 8aadf6254f3..d437bca01ab 100644
--- a/searchlib/src/vespa/searchlib/common/mapnames.cpp
+++ b/searchlib/src/vespa/searchlib/common/mapnames.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mapnames.h"
diff --git a/searchlib/src/vespa/searchlib/common/mapnames.h b/searchlib/src/vespa/searchlib/common/mapnames.h
index a754762a659..7a248547257 100644
--- a/searchlib/src/vespa/searchlib/common/mapnames.h
+++ b/searchlib/src/vespa/searchlib/common/mapnames.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/packets.cpp b/searchlib/src/vespa/searchlib/common/packets.cpp
index 4b20513c66d..0971d65d732 100644
--- a/searchlib/src/vespa/searchlib/common/packets.cpp
+++ b/searchlib/src/vespa/searchlib/common/packets.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mapnames.h"
#include "packets.h"
diff --git a/searchlib/src/vespa/searchlib/common/packets.h b/searchlib/src/vespa/searchlib/common/packets.h
index 5e0072c27c0..07c942a997b 100644
--- a/searchlib/src/vespa/searchlib/common/packets.h
+++ b/searchlib/src/vespa/searchlib/common/packets.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/partialbitvector.cpp b/searchlib/src/vespa/searchlib/common/partialbitvector.cpp
index e1dc144541e..128a9ab8452 100644
--- a/searchlib/src/vespa/searchlib/common/partialbitvector.cpp
+++ b/searchlib/src/vespa/searchlib/common/partialbitvector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "partialbitvector.h"
#include <cstring>
diff --git a/searchlib/src/vespa/searchlib/common/partialbitvector.h b/searchlib/src/vespa/searchlib/common/partialbitvector.h
index 0c44378e78a..d1baa22f9a1 100644
--- a/searchlib/src/vespa/searchlib/common/partialbitvector.h
+++ b/searchlib/src/vespa/searchlib/common/partialbitvector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/rankedhit.h b/searchlib/src/vespa/searchlib/common/rankedhit.h
index 8a0efb4ce3c..d5c32a263aa 100644
--- a/searchlib/src/vespa/searchlib/common/rankedhit.h
+++ b/searchlib/src/vespa/searchlib/common/rankedhit.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/reserved.h b/searchlib/src/vespa/searchlib/common/reserved.h
index 41a540a67c8..dd2fba58956 100644
--- a/searchlib/src/vespa/searchlib/common/reserved.h
+++ b/searchlib/src/vespa/searchlib/common/reserved.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/resultset.cpp b/searchlib/src/vespa/searchlib/common/resultset.cpp
index 969e19f2a4b..8f5d2d6d105 100644
--- a/searchlib/src/vespa/searchlib/common/resultset.cpp
+++ b/searchlib/src/vespa/searchlib/common/resultset.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "resultset.h"
#include "bitvector.h"
diff --git a/searchlib/src/vespa/searchlib/common/resultset.h b/searchlib/src/vespa/searchlib/common/resultset.h
index c622c882ae6..e18888dbaf7 100644
--- a/searchlib/src/vespa/searchlib/common/resultset.h
+++ b/searchlib/src/vespa/searchlib/common/resultset.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/scheduletaskcallback.h b/searchlib/src/vespa/searchlib/common/scheduletaskcallback.h
index 6ea841097a2..2e65cda66b5 100644
--- a/searchlib/src/vespa/searchlib/common/scheduletaskcallback.h
+++ b/searchlib/src/vespa/searchlib/common/scheduletaskcallback.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "vespa/vespalib/util/idestructorcallback.h"
diff --git a/searchlib/src/vespa/searchlib/common/serialnum.h b/searchlib/src/vespa/searchlib/common/serialnum.h
index 601a34eff2e..5a7ee4b2700 100644
--- a/searchlib/src/vespa/searchlib/common/serialnum.h
+++ b/searchlib/src/vespa/searchlib/common/serialnum.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/serialnumfileheadercontext.cpp b/searchlib/src/vespa/searchlib/common/serialnumfileheadercontext.cpp
index dd8b2a3c9cf..ddd8bbdb250 100644
--- a/searchlib/src/vespa/searchlib/common/serialnumfileheadercontext.cpp
+++ b/searchlib/src/vespa/searchlib/common/serialnumfileheadercontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "serialnumfileheadercontext.h"
#include <vespa/vespalib/data/fileheader.h>
diff --git a/searchlib/src/vespa/searchlib/common/serialnumfileheadercontext.h b/searchlib/src/vespa/searchlib/common/serialnumfileheadercontext.h
index 11437c95e46..ae0eb75a7a1 100644
--- a/searchlib/src/vespa/searchlib/common/serialnumfileheadercontext.h
+++ b/searchlib/src/vespa/searchlib/common/serialnumfileheadercontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "fileheadercontext.h"
diff --git a/searchlib/src/vespa/searchlib/common/sort.cpp b/searchlib/src/vespa/searchlib/common/sort.cpp
index c4bc7a4c686..a85317b2c53 100644
--- a/searchlib/src/vespa/searchlib/common/sort.cpp
+++ b/searchlib/src/vespa/searchlib/common/sort.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sort.h"
namespace search {
diff --git a/searchlib/src/vespa/searchlib/common/sort.h b/searchlib/src/vespa/searchlib/common/sort.h
index 9c26378636a..de2c36ec17e 100644
--- a/searchlib/src/vespa/searchlib/common/sort.h
+++ b/searchlib/src/vespa/searchlib/common/sort.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/optimized.h>
diff --git a/searchlib/src/vespa/searchlib/common/sortdata.cpp b/searchlib/src/vespa/searchlib/common/sortdata.cpp
index 1fc0289fe9a..541c1ee35c5 100644
--- a/searchlib/src/vespa/searchlib/common/sortdata.cpp
+++ b/searchlib/src/vespa/searchlib/common/sortdata.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sortdata.h"
#include <cassert>
diff --git a/searchlib/src/vespa/searchlib/common/sortdata.h b/searchlib/src/vespa/searchlib/common/sortdata.h
index 8fe8cc5b885..d02692e16b3 100644
--- a/searchlib/src/vespa/searchlib/common/sortdata.h
+++ b/searchlib/src/vespa/searchlib/common/sortdata.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/sortresults.cpp b/searchlib/src/vespa/searchlib/common/sortresults.cpp
index 729f31795c9..5895af3b387 100644
--- a/searchlib/src/vespa/searchlib/common/sortresults.cpp
+++ b/searchlib/src/vespa/searchlib/common/sortresults.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sortresults.h"
#include <vespa/searchlib/util/sort.h>
diff --git a/searchlib/src/vespa/searchlib/common/sortresults.h b/searchlib/src/vespa/searchlib/common/sortresults.h
index 6d69a60e967..3424fd81dcb 100644
--- a/searchlib/src/vespa/searchlib/common/sortresults.h
+++ b/searchlib/src/vespa/searchlib/common/sortresults.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/sortspec.cpp b/searchlib/src/vespa/searchlib/common/sortspec.cpp
index f6ac468b485..06f7391b232 100644
--- a/searchlib/src/vespa/searchlib/common/sortspec.cpp
+++ b/searchlib/src/vespa/searchlib/common/sortspec.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sortspec.h"
#include <vespa/vespalib/util/stringfmt.h>
#include <vespa/fastlib/text/normwordfolder.h>
diff --git a/searchlib/src/vespa/searchlib/common/sortspec.h b/searchlib/src/vespa/searchlib/common/sortspec.h
index 32c578597b1..57aa3669dd5 100644
--- a/searchlib/src/vespa/searchlib/common/sortspec.h
+++ b/searchlib/src/vespa/searchlib/common/sortspec.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/threaded_compactable_lid_space.cpp b/searchlib/src/vespa/searchlib/common/threaded_compactable_lid_space.cpp
index 4b253387f15..cd4069ac959 100644
--- a/searchlib/src/vespa/searchlib/common/threaded_compactable_lid_space.cpp
+++ b/searchlib/src/vespa/searchlib/common/threaded_compactable_lid_space.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "threaded_compactable_lid_space.h"
#include <future>
diff --git a/searchlib/src/vespa/searchlib/common/threaded_compactable_lid_space.h b/searchlib/src/vespa/searchlib/common/threaded_compactable_lid_space.h
index f22d5946295..97794d678d6 100644
--- a/searchlib/src/vespa/searchlib/common/threaded_compactable_lid_space.h
+++ b/searchlib/src/vespa/searchlib/common/threaded_compactable_lid_space.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/tunefileinfo.cpp b/searchlib/src/vespa/searchlib/common/tunefileinfo.cpp
index f8325c3cd7d..4d114c8067a 100644
--- a/searchlib/src/vespa/searchlib/common/tunefileinfo.cpp
+++ b/searchlib/src/vespa/searchlib/common/tunefileinfo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tunefileinfo.hpp"
diff --git a/searchlib/src/vespa/searchlib/common/tunefileinfo.h b/searchlib/src/vespa/searchlib/common/tunefileinfo.h
index e27290d35de..f336e6e0bfb 100644
--- a/searchlib/src/vespa/searchlib/common/tunefileinfo.h
+++ b/searchlib/src/vespa/searchlib/common/tunefileinfo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/tunefileinfo.hpp b/searchlib/src/vespa/searchlib/common/tunefileinfo.hpp
index a99bf8fcfd0..a3be25b3a51 100644
--- a/searchlib/src/vespa/searchlib/common/tunefileinfo.hpp
+++ b/searchlib/src/vespa/searchlib/common/tunefileinfo.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/common/unique_issues.cpp b/searchlib/src/vespa/searchlib/common/unique_issues.cpp
new file mode 100644
index 00000000000..9f41efaeda3
--- /dev/null
+++ b/searchlib/src/vespa/searchlib/common/unique_issues.cpp
@@ -0,0 +1,13 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "unique_issues.h"
+
+namespace search {
+
+void
+UniqueIssues::handle(const vespalib::Issue &issue)
+{
+ _messages.insert(issue.message());
+}
+
+}
diff --git a/searchlib/src/vespa/searchlib/common/unique_issues.h b/searchlib/src/vespa/searchlib/common/unique_issues.h
new file mode 100644
index 00000000000..5b25820c408
--- /dev/null
+++ b/searchlib/src/vespa/searchlib/common/unique_issues.h
@@ -0,0 +1,28 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/vespalib/util/issue.h>
+#include <memory>
+#include <set>
+
+namespace search {
+
+/**
+ * Keep track of all unique issues encountered.
+ **/
+class UniqueIssues : public vespalib::Issue::Handler
+{
+private:
+ std::set<vespalib::string> _messages;
+public:
+ using UP = std::unique_ptr<UniqueIssues>;
+ void handle(const vespalib::Issue &issue) override;
+ void for_each_message(auto fun) const {
+ for (const auto &msg: _messages) {
+ fun(msg);
+ }
+ }
+};
+
+}
diff --git a/searchlib/src/vespa/searchlib/config/CMakeLists.txt b/searchlib/src/vespa/searchlib/config/CMakeLists.txt
index 571cd3ad9f1..1f7565b70da 100644
--- a/searchlib/src/vespa/searchlib/config/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/config/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_sconfig OBJECT
SOURCES
DEPENDS
diff --git a/searchlib/src/vespa/searchlib/config/translogserver.def b/searchlib/src/vespa/searchlib/config/translogserver.def
index 4d985b2929d..6a8a1201d36 100644
--- a/searchlib/src/vespa/searchlib/config/translogserver.def
+++ b/searchlib/src/vespa/searchlib/config/translogserver.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=searchlib
## Port number to use for listening.
diff --git a/searchlib/src/vespa/searchlib/diskindex/CMakeLists.txt b/searchlib/src/vespa/searchlib/diskindex/CMakeLists.txt
index 15678382741..261874fb4c8 100644
--- a/searchlib/src/vespa/searchlib/diskindex/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/diskindex/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_diskindex OBJECT
SOURCES
bitvectordictionary.cpp
diff --git a/searchlib/src/vespa/searchlib/diskindex/bitvectordictionary.cpp b/searchlib/src/vespa/searchlib/diskindex/bitvectordictionary.cpp
index 9770be19597..12866e74137 100644
--- a/searchlib/src/vespa/searchlib/diskindex/bitvectordictionary.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/bitvectordictionary.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bitvectordictionary.h"
#include <vespa/vespalib/data/fileheader.h>
diff --git a/searchlib/src/vespa/searchlib/diskindex/bitvectordictionary.h b/searchlib/src/vespa/searchlib/diskindex/bitvectordictionary.h
index 79c892c6ed7..7f44728e1be 100644
--- a/searchlib/src/vespa/searchlib/diskindex/bitvectordictionary.h
+++ b/searchlib/src/vespa/searchlib/diskindex/bitvectordictionary.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bitvectorkeyscope.h"
diff --git a/searchlib/src/vespa/searchlib/diskindex/bitvectorfile.cpp b/searchlib/src/vespa/searchlib/diskindex/bitvectorfile.cpp
index 828e38b5267..65ce5decc50 100644
--- a/searchlib/src/vespa/searchlib/diskindex/bitvectorfile.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/bitvectorfile.cpp
@@ -1,9 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bitvectorfile.h"
-#include <vespa/searchlib/index/bitvectorkeys.h>
#include <vespa/searchlib/common/bitvector.h>
#include <vespa/searchlib/common/fileheadercontext.h>
+#include <vespa/searchlib/index/bitvectorkeys.h>
+#include <vespa/searchlib/util/file_settings.h>
#include <vespa/vespalib/data/fileheader.h>
#include <vespa/vespalib/util/size_literals.h>
#include <cassert>
@@ -25,8 +26,6 @@ readHeader(vespalib::FileHeader &h,
file.Close();
}
-const size_t FILE_HEADERSIZE_ALIGNMENT = 4_Ki;
-
}
BitVectorFileWrite::BitVectorFileWrite(BitVectorKeyScope scope)
@@ -93,7 +92,7 @@ BitVectorFileWrite::open(const vespalib::string &name,
void
BitVectorFileWrite::makeDatHeader(const FileHeaderContext &fileHeaderContext)
{
- vespalib::FileHeader h(FILE_HEADERSIZE_ALIGNMENT); // 64 byte alignment on bitvector.dat header
+ vespalib::FileHeader h(FileSettings::DIRECTIO_ALIGNMENT);
typedef vespalib::GenericHeader::Tag Tag;
fileHeaderContext.addTags(h, _datFile->GetFileName());
h.putTag(Tag("docIdLimit", _docIdLimit));
@@ -110,7 +109,7 @@ BitVectorFileWrite::makeDatHeader(const FileHeaderContext &fileHeaderContext)
void
BitVectorFileWrite::updateDatHeader(uint64_t fileBitSize)
{
- vespalib::FileHeader h(FILE_HEADERSIZE_ALIGNMENT);
+ vespalib::FileHeader h(FileSettings::DIRECTIO_ALIGNMENT);
typedef vespalib::GenericHeader::Tag Tag;
readHeader(h, _datFile->GetFileName());
FileHeaderContext::setFreezeTime(h);
diff --git a/searchlib/src/vespa/searchlib/diskindex/bitvectorfile.h b/searchlib/src/vespa/searchlib/diskindex/bitvectorfile.h
index e8341901585..37ca72d3ec0 100644
--- a/searchlib/src/vespa/searchlib/diskindex/bitvectorfile.h
+++ b/searchlib/src/vespa/searchlib/diskindex/bitvectorfile.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/diskindex/bitvectoridxfile.cpp b/searchlib/src/vespa/searchlib/diskindex/bitvectoridxfile.cpp
index 95d2b286d7f..f85c6c20624 100644
--- a/searchlib/src/vespa/searchlib/diskindex/bitvectoridxfile.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/bitvectoridxfile.cpp
@@ -1,9 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bitvectoridxfile.h"
-#include <vespa/searchlib/index/bitvectorkeys.h>
#include <vespa/searchlib/common/bitvector.h>
#include <vespa/searchlib/common/fileheadercontext.h>
+#include <vespa/searchlib/index/bitvectorkeys.h>
+#include <vespa/searchlib/util/file_settings.h>
#include <vespa/vespalib/data/fileheader.h>
#include <vespa/vespalib/util/size_literals.h>
#include <cassert>
@@ -24,8 +25,6 @@ readHeader(vespalib::FileHeader &h, const vespalib::string &name)
file.Close();
}
-const size_t FILE_HEADERSIZE_ALIGNMENT = 4_Ki;
-
}
BitVectorIdxFileWrite::BitVectorIdxFileWrite(BitVectorKeyScope scope)
@@ -90,7 +89,7 @@ BitVectorIdxFileWrite::open(const vespalib::string &name,
void
BitVectorIdxFileWrite::makeIdxHeader(const FileHeaderContext &fileHeaderContext)
{
- vespalib::FileHeader h(FILE_HEADERSIZE_ALIGNMENT);
+ vespalib::FileHeader h(FileSettings::DIRECTIO_ALIGNMENT);
typedef vespalib::GenericHeader::Tag Tag;
fileHeaderContext.addTags(h, _idxFile->GetFileName());
h.putTag(Tag("docIdLimit", _docIdLimit));
@@ -108,7 +107,7 @@ BitVectorIdxFileWrite::makeIdxHeader(const FileHeaderContext &fileHeaderContext)
void
BitVectorIdxFileWrite::updateIdxHeader(uint64_t fileBitSize)
{
- vespalib::FileHeader h(FILE_HEADERSIZE_ALIGNMENT);
+ vespalib::FileHeader h(FileSettings::DIRECTIO_ALIGNMENT);
typedef vespalib::GenericHeader::Tag Tag;
readHeader(h, _idxFile->GetFileName());
FileHeaderContext::setFreezeTime(h);
diff --git a/searchlib/src/vespa/searchlib/diskindex/bitvectoridxfile.h b/searchlib/src/vespa/searchlib/diskindex/bitvectoridxfile.h
index 90e5d811479..a5b6226fd43 100644
--- a/searchlib/src/vespa/searchlib/diskindex/bitvectoridxfile.h
+++ b/searchlib/src/vespa/searchlib/diskindex/bitvectoridxfile.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/diskindex/bitvectorkeyscope.cpp b/searchlib/src/vespa/searchlib/diskindex/bitvectorkeyscope.cpp
index ee18383debd..12629ea13fd 100644
--- a/searchlib/src/vespa/searchlib/diskindex/bitvectorkeyscope.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/bitvectorkeyscope.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bitvectorkeyscope.h"
#include <cassert>
diff --git a/searchlib/src/vespa/searchlib/diskindex/bitvectorkeyscope.h b/searchlib/src/vespa/searchlib/diskindex/bitvectorkeyscope.h
index 99deae5542b..22d9beb0369 100644
--- a/searchlib/src/vespa/searchlib/diskindex/bitvectorkeyscope.h
+++ b/searchlib/src/vespa/searchlib/diskindex/bitvectorkeyscope.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/diskindex/dictionarywordreader.cpp b/searchlib/src/vespa/searchlib/diskindex/dictionarywordreader.cpp
index 4386ee3cd6b..a3b9259a278 100644
--- a/searchlib/src/vespa/searchlib/diskindex/dictionarywordreader.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/dictionarywordreader.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dictionarywordreader.h"
#include <vespa/searchlib/index/schemautil.h>
diff --git a/searchlib/src/vespa/searchlib/diskindex/dictionarywordreader.h b/searchlib/src/vespa/searchlib/diskindex/dictionarywordreader.h
index 5ee84cc4503..18e886ca22e 100644
--- a/searchlib/src/vespa/searchlib/diskindex/dictionarywordreader.h
+++ b/searchlib/src/vespa/searchlib/diskindex/dictionarywordreader.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "pagedict4file.h"
diff --git a/searchlib/src/vespa/searchlib/diskindex/diskindex.cpp b/searchlib/src/vespa/searchlib/diskindex/diskindex.cpp
index 0125a4d40b4..7cde1102bc1 100644
--- a/searchlib/src/vespa/searchlib/diskindex/diskindex.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/diskindex.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "diskindex.h"
#include "disktermblueprint.h"
diff --git a/searchlib/src/vespa/searchlib/diskindex/diskindex.h b/searchlib/src/vespa/searchlib/diskindex/diskindex.h
index 3b827db8b4f..05492a59ee3 100644
--- a/searchlib/src/vespa/searchlib/diskindex/diskindex.h
+++ b/searchlib/src/vespa/searchlib/diskindex/diskindex.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/diskindex/disktermblueprint.cpp b/searchlib/src/vespa/searchlib/diskindex/disktermblueprint.cpp
index 8231d0b4cd7..f809f0fb665 100644
--- a/searchlib/src/vespa/searchlib/diskindex/disktermblueprint.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/disktermblueprint.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "disktermblueprint.h"
#include <vespa/searchlib/common/bitvectoriterator.h>
diff --git a/searchlib/src/vespa/searchlib/diskindex/disktermblueprint.h b/searchlib/src/vespa/searchlib/diskindex/disktermblueprint.h
index 4d6ef4589df..6d29bd6ef46 100644
--- a/searchlib/src/vespa/searchlib/diskindex/disktermblueprint.h
+++ b/searchlib/src/vespa/searchlib/diskindex/disktermblueprint.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/diskindex/docidmapper.cpp b/searchlib/src/vespa/searchlib/diskindex/docidmapper.cpp
index 489986f1f5c..f7e5ff690cb 100644
--- a/searchlib/src/vespa/searchlib/diskindex/docidmapper.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/docidmapper.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "docidmapper.h"
#include <vespa/searchlib/common/documentsummary.h>
diff --git a/searchlib/src/vespa/searchlib/diskindex/docidmapper.h b/searchlib/src/vespa/searchlib/diskindex/docidmapper.h
index a8c33eaed2f..90bfa658a72 100644
--- a/searchlib/src/vespa/searchlib/diskindex/docidmapper.h
+++ b/searchlib/src/vespa/searchlib/diskindex/docidmapper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/array.h>
diff --git a/searchlib/src/vespa/searchlib/diskindex/extposocc.cpp b/searchlib/src/vespa/searchlib/diskindex/extposocc.cpp
index 1ee7b9ae9ae..a4e9e4d06f7 100644
--- a/searchlib/src/vespa/searchlib/diskindex/extposocc.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/extposocc.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "extposocc.h"
#include "zcposocc.h"
diff --git a/searchlib/src/vespa/searchlib/diskindex/extposocc.h b/searchlib/src/vespa/searchlib/diskindex/extposocc.h
index 2bfa163e1d4..78f3b0b52b0 100644
--- a/searchlib/src/vespa/searchlib/diskindex/extposocc.h
+++ b/searchlib/src/vespa/searchlib/diskindex/extposocc.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/diskindex/fieldreader.cpp b/searchlib/src/vespa/searchlib/diskindex/fieldreader.cpp
index ab77a6bfd08..202ac2b08ff 100644
--- a/searchlib/src/vespa/searchlib/diskindex/fieldreader.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/fieldreader.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fieldreader.h"
#include "zcposocc.h"
diff --git a/searchlib/src/vespa/searchlib/diskindex/fieldreader.h b/searchlib/src/vespa/searchlib/diskindex/fieldreader.h
index e95a8389d38..ef319971fa7 100644
--- a/searchlib/src/vespa/searchlib/diskindex/fieldreader.h
+++ b/searchlib/src/vespa/searchlib/diskindex/fieldreader.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/index/postinglistcounts.h>
diff --git a/searchlib/src/vespa/searchlib/diskindex/fieldwriter.cpp b/searchlib/src/vespa/searchlib/diskindex/fieldwriter.cpp
index 19157c80197..d39270069eb 100644
--- a/searchlib/src/vespa/searchlib/diskindex/fieldwriter.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/fieldwriter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fieldwriter.h"
#include "zcposocc.h"
diff --git a/searchlib/src/vespa/searchlib/diskindex/fieldwriter.h b/searchlib/src/vespa/searchlib/diskindex/fieldwriter.h
index 0d205fb9d98..f1b5c487e40 100644
--- a/searchlib/src/vespa/searchlib/diskindex/fieldwriter.h
+++ b/searchlib/src/vespa/searchlib/diskindex/fieldwriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bitvectorfile.h"
diff --git a/searchlib/src/vespa/searchlib/diskindex/fileheader.cpp b/searchlib/src/vespa/searchlib/diskindex/fileheader.cpp
index ef3885a8e67..d76d1136f8d 100644
--- a/searchlib/src/vespa/searchlib/diskindex/fileheader.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/fileheader.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fileheader.h"
#include <vespa/searchlib/bitcompression/compression.h>
diff --git a/searchlib/src/vespa/searchlib/diskindex/fileheader.h b/searchlib/src/vespa/searchlib/diskindex/fileheader.h
index 2ddf6b9c85b..4a26ae4c4ac 100644
--- a/searchlib/src/vespa/searchlib/diskindex/fileheader.h
+++ b/searchlib/src/vespa/searchlib/diskindex/fileheader.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/diskindex/fusion.cpp b/searchlib/src/vespa/searchlib/diskindex/fusion.cpp
index c8b0674252f..67c92e18b48 100644
--- a/searchlib/src/vespa/searchlib/diskindex/fusion.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/fusion.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fusion.h"
#include "fieldreader.h"
diff --git a/searchlib/src/vespa/searchlib/diskindex/fusion.h b/searchlib/src/vespa/searchlib/diskindex/fusion.h
index 1f517f149f9..c1acf41a043 100644
--- a/searchlib/src/vespa/searchlib/diskindex/fusion.h
+++ b/searchlib/src/vespa/searchlib/diskindex/fusion.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/diskindex/indexbuilder.cpp b/searchlib/src/vespa/searchlib/diskindex/indexbuilder.cpp
index 0b43bcf6b8c..93aff8e7226 100644
--- a/searchlib/src/vespa/searchlib/diskindex/indexbuilder.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/indexbuilder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "indexbuilder.h"
#include <vespa/searchlib/index/docidandfeatures.h>
diff --git a/searchlib/src/vespa/searchlib/diskindex/indexbuilder.h b/searchlib/src/vespa/searchlib/diskindex/indexbuilder.h
index 4423c7e91a0..f74ee0c1bb3 100644
--- a/searchlib/src/vespa/searchlib/diskindex/indexbuilder.h
+++ b/searchlib/src/vespa/searchlib/diskindex/indexbuilder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/diskindex/pagedict4file.cpp b/searchlib/src/vespa/searchlib/diskindex/pagedict4file.cpp
index 64fb6142db7..a5f49c2a3fe 100644
--- a/searchlib/src/vespa/searchlib/diskindex/pagedict4file.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/pagedict4file.cpp
@@ -1,8 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "pagedict4file.h"
#include <vespa/searchlib/common/fileheadercontext.h>
-#include <vespa/vespalib/stllike/asciistream.h>
+#include <vespa/searchlib/util/file_settings.h>
#include <vespa/vespalib/data/fileheader.h>
#include <vespa/vespalib/io/fileutil.h>
#include <vespa/vespalib/util/size_literals.h>
@@ -36,12 +36,6 @@ using vespalib::getLastErrorString;
namespace search::diskindex {
-namespace {
-
-const uint32_t headerAlign = 4_Ki;
-
-}
-
PageDict4FileSeqRead::PageDict4FileSeqRead()
: _pReader(nullptr),
_ssReader(nullptr),
@@ -467,7 +461,7 @@ PageDict4FileSeqWrite::makePHeader(const FileHeaderContext &fileHeaderContext)
// subheader only written to SS file.
typedef vespalib::GenericHeader::Tag Tag;
- vespalib::FileHeader header(headerAlign);
+ vespalib::FileHeader header(FileSettings::DIRECTIO_ALIGNMENT);
fileHeaderContext.addTags(header, _pfile.GetFileName());
header.putTag(Tag("frozen", 0));
@@ -499,7 +493,7 @@ PageDict4FileSeqWrite::makeSPHeader(const FileHeaderContext &fileHeaderContext)
// subheader only written to SS file.
typedef vespalib::GenericHeader::Tag Tag;
- vespalib::FileHeader header(headerAlign);
+ vespalib::FileHeader header(FileSettings::DIRECTIO_ALIGNMENT);
fileHeaderContext.addTags(header, _spfile.GetFileName());
header.putTag(Tag("frozen", 0));
@@ -529,7 +523,7 @@ PageDict4FileSeqWrite::makeSSHeader(const FileHeaderContext &fileHeaderContext)
ComprFileWriteContext &wc = _ssWriteContext;
typedef vespalib::GenericHeader::Tag Tag;
- vespalib::FileHeader header(headerAlign);
+ vespalib::FileHeader header(FileSettings::DIRECTIO_ALIGNMENT);
fileHeaderContext.addTags(header, _ssfile.GetFileName());
header.putTag(Tag("frozen", 0));
@@ -557,7 +551,7 @@ PageDict4FileSeqWrite::makeSSHeader(const FileHeaderContext &fileHeaderContext)
void
PageDict4FileSeqWrite::updatePHeader(uint64_t fileBitSize)
{
- vespalib::FileHeader h(headerAlign);
+ vespalib::FileHeader h(FileSettings::DIRECTIO_ALIGNMENT);
FastOS_File f;
f.OpenReadWrite(_pfile.GetFileName());
h.readFile(f);
@@ -574,7 +568,7 @@ PageDict4FileSeqWrite::updatePHeader(uint64_t fileBitSize)
void
PageDict4FileSeqWrite::updateSPHeader(uint64_t fileBitSize)
{
- vespalib::FileHeader h(headerAlign);
+ vespalib::FileHeader h(FileSettings::DIRECTIO_ALIGNMENT);
FastOS_File f;
f.OpenReadWrite(_spfile.GetFileName());
h.readFile(f);
@@ -591,7 +585,7 @@ PageDict4FileSeqWrite::updateSPHeader(uint64_t fileBitSize)
void
PageDict4FileSeqWrite::updateSSHeader(uint64_t fileBitSize)
{
- vespalib::FileHeader h(headerAlign);
+ vespalib::FileHeader h(FileSettings::DIRECTIO_ALIGNMENT);
FastOS_File f;
f.OpenReadWrite(_ssfile.GetFileName());
h.readFile(f);
diff --git a/searchlib/src/vespa/searchlib/diskindex/pagedict4file.h b/searchlib/src/vespa/searchlib/diskindex/pagedict4file.h
index 2363c89ac3b..0a68be7ae1b 100644
--- a/searchlib/src/vespa/searchlib/diskindex/pagedict4file.h
+++ b/searchlib/src/vespa/searchlib/diskindex/pagedict4file.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/index/dictionaryfile.h>
diff --git a/searchlib/src/vespa/searchlib/diskindex/pagedict4randread.cpp b/searchlib/src/vespa/searchlib/diskindex/pagedict4randread.cpp
index 4ee37470e1d..30fc85d47f0 100644
--- a/searchlib/src/vespa/searchlib/diskindex/pagedict4randread.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/pagedict4randread.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "pagedict4randread.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/searchlib/src/vespa/searchlib/diskindex/pagedict4randread.h b/searchlib/src/vespa/searchlib/diskindex/pagedict4randread.h
index 4da77880692..f2c6bc79d1b 100644
--- a/searchlib/src/vespa/searchlib/diskindex/pagedict4randread.h
+++ b/searchlib/src/vespa/searchlib/diskindex/pagedict4randread.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/diskindex/wordnummapper.cpp b/searchlib/src/vespa/searchlib/diskindex/wordnummapper.cpp
index 7be1eccecb5..49e175ba102 100644
--- a/searchlib/src/vespa/searchlib/diskindex/wordnummapper.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/wordnummapper.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "wordnummapper.h"
#include <vespa/fastlib/io/bufferedfile.h>
diff --git a/searchlib/src/vespa/searchlib/diskindex/wordnummapper.h b/searchlib/src/vespa/searchlib/diskindex/wordnummapper.h
index f36d5656bd1..4f6201aeef8 100644
--- a/searchlib/src/vespa/searchlib/diskindex/wordnummapper.h
+++ b/searchlib/src/vespa/searchlib/diskindex/wordnummapper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/common/tunefileinfo.h>
diff --git a/searchlib/src/vespa/searchlib/diskindex/zcbuf.cpp b/searchlib/src/vespa/searchlib/diskindex/zcbuf.cpp
index 1f5ce4260a9..68894a32bb1 100644
--- a/searchlib/src/vespa/searchlib/diskindex/zcbuf.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/zcbuf.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "zcbuf.h"
#include <cstdlib>
diff --git a/searchlib/src/vespa/searchlib/diskindex/zcbuf.h b/searchlib/src/vespa/searchlib/diskindex/zcbuf.h
index b81cc2a9720..e143c1577af 100644
--- a/searchlib/src/vespa/searchlib/diskindex/zcbuf.h
+++ b/searchlib/src/vespa/searchlib/diskindex/zcbuf.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/diskindex/zcposocc.cpp b/searchlib/src/vespa/searchlib/diskindex/zcposocc.cpp
index e3bb400f4d3..593d5567266 100644
--- a/searchlib/src/vespa/searchlib/diskindex/zcposocc.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/zcposocc.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "zcposocc.h"
#include <vespa/searchlib/index/postinglistcounts.h>
diff --git a/searchlib/src/vespa/searchlib/diskindex/zcposocc.h b/searchlib/src/vespa/searchlib/diskindex/zcposocc.h
index 0615cf636de..cbb5e6da039 100644
--- a/searchlib/src/vespa/searchlib/diskindex/zcposocc.h
+++ b/searchlib/src/vespa/searchlib/diskindex/zcposocc.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/diskindex/zcposocciterators.cpp b/searchlib/src/vespa/searchlib/diskindex/zcposocciterators.cpp
index d3df8792e0e..0d0478b2ddc 100644
--- a/searchlib/src/vespa/searchlib/diskindex/zcposocciterators.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/zcposocciterators.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "zcposocciterators.h"
#include <vespa/searchlib/bitcompression/posocc_fields_params.h>
diff --git a/searchlib/src/vespa/searchlib/diskindex/zcposocciterators.h b/searchlib/src/vespa/searchlib/diskindex/zcposocciterators.h
index 3aeacd73735..fdc54245c1d 100644
--- a/searchlib/src/vespa/searchlib/diskindex/zcposocciterators.h
+++ b/searchlib/src/vespa/searchlib/diskindex/zcposocciterators.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/diskindex/zcposoccrandread.cpp b/searchlib/src/vespa/searchlib/diskindex/zcposoccrandread.cpp
index 5f699f8a450..7be66db9fec 100644
--- a/searchlib/src/vespa/searchlib/diskindex/zcposoccrandread.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/zcposoccrandread.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "zcposoccrandread.h"
#include "zcposocciterators.h"
diff --git a/searchlib/src/vespa/searchlib/diskindex/zcposoccrandread.h b/searchlib/src/vespa/searchlib/diskindex/zcposoccrandread.h
index 7ae59611e35..bcc42374cd3 100644
--- a/searchlib/src/vespa/searchlib/diskindex/zcposoccrandread.h
+++ b/searchlib/src/vespa/searchlib/diskindex/zcposoccrandread.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/diskindex/zcposting.cpp b/searchlib/src/vespa/searchlib/diskindex/zcposting.cpp
index b8a0813e33c..f4bee9f6344 100644
--- a/searchlib/src/vespa/searchlib/diskindex/zcposting.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/zcposting.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "zcposting.h"
#include <vespa/searchlib/index/postinglistcounts.h>
diff --git a/searchlib/src/vespa/searchlib/diskindex/zcposting.h b/searchlib/src/vespa/searchlib/diskindex/zcposting.h
index 6ca87f01aea..24fccee9b8d 100644
--- a/searchlib/src/vespa/searchlib/diskindex/zcposting.h
+++ b/searchlib/src/vespa/searchlib/diskindex/zcposting.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/diskindex/zcpostingiterators.cpp b/searchlib/src/vespa/searchlib/diskindex/zcpostingiterators.cpp
index c90a2f7993c..c7cd9d476a6 100644
--- a/searchlib/src/vespa/searchlib/diskindex/zcpostingiterators.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/zcpostingiterators.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "zcpostingiterators.h"
#include <vespa/searchlib/fef/termfieldmatchdata.h>
diff --git a/searchlib/src/vespa/searchlib/diskindex/zcpostingiterators.h b/searchlib/src/vespa/searchlib/diskindex/zcpostingiterators.h
index 297659cd1fe..e91e06bdf7a 100644
--- a/searchlib/src/vespa/searchlib/diskindex/zcpostingiterators.h
+++ b/searchlib/src/vespa/searchlib/diskindex/zcpostingiterators.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/CMakeLists.txt b/searchlib/src/vespa/searchlib/docstore/CMakeLists.txt
index b1c27e20210..89804f79a13 100644
--- a/searchlib/src/vespa/searchlib/docstore/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/docstore/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_docstore OBJECT
SOURCES
chunk.cpp
diff --git a/searchlib/src/vespa/searchlib/docstore/cachestats.h b/searchlib/src/vespa/searchlib/docstore/cachestats.h
index f20e31e5ae0..4bad9b48fa3 100644
--- a/searchlib/src/vespa/searchlib/docstore/cachestats.h
+++ b/searchlib/src/vespa/searchlib/docstore/cachestats.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/chunk.cpp b/searchlib/src/vespa/searchlib/docstore/chunk.cpp
index 3d270cc5cc4..521759f1d10 100644
--- a/searchlib/src/vespa/searchlib/docstore/chunk.cpp
+++ b/searchlib/src/vespa/searchlib/docstore/chunk.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "chunk.h"
#include "chunkformats.h"
diff --git a/searchlib/src/vespa/searchlib/docstore/chunk.h b/searchlib/src/vespa/searchlib/docstore/chunk.h
index 37d13af5a3b..d40ba27ef45 100644
--- a/searchlib/src/vespa/searchlib/docstore/chunk.h
+++ b/searchlib/src/vespa/searchlib/docstore/chunk.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/chunkformat.cpp b/searchlib/src/vespa/searchlib/docstore/chunkformat.cpp
index afa7abb9ef8..9e3e6c9e46c 100644
--- a/searchlib/src/vespa/searchlib/docstore/chunkformat.cpp
+++ b/searchlib/src/vespa/searchlib/docstore/chunkformat.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "chunkformats.h"
#include <vespa/vespalib/util/compressor.h>
diff --git a/searchlib/src/vespa/searchlib/docstore/chunkformat.h b/searchlib/src/vespa/searchlib/docstore/chunkformat.h
index ede1a02f0f4..6fa13428b21 100644
--- a/searchlib/src/vespa/searchlib/docstore/chunkformat.h
+++ b/searchlib/src/vespa/searchlib/docstore/chunkformat.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/chunkformats.cpp b/searchlib/src/vespa/searchlib/docstore/chunkformats.cpp
index 8c32872bcec..19a612971ad 100644
--- a/searchlib/src/vespa/searchlib/docstore/chunkformats.cpp
+++ b/searchlib/src/vespa/searchlib/docstore/chunkformats.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "chunkformats.h"
#include <vespa/vespalib/util/crc.h>
diff --git a/searchlib/src/vespa/searchlib/docstore/chunkformats.h b/searchlib/src/vespa/searchlib/docstore/chunkformats.h
index 3edb52d265c..5473cca712a 100644
--- a/searchlib/src/vespa/searchlib/docstore/chunkformats.h
+++ b/searchlib/src/vespa/searchlib/docstore/chunkformats.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/compacter.cpp b/searchlib/src/vespa/searchlib/docstore/compacter.cpp
index 6965c2b34c9..38f3fbef0b0 100644
--- a/searchlib/src/vespa/searchlib/docstore/compacter.cpp
+++ b/searchlib/src/vespa/searchlib/docstore/compacter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "compacter.h"
#include "logdatastore.h"
diff --git a/searchlib/src/vespa/searchlib/docstore/compacter.h b/searchlib/src/vespa/searchlib/docstore/compacter.h
index 52691d2c415..cd4609ce33e 100644
--- a/searchlib/src/vespa/searchlib/docstore/compacter.h
+++ b/searchlib/src/vespa/searchlib/docstore/compacter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/data_store_file_chunk_id.cpp b/searchlib/src/vespa/searchlib/docstore/data_store_file_chunk_id.cpp
index 837cbe751e7..42938ad343a 100644
--- a/searchlib/src/vespa/searchlib/docstore/data_store_file_chunk_id.cpp
+++ b/searchlib/src/vespa/searchlib/docstore/data_store_file_chunk_id.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "data_store_file_chunk_id.h"
#include "filechunk.h"
diff --git a/searchlib/src/vespa/searchlib/docstore/data_store_file_chunk_id.h b/searchlib/src/vespa/searchlib/docstore/data_store_file_chunk_id.h
index 8b74f387df9..39de89eeb2e 100644
--- a/searchlib/src/vespa/searchlib/docstore/data_store_file_chunk_id.h
+++ b/searchlib/src/vespa/searchlib/docstore/data_store_file_chunk_id.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/data_store_file_chunk_stats.h b/searchlib/src/vespa/searchlib/docstore/data_store_file_chunk_stats.h
index 6f9a5a0ee4c..231e34b6c64 100644
--- a/searchlib/src/vespa/searchlib/docstore/data_store_file_chunk_stats.h
+++ b/searchlib/src/vespa/searchlib/docstore/data_store_file_chunk_stats.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/data_store_storage_stats.h b/searchlib/src/vespa/searchlib/docstore/data_store_storage_stats.h
index a239d676e7d..5f0a7c493f9 100644
--- a/searchlib/src/vespa/searchlib/docstore/data_store_storage_stats.h
+++ b/searchlib/src/vespa/searchlib/docstore/data_store_storage_stats.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/document_store_visitor_progress.cpp b/searchlib/src/vespa/searchlib/docstore/document_store_visitor_progress.cpp
index 7a6355e6c3c..0a83eb613e1 100644
--- a/searchlib/src/vespa/searchlib/docstore/document_store_visitor_progress.cpp
+++ b/searchlib/src/vespa/searchlib/docstore/document_store_visitor_progress.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_store_visitor_progress.h"
diff --git a/searchlib/src/vespa/searchlib/docstore/document_store_visitor_progress.h b/searchlib/src/vespa/searchlib/docstore/document_store_visitor_progress.h
index ef1a97aedb8..49b9634cc50 100644
--- a/searchlib/src/vespa/searchlib/docstore/document_store_visitor_progress.h
+++ b/searchlib/src/vespa/searchlib/docstore/document_store_visitor_progress.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "idocumentstore.h"
diff --git a/searchlib/src/vespa/searchlib/docstore/documentstore.cpp b/searchlib/src/vespa/searchlib/docstore/documentstore.cpp
index e0a8f4098c6..7aaee7180df 100644
--- a/searchlib/src/vespa/searchlib/docstore/documentstore.cpp
+++ b/searchlib/src/vespa/searchlib/docstore/documentstore.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "cachestats.h"
#include "documentstore.h"
diff --git a/searchlib/src/vespa/searchlib/docstore/documentstore.h b/searchlib/src/vespa/searchlib/docstore/documentstore.h
index b8895f951bb..b6021d34bef 100644
--- a/searchlib/src/vespa/searchlib/docstore/documentstore.h
+++ b/searchlib/src/vespa/searchlib/docstore/documentstore.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/filechunk.cpp b/searchlib/src/vespa/searchlib/docstore/filechunk.cpp
index c21dfccccdf..180d6aa8ced 100644
--- a/searchlib/src/vespa/searchlib/docstore/filechunk.cpp
+++ b/searchlib/src/vespa/searchlib/docstore/filechunk.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "filechunk.h"
#include "data_store_file_chunk_stats.h"
diff --git a/searchlib/src/vespa/searchlib/docstore/filechunk.h b/searchlib/src/vespa/searchlib/docstore/filechunk.h
index 580e3a80e02..eee69602f8b 100644
--- a/searchlib/src/vespa/searchlib/docstore/filechunk.h
+++ b/searchlib/src/vespa/searchlib/docstore/filechunk.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/ibucketizer.h b/searchlib/src/vespa/searchlib/docstore/ibucketizer.h
index b2ab64e1d02..4b7ddd0bc05 100644
--- a/searchlib/src/vespa/searchlib/docstore/ibucketizer.h
+++ b/searchlib/src/vespa/searchlib/docstore/ibucketizer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/idatastore.cpp b/searchlib/src/vespa/searchlib/docstore/idatastore.cpp
index da99b17b360..86800322516 100644
--- a/searchlib/src/vespa/searchlib/docstore/idatastore.cpp
+++ b/searchlib/src/vespa/searchlib/docstore/idatastore.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "idatastore.h"
diff --git a/searchlib/src/vespa/searchlib/docstore/idatastore.h b/searchlib/src/vespa/searchlib/docstore/idatastore.h
index 75e1bd2a5e1..b18bb0a3827 100644
--- a/searchlib/src/vespa/searchlib/docstore/idatastore.h
+++ b/searchlib/src/vespa/searchlib/docstore/idatastore.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/idocumentstore.cpp b/searchlib/src/vespa/searchlib/docstore/idocumentstore.cpp
index 44708d11539..e1558f2238b 100644
--- a/searchlib/src/vespa/searchlib/docstore/idocumentstore.cpp
+++ b/searchlib/src/vespa/searchlib/docstore/idocumentstore.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "idocumentstore.h"
#include <vespa/document/fieldvalue/document.h>
diff --git a/searchlib/src/vespa/searchlib/docstore/idocumentstore.h b/searchlib/src/vespa/searchlib/docstore/idocumentstore.h
index cb739888e54..2a7864a6f47 100644
--- a/searchlib/src/vespa/searchlib/docstore/idocumentstore.h
+++ b/searchlib/src/vespa/searchlib/docstore/idocumentstore.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/lid_info.cpp b/searchlib/src/vespa/searchlib/docstore/lid_info.cpp
index 862497037d5..cb5c9499ecd 100644
--- a/searchlib/src/vespa/searchlib/docstore/lid_info.cpp
+++ b/searchlib/src/vespa/searchlib/docstore/lid_info.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "lid_info.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchlib/src/vespa/searchlib/docstore/lid_info.h b/searchlib/src/vespa/searchlib/docstore/lid_info.h
index c30e851a07c..86814102610 100644
--- a/searchlib/src/vespa/searchlib/docstore/lid_info.h
+++ b/searchlib/src/vespa/searchlib/docstore/lid_info.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/liddatastore.h b/searchlib/src/vespa/searchlib/docstore/liddatastore.h
index 1cd7495e9b3..c710158be77 100644
--- a/searchlib/src/vespa/searchlib/docstore/liddatastore.h
+++ b/searchlib/src/vespa/searchlib/docstore/liddatastore.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/logdatastore.cpp b/searchlib/src/vespa/searchlib/docstore/logdatastore.cpp
index 141cd2cf2b7..fd25dd56235 100644
--- a/searchlib/src/vespa/searchlib/docstore/logdatastore.cpp
+++ b/searchlib/src/vespa/searchlib/docstore/logdatastore.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "storebybucket.h"
#include "compacter.h"
diff --git a/searchlib/src/vespa/searchlib/docstore/logdatastore.h b/searchlib/src/vespa/searchlib/docstore/logdatastore.h
index 7de8ebb4794..0e11b88a178 100644
--- a/searchlib/src/vespa/searchlib/docstore/logdatastore.h
+++ b/searchlib/src/vespa/searchlib/docstore/logdatastore.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/logdocumentstore.cpp b/searchlib/src/vespa/searchlib/docstore/logdocumentstore.cpp
index 38be9733cfb..a9bc8559f3c 100644
--- a/searchlib/src/vespa/searchlib/docstore/logdocumentstore.cpp
+++ b/searchlib/src/vespa/searchlib/docstore/logdocumentstore.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "logdocumentstore.h"
diff --git a/searchlib/src/vespa/searchlib/docstore/logdocumentstore.h b/searchlib/src/vespa/searchlib/docstore/logdocumentstore.h
index 46e60d9245f..de36155bedb 100644
--- a/searchlib/src/vespa/searchlib/docstore/logdocumentstore.h
+++ b/searchlib/src/vespa/searchlib/docstore/logdocumentstore.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/randread.h b/searchlib/src/vespa/searchlib/docstore/randread.h
index 186943f0e3e..1c1130049de 100644
--- a/searchlib/src/vespa/searchlib/docstore/randread.h
+++ b/searchlib/src/vespa/searchlib/docstore/randread.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/randreaders.cpp b/searchlib/src/vespa/searchlib/docstore/randreaders.cpp
index cb670f513f7..0d1485891d6 100644
--- a/searchlib/src/vespa/searchlib/docstore/randreaders.cpp
+++ b/searchlib/src/vespa/searchlib/docstore/randreaders.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "randreaders.h"
#include "summaryexceptions.h"
diff --git a/searchlib/src/vespa/searchlib/docstore/randreaders.h b/searchlib/src/vespa/searchlib/docstore/randreaders.h
index 00dc371bddf..b672116ca6d 100644
--- a/searchlib/src/vespa/searchlib/docstore/randreaders.h
+++ b/searchlib/src/vespa/searchlib/docstore/randreaders.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/storebybucket.cpp b/searchlib/src/vespa/searchlib/docstore/storebybucket.cpp
index cd919c5ff03..37732fe46cb 100644
--- a/searchlib/src/vespa/searchlib/docstore/storebybucket.cpp
+++ b/searchlib/src/vespa/searchlib/docstore/storebybucket.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "storebybucket.h"
#include <vespa/vespalib/util/lambdatask.h>
diff --git a/searchlib/src/vespa/searchlib/docstore/storebybucket.h b/searchlib/src/vespa/searchlib/docstore/storebybucket.h
index 0716a7c3ffc..05eb7880ae8 100644
--- a/searchlib/src/vespa/searchlib/docstore/storebybucket.h
+++ b/searchlib/src/vespa/searchlib/docstore/storebybucket.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/summaryexceptions.cpp b/searchlib/src/vespa/searchlib/docstore/summaryexceptions.cpp
index 80510dbe883..175b5b7a3ce 100644
--- a/searchlib/src/vespa/searchlib/docstore/summaryexceptions.cpp
+++ b/searchlib/src/vespa/searchlib/docstore/summaryexceptions.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "summaryexceptions.h"
#include <vespa/fastos/file.h>
diff --git a/searchlib/src/vespa/searchlib/docstore/summaryexceptions.h b/searchlib/src/vespa/searchlib/docstore/summaryexceptions.h
index a9e8f3ca763..c0f518d7db2 100644
--- a/searchlib/src/vespa/searchlib/docstore/summaryexceptions.h
+++ b/searchlib/src/vespa/searchlib/docstore/summaryexceptions.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/value.cpp b/searchlib/src/vespa/searchlib/docstore/value.cpp
index 25cf93ac18b..6c2173393b9 100644
--- a/searchlib/src/vespa/searchlib/docstore/value.cpp
+++ b/searchlib/src/vespa/searchlib/docstore/value.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "value.h"
#include <vespa/vespalib/util/compressor.h>
diff --git a/searchlib/src/vespa/searchlib/docstore/value.h b/searchlib/src/vespa/searchlib/docstore/value.h
index fb377abb2fb..e8f98f0a54e 100644
--- a/searchlib/src/vespa/searchlib/docstore/value.h
+++ b/searchlib/src/vespa/searchlib/docstore/value.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/visitcache.cpp b/searchlib/src/vespa/searchlib/docstore/visitcache.cpp
index 0e3294d45e5..c37fe30b421 100644
--- a/searchlib/src/vespa/searchlib/docstore/visitcache.cpp
+++ b/searchlib/src/vespa/searchlib/docstore/visitcache.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "visitcache.h"
#include "ibucketizer.h"
diff --git a/searchlib/src/vespa/searchlib/docstore/visitcache.h b/searchlib/src/vespa/searchlib/docstore/visitcache.h
index 430481acd4c..1e2dbd29062 100644
--- a/searchlib/src/vespa/searchlib/docstore/visitcache.h
+++ b/searchlib/src/vespa/searchlib/docstore/visitcache.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.cpp b/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.cpp
index f498b93ca14..4da09868216 100644
--- a/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.cpp
+++ b/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.cpp
@@ -1,16 +1,17 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include "writeablefilechunk.h"
#include "data_store_file_chunk_stats.h"
#include "summaryexceptions.h"
-#include <vespa/vespalib/util/lambdatask.h>
-#include <vespa/vespalib/util/array.hpp>
-#include <vespa/vespalib/util/size_literals.h>
-#include <vespa/vespalib/data/fileheader.h>
-#include <vespa/vespalib/data/databuffer.h>
+#include "writeablefilechunk.h"
#include <vespa/searchlib/common/fileheadercontext.h>
-#include <vespa/vespalib/stllike/hash_map.hpp>
+#include <vespa/searchlib/util/file_settings.h>
+#include <vespa/vespalib/data/databuffer.h>
+#include <vespa/vespalib/data/fileheader.h>
#include <vespa/vespalib/objects/nbostream.h>
+#include <vespa/vespalib/stllike/hash_map.hpp>
+#include <vespa/vespalib/util/array.hpp>
+#include <vespa/vespalib/util/lambdatask.h>
+#include <vespa/vespalib/util/size_literals.h>
#include <vespa/log/log.h>
LOG_SETUP(".search.writeablefilechunk");
@@ -27,8 +28,7 @@ namespace search {
namespace {
-const uint64_t Alignment = 4_Ki;
-const uint64_t headerAlign = 4_Ki;
+const size_t Alignment = FileSettings::DIRECTIO_ALIGNMENT;
}
@@ -785,7 +785,7 @@ void
WriteableFileChunk::writeDataHeader(const FileHeaderContext &fileHeaderContext)
{
typedef FileHeader::Tag Tag;
- FileHeader h(headerAlign);
+ FileHeader h(FileSettings::DIRECTIO_ALIGNMENT);
assert(_dataFile.IsOpened());
assert(_dataFile.IsWriteMode());
assert(_dataFile.GetPosition() == 0);
diff --git a/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.h b/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.h
index 901e70269ec..f1b69a5f1f9 100644
--- a/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.h
+++ b/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/engine/CMakeLists.txt b/searchlib/src/vespa/searchlib/engine/CMakeLists.txt
index 570118de0af..bb388877313 100644
--- a/searchlib/src/vespa/searchlib/engine/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/engine/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
find_package(Protobuf REQUIRED)
protobuf_generate_cpp(searchlib_engine_PROTOBUF_SRCS searchlib_engine_PROTOBUF_HDRS ../../../../src/protobuf/search_protocol.proto)
diff --git a/searchlib/src/vespa/searchlib/engine/create-class-cpp.sh b/searchlib/src/vespa/searchlib/engine/create-class-cpp.sh
index 840a5984c0e..8220da50eaa 100755
--- a/searchlib/src/vespa/searchlib/engine/create-class-cpp.sh
+++ b/searchlib/src/vespa/searchlib/engine/create-class-cpp.sh
@@ -1,12 +1,12 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
class=$1
guard=`echo $class | tr 'a-z' 'A-Z'`
name=`echo $class | tr 'A-Z' 'a-z'`
cat <<EOF
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "$name.h"
diff --git a/searchlib/src/vespa/searchlib/engine/create-class-h.sh b/searchlib/src/vespa/searchlib/engine/create-class-h.sh
index 11cbf95cdaa..3a13aeb3a03 100644
--- a/searchlib/src/vespa/searchlib/engine/create-class-h.sh
+++ b/searchlib/src/vespa/searchlib/engine/create-class-h.sh
@@ -1,11 +1,11 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
class=$1
guard=`echo $class | tr 'a-z' 'A-Z'`
cat <<EOF
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace search {
diff --git a/searchlib/src/vespa/searchlib/engine/create-interface.sh b/searchlib/src/vespa/searchlib/engine/create-interface.sh
index d29a00f7815..c781e7c93b6 100644
--- a/searchlib/src/vespa/searchlib/engine/create-interface.sh
+++ b/searchlib/src/vespa/searchlib/engine/create-interface.sh
@@ -1,11 +1,11 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
class=$1
guard=`echo $class | tr 'a-z' 'A-Z'`
cat <<EOF
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace search {
diff --git a/searchlib/src/vespa/searchlib/engine/docsumapi.cpp b/searchlib/src/vespa/searchlib/engine/docsumapi.cpp
index 8ba59164831..47610e6d1e9 100644
--- a/searchlib/src/vespa/searchlib/engine/docsumapi.cpp
+++ b/searchlib/src/vespa/searchlib/engine/docsumapi.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "docsumapi.h"
#include <cassert>
diff --git a/searchlib/src/vespa/searchlib/engine/docsumapi.h b/searchlib/src/vespa/searchlib/engine/docsumapi.h
index dc51a7319a9..0547fe915ef 100644
--- a/searchlib/src/vespa/searchlib/engine/docsumapi.h
+++ b/searchlib/src/vespa/searchlib/engine/docsumapi.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/engine/docsumreply.cpp b/searchlib/src/vespa/searchlib/engine/docsumreply.cpp
index 11c170296b7..24e21350088 100644
--- a/searchlib/src/vespa/searchlib/engine/docsumreply.cpp
+++ b/searchlib/src/vespa/searchlib/engine/docsumreply.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "docsumreply.h"
#include <vespa/vespalib/data/slime/slime.h>
diff --git a/searchlib/src/vespa/searchlib/engine/docsumreply.h b/searchlib/src/vespa/searchlib/engine/docsumreply.h
index 9e9acd0e498..42eec32dba6 100644
--- a/searchlib/src/vespa/searchlib/engine/docsumreply.h
+++ b/searchlib/src/vespa/searchlib/engine/docsumreply.h
@@ -1,10 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vector>
#include <vespa/document/base/globalid.h>
#include <vespa/vespalib/util/memory.h>
+#include <vespa/searchlib/common/unique_issues.h>
#include <memory>
#include <vespa/searchlib/engine/docsumrequest.h>
@@ -36,6 +37,7 @@ struct DocsumReply
mutable DocsumRequest::UP request;
std::unique_ptr<vespalib::Slime> _root;
+ UniqueIssues::UP my_issues;
DocsumReply();
DocsumReply(std::unique_ptr<vespalib::Slime> root);
diff --git a/searchlib/src/vespa/searchlib/engine/docsumrequest.cpp b/searchlib/src/vespa/searchlib/engine/docsumrequest.cpp
index 69e3e721f8e..7119542129c 100644
--- a/searchlib/src/vespa/searchlib/engine/docsumrequest.cpp
+++ b/searchlib/src/vespa/searchlib/engine/docsumrequest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "docsumrequest.h"
diff --git a/searchlib/src/vespa/searchlib/engine/docsumrequest.h b/searchlib/src/vespa/searchlib/engine/docsumrequest.h
index b34eebea0e9..64ea1100532 100644
--- a/searchlib/src/vespa/searchlib/engine/docsumrequest.h
+++ b/searchlib/src/vespa/searchlib/engine/docsumrequest.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/engine/monitorapi.h b/searchlib/src/vespa/searchlib/engine/monitorapi.h
index 2f467f12e5c..846484b8eaa 100644
--- a/searchlib/src/vespa/searchlib/engine/monitorapi.h
+++ b/searchlib/src/vespa/searchlib/engine/monitorapi.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/engine/monitorreply.cpp b/searchlib/src/vespa/searchlib/engine/monitorreply.cpp
index 5d9c381515d..44a00638661 100644
--- a/searchlib/src/vespa/searchlib/engine/monitorreply.cpp
+++ b/searchlib/src/vespa/searchlib/engine/monitorreply.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "monitorreply.h"
diff --git a/searchlib/src/vespa/searchlib/engine/monitorreply.h b/searchlib/src/vespa/searchlib/engine/monitorreply.h
index 0010735ef43..52948e9f963 100644
--- a/searchlib/src/vespa/searchlib/engine/monitorreply.h
+++ b/searchlib/src/vespa/searchlib/engine/monitorreply.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/engine/monitorrequest.cpp b/searchlib/src/vespa/searchlib/engine/monitorrequest.cpp
index efc4faaa402..92f127d64d8 100644
--- a/searchlib/src/vespa/searchlib/engine/monitorrequest.cpp
+++ b/searchlib/src/vespa/searchlib/engine/monitorrequest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "monitorrequest.h"
diff --git a/searchlib/src/vespa/searchlib/engine/monitorrequest.h b/searchlib/src/vespa/searchlib/engine/monitorrequest.h
index d99221e24ae..b0622ab1d26 100644
--- a/searchlib/src/vespa/searchlib/engine/monitorrequest.h
+++ b/searchlib/src/vespa/searchlib/engine/monitorrequest.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/engine/propertiesmap.cpp b/searchlib/src/vespa/searchlib/engine/propertiesmap.cpp
index f5d4e79c0d3..5989f952f17 100644
--- a/searchlib/src/vespa/searchlib/engine/propertiesmap.cpp
+++ b/searchlib/src/vespa/searchlib/engine/propertiesmap.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "propertiesmap.h"
#include <vespa/vespalib/stllike/hash_map.hpp>
diff --git a/searchlib/src/vespa/searchlib/engine/propertiesmap.h b/searchlib/src/vespa/searchlib/engine/propertiesmap.h
index 57d7dbb4d39..3d50789887b 100644
--- a/searchlib/src/vespa/searchlib/engine/propertiesmap.h
+++ b/searchlib/src/vespa/searchlib/engine/propertiesmap.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/engine/proto_converter.cpp b/searchlib/src/vespa/searchlib/engine/proto_converter.cpp
index 9ad058c20ad..64039f69cd5 100644
--- a/searchlib/src/vespa/searchlib/engine/proto_converter.cpp
+++ b/searchlib/src/vespa/searchlib/engine/proto_converter.cpp
@@ -117,6 +117,13 @@ ProtoConverter::search_reply_to_proto(const SearchReply &reply, ProtoSearchReply
proto.set_grouping_blob(&reply.groupResult[0], reply.groupResult.size());
const auto &slime_trace = reply.propertiesMap.trace().lookup("slime");
proto.set_slime_trace(slime_trace.get().data(), slime_trace.get().size());
+ if (reply.my_issues) {
+ reply.my_issues->for_each_message([&](const vespalib::string &err_msg)
+ {
+ auto *err_obj = proto.add_errors();
+ err_obj->set_message(err_msg);
+ });
+ }
}
//-----------------------------------------------------------------------------
@@ -166,6 +173,13 @@ ProtoConverter::docsum_reply_to_proto(const DocsumReply &reply, ProtoDocsumReply
vespalib::slime::BinaryFormat::encode(*reply._root, buf);
proto.set_slime_summaries(buf.obtain().data, buf.obtain().size);
}
+ if (reply.my_issues) {
+ reply.my_issues->for_each_message([&](const vespalib::string &err_msg)
+ {
+ auto *err_obj = proto.add_errors();
+ err_obj->set_message(err_msg);
+ });
+ }
}
//-----------------------------------------------------------------------------
diff --git a/searchlib/src/vespa/searchlib/engine/request.cpp b/searchlib/src/vespa/searchlib/engine/request.cpp
index d47eeb7b25b..e4ab55fcacf 100644
--- a/searchlib/src/vespa/searchlib/engine/request.cpp
+++ b/searchlib/src/vespa/searchlib/engine/request.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "request.h"
diff --git a/searchlib/src/vespa/searchlib/engine/request.h b/searchlib/src/vespa/searchlib/engine/request.h
index 6375588df46..d3b6da6e8c2 100644
--- a/searchlib/src/vespa/searchlib/engine/request.h
+++ b/searchlib/src/vespa/searchlib/engine/request.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/engine/search_protocol_proto.h b/searchlib/src/vespa/searchlib/engine/search_protocol_proto.h
index e2eeca74e44..bb9887f6e74 100644
--- a/searchlib/src/vespa/searchlib/engine/search_protocol_proto.h
+++ b/searchlib/src/vespa/searchlib/engine/search_protocol_proto.h
@@ -7,6 +7,6 @@
#pragma GCC diagnostic ignored "-Wsuggest-override"
#endif
-#include "search_protocol.pb.h"
+#include <vespa/searchlib/engine/search_protocol.pb.h>
#pragma GCC diagnostic pop
diff --git a/searchlib/src/vespa/searchlib/engine/searchapi.h b/searchlib/src/vespa/searchlib/engine/searchapi.h
index cdb974872cb..7b2375c38bd 100644
--- a/searchlib/src/vespa/searchlib/engine/searchapi.h
+++ b/searchlib/src/vespa/searchlib/engine/searchapi.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/engine/searchreply.cpp b/searchlib/src/vespa/searchlib/engine/searchreply.cpp
index f5dfe5762cc..954b3d5141c 100644
--- a/searchlib/src/vespa/searchlib/engine/searchreply.cpp
+++ b/searchlib/src/vespa/searchlib/engine/searchreply.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "searchreply.h"
@@ -12,7 +12,8 @@ SearchReply::SearchReply()
groupResult(),
coverage(),
hits(),
- request()
+ request(),
+ my_issues()
{ }
SearchReply::~SearchReply() = default;
@@ -25,7 +26,8 @@ SearchReply::SearchReply(const SearchReply &rhs)
groupResult (rhs.groupResult),
coverage (rhs.coverage),
hits (rhs.hits),
- request() // NB not copied
+ request(), // NB not copied
+ my_issues() // NB not copied
{ }
}
diff --git a/searchlib/src/vespa/searchlib/engine/searchreply.h b/searchlib/src/vespa/searchlib/engine/searchreply.h
index f4999d79ada..b23a5fc192e 100644
--- a/searchlib/src/vespa/searchlib/engine/searchreply.h
+++ b/searchlib/src/vespa/searchlib/engine/searchreply.h
@@ -1,9 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/base/globalid.h>
#include <vespa/searchlib/common/hitrank.h>
+#include <vespa/searchlib/common/unique_issues.h>
#include <vespa/vespalib/util/array.h>
#include <vespa/searchlib/engine/searchrequest.h>
#include <vector>
@@ -72,6 +73,7 @@ public:
PropertiesMap propertiesMap;
SearchRequest::UP request;
+ UniqueIssues::UP my_issues;
SearchReply();
~SearchReply();
diff --git a/searchlib/src/vespa/searchlib/engine/searchrequest.cpp b/searchlib/src/vespa/searchlib/engine/searchrequest.cpp
index fcae7ffd4f3..95302cd7dda 100644
--- a/searchlib/src/vespa/searchlib/engine/searchrequest.cpp
+++ b/searchlib/src/vespa/searchlib/engine/searchrequest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "searchrequest.h"
diff --git a/searchlib/src/vespa/searchlib/engine/searchrequest.h b/searchlib/src/vespa/searchlib/engine/searchrequest.h
index 5af795a3a27..7b598735b42 100644
--- a/searchlib/src/vespa/searchlib/engine/searchrequest.h
+++ b/searchlib/src/vespa/searchlib/engine/searchrequest.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/expression/CMakeLists.txt b/searchlib/src/vespa/searchlib/expression/CMakeLists.txt
index 652fa5a3b01..9a3e377e5ef 100644
--- a/searchlib/src/vespa/searchlib/expression/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/expression/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_expression OBJECT
SOURCES
attribute_map_lookup_node.cpp
diff --git a/searchlib/src/vespa/searchlib/expression/addfunctionnode.h b/searchlib/src/vespa/searchlib/expression/addfunctionnode.h
index 576a2920771..0f88a6d1c58 100644
--- a/searchlib/src/vespa/searchlib/expression/addfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/addfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "numericfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/aggregationrefnode.cpp b/searchlib/src/vespa/searchlib/expression/aggregationrefnode.cpp
index 1962cad870a..a7d3c7c6507 100644
--- a/searchlib/src/vespa/searchlib/expression/aggregationrefnode.cpp
+++ b/searchlib/src/vespa/searchlib/expression/aggregationrefnode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "aggregationrefnode.h"
#include <vespa/vespalib/util/stringfmt.h>
#include <stdexcept>
diff --git a/searchlib/src/vespa/searchlib/expression/aggregationrefnode.h b/searchlib/src/vespa/searchlib/expression/aggregationrefnode.h
index 5032fc3a9ec..176ac0d585e 100644
--- a/searchlib/src/vespa/searchlib/expression/aggregationrefnode.h
+++ b/searchlib/src/vespa/searchlib/expression/aggregationrefnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "expressionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/andfunctionnode.h b/searchlib/src/vespa/searchlib/expression/andfunctionnode.h
index bf3c1ac620f..d76362da41c 100644
--- a/searchlib/src/vespa/searchlib/expression/andfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/andfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bitfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/arrayatlookupfunctionnode.cpp b/searchlib/src/vespa/searchlib/expression/arrayatlookupfunctionnode.cpp
index cab4c4e7a92..bd8a617f6d2 100644
--- a/searchlib/src/vespa/searchlib/expression/arrayatlookupfunctionnode.cpp
+++ b/searchlib/src/vespa/searchlib/expression/arrayatlookupfunctionnode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "arrayatlookupfunctionnode.h"
#include "floatresultnode.h"
#include "integerresultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/arrayatlookupfunctionnode.h b/searchlib/src/vespa/searchlib/expression/arrayatlookupfunctionnode.h
index 371f48a4c67..be3c6ac2b4a 100644
--- a/searchlib/src/vespa/searchlib/expression/arrayatlookupfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/arrayatlookupfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "unaryfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/arrayoperationnode.cpp b/searchlib/src/vespa/searchlib/expression/arrayoperationnode.cpp
index 78e3e1db2a6..f9182f8fcc2 100644
--- a/searchlib/src/vespa/searchlib/expression/arrayoperationnode.cpp
+++ b/searchlib/src/vespa/searchlib/expression/arrayoperationnode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "arrayoperationnode.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchlib/src/vespa/searchlib/expression/arrayoperationnode.h b/searchlib/src/vespa/searchlib/expression/arrayoperationnode.h
index 54a79727640..b114a7ff115 100644
--- a/searchlib/src/vespa/searchlib/expression/arrayoperationnode.h
+++ b/searchlib/src/vespa/searchlib/expression/arrayoperationnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "functionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/attribute_map_lookup_node.cpp b/searchlib/src/vespa/searchlib/expression/attribute_map_lookup_node.cpp
index ff124cec1ab..b3cc126efdb 100644
--- a/searchlib/src/vespa/searchlib/expression/attribute_map_lookup_node.cpp
+++ b/searchlib/src/vespa/searchlib/expression/attribute_map_lookup_node.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_map_lookup_node.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/searchlib/src/vespa/searchlib/expression/attribute_map_lookup_node.h b/searchlib/src/vespa/searchlib/expression/attribute_map_lookup_node.h
index 2f9c6328969..87504206d52 100644
--- a/searchlib/src/vespa/searchlib/expression/attribute_map_lookup_node.h
+++ b/searchlib/src/vespa/searchlib/expression/attribute_map_lookup_node.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "attributenode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/attributenode.cpp b/searchlib/src/vespa/searchlib/expression/attributenode.cpp
index 94b24808e74..b239777cc87 100644
--- a/searchlib/src/vespa/searchlib/expression/attributenode.cpp
+++ b/searchlib/src/vespa/searchlib/expression/attributenode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributenode.h"
#include "enumattributeresult.h"
diff --git a/searchlib/src/vespa/searchlib/expression/attributenode.h b/searchlib/src/vespa/searchlib/expression/attributenode.h
index 472267f4b5c..3fb327c5b7b 100644
--- a/searchlib/src/vespa/searchlib/expression/attributenode.h
+++ b/searchlib/src/vespa/searchlib/expression/attributenode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "functionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/attributeresult.cpp b/searchlib/src/vespa/searchlib/expression/attributeresult.cpp
index 35cc6c44937..9eb8b35d83c 100644
--- a/searchlib/src/vespa/searchlib/expression/attributeresult.cpp
+++ b/searchlib/src/vespa/searchlib/expression/attributeresult.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributeresult.h"
diff --git a/searchlib/src/vespa/searchlib/expression/attributeresult.h b/searchlib/src/vespa/searchlib/expression/attributeresult.h
index 6b062e663da..d71bdc2b7e0 100644
--- a/searchlib/src/vespa/searchlib/expression/attributeresult.h
+++ b/searchlib/src/vespa/searchlib/expression/attributeresult.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/expression/binaryfunctionnode.h b/searchlib/src/vespa/searchlib/expression/binaryfunctionnode.h
index 1843e124080..86505e38574 100644
--- a/searchlib/src/vespa/searchlib/expression/binaryfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/binaryfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "multiargfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/bitfunctionnode.h b/searchlib/src/vespa/searchlib/expression/bitfunctionnode.h
index 946c87e2149..9d17cc51959 100644
--- a/searchlib/src/vespa/searchlib/expression/bitfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/bitfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "multiargfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/bucketresultnode.cpp b/searchlib/src/vespa/searchlib/expression/bucketresultnode.cpp
index fa89be71680..0b670e94f84 100644
--- a/searchlib/src/vespa/searchlib/expression/bucketresultnode.cpp
+++ b/searchlib/src/vespa/searchlib/expression/bucketresultnode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketresultnode.h"
namespace search::expression {
diff --git a/searchlib/src/vespa/searchlib/expression/bucketresultnode.h b/searchlib/src/vespa/searchlib/expression/bucketresultnode.h
index dd815c228ff..15f5f32277b 100644
--- a/searchlib/src/vespa/searchlib/expression/bucketresultnode.h
+++ b/searchlib/src/vespa/searchlib/expression/bucketresultnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "resultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/catfunctionnode.h b/searchlib/src/vespa/searchlib/expression/catfunctionnode.h
index 36630f187ac..0667b408500 100644
--- a/searchlib/src/vespa/searchlib/expression/catfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/catfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "multiargfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/catserializer.cpp b/searchlib/src/vespa/searchlib/expression/catserializer.cpp
index bf98dba877f..770fb2b4f7c 100644
--- a/searchlib/src/vespa/searchlib/expression/catserializer.cpp
+++ b/searchlib/src/vespa/searchlib/expression/catserializer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "catserializer.h"
#include "rawresultnode.h"
#include "resultvector.h"
diff --git a/searchlib/src/vespa/searchlib/expression/catserializer.h b/searchlib/src/vespa/searchlib/expression/catserializer.h
index d0e74a24b1c..7814ff240e3 100644
--- a/searchlib/src/vespa/searchlib/expression/catserializer.h
+++ b/searchlib/src/vespa/searchlib/expression/catserializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "serializer.h"
diff --git a/searchlib/src/vespa/searchlib/expression/constantnode.h b/searchlib/src/vespa/searchlib/expression/constantnode.h
index 35e6ad5ab8a..092981f4a08 100644
--- a/searchlib/src/vespa/searchlib/expression/constantnode.h
+++ b/searchlib/src/vespa/searchlib/expression/constantnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "expressionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/debugwaitfunctionnode.cpp b/searchlib/src/vespa/searchlib/expression/debugwaitfunctionnode.cpp
index 912e8d3514f..5014464b88c 100644
--- a/searchlib/src/vespa/searchlib/expression/debugwaitfunctionnode.cpp
+++ b/searchlib/src/vespa/searchlib/expression/debugwaitfunctionnode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "debugwaitfunctionnode.h"
#include <vespa/vespalib/util/time.h>
diff --git a/searchlib/src/vespa/searchlib/expression/debugwaitfunctionnode.h b/searchlib/src/vespa/searchlib/expression/debugwaitfunctionnode.h
index c98a7dc36b5..2371482825d 100644
--- a/searchlib/src/vespa/searchlib/expression/debugwaitfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/debugwaitfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "unaryfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/dividefunctionnode.h b/searchlib/src/vespa/searchlib/expression/dividefunctionnode.h
index 7df21c361d0..f6af19d25a8 100644
--- a/searchlib/src/vespa/searchlib/expression/dividefunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/dividefunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "numericfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/documentaccessornode.h b/searchlib/src/vespa/searchlib/expression/documentaccessornode.h
index b12217d8c53..0efe7d023f6 100644
--- a/searchlib/src/vespa/searchlib/expression/documentaccessornode.h
+++ b/searchlib/src/vespa/searchlib/expression/documentaccessornode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "expressionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/documentfieldnode.cpp b/searchlib/src/vespa/searchlib/expression/documentfieldnode.cpp
index 07377943e24..dcd4c98f2c3 100644
--- a/searchlib/src/vespa/searchlib/expression/documentfieldnode.cpp
+++ b/searchlib/src/vespa/searchlib/expression/documentfieldnode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentfieldnode.h"
#include "getdocidnamespacespecificfunctionnode.h"
#include "getymumchecksumfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/documentfieldnode.h b/searchlib/src/vespa/searchlib/expression/documentfieldnode.h
index d681cdb8c0a..b85ba0f4e9b 100644
--- a/searchlib/src/vespa/searchlib/expression/documentfieldnode.h
+++ b/searchlib/src/vespa/searchlib/expression/documentfieldnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentaccessornode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/enumattributeresult.cpp b/searchlib/src/vespa/searchlib/expression/enumattributeresult.cpp
index 5974c3b707f..005c0697361 100644
--- a/searchlib/src/vespa/searchlib/expression/enumattributeresult.cpp
+++ b/searchlib/src/vespa/searchlib/expression/enumattributeresult.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "enumattributeresult.h"
diff --git a/searchlib/src/vespa/searchlib/expression/enumattributeresult.h b/searchlib/src/vespa/searchlib/expression/enumattributeresult.h
index dba9b006734..146233fe064 100644
--- a/searchlib/src/vespa/searchlib/expression/enumattributeresult.h
+++ b/searchlib/src/vespa/searchlib/expression/enumattributeresult.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/expression/enumresultnode.h b/searchlib/src/vespa/searchlib/expression/enumresultnode.h
index d87701337ba..8aff46b3a16 100644
--- a/searchlib/src/vespa/searchlib/expression/enumresultnode.h
+++ b/searchlib/src/vespa/searchlib/expression/enumresultnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "integerresultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/expressionnode.h b/searchlib/src/vespa/searchlib/expression/expressionnode.h
index da8a9e2c3ee..8a96192b04a 100644
--- a/searchlib/src/vespa/searchlib/expression/expressionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/expressionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/common/identifiable.h>
diff --git a/searchlib/src/vespa/searchlib/expression/expressiontree.cpp b/searchlib/src/vespa/searchlib/expression/expressiontree.cpp
index 9fd7caf02f5..e47ba4ebeb0 100644
--- a/searchlib/src/vespa/searchlib/expression/expressiontree.cpp
+++ b/searchlib/src/vespa/searchlib/expression/expressiontree.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "expressiontree.h"
#include "documentaccessornode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/expressiontree.h b/searchlib/src/vespa/searchlib/expression/expressiontree.h
index 057a7801637..9f75f1734cd 100644
--- a/searchlib/src/vespa/searchlib/expression/expressiontree.h
+++ b/searchlib/src/vespa/searchlib/expression/expressiontree.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "expressionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/fixedwidthbucketfunctionnode.cpp b/searchlib/src/vespa/searchlib/expression/fixedwidthbucketfunctionnode.cpp
index faa656d2a2b..723371a2ff6 100644
--- a/searchlib/src/vespa/searchlib/expression/fixedwidthbucketfunctionnode.cpp
+++ b/searchlib/src/vespa/searchlib/expression/fixedwidthbucketfunctionnode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fixedwidthbucketfunctionnode.h"
#include "integerresultnode.h"
#include "floatresultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/fixedwidthbucketfunctionnode.h b/searchlib/src/vespa/searchlib/expression/fixedwidthbucketfunctionnode.h
index f571ca1407b..80c5281c9a2 100644
--- a/searchlib/src/vespa/searchlib/expression/fixedwidthbucketfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/fixedwidthbucketfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "unaryfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/floatbucketresultnode.cpp b/searchlib/src/vespa/searchlib/expression/floatbucketresultnode.cpp
index ca7a503da6b..1de9d16036e 100644
--- a/searchlib/src/vespa/searchlib/expression/floatbucketresultnode.cpp
+++ b/searchlib/src/vespa/searchlib/expression/floatbucketresultnode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "floatbucketresultnode.h"
#include <vespa/vespalib/objects/visit.h>
#include <cmath>
diff --git a/searchlib/src/vespa/searchlib/expression/floatbucketresultnode.h b/searchlib/src/vespa/searchlib/expression/floatbucketresultnode.h
index 5c98fe84f4d..080b4f0fc5c 100644
--- a/searchlib/src/vespa/searchlib/expression/floatbucketresultnode.h
+++ b/searchlib/src/vespa/searchlib/expression/floatbucketresultnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bucketresultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/floatresultnode.cpp b/searchlib/src/vespa/searchlib/expression/floatresultnode.cpp
index 1ea3cadc767..d357e38dedf 100644
--- a/searchlib/src/vespa/searchlib/expression/floatresultnode.cpp
+++ b/searchlib/src/vespa/searchlib/expression/floatresultnode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "floatbucketresultnode.h"
#include "floatresultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/floatresultnode.h b/searchlib/src/vespa/searchlib/expression/floatresultnode.h
index 9ca0a5c89d3..5bff232fe2f 100644
--- a/searchlib/src/vespa/searchlib/expression/floatresultnode.h
+++ b/searchlib/src/vespa/searchlib/expression/floatresultnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "numericresultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/forcelink.hpp b/searchlib/src/vespa/searchlib/expression/forcelink.hpp
index 87192ba272b..432a0b67cff 100644
--- a/searchlib/src/vespa/searchlib/expression/forcelink.hpp
+++ b/searchlib/src/vespa/searchlib/expression/forcelink.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
void forcelink_file_searchlib_expression_debugwaitfunctionnode();
diff --git a/searchlib/src/vespa/searchlib/expression/functionnode.h b/searchlib/src/vespa/searchlib/expression/functionnode.h
index 8f4c2de6234..486f0d5428b 100644
--- a/searchlib/src/vespa/searchlib/expression/functionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/functionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "expressionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/functionnodes.cpp b/searchlib/src/vespa/searchlib/expression/functionnodes.cpp
index b770b9ffc9d..4e929be0a64 100644
--- a/searchlib/src/vespa/searchlib/expression/functionnodes.cpp
+++ b/searchlib/src/vespa/searchlib/expression/functionnodes.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "integerresultnode.h"
#include "floatresultnode.h"
#include "stringresultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/getdocidnamespacespecificfunctionnode.h b/searchlib/src/vespa/searchlib/expression/getdocidnamespacespecificfunctionnode.h
index 7c79d66d973..8d508fc9456 100644
--- a/searchlib/src/vespa/searchlib/expression/getdocidnamespacespecificfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/getdocidnamespacespecificfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentaccessornode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/getymumchecksumfunctionnode.h b/searchlib/src/vespa/searchlib/expression/getymumchecksumfunctionnode.h
index f718b221f8d..55a1d19bd53 100644
--- a/searchlib/src/vespa/searchlib/expression/getymumchecksumfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/getymumchecksumfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "documentaccessornode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/integerbucketresultnode.cpp b/searchlib/src/vespa/searchlib/expression/integerbucketresultnode.cpp
index ee1f2e282f7..fa1e5133c65 100644
--- a/searchlib/src/vespa/searchlib/expression/integerbucketresultnode.cpp
+++ b/searchlib/src/vespa/searchlib/expression/integerbucketresultnode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "integerbucketresultnode.h"
#include <vespa/vespalib/objects/visit.h>
diff --git a/searchlib/src/vespa/searchlib/expression/integerbucketresultnode.h b/searchlib/src/vespa/searchlib/expression/integerbucketresultnode.h
index e4eb120ae17..d5a2306200c 100644
--- a/searchlib/src/vespa/searchlib/expression/integerbucketresultnode.h
+++ b/searchlib/src/vespa/searchlib/expression/integerbucketresultnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bucketresultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/integerresultnode.cpp b/searchlib/src/vespa/searchlib/expression/integerresultnode.cpp
index 63b2f4fb039..b3ad3daf16a 100644
--- a/searchlib/src/vespa/searchlib/expression/integerresultnode.cpp
+++ b/searchlib/src/vespa/searchlib/expression/integerresultnode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "integerresultnode.h"
#include "integerbucketresultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/integerresultnode.h b/searchlib/src/vespa/searchlib/expression/integerresultnode.h
index 7f2ec823432..a7fe86acd97 100644
--- a/searchlib/src/vespa/searchlib/expression/integerresultnode.h
+++ b/searchlib/src/vespa/searchlib/expression/integerresultnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "numericresultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/interpolatedlookupfunctionnode.cpp b/searchlib/src/vespa/searchlib/expression/interpolatedlookupfunctionnode.cpp
index b8c6352501d..993df97df8f 100644
--- a/searchlib/src/vespa/searchlib/expression/interpolatedlookupfunctionnode.cpp
+++ b/searchlib/src/vespa/searchlib/expression/interpolatedlookupfunctionnode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "interpolatedlookupfunctionnode.h"
#include "floatresultnode.h"
#include <vespa/searchcommon/attribute/iattributecontext.h>
diff --git a/searchlib/src/vespa/searchlib/expression/interpolatedlookupfunctionnode.h b/searchlib/src/vespa/searchlib/expression/interpolatedlookupfunctionnode.h
index 24e4efe3cbc..794adf9106d 100644
--- a/searchlib/src/vespa/searchlib/expression/interpolatedlookupfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/interpolatedlookupfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "unaryfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/mathfunctionnode.cpp b/searchlib/src/vespa/searchlib/expression/mathfunctionnode.cpp
index 54bdffb037b..ac0e3261088 100644
--- a/searchlib/src/vespa/searchlib/expression/mathfunctionnode.cpp
+++ b/searchlib/src/vespa/searchlib/expression/mathfunctionnode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mathfunctionnode.h"
#include "floatresultnode.h"
#include <cmath>
diff --git a/searchlib/src/vespa/searchlib/expression/mathfunctionnode.h b/searchlib/src/vespa/searchlib/expression/mathfunctionnode.h
index a57c733f0ff..210bf0dfc4a 100644
--- a/searchlib/src/vespa/searchlib/expression/mathfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/mathfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "unaryfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/maxfunctionnode.h b/searchlib/src/vespa/searchlib/expression/maxfunctionnode.h
index 2a1aa657dd0..83961aa664f 100644
--- a/searchlib/src/vespa/searchlib/expression/maxfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/maxfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "numericfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/md5bitfunctionnode.h b/searchlib/src/vespa/searchlib/expression/md5bitfunctionnode.h
index 70975bb9a9b..7e9882acd5b 100644
--- a/searchlib/src/vespa/searchlib/expression/md5bitfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/md5bitfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "unarybitfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/minfunctionnode.h b/searchlib/src/vespa/searchlib/expression/minfunctionnode.h
index 9162847613c..f1eed00f428 100644
--- a/searchlib/src/vespa/searchlib/expression/minfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/minfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "numericfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/modulofunctionnode.h b/searchlib/src/vespa/searchlib/expression/modulofunctionnode.h
index 57abbe44b4a..1cff061b39c 100644
--- a/searchlib/src/vespa/searchlib/expression/modulofunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/modulofunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "numericfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/multiargfunctionnode.h b/searchlib/src/vespa/searchlib/expression/multiargfunctionnode.h
index e0aa2001f79..67debb5c6ba 100644
--- a/searchlib/src/vespa/searchlib/expression/multiargfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/multiargfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "functionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/multiplyfunctionnode.h b/searchlib/src/vespa/searchlib/expression/multiplyfunctionnode.h
index 87453afe4e1..1448daca673 100644
--- a/searchlib/src/vespa/searchlib/expression/multiplyfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/multiplyfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "numericfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/negatefunctionnode.h b/searchlib/src/vespa/searchlib/expression/negatefunctionnode.h
index 7eb51de2c1b..c0c92e7964f 100644
--- a/searchlib/src/vespa/searchlib/expression/negatefunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/negatefunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "unaryfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/normalizesubjectfunctionnode.h b/searchlib/src/vespa/searchlib/expression/normalizesubjectfunctionnode.h
index 75101ba8bbd..265cc6aedd6 100644
--- a/searchlib/src/vespa/searchlib/expression/normalizesubjectfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/normalizesubjectfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "unaryfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/nullresultnode.h b/searchlib/src/vespa/searchlib/expression/nullresultnode.h
index 570b94284c9..e873d85d0f1 100644
--- a/searchlib/src/vespa/searchlib/expression/nullresultnode.h
+++ b/searchlib/src/vespa/searchlib/expression/nullresultnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "singleresultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/numelemfunctionnode.h b/searchlib/src/vespa/searchlib/expression/numelemfunctionnode.h
index addca1c1c85..64af20b95b8 100644
--- a/searchlib/src/vespa/searchlib/expression/numelemfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/numelemfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "unaryfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/numericfunctionnode.cpp b/searchlib/src/vespa/searchlib/expression/numericfunctionnode.cpp
index 5b6989b5dc9..9cb10a81335 100644
--- a/searchlib/src/vespa/searchlib/expression/numericfunctionnode.cpp
+++ b/searchlib/src/vespa/searchlib/expression/numericfunctionnode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "numericfunctionnode.h"
#include <stdexcept>
diff --git a/searchlib/src/vespa/searchlib/expression/numericfunctionnode.h b/searchlib/src/vespa/searchlib/expression/numericfunctionnode.h
index 2306d9c1028..1c4b68b3a84 100644
--- a/searchlib/src/vespa/searchlib/expression/numericfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/numericfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "multiargfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/numericresultnode.h b/searchlib/src/vespa/searchlib/expression/numericresultnode.h
index e4c7d11b2d5..440b549a1a2 100644
--- a/searchlib/src/vespa/searchlib/expression/numericresultnode.h
+++ b/searchlib/src/vespa/searchlib/expression/numericresultnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "singleresultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/orfunctionnode.h b/searchlib/src/vespa/searchlib/expression/orfunctionnode.h
index 07755fe01fd..a657d896eb2 100644
--- a/searchlib/src/vespa/searchlib/expression/orfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/orfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bitfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/perdocexpression.cpp b/searchlib/src/vespa/searchlib/expression/perdocexpression.cpp
index 964f4d4785c..1cd018ba934 100644
--- a/searchlib/src/vespa/searchlib/expression/perdocexpression.cpp
+++ b/searchlib/src/vespa/searchlib/expression/perdocexpression.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "relevancenode.h"
namespace search {
diff --git a/searchlib/src/vespa/searchlib/expression/positiveinfinityresultnode.h b/searchlib/src/vespa/searchlib/expression/positiveinfinityresultnode.h
index 383054662ce..261b60b3613 100644
--- a/searchlib/src/vespa/searchlib/expression/positiveinfinityresultnode.h
+++ b/searchlib/src/vespa/searchlib/expression/positiveinfinityresultnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "singleresultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/rangebucketpredef.cpp b/searchlib/src/vespa/searchlib/expression/rangebucketpredef.cpp
index 8dc97166be4..fbd4879370b 100644
--- a/searchlib/src/vespa/searchlib/expression/rangebucketpredef.cpp
+++ b/searchlib/src/vespa/searchlib/expression/rangebucketpredef.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rangebucketpredef.h"
namespace search {
diff --git a/searchlib/src/vespa/searchlib/expression/rangebucketpredef.h b/searchlib/src/vespa/searchlib/expression/rangebucketpredef.h
index 977dd11bf32..4e220733b63 100644
--- a/searchlib/src/vespa/searchlib/expression/rangebucketpredef.h
+++ b/searchlib/src/vespa/searchlib/expression/rangebucketpredef.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "unaryfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.cpp b/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.cpp
index 84d108db82f..180151264a8 100644
--- a/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.cpp
+++ b/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rawbucketresultnode.h"
#include <vespa/vespalib/objects/visit.hpp>
diff --git a/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.h b/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.h
index 1df960860af..eaca52de4f6 100644
--- a/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.h
+++ b/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bucketresultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/rawresultnode.cpp b/searchlib/src/vespa/searchlib/expression/rawresultnode.cpp
index e9175f362bf..3760c32d378 100644
--- a/searchlib/src/vespa/searchlib/expression/rawresultnode.cpp
+++ b/searchlib/src/vespa/searchlib/expression/rawresultnode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rawbucketresultnode.h"
namespace search {
diff --git a/searchlib/src/vespa/searchlib/expression/rawresultnode.h b/searchlib/src/vespa/searchlib/expression/rawresultnode.h
index 8d5db3f4499..7e4071abf81 100644
--- a/searchlib/src/vespa/searchlib/expression/rawresultnode.h
+++ b/searchlib/src/vespa/searchlib/expression/rawresultnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "singleresultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/relevancenode.h b/searchlib/src/vespa/searchlib/expression/relevancenode.h
index 9e185ad67c6..a20059757f7 100644
--- a/searchlib/src/vespa/searchlib/expression/relevancenode.h
+++ b/searchlib/src/vespa/searchlib/expression/relevancenode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "floatresultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/resultnode.cpp b/searchlib/src/vespa/searchlib/expression/resultnode.cpp
index a99ac01ce2a..02c2b418d2f 100644
--- a/searchlib/src/vespa/searchlib/expression/resultnode.cpp
+++ b/searchlib/src/vespa/searchlib/expression/resultnode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "resultnode.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchlib/src/vespa/searchlib/expression/resultnode.h b/searchlib/src/vespa/searchlib/expression/resultnode.h
index 55f08e9455c..cb1c709a09d 100644
--- a/searchlib/src/vespa/searchlib/expression/resultnode.h
+++ b/searchlib/src/vespa/searchlib/expression/resultnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "expressionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/resultnodes.cpp b/searchlib/src/vespa/searchlib/expression/resultnodes.cpp
index 059153e83a8..14dfb24d802 100644
--- a/searchlib/src/vespa/searchlib/expression/resultnodes.cpp
+++ b/searchlib/src/vespa/searchlib/expression/resultnodes.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "integerresultnode.h"
#include "floatresultnode.h"
#include "stringresultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/resultvector.cpp b/searchlib/src/vespa/searchlib/expression/resultvector.cpp
index bcbc4ae97e6..6ea7b60217f 100644
--- a/searchlib/src/vespa/searchlib/expression/resultvector.cpp
+++ b/searchlib/src/vespa/searchlib/expression/resultvector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "resultvector.h"
diff --git a/searchlib/src/vespa/searchlib/expression/resultvector.h b/searchlib/src/vespa/searchlib/expression/resultvector.h
index 2c10a26dd9a..171659993ac 100644
--- a/searchlib/src/vespa/searchlib/expression/resultvector.h
+++ b/searchlib/src/vespa/searchlib/expression/resultvector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "enumresultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/reversefunctionnode.h b/searchlib/src/vespa/searchlib/expression/reversefunctionnode.h
index af570d3623f..83f37469f41 100644
--- a/searchlib/src/vespa/searchlib/expression/reversefunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/reversefunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "unaryfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/serializer.h b/searchlib/src/vespa/searchlib/expression/serializer.h
index 3498d8beb41..21e1b9d932f 100644
--- a/searchlib/src/vespa/searchlib/expression/serializer.h
+++ b/searchlib/src/vespa/searchlib/expression/serializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace search::expression {
diff --git a/searchlib/src/vespa/searchlib/expression/singleresultnode.h b/searchlib/src/vespa/searchlib/expression/singleresultnode.h
index 663f6f8954f..5ae183d6cc1 100644
--- a/searchlib/src/vespa/searchlib/expression/singleresultnode.h
+++ b/searchlib/src/vespa/searchlib/expression/singleresultnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "resultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/sortfunctionnode.h b/searchlib/src/vespa/searchlib/expression/sortfunctionnode.h
index 204fadd0a47..22022efff88 100644
--- a/searchlib/src/vespa/searchlib/expression/sortfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/sortfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "unaryfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/strcatfunctionnode.h b/searchlib/src/vespa/searchlib/expression/strcatfunctionnode.h
index f200127f592..29ad3d53953 100644
--- a/searchlib/src/vespa/searchlib/expression/strcatfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/strcatfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "multiargfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/strcatserializer.cpp b/searchlib/src/vespa/searchlib/expression/strcatserializer.cpp
index 3057703b25e..df18ff4498a 100644
--- a/searchlib/src/vespa/searchlib/expression/strcatserializer.cpp
+++ b/searchlib/src/vespa/searchlib/expression/strcatserializer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "strcatserializer.h"
#include "rawresultnode.h"
#include "resultvector.h"
diff --git a/searchlib/src/vespa/searchlib/expression/strcatserializer.h b/searchlib/src/vespa/searchlib/expression/strcatserializer.h
index 01f8adae8b5..4617e3c658c 100644
--- a/searchlib/src/vespa/searchlib/expression/strcatserializer.h
+++ b/searchlib/src/vespa/searchlib/expression/strcatserializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "serializer.h"
diff --git a/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.cpp b/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.cpp
index 581e8d41378..6958bba2fba 100644
--- a/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.cpp
+++ b/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "stringbucketresultnode.h"
#include <vespa/vespalib/objects/visit.hpp>
diff --git a/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.h b/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.h
index dac84febeeb..59120680732 100644
--- a/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.h
+++ b/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bucketresultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/stringresultnode.cpp b/searchlib/src/vespa/searchlib/expression/stringresultnode.cpp
index 6872c3a41a8..a53cee88b53 100644
--- a/searchlib/src/vespa/searchlib/expression/stringresultnode.cpp
+++ b/searchlib/src/vespa/searchlib/expression/stringresultnode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "stringbucketresultnode.h"
#include "stringresultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/stringresultnode.h b/searchlib/src/vespa/searchlib/expression/stringresultnode.h
index cbe81e95eba..b9d127a2e2c 100644
--- a/searchlib/src/vespa/searchlib/expression/stringresultnode.h
+++ b/searchlib/src/vespa/searchlib/expression/stringresultnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "singleresultnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/strlenfunctionnode.h b/searchlib/src/vespa/searchlib/expression/strlenfunctionnode.h
index 129ee2c7853..ab969526d80 100644
--- a/searchlib/src/vespa/searchlib/expression/strlenfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/strlenfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "unaryfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/timestamp.cpp b/searchlib/src/vespa/searchlib/expression/timestamp.cpp
index 1c340923cfd..0a24b24c4e0 100644
--- a/searchlib/src/vespa/searchlib/expression/timestamp.cpp
+++ b/searchlib/src/vespa/searchlib/expression/timestamp.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "timestamp.h"
diff --git a/searchlib/src/vespa/searchlib/expression/timestamp.h b/searchlib/src/vespa/searchlib/expression/timestamp.h
index 4064bf9e511..4e1245513f9 100644
--- a/searchlib/src/vespa/searchlib/expression/timestamp.h
+++ b/searchlib/src/vespa/searchlib/expression/timestamp.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "unaryfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/tofloatfunctionnode.h b/searchlib/src/vespa/searchlib/expression/tofloatfunctionnode.h
index 3ea8e2762ff..86b221a6d40 100644
--- a/searchlib/src/vespa/searchlib/expression/tofloatfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/tofloatfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "unaryfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/tointfunctionnode.h b/searchlib/src/vespa/searchlib/expression/tointfunctionnode.h
index 8b5951afc07..215ac434918 100644
--- a/searchlib/src/vespa/searchlib/expression/tointfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/tointfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "unaryfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/torawfunctionnode.h b/searchlib/src/vespa/searchlib/expression/torawfunctionnode.h
index 762c806eda4..c4c4b62a74b 100644
--- a/searchlib/src/vespa/searchlib/expression/torawfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/torawfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "unaryfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/tostringfunctionnode.h b/searchlib/src/vespa/searchlib/expression/tostringfunctionnode.h
index 63fdd0502b9..939fd4e4e6f 100644
--- a/searchlib/src/vespa/searchlib/expression/tostringfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/tostringfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "unaryfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/unarybitfunctionnode.h b/searchlib/src/vespa/searchlib/expression/unarybitfunctionnode.h
index 26e7c5b82da..63114188b1f 100644
--- a/searchlib/src/vespa/searchlib/expression/unarybitfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/unarybitfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "unaryfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/unaryfunctionnode.h b/searchlib/src/vespa/searchlib/expression/unaryfunctionnode.h
index 584f77504c7..6283204e88b 100644
--- a/searchlib/src/vespa/searchlib/expression/unaryfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/unaryfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "multiargfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/xorbitfunctionnode.h b/searchlib/src/vespa/searchlib/expression/xorbitfunctionnode.h
index 8530827b63c..c65bb2db6fc 100644
--- a/searchlib/src/vespa/searchlib/expression/xorbitfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/xorbitfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "unarybitfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/xorfunctionnode.h b/searchlib/src/vespa/searchlib/expression/xorfunctionnode.h
index 575a754d4ec..8fb4e31a43c 100644
--- a/searchlib/src/vespa/searchlib/expression/xorfunctionnode.h
+++ b/searchlib/src/vespa/searchlib/expression/xorfunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bitfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/expression/zcurve.cpp b/searchlib/src/vespa/searchlib/expression/zcurve.cpp
index 94738a83208..cc9f8656dda 100644
--- a/searchlib/src/vespa/searchlib/expression/zcurve.cpp
+++ b/searchlib/src/vespa/searchlib/expression/zcurve.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "zcurve.h"
#include <vespa/vespalib/geo/zcurve.h>
diff --git a/searchlib/src/vespa/searchlib/expression/zcurve.h b/searchlib/src/vespa/searchlib/expression/zcurve.h
index 2835d2da2e5..783a4c4e350 100644
--- a/searchlib/src/vespa/searchlib/expression/zcurve.h
+++ b/searchlib/src/vespa/searchlib/expression/zcurve.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "unaryfunctionnode.h"
diff --git a/searchlib/src/vespa/searchlib/features/CMakeLists.txt b/searchlib/src/vespa/searchlib/features/CMakeLists.txt
index 271aa73ddcb..9d4119a7faa 100644
--- a/searchlib/src/vespa/searchlib/features/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/features/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_features OBJECT
SOURCES
agefeature.cpp
diff --git a/searchlib/src/vespa/searchlib/features/agefeature.cpp b/searchlib/src/vespa/searchlib/features/agefeature.cpp
index e93691e7241..c4067c736c5 100644
--- a/searchlib/src/vespa/searchlib/features/agefeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/agefeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "agefeature.h"
#include "valuefeature.h"
diff --git a/searchlib/src/vespa/searchlib/features/agefeature.h b/searchlib/src/vespa/searchlib/features/agefeature.h
index 2914d2df472..b6df5196ead 100644
--- a/searchlib/src/vespa/searchlib/features/agefeature.h
+++ b/searchlib/src/vespa/searchlib/features/agefeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/fef/blueprint.h>
diff --git a/searchlib/src/vespa/searchlib/features/array_parser.cpp b/searchlib/src/vespa/searchlib/features/array_parser.cpp
index edfaed015e8..7d3a1e9529f 100644
--- a/searchlib/src/vespa/searchlib/features/array_parser.cpp
+++ b/searchlib/src/vespa/searchlib/features/array_parser.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "array_parser.hpp"
diff --git a/searchlib/src/vespa/searchlib/features/array_parser.h b/searchlib/src/vespa/searchlib/features/array_parser.h
index 7de766efddc..493ff271a2b 100644
--- a/searchlib/src/vespa/searchlib/features/array_parser.h
+++ b/searchlib/src/vespa/searchlib/features/array_parser.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/array_parser.hpp b/searchlib/src/vespa/searchlib/features/array_parser.hpp
index 089cb038797..649b7ac665d 100644
--- a/searchlib/src/vespa/searchlib/features/array_parser.hpp
+++ b/searchlib/src/vespa/searchlib/features/array_parser.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/attributefeature.cpp b/searchlib/src/vespa/searchlib/features/attributefeature.cpp
index 2c1ae7c557a..d727ae33697 100644
--- a/searchlib/src/vespa/searchlib/features/attributefeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/attributefeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributefeature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/attributefeature.h b/searchlib/src/vespa/searchlib/features/attributefeature.h
index 04ad698a63c..a16cf764fc8 100644
--- a/searchlib/src/vespa/searchlib/features/attributefeature.h
+++ b/searchlib/src/vespa/searchlib/features/attributefeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/attributematchfeature.cpp b/searchlib/src/vespa/searchlib/features/attributematchfeature.cpp
index bf52e5e0b5e..c0b0bd0e7b0 100644
--- a/searchlib/src/vespa/searchlib/features/attributematchfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/attributematchfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributematchfeature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/attributematchfeature.h b/searchlib/src/vespa/searchlib/features/attributematchfeature.h
index f30d0fd4dcf..f6b15ba44c4 100644
--- a/searchlib/src/vespa/searchlib/features/attributematchfeature.h
+++ b/searchlib/src/vespa/searchlib/features/attributematchfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/closenessfeature.cpp b/searchlib/src/vespa/searchlib/features/closenessfeature.cpp
index 341076f30dd..e98573d7a6b 100644
--- a/searchlib/src/vespa/searchlib/features/closenessfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/closenessfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "closenessfeature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/closenessfeature.h b/searchlib/src/vespa/searchlib/features/closenessfeature.h
index 8bf63a2c3b6..e45cf9687e0 100644
--- a/searchlib/src/vespa/searchlib/features/closenessfeature.h
+++ b/searchlib/src/vespa/searchlib/features/closenessfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/constant_feature.cpp b/searchlib/src/vespa/searchlib/features/constant_feature.cpp
index 9de4d351584..bfbd29558d7 100644
--- a/searchlib/src/vespa/searchlib/features/constant_feature.cpp
+++ b/searchlib/src/vespa/searchlib/features/constant_feature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "constant_feature.h"
#include "valuefeature.h"
diff --git a/searchlib/src/vespa/searchlib/features/constant_feature.h b/searchlib/src/vespa/searchlib/features/constant_feature.h
index b7e4a9fdcab..b4d022a6fc2 100644
--- a/searchlib/src/vespa/searchlib/features/constant_feature.h
+++ b/searchlib/src/vespa/searchlib/features/constant_feature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/constant_tensor_executor.h b/searchlib/src/vespa/searchlib/features/constant_tensor_executor.h
index f95cbfa4726..05a2e1452f6 100644
--- a/searchlib/src/vespa/searchlib/features/constant_tensor_executor.h
+++ b/searchlib/src/vespa/searchlib/features/constant_tensor_executor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/create-class-cpp.sh b/searchlib/src/vespa/searchlib/features/create-class-cpp.sh
index 1e38a837609..d99d31425ea 100755
--- a/searchlib/src/vespa/searchlib/features/create-class-cpp.sh
+++ b/searchlib/src/vespa/searchlib/features/create-class-cpp.sh
@@ -1,12 +1,12 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
class=$1
guard=`echo $class | tr 'a-z' 'A-Z'`
name=`echo $class | tr 'A-Z' 'a-z'`
cat <<EOF
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "$name.h"
diff --git a/searchlib/src/vespa/searchlib/features/create-class-h.sh b/searchlib/src/vespa/searchlib/features/create-class-h.sh
index b6acc0b4c7a..0f5123223e9 100644
--- a/searchlib/src/vespa/searchlib/features/create-class-h.sh
+++ b/searchlib/src/vespa/searchlib/features/create-class-h.sh
@@ -1,11 +1,11 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
class=$1
guard=`echo $class | tr 'a-z' 'A-Z'`
cat <<EOF
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace search {
diff --git a/searchlib/src/vespa/searchlib/features/debug_attribute_wait.cpp b/searchlib/src/vespa/searchlib/features/debug_attribute_wait.cpp
index 8cc75a9a424..a19b5c7daa1 100644
--- a/searchlib/src/vespa/searchlib/features/debug_attribute_wait.cpp
+++ b/searchlib/src/vespa/searchlib/features/debug_attribute_wait.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "debug_attribute_wait.h"
#include <vespa/vespalib/util/time.h>
diff --git a/searchlib/src/vespa/searchlib/features/debug_attribute_wait.h b/searchlib/src/vespa/searchlib/features/debug_attribute_wait.h
index 94083448ce9..784d1eca5b9 100644
--- a/searchlib/src/vespa/searchlib/features/debug_attribute_wait.h
+++ b/searchlib/src/vespa/searchlib/features/debug_attribute_wait.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/debug_wait.cpp b/searchlib/src/vespa/searchlib/features/debug_wait.cpp
index 57d19618ba4..1c44b54a597 100644
--- a/searchlib/src/vespa/searchlib/features/debug_wait.cpp
+++ b/searchlib/src/vespa/searchlib/features/debug_wait.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "debug_wait.h"
#include <vespa/vespalib/util/time.h>
diff --git a/searchlib/src/vespa/searchlib/features/debug_wait.h b/searchlib/src/vespa/searchlib/features/debug_wait.h
index f185b5fae1b..15cf9ce3191 100644
--- a/searchlib/src/vespa/searchlib/features/debug_wait.h
+++ b/searchlib/src/vespa/searchlib/features/debug_wait.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.cpp b/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.cpp
index 0de375b7acb..fec51109f88 100644
--- a/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.cpp
+++ b/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dense_tensor_attribute_executor.h"
#include <vespa/searchlib/tensor/i_tensor_attribute.h>
diff --git a/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.h b/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.h
index fc09d37f35a..8b72ca3f559 100644
--- a/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.h
+++ b/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/direct_tensor_attribute_executor.cpp b/searchlib/src/vespa/searchlib/features/direct_tensor_attribute_executor.cpp
index 0463b253740..542f268f6c7 100644
--- a/searchlib/src/vespa/searchlib/features/direct_tensor_attribute_executor.cpp
+++ b/searchlib/src/vespa/searchlib/features/direct_tensor_attribute_executor.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "direct_tensor_attribute_executor.h"
#include <vespa/searchlib/tensor/i_tensor_attribute.h>
diff --git a/searchlib/src/vespa/searchlib/features/direct_tensor_attribute_executor.h b/searchlib/src/vespa/searchlib/features/direct_tensor_attribute_executor.h
index b9a4df739ff..899c8d35a0c 100644
--- a/searchlib/src/vespa/searchlib/features/direct_tensor_attribute_executor.h
+++ b/searchlib/src/vespa/searchlib/features/direct_tensor_attribute_executor.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/distancefeature.cpp b/searchlib/src/vespa/searchlib/features/distancefeature.cpp
index d2431ccc06b..c197d592a69 100644
--- a/searchlib/src/vespa/searchlib/features/distancefeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/distancefeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "distancefeature.h"
#include <vespa/searchcommon/common/schema.h>
diff --git a/searchlib/src/vespa/searchlib/features/distancefeature.h b/searchlib/src/vespa/searchlib/features/distancefeature.h
index 7ad19af8a3b..b60072cf872 100644
--- a/searchlib/src/vespa/searchlib/features/distancefeature.h
+++ b/searchlib/src/vespa/searchlib/features/distancefeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/distancetopathfeature.cpp b/searchlib/src/vespa/searchlib/features/distancetopathfeature.cpp
index 7112581517e..1c62a54ba18 100644
--- a/searchlib/src/vespa/searchlib/features/distancetopathfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/distancetopathfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "distancetopathfeature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/distancetopathfeature.h b/searchlib/src/vespa/searchlib/features/distancetopathfeature.h
index e36ace0c601..2cce7c33899 100644
--- a/searchlib/src/vespa/searchlib/features/distancetopathfeature.h
+++ b/searchlib/src/vespa/searchlib/features/distancetopathfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/fef/blueprint.h>
diff --git a/searchlib/src/vespa/searchlib/features/documenttestutils.cpp b/searchlib/src/vespa/searchlib/features/documenttestutils.cpp
index 1768eb0a216..2d1a35c0d13 100644
--- a/searchlib/src/vespa/searchlib/features/documenttestutils.cpp
+++ b/searchlib/src/vespa/searchlib/features/documenttestutils.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
diff --git a/searchlib/src/vespa/searchlib/features/dotproductfeature.cpp b/searchlib/src/vespa/searchlib/features/dotproductfeature.cpp
index a67e74f3978..63c1c26e054 100644
--- a/searchlib/src/vespa/searchlib/features/dotproductfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/dotproductfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dotproductfeature.h"
#include "valuefeature.h"
diff --git a/searchlib/src/vespa/searchlib/features/dotproductfeature.h b/searchlib/src/vespa/searchlib/features/dotproductfeature.h
index bca6983877c..d03bc36da01 100644
--- a/searchlib/src/vespa/searchlib/features/dotproductfeature.h
+++ b/searchlib/src/vespa/searchlib/features/dotproductfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/element_completeness_feature.cpp b/searchlib/src/vespa/searchlib/features/element_completeness_feature.cpp
index 1014fe4679a..3b481ac69f1 100644
--- a/searchlib/src/vespa/searchlib/features/element_completeness_feature.cpp
+++ b/searchlib/src/vespa/searchlib/features/element_completeness_feature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "element_completeness_feature.h"
#include <vespa/searchlib/fef/itermdata.h>
diff --git a/searchlib/src/vespa/searchlib/features/element_completeness_feature.h b/searchlib/src/vespa/searchlib/features/element_completeness_feature.h
index ea971b6b036..00e0d115f3d 100644
--- a/searchlib/src/vespa/searchlib/features/element_completeness_feature.h
+++ b/searchlib/src/vespa/searchlib/features/element_completeness_feature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/element_similarity_feature.cpp b/searchlib/src/vespa/searchlib/features/element_similarity_feature.cpp
index 45fcd013fbf..887a246bd76 100644
--- a/searchlib/src/vespa/searchlib/features/element_similarity_feature.cpp
+++ b/searchlib/src/vespa/searchlib/features/element_similarity_feature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "element_similarity_feature.h"
#include <vespa/searchlib/fef/itermdata.h>
diff --git a/searchlib/src/vespa/searchlib/features/element_similarity_feature.h b/searchlib/src/vespa/searchlib/features/element_similarity_feature.h
index 1c07a28b5d9..11be77aa77a 100644
--- a/searchlib/src/vespa/searchlib/features/element_similarity_feature.h
+++ b/searchlib/src/vespa/searchlib/features/element_similarity_feature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/euclidean_distance_feature.cpp b/searchlib/src/vespa/searchlib/features/euclidean_distance_feature.cpp
index 9d71d358b46..00dd54fbae6 100644
--- a/searchlib/src/vespa/searchlib/features/euclidean_distance_feature.cpp
+++ b/searchlib/src/vespa/searchlib/features/euclidean_distance_feature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "valuefeature.h"
#include "euclidean_distance_feature.h"
diff --git a/searchlib/src/vespa/searchlib/features/euclidean_distance_feature.h b/searchlib/src/vespa/searchlib/features/euclidean_distance_feature.h
index 7825b286649..76b47bb0d64 100644
--- a/searchlib/src/vespa/searchlib/features/euclidean_distance_feature.h
+++ b/searchlib/src/vespa/searchlib/features/euclidean_distance_feature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/fieldinfofeature.cpp b/searchlib/src/vespa/searchlib/features/fieldinfofeature.cpp
index 18a15ccf541..77efe6a18fa 100644
--- a/searchlib/src/vespa/searchlib/features/fieldinfofeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/fieldinfofeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fieldinfofeature.h"
#include "valuefeature.h"
diff --git a/searchlib/src/vespa/searchlib/features/fieldinfofeature.h b/searchlib/src/vespa/searchlib/features/fieldinfofeature.h
index 2be2bad1e4a..b6429e9fa6b 100644
--- a/searchlib/src/vespa/searchlib/features/fieldinfofeature.h
+++ b/searchlib/src/vespa/searchlib/features/fieldinfofeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/fieldlengthfeature.cpp b/searchlib/src/vespa/searchlib/features/fieldlengthfeature.cpp
index 0cbcf62de6b..55daf6ed5ff 100644
--- a/searchlib/src/vespa/searchlib/features/fieldlengthfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/fieldlengthfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fieldlengthfeature.h"
#include "valuefeature.h"
diff --git a/searchlib/src/vespa/searchlib/features/fieldlengthfeature.h b/searchlib/src/vespa/searchlib/features/fieldlengthfeature.h
index 31b02b7d8fc..815c5a1760a 100644
--- a/searchlib/src/vespa/searchlib/features/fieldlengthfeature.h
+++ b/searchlib/src/vespa/searchlib/features/fieldlengthfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/fef/blueprint.h>
diff --git a/searchlib/src/vespa/searchlib/features/fieldmatch/CMakeLists.txt b/searchlib/src/vespa/searchlib/features/fieldmatch/CMakeLists.txt
index a3273a4a39c..9c76bbaf35d 100644
--- a/searchlib/src/vespa/searchlib/features/fieldmatch/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/features/fieldmatch/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_features_fieldmatch OBJECT
SOURCES
computer.cpp
diff --git a/searchlib/src/vespa/searchlib/features/fieldmatch/computer.cpp b/searchlib/src/vespa/searchlib/features/fieldmatch/computer.cpp
index ab36f18bfa5..eab72818e53 100644
--- a/searchlib/src/vespa/searchlib/features/fieldmatch/computer.cpp
+++ b/searchlib/src/vespa/searchlib/features/fieldmatch/computer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "computer.h"
#include "computer_shared_state.h"
diff --git a/searchlib/src/vespa/searchlib/features/fieldmatch/computer.h b/searchlib/src/vespa/searchlib/features/fieldmatch/computer.h
index a4699b17457..a0e1200876f 100644
--- a/searchlib/src/vespa/searchlib/features/fieldmatch/computer.h
+++ b/searchlib/src/vespa/searchlib/features/fieldmatch/computer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "metrics.h"
diff --git a/searchlib/src/vespa/searchlib/features/fieldmatch/computer_shared_state.cpp b/searchlib/src/vespa/searchlib/features/fieldmatch/computer_shared_state.cpp
index 033124e86bb..abf05b8097f 100644
--- a/searchlib/src/vespa/searchlib/features/fieldmatch/computer_shared_state.cpp
+++ b/searchlib/src/vespa/searchlib/features/fieldmatch/computer_shared_state.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "computer_shared_state.h"
#include <vespa/searchlib/features/utils.h>
diff --git a/searchlib/src/vespa/searchlib/features/fieldmatch/computer_shared_state.h b/searchlib/src/vespa/searchlib/features/fieldmatch/computer_shared_state.h
index e6b46f0add9..ad254ddabd2 100644
--- a/searchlib/src/vespa/searchlib/features/fieldmatch/computer_shared_state.h
+++ b/searchlib/src/vespa/searchlib/features/fieldmatch/computer_shared_state.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "params.h"
diff --git a/searchlib/src/vespa/searchlib/features/fieldmatch/metrics.cpp b/searchlib/src/vespa/searchlib/features/fieldmatch/metrics.cpp
index dcdaf1681a4..de8c6e66ee4 100644
--- a/searchlib/src/vespa/searchlib/features/fieldmatch/metrics.cpp
+++ b/searchlib/src/vespa/searchlib/features/fieldmatch/metrics.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "metrics.h"
#include "computer.h"
diff --git a/searchlib/src/vespa/searchlib/features/fieldmatch/metrics.h b/searchlib/src/vespa/searchlib/features/fieldmatch/metrics.h
index 1968b77561c..5d1738a47ba 100644
--- a/searchlib/src/vespa/searchlib/features/fieldmatch/metrics.h
+++ b/searchlib/src/vespa/searchlib/features/fieldmatch/metrics.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/common/feature.h>
diff --git a/searchlib/src/vespa/searchlib/features/fieldmatch/params.cpp b/searchlib/src/vespa/searchlib/features/fieldmatch/params.cpp
index f17d3cffcd2..a4e77a2de39 100644
--- a/searchlib/src/vespa/searchlib/features/fieldmatch/params.cpp
+++ b/searchlib/src/vespa/searchlib/features/fieldmatch/params.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "params.h"
#include <vespa/log/log.h>
diff --git a/searchlib/src/vespa/searchlib/features/fieldmatch/params.h b/searchlib/src/vespa/searchlib/features/fieldmatch/params.h
index dcbd61676ad..a534bc28581 100644
--- a/searchlib/src/vespa/searchlib/features/fieldmatch/params.h
+++ b/searchlib/src/vespa/searchlib/features/fieldmatch/params.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/common/feature.h>
diff --git a/searchlib/src/vespa/searchlib/features/fieldmatch/segmentstart.cpp b/searchlib/src/vespa/searchlib/features/fieldmatch/segmentstart.cpp
index 6f99bbfab14..e955027ba92 100644
--- a/searchlib/src/vespa/searchlib/features/fieldmatch/segmentstart.cpp
+++ b/searchlib/src/vespa/searchlib/features/fieldmatch/segmentstart.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "segmentstart.h"
#include "computer.h"
diff --git a/searchlib/src/vespa/searchlib/features/fieldmatch/segmentstart.h b/searchlib/src/vespa/searchlib/features/fieldmatch/segmentstart.h
index 9b3fbc7b987..90b05971b8f 100644
--- a/searchlib/src/vespa/searchlib/features/fieldmatch/segmentstart.h
+++ b/searchlib/src/vespa/searchlib/features/fieldmatch/segmentstart.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <string>
diff --git a/searchlib/src/vespa/searchlib/features/fieldmatch/simplemetrics.cpp b/searchlib/src/vespa/searchlib/features/fieldmatch/simplemetrics.cpp
index ca3b79f17bc..068cf983c35 100644
--- a/searchlib/src/vespa/searchlib/features/fieldmatch/simplemetrics.cpp
+++ b/searchlib/src/vespa/searchlib/features/fieldmatch/simplemetrics.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simplemetrics.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/searchlib/src/vespa/searchlib/features/fieldmatch/simplemetrics.h b/searchlib/src/vespa/searchlib/features/fieldmatch/simplemetrics.h
index ee1c11215d1..cd94d29ed7f 100644
--- a/searchlib/src/vespa/searchlib/features/fieldmatch/simplemetrics.h
+++ b/searchlib/src/vespa/searchlib/features/fieldmatch/simplemetrics.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/common/feature.h>
diff --git a/searchlib/src/vespa/searchlib/features/fieldmatchfeature.cpp b/searchlib/src/vespa/searchlib/features/fieldmatchfeature.cpp
index 191df116012..51f47f65c10 100644
--- a/searchlib/src/vespa/searchlib/features/fieldmatchfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/fieldmatchfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fieldmatchfeature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/fieldmatchfeature.h b/searchlib/src/vespa/searchlib/features/fieldmatchfeature.h
index f203574e588..2ede39e5586 100644
--- a/searchlib/src/vespa/searchlib/features/fieldmatchfeature.h
+++ b/searchlib/src/vespa/searchlib/features/fieldmatchfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/fieldtermmatchfeature.cpp b/searchlib/src/vespa/searchlib/features/fieldtermmatchfeature.cpp
index 2f065fee289..980e8ec833b 100644
--- a/searchlib/src/vespa/searchlib/features/fieldtermmatchfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/fieldtermmatchfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fieldtermmatchfeature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/fieldtermmatchfeature.h b/searchlib/src/vespa/searchlib/features/fieldtermmatchfeature.h
index c69014bb184..f2794e8a6ec 100644
--- a/searchlib/src/vespa/searchlib/features/fieldtermmatchfeature.h
+++ b/searchlib/src/vespa/searchlib/features/fieldtermmatchfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/fef/blueprint.h>
diff --git a/searchlib/src/vespa/searchlib/features/firstphasefeature.cpp b/searchlib/src/vespa/searchlib/features/firstphasefeature.cpp
index 8025b443206..1521b29be30 100644
--- a/searchlib/src/vespa/searchlib/features/firstphasefeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/firstphasefeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "firstphasefeature.h"
#include <vespa/searchlib/fef/featureexecutor.h>
diff --git a/searchlib/src/vespa/searchlib/features/firstphasefeature.h b/searchlib/src/vespa/searchlib/features/firstphasefeature.h
index 5edd7a7ce0a..6b6a2aaa292 100644
--- a/searchlib/src/vespa/searchlib/features/firstphasefeature.h
+++ b/searchlib/src/vespa/searchlib/features/firstphasefeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/flow_completeness_feature.cpp b/searchlib/src/vespa/searchlib/features/flow_completeness_feature.cpp
index e43faaec4e1..581ab1584a1 100644
--- a/searchlib/src/vespa/searchlib/features/flow_completeness_feature.cpp
+++ b/searchlib/src/vespa/searchlib/features/flow_completeness_feature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "flow_completeness_feature.h"
#include <vespa/searchlib/fef/itermdata.h>
diff --git a/searchlib/src/vespa/searchlib/features/flow_completeness_feature.h b/searchlib/src/vespa/searchlib/features/flow_completeness_feature.h
index cb3a71950ae..1f3b5e9d3df 100644
--- a/searchlib/src/vespa/searchlib/features/flow_completeness_feature.h
+++ b/searchlib/src/vespa/searchlib/features/flow_completeness_feature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/foreachfeature.cpp b/searchlib/src/vespa/searchlib/features/foreachfeature.cpp
index 3348e14dbfd..cefb06f0bc4 100644
--- a/searchlib/src/vespa/searchlib/features/foreachfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/foreachfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "foreachfeature.h"
#include "valuefeature.h"
diff --git a/searchlib/src/vespa/searchlib/features/foreachfeature.h b/searchlib/src/vespa/searchlib/features/foreachfeature.h
index 0eba4e36528..e5930e8902b 100644
--- a/searchlib/src/vespa/searchlib/features/foreachfeature.h
+++ b/searchlib/src/vespa/searchlib/features/foreachfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/freshnessfeature.cpp b/searchlib/src/vespa/searchlib/features/freshnessfeature.cpp
index 6e621f61034..32f068404e0 100644
--- a/searchlib/src/vespa/searchlib/features/freshnessfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/freshnessfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "freshnessfeature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/freshnessfeature.h b/searchlib/src/vespa/searchlib/features/freshnessfeature.h
index 1512a3255ad..82b407df9dd 100644
--- a/searchlib/src/vespa/searchlib/features/freshnessfeature.h
+++ b/searchlib/src/vespa/searchlib/features/freshnessfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/global_sequence_feature.cpp b/searchlib/src/vespa/searchlib/features/global_sequence_feature.cpp
index 255b033a592..07d9deae020 100644
--- a/searchlib/src/vespa/searchlib/features/global_sequence_feature.cpp
+++ b/searchlib/src/vespa/searchlib/features/global_sequence_feature.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "global_sequence_feature.h"
#include <vespa/vespalib/util/stash.h>
diff --git a/searchlib/src/vespa/searchlib/features/global_sequence_feature.h b/searchlib/src/vespa/searchlib/features/global_sequence_feature.h
index 3678a260b00..d7433cd67c7 100644
--- a/searchlib/src/vespa/searchlib/features/global_sequence_feature.h
+++ b/searchlib/src/vespa/searchlib/features/global_sequence_feature.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/internal_max_reduce_prod_join_feature.cpp b/searchlib/src/vespa/searchlib/features/internal_max_reduce_prod_join_feature.cpp
index e2e8a206099..f28e4da778c 100644
--- a/searchlib/src/vespa/searchlib/features/internal_max_reduce_prod_join_feature.cpp
+++ b/searchlib/src/vespa/searchlib/features/internal_max_reduce_prod_join_feature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "internal_max_reduce_prod_join_feature.h"
#include "valuefeature.h"
diff --git a/searchlib/src/vespa/searchlib/features/internal_max_reduce_prod_join_feature.h b/searchlib/src/vespa/searchlib/features/internal_max_reduce_prod_join_feature.h
index 5314687c98d..4f83a8a1981 100644
--- a/searchlib/src/vespa/searchlib/features/internal_max_reduce_prod_join_feature.h
+++ b/searchlib/src/vespa/searchlib/features/internal_max_reduce_prod_join_feature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/item_raw_score_feature.cpp b/searchlib/src/vespa/searchlib/features/item_raw_score_feature.cpp
index 89f7751a369..b02d336168b 100644
--- a/searchlib/src/vespa/searchlib/features/item_raw_score_feature.cpp
+++ b/searchlib/src/vespa/searchlib/features/item_raw_score_feature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "item_raw_score_feature.h"
#include "valuefeature.h"
diff --git a/searchlib/src/vespa/searchlib/features/item_raw_score_feature.h b/searchlib/src/vespa/searchlib/features/item_raw_score_feature.h
index 5bc7602e259..312034b732f 100644
--- a/searchlib/src/vespa/searchlib/features/item_raw_score_feature.h
+++ b/searchlib/src/vespa/searchlib/features/item_raw_score_feature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/jarowinklerdistancefeature.cpp b/searchlib/src/vespa/searchlib/features/jarowinklerdistancefeature.cpp
index dc689459ff3..89d3041ac3d 100644
--- a/searchlib/src/vespa/searchlib/features/jarowinklerdistancefeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/jarowinklerdistancefeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "jarowinklerdistancefeature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/jarowinklerdistancefeature.h b/searchlib/src/vespa/searchlib/features/jarowinklerdistancefeature.h
index 3c3f00eda8e..ef593c7479c 100644
--- a/searchlib/src/vespa/searchlib/features/jarowinklerdistancefeature.h
+++ b/searchlib/src/vespa/searchlib/features/jarowinklerdistancefeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/fef/blueprint.h>
diff --git a/searchlib/src/vespa/searchlib/features/logarithmcalculator.h b/searchlib/src/vespa/searchlib/features/logarithmcalculator.h
index b223a6f2207..34b24c4315d 100644
--- a/searchlib/src/vespa/searchlib/features/logarithmcalculator.h
+++ b/searchlib/src/vespa/searchlib/features/logarithmcalculator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/matchcountfeature.cpp b/searchlib/src/vespa/searchlib/features/matchcountfeature.cpp
index 5a14e65bd28..406e18ec478 100644
--- a/searchlib/src/vespa/searchlib/features/matchcountfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/matchcountfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "matchcountfeature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/matchcountfeature.h b/searchlib/src/vespa/searchlib/features/matchcountfeature.h
index 88c577f8b24..7447ee18572 100644
--- a/searchlib/src/vespa/searchlib/features/matchcountfeature.h
+++ b/searchlib/src/vespa/searchlib/features/matchcountfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/matchesfeature.cpp b/searchlib/src/vespa/searchlib/features/matchesfeature.cpp
index 6fbb2f5d5f2..cbbb12e8314 100644
--- a/searchlib/src/vespa/searchlib/features/matchesfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/matchesfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "matchesfeature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/matchesfeature.h b/searchlib/src/vespa/searchlib/features/matchesfeature.h
index 671d1fe31c0..7d8bc3bf5f9 100644
--- a/searchlib/src/vespa/searchlib/features/matchesfeature.h
+++ b/searchlib/src/vespa/searchlib/features/matchesfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/matchfeature.cpp b/searchlib/src/vespa/searchlib/features/matchfeature.cpp
index 49c7aa89f84..53a7ce6e108 100644
--- a/searchlib/src/vespa/searchlib/features/matchfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/matchfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "matchfeature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/matchfeature.h b/searchlib/src/vespa/searchlib/features/matchfeature.h
index de3205aa7a1..f655fccb563 100644
--- a/searchlib/src/vespa/searchlib/features/matchfeature.h
+++ b/searchlib/src/vespa/searchlib/features/matchfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/max_reduce_prod_join_replacer.cpp b/searchlib/src/vespa/searchlib/features/max_reduce_prod_join_replacer.cpp
index f69bc064327..431171c574f 100644
--- a/searchlib/src/vespa/searchlib/features/max_reduce_prod_join_replacer.cpp
+++ b/searchlib/src/vespa/searchlib/features/max_reduce_prod_join_replacer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "max_reduce_prod_join_replacer.h"
#include <vespa/eval/eval/function.h>
diff --git a/searchlib/src/vespa/searchlib/features/max_reduce_prod_join_replacer.h b/searchlib/src/vespa/searchlib/features/max_reduce_prod_join_replacer.h
index e0d39fe93e0..f546eeaf6ae 100644
--- a/searchlib/src/vespa/searchlib/features/max_reduce_prod_join_replacer.h
+++ b/searchlib/src/vespa/searchlib/features/max_reduce_prod_join_replacer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/mutable_dense_value_view.cpp b/searchlib/src/vespa/searchlib/features/mutable_dense_value_view.cpp
index b0d669e8aaa..99d20179e7e 100644
--- a/searchlib/src/vespa/searchlib/features/mutable_dense_value_view.cpp
+++ b/searchlib/src/vespa/searchlib/features/mutable_dense_value_view.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mutable_dense_value_view.h"
diff --git a/searchlib/src/vespa/searchlib/features/mutable_dense_value_view.h b/searchlib/src/vespa/searchlib/features/mutable_dense_value_view.h
index d4e813ae927..80e4ddef63f 100644
--- a/searchlib/src/vespa/searchlib/features/mutable_dense_value_view.h
+++ b/searchlib/src/vespa/searchlib/features/mutable_dense_value_view.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/native_dot_product_feature.cpp b/searchlib/src/vespa/searchlib/features/native_dot_product_feature.cpp
index 5ede14130ec..8b47c4e9e81 100644
--- a/searchlib/src/vespa/searchlib/features/native_dot_product_feature.cpp
+++ b/searchlib/src/vespa/searchlib/features/native_dot_product_feature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "native_dot_product_feature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/native_dot_product_feature.h b/searchlib/src/vespa/searchlib/features/native_dot_product_feature.h
index 0d7c75c7cf7..adff5663b92 100644
--- a/searchlib/src/vespa/searchlib/features/native_dot_product_feature.h
+++ b/searchlib/src/vespa/searchlib/features/native_dot_product_feature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/nativeattributematchfeature.cpp b/searchlib/src/vespa/searchlib/features/nativeattributematchfeature.cpp
index ab8544634b5..19793d51ca5 100644
--- a/searchlib/src/vespa/searchlib/features/nativeattributematchfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/nativeattributematchfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "valuefeature.h"
#include "nativeattributematchfeature.h"
diff --git a/searchlib/src/vespa/searchlib/features/nativeattributematchfeature.h b/searchlib/src/vespa/searchlib/features/nativeattributematchfeature.h
index 0f897c76fc4..06ff68bcd88 100644
--- a/searchlib/src/vespa/searchlib/features/nativeattributematchfeature.h
+++ b/searchlib/src/vespa/searchlib/features/nativeattributematchfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/nativefieldmatchfeature.cpp b/searchlib/src/vespa/searchlib/features/nativefieldmatchfeature.cpp
index 376ed8cd3d3..0917a379acf 100644
--- a/searchlib/src/vespa/searchlib/features/nativefieldmatchfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/nativefieldmatchfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "nativefieldmatchfeature.h"
#include "valuefeature.h"
diff --git a/searchlib/src/vespa/searchlib/features/nativefieldmatchfeature.h b/searchlib/src/vespa/searchlib/features/nativefieldmatchfeature.h
index 5e8d865e159..684857e5a7c 100644
--- a/searchlib/src/vespa/searchlib/features/nativefieldmatchfeature.h
+++ b/searchlib/src/vespa/searchlib/features/nativefieldmatchfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/nativeproximityfeature.cpp b/searchlib/src/vespa/searchlib/features/nativeproximityfeature.cpp
index d0b3a429e83..5f4a34f9627 100644
--- a/searchlib/src/vespa/searchlib/features/nativeproximityfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/nativeproximityfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "nativeproximityfeature.h"
#include "valuefeature.h"
diff --git a/searchlib/src/vespa/searchlib/features/nativeproximityfeature.h b/searchlib/src/vespa/searchlib/features/nativeproximityfeature.h
index ab74152f486..0c61ddf9bae 100644
--- a/searchlib/src/vespa/searchlib/features/nativeproximityfeature.h
+++ b/searchlib/src/vespa/searchlib/features/nativeproximityfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/nativerankfeature.cpp b/searchlib/src/vespa/searchlib/features/nativerankfeature.cpp
index 07f1dfb9d15..4cd7d5d7305 100644
--- a/searchlib/src/vespa/searchlib/features/nativerankfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/nativerankfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "nativerankfeature.h"
#include "valuefeature.h"
diff --git a/searchlib/src/vespa/searchlib/features/nativerankfeature.h b/searchlib/src/vespa/searchlib/features/nativerankfeature.h
index 06088a06fc8..8e31917101d 100644
--- a/searchlib/src/vespa/searchlib/features/nativerankfeature.h
+++ b/searchlib/src/vespa/searchlib/features/nativerankfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/nowfeature.cpp b/searchlib/src/vespa/searchlib/features/nowfeature.cpp
index d6059592cf3..49495612af3 100644
--- a/searchlib/src/vespa/searchlib/features/nowfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/nowfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "nowfeature.h"
#include <vespa/searchlib/fef/queryproperties.h>
diff --git a/searchlib/src/vespa/searchlib/features/nowfeature.h b/searchlib/src/vespa/searchlib/features/nowfeature.h
index 73a19048a00..7ca09850224 100644
--- a/searchlib/src/vespa/searchlib/features/nowfeature.h
+++ b/searchlib/src/vespa/searchlib/features/nowfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/fef/blueprint.h>
diff --git a/searchlib/src/vespa/searchlib/features/onnx_feature.cpp b/searchlib/src/vespa/searchlib/features/onnx_feature.cpp
index 0af03f3aa86..291e3daf602 100644
--- a/searchlib/src/vespa/searchlib/features/onnx_feature.cpp
+++ b/searchlib/src/vespa/searchlib/features/onnx_feature.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "onnx_feature.h"
#include <vespa/searchlib/fef/properties.h>
@@ -89,7 +89,12 @@ public:
for (size_t i = 0; i < _eval_context.num_params(); ++i) {
_eval_context.bind_param(i, inputs().get_object(i).get());
}
- _eval_context.eval();
+ try {
+ _eval_context.eval();
+ } catch (const Ort::Exception &ex) {
+ LOG(warning, "onnx model evaluation failed: %s", ex.what());
+ _eval_context.clear_results();
+ }
}
};
@@ -162,6 +167,8 @@ OnnxBlueprint::setup(const IIndexEnvironment &env,
if (!error_msg.empty()) {
return fail("onnx model dry-run failed: %s", error_msg.c_str());
}
+ } else {
+ LOG(warning, "dry-run disabled for onnx model '%s'", model_cfg->name().c_str());
}
return true;
}
diff --git a/searchlib/src/vespa/searchlib/features/onnx_feature.h b/searchlib/src/vespa/searchlib/features/onnx_feature.h
index ed0fbc502f0..63a260b8427 100644
--- a/searchlib/src/vespa/searchlib/features/onnx_feature.h
+++ b/searchlib/src/vespa/searchlib/features/onnx_feature.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/proximityfeature.cpp b/searchlib/src/vespa/searchlib/features/proximityfeature.cpp
index daeb4af6569..92cc78db165 100644
--- a/searchlib/src/vespa/searchlib/features/proximityfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/proximityfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "proximityfeature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/proximityfeature.h b/searchlib/src/vespa/searchlib/features/proximityfeature.h
index 5cb8adaa287..b957531be35 100644
--- a/searchlib/src/vespa/searchlib/features/proximityfeature.h
+++ b/searchlib/src/vespa/searchlib/features/proximityfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/fef/blueprint.h>
diff --git a/searchlib/src/vespa/searchlib/features/querycompletenessfeature.cpp b/searchlib/src/vespa/searchlib/features/querycompletenessfeature.cpp
index 56e8810e14b..225f8b87411 100644
--- a/searchlib/src/vespa/searchlib/features/querycompletenessfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/querycompletenessfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "querycompletenessfeature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/querycompletenessfeature.h b/searchlib/src/vespa/searchlib/features/querycompletenessfeature.h
index 3c0efdecf58..249d30746fc 100644
--- a/searchlib/src/vespa/searchlib/features/querycompletenessfeature.h
+++ b/searchlib/src/vespa/searchlib/features/querycompletenessfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/fef/blueprint.h>
diff --git a/searchlib/src/vespa/searchlib/features/queryfeature.cpp b/searchlib/src/vespa/searchlib/features/queryfeature.cpp
index a69147e64d5..78758e20ebb 100644
--- a/searchlib/src/vespa/searchlib/features/queryfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/queryfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "queryfeature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/queryfeature.h b/searchlib/src/vespa/searchlib/features/queryfeature.h
index 0d4424db792..b097f5785ed 100644
--- a/searchlib/src/vespa/searchlib/features/queryfeature.h
+++ b/searchlib/src/vespa/searchlib/features/queryfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/queryterm.cpp b/searchlib/src/vespa/searchlib/features/queryterm.cpp
index b739df4d347..22ce9565a9a 100644
--- a/searchlib/src/vespa/searchlib/features/queryterm.cpp
+++ b/searchlib/src/vespa/searchlib/features/queryterm.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "queryterm.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/queryterm.h b/searchlib/src/vespa/searchlib/features/queryterm.h
index 91423ec5707..a810057ef2f 100644
--- a/searchlib/src/vespa/searchlib/features/queryterm.h
+++ b/searchlib/src/vespa/searchlib/features/queryterm.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/querytermcountfeature.cpp b/searchlib/src/vespa/searchlib/features/querytermcountfeature.cpp
index 741501d3b6d..3db7f25a423 100644
--- a/searchlib/src/vespa/searchlib/features/querytermcountfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/querytermcountfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "querytermcountfeature.h"
#include "valuefeature.h"
diff --git a/searchlib/src/vespa/searchlib/features/querytermcountfeature.h b/searchlib/src/vespa/searchlib/features/querytermcountfeature.h
index f31fb1daf18..5edcd614393 100644
--- a/searchlib/src/vespa/searchlib/features/querytermcountfeature.h
+++ b/searchlib/src/vespa/searchlib/features/querytermcountfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/random_normal_feature.cpp b/searchlib/src/vespa/searchlib/features/random_normal_feature.cpp
index 8d4af8fd88d..91ccd390692 100644
--- a/searchlib/src/vespa/searchlib/features/random_normal_feature.cpp
+++ b/searchlib/src/vespa/searchlib/features/random_normal_feature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "random_normal_feature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/random_normal_feature.h b/searchlib/src/vespa/searchlib/features/random_normal_feature.h
index bf0aa66ea36..014de46eca0 100644
--- a/searchlib/src/vespa/searchlib/features/random_normal_feature.h
+++ b/searchlib/src/vespa/searchlib/features/random_normal_feature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/random_normal_stable_feature.cpp b/searchlib/src/vespa/searchlib/features/random_normal_stable_feature.cpp
index f3d33c7dc29..f7fcffca8cb 100644
--- a/searchlib/src/vespa/searchlib/features/random_normal_stable_feature.cpp
+++ b/searchlib/src/vespa/searchlib/features/random_normal_stable_feature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "random_normal_stable_feature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/random_normal_stable_feature.h b/searchlib/src/vespa/searchlib/features/random_normal_stable_feature.h
index 6211999a4f6..f6b567a1ab5 100644
--- a/searchlib/src/vespa/searchlib/features/random_normal_stable_feature.h
+++ b/searchlib/src/vespa/searchlib/features/random_normal_stable_feature.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/randomfeature.cpp b/searchlib/src/vespa/searchlib/features/randomfeature.cpp
index 95daebd0452..a8f2dd275a7 100644
--- a/searchlib/src/vespa/searchlib/features/randomfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/randomfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "randomfeature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/randomfeature.h b/searchlib/src/vespa/searchlib/features/randomfeature.h
index 3a93e77d4d0..a00916f9f20 100644
--- a/searchlib/src/vespa/searchlib/features/randomfeature.h
+++ b/searchlib/src/vespa/searchlib/features/randomfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/rankingexpression/CMakeLists.txt b/searchlib/src/vespa/searchlib/features/rankingexpression/CMakeLists.txt
index 68b4c4bb043..6dfb91671bd 100644
--- a/searchlib/src/vespa/searchlib/features/rankingexpression/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/features/rankingexpression/CMakeLists.txt
@@ -1,8 +1,7 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_features_rankingexpression OBJECT
SOURCES
expression_replacer.cpp
- feature_name_extractor.cpp
intrinsic_blueprint_adapter.cpp
intrinsic_expression.cpp
DEPENDS
diff --git a/searchlib/src/vespa/searchlib/features/rankingexpression/expression_replacer.cpp b/searchlib/src/vespa/searchlib/features/rankingexpression/expression_replacer.cpp
index 7de5503582a..a5c397cea8a 100644
--- a/searchlib/src/vespa/searchlib/features/rankingexpression/expression_replacer.cpp
+++ b/searchlib/src/vespa/searchlib/features/rankingexpression/expression_replacer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "expression_replacer.h"
diff --git a/searchlib/src/vespa/searchlib/features/rankingexpression/expression_replacer.h b/searchlib/src/vespa/searchlib/features/rankingexpression/expression_replacer.h
index 2a2d9f24439..f78fbd0a153 100644
--- a/searchlib/src/vespa/searchlib/features/rankingexpression/expression_replacer.h
+++ b/searchlib/src/vespa/searchlib/features/rankingexpression/expression_replacer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/rankingexpression/feature_name_extractor.h b/searchlib/src/vespa/searchlib/features/rankingexpression/feature_name_extractor.h
index b7d82744953..62b427b81b9 100644
--- a/searchlib/src/vespa/searchlib/features/rankingexpression/feature_name_extractor.h
+++ b/searchlib/src/vespa/searchlib/features/rankingexpression/feature_name_extractor.h
@@ -1,23 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
-#include <vespa/eval/eval/function.h>
+#include <vespa/eval/eval/feature_name_extractor.h>
-namespace search {
-namespace features {
-namespace rankingexpression {
+namespace search::features::rankingexpression {
-/**
- * Custom symbol extractor used to extract ranking feature names when
- * parsing ranking expressions.
- **/
-struct FeatureNameExtractor : public vespalib::eval::SymbolExtractor {
- void extract_symbol(const char *pos_in, const char *end_in,
- const char *&pos_out, vespalib::string &symbol_out) const override;
-};
-
-} // namespace rankingexpression
-} // namespace features
-} // namespace search
+using FeatureNameExtractor = vespalib::eval::FeatureNameExtractor;
+}
diff --git a/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_blueprint_adapter.cpp b/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_blueprint_adapter.cpp
index 4b777802985..62f823b54a7 100644
--- a/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_blueprint_adapter.cpp
+++ b/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_blueprint_adapter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "intrinsic_blueprint_adapter.h"
#include <vespa/searchlib/fef/fef.h>
diff --git a/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_blueprint_adapter.h b/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_blueprint_adapter.h
index 01c6ced2391..989d362e629 100644
--- a/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_blueprint_adapter.h
+++ b/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_blueprint_adapter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_expression.cpp b/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_expression.cpp
index cceefa58104..f0ed14a8baa 100644
--- a/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_expression.cpp
+++ b/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_expression.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "intrinsic_expression.h"
diff --git a/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_expression.h b/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_expression.h
index 79cb3f9035b..a3fb4b1a0d5 100644
--- a/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_expression.h
+++ b/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_expression.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/rankingexpressionfeature.cpp b/searchlib/src/vespa/searchlib/features/rankingexpressionfeature.cpp
index 15bd810e597..069eab190ec 100644
--- a/searchlib/src/vespa/searchlib/features/rankingexpressionfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/rankingexpressionfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rankingexpressionfeature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/rankingexpressionfeature.h b/searchlib/src/vespa/searchlib/features/rankingexpressionfeature.h
index 579c8cf91a7..43aafe67da1 100644
--- a/searchlib/src/vespa/searchlib/features/rankingexpressionfeature.h
+++ b/searchlib/src/vespa/searchlib/features/rankingexpressionfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/fef/blueprint.h>
diff --git a/searchlib/src/vespa/searchlib/features/raw_score_feature.cpp b/searchlib/src/vespa/searchlib/features/raw_score_feature.cpp
index ea696c75eff..bedb62e79e4 100644
--- a/searchlib/src/vespa/searchlib/features/raw_score_feature.cpp
+++ b/searchlib/src/vespa/searchlib/features/raw_score_feature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "raw_score_feature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/raw_score_feature.h b/searchlib/src/vespa/searchlib/features/raw_score_feature.h
index 42813cf9d22..6344b527595 100644
--- a/searchlib/src/vespa/searchlib/features/raw_score_feature.h
+++ b/searchlib/src/vespa/searchlib/features/raw_score_feature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/reverseproximityfeature.cpp b/searchlib/src/vespa/searchlib/features/reverseproximityfeature.cpp
index 436e9bc0a0c..cc68b4bab3e 100644
--- a/searchlib/src/vespa/searchlib/features/reverseproximityfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/reverseproximityfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "reverseproximityfeature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/reverseproximityfeature.h b/searchlib/src/vespa/searchlib/features/reverseproximityfeature.h
index d06b6c57fe7..6e6d583791f 100644
--- a/searchlib/src/vespa/searchlib/features/reverseproximityfeature.h
+++ b/searchlib/src/vespa/searchlib/features/reverseproximityfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/fef/blueprint.h>
diff --git a/searchlib/src/vespa/searchlib/features/setup.cpp b/searchlib/src/vespa/searchlib/features/setup.cpp
index c97d2d68812..af232238366 100644
--- a/searchlib/src/vespa/searchlib/features/setup.cpp
+++ b/searchlib/src/vespa/searchlib/features/setup.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "setup.h"
#include "agefeature.h"
diff --git a/searchlib/src/vespa/searchlib/features/setup.h b/searchlib/src/vespa/searchlib/features/setup.h
index 3904882c3a8..5e1ee35ee38 100644
--- a/searchlib/src/vespa/searchlib/features/setup.h
+++ b/searchlib/src/vespa/searchlib/features/setup.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/fef/blueprint.h>
diff --git a/searchlib/src/vespa/searchlib/features/subqueries_feature.cpp b/searchlib/src/vespa/searchlib/features/subqueries_feature.cpp
index aaff46af93e..66a052ee0a2 100644
--- a/searchlib/src/vespa/searchlib/features/subqueries_feature.cpp
+++ b/searchlib/src/vespa/searchlib/features/subqueries_feature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "subqueries_feature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/subqueries_feature.h b/searchlib/src/vespa/searchlib/features/subqueries_feature.h
index 3a6be567548..fefda9406bd 100644
--- a/searchlib/src/vespa/searchlib/features/subqueries_feature.h
+++ b/searchlib/src/vespa/searchlib/features/subqueries_feature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.cpp b/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.cpp
index 802e98dcd66..b78b194d0ef 100644
--- a/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.cpp
+++ b/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tensor_attribute_executor.h"
#include <vespa/searchlib/tensor/i_tensor_attribute.h>
diff --git a/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.h b/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.h
index f22922e4d12..1ca05d058cb 100644
--- a/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.h
+++ b/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/tensor_factory_blueprint.cpp b/searchlib/src/vespa/searchlib/features/tensor_factory_blueprint.cpp
index 38553dc298d..3e5d1da6a1a 100644
--- a/searchlib/src/vespa/searchlib/features/tensor_factory_blueprint.cpp
+++ b/searchlib/src/vespa/searchlib/features/tensor_factory_blueprint.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tensor_factory_blueprint.h"
#include <vespa/eval/eval/function.h>
diff --git a/searchlib/src/vespa/searchlib/features/tensor_factory_blueprint.h b/searchlib/src/vespa/searchlib/features/tensor_factory_blueprint.h
index c2b6534ae74..26fcc79b6f5 100644
--- a/searchlib/src/vespa/searchlib/features/tensor_factory_blueprint.h
+++ b/searchlib/src/vespa/searchlib/features/tensor_factory_blueprint.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/tensor_from_attribute_executor.h b/searchlib/src/vespa/searchlib/features/tensor_from_attribute_executor.h
index 475075671cd..5a3fede76e8 100644
--- a/searchlib/src/vespa/searchlib/features/tensor_from_attribute_executor.h
+++ b/searchlib/src/vespa/searchlib/features/tensor_from_attribute_executor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/tensor_from_labels_feature.cpp b/searchlib/src/vespa/searchlib/features/tensor_from_labels_feature.cpp
index 24e06cfe639..6de6b0b5bcb 100644
--- a/searchlib/src/vespa/searchlib/features/tensor_from_labels_feature.cpp
+++ b/searchlib/src/vespa/searchlib/features/tensor_from_labels_feature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tensor_from_labels_feature.h"
#include "array_parser.hpp"
diff --git a/searchlib/src/vespa/searchlib/features/tensor_from_labels_feature.h b/searchlib/src/vespa/searchlib/features/tensor_from_labels_feature.h
index e014b040eb1..bc4bba993f8 100644
--- a/searchlib/src/vespa/searchlib/features/tensor_from_labels_feature.h
+++ b/searchlib/src/vespa/searchlib/features/tensor_from_labels_feature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/tensor_from_weighted_set_feature.cpp b/searchlib/src/vespa/searchlib/features/tensor_from_weighted_set_feature.cpp
index 50fab518402..dc054ed5206 100644
--- a/searchlib/src/vespa/searchlib/features/tensor_from_weighted_set_feature.cpp
+++ b/searchlib/src/vespa/searchlib/features/tensor_from_weighted_set_feature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tensor_from_weighted_set_feature.h"
#include "constant_tensor_executor.h"
diff --git a/searchlib/src/vespa/searchlib/features/tensor_from_weighted_set_feature.h b/searchlib/src/vespa/searchlib/features/tensor_from_weighted_set_feature.h
index 367eab08076..1c9719c26db 100644
--- a/searchlib/src/vespa/searchlib/features/tensor_from_weighted_set_feature.h
+++ b/searchlib/src/vespa/searchlib/features/tensor_from_weighted_set_feature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/term_field_md_feature.cpp b/searchlib/src/vespa/searchlib/features/term_field_md_feature.cpp
index 7fd487d8bdd..42e71fd35a1 100644
--- a/searchlib/src/vespa/searchlib/features/term_field_md_feature.cpp
+++ b/searchlib/src/vespa/searchlib/features/term_field_md_feature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "term_field_md_feature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/term_field_md_feature.h b/searchlib/src/vespa/searchlib/features/term_field_md_feature.h
index fca101f85d4..bd8e911f97f 100644
--- a/searchlib/src/vespa/searchlib/features/term_field_md_feature.h
+++ b/searchlib/src/vespa/searchlib/features/term_field_md_feature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/termdistancecalculator.cpp b/searchlib/src/vespa/searchlib/features/termdistancecalculator.cpp
index 10828544460..c210c3c9085 100644
--- a/searchlib/src/vespa/searchlib/features/termdistancecalculator.cpp
+++ b/searchlib/src/vespa/searchlib/features/termdistancecalculator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "termdistancecalculator.h"
#include <vespa/searchlib/fef/matchdata.h>
diff --git a/searchlib/src/vespa/searchlib/features/termdistancecalculator.h b/searchlib/src/vespa/searchlib/features/termdistancecalculator.h
index 09aecddbe28..7129d703736 100644
--- a/searchlib/src/vespa/searchlib/features/termdistancecalculator.h
+++ b/searchlib/src/vespa/searchlib/features/termdistancecalculator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/termdistancefeature.cpp b/searchlib/src/vespa/searchlib/features/termdistancefeature.cpp
index 5a60f2e617f..abfdcad6195 100644
--- a/searchlib/src/vespa/searchlib/features/termdistancefeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/termdistancefeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "termdistancefeature.h"
#include "valuefeature.h"
diff --git a/searchlib/src/vespa/searchlib/features/termdistancefeature.h b/searchlib/src/vespa/searchlib/features/termdistancefeature.h
index 06f5c243c5d..b7ccdc4ddfe 100644
--- a/searchlib/src/vespa/searchlib/features/termdistancefeature.h
+++ b/searchlib/src/vespa/searchlib/features/termdistancefeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/termeditdistancefeature.cpp b/searchlib/src/vespa/searchlib/features/termeditdistancefeature.cpp
index 433bf6134b8..41b441d2915 100644
--- a/searchlib/src/vespa/searchlib/features/termeditdistancefeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/termeditdistancefeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "termeditdistancefeature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/termeditdistancefeature.h b/searchlib/src/vespa/searchlib/features/termeditdistancefeature.h
index 6d5739c690f..e86c2a909f1 100644
--- a/searchlib/src/vespa/searchlib/features/termeditdistancefeature.h
+++ b/searchlib/src/vespa/searchlib/features/termeditdistancefeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/fef/blueprint.h>
diff --git a/searchlib/src/vespa/searchlib/features/termfeature.cpp b/searchlib/src/vespa/searchlib/features/termfeature.cpp
index 90540726227..e84cf6a9a1e 100644
--- a/searchlib/src/vespa/searchlib/features/termfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/termfeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "termfeature.h"
#include "utils.h"
diff --git a/searchlib/src/vespa/searchlib/features/termfeature.h b/searchlib/src/vespa/searchlib/features/termfeature.h
index cb1a8621795..be8e5554756 100644
--- a/searchlib/src/vespa/searchlib/features/termfeature.h
+++ b/searchlib/src/vespa/searchlib/features/termfeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/fef/blueprint.h>
diff --git a/searchlib/src/vespa/searchlib/features/terminfofeature.cpp b/searchlib/src/vespa/searchlib/features/terminfofeature.cpp
index b61021c4aa2..08d44f6092c 100644
--- a/searchlib/src/vespa/searchlib/features/terminfofeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/terminfofeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "terminfofeature.h"
#include "valuefeature.h"
diff --git a/searchlib/src/vespa/searchlib/features/terminfofeature.h b/searchlib/src/vespa/searchlib/features/terminfofeature.h
index 0197e339e38..7133fe2754f 100644
--- a/searchlib/src/vespa/searchlib/features/terminfofeature.h
+++ b/searchlib/src/vespa/searchlib/features/terminfofeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/text_similarity_feature.cpp b/searchlib/src/vespa/searchlib/features/text_similarity_feature.cpp
index a0e0a8759a0..2723469aa67 100644
--- a/searchlib/src/vespa/searchlib/features/text_similarity_feature.cpp
+++ b/searchlib/src/vespa/searchlib/features/text_similarity_feature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "text_similarity_feature.h"
#include <vespa/searchlib/fef/itermdata.h>
diff --git a/searchlib/src/vespa/searchlib/features/text_similarity_feature.h b/searchlib/src/vespa/searchlib/features/text_similarity_feature.h
index 00406dc4993..f7cd259b769 100644
--- a/searchlib/src/vespa/searchlib/features/text_similarity_feature.h
+++ b/searchlib/src/vespa/searchlib/features/text_similarity_feature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/utils.cpp b/searchlib/src/vespa/searchlib/features/utils.cpp
index 7bfea67b7f6..88eaaba39eb 100644
--- a/searchlib/src/vespa/searchlib/features/utils.cpp
+++ b/searchlib/src/vespa/searchlib/features/utils.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "utils.hpp"
#include <charconv>
diff --git a/searchlib/src/vespa/searchlib/features/utils.h b/searchlib/src/vespa/searchlib/features/utils.h
index 890c7cc5225..eeecd55c6da 100644
--- a/searchlib/src/vespa/searchlib/features/utils.h
+++ b/searchlib/src/vespa/searchlib/features/utils.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/utils.hpp b/searchlib/src/vespa/searchlib/features/utils.hpp
index 7e6987ca14e..faa0299f639 100644
--- a/searchlib/src/vespa/searchlib/features/utils.hpp
+++ b/searchlib/src/vespa/searchlib/features/utils.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/valuefeature.cpp b/searchlib/src/vespa/searchlib/features/valuefeature.cpp
index 64f2ba862e2..d6371838756 100644
--- a/searchlib/src/vespa/searchlib/features/valuefeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/valuefeature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "valuefeature.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/searchlib/src/vespa/searchlib/features/valuefeature.h b/searchlib/src/vespa/searchlib/features/valuefeature.h
index d8e2ab70d0b..bd5377183bf 100644
--- a/searchlib/src/vespa/searchlib/features/valuefeature.h
+++ b/searchlib/src/vespa/searchlib/features/valuefeature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/weighted_set_parser.cpp b/searchlib/src/vespa/searchlib/features/weighted_set_parser.cpp
index 577ca746e14..8a4e046e56f 100644
--- a/searchlib/src/vespa/searchlib/features/weighted_set_parser.cpp
+++ b/searchlib/src/vespa/searchlib/features/weighted_set_parser.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "weighted_set_parser.h"
diff --git a/searchlib/src/vespa/searchlib/features/weighted_set_parser.h b/searchlib/src/vespa/searchlib/features/weighted_set_parser.h
index 8eedd9d98b6..ae2e5f7a125 100644
--- a/searchlib/src/vespa/searchlib/features/weighted_set_parser.h
+++ b/searchlib/src/vespa/searchlib/features/weighted_set_parser.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/features/weighted_set_parser.hpp b/searchlib/src/vespa/searchlib/features/weighted_set_parser.hpp
index 1b3679bbf19..dc7e59af4e6 100644
--- a/searchlib/src/vespa/searchlib/features/weighted_set_parser.hpp
+++ b/searchlib/src/vespa/searchlib/features/weighted_set_parser.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/CMakeLists.txt b/searchlib/src/vespa/searchlib/fef/CMakeLists.txt
index d6f8764cd63..8968e4e347d 100644
--- a/searchlib/src/vespa/searchlib/fef/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/fef/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_fef OBJECT
SOURCES
blueprint.cpp
diff --git a/searchlib/src/vespa/searchlib/fef/Doxyfile b/searchlib/src/vespa/searchlib/fef/Doxyfile
index d077998620f..4ca1f146280 100644
--- a/searchlib/src/vespa/searchlib/fef/Doxyfile
+++ b/searchlib/src/vespa/searchlib/fef/Doxyfile
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Doxyfile 1.3.9.1
# This file describes the settings to be used by the documentation system
diff --git a/searchlib/src/vespa/searchlib/fef/blueprint.cpp b/searchlib/src/vespa/searchlib/fef/blueprint.cpp
index 6e56d64bb42..58094121e24 100644
--- a/searchlib/src/vespa/searchlib/fef/blueprint.cpp
+++ b/searchlib/src/vespa/searchlib/fef/blueprint.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "blueprint.h"
#include "parametervalidator.h"
diff --git a/searchlib/src/vespa/searchlib/fef/blueprint.h b/searchlib/src/vespa/searchlib/fef/blueprint.h
index 9bbbbdb1603..d4e37f05b91 100644
--- a/searchlib/src/vespa/searchlib/fef/blueprint.h
+++ b/searchlib/src/vespa/searchlib/fef/blueprint.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/blueprintfactory.cpp b/searchlib/src/vespa/searchlib/fef/blueprintfactory.cpp
index 357aec3fc71..1d841dd5f0f 100644
--- a/searchlib/src/vespa/searchlib/fef/blueprintfactory.cpp
+++ b/searchlib/src/vespa/searchlib/fef/blueprintfactory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "blueprintfactory.h"
diff --git a/searchlib/src/vespa/searchlib/fef/blueprintfactory.h b/searchlib/src/vespa/searchlib/fef/blueprintfactory.h
index 346294ba5f5..f98c8928a72 100644
--- a/searchlib/src/vespa/searchlib/fef/blueprintfactory.h
+++ b/searchlib/src/vespa/searchlib/fef/blueprintfactory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/blueprintresolver.cpp b/searchlib/src/vespa/searchlib/fef/blueprintresolver.cpp
index 0a13b196c43..da6cfdba158 100644
--- a/searchlib/src/vespa/searchlib/fef/blueprintresolver.cpp
+++ b/searchlib/src/vespa/searchlib/fef/blueprintresolver.cpp
@@ -1,10 +1,12 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "blueprintresolver.h"
#include "blueprintfactory.h"
#include "featurenameparser.h"
+#include <vespa/vespalib/util/lambdatask.h>
#include <vespa/vespalib/util/stringfmt.h>
#include <vespa/vespalib/util/size_literals.h>
+#include <vespa/vespalib/util/threadstackexecutor.h>
#include <stack>
#include <cassert>
#include <set>
@@ -14,6 +16,8 @@
LOG_SETUP(".fef.blueprintresolver");
using vespalib::make_string_short::fmt;
+using vespalib::ThreadStackExecutor;
+using vespalib::makeLambdaTask;
namespace search::fef {
@@ -271,8 +275,7 @@ BlueprintResolver::compile()
{
assert(_executorSpecs.empty()); // only one compilation allowed
Compiler compiler(_factory, _indexEnv, _executorSpecs, _featureMap);
- std::thread compile_thread([&]()
- {
+ auto compile_task = makeLambdaTask([&]() {
compiler.probe_stack();
for (const auto &seed: _seeds) {
auto ref = compiler.resolve_feature(seed, Blueprint::AcceptInput::ANY);
@@ -282,7 +285,10 @@ BlueprintResolver::compile()
_seedMap.emplace(FeatureNameParser(seed).featureName(), ref);
}
});
- compile_thread.join();
+ ThreadStackExecutor executor(1, 8_Mi);
+ executor.execute(std::move(compile_task));
+ executor.sync();
+ executor.shutdown();
size_t stack_usage = compiler.stack_usage();
if (stack_usage > (128_Ki)) {
LOG(warning, "high stack usage: %zu bytes", stack_usage);
diff --git a/searchlib/src/vespa/searchlib/fef/blueprintresolver.h b/searchlib/src/vespa/searchlib/fef/blueprintresolver.h
index 60b1eacb803..80320ae780a 100644
--- a/searchlib/src/vespa/searchlib/fef/blueprintresolver.h
+++ b/searchlib/src/vespa/searchlib/fef/blueprintresolver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/create-class-cpp.sh b/searchlib/src/vespa/searchlib/fef/create-class-cpp.sh
index 6e827b467f9..bff6f32a9a2 100755
--- a/searchlib/src/vespa/searchlib/fef/create-class-cpp.sh
+++ b/searchlib/src/vespa/searchlib/fef/create-class-cpp.sh
@@ -1,12 +1,12 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
class=$1
guard=`echo $class | tr 'a-z' 'A-Z'`
name=`echo $class | tr 'A-Z' 'a-z'`
cat <<EOF
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "$name.h"
diff --git a/searchlib/src/vespa/searchlib/fef/create-class-h.sh b/searchlib/src/vespa/searchlib/fef/create-class-h.sh
index e6fa1c7e9d8..2587ab16fcf 100644
--- a/searchlib/src/vespa/searchlib/fef/create-class-h.sh
+++ b/searchlib/src/vespa/searchlib/fef/create-class-h.sh
@@ -1,11 +1,11 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
class=$1
guard=`echo $class | tr 'a-z' 'A-Z'`
cat <<EOF
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace search {
diff --git a/searchlib/src/vespa/searchlib/fef/create-fef-includes.sh b/searchlib/src/vespa/searchlib/fef/create-fef-includes.sh
index dc2ae5ac6c6..b425df3cbcc 100644
--- a/searchlib/src/vespa/searchlib/fef/create-fef-includes.sh
+++ b/searchlib/src/vespa/searchlib/fef/create-fef-includes.sh
@@ -1,8 +1,8 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
cat <<EOF
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// NOTE: This file was generated by the 'create-fef-includes.sh' script
#pragma once
/**
diff --git a/searchlib/src/vespa/searchlib/fef/create-interface.sh b/searchlib/src/vespa/searchlib/fef/create-interface.sh
index e57415c49ef..c0fdc14de0d 100644
--- a/searchlib/src/vespa/searchlib/fef/create-interface.sh
+++ b/searchlib/src/vespa/searchlib/fef/create-interface.sh
@@ -1,11 +1,11 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
class=$1
guard=`echo $class | tr 'a-z' 'A-Z'`
cat <<EOF
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace search {
diff --git a/searchlib/src/vespa/searchlib/fef/dist_doc_hp.sh b/searchlib/src/vespa/searchlib/fef/dist_doc_hp.sh
index 88b3c26a9c5..78d3e8f0b22 100755
--- a/searchlib/src/vespa/searchlib/fef/dist_doc_hp.sh
+++ b/searchlib/src/vespa/searchlib/fef/dist_doc_hp.sh
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
doxygen
scp html/* testdata:dist/doxygen/fef/
diff --git a/searchlib/src/vespa/searchlib/fef/feature_resolver.cpp b/searchlib/src/vespa/searchlib/fef/feature_resolver.cpp
index 5ff9e93a0eb..b8cd3c4d697 100644
--- a/searchlib/src/vespa/searchlib/fef/feature_resolver.cpp
+++ b/searchlib/src/vespa/searchlib/fef/feature_resolver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "feature_resolver.h"
diff --git a/searchlib/src/vespa/searchlib/fef/feature_resolver.h b/searchlib/src/vespa/searchlib/fef/feature_resolver.h
index ccc0c7c3397..6dfbd4de469 100644
--- a/searchlib/src/vespa/searchlib/fef/feature_resolver.h
+++ b/searchlib/src/vespa/searchlib/fef/feature_resolver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/feature_type.cpp b/searchlib/src/vespa/searchlib/fef/feature_type.cpp
index 79c6470b645..825295f7a83 100644
--- a/searchlib/src/vespa/searchlib/fef/feature_type.cpp
+++ b/searchlib/src/vespa/searchlib/fef/feature_type.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "feature_type.h"
#include <cassert>
diff --git a/searchlib/src/vespa/searchlib/fef/feature_type.h b/searchlib/src/vespa/searchlib/fef/feature_type.h
index 1eaa153e95d..643d0b9ae0f 100644
--- a/searchlib/src/vespa/searchlib/fef/feature_type.h
+++ b/searchlib/src/vespa/searchlib/fef/feature_type.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/featureexecutor.cpp b/searchlib/src/vespa/searchlib/fef/featureexecutor.cpp
index 1ea3da3939c..09559e95dd7 100644
--- a/searchlib/src/vespa/searchlib/fef/featureexecutor.cpp
+++ b/searchlib/src/vespa/searchlib/fef/featureexecutor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "featureexecutor.h"
#include <vespa/vespalib/util/classname.h>
diff --git a/searchlib/src/vespa/searchlib/fef/featureexecutor.h b/searchlib/src/vespa/searchlib/fef/featureexecutor.h
index 1e52aaee8ad..c622813a87f 100644
--- a/searchlib/src/vespa/searchlib/fef/featureexecutor.h
+++ b/searchlib/src/vespa/searchlib/fef/featureexecutor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/featurenamebuilder.cpp b/searchlib/src/vespa/searchlib/fef/featurenamebuilder.cpp
index 0eba912fafd..cb279a35731 100644
--- a/searchlib/src/vespa/searchlib/fef/featurenamebuilder.cpp
+++ b/searchlib/src/vespa/searchlib/fef/featurenamebuilder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "featurenamebuilder.h"
#include "featurenameparser.h"
diff --git a/searchlib/src/vespa/searchlib/fef/featurenamebuilder.h b/searchlib/src/vespa/searchlib/fef/featurenamebuilder.h
index 2b8844ac526..d3bac51a15f 100644
--- a/searchlib/src/vespa/searchlib/fef/featurenamebuilder.h
+++ b/searchlib/src/vespa/searchlib/fef/featurenamebuilder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/featurenameparser.cpp b/searchlib/src/vespa/searchlib/fef/featurenameparser.cpp
index 1054c5f5d4a..5db4870305a 100644
--- a/searchlib/src/vespa/searchlib/fef/featurenameparser.cpp
+++ b/searchlib/src/vespa/searchlib/fef/featurenameparser.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "featurenameparser.h"
#include "featurenamebuilder.h"
diff --git a/searchlib/src/vespa/searchlib/fef/featurenameparser.h b/searchlib/src/vespa/searchlib/fef/featurenameparser.h
index 9bfebf9cfb0..7d475719bbb 100644
--- a/searchlib/src/vespa/searchlib/fef/featurenameparser.h
+++ b/searchlib/src/vespa/searchlib/fef/featurenameparser.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/featureoverrider.cpp b/searchlib/src/vespa/searchlib/fef/featureoverrider.cpp
index 5209065fd62..5092842e4b3 100644
--- a/searchlib/src/vespa/searchlib/fef/featureoverrider.cpp
+++ b/searchlib/src/vespa/searchlib/fef/featureoverrider.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "featureoverrider.h"
diff --git a/searchlib/src/vespa/searchlib/fef/featureoverrider.h b/searchlib/src/vespa/searchlib/fef/featureoverrider.h
index 89c397abfdb..05c651932fe 100644
--- a/searchlib/src/vespa/searchlib/fef/featureoverrider.h
+++ b/searchlib/src/vespa/searchlib/fef/featureoverrider.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/fef.cpp b/searchlib/src/vespa/searchlib/fef/fef.cpp
index 639c74bf3dc..2fe2274fe5b 100644
--- a/searchlib/src/vespa/searchlib/fef/fef.cpp
+++ b/searchlib/src/vespa/searchlib/fef/fef.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fef.h"
diff --git a/searchlib/src/vespa/searchlib/fef/fef.h b/searchlib/src/vespa/searchlib/fef/fef.h
index b677ba128c9..62e997a1aeb 100644
--- a/searchlib/src/vespa/searchlib/fef/fef.h
+++ b/searchlib/src/vespa/searchlib/fef/fef.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// NOTE: This file was generated by the 'create-fef-includes.sh' script
diff --git a/searchlib/src/vespa/searchlib/fef/fieldinfo.cpp b/searchlib/src/vespa/searchlib/fef/fieldinfo.cpp
index 0f72b5a4586..5a07b638d60 100644
--- a/searchlib/src/vespa/searchlib/fef/fieldinfo.cpp
+++ b/searchlib/src/vespa/searchlib/fef/fieldinfo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fieldinfo.h"
diff --git a/searchlib/src/vespa/searchlib/fef/fieldinfo.h b/searchlib/src/vespa/searchlib/fef/fieldinfo.h
index ce009ba68c0..d1613ffaafb 100644
--- a/searchlib/src/vespa/searchlib/fef/fieldinfo.h
+++ b/searchlib/src/vespa/searchlib/fef/fieldinfo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/fieldpositionsiterator.cpp b/searchlib/src/vespa/searchlib/fef/fieldpositionsiterator.cpp
index d0cac1e41bd..c2f10674e4c 100644
--- a/searchlib/src/vespa/searchlib/fef/fieldpositionsiterator.cpp
+++ b/searchlib/src/vespa/searchlib/fef/fieldpositionsiterator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fieldpositionsiterator.h"
#include <vespa/searchlib/common/fslimits.h>
diff --git a/searchlib/src/vespa/searchlib/fef/fieldpositionsiterator.h b/searchlib/src/vespa/searchlib/fef/fieldpositionsiterator.h
index 0084483d0a3..1aee300b805 100644
--- a/searchlib/src/vespa/searchlib/fef/fieldpositionsiterator.h
+++ b/searchlib/src/vespa/searchlib/fef/fieldpositionsiterator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/fieldtype.h b/searchlib/src/vespa/searchlib/fef/fieldtype.h
index 32879ecfb5d..e103863e4d9 100644
--- a/searchlib/src/vespa/searchlib/fef/fieldtype.h
+++ b/searchlib/src/vespa/searchlib/fef/fieldtype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/filetablefactory.cpp b/searchlib/src/vespa/searchlib/fef/filetablefactory.cpp
index a7a161f3dfd..a2ca202c8d3 100644
--- a/searchlib/src/vespa/searchlib/fef/filetablefactory.cpp
+++ b/searchlib/src/vespa/searchlib/fef/filetablefactory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "filetablefactory.h"
#include <fstream>
diff --git a/searchlib/src/vespa/searchlib/fef/filetablefactory.h b/searchlib/src/vespa/searchlib/fef/filetablefactory.h
index 971e8c0de39..ff1a4e02a9c 100644
--- a/searchlib/src/vespa/searchlib/fef/filetablefactory.h
+++ b/searchlib/src/vespa/searchlib/fef/filetablefactory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/functiontablefactory.cpp b/searchlib/src/vespa/searchlib/fef/functiontablefactory.cpp
index 9886e3619e4..3c816870a6d 100644
--- a/searchlib/src/vespa/searchlib/fef/functiontablefactory.cpp
+++ b/searchlib/src/vespa/searchlib/fef/functiontablefactory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "functiontablefactory.h"
#include <vespa/vespalib/locale/c.h>
diff --git a/searchlib/src/vespa/searchlib/fef/functiontablefactory.h b/searchlib/src/vespa/searchlib/fef/functiontablefactory.h
index 1e44a760ef2..ffee09dd73d 100644
--- a/searchlib/src/vespa/searchlib/fef/functiontablefactory.h
+++ b/searchlib/src/vespa/searchlib/fef/functiontablefactory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/handle.h b/searchlib/src/vespa/searchlib/fef/handle.h
index af2ed4fd581..b3cc3be2c29 100644
--- a/searchlib/src/vespa/searchlib/fef/handle.h
+++ b/searchlib/src/vespa/searchlib/fef/handle.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/iblueprintregistry.h b/searchlib/src/vespa/searchlib/fef/iblueprintregistry.h
index 43ca5a44303..f2a6d53fc5f 100644
--- a/searchlib/src/vespa/searchlib/fef/iblueprintregistry.h
+++ b/searchlib/src/vespa/searchlib/fef/iblueprintregistry.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/idumpfeaturevisitor.h b/searchlib/src/vespa/searchlib/fef/idumpfeaturevisitor.h
index 1b317b2d4bf..5c567892f76 100644
--- a/searchlib/src/vespa/searchlib/fef/idumpfeaturevisitor.h
+++ b/searchlib/src/vespa/searchlib/fef/idumpfeaturevisitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/iindexenvironment.h b/searchlib/src/vespa/searchlib/fef/iindexenvironment.h
index a01d7d8762b..35158d046da 100644
--- a/searchlib/src/vespa/searchlib/fef/iindexenvironment.h
+++ b/searchlib/src/vespa/searchlib/fef/iindexenvironment.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/indexproperties.cpp b/searchlib/src/vespa/searchlib/fef/indexproperties.cpp
index 622e437692a..d1b169739c1 100644
--- a/searchlib/src/vespa/searchlib/fef/indexproperties.cpp
+++ b/searchlib/src/vespa/searchlib/fef/indexproperties.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "indexproperties.h"
#include "properties.h"
@@ -290,18 +290,34 @@ NearestNeighborBruteForceLimit::lookup(const Properties &props, double defaultVa
return lookupDouble(props, NAME, defaultValue);
}
-const vespalib::string GlobalFilterLimit::NAME("vespa.matching.global_filter_limit");
+const vespalib::string GlobalFilterLowerLimit::NAME("vespa.matching.global_filter.lower_limit");
-const double GlobalFilterLimit::DEFAULT_VALUE(0.0);
+const double GlobalFilterLowerLimit::DEFAULT_VALUE(0.0);
double
-GlobalFilterLimit::lookup(const Properties &props)
+GlobalFilterLowerLimit::lookup(const Properties &props)
{
return lookup(props, DEFAULT_VALUE);
}
double
-GlobalFilterLimit::lookup(const Properties &props, double defaultValue)
+GlobalFilterLowerLimit::lookup(const Properties &props, double defaultValue)
+{
+ return lookupDouble(props, NAME, defaultValue);
+}
+
+const vespalib::string GlobalFilterUpperLimit::NAME("vespa.matching.global_filter.upper_limit");
+
+const double GlobalFilterUpperLimit::DEFAULT_VALUE(2.0);
+
+double
+GlobalFilterUpperLimit::lookup(const Properties &props)
+{
+ return lookup(props, DEFAULT_VALUE);
+}
+
+double
+GlobalFilterUpperLimit::lookup(const Properties &props, double defaultValue)
{
return lookupDouble(props, NAME, defaultValue);
}
diff --git a/searchlib/src/vespa/searchlib/fef/indexproperties.h b/searchlib/src/vespa/searchlib/fef/indexproperties.h
index 1b4c2e92d8d..1798ec4d89f 100644
--- a/searchlib/src/vespa/searchlib/fef/indexproperties.h
+++ b/searchlib/src/vespa/searchlib/fef/indexproperties.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -223,9 +223,24 @@ namespace matching {
* Property to control fallback to not building a global filter
* for a query with a blueprint that wants a global filter. If the
* estimated ratio of matching documents is less than this limit
- * then don't build a global filter.
+ * then don't build a global filter. The effect will be falling back to bruteforce instead of approximation.
**/
- struct GlobalFilterLimit {
+ struct GlobalFilterLowerLimit {
+ static const vespalib::string NAME;
+ static const double DEFAULT_VALUE;
+ static double lookup(const Properties &props);
+ static double lookup(const Properties &props, double defaultValue);
+ };
+
+ /**
+ * Property to control not building a global filter
+ * for a query with a blueprint that wants a global filter. If the
+ * estimated ratio of matching documents is larger than this limit
+ * then don't build a global filter, but assumes that the expected filter ratio has been
+ * taken care of increasing recall. Increasing recall by 1/upper_limit * 1.2 is probably a sane solution
+ * adding 20% margin to handle some correlation between filter and rest of query.
+ **/
+ struct GlobalFilterUpperLimit {
static const vespalib::string NAME;
static const double DEFAULT_VALUE;
static double lookup(const Properties &props);
diff --git a/searchlib/src/vespa/searchlib/fef/iqueryenvironment.h b/searchlib/src/vespa/searchlib/fef/iqueryenvironment.h
index d51b29cbfe3..f01ca3ace77 100644
--- a/searchlib/src/vespa/searchlib/fef/iqueryenvironment.h
+++ b/searchlib/src/vespa/searchlib/fef/iqueryenvironment.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/itablefactory.h b/searchlib/src/vespa/searchlib/fef/itablefactory.h
index d16fa85f4ba..19b17e68322 100644
--- a/searchlib/src/vespa/searchlib/fef/itablefactory.h
+++ b/searchlib/src/vespa/searchlib/fef/itablefactory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/itablemanager.h b/searchlib/src/vespa/searchlib/fef/itablemanager.h
index ca309ca42ff..ca078231ceb 100644
--- a/searchlib/src/vespa/searchlib/fef/itablemanager.h
+++ b/searchlib/src/vespa/searchlib/fef/itablemanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/itermdata.h b/searchlib/src/vespa/searchlib/fef/itermdata.h
index 8b366915602..aca92aedfd5 100644
--- a/searchlib/src/vespa/searchlib/fef/itermdata.h
+++ b/searchlib/src/vespa/searchlib/fef/itermdata.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/itermfielddata.h b/searchlib/src/vespa/searchlib/fef/itermfielddata.h
index 5944f7636b2..057a5794fa9 100644
--- a/searchlib/src/vespa/searchlib/fef/itermfielddata.h
+++ b/searchlib/src/vespa/searchlib/fef/itermfielddata.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/matchdata.cpp b/searchlib/src/vespa/searchlib/fef/matchdata.cpp
index be14b7686e9..63850a11fdc 100644
--- a/searchlib/src/vespa/searchlib/fef/matchdata.cpp
+++ b/searchlib/src/vespa/searchlib/fef/matchdata.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "matchdata.h"
diff --git a/searchlib/src/vespa/searchlib/fef/matchdata.h b/searchlib/src/vespa/searchlib/fef/matchdata.h
index 5b06f4d37e0..924f07dd8c1 100644
--- a/searchlib/src/vespa/searchlib/fef/matchdata.h
+++ b/searchlib/src/vespa/searchlib/fef/matchdata.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/matchdatalayout.cpp b/searchlib/src/vespa/searchlib/fef/matchdatalayout.cpp
index bcecbf6d773..99326b2c1e6 100644
--- a/searchlib/src/vespa/searchlib/fef/matchdatalayout.cpp
+++ b/searchlib/src/vespa/searchlib/fef/matchdatalayout.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "matchdatalayout.h"
#include <cassert>
diff --git a/searchlib/src/vespa/searchlib/fef/matchdatalayout.h b/searchlib/src/vespa/searchlib/fef/matchdatalayout.h
index 53f94128e67..05d25a322db 100644
--- a/searchlib/src/vespa/searchlib/fef/matchdatalayout.h
+++ b/searchlib/src/vespa/searchlib/fef/matchdatalayout.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/number_or_object.h b/searchlib/src/vespa/searchlib/fef/number_or_object.h
index f9fb3d061b4..14c5abf73da 100644
--- a/searchlib/src/vespa/searchlib/fef/number_or_object.h
+++ b/searchlib/src/vespa/searchlib/fef/number_or_object.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/objectstore.cpp b/searchlib/src/vespa/searchlib/fef/objectstore.cpp
index 837c4df0a1f..2da08e2915d 100644
--- a/searchlib/src/vespa/searchlib/fef/objectstore.cpp
+++ b/searchlib/src/vespa/searchlib/fef/objectstore.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "objectstore.h"
#include <vespa/vespalib/stllike/hash_map.hpp>
diff --git a/searchlib/src/vespa/searchlib/fef/objectstore.h b/searchlib/src/vespa/searchlib/fef/objectstore.h
index b1c1e21aedf..c587b7b144a 100644
--- a/searchlib/src/vespa/searchlib/fef/objectstore.h
+++ b/searchlib/src/vespa/searchlib/fef/objectstore.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/hash_map.h>
diff --git a/searchlib/src/vespa/searchlib/fef/onnx_model.cpp b/searchlib/src/vespa/searchlib/fef/onnx_model.cpp
index c301fcf6dca..bdb037db78d 100644
--- a/searchlib/src/vespa/searchlib/fef/onnx_model.cpp
+++ b/searchlib/src/vespa/searchlib/fef/onnx_model.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "onnx_model.h"
#include <tuple>
diff --git a/searchlib/src/vespa/searchlib/fef/onnx_model.h b/searchlib/src/vespa/searchlib/fef/onnx_model.h
index 2d22dd8eb8d..f3fef9caa3e 100644
--- a/searchlib/src/vespa/searchlib/fef/onnx_model.h
+++ b/searchlib/src/vespa/searchlib/fef/onnx_model.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/parameter.cpp b/searchlib/src/vespa/searchlib/fef/parameter.cpp
index c498f5ace27..c59de54bd51 100644
--- a/searchlib/src/vespa/searchlib/fef/parameter.cpp
+++ b/searchlib/src/vespa/searchlib/fef/parameter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "parameter.h"
diff --git a/searchlib/src/vespa/searchlib/fef/parameter.h b/searchlib/src/vespa/searchlib/fef/parameter.h
index bcf0cedf3f2..97c04cdf50f 100644
--- a/searchlib/src/vespa/searchlib/fef/parameter.h
+++ b/searchlib/src/vespa/searchlib/fef/parameter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/parameterdescriptions.cpp b/searchlib/src/vespa/searchlib/fef/parameterdescriptions.cpp
index b4927047a04..5ce2bb21530 100644
--- a/searchlib/src/vespa/searchlib/fef/parameterdescriptions.cpp
+++ b/searchlib/src/vespa/searchlib/fef/parameterdescriptions.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "parameterdescriptions.h"
#include <cassert>
diff --git a/searchlib/src/vespa/searchlib/fef/parameterdescriptions.h b/searchlib/src/vespa/searchlib/fef/parameterdescriptions.h
index fb8f8e06d4d..000dc241202 100644
--- a/searchlib/src/vespa/searchlib/fef/parameterdescriptions.h
+++ b/searchlib/src/vespa/searchlib/fef/parameterdescriptions.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/parametervalidator.cpp b/searchlib/src/vespa/searchlib/fef/parametervalidator.cpp
index b17592c8f74..e9c3b96a2e6 100644
--- a/searchlib/src/vespa/searchlib/fef/parametervalidator.cpp
+++ b/searchlib/src/vespa/searchlib/fef/parametervalidator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "parametervalidator.h"
#include "fieldtype.h"
diff --git a/searchlib/src/vespa/searchlib/fef/parametervalidator.h b/searchlib/src/vespa/searchlib/fef/parametervalidator.h
index 12044905dd0..dc92c6a2071 100644
--- a/searchlib/src/vespa/searchlib/fef/parametervalidator.h
+++ b/searchlib/src/vespa/searchlib/fef/parametervalidator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/phrase_splitter_query_env.cpp b/searchlib/src/vespa/searchlib/fef/phrase_splitter_query_env.cpp
index eb2915c4e90..aaf23ed6744 100644
--- a/searchlib/src/vespa/searchlib/fef/phrase_splitter_query_env.cpp
+++ b/searchlib/src/vespa/searchlib/fef/phrase_splitter_query_env.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "phrase_splitter_query_env.h"
diff --git a/searchlib/src/vespa/searchlib/fef/phrase_splitter_query_env.h b/searchlib/src/vespa/searchlib/fef/phrase_splitter_query_env.h
index 90bf4e8955f..0b99ac06997 100644
--- a/searchlib/src/vespa/searchlib/fef/phrase_splitter_query_env.h
+++ b/searchlib/src/vespa/searchlib/fef/phrase_splitter_query_env.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/phrasesplitter.cpp b/searchlib/src/vespa/searchlib/fef/phrasesplitter.cpp
index b07498e8608..90a058eda00 100644
--- a/searchlib/src/vespa/searchlib/fef/phrasesplitter.cpp
+++ b/searchlib/src/vespa/searchlib/fef/phrasesplitter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "phrasesplitter.h"
#include "phrase_splitter_query_env.h"
diff --git a/searchlib/src/vespa/searchlib/fef/phrasesplitter.h b/searchlib/src/vespa/searchlib/fef/phrasesplitter.h
index 49b0a8a5dbf..e2db7570169 100644
--- a/searchlib/src/vespa/searchlib/fef/phrasesplitter.h
+++ b/searchlib/src/vespa/searchlib/fef/phrasesplitter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/properties.cpp b/searchlib/src/vespa/searchlib/fef/properties.cpp
index 3e6a37e44dd..4fa1019a488 100644
--- a/searchlib/src/vespa/searchlib/fef/properties.cpp
+++ b/searchlib/src/vespa/searchlib/fef/properties.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "properties.h"
#include <vespa/vespalib/stllike/hash_map.hpp>
diff --git a/searchlib/src/vespa/searchlib/fef/properties.h b/searchlib/src/vespa/searchlib/fef/properties.h
index 468e9a90fab..2eca4a27854 100644
--- a/searchlib/src/vespa/searchlib/fef/properties.h
+++ b/searchlib/src/vespa/searchlib/fef/properties.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/queryproperties.cpp b/searchlib/src/vespa/searchlib/fef/queryproperties.cpp
index 91fe962e3e3..5ae443e8c2d 100644
--- a/searchlib/src/vespa/searchlib/fef/queryproperties.cpp
+++ b/searchlib/src/vespa/searchlib/fef/queryproperties.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "queryproperties.h"
diff --git a/searchlib/src/vespa/searchlib/fef/queryproperties.h b/searchlib/src/vespa/searchlib/fef/queryproperties.h
index fe32f190db4..a36a59bc4a9 100644
--- a/searchlib/src/vespa/searchlib/fef/queryproperties.h
+++ b/searchlib/src/vespa/searchlib/fef/queryproperties.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/rank_program.cpp b/searchlib/src/vespa/searchlib/fef/rank_program.cpp
index 0cc39fa93f3..83cb9237975 100644
--- a/searchlib/src/vespa/searchlib/fef/rank_program.cpp
+++ b/searchlib/src/vespa/searchlib/fef/rank_program.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rank_program.h"
#include "featureoverrider.h"
diff --git a/searchlib/src/vespa/searchlib/fef/rank_program.h b/searchlib/src/vespa/searchlib/fef/rank_program.h
index 15b7912bfb1..f3c7541adbd 100644
--- a/searchlib/src/vespa/searchlib/fef/rank_program.h
+++ b/searchlib/src/vespa/searchlib/fef/rank_program.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/ranksetup.cpp b/searchlib/src/vespa/searchlib/fef/ranksetup.cpp
index 249351a4fe5..18d90f20bd1 100644
--- a/searchlib/src/vespa/searchlib/fef/ranksetup.cpp
+++ b/searchlib/src/vespa/searchlib/fef/ranksetup.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "ranksetup.h"
#include "indexproperties.h"
@@ -63,7 +63,8 @@ RankSetup::RankSetup(const BlueprintFactory &factory, const IIndexEnvironment &i
_softTimeoutTailCost(0.1),
_softTimeoutFactor(0.5),
_nearest_neighbor_brute_force_limit(0.05),
- _global_filter_limit(0.0)
+ _global_filter_lower_limit(0.0),
+ _global_filter_upper_limit(1.0)
{ }
RankSetup::~RankSetup() = default;
@@ -107,7 +108,8 @@ RankSetup::configure()
setSoftTimeoutTailCost(softtimeout::TailCost::lookup(_indexEnv.getProperties()));
setSoftTimeoutFactor(softtimeout::Factor::lookup(_indexEnv.getProperties()));
set_nearest_neighbor_brute_force_limit(matching::NearestNeighborBruteForceLimit::lookup(_indexEnv.getProperties()));
- set_global_filter_limit(matching::GlobalFilterLimit::lookup(_indexEnv.getProperties()));
+ set_global_filter_lower_limit(matching::GlobalFilterLowerLimit::lookup(_indexEnv.getProperties()));
+ set_global_filter_upper_limit(matching::GlobalFilterUpperLimit::lookup(_indexEnv.getProperties()));
}
void
diff --git a/searchlib/src/vespa/searchlib/fef/ranksetup.h b/searchlib/src/vespa/searchlib/fef/ranksetup.h
index 3e127a1e8b5..75b80f35abe 100644
--- a/searchlib/src/vespa/searchlib/fef/ranksetup.h
+++ b/searchlib/src/vespa/searchlib/fef/ranksetup.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -60,7 +60,8 @@ private:
double _softTimeoutTailCost;
double _softTimeoutFactor;
double _nearest_neighbor_brute_force_limit;
- double _global_filter_limit;
+ double _global_filter_lower_limit;
+ double _global_filter_upper_limit;
public:
@@ -370,8 +371,10 @@ public:
void set_nearest_neighbor_brute_force_limit(double v) { _nearest_neighbor_brute_force_limit = v; }
double get_nearest_neighbor_brute_force_limit() const { return _nearest_neighbor_brute_force_limit; }
- void set_global_filter_limit(double v) { _global_filter_limit = v; }
- double get_global_filter_limit() const { return _global_filter_limit; }
+ void set_global_filter_lower_limit(double v) { _global_filter_lower_limit = v; }
+ double get_global_filter_lower_limit() const { return _global_filter_lower_limit; }
+ void set_global_filter_upper_limit(double v) { _global_filter_upper_limit = v; }
+ double get_global_filter_upper_limit() const { return _global_filter_upper_limit; }
/**
* This method may be used to indicate that certain features
diff --git a/searchlib/src/vespa/searchlib/fef/simpletermdata.cpp b/searchlib/src/vespa/searchlib/fef/simpletermdata.cpp
index 09dce307a5f..ee079ce8239 100644
--- a/searchlib/src/vespa/searchlib/fef/simpletermdata.cpp
+++ b/searchlib/src/vespa/searchlib/fef/simpletermdata.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simpletermdata.h"
diff --git a/searchlib/src/vespa/searchlib/fef/simpletermdata.h b/searchlib/src/vespa/searchlib/fef/simpletermdata.h
index 3d04b964748..2169334e36a 100644
--- a/searchlib/src/vespa/searchlib/fef/simpletermdata.h
+++ b/searchlib/src/vespa/searchlib/fef/simpletermdata.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/simpletermfielddata.cpp b/searchlib/src/vespa/searchlib/fef/simpletermfielddata.cpp
index f173abc7242..78378343b10 100644
--- a/searchlib/src/vespa/searchlib/fef/simpletermfielddata.cpp
+++ b/searchlib/src/vespa/searchlib/fef/simpletermfielddata.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simpletermfielddata.h"
diff --git a/searchlib/src/vespa/searchlib/fef/simpletermfielddata.h b/searchlib/src/vespa/searchlib/fef/simpletermfielddata.h
index 84de88a410a..7a70d484ff3 100644
--- a/searchlib/src/vespa/searchlib/fef/simpletermfielddata.h
+++ b/searchlib/src/vespa/searchlib/fef/simpletermfielddata.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/symmetrictable.cpp b/searchlib/src/vespa/searchlib/fef/symmetrictable.cpp
index 1055c26c45d..4e96c07e14b 100644
--- a/searchlib/src/vespa/searchlib/fef/symmetrictable.cpp
+++ b/searchlib/src/vespa/searchlib/fef/symmetrictable.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "symmetrictable.h"
diff --git a/searchlib/src/vespa/searchlib/fef/symmetrictable.h b/searchlib/src/vespa/searchlib/fef/symmetrictable.h
index 73b71307b2a..0fdb7568d49 100644
--- a/searchlib/src/vespa/searchlib/fef/symmetrictable.h
+++ b/searchlib/src/vespa/searchlib/fef/symmetrictable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/table.cpp b/searchlib/src/vespa/searchlib/fef/table.cpp
index 5d628fe9ed5..8df14bb78e4 100644
--- a/searchlib/src/vespa/searchlib/fef/table.cpp
+++ b/searchlib/src/vespa/searchlib/fef/table.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "table.h"
#include <limits>
diff --git a/searchlib/src/vespa/searchlib/fef/table.h b/searchlib/src/vespa/searchlib/fef/table.h
index d7c00040d12..e6a712eea59 100644
--- a/searchlib/src/vespa/searchlib/fef/table.h
+++ b/searchlib/src/vespa/searchlib/fef/table.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/tablemanager.cpp b/searchlib/src/vespa/searchlib/fef/tablemanager.cpp
index 1aa7d4a14e9..6169e712c37 100644
--- a/searchlib/src/vespa/searchlib/fef/tablemanager.cpp
+++ b/searchlib/src/vespa/searchlib/fef/tablemanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tablemanager.h"
diff --git a/searchlib/src/vespa/searchlib/fef/tablemanager.h b/searchlib/src/vespa/searchlib/fef/tablemanager.h
index 4b83cb7c7a0..5c4fc661e50 100644
--- a/searchlib/src/vespa/searchlib/fef/tablemanager.h
+++ b/searchlib/src/vespa/searchlib/fef/tablemanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.cpp b/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.cpp
index 7e3e0f5e4bc..77c2aa3072a 100644
--- a/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.cpp
+++ b/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "termfieldmatchdata.h"
#include <limits>
diff --git a/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.h b/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.h
index 633d85f98df..2ecae9f58c6 100644
--- a/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.h
+++ b/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.h b/searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.h
index 54ae3e850da..13a78a445e8 100644
--- a/searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.h
+++ b/searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/termfieldmatchdataposition.cpp b/searchlib/src/vespa/searchlib/fef/termfieldmatchdataposition.cpp
index 333b9eeaf8e..5b8dc76d348 100644
--- a/searchlib/src/vespa/searchlib/fef/termfieldmatchdataposition.cpp
+++ b/searchlib/src/vespa/searchlib/fef/termfieldmatchdataposition.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "termfieldmatchdataposition.h"
diff --git a/searchlib/src/vespa/searchlib/fef/termfieldmatchdataposition.h b/searchlib/src/vespa/searchlib/fef/termfieldmatchdataposition.h
index 8e2f4c62193..edc32cda31f 100644
--- a/searchlib/src/vespa/searchlib/fef/termfieldmatchdataposition.h
+++ b/searchlib/src/vespa/searchlib/fef/termfieldmatchdataposition.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/termmatchdatamerger.cpp b/searchlib/src/vespa/searchlib/fef/termmatchdatamerger.cpp
index 11a5dd80b4c..6b9c5a31c97 100644
--- a/searchlib/src/vespa/searchlib/fef/termmatchdatamerger.cpp
+++ b/searchlib/src/vespa/searchlib/fef/termmatchdatamerger.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "termmatchdatamerger.h"
#include <algorithm>
diff --git a/searchlib/src/vespa/searchlib/fef/termmatchdatamerger.h b/searchlib/src/vespa/searchlib/fef/termmatchdatamerger.h
index fb129b792b8..576dfc9a22c 100644
--- a/searchlib/src/vespa/searchlib/fef/termmatchdatamerger.h
+++ b/searchlib/src/vespa/searchlib/fef/termmatchdatamerger.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/test/CMakeLists.txt b/searchlib/src/vespa/searchlib/fef/test/CMakeLists.txt
index 17179186dfd..1637e9fa581 100644
--- a/searchlib/src/vespa/searchlib/fef/test/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/fef/test/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_fef_test OBJECT
SOURCES
attribute_map.cpp
diff --git a/searchlib/src/vespa/searchlib/fef/test/attribute_map.cpp b/searchlib/src/vespa/searchlib/fef/test/attribute_map.cpp
index b0bd9d2229f..4cd727c6d2d 100644
--- a/searchlib/src/vespa/searchlib/fef/test/attribute_map.cpp
+++ b/searchlib/src/vespa/searchlib/fef/test/attribute_map.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_map.h"
diff --git a/searchlib/src/vespa/searchlib/fef/test/attribute_map.h b/searchlib/src/vespa/searchlib/fef/test/attribute_map.h
index 0f274fb77b8..8e85c028686 100644
--- a/searchlib/src/vespa/searchlib/fef/test/attribute_map.h
+++ b/searchlib/src/vespa/searchlib/fef/test/attribute_map.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mock_attribute_context.h"
#include <vespa/searchcommon/attribute/iattributecontext.h>
diff --git a/searchlib/src/vespa/searchlib/fef/test/dummy_dependency_handler.cpp b/searchlib/src/vespa/searchlib/fef/test/dummy_dependency_handler.cpp
index 4fd36a69c71..7963e740200 100644
--- a/searchlib/src/vespa/searchlib/fef/test/dummy_dependency_handler.cpp
+++ b/searchlib/src/vespa/searchlib/fef/test/dummy_dependency_handler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dummy_dependency_handler.h"
diff --git a/searchlib/src/vespa/searchlib/fef/test/dummy_dependency_handler.h b/searchlib/src/vespa/searchlib/fef/test/dummy_dependency_handler.h
index ca70d0943cf..aed13094fd4 100644
--- a/searchlib/src/vespa/searchlib/fef/test/dummy_dependency_handler.h
+++ b/searchlib/src/vespa/searchlib/fef/test/dummy_dependency_handler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/test/featuretest.cpp b/searchlib/src/vespa/searchlib/fef/test/featuretest.cpp
index e5a6232ed54..6a2feaf14fa 100644
--- a/searchlib/src/vespa/searchlib/fef/test/featuretest.cpp
+++ b/searchlib/src/vespa/searchlib/fef/test/featuretest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "featuretest.h"
#include <vespa/searchlib/fef/utils.h>
diff --git a/searchlib/src/vespa/searchlib/fef/test/featuretest.h b/searchlib/src/vespa/searchlib/fef/test/featuretest.h
index e354884c110..2593f7396a9 100644
--- a/searchlib/src/vespa/searchlib/fef/test/featuretest.h
+++ b/searchlib/src/vespa/searchlib/fef/test/featuretest.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "indexenvironment.h"
diff --git a/searchlib/src/vespa/searchlib/fef/test/ftlib.cpp b/searchlib/src/vespa/searchlib/fef/test/ftlib.cpp
index 70fe50d23d5..879f3a97cfa 100644
--- a/searchlib/src/vespa/searchlib/fef/test/ftlib.cpp
+++ b/searchlib/src/vespa/searchlib/fef/test/ftlib.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "ftlib.h"
#include "dummy_dependency_handler.h"
diff --git a/searchlib/src/vespa/searchlib/fef/test/ftlib.h b/searchlib/src/vespa/searchlib/fef/test/ftlib.h
index 0f1a5d8db45..437f2d330ec 100644
--- a/searchlib/src/vespa/searchlib/fef/test/ftlib.h
+++ b/searchlib/src/vespa/searchlib/fef/test/ftlib.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "featuretest.h"
diff --git a/searchlib/src/vespa/searchlib/fef/test/indexenvironment.cpp b/searchlib/src/vespa/searchlib/fef/test/indexenvironment.cpp
index 85b20710f7a..daa9054dff2 100644
--- a/searchlib/src/vespa/searchlib/fef/test/indexenvironment.cpp
+++ b/searchlib/src/vespa/searchlib/fef/test/indexenvironment.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "indexenvironment.h"
#include <vespa/searchlib/attribute/attributefactory.h>
diff --git a/searchlib/src/vespa/searchlib/fef/test/indexenvironment.h b/searchlib/src/vespa/searchlib/fef/test/indexenvironment.h
index ca63117971a..f204dd06aed 100644
--- a/searchlib/src/vespa/searchlib/fef/test/indexenvironment.h
+++ b/searchlib/src/vespa/searchlib/fef/test/indexenvironment.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "attribute_map.h"
diff --git a/searchlib/src/vespa/searchlib/fef/test/indexenvironmentbuilder.cpp b/searchlib/src/vespa/searchlib/fef/test/indexenvironmentbuilder.cpp
index c0ca3b637b1..9d6d0e42057 100644
--- a/searchlib/src/vespa/searchlib/fef/test/indexenvironmentbuilder.cpp
+++ b/searchlib/src/vespa/searchlib/fef/test/indexenvironmentbuilder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcommon/common/datatype.h>
#include "indexenvironmentbuilder.h"
diff --git a/searchlib/src/vespa/searchlib/fef/test/indexenvironmentbuilder.h b/searchlib/src/vespa/searchlib/fef/test/indexenvironmentbuilder.h
index edfa78e20f0..4e909b87d5c 100644
--- a/searchlib/src/vespa/searchlib/fef/test/indexenvironmentbuilder.h
+++ b/searchlib/src/vespa/searchlib/fef/test/indexenvironmentbuilder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "indexenvironment.h"
diff --git a/searchlib/src/vespa/searchlib/fef/test/labels.cpp b/searchlib/src/vespa/searchlib/fef/test/labels.cpp
index 83b9cf4bc11..ee937600ac2 100644
--- a/searchlib/src/vespa/searchlib/fef/test/labels.cpp
+++ b/searchlib/src/vespa/searchlib/fef/test/labels.cpp
@@ -1,3 +1,3 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "labels.h"
diff --git a/searchlib/src/vespa/searchlib/fef/test/labels.h b/searchlib/src/vespa/searchlib/fef/test/labels.h
index 2ed8730a4a4..b76a145f922 100644
--- a/searchlib/src/vespa/searchlib/fef/test/labels.h
+++ b/searchlib/src/vespa/searchlib/fef/test/labels.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/fef/properties.h>
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/searchlib/src/vespa/searchlib/fef/test/matchdatabuilder.cpp b/searchlib/src/vespa/searchlib/fef/test/matchdatabuilder.cpp
index 8444d486104..4709c17408a 100644
--- a/searchlib/src/vespa/searchlib/fef/test/matchdatabuilder.cpp
+++ b/searchlib/src/vespa/searchlib/fef/test/matchdatabuilder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "matchdatabuilder.h"
#include <vespa/searchlib/attribute/attributevector.h>
diff --git a/searchlib/src/vespa/searchlib/fef/test/matchdatabuilder.h b/searchlib/src/vespa/searchlib/fef/test/matchdatabuilder.h
index 473c174eccc..f2a1efac751 100644
--- a/searchlib/src/vespa/searchlib/fef/test/matchdatabuilder.h
+++ b/searchlib/src/vespa/searchlib/fef/test/matchdatabuilder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "queryenvironment.h"
diff --git a/searchlib/src/vespa/searchlib/fef/test/mock_attribute_context.cpp b/searchlib/src/vespa/searchlib/fef/test/mock_attribute_context.cpp
index 786140273c5..a94a63f5c33 100644
--- a/searchlib/src/vespa/searchlib/fef/test/mock_attribute_context.cpp
+++ b/searchlib/src/vespa/searchlib/fef/test/mock_attribute_context.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mock_attribute_context.h"
#include "attribute_map.h"
diff --git a/searchlib/src/vespa/searchlib/fef/test/mock_attribute_context.h b/searchlib/src/vespa/searchlib/fef/test/mock_attribute_context.h
index 956c8e453c8..dd16daa3faf 100644
--- a/searchlib/src/vespa/searchlib/fef/test/mock_attribute_context.h
+++ b/searchlib/src/vespa/searchlib/fef/test/mock_attribute_context.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcommon/attribute/iattributecontext.h>
#include <memory>
diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/CMakeLists.txt b/searchlib/src/vespa/searchlib/fef/test/plugin/CMakeLists.txt
index 4d26ed49a9d..f0b18f672c4 100644
--- a/searchlib/src/vespa/searchlib/fef/test/plugin/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/fef/test/plugin/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_fef_test_plugin OBJECT
SOURCES
cfgvalue.cpp
diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/cfgvalue.cpp b/searchlib/src/vespa/searchlib/fef/test/plugin/cfgvalue.cpp
index 8be0961f999..94c521afb40 100644
--- a/searchlib/src/vespa/searchlib/fef/test/plugin/cfgvalue.cpp
+++ b/searchlib/src/vespa/searchlib/fef/test/plugin/cfgvalue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "cfgvalue.h"
#include <vespa/searchlib/fef/properties.h>
diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/cfgvalue.h b/searchlib/src/vespa/searchlib/fef/test/plugin/cfgvalue.h
index 38a70197775..1989b0ca6e5 100644
--- a/searchlib/src/vespa/searchlib/fef/test/plugin/cfgvalue.h
+++ b/searchlib/src/vespa/searchlib/fef/test/plugin/cfgvalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/chain.cpp b/searchlib/src/vespa/searchlib/fef/test/plugin/chain.cpp
index 017b916ad76..0e14d9740bc 100644
--- a/searchlib/src/vespa/searchlib/fef/test/plugin/chain.cpp
+++ b/searchlib/src/vespa/searchlib/fef/test/plugin/chain.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "chain.h"
#include <vespa/vespalib/util/stash.h>
diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/chain.h b/searchlib/src/vespa/searchlib/fef/test/plugin/chain.h
index 430b66c804c..caceebac62e 100644
--- a/searchlib/src/vespa/searchlib/fef/test/plugin/chain.h
+++ b/searchlib/src/vespa/searchlib/fef/test/plugin/chain.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/double.cpp b/searchlib/src/vespa/searchlib/fef/test/plugin/double.cpp
index 6f8ebd57fb0..4a47c7f148e 100644
--- a/searchlib/src/vespa/searchlib/fef/test/plugin/double.cpp
+++ b/searchlib/src/vespa/searchlib/fef/test/plugin/double.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "double.h"
#include <vespa/searchlib/fef/featurenamebuilder.h>
diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/double.h b/searchlib/src/vespa/searchlib/fef/test/plugin/double.h
index 20cc7fe25bf..40a95a0b407 100644
--- a/searchlib/src/vespa/searchlib/fef/test/plugin/double.h
+++ b/searchlib/src/vespa/searchlib/fef/test/plugin/double.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/query.cpp b/searchlib/src/vespa/searchlib/fef/test/plugin/query.cpp
index 1e57d6252ee..150a4859b9b 100644
--- a/searchlib/src/vespa/searchlib/fef/test/plugin/query.cpp
+++ b/searchlib/src/vespa/searchlib/fef/test/plugin/query.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "query.h"
#include <vespa/searchlib/features/valuefeature.h>
diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/query.h b/searchlib/src/vespa/searchlib/fef/test/plugin/query.h
index 40763f9a3e4..9c6ffbcef4e 100644
--- a/searchlib/src/vespa/searchlib/fef/test/plugin/query.h
+++ b/searchlib/src/vespa/searchlib/fef/test/plugin/query.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/setup.cpp b/searchlib/src/vespa/searchlib/fef/test/plugin/setup.cpp
index 1b759b457fe..947b926aa5b 100644
--- a/searchlib/src/vespa/searchlib/fef/test/plugin/setup.cpp
+++ b/searchlib/src/vespa/searchlib/fef/test/plugin/setup.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "cfgvalue.h"
#include "chain.h"
diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/setup.h b/searchlib/src/vespa/searchlib/fef/test/plugin/setup.h
index 04ef054f4ad..c3aa6d03cb6 100644
--- a/searchlib/src/vespa/searchlib/fef/test/plugin/setup.h
+++ b/searchlib/src/vespa/searchlib/fef/test/plugin/setup.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/staticrank.cpp b/searchlib/src/vespa/searchlib/fef/test/plugin/staticrank.cpp
index c5871b23e77..a961e1a4df6 100644
--- a/searchlib/src/vespa/searchlib/fef/test/plugin/staticrank.cpp
+++ b/searchlib/src/vespa/searchlib/fef/test/plugin/staticrank.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "staticrank.h"
#include <vespa/searchcommon/attribute/attributecontent.h>
diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/staticrank.h b/searchlib/src/vespa/searchlib/fef/test/plugin/staticrank.h
index 3c856629e04..8da88c9bd59 100644
--- a/searchlib/src/vespa/searchlib/fef/test/plugin/staticrank.h
+++ b/searchlib/src/vespa/searchlib/fef/test/plugin/staticrank.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/sum.cpp b/searchlib/src/vespa/searchlib/fef/test/plugin/sum.cpp
index 4362a7f0860..a6a6f86c39c 100644
--- a/searchlib/src/vespa/searchlib/fef/test/plugin/sum.cpp
+++ b/searchlib/src/vespa/searchlib/fef/test/plugin/sum.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sum.h"
#include <vespa/searchlib/fef/featurenamebuilder.h>
diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/sum.h b/searchlib/src/vespa/searchlib/fef/test/plugin/sum.h
index b480444def6..1b8a5e4db21 100644
--- a/searchlib/src/vespa/searchlib/fef/test/plugin/sum.h
+++ b/searchlib/src/vespa/searchlib/fef/test/plugin/sum.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/unbox.cpp b/searchlib/src/vespa/searchlib/fef/test/plugin/unbox.cpp
index e30b4893e15..a82f4287d00 100644
--- a/searchlib/src/vespa/searchlib/fef/test/plugin/unbox.cpp
+++ b/searchlib/src/vespa/searchlib/fef/test/plugin/unbox.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "unbox.h"
#include <vespa/vespalib/util/stash.h>
diff --git a/searchlib/src/vespa/searchlib/fef/test/plugin/unbox.h b/searchlib/src/vespa/searchlib/fef/test/plugin/unbox.h
index 8606b440980..8e311d0a173 100644
--- a/searchlib/src/vespa/searchlib/fef/test/plugin/unbox.h
+++ b/searchlib/src/vespa/searchlib/fef/test/plugin/unbox.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/test/queryenvironment.cpp b/searchlib/src/vespa/searchlib/fef/test/queryenvironment.cpp
index d602e74ddfb..e417e3cc681 100644
--- a/searchlib/src/vespa/searchlib/fef/test/queryenvironment.cpp
+++ b/searchlib/src/vespa/searchlib/fef/test/queryenvironment.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "queryenvironment.h"
diff --git a/searchlib/src/vespa/searchlib/fef/test/queryenvironment.h b/searchlib/src/vespa/searchlib/fef/test/queryenvironment.h
index d8d5c802360..3615b3a32d7 100644
--- a/searchlib/src/vespa/searchlib/fef/test/queryenvironment.h
+++ b/searchlib/src/vespa/searchlib/fef/test/queryenvironment.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "indexenvironment.h"
diff --git a/searchlib/src/vespa/searchlib/fef/test/queryenvironmentbuilder.cpp b/searchlib/src/vespa/searchlib/fef/test/queryenvironmentbuilder.cpp
index 67a2eaf5677..ec9875ad63f 100644
--- a/searchlib/src/vespa/searchlib/fef/test/queryenvironmentbuilder.cpp
+++ b/searchlib/src/vespa/searchlib/fef/test/queryenvironmentbuilder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "queryenvironmentbuilder.h"
diff --git a/searchlib/src/vespa/searchlib/fef/test/queryenvironmentbuilder.h b/searchlib/src/vespa/searchlib/fef/test/queryenvironmentbuilder.h
index 36a63b2a9a2..19cf74673a2 100644
--- a/searchlib/src/vespa/searchlib/fef/test/queryenvironmentbuilder.h
+++ b/searchlib/src/vespa/searchlib/fef/test/queryenvironmentbuilder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/fef/matchdatalayout.h>
diff --git a/searchlib/src/vespa/searchlib/fef/test/rankresult.cpp b/searchlib/src/vespa/searchlib/fef/test/rankresult.cpp
index 15d4ce317cc..4de4c56e3ac 100644
--- a/searchlib/src/vespa/searchlib/fef/test/rankresult.cpp
+++ b/searchlib/src/vespa/searchlib/fef/test/rankresult.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rankresult.h"
#include <cmath>
#include <ostream>
diff --git a/searchlib/src/vespa/searchlib/fef/test/rankresult.h b/searchlib/src/vespa/searchlib/fef/test/rankresult.h
index 8c1efdbb36c..a31fdff5606 100644
--- a/searchlib/src/vespa/searchlib/fef/test/rankresult.h
+++ b/searchlib/src/vespa/searchlib/fef/test/rankresult.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/common/feature.h>
diff --git a/searchlib/src/vespa/searchlib/fef/test/test_features.cpp b/searchlib/src/vespa/searchlib/fef/test/test_features.cpp
index c32776dc88d..a760e80b77f 100644
--- a/searchlib/src/vespa/searchlib/fef/test/test_features.cpp
+++ b/searchlib/src/vespa/searchlib/fef/test/test_features.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include "test_features.h"
diff --git a/searchlib/src/vespa/searchlib/fef/test/test_features.h b/searchlib/src/vespa/searchlib/fef/test/test_features.h
index 60a254064e6..5aa8ed514c2 100644
--- a/searchlib/src/vespa/searchlib/fef/test/test_features.h
+++ b/searchlib/src/vespa/searchlib/fef/test/test_features.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/utils.cpp b/searchlib/src/vespa/searchlib/fef/utils.cpp
index 456060118d7..ef520554b19 100644
--- a/searchlib/src/vespa/searchlib/fef/utils.cpp
+++ b/searchlib/src/vespa/searchlib/fef/utils.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "utils.h"
#include <vector>
diff --git a/searchlib/src/vespa/searchlib/fef/utils.h b/searchlib/src/vespa/searchlib/fef/utils.h
index 4195ebe6819..0334e3001fd 100644
--- a/searchlib/src/vespa/searchlib/fef/utils.h
+++ b/searchlib/src/vespa/searchlib/fef/utils.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/fef/verify_feature.cpp b/searchlib/src/vespa/searchlib/fef/verify_feature.cpp
index 92234ed391c..d61d7faef0f 100644
--- a/searchlib/src/vespa/searchlib/fef/verify_feature.cpp
+++ b/searchlib/src/vespa/searchlib/fef/verify_feature.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "verify_feature.h"
#include "blueprintresolver.h"
diff --git a/searchlib/src/vespa/searchlib/fef/verify_feature.h b/searchlib/src/vespa/searchlib/fef/verify_feature.h
index 27da1fa431d..5c84403fc8a 100644
--- a/searchlib/src/vespa/searchlib/fef/verify_feature.h
+++ b/searchlib/src/vespa/searchlib/fef/verify_feature.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/grouping/CMakeLists.txt b/searchlib/src/vespa/searchlib/grouping/CMakeLists.txt
index 8a697bff53d..00eff08f333 100644
--- a/searchlib/src/vespa/searchlib/grouping/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/grouping/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_grouping OBJECT
SOURCES
collect.cpp
diff --git a/searchlib/src/vespa/searchlib/grouping/collect.cpp b/searchlib/src/vespa/searchlib/grouping/collect.cpp
index 9b5a9a2aab1..1e8d20dafee 100644
--- a/searchlib/src/vespa/searchlib/grouping/collect.cpp
+++ b/searchlib/src/vespa/searchlib/grouping/collect.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "collect.h"
#include <vespa/vespalib/util/array.hpp>
diff --git a/searchlib/src/vespa/searchlib/grouping/collect.h b/searchlib/src/vespa/searchlib/grouping/collect.h
index 7d89d471b89..6d899723f1a 100644
--- a/searchlib/src/vespa/searchlib/grouping/collect.h
+++ b/searchlib/src/vespa/searchlib/grouping/collect.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "groupref.h"
diff --git a/searchlib/src/vespa/searchlib/grouping/forcelink.hpp b/searchlib/src/vespa/searchlib/grouping/forcelink.hpp
index 494b55e83b4..043ef22d757 100644
--- a/searchlib/src/vespa/searchlib/grouping/forcelink.hpp
+++ b/searchlib/src/vespa/searchlib/grouping/forcelink.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
void forcelink_file_searchlib_grouping_groupandcollectengine();
diff --git a/searchlib/src/vespa/searchlib/grouping/groupandcollectengine.cpp b/searchlib/src/vespa/searchlib/grouping/groupandcollectengine.cpp
index c1ce72850cc..4915e6e6248 100644
--- a/searchlib/src/vespa/searchlib/grouping/groupandcollectengine.cpp
+++ b/searchlib/src/vespa/searchlib/grouping/groupandcollectengine.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "groupandcollectengine.h"
namespace search {
diff --git a/searchlib/src/vespa/searchlib/grouping/groupandcollectengine.h b/searchlib/src/vespa/searchlib/grouping/groupandcollectengine.h
index a3f26fcfcfc..d57b31bd735 100644
--- a/searchlib/src/vespa/searchlib/grouping/groupandcollectengine.h
+++ b/searchlib/src/vespa/searchlib/grouping/groupandcollectengine.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "groupengine.h"
diff --git a/searchlib/src/vespa/searchlib/grouping/groupengine.cpp b/searchlib/src/vespa/searchlib/grouping/groupengine.cpp
index b652d5a840d..180b4d88887 100644
--- a/searchlib/src/vespa/searchlib/grouping/groupengine.cpp
+++ b/searchlib/src/vespa/searchlib/grouping/groupengine.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "groupengine.h"
#include <vespa/searchlib/expression/nullresultnode.h>
diff --git a/searchlib/src/vespa/searchlib/grouping/groupengine.h b/searchlib/src/vespa/searchlib/grouping/groupengine.h
index 5167c37560a..3a6a680ea1c 100644
--- a/searchlib/src/vespa/searchlib/grouping/groupengine.h
+++ b/searchlib/src/vespa/searchlib/grouping/groupengine.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/aggregation/groupinglevel.h>
diff --git a/searchlib/src/vespa/searchlib/grouping/groupingengine.cpp b/searchlib/src/vespa/searchlib/grouping/groupingengine.cpp
index e494d827390..2a46037aaf8 100644
--- a/searchlib/src/vespa/searchlib/grouping/groupingengine.cpp
+++ b/searchlib/src/vespa/searchlib/grouping/groupingengine.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "groupingengine.h"
#include "groupandcollectengine.h"
diff --git a/searchlib/src/vespa/searchlib/grouping/groupingengine.h b/searchlib/src/vespa/searchlib/grouping/groupingengine.h
index 8e4a5a6da29..cf5bcaa63f8 100644
--- a/searchlib/src/vespa/searchlib/grouping/groupingengine.h
+++ b/searchlib/src/vespa/searchlib/grouping/groupingengine.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/aggregation/grouping.h>
diff --git a/searchlib/src/vespa/searchlib/grouping/groupref.h b/searchlib/src/vespa/searchlib/grouping/groupref.h
index c00d9f4b9ad..49e56ed5bed 100644
--- a/searchlib/src/vespa/searchlib/grouping/groupref.h
+++ b/searchlib/src/vespa/searchlib/grouping/groupref.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <stdint.h>
diff --git a/searchlib/src/vespa/searchlib/grouping/hyperloglog.h b/searchlib/src/vespa/searchlib/grouping/hyperloglog.h
index 2206f4ccbe1..4e61831a8b7 100644
--- a/searchlib/src/vespa/searchlib/grouping/hyperloglog.h
+++ b/searchlib/src/vespa/searchlib/grouping/hyperloglog.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/grouping/sketch.h b/searchlib/src/vespa/searchlib/grouping/sketch.h
index a872e82bedb..149f24c108f 100644
--- a/searchlib/src/vespa/searchlib/grouping/sketch.h
+++ b/searchlib/src/vespa/searchlib/grouping/sketch.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/index/CMakeLists.txt b/searchlib/src/vespa/searchlib/index/CMakeLists.txt
index 71dd2fa1ddf..00a06363596 100644
--- a/searchlib/src/vespa/searchlib/index/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/index/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_searchlib_index OBJECT
SOURCES
dictionaryfile.cpp
diff --git a/searchlib/src/vespa/searchlib/index/bitvectorkeys.h b/searchlib/src/vespa/searchlib/index/bitvectorkeys.h
index 3bae94ba554..cacb0f59721 100644
--- a/searchlib/src/vespa/searchlib/index/bitvectorkeys.h
+++ b/searchlib/src/vespa/searchlib/index/bitvectorkeys.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/index/dictionaryfile.cpp b/searchlib/src/vespa/searchlib/index/dictionaryfile.cpp
index df2f81d6d1a..7c12d2b9659 100644
--- a/searchlib/src/vespa/searchlib/index/dictionaryfile.cpp
+++ b/searchlib/src/vespa/searchlib/index/dictionaryfile.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dictionaryfile.h"
#include <vespa/fastos/file.h>
diff --git a/searchlib/src/vespa/searchlib/index/dictionaryfile.h b/searchlib/src/vespa/searchlib/index/dictionaryfile.h
index 8a2a216cae6..5063143d323 100644
--- a/searchlib/src/vespa/searchlib/index/dictionaryfile.h
+++ b/searchlib/src/vespa/searchlib/index/dictionaryfile.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "postinglistcounts.h"
diff --git a/searchlib/src/vespa/searchlib/index/docbuilder.cpp b/searchlib/src/vespa/searchlib/index/docbuilder.cpp
index 47781b3556c..6e7a87dc713 100644
--- a/searchlib/src/vespa/searchlib/index/docbuilder.cpp
+++ b/searchlib/src/vespa/searchlib/index/docbuilder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "docbuilder.h"
#include <vespa/document/datatype/urldatatype.h>
diff --git a/searchlib/src/vespa/searchlib/index/docbuilder.h b/searchlib/src/vespa/searchlib/index/docbuilder.h
index 2bb041ff6cb..2b60446bd4e 100644
--- a/searchlib/src/vespa/searchlib/index/docbuilder.h
+++ b/searchlib/src/vespa/searchlib/index/docbuilder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/index/docidandfeatures.cpp b/searchlib/src/vespa/searchlib/index/docidandfeatures.cpp
index ac3c4f4d3a5..f62a4bc7997 100644
--- a/searchlib/src/vespa/searchlib/index/docidandfeatures.cpp
+++ b/searchlib/src/vespa/searchlib/index/docidandfeatures.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "docidandfeatures.h"
#include <vespa/log/log.h>
diff --git a/searchlib/src/vespa/searchlib/index/docidandfeatures.h b/searchlib/src/vespa/searchlib/index/docidandfeatures.h
index 6ee80721038..6b1659771fa 100644
--- a/searchlib/src/vespa/searchlib/index/docidandfeatures.h
+++ b/searchlib/src/vespa/searchlib/index/docidandfeatures.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/common/fslimits.h>
diff --git a/searchlib/src/vespa/searchlib/index/doctypebuilder.cpp b/searchlib/src/vespa/searchlib/index/doctypebuilder.cpp
index d82b5e0f4a5..9f0a44d2b73 100644
--- a/searchlib/src/vespa/searchlib/index/doctypebuilder.cpp
+++ b/searchlib/src/vespa/searchlib/index/doctypebuilder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "doctypebuilder.h"
#include <vespa/document/datatype/urldatatype.h>
diff --git a/searchlib/src/vespa/searchlib/index/doctypebuilder.h b/searchlib/src/vespa/searchlib/index/doctypebuilder.h
index 7c19dceafe8..98b52e955fc 100644
--- a/searchlib/src/vespa/searchlib/index/doctypebuilder.h
+++ b/searchlib/src/vespa/searchlib/index/doctypebuilder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/index/dummyfileheadercontext.cpp b/searchlib/src/vespa/searchlib/index/dummyfileheadercontext.cpp
index adee1820fcc..44354fc9ad3 100644
--- a/searchlib/src/vespa/searchlib/index/dummyfileheadercontext.cpp
+++ b/searchlib/src/vespa/searchlib/index/dummyfileheadercontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dummyfileheadercontext.h"
#include <vespa/vespalib/data/fileheader.h>
diff --git a/searchlib/src/vespa/searchlib/index/dummyfileheadercontext.h b/searchlib/src/vespa/searchlib/index/dummyfileheadercontext.h
index e91ba860c48..b2a9a071455 100644
--- a/searchlib/src/vespa/searchlib/index/dummyfileheadercontext.h
+++ b/searchlib/src/vespa/searchlib/index/dummyfileheadercontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/common/fileheadercontext.h>
diff --git a/searchlib/src/vespa/searchlib/index/indexbuilder.cpp b/searchlib/src/vespa/searchlib/index/indexbuilder.cpp
index d585238107a..3517a28e69e 100644
--- a/searchlib/src/vespa/searchlib/index/indexbuilder.cpp
+++ b/searchlib/src/vespa/searchlib/index/indexbuilder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "indexbuilder.h"
diff --git a/searchlib/src/vespa/searchlib/index/indexbuilder.h b/searchlib/src/vespa/searchlib/index/indexbuilder.h
index cf9df4bd154..3f3bbd37030 100644
--- a/searchlib/src/vespa/searchlib/index/indexbuilder.h
+++ b/searchlib/src/vespa/searchlib/index/indexbuilder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/searchlib/src/vespa/searchlib/index/postinglistcountfile.cpp b/searchlib/src/vespa/searchlib/index/postinglistcountfile.cpp
index 90319970457..f4c38636d01 100644
--- a/searchlib/src/vespa/searchlib/index/postinglistcountfile.cpp
+++ b/searchlib/src/vespa/searchlib/index/postinglistcountfile.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "postinglistcountfile.h"
diff --git a/searchlib/src/vespa/searchlib/index/postinglistcountfile.h b/searchlib/src/vespa/searchlib/index/postinglistcountfile.h
index cf6440fd6fb..47ec202dad1 100644
--- a/searchlib/src/vespa/searchlib/index/postinglistcountfile.h
+++ b/searchlib/src/vespa/searchlib/index/postinglistcountfile.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "postinglistparams.h"
diff --git a/searchlib/src/vespa/searchlib/index/postinglistcounts.cpp b/searchlib/src/vespa/searchlib/index/postinglistcounts.cpp
index 23b0bf6b6a3..7b576f1233f 100644
--- a/searchlib/src/vespa/searchlib/index/postinglistcounts.cpp
+++ b/searchlib/src/vespa/searchlib/index/postinglistcounts.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "postinglistcounts.h"
diff --git a/searchlib/src/vespa/searchlib/index/postinglistcounts.h b/searchlib/src/vespa/searchlib/index/postinglistcounts.h
index 102b61ad927..3d76e8203cb 100644
--- a/searchlib/src/vespa/searchlib/index/postinglistcounts.h
+++ b/searchlib/src/vespa/searchlib/index/postinglistcounts.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vector>
diff --git a/searchlib/src/vespa/searchlib/index/postinglistfile.cpp b/searchlib/src/vespa/searchlib/index/postinglistfile.cpp
index 52c6b85a0b8..15412fcd5f1 100644
--- a/searchlib/src/vespa/searchlib/index/postinglistfile.cpp
+++ b/searchlib/src/vespa/searchlib/index/postinglistfile.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "postinglistfile.h"
#include <vespa/fastos/file.h>
diff --git a/searchlib/src/vespa/searchlib/index/postinglistfile.h b/searchlib/src/vespa/searchlib/index/postinglistfile.h
index 1569bdd13b6..d731b3f0f67 100644
--- a/searchlib/src/vespa/searchlib/index/postinglistfile.h
+++ b/searchlib/src/vespa/searchlib/index/postinglistfile.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "postinglistcounts.h"
diff --git a/searchlib/src/vespa/searchlib/index/postinglisthandle.cpp b/searchlib/src/vespa/searchlib/index/postinglisthandle.cpp
index 570ebdf3d7c..ba1dcb9c87a 100644
--- a/searchlib/src/vespa/searchlib/index/postinglisthandle.cpp
+++ b/searchlib/src/vespa/searchlib/index/postinglisthandle.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "postinglisthandle.h"
#include <vespa/searchlib/index/postinglistfile.h>
diff --git a/searchlib/src/vespa/searchlib/index/postinglisthandle.h b/searchlib/src/vespa/searchlib/index/postinglisthandle.h
index a9176d7cf13..1fe35f318fb 100644
--- a/searchlib/src/vespa/searchlib/index/postinglisthandle.h
+++ b/searchlib/src/vespa/searchlib/index/postinglisthandle.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/index/postinglistcounts.h>
diff --git a/searchlib/src/vespa/searchlib/index/postinglistparams.cpp b/searchlib/src/vespa/searchlib/index/postinglistparams.cpp
index 570bd997db3..74e8f731f6f 100644
--- a/searchlib/src/vespa/searchlib/index/postinglistparams.cpp
+++ b/searchlib/src/vespa/searchlib/index/postinglistparams.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "postinglistparams.h"
#include <sstream>
diff --git a/searchlib/src/vespa/searchlib/index/postinglistparams.h b/searchlib/src/vespa/searchlib/index/postinglistparams.h
index e75ecd29056..9797eef5278 100644
--- a/searchlib/src/vespa/searchlib/index/postinglistparams.h
+++ b/searchlib/src/vespa/searchlib/index/postinglistparams.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <map>
diff --git a/searchlib/src/vespa/searchlib/index/schemautil.cpp b/searchlib/src/vespa/searchlib/index/schemautil.cpp
index 57a90892d4f..baab37b72e0 100644
--- a/searchlib/src/vespa/searchlib/index/schemautil.cpp
+++ b/searchlib/src/vespa/searchlib/index/schemautil.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "schemautil.h"
#include <set>
diff --git a/searchlib/src/vespa/searchlib/index/schemautil.h b/searchlib/src/vespa/searchlib/index/schemautil.h
index 2e77aa67ad4..fc61c10de0a 100644
--- a/searchlib/src/vespa/searchlib/index/schemautil.h
+++ b/searchlib/src/vespa/searchlib/index/schemautil.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/memoryindex/CMakeLists.txt b/searchlib/src/vespa/searchlib/memoryindex/CMakeLists.txt
index c19596692cc..5c15a029c0a 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/memoryindex/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_memoryindex OBJECT
SOURCES
compact_words_store.cpp
diff --git a/searchlib/src/vespa/searchlib/memoryindex/compact_words_store.cpp b/searchlib/src/vespa/searchlib/memoryindex/compact_words_store.cpp
index 1cda712dd86..323ac8a7327 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/compact_words_store.cpp
+++ b/searchlib/src/vespa/searchlib/memoryindex/compact_words_store.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "compact_words_store.h"
#include <vespa/vespalib/datastore/datastore.hpp>
diff --git a/searchlib/src/vespa/searchlib/memoryindex/compact_words_store.h b/searchlib/src/vespa/searchlib/memoryindex/compact_words_store.h
index ff11cd9b841..42ce3581859 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/compact_words_store.h
+++ b/searchlib/src/vespa/searchlib/memoryindex/compact_words_store.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/datastore/datastore.h>
diff --git a/searchlib/src/vespa/searchlib/memoryindex/document_inverter.cpp b/searchlib/src/vespa/searchlib/memoryindex/document_inverter.cpp
index a51b18e3640..525bc4306ec 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/document_inverter.cpp
+++ b/searchlib/src/vespa/searchlib/memoryindex/document_inverter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_inverter.h"
#include "i_field_index_collection.h"
diff --git a/searchlib/src/vespa/searchlib/memoryindex/document_inverter.h b/searchlib/src/vespa/searchlib/memoryindex/document_inverter.h
index a1325b7d51d..7ab80e1a2e5 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/document_inverter.h
+++ b/searchlib/src/vespa/searchlib/memoryindex/document_inverter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/memoryindex/feature_store.cpp b/searchlib/src/vespa/searchlib/memoryindex/feature_store.cpp
index 1a24615fdf0..42b260db9bd 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/feature_store.cpp
+++ b/searchlib/src/vespa/searchlib/memoryindex/feature_store.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "feature_store.h"
#include <vespa/searchlib/index/schemautil.h>
diff --git a/searchlib/src/vespa/searchlib/memoryindex/feature_store.h b/searchlib/src/vespa/searchlib/memoryindex/feature_store.h
index e7fb472d049..2ad1fd78f07 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/feature_store.h
+++ b/searchlib/src/vespa/searchlib/memoryindex/feature_store.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/memoryindex/field_index.cpp b/searchlib/src/vespa/searchlib/memoryindex/field_index.cpp
index c052c9410e2..2a026704a0e 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/field_index.cpp
+++ b/searchlib/src/vespa/searchlib/memoryindex/field_index.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "field_index.h"
#include "ordered_field_index_inserter.h"
diff --git a/searchlib/src/vespa/searchlib/memoryindex/field_index.h b/searchlib/src/vespa/searchlib/memoryindex/field_index.h
index 65205644d0c..988b7d723f1 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/field_index.h
+++ b/searchlib/src/vespa/searchlib/memoryindex/field_index.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/memoryindex/field_index_collection.cpp b/searchlib/src/vespa/searchlib/memoryindex/field_index_collection.cpp
index ea67ede77c2..5f4d02d23db 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/field_index_collection.cpp
+++ b/searchlib/src/vespa/searchlib/memoryindex/field_index_collection.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "field_index_collection.h"
#include "field_inverter.h"
diff --git a/searchlib/src/vespa/searchlib/memoryindex/field_index_collection.h b/searchlib/src/vespa/searchlib/memoryindex/field_index_collection.h
index f64735cc8ad..7a65195e843 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/field_index_collection.h
+++ b/searchlib/src/vespa/searchlib/memoryindex/field_index_collection.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/memoryindex/field_index_remover.cpp b/searchlib/src/vespa/searchlib/memoryindex/field_index_remover.cpp
index ce7c3783c41..1861544939f 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/field_index_remover.cpp
+++ b/searchlib/src/vespa/searchlib/memoryindex/field_index_remover.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "field_index_remover.h"
#include "i_field_index_remove_listener.h"
diff --git a/searchlib/src/vespa/searchlib/memoryindex/field_index_remover.h b/searchlib/src/vespa/searchlib/memoryindex/field_index_remover.h
index 717f21528bb..f8328d15289 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/field_index_remover.h
+++ b/searchlib/src/vespa/searchlib/memoryindex/field_index_remover.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "compact_words_store.h"
diff --git a/searchlib/src/vespa/searchlib/memoryindex/field_inverter.cpp b/searchlib/src/vespa/searchlib/memoryindex/field_inverter.cpp
index b0330ae9def..cae4190b774 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/field_inverter.cpp
+++ b/searchlib/src/vespa/searchlib/memoryindex/field_inverter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "field_inverter.h"
#include "ordered_field_index_inserter.h"
diff --git a/searchlib/src/vespa/searchlib/memoryindex/field_inverter.h b/searchlib/src/vespa/searchlib/memoryindex/field_inverter.h
index 3a18d0c2f8c..8dd308f1a4d 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/field_inverter.h
+++ b/searchlib/src/vespa/searchlib/memoryindex/field_inverter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/memoryindex/i_field_index_insert_listener.h b/searchlib/src/vespa/searchlib/memoryindex/i_field_index_insert_listener.h
index 40f24dc0af3..cf9dcee2f57 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/i_field_index_insert_listener.h
+++ b/searchlib/src/vespa/searchlib/memoryindex/i_field_index_insert_listener.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/datastore/entryref.h>
diff --git a/searchlib/src/vespa/searchlib/memoryindex/i_field_index_remove_listener.h b/searchlib/src/vespa/searchlib/memoryindex/i_field_index_remove_listener.h
index 4419303a654..de03e5751c9 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/i_field_index_remove_listener.h
+++ b/searchlib/src/vespa/searchlib/memoryindex/i_field_index_remove_listener.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/memoryindex/i_ordered_field_index_inserter.h b/searchlib/src/vespa/searchlib/memoryindex/i_ordered_field_index_inserter.h
index 138211a6cf5..551f15a5d76 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/i_ordered_field_index_inserter.h
+++ b/searchlib/src/vespa/searchlib/memoryindex/i_ordered_field_index_inserter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/memoryindex/memory_index.cpp b/searchlib/src/vespa/searchlib/memoryindex/memory_index.cpp
index 6fad4237187..1574c94e164 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/memory_index.cpp
+++ b/searchlib/src/vespa/searchlib/memoryindex/memory_index.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_inverter.h"
#include "field_index_collection.h"
diff --git a/searchlib/src/vespa/searchlib/memoryindex/memory_index.h b/searchlib/src/vespa/searchlib/memoryindex/memory_index.h
index 47275043bee..83270aaf2ce 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/memory_index.h
+++ b/searchlib/src/vespa/searchlib/memoryindex/memory_index.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/memoryindex/ordered_field_index_inserter.cpp b/searchlib/src/vespa/searchlib/memoryindex/ordered_field_index_inserter.cpp
index 1a52086d68f..f2c56506ebf 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/ordered_field_index_inserter.cpp
+++ b/searchlib/src/vespa/searchlib/memoryindex/ordered_field_index_inserter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "i_field_index_insert_listener.h"
#include "ordered_field_index_inserter.h"
diff --git a/searchlib/src/vespa/searchlib/memoryindex/ordered_field_index_inserter.h b/searchlib/src/vespa/searchlib/memoryindex/ordered_field_index_inserter.h
index 372ad02834a..6fd9578d0bf 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/ordered_field_index_inserter.h
+++ b/searchlib/src/vespa/searchlib/memoryindex/ordered_field_index_inserter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/memoryindex/posting_iterator.cpp b/searchlib/src/vespa/searchlib/memoryindex/posting_iterator.cpp
index 99beca41aac..2b4c1a024d9 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/posting_iterator.cpp
+++ b/searchlib/src/vespa/searchlib/memoryindex/posting_iterator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "posting_iterator.h"
#include <vespa/searchlib/queryeval/iterators.h>
diff --git a/searchlib/src/vespa/searchlib/memoryindex/posting_iterator.h b/searchlib/src/vespa/searchlib/memoryindex/posting_iterator.h
index 056cad90c85..ea513b1dced 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/posting_iterator.h
+++ b/searchlib/src/vespa/searchlib/memoryindex/posting_iterator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/memoryindex/url_field_inverter.cpp b/searchlib/src/vespa/searchlib/memoryindex/url_field_inverter.cpp
index e2206292fc6..8a6efbea080 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/url_field_inverter.cpp
+++ b/searchlib/src/vespa/searchlib/memoryindex/url_field_inverter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "field_inverter.h"
#include "url_field_inverter.h"
diff --git a/searchlib/src/vespa/searchlib/memoryindex/url_field_inverter.h b/searchlib/src/vespa/searchlib/memoryindex/url_field_inverter.h
index 1659e460af3..76f694f2d8b 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/url_field_inverter.h
+++ b/searchlib/src/vespa/searchlib/memoryindex/url_field_inverter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/memoryindex/word_store.cpp b/searchlib/src/vespa/searchlib/memoryindex/word_store.cpp
index e22ce88ebbf..e5ec4ab7808 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/word_store.cpp
+++ b/searchlib/src/vespa/searchlib/memoryindex/word_store.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "word_store.h"
#include <vespa/vespalib/datastore/datastore.hpp>
diff --git a/searchlib/src/vespa/searchlib/memoryindex/word_store.h b/searchlib/src/vespa/searchlib/memoryindex/word_store.h
index 08b33ed2f81..b27ae65d776 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/word_store.h
+++ b/searchlib/src/vespa/searchlib/memoryindex/word_store.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/parsequery/CMakeLists.txt b/searchlib/src/vespa/searchlib/parsequery/CMakeLists.txt
index 481faeecfb6..d112bb008ab 100644
--- a/searchlib/src/vespa/searchlib/parsequery/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/parsequery/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_parsequery OBJECT
SOURCES
parse.cpp
diff --git a/searchlib/src/vespa/searchlib/parsequery/parse.cpp b/searchlib/src/vespa/searchlib/parsequery/parse.cpp
index bf2f4b530ca..e54243d22cd 100644
--- a/searchlib/src/vespa/searchlib/parsequery/parse.cpp
+++ b/searchlib/src/vespa/searchlib/parsequery/parse.cpp
@@ -1,3 +1,3 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "parse.h"
diff --git a/searchlib/src/vespa/searchlib/parsequery/parse.h b/searchlib/src/vespa/searchlib/parsequery/parse.h
index 68e259b92e8..7b9fd610ee5 100644
--- a/searchlib/src/vespa/searchlib/parsequery/parse.h
+++ b/searchlib/src/vespa/searchlib/parsequery/parse.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/parsequery/stackdumpiterator.cpp b/searchlib/src/vespa/searchlib/parsequery/stackdumpiterator.cpp
index 0af36d6bb94..2ec392e0078 100644
--- a/searchlib/src/vespa/searchlib/parsequery/stackdumpiterator.cpp
+++ b/searchlib/src/vespa/searchlib/parsequery/stackdumpiterator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "stackdumpiterator.h"
#include <vespa/vespalib/util/compress.h>
diff --git a/searchlib/src/vespa/searchlib/parsequery/stackdumpiterator.h b/searchlib/src/vespa/searchlib/parsequery/stackdumpiterator.h
index 8a9a28ebacb..5cec16000b7 100644
--- a/searchlib/src/vespa/searchlib/parsequery/stackdumpiterator.h
+++ b/searchlib/src/vespa/searchlib/parsequery/stackdumpiterator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/predicate/CMakeLists.txt b/searchlib/src/vespa/searchlib/predicate/CMakeLists.txt
index 29c74c9819a..8752e70c9f2 100644
--- a/searchlib/src/vespa/searchlib/predicate/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/predicate/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_predicate OBJECT
SOURCES
document_features_store.cpp
diff --git a/searchlib/src/vespa/searchlib/predicate/common.cpp b/searchlib/src/vespa/searchlib/predicate/common.cpp
index 23e921a2a0c..a239a52b0c0 100644
--- a/searchlib/src/vespa/searchlib/predicate/common.cpp
+++ b/searchlib/src/vespa/searchlib/predicate/common.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "common.h"
#include "predicate_hash.h"
diff --git a/searchlib/src/vespa/searchlib/predicate/common.h b/searchlib/src/vespa/searchlib/predicate/common.h
index 5ca346647c7..1d63fa1c479 100644
--- a/searchlib/src/vespa/searchlib/predicate/common.h
+++ b/searchlib/src/vespa/searchlib/predicate/common.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/predicate/document_features_store.cpp b/searchlib/src/vespa/searchlib/predicate/document_features_store.cpp
index ad7d6fe3456..f6b72347c5d 100644
--- a/searchlib/src/vespa/searchlib/predicate/document_features_store.cpp
+++ b/searchlib/src/vespa/searchlib/predicate/document_features_store.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_features_store.h"
#include "predicate_range_expander.h"
@@ -113,8 +113,7 @@ DocumentFeaturesStore::insert(uint64_t featureId, uint32_t docId) {
if (_currDocId != docId) {
auto docsItr = _docs.find(docId);
if (docsItr == _docs.end()) {
- docsItr =
- _docs.insert(std::make_pair(docId, FeatureVector())).first;
+ docsItr = _docs.insert(std::make_pair(docId, FeatureVector())).first;
}
setCurrent(docId, &docsItr->second);
}
@@ -191,7 +190,7 @@ DocumentFeaturesStore::remove(uint32_t doc_id) {
_ranges.erase(range_itr);
}
if (_currDocId == doc_id) {
- setCurrent(0, NULL);
+ setCurrent(0, nullptr);
}
}
diff --git a/searchlib/src/vespa/searchlib/predicate/document_features_store.h b/searchlib/src/vespa/searchlib/predicate/document_features_store.h
index 442249d619a..b5947d506f9 100644
--- a/searchlib/src/vespa/searchlib/predicate/document_features_store.h
+++ b/searchlib/src/vespa/searchlib/predicate/document_features_store.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_bounds_posting_list.h b/searchlib/src/vespa/searchlib/predicate/predicate_bounds_posting_list.h
index 9d2e90af7a5..6e94ec623be 100644
--- a/searchlib/src/vespa/searchlib/predicate/predicate_bounds_posting_list.h
+++ b/searchlib/src/vespa/searchlib/predicate/predicate_bounds_posting_list.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_hash.h b/searchlib/src/vespa/searchlib/predicate/predicate_hash.h
index 864d2391c11..9000d8d509b 100644
--- a/searchlib/src/vespa/searchlib/predicate/predicate_hash.h
+++ b/searchlib/src/vespa/searchlib/predicate/predicate_hash.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_index.cpp b/searchlib/src/vespa/searchlib/predicate/predicate_index.cpp
index 6cbe11e2240..c64c490039b 100644
--- a/searchlib/src/vespa/searchlib/predicate/predicate_index.cpp
+++ b/searchlib/src/vespa/searchlib/predicate/predicate_index.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "predicate_index.h"
#include "predicate_hash.h"
@@ -12,7 +12,6 @@
using vespalib::datastore::EntryRef;
using vespalib::DataBuffer;
-using std::vector;
namespace search::predicate {
@@ -30,13 +29,10 @@ PredicateIndex::addPosting<IntervalWithBounds>(uint64_t feature, uint32_t doc_id
template <typename IntervalT>
void
PredicateIndex::indexDocumentFeatures(uint32_t doc_id, const PredicateIndex::FeatureMap<IntervalT> &interval_map) {
- if (interval_map.empty()) {
- return;
- }
for (const auto &map_entry : interval_map) {
uint64_t feature = map_entry.first;
const auto &interval_list = map_entry.second;
- vespalib::datastore::EntryRef ref = _interval_store.insert(interval_list);
+ EntryRef ref = _interval_store.insert(interval_list);
assert(ref.valid());
addPosting<IntervalT>(feature, doc_id, ref);
_cache.set(feature, doc_id, true);
@@ -53,7 +49,7 @@ class IntervalSerializer : public PostingSerializer<EntryRef> {
const PredicateIntervalStore &_store;
public:
IntervalSerializer(const PredicateIntervalStore &store) : _store(store) {}
- void serialize(const EntryRef &ref, vespalib::DataBuffer &buffer) const override {
+ void serialize(const EntryRef &ref, DataBuffer &buffer) const override {
uint32_t size;
IntervalT single_buf;
const IntervalT *interval = _store.get(ref, size, &single_buf);
@@ -71,7 +67,7 @@ class IntervalDeserializer : public PostingDeserializer<EntryRef> {
PredicateIntervalStore &_store;
public:
IntervalDeserializer(PredicateIntervalStore &store) : _store(store) {}
- EntryRef deserialize(vespalib::DataBuffer &buffer) override {
+ EntryRef deserialize(DataBuffer &buffer) override {
std::vector<IntervalT> intervals;
size_t size = buffer.readInt16();
for (uint32_t i = 0; i < size; ++i) {
@@ -164,7 +160,7 @@ PredicateIndex::indexEmptyDocument(uint32_t doc_id)
namespace {
void
-removeFromIndex(uint64_t feature, uint32_t doc_id, SimpleIndex<vespalib::datastore::EntryRef> &index,
+removeFromIndex(uint64_t feature, uint32_t doc_id, SimpleIndex<EntryRef> &index,
PredicateIntervalStore &interval_store)
{
auto result = index.removeFromPostingList(feature, doc_id);
@@ -177,7 +173,7 @@ removeFromIndex(uint64_t feature, uint32_t doc_id, SimpleIndex<vespalib::datasto
class DocIdIterator : public PopulateInterface::Iterator {
public:
- using BTreeIterator = SimpleIndex<vespalib::datastore::EntryRef>::BTreeIterator;
+ using BTreeIterator = SimpleIndex<EntryRef>::BTreeIterator;
DocIdIterator(BTreeIterator it) : _it(it) { }
int32_t getNext() override {
diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_index.h b/searchlib/src/vespa/searchlib/predicate/predicate_index.h
index 49bf77f2fcc..1bad95c6aa9 100644
--- a/searchlib/src/vespa/searchlib/predicate/predicate_index.h
+++ b/searchlib/src/vespa/searchlib/predicate/predicate_index.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_interval.cpp b/searchlib/src/vespa/searchlib/predicate/predicate_interval.cpp
index d98e8a151dc..f5dcc9f3cc0 100644
--- a/searchlib/src/vespa/searchlib/predicate/predicate_interval.cpp
+++ b/searchlib/src/vespa/searchlib/predicate/predicate_interval.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "predicate_interval.h"
#include <ostream>
diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_interval.h b/searchlib/src/vespa/searchlib/predicate/predicate_interval.h
index f9ff565925c..e797b004860 100644
--- a/searchlib/src/vespa/searchlib/predicate/predicate_interval.h
+++ b/searchlib/src/vespa/searchlib/predicate/predicate_interval.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_interval_posting_list.h b/searchlib/src/vespa/searchlib/predicate/predicate_interval_posting_list.h
index 33e15b2be33..3a5d5840d10 100644
--- a/searchlib/src/vespa/searchlib/predicate/predicate_interval_posting_list.h
+++ b/searchlib/src/vespa/searchlib/predicate/predicate_interval_posting_list.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_interval_store.cpp b/searchlib/src/vespa/searchlib/predicate/predicate_interval_store.cpp
index 13be0f0127b..379c859f6c3 100644
--- a/searchlib/src/vespa/searchlib/predicate/predicate_interval_store.cpp
+++ b/searchlib/src/vespa/searchlib/predicate/predicate_interval_store.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "predicate_interval_store.h"
#include "predicate_interval.h"
diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_interval_store.h b/searchlib/src/vespa/searchlib/predicate/predicate_interval_store.h
index 5f55a2d3d5f..0b3e32ec6b7 100644
--- a/searchlib/src/vespa/searchlib/predicate/predicate_interval_store.h
+++ b/searchlib/src/vespa/searchlib/predicate/predicate_interval_store.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -16,9 +16,9 @@ struct Interval;
*/
class PredicateIntervalStore {
class DataStoreAdapter;
- typedef PredicateRefCache<DataStoreAdapter, 8> RefCacheType;
- typedef vespalib::datastore::DataStoreT<vespalib::datastore::EntryRefT<18, 6>> DataStoreType;
- typedef DataStoreType::RefType RefType;
+ using RefCacheType = PredicateRefCache<DataStoreAdapter, 8>;
+ using DataStoreType = vespalib::datastore::DataStoreT<vespalib::datastore::EntryRefT<18, 6>>;
+ using RefType = DataStoreType::RefType;
using generation_t = vespalib::GenerationHandler::generation_t;
DataStoreType _store;
@@ -90,9 +90,7 @@ public:
*/
template <typename IntervalT>
const IntervalT
- *get(vespalib::datastore::EntryRef btree_ref,
- uint32_t &size_out,
- IntervalT *single_buf) const
+ *get(vespalib::datastore::EntryRef btree_ref, uint32_t &size_out, IntervalT *single_buf) const
{
uint32_t size = btree_ref.ref() >> RefCacheType::SIZE_SHIFT;
RefType data_ref(vespalib::datastore::EntryRef(btree_ref.ref() & RefCacheType::DATA_REF_MASK));
diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_posting_list.h b/searchlib/src/vespa/searchlib/predicate/predicate_posting_list.h
index 50024913dcb..6ac41c62305 100644
--- a/searchlib/src/vespa/searchlib/predicate/predicate_posting_list.h
+++ b/searchlib/src/vespa/searchlib/predicate/predicate_posting_list.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_range_expander.cpp b/searchlib/src/vespa/searchlib/predicate/predicate_range_expander.cpp
index dd79596294c..83449213cdc 100644
--- a/searchlib/src/vespa/searchlib/predicate/predicate_range_expander.cpp
+++ b/searchlib/src/vespa/searchlib/predicate/predicate_range_expander.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "predicate_range_expander.h"
diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_range_expander.h b/searchlib/src/vespa/searchlib/predicate/predicate_range_expander.h
index 1d883b5edf8..99d699b5bf3 100644
--- a/searchlib/src/vespa/searchlib/predicate/predicate_range_expander.h
+++ b/searchlib/src/vespa/searchlib/predicate/predicate_range_expander.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_range_term_expander.h b/searchlib/src/vespa/searchlib/predicate/predicate_range_term_expander.h
index 807d73fbe8c..c6720ee1db2 100644
--- a/searchlib/src/vespa/searchlib/predicate/predicate_range_term_expander.h
+++ b/searchlib/src/vespa/searchlib/predicate/predicate_range_term_expander.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_ref_cache.h b/searchlib/src/vespa/searchlib/predicate/predicate_ref_cache.h
index cd1a2e51cfd..d001ecddb71 100644
--- a/searchlib/src/vespa/searchlib/predicate/predicate_ref_cache.h
+++ b/searchlib/src/vespa/searchlib/predicate/predicate_ref_cache.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_tree_analyzer.cpp b/searchlib/src/vespa/searchlib/predicate/predicate_tree_analyzer.cpp
index dba6ebfb117..fbfb43c705a 100644
--- a/searchlib/src/vespa/searchlib/predicate/predicate_tree_analyzer.cpp
+++ b/searchlib/src/vespa/searchlib/predicate/predicate_tree_analyzer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "predicate_tree_analyzer.h"
#include <vespa/document/predicate/predicate.h>
diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_tree_analyzer.h b/searchlib/src/vespa/searchlib/predicate/predicate_tree_analyzer.h
index 944a8e48905..3a438db2aa1 100644
--- a/searchlib/src/vespa/searchlib/predicate/predicate_tree_analyzer.h
+++ b/searchlib/src/vespa/searchlib/predicate/predicate_tree_analyzer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_tree_annotator.cpp b/searchlib/src/vespa/searchlib/predicate/predicate_tree_annotator.cpp
index 64752f83a20..16067f8e451 100644
--- a/searchlib/src/vespa/searchlib/predicate/predicate_tree_annotator.cpp
+++ b/searchlib/src/vespa/searchlib/predicate/predicate_tree_annotator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "predicate_tree_annotator.h"
#include "predicate_range_expander.h"
@@ -25,13 +25,13 @@ class PredicateTreeAnnotatorImpl {
uint32_t _left_weight;
PredicateTreeAnnotations &_result;
uint64_t _zStar_hash;
- bool _negated;
- bool _final_range_used;
+ bool _negated;
+ bool _final_range_used;
const std::map<std::string, int> &_size_map;
TreeCrumbs _crumbs;
- int64_t _lower_bound;
- int64_t _upper_bound;
- uint16_t _interval_range;
+ int64_t _lower_bound;
+ int64_t _upper_bound;
+ uint16_t _interval_range;
uint32_t makeMarker(uint32_t begin, uint32_t end) {
@@ -54,12 +54,12 @@ public:
void assignIntervalMarkers(const vespalib::slime::Inspector &in);
};
-void PredicateTreeAnnotatorImpl::addZstarIntervalIfNegated(uint32_t cEnd) {
+void
+PredicateTreeAnnotatorImpl::addZstarIntervalIfNegated(uint32_t cEnd) {
if (_negated) {
auto it = _result.interval_map.find(_zStar_hash);
if (it == _result.interval_map.end()) {
- it = _result.interval_map.insert(make_pair(
- _zStar_hash, std::vector<Interval>())).first;
+ it = _result.interval_map.insert(make_pair(_zStar_hash, std::vector<Interval>())).first;
_result.features.push_back(_zStar_hash);
}
auto &intervals = it->second;
@@ -71,10 +71,8 @@ void PredicateTreeAnnotatorImpl::addZstarIntervalIfNegated(uint32_t cEnd) {
}
}
-PredicateTreeAnnotatorImpl::PredicateTreeAnnotatorImpl(
- const map<string, int> &size_map,
- PredicateTreeAnnotations &result,
- int64_t lower_bound, int64_t upper_bound, uint16_t interval_range)
+PredicateTreeAnnotatorImpl::PredicateTreeAnnotatorImpl(const map<string, int> &size_map, PredicateTreeAnnotations &result,
+ int64_t lower_bound, int64_t upper_bound, uint16_t interval_range)
: _begin(MIN_INTERVAL),
_end(interval_range),
_left_weight(0),
@@ -86,10 +84,12 @@ PredicateTreeAnnotatorImpl::PredicateTreeAnnotatorImpl(
_crumbs(),
_lower_bound(lower_bound),
_upper_bound(upper_bound),
- _interval_range(interval_range) {
+ _interval_range(interval_range)
+{
}
-long getType(const Inspector &in, bool negated) {
+long
+getType(const Inspector &in, bool negated) {
long type = in[Predicate::NODE_TYPE].asLong();
if (negated) {
if (type == Predicate::TYPE_CONJUNCTION) {
@@ -101,12 +101,14 @@ long getType(const Inspector &in, bool negated) {
return type;
}
-void PredicateTreeAnnotatorImpl::assignIntervalMarkers(const Inspector &in) {
+void
+PredicateTreeAnnotatorImpl::assignIntervalMarkers(const Inspector &in) {
+ const Inspector& in_children = in[Predicate::CHILDREN];
switch (getType(in, _negated)) {
case Predicate::TYPE_CONJUNCTION: {
int crumb_size = _crumbs.size();
uint32_t curr = _begin;
- size_t child_count = in[Predicate::CHILDREN].children();
+ size_t child_count = in_children.children();
uint32_t begin = _begin;
uint32_t end = _end;
for (size_t i = 0; i < child_count; ++i) {
@@ -114,7 +116,7 @@ void PredicateTreeAnnotatorImpl::assignIntervalMarkers(const Inspector &in) {
if (i == child_count - 1) { // Last child (may also be the only?)
_begin = curr;
_end = end;
- assignIntervalMarkers(in[Predicate::CHILDREN][i]);
+ assignIntervalMarkers(in_children[i]);
// No need to update/touch curr
} else if (i == 0) { // First child
auto it = _size_map.find(_crumbs.getCrumb());
@@ -123,7 +125,7 @@ void PredicateTreeAnnotatorImpl::assignIntervalMarkers(const Inspector &in) {
uint32_t next = _left_weight + child_size + 1;
_begin = curr;
_end = next - 1;
- assignIntervalMarkers(in[Predicate::CHILDREN][i]);
+ assignIntervalMarkers(in_children[i]);
curr = next;
} else { // Middle children
auto it = _size_map.find(_crumbs.getCrumb());
@@ -132,7 +134,7 @@ void PredicateTreeAnnotatorImpl::assignIntervalMarkers(const Inspector &in) {
uint32_t next = curr + child_size;
_begin = curr;
_end = next - 1;
- assignIntervalMarkers(in[Predicate::CHILDREN][i]);
+ assignIntervalMarkers(in_children[i]);
curr = next;
}
_crumbs.resize(crumb_size);
@@ -144,9 +146,9 @@ void PredicateTreeAnnotatorImpl::assignIntervalMarkers(const Inspector &in) {
// All OR children will have the same {begin, end} values, and
// the values will be same as that of the parent OR node
int crumb_size = _crumbs.size();
- for (size_t i = 0; i < in[Predicate::CHILDREN].children(); ++i) {
+ for (size_t i = 0; i < in_children.children(); ++i) {
_crumbs.setChild(i, 'o');
- assignIntervalMarkers(in[Predicate::CHILDREN][i]);
+ assignIntervalMarkers(in_children[i]);
_crumbs.resize(crumb_size);
}
break;
@@ -157,17 +159,16 @@ void PredicateTreeAnnotatorImpl::assignIntervalMarkers(const Inspector &in) {
string label(label_mem.data, label_mem.size);
label.push_back('=');
const size_t prefix_size = label.size();
- for (size_t i = 0; i < in[Predicate::SET].children(); ++i) {
- Memory value = in[Predicate::SET][i].asString();
+ const Inspector& in_set = in[Predicate::SET];
+ for (size_t i = 0; i < in_set.children(); ++i) {
+ Memory value = in_set[i].asString();
label.resize(prefix_size);
label.append(value.data, value.size);
uint64_t hash = PredicateHash::hash64(label);
- if (_result.interval_map.find(hash)
- == _result.interval_map.end()) {
+ if (_result.interval_map.find(hash) == _result.interval_map.end()) {
_result.features.push_back(hash);
}
- _result.interval_map[hash].push_back(
- { makeMarker(_begin, _negated? cEnd : _end) });
+ _result.interval_map[hash].push_back({ makeMarker(_begin, _negated? cEnd : _end) });
}
addZstarIntervalIfNegated(cEnd);
_left_weight += 1;
@@ -175,40 +176,37 @@ void PredicateTreeAnnotatorImpl::assignIntervalMarkers(const Inspector &in) {
}
case Predicate::TYPE_FEATURE_RANGE: {
uint32_t cEnd = _negated? getCEnd() : 0;
- for (size_t i = 0; i < in[Predicate::HASHED_PARTITIONS].children();
- ++i) {
- uint64_t hash = in[Predicate::HASHED_PARTITIONS][i].asLong();
- _result.interval_map[hash].push_back(
- { makeMarker(_begin, _negated? cEnd : _end) });
+ const Inspector& in_hashed_partitions = in[Predicate::HASHED_PARTITIONS];
+ for (size_t i = 0; i < in_hashed_partitions.children(); ++i) {
+ uint64_t hash = in_hashed_partitions[i].asLong();
+ _result.interval_map[hash].push_back({ makeMarker(_begin, _negated? cEnd : _end) });
}
- const Inspector& in_hashed_edges =
- in[Predicate::HASHED_EDGE_PARTITIONS];
+ const Inspector& in_hashed_edges = in[Predicate::HASHED_EDGE_PARTITIONS];
for (size_t i = 0; i < in_hashed_edges.children(); ++i){
const Inspector& child = in_hashed_edges[i];
uint64_t hash = child[Predicate::HASH].asLong();
uint32_t payload = child[Predicate::PAYLOAD].asLong();
- _result.bounds_map[hash].push_back(
- { makeMarker(_begin, _negated? cEnd : _end), payload });
+ _result.bounds_map[hash].push_back({ makeMarker(_begin, _negated? cEnd : _end), payload });
}
- uint32_t hash_count = in[Predicate::HASHED_PARTITIONS].children() +
- in_hashed_edges.children();
- if (hash_count < 3) { // three features takes more space than
- // one stored range.
- for (size_t i = 0; i < in[Predicate::HASHED_PARTITIONS].children();
- ++i) {
- _result.features.push_back(in[Predicate::HASHED_PARTITIONS][i]
- .asLong());
+ uint32_t hash_count = in_hashed_partitions.children() + in_hashed_edges.children();
+ if (hash_count < 3) { // three features takes more space than one stored range.
+ for (size_t i = 0; i < in_hashed_partitions.children(); ++i) {
+ _result.features.push_back(in_hashed_partitions[i].asLong());
}
for (size_t i = 0; i < in_hashed_edges.children(); ++i) {
- _result.features.push_back(in_hashed_edges[i].asLong());
+ const Inspector& child = in_hashed_edges[i];
+ uint64_t hash = child[Predicate::HASH].asLong();
+ _result.features.push_back(hash);
}
} else {
- bool has_min = in[Predicate::RANGE_MIN].valid();
- bool has_max = in[Predicate::RANGE_MAX].valid();
+ const Inspector& in_min = in[Predicate::RANGE_MIN];
+ const Inspector& in_max = in[Predicate::RANGE_MAX];
+ bool has_min = in_min.valid();
+ bool has_max = in_max.valid();
_result.range_features.push_back(
{in[Predicate::KEY].asString(),
- has_min? in[Predicate::RANGE_MIN].asLong() : _lower_bound,
- has_max? in[Predicate::RANGE_MAX].asLong() : _upper_bound
+ has_min? in_min.asLong() : _lower_bound,
+ has_max? in_max.asLong() : _upper_bound
});
}
addZstarIntervalIfNegated(cEnd);
@@ -217,7 +215,7 @@ void PredicateTreeAnnotatorImpl::assignIntervalMarkers(const Inspector &in) {
}
case Predicate::TYPE_NEGATION:
_negated = !_negated;
- assignIntervalMarkers(in[Predicate::CHILDREN][0]);
+ assignIntervalMarkers(in_children[0]);
_negated = !_negated;
break;
} // switch
@@ -231,9 +229,9 @@ PredicateTreeAnnotations::PredicateTreeAnnotations(uint32_t mf, uint16_t ir)
PredicateTreeAnnotations::~PredicateTreeAnnotations() = default;
-void PredicateTreeAnnotator::annotate(const Inspector &in,
- PredicateTreeAnnotations &result,
- int64_t lower, int64_t upper) {
+void
+PredicateTreeAnnotator::annotate(const Inspector &in, PredicateTreeAnnotations &result, int64_t lower, int64_t upper)
+{
PredicateTreeAnalyzer analyzer(in);
uint32_t min_feature = static_cast<uint32_t>(analyzer.getMinFeature());
// Size is as interval range (tree size is lower bound for interval range)
diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_tree_annotator.h b/searchlib/src/vespa/searchlib/predicate/predicate_tree_annotator.h
index 63d8e2cf558..ba6a4aeef45 100644
--- a/searchlib/src/vespa/searchlib/predicate/predicate_tree_annotator.h
+++ b/searchlib/src/vespa/searchlib/predicate/predicate_tree_annotator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_zero_constraint_posting_list.cpp b/searchlib/src/vespa/searchlib/predicate/predicate_zero_constraint_posting_list.cpp
index ad4e521d223..10c8a914ced 100644
--- a/searchlib/src/vespa/searchlib/predicate/predicate_zero_constraint_posting_list.cpp
+++ b/searchlib/src/vespa/searchlib/predicate/predicate_zero_constraint_posting_list.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "predicate_zero_constraint_posting_list.h"
diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_zero_constraint_posting_list.h b/searchlib/src/vespa/searchlib/predicate/predicate_zero_constraint_posting_list.h
index 8b52b074cd0..1cfc50091cc 100644
--- a/searchlib/src/vespa/searchlib/predicate/predicate_zero_constraint_posting_list.h
+++ b/searchlib/src/vespa/searchlib/predicate/predicate_zero_constraint_posting_list.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_zstar_compressed_posting_list.h b/searchlib/src/vespa/searchlib/predicate/predicate_zstar_compressed_posting_list.h
index 0268d2bdb0c..0adda4b7895 100644
--- a/searchlib/src/vespa/searchlib/predicate/predicate_zstar_compressed_posting_list.h
+++ b/searchlib/src/vespa/searchlib/predicate/predicate_zstar_compressed_posting_list.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/predicate/simple_index.cpp b/searchlib/src/vespa/searchlib/predicate/simple_index.cpp
index b0ef11e1c25..fc802600392 100644
--- a/searchlib/src/vespa/searchlib/predicate/simple_index.cpp
+++ b/searchlib/src/vespa/searchlib/predicate/simple_index.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simple_index.hpp"
#include <vespa/vespalib/btree/btree.hpp>
diff --git a/searchlib/src/vespa/searchlib/predicate/simple_index.h b/searchlib/src/vespa/searchlib/predicate/simple_index.h
index 75dc540f787..25ba76ce7c4 100644
--- a/searchlib/src/vespa/searchlib/predicate/simple_index.h
+++ b/searchlib/src/vespa/searchlib/predicate/simple_index.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/predicate/simple_index.hpp b/searchlib/src/vespa/searchlib/predicate/simple_index.hpp
index ada77b9fe38..3373b6f5ca7 100644
--- a/searchlib/src/vespa/searchlib/predicate/simple_index.hpp
+++ b/searchlib/src/vespa/searchlib/predicate/simple_index.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "simple_index.h"
@@ -118,8 +118,7 @@ SimpleIndex<Posting, Key, DocId>::deserialize(vespalib::DataBuffer &buffer, Post
postings.emplace_back(doc_id, deserializer.deserialize(buffer));
}
vespalib::datastore::EntryRef ref;
- _btree_posting_lists.apply(ref, &postings[0], &postings[postings.size()],
- 0, 0);
+ _btree_posting_lists.apply(ref, &postings[0], &postings[postings.size()], 0, 0);
builder.insert(key, ref);
}
_dictionary.assign(builder);
diff --git a/searchlib/src/vespa/searchlib/predicate/tree_crumbs.h b/searchlib/src/vespa/searchlib/predicate/tree_crumbs.h
index 9748e304231..41c41d317bb 100644
--- a/searchlib/src/vespa/searchlib/predicate/tree_crumbs.h
+++ b/searchlib/src/vespa/searchlib/predicate/tree_crumbs.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/query/CMakeLists.txt b/searchlib/src/vespa/searchlib/query/CMakeLists.txt
index b4282bb1251..ef1011358bf 100644
--- a/searchlib/src/vespa/searchlib/query/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/query/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_query OBJECT
SOURCES
query_term_simple.cpp
diff --git a/searchlib/src/vespa/searchlib/query/base.h b/searchlib/src/vespa/searchlib/query/base.h
index da0b815383a..b0341d20c31 100644
--- a/searchlib/src/vespa/searchlib/query/base.h
+++ b/searchlib/src/vespa/searchlib/query/base.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/searchlib/src/vespa/searchlib/query/query_term_decoder.cpp b/searchlib/src/vespa/searchlib/query/query_term_decoder.cpp
index f1aebf1c207..2c661e8d41b 100644
--- a/searchlib/src/vespa/searchlib/query/query_term_decoder.cpp
+++ b/searchlib/src/vespa/searchlib/query/query_term_decoder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "query_term_decoder.h"
#include <vespa/searchlib/query/streaming/query.h>
diff --git a/searchlib/src/vespa/searchlib/query/query_term_decoder.h b/searchlib/src/vespa/searchlib/query/query_term_decoder.h
index 94102908dae..9bc8a896b12 100644
--- a/searchlib/src/vespa/searchlib/query/query_term_decoder.h
+++ b/searchlib/src/vespa/searchlib/query/query_term_decoder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/query/streaming/hit.h b/searchlib/src/vespa/searchlib/query/streaming/hit.h
index fabaa3ad50c..4e0407d2bc1 100644
--- a/searchlib/src/vespa/searchlib/query/streaming/hit.h
+++ b/searchlib/src/vespa/searchlib/query/streaming/hit.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdint>
diff --git a/searchlib/src/vespa/searchlib/query/streaming/query.cpp b/searchlib/src/vespa/searchlib/query/streaming/query.cpp
index a189b5cbfab..4773827c036 100644
--- a/searchlib/src/vespa/searchlib/query/streaming/query.cpp
+++ b/searchlib/src/vespa/searchlib/query/streaming/query.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "query.h"
#include <vespa/searchlib/parsequery/stackdumpiterator.h>
#include <vespa/vespalib/objects/visit.hpp>
diff --git a/searchlib/src/vespa/searchlib/query/streaming/query.h b/searchlib/src/vespa/searchlib/query/streaming/query.h
index c0123e26cf2..75388d564ee 100644
--- a/searchlib/src/vespa/searchlib/query/streaming/query.h
+++ b/searchlib/src/vespa/searchlib/query/streaming/query.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "queryterm.h"
diff --git a/searchlib/src/vespa/searchlib/query/streaming/querynode.cpp b/searchlib/src/vespa/searchlib/query/streaming/querynode.cpp
index 9fd6dd0ced9..38939e3a8a4 100644
--- a/searchlib/src/vespa/searchlib/query/streaming/querynode.cpp
+++ b/searchlib/src/vespa/searchlib/query/streaming/querynode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "query.h"
#include <vespa/searchlib/parsequery/stackdumpiterator.h>
diff --git a/searchlib/src/vespa/searchlib/query/streaming/querynode.h b/searchlib/src/vespa/searchlib/query/streaming/querynode.h
index 1a3f76fea6f..553a2637731 100644
--- a/searchlib/src/vespa/searchlib/query/streaming/querynode.h
+++ b/searchlib/src/vespa/searchlib/query/streaming/querynode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "hit.h"
diff --git a/searchlib/src/vespa/searchlib/query/streaming/querynoderesultbase.cpp b/searchlib/src/vespa/searchlib/query/streaming/querynoderesultbase.cpp
index 22f76bf9419..9314f205712 100644
--- a/searchlib/src/vespa/searchlib/query/streaming/querynoderesultbase.cpp
+++ b/searchlib/src/vespa/searchlib/query/streaming/querynoderesultbase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "querynoderesultbase.h"
namespace search::streaming {
diff --git a/searchlib/src/vespa/searchlib/query/streaming/querynoderesultbase.h b/searchlib/src/vespa/searchlib/query/streaming/querynoderesultbase.h
index 44527c80b2f..52beb570d49 100644
--- a/searchlib/src/vespa/searchlib/query/streaming/querynoderesultbase.h
+++ b/searchlib/src/vespa/searchlib/query/streaming/querynoderesultbase.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/objects/cloneable.h>
diff --git a/searchlib/src/vespa/searchlib/query/streaming/queryterm.cpp b/searchlib/src/vespa/searchlib/query/streaming/queryterm.cpp
index 69250d84cab..f455e40be30 100644
--- a/searchlib/src/vespa/searchlib/query/streaming/queryterm.cpp
+++ b/searchlib/src/vespa/searchlib/query/streaming/queryterm.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "queryterm.h"
#include <vespa/vespalib/objects/visit.h>
diff --git a/searchlib/src/vespa/searchlib/query/streaming/queryterm.h b/searchlib/src/vespa/searchlib/query/streaming/queryterm.h
index 134945e36d6..6a64aa561e4 100644
--- a/searchlib/src/vespa/searchlib/query/streaming/queryterm.h
+++ b/searchlib/src/vespa/searchlib/query/streaming/queryterm.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "hit.h"
diff --git a/searchlib/src/vespa/searchlib/query/tree/CMakeLists.txt b/searchlib/src/vespa/searchlib/query/tree/CMakeLists.txt
index 0706571daa9..ef2003e4ae1 100644
--- a/searchlib/src/vespa/searchlib/query/tree/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/query/tree/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_query_tree OBJECT
SOURCES
intermediate.cpp
diff --git a/searchlib/src/vespa/searchlib/query/tree/customtypetermvisitor.h b/searchlib/src/vespa/searchlib/query/tree/customtypetermvisitor.h
index 28dede8169c..de4ae416504 100644
--- a/searchlib/src/vespa/searchlib/query/tree/customtypetermvisitor.h
+++ b/searchlib/src/vespa/searchlib/query/tree/customtypetermvisitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/query/tree/customtypevisitor.h b/searchlib/src/vespa/searchlib/query/tree/customtypevisitor.h
index 3882bc41b2b..aa4408d0dbe 100644
--- a/searchlib/src/vespa/searchlib/query/tree/customtypevisitor.h
+++ b/searchlib/src/vespa/searchlib/query/tree/customtypevisitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/query/tree/intermediate.cpp b/searchlib/src/vespa/searchlib/query/tree/intermediate.cpp
index a5cfe69c2d5..6e0cff553cc 100644
--- a/searchlib/src/vespa/searchlib/query/tree/intermediate.cpp
+++ b/searchlib/src/vespa/searchlib/query/tree/intermediate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "intermediate.h"
namespace search::query {
diff --git a/searchlib/src/vespa/searchlib/query/tree/intermediate.h b/searchlib/src/vespa/searchlib/query/tree/intermediate.h
index 2bdc0104927..0db9997760d 100644
--- a/searchlib/src/vespa/searchlib/query/tree/intermediate.h
+++ b/searchlib/src/vespa/searchlib/query/tree/intermediate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "node.h"
diff --git a/searchlib/src/vespa/searchlib/query/tree/intermediatenodes.cpp b/searchlib/src/vespa/searchlib/query/tree/intermediatenodes.cpp
index ceeacb759b2..1813d65f3cf 100644
--- a/searchlib/src/vespa/searchlib/query/tree/intermediatenodes.cpp
+++ b/searchlib/src/vespa/searchlib/query/tree/intermediatenodes.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "intermediatenodes.h"
namespace search::query {
diff --git a/searchlib/src/vespa/searchlib/query/tree/intermediatenodes.h b/searchlib/src/vespa/searchlib/query/tree/intermediatenodes.h
index 06475c0cc63..98825fc5a32 100644
--- a/searchlib/src/vespa/searchlib/query/tree/intermediatenodes.h
+++ b/searchlib/src/vespa/searchlib/query/tree/intermediatenodes.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/query/tree/location.cpp b/searchlib/src/vespa/searchlib/query/tree/location.cpp
index 9b45ba18b97..1a8409b8c2d 100644
--- a/searchlib/src/vespa/searchlib/query/tree/location.cpp
+++ b/searchlib/src/vespa/searchlib/query/tree/location.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "location.h"
#include "point.h"
diff --git a/searchlib/src/vespa/searchlib/query/tree/location.h b/searchlib/src/vespa/searchlib/query/tree/location.h
index 143282e2958..040e6350a38 100644
--- a/searchlib/src/vespa/searchlib/query/tree/location.h
+++ b/searchlib/src/vespa/searchlib/query/tree/location.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/query/tree/node.h b/searchlib/src/vespa/searchlib/query/tree/node.h
index 2ad6237a1fd..cbf3504b09b 100644
--- a/searchlib/src/vespa/searchlib/query/tree/node.h
+++ b/searchlib/src/vespa/searchlib/query/tree/node.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/searchlib/src/vespa/searchlib/query/tree/point.h b/searchlib/src/vespa/searchlib/query/tree/point.h
index 48700681158..4a82f1cffda 100644
--- a/searchlib/src/vespa/searchlib/query/tree/point.h
+++ b/searchlib/src/vespa/searchlib/query/tree/point.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/query/tree/predicate_query_term.h b/searchlib/src/vespa/searchlib/query/tree/predicate_query_term.h
index 6c78ce51085..2c71dddf9cc 100644
--- a/searchlib/src/vespa/searchlib/query/tree/predicate_query_term.h
+++ b/searchlib/src/vespa/searchlib/query/tree/predicate_query_term.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/query/tree/querybuilder.cpp b/searchlib/src/vespa/searchlib/query/tree/querybuilder.cpp
index 8aa5e64badd..53f0231fcfc 100644
--- a/searchlib/src/vespa/searchlib/query/tree/querybuilder.cpp
+++ b/searchlib/src/vespa/searchlib/query/tree/querybuilder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "querybuilder.h"
#include "intermediate.h"
diff --git a/searchlib/src/vespa/searchlib/query/tree/querybuilder.h b/searchlib/src/vespa/searchlib/query/tree/querybuilder.h
index 70cf2382523..a0788f0a777 100644
--- a/searchlib/src/vespa/searchlib/query/tree/querybuilder.h
+++ b/searchlib/src/vespa/searchlib/query/tree/querybuilder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* The QueryBuilder builds a query tree. The exact type of the nodes
* in the tree is defined by a traits class, which defines the actual
diff --git a/searchlib/src/vespa/searchlib/query/tree/querynodemixin.h b/searchlib/src/vespa/searchlib/query/tree/querynodemixin.h
index dd398e11844..8ede3676fd9 100644
--- a/searchlib/src/vespa/searchlib/query/tree/querynodemixin.h
+++ b/searchlib/src/vespa/searchlib/query/tree/querynodemixin.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/query/tree/queryreplicator.h b/searchlib/src/vespa/searchlib/query/tree/queryreplicator.h
index 43364dc8575..7501cd2c6f2 100644
--- a/searchlib/src/vespa/searchlib/query/tree/queryreplicator.h
+++ b/searchlib/src/vespa/searchlib/query/tree/queryreplicator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/query/tree/querytreecreator.h b/searchlib/src/vespa/searchlib/query/tree/querytreecreator.h
index c42a16d8ab3..57275061b5f 100644
--- a/searchlib/src/vespa/searchlib/query/tree/querytreecreator.h
+++ b/searchlib/src/vespa/searchlib/query/tree/querytreecreator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/query/tree/queryvisitor.h b/searchlib/src/vespa/searchlib/query/tree/queryvisitor.h
index 533e240e088..3d53c1181ed 100644
--- a/searchlib/src/vespa/searchlib/query/tree/queryvisitor.h
+++ b/searchlib/src/vespa/searchlib/query/tree/queryvisitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/query/tree/range.cpp b/searchlib/src/vespa/searchlib/query/tree/range.cpp
index 202b80d98a2..f946e21a5fa 100644
--- a/searchlib/src/vespa/searchlib/query/tree/range.cpp
+++ b/searchlib/src/vespa/searchlib/query/tree/range.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "range.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/searchlib/src/vespa/searchlib/query/tree/range.h b/searchlib/src/vespa/searchlib/query/tree/range.h
index e55ddf7f14b..0df4d00865f 100644
--- a/searchlib/src/vespa/searchlib/query/tree/range.h
+++ b/searchlib/src/vespa/searchlib/query/tree/range.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/query/tree/rectangle.h b/searchlib/src/vespa/searchlib/query/tree/rectangle.h
index 358e994aacd..5526817e2db 100644
--- a/searchlib/src/vespa/searchlib/query/tree/rectangle.h
+++ b/searchlib/src/vespa/searchlib/query/tree/rectangle.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/query/tree/simplequery.h b/searchlib/src/vespa/searchlib/query/tree/simplequery.h
index bdf1141fde5..44d869bc8bf 100644
--- a/searchlib/src/vespa/searchlib/query/tree/simplequery.h
+++ b/searchlib/src/vespa/searchlib/query/tree/simplequery.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* This file defines a set of subclasses to the query nodes, and a
* traits class to make them easy to use with the query builder. These
diff --git a/searchlib/src/vespa/searchlib/query/tree/stackdumpcreator.cpp b/searchlib/src/vespa/searchlib/query/tree/stackdumpcreator.cpp
index 5ad5fa80da4..4b89a7f9425 100644
--- a/searchlib/src/vespa/searchlib/query/tree/stackdumpcreator.cpp
+++ b/searchlib/src/vespa/searchlib/query/tree/stackdumpcreator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "stackdumpcreator.h"
diff --git a/searchlib/src/vespa/searchlib/query/tree/stackdumpcreator.h b/searchlib/src/vespa/searchlib/query/tree/stackdumpcreator.h
index 4e1556d05e6..12e0d806ab4 100644
--- a/searchlib/src/vespa/searchlib/query/tree/stackdumpcreator.h
+++ b/searchlib/src/vespa/searchlib/query/tree/stackdumpcreator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/query/tree/stackdumpquerycreator.h b/searchlib/src/vespa/searchlib/query/tree/stackdumpquerycreator.h
index 27df4f6b6e5..63866a24eec 100644
--- a/searchlib/src/vespa/searchlib/query/tree/stackdumpquerycreator.h
+++ b/searchlib/src/vespa/searchlib/query/tree/stackdumpquerycreator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/query/tree/templatetermvisitor.h b/searchlib/src/vespa/searchlib/query/tree/templatetermvisitor.h
index d1abc816838..fc3570f44d8 100644
--- a/searchlib/src/vespa/searchlib/query/tree/templatetermvisitor.h
+++ b/searchlib/src/vespa/searchlib/query/tree/templatetermvisitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/query/tree/term.cpp b/searchlib/src/vespa/searchlib/query/tree/term.cpp
index 1a0ea9392d0..59315070765 100644
--- a/searchlib/src/vespa/searchlib/query/tree/term.cpp
+++ b/searchlib/src/vespa/searchlib/query/tree/term.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "term.h"
#include <cassert>
diff --git a/searchlib/src/vespa/searchlib/query/tree/term.h b/searchlib/src/vespa/searchlib/query/tree/term.h
index 5b3559683cd..c48832b6de9 100644
--- a/searchlib/src/vespa/searchlib/query/tree/term.h
+++ b/searchlib/src/vespa/searchlib/query/tree/term.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "node.h"
diff --git a/searchlib/src/vespa/searchlib/query/tree/termnodes.cpp b/searchlib/src/vespa/searchlib/query/tree/termnodes.cpp
index 21ae11c1106..dcf0533ff7a 100644
--- a/searchlib/src/vespa/searchlib/query/tree/termnodes.cpp
+++ b/searchlib/src/vespa/searchlib/query/tree/termnodes.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "termnodes.h"
#include <vespa/vespalib/util/exceptions.h>
diff --git a/searchlib/src/vespa/searchlib/query/tree/termnodes.h b/searchlib/src/vespa/searchlib/query/tree/termnodes.h
index 0373ebbb653..51667de9530 100644
--- a/searchlib/src/vespa/searchlib/query/tree/termnodes.h
+++ b/searchlib/src/vespa/searchlib/query/tree/termnodes.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/query/weight.h b/searchlib/src/vespa/searchlib/query/weight.h
index 3f0d3b12b99..6cefa2d445d 100644
--- a/searchlib/src/vespa/searchlib/query/weight.h
+++ b/searchlib/src/vespa/searchlib/query/weight.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdint>
diff --git a/searchlib/src/vespa/searchlib/queryeval/CMakeLists.txt b/searchlib/src/vespa/searchlib/queryeval/CMakeLists.txt
index 0ec9552415e..214fb19b7ce 100644
--- a/searchlib/src/vespa/searchlib/queryeval/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/queryeval/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_queryeval OBJECT
SOURCES
andnotsearch.cpp
diff --git a/searchlib/src/vespa/searchlib/queryeval/andnotsearch.cpp b/searchlib/src/vespa/searchlib/queryeval/andnotsearch.cpp
index 61d6d2d9259..2307b778381 100644
--- a/searchlib/src/vespa/searchlib/queryeval/andnotsearch.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/andnotsearch.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "andnotsearch.h"
#include "termwise_helper.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/andnotsearch.h b/searchlib/src/vespa/searchlib/queryeval/andnotsearch.h
index 53a9aad6cca..d65a3d9c72e 100644
--- a/searchlib/src/vespa/searchlib/queryeval/andnotsearch.h
+++ b/searchlib/src/vespa/searchlib/queryeval/andnotsearch.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/andsearch.cpp b/searchlib/src/vespa/searchlib/queryeval/andsearch.cpp
index 229cd27afed..67060a2e89d 100644
--- a/searchlib/src/vespa/searchlib/queryeval/andsearch.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/andsearch.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "andsearch.h"
#include "andsearchstrict.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/andsearch.h b/searchlib/src/vespa/searchlib/queryeval/andsearch.h
index b081951e826..85df54c81d8 100644
--- a/searchlib/src/vespa/searchlib/queryeval/andsearch.h
+++ b/searchlib/src/vespa/searchlib/queryeval/andsearch.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/andsearchnostrict.h b/searchlib/src/vespa/searchlib/queryeval/andsearchnostrict.h
index fac502f4c98..9707b02ae58 100644
--- a/searchlib/src/vespa/searchlib/queryeval/andsearchnostrict.h
+++ b/searchlib/src/vespa/searchlib/queryeval/andsearchnostrict.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/andsearchstrict.h b/searchlib/src/vespa/searchlib/queryeval/andsearchstrict.h
index 7ec179404b6..63cbb77dbc8 100644
--- a/searchlib/src/vespa/searchlib/queryeval/andsearchstrict.h
+++ b/searchlib/src/vespa/searchlib/queryeval/andsearchstrict.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/begin_and_end_id.h b/searchlib/src/vespa/searchlib/queryeval/begin_and_end_id.h
index 8ba36ef9613..3ec66caa952 100644
--- a/searchlib/src/vespa/searchlib/queryeval/begin_and_end_id.h
+++ b/searchlib/src/vespa/searchlib/queryeval/begin_and_end_id.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdint>
diff --git a/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp
index 897d36150d9..9f8f620a8ae 100644
--- a/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "blueprint.h"
#include "leaf_blueprints.h"
@@ -27,12 +27,11 @@ namespace search::queryeval {
void maybe_eliminate_self(Blueprint* &self, Blueprint::UP replacement) {
// replace with replacement
if (replacement) {
- Blueprint *tmp = replacement.release();
- tmp->setParent(self->getParent());
- tmp->setSourceId(self->getSourceId());
- self->setParent(0);
- replacement.reset(self);
- self = tmp;
+ Blueprint::UP discard(self);
+ self = replacement.release();
+ self->setParent(discard->getParent());
+ self->setSourceId(discard->getSourceId());
+ discard->setParent(nullptr);
}
// replace with empty blueprint if empty
if (self->getState().estimate().empty) {
@@ -40,6 +39,8 @@ void maybe_eliminate_self(Blueprint* &self, Blueprint::UP replacement) {
self = new EmptyBlueprint(discard->getState().fields());
self->setParent(discard->getParent());
self->setSourceId(discard->getSourceId());
+ self->setDocIdLimit(discard->get_docid_limit());
+ discard->setParent(nullptr);
}
}
@@ -69,6 +70,20 @@ Blueprint::min(const std::vector<HitEstimate> &data)
return est;
}
+Blueprint::HitEstimate
+Blueprint::sat_sum(const std::vector<HitEstimate> &data, uint32_t docid_limit)
+{
+ uint64_t sum = 0;
+ bool empty = true;
+ uint32_t limit = docid_limit;
+ for (const auto &est: data) {
+ sum += est.estHits;
+ empty = (empty && est.empty);
+ limit = std::max(limit, est.estHits);
+ }
+ return { uint32_t(std::min(sum, uint64_t(limit))), empty };
+}
+
Blueprint::State::State(const FieldSpecBaseList &fields_in)
: _fields(fields_in),
_estimate(),
diff --git a/searchlib/src/vespa/searchlib/queryeval/blueprint.h b/searchlib/src/vespa/searchlib/queryeval/blueprint.h
index b75c903234f..76b2a6abcfe 100644
--- a/searchlib/src/vespa/searchlib/queryeval/blueprint.h
+++ b/searchlib/src/vespa/searchlib/queryeval/blueprint.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -101,7 +101,7 @@ public:
double hit_ratio(uint32_t docid_limit) const {
uint32_t total_hits = _estimate.estHits;
uint32_t total_docs = std::max(total_hits, docid_limit);
- return double(total_hits) / double(total_docs);
+ return (total_docs == 0) ? 0.0 : double(total_hits) / double(total_docs);
}
void tree_size(uint32_t value) { _tree_size = value; }
uint32_t tree_size() const { return _tree_size; }
@@ -119,6 +119,12 @@ public:
// utility that just takes minium estimate
static HitEstimate min(const std::vector<HitEstimate> &data);
+ // utility that calculates saturated sum
+ //
+ // upper limit for estimate: docid_limit
+ // lower limit for docid_limit: max child estimate
+ static HitEstimate sat_sum(const std::vector<HitEstimate> &data, uint32_t docid_limit);
+
// utility to get the greater estimate to sort first, higher tiers last
struct TieredGreaterEstimate {
bool operator () (Blueprint * const &a, Blueprint * const &b) const {
diff --git a/searchlib/src/vespa/searchlib/queryeval/booleanmatchiteratorwrapper.cpp b/searchlib/src/vespa/searchlib/queryeval/booleanmatchiteratorwrapper.cpp
index b75762170f2..f259bb3d242 100644
--- a/searchlib/src/vespa/searchlib/queryeval/booleanmatchiteratorwrapper.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/booleanmatchiteratorwrapper.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "booleanmatchiteratorwrapper.h"
#include <vespa/searchlib/fef/termfieldmatchdata.h>
diff --git a/searchlib/src/vespa/searchlib/queryeval/booleanmatchiteratorwrapper.h b/searchlib/src/vespa/searchlib/queryeval/booleanmatchiteratorwrapper.h
index 7cf323aa106..eabee22ee6e 100644
--- a/searchlib/src/vespa/searchlib/queryeval/booleanmatchiteratorwrapper.h
+++ b/searchlib/src/vespa/searchlib/queryeval/booleanmatchiteratorwrapper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/children_iterators.cpp b/searchlib/src/vespa/searchlib/queryeval/children_iterators.cpp
index 3abbd6a1b81..ed9d64d0b8d 100644
--- a/searchlib/src/vespa/searchlib/queryeval/children_iterators.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/children_iterators.cpp
@@ -1,3 +1,3 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "children_iterators.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/children_iterators.h b/searchlib/src/vespa/searchlib/queryeval/children_iterators.h
index aa147e0299b..bd278b57867 100644
--- a/searchlib/src/vespa/searchlib/queryeval/children_iterators.h
+++ b/searchlib/src/vespa/searchlib/queryeval/children_iterators.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/create-class-cpp.sh b/searchlib/src/vespa/searchlib/queryeval/create-class-cpp.sh
index 04a17b4f42c..d43fecd6ba0 100755
--- a/searchlib/src/vespa/searchlib/queryeval/create-class-cpp.sh
+++ b/searchlib/src/vespa/searchlib/queryeval/create-class-cpp.sh
@@ -1,12 +1,12 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
class=$1
guard=`echo $class | tr 'a-z' 'A-Z'`
name=`echo $class | tr 'A-Z' 'a-z'`
cat <<EOF
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "$name.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/create-class-h.sh b/searchlib/src/vespa/searchlib/queryeval/create-class-h.sh
index 7d0b3faeb81..78a2c865b14 100644
--- a/searchlib/src/vespa/searchlib/queryeval/create-class-h.sh
+++ b/searchlib/src/vespa/searchlib/queryeval/create-class-h.sh
@@ -1,11 +1,11 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
class=$1
guard=`echo $class | tr 'a-z' 'A-Z'`
cat <<EOF
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace search {
diff --git a/searchlib/src/vespa/searchlib/queryeval/create-interface.sh b/searchlib/src/vespa/searchlib/queryeval/create-interface.sh
index 4287bba597f..09c6f3e4161 100644
--- a/searchlib/src/vespa/searchlib/queryeval/create-interface.sh
+++ b/searchlib/src/vespa/searchlib/queryeval/create-interface.sh
@@ -1,11 +1,11 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
class=$1
guard=`echo $class | tr 'a-z' 'A-Z'`
cat <<EOF
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace search {
diff --git a/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.cpp b/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.cpp
index a642010139b..e1322d04081 100644
--- a/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "create_blueprint_visitor_helper.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.h b/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.h
index 4fd8f64cc99..ceca605b2e6 100644
--- a/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.h
+++ b/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/document_weight_search_iterator.cpp b/searchlib/src/vespa/searchlib/queryeval/document_weight_search_iterator.cpp
index d4893d88c0c..1020fae6ae8 100644
--- a/searchlib/src/vespa/searchlib/queryeval/document_weight_search_iterator.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/document_weight_search_iterator.cpp
@@ -1,3 +1,3 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_weight_search_iterator.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/document_weight_search_iterator.h b/searchlib/src/vespa/searchlib/queryeval/document_weight_search_iterator.h
index 22a859d2dde..7480f2974b6 100644
--- a/searchlib/src/vespa/searchlib/queryeval/document_weight_search_iterator.h
+++ b/searchlib/src/vespa/searchlib/queryeval/document_weight_search_iterator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.cpp
index 799755042a6..70d07fa3050 100644
--- a/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dot_product_blueprint.h"
#include "dot_product_search.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.h b/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.h
index a6d33731e9c..9ad2e4dc92d 100644
--- a/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.h
+++ b/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/dot_product_search.cpp b/searchlib/src/vespa/searchlib/queryeval/dot_product_search.cpp
index 5dba818c7a6..78608f2b21c 100644
--- a/searchlib/src/vespa/searchlib/queryeval/dot_product_search.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/dot_product_search.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dot_product_search.h"
#include "iterator_pack.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/dot_product_search.h b/searchlib/src/vespa/searchlib/queryeval/dot_product_search.h
index 8bdbdd18003..151c0b9469c 100644
--- a/searchlib/src/vespa/searchlib/queryeval/dot_product_search.h
+++ b/searchlib/src/vespa/searchlib/queryeval/dot_product_search.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/elementiterator.cpp b/searchlib/src/vespa/searchlib/queryeval/elementiterator.cpp
index 2533d602a1e..29683227b77 100644
--- a/searchlib/src/vespa/searchlib/queryeval/elementiterator.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/elementiterator.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "elementiterator.h"
#include <vespa/searchlib/fef/termfieldmatchdata.h>
#include <vespa/vespalib/objects/objectvisitor.h>
diff --git a/searchlib/src/vespa/searchlib/queryeval/elementiterator.h b/searchlib/src/vespa/searchlib/queryeval/elementiterator.h
index d58d981e63b..2f46baf087a 100644
--- a/searchlib/src/vespa/searchlib/queryeval/elementiterator.h
+++ b/searchlib/src/vespa/searchlib/queryeval/elementiterator.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/queryeval/searchiterator.h>
diff --git a/searchlib/src/vespa/searchlib/queryeval/emptysearch.cpp b/searchlib/src/vespa/searchlib/queryeval/emptysearch.cpp
index 782c6fc1946..0ff4af67e54 100644
--- a/searchlib/src/vespa/searchlib/queryeval/emptysearch.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/emptysearch.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "emptysearch.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/emptysearch.h b/searchlib/src/vespa/searchlib/queryeval/emptysearch.h
index 3a9c6684db3..dfb294c6e0c 100644
--- a/searchlib/src/vespa/searchlib/queryeval/emptysearch.h
+++ b/searchlib/src/vespa/searchlib/queryeval/emptysearch.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.cpp
index 6d044ca337d..d93134447d0 100644
--- a/searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "equiv_blueprint.h"
#include "equivsearch.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.h b/searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.h
index d1df1e0aada..126d395ddb2 100644
--- a/searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.h
+++ b/searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/equivsearch.cpp b/searchlib/src/vespa/searchlib/queryeval/equivsearch.cpp
index 95af4da01b0..3cc0b20d450 100644
--- a/searchlib/src/vespa/searchlib/queryeval/equivsearch.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/equivsearch.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "equivsearch.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/equivsearch.h b/searchlib/src/vespa/searchlib/queryeval/equivsearch.h
index 7dc7f90ee23..c72cd676201 100644
--- a/searchlib/src/vespa/searchlib/queryeval/equivsearch.h
+++ b/searchlib/src/vespa/searchlib/queryeval/equivsearch.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/executeinfo.cpp b/searchlib/src/vespa/searchlib/queryeval/executeinfo.cpp
index 5282a5c570a..604e20d2262 100644
--- a/searchlib/src/vespa/searchlib/queryeval/executeinfo.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/executeinfo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "executeinfo.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/fake_requestcontext.cpp b/searchlib/src/vespa/searchlib/queryeval/fake_requestcontext.cpp
index 6c9e516879d..ea4cbf84550 100644
--- a/searchlib/src/vespa/searchlib/queryeval/fake_requestcontext.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/fake_requestcontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fake_requestcontext.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/fake_requestcontext.h b/searchlib/src/vespa/searchlib/queryeval/fake_requestcontext.h
index 72520830d06..25a4fa559e0 100644
--- a/searchlib/src/vespa/searchlib/queryeval/fake_requestcontext.h
+++ b/searchlib/src/vespa/searchlib/queryeval/fake_requestcontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/fake_result.cpp b/searchlib/src/vespa/searchlib/queryeval/fake_result.cpp
index 288c0f5d1d0..8b02dd1d6c9 100644
--- a/searchlib/src/vespa/searchlib/queryeval/fake_result.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/fake_result.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fake_result.h"
#include <ostream>
diff --git a/searchlib/src/vespa/searchlib/queryeval/fake_result.h b/searchlib/src/vespa/searchlib/queryeval/fake_result.h
index 1823ebbd616..3c1bad60d8d 100644
--- a/searchlib/src/vespa/searchlib/queryeval/fake_result.h
+++ b/searchlib/src/vespa/searchlib/queryeval/fake_result.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/fake_search.cpp b/searchlib/src/vespa/searchlib/queryeval/fake_search.cpp
index 8e2ec3eabed..2d9db1eb51f 100644
--- a/searchlib/src/vespa/searchlib/queryeval/fake_search.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/fake_search.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fake_search.h"
#include <vespa/searchlib/fef/termfieldmatchdataposition.h>
diff --git a/searchlib/src/vespa/searchlib/queryeval/fake_search.h b/searchlib/src/vespa/searchlib/queryeval/fake_search.h
index 4cbba5e5c24..d8cd31fba4c 100644
--- a/searchlib/src/vespa/searchlib/queryeval/fake_search.h
+++ b/searchlib/src/vespa/searchlib/queryeval/fake_search.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/fake_searchable.cpp b/searchlib/src/vespa/searchlib/queryeval/fake_searchable.cpp
index fc3a6399e00..519f6e81774 100644
--- a/searchlib/src/vespa/searchlib/queryeval/fake_searchable.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/fake_searchable.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fake_searchable.h"
#include "leaf_blueprints.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/fake_searchable.h b/searchlib/src/vespa/searchlib/queryeval/fake_searchable.h
index a47ac18d88b..5dd678e547d 100644
--- a/searchlib/src/vespa/searchlib/queryeval/fake_searchable.h
+++ b/searchlib/src/vespa/searchlib/queryeval/fake_searchable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/field_spec.cpp b/searchlib/src/vespa/searchlib/queryeval/field_spec.cpp
index 8c864c91ef8..138b4e6865d 100644
--- a/searchlib/src/vespa/searchlib/queryeval/field_spec.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/field_spec.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "field_spec.h"
#include <cassert>
diff --git a/searchlib/src/vespa/searchlib/queryeval/field_spec.h b/searchlib/src/vespa/searchlib/queryeval/field_spec.h
index fd3de63cae0..be151e1fa28 100644
--- a/searchlib/src/vespa/searchlib/queryeval/field_spec.h
+++ b/searchlib/src/vespa/searchlib/queryeval/field_spec.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/field_spec.hpp b/searchlib/src/vespa/searchlib/queryeval/field_spec.hpp
index e772f95ec19..3dd977a3bc0 100644
--- a/searchlib/src/vespa/searchlib/queryeval/field_spec.hpp
+++ b/searchlib/src/vespa/searchlib/queryeval/field_spec.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/filter_wrapper.cpp b/searchlib/src/vespa/searchlib/queryeval/filter_wrapper.cpp
index 9128fccd20f..ff5001eb388 100644
--- a/searchlib/src/vespa/searchlib/queryeval/filter_wrapper.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/filter_wrapper.cpp
@@ -1,3 +1,3 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "filter_wrapper.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/filter_wrapper.h b/searchlib/src/vespa/searchlib/queryeval/filter_wrapper.h
index 27740df6ba6..f3992c995f2 100644
--- a/searchlib/src/vespa/searchlib/queryeval/filter_wrapper.h
+++ b/searchlib/src/vespa/searchlib/queryeval/filter_wrapper.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/full_search.cpp b/searchlib/src/vespa/searchlib/queryeval/full_search.cpp
index 6f387b0ab41..54086ff7601 100644
--- a/searchlib/src/vespa/searchlib/queryeval/full_search.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/full_search.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "full_search.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/full_search.h b/searchlib/src/vespa/searchlib/queryeval/full_search.h
index 734c3a1443e..81c9125807e 100644
--- a/searchlib/src/vespa/searchlib/queryeval/full_search.h
+++ b/searchlib/src/vespa/searchlib/queryeval/full_search.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/get_weight_from_node.cpp b/searchlib/src/vespa/searchlib/queryeval/get_weight_from_node.cpp
index 344cf90da12..cf040aee2e6 100644
--- a/searchlib/src/vespa/searchlib/queryeval/get_weight_from_node.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/get_weight_from_node.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "get_weight_from_node.h"
#include <vespa/searchlib/query/tree/intermediatenodes.h>
diff --git a/searchlib/src/vespa/searchlib/queryeval/get_weight_from_node.h b/searchlib/src/vespa/searchlib/queryeval/get_weight_from_node.h
index 25ae400fb83..024a8416acc 100644
--- a/searchlib/src/vespa/searchlib/queryeval/get_weight_from_node.h
+++ b/searchlib/src/vespa/searchlib/queryeval/get_weight_from_node.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/global_filter.cpp b/searchlib/src/vespa/searchlib/queryeval/global_filter.cpp
index 849700b250e..b1995c7ab1c 100644
--- a/searchlib/src/vespa/searchlib/queryeval/global_filter.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/global_filter.cpp
@@ -1,3 +1,3 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "global_filter.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/global_filter.h b/searchlib/src/vespa/searchlib/queryeval/global_filter.h
index 3e57ded4898..9a2a77ed119 100644
--- a/searchlib/src/vespa/searchlib/queryeval/global_filter.h
+++ b/searchlib/src/vespa/searchlib/queryeval/global_filter.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/hitcollector.cpp b/searchlib/src/vespa/searchlib/queryeval/hitcollector.cpp
index a0e6d89645c..b2b1d49bae9 100644
--- a/searchlib/src/vespa/searchlib/queryeval/hitcollector.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/hitcollector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "hitcollector.h"
#include <vespa/searchlib/common/bitvector.h>
diff --git a/searchlib/src/vespa/searchlib/queryeval/hitcollector.h b/searchlib/src/vespa/searchlib/queryeval/hitcollector.h
index a7a6af68e1f..0d6b470d699 100644
--- a/searchlib/src/vespa/searchlib/queryeval/hitcollector.h
+++ b/searchlib/src/vespa/searchlib/queryeval/hitcollector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/idiversifier.h b/searchlib/src/vespa/searchlib/queryeval/idiversifier.h
index e77cb959eeb..49582784617 100644
--- a/searchlib/src/vespa/searchlib/queryeval/idiversifier.h
+++ b/searchlib/src/vespa/searchlib/queryeval/idiversifier.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp b/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp
index 561c532430b..997d3013971 100644
--- a/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "intermediate_blueprints.h"
#include "andnotsearch.h"
@@ -19,7 +19,7 @@ namespace search::queryeval {
namespace {
template <typename CombineType>
-size_t lookup_create_source(std::vector<std::unique_ptr<CombineType> > &sources, uint32_t child_source) {
+size_t lookup_create_source(std::vector<std::unique_ptr<CombineType> > &sources, uint32_t child_source, uint32_t docid_limit) {
for (size_t i = 0; i < sources.size(); ++i) {
if (sources[i]->getSourceId() == child_source) {
return i;
@@ -27,6 +27,7 @@ size_t lookup_create_source(std::vector<std::unique_ptr<CombineType> > &sources,
}
sources.push_back(std::unique_ptr<CombineType>(new CombineType()));
sources.back()->setSourceId(child_source);
+ sources.back()->setDocIdLimit(docid_limit);
return (sources.size() - 1);
}
@@ -53,7 +54,7 @@ void optimize_source_blenders(IntermediateBlueprint &self, size_t begin_idx) {
auto *blender = static_cast<SourceBlenderBlueprint *>(blender_up.get());
while (blender->childCnt() > 0) {
Blueprint::UP child_up = blender->removeChild(blender->childCnt() - 1);
- size_t source_idx = lookup_create_source(sources, child_up->getSourceId());
+ size_t source_idx = lookup_create_source(sources, child_up->getSourceId(), self.get_docid_limit());
sources[source_idx]->addChild(std::move(child_up));
}
}
@@ -298,7 +299,7 @@ AndBlueprint::computeNextHitRate(const Blueprint & child, double hitRate) const
Blueprint::HitEstimate
OrBlueprint::combine(const std::vector<HitEstimate> &data) const
{
- return max(data);
+ return sat_sum(data, get_docid_limit());
}
FieldSpecBaseList
diff --git a/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.h b/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.h
index 9e9d715e45d..b708ae3078e 100644
--- a/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.h
+++ b/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/irequestcontext.h b/searchlib/src/vespa/searchlib/queryeval/irequestcontext.h
index 935c703d0a7..376906c8e8f 100644
--- a/searchlib/src/vespa/searchlib/queryeval/irequestcontext.h
+++ b/searchlib/src/vespa/searchlib/queryeval/irequestcontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/isourceselector.cpp b/searchlib/src/vespa/searchlib/queryeval/isourceselector.cpp
index e19a76b58ba..de6ac82e284 100644
--- a/searchlib/src/vespa/searchlib/queryeval/isourceselector.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/isourceselector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "isourceselector.h"
namespace search::queryeval {
diff --git a/searchlib/src/vespa/searchlib/queryeval/isourceselector.h b/searchlib/src/vespa/searchlib/queryeval/isourceselector.h
index 8d92cd5293e..35804cd45d9 100644
--- a/searchlib/src/vespa/searchlib/queryeval/isourceselector.h
+++ b/searchlib/src/vespa/searchlib/queryeval/isourceselector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/iterator_pack.cpp b/searchlib/src/vespa/searchlib/queryeval/iterator_pack.cpp
index 6e8473d8f24..e9f1b526a87 100644
--- a/searchlib/src/vespa/searchlib/queryeval/iterator_pack.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/iterator_pack.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "iterator_pack.h"
#include "termwise_helper.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/iterator_pack.h b/searchlib/src/vespa/searchlib/queryeval/iterator_pack.h
index 8f4f3a3744b..907371008d9 100644
--- a/searchlib/src/vespa/searchlib/queryeval/iterator_pack.h
+++ b/searchlib/src/vespa/searchlib/queryeval/iterator_pack.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/iterators.cpp b/searchlib/src/vespa/searchlib/queryeval/iterators.cpp
index f9db8aea4f4..f3d12cd34a6 100644
--- a/searchlib/src/vespa/searchlib/queryeval/iterators.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/iterators.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "iterators.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/iterators.h b/searchlib/src/vespa/searchlib/queryeval/iterators.h
index 7adfe4aeba6..ead00437471 100644
--- a/searchlib/src/vespa/searchlib/queryeval/iterators.h
+++ b/searchlib/src/vespa/searchlib/queryeval/iterators.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.cpp b/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.cpp
index fac6290d3f8..a72fbc8d57a 100644
--- a/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "leaf_blueprints.h"
#include "emptysearch.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h b/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h
index 5bba87c7091..288f4dec1c8 100644
--- a/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h
+++ b/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/matching_elements_search.cpp b/searchlib/src/vespa/searchlib/queryeval/matching_elements_search.cpp
index db559fe1fc7..4a522a00583 100644
--- a/searchlib/src/vespa/searchlib/queryeval/matching_elements_search.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/matching_elements_search.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "matching_elements_search.h"
#include <vespa/searchcommon/attribute/attributecontent.h>
diff --git a/searchlib/src/vespa/searchlib/queryeval/matching_elements_search.h b/searchlib/src/vespa/searchlib/queryeval/matching_elements_search.h
index 48ef7aec52c..f391f2272e1 100644
--- a/searchlib/src/vespa/searchlib/queryeval/matching_elements_search.h
+++ b/searchlib/src/vespa/searchlib/queryeval/matching_elements_search.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/monitoring_dump_iterator.cpp b/searchlib/src/vespa/searchlib/queryeval/monitoring_dump_iterator.cpp
index 5e7f548b237..efbc9d96cc6 100644
--- a/searchlib/src/vespa/searchlib/queryeval/monitoring_dump_iterator.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/monitoring_dump_iterator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "monitoring_dump_iterator.h"
#include <vespa/log/log.h>
LOG_SETUP(".queryeval.monitoring_dump_iterator");
diff --git a/searchlib/src/vespa/searchlib/queryeval/monitoring_dump_iterator.h b/searchlib/src/vespa/searchlib/queryeval/monitoring_dump_iterator.h
index 6bd08f58742..93229d74a39 100644
--- a/searchlib/src/vespa/searchlib/queryeval/monitoring_dump_iterator.h
+++ b/searchlib/src/vespa/searchlib/queryeval/monitoring_dump_iterator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "monitoring_search_iterator.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/monitoring_search_iterator.cpp b/searchlib/src/vespa/searchlib/queryeval/monitoring_search_iterator.cpp
index 0998b3d76ba..d086d7b2ca5 100644
--- a/searchlib/src/vespa/searchlib/queryeval/monitoring_search_iterator.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/monitoring_search_iterator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "monitoring_search_iterator.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchlib/src/vespa/searchlib/queryeval/monitoring_search_iterator.h b/searchlib/src/vespa/searchlib/queryeval/monitoring_search_iterator.h
index 2036dbc8c49..6345d203f9e 100644
--- a/searchlib/src/vespa/searchlib/queryeval/monitoring_search_iterator.h
+++ b/searchlib/src/vespa/searchlib/queryeval/monitoring_search_iterator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "searchiterator.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/multibitvectoriterator.cpp b/searchlib/src/vespa/searchlib/queryeval/multibitvectoriterator.cpp
index ca8513a3c91..f7fc99af573 100644
--- a/searchlib/src/vespa/searchlib/queryeval/multibitvectoriterator.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/multibitvectoriterator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "multibitvectoriterator.h"
#include "andsearch.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/multibitvectoriterator.h b/searchlib/src/vespa/searchlib/queryeval/multibitvectoriterator.h
index 29e92584ffe..d75a9ddd357 100644
--- a/searchlib/src/vespa/searchlib/queryeval/multibitvectoriterator.h
+++ b/searchlib/src/vespa/searchlib/queryeval/multibitvectoriterator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/multisearch.cpp b/searchlib/src/vespa/searchlib/queryeval/multisearch.cpp
index 51098f50b37..5c932b3aeb8 100644
--- a/searchlib/src/vespa/searchlib/queryeval/multisearch.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/multisearch.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "multisearch.h"
#include <vespa/vespalib/objects/visit.hpp>
diff --git a/searchlib/src/vespa/searchlib/queryeval/multisearch.h b/searchlib/src/vespa/searchlib/queryeval/multisearch.h
index bd916f7953b..73c31d243db 100644
--- a/searchlib/src/vespa/searchlib/queryeval/multisearch.h
+++ b/searchlib/src/vespa/searchlib/queryeval/multisearch.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/nearest_neighbor_blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/nearest_neighbor_blueprint.cpp
index 68af090afb6..661a0444ac9 100644
--- a/searchlib/src/vespa/searchlib/queryeval/nearest_neighbor_blueprint.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/nearest_neighbor_blueprint.cpp
@@ -92,7 +92,7 @@ NearestNeighborBlueprint::NearestNeighborBlueprint(const queryeval::FieldSpec& f
}
uint32_t est_hits = _attr_tensor.get_num_docs();
setEstimate(HitEstimate(est_hits, false));
- set_want_global_filter(true);
+ set_want_global_filter(nns_index && _approximate);
}
NearestNeighborBlueprint::~NearestNeighborBlueprint() = default;
diff --git a/searchlib/src/vespa/searchlib/queryeval/nearest_neighbor_distance_heap.h b/searchlib/src/vespa/searchlib/queryeval/nearest_neighbor_distance_heap.h
index b7bdffd31c1..821dc67fe64 100644
--- a/searchlib/src/vespa/searchlib/queryeval/nearest_neighbor_distance_heap.h
+++ b/searchlib/src/vespa/searchlib/queryeval/nearest_neighbor_distance_heap.h
@@ -2,9 +2,10 @@
#pragma once
+#include <vespa/vespalib/util/priority_queue.h>
#include <mutex>
#include <limits>
-#include <vespa/vespalib/util/priority_queue.h>
+#include <atomic>
namespace search::queryeval {
@@ -15,7 +16,7 @@ class NearestNeighborDistanceHeap {
private:
std::mutex _lock;
size_t _size;
- double _distance_threshold;
+ std::atomic<double> _distance_threshold;
vespalib::PriorityQueue<double, std::greater<double>> _priQ;
public:
explicit NearestNeighborDistanceHeap(size_t maxSize)
@@ -25,14 +26,10 @@ public:
_priQ.reserve(maxSize);
}
void set_distance_threshold(double distance_threshold) {
- _distance_threshold = distance_threshold;
+ _distance_threshold.store(distance_threshold, std::memory_order_relaxed);
}
double distanceLimit() {
- std::lock_guard<std::mutex> guard(_lock);
- if (_priQ.size() < _size) {
- return _distance_threshold;
- }
- return _priQ.front();
+ return _distance_threshold.load(std::memory_order_relaxed);
}
void used(double distance) {
std::lock_guard<std::mutex> guard(_lock);
@@ -42,6 +39,11 @@ public:
_priQ.front() = distance;
_priQ.adjust();
}
+ if (_priQ.size() >= _size) {
+ if (_distance_threshold.load(std::memory_order_relaxed) > _priQ.front()) {
+ _distance_threshold.store(_priQ.front(), std::memory_order_relaxed);
+ }
+ }
}
};
diff --git a/searchlib/src/vespa/searchlib/queryeval/nearsearch.cpp b/searchlib/src/vespa/searchlib/queryeval/nearsearch.cpp
index f7b83de5f4b..2966ac06dcc 100644
--- a/searchlib/src/vespa/searchlib/queryeval/nearsearch.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/nearsearch.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "nearsearch.h"
#include <vespa/vespalib/objects/visit.h>
#include <vespa/vespalib/util/priority_queue.h>
diff --git a/searchlib/src/vespa/searchlib/queryeval/nearsearch.h b/searchlib/src/vespa/searchlib/queryeval/nearsearch.h
index 13bd1c53383..e2a93171001 100644
--- a/searchlib/src/vespa/searchlib/queryeval/nearsearch.h
+++ b/searchlib/src/vespa/searchlib/queryeval/nearsearch.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/fef/termfieldmatchdata.h>
diff --git a/searchlib/src/vespa/searchlib/queryeval/orlikesearch.h b/searchlib/src/vespa/searchlib/queryeval/orlikesearch.h
index 57a2ff11997..cbfeb6c3c81 100644
--- a/searchlib/src/vespa/searchlib/queryeval/orlikesearch.h
+++ b/searchlib/src/vespa/searchlib/queryeval/orlikesearch.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/orsearch.cpp b/searchlib/src/vespa/searchlib/queryeval/orsearch.cpp
index 9d1dd252796..fe54f5074a0 100644
--- a/searchlib/src/vespa/searchlib/queryeval/orsearch.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/orsearch.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "orsearch.h"
#include "orlikesearch.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/orsearch.h b/searchlib/src/vespa/searchlib/queryeval/orsearch.h
index 79da1b85b6f..f55ce3154ce 100644
--- a/searchlib/src/vespa/searchlib/queryeval/orsearch.h
+++ b/searchlib/src/vespa/searchlib/queryeval/orsearch.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/posting_info.h b/searchlib/src/vespa/searchlib/queryeval/posting_info.h
index 40fb5652d0f..27c2eae56fb 100644
--- a/searchlib/src/vespa/searchlib/queryeval/posting_info.h
+++ b/searchlib/src/vespa/searchlib/queryeval/posting_info.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdint>
diff --git a/searchlib/src/vespa/searchlib/queryeval/predicate_blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/predicate_blueprint.cpp
index 24d731156b3..cf4348ad1bb 100644
--- a/searchlib/src/vespa/searchlib/queryeval/predicate_blueprint.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/predicate_blueprint.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "predicate_blueprint.h"
#include <vespa/searchlib/predicate/predicate_bounds_posting_list.h>
diff --git a/searchlib/src/vespa/searchlib/queryeval/predicate_blueprint.h b/searchlib/src/vespa/searchlib/queryeval/predicate_blueprint.h
index ef225e86c50..fc466806e9c 100644
--- a/searchlib/src/vespa/searchlib/queryeval/predicate_blueprint.h
+++ b/searchlib/src/vespa/searchlib/queryeval/predicate_blueprint.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/predicate_search.cpp b/searchlib/src/vespa/searchlib/queryeval/predicate_search.cpp
index 08056725389..dc769d2a03d 100644
--- a/searchlib/src/vespa/searchlib/queryeval/predicate_search.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/predicate_search.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "predicate_search.h"
#include <vespa/searchlib/fef/termfieldmatchdata.h>
diff --git a/searchlib/src/vespa/searchlib/queryeval/predicate_search.h b/searchlib/src/vespa/searchlib/queryeval/predicate_search.h
index 54dfdfa99c4..82f533a473b 100644
--- a/searchlib/src/vespa/searchlib/queryeval/predicate_search.h
+++ b/searchlib/src/vespa/searchlib/queryeval/predicate_search.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/ranksearch.cpp b/searchlib/src/vespa/searchlib/queryeval/ranksearch.cpp
index a915442bf0c..adcc5e8606f 100644
--- a/searchlib/src/vespa/searchlib/queryeval/ranksearch.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/ranksearch.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "ranksearch.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/ranksearch.h b/searchlib/src/vespa/searchlib/queryeval/ranksearch.h
index 443202f3e59..a9de79d66cf 100644
--- a/searchlib/src/vespa/searchlib/queryeval/ranksearch.h
+++ b/searchlib/src/vespa/searchlib/queryeval/ranksearch.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.cpp
index 4de52af102b..e2a22c16631 100644
--- a/searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "same_element_blueprint.h"
#include "same_element_search.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.h b/searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.h
index be04203fc6d..5eb8e3ff21c 100644
--- a/searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.h
+++ b/searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/same_element_search.cpp b/searchlib/src/vespa/searchlib/queryeval/same_element_search.cpp
index 18f42597121..dfa98b6b206 100644
--- a/searchlib/src/vespa/searchlib/queryeval/same_element_search.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/same_element_search.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "same_element_search.h"
#include <vespa/searchlib/fef/termfieldmatchdata.h>
diff --git a/searchlib/src/vespa/searchlib/queryeval/same_element_search.h b/searchlib/src/vespa/searchlib/queryeval/same_element_search.h
index e5f185e06e6..b50a3ad8666 100644
--- a/searchlib/src/vespa/searchlib/queryeval/same_element_search.h
+++ b/searchlib/src/vespa/searchlib/queryeval/same_element_search.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/scores.h b/searchlib/src/vespa/searchlib/queryeval/scores.h
index 08106e0c750..6a507cf9b72 100644
--- a/searchlib/src/vespa/searchlib/queryeval/scores.h
+++ b/searchlib/src/vespa/searchlib/queryeval/scores.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/searchable.cpp b/searchlib/src/vespa/searchlib/queryeval/searchable.cpp
index c26ad3221bc..9f0642070af 100644
--- a/searchlib/src/vespa/searchlib/queryeval/searchable.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/searchable.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "searchable.h"
#include "leaf_blueprints.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/searchable.h b/searchlib/src/vespa/searchlib/queryeval/searchable.h
index ef4c461d11f..6202f5d1f0d 100644
--- a/searchlib/src/vespa/searchlib/queryeval/searchable.h
+++ b/searchlib/src/vespa/searchlib/queryeval/searchable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/searchiterator.cpp b/searchlib/src/vespa/searchlib/queryeval/searchiterator.cpp
index 38830262714..a63b8e54eb4 100644
--- a/searchlib/src/vespa/searchlib/queryeval/searchiterator.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/searchiterator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "searchiterator.h"
#include <vespa/searchlib/index/docidandfeatures.h>
diff --git a/searchlib/src/vespa/searchlib/queryeval/searchiterator.h b/searchlib/src/vespa/searchlib/queryeval/searchiterator.h
index 3ce808de7a1..3a57d15b1e9 100644
--- a/searchlib/src/vespa/searchlib/queryeval/searchiterator.h
+++ b/searchlib/src/vespa/searchlib/queryeval/searchiterator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.cpp
index 83d5a5e1739..0025fd5fe03 100644
--- a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simple_phrase_blueprint.h"
#include "simple_phrase_search.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.h b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.h
index b20866fdd1f..10cdac34f19 100644
--- a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.h
+++ b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.cpp b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.cpp
index 43a9ee4ab91..f58f888393b 100644
--- a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simple_phrase_search.h"
#include <vespa/searchlib/fef/termfieldmatchdata.h>
diff --git a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.h b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.h
index 5cec039e733..7b9d7c9365f 100644
--- a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.h
+++ b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/simpleresult.cpp b/searchlib/src/vespa/searchlib/queryeval/simpleresult.cpp
index de2582dda6b..75d88ec9428 100644
--- a/searchlib/src/vespa/searchlib/queryeval/simpleresult.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/simpleresult.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simpleresult.h"
#include <cassert>
diff --git a/searchlib/src/vespa/searchlib/queryeval/simpleresult.h b/searchlib/src/vespa/searchlib/queryeval/simpleresult.h
index 4a1fcb25e7a..a7bb30ec487 100644
--- a/searchlib/src/vespa/searchlib/queryeval/simpleresult.h
+++ b/searchlib/src/vespa/searchlib/queryeval/simpleresult.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/simplesearch.cpp b/searchlib/src/vespa/searchlib/queryeval/simplesearch.cpp
index 1e5ba8d0c27..c1445e63fa9 100644
--- a/searchlib/src/vespa/searchlib/queryeval/simplesearch.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/simplesearch.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simplesearch.h"
#include <vespa/vespalib/objects/visit.h>
diff --git a/searchlib/src/vespa/searchlib/queryeval/simplesearch.h b/searchlib/src/vespa/searchlib/queryeval/simplesearch.h
index 8dfec9abd4a..69d569f9e49 100644
--- a/searchlib/src/vespa/searchlib/queryeval/simplesearch.h
+++ b/searchlib/src/vespa/searchlib/queryeval/simplesearch.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/sorted_hit_sequence.cpp b/searchlib/src/vespa/searchlib/queryeval/sorted_hit_sequence.cpp
index 5462b8bfcaa..9ff1c8d5be3 100644
--- a/searchlib/src/vespa/searchlib/queryeval/sorted_hit_sequence.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/sorted_hit_sequence.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sorted_hit_sequence.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/sorted_hit_sequence.h b/searchlib/src/vespa/searchlib/queryeval/sorted_hit_sequence.h
index 4b4458e1647..5fb694193b5 100644
--- a/searchlib/src/vespa/searchlib/queryeval/sorted_hit_sequence.h
+++ b/searchlib/src/vespa/searchlib/queryeval/sorted_hit_sequence.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/sourceblendersearch.cpp b/searchlib/src/vespa/searchlib/queryeval/sourceblendersearch.cpp
index b50e71d5d53..f6d20d88a6c 100644
--- a/searchlib/src/vespa/searchlib/queryeval/sourceblendersearch.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/sourceblendersearch.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sourceblendersearch.h"
#include "isourceselector.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/sourceblendersearch.h b/searchlib/src/vespa/searchlib/queryeval/sourceblendersearch.h
index b9812036637..bb709f401c5 100644
--- a/searchlib/src/vespa/searchlib/queryeval/sourceblendersearch.h
+++ b/searchlib/src/vespa/searchlib/queryeval/sourceblendersearch.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/split_float.cpp b/searchlib/src/vespa/searchlib/queryeval/split_float.cpp
index 69f62368e67..aef2a7c011d 100644
--- a/searchlib/src/vespa/searchlib/queryeval/split_float.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/split_float.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "split_float.h"
#include <cctype>
diff --git a/searchlib/src/vespa/searchlib/queryeval/split_float.h b/searchlib/src/vespa/searchlib/queryeval/split_float.h
index b55ba73e563..e8a218cee30 100644
--- a/searchlib/src/vespa/searchlib/queryeval/split_float.h
+++ b/searchlib/src/vespa/searchlib/queryeval/split_float.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// $Id$
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/termasstring.cpp b/searchlib/src/vespa/searchlib/queryeval/termasstring.cpp
index 0c881bf32f3..bcf3fb8e86d 100644
--- a/searchlib/src/vespa/searchlib/queryeval/termasstring.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/termasstring.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "termasstring.h"
#include <vespa/searchlib/query/tree/node.h>
diff --git a/searchlib/src/vespa/searchlib/queryeval/termasstring.h b/searchlib/src/vespa/searchlib/queryeval/termasstring.h
index 8b05bf9eddd..9d07c5725d5 100644
--- a/searchlib/src/vespa/searchlib/queryeval/termasstring.h
+++ b/searchlib/src/vespa/searchlib/queryeval/termasstring.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/termwise_blueprint_helper.cpp b/searchlib/src/vespa/searchlib/queryeval/termwise_blueprint_helper.cpp
index e26a1652441..27c81fbe630 100644
--- a/searchlib/src/vespa/searchlib/queryeval/termwise_blueprint_helper.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/termwise_blueprint_helper.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "termwise_blueprint_helper.h"
#include "termwise_search.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/termwise_blueprint_helper.h b/searchlib/src/vespa/searchlib/queryeval/termwise_blueprint_helper.h
index 2917ce4d8c9..1031f3fd44c 100644
--- a/searchlib/src/vespa/searchlib/queryeval/termwise_blueprint_helper.h
+++ b/searchlib/src/vespa/searchlib/queryeval/termwise_blueprint_helper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/termwise_helper.h b/searchlib/src/vespa/searchlib/queryeval/termwise_helper.h
index 8abcf6e0e42..b8526621751 100644
--- a/searchlib/src/vespa/searchlib/queryeval/termwise_helper.h
+++ b/searchlib/src/vespa/searchlib/queryeval/termwise_helper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/termwise_search.cpp b/searchlib/src/vespa/searchlib/queryeval/termwise_search.cpp
index 2f00b249795..b9118085070 100644
--- a/searchlib/src/vespa/searchlib/queryeval/termwise_search.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/termwise_search.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "termwise_search.h"
#include <vespa/vespalib/objects/visit.h>
diff --git a/searchlib/src/vespa/searchlib/queryeval/termwise_search.h b/searchlib/src/vespa/searchlib/queryeval/termwise_search.h
index 193f2f86ed7..a61a52f8f61 100644
--- a/searchlib/src/vespa/searchlib/queryeval/termwise_search.h
+++ b/searchlib/src/vespa/searchlib/queryeval/termwise_search.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/test/CMakeLists.txt b/searchlib/src/vespa/searchlib/queryeval/test/CMakeLists.txt
index 745282e660c..925d0b9b6be 100644
--- a/searchlib/src/vespa/searchlib/queryeval/test/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/queryeval/test/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_queryeval_test INTERFACE
SOURCES
DEPENDS
diff --git a/searchlib/src/vespa/searchlib/queryeval/test/eagerchild.h b/searchlib/src/vespa/searchlib/queryeval/test/eagerchild.h
index 372e5f7b2d2..7722ad524c9 100644
--- a/searchlib/src/vespa/searchlib/queryeval/test/eagerchild.h
+++ b/searchlib/src/vespa/searchlib/queryeval/test/eagerchild.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/queryeval/searchiterator.h>
diff --git a/searchlib/src/vespa/searchlib/queryeval/test/leafspec.h b/searchlib/src/vespa/searchlib/queryeval/test/leafspec.h
index fa14941844e..71bd6291f34 100644
--- a/searchlib/src/vespa/searchlib/queryeval/test/leafspec.h
+++ b/searchlib/src/vespa/searchlib/queryeval/test/leafspec.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "searchhistory.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/test/searchhistory.h b/searchlib/src/vespa/searchlib/queryeval/test/searchhistory.h
index 172d531e415..17e3cc49444 100644
--- a/searchlib/src/vespa/searchlib/queryeval/test/searchhistory.h
+++ b/searchlib/src/vespa/searchlib/queryeval/test/searchhistory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <ostream>
diff --git a/searchlib/src/vespa/searchlib/queryeval/test/trackedsearch.h b/searchlib/src/vespa/searchlib/queryeval/test/trackedsearch.h
index ae04d35e658..f3b0d149419 100644
--- a/searchlib/src/vespa/searchlib/queryeval/test/trackedsearch.h
+++ b/searchlib/src/vespa/searchlib/queryeval/test/trackedsearch.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "searchhistory.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/test/wandspec.h b/searchlib/src/vespa/searchlib/queryeval/test/wandspec.h
index 2fb2b3bc9e2..8aa3595e580 100644
--- a/searchlib/src/vespa/searchlib/queryeval/test/wandspec.h
+++ b/searchlib/src/vespa/searchlib/queryeval/test/wandspec.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "leafspec.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/truesearch.cpp b/searchlib/src/vespa/searchlib/queryeval/truesearch.cpp
index b585647fb3e..433e027d2be 100644
--- a/searchlib/src/vespa/searchlib/queryeval/truesearch.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/truesearch.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "truesearch.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/truesearch.h b/searchlib/src/vespa/searchlib/queryeval/truesearch.h
index 35a609cb3a7..44f0bdbc65d 100644
--- a/searchlib/src/vespa/searchlib/queryeval/truesearch.h
+++ b/searchlib/src/vespa/searchlib/queryeval/truesearch.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/unpackinfo.cpp b/searchlib/src/vespa/searchlib/queryeval/unpackinfo.cpp
index f8af7700640..170ca58932a 100644
--- a/searchlib/src/vespa/searchlib/queryeval/unpackinfo.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/unpackinfo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "unpackinfo.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/searchlib/src/vespa/searchlib/queryeval/unpackinfo.h b/searchlib/src/vespa/searchlib/queryeval/unpackinfo.h
index 862657f2d28..eedb907bb29 100644
--- a/searchlib/src/vespa/searchlib/queryeval/unpackinfo.h
+++ b/searchlib/src/vespa/searchlib/queryeval/unpackinfo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/CMakeLists.txt b/searchlib/src/vespa/searchlib/queryeval/wand/CMakeLists.txt
index 8ac2533db41..73e96495212 100644
--- a/searchlib/src/vespa/searchlib/queryeval/wand/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/queryeval/wand/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_queryeval_wand OBJECT
SOURCES
parallel_weak_and_blueprint.cpp
diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.cpp
index 4e83c45cbc0..22d9364110c 100644
--- a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "wand_parts.h"
#include "parallel_weak_and_blueprint.h"
#include "parallel_weak_and_search.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.h b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.h
index 5b034b6de0a..cf0b6c1b254 100644
--- a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.h
+++ b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "wand_parts.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.cpp b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.cpp
index 3a7d4d8273a..e4645a504bc 100644
--- a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "parallel_weak_and_search.h"
#include <vespa/searchlib/queryeval/document_weight_search_iterator.h>
diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.h b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.h
index 3e1ab1400e8..3b5925d2914 100644
--- a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.h
+++ b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "wand_parts.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/wand_parts.cpp b/searchlib/src/vespa/searchlib/queryeval/wand/wand_parts.cpp
index c6801d86351..533bc3d6414 100644
--- a/searchlib/src/vespa/searchlib/queryeval/wand/wand_parts.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/wand/wand_parts.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "wand_parts.h"
#include <vespa/vespalib/objects/visit.hpp>
diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/wand_parts.h b/searchlib/src/vespa/searchlib/queryeval/wand/wand_parts.h
index 937e7a089df..c735fb239a8 100644
--- a/searchlib/src/vespa/searchlib/queryeval/wand/wand_parts.h
+++ b/searchlib/src/vespa/searchlib/queryeval/wand/wand_parts.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.cpp b/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.cpp
index 28c229596b0..c044954e35e 100644
--- a/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "weak_and_heap.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.h b/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.h
index 28c317de3ee..6782d8963d1 100644
--- a/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.h
+++ b/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "wand_parts.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_search.cpp b/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_search.cpp
index d94dc6d8ae8..195c606307d 100644
--- a/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_search.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_search.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "wand_parts.h"
#include "weak_and_search.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_search.h b/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_search.h
index e51b5ca102d..6406501b75b 100644
--- a/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_search.h
+++ b/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_search.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_blueprint.cpp
index dad7ff556dd..1835dddb39e 100644
--- a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_blueprint.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_blueprint.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "weighted_set_term_blueprint.h"
#include "weighted_set_term_search.h"
diff --git a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_blueprint.h b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_blueprint.h
index 32964fd827d..b726f55d254 100644
--- a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_blueprint.h
+++ b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_blueprint.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
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 cedb9d02723..683a82150f5 100644
--- a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "weighted_set_term_search.h"
#include <vespa/searchlib/common/bitvector.h>
diff --git a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.h b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.h
index a5086508f9b..ac39c26286d 100644
--- a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.h
+++ b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/tensor/CMakeLists.txt b/searchlib/src/vespa/searchlib/tensor/CMakeLists.txt
index 46bafa189e1..9a35e4a2b05 100644
--- a/searchlib/src/vespa/searchlib/tensor/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/tensor/CMakeLists.txt
@@ -1,7 +1,8 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_tensor OBJECT
SOURCES
angular_distance.cpp
+ bitvector_visited_tracker.cpp
default_nearest_neighbor_index_factory.cpp
dense_tensor_attribute.cpp
dense_tensor_attribute_saver.cpp
@@ -13,9 +14,9 @@ vespa_add_library(searchlib_tensor OBJECT
euclidean_distance.cpp
geo_degrees_distance.cpp
hamming_distance.cpp
+ hash_set_visited_tracker.cpp
hnsw_graph.cpp
hnsw_index.cpp
- hnsw_index_loader.cpp
hnsw_index_saver.cpp
imported_tensor_attribute_vector.cpp
imported_tensor_attribute_vector_read_guard.cpp
@@ -29,5 +30,6 @@ vespa_add_library(searchlib_tensor OBJECT
tensor_attribute.cpp
tensor_deserialize.cpp
tensor_store.cpp
+ reusable_set_visited_tracker.cpp
DEPENDS
)
diff --git a/searchlib/src/vespa/searchlib/tensor/angular_distance.cpp b/searchlib/src/vespa/searchlib/tensor/angular_distance.cpp
index 21b2622283c..263bf91877a 100644
--- a/searchlib/src/vespa/searchlib/tensor/angular_distance.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/angular_distance.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "angular_distance.h"
diff --git a/searchlib/src/vespa/searchlib/tensor/angular_distance.h b/searchlib/src/vespa/searchlib/tensor/angular_distance.h
index ce1fa40b2a4..e3b21f9546e 100644
--- a/searchlib/src/vespa/searchlib/tensor/angular_distance.h
+++ b/searchlib/src/vespa/searchlib/tensor/angular_distance.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/tensor/bitvector_visited_tracker.cpp b/searchlib/src/vespa/searchlib/tensor/bitvector_visited_tracker.cpp
new file mode 100644
index 00000000000..524cc2b9cd5
--- /dev/null
+++ b/searchlib/src/vespa/searchlib/tensor/bitvector_visited_tracker.cpp
@@ -0,0 +1,14 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "bitvector_visited_tracker.h"
+
+namespace search::tensor {
+
+BitVectorVisitedTracker::BitVectorVisitedTracker(const HnswIndex&, uint32_t doc_id_limit, uint32_t)
+ : _visited(doc_id_limit)
+{
+}
+
+BitVectorVisitedTracker::~BitVectorVisitedTracker() = default;
+
+}
diff --git a/searchlib/src/vespa/searchlib/tensor/bitvector_visited_tracker.h b/searchlib/src/vespa/searchlib/tensor/bitvector_visited_tracker.h
new file mode 100644
index 00000000000..bbd49aa0482
--- /dev/null
+++ b/searchlib/src/vespa/searchlib/tensor/bitvector_visited_tracker.h
@@ -0,0 +1,32 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/searchlib/common/allocatedbitvector.h>
+
+namespace search::tensor {
+
+class HnswIndex;
+
+/*
+ * Tracker for visited nodes based on search::AllocatedBitVector. Best when
+ * many nodes are visited.
+ */
+class BitVectorVisitedTracker
+{
+ search::AllocatedBitVector _visited;
+public:
+ BitVectorVisitedTracker(const HnswIndex&, uint32_t doc_id_limit, uint32_t);
+ ~BitVectorVisitedTracker();
+ void mark(uint32_t doc_id) { _visited.setBit(doc_id); }
+ bool try_mark(uint32_t doc_id) {
+ if (_visited.testBit(doc_id)) {
+ return false;
+ } else {
+ _visited.setBit(doc_id);
+ return true;
+ }
+ }
+};
+
+}
diff --git a/searchlib/src/vespa/searchlib/tensor/blob_sequence_reader.h b/searchlib/src/vespa/searchlib/tensor/blob_sequence_reader.h
index 7c34b60e93d..5b7efc73a02 100644
--- a/searchlib/src/vespa/searchlib/tensor/blob_sequence_reader.h
+++ b/searchlib/src/vespa/searchlib/tensor/blob_sequence_reader.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fastlib/io/bufferedfile.h>
#include <vespa/searchlib/attribute/readerbase.h>
@@ -17,10 +17,10 @@ private:
public:
BlobSequenceReader(AttributeVector &attr)
: ReaderBase(attr),
- _sizeReader(*_datFile)
+ _sizeReader(_datFile.file())
{ }
uint32_t getNextSize() { return _sizeReader.readHostOrder(); }
- void readBlob(void *buf, size_t len) { _datFile->ReadBuf(buf, len); }
+ void readBlob(void *buf, size_t len) { _datFile.file().ReadBuf(buf, len); }
};
} // namespace
diff --git a/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute.cpp b/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute.cpp
index be15967ab10..0f4326aac40 100644
--- a/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute.cpp
@@ -1,8 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dense_tensor_attribute.h"
#include "dense_tensor_attribute_saver.h"
#include "nearest_neighbor_index.h"
+#include "nearest_neighbor_index_loader.h"
#include "nearest_neighbor_index_saver.h"
#include "tensor_attribute.hpp"
#include <vespa/eval/eval/value.h>
@@ -10,6 +11,11 @@
#include <vespa/searchlib/attribute/load_utils.h>
#include <vespa/searchlib/attribute/readerbase.h>
#include <vespa/vespalib/data/slime/inserter.h>
+#include <vespa/vespalib/util/lambdatask.h>
+#include <vespa/vespalib/util/memory_allocator.h>
+#include <vespa/vespalib/util/mmap_file_allocator_factory.h>
+#include <vespa/vespalib/util/threadstackexecutor.h>
+#include <thread>
#include <vespa/log/log.h>
LOG_SETUP(".searchlib.tensor.dense_tensor_attribute");
@@ -24,6 +30,7 @@ namespace search::tensor {
namespace {
constexpr uint32_t DENSE_TENSOR_ATTRIBUTE_VERSION = 1;
+constexpr uint32_t LOAD_COMMIT_INTERVAL = 256;
const vespalib::string tensorTypeTag("tensortype");
class BlobSequenceReader : public ReaderBase
@@ -31,23 +38,56 @@ class BlobSequenceReader : public ReaderBase
private:
static constexpr uint8_t tensorIsNotPresent = 0;
static constexpr uint8_t tensorIsPresent = 1;
+ bool _use_index_file;
+ FileWithHeader _index_file;
+
public:
- BlobSequenceReader(AttributeVector &attr);
+ BlobSequenceReader(AttributeVector& attr, bool has_index);
~BlobSequenceReader();
bool is_present();
- void readTensor(void *buf, size_t len) { _datFile->ReadBuf(buf, len); }
+ void readTensor(void *buf, size_t len) { _datFile.file().ReadBuf(buf, len); }
+ bool use_index_file() const { return _use_index_file; }
+ FastOS_FileInterface& index_file() { return _index_file.file(); }
};
-BlobSequenceReader::BlobSequenceReader(AttributeVector &attr)
- : ReaderBase(attr)
+bool
+can_use_index_save_file(const search::attribute::Config &config, const search::attribute::AttributeHeader &header)
+{
+ if (!config.hnsw_index_params().has_value() || !header.get_hnsw_index_params().has_value()) {
+ return false;
+ }
+ const auto &config_params = config.hnsw_index_params().value();
+ const auto &header_params = header.get_hnsw_index_params().value();
+ if ((config_params.max_links_per_node() != header_params.max_links_per_node()) ||
+ (config_params.distance_metric() != header_params.distance_metric())) {
+ return false;
+ }
+ return true;
+}
+
+bool
+has_index_file(AttributeVector& attr)
+{
+ return LoadUtils::file_exists(attr, DenseTensorAttributeSaver::index_file_suffix());
+}
+
+BlobSequenceReader::BlobSequenceReader(AttributeVector& attr, bool has_index)
+ : ReaderBase(attr),
+ _use_index_file(has_index && has_index_file(attr) &&
+ can_use_index_save_file(attr.getConfig(),
+ search::attribute::AttributeHeader::extractTags(getDatHeader()))),
+ _index_file(_use_index_file ?
+ attribute::LoadUtils::openFile(attr, DenseTensorAttributeSaver::index_file_suffix()) :
+ std::unique_ptr<Fast_BufferedFile>())
{
}
+
BlobSequenceReader::~BlobSequenceReader() = default;
bool
BlobSequenceReader::is_present() {
unsigned char detect;
- _datFile->ReadBuf(&detect, sizeof(detect));
+ _datFile.file().ReadBuf(&detect, sizeof(detect));
if (detect == tensorIsNotPresent) {
return false;
}
@@ -57,19 +97,15 @@ BlobSequenceReader::is_present() {
return true;
}
-bool
-can_use_index_save_file(const search::attribute::Config &config, const search::attribute::AttributeHeader &header)
+
+
+std::unique_ptr<vespalib::alloc::MemoryAllocator>
+make_memory_allocator(const vespalib::string& name, bool swappable)
{
- if (!config.hnsw_index_params().has_value() || !header.get_hnsw_index_params().has_value()) {
- return false;
- }
- const auto &config_params = config.hnsw_index_params().value();
- const auto &header_params = header.get_hnsw_index_params().value();
- if ((config_params.max_links_per_node() != header_params.max_links_per_node()) ||
- (config_params.distance_metric() != header_params.distance_metric())) {
- return false;
+ if (swappable) {
+ return vespalib::alloc::MmapFileAllocatorFactory::instance().make_memory_allocator(name);
}
- return true;
+ return {};
}
}
@@ -111,10 +147,19 @@ DenseTensorAttribute::memory_usage() const
return result;
}
+void
+DenseTensorAttribute::populate_address_space_usage(AddressSpaceUsage& usage) const
+{
+ TensorAttribute::populate_address_space_usage(usage);
+ if (_index) {
+ _index->populate_address_space_usage(usage);
+ }
+}
+
DenseTensorAttribute::DenseTensorAttribute(vespalib::stringref baseFileName, const Config& cfg,
const NearestNeighborIndexFactory& index_factory)
: TensorAttribute(baseFileName, cfg, _denseTensorStore),
- _denseTensorStore(cfg.tensorType()),
+ _denseTensorStore(cfg.tensorType(), make_memory_allocator(getName(), cfg.paged())),
_index()
{
if (cfg.hnsw_index_params().has_value()) {
@@ -190,46 +235,175 @@ DenseTensorAttribute::extract_cells_ref(DocId docId) const
}
return _denseTensorStore.get_typed_cells(ref);
}
+namespace {
+class Loader {
+public:
+ virtual ~Loader() = default;
+ virtual void load(uint32_t lid, vespalib::datastore::EntryRef ref) = 0;
+ virtual void wait_complete() = 0;
+};
+}
+
+/**
+ * Will load and index documents in parallel. Note that indexing order is not guaranteed,
+ * but that is inline with the guarantees vespa already has.
+ */
+class DenseTensorAttribute::ThreadedLoader : public Loader {
+public:
+ ThreadedLoader(DenseTensorAttribute & attr, vespalib::Executor & shared_executor)
+ : _attr(attr),
+ _shared_executor(shared_executor),
+ _queue(MAX_PENDING),
+ _pending(0)
+ {}
+ void load(uint32_t lid, vespalib::datastore::EntryRef ref) override;
+ void wait_complete() override {
+ drainUntilPending(0);
+ }
+private:
+ using Entry = std::pair<uint32_t, std::unique_ptr<PrepareResult>>;
+ using Queue = vespalib::ArrayQueue<Entry>;
+
+ bool pop(Entry & entry) {
+ std::unique_lock guard(_mutex);
+ if (_queue.empty()) return false;
+ entry = std::move(_queue.front());
+ _queue.pop();
+ return true;
+ }
+ void drainQ() {
+ Queue queue(MAX_PENDING);
+ {
+ std::unique_lock guard(_mutex);
+ queue.swap(_queue);
+ }
+ while (!queue.empty()) {
+ auto item = std::move(queue.front());
+ queue.pop();
+ complete(item.first, std::move(item.second));
+ }
+ }
+
+ void complete(uint32_t lid, std::unique_ptr<PrepareResult> prepared) {
+ _attr.setCommittedDocIdLimit(std::max(_attr.getCommittedDocIdLimit(), lid + 1));
+ _attr._index->complete_add_document(lid, std::move(prepared));
+ --_pending;
+ if ((lid % LOAD_COMMIT_INTERVAL) == 0) {
+ _attr.commit();
+ };
+ }
+ void drainUntilPending(uint32_t maxPending) {
+ while (_pending > maxPending) {
+ {
+ std::unique_lock guard(_mutex);
+ while (_queue.empty()) {
+ _cond.wait(guard);
+ }
+ }
+ drainQ();
+ }
+ }
+ static constexpr uint32_t MAX_PENDING = 1000;
+ DenseTensorAttribute & _attr;
+ vespalib::Executor & _shared_executor;
+ std::mutex _mutex;
+ std::condition_variable _cond;
+ Queue _queue;
+ uint64_t _pending; // _pending is only modified in forground thread
+};
+
+void
+DenseTensorAttribute::ThreadedLoader::load(uint32_t lid, vespalib::datastore::EntryRef ref) {
+ Entry item;
+ while (pop(item)) {
+ // First process items that are ready to complete
+ complete(item.first, std::move(item.second));
+ }
+ // Then ensure that there no mor ethan MAX_PENDING inflight
+ drainUntilPending(MAX_PENDING);
+
+ // Then we can issue a new one
+ ++_pending;
+ _shared_executor.execute(vespalib::makeLambdaTask([this, ref, lid]() {
+ auto prepared = _attr._index->prepare_add_document(lid, _attr._denseTensorStore.get_typed_cells(ref),
+ _attr.getGenerationHandler().takeGuard());
+ std::unique_lock guard(_mutex);
+ _queue.push(std::make_pair(lid, std::move(prepared)));
+ if (_queue.size() == 1) {
+ _cond.notify_all();
+ }
+ }));
+}
+class DenseTensorAttribute::ForegroundLoader : public Loader {
+public:
+ ForegroundLoader(DenseTensorAttribute & attr) : _attr(attr) {}
+ void load(uint32_t lid, vespalib::datastore::EntryRef) override {
+ // This ensures that get_vector() (via getTensor()) is able to find the newly added tensor.
+ _attr.setCommittedDocIdLimit(lid + 1);
+ _attr._index->add_document(lid);
+ if ((lid % LOAD_COMMIT_INTERVAL) == 0) {
+ _attr.commit();
+ }
+ }
+ void wait_complete() override {
+
+ }
+private:
+ DenseTensorAttribute & _attr;
+};
bool
-DenseTensorAttribute::onLoad()
+DenseTensorAttribute::onLoad(vespalib::Executor *executor)
{
- BlobSequenceReader tensorReader(*this);
- if (!tensorReader.hasData()) {
+ BlobSequenceReader reader(*this, _index.get() != nullptr);
+ if (!reader.hasData()) {
return false;
}
- bool has_index_file = LoadUtils::file_exists(*this, DenseTensorAttributeSaver::index_file_suffix());
- bool use_index_file = has_index_file && _index && can_use_index_save_file(getConfig(), search::attribute::AttributeHeader::extractTags(tensorReader.getDatHeader()));
-
- setCreateSerialNum(tensorReader.getCreateSerialNum());
- assert(tensorReader.getVersion() == DENSE_TENSOR_ATTRIBUTE_VERSION);
+ setCreateSerialNum(reader.getCreateSerialNum());
+ assert(reader.getVersion() == DENSE_TENSOR_ATTRIBUTE_VERSION);
assert(getConfig().tensorType().to_spec() ==
- tensorReader.getDatHeader().getTag(tensorTypeTag).asString());
- uint32_t numDocs(tensorReader.getDocIdLimit());
+ reader.getDatHeader().getTag(tensorTypeTag).asString());
+ uint32_t numDocs(reader.getDocIdLimit());
_refVector.reset();
_refVector.unsafe_reserve(numDocs);
+ std::unique_ptr<Loader> loader;
+ if (_index && !reader.use_index_file()) {
+ if (executor != nullptr) {
+ loader = std::make_unique<ThreadedLoader>(*this, *executor);
+ } else {
+ loader = std::make_unique<ForegroundLoader>(*this);
+ }
+ }
for (uint32_t lid = 0; lid < numDocs; ++lid) {
- if (tensorReader.is_present()) {
+ if (reader.is_present()) {
auto raw = _denseTensorStore.allocRawBuffer();
- tensorReader.readTensor(raw.data, _denseTensorStore.getBufSize());
+ reader.readTensor(raw.data, _denseTensorStore.getBufSize());
_refVector.push_back(raw.ref);
- if (_index && !use_index_file) {
- // This ensures that get_vector() (via getTensor()) is able to find the newly added tensor.
- setCommittedDocIdLimit(lid + 1);
- _index->add_document(lid);
- if ((lid % 256) == 0) {
- commit();
- }
+ if (loader) {
+ loader->load(lid, raw.ref);
}
} else {
_refVector.push_back(EntryRef());
}
}
+ if (loader) {
+ loader->wait_complete();
+ }
+ commit();
setNumDocs(numDocs);
setCommittedDocIdLimit(numDocs);
- if (_index && use_index_file) {
- auto buffer = LoadUtils::loadFile(*this, DenseTensorAttributeSaver::index_file_suffix());
- if (!_index->load(*buffer)) {
+ if (_index && reader.use_index_file()) {
+ try {
+ auto index_loader = _index->make_loader(reader.index_file());
+ size_t cnt = 0;
+ while (index_loader->load_next()) {
+ if ((++cnt % LOAD_COMMIT_INTERVAL) == 0) {
+ commit();
+ }
+ }
+ } catch (const std::runtime_error& ex) {
+ LOG(error, "Exception while loading nearest neighbor index for tensor attribute '%s': %s",
+ getName().c_str(), ex.what());
return false;
}
}
@@ -240,8 +414,7 @@ DenseTensorAttribute::onLoad()
std::unique_ptr<AttributeSaver>
DenseTensorAttribute::onInitSave(vespalib::stringref fileName)
{
- vespalib::GenerationHandler::Guard guard(getGenerationHandler().
- takeGuard());
+ vespalib::GenerationHandler::Guard guard(getGenerationHandler().takeGuard());
auto index_saver = (_index ? _index->make_saver() : std::unique_ptr<NearestNeighborIndexSaver>());
return std::make_unique<DenseTensorAttributeSaver>
(std::move(guard),
@@ -264,6 +437,18 @@ DenseTensorAttribute::getVersion() const
}
void
+DenseTensorAttribute::onCommit()
+{
+ TensorAttribute::onCommit();
+ if (_index) {
+ if (_index->consider_compact(getConfig().getCompactionStrategy())) {
+ incGeneration();
+ updateStat(true);
+ }
+ }
+}
+
+void
DenseTensorAttribute::onGenerationChange(generation_t next_gen)
{
// TODO: Change onGenerationChange() to send current generation instead of next generation.
@@ -294,6 +479,15 @@ DenseTensorAttribute::get_state(const vespalib::slime::Inserter& inserter) const
}
}
+void
+DenseTensorAttribute::onShrinkLidSpace()
+{
+ TensorAttribute::onShrinkLidSpace();
+ if (_index) {
+ _index->shrink_lid_space(getCommittedDocIdLimit());
+ }
+}
+
vespalib::eval::TypedCells
DenseTensorAttribute::get_vector(uint32_t docid) const
{
diff --git a/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute.h b/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute.h
index 0884b776ca5..da7a88af1be 100644
--- a/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute.h
+++ b/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -25,11 +25,13 @@ private:
void consider_remove_from_index(DocId docid);
vespalib::MemoryUsage update_stat() override;
vespalib::MemoryUsage memory_usage() const override;
-
+ void populate_address_space_usage(AddressSpaceUsage& usage) const override;
+ class ThreadedLoader;
+ class ForegroundLoader;
public:
DenseTensorAttribute(vespalib::stringref baseFileName, const Config& cfg,
const NearestNeighborIndexFactory& index_factory = DefaultNearestNeighborIndexFactory());
- virtual ~DenseTensorAttribute();
+ ~DenseTensorAttribute() override;
// Implements AttributeVector and ITensorAttribute
uint32_t clearDoc(DocId docId) override;
void setTensor(DocId docId, const vespalib::eval::Value &tensor) override;
@@ -38,13 +40,15 @@ public:
std::unique_ptr<vespalib::eval::Value> getTensor(DocId docId) const override;
vespalib::eval::TypedCells extract_cells_ref(DocId docId) const override;
bool supports_extract_cells_ref() const override { return true; }
- bool onLoad() override;
+ bool onLoad(vespalib::Executor *executor) override;
std::unique_ptr<AttributeSaver> onInitSave(vespalib::stringref fileName) override;
void compactWorst() override;
uint32_t getVersion() const override;
+ void onCommit() override;
void onGenerationChange(generation_t next_gen) override;
void removeOldGenerations(generation_t first_used_gen) override;
void get_state(const vespalib::slime::Inserter& inserter) const override;
+ void onShrinkLidSpace() override;
// Implements DocVectorAccess
vespalib::eval::TypedCells get_vector(uint32_t docid) const override;
diff --git a/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute_saver.cpp b/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute_saver.cpp
index cc43a694a69..5c98da91034 100644
--- a/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute_saver.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute_saver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dense_tensor_attribute_saver.h"
#include "dense_tensor_store.h"
diff --git a/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute_saver.h b/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute_saver.h
index 895e2951cea..731602f6a56 100644
--- a/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute_saver.h
+++ b/searchlib/src/vespa/searchlib/tensor/dense_tensor_attribute_saver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/tensor/dense_tensor_store.cpp b/searchlib/src/vespa/searchlib/tensor/dense_tensor_store.cpp
index e6da839da2e..d3c2998333a 100644
--- a/searchlib/src/vespa/searchlib/tensor/dense_tensor_store.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/dense_tensor_store.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dense_tensor_store.h"
#include <vespa/eval/eval/value.h>
@@ -40,8 +40,9 @@ DenseTensorStore::TensorSizeCalc::alignedSize() const
return my_align(bufSize(), DENSE_TENSOR_ALIGNMENT);
}
-DenseTensorStore::BufferType::BufferType(const TensorSizeCalc &tensorSizeCalc)
- : vespalib::datastore::BufferType<char>(tensorSizeCalc.alignedSize(), MIN_BUFFER_ARRAYS, RefType::offsetSize())
+DenseTensorStore::BufferType::BufferType(const TensorSizeCalc &tensorSizeCalc, std::unique_ptr<vespalib::alloc::MemoryAllocator> allocator)
+ : vespalib::datastore::BufferType<char>(tensorSizeCalc.alignedSize(), MIN_BUFFER_ARRAYS, RefType::offsetSize()),
+ _allocator(std::move(allocator))
{}
DenseTensorStore::BufferType::~BufferType() = default;
@@ -53,11 +54,17 @@ DenseTensorStore::BufferType::cleanHold(void *buffer, size_t offset,
memset(static_cast<char *>(buffer) + offset, 0, numElems);
}
-DenseTensorStore::DenseTensorStore(const ValueType &type)
+const vespalib::alloc::MemoryAllocator*
+DenseTensorStore::BufferType::get_memory_allocator() const
+{
+ return _allocator.get();
+}
+
+DenseTensorStore::DenseTensorStore(const ValueType &type, std::unique_ptr<vespalib::alloc::MemoryAllocator> allocator)
: TensorStore(_concreteStore),
_concreteStore(),
_tensorSizeCalc(type),
- _bufferType(_tensorSizeCalc),
+ _bufferType(_tensorSizeCalc, std::move(allocator)),
_type(type),
_emptySpace()
{
diff --git a/searchlib/src/vespa/searchlib/tensor/dense_tensor_store.h b/searchlib/src/vespa/searchlib/tensor/dense_tensor_store.h
index 638f602d613..3b7cb71863e 100644
--- a/searchlib/src/vespa/searchlib/tensor/dense_tensor_store.h
+++ b/searchlib/src/vespa/searchlib/tensor/dense_tensor_store.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -36,10 +36,12 @@ public:
class BufferType : public vespalib::datastore::BufferType<char>
{
using CleanContext = vespalib::datastore::BufferType<char>::CleanContext;
+ std::unique_ptr<vespalib::alloc::MemoryAllocator> _allocator;
public:
- BufferType(const TensorSizeCalc &tensorSizeCalc);
+ BufferType(const TensorSizeCalc &tensorSizeCalc, std::unique_ptr<vespalib::alloc::MemoryAllocator> allocator);
~BufferType() override;
void cleanHold(void *buffer, size_t offset, ElemCount numElems, CleanContext cleanCtx) override;
+ const vespalib::alloc::MemoryAllocator* get_memory_allocator() const override;
};
private:
DataStoreType _concreteStore;
@@ -55,7 +57,7 @@ private:
setDenseTensor(const TensorType &tensor);
public:
- DenseTensorStore(const ValueType &type);
+ DenseTensorStore(const ValueType &type, std::unique_ptr<vespalib::alloc::MemoryAllocator> allocator);
~DenseTensorStore() override;
const ValueType &type() const { return _type; }
diff --git a/searchlib/src/vespa/searchlib/tensor/direct_tensor_attribute.cpp b/searchlib/src/vespa/searchlib/tensor/direct_tensor_attribute.cpp
index c89f83defea..0cb23fe2ae9 100644
--- a/searchlib/src/vespa/searchlib/tensor/direct_tensor_attribute.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/direct_tensor_attribute.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "direct_tensor_attribute.h"
#include "direct_tensor_saver.h"
@@ -30,7 +30,7 @@ DirectTensorAttribute::~DirectTensorAttribute()
}
bool
-DirectTensorAttribute::onLoad()
+DirectTensorAttribute::onLoad(vespalib::Executor *)
{
BlobSequenceReader tensorReader(*this);
if (!tensorReader.hasData()) {
diff --git a/searchlib/src/vespa/searchlib/tensor/direct_tensor_attribute.h b/searchlib/src/vespa/searchlib/tensor/direct_tensor_attribute.h
index dfa5ff0b3ce..779cca59abb 100644
--- a/searchlib/src/vespa/searchlib/tensor/direct_tensor_attribute.h
+++ b/searchlib/src/vespa/searchlib/tensor/direct_tensor_attribute.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -21,7 +21,7 @@ public:
const document::TensorUpdate &update,
bool create_empty_if_non_existing) override;
virtual std::unique_ptr<vespalib::eval::Value> getTensor(DocId docId) const override;
- virtual bool onLoad() override;
+ virtual bool onLoad(vespalib::Executor *executor) override;
virtual std::unique_ptr<AttributeSaver> onInitSave(vespalib::stringref fileName) override;
virtual void compactWorst() override;
diff --git a/searchlib/src/vespa/searchlib/tensor/direct_tensor_saver.cpp b/searchlib/src/vespa/searchlib/tensor/direct_tensor_saver.cpp
index b4b41187c8f..024b2fe5467 100644
--- a/searchlib/src/vespa/searchlib/tensor/direct_tensor_saver.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/direct_tensor_saver.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "direct_tensor_saver.h"
#include "direct_tensor_store.h"
diff --git a/searchlib/src/vespa/searchlib/tensor/direct_tensor_saver.h b/searchlib/src/vespa/searchlib/tensor/direct_tensor_saver.h
index 59a3ffc0cdd..132e1570f0f 100644
--- a/searchlib/src/vespa/searchlib/tensor/direct_tensor_saver.h
+++ b/searchlib/src/vespa/searchlib/tensor/direct_tensor_saver.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/tensor/direct_tensor_store.cpp b/searchlib/src/vespa/searchlib/tensor/direct_tensor_store.cpp
index 512352270a2..54f95e1c543 100644
--- a/searchlib/src/vespa/searchlib/tensor/direct_tensor_store.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/direct_tensor_store.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "direct_tensor_store.h"
#include <vespa/eval/eval/value.h>
diff --git a/searchlib/src/vespa/searchlib/tensor/direct_tensor_store.h b/searchlib/src/vespa/searchlib/tensor/direct_tensor_store.h
index f2867eaa643..776920ab930 100644
--- a/searchlib/src/vespa/searchlib/tensor/direct_tensor_store.h
+++ b/searchlib/src/vespa/searchlib/tensor/direct_tensor_store.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/tensor/distance_function.h b/searchlib/src/vespa/searchlib/tensor/distance_function.h
index 4c1cd2c5608..77873cb7ced 100644
--- a/searchlib/src/vespa/searchlib/tensor/distance_function.h
+++ b/searchlib/src/vespa/searchlib/tensor/distance_function.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/tensor/distance_function_factory.cpp b/searchlib/src/vespa/searchlib/tensor/distance_function_factory.cpp
index 8ae9441ff11..315d4c8535c 100644
--- a/searchlib/src/vespa/searchlib/tensor/distance_function_factory.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/distance_function_factory.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "distance_function_factory.h"
#include "distance_functions.h"
diff --git a/searchlib/src/vespa/searchlib/tensor/distance_function_factory.h b/searchlib/src/vespa/searchlib/tensor/distance_function_factory.h
index abb1f503694..2d7eb4e73c1 100644
--- a/searchlib/src/vespa/searchlib/tensor/distance_function_factory.h
+++ b/searchlib/src/vespa/searchlib/tensor/distance_function_factory.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/tensor/distance_functions.h b/searchlib/src/vespa/searchlib/tensor/distance_functions.h
index 8ad8c07bd3c..b28cc2bda46 100644
--- a/searchlib/src/vespa/searchlib/tensor/distance_functions.h
+++ b/searchlib/src/vespa/searchlib/tensor/distance_functions.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/tensor/euclidean_distance.cpp b/searchlib/src/vespa/searchlib/tensor/euclidean_distance.cpp
index 223ceeed940..c83f1821321 100644
--- a/searchlib/src/vespa/searchlib/tensor/euclidean_distance.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/euclidean_distance.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "euclidean_distance.h"
diff --git a/searchlib/src/vespa/searchlib/tensor/euclidean_distance.h b/searchlib/src/vespa/searchlib/tensor/euclidean_distance.h
index f0eb03293cd..517ef68511b 100644
--- a/searchlib/src/vespa/searchlib/tensor/euclidean_distance.h
+++ b/searchlib/src/vespa/searchlib/tensor/euclidean_distance.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/tensor/geo_degrees_distance.cpp b/searchlib/src/vespa/searchlib/tensor/geo_degrees_distance.cpp
index 946caa0d2cb..bcce75da3ab 100644
--- a/searchlib/src/vespa/searchlib/tensor/geo_degrees_distance.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/geo_degrees_distance.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "geo_degrees_distance.h"
diff --git a/searchlib/src/vespa/searchlib/tensor/geo_degrees_distance.h b/searchlib/src/vespa/searchlib/tensor/geo_degrees_distance.h
index 7ce69ef8aae..46feee19119 100644
--- a/searchlib/src/vespa/searchlib/tensor/geo_degrees_distance.h
+++ b/searchlib/src/vespa/searchlib/tensor/geo_degrees_distance.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/tensor/hamming_distance.cpp b/searchlib/src/vespa/searchlib/tensor/hamming_distance.cpp
index ef00321a145..7f9f20e07c4 100644
--- a/searchlib/src/vespa/searchlib/tensor/hamming_distance.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/hamming_distance.cpp
@@ -1,6 +1,7 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "hamming_distance.h"
+#include <vespa/vespalib/util/binary_hamming_distance.h>
using vespalib::typify_invoke;
using vespalib::eval::TypifyCellType;
@@ -34,25 +35,9 @@ HammingDistance::calc(const vespalib::eval::TypedCells& lhs,
{
constexpr auto expected = vespalib::eval::CellType::INT8;
if (__builtin_expect((lhs.type == expected && rhs.type == expected), true)) {
- const uint64_t *words_a = static_cast<const uint64_t *>(lhs.data);
- const uint64_t *words_b = static_cast<const uint64_t *>(rhs.data);
- size_t sum = 0;
size_t sz = lhs.size;
assert(sz == rhs.size);
- size_t i = 0;
- for (; i * 8 + 7 < sz; ++i) {
- uint64_t xor_bits = words_a[i] ^ words_b[i];
- sum += __builtin_popcountl(xor_bits);
- }
- if (__builtin_expect((i * 8 < sz), false)) {
- const uint8_t *bytes_a = static_cast<const uint8_t *>(lhs.data);
- const uint8_t *bytes_b = static_cast<const uint8_t *>(rhs.data);
- for (i *= 8; i < sz; ++i) {
- uint64_t xor_bits = bytes_a[i] ^ bytes_b[i];
- sum += __builtin_popcountl(xor_bits);
- }
- }
- return (double)sum;
+ return (double) vespalib::binary_hamming_distance(lhs.data, rhs.data, sz);
} else {
return typify_invoke<2,TypifyCellType,CalcHamming>(lhs.type, rhs.type, lhs, rhs);
}
diff --git a/searchlib/src/vespa/searchlib/tensor/hamming_distance.h b/searchlib/src/vespa/searchlib/tensor/hamming_distance.h
index d92671e4922..f0b7b159b90 100644
--- a/searchlib/src/vespa/searchlib/tensor/hamming_distance.h
+++ b/searchlib/src/vespa/searchlib/tensor/hamming_distance.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/tensor/hash_set_visited_tracker.cpp b/searchlib/src/vespa/searchlib/tensor/hash_set_visited_tracker.cpp
new file mode 100644
index 00000000000..fb7d6413a45
--- /dev/null
+++ b/searchlib/src/vespa/searchlib/tensor/hash_set_visited_tracker.cpp
@@ -0,0 +1,14 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "hash_set_visited_tracker.h"
+
+namespace search::tensor {
+
+HashSetVisitedTracker::HashSetVisitedTracker(const HnswIndex&, uint32_t, uint32_t estimated_visited_nodes)
+ : _visited(estimated_visited_nodes)
+{
+}
+
+HashSetVisitedTracker::~HashSetVisitedTracker() = default;
+
+}
diff --git a/searchlib/src/vespa/searchlib/tensor/hash_set_visited_tracker.h b/searchlib/src/vespa/searchlib/tensor/hash_set_visited_tracker.h
new file mode 100644
index 00000000000..c2a14235f47
--- /dev/null
+++ b/searchlib/src/vespa/searchlib/tensor/hash_set_visited_tracker.h
@@ -0,0 +1,27 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/vespalib/stllike/hash_set.h>
+
+namespace search::tensor {
+
+class HnswIndex;
+
+/*
+ * Tracker for visited nodes based on vespalib::hash_set<uint32_t>. Best when
+ * only a small portion of the nodes are visited.
+ */
+class HashSetVisitedTracker
+{
+ vespalib::hash_set<uint32_t> _visited;
+public:
+ HashSetVisitedTracker(const HnswIndex&, uint32_t, uint32_t estimated_visited_nodes);
+ ~HashSetVisitedTracker();
+ void mark(uint32_t doc_id) { _visited.insert(doc_id); }
+ bool try_mark(uint32_t doc_id) {
+ return _visited.insert(doc_id).second;
+ }
+};
+
+}
diff --git a/searchlib/src/vespa/searchlib/tensor/hnsw_graph.cpp b/searchlib/src/vespa/searchlib/tensor/hnsw_graph.cpp
index b1545d587b8..6eb215273ad 100644
--- a/searchlib/src/vespa/searchlib/tensor/hnsw_graph.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/hnsw_graph.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "hnsw_graph.h"
#include "hnsw_index.h"
@@ -9,6 +9,7 @@ namespace search::tensor {
HnswGraph::HnswGraph()
: node_refs(),
+ node_refs_size(1u),
nodes(HnswIndex::make_default_node_store_config()),
links(HnswIndex::make_default_link_store_config()),
entry_docid_and_level()
@@ -30,6 +31,9 @@ HnswGraph::make_node_for_document(uint32_t docid, uint32_t num_levels)
vespalib::Array<AtomicEntryRef> levels(num_levels, AtomicEntryRef());
auto node_ref = nodes.add(levels);
node_refs[docid].store_release(node_ref);
+ if (docid >= node_refs_size.load(std::memory_order_relaxed)) {
+ node_refs_size.store(docid + 1, std::memory_order_release);
+ }
return node_ref;
}
@@ -47,6 +51,19 @@ HnswGraph::remove_node_for_document(uint32_t docid)
auto old_links_ref = levels[i].load_acquire();
links.remove(old_links_ref);
}
+ if (docid + 1 == node_refs_size.load(std::memory_order_relaxed)) {
+ trim_node_refs_size();
+ }
+}
+
+void
+HnswGraph::trim_node_refs_size()
+{
+ uint32_t check_doc_id = node_refs_size.load(std::memory_order_relaxed) - 1;
+ while (check_doc_id > 0u && !node_refs[check_doc_id].load_relaxed().valid()) {
+ --check_doc_id;
+ }
+ node_refs_size.store(check_doc_id + 1, std::memory_order_release);
}
void
diff --git a/searchlib/src/vespa/searchlib/tensor/hnsw_graph.h b/searchlib/src/vespa/searchlib/tensor/hnsw_graph.h
index ce2bc172752..5d6cff73102 100644
--- a/searchlib/src/vespa/searchlib/tensor/hnsw_graph.h
+++ b/searchlib/src/vespa/searchlib/tensor/hnsw_graph.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -10,7 +10,7 @@
namespace search::tensor {
/**
- * Stroage of a hierarchical navigable small world graph (HNSW)
+ * Storage of a hierarchical navigable small world graph (HNSW)
* that is used for approximate K-nearest neighbor search.
*/
struct HnswGraph {
@@ -18,7 +18,10 @@ struct HnswGraph {
// This uses 10 bits for buffer id -> 1024 buffers.
// As we have very short arrays we get less fragmentation with fewer and larger buffers.
- using EntryRefType = vespalib::datastore::EntryRefT<22>;
+ using LevelArrayEntryRefType = vespalib::datastore::EntryRefT<22>;
+
+ // This uses 12 bits for buffer id -> 4096 buffers.
+ using LinkArrayEntryRefType = vespalib::datastore::EntryRefT<20>;
// Provides mapping from document id -> node reference.
// The reference is used to lookup the node data in NodeStore.
@@ -27,16 +30,17 @@ struct HnswGraph {
// This stores the level arrays for all nodes.
// Each node consists of an array of levels (from level 0 to n) where each entry is a reference to the link array at that level.
- using NodeStore = vespalib::datastore::ArrayStore<AtomicEntryRef, EntryRefType>;
+ using NodeStore = vespalib::datastore::ArrayStore<AtomicEntryRef, LevelArrayEntryRefType>;
using StoreConfig = vespalib::datastore::ArrayStoreConfig;
using LevelArrayRef = NodeStore::ConstArrayRef;
// This stores all link arrays.
// A link array consists of the document ids of the nodes a particular node is linked to.
- using LinkStore = vespalib::datastore::ArrayStore<uint32_t, EntryRefType>;
+ using LinkStore = vespalib::datastore::ArrayStore<uint32_t, LinkArrayEntryRefType>;
using LinkArrayRef = LinkStore::ConstArrayRef;
NodeRefVector node_refs;
+ std::atomic<uint32_t> node_refs_size;
NodeStore nodes;
LinkStore links;
@@ -49,6 +53,8 @@ struct HnswGraph {
void remove_node_for_document(uint32_t docid);
+ void trim_node_refs_size();
+
NodeRef get_node_ref(uint32_t docid) const {
return node_refs[docid].load_acquire();
}
diff --git a/searchlib/src/vespa/searchlib/tensor/hnsw_index.cpp b/searchlib/src/vespa/searchlib/tensor/hnsw_index.cpp
index 545ee7cfa96..7e0efb78ce6 100644
--- a/searchlib/src/vespa/searchlib/tensor/hnsw_index.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/hnsw_index.cpp
@@ -1,10 +1,17 @@
// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include "bitvector_visited_tracker.h"
#include "distance_function.h"
+#include "hash_set_visited_tracker.h"
#include "hnsw_index.h"
-#include "hnsw_index_loader.h"
+#include "hnsw_index_loader.hpp"
#include "hnsw_index_saver.h"
#include "random_level_generator.h"
+#include "reusable_set_visited_tracker.h"
+#include <vespa/searchcommon/common/compaction_strategy.h>
+#include <vespa/searchlib/attribute/address_space_components.h>
+#include <vespa/searchlib/attribute/address_space_usage.h>
+#include <vespa/searchlib/util/fileutil.h>
#include <vespa/searchlib/util/state_explorer_utils.h>
#include <vespa/vespalib/data/slime/cursor.h>
#include <vespa/vespalib/data/slime/inserter.h>
@@ -12,12 +19,16 @@
#include <vespa/vespalib/util/memory_allocator.h>
#include <vespa/vespalib/util/rcuvector.hpp>
#include <vespa/vespalib/util/size_literals.h>
+#include <vespa/vespalib/util/time.h>
#include <vespa/log/log.h>
LOG_SETUP(".searchlib.tensor.hnsw_index");
+#define USE_OLD_VISITED_TRACKER 0
+
namespace search::tensor {
+using search::AddressSpaceComponents;
using search::StateExplorerUtils;
using vespalib::datastore::EntryRef;
@@ -29,7 +40,8 @@ constexpr size_t min_num_arrays_for_new_buffer = 512_Ki;
constexpr float alloc_grow_factor = 0.3;
// TODO: Adjust these numbers to what we accept as max in config.
constexpr size_t max_level_array_size = 16;
-constexpr size_t max_link_array_size = 64;
+constexpr size_t max_link_array_size = 193;
+constexpr vespalib::duration MAX_COUNT_DURATION(100ms);
bool has_link_to(vespalib::ConstArrayRef<uint32_t> links, uint32_t id) {
for (uint32_t link : links) {
@@ -200,6 +212,29 @@ HnswIndex::calc_distance(const TypedCells& lhs, uint32_t rhs_docid) const
return _distance_func->calc(lhs, rhs);
}
+uint32_t
+HnswIndex::estimate_visited_nodes(uint32_t level, uint32_t doc_id_limit, uint32_t neighbors_to_find, const search::BitVector* filter) const
+{
+ uint32_t m_for_level = max_links_for_level(level);
+ uint64_t base_estimate = uint64_t(m_for_level) * neighbors_to_find + 100;
+ if (base_estimate >= doc_id_limit) {
+ return doc_id_limit;
+ }
+ if (!filter) {
+ return base_estimate;
+ }
+ uint32_t true_bits = filter->countTrueBits();
+ if (true_bits == 0) {
+ return doc_id_limit;
+ }
+ double scaler = double(filter->size()) / true_bits;
+ double scaled_estimate = scaler * base_estimate;
+ if (scaled_estimate >= doc_id_limit) {
+ return doc_id_limit;
+ }
+ return scaled_estimate;
+}
+
HnswCandidate
HnswIndex::find_nearest_in_layer(const TypedCells& input, const HnswCandidate& entry_point, uint32_t level) const
{
@@ -221,16 +256,14 @@ HnswIndex::find_nearest_in_layer(const TypedCells& input, const HnswCandidate& e
return nearest;
}
+template <class VisitedTracker>
void
-HnswIndex::search_layer(const TypedCells& input, uint32_t neighbors_to_find,
- FurthestPriQ& best_neighbors, uint32_t level, const search::BitVector *filter) const
+HnswIndex::search_layer_helper(const TypedCells& input, uint32_t neighbors_to_find,
+ FurthestPriQ& best_neighbors, uint32_t level, const search::BitVector *filter,
+ uint32_t doc_id_limit, uint32_t estimated_visited_nodes) const
{
NearestPriQ candidates;
- uint32_t doc_id_limit = _graph.node_refs.size();
- if (filter) {
- doc_id_limit = std::min(filter->size(), doc_id_limit);
- }
- auto visited = _visited_set_pool.get(doc_id_limit);
+ VisitedTracker visited(*this, doc_id_limit, estimated_visited_nodes);
for (const auto &entry : best_neighbors.peek()) {
if (entry.docid >= doc_id_limit) {
continue;
@@ -251,14 +284,15 @@ HnswIndex::search_layer(const TypedCells& input, uint32_t neighbors_to_find,
}
candidates.pop();
for (uint32_t neighbor_docid : _graph.get_link_array(cand.node_ref, level)) {
+ if (neighbor_docid >= doc_id_limit) {
+ continue;
+ }
auto neighbor_ref = _graph.get_node_ref(neighbor_docid);
if ((! neighbor_ref.valid())
- || (neighbor_docid >= doc_id_limit)
- || visited.is_marked(neighbor_docid))
+ || ! visited.try_mark(neighbor_docid))
{
continue;
}
- visited.mark(neighbor_docid);
double dist_to_input = calc_distance(input, neighbor_docid);
if (dist_to_input < limit_dist) {
candidates.emplace(neighbor_docid, neighbor_ref, dist_to_input);
@@ -274,14 +308,38 @@ HnswIndex::search_layer(const TypedCells& input, uint32_t neighbors_to_find,
}
}
+void
+HnswIndex::search_layer(const TypedCells& input, uint32_t neighbors_to_find,
+ FurthestPriQ& best_neighbors, uint32_t level, const search::BitVector *filter) const
+{
+ uint32_t doc_id_limit = _graph.node_refs_size.load(std::memory_order_acquire);
+ if (filter) {
+ doc_id_limit = std::min(filter->size(), doc_id_limit);
+ }
+ uint32_t estimated_visited_nodes = estimate_visited_nodes(level, doc_id_limit, neighbors_to_find, filter);
+#if ! USE_OLD_VISITED_TRACKER
+ if (estimated_visited_nodes >= doc_id_limit / 128) {
+ search_layer_helper<BitVectorVisitedTracker>(input, neighbors_to_find, best_neighbors, level, filter, doc_id_limit, estimated_visited_nodes);
+ } else {
+ search_layer_helper<HashSetVisitedTracker>(input, neighbors_to_find, best_neighbors, level, filter, doc_id_limit, estimated_visited_nodes);
+ }
+#else
+ search_layer_helper<ReusableSetVisitedTracker>(input, neighbors_to_find, best_neighbors, level, filter, doc_id_limit, estimated_visited_nodes);
+#endif
+}
+
HnswIndex::HnswIndex(const DocVectorAccess& vectors, DistanceFunction::UP distance_func,
RandomLevelGenerator::UP level_generator, const Config& cfg)
- :
- _graph(),
+ : _graph(),
_vectors(vectors),
_distance_func(std::move(distance_func)),
_level_generator(std::move(level_generator)),
- _cfg(cfg)
+ _cfg(cfg),
+ _visited_set_pool(),
+ _cached_level_arrays_memory_usage(),
+ _cached_level_arrays_address_space_usage(0, 0, (1ull << 32)),
+ _cached_link_arrays_memory_usage(),
+ _cached_link_arrays_address_space_usage(0, 0, (1ull << 32))
{
assert(_distance_func);
}
@@ -471,6 +529,93 @@ HnswIndex::trim_hold_lists(generation_t first_used_gen)
_graph.links.trimHoldLists(first_used_gen);
}
+void
+HnswIndex::compact_level_arrays(bool compact_memory, bool compact_address_space)
+{
+ auto context = _graph.nodes.compactWorst(compact_memory, compact_address_space);
+ uint32_t doc_id_limit = _graph.node_refs.size();
+ vespalib::ArrayRef<AtomicEntryRef> refs(&_graph.node_refs[0], doc_id_limit);
+ context->compact(refs);
+}
+
+void
+HnswIndex::compact_link_arrays(bool compact_memory, bool compact_address_space)
+{
+ auto context = _graph.links.compactWorst(compact_memory, compact_address_space);
+ uint32_t doc_id_limit = _graph.node_refs.size();
+ for (uint32_t doc_id = 1; doc_id < doc_id_limit; ++doc_id) {
+ EntryRef level_ref = _graph.node_refs[doc_id].load_relaxed();
+ if (level_ref.valid()) {
+ vespalib::ArrayRef<AtomicEntryRef> refs(_graph.nodes.get_writable(level_ref));
+ context->compact(refs);
+ }
+ }
+}
+
+namespace {
+
+bool
+consider_compact_arrays(const CompactionStrategy& compaction_strategy, vespalib::MemoryUsage& memory_usage, vespalib::AddressSpace& address_space_usage, std::function<void(bool,bool)> compact_arrays)
+{
+ size_t used_bytes = memory_usage.usedBytes();
+ size_t dead_bytes = memory_usage.deadBytes();
+ bool compact_memory = compaction_strategy.should_compact_memory(used_bytes, dead_bytes);
+ size_t used_address_space = address_space_usage.used();
+ size_t dead_address_space = address_space_usage.dead();
+ bool compact_address_space = compaction_strategy.should_compact_address_space(used_address_space, dead_address_space);
+ if (compact_memory || compact_address_space) {
+ compact_arrays(compact_memory, compact_address_space);
+ return true;
+ }
+ return false;
+}
+
+}
+
+bool
+HnswIndex::consider_compact_level_arrays(const CompactionStrategy& compaction_strategy)
+{
+ return consider_compact_arrays(compaction_strategy, _cached_level_arrays_memory_usage, _cached_level_arrays_address_space_usage,
+ [this](bool compact_memory, bool compact_address_space)
+ { compact_level_arrays(compact_memory, compact_address_space); });
+}
+
+bool
+HnswIndex::consider_compact_link_arrays(const CompactionStrategy& compaction_strategy)
+{
+ return consider_compact_arrays(compaction_strategy, _cached_link_arrays_memory_usage, _cached_link_arrays_address_space_usage,
+ [this](bool compact_memory, bool compact_address_space)
+ { compact_link_arrays(compact_memory, compact_address_space); });
+}
+
+bool
+HnswIndex::consider_compact(const CompactionStrategy& compaction_strategy)
+{
+ bool result = false;
+ if (consider_compact_level_arrays(compaction_strategy)) {
+ result = true;
+ }
+ if (consider_compact_link_arrays(compaction_strategy)) {
+ result = true;
+ }
+ return result;
+}
+
+vespalib::MemoryUsage
+HnswIndex::update_stat()
+{
+ vespalib::MemoryUsage result;
+ result.merge(_graph.node_refs.getMemoryUsage());
+ _cached_level_arrays_memory_usage = _graph.nodes.getMemoryUsage();
+ _cached_level_arrays_address_space_usage = _graph.nodes.addressSpaceUsage();
+ result.merge(_cached_level_arrays_memory_usage);
+ _cached_link_arrays_memory_usage = _graph.links.getMemoryUsage();
+ _cached_link_arrays_address_space_usage = _graph.links.addressSpaceUsage();
+ result.merge(_cached_link_arrays_memory_usage);
+ result.merge(_visited_set_pool.memory_usage());
+ return result;
+}
+
vespalib::MemoryUsage
HnswIndex::memory_usage() const
{
@@ -483,10 +628,25 @@ HnswIndex::memory_usage() const
}
void
+HnswIndex::populate_address_space_usage(search::AddressSpaceUsage& usage) const
+{
+ usage.set(AddressSpaceComponents::hnsw_node_store, _graph.nodes.addressSpaceUsage());
+ usage.set(AddressSpaceComponents::hnsw_link_store, _graph.links.addressSpaceUsage());
+}
+
+void
HnswIndex::get_state(const vespalib::slime::Inserter& inserter) const
{
auto& object = inserter.insertObject();
- StateExplorerUtils::memory_usage_to_slime(memory_usage(), object.setObject("memory_usage"));
+ auto& memUsageObj = object.setObject("memory_usage");
+ StateExplorerUtils::memory_usage_to_slime(memory_usage(), memUsageObj.setObject("all"));
+ StateExplorerUtils::memory_usage_to_slime(_graph.node_refs.getMemoryUsage(), memUsageObj.setObject("node_refs"));
+ StateExplorerUtils::memory_usage_to_slime(_graph.nodes.getMemoryUsage(), memUsageObj.setObject("nodes"));
+ StateExplorerUtils::memory_usage_to_slime(_graph.links.getMemoryUsage(), memUsageObj.setObject("links"));
+ StateExplorerUtils::memory_usage_to_slime(_visited_set_pool.memory_usage(), memUsageObj.setObject("visited_set_pool"));
+ auto& visitedObj = object.setObject("visited_set");
+ visitedObj.setLong("create_count", _visited_set_pool.create_count());
+ visitedObj.setLong("reuse_count", _visited_set_pool.reuse_count());
object.setLong("nodes", _graph.size());
auto& histogram_array = object.setArray("level_histogram");
auto& links_hst_array = object.setArray("level_0_links_histogram");
@@ -500,9 +660,13 @@ HnswIndex::get_state(const vespalib::slime::Inserter& inserter) const
for (uint32_t hist_val : histograms.links_histogram) {
links_hst_array.addLong(hist_val);
}
- uint32_t reachable = count_reachable_nodes();
- uint32_t unreachable = valid_nodes - reachable;
- object.setLong("unreachable_nodes", unreachable);
+ auto count_result = count_reachable_nodes();
+ uint32_t unreachable = valid_nodes - count_result.first;
+ if (count_result.second) {
+ object.setLong("unreachable_nodes", unreachable);
+ } else {
+ object.setLong("unreachable_nodes_incomplete_count", unreachable);
+ }
auto entry_node = _graph.get_entry_node();
object.setLong("entry_docid", entry_node.docid);
object.setLong("entry_level", entry_node.level);
@@ -513,18 +677,31 @@ HnswIndex::get_state(const vespalib::slime::Inserter& inserter) const
_cfg.neighbors_to_explore_at_construction());
}
+void
+HnswIndex::shrink_lid_space(uint32_t doc_id_limit)
+{
+ assert(doc_id_limit >= 1u);
+ assert(doc_id_limit >= _graph.node_refs_size.load(std::memory_order_relaxed));
+ uint32_t old_doc_id_limit = _graph.node_refs.size();
+ if (doc_id_limit >= old_doc_id_limit) {
+ return;
+ }
+ _graph.node_refs.shrink(doc_id_limit);
+}
+
std::unique_ptr<NearestNeighborIndexSaver>
HnswIndex::make_saver() const
{
return std::make_unique<HnswIndexSaver>(_graph);
}
-bool
-HnswIndex::load(const fileutil::LoadedBuffer& buf)
+std::unique_ptr<NearestNeighborIndexLoader>
+HnswIndex::make_loader(FastOS_FileInterface& file)
{
assert(get_entry_docid() == 0); // cannot load after index has data
- HnswIndexLoader loader(_graph);
- return loader.load(buf);
+ using ReaderType = FileReader<uint32_t>;
+ using LoaderType = HnswIndexLoader<ReaderType>;
+ return std::make_unique<LoaderType>(_graph, std::make_unique<ReaderType>(file));
}
struct NeighborsByDocId {
@@ -650,31 +827,35 @@ HnswIndex::check_link_symmetry() const
return all_sym;
}
-uint32_t
+std::pair<uint32_t, bool>
HnswIndex::count_reachable_nodes() const
{
auto entry = _graph.get_entry_node();
int search_level = entry.level;
if (search_level < 0) {
- return 0;
+ return {0, true};
}
- auto visited = _visited_set_pool.get(_graph.size());
+ std::vector<bool> visited(_graph.size());
LinkArray found_links;
found_links.push_back(entry.docid);
- visited.mark(entry.docid);
+ visited[entry.docid] = true;
+ vespalib::steady_time doom = vespalib::steady_clock::now() + MAX_COUNT_DURATION;
while (search_level >= 0) {
for (uint32_t idx = 0; idx < found_links.size(); ++idx) {
+ if (vespalib::steady_clock::now() > doom) {
+ return {found_links.size(), false};
+ }
uint32_t docid = found_links[idx];
auto neighbors = _graph.get_link_array(docid, search_level);
for (uint32_t neighbor : neighbors) {
- if (visited.is_marked(neighbor)) continue;
- visited.mark(neighbor);
+ if (visited[neighbor]) continue;
+ visited[neighbor] = true;
found_links.push_back(neighbor);
}
}
--search_level;
}
- return found_links.size();
+ return {found_links.size(), true};
}
} // namespace
diff --git a/searchlib/src/vespa/searchlib/tensor/hnsw_index.h b/searchlib/src/vespa/searchlib/tensor/hnsw_index.h
index 5bd9d17adc3..dde4d377c4c 100644
--- a/searchlib/src/vespa/searchlib/tensor/hnsw_index.h
+++ b/searchlib/src/vespa/searchlib/tensor/hnsw_index.h
@@ -80,6 +80,10 @@ protected:
RandomLevelGenerator::UP _level_generator;
Config _cfg;
mutable vespalib::ReusableSetPool _visited_set_pool;
+ vespalib::MemoryUsage _cached_level_arrays_memory_usage;
+ vespalib::AddressSpace _cached_level_arrays_address_space_usage;
+ vespalib::MemoryUsage _cached_link_arrays_memory_usage;
+ vespalib::AddressSpace _cached_link_arrays_address_space_usage;
uint32_t max_links_for_level(uint32_t level) const;
void add_link_to(uint32_t docid, uint32_t level, const LinkArrayRef& old_links, uint32_t new_link) {
@@ -115,11 +119,17 @@ protected:
double calc_distance(uint32_t lhs_docid, uint32_t rhs_docid) const;
double calc_distance(const TypedCells& lhs, uint32_t rhs_docid) const;
+ uint32_t estimate_visited_nodes(uint32_t level, uint32_t doc_id_limit, uint32_t neighbors_to_find, const search::BitVector* filter) const;
/**
* Performs a greedy search in the given layer to find the candidate that is nearest the input vector.
*/
HnswCandidate find_nearest_in_layer(const TypedCells& input, const HnswCandidate& entry_point, uint32_t level) const;
+ template <class VisitedTracker>
+ void search_layer_helper(const TypedCells& input, uint32_t neighbors_to_find, FurthestPriQ& found_neighbors,
+ uint32_t level, const search::BitVector *filter,
+ uint32_t doc_id_limit,
+ uint32_t estimated_visited_nodes) const;
void search_layer(const TypedCells& input, uint32_t neighbors_to_find, FurthestPriQ& found_neighbors,
uint32_t level, const search::BitVector *filter = nullptr) const;
std::vector<Neighbor> top_k_by_docid(uint32_t k, TypedCells vector,
@@ -161,11 +171,19 @@ public:
void remove_document(uint32_t docid) override;
void transfer_hold_lists(generation_t current_gen) override;
void trim_hold_lists(generation_t first_used_gen) override;
+ void compact_level_arrays(bool compact_memory, bool compact_addreess_space);
+ void compact_link_arrays(bool compact_memory, bool compact_address_space);
+ bool consider_compact_level_arrays(const CompactionStrategy& compaction_strategy);
+ bool consider_compact_link_arrays(const CompactionStrategy& compaction_strategy);
+ bool consider_compact(const CompactionStrategy& compaction_strategy) override;
+ vespalib::MemoryUsage update_stat() override;
vespalib::MemoryUsage memory_usage() const override;
+ void populate_address_space_usage(search::AddressSpaceUsage& usage) const override;
void get_state(const vespalib::slime::Inserter& inserter) const override;
+ void shrink_lid_space(uint32_t doc_id_limit) override;
std::unique_ptr<NearestNeighborIndexSaver> make_saver() const override;
- bool load(const fileutil::LoadedBuffer& buf) override;
+ std::unique_ptr<NearestNeighborIndexLoader> make_loader(FastOS_FileInterface& file) override;
std::vector<Neighbor> find_top_k(uint32_t k, TypedCells vector, uint32_t explore_k,
double distance_threshold) const override;
@@ -183,7 +201,9 @@ public:
HnswNode get_node(uint32_t docid) const;
void set_node(uint32_t docid, const HnswNode &node);
bool check_link_symmetry() const;
- uint32_t count_reachable_nodes() const;
+ std::pair<uint32_t, bool> count_reachable_nodes() const;
+ HnswGraph& get_graph() { return _graph; }
+ vespalib::ReusableSetPool& get_visited_set_pool() const noexcept { return _visited_set_pool; }
static vespalib::datastore::ArrayStoreConfig make_default_node_store_config();
static vespalib::datastore::ArrayStoreConfig make_default_link_store_config();
diff --git a/searchlib/src/vespa/searchlib/tensor/hnsw_index_loader.cpp b/searchlib/src/vespa/searchlib/tensor/hnsw_index_loader.cpp
deleted file mode 100644
index ac98b28d105..00000000000
--- a/searchlib/src/vespa/searchlib/tensor/hnsw_index_loader.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include "hnsw_index_loader.h"
-#include "hnsw_graph.h"
-#include <vespa/searchlib/util/fileutil.h>
-
-namespace search::tensor {
-
-HnswIndexLoader::~HnswIndexLoader() {}
-
-HnswIndexLoader::HnswIndexLoader(HnswGraph &graph)
- : _graph(graph), _ptr(nullptr), _end(nullptr), _failed(false)
-{
-}
-
-bool
-HnswIndexLoader::load(const fileutil::LoadedBuffer& buf)
-{
- size_t num_readable = buf.size(sizeof(uint32_t));
- _ptr = static_cast<const uint32_t *>(buf.buffer());
- _end = _ptr + num_readable;
- uint32_t entry_docid = next_int();
- int32_t entry_level = next_int();
- uint32_t num_nodes = next_int();
- std::vector<uint32_t> link_array;
- for (uint32_t docid = 0; docid < num_nodes; ++docid) {
- uint32_t num_levels = next_int();
- if (num_levels > 0) {
- _graph.make_node_for_document(docid, num_levels);
- for (uint32_t level = 0; level < num_levels; ++level) {
- uint32_t num_links = next_int();
- link_array.clear();
- while (num_links-- > 0) {
- link_array.push_back(next_int());
- }
- _graph.set_link_array(docid, level, link_array);
- }
- }
- }
- if (_failed) return false;
- _graph.node_refs.ensure_size(num_nodes);
- auto entry_node_ref = _graph.get_node_ref(entry_docid);
- _graph.set_entry_node({entry_docid, entry_node_ref, entry_level});
- return true;
-}
-
-
-}
diff --git a/searchlib/src/vespa/searchlib/tensor/hnsw_index_loader.h b/searchlib/src/vespa/searchlib/tensor/hnsw_index_loader.h
index 9f5ae66011f..b65ae22ed47 100644
--- a/searchlib/src/vespa/searchlib/tensor/hnsw_index_loader.h
+++ b/searchlib/src/vespa/searchlib/tensor/hnsw_index_loader.h
@@ -1,10 +1,14 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
+#include "nearest_neighbor_index_loader.h"
+#include <vespa/vespalib/util/exceptions.h>
#include <cstdint>
+#include <memory>
+#include <vector>
-namespace search::fileutil { class LoadedBuffer; }
+class FastOS_FileInterface;
namespace search::tensor {
@@ -13,23 +17,27 @@ struct HnswGraph;
/**
* Implements loading of HNSW graph structure from binary format.
**/
-class HnswIndexLoader {
-public:
- HnswIndexLoader(HnswGraph &graph);
- ~HnswIndexLoader();
- bool load(const fileutil::LoadedBuffer& buf);
+template <typename ReaderType>
+class HnswIndexLoader : public NearestNeighborIndexLoader {
private:
- HnswGraph &_graph;
- const uint32_t *_ptr;
- const uint32_t *_end;
- bool _failed;
+ HnswGraph& _graph;
+ std::unique_ptr<ReaderType> _reader;
+ uint32_t _entry_docid;
+ int32_t _entry_level;
+ uint32_t _num_nodes;
+ uint32_t _docid;
+ std::vector<uint32_t> _link_array;
+ bool _complete;
+
+ void init();
uint32_t next_int() {
- if (__builtin_expect((_ptr == _end), false)) {
- _failed = true;
- return 0;
- }
- return *_ptr++;
+ return _reader->readHostOrder();
}
+
+public:
+ HnswIndexLoader(HnswGraph& graph, std::unique_ptr<ReaderType> reader);
+ virtual ~HnswIndexLoader();
+ bool load_next() override;
};
}
diff --git a/searchlib/src/vespa/searchlib/tensor/hnsw_index_loader.hpp b/searchlib/src/vespa/searchlib/tensor/hnsw_index_loader.hpp
new file mode 100644
index 00000000000..11500c0b7f6
--- /dev/null
+++ b/searchlib/src/vespa/searchlib/tensor/hnsw_index_loader.hpp
@@ -0,0 +1,69 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "hnsw_index_loader.h"
+#include "hnsw_graph.h"
+#include <vespa/searchlib/util/fileutil.h>
+
+namespace search::tensor {
+
+template <typename ReaderType>
+void
+HnswIndexLoader<ReaderType>::init()
+{
+ _entry_docid = next_int();
+ _entry_level = next_int();
+ _num_nodes = next_int();
+}
+
+template <typename ReaderType>
+HnswIndexLoader<ReaderType>::~HnswIndexLoader() {}
+
+template <typename ReaderType>
+HnswIndexLoader<ReaderType>::HnswIndexLoader(HnswGraph& graph, std::unique_ptr<ReaderType> reader)
+ : _graph(graph),
+ _reader(std::move(reader)),
+ _entry_docid(0),
+ _entry_level(0),
+ _num_nodes(0),
+ _docid(0),
+ _link_array(),
+ _complete(false)
+{
+ init();
+}
+
+template <typename ReaderType>
+bool
+HnswIndexLoader<ReaderType>::load_next()
+{
+ assert(!_complete);
+ if (_docid < _num_nodes) {
+ uint32_t num_levels = next_int();
+ if (num_levels > 0) {
+ _graph.make_node_for_document(_docid, num_levels);
+ for (uint32_t level = 0; level < num_levels; ++level) {
+ uint32_t num_links = next_int();
+ _link_array.clear();
+ while (num_links-- > 0) {
+ _link_array.push_back(next_int());
+ }
+ _graph.set_link_array(_docid, level, _link_array);
+ }
+ }
+ }
+ if (++_docid < _num_nodes) {
+ return true;
+ } else {
+ _graph.node_refs.ensure_size(std::max(_num_nodes, 1u));
+ _graph.node_refs_size.store(std::max(_num_nodes, 1u), std::memory_order_release);
+ _graph.trim_node_refs_size();
+ auto entry_node_ref = _graph.get_node_ref(_entry_docid);
+ _graph.set_entry_node({_entry_docid, entry_node_ref, _entry_level});
+ _complete = true;
+ return false;
+ }
+}
+
+}
diff --git a/searchlib/src/vespa/searchlib/tensor/hnsw_index_saver.cpp b/searchlib/src/vespa/searchlib/tensor/hnsw_index_saver.cpp
index 6593a60d6b5..2eb9f7d4acd 100644
--- a/searchlib/src/vespa/searchlib/tensor/hnsw_index_saver.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/hnsw_index_saver.cpp
@@ -1,12 +1,37 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "hnsw_index_saver.h"
#include "hnsw_graph.h"
#include <vespa/searchlib/util/bufferwriter.h>
+#include <limits>
namespace search::tensor {
-HnswIndexSaver::~HnswIndexSaver() {}
+namespace {
+
+size_t
+count_valid_link_arrays(const HnswGraph & graph) {
+ size_t count(0);
+ size_t num_nodes = graph.node_refs.size();
+ for (size_t i = 0; i < num_nodes; ++i) {
+ auto node_ref = graph.node_refs[i].load_acquire();
+ if (node_ref.valid()) {
+ count += graph.nodes.get(node_ref).size();
+ }
+ }
+ return count;
+}
+
+}
+
+HnswIndexSaver::MetaData::MetaData()
+ : entry_docid(0),
+ entry_level(-1),
+ refs(),
+ nodes()
+{}
+HnswIndexSaver::MetaData::~MetaData() = default;
+HnswIndexSaver::~HnswIndexSaver() = default;
HnswIndexSaver::HnswIndexSaver(const HnswGraph &graph)
: _graph_links(graph.links), _meta_data()
@@ -15,19 +40,22 @@ HnswIndexSaver::HnswIndexSaver(const HnswGraph &graph)
_meta_data.entry_docid = entry.docid;
_meta_data.entry_level = entry.level;
size_t num_nodes = graph.node_refs.size();
- _meta_data.nodes.reserve(num_nodes);
+ assert (num_nodes <= (std::numeric_limits<uint32_t>::max() - 1));
+ size_t link_array_count = count_valid_link_arrays(graph);
+ assert (link_array_count <= std::numeric_limits<uint32_t>::max());
+ _meta_data.refs.reserve(link_array_count);
+ _meta_data.nodes.reserve(num_nodes+1);
for (size_t i = 0; i < num_nodes; ++i) {
- LevelVector node;
+ _meta_data.nodes.push_back(_meta_data.refs.size());
auto node_ref = graph.node_refs[i].load_acquire();
if (node_ref.valid()) {
auto levels = graph.nodes.get(node_ref);
for (const auto& links_ref : levels) {
- auto level = links_ref.load_acquire();
- node.push_back(level);
+ _meta_data.refs.push_back(links_ref.load_acquire());
}
}
- _meta_data.nodes.emplace_back(std::move(node));
}
+ _meta_data.nodes.push_back(_meta_data.refs.size());
}
void
@@ -35,12 +63,15 @@ HnswIndexSaver::save(BufferWriter& writer) const
{
writer.write(&_meta_data.entry_docid, sizeof(uint32_t));
writer.write(&_meta_data.entry_level, sizeof(int32_t));
- uint32_t num_nodes = _meta_data.nodes.size();
+ uint32_t num_nodes = _meta_data.nodes.size() - 1;
writer.write(&num_nodes, sizeof(uint32_t));
- for (const auto &node : _meta_data.nodes) {
- uint32_t num_levels = node.size();
+ for (uint32_t i(0); i < num_nodes; i++) {
+ uint32_t offset = _meta_data.nodes[i];
+ uint32_t next_offset = _meta_data.nodes[i+1];
+ uint32_t num_levels = next_offset - offset;
writer.write(&num_levels, sizeof(uint32_t));
- for (auto links_ref : node) {
+ for (; offset < next_offset; offset++) {
+ auto links_ref = _meta_data.refs[offset];
if (links_ref.valid()) {
vespalib::ConstArrayRef<uint32_t> link_array = _graph_links.get(links_ref);
uint32_t num_links = link_array.size();
diff --git a/searchlib/src/vespa/searchlib/tensor/hnsw_index_saver.h b/searchlib/src/vespa/searchlib/tensor/hnsw_index_saver.h
index 387e35efd8b..e170a4a894f 100644
--- a/searchlib/src/vespa/searchlib/tensor/hnsw_index_saver.h
+++ b/searchlib/src/vespa/searchlib/tensor/hnsw_index_saver.h
@@ -1,10 +1,11 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "nearest_neighbor_index_saver.h"
#include "hnsw_graph.h"
#include <vespa/vespalib/datastore/entryref.h>
+#include <vespa/vespalib/stllike/allocator.h>
#include <vector>
namespace search::tensor {
@@ -17,18 +18,19 @@ namespace search::tensor {
**/
class HnswIndexSaver : public NearestNeighborIndexSaver {
public:
- using LevelVector = std::vector<vespalib::datastore::EntryRef>;
-
HnswIndexSaver(const HnswGraph &graph);
- ~HnswIndexSaver();
+ ~HnswIndexSaver() override;
void save(BufferWriter& writer) const override;
private:
struct MetaData {
+ using EntryRef = vespalib::datastore::EntryRef;
uint32_t entry_docid;
int32_t entry_level;
- std::vector<LevelVector> nodes;
- MetaData() : entry_docid(0), entry_level(-1), nodes() {}
+ std::vector<EntryRef, vespalib::allocator_large<EntryRef>> refs;
+ std::vector<uint32_t, vespalib::allocator_large<uint32_t>> nodes;
+ MetaData();
+ ~MetaData();
};
const HnswGraph::LinkStore &_graph_links;
MetaData _meta_data;
diff --git a/searchlib/src/vespa/searchlib/tensor/i_tensor_attribute.h b/searchlib/src/vespa/searchlib/tensor/i_tensor_attribute.h
index c2896b6a12e..3bcb55f2c2a 100644
--- a/searchlib/src/vespa/searchlib/tensor/i_tensor_attribute.h
+++ b/searchlib/src/vespa/searchlib/tensor/i_tensor_attribute.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/tensor/imported_tensor_attribute_vector.cpp b/searchlib/src/vespa/searchlib/tensor/imported_tensor_attribute_vector.cpp
index 6d724d254b8..28e609c17ef 100644
--- a/searchlib/src/vespa/searchlib/tensor/imported_tensor_attribute_vector.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/imported_tensor_attribute_vector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "imported_tensor_attribute_vector.h"
#include "imported_tensor_attribute_vector_read_guard.h"
diff --git a/searchlib/src/vespa/searchlib/tensor/imported_tensor_attribute_vector.h b/searchlib/src/vespa/searchlib/tensor/imported_tensor_attribute_vector.h
index 5d5d363d193..d39a8395595 100644
--- a/searchlib/src/vespa/searchlib/tensor/imported_tensor_attribute_vector.h
+++ b/searchlib/src/vespa/searchlib/tensor/imported_tensor_attribute_vector.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/tensor/imported_tensor_attribute_vector_read_guard.cpp b/searchlib/src/vespa/searchlib/tensor/imported_tensor_attribute_vector_read_guard.cpp
index 79c8e5a663e..3b9abcf6420 100644
--- a/searchlib/src/vespa/searchlib/tensor/imported_tensor_attribute_vector_read_guard.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/imported_tensor_attribute_vector_read_guard.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "imported_tensor_attribute_vector_read_guard.h"
#include <vespa/searchlib/attribute/attributevector.h>
diff --git a/searchlib/src/vespa/searchlib/tensor/imported_tensor_attribute_vector_read_guard.h b/searchlib/src/vespa/searchlib/tensor/imported_tensor_attribute_vector_read_guard.h
index a88f0a5de76..d0f09da9281 100644
--- a/searchlib/src/vespa/searchlib/tensor/imported_tensor_attribute_vector_read_guard.h
+++ b/searchlib/src/vespa/searchlib/tensor/imported_tensor_attribute_vector_read_guard.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/tensor/inner_product_distance.cpp b/searchlib/src/vespa/searchlib/tensor/inner_product_distance.cpp
index 8a48c6c936a..2e8c970ba91 100644
--- a/searchlib/src/vespa/searchlib/tensor/inner_product_distance.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/inner_product_distance.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "inner_product_distance.h"
diff --git a/searchlib/src/vespa/searchlib/tensor/inner_product_distance.h b/searchlib/src/vespa/searchlib/tensor/inner_product_distance.h
index 981dedea141..8ba14580885 100644
--- a/searchlib/src/vespa/searchlib/tensor/inner_product_distance.h
+++ b/searchlib/src/vespa/searchlib/tensor/inner_product_distance.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/tensor/inv_log_level_generator.cpp b/searchlib/src/vespa/searchlib/tensor/inv_log_level_generator.cpp
index 540edc5e664..26bc978d03e 100644
--- a/searchlib/src/vespa/searchlib/tensor/inv_log_level_generator.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/inv_log_level_generator.cpp
@@ -1,3 +1,3 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "inv_log_level_generator.h"
diff --git a/searchlib/src/vespa/searchlib/tensor/inv_log_level_generator.h b/searchlib/src/vespa/searchlib/tensor/inv_log_level_generator.h
index e70830a78f8..a3764aedda4 100644
--- a/searchlib/src/vespa/searchlib/tensor/inv_log_level_generator.h
+++ b/searchlib/src/vespa/searchlib/tensor/inv_log_level_generator.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "random_level_generator.h"
#include <random>
diff --git a/searchlib/src/vespa/searchlib/tensor/nearest_neighbor_index.h b/searchlib/src/vespa/searchlib/tensor/nearest_neighbor_index.h
index fd37cf80720..dbb439913f5 100644
--- a/searchlib/src/vespa/searchlib/tensor/nearest_neighbor_index.h
+++ b/searchlib/src/vespa/searchlib/tensor/nearest_neighbor_index.h
@@ -10,14 +10,21 @@
#include <memory>
#include <vector>
+class FastOS_FileInterface;
+
namespace vespalib::slime { struct Inserter; }
namespace search::fileutil { class LoadedBuffer; }
-namespace search { class BitVector; }
+namespace search {
+class AddressSpaceUsage;
+class BitVector;
+class CompactionStrategy;
+}
namespace search::tensor {
+class NearestNeighborIndexLoader;
class NearestNeighborIndexSaver;
/**
@@ -59,8 +66,12 @@ public:
virtual void remove_document(uint32_t docid) = 0;
virtual void transfer_hold_lists(generation_t current_gen) = 0;
virtual void trim_hold_lists(generation_t first_used_gen) = 0;
+ virtual bool consider_compact(const CompactionStrategy& compaction_strategy) = 0;
+ virtual vespalib::MemoryUsage update_stat() = 0;
virtual vespalib::MemoryUsage memory_usage() const = 0;
+ virtual void populate_address_space_usage(search::AddressSpaceUsage& usage) const = 0;
virtual void get_state(const vespalib::slime::Inserter& inserter) const = 0;
+ virtual void shrink_lid_space(uint32_t doc_id_limit) = 0;
/**
* Creates a saver that is used to save the index to binary form.
@@ -69,7 +80,13 @@ public:
* and the caller ensures that an attribute read guard is held during the lifetime of the saver.
*/
virtual std::unique_ptr<NearestNeighborIndexSaver> make_saver() const = 0;
- virtual bool load(const fileutil::LoadedBuffer& buf) = 0;
+
+ /**
+ * Creates a loader that is used to load the index from the given file.
+ *
+ * This might throw std::runtime_error.
+ */
+ virtual std::unique_ptr<NearestNeighborIndexLoader> make_loader(FastOS_FileInterface& file) = 0;
virtual std::vector<Neighbor> find_top_k(uint32_t k,
vespalib::eval::TypedCells vector,
diff --git a/searchlib/src/vespa/searchlib/tensor/nearest_neighbor_index_loader.h b/searchlib/src/vespa/searchlib/tensor/nearest_neighbor_index_loader.h
new file mode 100644
index 00000000000..41864429360
--- /dev/null
+++ b/searchlib/src/vespa/searchlib/tensor/nearest_neighbor_index_loader.h
@@ -0,0 +1,23 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+namespace search::tensor {
+
+/**
+ * Interface that is used to load a nearest neighbor index from binary form.
+ */
+class NearestNeighborIndexLoader {
+public:
+ virtual ~NearestNeighborIndexLoader() {}
+
+ /**
+ * Loads the next part of the index (e.g. the node corresponding to a given document)
+ * and returns whether there is more data to load.
+ *
+ * This might throw std::runtime_error.
+ */
+ virtual bool load_next() = 0;
+};
+
+}
diff --git a/searchlib/src/vespa/searchlib/tensor/nearest_neighbor_index_saver.cpp b/searchlib/src/vespa/searchlib/tensor/nearest_neighbor_index_saver.cpp
index 4b293488737..0b32b513894 100644
--- a/searchlib/src/vespa/searchlib/tensor/nearest_neighbor_index_saver.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/nearest_neighbor_index_saver.cpp
@@ -1,3 +1,3 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "nearest_neighbor_index_saver.h"
diff --git a/searchlib/src/vespa/searchlib/tensor/nearest_neighbor_index_saver.h b/searchlib/src/vespa/searchlib/tensor/nearest_neighbor_index_saver.h
index 99d8960ae10..ccd55437815 100644
--- a/searchlib/src/vespa/searchlib/tensor/nearest_neighbor_index_saver.h
+++ b/searchlib/src/vespa/searchlib/tensor/nearest_neighbor_index_saver.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/tensor/prepare_result.h b/searchlib/src/vespa/searchlib/tensor/prepare_result.h
index 05300684497..9f1eef19f86 100644
--- a/searchlib/src/vespa/searchlib/tensor/prepare_result.h
+++ b/searchlib/src/vespa/searchlib/tensor/prepare_result.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/tensor/reusable_set_visited_tracker.cpp b/searchlib/src/vespa/searchlib/tensor/reusable_set_visited_tracker.cpp
new file mode 100644
index 00000000000..d3cdd28fea3
--- /dev/null
+++ b/searchlib/src/vespa/searchlib/tensor/reusable_set_visited_tracker.cpp
@@ -0,0 +1,15 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "reusable_set_visited_tracker.h"
+#include "hnsw_index.h"
+
+namespace search::tensor {
+
+ReusableSetVisitedTracker::ReusableSetVisitedTracker(const HnswIndex& index, uint32_t doc_id_limit, uint32_t)
+ : _visited(index.get_visited_set_pool().get(doc_id_limit))
+{
+}
+
+ReusableSetVisitedTracker::~ReusableSetVisitedTracker() = default;
+
+}
diff --git a/searchlib/src/vespa/searchlib/tensor/reusable_set_visited_tracker.h b/searchlib/src/vespa/searchlib/tensor/reusable_set_visited_tracker.h
new file mode 100644
index 00000000000..9528cfe78f9
--- /dev/null
+++ b/searchlib/src/vespa/searchlib/tensor/reusable_set_visited_tracker.h
@@ -0,0 +1,31 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/vespalib/util/reusable_set_handle.h>
+
+namespace search::tensor {
+
+class HnswIndex;
+
+/*
+ * Tracker for visited nodes based on vespalib::ReusableSet.
+ */
+class ReusableSetVisitedTracker
+{
+ vespalib::ReusableSetHandle _visited;
+public:
+ ReusableSetVisitedTracker(const HnswIndex& index, uint32_t doc_id_limit, uint32_t);
+ ~ReusableSetVisitedTracker();
+ void mark(uint32_t doc_id) { _visited.mark(doc_id); }
+ bool try_mark(uint32_t doc_id) {
+ if (_visited.is_marked(doc_id)) {
+ return false;
+ } else {
+ _visited.mark(doc_id);
+ return true;
+ }
+ }
+};
+
+}
diff --git a/searchlib/src/vespa/searchlib/tensor/serialized_fast_value_attribute.cpp b/searchlib/src/vespa/searchlib/tensor/serialized_fast_value_attribute.cpp
index 260ffa1a388..16d9f2e3bbd 100644
--- a/searchlib/src/vespa/searchlib/tensor/serialized_fast_value_attribute.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/serialized_fast_value_attribute.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "serialized_fast_value_attribute.h"
#include "streamed_value_saver.h"
@@ -60,7 +60,7 @@ SerializedFastValueAttribute::getTensor(DocId docId) const
}
bool
-SerializedFastValueAttribute::onLoad()
+SerializedFastValueAttribute::onLoad(vespalib::Executor *)
{
BlobSequenceReader tensorReader(*this);
if (!tensorReader.hasData()) {
diff --git a/searchlib/src/vespa/searchlib/tensor/serialized_fast_value_attribute.h b/searchlib/src/vespa/searchlib/tensor/serialized_fast_value_attribute.h
index 789bf610d95..e37076fe299 100644
--- a/searchlib/src/vespa/searchlib/tensor/serialized_fast_value_attribute.h
+++ b/searchlib/src/vespa/searchlib/tensor/serialized_fast_value_attribute.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -24,7 +24,7 @@ public:
~SerializedFastValueAttribute() override;
void setTensor(DocId docId, const vespalib::eval::Value &tensor) override;
std::unique_ptr<vespalib::eval::Value> getTensor(DocId docId) const override;
- bool onLoad() override;
+ bool onLoad(vespalib::Executor *executor) override;
std::unique_ptr<AttributeSaver> onInitSave(vespalib::stringref fileName) override;
void compactWorst() override;
};
diff --git a/searchlib/src/vespa/searchlib/tensor/streamed_value_saver.cpp b/searchlib/src/vespa/searchlib/tensor/streamed_value_saver.cpp
index d4fd681f2cb..f7b93654c33 100644
--- a/searchlib/src/vespa/searchlib/tensor/streamed_value_saver.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/streamed_value_saver.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "streamed_value_saver.h"
#include "streamed_value_store.h"
diff --git a/searchlib/src/vespa/searchlib/tensor/streamed_value_saver.h b/searchlib/src/vespa/searchlib/tensor/streamed_value_saver.h
index 71d56539679..c1d0165d55d 100644
--- a/searchlib/src/vespa/searchlib/tensor/streamed_value_saver.h
+++ b/searchlib/src/vespa/searchlib/tensor/streamed_value_saver.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/tensor/streamed_value_store.cpp b/searchlib/src/vespa/searchlib/tensor/streamed_value_store.cpp
index 326ef9d10b7..0901e643afa 100644
--- a/searchlib/src/vespa/searchlib/tensor/streamed_value_store.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/streamed_value_store.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "streamed_value_store.h"
#include <vespa/eval/eval/value.h>
diff --git a/searchlib/src/vespa/searchlib/tensor/streamed_value_store.h b/searchlib/src/vespa/searchlib/tensor/streamed_value_store.h
index 111271c65a3..7d83e9f3335 100644
--- a/searchlib/src/vespa/searchlib/tensor/streamed_value_store.h
+++ b/searchlib/src/vespa/searchlib/tensor/streamed_value_store.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/tensor/tensor_attribute.cpp b/searchlib/src/vespa/searchlib/tensor/tensor_attribute.cpp
index 5044a989203..a19541072da 100644
--- a/searchlib/src/vespa/searchlib/tensor/tensor_attribute.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/tensor_attribute.cpp
@@ -1,12 +1,14 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tensor_attribute.h"
#include <vespa/document/base/exceptions.h>
#include <vespa/document/datatype/tensor_data_type.h>
+#include <vespa/searchlib/attribute/address_space_components.h>
#include <vespa/searchlib/util/state_explorer_utils.h>
#include <vespa/vespalib/data/slime/cursor.h>
#include <vespa/vespalib/data/slime/inserter.h>
#include <vespa/vespalib/util/rcuvector.hpp>
+#include <vespa/vespalib/util/shared_string_repo.h>
#include <vespa/eval/eval/fast_value.h>
#include <vespa/eval/eval/value_codec.h>
#include <vespa/eval/eval/tensor_spec.h>
@@ -15,11 +17,12 @@
using document::TensorDataType;
using document::TensorUpdate;
using document::WrongTensorTypeException;
+using search::AddressSpaceComponents;
+using search::StateExplorerUtils;
using vespalib::eval::FastValueBuilderFactory;
using vespalib::eval::TensorSpec;
using vespalib::eval::Value;
using vespalib::eval::ValueType;
-using search::StateExplorerUtils;
namespace search::tensor {
@@ -51,6 +54,7 @@ TensorAttribute::TensorAttribute(vespalib::stringref name, const Config &cfg, Te
cfg.getGrowStrategy().getDocsGrowDelta(),
getGenerationHolder()),
_tensorStore(tensorStore),
+ _is_dense(cfg.tensorType().is_dense()),
_emptyTensor(createEmptyTensor(cfg.tensorType())),
_compactGeneration(0),
_cached_tensor_store_memory_usage()
@@ -189,6 +193,17 @@ TensorAttribute::populate_state(vespalib::slime::Cursor& object) const
object.setObject("tensor_store").setObject("memory_usage"));
}
+void
+TensorAttribute::populate_address_space_usage(AddressSpaceUsage& usage) const
+{
+ usage.set(AddressSpaceComponents::tensor_store, _tensorStore.get_address_space_usage());
+ if (!_is_dense) {
+ auto stats = vespalib::SharedStringRepo::stats();
+ usage.set(AddressSpaceComponents::shared_string_repo,
+ vespalib::AddressSpace(stats.max_part_usage, 0, stats.part_limit()));
+ }
+}
+
vespalib::eval::Value::UP
TensorAttribute::getEmptyTensor() const
{
diff --git a/searchlib/src/vespa/searchlib/tensor/tensor_attribute.h b/searchlib/src/vespa/searchlib/tensor/tensor_attribute.h
index ea0f7391120..af671915b60 100644
--- a/searchlib/src/vespa/searchlib/tensor/tensor_attribute.h
+++ b/searchlib/src/vespa/searchlib/tensor/tensor_attribute.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -24,6 +24,7 @@ protected:
RefVector _refVector; // docId -> ref in data store for serialized tensor
TensorStore &_tensorStore; // data store for serialized tensors
+ bool _is_dense;
std::unique_ptr<vespalib::eval::Value> _emptyTensor;
uint64_t _compactGeneration; // Generation when last compact occurred
vespalib::MemoryUsage _cached_tensor_store_memory_usage;
@@ -35,6 +36,7 @@ protected:
virtual vespalib::MemoryUsage update_stat();
virtual vespalib::MemoryUsage memory_usage() const;
void populate_state(vespalib::slime::Cursor& object) const;
+ void populate_address_space_usage(AddressSpaceUsage& usage) const override;
public:
DECLARE_IDENTIFIABLE_ABSTRACT(TensorAttribute);
diff --git a/searchlib/src/vespa/searchlib/tensor/tensor_attribute.hpp b/searchlib/src/vespa/searchlib/tensor/tensor_attribute.hpp
index 2c0be4f8b20..1fd0c3c944b 100644
--- a/searchlib/src/vespa/searchlib/tensor/tensor_attribute.hpp
+++ b/searchlib/src/vespa/searchlib/tensor/tensor_attribute.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/tensor/tensor_deserialize.cpp b/searchlib/src/vespa/searchlib/tensor/tensor_deserialize.cpp
index 3a00cb229e3..a8399d9ddeb 100644
--- a/searchlib/src/vespa/searchlib/tensor/tensor_deserialize.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/tensor_deserialize.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tensor_deserialize.h"
#include <vespa/document/util/serializableexceptions.h>
diff --git a/searchlib/src/vespa/searchlib/tensor/tensor_deserialize.h b/searchlib/src/vespa/searchlib/tensor/tensor_deserialize.h
index 6f9521c1355..7d1ede29167 100644
--- a/searchlib/src/vespa/searchlib/tensor/tensor_deserialize.h
+++ b/searchlib/src/vespa/searchlib/tensor/tensor_deserialize.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/eval/eval/value.h>
#include <vespa/vespalib/objects/nbostream.h>
diff --git a/searchlib/src/vespa/searchlib/tensor/tensor_store.cpp b/searchlib/src/vespa/searchlib/tensor/tensor_store.cpp
index 81a0d12be63..8356c1c8bb7 100644
--- a/searchlib/src/vespa/searchlib/tensor/tensor_store.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/tensor_store.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tensor_store.h"
diff --git a/searchlib/src/vespa/searchlib/tensor/tensor_store.h b/searchlib/src/vespa/searchlib/tensor/tensor_store.h
index 4c6314bfe3e..3c9146607d0 100644
--- a/searchlib/src/vespa/searchlib/tensor/tensor_store.h
+++ b/searchlib/src/vespa/searchlib/tensor/tensor_store.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -53,6 +53,10 @@ public:
return _store.getMemoryUsage();
}
+ vespalib::AddressSpace get_address_space_usage() const {
+ return _store.getAddressSpaceUsage();
+ }
+
uint32_t startCompactWorstBuffer() {
return _store.startCompactWorstBuffer(_typeId);
}
diff --git a/searchlib/src/vespa/searchlib/test/CMakeLists.txt b/searchlib/src/vespa/searchlib/test/CMakeLists.txt
index adaaafeda64..0d56fb8b4be 100644
--- a/searchlib/src/vespa/searchlib/test/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/test/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_test
SOURCES
document_weight_attribute_helper.cpp
diff --git a/searchlib/src/vespa/searchlib/test/directory_handler.h b/searchlib/src/vespa/searchlib/test/directory_handler.h
index 66e5a710870..3ff753fd3bd 100644
--- a/searchlib/src/vespa/searchlib/test/directory_handler.h
+++ b/searchlib/src/vespa/searchlib/test/directory_handler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/test/diskindex/CMakeLists.txt b/searchlib/src/vespa/searchlib/test/diskindex/CMakeLists.txt
index f4d8853aeca..9a89968cb55 100644
--- a/searchlib/src/vespa/searchlib/test/diskindex/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/test/diskindex/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_searchlib_test_diskindex OBJECT
SOURCES
pagedict4_decoders.cpp
diff --git a/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_decoders.cpp b/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_decoders.cpp
index 122ce582850..950a7bbe056 100644
--- a/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_decoders.cpp
+++ b/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_decoders.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "pagedict4_decoders.h"
diff --git a/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_decoders.h b/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_decoders.h
index c92364ba585..f52abd8b9b6 100644
--- a/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_decoders.h
+++ b/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_decoders.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_encoders.cpp b/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_encoders.cpp
index 9d5cc7be9d4..4c4597f50f7 100644
--- a/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_encoders.cpp
+++ b/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_encoders.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "pagedict4_encoders.h"
diff --git a/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_encoders.h b/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_encoders.h
index 78885150eff..ba8415aafde 100644
--- a/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_encoders.h
+++ b/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_encoders.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_rand_reader.cpp b/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_rand_reader.cpp
index 736a147c1ce..b04c1c60112 100644
--- a/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_rand_reader.cpp
+++ b/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_rand_reader.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "pagedict4_mem_rand_reader.h"
diff --git a/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_rand_reader.h b/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_rand_reader.h
index f51c6bfb6da..0c4a004852f 100644
--- a/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_rand_reader.h
+++ b/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_rand_reader.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_seq_reader.cpp b/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_seq_reader.cpp
index e33a0a1af0e..455a59a1dc4 100644
--- a/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_seq_reader.cpp
+++ b/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_seq_reader.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "pagedict4_mem_seq_reader.h"
diff --git a/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_seq_reader.h b/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_seq_reader.h
index c9709f63796..42e446aac00 100644
--- a/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_seq_reader.h
+++ b/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_seq_reader.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_writer.cpp b/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_writer.cpp
index d82f2967a0b..cd3de4b79f6 100644
--- a/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_writer.cpp
+++ b/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_writer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "pagedict4_mem_writer.h"
#include <vespa/searchlib/bitcompression/pagedict4.h>
diff --git a/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_writer.h b/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_writer.h
index ae36883f844..a21535e1bc4 100644
--- a/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_writer.h
+++ b/searchlib/src/vespa/searchlib/test/diskindex/pagedict4_mem_writer.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/test/diskindex/testdiskindex.cpp b/searchlib/src/vespa/searchlib/test/diskindex/testdiskindex.cpp
index 5de51ca3933..4d7c67e1f82 100644
--- a/searchlib/src/vespa/searchlib/test/diskindex/testdiskindex.cpp
+++ b/searchlib/src/vespa/searchlib/test/diskindex/testdiskindex.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "testdiskindex.h"
#include <vespa/searchlib/diskindex/indexbuilder.h>
diff --git a/searchlib/src/vespa/searchlib/test/diskindex/testdiskindex.h b/searchlib/src/vespa/searchlib/test/diskindex/testdiskindex.h
index ed108d4db35..44dddbb4fb3 100644
--- a/searchlib/src/vespa/searchlib/test/diskindex/testdiskindex.h
+++ b/searchlib/src/vespa/searchlib/test/diskindex/testdiskindex.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/diskindex/diskindex.h>
diff --git a/searchlib/src/vespa/searchlib/test/diskindex/threelevelcountbuffers.cpp b/searchlib/src/vespa/searchlib/test/diskindex/threelevelcountbuffers.cpp
index a6a76bf3e7b..bc92b691ce8 100644
--- a/searchlib/src/vespa/searchlib/test/diskindex/threelevelcountbuffers.cpp
+++ b/searchlib/src/vespa/searchlib/test/diskindex/threelevelcountbuffers.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "threelevelcountbuffers.h"
diff --git a/searchlib/src/vespa/searchlib/test/diskindex/threelevelcountbuffers.h b/searchlib/src/vespa/searchlib/test/diskindex/threelevelcountbuffers.h
index 496b8e896cb..9acdbdc9aab 100644
--- a/searchlib/src/vespa/searchlib/test/diskindex/threelevelcountbuffers.h
+++ b/searchlib/src/vespa/searchlib/test/diskindex/threelevelcountbuffers.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/test/document_weight_attribute_helper.cpp b/searchlib/src/vespa/searchlib/test/document_weight_attribute_helper.cpp
index c13c05fec2c..68cb3140eab 100644
--- a/searchlib/src/vespa/searchlib/test/document_weight_attribute_helper.cpp
+++ b/searchlib/src/vespa/searchlib/test/document_weight_attribute_helper.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_weight_attribute_helper.h"
namespace search {
diff --git a/searchlib/src/vespa/searchlib/test/document_weight_attribute_helper.h b/searchlib/src/vespa/searchlib/test/document_weight_attribute_helper.h
index 163007b1828..3331725d578 100644
--- a/searchlib/src/vespa/searchlib/test/document_weight_attribute_helper.h
+++ b/searchlib/src/vespa/searchlib/test/document_weight_attribute_helper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/attribute/i_document_weight_attribute.h>
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/CMakeLists.txt b/searchlib/src/vespa/searchlib/test/fakedata/CMakeLists.txt
index 275fa505e9d..4ec6a5457b3 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/test/fakedata/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_test_fakedata OBJECT
SOURCES
fake_match_loop.cpp
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/bitdecode64.cpp b/searchlib/src/vespa/searchlib/test/fakedata/bitdecode64.cpp
index a6abdc4d788..1b479856097 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/bitdecode64.cpp
+++ b/searchlib/src/vespa/searchlib/test/fakedata/bitdecode64.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bitdecode64.h"
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/bitdecode64.h b/searchlib/src/vespa/searchlib/test/fakedata/bitdecode64.h
index 7f1403002b5..56e54980ab3 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/bitdecode64.h
+++ b/searchlib/src/vespa/searchlib/test/fakedata/bitdecode64.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bitencode64.h"
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/bitencode64.cpp b/searchlib/src/vespa/searchlib/test/fakedata/bitencode64.cpp
index 69c7edc01b8..1513e9bd862 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/bitencode64.cpp
+++ b/searchlib/src/vespa/searchlib/test/fakedata/bitencode64.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bitencode64.h"
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/bitencode64.h b/searchlib/src/vespa/searchlib/test/fakedata/bitencode64.h
index 0e968f2f4e3..2e1504fca1d 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/bitencode64.h
+++ b/searchlib/src/vespa/searchlib/test/fakedata/bitencode64.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vector>
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakeegcompr64filterocc.cpp b/searchlib/src/vespa/searchlib/test/fakedata/fakeegcompr64filterocc.cpp
index f2ce65480ac..be6526ce6cb 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/fakeegcompr64filterocc.cpp
+++ b/searchlib/src/vespa/searchlib/test/fakedata/fakeegcompr64filterocc.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fakeegcompr64filterocc.h"
#include "bitencode64.h"
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakeegcompr64filterocc.h b/searchlib/src/vespa/searchlib/test/fakedata/fakeegcompr64filterocc.h
index e17418b799b..6e398a2f0b0 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/fakeegcompr64filterocc.h
+++ b/searchlib/src/vespa/searchlib/test/fakedata/fakeegcompr64filterocc.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "fakeword.h"
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakefilterocc.cpp b/searchlib/src/vespa/searchlib/test/fakedata/fakefilterocc.cpp
index 364360c620d..db0626effc1 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/fakefilterocc.cpp
+++ b/searchlib/src/vespa/searchlib/test/fakedata/fakefilterocc.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fakefilterocc.h"
#include "fpfactory.h"
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakefilterocc.h b/searchlib/src/vespa/searchlib/test/fakedata/fakefilterocc.h
index c7bb327adf3..ed0855cfb87 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/fakefilterocc.h
+++ b/searchlib/src/vespa/searchlib/test/fakedata/fakefilterocc.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "fakeword.h"
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakememtreeocc.cpp b/searchlib/src/vespa/searchlib/test/fakedata/fakememtreeocc.cpp
index f88304f74af..8ae3fe0bdad 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/fakememtreeocc.cpp
+++ b/searchlib/src/vespa/searchlib/test/fakedata/fakememtreeocc.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fakememtreeocc.h"
#include "fpfactory.h"
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakememtreeocc.h b/searchlib/src/vespa/searchlib/test/fakedata/fakememtreeocc.h
index ed65ae03766..a94f6087a0d 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/fakememtreeocc.h
+++ b/searchlib/src/vespa/searchlib/test/fakedata/fakememtreeocc.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "fakeword.h"
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakeposting.cpp b/searchlib/src/vespa/searchlib/test/fakedata/fakeposting.cpp
index a72fa7703cd..6d34ff4e668 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/fakeposting.cpp
+++ b/searchlib/src/vespa/searchlib/test/fakedata/fakeposting.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fakeposting.h"
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakeposting.h b/searchlib/src/vespa/searchlib/test/fakedata/fakeposting.h
index ac315c805d5..d7f6a8bbff8 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/fakeposting.h
+++ b/searchlib/src/vespa/searchlib/test/fakedata/fakeposting.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/queryeval/searchiterator.h>
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakeword.cpp b/searchlib/src/vespa/searchlib/test/fakedata/fakeword.cpp
index 30e1dc588e1..74eebb51409 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/fakeword.cpp
+++ b/searchlib/src/vespa/searchlib/test/fakedata/fakeword.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fakeword.h"
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakeword.h b/searchlib/src/vespa/searchlib/test/fakedata/fakeword.h
index 97b0d3a44d3..e3d1bf3c531 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/fakeword.h
+++ b/searchlib/src/vespa/searchlib/test/fakedata/fakeword.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/rand48.h>
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakewordset.cpp b/searchlib/src/vespa/searchlib/test/fakedata/fakewordset.cpp
index 6bb39598fab..a98da8b59cd 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/fakewordset.cpp
+++ b/searchlib/src/vespa/searchlib/test/fakedata/fakewordset.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fakewordset.h"
#include "fakeword.h"
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakewordset.h b/searchlib/src/vespa/searchlib/test/fakedata/fakewordset.h
index de7efef1517..088019749af 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/fakewordset.h
+++ b/searchlib/src/vespa/searchlib/test/fakedata/fakewordset.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vector>
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakezcbfilterocc.cpp b/searchlib/src/vespa/searchlib/test/fakedata/fakezcbfilterocc.cpp
index 81d18c4b11a..6630b3d4f00 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/fakezcbfilterocc.cpp
+++ b/searchlib/src/vespa/searchlib/test/fakedata/fakezcbfilterocc.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fakezcbfilterocc.h"
#include <vespa/searchlib/bitcompression/compression.h>
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakezcbfilterocc.h b/searchlib/src/vespa/searchlib/test/fakedata/fakezcbfilterocc.h
index e367ec4e35d..87d25cb6761 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/fakezcbfilterocc.h
+++ b/searchlib/src/vespa/searchlib/test/fakedata/fakezcbfilterocc.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "fakeword.h"
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakezcfilterocc.cpp b/searchlib/src/vespa/searchlib/test/fakedata/fakezcfilterocc.cpp
index c3b66079af5..87efc8132ee 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/fakezcfilterocc.cpp
+++ b/searchlib/src/vespa/searchlib/test/fakedata/fakezcfilterocc.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fakezcfilterocc.h"
#include "fpfactory.h"
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakezcfilterocc.h b/searchlib/src/vespa/searchlib/test/fakedata/fakezcfilterocc.h
index ade2efce0ef..bcdd780e1e4 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/fakezcfilterocc.h
+++ b/searchlib/src/vespa/searchlib/test/fakedata/fakezcfilterocc.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "fakeword.h"
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fpfactory.cpp b/searchlib/src/vespa/searchlib/test/fakedata/fpfactory.cpp
index 76bfeac759f..281a1b97dcc 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/fpfactory.cpp
+++ b/searchlib/src/vespa/searchlib/test/fakedata/fpfactory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fakeegcompr64filterocc.h"
#include "fakefilterocc.h"
diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fpfactory.h b/searchlib/src/vespa/searchlib/test/fakedata/fpfactory.h
index 39841d36935..b09e0f05ba0 100644
--- a/searchlib/src/vespa/searchlib/test/fakedata/fpfactory.h
+++ b/searchlib/src/vespa/searchlib/test/fakedata/fpfactory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <map>
diff --git a/searchlib/src/vespa/searchlib/test/imported_attribute_fixture.cpp b/searchlib/src/vespa/searchlib/test/imported_attribute_fixture.cpp
index 61eaae40e90..d240e5a7c6c 100644
--- a/searchlib/src/vespa/searchlib/test/imported_attribute_fixture.cpp
+++ b/searchlib/src/vespa/searchlib/test/imported_attribute_fixture.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "imported_attribute_fixture.h"
#include "mock_gid_to_lid_mapping.h"
diff --git a/searchlib/src/vespa/searchlib/test/imported_attribute_fixture.h b/searchlib/src/vespa/searchlib/test/imported_attribute_fixture.h
index 0a04e1e79fd..150b5bf8746 100644
--- a/searchlib/src/vespa/searchlib/test/imported_attribute_fixture.h
+++ b/searchlib/src/vespa/searchlib/test/imported_attribute_fixture.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/test/initrange.cpp b/searchlib/src/vespa/searchlib/test/initrange.cpp
index 1e23f7c5b8c..5154a8abb08 100644
--- a/searchlib/src/vespa/searchlib/test/initrange.cpp
+++ b/searchlib/src/vespa/searchlib/test/initrange.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "initrange.h"
#ifdef ENABLE_GTEST_MIGRATION
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/searchlib/src/vespa/searchlib/test/initrange.h b/searchlib/src/vespa/searchlib/test/initrange.h
index 4fbb851779a..8c3a685519a 100644
--- a/searchlib/src/vespa/searchlib/test/initrange.h
+++ b/searchlib/src/vespa/searchlib/test/initrange.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/queryeval/searchiterator.h>
diff --git a/searchlib/src/vespa/searchlib/test/make_attribute_map_lookup_node.cpp b/searchlib/src/vespa/searchlib/test/make_attribute_map_lookup_node.cpp
index 6f717d99d2c..a030dcb0640 100644
--- a/searchlib/src/vespa/searchlib/test/make_attribute_map_lookup_node.cpp
+++ b/searchlib/src/vespa/searchlib/test/make_attribute_map_lookup_node.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "make_attribute_map_lookup_node.h"
#include <vespa/searchlib/expression/attribute_map_lookup_node.h>
diff --git a/searchlib/src/vespa/searchlib/test/make_attribute_map_lookup_node.h b/searchlib/src/vespa/searchlib/test/make_attribute_map_lookup_node.h
index 3434c8f2ae3..f56cea962d3 100644
--- a/searchlib/src/vespa/searchlib/test/make_attribute_map_lookup_node.h
+++ b/searchlib/src/vespa/searchlib/test/make_attribute_map_lookup_node.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/searchlib/src/vespa/searchlib/test/memoryindex/CMakeLists.txt b/searchlib/src/vespa/searchlib/test/memoryindex/CMakeLists.txt
index 02179607eae..90921cb53b3 100644
--- a/searchlib/src/vespa/searchlib/test/memoryindex/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/test/memoryindex/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_searchlib_test_memoryindex INTERFACE
SOURCES
DEPENDS
diff --git a/searchlib/src/vespa/searchlib/test/memoryindex/ordered_field_index_inserter.h b/searchlib/src/vespa/searchlib/test/memoryindex/ordered_field_index_inserter.h
index 4d4f320fbe7..793a0c31b1c 100644
--- a/searchlib/src/vespa/searchlib/test/memoryindex/ordered_field_index_inserter.h
+++ b/searchlib/src/vespa/searchlib/test/memoryindex/ordered_field_index_inserter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/test/mock_attribute_context.cpp b/searchlib/src/vespa/searchlib/test/mock_attribute_context.cpp
index e54613716ad..933e14fe379 100644
--- a/searchlib/src/vespa/searchlib/test/mock_attribute_context.cpp
+++ b/searchlib/src/vespa/searchlib/test/mock_attribute_context.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mock_attribute_context.h"
diff --git a/searchlib/src/vespa/searchlib/test/mock_attribute_context.h b/searchlib/src/vespa/searchlib/test/mock_attribute_context.h
index 4b1b60738d5..10e544617f0 100644
--- a/searchlib/src/vespa/searchlib/test/mock_attribute_context.h
+++ b/searchlib/src/vespa/searchlib/test/mock_attribute_context.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/test/mock_attribute_manager.cpp b/searchlib/src/vespa/searchlib/test/mock_attribute_manager.cpp
index 4c80c6f869c..bc5e8356957 100644
--- a/searchlib/src/vespa/searchlib/test/mock_attribute_manager.cpp
+++ b/searchlib/src/vespa/searchlib/test/mock_attribute_manager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mock_attribute_manager.h"
diff --git a/searchlib/src/vespa/searchlib/test/mock_attribute_manager.h b/searchlib/src/vespa/searchlib/test/mock_attribute_manager.h
index a8ec686433a..5968c6660ea 100644
--- a/searchlib/src/vespa/searchlib/test/mock_attribute_manager.h
+++ b/searchlib/src/vespa/searchlib/test/mock_attribute_manager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/attribute/attributecontext.h>
diff --git a/searchlib/src/vespa/searchlib/test/mock_gid_to_lid_mapping.h b/searchlib/src/vespa/searchlib/test/mock_gid_to_lid_mapping.h
index 3f6a136b5dc..82a7caa8df1 100644
--- a/searchlib/src/vespa/searchlib/test/mock_gid_to_lid_mapping.h
+++ b/searchlib/src/vespa/searchlib/test/mock_gid_to_lid_mapping.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/base/globalid.h>
diff --git a/searchlib/src/vespa/searchlib/test/searchiteratorverifier.cpp b/searchlib/src/vespa/searchlib/test/searchiteratorverifier.cpp
index 276f8fbc08d..ad9a6c92eab 100644
--- a/searchlib/src/vespa/searchlib/test/searchiteratorverifier.cpp
+++ b/searchlib/src/vespa/searchlib/test/searchiteratorverifier.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "searchiteratorverifier.h"
#include "initrange.h"
diff --git a/searchlib/src/vespa/searchlib/test/searchiteratorverifier.h b/searchlib/src/vespa/searchlib/test/searchiteratorverifier.h
index afeb46f0c16..78fbd192bfa 100644
--- a/searchlib/src/vespa/searchlib/test/searchiteratorverifier.h
+++ b/searchlib/src/vespa/searchlib/test/searchiteratorverifier.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/queryeval/searchiterator.h>
diff --git a/searchlib/src/vespa/searchlib/test/weightedchildrenverifiers.h b/searchlib/src/vespa/searchlib/test/weightedchildrenverifiers.h
index 2ef03ba97ef..1f3017237a5 100644
--- a/searchlib/src/vespa/searchlib/test/weightedchildrenverifiers.h
+++ b/searchlib/src/vespa/searchlib/test/weightedchildrenverifiers.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "searchiteratorverifier.h"
diff --git a/searchlib/src/vespa/searchlib/transactionlog/CMakeLists.txt b/searchlib/src/vespa/searchlib/transactionlog/CMakeLists.txt
index 6ce7e652326..fadd07337f3 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/transactionlog/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_transactionlog OBJECT
SOURCES
chunks.cpp
diff --git a/searchlib/src/vespa/searchlib/transactionlog/chunks.cpp b/searchlib/src/vespa/searchlib/transactionlog/chunks.cpp
index edb12b4bf36..ac17c47ef38 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/chunks.cpp
+++ b/searchlib/src/vespa/searchlib/transactionlog/chunks.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "chunks.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchlib/src/vespa/searchlib/transactionlog/chunks.h b/searchlib/src/vespa/searchlib/transactionlog/chunks.h
index 6875a1708d9..e58adf4ea19 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/chunks.h
+++ b/searchlib/src/vespa/searchlib/transactionlog/chunks.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/transactionlog/client_common.h b/searchlib/src/vespa/searchlib/transactionlog/client_common.h
index 05bb30ff368..e79c0e9ccbb 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/client_common.h
+++ b/searchlib/src/vespa/searchlib/transactionlog/client_common.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace search::transactionlog { class Packet; }
diff --git a/searchlib/src/vespa/searchlib/transactionlog/client_session.cpp b/searchlib/src/vespa/searchlib/transactionlog/client_session.cpp
index 11568ad2e36..c44edfcec86 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/client_session.cpp
+++ b/searchlib/src/vespa/searchlib/transactionlog/client_session.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "client_session.h"
#include "translogclient.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchlib/src/vespa/searchlib/transactionlog/client_session.h b/searchlib/src/vespa/searchlib/transactionlog/client_session.h
index 49f24d83aaf..fa0e041e1ec 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/client_session.h
+++ b/searchlib/src/vespa/searchlib/transactionlog/client_session.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "client_common.h"
diff --git a/searchlib/src/vespa/searchlib/transactionlog/common.cpp b/searchlib/src/vespa/searchlib/transactionlog/common.cpp
index 8bfc13347e9..1e9923793bd 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/common.cpp
+++ b/searchlib/src/vespa/searchlib/transactionlog/common.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "common.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchlib/src/vespa/searchlib/transactionlog/common.h b/searchlib/src/vespa/searchlib/transactionlog/common.h
index 7f2cb14da56..98601525fdb 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/common.h
+++ b/searchlib/src/vespa/searchlib/transactionlog/common.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/common/serialnum.h>
diff --git a/searchlib/src/vespa/searchlib/transactionlog/domain.cpp b/searchlib/src/vespa/searchlib/transactionlog/domain.cpp
index 1481d1fb191..25ada00e7fb 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/domain.cpp
+++ b/searchlib/src/vespa/searchlib/transactionlog/domain.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "domain.h"
#include "domainpart.h"
diff --git a/searchlib/src/vespa/searchlib/transactionlog/domain.h b/searchlib/src/vespa/searchlib/transactionlog/domain.h
index 5a80758dd0b..01bf552c060 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/domain.h
+++ b/searchlib/src/vespa/searchlib/transactionlog/domain.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "domainconfig.h"
diff --git a/searchlib/src/vespa/searchlib/transactionlog/domainconfig.cpp b/searchlib/src/vespa/searchlib/transactionlog/domainconfig.cpp
index 93f5f910981..b4ab8a1c791 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/domainconfig.cpp
+++ b/searchlib/src/vespa/searchlib/transactionlog/domainconfig.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "domainconfig.h"
diff --git a/searchlib/src/vespa/searchlib/transactionlog/domainconfig.h b/searchlib/src/vespa/searchlib/transactionlog/domainconfig.h
index 33b6a509d20..186227ae958 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/domainconfig.h
+++ b/searchlib/src/vespa/searchlib/transactionlog/domainconfig.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "ichunk.h"
diff --git a/searchlib/src/vespa/searchlib/transactionlog/domainpart.cpp b/searchlib/src/vespa/searchlib/transactionlog/domainpart.cpp
index 9f7f39b7d5c..ee575820cce 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/domainpart.cpp
+++ b/searchlib/src/vespa/searchlib/transactionlog/domainpart.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "domainpart.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchlib/src/vespa/searchlib/transactionlog/domainpart.h b/searchlib/src/vespa/searchlib/transactionlog/domainpart.h
index f5a10cafe3e..9ab0db54391 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/domainpart.h
+++ b/searchlib/src/vespa/searchlib/transactionlog/domainpart.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "common.h"
diff --git a/searchlib/src/vespa/searchlib/transactionlog/ichunk.cpp b/searchlib/src/vespa/searchlib/transactionlog/ichunk.cpp
index 9a57980638d..ee1631ea8c2 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/ichunk.cpp
+++ b/searchlib/src/vespa/searchlib/transactionlog/ichunk.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "chunks.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchlib/src/vespa/searchlib/transactionlog/ichunk.h b/searchlib/src/vespa/searchlib/transactionlog/ichunk.h
index 722aae828db..02bd0ce9426 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/ichunk.h
+++ b/searchlib/src/vespa/searchlib/transactionlog/ichunk.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/transactionlog/nosyncproxy.cpp b/searchlib/src/vespa/searchlib/transactionlog/nosyncproxy.cpp
index b70912b0565..f68016f3440 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/nosyncproxy.cpp
+++ b/searchlib/src/vespa/searchlib/transactionlog/nosyncproxy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "nosyncproxy.h"
namespace search::transactionlog {
diff --git a/searchlib/src/vespa/searchlib/transactionlog/nosyncproxy.h b/searchlib/src/vespa/searchlib/transactionlog/nosyncproxy.h
index d890495bb1b..3ad68f006da 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/nosyncproxy.h
+++ b/searchlib/src/vespa/searchlib/transactionlog/nosyncproxy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/transactionlog/session.cpp b/searchlib/src/vespa/searchlib/transactionlog/session.cpp
index 022a891b3fc..b913110f974 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/session.cpp
+++ b/searchlib/src/vespa/searchlib/transactionlog/session.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "session.h"
#include "domain.h"
#include "domainpart.h"
diff --git a/searchlib/src/vespa/searchlib/transactionlog/session.h b/searchlib/src/vespa/searchlib/transactionlog/session.h
index ea78907da90..a1f7440525d 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/session.h
+++ b/searchlib/src/vespa/searchlib/transactionlog/session.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "common.h"
diff --git a/searchlib/src/vespa/searchlib/transactionlog/syncproxy.h b/searchlib/src/vespa/searchlib/transactionlog/syncproxy.h
index a2623ea3236..604c70f8208 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/syncproxy.h
+++ b/searchlib/src/vespa/searchlib/transactionlog/syncproxy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/transactionlog/trans_log_server_explorer.cpp b/searchlib/src/vespa/searchlib/transactionlog/trans_log_server_explorer.cpp
index bdf12ab64e8..103438d6d61 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/trans_log_server_explorer.cpp
+++ b/searchlib/src/vespa/searchlib/transactionlog/trans_log_server_explorer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "trans_log_server_explorer.h"
#include "translogserver.h"
diff --git a/searchlib/src/vespa/searchlib/transactionlog/trans_log_server_explorer.h b/searchlib/src/vespa/searchlib/transactionlog/trans_log_server_explorer.h
index 66fb1698104..6b5fd935b40 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/trans_log_server_explorer.h
+++ b/searchlib/src/vespa/searchlib/transactionlog/trans_log_server_explorer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/transactionlog/translogclient.cpp b/searchlib/src/vespa/searchlib/transactionlog/translogclient.cpp
index 1d64867fda7..88b3ddd5242 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/translogclient.cpp
+++ b/searchlib/src/vespa/searchlib/transactionlog/translogclient.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "translogclient.h"
#include "common.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchlib/src/vespa/searchlib/transactionlog/translogclient.h b/searchlib/src/vespa/searchlib/transactionlog/translogclient.h
index 423492fa760..b22398d76b3 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/translogclient.h
+++ b/searchlib/src/vespa/searchlib/transactionlog/translogclient.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "client_common.h"
diff --git a/searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp b/searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp
index ae15147a31c..08ee944e749 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp
+++ b/searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "translogserver.h"
#include "domain.h"
#include "client_common.h"
diff --git a/searchlib/src/vespa/searchlib/transactionlog/translogserver.h b/searchlib/src/vespa/searchlib/transactionlog/translogserver.h
index 3c6efa20550..48f6f53dd2a 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/translogserver.h
+++ b/searchlib/src/vespa/searchlib/transactionlog/translogserver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "domainconfig.h"
diff --git a/searchlib/src/vespa/searchlib/transactionlog/translogserverapp.cpp b/searchlib/src/vespa/searchlib/transactionlog/translogserverapp.cpp
index 2ea37a7522b..2d2863af874 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/translogserverapp.cpp
+++ b/searchlib/src/vespa/searchlib/transactionlog/translogserverapp.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "translogserverapp.h"
#include <vespa/config/subscription/configuri.h>
diff --git a/searchlib/src/vespa/searchlib/transactionlog/translogserverapp.h b/searchlib/src/vespa/searchlib/transactionlog/translogserverapp.h
index fb93559c29f..7c3ebdcf22c 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/translogserverapp.h
+++ b/searchlib/src/vespa/searchlib/transactionlog/translogserverapp.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "translogserver.h"
diff --git a/searchlib/src/vespa/searchlib/uca/CMakeLists.txt b/searchlib/src/vespa/searchlib/uca/CMakeLists.txt
index c3f469e59ac..6a4602381f4 100644
--- a/searchlib/src/vespa/searchlib/uca/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/uca/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
find_package(ICU 60.0 REQUIRED COMPONENTS uc i18n)
vespa_add_library(searchlib_searchlib_uca
SOURCES
diff --git a/searchlib/src/vespa/searchlib/uca/ucaconverter.cpp b/searchlib/src/vespa/searchlib/uca/ucaconverter.cpp
index b36e9d13cdb..42e63044e2d 100644
--- a/searchlib/src/vespa/searchlib/uca/ucaconverter.cpp
+++ b/searchlib/src/vespa/searchlib/uca/ucaconverter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "ucaconverter.h"
#include <unicode/ustring.h>
diff --git a/searchlib/src/vespa/searchlib/uca/ucaconverter.h b/searchlib/src/vespa/searchlib/uca/ucaconverter.h
index 6204a857261..ddffd660c4b 100644
--- a/searchlib/src/vespa/searchlib/uca/ucaconverter.h
+++ b/searchlib/src/vespa/searchlib/uca/ucaconverter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/uca/ucafunctionnode.cpp b/searchlib/src/vespa/searchlib/uca/ucafunctionnode.cpp
index da8f5c8c462..66245595f34 100644
--- a/searchlib/src/vespa/searchlib/uca/ucafunctionnode.cpp
+++ b/searchlib/src/vespa/searchlib/uca/ucafunctionnode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "ucafunctionnode.h"
#include "ucaconverter.h"
diff --git a/searchlib/src/vespa/searchlib/uca/ucafunctionnode.h b/searchlib/src/vespa/searchlib/uca/ucafunctionnode.h
index 10d51a397d5..3ebbe930102 100644
--- a/searchlib/src/vespa/searchlib/uca/ucafunctionnode.h
+++ b/searchlib/src/vespa/searchlib/uca/ucafunctionnode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/expression/unaryfunctionnode.h>
diff --git a/searchlib/src/vespa/searchlib/util/CMakeLists.txt b/searchlib/src/vespa/searchlib/util/CMakeLists.txt
index 320a6480202..619913f9ca6 100644
--- a/searchlib/src/vespa/searchlib/util/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/util/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchlib_util OBJECT
SOURCES
bufferwriter.cpp
@@ -6,6 +6,7 @@ vespa_add_library(searchlib_util OBJECT
comprfile.cpp
dirtraverse.cpp
drainingbufferwriter.cpp
+ file_with_header.cpp
filealign.cpp
fileheadertk.cpp
filekit.cpp
diff --git a/searchlib/src/vespa/searchlib/util/bufferwriter.cpp b/searchlib/src/vespa/searchlib/util/bufferwriter.cpp
index 6e57d6f58d4..4477554c0eb 100644
--- a/searchlib/src/vespa/searchlib/util/bufferwriter.cpp
+++ b/searchlib/src/vespa/searchlib/util/bufferwriter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bufferwriter.h"
diff --git a/searchlib/src/vespa/searchlib/util/bufferwriter.h b/searchlib/src/vespa/searchlib/util/bufferwriter.h
index 3da6e3f8030..64177f05a30 100644
--- a/searchlib/src/vespa/searchlib/util/bufferwriter.h
+++ b/searchlib/src/vespa/searchlib/util/bufferwriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/util/comprbuffer.cpp b/searchlib/src/vespa/searchlib/util/comprbuffer.cpp
index 4a3e79fdb76..ab883ee6956 100644
--- a/searchlib/src/vespa/searchlib/util/comprbuffer.cpp
+++ b/searchlib/src/vespa/searchlib/util/comprbuffer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "comprbuffer.h"
#include <vespa/fastos/file.h>
diff --git a/searchlib/src/vespa/searchlib/util/comprbuffer.h b/searchlib/src/vespa/searchlib/util/comprbuffer.h
index 6bddf322c38..6524c49ae7c 100644
--- a/searchlib/src/vespa/searchlib/util/comprbuffer.h
+++ b/searchlib/src/vespa/searchlib/util/comprbuffer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/util/comprfile.cpp b/searchlib/src/vespa/searchlib/util/comprfile.cpp
index 3ee402bca2a..61eeca6fc2d 100644
--- a/searchlib/src/vespa/searchlib/util/comprfile.cpp
+++ b/searchlib/src/vespa/searchlib/util/comprfile.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "comprfile.h"
#include <vespa/fastos/file.h>
diff --git a/searchlib/src/vespa/searchlib/util/comprfile.h b/searchlib/src/vespa/searchlib/util/comprfile.h
index b713615bed1..2ee95a53235 100644
--- a/searchlib/src/vespa/searchlib/util/comprfile.h
+++ b/searchlib/src/vespa/searchlib/util/comprfile.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/util/dirtraverse.cpp b/searchlib/src/vespa/searchlib/util/dirtraverse.cpp
index 0ccb8675f37..6ab5d42d350 100644
--- a/searchlib/src/vespa/searchlib/util/dirtraverse.cpp
+++ b/searchlib/src/vespa/searchlib/util/dirtraverse.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dirtraverse.h"
#include <vespa/vespalib/util/size_literals.h>
diff --git a/searchlib/src/vespa/searchlib/util/dirtraverse.h b/searchlib/src/vespa/searchlib/util/dirtraverse.h
index f2bf9cd6ffc..bff7aae705a 100644
--- a/searchlib/src/vespa/searchlib/util/dirtraverse.h
+++ b/searchlib/src/vespa/searchlib/util/dirtraverse.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/util/drainingbufferwriter.cpp b/searchlib/src/vespa/searchlib/util/drainingbufferwriter.cpp
index 0e9f743edbd..b16632282ff 100644
--- a/searchlib/src/vespa/searchlib/util/drainingbufferwriter.cpp
+++ b/searchlib/src/vespa/searchlib/util/drainingbufferwriter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "drainingbufferwriter.h"
#include <cassert>
diff --git a/searchlib/src/vespa/searchlib/util/drainingbufferwriter.h b/searchlib/src/vespa/searchlib/util/drainingbufferwriter.h
index f0a58b0d25a..a2bf1c557c5 100644
--- a/searchlib/src/vespa/searchlib/util/drainingbufferwriter.h
+++ b/searchlib/src/vespa/searchlib/util/drainingbufferwriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/util/file_settings.h b/searchlib/src/vespa/searchlib/util/file_settings.h
new file mode 100644
index 00000000000..1bdd1a56cda
--- /dev/null
+++ b/searchlib/src/vespa/searchlib/util/file_settings.h
@@ -0,0 +1,17 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/vespalib/util/size_literals.h>
+
+namespace search {
+
+/**
+ * Common settings that is used for file I/O.
+ */
+struct FileSettings {
+ // The alignment (in bytes) used for DIRECT I/O write and read.
+ static constexpr size_t DIRECTIO_ALIGNMENT = 4_Ki;
+};
+
+}
diff --git a/searchlib/src/vespa/searchlib/util/file_with_header.cpp b/searchlib/src/vespa/searchlib/util/file_with_header.cpp
new file mode 100644
index 00000000000..b004f2b29d5
--- /dev/null
+++ b/searchlib/src/vespa/searchlib/util/file_with_header.cpp
@@ -0,0 +1,59 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "file_settings.h"
+#include "file_with_header.h"
+#include "filesizecalculator.h"
+#include <vespa/fastos/file.h>
+#include <vespa/vespalib/util/size_literals.h>
+
+namespace search {
+
+namespace {
+
+bool
+extract_file_size(const vespalib::GenericHeader& header,
+ FastOS_FileInterface& file, uint64_t& file_size)
+{
+ file_size = file.GetSize();
+ return FileSizeCalculator::extractFileSize(header, header.getSize(),file.GetFileName(), file_size);
+}
+
+}
+
+FileWithHeader::FileWithHeader(std::unique_ptr<FastOS_FileInterface> file_in)
+ : _file(std::move(file_in)),
+ _header(FileSettings::DIRECTIO_ALIGNMENT),
+ _header_len(0),
+ _file_size(0)
+{
+ if (valid()) {
+ _header_len = _header.readFile(*_file);
+ _file->SetPosition(_header_len);
+ if (!extract_file_size(_header, *_file, _file_size)) {
+ _file->Close();
+ }
+ }
+}
+
+FileWithHeader::~FileWithHeader() = default;
+
+bool
+FileWithHeader::valid() const
+{
+ return _file && _file->IsOpened();
+}
+
+void
+FileWithHeader::rewind()
+{
+ _file->SetPosition(_header_len);
+}
+
+void
+FileWithHeader::close()
+{
+ _file->Close();
+}
+
+
+}
diff --git a/searchlib/src/vespa/searchlib/util/file_with_header.h b/searchlib/src/vespa/searchlib/util/file_with_header.h
new file mode 100644
index 00000000000..4432b76be67
--- /dev/null
+++ b/searchlib/src/vespa/searchlib/util/file_with_header.h
@@ -0,0 +1,38 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/vespalib/data/fileheader.h>
+#include <memory>
+
+class FastOS_FileInterface;
+
+namespace search {
+
+/**
+ * Class that encapsulates a file containing a generic file header, followed by binary data.
+ *
+ * After construction the file is positioned at the start of the binary data.
+ * It's assumed that the file was written using FileSettings::DIRECTIO_ALIGNMENT.
+ */
+class FileWithHeader {
+private:
+ std::unique_ptr<FastOS_FileInterface> _file;
+ vespalib::FileHeader _header;
+ uint64_t _header_len;
+ uint64_t _file_size;
+
+public:
+ FileWithHeader(std::unique_ptr<FastOS_FileInterface> file_in);
+ ~FileWithHeader();
+ FastOS_FileInterface& file() const { return *_file; }
+ const vespalib::GenericHeader& header() const { return _header; }
+ uint64_t file_size() const { return _file_size; }
+ uint64_t data_size() const { return _file_size - _header_len; }
+
+ bool valid() const;
+ void rewind();
+ void close();
+};
+
+}
diff --git a/searchlib/src/vespa/searchlib/util/filealign.cpp b/searchlib/src/vespa/searchlib/util/filealign.cpp
index 03b18533168..9ea10d8218e 100644
--- a/searchlib/src/vespa/searchlib/util/filealign.cpp
+++ b/searchlib/src/vespa/searchlib/util/filealign.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "filealign.h"
#include <vespa/fastos/file.h>
diff --git a/searchlib/src/vespa/searchlib/util/filealign.h b/searchlib/src/vespa/searchlib/util/filealign.h
index 4b6dc2daf15..0ac082716e8 100644
--- a/searchlib/src/vespa/searchlib/util/filealign.h
+++ b/searchlib/src/vespa/searchlib/util/filealign.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/util/fileheadertk.cpp b/searchlib/src/vespa/searchlib/util/fileheadertk.cpp
index ef7b430fce2..aa27fdde669 100644
--- a/searchlib/src/vespa/searchlib/util/fileheadertk.cpp
+++ b/searchlib/src/vespa/searchlib/util/fileheadertk.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fileheadertk.h"
#include <vespa/vespalib/component/vtag.h>
diff --git a/searchlib/src/vespa/searchlib/util/fileheadertk.h b/searchlib/src/vespa/searchlib/util/fileheadertk.h
index 7c61d1ec11d..c5c1c7dfdca 100644
--- a/searchlib/src/vespa/searchlib/util/fileheadertk.h
+++ b/searchlib/src/vespa/searchlib/util/fileheadertk.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/data/fileheader.h>
diff --git a/searchlib/src/vespa/searchlib/util/filekit.cpp b/searchlib/src/vespa/searchlib/util/filekit.cpp
index 6fc0e27d9e3..68557159635 100644
--- a/searchlib/src/vespa/searchlib/util/filekit.cpp
+++ b/searchlib/src/vespa/searchlib/util/filekit.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "filekit.h"
#include <vespa/vespalib/util/error.h>
diff --git a/searchlib/src/vespa/searchlib/util/filekit.h b/searchlib/src/vespa/searchlib/util/filekit.h
index c33930ce1d4..9720fc1d4a2 100644
--- a/searchlib/src/vespa/searchlib/util/filekit.h
+++ b/searchlib/src/vespa/searchlib/util/filekit.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/util/filesizecalculator.cpp b/searchlib/src/vespa/searchlib/util/filesizecalculator.cpp
index a3aa4be384d..16a96c7b439 100644
--- a/searchlib/src/vespa/searchlib/util/filesizecalculator.cpp
+++ b/searchlib/src/vespa/searchlib/util/filesizecalculator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "filesizecalculator.h"
#include <vespa/vespalib/data/fileheader.h>
diff --git a/searchlib/src/vespa/searchlib/util/filesizecalculator.h b/searchlib/src/vespa/searchlib/util/filesizecalculator.h
index bdd20475c43..590893a0704 100644
--- a/searchlib/src/vespa/searchlib/util/filesizecalculator.h
+++ b/searchlib/src/vespa/searchlib/util/filesizecalculator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/util/fileutil.cpp b/searchlib/src/vespa/searchlib/util/fileutil.cpp
index e38763f9ba8..5c213d4e0f0 100644
--- a/searchlib/src/vespa/searchlib/util/fileutil.cpp
+++ b/searchlib/src/vespa/searchlib/util/fileutil.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fileutil.hpp"
#include "filesizecalculator.h"
diff --git a/searchlib/src/vespa/searchlib/util/fileutil.h b/searchlib/src/vespa/searchlib/util/fileutil.h
index 48654908fb7..27761403b96 100644
--- a/searchlib/src/vespa/searchlib/util/fileutil.h
+++ b/searchlib/src/vespa/searchlib/util/fileutil.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vector>
diff --git a/searchlib/src/vespa/searchlib/util/fileutil.hpp b/searchlib/src/vespa/searchlib/util/fileutil.hpp
index 84fa89a8f5b..eb0d62b195e 100644
--- a/searchlib/src/vespa/searchlib/util/fileutil.hpp
+++ b/searchlib/src/vespa/searchlib/util/fileutil.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "fileutil.h"
diff --git a/searchlib/src/vespa/searchlib/util/foldedstringcompare.cpp b/searchlib/src/vespa/searchlib/util/foldedstringcompare.cpp
index 234b880bf23..86da51fc9b6 100644
--- a/searchlib/src/vespa/searchlib/util/foldedstringcompare.cpp
+++ b/searchlib/src/vespa/searchlib/util/foldedstringcompare.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "foldedstringcompare.h"
#include <vespa/vespalib/text/utf8.h>
diff --git a/searchlib/src/vespa/searchlib/util/foldedstringcompare.h b/searchlib/src/vespa/searchlib/util/foldedstringcompare.h
index 76267c26801..30e7ec93345 100644
--- a/searchlib/src/vespa/searchlib/util/foldedstringcompare.h
+++ b/searchlib/src/vespa/searchlib/util/foldedstringcompare.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/util/inline.h b/searchlib/src/vespa/searchlib/util/inline.h
index c90989c8844..f8485f22de7 100644
--- a/searchlib/src/vespa/searchlib/util/inline.h
+++ b/searchlib/src/vespa/searchlib/util/inline.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/inline.h>
diff --git a/searchlib/src/vespa/searchlib/util/logutil.cpp b/searchlib/src/vespa/searchlib/util/logutil.cpp
index 15bd9d32887..0f8e28adeb0 100644
--- a/searchlib/src/vespa/searchlib/util/logutil.cpp
+++ b/searchlib/src/vespa/searchlib/util/logutil.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "logutil.h"
#include <vespa/searchlib/util/dirtraverse.h>
diff --git a/searchlib/src/vespa/searchlib/util/logutil.h b/searchlib/src/vespa/searchlib/util/logutil.h
index 9e256af793f..e30fd15a33a 100644
--- a/searchlib/src/vespa/searchlib/util/logutil.h
+++ b/searchlib/src/vespa/searchlib/util/logutil.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/jsonwriter.h>
diff --git a/searchlib/src/vespa/searchlib/util/postingpriorityqueue.h b/searchlib/src/vespa/searchlib/util/postingpriorityqueue.h
index 008e9055e57..c263c6bc470 100644
--- a/searchlib/src/vespa/searchlib/util/postingpriorityqueue.h
+++ b/searchlib/src/vespa/searchlib/util/postingpriorityqueue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/util/random_normal.h b/searchlib/src/vespa/searchlib/util/random_normal.h
index c74935de02f..2b9e566303c 100644
--- a/searchlib/src/vespa/searchlib/util/random_normal.h
+++ b/searchlib/src/vespa/searchlib/util/random_normal.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/util/randomgenerator.h b/searchlib/src/vespa/searchlib/util/randomgenerator.h
index ac23b387740..89b65a65e92 100644
--- a/searchlib/src/vespa/searchlib/util/randomgenerator.h
+++ b/searchlib/src/vespa/searchlib/util/randomgenerator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/util/rawbuf.cpp b/searchlib/src/vespa/searchlib/util/rawbuf.cpp
index 0fcef353f33..d3cc9996c34 100644
--- a/searchlib/src/vespa/searchlib/util/rawbuf.cpp
+++ b/searchlib/src/vespa/searchlib/util/rawbuf.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rawbuf.h"
#include <vespa/vespalib/util/compress.h>
diff --git a/searchlib/src/vespa/searchlib/util/rawbuf.h b/searchlib/src/vespa/searchlib/util/rawbuf.h
index fd4ce8976a9..e69c13e13b3 100644
--- a/searchlib/src/vespa/searchlib/util/rawbuf.h
+++ b/searchlib/src/vespa/searchlib/util/rawbuf.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/util/runnable.h b/searchlib/src/vespa/searchlib/util/runnable.h
index a95d4d68368..e268b13e09a 100644
--- a/searchlib/src/vespa/searchlib/util/runnable.h
+++ b/searchlib/src/vespa/searchlib/util/runnable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/util/searchable_stats.h b/searchlib/src/vespa/searchlib/util/searchable_stats.h
index 5138e636df5..970076c12d0 100644
--- a/searchlib/src/vespa/searchlib/util/searchable_stats.h
+++ b/searchlib/src/vespa/searchlib/util/searchable_stats.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/memoryusage.h>
diff --git a/searchlib/src/vespa/searchlib/util/slime_output_raw_buf_adapter.cpp b/searchlib/src/vespa/searchlib/util/slime_output_raw_buf_adapter.cpp
index dc98358f03c..273dd2d37cd 100644
--- a/searchlib/src/vespa/searchlib/util/slime_output_raw_buf_adapter.cpp
+++ b/searchlib/src/vespa/searchlib/util/slime_output_raw_buf_adapter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "slime_output_raw_buf_adapter.h"
diff --git a/searchlib/src/vespa/searchlib/util/slime_output_raw_buf_adapter.h b/searchlib/src/vespa/searchlib/util/slime_output_raw_buf_adapter.h
index 3802c9e2cac..5cdfec78ec1 100644
--- a/searchlib/src/vespa/searchlib/util/slime_output_raw_buf_adapter.h
+++ b/searchlib/src/vespa/searchlib/util/slime_output_raw_buf_adapter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/util/sort.h b/searchlib/src/vespa/searchlib/util/sort.h
index cc6eea32c6e..ff1c7f3fbe8 100644
--- a/searchlib/src/vespa/searchlib/util/sort.h
+++ b/searchlib/src/vespa/searchlib/util/sort.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/util/state_explorer_utils.cpp b/searchlib/src/vespa/searchlib/util/state_explorer_utils.cpp
index 307fc91a605..00e2e081302 100644
--- a/searchlib/src/vespa/searchlib/util/state_explorer_utils.cpp
+++ b/searchlib/src/vespa/searchlib/util/state_explorer_utils.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "state_explorer_utils.h"
#include <vespa/vespalib/data/slime/cursor.h>
diff --git a/searchlib/src/vespa/searchlib/util/state_explorer_utils.h b/searchlib/src/vespa/searchlib/util/state_explorer_utils.h
index 58867b426a1..eebac033714 100644
--- a/searchlib/src/vespa/searchlib/util/state_explorer_utils.h
+++ b/searchlib/src/vespa/searchlib/util/state_explorer_utils.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/util/stringenum.cpp b/searchlib/src/vespa/searchlib/util/stringenum.cpp
index efcf33e73ab..01c4d4e785e 100644
--- a/searchlib/src/vespa/searchlib/util/stringenum.cpp
+++ b/searchlib/src/vespa/searchlib/util/stringenum.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "stringenum.h"
#include <vespa/fastlib/io/bufferedfile.h>
diff --git a/searchlib/src/vespa/searchlib/util/stringenum.h b/searchlib/src/vespa/searchlib/util/stringenum.h
index bd234ba2e36..85f97de48ad 100644
--- a/searchlib/src/vespa/searchlib/util/stringenum.h
+++ b/searchlib/src/vespa/searchlib/util/stringenum.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchlib/src/vespa/searchlib/util/url.cpp b/searchlib/src/vespa/searchlib/util/url.cpp
index 2e1a808c493..5eeb16e3f3b 100644
--- a/searchlib/src/vespa/searchlib/util/url.cpp
+++ b/searchlib/src/vespa/searchlib/util/url.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "url.h"
#include <algorithm>
diff --git a/searchlib/src/vespa/searchlib/util/url.h b/searchlib/src/vespa/searchlib/util/url.h
index 4647c7f0bd8..796640a131e 100644
--- a/searchlib/src/vespa/searchlib/util/url.h
+++ b/searchlib/src/vespa/searchlib/util/url.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/CMakeLists.txt b/searchsummary/CMakeLists.txt
index 3792f2b6218..ac392c6582c 100644
--- a/searchsummary/CMakeLists.txt
+++ b/searchsummary/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/searchsummary/pom.xml b/searchsummary/pom.xml
index cb110f107a9..2cfe3ef632f 100644
--- a/searchsummary/pom.xml
+++ b/searchsummary/pom.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/searchsummary/src/tests/docsumformat/CMakeLists.txt b/searchsummary/src/tests/docsumformat/CMakeLists.txt
index 9d658e6a4d0..147b90dffbe 100644
--- a/searchsummary/src/tests/docsumformat/CMakeLists.txt
+++ b/searchsummary/src/tests/docsumformat/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchsummary_docsum-pack_app TEST
SOURCES
docsum-pack.cpp
diff --git a/searchsummary/src/tests/docsumformat/docsum-pack.cpp b/searchsummary/src/tests/docsumformat/docsum-pack.cpp
index b0fc13c8a3d..240abe6bae7 100644
--- a/searchsummary/src/tests/docsumformat/docsum-pack.cpp
+++ b/searchsummary/src/tests/docsumformat/docsum-pack.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/util/rawbuf.h>
#include <vespa/searchsummary/docsummary/general_result.h>
diff --git a/searchsummary/src/tests/docsumformat/dotest.sh b/searchsummary/src/tests/docsumformat/dotest.sh
index cb5b126f980..f619a392bc9 100755
--- a/searchsummary/src/tests/docsumformat/dotest.sh
+++ b/searchsummary/src/tests/docsumformat/dotest.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
echo "running pack test..."
diff --git a/searchsummary/src/tests/docsummary/CMakeLists.txt b/searchsummary/src/tests/docsummary/CMakeLists.txt
index 0536fad3f8a..26a2963809a 100644
--- a/searchsummary/src/tests/docsummary/CMakeLists.txt
+++ b/searchsummary/src/tests/docsummary/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchsummary_positionsdfw_test_app TEST
SOURCES
positionsdfw_test.cpp
diff --git a/searchsummary/src/tests/docsummary/attribute_combiner/CMakeLists.txt b/searchsummary/src/tests/docsummary/attribute_combiner/CMakeLists.txt
index afa1deede55..8a82b2efb94 100644
--- a/searchsummary/src/tests/docsummary/attribute_combiner/CMakeLists.txt
+++ b/searchsummary/src/tests/docsummary/attribute_combiner/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchsummary_attribute_combiner_test_app TEST
SOURCES
attribute_combiner_test.cpp
diff --git a/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp b/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp
index eaeaa27f053..d5a908fc8bd 100644
--- a/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp
+++ b/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcommon/common/undefinedvalues.h>
#include <vespa/searchlib/attribute/attributevector.h>
diff --git a/searchsummary/src/tests/docsummary/attributedfw/CMakeLists.txt b/searchsummary/src/tests/docsummary/attributedfw/CMakeLists.txt
index 0d7d98bb385..09d56ba065d 100644
--- a/searchsummary/src/tests/docsummary/attributedfw/CMakeLists.txt
+++ b/searchsummary/src/tests/docsummary/attributedfw/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchsummary_attributedfw_test_app TEST
SOURCES
attributedfw_test.cpp
diff --git a/searchsummary/src/tests/docsummary/attributedfw/attributedfw_test.cpp b/searchsummary/src/tests/docsummary/attributedfw/attributedfw_test.cpp
index 7bea92ec8f3..9f6ca8f6b57 100644
--- a/searchsummary/src/tests/docsummary/attributedfw/attributedfw_test.cpp
+++ b/searchsummary/src/tests/docsummary/attributedfw/attributedfw_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/common/matching_elements_fields.h>
#include <vespa/searchsummary/docsummary/attributedfw.h>
diff --git a/searchsummary/src/tests/docsummary/positionsdfw_test.cpp b/searchsummary/src/tests/docsummary/positionsdfw_test.cpp
index 683bab49353..ee9a97a4685 100644
--- a/searchsummary/src/tests/docsummary/positionsdfw_test.cpp
+++ b/searchsummary/src/tests/docsummary/positionsdfw_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for positionsdfw.
#include <vespa/searchlib/attribute/extendableattributes.h>
diff --git a/searchsummary/src/tests/docsummary/slime_summary/CMakeLists.txt b/searchsummary/src/tests/docsummary/slime_summary/CMakeLists.txt
index 3c3d030db7b..344a33952d6 100644
--- a/searchsummary/src/tests/docsummary/slime_summary/CMakeLists.txt
+++ b/searchsummary/src/tests/docsummary/slime_summary/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchsummary_slime_summary_test_app TEST
SOURCES
slime_summary_test.cpp
diff --git a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp
index c1880dca4a3..0a421882784 100644
--- a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp
+++ b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/common/matching_elements.h>
#include <vespa/searchsummary/docsummary/docsumwriter.h>
diff --git a/searchsummary/src/tests/extractkeywords/CMakeLists.txt b/searchsummary/src/tests/extractkeywords/CMakeLists.txt
index 5eae390a5ec..802bff92544 100644
--- a/searchsummary/src/tests/extractkeywords/CMakeLists.txt
+++ b/searchsummary/src/tests/extractkeywords/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(searchsummary_extractkeywordstest_app TEST
SOURCES
extractkeywordstest.cpp
diff --git a/searchsummary/src/tests/extractkeywords/extractkeywordstest.cpp b/searchsummary/src/tests/extractkeywords/extractkeywordstest.cpp
index 3a2c5f979ab..42000b3e235 100644
--- a/searchsummary/src/tests/extractkeywords/extractkeywordstest.cpp
+++ b/searchsummary/src/tests/extractkeywords/extractkeywordstest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "extractkeywordstest.h"
#include <vespa/searchsummary/docsummary/keywordextractor.h>
diff --git a/searchsummary/src/tests/extractkeywords/extractkeywordstest.h b/searchsummary/src/tests/extractkeywords/extractkeywordstest.h
index 739ba4bf1ff..2e07717821a 100644
--- a/searchsummary/src/tests/extractkeywords/extractkeywordstest.h
+++ b/searchsummary/src/tests/extractkeywords/extractkeywordstest.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/tests/extractkeywords/runtests.sh b/searchsummary/src/tests/extractkeywords/runtests.sh
index 2b1cf3f228e..611b47dd888 100755
--- a/searchsummary/src/tests/extractkeywords/runtests.sh
+++ b/searchsummary/src/tests/extractkeywords/runtests.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
diff --git a/searchsummary/src/tests/extractkeywords/simplequerystack.cpp b/searchsummary/src/tests/extractkeywords/simplequerystack.cpp
index 8c85417c79a..c96ef8a8455 100644
--- a/searchsummary/src/tests/extractkeywords/simplequerystack.cpp
+++ b/searchsummary/src/tests/extractkeywords/simplequerystack.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simplequerystack.h"
#include <vespa/vespalib/util/compress.h>
diff --git a/searchsummary/src/tests/extractkeywords/simplequerystack.h b/searchsummary/src/tests/extractkeywords/simplequerystack.h
index 7347c66c925..0b61a41944b 100644
--- a/searchsummary/src/tests/extractkeywords/simplequerystack.h
+++ b/searchsummary/src/tests/extractkeywords/simplequerystack.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/tests/extractkeywords/simplequerystackitem.cpp b/searchsummary/src/tests/extractkeywords/simplequerystackitem.cpp
index f12822949f9..f821684dc8c 100644
--- a/searchsummary/src/tests/extractkeywords/simplequerystackitem.cpp
+++ b/searchsummary/src/tests/extractkeywords/simplequerystackitem.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simplequerystackitem.h"
#include <vespa/vespalib/objects/nbo.h>
diff --git a/searchsummary/src/tests/extractkeywords/simplequerystackitem.h b/searchsummary/src/tests/extractkeywords/simplequerystackitem.h
index 15d8f7e5938..58864e18444 100644
--- a/searchsummary/src/tests/extractkeywords/simplequerystackitem.h
+++ b/searchsummary/src/tests/extractkeywords/simplequerystackitem.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/CMakeLists.txt b/searchsummary/src/vespa/searchsummary/CMakeLists.txt
index 582384b2aaa..917e8b017da 100644
--- a/searchsummary/src/vespa/searchsummary/CMakeLists.txt
+++ b/searchsummary/src/vespa/searchsummary/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchsummary
SOURCES
$<TARGET_OBJECTS:searchsummary_config>
diff --git a/searchsummary/src/vespa/searchsummary/config/CMakeLists.txt b/searchsummary/src/vespa/searchsummary/config/CMakeLists.txt
index a01938d8ad4..083f09a44e2 100644
--- a/searchsummary/src/vespa/searchsummary/config/CMakeLists.txt
+++ b/searchsummary/src/vespa/searchsummary/config/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchsummary_config OBJECT
SOURCES
DEPENDS
diff --git a/searchsummary/src/vespa/searchsummary/config/juniperrc.def b/searchsummary/src/vespa/searchsummary/config/juniperrc.def
index 52f8104aa46..9146e4539b8 100644
--- a/searchsummary/src/vespa/searchsummary/config/juniperrc.def
+++ b/searchsummary/src/vespa/searchsummary/config/juniperrc.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search.summary
## Set the length (in #characters) of the dynamically generated
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/CMakeLists.txt b/searchsummary/src/vespa/searchsummary/docsummary/CMakeLists.txt
index ccda57e820c..1f6004111cc 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/CMakeLists.txt
+++ b/searchsummary/src/vespa/searchsummary/docsummary/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchsummary_docsummary OBJECT
SOURCES
array_attribute_combiner_dfw.cpp
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.cpp
index 7a656eb0422..8eba167b9cf 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "array_attribute_combiner_dfw.h"
#include "attribute_field_writer.h"
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.h b/searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.h
index 742128a229d..c36140c5220 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/attribute_combiner_dfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/attribute_combiner_dfw.cpp
index 4ad42133f14..01fd688f9e0 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/attribute_combiner_dfw.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/attribute_combiner_dfw.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "array_attribute_combiner_dfw.h"
#include "attribute_combiner_dfw.h"
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/attribute_combiner_dfw.h b/searchsummary/src/vespa/searchsummary/docsummary/attribute_combiner_dfw.h
index bb635d4d280..f0fed55b5f0 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/attribute_combiner_dfw.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/attribute_combiner_dfw.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/attribute_field_writer.cpp b/searchsummary/src/vespa/searchsummary/docsummary/attribute_field_writer.cpp
index 91fec74fce9..e8777a28775 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/attribute_field_writer.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/attribute_field_writer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_field_writer.h"
#include <vespa/searchcommon/attribute/attributecontent.h>
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/attribute_field_writer.h b/searchsummary/src/vespa/searchsummary/docsummary/attribute_field_writer.h
index 95f5f5040f7..eb108a9681d 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/attribute_field_writer.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/attribute_field_writer.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.cpp
index d41d4e0010c..36ebadaa2a2 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attributedfw.h"
#include "docsumstate.h"
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.h b/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.h
index 55a30f0bb7b..cf42dac75c0 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer_state.h b/searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer_state.h
index 080207845be..0ea8780ba30 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer_state.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer_state.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.cpp
index b9d0c27bd16..a1bc690e042 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_combiner_dfw.h"
#include "docsumconfig.h"
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.h
index f6f1939cc62..70c8d524527 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumconfig.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumfieldwriter.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsumfieldwriter.cpp
index f24f5841bd2..afc1ec4b3f2 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumfieldwriter.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumfieldwriter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "docsumfieldwriter.h"
#include "idocsumenvironment.h"
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumfieldwriter.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumfieldwriter.h
index a40f105a1cb..ed43dde1c34 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumfieldwriter.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumfieldwriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.cpp
index 6f042ee3907..4e551078c0b 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "docsumstate.h"
#include <vespa/juniper/rpinterface.h>
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h
index 88a95d0446c..cbb6925c1e0 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumstore.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumstore.h
index 21ce81c483b..d6a7456cd95 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumstore.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumstore.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumstorevalue.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumstorevalue.h
index 4aaf1bf5816..c0bbaa15975 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumstorevalue.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumstorevalue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdint>
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp
index 0e647b43e78..00c40baefbc 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "docsumwriter.h"
#include "docsumstate.h"
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h
index 2b686afcb42..e70e3db8655 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp
index 0249b96f86b..5869de27b1d 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "juniperdfw.h"
#include "docsumwriter.h"
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/general_result.cpp b/searchsummary/src/vespa/searchsummary/docsummary/general_result.cpp
index 030cf7e82c1..3c01c23c965 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/general_result.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/general_result.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "general_result.h"
#include "resultconfig.h"
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/general_result.h b/searchsummary/src/vespa/searchsummary/docsummary/general_result.h
index 4920985d9ae..b5d07d714ee 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/general_result.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/general_result.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.cpp
index df510d5bcbc..35808ffdd6f 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "geoposdfw.h"
#include <vespa/searchlib/common/documentlocations.h>
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.h b/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.h
index 9bd85abaf17..020e864d902 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/geoposdfw.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/getdocsumargs.cpp b/searchsummary/src/vespa/searchsummary/docsummary/getdocsumargs.cpp
index c6148cff8b3..af0bd5fd884 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/getdocsumargs.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/getdocsumargs.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "getdocsumargs.h"
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/getdocsumargs.h b/searchsummary/src/vespa/searchsummary/docsummary/getdocsumargs.h
index 17b514883d1..9be90aba672 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/getdocsumargs.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/getdocsumargs.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/idocsumenvironment.h b/searchsummary/src/vespa/searchsummary/docsummary/idocsumenvironment.h
index 88f8e4f6c5d..bc6a347590a 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/idocsumenvironment.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/idocsumenvironment.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/itokenizer.h b/searchsummary/src/vespa/searchsummary/docsummary/itokenizer.h
index e9fc3579f31..83da9e4da15 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/itokenizer.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/itokenizer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/juniperdfw.h b/searchsummary/src/vespa/searchsummary/docsummary/juniperdfw.h
index 1cdeeb2f679..f9a6a56e01a 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/juniperdfw.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/juniperdfw.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/juniperproperties.cpp b/searchsummary/src/vespa/searchsummary/docsummary/juniperproperties.cpp
index 7f3a31f86c5..cef0ba5793b 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/juniperproperties.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/juniperproperties.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "juniperproperties.h"
#include <vespa/searchcommon/config/subscriptionproxyng.h>
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/juniperproperties.h b/searchsummary/src/vespa/searchsummary/docsummary/juniperproperties.h
index c313b917271..856d564acc6 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/juniperproperties.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/juniperproperties.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchsummary/config/config-juniperrc.h>
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp b/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp
index 403bf3968bf..bd05dd4b0f5 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "docsumstate.h"
#include "keywordextractor.h"
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.h b/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.h
index cfc73d606a0..50d72f7a7d0 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/linguisticsannotation.cpp b/searchsummary/src/vespa/searchsummary/docsummary/linguisticsannotation.cpp
index b4a03e8c9a1..8a847a90ddb 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/linguisticsannotation.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/linguisticsannotation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "linguisticsannotation.h"
#include <vespa/document/datatype/primitivedatatype.h>
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/linguisticsannotation.h b/searchsummary/src/vespa/searchsummary/docsummary/linguisticsannotation.h
index 1ffa000c74e..d27c0da151f 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/linguisticsannotation.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/linguisticsannotation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.cpp
index dfe1049bed9..43a3dc2163b 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "positionsdfw.h"
#include "docsumstate.h"
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.h b/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.h
index c135737e44c..eeab2f33b5b 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/positionsdfw.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp
index d0ecb63a9a1..e7379296f78 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rankfeaturesdfw.h"
#include "docsumstate.h"
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.h b/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.h
index 37790d2f9b8..92d458c7cbb 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/rankfeaturesdfw.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/resultclass.cpp b/searchsummary/src/vespa/searchsummary/docsummary/resultclass.cpp
index f52cc62af92..da0106cd7ad 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/resultclass.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/resultclass.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "resultclass.h"
#include "resultconfig.h"
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/resultclass.h b/searchsummary/src/vespa/searchsummary/docsummary/resultclass.h
index 88c3552387b..97435d793be 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/resultclass.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/resultclass.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.cpp b/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.cpp
index 579779efb73..09604a7316c 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "resultconfig.h"
#include <vespa/vespalib/util/exceptions.h>
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.h b/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.h
index 3df96c3e838..4cc37512929 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/resultpacker.cpp b/searchsummary/src/vespa/searchsummary/docsummary/resultpacker.cpp
index 1887ca69c4f..6c2c4f9c4ea 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/resultpacker.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/resultpacker.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "resultpacker.h"
#include <vespa/searchcommon/common/undefinedvalues.h>
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/resultpacker.h b/searchsummary/src/vespa/searchsummary/docsummary/resultpacker.h
index e4d49b2eb60..4aa31b2df23 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/resultpacker.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/resultpacker.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/searchdatatype.cpp b/searchsummary/src/vespa/searchsummary/docsummary/searchdatatype.cpp
index f0518f378d1..21ac42757b1 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/searchdatatype.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/searchdatatype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "searchdatatype.h"
#include <vespa/document/datatype/primitivedatatype.h>
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/searchdatatype.h b/searchsummary/src/vespa/searchsummary/docsummary/searchdatatype.h
index cf1a08a50df..e124466763d 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/searchdatatype.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/searchdatatype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/struct_map_attribute_combiner_dfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/struct_map_attribute_combiner_dfw.cpp
index 5344162b402..ee9ca92c15b 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/struct_map_attribute_combiner_dfw.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/struct_map_attribute_combiner_dfw.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "attribute_field_writer.h"
#include "docsum_field_writer_state.h"
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/struct_map_attribute_combiner_dfw.h b/searchsummary/src/vespa/searchsummary/docsummary/struct_map_attribute_combiner_dfw.h
index c2fdbebc0b6..84e89477fd2 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/struct_map_attribute_combiner_dfw.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/struct_map_attribute_combiner_dfw.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp
index 4d81f4505a7..37ecbb6737a 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "summaryfeaturesdfw.h"
#include "docsumstate.h"
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.h b/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.h
index 26eba78772c..1885ef57399 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.cpp b/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.cpp
index d494173a613..31b953362dd 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "summaryfieldconverter.h"
#include "linguisticsannotation.h"
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.h b/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.h
index 840de9073c9..526b8c64130 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/summaryfieldconverter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/textextractordfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/textextractordfw.cpp
index a0efda07f04..c7c6984d792 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/textextractordfw.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/textextractordfw.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "textextractordfw.h"
#include "tokenizer.h"
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/textextractordfw.h b/searchsummary/src/vespa/searchsummary/docsummary/textextractordfw.h
index e30941bf8f9..10764e5c21d 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/textextractordfw.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/textextractordfw.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/tokenizer.cpp b/searchsummary/src/vespa/searchsummary/docsummary/tokenizer.cpp
index 6f75bb89943..44dbedb4fe9 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/tokenizer.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/tokenizer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tokenizer.h"
#include <cassert>
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/tokenizer.h b/searchsummary/src/vespa/searchsummary/docsummary/tokenizer.h
index cd18c503058..77acc97aec9 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/tokenizer.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/tokenizer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/searchsummary/src/vespa/searchsummary/test/CMakeLists.txt b/searchsummary/src/vespa/searchsummary/test/CMakeLists.txt
index f5becfce3ae..25404b02522 100644
--- a/searchsummary/src/vespa/searchsummary/test/CMakeLists.txt
+++ b/searchsummary/src/vespa/searchsummary/test/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(searchsummary_test
SOURCES
mock_attribute_manager.cpp
diff --git a/searchsummary/src/vespa/searchsummary/test/mock_attribute_manager.cpp b/searchsummary/src/vespa/searchsummary/test/mock_attribute_manager.cpp
index b756e24a3ae..bf64231e2fd 100644
--- a/searchsummary/src/vespa/searchsummary/test/mock_attribute_manager.cpp
+++ b/searchsummary/src/vespa/searchsummary/test/mock_attribute_manager.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mock_attribute_manager.h"
#include <vespa/searchlib/attribute/attributefactory.h>
diff --git a/searchsummary/src/vespa/searchsummary/test/mock_attribute_manager.h b/searchsummary/src/vespa/searchsummary/test/mock_attribute_manager.h
index a7e425e50b6..0c4f3a5cc9b 100644
--- a/searchsummary/src/vespa/searchsummary/test/mock_attribute_manager.h
+++ b/searchsummary/src/vespa/searchsummary/test/mock_attribute_manager.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchcommon/attribute/basictype.h>
#include <vespa/searchlib/attribute/attributemanager.h>
diff --git a/searchsummary/src/vespa/searchsummary/test/mock_state_callback.h b/searchsummary/src/vespa/searchsummary/test/mock_state_callback.h
index f8b51ca14d0..df035fca685 100644
--- a/searchsummary/src/vespa/searchsummary/test/mock_state_callback.h
+++ b/searchsummary/src/vespa/searchsummary/test/mock_state_callback.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/searchlib/common/matching_elements.h>
#include <vespa/searchsummary/docsummary/docsumstate.h>
diff --git a/searchsummary/src/vespa/searchsummary/test/slime_value.h b/searchsummary/src/vespa/searchsummary/test/slime_value.h
index 3cc461d04ca..03e5d76297a 100644
--- a/searchsummary/src/vespa/searchsummary/test/slime_value.h
+++ b/searchsummary/src/vespa/searchsummary/test/slime_value.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/security-utils/CMakeLists.txt b/security-utils/CMakeLists.txt
index a6fe917c322..1ca28662d4e 100644
--- a/security-utils/CMakeLists.txt
+++ b/security-utils/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-install_fat_java_artifact(security-utils)
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+install_java_artifact(security-utils)
diff --git a/security-utils/pom.xml b/security-utils/pom.xml
index 4796a809293..4e33e31c8c4 100644
--- a/security-utils/pom.xml
+++ b/security-utils/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -9,7 +9,7 @@
<relativePath>../parent/pom.xml</relativePath>
</parent>
<artifactId>security-utils</artifactId>
- <packaging>container-plugin</packaging>
+ <packaging>bundle</packaging>
<version>7-SNAPSHOT</version>
<properties>
@@ -26,13 +26,6 @@
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
- <dependency>
- <!-- required for bundle-plugin to generate import-package statements for Java's standard library -->
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>jdisc_core</artifactId>
- <version>${project.version}</version>
- <scope>provided</scope>
- </dependency>
<!-- compile scope -->
<dependency>
@@ -77,11 +70,6 @@
<build>
<plugins>
<plugin>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>bundle-plugin</artifactId>
- <extensions>true</extensions>
- </plugin>
- <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
@@ -98,6 +86,33 @@
</compilerArgs>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>parse-version</id>
+ <goals>
+ <goal>parse-version</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <!-- Build with maven-bundle-plugin to avoid depending on jdisc_core to get the correct Import-Packages -->
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
+ <Bundle-Version>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}</Bundle-Version>
+ <Export-Package>com.yahoo.security.*;version=1.0.0;-noimport:=true</Export-Package>
+ <_nouses>true</_nouses> <!-- Don't include 'uses' directives for package exports -->
+ <_fixupmessages>"Classes found in the wrong directory"</_fixupmessages> <!-- Hide warnings for bouncycastle multi-release jars -->
+ </instructions>
+ </configuration>
+ </plugin>
</plugins>
</build>
</project>
diff --git a/security-utils/src/main/java/com/yahoo/security/BasicConstraintsExtension.java b/security-utils/src/main/java/com/yahoo/security/BasicConstraintsExtension.java
index d3c08ba27d0..98c5f1c3dd0 100644
--- a/security-utils/src/main/java/com/yahoo/security/BasicConstraintsExtension.java
+++ b/security-utils/src/main/java/com/yahoo/security/BasicConstraintsExtension.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
/**
diff --git a/security-utils/src/main/java/com/yahoo/security/BouncyCastleProviderHolder.java b/security-utils/src/main/java/com/yahoo/security/BouncyCastleProviderHolder.java
index 48a23a1fe7e..136ce695208 100644
--- a/security-utils/src/main/java/com/yahoo/security/BouncyCastleProviderHolder.java
+++ b/security-utils/src/main/java/com/yahoo/security/BouncyCastleProviderHolder.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
diff --git a/security-utils/src/main/java/com/yahoo/security/Extension.java b/security-utils/src/main/java/com/yahoo/security/Extension.java
index 46b781c9c86..3283d5382a2 100644
--- a/security-utils/src/main/java/com/yahoo/security/Extension.java
+++ b/security-utils/src/main/java/com/yahoo/security/Extension.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
diff --git a/security-utils/src/main/java/com/yahoo/security/KeyAlgorithm.java b/security-utils/src/main/java/com/yahoo/security/KeyAlgorithm.java
index 732ac2bb12c..f2668d25cd9 100644
--- a/security-utils/src/main/java/com/yahoo/security/KeyAlgorithm.java
+++ b/security-utils/src/main/java/com/yahoo/security/KeyAlgorithm.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import java.security.spec.AlgorithmParameterSpec;
diff --git a/security-utils/src/main/java/com/yahoo/security/KeyStoreBuilder.java b/security-utils/src/main/java/com/yahoo/security/KeyStoreBuilder.java
index 6e69c36d69c..e2decf9dab9 100644
--- a/security-utils/src/main/java/com/yahoo/security/KeyStoreBuilder.java
+++ b/security-utils/src/main/java/com/yahoo/security/KeyStoreBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import java.io.BufferedInputStream;
diff --git a/security-utils/src/main/java/com/yahoo/security/KeyStoreType.java b/security-utils/src/main/java/com/yahoo/security/KeyStoreType.java
index d72bd45865d..e0df925a62e 100644
--- a/security-utils/src/main/java/com/yahoo/security/KeyStoreType.java
+++ b/security-utils/src/main/java/com/yahoo/security/KeyStoreType.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import java.security.GeneralSecurityException;
diff --git a/security-utils/src/main/java/com/yahoo/security/KeyStoreUtils.java b/security-utils/src/main/java/com/yahoo/security/KeyStoreUtils.java
index f0c4d99bf69..1e3f3cca386 100644
--- a/security-utils/src/main/java/com/yahoo/security/KeyStoreUtils.java
+++ b/security-utils/src/main/java/com/yahoo/security/KeyStoreUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import java.io.BufferedOutputStream;
diff --git a/security-utils/src/main/java/com/yahoo/security/KeyUtils.java b/security-utils/src/main/java/com/yahoo/security/KeyUtils.java
index ed3b41d6e2a..67f5db55d89 100644
--- a/security-utils/src/main/java/com/yahoo/security/KeyUtils.java
+++ b/security-utils/src/main/java/com/yahoo/security/KeyUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import org.bouncycastle.asn1.ASN1Encodable;
diff --git a/security-utils/src/main/java/com/yahoo/security/Pkcs10Csr.java b/security-utils/src/main/java/com/yahoo/security/Pkcs10Csr.java
index 7bcf67b64b6..073b7f43902 100644
--- a/security-utils/src/main/java/com/yahoo/security/Pkcs10Csr.java
+++ b/security-utils/src/main/java/com/yahoo/security/Pkcs10Csr.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
diff --git a/security-utils/src/main/java/com/yahoo/security/Pkcs10CsrBuilder.java b/security-utils/src/main/java/com/yahoo/security/Pkcs10CsrBuilder.java
index 0fe6117ef2f..9b999e056e0 100644
--- a/security-utils/src/main/java/com/yahoo/security/Pkcs10CsrBuilder.java
+++ b/security-utils/src/main/java/com/yahoo/security/Pkcs10CsrBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
diff --git a/security-utils/src/main/java/com/yahoo/security/Pkcs10CsrUtils.java b/security-utils/src/main/java/com/yahoo/security/Pkcs10CsrUtils.java
index 6f12450528d..1cf95256aa6 100644
--- a/security-utils/src/main/java/com/yahoo/security/Pkcs10CsrUtils.java
+++ b/security-utils/src/main/java/com/yahoo/security/Pkcs10CsrUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import org.bouncycastle.openssl.PEMParser;
diff --git a/security-utils/src/main/java/com/yahoo/security/SignatureAlgorithm.java b/security-utils/src/main/java/com/yahoo/security/SignatureAlgorithm.java
index fbff18f5c12..8446a6cc0d2 100644
--- a/security-utils/src/main/java/com/yahoo/security/SignatureAlgorithm.java
+++ b/security-utils/src/main/java/com/yahoo/security/SignatureAlgorithm.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
/**
diff --git a/security-utils/src/main/java/com/yahoo/security/SslContextBuilder.java b/security-utils/src/main/java/com/yahoo/security/SslContextBuilder.java
index f3932c84a17..5c16e4ed70d 100644
--- a/security-utils/src/main/java/com/yahoo/security/SslContextBuilder.java
+++ b/security-utils/src/main/java/com/yahoo/security/SslContextBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import com.yahoo.security.tls.KeyManagerUtils;
diff --git a/security-utils/src/main/java/com/yahoo/security/SubjectAlternativeName.java b/security-utils/src/main/java/com/yahoo/security/SubjectAlternativeName.java
index ab58c607891..92dd41f7f88 100644
--- a/security-utils/src/main/java/com/yahoo/security/SubjectAlternativeName.java
+++ b/security-utils/src/main/java/com/yahoo/security/SubjectAlternativeName.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import org.bouncycastle.asn1.ASN1Encodable;
diff --git a/security-utils/src/main/java/com/yahoo/security/X509CertificateBuilder.java b/security-utils/src/main/java/com/yahoo/security/X509CertificateBuilder.java
index d3907e09b3f..6ec10a2f803 100644
--- a/security-utils/src/main/java/com/yahoo/security/X509CertificateBuilder.java
+++ b/security-utils/src/main/java/com/yahoo/security/X509CertificateBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import org.bouncycastle.asn1.x509.BasicConstraints;
diff --git a/security-utils/src/main/java/com/yahoo/security/X509CertificateUtils.java b/security-utils/src/main/java/com/yahoo/security/X509CertificateUtils.java
index 215dc311af3..f9f23ee1eb2 100644
--- a/security-utils/src/main/java/com/yahoo/security/X509CertificateUtils.java
+++ b/security-utils/src/main/java/com/yahoo/security/X509CertificateUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import org.bouncycastle.asn1.ASN1Encodable;
@@ -21,10 +21,13 @@ import java.io.UncheckedIOException;
import java.math.BigInteger;
import java.security.GeneralSecurityException;
import java.security.KeyPair;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Signature;
import java.security.SignatureException;
+import java.security.cert.CertificateEncodingException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.time.Duration;
@@ -178,4 +181,16 @@ public class X509CertificateUtils {
.build();
return new X509CertificateWithKey(cert, keyPair.getPrivate());
}
+
+ /**
+ * @return certificate SHA-1 fingerprint
+ */
+ public static byte[] getX509CertificateFingerPrint(X509Certificate certificate) {
+ try {
+ MessageDigest sha1 = MessageDigest.getInstance("SHA-1");
+ return sha1.digest(certificate.getEncoded());
+ } catch (CertificateEncodingException | NoSuchAlgorithmException e) {
+ throw new RuntimeException(e);
+ }
+ }
}
diff --git a/security-utils/src/main/java/com/yahoo/security/X509CertificateWithKey.java b/security-utils/src/main/java/com/yahoo/security/X509CertificateWithKey.java
index 4772de5c1fb..19b6f06be79 100644
--- a/security-utils/src/main/java/com/yahoo/security/X509CertificateWithKey.java
+++ b/security-utils/src/main/java/com/yahoo/security/X509CertificateWithKey.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import java.security.PrivateKey;
diff --git a/security-utils/src/main/java/com/yahoo/security/package-info.java b/security-utils/src/main/java/com/yahoo/security/package-info.java
index 10a4c9c0e0d..4b63f2c69b4 100644
--- a/security-utils/src/main/java/com/yahoo/security/package-info.java
+++ b/security-utils/src/main/java/com/yahoo/security/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/AuthorizationMode.java b/security-utils/src/main/java/com/yahoo/security/tls/AuthorizationMode.java
index bef44db699f..9b2e22d8896 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/AuthorizationMode.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/AuthorizationMode.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls;
import java.util.Arrays;
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/ConfigFileBasedTlsContext.java b/security-utils/src/main/java/com/yahoo/security/tls/ConfigFileBasedTlsContext.java
index bc1f1dcc6f6..6d4684666ea 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/ConfigFileBasedTlsContext.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/ConfigFileBasedTlsContext.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls;
import com.yahoo.security.KeyStoreBuilder;
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/DefaultTlsContext.java b/security-utils/src/main/java/com/yahoo/security/tls/DefaultTlsContext.java
index 56f2ecb8efc..a01283318b6 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/DefaultTlsContext.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/DefaultTlsContext.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls;
import com.yahoo.security.SslContextBuilder;
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/MixedMode.java b/security-utils/src/main/java/com/yahoo/security/tls/MixedMode.java
index 580a8cc5dfd..d7d17806a48 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/MixedMode.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/MixedMode.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls;
import java.util.Arrays;
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/TlsContext.java b/security-utils/src/main/java/com/yahoo/security/tls/TlsContext.java
index 1f78dc9d481..7923249a16e 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/TlsContext.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/TlsContext.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls;
import javax.net.ssl.SSLContext;
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/TransportSecurityOptions.java b/security-utils/src/main/java/com/yahoo/security/tls/TransportSecurityOptions.java
index 82c19878dfb..65c87bee0b9 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/TransportSecurityOptions.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/TransportSecurityOptions.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls;
import com.yahoo.security.tls.json.TransportSecurityOptionsJsonSerializer;
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/TransportSecurityUtils.java b/security-utils/src/main/java/com/yahoo/security/tls/TransportSecurityUtils.java
index af77827ae16..cbd3857d2d5 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/TransportSecurityUtils.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/TransportSecurityUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls;
import java.nio.file.Path;
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/TrustAllX509TrustManager.java b/security-utils/src/main/java/com/yahoo/security/tls/TrustAllX509TrustManager.java
index d163366e686..b0303620cf7 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/TrustAllX509TrustManager.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/TrustAllX509TrustManager.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls;
import javax.net.ssl.SSLEngine;
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/authz/AuthorizationResult.java b/security-utils/src/main/java/com/yahoo/security/tls/authz/AuthorizationResult.java
index bcc2fa0e698..963bb469d6e 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/authz/AuthorizationResult.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/authz/AuthorizationResult.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls.authz;
import com.yahoo.security.tls.policy.Role;
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/authz/PeerAuthorizer.java b/security-utils/src/main/java/com/yahoo/security/tls/authz/PeerAuthorizer.java
index 1d74f0a170f..40f3817c5f9 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/authz/PeerAuthorizer.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/authz/PeerAuthorizer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls.authz;
import com.yahoo.security.SubjectAlternativeName;
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/authz/PeerAuthorizerTrustManager.java b/security-utils/src/main/java/com/yahoo/security/tls/authz/PeerAuthorizerTrustManager.java
index 03358190e8a..e8d558205c4 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/authz/PeerAuthorizerTrustManager.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/authz/PeerAuthorizerTrustManager.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls.authz;
import com.yahoo.security.X509CertificateUtils;
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/authz/package-info.java b/security-utils/src/main/java/com/yahoo/security/tls/authz/package-info.java
index 1379e090d08..5066026757d 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/authz/package-info.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/authz/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/json/TransportSecurityOptionsEntity.java b/security-utils/src/main/java/com/yahoo/security/tls/json/TransportSecurityOptionsEntity.java
index 68801002c66..12ac75aae80 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/json/TransportSecurityOptionsEntity.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/json/TransportSecurityOptionsEntity.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls.json;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/json/TransportSecurityOptionsJsonSerializer.java b/security-utils/src/main/java/com/yahoo/security/tls/json/TransportSecurityOptionsJsonSerializer.java
index 45819e2f974..516a0c83d37 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/json/TransportSecurityOptionsJsonSerializer.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/json/TransportSecurityOptionsJsonSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls.json;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/json/package-info.java b/security-utils/src/main/java/com/yahoo/security/tls/json/package-info.java
index 2aaf276b439..be7ec33bf04 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/json/package-info.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/json/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/package-info.java b/security-utils/src/main/java/com/yahoo/security/tls/package-info.java
index b5668182f14..ad1a94ab0b6 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/package-info.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/policy/AuthorizedPeers.java b/security-utils/src/main/java/com/yahoo/security/tls/policy/AuthorizedPeers.java
index d62219b2ebe..66621224906 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/policy/AuthorizedPeers.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/policy/AuthorizedPeers.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls.policy;
import java.util.Collections;
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/policy/HostGlobPattern.java b/security-utils/src/main/java/com/yahoo/security/tls/policy/HostGlobPattern.java
index e8798686e05..fd9a233d609 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/policy/HostGlobPattern.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/policy/HostGlobPattern.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls.policy;
import java.util.Objects;
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/policy/PeerPolicy.java b/security-utils/src/main/java/com/yahoo/security/tls/policy/PeerPolicy.java
index 4e0a4815f79..4783889ec62 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/policy/PeerPolicy.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/policy/PeerPolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls.policy;
import java.util.Collections;
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/policy/RequiredPeerCredential.java b/security-utils/src/main/java/com/yahoo/security/tls/policy/RequiredPeerCredential.java
index 3ae886fef61..3bdc35c6a2f 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/policy/RequiredPeerCredential.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/policy/RequiredPeerCredential.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls.policy;
import java.util.Objects;
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/policy/Role.java b/security-utils/src/main/java/com/yahoo/security/tls/policy/Role.java
index 6d64ccff2c5..b35bf328847 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/policy/Role.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/policy/Role.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls.policy;
import java.util.Objects;
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/policy/UriPattern.java b/security-utils/src/main/java/com/yahoo/security/tls/policy/UriPattern.java
index 18f5c0ce2de..7c36244d781 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/policy/UriPattern.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/policy/UriPattern.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls.policy;
import java.util.Objects;
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/policy/package-info.java b/security-utils/src/main/java/com/yahoo/security/tls/policy/package-info.java
index 4215bd25d3e..61ce90654f8 100644
--- a/security-utils/src/main/java/com/yahoo/security/tls/policy/package-info.java
+++ b/security-utils/src/main/java/com/yahoo/security/tls/policy/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/security-utils/src/test/java/com/yahoo/security/KeyStoreBuilderTest.java b/security-utils/src/test/java/com/yahoo/security/KeyStoreBuilderTest.java
index 06ea5d963a3..0d3924063f3 100644
--- a/security-utils/src/test/java/com/yahoo/security/KeyStoreBuilderTest.java
+++ b/security-utils/src/test/java/com/yahoo/security/KeyStoreBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import org.junit.Rule;
diff --git a/security-utils/src/test/java/com/yahoo/security/KeyUtilsTest.java b/security-utils/src/test/java/com/yahoo/security/KeyUtilsTest.java
index 8a1c72b1e59..b0d587bb19a 100644
--- a/security-utils/src/test/java/com/yahoo/security/KeyUtilsTest.java
+++ b/security-utils/src/test/java/com/yahoo/security/KeyUtilsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import org.junit.Test;
diff --git a/security-utils/src/test/java/com/yahoo/security/Pkcs10CsrBuilderTest.java b/security-utils/src/test/java/com/yahoo/security/Pkcs10CsrBuilderTest.java
index d51203a5cb2..5ad49bbc599 100644
--- a/security-utils/src/test/java/com/yahoo/security/Pkcs10CsrBuilderTest.java
+++ b/security-utils/src/test/java/com/yahoo/security/Pkcs10CsrBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import org.junit.Test;
diff --git a/security-utils/src/test/java/com/yahoo/security/Pkcs10CsrTest.java b/security-utils/src/test/java/com/yahoo/security/Pkcs10CsrTest.java
index cc1f6cc6a14..6dd5eb52373 100644
--- a/security-utils/src/test/java/com/yahoo/security/Pkcs10CsrTest.java
+++ b/security-utils/src/test/java/com/yahoo/security/Pkcs10CsrTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import org.junit.Test;
diff --git a/security-utils/src/test/java/com/yahoo/security/Pkcs10CsrUtilsTest.java b/security-utils/src/test/java/com/yahoo/security/Pkcs10CsrUtilsTest.java
index 04d35a537bb..ff0076b9cc4 100644
--- a/security-utils/src/test/java/com/yahoo/security/Pkcs10CsrUtilsTest.java
+++ b/security-utils/src/test/java/com/yahoo/security/Pkcs10CsrUtilsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import org.junit.Test;
diff --git a/security-utils/src/test/java/com/yahoo/security/SslContextBuilderTest.java b/security-utils/src/test/java/com/yahoo/security/SslContextBuilderTest.java
index cc269a4ef43..3c40cb89e6c 100644
--- a/security-utils/src/test/java/com/yahoo/security/SslContextBuilderTest.java
+++ b/security-utils/src/test/java/com/yahoo/security/SslContextBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import org.junit.Rule;
diff --git a/security-utils/src/test/java/com/yahoo/security/TestUtils.java b/security-utils/src/test/java/com/yahoo/security/TestUtils.java
index fcfcfb2b761..88820278e4c 100644
--- a/security-utils/src/test/java/com/yahoo/security/TestUtils.java
+++ b/security-utils/src/test/java/com/yahoo/security/TestUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import javax.security.auth.x500.X500Principal;
diff --git a/security-utils/src/test/java/com/yahoo/security/X509CertificateBuilderTest.java b/security-utils/src/test/java/com/yahoo/security/X509CertificateBuilderTest.java
index 7e6d343b570..eb6fe4286d8 100644
--- a/security-utils/src/test/java/com/yahoo/security/X509CertificateBuilderTest.java
+++ b/security-utils/src/test/java/com/yahoo/security/X509CertificateBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import org.junit.Test;
diff --git a/security-utils/src/test/java/com/yahoo/security/X509CertificateUtilsTest.java b/security-utils/src/test/java/com/yahoo/security/X509CertificateUtilsTest.java
index b4eca8328c1..7075179234e 100644
--- a/security-utils/src/test/java/com/yahoo/security/X509CertificateUtilsTest.java
+++ b/security-utils/src/test/java/com/yahoo/security/X509CertificateUtilsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security;
import org.junit.Test;
diff --git a/security-utils/src/test/java/com/yahoo/security/tls/DefaultTlsContextTest.java b/security-utils/src/test/java/com/yahoo/security/tls/DefaultTlsContextTest.java
index 59c9cf5c356..8236ce081ba 100644
--- a/security-utils/src/test/java/com/yahoo/security/tls/DefaultTlsContextTest.java
+++ b/security-utils/src/test/java/com/yahoo/security/tls/DefaultTlsContextTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls;
import com.yahoo.security.KeyUtils;
diff --git a/security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsTest.java b/security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsTest.java
index 43389ade275..7d67c492170 100644
--- a/security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsTest.java
+++ b/security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls;
import org.junit.Test;
diff --git a/security-utils/src/test/java/com/yahoo/security/tls/authz/PeerAuthorizerTest.java b/security-utils/src/test/java/com/yahoo/security/tls/authz/PeerAuthorizerTest.java
index 6fa7207cb9c..518ec08d38e 100644
--- a/security-utils/src/test/java/com/yahoo/security/tls/authz/PeerAuthorizerTest.java
+++ b/security-utils/src/test/java/com/yahoo/security/tls/authz/PeerAuthorizerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls.authz;
import com.yahoo.security.KeyAlgorithm;
diff --git a/security-utils/src/test/java/com/yahoo/security/tls/json/TransportSecurityOptionsJsonSerializerTest.java b/security-utils/src/test/java/com/yahoo/security/tls/json/TransportSecurityOptionsJsonSerializerTest.java
index 35fd25b6a62..ffc8296c890 100644
--- a/security-utils/src/test/java/com/yahoo/security/tls/json/TransportSecurityOptionsJsonSerializerTest.java
+++ b/security-utils/src/test/java/com/yahoo/security/tls/json/TransportSecurityOptionsJsonSerializerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls.json;
import com.yahoo.security.tls.TransportSecurityOptions;
diff --git a/security-utils/src/test/java/com/yahoo/security/tls/policy/AuthorizedPeersTest.java b/security-utils/src/test/java/com/yahoo/security/tls/policy/AuthorizedPeersTest.java
index 7581d7771a2..c44a23ecf2b 100644
--- a/security-utils/src/test/java/com/yahoo/security/tls/policy/AuthorizedPeersTest.java
+++ b/security-utils/src/test/java/com/yahoo/security/tls/policy/AuthorizedPeersTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls.policy;
import org.junit.Test;
diff --git a/security-utils/src/test/java/com/yahoo/security/tls/policy/HostGlobPatternTest.java b/security-utils/src/test/java/com/yahoo/security/tls/policy/HostGlobPatternTest.java
index ebec5605621..a42eaaf74b0 100644
--- a/security-utils/src/test/java/com/yahoo/security/tls/policy/HostGlobPatternTest.java
+++ b/security-utils/src/test/java/com/yahoo/security/tls/policy/HostGlobPatternTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.security.tls.policy;
import org.junit.Test;
diff --git a/service-monitor/CMakeLists.txt b/service-monitor/CMakeLists.txt
index f4016fd8259..8d505e5c00b 100644
--- a/service-monitor/CMakeLists.txt
+++ b/service-monitor/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(service-monitor)
diff --git a/service-monitor/pom.xml b/service-monitor/pom.xml
index df28737f352..47073049403 100644
--- a/service-monitor/pom.xml
+++ b/service-monitor/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -16,12 +16,6 @@
<description>Service monitor component for hosted vespa.</description>
<dependencies>
- <dependency>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>http-utils</artifactId>
- <version>${project.version}</version>
- <scope>compile</scope>
- </dependency>
<!-- provided scope -->
<dependency>
@@ -91,6 +85,12 @@
<scope>provided</scope>
</dependency>
<dependency>
+ <groupId>com.yahoo.vespa</groupId>
+ <artifactId>vespajlib</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<scope>provided</scope>
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerApplication.java
index cf9825b26cf..b57ddc6bc92 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerApplication.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerApplication.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.duper;
import com.yahoo.config.provision.ClusterSpec;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerHostApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerHostApplication.java
index 4273bccbf45..e4e5f513ebc 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerHostApplication.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerHostApplication.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.duper;
import com.yahoo.config.provision.NodeType;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerLikeApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerLikeApplication.java
index 91a439649a2..38808b66435 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerLikeApplication.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerLikeApplication.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.duper;
import com.yahoo.component.Version;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ControllerApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ControllerApplication.java
index e2f082f4242..6c38149f662 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ControllerApplication.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ControllerApplication.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.duper;
import com.yahoo.config.provision.ClusterSpec;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ControllerHostApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ControllerHostApplication.java
index 7a0c952780d..eaf7537e45c 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ControllerHostApplication.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ControllerHostApplication.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.duper;
import com.yahoo.config.provision.NodeType;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/CriticalRegionChecker.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/CriticalRegionChecker.java
index 238b70a7310..2d0c8349101 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/CriticalRegionChecker.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/CriticalRegionChecker.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.duper;
import com.yahoo.vespa.service.monitor.CriticalRegion;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/DuperModel.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/DuperModel.java
index d4cb1e6a480..a5f124540e7 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/DuperModel.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/DuperModel.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.duper;
import com.yahoo.config.model.api.ApplicationInfo;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/DuperModelManager.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/DuperModelManager.java
index c15cdbe4428..70f93537387 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/DuperModelManager.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/DuperModelManager.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.duper;
import com.google.inject.Inject;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/HostAdminApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/HostAdminApplication.java
index 7772f989746..2c1b00f93a4 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/HostAdminApplication.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/HostAdminApplication.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.duper;
import com.yahoo.config.provision.ClusterSpec;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/HostsModel.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/HostsModel.java
index 10820ccc508..bbdcee53708 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/HostsModel.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/HostsModel.java
@@ -1,14 +1,12 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.duper;
import com.yahoo.config.ConfigInstance;
import com.yahoo.config.FileReference;
-import com.yahoo.config.model.api.FileDistribution;
import com.yahoo.config.model.api.HostInfo;
import com.yahoo.config.model.api.Model;
import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.vespa.config.ConfigKey;
-import com.yahoo.vespa.config.ConfigPayload;
import com.yahoo.vespa.config.buildergen.ConfigDefinition;
import java.time.Instant;
@@ -51,11 +49,6 @@ public class HostsModel implements Model {
}
@Override
- public void distributeFiles(FileDistribution fileDistribution) {
- throw new UnsupportedOperationException();
- }
-
- @Override
public Set<FileReference> fileReferences() {
throw new UnsupportedOperationException();
}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/InfraApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/InfraApplication.java
index 1bdf1ff67d9..a3a13bc7b57 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/InfraApplication.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/InfraApplication.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.duper;
import com.yahoo.component.Version;
@@ -35,7 +35,7 @@ import java.util.stream.Collectors;
*/
public abstract class InfraApplication implements InfraApplicationApi {
- private static final TenantName TENANT_NAME = TenantName.from("hosted-vespa");
+ static final TenantName TENANT_NAME = TenantName.from("hosted-vespa");
private final ApplicationId applicationId;
private final Capacity capacity;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ProxyHostApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ProxyHostApplication.java
index 24230609e60..f65dfd5577c 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ProxyHostApplication.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ProxyHostApplication.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.duper;
import com.yahoo.config.provision.NodeType;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/executor/Cancellable.java b/service-monitor/src/main/java/com/yahoo/vespa/service/executor/Cancellable.java
index 80c35851fa5..bd08f71e2d6 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/executor/Cancellable.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/executor/Cancellable.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.executor;
/**
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/executor/CancellableImpl.java b/service-monitor/src/main/java/com/yahoo/vespa/service/executor/CancellableImpl.java
index cda91994443..cc29594f954 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/executor/CancellableImpl.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/executor/CancellableImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.executor;
import java.util.logging.Level;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/executor/Runlet.java b/service-monitor/src/main/java/com/yahoo/vespa/service/executor/Runlet.java
index a41bd0f777e..a6ca72e80d7 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/executor/Runlet.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/executor/Runlet.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.executor;
/**
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/executor/RunletExecutor.java b/service-monitor/src/main/java/com/yahoo/vespa/service/executor/RunletExecutor.java
index 4d6dc4b316f..db46a1d769a 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/executor/RunletExecutor.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/executor/RunletExecutor.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.executor;
import java.time.Duration;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/executor/RunletExecutorImpl.java b/service-monitor/src/main/java/com/yahoo/vespa/service/executor/RunletExecutorImpl.java
index 39aeb94667c..48ad1bb8c9b 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/executor/RunletExecutorImpl.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/executor/RunletExecutorImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.executor;
import java.util.logging.Level;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/health/ApacheHttpClient.java b/service-monitor/src/main/java/com/yahoo/vespa/service/health/ApacheHttpClient.java
index d8e695f1a7e..0601527c23b 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/health/ApacheHttpClient.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/health/ApacheHttpClient.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.health;
import ai.vespa.util.http.hc4.VespaHttpClientBuilder;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/health/ApplicationHealthMonitor.java b/service-monitor/src/main/java/com/yahoo/vespa/service/health/ApplicationHealthMonitor.java
index 92f7afa121d..a209b4111ed 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/health/ApplicationHealthMonitor.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/health/ApplicationHealthMonitor.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.health;
import com.yahoo.config.model.api.ApplicationInfo;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/health/ApplicationHealthMonitorFactory.java b/service-monitor/src/main/java/com/yahoo/vespa/service/health/ApplicationHealthMonitorFactory.java
index a747753160e..6d8fb38f79b 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/health/ApplicationHealthMonitorFactory.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/health/ApplicationHealthMonitorFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.health;
import com.yahoo.config.provision.ApplicationId;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthEndpoint.java b/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthEndpoint.java
index eae5ef3f284..5dfa6274054 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthEndpoint.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthEndpoint.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.health;
import com.yahoo.vespa.service.monitor.ServiceId;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthInfo.java b/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthInfo.java
index 17670c705d8..52bb4f1becb 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthInfo.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthInfo.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.health;
import com.yahoo.yolean.Exceptions;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthMonitor.java b/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthMonitor.java
index 14ec977c98c..b927d38f4cb 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthMonitor.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthMonitor.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.health;
import com.yahoo.vespa.applicationmodel.ServiceStatusInfo;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthMonitorManager.java b/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthMonitorManager.java
index d6e15f6af4e..707533d6580 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthMonitorManager.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthMonitorManager.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.health;
import com.google.inject.Inject;
@@ -55,12 +55,10 @@ public class HealthMonitorManager implements MonitorManager, HealthMonitorApi {
@Inject
public HealthMonitorManager(DuperModelManager duperModel) {
- this(duperModel,
- new StateV1HealthModel(
- TARGET_HEALTH_STALENESS,
- HEALTH_REQUEST_TIMEOUT,
- KEEP_ALIVE,
- new RunletExecutorImpl(THREAD_POOL_SIZE)));
+ this(duperModel, new StateV1HealthModel(TARGET_HEALTH_STALENESS,
+ HEALTH_REQUEST_TIMEOUT,
+ KEEP_ALIVE,
+ new RunletExecutorImpl(THREAD_POOL_SIZE)));
}
private HealthMonitorManager(DuperModelManager duperModel, StateV1HealthModel healthModel) {
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthResponse.java b/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthResponse.java
index 5d97d773a53..2629a824b46 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthResponse.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.health;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthUpdater.java b/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthUpdater.java
index 8101336c638..625b9f0eebe 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthUpdater.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/health/HealthUpdater.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.health;
import com.yahoo.vespa.applicationmodel.ServiceStatusInfo;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthClient.java b/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthClient.java
index dd70c8d6992..66e16136729 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthClient.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthClient.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.health;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthEndpoint.java b/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthEndpoint.java
index 73f0480bf96..a654a4557ef 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthEndpoint.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthEndpoint.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.health;
import com.yahoo.config.provision.HostName;
@@ -43,7 +43,7 @@ class StateV1HealthEndpoint implements HealthEndpoint {
@Override
public HealthMonitor startMonitoring() {
- StateV1HealthUpdater updater = new StateV1HealthUpdater(url, requestTimeout, connectionKeepAlive);
+ var updater = new StateV1HealthUpdater(url, requestTimeout, connectionKeepAlive);
return new StateV1HealthMonitor(updater, executor, delay);
}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthModel.java b/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthModel.java
index 0408e0134ea..2712b510040 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthModel.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthModel.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.health;
import com.yahoo.config.model.api.ApplicationInfo;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthMonitor.java b/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthMonitor.java
index b28ceeddae0..479326ce1d9 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthMonitor.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthMonitor.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.health;
import com.yahoo.vespa.applicationmodel.ServiceStatusInfo;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthUpdater.java b/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthUpdater.java
index 5813e2cef39..1d6f0de2eda 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthUpdater.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/health/StateV1HealthUpdater.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.health;
import com.yahoo.vespa.applicationmodel.ServiceStatus;
@@ -24,7 +24,7 @@ class StateV1HealthUpdater implements HealthUpdater {
private final String endpoint;
private final StateV1HealthClient healthClient;
- private volatile ServiceStatusInfo serviceStatusInfo = new ServiceStatusInfo(ServiceStatus.NOT_CHECKED);
+ private volatile ServiceStatusInfo serviceStatusInfo = new ServiceStatusInfo(ServiceStatus.UNKNOWN);
StateV1HealthUpdater(URL url, Duration requestTimeout, Duration connectionKeepAlive) {
this(url.toString(), new StateV1HealthClient(url, requestTimeout, connectionKeepAlive));
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/manager/MonitorManager.java b/service-monitor/src/main/java/com/yahoo/vespa/service/manager/MonitorManager.java
index a7579d3f0da..b975e468585 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/manager/MonitorManager.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/manager/MonitorManager.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.manager;
import com.yahoo.vespa.service.monitor.DuperModelListener;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/manager/UnionMonitorManager.java b/service-monitor/src/main/java/com/yahoo/vespa/service/manager/UnionMonitorManager.java
index 2aacc3eadac..dce5b6dc3d6 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/manager/UnionMonitorManager.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/manager/UnionMonitorManager.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.manager;
import com.google.inject.Inject;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ApplicationInstanceGenerator.java b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ApplicationInstanceGenerator.java
index 60e22639e8b..ac62ee4bdab 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ApplicationInstanceGenerator.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ApplicationInstanceGenerator.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.model;
import com.yahoo.config.model.api.ApplicationInfo;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/model/LatencyMeasurement.java b/service-monitor/src/main/java/com/yahoo/vespa/service/model/LatencyMeasurement.java
index edfd58258ed..92c9fb2bafc 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/model/LatencyMeasurement.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/model/LatencyMeasurement.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.model;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ModelGenerator.java b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ModelGenerator.java
index ad57e5e3565..043e4a186d3 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ModelGenerator.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ModelGenerator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.model;
import com.yahoo.config.model.api.ApplicationInfo;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceHostListenerAdapter.java b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceHostListenerAdapter.java
index 73e2573fc58..60edeefeeea 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceHostListenerAdapter.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceHostListenerAdapter.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.model;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorImpl.java b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorImpl.java
index e6e6e85c710..6e3f407bb9c 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorImpl.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.model;
import com.google.inject.Inject;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorMetrics.java b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorMetrics.java
index 368868a43f9..de264625e4f 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorMetrics.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ServiceMonitorMetrics.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.model;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/AntiServiceMonitor.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/AntiServiceMonitor.java
index 1c0460c3797..148a2ef227e 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/AntiServiceMonitor.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/AntiServiceMonitor.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.monitor;
import com.yahoo.vespa.service.duper.DuperModelManager;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/CriticalRegion.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/CriticalRegion.java
index ec674f133a1..0a0601e203d 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/CriticalRegion.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/CriticalRegion.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.monitor;
/**
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/DuperModelInfraApi.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/DuperModelInfraApi.java
index 1e8176fbf10..91782d5a582 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/DuperModelInfraApi.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/DuperModelInfraApi.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.monitor;
import com.yahoo.config.provision.ApplicationId;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/DuperModelListener.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/DuperModelListener.java
index f664e5246ca..8051770a02a 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/DuperModelListener.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/DuperModelListener.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.monitor;
import com.yahoo.config.model.api.ApplicationInfo;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/DuperModelProvider.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/DuperModelProvider.java
index a90fa418054..eaa407c5ea5 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/DuperModelProvider.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/DuperModelProvider.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.monitor;
public interface DuperModelProvider {
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/InfraApplicationApi.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/InfraApplicationApi.java
index 4e7a557ffc7..532011aeff3 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/InfraApplicationApi.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/InfraApplicationApi.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.monitor;
import com.yahoo.component.Version;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceHostListener.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceHostListener.java
index 17d6fcf0d75..53bef97e209 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceHostListener.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceHostListener.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.monitor;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceId.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceId.java
index a97cb1812c1..877fb5f213c 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceId.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceId.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.monitor;
import com.yahoo.config.provision.ApplicationId;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceModel.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceModel.java
index c8f491a0fc7..6079c76519f 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceModel.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceModel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.monitor;
import com.yahoo.config.model.api.ApplicationInfo;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java
index 4f52d7d229c..b3f77b3ef7b 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.monitor;
import com.yahoo.vespa.applicationmodel.ApplicationInstance;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceStatusProvider.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceStatusProvider.java
index 9486bf505ab..1f4c6f8e03a 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceStatusProvider.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceStatusProvider.java
@@ -1,5 +1,5 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.service.monitor;// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.service.monitor;// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.vespa.applicationmodel.ClusterId;
@@ -17,7 +17,7 @@ public interface ServiceStatusProvider {
* Get the {@link ServiceStatus} of a particular service.
*
* <p>{@link ServiceStatus#NOT_CHECKED NOT_CHECKED} must be returned if the
- * service status provider does does not monitor the service status for
+ * service status provider does not monitor the service status for
* the particular application, cluster, service type, and config id.
*/
ServiceStatusInfo getStatus(ApplicationId applicationId,
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/SlobrokApi.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/SlobrokApi.java
index b0f0d734fe4..07e0acececc 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/SlobrokApi.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/SlobrokApi.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.monitor;
import com.yahoo.config.provision.ApplicationId;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/package-info.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/package-info.java
index 035d43a4a84..68e1e6da64c 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/package-info.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* @author andreer
*/
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/slobrok/SlobrokMonitor.java b/service-monitor/src/main/java/com/yahoo/vespa/service/slobrok/SlobrokMonitor.java
index 3ba505d0ab4..1d7cea5a7e6 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/slobrok/SlobrokMonitor.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/slobrok/SlobrokMonitor.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.slobrok;
import com.yahoo.config.model.api.ApplicationInfo;
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/slobrok/SlobrokMonitorManagerImpl.java b/service-monitor/src/main/java/com/yahoo/vespa/service/slobrok/SlobrokMonitorManagerImpl.java
index 34e5fe49f69..20ba51c337a 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/slobrok/SlobrokMonitorManagerImpl.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/slobrok/SlobrokMonitorManagerImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.slobrok;
import com.google.inject.Inject;
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/duper/DuperModelManagerTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/duper/DuperModelManagerTest.java
index 3448ce46ff9..8b0cc621358 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/duper/DuperModelManagerTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/duper/DuperModelManagerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.duper;
import com.yahoo.config.model.api.ApplicationInfo;
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/duper/DuperModelTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/duper/DuperModelTest.java
index 2e38283a091..3fa9baa5d60 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/duper/DuperModelTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/duper/DuperModelTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.duper;
import com.yahoo.config.model.api.ApplicationInfo;
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/executor/CancellableImplTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/executor/CancellableImplTest.java
index eb6f92d928c..8dfee6aea45 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/executor/CancellableImplTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/executor/CancellableImplTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.executor;
import org.junit.After;
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/executor/RunletExecutorImplTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/executor/RunletExecutorImplTest.java
index 9828d6300ed..231f3b6ff6f 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/executor/RunletExecutorImplTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/executor/RunletExecutorImplTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.executor;
import org.junit.After;
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/executor/TestExecutor.java b/service-monitor/src/test/java/com/yahoo/vespa/service/executor/TestExecutor.java
index c40fc03ea00..bec51a6fb7a 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/executor/TestExecutor.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/executor/TestExecutor.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.executor;
import java.time.Duration;
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/executor/TestRunlet.java b/service-monitor/src/test/java/com/yahoo/vespa/service/executor/TestRunlet.java
index 7e671dccd96..40d055514e0 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/executor/TestRunlet.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/executor/TestRunlet.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.executor;
/**
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/health/ApplicationHealthMonitorTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/health/ApplicationHealthMonitorTest.java
index 2ad0eb8f67d..569ad899331 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/health/ApplicationHealthMonitorTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/health/ApplicationHealthMonitorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.health;
import com.yahoo.config.model.api.ApplicationInfo;
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/health/HealthMonitorManagerTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/health/HealthMonitorManagerTest.java
index 6856e084fa2..d191d914bd0 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/health/HealthMonitorManagerTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/health/HealthMonitorManagerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.health;
import com.yahoo.config.model.api.ApplicationInfo;
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthModelTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthModelTest.java
index 94f9e8e0999..4fdf6288bd8 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthModelTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthModelTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.health;
import com.yahoo.config.model.api.ApplicationInfo;
@@ -33,10 +33,10 @@ import static org.mockito.Mockito.when;
* @author hakonhall
*/
public class StateV1HealthModelTest {
- private RunletExecutor executor = mock(RunletExecutor.class);
- private Duration healthStaleness = Duration.ofSeconds(1);
- private Duration requestTimeout = Duration.ofSeconds(2);
- private Duration keepAlive = Duration.ofSeconds(3);
+ private final RunletExecutor executor = mock(RunletExecutor.class);
+ private final Duration healthStaleness = Duration.ofSeconds(1);
+ private final Duration requestTimeout = Duration.ofSeconds(2);
+ private final Duration keepAlive = Duration.ofSeconds(3);
private final ProxyHostApplication proxyHostApplication = new ProxyHostApplication();
private final List<HostName> hostnames = Stream.of("host1", "host2").map(HostName::from).collect(Collectors.toList());
private final ApplicationInfo proxyHostApplicationInfo = proxyHostApplication.makeApplicationInfo(hostnames);
@@ -64,7 +64,7 @@ public class StateV1HealthModelTest {
Cancellable cancellable = mock(Cancellable.class);
when(executor.scheduleWithFixedDelay(any(), any())).thenReturn(cancellable);
try (HealthMonitor healthMonitor = endpoint1.startMonitoring()) {
- assertEquals(ServiceStatus.NOT_CHECKED, healthMonitor.getStatus().serviceStatus());
+ assertEquals(ServiceStatus.UNKNOWN, healthMonitor.getStatus().serviceStatus());
}
}
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthMonitorTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthMonitorTest.java
index e3fb7d08d93..0ae4fdec1eb 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthMonitorTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthMonitorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.health;
import com.yahoo.vespa.applicationmodel.ServiceStatus;
@@ -20,7 +20,7 @@ public class StateV1HealthMonitorTest {
StateV1HealthUpdater updater = new StateV1HealthUpdater("https://foo/state/v1/health", client);
RunletExecutor executor = new RunletExecutorImpl(2);
try (StateV1HealthMonitor monitor = new StateV1HealthMonitor(updater, executor, Duration.ofMillis(10))) {
- assertEquals(ServiceStatus.NOT_CHECKED, monitor.getStatus().serviceStatus());
+ assertEquals(ServiceStatus.UNKNOWN, monitor.getStatus().serviceStatus());
when(client.get()).thenReturn(HealthInfo.fromHealthStatusCode(HealthInfo.UP_STATUS_CODE));
while (monitor.getStatus().serviceStatus() != ServiceStatus.UP) {
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthUpdaterTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthUpdaterTest.java
index bb60d049aa8..4f53d6748eb 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthUpdaterTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/health/StateV1HealthUpdaterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.health;
import com.yahoo.vespa.applicationmodel.ServiceStatus;
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/manager/UnionMonitorManagerTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/manager/UnionMonitorManagerTest.java
index b1ab188e231..9edfc0057c0 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/manager/UnionMonitorManagerTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/manager/UnionMonitorManagerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.manager;
import com.yahoo.vespa.applicationmodel.ConfigId;
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/model/ApplicationInstanceGeneratorTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/model/ApplicationInstanceGeneratorTest.java
index 933a2553c56..8ca46941366 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/model/ApplicationInstanceGeneratorTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/model/ApplicationInstanceGeneratorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.model;
import com.yahoo.config.model.api.ApplicationInfo;
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/model/ExampleModel.java b/service-monitor/src/test/java/com/yahoo/vespa/service/model/ExampleModel.java
index 3fb10f1f24e..508c98d1292 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/model/ExampleModel.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/model/ExampleModel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.model;
import com.yahoo.config.model.api.ApplicationInfo;
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/model/ExampleModelTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/model/ExampleModelTest.java
index 59a0d520918..b66c6968764 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/model/ExampleModelTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/model/ExampleModelTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.model;
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/model/LatencyMeasurementTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/model/LatencyMeasurementTest.java
index 4ec4f3cec9c..71126aeae45 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/model/LatencyMeasurementTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/model/LatencyMeasurementTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.model;
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/model/ModelGeneratorTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/model/ModelGeneratorTest.java
index 7be4ff38a7f..9ba84d26122 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/model/ModelGeneratorTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/model/ModelGeneratorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.model;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/model/ServiceHostListenerAdapterTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/model/ServiceHostListenerAdapterTest.java
index 8bd6a2e2040..cfc24ecbaec 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/model/ServiceHostListenerAdapterTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/model/ServiceHostListenerAdapterTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.model;
import com.yahoo.config.model.api.ApplicationInfo;
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/model/ServiceMonitorImplTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/model/ServiceMonitorImplTest.java
index 5b0855d0be5..c98e9ae2b18 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/model/ServiceMonitorImplTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/model/ServiceMonitorImplTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.model;
import com.yahoo.config.model.api.ApplicationInfo;
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/model/ServiceMonitorMetricsTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/model/ServiceMonitorMetricsTest.java
index 8654068d7d1..b186fac49f3 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/model/ServiceMonitorMetricsTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/model/ServiceMonitorMetricsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.model;
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/ConfigserverUtil.java b/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/ConfigserverUtil.java
index f053d417515..40cc679b69b 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/ConfigserverUtil.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/monitor/ConfigserverUtil.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.monitor;
import com.yahoo.cloud.config.ConfigserverConfig;
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/slobrok/SlobrokMonitorManagerImplTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/slobrok/SlobrokMonitorManagerImplTest.java
index 8fabb385bb2..71a1bf71026 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/slobrok/SlobrokMonitorManagerImplTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/slobrok/SlobrokMonitorManagerImplTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.slobrok;
import com.yahoo.config.model.api.ApplicationInfo;
diff --git a/service-monitor/src/test/java/com/yahoo/vespa/service/slobrok/SlobrokMonitorTest.java b/service-monitor/src/test/java/com/yahoo/vespa/service/slobrok/SlobrokMonitorTest.java
index 7757aed8ac7..cae66d3c898 100644
--- a/service-monitor/src/test/java/com/yahoo/vespa/service/slobrok/SlobrokMonitorTest.java
+++ b/service-monitor/src/test/java/com/yahoo/vespa/service/slobrok/SlobrokMonitorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.slobrok;
import com.yahoo.config.model.api.ApplicationInfo;
diff --git a/serviceview/README.md b/serviceview/README.md
index c413b4c555f..e74c32feab4 100644
--- a/serviceview/README.md
+++ b/serviceview/README.md
@@ -1,2 +1,2 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# REST API for getting a view of services and hosts for an application
diff --git a/serviceview/pom.xml b/serviceview/pom.xml
index 6d8ae0751ea..fb124f49624 100644
--- a/serviceview/pom.xml
+++ b/serviceview/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ApplicationView.java b/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ApplicationView.java
index c3fb3616ca9..2b6c2a718c3 100644
--- a/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ApplicationView.java
+++ b/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ApplicationView.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.serviceview.bindings;
import java.util.List;
diff --git a/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ClusterView.java b/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ClusterView.java
index b1bbdbc04f4..47dbc5193be 100644
--- a/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ClusterView.java
+++ b/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ClusterView.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.serviceview.bindings;
import java.util.List;
diff --git a/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ConfigClient.java b/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ConfigClient.java
index bc40586b473..f0dff70eece 100644
--- a/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ConfigClient.java
+++ b/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ConfigClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.serviceview.bindings;
import javax.ws.rs.GET;
diff --git a/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/HealthClient.java b/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/HealthClient.java
index bd678f8b141..41b7e10f511 100644
--- a/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/HealthClient.java
+++ b/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/HealthClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.serviceview.bindings;
import java.util.HashMap;
diff --git a/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/HostService.java b/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/HostService.java
index 6832e2554a7..97425235cef 100644
--- a/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/HostService.java
+++ b/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/HostService.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.serviceview.bindings;
import java.util.List;
diff --git a/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ModelResponse.java b/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ModelResponse.java
index 3248fd88921..9ce331605ef 100644
--- a/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ModelResponse.java
+++ b/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ModelResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.serviceview.bindings;
import java.util.List;
diff --git a/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/Service.java b/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/Service.java
index 0254e7f207a..4f38f1275f0 100644
--- a/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/Service.java
+++ b/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/Service.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.serviceview.bindings;
import java.util.List;
diff --git a/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ServicePort.java b/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ServicePort.java
index 98db96a902a..29fa07b46e7 100644
--- a/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ServicePort.java
+++ b/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ServicePort.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.serviceview.bindings;
import java.util.List;
diff --git a/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ServiceView.java b/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ServiceView.java
index 0c9979e466e..e9fece65758 100644
--- a/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ServiceView.java
+++ b/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/ServiceView.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.serviceview.bindings;
import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/StateClient.java b/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/StateClient.java
index 5e5ee023d84..66e518e23e5 100644
--- a/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/StateClient.java
+++ b/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/StateClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.serviceview.bindings;
import javax.ws.rs.GET;
diff --git a/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/package-info.java b/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/package-info.java
index 98845d2fdbc..d73a9023b7f 100644
--- a/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/package-info.java
+++ b/serviceview/src/main/java/com/yahoo/vespa/serviceview/bindings/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* The API bindings for the serviceview and underlying state APIs.
*
diff --git a/serviceview/src/test/java/com/yahoo/vespa/serviceview/bindings/ServicePortTest.java b/serviceview/src/test/java/com/yahoo/vespa/serviceview/bindings/ServicePortTest.java
index b4ad31505c4..2e3d0315c4a 100644
--- a/serviceview/src/test/java/com/yahoo/vespa/serviceview/bindings/ServicePortTest.java
+++ b/serviceview/src/test/java/com/yahoo/vespa/serviceview/bindings/ServicePortTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.serviceview.bindings;
import static org.junit.Assert.*;
diff --git a/slobrok/CMakeLists.txt b/slobrok/CMakeLists.txt
index 00ddf7296ca..9a8f73c6e86 100644
--- a/slobrok/CMakeLists.txt
+++ b/slobrok/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
@@ -19,10 +19,14 @@ vespa_define_module(
TESTS
src/tests/backoff
src/tests/configure
+ src/tests/local_rpc_monitor_map
src/tests/mirrorapi
src/tests/registerapi
+ src/tests/rpc_mapping_monitor
src/tests/service_map_history
+ src/tests/service_map_mirror
src/tests/standalone
src/tests/startsome
src/tests/startup
+ src/tests/union_service_map
)
diff --git a/slobrok/src/Doxyfile b/slobrok/src/Doxyfile
index dd704d3a486..10727c87e68 100644
--- a/slobrok/src/Doxyfile
+++ b/slobrok/src/Doxyfile
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Doxyfile 1.4.7
#---------------------------------------------------------------------------
diff --git a/slobrok/src/apps/check_slobrok/CMakeLists.txt b/slobrok/src/apps/check_slobrok/CMakeLists.txt
index 870a6c9ecc0..43b5315cdb6 100644
--- a/slobrok/src/apps/check_slobrok/CMakeLists.txt
+++ b/slobrok/src/apps/check_slobrok/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(slobrok_check_slobrok_app
SOURCES
check_slobrok.cpp
diff --git a/slobrok/src/apps/check_slobrok/check_slobrok.cpp b/slobrok/src/apps/check_slobrok/check_slobrok.cpp
index 0342cccb221..d533292113a 100644
--- a/slobrok/src/apps/check_slobrok/check_slobrok.cpp
+++ b/slobrok/src/apps/check_slobrok/check_slobrok.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fastos/app.h>
#include <vespa/fnet/frt/supervisor.h>
diff --git a/slobrok/src/apps/sbcmd/CMakeLists.txt b/slobrok/src/apps/sbcmd/CMakeLists.txt
index c4f8a69e8df..eaab30dd42a 100644
--- a/slobrok/src/apps/sbcmd/CMakeLists.txt
+++ b/slobrok/src/apps/sbcmd/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(slobrok_sbcmd_app
SOURCES
sbcmd.cpp
diff --git a/slobrok/src/apps/sbcmd/sbcmd.cpp b/slobrok/src/apps/sbcmd/sbcmd.cpp
index f32155ae80b..56d1b6f5a41 100644
--- a/slobrok/src/apps/sbcmd/sbcmd.cpp
+++ b/slobrok/src/apps/sbcmd/sbcmd.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fastos/app.h>
#include <vespa/fnet/frt/supervisor.h>
diff --git a/slobrok/src/apps/slobrok/CMakeLists.txt b/slobrok/src/apps/slobrok/CMakeLists.txt
index 5e1bcbf56ed..08e022bc55e 100644
--- a/slobrok/src/apps/slobrok/CMakeLists.txt
+++ b/slobrok/src/apps/slobrok/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(slobrok_app
SOURCES
slobrok.cpp
diff --git a/slobrok/src/apps/slobrok/slobrok.cpp b/slobrok/src/apps/slobrok/slobrok.cpp
index 390b7356410..a662c59d979 100644
--- a/slobrok/src/apps/slobrok/slobrok.cpp
+++ b/slobrok/src/apps/slobrok/slobrok.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/slobrok/server/sbenv.h>
#include <vespa/config/common/exceptions.h>
#include <vespa/vespalib/util/exceptions.h>
@@ -54,7 +54,7 @@ App::Main()
int argi = 1;
const char* optArg;
int c;
- while ((c = GetOpt("c:s:p:", optArg, argi)) != -1) {
+ while ((c = GetOpt("c:s:p:N", optArg, argi)) != -1) {
switch (c) {
case 'c':
cfgId = std::string(optArg);
@@ -62,6 +62,9 @@ App::Main()
case 'p':
portnum = atoi(optArg);
break;
+ case 'N':
+ // ignored
+ break;
default:
LOG(error, "unknown option letter '%c'", c);
return 1;
diff --git a/slobrok/src/tests/backoff/CMakeLists.txt b/slobrok/src/tests/backoff/CMakeLists.txt
index afaec1da152..27631bd091e 100644
--- a/slobrok/src/tests/backoff/CMakeLists.txt
+++ b/slobrok/src/tests/backoff/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(slobrok_backoff_test_app TEST
SOURCES
testbackoff.cpp
diff --git a/slobrok/src/tests/backoff/testbackoff.cpp b/slobrok/src/tests/backoff/testbackoff.cpp
index 40ca1ac17ba..8125d8625a8 100644
--- a/slobrok/src/tests/backoff/testbackoff.cpp
+++ b/slobrok/src/tests/backoff/testbackoff.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/slobrok/backoff.h>
diff --git a/slobrok/src/tests/configure/CMakeLists.txt b/slobrok/src/tests/configure/CMakeLists.txt
index 6ee2dda03e0..ecceb4b3efe 100644
--- a/slobrok/src/tests/configure/CMakeLists.txt
+++ b/slobrok/src/tests/configure/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(slobrok_gencfg_app
SOURCES
gencfg.cpp
diff --git a/slobrok/src/tests/configure/configure.cpp b/slobrok/src/tests/configure/configure.cpp
index 98c716b3a48..77705864f80 100644
--- a/slobrok/src/tests/configure/configure.cpp
+++ b/slobrok/src/tests/configure/configure.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/slobrok/sbmirror.h>
diff --git a/slobrok/src/tests/configure/gencfg.cpp b/slobrok/src/tests/configure/gencfg.cpp
index b4af8e82f1b..b3f7f75d37e 100644
--- a/slobrok/src/tests/configure/gencfg.cpp
+++ b/slobrok/src/tests/configure/gencfg.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/host_name.h>
#include <cstdio>
diff --git a/slobrok/src/tests/local_rpc_monitor_map/CMakeLists.txt b/slobrok/src/tests/local_rpc_monitor_map/CMakeLists.txt
new file mode 100644
index 00000000000..98141d19188
--- /dev/null
+++ b/slobrok/src/tests/local_rpc_monitor_map/CMakeLists.txt
@@ -0,0 +1,9 @@
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(slobrok_local_rpc_monitor_map_test_app TEST
+ SOURCES
+ local_rpc_monitor_map_test.cpp
+ DEPENDS
+ slobrok_slobrokserver
+ GTest::GTest
+)
+vespa_add_test(NAME slobrok_local_rpc_monitor_map_test_app COMMAND slobrok_local_rpc_monitor_map_test_app)
diff --git a/slobrok/src/tests/local_rpc_monitor_map/local_rpc_monitor_map_test.cpp b/slobrok/src/tests/local_rpc_monitor_map/local_rpc_monitor_map_test.cpp
new file mode 100644
index 00000000000..5b0829f1dff
--- /dev/null
+++ b/slobrok/src/tests/local_rpc_monitor_map/local_rpc_monitor_map_test.cpp
@@ -0,0 +1,331 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include <vespa/vespalib/gtest/gtest.h>
+#include <vespa/slobrok/server/local_rpc_monitor_map.h>
+#include <vespa/vespalib/util/stringfmt.h>
+#include <vespa/vespalib/util/time.h>
+#include <vespa/fnet/scheduler.h>
+#include <map>
+
+using namespace vespalib;
+using namespace slobrok;
+using vespalib::make_string_short::fmt;
+
+struct MapCall {
+ vespalib::string name;
+ ServiceMapping mapping;
+ ServiceMapping old;
+ static MapCall add(const ServiceMapping &m) { return {"add", m, {"",""}}; }
+ static MapCall remove(const ServiceMapping &m) { return {"remove", m, {"",""}}; }
+ static MapCall update(const ServiceMapping &o, const ServiceMapping &m) { return {"update", m, o}; }
+ void check(const MapCall &rhs) const {
+ EXPECT_EQ(name, rhs.name);
+ EXPECT_EQ(mapping, rhs.mapping);
+ EXPECT_EQ(old, rhs.old);
+ }
+ ~MapCall();
+};
+MapCall::~MapCall() = default;
+
+struct MonitorCall {
+ vespalib::string name;
+ ServiceMapping mapping;
+ bool hurry;
+ static MonitorCall start(const ServiceMapping &m, bool h) { return {"start", m, h}; }
+ static MonitorCall stop(const ServiceMapping &m) { return {"stop", m, false}; }
+ void check(const MonitorCall &rhs) const {
+ EXPECT_EQ(name, rhs.name);
+ EXPECT_EQ(mapping, rhs.mapping);
+ EXPECT_EQ(hurry, rhs.hurry);
+ }
+ ~MonitorCall();
+};
+MonitorCall::~MonitorCall() = default;
+
+template <typename Call>
+class CallLog {
+private:
+ std::vector<Call> _calls;
+ size_t _checked;
+public:
+ CallLog() noexcept : _calls(), _checked(0) {}
+ ~CallLog() { EXPECT_EQ(_calls.size(), _checked); }
+ void log(Call call) { _calls.push_back(call); }
+ void expect(std::initializer_list<Call> list) {
+ ASSERT_EQ(list.size(), (_calls.size() - _checked));
+ for (const auto &call: list) {
+ call.check(_calls[_checked++]);
+ }
+ }
+};
+
+struct MapLog : CallLog<MapCall>, MapListener {
+ void add(const ServiceMapping &mapping) override {
+ log(MapCall::add(mapping));
+ }
+ void remove(const ServiceMapping &mapping) override {
+ log(MapCall::remove(mapping));
+ }
+ void update(const ServiceMapping &old_mapping,
+ const ServiceMapping &new_mapping) override
+ {
+ log(MapCall::update(old_mapping, new_mapping));
+ }
+};
+
+struct MonitorLog : CallLog<MonitorCall>, MappingMonitor {
+ void start(const ServiceMapping& mapping, bool hurry) override {
+ log(MonitorCall::start(mapping, hurry));
+ }
+ void stop(const ServiceMapping& mapping) override {
+ log(MonitorCall::stop(mapping));
+ }
+};
+
+struct MyMappingMonitor : MappingMonitor {
+ MonitorLog &monitor;
+ MyMappingMonitor(MonitorLog &m) : monitor(m) {}
+ void start(const ServiceMapping& mapping, bool hurry) override {
+ monitor.start(mapping, hurry);
+ }
+ void stop(const ServiceMapping& mapping) override {
+ monitor.stop(mapping);
+ }
+};
+
+struct LocalRpcMonitorMapTest : public ::testing::Test {
+ steady_time time;
+ FNET_Scheduler scheduler;
+ MonitorLog monitor_log;
+ MapLog map_log;
+ LocalRpcMonitorMap map;
+ std::unique_ptr<MapSubscription> subscription;
+ ServiceMapping mapping;
+ ServiceMapping mapping_conflict;
+ LocalRpcMonitorMapTest()
+ : time(duration::zero()),
+ scheduler(&time), monitor_log(), map_log(),
+ map(&scheduler, [this](auto &owner)
+ {
+ EXPECT_EQ(&owner, &map);
+ return std::make_unique<MyMappingMonitor>(monitor_log);
+ }),
+ subscription(MapSubscription::subscribe(map.dispatcher(), map_log)),
+ mapping("dummy_service", "dummy_spec"),
+ mapping_conflict("dummy_service", "conflicting_dummy_spec")
+ {}
+ void tick(duration elapsed = FNET_Scheduler::tick_ms) {
+ time += elapsed;
+ scheduler.CheckTasks();
+ }
+ void add_mapping(const ServiceMapping &m, bool is_up) {
+ map.add(m); // <- add from consensus map
+ monitor_log.expect({});
+ tick(0ms); // <- process delayed add event
+ monitor_log.expect({MonitorCall::start(m, false)});
+ map_log.expect({});
+ if (is_up) {
+ map.up(m); // <- up from monitor
+ map_log.expect({MapCall::add(m)});
+ } else {
+ map.down(m); // <- down from monitor
+ map_log.expect({});
+ }
+ }
+ void flip_up_state(const ServiceMapping &m, bool was_up, size_t cnt) {
+ for (size_t i = 0; i < cnt; ++i) {
+ if (was_up) {
+ map.up(m);
+ map_log.expect({});
+ map.down(m);
+ map_log.expect({MapCall::remove(m)});
+ } else {
+ map.down(m);
+ map_log.expect({});
+ map.up(m);
+ map_log.expect({MapCall::add(m)});
+ }
+ was_up = !was_up;
+ }
+ monitor_log.expect({});
+ }
+ void remove_mapping(const ServiceMapping &m, bool was_up) {
+ map.remove(m); // <- remove from consensus map
+ monitor_log.expect({});
+ tick(0ms); // <- process delayed remove event
+ monitor_log.expect({MonitorCall::stop(m)});
+ if (was_up) {
+ map_log.expect({MapCall::remove(m)});
+ } else {
+ map_log.expect({});
+ }
+ }
+ ~LocalRpcMonitorMapTest();
+};
+LocalRpcMonitorMapTest::~LocalRpcMonitorMapTest() = default;
+
+struct MyAddLocalHandler : CompletionHandler {
+ std::unique_ptr<OkState> &state;
+ bool &handler_deleted;
+ MyAddLocalHandler(std::unique_ptr<OkState> &s, bool &hd)
+ : state(s), handler_deleted(hd) {}
+ void doneHandler(OkState result) override {
+ state = std::make_unique<OkState>(result);
+ }
+ ~MyAddLocalHandler() override {
+ handler_deleted = true;
+ }
+};
+
+TEST_F(LocalRpcMonitorMapTest, external_add_remove_while_up) {
+ add_mapping(mapping, true);
+ remove_mapping(mapping, true);
+}
+
+TEST_F(LocalRpcMonitorMapTest, external_add_remove_while_down) {
+ add_mapping(mapping, false);
+ remove_mapping(mapping, false);
+}
+
+TEST_F(LocalRpcMonitorMapTest, server_up_down_up_down) {
+ add_mapping(mapping, true);
+ flip_up_state(mapping, true, 3);
+ remove_mapping(mapping, false);
+}
+
+TEST_F(LocalRpcMonitorMapTest, server_down_up_down_up) {
+ add_mapping(mapping, false);
+ flip_up_state(mapping, false, 3);
+ remove_mapping(mapping, true);
+}
+
+TEST_F(LocalRpcMonitorMapTest, multi_mapping) {
+ ServiceMapping m1("dummy_service1", "dummy_spec1");
+ ServiceMapping m2("dummy_service2", "dummy_spec2");
+ ServiceMapping m3("dummy_service3", "dummy_spec3");
+ add_mapping(m1, true);
+ add_mapping(m2, false);
+ add_mapping(m3, true);
+ flip_up_state(m1, true, 3);
+ flip_up_state(m2, false, 3);
+ flip_up_state(m3, true, 3);
+ remove_mapping(m1, false);
+ remove_mapping(m2, true);
+ remove_mapping(m3, false);
+}
+
+TEST_F(LocalRpcMonitorMapTest, local_add_ok) {
+ std::unique_ptr<OkState> state;
+ bool handler_deleted;
+ map.addLocal(mapping, std::make_unique<MyAddLocalHandler>(state, handler_deleted));
+ monitor_log.expect({MonitorCall::start(mapping, true)});
+ map_log.expect({});
+ map.up(mapping);
+ monitor_log.expect({});
+ map_log.expect({MapCall::add(mapping)});
+ ASSERT_TRUE(state);
+ EXPECT_TRUE(state->ok());
+ ASSERT_TRUE(handler_deleted);
+}
+
+TEST_F(LocalRpcMonitorMapTest, local_add_already_up) {
+ std::unique_ptr<OkState> state;
+ bool handler_deleted;
+ add_mapping(mapping, true);
+ map.addLocal(mapping, std::make_unique<MyAddLocalHandler>(state, handler_deleted));
+ monitor_log.expect({});
+ map_log.expect({});
+ ASSERT_TRUE(state);
+ EXPECT_TRUE(state->ok());
+ ASSERT_TRUE(handler_deleted);
+}
+
+TEST_F(LocalRpcMonitorMapTest, local_add_unknown_comes_up) {
+ std::unique_ptr<OkState> state;
+ bool handler_deleted;
+ add_mapping(mapping, false);
+ map.addLocal(mapping, std::make_unique<MyAddLocalHandler>(state, handler_deleted));
+ monitor_log.expect({MonitorCall::stop(mapping), MonitorCall::start(mapping, true)});
+ map_log.expect({});
+ EXPECT_FALSE(state);
+ map.up(mapping);
+ map_log.expect({MapCall::add(mapping)});
+ ASSERT_TRUE(state);
+ EXPECT_TRUE(state->ok());
+ ASSERT_TRUE(handler_deleted);
+}
+
+TEST_F(LocalRpcMonitorMapTest, local_add_unknown_goes_down) {
+ std::unique_ptr<OkState> state;
+ bool handler_deleted;
+ add_mapping(mapping, false);
+ map.addLocal(mapping, std::make_unique<MyAddLocalHandler>(state, handler_deleted));
+ monitor_log.expect({MonitorCall::stop(mapping), MonitorCall::start(mapping, true)});
+ map_log.expect({});
+ EXPECT_FALSE(state);
+ map.down(mapping);
+ map_log.expect({});
+ ASSERT_TRUE(state);
+ EXPECT_FALSE(state->ok());
+ ASSERT_TRUE(handler_deleted);
+}
+
+TEST_F(LocalRpcMonitorMapTest, local_add_conflict) {
+ std::unique_ptr<OkState> state;
+ bool handler_deleted;
+ add_mapping(mapping, true);
+ map.addLocal(mapping_conflict, std::make_unique<MyAddLocalHandler>(state, handler_deleted));
+ monitor_log.expect({});
+ map_log.expect({});
+ ASSERT_TRUE(state);
+ EXPECT_TRUE(state->failed());
+ ASSERT_TRUE(handler_deleted);
+}
+
+TEST_F(LocalRpcMonitorMapTest, local_multi_add) {
+ std::unique_ptr<OkState> state1;
+ bool handler_deleted1;
+ std::unique_ptr<OkState> state2;
+ bool handler_deleted2;
+ map.addLocal(mapping, std::make_unique<MyAddLocalHandler>(state1, handler_deleted1));
+ monitor_log.expect({MonitorCall::start(mapping, true)});
+ map.addLocal(mapping, std::make_unique<MyAddLocalHandler>(state2, handler_deleted2));
+ monitor_log.expect({});
+ map_log.expect({});
+ EXPECT_FALSE(state1);
+ EXPECT_FALSE(state2);
+ map.up(mapping);
+ monitor_log.expect({});
+ map_log.expect({MapCall::add(mapping)});
+ ASSERT_TRUE(state1);
+ ASSERT_TRUE(state2);
+ EXPECT_TRUE(state1->ok());
+ EXPECT_TRUE(state2->ok());
+ ASSERT_TRUE(handler_deleted1);
+ ASSERT_TRUE(handler_deleted2);
+}
+
+TEST_F(LocalRpcMonitorMapTest, local_remove) {
+ add_mapping(mapping, true);
+ map.removeLocal(mapping);
+ monitor_log.expect({MonitorCall::stop(mapping), MonitorCall::start(mapping, false)});
+ map_log.expect({MapCall::remove(mapping)});
+ map.up(mapping); // timeout case (should normally not happen)
+ map_log.expect({MapCall::add(mapping)});
+}
+
+TEST_F(LocalRpcMonitorMapTest, local_add_local_remove) {
+ std::unique_ptr<OkState> state;
+ bool handler_deleted;
+ map.addLocal(mapping, std::make_unique<MyAddLocalHandler>(state, handler_deleted));
+ monitor_log.expect({MonitorCall::start(mapping, true)});
+ map_log.expect({});
+ map.removeLocal(mapping);
+ monitor_log.expect({MonitorCall::stop(mapping)});
+ map_log.expect({});
+ ASSERT_TRUE(state);
+ EXPECT_TRUE(state->failed());
+ ASSERT_TRUE(handler_deleted);
+}
+
+GTEST_MAIN_RUN_ALL_TESTS()
diff --git a/slobrok/src/tests/mirrorapi/CMakeLists.txt b/slobrok/src/tests/mirrorapi/CMakeLists.txt
index 5af0c6fdb01..3f77de20143 100644
--- a/slobrok/src/tests/mirrorapi/CMakeLists.txt
+++ b/slobrok/src/tests/mirrorapi/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(slobrok_mirrorapi_test_app TEST
SOURCES
mirrorapi.cpp
diff --git a/slobrok/src/tests/mirrorapi/match_test.cpp b/slobrok/src/tests/mirrorapi/match_test.cpp
index 0686390565a..434958d8941 100644
--- a/slobrok/src/tests/mirrorapi/match_test.cpp
+++ b/slobrok/src/tests/mirrorapi/match_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/slobrok/sbmirror.h>
diff --git a/slobrok/src/tests/mirrorapi/mirrorapi.cpp b/slobrok/src/tests/mirrorapi/mirrorapi.cpp
index ae309f8c661..1d830ed928b 100644
--- a/slobrok/src/tests/mirrorapi/mirrorapi.cpp
+++ b/slobrok/src/tests/mirrorapi/mirrorapi.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/slobrok/sbmirror.h>
diff --git a/slobrok/src/tests/registerapi/CMakeLists.txt b/slobrok/src/tests/registerapi/CMakeLists.txt
index 5d567602831..d74c1dac6d6 100644
--- a/slobrok/src/tests/registerapi/CMakeLists.txt
+++ b/slobrok/src/tests/registerapi/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(slobrok_registerapi_test_app TEST
SOURCES
registerapi.cpp
diff --git a/slobrok/src/tests/registerapi/registerapi.cpp b/slobrok/src/tests/registerapi/registerapi.cpp
index 696812e2a3d..16a949deff7 100644
--- a/slobrok/src/tests/registerapi/registerapi.cpp
+++ b/slobrok/src/tests/registerapi/registerapi.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/host_name.h>
diff --git a/slobrok/src/tests/rpc_mapping_monitor/CMakeLists.txt b/slobrok/src/tests/rpc_mapping_monitor/CMakeLists.txt
new file mode 100644
index 00000000000..9ce3a1b3552
--- /dev/null
+++ b/slobrok/src/tests/rpc_mapping_monitor/CMakeLists.txt
@@ -0,0 +1,9 @@
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(slobrok_rpc_mapping_monitor_test_app TEST
+ SOURCES
+ rpc_mapping_monitor_test.cpp
+ DEPENDS
+ slobrok_slobrokserver
+ GTest::GTest
+)
+vespa_add_test(NAME slobrok_rpc_mapping_monitor_test_app COMMAND slobrok_rpc_mapping_monitor_test_app)
diff --git a/slobrok/src/tests/rpc_mapping_monitor/rpc_mapping_monitor_test.cpp b/slobrok/src/tests/rpc_mapping_monitor/rpc_mapping_monitor_test.cpp
new file mode 100644
index 00000000000..0f691e1c168
--- /dev/null
+++ b/slobrok/src/tests/rpc_mapping_monitor/rpc_mapping_monitor_test.cpp
@@ -0,0 +1,224 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include <vespa/vespalib/gtest/gtest.h>
+#include <vespa/slobrok/server/rpc_mapping_monitor.h>
+#include <vespa/fnet/transport_debugger.h>
+#include <vespa/fnet/transport_thread.h>
+#include <vespa/fnet/frt/supervisor.h>
+#include <vespa/vespalib/util/require.h>
+#include <vespa/vespalib/util/stringfmt.h>
+#include <map>
+
+using namespace vespalib;
+using namespace slobrok;
+using vespalib::make_string_short::fmt;
+
+// simple rpc server implementing the required slobrok call-back API
+struct Server : FRT_Invokable {
+ fnet::frt::StandaloneFRT frt;
+ std::vector<vespalib::string> names;
+ size_t inject_fail_cnt;
+ FNET_Connection *last_conn;
+ void set_last_conn(FNET_Connection *conn) {
+ if (last_conn) {
+ last_conn->SubRef();
+ }
+ last_conn = conn;
+ if (last_conn) {
+ last_conn->AddRef();
+ }
+ }
+ Server(fnet::TimeTools::SP time_tools) : frt(TransportConfig().time_tools(time_tools)), names(),
+ inject_fail_cnt(0), last_conn(nullptr)
+ {
+ FRT_ReflectionBuilder rb(&frt.supervisor());
+ rb.DefineMethod("slobrok.callback.listNamesServed", "", "S", FRT_METHOD(Server::rpc_listNamesServed), this);
+ rb.DefineMethod("slobrok.callback.notifyUnregistered", "s", "", FRT_METHOD(Server::rpc_notifyUnregistered), this);
+ REQUIRE(frt.supervisor().Listen(0));
+ }
+ ~Server() { set_last_conn(nullptr); }
+ vespalib::string spec() const { return fmt("tcp/%d", frt.supervisor().GetListenPort()); }
+ FNET_Transport &transport() { return *frt.supervisor().GetTransport(); }
+ void rpc_listNamesServed(FRT_RPCRequest *req) {
+ set_last_conn(req->GetConnection());
+ if (inject_fail_cnt > 0) {
+ req->SetError(FRTE_RPC_METHOD_FAILED, "fail injected by unit test");
+ --inject_fail_cnt;
+ } else {
+ FRT_Values &dst = *req->GetReturn();
+ FRT_StringValue *names_out = dst.AddStringArray(names.size());
+ for (size_t i = 0; i < names.size(); ++i) {
+ dst.SetString(&names_out[i], names[i].c_str());
+ }
+ }
+ }
+ void rpc_notifyUnregistered(FRT_RPCRequest *) {}
+};
+
+enum class State { ANY, UP, DOWN };
+
+// Run-Length-Encoded historic state samples for a single service mapping
+struct States {
+ struct Entry {
+ State state;
+ size_t cnt;
+ };
+ std::vector<Entry> hist;
+ State state() const { return hist.back().state; }
+ States() : hist({{State::ANY, 0}}) {}
+ void sample(State state) {
+ if (state == hist.back().state) {
+ ++hist.back().cnt;
+ } else {
+ hist.push_back(Entry{state, 1});
+ }
+ }
+ size_t samples(State state = State::ANY) const {
+ size_t n = 0;
+ for (const auto &entry: hist) {
+ if ((entry.state == state) || (state == State::ANY)) {
+ n += entry.cnt;
+ }
+ }
+ return n;
+ }
+};
+
+// history of which call-backs we have gotten so far
+struct History : MappingMonitorOwner {
+ std::map<ServiceMapping, States> map;
+ void up(const ServiceMapping &mapping) override { map[mapping].sample(State::UP); }
+ void down(const ServiceMapping &mapping) override { map[mapping].sample(State::DOWN); }
+};
+
+struct RpcMappingMonitorTest : public ::testing::Test {
+ fnet::TransportDebugger debugger;
+ fnet::frt::StandaloneFRT my_frt;
+ Server a;
+ Server b;
+ History hist;
+ std::unique_ptr<RpcMappingMonitor> monitor;
+ ServiceMapping foo_a;
+ ServiceMapping bar_a;
+ ServiceMapping baz_b;
+ RpcMappingMonitorTest()
+ : debugger(),
+ my_frt(TransportConfig().time_tools(debugger.time_tools())),
+ a(debugger.time_tools()),
+ b(debugger.time_tools()),
+ hist(),
+ monitor(),
+ foo_a("foo", a.spec()),
+ bar_a("bar", a.spec()),
+ baz_b("baz", b.spec())
+ {
+ debugger.attach({*my_frt.supervisor().GetTransport(), a.transport(), b.transport()});
+ monitor = std::make_unique<RpcMappingMonitor>(my_frt.supervisor(), hist);
+ a.names.push_back(foo_a.name);
+ a.names.push_back(bar_a.name);
+ b.names.push_back(baz_b.name);
+ }
+ ~RpcMappingMonitorTest() {
+ monitor.reset();
+ debugger.detach();
+ }
+};
+
+TEST_F(RpcMappingMonitorTest, services_can_be_monitored) {
+ monitor->start(foo_a, false);
+ monitor->start(bar_a, false);
+ monitor->start(baz_b, false);
+ EXPECT_TRUE(debugger.step_until([&]() {
+ return ((hist.map[foo_a].samples() >= 3) &&
+ (hist.map[bar_a].samples() >= 3) &&
+ (hist.map[baz_b].samples() >= 3)); }));
+ EXPECT_EQ(hist.map[foo_a].samples(State::DOWN), 0);
+ EXPECT_EQ(hist.map[bar_a].samples(State::DOWN), 0);
+ EXPECT_EQ(hist.map[baz_b].samples(State::DOWN), 0);
+}
+
+TEST_F(RpcMappingMonitorTest, hurry_means_faster) {
+ monitor->start(foo_a, false);
+ monitor->start(baz_b, true);
+ auto t0 = debugger.time();
+ EXPECT_TRUE(debugger.step_until([&]() {
+ return ((hist.map[baz_b].samples() > 0)); }));
+ EXPECT_EQ(hist.map[foo_a].samples(), 0);
+ auto t1 = debugger.time();
+ EXPECT_TRUE(debugger.step_until([&]() {
+ return ((hist.map[foo_a].samples() > 0)); }));
+ auto t2 = debugger.time();
+ fprintf(stderr, "hurry: ~%" PRIu64 " ms, normal: ~%" PRIu64 " ms\n", count_ms(t1-t0), count_ms(t2-t0));
+ EXPECT_GT((t2 - t0), 10 * (t1 - t0));
+ EXPECT_EQ(hist.map[foo_a].state(), State::UP);
+ EXPECT_EQ(hist.map[baz_b].state(), State::UP);
+}
+
+TEST_F(RpcMappingMonitorTest, stop_means_stop) {
+ monitor->start(foo_a, false);
+ monitor->start(baz_b, true);
+ EXPECT_TRUE(debugger.step_until([&]() {
+ return ((hist.map[baz_b].samples() == 1)); }));
+ monitor->stop(baz_b);
+ EXPECT_TRUE(debugger.step_until([&]() {
+ return ((hist.map[foo_a].samples() == 3)); }));
+ EXPECT_EQ(hist.map[baz_b].samples(), 1);
+ EXPECT_EQ(hist.map[foo_a].state(), State::UP);
+ EXPECT_EQ(hist.map[baz_b].state(), State::UP);
+}
+
+TEST_F(RpcMappingMonitorTest, health_checks_may_fail) {
+ ServiceMapping bad_spec("foo", "this spec is invalid");
+ ServiceMapping failed_ping("foo", a.spec());
+ ServiceMapping missing_name("foo", b.spec());
+ a.inject_fail_cnt = 2;
+ monitor->start(bad_spec, true);
+ monitor->start(failed_ping, true);
+ monitor->start(missing_name, true);
+ EXPECT_TRUE(debugger.step_until([&]() {
+ return (hist.map[failed_ping].state() == State::UP); }));
+ EXPECT_EQ(hist.map[bad_spec].state(), State::DOWN);
+ EXPECT_EQ(hist.map[missing_name].state(), State::DOWN);
+ EXPECT_EQ(hist.map[failed_ping].samples(State::DOWN), 2);
+ EXPECT_EQ(hist.map[bad_spec].samples(State::UP), 0);
+ EXPECT_EQ(hist.map[missing_name].samples(State::UP), 0);
+}
+
+TEST_F(RpcMappingMonitorTest, loss_of_idle_connection_is_detected_and_recovered) {
+ monitor->start(foo_a, true);
+ EXPECT_TRUE(debugger.step_until([&]() {
+ return (hist.map[foo_a].state() == State::UP); }));
+ ASSERT_TRUE(a.last_conn);
+ a.last_conn->Owner()->Close(a.last_conn);
+ a.set_last_conn(nullptr);
+ EXPECT_TRUE(debugger.step_until([&]() {
+ return (hist.map[foo_a].state() == State::DOWN); }));
+ // down without new rpc check, will re-connect and come back up
+ EXPECT_FALSE(a.last_conn);
+ EXPECT_TRUE(debugger.step_until([&]() {
+ return (hist.map[foo_a].state() == State::UP); }));
+ EXPECT_EQ(hist.map[foo_a].samples(State::DOWN), 1);
+}
+
+TEST_F(RpcMappingMonitorTest, up_connection_is_reused) {
+ monitor->start(foo_a, true);
+ EXPECT_TRUE(debugger.step_until([&]() { return (a.last_conn); }));
+ auto my_conn = a.last_conn;
+ a.last_conn = nullptr;
+ EXPECT_TRUE(debugger.step_until([&]() { return (a.last_conn); }));
+ EXPECT_EQ(a.last_conn, my_conn);
+ my_conn->SubRef();
+ EXPECT_EQ(hist.map[foo_a].state(), State::UP);
+}
+
+TEST_F(RpcMappingMonitorTest, detect_ping_interval) {
+ monitor->start(foo_a, true);
+ EXPECT_TRUE(debugger.step_until([&]() { return (a.last_conn); }));
+ auto t1 = debugger.time();
+ a.set_last_conn(nullptr);
+ EXPECT_TRUE(debugger.step_until([&]() { return (a.last_conn); }));
+ auto t2 = debugger.time();
+ fprintf(stderr, "ping interval: ~%" PRIu64 " ms\n", count_ms(t2-t1));
+}
+
+GTEST_MAIN_RUN_ALL_TESTS()
diff --git a/slobrok/src/tests/service_map_history/CMakeLists.txt b/slobrok/src/tests/service_map_history/CMakeLists.txt
index 84aace8629c..3418fc6a484 100644
--- a/slobrok/src/tests/service_map_history/CMakeLists.txt
+++ b/slobrok/src/tests/service_map_history/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(slobrok_service_map_history_test_app TEST
SOURCES
service_map_history_test.cpp
diff --git a/slobrok/src/tests/service_map_history/service_map_history_test.cpp b/slobrok/src/tests/service_map_history/service_map_history_test.cpp
index e88f326a99b..398ec91feb2 100644
--- a/slobrok/src/tests/service_map_history/service_map_history_test.cpp
+++ b/slobrok/src/tests/service_map_history/service_map_history_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/slobrok/server/service_map_history.h>
#include <vespa/vespalib/gtest/gtest.h>
@@ -89,12 +89,12 @@ TEST(ServiceMapHistoryTest, full_inspection) {
for (int i = 0; i < 1984; ++i) {
auto name = fmt("key/%d/name", i);
auto spec = fmt("tcp/host%d.domain.tld:19099", 10000+i);
- p.update(ServiceMapping{name, spec});
+ p.add(ServiceMapping{name, spec});
}
EXPECT_EQ(p.currentGen(), GenCnt(1985));
- p.remove("key/666/name");
+ p.remove(ServiceMapping{"key/666/name", "tcp/host10666.domain.tld:19099"});
EXPECT_EQ(p.currentGen(), GenCnt(1986));
- p.update(ServiceMapping{"key/1969/name", "tcp/woodstock:19069"});
+ p.add(ServiceMapping{"key/1969/name", "tcp/woodstock:19069"});
EXPECT_EQ(p.currentGen(), GenCnt(1987));
auto map = dump(p);
@@ -187,7 +187,7 @@ TEST(ServiceMapHistoryTest, handlers_test) {
EXPECT_FALSE(cantCancel);
handler1.got_update = false;
- p.update(ServiceMapping{"foo", "bar"});
+ p.add(ServiceMapping{"foo", "bar"});
EXPECT_FALSE(handler1.got_update);
EXPECT_TRUE(handler2.got_update);
EXPECT_FALSE(handler3.got_update);
@@ -197,7 +197,7 @@ TEST(ServiceMapHistoryTest, handlers_test) {
handler2.got_update = false;
p.asyncGenerationDiff(&handler3, GenCnt(2));
EXPECT_FALSE(handler3.got_update);
- p.remove("foo");
+ p.remove(ServiceMapping{"foo", "bar"});
EXPECT_FALSE(handler1.got_update);
EXPECT_FALSE(handler2.got_update);
EXPECT_TRUE(handler3.got_update);
diff --git a/slobrok/src/tests/service_map_mirror/CMakeLists.txt b/slobrok/src/tests/service_map_mirror/CMakeLists.txt
new file mode 100644
index 00000000000..f79bc2294f3
--- /dev/null
+++ b/slobrok/src/tests/service_map_mirror/CMakeLists.txt
@@ -0,0 +1,9 @@
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(slobrok_service_map_mirror_test_app TEST
+ SOURCES
+ service_map_mirror_test.cpp
+ DEPENDS
+ slobrok_slobrokserver
+ GTest::GTest
+)
+vespa_add_test(NAME slobrok_service_map_mirror_test_app COMMAND slobrok_service_map_mirror_test_app)
diff --git a/slobrok/src/tests/service_map_mirror/service_map_mirror_test.cpp b/slobrok/src/tests/service_map_mirror/service_map_mirror_test.cpp
new file mode 100644
index 00000000000..2c4dd267e46
--- /dev/null
+++ b/slobrok/src/tests/service_map_mirror/service_map_mirror_test.cpp
@@ -0,0 +1,141 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include <vespa/slobrok/server/mock_map_listener.h>
+#include <vespa/slobrok/server/service_map_mirror.h>
+#include <vespa/vespalib/gtest/gtest.h>
+#include <vespa/vespalib/util/stringfmt.h>
+#include <map>
+
+using namespace vespalib;
+using namespace slobrok;
+using vespalib::make_string_short::fmt;
+
+using Map = std::map<vespalib::string, vespalib::string>;
+
+Map dump(const ServiceMapMirror &mirror) {
+ Map result;
+ for (const auto & entry : mirror.allMappings()) {
+ result[entry.name] = entry.spec;
+ }
+ return result;
+}
+
+
+void addTo(ServiceMapMirror &target, const ServiceMapping &mapping) {
+ auto cur = target.currentGeneration();
+ std::vector<vespalib::string> removes = {};
+ ServiceMappingList updates = { mapping };
+ auto nxt = cur;
+ nxt.add();
+ MapDiff diff{cur, removes, updates, nxt};
+ target.apply(diff);
+}
+
+void removeFrom(ServiceMapMirror &target, const ServiceMapping &mapping) {
+ auto cur = target.currentGeneration();
+ std::vector<vespalib::string> removes = { mapping.name };
+ ServiceMappingList updates = { };
+ auto nxt = cur;
+ nxt.add();
+ MapDiff diff{cur, removes, updates, nxt};
+ target.apply(diff);
+}
+
+TEST(ServiceMapMirrorTest, empty_inspection) {
+ ServiceMapMirror mirror;
+ auto bar = dump(mirror);
+ EXPECT_TRUE(bar.empty());
+
+ MockMapListener observer;
+ auto subscription = MapSubscription::subscribe(mirror, observer);
+ subscription.reset();
+ EXPECT_EQ(observer.last_event, MockEvent::NONE);
+}
+
+TEST(ServiceMapMirrorTest, full_inspection) {
+ ServiceMapMirror mirror;
+ MockMapListener observer;
+ auto subscription = MapSubscription::subscribe(mirror, observer);
+ for (int i = 0; i < 1984; ++i) {
+ EXPECT_EQ(mirror.currentGeneration(), GenCnt(i));
+ auto name = fmt("key/%d/name", i);
+ auto spec = fmt("tcp/host%d.domain.tld:19099", 10000+i);
+ ServiceMapping toAdd{name, spec};
+ addTo(mirror, toAdd);
+ EXPECT_EQ(observer.last_event, MockEvent::ADD);
+ EXPECT_EQ(observer.last_add, toAdd);
+ }
+ EXPECT_EQ(mirror.currentGeneration(), GenCnt(1984));
+ ServiceMapping toRemove{"key/666/name", "tcp/host10666.domain.tld:19099"};
+ removeFrom(mirror, toRemove);
+ EXPECT_EQ(observer.last_event, MockEvent::REMOVE);
+ EXPECT_EQ(observer.last_remove, toRemove);
+ EXPECT_EQ(mirror.currentGeneration(), GenCnt(1985));
+
+ ServiceMapping oldMapping{"key/1969/name", "tcp/host11969.domain.tld:19099"};
+ ServiceMapping toUpdate{"key/1969/name", "tcp/woodstock:19069"};
+ addTo(mirror, toUpdate);
+ EXPECT_EQ(observer.last_event, MockEvent::UPDATE);
+ EXPECT_EQ(observer.last_remove, oldMapping);
+ EXPECT_EQ(observer.last_add, toUpdate);
+ EXPECT_EQ(mirror.currentGeneration(), GenCnt(1986));
+
+ auto map = dump(mirror);
+ EXPECT_FALSE(map.contains("foo"));
+ EXPECT_TRUE(map.contains("key/0/name"));
+ EXPECT_FALSE(map.contains("key/666/name"));
+ EXPECT_TRUE(map.contains("key/1983/name"));
+ EXPECT_FALSE(map.contains("key/1984/name"));
+ EXPECT_TRUE(map.contains("key/1969/name"));
+ EXPECT_EQ(map["key/0/name"], "tcp/host10000.domain.tld:19099");
+ EXPECT_EQ(map["key/123/name"], "tcp/host10123.domain.tld:19099");
+ EXPECT_EQ(map["key/1983/name"], "tcp/host11983.domain.tld:19099");
+ EXPECT_EQ(map["key/1969/name"], "tcp/woodstock:19069");
+ EXPECT_EQ(map.size(), 1983ul);
+
+ auto cur = mirror.currentGeneration();
+ std::vector<vespalib::string> removes = {
+ "key/123/name",
+ "key/1983/name",
+ "key/234/name",
+ "key/345/name",
+ "key/123/name",
+ "key/456/name"
+ };
+ ServiceMappingList updates = {
+ ServiceMapping{ "key/567/name", "bar/1/foo" },
+ ServiceMapping{ "key/678/name", "bar/2/foo" },
+ ServiceMapping{ "key/234/name", "bar/3/foo" },
+ ServiceMapping{ "key/345/name", "bar/4/foo" },
+ ServiceMapping{ "key/789/name", "bar/5/foo" },
+ ServiceMapping{ "key/666/name", "bar/6/foo" },
+ ServiceMapping{ "key/567/name", "bar/7/foo" }
+ };
+ auto nxt = cur;
+ nxt.add();
+ nxt.add();
+ mirror.apply(MapDiff{cur, removes, updates, nxt});
+ EXPECT_EQ(mirror.currentGeneration(), GenCnt(1988));
+ map = dump(mirror);
+ EXPECT_FALSE(map.contains("key/123/name"));
+ EXPECT_FALSE(map.contains("key/1983/name"));
+ EXPECT_FALSE(map.contains("key/456/name"));
+ EXPECT_TRUE(map.contains("key/0/name"));
+ EXPECT_TRUE(map.contains("key/234/name"));
+ EXPECT_TRUE(map.contains("key/345/name"));
+ EXPECT_TRUE(map.contains("key/567/name"));
+ EXPECT_TRUE(map.contains("key/666/name"));
+ EXPECT_TRUE(map.contains("key/678/name"));
+ EXPECT_TRUE(map.contains("key/789/name"));
+ EXPECT_EQ(map["key/234/name"], "bar/3/foo");
+ EXPECT_EQ(map["key/345/name"], "bar/4/foo");
+ EXPECT_EQ(map["key/567/name"], "bar/7/foo");
+ EXPECT_EQ(map["key/666/name"], "bar/6/foo");
+ EXPECT_EQ(map["key/678/name"], "bar/2/foo");
+ EXPECT_EQ(map["key/789/name"], "bar/5/foo");
+ EXPECT_EQ(map.size(), 1981ul);
+}
+
+
+GTEST_MAIN_RUN_ALL_TESTS()
+
diff --git a/slobrok/src/tests/standalone/CMakeLists.txt b/slobrok/src/tests/standalone/CMakeLists.txt
index 67f05fda11c..2e40a6927f3 100644
--- a/slobrok/src/tests/standalone/CMakeLists.txt
+++ b/slobrok/src/tests/standalone/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(slobrok_standalone_test_app TEST
SOURCES
standalone.cpp
diff --git a/slobrok/src/tests/standalone/standalone.cpp b/slobrok/src/tests/standalone/standalone.cpp
index 883aeed1494..33813fceb3a 100644
--- a/slobrok/src/tests/standalone/standalone.cpp
+++ b/slobrok/src/tests/standalone/standalone.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/slobrok/server/slobrokserver.h>
#include <vespa/fnet/frt/supervisor.h>
@@ -281,13 +281,13 @@ TEST("standalone") {
ASSERT_TRUE(req->GetReturn()->GetValue(0)._string_array._len == 0);
ASSERT_TRUE(req->GetReturn()->GetValue(1)._string_array._len == 0);
- // unregister server A (wrong spec)
+ // unregister server A (wrong spec, but we decided that is not an error)
req = orb.AllocRPCRequest(req);
req->SetMethodName("slobrok.unregisterRpcServer");
req->GetParams()->AddString("A");
req->GetParams()->AddString("tcp/localhost:18543");
sb->InvokeSync(req, 5.0);
- ASSERT_TRUE(req->IsError());
+ ASSERT_FALSE(req->IsError());
// lookup 'A' should give 'A'
req = orb.AllocRPCRequest(req);
diff --git a/slobrok/src/tests/startsome/.gitignore b/slobrok/src/tests/startsome/.gitignore
index 590f1278584..9a318025901 100644
--- a/slobrok/src/tests/startsome/.gitignore
+++ b/slobrok/src/tests/startsome/.gitignore
@@ -5,3 +5,4 @@
/tstdst
slobrok_rpc_info_app
slobrok_tstdst_app
+log.*.txt
diff --git a/slobrok/src/tests/startsome/CMakeLists.txt b/slobrok/src/tests/startsome/CMakeLists.txt
index 8dac4c4ee35..6d12b290119 100644
--- a/slobrok/src/tests/startsome/CMakeLists.txt
+++ b/slobrok/src/tests/startsome/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(slobrok_tstdst_app TEST
SOURCES
tstdst.cpp
diff --git a/slobrok/src/tests/startsome/rpc_info.cpp b/slobrok/src/tests/startsome/rpc_info.cpp
index 0f8739d12be..6f0fd679003 100644
--- a/slobrok/src/tests/startsome/rpc_info.cpp
+++ b/slobrok/src/tests/startsome/rpc_info.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fastos/app.h>
#include <vespa/fnet/frt/supervisor.h>
diff --git a/slobrok/src/tests/startsome/startsome.sh b/slobrok/src/tests/startsome/startsome.sh
index ed3d2b29537..4c9971aa214 100755
--- a/slobrok/src/tests/startsome/startsome.sh
+++ b/slobrok/src/tests/startsome/startsome.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
SBCMD=../../apps/sbcmd/vespa-slobrok-cmd
@@ -24,15 +24,16 @@ listall () {
}
-${SLOBROK} -p 18481 &
-${SLOBROK} -p 18482 &
-${SLOBROK} -p 18483 &
-${SLOBROK} -p 18484 &
+${VALGRIND} ${SLOBROK} -p 18481 > log.s1.txt 2>&1 &
+${VALGRIND} ${SLOBROK} -p 18482 > log.s2.txt 2>&1 &
+${VALGRIND} ${SLOBROK} -p 18483 > log.s3.txt 2>&1 &
+${VALGRIND} ${SLOBROK} -p 18484 > log.s4.txt 2>&1 &
sleep 1
+[ "${VALGRIND}" ] && sleep 9
./slobrok_rpc_info_app \
- tcp/localhost:18481 verbose > rpc-method-list
+ tcp/localhost:18481 verbose > rpc-method-list
echo port 18481:
${SBCMD} 18481 slobrok.callback.listNamesServed
diff --git a/slobrok/src/tests/startsome/tstdst.cpp b/slobrok/src/tests/startsome/tstdst.cpp
index b6be075cf7b..cd38e6cbf97 100644
--- a/slobrok/src/tests/startsome/tstdst.cpp
+++ b/slobrok/src/tests/startsome/tstdst.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/host_name.h>
#include <vespa/fastos/app.h>
diff --git a/slobrok/src/tests/startup/CMakeLists.txt b/slobrok/src/tests/startup/CMakeLists.txt
index adece6dd711..05c9ec571fb 100644
--- a/slobrok/src/tests/startup/CMakeLists.txt
+++ b/slobrok/src/tests/startup/CMakeLists.txt
@@ -1 +1 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
diff --git a/slobrok/src/tests/startup/run.sh b/slobrok/src/tests/startup/run.sh
index 21eaebd76f2..b834419b015 100755
--- a/slobrok/src/tests/startup/run.sh
+++ b/slobrok/src/tests/startup/run.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
cmd=../../apps/slobrok/slobrok
diff --git a/slobrok/src/tests/union_service_map/CMakeLists.txt b/slobrok/src/tests/union_service_map/CMakeLists.txt
new file mode 100644
index 00000000000..82d01dbf397
--- /dev/null
+++ b/slobrok/src/tests/union_service_map/CMakeLists.txt
@@ -0,0 +1,9 @@
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(slobrok_union_service_map_test_app TEST
+ SOURCES
+ union_service_map_test.cpp
+ DEPENDS
+ slobrok_slobrokserver
+ GTest::GTest
+)
+vespa_add_test(NAME slobrok_union_service_map_test_app COMMAND slobrok_union_service_map_test_app)
diff --git a/slobrok/src/tests/union_service_map/union_service_map_test.cpp b/slobrok/src/tests/union_service_map/union_service_map_test.cpp
new file mode 100644
index 00000000000..983b7632d09
--- /dev/null
+++ b/slobrok/src/tests/union_service_map/union_service_map_test.cpp
@@ -0,0 +1,143 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include <vespa/slobrok/server/mock_map_listener.h>
+#include <vespa/slobrok/server/union_service_map.h>
+#include <vespa/vespalib/gtest/gtest.h>
+#include <vespa/vespalib/util/stringfmt.h>
+
+using namespace vespalib;
+using namespace slobrok;
+using vespalib::make_string_short::fmt;
+
+TEST(UnionServiceMapTest, forwards_simple_requests) {
+ ProxyMapSource source;
+ UnionServiceMap unionizer;
+ MockMapListener observer;
+ auto subscription1 = MapSubscription::subscribe(unionizer, observer);
+ auto subscription2 = MapSubscription::subscribe(source, unionizer);
+
+ EXPECT_EQ(observer.last_event, MockEvent::NONE);
+
+ ServiceMapping one{"foo/1", "bar/1"};
+ source.add(one);
+ EXPECT_EQ(observer.last_event, MockEvent::ADD);
+ EXPECT_EQ(observer.last_add, one);
+ ServiceMapping two{"foo/2", "bar/2"};
+ source.add(two);
+ EXPECT_EQ(observer.last_event, MockEvent::ADD);
+ EXPECT_EQ(observer.last_add, two);
+
+ source.remove(one);
+ EXPECT_EQ(observer.last_event, MockEvent::REMOVE);
+ EXPECT_EQ(observer.last_remove, one);
+
+ ServiceMapping two_q{"foo/2", "qux/2"};
+ source.update(two, two_q);
+ // update implemented ass remove+add:
+ EXPECT_EQ(observer.last_event, MockEvent::ADD);
+ EXPECT_EQ(observer.last_remove, two);
+ EXPECT_EQ(observer.last_add, two_q);
+}
+
+TEST(UnionServiceMapTest, handles_refcount) {
+ ProxyMapSource source1;
+ ProxyMapSource source2;
+ ProxyMapSource source3;
+ UnionServiceMap unionizer;
+ MockMapListener observer;
+ auto subscription1 = MapSubscription::subscribe(unionizer, observer);
+ auto subscription2 = MapSubscription::subscribe(source1, unionizer);
+ auto subscription3 = MapSubscription::subscribe(source2, unionizer);
+ auto subscription4 = MapSubscription::subscribe(source3, unionizer);
+
+ EXPECT_EQ(observer.last_event, MockEvent::NONE);
+ ServiceMapping one{"foo/1", "bar/1"};
+ source1.add(one);
+ EXPECT_EQ(observer.last_event, MockEvent::ADD);
+ EXPECT_EQ(observer.last_add, one);
+ observer.clear();
+ EXPECT_EQ(observer.last_event, MockEvent::NONE);
+ source2.add(one);
+ EXPECT_EQ(observer.last_event, MockEvent::NONE);
+ source3.add(one);
+ EXPECT_EQ(observer.last_event, MockEvent::NONE);
+ ServiceMapping two{"foo/2", "bar/2"};
+ source1.add(two);
+ EXPECT_EQ(observer.last_event, MockEvent::ADD);
+ EXPECT_EQ(observer.last_add, two);
+ observer.clear();
+ EXPECT_EQ(observer.last_event, MockEvent::NONE);
+ source2.add(two);
+ EXPECT_EQ(observer.last_event, MockEvent::NONE);
+
+ source1.remove(one);
+ EXPECT_EQ(observer.last_event, MockEvent::NONE);
+ source2.remove(one);
+ EXPECT_EQ(observer.last_event, MockEvent::NONE);
+
+ source1.remove(two);
+ EXPECT_EQ(observer.last_event, MockEvent::NONE);
+ source2.remove(two);
+ EXPECT_EQ(observer.last_event, MockEvent::REMOVE);
+ EXPECT_EQ(observer.last_remove, two);
+
+ observer.clear();
+ EXPECT_EQ(observer.last_event, MockEvent::NONE);
+ source3.remove(one);
+ EXPECT_EQ(observer.last_event, MockEvent::REMOVE);
+ EXPECT_EQ(observer.last_remove, one);
+}
+
+TEST(UnionServiceMapTest, handles_conflicts) {
+ ProxyMapSource source1;
+ ProxyMapSource source2;
+ ProxyMapSource source3;
+ UnionServiceMap unionizer;
+ MockMapListener observer;
+ auto subscription1 = MapSubscription::subscribe(unionizer, observer);
+ auto subscription2 = MapSubscription::subscribe(source1, unionizer);
+ auto subscription3 = MapSubscription::subscribe(source2, unionizer);
+ auto subscription4 = MapSubscription::subscribe(source3, unionizer);
+
+ EXPECT_EQ(observer.last_event, MockEvent::NONE);
+ ServiceMapping one{"foo/1", "bar/1"};
+ source1.add(one);
+ EXPECT_EQ(observer.last_event, MockEvent::ADD);
+ EXPECT_EQ(observer.last_add, one);
+ observer.clear();
+ source2.add(one);
+ EXPECT_EQ(observer.last_event, MockEvent::NONE);
+
+ ServiceMapping two{"foo/2", "bar/2"};
+ source1.add(two);
+ EXPECT_EQ(observer.last_event, MockEvent::ADD);
+ EXPECT_EQ(observer.last_add, two);
+ observer.clear();
+ source2.add(two);
+ EXPECT_EQ(observer.last_event, MockEvent::NONE);
+
+ ServiceMapping one_q{"foo/1", "qux/1"};
+ source3.add(one_q);
+ EXPECT_EQ(observer.last_event, MockEvent::REMOVE);
+ EXPECT_EQ(observer.last_remove, one);
+
+ ServiceMapping two_q{"foo/2", "qux/2"};
+ source3.add(two_q);
+ EXPECT_EQ(observer.last_event, MockEvent::REMOVE);
+ EXPECT_EQ(observer.last_remove, two);
+
+ source3.remove(one_q);
+ EXPECT_EQ(observer.last_event, MockEvent::ADD);
+ EXPECT_EQ(observer.last_add, one);
+
+ observer.clear();
+ source1.remove(two);
+ EXPECT_EQ(observer.last_event, MockEvent::NONE);
+ source2.remove(two);
+ EXPECT_EQ(observer.last_event, MockEvent::ADD);
+ EXPECT_EQ(observer.last_add, two_q);
+}
+
+
+GTEST_MAIN_RUN_ALL_TESTS()
+
diff --git a/slobrok/src/vespa/slobrok/CMakeLists.txt b/slobrok/src/vespa/slobrok/CMakeLists.txt
index 00ccadb1226..ec2d0e5a991 100644
--- a/slobrok/src/vespa/slobrok/CMakeLists.txt
+++ b/slobrok/src/vespa/slobrok/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(slobrok
SOURCES
backoff.cpp
diff --git a/slobrok/src/vespa/slobrok/backoff.cpp b/slobrok/src/vespa/slobrok/backoff.cpp
index e09e688f646..3c433d85862 100644
--- a/slobrok/src/vespa/slobrok/backoff.cpp
+++ b/slobrok/src/vespa/slobrok/backoff.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "backoff.h"
diff --git a/slobrok/src/vespa/slobrok/backoff.h b/slobrok/src/vespa/slobrok/backoff.h
index 5d410635088..32a23c78776 100644
--- a/slobrok/src/vespa/slobrok/backoff.h
+++ b/slobrok/src/vespa/slobrok/backoff.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdio>
diff --git a/slobrok/src/vespa/slobrok/cfg.cpp b/slobrok/src/vespa/slobrok/cfg.cpp
index 01da82b41c1..557e94d56d8 100644
--- a/slobrok/src/vespa/slobrok/cfg.cpp
+++ b/slobrok/src/vespa/slobrok/cfg.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "cfg.h"
namespace slobrok {
diff --git a/slobrok/src/vespa/slobrok/cfg.h b/slobrok/src/vespa/slobrok/cfg.h
index db83790677a..d3150a6f941 100644
--- a/slobrok/src/vespa/slobrok/cfg.h
+++ b/slobrok/src/vespa/slobrok/cfg.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/ptrholder.h>
diff --git a/slobrok/src/vespa/slobrok/imirrorapi.h b/slobrok/src/vespa/slobrok/imirrorapi.h
index 508847cbfeb..c76123d82d7 100644
--- a/slobrok/src/vespa/slobrok/imirrorapi.h
+++ b/slobrok/src/vespa/slobrok/imirrorapi.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/slobrok/src/vespa/slobrok/sblist.cpp b/slobrok/src/vespa/slobrok/sblist.cpp
index 2cb5f0b3d60..f3c3f17c0db 100644
--- a/slobrok/src/vespa/slobrok/sblist.cpp
+++ b/slobrok/src/vespa/slobrok/sblist.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sblist.h"
#include <vespa/vespalib/util/random.h>
diff --git a/slobrok/src/vespa/slobrok/sblist.h b/slobrok/src/vespa/slobrok/sblist.h
index 08328b99d1a..1b06dfcf824 100644
--- a/slobrok/src/vespa/slobrok/sblist.h
+++ b/slobrok/src/vespa/slobrok/sblist.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "cfg.h"
diff --git a/slobrok/src/vespa/slobrok/sbmirror.cpp b/slobrok/src/vespa/slobrok/sbmirror.cpp
index 8102e1fecbf..9207eb3f56f 100644
--- a/slobrok/src/vespa/slobrok/sbmirror.cpp
+++ b/slobrok/src/vespa/slobrok/sbmirror.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sbmirror.h"
#include <vespa/fnet/frt/supervisor.h>
diff --git a/slobrok/src/vespa/slobrok/sbmirror.h b/slobrok/src/vespa/slobrok/sbmirror.h
index ec1ce22194b..58258ecf023 100644
--- a/slobrok/src/vespa/slobrok/sbmirror.h
+++ b/slobrok/src/vespa/slobrok/sbmirror.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "imirrorapi.h"
diff --git a/slobrok/src/vespa/slobrok/sbregister.cpp b/slobrok/src/vespa/slobrok/sbregister.cpp
index 357e3fbd1ce..cdab4d4009d 100644
--- a/slobrok/src/vespa/slobrok/sbregister.cpp
+++ b/slobrok/src/vespa/slobrok/sbregister.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sbregister.h"
#include <vespa/fnet/frt/supervisor.h>
diff --git a/slobrok/src/vespa/slobrok/sbregister.h b/slobrok/src/vespa/slobrok/sbregister.h
index 8e849e1ea13..7590cbc0afa 100644
--- a/slobrok/src/vespa/slobrok/sbregister.h
+++ b/slobrok/src/vespa/slobrok/sbregister.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "backoff.h"
diff --git a/slobrok/src/vespa/slobrok/server/CMakeLists.txt b/slobrok/src/vespa/slobrok/server/CMakeLists.txt
index 5951e876ecc..b16944a8d6a 100644
--- a/slobrok/src/vespa/slobrok/server/CMakeLists.txt
+++ b/slobrok/src/vespa/slobrok/server/CMakeLists.txt
@@ -1,28 +1,35 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(slobrok_slobrokserver
SOURCES
- cmd.cpp
configshim.cpp
exchange_manager.cpp
i_monitored_server.cpp
i_rpc_server_manager.cpp
+ local_rpc_monitor_map.cpp
managed_rpc_server.cpp
map_diff.cpp
+ map_listener.cpp
+ map_source.cpp
+ mapping_monitor.cpp
metrics_producer.cpp
+ mock_map_listener.cpp
monitor.cpp
named_service.cpp
+ proxy_map_source.cpp
reconfigurable_stateserver.cpp
remote_check.cpp
remote_slobrok.cpp
+ request_completion_handler.cpp
reserved_name.cpp
+ rpc_mapping_monitor.cpp
rpchooks.cpp
rpcmirror.cpp
- rpc_server_manager.cpp
- rpc_server_map.cpp
sbenv.cpp
service_map_history.cpp
+ service_map_mirror.cpp
service_mapping.cpp
slobrokserver.cpp
+ union_service_map.cpp
INSTALL lib64
DEPENDS
slobrok
diff --git a/slobrok/src/vespa/slobrok/server/cmd.cpp b/slobrok/src/vespa/slobrok/server/cmd.cpp
deleted file mode 100644
index 60060b9868f..00000000000
--- a/slobrok/src/vespa/slobrok/server/cmd.cpp
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-
-#include "cmd.h"
-#include "rpc_server_map.h"
-#include "reserved_name.h"
-#include "remote_slobrok.h"
-#include "sbenv.h"
-
-#include <vespa/log/log.h>
-LOG_SETUP(".slobrok.server.cmd");
-
-namespace slobrok {
-
-//-----------------------------------------------------------------------------
-
-struct ScriptData {
- SBEnv &env;
- const std::string name;
- const std::string spec;
- FRT_RPCRequest * const registerRequest;
-
- enum {
- RDC_INIT, XCH_WANTADD, CHK_RPCSRV, XCH_DOADD, XCH_IGNORE, RDC_INVAL
- } _state;
-
- ScriptData(SBEnv &e, const std::string &n, const std::string &s, FRT_RPCRequest *r)
- : env(e), name(n), spec(s), registerRequest(r), _state(RDC_INIT)
- {}
-};
-
-//-----------------------------------------------------------------------------
-
-const std::string &
-ScriptCommand::name() { return _data->name; }
-
-const std::string &
-ScriptCommand::spec() { return _data->spec; }
-
-ScriptCommand::ScriptCommand(std::unique_ptr<ScriptData> data)
- : _data(std::move(data))
-{}
-
-ScriptCommand::ScriptCommand(ScriptCommand &&) = default;
-ScriptCommand&
-ScriptCommand::operator= (ScriptCommand &&) = default;
-ScriptCommand::~ScriptCommand() = default;
-
-ScriptCommand
-ScriptCommand::makeRegRpcSrvCmd(SBEnv &env,
- const std::string &name, const std::string &spec,
- FRT_RPCRequest *req)
-{
- return ScriptCommand(std::make_unique<ScriptData>(env, name, spec, req));
-}
-
-ScriptCommand
-ScriptCommand::makeRemRemCmd(SBEnv &env, const std::string & name, const std::string &spec)
-{
- auto data = std::make_unique<ScriptData>(env, name, spec, nullptr);
- data->_state = ScriptData::XCH_IGNORE;
- return ScriptCommand(std::move(data));
-}
-
-
-void
-ScriptCommand::doRequest()
-{
- LOG_ASSERT(_data->_state == ScriptData::RDC_INIT);
- doneHandler(OkState());
-}
-
-void cleanupReservation(ScriptData & data)
-{
- RpcServerMap &map = data.env._rpcsrvmap;
- const ReservedName *rsvp = map.getReservation(data.name.c_str());
- if (rsvp != nullptr && rsvp->isLocal) {
- map.removeReservation(data.name.c_str());
- }
-}
-
-void
-ScriptCommand::doneHandler(OkState result)
-{
- LOG_ASSERT(_data);
- std::unique_ptr<ScriptData> dataUP = std::move(_data);
- LOG_ASSERT(! _data);
- ScriptData & data = *dataUP;
- const char *name_p = data.name.c_str();
- const char *spec_p = data.spec.c_str();
- ExchangeManager &xch = data.env._exchanger;
- RpcServerManager &rsm = data.env._rpcsrvmanager;
-
- if (result.failed()) {
- LOG(warning, "failed [%s->%s] in state %d: %s",
- name_p, spec_p, data._state, result.errorMsg.c_str());
- cleanupReservation(data);
- // XXX should handle different state errors differently?
- if (data.registerRequest != nullptr) {
- data.registerRequest->SetError(FRTE_RPC_METHOD_FAILED, result.errorMsg.c_str());
- data.registerRequest->Return();
- } else {
- LOG(warning, "ignored: %s", result.errorMsg.c_str());
- }
- return;
- }
- if (data._state == ScriptData::RDC_INIT) {
- LOG(spam, "phase wantAdd(%s,%s)", name_p, spec_p);
- data._state = ScriptData::XCH_WANTADD;
- xch.wantAdd(std::move(dataUP));
- return;
- } else if (data._state == ScriptData::XCH_WANTADD) {
- LOG(spam, "phase addManaged(%s,%s)", name_p, spec_p);
- data._state = ScriptData::CHK_RPCSRV;
- rsm.addManaged(std::move(dataUP));
- return;
- } else if (data._state == ScriptData::CHK_RPCSRV) {
- LOG(spam, "phase doAdd(%s,%s)", name_p, spec_p);
- data._state = ScriptData::XCH_DOADD;
- xch.doAdd(std::move(dataUP));
- return;
- } else if (data._state == ScriptData::XCH_DOADD) {
- LOG(debug, "done doAdd(%s,%s)", name_p, spec_p);
- data._state = ScriptData::RDC_INVAL;
- // all OK
- data.registerRequest->Return();
- goto alldone;
- } else if (data._state == ScriptData::XCH_IGNORE) {
- goto alldone;
- }
- // no other state should be possible
- LOG_ABORT("should not be reached");
- alldone:
- cleanupReservation(data);
-}
-
-//-----------------------------------------------------------------------------
-
-} // namespace slobrok
diff --git a/slobrok/src/vespa/slobrok/server/cmd.h b/slobrok/src/vespa/slobrok/server/cmd.h
deleted file mode 100644
index 02ae16e457b..00000000000
--- a/slobrok/src/vespa/slobrok/server/cmd.h
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#pragma once
-
-#include "ok_state.h"
-#include <memory>
-
-class FRT_RPCRequest;
-
-namespace slobrok {
-
-class SBEnv;
-struct ScriptData;
-
-class ScriptCommand
-{
-private:
- std::unique_ptr<ScriptData> _data;
- ScriptCommand(std::unique_ptr<ScriptData> data);
-public:
- const std::string &name();
- const std::string &spec();
-
- ScriptCommand(ScriptCommand &&);
- ScriptCommand& operator= (ScriptCommand &&);
- ~ScriptCommand();
-
- static ScriptCommand makeRegRpcSrvCmd(SBEnv &env, const std::string &name, const std::string &spec, FRT_RPCRequest *req);
- static ScriptCommand makeRemRemCmd(SBEnv &env, const std::string &name, const std::string &spec);
-
- void doneHandler(OkState result);
- void doRequest();
-};
-
-} // namespace slobrok
diff --git a/slobrok/src/vespa/slobrok/server/configshim.cpp b/slobrok/src/vespa/slobrok/server/configshim.cpp
index 15c39516ded..d6922685009 100644
--- a/slobrok/src/vespa/slobrok/server/configshim.cpp
+++ b/slobrok/src/vespa/slobrok/server/configshim.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "configshim.h"
diff --git a/slobrok/src/vespa/slobrok/server/configshim.h b/slobrok/src/vespa/slobrok/server/configshim.h
index 750f6a4c139..aebbe2dece4 100644
--- a/slobrok/src/vespa/slobrok/server/configshim.h
+++ b/slobrok/src/vespa/slobrok/server/configshim.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/slobrok/cfg.h>
diff --git a/slobrok/src/vespa/slobrok/server/exchange_manager.cpp b/slobrok/src/vespa/slobrok/server/exchange_manager.cpp
index c7e3c3b32a6..45bf22cd7a0 100644
--- a/slobrok/src/vespa/slobrok/server/exchange_manager.cpp
+++ b/slobrok/src/vespa/slobrok/server/exchange_manager.cpp
@@ -1,9 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "exchange_manager.h"
-#include "rpc_server_map.h"
#include "sbenv.h"
#include <vespa/fnet/frt/supervisor.h>
+#include <vespa/vespalib/util/overload.h>
+#include <vespa/vespalib/util/visit_ranges.h>
#include <vespa/log/log.h>
LOG_SETUP(".slobrok.server.exchange_manager");
@@ -12,21 +13,18 @@ namespace slobrok {
//-----------------------------------------------------------------------------
-ExchangeManager::ExchangeManager(SBEnv &env, RpcServerMap &rpcsrvmap)
+ExchangeManager::ExchangeManager(SBEnv &env)
: _partners(),
- _env(env),
- _rpcsrvmanager(env._rpcsrvmanager),
- _rpcsrvmap(rpcsrvmap)
+ _env(env)
{
}
ExchangeManager::~ExchangeManager() = default;
OkState
-ExchangeManager::addPartner(const std::string & name, const std::string & spec)
+ExchangeManager::addPartner(const std::string & spec)
{
- RemoteSlobrok *oldremote = lookupPartner(name);
- if (oldremote != nullptr) {
+ if (RemoteSlobrok *oldremote = lookupPartner(spec)) {
// already a partner, should be OK
if (spec != oldremote->getSpec()) {
return OkState(FRTE_RPC_METHOD_FAILED, "name already partner with different spec");
@@ -37,11 +35,9 @@ ExchangeManager::addPartner(const std::string & name, const std::string & spec)
}
return OkState();
}
-
- LOG_ASSERT(_partners.find(name) == _partners.end());
- auto newPartner = std::make_unique<RemoteSlobrok>(name, spec, *this);
- RemoteSlobrok & partner = *newPartner;
- _partners.emplace(name, std::move(newPartner));
+ auto [ it, wasNew ] = _partners.emplace(spec, std::make_unique<RemoteSlobrok>(spec, spec, *this));
+ LOG_ASSERT(wasNew);
+ RemoteSlobrok & partner = *it->second;
partner.tryConnect();
return OkState();
}
@@ -53,6 +49,7 @@ ExchangeManager::removePartner(const std::string & name)
auto oldremote = std::move(_partners[name]);
LOG_ASSERT(oldremote);
_partners.erase(name);
+ oldremote->shutdown();
}
std::vector<std::string>
@@ -69,19 +66,7 @@ ExchangeManager::getPartnerList()
void
ExchangeManager::forwardRemove(const std::string & name, const std::string & spec)
{
- WorkPackage *package = new WorkPackage(WorkPackage::OP_REMOVE, *this,
- ScriptCommand::makeRemRemCmd(_env, name, spec));
- for (const auto & entry : _partners) {
- package->addItem(entry.second.get());
- }
- package->expedite();
-}
-
-void
-ExchangeManager::doAdd(ScriptCommand rdc)
-{
- WorkPackage *package = new WorkPackage(WorkPackage::OP_DOADD, *this, std::move(rdc));
-
+ WorkPackage *package = new WorkPackage(WorkPackage::OP_REMOVE, ServiceMapping{name, spec}, *this);
for (const auto & entry : _partners) {
package->addItem(entry.second.get());
}
@@ -89,27 +74,46 @@ ExchangeManager::doAdd(ScriptCommand rdc)
}
-void
-ExchangeManager::wantAdd(ScriptCommand rdc)
-{
- WorkPackage *package = new WorkPackage(WorkPackage::OP_WANTADD, *this, std::move(rdc));
- for (const auto & entry : _partners) {
- package->addItem(entry.second.get());
- }
- package->expedite();
-}
-
RemoteSlobrok *
ExchangeManager::lookupPartner(const std::string & name) const {
auto found = _partners.find(name);
return (found == _partners.end()) ? nullptr : found->second.get();
}
+vespalib::string
+ExchangeManager::diffLists(const ServiceMappingList &lhs, const ServiceMappingList &rhs)
+{
+ using namespace vespalib;
+ vespalib::string result;
+ auto visitor = overload
+ {
+ [&result](visit_ranges_first, const auto &m) {
+ result.append("\nmissing: ").append(m.name).append("->").append(m.spec);
+ },
+ [&result](visit_ranges_second, const auto &m) {
+ result.append("\nextra: ").append(m.name).append("->").append(m.spec);
+ },
+ [](visit_ranges_both, const auto &, const auto &) {}
+ };
+ visit_ranges(visitor, lhs.begin(), lhs.end(), rhs.begin(), rhs.end());
+ return result;
+}
+
void
ExchangeManager::healthCheck()
{
+ auto newWorldList = env().consensusMap().currentConsensus();
for (const auto & [ name, partner ] : _partners) {
- partner->maybePushMine();
+ partner->maybeStartFetch();
+ auto remoteList = partner->remoteMap().allMappings();
+ // 0 is expected (when remote is down)
+ if (remoteList.size() != 0) {
+ vespalib::string diff = diffLists(newWorldList, remoteList);
+ if (! diff.empty()) {
+ LOG(warning, "Diff from consensus map to peer slobrok mirror: %s",
+ diff.c_str());
+ }
+ }
}
LOG(debug, "ExchangeManager::healthCheck for %ld partners", _partners.size());
}
@@ -162,14 +166,12 @@ ExchangeManager::WorkPackage::WorkItem::~WorkItem()
}
-ExchangeManager::WorkPackage::WorkPackage(op_type op,
- ExchangeManager &exchanger,
- ScriptCommand script)
+ExchangeManager::WorkPackage::WorkPackage(op_type op, const ServiceMapping &mapping, ExchangeManager &exchanger)
: _work(),
_doneCnt(0),
_numDenied(0),
- _script(std::move(script)),
_exchanger(exchanger),
+ _mapping(mapping),
_optype(op)
{
}
@@ -187,9 +189,9 @@ ExchangeManager::WorkPackage::doneItem(bool denied)
(int)_doneCnt, (int)_work.size(), (int)_numDenied);
if (_doneCnt == _work.size()) {
if (_numDenied > 0) {
- _script.doneHandler(OkState(_numDenied, "denied by remote"));
- } else {
- _script.doneHandler(OkState());
+ LOG(debug, "work package [%s->%s]: %zd/%zd denied by remote",
+ _mapping.name.c_str(), _mapping.spec.c_str(),
+ _numDenied, _doneCnt);
}
delete this;
}
@@ -202,18 +204,12 @@ ExchangeManager::WorkPackage::addItem(RemoteSlobrok *partner)
if (! partner->isConnected()) {
return;
}
- const char *name_p = _script.name().c_str();
- const char *spec_p = _script.spec().c_str();
+ const char *name_p = _mapping.name.c_str();
+ const char *spec_p = _mapping.spec.c_str();
FRT_RPCRequest *r = _exchanger._env.getSupervisor()->AllocRPCRequest();
- // XXX should recheck rpcsrvmap again
- if (_optype == OP_REMOVE) {
- r->SetMethodName("slobrok.internal.doRemove");
- } else if (_optype == OP_WANTADD) {
- r->SetMethodName("slobrok.internal.wantAdd");
- } else if (_optype == OP_DOADD) {
- r->SetMethodName("slobrok.internal.doAdd");
- }
+ LOG_ASSERT(_optype == OP_REMOVE);
+ r->SetMethodName("slobrok.internal.doRemove");
r->GetParams()->AddString(_exchanger._env.mySpec().c_str());
r->GetParams()->AddString(name_p);
r->GetParams()->AddString(spec_p);
@@ -231,7 +227,6 @@ ExchangeManager::WorkPackage::expedite()
size_t sz = _work.size();
if (sz == 0) {
// no remotes need doing.
- _script.doneHandler(OkState());
delete this;
return;
}
diff --git a/slobrok/src/vespa/slobrok/server/exchange_manager.h b/slobrok/src/vespa/slobrok/server/exchange_manager.h
index a7ff60d9ecc..c59d14c90c9 100644
--- a/slobrok/src/vespa/slobrok/server/exchange_manager.h
+++ b/slobrok/src/vespa/slobrok/server/exchange_manager.h
@@ -1,8 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "ok_state.h"
-#include "cmd.h"
#include "remote_slobrok.h"
#include <deque>
@@ -14,8 +13,6 @@ namespace slobrok {
//-----------------------------------------------------------------------------
class SBEnv;
-class RpcServerMap;
-class RpcServerManager;
//-----------------------------------------------------------------------------
@@ -61,41 +58,38 @@ private:
std::vector<std::unique_ptr<WorkItem>> _work;
size_t _doneCnt;
size_t _numDenied;
- ScriptCommand _script;
public:
ExchangeManager &_exchanger;
- enum op_type { OP_NOP, OP_WANTADD, OP_DOADD, OP_REMOVE };
- op_type _optype;
+ enum op_type { OP_REMOVE };
+ const ServiceMapping _mapping;
+ const op_type _optype;
void addItem(RemoteSlobrok *partner);
void doneItem(bool denied);
void expedite();
WorkPackage(const WorkPackage&) = delete;
WorkPackage& operator= (const WorkPackage&) = delete;
- WorkPackage(op_type op,
- ExchangeManager &exchanger,
- ScriptCommand donehandler);
+ WorkPackage(op_type op, const ServiceMapping &mapping, ExchangeManager &exchanger);
~WorkPackage();
};
+ SBEnv &_env;
+
+ vespalib::string diffLists(const ServiceMappingList &lhs, const ServiceMappingList &rhs);
+
public:
ExchangeManager(const ExchangeManager &) = delete;
ExchangeManager &operator=(const ExchangeManager &) = delete;
- ExchangeManager(SBEnv &env, RpcServerMap &rpcsrvmap);
+ ExchangeManager(SBEnv &env);
~ExchangeManager();
- SBEnv &_env;
- RpcServerManager &_rpcsrvmanager;
- RpcServerMap &_rpcsrvmap;
+ SBEnv &env() { return _env; }
- OkState addPartner(const std::string & name, const std::string & spec);
- void removePartner(const std::string & name);
+ OkState addPartner(const std::string & spec);
+ void removePartner(const std::string & spec);
std::vector<std::string> getPartnerList();
void forwardRemove(const std::string & name, const std::string & spec);
- void wantAdd(ScriptCommand rdc);
- void doAdd(ScriptCommand rdc);
-
RemoteSlobrok *lookupPartner(const std::string & name) const;
void healthCheck();
};
diff --git a/slobrok/src/vespa/slobrok/server/i_monitored_server.cpp b/slobrok/src/vespa/slobrok/server/i_monitored_server.cpp
index 86c314a1e4c..16d42f02cf2 100644
--- a/slobrok/src/vespa/slobrok/server/i_monitored_server.cpp
+++ b/slobrok/src/vespa/slobrok/server/i_monitored_server.cpp
@@ -1,2 +1,2 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "i_monitored_server.h"
diff --git a/slobrok/src/vespa/slobrok/server/i_monitored_server.h b/slobrok/src/vespa/slobrok/server/i_monitored_server.h
index 890f8185e87..a66d19ba653 100644
--- a/slobrok/src/vespa/slobrok/server/i_monitored_server.h
+++ b/slobrok/src/vespa/slobrok/server/i_monitored_server.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace slobrok {
diff --git a/slobrok/src/vespa/slobrok/server/i_rpc_server_manager.cpp b/slobrok/src/vespa/slobrok/server/i_rpc_server_manager.cpp
index fadc018748d..9af055ab0c9 100644
--- a/slobrok/src/vespa/slobrok/server/i_rpc_server_manager.cpp
+++ b/slobrok/src/vespa/slobrok/server/i_rpc_server_manager.cpp
@@ -1,2 +1,2 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "i_rpc_server_manager.h"
diff --git a/slobrok/src/vespa/slobrok/server/i_rpc_server_manager.h b/slobrok/src/vespa/slobrok/server/i_rpc_server_manager.h
index fc5cb06f9d5..4ca30b11a52 100644
--- a/slobrok/src/vespa/slobrok/server/i_rpc_server_manager.h
+++ b/slobrok/src/vespa/slobrok/server/i_rpc_server_manager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <string>
diff --git a/slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.cpp b/slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.cpp
new file mode 100644
index 00000000000..025103e4e3d
--- /dev/null
+++ b/slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.cpp
@@ -0,0 +1,276 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "local_rpc_monitor_map.h"
+#include "sbenv.h"
+#include <vespa/fnet/frt/supervisor.h>
+#include <vespa/log/log.h>
+LOG_SETUP(".slobrok.server.local_rpc_monitor_map");
+
+namespace slobrok {
+
+#pragma GCC diagnostic ignored "-Winline"
+
+namespace {
+
+struct ChainedCompletionHandler : CompletionHandler {
+ std::unique_ptr<CompletionHandler> first;
+ std::unique_ptr<CompletionHandler> second;
+
+ ChainedCompletionHandler(std::unique_ptr<CompletionHandler> f,
+ std::unique_ptr<CompletionHandler> s)
+ : first(std::move(f)), second(std::move(s))
+ {}
+
+ void doneHandler(OkState result) override {
+ first->doneHandler(result);
+ second->doneHandler(result);
+ }
+ ~ChainedCompletionHandler() override {}
+};
+
+}
+
+void LocalRpcMonitorMap::DelayedTasks::PerformTask() {
+ std::vector<Event> todo;
+ std::swap(todo, _queue);
+ for (const auto & entry : todo) {
+ switch (entry.type) {
+ case EventType::ADD:
+ _target.doAdd(entry.mapping);
+ break;
+ case EventType::REMOVE:
+ _target.doRemove(entry.mapping);
+ break;
+ }
+ }
+}
+
+LocalRpcMonitorMap::LocalRpcMonitorMap(FNET_Scheduler *scheduler,
+ MappingMonitorFactory mappingMonitorFactory)
+ : _delayedTasks(scheduler, *this),
+ _map(),
+ _dispatcher(),
+ _history(),
+ _mappingMonitor(mappingMonitorFactory(*this)),
+ _subscription(MapSubscription::subscribe(_dispatcher, _history))
+{
+}
+
+LocalRpcMonitorMap::~LocalRpcMonitorMap() = default;
+
+LocalRpcMonitorMap::PerService &
+LocalRpcMonitorMap::lookup(const ServiceMapping &mapping) {
+ LOG(spam, "lookup %s->%s", mapping.name.c_str(), mapping.spec.c_str());
+ auto iter = _map.find(mapping.name);
+ if (iter == _map.end()) {
+ LOG_ABORT("not in map");
+ }
+ PerService & psd = iter->second;
+ if (psd.spec != mapping.spec) {
+ LOG_ABORT("conflict in map: %s->%s");
+ }
+ LOG(spam, "found in map: %s->%s [%s,%s]",
+ iter->first.c_str(), psd.spec.c_str(),
+ psd.up ? "up" : "down",
+ psd.localOnly ? "local" : "global");
+ return psd;
+}
+
+void LocalRpcMonitorMap::addToMap(const ServiceMapping &mapping, PerService psd, bool hurry) {
+ auto [ iter, was_inserted ] =
+ _map.try_emplace(mapping.name, std::move(psd));
+ LOG_ASSERT(was_inserted);
+ _mappingMonitor->start(mapping, hurry);
+}
+
+LocalRpcMonitorMap::RemovedData
+LocalRpcMonitorMap::removeFromMap(Map::iterator iter) {
+ auto name = iter->first;
+ PerService psd = std::move(iter->second);
+ ServiceMapping mapping{iter->first, psd.spec};
+ _mappingMonitor->stop(mapping);
+ _map.erase(iter);
+ return RemovedData {
+ .mapping = mapping,
+ .up = psd.up,
+ .localOnly = psd.localOnly,
+ .inflight = std::move(psd.inflight)
+ };
+}
+
+ServiceMapHistory & LocalRpcMonitorMap::history() {
+ return _history;
+}
+
+bool LocalRpcMonitorMap::wouldConflict(const ServiceMapping &mapping) const {
+ auto iter = _map.find(mapping.name);
+ if (iter == _map.end()) {
+ return false; // no mapping, no conflict
+ }
+ return (iter->second.spec != mapping.spec);
+}
+
+void LocalRpcMonitorMap::addLocal(const ServiceMapping &mapping,
+ std::unique_ptr<CompletionHandler> inflight)
+{
+ LOG(debug, "try local add: mapping %s->%s",
+ mapping.name.c_str(), mapping.spec.c_str());
+ auto old = _map.find(mapping.name);
+ if (old != _map.end()) {
+ PerService & exists = old->second;
+ if (exists.spec == mapping.spec) {
+ LOG(debug, "added mapping %s->%s was already present",
+ mapping.name.c_str(), mapping.spec.c_str());
+ if (exists.up) {
+ inflight->doneHandler(OkState(0, "already registered"));
+ } else if (exists.inflight) {
+ auto newInflight = std::make_unique<ChainedCompletionHandler>(
+ std::move(exists.inflight),
+ std::move(inflight));
+ exists.inflight = std::move(newInflight);
+ } else {
+ _mappingMonitor->stop(mapping);
+ exists.inflight = std::move(inflight);
+ _mappingMonitor->start(mapping, true);
+ }
+ return;
+ }
+ LOG(warning, "tried addLocal for mapping %s->%s, but already had conflicting mapping %s->%s",
+ mapping.name.c_str(), mapping.spec.c_str(),
+ mapping.name.c_str(), exists.spec.c_str());
+ inflight->doneHandler(OkState(FRTE_RPC_METHOD_FAILED, "conflict"));
+ return;
+ }
+ addToMap(mapping, localService(mapping, std::move(inflight)), true);
+}
+
+void LocalRpcMonitorMap::removeLocal(const ServiceMapping &mapping) {
+ LOG(debug, "try local remove: mapping %s->%s",
+ mapping.name.c_str(), mapping.spec.c_str());
+ auto old = _map.find(mapping.name);
+ if (old == _map.end()) {
+ return; // already removed, OK
+ }
+ PerService & exists = old->second;
+ if (exists.spec != mapping.spec) {
+ LOG(warning, "tried removeLocal for mapping %s->%s, but already had conflicting mapping %s->%s",
+ mapping.name.c_str(), mapping.spec.c_str(),
+ mapping.name.c_str(), exists.spec.c_str());
+ return; // unregister for old, conflicting mapping
+ }
+ if (exists.localOnly) {
+ // we can just remove it
+ auto removed = removeFromMap(old);
+ if (removed.inflight) {
+ auto target = std::move(removed.inflight);
+ target->doneHandler(OkState(13, "removed during initialization"));
+ }
+ if (removed.up) {
+ _dispatcher.remove(removed.mapping);
+ }
+ return;
+ }
+ // also exists in consensus map, so we can't just remove it
+ // instead, pretend it's down and delay next ping
+ _mappingMonitor->stop(mapping);
+ if (exists.up) {
+ exists.up = false;
+ _dispatcher.remove(mapping);
+ }
+ _mappingMonitor->start(mapping, false);
+ return;
+}
+
+void LocalRpcMonitorMap::add(const ServiceMapping &mapping) {
+ _delayedTasks.handleLater(Event::add(mapping));
+}
+
+void LocalRpcMonitorMap::remove(const ServiceMapping &mapping) {
+ _delayedTasks.handleLater(Event::remove(mapping));
+}
+
+void LocalRpcMonitorMap::doAdd(const ServiceMapping &mapping) {
+ LOG(debug, "try add: mapping %s->%s",
+ mapping.name.c_str(), mapping.spec.c_str());
+ auto old = _map.find(mapping.name);
+ if (old != _map.end()) {
+ PerService & exists = old->second;
+ if (exists.spec == mapping.spec) {
+ LOG(debug, "added mapping %s->%s was already present",
+ mapping.name.c_str(), mapping.spec.c_str());
+ exists.localOnly = false;
+ return;
+ }
+ auto removed = removeFromMap(old);
+ LOG(warning, "added mapping %s->%s, but already had conflicting mapping %s->%s",
+ mapping.name.c_str(), mapping.spec.c_str(),
+ removed.mapping.name.c_str(), removed.mapping.spec.c_str());
+ if (removed.inflight) {
+ auto target = std::move(removed.inflight);
+ target->doneHandler(OkState(13, "conflict during initialization"));
+ }
+ if (removed.up) {
+ _dispatcher.remove(removed.mapping);
+ }
+ }
+ addToMap(mapping, globalService(mapping), false);
+}
+
+void LocalRpcMonitorMap::doRemove(const ServiceMapping &mapping) {
+ auto iter = _map.find(mapping.name);
+ if (iter != _map.end()) {
+ auto removed = removeFromMap(iter);
+ LOG(debug, "remove: mapping %s->%s",
+ removed.mapping.name.c_str(), removed.mapping.spec.c_str());
+ if (mapping.spec != removed.mapping.spec) {
+ LOG(warning, "inconsistent specs for name '%s': had '%s', but was asked to remove '%s'",
+ mapping.name.c_str(),
+ removed.mapping.spec.c_str(),
+ mapping.spec.c_str());
+ }
+ if (removed.inflight) {
+ auto target = std::move(removed.inflight);
+ target->doneHandler(OkState(13, "removed during initialization"));
+ }
+ if (removed.up) {
+ _dispatcher.remove(removed.mapping);
+ }
+ } else {
+ LOG(debug, "tried to remove non-existing mapping %s->%s",
+ mapping.name.c_str(), mapping.spec.c_str());
+ }
+}
+
+void LocalRpcMonitorMap::down(const ServiceMapping& mapping) {
+ PerService &psd = lookup(mapping);
+ LOG(debug, "failed: %s->%s", mapping.name.c_str(), psd.spec.c_str());
+ if (psd.inflight) {
+ auto target = std::move(psd.inflight);
+ target->doneHandler(OkState(13, "failed check using listNames callback"));
+ }
+ if (psd.localOnly) {
+ auto iter = _map.find(mapping.name);
+ auto removed = removeFromMap(iter);
+ if (removed.up) {
+ _dispatcher.remove(removed.mapping);
+ }
+ } else if (psd.up) {
+ psd.up = false;
+ _dispatcher.remove(mapping);
+ }
+}
+
+void LocalRpcMonitorMap::up(const ServiceMapping& mapping) {
+ PerService &psd = lookup(mapping);
+ LOG(debug, "ok: %s->%s", mapping.name.c_str(), psd.spec.c_str());
+ if (psd.inflight) {
+ auto target = std::move(psd.inflight);
+ target->doneHandler(OkState());
+ }
+ if (! psd.up) {
+ psd.up = true;
+ _dispatcher.add(mapping);
+ }
+}
+
+} // namespace slobrok
diff --git a/slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.h b/slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.h
new file mode 100644
index 00000000000..c57dec240b8
--- /dev/null
+++ b/slobrok/src/vespa/slobrok/server/local_rpc_monitor_map.h
@@ -0,0 +1,145 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#pragma once
+
+#include "map_listener.h"
+#include "map_source.h"
+#include "mapping_monitor.h"
+#include "named_service.h"
+#include "proxy_map_source.h"
+#include "request_completion_handler.h"
+#include "service_map_history.h"
+#include "service_mapping.h"
+
+#include <vespa/fnet/task.h>
+
+#include <vector>
+#include <memory>
+#include <map>
+
+namespace slobrok {
+
+/**
+ * @class LocalRpcMonitorMap
+ * @brief A collection of ManagedRpcServer objects
+ *
+ * Tracks up/down status for name->spec combinations
+ * that are considered for publication locally.
+ **/
+class LocalRpcMonitorMap : public MapListener,
+ public MappingMonitorOwner
+{
+private:
+ enum class EventType { ADD, REMOVE };
+
+ struct Event {
+ EventType type;
+ ServiceMapping mapping;
+ static Event add(const ServiceMapping &value) {
+ return Event{EventType::ADD, value};
+ }
+ static Event remove(const ServiceMapping &value) {
+ return Event{EventType::REMOVE, value};
+ }
+ };
+
+ class DelayedTasks : public FNET_Task {
+ std::vector<Event> _queue;
+ LocalRpcMonitorMap &_target;
+ public:
+ void handleLater(Event event) {
+ _queue.emplace_back(std::move(event));
+ ScheduleNow();
+ }
+
+ void PerformTask() override;
+
+ DelayedTasks(FNET_Scheduler *scheduler, LocalRpcMonitorMap &target)
+ : FNET_Task(scheduler),
+ _queue(),
+ _target(target)
+ {}
+
+ ~DelayedTasks() { Kill(); }
+ };
+
+ DelayedTasks _delayedTasks;
+
+ struct PerService {
+ bool up;
+ bool localOnly;
+ std::unique_ptr<CompletionHandler> inflight;
+ vespalib::string spec;
+ };
+
+ PerService localService(const ServiceMapping &mapping,
+ std::unique_ptr<CompletionHandler> inflight)
+ {
+ return PerService{
+ .up = false,
+ .localOnly = true,
+ .inflight = std::move(inflight),
+ .spec = mapping.spec
+ };
+ }
+
+ PerService globalService(const ServiceMapping &mapping) {
+ return PerService{
+ .up = false,
+ .localOnly = false,
+ .inflight = {},
+ .spec = mapping.spec
+ };
+ }
+
+ using Map = std::map<vespalib::string, PerService>;
+
+ Map _map;
+ ProxyMapSource _dispatcher;
+ ServiceMapHistory _history;
+ MappingMonitor::UP _mappingMonitor;
+ std::unique_ptr<MapSubscription> _subscription;
+
+ void doAdd(const ServiceMapping &mapping);
+ void doRemove(const ServiceMapping &mapping);
+
+ PerService & lookup(const ServiceMapping &mapping);
+
+ void addToMap(const ServiceMapping &mapping, PerService psd, bool hurry);
+
+ struct RemovedData {
+ ServiceMapping mapping;
+ bool up;
+ bool localOnly;
+ std::unique_ptr<CompletionHandler> inflight;
+ };
+
+ RemovedData removeFromMap(Map::iterator iter);
+
+public:
+ LocalRpcMonitorMap(FNET_Scheduler *scheduler,
+ MappingMonitorFactory mappingMonitorFactory);
+ ~LocalRpcMonitorMap();
+
+ MapSource &dispatcher() { return _dispatcher; }
+ ServiceMapHistory & history();
+
+ bool wouldConflict(const ServiceMapping &mapping) const;
+
+ /** for use by register API, will call doneHandler() on inflight script */
+ void addLocal(const ServiceMapping &mapping,
+ std::unique_ptr<CompletionHandler> inflight);
+
+ /** for use by unregister API */
+ void removeLocal(const ServiceMapping &mapping);
+
+ void add(const ServiceMapping &mapping) override;
+ void remove(const ServiceMapping &mapping) override;
+
+ void up(const ServiceMapping& mapping) override;
+ void down(const ServiceMapping& mapping) override;
+};
+
+//-----------------------------------------------------------------------------
+
+} // namespace slobrok
+
diff --git a/slobrok/src/vespa/slobrok/server/managed_rpc_server.cpp b/slobrok/src/vespa/slobrok/server/managed_rpc_server.cpp
index 930cdbc962a..12761c0e6e9 100644
--- a/slobrok/src/vespa/slobrok/server/managed_rpc_server.cpp
+++ b/slobrok/src/vespa/slobrok/server/managed_rpc_server.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "managed_rpc_server.h"
#include "i_rpc_server_manager.h"
@@ -23,7 +23,7 @@ ManagedRpcServer::ManagedRpcServer(const std::string & name,
_monitoredServer(nullptr),
_checkServerReq(nullptr)
{
- double seconds = randomIn(0.2, 0.8);
+ double seconds = randomIn(2.5, 2.9);
LOG(debug, "first healthcheck for %s in %g seconds", name.c_str(), seconds);
Schedule(seconds);
}
@@ -35,7 +35,7 @@ void ManagedRpcServer::PerformTask() {
if (_checkServerReq == nullptr) {
_checkServerReq = _mmanager.getSupervisor()->AllocRPCRequest();
_checkServerReq->SetMethodName("slobrok.callback.listNamesServed");
- _monitoredServer->InvokeAsync(_checkServerReq, 25.0, this);
+ _monitoredServer->InvokeAsync(_checkServerReq, 5.0, this);
}
double seconds = randomIn(2.5, 2.9);
LOG(debug, "next healthcheck for %s in %g seconds", getName().c_str(), seconds);
diff --git a/slobrok/src/vespa/slobrok/server/managed_rpc_server.h b/slobrok/src/vespa/slobrok/server/managed_rpc_server.h
index 13bf2ba8686..3e4187cd191 100644
--- a/slobrok/src/vespa/slobrok/server/managed_rpc_server.h
+++ b/slobrok/src/vespa/slobrok/server/managed_rpc_server.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "named_service.h"
diff --git a/slobrok/src/vespa/slobrok/server/map_diff.cpp b/slobrok/src/vespa/slobrok/server/map_diff.cpp
index d276a2fbf05..ea71e1c1269 100644
--- a/slobrok/src/vespa/slobrok/server/map_diff.cpp
+++ b/slobrok/src/vespa/slobrok/server/map_diff.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "map_diff.h"
diff --git a/slobrok/src/vespa/slobrok/server/map_diff.h b/slobrok/src/vespa/slobrok/server/map_diff.h
index 80886886519..a28336eb2e4 100644
--- a/slobrok/src/vespa/slobrok/server/map_diff.h
+++ b/slobrok/src/vespa/slobrok/server/map_diff.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/slobrok/src/vespa/slobrok/server/map_listener.cpp b/slobrok/src/vespa/slobrok/server/map_listener.cpp
new file mode 100644
index 00000000000..1ffad05c9eb
--- /dev/null
+++ b/slobrok/src/vespa/slobrok/server/map_listener.cpp
@@ -0,0 +1,21 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "map_listener.h"
+#include <vespa/log/log.h>
+
+LOG_SETUP(".slobrok.server.map_listener");
+
+namespace slobrok {
+
+MapListener::~MapListener() = default;
+
+void MapListener::update(const ServiceMapping &old_mapping,
+ const ServiceMapping &new_mapping)
+{
+ LOG_ASSERT(old_mapping.name == new_mapping.name);
+ remove(old_mapping);
+ add(new_mapping);
+}
+
+} // namespace slobrok
+
diff --git a/slobrok/src/vespa/slobrok/server/map_listener.h b/slobrok/src/vespa/slobrok/server/map_listener.h
new file mode 100644
index 00000000000..985f623c7a9
--- /dev/null
+++ b/slobrok/src/vespa/slobrok/server/map_listener.h
@@ -0,0 +1,21 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "service_mapping.h"
+
+namespace slobrok {
+
+/**
+ * Interface for getting incremental updates from a MapSource.
+ **/
+struct MapListener {
+ virtual void add(const ServiceMapping &mapping) = 0;
+ virtual void remove(const ServiceMapping &mapping) = 0;
+ virtual void update(const ServiceMapping &old_mapping,
+ const ServiceMapping &new_mapping);
+ virtual ~MapListener();
+};
+
+} // namespace slobrok
+
diff --git a/slobrok/src/vespa/slobrok/server/map_source.cpp b/slobrok/src/vespa/slobrok/server/map_source.cpp
new file mode 100644
index 00000000000..2d791363ae8
--- /dev/null
+++ b/slobrok/src/vespa/slobrok/server/map_source.cpp
@@ -0,0 +1,28 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "map_source.h"
+
+namespace slobrok {
+
+MapSubscription::MapSubscription(MapSource &source, MapListener &listener, Tag)
+ : _source(source), _listener(listener)
+{
+ _source.registerListener(_listener);
+}
+
+MapSubscription::~MapSubscription() {
+ _source.unregisterListener(_listener);
+}
+
+std::unique_ptr<MapSubscription>
+MapSubscription::subscribe(MapSource &source, MapListener &listener)
+{
+ return std::make_unique<MapSubscription>(source, listener, Tag{});
+}
+
+
+MapSource::~MapSource() = default;
+
+
+} // namespace slobrok
+
diff --git a/slobrok/src/vespa/slobrok/server/map_source.h b/slobrok/src/vespa/slobrok/server/map_source.h
new file mode 100644
index 00000000000..2a0ebf50957
--- /dev/null
+++ b/slobrok/src/vespa/slobrok/server/map_source.h
@@ -0,0 +1,42 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "map_listener.h"
+#include <memory>
+
+namespace slobrok {
+
+struct MapSource;
+
+class MapSubscription {
+private:
+ MapSource &_source;
+ MapListener &_listener;
+ struct Tag {};
+public:
+ MapSubscription(MapSource &source, MapListener &listener, Tag);
+
+ MapSubscription(const MapSubscription &) = delete;
+ MapSubscription(MapSubscription &&) = delete;
+ MapSubscription& operator=(const MapSubscription &) = delete;
+ MapSubscription& operator=(MapSubscription &&) = delete;
+
+ ~MapSubscription();
+
+ static std::unique_ptr<MapSubscription> subscribe(MapSource &source, MapListener &listener);
+};
+
+/**
+ * Interface for sources of incremental map updates.
+ **/
+struct MapSource {
+ virtual ~MapSource();
+private:
+ friend class MapSubscription;
+ virtual void registerListener(MapListener &listener) = 0;
+ virtual void unregisterListener(MapListener &listener) = 0;
+};
+
+} // namespace slobrok
+
diff --git a/slobrok/src/vespa/slobrok/server/mapping_monitor.cpp b/slobrok/src/vespa/slobrok/server/mapping_monitor.cpp
new file mode 100644
index 00000000000..cf632fa4c18
--- /dev/null
+++ b/slobrok/src/vespa/slobrok/server/mapping_monitor.cpp
@@ -0,0 +1,8 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "mapping_monitor.h"
+
+namespace slobrok {
+
+} // namespace slobrok
+
diff --git a/slobrok/src/vespa/slobrok/server/mapping_monitor.h b/slobrok/src/vespa/slobrok/server/mapping_monitor.h
new file mode 100644
index 00000000000..5f7affd53ac
--- /dev/null
+++ b/slobrok/src/vespa/slobrok/server/mapping_monitor.h
@@ -0,0 +1,28 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "service_mapping.h"
+#include <memory>
+#include <functional>
+
+namespace slobrok {
+
+struct MappingMonitorOwner {
+ virtual void up(const ServiceMapping& mapping) = 0;
+ virtual void down(const ServiceMapping& mapping) = 0;
+protected:
+ virtual ~MappingMonitorOwner() = default;
+};
+
+struct MappingMonitor {
+ using UP = std::unique_ptr<MappingMonitor>;
+ virtual void start(const ServiceMapping& mapping, bool hurry) = 0;
+ virtual void stop(const ServiceMapping& mapping) = 0;
+ virtual ~MappingMonitor() = default;
+};
+
+using MappingMonitorFactory = std::function<MappingMonitor::UP(MappingMonitorOwner &)>;
+
+} // namespace slobrok
+
diff --git a/slobrok/src/vespa/slobrok/server/metrics_producer.cpp b/slobrok/src/vespa/slobrok/server/metrics_producer.cpp
index 1b3f7fe5a82..52c7382fc6e 100644
--- a/slobrok/src/vespa/slobrok/server/metrics_producer.cpp
+++ b/slobrok/src/vespa/slobrok/server/metrics_producer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "metrics_producer.h"
#include <vespa/vespalib/data/slime/slime.h>
diff --git a/slobrok/src/vespa/slobrok/server/metrics_producer.h b/slobrok/src/vespa/slobrok/server/metrics_producer.h
index 460844a6d87..aade6f25c76 100644
--- a/slobrok/src/vespa/slobrok/server/metrics_producer.h
+++ b/slobrok/src/vespa/slobrok/server/metrics_producer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "rpchooks.h"
diff --git a/slobrok/src/vespa/slobrok/server/mock_map_listener.cpp b/slobrok/src/vespa/slobrok/server/mock_map_listener.cpp
new file mode 100644
index 00000000000..60cc1e6ee59
--- /dev/null
+++ b/slobrok/src/vespa/slobrok/server/mock_map_listener.cpp
@@ -0,0 +1,28 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "mock_map_listener.h"
+
+namespace slobrok {
+
+MockMapListener::MockMapListener() = default;
+MockMapListener::~MockMapListener() = default;
+
+void MockMapListener::add(const ServiceMapping &mapping) {
+ last_event = MockEvent::ADD;
+ last_add = mapping;
+}
+
+void MockMapListener::remove(const ServiceMapping &mapping) {
+ last_event = MockEvent::REMOVE;
+ last_remove = mapping;
+}
+
+void MockMapListener::update(const ServiceMapping &old_mapping,
+ const ServiceMapping &new_mapping)
+{
+ last_event = MockEvent::UPDATE;
+ last_remove = old_mapping;
+ last_add = new_mapping;
+}
+
+}
diff --git a/slobrok/src/vespa/slobrok/server/mock_map_listener.h b/slobrok/src/vespa/slobrok/server/mock_map_listener.h
new file mode 100644
index 00000000000..c55af85eb37
--- /dev/null
+++ b/slobrok/src/vespa/slobrok/server/mock_map_listener.h
@@ -0,0 +1,26 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "map_listener.h"
+
+namespace slobrok {
+
+enum class MockEvent { NONE, ADD, REMOVE, UPDATE };
+
+struct MockMapListener : public MapListener {
+ MockMapListener();
+ virtual ~MockMapListener();
+ void add(const ServiceMapping &mapping) override;
+ void remove(const ServiceMapping &mapping) override;
+ void update(const ServiceMapping &old_mapping,
+ const ServiceMapping &new_mapping) override;
+
+ MockEvent last_event = MockEvent::NONE;
+ ServiceMapping last_add = {{}, {}};
+ ServiceMapping last_remove = {{}, {}};
+
+ void clear() { last_event = MockEvent::NONE; }
+};
+
+}
diff --git a/slobrok/src/vespa/slobrok/server/monitor.cpp b/slobrok/src/vespa/slobrok/server/monitor.cpp
index 2c98e3d9bf9..50ca367a6ec 100644
--- a/slobrok/src/vespa/slobrok/server/monitor.cpp
+++ b/slobrok/src/vespa/slobrok/server/monitor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "monitor.h"
#include <vespa/fnet/frt/supervisor.h>
diff --git a/slobrok/src/vespa/slobrok/server/monitor.h b/slobrok/src/vespa/slobrok/server/monitor.h
index 70a9312395a..31d0757c5ae 100644
--- a/slobrok/src/vespa/slobrok/server/monitor.h
+++ b/slobrok/src/vespa/slobrok/server/monitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_monitored_server.h"
diff --git a/slobrok/src/vespa/slobrok/server/named_service.cpp b/slobrok/src/vespa/slobrok/server/named_service.cpp
index 9747bbbce52..0a3203b95d2 100644
--- a/slobrok/src/vespa/slobrok/server/named_service.cpp
+++ b/slobrok/src/vespa/slobrok/server/named_service.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "named_service.h"
diff --git a/slobrok/src/vespa/slobrok/server/named_service.h b/slobrok/src/vespa/slobrok/server/named_service.h
index 712e340400c..cb7addfeb0c 100644
--- a/slobrok/src/vespa/slobrok/server/named_service.h
+++ b/slobrok/src/vespa/slobrok/server/named_service.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <string>
diff --git a/slobrok/src/vespa/slobrok/server/ok_state.h b/slobrok/src/vespa/slobrok/server/ok_state.h
index 5604bc3a5ea..a8308a35ac4 100644
--- a/slobrok/src/vespa/slobrok/server/ok_state.h
+++ b/slobrok/src/vespa/slobrok/server/ok_state.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <string>
diff --git a/slobrok/src/vespa/slobrok/server/proxy_map_source.cpp b/slobrok/src/vespa/slobrok/server/proxy_map_source.cpp
new file mode 100644
index 00000000000..e5aa29ca4dc
--- /dev/null
+++ b/slobrok/src/vespa/slobrok/server/proxy_map_source.cpp
@@ -0,0 +1,44 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "proxy_map_source.h"
+#include <vespa/log/log.h>
+
+LOG_SETUP(".slobrok.server.proxy_map_source");
+
+namespace slobrok {
+
+ProxyMapSource::ProxyMapSource() = default;
+
+ProxyMapSource::~ProxyMapSource() = default;
+
+void ProxyMapSource::registerListener(MapListener &listener) {
+ _listeners.insert(&listener);
+}
+
+void ProxyMapSource::unregisterListener(MapListener &listener) {
+ _listeners.erase(&listener);
+}
+
+void ProxyMapSource::add(const ServiceMapping &mapping) {
+ for (auto * listener : _listeners) {
+ listener->add(mapping);
+ }
+}
+
+void ProxyMapSource::remove(const ServiceMapping &mapping) {
+ for (auto * listener : _listeners) {
+ listener->remove(mapping);
+ }
+}
+
+void ProxyMapSource::update(const ServiceMapping &old_mapping,
+ const ServiceMapping &new_mapping)
+{
+ LOG_ASSERT(old_mapping.name == new_mapping.name);
+ for (auto * listener : _listeners) {
+ listener->update(old_mapping, new_mapping);
+ }
+}
+
+} // namespace slobrok
+
diff --git a/slobrok/src/vespa/slobrok/server/proxy_map_source.h b/slobrok/src/vespa/slobrok/server/proxy_map_source.h
new file mode 100644
index 00000000000..449728b7531
--- /dev/null
+++ b/slobrok/src/vespa/slobrok/server/proxy_map_source.h
@@ -0,0 +1,28 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "map_source.h"
+#include <set>
+
+namespace slobrok {
+
+/**
+ * Proof-of-concept implementation of MapSource broadcasting.
+ **/
+class ProxyMapSource : public MapSource, public MapListener {
+ std::set<MapListener *> _listeners;
+ void registerListener(MapListener &listener) override;
+ void unregisterListener(MapListener &listener) override;
+public:
+ ProxyMapSource();
+ ~ProxyMapSource();
+
+ void add(const ServiceMapping &mapping) override;
+ void remove(const ServiceMapping &mapping) override;
+ void update(const ServiceMapping &old_mapping,
+ const ServiceMapping &new_mapping) override;
+};
+
+} // namespace slobrok
+
diff --git a/slobrok/src/vespa/slobrok/server/random.h b/slobrok/src/vespa/slobrok/server/random.h
index eb98c37f165..62ac87c6792 100644
--- a/slobrok/src/vespa/slobrok/server/random.h
+++ b/slobrok/src/vespa/slobrok/server/random.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdlib>
diff --git a/slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.cpp b/slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.cpp
index 5107b5844c8..f2ebc7ce78d 100644
--- a/slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.cpp
+++ b/slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "reconfigurable_stateserver.h"
#include <vespa/vespalib/util/exceptions.h>
diff --git a/slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.h b/slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.h
index 7a6ae282962..7ddda9d86ed 100644
--- a/slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.h
+++ b/slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config/helper/configfetcher.h>
#include <vespa/config/subscription/configuri.h>
diff --git a/slobrok/src/vespa/slobrok/server/remote_check.cpp b/slobrok/src/vespa/slobrok/server/remote_check.cpp
index 157b959dbfe..40a43a8946b 100644
--- a/slobrok/src/vespa/slobrok/server/remote_check.cpp
+++ b/slobrok/src/vespa/slobrok/server/remote_check.cpp
@@ -1,9 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "remote_check.h"
#include "named_service.h"
-#include "rpc_server_map.h"
-#include "rpc_server_manager.h"
#include "remote_slobrok.h"
#include "random.h"
#include "exchange_manager.h"
@@ -13,12 +11,9 @@ LOG_SETUP(".slobrok.server.remote_check");
namespace slobrok {
-RemoteCheck::RemoteCheck(FNET_Scheduler *sched,
- RpcServerMap& rpcsrvmap,
- RpcServerManager& rpcsrvman,
- ExchangeManager& exch)
+RemoteCheck::RemoteCheck(FNET_Scheduler *sched, ExchangeManager& exch)
: FNET_Task(sched),
- _rpcsrvmap(rpcsrvmap), _rpcsrvmanager(rpcsrvman), _exchanger(exch)
+ _exchanger(exch)
{
double seconds = randomIn(15.3, 27.9);
Schedule(seconds);
diff --git a/slobrok/src/vespa/slobrok/server/remote_check.h b/slobrok/src/vespa/slobrok/server/remote_check.h
index e0cf89c177d..3ea1db7b075 100644
--- a/slobrok/src/vespa/slobrok/server/remote_check.h
+++ b/slobrok/src/vespa/slobrok/server/remote_check.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/fnet/task.h>
@@ -20,17 +20,12 @@ class ExchangeManager;
class RemoteCheck : public FNET_Task
{
private:
- RpcServerMap &_rpcsrvmap;
- RpcServerManager &_rpcsrvmanager;
ExchangeManager &_exchanger;
RemoteCheck(const RemoteCheck &); // Not used
RemoteCheck &operator=(const RemoteCheck &); // Not used
public:
- explicit RemoteCheck(FNET_Scheduler *sched,
- RpcServerMap& rpcsrvmap,
- RpcServerManager& rpcsrvman,
- ExchangeManager& exchanger);
+ explicit RemoteCheck(FNET_Scheduler *sched, ExchangeManager& exchanger);
~RemoteCheck();
private:
void PerformTask() override;
diff --git a/slobrok/src/vespa/slobrok/server/remote_slobrok.cpp b/slobrok/src/vespa/slobrok/server/remote_slobrok.cpp
index 539a901fd9d..aa891ae0048 100644
--- a/slobrok/src/vespa/slobrok/server/remote_slobrok.cpp
+++ b/slobrok/src/vespa/slobrok/server/remote_slobrok.cpp
@@ -1,8 +1,6 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "remote_slobrok.h"
-#include "rpc_server_map.h"
-#include "rpc_server_manager.h"
#include "exchange_manager.h"
#include "sbenv.h"
#include <vespa/fnet/frt/supervisor.h>
@@ -18,197 +16,133 @@ namespace slobrok {
RemoteSlobrok::RemoteSlobrok(const std::string &name, const std::string &spec,
ExchangeManager &manager)
: _exchanger(manager),
- _rpcsrvmanager(manager._rpcsrvmanager),
_remote(nullptr),
+ _serviceMapMirror(),
_rpcserver(name, spec, *this),
_reconnecter(getSupervisor()->GetScheduler(), *this),
_failCnt(0),
+ _consensusSubscription(MapSubscription::subscribe(_serviceMapMirror, _exchanger.env().consensusMap())),
_remAddPeerReq(nullptr),
- _remListReq(nullptr),
- _remAddReq(nullptr),
- _remRemReq(nullptr),
- _pending()
+ _remFetchReq(nullptr)
{
_rpcserver.healthCheck();
}
-RemoteSlobrok::~RemoteSlobrok()
-{
+void RemoteSlobrok::shutdown() {
_reconnecter.disable();
- _pending.clear();
-
if (_remote != nullptr) {
_remote->SubRef();
_remote = nullptr;
}
+ if (_remFetchReq != nullptr) {
+ _remFetchReq->Abort();
+ }
if (_remAddPeerReq != nullptr) {
_remAddPeerReq->Abort();
}
- if (_remListReq != nullptr) {
- _remListReq->Abort();
- }
- if (_remAddReq != nullptr) {
- _remAddReq->Abort();
- }
- if (_remRemReq != nullptr) {
- _remRemReq->Abort();
- }
- // _rpcserver destructor called automatically
+ _serviceMapMirror.clear();
}
+RemoteSlobrok::~RemoteSlobrok() {
+ shutdown();
+ // _rpcserver destructor called automatically
+}
-void
-RemoteSlobrok::doPending()
-{
- if (_remAddReq != nullptr) return;
- if (_remRemReq != nullptr) return;
-
+void RemoteSlobrok::maybeStartFetch() {
+ if (_remFetchReq != nullptr) return;
if (_remote == nullptr) return;
+ _remFetchReq = getSupervisor()->AllocRPCRequest();
+ _remFetchReq->SetMethodName("slobrok.internal.fetchLocalView");
+ _remFetchReq->GetParams()->AddInt32(_serviceMapMirror.currentGeneration().getAsInt());
+ _remFetchReq->GetParams()->AddInt32(5000);
+ _remote->InvokeAsync(_remFetchReq, 15.0, this);
+}
- if ( ! _pending.empty() ) {
- std::unique_ptr<NamedService> todo = std::move(_pending.front());
- _pending.pop_front();
-
- const NamedService *rpcsrv = _exchanger._rpcsrvmap.lookup(todo->getName());
-
- if (rpcsrv == nullptr) {
- _remRemReq = getSupervisor()->AllocRPCRequest();
- _remRemReq->SetMethodName("slobrok.internal.doRemove");
- _remRemReq->GetParams()->AddString(_exchanger._env.mySpec().c_str());
- _remRemReq->GetParams()->AddString(todo->getName().c_str());
- _remRemReq->GetParams()->AddString(todo->getSpec().c_str());
- _remote->InvokeAsync(_remRemReq, 2.0, this);
+void RemoteSlobrok::handleFetchResult() {
+ LOG_ASSERT(_remFetchReq != nullptr);
+ bool success = true;
+ if (_remFetchReq->CheckReturnTypes("iSSSi")) {
+ FRT_Values &answer = *(_remFetchReq->GetReturn());
+
+ uint32_t diff_from = answer[0]._intval32;
+ uint32_t numRemove = answer[1]._string_array._len;
+ FRT_StringValue *r = answer[1]._string_array._pt;
+ uint32_t numNames = answer[2]._string_array._len;
+ FRT_StringValue *n = answer[2]._string_array._pt;
+ uint32_t numSpecs = answer[3]._string_array._len;
+ FRT_StringValue *s = answer[3]._string_array._pt;
+ uint32_t diff_to = answer[4]._intval32;
+
+ std::vector<vespalib::string> removed;
+ for (uint32_t idx = 0; idx < numRemove; ++idx) {
+ removed.emplace_back(r[idx]._str);
+ }
+ ServiceMappingList updated;
+ if (numNames == numSpecs) {
+ for (uint32_t idx = 0; idx < numNames; ++idx) {
+ updated.emplace_back(n[idx]._str, s[idx]._str);
+ }
+ } else {
+ diff_from = 0;
+ diff_to = 0;
+ success = false;
+ }
+ MapDiff diff(diff_from, std::move(removed), std::move(updated), diff_to);
+ if (diff_from == 0) {
+ _serviceMapMirror.clear();
+ _serviceMapMirror.apply(std::move(diff));
+ } else if (diff_from == _serviceMapMirror.currentGeneration().getAsInt()) {
+ _serviceMapMirror.apply(std::move(diff));
} else {
- _remAddReq = getSupervisor()->AllocRPCRequest();
- _remAddReq->SetMethodName("slobrok.internal.doAdd");
- _remAddReq->GetParams()->AddString(_exchanger._env.mySpec().c_str());
- _remAddReq->GetParams()->AddString(todo->getName().c_str());
- _remAddReq->GetParams()->AddString(rpcsrv->getSpec().c_str());
- _remote->InvokeAsync(_remAddReq, 2.0, this);
+ _serviceMapMirror.clear();
+ success = false;
}
- // XXX should save this and pick up on RequestDone()
+ } else {
+ if (_remFetchReq->GetErrorCode() == FRTE_RPC_NO_SUCH_METHOD) {
+ LOG(debug, "partner slobrok too old - not mirroring");
+ } else {
+ LOG(debug, "fetchLocalView() failed with partner %s: %s",
+ getName().c_str(), _remFetchReq->GetErrorMessage());
+ fail();
+ }
+ _serviceMapMirror.clear();
+ success = false;
}
-
-}
-
-void
-RemoteSlobrok::pushMine()
-{
- // all mine
- std::vector<const NamedService *> mine = _exchanger._rpcsrvmap.allManaged();
- while (mine.size() > 0) {
- const NamedService *now = mine.back();
- mine.pop_back();
- _pending.push_back(std::make_unique<NamedService>(now->getName(), now->getSpec()));
+ _remFetchReq->SubRef();
+ _remFetchReq = nullptr;
+ if (success) {
+ maybeStartFetch();
}
- doPending();
}
void
RemoteSlobrok::RequestDone(FRT_RPCRequest *req)
{
- FRT_Values &answer = *(req->GetReturn());
+ if (req == _remFetchReq) {
+ handleFetchResult();
+ return;
+ }
if (req == _remAddPeerReq) {
// handle response after asking remote slobrok to add me as a peer:
if (req->IsError()) {
FRT_Values &args = *req->GetParams();
- const char *myname = args[0]._string._str;
- const char *myspec = args[1]._string._str;
+ const char *myname = args[0]._string._str;
+ const char *myspec = args[1]._string._str;
LOG(info, "addPeer(%s, %s) on remote slobrok %s at %s: %s",
myname, myspec, getName().c_str(), getSpec().c_str(), req->GetErrorMessage());
req->SubRef();
_remAddPeerReq = nullptr;
- goto retrylater;
+ fail();
+ return;
}
req->SubRef();
_remAddPeerReq = nullptr;
- // next step is to ask the remote to send its list of managed names:
- LOG_ASSERT(_remListReq == nullptr);
- _remListReq = getSupervisor()->AllocRPCRequest();
- _remListReq->SetMethodName("slobrok.internal.listManagedRpcServers");
- if (_remote != nullptr) {
- _remote->InvokeAsync(_remListReq, 3.0, this);
- }
- // when _remListReq is returned, our managed list is added
- } else if (req == _remListReq) {
- // handle the list sent from the remote:
- if (req->IsError()
- || strcmp(answer.GetTypeString(), "SS") != 0)
- {
- LOG(error, "error listing remote slobrok %s at %s: %s",
- getName().c_str(), getSpec().c_str(), req->GetErrorMessage());
- req->SubRef();
- _remListReq = nullptr;
- goto retrylater;
- }
- uint32_t numNames = answer.GetValue(0)._string_array._len;
- uint32_t numSpecs = answer.GetValue(1)._string_array._len;
-
- if (numNames != numSpecs) {
- LOG(error, "inconsistent array lengths from %s at %s", getName().c_str(), getSpec().c_str());
- req->SubRef();
- _remListReq = nullptr;
- goto retrylater;
- }
- FRT_StringValue *names = answer.GetValue(0)._string_array._pt;
- FRT_StringValue *specs = answer.GetValue(1)._string_array._pt;
-
- for (uint32_t idx = 0; idx < numNames; idx++) {
- _rpcsrvmanager.addRemote(names[idx]._str, specs[idx]._str);
- }
- req->SubRef();
- _remListReq = nullptr;
-
- // next step is to push the ones I own:
- maybePushMine();
- } else if (req == _remAddReq) {
- // handle response after pushing some name that we managed:
- if (req->IsError() && (req->GetErrorCode() == FRTE_RPC_CONNECTION ||
- req->GetErrorCode() == FRTE_RPC_TIMEOUT))
- {
- LOG(error, "connection error adding to remote slobrok: %s", req->GetErrorMessage());
- req->SubRef();
- _remAddReq = nullptr;
- goto retrylater;
- }
- if (req->IsError()) {
- FRT_Values &args = *req->GetParams();
- const char *rpcsrvname = args[1]._string._str;
- const char *rpcsrvspec = args[2]._string._str;
- LOG(warning, "error adding [%s -> %s] to remote slobrok: %s",
- rpcsrvname, rpcsrvspec, req->GetErrorMessage());
- _rpcsrvmanager.removeLocal(rpcsrvname, rpcsrvspec);
- }
- req->SubRef();
- _remAddReq = nullptr;
- doPending();
- } else if (req == _remRemReq) {
- // handle response after pushing some remove we had pending:
- if (req->IsError() && (req->GetErrorCode() == FRTE_RPC_CONNECTION ||
- req->GetErrorCode() == FRTE_RPC_TIMEOUT))
- {
- LOG(error, "connection error adding to remote slobrok: %s", req->GetErrorMessage());
- req->SubRef();
- _remRemReq = nullptr;
- goto retrylater;
- }
- if (req->IsError()) {
- LOG(warning, "error removing on remote slobrok: %s", req->GetErrorMessage());
- }
- req->SubRef();
- _remRemReq = nullptr;
- doPending();
} else {
LOG(error, "got unknown request back in RequestDone()");
LOG_ASSERT(req == nullptr);
}
-
- return;
- retrylater:
- fail();
- return;
}
@@ -239,25 +173,6 @@ RemoteSlobrok::fail()
_reconnecter.scheduleTryConnect();
}
-
-void
-RemoteSlobrok::maybePushMine()
-{
- if (_remote != nullptr &&
- _remAddPeerReq == nullptr &&
- _remListReq == nullptr &&
- _remAddReq == nullptr &&
- _remRemReq == nullptr)
- {
- LOG(debug, "spamming remote at %s with my names", getName().c_str());
- pushMine();
- } else {
- LOG(debug, "not pushing mine, as we have: remote %p r.a.p.r=%p r.l.r=%p r.a.r=%p r.r.r=%p",
- _remote, _remAddPeerReq, _remListReq, _remAddReq, _remRemReq);
- }
-}
-
-
void
RemoteSlobrok::notifyOkRpcSrv(ManagedRpcServer *rpcsrv)
{
@@ -268,23 +183,21 @@ RemoteSlobrok::notifyOkRpcSrv(ManagedRpcServer *rpcsrv)
_reconnecter.disable();
if (_remote != nullptr) {
+ maybeStartFetch();
// the rest here should only be done on first notifyOk
return;
}
_remote = getSupervisor()->GetTarget(getSpec().c_str());
+ maybeStartFetch();
- // at this point, we will do (in sequence):
- // ask peer to connect to us too;
- // ask peer for its list of managed rpcservers, adding to our database
- // add our managed rpcserver on peer
+ // at this point, we will ask peer to connect to us too;
// any failure will cause disconnect and retry.
_remAddPeerReq = getSupervisor()->AllocRPCRequest();
_remAddPeerReq->SetMethodName("slobrok.admin.addPeer");
- _remAddPeerReq->GetParams()->AddString(_exchanger._env.mySpec().c_str());
- _remAddPeerReq->GetParams()->AddString(_exchanger._env.mySpec().c_str());
+ _remAddPeerReq->GetParams()->AddString(_exchanger.env().mySpec().c_str());
+ _remAddPeerReq->GetParams()->AddString(_exchanger.env().mySpec().c_str());
_remote->InvokeAsync(_remAddPeerReq, 3.0, this);
- // when _remAddPeerReq is returned, our managed list is added via doAdd()
}
void
@@ -296,7 +209,7 @@ RemoteSlobrok::tryConnect()
FRT_Supervisor *
RemoteSlobrok::getSupervisor()
{
- return _exchanger._env.getSupervisor();
+ return _exchanger.env().getSupervisor();
}
//-----------------------------------------------------------------------------
diff --git a/slobrok/src/vespa/slobrok/server/remote_slobrok.h b/slobrok/src/vespa/slobrok/server/remote_slobrok.h
index fa627bbd821..09a49d11d0e 100644
--- a/slobrok/src/vespa/slobrok/server/remote_slobrok.h
+++ b/slobrok/src/vespa/slobrok/server/remote_slobrok.h
@@ -1,17 +1,16 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "ok_state.h"
-#include "cmd.h"
#include "i_rpc_server_manager.h"
#include "managed_rpc_server.h"
+#include "service_map_mirror.h"
#include <deque>
namespace slobrok {
//-----------------------------------------------------------------------------
-class RpcServerManager;
class ExchangeManager;
//-----------------------------------------------------------------------------
@@ -42,20 +41,18 @@ private:
};
ExchangeManager &_exchanger;
- RpcServerManager &_rpcsrvmanager;
FRT_Target *_remote;
+ ServiceMapMirror _serviceMapMirror;
ManagedRpcServer _rpcserver;
Reconnecter _reconnecter;
int _failCnt;
+ std::unique_ptr<MapSubscription> _consensusSubscription;
+
FRT_RPCRequest *_remAddPeerReq;
- FRT_RPCRequest *_remListReq;
- FRT_RPCRequest *_remAddReq;
- FRT_RPCRequest *_remRemReq;
+ FRT_RPCRequest *_remFetchReq;
- std::deque<std::unique_ptr<NamedService>> _pending;
- void pushMine();
- void doPending();
+ void handleFetchResult();
public:
RemoteSlobrok(const RemoteSlobrok&) = delete;
@@ -66,10 +63,12 @@ public:
void fail();
bool isConnected() const { return (_remote != nullptr); }
void tryConnect();
- void maybePushMine();
+ void maybeStartFetch();
void invokeAsync(FRT_RPCRequest *req, double timeout, FRT_IRequestWait *rwaiter);
const std::string & getName() const { return _rpcserver.getName(); }
const std::string & getSpec() const { return _rpcserver.getSpec(); }
+ ServiceMapMirror &remoteMap() { return _serviceMapMirror; }
+ void shutdown();
// interfaces implemented:
void notifyFailedRpcSrv(ManagedRpcServer *rpcsrv, std::string errmsg) override;
diff --git a/slobrok/src/vespa/slobrok/server/request_completion_handler.cpp b/slobrok/src/vespa/slobrok/server/request_completion_handler.cpp
new file mode 100644
index 00000000000..cca43da6cb1
--- /dev/null
+++ b/slobrok/src/vespa/slobrok/server/request_completion_handler.cpp
@@ -0,0 +1,30 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "request_completion_handler.h"
+#include <vespa/fnet/frt/rpcrequest.h>
+
+namespace slobrok {
+
+RequestCompletionHandler::RequestCompletionHandler(FRT_RPCRequest *parent)
+ : _parentRequest(parent)
+{
+}
+
+RequestCompletionHandler::~RequestCompletionHandler() {
+ if (_parentRequest) {
+ _parentRequest->SetError(FRTE_RPC_METHOD_FAILED, "removed before completion");
+ _parentRequest->Return();
+ }
+}
+
+void RequestCompletionHandler::doneHandler(OkState result) {
+ if (auto req = _parentRequest) {
+ _parentRequest = nullptr;
+ if (result.failed()) {
+ req->SetError(FRTE_RPC_METHOD_FAILED, result.errorMsg.c_str());
+ }
+ req->Return();
+ }
+}
+
+}
diff --git a/slobrok/src/vespa/slobrok/server/request_completion_handler.h b/slobrok/src/vespa/slobrok/server/request_completion_handler.h
new file mode 100644
index 00000000000..944e8aae80a
--- /dev/null
+++ b/slobrok/src/vespa/slobrok/server/request_completion_handler.h
@@ -0,0 +1,28 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "ok_state.h"
+
+class FRT_RPCRequest;
+
+namespace slobrok {
+
+/**
+ * Interface used to signal the result of LocalRpcMonitorMap::addLocal()
+ **/
+struct CompletionHandler {
+ virtual void doneHandler(OkState result) = 0;
+ virtual ~CompletionHandler() {}
+};
+
+class RequestCompletionHandler : public CompletionHandler {
+private:
+ FRT_RPCRequest *_parentRequest;
+public:
+ RequestCompletionHandler(FRT_RPCRequest *parentRequest);
+ virtual ~RequestCompletionHandler();
+ void doneHandler(OkState result) override;
+};
+
+}
diff --git a/slobrok/src/vespa/slobrok/server/reserved_name.cpp b/slobrok/src/vespa/slobrok/server/reserved_name.cpp
index 1b36c86592e..559735835e4 100644
--- a/slobrok/src/vespa/slobrok/server/reserved_name.cpp
+++ b/slobrok/src/vespa/slobrok/server/reserved_name.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "reserved_name.h"
using std::chrono::duration_cast;
diff --git a/slobrok/src/vespa/slobrok/server/reserved_name.h b/slobrok/src/vespa/slobrok/server/reserved_name.h
index 0b2a4c392ee..febfed97c6d 100644
--- a/slobrok/src/vespa/slobrok/server/reserved_name.h
+++ b/slobrok/src/vespa/slobrok/server/reserved_name.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "named_service.h"
diff --git a/slobrok/src/vespa/slobrok/server/rpc_mapping_monitor.cpp b/slobrok/src/vespa/slobrok/server/rpc_mapping_monitor.cpp
new file mode 100644
index 00000000000..d9dcacf921f
--- /dev/null
+++ b/slobrok/src/vespa/slobrok/server/rpc_mapping_monitor.cpp
@@ -0,0 +1,72 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "rpc_mapping_monitor.h"
+
+#include <vespa/log/log.h>
+LOG_SETUP(".slobrok.server.rpc_mapping_monitor");
+
+namespace slobrok {
+
+void RpcMappingMonitor::DelayedTasks::PerformTask() {
+ std::vector<MUP> deleteAfterSwap;
+ std::swap(deleteAfterSwap, _deleteList);
+}
+
+RpcMappingMonitor::RpcMappingMonitor(FRT_Supervisor &orb, MappingMonitorOwner &owner)
+ : _orb(orb),
+ _delayedTasks(orb.GetScheduler()),
+ _map(),
+ _owner(owner)
+{}
+
+RpcMappingMonitor::~RpcMappingMonitor() = default;
+
+void RpcMappingMonitor::start(const ServiceMapping& mapping, bool hurry) {
+ LOG(spam, "start %s->%s", mapping.name.c_str(), mapping.spec.c_str());
+ LOG_ASSERT(_map.find(mapping) == _map.end());
+ auto up = std::make_unique<ManagedRpcServer>(mapping.name, mapping.spec, *this);
+ auto & managed = *up;
+ _map.emplace(mapping, std::move(up));
+ if (hurry) {
+ managed.healthCheck();
+ }
+}
+
+void RpcMappingMonitor::stop(const ServiceMapping& mapping) {
+ LOG(spam, "stop %s->%s", mapping.name.c_str(), mapping.spec.c_str());
+ auto iter = _map.find(mapping);
+ LOG_ASSERT(iter != _map.end());
+ _delayedTasks.deleteLater(std::move(iter->second));
+ _map.erase(iter);
+}
+
+
+bool RpcMappingMonitor::active(const ServiceMapping &mapping, ManagedRpcServer *rpcsrv) const {
+ auto iter = _map.find(mapping);
+ if (iter == _map.end()) {
+ return false;
+ }
+ return iter->second.get() == rpcsrv;
+}
+
+void RpcMappingMonitor::notifyFailedRpcSrv(ManagedRpcServer *rpcsrv, std::string errmsg) {
+ ServiceMapping mapping{rpcsrv->getName(), rpcsrv->getSpec()};
+ LOG(spam, "notifyFailed %s->%s", mapping.name.c_str(), mapping.spec.c_str());
+ if (active(mapping, rpcsrv)) {
+ LOG(debug, "service %s [at %s] failed: %s",
+ mapping.name.c_str(), mapping.spec.c_str(), errmsg.c_str());
+ _owner.down(mapping);
+ }
+}
+
+void RpcMappingMonitor::notifyOkRpcSrv(ManagedRpcServer *rpcsrv) {
+ ServiceMapping mapping{rpcsrv->getName(), rpcsrv->getSpec()};
+ LOG(spam, "notifyOk %s->%s", mapping.name.c_str(), mapping.spec.c_str());
+ if (active(mapping, rpcsrv)) {
+ LOG(debug, "service %s [at %s] up ok -> target",
+ mapping.name.c_str(), mapping.spec.c_str());
+ _owner.up(mapping);
+ }
+}
+
+} // namespace slobrok
diff --git a/slobrok/src/vespa/slobrok/server/rpc_mapping_monitor.h b/slobrok/src/vespa/slobrok/server/rpc_mapping_monitor.h
new file mode 100644
index 00000000000..965d9946e25
--- /dev/null
+++ b/slobrok/src/vespa/slobrok/server/rpc_mapping_monitor.h
@@ -0,0 +1,61 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "mapping_monitor.h"
+#include "i_rpc_server_manager.h"
+#include "managed_rpc_server.h"
+
+#include <vespa/fnet/frt/supervisor.h>
+#include <vespa/fnet/task.h>
+
+#include <vector>
+#include <memory>
+#include <map>
+
+namespace slobrok {
+
+class RpcMappingMonitor : public MappingMonitor,
+ public IRpcServerManager
+{
+private:
+ using MUP = std::unique_ptr<ManagedRpcServer>;
+
+ using Map = std::map<ServiceMapping, MUP>;
+
+ class DelayedTasks : public FNET_Task {
+ std::vector<MUP> _deleteList;
+ public:
+ void deleteLater(MUP rpcsrv) {
+ _deleteList.emplace_back(std::move(rpcsrv));
+ ScheduleNow();
+ }
+ void PerformTask() override;
+ DelayedTasks(FNET_Scheduler *scheduler)
+ : FNET_Task(scheduler),
+ _deleteList()
+ {}
+ ~DelayedTasks() { Kill(); }
+ };
+
+ FRT_Supervisor& _orb;
+ DelayedTasks _delayedTasks;
+ Map _map;
+ MappingMonitorOwner &_owner;
+
+ bool active(const ServiceMapping &mapping, ManagedRpcServer *rpcsrv) const;
+
+public:
+ RpcMappingMonitor(FRT_Supervisor &orb, MappingMonitorOwner &owner);
+ ~RpcMappingMonitor();
+
+ void start(const ServiceMapping& mapping, bool hurry) override;
+ void stop(const ServiceMapping& mapping) override;
+
+ void notifyFailedRpcSrv(ManagedRpcServer *rpcsrv, std::string errmsg) override;
+ void notifyOkRpcSrv(ManagedRpcServer *rpcsrv) override;
+ FRT_Supervisor *getSupervisor() override { return &_orb; }
+};
+
+} // namespace slobrok
+
diff --git a/slobrok/src/vespa/slobrok/server/rpc_server_manager.cpp b/slobrok/src/vespa/slobrok/server/rpc_server_manager.cpp
deleted file mode 100644
index dfcdc0ef9d1..00000000000
--- a/slobrok/src/vespa/slobrok/server/rpc_server_manager.cpp
+++ /dev/null
@@ -1,343 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include "rpc_server_manager.h"
-#include "reserved_name.h"
-#include "rpc_server_map.h"
-#include "remote_slobrok.h"
-#include "sbenv.h"
-#include <vespa/vespalib/util/stringfmt.h>
-#include <sstream>
-
-#include <vespa/log/log.h>
-LOG_SETUP(".slobrok.server.rpc_server_manager");
-
-using vespalib::make_string_short::fmt;
-
-namespace slobrok {
-
-RpcServerManager::RpcServerManager(SBEnv &sbenv)
- : FNET_Task(sbenv.getScheduler()),
- _rpcsrvmap(sbenv._rpcsrvmap),
- _exchanger(sbenv._exchanger),
- _env(sbenv),
- _addManageds(),
- _deleteList()
-{
-}
-
-static OkState
-validateName(const std::string & rpcsrvname)
-{
- const char *p = rpcsrvname.c_str();
- while (*p != '\0') {
- // important: disallow '*'
- if (strchr("+,-./:=@[]_{}~<>"
- "0123456789"
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "abcdefghijklmnopqrstuvwxyz", *p) == nullptr)
- {
- std::ostringstream tmp;
- tmp << "Illegal character '" << *p << "' (";
- tmp << (int)(*p)<< ") in rpcserver name";
- return OkState(13, tmp.str().c_str());
- }
- ++p;
- }
- if (p == rpcsrvname) {
- return OkState(13, "empty rpcserver name");
- }
- return OkState();
-}
-
-
-OkState
-RpcServerManager::checkPartner(const std::string & remslobrok)
-{
- if (remslobrok == _env.mySpec()) {
- return OkState(13, "remote slobrok using my rpcserver name");
- }
- const RemoteSlobrok *partner = _exchanger.lookupPartner(remslobrok);
- if (partner == nullptr) {
- return OkState(13, "remote slobrok not a partner");
- }
- return OkState();
-}
-
-OkState
-RpcServerManager::addRemReservation(const std::string & remslobrok, const std::string & name, const std::string &spec)
-{
- OkState state = checkPartner(remslobrok);
- if (state.failed()) return state;
-
- OkState valid = validateName(name);
- if (valid.failed()) return valid;
-
- const NamedService *old = _rpcsrvmap.lookupManaged(name);
- if (old != nullptr) {
- if (old->getSpec() == spec) {
- // was alright already
- return OkState(0, "already registered");
- }
- LOG(warning, "remote %s tried to register [%s -> %s] but we already have [%s -> %s] registered!",
- remslobrok.c_str(), name.c_str(), spec.c_str(), old->getName().c_str(), old->getSpec().c_str());
- return OkState(FRTE_RPC_METHOD_FAILED, "already managed by me");
- }
- if (_rpcsrvmap.conflictingReservation(name, spec)) {
- return OkState(FRTE_RPC_METHOD_FAILED, "registration for name already in progress");
- }
- _rpcsrvmap.addReservation(std::make_unique<ReservedName>(name, spec, false));
- return OkState(0, "done");
-}
-
-
-OkState
-RpcServerManager::addPeer(const std::string & remsbname, const std::string &remsbspec)
-{
- if (remsbname == _env.mySpec()) {
- return OkState(13, "cannot add remote slobrok with my rpcserver name");
- }
- return _exchanger.addPartner(remsbname, remsbspec);
-}
-
-
-OkState
-RpcServerManager::removePeer(const std::string & remsbname, const std::string & remsbspec)
-{
- if (remsbname == _env.mySpec()) {
- return OkState(13, "cannot remove my own rpcserver name");
- }
- const RemoteSlobrok *partner = _exchanger.lookupPartner(remsbname);
- if (partner == nullptr) {
- return OkState(0, "remote slobrok not a partner");
- }
- if (partner->getSpec() != remsbspec) {
- return OkState(13, "peer registered with different spec");
- }
- _exchanger.removePartner(remsbname);
- return OkState(0, "done");
-}
-
-
-OkState
-RpcServerManager::addMyReservation(const std::string & name, const std::string & spec)
-{
- OkState valid = validateName(name);
- if (valid.failed()) return valid;
-
- const NamedService *old = _rpcsrvmap.lookupManaged(name);
- if (old != nullptr) {
- if (old->getSpec() == spec) {
- // was alright already
- return OkState(0, "already registered");
- } else {
- return OkState(FRTE_RPC_METHOD_FAILED, fmt("name %s registered (to %s), cannot register %s",
- name.c_str(), old->getSpec().c_str(), spec.c_str()));
- }
- }
-
- // check if we already are in the progress of adding this
- if (_rpcsrvmap.conflictingReservation(name, spec)) {
- const ReservedName * rsv = _rpcsrvmap.getReservation(name);
- LOG(warning, "conflicting registrations: wanted [%s -> %s] but [%s -> %s] already reserved",
- name.c_str(), spec.c_str(), rsv->getName().c_str(), rsv->getSpec().c_str());
- return OkState(FRTE_RPC_METHOD_FAILED,
- "registration for name already in progress with a different spec");
- }
- _rpcsrvmap.removeReservation(name);
- _rpcsrvmap.addReservation(std::make_unique<ReservedName>(name, spec, true));
- return OkState(0, "done");
-}
-
-
-OkState
-RpcServerManager::addRemote(const std::string & name, const std::string &spec)
-{
- OkState valid = validateName(name);
- if (valid.failed()) return valid;
-
- if (alreadyManaged(name, spec)) {
- return OkState(0, "already correct");
- }
- const NamedService *old = _rpcsrvmap.lookup(name);
- if (old != nullptr) {
- if (old->getSpec() != spec) {
- LOG(warning, "collision on remote add: name %s registered to %s locally, "
- "but another location broker wants it registered to %s",
- name.c_str(), old->getSpec().c_str(), spec.c_str());
- removeRemote(name, old->getSpec());
- return OkState(13, "registered, with different spec");
- }
- // was alright already, remove reservation
- _rpcsrvmap.removeReservation(name);
- return OkState(0, "already correct");
- }
- _rpcsrvmap.removeReservation(name);
- auto rpcsrv = std::make_unique<ManagedRpcServer>(name, spec, *this);
- _rpcsrvmap.addNew(std::move(rpcsrv));
- return OkState(0, "done");
-}
-
-OkState
-RpcServerManager::remove(ManagedRpcServer *rpcsrv)
-{
- const NamedService *td = _rpcsrvmap.lookup(rpcsrv->getName());
- if (td == rpcsrv) {
- return removeLocal(rpcsrv->getName(), rpcsrv->getSpec());
- } else {
- return OkState(1, "not currently registered");
- }
-}
-
-
-OkState
-RpcServerManager::removeRemote(const std::string &name, const std::string &spec)
-{
- const NamedService *old = _rpcsrvmap.lookup(name);
- if (old == nullptr) {
- // was alright already, remove any reservation too
- _rpcsrvmap.removeReservation(name);
- return OkState(0, "already done");
- }
- if (old->getSpec() != spec) {
- return OkState(1, "name registered, but with different spec");
- }
- std::unique_ptr<NamedService> td = _rpcsrvmap.remove(name);
- LOG_ASSERT(td.get() == old);
- return OkState(0, "done");
-}
-
-OkState
-RpcServerManager::removeLocal(const std::string & name, const std::string &spec)
-{
- const NamedService *td = _rpcsrvmap.lookup(name);
- if (td == nullptr) {
- // already removed, nop
- return OkState();
- }
-
- const RemoteSlobrok *partner = _exchanger.lookupPartner(name);
- if (partner != nullptr) {
- return OkState(13, "cannot unregister partner slobrok");
- }
-
- const ManagedRpcServer *rpcsrv = _rpcsrvmap.lookupManaged(name);
- if (rpcsrv == nullptr) {
- return OkState(13, "not a local rpcserver");
- }
-
- if (rpcsrv->getSpec() != spec) {
- // the client can probably ignore this "error"
- // or log it on level INFO?
- return OkState(1, fmt("name registered, but with different spec (%s)", rpcsrv->getSpec().c_str()));
- }
- auto tdUP = _rpcsrvmap.remove(name);
- LOG_ASSERT(tdUP.get() == rpcsrv);
- _exchanger.forwardRemove(name, spec);
- return OkState();
-}
-
-
-void
-RpcServerManager::addManaged(ScriptCommand rdc)
-{
- const std::string &name = rdc.name();
- const std::string &spec = rdc.spec();
- auto newRpcServer = std::make_unique<ManagedRpcServer>(name, spec, *this);
- ManagedRpcServer & rpcsrv = *newRpcServer;
- _rpcsrvmap.addNew(std::move(newRpcServer));
- for (size_t i = 0; i < _addManageds.size(); i++) {
- if (_addManageds[i].rpcsrv == nullptr) {
- _addManageds[i].rpcsrv = &rpcsrv;
- _addManageds[i].handler = std::move(rdc);
- rpcsrv.healthCheck();
- return;
- }
- }
- _addManageds.emplace_back(&rpcsrv, std::move(rdc));
- rpcsrv.healthCheck();
- return;
-}
-
-
-
-bool
-RpcServerManager::alreadyManaged(const std::string &name, const std::string &spec)
-{
- const ManagedRpcServer *rpcsrv = _rpcsrvmap.lookupManaged(name);
- if (rpcsrv != nullptr) {
- if (rpcsrv->getSpec() == spec) {
- return true;
- }
- }
- return false;
-}
-
-
-RpcServerManager::~RpcServerManager()
-{
- Kill();
- PerformTask();
-}
-
-
-void
-RpcServerManager::PerformTask()
-{
- std::vector<std::unique_ptr<NamedService>> deleteAfterSwap;
- std::swap(deleteAfterSwap, _deleteList);
-}
-
-
-void
-RpcServerManager::notifyFailedRpcSrv(ManagedRpcServer *rpcsrv, std::string errmsg)
-{
- _env.countFailedHeartbeat();
- const auto &name = rpcsrv->getName();
- const auto &spec = rpcsrv->getSpec();
- const char *namep = name.c_str();
- const char *specp = spec.c_str();
- std::unique_ptr<NamedService> toDelete;
- const NamedService *old = _rpcsrvmap.lookup(rpcsrv->getName());
- if (old == rpcsrv) {
- toDelete = _rpcsrvmap.remove(name);
- LOG_ASSERT(toDelete.get() == rpcsrv);
- LOG(info, "managed server %s at %s failed: %s", namep, specp, errmsg.c_str());
- } else {
- // only managed servers should exist, this is bad:
- LOG(error, "unmanaged server %s at %s failed: %s", namep, specp, errmsg.c_str());
- }
- _exchanger.forwardRemove(name, spec);
- for (size_t i = 0; i < _addManageds.size(); ++i) {
- if (_addManageds[i].rpcsrv == rpcsrv) {
- LOG(warning, "rpcserver %s at %s failed while trying to register", namep, specp);
- _addManageds[i].rpcsrv = nullptr;
- _addManageds[i].handler.doneHandler(OkState(13, "failed check using listNames callback"));
- }
- }
- if (toDelete) {
- _deleteList.push_back(std::move(toDelete));
- ScheduleNow();
- }
-}
-
-void
-RpcServerManager::notifyOkRpcSrv(ManagedRpcServer *rpcsrv)
-{
- for (size_t i = 0; i < _addManageds.size(); ++i) {
- if (_addManageds[i].rpcsrv == rpcsrv) {
- _addManageds[i].handler.doneHandler(OkState());
- _addManageds[i].rpcsrv = 0;
- }
- }
- // XXX check if pending wantAdd / doAdd / registerRpcServer
-}
-
-FRT_Supervisor *
-RpcServerManager::getSupervisor()
-{
- return _env.getSupervisor();
-}
-
-//-----------------------------------------------------------------------------
-
-} // namespace slobrok
diff --git a/slobrok/src/vespa/slobrok/server/rpc_server_manager.h b/slobrok/src/vespa/slobrok/server/rpc_server_manager.h
deleted file mode 100644
index 9c72fe91f18..00000000000
--- a/slobrok/src/vespa/slobrok/server/rpc_server_manager.h
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#pragma once
-
-#include "ok_state.h"
-#include "cmd.h"
-#include "i_rpc_server_manager.h"
-#include "named_service.h"
-#include <vespa/fnet/task.h>
-#include <vector>
-#include <memory>
-
-namespace slobrok {
-
-class NamedService;
-class ManagedRpcServer;
-class RemoteSlobrok;
-class ReservedName;
-class RpcServerMap;
-class ExchangeManager;
-class SBEnv;
-
-/**
- * @class RpcServerManager
- * @brief Main "business logic" for the service location broker.
- *
- * Used by all external and some internal operations.
- * This class actually implements operations,
- * checking for validity, manipulating internal datastructures,
- * and initiating synchronization operations to peer slobroks.
- **/
-class RpcServerManager : public FNET_Task,
- public IRpcServerManager
-{
-private:
- RpcServerMap &_rpcsrvmap;
- ExchangeManager &_exchanger;
- SBEnv &_env;
-
- struct MRSandRRSC {
- ManagedRpcServer *rpcsrv;
- ScriptCommand handler;
- MRSandRRSC(ManagedRpcServer *d, ScriptCommand h)
- : rpcsrv(d), handler(std::move(h)) {}
- };
- std::vector<MRSandRRSC> _addManageds;
- std::vector<std::unique_ptr<NamedService>> _deleteList;
-public:
- OkState checkPartner(const std::string & remslobrok);
-
- OkState addPeer(const std::string & remsbname, const std::string & remsbspec);
- OkState removePeer(const std::string & remsbname, const std::string & remsbspec);
- OkState addRemote(const std::string & name, const std::string & spec);
-
- OkState addRemReservation(const std::string & remslobrok, const std::string & name, const std::string & spec);
- OkState addMyReservation(const std::string & name, const std::string & spec);
-
- bool alreadyManaged(const std::string & name, const std::string & spec);
- void addManaged(ScriptCommand rdc);
-
- OkState remove(ManagedRpcServer *rpcsrv);
-
- OkState removeLocal(const std::string & name, const std::string & spec);
- OkState removeRemote(const std::string & name, const std::string & spec);
-
- RpcServerManager(const RpcServerManager &) = delete;
- RpcServerManager &operator=(const RpcServerManager &) = delete;
- RpcServerManager(SBEnv &sbenv);
- ~RpcServerManager();
-
- void PerformTask() override;
- void notifyFailedRpcSrv(ManagedRpcServer *rpcsrv, std::string errmsg) override;
- void notifyOkRpcSrv(ManagedRpcServer *rpcsrv) override;
- FRT_Supervisor *getSupervisor() override;
-};
-
-//-----------------------------------------------------------------------------
-
-} // namespace slobrok
-
diff --git a/slobrok/src/vespa/slobrok/server/rpc_server_map.cpp b/slobrok/src/vespa/slobrok/server/rpc_server_map.cpp
deleted file mode 100644
index 5f26608c294..00000000000
--- a/slobrok/src/vespa/slobrok/server/rpc_server_map.cpp
+++ /dev/null
@@ -1,171 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include "rpc_server_map.h"
-#include "reserved_name.h"
-#include "rpc_server_manager.h"
-#include "sbenv.h"
-
-#include <vespa/log/log.h>
-LOG_SETUP(".slobrok.server.rpc_server_map");
-
-namespace slobrok {
-
-//-----------------------------------------------------------------------------
-
-ManagedRpcServer *
-RpcServerMap::lookupManaged(const std::string & name) const {
- auto found = _myrpcsrv_map.find(name);
- return (found == _myrpcsrv_map.end()) ? nullptr : found->second.get();
-}
-
-const NamedService *
-RpcServerMap::lookup(const std::string & name) const
-{
- return lookupManaged(name);
-}
-
-std::unique_ptr<NamedService>
-RpcServerMap::remove(const std::string & name)
-{
- _visible_map.remove(name);
- auto service = std::move(_myrpcsrv_map[name]);
- _myrpcsrv_map.erase(name);
- return service;
-}
-
-std::vector<const NamedService *>
-RpcServerMap::lookupPattern(const char *pattern) const
-{
- std::vector<const NamedService *> retval;
- for (const auto & entry : _myrpcsrv_map) {
- if (match(entry.first.c_str(), pattern)) {
- retval.push_back(entry.second.get());
- }
- }
- return retval;
-}
-
-
-std::vector<const NamedService *>
-RpcServerMap::allManaged() const
-{
- std::vector<const NamedService *> retval;
- // get list of all names in myrpcsrv_map
- for (const auto & entry : _myrpcsrv_map) {
- retval.push_back(entry.second.get());
- }
- return retval;
-}
-
-
-void
-RpcServerMap::add(NamedService *rpcsrv)
-{
- const std::string &name = rpcsrv->getName();
-
- LOG_ASSERT(rpcsrv != nullptr);
- LOG_ASSERT(_myrpcsrv_map.find(name) == _myrpcsrv_map.end());
-
- removeReservation(name);
- _visible_map.update(ServiceMapping{name, rpcsrv->getSpec()});
-}
-
-void
-RpcServerMap::addNew(std::unique_ptr<ManagedRpcServer> rpcsrv)
-{
- const std::string &name = rpcsrv->getName();
-
- auto oldman = std::move(_myrpcsrv_map[name]);
- _myrpcsrv_map.erase(name);
-
- if (oldman) {
- const ReservedName *oldres = _reservations[name].get();
- _visible_map.remove(name);
-
- const std::string &spec = rpcsrv->getSpec();
- const std::string &oldname = oldman->getName();
- const std::string &oldspec = oldman->getSpec();
- if (spec != oldspec) {
- LOG(warning, "internal state problem: adding [%s at %s] but already had [%s at %s]",
- name.c_str(), spec.c_str(), oldname.c_str(), oldspec.c_str());
- if (oldres != nullptr) {
- const std::string &n = oldres->getName();
- const std::string &s = oldres->getSpec();
- LOG(warning, "old reservation: [%s at %s]", n.c_str(), s.c_str());
- }
- }
- }
- add(rpcsrv.get());
- _myrpcsrv_map[name] = std::move(rpcsrv);
-}
-
-
-void
-RpcServerMap::addReservation(std::unique_ptr<ReservedName> rpcsrv)
-{
- LOG_ASSERT(rpcsrv != nullptr);
- LOG_ASSERT(_myrpcsrv_map.find(rpcsrv->getName()) == _myrpcsrv_map.end());
-
- // must not be reserved for something else already
- // this should have been checked already, so assert
- LOG_ASSERT(! conflictingReservation(rpcsrv->getName(), rpcsrv->getSpec()));
- auto old = std::move(_reservations[rpcsrv->getName()]);
- LOG_ASSERT(!old
- || old->getSpec() == rpcsrv->getSpec()
- || ! old->stillReserved());
- _reservations[rpcsrv->getName()] = std::move(rpcsrv);
-}
-
-
-/** check if there is a (different) registration for this name in progress */
-bool
-RpcServerMap::conflictingReservation(const std::string &name, const std::string &spec)
-{
- const ReservedName *resv = _reservations[name].get();
- return (resv != nullptr &&
- resv->stillReserved() &&
- resv->getSpec() != spec);
-}
-
-const ReservedName *
-RpcServerMap::getReservation(const std::string &name) const {
- auto found = _reservations.find(name);
- return (found == _reservations.end()) ? nullptr : found->second.get();
-}
-
-RpcServerMap::RpcServerMap()
- : _myrpcsrv_map(),
- _reservations()
-{
-}
-
-RpcServerMap::~RpcServerMap() = default;
-
-bool
-RpcServerMap::match(const char *name, const char *pattern)
-{
- LOG_ASSERT(name != nullptr);
- LOG_ASSERT(pattern != nullptr);
- while (*pattern != '\0') {
- if (*name == *pattern) {
- ++name;
- ++pattern;
- } else if (*pattern == '*') {
- ++pattern;
- while (*name != '/' && *name != '\0') {
- ++name;
- }
- } else {
- return false;
- }
- }
- return (*name == *pattern);
-}
-
-void
-RpcServerMap::removeReservation(const std::string & name)
-{
- _reservations.erase(name);
-}
-
-} // namespace slobrok
diff --git a/slobrok/src/vespa/slobrok/server/rpc_server_map.h b/slobrok/src/vespa/slobrok/server/rpc_server_map.h
deleted file mode 100644
index 7b6c068b791..00000000000
--- a/slobrok/src/vespa/slobrok/server/rpc_server_map.h
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#pragma once
-
-#include "named_service.h"
-#include "service_map_history.h"
-
-#include <memory>
-#include <string>
-#include <unordered_map>
-
-namespace slobrok {
-
-class NamedService;
-class ManagedRpcServer;
-class ReservedName;
-
-/**
- * @class RpcServerMap
- * @brief Contains the actual collections of NamedService (and subclasses)
- * objects known by this location broker.
- *
- * Works as a collection of NamedService objects, but actually contains
- * three seperate hashmaps.
- **/
-
-class RpcServerMap
-{
-private:
- using ManagedRpcServerMap = std::unordered_map<std::string, std::unique_ptr<ManagedRpcServer>>;
- using ReservedNameMap = std::unordered_map<std::string, std::unique_ptr<ReservedName>>;
- ServiceMapHistory _visible_map;
- ManagedRpcServerMap _myrpcsrv_map;
- ReservedNameMap _reservations;
-
- static bool match(const char *name, const char *pattern);
-
- void add(NamedService *rpcsrv);
-
-public:
- typedef std::vector<const NamedService *> RpcSrvlist;
-
- ServiceMapHistory& localView() { return _visible_map; }
- ServiceMapHistory& visibleMap() { return _visible_map; }
-
- ManagedRpcServer *lookupManaged(const std::string & name) const;
-
- const NamedService * lookup(const std::string & name) const;
- RpcSrvlist lookupPattern(const char *pattern) const;
- RpcSrvlist allManaged() const;
-
- void addNew(std::unique_ptr<ManagedRpcServer> rpcsrv);
- std::unique_ptr<NamedService> remove(const std::string & name);
-
- void addReservation(std::unique_ptr<ReservedName>rpcsrv);
- bool conflictingReservation(const std::string & name, const std::string &spec);
-
- const ReservedName *getReservation(const std::string & name) const;
- void removeReservation(const std::string & name);
-
- RpcServerMap(const RpcServerMap &) = delete;
- RpcServerMap &operator=(const RpcServerMap &) = delete;
- RpcServerMap();
- ~RpcServerMap();
-};
-
-//-----------------------------------------------------------------------------
-
-} // namespace slobrok
-
diff --git a/slobrok/src/vespa/slobrok/server/rpchooks.cpp b/slobrok/src/vespa/slobrok/server/rpchooks.cpp
index 51cd3d65857..9fca21f0456 100644
--- a/slobrok/src/vespa/slobrok/server/rpchooks.cpp
+++ b/slobrok/src/vespa/slobrok/server/rpchooks.cpp
@@ -1,10 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rpchooks.h"
#include "ok_state.h"
#include "named_service.h"
-#include "rpc_server_map.h"
-#include "rpc_server_manager.h"
+#include "request_completion_handler.h"
#include "remote_slobrok.h"
#include "sbenv.h"
#include "rpcmirror.h"
@@ -37,12 +36,33 @@ public:
~MetricsReport() override { Kill(); }
};
+bool match(const char *name, const char *pattern) {
+ LOG_ASSERT(name != nullptr);
+ LOG_ASSERT(pattern != nullptr);
+ while (*pattern != '\0') {
+ if (*name == *pattern) {
+ ++name;
+ ++pattern;
+ } else if (*pattern == '*') {
+ ++pattern;
+ while (*name != '/' && *name != '\0') {
+ ++name;
+ }
+ } else {
+ return false;
+ }
+ }
+ return (*name == *pattern);
+}
+
} // namespace <unnamed>
//-----------------------------------------------------------------------------
-RPCHooks::RPCHooks(SBEnv &env, RpcServerMap& rpcsrvmap, RpcServerManager& rpcsrvman)
- : _env(env), _rpcsrvmap(rpcsrvmap), _rpcsrvmanager(rpcsrvman),
+RPCHooks::RPCHooks(SBEnv &env)
+ : _env(env),
+ _globalHistory(env.globalHistory()),
+ _localHistory(env.localHistory()),
_cnts(Metrics::zero()),
_m_reporter()
{
@@ -51,9 +71,7 @@ RPCHooks::RPCHooks(SBEnv &env, RpcServerMap& rpcsrvmap, RpcServerManager& rpcsrv
RPCHooks::~RPCHooks() = default;
-void
-RPCHooks::reportMetrics()
-{
+void RPCHooks::reportMetrics() {
EV_COUNT("heartbeats_failed", _cnts.heartBeatFails);
EV_COUNT("register_reqs", _cnts.registerReqs);
EV_COUNT("mirror_reqs", _cnts.mirrorReqs);
@@ -64,10 +82,7 @@ RPCHooks::reportMetrics()
EV_COUNT("other_reqs", _cnts.otherReqs);
}
-
-void
-RPCHooks::initRPC(FRT_Supervisor *supervisor)
-{
+void RPCHooks::initRPC(FRT_Supervisor *supervisor) {
_m_reporter = std::make_unique<MetricsReport>(supervisor, *this);
FRT_ReflectionBuilder rb(supervisor);
@@ -212,10 +227,7 @@ RPCHooks::initRPC(FRT_Supervisor *supervisor)
//-------------------------------------------------------------------------
}
-
-void
-RPCHooks::rpc_listNamesServed(FRT_RPCRequest *req)
-{
+void RPCHooks::rpc_listNamesServed(FRT_RPCRequest *req) {
FRT_Values &dst = *req->GetReturn();
FRT_StringValue *names = dst.AddStringArray(1);
dst.SetString(names, _env.mySpec().c_str());
@@ -223,58 +235,37 @@ RPCHooks::rpc_listNamesServed(FRT_RPCRequest *req)
return;
}
-void
-RPCHooks::rpc_registerRpcServer(FRT_RPCRequest *req)
-{
+void RPCHooks::rpc_registerRpcServer(FRT_RPCRequest *req) {
FRT_Values &args = *req->GetParams();
const char *dName = args[0]._string._str;
const char *dSpec = args[1]._string._str;
-
LOG(debug, "RPC: invoked registerRpcServer(%s,%s)", dName, dSpec);
_cnts.registerReqs++;
-
- // is this already OK?
- if (_rpcsrvmanager.alreadyManaged(dName, dSpec)) {
- LOG(debug, "registerRpcServer(%s,%s) OK, already managed",
- dName, dSpec);
- return;
- }
+ ServiceMapping mapping{dName, dSpec};
// can we say now, that this will fail?
- OkState state = _rpcsrvmanager.addMyReservation(dName, dSpec);
- if (state.failed()) {
- req->SetError(FRTE_RPC_METHOD_FAILED, state.errorMsg.c_str());
- LOG(info, "cannot register %s at %s: %s", dName, dSpec, state.errorMsg.c_str());
+ if (_env.consensusMap().wouldConflict(mapping)) {
+ req->SetError(FRTE_RPC_METHOD_FAILED, "conflict detected");
+ LOG(info, "cannot register %s at %s: conflict", dName, dSpec);
return;
}
- // need to actually setup management and decide result later
req->Detach();
- ScriptCommand completer
- = ScriptCommand::makeRegRpcSrvCmd(_env, dName, dSpec, req);
- completer.doRequest();
+ _env.localMonitorMap().addLocal(mapping, std::make_unique<RequestCompletionHandler>(req));
+ return;
}
-void
-RPCHooks::rpc_unregisterRpcServer(FRT_RPCRequest *req)
-{
+void RPCHooks::rpc_unregisterRpcServer(FRT_RPCRequest *req) {
FRT_Values &args = *req->GetParams();
const char *dName = args[0]._string._str;
const char *dSpec = args[1]._string._str;
- OkState state = _rpcsrvmanager.removeLocal(dName, dSpec);
- if (state.failed()) {
- req->SetError(FRTE_RPC_METHOD_FAILED, state.errorMsg.c_str());
- }
- LOG(debug, "unregisterRpcServer(%s,%s) %s: %s",
- dName, dSpec,
- state.ok() ? "OK" : "failed",
- state.errorMsg.c_str());
+ ServiceMapping mapping{dName, dSpec};
+ _env.localMonitorMap().removeLocal(mapping);
+ _env.exchangeManager().forwardRemove(dName, dSpec);
+ LOG(debug, "unregisterRpcServer(%s,%s)", dName, dSpec);
_cnts.otherReqs++;
return;
}
-
-void
-RPCHooks::rpc_addPeer(FRT_RPCRequest *req)
-{
+void RPCHooks::rpc_addPeer(FRT_RPCRequest *req) {
FRT_Values &args = *req->GetParams();
const char *remslobrok = args[0]._string._str;
const char *remsbspec = args[1]._string._str;
@@ -291,10 +282,7 @@ RPCHooks::rpc_addPeer(FRT_RPCRequest *req)
return;
}
-
-void
-RPCHooks::rpc_removePeer(FRT_RPCRequest *req)
-{
+void RPCHooks::rpc_removePeer(FRT_RPCRequest *req) {
FRT_Values &args = *req->GetParams();
const char *remslobrok = args[0]._string._str;
const char *remsbspec = args[1]._string._str;
@@ -311,189 +299,173 @@ RPCHooks::rpc_removePeer(FRT_RPCRequest *req)
return;
}
-
-void
-RPCHooks::rpc_wantAdd(FRT_RPCRequest *req)
-{
+void RPCHooks::rpc_wantAdd(FRT_RPCRequest *req) {
FRT_Values &args = *req->GetParams();
const char *remsb = args[0]._string._str;
const char *dName = args[1]._string._str;
const char *dSpec = args[2]._string._str;
FRT_Values &retval = *req->GetReturn();
- OkState state = _rpcsrvmanager.addRemReservation(remsb, dName, dSpec);
- if (state.failed()) {
- req->SetError(FRTE_RPC_METHOD_FAILED, state.errorMsg.c_str());
+ ServiceMapping mapping{dName, dSpec};
+ bool conflict = (
+ _env.consensusMap().wouldConflict(mapping)
+ ||
+ _env.localMonitorMap().wouldConflict(mapping)
+ );
+ if (conflict) {
+ retval.AddInt32(13);
+ retval.AddString("conflict detected");
+ req->SetError(FRTE_RPC_METHOD_FAILED, "conflict detected");
+ } else {
+ retval.AddInt32(0);
+ retval.AddString("ok");
}
- retval.AddInt32(state.errorCode);
- retval.AddString(state.errorMsg.c_str());
- LOG(debug, "%s->wantAdd(%s,%s) %s: %s",
- remsb, dName, dSpec,
- state.ok() ? "OK" : "failed",
- state.errorMsg.c_str());
+ LOG(debug, "%s->wantAdd(%s,%s) %s",
+ remsb, dName, dSpec, conflict ? "conflict" : "OK");
_cnts.wantAddReqs++;
return;
}
-
-void
-RPCHooks::rpc_doRemove(FRT_RPCRequest *req)
-{
+void RPCHooks::rpc_doRemove(FRT_RPCRequest *req) {
FRT_Values &args = *req->GetParams();
const char *rname = args[0]._string._str;
const char *dname = args[1]._string._str;
const char *dspec = args[2]._string._str;
FRT_Values &retval = *req->GetReturn();
- OkState state = _rpcsrvmanager.removeRemote(dname, dspec);
- retval.AddInt32(state.errorCode);
- retval.AddString(state.errorMsg.c_str());
- if (state.errorCode > 1) {
- req->SetError(FRTE_RPC_METHOD_FAILED, state.errorMsg.c_str());
- }
- LOG(debug, "%s->doRemove(%s,%s) %s: %s",
- rname, dname, dspec,
- state.ok() ? "OK" : "failed",
- state.errorMsg.c_str());
+ ServiceMapping mapping{dname, dspec};
+ _env.localMonitorMap().removeLocal(mapping);
+ retval.AddInt32(0);
+ retval.AddString("ok");
+ LOG(debug, "%s->doRemove(%s,%s)", rname, dname, dspec);
_cnts.doRemoveReqs++;
return;
}
-void
-RPCHooks::rpc_doAdd(FRT_RPCRequest *req)
-{
+void RPCHooks::rpc_doAdd(FRT_RPCRequest *req) {
FRT_Values &args = *req->GetParams();
- const char *rname = args[0]._string._str;
- const char *dname = args[1]._string._str;
- const char *dspec = args[2]._string._str;
+ const char *remsb = args[0]._string._str;
+ const char *dName = args[1]._string._str;
+ const char *dSpec = args[2]._string._str;
FRT_Values &retval = *req->GetReturn();
- OkState state = _rpcsrvmanager.addRemote(dname, dspec);
- retval.AddInt32(state.errorCode);
- retval.AddString(state.errorMsg.c_str());
- if (state.errorCode > 1) {
- req->SetError(FRTE_RPC_METHOD_FAILED, state.errorMsg.c_str());
+ ServiceMapping mapping{dName, dSpec};
+ bool ok = true;
+ if (_env.consensusMap().wouldConflict(mapping)) {
+ retval.AddInt32(13);
+ retval.AddString("conflict detected");
+ req->SetError(FRTE_RPC_METHOD_FAILED, "conflict detected");
+ ok = false;
+ } else {
+ retval.AddInt32(0);
+ retval.AddString("ok");
}
- LOG(debug, "%s->doAdd(%s,%s) %s: %s",
- rname, dname, dspec,
- state.ok() ? "OK" : "failed",
- state.errorMsg.c_str());
+ LOG(debug, "%s->doAdd(%s,%s) %s",
+ remsb, dName, dSpec, ok ? "OK" : "failed");
_cnts.doAddReqs++;
return;
}
-
-void
-RPCHooks::rpc_lookupRpcServer(FRT_RPCRequest *req)
-{
+void RPCHooks::rpc_lookupRpcServer(FRT_RPCRequest *req) {
_cnts.otherReqs++;
FRT_Values &args = *req->GetParams();
const char *rpcserverPattern = args[0]._string._str;
LOG(debug, "RPC: lookupRpcServers(%s)", rpcserverPattern);
- std::vector<const NamedService *> rpcsrvlist =
- _rpcsrvmap.lookupPattern(rpcserverPattern);
+ // fetch data:
+ const auto & visible = _env.globalHistory();
+ auto diff = visible.makeDiffFrom(0);
+ std::vector<ServiceMapping> matches;
+ for (const auto & entry : diff.updated) {
+ if (match(entry.name.c_str(), rpcserverPattern)) {
+ matches.push_back(entry);
+ }
+ }
+ // fill return values:
FRT_Values &dst = *req->GetReturn();
- FRT_StringValue *names = dst.AddStringArray(rpcsrvlist.size());
- FRT_StringValue *specs = dst.AddStringArray(rpcsrvlist.size());
- for (uint32_t i = 0; i < rpcsrvlist.size(); ++i) {
- dst.SetString(&names[i], rpcsrvlist[i]->getName().c_str());
- dst.SetString(&specs[i], rpcsrvlist[i]->getSpec().c_str());
+ size_t sz = matches.size();
+ FRT_StringValue *names = dst.AddStringArray(sz);
+ FRT_StringValue *specs = dst.AddStringArray(sz);
+ size_t j = 0;
+ for (const auto & entry : matches) {
+ dst.SetString(&names[j], entry.name.c_str());
+ dst.SetString(&specs[j], entry.spec.c_str());
+ ++j;
}
- if (rpcsrvlist.size() < 1) {
+ // debug logging:
+ if (sz < 1) {
LOG(debug, "RPC: lookupRpcServers(%s) -> no match",
rpcserverPattern);
} else {
- LOG(debug, "RPC: lookupRpcServers(%s) -> %u matches, first [%s,%s]",
- rpcserverPattern, (unsigned int)rpcsrvlist.size(),
- rpcsrvlist[0]->getName().c_str(), rpcsrvlist[0]->getSpec().c_str());
+ LOG(debug, "RPC: lookupRpcServers(%s) -> %zu matches, first [%s,%s]",
+ rpcserverPattern, sz,
+ matches[0].name.c_str(), matches[0].spec.c_str());
}
return;
}
-
-void
-RPCHooks::rpc_listManagedRpcServers(FRT_RPCRequest *req)
-{
+void RPCHooks::rpc_listManagedRpcServers(FRT_RPCRequest *req) {
_cnts.adminReqs++;
- std::vector<const NamedService *> rpcsrvlist = _rpcsrvmap.allManaged();
+ // TODO: use local history here
+ const auto & visible = _env.globalHistory();
+ auto diff = visible.makeDiffFrom(0);
+ size_t sz = diff.updated.size();
FRT_Values &dst = *req->GetReturn();
- FRT_StringValue *names = dst.AddStringArray(rpcsrvlist.size());
- FRT_StringValue *specs = dst.AddStringArray(rpcsrvlist.size());
- for (uint32_t i = 0; i < rpcsrvlist.size(); ++i) {
- dst.SetString(&names[i], rpcsrvlist[i]->getName().c_str());
- dst.SetString(&specs[i], rpcsrvlist[i]->getSpec().c_str());
- }
- if (rpcsrvlist.size() < 1) {
- LOG(debug, "RPC: listManagedRpcServers() -> 0 managed");
- } else {
- LOG(debug, "RPC: listManagedRpcServers() -> %u managed, first [%s,%s]",
- (unsigned int)rpcsrvlist.size(),
- rpcsrvlist[0]->getName().c_str(), rpcsrvlist[0]->getSpec().c_str());
+ FRT_StringValue *names = dst.AddStringArray(sz);
+ FRT_StringValue *specs = dst.AddStringArray(sz);
+ size_t j = 0;
+ for (const auto & entry : diff.updated) {
+ dst.SetString(&names[j], entry.name.c_str());
+ dst.SetString(&specs[j], entry.spec.c_str());
+ ++j;
}
+ LOG(debug, "listManagedRpcServers -> %zu entries returned", sz);
return;
}
-void
-RPCHooks::rpc_lookupManaged(FRT_RPCRequest *req)
-{
+void RPCHooks::rpc_lookupManaged(FRT_RPCRequest *req) {
_cnts.adminReqs++;
FRT_Values &args = *req->GetParams();
const char *name = args[0]._string._str;
LOG(debug, "RPC: lookupManaged(%s)", name);
- const ManagedRpcServer *found = _rpcsrvmap.lookupManaged(name);
-
- if (found == nullptr) {
- req->SetError(FRTE_RPC_METHOD_FAILED, "Not found");
- } else {
- FRT_Values &dst = *req->GetReturn();
- dst.AddString(found->getName().c_str());
- dst.AddString(found->getSpec().c_str());
+ // TODO: use local history here
+ const auto & visible = _env.globalHistory();
+ auto diff = visible.makeDiffFrom(0);
+ for (const auto & entry : diff.updated) {
+ if (entry.name == name) {
+ FRT_Values &dst = *req->GetReturn();
+ dst.AddString(entry.name.c_str());
+ dst.AddString(entry.spec.c_str());
+ return;
+ }
}
+ req->SetError(FRTE_RPC_METHOD_FAILED, "Not found");
return;
}
-void
-RPCHooks::rpc_listAllRpcServers(FRT_RPCRequest *req)
-{
+void RPCHooks::rpc_listAllRpcServers(FRT_RPCRequest *req) {
_cnts.adminReqs++;
-
- std::vector<const NamedService *> mrpcsrvlist = _rpcsrvmap.allManaged();
-
+ const auto & visible = _env.globalHistory();
+ auto diff = visible.makeDiffFrom(0);
+ size_t sz = diff.updated.size();
FRT_Values &dst = *req->GetReturn();
- size_t sz = mrpcsrvlist.size();
FRT_StringValue *names = dst.AddStringArray(sz);
FRT_StringValue *specs = dst.AddStringArray(sz);
FRT_StringValue *owner = dst.AddStringArray(sz);
-
- int j = 0;
- for (uint32_t i = 0; i < mrpcsrvlist.size(); ++i, ++j) {
- dst.SetString(&names[j], mrpcsrvlist[i]->getName().c_str());
- dst.SetString(&specs[j], mrpcsrvlist[i]->getSpec().c_str());
+ size_t j = 0;
+ for (const auto & entry : diff.updated) {
+ dst.SetString(&names[j], entry.name.c_str());
+ dst.SetString(&specs[j], entry.spec.c_str());
dst.SetString(&owner[j], _env.mySpec().c_str());
+ ++j;
}
-
- if (sz > 0) {
- LOG(debug, "listManagedRpcServers -> %u, last [%s,%s,%s]",
- (unsigned int)mrpcsrvlist.size(),
- dst[0]._string_array._pt[sz-1]._str,
- dst[1]._string_array._pt[sz-1]._str,
- dst[2]._string_array._pt[sz-1]._str);
- } else {
- LOG(debug, "listManagedRpcServers -> %u", (unsigned int) mrpcsrvlist.size());
- }
+ LOG(debug, "listAllRpcServers -> %zu entries returned", sz);
return;
-
}
-
-void
-RPCHooks::rpc_incrementalFetch(FRT_RPCRequest *req)
-{
+void RPCHooks::rpc_incrementalFetch(FRT_RPCRequest *req) {
_cnts.mirrorReqs++;
FRT_Values &args = *req->GetParams();
-
vespalib::GenCnt gencnt(args[0]._intval32);
uint32_t msTimeout = args[1]._intval32;
-
req->getStash().create<IncrementalFetch>(_env.getSupervisor(), req,
- _rpcsrvmap.visibleMap(), gencnt).invoke(msTimeout);
+ _globalHistory, gencnt).invoke(msTimeout);
}
void RPCHooks::rpc_fetchLocalView(FRT_RPCRequest *req) {
@@ -502,24 +474,18 @@ void RPCHooks::rpc_fetchLocalView(FRT_RPCRequest *req) {
vespalib::GenCnt gencnt(args[0]._intval32);
uint32_t msTimeout = args[1]._intval32;
req->getStash().create<IncrementalFetch>(_env.getSupervisor(), req,
- _rpcsrvmap.localView(), gencnt).invoke(msTimeout);
+ _localHistory, gencnt).invoke(msTimeout);
}
-
// System API methods
-void
-RPCHooks::rpc_stop(FRT_RPCRequest *req)
-{
+void RPCHooks::rpc_stop(FRT_RPCRequest *req) {
_cnts.adminReqs++;
(void) req;
LOG(debug, "RPC stop command received, initiating shutdown");
_env.shutdown();
}
-
-void
-RPCHooks::rpc_version(FRT_RPCRequest *req)
-{
+void RPCHooks::rpc_version(FRT_RPCRequest *req) {
_cnts.adminReqs++;
std::string ver;
@@ -570,10 +536,8 @@ RPCHooks::rpc_version(FRT_RPCRequest *req)
}
}
LOG(debug, "RPC version: %s", ver.c_str());
-
req->GetReturn()->AddString(ver.c_str());
return;
}
-
} // namespace slobrok
diff --git a/slobrok/src/vespa/slobrok/server/rpchooks.h b/slobrok/src/vespa/slobrok/server/rpchooks.h
index 66f0ed892f3..0919aebca91 100644
--- a/slobrok/src/vespa/slobrok/server/rpchooks.h
+++ b/slobrok/src/vespa/slobrok/server/rpchooks.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/fnet/frt/invokable.h>
@@ -12,6 +12,7 @@ namespace slobrok {
class SBEnv;
class RpcServerMap;
class RpcServerManager;
+class ServiceMapHistory;
/**
* @class RPCHooks
@@ -39,14 +40,14 @@ public:
private:
SBEnv &_env;
- RpcServerMap &_rpcsrvmap;
- RpcServerManager &_rpcsrvmanager;
+ ServiceMapHistory &_globalHistory;
+ ServiceMapHistory &_localHistory;
Metrics _cnts;
std::unique_ptr<FNET_Task> _m_reporter;
public:
- RPCHooks(SBEnv &env, RpcServerMap& rpcsrvmap, RpcServerManager& rpcsrvman);
+ RPCHooks(SBEnv &env);
~RPCHooks() override;
void initRPC(FRT_Supervisor *supervisor);
@@ -55,25 +56,24 @@ public:
void countFailedHeartbeat() { _cnts.heartBeatFails++; }
private:
- void rpc_lookupRpcServer(FRT_RPCRequest *req);
-
void rpc_registerRpcServer(FRT_RPCRequest *req);
void rpc_unregisterRpcServer(FRT_RPCRequest *req);
-
void rpc_addPeer(FRT_RPCRequest *req);
void rpc_removePeer(FRT_RPCRequest *req);
+ void rpc_incrementalFetch(FRT_RPCRequest *req);
+ void rpc_doRemove(FRT_RPCRequest *req);
+ void rpc_fetchLocalView(FRT_RPCRequest *req);
+ void rpc_listNamesServed(FRT_RPCRequest *req);
+
+ /** for unit tests and debugging, consider removing some of these: */
+ void rpc_lookupRpcServer(FRT_RPCRequest *req);
void rpc_listManagedRpcServers(FRT_RPCRequest *req);
void rpc_lookupManaged(FRT_RPCRequest *req);
void rpc_listAllRpcServers(FRT_RPCRequest *req);
- void rpc_incrementalFetch(FRT_RPCRequest *req);
void rpc_wantAdd(FRT_RPCRequest *req);
void rpc_doAdd(FRT_RPCRequest *req);
- void rpc_doRemove(FRT_RPCRequest *req);
- void rpc_fetchLocalView(FRT_RPCRequest *req);
-
- void rpc_listNamesServed(FRT_RPCRequest *req);
- void rpc_getRpcServerHistory(FRT_RPCRequest *req);
+ /** consider removing: */
void rpc_stop(FRT_RPCRequest *req);
void rpc_version(FRT_RPCRequest *req);
};
diff --git a/slobrok/src/vespa/slobrok/server/rpcmirror.cpp b/slobrok/src/vespa/slobrok/server/rpcmirror.cpp
index be533d9b30f..a2ae7c92805 100644
--- a/slobrok/src/vespa/slobrok/server/rpcmirror.cpp
+++ b/slobrok/src/vespa/slobrok/server/rpcmirror.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rpcmirror.h"
#include <vespa/fnet/frt/supervisor.h>
diff --git a/slobrok/src/vespa/slobrok/server/rpcmirror.h b/slobrok/src/vespa/slobrok/server/rpcmirror.h
index 4761e250fd5..cbfa460b409 100644
--- a/slobrok/src/vespa/slobrok/server/rpcmirror.h
+++ b/slobrok/src/vespa/slobrok/server/rpcmirror.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "service_map_history.h"
diff --git a/slobrok/src/vespa/slobrok/server/sbenv.cpp b/slobrok/src/vespa/slobrok/server/sbenv.cpp
index 2bf8e57cb26..2786bb9eb05 100644
--- a/slobrok/src/vespa/slobrok/server/sbenv.cpp
+++ b/slobrok/src/vespa/slobrok/server/sbenv.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "reconfigurable_stateserver.h"
#include "sbenv.h"
@@ -105,24 +105,27 @@ SBEnv::SBEnv(const ConfigShim &shim)
_shuttingDown(false),
_partnerList(),
_me(createSpec(_configShim.portNumber())),
- _rpcHooks(*this, _rpcsrvmap, _rpcsrvmanager),
- _remotechecktask(std::make_unique<RemoteCheck>(getSupervisor()->GetScheduler(), _rpcsrvmap, _rpcsrvmanager, _exchanger)),
+ _rpcHooks(*this),
+ _remotechecktask(std::make_unique<RemoteCheck>(getSupervisor()->GetScheduler(), _exchanger)),
_health(),
_metrics(_rpcHooks, *_transport),
_components(),
- _rpcsrvmanager(*this),
- _exchanger(*this, _rpcsrvmap),
- _rpcsrvmap()
+ _localRpcMonitorMap(getScheduler(),
+ [this] (MappingMonitorOwner &owner) {
+ return std::make_unique<RpcMappingMonitor>(*_supervisor, owner);
+ }),
+ _exchanger(*this)
{
srandom(time(nullptr) ^ getpid());
+ // note: feedback loop between these two:
+ _localMonitorSubscription = MapSubscription::subscribe(_consensusMap, _localRpcMonitorMap);
+ _consensusSubscription = MapSubscription::subscribe(_localRpcMonitorMap.dispatcher(), _consensusMap);
+ _globalHistorySubscription = MapSubscription::subscribe(_consensusMap, _globalVisibleHistory);
_rpcHooks.initRPC(getSupervisor());
}
-SBEnv::~SBEnv()
-{
- getTransport()->WaitFinished();
-}
+SBEnv::~SBEnv() = default;
FNET_Scheduler *
SBEnv::getScheduler() {
@@ -193,7 +196,6 @@ SBEnv::MainLoop()
return 0;
}
-
void
SBEnv::setup(const std::vector<std::string> &cfg)
{
@@ -206,7 +208,7 @@ SBEnv::setup(const std::vector<std::string> &cfg)
std::string slobrok = cfg[i];
discard(oldList, slobrok);
if (slobrok != mySpec()) {
- OkState res = _rpcsrvmanager.addPeer(slobrok, slobrok.c_str());
+ OkState res = _exchanger.addPartner(slobrok);
if (!res.ok()) {
LOG(warning, "could not add peer %s: %s", slobrok.c_str(), res.errorMsg.c_str());
} else {
@@ -215,12 +217,8 @@ SBEnv::setup(const std::vector<std::string> &cfg)
}
}
for (uint32_t i = 0; i < oldList.size(); ++i) {
- OkState res = _rpcsrvmanager.removePeer(oldList[i], oldList[i].c_str());
- if (!res.ok()) {
- LOG(warning, "could not remove peer %s: %s", oldList[i].c_str(), res.errorMsg.c_str());
- } else {
- LOG(config, "removed peer %s", oldList[i].c_str());
- }
+ _exchanger.removePartner(oldList[i]);
+ LOG(config, "removed peer %s", oldList[i].c_str());
}
int64_t curGen = _configurator->getGeneration();
vespalib::ComponentConfigProducer::Config current("slobroks", curGen, "ok");
@@ -230,6 +228,9 @@ SBEnv::setup(const std::vector<std::string> &cfg)
OkState
SBEnv::addPeer(const std::string &name, const std::string &spec)
{
+ if (name != spec) {
+ return OkState(FRTE_RPC_METHOD_FAILED, "peer location brokers must have name equal to spec");
+ }
if (spec == mySpec()) {
return OkState(FRTE_RPC_METHOD_FAILED, "cannot add my own spec as peer");
}
@@ -244,12 +245,15 @@ SBEnv::addPeer(const std::string &name, const std::string &spec)
spec.c_str(), peers.c_str());
_partnerList.push_back(spec);
}
- return _rpcsrvmanager.addPeer(name, spec.c_str());
+ return _exchanger.addPartner(spec);
}
OkState
SBEnv::removePeer(const std::string &name, const std::string &spec)
{
+ if (name != spec) {
+ return OkState(FRTE_RPC_METHOD_FAILED, "peer location brokers must have name equal to spec");
+ }
if (spec == mySpec()) {
return OkState(FRTE_RPC_METHOD_FAILED, "cannot remove my own spec as peer");
}
@@ -258,7 +262,12 @@ SBEnv::removePeer(const std::string &name, const std::string &spec)
return OkState(FRTE_RPC_METHOD_FAILED, "configured partner list contains peer, cannot remove");
}
}
- return _rpcsrvmanager.removePeer(name, spec.c_str());
+ const RemoteSlobrok *partner = _exchanger.lookupPartner(name);
+ if (partner == nullptr) {
+ return OkState(0, "remote slobrok not a partner");
+ }
+ _exchanger.removePartner(spec);
+ return OkState(0, "done");
}
} // namespace slobrok
diff --git a/slobrok/src/vespa/slobrok/server/sbenv.h b/slobrok/src/vespa/slobrok/server/sbenv.h
index 1050bd1359a..a27680365a0 100644
--- a/slobrok/src/vespa/slobrok/server/sbenv.h
+++ b/slobrok/src/vespa/slobrok/server/sbenv.h
@@ -1,14 +1,15 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "named_service.h"
-#include "rpc_server_map.h"
-#include "rpc_server_manager.h"
+#include "rpc_mapping_monitor.h"
#include "remote_slobrok.h"
#include "exchange_manager.h"
#include "configshim.h"
#include "ok_state.h"
+#include "local_rpc_monitor_map.h"
#include "metrics_producer.h"
+#include "union_service_map.h"
#include <vespa/config-slobroks.h>
#include <vespa/slobrok/cfg.h>
#include <vespa/vespalib/net/simple_health_producer.h>
@@ -54,6 +55,15 @@ private:
vespalib::SimpleHealthProducer _health;
MetricsProducer _metrics;
vespalib::SimpleComponentConfigProducer _components;
+ LocalRpcMonitorMap _localRpcMonitorMap;
+ UnionServiceMap _consensusMap;
+ ServiceMapHistory _globalVisibleHistory;
+
+ ExchangeManager _exchanger;
+
+ std::unique_ptr<MapSubscription> _localMonitorSubscription;
+ std::unique_ptr<MapSubscription> _consensusSubscription;
+ std::unique_ptr<MapSubscription> _globalHistorySubscription;
public:
explicit SBEnv(const ConfigShim &shim);
@@ -67,9 +77,23 @@ public:
void suspend();
void resume();
- RpcServerManager _rpcsrvmanager;
- ExchangeManager _exchanger;
- RpcServerMap _rpcsrvmap;
+ ExchangeManager& exchangeManager() { return _exchanger; }
+
+ ServiceMapHistory& globalHistory() {
+ return _globalVisibleHistory;
+ }
+
+ LocalRpcMonitorMap& localMonitorMap() {
+ return _localRpcMonitorMap;
+ }
+
+ ServiceMapHistory& localHistory() {
+ return _localRpcMonitorMap.history();
+ }
+
+ UnionServiceMap& consensusMap() {
+ return _consensusMap;
+ }
const std::string & mySpec() const { return _me; }
@@ -78,8 +102,8 @@ public:
int MainLoop();
- OkState addPeer(const std::string& name, const std::string &spec);
- OkState removePeer(const std::string& name, const std::string &spec);
+ OkState addPeer(const std::string& name, const std::string& spec);
+ OkState removePeer(const std::string& name, const std::string& spec);
void countFailedHeartbeat() { _rpcHooks.countFailedHeartbeat(); }
};
diff --git a/slobrok/src/vespa/slobrok/server/service_map_history.cpp b/slobrok/src/vespa/slobrok/server/service_map_history.cpp
index 3882a41bde5..3303f364515 100644
--- a/slobrok/src/vespa/slobrok/server/service_map_history.cpp
+++ b/slobrok/src/vespa/slobrok/server/service_map_history.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "service_map_history.h"
@@ -43,8 +43,7 @@ ServiceMapHistory::UpdateLog::updatedSince(const Generation &gen) const {
//-----------------------------------------------------------------------------
ServiceMapHistory::ServiceMapHistory()
- : _lock(),
- _map(),
+ : _map(),
_waitList(),
_log()
{}
@@ -56,58 +55,49 @@ ServiceMapHistory::~ServiceMapHistory() {
void ServiceMapHistory::notify_updated() {
WaitList waitList;
- {
- std::lock_guard guard(_lock);
- std::swap(waitList, _waitList);
- }
+ std::swap(waitList, _waitList);
for (auto & [ handler, gen ] : waitList) {
handler->handle(makeDiffFrom(gen));
}
}
void ServiceMapHistory::asyncGenerationDiff(DiffCompletionHandler *handler, const Generation &fromGen) {
- {
- std::lock_guard guard(_lock);
- if (fromGen == myGen()) {
- _waitList.emplace_back(handler, fromGen);
- return;
- }
+ if (fromGen == myGen()) {
+ _waitList.emplace_back(handler, fromGen);
+ return;
}
handler->handle(makeDiffFrom(fromGen));
}
bool ServiceMapHistory::cancel(DiffCompletionHandler *handler) {
- std::lock_guard guard(_lock);
size_t removed = std::erase_if(_waitList, [=](const Waiter &elem){ return elem.first == handler; });
return (removed > 0);
}
-void ServiceMapHistory::remove(const vespalib::string &name) {
- {
- std::lock_guard guard(_lock);
- auto iter = _map.find(name);
- if (iter == _map.end()) {
- LOG(warning, "already removed: %s", name.c_str());
- // already removed
- return;
- }
- _map.erase(iter);
- _log.add(name);
+void ServiceMapHistory::remove(const ServiceMapping &mapping) {
+ auto iter = _map.find(mapping.name);
+ if (iter == _map.end()) {
+ LOG(debug, "already removed: %s", mapping.name.c_str());
+ return; // already removed
}
+ LOG_ASSERT(iter->second == mapping.spec);
+ _map.erase(iter);
+ _log.add(mapping.name);
notify_updated();
}
-void ServiceMapHistory::update(const ServiceMapping &mapping) {
- {
- std::lock_guard guard(_lock);
- _map.insert_or_assign(mapping.name, mapping.spec);
- _log.add(mapping.name);
+void ServiceMapHistory::add(const ServiceMapping &mapping) {
+ auto iter = _map.find(mapping.name);
+ if (iter != _map.end() && iter->second == mapping.spec) {
+ // already ok
+ return;
}
+ _map.insert_or_assign(mapping.name, mapping.spec);
+ _log.add(mapping.name);
notify_updated();
}
MapDiff ServiceMapHistory::makeDiffFrom(const Generation &fromGen) const {
- std::lock_guard guard(_lock);
if (_log.isInRange(fromGen)) {
std::vector<vespalib::string> removes;
ServiceMappingList updates;
diff --git a/slobrok/src/vespa/slobrok/server/service_map_history.h b/slobrok/src/vespa/slobrok/server/service_map_history.h
index e1f20e0d8a4..e97d98a2aff 100644
--- a/slobrok/src/vespa/slobrok/server/service_map_history.h
+++ b/slobrok/src/vespa/slobrok/server/service_map_history.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -6,7 +6,7 @@
#include <vespa/vespalib/util/gencnt.h>
#include <vespa/vespalib/util/arrayqueue.hpp>
#include <map>
-#include <mutex>
+#include "map_listener.h"
#include "service_mapping.h"
#include "map_diff.h"
@@ -16,8 +16,7 @@ namespace slobrok {
* @class ServiceMapHistory
* @brief API to generate incremental updates for a collection of name->spec mappings
**/
-
-class ServiceMapHistory
+class ServiceMapHistory : public MapListener
{
public:
using Generation = vespalib::GenCnt;
@@ -52,7 +51,6 @@ private:
using Waiter = std::pair<DiffCompletionHandler *, Generation>;
using WaitList = std::vector<Waiter>;
- mutable std::mutex _lock;
Map _map;
WaitList _waitList;
UpdateLog _log;
@@ -66,6 +64,11 @@ public:
~ServiceMapHistory();
/**
+ * Get diff from generation fromGen (sync version).
+ **/
+ MapDiff makeDiffFrom(const Generation &fromGen) const;
+
+ /**
* Ask for notification when the history has changes newer than fromGen.
* Note that if there are any changes in the history already, the callback
* will happen immediately (inside asyncGenerationDiff).
@@ -78,17 +81,14 @@ public:
**/
bool cancel(DiffCompletionHandler *handler);
- /** add or update name->spec mapping */
- void update(const ServiceMapping &mapping);
+ /** add name->spec mapping */
+ void add(const ServiceMapping &mapping) override;
/** remove mapping for name */
- void remove(const vespalib::string &name);
+ void remove(const ServiceMapping &mapping) override;
/** For unit testing only: */
Generation currentGen() const { return myGen(); }
-
-private:
- MapDiff makeDiffFrom(const Generation &fromGen) const;
};
//-----------------------------------------------------------------------------
diff --git a/slobrok/src/vespa/slobrok/server/service_map_mirror.cpp b/slobrok/src/vespa/slobrok/server/service_map_mirror.cpp
new file mode 100644
index 00000000000..9ad53de6444
--- /dev/null
+++ b/slobrok/src/vespa/slobrok/server/service_map_mirror.cpp
@@ -0,0 +1,83 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "service_map_mirror.h"
+#include <vespa/log/log.h>
+LOG_SETUP(".slobrok.server.service_map_mirror");
+
+namespace slobrok {
+
+ServiceMapMirror::ServiceMapMirror()
+ : _map(),
+ _currGen(0)
+{}
+
+ServiceMapMirror::~ServiceMapMirror() {
+ LOG_ASSERT(_listeners.size() == 0);
+}
+
+void ServiceMapMirror::apply(const MapDiff &diff) {
+ LOG(debug, "Applying diff from gen %u", diff.fromGen.getAsInt());
+ LOG_ASSERT(diff.fromGen == _currGen);
+ for (const auto & name : diff.removed) {
+ auto iter = _map.find(name);
+ if (iter != _map.end()) {
+ LOG(debug, "Apply remove %s->%s", name.c_str(), iter->second.c_str());
+ ServiceMapping mapping(name, iter->second);
+ for (auto * listener : _listeners) {
+ listener->remove(mapping);
+ }
+ _map.erase(iter);
+ } else {
+ LOG(debug, "Apply remove %s [already removed]", name.c_str());
+ }
+ }
+ for (const auto & mapping : diff.updated) {
+ LOG(debug, "Apply update %s->%s", mapping.name.c_str(), mapping.spec.c_str());
+ auto iter = _map.find(mapping.name);
+ if (iter != _map.end()) {
+ ServiceMapping old{mapping.name, iter->second};
+ iter->second = mapping.spec;
+ for (auto * listener : _listeners) {
+ listener->update(old, mapping);
+ }
+ } else {
+ _map.emplace(mapping.name, mapping.spec);
+ for (auto * listener : _listeners) {
+ listener->add(mapping);
+ }
+ }
+ }
+ LOG(debug, "Apply diff complete to gen %u", diff.toGen.getAsInt());
+ _currGen = diff.toGen;
+}
+
+void ServiceMapMirror::clear() {
+ for (const auto & [ k, v ] : _map) {
+ ServiceMapping mapping{k, v};
+ for (auto * listener : _listeners) {
+ listener->remove(mapping);
+ }
+ }
+ _map.clear();
+ _currGen.reset();
+}
+
+ServiceMappingList ServiceMapMirror::allMappings() const {
+ ServiceMappingList result;
+ result.reserve(_map.size());
+ for (const auto & [ k, v ] : _map) {
+ result.emplace_back(k, v);
+ }
+ return result;
+}
+
+void ServiceMapMirror::registerListener(MapListener &listener) {
+ _listeners.insert(&listener);
+}
+
+void ServiceMapMirror::unregisterListener(MapListener &listener) {
+ _listeners.erase(&listener);
+}
+
+
+} // namespace slobrok
diff --git a/slobrok/src/vespa/slobrok/server/service_map_mirror.h b/slobrok/src/vespa/slobrok/server/service_map_mirror.h
new file mode 100644
index 00000000000..8ace4ec38e5
--- /dev/null
+++ b/slobrok/src/vespa/slobrok/server/service_map_mirror.h
@@ -0,0 +1,49 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "service_mapping.h"
+#include "map_diff.h"
+#include "map_source.h"
+#include <vespa/vespalib/util/gencnt.h>
+#include <map>
+#include <set>
+
+namespace slobrok {
+
+/**
+ * @class ServiceMapMirror
+ * @brief Holds a name->spec map which can be incrementally updated
+ **/
+class ServiceMapMirror : public MapSource
+{
+public:
+ using Generation = vespalib::GenCnt;
+
+ ServiceMapMirror();
+ ~ServiceMapMirror();
+
+ /** update according to diff */
+ void apply(const MapDiff &diff);
+
+ /** remove all mappings */
+ void clear();
+
+ const Generation &currentGeneration() const { return _currGen; }
+
+ ServiceMappingList allMappings() const;
+
+private:
+ void registerListener(MapListener &listener) override;
+ void unregisterListener(MapListener &listener) override;
+
+ using Map = std::map<vespalib::string, vespalib::string>;
+ Map _map;
+ Generation _currGen;
+ std::set<MapListener *> _listeners;
+};
+
+//-----------------------------------------------------------------------------
+
+} // namespace slobrok
+
diff --git a/slobrok/src/vespa/slobrok/server/service_mapping.cpp b/slobrok/src/vespa/slobrok/server/service_mapping.cpp
index 4f902a10e32..45a278801b5 100644
--- a/slobrok/src/vespa/slobrok/server/service_mapping.cpp
+++ b/slobrok/src/vespa/slobrok/server/service_mapping.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "service_mapping.h"
diff --git a/slobrok/src/vespa/slobrok/server/service_mapping.h b/slobrok/src/vespa/slobrok/server/service_mapping.h
index 6561c120284..b581b9431ce 100644
--- a/slobrok/src/vespa/slobrok/server/service_mapping.h
+++ b/slobrok/src/vespa/slobrok/server/service_mapping.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -12,6 +12,16 @@ struct ServiceMapping {
vespalib::string spec;
ServiceMapping(const vespalib::string & name_, const vespalib::string & spec_) noexcept : name(name_), spec(spec_) { }
~ServiceMapping();
+
+ bool operator== (const ServiceMapping &other) const {
+ return name == other.name && spec == other.spec;
+ }
+
+ bool operator< (const ServiceMapping &other) const noexcept {
+ if (name < other.name) return true;
+ if (other.name < name) return false;
+ return spec < other.spec;
+ }
};
typedef std::vector<ServiceMapping> ServiceMappingList;
diff --git a/slobrok/src/vespa/slobrok/server/slobrokserver.cpp b/slobrok/src/vespa/slobrok/server/slobrokserver.cpp
index 29f235ceb1f..b962ecf611e 100644
--- a/slobrok/src/vespa/slobrok/server/slobrokserver.cpp
+++ b/slobrok/src/vespa/slobrok/server/slobrokserver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "slobrokserver.h"
diff --git a/slobrok/src/vespa/slobrok/server/slobrokserver.h b/slobrok/src/vespa/slobrok/server/slobrokserver.h
index 02e7990bb6f..1aeba9b6be3 100644
--- a/slobrok/src/vespa/slobrok/server/slobrokserver.h
+++ b/slobrok/src/vespa/slobrok/server/slobrokserver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "sbenv.h"
diff --git a/slobrok/src/vespa/slobrok/server/union_service_map.cpp b/slobrok/src/vespa/slobrok/server/union_service_map.cpp
new file mode 100644
index 00000000000..fc8b0cbcdfd
--- /dev/null
+++ b/slobrok/src/vespa/slobrok/server/union_service_map.cpp
@@ -0,0 +1,110 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "union_service_map.h"
+#include <vespa/log/log.h>
+
+LOG_SETUP(".slobrok.server.union_service_map");
+
+namespace slobrok {
+
+UnionServiceMap::UnionServiceMap() = default;
+UnionServiceMap::~UnionServiceMap() = default;
+
+ServiceMappingList UnionServiceMap::currentConsensus() const {
+ ServiceMappingList result;
+ for (const auto & [ name, list ] : _mappings) {
+ if (list.size() == 1u) {
+ result.emplace_back(name, list[0].spec);
+ }
+ }
+ return result;
+}
+
+bool UnionServiceMap::wouldConflict(const ServiceMapping &mapping) const {
+ const vespalib::string &key = mapping.name;
+ auto iter = _mappings.find(key);
+ if (iter == _mappings.end()) {
+ return false;
+ }
+ const Mappings &values = iter->second;
+ if (values.size() != 1) {
+ return true;
+ }
+ return (values[0].spec != mapping.spec);
+}
+
+void UnionServiceMap::add(const ServiceMapping &mapping)
+{
+ const vespalib::string &key = mapping.name;
+ auto iter = _mappings.find(key);
+ if (iter == _mappings.end()) {
+ _mappings[key].emplace_back(mapping.spec, 1u);
+ LOG(debug, "add new %s->%s", mapping.name.c_str(), mapping.spec.c_str());
+ ProxyMapSource::add(mapping);
+ } else {
+ Mappings &values = iter->second;
+ for (CountedSpec &old : values) {
+ if (old.spec == mapping.spec) {
+ LOG(debug, "add ref to existing %s->%s", mapping.name.c_str(), mapping.spec.c_str());
+ ++old.count;
+ return;
+ }
+ }
+ values.emplace_back(mapping.spec, 1u);
+ if (values.size() == 2u) {
+ ServiceMapping toRemove{key, values[0].spec};
+ LOG(warning, "Multiple specs seen for name '%s', un-publishing %s",
+ toRemove.name.c_str(), toRemove.spec.c_str());
+ ProxyMapSource::remove(toRemove);
+ }
+ }
+}
+
+void UnionServiceMap::remove(const ServiceMapping &mapping)
+{
+ const vespalib::string &key = mapping.name;
+ auto iter = _mappings.find(key);
+ if (iter == _mappings.end()) {
+ LOG(error, "Broken invariant: did not find %s in mappings", key.c_str());
+ return;
+ }
+ LOG(debug, "remove ref from %s->%s", mapping.name.c_str(), mapping.spec.c_str());
+ Mappings &values = iter->second;
+ bool found = false;
+ for (CountedSpec &old : values) {
+ if (old.spec == mapping.spec) {
+ if (--old.count > 0u) return;
+ found = true;
+ }
+ }
+ if (! found) {
+ LOG(error, "Broken invariant: did not find %s->%s in mappings",
+ key.c_str(), mapping.spec.c_str());
+ return;
+ }
+ size_t old_size = values.size();
+ std::erase_if(values, [] (const CountedSpec &v) { return v.count == 0; });
+ if (values.size() == 1u) {
+ LOG_ASSERT(old_size == 2u);
+ ServiceMapping toAdd{key, values[0].spec};
+ LOG(info, "Had multiple mappings for %s, but now only %s remains",
+ toAdd.name.c_str(), toAdd.spec.c_str());
+ ProxyMapSource::add(toAdd);
+ } else if (values.size() == 0u) {
+ LOG_ASSERT(old_size == 1u);
+ LOG(debug, "Last reference for %s -> %s removed",
+ key.c_str(), mapping.spec.c_str());
+ _mappings.erase(iter);
+ ProxyMapSource::remove(mapping);
+ }
+}
+
+void UnionServiceMap::update(const ServiceMapping &old_mapping,
+ const ServiceMapping &new_mapping)
+{
+ LOG_ASSERT(old_mapping.name == new_mapping.name);
+ remove(old_mapping);
+ add(new_mapping);
+}
+
+} // namespace slobrok
diff --git a/slobrok/src/vespa/slobrok/server/union_service_map.h b/slobrok/src/vespa/slobrok/server/union_service_map.h
new file mode 100644
index 00000000000..0ed33ae45b2
--- /dev/null
+++ b/slobrok/src/vespa/slobrok/server/union_service_map.h
@@ -0,0 +1,48 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "map_listener.h"
+#include "map_source.h"
+#include "proxy_map_source.h"
+
+#include <map>
+#include <vector>
+
+namespace slobrok {
+
+/**
+ * Listens to events from multiple maps and publishes the union of them.
+ **/
+class UnionServiceMap : public ProxyMapSource
+{
+private:
+ struct CountedSpec {
+ vespalib::string spec;
+ size_t count;
+ CountedSpec(const vespalib::string &spec_in,
+ size_t count_in) noexcept
+ : spec(spec_in),
+ count(count_in)
+ {
+ }
+ };
+ using Mappings = std::vector<CountedSpec>;
+ std::map<vespalib::string, Mappings> _mappings;
+
+public:
+ UnionServiceMap();
+ virtual ~UnionServiceMap();
+
+ ServiceMappingList currentConsensus() const;
+
+ bool wouldConflict(const ServiceMapping &mapping) const;
+
+ void add(const ServiceMapping &mapping) override;
+ void remove(const ServiceMapping &mapping) override;
+ void update(const ServiceMapping &old_mapping,
+ const ServiceMapping &new_mapping) override;
+};
+
+} // namespace slobrok
+
diff --git a/socket_test/README.md b/socket_test/README.md
index 1bd05494d5c..83583c5cb33 100644
--- a/socket_test/README.md
+++ b/socket_test/README.md
@@ -1,2 +1,2 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# ToDo
diff --git a/socket_test/pom.xml b/socket_test/pom.xml
index 402fe812af2..8e8797564fe 100644
--- a/socket_test/pom.xml
+++ b/socket_test/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
@@ -47,6 +47,9 @@
</plugins>
</build>
<properties>
+ <maven.deploy.skip>true</maven.deploy.skip>
+ <maven.javadoc.skip>true</maven.javadoc.skip>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <skipNexusStagingDeployMojo>true</skipNexusStagingDeployMojo>
</properties>
</project>
diff --git a/socket_test/src/main/java/com/yahoo/socket/test/SocketTestApp.java b/socket_test/src/main/java/com/yahoo/socket/test/SocketTestApp.java
index 688c3b1194c..bd94ca1e6d5 100644
--- a/socket_test/src/main/java/com/yahoo/socket/test/SocketTestApp.java
+++ b/socket_test/src/main/java/com/yahoo/socket/test/SocketTestApp.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.socket.test;
import java.io.IOException;
diff --git a/staging_vespalib/CMakeLists.txt b/staging_vespalib/CMakeLists.txt
index efb57618823..ff152bcc2a1 100644
--- a/staging_vespalib/CMakeLists.txt
+++ b/staging_vespalib/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
if(NOT CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
set(STAGING_VESPALIB_DIRECTIO_TESTDIR src/tests/directio)
set(STAGING_VESPALIB_PROCESS_MEMORY_STATS_TESTDIR src/tests/util/process_memory_stats)
diff --git a/staging_vespalib/src/Doxyfile b/staging_vespalib/src/Doxyfile
index cbb6d8297e6..6ad88d3127b 100644
--- a/staging_vespalib/src/Doxyfile
+++ b/staging_vespalib/src/Doxyfile
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Doxyfile 1.4.6
#---------------------------------------------------------------------------
diff --git a/staging_vespalib/src/tests/array/CMakeLists.txt b/staging_vespalib/src/tests/array/CMakeLists.txt
index aa6eb84afc3..74ed249c099 100644
--- a/staging_vespalib/src/tests/array/CMakeLists.txt
+++ b/staging_vespalib/src/tests/array/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_allocinarray_test_app TEST
SOURCES
allocinarray_test.cpp
diff --git a/staging_vespalib/src/tests/array/allocinarray_benchmark.cpp b/staging_vespalib/src/tests/array/allocinarray_benchmark.cpp
index db468044e48..801f946687c 100644
--- a/staging_vespalib/src/tests/array/allocinarray_benchmark.cpp
+++ b/staging_vespalib/src/tests/array/allocinarray_benchmark.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/rusage.h>
#include <vespa/vespalib/util/optimized.h>
diff --git a/staging_vespalib/src/tests/array/allocinarray_test.cpp b/staging_vespalib/src/tests/array/allocinarray_test.cpp
index c1e9605f439..b6acd9e7e78 100644
--- a/staging_vespalib/src/tests/array/allocinarray_test.cpp
+++ b/staging_vespalib/src/tests/array/allocinarray_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/array.h>
#include <vespa/vespalib/util/allocinarray.h>
#include <vespa/vespalib/stllike/string.h>
diff --git a/staging_vespalib/src/tests/array/sort_benchmark.cpp b/staging_vespalib/src/tests/array/sort_benchmark.cpp
index 3fd900503c4..5d8a1efaa7a 100644
--- a/staging_vespalib/src/tests/array/sort_benchmark.cpp
+++ b/staging_vespalib/src/tests/array/sort_benchmark.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/rusage.h>
#include <vespa/vespalib/util/array.hpp>
diff --git a/staging_vespalib/src/tests/benchmark/CMakeLists.txt b/staging_vespalib/src/tests/benchmark/CMakeLists.txt
index cf082d39101..95d61495047 100644
--- a/staging_vespalib/src/tests/benchmark/CMakeLists.txt
+++ b/staging_vespalib/src/tests/benchmark/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_benchmark_test_app
SOURCES
benchmark.cpp
diff --git a/staging_vespalib/src/tests/benchmark/benchmark.cpp b/staging_vespalib/src/tests/benchmark/benchmark.cpp
index a60e39abaff..f1e69758c8c 100644
--- a/staging_vespalib/src/tests/benchmark/benchmark.cpp
+++ b/staging_vespalib/src/tests/benchmark/benchmark.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include "testbase.h"
diff --git a/staging_vespalib/src/tests/benchmark/benchmark_test.sh b/staging_vespalib/src/tests/benchmark/benchmark_test.sh
index 8232b3fc399..172a8a1379b 100755
--- a/staging_vespalib/src/tests/benchmark/benchmark_test.sh
+++ b/staging_vespalib/src/tests/benchmark/benchmark_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
TIME=time
diff --git a/staging_vespalib/src/tests/benchmark/testbase.cpp b/staging_vespalib/src/tests/benchmark/testbase.cpp
index ff83d1ee9d8..6b5f8d7d627 100644
--- a/staging_vespalib/src/tests/benchmark/testbase.cpp
+++ b/staging_vespalib/src/tests/benchmark/testbase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "testbase.h"
#include <vespa/vespalib/util/time.h>
#include <cassert>
diff --git a/staging_vespalib/src/tests/benchmark/testbase.h b/staging_vespalib/src/tests/benchmark/testbase.h
index 9f5ed6118a1..95621f52471 100644
--- a/staging_vespalib/src/tests/benchmark/testbase.h
+++ b/staging_vespalib/src/tests/benchmark/testbase.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/objects/identifiable.h>
diff --git a/staging_vespalib/src/tests/bits/CMakeLists.txt b/staging_vespalib/src/tests/bits/CMakeLists.txt
index 49c4abe8ed3..36edcf3bb8f 100644
--- a/staging_vespalib/src/tests/bits/CMakeLists.txt
+++ b/staging_vespalib/src/tests/bits/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_bits_test_app TEST
SOURCES
bits_test.cpp
diff --git a/staging_vespalib/src/tests/bits/bits_test.cpp b/staging_vespalib/src/tests/bits/bits_test.cpp
index 1836ad5d725..47d691c739d 100644
--- a/staging_vespalib/src/tests/bits/bits_test.cpp
+++ b/staging_vespalib/src/tests/bits/bits_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/bits.h>
diff --git a/staging_vespalib/src/tests/clock/CMakeLists.txt b/staging_vespalib/src/tests/clock/CMakeLists.txt
index 825c0ae36cb..240ad8d0a55 100644
--- a/staging_vespalib/src/tests/clock/CMakeLists.txt
+++ b/staging_vespalib/src/tests/clock/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_clock_benchmark_app TEST
SOURCES
clock_benchmark.cpp
diff --git a/staging_vespalib/src/tests/clock/clock_benchmark.cpp b/staging_vespalib/src/tests/clock/clock_benchmark.cpp
index 6728d4cc045..36fce181fdb 100644
--- a/staging_vespalib/src/tests/clock/clock_benchmark.cpp
+++ b/staging_vespalib/src/tests/clock/clock_benchmark.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/clock.h>
#include <vespa/fastos/thread.h>
diff --git a/staging_vespalib/src/tests/clock/clock_test.cpp b/staging_vespalib/src/tests/clock/clock_test.cpp
index b1572d11dd7..a7978610ed8 100644
--- a/staging_vespalib/src/tests/clock/clock_test.cpp
+++ b/staging_vespalib/src/tests/clock/clock_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/clock.h>
diff --git a/staging_vespalib/src/tests/crc/CMakeLists.txt b/staging_vespalib/src/tests/crc/CMakeLists.txt
index daab9c6cc44..b6c89d00c54 100644
--- a/staging_vespalib/src/tests/crc/CMakeLists.txt
+++ b/staging_vespalib/src/tests/crc/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_crc_test_app TEST
SOURCES
crc_test.cpp
diff --git a/staging_vespalib/src/tests/crc/crc_test.cpp b/staging_vespalib/src/tests/crc/crc_test.cpp
index 8692cd8f6d5..8afeed487ee 100644
--- a/staging_vespalib/src/tests/crc/crc_test.cpp
+++ b/staging_vespalib/src/tests/crc/crc_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/crc.h>
diff --git a/staging_vespalib/src/tests/directio/CMakeLists.txt b/staging_vespalib/src/tests/directio/CMakeLists.txt
index 0af16f982e8..64da387d950 100644
--- a/staging_vespalib/src/tests/directio/CMakeLists.txt
+++ b/staging_vespalib/src/tests/directio/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_directio_test_app TEST
SOURCES
directio.cpp
diff --git a/staging_vespalib/src/tests/directio/directio.cpp b/staging_vespalib/src/tests/directio/directio.cpp
index 7877216b191..9bc4f244711 100644
--- a/staging_vespalib/src/tests/directio/directio.cpp
+++ b/staging_vespalib/src/tests/directio/directio.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/stllike/string.h>
diff --git a/staging_vespalib/src/tests/encoding/base64/CMakeLists.txt b/staging_vespalib/src/tests/encoding/base64/CMakeLists.txt
index 1e6d6a72530..2c88ab1dc43 100644
--- a/staging_vespalib/src/tests/encoding/base64/CMakeLists.txt
+++ b/staging_vespalib/src/tests/encoding/base64/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_base64_test_app TEST
SOURCES
base64_test.cpp
diff --git a/staging_vespalib/src/tests/encoding/base64/base64_test.cpp b/staging_vespalib/src/tests/encoding/base64/base64_test.cpp
index 50437d954f9..295aad7ffdd 100644
--- a/staging_vespalib/src/tests/encoding/base64/base64_test.cpp
+++ b/staging_vespalib/src/tests/encoding/base64/base64_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/encoding/base64.h>
diff --git a/staging_vespalib/src/tests/fileheader/CMakeLists.txt b/staging_vespalib/src/tests/fileheader/CMakeLists.txt
index 6c3c6efa89a..0312dddb06a 100644
--- a/staging_vespalib/src/tests/fileheader/CMakeLists.txt
+++ b/staging_vespalib/src/tests/fileheader/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_fileheader_test_app TEST
SOURCES
fileheader_test.cpp
diff --git a/staging_vespalib/src/tests/fileheader/fileheader_test.cpp b/staging_vespalib/src/tests/fileheader/fileheader_test.cpp
index f6f9c19b48c..a174ba3ecb6 100644
--- a/staging_vespalib/src/tests/fileheader/fileheader_test.cpp
+++ b/staging_vespalib/src/tests/fileheader/fileheader_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/data/fileheader.h>
diff --git a/staging_vespalib/src/tests/floatingpointtype/CMakeLists.txt b/staging_vespalib/src/tests/floatingpointtype/CMakeLists.txt
index 5e4244bfb79..eca27430e0b 100644
--- a/staging_vespalib/src/tests/floatingpointtype/CMakeLists.txt
+++ b/staging_vespalib/src/tests/floatingpointtype/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_floatingpointtype_test_app TEST
SOURCES
floatingpointtypetest.cpp
diff --git a/staging_vespalib/src/tests/floatingpointtype/floatingpointtypetest.cpp b/staging_vespalib/src/tests/floatingpointtype/floatingpointtypetest.cpp
index 8deca5a5e47..d26385f23bf 100644
--- a/staging_vespalib/src/tests/floatingpointtype/floatingpointtypetest.cpp
+++ b/staging_vespalib/src/tests/floatingpointtype/floatingpointtypetest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/objects/floatingpointtype.h>
diff --git a/staging_vespalib/src/tests/growablebytebuffer/CMakeLists.txt b/staging_vespalib/src/tests/growablebytebuffer/CMakeLists.txt
index 5ac3bc5cc8d..9126bd1cd07 100644
--- a/staging_vespalib/src/tests/growablebytebuffer/CMakeLists.txt
+++ b/staging_vespalib/src/tests/growablebytebuffer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_growablebytebuffer_test_app TEST
SOURCES
growablebytebuffer_test.cpp
diff --git a/staging_vespalib/src/tests/growablebytebuffer/growablebytebuffer_test.cpp b/staging_vespalib/src/tests/growablebytebuffer/growablebytebuffer_test.cpp
index b413528bd65..0a616745023 100644
--- a/staging_vespalib/src/tests/growablebytebuffer/growablebytebuffer_test.cpp
+++ b/staging_vespalib/src/tests/growablebytebuffer/growablebytebuffer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/growablebytebuffer.h>
diff --git a/staging_vespalib/src/tests/json/CMakeLists.txt b/staging_vespalib/src/tests/json/CMakeLists.txt
index a3579db0d16..2ca20be9258 100644
--- a/staging_vespalib/src/tests/json/CMakeLists.txt
+++ b/staging_vespalib/src/tests/json/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_json_test_app TEST
SOURCES
json.cpp
diff --git a/staging_vespalib/src/tests/json/json.cpp b/staging_vespalib/src/tests/json/json.cpp
index 79709c6f8b9..15bb841b8ca 100644
--- a/staging_vespalib/src/tests/json/json.cpp
+++ b/staging_vespalib/src/tests/json/json.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/jsonstream.h>
diff --git a/staging_vespalib/src/tests/memorydatastore/CMakeLists.txt b/staging_vespalib/src/tests/memorydatastore/CMakeLists.txt
index 9e682e43445..f3709aeea65 100644
--- a/staging_vespalib/src/tests/memorydatastore/CMakeLists.txt
+++ b/staging_vespalib/src/tests/memorydatastore/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_memorydatastore_test_app TEST
SOURCES
memorydatastore.cpp
diff --git a/staging_vespalib/src/tests/memorydatastore/memorydatastore.cpp b/staging_vespalib/src/tests/memorydatastore/memorydatastore.cpp
index 6c71d0a2cf6..1d49b0af91b 100644
--- a/staging_vespalib/src/tests/memorydatastore/memorydatastore.cpp
+++ b/staging_vespalib/src/tests/memorydatastore/memorydatastore.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/data/memorydatastore.h>
diff --git a/staging_vespalib/src/tests/metrics/CMakeLists.txt b/staging_vespalib/src/tests/metrics/CMakeLists.txt
index a441631fd15..ae5462c28ea 100644
--- a/staging_vespalib/src/tests/metrics/CMakeLists.txt
+++ b/staging_vespalib/src/tests/metrics/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_metrics_test_app TEST
SOURCES
simple_metrics_test.cpp
diff --git a/staging_vespalib/src/tests/metrics/mock_tick.cpp b/staging_vespalib/src/tests/metrics/mock_tick.cpp
index 68e8d7a7daa..c16ef25cfe6 100644
--- a/staging_vespalib/src/tests/metrics/mock_tick.cpp
+++ b/staging_vespalib/src/tests/metrics/mock_tick.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mock_tick.h"
namespace vespalib::metrics {
diff --git a/staging_vespalib/src/tests/metrics/mock_tick.h b/staging_vespalib/src/tests/metrics/mock_tick.h
index d2e985b5ba3..4d9f6758537 100644
--- a/staging_vespalib/src/tests/metrics/mock_tick.h
+++ b/staging_vespalib/src/tests/metrics/mock_tick.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <atomic>
diff --git a/staging_vespalib/src/tests/metrics/simple_metrics_test.cpp b/staging_vespalib/src/tests/metrics/simple_metrics_test.cpp
index f9f0d5e49dd..3006022a43d 100644
--- a/staging_vespalib/src/tests/metrics/simple_metrics_test.cpp
+++ b/staging_vespalib/src/tests/metrics/simple_metrics_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/data/slime/slime.h>
#include <vespa/vespalib/data/slime/json_format.h>
diff --git a/staging_vespalib/src/tests/metrics/stable_store_test.cpp b/staging_vespalib/src/tests/metrics/stable_store_test.cpp
index 03b6663cd64..cead112069f 100644
--- a/staging_vespalib/src/tests/metrics/stable_store_test.cpp
+++ b/staging_vespalib/src/tests/metrics/stable_store_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/metrics/simple_metrics.h>
#include <vespa/vespalib/metrics/simple_metrics_manager.h>
diff --git a/staging_vespalib/src/tests/objectdump/CMakeLists.txt b/staging_vespalib/src/tests/objectdump/CMakeLists.txt
index 07049b5a2ee..29fc8a748ee 100644
--- a/staging_vespalib/src/tests/objectdump/CMakeLists.txt
+++ b/staging_vespalib/src/tests/objectdump/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_objectdump_test_app TEST
SOURCES
objectdump.cpp
diff --git a/staging_vespalib/src/tests/objectdump/objectdump.cpp b/staging_vespalib/src/tests/objectdump/objectdump.cpp
index d5f51051169..812b1e79e17 100644
--- a/staging_vespalib/src/tests/objectdump/objectdump.cpp
+++ b/staging_vespalib/src/tests/objectdump/objectdump.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/objects/identifiable.h>
diff --git a/staging_vespalib/src/tests/objects/CMakeLists.txt b/staging_vespalib/src/tests/objects/CMakeLists.txt
index 4147f90e69a..f1313da4bae 100644
--- a/staging_vespalib/src/tests/objects/CMakeLists.txt
+++ b/staging_vespalib/src/tests/objects/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_identifiable_test_app TEST
SOURCES
identifiable_test.cpp
diff --git a/staging_vespalib/src/tests/objects/identifiable_test.cpp b/staging_vespalib/src/tests/objects/identifiable_test.cpp
index 2b4d50cc786..bc20a525d23 100644
--- a/staging_vespalib/src/tests/objects/identifiable_test.cpp
+++ b/staging_vespalib/src/tests/objects/identifiable_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/objects/identifiable.hpp>
diff --git a/staging_vespalib/src/tests/objectselection/CMakeLists.txt b/staging_vespalib/src/tests/objectselection/CMakeLists.txt
index 0046551c4af..63f33d05e62 100644
--- a/staging_vespalib/src/tests/objectselection/CMakeLists.txt
+++ b/staging_vespalib/src/tests/objectselection/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_objectselection_test_app TEST
SOURCES
objectselection.cpp
diff --git a/staging_vespalib/src/tests/objectselection/objectselection.cpp b/staging_vespalib/src/tests/objectselection/objectselection.cpp
index edf0a6b6a9f..aa9c841f2dc 100644
--- a/staging_vespalib/src/tests/objectselection/objectselection.cpp
+++ b/staging_vespalib/src/tests/objectselection/objectselection.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/objects/identifiable.hpp>
diff --git a/staging_vespalib/src/tests/polymorphicarray/CMakeLists.txt b/staging_vespalib/src/tests/polymorphicarray/CMakeLists.txt
index cf2a848f3a2..3c7e6074b88 100644
--- a/staging_vespalib/src/tests/polymorphicarray/CMakeLists.txt
+++ b/staging_vespalib/src/tests/polymorphicarray/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_polymorphicarray_test_app TEST
SOURCES
polymorphicarray_test.cpp
diff --git a/staging_vespalib/src/tests/polymorphicarray/polymorphicarray_test.cpp b/staging_vespalib/src/tests/polymorphicarray/polymorphicarray_test.cpp
index 49bc52d6239..d4ec8f3ed7c 100644
--- a/staging_vespalib/src/tests/polymorphicarray/polymorphicarray_test.cpp
+++ b/staging_vespalib/src/tests/polymorphicarray/polymorphicarray_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/polymorphicarrays.h>
diff --git a/staging_vespalib/src/tests/programoptions/CMakeLists.txt b/staging_vespalib/src/tests/programoptions/CMakeLists.txt
index 4ecc2859612..a4d71815621 100644
--- a/staging_vespalib/src/tests/programoptions/CMakeLists.txt
+++ b/staging_vespalib/src/tests/programoptions/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_programoptions_test_app TEST
SOURCES
programoptions_test.cpp
diff --git a/staging_vespalib/src/tests/programoptions/programoptions_test.cpp b/staging_vespalib/src/tests/programoptions/programoptions_test.cpp
index 28c85ee10a4..4a5be1d1397 100644
--- a/staging_vespalib/src/tests/programoptions/programoptions_test.cpp
+++ b/staging_vespalib/src/tests/programoptions/programoptions_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/programoptions.h>
diff --git a/staging_vespalib/src/tests/rusage/CMakeLists.txt b/staging_vespalib/src/tests/rusage/CMakeLists.txt
index 313b272d079..b52a47183b0 100644
--- a/staging_vespalib/src/tests/rusage/CMakeLists.txt
+++ b/staging_vespalib/src/tests/rusage/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_rusage_test_app TEST
SOURCES
rusage_test.cpp
diff --git a/staging_vespalib/src/tests/rusage/rusage_test.cpp b/staging_vespalib/src/tests/rusage/rusage_test.cpp
index 0f2992e09e8..7e30f3b968b 100644
--- a/staging_vespalib/src/tests/rusage/rusage_test.cpp
+++ b/staging_vespalib/src/tests/rusage/rusage_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/rusage.h>
diff --git a/staging_vespalib/src/tests/sequencedtaskexecutor/CMakeLists.txt b/staging_vespalib/src/tests/sequencedtaskexecutor/CMakeLists.txt
index 6895eafd94a..cc851f668da 100644
--- a/staging_vespalib/src/tests/sequencedtaskexecutor/CMakeLists.txt
+++ b/staging_vespalib/src/tests/sequencedtaskexecutor/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_sequencedtaskexecutor_benchmark_app TEST
SOURCES
sequencedtaskexecutor_benchmark.cpp
diff --git a/staging_vespalib/src/tests/sequencedtaskexecutor/foregroundtaskexecutor_test.cpp b/staging_vespalib/src/tests/sequencedtaskexecutor/foregroundtaskexecutor_test.cpp
index 6df3b83f90f..ae01452c46b 100644
--- a/staging_vespalib/src/tests/sequencedtaskexecutor/foregroundtaskexecutor_test.cpp
+++ b/staging_vespalib/src/tests/sequencedtaskexecutor/foregroundtaskexecutor_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/foregroundtaskexecutor.h>
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/staging_vespalib/src/tests/sequencedtaskexecutor/sequencedtaskexecutor_test.cpp b/staging_vespalib/src/tests/sequencedtaskexecutor/sequencedtaskexecutor_test.cpp
index d36664d3b1f..705c7174c4a 100644
--- a/staging_vespalib/src/tests/sequencedtaskexecutor/sequencedtaskexecutor_test.cpp
+++ b/staging_vespalib/src/tests/sequencedtaskexecutor/sequencedtaskexecutor_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/sequencedtaskexecutor.h>
#include <vespa/vespalib/util/adaptive_sequenced_executor.h>
diff --git a/staging_vespalib/src/tests/shutdownguard/CMakeLists.txt b/staging_vespalib/src/tests/shutdownguard/CMakeLists.txt
index 62eefe82d50..b1d43788957 100644
--- a/staging_vespalib/src/tests/shutdownguard/CMakeLists.txt
+++ b/staging_vespalib/src/tests/shutdownguard/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_shutdownguard_test_app TEST
SOURCES
shutdownguard_test.cpp
diff --git a/staging_vespalib/src/tests/shutdownguard/shutdownguard_test.cpp b/staging_vespalib/src/tests/shutdownguard/shutdownguard_test.cpp
index 24607add153..79777cdd53f 100644
--- a/staging_vespalib/src/tests/shutdownguard/shutdownguard_test.cpp
+++ b/staging_vespalib/src/tests/shutdownguard/shutdownguard_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/shutdownguard.h>
#include <thread>
diff --git a/staging_vespalib/src/tests/singleexecutor/CMakeLists.txt b/staging_vespalib/src/tests/singleexecutor/CMakeLists.txt
index c5d42d2c8c5..8ff0ff1989a 100644
--- a/staging_vespalib/src/tests/singleexecutor/CMakeLists.txt
+++ b/staging_vespalib/src/tests/singleexecutor/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_singleexecutor_test_app TEST
SOURCES
singleexecutor_test.cpp
diff --git a/staging_vespalib/src/tests/singleexecutor/singleexecutor_test.cpp b/staging_vespalib/src/tests/singleexecutor/singleexecutor_test.cpp
index 929c6e9d966..732ab122546 100644
--- a/staging_vespalib/src/tests/singleexecutor/singleexecutor_test.cpp
+++ b/staging_vespalib/src/tests/singleexecutor/singleexecutor_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/staging_vespalib/src/tests/state_server/CMakeLists.txt b/staging_vespalib/src/tests/state_server/CMakeLists.txt
index cd179a6caeb..fc22d8b9178 100644
--- a/staging_vespalib/src/tests/state_server/CMakeLists.txt
+++ b/staging_vespalib/src/tests/state_server/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_state_server_test_app TEST
SOURCES
state_server_test.cpp
diff --git a/staging_vespalib/src/tests/state_server/state_server_test.cpp b/staging_vespalib/src/tests/state_server/state_server_test.cpp
index 2a07de10968..a7b72cd505e 100644
--- a/staging_vespalib/src/tests/state_server/state_server_test.cpp
+++ b/staging_vespalib/src/tests/state_server/state_server_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <fcntl.h>
#include <stdlib.h>
diff --git a/staging_vespalib/src/tests/stllike/CMakeLists.txt b/staging_vespalib/src/tests/stllike/CMakeLists.txt
index e9482e4e25a..40dc7a8a438 100644
--- a/staging_vespalib/src/tests/stllike/CMakeLists.txt
+++ b/staging_vespalib/src/tests/stllike/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_lrucache_test_app TEST
SOURCES
lrucache.cpp
diff --git a/staging_vespalib/src/tests/stllike/cache_test.cpp b/staging_vespalib/src/tests/stllike/cache_test.cpp
index 6e852644602..35f04d91510 100644
--- a/staging_vespalib/src/tests/stllike/cache_test.cpp
+++ b/staging_vespalib/src/tests/stllike/cache_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/stllike/string.h>
diff --git a/staging_vespalib/src/tests/stllike/lrucache.cpp b/staging_vespalib/src/tests/stllike/lrucache.cpp
index 7dff35ae842..a23fec26448 100644
--- a/staging_vespalib/src/tests/stllike/lrucache.cpp
+++ b/staging_vespalib/src/tests/stllike/lrucache.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/stllike/string.h>
diff --git a/staging_vespalib/src/tests/timer/CMakeLists.txt b/staging_vespalib/src/tests/timer/CMakeLists.txt
index e4d74e5e9d5..9fd12f11c7c 100644
--- a/staging_vespalib/src/tests/timer/CMakeLists.txt
+++ b/staging_vespalib/src/tests/timer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_timer_test_app TEST
SOURCES
timer_test.cpp
diff --git a/staging_vespalib/src/tests/timer/timer_test.cpp b/staging_vespalib/src/tests/timer/timer_test.cpp
index 2031e3cdcbe..9d04500b8cd 100644
--- a/staging_vespalib/src/tests/timer/timer_test.cpp
+++ b/staging_vespalib/src/tests/timer/timer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/scheduledexecutor.h>
diff --git a/staging_vespalib/src/tests/util/process_memory_stats/CMakeLists.txt b/staging_vespalib/src/tests/util/process_memory_stats/CMakeLists.txt
index 96686a51136..6709c7bac1b 100644
--- a/staging_vespalib/src/tests/util/process_memory_stats/CMakeLists.txt
+++ b/staging_vespalib/src/tests/util/process_memory_stats/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_process_memory_stats_test_app TEST
SOURCES
process_memory_stats_test.cpp
diff --git a/staging_vespalib/src/tests/util/process_memory_stats/process_memory_stats_test.cpp b/staging_vespalib/src/tests/util/process_memory_stats/process_memory_stats_test.cpp
index 0d33a27edbf..6d0917e6d15 100644
--- a/staging_vespalib/src/tests/util/process_memory_stats/process_memory_stats_test.cpp
+++ b/staging_vespalib/src/tests/util/process_memory_stats/process_memory_stats_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/process_memory_stats.h>
diff --git a/staging_vespalib/src/tests/util/process_memory_stats/process_memory_stats_test.sh b/staging_vespalib/src/tests/util/process_memory_stats/process_memory_stats_test.sh
index 62f687d2840..6441a5e3039 100755
--- a/staging_vespalib/src/tests/util/process_memory_stats/process_memory_stats_test.sh
+++ b/staging_vespalib/src/tests/util/process_memory_stats/process_memory_stats_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
rm -f mapfile
$VALGRIND ./staging_vespalib_process_memory_stats_test_app
diff --git a/staging_vespalib/src/tests/xmlserializable/CMakeLists.txt b/staging_vespalib/src/tests/xmlserializable/CMakeLists.txt
index 0a27aeec028..999bc45ad66 100644
--- a/staging_vespalib/src/tests/xmlserializable/CMakeLists.txt
+++ b/staging_vespalib/src/tests/xmlserializable/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(staging_vespalib_xmlserializable_test_app TEST
SOURCES
xmlserializabletest.cpp
diff --git a/staging_vespalib/src/tests/xmlserializable/xmlserializabletest.cpp b/staging_vespalib/src/tests/xmlserializable/xmlserializabletest.cpp
index a389ada2214..4ea3eb2fff2 100644
--- a/staging_vespalib/src/tests/xmlserializable/xmlserializabletest.cpp
+++ b/staging_vespalib/src/tests/xmlserializable/xmlserializabletest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/xmlstream.h>
diff --git a/staging_vespalib/src/vespa/vespalib/CMakeLists.txt b/staging_vespalib/src/vespa/vespalib/CMakeLists.txt
index 76c69284839..43492d06689 100644
--- a/staging_vespalib/src/vespa/vespalib/CMakeLists.txt
+++ b/staging_vespalib/src/vespa/vespalib/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(staging_vespalib
SOURCES
$<TARGET_OBJECTS:staging_vespalib_vespalib_encoding>
diff --git a/staging_vespalib/src/vespa/vespalib/data/CMakeLists.txt b/staging_vespalib/src/vespa/vespalib/data/CMakeLists.txt
index 8ca70d2a63d..d5adeadfb3b 100644
--- a/staging_vespalib/src/vespa/vespalib/data/CMakeLists.txt
+++ b/staging_vespalib/src/vespa/vespalib/data/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(staging_vespalib_vespalib_data OBJECT
SOURCES
fileheader.cpp
diff --git a/staging_vespalib/src/vespa/vespalib/data/fileheader.cpp b/staging_vespalib/src/vespa/vespalib/data/fileheader.cpp
index d166702ab3a..0cb5fa14ff4 100644
--- a/staging_vespalib/src/vespa/vespalib/data/fileheader.cpp
+++ b/staging_vespalib/src/vespa/vespalib/data/fileheader.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fileheader.h"
#include <vespa/vespalib/stllike/asciistream.h>
#include <vespa/vespalib/data/databuffer.h>
diff --git a/staging_vespalib/src/vespa/vespalib/data/fileheader.h b/staging_vespalib/src/vespa/vespalib/data/fileheader.h
index ab57f312c4d..ca475971932 100644
--- a/staging_vespalib/src/vespa/vespalib/data/fileheader.h
+++ b/staging_vespalib/src/vespa/vespalib/data/fileheader.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/exception.h>
diff --git a/staging_vespalib/src/vespa/vespalib/encoding/CMakeLists.txt b/staging_vespalib/src/vespa/vespalib/encoding/CMakeLists.txt
index bb424121468..48fed5ae1cc 100644
--- a/staging_vespalib/src/vespa/vespalib/encoding/CMakeLists.txt
+++ b/staging_vespalib/src/vespa/vespalib/encoding/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(staging_vespalib_vespalib_encoding OBJECT
SOURCES
base64.cpp
diff --git a/staging_vespalib/src/vespa/vespalib/encoding/base64.cpp b/staging_vespalib/src/vespa/vespalib/encoding/base64.cpp
index 5dfe9d27839..bad3c168b15 100644
--- a/staging_vespalib/src/vespa/vespalib/encoding/base64.cpp
+++ b/staging_vespalib/src/vespa/vespalib/encoding/base64.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
*
* $Id$
diff --git a/staging_vespalib/src/vespa/vespalib/encoding/base64.h b/staging_vespalib/src/vespa/vespalib/encoding/base64.h
index a2e645b1d8a..e54ae5765d9 100644
--- a/staging_vespalib/src/vespa/vespalib/encoding/base64.h
+++ b/staging_vespalib/src/vespa/vespalib/encoding/base64.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class vespalib::Base64
* @group util
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/CMakeLists.txt b/staging_vespalib/src/vespa/vespalib/metrics/CMakeLists.txt
index 6015ea8c621..efe9e848136 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/CMakeLists.txt
+++ b/staging_vespalib/src/vespa/vespalib/metrics/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(staging_vespalib_vespalib_metrics OBJECT
SOURCES
bucket.cpp
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/bucket.cpp b/staging_vespalib/src/vespa/vespalib/metrics/bucket.cpp
index 2cf51be3494..8d4d5558c3d 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/bucket.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/bucket.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucket.h"
#include <assert.h>
#include <map>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/bucket.h b/staging_vespalib/src/vespa/vespalib/metrics/bucket.h
index a1d0dff49f3..75387aad1b3 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/bucket.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/bucket.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <mutex>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/clock.cpp b/staging_vespalib/src/vespa/vespalib/metrics/clock.cpp
index 82144da895d..8593e07998e 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/clock.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/clock.cpp
@@ -1,2 +1,2 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "clock.h"
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/clock.h b/staging_vespalib/src/vespa/vespalib/metrics/clock.h
index 2af2ad89427..e1b0a7da003 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/clock.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/clock.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <chrono>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/counter.cpp b/staging_vespalib/src/vespa/vespalib/metrics/counter.cpp
index a44fca245eb..2b94ffce842 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/counter.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/counter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "counter.h"
#include "metrics_manager.h"
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/counter.h b/staging_vespalib/src/vespa/vespalib/metrics/counter.h
index 4a7021d3887..751c2cc3806 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/counter.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/counter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/counter_aggregator.cpp b/staging_vespalib/src/vespa/vespalib/metrics/counter_aggregator.cpp
index a02cc1e7a7e..583bb6e9a1c 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/counter_aggregator.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/counter_aggregator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "counter_aggregator.h"
#include <assert.h>
#include <map>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/counter_aggregator.h b/staging_vespalib/src/vespa/vespalib/metrics/counter_aggregator.h
index 4e3524f9cc8..c650b67dad3 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/counter_aggregator.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/counter_aggregator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "metric_id.h"
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/current_samples.cpp b/staging_vespalib/src/vespa/vespalib/metrics/current_samples.cpp
index 55211717973..67d56d6f748 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/current_samples.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/current_samples.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "current_samples.h"
namespace vespalib {
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/current_samples.h b/staging_vespalib/src/vespa/vespalib/metrics/current_samples.h
index 1b87b135aa2..4056a4bb6aa 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/current_samples.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/current_samples.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <mutex>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/dimension.cpp b/staging_vespalib/src/vespa/vespalib/metrics/dimension.cpp
index 1877a986c3e..bea751a6680 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/dimension.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/dimension.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dimension.h"
#include "name_repo.h"
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/dimension.h b/staging_vespalib/src/vespa/vespalib/metrics/dimension.h
index e367e50d8f5..7a3942b705c 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/dimension.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/dimension.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/dummy_metrics_manager.cpp b/staging_vespalib/src/vespa/vespalib/metrics/dummy_metrics_manager.cpp
index 7909ec7486e..13cab477b2e 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/dummy_metrics_manager.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/dummy_metrics_manager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dummy_metrics_manager.h"
namespace vespalib::metrics {
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/dummy_metrics_manager.h b/staging_vespalib/src/vespa/vespalib/metrics/dummy_metrics_manager.h
index 1536888014a..a707c3a5305 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/dummy_metrics_manager.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/dummy_metrics_manager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/gauge.cpp b/staging_vespalib/src/vespa/vespalib/metrics/gauge.cpp
index a1ab9d25078..ca6b11697b4 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/gauge.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/gauge.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "gauge.h"
#include "metrics_manager.h"
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/gauge.h b/staging_vespalib/src/vespa/vespalib/metrics/gauge.h
index cbdd857c052..59de4a6fe4d 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/gauge.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/gauge.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/gauge_aggregator.cpp b/staging_vespalib/src/vespa/vespalib/metrics/gauge_aggregator.cpp
index 84ce8aef28d..a6c4559931f 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/gauge_aggregator.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/gauge_aggregator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "gauge_aggregator.h"
#include <assert.h>
#include <map>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/gauge_aggregator.h b/staging_vespalib/src/vespa/vespalib/metrics/gauge_aggregator.h
index 980a68899ce..f4fd4760cf1 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/gauge_aggregator.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/gauge_aggregator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "metric_id.h"
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/handle.cpp b/staging_vespalib/src/vespa/vespalib/metrics/handle.cpp
index 2b806caeaea..50143adedd2 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/handle.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/handle.cpp
@@ -1,2 +1,2 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "handle.h"
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/handle.h b/staging_vespalib/src/vespa/vespalib/metrics/handle.h
index 8ba2197a55b..b901f56af7e 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/handle.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/handle.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstddef>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/json_formatter.cpp b/staging_vespalib/src/vespa/vespalib/metrics/json_formatter.cpp
index 11c4a9d34b2..dddc5781458 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/json_formatter.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/json_formatter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "json_formatter.h"
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/json_formatter.h b/staging_vespalib/src/vespa/vespalib/metrics/json_formatter.h
index 672b71766ae..f9d3664e5db 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/json_formatter.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/json_formatter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/label.cpp b/staging_vespalib/src/vespa/vespalib/metrics/label.cpp
index 3de952b252d..fe287e16d46 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/label.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/label.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "label.h"
#include "name_repo.h"
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/label.h b/staging_vespalib/src/vespa/vespalib/metrics/label.h
index 561c8061991..755b3e83bef 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/label.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/label.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/metric_id.cpp b/staging_vespalib/src/vespa/vespalib/metrics/metric_id.cpp
index 2b8c0705a9f..7ce012ad5fd 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/metric_id.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/metric_id.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "metric_id.h"
#include "name_repo.h"
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/metric_id.h b/staging_vespalib/src/vespa/vespalib/metrics/metric_id.h
index 5f337e6decd..5aa9d1b868e 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/metric_id.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/metric_id.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "handle.h"
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/metric_types.cpp b/staging_vespalib/src/vespa/vespalib/metrics/metric_types.cpp
index 1d8b1fe2a01..196dfaed16a 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/metric_types.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/metric_types.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "metric_types.h"
#include <assert.h>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/metric_types.h b/staging_vespalib/src/vespa/vespalib/metrics/metric_types.h
index 5c764dcc74e..e8118b6bd63 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/metric_types.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/metric_types.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <mutex>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/metrics_manager.cpp b/staging_vespalib/src/vespa/vespalib/metrics/metrics_manager.cpp
index be6612bd869..3d598528777 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/metrics_manager.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/metrics_manager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "metrics_manager.h"
namespace vespalib {
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/metrics_manager.h b/staging_vespalib/src/vespa/vespalib/metrics/metrics_manager.h
index 5095c2acdbf..6b80527b22e 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/metrics_manager.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/metrics_manager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/name_collection.cpp b/staging_vespalib/src/vespa/vespalib/metrics/name_collection.cpp
index 747d3b5a5cf..964fd9c59a8 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/name_collection.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/name_collection.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "name_collection.h"
#include <cassert>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/name_collection.h b/staging_vespalib/src/vespa/vespalib/metrics/name_collection.h
index d961e1df3f7..bef614b5a68 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/name_collection.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/name_collection.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <mutex>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/name_repo.cpp b/staging_vespalib/src/vespa/vespalib/metrics/name_repo.cpp
index 9e3683d465f..2f31c90da29 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/name_repo.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/name_repo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "name_repo.h"
#include <vespa/log/log.h>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/name_repo.h b/staging_vespalib/src/vespa/vespalib/metrics/name_repo.h
index a8c0d77d8b9..e2230cf59d9 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/name_repo.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/name_repo.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/point.cpp b/staging_vespalib/src/vespa/vespalib/metrics/point.cpp
index 6ad402a1233..b4d3d6e2738 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/point.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/point.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "point.h"
#include "name_repo.h"
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/point.h b/staging_vespalib/src/vespa/vespalib/metrics/point.h
index d152d91978e..a8f483c4404 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/point.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/point.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "handle.h"
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/point_builder.cpp b/staging_vespalib/src/vespa/vespalib/metrics/point_builder.cpp
index 7d99ce8a0a2..d085228c1a8 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/point_builder.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/point_builder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "point.h"
#include "metrics_manager.h"
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/point_builder.h b/staging_vespalib/src/vespa/vespalib/metrics/point_builder.h
index ece05089acd..d9c4b5a114f 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/point_builder.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/point_builder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/point_map.cpp b/staging_vespalib/src/vespa/vespalib/metrics/point_map.cpp
index 6e9ab4d1801..cd5909707e3 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/point_map.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/point_map.cpp
@@ -1,2 +1,2 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "point_map.h"
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/point_map.h b/staging_vespalib/src/vespa/vespalib/metrics/point_map.h
index a1063ce944a..7a435389566 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/point_map.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/point_map.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <map>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/point_map_collection.cpp b/staging_vespalib/src/vespa/vespalib/metrics/point_map_collection.cpp
index 892a1abcb36..d9b7362521b 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/point_map_collection.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/point_map_collection.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "point_map_collection.h"
#include <assert.h>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/point_map_collection.h b/staging_vespalib/src/vespa/vespalib/metrics/point_map_collection.h
index adbd7f53725..ee556ea2107 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/point_map_collection.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/point_map_collection.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <mutex>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/producer.cpp b/staging_vespalib/src/vespa/vespalib/metrics/producer.cpp
index ae8d6d76eac..de3ed5d368f 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/producer.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/producer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "producer.h"
#include "metrics_manager.h"
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/producer.h b/staging_vespalib/src/vespa/vespalib/metrics/producer.h
index 387d94379b7..ac741b4e82d 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/producer.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/producer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics.cpp b/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics.cpp
index d9bd3f00892..d438426518c 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simple_metrics.h"
namespace vespalib {
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics.h b/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics.h
index 5c251d14e17..e558e93a638 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vector>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics_manager.cpp b/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics_manager.cpp
index 85cb1c8c2ca..4b6b82697f7 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics_manager.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics_manager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simple_metrics_manager.h"
#include "simple_tick.h"
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics_manager.h b/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics_manager.h
index f41f3355bfa..fe3023ae020 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics_manager.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics_manager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <atomic>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/simple_tick.cpp b/staging_vespalib/src/vespa/vespalib/metrics/simple_tick.cpp
index 31a04e67ac4..0eed2ed3400 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/simple_tick.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/simple_tick.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simple_tick.h"
namespace vespalib::metrics {
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/simple_tick.h b/staging_vespalib/src/vespa/vespalib/metrics/simple_tick.h
index 74b9d88d255..8ab18e74c83 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/simple_tick.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/simple_tick.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "clock.h"
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/snapshots.cpp b/staging_vespalib/src/vespa/vespalib/metrics/snapshots.cpp
index 1e491fa29e3..6ef9dca1e26 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/snapshots.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/snapshots.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "snapshots.h"
namespace vespalib::metrics {
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/snapshots.h b/staging_vespalib/src/vespa/vespalib/metrics/snapshots.h
index ae8ec7e6531..2d2f29e7c23 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/snapshots.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/snapshots.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/stable_store.cpp b/staging_vespalib/src/vespa/vespalib/metrics/stable_store.cpp
index dd649133988..dcb18d0cc82 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/stable_store.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/stable_store.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "stable_store.h"
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/stable_store.h b/staging_vespalib/src/vespa/vespalib/metrics/stable_store.h
index b62e0f2a94e..289d8f84d23 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/stable_store.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/stable_store.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/net/CMakeLists.txt b/staging_vespalib/src/vespa/vespalib/net/CMakeLists.txt
index dd4aa0e1af8..f4d0ffdbc4a 100644
--- a/staging_vespalib/src/vespa/vespalib/net/CMakeLists.txt
+++ b/staging_vespalib/src/vespa/vespalib/net/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(staging_vespalib_vespalib_net OBJECT
SOURCES
component_config_producer.cpp
diff --git a/staging_vespalib/src/vespa/vespalib/net/component_config_producer.cpp b/staging_vespalib/src/vespa/vespalib/net/component_config_producer.cpp
index a0158812b89..9011ff9abc9 100644
--- a/staging_vespalib/src/vespa/vespalib/net/component_config_producer.cpp
+++ b/staging_vespalib/src/vespa/vespalib/net/component_config_producer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "component_config_producer.h"
diff --git a/staging_vespalib/src/vespa/vespalib/net/component_config_producer.h b/staging_vespalib/src/vespa/vespalib/net/component_config_producer.h
index f83ac1f3f72..81ba8f8b03d 100644
--- a/staging_vespalib/src/vespa/vespalib/net/component_config_producer.h
+++ b/staging_vespalib/src/vespa/vespalib/net/component_config_producer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/net/generic_state_handler.cpp b/staging_vespalib/src/vespa/vespalib/net/generic_state_handler.cpp
index b8fc432e95b..91fc6d7e617 100644
--- a/staging_vespalib/src/vespa/vespalib/net/generic_state_handler.cpp
+++ b/staging_vespalib/src/vespa/vespalib/net/generic_state_handler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "generic_state_handler.h"
#include <vespa/vespalib/data/slime/slime.h>
diff --git a/staging_vespalib/src/vespa/vespalib/net/generic_state_handler.h b/staging_vespalib/src/vespa/vespalib/net/generic_state_handler.h
index 857a3e38ea9..6065aa165ec 100644
--- a/staging_vespalib/src/vespa/vespalib/net/generic_state_handler.h
+++ b/staging_vespalib/src/vespa/vespalib/net/generic_state_handler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/net/health_producer.h b/staging_vespalib/src/vespa/vespalib/net/health_producer.h
index 7bfb8735463..a16ffbd225f 100644
--- a/staging_vespalib/src/vespa/vespalib/net/health_producer.h
+++ b/staging_vespalib/src/vespa/vespalib/net/health_producer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/net/http_server.cpp b/staging_vespalib/src/vespa/vespalib/net/http_server.cpp
index 2a3bb5b3e0e..f2c041cb648 100644
--- a/staging_vespalib/src/vespa/vespalib/net/http_server.cpp
+++ b/staging_vespalib/src/vespa/vespalib/net/http_server.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "http_server.h"
#include <vespa/vespalib/net/crypto_engine.h>
diff --git a/staging_vespalib/src/vespa/vespalib/net/http_server.h b/staging_vespalib/src/vespa/vespalib/net/http_server.h
index 4346ef65063..3d4cd557b58 100644
--- a/staging_vespalib/src/vespa/vespalib/net/http_server.h
+++ b/staging_vespalib/src/vespa/vespalib/net/http_server.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/net/json_get_handler.h b/staging_vespalib/src/vespa/vespalib/net/json_get_handler.h
index 62a8b1bfcf7..d257bd0285f 100644
--- a/staging_vespalib/src/vespa/vespalib/net/json_get_handler.h
+++ b/staging_vespalib/src/vespa/vespalib/net/json_get_handler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/net/json_handler_repo.cpp b/staging_vespalib/src/vespa/vespalib/net/json_handler_repo.cpp
index 3082615c59e..07b9306b5dc 100644
--- a/staging_vespalib/src/vespa/vespalib/net/json_handler_repo.cpp
+++ b/staging_vespalib/src/vespa/vespalib/net/json_handler_repo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "json_handler_repo.h"
#include <algorithm>
diff --git a/staging_vespalib/src/vespa/vespalib/net/json_handler_repo.h b/staging_vespalib/src/vespa/vespalib/net/json_handler_repo.h
index 593f9366b0b..adbe3010f43 100644
--- a/staging_vespalib/src/vespa/vespalib/net/json_handler_repo.h
+++ b/staging_vespalib/src/vespa/vespalib/net/json_handler_repo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/net/metrics_producer.h b/staging_vespalib/src/vespa/vespalib/net/metrics_producer.h
index 82843426e60..d57797d75f6 100644
--- a/staging_vespalib/src/vespa/vespalib/net/metrics_producer.h
+++ b/staging_vespalib/src/vespa/vespalib/net/metrics_producer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/net/simple_component_config_producer.cpp b/staging_vespalib/src/vespa/vespalib/net/simple_component_config_producer.cpp
index d4fe0ef43e1..3fa5f09033f 100644
--- a/staging_vespalib/src/vespa/vespalib/net/simple_component_config_producer.cpp
+++ b/staging_vespalib/src/vespa/vespalib/net/simple_component_config_producer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simple_component_config_producer.h"
diff --git a/staging_vespalib/src/vespa/vespalib/net/simple_component_config_producer.h b/staging_vespalib/src/vespa/vespalib/net/simple_component_config_producer.h
index 70dd00a8792..2f0cc0cf1fa 100644
--- a/staging_vespalib/src/vespa/vespalib/net/simple_component_config_producer.h
+++ b/staging_vespalib/src/vespa/vespalib/net/simple_component_config_producer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/net/simple_health_producer.cpp b/staging_vespalib/src/vespa/vespalib/net/simple_health_producer.cpp
index a25888399c1..3c1959608e9 100644
--- a/staging_vespalib/src/vespa/vespalib/net/simple_health_producer.cpp
+++ b/staging_vespalib/src/vespa/vespalib/net/simple_health_producer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simple_health_producer.h"
#include <vespa/defaults.h>
diff --git a/staging_vespalib/src/vespa/vespalib/net/simple_health_producer.h b/staging_vespalib/src/vespa/vespalib/net/simple_health_producer.h
index fc89f5c7644..b2a7725b89e 100644
--- a/staging_vespalib/src/vespa/vespalib/net/simple_health_producer.h
+++ b/staging_vespalib/src/vespa/vespalib/net/simple_health_producer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/net/simple_metric_snapshot.cpp b/staging_vespalib/src/vespa/vespalib/net/simple_metric_snapshot.cpp
index c80a2f3fa1f..cad2a3567aa 100644
--- a/staging_vespalib/src/vespa/vespalib/net/simple_metric_snapshot.cpp
+++ b/staging_vespalib/src/vespa/vespalib/net/simple_metric_snapshot.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simple_metric_snapshot.h"
diff --git a/staging_vespalib/src/vespa/vespalib/net/simple_metric_snapshot.h b/staging_vespalib/src/vespa/vespalib/net/simple_metric_snapshot.h
index 361df6bbeef..e19f26bd5d0 100644
--- a/staging_vespalib/src/vespa/vespalib/net/simple_metric_snapshot.h
+++ b/staging_vespalib/src/vespa/vespalib/net/simple_metric_snapshot.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/net/simple_metrics_producer.cpp b/staging_vespalib/src/vespa/vespalib/net/simple_metrics_producer.cpp
index b39bc96a5b6..1c4539d70ee 100644
--- a/staging_vespalib/src/vespa/vespalib/net/simple_metrics_producer.cpp
+++ b/staging_vespalib/src/vespa/vespalib/net/simple_metrics_producer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simple_metrics_producer.h"
diff --git a/staging_vespalib/src/vespa/vespalib/net/simple_metrics_producer.h b/staging_vespalib/src/vespa/vespalib/net/simple_metrics_producer.h
index fdcf1dce6b6..ad463c63d57 100644
--- a/staging_vespalib/src/vespa/vespalib/net/simple_metrics_producer.h
+++ b/staging_vespalib/src/vespa/vespalib/net/simple_metrics_producer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/net/slime_explorer.cpp b/staging_vespalib/src/vespa/vespalib/net/slime_explorer.cpp
index f853941d630..dc61f673233 100644
--- a/staging_vespalib/src/vespa/vespalib/net/slime_explorer.cpp
+++ b/staging_vespalib/src/vespa/vespalib/net/slime_explorer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "slime_explorer.h"
diff --git a/staging_vespalib/src/vespa/vespalib/net/slime_explorer.h b/staging_vespalib/src/vespa/vespalib/net/slime_explorer.h
index 915bb1f618e..cbb0a89e36d 100644
--- a/staging_vespalib/src/vespa/vespalib/net/slime_explorer.h
+++ b/staging_vespalib/src/vespa/vespalib/net/slime_explorer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/net/state_api.cpp b/staging_vespalib/src/vespa/vespalib/net/state_api.cpp
index 8241c63f931..ca00713352f 100644
--- a/staging_vespalib/src/vespa/vespalib/net/state_api.cpp
+++ b/staging_vespalib/src/vespa/vespalib/net/state_api.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "state_api.h"
#include <vespa/vespalib/util/jsonwriter.h>
diff --git a/staging_vespalib/src/vespa/vespalib/net/state_api.h b/staging_vespalib/src/vespa/vespalib/net/state_api.h
index 2f49bed207d..2bdf320d091 100644
--- a/staging_vespalib/src/vespa/vespalib/net/state_api.h
+++ b/staging_vespalib/src/vespa/vespalib/net/state_api.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/net/state_explorer.cpp b/staging_vespalib/src/vespa/vespalib/net/state_explorer.cpp
index 42b4c274337..627b70a92fc 100644
--- a/staging_vespalib/src/vespa/vespalib/net/state_explorer.cpp
+++ b/staging_vespalib/src/vespa/vespalib/net/state_explorer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "state_explorer.h"
diff --git a/staging_vespalib/src/vespa/vespalib/net/state_explorer.h b/staging_vespalib/src/vespa/vespalib/net/state_explorer.h
index 21ecff18361..01cb94663b3 100644
--- a/staging_vespalib/src/vespa/vespalib/net/state_explorer.h
+++ b/staging_vespalib/src/vespa/vespalib/net/state_explorer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/net/state_server.cpp b/staging_vespalib/src/vespa/vespalib/net/state_server.cpp
index 3d238b07463..8d927387727 100644
--- a/staging_vespalib/src/vespa/vespalib/net/state_server.cpp
+++ b/staging_vespalib/src/vespa/vespalib/net/state_server.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "state_server.h"
diff --git a/staging_vespalib/src/vespa/vespalib/net/state_server.h b/staging_vespalib/src/vespa/vespalib/net/state_server.h
index 077f87ea579..22152fe1a1f 100644
--- a/staging_vespalib/src/vespa/vespalib/net/state_server.h
+++ b/staging_vespalib/src/vespa/vespalib/net/state_server.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/objects/CMakeLists.txt b/staging_vespalib/src/vespa/vespalib/objects/CMakeLists.txt
index 5e21426cacd..6300cad0c72 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/CMakeLists.txt
+++ b/staging_vespalib/src/vespa/vespalib/objects/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(staging_vespalib_vespalib_objects OBJECT
SOURCES
identifiable.cpp
diff --git a/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.cpp b/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.cpp
index 1ec2e5d0bfd..fadaea9b054 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.cpp
+++ b/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "asciiserializer.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.h b/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.h
index ee601fb5a9d..3964c52949d 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.h
+++ b/staging_vespalib/src/vespa/vespalib/objects/asciiserializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "serializer.h"
diff --git a/staging_vespalib/src/vespa/vespalib/objects/cloneable.h b/staging_vespalib/src/vespa/vespalib/objects/cloneable.h
index c219907ae36..0610f01155f 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/cloneable.h
+++ b/staging_vespalib/src/vespa/vespalib/objects/cloneable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/objects/deserializer.cpp b/staging_vespalib/src/vespa/vespalib/objects/deserializer.cpp
index 9446f198c87..f320b2d2489 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/deserializer.cpp
+++ b/staging_vespalib/src/vespa/vespalib/objects/deserializer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "deserializer.h"
#include "identifiable.h"
diff --git a/staging_vespalib/src/vespa/vespalib/objects/deserializer.h b/staging_vespalib/src/vespa/vespalib/objects/deserializer.h
index 9ebedac69d5..e59d3e07581 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/deserializer.h
+++ b/staging_vespalib/src/vespa/vespalib/objects/deserializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/array.h>
diff --git a/staging_vespalib/src/vespa/vespalib/objects/deserializer.hpp b/staging_vespalib/src/vespa/vespalib/objects/deserializer.hpp
index e324a083597..b90867fa153 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/deserializer.hpp
+++ b/staging_vespalib/src/vespa/vespalib/objects/deserializer.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "deserializer.h"
diff --git a/staging_vespalib/src/vespa/vespalib/objects/floatingpointtype.cpp b/staging_vespalib/src/vespa/vespalib/objects/floatingpointtype.cpp
index e20ba5cef0f..b011dbdd23e 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/floatingpointtype.cpp
+++ b/staging_vespalib/src/vespa/vespalib/objects/floatingpointtype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/objects/floatingpointtype.h>
#include <vespa/vespalib/stllike/asciistream.h>
#include <ostream>
diff --git a/staging_vespalib/src/vespa/vespalib/objects/floatingpointtype.h b/staging_vespalib/src/vespa/vespalib/objects/floatingpointtype.h
index aa6f7d764ec..d1fd80cdcd6 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/floatingpointtype.h
+++ b/staging_vespalib/src/vespa/vespalib/objects/floatingpointtype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class vespalib::FloatingPointType
diff --git a/staging_vespalib/src/vespa/vespalib/objects/identifiable.cpp b/staging_vespalib/src/vespa/vespalib/objects/identifiable.cpp
index 8040b398c31..224fda1a0a4 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/identifiable.cpp
+++ b/staging_vespalib/src/vespa/vespalib/objects/identifiable.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "identifiable.hpp"
#include <cassert>
diff --git a/staging_vespalib/src/vespa/vespalib/objects/identifiable.h b/staging_vespalib/src/vespa/vespalib/objects/identifiable.h
index cf8415c9513..586fbc7ed0c 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/identifiable.h
+++ b/staging_vespalib/src/vespa/vespalib/objects/identifiable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
/**
* \class vespalib::Identifiable
diff --git a/staging_vespalib/src/vespa/vespalib/objects/identifiable.hpp b/staging_vespalib/src/vespa/vespalib/objects/identifiable.hpp
index 97e1c7be564..d86f5490bc9 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/identifiable.hpp
+++ b/staging_vespalib/src/vespa/vespalib/objects/identifiable.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
/**
* \class vespalib::Identifiable
diff --git a/staging_vespalib/src/vespa/vespalib/objects/ids.h b/staging_vespalib/src/vespa/vespalib/objects/ids.h
index c2c837f64a7..21d4d92aef1 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/ids.h
+++ b/staging_vespalib/src/vespa/vespalib/objects/ids.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
/*
diff --git a/staging_vespalib/src/vespa/vespalib/objects/memberinfo.h b/staging_vespalib/src/vespa/vespalib/objects/memberinfo.h
index d303620fe6c..4f2736cdbf3 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/memberinfo.h
+++ b/staging_vespalib/src/vespa/vespalib/objects/memberinfo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace vespalib {
diff --git a/staging_vespalib/src/vespa/vespalib/objects/namedobject.cpp b/staging_vespalib/src/vespa/vespalib/objects/namedobject.cpp
index 590e9cbfce0..3e8d3291177 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/namedobject.cpp
+++ b/staging_vespalib/src/vespa/vespalib/objects/namedobject.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "namedobject.h"
namespace vespalib {
diff --git a/staging_vespalib/src/vespa/vespalib/objects/namedobject.h b/staging_vespalib/src/vespa/vespalib/objects/namedobject.h
index 83bc0e2f031..784715a66f6 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/namedobject.h
+++ b/staging_vespalib/src/vespa/vespalib/objects/namedobject.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/objects/identifiable.h>
diff --git a/staging_vespalib/src/vespa/vespalib/objects/nboserializer.cpp b/staging_vespalib/src/vespa/vespalib/objects/nboserializer.cpp
index 2d065038d1d..0508210bd09 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/nboserializer.cpp
+++ b/staging_vespalib/src/vespa/vespalib/objects/nboserializer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "nboserializer.h"
#include <vespa/vespalib/objects/nbostream.h>
diff --git a/staging_vespalib/src/vespa/vespalib/objects/nboserializer.h b/staging_vespalib/src/vespa/vespalib/objects/nboserializer.h
index a6c19c3e02d..4e11771d64b 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/nboserializer.h
+++ b/staging_vespalib/src/vespa/vespalib/objects/nboserializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "serializer.h"
diff --git a/staging_vespalib/src/vespa/vespalib/objects/objectdumper.cpp b/staging_vespalib/src/vespa/vespalib/objects/objectdumper.cpp
index 67ce43bb0c0..61230ace2f9 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/objectdumper.cpp
+++ b/staging_vespalib/src/vespa/vespalib/objects/objectdumper.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "objectdumper.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/staging_vespalib/src/vespa/vespalib/objects/objectdumper.h b/staging_vespalib/src/vespa/vespalib/objects/objectdumper.h
index e517c75deec..0fb27c03ac2 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/objectdumper.h
+++ b/staging_vespalib/src/vespa/vespalib/objects/objectdumper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "objectvisitor.h"
diff --git a/staging_vespalib/src/vespa/vespalib/objects/objectoperation.cpp b/staging_vespalib/src/vespa/vespalib/objects/objectoperation.cpp
index f08181a1f6d..0a84ad4b70f 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/objectoperation.cpp
+++ b/staging_vespalib/src/vespa/vespalib/objects/objectoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "objectoperation.h"
namespace vespalib {
diff --git a/staging_vespalib/src/vespa/vespalib/objects/objectoperation.h b/staging_vespalib/src/vespa/vespalib/objects/objectoperation.h
index f973f876a16..ba2820f1a85 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/objectoperation.h
+++ b/staging_vespalib/src/vespa/vespalib/objects/objectoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace vespalib {
diff --git a/staging_vespalib/src/vespa/vespalib/objects/objectpredicate.cpp b/staging_vespalib/src/vespa/vespalib/objects/objectpredicate.cpp
index e12e91c0a80..61986ed4cf8 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/objectpredicate.cpp
+++ b/staging_vespalib/src/vespa/vespalib/objects/objectpredicate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "objectpredicate.h"
namespace vespalib {
diff --git a/staging_vespalib/src/vespa/vespalib/objects/objectpredicate.h b/staging_vespalib/src/vespa/vespalib/objects/objectpredicate.h
index 07fe2a7a3b4..12af9bab3e6 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/objectpredicate.h
+++ b/staging_vespalib/src/vespa/vespalib/objects/objectpredicate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace vespalib {
diff --git a/staging_vespalib/src/vespa/vespalib/objects/objectvisitor.cpp b/staging_vespalib/src/vespa/vespalib/objects/objectvisitor.cpp
index 6b1271a10db..5466b19f6d7 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/objectvisitor.cpp
+++ b/staging_vespalib/src/vespa/vespalib/objects/objectvisitor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "objectvisitor.h"
#include "identifiable.h"
diff --git a/staging_vespalib/src/vespa/vespalib/objects/objectvisitor.h b/staging_vespalib/src/vespa/vespalib/objects/objectvisitor.h
index 9b88dc9bca9..7e48e9f5b4b 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/objectvisitor.h
+++ b/staging_vespalib/src/vespa/vespalib/objects/objectvisitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/staging_vespalib/src/vespa/vespalib/objects/serializer.cpp b/staging_vespalib/src/vespa/vespalib/objects/serializer.cpp
index 13543ba60ad..3c1e22e52ac 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/serializer.cpp
+++ b/staging_vespalib/src/vespa/vespalib/objects/serializer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "serializer.h"
#include "identifiable.h"
diff --git a/staging_vespalib/src/vespa/vespalib/objects/serializer.h b/staging_vespalib/src/vespa/vespalib/objects/serializer.h
index 6cbedbdcd86..f10d03b1c04 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/serializer.h
+++ b/staging_vespalib/src/vespa/vespalib/objects/serializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/array.h>
diff --git a/staging_vespalib/src/vespa/vespalib/objects/serializer.hpp b/staging_vespalib/src/vespa/vespalib/objects/serializer.hpp
index cc49f758ae6..87c02ddf693 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/serializer.hpp
+++ b/staging_vespalib/src/vespa/vespalib/objects/serializer.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/array.h>
diff --git a/staging_vespalib/src/vespa/vespalib/objects/simpledynamicdata.h b/staging_vespalib/src/vespa/vespalib/objects/simpledynamicdata.h
index 29f7bfdbd83..f07832465e7 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/simpledynamicdata.h
+++ b/staging_vespalib/src/vespa/vespalib/objects/simpledynamicdata.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vector>
diff --git a/staging_vespalib/src/vespa/vespalib/objects/valuetype.cpp b/staging_vespalib/src/vespa/vespalib/objects/valuetype.cpp
index acee33874cd..96cf3fa22e1 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/valuetype.cpp
+++ b/staging_vespalib/src/vespa/vespalib/objects/valuetype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "valuetype.h"
namespace vespalib {
diff --git a/staging_vespalib/src/vespa/vespalib/objects/visit.cpp b/staging_vespalib/src/vespa/vespalib/objects/visit.cpp
index 2672f61fdb6..03f46d4c354 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/visit.cpp
+++ b/staging_vespalib/src/vespa/vespalib/objects/visit.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "visit.hpp"
void visit(vespalib::ObjectVisitor &self, const vespalib::string &name, const vespalib::Identifiable *obj) {
diff --git a/staging_vespalib/src/vespa/vespalib/objects/visit.h b/staging_vespalib/src/vespa/vespalib/objects/visit.h
index dec994421b4..87d42923d61 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/visit.h
+++ b/staging_vespalib/src/vespa/vespalib/objects/visit.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/staging_vespalib/src/vespa/vespalib/objects/visit.hpp b/staging_vespalib/src/vespa/vespalib/objects/visit.hpp
index 688fdf82b87..e3a82b212c0 100644
--- a/staging_vespalib/src/vespa/vespalib/objects/visit.hpp
+++ b/staging_vespalib/src/vespa/vespalib/objects/visit.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "visit.h"
diff --git a/staging_vespalib/src/vespa/vespalib/stllike/CMakeLists.txt b/staging_vespalib/src/vespa/vespalib/stllike/CMakeLists.txt
index 2204c1a2b95..a76f2b82d4e 100644
--- a/staging_vespalib/src/vespa/vespalib/stllike/CMakeLists.txt
+++ b/staging_vespalib/src/vespa/vespalib/stllike/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(staging_vespalib_vespalib_stllike OBJECT
SOURCES
DEPENDS
diff --git a/staging_vespalib/src/vespa/vespalib/stllike/cache.h b/staging_vespalib/src/vespa/vespalib/stllike/cache.h
index 798fdb70138..0f4349eb15a 100644
--- a/staging_vespalib/src/vespa/vespalib/stllike/cache.h
+++ b/staging_vespalib/src/vespa/vespalib/stllike/cache.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/lrucache_map.h>
diff --git a/staging_vespalib/src/vespa/vespalib/stllike/cache.hpp b/staging_vespalib/src/vespa/vespalib/stllike/cache.hpp
index 719169ba747..880b5abf2f1 100644
--- a/staging_vespalib/src/vespa/vespalib/stllike/cache.hpp
+++ b/staging_vespalib/src/vespa/vespalib/stllike/cache.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "cache.h"
diff --git a/staging_vespalib/src/vespa/vespalib/stllike/lrucache_map.h b/staging_vespalib/src/vespa/vespalib/stllike/lrucache_map.h
index ea5ccf0659b..4c7f0fa3b4a 100644
--- a/staging_vespalib/src/vespa/vespalib/stllike/lrucache_map.h
+++ b/staging_vespalib/src/vespa/vespalib/stllike/lrucache_map.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/hashtable.h>
diff --git a/staging_vespalib/src/vespa/vespalib/stllike/lrucache_map.hpp b/staging_vespalib/src/vespa/vespalib/stllike/lrucache_map.hpp
index e2ecdac7269..138f1e05eea 100644
--- a/staging_vespalib/src/vespa/vespalib/stllike/lrucache_map.hpp
+++ b/staging_vespalib/src/vespa/vespalib/stllike/lrucache_map.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "lrucache_map.h"
diff --git a/staging_vespalib/src/vespa/vespalib/util/CMakeLists.txt b/staging_vespalib/src/vespa/vespalib/util/CMakeLists.txt
index 70f17f76e4c..2b52e9e167f 100644
--- a/staging_vespalib/src/vespa/vespalib/util/CMakeLists.txt
+++ b/staging_vespalib/src/vespa/vespalib/util/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(staging_vespalib_vespalib_util OBJECT
SOURCES
adaptive_sequenced_executor.cpp
diff --git a/staging_vespalib/src/vespa/vespalib/util/allocinarray.h b/staging_vespalib/src/vespa/vespalib/util/allocinarray.h
index 97b9c0b0d97..aa8951fe9ec 100644
--- a/staging_vespalib/src/vespa/vespalib/util/allocinarray.h
+++ b/staging_vespalib/src/vespa/vespalib/util/allocinarray.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/alloc.h>
diff --git a/staging_vespalib/src/vespa/vespalib/util/bits.cpp b/staging_vespalib/src/vespa/vespalib/util/bits.cpp
index 6cd251aa29c..2d9848f3cdf 100644
--- a/staging_vespalib/src/vespa/vespalib/util/bits.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/bits.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/bits.h>
namespace vespalib {
diff --git a/staging_vespalib/src/vespa/vespalib/util/bits.h b/staging_vespalib/src/vespa/vespalib/util/bits.h
index eb94bd271df..fbe1a59f62a 100644
--- a/staging_vespalib/src/vespa/vespalib/util/bits.h
+++ b/staging_vespalib/src/vespa/vespalib/util/bits.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdint>
diff --git a/staging_vespalib/src/vespa/vespalib/util/clock.cpp b/staging_vespalib/src/vespa/vespalib/util/clock.cpp
index 0a7f89781e8..0c705a3ad94 100644
--- a/staging_vespalib/src/vespa/vespalib/util/clock.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/clock.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "clock.h"
#include <vespa/fastos/thread.h>
diff --git a/staging_vespalib/src/vespa/vespalib/util/clock.h b/staging_vespalib/src/vespa/vespalib/util/clock.h
index d506b0c7e16..e0daf52dff1 100644
--- a/staging_vespalib/src/vespa/vespalib/util/clock.h
+++ b/staging_vespalib/src/vespa/vespalib/util/clock.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/time.h>
diff --git a/staging_vespalib/src/vespa/vespalib/util/crc.cpp b/staging_vespalib/src/vespa/vespalib/util/crc.cpp
index 874f491e8e2..1a9baf8e600 100644
--- a/staging_vespalib/src/vespa/vespalib/util/crc.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/crc.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/crc.h>
namespace vespalib {
diff --git a/staging_vespalib/src/vespa/vespalib/util/crc.h b/staging_vespalib/src/vespa/vespalib/util/crc.h
index bc4fc2dc413..f5acafeff36 100644
--- a/staging_vespalib/src/vespa/vespalib/util/crc.h
+++ b/staging_vespalib/src/vespa/vespalib/util/crc.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/bits.h>
diff --git a/staging_vespalib/src/vespa/vespalib/util/document_runnable.cpp b/staging_vespalib/src/vespa/vespalib/util/document_runnable.cpp
index 53fe3c8a1d0..54d90a0f310 100644
--- a/staging_vespalib/src/vespa/vespalib/util/document_runnable.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/document_runnable.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document_runnable.h"
#include <vespa/vespalib/util/exceptions.h>
diff --git a/staging_vespalib/src/vespa/vespalib/util/document_runnable.h b/staging_vespalib/src/vespa/vespalib/util/document_runnable.h
index 756cbdfa899..cf2befcc8d5 100644
--- a/staging_vespalib/src/vespa/vespalib/util/document_runnable.h
+++ b/staging_vespalib/src/vespa/vespalib/util/document_runnable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class document::Runnable
* @ingroup util
diff --git a/staging_vespalib/src/vespa/vespalib/util/doom.cpp b/staging_vespalib/src/vespa/vespalib/util/doom.cpp
index 72b854338dc..93ebe317ae0 100644
--- a/staging_vespalib/src/vespa/vespalib/util/doom.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/doom.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "doom.h"
diff --git a/staging_vespalib/src/vespa/vespalib/util/doom.h b/staging_vespalib/src/vespa/vespalib/util/doom.h
index a1280942ad7..b9a7e76b8af 100644
--- a/staging_vespalib/src/vespa/vespalib/util/doom.h
+++ b/staging_vespalib/src/vespa/vespalib/util/doom.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/util/foreground_thread_executor.h b/staging_vespalib/src/vespa/vespalib/util/foreground_thread_executor.h
index 1862de910ab..f3dbd512047 100644
--- a/staging_vespalib/src/vespa/vespalib/util/foreground_thread_executor.h
+++ b/staging_vespalib/src/vespa/vespalib/util/foreground_thread_executor.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/util/foregroundtaskexecutor.cpp b/staging_vespalib/src/vespa/vespalib/util/foregroundtaskexecutor.cpp
index f295d2b30c1..0d132193af1 100644
--- a/staging_vespalib/src/vespa/vespalib/util/foregroundtaskexecutor.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/foregroundtaskexecutor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "foregroundtaskexecutor.h"
#include <cassert>
diff --git a/staging_vespalib/src/vespa/vespalib/util/foregroundtaskexecutor.h b/staging_vespalib/src/vespa/vespalib/util/foregroundtaskexecutor.h
index f7b3ff8eab0..7359de0ba66 100644
--- a/staging_vespalib/src/vespa/vespalib/util/foregroundtaskexecutor.h
+++ b/staging_vespalib/src/vespa/vespalib/util/foregroundtaskexecutor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "isequencedtaskexecutor.h"
diff --git a/staging_vespalib/src/vespa/vespalib/util/growablebytebuffer.cpp b/staging_vespalib/src/vespa/vespalib/util/growablebytebuffer.cpp
index a10cad70579..424ad7ba470 100644
--- a/staging_vespalib/src/vespa/vespalib/util/growablebytebuffer.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/growablebytebuffer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "growablebytebuffer.h"
#include <arpa/inet.h>
diff --git a/staging_vespalib/src/vespa/vespalib/util/growablebytebuffer.h b/staging_vespalib/src/vespa/vespalib/util/growablebytebuffer.h
index 9347a742e60..b0fb30606d4 100644
--- a/staging_vespalib/src/vespa/vespalib/util/growablebytebuffer.h
+++ b/staging_vespalib/src/vespa/vespalib/util/growablebytebuffer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/alloc.h>
diff --git a/staging_vespalib/src/vespa/vespalib/util/isequencedtaskexecutor.cpp b/staging_vespalib/src/vespa/vespalib/util/isequencedtaskexecutor.cpp
index 76257a68436..41653889b8f 100644
--- a/staging_vespalib/src/vespa/vespalib/util/isequencedtaskexecutor.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/isequencedtaskexecutor.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "isequencedtaskexecutor.h"
#include <vespa/vespalib/stllike/hash_fun.h>
diff --git a/staging_vespalib/src/vespa/vespalib/util/isequencedtaskexecutor.h b/staging_vespalib/src/vespa/vespalib/util/isequencedtaskexecutor.h
index 46562a2902c..a6aca98a65d 100644
--- a/staging_vespalib/src/vespa/vespalib/util/isequencedtaskexecutor.h
+++ b/staging_vespalib/src/vespa/vespalib/util/isequencedtaskexecutor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/executor.h>
diff --git a/staging_vespalib/src/vespa/vespalib/util/jsonexception.cpp b/staging_vespalib/src/vespa/vespalib/util/jsonexception.cpp
index 2027c5b73f5..5c04aefe2d1 100644
--- a/staging_vespalib/src/vespa/vespalib/util/jsonexception.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/jsonexception.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "jsonexception.h"
diff --git a/staging_vespalib/src/vespa/vespalib/util/jsonexception.h b/staging_vespalib/src/vespa/vespalib/util/jsonexception.h
index 7ea1a3caaa9..3bf954420a6 100644
--- a/staging_vespalib/src/vespa/vespalib/util/jsonexception.h
+++ b/staging_vespalib/src/vespa/vespalib/util/jsonexception.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/exception.h>
diff --git a/staging_vespalib/src/vespa/vespalib/util/jsonstream.cpp b/staging_vespalib/src/vespa/vespalib/util/jsonstream.cpp
index 1feeca489eb..135611e975f 100644
--- a/staging_vespalib/src/vespa/vespalib/util/jsonstream.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/jsonstream.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "jsonstream.h"
#include "jsonexception.h"
diff --git a/staging_vespalib/src/vespa/vespalib/util/jsonstream.h b/staging_vespalib/src/vespa/vespalib/util/jsonstream.h
index 872e6f8ee0f..fc2ae61b37e 100644
--- a/staging_vespalib/src/vespa/vespalib/util/jsonstream.h
+++ b/staging_vespalib/src/vespa/vespalib/util/jsonstream.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
/**
diff --git a/staging_vespalib/src/vespa/vespalib/util/jsonwriter.cpp b/staging_vespalib/src/vespa/vespalib/util/jsonwriter.cpp
index 71017e28c4c..eb56d8b367a 100644
--- a/staging_vespalib/src/vespa/vespalib/util/jsonwriter.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/jsonwriter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "jsonwriter.h"
#include <vespa/vespalib/stllike/asciistream.h>
#include <cmath>
diff --git a/staging_vespalib/src/vespa/vespalib/util/jsonwriter.h b/staging_vespalib/src/vespa/vespalib/util/jsonwriter.h
index eef8a2c0cd8..57380b46e5c 100644
--- a/staging_vespalib/src/vespa/vespalib/util/jsonwriter.h
+++ b/staging_vespalib/src/vespa/vespalib/util/jsonwriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/staging_vespalib/src/vespa/vespalib/util/overview.h b/staging_vespalib/src/vespa/vespalib/util/overview.h
index 6735fba6499..b998356ba50 100644
--- a/staging_vespalib/src/vespa/vespalib/util/overview.h
+++ b/staging_vespalib/src/vespa/vespalib/util/overview.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*! \mainpage Vespalib - C++ utility library for Vespa components
*
* \section intro_sec Introduction
diff --git a/staging_vespalib/src/vespa/vespalib/util/polymorphicarray.h b/staging_vespalib/src/vespa/vespalib/util/polymorphicarray.h
index 99f9c793cb6..de93ae03657 100644
--- a/staging_vespalib/src/vespa/vespalib/util/polymorphicarray.h
+++ b/staging_vespalib/src/vespa/vespalib/util/polymorphicarray.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
//
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/util/polymorphicarraybase.h b/staging_vespalib/src/vespa/vespalib/util/polymorphicarraybase.h
index 155d57909be..f3f63f6a43c 100644
--- a/staging_vespalib/src/vespa/vespalib/util/polymorphicarraybase.h
+++ b/staging_vespalib/src/vespa/vespalib/util/polymorphicarraybase.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
//
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/util/polymorphicarrays.h b/staging_vespalib/src/vespa/vespalib/util/polymorphicarrays.h
index 721a33ae7da..55f64ec51cd 100644
--- a/staging_vespalib/src/vespa/vespalib/util/polymorphicarrays.h
+++ b/staging_vespalib/src/vespa/vespalib/util/polymorphicarrays.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
//
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/util/process_memory_stats.cpp b/staging_vespalib/src/vespa/vespalib/util/process_memory_stats.cpp
index 554dcf9a4fe..ad143869848 100644
--- a/staging_vespalib/src/vespa/vespalib/util/process_memory_stats.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/process_memory_stats.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "process_memory_stats.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/staging_vespalib/src/vespa/vespalib/util/process_memory_stats.h b/staging_vespalib/src/vespa/vespalib/util/process_memory_stats.h
index 3870a2e2907..000c0942905 100644
--- a/staging_vespalib/src/vespa/vespalib/util/process_memory_stats.h
+++ b/staging_vespalib/src/vespa/vespalib/util/process_memory_stats.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/util/programoptions.cpp b/staging_vespalib/src/vespa/vespalib/util/programoptions.cpp
index 8da7780f203..80381d494df 100644
--- a/staging_vespalib/src/vespa/vespalib/util/programoptions.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/programoptions.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "programoptions.h"
#include <vespa/vespalib/util/stringfmt.h>
#include <vespa/vespalib/util/exceptions.h>
diff --git a/staging_vespalib/src/vespa/vespalib/util/programoptions.h b/staging_vespalib/src/vespa/vespalib/util/programoptions.h
index 78ba3a955d0..0bd3eb7c3c9 100644
--- a/staging_vespalib/src/vespa/vespalib/util/programoptions.h
+++ b/staging_vespalib/src/vespa/vespalib/util/programoptions.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class vespalib::ProgramOptions
* \ingroup util
diff --git a/staging_vespalib/src/vespa/vespalib/util/programoptions_testutils.cpp b/staging_vespalib/src/vespa/vespalib/util/programoptions_testutils.cpp
index e8084468c15..4f77a01aa02 100644
--- a/staging_vespalib/src/vespa/vespalib/util/programoptions_testutils.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/programoptions_testutils.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/programoptions_testutils.h>
diff --git a/staging_vespalib/src/vespa/vespalib/util/programoptions_testutils.h b/staging_vespalib/src/vespa/vespalib/util/programoptions_testutils.h
index 8a6d1d316c1..a6f103f3e95 100644
--- a/staging_vespalib/src/vespa/vespalib/util/programoptions_testutils.h
+++ b/staging_vespalib/src/vespa/vespalib/util/programoptions_testutils.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* This class contains some test utilities, to create argc/argv inputs for
* application tests.
diff --git a/staging_vespalib/src/vespa/vespalib/util/rusage.cpp b/staging_vespalib/src/vespa/vespalib/util/rusage.cpp
index d5910148c79..ed0ec125dcf 100644
--- a/staging_vespalib/src/vespa/vespalib/util/rusage.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/rusage.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rusage.h"
#include <stdexcept>
#include <cerrno>
diff --git a/staging_vespalib/src/vespa/vespalib/util/rusage.h b/staging_vespalib/src/vespa/vespalib/util/rusage.h
index f2cea3ba0ab..4c741f7699d 100644
--- a/staging_vespalib/src/vespa/vespalib/util/rusage.h
+++ b/staging_vespalib/src/vespa/vespalib/util/rusage.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/staging_vespalib/src/vespa/vespalib/util/scheduledexecutor.cpp b/staging_vespalib/src/vespa/vespalib/util/scheduledexecutor.cpp
index 9cd2ff59b49..f5384999cb8 100644
--- a/staging_vespalib/src/vespa/vespalib/util/scheduledexecutor.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/scheduledexecutor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "scheduledexecutor.h"
#include <vespa/fnet/scheduler.h>
#include <vespa/fnet/task.h>
diff --git a/staging_vespalib/src/vespa/vespalib/util/scheduledexecutor.h b/staging_vespalib/src/vespa/vespalib/util/scheduledexecutor.h
index 0b98a236f74..dcc16a8c379 100644
--- a/staging_vespalib/src/vespa/vespalib/util/scheduledexecutor.h
+++ b/staging_vespalib/src/vespa/vespalib/util/scheduledexecutor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/executor.h>
diff --git a/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutor.cpp b/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutor.cpp
index 102fdeb1d4e..adb4356c4c8 100644
--- a/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutor.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sequencedtaskexecutor.h"
#include "adaptive_sequenced_executor.h"
diff --git a/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutor.h b/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutor.h
index 496b183af8a..38844535021 100644
--- a/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutor.h
+++ b/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "isequencedtaskexecutor.h"
diff --git a/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutorobserver.cpp b/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutorobserver.cpp
index d6a89117d68..4f4a2e6ab6d 100644
--- a/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutorobserver.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutorobserver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sequencedtaskexecutorobserver.h"
diff --git a/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutorobserver.h b/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutorobserver.h
index 6bcdf08ae5c..71717c051e7 100644
--- a/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutorobserver.h
+++ b/staging_vespalib/src/vespa/vespalib/util/sequencedtaskexecutorobserver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "isequencedtaskexecutor.h"
diff --git a/staging_vespalib/src/vespa/vespalib/util/shutdownguard.cpp b/staging_vespalib/src/vespa/vespalib/util/shutdownguard.cpp
index 99857107860..12e58898c06 100644
--- a/staging_vespalib/src/vespa/vespalib/util/shutdownguard.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/shutdownguard.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "shutdownguard.h"
#include <unistd.h>
#include <thread>
diff --git a/staging_vespalib/src/vespa/vespalib/util/shutdownguard.h b/staging_vespalib/src/vespa/vespalib/util/shutdownguard.h
index 9de9df8bbad..d76d4deb5d2 100644
--- a/staging_vespalib/src/vespa/vespalib/util/shutdownguard.h
+++ b/staging_vespalib/src/vespa/vespalib/util/shutdownguard.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/time.h>
diff --git a/staging_vespalib/src/vespa/vespalib/util/singleexecutor.cpp b/staging_vespalib/src/vespa/vespalib/util/singleexecutor.cpp
index 97214c33a07..7fba68e2092 100644
--- a/staging_vespalib/src/vespa/vespalib/util/singleexecutor.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/singleexecutor.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "singleexecutor.h"
#include <vespa/vespalib/util/alloc.h>
diff --git a/staging_vespalib/src/vespa/vespalib/util/singleexecutor.h b/staging_vespalib/src/vespa/vespalib/util/singleexecutor.h
index 721df3bf881..20e5a560e52 100644
--- a/staging_vespalib/src/vespa/vespalib/util/singleexecutor.h
+++ b/staging_vespalib/src/vespa/vespalib/util/singleexecutor.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/util/sort.h b/staging_vespalib/src/vespa/vespalib/util/sort.h
index c4bf0d6326b..ce3f6772ef1 100644
--- a/staging_vespalib/src/vespa/vespalib/util/sort.h
+++ b/staging_vespalib/src/vespa/vespalib/util/sort.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/objects/nbo.h>
diff --git a/staging_vespalib/src/vespa/vespalib/util/varholder.h b/staging_vespalib/src/vespa/vespalib/util/varholder.h
index 5b68ffa5582..d92c00e0081 100644
--- a/staging_vespalib/src/vespa/vespalib/util/varholder.h
+++ b/staging_vespalib/src/vespa/vespalib/util/varholder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/util/xmlserializable.cpp b/staging_vespalib/src/vespa/vespalib/util/xmlserializable.cpp
index 35110be87ca..c687609df74 100644
--- a/staging_vespalib/src/vespa/vespalib/util/xmlserializable.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/xmlserializable.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "xmlserializable.h"
#include "xmlstream.h"
diff --git a/staging_vespalib/src/vespa/vespalib/util/xmlserializable.h b/staging_vespalib/src/vespa/vespalib/util/xmlserializable.h
index 4c00a734b2b..1ceee6dd7b2 100644
--- a/staging_vespalib/src/vespa/vespalib/util/xmlserializable.h
+++ b/staging_vespalib/src/vespa/vespalib/util/xmlserializable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/staging_vespalib/src/vespa/vespalib/util/xmlstream.cpp b/staging_vespalib/src/vespa/vespalib/util/xmlstream.cpp
index e1778a881be..fe0a47315e0 100644
--- a/staging_vespalib/src/vespa/vespalib/util/xmlstream.cpp
+++ b/staging_vespalib/src/vespa/vespalib/util/xmlstream.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "xmlstream.hpp"
#include <vespa/vespalib/encoding/base64.h>
diff --git a/staging_vespalib/src/vespa/vespalib/util/xmlstream.h b/staging_vespalib/src/vespa/vespalib/util/xmlstream.h
index 01f3104a595..b197ff5c7c8 100644
--- a/staging_vespalib/src/vespa/vespalib/util/xmlstream.h
+++ b/staging_vespalib/src/vespa/vespalib/util/xmlstream.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @file xmlserializable.h
* @ingroup util
diff --git a/staging_vespalib/src/vespa/vespalib/util/xmlstream.hpp b/staging_vespalib/src/vespa/vespalib/util/xmlstream.hpp
index 7ee7d8d0b82..82f1146df29 100644
--- a/staging_vespalib/src/vespa/vespalib/util/xmlstream.hpp
+++ b/staging_vespalib/src/vespa/vespalib/util/xmlstream.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/standalone-container/CMakeLists.txt b/standalone-container/CMakeLists.txt
index 6e8bf49d846..c3026df11a4 100644
--- a/standalone-container/CMakeLists.txt
+++ b/standalone-container/CMakeLists.txt
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(standalone-container)
install(PROGRAMS src/main/sh/standalone-container.sh DESTINATION libexec/vespa)
diff --git a/standalone-container/pom.xml b/standalone-container/pom.xml
index 4aa66e9b1a4..a605bdb7d39 100644
--- a/standalone-container/pom.xml
+++ b/standalone-container/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/standalone-container/src/main/java/com/yahoo/application/container/impl/ClassLoaderOsgiFramework.java b/standalone-container/src/main/java/com/yahoo/application/container/impl/ClassLoaderOsgiFramework.java
index 0d5b4c85264..1526bc3dc5d 100644
--- a/standalone-container/src/main/java/com/yahoo/application/container/impl/ClassLoaderOsgiFramework.java
+++ b/standalone-container/src/main/java/com/yahoo/application/container/impl/ClassLoaderOsgiFramework.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container.impl;
import com.google.common.collect.Lists;
diff --git a/standalone-container/src/main/java/com/yahoo/application/container/impl/StandaloneContainerRunner.java b/standalone-container/src/main/java/com/yahoo/application/container/impl/StandaloneContainerRunner.java
index 8b07a4d4ef8..8bd37cfbc4a 100644
--- a/standalone-container/src/main/java/com/yahoo/application/container/impl/StandaloneContainerRunner.java
+++ b/standalone-container/src/main/java/com/yahoo/application/container/impl/StandaloneContainerRunner.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.application.container.impl;
import com.yahoo.text.Utf8;
diff --git a/standalone-container/src/main/java/com/yahoo/container/standalone/CloudConfigInstallVariables.java b/standalone-container/src/main/java/com/yahoo/container/standalone/CloudConfigInstallVariables.java
index 5b7ac5380fd..5ffb37feb70 100644
--- a/standalone-container/src/main/java/com/yahoo/container/standalone/CloudConfigInstallVariables.java
+++ b/standalone-container/src/main/java/com/yahoo/container/standalone/CloudConfigInstallVariables.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.standalone;
import com.yahoo.vespa.model.container.configserver.option.CloudConfigOptions;
diff --git a/standalone-container/src/main/java/com/yahoo/container/standalone/LocalFileDb.java b/standalone-container/src/main/java/com/yahoo/container/standalone/LocalFileDb.java
index d21211bdffe..285f0f60c3f 100644
--- a/standalone-container/src/main/java/com/yahoo/container/standalone/LocalFileDb.java
+++ b/standalone-container/src/main/java/com/yahoo/container/standalone/LocalFileDb.java
@@ -1,14 +1,14 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.standalone;
import com.yahoo.config.FileReference;
import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.filedistribution.fileacquirer.FileAcquirer;
-import com.yahoo.net.HostName;
+import net.jpountz.lz4.LZ4FrameOutputStream;
import java.io.File;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
+import java.io.FileOutputStream;
+import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.file.Path;
import java.util.HashMap;
@@ -25,8 +25,6 @@ import java.util.stream.Collectors;
*/
public class LocalFileDb implements FileAcquirer, FileRegistry {
- private static final Constructor<FileReference> fileReferenceConstructor = createFileReferenceConstructor();
-
private final Map<FileReference, File> fileReferenceToFile = new HashMap<>();
private final Path appPath;
@@ -40,7 +38,7 @@ public class LocalFileDb implements FileAcquirer, FileRegistry {
synchronized (this) {
File file = fileReferenceToFile.get(reference);
if (file == null) {
- throw new RuntimeException("Invalid file reference " + reference);
+ return new File(reference.value()); // Downloaded file reference: Will (hopefully) be resolved client side
}
return file;
}
@@ -51,18 +49,14 @@ public class LocalFileDb implements FileAcquirer, FileRegistry {
}
/* FileRegistry overrides */
+ @Override
public FileReference addFile(String relativePath) {
File file = appPath.resolve(relativePath).toFile();
if (!file.exists()) {
throw new RuntimeException("The file does not exist: " + file.getPath());
}
- FileReference fileReference = null;
- try {
- fileReference = fileReferenceConstructor.newInstance("LocalFileDb:" + relativePath);
- } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
- throw new RuntimeException("Unable to create new FileReference", e);
- }
+ FileReference fileReference = new FileReference("LocalFileDb:" + relativePath);
fileReferenceToFile.put(fileReference, file);
return fileReference;
}
@@ -79,21 +73,25 @@ public class LocalFileDb implements FileAcquirer, FileRegistry {
}
@Override
- public FileReference addBlob(ByteBuffer blob) {
- throw new RuntimeException("addBlob(ByteBuffer blob) is not implemented here.");
- }
-
- public String fileSourceHost() {
- return HostName.getLocalhost();
+ public FileReference addBlob(String name, ByteBuffer blob) {
+ writeBlob(blob, name);
+ File file = appPath.resolve(name).toFile();
+ FileReference fileReference = new FileReference("LocalFileDb:" + name);
+ fileReferenceToFile.put(fileReference, file);
+ return fileReference;
}
- private static Constructor<FileReference> createFileReferenceConstructor() {
- try {
- Constructor<FileReference> method = FileReference.class.getDeclaredConstructor(String.class);
- method.setAccessible(true);
- return method;
- } catch (NoSuchMethodException ex) {
- throw new IllegalStateException(ex);
+ private void writeBlob(ByteBuffer blob, String relativePath) {
+ try (FileOutputStream fos = new FileOutputStream(new File(appPath.toFile(), relativePath))) {
+ if (relativePath.endsWith(".lz4")) {
+ LZ4FrameOutputStream lz4 = new LZ4FrameOutputStream(fos);
+ lz4.write(blob.array(), blob.arrayOffset(), blob.remaining());
+ lz4.close();
+ } else {
+ fos.write(blob.array(), blob.arrayOffset(), blob.remaining());
+ }
+ } catch (IOException e) {
+ throw new IllegalArgumentException("Failed writing temp file", e);
}
}
diff --git a/standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneContainerApplication.java b/standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneContainerApplication.java
index 6b9a1defed9..74eff01984f 100644
--- a/standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneContainerApplication.java
+++ b/standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneContainerApplication.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.standalone;
import com.google.inject.AbstractModule;
diff --git a/standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneSubscriberFactory.java b/standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneSubscriberFactory.java
index e9d8dbd3642..8e8367cbe4c 100644
--- a/standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneSubscriberFactory.java
+++ b/standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneSubscriberFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.standalone;
import com.yahoo.config.ConfigBuilder;
diff --git a/standalone-container/src/main/sh/standalone-container.sh b/standalone-container/src/main/sh/standalone-container.sh
index b30a7ad4cd0..9f862d2b14a 100755
--- a/standalone-container/src/main/sh/standalone-container.sh
+++ b/standalone-container/src/main/sh/standalone-container.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
@@ -180,7 +180,6 @@ StartCommand() {
-Djdisc.config.file="$cfpfile" \
-Djdisc.export.packages= \
-Djdisc.cache.path="$bundlecachedir" \
- -Djdisc.debug.resources=false \
-Djdisc.bundle.path="$VESPA_HOME/lib/jars" \
-Djdisc.logger.enabled=true \
-Djdisc.logger.level=ALL \
diff --git a/standalone-container/src/test/java/com/yahoo/container/standalone/CloudConfigInstallVariablesTest.java b/standalone-container/src/test/java/com/yahoo/container/standalone/CloudConfigInstallVariablesTest.java
index 9e5d2b694df..3bb42879960 100644
--- a/standalone-container/src/test/java/com/yahoo/container/standalone/CloudConfigInstallVariablesTest.java
+++ b/standalone-container/src/test/java/com/yahoo/container/standalone/CloudConfigInstallVariablesTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.standalone;
import com.yahoo.vespa.model.container.configserver.option.CloudConfigOptions;
diff --git a/standalone-container/src/test/java/com/yahoo/container/standalone/StandaloneContainer.java b/standalone-container/src/test/java/com/yahoo/container/standalone/StandaloneContainer.java
index a00ffd8b985..7253dc4be9d 100644
--- a/standalone-container/src/test/java/com/yahoo/container/standalone/StandaloneContainer.java
+++ b/standalone-container/src/test/java/com/yahoo/container/standalone/StandaloneContainer.java
@@ -1,9 +1,8 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.standalone;
import com.yahoo.collections.Pair;
import com.yahoo.config.model.ConfigModelRepo;
-import com.yahoo.config.model.producer.AbstractConfigProducerRoot;
import com.yahoo.io.IOUtils;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.container.xml.ContainerModelBuilder.Networking;
@@ -22,9 +21,6 @@ import java.util.List;
* @author ollivir
*/
public class StandaloneContainer {
- public static String firstContainerId(AbstractConfigProducerRoot root) {
- return root.getConfigProducer("container").get().getConfigId();
- }
interface ThrowingFunction<T, U> {
U apply(T input) throws Exception;
diff --git a/standalone-container/src/test/java/com/yahoo/container/standalone/StandaloneContainerTest.java b/standalone-container/src/test/java/com/yahoo/container/standalone/StandaloneContainerTest.java
index 006809c1111..439e1f5a5b7 100644
--- a/standalone-container/src/test/java/com/yahoo/container/standalone/StandaloneContainerTest.java
+++ b/standalone-container/src/test/java/com/yahoo/container/standalone/StandaloneContainerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.standalone;
import com.yahoo.vespa.model.AbstractService;
diff --git a/standalone-container/src/test/java/com/yahoo/container/standalone/StandaloneSubscriberTest.java b/standalone-container/src/test/java/com/yahoo/container/standalone/StandaloneSubscriberTest.java
index 3025a641ec9..76e3f9e6ec0 100644
--- a/standalone-container/src/test/java/com/yahoo/container/standalone/StandaloneSubscriberTest.java
+++ b/standalone-container/src/test/java/com/yahoo/container/standalone/StandaloneSubscriberTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.standalone;
import com.yahoo.config.ConfigInstance;
diff --git a/statistics/CMakeLists.txt b/statistics/CMakeLists.txt
index 7bb25e6a420..f8d34754c41 100644
--- a/statistics/CMakeLists.txt
+++ b/statistics/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_config_definitions()
diff --git a/statistics/pom.xml b/statistics/pom.xml
index 6ce741fea0c..37467cc8aa0 100644
--- a/statistics/pom.xml
+++ b/statistics/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/statistics/src/main/java/com/yahoo/statistics/Axis.java b/statistics/src/main/java/com/yahoo/statistics/Axis.java
index 383aa11ba09..f0a5f017984 100644
--- a/statistics/src/main/java/com/yahoo/statistics/Axis.java
+++ b/statistics/src/main/java/com/yahoo/statistics/Axis.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
import java.util.Arrays;
diff --git a/statistics/src/main/java/com/yahoo/statistics/Bucket.java b/statistics/src/main/java/com/yahoo/statistics/Bucket.java
index f1c5da93002..6977afaac8c 100644
--- a/statistics/src/main/java/com/yahoo/statistics/Bucket.java
+++ b/statistics/src/main/java/com/yahoo/statistics/Bucket.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
import java.util.List;
diff --git a/statistics/src/main/java/com/yahoo/statistics/Callback.java b/statistics/src/main/java/com/yahoo/statistics/Callback.java
index aae0353fba4..4bb332c99e4 100644
--- a/statistics/src/main/java/com/yahoo/statistics/Callback.java
+++ b/statistics/src/main/java/com/yahoo/statistics/Callback.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
/**
diff --git a/statistics/src/main/java/com/yahoo/statistics/Counter.java b/statistics/src/main/java/com/yahoo/statistics/Counter.java
index 4c9f3ece51c..f4b477636aa 100644
--- a/statistics/src/main/java/com/yahoo/statistics/Counter.java
+++ b/statistics/src/main/java/com/yahoo/statistics/Counter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
diff --git a/statistics/src/main/java/com/yahoo/statistics/CounterGroup.java b/statistics/src/main/java/com/yahoo/statistics/CounterGroup.java
index 67412c90ae7..7e0258b3896 100644
--- a/statistics/src/main/java/com/yahoo/statistics/CounterGroup.java
+++ b/statistics/src/main/java/com/yahoo/statistics/CounterGroup.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
diff --git a/statistics/src/main/java/com/yahoo/statistics/CounterProxy.java b/statistics/src/main/java/com/yahoo/statistics/CounterProxy.java
index ad7b8c1c8a4..11db94673ea 100644
--- a/statistics/src/main/java/com/yahoo/statistics/CounterProxy.java
+++ b/statistics/src/main/java/com/yahoo/statistics/CounterProxy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
diff --git a/statistics/src/main/java/com/yahoo/statistics/Group.java b/statistics/src/main/java/com/yahoo/statistics/Group.java
index 67804013648..7b0c1823dbe 100644
--- a/statistics/src/main/java/com/yahoo/statistics/Group.java
+++ b/statistics/src/main/java/com/yahoo/statistics/Group.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
diff --git a/statistics/src/main/java/com/yahoo/statistics/Handle.java b/statistics/src/main/java/com/yahoo/statistics/Handle.java
index 37c1a6e3a94..40491241137 100644
--- a/statistics/src/main/java/com/yahoo/statistics/Handle.java
+++ b/statistics/src/main/java/com/yahoo/statistics/Handle.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
diff --git a/statistics/src/main/java/com/yahoo/statistics/Histogram.java b/statistics/src/main/java/com/yahoo/statistics/Histogram.java
index 194fd51c13a..df529015d88 100644
--- a/statistics/src/main/java/com/yahoo/statistics/Histogram.java
+++ b/statistics/src/main/java/com/yahoo/statistics/Histogram.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
diff --git a/statistics/src/main/java/com/yahoo/statistics/HistogramType.java b/statistics/src/main/java/com/yahoo/statistics/HistogramType.java
index 805102bca5d..fe6b9a3341b 100644
--- a/statistics/src/main/java/com/yahoo/statistics/HistogramType.java
+++ b/statistics/src/main/java/com/yahoo/statistics/HistogramType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
diff --git a/statistics/src/main/java/com/yahoo/statistics/Limits.java b/statistics/src/main/java/com/yahoo/statistics/Limits.java
index c7c958a06ff..2c6d1cb3119 100644
--- a/statistics/src/main/java/com/yahoo/statistics/Limits.java
+++ b/statistics/src/main/java/com/yahoo/statistics/Limits.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
diff --git a/statistics/src/main/java/com/yahoo/statistics/Proxy.java b/statistics/src/main/java/com/yahoo/statistics/Proxy.java
index 9beb2e0e512..5d656897f7b 100644
--- a/statistics/src/main/java/com/yahoo/statistics/Proxy.java
+++ b/statistics/src/main/java/com/yahoo/statistics/Proxy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
diff --git a/statistics/src/main/java/com/yahoo/statistics/SampleDirectory.java b/statistics/src/main/java/com/yahoo/statistics/SampleDirectory.java
index 6be34409d8f..520fd88a042 100644
--- a/statistics/src/main/java/com/yahoo/statistics/SampleDirectory.java
+++ b/statistics/src/main/java/com/yahoo/statistics/SampleDirectory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
import java.util.ArrayList;
diff --git a/statistics/src/main/java/com/yahoo/statistics/SampleSet.java b/statistics/src/main/java/com/yahoo/statistics/SampleSet.java
index d42d5de7d07..fa71c8842ed 100644
--- a/statistics/src/main/java/com/yahoo/statistics/SampleSet.java
+++ b/statistics/src/main/java/com/yahoo/statistics/SampleSet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
/**
diff --git a/statistics/src/main/java/com/yahoo/statistics/Statistics.java b/statistics/src/main/java/com/yahoo/statistics/Statistics.java
index b29d011147f..d261e2d9af3 100644
--- a/statistics/src/main/java/com/yahoo/statistics/Statistics.java
+++ b/statistics/src/main/java/com/yahoo/statistics/Statistics.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
import com.yahoo.container.StatisticsConfig;
diff --git a/statistics/src/main/java/com/yahoo/statistics/StatisticsImpl.java b/statistics/src/main/java/com/yahoo/statistics/StatisticsImpl.java
index b74960eb6e9..3fb0693648f 100644
--- a/statistics/src/main/java/com/yahoo/statistics/StatisticsImpl.java
+++ b/statistics/src/main/java/com/yahoo/statistics/StatisticsImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
import java.util.Date;
diff --git a/statistics/src/main/java/com/yahoo/statistics/Sum.java b/statistics/src/main/java/com/yahoo/statistics/Sum.java
index d2051c394c1..534f12f9b5c 100644
--- a/statistics/src/main/java/com/yahoo/statistics/Sum.java
+++ b/statistics/src/main/java/com/yahoo/statistics/Sum.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
import java.util.List;
diff --git a/statistics/src/main/java/com/yahoo/statistics/Value.java b/statistics/src/main/java/com/yahoo/statistics/Value.java
index 8a5dbdbd880..fa4b7db0da2 100644
--- a/statistics/src/main/java/com/yahoo/statistics/Value.java
+++ b/statistics/src/main/java/com/yahoo/statistics/Value.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
import java.util.HashMap;
diff --git a/statistics/src/main/java/com/yahoo/statistics/ValueGroup.java b/statistics/src/main/java/com/yahoo/statistics/ValueGroup.java
index 5d536db678e..8981a75b578 100644
--- a/statistics/src/main/java/com/yahoo/statistics/ValueGroup.java
+++ b/statistics/src/main/java/com/yahoo/statistics/ValueGroup.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
diff --git a/statistics/src/main/java/com/yahoo/statistics/ValueProxy.java b/statistics/src/main/java/com/yahoo/statistics/ValueProxy.java
index dd0d4a38f91..77d2f45fcd6 100644
--- a/statistics/src/main/java/com/yahoo/statistics/ValueProxy.java
+++ b/statistics/src/main/java/com/yahoo/statistics/ValueProxy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
diff --git a/statistics/src/main/java/com/yahoo/statistics/package-info.java b/statistics/src/main/java/com/yahoo/statistics/package-info.java
index 0ee6c0e7b77..bb861889d44 100644
--- a/statistics/src/main/java/com/yahoo/statistics/package-info.java
+++ b/statistics/src/main/java/com/yahoo/statistics/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.statistics;
diff --git a/statistics/src/main/resources/configdefinitions/container.statistics.def b/statistics/src/main/resources/configdefinitions/container.statistics.def
index 92da7704714..5f540241e35 100644
--- a/statistics/src/main/resources/configdefinitions/container.statistics.def
+++ b/statistics/src/main/resources/configdefinitions/container.statistics.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container
## Interval between internal sample points measured in seconds
diff --git a/statistics/src/test/java/com/yahoo/statistics/CounterGroupTestCase.java b/statistics/src/test/java/com/yahoo/statistics/CounterGroupTestCase.java
index b452c6eb204..57a321e126f 100644
--- a/statistics/src/test/java/com/yahoo/statistics/CounterGroupTestCase.java
+++ b/statistics/src/test/java/com/yahoo/statistics/CounterGroupTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
diff --git a/statistics/src/test/java/com/yahoo/statistics/CounterTestCase.java b/statistics/src/test/java/com/yahoo/statistics/CounterTestCase.java
index b33586a6428..c4dd5dd9c67 100644
--- a/statistics/src/test/java/com/yahoo/statistics/CounterTestCase.java
+++ b/statistics/src/test/java/com/yahoo/statistics/CounterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
import java.util.Arrays;
diff --git a/statistics/src/test/java/com/yahoo/statistics/HistogramTestCase.java b/statistics/src/test/java/com/yahoo/statistics/HistogramTestCase.java
index 6b970220b74..a15d679c77e 100644
--- a/statistics/src/test/java/com/yahoo/statistics/HistogramTestCase.java
+++ b/statistics/src/test/java/com/yahoo/statistics/HistogramTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
diff --git a/statistics/src/test/java/com/yahoo/statistics/ProxyTestCase.java b/statistics/src/test/java/com/yahoo/statistics/ProxyTestCase.java
index 0ce6c0c3dbb..dcfdac746ad 100644
--- a/statistics/src/test/java/com/yahoo/statistics/ProxyTestCase.java
+++ b/statistics/src/test/java/com/yahoo/statistics/ProxyTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
import static org.junit.Assert.*;
diff --git a/statistics/src/test/java/com/yahoo/statistics/StatisticsImplTestCase.java b/statistics/src/test/java/com/yahoo/statistics/StatisticsImplTestCase.java
index aa68bef892f..f0f951610f5 100644
--- a/statistics/src/test/java/com/yahoo/statistics/StatisticsImplTestCase.java
+++ b/statistics/src/test/java/com/yahoo/statistics/StatisticsImplTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
import static org.junit.Assert.assertEquals;
diff --git a/statistics/src/test/java/com/yahoo/statistics/ValueGroupTestCase.java b/statistics/src/test/java/com/yahoo/statistics/ValueGroupTestCase.java
index b92182c3534..35db53b3316 100644
--- a/statistics/src/test/java/com/yahoo/statistics/ValueGroupTestCase.java
+++ b/statistics/src/test/java/com/yahoo/statistics/ValueGroupTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
diff --git a/statistics/src/test/java/com/yahoo/statistics/ValueTestCase.java b/statistics/src/test/java/com/yahoo/statistics/ValueTestCase.java
index d5321c43bc6..a96d684b961 100644
--- a/statistics/src/test/java/com/yahoo/statistics/ValueTestCase.java
+++ b/statistics/src/test/java/com/yahoo/statistics/ValueTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.statistics;
import java.util.Arrays;
diff --git a/storage/CMakeLists.txt b/storage/CMakeLists.txt
index cfd86946485..e45c78f68b9 100644
--- a/storage/CMakeLists.txt
+++ b/storage/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
vespadefaults
diff --git a/storage/pom.xml b/storage/pom.xml
index ba47fe84eae..74854da2f3f 100644
--- a/storage/pom.xml
+++ b/storage/pom.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/storage/src/Doxyfile b/storage/src/Doxyfile
index 671dc341e73..0ae14d0acc1 100644
--- a/storage/src/Doxyfile
+++ b/storage/src/Doxyfile
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Doxyfile 1.2.18
# This file describes the settings to be used by the documentation system
diff --git a/storage/src/tests/CMakeLists.txt b/storage/src/tests/CMakeLists.txt
index e92d15c14e3..16792b64120 100644
--- a/storage/src/tests/CMakeLists.txt
+++ b/storage/src/tests/CMakeLists.txt
@@ -1,3 +1,3 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Currently empty; test executables are in library subdirs
diff --git a/storage/src/tests/bucketdb/CMakeLists.txt b/storage/src/tests/bucketdb/CMakeLists.txt
index 81c65ec9ad3..5052e3a7207 100644
--- a/storage/src/tests/bucketdb/CMakeLists.txt
+++ b/storage/src/tests/bucketdb/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(storage_bucketdb_gtest_runner_app TEST
SOURCES
diff --git a/storage/src/tests/bucketdb/bucketinfotest.cpp b/storage/src/tests/bucketdb/bucketinfotest.cpp
index c1689014160..e66abc36ce5 100644
--- a/storage/src/tests/bucketdb/bucketinfotest.cpp
+++ b/storage/src/tests/bucketdb/bucketinfotest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/text/stringtokenizer.h>
#include <vespa/storage/bucketdb/bucketinfo.h>
diff --git a/storage/src/tests/bucketdb/bucketmanagertest.cpp b/storage/src/tests/bucketdb/bucketmanagertest.cpp
index b83ccccbf48..aefda3660df 100644
--- a/storage/src/tests/bucketdb/bucketmanagertest.cpp
+++ b/storage/src/tests/bucketdb/bucketmanagertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config/helper/configgetter.hpp>
#include <vespa/document/config/config-documenttypes.h>
diff --git a/storage/src/tests/bucketdb/lockablemaptest.cpp b/storage/src/tests/bucketdb/lockablemaptest.cpp
index fb5c84f217a..edbbaf833f6 100644
--- a/storage/src/tests/bucketdb/lockablemaptest.cpp
+++ b/storage/src/tests/bucketdb/lockablemaptest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/document_runnable.h>
#include <vespa/storage/bucketdb/btree_lockable_map.hpp>
diff --git a/storage/src/tests/common/CMakeLists.txt b/storage/src/tests/common/CMakeLists.txt
index 4e7cecb9d9f..fa29bedc4e6 100644
--- a/storage/src/tests/common/CMakeLists.txt
+++ b/storage/src/tests/common/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage_testcommon TEST
SOURCES
dummystoragelink.cpp
diff --git a/storage/src/tests/common/bucket_stripe_utils_test.cpp b/storage/src/tests/common/bucket_stripe_utils_test.cpp
index a654c4fe83e..660d52f1f8a 100644
--- a/storage/src/tests/common/bucket_stripe_utils_test.cpp
+++ b/storage/src/tests/common/bucket_stripe_utils_test.cpp
@@ -1,13 +1,14 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/bucket/bucketid.h>
#include <vespa/storage/common/bucket_stripe_utils.h>
#include <vespa/vespalib/gtest/gtest.h>
using document::BucketId;
+using storage::adjusted_num_stripes;
using storage::calc_num_stripe_bits;
using storage::stripe_of_bucket_key;
-using storage::adjusted_num_stripes;
+using storage::tune_num_stripes_based_on_cpu_cores;
constexpr uint8_t MUB = storage::spi::BucketLimits::MinUsedBits;
TEST(BucketStripeUtilsTest, stripe_of_bucket_key)
@@ -47,3 +48,13 @@ TEST(BucketStripeUtilsTest, max_stripe_values)
EXPECT_EQ(256, storage::MaxStripes);
}
+TEST(BucketStripeUtilsTest, num_stripes_tuned_based_on_cpu_cores)
+{
+ EXPECT_EQ(1, tune_num_stripes_based_on_cpu_cores(0));
+ EXPECT_EQ(1, tune_num_stripes_based_on_cpu_cores(1));
+ EXPECT_EQ(1, tune_num_stripes_based_on_cpu_cores(16));
+ EXPECT_EQ(2, tune_num_stripes_based_on_cpu_cores(17));
+ EXPECT_EQ(2, tune_num_stripes_based_on_cpu_cores(64));
+ EXPECT_EQ(4, tune_num_stripes_based_on_cpu_cores(65));
+}
+
diff --git a/storage/src/tests/common/bucket_utils_test.cpp b/storage/src/tests/common/bucket_utils_test.cpp
index 7cf6ee0af9f..984b8f7aa89 100644
--- a/storage/src/tests/common/bucket_utils_test.cpp
+++ b/storage/src/tests/common/bucket_utils_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/bucket/bucketid.h>
#include <vespa/storage/common/bucket_utils.h>
diff --git a/storage/src/tests/common/dummystoragelink.cpp b/storage/src/tests/common/dummystoragelink.cpp
index 8d188002c67..4017fab893d 100644
--- a/storage/src/tests/common/dummystoragelink.cpp
+++ b/storage/src/tests/common/dummystoragelink.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dummystoragelink.h"
#include <vespa/storageframework/defaultimplementation/clock/realclock.h>
#include <vespa/vespalib/util/exceptions.h>
diff --git a/storage/src/tests/common/dummystoragelink.h b/storage/src/tests/common/dummystoragelink.h
index 5a0f1ad96b9..e8ccc38df76 100644
--- a/storage/src/tests/common/dummystoragelink.h
+++ b/storage/src/tests/common/dummystoragelink.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/tests/common/global_bucket_space_distribution_converter_test.cpp b/storage/src/tests/common/global_bucket_space_distribution_converter_test.cpp
index 4eb8321699a..23a0df81bab 100644
--- a/storage/src/tests/common/global_bucket_space_distribution_converter_test.cpp
+++ b/storage/src/tests/common/global_bucket_space_distribution_converter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/common/global_bucket_space_distribution_converter.h>
#include <vespa/vdslib/distribution/distribution.h>
diff --git a/storage/src/tests/common/hostreporter/CMakeLists.txt b/storage/src/tests/common/hostreporter/CMakeLists.txt
index 4882c1e2ff3..6e7f1cc7c42 100644
--- a/storage/src/tests/common/hostreporter/CMakeLists.txt
+++ b/storage/src/tests/common/hostreporter/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage_testhostreporter TEST
SOURCES
util.cpp
diff --git a/storage/src/tests/common/hostreporter/hostinfotest.cpp b/storage/src/tests/common/hostreporter/hostinfotest.cpp
index 467149154ee..e4378f22ccf 100644
--- a/storage/src/tests/common/hostreporter/hostinfotest.cpp
+++ b/storage/src/tests/common/hostreporter/hostinfotest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "util.h"
#include <vespa/storage/common/hostreporter/hostinfo.h>
diff --git a/storage/src/tests/common/hostreporter/util.cpp b/storage/src/tests/common/hostreporter/util.cpp
index 02e66b1dcc7..534b19aaba7 100644
--- a/storage/src/tests/common/hostreporter/util.cpp
+++ b/storage/src/tests/common/hostreporter/util.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "util.h"
#include <vespa/storage/common/hostreporter/hostreporter.h>
#include <vespa/vespalib/data/slime/slime.h>
diff --git a/storage/src/tests/common/hostreporter/util.h b/storage/src/tests/common/hostreporter/util.h
index 2a2d91bcd98..f46c27b8df7 100644
--- a/storage/src/tests/common/hostreporter/util.h
+++ b/storage/src/tests/common/hostreporter/util.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#ifndef VESPA_STORAGE_COMMON_UTIL
#define VESPA_STORAGE_COMMON_UTIL
diff --git a/storage/src/tests/common/hostreporter/versionreportertest.cpp b/storage/src/tests/common/hostreporter/versionreportertest.cpp
index ee8fe2a5ff3..9b57671da7f 100644
--- a/storage/src/tests/common/hostreporter/versionreportertest.cpp
+++ b/storage/src/tests/common/hostreporter/versionreportertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "util.h"
#include <vespa/storage/common/hostreporter/versionreporter.h>
diff --git a/storage/src/tests/common/message_sender_stub.cpp b/storage/src/tests/common/message_sender_stub.cpp
index a82d45b0b99..c0ed0a9418a 100644
--- a/storage/src/tests/common/message_sender_stub.cpp
+++ b/storage/src/tests/common/message_sender_stub.cpp
@@ -22,7 +22,7 @@ MessageSenderStub::getLastCommand(bool verbose) const
}
std::string
-MessageSenderStub::dumpMessage(const api::StorageMessage& msg, bool includeAddress, bool verbose) const
+MessageSenderStub::dumpMessage(const api::StorageMessage& msg, bool includeAddress, bool verbose)
{
std::ostringstream ost;
diff --git a/storage/src/tests/common/message_sender_stub.h b/storage/src/tests/common/message_sender_stub.h
index 73b1fcff9f4..3a73ff884bc 100644
--- a/storage/src/tests/common/message_sender_stub.h
+++ b/storage/src/tests/common/message_sender_stub.h
@@ -38,9 +38,9 @@ struct MessageSenderStub : MessageSender {
std::string getReplies(bool includeAddress = false,
bool verbose = false) const;
- std::string dumpMessage(const api::StorageMessage& msg,
- bool includeAddress,
- bool verbose) const;
+ static std::string dumpMessage(const api::StorageMessage& msg,
+ bool includeAddress,
+ bool verbose);
};
diff --git a/storage/src/tests/common/metricstest.cpp b/storage/src/tests/common/metricstest.cpp
index e929879659d..9c63f05b453 100644
--- a/storage/src/tests/common/metricstest.cpp
+++ b/storage/src/tests/common/metricstest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storageapi/message/persistence.h>
#include <vespa/storageframework/defaultimplementation/clock/fakeclock.h>
diff --git a/storage/src/tests/common/storagelinktest.cpp b/storage/src/tests/common/storagelinktest.cpp
index 890376debbc..ddc732422b0 100644
--- a/storage/src/tests/common/storagelinktest.cpp
+++ b/storage/src/tests/common/storagelinktest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/test/make_document_bucket.h>
#include <tests/common/dummystoragelink.h>
diff --git a/storage/src/tests/common/testhelper.cpp b/storage/src/tests/common/testhelper.cpp
index f7da854be68..ebfb87452ff 100644
--- a/storage/src/tests/common/testhelper.cpp
+++ b/storage/src/tests/common/testhelper.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <tests/common/testhelper.h>
#include <vespa/log/log.h>
diff --git a/storage/src/tests/common/testhelper.h b/storage/src/tests/common/testhelper.h
index 8c553ccce40..b0d16277042 100644
--- a/storage/src/tests/common/testhelper.h
+++ b/storage/src/tests/common/testhelper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/messagebus/testlib/slobrok.h>
#include <vespa/vdstestlib/config/dirconfig.h>
diff --git a/storage/src/tests/common/testnodestateupdater.cpp b/storage/src/tests/common/testnodestateupdater.cpp
index ffa76af1e8a..eeecf66995a 100644
--- a/storage/src/tests/common/testnodestateupdater.cpp
+++ b/storage/src/tests/common/testnodestateupdater.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "testnodestateupdater.h"
#include <vespa/vdslib/state/cluster_state_bundle.h>
diff --git a/storage/src/tests/common/testnodestateupdater.h b/storage/src/tests/common/testnodestateupdater.h
index 5bf48c46f1a..6737ff4ebeb 100644
--- a/storage/src/tests/common/testnodestateupdater.h
+++ b/storage/src/tests/common/testnodestateupdater.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::TestNodeStateUpdater
* \ingroup common
diff --git a/storage/src/tests/common/teststorageapp.cpp b/storage/src/tests/common/teststorageapp.cpp
index 7891f21a73d..7a19e84791d 100644
--- a/storage/src/tests/common/teststorageapp.cpp
+++ b/storage/src/tests/common/teststorageapp.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "teststorageapp.h"
#include <vespa/storage/common/content_bucket_db_options.h>
diff --git a/storage/src/tests/common/teststorageapp.h b/storage/src/tests/common/teststorageapp.h
index f30e0b62f4d..04cce2470f4 100644
--- a/storage/src/tests/common/teststorageapp.h
+++ b/storage/src/tests/common/teststorageapp.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::TestServiceLayerApp
* \ingroup common
diff --git a/storage/src/tests/distributor/CMakeLists.txt b/storage/src/tests/distributor/CMakeLists.txt
index 0d314e050d4..7348cfc328b 100644
--- a/storage/src/tests/distributor/CMakeLists.txt
+++ b/storage/src/tests/distributor/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(storage_distributor_gtest_runner_app TEST
SOURCES
@@ -15,15 +15,12 @@ vespa_add_executable(storage_distributor_gtest_runner_app TEST
distributor_stripe_pool_test.cpp
distributor_stripe_test.cpp
distributor_stripe_test_util.cpp
- distributortestutil.cpp
externaloperationhandlertest.cpp
garbagecollectiontest.cpp
getoperationtest.cpp
gtest_runner.cpp
idealstatemanagertest.cpp
joinbuckettest.cpp
- legacy_bucket_db_updater_test.cpp
- legacy_distributor_test.cpp
maintenanceschedulertest.cpp
mergelimitertest.cpp
mergeoperationtest.cpp
@@ -47,6 +44,9 @@ vespa_add_executable(storage_distributor_gtest_runner_app TEST
statoperationtest.cpp
statusreporterdelegatetest.cpp
throttlingoperationstartertest.cpp
+ top_level_bucket_db_updater_test.cpp
+ top_level_distributor_test.cpp
+ top_level_distributor_test_util.cpp
twophaseupdateoperationtest.cpp
updateoperationtest.cpp
visitoroperationtest.cpp
diff --git a/storage/src/tests/distributor/blockingoperationstartertest.cpp b/storage/src/tests/distributor/blockingoperationstartertest.cpp
index 861f8e72832..ba4148af28b 100644
--- a/storage/src/tests/distributor/blockingoperationstartertest.cpp
+++ b/storage/src/tests/distributor/blockingoperationstartertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.h>
#include <vespa/storage/distributor/blockingoperationstarter.h>
#include <vespa/storage/distributor/distributor_stripe_operation_context.h>
@@ -122,7 +122,7 @@ BlockingOperationStarterTest::SetUp()
_compReg = std::make_unique<StorageComponentRegisterImpl>();
_compReg->setClock(_clock);
_clock.setAbsoluteTimeInSeconds(1);
- _messageTracker = std::make_unique<PendingMessageTracker>(*_compReg);
+ _messageTracker = std::make_unique<PendingMessageTracker>(*_compReg, 0);
_fake_ctx = std::make_unique<FakeDistributorStripeOperationContext>(*_messageTracker);
_operation_sequencer = std::make_unique<OperationSequencer>();
_operationStarter = std::make_unique<BlockingOperationStarter>(*_fake_ctx, *_operation_sequencer, *_starterImpl);
diff --git a/storage/src/tests/distributor/bucketdatabasetest.cpp b/storage/src/tests/distributor/bucketdatabasetest.cpp
index 48c1d45b6ed..661fd7fee72 100644
--- a/storage/src/tests/distributor/bucketdatabasetest.cpp
+++ b/storage/src/tests/distributor/bucketdatabasetest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketdatabasetest.h"
#include <vespa/vespalib/util/benchmark_timer.h>
diff --git a/storage/src/tests/distributor/bucketdatabasetest.h b/storage/src/tests/distributor/bucketdatabasetest.h
index 9ebc23bdb16..33f914f8fd2 100644
--- a/storage/src/tests/distributor/bucketdatabasetest.h
+++ b/storage/src/tests/distributor/bucketdatabasetest.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storage/bucketdb/bucketdatabase.h>
diff --git a/storage/src/tests/distributor/bucketdbmetricupdatertest.cpp b/storage/src/tests/distributor/bucketdbmetricupdatertest.cpp
index 6b8a6608c34..c4536c6fa2c 100644
--- a/storage/src/tests/distributor/bucketdbmetricupdatertest.cpp
+++ b/storage/src/tests/distributor/bucketdbmetricupdatertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/bucketdb/bucketdatabase.h>
#include <vespa/storage/distributor/bucketdb/bucketdbmetricupdater.h>
#include <vespa/storage/distributor/distributormetricsset.h>
diff --git a/storage/src/tests/distributor/bucketgctimecalculatortest.cpp b/storage/src/tests/distributor/bucketgctimecalculatortest.cpp
index d9d5c498735..33cd7bd637a 100644
--- a/storage/src/tests/distributor/bucketgctimecalculatortest.cpp
+++ b/storage/src/tests/distributor/bucketgctimecalculatortest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <chrono>
#include <vespa/storage/distributor/bucketgctimecalculator.h>
diff --git a/storage/src/tests/distributor/bucketstateoperationtest.cpp b/storage/src/tests/distributor/bucketstateoperationtest.cpp
index 4abf47cd210..5d11f9653ea 100644
--- a/storage/src/tests/distributor/bucketstateoperationtest.cpp
+++ b/storage/src/tests/distributor/bucketstateoperationtest.cpp
@@ -1,8 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <tests/distributor/distributortestutil.h>
+#include <tests/distributor/distributor_stripe_test_util.h>
#include <vespa/storage/distributor/operations/idealstate/setbucketstateoperation.h>
-#include <vespa/storage/distributor/distributor.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
#include <vespa/document/test/make_document_bucket.h>
#include <vespa/vespalib/gtest/gtest.h>
#include "dummy_cluster_context.h"
@@ -12,7 +12,7 @@ using namespace ::testing;
namespace storage::distributor {
-struct BucketStateOperationTest : Test, DistributorTestUtil {
+struct BucketStateOperationTest : Test, DistributorStripeTestUtil {
void SetUp() override {
createLinks();
}
diff --git a/storage/src/tests/distributor/distributor_bucket_space_test.cpp b/storage/src/tests/distributor/distributor_bucket_space_test.cpp
index 8db7955b8a7..41e0dafdaaf 100644
--- a/storage/src/tests/distributor/distributor_bucket_space_test.cpp
+++ b/storage/src/tests/distributor/distributor_bucket_space_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/distributor/distributor_bucket_space.h>
#include <vespa/storage/distributor/distributor_bucket_space_repo.h>
diff --git a/storage/src/tests/distributor/distributor_host_info_reporter_test.cpp b/storage/src/tests/distributor/distributor_host_info_reporter_test.cpp
index 934ecc7456b..aa55d61e628 100644
--- a/storage/src/tests/distributor/distributor_host_info_reporter_test.cpp
+++ b/storage/src/tests/distributor/distributor_host_info_reporter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/distributor/bucket_spaces_stats_provider.h>
#include <vespa/storage/distributor/distributor_host_info_reporter.h>
diff --git a/storage/src/tests/distributor/distributor_stripe_pool_test.cpp b/storage/src/tests/distributor/distributor_stripe_pool_test.cpp
index bf3beda504e..c101d2bd17c 100644
--- a/storage/src/tests/distributor/distributor_stripe_pool_test.cpp
+++ b/storage/src/tests/distributor/distributor_stripe_pool_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mock_tickable_stripe.h"
#include <vespa/storage/distributor/distributor_stripe_pool.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/storage/src/tests/distributor/distributor_stripe_test.cpp b/storage/src/tests/distributor/distributor_stripe_test.cpp
index 22d4192fffd..556f5e20fb2 100644
--- a/storage/src/tests/distributor/distributor_stripe_test.cpp
+++ b/storage/src/tests/distributor/distributor_stripe_test.cpp
@@ -1,10 +1,11 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <tests/distributor/distributor_stripe_test_util.h>
+#include <vespa/document/fieldset/fieldsets.h>
#include <vespa/document/test/make_bucket_space.h>
#include <vespa/document/test/make_document_bucket.h>
#include <vespa/storage/distributor/bucket_spaces_stats_provider.h>
-#include <vespa/storage/distributor/distributor.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
#include <vespa/storage/distributor/distributor_bucket_space.h>
#include <vespa/storage/distributor/distributor_stripe.h>
#include <vespa/storageapi/message/bucketsplitting.h>
@@ -136,10 +137,54 @@ struct DistributorStripeTest : Test, DistributorStripeTestUtil {
return _stripe->handleMessage(msg);
}
+ void configure_stale_reads_enabled(bool enabled) {
+ ConfigBuilder builder;
+ builder.allowStaleReadsDuringClusterStateTransitions = enabled;
+ configure_stripe(builder);
+ }
+
+ void configure_update_fast_path_restart_enabled(bool enabled) {
+ ConfigBuilder builder;
+ builder.restartWithFastUpdatePathIfAllGetTimestampsAreConsistent = enabled;
+ configure_stripe(builder);
+ }
+
+ void configure_merge_operations_disabled(bool disabled) {
+ ConfigBuilder builder;
+ builder.mergeOperationsDisabled = disabled;
+ configure_stripe(builder);
+ }
+
+ void configure_use_weak_internal_read_consistency(bool use_weak) {
+ ConfigBuilder builder;
+ builder.useWeakInternalReadConsistencyForClientGets = use_weak;
+ configure_stripe(builder);
+ }
+
+ void configure_metadata_update_phase_enabled(bool enabled) {
+ ConfigBuilder builder;
+ builder.enableMetadataOnlyFetchPhaseForInconsistentUpdates = enabled;
+ configure_stripe(builder);
+ }
+
+ void configure_prioritize_global_bucket_merges(bool enabled) {
+ ConfigBuilder builder;
+ builder.prioritizeGlobalBucketMerges = enabled;
+ configure_stripe(builder);
+ }
+
+ void configure_max_activation_inhibited_out_of_sync_groups(uint32_t n_groups) {
+ ConfigBuilder builder;
+ builder.maxActivationInhibitedOutOfSyncGroups = n_groups;
+ configure_stripe(builder);
+ }
+
void configureMaxClusterClockSkew(int seconds);
void configure_mutation_sequencing(bool enabled);
void configure_merge_busy_inhibit_duration(int seconds);
+ void set_up_and_start_get_op_with_stale_reads_enabled(bool enabled);
+
};
DistributorStripeTest::DistributorStripeTest()
@@ -185,7 +230,56 @@ TEST_F(DistributorStripeTest, operations_generated_and_started_without_duplicate
ASSERT_EQ(6, _sender.commands().size());
}
-// TODO STRIPE also need to impl/test cross-stripe cluster state changes
+TEST_F(DistributorStripeTest, maintenance_scheduling_inhibited_if_cluster_state_is_pending)
+{
+ setup_stripe(Redundancy(2), NodeCount(4), "storage:3 distributor:1");
+ simulate_set_pending_cluster_state("storage:4 distributor:1");
+
+ _sender.commands().clear(); // Remove pending bucket info requests
+
+ tickDistributorNTimes(1);
+ EXPECT_FALSE(stripe_is_in_recovery_mode());
+
+ for (uint32_t i = 0; i < 6; ++i) {
+ addNodesToBucketDB(document::BucketId(16, i), "0=2"); // Needs activation, merging
+ }
+ tickDistributorNTimes(10);
+
+ // No ops should have been actually generated
+ ASSERT_EQ(0, _sender.commands().size());
+}
+
+TEST_F(DistributorStripeTest, non_activation_maintenance_inhibited_if_explicitly_toggled)
+{
+ setup_stripe(Redundancy(2), NodeCount(4), "storage:3 distributor:1");
+ tickDistributorNTimes(1);
+ ASSERT_FALSE(stripe_is_in_recovery_mode());
+
+ for (uint32_t i = 0; i < 3; ++i) {
+ addNodesToBucketDB(document::BucketId(16, i), "0=2/3/4/t/a"); // Needs merging, but not activation (already active)
+ }
+ _stripe->inhibit_non_activation_maintenance_operations(true);
+ tickDistributorNTimes(10);
+
+ // No ops should have been actually generated
+ ASSERT_EQ("", _sender.getCommands());
+}
+
+TEST_F(DistributorStripeTest, activation_maintenance_not_inhibited_even_if_explicitly_toggled)
+{
+ setup_stripe(Redundancy(2), NodeCount(4), "storage:3 distributor:1");
+ tickDistributorNTimes(1);
+ ASSERT_FALSE(stripe_is_in_recovery_mode());
+
+ for (uint32_t i = 0; i < 3; ++i) {
+ addNodesToBucketDB(document::BucketId(16, i), "0=2/3/4"); // Needs activation and merging
+ }
+ _stripe->inhibit_non_activation_maintenance_operations(true);
+ tickDistributorNTimes(10);
+
+ ASSERT_EQ("SetBucketState,SetBucketState,SetBucketState", _sender.getCommands());
+}
+
TEST_F(DistributorStripeTest, recovery_mode_on_cluster_state_change)
{
setup_stripe(Redundancy(1), NodeCount(2),
@@ -288,7 +382,6 @@ TEST_F(DistributorStripeTest, update_bucket_database)
updateBucketDB("0:456", "2:333", ResetTrusted(true)));
}
-// TODO STRIPE need to impl/test cross-stripe config propagation
TEST_F(DistributorStripeTest, priority_config_is_propagated_to_distributor_configuration)
{
using namespace vespa::config::content::core;
@@ -326,6 +419,25 @@ TEST_F(DistributorStripeTest, priority_config_is_propagated_to_distributor_confi
EXPECT_EQ(12, static_cast<int>(mp.mergeGlobalBuckets));
}
+TEST_F(DistributorStripeTest, no_db_resurrection_for_bucket_not_owned_in_pending_state) {
+ setup_stripe(Redundancy(1), NodeCount(10), "storage:2 distributor:2");
+ // Force new state into being the pending state. According to the initial
+ // state we own the bucket, but according to the pending state, we do
+ // not. This must be handled correctly by the database update code.
+ simulate_set_pending_cluster_state("storage:10 distributor:10");
+
+ document::BucketId nonOwnedBucket(16, 3);
+ EXPECT_FALSE(getDistributorBucketSpace().get_bucket_ownership_flags(nonOwnedBucket).owned_in_pending_state());
+ EXPECT_FALSE(getDistributorBucketSpace().check_ownership_in_pending_and_current_state(nonOwnedBucket).isOwned());
+
+ std::vector<BucketCopy> copies;
+ copies.emplace_back(1234, 0, api::BucketInfo(0x567, 1, 2));
+ operation_context().update_bucket_database(makeDocumentBucket(nonOwnedBucket), copies,
+ DatabaseUpdate::CREATE_IF_NONEXISTING);
+
+ EXPECT_EQ("NONEXISTING", dumpBucket(nonOwnedBucket));
+}
+
TEST_F(DistributorStripeTest, added_db_buckets_without_gc_timestamp_implicitly_get_current_time)
{
setup_stripe(Redundancy(1), NodeCount(10), "storage:2 distributor:2");
@@ -363,7 +475,7 @@ TEST_F(DistributorStripeTest, merge_stats_are_accumulated_during_database_iterat
// added to existing.
tickDistributorNTimes(50);
- const auto& stats = stripe_maintenance_stats();
+ const auto stats = stripe_maintenance_stats();
{
NodeMaintenanceStats wanted;
wanted.syncing = 1;
@@ -389,6 +501,11 @@ TEST_F(DistributorStripeTest, merge_stats_are_accumulated_during_database_iterat
assertBucketSpaceStats(1, 3, 0, "default", bucketStats);
assertBucketSpaceStats(0, 1, 1, "default", bucketStats);
assertBucketSpaceStats(3, 1, 2, "default", bucketStats);
+
+ EXPECT_EQ(stats.perNodeStats.total_replica_stats().movingOut, 1);
+ EXPECT_EQ(stats.perNodeStats.total_replica_stats().copyingOut, 2);
+ EXPECT_EQ(stats.perNodeStats.total_replica_stats().copyingIn, 2);
+ EXPECT_EQ(stats.perNodeStats.total_replica_stats().syncing, 2);
}
void
@@ -422,7 +539,7 @@ TEST_F(DistributorStripeTest, stats_generated_for_preempted_operations)
// by activation, we'll see no merge stats at all.
addNodesToBucketDB(document::BucketId(16, 1), "0=1/1/1,1=2/2/2");
tickDistributorNTimes(50);
- const auto& stats = stripe_maintenance_stats();
+ const auto stats = stripe_maintenance_stats();
{
NodeMaintenanceStats wanted;
wanted.syncing = 1;
@@ -670,8 +787,6 @@ void assert_invalid_stats_for_all_spaces(
}
-// TODO STRIPE must impl/test cross-stripe bucket space stats
-// TODO STRIPE cross-stripe recovery mode handling how?
TEST_F(DistributorStripeTest, entering_recovery_mode_resets_bucket_space_stats)
{
// Set up a cluster state + DB contents which implies merge maintenance ops
@@ -694,4 +809,156 @@ TEST_F(DistributorStripeTest, entering_recovery_mode_resets_bucket_space_stats)
assert_invalid_stats_for_all_spaces(stats, 2);
}
+TEST_F(DistributorStripeTest, stale_reads_config_is_propagated_to_external_operation_handler)
+{
+ setup_stripe(Redundancy(1), NodeCount(1), "distributor:1 storage:1");
+
+ configure_stale_reads_enabled(true);
+ EXPECT_TRUE(getExternalOperationHandler().concurrent_gets_enabled());
+
+ configure_stale_reads_enabled(false);
+ EXPECT_FALSE(getExternalOperationHandler().concurrent_gets_enabled());
+}
+
+TEST_F(DistributorStripeTest, fast_path_on_consistent_gets_config_is_propagated_to_internal_config)
+{
+ setup_stripe(Redundancy(1), NodeCount(1), "distributor:1 storage:1");
+
+ configure_update_fast_path_restart_enabled(true);
+ EXPECT_TRUE(getConfig().update_fast_path_restart_enabled());
+
+ configure_update_fast_path_restart_enabled(false);
+ EXPECT_FALSE(getConfig().update_fast_path_restart_enabled());
+}
+
+TEST_F(DistributorStripeTest, merge_disabling_config_is_propagated_to_internal_config)
+{
+ setup_stripe(Redundancy(1), NodeCount(1), "distributor:1 storage:1");
+
+ configure_merge_operations_disabled(true);
+ EXPECT_TRUE(getConfig().merge_operations_disabled());
+
+ configure_merge_operations_disabled(false);
+ EXPECT_FALSE(getConfig().merge_operations_disabled());
+}
+
+TEST_F(DistributorStripeTest, metadata_update_phase_config_is_propagated_to_internal_config)
+{
+ setup_stripe(Redundancy(1), NodeCount(1), "distributor:1 storage:1");
+
+ configure_metadata_update_phase_enabled(true);
+ EXPECT_TRUE(getConfig().enable_metadata_only_fetch_phase_for_inconsistent_updates());
+
+ configure_metadata_update_phase_enabled(false);
+ EXPECT_FALSE(getConfig().enable_metadata_only_fetch_phase_for_inconsistent_updates());
+}
+
+TEST_F(DistributorStripeTest, weak_internal_read_consistency_config_is_propagated_to_internal_configs)
+{
+ setup_stripe(Redundancy(1), NodeCount(1), "distributor:1 storage:1");
+
+ configure_use_weak_internal_read_consistency(true);
+ EXPECT_TRUE(getConfig().use_weak_internal_read_consistency_for_client_gets());
+ EXPECT_TRUE(getExternalOperationHandler().use_weak_internal_read_consistency_for_gets());
+
+ configure_use_weak_internal_read_consistency(false);
+ EXPECT_FALSE(getConfig().use_weak_internal_read_consistency_for_client_gets());
+ EXPECT_FALSE(getExternalOperationHandler().use_weak_internal_read_consistency_for_gets());
+}
+
+TEST_F(DistributorStripeTest, prioritize_global_bucket_merges_config_is_propagated_to_internal_config)
+{
+ setup_stripe(Redundancy(1), NodeCount(1), "distributor:1 storage:1");
+
+ configure_prioritize_global_bucket_merges(true);
+ EXPECT_TRUE(getConfig().prioritize_global_bucket_merges());
+
+ configure_prioritize_global_bucket_merges(false);
+ EXPECT_FALSE(getConfig().prioritize_global_bucket_merges());
+}
+
+TEST_F(DistributorStripeTest, max_activation_inhibited_out_of_sync_groups_config_is_propagated_to_internal_config)
+{
+ setup_stripe(Redundancy(1), NodeCount(1), "distributor:1 storage:1");
+
+ configure_max_activation_inhibited_out_of_sync_groups(3);
+ EXPECT_EQ(getConfig().max_activation_inhibited_out_of_sync_groups(), 3);
+
+ configure_max_activation_inhibited_out_of_sync_groups(0);
+ EXPECT_EQ(getConfig().max_activation_inhibited_out_of_sync_groups(), 0);
+}
+
+TEST_F(DistributorStripeTest, wanted_split_bit_count_is_lower_bounded)
+{
+ setup_stripe(Redundancy(1), NodeCount(1), "distributor:1 storage:1");
+
+ ConfigBuilder builder;
+ builder.minsplitcount = 7;
+ configure_stripe(builder);
+
+ EXPECT_EQ(getConfig().getMinimalBucketSplit(), 8);
+}
+
+namespace {
+
+auto make_dummy_get_command_for_bucket_1() {
+ return std::make_shared<api::GetCommand>(
+ makeDocumentBucket(document::BucketId(0)),
+ document::DocumentId("id:foo:testdoctype1:n=1:foo"),
+ document::AllFields::NAME);
+}
+
+}
+
+void
+DistributorStripeTest::set_up_and_start_get_op_with_stale_reads_enabled(bool enabled)
+{
+ setup_stripe(Redundancy(1), NodeCount(1), "distributor:1 storage:1");
+ configure_stale_reads_enabled(enabled);
+
+ document::BucketId bucket(16, 1);
+ addNodesToBucketDB(bucket, "0=1/1/1/t");
+ _stripe->handle_or_enqueue_message(make_dummy_get_command_for_bucket_1());
+}
+
+TEST_F(DistributorStripeTest, gets_are_started_outside_main_stripe_logic_if_stale_reads_enabled)
+{
+ set_up_and_start_get_op_with_stale_reads_enabled(true);
+ ASSERT_THAT(_sender.commands(), SizeIs(1));
+ EXPECT_THAT(_sender.replies(), SizeIs(0));
+
+ // Reply is routed to the correct owner
+ auto reply = std::shared_ptr<api::StorageReply>(_sender.command(0)->makeReply());
+ _stripe->handle_or_enqueue_message(reply);
+ ASSERT_THAT(_sender.commands(), SizeIs(1));
+ EXPECT_THAT(_sender.replies(), SizeIs(1));
+}
+
+TEST_F(DistributorStripeTest, gets_are_not_started_outside_main_stripe_logic_if_stale_reads_disabled)
+{
+ set_up_and_start_get_op_with_stale_reads_enabled(false);
+ // Get has been placed into distributor queue, so no external messages are produced.
+ EXPECT_THAT(_sender.commands(), SizeIs(0));
+ EXPECT_THAT(_sender.replies(), SizeIs(0));
+}
+
+// There's no need or desire to track "lockfree" Gets in the main pending message tracker,
+// as we only have to track mutations to inhibit maintenance ops safely. Furthermore,
+// the message tracker is a multi-index and therefore has some runtime cost.
+TEST_F(DistributorStripeTest, gets_started_outside_stripe_thread_are_not_tracked_by_pending_message_tracker)
+{
+ set_up_and_start_get_op_with_stale_reads_enabled(true);
+ Bucket bucket(FixedBucketSpaces::default_space(), BucketId(16, 1));
+ EXPECT_FALSE(pending_message_tracker().hasPendingMessage(
+ 0, bucket, api::MessageType::GET_ID));
+}
+
+TEST_F(DistributorStripeTest, closing_aborts_gets_started_outside_stripe_thread)
+{
+ set_up_and_start_get_op_with_stale_reads_enabled(true);
+ _stripe->flush_and_close();
+ ASSERT_EQ(1, _sender.replies().size());
+ EXPECT_EQ(api::ReturnCode::ABORTED, _sender.reply(0)->getResult().getResult());
+}
+
}
diff --git a/storage/src/tests/distributor/distributor_stripe_test_util.cpp b/storage/src/tests/distributor/distributor_stripe_test_util.cpp
index 6edaccc014b..c5c51e64e68 100644
--- a/storage/src/tests/distributor/distributor_stripe_test_util.cpp
+++ b/storage/src/tests/distributor/distributor_stripe_test_util.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "distributor_stripe_test_util.h"
#include <vespa/config-stor-distribution.h>
@@ -20,11 +20,11 @@ namespace storage::distributor {
DistributorStripeTestUtil::DistributorStripeTestUtil()
: _config(),
_node(),
- _threadPool(),
_stripe(),
_sender(),
_senderDown(),
_hostInfo(),
+ _done_initializing(true),
_messageSender(_sender, _senderDown)
{
_config = getStandardConfig(false);
@@ -36,18 +36,15 @@ void
DistributorStripeTestUtil::createLinks()
{
_node.reset(new TestDistributorApp(_config.getConfigId()));
- _threadPool = framework::TickingThreadPool::createDefault("distributor");
_metrics = std::make_shared<DistributorMetricSet>();
_ideal_state_metrics = std::make_shared<IdealStateMetricSet>();
_stripe = std::make_unique<DistributorStripe>(_node->getComponentRegister(),
*_metrics,
*_ideal_state_metrics,
_node->node_identity(),
- *_threadPool,
- *this,
_messageSender,
*this,
- false);
+ _done_initializing);
}
void
@@ -91,6 +88,25 @@ DistributorStripeTestUtil::setup_stripe(int redundancy,
_stripe->update_distribution_config(new_configs);
}
+void
+DistributorStripeTestUtil::set_redundancy(uint32_t redundancy)
+{
+ auto distribution = std::make_shared<lib::Distribution>(
+ lib::Distribution::getDefaultDistributionConfig(redundancy, 100));
+ // Same rationale for not triggering a full distribution change as
+ // in setup_stripe() above
+ _node->getComponentRegister().setDistribution(distribution);
+ _stripe->propagateDefaultDistribution(std::move(distribution));
+}
+
+void
+DistributorStripeTestUtil::trigger_distribution_change(lib::Distribution::SP distr)
+{
+ _node->getComponentRegister().setDistribution(distr);
+ auto new_config = BucketSpaceDistributionConfigs::from_default_distribution(distr);
+ _stripe->update_distribution_config(new_config);
+}
+
std::shared_ptr<DistributorConfiguration>
DistributorStripeTestUtil::make_config() const
{
@@ -125,6 +141,26 @@ DistributorStripeTestUtil::handle_top_level_message(const std::shared_ptr<api::S
}
void
+DistributorStripeTestUtil::simulate_set_pending_cluster_state(const vespalib::string& state_str)
+{
+ lib::ClusterState state(state_str);
+ lib::ClusterStateBundle pending_state(state);
+ for (auto& space : _stripe->getBucketSpaceRepo()) {
+ const auto& new_cluster_state = pending_state.getDerivedClusterState(space.first);
+ _stripe->update_read_snapshot_before_db_pruning();
+ _stripe->remove_superfluous_buckets(space.first, *new_cluster_state, false);
+ _stripe->update_read_snapshot_after_db_pruning(pending_state);
+ }
+ _stripe->set_pending_cluster_state_bundle(pending_state);
+}
+
+void
+DistributorStripeTestUtil::clear_pending_cluster_state_bundle()
+{
+ _stripe->clear_pending_cluster_state_bundle();
+}
+
+void
DistributorStripeTestUtil::setTypeRepo(const std::shared_ptr<const document::DocumentTypeRepo>& repo)
{
_node->getComponentRegister().setDocumentTypeRepo(repo);
@@ -398,6 +434,12 @@ DistributorStripeTestUtil::doc_selection_parser() const {
return _stripe->_component;
}
+DistributorMetricSet&
+DistributorStripeTestUtil::metrics()
+{
+ return *_metrics;
+}
+
bool
DistributorStripeTestUtil::tick()
{
diff --git a/storage/src/tests/distributor/distributor_stripe_test_util.h b/storage/src/tests/distributor/distributor_stripe_test_util.h
index 07f878326ea..b1e90821e3b 100644
--- a/storage/src/tests/distributor/distributor_stripe_test_util.h
+++ b/storage/src/tests/distributor/distributor_stripe_test_util.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "distributor_message_sender_stub.h"
@@ -124,6 +124,7 @@ public:
const storage::distributor::DistributorNodeContext& node_context() const;
storage::distributor::DistributorStripeOperationContext& operation_context();
const DocumentSelectionParser& doc_selection_parser() const;
+ DistributorMetricSet& metrics();
bool tick();
@@ -168,6 +169,10 @@ public:
uint32_t early_return = false,
bool require_primary_to_be_written = true);
+ void set_redundancy(uint32_t redundancy);
+
+ void trigger_distribution_change(std::shared_ptr<lib::Distribution> distr);
+
using ConfigBuilder = vespa::config::content::core::StorDistributormanagerConfigBuilder;
std::shared_ptr<DistributorConfiguration> make_config() const;
@@ -201,16 +206,19 @@ public:
void handle_top_level_message(const std::shared_ptr<api::StorageMessage>& msg);
+ void simulate_set_pending_cluster_state(const vespalib::string& state_str);
+ void clear_pending_cluster_state_bundle();
+
protected:
vdstestlib::DirConfig _config;
std::unique_ptr<TestDistributorApp> _node;
- std::unique_ptr<framework::TickingThreadPool> _threadPool;
std::shared_ptr<DistributorMetricSet> _metrics;
std::shared_ptr<IdealStateMetricSet> _ideal_state_metrics;
std::unique_ptr<DistributorStripe> _stripe;
DistributorMessageSenderStub _sender;
DistributorMessageSenderStub _senderDown;
HostInfo _hostInfo;
+ bool _done_initializing;
struct MessageSenderImpl : public ChainedMessageSender {
DistributorMessageSenderStub& _sender;
diff --git a/storage/src/tests/distributor/distributortestutil.cpp b/storage/src/tests/distributor/distributortestutil.cpp
deleted file mode 100644
index 3ec1c95b206..00000000000
--- a/storage/src/tests/distributor/distributortestutil.cpp
+++ /dev/null
@@ -1,512 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include "distributortestutil.h"
-#include <vespa/config-stor-distribution.h>
-#include <vespa/document/test/make_bucket_space.h>
-#include <vespa/document/test/make_document_bucket.h>
-#include <vespa/storage/distributor/distributor.h>
-#include <vespa/storage/distributor/distributor_bucket_space.h>
-#include <vespa/storage/distributor/distributor_stripe.h>
-#include <vespa/storage/distributor/distributor_stripe_component.h>
-#include <vespa/storage/distributor/distributor_stripe_pool.h>
-#include <vespa/vdslib/distribution/distribution.h>
-#include <vespa/vespalib/text/stringtokenizer.h>
-
-using document::test::makeBucketSpace;
-using document::test::makeDocumentBucket;
-
-namespace storage::distributor {
-
-DistributorTestUtil::DistributorTestUtil()
- : _messageSender(_sender, _senderDown),
- _num_distributor_stripes(0) // TODO STRIPE change default
-{
- _config = getStandardConfig(false);
-}
-DistributorTestUtil::~DistributorTestUtil() { }
-
-void
-DistributorTestUtil::createLinks()
-{
- _node.reset(new TestDistributorApp(_config.getConfigId()));
- _threadPool = framework::TickingThreadPool::createDefault("distributor");
- _stripe_pool = std::make_unique<DistributorStripePool>();
- _distributor.reset(new Distributor(
- _node->getComponentRegister(),
- _node->node_identity(),
- *_threadPool,
- *_stripe_pool,
- *this,
- _num_distributor_stripes,
- _hostInfo,
- &_messageSender));
- _component.reset(new storage::DistributorComponent(_node->getComponentRegister(), "distrtestutil"));
-};
-
-void
-DistributorTestUtil::setupDistributor(int redundancy,
- int nodeCount,
- const std::string& systemState,
- uint32_t earlyReturn,
- bool requirePrimaryToBeWritten)
-{
- setup_distributor(redundancy, nodeCount, lib::ClusterStateBundle(lib::ClusterState(systemState)), earlyReturn, requirePrimaryToBeWritten);
-}
-
-void
-DistributorTestUtil::setup_distributor(int redundancy,
- int node_count,
- const lib::ClusterStateBundle& state,
- uint32_t early_return,
- bool require_primary_to_be_written)
-{
- lib::Distribution::DistributionConfigBuilder config(
- lib::Distribution::getDefaultDistributionConfig(redundancy, node_count).get());
- config.redundancy = redundancy;
- config.initialRedundancy = early_return;
- config.ensurePrimaryPersisted = require_primary_to_be_written;
- auto distribution = std::make_shared<lib::Distribution>(config);
- _node->getComponentRegister().setDistribution(distribution);
- enable_distributor_cluster_state(state);
- // This is for all intents and purposes a hack to avoid having the
- // distributor treat setting the distribution explicitly as a signal that
- // it should send RequestBucketInfo to all configured nodes.
- // If we called storage_distribution_changed followed by enableDistribution
- // explicitly (which is what happens in "real life"), that is what would
- // take place.
- // The inverse case of this can be explicitly accomplished by calling
- // triggerDistributionChange().
- // This isn't pretty, folks, but it avoids breaking the world for now,
- // as many tests have implicit assumptions about this being the behavior.
- _distributor->propagateDefaultDistribution(distribution);
-}
-
-void
-DistributorTestUtil::setRedundancy(uint32_t redundancy)
-{
- auto distribution = std::make_shared<lib::Distribution>(
- lib::Distribution::getDefaultDistributionConfig(
- redundancy, 100));
- // Same rationale for not triggering a full distribution change as
- // in setupDistributor()
- _node->getComponentRegister().setDistribution(distribution);
- _distributor->propagateDefaultDistribution(std::move(distribution));
-}
-
-void
-DistributorTestUtil::triggerDistributionChange(lib::Distribution::SP distr)
-{
- _node->getComponentRegister().setDistribution(std::move(distr));
- _distributor->storageDistributionChanged();
- _distributor->enableNextDistribution();
-}
-
-void
-DistributorTestUtil::receive_set_system_state_command(const vespalib::string& state_str)
-{
- auto state_cmd = std::make_shared<api::SetSystemStateCommand>(lib::ClusterState(state_str));
- _distributor->handleMessage(state_cmd); // TODO move semantics
-}
-
-void
-DistributorTestUtil::handle_top_level_message(const std::shared_ptr<api::StorageMessage>& msg)
-{
- _distributor->handleMessage(msg);
-}
-
-void
-DistributorTestUtil::setTypeRepo(const std::shared_ptr<const document::DocumentTypeRepo> &repo)
-{
- _node->getComponentRegister().setDocumentTypeRepo(repo);
-}
-
-void
-DistributorTestUtil::close()
-{
- _component.reset(0);
- if (_distributor.get()) {
- _distributor->onClose();
- }
- _sender.clear();
- _node.reset(0);
- _config = getStandardConfig(false);
-}
-
-namespace {
- std::string dumpVector(const std::vector<uint16_t>& vec) {
- std::ostringstream ost;
- for (uint32_t i = 0; i < vec.size(); ++i) {
- if (i != 0) {
- ost << ",";
- }
- ost << vec[i];
- }
- return ost.str();
- }
-}
-
-std::string
-DistributorTestUtil::getNodes(document::BucketId id)
-{
- BucketDatabase::Entry entry = getBucket(id);
-
- if (!entry.valid()) {
- return id.toString();
- } else {
- std::vector<uint16_t> nodes = entry->getNodes();
- std::sort(nodes.begin(), nodes.end());
-
- std::ostringstream ost;
- ost << id << ": " << dumpVector(nodes);
- return ost.str();
- }
-}
-
-std::string
-DistributorTestUtil::getIdealStr(document::BucketId id, const lib::ClusterState& state)
-{
- if (!getDistributorBucketSpace().owns_bucket_in_state(state, id)) {
- return id.toString();
- }
-
- std::vector<uint16_t> nodes;
- getDistribution().getIdealNodes(
- lib::NodeType::STORAGE, state, id, nodes);
- std::sort(nodes.begin(), nodes.end());
- std::ostringstream ost;
- ost << id << ": " << dumpVector(nodes);
- return ost.str();
-}
-
-void
-DistributorTestUtil::addIdealNodes(const lib::ClusterState& state,
- const document::BucketId& id)
-{
- BucketDatabase::Entry entry = getBucket(id);
-
- if (!entry.valid()) {
- entry = BucketDatabase::Entry(id);
- }
-
- std::vector<uint16_t> res;
- assert(_component.get());
- getDistribution().getIdealNodes(
- lib::NodeType::STORAGE, state, id, res);
-
- for (uint32_t i = 0; i < res.size(); ++i) {
- if (state.getNodeState(lib::Node(lib::NodeType::STORAGE, res[i])).getState() !=
- lib::State::MAINTENANCE)
- {
- entry->addNode(BucketCopy(0, res[i], api::BucketInfo(1,1,1)),
- toVector<uint16_t>(0));
- }
- }
-
- getBucketDatabase().update(entry);
-}
-
-void DistributorTestUtil::addNodesToBucketDB(const document::Bucket& bucket, const std::string& nodeStr) {
- BucketDatabase::Entry entry = getBucket(bucket);
-
- if (!entry.valid()) {
- entry = BucketDatabase::Entry(bucket.getBucketId());
- }
-
- entry->clear();
-
- vespalib::StringTokenizer tokenizer(nodeStr, ",");
- for (uint32_t i = 0; i < tokenizer.size(); ++i) {
- vespalib::StringTokenizer tok2(tokenizer[i], "=");
- vespalib::StringTokenizer tok3(tok2[1], "/");
-
- api::BucketInfo info(atoi(tok3[0].data()),
- atoi(tok3.size() > 1 ? tok3[1].data() : tok3[0].data()),
- atoi(tok3.size() > 2 ? tok3[2].data() : tok3[0].data()));
-
- size_t flagsIdx = 3;
-
- // Meta info override? For simplicity, require both meta count and size
- if (tok3.size() > 4 && (!tok3[3].empty() && isdigit(tok3[3][0]))) {
- info.setMetaCount(atoi(tok3[3].data()));
- info.setUsedFileSize(atoi(tok3[4].data()));
- flagsIdx = 5;
- }
-
- if ((tok3.size() > flagsIdx + 1) && tok3[flagsIdx + 1] == "a") {
- info.setActive();
- } else {
- info.setActive(false);
- }
- if ((tok3.size() > flagsIdx + 2) && tok3[flagsIdx + 2] == "r") {
- info.setReady();
- } else {
- info.setReady(false);
- }
-
- uint16_t idx = atoi(tok2[0].data());
- BucketCopy node(
- 0,
- idx,
- info);
-
- // Allow user to manually override trusted and active.
- if (tok3.size() > flagsIdx && tok3[flagsIdx] == "t") {
- node.setTrusted();
- }
-
- entry->addNodeManual(node);
- }
-
- getBucketDatabase(bucket.getBucketSpace()).update(entry);
-}
-
-void
-DistributorTestUtil::addNodesToBucketDB(const document::BucketId& id,
- const std::string& nodeStr)
-{
- addNodesToBucketDB(document::Bucket(makeBucketSpace(), id), nodeStr);
-}
-
-void
-DistributorTestUtil::removeFromBucketDB(const document::BucketId& id)
-{
- getBucketDatabase().remove(id);
-}
-
-void
-DistributorTestUtil::addIdealNodes(const document::BucketId& id)
-{
- // TODO STRIPE roundabout way of getting state bundle..!
- addIdealNodes(*operation_context().cluster_state_bundle().getBaselineClusterState(), id);
-}
-
-void
-DistributorTestUtil::insertBucketInfo(document::BucketId id,
- uint16_t node,
- uint32_t checksum,
- uint32_t count,
- uint32_t size,
- bool trusted,
- bool active)
-{
- api::BucketInfo info(checksum, count, size);
- insertBucketInfo(id, node, info, trusted, active);
-}
-
-void
-DistributorTestUtil::insertBucketInfo(document::BucketId id,
- uint16_t node,
- const api::BucketInfo& info,
- bool trusted,
- bool active)
-{
- BucketDatabase::Entry entry = getBucketDatabase().get(id);
- if (!entry.valid()) {
- entry = BucketDatabase::Entry(id, BucketInfo());
- }
-
- api::BucketInfo info2(info);
- if (active) {
- info2.setActive();
- }
- BucketCopy copy(operation_context().generate_unique_timestamp(), node, info2);
-
- entry->addNode(copy.setTrusted(trusted), toVector<uint16_t>(0));
-
- getBucketDatabase().update(entry);
-}
-
-std::string
-DistributorTestUtil::dumpBucket(const document::BucketId& bid)
-{
- return getBucketDatabase().get(bid).toString();
-}
-
-void
-DistributorTestUtil::sendReply(Operation& op,
- int idx,
- api::ReturnCode::Result result)
-{
- if (idx == -1) {
- idx = _sender.commands().size() - 1;
- }
- assert(idx >= 0 && idx < static_cast<int>(_sender.commands().size()));
-
- std::shared_ptr<api::StorageCommand> cmd = _sender.command(idx);
- api::StorageReply::SP reply(cmd->makeReply().release());
- reply->setResult(result);
- op.receive(_sender, reply);
-}
-
-BucketDatabase::Entry DistributorTestUtil::getBucket(const document::Bucket& bucket) const {
- return getBucketDatabase(bucket.getBucketSpace()).get(bucket.getBucketId());
-}
-
-BucketDatabase::Entry
-DistributorTestUtil::getBucket(const document::BucketId& bId) const
-{
- return getBucketDatabase().get(bId);
-}
-
-void
-DistributorTestUtil::disableBucketActivationInConfig(bool disable)
-{
- vespa::config::content::core::StorDistributormanagerConfigBuilder config;
- config.disableBucketActivation = disable;
- getConfig().configure(config);
-}
-
-StripeBucketDBUpdater&
-DistributorTestUtil::getBucketDBUpdater() {
- return _distributor->bucket_db_updater();
-}
-IdealStateManager&
-DistributorTestUtil::getIdealStateManager() {
- return _distributor->ideal_state_manager();
-}
-ExternalOperationHandler&
-DistributorTestUtil::getExternalOperationHandler() {
- return _distributor->external_operation_handler();
-}
-
-const storage::distributor::DistributorNodeContext&
-DistributorTestUtil::node_context() const {
- return _distributor->distributor_component();
-}
-
-storage::distributor::DistributorStripeOperationContext&
-DistributorTestUtil::operation_context() {
- return _distributor->distributor_component();
-}
-
-const DocumentSelectionParser&
-DistributorTestUtil::doc_selection_parser() const {
- return _distributor->distributor_component();
-}
-
-bool
-DistributorTestUtil::tick() {
- framework::ThreadWaitInfo res(
- framework::ThreadWaitInfo::NO_MORE_CRITICAL_WORK_KNOWN);
- {
- framework::TickingLockGuard lock(
- _distributor->_threadPool.freezeCriticalTicks());
- res.merge(_distributor->doCriticalTick(0));
- }
- res.merge(_distributor->doNonCriticalTick(0));
- return !res.waitWanted();
-}
-
-DistributorConfiguration&
-DistributorTestUtil::getConfig() {
- // TODO STRIPE avoid const cast
- return const_cast<DistributorConfiguration&>(_distributor->getConfig());
-}
-
-DistributorBucketSpace &
-DistributorTestUtil::getDistributorBucketSpace()
-{
- return getBucketSpaceRepo().get(makeBucketSpace());
-}
-
-BucketDatabase&
-DistributorTestUtil::getBucketDatabase() {
- return getDistributorBucketSpace().getBucketDatabase();
-}
-
-BucketDatabase& DistributorTestUtil::getBucketDatabase(document::BucketSpace space) {
- return getBucketSpaceRepo().get(space).getBucketDatabase();
-}
-
-const BucketDatabase&
-DistributorTestUtil::getBucketDatabase() const {
- return getBucketSpaceRepo().get(makeBucketSpace()).getBucketDatabase();
-}
-
-const BucketDatabase& DistributorTestUtil::getBucketDatabase(document::BucketSpace space) const {
- return getBucketSpaceRepo().get(space).getBucketDatabase();
-}
-
-DistributorBucketSpaceRepo &
-DistributorTestUtil::getBucketSpaceRepo() {
- return _distributor->getBucketSpaceRepo();
-}
-
-const DistributorBucketSpaceRepo &
-DistributorTestUtil::getBucketSpaceRepo() const {
- return _distributor->getBucketSpaceRepo();
-}
-
-DistributorBucketSpaceRepo &
-DistributorTestUtil::getReadOnlyBucketSpaceRepo() {
- return _distributor->getReadOnlyBucketSpaceRepo();
-}
-
-const DistributorBucketSpaceRepo &
-DistributorTestUtil::getReadOnlyBucketSpaceRepo() const {
- return _distributor->getReadOnlyBucketSpaceRepo();
-}
-
-bool
-DistributorTestUtil::distributor_is_in_recovery_mode() const noexcept {
- return _distributor->isInRecoveryMode();
-}
-
-const lib::ClusterStateBundle&
-DistributorTestUtil::current_distributor_cluster_state_bundle() const noexcept {
- return getDistributor().getClusterStateBundle();
-}
-
-std::string
-DistributorTestUtil::active_ideal_state_operations() const {
- return _distributor->getActiveIdealStateOperations();
-}
-
-const PendingMessageTracker&
-DistributorTestUtil::pending_message_tracker() const noexcept {
- return _distributor->getPendingMessageTracker();
-}
-
-PendingMessageTracker&
-DistributorTestUtil::pending_message_tracker() noexcept {
- return _distributor->getPendingMessageTracker();
-}
-
-std::chrono::steady_clock::duration
-DistributorTestUtil::db_memory_sample_interval() const noexcept {
- return _distributor->db_memory_sample_interval();
-}
-
-const lib::Distribution&
-DistributorTestUtil::getDistribution() const {
- return getBucketSpaceRepo().get(makeBucketSpace()).getDistribution();
-}
-
-std::vector<document::BucketSpace>
-DistributorTestUtil::getBucketSpaces() const
-{
- std::vector<document::BucketSpace> res;
- for (const auto &repo : getBucketSpaceRepo()) {
- res.push_back(repo.first);
- }
- return res;
-}
-
-void
-DistributorTestUtil::enableDistributorClusterState(vespalib::stringref state)
-{
- getBucketDBUpdater().simulate_cluster_state_bundle_activation(
- lib::ClusterStateBundle(lib::ClusterState(state)));
-}
-
-void
-DistributorTestUtil::enable_distributor_cluster_state(const lib::ClusterStateBundle& state)
-{
- getBucketDBUpdater().simulate_cluster_state_bundle_activation(state);
-}
-
-void
-DistributorTestUtil::setSystemState(const lib::ClusterState& systemState) {
- _distributor->enableClusterStateBundle(lib::ClusterStateBundle(systemState));
-}
-
-}
diff --git a/storage/src/tests/distributor/distributortestutil.h b/storage/src/tests/distributor/distributortestutil.h
deleted file mode 100644
index 533fd49811f..00000000000
--- a/storage/src/tests/distributor/distributortestutil.h
+++ /dev/null
@@ -1,248 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#pragma once
-
-#include "distributor_message_sender_stub.h"
-#include <tests/common/dummystoragelink.h>
-#include <tests/common/testhelper.h>
-#include <tests/common/teststorageapp.h>
-#include <vespa/storage/common/hostreporter/hostinfo.h>
-#include <vespa/storage/frameworkimpl/component/distributorcomponentregisterimpl.h>
-#include <vespa/storage/storageutil/utils.h>
-#include <vespa/storageapi/message/state.h>
-#include <vespa/storageframework/defaultimplementation/clock/fakeclock.h>
-
-namespace storage {
-
-namespace framework { struct TickingThreadPool; }
-
-namespace distributor {
-
-class Distributor;
-class DistributorBucketSpace;
-class DistributorBucketSpaceRepo;
-class DistributorNodeContext;
-class DistributorStripe;
-class DistributorStripeComponent;
-class DistributorStripeOperationContext;
-class DistributorStripePool;
-class DocumentSelectionParser;
-class ExternalOperationHandler;
-class IdealStateManager;
-class Operation;
-class StripeBucketDBUpdater;
-
-// TODO STRIPE rename to DistributorStripeTestUtil?
-class DistributorTestUtil : private DoneInitializeHandler
-{
-public:
- DistributorTestUtil();
- ~DistributorTestUtil();
-
- /**
- * Sets up the storage link chain.
- */
- void createLinks();
- void setTypeRepo(const std::shared_ptr<const document::DocumentTypeRepo> &repo);
-
- void close();
-
- /**
- * Returns a string with the nodes currently stored in the bucket
- * database for the given bucket.
- */
- std::string getNodes(document::BucketId id);
-
- /**
- * Returns a string with the ideal state nodes for the given bucket.
- */
- std::string getIdealStr(document::BucketId id, const lib::ClusterState& state);
-
- /**
- * Adds the ideal nodes for the given bucket and the given cluster state
- * to the bucket database.
- */
- void addIdealNodes(const lib::ClusterState& state, const document::BucketId& id);
-
- /**
- * Adds all the ideal nodes for the given bucket to the bucket database.
- */
- void addIdealNodes(const document::BucketId& id);
-
- /**
- * Parses the given string to a set of node => bucket info data,
- * and inserts them as nodes in the given bucket.
- * Format:
- * "node1=checksum/docs/size,node2=checksum/docs/size"
- */
- void addNodesToBucketDB(const document::Bucket& bucket, const std::string& nodeStr);
- // As the above, but always inserts into default bucket space
- void addNodesToBucketDB(const document::BucketId& id, const std::string& nodeStr);
-
- /**
- * Removes the given bucket from the bucket database.
- */
- void removeFromBucketDB(const document::BucketId& id);
-
- /**
- * Inserts the given bucket information for the given bucket and node in
- * the bucket database.
- */
- void insertBucketInfo(document::BucketId id,
- uint16_t node,
- uint32_t checksum,
- uint32_t count,
- uint32_t size,
- bool trusted = false,
- bool active = false);
-
- /**
- * Inserts the given bucket information for the given bucket and node in
- * the bucket database.
- */
- void insertBucketInfo(document::BucketId id,
- uint16_t node,
- const api::BucketInfo& info,
- bool trusted = false,
- bool active = false);
-
- std::string dumpBucket(const document::BucketId& bucket);
-
- /**
- * Replies to message idx sent upwards with the given result code.
- * If idx = -1, replies to the last command received upwards.
- */
- void sendReply(Operation& op,
- int idx = -1,
- api::ReturnCode::Result result = api::ReturnCode::OK);
-
- StripeBucketDBUpdater& getBucketDBUpdater();
- IdealStateManager& getIdealStateManager();
- ExternalOperationHandler& getExternalOperationHandler();
- const storage::distributor::DistributorNodeContext& node_context() const;
- storage::distributor::DistributorStripeOperationContext& operation_context();
- const DocumentSelectionParser& doc_selection_parser() const;
-
- Distributor& getDistributor() noexcept { return *_distributor; }
- const Distributor& getDistributor() const noexcept { return *_distributor; }
-
- bool tick();
-
- DistributorConfiguration& getConfig();
-
- vdstestlib::DirConfig& getDirConfig() {
- return _config;
- }
-
- // TODO explicit notion of bucket spaces for tests
- DistributorBucketSpace &getDistributorBucketSpace();
- BucketDatabase& getBucketDatabase(); // Implicit default space only
- BucketDatabase& getBucketDatabase(document::BucketSpace space);
- const BucketDatabase& getBucketDatabase() const; // Implicit default space only
- const BucketDatabase& getBucketDatabase(document::BucketSpace space) const;
- DistributorBucketSpaceRepo &getBucketSpaceRepo();
- const DistributorBucketSpaceRepo &getBucketSpaceRepo() const;
- DistributorBucketSpaceRepo& getReadOnlyBucketSpaceRepo();
- const DistributorBucketSpaceRepo& getReadOnlyBucketSpaceRepo() const;
- [[nodiscard]] bool distributor_is_in_recovery_mode() const noexcept;
- [[nodiscard]] const lib::ClusterStateBundle& current_distributor_cluster_state_bundle() const noexcept;
- [[nodiscard]] std::string active_ideal_state_operations() const;
- [[nodiscard]] const PendingMessageTracker& pending_message_tracker() const noexcept;
- [[nodiscard]] PendingMessageTracker& pending_message_tracker() noexcept;
- [[nodiscard]] std::chrono::steady_clock::duration db_memory_sample_interval() const noexcept;
-
- const lib::Distribution& getDistribution() const;
- // "End to end" distribution change trigger, which will invoke the bucket
- // DB updater as expected based on the previous and new cluster state
- // and config.
- void triggerDistributionChange(std::shared_ptr<lib::Distribution> distr);
-
- framework::defaultimplementation::FakeClock& getClock() { return _node->getClock(); }
- DistributorComponentRegister& getComponentRegister() { return _node->getComponentRegister(); }
- DistributorComponentRegisterImpl& getComponentRegisterImpl() { return _node->getComponentRegister(); }
-
- StorageComponent& getComponent() {
- if (_component.get() == 0) {
- _component.reset(new storage::DistributorComponent(
- _node->getComponentRegister(), "distributor_test_utils"));
- }
- return *_component;
- }
-
- void setupDistributor(int redundancy,
- int nodeCount,
- const std::string& systemState,
- uint32_t earlyReturn = false,
- bool requirePrimaryToBeWritten = true);
-
- void setup_distributor(int redundancy,
- int node_count,
- const lib::ClusterStateBundle& state,
- uint32_t early_return = false,
- bool require_primary_to_be_written = true);
-
- void setRedundancy(uint32_t redundancy);
-
- void notifyDoneInitializing() override {}
-
- // Must implement this for storage server interface for now
- virtual api::Timestamp getUniqueTimestamp() {
- return _component->getUniqueTimestamp();
- }
-
- void disableBucketActivationInConfig(bool disable);
-
- BucketDatabase::Entry getBucket(const document::Bucket& bucket) const;
- // Gets bucket entry from default space only
- BucketDatabase::Entry getBucket(const document::BucketId& bId) const;
-
- std::vector<document::BucketSpace> getBucketSpaces() const;
-
- DistributorMessageSenderStub& sender() noexcept { return _sender; }
- const DistributorMessageSenderStub& sender() const noexcept { return _sender; }
-
- void setSystemState(const lib::ClusterState& systemState);
-
- // Invokes full cluster state transition pipeline rather than directly applying
- // the state and just pretending everything has been completed.
- void receive_set_system_state_command(const vespalib::string& state_str);
-
- void handle_top_level_message(const std::shared_ptr<api::StorageMessage>& msg);
-
- // Must be called prior to createLinks() to have any effect
- void set_num_distributor_stripes(uint32_t n_stripes) noexcept {
- _num_distributor_stripes = n_stripes;
- }
-protected:
- vdstestlib::DirConfig _config;
- std::unique_ptr<TestDistributorApp> _node;
- std::unique_ptr<framework::TickingThreadPool> _threadPool;
- std::unique_ptr<DistributorStripePool> _stripe_pool;
- std::unique_ptr<Distributor> _distributor;
- std::unique_ptr<storage::DistributorComponent> _component;
- DistributorMessageSenderStub _sender;
- DistributorMessageSenderStub _senderDown;
- HostInfo _hostInfo;
-
- struct MessageSenderImpl : public ChainedMessageSender {
- DistributorMessageSenderStub& _sender;
- DistributorMessageSenderStub& _senderDown;
- MessageSenderImpl(DistributorMessageSenderStub& up, DistributorMessageSenderStub& down)
- : _sender(up), _senderDown(down) {}
-
- void sendUp(const std::shared_ptr<api::StorageMessage>& msg) override {
- _sender.send(msg);
- }
- void sendDown(const std::shared_ptr<api::StorageMessage>& msg) override {
- _senderDown.send(msg);
- }
- };
- MessageSenderImpl _messageSender;
- uint32_t _num_distributor_stripes;
-
- void enableDistributorClusterState(vespalib::stringref state);
- void enable_distributor_cluster_state(const lib::ClusterStateBundle& state);
-};
-
-}
-
-}
diff --git a/storage/src/tests/distributor/dummy_cluster_context.h b/storage/src/tests/distributor/dummy_cluster_context.h
index 783038daf7d..4267341293e 100644
--- a/storage/src/tests/distributor/dummy_cluster_context.h
+++ b/storage/src/tests/distributor/dummy_cluster_context.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/tests/distributor/externaloperationhandlertest.cpp b/storage/src/tests/distributor/externaloperationhandlertest.cpp
index 6d8086696b8..9ce64ff98a1 100644
--- a/storage/src/tests/distributor/externaloperationhandlertest.cpp
+++ b/storage/src/tests/distributor/externaloperationhandlertest.cpp
@@ -1,15 +1,15 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <tests/distributor/distributortestutil.h>
+#include <tests/distributor/distributor_stripe_test_util.h>
#include <vespa/document/fieldset/fieldsets.h>
#include <vespa/document/repo/documenttyperepo.h>
#include <vespa/document/test/make_document_bucket.h>
#include <vespa/document/update/assignvalueupdate.h>
#include <vespa/document/update/documentupdate.h>
#include <vespa/storage/common/reindexing_constants.h>
-#include <vespa/storage/distributor/distributor.h>
-#include <vespa/storage/distributor/distributor_stripe.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
#include <vespa/storage/distributor/distributor_bucket_space.h>
+#include <vespa/storage/distributor/distributor_stripe.h>
#include <vespa/storage/distributor/distributormetricsset.h>
#include <vespa/storage/distributor/externaloperationhandler.h>
#include <vespa/storage/distributor/operations/external/getoperation.h>
@@ -24,7 +24,7 @@ using namespace ::testing;
namespace storage::distributor {
-struct ExternalOperationHandlerTest : Test, DistributorTestUtil {
+struct ExternalOperationHandlerTest : Test, DistributorStripeTestUtil {
document::TestDocMan _testDocMan;
document::BucketId findNonOwnedUserBucketInState(vespalib::stringref state);
@@ -209,7 +209,7 @@ std::shared_ptr<api::RemoveCommand> ExternalOperationHandlerTest::makeRemoveComm
TEST_F(ExternalOperationHandlerTest, mutating_operation_wdr_bounced_on_wrong_current_distribution) {
createLinks();
std::string state("version:1 distributor:2 storage:2");
- setupDistributor(1, 2, state);
+ setup_stripe(1, 2, state);
document::BucketId bucket(findNonOwnedUserBucketInState(state));
auto cmd = makeUpdateCommandForUser(bucket.withoutCountBits());
@@ -226,7 +226,7 @@ TEST_F(ExternalOperationHandlerTest, mutating_operation_wdr_bounced_on_wrong_cur
TEST_F(ExternalOperationHandlerTest, read_only_operation_wdr_bounced_on_wrong_current_distribution) {
createLinks();
std::string state("version:1 distributor:2 storage:2");
- setupDistributor(1, 2, state);
+ setup_stripe(1, 2, state);
document::BucketId bucket(findNonOwnedUserBucketInState(state));
auto cmd = makeGetCommandForUser(bucket.withoutCountBits());
@@ -244,13 +244,12 @@ TEST_F(ExternalOperationHandlerTest, mutating_operation_busy_bounced_on_wrong_pe
createLinks();
std::string current("version:10 distributor:2 storage:2");
std::string pending("version:11 distributor:3 storage:3");
- setupDistributor(1, 3, current);
+ setup_stripe(1, 3, current);
document::BucketId b(findOwned1stNotOwned2ndInStates(current, pending));
// Trigger pending cluster state
- auto stateCmd = std::make_shared<api::SetSystemStateCommand>(lib::ClusterState(pending));
- getBucketDBUpdater().onSetSystemState(stateCmd);
+ simulate_set_pending_cluster_state(pending);
auto cmd = makeUpdateCommandForUser(b.withoutCountBits());
@@ -267,7 +266,7 @@ ExternalOperationHandlerTest::verify_busy_bounced_due_to_no_active_state(std::sh
{
createLinks();
std::string state{}; // No version --> not yet received
- setupDistributor(1, 2, state);
+ setup_stripe(1, 2, state);
Operation::SP genOp;
ASSERT_TRUE(getExternalOperationHandler().handleMessage(cmd, genOp));
@@ -294,7 +293,7 @@ void ExternalOperationHandlerTest::assert_rejection_due_to_unsafe_time(
std::shared_ptr<api::StorageCommand> cmd)
{
createLinks();
- setupDistributor(1, 2, "version:1 distributor:1 storage:1");
+ setup_stripe(1, 2, "version:1 distributor:1 storage:1");
getClock().setAbsoluteTimeInSeconds(9);
getExternalOperationHandler().rejectFeedBeforeTimeReached(TimePoint(10s));
@@ -310,22 +309,22 @@ void ExternalOperationHandlerTest::assert_rejection_due_to_unsafe_time(
TEST_F(ExternalOperationHandlerTest, reject_put_if_not_past_safe_time_point) {
assert_rejection_due_to_unsafe_time(makePutCommand("foo", "id:foo:testdoctype1::bar"));
- EXPECT_EQ(1, safe_time_not_reached_metric_count(getDistributor().getMetrics().puts));
+ EXPECT_EQ(1, safe_time_not_reached_metric_count(metrics().puts));
}
TEST_F(ExternalOperationHandlerTest, reject_remove_if_not_past_safe_time_point) {
assert_rejection_due_to_unsafe_time(makeRemoveCommand("id:foo:testdoctype1::bar"));
- EXPECT_EQ(1, safe_time_not_reached_metric_count(getDistributor().getMetrics().removes));
+ EXPECT_EQ(1, safe_time_not_reached_metric_count(metrics().removes));
}
TEST_F(ExternalOperationHandlerTest, reject_update_if_not_past_safe_time_point) {
assert_rejection_due_to_unsafe_time(makeUpdateCommand());
- EXPECT_EQ(1, safe_time_not_reached_metric_count(getDistributor().getMetrics().updates));
+ EXPECT_EQ(1, safe_time_not_reached_metric_count(metrics().updates));
}
TEST_F(ExternalOperationHandlerTest, get_not_rejected_by_unsafe_time_point) {
createLinks();
- setupDistributor(1, 2, "version:1 distributor:1 storage:1");
+ setup_stripe(1, 2, "version:1 distributor:1 storage:1");
getClock().setAbsoluteTimeInSeconds(9);
getExternalOperationHandler().rejectFeedBeforeTimeReached(TimePoint(10s));
@@ -334,12 +333,12 @@ TEST_F(ExternalOperationHandlerTest, get_not_rejected_by_unsafe_time_point) {
makeGetCommandForUser(0), generated);
ASSERT_NE(generated.get(), nullptr);
ASSERT_EQ(0, _sender.replies().size());
- EXPECT_EQ(0, safe_time_not_reached_metric_count(getDistributor().getMetrics().gets));
+ EXPECT_EQ(0, safe_time_not_reached_metric_count(metrics().gets));
}
TEST_F(ExternalOperationHandlerTest, mutation_not_rejected_when_safe_point_reached) {
createLinks();
- setupDistributor(1, 2, "version:1 distributor:1 storage:1");
+ setup_stripe(1, 2, "version:1 distributor:1 storage:1");
getClock().setAbsoluteTimeInSeconds(10);
getExternalOperationHandler().rejectFeedBeforeTimeReached(TimePoint(10s));
@@ -351,19 +350,19 @@ TEST_F(ExternalOperationHandlerTest, mutation_not_rejected_when_safe_point_reach
generated);
ASSERT_NE(generated.get(), nullptr);
ASSERT_EQ(0, _sender.replies().size());
- EXPECT_EQ(0, safe_time_not_reached_metric_count(getDistributor().getMetrics().removes));
+ EXPECT_EQ(0, safe_time_not_reached_metric_count(metrics().removes));
}
void ExternalOperationHandlerTest::set_up_distributor_for_sequencing_test() {
createLinks();
- setupDistributor(1, 2, "version:1 distributor:1 storage:1");
+ setup_stripe(1, 2, "version:1 distributor:1 storage:1");
}
void ExternalOperationHandlerTest::set_up_distributor_with_feed_blocked_state() {
createLinks();
- setup_distributor(1, 2,
- lib::ClusterStateBundle(lib::ClusterState("version:1 distributor:1 storage:1"),
- {}, {true, "full disk"}, false));
+ setup_stripe(1, 2,
+ lib::ClusterStateBundle(lib::ClusterState("version:1 distributor:1 storage:1"),
+ {}, {true, "full disk"}, false));
}
void ExternalOperationHandlerTest::start_operation_verify_not_rejected(
@@ -419,41 +418,41 @@ TEST_F(ExternalOperationHandlerTest, reject_put_with_concurrent_mutation_to_same
ASSERT_NO_FATAL_FAILURE(assert_second_command_rejected_due_to_concurrent_mutation(
makePutCommand("testdoctype1", _dummy_id),
makePutCommand("testdoctype1", _dummy_id), _dummy_id));
- EXPECT_EQ(1, concurrent_mutatations_metric_count(getDistributor().getMetrics().puts));
+ EXPECT_EQ(1, concurrent_mutatations_metric_count(metrics().puts));
}
TEST_F(ExternalOperationHandlerTest, do_not_reject_put_operations_to_different_ids) {
ASSERT_NO_FATAL_FAILURE(assert_second_command_not_rejected_due_to_concurrent_mutation(
makePutCommand("testdoctype1", "id:foo:testdoctype1::baz"),
makePutCommand("testdoctype1", "id:foo:testdoctype1::foo")));
- EXPECT_EQ(0, concurrent_mutatations_metric_count(getDistributor().getMetrics().puts));
+ EXPECT_EQ(0, concurrent_mutatations_metric_count(metrics().puts));
}
TEST_F(ExternalOperationHandlerTest, reject_remove_with_concurrent_mutation_to_same_id) {
ASSERT_NO_FATAL_FAILURE(assert_second_command_rejected_due_to_concurrent_mutation(
makeRemoveCommand(_dummy_id), makeRemoveCommand(_dummy_id), _dummy_id));
- EXPECT_EQ(1, concurrent_mutatations_metric_count(getDistributor().getMetrics().removes));
+ EXPECT_EQ(1, concurrent_mutatations_metric_count(metrics().removes));
}
TEST_F(ExternalOperationHandlerTest, do_not_reject_remove_operations_to_different_ids) {
ASSERT_NO_FATAL_FAILURE(assert_second_command_not_rejected_due_to_concurrent_mutation(
makeRemoveCommand("id:foo:testdoctype1::baz"),
makeRemoveCommand("id:foo:testdoctype1::foo")));
- EXPECT_EQ(0, concurrent_mutatations_metric_count(getDistributor().getMetrics().removes));
+ EXPECT_EQ(0, concurrent_mutatations_metric_count(metrics().removes));
}
TEST_F(ExternalOperationHandlerTest, reject_update_with_concurrent_mutation_to_same_id) {
ASSERT_NO_FATAL_FAILURE(assert_second_command_rejected_due_to_concurrent_mutation(
makeUpdateCommand("testdoctype1", _dummy_id),
makeUpdateCommand("testdoctype1", _dummy_id), _dummy_id));
- EXPECT_EQ(1, concurrent_mutatations_metric_count(getDistributor().getMetrics().updates));
+ EXPECT_EQ(1, concurrent_mutatations_metric_count(metrics().updates));
}
TEST_F(ExternalOperationHandlerTest, do_not_reject_update_operations_to_different_ids) {
ASSERT_NO_FATAL_FAILURE(assert_second_command_not_rejected_due_to_concurrent_mutation(
makeUpdateCommand("testdoctype1", "id:foo:testdoctype1::baz"),
makeUpdateCommand("testdoctype1", "id:foo:testdoctype1::foo")));
- EXPECT_EQ(0, concurrent_mutatations_metric_count(getDistributor().getMetrics().updates));
+ EXPECT_EQ(0, concurrent_mutatations_metric_count(metrics().updates));
}
TEST_F(ExternalOperationHandlerTest, operation_destruction_allows_new_mutations_for_id) {
@@ -490,7 +489,9 @@ TEST_F(ExternalOperationHandlerTest, sequencing_can_be_explicitly_config_disable
set_up_distributor_for_sequencing_test();
// Should be able to modify config after links have been created, i.e. this is a live config.
- getConfig().setSequenceMutatingOperations(false);
+ auto cfg = make_config();
+ cfg->setSequenceMutatingOperations(false);
+ configure_stripe(cfg);
Operation::SP generated1;
ASSERT_NO_FATAL_FAILURE(start_operation_verify_not_rejected(makeRemoveCommand(_dummy_id), generated1));
@@ -502,8 +503,10 @@ TEST_F(ExternalOperationHandlerTest, sequencing_can_be_explicitly_config_disable
TEST_F(ExternalOperationHandlerTest, gets_are_started_with_mutable_db_outside_transition_period) {
createLinks();
std::string current = "version:1 distributor:1 storage:3";
- setupDistributor(1, 3, current);
- getConfig().setAllowStaleReadsDuringClusterStateTransitions(true);
+ setup_stripe(1, 3, current);
+ auto cfg = make_config();
+ cfg->setAllowStaleReadsDuringClusterStateTransitions(true);
+ configure_stripe(cfg);
document::BucketId b(16, 1234); // Only 1 distributor (us), so doesn't matter
@@ -519,13 +522,14 @@ document::BucketId ExternalOperationHandlerTest::set_up_pending_cluster_state_tr
createLinks();
std::string current = "version:123 distributor:2 storage:2";
std::string pending = "version:321 distributor:3 storage:3";
- setupDistributor(1, 3, current);
+ setup_stripe(1, 3, current);
getBucketDBUpdater().set_stale_reads_enabled(read_only_enabled);
- getConfig().setAllowStaleReadsDuringClusterStateTransitions(read_only_enabled);
+ auto cfg = make_config();
+ cfg->setAllowStaleReadsDuringClusterStateTransitions(read_only_enabled);
+ configure_stripe(cfg);
// Trigger pending cluster state
- auto stateCmd = std::make_shared<api::SetSystemStateCommand>(lib::ClusterState(pending));
- getBucketDBUpdater().onSetSystemState(stateCmd);
+ simulate_set_pending_cluster_state(pending);
return findOwned1stNotOwned2ndInStates(current, pending);
}
@@ -551,7 +555,7 @@ TEST_F(ExternalOperationHandlerTest, gets_are_busy_bounced_during_transition_per
void ExternalOperationHandlerTest::do_test_get_weak_consistency_is_propagated(bool use_weak) {
createLinks();
- setupDistributor(1, 2, "version:1 distributor:1 storage:1");
+ setup_stripe(1, 2, "version:1 distributor:1 storage:1");
// Explicitly only touch config in the case weak consistency is enabled to ensure the
// default is strong.
if (use_weak) {
diff --git a/storage/src/tests/distributor/garbagecollectiontest.cpp b/storage/src/tests/distributor/garbagecollectiontest.cpp
index 751269fe586..07ef4604e20 100644
--- a/storage/src/tests/distributor/garbagecollectiontest.cpp
+++ b/storage/src/tests/distributor/garbagecollectiontest.cpp
@@ -1,26 +1,28 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/storageapi/message/removelocation.h>
-#include <vespa/storage/distributor/operations/idealstate/garbagecollectionoperation.h>
+#include "dummy_cluster_context.h"
+#include <tests/distributor/distributor_stripe_test_util.h>
+#include <vespa/document/test/make_document_bucket.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
#include <vespa/storage/distributor/idealstatemanager.h>
#include <vespa/storage/distributor/idealstatemetricsset.h>
-#include <tests/distributor/distributortestutil.h>
-#include <vespa/storage/distributor/distributor.h>
-#include <vespa/document/test/make_document_bucket.h>
+#include <vespa/storage/distributor/operations/idealstate/garbagecollectionoperation.h>
+#include <vespa/storageapi/message/removelocation.h>
#include <vespa/vespalib/gtest/gtest.h>
-#include "dummy_cluster_context.h"
using document::test::makeDocumentBucket;
using namespace ::testing;
namespace storage::distributor {
-struct GarbageCollectionOperationTest : Test, DistributorTestUtil {
+struct GarbageCollectionOperationTest : Test, DistributorStripeTestUtil {
void SetUp() override {
createLinks();
- enableDistributorClusterState("distributor:1 storage:2");
+ enable_cluster_state("distributor:1 storage:2");
addNodesToBucketDB(document::BucketId(16, 1), "0=250/50/300,1=250/50/300");
- getConfig().setGarbageCollection("music.date < 34", 3600s);
+ auto cfg = make_config();
+ cfg->setGarbageCollection("music.date < 34", 3600s);
+ configure_stripe(cfg);
getClock().setAbsoluteTimeInSeconds(34);
};
diff --git a/storage/src/tests/distributor/getoperationtest.cpp b/storage/src/tests/distributor/getoperationtest.cpp
index c853dd692a0..41f811a77a6 100644
--- a/storage/src/tests/distributor/getoperationtest.cpp
+++ b/storage/src/tests/distributor/getoperationtest.cpp
@@ -1,20 +1,20 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <tests/distributor/distributor_stripe_test_util.h>
#include <vespa/config/helper/configgetter.h>
+#include <vespa/config/helper/configgetter.hpp>
#include <vespa/document/config/config-documenttypes.h>
-#include <vespa/document/repo/documenttyperepo.h>
#include <vespa/document/fieldset/fieldsets.h>
+#include <vespa/document/repo/documenttyperepo.h>
+#include <vespa/document/test/make_document_bucket.h>
#include <vespa/storage/bucketdb/bucketdatabase.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
#include <vespa/storage/distributor/distributor_bucket_space.h>
-#include <vespa/storage/distributor/externaloperationhandler.h>
-#include <vespa/storage/distributor/distributor.h>
#include <vespa/storage/distributor/distributor_stripe.h>
#include <vespa/storage/distributor/distributormetricsset.h>
+#include <vespa/storage/distributor/externaloperationhandler.h>
#include <vespa/storage/distributor/operations/external/getoperation.h>
-#include <tests/distributor/distributortestutil.h>
#include <vespa/storageapi/message/persistence.h>
-#include <vespa/document/test/make_document_bucket.h>
-#include <vespa/config/helper/configgetter.hpp>
#include <vespa/vespalib/gtest/gtest.h>
#include <iomanip>
@@ -28,7 +28,7 @@ using namespace ::testing;
namespace storage::distributor {
-struct GetOperationTest : Test, DistributorTestUtil {
+struct GetOperationTest : Test, DistributorStripeTestUtil {
std::shared_ptr<const document::DocumentTypeRepo> _repo;
document::DocumentId docId;
@@ -59,7 +59,7 @@ struct GetOperationTest : Test, DistributorTestUtil {
op = std::make_unique<GetOperation>(
node_context(), getDistributorBucketSpace(),
getDistributorBucketSpace().getBucketDatabase().acquire_read_guard(),
- msg, getDistributor().getMetrics().gets,
+ msg, metrics().gets,
consistency);
op->start(_sender, framework::MilliSecTime(0));
}
@@ -143,7 +143,7 @@ struct GetOperationTest : Test, DistributorTestUtil {
}
void setClusterState(const std::string& clusterState) {
- enableDistributorClusterState(clusterState);
+ enable_cluster_state(clusterState);
}
void do_test_read_consistency_is_propagated(api::InternalReadConsistency consistency);
@@ -415,7 +415,7 @@ TEST_F(GetOperationTest, not_found) {
"timestamp 0) ReturnCode(NONE)",
_sender.getLastReply());
- EXPECT_EQ(1, getDistributor().getMetrics().gets.failures.notfound.getValue());
+ EXPECT_EQ(1, metrics().gets.failures.notfound.getValue());
EXPECT_FALSE(op->any_replicas_failed()); // "Not found" is not a failure.
EXPECT_TRUE(last_reply_had_consistent_replicas());
EXPECT_TRUE(op->newest_replica().has_value());
diff --git a/storage/src/tests/distributor/idealstatemanagertest.cpp b/storage/src/tests/distributor/idealstatemanagertest.cpp
index e38e4b5b668..d521975e0cb 100644
--- a/storage/src/tests/distributor/idealstatemanagertest.cpp
+++ b/storage/src/tests/distributor/idealstatemanagertest.cpp
@@ -1,20 +1,19 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <tests/common/dummystoragelink.h>
-#include <vespa/storageapi/message/persistence.h>
-#include <vespa/storage/distributor/bucketdbupdater.h>
-#include <vespa/storage/distributor/distributor.h>
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include "dummy_cluster_context.h"
+#include <tests/distributor/distributor_stripe_test_util.h>
+#include <vespa/document/bucket/fixed_bucket_spaces.h>
+#include <vespa/document/test/make_bucket_space.h>
+#include <vespa/document/test/make_document_bucket.h>
+#include <vespa/storage/distributor/top_level_bucket_db_updater.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
#include <vespa/storage/distributor/distributor_stripe.h>
-#include <vespa/storage/distributor/operations/idealstate/mergeoperation.h>
#include <vespa/storage/distributor/operation_sequencer.h>
+#include <vespa/storage/distributor/operations/idealstate/mergeoperation.h>
+#include <vespa/storageapi/message/bucketsplitting.h>
+#include <vespa/storageapi/message/persistence.h>
#include <vespa/storageapi/message/stat.h>
#include <vespa/storageapi/message/visitor.h>
-#include <vespa/storageapi/message/bucketsplitting.h>
-#include <tests/distributor/distributortestutil.h>
-#include <vespa/document/bucket/fixed_bucket_spaces.h>
-#include <vespa/document/test/make_document_bucket.h>
-#include <vespa/document/test/make_bucket_space.h>
#include <vespa/vespalib/gtest/gtest.h>
-#include "dummy_cluster_context.h"
using document::test::makeDocumentBucket;
using document::test::makeBucketSpace;
@@ -23,10 +22,10 @@ using namespace ::testing;
namespace storage::distributor {
-struct IdealStateManagerTest : Test, DistributorTestUtil {
+struct IdealStateManagerTest : Test, DistributorStripeTestUtil {
IdealStateManagerTest()
: Test(),
- DistributorTestUtil(),
+ DistributorStripeTestUtil(),
_bucketSpaces()
{}
void SetUp() override {
@@ -80,7 +79,7 @@ TEST_F(IdealStateManagerTest, status_page) {
getDirConfig().getConfig("stor-distributormanager").set("joinsize", "0");
getDirConfig().getConfig("stor-distributormanager").set("joincount", "0");
createLinks();
- setupDistributor(1, 1, "distributor:1 storage:1");
+ setup_stripe(1, 1, "distributor:1 storage:1");
insertBucketInfo(document::BucketId(16, 5), 0, 0xff, 100, 200, true, true);
insertBucketInfo(document::BucketId(16, 2), 0, 0xff, 10, 10, true, true);
@@ -96,11 +95,13 @@ TEST_F(IdealStateManagerTest, status_page) {
}
TEST_F(IdealStateManagerTest, disabled_state_checker) {
- setupDistributor(1, 1, "distributor:1 storage:1");
+ setup_stripe(1, 1, "distributor:1 storage:1");
- getConfig().setSplitSize(100);
- getConfig().setSplitCount(1000000);
- getConfig().disableStateChecker("SplitBucket");
+ auto cfg = make_config();
+ cfg->setSplitSize(100);
+ cfg->setSplitCount(1000000);
+ cfg->disableStateChecker("SplitBucket");
+ configure_stripe(cfg);
insertBucketInfo(document::BucketId(16, 5), 0, 0xff, 100, 200, true, true);
insertBucketInfo(document::BucketId(16, 2), 0, 0xff, 10, 10, true, true);
@@ -184,10 +185,10 @@ TEST_F(IdealStateManagerTest, recheck_when_active) {
*/
TEST_F(IdealStateManagerTest, block_ideal_state_ops_when_pending_cluster_state_is_present) {
- setupDistributor(2, 10, "version:1 distributor:1 storage:1 .0.s:d");
+ setup_stripe(2, 10, "version:1 distributor:1 storage:1 .0.s:d");
// Trigger a pending cluster state with bucket info requests towards 1 node
- receive_set_system_state_command("version:2 distributor:1 storage:1");
+ simulate_set_pending_cluster_state("version:2 distributor:1 storage:1");
OperationSequencer op_seq;
document::BucketId bid(16, 1234);
@@ -198,12 +199,7 @@ TEST_F(IdealStateManagerTest, block_ideal_state_ops_when_pending_cluster_state_i
EXPECT_TRUE(op.isBlocked(operation_context(), op_seq));
}
- // Clear pending by replying with zero buckets for all bucket spaces
- ASSERT_EQ(_bucketSpaces.size(), _sender.commands().size());
- for (uint32_t i = 0; i < _sender.commands().size(); ++i) {
- auto& bucket_req = dynamic_cast<api::RequestBucketInfoCommand&>(*_sender.command(i));
- handle_top_level_message(bucket_req.makeReply());
- }
+ clear_pending_cluster_state_bundle();
{
RemoveBucketOperation op(dummy_cluster_context,
@@ -213,7 +209,7 @@ TEST_F(IdealStateManagerTest, block_ideal_state_ops_when_pending_cluster_state_i
}
TEST_F(IdealStateManagerTest, block_check_for_all_operations_to_specific_bucket) {
- setupDistributor(2, 10, "distributor:1 storage:2");
+ setup_stripe(2, 10, "distributor:1 storage:2");
framework::defaultimplementation::FakeClock clock;
OperationSequencer op_seq;
document::BucketId bid(16, 1234);
@@ -234,7 +230,7 @@ TEST_F(IdealStateManagerTest, block_check_for_all_operations_to_specific_bucket)
}
TEST_F(IdealStateManagerTest, block_operations_with_locked_buckets) {
- setupDistributor(2, 10, "distributor:1 storage:2");
+ setup_stripe(2, 10, "distributor:1 storage:2");
framework::defaultimplementation::FakeClock clock;
OperationSequencer op_seq;
const auto bucket = makeDocumentBucket(document::BucketId(16, 1234));
diff --git a/storage/src/tests/distributor/joinbuckettest.cpp b/storage/src/tests/distributor/joinbuckettest.cpp
index 9382648e881..bc87893b610 100644
--- a/storage/src/tests/distributor/joinbuckettest.cpp
+++ b/storage/src/tests/distributor/joinbuckettest.cpp
@@ -1,19 +1,19 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/storageapi/message/bucketsplitting.h>
-#include <vespa/storage/distributor/operations/idealstate/joinoperation.h>
-#include <vespa/storage/distributor/distributor.h>
-#include <tests/distributor/distributortestutil.h>
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include "dummy_cluster_context.h"
+#include <tests/distributor/distributor_stripe_test_util.h>
#include <vespa/document/test/make_document_bucket.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
+#include <vespa/storage/distributor/operations/idealstate/joinoperation.h>
+#include <vespa/storageapi/message/bucketsplitting.h>
#include <vespa/vespalib/gtest/gtest.h>
#include <gmock/gmock.h>
-#include "dummy_cluster_context.h"
using document::test::makeDocumentBucket;
using namespace ::testing;
namespace storage::distributor {
-struct JoinOperationTest : Test, DistributorTestUtil {
+struct JoinOperationTest : Test, DistributorStripeTestUtil {
void checkSourceBucketsAndSendReply(
JoinOperation& op,
size_t msgIndex,
@@ -29,13 +29,15 @@ struct JoinOperationTest : Test, DistributorTestUtil {
};
TEST_F(JoinOperationTest, simple) {
- getConfig().setJoinCount(100);
- getConfig().setJoinSize(1000);
+ auto cfg = make_config();
+ cfg->setJoinCount(100);
+ cfg->setJoinSize(1000);
+ configure_stripe(cfg);
addNodesToBucketDB(document::BucketId(33, 1), "0=250/50/300");
addNodesToBucketDB(document::BucketId(33, 0x100000001), "0=300/40/200");
- enableDistributorClusterState("distributor:1 storage:1");
+ enable_cluster_state("distributor:1 storage:1");
JoinOperation op(dummy_cluster_context,
BucketAndNodes(makeDocumentBucket(document::BucketId(32, 0)),
@@ -84,13 +86,15 @@ JoinOperationTest::checkSourceBucketsAndSendReply(
* the buckets.
*/
TEST_F(JoinOperationTest, send_sparse_joins_to_nodes_without_both_source_buckets) {
- getConfig().setJoinCount(100);
- getConfig().setJoinSize(1000);
+ auto cfg = make_config();
+ cfg->setJoinCount(100);
+ cfg->setJoinSize(1000);
+ configure_stripe(cfg);
addNodesToBucketDB(document::BucketId(33, 1), "0=250/50/300,1=250/50/300");
addNodesToBucketDB(document::BucketId(33, 0x100000001), "0=300/40/200");
- enableDistributorClusterState("distributor:1 storage:2");
+ enable_cluster_state("distributor:1 storage:2");
JoinOperation op(dummy_cluster_context,
BucketAndNodes(makeDocumentBucket(document::BucketId(32, 0)),
diff --git a/storage/src/tests/distributor/legacy_bucket_db_updater_test.cpp b/storage/src/tests/distributor/legacy_bucket_db_updater_test.cpp
deleted file mode 100644
index e353e976081..00000000000
--- a/storage/src/tests/distributor/legacy_bucket_db_updater_test.cpp
+++ /dev/null
@@ -1,2818 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include <vespa/storageapi/message/persistence.h>
-#include <vespa/storage/distributor/bucketdbupdater.h>
-#include <vespa/storage/distributor/bucket_space_distribution_context.h>
-#include <vespa/storage/distributor/distributormetricsset.h>
-#include <vespa/storage/distributor/pending_bucket_space_db_transition.h>
-#include <vespa/storage/distributor/outdated_nodes_map.h>
-#include <vespa/storage/storageutil/distributorstatecache.h>
-#include <tests/distributor/distributortestutil.h>
-#include <vespa/document/test/make_document_bucket.h>
-#include <vespa/document/test/make_bucket_space.h>
-#include <vespa/document/bucket/fixed_bucket_spaces.h>
-#include <vespa/storage/distributor/simpleclusterinformation.h>
-#include <vespa/storage/distributor/distributor.h>
-#include <vespa/storage/distributor/distributor_stripe.h>
-#include <vespa/storage/distributor/distributor_bucket_space.h>
-#include <vespa/vespalib/gtest/gtest.h>
-#include <vespa/vespalib/text/stringtokenizer.h>
-#include <vespa/vespalib/util/benchmark_timer.h>
-#include <sstream>
-#include <iomanip>
-
-using namespace storage::api;
-using namespace storage::lib;
-using document::test::makeDocumentBucket;
-using document::test::makeBucketSpace;
-using document::BucketSpace;
-using document::FixedBucketSpaces;
-using document::BucketId;
-using document::Bucket;
-
-using namespace ::testing;
-
-namespace storage::distributor {
-
-namespace {
-
-std::string
-getStringList(std::string s, uint32_t count)
-{
- std::ostringstream ost;
- for (uint32_t i = 0; i < count; ++i) {
- if (i > 0) {
- ost << ",";
- }
- ost << s;
- }
- return ost.str();
-}
-
-std::string
-getRequestBucketInfoStrings(uint32_t count)
-{
- return getStringList("Request bucket info", count);
-}
-
-}
-
-// TODO STRIPE: Add variant of this test for the new stripe mode.
-// TODO STRIPE: Remove this test when legacy mode is gone.
-class LegacyBucketDBUpdaterTest : public Test,
- public DistributorTestUtil
-{
-public:
- LegacyBucketDBUpdaterTest();
- ~LegacyBucketDBUpdaterTest() override;
-
- auto &defaultDistributorBucketSpace() { return getBucketSpaceRepo().get(makeBucketSpace()); }
-
- bool bucketExistsThatHasNode(int bucketCount, uint16_t node) const;
-
- ClusterInformation::CSP createClusterInfo(const std::string& clusterStateString) {
- lib::ClusterState baselineClusterState(clusterStateString);
- lib::ClusterStateBundle clusterStateBundle(baselineClusterState);
- ClusterInformation::CSP clusterInfo(
- new SimpleClusterInformation(
- getBucketDBUpdater().node_context().node_index(),
- clusterStateBundle,
- "ui"));
- for (auto* repo : {&mutable_repo(), &read_only_repo()}) {
- for (auto& space : *repo) {
- space.second->setClusterState(clusterStateBundle.getDerivedClusterState(space.first));
- }
- }
- return clusterInfo;
- }
-
- DistributorBucketSpaceRepo& mutable_repo() noexcept { return getBucketSpaceRepo(); }
- // Note: not calling this "immutable_repo" since it may actually be modified by the pending
- // cluster state component (just not by operations), so it would not have the expected semantics.
- DistributorBucketSpaceRepo& read_only_repo() noexcept { return getReadOnlyBucketSpaceRepo(); }
-
- BucketDatabase& mutable_default_db() noexcept {
- return mutable_repo().get(FixedBucketSpaces::default_space()).getBucketDatabase();
- }
- BucketDatabase& mutable_global_db() noexcept {
- return mutable_repo().get(FixedBucketSpaces::global_space()).getBucketDatabase();
- }
- BucketDatabase& read_only_default_db() noexcept {
- return read_only_repo().get(FixedBucketSpaces::default_space()).getBucketDatabase();
- }
- BucketDatabase& read_only_global_db() noexcept {
- return read_only_repo().get(FixedBucketSpaces::global_space()).getBucketDatabase();
- }
-
- static std::string getNodeList(std::vector<uint16_t> nodes, size_t count);
-
- std::string getNodeList(std::vector<uint16_t> nodes);
-
- std::vector<uint16_t>
- expandNodeVec(const std::vector<uint16_t> &nodes);
-
- std::vector<document::BucketSpace> _bucketSpaces;
-
- size_t messageCount(size_t messagesPerBucketSpace) const {
- return messagesPerBucketSpace * _bucketSpaces.size();
- }
-
- void trigger_completed_but_not_yet_activated_transition(
- vespalib::stringref initial_state, uint32_t initial_buckets, uint32_t initial_expected_msgs,
- vespalib::stringref pending_state, uint32_t pending_buckets, uint32_t pending_expected_msgs);
-
-public:
- using OutdatedNodesMap = dbtransition::OutdatedNodesMap;
- void SetUp() override {
- createLinks();
- _bucketSpaces = getBucketSpaces();
- // Disable deferred activation by default (at least for now) to avoid breaking the entire world.
- getBucketDBUpdater().set_stale_reads_enabled(false);
- };
-
- void TearDown() override {
- close();
- }
-
- std::shared_ptr<RequestBucketInfoReply> getFakeBucketReply(
- const lib::ClusterState& state,
- const RequestBucketInfoCommand& cmd,
- int storageIndex,
- uint32_t bucketCount,
- uint32_t invalidBucketCount = 0)
- {
- auto sreply = std::make_shared<RequestBucketInfoReply>(cmd);
- sreply->setAddress(storageAddress(storageIndex));
-
- api::RequestBucketInfoReply::EntryVector &vec = sreply->getBucketInfo();
-
- for (uint32_t i=0; i<bucketCount + invalidBucketCount; i++) {
- if (!getDistributorBucketSpace().owns_bucket_in_state(state, document::BucketId(16, i))) {
- continue;
- }
-
- std::vector<uint16_t> nodes;
- defaultDistributorBucketSpace().getDistribution().getIdealNodes(
- lib::NodeType::STORAGE,
- state,
- document::BucketId(16, i),
- nodes);
-
- for (uint32_t j=0; j<nodes.size(); j++) {
- if (nodes[j] == storageIndex) {
- if (i >= bucketCount) {
- vec.push_back(api::RequestBucketInfoReply::Entry(
- document::BucketId(16, i),
- api::BucketInfo()));
- } else {
- vec.push_back(api::RequestBucketInfoReply::Entry(
- document::BucketId(16, i),
- api::BucketInfo(10,1,1)));
- }
- }
- }
- }
-
- return sreply;
- }
-
- void fakeBucketReply(const lib::ClusterState &state,
- const api::StorageCommand &cmd,
- uint32_t bucketCount,
- uint32_t invalidBucketCount = 0)
- {
- ASSERT_EQ(cmd.getType(), MessageType::REQUESTBUCKETINFO);
- const api::StorageMessageAddress &address(*cmd.getAddress());
- getBucketDBUpdater().onRequestBucketInfoReply(
- getFakeBucketReply(state,
- dynamic_cast<const RequestBucketInfoCommand &>(cmd),
- address.getIndex(),
- bucketCount,
- invalidBucketCount));
- }
-
- void sendFakeReplyForSingleBucketRequest(
- const api::RequestBucketInfoCommand& rbi)
- {
- ASSERT_EQ(size_t(1), rbi.getBuckets().size());
- const document::BucketId& bucket(rbi.getBuckets()[0]);
-
- std::shared_ptr<api::RequestBucketInfoReply> reply(
- new api::RequestBucketInfoReply(rbi));
- reply->getBucketInfo().push_back(
- api::RequestBucketInfoReply::Entry(bucket,
- api::BucketInfo(20, 10, 12, 50, 60, true, true)));
- getBucketDBUpdater().onRequestBucketInfoReply(reply);
- }
-
- std::string verifyBucket(document::BucketId id, const lib::ClusterState& state) {
- BucketDatabase::Entry entry = getBucketDatabase().get(id);
- if (!entry.valid()) {
- return vespalib::make_string("%s doesn't exist in DB",
- id.toString().c_str());
- }
-
- std::vector<uint16_t> nodes;
- defaultDistributorBucketSpace().getDistribution().getIdealNodes(
- lib::NodeType::STORAGE,
- state,
- document::BucketId(id),
- nodes);
-
- if (nodes.size() != entry->getNodeCount()) {
- return vespalib::make_string("Bucket Id %s has %d nodes in "
- "ideal state, but has only %d in DB",
- id.toString().c_str(),
- (int)nodes.size(),
- (int)entry->getNodeCount());
- }
-
- for (uint32_t i = 0; i<nodes.size(); i++) {
- bool found = false;
-
- for (uint32_t j = 0; j<entry->getNodeCount(); j++) {
- if (nodes[i] == entry->getNodeRef(j).getNode()) {
- found = true;
- }
- }
-
- if (!found) {
- return vespalib::make_string(
- "Bucket Id %s has no copy from node %d",
- id.toString().c_str(),
- nodes[i]);
- }
- }
-
- return "";
- }
-
-
- void verifyInvalid(document::BucketId id, int storageNode) {
- BucketDatabase::Entry entry = getBucketDatabase().get(id);
-
- ASSERT_TRUE(entry.valid());
-
- bool found = false;
- for (uint32_t j = 0; j<entry->getNodeCount(); j++) {
- if (entry->getNodeRef(j).getNode() == storageNode) {
- ASSERT_FALSE(entry->getNodeRef(j).valid());
- found = true;
- }
- }
-
- ASSERT_TRUE(found);
- }
-
- struct OrderByIncreasingNodeIndex {
- template <typename T>
- bool operator()(const T& lhs, const T& rhs) {
- return (lhs->getAddress()->getIndex()
- < rhs->getAddress()->getIndex());
- }
- };
-
- void sortSentMessagesByIndex(DistributorMessageSenderStub& sender,
- size_t sortFromOffset = 0)
- {
- std::sort(sender.commands().begin() + sortFromOffset,
- sender.commands().end(),
- OrderByIncreasingNodeIndex());
- }
-
- void setSystemState(const lib::ClusterState& state) {
- const size_t sizeBeforeState = _sender.commands().size();
- getBucketDBUpdater().onSetSystemState(
- std::make_shared<api::SetSystemStateCommand>(state));
- // A lot of test logic has the assumption that all messages sent as a
- // result of cluster state changes will be in increasing index order
- // (for simplicity, not because this is required for correctness).
- // Only sort the messages that arrived as a result of the state, don't
- // jumble the sorting with any existing messages.
- sortSentMessagesByIndex(_sender, sizeBeforeState);
- }
-
- void set_cluster_state_bundle(const lib::ClusterStateBundle& state) {
- const size_t sizeBeforeState = _sender.commands().size();
- getBucketDBUpdater().onSetSystemState(
- std::make_shared<api::SetSystemStateCommand>(state));
- sortSentMessagesByIndex(_sender, sizeBeforeState);
- }
-
- bool activate_cluster_state_version(uint32_t version) {
- return getBucketDBUpdater().onActivateClusterStateVersion(
- std::make_shared<api::ActivateClusterStateVersionCommand>(version));
- }
-
- void assert_has_activate_cluster_state_reply_with_actual_version(uint32_t version) {
- ASSERT_EQ(size_t(1), _sender.replies().size());
- auto* response = dynamic_cast<api::ActivateClusterStateVersionReply*>(_sender.replies().back().get());
- ASSERT_TRUE(response != nullptr);
- ASSERT_EQ(version, response->actualVersion());
- _sender.clear();
- }
-
- void completeBucketInfoGathering(const lib::ClusterState& state,
- size_t expectedMsgs,
- uint32_t bucketCount = 1,
- uint32_t invalidBucketCount = 0)
- {
- ASSERT_EQ(expectedMsgs, _sender.commands().size());
-
- for (uint32_t i = 0; i < _sender.commands().size(); i++) {
- ASSERT_NO_FATAL_FAILURE(fakeBucketReply(state, *_sender.command(i),
- bucketCount, invalidBucketCount));
- }
- }
-
- void setAndEnableClusterState(const lib::ClusterState& state,
- uint32_t expectedMsgs,
- uint32_t nBuckets)
- {
- _sender.clear();
- setSystemState(state);
- ASSERT_NO_FATAL_FAILURE(completeBucketInfoGathering(state, expectedMsgs, nBuckets));
- }
-
- void completeStateTransitionInSeconds(const std::string& stateStr,
- uint32_t seconds,
- uint32_t expectedMsgs)
- {
- _sender.clear();
- lib::ClusterState state(stateStr);
- setSystemState(state);
- getClock().addSecondsToTime(seconds);
- ASSERT_NO_FATAL_FAILURE(completeBucketInfoGathering(state, expectedMsgs));
- }
-
- uint64_t lastTransitionTimeInMillis() {
- return uint64_t(getDistributor().getMetrics().stateTransitionTime.getLast());
- }
-
- void setStorageNodes(uint32_t numStorageNodes) {
- _sender.clear();
-
- lib::ClusterState newState(
- vespalib::make_string("distributor:1 storage:%d", numStorageNodes));
-
- setSystemState(newState);
-
- for (uint32_t i=0; i< messageCount(numStorageNodes); i++) {
- ASSERT_EQ(_sender.command(i)->getType(), MessageType::REQUESTBUCKETINFO);
-
- const api::StorageMessageAddress *address = _sender.command(i)->getAddress();
- ASSERT_EQ((uint32_t)(i / _bucketSpaces.size()), (uint32_t)address->getIndex());
- }
- }
-
- void initializeNodesAndBuckets(uint32_t numStorageNodes,
- uint32_t numBuckets)
- {
- ASSERT_NO_FATAL_FAILURE(setStorageNodes(numStorageNodes));
-
- vespalib::string state(vespalib::make_string(
- "distributor:1 storage:%d", numStorageNodes));
- lib::ClusterState newState(state);
-
- for (uint32_t i=0; i< messageCount(numStorageNodes); i++) {
- ASSERT_NO_FATAL_FAILURE(fakeBucketReply(newState, *_sender.command(i), numBuckets));
- }
- ASSERT_NO_FATAL_FAILURE(assertCorrectBuckets(numBuckets, state));
- }
-
- bool bucketHasNode(document::BucketId id, uint16_t node) const {
- BucketDatabase::Entry entry = getBucket(id);
- assert(entry.valid());
-
- for (uint32_t j=0; j<entry->getNodeCount(); j++) {
- if (entry->getNodeRef(j).getNode() == node) {
- return true;
- }
- }
-
- return false;
- }
-
- api::StorageMessageAddress storageAddress(uint16_t node) {
- static vespalib::string _storage("storage");
- return api::StorageMessageAddress(&_storage, lib::NodeType::STORAGE, node);
- }
-
- std::string getSentNodes(const std::string& oldClusterState,
- const std::string& newClusterState);
-
- std::string getSentNodesDistributionChanged(
- const std::string& oldClusterState);
-
- std::vector<uint16_t> getSentNodesWithPreemption(
- const std::string& oldClusterState,
- uint32_t expectedOldStateMessages,
- const std::string& preemptedClusterState,
- const std::string& newClusterState);
-
- std::vector<uint16_t> getSendSet() const;
-
- std::string mergeBucketLists(
- const lib::ClusterState& oldState,
- const std::string& existingData,
- const lib::ClusterState& newState,
- const std::string& newData,
- bool includeBucketInfo = false);
-
- std::string mergeBucketLists(
- const std::string& existingData,
- const std::string& newData,
- bool includeBucketInfo = false);
-
- void assertCorrectBuckets(int numBuckets, const std::string& stateStr) {
- lib::ClusterState state(stateStr);
- for (int i=0; i<numBuckets; i++) {
- ASSERT_EQ(getIdealStr(document::BucketId(16, i), state),
- getNodes(document::BucketId(16, i)));
- }
- }
-
- void setDistribution(const std::string& distConfig) {
- triggerDistributionChange(
- std::make_shared<lib::Distribution>(distConfig));
- }
-
- std::string getDistConfig6Nodes2Groups() const {
- return ("redundancy 2\n"
- "group[3]\n"
- "group[0].name \"invalid\"\n"
- "group[0].index \"invalid\"\n"
- "group[0].partitions 1|*\n"
- "group[0].nodes[0]\n"
- "group[1].name rack0\n"
- "group[1].index 0\n"
- "group[1].nodes[3]\n"
- "group[1].nodes[0].index 0\n"
- "group[1].nodes[1].index 1\n"
- "group[1].nodes[2].index 2\n"
- "group[2].name rack1\n"
- "group[2].index 1\n"
- "group[2].nodes[3]\n"
- "group[2].nodes[0].index 3\n"
- "group[2].nodes[1].index 4\n"
- "group[2].nodes[2].index 5\n");
- }
-
- std::string getDistConfig6Nodes4Groups() const {
- return ("redundancy 2\n"
- "group[4]\n"
- "group[0].name \"invalid\"\n"
- "group[0].index \"invalid\"\n"
- "group[0].partitions 1|*\n"
- "group[0].nodes[0]\n"
- "group[1].name rack0\n"
- "group[1].index 0\n"
- "group[1].nodes[2]\n"
- "group[1].nodes[0].index 0\n"
- "group[1].nodes[1].index 1\n"
- "group[2].name rack1\n"
- "group[2].index 1\n"
- "group[2].nodes[2]\n"
- "group[2].nodes[0].index 2\n"
- "group[2].nodes[1].index 3\n"
- "group[3].name rack2\n"
- "group[3].index 2\n"
- "group[3].nodes[2]\n"
- "group[3].nodes[0].index 4\n"
- "group[3].nodes[1].index 5\n");
- }
-
- std::string getDistConfig3Nodes1Group() const {
- return ("redundancy 2\n"
- "group[2]\n"
- "group[0].name \"invalid\"\n"
- "group[0].index \"invalid\"\n"
- "group[0].partitions 1|*\n"
- "group[0].nodes[0]\n"
- "group[1].name rack0\n"
- "group[1].index 0\n"
- "group[1].nodes[3]\n"
- "group[1].nodes[0].index 0\n"
- "group[1].nodes[1].index 1\n"
- "group[1].nodes[2].index 2\n");
- }
-
- struct PendingClusterStateFixture {
- DistributorMessageSenderStub sender;
- framework::defaultimplementation::FakeClock clock;
- std::unique_ptr<PendingClusterState> state;
-
- PendingClusterStateFixture(
- LegacyBucketDBUpdaterTest& owner,
- const std::string& oldClusterState,
- const std::string& newClusterState)
- {
- std::shared_ptr<api::SetSystemStateCommand> cmd(
- new api::SetSystemStateCommand(
- lib::ClusterState(newClusterState)));
-
- ClusterInformation::CSP clusterInfo(
- owner.createClusterInfo(oldClusterState));
-
- OutdatedNodesMap outdatedNodesMap;
- state = PendingClusterState::createForClusterStateChange(
- clock, clusterInfo, sender,
- owner.getBucketSpaceRepo(),
- cmd, outdatedNodesMap, api::Timestamp(1));
- }
-
- PendingClusterStateFixture(
- LegacyBucketDBUpdaterTest& owner,
- const std::string& oldClusterState)
- {
- ClusterInformation::CSP clusterInfo(
- owner.createClusterInfo(oldClusterState));
-
- state = PendingClusterState::createForDistributionChange(
- clock, clusterInfo, sender, owner.getBucketSpaceRepo(), api::Timestamp(1));
- }
- };
-
- std::unique_ptr<PendingClusterStateFixture> createPendingStateFixtureForStateChange(
- const std::string& oldClusterState,
- const std::string& newClusterState)
- {
- return std::make_unique<PendingClusterStateFixture>(*this, oldClusterState, newClusterState);
- }
-
- std::unique_ptr<PendingClusterStateFixture> createPendingStateFixtureForDistributionChange(
- const std::string& oldClusterState)
- {
- return std::make_unique<PendingClusterStateFixture>(*this, oldClusterState);
- }
-
- uint32_t populate_bucket_db_via_request_bucket_info_for_benchmarking();
-
- void complete_recovery_mode() {
- _distributor->scanAllBuckets();
- }
-};
-
-LegacyBucketDBUpdaterTest::LegacyBucketDBUpdaterTest()
- : DistributorTestUtil(),
- _bucketSpaces()
-{
-}
-
-LegacyBucketDBUpdaterTest::~LegacyBucketDBUpdaterTest() = default;
-
-TEST_F(LegacyBucketDBUpdaterTest, normal_usage) {
- setSystemState(lib::ClusterState("distributor:2 .0.s:i .1.s:i storage:3"));
-
- ASSERT_EQ(messageCount(3), _sender.commands().size());
-
- // Ensure distribution hash is set correctly
- ASSERT_EQ(
- defaultDistributorBucketSpace().getDistribution()
- .getNodeGraph().getDistributionConfigHash(),
- dynamic_cast<const RequestBucketInfoCommand&>(
- *_sender.command(0)).getDistributionHash());
-
- ASSERT_NO_FATAL_FAILURE(fakeBucketReply(lib::ClusterState("distributor:2 .0.s:i .1.s:i storage:3"),
- *_sender.command(0), 10));
-
- _sender.clear();
-
- // Optimization for not refetching unneeded data after cluster state
- // change is only implemented after completion of previous cluster state
- setSystemState(lib::ClusterState("distributor:2 .0.s:i storage:3"));
-
- ASSERT_EQ(messageCount(3), _sender.commands().size());
- // Expect reply of first set SystemState request.
- ASSERT_EQ(size_t(1), _sender.replies().size());
-
- ASSERT_NO_FATAL_FAILURE(completeBucketInfoGathering(
- lib::ClusterState("distributor:2 .0.s:i .1.s:i storage:3"),
- messageCount(3), 10));
- ASSERT_NO_FATAL_FAILURE(assertCorrectBuckets(10, "distributor:2 storage:3"));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, distributor_change) {
- int numBuckets = 100;
-
- // First sends request
- setSystemState(lib::ClusterState("distributor:2 .0.s:i .1.s:i storage:3"));
- ASSERT_EQ(messageCount(3), _sender.commands().size());
- ASSERT_NO_FATAL_FAILURE(completeBucketInfoGathering(lib::ClusterState("distributor:2 .0.s:i .1.s:i storage:3"),
- messageCount(3), numBuckets));
- _sender.clear();
-
- // No change from initializing to up (when done with last job)
- setSystemState(lib::ClusterState("distributor:2 storage:3"));
- ASSERT_EQ(size_t(0), _sender.commands().size());
- _sender.clear();
-
- // Adding node. No new read requests, but buckets thrown
- setSystemState(lib::ClusterState("distributor:3 storage:3"));
- ASSERT_EQ(size_t(0), _sender.commands().size());
- ASSERT_NO_FATAL_FAILURE(assertCorrectBuckets(numBuckets, "distributor:3 storage:3"));
- _sender.clear();
-
- // Removing distributor. Need to refetch new data from all nodes.
- setSystemState(lib::ClusterState("distributor:2 storage:3"));
- ASSERT_EQ(messageCount(3), _sender.commands().size());
- ASSERT_NO_FATAL_FAILURE(completeBucketInfoGathering(lib::ClusterState("distributor:2 storage:3"),
- messageCount(3), numBuckets));
- _sender.clear();
- ASSERT_NO_FATAL_FAILURE(assertCorrectBuckets(numBuckets, "distributor:2 storage:3"));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, distributor_change_with_grouping) {
- std::string distConfig(getDistConfig6Nodes2Groups());
- setDistribution(distConfig);
- int numBuckets = 100;
-
- setSystemState(lib::ClusterState("distributor:6 storage:6"));
- ASSERT_EQ(messageCount(6), _sender.commands().size());
- ASSERT_NO_FATAL_FAILURE(completeBucketInfoGathering(lib::ClusterState("distributor:6 storage:6"),
- messageCount(6), numBuckets));
- _sender.clear();
-
- // Distributor going down in other group, no change
- setSystemState(lib::ClusterState("distributor:6 .5.s:d storage:6"));
- ASSERT_EQ(size_t(0), _sender.commands().size());
- _sender.clear();
-
- setSystemState(lib::ClusterState("distributor:6 storage:6"));
- ASSERT_EQ(size_t(0), _sender.commands().size());
- ASSERT_NO_FATAL_FAILURE(assertCorrectBuckets(numBuckets, "distributor:6 storage:6"));
- _sender.clear();
-
- // Unchanged grouping cause no change.
- setDistribution(distConfig);
- ASSERT_EQ(size_t(0), _sender.commands().size());
-
- // Changed grouping cause change
- setDistribution(getDistConfig6Nodes4Groups());
-
- ASSERT_EQ(messageCount(6), _sender.commands().size());
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, normal_usage_initializing) {
- setSystemState(lib::ClusterState("distributor:1 .0.s:i storage:1 .0.s:i"));
-
- ASSERT_EQ(_bucketSpaces.size(), _sender.commands().size());
-
- // Not yet passing on system state.
- ASSERT_EQ(size_t(0), _senderDown.commands().size());
-
- ASSERT_NO_FATAL_FAILURE(completeBucketInfoGathering(lib::ClusterState("distributor:1 .0.s:i storage:1"),
- _bucketSpaces.size(), 10, 10));
-
- ASSERT_NO_FATAL_FAILURE(assertCorrectBuckets(10, "distributor:1 storage:1"));
-
- for (int i=10; i<20; i++) {
- ASSERT_NO_FATAL_FAILURE(verifyInvalid(document::BucketId(16, i), 0));
- }
-
- // Pass on cluster state and recheck buckets now.
- ASSERT_EQ(size_t(1), _senderDown.commands().size());
-
- _sender.clear();
- _senderDown.clear();
-
- setSystemState(lib::ClusterState("distributor:1 .0.s:i storage:1"));
-
- // Send a new request bucket info up.
- ASSERT_EQ(_bucketSpaces.size(), _sender.commands().size());
-
- ASSERT_NO_FATAL_FAILURE(completeBucketInfoGathering(lib::ClusterState("distributor:1 .0.s:i storage:1"),
- _bucketSpaces.size(), 20));
-
- // Pass on cluster state and recheck buckets now.
- ASSERT_EQ(size_t(1), _senderDown.commands().size());
-
- ASSERT_NO_FATAL_FAILURE(assertCorrectBuckets(20, "distributor:1 storage:1"));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, failed_request_bucket_info) {
- setSystemState(lib::ClusterState("distributor:1 .0.s:i storage:1"));
-
- // 2 messages sent up: 1 to the nodes, and one reply to the setsystemstate.
- ASSERT_EQ(_bucketSpaces.size(), _sender.commands().size());
-
- {
- for (uint32_t i = 0; i < _bucketSpaces.size(); ++i) {
- std::shared_ptr<api::RequestBucketInfoReply> reply =
- getFakeBucketReply(lib::ClusterState("distributor:1 .0.s:i storage:1"),
- *((RequestBucketInfoCommand*)_sender.command(i).get()),
- 0,
- 10);
- reply->setResult(api::ReturnCode::NOT_CONNECTED);
- getBucketDBUpdater().onRequestBucketInfoReply(reply);
- }
-
- // Trigger that delayed message is sent
- getClock().addSecondsToTime(10);
- getBucketDBUpdater().resendDelayedMessages();
- }
-
- // Should be resent.
- ASSERT_EQ(getRequestBucketInfoStrings(messageCount(2)), _sender.getCommands());
-
- ASSERT_EQ(size_t(0), _senderDown.commands().size());
-
- for (uint32_t i = 0; i < _bucketSpaces.size(); ++i) {
- ASSERT_NO_FATAL_FAILURE(fakeBucketReply(lib::ClusterState("distributor:1 .0.s:i storage:1"),
- *_sender.command(_bucketSpaces.size() + i), 10));
- }
-
- for (int i=0; i<10; i++) {
- EXPECT_EQ(std::string(""),
- verifyBucket(document::BucketId(16, i),
- lib::ClusterState("distributor:1 storage:1")));
- }
-
- // Set system state should now be passed on
- EXPECT_EQ(std::string("Set system state"), _senderDown.getCommands());
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, down_while_init) {
- ASSERT_NO_FATAL_FAILURE(setStorageNodes(3));
-
- ASSERT_NO_FATAL_FAILURE(fakeBucketReply(lib::ClusterState("distributor:1 storage:3"),
- *_sender.command(0), 5));
-
- setSystemState(lib::ClusterState("distributor:1 storage:3 .1.s:d"));
-
- ASSERT_NO_FATAL_FAILURE(fakeBucketReply(lib::ClusterState("distributor:1 storage:3"),
- *_sender.command(2), 5));
-
- ASSERT_NO_FATAL_FAILURE(fakeBucketReply(lib::ClusterState("distributor:1 storage:3"),
- *_sender.command(1), 5));
-}
-
-bool
-LegacyBucketDBUpdaterTest::bucketExistsThatHasNode(int bucketCount, uint16_t node) const
-{
- for (int i=1; i<bucketCount; i++) {
- if (bucketHasNode(document::BucketId(16, i), node)) {
- return true;
- }
- }
-
- return false;
-}
-
-std::string
-LegacyBucketDBUpdaterTest::getNodeList(std::vector<uint16_t> nodes, size_t count)
-{
- std::ostringstream ost;
- bool first = true;
- for (const auto &node : nodes) {
- for (uint32_t i = 0; i < count; ++i) {
- if (!first) {
- ost << ",";
- }
- ost << node;
- first = false;
- }
- }
- return ost.str();
-}
-
-std::string
-LegacyBucketDBUpdaterTest::getNodeList(std::vector<uint16_t> nodes)
-{
- return getNodeList(std::move(nodes), _bucketSpaces.size());
-}
-
-std::vector<uint16_t>
-LegacyBucketDBUpdaterTest::expandNodeVec(const std::vector<uint16_t> &nodes)
-{
- std::vector<uint16_t> res;
- size_t count = _bucketSpaces.size();
- for (const auto &node : nodes) {
- for (uint32_t i = 0; i < count; ++i) {
- res.push_back(node);
- }
- }
- return res;
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, node_down) {
- ASSERT_NO_FATAL_FAILURE(setStorageNodes(3));
- enableDistributorClusterState("distributor:1 storage:3");
-
- for (int i=1; i<100; i++) {
- addIdealNodes(document::BucketId(16, i));
- }
-
- EXPECT_TRUE(bucketExistsThatHasNode(100, 1));
-
- setSystemState(lib::ClusterState("distributor:1 storage:3 .1.s:d"));
-
- EXPECT_FALSE(bucketExistsThatHasNode(100, 1));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, storage_node_in_maintenance_clears_buckets_for_node) {
- ASSERT_NO_FATAL_FAILURE(setStorageNodes(3));
- enableDistributorClusterState("distributor:1 storage:3");
-
- for (int i=1; i<100; i++) {
- addIdealNodes(document::BucketId(16, i));
- }
-
- EXPECT_TRUE(bucketExistsThatHasNode(100, 1));
-
- setSystemState(lib::ClusterState("distributor:1 storage:3 .1.s:m"));
-
- EXPECT_FALSE(bucketExistsThatHasNode(100, 1));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, node_down_copies_get_in_sync) {
- ASSERT_NO_FATAL_FAILURE(setStorageNodes(3));
-
- lib::ClusterState systemState("distributor:1 storage:3");
- document::BucketId bid(16, 1);
-
- addNodesToBucketDB(bid, "0=3,1=2,2=3");
-
- setSystemState(lib::ClusterState("distributor:1 storage:3 .1.s:d"));
-
- EXPECT_EQ(
- std::string("BucketId(0x4000000000000001) : "
- "node(idx=0,crc=0x3,docs=3/3,bytes=3/3,trusted=true,active=false,ready=false), "
- "node(idx=2,crc=0x3,docs=3/3,bytes=3/3,trusted=true,active=false,ready=false)"),
- dumpBucket(bid));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, initializing_while_recheck) {
- lib::ClusterState systemState("distributor:1 storage:2 .0.s:i .0.i:0.1");
- setSystemState(systemState);
-
- ASSERT_EQ(messageCount(2), _sender.commands().size());
- ASSERT_EQ(size_t(0), _senderDown.commands().size());
-
- getBucketDBUpdater().recheckBucketInfo(1, makeDocumentBucket(document::BucketId(16, 3)));
-
- for (uint32_t i = 0; i < messageCount(2); ++i) {
- ASSERT_NO_FATAL_FAILURE(fakeBucketReply(systemState, *_sender.command(i), 100));
- }
-
- // Now we can pass on system state.
- ASSERT_EQ(size_t(1), _senderDown.commands().size());
- EXPECT_EQ(MessageType::SETSYSTEMSTATE, _senderDown.command(0)->getType());
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, bit_change) {
- std::vector<document::BucketId> bucketlist;
-
- {
- setSystemState(lib::ClusterState("bits:14 storage:1 distributor:2"));
-
- ASSERT_EQ(_bucketSpaces.size(), _sender.commands().size());
-
- for (uint32_t bsi = 0; bsi < _bucketSpaces.size(); ++bsi) {
- ASSERT_EQ(_sender.command(bsi)->getType(), MessageType::REQUESTBUCKETINFO);
- const auto &req = dynamic_cast<const RequestBucketInfoCommand &>(*_sender.command(bsi));
- auto sreply = std::make_shared<RequestBucketInfoReply>(req);
- sreply->setAddress(storageAddress(0));
- auto& vec = sreply->getBucketInfo();
- if (req.getBucketSpace() == FixedBucketSpaces::default_space()) {
- int cnt=0;
- for (int i=0; cnt < 2; i++) {
- lib::Distribution distribution = defaultDistributorBucketSpace().getDistribution();
- std::vector<uint16_t> distributors;
- if (distribution.getIdealDistributorNode(
- lib::ClusterState("bits:14 storage:1 distributor:2"),
- document::BucketId(16, i))
- == 0)
- {
- vec.push_back(api::RequestBucketInfoReply::Entry(
- document::BucketId(16, i),
- api::BucketInfo(10,1,1)));
-
- bucketlist.push_back(document::BucketId(16, i));
- cnt++;
- }
- }
- }
-
- getBucketDBUpdater().onRequestBucketInfoReply(sreply);
- }
- }
-
- EXPECT_EQ(std::string("BucketId(0x4000000000000001) : "
- "node(idx=0,crc=0xa,docs=1/1,bytes=1/1,trusted=true,active=false,ready=false)"),
- dumpBucket(bucketlist[0]));
- EXPECT_EQ(std::string("BucketId(0x4000000000000002) : "
- "node(idx=0,crc=0xa,docs=1/1,bytes=1/1,trusted=true,active=false,ready=false)"),
- dumpBucket(bucketlist[1]));
-
- {
- _sender.clear();
- setSystemState(lib::ClusterState("bits:16 storage:1 distributor:2"));
-
- ASSERT_EQ(_bucketSpaces.size(), _sender.commands().size());
- for (uint32_t bsi = 0; bsi < _bucketSpaces.size(); ++bsi) {
-
- ASSERT_EQ(_sender.command(bsi)->getType(), MessageType::REQUESTBUCKETINFO);
- const auto &req = dynamic_cast<const RequestBucketInfoCommand &>(*_sender.command(bsi));
- auto sreply = std::make_shared<RequestBucketInfoReply>(req);
- sreply->setAddress(storageAddress(0));
- sreply->setResult(api::ReturnCode::OK);
- if (req.getBucketSpace() == FixedBucketSpaces::default_space()) {
- api::RequestBucketInfoReply::EntryVector &vec = sreply->getBucketInfo();
-
- for (uint32_t i = 0; i < 3; ++i) {
- vec.push_back(api::RequestBucketInfoReply::Entry(
- document::BucketId(16, i),
- api::BucketInfo(10,1,1)));
- }
-
- vec.push_back(api::RequestBucketInfoReply::Entry(
- document::BucketId(16, 4),
- api::BucketInfo(10,1,1)));
- }
-
- getBucketDBUpdater().onRequestBucketInfoReply(sreply);
- }
- }
-
- EXPECT_EQ(std::string("BucketId(0x4000000000000000) : "
- "node(idx=0,crc=0xa,docs=1/1,bytes=1/1,trusted=true,active=false,ready=false)"),
- dumpBucket(document::BucketId(16, 0)));
- EXPECT_EQ(std::string("BucketId(0x4000000000000001) : "
- "node(idx=0,crc=0xa,docs=1/1,bytes=1/1,trusted=true,active=false,ready=false)"),
- dumpBucket(document::BucketId(16, 1)));
- EXPECT_EQ(std::string("BucketId(0x4000000000000002) : "
- "node(idx=0,crc=0xa,docs=1/1,bytes=1/1,trusted=true,active=false,ready=false)"),
- dumpBucket(document::BucketId(16, 2)));
- EXPECT_EQ(std::string("BucketId(0x4000000000000004) : "
- "node(idx=0,crc=0xa,docs=1/1,bytes=1/1,trusted=true,active=false,ready=false)"),
- dumpBucket(document::BucketId(16, 4)));
-
- {
- _sender.clear();
- setSystemState(lib::ClusterState("storage:1 distributor:2 .1.s:i"));
- }
-
- {
- _sender.clear();
- setSystemState(lib::ClusterState("storage:1 distributor:2"));
- }
-};
-
-TEST_F(LegacyBucketDBUpdaterTest, recheck_node_with_failure) {
- ASSERT_NO_FATAL_FAILURE(initializeNodesAndBuckets(3, 5));
-
- _sender.clear();
-
- getBucketDBUpdater().recheckBucketInfo(1, makeDocumentBucket(document::BucketId(16, 3)));
-
- ASSERT_EQ(size_t(1), _sender.commands().size());
-
- uint16_t index = 0;
- {
- auto& rbi = dynamic_cast<RequestBucketInfoCommand&>(*_sender.command(0));
- ASSERT_EQ(size_t(1), rbi.getBuckets().size());
- EXPECT_EQ(document::BucketId(16, 3), rbi.getBuckets()[0]);
- auto reply = std::make_shared<api::RequestBucketInfoReply>(rbi);
- const api::StorageMessageAddress *address = _sender.command(0)->getAddress();
- index = address->getIndex();
- reply->setResult(api::ReturnCode::NOT_CONNECTED);
- getBucketDBUpdater().onRequestBucketInfoReply(reply);
- // Trigger that delayed message is sent
- getClock().addSecondsToTime(10);
- getBucketDBUpdater().resendDelayedMessages();
- }
-
- ASSERT_EQ(size_t(2), _sender.commands().size());
-
- setSystemState(
- lib::ClusterState(vespalib::make_string("distributor:1 storage:3 .%d.s:d", index)));
-
- // Recheck bucket.
- {
- auto& rbi = dynamic_cast<RequestBucketInfoCommand&>(*_sender.command(1));
- ASSERT_EQ(size_t(1), rbi.getBuckets().size());
- EXPECT_EQ(document::BucketId(16, 3), rbi.getBuckets()[0]);
- auto reply = std::make_shared<api::RequestBucketInfoReply>(rbi);
- reply->setResult(api::ReturnCode::NOT_CONNECTED);
- getBucketDBUpdater().onRequestBucketInfoReply(reply);
- }
-
- // Should not retry since node is down.
- EXPECT_EQ(size_t(2), _sender.commands().size());
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, recheck_node) {
- ASSERT_NO_FATAL_FAILURE(initializeNodesAndBuckets(3, 5));
-
- _sender.clear();
-
- getBucketDBUpdater().recheckBucketInfo(1, makeDocumentBucket(document::BucketId(16, 3)));
-
- ASSERT_EQ(size_t(1), _sender.commands().size());
-
- auto& rbi = dynamic_cast<RequestBucketInfoCommand&>(*_sender.command(0));
- ASSERT_EQ(size_t(1), rbi.getBuckets().size());
- EXPECT_EQ(document::BucketId(16, 3), rbi.getBuckets()[0]);
-
- auto reply = std::make_shared<api::RequestBucketInfoReply>(rbi);
- reply->getBucketInfo().push_back(
- api::RequestBucketInfoReply::Entry(document::BucketId(16, 3),
- api::BucketInfo(20, 10, 12, 50, 60, true, true)));
- getBucketDBUpdater().onRequestBucketInfoReply(reply);
-
- lib::ClusterState state("distributor:1 storage:3");
- for (uint32_t i = 0; i < 3; i++) {
- EXPECT_EQ(getIdealStr(document::BucketId(16, i), state),
- getNodes(document::BucketId(16, i)));
- }
-
- for (uint32_t i = 4; i < 5; i++) {
- EXPECT_EQ(getIdealStr(document::BucketId(16, i), state),
- getNodes(document::BucketId(16, i)));
- }
-
- BucketDatabase::Entry entry = getBucketDatabase().get(document::BucketId(16, 3));
- ASSERT_TRUE(entry.valid());
-
- const BucketCopy* copy = entry->getNode(1);
- ASSERT_TRUE(copy != nullptr);
- EXPECT_EQ(api::BucketInfo(20,10,12, 50, 60, true, true), copy->getBucketInfo());
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, notify_bucket_change) {
- enableDistributorClusterState("distributor:1 storage:1");
-
- addNodesToBucketDB(document::BucketId(16, 1), "0=1234");
- _sender.replies().clear();
-
- {
- api::BucketInfo info(1, 2, 3, 4, 5, true, true);
- auto cmd(std::make_shared<api::NotifyBucketChangeCommand>(
- makeDocumentBucket(document::BucketId(16, 1)), info));
- cmd->setSourceIndex(0);
- getBucketDBUpdater().onNotifyBucketChange(cmd);
- }
-
- {
- api::BucketInfo info(10, 11, 12, 13, 14, false, false);
- auto cmd(std::make_shared<api::NotifyBucketChangeCommand>(
- makeDocumentBucket(document::BucketId(16, 2)), info));
- cmd->setSourceIndex(0);
- getBucketDBUpdater().onNotifyBucketChange(cmd);
- }
-
- // Must receive reply
- ASSERT_EQ(size_t(2), _sender.replies().size());
-
- for (int i = 0; i < 2; ++i) {
- ASSERT_EQ(MessageType::NOTIFYBUCKETCHANGE_REPLY,
- _sender.reply(i)->getType());
- }
-
- // No database update until request bucket info replies have been received.
- EXPECT_EQ(std::string("BucketId(0x4000000000000001) : "
- "node(idx=0,crc=0x4d2,docs=1234/1234,bytes=1234/1234,"
- "trusted=false,active=false,ready=false)"),
- dumpBucket(document::BucketId(16, 1)));
- EXPECT_EQ(std::string("NONEXISTING"), dumpBucket(document::BucketId(16, 2)));
-
- ASSERT_EQ(size_t(2), _sender.commands().size());
-
- std::vector<api::BucketInfo> infos;
- infos.push_back(api::BucketInfo(4567, 200, 2000, 400, 4000, true, true));
- infos.push_back(api::BucketInfo(8999, 300, 3000, 500, 5000, false, false));
-
- for (int i = 0; i < 2; ++i) {
- auto& rbi = dynamic_cast<RequestBucketInfoCommand&>(*_sender.command(i));
- ASSERT_EQ(size_t(1), rbi.getBuckets().size());
- EXPECT_EQ(document::BucketId(16, i + 1), rbi.getBuckets()[0]);
-
- auto reply = std::make_shared<api::RequestBucketInfoReply>(rbi);
- reply->getBucketInfo().push_back(
- api::RequestBucketInfoReply::Entry(document::BucketId(16, i + 1),
- infos[i]));
- getBucketDBUpdater().onRequestBucketInfoReply(reply);
- }
-
- EXPECT_EQ(std::string("BucketId(0x4000000000000001) : "
- "node(idx=0,crc=0x11d7,docs=200/400,bytes=2000/4000,trusted=true,active=true,ready=true)"),
- dumpBucket(document::BucketId(16, 1)));
- EXPECT_EQ(std::string("BucketId(0x4000000000000002) : "
- "node(idx=0,crc=0x2327,docs=300/500,bytes=3000/5000,trusted=true,active=false,ready=false)"),
- dumpBucket(document::BucketId(16, 2)));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, notify_bucket_change_from_node_down) {
- enableDistributorClusterState("distributor:1 storage:2");
-
- addNodesToBucketDB(document::BucketId(16, 1), "1=1234");
-
- _sender.replies().clear();
-
- {
- api::BucketInfo info(8999, 300, 3000, 500, 5000, false, false);
- auto cmd(std::make_shared<api::NotifyBucketChangeCommand>(
- makeDocumentBucket(document::BucketId(16, 1)), info));
- cmd->setSourceIndex(0);
- getBucketDBUpdater().onNotifyBucketChange(cmd);
- }
- // Enable here to avoid having request bucket info be silently swallowed
- // (send_request_bucket_info drops message if node is down).
- enableDistributorClusterState("distributor:1 storage:2 .0.s:d");
-
- ASSERT_EQ(std::string("BucketId(0x4000000000000001) : "
- "node(idx=1,crc=0x4d2,docs=1234/1234,bytes=1234/1234,trusted=false,active=false,ready=false)"),
- dumpBucket(document::BucketId(16, 1)));
-
- ASSERT_EQ(size_t(1), _sender.replies().size());
- ASSERT_EQ(MessageType::NOTIFYBUCKETCHANGE_REPLY, _sender.reply(0)->getType());
-
- // Currently, this pending operation will be auto-flushed when the cluster state
- // changes so the behavior is still correct. Keep this test around to prevent
- // regressions here.
- ASSERT_EQ(size_t(1), _sender.commands().size());
- auto& rbi = dynamic_cast<RequestBucketInfoCommand&>(*_sender.command(0));
- ASSERT_EQ(size_t(1), rbi.getBuckets().size());
- EXPECT_EQ(document::BucketId(16, 1), rbi.getBuckets()[0]);
-
- auto reply = std::make_shared<api::RequestBucketInfoReply>(rbi);
- reply->getBucketInfo().push_back(
- api::RequestBucketInfoReply::Entry(
- document::BucketId(16, 1),
- api::BucketInfo(8999, 300, 3000, 500, 5000, false, false)));
- getBucketDBUpdater().onRequestBucketInfoReply(reply);
-
- // No change
- EXPECT_EQ(std::string("BucketId(0x4000000000000001) : "
- "node(idx=1,crc=0x4d2,docs=1234/1234,bytes=1234/1234,trusted=false,active=false,ready=false)"),
- dumpBucket(document::BucketId(16, 1)));
-}
-
-/**
- * Test that NotifyBucketChange received while there's a pending cluster state
- * waits until the cluster state has been enabled as current before it sends off
- * the single bucket info requests. This is to prevent a race condition where
- * the replies to bucket info requests for buckets that would be owned by the
- * distributor in the pending state but not by the current state would be
- * discarded when attempted inserted into the bucket database.
- */
-TEST_F(LegacyBucketDBUpdaterTest, notify_change_with_pending_state_queues_bucket_info_requests) {
- setSystemState(lib::ClusterState("distributor:1 storage:1"));
- ASSERT_EQ(_bucketSpaces.size(), _sender.commands().size());
-
- {
- api::BucketInfo info(8999, 300, 3000, 500, 5000, false, false);
- auto cmd(std::make_shared<api::NotifyBucketChangeCommand>(
- makeDocumentBucket(document::BucketId(16, 1)), info));
- cmd->setSourceIndex(0);
- getBucketDBUpdater().onNotifyBucketChange(cmd);
- }
-
- ASSERT_EQ(_bucketSpaces.size(), _sender.commands().size());
-
- ASSERT_NO_FATAL_FAILURE(completeBucketInfoGathering(lib::ClusterState("distributor:1 storage:1"),
- _bucketSpaces.size(), 10));
-
- ASSERT_EQ(_bucketSpaces.size() + 1, _sender.commands().size());
-
- {
- auto& rbi = dynamic_cast<RequestBucketInfoCommand&>(*_sender.command(_bucketSpaces.size()));
- ASSERT_EQ(size_t(1), rbi.getBuckets().size());
- EXPECT_EQ(document::BucketId(16, 1), rbi.getBuckets()[0]);
- }
- _sender.clear();
-
- // Queue must be cleared once pending state is enabled.
- {
- lib::ClusterState state("distributor:1 storage:2");
- uint32_t expectedMsgs = _bucketSpaces.size(), dummyBucketsToReturn = 1;
- ASSERT_NO_FATAL_FAILURE(setAndEnableClusterState(state, expectedMsgs, dummyBucketsToReturn));
- }
- ASSERT_EQ(_bucketSpaces.size(), _sender.commands().size());
- {
- auto& rbi = dynamic_cast<RequestBucketInfoCommand&>(*_sender.command(0));
- EXPECT_EQ(size_t(0), rbi.getBuckets().size());
- }
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, merge_reply) {
- enableDistributorClusterState("distributor:1 storage:3");
-
- addNodesToBucketDB(document::BucketId(16, 1234),
- "0=1234,1=1234,2=1234");
-
- std::vector<api::MergeBucketCommand::Node> nodes;
- nodes.push_back(api::MergeBucketCommand::Node(0));
- nodes.push_back(api::MergeBucketCommand::Node(1));
- nodes.push_back(api::MergeBucketCommand::Node(2));
-
- api::MergeBucketCommand cmd(makeDocumentBucket(document::BucketId(16, 1234)), nodes, 0);
-
- auto reply = std::make_shared<api::MergeBucketReply>(cmd);
-
- _sender.clear();
- getBucketDBUpdater().onMergeBucketReply(reply);
-
- ASSERT_EQ(size_t(3), _sender.commands().size());
-
- for (uint32_t i = 0; i < 3; i++) {
- auto req = std::dynamic_pointer_cast<api::RequestBucketInfoCommand>(_sender.command(i));
-
- ASSERT_TRUE(req.get() != nullptr);
- ASSERT_EQ(size_t(1), req->getBuckets().size());
- EXPECT_EQ(document::BucketId(16, 1234), req->getBuckets()[0]);
-
- auto reqreply = std::make_shared<api::RequestBucketInfoReply>(*req);
- reqreply->getBucketInfo().push_back(
- api::RequestBucketInfoReply::Entry(document::BucketId(16, 1234),
- api::BucketInfo(10 * (i + 1), 100 * (i +1), 1000 * (i+1))));
-
- getBucketDBUpdater().onRequestBucketInfoReply(reqreply);
- }
-
- EXPECT_EQ(std::string("BucketId(0x40000000000004d2) : "
- "node(idx=0,crc=0xa,docs=100/100,bytes=1000/1000,trusted=false,active=false,ready=false), "
- "node(idx=1,crc=0x14,docs=200/200,bytes=2000/2000,trusted=false,active=false,ready=false), "
- "node(idx=2,crc=0x1e,docs=300/300,bytes=3000/3000,trusted=false,active=false,ready=false)"),
- dumpBucket(document::BucketId(16, 1234)));
-};
-
-TEST_F(LegacyBucketDBUpdaterTest, merge_reply_node_down) {
- enableDistributorClusterState("distributor:1 storage:3");
- std::vector<api::MergeBucketCommand::Node> nodes;
-
- addNodesToBucketDB(document::BucketId(16, 1234), "0=1234,1=1234,2=1234");
-
- for (uint32_t i = 0; i < 3; ++i) {
- nodes.push_back(api::MergeBucketCommand::Node(i));
- }
-
- api::MergeBucketCommand cmd(makeDocumentBucket(document::BucketId(16, 1234)), nodes, 0);
-
- auto reply = std::make_shared<api::MergeBucketReply>(cmd);
-
- setSystemState(lib::ClusterState("distributor:1 storage:2"));
-
- _sender.clear();
- getBucketDBUpdater().onMergeBucketReply(reply);
-
- ASSERT_EQ(size_t(2), _sender.commands().size());
-
- for (uint32_t i = 0; i < 2; i++) {
- auto req = std::dynamic_pointer_cast<api::RequestBucketInfoCommand>(_sender.command(i));
-
- ASSERT_TRUE(req.get() != nullptr);
- ASSERT_EQ(size_t(1), req->getBuckets().size());
- EXPECT_EQ(document::BucketId(16, 1234), req->getBuckets()[0]);
-
- auto reqreply = std::make_shared<api::RequestBucketInfoReply>(*req);
- reqreply->getBucketInfo().push_back(
- api::RequestBucketInfoReply::Entry(
- document::BucketId(16, 1234),
- api::BucketInfo(10 * (i + 1), 100 * (i +1), 1000 * (i+1))));
- getBucketDBUpdater().onRequestBucketInfoReply(reqreply);
- }
-
- EXPECT_EQ(std::string("BucketId(0x40000000000004d2) : "
- "node(idx=0,crc=0xa,docs=100/100,bytes=1000/1000,trusted=false,active=false,ready=false), "
- "node(idx=1,crc=0x14,docs=200/200,bytes=2000/2000,trusted=false,active=false,ready=false)"),
- dumpBucket(document::BucketId(16, 1234)));
-};
-
-TEST_F(LegacyBucketDBUpdaterTest, merge_reply_node_down_after_request_sent) {
- enableDistributorClusterState("distributor:1 storage:3");
- std::vector<api::MergeBucketCommand::Node> nodes;
-
- addNodesToBucketDB(document::BucketId(16, 1234), "0=1234,1=1234,2=1234");
-
- for (uint32_t i = 0; i < 3; ++i) {
- nodes.push_back(api::MergeBucketCommand::Node(i));
- }
-
- api::MergeBucketCommand cmd(makeDocumentBucket(document::BucketId(16, 1234)), nodes, 0);
-
- auto reply(std::make_shared<api::MergeBucketReply>(cmd));
-
- _sender.clear();
- getBucketDBUpdater().onMergeBucketReply(reply);
-
- ASSERT_EQ(size_t(3), _sender.commands().size());
-
- setSystemState(lib::ClusterState("distributor:1 storage:2"));
-
- for (uint32_t i = 0; i < 3; i++) {
- auto req = std::dynamic_pointer_cast<api::RequestBucketInfoCommand>(_sender.command(i));
-
- ASSERT_TRUE(req.get() != nullptr);
- ASSERT_EQ(size_t(1), req->getBuckets().size());
- EXPECT_EQ(document::BucketId(16, 1234), req->getBuckets()[0]);
-
- auto reqreply = std::make_shared<api::RequestBucketInfoReply>(*req);
- reqreply->getBucketInfo().push_back(
- api::RequestBucketInfoReply::Entry(
- document::BucketId(16, 1234),
- api::BucketInfo(10 * (i + 1), 100 * (i +1), 1000 * (i+1))));
- getBucketDBUpdater().onRequestBucketInfoReply(reqreply);
- }
-
- EXPECT_EQ(std::string("BucketId(0x40000000000004d2) : "
- "node(idx=0,crc=0xa,docs=100/100,bytes=1000/1000,trusted=false,active=false,ready=false), "
- "node(idx=1,crc=0x14,docs=200/200,bytes=2000/2000,trusted=false,active=false,ready=false)"),
- dumpBucket(document::BucketId(16, 1234)));
-};
-
-
-TEST_F(LegacyBucketDBUpdaterTest, flush) {
- enableDistributorClusterState("distributor:1 storage:3");
- _sender.clear();
-
- addNodesToBucketDB(document::BucketId(16, 1234), "0=1234,1=1234,2=1234");
-
- std::vector<api::MergeBucketCommand::Node> nodes;
- for (uint32_t i = 0; i < 3; ++i) {
- nodes.push_back(api::MergeBucketCommand::Node(i));
- }
-
- api::MergeBucketCommand cmd(makeDocumentBucket(document::BucketId(16, 1234)), nodes, 0);
-
- auto reply(std::make_shared<api::MergeBucketReply>(cmd));
-
- _sender.clear();
- getBucketDBUpdater().onMergeBucketReply(reply);
-
- ASSERT_EQ(size_t(3), _sender.commands().size());
- ASSERT_EQ(size_t(0), _senderDown.replies().size());
-
- getBucketDBUpdater().flush();
- // Flushing should drop all merge bucket replies
- EXPECT_EQ(size_t(0), _senderDown.commands().size());
-}
-
-std::string
-LegacyBucketDBUpdaterTest::getSentNodes(
- const std::string& oldClusterState,
- const std::string& newClusterState)
-{
- auto fixture = createPendingStateFixtureForStateChange(
- oldClusterState, newClusterState);
-
- sortSentMessagesByIndex(fixture->sender);
-
- std::ostringstream ost;
- for (uint32_t i = 0; i < fixture->sender.commands().size(); i++) {
- auto& req = dynamic_cast<RequestBucketInfoCommand&>(*fixture->sender.command(i));
-
- if (i > 0) {
- ost << ",";
- }
-
- ost << req.getAddress()->getIndex();
- }
-
- return ost.str();
-}
-
-std::string
-LegacyBucketDBUpdaterTest::getSentNodesDistributionChanged(
- const std::string& oldClusterState)
-{
- DistributorMessageSenderStub sender;
-
- framework::defaultimplementation::FakeClock clock;
- ClusterInformation::CSP clusterInfo(createClusterInfo(oldClusterState));
- std::unique_ptr<PendingClusterState> state(
- PendingClusterState::createForDistributionChange(
- clock, clusterInfo, sender, getBucketSpaceRepo(), api::Timestamp(1)));
-
- sortSentMessagesByIndex(sender);
-
- std::ostringstream ost;
- for (uint32_t i = 0; i < sender.commands().size(); i++) {
- auto& req = dynamic_cast<RequestBucketInfoCommand&>(*sender.command(i));
-
- if (i > 0) {
- ost << ",";
- }
-
- ost << req.getAddress()->getIndex();
- }
-
- return ost.str();
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, pending_cluster_state_send_messages) {
- EXPECT_EQ(getNodeList({0, 1, 2}),
- getSentNodes("cluster:d",
- "distributor:1 storage:3"));
-
- EXPECT_EQ(getNodeList({0, 1}),
- getSentNodes("cluster:d",
- "distributor:1 storage:3 .2.s:m"));
-
- EXPECT_EQ(getNodeList({2}),
- getSentNodes("distributor:1 storage:2",
- "distributor:1 storage:3"));
-
- EXPECT_EQ(getNodeList({2, 3, 4, 5}),
- getSentNodes("distributor:1 storage:2",
- "distributor:1 storage:6"));
-
- EXPECT_EQ(getNodeList({0, 1, 2}),
- getSentNodes("distributor:4 storage:3",
- "distributor:3 storage:3"));
-
- EXPECT_EQ(getNodeList({0, 1, 2, 3}),
- getSentNodes("distributor:4 storage:3",
- "distributor:4 .2.s:d storage:4"));
-
- EXPECT_EQ(std::string(""),
- getSentNodes("distributor:4 storage:3",
- "distributor:4 .0.s:d storage:4"));
-
- EXPECT_EQ(std::string(""),
- getSentNodes("distributor:3 storage:3",
- "distributor:4 storage:3"));
-
- EXPECT_EQ(getNodeList({2}),
- getSentNodes("distributor:3 storage:3 .2.s:i",
- "distributor:3 storage:3"));
-
- EXPECT_EQ(getNodeList({1}),
- getSentNodes("distributor:3 storage:3 .1.s:d",
- "distributor:3 storage:3"));
-
- EXPECT_EQ(getNodeList({1, 2, 4}),
- getSentNodes("distributor:3 storage:4 .1.s:d .2.s:i",
- "distributor:3 storage:5"));
-
- EXPECT_EQ(std::string(""),
- getSentNodes("distributor:1 storage:3",
- "cluster:d"));
-
- EXPECT_EQ(std::string(""),
- getSentNodes("distributor:1 storage:3",
- "distributor:1 storage:3"));
-
- EXPECT_EQ(std::string(""),
- getSentNodes("distributor:1 storage:3",
- "cluster:d distributor:1 storage:6"));
-
- EXPECT_EQ(std::string(""),
- getSentNodes("distributor:3 storage:3",
- "distributor:3 .2.s:m storage:3"));
-
- EXPECT_EQ(getNodeList({0, 1, 2}),
- getSentNodes("distributor:3 .2.s:m storage:3",
- "distributor:3 .2.s:d storage:3"));
-
- EXPECT_EQ(std::string(""),
- getSentNodes("distributor:3 .2.s:m storage:3",
- "distributor:3 storage:3"));
-
- EXPECT_EQ(getNodeList({0, 1, 2}),
- getSentNodesDistributionChanged("distributor:3 storage:3"));
-
- EXPECT_EQ(getNodeList({0, 1}),
- getSentNodes("distributor:10 storage:2",
- "distributor:10 .1.s:d storage:2"));
-
- EXPECT_EQ(std::string(""),
- getSentNodes("distributor:2 storage:2",
- "distributor:3 .2.s:i storage:2"));
-
- EXPECT_EQ(getNodeList({0, 1, 2}),
- getSentNodes("distributor:3 storage:3",
- "distributor:3 .2.s:s storage:3"));
-
- EXPECT_EQ(std::string(""),
- getSentNodes("distributor:3 .2.s:s storage:3",
- "distributor:3 .2.s:d storage:3"));
-
- EXPECT_EQ(getNodeList({1}),
- getSentNodes("distributor:3 storage:3 .1.s:m",
- "distributor:3 storage:3"));
-
- EXPECT_EQ(std::string(""),
- getSentNodes("distributor:3 storage:3",
- "distributor:3 storage:3 .1.s:m"));
-};
-
-TEST_F(LegacyBucketDBUpdaterTest, pending_cluster_state_receive) {
- DistributorMessageSenderStub sender;
-
- auto cmd(std::make_shared<api::SetSystemStateCommand>(
- lib::ClusterState("distributor:1 storage:3")));
-
- framework::defaultimplementation::FakeClock clock;
- ClusterInformation::CSP clusterInfo(createClusterInfo("cluster:d"));
- OutdatedNodesMap outdatedNodesMap;
- std::unique_ptr<PendingClusterState> state(
- PendingClusterState::createForClusterStateChange(
- clock, clusterInfo, sender, getBucketSpaceRepo(),
- cmd, outdatedNodesMap, api::Timestamp(1)));
-
- ASSERT_EQ(messageCount(3), sender.commands().size());
-
- sortSentMessagesByIndex(sender);
-
- std::ostringstream ost;
- for (uint32_t i = 0; i < sender.commands().size(); i++) {
- auto* req = dynamic_cast<RequestBucketInfoCommand*>(sender.command(i).get());
- ASSERT_TRUE(req != nullptr);
-
- auto rep = std::make_shared<RequestBucketInfoReply>(*req);
-
- rep->getBucketInfo().push_back(
- RequestBucketInfoReply::Entry(
- document::BucketId(16, i),
- api::BucketInfo(i, i, i, i, i)));
-
- ASSERT_TRUE(state->onRequestBucketInfoReply(rep));
- ASSERT_EQ((i == (sender.commands().size() - 1)), state->done());
- }
-
- auto& pendingTransition = state->getPendingBucketSpaceDbTransition(makeBucketSpace());
- EXPECT_EQ(3, (int)pendingTransition.results().size());
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, pending_cluster_state_with_group_down) {
- std::string config(getDistConfig6Nodes4Groups());
- config += "distributor_auto_ownership_transfer_on_whole_group_down true\n";
- setDistribution(config);
-
- // Group config has nodes {0, 1}, {2, 3}, {4, 5}
- // We're node index 0.
-
- // Entire group 1 goes down. Must refetch from all nodes.
- EXPECT_EQ(getNodeList({0, 1, 2, 3, 4, 5}),
- getSentNodes("distributor:6 storage:6",
- "distributor:6 .2.s:d .3.s:d storage:6"));
-
- // But don't fetch if not the entire group is down.
- EXPECT_EQ(std::string(""),
- getSentNodes("distributor:6 storage:6",
- "distributor:6 .2.s:d storage:6"));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, pending_cluster_state_with_group_down_and_no_handover) {
- std::string config(getDistConfig6Nodes4Groups());
- config += "distributor_auto_ownership_transfer_on_whole_group_down false\n";
- setDistribution(config);
-
- // Group is down, but config says to not do anything about it.
- EXPECT_EQ(getNodeList({0, 1, 2, 3, 4, 5}, _bucketSpaces.size() - 1),
- getSentNodes("distributor:6 storage:6",
- "distributor:6 .2.s:d .3.s:d storage:6"));
-}
-
-void
-parseInputData(const std::string& data,
- uint64_t timestamp,
- PendingClusterState& state,
- bool includeBucketInfo)
-{
- vespalib::StringTokenizer tokenizer(data, "|");
- for (uint32_t i = 0; i < tokenizer.size(); i++) {
- vespalib::StringTokenizer tok2(tokenizer[i], ":");
-
- uint16_t node = atoi(tok2[0].data());
-
- state.setNodeReplied(node);
- auto& pendingTransition = state.getPendingBucketSpaceDbTransition(makeBucketSpace());
-
- vespalib::StringTokenizer tok3(tok2[1], ",");
- for (uint32_t j = 0; j < tok3.size(); j++) {
- if (includeBucketInfo) {
- vespalib::StringTokenizer tok4(tok3[j], "/");
-
- pendingTransition.addNodeInfo(
- document::BucketId(16, atoi(tok4[0].data())),
- BucketCopy(
- timestamp,
- node,
- api::BucketInfo(
- atoi(tok4[1].data()),
- atoi(tok4[2].data()),
- atoi(tok4[3].data()),
- atoi(tok4[2].data()),
- atoi(tok4[3].data()))));
- } else {
- pendingTransition.addNodeInfo(
- document::BucketId(16, atoi(tok3[j].data())),
- BucketCopy(timestamp,
- node,
- api::BucketInfo(3, 3, 3, 3, 3)));
- }
- }
- }
-}
-
-struct BucketDumper : public BucketDatabase::EntryProcessor
-{
- std::ostringstream ost;
- bool _includeBucketInfo;
-
- explicit BucketDumper(bool includeBucketInfo)
- : _includeBucketInfo(includeBucketInfo)
- {
- }
-
- bool process(const BucketDatabase::ConstEntryRef& e) override {
- document::BucketId bucketId(e.getBucketId());
-
- ost << (uint32_t)bucketId.getRawId() << ":";
- for (uint32_t i = 0; i < e->getNodeCount(); ++i) {
- if (i > 0) {
- ost << ",";
- }
- const BucketCopy& copy(e->getNodeRef(i));
- ost << copy.getNode();
- if (_includeBucketInfo) {
- ost << "/" << copy.getChecksum()
- << "/" << copy.getDocumentCount()
- << "/" << copy.getTotalDocumentSize()
- << "/" << (copy.trusted() ? "t" : "u");
- }
- }
- ost << "|";
- return true;
- }
-};
-
-std::string
-LegacyBucketDBUpdaterTest::mergeBucketLists(
- const lib::ClusterState& oldState,
- const std::string& existingData,
- const lib::ClusterState& newState,
- const std::string& newData,
- bool includeBucketInfo)
-{
- framework::defaultimplementation::FakeClock clock;
- framework::MilliSecTimer timer(clock);
-
- DistributorMessageSenderStub sender;
- OutdatedNodesMap outdatedNodesMap;
-
- {
- auto cmd(std::make_shared<api::SetSystemStateCommand>(oldState));
-
- api::Timestamp beforeTime(1);
-
- ClusterInformation::CSP clusterInfo(createClusterInfo("cluster:d"));
- std::unique_ptr<PendingClusterState> state(
- PendingClusterState::createForClusterStateChange(
- clock, clusterInfo, sender, getBucketSpaceRepo(),
- cmd, outdatedNodesMap, beforeTime));
-
- parseInputData(existingData, beforeTime, *state, includeBucketInfo);
- state->mergeIntoBucketDatabases();
- }
-
- BucketDumper dumper_tmp(true);
- getBucketDatabase().forEach(dumper_tmp);
-
- {
- auto cmd(std::make_shared<api::SetSystemStateCommand>(
- lib::ClusterState(newState)));
-
- api::Timestamp afterTime(2);
-
- ClusterInformation::CSP clusterInfo(createClusterInfo(oldState.toString()));
- std::unique_ptr<PendingClusterState> state(
- PendingClusterState::createForClusterStateChange(
- clock, clusterInfo, sender, getBucketSpaceRepo(),
- cmd, outdatedNodesMap, afterTime));
-
- parseInputData(newData, afterTime, *state, includeBucketInfo);
- state->mergeIntoBucketDatabases();
- }
-
- BucketDumper dumper(includeBucketInfo);
- auto &bucketDb(defaultDistributorBucketSpace().getBucketDatabase());
- bucketDb.forEach(dumper);
- bucketDb.clear();
- return dumper.ost.str();
-}
-
-std::string
-LegacyBucketDBUpdaterTest::mergeBucketLists(const std::string& existingData,
- const std::string& newData,
- bool includeBucketInfo)
-{
- return mergeBucketLists(
- lib::ClusterState("distributor:1 storage:3"),
- existingData,
- lib::ClusterState("distributor:1 storage:3"),
- newData,
- includeBucketInfo);
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, pending_cluster_state_merge) {
- // Simple initializing case - ask all nodes for info
- EXPECT_EQ(
- // Result is on the form: [bucket w/o count bits]:[node indexes]|..
- std::string("4:0,1|2:0,1|6:1,2|1:0,2|5:2,0|3:2,1|"),
- // Input is on the form: [node]:[bucket w/o count bits]|...
- mergeBucketLists(
- "",
- "0:1,2,4,5|1:2,3,4,6|2:1,3,5,6"));
-
- // New node came up
- EXPECT_EQ(
- std::string("4:0,1|2:0,1|6:1,2,3|1:0,2,3|5:2,0,3|3:2,1,3|"),
- mergeBucketLists(
- "0:1,2,4,5|1:2,3,4,6|2:1,3,5,6",
- "3:1,3,5,6"));
-
- // Node came up with some buckets removed and some added
- // Buckets that were removed should not be removed as the node
- // didn't lose a disk.
- EXPECT_EQ(
- std::string("8:0|4:0,1|2:0,1|6:1,0,2|1:0,2|5:2,0|3:2,1|"),
- mergeBucketLists(
- "0:1,2,4,5|1:2,3,4,6|2:1,3,5,6",
- "0:1,2,6,8"));
-
- // Bucket info format is "bucketid/checksum/count/size"
- // Node went from initializing to up and invalid bucket went to empty.
- EXPECT_EQ(
- std::string("2:0/0/0/0/t|"),
- mergeBucketLists(
- "0:2/0/0/1",
- "0:2/0/0/0",
- true));
-
- EXPECT_EQ(std::string("5:1/2/3/4/u,0/0/0/0/u|"),
- mergeBucketLists("", "0:5/0/0/0|1:5/2/3/4", true));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, pending_cluster_state_merge_replica_changed) {
- // Node went from initializing to up and non-invalid bucket changed.
- EXPECT_EQ(
- std::string("2:0/2/3/4/t|3:0/2/4/6/t|"),
- mergeBucketLists(
- lib::ClusterState("distributor:1 storage:1 .0.s:i"),
- "0:2/1/2/3,3/2/4/6",
- lib::ClusterState("distributor:1 storage:1"),
- "0:2/2/3/4,3/2/4/6",
- true));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, no_db_resurrection_for_bucket_not_owned_in_current_state) {
- document::BucketId bucket(16, 3);
- lib::ClusterState stateBefore("distributor:1 storage:1");
- {
- uint32_t expectedMsgs = _bucketSpaces.size(), dummyBucketsToReturn = 1;
- ASSERT_NO_FATAL_FAILURE(setAndEnableClusterState(stateBefore, expectedMsgs, dummyBucketsToReturn));
- }
- _sender.clear();
-
- getBucketDBUpdater().recheckBucketInfo(0, makeDocumentBucket(bucket));
-
- ASSERT_EQ(size_t(1), _sender.commands().size());
- std::shared_ptr<api::RequestBucketInfoCommand> rbi(
- std::dynamic_pointer_cast<RequestBucketInfoCommand>(
- _sender.command(0)));
-
- lib::ClusterState stateAfter("distributor:3 storage:3");
-
- {
- uint32_t expectedMsgs = messageCount(2), dummyBucketsToReturn = 1;
- ASSERT_NO_FATAL_FAILURE(setAndEnableClusterState(stateAfter, expectedMsgs, dummyBucketsToReturn));
- }
- EXPECT_FALSE(getDistributorBucketSpace().get_bucket_ownership_flags(bucket).owned_in_current_state());
-
- ASSERT_NO_FATAL_FAILURE(sendFakeReplyForSingleBucketRequest(*rbi));
-
- EXPECT_EQ(std::string("NONEXISTING"), dumpBucket(bucket));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, no_db_resurrection_for_bucket_not_owned_in_pending_state) {
- document::BucketId bucket(16, 3);
- lib::ClusterState stateBefore("distributor:1 storage:1");
- {
- uint32_t expectedMsgs = _bucketSpaces.size(), dummyBucketsToReturn = 1;
- ASSERT_NO_FATAL_FAILURE(setAndEnableClusterState(stateBefore, expectedMsgs, dummyBucketsToReturn));
- }
- _sender.clear();
-
- getBucketDBUpdater().recheckBucketInfo(0, makeDocumentBucket(bucket));
-
- ASSERT_EQ(size_t(1), _sender.commands().size());
- std::shared_ptr<api::RequestBucketInfoCommand> rbi(
- std::dynamic_pointer_cast<RequestBucketInfoCommand>(
- _sender.command(0)));
-
- lib::ClusterState stateAfter("distributor:3 storage:3");
- // Set, but _don't_ enable cluster state. We want it to be pending.
- setSystemState(stateAfter);
- EXPECT_TRUE(getDistributorBucketSpace().get_bucket_ownership_flags(bucket).owned_in_current_state());
- EXPECT_FALSE(getDistributorBucketSpace().get_bucket_ownership_flags(bucket).owned_in_pending_state());
-
- ASSERT_NO_FATAL_FAILURE(sendFakeReplyForSingleBucketRequest(*rbi));
-
- EXPECT_EQ(std::string("NONEXISTING"), dumpBucket(bucket));
-}
-
-/*
- * If we get a distribution config change, it's important that cluster states that
- * arrive after this--but _before_ the pending cluster state has finished--must trigger
- * a full bucket info fetch no matter what the cluster state change was! Otherwise, we
- * will with a high likelihood end up not getting the complete view of the buckets in
- * the cluster.
- */
-TEST_F(LegacyBucketDBUpdaterTest, cluster_state_always_sends_full_fetch_when_distribution_change_pending) {
- lib::ClusterState stateBefore("distributor:6 storage:6");
- {
- uint32_t expectedMsgs = messageCount(6), dummyBucketsToReturn = 1;
- ASSERT_NO_FATAL_FAILURE(setAndEnableClusterState(stateBefore, expectedMsgs, dummyBucketsToReturn));
- }
- _sender.clear();
- std::string distConfig(getDistConfig6Nodes2Groups());
- setDistribution(distConfig);
-
- sortSentMessagesByIndex(_sender);
- ASSERT_EQ(messageCount(6), _sender.commands().size());
- // Suddenly, a wild cluster state change appears! Even though this state
- // does not in itself imply any bucket changes, it will still overwrite the
- // pending cluster state and thus its state of pending bucket info requests.
- setSystemState(lib::ClusterState("distributor:6 .2.t:12345 storage:6"));
-
- ASSERT_EQ(messageCount(12), _sender.commands().size());
-
- // Send replies for first messageCount(6) (outdated requests).
- int numBuckets = 10;
- for (uint32_t i = 0; i < messageCount(6); ++i) {
- ASSERT_NO_FATAL_FAILURE(fakeBucketReply(lib::ClusterState("distributor:6 storage:6"),
- *_sender.command(i), numBuckets));
- }
- // No change from these.
- ASSERT_NO_FATAL_FAILURE(assertCorrectBuckets(1, "distributor:6 storage:6"));
-
- // Send for current pending.
- for (uint32_t i = 0; i < messageCount(6); ++i) {
- ASSERT_NO_FATAL_FAILURE(fakeBucketReply(lib::ClusterState("distributor:6 .2.t:12345 storage:6"),
- *_sender.command(i + messageCount(6)),
- numBuckets));
- }
- ASSERT_NO_FATAL_FAILURE(assertCorrectBuckets(numBuckets, "distributor:6 storage:6"));
- _sender.clear();
-
- // No more pending global fetch; this should be a no-op state.
- setSystemState(lib::ClusterState("distributor:6 .3.t:12345 storage:6"));
- EXPECT_EQ(size_t(0), _sender.commands().size());
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, changed_distribution_config_triggers_recovery_mode) {
- ASSERT_NO_FATAL_FAILURE(setAndEnableClusterState(lib::ClusterState("distributor:6 storage:6"), messageCount(6), 20));
- _sender.clear();
- EXPECT_TRUE(distributor_is_in_recovery_mode());
- complete_recovery_mode();
- EXPECT_FALSE(distributor_is_in_recovery_mode());
-
- std::string distConfig(getDistConfig6Nodes4Groups());
- setDistribution(distConfig);
- sortSentMessagesByIndex(_sender);
- // No replies received yet, still no recovery mode.
- EXPECT_FALSE(distributor_is_in_recovery_mode());
-
- ASSERT_EQ(messageCount(6), _sender.commands().size());
- uint32_t numBuckets = 10;
- for (uint32_t i = 0; i < messageCount(6); ++i) {
- ASSERT_NO_FATAL_FAILURE(fakeBucketReply(lib::ClusterState("distributor:6 storage:6"),
- *_sender.command(i), numBuckets));
- }
-
- // Pending cluster state (i.e. distribution) has been enabled, which should
- // cause recovery mode to be entered.
- EXPECT_TRUE(distributor_is_in_recovery_mode());
- complete_recovery_mode();
- EXPECT_FALSE(distributor_is_in_recovery_mode());
-}
-
-namespace {
-
-template <typename Func>
-struct FunctorProcessor : BucketDatabase::EntryProcessor {
- Func _f;
-
- template <typename F>
- explicit FunctorProcessor(F&& f) : _f(std::forward<F>(f)) {}
-
- bool process(const BucketDatabase::ConstEntryRef& e) override {
- _f(e);
- return true;
- }
-};
-
-template <typename Func>
-std::unique_ptr<BucketDatabase::EntryProcessor> func_processor(Func&& f) {
- return std::make_unique<FunctorProcessor<Func>>(std::forward<Func>(f));
-}
-
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, changed_distribution_config_does_not_elide_bucket_db_pruning) {
- setDistribution(getDistConfig3Nodes1Group());
-
- constexpr uint32_t n_buckets = 100;
- ASSERT_NO_FATAL_FAILURE(
- setAndEnableClusterState(lib::ClusterState("distributor:6 storage:6"), messageCount(6), n_buckets));
- _sender.clear();
-
- // Config implies a different node set than the current cluster state, so it's crucial that
- // DB pruning is _not_ elided. Yes, this is inherently racing with cluster state changes and
- // should be changed to be atomic and controlled by the cluster controller instead of config.
- // But this is where we currently are.
- setDistribution(getDistConfig6Nodes2Groups());
-
- getBucketDatabase().forEach(*func_processor([&](const auto& e) {
- EXPECT_TRUE(getDistributorBucketSpace().get_bucket_ownership_flags(e.getBucketId()).owned_in_pending_state());
- }));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, newly_added_buckets_have_current_time_as_gc_timestamp) {
- getClock().setAbsoluteTimeInSeconds(101234);
- lib::ClusterState stateBefore("distributor:1 storage:1");
- {
- uint32_t expectedMsgs = _bucketSpaces.size(), dummyBucketsToReturn = 1;
- ASSERT_NO_FATAL_FAILURE(setAndEnableClusterState(stateBefore, expectedMsgs, dummyBucketsToReturn));
- }
-
- // setAndEnableClusterState adds n buckets with id (16, i)
- document::BucketId bucket(16, 0);
- BucketDatabase::Entry e(getBucket(bucket));
- ASSERT_TRUE(e.valid());
- EXPECT_EQ(uint32_t(101234), e->getLastGarbageCollectionTime());
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, newer_mutations_not_overwritten_by_earlier_bucket_fetch) {
- {
- lib::ClusterState stateBefore("distributor:1 storage:1 .0.s:i");
- uint32_t expectedMsgs = _bucketSpaces.size(), dummyBucketsToReturn = 0;
- // This step is required to make the distributor ready for accepting
- // the below explicit database insertion towards node 0.
- ASSERT_NO_FATAL_FAILURE(setAndEnableClusterState(stateBefore, expectedMsgs,
- dummyBucketsToReturn));
- }
- _sender.clear();
- getClock().setAbsoluteTimeInSeconds(1000);
- lib::ClusterState state("distributor:1 storage:1");
- setSystemState(state);
- ASSERT_EQ(_bucketSpaces.size(), _sender.commands().size());
-
- // Before replying with the bucket info, simulate the arrival of a mutation
- // reply that alters the state of the bucket with information that will be
- // more recent that what is returned by the bucket info. This information
- // must not be lost when the bucket info is later merged into the database.
- document::BucketId bucket(16, 1);
- constexpr uint64_t insertionTimestamp = 1001ULL * 1000000;
- api::BucketInfo wantedInfo(5, 6, 7);
- getBucketDBUpdater().operation_context().update_bucket_database(
- makeDocumentBucket(bucket),
- BucketCopy(insertionTimestamp, 0, wantedInfo),
- DatabaseUpdate::CREATE_IF_NONEXISTING);
-
- getClock().setAbsoluteTimeInSeconds(1002);
- constexpr uint32_t bucketsReturned = 10; // Buckets (16, 0) ... (16, 9)
- // Return bucket information which on the timeline might originate from
- // anywhere between [1000, 1002]. Our assumption is that any mutations
- // taking place after t=1000 must have its reply received and processed
- // by this distributor and timestamped strictly higher than t=1000 (modulo
- // clock skew, of course, but that is outside the scope of this). A mutation
- // happening before t=1000 but receiving a reply at t>1000 does not affect
- // correctness, as this should contain the same bucket info as that
- // contained in the full bucket reply and the DB update is thus idempotent.
- for (uint32_t i = 0; i < _bucketSpaces.size(); ++i) {
- ASSERT_NO_FATAL_FAILURE(fakeBucketReply(state, *_sender.command(i), bucketsReturned));
- }
-
- BucketDatabase::Entry e(getBucket(bucket));
- ASSERT_EQ(uint32_t(1), e->getNodeCount());
- EXPECT_EQ(wantedInfo, e->getNodeRef(0).getBucketInfo());
-}
-
-std::vector<uint16_t>
-LegacyBucketDBUpdaterTest::getSendSet() const
-{
- std::vector<uint16_t> nodes;
- std::transform(_sender.commands().begin(),
- _sender.commands().end(),
- std::back_inserter(nodes),
- [](auto& cmd)
- {
- auto& req(dynamic_cast<const api::RequestBucketInfoCommand&>(*cmd));
- return req.getAddress()->getIndex();
- });
- return nodes;
-}
-
-std::vector<uint16_t>
-LegacyBucketDBUpdaterTest::getSentNodesWithPreemption(
- const std::string& oldClusterState,
- uint32_t expectedOldStateMessages,
- const std::string& preemptedClusterState,
- const std::string& newClusterState)
-{
- lib::ClusterState stateBefore(oldClusterState);
- uint32_t dummyBucketsToReturn = 10;
- // FIXME cannot chain assertion checks in non-void function
- setAndEnableClusterState(lib::ClusterState(oldClusterState),
- expectedOldStateMessages,
- dummyBucketsToReturn);
-
- _sender.clear();
-
- setSystemState(lib::ClusterState(preemptedClusterState));
- _sender.clear();
- // Do not allow the pending state to become the active state; trigger a
- // new transition without ACKing the info requests first. This will
- // overwrite the pending state entirely.
- setSystemState(lib::ClusterState(newClusterState));
- return getSendSet();
-}
-
-using nodeVec = std::vector<uint16_t>;
-
-/*
- * If we don't carry over the set of nodes that we need to fetch from,
- * a naive comparison between the active state and the new state will
- * make it appear to the distributor that nothing has changed, as any
- * database modifications caused by intermediate states will not be
- * accounted for (basically the ABA problem in a distributed setting).
- */
-TEST_F(LegacyBucketDBUpdaterTest, preempted_distributor_change_carries_node_set_over_to_next_state_fetch) {
- EXPECT_EQ(
- expandNodeVec({0, 1, 2, 3, 4, 5}),
- getSentNodesWithPreemption("version:1 distributor:6 storage:6",
- messageCount(6),
- "version:2 distributor:6 .5.s:d storage:6",
- "version:3 distributor:6 storage:6"));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, preempted_storage_change_carries_node_set_over_to_next_state_fetch) {
- EXPECT_EQ(
- expandNodeVec({2, 3}),
- getSentNodesWithPreemption(
- "version:1 distributor:6 storage:6 .2.s:d",
- messageCount(5),
- "version:2 distributor:6 storage:6 .2.s:d .3.s:d",
- "version:3 distributor:6 storage:6"));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, preempted_storage_node_down_must_be_re_fetched) {
- EXPECT_EQ(
- expandNodeVec({2}),
- getSentNodesWithPreemption(
- "version:1 distributor:6 storage:6",
- messageCount(6),
- "version:2 distributor:6 storage:6 .2.s:d",
- "version:3 distributor:6 storage:6"));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, do_not_send_to_preempted_node_now_in_down_state) {
- EXPECT_EQ(
- nodeVec{},
- getSentNodesWithPreemption(
- "version:1 distributor:6 storage:6 .2.s:d",
- messageCount(5),
- "version:2 distributor:6 storage:6", // Sends to 2.
- "version:3 distributor:6 storage:6 .2.s:d")); // 2 down again.
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, doNotSendToPreemptedNodeNotPartOfNewState) {
- // Even though 100 nodes are preempted, not all of these should be part
- // of the request afterwards when only 6 are part of the state.
- EXPECT_EQ(
- expandNodeVec({0, 1, 2, 3, 4, 5}),
- getSentNodesWithPreemption(
- "version:1 distributor:6 storage:100",
- messageCount(100),
- "version:2 distributor:5 .4.s:d storage:100",
- "version:3 distributor:6 storage:6"));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, outdated_node_set_cleared_after_successful_state_completion) {
- lib::ClusterState stateBefore(
- "version:1 distributor:6 storage:6 .1.t:1234");
- uint32_t expectedMsgs = messageCount(6), dummyBucketsToReturn = 10;
- ASSERT_NO_FATAL_FAILURE(setAndEnableClusterState(stateBefore, expectedMsgs, dummyBucketsToReturn));
- _sender.clear();
- // New cluster state that should not by itself trigger any new fetches,
- // unless outdated node set is somehow not cleared after an enabled
- // (completed) cluster state has been set.
- lib::ClusterState stateAfter("version:3 distributor:6 storage:6");
- setSystemState(stateAfter);
- EXPECT_EQ(size_t(0), _sender.commands().size());
-}
-
-// XXX test currently disabled since distribution config currently isn't used
-// at all in order to deduce the set of nodes to send to. This might not matter
-// in practice since it is assumed that the cluster state matching the new
-// distribution config will follow very shortly after the config has been
-// applied to the node. The new cluster state will then send out requests to
-// the correct node set.
-TEST_F(LegacyBucketDBUpdaterTest, DISABLED_cluster_config_downsize_only_sends_to_available_nodes) {
- uint32_t expectedMsgs = 6, dummyBucketsToReturn = 20;
- ASSERT_NO_FATAL_FAILURE(setAndEnableClusterState(lib::ClusterState("distributor:6 storage:6"),
- expectedMsgs, dummyBucketsToReturn));
- _sender.clear();
-
- // Intentionally trigger a racing config change which arrives before the
- // new cluster state representing it.
- std::string distConfig(getDistConfig3Nodes1Group());
- setDistribution(distConfig);
- sortSentMessagesByIndex(_sender);
-
- EXPECT_EQ((nodeVec{0, 1, 2}), getSendSet());
-}
-
-/**
- * Test scenario where a cluster is downsized by removing a subset of the nodes
- * from the distribution configuration. The system must be able to deal with
- * a scenario where the set of nodes between two cluster states across a config
- * change may differ.
- *
- * See VESPA-790 for details.
- */
-TEST_F(LegacyBucketDBUpdaterTest, node_missing_from_config_is_treated_as_needing_ownership_transfer) {
- uint32_t expectedMsgs = messageCount(3), dummyBucketsToReturn = 1;
- ASSERT_NO_FATAL_FAILURE(setAndEnableClusterState(lib::ClusterState("distributor:3 storage:3"),
- expectedMsgs, dummyBucketsToReturn));
- _sender.clear();
-
- // Cluster goes from {0, 1, 2} -> {0, 1}. This leaves us with a config
- // that does not contain node 2 while the _active_ cluster state still
- // contains this node.
- const char* downsizeCfg =
- "redundancy 2\n"
- "distributor_auto_ownership_transfer_on_whole_group_down true\n"
- "group[2]\n"
- "group[0].name \"invalid\"\n"
- "group[0].index \"invalid\"\n"
- "group[0].partitions 1|*\n"
- "group[0].nodes[0]\n"
- "group[1].name rack0\n"
- "group[1].index 0\n"
- "group[1].nodes[2]\n"
- "group[1].nodes[0].index 0\n"
- "group[1].nodes[1].index 1\n";
-
- setDistribution(downsizeCfg);
- sortSentMessagesByIndex(_sender);
- _sender.clear();
-
- // Attempt to apply state with {0, 1} set. This will compare the new state
- // with the previous state, which still has node 2.
- expectedMsgs = messageCount(2);
- ASSERT_NO_FATAL_FAILURE(setAndEnableClusterState(lib::ClusterState("distributor:2 storage:2"),
- expectedMsgs, dummyBucketsToReturn));
-
- EXPECT_EQ(expandNodeVec({0, 1}), getSendSet());
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, changed_distributor_set_implies_ownership_transfer) {
- auto fixture = createPendingStateFixtureForStateChange(
- "distributor:2 storage:2", "distributor:1 storage:2");
- EXPECT_TRUE(fixture->state->hasBucketOwnershipTransfer());
-
- fixture = createPendingStateFixtureForStateChange(
- "distributor:2 storage:2", "distributor:2 .1.s:d storage:2");
- EXPECT_TRUE(fixture->state->hasBucketOwnershipTransfer());
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, unchanged_distributor_set_implies_no_ownership_transfer) {
- auto fixture = createPendingStateFixtureForStateChange(
- "distributor:2 storage:2", "distributor:2 storage:1");
- EXPECT_FALSE(fixture->state->hasBucketOwnershipTransfer());
-
- fixture = createPendingStateFixtureForStateChange(
- "distributor:2 storage:2", "distributor:2 storage:2 .1.s:d");
- EXPECT_FALSE(fixture->state->hasBucketOwnershipTransfer());
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, changed_distribution_config_implies_ownership_transfer) {
- auto fixture = createPendingStateFixtureForDistributionChange(
- "distributor:2 storage:2");
- EXPECT_TRUE(fixture->state->hasBucketOwnershipTransfer());
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, transition_time_tracked_for_single_state_change) {
- ASSERT_NO_FATAL_FAILURE(completeStateTransitionInSeconds("distributor:2 storage:2", 5, messageCount(2)));
-
- EXPECT_EQ(uint64_t(5000), lastTransitionTimeInMillis());
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, transition_time_reset_across_non_preempting_state_changes) {
- ASSERT_NO_FATAL_FAILURE(completeStateTransitionInSeconds("distributor:2 storage:2", 5, messageCount(2)));
- ASSERT_NO_FATAL_FAILURE(completeStateTransitionInSeconds("distributor:2 storage:3", 3, messageCount(1)));
-
- EXPECT_EQ(uint64_t(3000), lastTransitionTimeInMillis());
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, transition_time_tracked_for_distribution_config_change) {
- lib::ClusterState state("distributor:2 storage:2");
- ASSERT_NO_FATAL_FAILURE(setAndEnableClusterState(state, messageCount(2), 1));
-
- _sender.clear();
- std::string distConfig(getDistConfig3Nodes1Group());
- setDistribution(distConfig);
- getClock().addSecondsToTime(4);
- ASSERT_NO_FATAL_FAILURE(completeBucketInfoGathering(state, messageCount(2)));
- EXPECT_EQ(uint64_t(4000), lastTransitionTimeInMillis());
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, transition_time_tracked_across_preempted_transitions) {
- _sender.clear();
- lib::ClusterState state("distributor:2 storage:2");
- setSystemState(state);
- getClock().addSecondsToTime(5);
- // Pre-empted with new state here, which will push out the old pending
- // state and replace it with a new one. We should still count the time
- // used processing the old state.
- ASSERT_NO_FATAL_FAILURE(completeStateTransitionInSeconds("distributor:2 storage:3", 3, messageCount(3)));
-
- EXPECT_EQ(uint64_t(8000), lastTransitionTimeInMillis());
-}
-
-/*
- * Brief reminder on test DSL for checking bucket merge operations:
- *
- * mergeBucketLists() takes as input strings of the format
- * <node>:<raw bucket id>/<checksum>/<num docs>/<doc size>|<node>:
- * and returns a string describing the bucket DB post-merge with the format
- * <raw bucket id>:<node>/<checksum>/<num docs>/<doc size>,<node>:....|<raw bucket id>:....
- *
- * Yes, the order of node<->bucket id is reversed between the two, perhaps to make sure you're awake.
- */
-
-TEST_F(LegacyBucketDBUpdaterTest, batch_update_of_existing_diverging_replicas_does_not_mark_any_as_trusted) {
- // Replacing bucket information for content node 0 should not mark existing
- // untrusted replica as trusted as a side effect.
- EXPECT_EQ(
- std::string("5:1/7/8/9/u,0/1/2/3/u|"),
- mergeBucketLists(
- lib::ClusterState("distributor:1 storage:3 .0.s:i"),
- "0:5/0/0/0|1:5/7/8/9",
- lib::ClusterState("distributor:1 storage:3 .0.s:u"),
- "0:5/1/2/3|1:5/7/8/9", true));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, batch_add_of_new_diverging_replicas_does_not_mark_any_as_trusted) {
- EXPECT_EQ(std::string("5:1/7/8/9/u,0/1/2/3/u|"),
- mergeBucketLists("", "0:5/1/2/3|1:5/7/8/9", true));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, batch_add_with_single_resulting_replica_implicitly_marks_as_trusted) {
- EXPECT_EQ(std::string("5:0/1/2/3/t|"),
- mergeBucketLists("", "0:5/1/2/3", true));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, identity_update_of_single_replica_does_not_clear_trusted) {
- EXPECT_EQ(std::string("5:0/1/2/3/t|"),
- mergeBucketLists("0:5/1/2/3", "0:5/1/2/3", true));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, identity_update_of_diverging_untrusted_replicas_does_not_mark_any_as_trusted) {
- EXPECT_EQ(std::string("5:1/7/8/9/u,0/1/2/3/u|"),
- mergeBucketLists("0:5/1/2/3|1:5/7/8/9", "0:5/1/2/3|1:5/7/8/9", true));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, adding_diverging_replica_to_existing_trusted_does_not_remove_trusted) {
- EXPECT_EQ(std::string("5:1/2/3/4/u,0/1/2/3/t|"),
- mergeBucketLists("0:5/1/2/3", "0:5/1/2/3|1:5/2/3/4", true));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, batch_update_from_distributor_change_does_not_mark_diverging_replicas_as_trusted) {
- // This differs from batch_update_of_existing_diverging_replicas_does_not_mark_any_as_trusted
- // in that _all_ content nodes are considered outdated when distributor changes take place,
- // and therefore a slightly different code path is taken. In particular, bucket info for
- // outdated nodes gets removed before possibly being re-added (if present in the bucket info
- // response).
- EXPECT_EQ(
- std::string("5:1/7/8/9/u,0/1/2/3/u|"),
- mergeBucketLists(
- lib::ClusterState("distributor:2 storage:3"),
- "0:5/1/2/3|1:5/7/8/9",
- lib::ClusterState("distributor:1 storage:3"),
- "0:5/1/2/3|1:5/7/8/9", true));
-}
-
-// TODO remove on Vespa 8 - this is a workaround for https://github.com/vespa-engine/vespa/issues/8475
-TEST_F(LegacyBucketDBUpdaterTest, global_distribution_hash_falls_back_to_legacy_format_upon_request_rejection) {
- std::string distConfig(getDistConfig6Nodes2Groups());
- setDistribution(distConfig);
-
- const vespalib::string current_hash = "(0d*|*(0;0;1;2)(1;3;4;5))";
- const vespalib::string legacy_hash = "(0d3|3|*(0;0;1;2)(1;3;4;5))";
-
- setSystemState(lib::ClusterState("distributor:6 storage:6"));
- ASSERT_EQ(messageCount(6), _sender.commands().size());
-
- api::RequestBucketInfoCommand* global_req = nullptr;
- for (auto& cmd : _sender.commands()) {
- auto& req_cmd = dynamic_cast<api::RequestBucketInfoCommand&>(*cmd);
- if (req_cmd.getBucketSpace() == document::FixedBucketSpaces::global_space()) {
- global_req = &req_cmd;
- break;
- }
- }
- ASSERT_TRUE(global_req != nullptr);
- ASSERT_EQ(current_hash, global_req->getDistributionHash());
-
- auto reply = std::make_shared<api::RequestBucketInfoReply>(*global_req);
- reply->setResult(api::ReturnCode::REJECTED);
- getBucketDBUpdater().onRequestBucketInfoReply(reply);
-
- getClock().addSecondsToTime(10);
- getBucketDBUpdater().resendDelayedMessages();
-
- // Should now be a resent request with legacy distribution hash
- ASSERT_EQ(messageCount(6) + 1, _sender.commands().size());
- auto& legacy_req = dynamic_cast<api::RequestBucketInfoCommand&>(*_sender.commands().back());
- ASSERT_EQ(legacy_hash, legacy_req.getDistributionHash());
-
- // Now if we reject it _again_ we should cycle back to the current hash
- // in case it wasn't a hash-based rejection after all. And the circle of life continues.
- reply = std::make_shared<api::RequestBucketInfoReply>(legacy_req);
- reply->setResult(api::ReturnCode::REJECTED);
- getBucketDBUpdater().onRequestBucketInfoReply(reply);
-
- getClock().addSecondsToTime(10);
- getBucketDBUpdater().resendDelayedMessages();
-
- ASSERT_EQ(messageCount(6) + 2, _sender.commands().size());
- auto& new_current_req = dynamic_cast<api::RequestBucketInfoCommand&>(*_sender.commands().back());
- ASSERT_EQ(current_hash, new_current_req.getDistributionHash());
-}
-
-namespace {
-
-template <typename Func>
-void for_each_bucket(const BucketDatabase& db, const document::BucketSpace& space, Func&& f) {
- BucketId last(0);
- auto e = db.getNext(last);
- while (e.valid()) {
- f(space, e);
- e = db.getNext(e.getBucketId());
- }
-}
-
-template <typename Func>
-void for_each_bucket(const DistributorBucketSpaceRepo& repo, Func&& f) {
- for (const auto& space : repo) {
- for_each_bucket(space.second->getBucketDatabase(), space.first, f);
- }
-}
-
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, non_owned_buckets_moved_to_read_only_db_on_ownership_change) {
- getBucketDBUpdater().set_stale_reads_enabled(true);
-
- lib::ClusterState initial_state("distributor:1 storage:4"); // All buckets owned by us by definition
- set_cluster_state_bundle(lib::ClusterStateBundle(initial_state, {}, false)); // Skip activation step for simplicity
-
- ASSERT_EQ(messageCount(4), _sender.commands().size());
- constexpr uint32_t n_buckets = 10;
- ASSERT_NO_FATAL_FAILURE(completeBucketInfoGathering(initial_state, messageCount(4), n_buckets));
- _sender.clear();
-
- EXPECT_EQ(size_t(n_buckets), mutable_default_db().size());
- EXPECT_EQ(size_t(n_buckets), mutable_global_db().size());
- EXPECT_EQ(size_t(0), read_only_default_db().size());
- EXPECT_EQ(size_t(0), read_only_global_db().size());
-
- lib::ClusterState pending_state("distributor:2 storage:4");
-
- std::unordered_set<Bucket, Bucket::hash> buckets_not_owned_in_pending_state;
- for_each_bucket(mutable_repo(), [&](const auto& space, const auto& entry) {
- if (!getDistributorBucketSpace().owns_bucket_in_state(pending_state, entry.getBucketId())) {
- buckets_not_owned_in_pending_state.insert(Bucket(space, entry.getBucketId()));
- }
- });
- EXPECT_FALSE(buckets_not_owned_in_pending_state.empty());
-
- set_cluster_state_bundle(lib::ClusterStateBundle(pending_state, {}, true)); // Now requires activation
-
- const auto buckets_not_owned_per_space = (buckets_not_owned_in_pending_state.size() / 2); // 2 spaces
- const auto expected_mutable_buckets = n_buckets - buckets_not_owned_per_space;
- EXPECT_EQ(expected_mutable_buckets, mutable_default_db().size());
- EXPECT_EQ(expected_mutable_buckets, mutable_global_db().size());
- EXPECT_EQ(buckets_not_owned_per_space, read_only_default_db().size());
- EXPECT_EQ(buckets_not_owned_per_space, read_only_global_db().size());
-
- for_each_bucket(read_only_repo(), [&](const auto& space, const auto& entry) {
- EXPECT_TRUE(buckets_not_owned_in_pending_state.find(Bucket(space, entry.getBucketId()))
- != buckets_not_owned_in_pending_state.end());
- });
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, buckets_no_longer_available_are_not_moved_to_read_only_database) {
- constexpr uint32_t n_buckets = 10;
- // No ownership change, just node down. Test redundancy is 2, so removing 2 nodes will
- // cause some buckets to be entirely unavailable.
- trigger_completed_but_not_yet_activated_transition("version:1 distributor:1 storage:4", n_buckets, 4,
- "version:2 distributor:1 storage:4 .0.s:d .1.s:m", n_buckets, 0);
-
- EXPECT_EQ(size_t(0), read_only_default_db().size());
- EXPECT_EQ(size_t(0), read_only_global_db().size());
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, non_owned_buckets_purged_when_read_only_support_is_config_disabled) {
- getBucketDBUpdater().set_stale_reads_enabled(false);
-
- lib::ClusterState initial_state("distributor:1 storage:4"); // All buckets owned by us by definition
- set_cluster_state_bundle(lib::ClusterStateBundle(initial_state, {}, false)); // Skip activation step for simplicity
-
- ASSERT_EQ(messageCount(4), _sender.commands().size());
- constexpr uint32_t n_buckets = 10;
- ASSERT_NO_FATAL_FAILURE(completeBucketInfoGathering(initial_state, messageCount(4), n_buckets));
- _sender.clear();
-
- // Nothing in read-only DB after first bulk load of buckets.
- EXPECT_EQ(size_t(0), read_only_default_db().size());
- EXPECT_EQ(size_t(0), read_only_global_db().size());
-
- lib::ClusterState pending_state("distributor:2 storage:4");
- setSystemState(pending_state);
- // No buckets should be moved into read only db after ownership changes.
- EXPECT_EQ(size_t(0), read_only_default_db().size());
- EXPECT_EQ(size_t(0), read_only_global_db().size());
-}
-
-void LegacyBucketDBUpdaterTest::trigger_completed_but_not_yet_activated_transition(
- vespalib::stringref initial_state_str,
- uint32_t initial_buckets,
- uint32_t initial_expected_msgs,
- vespalib::stringref pending_state_str,
- uint32_t pending_buckets,
- uint32_t pending_expected_msgs)
-{
- lib::ClusterState initial_state(initial_state_str);
- setSystemState(initial_state);
- ASSERT_EQ(messageCount(initial_expected_msgs), _sender.commands().size());
- ASSERT_NO_FATAL_FAILURE(completeBucketInfoGathering(
- initial_state, messageCount(initial_expected_msgs), initial_buckets));
- _sender.clear();
-
- lib::ClusterState pending_state(pending_state_str); // Ownership change
- set_cluster_state_bundle(lib::ClusterStateBundle(pending_state, {}, true));
- ASSERT_EQ(messageCount(pending_expected_msgs), _sender.commands().size());
- ASSERT_NO_FATAL_FAILURE(completeBucketInfoGathering(
- pending_state, messageCount(pending_expected_msgs), pending_buckets));
- _sender.clear();
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, deferred_activated_state_does_not_enable_state_until_activation_received) {
- getBucketDBUpdater().set_stale_reads_enabled(true);
- constexpr uint32_t n_buckets = 10;
- ASSERT_NO_FATAL_FAILURE(
- trigger_completed_but_not_yet_activated_transition("version:1 distributor:2 storage:4", 0, 4,
- "version:2 distributor:1 storage:4", n_buckets, 4));
-
- // Version should not be switched over yet
- EXPECT_EQ(uint32_t(1), current_distributor_cluster_state_bundle().getVersion());
-
- EXPECT_EQ(uint64_t(0), mutable_default_db().size());
- EXPECT_EQ(uint64_t(0), mutable_global_db().size());
-
- EXPECT_FALSE(activate_cluster_state_version(2));
-
- EXPECT_EQ(uint32_t(2), current_distributor_cluster_state_bundle().getVersion());
- EXPECT_EQ(uint64_t(n_buckets), mutable_default_db().size());
- EXPECT_EQ(uint64_t(n_buckets), mutable_global_db().size());
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, read_only_db_cleared_once_pending_state_is_activated) {
- getBucketDBUpdater().set_stale_reads_enabled(true);
- constexpr uint32_t n_buckets = 10;
- ASSERT_NO_FATAL_FAILURE(
- trigger_completed_but_not_yet_activated_transition("version:1 distributor:1 storage:4", n_buckets, 4,
- "version:2 distributor:2 storage:4", n_buckets, 0));
- EXPECT_FALSE(activate_cluster_state_version(2));
-
- EXPECT_EQ(uint64_t(0), read_only_default_db().size());
- EXPECT_EQ(uint64_t(0), read_only_global_db().size());
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, read_only_db_is_populated_even_when_self_is_marked_down) {
- getBucketDBUpdater().set_stale_reads_enabled(true);
- constexpr uint32_t n_buckets = 10;
- ASSERT_NO_FATAL_FAILURE(
- trigger_completed_but_not_yet_activated_transition("version:1 distributor:1 storage:4", n_buckets, 4,
- "version:2 distributor:1 .0.s:d storage:4", n_buckets, 0));
-
- // State not yet activated, so read-only DBs have got all the buckets we used to have.
- EXPECT_EQ(uint64_t(0), mutable_default_db().size());
- EXPECT_EQ(uint64_t(0), mutable_global_db().size());
- EXPECT_EQ(uint64_t(n_buckets), read_only_default_db().size());
- EXPECT_EQ(uint64_t(n_buckets), read_only_global_db().size());
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, activate_cluster_state_request_with_mismatching_version_returns_actual_version) {
- getBucketDBUpdater().set_stale_reads_enabled(true);
- constexpr uint32_t n_buckets = 10;
- ASSERT_NO_FATAL_FAILURE(
- trigger_completed_but_not_yet_activated_transition("version:4 distributor:1 storage:4", n_buckets, 4,
- "version:5 distributor:2 storage:4", n_buckets, 0));
-
- EXPECT_TRUE(activate_cluster_state_version(4)); // Too old version
- ASSERT_NO_FATAL_FAILURE(assert_has_activate_cluster_state_reply_with_actual_version(5));
-
- EXPECT_TRUE(activate_cluster_state_version(6)); // More recent version than what has been observed
- ASSERT_NO_FATAL_FAILURE(assert_has_activate_cluster_state_reply_with_actual_version(5));
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, activate_cluster_state_request_without_pending_transition_passes_message_through) {
- getBucketDBUpdater().set_stale_reads_enabled(true);
- constexpr uint32_t n_buckets = 10;
- ASSERT_NO_FATAL_FAILURE(
- trigger_completed_but_not_yet_activated_transition("version:1 distributor:2 storage:4", 0, 4,
- "version:2 distributor:1 storage:4", n_buckets, 4));
- // Activate version 2; no pending cluster state after this.
- EXPECT_FALSE(activate_cluster_state_version(2));
-
- // No pending cluster state for version 3, just passed through to be implicitly bounced by state manager.
- // Note: state manager is not modelled in this test, so we just check that the message handler returns
- // false (meaning "didn't take message ownership") and there's no auto-generated reply.
- EXPECT_FALSE(activate_cluster_state_version(3));
- EXPECT_EQ(size_t(0), _sender.replies().size());
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, DISABLED_benchmark_bulk_loading_into_empty_db) {
- // Need to trigger an initial edge to complete first bucket scan
- ASSERT_NO_FATAL_FAILURE(setAndEnableClusterState(lib::ClusterState("distributor:2 storage:1"),
- messageCount(1), 0));
- _sender.clear();
-
- lib::ClusterState state("distributor:1 storage:1");
- setSystemState(state);
-
- constexpr uint32_t superbuckets = 1u << 16u;
- constexpr uint32_t sub_buckets = 14;
- constexpr uint32_t n_buckets = superbuckets * sub_buckets;
-
- ASSERT_EQ(_bucketSpaces.size(), _sender.commands().size());
- for (uint32_t bsi = 0; bsi < _bucketSpaces.size(); ++bsi) {
- ASSERT_EQ(_sender.command(bsi)->getType(), MessageType::REQUESTBUCKETINFO);
- const auto& req = dynamic_cast<const RequestBucketInfoCommand&>(*_sender.command(bsi));
-
- auto sreply = std::make_shared<RequestBucketInfoReply>(req);
- sreply->setAddress(storageAddress(0));
- auto& vec = sreply->getBucketInfo();
- if (req.getBucketSpace() == FixedBucketSpaces::default_space()) {
- for (uint32_t sb = 0; sb < superbuckets; ++sb) {
- for (uint64_t i = 0; i < sub_buckets; ++i) {
- document::BucketId bucket(48, (i << 32ULL) | sb);
- vec.push_back(api::RequestBucketInfoReply::Entry(bucket, api::BucketInfo(10, 1, 1)));
- }
- }
- }
-
- vespalib::BenchmarkTimer timer(1.0);
- // Global space has no buckets but will serve as a trigger for merging
- // buckets into the DB. This lets us measure the overhead of just this part.
- if (req.getBucketSpace() == FixedBucketSpaces::global_space()) {
- timer.before();
- }
- getBucketDBUpdater().onRequestBucketInfoReply(sreply);
- if (req.getBucketSpace() == FixedBucketSpaces::global_space()) {
- timer.after();
- fprintf(stderr, "Took %g seconds to merge %u buckets into DB\n", timer.min_time(), n_buckets);
- }
- }
-
- EXPECT_EQ(size_t(n_buckets), mutable_default_db().size());
- EXPECT_EQ(size_t(0), mutable_global_db().size());
-}
-
-uint32_t LegacyBucketDBUpdaterTest::populate_bucket_db_via_request_bucket_info_for_benchmarking() {
- // Need to trigger an initial edge to complete first bucket scan
- setAndEnableClusterState(lib::ClusterState("distributor:2 storage:1"), messageCount(1), 0);
- _sender.clear();
-
- lib::ClusterState state("distributor:1 storage:1");
- setSystemState(state);
-
- constexpr uint32_t superbuckets = 1u << 16u;
- constexpr uint32_t sub_buckets = 14;
- constexpr uint32_t n_buckets = superbuckets * sub_buckets;
-
- assert(_bucketSpaces.size() == _sender.commands().size());
- for (uint32_t bsi = 0; bsi < _bucketSpaces.size(); ++bsi) {
- assert(_sender.command(bsi)->getType() == MessageType::REQUESTBUCKETINFO);
- const auto& req = dynamic_cast<const RequestBucketInfoCommand&>(*_sender.command(bsi));
-
- auto sreply = std::make_shared<RequestBucketInfoReply>(req);
- sreply->setAddress(storageAddress(0));
- auto& vec = sreply->getBucketInfo();
- if (req.getBucketSpace() == FixedBucketSpaces::default_space()) {
- for (uint32_t sb = 0; sb < superbuckets; ++sb) {
- for (uint64_t i = 0; i < sub_buckets; ++i) {
- document::BucketId bucket(48, (i << 32ULL) | sb);
- vec.push_back(api::RequestBucketInfoReply::Entry(bucket, api::BucketInfo(10, 1, 1)));
- }
- }
- }
- getBucketDBUpdater().onRequestBucketInfoReply(sreply);
- }
-
- assert(mutable_default_db().size() == n_buckets);
- assert(mutable_global_db().size() == 0);
- return n_buckets;
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, DISABLED_benchmark_removing_buckets_for_unavailable_storage_nodes) {
- const uint32_t n_buckets = populate_bucket_db_via_request_bucket_info_for_benchmarking();
-
- lib::ClusterState no_op_state("distributor:1 storage:1 .0.s:m"); // Removing all buckets via ownership
- vespalib::BenchmarkTimer timer(1.0);
- timer.before();
- setSystemState(no_op_state);
- timer.after();
- fprintf(stderr, "Took %g seconds to scan and remove %u buckets\n", timer.min_time(), n_buckets);
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, DISABLED_benchmark_no_buckets_removed_during_node_remover_db_pass) {
- const uint32_t n_buckets = populate_bucket_db_via_request_bucket_info_for_benchmarking();
-
- // TODO this benchmark is void if we further restrict the pruning elision logic to allow
- // elision when storage nodes come online.
- lib::ClusterState no_op_state("distributor:1 storage:2"); // Not removing any buckets
- vespalib::BenchmarkTimer timer(1.0);
- timer.before();
- setSystemState(no_op_state);
- timer.after();
- fprintf(stderr, "Took %g seconds to scan %u buckets with no-op action\n", timer.min_time(), n_buckets);
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, DISABLED_benchmark_all_buckets_removed_during_node_remover_db_pass) {
- const uint32_t n_buckets = populate_bucket_db_via_request_bucket_info_for_benchmarking();
-
- lib::ClusterState no_op_state("distributor:1 storage:1 .0.s:m"); // Removing all buckets via all replicas gone
- vespalib::BenchmarkTimer timer(1.0);
- timer.before();
- setSystemState(no_op_state);
- timer.after();
- fprintf(stderr, "Took %g seconds to scan and remove %u buckets\n", timer.min_time(), n_buckets);
-}
-
-TEST_F(LegacyBucketDBUpdaterTest, pending_cluster_state_getter_is_non_null_only_when_state_is_pending) {
- auto initial_baseline = std::make_shared<lib::ClusterState>("distributor:1 storage:2 .0.s:d");
- auto initial_default = std::make_shared<lib::ClusterState>("distributor:1 storage:2 .0.s:m");
-
- lib::ClusterStateBundle initial_bundle(*initial_baseline, {{FixedBucketSpaces::default_space(), initial_default},
- {FixedBucketSpaces::global_space(), initial_baseline}});
- set_cluster_state_bundle(initial_bundle);
-
- auto* state = getBucketDBUpdater().pendingClusterStateOrNull(FixedBucketSpaces::default_space());
- ASSERT_TRUE(state != nullptr);
- EXPECT_EQ(*initial_default, *state);
-
- state = getBucketDBUpdater().pendingClusterStateOrNull(FixedBucketSpaces::global_space());
- ASSERT_TRUE(state != nullptr);
- EXPECT_EQ(*initial_baseline, *state);
-
- ASSERT_NO_FATAL_FAILURE(completeBucketInfoGathering(*initial_baseline, messageCount(1), 0));
-
- state = getBucketDBUpdater().pendingClusterStateOrNull(FixedBucketSpaces::default_space());
- EXPECT_TRUE(state == nullptr);
-
- state = getBucketDBUpdater().pendingClusterStateOrNull(FixedBucketSpaces::global_space());
- EXPECT_TRUE(state == nullptr);
-}
-
-struct BucketDBUpdaterSnapshotTest : LegacyBucketDBUpdaterTest {
- lib::ClusterState empty_state;
- std::shared_ptr<lib::ClusterState> initial_baseline;
- std::shared_ptr<lib::ClusterState> initial_default;
- lib::ClusterStateBundle initial_bundle;
- Bucket default_bucket;
- Bucket global_bucket;
-
- BucketDBUpdaterSnapshotTest()
- : LegacyBucketDBUpdaterTest(),
- empty_state(),
- initial_baseline(std::make_shared<lib::ClusterState>("distributor:1 storage:2 .0.s:d")),
- initial_default(std::make_shared<lib::ClusterState>("distributor:1 storage:2 .0.s:m")),
- initial_bundle(*initial_baseline, {{FixedBucketSpaces::default_space(), initial_default},
- {FixedBucketSpaces::global_space(), initial_baseline}}),
- default_bucket(FixedBucketSpaces::default_space(), BucketId(16, 1234)),
- global_bucket(FixedBucketSpaces::global_space(), BucketId(16, 1234))
- {
- }
- ~BucketDBUpdaterSnapshotTest() override;
-
- void SetUp() override {
- LegacyBucketDBUpdaterTest::SetUp();
- getBucketDBUpdater().set_stale_reads_enabled(true);
- };
-
- // Assumes that the distributor owns all buckets, so it may choose any arbitrary bucket in the bucket space
- uint32_t buckets_in_snapshot_matching_current_db(DistributorBucketSpaceRepo& repo, BucketSpace bucket_space) {
- auto rs = getBucketDBUpdater().read_snapshot_for_bucket(Bucket(bucket_space, BucketId(16, 1234)));
- if (!rs.is_routable()) {
- return 0;
- }
- auto guard = rs.steal_read_guard();
- uint32_t found_buckets = 0;
- for_each_bucket(repo, [&](const auto& space, const auto& entry) {
- if (space == bucket_space) {
- auto entries = guard->find_parents_and_self(entry.getBucketId());
- if (entries.size() == 1) {
- ++found_buckets;
- }
- }
- });
- return found_buckets;
- }
-};
-
-BucketDBUpdaterSnapshotTest::~BucketDBUpdaterSnapshotTest() = default;
-
-TEST_F(BucketDBUpdaterSnapshotTest, default_space_snapshot_prior_to_activated_state_is_non_routable) {
- auto rs = getBucketDBUpdater().read_snapshot_for_bucket(default_bucket);
- EXPECT_FALSE(rs.is_routable());
-}
-
-TEST_F(BucketDBUpdaterSnapshotTest, global_space_snapshot_prior_to_activated_state_is_non_routable) {
- auto rs = getBucketDBUpdater().read_snapshot_for_bucket(global_bucket);
- EXPECT_FALSE(rs.is_routable());
-}
-
-TEST_F(BucketDBUpdaterSnapshotTest, read_snapshot_returns_appropriate_cluster_states) {
- set_cluster_state_bundle(initial_bundle);
- // State currently pending, empty initial state is active
-
- auto def_rs = getBucketDBUpdater().read_snapshot_for_bucket(default_bucket);
- EXPECT_EQ(def_rs.context().active_cluster_state()->toString(), empty_state.toString());
- EXPECT_EQ(def_rs.context().default_active_cluster_state()->toString(), empty_state.toString());
- ASSERT_TRUE(def_rs.context().has_pending_state_transition());
- EXPECT_EQ(def_rs.context().pending_cluster_state()->toString(), initial_default->toString());
-
- auto global_rs = getBucketDBUpdater().read_snapshot_for_bucket(global_bucket);
- EXPECT_EQ(global_rs.context().active_cluster_state()->toString(), empty_state.toString());
- EXPECT_EQ(global_rs.context().default_active_cluster_state()->toString(), empty_state.toString());
- ASSERT_TRUE(global_rs.context().has_pending_state_transition());
- EXPECT_EQ(global_rs.context().pending_cluster_state()->toString(), initial_baseline->toString());
-
- ASSERT_NO_FATAL_FAILURE(completeBucketInfoGathering(*initial_baseline, messageCount(1), 0));
- // State now activated, no pending
-
- def_rs = getBucketDBUpdater().read_snapshot_for_bucket(default_bucket);
- EXPECT_EQ(def_rs.context().active_cluster_state()->toString(), initial_default->toString());
- EXPECT_EQ(def_rs.context().default_active_cluster_state()->toString(), initial_default->toString());
- EXPECT_FALSE(def_rs.context().has_pending_state_transition());
-
- global_rs = getBucketDBUpdater().read_snapshot_for_bucket(global_bucket);
- EXPECT_EQ(global_rs.context().active_cluster_state()->toString(), initial_baseline->toString());
- EXPECT_EQ(global_rs.context().default_active_cluster_state()->toString(), initial_default->toString());
- EXPECT_FALSE(global_rs.context().has_pending_state_transition());
-}
-
-TEST_F(BucketDBUpdaterSnapshotTest, snapshot_with_no_pending_state_transition_returns_mutable_db_guard) {
- constexpr uint32_t n_buckets = 10;
- ASSERT_NO_FATAL_FAILURE(
- trigger_completed_but_not_yet_activated_transition("version:1 distributor:2 storage:4", 0, 4,
- "version:2 distributor:1 storage:4", n_buckets, 4));
- EXPECT_FALSE(activate_cluster_state_version(2));
- EXPECT_EQ(buckets_in_snapshot_matching_current_db(mutable_repo(), FixedBucketSpaces::default_space()),
- n_buckets);
- EXPECT_EQ(buckets_in_snapshot_matching_current_db(mutable_repo(), FixedBucketSpaces::global_space()),
- n_buckets);
-}
-
-TEST_F(BucketDBUpdaterSnapshotTest, snapshot_returns_unroutable_for_non_owned_bucket_in_current_state) {
- ASSERT_NO_FATAL_FAILURE(
- trigger_completed_but_not_yet_activated_transition("version:1 distributor:2 storage:4", 0, 4,
- "version:2 distributor:2 .0.s:d storage:4", 0, 0));
- EXPECT_FALSE(activate_cluster_state_version(2));
- // We're down in state 2 and therefore do not own any buckets
- auto def_rs = getBucketDBUpdater().read_snapshot_for_bucket(default_bucket);
- EXPECT_FALSE(def_rs.is_routable());
-}
-
-TEST_F(BucketDBUpdaterSnapshotTest, snapshot_with_pending_state_returns_read_only_guard_for_bucket_only_owned_in_current_state) {
- constexpr uint32_t n_buckets = 10;
- ASSERT_NO_FATAL_FAILURE(
- trigger_completed_but_not_yet_activated_transition("version:1 distributor:1 storage:4", n_buckets, 4,
- "version:2 distributor:2 .0.s:d storage:4", 0, 0));
- EXPECT_EQ(buckets_in_snapshot_matching_current_db(read_only_repo(), FixedBucketSpaces::default_space()),
- n_buckets);
- EXPECT_EQ(buckets_in_snapshot_matching_current_db(read_only_repo(), FixedBucketSpaces::global_space()),
- n_buckets);
-}
-
-TEST_F(BucketDBUpdaterSnapshotTest, snapshot_is_unroutable_if_stale_reads_disabled_and_bucket_not_owned_in_pending_state) {
- getBucketDBUpdater().set_stale_reads_enabled(false);
- constexpr uint32_t n_buckets = 10;
- ASSERT_NO_FATAL_FAILURE(
- trigger_completed_but_not_yet_activated_transition("version:1 distributor:1 storage:4", n_buckets, 4,
- "version:2 distributor:2 .0.s:d storage:4", 0, 0));
- auto def_rs = getBucketDBUpdater().read_snapshot_for_bucket(default_bucket);
- EXPECT_FALSE(def_rs.is_routable());
-}
-
-}
diff --git a/storage/src/tests/distributor/legacy_distributor_test.cpp b/storage/src/tests/distributor/legacy_distributor_test.cpp
deleted file mode 100644
index 4ed2cf6b2d9..00000000000
--- a/storage/src/tests/distributor/legacy_distributor_test.cpp
+++ /dev/null
@@ -1,1312 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include <vespa/storage/distributor/idealstatemetricsset.h>
-#include <vespa/storageapi/message/persistence.h>
-#include <vespa/storageapi/message/bucketsplitting.h>
-#include <vespa/storageapi/message/visitor.h>
-#include <vespa/storageapi/message/removelocation.h>
-#include <vespa/storageframework/defaultimplementation/thread/threadpoolimpl.h>
-#include <tests/distributor/distributortestutil.h>
-#include <vespa/document/bucket/fixed_bucket_spaces.h>
-#include <vespa/document/fieldset/fieldsets.h>
-#include <vespa/document/test/make_document_bucket.h>
-#include <vespa/document/test/make_bucket_space.h>
-#include <vespa/storage/config/config-stor-distributormanager.h>
-#include <vespa/storage/distributor/distributor.h>
-#include <vespa/storage/distributor/distributor_stripe.h>
-#include <vespa/storage/distributor/distributor_status.h>
-#include <vespa/storage/distributor/distributor_bucket_space.h>
-#include <vespa/storage/distributor/distributormetricsset.h>
-#include <vespa/vespalib/text/stringtokenizer.h>
-#include <vespa/metrics/updatehook.h>
-#include <thread>
-#include <vespa/vespalib/gtest/gtest.h>
-#include <gmock/gmock.h>
-
-using document::test::makeDocumentBucket;
-using document::test::makeBucketSpace;
-using document::FixedBucketSpaces;
-using document::BucketSpace;
-using document::Bucket;
-using document::BucketId;
-using namespace ::testing;
-
-namespace storage::distributor {
-
-// TODO STRIPE: Add variant of this test for the new stripe mode.
-// TODO STRIPE: Remove this test when legacy mode is gone.
-struct LegacyDistributorTest : Test, DistributorTestUtil {
- LegacyDistributorTest();
- ~LegacyDistributorTest() override;
-
- // TODO handle edge case for window between getnodestate reply already
- // sent and new request not yet received
-
- void assertBucketSpaceStats(size_t expBucketPending, size_t expBucketTotal, uint16_t node, const vespalib::string &bucketSpace,
- const BucketSpacesStatsProvider::PerNodeBucketSpacesStats &stats);
- std::vector<document::BucketSpace> _bucketSpaces;
-
- void SetUp() override {
- createLinks();
- _bucketSpaces = getBucketSpaces();
- };
-
- void TearDown() override {
- close();
- }
-
- // Simple type aliases to make interfacing with certain utility functions
- // easier. Note that this is only for readability and does not provide any
- // added type safety.
- using NodeCount = int;
- using Redundancy = int;
-
- using ConfigBuilder = vespa::config::content::core::StorDistributormanagerConfigBuilder;
-
- void configureDistributor(const ConfigBuilder& config) {
- getConfig().configure(config);
- _distributor->enableNextConfig();
- }
-
- auto currentReplicaCountingMode() const noexcept {
- return _distributor->bucket_db_metric_updater().getMinimumReplicaCountingMode();
- }
-
- std::string testOp(std::shared_ptr<api::StorageMessage> msg)
- {
- _distributor->handleMessage(msg);
-
- std::string tmp = _sender.getCommands();
- _sender.clear();
- return tmp;
- }
-
- void tickDistributorNTimes(uint32_t n) {
- for (uint32_t i = 0; i < n; ++i) {
- tick();
- }
- }
-
- typedef bool ResetTrusted;
-
- std::string updateBucketDB(const std::string& firstState,
- const std::string& secondState,
- bool resetTrusted = false)
- {
- std::vector<std::string> states(toVector<std::string>(firstState, secondState));
-
- for (uint32_t i = 0; i < states.size(); ++i) {
- std::vector<uint16_t> removedNodes;
- std::vector<BucketCopy> changedNodes;
-
- vespalib::StringTokenizer tokenizer(states[i], ",");
- for (uint32_t j = 0; j < tokenizer.size(); ++j) {
- vespalib::StringTokenizer tokenizer2(tokenizer[j], ":");
-
- bool trusted = false;
- if (tokenizer2.size() > 2) {
- trusted = true;
- }
-
- uint16_t node = atoi(tokenizer2[0].data());
- if (tokenizer2[1] == "r") {
- removedNodes.push_back(node);
- } else {
- uint32_t checksum = atoi(tokenizer2[1].data());
- changedNodes.push_back(
- BucketCopy(
- i + 1,
- node,
- api::BucketInfo(
- checksum,
- checksum / 2,
- checksum / 4)).setTrusted(trusted));
- }
- }
-
- operation_context().remove_nodes_from_bucket_database(makeDocumentBucket(document::BucketId(16, 1)), removedNodes);
-
- uint32_t flags(DatabaseUpdate::CREATE_IF_NONEXISTING
- | (resetTrusted ? DatabaseUpdate::RESET_TRUSTED : 0));
-
- operation_context().update_bucket_database(makeDocumentBucket(document::BucketId(16, 1)),
- changedNodes,
- flags);
- }
-
- std::string retVal = dumpBucket(document::BucketId(16, 1));
- getBucketDatabase().clear();
- return retVal;
- }
-
- size_t explicit_node_state_reply_send_invocations() const noexcept {
- return _node->getNodeStateUpdater().explicit_node_state_reply_send_invocations();
- }
-
- StatusReporterDelegate& distributor_status_delegate() {
- // TODO STRIPE
- return _distributor->_stripe->_distributorStatusDelegate;
- }
-
- framework::TickingThreadPool& distributor_thread_pool() {
- return _distributor->_threadPool;
- }
-
- const std::vector<std::shared_ptr<DistributorStatus>>& distributor_status_todos() {
- // TODO STRIPE
- return _distributor->_stripe->_statusToDo;
- }
-
- Distributor::MetricUpdateHook distributor_metric_update_hook() {
- return _distributor->_metricUpdateHook;
- }
-
- SimpleMaintenanceScanner::PendingMaintenanceStats distributor_maintenance_stats() {
- return _distributor->pending_maintenance_stats();
- }
-
- BucketSpacesStatsProvider::PerNodeBucketSpacesStats distributor_bucket_spaces_stats() {
- return _distributor->getBucketSpacesStats();
- }
-
- DistributorHostInfoReporter& distributor_host_info_reporter() {
- return _distributor->_hostInfoReporter;
- }
-
- bool distributor_handle_message(const std::shared_ptr<api::StorageMessage>& msg) {
- return _distributor->handleMessage(msg);
- }
-
- uint64_t db_sample_interval_sec() const noexcept {
- return std::chrono::duration_cast<std::chrono::seconds>(_distributor->db_memory_sample_interval()).count();
- }
-
- void configure_stale_reads_enabled(bool enabled) {
- ConfigBuilder builder;
- builder.allowStaleReadsDuringClusterStateTransitions = enabled;
- configureDistributor(builder);
- }
-
- void configure_update_fast_path_restart_enabled(bool enabled) {
- ConfigBuilder builder;
- builder.restartWithFastUpdatePathIfAllGetTimestampsAreConsistent = enabled;
- configureDistributor(builder);
- }
-
- void configure_merge_operations_disabled(bool disabled) {
- ConfigBuilder builder;
- builder.mergeOperationsDisabled = disabled;
- configureDistributor(builder);
- }
-
- void configure_use_weak_internal_read_consistency(bool use_weak) {
- ConfigBuilder builder;
- builder.useWeakInternalReadConsistencyForClientGets = use_weak;
- configureDistributor(builder);
- }
-
- void configure_metadata_update_phase_enabled(bool enabled) {
- ConfigBuilder builder;
- builder.enableMetadataOnlyFetchPhaseForInconsistentUpdates = enabled;
- configureDistributor(builder);
- }
-
- void configure_prioritize_global_bucket_merges(bool enabled) {
- ConfigBuilder builder;
- builder.prioritizeGlobalBucketMerges = enabled;
- configureDistributor(builder);
- }
-
- void configure_max_activation_inhibited_out_of_sync_groups(uint32_t n_groups) {
- ConfigBuilder builder;
- builder.maxActivationInhibitedOutOfSyncGroups = n_groups;
- configureDistributor(builder);
- }
-
- void configureMaxClusterClockSkew(int seconds);
- void replyToSingleRequestBucketInfoCommandWith1Bucket();
- void sendDownDummyRemoveCommand();
- void assertSingleBouncedRemoveReplyPresent();
- void assertNoMessageBounced();
- void configure_mutation_sequencing(bool enabled);
- void configure_merge_busy_inhibit_duration(int seconds);
- void do_test_pending_merge_getnodestate_reply_edge(BucketSpace space);
-
- void set_up_and_start_get_op_with_stale_reads_enabled(bool enabled);
-};
-
-LegacyDistributorTest::LegacyDistributorTest()
- : Test(),
- DistributorTestUtil(),
- _bucketSpaces()
-{
-}
-
-LegacyDistributorTest::~LegacyDistributorTest() = default;
-
-// Migrated to DistributorStripeTest
-TEST_F(LegacyDistributorTest, operation_generation) {
- setupDistributor(Redundancy(1), NodeCount(1), "storage:1 distributor:1");
-
- document::BucketId bid;
- addNodesToBucketDB(document::BucketId(16, 1), "0=1/1/1/t");
-
- EXPECT_EQ("Remove", testOp(std::make_shared<api::RemoveCommand>(
- makeDocumentBucket(bid),
- document::DocumentId("id:m:test:n=1:foo"),
- api::Timestamp(1234))));
-
- auto cmd = std::make_shared<api::CreateVisitorCommand>(makeBucketSpace(), "foo", "bar", "");
- cmd->addBucketToBeVisited(document::BucketId(16, 1));
- cmd->addBucketToBeVisited(document::BucketId());
-
- EXPECT_EQ("Visitor Create", testOp(cmd));
-}
-
-// Migrated to DistributorStripeTest
-TEST_F(LegacyDistributorTest, operations_generated_and_started_without_duplicates) {
- setupDistributor(Redundancy(1), NodeCount(1), "storage:1 distributor:1");
-
- for (uint32_t i = 0; i < 6; ++i) {
- addNodesToBucketDB(document::BucketId(16, i), "0=1");
- }
-
- tickDistributorNTimes(20);
-
- ASSERT_FALSE(tick());
-
- ASSERT_EQ(6, _sender.commands().size());
-}
-
-
-// Migrated to DistributorStripeTest
-// TODO STRIPE also need to impl/test cross-stripe cluster state changes
-TEST_F(LegacyDistributorTest, recovery_mode_on_cluster_state_change) {
- setupDistributor(Redundancy(1), NodeCount(2),
- "storage:1 .0.s:d distributor:1");
- enableDistributorClusterState("storage:1 distributor:1");
-
- EXPECT_TRUE(distributor_is_in_recovery_mode());
- for (uint32_t i = 0; i < 3; ++i) {
- addNodesToBucketDB(document::BucketId(16, i), "0=1");
- }
- for (int i = 0; i < 3; ++i) {
- tick();
- EXPECT_TRUE(distributor_is_in_recovery_mode());
- }
- tick();
- EXPECT_FALSE(distributor_is_in_recovery_mode());
-
- enableDistributorClusterState("storage:2 distributor:1");
- EXPECT_TRUE(distributor_is_in_recovery_mode());
-}
-
-// Migrated to DistributorStripeTest
-// TODO STRIPE how to throttle across stripes?
-TEST_F(LegacyDistributorTest, operations_are_throttled) {
- setupDistributor(Redundancy(1), NodeCount(1), "storage:1 distributor:1");
- getConfig().setMinPendingMaintenanceOps(1);
- getConfig().setMaxPendingMaintenanceOps(1);
-
- for (uint32_t i = 0; i < 6; ++i) {
- addNodesToBucketDB(document::BucketId(16, i), "0=1");
- }
- tickDistributorNTimes(20);
- ASSERT_EQ(1, _sender.commands().size());
-}
-
-// Migrated to DistributorStripeTest
-TEST_F(LegacyDistributorTest, handle_unknown_maintenance_reply) {
- setupDistributor(Redundancy(1), NodeCount(1), "storage:1 distributor:1");
-
- {
- auto cmd = std::make_shared<api::SplitBucketCommand>(makeDocumentBucket(document::BucketId(16, 1234)));
- auto reply = std::make_shared<api::SplitBucketReply>(*cmd);
- ASSERT_TRUE(_distributor->handleReply(reply));
- }
-
- {
- // RemoveLocationReply must be treated as a maintenance reply since
- // it's what GC is currently built around.
- auto cmd = std::make_shared<api::RemoveLocationCommand>(
- "false", makeDocumentBucket(document::BucketId(30, 1234)));
- auto reply = std::shared_ptr<api::StorageReply>(cmd->makeReply());
- ASSERT_TRUE(_distributor->handleReply(reply));
- }
-}
-
-// TODO STRIPE -> generic, non distr/stripe test
-TEST_F(LegacyDistributorTest, contains_time_statement) {
- setupDistributor(Redundancy(1), NodeCount(1), "storage:1 distributor:1");
-
- EXPECT_FALSE(getConfig().containsTimeStatement(""));
- EXPECT_FALSE(getConfig().containsTimeStatement("testdoctype1"));
- EXPECT_FALSE(getConfig().containsTimeStatement("testdoctype1.headerfield > 42"));
- EXPECT_TRUE(getConfig().containsTimeStatement("testdoctype1.headerfield > now()"));
- EXPECT_TRUE(getConfig().containsTimeStatement("testdoctype1.headerfield > now() - 3600"));
- EXPECT_TRUE(getConfig().containsTimeStatement("testdoctype1.headerfield == now() - 3600"));
-}
-
-// Migrated to DistributorStripeTest
-TEST_F(LegacyDistributorTest, update_bucket_database) {
- enableDistributorClusterState("distributor:1 storage:3");
-
- EXPECT_EQ("BucketId(0x4000000000000001) : "
- "node(idx=0,crc=0x1c8,docs=228/228,bytes=114/114,trusted=true,active=false,ready=false), "
- "node(idx=1,crc=0x1c8,docs=228/228,bytes=114/114,trusted=true,active=false,ready=false)",
- updateBucketDB("0:456,1:456,2:789", "2:r"));
-
- EXPECT_EQ("BucketId(0x4000000000000001) : "
- "node(idx=0,crc=0x1c8,docs=228/228,bytes=114/114,trusted=true,active=false,ready=false), "
- "node(idx=2,crc=0x1c8,docs=228/228,bytes=114/114,trusted=true,active=false,ready=false), "
- "node(idx=1,crc=0x1c8,docs=228/228,bytes=114/114,trusted=true,active=false,ready=false)",
- updateBucketDB("0:456,1:456", "2:456"));
-
- EXPECT_EQ("BucketId(0x4000000000000001) : "
- "node(idx=0,crc=0x315,docs=394/394,bytes=197/197,trusted=false,active=false,ready=false), "
- "node(idx=2,crc=0x14d,docs=166/166,bytes=83/83,trusted=false,active=false,ready=false), "
- "node(idx=1,crc=0x34a,docs=421/421,bytes=210/210,trusted=false,active=false,ready=false)",
- updateBucketDB("0:456:t,1:456:t,2:123", "0:789,1:842,2:333"));
-
- EXPECT_EQ("BucketId(0x4000000000000001) : "
- "node(idx=0,crc=0x315,docs=394/394,bytes=197/197,trusted=true,active=false,ready=false), "
- "node(idx=2,crc=0x14d,docs=166/166,bytes=83/83,trusted=false,active=false,ready=false), "
- "node(idx=1,crc=0x315,docs=394/394,bytes=197/197,trusted=true,active=false,ready=false)",
- updateBucketDB("0:456:t,1:456:t,2:123", "0:789,1:789,2:333"));
-
- EXPECT_EQ("BucketId(0x4000000000000001) : "
- "node(idx=2,crc=0x14d,docs=166/166,bytes=83/83,trusted=true,active=false,ready=false)",
- updateBucketDB("0:456:t,1:456:t", "0:r,1:r,2:333"));
-
- // Copies are in sync so should still be trusted even if explicitly reset.
- EXPECT_EQ("BucketId(0x4000000000000001) : "
- "node(idx=0,crc=0x1c8,docs=228/228,bytes=114/114,trusted=true,active=false,ready=false), "
- "node(idx=2,crc=0x1c8,docs=228/228,bytes=114/114,trusted=true,active=false,ready=false), "
- "node(idx=1,crc=0x1c8,docs=228/228,bytes=114/114,trusted=true,active=false,ready=false)",
- updateBucketDB("0:456,1:456", "2:456", ResetTrusted(true)));
-
- // When resetting, first inserted copy should not end up as implicitly trusted.
- EXPECT_EQ("BucketId(0x4000000000000001) : "
- "node(idx=0,crc=0x1c8,docs=228/228,bytes=114/114,trusted=false,active=false,ready=false), "
- "node(idx=2,crc=0x14d,docs=166/166,bytes=83/83,trusted=false,active=false,ready=false)",
- updateBucketDB("0:456", "2:333", ResetTrusted(true)));
-}
-
-namespace {
-
-using namespace framework::defaultimplementation;
-
-class StatusRequestThread : public framework::Runnable {
- StatusReporterDelegate& _reporter;
- std::string _result;
-public:
- explicit StatusRequestThread(StatusReporterDelegate& reporter)
- : _reporter(reporter)
- {}
- void run(framework::ThreadHandle&) override {
- framework::HttpUrlPath path("/distributor?page=buckets");
- std::ostringstream stream;
- _reporter.reportStatus(stream, path);
- _result = stream.str();
- }
-
- std::string getResult() const {
- return _result;
- }
-};
-
-}
-
-// TODO STRIPE -> stripe test
-// TODO STRIPE need to impl/test cross-stripe status requests
-TEST_F(LegacyDistributorTest, tick_processes_status_requests) {
- setupDistributor(Redundancy(1), NodeCount(1), "storage:1 distributor:1");
-
- addNodesToBucketDB(document::BucketId(16, 1), "0=1/1/1/t");
-
- // Must go via delegate since reportStatus is now just a rendering
- // function and not a request enqueuer (see Distributor::handleStatusRequest).
- StatusRequestThread thread(distributor_status_delegate());
- FakeClock clock;
- ThreadPoolImpl pool(clock);
- int ticksBeforeWait = 1;
- framework::Thread::UP tp(pool.startThread(thread, "statustest", 5ms, 5s, ticksBeforeWait));
-
- while (true) {
- std::this_thread::sleep_for(1ms);
- framework::TickingLockGuard guard(distributor_thread_pool().freezeCriticalTicks());
- if (!distributor_status_todos().empty()) {
- break;
- }
-
- }
- ASSERT_TRUE(tick());
-
- tp->interruptAndJoin();
-
- EXPECT_THAT(thread.getResult(), HasSubstr("BucketId(0x4000000000000001)"));
-}
-
-// TODO STRIPE -> distributor test since it owns metric hook
-// TODO STRIPE need to impl/test cross-stripe metrics aggregation
-TEST_F(LegacyDistributorTest, metric_update_hook_updates_pending_maintenance_metrics) {
- setupDistributor(Redundancy(2), NodeCount(2), "storage:2 distributor:1");
- // To ensure we count all operations, not just those fitting within the
- // pending window.
- getConfig().setMinPendingMaintenanceOps(1);
- getConfig().setMaxPendingMaintenanceOps(1);
-
- // 1 bucket must be merged, 1 must be split, 1 should be activated.
- addNodesToBucketDB(document::BucketId(16, 1), "0=2/2/2/t/a,1=1/1/1");
- addNodesToBucketDB(document::BucketId(16, 2),
- "0=100/10000000/200000/t/a,1=100/10000000/200000/t");
- addNodesToBucketDB(document::BucketId(16, 3),
- "0=200/300/400/t,1=200/300/400/t");
-
- // Go many full scanner rounds to check that metrics are set, not
- // added to existing.
- tickDistributorNTimes(50);
-
- // By this point, no hook has been called so the metrics have not been
- // set.
- using MO = MaintenanceOperation;
- {
- const IdealStateMetricSet& metrics(getIdealStateManager().getMetrics());
- EXPECT_EQ(0, metrics.operations[MO::MERGE_BUCKET]->pending.getLast());
- EXPECT_EQ(0, metrics.operations[MO::SPLIT_BUCKET]->pending.getLast());
- EXPECT_EQ(0, metrics.operations[MO::SET_BUCKET_STATE]->pending.getLast());
- EXPECT_EQ(0, metrics.operations[MO::DELETE_BUCKET]->pending.getLast());
- EXPECT_EQ(0, metrics.operations[MO::JOIN_BUCKET]->pending.getLast());
- EXPECT_EQ(0, metrics.operations[MO::GARBAGE_COLLECTION]->pending.getLast());
- }
-
- // Force trigger update hook
- std::mutex l;
- distributor_metric_update_hook().updateMetrics(metrics::MetricLockGuard(l));
- // Metrics should now be updated to the last complete working state
- {
- const IdealStateMetricSet& metrics(getIdealStateManager().getMetrics());
- EXPECT_EQ(1, metrics.operations[MO::MERGE_BUCKET]->pending.getLast());
- EXPECT_EQ(1, metrics.operations[MO::SPLIT_BUCKET]->pending.getLast());
- EXPECT_EQ(1, metrics.operations[MO::SET_BUCKET_STATE]->pending.getLast());
- EXPECT_EQ(0, metrics.operations[MO::DELETE_BUCKET]->pending.getLast());
- EXPECT_EQ(0, metrics.operations[MO::JOIN_BUCKET]->pending.getLast());
- EXPECT_EQ(0, metrics.operations[MO::GARBAGE_COLLECTION]->pending.getLast());
- }
-}
-
-// TODO STRIPE -> distributor test since it uses the distributor metric update hook
-TEST_F(LegacyDistributorTest, bucket_db_memory_usage_metrics_only_updated_at_fixed_time_intervals) {
- getClock().setAbsoluteTimeInSeconds(1000);
-
- setupDistributor(Redundancy(2), NodeCount(2), "storage:2 distributor:1");
- addNodesToBucketDB(document::BucketId(16, 1), "0=1/1/1/t/a,1=2/2/2");
- tickDistributorNTimes(10);
-
- std::mutex l;
- distributor_metric_update_hook().updateMetrics(metrics::MetricLockGuard(l));
- auto* m = getDistributor().getMetrics().mutable_dbs.memory_usage.getMetric("used_bytes");
- ASSERT_TRUE(m != nullptr);
- auto last_used = m->getLongValue("last");
- EXPECT_GT(last_used, 0);
-
- // Add another bucket to the DB. This should increase the underlying used number of
- // bytes, but this should not be aggregated into the metrics until the sampling time
- // interval has passed. Instead, old metric gauge values should be preserved.
- addNodesToBucketDB(document::BucketId(16, 2), "0=1/1/1/t/a,1=2/2/2");
-
- const auto sample_interval_sec = db_sample_interval_sec();
- getClock().setAbsoluteTimeInSeconds(1000 + sample_interval_sec - 1); // Not there yet.
- tickDistributorNTimes(50);
- distributor_metric_update_hook().updateMetrics(metrics::MetricLockGuard(l));
-
- m = getDistributor().getMetrics().mutable_dbs.memory_usage.getMetric("used_bytes");
- auto now_used = m->getLongValue("last");
- EXPECT_EQ(now_used, last_used);
-
- getClock().setAbsoluteTimeInSeconds(1000 + sample_interval_sec + 1);
- tickDistributorNTimes(10);
- distributor_metric_update_hook().updateMetrics(metrics::MetricLockGuard(l));
-
- m = getDistributor().getMetrics().mutable_dbs.memory_usage.getMetric("used_bytes");
- now_used = m->getLongValue("last");
- EXPECT_GT(now_used, last_used);
-}
-
-// Migrated to DistributorStripeTest
-// TODO STRIPE need to impl/test cross-stripe config propagation
-TEST_F(LegacyDistributorTest, priority_config_is_propagated_to_distributor_configuration) {
- using namespace vespa::config::content::core;
-
- setupDistributor(Redundancy(2), NodeCount(2), "storage:2 distributor:1");
-
- ConfigBuilder builder;
- builder.priorityMergeMoveToIdealNode = 1;
- builder.priorityMergeOutOfSyncCopies = 2;
- builder.priorityMergeTooFewCopies = 3;
- builder.priorityActivateNoExistingActive = 4;
- builder.priorityActivateWithExistingActive = 5;
- builder.priorityDeleteBucketCopy = 6;
- builder.priorityJoinBuckets = 7;
- builder.prioritySplitDistributionBits = 8;
- builder.prioritySplitLargeBucket = 9;
- builder.prioritySplitInconsistentBucket = 10;
- builder.priorityGarbageCollection = 11;
- builder.priorityMergeGlobalBuckets = 12;
-
- getConfig().configure(builder);
-
- const auto& mp = getConfig().getMaintenancePriorities();
- EXPECT_EQ(1, static_cast<int>(mp.mergeMoveToIdealNode));
- EXPECT_EQ(2, static_cast<int>(mp.mergeOutOfSyncCopies));
- EXPECT_EQ(3, static_cast<int>(mp.mergeTooFewCopies));
- EXPECT_EQ(4, static_cast<int>(mp.activateNoExistingActive));
- EXPECT_EQ(5, static_cast<int>(mp.activateWithExistingActive));
- EXPECT_EQ(6, static_cast<int>(mp.deleteBucketCopy));
- EXPECT_EQ(7, static_cast<int>(mp.joinBuckets));
- EXPECT_EQ(8, static_cast<int>(mp.splitDistributionBits));
- EXPECT_EQ(9, static_cast<int>(mp.splitLargeBucket));
- EXPECT_EQ(10, static_cast<int>(mp.splitInconsistentBucket));
- EXPECT_EQ(11, static_cast<int>(mp.garbageCollection));
- EXPECT_EQ(12, static_cast<int>(mp.mergeGlobalBuckets));
-}
-
-// TODO STRIPE -> stripe test (that sets pending cluster state directly)
-// TODO STRIPE -> distributor test (that uses top-level BucketDBUpdater::onSetSystemState)
-TEST_F(LegacyDistributorTest, no_db_resurrection_for_bucket_not_owned_in_pending_state) {
- setupDistributor(Redundancy(1), NodeCount(10), "storage:2 distributor:2");
- lib::ClusterState newState("storage:10 distributor:10");
- auto stateCmd = std::make_shared<api::SetSystemStateCommand>(newState);
- // Force newState into being the pending state. According to the initial
- // state we own the bucket, but according to the pending state, we do
- // not. This must be handled correctly by the database update code.
- getBucketDBUpdater().onSetSystemState(stateCmd);
-
- document::BucketId nonOwnedBucket(16, 3);
- EXPECT_FALSE(getDistributorBucketSpace().get_bucket_ownership_flags(nonOwnedBucket).owned_in_pending_state());
- EXPECT_FALSE(getDistributorBucketSpace().check_ownership_in_pending_and_current_state(nonOwnedBucket).isOwned());
-
- std::vector<BucketCopy> copies;
- copies.emplace_back(1234, 0, api::BucketInfo(0x567, 1, 2));
- operation_context().update_bucket_database(makeDocumentBucket(nonOwnedBucket), copies,
- DatabaseUpdate::CREATE_IF_NONEXISTING);
-
- EXPECT_EQ("NONEXISTING", dumpBucket(nonOwnedBucket));
-}
-
-// Migrated to DistributorStripeTest
-TEST_F(LegacyDistributorTest, added_db_buckets_without_gc_timestamp_implicitly_get_current_time) {
- setupDistributor(Redundancy(1), NodeCount(10), "storage:2 distributor:2");
- getClock().setAbsoluteTimeInSeconds(101234);
- document::BucketId bucket(16, 7654);
-
- std::vector<BucketCopy> copies;
- copies.emplace_back(1234, 0, api::BucketInfo(0x567, 1, 2));
- operation_context().update_bucket_database(makeDocumentBucket(bucket), copies,
- DatabaseUpdate::CREATE_IF_NONEXISTING);
- BucketDatabase::Entry e(getBucket(bucket));
- EXPECT_EQ(101234, e->getLastGarbageCollectionTime());
-}
-
-// Migrated to DistributorStripeTest
-TEST_F(LegacyDistributorTest, merge_stats_are_accumulated_during_database_iteration) {
- setupDistributor(Redundancy(2), NodeCount(3), "storage:3 distributor:1");
- // Copies out of sync. Not possible for distributor to _reliably_ tell
- // which direction(s) data will flow, so for simplicity assume that we
- // must sync both copies.
- // Note that we mark certain copies as active to prevent the bucketstate
- // checker from pre-empting the merges.
- // -> syncing[0] += 1, syncing[2] += 1
- addNodesToBucketDB(document::BucketId(16, 1), "0=1/1/1/t/a,2=2/2/2");
- // Must add missing node 2 for bucket
- // -> copyingOut[0] += 1, copyingIn[2] += 1
- addNodesToBucketDB(document::BucketId(16, 2), "0=1/1/1/t/a");
- // Moving from non-ideal node 1 to ideal node 2. Both nodes 0 and 1 will
- // be involved in this merge, but only node 1 will be tagged as source only
- // (i.e. to be deleted after the merge is completed).
- // -> copyingOut[0] += 1, movingOut[1] += 1, copyingIn[2] += 1
- addNodesToBucketDB(document::BucketId(16, 3), "0=2/2/2/t/a,1=2/2/2/t");
-
- // Go many full scanner rounds to check that stats are set, not
- // added to existing.
- tickDistributorNTimes(50);
-
- const auto& stats = distributor_maintenance_stats();
- {
- NodeMaintenanceStats wanted;
- wanted.syncing = 1;
- wanted.copyingOut = 2;
- wanted.total = 3;
- EXPECT_EQ(wanted, stats.perNodeStats.forNode(0, makeBucketSpace()));
- }
- {
- NodeMaintenanceStats wanted;
- wanted.movingOut = 1;
- wanted.total = 1;
- EXPECT_EQ(wanted, stats.perNodeStats.forNode(1, makeBucketSpace()));
- }
- {
- NodeMaintenanceStats wanted;
- wanted.syncing = 1;
- wanted.copyingIn = 2;
- wanted.total = 1;
- EXPECT_EQ(wanted, stats.perNodeStats.forNode(2, makeBucketSpace()));
- }
- auto bucketStats = distributor_bucket_spaces_stats();
- ASSERT_EQ(3, bucketStats.size());
- assertBucketSpaceStats(1, 3, 0, "default", bucketStats);
- assertBucketSpaceStats(0, 1, 1, "default", bucketStats);
- assertBucketSpaceStats(3, 1, 2, "default", bucketStats);
-}
-
-void
-LegacyDistributorTest::assertBucketSpaceStats(size_t expBucketPending, size_t expBucketTotal, uint16_t node,
- const vespalib::string& bucketSpace,
- const BucketSpacesStatsProvider::PerNodeBucketSpacesStats& stats)
-{
- auto nodeItr = stats.find(node);
- ASSERT_TRUE(nodeItr != stats.end());
- ASSERT_EQ(1, nodeItr->second.size());
- auto bucketSpaceItr = nodeItr->second.find(bucketSpace);
- ASSERT_TRUE(bucketSpaceItr != nodeItr->second.end());
- ASSERT_TRUE(bucketSpaceItr->second.valid());
- ASSERT_EQ(expBucketTotal, bucketSpaceItr->second.bucketsTotal());
- ASSERT_EQ(expBucketPending, bucketSpaceItr->second.bucketsPending());
-}
-
-/**
- * Since maintenance operations are prioritized differently, activation
- * pre-empts merging and other ops. If this also implies pre-empting running
- * their state checkers at all, we won't get any statistics from any other
- * operations for the bucket.
- */
-// Migrated to DistributorStripeTest
-TEST_F(LegacyDistributorTest, stats_generated_for_preempted_operations) {
- setupDistributor(Redundancy(2), NodeCount(2), "storage:2 distributor:1");
- // For this test it suffices to have a single bucket with multiple aspects
- // wrong about it. In this case, let a bucket be both out of sync _and_
- // missing an active copy. This _should_ give a statistic with both nodes 0
- // and 1 requiring a sync. If instead merge stats generation is preempted
- // by activation, we'll see no merge stats at all.
- addNodesToBucketDB(document::BucketId(16, 1), "0=1/1/1,1=2/2/2");
- tickDistributorNTimes(50);
- const auto& stats = distributor_maintenance_stats();
- {
- NodeMaintenanceStats wanted;
- wanted.syncing = 1;
- wanted.total = 1;
- EXPECT_EQ(wanted, stats.perNodeStats.forNode(0, makeBucketSpace()));
- }
- {
- NodeMaintenanceStats wanted;
- wanted.syncing = 1;
- wanted.total = 1;
- EXPECT_EQ(wanted, stats.perNodeStats.forNode(1, makeBucketSpace()));
- }
-}
-
-// TODO STRIPE -> distributor test
-TEST_F(LegacyDistributorTest, host_info_reporter_config_is_propagated_to_reporter) {
- setupDistributor(Redundancy(2), NodeCount(2), "storage:2 distributor:1");
-
- // Default is enabled=true.
- EXPECT_TRUE(distributor_host_info_reporter().isReportingEnabled());
-
- ConfigBuilder builder;
- builder.enableHostInfoReporting = false;
- configureDistributor(builder);
-
- EXPECT_FALSE(distributor_host_info_reporter().isReportingEnabled());
-}
-
-// Migrated to DistributorStripeTest
-TEST_F(LegacyDistributorTest, replica_counting_mode_is_configured_to_trusted_by_default) {
- setupDistributor(Redundancy(2), NodeCount(2), "storage:2 distributor:1");
- EXPECT_EQ(ConfigBuilder::MinimumReplicaCountingMode::TRUSTED, currentReplicaCountingMode());
-}
-
-// Migrated to DistributorStripeTest
-TEST_F(LegacyDistributorTest, replica_counting_mode_config_is_propagated_to_metric_updater) {
- setupDistributor(Redundancy(2), NodeCount(2), "storage:2 distributor:1");
- ConfigBuilder builder;
- builder.minimumReplicaCountingMode = ConfigBuilder::MinimumReplicaCountingMode::ANY;
- configureDistributor(builder);
- EXPECT_EQ(ConfigBuilder::MinimumReplicaCountingMode::ANY, currentReplicaCountingMode());
-}
-
-// Migrated to DistributorStripeTest
-TEST_F(LegacyDistributorTest, max_consecutively_inhibited_maintenance_ticks_config_is_propagated_to_internal_config) {
- setupDistributor(Redundancy(2), NodeCount(2), "storage:2 distributor:1");
- ConfigBuilder builder;
- builder.maxConsecutivelyInhibitedMaintenanceTicks = 123;
- getConfig().configure(builder);
- EXPECT_EQ(getConfig().max_consecutively_inhibited_maintenance_ticks(), 123);
-}
-
-// Migrated to DistributorStripeTest
-TEST_F(LegacyDistributorTest, bucket_activation_is_enabled_by_default) {
- setupDistributor(Redundancy(2), NodeCount(2), "storage:2 distributor:1");
- EXPECT_FALSE(getConfig().isBucketActivationDisabled());
-}
-
-// Migrated to DistributorStripeTest
-TEST_F(LegacyDistributorTest, bucket_activation_config_is_propagated_to_distributor_configuration) {
- using namespace vespa::config::content::core;
-
- setupDistributor(Redundancy(2), NodeCount(2), "storage:2 distributor:1");
-
- ConfigBuilder builder;
- builder.disableBucketActivation = true;
- getConfig().configure(builder);
-
- EXPECT_TRUE(getConfig().isBucketActivationDisabled());
-}
-
-void
-LegacyDistributorTest::configureMaxClusterClockSkew(int seconds) {
- using namespace vespa::config::content::core;
-
- ConfigBuilder builder;
- builder.maxClusterClockSkewSec = seconds;
- getConfig().configure(builder);
- _distributor->enableNextConfig();
-}
-
-// Migrated to DistributorStripeTest
-TEST_F(LegacyDistributorTest, max_clock_skew_config_is_propagated_to_distributor_config) {
- setupDistributor(Redundancy(2), NodeCount(2), "storage:2 distributor:1");
-
- configureMaxClusterClockSkew(5);
- EXPECT_EQ(getConfig().getMaxClusterClockSkew(), std::chrono::seconds(5));
-}
-
-namespace {
-
-auto makeDummyRemoveCommand() {
- return std::make_shared<api::RemoveCommand>(
- makeDocumentBucket(document::BucketId(0)),
- document::DocumentId("id:foo:testdoctype1:n=1:foo"),
- api::Timestamp(0));
-}
-
-auto make_dummy_get_command_for_bucket_1() {
- return std::make_shared<api::GetCommand>(
- makeDocumentBucket(document::BucketId(0)),
- document::DocumentId("id:foo:testdoctype1:n=1:foo"),
- document::AllFields::NAME);
-}
-
-}
-
-void LegacyDistributorTest::replyToSingleRequestBucketInfoCommandWith1Bucket() {
- ASSERT_EQ(_bucketSpaces.size(), _sender.commands().size());
- for (uint32_t i = 0; i < _sender.commands().size(); ++i) {
- ASSERT_EQ(api::MessageType::REQUESTBUCKETINFO, _sender.command(i)->getType());
- auto& bucketReq(static_cast<api::RequestBucketInfoCommand&>
- (*_sender.command(i)));
- auto bucketReply = bucketReq.makeReply();
- if (bucketReq.getBucketSpace() == FixedBucketSpaces::default_space()) {
- // Make sure we have a bucket to route our remove op to, or we'd get
- // an immediate reply anyway.
- dynamic_cast<api::RequestBucketInfoReply&>(*bucketReply)
- .getBucketInfo().push_back(
- api::RequestBucketInfoReply::Entry(document::BucketId(1, 1),
- api::BucketInfo(20, 10, 12, 50, 60, true, true)));
- }
- _distributor->handleMessage(std::move(bucketReply));
- }
- _sender.commands().clear();
-}
-
-void LegacyDistributorTest::sendDownDummyRemoveCommand() {
- _distributor->handleMessage(makeDummyRemoveCommand());
-}
-
-void LegacyDistributorTest::assertSingleBouncedRemoveReplyPresent() {
- ASSERT_EQ(1, _sender.replies().size()); // Rejected remove
- ASSERT_EQ(api::MessageType::REMOVE_REPLY, _sender.reply(0)->getType());
- auto& reply(static_cast<api::RemoveReply&>(*_sender.reply(0)));
- ASSERT_EQ(api::ReturnCode::STALE_TIMESTAMP, reply.getResult().getResult());
- _sender.replies().clear();
-}
-
-void LegacyDistributorTest::assertNoMessageBounced() {
- ASSERT_EQ(0, _sender.replies().size());
-}
-
-// TODO refactor this to set proper highest timestamp as part of bucket info
-// reply once we have the "highest timestamp across all owned buckets" feature
-// in place.
-// TODO STRIPE where does this truly belong?
-TEST_F(LegacyDistributorTest, configured_safe_time_point_rejection_works_end_to_end) {
- setupDistributor(Redundancy(2), NodeCount(2),
- "bits:1 storage:1 distributor:2");
- getClock().setAbsoluteTimeInSeconds(1000);
- configureMaxClusterClockSkew(10);
-
- receive_set_system_state_command("bits:1 storage:1 distributor:1");
- ASSERT_NO_FATAL_FAILURE(replyToSingleRequestBucketInfoCommandWith1Bucket());
- // SetSystemStateCommand sent down chain at this point.
- sendDownDummyRemoveCommand();
- ASSERT_NO_FATAL_FAILURE(assertSingleBouncedRemoveReplyPresent());
-
- // Increment time to first whole second of clock + 10 seconds of skew.
- // Should now not get any feed rejections.
- getClock().setAbsoluteTimeInSeconds(1011);
-
- sendDownDummyRemoveCommand();
- ASSERT_NO_FATAL_FAILURE(assertNoMessageBounced());
-}
-
-void LegacyDistributorTest::configure_mutation_sequencing(bool enabled) {
- using namespace vespa::config::content::core;
-
- ConfigBuilder builder;
- builder.sequenceMutatingOperations = enabled;
- getConfig().configure(builder);
- _distributor->enableNextConfig();
-}
-
-// Migrated to DistributorStripeTest
-TEST_F(LegacyDistributorTest, sequencing_config_is_propagated_to_distributor_config) {
- setupDistributor(Redundancy(2), NodeCount(2), "storage:2 distributor:1");
-
- // Should be enabled by default
- EXPECT_TRUE(getConfig().getSequenceMutatingOperations());
-
- // Explicitly disabled.
- configure_mutation_sequencing(false);
- EXPECT_FALSE(getConfig().getSequenceMutatingOperations());
-
- // Explicitly enabled.
- configure_mutation_sequencing(true);
- EXPECT_TRUE(getConfig().getSequenceMutatingOperations());
-}
-
-void
-LegacyDistributorTest::configure_merge_busy_inhibit_duration(int seconds) {
- using namespace vespa::config::content::core;
-
- ConfigBuilder builder;
- builder.inhibitMergeSendingOnBusyNodeDurationSec = seconds;
- getConfig().configure(builder);
- _distributor->enableNextConfig();
-}
-
-// Migrated to DistributorStripeTest
-TEST_F(LegacyDistributorTest, merge_busy_inhibit_duration_config_is_propagated_to_distributor_config) {
- setupDistributor(Redundancy(2), NodeCount(2), "storage:2 distributor:1");
-
- configure_merge_busy_inhibit_duration(7);
- EXPECT_EQ(getConfig().getInhibitMergesOnBusyNodeDuration(), std::chrono::seconds(7));
-}
-
-// Migrated to DistributorStripeTest
-TEST_F(LegacyDistributorTest, merge_busy_inhibit_duration_is_propagated_to_pending_message_tracker) {
- setupDistributor(Redundancy(2), NodeCount(2), "storage:1 distributor:1");
- addNodesToBucketDB(document::BucketId(16, 1), "0=1/1/1/t");
-
- configure_merge_busy_inhibit_duration(100);
- auto cmd = makeDummyRemoveCommand(); // Remove is for bucket 1
- distributor_handle_message(cmd);
-
- // Should send to content node 0
- ASSERT_EQ(1, _sender.commands().size());
- ASSERT_EQ(api::MessageType::REMOVE, _sender.command(0)->getType());
- auto& fwd_cmd = dynamic_cast<api::RemoveCommand&>(*_sender.command(0));
- auto reply = fwd_cmd.makeReply();
- reply->setResult(api::ReturnCode(api::ReturnCode::BUSY));
- _distributor->handleReply(std::shared_ptr<api::StorageReply>(std::move(reply)));
-
- auto& node_info = pending_message_tracker().getNodeInfo();
-
- EXPECT_TRUE(node_info.isBusy(0));
- getClock().addSecondsToTime(99);
- EXPECT_TRUE(node_info.isBusy(0));
- getClock().addSecondsToTime(2);
- EXPECT_FALSE(node_info.isBusy(0));
-}
-
-// Migrated to DistributorStripeTest
-TEST_F(LegacyDistributorTest, external_client_requests_are_handled_individually_in_priority_order) {
- setupDistributor(Redundancy(1), NodeCount(1), "storage:1 distributor:1");
- addNodesToBucketDB(document::BucketId(16, 1), "0=1/1/1/t/a");
-
- std::vector<api::StorageMessage::Priority> priorities({50, 255, 10, 40, 0});
- document::DocumentId id("id:foo:testdoctype1:n=1:foo");
- vespalib::stringref field_set = "";
- for (auto pri : priorities) {
- auto cmd = std::make_shared<api::GetCommand>(makeDocumentBucket(document::BucketId()), id, field_set);
- cmd->setPriority(pri);
- // onDown appends to internal message FIFO queue, awaiting hand-off.
- _distributor->onDown(cmd);
- }
- // At the hand-off point we expect client requests to be prioritized.
- // For each tick, a priority-order client request is processed and sent off.
- for (size_t i = 1; i <= priorities.size(); ++i) {
- tickDistributorNTimes(1);
- ASSERT_EQ(i, _sender.commands().size());
- }
-
- std::vector<int> expected({0, 10, 40, 50, 255});
- std::vector<int> actual;
- for (auto& msg : _sender.commands()) {
- actual.emplace_back(static_cast<int>(msg->getPriority()));
- }
- EXPECT_THAT(actual, ContainerEq(expected));
-}
-
-// Migrated to DistributorStripeTest
-TEST_F(LegacyDistributorTest, internal_messages_are_started_in_fifo_order_batch) {
- // To test internal request ordering, we use NotifyBucketChangeCommand
- // for the reason that it explicitly updates the bucket database for
- // each individual invocation.
- setupDistributor(Redundancy(1), NodeCount(1), "storage:1 distributor:1");
- document::BucketId bucket(16, 1);
- addNodesToBucketDB(bucket, "0=1/1/1/t");
-
- std::vector<api::StorageMessage::Priority> priorities({50, 255, 10, 40, 1});
- for (auto pri : priorities) {
- api::BucketInfo fake_info(pri, pri, pri);
- auto cmd = std::make_shared<api::NotifyBucketChangeCommand>(makeDocumentBucket(bucket), fake_info);
- cmd->setSourceIndex(0);
- cmd->setPriority(pri);
- _distributor->onDown(cmd);
- }
-
- // Doing a single tick should process all internal requests in one batch
- tickDistributorNTimes(1);
- ASSERT_EQ(5, _sender.replies().size());
-
- // The bucket info for priority 1 (last FIFO-order change command received, but
- // highest priority) should be the end-state of the bucket database, _not_ that
- // of lowest priority 255.
- BucketDatabase::Entry e(getBucket(bucket));
- EXPECT_EQ(api::BucketInfo(1, 1, 1), e.getBucketInfo().getNode(0)->getBucketInfo());
-}
-
-// Migrated to DistributorStripeTest
-// TODO STRIPE also test that closing distributor closes stripes
-TEST_F(LegacyDistributorTest, closing_aborts_priority_queued_client_requests) {
- setupDistributor(Redundancy(1), NodeCount(1), "storage:1 distributor:1");
- document::BucketId bucket(16, 1);
- addNodesToBucketDB(bucket, "0=1/1/1/t");
-
- document::DocumentId id("id:foo:testdoctype1:n=1:foo");
- vespalib::stringref field_set = "";
- for (int i = 0; i < 10; ++i) {
- auto cmd = std::make_shared<api::GetCommand>(makeDocumentBucket(document::BucketId()), id, field_set);
- _distributor->onDown(cmd);
- }
- tickDistributorNTimes(1);
- // Closing should trigger 1 abort via startet GetOperation and 9 aborts from pri queue
- _distributor->close();
- ASSERT_EQ(10, _sender.replies().size());
- for (auto& msg : _sender.replies()) {
- EXPECT_EQ(api::ReturnCode::ABORTED, dynamic_cast<api::StorageReply&>(*msg).getResult().getResult());
- }
-}
-
-namespace {
-
-void assert_invalid_stats_for_all_spaces(
- const BucketSpacesStatsProvider::PerNodeBucketSpacesStats& stats,
- uint16_t node_index) {
- auto stats_iter = stats.find(node_index);
- ASSERT_TRUE(stats_iter != stats.cend());
- ASSERT_EQ(2, stats_iter->second.size());
- auto space_iter = stats_iter->second.find(document::FixedBucketSpaces::default_space_name());
- ASSERT_TRUE(space_iter != stats_iter->second.cend());
- ASSERT_FALSE(space_iter->second.valid());
- space_iter = stats_iter->second.find(document::FixedBucketSpaces::global_space_name());
- ASSERT_TRUE(space_iter != stats_iter->second.cend());
- ASSERT_FALSE(space_iter->second.valid());
-}
-
-}
-
-// Migrated to DistributorStripeTest
-// TODO STRIPE must impl/test cross-stripe bucket space stats
-// TODO STRIPE cross-stripe recovery mode handling how?
-TEST_F(LegacyDistributorTest, entering_recovery_mode_resets_bucket_space_stats) {
- // Set up a cluster state + DB contents which implies merge maintenance ops
- setupDistributor(Redundancy(2), NodeCount(2), "version:1 distributor:1 storage:2");
- addNodesToBucketDB(document::BucketId(16, 1), "0=1/1/1/t/a");
- addNodesToBucketDB(document::BucketId(16, 2), "0=1/1/1/t/a");
- addNodesToBucketDB(document::BucketId(16, 3), "0=2/2/2/t/a");
-
- tickDistributorNTimes(5); // 1/3rds into second round through database
-
- enableDistributorClusterState("version:2 distributor:1 storage:3 .1.s:d");
- EXPECT_TRUE(distributor_is_in_recovery_mode());
- // Bucket space stats should now be invalid per space per node, pending stats
- // from state version 2. Exposing stats from version 1 risks reporting stale
- // information back to the cluster controller.
- const auto stats = distributor_bucket_spaces_stats();
- ASSERT_EQ(2, stats.size());
-
- assert_invalid_stats_for_all_spaces(stats, 0);
- assert_invalid_stats_for_all_spaces(stats, 2);
-}
-
-// TODO STRIPE figure out interaction between stripes and distributors on this one
-TEST_F(LegacyDistributorTest, leaving_recovery_mode_immediately_sends_getnodestate_replies) {
- setupDistributor(Redundancy(2), NodeCount(2), "version:1 distributor:1 storage:2");
- // Should not send explicit replies during init stage
- ASSERT_EQ(0, explicit_node_state_reply_send_invocations());
- // Add a couple of buckets so we have something to iterate over
- addNodesToBucketDB(document::BucketId(16, 1), "0=1/1/1/t/a");
- addNodesToBucketDB(document::BucketId(16, 2), "0=1/1/1/t/a");
-
- enableDistributorClusterState("version:2 distributor:1 storage:3 .1.s:d");
- EXPECT_TRUE(distributor_is_in_recovery_mode());
- EXPECT_EQ(0, explicit_node_state_reply_send_invocations());
- tickDistributorNTimes(1); // DB round not yet complete
- EXPECT_EQ(0, explicit_node_state_reply_send_invocations());
- tickDistributorNTimes(2); // DB round complete after 2nd bucket + "scan done" discovery tick
- EXPECT_EQ(1, explicit_node_state_reply_send_invocations());
- EXPECT_FALSE(distributor_is_in_recovery_mode());
- // Now out of recovery mode, subsequent round completions should not send replies
- tickDistributorNTimes(10);
- EXPECT_EQ(1, explicit_node_state_reply_send_invocations());
-}
-
-void LegacyDistributorTest::do_test_pending_merge_getnodestate_reply_edge(BucketSpace space) {
- setupDistributor(Redundancy(2), NodeCount(2), "version:1 distributor:1 storage:2");
- EXPECT_TRUE(distributor_is_in_recovery_mode());
- // 2 buckets with missing replicas triggering merge pending stats
- addNodesToBucketDB(Bucket(space, BucketId(16, 1)), "0=1/1/1/t/a");
- addNodesToBucketDB(Bucket(space, BucketId(16, 2)), "0=1/1/1/t/a");
- tickDistributorNTimes(3);
- EXPECT_FALSE(distributor_is_in_recovery_mode());
- const auto space_name = FixedBucketSpaces::to_string(space);
- assertBucketSpaceStats(2, 0, 1, space_name, _distributor->getBucketSpacesStats());
- // First completed scan sends off merge stats et al to cluster controller
- EXPECT_EQ(1, explicit_node_state_reply_send_invocations());
-
- // Edge not triggered when 1 bucket with missing replica left
- addNodesToBucketDB(Bucket(space, BucketId(16, 1)), "0=1/1/1/t/a,1=1/1/1/t");
- tickDistributorNTimes(3);
- assertBucketSpaceStats(1, 1, 1, space_name, _distributor->getBucketSpacesStats());
- EXPECT_EQ(1, explicit_node_state_reply_send_invocations());
-
- // Edge triggered when no more buckets with requiring merge
- addNodesToBucketDB(Bucket(space, BucketId(16, 2)), "0=1/1/1/t/a,1=1/1/1/t");
- tickDistributorNTimes(3);
- assertBucketSpaceStats(0, 2, 1, space_name, _distributor->getBucketSpacesStats());
- EXPECT_EQ(2, explicit_node_state_reply_send_invocations());
-
- // Should only send when edge happens, not in subsequent DB iterations
- tickDistributorNTimes(10);
- EXPECT_EQ(2, explicit_node_state_reply_send_invocations());
-
- // Going back to merges pending should _not_ send a getnodestate reply (at least for now)
- addNodesToBucketDB(Bucket(space, BucketId(16, 1)), "0=1/1/1/t/a");
- tickDistributorNTimes(3);
- assertBucketSpaceStats(1, 1, 1, space_name, _distributor->getBucketSpacesStats());
- EXPECT_EQ(2, explicit_node_state_reply_send_invocations());
-}
-
-TEST_F(LegacyDistributorTest, pending_to_no_pending_default_merges_edge_immediately_sends_getnodestate_replies) {
- do_test_pending_merge_getnodestate_reply_edge(FixedBucketSpaces::default_space());
-}
-
-TEST_F(LegacyDistributorTest, pending_to_no_pending_global_merges_edge_immediately_sends_getnodestate_replies) {
- do_test_pending_merge_getnodestate_reply_edge(FixedBucketSpaces::global_space());
-}
-
-TEST_F(LegacyDistributorTest, stale_reads_config_is_propagated_to_external_operation_handler) {
- createLinks();
- setupDistributor(Redundancy(1), NodeCount(1), "distributor:1 storage:1");
-
- configure_stale_reads_enabled(true);
- EXPECT_TRUE(getExternalOperationHandler().concurrent_gets_enabled());
-
- configure_stale_reads_enabled(false);
- EXPECT_FALSE(getExternalOperationHandler().concurrent_gets_enabled());
-}
-
-TEST_F(LegacyDistributorTest, fast_path_on_consistent_gets_config_is_propagated_to_internal_config) {
- createLinks();
- setupDistributor(Redundancy(1), NodeCount(1), "distributor:1 storage:1");
-
- configure_update_fast_path_restart_enabled(true);
- EXPECT_TRUE(getConfig().update_fast_path_restart_enabled());
-
- configure_update_fast_path_restart_enabled(false);
- EXPECT_FALSE(getConfig().update_fast_path_restart_enabled());
-}
-
-TEST_F(LegacyDistributorTest, merge_disabling_config_is_propagated_to_internal_config) {
- createLinks();
- setupDistributor(Redundancy(1), NodeCount(1), "distributor:1 storage:1");
-
- configure_merge_operations_disabled(true);
- EXPECT_TRUE(getConfig().merge_operations_disabled());
-
- configure_merge_operations_disabled(false);
- EXPECT_FALSE(getConfig().merge_operations_disabled());
-}
-
-TEST_F(LegacyDistributorTest, metadata_update_phase_config_is_propagated_to_internal_config) {
- createLinks();
- setupDistributor(Redundancy(1), NodeCount(1), "distributor:1 storage:1");
-
- configure_metadata_update_phase_enabled(true);
- EXPECT_TRUE(getConfig().enable_metadata_only_fetch_phase_for_inconsistent_updates());
-
- configure_metadata_update_phase_enabled(false);
- EXPECT_FALSE(getConfig().enable_metadata_only_fetch_phase_for_inconsistent_updates());
-}
-
-TEST_F(LegacyDistributorTest, weak_internal_read_consistency_config_is_propagated_to_internal_configs) {
- createLinks();
- setupDistributor(Redundancy(1), NodeCount(1), "distributor:1 storage:1");
-
- configure_use_weak_internal_read_consistency(true);
- EXPECT_TRUE(getConfig().use_weak_internal_read_consistency_for_client_gets());
- EXPECT_TRUE(getExternalOperationHandler().use_weak_internal_read_consistency_for_gets());
-
- configure_use_weak_internal_read_consistency(false);
- EXPECT_FALSE(getConfig().use_weak_internal_read_consistency_for_client_gets());
- EXPECT_FALSE(getExternalOperationHandler().use_weak_internal_read_consistency_for_gets());
-}
-
-void LegacyDistributorTest::set_up_and_start_get_op_with_stale_reads_enabled(bool enabled) {
- createLinks();
- setupDistributor(Redundancy(1), NodeCount(1), "distributor:1 storage:1");
- configure_stale_reads_enabled(enabled);
-
- document::BucketId bucket(16, 1);
- addNodesToBucketDB(bucket, "0=1/1/1/t");
- _distributor->onDown(make_dummy_get_command_for_bucket_1());
-}
-
-TEST_F(LegacyDistributorTest, gets_are_started_outside_main_distributor_logic_if_stale_reads_enabled) {
- set_up_and_start_get_op_with_stale_reads_enabled(true);
- ASSERT_THAT(_sender.commands(), SizeIs(1));
- EXPECT_THAT(_sender.replies(), SizeIs(0));
-
- // Reply is routed to the correct owner
- auto reply = std::shared_ptr<api::StorageReply>(_sender.command(0)->makeReply());
- _distributor->onDown(reply);
- ASSERT_THAT(_sender.commands(), SizeIs(1));
- EXPECT_THAT(_sender.replies(), SizeIs(1));
-}
-
-TEST_F(LegacyDistributorTest, gets_are_not_started_outside_main_distributor_logic_if_stale_reads_disabled) {
- set_up_and_start_get_op_with_stale_reads_enabled(false);
- // Get has been placed into distributor queue, so no external messages are produced.
- EXPECT_THAT(_sender.commands(), SizeIs(0));
- EXPECT_THAT(_sender.replies(), SizeIs(0));
-}
-
-// There's no need or desire to track "lockfree" Gets in the main pending message tracker,
-// as we only have to track mutations to inhibit maintenance ops safely. Furthermore,
-// the message tracker is a multi-index and therefore has some runtime cost.
-TEST_F(LegacyDistributorTest, gets_started_outside_main_thread_are_not_tracked_by_main_pending_message_tracker) {
- set_up_and_start_get_op_with_stale_reads_enabled(true);
- Bucket bucket(FixedBucketSpaces::default_space(), BucketId(16, 1));
- EXPECT_FALSE(pending_message_tracker().hasPendingMessage(
- 0, bucket, api::MessageType::GET_ID));
-}
-
-TEST_F(LegacyDistributorTest, closing_aborts_gets_started_outside_main_distributor_thread) {
- set_up_and_start_get_op_with_stale_reads_enabled(true);
- _distributor->close();
- ASSERT_EQ(1, _sender.replies().size());
- EXPECT_EQ(api::ReturnCode::ABORTED, _sender.reply(0)->getResult().getResult());
-}
-
-TEST_F(LegacyDistributorTest, prioritize_global_bucket_merges_config_is_propagated_to_internal_config) {
- createLinks();
- setupDistributor(Redundancy(1), NodeCount(1), "distributor:1 storage:1");
-
- configure_prioritize_global_bucket_merges(true);
- EXPECT_TRUE(getConfig().prioritize_global_bucket_merges());
-
- configure_prioritize_global_bucket_merges(false);
- EXPECT_FALSE(getConfig().prioritize_global_bucket_merges());
-}
-
-TEST_F(LegacyDistributorTest, max_activation_inhibited_out_of_sync_groups_config_is_propagated_to_internal_config) {
- createLinks();
- setupDistributor(Redundancy(1), NodeCount(1), "distributor:1 storage:1");
-
- configure_max_activation_inhibited_out_of_sync_groups(3);
- EXPECT_EQ(getConfig().max_activation_inhibited_out_of_sync_groups(), 3);
-
- configure_max_activation_inhibited_out_of_sync_groups(0);
- EXPECT_EQ(getConfig().max_activation_inhibited_out_of_sync_groups(), 0);
-}
-
-TEST_F(LegacyDistributorTest, wanted_split_bit_count_is_lower_bounded) {
- createLinks();
- setupDistributor(Redundancy(1), NodeCount(1), "distributor:1 storage:1");
-
- ConfigBuilder builder;
- builder.minsplitcount = 7;
- configureDistributor(builder);
-
- EXPECT_EQ(getConfig().getMinimalBucketSplit(), 8);
-}
-
-TEST_F(LegacyDistributorTest, host_info_sent_immediately_once_all_stripes_first_reported) {
- set_num_distributor_stripes(4);
- createLinks();
- getClock().setAbsoluteTimeInSeconds(1000);
- // TODO STRIPE can't call this currently since it touches the bucket DB updater directly:
- // setupDistributor(Redundancy(2), NodeCount(2), "version:1 distributor:1 storage:2");
-
- tickDistributorNTimes(1);
- EXPECT_EQ(0, explicit_node_state_reply_send_invocations()); // Nothing yet
- getDistributor().notify_stripe_wants_to_send_host_info(1);
- getDistributor().notify_stripe_wants_to_send_host_info(2);
- getDistributor().notify_stripe_wants_to_send_host_info(3);
-
- tickDistributorNTimes(1);
- // Still nothing. Missing initial report from stripe 0
- EXPECT_EQ(0, explicit_node_state_reply_send_invocations());
-
- getDistributor().notify_stripe_wants_to_send_host_info(0);
- tickDistributorNTimes(1);
- // All stripes have reported in, it's time to party!
- EXPECT_EQ(1, explicit_node_state_reply_send_invocations());
-
- // No further sends if stripes haven't requested it yet.
- getClock().setAbsoluteTimeInSeconds(2000);
- tickDistributorNTimes(10);
- EXPECT_EQ(1, explicit_node_state_reply_send_invocations());
-}
-
-// TODO STRIPE make delay configurable instead of hardcoded
-TEST_F(LegacyDistributorTest, non_bootstrap_host_info_send_request_delays_sending) {
- set_num_distributor_stripes(4);
- createLinks();
- getClock().setAbsoluteTimeInSeconds(1000);
-
- for (uint16_t i = 0; i < 4; ++i) {
- getDistributor().notify_stripe_wants_to_send_host_info(i);
- }
- tickDistributorNTimes(1);
- // Bootstrap case
- EXPECT_EQ(1, explicit_node_state_reply_send_invocations());
-
- // Stripe 1 suddenly really wants to tell the cluster controller something again
- getDistributor().notify_stripe_wants_to_send_host_info(1);
- tickDistributorNTimes(1);
- // But its cry for attention is not yet honored since the delay hasn't passed.
- EXPECT_EQ(1, explicit_node_state_reply_send_invocations());
-
- getClock().addMilliSecondsToTime(999);
- tickDistributorNTimes(1);
- // 1 sec delay has still not passed
- EXPECT_EQ(1, explicit_node_state_reply_send_invocations());
-
- getClock().addMilliSecondsToTime(1);
- tickDistributorNTimes(1);
- // But now it has
- EXPECT_EQ(2, explicit_node_state_reply_send_invocations());
-}
-
-}
diff --git a/storage/src/tests/distributor/maintenancemocks.h b/storage/src/tests/distributor/maintenancemocks.h
index 1245c9bb15d..0ea1baf7412 100644
--- a/storage/src/tests/distributor/maintenancemocks.h
+++ b/storage/src/tests/distributor/maintenancemocks.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/test/make_bucket_space.h>
diff --git a/storage/src/tests/distributor/maintenanceschedulertest.cpp b/storage/src/tests/distributor/maintenanceschedulertest.cpp
index bada963496d..a97ffeef24b 100644
--- a/storage/src/tests/distributor/maintenanceschedulertest.cpp
+++ b/storage/src/tests/distributor/maintenanceschedulertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/test/make_document_bucket.h>
#include <vespa/storage/distributor/maintenance/simplebucketprioritydatabase.h>
#include <vespa/storage/distributor/maintenance/maintenancescheduler.h>
diff --git a/storage/src/tests/distributor/mergelimitertest.cpp b/storage/src/tests/distributor/mergelimitertest.cpp
index b06630ea592..5392f0acc6b 100644
--- a/storage/src/tests/distributor/mergelimitertest.cpp
+++ b/storage/src/tests/distributor/mergelimitertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/distributor/operations/idealstate/mergelimiter.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/storage/src/tests/distributor/mergeoperationtest.cpp b/storage/src/tests/distributor/mergeoperationtest.cpp
index 33baa572c64..769651afd8d 100644
--- a/storage/src/tests/distributor/mergeoperationtest.cpp
+++ b/storage/src/tests/distributor/mergeoperationtest.cpp
@@ -1,17 +1,17 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <tests/common/dummystoragelink.h>
-#include <tests/distributor/distributortestutil.h>
-#include <vespa/document/test/make_document_bucket.h>
+#include <tests/distributor/distributor_stripe_test_util.h>
#include <vespa/document/test/make_bucket_space.h>
+#include <vespa/document/test/make_document_bucket.h>
+#include <vespa/storage/distributor/top_level_bucket_db_updater.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
#include <vespa/storage/distributor/idealstatemanager.h>
-#include <vespa/storageapi/message/persistence.h>
-#include <vespa/storage/distributor/operations/idealstate/mergeoperation.h>
-#include <vespa/storage/distributor/bucketdbupdater.h>
-#include <vespa/storage/distributor/distributor.h>
#include <vespa/storage/distributor/operation_sequencer.h>
+#include <vespa/storage/distributor/operations/idealstate/mergeoperation.h>
+#include <vespa/storageapi/message/persistence.h>
#include <vespa/vdslib/distribution/distribution.h>
-#include <vespa/vespalib/text/stringtokenizer.h>
#include <vespa/vespalib/gtest/gtest.h>
+#include <vespa/vespalib/text/stringtokenizer.h>
using document::test::makeDocumentBucket;
using document::test::makeBucketSpace;
@@ -23,7 +23,7 @@ namespace {
vespalib::string _g_storage("storage");
}
-struct MergeOperationTest : Test, DistributorTestUtil {
+struct MergeOperationTest : Test, DistributorStripeTestUtil {
OperationSequencer _operation_sequencer;
void SetUp() override {
@@ -45,7 +45,7 @@ TEST_F(MergeOperationTest, simple) {
"1=20/1/1,"
"2=10/1/1/t");
- enableDistributorClusterState("distributor:1 storage:3");
+ enable_cluster_state("distributor:1 storage:3");
MergeOperation op(BucketAndNodes(makeDocumentBucket(document::BucketId(16, 1)),
toVector<uint16_t>(0, 1, 2)));
@@ -73,7 +73,7 @@ TEST_F(MergeOperationTest, fail_if_source_only_copies_changed) {
"1=20/1/1,"
"2=10/1/1/t");
- enableDistributorClusterState("distributor:1 storage:3");
+ enable_cluster_state("distributor:1 storage:3");
MergeOperation op(BucketAndNodes(makeDocumentBucket(document::BucketId(16, 1)),
toVector<uint16_t>(0, 1, 2)));
@@ -236,7 +236,7 @@ TEST_F(MergeOperationTest, do_not_remove_copies_with_pending_messages) {
document::BucketId bucket(16, 1);
getClock().setAbsoluteTimeInSeconds(10);
- enableDistributorClusterState("distributor:1 storage:3");
+ enable_cluster_state("distributor:1 storage:3");
addNodesToBucketDB(bucket,
"0=10/1/1/t,"
"1=20/1/1,"
@@ -300,7 +300,7 @@ TEST_F(MergeOperationTest, allow_deleting_active_source_only_replica) {
"1=20/1/1/u/a,"
"2=10/1/1/t");
- enableDistributorClusterState("distributor:1 storage:3");
+ enable_cluster_state("distributor:1 storage:3");
MergeOperation op(BucketAndNodes(makeDocumentBucket(document::BucketId(16, 1)),
toVector<uint16_t>(0, 1, 2)));
op.setIdealStateManager(&getIdealStateManager());
@@ -398,7 +398,7 @@ TEST_F(MergeOperationTest, mark_post_merge_redundant_replicas_source_only) {
TEST_F(MergeOperationTest, merge_operation_is_blocked_by_any_busy_target_node) {
getClock().setAbsoluteTimeInSeconds(10);
addNodesToBucketDB(document::BucketId(16, 1), "0=10/1/1/t,1=20/1/1,2=10/1/1/t");
- enableDistributorClusterState("distributor:1 storage:3");
+ enable_cluster_state("distributor:1 storage:3");
MergeOperation op(BucketAndNodes(makeDocumentBucket(document::BucketId(16, 1)), toVector<uint16_t>(0, 1, 2)));
op.setIdealStateManager(&getIdealStateManager());
@@ -423,7 +423,7 @@ TEST_F(MergeOperationTest, global_bucket_merges_are_not_blocked_by_busy_nodes) {
getClock().setAbsoluteTimeInSeconds(10);
document::BucketId bucket_id(16, 1);
addNodesToBucketDB(bucket_id, "0=10/1/1/t,1=20/1/1,2=10/1/1/t");
- enableDistributorClusterState("distributor:1 storage:3");
+ enable_cluster_state("distributor:1 storage:3");
document::Bucket global_bucket(document::FixedBucketSpaces::global_space(), bucket_id);
MergeOperation op(BucketAndNodes(global_bucket, toVector<uint16_t>(0, 1, 2)));
op.setIdealStateManager(&getIdealStateManager());
@@ -436,7 +436,7 @@ TEST_F(MergeOperationTest, global_bucket_merges_are_not_blocked_by_busy_nodes) {
TEST_F(MergeOperationTest, merge_operation_is_blocked_by_locked_bucket) {
getClock().setAbsoluteTimeInSeconds(10);
addNodesToBucketDB(document::BucketId(16, 1), "0=10/1/1/t,1=20/1/1,2=10/1/1/t");
- enableDistributorClusterState("distributor:1 storage:3");
+ enable_cluster_state("distributor:1 storage:3");
MergeOperation op(BucketAndNodes(makeDocumentBucket(document::BucketId(16, 1)), toVector<uint16_t>(0, 1, 2)));
op.setIdealStateManager(&getIdealStateManager());
@@ -447,7 +447,7 @@ TEST_F(MergeOperationTest, merge_operation_is_blocked_by_locked_bucket) {
}
TEST_F(MergeOperationTest, missing_replica_is_included_in_limited_node_list) {
- setupDistributor(Redundancy(4), NodeCount(4), "distributor:1 storage:4");
+ setup_stripe(Redundancy(4), NodeCount(4), "distributor:1 storage:4");
getClock().setAbsoluteTimeInSeconds(10);
addNodesToBucketDB(document::BucketId(16, 1), "1=0/0/0/t,2=0/0/0/t,3=0/0/0/t");
const uint16_t max_merge_size = 2;
@@ -466,7 +466,7 @@ TEST_F(MergeOperationTest, merge_operation_is_blocked_by_request_bucket_info_to_
getClock().setAbsoluteTimeInSeconds(10);
document::BucketId bucket_id(16, 1);
addNodesToBucketDB(bucket_id, "0=10/1/1/t,1=20/1/1,2=10/1/1/t");
- enableDistributorClusterState("distributor:1 storage:3");
+ enable_cluster_state("distributor:1 storage:3");
MergeOperation op(BucketAndNodes(makeDocumentBucket(bucket_id), toVector<uint16_t>(0, 1, 2)));
op.setIdealStateManager(&getIdealStateManager());
@@ -487,7 +487,7 @@ TEST_F(MergeOperationTest, merge_operation_is_not_blocked_by_request_bucket_info
document::BucketId bucket_id(16, 1);
document::BucketId other_bucket_id(16, 2);
addNodesToBucketDB(bucket_id, "0=10/1/1/t,1=20/1/1,2=10/1/1/t");
- enableDistributorClusterState("distributor:1 storage:3");
+ enable_cluster_state("distributor:1 storage:3");
MergeOperation op(BucketAndNodes(makeDocumentBucket(bucket_id), toVector<uint16_t>(0, 1, 2)));
op.setIdealStateManager(&getIdealStateManager());
diff --git a/storage/src/tests/distributor/mock_tickable_stripe.h b/storage/src/tests/distributor/mock_tickable_stripe.h
index 532bef5e50d..38fc0c599a2 100644
--- a/storage/src/tests/distributor/mock_tickable_stripe.h
+++ b/storage/src/tests/distributor/mock_tickable_stripe.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storage/distributor/tickable_stripe.h>
@@ -13,7 +13,7 @@ struct MockTickableStripe : TickableStripe {
void update_distribution_config(const BucketSpaceDistributionConfigs&) override { abort(); }
void set_pending_cluster_state_bundle(const lib::ClusterStateBundle&) override { abort(); }
void clear_pending_cluster_state_bundle() override { abort(); }
- void enable_cluster_state_bundle(const lib::ClusterStateBundle&) override { abort(); }
+ void enable_cluster_state_bundle(const lib::ClusterStateBundle&, bool) override { abort(); }
void notify_distribution_change_enabled() override { abort(); }
PotentialDataLossReport remove_superfluous_buckets(document::BucketSpace, const lib::ClusterState&, bool) override {
abort();
diff --git a/storage/src/tests/distributor/multi_thread_stripe_access_guard_test.cpp b/storage/src/tests/distributor/multi_thread_stripe_access_guard_test.cpp
index ba28396886f..6bc98ef022e 100644
--- a/storage/src/tests/distributor/multi_thread_stripe_access_guard_test.cpp
+++ b/storage/src/tests/distributor/multi_thread_stripe_access_guard_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mock_tickable_stripe.h"
#include <vespa/document/bucket/fixed_bucket_spaces.h>
#include <vespa/persistence/spi/bucket_limits.h>
@@ -18,6 +18,7 @@ namespace storage::distributor {
struct AggregationTestingMockTickableStripe : MockTickableStripe {
PotentialDataLossReport report;
std::vector<dbtransition::Entry> entries;
+ StripeAccessGuard::PendingOperationStats pending_stats{0, 0};
PotentialDataLossReport remove_superfluous_buckets(document::BucketSpace, const lib::ClusterState&, bool) override {
return report;
@@ -38,6 +39,10 @@ struct AggregationTestingMockTickableStripe : MockTickableStripe {
return result;
}
+ StripeAccessGuard::PendingOperationStats pending_operation_stats() const override {
+ return pending_stats;
+ }
+
bool tick() override {
return false;
}
@@ -96,6 +101,21 @@ TEST_F(MultiThreadedStripeAccessGuardTest, remove_superfluous_buckets_aggregates
EXPECT_EQ(report.documents, 680);
}
+TEST_F(MultiThreadedStripeAccessGuardTest, pending_operation_stats_aggregates_stats_across_stripes) {
+ using Stats = StripeAccessGuard::PendingOperationStats;
+ _stripe0.pending_stats = Stats(20, 100);
+ _stripe1.pending_stats = Stats(5, 200);
+ _stripe2.pending_stats = Stats(7, 350);
+ _stripe3.pending_stats = Stats(3, 30);
+ start_pool_with_stripes();
+
+ auto guard = _accessor.rendezvous_and_hold_all();
+ auto pending_stats = guard->pending_operation_stats();
+
+ EXPECT_EQ(pending_stats.external_load_operations, 35);
+ EXPECT_EQ(pending_stats.maintenance_operations, 680);
+}
+
TEST_F(MultiThreadedStripeAccessGuardTest, merge_entries_into_db_operates_across_all_stripes) {
start_pool_with_stripes();
// Note: The bucket key is calculated by reversing the bits of the raw bucket id.
diff --git a/storage/src/tests/distributor/nodeinfotest.cpp b/storage/src/tests/distributor/nodeinfotest.cpp
index d729c686fa3..d008620c41e 100644
--- a/storage/src/tests/distributor/nodeinfotest.cpp
+++ b/storage/src/tests/distributor/nodeinfotest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/distributor/nodeinfo.h>
#include <vespa/storageframework/defaultimplementation/clock/fakeclock.h>
diff --git a/storage/src/tests/distributor/nodemaintenancestatstrackertest.cpp b/storage/src/tests/distributor/nodemaintenancestatstrackertest.cpp
index 58593799fc4..5862eddfaaf 100644
--- a/storage/src/tests/distributor/nodemaintenancestatstrackertest.cpp
+++ b/storage/src/tests/distributor/nodemaintenancestatstrackertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/test/make_bucket_space.h>
#include <vespa/document/bucket/fixed_bucket_spaces.h>
diff --git a/storage/src/tests/distributor/operation_sequencer_test.cpp b/storage/src/tests/distributor/operation_sequencer_test.cpp
index 968d41dd98b..595b9aa6022 100644
--- a/storage/src/tests/distributor/operation_sequencer_test.cpp
+++ b/storage/src/tests/distributor/operation_sequencer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/documentid.h>
#include <vespa/document/bucket/fixed_bucket_spaces.h>
diff --git a/storage/src/tests/distributor/operationtargetresolvertest.cpp b/storage/src/tests/distributor/operationtargetresolvertest.cpp
index aea251e81de..dca54e22f0d 100644
--- a/storage/src/tests/distributor/operationtargetresolvertest.cpp
+++ b/storage/src/tests/distributor/operationtargetresolvertest.cpp
@@ -1,20 +1,20 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <tests/distributor/distributor_stripe_test_util.h>
#include <vespa/config/helper/configgetter.h>
+#include <vespa/config/helper/configgetter.hpp>
#include <vespa/document/config/config-documenttypes.h>
#include <vespa/document/repo/documenttyperepo.h>
#include <vespa/document/test/make_bucket_space.h>
#include <vespa/document/test/make_document_bucket.h>
+#include <vespa/storage/distributor/distributor_bucket_space.h>
+#include <vespa/storage/distributor/distributor_bucket_space_repo.h>
+#include <vespa/storage/distributor/externaloperationhandler.h>
+#include <vespa/storage/distributor/operationtargetresolverimpl.h>
#include <vespa/storageapi/message/bucket.h>
#include <vespa/storageapi/message/persistence.h>
-#include <tests/distributor/distributortestutil.h>
-#include <vespa/vdslib/distribution/idealnodecalculatorimpl.h>
#include <vespa/vdslib/distribution/distribution.h>
-#include <vespa/storage/distributor/distributor_bucket_space_repo.h>
-#include <vespa/storage/distributor/distributor_bucket_space.h>
-#include <vespa/storage/distributor/operationtargetresolverimpl.h>
-#include <vespa/storage/distributor/externaloperationhandler.h>
-#include <vespa/config/helper/configgetter.hpp>
+#include <vespa/vdslib/distribution/idealnodecalculatorimpl.h>
#include <vespa/vespalib/gtest/gtest.h>
using document::BucketId;
@@ -24,7 +24,7 @@ using namespace ::testing;
namespace storage::distributor {
-struct OperationTargetResolverTest : Test, DistributorTestUtil {
+struct OperationTargetResolverTest : Test, DistributorStripeTestUtil {
std::shared_ptr<const document::DocumentTypeRepo> _repo;
const document::DocumentType* _html_type;
std::unique_ptr<Operation> op;
@@ -135,7 +135,7 @@ OperationTargetResolverTest::getInstances(const BucketId& id,
* Test basic case with no inconsistencies
*/
TEST_F(OperationTargetResolverTest, simple) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
addNodesToBucketDB(BucketId(16, 0), "0=0,1=0");
MY_ASSERT_THAT(BucketId(32, 0)).sendsTo(BucketId(16, 0), 1)
@@ -143,7 +143,7 @@ TEST_F(OperationTargetResolverTest, simple) {
}
TEST_F(OperationTargetResolverTest, multiple_nodes) {
- setupDistributor(1, 2, "storage:2 distributor:1");
+ setup_stripe(1, 2, "storage:2 distributor:1");
auto &bucketSpaceRepo(operation_context().bucket_space_repo());
auto &distributorBucketSpace(bucketSpaceRepo.get(makeBucketSpace()));
@@ -161,14 +161,14 @@ TEST_F(OperationTargetResolverTest, multiple_nodes) {
}
TEST_F(OperationTargetResolverTest, choose_ideal_state_when_many_copies) {
- setupDistributor(2, 4, "storage:4 distributor:1");
+ setup_stripe(2, 4, "storage:4 distributor:1");
addNodesToBucketDB(BucketId(16, 0), "0=0,1=0,2=0,3=0"); // ideal nodes: 1, 3
MY_ASSERT_THAT(BucketId(32, 0)).sendsTo(BucketId(16, 0), 1)
.sendsTo(BucketId(16, 0), 3);
}
TEST_F(OperationTargetResolverTest, trusted_over_ideal_state) {
- setupDistributor(2, 4, "storage:4 distributor:1");
+ setup_stripe(2, 4, "storage:4 distributor:1");
addNodesToBucketDB(BucketId(16, 0), "0=0/0/0/t,1=0,2=0/0/0/t,3=0");
// ideal nodes: 1, 3
MY_ASSERT_THAT(BucketId(32, 0)).sendsTo(BucketId(16, 0), 0)
@@ -176,7 +176,7 @@ TEST_F(OperationTargetResolverTest, trusted_over_ideal_state) {
}
TEST_F(OperationTargetResolverTest, choose_highest_split_bucket) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
// 0, 1 are both in ideal state for both buckets.
addNodesToBucketDB(BucketId(16, 0), "0=0,1=0");
addNodesToBucketDB(BucketId(17, 0), "0=0,1=0");
@@ -185,7 +185,7 @@ TEST_F(OperationTargetResolverTest, choose_highest_split_bucket) {
}
TEST_F(OperationTargetResolverTest, choose_highest_split_bucket_per_node) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
addNodesToBucketDB(BucketId(16, 0), "1=0");
addNodesToBucketDB(BucketId(17, 0), "0=0");
MY_ASSERT_THAT(BucketId(32, 0)).sendsTo(BucketId(17, 0), 0)
@@ -193,7 +193,7 @@ TEST_F(OperationTargetResolverTest, choose_highest_split_bucket_per_node) {
}
TEST_F(OperationTargetResolverTest, choose_highest_split_bucket_with_trusted) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
// Unfinished split scenario: split done on 0, not on 1.
// Copy on 1 is only remaining for (16, 0), so always trusted.
addNodesToBucketDB(BucketId(16, 0), "1=1/2/3/t");
@@ -204,7 +204,7 @@ TEST_F(OperationTargetResolverTest, choose_highest_split_bucket_with_trusted) {
}
TEST_F(OperationTargetResolverTest, inconsistent_buckets_are_not_explicitly_created) {
- setupDistributor(2, 2, "bits:8 storage:2 distributor:1");
+ setup_stripe(2, 2, "bits:8 storage:2 distributor:1");
addNodesToBucketDB(BucketId(15, 0), "1=9/9/9/t");
addNodesToBucketDB(BucketId(16, 1 << 15), "0=9/9/9/t");
// (32, 0) belongs in (16, 0) subtree, but it does not exist. We cannot
@@ -218,7 +218,7 @@ TEST_F(OperationTargetResolverTest, inconsistent_buckets_are_not_explicitly_crea
}
TEST_F(OperationTargetResolverTest, no_trusted_or_ideal_state_copy_available) {
- setupDistributor(2, 4, "storage:4 distributor:1");
+ setup_stripe(2, 4, "storage:4 distributor:1");
addNodesToBucketDB(BucketId(16, 0), "0=0,2=0");
addNodesToBucketDB(BucketId(18, 0), "0=0"); // ideal nodes: 1, 3
MY_ASSERT_THAT(BucketId(32, 0)).sendsTo(BucketId(18, 0), 0)
@@ -226,7 +226,7 @@ TEST_F(OperationTargetResolverTest, no_trusted_or_ideal_state_copy_available) {
}
TEST_F(OperationTargetResolverTest, create_missing_copies) {
- setupDistributor(4, 10, "storage:10 distributor:1");
+ setup_stripe(4, 10, "storage:10 distributor:1");
addNodesToBucketDB(BucketId(16, 0), "6=0");
addNodesToBucketDB(BucketId(18, 0), "4=0"); // ideal nodes: 6, 8, 7, 1
@@ -237,21 +237,21 @@ TEST_F(OperationTargetResolverTest, create_missing_copies) {
}
TEST_F(OperationTargetResolverTest, no_existing_copies) {
- setupDistributor(2, 5, "storage:5 distributor:1");
+ setup_stripe(2, 5, "storage:5 distributor:1");
MY_ASSERT_THAT(BucketId(32, 0)).createsAt(BucketId(16, 0), 1)
.createsAt(BucketId(16, 0), 3);
}
TEST_F(OperationTargetResolverTest, count_maintenance_nodes_as_down) {
- setupDistributor(2, 5, "storage:5 .1.s:m distributor:1");
+ setup_stripe(2, 5, "storage:5 .1.s:m distributor:1");
MY_ASSERT_THAT(BucketId(32, 0)).createsAt(BucketId(16, 0), 3)
.createsAt(BucketId(16, 0), 2);
}
TEST_F(OperationTargetResolverTest, resolving_does_not_mutate_database) {
- setupDistributor(2, 5, "storage:5 distributor:1");
+ setup_stripe(2, 5, "storage:5 distributor:1");
MY_ASSERT_THAT(BucketId(32, 0)).createsAt(BucketId(16, 0), 1)
.createsAt(BucketId(16, 0), 3);
diff --git a/storage/src/tests/distributor/ownership_transfer_safe_time_point_calculator_test.cpp b/storage/src/tests/distributor/ownership_transfer_safe_time_point_calculator_test.cpp
index fde9aed59e7..817e9b33226 100644
--- a/storage/src/tests/distributor/ownership_transfer_safe_time_point_calculator_test.cpp
+++ b/storage/src/tests/distributor/ownership_transfer_safe_time_point_calculator_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/distributor/ownership_transfer_safe_time_point_calculator.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/storage/src/tests/distributor/pendingmessagetrackertest.cpp b/storage/src/tests/distributor/pendingmessagetrackertest.cpp
index 20ffd216e3d..0ba374f7190 100644
--- a/storage/src/tests/distributor/pendingmessagetrackertest.cpp
+++ b/storage/src/tests/distributor/pendingmessagetrackertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/testdocman.h>
#include <vespa/document/test/make_document_bucket.h>
@@ -149,7 +149,7 @@ Fixture::Fixture()
_clock.setAbsoluteTimeInSeconds(1);
// Have to set clock in compReg before constructing tracker, or it'll
// flip out and die on an explicit nullptr check.
- _tracker = std::make_unique<PendingMessageTracker>(_compReg);
+ _tracker = std::make_unique<PendingMessageTracker>(_compReg, 0);
}
Fixture::~Fixture() = default;
@@ -160,7 +160,7 @@ TEST_F(PendingMessageTrackerTest, simple) {
framework::defaultimplementation::FakeClock clock;
compReg.setClock(clock);
clock.setAbsoluteTimeInSeconds(1);
- PendingMessageTracker tracker(compReg);
+ PendingMessageTracker tracker(compReg, 0);
auto remove = std::make_shared<api::RemoveCommand>(
makeDocumentBucket(document::BucketId(16, 1234)),
@@ -217,14 +217,14 @@ TEST_F(PendingMessageTrackerTest, start_page) {
StorageComponentRegisterImpl compReg;
framework::defaultimplementation::FakeClock clock;
compReg.setClock(clock);
- PendingMessageTracker tracker(compReg);
+ PendingMessageTracker tracker(compReg, 3);
{
std::ostringstream ost;
- tracker.reportStatus(ost, framework::HttpUrlPath("/pendingmessages"));
+ tracker.reportStatus(ost, framework::HttpUrlPath("/pendingmessages3"));
EXPECT_THAT(ost.str(), HasSubstr(
- "<h1>Pending messages to storage nodes</h1>\n"
+ "<h1>Pending messages to storage nodes (stripe 3)</h1>\n"
"View:\n"
"<ul>\n"
"<li><a href=\"?order=bucket\">Group by bucket</a></li>"
@@ -237,7 +237,7 @@ TEST_F(PendingMessageTrackerTest, multiple_messages) {
framework::defaultimplementation::FakeClock clock;
compReg.setClock(clock);
clock.setAbsoluteTimeInSeconds(1);
- PendingMessageTracker tracker(compReg);
+ PendingMessageTracker tracker(compReg, 0);
insertMessages(tracker);
@@ -332,7 +332,7 @@ TEST_F(PendingMessageTrackerTest, get_pending_message_types) {
framework::defaultimplementation::FakeClock clock;
compReg.setClock(clock);
clock.setAbsoluteTimeInSeconds(1);
- PendingMessageTracker tracker(compReg);
+ PendingMessageTracker tracker(compReg, 0);
document::BucketId bid(16, 1234);
auto remove = std::make_shared<api::RemoveCommand>(makeDocumentBucket(bid),
@@ -364,7 +364,7 @@ TEST_F(PendingMessageTrackerTest, has_pending_message) {
framework::defaultimplementation::FakeClock clock;
compReg.setClock(clock);
clock.setAbsoluteTimeInSeconds(1);
- PendingMessageTracker tracker(compReg);
+ PendingMessageTracker tracker(compReg, 0);
document::BucketId bid(16, 1234);
EXPECT_FALSE(tracker.hasPendingMessage(1, makeDocumentBucket(bid), api::MessageType::REMOVE_ID));
@@ -407,7 +407,7 @@ TEST_F(PendingMessageTrackerTest, get_all_messages_for_single_bucket) {
framework::defaultimplementation::FakeClock clock;
compReg.setClock(clock);
clock.setAbsoluteTimeInSeconds(1);
- PendingMessageTracker tracker(compReg);
+ PendingMessageTracker tracker(compReg, 0);
insertMessages(tracker);
diff --git a/storage/src/tests/distributor/persistence_metrics_set_test.cpp b/storage/src/tests/distributor/persistence_metrics_set_test.cpp
index 3210a59a567..7d8fe6d096d 100644
--- a/storage/src/tests/distributor/persistence_metrics_set_test.cpp
+++ b/storage/src/tests/distributor/persistence_metrics_set_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/distributor/distributormetricsset.h>
#include <vespa/storageapi/messageapi/returncode.h>
diff --git a/storage/src/tests/distributor/putoperationtest.cpp b/storage/src/tests/distributor/putoperationtest.cpp
index b75751c1270..b75f5ec3d6f 100644
--- a/storage/src/tests/distributor/putoperationtest.cpp
+++ b/storage/src/tests/distributor/putoperationtest.cpp
@@ -1,18 +1,17 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <tests/distributor/distributor_stripe_test_util.h>
#include <vespa/document/repo/documenttyperepo.h>
-#include <vespa/storage/distributor/operations/external/putoperation.h>
-#include <vespa/storage/distributor/distributor.h>
-#include <vespa/storage/distributor/distributor_stripe.h>
+#include <vespa/document/test/make_document_bucket.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
#include <vespa/storage/distributor/distributor_bucket_space.h>
+#include <vespa/storage/distributor/distributor_stripe.h>
+#include <vespa/storage/distributor/operations/external/putoperation.h>
#include <vespa/storageapi/message/bucket.h>
#include <vespa/storageapi/message/persistence.h>
#include <vespa/storageapi/message/state.h>
-#include <tests/distributor/distributortestutil.h>
-#include <tests/common/dummystoragelink.h>
-#include <vespa/document/test/make_document_bucket.h>
-#include <vespa/vespalib/text/stringtokenizer.h>
#include <vespa/vespalib/gtest/gtest.h>
+#include <vespa/vespalib/text/stringtokenizer.h>
using std::shared_ptr;
using config::ConfigGetter;
@@ -31,7 +30,7 @@ using namespace ::testing;
namespace storage::distributor {
class PutOperationTest : public Test,
- public DistributorTestUtil
+ public DistributorStripeTestUtil
{
public:
document::TestDocMan _testDocMan;
@@ -78,8 +77,7 @@ public:
operation_context(),
getDistributorBucketSpace(),
msg,
- getDistributor().getMetrics().
- puts);
+ metrics().puts);
op->start(_sender, framework::MilliSecTime(0));
}
@@ -127,7 +125,7 @@ using RequirePrimaryWritten = bool;
const vespalib::duration TIMEOUT = 180ms;
TEST_F(PutOperationTest, simple) {
- setupDistributor(1, 1, "storage:1 distributor:1");
+ setup_stripe(1, 1, "storage:1 distributor:1");
createAndSendSampleDocument(TIMEOUT);
ASSERT_EQ("Put(BucketId(0x4000000000001dd4), "
@@ -142,7 +140,7 @@ TEST_F(PutOperationTest, simple) {
}
TEST_F(PutOperationTest, bucket_database_gets_special_entry_when_CreateBucket_sent) {
- setupDistributor(2, 1, "storage:1 distributor:1");
+ setup_stripe(2, 1, "storage:1 distributor:1");
Document::SP doc(createDummyDocument("test", "test"));
sendPut(createPut(doc));
@@ -156,9 +154,11 @@ TEST_F(PutOperationTest, bucket_database_gets_special_entry_when_CreateBucket_se
}
TEST_F(PutOperationTest, send_inline_split_before_put_if_bucket_too_large) {
- setupDistributor(1, 1, "storage:1 distributor:1");
- getConfig().setSplitCount(1024);
- getConfig().setSplitSize(1000000);
+ setup_stripe(1, 1, "storage:1 distributor:1");
+ auto cfg = make_config();
+ cfg->setSplitCount(1024);
+ cfg->setSplitSize(1000000);
+ configure_stripe(cfg);
addNodesToBucketDB(document::BucketId(0x4000000000000593), "0=10000/10000/10000/t");
@@ -174,9 +174,11 @@ TEST_F(PutOperationTest, send_inline_split_before_put_if_bucket_too_large) {
}
TEST_F(PutOperationTest, do_not_send_inline_split_if_not_configured) {
- setupDistributor(1, 1, "storage:1 distributor:1");
- getConfig().setSplitCount(1024);
- getConfig().setDoInlineSplit(false);
+ setup_stripe(1, 1, "storage:1 distributor:1");
+ auto cfg = make_config();
+ cfg->setSplitCount(1024);
+ cfg->setDoInlineSplit(false);
+ configure_stripe(cfg);
addNodesToBucketDB(document::BucketId(0x4000000000000593), "0=10000/10000/10000/t");
@@ -188,7 +190,7 @@ TEST_F(PutOperationTest, do_not_send_inline_split_if_not_configured) {
}
TEST_F(PutOperationTest, return_success_if_op_acked_on_all_replicas_even_if_bucket_concurrently_removed_from_db) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
createAndSendSampleDocument(TIMEOUT);
ASSERT_EQ("Put(BucketId(0x4000000000001dd4), "
@@ -216,7 +218,7 @@ TEST_F(PutOperationTest, return_success_if_op_acked_on_all_replicas_even_if_buck
}
TEST_F(PutOperationTest, storage_failed) {
- setupDistributor(2, 1, "storage:1 distributor:1");
+ setup_stripe(2, 1, "storage:1 distributor:1");
createAndSendSampleDocument(TIMEOUT);
@@ -228,7 +230,7 @@ TEST_F(PutOperationTest, storage_failed) {
}
TEST_F(PutOperationTest, multiple_copies) {
- setupDistributor(3, 4, "storage:4 distributor:1");
+ setup_stripe(3, 4, "storage:4 distributor:1");
Document::SP doc(createDummyDocument("test", "test"));
sendPut(createPut(doc));
@@ -253,7 +255,7 @@ TEST_F(PutOperationTest, multiple_copies) {
}
TEST_F(PutOperationTest, multiple_copies_early_return_primary_required) {
- setupDistributor(3, 4, "storage:4 distributor:1", 2, true);
+ setup_stripe(3, 4, "storage:4 distributor:1", 2, true);
sendPut(createPut(createDummyDocument("test", "test")));
@@ -276,7 +278,7 @@ TEST_F(PutOperationTest, multiple_copies_early_return_primary_required) {
}
TEST_F(PutOperationTest, multiple_copies_early_return_primary_not_required) {
- setupDistributor(3, 4, "storage:4 distributor:1", 2, false);
+ setup_stripe(3, 4, "storage:4 distributor:1", 2, false);
sendPut(createPut(createDummyDocument("test", "test")));
@@ -298,7 +300,7 @@ TEST_F(PutOperationTest, multiple_copies_early_return_primary_not_required) {
}
TEST_F(PutOperationTest, multiple_copies_early_return_primary_required_not_done) {
- setupDistributor(3, 4, "storage:4 distributor:1", 2, true);
+ setup_stripe(3, 4, "storage:4 distributor:1", 2, true);
sendPut(createPut(createDummyDocument("test", "test")));
@@ -316,7 +318,7 @@ TEST_F(PutOperationTest, multiple_copies_early_return_primary_required_not_done)
}
TEST_F(PutOperationTest, do_not_revert_on_failure_after_early_return) {
- setupDistributor(Redundancy(3),NodeCount(4), "storage:4 distributor:1",
+ setup_stripe(Redundancy(3),NodeCount(4), "storage:4 distributor:1",
ReturnAfter(2), RequirePrimaryWritten(false));
sendPut(createPut(createDummyDocument("test", "test")));
@@ -344,7 +346,7 @@ TEST_F(PutOperationTest, do_not_revert_on_failure_after_early_return) {
}
TEST_F(PutOperationTest, revert_successful_copies_when_one_fails) {
- setupDistributor(3, 4, "storage:4 distributor:1");
+ setup_stripe(3, 4, "storage:4 distributor:1");
createAndSendSampleDocument(TIMEOUT);
@@ -369,7 +371,7 @@ TEST_F(PutOperationTest, no_revert_if_revert_disabled) {
getDirConfig().getConfig("stor-distributormanager")
.set("enable_revert", "false");
SetUp();
- setupDistributor(3, 4, "storage:4 distributor:1");
+ setup_stripe(3, 4, "storage:4 distributor:1");
createAndSendSampleDocument(TIMEOUT);
@@ -390,7 +392,7 @@ TEST_F(PutOperationTest, no_revert_if_revert_disabled) {
}
TEST_F(PutOperationTest, do_not_send_CreateBucket_if_already_pending) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
Document::SP doc(createDummyDocument("test", "uri"));
sendPut(createPut(doc));
@@ -415,7 +417,7 @@ TEST_F(PutOperationTest, do_not_send_CreateBucket_if_already_pending) {
}
TEST_F(PutOperationTest, no_storage_nodes) {
- setupDistributor(2, 1, "storage:0 distributor:1");
+ setup_stripe(2, 1, "storage:0 distributor:1");
createAndSendSampleDocument(TIMEOUT);
ASSERT_EQ("PutReply(id:test:testdoctype1::, BucketId(0x0000000000000000), "
"timestamp 100) ReturnCode(NOT_CONNECTED, "
@@ -424,7 +426,7 @@ TEST_F(PutOperationTest, no_storage_nodes) {
}
TEST_F(PutOperationTest, update_correct_bucket_on_remapped_put) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
auto doc = std::make_shared<Document>(doc_type(), DocumentId("id:test:testdoctype1:n=13:uri"));
addNodesToBucketDB(document::BucketId(16,13), "0=0,1=0");
@@ -502,7 +504,7 @@ PutOperationTest::getNodes(const std::string& infoString) {
}
TEST_F(PutOperationTest, target_nodes) {
- setupDistributor(2, 6, "storage:6 distributor:1");
+ setup_stripe(2, 6, "storage:6 distributor:1");
// Ideal state of bucket is 1,2.
ASSERT_EQ("target( 1 2 ) create( 1 2 )", getNodes(""));
@@ -516,7 +518,7 @@ TEST_F(PutOperationTest, target_nodes) {
}
TEST_F(PutOperationTest, replica_not_resurrected_in_db_when_node_down_in_active_state) {
- setupDistributor(Redundancy(3), NodeCount(3), "distributor:1 storage:3");
+ setup_stripe(Redundancy(3), NodeCount(3), "distributor:1 storage:3");
Document::SP doc(createDummyDocument("test", "uri"));
document::BucketId bId = operation_context().make_split_bit_constrained_bucket_id(doc->getId());
@@ -527,7 +529,7 @@ TEST_F(PutOperationTest, replica_not_resurrected_in_db_when_node_down_in_active_
ASSERT_EQ("Put => 1,Put => 2,Put => 0", _sender.getCommands(true));
- enableDistributorClusterState("distributor:1 storage:3 .1.s:d .2.s:m");
+ enable_cluster_state("distributor:1 storage:3 .1.s:d .2.s:m");
addNodesToBucketDB(bId, "0=1/2/3/t"); // This will actually remove node #1.
sendReply(0, api::ReturnCode::OK, api::BucketInfo(9, 9, 9));
@@ -540,7 +542,7 @@ TEST_F(PutOperationTest, replica_not_resurrected_in_db_when_node_down_in_active_
}
TEST_F(PutOperationTest, replica_not_resurrected_in_db_when_node_down_in_pending_state) {
- setupDistributor(Redundancy(3), NodeCount(4), "version:1 distributor:1 storage:3");
+ setup_stripe(Redundancy(3), NodeCount(4), "version:1 distributor:1 storage:3");
auto doc = createDummyDocument("test", "uri");
auto bucket = operation_context().make_split_bit_constrained_bucket_id(doc->getId());
@@ -559,9 +561,7 @@ TEST_F(PutOperationTest, replica_not_resurrected_in_db_when_node_down_in_pending
// fetch here; if we just set a node down the cluster state would be immediately applied
// and the distributor's "clear pending messages for downed nodes" logic would kick in
// and hide the problem.
- getBucketDBUpdater().onSetSystemState(
- std::make_shared<api::SetSystemStateCommand>(
- lib::ClusterState("version:2 distributor:1 storage:4 .0.s:d .2.s:m")));
+ simulate_set_pending_cluster_state("version:2 distributor:1 storage:4 .0.s:d .2.s:m");
sendReply(0, api::ReturnCode::OK, api::BucketInfo(5, 6, 7));
sendReply(1, api::ReturnCode::OK, api::BucketInfo(6, 7, 8));
@@ -575,13 +575,11 @@ TEST_F(PutOperationTest, replica_not_resurrected_in_db_when_node_down_in_pending
// TODO probably also do this for updates and removes
// TODO consider if we should use the pending state verbatim for computing targets if it exists
TEST_F(PutOperationTest, put_is_failed_with_busy_if_target_down_in_pending_state) {
- setupDistributor(Redundancy(3), NodeCount(4), "version:1 distributor:1 storage:3");
+ setup_stripe(Redundancy(3), NodeCount(4), "version:1 distributor:1 storage:3");
auto doc = createDummyDocument("test", "test");
auto bucket = operation_context().make_split_bit_constrained_bucket_id(doc->getId());
addNodesToBucketDB(bucket, "0=1/2/3/t,1=1/2/3/t,2=1/2/3/t");
- getBucketDBUpdater().onSetSystemState(
- std::make_shared<api::SetSystemStateCommand>(
- lib::ClusterState("version:2 distributor:1 storage:4 .0.s:d .2.s:m")));
+ simulate_set_pending_cluster_state("version:2 distributor:1 storage:4 .0.s:d .2.s:m");
_sender.clear();
sendPut(createPut(doc));
@@ -593,7 +591,7 @@ TEST_F(PutOperationTest, put_is_failed_with_busy_if_target_down_in_pending_state
}
TEST_F(PutOperationTest, send_to_retired_nodes_if_no_up_nodes_available) {
- setupDistributor(Redundancy(2), NodeCount(2),
+ setup_stripe(Redundancy(2), NodeCount(2),
"distributor:1 storage:2 .0.s:r .1.s:r");
Document::SP doc(createDummyDocument("test", "uri"));
document::BucketId bucket(
@@ -606,7 +604,7 @@ TEST_F(PutOperationTest, send_to_retired_nodes_if_no_up_nodes_available) {
}
void PutOperationTest::do_test_creation_with_bucket_activation_disabled(bool disabled) {
- setupDistributor(Redundancy(2), NodeCount(2), "distributor:1 storage:1");
+ setup_stripe(Redundancy(2), NodeCount(2), "distributor:1 storage:1");
disableBucketActivationInConfig(disabled);
Document::SP doc(createDummyDocument("test", "uri"));
@@ -630,7 +628,7 @@ TEST_F(PutOperationTest, replica_not_implicitly_activated_when_activation_is_dis
}
void PutOperationTest::set_up_3_nodes_and_send_put_with_create_bucket_acks() {
- setupDistributor(3, 3, "storage:3 distributor:1");
+ setup_stripe(3, 3, "storage:3 distributor:1");
Document::SP doc(createDummyDocument("test", "test"));
sendPut(createPut(doc));
diff --git a/storage/src/tests/distributor/read_for_write_visitor_operation_test.cpp b/storage/src/tests/distributor/read_for_write_visitor_operation_test.cpp
index e6f86f56d47..39ee88dea84 100644
--- a/storage/src/tests/distributor/read_for_write_visitor_operation_test.cpp
+++ b/storage/src/tests/distributor/read_for_write_visitor_operation_test.cpp
@@ -1,21 +1,21 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <tests/distributor/distributor_stripe_test_util.h>
#include <vespa/document/base/testdocman.h>
#include <vespa/document/bucket/fixed_bucket_spaces.h>
#include <vespa/document/repo/documenttyperepo.h>
#include <vespa/document/update/documentupdate.h>
#include <vespa/storage/common/reindexing_constants.h>
-#include <vespa/storage/distributor/operations/external/read_for_write_visitor_operation.h>
-#include <vespa/storage/distributor/operations/external/visitoroperation.h>
-#include <vespa/storage/distributor/distributor.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
#include <vespa/storage/distributor/distributor_stripe.h>
#include <vespa/storage/distributor/distributormetricsset.h>
+#include <vespa/storage/distributor/operations/external/read_for_write_visitor_operation.h>
+#include <vespa/storage/distributor/operations/external/visitoroperation.h>
#include <vespa/storage/distributor/pendingmessagetracker.h>
#include <vespa/storage/distributor/uuid_generator.h>
#include <vespa/storageapi/message/bucket.h>
#include <vespa/storageapi/message/persistence.h>
#include <vespa/storageapi/message/visitor.h>
-#include <tests/distributor/distributortestutil.h>
#include <vespa/vespalib/gtest/gtest.h>
using namespace ::testing;
@@ -46,7 +46,7 @@ struct MockUuidGenerator : UuidGenerator {
}
-struct ReadForWriteVisitorOperationStarterTest : Test, DistributorTestUtil {
+struct ReadForWriteVisitorOperationStarterTest : Test, DistributorStripeTestUtil {
document::TestDocMan _test_doc_man;
VisitorOperation::Config _default_config;
std::unique_ptr<OperationOwner> _op_owner;
@@ -65,7 +65,7 @@ struct ReadForWriteVisitorOperationStarterTest : Test, DistributorTestUtil {
void SetUp() override {
createLinks();
- setupDistributor(1, 1, "version:1 distributor:1 storage:1");
+ setup_stripe(1, 1, "version:1 distributor:1 storage:1");
_op_owner = std::make_unique<OperationOwner>(_sender, getClock());
_sender.setPendingMessageTracker(pending_message_tracker());
@@ -86,7 +86,7 @@ struct ReadForWriteVisitorOperationStarterTest : Test, DistributorTestUtil {
return std::make_shared<VisitorOperation>(
node_context(), operation_context(),
getDistributorBucketSpace(), cmd, _default_config,
- getDistributor().getMetrics().visits);
+ metrics().visits);
}
OperationSequencer& operation_sequencer() {
diff --git a/storage/src/tests/distributor/removebucketoperationtest.cpp b/storage/src/tests/distributor/removebucketoperationtest.cpp
index ed669865313..e877f4601b7 100644
--- a/storage/src/tests/distributor/removebucketoperationtest.cpp
+++ b/storage/src/tests/distributor/removebucketoperationtest.cpp
@@ -1,23 +1,23 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include "dummy_cluster_context.h"
#include <tests/common/dummystoragelink.h>
-#include <vespa/storageapi/message/persistence.h>
-#include <vespa/storageapi/message/bucket.h>
-#include <vespa/storage/distributor/operations/idealstate/removebucketoperation.h>
-#include <vespa/storage/distributor/idealstatemanager.h>
-#include <vespa/storage/distributor/distributor.h>
-#include <tests/distributor/distributortestutil.h>
+#include <tests/distributor/distributor_stripe_test_util.h>
#include <vespa/document/test/make_document_bucket.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
+#include <vespa/storage/distributor/idealstatemanager.h>
+#include <vespa/storage/distributor/operations/idealstate/removebucketoperation.h>
+#include <vespa/storageapi/message/bucket.h>
+#include <vespa/storageapi/message/persistence.h>
#include <vespa/vdslib/distribution/distribution.h>
#include <vespa/vespalib/gtest/gtest.h>
-#include "dummy_cluster_context.h"
using document::test::makeDocumentBucket;
using namespace ::testing;
namespace storage::distributor {
-struct RemoveBucketOperationTest : Test, DistributorTestUtil {
+struct RemoveBucketOperationTest : Test, DistributorStripeTestUtil {
void SetUp() override {
createLinks();
};
@@ -32,8 +32,8 @@ TEST_F(RemoveBucketOperationTest, simple) {
"0=10/100/1/t,"
"1=10/100/1/t,"
"2=10/100/1/t");
- setRedundancy(1);
- enableDistributorClusterState("distributor:1 storage:3");
+ set_redundancy(1);
+ enable_cluster_state("distributor:1 storage:3");
RemoveBucketOperation op(dummy_cluster_context,
BucketAndNodes(makeDocumentBucket(document::BucketId(16, 1)),
@@ -65,7 +65,7 @@ TEST_F(RemoveBucketOperationTest, bucket_info_mismatch_failure) {
getComponentRegisterImpl().setDistribution(
std::make_shared<lib::Distribution>(lib::Distribution::getDefaultDistributionConfig(1, 10)));
- enableDistributorClusterState("distributor:1 storage:2");
+ enable_cluster_state("distributor:1 storage:2");
RemoveBucketOperation op(dummy_cluster_context,
BucketAndNodes(makeDocumentBucket(document::BucketId(16, 1)),
@@ -100,7 +100,7 @@ TEST_F(RemoveBucketOperationTest, fail_with_invalid_bucket_info) {
getComponentRegisterImpl().setDistribution(
std::make_shared<lib::Distribution>(lib::Distribution::getDefaultDistributionConfig(1, 10)));
- enableDistributorClusterState("distributor:1 storage:2");
+ enable_cluster_state("distributor:1 storage:2");
RemoveBucketOperation op(dummy_cluster_context,
BucketAndNodes(makeDocumentBucket(document::BucketId(16, 1)),
diff --git a/storage/src/tests/distributor/removelocationtest.cpp b/storage/src/tests/distributor/removelocationtest.cpp
index 02164d67a46..889b5c833af 100644
--- a/storage/src/tests/distributor/removelocationtest.cpp
+++ b/storage/src/tests/distributor/removelocationtest.cpp
@@ -1,11 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/storageapi/message/removelocation.h>
-#include <vespa/storage/distributor/operations/external/removelocationoperation.h>
-#include <tests/distributor/distributortestutil.h>
+#include <tests/distributor/distributor_stripe_test_util.h>
#include <vespa/document/test/make_document_bucket.h>
-#include <vespa/storage/distributor/distributor.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
#include <vespa/storage/distributor/distributor_stripe.h>
+#include <vespa/storage/distributor/operations/external/removelocationoperation.h>
+#include <vespa/storageapi/message/removelocation.h>
#include <vespa/vespalib/gtest/gtest.h>
using document::test::makeDocumentBucket;
@@ -13,7 +13,7 @@ using namespace ::testing;
namespace storage::distributor {
-struct RemoveLocationOperationTest : Test, DistributorTestUtil {
+struct RemoveLocationOperationTest : Test, DistributorStripeTestUtil {
std::unique_ptr<RemoveLocationOperation> op;
void SetUp() override {
@@ -33,15 +33,14 @@ struct RemoveLocationOperationTest : Test, DistributorTestUtil {
doc_selection_parser(),
getDistributorBucketSpace(),
msg,
- getDistributor().getMetrics().
- removelocations);
+ metrics().removelocations);
op->start(_sender, framework::MilliSecTime(0));
}
};
TEST_F(RemoveLocationOperationTest, simple) {
- enableDistributorClusterState("distributor:1 storage:3");
+ enable_cluster_state("distributor:1 storage:3");
addNodesToBucketDB(document::BucketId(34, 0x000001234), "0=1,1=1");
addNodesToBucketDB(document::BucketId(34, 0x100001234), "0=1,2=1");
diff --git a/storage/src/tests/distributor/removeoperationtest.cpp b/storage/src/tests/distributor/removeoperationtest.cpp
index 77ecb5d7aeb..b3104cae623 100644
--- a/storage/src/tests/distributor/removeoperationtest.cpp
+++ b/storage/src/tests/distributor/removeoperationtest.cpp
@@ -1,13 +1,12 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <iomanip>
-#include <tests/common/dummystoragelink.h>
-#include <vespa/storage/distributor/distributor.h>
-#include <vespa/storage/distributor/distributor_stripe.h>
-#include <vespa/storageapi/message/persistence.h>
-#include <tests/distributor/distributortestutil.h>
+#include <tests/distributor/distributor_stripe_test_util.h>
#include <vespa/document/test/make_document_bucket.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
+#include <vespa/storage/distributor/distributor_stripe.h>
#include <vespa/storage/distributor/operations/external/removeoperation.h>
+#include <vespa/storageapi/message/persistence.h>
#include <vespa/vespalib/gtest/gtest.h>
using document::test::makeDocumentBucket;
@@ -15,7 +14,7 @@ using namespace ::testing;
namespace storage::distributor {
-struct RemoveOperationTest : Test, DistributorTestUtil {
+struct RemoveOperationTest : Test, DistributorStripeTestUtil {
document::DocumentId docId;
document::BucketId bucketId;
std::unique_ptr<RemoveOperation> op;
@@ -25,7 +24,7 @@ struct RemoveOperationTest : Test, DistributorTestUtil {
docId = document::DocumentId("id:test:test::uri");
bucketId = operation_context().make_split_bit_constrained_bucket_id(docId);
- enableDistributorClusterState("distributor:1 storage:4");
+ enable_cluster_state("distributor:1 storage:4");
};
void TearDown() override {
@@ -40,8 +39,7 @@ struct RemoveOperationTest : Test, DistributorTestUtil {
operation_context(),
getDistributorBucketSpace(),
msg,
- getDistributor().getMetrics().
- removes);
+ metrics().removes);
op->start(_sender, framework::MilliSecTime(0));
}
@@ -146,7 +144,7 @@ TEST_F(RemoveOperationTest, multiple_copies) {
}
TEST_F(RemoveOperationTest, can_send_remove_when_all_replica_nodes_retired) {
- enableDistributorClusterState("distributor:1 storage:1 .0.s:r");
+ enable_cluster_state("distributor:1 storage:1 .0.s:r");
addNodesToBucketDB(bucketId, "0=123");
sendRemove();
diff --git a/storage/src/tests/distributor/simplebucketprioritydatabasetest.cpp b/storage/src/tests/distributor/simplebucketprioritydatabasetest.cpp
index 21ef2fa18bd..129695f3e9e 100644
--- a/storage/src/tests/distributor/simplebucketprioritydatabasetest.cpp
+++ b/storage/src/tests/distributor/simplebucketprioritydatabasetest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/test/make_document_bucket.h>
#include <vespa/storage/distributor/maintenance/simplebucketprioritydatabase.h>
diff --git a/storage/src/tests/distributor/simplemaintenancescannertest.cpp b/storage/src/tests/distributor/simplemaintenancescannertest.cpp
index 1bf3809b135..46732624b46 100644
--- a/storage/src/tests/distributor/simplemaintenancescannertest.cpp
+++ b/storage/src/tests/distributor/simplemaintenancescannertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <tests/distributor/maintenancemocks.h>
#include <vespa/document/bucket/fixed_bucket_spaces.h>
@@ -294,4 +294,12 @@ TEST_F(SimpleMaintenanceScannerTest, merge_pending_maintenance_stats) {
EXPECT_EQ(exp.perNodeStats, result.perNodeStats);
}
+TEST_F(SimpleMaintenanceScannerTest, empty_bucket_db_is_immediately_done_by_default) {
+ auto res = _scanner->scanNext();
+ EXPECT_TRUE(res.isDone());
+ _scanner->reset();
+ res = _scanner->scanNext();
+ EXPECT_TRUE(res.isDone());
+}
+
}
diff --git a/storage/src/tests/distributor/splitbuckettest.cpp b/storage/src/tests/distributor/splitbuckettest.cpp
index ec58992ed3e..1e951029994 100644
--- a/storage/src/tests/distributor/splitbuckettest.cpp
+++ b/storage/src/tests/distributor/splitbuckettest.cpp
@@ -1,17 +1,16 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include "dummy_cluster_context.h"
+#include <tests/distributor/distributor_stripe_test_util.h>
#include <vespa/document/base/documentid.h>
#include <vespa/document/test/make_document_bucket.h>
-#include <vespa/storage/distributor/distributor.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
#include <vespa/storage/distributor/idealstatemanager.h>
#include <vespa/storage/distributor/operation_sequencer.h>
#include <vespa/storage/distributor/operations/idealstate/splitoperation.h>
#include <vespa/storageapi/message/bucketsplitting.h>
#include <vespa/storageapi/message/persistence.h>
-#include <tests/common/dummystoragelink.h>
-#include <tests/distributor/distributortestutil.h>
-#include <vespa/vespalib/util/size_literals.h>
#include <vespa/vespalib/gtest/gtest.h>
-#include "dummy_cluster_context.h"
+#include <vespa/vespalib/util/size_literals.h>
using document::test::makeDocumentBucket;
using namespace document;
@@ -19,7 +18,7 @@ using namespace ::testing;
namespace storage::distributor {
-struct SplitOperationTest : Test, DistributorTestUtil {
+struct SplitOperationTest : Test, DistributorStripeTestUtil {
uint32_t splitByteSize;
uint32_t tooLargeBucketSize;
uint32_t splitCount;
@@ -29,9 +28,10 @@ struct SplitOperationTest : Test, DistributorTestUtil {
void SetUp() override {
createLinks();
- getConfig().setSplitCount(splitCount);
- getConfig().setSplitSize(splitByteSize);
-
+ auto cfg = make_config();
+ cfg->setSplitCount(splitCount);
+ cfg->setSplitSize(splitByteSize);
+ configure_stripe(cfg);
}
void TearDown() override {
@@ -52,7 +52,7 @@ namespace {
}
TEST_F(SplitOperationTest, simple) {
- enableDistributorClusterState("distributor:1 storage:1");
+ enable_cluster_state("distributor:1 storage:1");
insertBucketInfo(document::BucketId(16, 1), 0, 0xabc, 1000,
tooLargeBucketSize, 250);
@@ -124,7 +124,7 @@ TEST_F(SplitOperationTest, multi_node_failure) {
getBucketDatabase().update(entry);
}
- enableDistributorClusterState("distributor:1 storage:2");
+ enable_cluster_state("distributor:1 storage:2");
SplitOperation op(dummy_cluster_context,
BucketAndNodes(makeDocumentBucket(document::BucketId(16, 1)),
@@ -198,7 +198,7 @@ TEST_F(SplitOperationTest, multi_node_failure) {
}
TEST_F(SplitOperationTest, copy_trusted_status_not_carried_over_after_split) {
- enableDistributorClusterState("distributor:1 storage:2");
+ enable_cluster_state("distributor:1 storage:2");
document::BucketId sourceBucket(16, 1);
/*
@@ -263,7 +263,7 @@ TEST_F(SplitOperationTest, operation_blocked_by_pending_join) {
clock.setAbsoluteTimeInSeconds(1);
OperationSequencer op_seq;
- enableDistributorClusterState("distributor:1 storage:2");
+ enable_cluster_state("distributor:1 storage:2");
document::BucketId joinTarget(2, 1);
std::vector<document::BucketId> joinSources = {
@@ -304,7 +304,7 @@ TEST_F(SplitOperationTest, split_is_blocked_by_locked_bucket) {
clock.setAbsoluteTimeInSeconds(1);
OperationSequencer op_seq;
- enableDistributorClusterState("distributor:1 storage:2");
+ enable_cluster_state("distributor:1 storage:2");
document::BucketId source_bucket(16, 1);
insertBucketInfo(source_bucket, 0, 0xabc, 1000, tooLargeBucketSize, 250);
diff --git a/storage/src/tests/distributor/statecheckerstest.cpp b/storage/src/tests/distributor/statecheckerstest.cpp
index e4ecb672171..c7d2638aa81 100644
--- a/storage/src/tests/distributor/statecheckerstest.cpp
+++ b/storage/src/tests/distributor/statecheckerstest.cpp
@@ -1,14 +1,14 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include "distributortestutil.h"
+#include "distributor_stripe_test_util.h"
#include <vespa/config-stor-distribution.h>
#include <vespa/document/bucket/fixed_bucket_spaces.h>
#include <vespa/document/test/make_bucket_space.h>
#include <vespa/document/test/make_document_bucket.h>
-#include <vespa/storage/distributor/bucketdbupdater.h>
-#include <vespa/storage/distributor/distributor.h>
-#include <vespa/storage/distributor/distributor_stripe.h>
+#include <vespa/storage/distributor/top_level_bucket_db_updater.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
#include <vespa/storage/distributor/distributor_bucket_space.h>
+#include <vespa/storage/distributor/distributor_stripe.h>
#include <vespa/storage/distributor/operations/idealstate/mergeoperation.h>
#include <vespa/storage/distributor/statecheckers.h>
#include <vespa/storageapi/message/persistence.h>
@@ -23,7 +23,7 @@ using namespace ::testing;
namespace storage::distributor {
-struct StateCheckersTest : Test, DistributorTestUtil {
+struct StateCheckersTest : Test, DistributorStripeTestUtil {
StateCheckersTest() = default;
void SetUp() override {
@@ -155,8 +155,8 @@ struct StateCheckersTest : Test, DistributorTestUtil {
uint32_t joinSize,
uint32_t minSplitBits,
const document::BucketId& bid,
- const PendingMessage& blocker = PendingMessage(),
- bool includePriority = false);
+ bool includePriority = false,
+ bool enableJoinForSiblingLessBuckets = false);
struct CheckerParams {
std::string _bucketInfo;
@@ -230,14 +230,14 @@ struct StateCheckersTest : Test, DistributorTestUtil {
document::BucketId bid(17, 0);
document::Bucket bucket(params._bucket_space, bid);
addNodesToBucketDB(bucket, params._bucketInfo);
- setRedundancy(params._redundancy);
- enableDistributorClusterState(params._clusterState);
- getConfig().set_merge_operations_disabled(params._merge_operations_disabled);
- getConfig().set_prioritize_global_bucket_merges(params._prioritize_global_bucket_merges);
+ set_redundancy(params._redundancy);
+ enable_cluster_state(params._clusterState);
+ vespa::config::content::core::StorDistributormanagerConfigBuilder config;
+ config.mergeOperationsDisabled = params._merge_operations_disabled;
+ config.prioritizeGlobalBucketMerges = params._prioritize_global_bucket_merges;
+ configure_stripe(config);
if (!params._pending_cluster_state.empty()) {
- auto cmd = std::make_shared<api::SetSystemStateCommand>(lib::ClusterState(params._pending_cluster_state));
- _distributor->onDown(cmd);
- tick(); // Trigger command processing and pending state setup.
+ simulate_set_pending_cluster_state(params._pending_cluster_state);
}
NodeMaintenanceStatsTracker statsTracker;
StateChecker::Context c(node_context(),
@@ -290,19 +290,20 @@ std::string StateCheckersTest::testSplit(uint32_t splitCount,
document::BucketId bid(17, 0);
addNodesToBucketDB(bid, bucketInfo);
-
+ auto cfg = make_config();
+ cfg->setSplitSize(splitSize);
+ cfg->setSplitCount(splitCount);
+ cfg->setMinimalBucketSplit(minSplitBits);
+ configure_stripe(cfg);
SplitBucketStateChecker checker;
NodeMaintenanceStatsTracker statsTracker;
StateChecker::Context c(node_context(), operation_context(),
getDistributorBucketSpace(), statsTracker, makeDocumentBucket(bid));
- getConfig().setSplitSize(splitSize);
- getConfig().setSplitCount(splitCount);
- getConfig().setMinimalBucketSplit(minSplitBits);
return testStateChecker(checker, c, false, blocker, includePriority);
}
TEST_F(StateCheckersTest, split) {
- setupDistributor(3, 10, "distributor:1 storage:2");
+ setup_stripe(3, 10, "distributor:1 storage:2");
EXPECT_EQ("[Splitting bucket because its maximum size (2000 b, 10 docs, 10 meta, 2000 b total) "
"is higher than the configured limit of (1000, 4294967295)]",
@@ -386,7 +387,7 @@ StateCheckersTest::testInconsistentSplit(const document::BucketId& bid,
}
TEST_F(StateCheckersTest, inconsistent_split) {
- setupDistributor(3, 10, "distributor:1 storage:2");
+ setup_stripe(3, 10, "distributor:1 storage:2");
insertBucketInfo(document::BucketId(16, 1), 1, 0x1, 1, 1);
EXPECT_EQ("NO OPERATIONS GENERATED",
@@ -416,7 +417,7 @@ TEST_F(StateCheckersTest, inconsistent_split) {
}
TEST_F(StateCheckersTest, split_can_be_scheduled_when_replicas_on_retired_nodes) {
- setupDistributor(Redundancy(2), NodeCount(2),
+ setup_stripe(Redundancy(2), NodeCount(2),
"distributor:1 storage:2, .0.s:r .1.s:r");
EXPECT_EQ("[Splitting bucket because its maximum size (2000 b, 10 docs, "
"10 meta, 2000 b total) is higher than the configured limit of "
@@ -429,13 +430,19 @@ StateCheckersTest::testJoin(uint32_t joinCount,
uint32_t joinSize,
uint32_t minSplitBits,
const document::BucketId& bid,
- const PendingMessage& blocker,
- bool includePriority)
+ bool includePriority,
+ bool enableJoinForSiblingLessBuckets)
{
+ PendingMessage blocker;
JoinBucketsStateChecker checker;
- getConfig().setJoinSize(joinSize);
- getConfig().setJoinCount(joinCount);
- getConfig().setMinimalBucketSplit(minSplitBits);
+ auto cfg = make_config();
+ vespa::config::content::core::StorDistributormanagerConfigBuilder builder;
+ builder.enableJoinForSiblingLessBuckets = enableJoinForSiblingLessBuckets;
+ cfg->configure(builder);
+ cfg->setJoinSize(joinSize);
+ cfg->setJoinCount(joinCount);
+ cfg->setMinimalBucketSplit(minSplitBits);
+ configure_stripe(cfg);
NodeMaintenanceStatsTracker statsTracker;
StateChecker::Context c(node_context(), operation_context(),
@@ -451,7 +458,7 @@ StateCheckersTest::insertJoinableBuckets()
}
TEST_F(StateCheckersTest, join) {
- setupDistributor(3, 10, "distributor:1 storage:2");
+ setup_stripe(3, 10, "distributor:1 storage:2");
insertJoinableBuckets();
EXPECT_EQ("BucketId(0x8000000000000001): "
@@ -468,7 +475,7 @@ TEST_F(StateCheckersTest, join) {
"BucketId(0x8400000100000001) because their size "
"(2 bytes, 2 docs) is less than the configured limit "
"of (0, 3) (pri 155)",
- testJoin(3, 0, 16, document::BucketId(33, 1), PendingMessage(), true));
+ testJoin(3, 0, 16, document::BucketId(33, 1), true));
insertJoinableBuckets();
// Should not generate joins for both pairs, just the primary
@@ -505,7 +512,7 @@ TEST_F(StateCheckersTest, join) {
* bit increases a one-way street.
*/
TEST_F(StateCheckersTest, do_not_join_below_cluster_state_bit_count) {
- setupDistributor(2, 2, "bits:16 distributor:1 storage:2");
+ setup_stripe(2, 2, "bits:16 distributor:1 storage:2");
// Insert sibling buckets at 16 bits that are small enough to be joined
// unless there is special logic for dealing with distribution bits.
insertBucketInfo(document::BucketId(16, 1), 1, 0x1, 1, 1);
@@ -521,11 +528,11 @@ StateCheckersTest::enableInconsistentJoinInConfig(bool enabled)
{
vespa::config::content::core::StorDistributormanagerConfigBuilder config;
config.enableInconsistentJoin = enabled;
- getConfig().configure(config);
+ configure_stripe(config);
}
TEST_F(StateCheckersTest, no_join_when_invalid_copy_exists) {
- setupDistributor(3, 10, "distributor:1 storage:3");
+ setup_stripe(3, 10, "distributor:1 storage:3");
insertBucketInfo(document::BucketId(33, 0x100000001), 1, 0x1, 1, 1);
// No join when there exists an invalid copy
@@ -536,7 +543,7 @@ TEST_F(StateCheckersTest, no_join_when_invalid_copy_exists) {
}
TEST_F(StateCheckersTest, no_join_on_different_nodes) {
- setupDistributor(3, 10, "distributor:1 storage:2");
+ setup_stripe(3, 10, "distributor:1 storage:2");
insertBucketInfo(document::BucketId(33, 0x000000001), 0, 0x1, 1, 1);
insertBucketInfo(document::BucketId(33, 0x100000001), 1, 0x1, 1, 1);
@@ -546,8 +553,8 @@ TEST_F(StateCheckersTest, no_join_on_different_nodes) {
}
TEST_F(StateCheckersTest, no_join_when_copy_count_above_redundancy_levels_for_left_sibling) {
- setupDistributor(3, 10, "distributor:1 storage:2");
- setRedundancy(1);
+ setup_stripe(3, 10, "distributor:1 storage:2");
+ set_redundancy(1);
insertBucketInfo(document::BucketId(33, 0x000000001), 0, 0x1, 1, 1);
insertBucketInfo(document::BucketId(33, 0x000000001), 1, 0x1, 1, 1);
insertBucketInfo(document::BucketId(33, 0x100000001), 0, 0x1, 1, 1);
@@ -556,8 +563,8 @@ TEST_F(StateCheckersTest, no_join_when_copy_count_above_redundancy_levels_for_le
}
TEST_F(StateCheckersTest, no_join_when_copy_count_above_redundancy_levels_for_right_sibling) {
- setupDistributor(3, 10, "distributor:1 storage:2");
- setRedundancy(1);
+ setup_stripe(3, 10, "distributor:1 storage:2");
+ set_redundancy(1);
insertBucketInfo(document::BucketId(33, 0x000000001), 1, 0x1, 1, 1);
insertBucketInfo(document::BucketId(33, 0x100000001), 0, 0x1, 1, 1);
insertBucketInfo(document::BucketId(33, 0x100000001), 1, 0x1, 1, 1);
@@ -566,8 +573,8 @@ TEST_F(StateCheckersTest, no_join_when_copy_count_above_redundancy_levels_for_ri
}
TEST_F(StateCheckersTest, no_join_when_copy_count_above_redundancy_levels_for_both_siblings) {
- setupDistributor(3, 10, "distributor:1 storage:2");
- setRedundancy(1);
+ setup_stripe(3, 10, "distributor:1 storage:2");
+ set_redundancy(1);
insertBucketInfo(document::BucketId(33, 0x000000001), 0, 0x1, 1, 1);
insertBucketInfo(document::BucketId(33, 0x000000001), 1, 0x1, 1, 1);
insertBucketInfo(document::BucketId(33, 0x100000001), 0, 0x1, 1, 1);
@@ -588,9 +595,9 @@ StateCheckersTest::testSynchronizeAndMove(const std::string& bucketInfo,
addNodesToBucketDB(bid, bucketInfo);
SynchronizeAndMoveStateChecker checker;
- setRedundancy(redundancy);
+ set_redundancy(redundancy);
- enableDistributorClusterState(clusterState);
+ enable_cluster_state(clusterState);
NodeMaintenanceStatsTracker statsTracker;
StateChecker::Context c(node_context(), operation_context(),
getDistributorBucketSpace(), statsTracker, makeDocumentBucket(bid));
@@ -820,10 +827,10 @@ StateCheckersTest::testDeleteExtraCopies(
document::BucketId bid(17, 0);
addNodesToBucketDB(bid, bucketInfo);
- setRedundancy(redundancy);
+ set_redundancy(redundancy);
if (!clusterState.empty()) {
- enableDistributorClusterState(clusterState);
+ enable_cluster_state(clusterState);
}
DeleteExtraCopiesStateChecker checker;
NodeMaintenanceStatsTracker statsTracker;
@@ -834,7 +841,7 @@ StateCheckersTest::testDeleteExtraCopies(
TEST_F(StateCheckersTest, delete_extra_copies) {
- setupDistributor(2, 100, "distributor:1 storage:4");
+ setup_stripe(2, 100, "distributor:1 storage:4");
{
auto& distributorBucketSpace(getIdealStateManager().getBucketSpaceRepo().get(makeBucketSpace()));
@@ -911,7 +918,7 @@ TEST_F(StateCheckersTest, delete_extra_copies) {
}
TEST_F(StateCheckersTest, do_not_delete_active_extra_copies) {
- setupDistributor(2, 100, "distributor:1 storage:4");
+ setup_stripe(2, 100, "distributor:1 storage:4");
EXPECT_EQ("NO OPERATIONS GENERATED",
testDeleteExtraCopies("3=3/3/3/t,1=3/3/3/t,2=3/3/3/t/a"))
@@ -919,7 +926,7 @@ TEST_F(StateCheckersTest, do_not_delete_active_extra_copies) {
}
TEST_F(StateCheckersTest, consistent_copies_on_retired_nodes_may_be_deleted) {
- setupDistributor(2, 100, "distributor:1 storage:4 .1.s:r");
+ setup_stripe(2, 100, "distributor:1 storage:4 .1.s:r");
EXPECT_EQ("[Removing redundant in-sync copy from node 1]",
testDeleteExtraCopies("3=3/3/3/t,1=3/3/3/t,2=3/3/3/t"))
@@ -927,7 +934,7 @@ TEST_F(StateCheckersTest, consistent_copies_on_retired_nodes_may_be_deleted) {
}
TEST_F(StateCheckersTest, redundant_copy_deleted_even_when_all_nodes_retired) {
- setupDistributor(2, 100, "distributor:1 storage:4 "
+ setup_stripe(2, 100, "distributor:1 storage:4 "
".0.s:r .1.s:r .2.s:r .3.s:r");
EXPECT_EQ("[Removing redundant in-sync copy from node 2]",
@@ -940,7 +947,7 @@ std::string StateCheckersTest::testBucketState(
bool includePriority)
{
document::BucketId bid(17, 0);
- setRedundancy(redundancy);
+ set_redundancy(redundancy);
addNodesToBucketDB(bid, bucketInfo);
BucketStateStateChecker checker;
@@ -952,7 +959,7 @@ std::string StateCheckersTest::testBucketState(
}
TEST_F(StateCheckersTest, bucket_state) {
- setupDistributor(2, 100, "distributor:1 storage:4");
+ setup_stripe(2, 100, "distributor:1 storage:4");
{
// Set config explicitly so we can compare priorities for differing
@@ -960,7 +967,9 @@ TEST_F(StateCheckersTest, bucket_state) {
DistributorConfiguration::MaintenancePriorities mp;
mp.activateNoExistingActive = 90;
mp.activateWithExistingActive = 120;
- getConfig().setMaintenancePriorities(mp);
+ auto cfg = make_config();
+ cfg->setMaintenancePriorities(mp);
+ configure_stripe(cfg);
}
EXPECT_EQ("NO OPERATIONS GENERATED",
@@ -1046,7 +1055,7 @@ TEST_F(StateCheckersTest, bucket_state) {
* details.
*/
TEST_F(StateCheckersTest, do_not_activate_non_ready_copies_when_ideal_node_in_maintenance) {
- setupDistributor(2, 100, "distributor:1 storage:4 .1.s:m");
+ setup_stripe(2, 100, "distributor:1 storage:4 .1.s:m");
// Ideal node 1 is in maintenance and no ready copy available.
EXPECT_EQ("NO OPERATIONS GENERATED",
testBucketState("2=8/9/10/t/i/u,3=5/6/7"));
@@ -1060,7 +1069,7 @@ TEST_F(StateCheckersTest, do_not_activate_non_ready_copies_when_ideal_node_in_ma
* See bug 6395693 for a set of reasons why.
*/
TEST_F(StateCheckersTest, do_not_change_active_state_for_inconsistently_split_buckets) {
- setupDistributor(2, 100, "distributor:1 storage:4");
+ setup_stripe(2, 100, "distributor:1 storage:4");
// Running state checker on a leaf:
addNodesToBucketDB(document::BucketId(16, 0), "0=2");
EXPECT_EQ("NO OPERATIONS GENERATED",
@@ -1086,7 +1095,7 @@ TEST_F(StateCheckersTest, do_not_change_active_state_for_inconsistently_split_bu
* See bug 7278932.
*/
TEST_F(StateCheckersTest, no_active_change_for_non_ideal_copies_when_otherwise_identical) {
- setupDistributor(2, 100, "distributor:1 storage:50");
+ setup_stripe(2, 100, "distributor:1 storage:50");
// 1 is more ideal than 3 in this state, but since they're both not part
// of the #redundancy ideal set, activation should not change hands.
EXPECT_EQ("NO OPERATIONS GENERATED",
@@ -1142,14 +1151,16 @@ std::shared_ptr<lib::Distribution> make_3x3_group_config() {
}
TEST_F(StateCheckersTest, bucket_state_per_group) {
- setupDistributor(6, 20, "distributor:1 storage:12 .2.s:d .4.s:d .7.s:d");
- triggerDistributionChange(make_3x3_group_config());
+ setup_stripe(6, 20, "distributor:1 storage:12 .2.s:d .4.s:d .7.s:d");
+ trigger_distribution_change(make_3x3_group_config());
{
DistributorConfiguration::MaintenancePriorities mp;
mp.activateNoExistingActive = 90;
mp.activateWithExistingActive = 120;
- getConfig().setMaintenancePriorities(mp);
+ auto cfg = make_config();
+ cfg->setMaintenancePriorities(mp);
+ configure_stripe(cfg);
}
// Node 1 and 8 is is ideal state
@@ -1186,9 +1197,11 @@ TEST_F(StateCheckersTest, bucket_state_per_group) {
TEST_F(StateCheckersTest, do_not_activate_replicas_that_are_out_of_sync_with_majority) {
// TODO why this strange distribution...
// groups: [0, 1, 3] [5, 6, 8] [9, 10, 11]
- setupDistributor(6, 12, "distributor:1 storage:12 .2.s:d .4.s:d .7.s:d");
- triggerDistributionChange(make_3x3_group_config());
- getConfig().set_max_activation_inhibited_out_of_sync_groups(3);
+ setup_stripe(6, 12, "distributor:1 storage:12 .2.s:d .4.s:d .7.s:d");
+ trigger_distribution_change(make_3x3_group_config());
+ auto cfg = make_config();
+ cfg->set_max_activation_inhibited_out_of_sync_groups(3);
+ configure_stripe(cfg);
// 5 is out of sync with 0 and 9 and will NOT be activated.
EXPECT_EQ("[Setting node 0 as active: copy has 3 docs]"
@@ -1221,9 +1234,11 @@ TEST_F(StateCheckersTest, do_not_activate_replicas_that_are_out_of_sync_with_maj
TEST_F(StateCheckersTest, replica_activation_inhibition_can_be_limited_to_max_n_groups) {
// groups: [0, 1, 3] [5, 6, 8] [9, 10, 11]
- setupDistributor(6, 12, "distributor:1 storage:12 .2.s:d .4.s:d .7.s:d");
- triggerDistributionChange(make_3x3_group_config());
- getConfig().set_max_activation_inhibited_out_of_sync_groups(1);
+ setup_stripe(6, 12, "distributor:1 storage:12 .2.s:d .4.s:d .7.s:d");
+ trigger_distribution_change(make_3x3_group_config());
+ auto cfg = make_config();
+ cfg->set_max_activation_inhibited_out_of_sync_groups(1);
+ configure_stripe(cfg);
// We count metadata majorities independent of groups. Let there be 3 in-sync replicas in
// group 0, 1 out of sync in group 1 and 1 out of sync in group 2. Unless we have
@@ -1236,9 +1251,11 @@ TEST_F(StateCheckersTest, replica_activation_inhibition_can_be_limited_to_max_n_
TEST_F(StateCheckersTest, activate_replicas_that_are_out_of_sync_with_majority_if_inhibition_config_disabled) {
// groups: [0, 1, 3] [5, 6, 8] [9, 10, 11]
- setupDistributor(6, 12, "distributor:1 storage:12 .2.s:d .4.s:d .7.s:d");
- triggerDistributionChange(make_3x3_group_config());
- getConfig().set_max_activation_inhibited_out_of_sync_groups(0);
+ setup_stripe(6, 12, "distributor:1 storage:12 .2.s:d .4.s:d .7.s:d");
+ trigger_distribution_change(make_3x3_group_config());
+ auto cfg = make_config();
+ cfg->set_max_activation_inhibited_out_of_sync_groups(0);
+ configure_stripe(cfg);
// 5 is out of sync with 0 and 9 but will still be activated since the config is false.
EXPECT_EQ("[Setting node 0 as active: copy has 3 docs]"
@@ -1251,14 +1268,14 @@ TEST_F(StateCheckersTest, allow_activation_of_retired_nodes) {
// All nodes in retired state implies that the ideal state is empty. But
// we still want to be able to shuffle bucket activations around in order
// to preserve coverage.
- setupDistributor(2, 2, "distributor:1 storage:2 .0.s:r .1.s:r");
+ setup_stripe(2, 2, "distributor:1 storage:2 .0.s:r .1.s:r");
EXPECT_EQ("[Setting node 1 as active: copy has 6 docs]"
"[Setting node 0 as inactive]",
testBucketState("0=2/3/4/u/a,1=5/6/7/t"));
}
TEST_F(StateCheckersTest, inhibit_bucket_activation_if_disabled_in_config) {
- setupDistributor(2, 4, "distributor:1 storage:4");
+ setup_stripe(2, 4, "distributor:1 storage:4");
disableBucketActivationInConfig(true);
// Node 1 is in ideal state and only replica and should be activated in
@@ -1268,7 +1285,7 @@ TEST_F(StateCheckersTest, inhibit_bucket_activation_if_disabled_in_config) {
}
TEST_F(StateCheckersTest, inhibit_bucket_deactivation_if_disabled_in_config) {
- setupDistributor(2, 4, "distributor:1 storage:4");
+ setup_stripe(2, 4, "distributor:1 storage:4");
disableBucketActivationInConfig(true);
// Multiple replicas which would have been deactivated. This test is mostly
@@ -1291,8 +1308,10 @@ std::string StateCheckersTest::testGarbageCollection(
getBucketDatabase().update(e);
GarbageCollectionStateChecker checker;
- getConfig().setGarbageCollection("music", std::chrono::seconds(checkInterval));
- getConfig().setLastGarbageCollectionChangeTime(vespalib::steady_time(std::chrono::seconds(lastChangeTime)));
+ auto cfg = make_config();
+ cfg->setGarbageCollection("music", std::chrono::seconds(checkInterval));
+ cfg->setLastGarbageCollectionChangeTime(vespalib::steady_time(std::chrono::seconds(lastChangeTime)));
+ configure_stripe(cfg);
NodeMaintenanceStatsTracker statsTracker;
StateChecker::Context c(node_context(), operation_context(),
getDistributorBucketSpace(), statsTracker,
@@ -1355,7 +1374,7 @@ TEST_F(StateCheckersTest, gc_ops_are_prioritized_with_low_priority_category) {
TEST_F(StateCheckersTest, gc_inhibited_when_ideal_node_in_maintenance) {
// Redundancy is 3, so with only 3 nodes, node 1 is guaranteed to be part of
// the ideal state of any bucket in the system.
- setupDistributor(3, 3, "distributor:1 storage:3 .1.s:m");
+ setup_stripe(3, 3, "distributor:1 storage:3 .1.s:m");
document::BucketId bucket(17, 0);
addNodesToBucketDB(bucket, "0=10/100/1/true,"
"1=10/100/1/true,"
@@ -1365,8 +1384,10 @@ TEST_F(StateCheckersTest, gc_inhibited_when_ideal_node_in_maintenance) {
getBucketDatabase().update(e);
GarbageCollectionStateChecker checker;
- getConfig().setGarbageCollection("music", 3600s);
- getConfig().setLastGarbageCollectionChangeTime(vespalib::steady_time(vespalib::duration::zero()));
+ auto cfg = make_config();
+ cfg->setGarbageCollection("music", 3600s);
+ cfg->setLastGarbageCollectionChangeTime(vespalib::steady_time(vespalib::duration::zero()));
+ configure_stripe(cfg);
NodeMaintenanceStatsTracker statsTracker;
StateChecker::Context c(node_context(), operation_context(),
getDistributorBucketSpace(), statsTracker,
@@ -1405,10 +1426,7 @@ TEST_F(StateCheckersTest, no_remove_when_ideal_node_in_maintenance) {
* See bug 6768991 for context.
*/
TEST_F(StateCheckersTest, stepwise_join_for_small_buckets_without_siblings) {
- setupDistributor(3, 10, "distributor:1 storage:2 bits:1");
- vespa::config::content::core::StorDistributormanagerConfigBuilder config;
- config.enableJoinForSiblingLessBuckets = true;
- getConfig().configure(config);
+ setup_stripe(3, 10, "distributor:1 storage:2 bits:1");
// Buckets without siblings but that should be step-wise joined back
// into bucket (2, 1).
insertBucketInfo(document::BucketId(3, 1), 1, 0x1, 1, 1);
@@ -1418,7 +1436,7 @@ TEST_F(StateCheckersTest, stepwise_join_for_small_buckets_without_siblings) {
"BucketId(0x0c00000000000001) because their size "
"(1 bytes, 1 docs) is less than the configured limit "
"of (100, 10)",
- testJoin(10, 100, 2, document::BucketId(3, 1)));
+ testJoin(10, 100, 2, document::BucketId(3, 1), false, true));
// Other bucket should be joined as well. Together the two join targets
// will transform into a mighty sibling pair that can rule the galaxy
@@ -1430,14 +1448,14 @@ TEST_F(StateCheckersTest, stepwise_join_for_small_buckets_without_siblings) {
"BucketId(0x0c00000000000003) because their size "
"(1 bytes, 1 docs) is less than the configured limit "
"of (100, 10)",
- testJoin(10, 100, 2, document::BucketId(3, 0x3)));
+ testJoin(10, 100, 2, document::BucketId(3, 0x3), false, true));
}
TEST_F(StateCheckersTest, no_stepwise_join_when_disabled_through_config) {
- setupDistributor(3, 10, "distributor:1 storage:2 bits:1");
+ setup_stripe(3, 10, "distributor:1 storage:2 bits:1");
vespa::config::content::core::StorDistributormanagerConfigBuilder config;
config.enableJoinForSiblingLessBuckets = false;
- getConfig().configure(config);
+ configure_stripe(config);
// Buckets without siblings but that would have been step-wise joined back
// into bucket 1 if it had been config-enabled.
@@ -1448,10 +1466,10 @@ TEST_F(StateCheckersTest, no_stepwise_join_when_disabled_through_config) {
}
TEST_F(StateCheckersTest, no_stepwise_join_when_single_sibling_too_large) {
- setupDistributor(3, 10, "distributor:1 storage:2 bits:1");
+ setup_stripe(3, 10, "distributor:1 storage:2 bits:1");
vespa::config::content::core::StorDistributormanagerConfigBuilder config;
config.enableJoinForSiblingLessBuckets = true;
- getConfig().configure(config);
+ configure_stripe(config);
// Bucket is exactly at the boundary where it's too big.
insertBucketInfo(document::BucketId(3, 1), 1, 0x1, 10, 100);
@@ -1461,10 +1479,7 @@ TEST_F(StateCheckersTest, no_stepwise_join_when_single_sibling_too_large) {
}
TEST_F(StateCheckersTest, stepwise_join_may_skip_multiple_bits_when_consistent) {
- setupDistributor(2, 10, "distributor:1 storage:2 bits:8");
- vespa::config::content::core::StorDistributormanagerConfigBuilder config;
- config.enableJoinForSiblingLessBuckets = true;
- getConfig().configure(config);
+ setup_stripe(2, 10, "distributor:1 storage:2 bits:8");
insertBucketInfo(document::BucketId(16, 1), 1, 0x1, 1, 1);
// No buckets further up in the tree, can join up to the distribution bit
@@ -1474,14 +1489,11 @@ TEST_F(StateCheckersTest, stepwise_join_may_skip_multiple_bits_when_consistent)
"BucketId(0x4000000000000001) because their size "
"(1 bytes, 1 docs) is less than the configured limit "
"of (100, 10)",
- testJoin(10, 100, 8, document::BucketId(16, 1)));
+ testJoin(10, 100, 8, document::BucketId(16, 1), false, true));
}
TEST_F(StateCheckersTest, stepwise_join_does_not_skip_beyond_level_with_sibling) {
- setupDistributor(2, 10, "distributor:1 storage:2 bits:8");
- vespa::config::content::core::StorDistributormanagerConfigBuilder config;
- config.enableJoinForSiblingLessBuckets = true;
- getConfig().configure(config);
+ setup_stripe(2, 10, "distributor:1 storage:2 bits:8");
// All 0-branch children
insertBucketInfo(document::BucketId(16, 0), 1, 0x1, 1, 1);
@@ -1494,11 +1506,11 @@ TEST_F(StateCheckersTest, stepwise_join_does_not_skip_beyond_level_with_sibling)
"BucketId(0x4000000000000000) because their size "
"(1 bytes, 1 docs) is less than the configured limit "
"of (100, 10)",
- testJoin(10, 100, 8, document::BucketId(16, 0)));
+ testJoin(10, 100, 8, document::BucketId(16, 0), false, true));
}
TEST_F(StateCheckersTest, join_can_be_scheduled_when_replicas_on_retired_nodes) {
- setupDistributor(1, 1, "distributor:1 storage:1 .0.s.:r");
+ setup_stripe(1, 1, "distributor:1 storage:1 .0.s.:r");
insertJoinableBuckets();
EXPECT_EQ("BucketId(0x8000000000000001): "
"[Joining buckets BucketId(0x8400000000000001) and "
@@ -1510,7 +1522,7 @@ TEST_F(StateCheckersTest, join_can_be_scheduled_when_replicas_on_retired_nodes)
TEST_F(StateCheckersTest, context_populates_ideal_state_containers) {
// 1 and 3 are ideal nodes for bucket {17, 0}
- setupDistributor(2, 100, "distributor:1 storage:4");
+ setup_stripe(2, 100, "distributor:1 storage:4");
NodeMaintenanceStatsTracker statsTracker;
StateChecker::Context c(node_context(), operation_context(),
@@ -1543,7 +1555,7 @@ public:
}
StateCheckerRunner& redundancy(uint32_t red) {
- _fixture.setRedundancy(red);
+ _fixture.set_redundancy(red);
return *this;
}
diff --git a/storage/src/tests/distributor/statoperationtest.cpp b/storage/src/tests/distributor/statoperationtest.cpp
index be4fe414b8b..e3323d601df 100644
--- a/storage/src/tests/distributor/statoperationtest.cpp
+++ b/storage/src/tests/distributor/statoperationtest.cpp
@@ -1,13 +1,12 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <tests/common/dummystoragelink.h>
-#include <vespa/storageapi/message/stat.h>
-#include <tests/distributor/distributortestutil.h>
+#include <tests/distributor/distributor_stripe_test_util.h>
#include <vespa/document/test/make_document_bucket.h>
-#include <vespa/storage/distributor/operations/external/statbucketoperation.h>
-#include <vespa/storage/distributor/operations/external/statbucketlistoperation.h>
-#include <vespa/storage/distributor/distributor.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
#include <vespa/storage/distributor/distributor_bucket_space.h>
+#include <vespa/storage/distributor/operations/external/statbucketlistoperation.h>
+#include <vespa/storage/distributor/operations/external/statbucketoperation.h>
+#include <vespa/storageapi/message/stat.h>
#include <vespa/vespalib/gtest/gtest.h>
#include <gmock/gmock.h>
@@ -16,7 +15,7 @@ using namespace ::testing;
namespace storage::distributor {
-struct StatOperationTest : Test, DistributorTestUtil {
+struct StatOperationTest : Test, DistributorStripeTestUtil {
void SetUp() override {
createLinks();
};
@@ -27,7 +26,7 @@ struct StatOperationTest : Test, DistributorTestUtil {
};
TEST_F(StatOperationTest, bucket_info) {
- enableDistributorClusterState("distributor:1 storage:2");
+ enable_cluster_state("distributor:1 storage:2");
addNodesToBucketDB(document::BucketId(16, 5), "0=4/2/100,1=4/2/100");
@@ -58,10 +57,12 @@ TEST_F(StatOperationTest, bucket_info) {
}
TEST_F(StatOperationTest, bucket_list) {
- setupDistributor(2, 2, "distributor:1 storage:2");
+ setup_stripe(2, 2, "distributor:1 storage:2");
- getConfig().setSplitCount(10);
- getConfig().setSplitSize(100);
+ auto cfg = make_config();
+ cfg->setSplitCount(10);
+ cfg->setSplitSize(100);
+ configure_stripe(cfg);
for (uint32_t i = 0; i < 2; ++i) {
insertBucketInfo(document::BucketId(16, 5), i,
diff --git a/storage/src/tests/distributor/statusreporterdelegatetest.cpp b/storage/src/tests/distributor/statusreporterdelegatetest.cpp
index 9e66f1920e2..49460850515 100644
--- a/storage/src/tests/distributor/statusreporterdelegatetest.cpp
+++ b/storage/src/tests/distributor/statusreporterdelegatetest.cpp
@@ -1,7 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <tests/common/testhelper.h>
-#include <tests/distributor/distributortestutil.h>
+#include <tests/common/teststorageapp.h>
#include <vespa/storage/distributor/statusreporterdelegate.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/storage/src/tests/distributor/throttlingoperationstartertest.cpp b/storage/src/tests/distributor/throttlingoperationstartertest.cpp
index 2dc4561068b..c657c5390fc 100644
--- a/storage/src/tests/distributor/throttlingoperationstartertest.cpp
+++ b/storage/src/tests/distributor/throttlingoperationstartertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/distributor/throttlingoperationstarter.h>
#include <tests/distributor/maintenancemocks.h>
diff --git a/storage/src/tests/distributor/top_level_bucket_db_updater_test.cpp b/storage/src/tests/distributor/top_level_bucket_db_updater_test.cpp
new file mode 100644
index 00000000000..fe8a607c9ae
--- /dev/null
+++ b/storage/src/tests/distributor/top_level_bucket_db_updater_test.cpp
@@ -0,0 +1,2665 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include <vespa/storageapi/message/persistence.h>
+#include <vespa/storage/distributor/top_level_bucket_db_updater.h>
+#include <vespa/storage/distributor/bucket_space_distribution_context.h>
+#include <vespa/storage/distributor/distributormetricsset.h>
+#include <vespa/storage/distributor/pending_bucket_space_db_transition.h>
+#include <vespa/storage/distributor/outdated_nodes_map.h>
+#include <vespa/storage/storageutil/distributorstatecache.h>
+#include <tests/distributor/top_level_distributor_test_util.h>
+#include <vespa/document/test/make_document_bucket.h>
+#include <vespa/document/test/make_bucket_space.h>
+#include <vespa/document/bucket/fixed_bucket_spaces.h>
+#include <vespa/metrics/updatehook.h>
+#include <vespa/storage/distributor/simpleclusterinformation.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
+#include <vespa/storage/distributor/distributor_stripe.h>
+#include <vespa/storage/distributor/distributor_bucket_space.h>
+#include <vespa/vespalib/gtest/gtest.h>
+#include <vespa/vespalib/text/stringtokenizer.h>
+#include <sstream>
+#include <iomanip>
+
+using namespace storage::api;
+using namespace storage::lib;
+using document::test::makeDocumentBucket;
+using document::test::makeBucketSpace;
+using document::BucketSpace;
+using document::FixedBucketSpaces;
+using document::BucketId;
+using document::Bucket;
+
+using namespace ::testing;
+
+namespace storage::distributor {
+
+class TopLevelBucketDBUpdaterTest : public Test,
+ public TopLevelDistributorTestUtil
+{
+public:
+ using OutdatedNodesMap = dbtransition::OutdatedNodesMap;
+
+ TopLevelBucketDBUpdaterTest();
+ ~TopLevelBucketDBUpdaterTest() override;
+
+ std::vector<document::BucketSpace> _bucket_spaces;
+
+ size_t message_count(size_t messagesPerBucketSpace) const {
+ return messagesPerBucketSpace * _bucket_spaces.size();
+ }
+
+ using NodeCount = int;
+ using Redundancy = int;
+
+ void SetUp() override {
+ create_links();
+ _bucket_spaces = bucket_spaces();
+ // Disable deferred activation by default (at least for now) to avoid breaking the entire world.
+ bucket_db_updater().set_stale_reads_enabled(false);
+ setup_distributor(Redundancy(2), NodeCount(10), "cluster:d");
+ };
+
+ void TearDown() override {
+ close();
+ }
+
+ std::shared_ptr<RequestBucketInfoReply> make_fake_bucket_reply(
+ const lib::ClusterState& state,
+ const RequestBucketInfoCommand& cmd,
+ int storageIndex,
+ uint32_t bucketCount,
+ uint32_t invalidBucketCount = 0)
+ {
+ auto sreply = std::make_shared<RequestBucketInfoReply>(cmd);
+ sreply->setAddress(storage_address(storageIndex));
+
+ auto& vec = sreply->getBucketInfo();
+
+ for (uint32_t i=0; i<bucketCount + invalidBucketCount; i++) {
+ document::BucketId bucket(16, i);
+ if (!distributor_bucket_space(bucket).owns_bucket_in_state(state, bucket)) {
+ continue;
+ }
+
+ std::vector<uint16_t> nodes;
+ distributor_bucket_space(bucket).getDistribution().getIdealNodes(
+ lib::NodeType::STORAGE, state, bucket, nodes);
+
+ for (uint32_t j = 0; j < nodes.size(); ++j) {
+ if (nodes[j] == storageIndex) {
+ if (i >= bucketCount) {
+ vec.push_back(api::RequestBucketInfoReply::Entry(
+ document::BucketId(16, i),
+ api::BucketInfo()));
+ } else {
+ vec.push_back(api::RequestBucketInfoReply::Entry(
+ document::BucketId(16, i),
+ api::BucketInfo(10,1,1)));
+ }
+ }
+ }
+ }
+
+ return sreply;
+ }
+
+ void fake_bucket_reply(const lib::ClusterState &state,
+ const api::StorageCommand &cmd,
+ uint32_t bucket_count,
+ uint32_t invalid_bucket_count = 0)
+ {
+ ASSERT_EQ(cmd.getType(), MessageType::REQUESTBUCKETINFO);
+ const api::StorageMessageAddress& address(*cmd.getAddress());
+ bucket_db_updater().onRequestBucketInfoReply(
+ make_fake_bucket_reply(state,
+ dynamic_cast<const RequestBucketInfoCommand &>(cmd),
+ address.getIndex(),
+ bucket_count,
+ invalid_bucket_count));
+ }
+
+ void send_fake_reply_for_single_bucket_request(
+ const api::RequestBucketInfoCommand& rbi)
+ {
+ ASSERT_EQ(size_t(1), rbi.getBuckets().size());
+ const document::BucketId& bucket(rbi.getBuckets()[0]);
+
+ auto reply = std::make_shared<api::RequestBucketInfoReply>(rbi);
+ reply->getBucketInfo().push_back(
+ api::RequestBucketInfoReply::Entry(bucket, api::BucketInfo(20, 10, 12, 50, 60, true, true)));
+ stripe_of_bucket(bucket).bucket_db_updater().onRequestBucketInfoReply(reply);
+ }
+
+ std::string verify_bucket(document::BucketId id, const lib::ClusterState& state) {
+ BucketDatabase::Entry entry = get_bucket(id);
+ if (!entry.valid()) {
+ return vespalib::make_string("%s doesn't exist in DB", id.toString().c_str());
+ }
+
+ std::vector<uint16_t> nodes;
+ distributor_bucket_space(id).getDistribution().getIdealNodes(
+ lib::NodeType::STORAGE, state, document::BucketId(id), nodes);
+
+ if (nodes.size() != entry->getNodeCount()) {
+ return vespalib::make_string("Bucket Id %s has %d nodes in "
+ "ideal state, but has only %d in DB",
+ id.toString().c_str(),
+ (int)nodes.size(),
+ (int)entry->getNodeCount());
+ }
+
+ for (uint32_t i = 0; i<nodes.size(); i++) {
+ bool found = false;
+
+ for (uint32_t j = 0; j<entry->getNodeCount(); j++) {
+ if (nodes[i] == entry->getNodeRef(j).getNode()) {
+ found = true;
+ }
+ }
+
+ if (!found) {
+ return vespalib::make_string(
+ "Bucket Id %s has no copy from node %d",
+ id.toString().c_str(),
+ nodes[i]);
+ }
+ }
+
+ return "";
+ }
+
+ struct OrderByIncreasingNodeIndex {
+ template <typename T>
+ bool operator()(const T& lhs, const T& rhs) {
+ return (lhs->getAddress()->getIndex()
+ < rhs->getAddress()->getIndex());
+ }
+ };
+
+ void sort_sent_messages_by_index(DistributorMessageSenderStub& sender,
+ size_t sortFromOffset = 0)
+ {
+ std::sort(sender.commands().begin() + sortFromOffset,
+ sender.commands().end(),
+ OrderByIncreasingNodeIndex());
+ }
+
+ void set_cluster_state(const lib::ClusterState& state) {
+ const size_t size_before_state = _sender.commands().size();
+ bucket_db_updater().onSetSystemState(std::make_shared<api::SetSystemStateCommand>(state));
+ // A lot of test logic has the assumption that all messages sent as a
+ // result of cluster state changes will be in increasing index order
+ // (for simplicity, not because this is required for correctness).
+ // Only sort the messages that arrived as a result of the state, don't
+ // jumble the sorting with any existing messages.
+ sort_sent_messages_by_index(_sender, size_before_state);
+ }
+
+ void set_cluster_state_bundle(const lib::ClusterStateBundle& state) {
+ const size_t size_before_state = _sender.commands().size();
+ bucket_db_updater().onSetSystemState(std::make_shared<api::SetSystemStateCommand>(state));
+ sort_sent_messages_by_index(_sender, size_before_state);
+ }
+
+ void set_cluster_state(const vespalib::string& state_str) {
+ set_cluster_state(lib::ClusterState(state_str));
+ }
+
+ bool activate_cluster_state_version(uint32_t version) {
+ return bucket_db_updater().onActivateClusterStateVersion(
+ std::make_shared<api::ActivateClusterStateVersionCommand>(version));
+ }
+
+ void assert_has_activate_cluster_state_reply_with_actual_version(uint32_t version) {
+ ASSERT_EQ(size_t(1), _sender.replies().size());
+ auto* response = dynamic_cast<api::ActivateClusterStateVersionReply*>(_sender.replies().back().get());
+ ASSERT_TRUE(response != nullptr);
+ ASSERT_EQ(version, response->actualVersion());
+ _sender.clear();
+ }
+
+ void complete_bucket_info_gathering(const lib::ClusterState& state,
+ size_t expected_msgs,
+ uint32_t bucket_count = 1,
+ uint32_t invalid_bucket_count = 0)
+ {
+ ASSERT_EQ(expected_msgs, _sender.commands().size());
+
+ for (uint32_t i = 0; i < _sender.commands().size(); i++) {
+ ASSERT_NO_FATAL_FAILURE(fake_bucket_reply(state, *_sender.command(i),
+ bucket_count, invalid_bucket_count));
+ }
+ }
+
+ api::StorageMessageAddress storage_address(uint16_t node) {
+ static vespalib::string _storage("storage");
+ return api::StorageMessageAddress(&_storage, lib::NodeType::STORAGE, node);
+ }
+
+ void assert_correct_buckets(int num_buckets, const std::string& state_str) {
+ lib::ClusterState state(state_str);
+ for (int i = 0; i < num_buckets; i++) {
+ ASSERT_EQ(get_ideal_str(document::BucketId(16, i), state),
+ get_nodes(document::BucketId(16, i)));
+ }
+ }
+
+ void set_distribution(const std::string& dist_config) {
+ trigger_distribution_change(std::make_shared<lib::Distribution>(dist_config));
+ }
+
+ void verify_invalid(document::BucketId id, int storageNode) {
+ BucketDatabase::Entry entry = get_bucket(id);
+ ASSERT_TRUE(entry.valid());
+ bool found = false;
+ for (uint32_t j = 0; j < entry->getNodeCount(); j++) {
+ if (entry->getNodeRef(j).getNode() == storageNode) {
+ ASSERT_FALSE(entry->getNodeRef(j).valid());
+ found = true;
+ }
+ }
+
+ ASSERT_TRUE(found);
+ }
+
+ void set_storage_nodes(uint32_t numStorageNodes) {
+ _sender.clear();
+ set_cluster_state(lib::ClusterState(vespalib::make_string("distributor:1 storage:%d", numStorageNodes)));
+
+ for (uint32_t i=0; i< message_count(numStorageNodes); i++) {
+ ASSERT_EQ(_sender.command(i)->getType(), MessageType::REQUESTBUCKETINFO);
+
+ const api::StorageMessageAddress *address = _sender.command(i)->getAddress();
+ ASSERT_EQ(i / _bucket_spaces.size(), address->getIndex());
+ }
+ }
+
+ bool bucket_has_node(document::BucketId id, uint16_t node) const {
+ BucketDatabase::Entry entry = get_bucket(id);
+ assert(entry.valid());
+
+ for (uint32_t j = 0; j < entry->getNodeCount(); ++j) {
+ if (entry->getNodeRef(j).getNode() == node) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ bool bucket_exists_that_has_node(int bucket_count, uint16_t node) const {
+ for (int i = 1; i < bucket_count; ++i) {
+ if (bucket_has_node(document::BucketId(16, i), node)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ std::string dump_bucket(const document::BucketId& id) const {
+ return get_bucket(id).toString();
+ }
+
+ void initialize_nodes_and_buckets(uint32_t num_storage_nodes, uint32_t num_buckets) {
+ ASSERT_NO_FATAL_FAILURE(set_storage_nodes(num_storage_nodes));
+
+ vespalib::string state(vespalib::make_string("distributor:1 storage:%d", num_storage_nodes));
+ lib::ClusterState new_state(state);
+
+ for (uint32_t i = 0; i < message_count(num_storage_nodes); ++i) {
+ ASSERT_NO_FATAL_FAILURE(fake_bucket_reply(new_state, *_sender.command(i), num_buckets));
+ }
+ ASSERT_NO_FATAL_FAILURE(assert_correct_buckets(num_buckets, state));
+ }
+
+ void set_and_enable_cluster_state(const lib::ClusterState& state, uint32_t expected_msgs, uint32_t n_buckets) {
+ _sender.clear();
+ set_cluster_state(state);
+ ASSERT_NO_FATAL_FAILURE(complete_bucket_info_gathering(state, expected_msgs, n_buckets));
+ }
+
+ void complete_state_transition_in_seconds(const std::string& stateStr,
+ uint32_t seconds,
+ uint32_t expectedMsgs)
+ {
+ _sender.clear();
+ lib::ClusterState state(stateStr);
+ set_cluster_state(state);
+ fake_clock().addSecondsToTime(seconds);
+ ASSERT_NO_FATAL_FAILURE(complete_bucket_info_gathering(state, expectedMsgs));
+ }
+
+ uint64_t last_transition_time_in_millis() {
+ {
+ // Force stripe metrics to be aggregated into total.
+ std::mutex l;
+ distributor_metric_update_hook().updateMetrics(metrics::MetricLockGuard(l));
+ }
+ return uint64_t(total_distributor_metrics().stateTransitionTime.getLast());
+ }
+
+ ClusterInformation::CSP create_cluster_info(const std::string& clusterStateString) {
+ lib::ClusterState baseline_cluster_state(clusterStateString);
+ lib::ClusterStateBundle cluster_state_bundle(baseline_cluster_state);
+ auto cluster_info = std::make_shared<SimpleClusterInformation>(
+ _distributor->node_identity().node_index(),
+ cluster_state_bundle,
+ "ui");
+ enable_distributor_cluster_state(clusterStateString);
+ return cluster_info;
+ }
+
+ struct PendingClusterStateFixture {
+ DistributorMessageSenderStub sender;
+ framework::defaultimplementation::FakeClock clock;
+ std::unique_ptr<PendingClusterState> state;
+
+ PendingClusterStateFixture(
+ TopLevelBucketDBUpdaterTest& owner,
+ const std::string& old_cluster_state,
+ const std::string& new_cluster_state)
+ {
+ auto cmd = std::make_shared<api::SetSystemStateCommand>(lib::ClusterState(new_cluster_state));
+ auto cluster_info = owner.create_cluster_info(old_cluster_state);
+ OutdatedNodesMap outdated_nodes_map;
+ state = PendingClusterState::createForClusterStateChange(
+ clock, cluster_info, sender,
+ owner.bucket_space_states(),
+ cmd, outdated_nodes_map, api::Timestamp(1));
+ }
+
+ PendingClusterStateFixture(
+ TopLevelBucketDBUpdaterTest& owner,
+ const std::string& old_cluster_state)
+ {
+ auto cluster_info = owner.create_cluster_info(old_cluster_state);
+ state = PendingClusterState::createForDistributionChange(
+ clock, cluster_info, sender, owner.bucket_space_states(), api::Timestamp(1));
+ }
+ };
+
+ std::unique_ptr<PendingClusterStateFixture> create_pending_state_fixture_for_state_change(
+ const std::string& oldClusterState,
+ const std::string& newClusterState)
+ {
+ return std::make_unique<PendingClusterStateFixture>(*this, oldClusterState, newClusterState);
+ }
+
+ std::unique_ptr<PendingClusterStateFixture> create_pending_state_fixture_for_distribution_change(
+ const std::string& oldClusterState)
+ {
+ return std::make_unique<PendingClusterStateFixture>(*this, oldClusterState);
+ }
+
+ std::string get_sent_nodes(const std::string& old_cluster_state,
+ const std::string& new_cluster_state);
+
+ std::string get_sent_nodes_distribution_changed(const std::string& old_cluster_state);
+
+ std::string get_node_list(const std::vector<uint16_t>& nodes, size_t count);
+ std::string get_node_list(const std::vector<uint16_t>& nodes);
+
+ std::string merge_bucket_lists(const lib::ClusterState& old_state,
+ const std::string& existing_data,
+ const lib::ClusterState& new_state,
+ const std::string& new_data,
+ bool include_bucket_info = false);
+
+ std::string merge_bucket_lists(const std::string& existingData,
+ const std::string& newData,
+ bool includeBucketInfo = false);
+
+ std::vector<uint16_t> get_send_set() const;
+
+ std::vector<uint16_t> get_sent_nodes_with_preemption(
+ const std::string& old_cluster_state,
+ uint32_t expected_old_state_messages,
+ const std::string& preempted_cluster_state,
+ const std::string& new_cluster_state);
+
+ std::vector<uint16_t> expand_node_vec(const std::vector<uint16_t>& nodes);
+
+ void trigger_completed_but_not_yet_activated_transition(
+ vespalib::stringref initial_state_str,
+ uint32_t initial_buckets,
+ uint32_t initial_expected_msgs,
+ vespalib::stringref pending_state_str,
+ uint32_t pending_buckets,
+ uint32_t pending_expected_msgs);
+
+ const DistributorBucketSpaceRepo& mutable_repo(DistributorStripe& s) const noexcept {
+ return s.getBucketSpaceRepo();
+ }
+ // Note: not calling this "immutable_repo" since it may actually be modified by the pending
+ // cluster state component (just not by operations), so it would not have the expected semantics.
+ const DistributorBucketSpaceRepo& read_only_repo(DistributorStripe& s) const noexcept {
+ return s.getReadOnlyBucketSpaceRepo();
+ }
+
+ const BucketDatabase& mutable_default_db(DistributorStripe& s) const noexcept {
+ return mutable_repo(s).get(FixedBucketSpaces::default_space()).getBucketDatabase();
+ }
+ const BucketDatabase& mutable_global_db(DistributorStripe& s) const noexcept {
+ return mutable_repo(s).get(FixedBucketSpaces::global_space()).getBucketDatabase();
+ }
+ const BucketDatabase& read_only_default_db(DistributorStripe& s) const noexcept {
+ return read_only_repo(s).get(FixedBucketSpaces::default_space()).getBucketDatabase();
+ }
+ const BucketDatabase& read_only_global_db(DistributorStripe& s) const noexcept {
+ return read_only_repo(s).get(FixedBucketSpaces::global_space()).getBucketDatabase();
+ }
+
+ void set_stale_reads_enabled(bool enabled) {
+ for (auto* s : distributor_stripes()) {
+ s->bucket_db_updater().set_stale_reads_enabled(enabled);
+ }
+ bucket_db_updater().set_stale_reads_enabled(enabled);
+ }
+
+ size_t mutable_default_dbs_size() const {
+ size_t total = 0;
+ for (auto* s : distributor_stripes()) {
+ total += mutable_default_db(*s).size();
+ }
+ return total;
+ }
+
+ size_t mutable_global_dbs_size() const {
+ size_t total = 0;
+ for (auto* s : distributor_stripes()) {
+ total += mutable_global_db(*s).size();
+ }
+ return total;
+ }
+
+ size_t read_only_default_dbs_size() const {
+ size_t total = 0;
+ for (auto* s : distributor_stripes()) {
+ total += read_only_default_db(*s).size();
+ }
+ return total;
+ }
+
+ size_t read_only_global_dbs_size() const {
+ size_t total = 0;
+ for (auto* s : distributor_stripes()) {
+ total += read_only_global_db(*s).size();
+ }
+ return total;
+ }
+
+};
+
+TopLevelBucketDBUpdaterTest::TopLevelBucketDBUpdaterTest()
+ : TopLevelDistributorTestUtil(),
+ _bucket_spaces()
+{
+}
+
+TopLevelBucketDBUpdaterTest::~TopLevelBucketDBUpdaterTest() = default;
+
+namespace {
+
+std::string dist_config_6_nodes_across_2_groups() {
+ return ("redundancy 2\n"
+ "group[3]\n"
+ "group[0].name \"invalid\"\n"
+ "group[0].index \"invalid\"\n"
+ "group[0].partitions 1|*\n"
+ "group[0].nodes[0]\n"
+ "group[1].name rack0\n"
+ "group[1].index 0\n"
+ "group[1].nodes[3]\n"
+ "group[1].nodes[0].index 0\n"
+ "group[1].nodes[1].index 1\n"
+ "group[1].nodes[2].index 2\n"
+ "group[2].name rack1\n"
+ "group[2].index 1\n"
+ "group[2].nodes[3]\n"
+ "group[2].nodes[0].index 3\n"
+ "group[2].nodes[1].index 4\n"
+ "group[2].nodes[2].index 5\n");
+}
+
+std::string dist_config_6_nodes_across_4_groups() {
+ return ("redundancy 2\n"
+ "group[4]\n"
+ "group[0].name \"invalid\"\n"
+ "group[0].index \"invalid\"\n"
+ "group[0].partitions 1|*\n"
+ "group[0].nodes[0]\n"
+ "group[1].name rack0\n"
+ "group[1].index 0\n"
+ "group[1].nodes[2]\n"
+ "group[1].nodes[0].index 0\n"
+ "group[1].nodes[1].index 1\n"
+ "group[2].name rack1\n"
+ "group[2].index 1\n"
+ "group[2].nodes[2]\n"
+ "group[2].nodes[0].index 2\n"
+ "group[2].nodes[1].index 3\n"
+ "group[3].name rack2\n"
+ "group[3].index 2\n"
+ "group[3].nodes[2]\n"
+ "group[3].nodes[0].index 4\n"
+ "group[3].nodes[1].index 5\n");
+}
+
+std::string dist_config_3_nodes_in_1_group() {
+ return ("redundancy 2\n"
+ "group[2]\n"
+ "group[0].name \"invalid\"\n"
+ "group[0].index \"invalid\"\n"
+ "group[0].partitions 1|*\n"
+ "group[0].nodes[0]\n"
+ "group[1].name rack0\n"
+ "group[1].index 0\n"
+ "group[1].nodes[3]\n"
+ "group[1].nodes[0].index 0\n"
+ "group[1].nodes[1].index 1\n"
+ "group[1].nodes[2].index 2\n");
+}
+
+std::string
+make_string_list(std::string s, uint32_t count)
+{
+ std::ostringstream ost;
+ for (uint32_t i = 0; i < count; ++i) {
+ if (i > 0) {
+ ost << ",";
+ }
+ ost << s;
+ }
+ return ost.str();
+}
+
+std::string
+make_request_bucket_info_strings(uint32_t count)
+{
+ return make_string_list("Request bucket info", count);
+}
+
+}
+
+
+std::string
+TopLevelBucketDBUpdaterTest::get_node_list(const std::vector<uint16_t>& nodes, size_t count)
+{
+ std::ostringstream ost;
+ bool first = true;
+ for (const auto node : nodes) {
+ for (uint32_t i = 0; i < count; ++i) {
+ if (!first) {
+ ost << ",";
+ }
+ ost << node;
+ first = false;
+ }
+ }
+ return ost.str();
+}
+
+std::string
+TopLevelBucketDBUpdaterTest::get_node_list(const std::vector<uint16_t>& nodes)
+{
+ return get_node_list(nodes, _bucket_spaces.size());
+}
+
+void
+TopLevelBucketDBUpdaterTest::trigger_completed_but_not_yet_activated_transition(
+ vespalib::stringref initial_state_str,
+ uint32_t initial_buckets,
+ uint32_t initial_expected_msgs,
+ vespalib::stringref pending_state_str,
+ uint32_t pending_buckets,
+ uint32_t pending_expected_msgs)
+{
+ lib::ClusterState initial_state(initial_state_str);
+ set_cluster_state(initial_state);
+ ASSERT_EQ(message_count(initial_expected_msgs), _sender.commands().size());
+ ASSERT_NO_FATAL_FAILURE(complete_bucket_info_gathering(
+ initial_state, message_count(initial_expected_msgs), initial_buckets));
+ _sender.clear();
+
+ lib::ClusterState pending_state(pending_state_str); // Ownership change
+ set_cluster_state_bundle(lib::ClusterStateBundle(pending_state, {}, true));
+ ASSERT_EQ(message_count(pending_expected_msgs), _sender.commands().size());
+ ASSERT_NO_FATAL_FAILURE(complete_bucket_info_gathering(
+ pending_state, message_count(pending_expected_msgs), pending_buckets));
+ _sender.clear();
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, normal_usage) {
+ set_cluster_state(lib::ClusterState("distributor:2 .0.s:i .1.s:i storage:3")); // FIXME init mode why?
+
+ ASSERT_EQ(message_count(3), _sender.commands().size());
+
+ // Ensure distribution hash is set correctly
+ ASSERT_EQ(_component->getDistribution()->getNodeGraph().getDistributionConfigHash(),
+ dynamic_cast<const RequestBucketInfoCommand&>(*_sender.command(0)).getDistributionHash());
+
+ ASSERT_NO_FATAL_FAILURE(fake_bucket_reply(lib::ClusterState("distributor:2 .0.s:i .1.s:i storage:3"), // FIXME init mode why?
+ *_sender.command(0), 10));
+
+ _sender.clear();
+
+ // Optimization for not refetching unneeded data after cluster state
+ // change is only implemented after completion of previous cluster state
+ set_cluster_state("distributor:2 .0.s:i storage:3"); // FIXME init mode why?
+
+ ASSERT_EQ(message_count(3), _sender.commands().size());
+ // Expect reply of first set SystemState request.
+ ASSERT_EQ(size_t(1), _sender.replies().size());
+
+ ASSERT_NO_FATAL_FAILURE(complete_bucket_info_gathering(
+ lib::ClusterState("distributor:2 .0.s:i .1.s:i storage:3"), // FIXME init mode why?
+ message_count(3), 10));
+ ASSERT_NO_FATAL_FAILURE(assert_correct_buckets(10, "distributor:2 storage:3"));
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, distributor_change) {
+ int num_buckets = 100;
+
+ // First sends request
+ set_cluster_state("distributor:2 .0.s:i .1.s:i storage:3"); // FIXME init mode why?
+ ASSERT_EQ(message_count(3), _sender.commands().size());
+ ASSERT_NO_FATAL_FAILURE(complete_bucket_info_gathering(lib::ClusterState("distributor:2 .0.s:i .1.s:i storage:3"), // FIXME init mode why?
+ message_count(3), num_buckets));
+ _sender.clear();
+
+ // No change from initializing to up (when done with last job)
+ set_cluster_state("distributor:2 storage:3");
+ ASSERT_EQ(size_t(0), _sender.commands().size());
+ _sender.clear();
+
+ // Adding node. No new read requests, but buckets thrown
+ set_cluster_state("distributor:3 storage:3");
+ ASSERT_EQ(size_t(0), _sender.commands().size());
+ ASSERT_NO_FATAL_FAILURE(assert_correct_buckets(num_buckets, "distributor:3 storage:3"));
+ _sender.clear();
+
+ // Removing distributor. Need to refetch new data from all nodes.
+ set_cluster_state("distributor:2 storage:3");
+ ASSERT_EQ(message_count(3), _sender.commands().size());
+ ASSERT_NO_FATAL_FAILURE(complete_bucket_info_gathering(lib::ClusterState("distributor:2 storage:3"),
+ message_count(3), num_buckets));
+ _sender.clear();
+ ASSERT_NO_FATAL_FAILURE(assert_correct_buckets(num_buckets, "distributor:2 storage:3"));
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, distributor_change_with_grouping) {
+ set_distribution(dist_config_6_nodes_across_2_groups());
+ int numBuckets = 100;
+
+ set_cluster_state("distributor:6 storage:6");
+ ASSERT_EQ(message_count(6), _sender.commands().size());
+ ASSERT_NO_FATAL_FAILURE(complete_bucket_info_gathering(lib::ClusterState("distributor:6 storage:6"),
+ message_count(6), numBuckets));
+ _sender.clear();
+
+ // Distributor going down in other group, no change
+ set_cluster_state("distributor:6 .5.s:d storage:6");
+ ASSERT_EQ(size_t(0), _sender.commands().size());
+ _sender.clear();
+
+ set_cluster_state("distributor:6 storage:6");
+ ASSERT_EQ(size_t(0), _sender.commands().size());
+ ASSERT_NO_FATAL_FAILURE(assert_correct_buckets(numBuckets, "distributor:6 storage:6"));
+ _sender.clear();
+
+ // Unchanged grouping cause no change.
+ set_distribution(dist_config_6_nodes_across_2_groups());
+ ASSERT_EQ(size_t(0), _sender.commands().size());
+
+ // Changed grouping cause change
+ set_distribution(dist_config_6_nodes_across_4_groups());
+
+ ASSERT_EQ(message_count(6), _sender.commands().size());
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, normal_usage_initializing) {
+ set_cluster_state("distributor:1 .0.s:i storage:1 .0.s:i"); // FIXME init mode why?
+
+ ASSERT_EQ(_bucket_spaces.size(), _sender.commands().size());
+
+ // Not yet passing on system state.
+ ASSERT_EQ(size_t(0), _sender_down.commands().size());
+
+ ASSERT_NO_FATAL_FAILURE(complete_bucket_info_gathering(lib::ClusterState("distributor:1 .0.s:i storage:1"), // FIXME init mode why?
+ _bucket_spaces.size(), 10, 10));
+
+ ASSERT_NO_FATAL_FAILURE(assert_correct_buckets(10, "distributor:1 storage:1"));
+
+ for (int i = 10; i < 20; ++i) {
+ ASSERT_NO_FATAL_FAILURE(verify_invalid(document::BucketId(16, i), 0));
+ }
+
+ // Pass on cluster state and recheck buckets now.
+ ASSERT_EQ(size_t(1), _sender_down.commands().size());
+
+ _sender.clear();
+ _sender_down.clear();
+
+ set_cluster_state("distributor:1 .0.s:i storage:1"); // FIXME init mode why?
+
+ // Send a new request bucket info up.
+ ASSERT_EQ(_bucket_spaces.size(), _sender.commands().size());
+
+ ASSERT_NO_FATAL_FAILURE(complete_bucket_info_gathering(lib::ClusterState("distributor:1 .0.s:i storage:1"), // FIXME init mode why?
+ _bucket_spaces.size(), 20));
+
+ // Pass on cluster state and recheck buckets now.
+ ASSERT_EQ(size_t(1), _sender_down.commands().size());
+
+ ASSERT_NO_FATAL_FAILURE(assert_correct_buckets(20, "distributor:1 storage:1"));
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, failed_request_bucket_info) {
+ set_cluster_state("distributor:1 .0.s:i storage:1"); // FIXME init mode why?
+
+ // 2 messages sent up: 1 to the nodes, and one reply to the setsystemstate.
+ ASSERT_EQ(_bucket_spaces.size(), _sender.commands().size());
+
+ {
+ for (uint32_t i = 0; i < _bucket_spaces.size(); ++i) {
+ auto reply = make_fake_bucket_reply(lib::ClusterState("distributor:1 .0.s:i storage:1"),
+ dynamic_cast<RequestBucketInfoCommand&>(*_sender.command(i)),
+ 0,
+ 10);
+ reply->setResult(api::ReturnCode::NOT_CONNECTED);
+ bucket_db_updater().onRequestBucketInfoReply(reply);
+ }
+
+ // Trigger that delayed message is sent
+ fake_clock().addSecondsToTime(10);
+ bucket_db_updater().resend_delayed_messages();
+ }
+
+ // Should be resent.
+ ASSERT_EQ(make_request_bucket_info_strings(message_count(2)), _sender.getCommands());
+
+ ASSERT_EQ(size_t(0), _sender_down.commands().size());
+
+ for (uint32_t i = 0; i < _bucket_spaces.size(); ++i) {
+ ASSERT_NO_FATAL_FAILURE(fake_bucket_reply(lib::ClusterState("distributor:1 .0.s:i storage:1"), // FIXME init mode why?
+ *_sender.command(_bucket_spaces.size() + i), 10));
+ }
+
+ for (int i=0; i<10; i++) {
+ EXPECT_EQ("",
+ verify_bucket(document::BucketId(16, i),
+ lib::ClusterState("distributor:1 storage:1")));
+ }
+
+ // Set system state should now be passed on
+ EXPECT_EQ("Set system state", _sender_down.getCommands());
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, down_while_init) {
+ ASSERT_NO_FATAL_FAILURE(set_storage_nodes(3));
+
+ ASSERT_NO_FATAL_FAILURE(fake_bucket_reply(lib::ClusterState("distributor:1 storage:3"),
+ *_sender.command(0), 5));
+
+ set_cluster_state("distributor:1 storage:3 .1.s:d");
+
+ ASSERT_NO_FATAL_FAILURE(fake_bucket_reply(lib::ClusterState("distributor:1 storage:3"),
+ *_sender.command(2), 5));
+
+ ASSERT_NO_FATAL_FAILURE(fake_bucket_reply(lib::ClusterState("distributor:1 storage:3"),
+ *_sender.command(1), 5));
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, node_down) {
+ ASSERT_NO_FATAL_FAILURE(set_storage_nodes(3));
+ enable_distributor_cluster_state("distributor:1 storage:3");
+
+ for (int i = 1; i < 100; ++i) {
+ add_ideal_nodes(document::BucketId(16, i));
+ }
+
+ EXPECT_TRUE(bucket_exists_that_has_node(100, 1));
+
+ set_cluster_state("distributor:1 storage:3 .1.s:d");
+
+ EXPECT_FALSE(bucket_exists_that_has_node(100, 1));
+}
+
+
+TEST_F(TopLevelBucketDBUpdaterTest, storage_node_in_maintenance_clears_buckets_for_node) {
+ ASSERT_NO_FATAL_FAILURE(set_storage_nodes(3));
+ enable_distributor_cluster_state("distributor:1 storage:3");
+
+ for (int i = 1; i < 100; ++i) {
+ add_ideal_nodes(document::BucketId(16, i));
+ }
+
+ EXPECT_TRUE(bucket_exists_that_has_node(100, 1));
+
+ set_cluster_state("distributor:1 storage:3 .1.s:m");
+
+ EXPECT_FALSE(bucket_exists_that_has_node(100, 1));
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, node_down_copies_get_in_sync) {
+ ASSERT_NO_FATAL_FAILURE(set_storage_nodes(3));
+ document::BucketId bid(16, 1);
+
+ add_nodes_to_stripe_bucket_db(bid, "0=3,1=2,2=3");
+
+ set_cluster_state("distributor:1 storage:3 .1.s:d");
+
+ EXPECT_EQ("BucketId(0x4000000000000001) : "
+ "node(idx=0,crc=0x3,docs=3/3,bytes=3/3,trusted=true,active=false,ready=false), "
+ "node(idx=2,crc=0x3,docs=3/3,bytes=3/3,trusted=true,active=false,ready=false)",
+ dump_bucket(bid));
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, initializing_while_recheck) {
+ lib::ClusterState state("distributor:1 storage:2 .0.s:i .0.i:0.1");
+ set_cluster_state(state);
+
+ ASSERT_EQ(message_count(2), _sender.commands().size());
+ ASSERT_EQ(size_t(0), _sender_down.commands().size());
+
+ auto bucket = makeDocumentBucket(document::BucketId(16, 3));
+ stripe_of_bucket(bucket.getBucketId()).bucket_db_updater().recheckBucketInfo(1, bucket);
+
+ for (uint32_t i = 0; i < message_count(2); ++i) {
+ ASSERT_NO_FATAL_FAILURE(fake_bucket_reply(state, *_sender.command(i), 100));
+ }
+
+ // Now we can pass on system state.
+ ASSERT_EQ(size_t(1), _sender_down.commands().size());
+ EXPECT_EQ(MessageType::SETSYSTEMSTATE, _sender_down.command(0)->getType());
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, bit_change) {
+ std::vector<document::BucketId> bucketlist;
+
+ {
+ set_cluster_state("bits:14 storage:1 distributor:2");
+
+ ASSERT_EQ(_bucket_spaces.size(), _sender.commands().size());
+
+ for (uint32_t bsi = 0; bsi < _bucket_spaces.size(); ++bsi) {
+ ASSERT_EQ(_sender.command(bsi)->getType(), MessageType::REQUESTBUCKETINFO);
+ const auto &req = dynamic_cast<const RequestBucketInfoCommand &>(*_sender.command(bsi));
+ auto sreply = std::make_shared<RequestBucketInfoReply>(req);
+ sreply->setAddress(storage_address(0));
+ auto& vec = sreply->getBucketInfo();
+ if (req.getBucketSpace() == FixedBucketSpaces::default_space()) {
+ int cnt=0;
+ for (int i=0; cnt < 2; i++) {
+ auto distribution = _component->getDistribution();
+ std::vector<uint16_t> distributors;
+ if (distribution->getIdealDistributorNode(
+ lib::ClusterState("bits:14 storage:1 distributor:2"),
+ document::BucketId(16, i))
+ == 0)
+ {
+ vec.push_back(api::RequestBucketInfoReply::Entry(
+ document::BucketId(16, i),
+ api::BucketInfo(10,1,1)));
+
+ bucketlist.push_back(document::BucketId(16, i));
+ cnt++;
+ }
+ }
+ }
+
+ bucket_db_updater().onRequestBucketInfoReply(sreply);
+ }
+ }
+
+ EXPECT_EQ("BucketId(0x4000000000000001) : "
+ "node(idx=0,crc=0xa,docs=1/1,bytes=1/1,trusted=true,active=false,ready=false)",
+ dump_bucket(bucketlist[0]));
+ EXPECT_EQ("BucketId(0x4000000000000002) : "
+ "node(idx=0,crc=0xa,docs=1/1,bytes=1/1,trusted=true,active=false,ready=false)",
+ dump_bucket(bucketlist[1]));
+
+ {
+ _sender.clear();
+ set_cluster_state("bits:16 storage:1 distributor:2");
+
+ ASSERT_EQ(_bucket_spaces.size(), _sender.commands().size());
+ for (uint32_t bsi = 0; bsi < _bucket_spaces.size(); ++bsi) {
+
+ ASSERT_EQ(_sender.command(bsi)->getType(), MessageType::REQUESTBUCKETINFO);
+ const auto &req = dynamic_cast<const RequestBucketInfoCommand &>(*_sender.command(bsi));
+ auto sreply = std::make_shared<RequestBucketInfoReply>(req);
+ sreply->setAddress(storage_address(0));
+ sreply->setResult(api::ReturnCode::OK);
+ if (req.getBucketSpace() == FixedBucketSpaces::default_space()) {
+ api::RequestBucketInfoReply::EntryVector &vec = sreply->getBucketInfo();
+
+ for (uint32_t i = 0; i < 3; ++i) {
+ vec.push_back(api::RequestBucketInfoReply::Entry(
+ document::BucketId(16, i),
+ api::BucketInfo(10,1,1)));
+ }
+
+ vec.push_back(api::RequestBucketInfoReply::Entry(
+ document::BucketId(16, 4),
+ api::BucketInfo(10,1,1)));
+ }
+
+ bucket_db_updater().onRequestBucketInfoReply(sreply);
+ }
+ }
+
+ EXPECT_EQ("BucketId(0x4000000000000000) : "
+ "node(idx=0,crc=0xa,docs=1/1,bytes=1/1,trusted=true,active=false,ready=false)",
+ dump_bucket(document::BucketId(16, 0)));
+ EXPECT_EQ("BucketId(0x4000000000000001) : "
+ "node(idx=0,crc=0xa,docs=1/1,bytes=1/1,trusted=true,active=false,ready=false)",
+ dump_bucket(document::BucketId(16, 1)));
+ EXPECT_EQ("BucketId(0x4000000000000002) : "
+ "node(idx=0,crc=0xa,docs=1/1,bytes=1/1,trusted=true,active=false,ready=false)",
+ dump_bucket(document::BucketId(16, 2)));
+ EXPECT_EQ("BucketId(0x4000000000000004) : "
+ "node(idx=0,crc=0xa,docs=1/1,bytes=1/1,trusted=true,active=false,ready=false)",
+ dump_bucket(document::BucketId(16, 4)));
+
+ _sender.clear();
+ set_cluster_state("storage:1 distributor:2 .1.s:i");
+
+ _sender.clear();
+ set_cluster_state("storage:1 distributor:2");
+};
+
+TEST_F(TopLevelBucketDBUpdaterTest, recheck_node_with_failure) {
+ ASSERT_NO_FATAL_FAILURE(initialize_nodes_and_buckets(3, 5));
+
+ _sender.clear();
+
+ auto bucket = makeDocumentBucket(document::BucketId(16, 3));
+ auto& stripe_bucket_db_updater = stripe_of_bucket(bucket.getBucketId()).bucket_db_updater();
+ stripe_bucket_db_updater.recheckBucketInfo(1, bucket);
+
+ ASSERT_EQ(size_t(1), _sender.commands().size());
+
+ uint16_t index = 0;
+ {
+ auto& rbi = dynamic_cast<RequestBucketInfoCommand&>(*_sender.command(0));
+ ASSERT_EQ(size_t(1), rbi.getBuckets().size());
+ EXPECT_EQ(bucket.getBucketId(), rbi.getBuckets()[0]);
+ auto reply = std::make_shared<api::RequestBucketInfoReply>(rbi);
+ const api::StorageMessageAddress *address = _sender.command(0)->getAddress();
+ index = address->getIndex();
+ reply->setResult(api::ReturnCode::NOT_CONNECTED);
+ stripe_bucket_db_updater.onRequestBucketInfoReply(reply);
+ // Trigger that delayed message is sent
+ fake_clock().addSecondsToTime(10);
+ stripe_bucket_db_updater.resendDelayedMessages();
+ }
+
+ ASSERT_EQ(size_t(2), _sender.commands().size());
+
+ set_cluster_state(vespalib::make_string("distributor:1 storage:3 .%d.s:d", index));
+
+ // Recheck bucket.
+ {
+ auto& rbi = dynamic_cast<RequestBucketInfoCommand&>(*_sender.command(1));
+ ASSERT_EQ(size_t(1), rbi.getBuckets().size());
+ EXPECT_EQ(bucket.getBucketId(), rbi.getBuckets()[0]);
+ auto reply = std::make_shared<api::RequestBucketInfoReply>(rbi);
+ reply->setResult(api::ReturnCode::NOT_CONNECTED);
+ stripe_bucket_db_updater.onRequestBucketInfoReply(reply);
+ }
+
+ // Should not retry since node is down.
+ EXPECT_EQ(size_t(2), _sender.commands().size());
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, recheck_node) {
+ ASSERT_NO_FATAL_FAILURE(initialize_nodes_and_buckets(3, 5));
+
+ _sender.clear();
+
+ auto bucket = makeDocumentBucket(document::BucketId(16, 3));
+ auto& stripe_bucket_db_updater = stripe_of_bucket(bucket.getBucketId()).bucket_db_updater();
+ stripe_bucket_db_updater.recheckBucketInfo(1, bucket);
+
+ ASSERT_EQ(size_t(1), _sender.commands().size());
+
+ auto& rbi = dynamic_cast<RequestBucketInfoCommand&>(*_sender.command(0));
+ ASSERT_EQ(size_t(1), rbi.getBuckets().size());
+ EXPECT_EQ(bucket.getBucketId(), rbi.getBuckets()[0]);
+
+ auto reply = std::make_shared<api::RequestBucketInfoReply>(rbi);
+ reply->getBucketInfo().push_back(
+ api::RequestBucketInfoReply::Entry(document::BucketId(16, 3),
+ api::BucketInfo(20, 10, 12, 50, 60, true, true)));
+ stripe_bucket_db_updater.onRequestBucketInfoReply(reply);
+
+ lib::ClusterState state("distributor:1 storage:3");
+ for (uint32_t i = 0; i < 3; i++) {
+ EXPECT_EQ(get_ideal_str(document::BucketId(16, i), state),
+ get_nodes(document::BucketId(16, i)));
+ }
+
+ for (uint32_t i = 4; i < 5; i++) {
+ EXPECT_EQ(get_ideal_str(document::BucketId(16, i), state),
+ get_nodes(document::BucketId(16, i)));
+ }
+
+ BucketDatabase::Entry entry = get_bucket(bucket);
+ ASSERT_TRUE(entry.valid());
+
+ const BucketCopy* copy = entry->getNode(1);
+ ASSERT_TRUE(copy != nullptr);
+ EXPECT_EQ(api::BucketInfo(20,10,12, 50, 60, true, true), copy->getBucketInfo());
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, notify_bucket_change) {
+ enable_distributor_cluster_state("distributor:1 storage:1");
+
+ add_nodes_to_stripe_bucket_db(document::BucketId(16, 1), "0=1234");
+ _sender.replies().clear();
+
+ {
+ api::BucketInfo info(1, 2, 3, 4, 5, true, true);
+ auto cmd = std::make_shared<api::NotifyBucketChangeCommand>(
+ makeDocumentBucket(document::BucketId(16, 1)), info);
+ cmd->setSourceIndex(0);
+ stripe_of_bucket(document::BucketId(16, 1)).bucket_db_updater().onNotifyBucketChange(cmd);
+ }
+
+ {
+ api::BucketInfo info(10, 11, 12, 13, 14, false, false);
+ auto cmd = std::make_shared<api::NotifyBucketChangeCommand>(
+ makeDocumentBucket(document::BucketId(16, 2)), info);
+ cmd->setSourceIndex(0);
+ stripe_of_bucket(document::BucketId(16, 2)).bucket_db_updater().onNotifyBucketChange(cmd);
+ }
+
+ // Must receive reply
+ ASSERT_EQ(size_t(2), _sender.replies().size());
+
+ for (int i = 0; i < 2; ++i) {
+ ASSERT_EQ(MessageType::NOTIFYBUCKETCHANGE_REPLY, _sender.reply(i)->getType());
+ }
+
+ // No database update until request bucket info replies have been received.
+ EXPECT_EQ("BucketId(0x4000000000000001) : "
+ "node(idx=0,crc=0x4d2,docs=1234/1234,bytes=1234/1234,"
+ "trusted=false,active=false,ready=false)",
+ dump_bucket(document::BucketId(16, 1)));
+ EXPECT_EQ(std::string("NONEXISTING"), dump_bucket(document::BucketId(16, 2)));
+
+ ASSERT_EQ(size_t(2), _sender.commands().size());
+
+ std::vector<api::BucketInfo> infos;
+ infos.push_back(api::BucketInfo(4567, 200, 2000, 400, 4000, true, true));
+ infos.push_back(api::BucketInfo(8999, 300, 3000, 500, 5000, false, false));
+
+ for (int i = 0; i < 2; ++i) {
+ auto& rbi = dynamic_cast<RequestBucketInfoCommand&>(*_sender.command(i));
+ ASSERT_EQ(size_t(1), rbi.getBuckets().size());
+ document::BucketId bucket_id(16, i + 1);
+ EXPECT_EQ(bucket_id, rbi.getBuckets()[0]);
+
+ auto reply = std::make_shared<api::RequestBucketInfoReply>(rbi);
+ reply->getBucketInfo().push_back(api::RequestBucketInfoReply::Entry(bucket_id, infos[i]));
+ stripe_of_bucket(bucket_id).bucket_db_updater().onRequestBucketInfoReply(reply);
+ }
+
+ EXPECT_EQ("BucketId(0x4000000000000001) : "
+ "node(idx=0,crc=0x11d7,docs=200/400,bytes=2000/4000,trusted=true,active=true,ready=true)",
+ dump_bucket(document::BucketId(16, 1)));
+ EXPECT_EQ("BucketId(0x4000000000000002) : "
+ "node(idx=0,crc=0x2327,docs=300/500,bytes=3000/5000,trusted=true,active=false,ready=false)",
+ dump_bucket(document::BucketId(16, 2)));
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, notify_bucket_change_from_node_down) {
+ enable_distributor_cluster_state("distributor:1 storage:2");
+
+ document::BucketId bucket_id(16, 1);
+ add_nodes_to_stripe_bucket_db(bucket_id, "1=1234");
+
+ _sender.replies().clear();
+
+ {
+ api::BucketInfo info(8999, 300, 3000, 500, 5000, false, false);
+ auto cmd = std::make_shared<api::NotifyBucketChangeCommand>(makeDocumentBucket(bucket_id), info);
+ cmd->setSourceIndex(0);
+ stripe_of_bucket(bucket_id).bucket_db_updater().onNotifyBucketChange(cmd);
+ }
+ // Enable here to avoid having request bucket info be silently swallowed
+ // (send_request_bucket_info drops message if node is down).
+ enable_distributor_cluster_state("distributor:1 storage:2 .0.s:d");
+
+ ASSERT_EQ("BucketId(0x4000000000000001) : "
+ "node(idx=1,crc=0x4d2,docs=1234/1234,bytes=1234/1234,trusted=false,active=false,ready=false)",
+ dump_bucket(bucket_id));
+
+ ASSERT_EQ(size_t(1), _sender.replies().size());
+ ASSERT_EQ(MessageType::NOTIFYBUCKETCHANGE_REPLY, _sender.reply(0)->getType());
+
+ // Currently, this pending operation will be auto-flushed when the cluster state
+ // changes so the behavior is still correct. Keep this test around to prevent
+ // regressions here.
+ ASSERT_EQ(size_t(1), _sender.commands().size());
+ auto& rbi = dynamic_cast<RequestBucketInfoCommand&>(*_sender.command(0));
+ ASSERT_EQ(size_t(1), rbi.getBuckets().size());
+ EXPECT_EQ(bucket_id, rbi.getBuckets()[0]);
+
+ auto reply = std::make_shared<api::RequestBucketInfoReply>(rbi);
+ reply->getBucketInfo().push_back(
+ api::RequestBucketInfoReply::Entry(
+ bucket_id,
+ api::BucketInfo(8999, 300, 3000, 500, 5000, false, false)));
+ stripe_of_bucket(bucket_id).bucket_db_updater().onRequestBucketInfoReply(reply);
+
+ // No change
+ EXPECT_EQ("BucketId(0x4000000000000001) : "
+ "node(idx=1,crc=0x4d2,docs=1234/1234,bytes=1234/1234,trusted=false,active=false,ready=false)",
+ dump_bucket(bucket_id));
+}
+
+/**
+ * Test that NotifyBucketChange received while there's a pending cluster state
+ * waits until the cluster state has been enabled as current before it sends off
+ * the single bucket info requests. This is to prevent a race condition where
+ * the replies to bucket info requests for buckets that would be owned by the
+ * distributor in the pending state but not by the current state would be
+ * discarded when attempted inserted into the bucket database.
+ */
+TEST_F(TopLevelBucketDBUpdaterTest, notify_change_with_pending_state_queues_bucket_info_requests) {
+ set_cluster_state("distributor:1 storage:1");
+ ASSERT_EQ(_bucket_spaces.size(), _sender.commands().size());
+
+ document::BucketId bucket_id(16, 1);
+ {
+ api::BucketInfo info(8999, 300, 3000, 500, 5000, false, false);
+ auto cmd(std::make_shared<api::NotifyBucketChangeCommand>(
+ makeDocumentBucket(bucket_id), info));
+ cmd->setSourceIndex(0);
+ stripe_of_bucket(bucket_id).bucket_db_updater().onNotifyBucketChange(cmd);
+ }
+
+ ASSERT_EQ(_bucket_spaces.size(), _sender.commands().size());
+
+ ASSERT_NO_FATAL_FAILURE(complete_bucket_info_gathering(lib::ClusterState("distributor:1 storage:1"),
+ _bucket_spaces.size(), 10));
+
+ ASSERT_EQ(_bucket_spaces.size() + 1, _sender.commands().size());
+
+ {
+ auto& rbi = dynamic_cast<RequestBucketInfoCommand&>(*_sender.command(_bucket_spaces.size()));
+ ASSERT_EQ(size_t(1), rbi.getBuckets().size());
+ EXPECT_EQ(bucket_id, rbi.getBuckets()[0]);
+ }
+ _sender.clear();
+
+ // Queue must be cleared once pending state is enabled.
+ {
+ lib::ClusterState state("distributor:1 storage:2");
+ uint32_t expected_msgs = _bucket_spaces.size(), dummy_buckets_to_return = 1;
+ ASSERT_NO_FATAL_FAILURE(set_and_enable_cluster_state(state, expected_msgs, dummy_buckets_to_return));
+ }
+ ASSERT_EQ(_bucket_spaces.size(), _sender.commands().size());
+ {
+ auto& rbi = dynamic_cast<RequestBucketInfoCommand&>(*_sender.command(0));
+ EXPECT_EQ(size_t(0), rbi.getBuckets().size());
+ }
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, merge_reply) {
+ enable_distributor_cluster_state("distributor:1 storage:3");
+
+ document::BucketId bucket_id(16, 1234);
+ add_nodes_to_stripe_bucket_db(bucket_id, "0=1234,1=1234,2=1234");
+
+ std::vector<api::MergeBucketCommand::Node> nodes;
+ nodes.push_back(api::MergeBucketCommand::Node(0));
+ nodes.push_back(api::MergeBucketCommand::Node(1));
+ nodes.push_back(api::MergeBucketCommand::Node(2));
+
+ api::MergeBucketCommand cmd(makeDocumentBucket(bucket_id), nodes, 0);
+ auto reply = std::make_shared<api::MergeBucketReply>(cmd);
+
+ _sender.clear();
+ stripe_of_bucket(bucket_id).bucket_db_updater().onMergeBucketReply(reply);
+
+ ASSERT_EQ(size_t(3), _sender.commands().size());
+
+ for (uint32_t i = 0; i < 3; i++) {
+ auto req = std::dynamic_pointer_cast<api::RequestBucketInfoCommand>(_sender.command(i));
+
+ ASSERT_TRUE(req.get() != nullptr);
+ ASSERT_EQ(size_t(1), req->getBuckets().size());
+ EXPECT_EQ(bucket_id, req->getBuckets()[0]);
+
+ auto reqreply = std::make_shared<api::RequestBucketInfoReply>(*req);
+ reqreply->getBucketInfo().push_back(
+ api::RequestBucketInfoReply::Entry(bucket_id,
+ api::BucketInfo(10 * (i + 1), 100 * (i +1), 1000 * (i+1))));
+
+ stripe_of_bucket(bucket_id).bucket_db_updater().onRequestBucketInfoReply(reqreply);
+ }
+
+ EXPECT_EQ("BucketId(0x40000000000004d2) : "
+ "node(idx=0,crc=0xa,docs=100/100,bytes=1000/1000,trusted=false,active=false,ready=false), "
+ "node(idx=1,crc=0x14,docs=200/200,bytes=2000/2000,trusted=false,active=false,ready=false), "
+ "node(idx=2,crc=0x1e,docs=300/300,bytes=3000/3000,trusted=false,active=false,ready=false)",
+ dump_bucket(bucket_id));
+};
+
+TEST_F(TopLevelBucketDBUpdaterTest, merge_reply_node_down) {
+ enable_distributor_cluster_state("distributor:1 storage:3");
+ std::vector<api::MergeBucketCommand::Node> nodes;
+
+ document::BucketId bucket_id(16, 1234);
+ add_nodes_to_stripe_bucket_db(bucket_id, "0=1234,1=1234,2=1234");
+
+ for (uint32_t i = 0; i < 3; ++i) {
+ nodes.push_back(api::MergeBucketCommand::Node(i));
+ }
+
+ api::MergeBucketCommand cmd(makeDocumentBucket(bucket_id), nodes, 0);
+ auto reply = std::make_shared<api::MergeBucketReply>(cmd);
+
+ set_cluster_state(lib::ClusterState("distributor:1 storage:2"));
+
+ _sender.clear();
+ stripe_of_bucket(bucket_id).bucket_db_updater().onMergeBucketReply(reply);
+
+ ASSERT_EQ(size_t(2), _sender.commands().size());
+
+ for (uint32_t i = 0; i < 2; i++) {
+ auto req = std::dynamic_pointer_cast<api::RequestBucketInfoCommand>(_sender.command(i));
+
+ ASSERT_TRUE(req.get() != nullptr);
+ ASSERT_EQ(size_t(1), req->getBuckets().size());
+ EXPECT_EQ(bucket_id, req->getBuckets()[0]);
+
+ auto reqreply = std::make_shared<api::RequestBucketInfoReply>(*req);
+ reqreply->getBucketInfo().push_back(
+ api::RequestBucketInfoReply::Entry(
+ bucket_id,
+ api::BucketInfo(10 * (i + 1), 100 * (i +1), 1000 * (i+1))));
+ stripe_of_bucket(bucket_id).bucket_db_updater().onRequestBucketInfoReply(reqreply);
+ }
+
+ EXPECT_EQ("BucketId(0x40000000000004d2) : "
+ "node(idx=0,crc=0xa,docs=100/100,bytes=1000/1000,trusted=false,active=false,ready=false), "
+ "node(idx=1,crc=0x14,docs=200/200,bytes=2000/2000,trusted=false,active=false,ready=false)",
+ dump_bucket(bucket_id));
+};
+
+TEST_F(TopLevelBucketDBUpdaterTest, merge_reply_node_down_after_request_sent) {
+ enable_distributor_cluster_state("distributor:1 storage:3");
+ std::vector<api::MergeBucketCommand::Node> nodes;
+
+ document::BucketId bucket_id(16, 1234);
+ add_nodes_to_stripe_bucket_db(bucket_id, "0=1234,1=1234,2=1234");
+
+ for (uint32_t i = 0; i < 3; ++i) {
+ nodes.push_back(api::MergeBucketCommand::Node(i));
+ }
+
+ api::MergeBucketCommand cmd(makeDocumentBucket(bucket_id), nodes, 0);
+ auto reply = std::make_shared<api::MergeBucketReply>(cmd);
+
+ _sender.clear();
+ stripe_of_bucket(bucket_id).bucket_db_updater().onMergeBucketReply(reply);
+
+ ASSERT_EQ(size_t(3), _sender.commands().size());
+
+ set_cluster_state(lib::ClusterState("distributor:1 storage:2"));
+
+ for (uint32_t i = 0; i < 3; i++) {
+ auto req = std::dynamic_pointer_cast<api::RequestBucketInfoCommand>(_sender.command(i));
+
+ ASSERT_TRUE(req.get() != nullptr);
+ ASSERT_EQ(size_t(1), req->getBuckets().size());
+ EXPECT_EQ(bucket_id, req->getBuckets()[0]);
+
+ auto reqreply = std::make_shared<api::RequestBucketInfoReply>(*req);
+ reqreply->getBucketInfo().push_back(
+ api::RequestBucketInfoReply::Entry(
+ bucket_id,
+ api::BucketInfo(10 * (i + 1), 100 * (i +1), 1000 * (i+1))));
+ stripe_of_bucket(bucket_id).bucket_db_updater().onRequestBucketInfoReply(reqreply);
+ }
+
+ EXPECT_EQ("BucketId(0x40000000000004d2) : "
+ "node(idx=0,crc=0xa,docs=100/100,bytes=1000/1000,trusted=false,active=false,ready=false), "
+ "node(idx=1,crc=0x14,docs=200/200,bytes=2000/2000,trusted=false,active=false,ready=false)",
+ dump_bucket(bucket_id));
+};
+
+TEST_F(TopLevelBucketDBUpdaterTest, flush) {
+ enable_distributor_cluster_state("distributor:1 storage:3");
+ _sender.clear();
+
+ document::BucketId bucket_id(16, 1234);
+ add_nodes_to_stripe_bucket_db(bucket_id, "0=1234,1=1234,2=1234");
+
+ std::vector<api::MergeBucketCommand::Node> nodes;
+ for (uint32_t i = 0; i < 3; ++i) {
+ nodes.push_back(api::MergeBucketCommand::Node(i));
+ }
+
+ api::MergeBucketCommand cmd(makeDocumentBucket(bucket_id), nodes, 0);
+ auto reply = std::make_shared<api::MergeBucketReply>(cmd);
+
+ _sender.clear();
+ stripe_of_bucket(bucket_id).bucket_db_updater().onMergeBucketReply(reply);
+
+ ASSERT_EQ(size_t(3), _sender.commands().size());
+ ASSERT_EQ(size_t(0), _sender_down.replies().size());
+
+ stripe_of_bucket(bucket_id).bucket_db_updater().flush();
+ // Flushing should drop all merge bucket replies
+ EXPECT_EQ(size_t(0), _sender_down.commands().size());
+}
+
+std::string
+TopLevelBucketDBUpdaterTest::get_sent_nodes(const std::string& old_cluster_state,
+ const std::string& new_cluster_state)
+{
+ auto fixture = create_pending_state_fixture_for_state_change(old_cluster_state, new_cluster_state);
+ sort_sent_messages_by_index(fixture->sender);
+
+ std::ostringstream ost;
+ for (uint32_t i = 0; i < fixture->sender.commands().size(); i++) {
+ auto& req = dynamic_cast<RequestBucketInfoCommand&>(*fixture->sender.command(i));
+
+ if (i > 0) {
+ ost << ",";
+ }
+
+ ost << req.getAddress()->getIndex();
+ }
+
+ return ost.str();
+}
+
+std::string
+TopLevelBucketDBUpdaterTest::get_sent_nodes_distribution_changed(const std::string& old_cluster_state)
+{
+ DistributorMessageSenderStub sender;
+
+ framework::defaultimplementation::FakeClock clock;
+ auto cluster_info = create_cluster_info(old_cluster_state);
+ std::unique_ptr<PendingClusterState> state(
+ PendingClusterState::createForDistributionChange(
+ clock, cluster_info, sender, bucket_space_states(), api::Timestamp(1)));
+
+ sort_sent_messages_by_index(sender);
+
+ std::ostringstream ost;
+ for (uint32_t i = 0; i < sender.commands().size(); i++) {
+ auto& req = dynamic_cast<RequestBucketInfoCommand&>(*sender.command(i));
+
+ if (i > 0) {
+ ost << ",";
+ }
+
+ ost << req.getAddress()->getIndex();
+ }
+
+ return ost.str();
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, pending_cluster_state_send_messages) {
+ EXPECT_EQ(get_node_list({0, 1, 2}),
+ get_sent_nodes("cluster:d",
+ "distributor:1 storage:3"));
+
+ EXPECT_EQ(get_node_list({0, 1}),
+ get_sent_nodes("cluster:d",
+ "distributor:1 storage:3 .2.s:m"));
+
+ EXPECT_EQ(get_node_list({2}),
+ get_sent_nodes("distributor:1 storage:2",
+ "distributor:1 storage:3"));
+
+ EXPECT_EQ(get_node_list({2, 3, 4, 5}),
+ get_sent_nodes("distributor:1 storage:2",
+ "distributor:1 storage:6"));
+
+ EXPECT_EQ(get_node_list({0, 1, 2}),
+ get_sent_nodes("distributor:4 storage:3",
+ "distributor:3 storage:3"));
+
+ EXPECT_EQ(get_node_list({0, 1, 2, 3}),
+ get_sent_nodes("distributor:4 storage:3",
+ "distributor:4 .2.s:d storage:4"));
+
+ EXPECT_EQ("",
+ get_sent_nodes("distributor:4 storage:3",
+ "distributor:4 .0.s:d storage:4"));
+
+ EXPECT_EQ("",
+ get_sent_nodes("distributor:3 storage:3",
+ "distributor:4 storage:3"));
+
+ EXPECT_EQ(get_node_list({2}),
+ get_sent_nodes("distributor:3 storage:3 .2.s:i",
+ "distributor:3 storage:3"));
+
+ EXPECT_EQ(get_node_list({1}),
+ get_sent_nodes("distributor:3 storage:3 .1.s:d",
+ "distributor:3 storage:3"));
+
+ EXPECT_EQ(get_node_list({1, 2, 4}),
+ get_sent_nodes("distributor:3 storage:4 .1.s:d .2.s:i",
+ "distributor:3 storage:5"));
+
+ EXPECT_EQ("",
+ get_sent_nodes("distributor:1 storage:3",
+ "cluster:d"));
+
+ EXPECT_EQ("",
+ get_sent_nodes("distributor:1 storage:3",
+ "distributor:1 storage:3"));
+
+ EXPECT_EQ("",
+ get_sent_nodes("distributor:1 storage:3",
+ "cluster:d distributor:1 storage:6"));
+
+ EXPECT_EQ("",
+ get_sent_nodes("distributor:3 storage:3",
+ "distributor:3 .2.s:m storage:3"));
+
+ EXPECT_EQ(get_node_list({0, 1, 2}),
+ get_sent_nodes("distributor:3 .2.s:m storage:3",
+ "distributor:3 .2.s:d storage:3"));
+
+ EXPECT_EQ("",
+ get_sent_nodes("distributor:3 .2.s:m storage:3",
+ "distributor:3 storage:3"));
+
+ EXPECT_EQ(get_node_list({0, 1, 2}),
+ get_sent_nodes_distribution_changed("distributor:3 storage:3"));
+
+ EXPECT_EQ(get_node_list({0, 1}),
+ get_sent_nodes("distributor:10 storage:2",
+ "distributor:10 .1.s:d storage:2"));
+
+ EXPECT_EQ("",
+ get_sent_nodes("distributor:2 storage:2",
+ "distributor:3 .2.s:i storage:2"));
+
+ EXPECT_EQ(get_node_list({0, 1, 2}),
+ get_sent_nodes("distributor:3 storage:3",
+ "distributor:3 .2.s:s storage:3"));
+
+ EXPECT_EQ("",
+ get_sent_nodes("distributor:3 .2.s:s storage:3",
+ "distributor:3 .2.s:d storage:3"));
+
+ EXPECT_EQ(get_node_list({1}),
+ get_sent_nodes("distributor:3 storage:3 .1.s:m",
+ "distributor:3 storage:3"));
+
+ EXPECT_EQ("",
+ get_sent_nodes("distributor:3 storage:3",
+ "distributor:3 storage:3 .1.s:m"));
+};
+
+TEST_F(TopLevelBucketDBUpdaterTest, pending_cluster_state_receive) {
+ DistributorMessageSenderStub sender;
+
+ auto cmd = std::make_shared<api::SetSystemStateCommand>(lib::ClusterState("distributor:1 storage:3"));
+
+ framework::defaultimplementation::FakeClock clock;
+ auto cluster_info = create_cluster_info("cluster:d");
+ OutdatedNodesMap outdated_nodes_map;
+ std::unique_ptr<PendingClusterState> state(
+ PendingClusterState::createForClusterStateChange(
+ clock, cluster_info, sender, bucket_space_states(),
+ cmd, outdated_nodes_map, api::Timestamp(1)));
+
+ ASSERT_EQ(message_count(3), sender.commands().size());
+
+ sort_sent_messages_by_index(sender);
+
+ std::ostringstream ost;
+ for (uint32_t i = 0; i < sender.commands().size(); i++) {
+ auto* req = dynamic_cast<RequestBucketInfoCommand*>(sender.command(i).get());
+ ASSERT_TRUE(req != nullptr);
+
+ auto rep = std::make_shared<RequestBucketInfoReply>(*req);
+
+ rep->getBucketInfo().push_back(
+ RequestBucketInfoReply::Entry(
+ document::BucketId(16, i),
+ api::BucketInfo(i, i, i, i, i)));
+
+ ASSERT_TRUE(state->onRequestBucketInfoReply(rep));
+ ASSERT_EQ((i == (sender.commands().size() - 1)), state->done());
+ }
+
+ auto& pending_transition = state->getPendingBucketSpaceDbTransition(makeBucketSpace());
+ EXPECT_EQ(3u, pending_transition.results().size());
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, pending_cluster_state_with_group_down) {
+ std::string config = dist_config_6_nodes_across_4_groups();
+ config += "distributor_auto_ownership_transfer_on_whole_group_down true\n";
+ set_distribution(config);
+
+ // Group config has nodes {0, 1}, {2, 3}, {4, 5}
+ // We're node index 0.
+
+ // Entire group 1 goes down. Must refetch from all nodes.
+ EXPECT_EQ(get_node_list({0, 1, 2, 3, 4, 5}),
+ get_sent_nodes("distributor:6 storage:6",
+ "distributor:6 .2.s:d .3.s:d storage:6"));
+
+ // But don't fetch if not the entire group is down.
+ EXPECT_EQ("",
+ get_sent_nodes("distributor:6 storage:6",
+ "distributor:6 .2.s:d storage:6"));
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, pending_cluster_state_with_group_down_and_no_handover) {
+ std::string config = dist_config_6_nodes_across_4_groups();
+ config += "distributor_auto_ownership_transfer_on_whole_group_down false\n";
+ set_distribution(config);
+
+ // Group is down, but config says to not do anything about it.
+ EXPECT_EQ(get_node_list({0, 1, 2, 3, 4, 5}, _bucket_spaces.size() - 1),
+ get_sent_nodes("distributor:6 storage:6",
+ "distributor:6 .2.s:d .3.s:d storage:6"));
+}
+
+
+namespace {
+
+void
+parse_input_data(const std::string& data,
+ uint64_t timestamp,
+ PendingClusterState& state,
+ bool include_bucket_info)
+{
+ vespalib::StringTokenizer tokenizer(data, "|");
+ for (uint32_t i = 0; i < tokenizer.size(); i++) {
+ vespalib::StringTokenizer tok2(tokenizer[i], ":");
+
+ uint16_t node = atoi(tok2[0].data());
+
+ state.setNodeReplied(node);
+ auto& pending_transition = state.getPendingBucketSpaceDbTransition(makeBucketSpace());
+
+ vespalib::StringTokenizer tok3(tok2[1], ",");
+ for (uint32_t j = 0; j < tok3.size(); j++) {
+ if (include_bucket_info) {
+ vespalib::StringTokenizer tok4(tok3[j], "/");
+
+ pending_transition.addNodeInfo(
+ document::BucketId(16, atoi(tok4[0].data())),
+ BucketCopy(
+ timestamp,
+ node,
+ api::BucketInfo(
+ atoi(tok4[1].data()),
+ atoi(tok4[2].data()),
+ atoi(tok4[3].data()),
+ atoi(tok4[2].data()),
+ atoi(tok4[3].data()))));
+ } else {
+ pending_transition.addNodeInfo(
+ document::BucketId(16, atoi(tok3[j].data())),
+ BucketCopy(timestamp,
+ node,
+ api::BucketInfo(3, 3, 3, 3, 3)));
+ }
+ }
+ }
+}
+
+struct BucketDumper : public BucketDatabase::EntryProcessor
+{
+ std::ostringstream ost;
+ bool _include_bucket_info;
+
+ explicit BucketDumper(bool include_bucket_info)
+ : _include_bucket_info(include_bucket_info)
+ {
+ }
+
+ bool process(const BucketDatabase::ConstEntryRef& e) override {
+ document::BucketId bucket_id(e.getBucketId());
+
+ ost << uint32_t(bucket_id.getRawId()) << ":";
+ for (uint32_t i = 0; i < e->getNodeCount(); ++i) {
+ if (i > 0) {
+ ost << ",";
+ }
+ const BucketCopy& copy(e->getNodeRef(i));
+ ost << copy.getNode();
+ if (_include_bucket_info) {
+ ost << "/" << copy.getChecksum()
+ << "/" << copy.getDocumentCount()
+ << "/" << copy.getTotalDocumentSize()
+ << "/" << (copy.trusted() ? "t" : "u");
+ }
+ }
+ ost << "|";
+ return true;
+ }
+};
+
+}
+
+std::string
+TopLevelBucketDBUpdaterTest::merge_bucket_lists(
+ const lib::ClusterState& old_state,
+ const std::string& existing_data,
+ const lib::ClusterState& new_state,
+ const std::string& new_data,
+ bool include_bucket_info)
+{
+ framework::defaultimplementation::FakeClock clock;
+ framework::MilliSecTimer timer(clock);
+
+ DistributorMessageSenderStub sender;
+ OutdatedNodesMap outdated_nodes_map;
+
+ {
+ auto cmd = std::make_shared<api::SetSystemStateCommand>(old_state);
+ api::Timestamp before_time(1);
+ auto cluster_info = create_cluster_info("cluster:d");
+
+ auto state = PendingClusterState::createForClusterStateChange(
+ clock, cluster_info, sender, bucket_space_states(),
+ cmd, outdated_nodes_map, before_time);
+
+ parse_input_data(existing_data, before_time, *state, include_bucket_info);
+ auto guard = acquire_stripe_guard();
+ state->merge_into_bucket_databases(*guard);
+ }
+
+ BucketDumper dumper_tmp(true);
+ for (auto* s : distributor_stripes()) {
+ auto& db = s->getBucketSpaceRepo().get(document::FixedBucketSpaces::default_space()).getBucketDatabase();
+ db.forEach(dumper_tmp);
+ }
+
+ {
+ auto cmd = std::make_shared<api::SetSystemStateCommand>(lib::ClusterState(new_state));
+ api::Timestamp after_time(2);
+ auto cluster_info = create_cluster_info(old_state.toString());
+
+ auto state = PendingClusterState::createForClusterStateChange(
+ clock, cluster_info, sender, bucket_space_states(),
+ cmd, outdated_nodes_map, after_time);
+
+ parse_input_data(new_data, after_time, *state, include_bucket_info);
+ auto guard = acquire_stripe_guard();
+ state->merge_into_bucket_databases(*guard);
+ }
+
+ BucketDumper dumper(include_bucket_info);
+ for (auto* s : distributor_stripes()) {
+ auto& db = s->getBucketSpaceRepo().get(document::FixedBucketSpaces::default_space()).getBucketDatabase();
+ db.forEach(dumper);
+ db.clear();
+ }
+ return dumper.ost.str();
+}
+
+std::string
+TopLevelBucketDBUpdaterTest::merge_bucket_lists(const std::string& existing_data,
+ const std::string& new_data,
+ bool include_bucket_info)
+{
+ return merge_bucket_lists(
+ lib::ClusterState("distributor:1 storage:3"),
+ existing_data,
+ lib::ClusterState("distributor:1 storage:3"),
+ new_data,
+ include_bucket_info);
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, pending_cluster_state_merge) {
+ // Result is on the form: [bucket w/o count bits]:[node indexes]|..
+ // Input is on the form: [node]:[bucket w/o count bits]|...
+
+ // Simple initializing case - ask all nodes for info
+ EXPECT_EQ("4:0,1|2:0,1|6:1,2|1:0,2|5:2,0|3:2,1|",
+ merge_bucket_lists(
+ "",
+ "0:1,2,4,5|1:2,3,4,6|2:1,3,5,6"));
+
+ // New node came up
+ EXPECT_EQ("4:0,1|2:0,1|6:1,2,3|1:0,2,3|5:2,0,3|3:2,1,3|",
+ merge_bucket_lists(
+ "0:1,2,4,5|1:2,3,4,6|2:1,3,5,6",
+ "3:1,3,5,6"));
+
+ // Node came up with some buckets removed and some added
+ // Buckets that were removed should not be removed as the node
+ // didn't lose a disk.
+ EXPECT_EQ("8:0|4:0,1|2:0,1|6:1,0,2|1:0,2|5:2,0|3:2,1|",
+ merge_bucket_lists(
+ "0:1,2,4,5|1:2,3,4,6|2:1,3,5,6",
+ "0:1,2,6,8"));
+
+ // Bucket info format is "bucketid/checksum/count/size"
+ // Node went from initializing to up and invalid bucket went to empty.
+ EXPECT_EQ("2:0/0/0/0/t|",
+ merge_bucket_lists(
+ "0:2/0/0/1",
+ "0:2/0/0/0",
+ true));
+
+ EXPECT_EQ("5:1/2/3/4/u,0/0/0/0/u|",
+ merge_bucket_lists("", "0:5/0/0/0|1:5/2/3/4", true));
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, pending_cluster_state_merge_replica_changed) {
+ // Node went from initializing to up and non-invalid bucket changed.
+ EXPECT_EQ("2:0/2/3/4/t|3:0/2/4/6/t|",
+ merge_bucket_lists(
+ lib::ClusterState("distributor:1 storage:1 .0.s:i"),
+ "0:2/1/2/3,3/2/4/6",
+ lib::ClusterState("distributor:1 storage:1"),
+ "0:2/2/3/4,3/2/4/6",
+ true));
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, no_db_resurrection_for_bucket_not_owned_in_current_state) {
+ document::BucketId bucket(16, 3);
+ lib::ClusterState state_before("distributor:1 storage:1");
+ {
+ uint32_t expected_msgs = _bucket_spaces.size(), dummy_buckets_to_return = 1;
+ ASSERT_NO_FATAL_FAILURE(set_and_enable_cluster_state(state_before, expected_msgs, dummy_buckets_to_return));
+ }
+ _sender.clear();
+
+ stripe_of_bucket(bucket).bucket_db_updater().recheckBucketInfo(0, makeDocumentBucket(bucket));
+
+ ASSERT_EQ(size_t(1), _sender.commands().size());
+ auto rbi = std::dynamic_pointer_cast<RequestBucketInfoCommand>(_sender.command(0));
+
+ lib::ClusterState state_after("distributor:3 storage:3");
+
+ {
+ uint32_t expected_msgs = message_count(2), dummy_buckets_to_return = 1;
+ ASSERT_NO_FATAL_FAILURE(set_and_enable_cluster_state(state_after, expected_msgs, dummy_buckets_to_return));
+ }
+ EXPECT_FALSE(distributor_bucket_space(bucket).get_bucket_ownership_flags(bucket).owned_in_current_state());
+
+ ASSERT_NO_FATAL_FAILURE(send_fake_reply_for_single_bucket_request(*rbi));
+
+ EXPECT_EQ("NONEXISTING", dump_bucket(bucket));
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, no_db_resurrection_for_bucket_not_owned_in_pending_state) {
+ document::BucketId bucket(16, 3);
+ lib::ClusterState state_before("distributor:1 storage:1");
+ {
+ uint32_t expected_msgs = _bucket_spaces.size(), dummy_buckets_to_return = 1;
+ ASSERT_NO_FATAL_FAILURE(set_and_enable_cluster_state(state_before, expected_msgs, dummy_buckets_to_return));
+ }
+ _sender.clear();
+
+ stripe_of_bucket(bucket).bucket_db_updater().recheckBucketInfo(0, makeDocumentBucket(bucket));
+
+ ASSERT_EQ(size_t(1), _sender.commands().size());
+ auto rbi = std::dynamic_pointer_cast<RequestBucketInfoCommand>(_sender.command(0));
+
+ lib::ClusterState state_after("distributor:3 storage:3");
+ // Set, but _don't_ enable cluster state. We want it to be pending.
+ set_cluster_state(state_after);
+ EXPECT_TRUE(distributor_bucket_space(bucket).get_bucket_ownership_flags(bucket).owned_in_current_state());
+ EXPECT_FALSE(distributor_bucket_space(bucket).get_bucket_ownership_flags(bucket).owned_in_pending_state());
+
+ ASSERT_NO_FATAL_FAILURE(send_fake_reply_for_single_bucket_request(*rbi));
+
+ EXPECT_EQ("NONEXISTING", dump_bucket(bucket));
+}
+
+/*
+ * If we get a distribution config change, it's important that cluster states that
+ * arrive after this--but _before_ the pending cluster state has finished--must trigger
+ * a full bucket info fetch no matter what the cluster state change was! Otherwise, we
+ * will with a high likelihood end up not getting the complete view of the buckets in
+ * the cluster.
+ */
+TEST_F(TopLevelBucketDBUpdaterTest, cluster_state_always_sends_full_fetch_when_distribution_change_pending) {
+ lib::ClusterState state_before("distributor:6 storage:6");
+ {
+ uint32_t expected_msgs = message_count(6), dummy_buckets_to_return = 1;
+ ASSERT_NO_FATAL_FAILURE(set_and_enable_cluster_state(state_before, expected_msgs, dummy_buckets_to_return));
+ }
+ _sender.clear();
+ std::string distConfig(dist_config_6_nodes_across_2_groups());
+ set_distribution(distConfig);
+
+ sort_sent_messages_by_index(_sender);
+ ASSERT_EQ(message_count(6), _sender.commands().size());
+ // Suddenly, a wild cluster state change appears! Even though this state
+ // does not in itself imply any bucket changes, it will still overwrite the
+ // pending cluster state and thus its state of pending bucket info requests.
+ set_cluster_state("distributor:6 .2.t:12345 storage:6");
+
+ ASSERT_EQ(message_count(12), _sender.commands().size());
+
+ // Send replies for first messageCount(6) (outdated requests).
+ int num_buckets = 10;
+ for (uint32_t i = 0; i < message_count(6); ++i) {
+ ASSERT_NO_FATAL_FAILURE(fake_bucket_reply(lib::ClusterState("distributor:6 storage:6"),
+ *_sender.command(i), num_buckets));
+ }
+ // No change from these.
+ ASSERT_NO_FATAL_FAILURE(assert_correct_buckets(1, "distributor:6 storage:6"));
+
+ // Send for current pending.
+ for (uint32_t i = 0; i < message_count(6); ++i) {
+ ASSERT_NO_FATAL_FAILURE(fake_bucket_reply(lib::ClusterState("distributor:6 .2.t:12345 storage:6"),
+ *_sender.command(i + message_count(6)),
+ num_buckets));
+ }
+ ASSERT_NO_FATAL_FAILURE(assert_correct_buckets(num_buckets, "distributor:6 storage:6"));
+ _sender.clear();
+
+ // No more pending global fetch; this should be a no-op state.
+ set_cluster_state("distributor:6 .3.t:12345 storage:6");
+ EXPECT_EQ(size_t(0), _sender.commands().size());
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, changed_distribution_config_triggers_recovery_mode) {
+ uint32_t num_buckets = 20;
+ ASSERT_NO_FATAL_FAILURE(set_and_enable_cluster_state(lib::ClusterState("distributor:6 storage:6"),
+ message_count(6), num_buckets));
+ _sender.clear();
+ EXPECT_TRUE(all_distributor_stripes_are_in_recovery_mode());
+ complete_recovery_mode_on_all_stripes();
+ EXPECT_FALSE(all_distributor_stripes_are_in_recovery_mode());
+
+ set_distribution(dist_config_6_nodes_across_4_groups());
+ sort_sent_messages_by_index(_sender);
+ // No replies received yet, still no recovery mode.
+ EXPECT_FALSE(all_distributor_stripes_are_in_recovery_mode());
+
+ ASSERT_EQ(message_count(6), _sender.commands().size());
+ num_buckets = 10;
+ for (uint32_t i = 0; i < message_count(6); ++i) {
+ ASSERT_NO_FATAL_FAILURE(fake_bucket_reply(lib::ClusterState("distributor:6 storage:6"),
+ *_sender.command(i), num_buckets));
+ }
+
+ // Pending cluster state (i.e. distribution) has been enabled, which should
+ // cause recovery mode to be entered.
+ EXPECT_TRUE(all_distributor_stripes_are_in_recovery_mode());
+ complete_recovery_mode_on_all_stripes();
+ EXPECT_FALSE(all_distributor_stripes_are_in_recovery_mode());
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, changed_distribution_config_does_not_elide_bucket_db_pruning) {
+ set_distribution(dist_config_3_nodes_in_1_group());
+
+ constexpr uint32_t n_buckets = 100;
+ ASSERT_NO_FATAL_FAILURE(
+ set_and_enable_cluster_state(lib::ClusterState("distributor:6 storage:6"), message_count(6), n_buckets));
+ _sender.clear();
+
+ // Config implies a different node set than the current cluster state, so it's crucial that
+ // DB pruning is _not_ elided. Yes, this is inherently racing with cluster state changes and
+ // should be changed to be atomic and controlled by the cluster controller instead of config.
+ // But this is where we currently are.
+ set_distribution(dist_config_6_nodes_across_2_groups());
+ for (auto* s : distributor_stripes()) {
+ const auto& db = s->getBucketSpaceRepo().get(document::FixedBucketSpaces::default_space()).getBucketDatabase();
+ db.acquire_read_guard()->for_each([&]([[maybe_unused]] uint64_t key, const auto& e) {
+ auto id = e.getBucketId();
+ EXPECT_TRUE(distributor_bucket_space(id).get_bucket_ownership_flags(id).owned_in_pending_state());
+ });
+ }
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, newly_added_buckets_have_current_time_as_gc_timestamp) {
+ fake_clock().setAbsoluteTimeInSeconds(101234);
+ lib::ClusterState state_before("distributor:1 storage:1");
+ {
+ uint32_t expected_msgs = _bucket_spaces.size(), dummy_buckets_to_return = 1;
+ ASSERT_NO_FATAL_FAILURE(set_and_enable_cluster_state(state_before, expected_msgs, dummy_buckets_to_return));
+ }
+ // setAndEnableClusterState adds n buckets with id (16, i)
+ document::BucketId bucket(16, 0);
+ BucketDatabase::Entry e = get_bucket(bucket);
+ ASSERT_TRUE(e.valid());
+ EXPECT_EQ(uint32_t(101234), e->getLastGarbageCollectionTime());
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, newer_mutations_not_overwritten_by_earlier_bucket_fetch) {
+ {
+ lib::ClusterState state_before("distributor:1 storage:1 .0.s:i");
+ uint32_t expected_msgs = _bucket_spaces.size(), dummy_buckets_to_return = 0;
+ // This step is required to make the distributor ready for accepting
+ // the below explicit database insertion towards node 0.
+ ASSERT_NO_FATAL_FAILURE(set_and_enable_cluster_state(state_before, expected_msgs, dummy_buckets_to_return));
+ }
+ _sender.clear();
+ fake_clock().setAbsoluteTimeInSeconds(1000);
+ lib::ClusterState state("distributor:1 storage:1");
+ set_cluster_state(state);
+ ASSERT_EQ(_bucket_spaces.size(), _sender.commands().size());
+
+ // Before replying with the bucket info, simulate the arrival of a mutation
+ // reply that alters the state of the bucket with information that will be
+ // more recent that what is returned by the bucket info. This information
+ // must not be lost when the bucket info is later merged into the database.
+ document::BucketId bucket(16, 1);
+ constexpr uint64_t insertion_timestamp = 1001ULL * 1000000;
+ api::BucketInfo wanted_info(5, 6, 7);
+ stripe_of_bucket(bucket).bucket_db_updater().operation_context().update_bucket_database(
+ makeDocumentBucket(bucket),
+ BucketCopy(insertion_timestamp, 0, wanted_info),
+ DatabaseUpdate::CREATE_IF_NONEXISTING);
+
+ fake_clock().setAbsoluteTimeInSeconds(1002);
+ constexpr uint32_t buckets_returned = 10; // Buckets (16, 0) ... (16, 9)
+ // Return bucket information which on the timeline might originate from
+ // anywhere between [1000, 1002]. Our assumption is that any mutations
+ // taking place after t=1000 must have its reply received and processed
+ // by this distributor and timestamped strictly higher than t=1000 (modulo
+ // clock skew, of course, but that is outside the scope of this). A mutation
+ // happening before t=1000 but receiving a reply at t>1000 does not affect
+ // correctness, as this should contain the same bucket info as that
+ // contained in the full bucket reply and the DB update is thus idempotent.
+ for (uint32_t i = 0; i < _bucket_spaces.size(); ++i) {
+ ASSERT_NO_FATAL_FAILURE(fake_bucket_reply(state, *_sender.command(i), buckets_returned));
+ }
+
+ BucketDatabase::Entry e = get_bucket(bucket);
+ ASSERT_EQ(uint32_t(1), e->getNodeCount());
+ EXPECT_EQ(wanted_info, e->getNodeRef(0).getBucketInfo());
+}
+
+std::vector<uint16_t>
+TopLevelBucketDBUpdaterTest::get_send_set() const
+{
+ std::vector<uint16_t> nodes;
+ std::transform(_sender.commands().begin(),
+ _sender.commands().end(),
+ std::back_inserter(nodes),
+ [](auto& cmd)
+ {
+ auto& req(dynamic_cast<const api::RequestBucketInfoCommand&>(*cmd));
+ return req.getAddress()->getIndex();
+ });
+ return nodes;
+}
+
+std::vector<uint16_t>
+TopLevelBucketDBUpdaterTest::get_sent_nodes_with_preemption(
+ const std::string& old_cluster_state,
+ uint32_t expected_old_state_messages,
+ const std::string& preempted_cluster_state,
+ const std::string& new_cluster_state)
+{
+ uint32_t dummy_buckets_to_return = 10;
+ // FIXME cannot chain assertion checks in non-void function
+ set_and_enable_cluster_state(lib::ClusterState(old_cluster_state),
+ expected_old_state_messages,
+ dummy_buckets_to_return);
+
+ _sender.clear();
+
+ set_cluster_state(preempted_cluster_state);
+ _sender.clear();
+ // Do not allow the pending state to become the active state; trigger a
+ // new transition without ACKing the info requests first. This will
+ // overwrite the pending state entirely.
+ set_cluster_state(lib::ClusterState(new_cluster_state));
+ return get_send_set();
+}
+
+std::vector<uint16_t>
+TopLevelBucketDBUpdaterTest::expand_node_vec(const std::vector<uint16_t>& nodes)
+{
+ std::vector<uint16_t> res;
+ size_t count = _bucket_spaces.size();
+ for (const auto &node : nodes) {
+ for (uint32_t i = 0; i < count; ++i) {
+ res.push_back(node);
+ }
+ }
+ return res;
+}
+
+/*
+ * If we don't carry over the set of nodes that we need to fetch from,
+ * a naive comparison between the active state and the new state will
+ * make it appear to the distributor that nothing has changed, as any
+ * database modifications caused by intermediate states will not be
+ * accounted for (basically the ABA problem in a distributed setting).
+ */
+TEST_F(TopLevelBucketDBUpdaterTest, preempted_distributor_change_carries_node_set_over_to_next_state_fetch) {
+ EXPECT_EQ(expand_node_vec({0, 1, 2, 3, 4, 5}),
+ get_sent_nodes_with_preemption("version:1 distributor:6 storage:6",
+ message_count(6),
+ "version:2 distributor:6 .5.s:d storage:6",
+ "version:3 distributor:6 storage:6"));
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, preempted_storage_change_carries_node_set_over_to_next_state_fetch) {
+ EXPECT_EQ(expand_node_vec({2, 3}),
+ get_sent_nodes_with_preemption(
+ "version:1 distributor:6 storage:6 .2.s:d",
+ message_count(5),
+ "version:2 distributor:6 storage:6 .2.s:d .3.s:d",
+ "version:3 distributor:6 storage:6"));
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, preempted_storage_node_down_must_be_re_fetched) {
+ EXPECT_EQ(expand_node_vec({2}),
+ get_sent_nodes_with_preemption(
+ "version:1 distributor:6 storage:6",
+ message_count(6),
+ "version:2 distributor:6 storage:6 .2.s:d",
+ "version:3 distributor:6 storage:6"));
+}
+
+using NodeVec = std::vector<uint16_t>;
+
+TEST_F(TopLevelBucketDBUpdaterTest, do_not_send_to_preempted_node_now_in_down_state) {
+ EXPECT_EQ(NodeVec{},
+ get_sent_nodes_with_preemption(
+ "version:1 distributor:6 storage:6 .2.s:d",
+ message_count(5),
+ "version:2 distributor:6 storage:6", // Sends to 2.
+ "version:3 distributor:6 storage:6 .2.s:d")); // 2 down again.
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, do_not_send_to_preempted_node_not_part_of_new_state) {
+ // Even though 100 nodes are preempted, not all of these should be part
+ // of the request afterwards when only 6 are part of the state.
+ EXPECT_EQ(expand_node_vec({0, 1, 2, 3, 4, 5}),
+ get_sent_nodes_with_preemption(
+ "version:1 distributor:6 storage:100",
+ message_count(100),
+ "version:2 distributor:5 .4.s:d storage:100",
+ "version:3 distributor:6 storage:6"));
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, outdated_node_set_cleared_after_successful_state_completion) {
+ lib::ClusterState state_before("version:1 distributor:6 storage:6 .1.t:1234");
+ uint32_t expected_msgs = message_count(6), dummy_buckets_to_return = 10;
+ ASSERT_NO_FATAL_FAILURE(set_and_enable_cluster_state(state_before, expected_msgs, dummy_buckets_to_return));
+ _sender.clear();
+ // New cluster state that should not by itself trigger any new fetches,
+ // unless outdated node set is somehow not cleared after an enabled
+ // (completed) cluster state has been set.
+ set_cluster_state("version:3 distributor:6 storage:6");
+ EXPECT_EQ(size_t(0), _sender.commands().size());
+}
+
+// XXX test currently disabled since distribution config currently isn't used
+// at all in order to deduce the set of nodes to send to. This might not matter
+// in practice since it is assumed that the cluster state matching the new
+// distribution config will follow very shortly after the config has been
+// applied to the node. The new cluster state will then send out requests to
+// the correct node set.
+TEST_F(TopLevelBucketDBUpdaterTest, DISABLED_cluster_config_downsize_only_sends_to_available_nodes) {
+ uint32_t expected_msgs = 6, dummy_buckets_to_return = 20;
+ ASSERT_NO_FATAL_FAILURE(set_and_enable_cluster_state(lib::ClusterState("distributor:6 storage:6"),
+ expected_msgs, dummy_buckets_to_return));
+ _sender.clear();
+
+ // Intentionally trigger a racing config change which arrives before the
+ // new cluster state representing it.
+ set_distribution(dist_config_3_nodes_in_1_group());
+ sort_sent_messages_by_index(_sender);
+
+ EXPECT_EQ((NodeVec{0, 1, 2}), get_send_set());
+}
+
+/**
+ * Test scenario where a cluster is downsized by removing a subset of the nodes
+ * from the distribution configuration. The system must be able to deal with
+ * a scenario where the set of nodes between two cluster states across a config
+ * change may differ.
+ *
+ * See VESPA-790 for details.
+ */
+TEST_F(TopLevelBucketDBUpdaterTest, node_missing_from_config_is_treated_as_needing_ownership_transfer) {
+ uint32_t expected_msgs = message_count(3), dummy_buckets_to_return = 1;
+ ASSERT_NO_FATAL_FAILURE(set_and_enable_cluster_state(lib::ClusterState("distributor:3 storage:3"),
+ expected_msgs, dummy_buckets_to_return));
+ _sender.clear();
+
+ // Cluster goes from {0, 1, 2} -> {0, 1}. This leaves us with a config
+ // that does not contain node 2 while the _active_ cluster state still
+ // contains this node.
+ const char* downsize_cfg =
+ "redundancy 2\n"
+ "distributor_auto_ownership_transfer_on_whole_group_down true\n"
+ "group[2]\n"
+ "group[0].name \"invalid\"\n"
+ "group[0].index \"invalid\"\n"
+ "group[0].partitions 1|*\n"
+ "group[0].nodes[0]\n"
+ "group[1].name rack0\n"
+ "group[1].index 0\n"
+ "group[1].nodes[2]\n"
+ "group[1].nodes[0].index 0\n"
+ "group[1].nodes[1].index 1\n";
+
+ set_distribution(downsize_cfg);
+ sort_sent_messages_by_index(_sender);
+ _sender.clear();
+
+ // Attempt to apply state with {0, 1} set. This will compare the new state
+ // with the previous state, which still has node 2.
+ expected_msgs = message_count(2);
+ ASSERT_NO_FATAL_FAILURE(set_and_enable_cluster_state(lib::ClusterState("distributor:2 storage:2"),
+ expected_msgs, dummy_buckets_to_return));
+
+ EXPECT_EQ(expand_node_vec({0, 1}), get_send_set());
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, changed_distributor_set_implies_ownership_transfer) {
+ auto fixture = create_pending_state_fixture_for_state_change(
+ "distributor:2 storage:2", "distributor:1 storage:2");
+ EXPECT_TRUE(fixture->state->hasBucketOwnershipTransfer());
+
+ fixture = create_pending_state_fixture_for_state_change(
+ "distributor:2 storage:2", "distributor:2 .1.s:d storage:2");
+ EXPECT_TRUE(fixture->state->hasBucketOwnershipTransfer());
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, unchanged_distributor_set_implies_no_ownership_transfer) {
+ auto fixture = create_pending_state_fixture_for_state_change(
+ "distributor:2 storage:2", "distributor:2 storage:1");
+ EXPECT_FALSE(fixture->state->hasBucketOwnershipTransfer());
+
+ fixture = create_pending_state_fixture_for_state_change(
+ "distributor:2 storage:2", "distributor:2 storage:2 .1.s:d");
+ EXPECT_FALSE(fixture->state->hasBucketOwnershipTransfer());
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, changed_distribution_config_implies_ownership_transfer) {
+ auto fixture = create_pending_state_fixture_for_distribution_change("distributor:2 storage:2");
+ EXPECT_TRUE(fixture->state->hasBucketOwnershipTransfer());
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, transition_time_tracked_for_single_state_change) {
+ ASSERT_NO_FATAL_FAILURE(complete_state_transition_in_seconds("distributor:2 storage:2", 5, message_count(2)));
+
+ EXPECT_EQ(uint64_t(5000), last_transition_time_in_millis());
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, transition_time_reset_across_non_preempting_state_changes) {
+ ASSERT_NO_FATAL_FAILURE(complete_state_transition_in_seconds("distributor:2 storage:2", 5, message_count(2)));
+ ASSERT_NO_FATAL_FAILURE(complete_state_transition_in_seconds("distributor:2 storage:3", 3, message_count(1)));
+
+ EXPECT_EQ(uint64_t(3000), last_transition_time_in_millis());
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, transition_time_tracked_for_distribution_config_change) {
+ lib::ClusterState state("distributor:2 storage:2");
+ ASSERT_NO_FATAL_FAILURE(set_and_enable_cluster_state(state, message_count(2), 1));
+
+ _sender.clear();
+ set_distribution(dist_config_3_nodes_in_1_group());
+ fake_clock().addSecondsToTime(4);
+ ASSERT_NO_FATAL_FAILURE(complete_bucket_info_gathering(state, message_count(2)));
+ EXPECT_EQ(uint64_t(4000), last_transition_time_in_millis());
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, transition_time_tracked_across_preempted_transitions) {
+ _sender.clear();
+ set_cluster_state("version:1 distributor:2 storage:2");
+ fake_clock().addSecondsToTime(5);
+ // Pre-empted with new state here, which will push out the old pending
+ // state and replace it with a new one. We should still count the time
+ // used processing the old state.
+ ASSERT_NO_FATAL_FAILURE(complete_state_transition_in_seconds("version:2 distributor:2 storage:3", 3, message_count(3)));
+
+ EXPECT_EQ(uint64_t(8000), last_transition_time_in_millis());
+}
+
+/*
+ * Brief reminder on test DSL for checking bucket merge operations:
+ *
+ * merge_bucket_lists() takes as input strings of the format
+ * <node>:<raw bucket id>/<checksum>/<num docs>/<doc size>|<node>:
+ * and returns a string describing the bucket DB post-merge with the format
+ * <raw bucket id>:<node>/<checksum>/<num docs>/<doc size>,<node>:....|<raw bucket id>:....
+ *
+ * Yes, the order of node<->bucket id is reversed between the two, perhaps to make sure you're awake.
+ */
+
+TEST_F(TopLevelBucketDBUpdaterTest, batch_update_of_existing_diverging_replicas_does_not_mark_any_as_trusted) {
+ // Replacing bucket information for content node 0 should not mark existing
+ // untrusted replica as trusted as a side effect.
+ EXPECT_EQ("5:1/7/8/9/u,0/1/2/3/u|",
+ merge_bucket_lists(
+ lib::ClusterState("distributor:1 storage:3 .0.s:i"),
+ "0:5/0/0/0|1:5/7/8/9",
+ lib::ClusterState("distributor:1 storage:3 .0.s:u"),
+ "0:5/1/2/3|1:5/7/8/9", true));
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, batch_add_of_new_diverging_replicas_does_not_mark_any_as_trusted) {
+ EXPECT_EQ("5:1/7/8/9/u,0/1/2/3/u|",
+ merge_bucket_lists("", "0:5/1/2/3|1:5/7/8/9", true));
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, batch_add_with_single_resulting_replica_implicitly_marks_as_trusted) {
+ EXPECT_EQ("5:0/1/2/3/t|",
+ merge_bucket_lists("", "0:5/1/2/3", true));
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, identity_update_of_single_replica_does_not_clear_trusted) {
+ EXPECT_EQ("5:0/1/2/3/t|",
+ merge_bucket_lists("0:5/1/2/3", "0:5/1/2/3", true));
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, identity_update_of_diverging_untrusted_replicas_does_not_mark_any_as_trusted) {
+ EXPECT_EQ("5:1/7/8/9/u,0/1/2/3/u|",
+ merge_bucket_lists("0:5/1/2/3|1:5/7/8/9", "0:5/1/2/3|1:5/7/8/9", true));
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, adding_diverging_replica_to_existing_trusted_does_not_remove_trusted) {
+ EXPECT_EQ("5:1/2/3/4/u,0/1/2/3/t|",
+ merge_bucket_lists("0:5/1/2/3", "0:5/1/2/3|1:5/2/3/4", true));
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, batch_update_from_distributor_change_does_not_mark_diverging_replicas_as_trusted) {
+ // This differs from batch_update_of_existing_diverging_replicas_does_not_mark_any_as_trusted
+ // in that _all_ content nodes are considered outdated when distributor changes take place,
+ // and therefore a slightly different code path is taken. In particular, bucket info for
+ // outdated nodes gets removed before possibly being re-added (if present in the bucket info
+ // response).
+ EXPECT_EQ("5:1/7/8/9/u,0/1/2/3/u|",
+ merge_bucket_lists(
+ lib::ClusterState("distributor:2 storage:3"),
+ "0:5/1/2/3|1:5/7/8/9",
+ lib::ClusterState("distributor:1 storage:3"),
+ "0:5/1/2/3|1:5/7/8/9", true));
+}
+
+// TODO remove on Vespa 8 - this is a workaround for https://github.com/vespa-engine/vespa/issues/8475
+TEST_F(TopLevelBucketDBUpdaterTest, global_distribution_hash_falls_back_to_legacy_format_upon_request_rejection) {
+ set_distribution(dist_config_6_nodes_across_2_groups());
+
+ const vespalib::string current_hash = "(0d*|*(0;0;1;2)(1;3;4;5))";
+ const vespalib::string legacy_hash = "(0d3|3|*(0;0;1;2)(1;3;4;5))";
+
+ set_cluster_state("distributor:6 storage:6");
+ ASSERT_EQ(message_count(6), _sender.commands().size());
+
+ api::RequestBucketInfoCommand* global_req = nullptr;
+ for (auto& cmd : _sender.commands()) {
+ auto& req_cmd = dynamic_cast<api::RequestBucketInfoCommand&>(*cmd);
+ if (req_cmd.getBucketSpace() == document::FixedBucketSpaces::global_space()) {
+ global_req = &req_cmd;
+ break;
+ }
+ }
+ ASSERT_TRUE(global_req != nullptr);
+ ASSERT_EQ(current_hash, global_req->getDistributionHash());
+
+ auto reply = std::make_shared<api::RequestBucketInfoReply>(*global_req);
+ reply->setResult(api::ReturnCode::REJECTED);
+ bucket_db_updater().onRequestBucketInfoReply(reply);
+
+ fake_clock().addSecondsToTime(10);
+ bucket_db_updater().resend_delayed_messages();
+
+ // Should now be a resent request with legacy distribution hash
+ ASSERT_EQ(message_count(6) + 1, _sender.commands().size());
+ auto& legacy_req = dynamic_cast<api::RequestBucketInfoCommand&>(*_sender.commands().back());
+ ASSERT_EQ(legacy_hash, legacy_req.getDistributionHash());
+
+ // Now if we reject it _again_ we should cycle back to the current hash
+ // in case it wasn't a hash-based rejection after all. And the circle of life continues.
+ reply = std::make_shared<api::RequestBucketInfoReply>(legacy_req);
+ reply->setResult(api::ReturnCode::REJECTED);
+ bucket_db_updater().onRequestBucketInfoReply(reply);
+
+ fake_clock().addSecondsToTime(10);
+ bucket_db_updater().resend_delayed_messages();
+
+ ASSERT_EQ(message_count(6) + 2, _sender.commands().size());
+ auto& new_current_req = dynamic_cast<api::RequestBucketInfoCommand&>(*_sender.commands().back());
+ ASSERT_EQ(current_hash, new_current_req.getDistributionHash());
+}
+
+namespace {
+
+template <typename Func>
+void for_each_bucket(const BucketDatabase& db, const document::BucketSpace& space, Func&& f) {
+ BucketId last(0);
+ auto e = db.getNext(last);
+ while (e.valid()) {
+ f(space, e);
+ e = db.getNext(e.getBucketId());
+ }
+}
+
+template <typename Func>
+void for_each_bucket(const DistributorBucketSpaceRepo& repo, Func&& f) {
+ for (const auto& space : repo) {
+ for_each_bucket(space.second->getBucketDatabase(), space.first, f);
+ }
+}
+
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, non_owned_buckets_moved_to_read_only_db_on_ownership_change) {
+ set_stale_reads_enabled(true);
+
+ lib::ClusterState initial_state("distributor:1 storage:4"); // All buckets owned by us by definition
+ set_cluster_state_bundle(lib::ClusterStateBundle(initial_state, {}, false)); // Skip activation step for simplicity
+
+ ASSERT_EQ(message_count(4), _sender.commands().size());
+ constexpr uint32_t n_buckets = 10;
+ ASSERT_NO_FATAL_FAILURE(complete_bucket_info_gathering(initial_state, message_count(4), n_buckets));
+ _sender.clear();
+
+ EXPECT_EQ(n_buckets, mutable_default_dbs_size());
+ EXPECT_EQ(n_buckets, mutable_global_dbs_size());
+ EXPECT_EQ(0u, read_only_default_dbs_size());
+ EXPECT_EQ(0u, read_only_global_dbs_size());
+
+ lib::ClusterState pending_state("distributor:2 storage:4");
+
+ std::unordered_set<Bucket, Bucket::hash> buckets_not_owned_in_pending_state;
+ for (auto* s : distributor_stripes()) {
+ for_each_bucket(mutable_repo(*s), [&](const auto& space, const auto& entry) {
+ if (!distributor_bucket_space(entry.getBucketId()).owns_bucket_in_state(pending_state, entry.getBucketId())) {
+ buckets_not_owned_in_pending_state.insert(Bucket(space, entry.getBucketId()));
+ }
+ });
+ }
+ EXPECT_FALSE(buckets_not_owned_in_pending_state.empty());
+
+ set_cluster_state_bundle(lib::ClusterStateBundle(pending_state, {}, true)); // Now requires activation
+
+ const auto buckets_not_owned_per_space = (buckets_not_owned_in_pending_state.size() / 2); // 2 spaces
+ const auto expected_mutable_buckets = n_buckets - buckets_not_owned_per_space;
+ EXPECT_EQ(expected_mutable_buckets, mutable_default_dbs_size());
+ EXPECT_EQ(expected_mutable_buckets, mutable_global_dbs_size());
+ EXPECT_EQ(buckets_not_owned_per_space, read_only_default_dbs_size());
+ EXPECT_EQ(buckets_not_owned_per_space, read_only_global_dbs_size());
+
+ for (auto* s : distributor_stripes()) {
+ for_each_bucket(read_only_repo(*s), [&](const auto& space, const auto& entry) {
+ EXPECT_TRUE(buckets_not_owned_in_pending_state.find(Bucket(space, entry.getBucketId()))
+ != buckets_not_owned_in_pending_state.end());
+ });
+ }
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, buckets_no_longer_available_are_not_moved_to_read_only_database) {
+ constexpr uint32_t n_buckets = 10;
+ // No ownership change, just node down. Test redundancy is 2, so removing 2 nodes will
+ // cause some buckets to be entirely unavailable.
+ trigger_completed_but_not_yet_activated_transition("version:1 distributor:1 storage:4", n_buckets, 4,
+ "version:2 distributor:1 storage:4 .0.s:d .1.s:m", n_buckets, 0);
+
+ EXPECT_EQ(0u, read_only_default_dbs_size());
+ EXPECT_EQ(0u, read_only_global_dbs_size());
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, non_owned_buckets_purged_when_read_only_support_is_config_disabled) {
+ set_stale_reads_enabled(false);
+
+ lib::ClusterState initial_state("distributor:1 storage:4"); // All buckets owned by us by definition
+ set_cluster_state_bundle(lib::ClusterStateBundle(initial_state, {}, false)); // Skip activation step for simplicity
+
+ ASSERT_EQ(message_count(4), _sender.commands().size());
+ constexpr uint32_t n_buckets = 10;
+ ASSERT_NO_FATAL_FAILURE(complete_bucket_info_gathering(initial_state, message_count(4), n_buckets));
+ _sender.clear();
+
+ // Nothing in read-only DB after first bulk load of buckets.
+ EXPECT_EQ(0u, read_only_default_dbs_size());
+ EXPECT_EQ(0u, read_only_global_dbs_size());
+
+ set_cluster_state("distributor:2 storage:4");
+ // No buckets should be moved into read only db after ownership changes.
+ EXPECT_EQ(0u, read_only_default_dbs_size());
+ EXPECT_EQ(0u, read_only_global_dbs_size());
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, deferred_activated_state_does_not_enable_state_until_activation_received) {
+ set_stale_reads_enabled(true);
+ constexpr uint32_t n_buckets = 10;
+ ASSERT_NO_FATAL_FAILURE(
+ trigger_completed_but_not_yet_activated_transition("version:1 distributor:2 storage:4", 0, 4,
+ "version:2 distributor:1 storage:4", n_buckets, 4));
+
+ // Version should not be switched over yet
+ EXPECT_EQ(1u, current_cluster_state_bundle().getVersion());
+
+ EXPECT_EQ(0u, mutable_default_dbs_size());
+ EXPECT_EQ(0u, mutable_global_dbs_size());
+
+ EXPECT_FALSE(activate_cluster_state_version(2));
+
+ EXPECT_EQ(2u, current_cluster_state_bundle().getVersion());
+ EXPECT_EQ(n_buckets, mutable_default_dbs_size());
+ EXPECT_EQ(n_buckets, mutable_global_dbs_size());
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, read_only_db_cleared_once_pending_state_is_activated) {
+ set_stale_reads_enabled(true);
+ constexpr uint32_t n_buckets = 10;
+ ASSERT_NO_FATAL_FAILURE(
+ trigger_completed_but_not_yet_activated_transition("version:1 distributor:1 storage:4", n_buckets, 4,
+ "version:2 distributor:2 storage:4", n_buckets, 0));
+ EXPECT_FALSE(activate_cluster_state_version(2));
+
+ EXPECT_EQ(0u, read_only_default_dbs_size());
+ EXPECT_EQ(0u, read_only_global_dbs_size());
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, read_only_db_is_populated_even_when_self_is_marked_down) {
+ set_stale_reads_enabled(true);
+ constexpr uint32_t n_buckets = 10;
+ ASSERT_NO_FATAL_FAILURE(
+ trigger_completed_but_not_yet_activated_transition("version:1 distributor:1 storage:4", n_buckets, 4,
+ "version:2 distributor:1 .0.s:d storage:4", n_buckets, 0));
+
+ // State not yet activated, so read-only DBs have got all the buckets we used to have.
+ EXPECT_EQ(0u, mutable_default_dbs_size());
+ EXPECT_EQ(0u, mutable_global_dbs_size());
+ EXPECT_EQ(n_buckets, read_only_default_dbs_size());
+ EXPECT_EQ(n_buckets, read_only_global_dbs_size());
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, activate_cluster_state_request_with_mismatching_version_returns_actual_version) {
+ set_stale_reads_enabled(true);
+ constexpr uint32_t n_buckets = 10;
+ ASSERT_NO_FATAL_FAILURE(
+ trigger_completed_but_not_yet_activated_transition("version:4 distributor:1 storage:4", n_buckets, 4,
+ "version:5 distributor:2 storage:4", n_buckets, 0));
+
+ EXPECT_TRUE(activate_cluster_state_version(4)); // Too old version
+ ASSERT_NO_FATAL_FAILURE(assert_has_activate_cluster_state_reply_with_actual_version(5));
+
+ EXPECT_TRUE(activate_cluster_state_version(6)); // More recent version than what has been observed
+ ASSERT_NO_FATAL_FAILURE(assert_has_activate_cluster_state_reply_with_actual_version(5));
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, activate_cluster_state_request_without_pending_transition_passes_message_through) {
+ set_stale_reads_enabled(true);
+ constexpr uint32_t n_buckets = 10;
+ ASSERT_NO_FATAL_FAILURE(
+ trigger_completed_but_not_yet_activated_transition("version:1 distributor:2 storage:4", 0, 4,
+ "version:2 distributor:1 storage:4", n_buckets, 4));
+ // Activate version 2; no pending cluster state after this.
+ EXPECT_FALSE(activate_cluster_state_version(2));
+
+ // No pending cluster state for version 3, just passed through to be implicitly bounced by state manager.
+ // Note: state manager is not modelled in this test, so we just check that the message handler returns
+ // false (meaning "didn't take message ownership") and there's no auto-generated reply.
+ EXPECT_FALSE(activate_cluster_state_version(3));
+ EXPECT_EQ(size_t(0), _sender.replies().size());
+}
+
+TEST_F(TopLevelBucketDBUpdaterTest, pending_cluster_state_getter_is_non_null_only_when_state_is_pending) {
+ auto initial_baseline = std::make_shared<lib::ClusterState>("distributor:1 storage:2 .0.s:d");
+ auto initial_default = std::make_shared<lib::ClusterState>("distributor:1 storage:2 .0.s:m");
+
+ lib::ClusterStateBundle initial_bundle(*initial_baseline, {{FixedBucketSpaces::default_space(), initial_default},
+ {FixedBucketSpaces::global_space(), initial_baseline}});
+ set_cluster_state_bundle(initial_bundle);
+
+ for (auto* s : distributor_stripes()) {
+ auto* state = s->bucket_db_updater().pendingClusterStateOrNull(FixedBucketSpaces::default_space());
+ ASSERT_TRUE(state != nullptr);
+ EXPECT_EQ(*initial_default, *state);
+
+ state = s->bucket_db_updater().pendingClusterStateOrNull(FixedBucketSpaces::global_space());
+ ASSERT_TRUE(state != nullptr);
+ EXPECT_EQ(*initial_baseline, *state);
+ }
+
+ ASSERT_NO_FATAL_FAILURE(complete_bucket_info_gathering(*initial_baseline, message_count(1), 0));
+
+ for (auto* s : distributor_stripes()) {
+ auto* state = s->bucket_db_updater().pendingClusterStateOrNull(FixedBucketSpaces::default_space());
+ EXPECT_TRUE(state == nullptr);
+
+ state = s->bucket_db_updater().pendingClusterStateOrNull(FixedBucketSpaces::global_space());
+ EXPECT_TRUE(state == nullptr);
+ }
+}
+
+struct BucketDBUpdaterSnapshotTest : TopLevelBucketDBUpdaterTest {
+ lib::ClusterState empty_state;
+ std::shared_ptr<lib::ClusterState> initial_baseline;
+ std::shared_ptr<lib::ClusterState> initial_default;
+ lib::ClusterStateBundle initial_bundle;
+ Bucket default_bucket;
+ Bucket global_bucket;
+
+ BucketDBUpdaterSnapshotTest()
+ : TopLevelBucketDBUpdaterTest(),
+ empty_state(),
+ initial_baseline(std::make_shared<lib::ClusterState>("distributor:1 storage:2 .0.s:d")),
+ initial_default(std::make_shared<lib::ClusterState>("distributor:1 storage:2 .0.s:m")),
+ initial_bundle(*initial_baseline, {{FixedBucketSpaces::default_space(), initial_default},
+ {FixedBucketSpaces::global_space(), initial_baseline}}),
+ default_bucket(FixedBucketSpaces::default_space(), BucketId(16, 1234)),
+ global_bucket(FixedBucketSpaces::global_space(), BucketId(16, 1234))
+ {
+ }
+ ~BucketDBUpdaterSnapshotTest() override;
+
+ void SetUp() override {
+ TopLevelBucketDBUpdaterTest::SetUp();
+ set_stale_reads_enabled(true);
+ };
+
+ // Assumes that the distributor owns all buckets, so it may choose any arbitrary bucket in the bucket space
+ uint32_t buckets_in_snapshot_matching_current_db(bool check_mutable_repo, BucketSpace bucket_space) {
+ uint32_t found_buckets = 0;
+ for (auto* s : distributor_stripes()) {
+ auto rs = s->bucket_db_updater().read_snapshot_for_bucket(Bucket(bucket_space, BucketId(16, 1234)));
+ if (!rs.is_routable()) {
+ return 0;
+ }
+ auto guard = rs.steal_read_guard();
+ auto& repo = check_mutable_repo ? mutable_repo(*s) : read_only_repo(*s);
+ for_each_bucket(repo, [&](const auto& space, const auto& entry) {
+ if (space == bucket_space) {
+ auto entries = guard->find_parents_and_self(entry.getBucketId());
+ if (entries.size() == 1) {
+ ++found_buckets;
+ }
+ }
+ });
+ }
+ return found_buckets;
+ }
+};
+
+BucketDBUpdaterSnapshotTest::~BucketDBUpdaterSnapshotTest() = default;
+
+TEST_F(BucketDBUpdaterSnapshotTest, default_space_snapshot_prior_to_activated_state_is_non_routable) {
+ auto rs = stripe_of_bucket(default_bucket).bucket_db_updater().read_snapshot_for_bucket(default_bucket);
+ EXPECT_FALSE(rs.is_routable());
+}
+
+TEST_F(BucketDBUpdaterSnapshotTest, global_space_snapshot_prior_to_activated_state_is_non_routable) {
+ auto rs = stripe_of_bucket(global_bucket).bucket_db_updater().read_snapshot_for_bucket(global_bucket);
+ EXPECT_FALSE(rs.is_routable());
+}
+
+TEST_F(BucketDBUpdaterSnapshotTest, read_snapshot_returns_appropriate_cluster_states) {
+ set_cluster_state_bundle(initial_bundle);
+ // State currently pending, empty initial state is active
+
+ auto def_rs = stripe_of_bucket(default_bucket).bucket_db_updater().read_snapshot_for_bucket(default_bucket);
+ EXPECT_EQ(def_rs.context().active_cluster_state()->toString(), empty_state.toString());
+ EXPECT_EQ(def_rs.context().default_active_cluster_state()->toString(), empty_state.toString());
+ ASSERT_TRUE(def_rs.context().has_pending_state_transition());
+ EXPECT_EQ(def_rs.context().pending_cluster_state()->toString(), initial_default->toString());
+
+ auto global_rs = stripe_of_bucket(global_bucket).bucket_db_updater().read_snapshot_for_bucket(global_bucket);
+ EXPECT_EQ(global_rs.context().active_cluster_state()->toString(), empty_state.toString());
+ EXPECT_EQ(global_rs.context().default_active_cluster_state()->toString(), empty_state.toString());
+ ASSERT_TRUE(global_rs.context().has_pending_state_transition());
+ EXPECT_EQ(global_rs.context().pending_cluster_state()->toString(), initial_baseline->toString());
+
+ ASSERT_NO_FATAL_FAILURE(complete_bucket_info_gathering(*initial_baseline, message_count(1), 0));
+ // State now activated, no pending
+
+ def_rs = stripe_of_bucket(default_bucket).bucket_db_updater().read_snapshot_for_bucket(default_bucket);
+ EXPECT_EQ(def_rs.context().active_cluster_state()->toString(), initial_default->toString());
+ EXPECT_EQ(def_rs.context().default_active_cluster_state()->toString(), initial_default->toString());
+ EXPECT_FALSE(def_rs.context().has_pending_state_transition());
+
+ global_rs = stripe_of_bucket(global_bucket).bucket_db_updater().read_snapshot_for_bucket(global_bucket);
+ EXPECT_EQ(global_rs.context().active_cluster_state()->toString(), initial_baseline->toString());
+ EXPECT_EQ(global_rs.context().default_active_cluster_state()->toString(), initial_default->toString());
+ EXPECT_FALSE(global_rs.context().has_pending_state_transition());
+}
+
+TEST_F(BucketDBUpdaterSnapshotTest, snapshot_with_no_pending_state_transition_returns_mutable_db_guard) {
+ constexpr uint32_t n_buckets = 10;
+ ASSERT_NO_FATAL_FAILURE(
+ trigger_completed_but_not_yet_activated_transition("version:1 distributor:2 storage:4", 0, 4,
+ "version:2 distributor:1 storage:4", n_buckets, 4));
+ EXPECT_FALSE(activate_cluster_state_version(2));
+ EXPECT_EQ(buckets_in_snapshot_matching_current_db(true, FixedBucketSpaces::default_space()), n_buckets);
+ EXPECT_EQ(buckets_in_snapshot_matching_current_db(true, FixedBucketSpaces::global_space()), n_buckets);
+}
+
+TEST_F(BucketDBUpdaterSnapshotTest, snapshot_returns_unroutable_for_non_owned_bucket_in_current_state) {
+ ASSERT_NO_FATAL_FAILURE(
+ trigger_completed_but_not_yet_activated_transition("version:1 distributor:2 storage:4", 0, 4,
+ "version:2 distributor:2 .0.s:d storage:4", 0, 0));
+ EXPECT_FALSE(activate_cluster_state_version(2));
+ // We're down in state 2 and therefore do not own any buckets
+ auto def_rs = stripe_of_bucket(default_bucket).bucket_db_updater().read_snapshot_for_bucket(default_bucket);
+ EXPECT_FALSE(def_rs.is_routable());
+}
+
+TEST_F(BucketDBUpdaterSnapshotTest, snapshot_with_pending_state_returns_read_only_guard_for_bucket_only_owned_in_current_state) {
+ constexpr uint32_t n_buckets = 10;
+ ASSERT_NO_FATAL_FAILURE(
+ trigger_completed_but_not_yet_activated_transition("version:1 distributor:1 storage:4", n_buckets, 4,
+ "version:2 distributor:2 .0.s:d storage:4", 0, 0));
+ EXPECT_EQ(buckets_in_snapshot_matching_current_db(false, FixedBucketSpaces::default_space()), n_buckets);
+ EXPECT_EQ(buckets_in_snapshot_matching_current_db(false, FixedBucketSpaces::global_space()), n_buckets);
+}
+
+TEST_F(BucketDBUpdaterSnapshotTest, snapshot_is_unroutable_if_stale_reads_disabled_and_bucket_not_owned_in_pending_state) {
+ set_stale_reads_enabled(false);
+ constexpr uint32_t n_buckets = 10;
+ ASSERT_NO_FATAL_FAILURE(
+ trigger_completed_but_not_yet_activated_transition("version:1 distributor:1 storage:4", n_buckets, 4,
+ "version:2 distributor:2 .0.s:d storage:4", 0, 0));
+ auto def_rs = stripe_of_bucket(default_bucket).bucket_db_updater().read_snapshot_for_bucket(default_bucket);
+ EXPECT_FALSE(def_rs.is_routable());
+}
+
+}
diff --git a/storage/src/tests/distributor/top_level_distributor_test.cpp b/storage/src/tests/distributor/top_level_distributor_test.cpp
new file mode 100644
index 00000000000..548f0f6be2c
--- /dev/null
+++ b/storage/src/tests/distributor/top_level_distributor_test.cpp
@@ -0,0 +1,605 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include <vespa/storage/distributor/idealstatemetricsset.h>
+#include <vespa/storageapi/message/persistence.h>
+#include <vespa/storageapi/message/bucketsplitting.h>
+#include <vespa/storageapi/message/visitor.h>
+#include <vespa/storageapi/message/removelocation.h>
+#include <vespa/storageframework/defaultimplementation/thread/threadpoolimpl.h>
+#include <tests/distributor/top_level_distributor_test_util.h>
+#include <vespa/document/bucket/fixed_bucket_spaces.h>
+#include <vespa/document/test/make_document_bucket.h>
+#include <vespa/document/test/make_bucket_space.h>
+#include <vespa/storage/config/config-stor-distributormanager.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
+#include <vespa/storage/distributor/distributor_stripe.h>
+#include <vespa/storage/distributor/distributor_status.h>
+#include <vespa/storage/distributor/distributor_bucket_space.h>
+#include <vespa/storage/distributor/distributormetricsset.h>
+#include <vespa/storage/distributor/distributor_stripe_pool.h>
+#include <vespa/storage/distributor/distributor_stripe_thread.h>
+#include <vespa/vespalib/stllike/asciistream.h>
+#include <vespa/metrics/updatehook.h>
+#include <thread>
+#include <vespa/vespalib/gtest/gtest.h>
+#include <gmock/gmock.h>
+
+using document::test::makeDocumentBucket;
+using document::test::makeBucketSpace;
+using document::FixedBucketSpaces;
+using document::BucketSpace;
+using document::Bucket;
+using document::BucketId;
+using namespace ::testing;
+
+namespace storage::distributor {
+
+struct TopLevelDistributorTest : Test, TopLevelDistributorTestUtil {
+ TopLevelDistributorTest();
+ ~TopLevelDistributorTest() override;
+
+ void SetUp() override {
+ create_links();
+ };
+
+ void TearDown() override {
+ close();
+ }
+
+ void reply_to_1_node_bucket_info_fetch_with_n_buckets(size_t n);
+
+ // Simple type aliases to make interfacing with certain utility functions
+ // easier. Note that this is only for readability and does not provide any
+ // added type safety.
+ using NodeCount = int;
+ using Redundancy = int;
+ using ConfigBuilder = vespa::config::content::core::StorDistributormanagerConfigBuilder;
+
+ std::string resolve_stripe_operation_routing(std::shared_ptr<api::StorageMessage> msg) {
+ handle_top_level_message(msg);
+
+ vespalib::asciistream posted_msgs;
+ auto stripes = distributor_stripes();
+ for (size_t i = 0; i < stripes.size(); ++i) {
+ // TODO less intrusive, this is brittle.
+ for (auto& qmsg : stripes[i]->_messageQueue) {
+ posted_msgs << "Stripe " << i << ": " << MessageSenderStub::dumpMessage(*qmsg, false, false);
+ }
+ stripes[i]->_messageQueue.clear();
+ }
+ return posted_msgs.str();
+ }
+
+ StatusReporterDelegate& distributor_status_delegate() {
+ return _distributor->_distributorStatusDelegate;
+ }
+
+ framework::TickingThreadPool& distributor_thread_pool() {
+ return _distributor->_threadPool;
+ }
+
+ DistributorHostInfoReporter& distributor_host_info_reporter() {
+ return _distributor->_hostInfoReporter;
+ }
+
+ const std::vector<std::shared_ptr<DistributorStatus>>& distributor_status_todos() {
+ return _distributor->_status_to_do;
+ }
+
+ BucketSpacesStatsProvider::PerNodeBucketSpacesStats distributor_bucket_spaces_stats() {
+ return _distributor->getBucketSpacesStats();
+ }
+
+ uint64_t db_sample_interval_sec() const noexcept {
+ // Sampling interval is equal across stripes, so just grab the first one and go with it.
+ return std::chrono::duration_cast<std::chrono::seconds>(
+ distributor_stripes().front()->db_memory_sample_interval()).count();
+ }
+
+ size_t explicit_node_state_reply_send_invocations() const noexcept {
+ return _node->getNodeStateUpdater().explicit_node_state_reply_send_invocations();
+ }
+
+ std::shared_ptr<api::RemoveCommand> make_dummy_remove_command() {
+ return std::make_shared<api::RemoveCommand>(
+ makeDocumentBucket(document::BucketId(0)),
+ document::DocumentId("id:foo:testdoctype1:n=1:foo"),
+ api::Timestamp(0));
+ }
+
+ void assert_single_reply_present_with_return_code(api::ReturnCode::Result expected_result) {
+ ASSERT_THAT(_sender.replies(), SizeIs(1)); // Single remove reply
+ ASSERT_EQ(_sender.reply(0)->getType(), api::MessageType::REMOVE_REPLY);
+ auto& reply(static_cast<api::RemoveReply&>(*_sender.reply(0)));
+ ASSERT_EQ(reply.getResult().getResult(), expected_result);
+ _sender.replies().clear();
+ }
+
+ void assert_single_bounced_remove_reply_present() {
+ assert_single_reply_present_with_return_code(api::ReturnCode::STALE_TIMESTAMP);
+ }
+
+ void assert_single_ok_remove_reply_present() {
+ assert_single_reply_present_with_return_code(api::ReturnCode::OK);
+ }
+
+ void assert_all_stripes_are_maintenance_inhibited(bool inhibited) const {
+ for (auto* stripe : distributor_stripes()) {
+ EXPECT_EQ(stripe->non_activation_maintenance_is_inhibited(), inhibited);
+ }
+ }
+};
+
+TopLevelDistributorTest::TopLevelDistributorTest()
+ : Test(),
+ TopLevelDistributorTestUtil()
+{
+}
+
+TopLevelDistributorTest::~TopLevelDistributorTest() = default;
+
+TEST_F(TopLevelDistributorTest, external_operation_is_routed_to_expected_stripe) {
+ setup_distributor(Redundancy(1), NodeCount(1), "storage:1 distributor:1");
+
+ auto op = std::make_shared<api::RemoveCommand>(
+ makeDocumentBucket(document::BucketId()),
+ document::DocumentId("id:m:test:n=1:foo"),
+ api::Timestamp(1234));
+
+ // We expect stripe mapping to be deterministic.
+ EXPECT_EQ("Stripe 2: Remove", resolve_stripe_operation_routing(op));
+
+ auto cmd = std::make_shared<api::CreateVisitorCommand>(makeBucketSpace(), "foo", "bar", "");
+ cmd->addBucketToBeVisited(document::BucketId(16, 1234));
+ cmd->addBucketToBeVisited(document::BucketId());
+
+ EXPECT_EQ("Stripe 1: Visitor Create", resolve_stripe_operation_routing(cmd));
+}
+
+TEST_F(TopLevelDistributorTest, recovery_mode_on_cluster_state_change_is_triggered_across_all_stripes) {
+ setup_distributor(Redundancy(1), NodeCount(2), "storage:1 .0.s:d distributor:1");
+ enable_distributor_cluster_state("storage:1 distributor:1");
+
+ EXPECT_TRUE(all_distributor_stripes_are_in_recovery_mode());
+ tick();
+ EXPECT_FALSE(all_distributor_stripes_are_in_recovery_mode());
+
+ enable_distributor_cluster_state("storage:2 distributor:1");
+ EXPECT_TRUE(all_distributor_stripes_are_in_recovery_mode());
+}
+
+TEST_F(TopLevelDistributorTest, distributor_considered_initialized_once_self_observed_up) {
+ setup_distributor(Redundancy(1), NodeCount(2), "distributor:1 .0.s:d storage:1"); // We're down D:
+ EXPECT_FALSE(_distributor->done_initializing());
+ enable_distributor_cluster_state("distributor:1 storage:1"); // We're up :D
+ EXPECT_TRUE(_distributor->done_initializing());
+ enable_distributor_cluster_state("distributor:1 .0.s:d storage:1"); // And down again :I but that does not change init state
+ EXPECT_TRUE(_distributor->done_initializing());
+}
+
+// TODO consider moving to generic test, not specific to top-level distributor or stripe
+TEST_F(TopLevelDistributorTest, contains_time_statement) {
+ setup_distributor(Redundancy(1), NodeCount(1), "storage:1 distributor:1");
+
+ auto cfg = _component->total_distributor_config_sp();
+ EXPECT_FALSE(cfg->containsTimeStatement(""));
+ EXPECT_FALSE(cfg->containsTimeStatement("testdoctype1"));
+ EXPECT_FALSE(cfg->containsTimeStatement("testdoctype1.headerfield > 42"));
+ EXPECT_TRUE(cfg->containsTimeStatement("testdoctype1.headerfield > now()"));
+ EXPECT_TRUE(cfg->containsTimeStatement("testdoctype1.headerfield > now() - 3600"));
+ EXPECT_TRUE(cfg->containsTimeStatement("testdoctype1.headerfield == now() - 3600"));
+}
+
+TEST_F(TopLevelDistributorTest, config_changes_are_propagated_to_all_stripes) {
+ setup_distributor(Redundancy(1), NodeCount(1), "storage:1 distributor:1");
+
+ for (auto* s : distributor_stripes()) {
+ ASSERT_NE(s->getConfig().getSplitCount(), 1234);
+ ASSERT_NE(s->getConfig().getJoinCount(), 123);
+ }
+
+ auto cfg = current_distributor_config();
+ cfg.splitcount = 1234;
+ cfg.joincount = 123;
+ reconfigure(cfg);
+
+ for (auto* s : distributor_stripes()) {
+ ASSERT_EQ(s->getConfig().getSplitCount(), 1234);
+ ASSERT_EQ(s->getConfig().getJoinCount(), 123);
+ }
+}
+
+namespace {
+
+using namespace framework::defaultimplementation;
+
+class StatusRequestThread : public framework::Runnable {
+ StatusReporterDelegate& _reporter;
+ std::string _result;
+public:
+ explicit StatusRequestThread(StatusReporterDelegate& reporter)
+ : _reporter(reporter)
+ {}
+ void run(framework::ThreadHandle&) override {
+ framework::HttpUrlPath path("/distributor?page=buckets");
+ std::ostringstream stream;
+ _reporter.reportStatus(stream, path);
+ _result = stream.str();
+ }
+
+ std::string getResult() const {
+ return _result;
+ }
+};
+
+}
+
+TEST_F(TopLevelDistributorTest, tick_aggregates_status_requests_from_all_stripes) {
+ setup_distributor(Redundancy(1), NodeCount(1), "storage:1 distributor:1");
+
+ ASSERT_NE(stripe_index_of_bucket(document::BucketId(16, 1)),
+ stripe_index_of_bucket(document::BucketId(16, 2)));
+
+ add_nodes_to_stripe_bucket_db(document::BucketId(16, 1), "0=1/1/1/t");
+ add_nodes_to_stripe_bucket_db(document::BucketId(16, 2), "0=2/2/2/t");
+
+ // Must go via delegate since reportStatus is now just a rendering
+ // function and not a request enqueuer (see Distributor::handleStatusRequest).
+ StatusRequestThread thread(distributor_status_delegate());
+ FakeClock clock;
+ ThreadPoolImpl pool(clock);
+ int ticksBeforeWait = 1;
+ framework::Thread::UP tp(pool.startThread(thread, "statustest", 5ms, 5s, ticksBeforeWait));
+
+ while (true) {
+ std::this_thread::sleep_for(1ms);
+ framework::TickingLockGuard guard(distributor_thread_pool().freezeCriticalTicks());
+ if (!distributor_status_todos().empty()) {
+ break;
+ }
+
+ }
+ ASSERT_TRUE(tick());
+
+ tp->interruptAndJoin();
+
+ // Result contains buckets from DBs of multiple stripes.
+ EXPECT_THAT(thread.getResult(), HasSubstr("BucketId(0x4000000000000001)"));
+ EXPECT_THAT(thread.getResult(), HasSubstr("BucketId(0x4000000000000002)"));
+}
+
+TEST_F(TopLevelDistributorTest, metric_update_hook_updates_pending_maintenance_metrics) {
+ setup_distributor(Redundancy(2), NodeCount(2), "storage:2 distributor:1");
+ // To ensure we count all operations, not just those fitting within the pending window.
+ auto cfg = current_distributor_config();
+ cfg.maxpendingidealstateoperations = 1; // FIXME STRIPE this does not actually seem to be used...!
+ reconfigure(cfg);
+
+ // 1 bucket must be merged, 1 must be split, 1 should be activated.
+ add_nodes_to_stripe_bucket_db(document::BucketId(16, 1), "0=2/2/2/t/a,1=1/1/1");
+ add_nodes_to_stripe_bucket_db(document::BucketId(16, 2), "0=100/10000000/200000/t/a,1=100/10000000/200000/t");
+ add_nodes_to_stripe_bucket_db(document::BucketId(16, 3), "0=200/300/400/t,1=200/300/400/t");
+
+ // Go many full scanner rounds to check that metrics are set, not added to existing.
+ tick_distributor_and_stripes_n_times(50);
+
+ // By this point, no hook has been called so the metrics have not been set.
+ using MO = MaintenanceOperation;
+ {
+ const IdealStateMetricSet& metrics = total_ideal_state_metrics();
+ EXPECT_EQ(0, metrics.operations[MO::MERGE_BUCKET]->pending.getLast());
+ EXPECT_EQ(0, metrics.operations[MO::SPLIT_BUCKET]->pending.getLast());
+ EXPECT_EQ(0, metrics.operations[MO::SET_BUCKET_STATE]->pending.getLast());
+ EXPECT_EQ(0, metrics.operations[MO::DELETE_BUCKET]->pending.getLast());
+ EXPECT_EQ(0, metrics.operations[MO::JOIN_BUCKET]->pending.getLast());
+ EXPECT_EQ(0, metrics.operations[MO::GARBAGE_COLLECTION]->pending.getLast());
+ }
+
+ // Force trigger update hook
+ std::mutex l;
+ distributor_metric_update_hook().updateMetrics(metrics::MetricLockGuard(l));
+ // Metrics should now be updated to the last complete working state
+ {
+ const IdealStateMetricSet& metrics = total_ideal_state_metrics();
+ EXPECT_EQ(1, metrics.operations[MO::MERGE_BUCKET]->pending.getLast());
+ EXPECT_EQ(1, metrics.operations[MO::SPLIT_BUCKET]->pending.getLast());
+ EXPECT_EQ(1, metrics.operations[MO::SET_BUCKET_STATE]->pending.getLast());
+ EXPECT_EQ(0, metrics.operations[MO::DELETE_BUCKET]->pending.getLast());
+ EXPECT_EQ(0, metrics.operations[MO::JOIN_BUCKET]->pending.getLast());
+ EXPECT_EQ(0, metrics.operations[MO::GARBAGE_COLLECTION]->pending.getLast());
+ }
+}
+
+TEST_F(TopLevelDistributorTest, bucket_db_memory_usage_metrics_only_updated_at_fixed_time_intervals) {
+ fake_clock().setAbsoluteTimeInSeconds(1000);
+
+ setup_distributor(Redundancy(2), NodeCount(2), "storage:2 distributor:1");
+ add_nodes_to_stripe_bucket_db(document::BucketId(16, 1), "0=1/1/1/t/a,1=2/2/2");
+ tick_distributor_and_stripes_n_times(10);
+
+ std::mutex l;
+ distributor_metric_update_hook().updateMetrics(metrics::MetricLockGuard(l));
+ auto* m = total_distributor_metrics().mutable_dbs.memory_usage.getMetric("used_bytes");
+ ASSERT_TRUE(m != nullptr);
+ auto last_used = m->getLongValue("last");
+ EXPECT_GT(last_used, 0);
+
+ // Add another bucket to the DB. This should increase the underlying used number of
+ // bytes, but this should not be aggregated into the metrics until the sampling time
+ // interval has passed. Instead, old metric gauge values should be preserved.
+ add_nodes_to_stripe_bucket_db(document::BucketId(16, 2), "0=1/1/1/t/a,1=2/2/2");
+
+ const auto sample_interval_sec = db_sample_interval_sec();
+ fake_clock().setAbsoluteTimeInSeconds(1000 + sample_interval_sec - 1); // Not there yet.
+ tick_distributor_and_stripes_n_times(50);
+ distributor_metric_update_hook().updateMetrics(metrics::MetricLockGuard(l));
+
+ m = total_distributor_metrics().mutable_dbs.memory_usage.getMetric("used_bytes");
+ auto now_used = m->getLongValue("last");
+ EXPECT_EQ(now_used, last_used);
+
+ fake_clock().setAbsoluteTimeInSeconds(1000 + sample_interval_sec + 1);
+ tick_distributor_and_stripes_n_times(10);
+ distributor_metric_update_hook().updateMetrics(metrics::MetricLockGuard(l));
+
+ m = total_distributor_metrics().mutable_dbs.memory_usage.getMetric("used_bytes");
+ now_used = m->getLongValue("last");
+ EXPECT_GT(now_used, last_used);
+}
+
+void TopLevelDistributorTest::reply_to_1_node_bucket_info_fetch_with_n_buckets(size_t n) {
+ ASSERT_EQ(bucket_spaces().size(), _sender.commands().size());
+ for (uint32_t i = 0; i < _sender.commands().size(); ++i) {
+ ASSERT_EQ(api::MessageType::REQUESTBUCKETINFO, _sender.command(i)->getType());
+ auto& bucket_req = dynamic_cast<api::RequestBucketInfoCommand&>(*_sender.command(i));
+ auto reply = bucket_req.makeReply();
+ if (bucket_req.getBucketSpace() == FixedBucketSpaces::default_space()) {
+ auto& bucket_reply = dynamic_cast<api::RequestBucketInfoReply&>(*reply);
+ for (size_t j = 1; j <= n; ++j) {
+ bucket_reply.getBucketInfo().push_back(api::RequestBucketInfoReply::Entry(
+ document::BucketId(16, j), api::BucketInfo(20, 10, 12, 50, 60, true, true)));
+ }
+ }
+ handle_top_level_message(std::move(reply));
+ }
+ _sender.commands().clear();
+}
+
+TEST_F(TopLevelDistributorTest, cluster_state_lifecycle_is_propagated_to_stripes) {
+ setup_distributor(Redundancy(2), NodeCount(2), "storage:2 .0.s:d distributor:1");
+ // Node 0 goes from Down -> Up, should get 1 RequestBucketInfo per bucket space.
+ receive_set_system_state_command("storage:2 distributor:1");
+ tick_top_level_distributor_n_times(1); // Process enqueued message
+ // All stripes should now be in pending state
+ for (auto* s : distributor_stripes()) {
+ for (auto space : bucket_spaces()) {
+ EXPECT_TRUE(s->getBucketSpaceRepo().get(space).has_pending_cluster_state());
+ }
+ }
+ // Respond with some buckets that will be evenly distributed across the stripes.
+ reply_to_1_node_bucket_info_fetch_with_n_buckets(10);
+ tick_top_level_distributor_n_times(1); // Process enqueued replies
+
+ std::vector<document::BucketId> inserted_buckets;
+ // Pending state should now be cleared for all stripes
+ for (auto* s : distributor_stripes()) {
+ for (auto space : bucket_spaces()) {
+ EXPECT_FALSE(s->getBucketSpaceRepo().get(space).has_pending_cluster_state());
+ }
+ auto& def_space = s->getBucketSpaceRepo().get(document::FixedBucketSpaces::default_space());
+ def_space.getBucketDatabase().acquire_read_guard()->for_each([&](uint64_t key, [[maybe_unused]] const auto& entry) {
+ inserted_buckets.emplace_back(document::BucketId::keyToBucketId(key));
+ });
+ }
+ // All buckets should be present. We track as vectors rather than sets to detect any cross-stripe duplicates.
+ std::vector<document::BucketId> expected_buckets;
+ for (size_t i = 1; i <= 10; ++i) {
+ expected_buckets.emplace_back(16, i);
+ }
+ std::sort(expected_buckets.begin(), expected_buckets.end());
+ std::sort(inserted_buckets.begin(), inserted_buckets.end());
+ EXPECT_EQ(inserted_buckets, expected_buckets);
+}
+
+TEST_F(TopLevelDistributorTest, host_info_sent_immediately_once_all_stripes_first_reported) {
+ setup_distributor(Redundancy(2), NodeCount(2), "storage:2 distributor:1");
+ ASSERT_EQ(_num_distributor_stripes, 4);
+ fake_clock().setAbsoluteTimeInSeconds(1000);
+
+ tick_top_level_distributor_n_times(1);
+ EXPECT_EQ(0, explicit_node_state_reply_send_invocations()); // Nothing yet
+ _distributor->notify_stripe_wants_to_send_host_info(1);
+ _distributor->notify_stripe_wants_to_send_host_info(2);
+ _distributor->notify_stripe_wants_to_send_host_info(3);
+
+ tick_top_level_distributor_n_times(1);
+ // Still nothing. Missing initial report from stripe 0
+ EXPECT_EQ(0, explicit_node_state_reply_send_invocations());
+
+ _distributor->notify_stripe_wants_to_send_host_info(0);
+ tick_top_level_distributor_n_times(1);
+ // All stripes have reported in, it's time to party!
+ EXPECT_EQ(1, explicit_node_state_reply_send_invocations());
+
+ // No further sends if stripes haven't requested it yet.
+ fake_clock().setAbsoluteTimeInSeconds(2000);
+ tick_top_level_distributor_n_times(10);
+ EXPECT_EQ(1, explicit_node_state_reply_send_invocations());
+}
+
+TEST_F(TopLevelDistributorTest, non_bootstrap_host_info_send_request_delays_sending) {
+ setup_distributor(Redundancy(2), NodeCount(2), "storage:2 distributor:1");
+ ASSERT_EQ(_num_distributor_stripes, 4);
+ fake_clock().setAbsoluteTimeInSeconds(1000);
+
+ for (uint16_t i = 0; i < 4; ++i) {
+ _distributor->notify_stripe_wants_to_send_host_info(i);
+ }
+ tick_top_level_distributor_n_times(1);
+ // Bootstrap case
+ EXPECT_EQ(1, explicit_node_state_reply_send_invocations());
+
+ // Stripe 1 suddenly really wants to tell the cluster controller something again
+ _distributor->notify_stripe_wants_to_send_host_info(1);
+ tick_top_level_distributor_n_times(1);
+ // But its cry for attention is not yet honored since the delay hasn't passed.
+ EXPECT_EQ(1, explicit_node_state_reply_send_invocations());
+
+ fake_clock().addMilliSecondsToTime(999);
+ tick_top_level_distributor_n_times(1);
+ // 1 sec delay has still not passed
+ EXPECT_EQ(1, explicit_node_state_reply_send_invocations());
+
+ fake_clock().addMilliSecondsToTime(1);
+ tick_top_level_distributor_n_times(1);
+ // But now it has
+ EXPECT_EQ(2, explicit_node_state_reply_send_invocations());
+}
+
+TEST_F(TopLevelDistributorTest, host_info_reporter_config_is_propagated_to_reporter) {
+ setup_distributor(Redundancy(2), NodeCount(2), "storage:2 distributor:1");
+
+ // Default is enabled=true.
+ EXPECT_TRUE(distributor_host_info_reporter().isReportingEnabled());
+
+ auto cfg = current_distributor_config();
+ cfg.enableHostInfoReporting = false;
+ reconfigure(cfg);
+
+ EXPECT_FALSE(distributor_host_info_reporter().isReportingEnabled());
+}
+
+namespace {
+
+void assert_invalid_stats_for_all_spaces(
+ const BucketSpacesStatsProvider::PerNodeBucketSpacesStats& stats,
+ uint16_t node_index)
+{
+ auto stats_iter = stats.find(node_index);
+ ASSERT_TRUE(stats_iter != stats.cend());
+ ASSERT_EQ(2, stats_iter->second.size());
+ auto space_iter = stats_iter->second.find(document::FixedBucketSpaces::default_space_name());
+ ASSERT_TRUE(space_iter != stats_iter->second.cend());
+ ASSERT_FALSE(space_iter->second.valid());
+ space_iter = stats_iter->second.find(document::FixedBucketSpaces::global_space_name());
+ ASSERT_TRUE(space_iter != stats_iter->second.cend());
+ ASSERT_FALSE(space_iter->second.valid());
+}
+
+}
+
+TEST_F(TopLevelDistributorTest, entering_recovery_mode_resets_bucket_space_stats_across_all_stripes) {
+ // Set up a cluster state + DB contents which implies merge maintenance ops
+ setup_distributor(Redundancy(2), NodeCount(2), "version:1 distributor:1 storage:2");
+ add_nodes_to_stripe_bucket_db(document::BucketId(16, 1), "0=1/1/1/t/a");
+ add_nodes_to_stripe_bucket_db(document::BucketId(16, 2), "0=1/1/1/t/a");
+ add_nodes_to_stripe_bucket_db(document::BucketId(16, 3), "0=2/2/2/t/a");
+
+ tick_distributor_and_stripes_n_times(5); // Make sure all stripes have had ample time to update their stats
+
+ enable_distributor_cluster_state("version:2 distributor:1 storage:3 .1.s:d");
+ EXPECT_TRUE(all_distributor_stripes_are_in_recovery_mode());
+ // Bucket space stats should now be invalid per space per node, pending stats
+ // from state version 2. Exposing stats from version 1 risks reporting stale
+ // information back to the cluster controller.
+ const auto stats = distributor_bucket_spaces_stats();
+ ASSERT_EQ(2, stats.size());
+
+ assert_invalid_stats_for_all_spaces(stats, 0);
+ assert_invalid_stats_for_all_spaces(stats, 2);
+}
+
+TEST_F(TopLevelDistributorTest, leaving_recovery_mode_immediately_sends_getnodestate_replies) {
+ setup_distributor(Redundancy(2), NodeCount(2), "version:1 distributor:1 storage:2");
+ fake_clock().setAbsoluteTimeInSeconds(1000);
+ // Should not send explicit replies during init stage
+ ASSERT_EQ(0, explicit_node_state_reply_send_invocations());
+ // Add a couple of buckets so we have something to iterate over. 2 buckets
+ // map to the same stripe so we'll need 2 ticks to complete a full scan.
+ ASSERT_EQ(stripe_index_of_bucket(document::BucketId(16, 1)),
+ stripe_index_of_bucket(document::BucketId(16, 5)));
+
+ add_nodes_to_stripe_bucket_db(document::BucketId(16, 1), "0=1/1/1/t/a");
+ add_nodes_to_stripe_bucket_db(document::BucketId(16, 2), "0=1/1/1/t/a");
+ add_nodes_to_stripe_bucket_db(document::BucketId(16, 5), "0=1/1/1/t/a");
+
+ enable_distributor_cluster_state("version:2 distributor:1 storage:3 .1.s:d");
+ EXPECT_TRUE(all_distributor_stripes_are_in_recovery_mode());
+ EXPECT_EQ(0, explicit_node_state_reply_send_invocations());
+ tick_distributor_and_stripes_n_times(1); // DB round not yet complete
+ EXPECT_EQ(0, explicit_node_state_reply_send_invocations());
+ tick_distributor_and_stripes_n_times(4); // DB round complete on all stripes
+ EXPECT_EQ(1, explicit_node_state_reply_send_invocations());
+ EXPECT_FALSE(all_distributor_stripes_are_in_recovery_mode());
+ // Now out of recovery mode, subsequent round completions should not send replies
+ tick_distributor_and_stripes_n_times(10);
+ EXPECT_EQ(1, explicit_node_state_reply_send_invocations());
+}
+
+// TODO refactor this to set proper highest timestamp as part of bucket info
+// reply once we have the "highest timestamp across all owned buckets" feature
+// in place.
+TEST_F(TopLevelDistributorTest, configured_feed_safe_time_point_rejection_works_end_to_end) {
+ setup_distributor(Redundancy(2), NodeCount(2), "storage:1 distributor:2");
+ fake_clock().setAbsoluteTimeInSeconds(1000);
+
+ auto cfg = current_distributor_config();
+ cfg.maxClusterClockSkewSec = 10;
+ reconfigure(cfg);
+
+ // State with changed bucket ownership; should enforce safe mutation time points
+ enable_distributor_cluster_state("storage:1 distributor:1", true);
+
+ handle_top_level_message(make_dummy_remove_command());
+ tick_distributor_and_stripes_n_times(1); // Process queued message
+ ASSERT_NO_FATAL_FAILURE(assert_single_bounced_remove_reply_present());
+
+ // Increment time to first whole second of clock + 10 seconds of skew.
+ // Should now not get any feed rejections.
+ fake_clock().setAbsoluteTimeInSeconds(1011);
+
+ handle_top_level_message(make_dummy_remove_command());
+ tick_distributor_and_stripes_n_times(1); // Process queued message
+ // We don't have any buckets in our DB so we'll get an OK remove reply back (nothing to remove!)
+ ASSERT_NO_FATAL_FAILURE(assert_single_ok_remove_reply_present());
+}
+
+TEST_F(TopLevelDistributorTest, configured_maintenance_safe_time_point_inhibition_works_end_to_end) {
+ setup_distributor(Redundancy(2), NodeCount(2), "storage:1 distributor:2");
+ fake_clock().setAbsoluteTimeInSeconds(1000);
+
+ auto cfg = current_distributor_config();
+ cfg.maxClusterClockSkewSec = 10;
+ reconfigure(cfg);
+
+ ASSERT_NO_FATAL_FAILURE(assert_all_stripes_are_maintenance_inhibited(false));
+
+ enable_distributor_cluster_state("storage:1 distributor:1", true);
+ tick_distributor_and_stripes_n_times(1);
+ ASSERT_NO_FATAL_FAILURE(assert_all_stripes_are_maintenance_inhibited(true));
+
+ fake_clock().setAbsoluteTimeInSeconds(1010); // Safe period still not expired
+ tick_distributor_and_stripes_n_times(1);
+ ASSERT_NO_FATAL_FAILURE(assert_all_stripes_are_maintenance_inhibited(true));
+
+ fake_clock().setAbsoluteTimeInSeconds(1011); // Safe period now expired
+ tick_distributor_and_stripes_n_times(1);
+ ASSERT_NO_FATAL_FAILURE(assert_all_stripes_are_maintenance_inhibited(false));
+}
+
+TEST_F(TopLevelDistributorTest, maintenance_safe_time_not_triggered_if_state_transition_does_not_have_ownership_transfer) {
+ setup_distributor(Redundancy(2), NodeCount(2), "storage:1 distributor:2");
+ fake_clock().setAbsoluteTimeInSeconds(1000);
+
+ auto cfg = current_distributor_config();
+ cfg.maxClusterClockSkewSec = 10;
+ reconfigure(cfg);
+
+ ASSERT_NO_FATAL_FAILURE(assert_all_stripes_are_maintenance_inhibited(false));
+
+ enable_distributor_cluster_state("storage:1 distributor:1", false);
+ tick_distributor_and_stripes_n_times(1);
+ ASSERT_NO_FATAL_FAILURE(assert_all_stripes_are_maintenance_inhibited(false));
+}
+
+}
diff --git a/storage/src/tests/distributor/top_level_distributor_test_util.cpp b/storage/src/tests/distributor/top_level_distributor_test_util.cpp
new file mode 100644
index 00000000000..636a09d1f6e
--- /dev/null
+++ b/storage/src/tests/distributor/top_level_distributor_test_util.cpp
@@ -0,0 +1,489 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include "top_level_distributor_test_util.h"
+#include <vespa/config-stor-distribution.h>
+#include <vespa/document/test/make_bucket_space.h>
+#include <vespa/document/test/make_document_bucket.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
+#include <vespa/storage/distributor/distributor_bucket_space.h>
+#include <vespa/storage/distributor/distributor_stripe.h>
+#include <vespa/storage/distributor/distributor_stripe_component.h>
+#include <vespa/storage/distributor/distributor_stripe_pool.h>
+#include <vespa/storage/distributor/distributor_stripe_thread.h>
+#include <vespa/storage/distributor/distributor_total_metrics.h>
+#include <vespa/storage/common/bucket_stripe_utils.h>
+#include <vespa/vdslib/distribution/distribution.h>
+#include <vespa/vespalib/text/stringtokenizer.h>
+
+using document::test::makeBucketSpace;
+using document::test::makeDocumentBucket;
+
+namespace storage::distributor {
+
+TopLevelDistributorTestUtil::TopLevelDistributorTestUtil()
+ : _message_sender(_sender, _sender_down),
+ _num_distributor_stripes(4)
+{
+ _config = getStandardConfig(false);
+}
+
+TopLevelDistributorTestUtil::~TopLevelDistributorTestUtil() = default;
+
+void
+TopLevelDistributorTestUtil::create_links()
+{
+ _node.reset(new TestDistributorApp(_config.getConfigId()));
+ _thread_pool = framework::TickingThreadPool::createDefault("distributor");
+ _stripe_pool = DistributorStripePool::make_non_threaded_pool_for_testing();
+ _distributor.reset(new TopLevelDistributor(
+ _node->getComponentRegister(),
+ _node->node_identity(),
+ *_thread_pool,
+ *_stripe_pool,
+ *this,
+ _num_distributor_stripes,
+ _host_info,
+ &_message_sender));
+ _component.reset(new storage::DistributorComponent(_node->getComponentRegister(), "distrtestutil"));
+};
+
+void
+TopLevelDistributorTestUtil::setup_distributor(int redundancy,
+ int node_count,
+ const std::string& cluster_state,
+ uint32_t early_return,
+ bool require_primary_to_be_written)
+{
+ setup_distributor(redundancy, node_count, lib::ClusterStateBundle(lib::ClusterState(cluster_state)),
+ early_return, require_primary_to_be_written);
+}
+
+void
+TopLevelDistributorTestUtil::setup_distributor(int redundancy,
+ int node_count,
+ const lib::ClusterStateBundle& state,
+ uint32_t early_return,
+ bool require_primary_to_be_written)
+{
+ lib::Distribution::DistributionConfigBuilder config(
+ lib::Distribution::getDefaultDistributionConfig(redundancy, node_count).get());
+ config.redundancy = redundancy;
+ config.initialRedundancy = early_return;
+ config.ensurePrimaryPersisted = require_primary_to_be_written;
+ auto distribution = std::make_shared<lib::Distribution>(config);
+ _node->getComponentRegister().setDistribution(distribution);
+ // This is for all intents and purposes a hack to avoid having the
+ // distributor treat setting the distribution explicitly as a signal that
+ // it should send RequestBucketInfo to all configured nodes.
+ // If we called storage_distribution_changed followed by enableDistribution
+ // explicitly (which is what happens in "real life"), that is what would
+ // take place.
+ // The inverse case of this can be explicitly accomplished by calling
+ // triggerDistributionChange().
+ // This isn't pretty, folks, but it avoids breaking the world for now,
+ // as many tests have implicit assumptions about this being the behavior.
+ _distributor->propagateDefaultDistribution(distribution);
+ // Explicitly init the stripe pool since onOpen isn't called during testing
+ _distributor->start_stripe_pool();
+ enable_distributor_cluster_state(state);
+}
+
+size_t
+TopLevelDistributorTestUtil::stripe_index_of_bucket(const document::BucketId& id) const noexcept
+{
+ return stripe_of_bucket_key(id.toKey(), _distributor->_n_stripe_bits);
+}
+
+size_t
+TopLevelDistributorTestUtil::stripe_index_of_bucket(const document::Bucket& bucket) const noexcept
+{
+ return stripe_of_bucket_key(bucket.getBucketId().toKey(), _distributor->_n_stripe_bits);
+}
+
+void
+TopLevelDistributorTestUtil::receive_set_system_state_command(const vespalib::string& state_str)
+{
+ auto state_cmd = std::make_shared<api::SetSystemStateCommand>(lib::ClusterState(state_str));
+ handle_top_level_message(state_cmd); // TODO move semantics
+}
+
+bool
+TopLevelDistributorTestUtil::handle_top_level_message(const std::shared_ptr<api::StorageMessage>& msg)
+{
+ return _distributor->onDown(msg);
+}
+
+void
+TopLevelDistributorTestUtil::close()
+{
+ _component.reset(0);
+ if (_distributor.get()) {
+ _stripe_pool->stop_and_join(); // Must be tagged as stopped prior to onClose
+ _distributor->onClose();
+ }
+ _sender.clear();
+ _node.reset(0);
+ _config = getStandardConfig(false);
+}
+
+void
+TopLevelDistributorTestUtil::add_nodes_to_stripe_bucket_db(const document::Bucket& bucket,
+ const std::string& nodeStr)
+{
+ BucketDatabase::Entry entry = get_bucket(bucket);
+
+ if (!entry.valid()) {
+ entry = BucketDatabase::Entry(bucket.getBucketId());
+ }
+
+ entry->clear();
+
+ vespalib::StringTokenizer tokenizer(nodeStr, ",");
+ for (uint32_t i = 0; i < tokenizer.size(); ++i) {
+ vespalib::StringTokenizer tok2(tokenizer[i], "=");
+ vespalib::StringTokenizer tok3(tok2[1], "/");
+
+ api::BucketInfo info(atoi(tok3[0].data()),
+ atoi(tok3.size() > 1 ? tok3[1].data() : tok3[0].data()),
+ atoi(tok3.size() > 2 ? tok3[2].data() : tok3[0].data()));
+
+ size_t flagsIdx = 3;
+
+ // Meta info override? For simplicity, require both meta count and size
+ if (tok3.size() > 4 && (!tok3[3].empty() && isdigit(tok3[3][0]))) {
+ info.setMetaCount(atoi(tok3[3].data()));
+ info.setUsedFileSize(atoi(tok3[4].data()));
+ flagsIdx = 5;
+ }
+
+ if ((tok3.size() > flagsIdx + 1) && tok3[flagsIdx + 1] == "a") {
+ info.setActive();
+ } else {
+ info.setActive(false);
+ }
+ if ((tok3.size() > flagsIdx + 2) && tok3[flagsIdx + 2] == "r") {
+ info.setReady();
+ } else {
+ info.setReady(false);
+ }
+
+ uint16_t idx = atoi(tok2[0].data());
+ BucketCopy node(0, idx, info);
+
+ // Allow user to manually override trusted and active.
+ if (tok3.size() > flagsIdx && tok3[flagsIdx] == "t") {
+ node.setTrusted();
+ }
+
+ entry->addNodeManual(node);
+ }
+
+ stripe_bucket_database(stripe_index_of_bucket(bucket), bucket.getBucketSpace()).update(entry);
+}
+
+std::string
+TopLevelDistributorTestUtil::get_ideal_str(document::BucketId id, const lib::ClusterState& state)
+{
+ if (!distributor_bucket_space(id).owns_bucket_in_state(state, id)) {
+ return id.toString();
+ }
+ std::vector<uint16_t> nodes;
+ _component->getDistribution()->getIdealNodes(lib::NodeType::STORAGE, state, id, nodes);
+ std::sort(nodes.begin(), nodes.end());
+ std::ostringstream ost;
+ ost << id << ": " << dumpVector(nodes);
+ return ost.str();
+}
+
+void
+TopLevelDistributorTestUtil::add_ideal_nodes(const lib::ClusterState& state, const document::BucketId& id)
+{
+ BucketDatabase::Entry entry = get_bucket(id);
+
+ if (!entry.valid()) {
+ entry = BucketDatabase::Entry(id);
+ }
+
+ std::vector<uint16_t> res;
+ assert(_component.get());
+ _component->getDistribution()->getIdealNodes(lib::NodeType::STORAGE, state, id, res);
+
+ for (uint32_t i = 0; i < res.size(); ++i) {
+ if (state.getNodeState(lib::Node(lib::NodeType::STORAGE, res[i])).getState() !=
+ lib::State::MAINTENANCE)
+ {
+ entry->addNode(BucketCopy(0, res[i], api::BucketInfo(1,1,1)),
+ toVector<uint16_t>(0));
+ }
+ }
+
+ stripe_bucket_database(stripe_index_of_bucket(id)).update(entry);
+}
+
+void
+TopLevelDistributorTestUtil::add_ideal_nodes(const document::BucketId& id)
+{
+ // TODO STRIPE good way of getting current active cluster state on top-level distributor
+ // We assume that all stripes have the same cluster state internally, so just use the first.
+ assert(_distributor->_stripes[0]);
+ const auto& bundle = _distributor->_stripes[0]->getClusterStateBundle();
+ add_ideal_nodes(*bundle.getBaselineClusterState(), id);
+}
+
+std::string
+TopLevelDistributorTestUtil::get_nodes(document::BucketId id)
+{
+ BucketDatabase::Entry entry = get_bucket(id);
+
+ if (!entry.valid()) {
+ return id.toString();
+ } else {
+ std::vector<uint16_t> nodes = entry->getNodes();
+ std::sort(nodes.begin(), nodes.end());
+
+ std::ostringstream ost;
+ ost << id << ": " << dumpVector(nodes);
+ return ost.str();
+ }
+}
+
+void
+TopLevelDistributorTestUtil::add_nodes_to_stripe_bucket_db(const document::BucketId& id,
+ const std::string& nodeStr)
+{
+ add_nodes_to_stripe_bucket_db(document::Bucket(makeBucketSpace(), id), nodeStr);
+}
+
+BucketDatabase::Entry
+TopLevelDistributorTestUtil::get_bucket(const document::Bucket& bucket) const
+{
+ return stripe_bucket_database(stripe_index_of_bucket(bucket), bucket.getBucketSpace()).get(bucket.getBucketId());
+}
+
+BucketDatabase::Entry
+TopLevelDistributorTestUtil::get_bucket(const document::BucketId& bId) const
+{
+ return stripe_bucket_database(stripe_index_of_bucket(bId)).get(bId);
+}
+
+BucketSpaceStateMap&
+TopLevelDistributorTestUtil::bucket_space_states() noexcept
+{
+ return _distributor->_component.bucket_space_states();
+}
+
+const BucketSpaceStateMap&
+TopLevelDistributorTestUtil::bucket_space_states() const noexcept
+{
+ return _distributor->_component.bucket_space_states();
+}
+
+std::unique_ptr<StripeAccessGuard>
+TopLevelDistributorTestUtil::acquire_stripe_guard()
+{
+ // Note: this won't actually interact with any threads, as the pool is running in single-threaded test mode.
+ return _distributor->_stripe_accessor->rendezvous_and_hold_all();
+}
+
+TopLevelBucketDBUpdater&
+TopLevelDistributorTestUtil::bucket_db_updater() {
+ return *_distributor->_bucket_db_updater;
+}
+
+const IdealStateMetricSet&
+TopLevelDistributorTestUtil::total_ideal_state_metrics() const
+{
+ assert(_distributor->_ideal_state_total_metrics);
+ return *_distributor->_ideal_state_total_metrics;
+}
+
+const DistributorMetricSet&
+TopLevelDistributorTestUtil::total_distributor_metrics() const
+{
+ assert(_distributor->_total_metrics);
+ return *_distributor->_total_metrics;
+}
+
+DistributorBucketSpace&
+TopLevelDistributorTestUtil::distributor_bucket_space(const document::BucketId& id)
+{
+ return stripe_of_bucket(id).getBucketSpaceRepo().get(makeBucketSpace());
+}
+
+const DistributorBucketSpace&
+TopLevelDistributorTestUtil::distributor_bucket_space(const document::BucketId& id) const
+{
+ return stripe_of_bucket(id).getBucketSpaceRepo().get(makeBucketSpace());
+}
+
+DistributorStripe&
+TopLevelDistributorTestUtil::stripe_of_bucket(const document::BucketId& id) noexcept
+{
+ return *_distributor->_stripes[stripe_index_of_bucket(id)];
+}
+
+const DistributorStripe&
+TopLevelDistributorTestUtil::stripe_of_bucket(const document::BucketId& id) const noexcept
+{
+ return *_distributor->_stripes[stripe_index_of_bucket(id)];
+}
+
+DistributorStripe&
+TopLevelDistributorTestUtil::stripe_of_bucket(const document::Bucket& bucket) noexcept
+{
+ return *_distributor->_stripes[stripe_index_of_bucket(bucket.getBucketId())];
+}
+
+const DistributorStripe&
+TopLevelDistributorTestUtil::stripe_of_bucket(const document::Bucket& bucket) const noexcept
+{
+ return *_distributor->_stripes[stripe_index_of_bucket(bucket.getBucketId())];
+}
+
+bool
+TopLevelDistributorTestUtil::tick(bool only_tick_top_level) {
+ framework::ThreadWaitInfo res(
+ framework::ThreadWaitInfo::NO_MORE_CRITICAL_WORK_KNOWN);
+ {
+ framework::TickingLockGuard lock(_distributor->_threadPool.freezeCriticalTicks());
+ res.merge(_distributor->doCriticalTick(0));
+ }
+ res.merge(_distributor->doNonCriticalTick(0));
+ bool did_work = !res.waitWanted();
+ if (!only_tick_top_level) {
+ for (auto& s : *_stripe_pool) {
+ did_work |= s->stripe().tick();
+ }
+ }
+ return did_work;
+}
+
+const DistributorConfig&
+TopLevelDistributorTestUtil::current_distributor_config() const
+{
+ return _component->getDistributorConfig();
+}
+
+void
+TopLevelDistributorTestUtil::reconfigure(const DistributorConfig& cfg)
+{
+ _node->getComponentRegister().setDistributorConfig(cfg);
+ tick(); // Config is propagated upon next top-level tick
+}
+
+framework::MetricUpdateHook&
+TopLevelDistributorTestUtil::distributor_metric_update_hook() {
+ return _distributor->_metricUpdateHook;
+}
+
+BucketDatabase&
+TopLevelDistributorTestUtil::stripe_bucket_database(uint16_t stripe_idx) {
+ assert(stripe_idx < _distributor->_stripes.size());
+ return _distributor->_stripes[stripe_idx]->getBucketSpaceRepo().get(makeBucketSpace()).getBucketDatabase();
+}
+
+BucketDatabase&
+TopLevelDistributorTestUtil::stripe_bucket_database(uint16_t stripe_idx, document::BucketSpace space) {
+ assert(stripe_idx < _distributor->_stripes.size());
+ return _distributor->_stripes[stripe_idx]->getBucketSpaceRepo().get(space).getBucketDatabase();
+}
+
+const BucketDatabase&
+TopLevelDistributorTestUtil::stripe_bucket_database(uint16_t stripe_idx) const {
+ assert(stripe_idx < _distributor->_stripes.size());
+ return _distributor->_stripes[stripe_idx]->getBucketSpaceRepo().get(makeBucketSpace()).getBucketDatabase();
+}
+
+const BucketDatabase&
+TopLevelDistributorTestUtil::stripe_bucket_database(uint16_t stripe_idx, document::BucketSpace space) const {
+ assert(stripe_idx < _distributor->_stripes.size());
+ return _distributor->_stripes[stripe_idx]->getBucketSpaceRepo().get(space).getBucketDatabase();
+}
+
+// Hide how the sausages are made when directly accessing internal stripes
+std::vector<DistributorStripe*>
+TopLevelDistributorTestUtil::distributor_stripes() const {
+ std::vector<DistributorStripe*> stripes;
+ stripes.reserve(_distributor->_stripes.size());
+ for (auto& s : _distributor->_stripes) {
+ stripes.emplace_back(s.get());
+ }
+ return stripes;
+}
+
+bool
+TopLevelDistributorTestUtil::all_distributor_stripes_are_in_recovery_mode() const {
+ for (auto* s : distributor_stripes()) {
+ if (!s->isInRecoveryMode()) {
+ return false;
+ }
+ }
+ return true;
+}
+
+void
+TopLevelDistributorTestUtil::enable_distributor_cluster_state(vespalib::stringref state,
+ bool has_bucket_ownership_transfer)
+{
+ bucket_db_updater().simulate_cluster_state_bundle_activation(
+ lib::ClusterStateBundle(lib::ClusterState(state)),
+ has_bucket_ownership_transfer);
+}
+
+void
+TopLevelDistributorTestUtil::enable_distributor_cluster_state(const lib::ClusterStateBundle& state)
+{
+ bucket_db_updater().simulate_cluster_state_bundle_activation(state);
+}
+
+std::vector<document::BucketSpace>
+TopLevelDistributorTestUtil::bucket_spaces()
+{
+ return {document::FixedBucketSpaces::default_space(), document::FixedBucketSpaces::global_space()};
+}
+
+void
+TopLevelDistributorTestUtil::trigger_distribution_change(std::shared_ptr<lib::Distribution> distr)
+{
+ _node->getComponentRegister().setDistribution(std::move(distr));
+ _distributor->storageDistributionChanged();
+ _distributor->enableNextDistribution();
+}
+
+const lib::ClusterStateBundle&
+TopLevelDistributorTestUtil::current_cluster_state_bundle() const
+{
+ // We assume that all stripes have the same cluster state internally, so just use the first.
+ assert(_distributor->_stripes[0]);
+ const auto& bundle = _distributor->_stripes[0]->getClusterStateBundle();
+ // ... but sanity-check just to make sure...
+ for (size_t i = 1; i < _num_distributor_stripes; ++i) {
+ assert(_distributor->_stripes[i]->getClusterStateBundle() == bundle);
+ }
+ return bundle;
+}
+
+void
+TopLevelDistributorTestUtil::tick_distributor_and_stripes_n_times(uint32_t n)
+{
+ for (uint32_t i = 0; i < n; ++i) {
+ tick(false);
+ }
+}
+
+void
+TopLevelDistributorTestUtil::tick_top_level_distributor_n_times(uint32_t n)
+{
+ for (uint32_t i = 0; i < n; ++i) {
+ tick(true);
+ }
+}
+
+void
+TopLevelDistributorTestUtil::complete_recovery_mode_on_all_stripes()
+{
+ for (auto* s : distributor_stripes()) {
+ s->scanAllBuckets();
+ }
+}
+
+}
diff --git a/storage/src/tests/distributor/top_level_distributor_test_util.h b/storage/src/tests/distributor/top_level_distributor_test_util.h
new file mode 100644
index 00000000000..cd5db7c8f80
--- /dev/null
+++ b/storage/src/tests/distributor/top_level_distributor_test_util.h
@@ -0,0 +1,176 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#pragma once
+
+#include "distributor_message_sender_stub.h"
+#include <tests/common/dummystoragelink.h>
+#include <tests/common/testhelper.h>
+#include <tests/common/teststorageapp.h>
+#include <vespa/storage/common/hostreporter/hostinfo.h>
+#include <vespa/storage/frameworkimpl/component/distributorcomponentregisterimpl.h>
+#include <vespa/storage/storageutil/utils.h>
+#include <vespa/storageapi/message/state.h>
+#include <vespa/storageframework/defaultimplementation/clock/fakeclock.h>
+
+namespace storage {
+
+namespace framework { struct TickingThreadPool; }
+
+namespace distributor {
+
+class BucketSpaceStateMap;
+class DistributorBucketSpace;
+class DistributorBucketSpaceRepo;
+class DistributorMetricSet;
+class DistributorNodeContext;
+class DistributorStripe;
+class DistributorStripeComponent;
+class DistributorStripeOperationContext;
+class DistributorStripePool;
+class IdealStateMetricSet;
+class Operation;
+class StripeAccessGuard;
+class TopLevelBucketDBUpdater;
+class TopLevelDistributor;
+
+class TopLevelDistributorTestUtil : private DoneInitializeHandler
+{
+public:
+ TopLevelDistributorTestUtil();
+ ~TopLevelDistributorTestUtil();
+
+ void create_links();
+
+ void close();
+
+ size_t stripe_index_of_bucket(const document::BucketId& id) const noexcept;
+ size_t stripe_index_of_bucket(const document::Bucket& bucket) const noexcept;
+
+ DistributorStripe& stripe_of_bucket(const document::BucketId& id) noexcept;
+ const DistributorStripe& stripe_of_bucket(const document::BucketId& id) const noexcept;
+ DistributorStripe& stripe_of_bucket(const document::Bucket& bucket) noexcept;
+ const DistributorStripe& stripe_of_bucket(const document::Bucket& bucket) const noexcept;
+
+ /**
+ * Parses the given string to a set of node => bucket info data,
+ * and inserts them as nodes in the given bucket.
+ * Format:
+ * "node1=checksum/docs/size,node2=checksum/docs/size"
+ */
+ void add_nodes_to_stripe_bucket_db(const document::Bucket& bucket,
+ const std::string& nodeStr);
+ // As the above, but always inserts into default bucket space
+ void add_nodes_to_stripe_bucket_db(const document::BucketId& id, const std::string& nodeStr);
+
+ BucketSpaceStateMap& bucket_space_states() noexcept;
+ const BucketSpaceStateMap& bucket_space_states() const noexcept;
+
+ std::unique_ptr<StripeAccessGuard> acquire_stripe_guard();
+
+ TopLevelBucketDBUpdater& bucket_db_updater();
+ const IdealStateMetricSet& total_ideal_state_metrics() const;
+ const DistributorMetricSet& total_distributor_metrics() const;
+
+ DistributorBucketSpace& distributor_bucket_space(const document::BucketId& id);
+ const DistributorBucketSpace& distributor_bucket_space(const document::BucketId& id) const;
+
+ std::vector<DistributorStripe*> distributor_stripes() const;
+
+ bool tick(bool only_tick_top_level = false);
+
+ const DistributorConfig& current_distributor_config() const;
+ void reconfigure(const DistributorConfig&);
+
+ framework::defaultimplementation::FakeClock& fake_clock() noexcept {
+ return _node->getClock();
+ }
+
+ framework::MetricUpdateHook& distributor_metric_update_hook();
+
+ BucketDatabase& stripe_bucket_database(uint16_t stripe_idx); // Implicit default space only
+ BucketDatabase& stripe_bucket_database(uint16_t stripe_idx, document::BucketSpace space);
+ const BucketDatabase& stripe_bucket_database(uint16_t stripe_idx) const; // Implicit default space only
+ const BucketDatabase& stripe_bucket_database(uint16_t stripe_idx, document::BucketSpace space) const;
+ [[nodiscard]] bool all_distributor_stripes_are_in_recovery_mode() const;
+
+ void tick_distributor_and_stripes_n_times(uint32_t n);
+ void tick_top_level_distributor_n_times(uint32_t n);
+
+ void complete_recovery_mode_on_all_stripes();
+
+ void setup_distributor(int redundancy,
+ int node_count,
+ const std::string& systemState,
+ uint32_t early_return = false,
+ bool require_primary_to_be_written = true);
+
+ void setup_distributor(int redundancy,
+ int node_count,
+ const lib::ClusterStateBundle& state,
+ uint32_t early_return = false,
+ bool require_primary_to_be_written = true);
+
+ void notifyDoneInitializing() override {}
+
+ BucketDatabase::Entry get_bucket(const document::Bucket& bucket) const;
+ // Gets bucket entry from default space only
+ BucketDatabase::Entry get_bucket(const document::BucketId& bId) const;
+
+ std::string get_ideal_str(document::BucketId id, const lib::ClusterState& state);
+
+ void add_ideal_nodes(const lib::ClusterState& state, const document::BucketId& id);
+ void add_ideal_nodes(const document::BucketId& id);
+
+ /**
+ * Returns a string with the nodes currently stored in the bucket
+ * database for the given bucket.
+ */
+ std::string get_nodes(document::BucketId id);
+
+ DistributorMessageSenderStub& sender() noexcept { return _sender; }
+ const DistributorMessageSenderStub& sender() const noexcept { return _sender; }
+
+ // Invokes full cluster state transition pipeline rather than directly applying
+ // the state and just pretending everything has been completed.
+ void receive_set_system_state_command(const vespalib::string& state_str);
+ bool handle_top_level_message(const std::shared_ptr<api::StorageMessage>& msg);
+
+ void trigger_distribution_change(std::shared_ptr<lib::Distribution> distr);
+
+ const lib::ClusterStateBundle& current_cluster_state_bundle() const;
+
+ static std::vector<document::BucketSpace> bucket_spaces();
+
+protected:
+ vdstestlib::DirConfig _config;
+ std::unique_ptr<TestDistributorApp> _node;
+ std::unique_ptr<framework::TickingThreadPool> _thread_pool;
+ std::unique_ptr<DistributorStripePool> _stripe_pool;
+ std::unique_ptr<TopLevelDistributor> _distributor;
+ std::unique_ptr<storage::DistributorComponent> _component;
+ DistributorMessageSenderStub _sender;
+ DistributorMessageSenderStub _sender_down;
+ HostInfo _host_info;
+
+ struct MessageSenderImpl : public ChainedMessageSender {
+ DistributorMessageSenderStub& _sender;
+ DistributorMessageSenderStub& _senderDown;
+ MessageSenderImpl(DistributorMessageSenderStub& up, DistributorMessageSenderStub& down)
+ : _sender(up), _senderDown(down) {}
+
+ void sendUp(const std::shared_ptr<api::StorageMessage>& msg) override {
+ _sender.send(msg);
+ }
+ void sendDown(const std::shared_ptr<api::StorageMessage>& msg) override {
+ _senderDown.send(msg);
+ }
+ };
+ MessageSenderImpl _message_sender;
+ uint32_t _num_distributor_stripes;
+
+ void enable_distributor_cluster_state(vespalib::stringref state, bool has_bucket_ownership_transfer = false);
+ void enable_distributor_cluster_state(const lib::ClusterStateBundle& state);
+};
+
+}
+
+}
diff --git a/storage/src/tests/distributor/twophaseupdateoperationtest.cpp b/storage/src/tests/distributor/twophaseupdateoperationtest.cpp
index ea170441a13..9b229198043 100644
--- a/storage/src/tests/distributor/twophaseupdateoperationtest.cpp
+++ b/storage/src/tests/distributor/twophaseupdateoperationtest.cpp
@@ -1,17 +1,17 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <tests/distributor/distributor_stripe_test_util.h>
#include <vespa/config/helper/configgetter.h>
-#include <vespa/document/repo/documenttyperepo.h>
#include <vespa/document/base/testdocrepo.h>
+#include <vespa/document/fieldset/fieldsets.h>
+#include <vespa/document/repo/documenttyperepo.h>
+#include <vespa/document/test/make_document_bucket.h>
#include <vespa/document/update/arithmeticvalueupdate.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
+#include <vespa/storage/distributor/distributor_stripe.h>
#include <vespa/storage/distributor/externaloperationhandler.h>
-#include <vespa/storageapi/message/persistence.h>
#include <vespa/storage/distributor/operations/external/twophaseupdateoperation.h>
-#include <tests/distributor/distributortestutil.h>
-#include <vespa/document/test/make_document_bucket.h>
-#include <vespa/storage/distributor/distributor.h>
-#include <vespa/storage/distributor/distributor_stripe.h>
-#include <vespa/document/fieldset/fieldsets.h>
+#include <vespa/storageapi/message/persistence.h>
#include <vespa/vespalib/gtest/gtest.h>
#include <gmock/gmock.h>
@@ -27,7 +27,7 @@ using namespace storage::api;
using namespace storage::lib;
using namespace ::testing;
-struct TwoPhaseUpdateOperationTest : Test, DistributorTestUtil {
+struct TwoPhaseUpdateOperationTest : Test, DistributorStripeTestUtil {
document::TestDocRepo _testRepo;
std::shared_ptr<const DocumentTypeRepo> _repo;
const DocumentType* _doc_type;
@@ -145,17 +145,19 @@ struct TwoPhaseUpdateOperationTest : Test, DistributorTestUtil {
Timestamp expected_response_timestamp);
std::shared_ptr<TwoPhaseUpdateOperation> set_up_2_inconsistent_replicas_and_start_update(bool enable_3phase = true) {
- setupDistributor(2, 2, "storage:2 distributor:1");
- getConfig().set_enable_metadata_only_fetch_phase_for_inconsistent_updates(enable_3phase);
+ setup_stripe(2, 2, "storage:2 distributor:1");
+ auto cfg = make_config();
+ cfg->set_enable_metadata_only_fetch_phase_for_inconsistent_updates(enable_3phase);
+ configure_stripe(cfg);
auto cb = sendUpdate("0=1/2/3,1=2/3/4"); // Inconsistent replicas.
cb->start(_sender, framework::MilliSecTime(0));
return cb;
}
void set_up_distributor_with_feed_blocked_state() {
- setup_distributor(2, 2,
- lib::ClusterStateBundle(lib::ClusterState("distributor:1 storage:2"),
- {}, {true, "full disk"}, false));
+ setup_stripe(2, 2,
+ lib::ClusterStateBundle(lib::ClusterState("distributor:1 storage:2"),
+ {}, {true, "full disk"}, false));
}
};
@@ -334,11 +336,11 @@ TwoPhaseUpdateOperationTest::sendUpdate(const std::string& bucketState,
return std::make_shared<TwoPhaseUpdateOperation>(
node_context(), operation_context(), doc_selection_parser(),
- getDistributorBucketSpace(), msg, getDistributor().getMetrics());
+ getDistributorBucketSpace(), msg, metrics());
}
TEST_F(TwoPhaseUpdateOperationTest, simple) {
- setupDistributor(1, 1, "storage:1 distributor:1");
+ setup_stripe(1, 1, "storage:1 distributor:1");
auto cb = sendUpdate("0=1/2/3");
cb->start(_sender, framework::MilliSecTime(0));
@@ -352,7 +354,7 @@ TEST_F(TwoPhaseUpdateOperationTest, simple) {
}
TEST_F(TwoPhaseUpdateOperationTest, non_existing) {
- setupDistributor(1, 1, "storage:1 distributor:1");
+ setup_stripe(1, 1, "storage:1 distributor:1");
auto cb = sendUpdate("");
cb->start(_sender, framework::MilliSecTime(0));
@@ -362,7 +364,7 @@ TEST_F(TwoPhaseUpdateOperationTest, non_existing) {
}
TEST_F(TwoPhaseUpdateOperationTest, update_failed) {
- setupDistributor(1, 1, "storage:1 distributor:1");
+ setup_stripe(1, 1, "storage:1 distributor:1");
auto cb = sendUpdate("0=1/2/3");
cb->start(_sender, framework::MilliSecTime(0));
@@ -377,7 +379,7 @@ TEST_F(TwoPhaseUpdateOperationTest, update_failed) {
}
TEST_F(TwoPhaseUpdateOperationTest, fast_path_inconsistent_timestamps) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
auto cb = sendUpdate("0=1/2/3,1=1/2/3");
cb->start(_sender, framework::MilliSecTime(0));
@@ -404,7 +406,7 @@ TEST_F(TwoPhaseUpdateOperationTest, fast_path_inconsistent_timestamps) {
}
TEST_F(TwoPhaseUpdateOperationTest, fast_path_inconsistent_timestamps_not_found) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
auto cb = sendUpdate("0=1/2/3,1=1/2/3");
cb->start(_sender, framework::MilliSecTime(0));
@@ -425,7 +427,7 @@ TEST_F(TwoPhaseUpdateOperationTest, fast_path_inconsistent_timestamps_not_found)
}
TEST_F(TwoPhaseUpdateOperationTest, fast_path_inconsistent_timestamps_update_error) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
auto cb = sendUpdate("0=1/2/3,1=1/2/3");
cb->start(_sender, framework::MilliSecTime(0));
@@ -442,7 +444,7 @@ TEST_F(TwoPhaseUpdateOperationTest, fast_path_inconsistent_timestamps_update_err
}
TEST_F(TwoPhaseUpdateOperationTest, fast_path_inconsistent_timestamps_get_error) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
auto cb = sendUpdate("0=1/2/3,1=1/2/3");
cb->start(_sender, framework::MilliSecTime(0));
@@ -464,7 +466,7 @@ TEST_F(TwoPhaseUpdateOperationTest, fast_path_inconsistent_timestamps_get_error)
}
TEST_F(TwoPhaseUpdateOperationTest, fast_path_inconsistent_timestamps_put_error) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
auto cb = sendUpdate("0=1/2/3,1=1/2/3");
cb->start(_sender, framework::MilliSecTime(0));
@@ -492,7 +494,7 @@ TEST_F(TwoPhaseUpdateOperationTest, fast_path_inconsistent_timestamps_put_error)
}
TEST_F(TwoPhaseUpdateOperationTest, fast_path_inconsistent_timestamps_put_not_started) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
auto cb = sendUpdate("0=1/2/3,1=1/2/3");
cb->start(_sender, framework::MilliSecTime(0));
@@ -505,7 +507,7 @@ TEST_F(TwoPhaseUpdateOperationTest, fast_path_inconsistent_timestamps_put_not_st
_sender.getLastCommand(true));
checkMessageSettingsPropagatedTo(_sender.commands().back());
- enableDistributorClusterState("storage:0 distributor:1");
+ enable_cluster_state("storage:0 distributor:1");
ASSERT_TRUE(_sender.replies().empty());
replyToGet(*cb, _sender, 2, 110);
@@ -517,7 +519,7 @@ TEST_F(TwoPhaseUpdateOperationTest, fast_path_inconsistent_timestamps_put_not_st
}
TEST_F(TwoPhaseUpdateOperationTest, fast_path_inconsistent_timestamps_inconsistent_split) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
auto cb = sendUpdate("0=1/2/3,1=1/2/3", UpdateOptions().makeInconsistentSplit(true));
cb->start(_sender, framework::MilliSecTime(0));
@@ -558,7 +560,7 @@ TwoPhaseUpdateOperationTest::checkMessageSettingsPropagatedTo(
}
TEST_F(TwoPhaseUpdateOperationTest, fast_path_propagates_message_settings_to_update) {
- setupDistributor(1, 1, "storage:1 distributor:1");
+ setup_stripe(1, 1, "storage:1 distributor:1");
auto cb = sendUpdate("0=1/2/3");
cb->start(_sender, framework::MilliSecTime(0));
@@ -569,7 +571,7 @@ TEST_F(TwoPhaseUpdateOperationTest, fast_path_propagates_message_settings_to_upd
}
TEST_F(TwoPhaseUpdateOperationTest, n_of_m) {
- setupDistributor(2, 2, "storage:2 distributor:1", 1);
+ setup_stripe(2, 2, "storage:2 distributor:1", 1);
auto cb = sendUpdate("0=1/2/3,1=1/2/3");
cb->start(_sender, framework::MilliSecTime(0));
@@ -596,7 +598,7 @@ TwoPhaseUpdateOperationTest::getUpdatedValueFromLastPut(
}
TEST_F(TwoPhaseUpdateOperationTest, safe_path_updates_newest_received_document) {
- setupDistributor(3, 3, "storage:3 distributor:1");
+ setup_stripe(3, 3, "storage:3 distributor:1");
// 0,1 in sync. 2 out of sync.
auto cb = sendUpdate("0=1/2/3,1=1/2/3,2=2/3/4");
cb->start(_sender, framework::MilliSecTime(0));
@@ -628,7 +630,7 @@ TEST_F(TwoPhaseUpdateOperationTest, safe_path_updates_newest_received_document)
}
TEST_F(TwoPhaseUpdateOperationTest, create_if_non_existent_creates_document_if_all_empty_gets) {
- setupDistributor(3, 3, "storage:3 distributor:1");
+ setup_stripe(3, 3, "storage:3 distributor:1");
auto cb = sendUpdate("0=1/2/3,1=1/2/3,2=2/3/4", UpdateOptions().createIfNonExistent(true));
cb->start(_sender, framework::MilliSecTime(0));
@@ -657,7 +659,7 @@ TEST_F(TwoPhaseUpdateOperationTest, create_if_non_existent_creates_document_if_a
}
TEST_F(TwoPhaseUpdateOperationTest, update_fails_if_safe_path_has_failed_put) {
- setupDistributor(3, 3, "storage:3 distributor:1");
+ setup_stripe(3, 3, "storage:3 distributor:1");
auto cb = sendUpdate("0=1/2/3,1=1/2/3,2=2/3/4", UpdateOptions().createIfNonExistent(true));
cb->start(_sender, framework::MilliSecTime(0));
@@ -681,7 +683,7 @@ TEST_F(TwoPhaseUpdateOperationTest, update_fails_if_safe_path_has_failed_put) {
}
TEST_F(TwoPhaseUpdateOperationTest, update_fails_if_safe_path_gets_fail) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
auto cb = sendUpdate("0=1/2/3,1=2/3/4", UpdateOptions().createIfNonExistent(true));
cb->start(_sender, framework::MilliSecTime(0));
@@ -697,7 +699,7 @@ TEST_F(TwoPhaseUpdateOperationTest, update_fails_if_safe_path_gets_fail) {
}
TEST_F(TwoPhaseUpdateOperationTest, update_fails_if_apply_throws_exception) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
// Create update for wrong doctype which will fail the update.
auto cb = sendUpdate("0=1/2/3,1=2/3/4", UpdateOptions().withError());
cb->start(_sender, framework::MilliSecTime(0));
@@ -717,7 +719,7 @@ TEST_F(TwoPhaseUpdateOperationTest, update_fails_if_apply_throws_exception) {
}
TEST_F(TwoPhaseUpdateOperationTest, non_existing_with_auto_create) {
- setupDistributor(1, 1, "storage:1 distributor:1");
+ setup_stripe(1, 1, "storage:1 distributor:1");
auto cb = sendUpdate("", UpdateOptions().createIfNonExistent(true));
cb->start(_sender, framework::MilliSecTime(0));
@@ -742,7 +744,7 @@ TEST_F(TwoPhaseUpdateOperationTest, non_existing_with_auto_create) {
}
TEST_F(TwoPhaseUpdateOperationTest, safe_path_fails_update_when_mismatching_timestamp_constraint) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
auto cb = sendUpdate("0=1/2/3,1=2/3/4", UpdateOptions().timestampToUpdate(1234));
cb->start(_sender, framework::MilliSecTime(0));
@@ -760,7 +762,7 @@ TEST_F(TwoPhaseUpdateOperationTest, safe_path_fails_update_when_mismatching_time
}
TEST_F(TwoPhaseUpdateOperationTest, safe_path_update_propagates_message_settings_to_gets_and_puts) {
- setupDistributor(3, 3, "storage:3 distributor:1");
+ setup_stripe(3, 3, "storage:3 distributor:1");
auto cb = sendUpdate("0=1/2/3,1=1/2/3,2=2/3/4");
cb->start(_sender, framework::MilliSecTime(0));
@@ -779,7 +781,7 @@ TEST_F(TwoPhaseUpdateOperationTest, safe_path_update_propagates_message_settings
}
TEST_F(TwoPhaseUpdateOperationTest, safe_path_propagates_mbus_traces_from_replies) {
- setupDistributor(3, 3, "storage:3 distributor:1");
+ setup_stripe(3, 3, "storage:3 distributor:1");
auto cb = sendUpdate("0=1/2/3,1=1/2/3,2=2/3/4");
cb->start(_sender, framework::MilliSecTime(0));
@@ -805,7 +807,7 @@ void TwoPhaseUpdateOperationTest::do_test_ownership_changed_between_gets_and_sec
Timestamp highest_get_timestamp,
Timestamp expected_response_timestamp)
{
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
// Update towards inconsistent bucket invokes safe path.
auto cb = sendUpdate("0=1/2/3,1=2/3/4");
cb->start(_sender, framework::MilliSecTime(0));
@@ -817,7 +819,7 @@ void TwoPhaseUpdateOperationTest::do_test_ownership_changed_between_gets_and_sec
// this new state, the distributor no longer owns the bucket in question
// and the operation should thus be failed. We must not try to send Puts
// to a bucket we no longer own.
- enableDistributorClusterState("storage:2 distributor:1 .0.s:d");
+ enable_cluster_state("storage:2 distributor:1 .0.s:d");
getBucketDatabase().clear();
replyToGet(*cb, _sender, 0, lowest_get_timestamp);
replyToGet(*cb, _sender, 1, highest_get_timestamp);
@@ -848,7 +850,7 @@ TEST_F(TwoPhaseUpdateOperationTest, update_fails_if_ownership_changes_between_ge
}
TEST_F(TwoPhaseUpdateOperationTest, safe_path_condition_mismatch_fails_with_tas_error) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
auto cb = sendUpdate("0=1/2/3,1=2/3/4", UpdateOptions().condition("testdoctype1.headerval==120"));
cb->start(_sender, framework::MilliSecTime(0));
@@ -864,7 +866,7 @@ TEST_F(TwoPhaseUpdateOperationTest, safe_path_condition_mismatch_fails_with_tas_
}
TEST_F(TwoPhaseUpdateOperationTest, safe_path_condition_match_sends_puts_with_updated_doc) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
auto cb = sendUpdate("0=1/2/3,1=2/3/4", UpdateOptions().condition("testdoctype1.headerval==110"));
cb->start(_sender, framework::MilliSecTime(0));
@@ -874,7 +876,7 @@ TEST_F(TwoPhaseUpdateOperationTest, safe_path_condition_match_sends_puts_with_up
}
TEST_F(TwoPhaseUpdateOperationTest, safe_path_condition_parse_failure_fails_with_illegal_params_error) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
auto cb = sendUpdate("0=1/2/3,1=2/3/4", UpdateOptions().condition("testdoctype1.san==fran...cisco"));
cb->start(_sender, framework::MilliSecTime(0));
@@ -894,7 +896,7 @@ TEST_F(TwoPhaseUpdateOperationTest, safe_path_condition_parse_failure_fails_with
}
TEST_F(TwoPhaseUpdateOperationTest, safe_path_condition_unknown_doc_type_fails_with_illegal_params_error) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
auto cb = sendUpdate("0=1/2/3,1=2/3/4", UpdateOptions().condition("langbein.headerval=1234"));
cb->start(_sender, framework::MilliSecTime(0));
@@ -913,7 +915,7 @@ TEST_F(TwoPhaseUpdateOperationTest, safe_path_condition_unknown_doc_type_fails_w
}
TEST_F(TwoPhaseUpdateOperationTest, safe_path_condition_with_missing_doc_and_no_auto_create_fails_with_tas_error) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
auto cb = sendUpdate("0=1/2/3,1=2/3/4", UpdateOptions().condition("testdoctype1.headerval==120"));
cb->start(_sender, framework::MilliSecTime(0));
@@ -929,7 +931,7 @@ TEST_F(TwoPhaseUpdateOperationTest, safe_path_condition_with_missing_doc_and_no_
}
TEST_F(TwoPhaseUpdateOperationTest, safe_path_condition_with_missing_doc_and_auto_create_sends_puts) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
auto cb = sendUpdate("0=1/2/3,1=2/3/4", UpdateOptions()
.condition("testdoctype1.headerval==120")
.createIfNonExistent(true));
@@ -953,7 +955,7 @@ TwoPhaseUpdateOperationTest::assertAbortedUpdateReplyWithContextPresent(
}
TEST_F(TwoPhaseUpdateOperationTest, fast_path_close_edge_sends_correct_reply) {
- setupDistributor(1, 1, "storage:1 distributor:1");
+ setup_stripe(1, 1, "storage:1 distributor:1");
// Only 1 replica; consistent with itself by definition.
auto cb = sendUpdate("0=1/2/3");
cb->start(_sender, framework::MilliSecTime(0));
@@ -971,7 +973,7 @@ TEST_F(TwoPhaseUpdateOperationTest, fast_path_close_edge_sends_correct_reply) {
}
TEST_F(TwoPhaseUpdateOperationTest, safe_path_close_edge_sends_correct_reply) {
- setupDistributor(2, 2, "storage:2 distributor:1");
+ setup_stripe(2, 2, "storage:2 distributor:1");
auto cb = sendUpdate("0=1/2/3,1=2/3/4"); // Inconsistent replicas.
cb->start(_sender, framework::MilliSecTime(0));
@@ -988,8 +990,10 @@ TEST_F(TwoPhaseUpdateOperationTest, safe_path_close_edge_sends_correct_reply) {
}
TEST_F(TwoPhaseUpdateOperationTest, safe_path_consistent_get_reply_timestamps_restarts_with_fast_path_if_enabled) {
- setupDistributor(2, 2, "storage:2 distributor:1");
- getConfig().set_update_fast_path_restart_enabled(true);
+ setup_stripe(2, 2, "storage:2 distributor:1");
+ auto cfg = make_config();
+ cfg->set_update_fast_path_restart_enabled(true);
+ configure_stripe(cfg);
auto cb = sendUpdate("0=1/2/3,1=2/3/4"); // Inconsistent replicas.
cb->start(_sender, framework::MilliSecTime(0));
@@ -1009,13 +1013,15 @@ TEST_F(TwoPhaseUpdateOperationTest, safe_path_consistent_get_reply_timestamps_re
"ReturnCode(NONE)",
_sender.getLastReply(true));
- auto& metrics = getDistributor().getMetrics().updates;
- EXPECT_EQ(1, metrics.fast_path_restarts.getValue());
+ auto& m = metrics().updates;
+ EXPECT_EQ(1, m.fast_path_restarts.getValue());
}
TEST_F(TwoPhaseUpdateOperationTest, safe_path_consistent_get_reply_timestamps_does_not_restart_with_fast_path_if_disabled) {
- setupDistributor(2, 2, "storage:2 distributor:1");
- getConfig().set_update_fast_path_restart_enabled(false);
+ setup_stripe(2, 2, "storage:2 distributor:1");
+ auto cfg = make_config();
+ cfg->set_update_fast_path_restart_enabled(false);
+ configure_stripe(cfg);
auto cb = sendUpdate("0=1/2/3,1=2/3/4"); // Inconsistent replicas.
cb->start(_sender, framework::MilliSecTime(0));
@@ -1028,13 +1034,15 @@ TEST_F(TwoPhaseUpdateOperationTest, safe_path_consistent_get_reply_timestamps_do
// Should _not_ be restarted with fast path, as it has been config disabled
ASSERT_EQ("Put => 1,Put => 0", _sender.getCommands(true, false, 2));
- auto& metrics = getDistributor().getMetrics().updates;
- EXPECT_EQ(0, metrics.fast_path_restarts.getValue());
+ auto& m = metrics().updates;
+ EXPECT_EQ(0, m.fast_path_restarts.getValue());
}
TEST_F(TwoPhaseUpdateOperationTest, fast_path_not_restarted_if_replica_set_altered_between_get_send_and_receive) {
- setupDistributor(3, 3, "storage:3 distributor:1");
- getConfig().set_update_fast_path_restart_enabled(true);
+ setup_stripe(3, 3, "storage:3 distributor:1");
+ auto cfg = make_config();
+ cfg->set_update_fast_path_restart_enabled(true);
+ configure_stripe(cfg);
auto cb = sendUpdate("0=1/2/3,1=2/3/4"); // Inconsistent replicas.
cb->start(_sender, framework::MilliSecTime(0));
@@ -1057,8 +1065,10 @@ TEST_F(TwoPhaseUpdateOperationTest, fast_path_not_restarted_if_replica_set_alter
}
TEST_F(TwoPhaseUpdateOperationTest, fast_path_not_restarted_if_document_not_found_on_a_replica_node) {
- setupDistributor(2, 2, "storage:2 distributor:1");
- getConfig().set_update_fast_path_restart_enabled(true);
+ setup_stripe(2, 2, "storage:2 distributor:1");
+ auto cfg = make_config();
+ cfg->set_update_fast_path_restart_enabled(true);
+ configure_stripe(cfg);
auto cb = sendUpdate("0=1/2/3,1=2/3/4"); // Inconsistent replicas.
cb->start(_sender, framework::MilliSecTime(0));
@@ -1073,8 +1083,10 @@ TEST_F(TwoPhaseUpdateOperationTest, fast_path_not_restarted_if_document_not_foun
// Buckets must be created from scratch by Put operations, updates alone cannot do this.
TEST_F(TwoPhaseUpdateOperationTest, fast_path_not_restarted_if_no_initial_replicas_exist) {
- setupDistributor(2, 2, "storage:2 distributor:1");
- getConfig().set_update_fast_path_restart_enabled(true);
+ setup_stripe(2, 2, "storage:2 distributor:1");
+ auto cfg = make_config();
+ cfg->set_update_fast_path_restart_enabled(true);
+ configure_stripe(cfg);
// No replicas, technically consistent but cannot use fast path.
auto cb = sendUpdate("", UpdateOptions().createIfNonExistent(true));
@@ -1087,8 +1099,10 @@ TEST_F(TwoPhaseUpdateOperationTest, fast_path_not_restarted_if_no_initial_replic
// by the client, not those indirectly initiated by the distributor in order to
// fulfill update write-repairs.
TEST_F(TwoPhaseUpdateOperationTest, update_gets_are_sent_with_strong_consistency_even_if_weak_consistency_configured) {
- setupDistributor(2, 2, "storage:2 distributor:1");
- getConfig().set_use_weak_internal_read_consistency_for_client_gets(true);
+ setup_stripe(2, 2, "storage:2 distributor:1");
+ auto cfg = make_config();
+ cfg->set_use_weak_internal_read_consistency_for_client_gets(true);
+ configure_stripe(cfg);
auto cb = sendUpdate("0=1/2/3,1=2/3/4"); // Inconsistent replicas.
cb->start(_sender, framework::MilliSecTime(0));
@@ -1134,8 +1148,8 @@ TEST_F(ThreePhaseUpdateTest, full_document_get_sent_to_replica_with_highest_time
reply_to_metadata_get(*cb, _sender, 0, 1000U);
reply_to_metadata_get(*cb, _sender, 1, 2000U);
- auto& metrics = getDistributor().getMetrics().update_metadata_gets;
- EXPECT_EQ(1, metrics.ok.getValue()); // Technically tracks an entire operation covering multiple Gets.
+ auto& m = metrics().update_metadata_gets;
+ EXPECT_EQ(1, m.ok.getValue()); // Technically tracks an entire operation covering multiple Gets.
// Node 1 has newest document version at ts=2000
ASSERT_EQ("Get => 1", _sender.getCommands(true, false, 2));
@@ -1155,8 +1169,8 @@ TEST_F(ThreePhaseUpdateTest, puts_are_sent_after_receiving_full_document_get) {
replyToGet(*cb, _sender, 2, 2000U);
ASSERT_EQ("Put => 1,Put => 0", _sender.getCommands(true, false, 3));
- auto& metrics = getDistributor().getMetrics().update_gets;
- EXPECT_EQ(1, metrics.ok.getValue());
+ auto& m = metrics().update_gets;
+ EXPECT_EQ(1, m.ok.getValue());
}
TEST_F(ThreePhaseUpdateTest, consistent_meta_get_timestamps_can_restart_in_fast_path) {
@@ -1176,8 +1190,8 @@ TEST_F(ThreePhaseUpdateTest, consistent_meta_get_timestamps_can_restart_in_fast_
"ReturnCode(NONE)",
_sender.getLastReply(true));
- auto& metrics = getDistributor().getMetrics().updates;
- EXPECT_EQ(1, metrics.fast_path_restarts.getValue());
+ auto& m = metrics().updates;
+ EXPECT_EQ(1, m.fast_path_restarts.getValue());
}
TEST_F(ThreePhaseUpdateTest, fast_path_not_restarted_if_document_not_found_subset_of_replicas) {
@@ -1196,8 +1210,8 @@ TEST_F(ThreePhaseUpdateTest, no_document_found_on_any_replicas_is_considered_con
reply_to_metadata_get(*cb, _sender, 1, no_document_timestamp);
ASSERT_EQ("Update => 0,Update => 1", _sender.getCommands(true, false, 2));
- auto& metrics = getDistributor().getMetrics().updates;
- EXPECT_EQ(1, metrics.fast_path_restarts.getValue());
+ auto& m = metrics().updates;
+ EXPECT_EQ(1, m.fast_path_restarts.getValue());
}
TEST_F(ThreePhaseUpdateTest, metadata_get_phase_fails_if_any_replicas_return_failure) {
@@ -1215,8 +1229,10 @@ TEST_F(ThreePhaseUpdateTest, metadata_get_phase_fails_if_any_replicas_return_fai
}
TEST_F(ThreePhaseUpdateTest, update_failed_with_transient_error_code_if_replica_set_changed_after_metadata_gets) {
- setupDistributor(3, 3, "storage:3 distributor:1");
- getConfig().set_enable_metadata_only_fetch_phase_for_inconsistent_updates(true);
+ setup_stripe(3, 3, "storage:3 distributor:1");
+ auto cfg = make_config();
+ cfg->set_enable_metadata_only_fetch_phase_for_inconsistent_updates(true);
+ configure_stripe(cfg);
auto cb = sendUpdate("0=1/2/3,1=2/3/4"); // 2 replicas, room for 1 more.
cb->start(_sender, framework::MilliSecTime(0));
// Add new replica to deterministic test bucket after gets have been sent
@@ -1236,9 +1252,11 @@ TEST_F(ThreePhaseUpdateTest, update_failed_with_transient_error_code_if_replica_
}
TEST_F(ThreePhaseUpdateTest, single_full_get_cannot_restart_in_fast_path) {
- setupDistributor(2, 2, "storage:2 distributor:1");
- getConfig().set_enable_metadata_only_fetch_phase_for_inconsistent_updates(true);
- getConfig().set_update_fast_path_restart_enabled(true);
+ setup_stripe(2, 2, "storage:2 distributor:1");
+ auto cfg = make_config();
+ cfg->set_enable_metadata_only_fetch_phase_for_inconsistent_updates(true);
+ cfg->set_update_fast_path_restart_enabled(true);
+ configure_stripe(cfg);
auto cb = sendUpdate("0=1/2/3,1=2/3/4"); // Inconsistent replicas.
cb->start(_sender, framework::MilliSecTime(0));
@@ -1280,7 +1298,7 @@ TEST_F(ThreePhaseUpdateTest, update_aborted_if_ownership_changed_between_gets_an
ASSERT_EQ("Get => 0,Get => 1", _sender.getCommands(true));
// See do_test_ownership_changed_between_gets_and_second_phase() for more in-depth
// comments on why this particular cluster state is used.
- enableDistributorClusterState("storage:2 distributor:1 .0.s:d");
+ enable_cluster_state("storage:2 distributor:1 .0.s:d");
getBucketDatabase().clear();
reply_to_metadata_get(*cb, _sender, 0, api::Timestamp(70));
reply_to_metadata_get(*cb, _sender, 1, api::Timestamp(71));
@@ -1296,8 +1314,10 @@ TEST_F(ThreePhaseUpdateTest, update_aborted_if_ownership_changed_between_gets_an
}
TEST_F(ThreePhaseUpdateTest, safe_mode_is_implicitly_triggered_if_no_replicas_exist) {
- setupDistributor(1, 1, "storage:1 distributor:1");
- getConfig().set_enable_metadata_only_fetch_phase_for_inconsistent_updates(true);
+ setup_stripe(1, 1, "storage:1 distributor:1");
+ auto cfg = make_config();
+ cfg->set_enable_metadata_only_fetch_phase_for_inconsistent_updates(true);
+ configure_stripe(cfg);
auto cb = sendUpdate("", UpdateOptions().createIfNonExistent(true));
cb->start(_sender, framework::MilliSecTime(0));
@@ -1352,9 +1372,11 @@ TEST_F(ThreePhaseUpdateTest, single_full_get_reply_received_after_close_is_no_op
}
TEST_F(ThreePhaseUpdateTest, single_full_get_tombstone_is_no_op_without_auto_create) {
- setupDistributor(2, 2, "storage:2 distributor:1");
- getConfig().set_enable_metadata_only_fetch_phase_for_inconsistent_updates(true);
- getConfig().set_update_fast_path_restart_enabled(true);
+ setup_stripe(2, 2, "storage:2 distributor:1");
+ auto cfg = make_config();
+ cfg->set_enable_metadata_only_fetch_phase_for_inconsistent_updates(true);
+ cfg->set_update_fast_path_restart_enabled(true);
+ configure_stripe(cfg);
auto cb = sendUpdate("0=1/2/3,1=2/3/4");
cb->start(_sender, framework::MilliSecTime(0));
@@ -1374,9 +1396,11 @@ TEST_F(ThreePhaseUpdateTest, single_full_get_tombstone_is_no_op_without_auto_cre
}
TEST_F(ThreePhaseUpdateTest, single_full_get_tombstone_sends_puts_with_auto_create) {
- setupDistributor(2, 2, "storage:2 distributor:1");
- getConfig().set_enable_metadata_only_fetch_phase_for_inconsistent_updates(true);
- getConfig().set_update_fast_path_restart_enabled(true);
+ setup_stripe(2, 2, "storage:2 distributor:1");
+ auto cfg = make_config();
+ cfg->set_enable_metadata_only_fetch_phase_for_inconsistent_updates(true);
+ cfg->set_update_fast_path_restart_enabled(true);
+ configure_stripe(cfg);
auto cb = sendUpdate("0=1/2/3,1=2/3/4", UpdateOptions().createIfNonExistent(true));
cb->start(_sender, framework::MilliSecTime(0));
diff --git a/storage/src/tests/distributor/updateoperationtest.cpp b/storage/src/tests/distributor/updateoperationtest.cpp
index e31a5f0a768..db974e2202c 100644
--- a/storage/src/tests/distributor/updateoperationtest.cpp
+++ b/storage/src/tests/distributor/updateoperationtest.cpp
@@ -1,17 +1,17 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <tests/common/dummystoragelink.h>
-#include <vespa/storageapi/message/persistence.h>
-#include <vespa/storageapi/message/state.h>
-#include <vespa/storageapi/message/bucket.h>
-#include <tests/distributor/distributortestutil.h>
+#include <tests/distributor/distributor_stripe_test_util.h>
+#include <vespa/config/helper/configgetter.hpp>
#include <vespa/document/repo/documenttyperepo.h>
-#include <vespa/document/update/documentupdate.h>
#include <vespa/document/test/make_document_bucket.h>
-#include <vespa/storage/distributor/operations/external/updateoperation.h>
-#include <vespa/storage/distributor/distributor.h>
+#include <vespa/document/update/documentupdate.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
#include <vespa/storage/distributor/distributor_stripe.h>
-#include <vespa/config/helper/configgetter.hpp>
+#include <vespa/storage/distributor/operations/external/updateoperation.h>
+#include <vespa/storageapi/message/bucket.h>
+#include <vespa/storageapi/message/persistence.h>
+#include <vespa/storageapi/message/state.h>
#include <vespa/vespalib/gtest/gtest.h>
using namespace document;
@@ -26,7 +26,7 @@ using document::test::makeDocumentBucket;
namespace storage::distributor {
-struct UpdateOperationTest : Test, DistributorTestUtil {
+struct UpdateOperationTest : Test, DistributorStripeTestUtil {
std::shared_ptr<const DocumentTypeRepo> _repo;
const DocumentType* _html_type;
@@ -68,7 +68,7 @@ UpdateOperationTest::sendUpdate(const std::string& bucketState, bool create_if_m
return std::make_shared<UpdateOperation>(
node_context(), operation_context(), getDistributorBucketSpace(), msg, std::vector<BucketDatabase::Entry>(),
- getDistributor().getMetrics().updates);
+ metrics().updates);
}
void
@@ -87,7 +87,7 @@ UpdateOperationTest::replyToMessage(UpdateOperation& callback, DistributorMessag
}
TEST_F(UpdateOperationTest, simple) {
- setupDistributor(1, 1, "storage:1 distributor:1");
+ setup_stripe(1, 1, "storage:1 distributor:1");
std::shared_ptr<UpdateOperation> cb(sendUpdate("0=1/2/3"));
DistributorMessageSenderStub sender;
@@ -101,12 +101,12 @@ TEST_F(UpdateOperationTest, simple) {
"timestamp 100, timestamp of updated doc: 90) ReturnCode(NONE)",
sender.getLastReply(true));
- auto& metrics = getDistributor().getMetrics().updates;
- EXPECT_EQ(0, metrics.diverging_timestamp_updates.getValue());
+ auto& m = metrics().updates;
+ EXPECT_EQ(0, m.diverging_timestamp_updates.getValue());
}
TEST_F(UpdateOperationTest, not_found) {
- setupDistributor(1, 1, "storage:1 distributor:1");
+ setup_stripe(1, 1, "storage:1 distributor:1");
std::shared_ptr<UpdateOperation> cb(sendUpdate("0=1/2/3"));
DistributorMessageSenderStub sender;
@@ -122,7 +122,7 @@ TEST_F(UpdateOperationTest, not_found) {
}
TEST_F(UpdateOperationTest, multi_node) {
- setupDistributor(2, 2, "distributor:1 storage:2");
+ setup_stripe(2, 2, "distributor:1 storage:2");
std::shared_ptr<UpdateOperation> cb(sendUpdate("0=1/2/3,1=1/2/3"));
DistributorMessageSenderStub sender;
cb->start(sender, framework::MilliSecTime(0));
@@ -141,12 +141,12 @@ TEST_F(UpdateOperationTest, multi_node) {
"node(idx=0,crc=0x2,docs=4/4,bytes=6/6,trusted=true,active=false,ready=false)",
dumpBucket(_bId));
- auto& metrics = getDistributor().getMetrics().updates;
- EXPECT_EQ(0, metrics.diverging_timestamp_updates.getValue());
+ auto& m = metrics().updates;
+ EXPECT_EQ(0, m.diverging_timestamp_updates.getValue());
}
TEST_F(UpdateOperationTest, multi_node_inconsistent_timestamp) {
- setupDistributor(2, 2, "distributor:1 storage:2");
+ setup_stripe(2, 2, "distributor:1 storage:2");
std::shared_ptr<UpdateOperation> cb(sendUpdate("0=1/2/3,1=1/2/3"));
DistributorMessageSenderStub sender;
cb->start(sender, framework::MilliSecTime(0));
@@ -161,12 +161,12 @@ TEST_F(UpdateOperationTest, multi_node_inconsistent_timestamp) {
"(best node 1)) ReturnCode(NONE)",
sender.getLastReply(true));
- auto& metrics = getDistributor().getMetrics().updates;
- EXPECT_EQ(1, metrics.diverging_timestamp_updates.getValue());
+ auto& m = metrics().updates;
+ EXPECT_EQ(1, m.diverging_timestamp_updates.getValue());
}
TEST_F(UpdateOperationTest, test_and_set_failures_increment_tas_metric) {
- setupDistributor(2, 2, "distributor:1 storage:1");
+ setup_stripe(2, 2, "distributor:1 storage:1");
std::shared_ptr<UpdateOperation> cb(sendUpdate("0=1/2/3"));
DistributorMessageSenderStub sender;
cb->start(sender, framework::MilliSecTime(0));
@@ -179,8 +179,8 @@ TEST_F(UpdateOperationTest, test_and_set_failures_increment_tas_metric) {
"ReturnCode(TEST_AND_SET_CONDITION_FAILED, bork bork)",
sender.getLastReply(true));
- auto& metrics = getDistributor().getMetrics().updates;
- EXPECT_EQ(1, metrics.failures.test_and_set_failed.getValue());
+ auto& m = metrics().updates;
+ EXPECT_EQ(1, m.failures.test_and_set_failed.getValue());
}
// Create-if-missing updates have a rather finicky behavior in the backend, wherein they'll
@@ -195,7 +195,7 @@ TEST_F(UpdateOperationTest, test_and_set_failures_increment_tas_metric) {
// of zero in this case, but this would cause complications during rolling upgrades that would
// need explicit workaround logic anyway.
TEST_F(UpdateOperationTest, create_if_missing_update_sentinel_timestamp_is_treated_as_zero_timestamp) {
- setupDistributor(2, 2, "distributor:1 storage:2");
+ setup_stripe(2, 2, "distributor:1 storage:2");
std::shared_ptr<UpdateOperation> cb(sendUpdate("0=1/2/3,1=1/2/3", true));
DistributorMessageSenderStub sender;
cb->start(sender, framework::MilliSecTime(0));
@@ -212,12 +212,12 @@ TEST_F(UpdateOperationTest, create_if_missing_update_sentinel_timestamp_is_treat
"timestamp 100, timestamp of updated doc: 0) ReturnCode(NONE)",
sender.getLastReply(true));
- auto& metrics = getDistributor().getMetrics().updates;
- EXPECT_EQ(0, metrics.diverging_timestamp_updates.getValue());
+ auto& m = metrics().updates;
+ EXPECT_EQ(0, m.diverging_timestamp_updates.getValue());
}
TEST_F(UpdateOperationTest, inconsistent_create_if_missing_updates_picks_largest_non_auto_created_replica) {
- setupDistributor(2, 3, "distributor:1 storage:3");
+ setup_stripe(2, 3, "distributor:1 storage:3");
std::shared_ptr<UpdateOperation> cb(sendUpdate("0=1/2/3,1=1/2/3,2=1/2/3", true));
DistributorMessageSenderStub sender;
cb->start(sender, framework::MilliSecTime(0));
@@ -236,10 +236,10 @@ TEST_F(UpdateOperationTest, inconsistent_create_if_missing_updates_picks_largest
EXPECT_NE(newest.first, BucketId());
EXPECT_EQ(newest.second, 1);
- auto& metrics = getDistributor().getMetrics().updates;
+ auto& m = metrics().updates;
// Implementation detail: since we get diverging results from nodes 2 and 1, these are
// counted as separate diverging updates.
- EXPECT_EQ(2, metrics.diverging_timestamp_updates.getValue());
+ EXPECT_EQ(2, m.diverging_timestamp_updates.getValue());
}
}
diff --git a/storage/src/tests/distributor/visitoroperationtest.cpp b/storage/src/tests/distributor/visitoroperationtest.cpp
index 011bf0e81fd..ea99186a434 100644
--- a/storage/src/tests/distributor/visitoroperationtest.cpp
+++ b/storage/src/tests/distributor/visitoroperationtest.cpp
@@ -1,18 +1,17 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/storageapi/message/bucket.h>
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <tests/distributor/distributor_stripe_test_util.h>
+#include <vespa/document/fieldset/fieldsets.h>
+#include <vespa/document/test/make_bucket_space.h>
+#include <vespa/storage/common/reindexing_constants.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
+#include <vespa/storage/distributor/distributor_stripe.h>
+#include <vespa/storage/distributor/distributormetricsset.h>
+#include <vespa/storage/distributor/operations/external/visitoroperation.h>
+#include <vespa/storage/distributor/operations/external/visitororder.h>
#include <vespa/storageapi/message/bucketsplitting.h>
#include <vespa/storageapi/message/datagram.h>
#include <vespa/storageapi/message/persistence.h>
#include <vespa/storageapi/message/state.h>
-#include <vespa/storage/common/reindexing_constants.h>
-#include <vespa/storage/distributor/operations/external/visitoroperation.h>
-#include <vespa/storage/distributor/operations/external/visitororder.h>
-#include <vespa/storage/distributor/distributormetricsset.h>
-#include <tests/distributor/distributortestutil.h>
-#include <vespa/storage/distributor/distributor.h>
-#include <vespa/storage/distributor/distributor_stripe.h>
-#include <vespa/document/fieldset/fieldsets.h>
-#include <vespa/document/test/make_bucket_space.h>
#include <vespa/vespalib/gtest/gtest.h>
using namespace document;
@@ -23,7 +22,7 @@ using document::test::makeBucketSpace;
namespace storage::distributor {
-struct VisitorOperationTest : Test, DistributorTestUtil {
+struct VisitorOperationTest : Test, DistributorStripeTestUtil {
VisitorOperationTest()
: defaultConfig(100, 100)
{}
@@ -96,7 +95,7 @@ struct VisitorOperationTest : Test, DistributorTestUtil {
}
VisitorMetricSet& defaultVisitorMetrics() {
- return getDistributor().getMetrics().visits;
+ return metrics().visits;
}
std::unique_ptr<VisitorOperation> createOpWithConfig(
@@ -109,7 +108,7 @@ struct VisitorOperationTest : Test, DistributorTestUtil {
getDistributorBucketSpace(),
msg,
config,
- getDistributor().getMetrics().visits);
+ metrics().visits);
}
std::unique_ptr<VisitorOperation> createOpWithDefaultConfig(api::CreateVisitorCommand::SP msg)
@@ -150,7 +149,7 @@ TEST_F(VisitorOperationTest, parameter_forwarding) {
void
VisitorOperationTest::doStandardVisitTest(const std::string& clusterState)
{
- enableDistributorClusterState(clusterState);
+ enable_cluster_state(clusterState);
// Create bucket in bucketdb
document::BucketId id(uint64_t(0x400000000000007b));
@@ -212,7 +211,7 @@ VisitorOperationTest::doStandardVisitTest(const std::string& clusterState)
}
TEST_F(VisitorOperationTest, shutdown) {
- enableDistributorClusterState("distributor:1 storage:1");
+ enable_cluster_state("distributor:1 storage:1");
// Create bucket in bucketdb
document::BucketId id(uint64_t(0x400000000000007b));
@@ -241,7 +240,7 @@ TEST_F(VisitorOperationTest, shutdown) {
}
TEST_F(VisitorOperationTest, no_bucket) {
- enableDistributorClusterState("distributor:1 storage:1");
+ enable_cluster_state("distributor:1 storage:1");
// Send create visitor
auto msg = std::make_shared<api::CreateVisitorCommand>(
@@ -254,7 +253,7 @@ TEST_F(VisitorOperationTest, no_bucket) {
}
TEST_F(VisitorOperationTest, only_super_bucket_and_progress_allowed) {
- enableDistributorClusterState("distributor:1 storage:1");
+ enable_cluster_state("distributor:1 storage:1");
// Send create visitor
api::CreateVisitorCommand::SP msg(new api::CreateVisitorCommand(
@@ -277,7 +276,7 @@ TEST_F(VisitorOperationTest, retired_storage_node) {
TEST_F(VisitorOperationTest, no_resend_after_timeout_passed) {
document::BucketId id(uint64_t(0x400000000000007b));
- enableDistributorClusterState("distributor:1 storage:2");
+ enable_cluster_state("distributor:1 storage:2");
addNodesToBucketDB(id, "0=1/1/1/t,1=1/1/1/t");
auto op = createOpWithDefaultConfig(
@@ -297,7 +296,7 @@ TEST_F(VisitorOperationTest, no_resend_after_timeout_passed) {
}
TEST_F(VisitorOperationTest, distributor_not_ready) {
- enableDistributorClusterState("distributor:0 storage:0");
+ enable_cluster_state("distributor:0 storage:0");
document::BucketId id(uint64_t(0x400000000000007b));
EXPECT_EQ("CreateVisitorReply(last=BucketId(0x0000000000000000)) "
"ReturnCode(NODE_NOT_READY, No distributors available when "
@@ -307,7 +306,7 @@ TEST_F(VisitorOperationTest, distributor_not_ready) {
TEST_F(VisitorOperationTest, non_existing_bucket) {
document::BucketId id(uint64_t(0x400000000000007b));
- enableDistributorClusterState("distributor:1 storage:1");
+ enable_cluster_state("distributor:1 storage:1");
auto res = runEmptyVisitor(
createVisitorCommand("nonExistingBucket", id, nullId));
EXPECT_EQ("CreateVisitorReply(last=BucketId(0x000000007fffffff)) "
@@ -317,7 +316,7 @@ TEST_F(VisitorOperationTest, non_existing_bucket) {
TEST_F(VisitorOperationTest, user_single_bucket) {
document::BucketId id(uint64_t(0x400000000000007b));
document::BucketId userid(uint64_t(0x800000000000007b));
- enableDistributorClusterState("distributor:1 storage:1");
+ enable_cluster_state("distributor:1 storage:1");
addNodesToBucketDB(id, "0=1/1/1/t");
@@ -371,7 +370,7 @@ VisitorOperationTest::runVisitor(document::BucketId id,
}
TEST_F(VisitorOperationTest, user_inconsistently_split_bucket) {
- enableDistributorClusterState("distributor:1 storage:1");
+ enable_cluster_state("distributor:1 storage:1");
// Not containing (19, 0x40001)
addNodesToBucketDB(document::BucketId(17, 0x0), "0=1/1/1/t");
@@ -414,7 +413,7 @@ TEST_F(VisitorOperationTest, user_inconsistently_split_bucket) {
}
TEST_F(VisitorOperationTest, bucket_removed_while_visitor_pending) {
- enableDistributorClusterState("distributor:1 storage:1");
+ enable_cluster_state("distributor:1 storage:1");
// Create bucket in bucketdb
document::BucketId id(uint64_t(0x400000000000007b));
@@ -439,7 +438,7 @@ TEST_F(VisitorOperationTest, bucket_removed_while_visitor_pending) {
}
TEST_F(VisitorOperationTest, empty_buckets_visited_when_visiting_removes) {
- enableDistributorClusterState("distributor:1 storage:1");
+ enable_cluster_state("distributor:1 storage:1");
document::BucketId id(uint64_t(0x400000000000007b));
addNodesToBucketDB(id, "0=0/0/0/1/2/t");
@@ -453,7 +452,7 @@ TEST_F(VisitorOperationTest, empty_buckets_visited_when_visiting_removes) {
}
TEST_F(VisitorOperationTest, resend_to_other_storage_node_on_failure) {
- enableDistributorClusterState("distributor:1 storage:2");
+ enable_cluster_state("distributor:1 storage:2");
document::BucketId id(uint64_t(0x400000000000007b));
addNodesToBucketDB(id, "0=1/1/1/t,1=1/1/1/t");
@@ -477,7 +476,7 @@ TEST_F(VisitorOperationTest, resend_to_other_storage_node_on_failure) {
// client reply and that this won't cause things to hang for indeterminate
// amounts of time.
TEST_F(VisitorOperationTest, timeout_only_after_reply_from_all_storage_nodes) {
- enableDistributorClusterState("distributor:1 storage:2");
+ enable_cluster_state("distributor:1 storage:2");
// Contained in (16, 0x1)
addNodesToBucketDB(document::BucketId(17, 0x00001), "0=1/1/1/t");
@@ -515,7 +514,7 @@ TEST_F(VisitorOperationTest, timeout_only_after_reply_from_all_storage_nodes) {
}
TEST_F(VisitorOperationTest, timeout_does_not_override_critical_error) {
- enableDistributorClusterState("distributor:1 storage:2");
+ enable_cluster_state("distributor:1 storage:2");
addNodesToBucketDB(document::BucketId(17, 0x00001), "0=1/1/1/t");
addNodesToBucketDB(document::BucketId(17, 0x10001), "1=1/1/1/t");
@@ -544,7 +543,7 @@ TEST_F(VisitorOperationTest, timeout_does_not_override_critical_error) {
}
TEST_F(VisitorOperationTest, wrong_distribution) {
- setupDistributor(1, 100, "distributor:100 storage:2");
+ setup_stripe(1, 100, "distributor:100 storage:2");
document::BucketId id(uint64_t(0x400000000000127b));
ASSERT_EQ("CreateVisitorReply(last=BucketId(0x0000000000000000)) "
@@ -555,12 +554,10 @@ TEST_F(VisitorOperationTest, wrong_distribution) {
TEST_F(VisitorOperationTest, wrong_distribution_in_pending_state) {
// Force bucket to belong to this distributor in currently enabled state.
- setupDistributor(1, 100, "distributor:1 storage:2");
+ setup_stripe(1, 100, "distributor:1 storage:2");
// Trigger pending cluster state. Note: increase in storage node count
// to force resending of bucket info requests.
- auto stateCmd = std::make_shared<api::SetSystemStateCommand>(
- lib::ClusterState("distributor:100 storage:3"));
- getBucketDBUpdater().onSetSystemState(stateCmd);
+ simulate_set_pending_cluster_state("distributor:100 storage:3");
document::BucketId id(uint64_t(0x400000000000127b));
ASSERT_EQ("CreateVisitorReply(last=BucketId(0x0000000000000000)) "
@@ -574,7 +571,7 @@ TEST_F(VisitorOperationTest, wrong_distribution_in_pending_state) {
// higher version number.
// See ticket 6353382 for details.
TEST_F(VisitorOperationTest, visitor_aborted_if_node_is_marked_as_down) {
- setupDistributor(1, 10, "distributor:10 .0.s:s storage:10");
+ setup_stripe(1, 10, "distributor:10 .0.s:s storage:10");
document::BucketId id(uint64_t(0x400000000000127b));
ASSERT_EQ("CreateVisitorReply(last=BucketId(0x0000000000000000)) "
@@ -583,7 +580,7 @@ TEST_F(VisitorOperationTest, visitor_aborted_if_node_is_marked_as_down) {
}
TEST_F(VisitorOperationTest, bucket_high_bit_count) {
- enableDistributorClusterState("distributor:1 storage:1 bits:16");
+ enable_cluster_state("distributor:1 storage:1 bits:16");
document::BucketId id(18, 0x0);
addNodesToBucketDB(id, "0=1/1/1/t");
@@ -609,7 +606,7 @@ TEST_F(VisitorOperationTest, bucket_high_bit_count) {
}
TEST_F(VisitorOperationTest, bucket_low_bit_count) {
- enableDistributorClusterState("distributor:1 storage:1 bits:16");
+ enable_cluster_state("distributor:1 storage:1 bits:16");
document::BucketId id(1, 0x0);
addNodesToBucketDB(id, "0=1/1/1/t");
@@ -636,7 +633,7 @@ TEST_F(VisitorOperationTest, bucket_low_bit_count) {
}
TEST_F(VisitorOperationTest, parallel_visitors_to_one_storage_node) {
- enableDistributorClusterState("distributor:1 storage:1");
+ enable_cluster_state("distributor:1 storage:1");
// Create buckets in bucketdb
for (int i=0; i<32; i++) {
@@ -709,7 +706,7 @@ TEST_F(VisitorOperationTest, parallel_visitors_to_one_storage_node) {
}
TEST_F(VisitorOperationTest, parallel_visitors_resend_only_failing) {
- enableDistributorClusterState("distributor:1 storage:2");
+ enable_cluster_state("distributor:1 storage:2");
// Create buckets in bucketdb
for (int i=0; i<32; i++) {
@@ -750,7 +747,7 @@ TEST_F(VisitorOperationTest, parallel_visitors_resend_only_failing) {
}
TEST_F(VisitorOperationTest, parallel_visitors_to_one_storage_node_one_super_bucket) {
- enableDistributorClusterState("distributor:1 storage:1");
+ enable_cluster_state("distributor:1 storage:1");
// Create buckets in bucketdb
for (int i=0; i<8; i++) {
@@ -783,7 +780,7 @@ TEST_F(VisitorOperationTest, parallel_visitors_to_one_storage_node_one_super_buc
}
TEST_F(VisitorOperationTest, visit_when_one_bucket_copy_is_invalid) {
- enableDistributorClusterState("distributor:1 storage:2");
+ enable_cluster_state("distributor:1 storage:2");
document::BucketId id(16, 0);
@@ -795,7 +792,7 @@ TEST_F(VisitorOperationTest, visit_when_one_bucket_copy_is_invalid) {
}
TEST_F(VisitorOperationTest, visiting_when_all_buckets_are_invalid) {
- enableDistributorClusterState("distributor:1 storage:2");
+ enable_cluster_state("distributor:1 storage:2");
document::BucketId id(16, 0);
@@ -807,7 +804,7 @@ TEST_F(VisitorOperationTest, visiting_when_all_buckets_are_invalid) {
}
TEST_F(VisitorOperationTest, inconsistency_handling) {
- enableDistributorClusterState("distributor:1 storage:2");
+ enable_cluster_state("distributor:1 storage:2");
document::BucketId id(16, 0);
@@ -835,7 +832,7 @@ TEST_F(VisitorOperationTest, inconsistency_handling) {
TEST_F(VisitorOperationTest, visit_ideal_node) {
ClusterState state("distributor:1 storage:3");
- enable_distributor_cluster_state(lib::ClusterStateBundle(state));
+ enable_cluster_state(lib::ClusterStateBundle(state));
// Create buckets in bucketdb
for (int i=0; i<32; i++ ) {
@@ -866,7 +863,7 @@ TEST_F(VisitorOperationTest, visit_ideal_node) {
}
TEST_F(VisitorOperationTest, no_resending_on_critical_failure) {
- enableDistributorClusterState("distributor:1 storage:3");
+ enable_cluster_state("distributor:1 storage:3");
// Create buckets in bucketdb
for (int i=0; i<32; i++ ) {
@@ -890,7 +887,7 @@ TEST_F(VisitorOperationTest, no_resending_on_critical_failure) {
}
TEST_F(VisitorOperationTest, failure_on_all_nodes) {
- enableDistributorClusterState("distributor:1 storage:3");
+ enable_cluster_state("distributor:1 storage:3");
// Create buckets in bucketdb
for (int i=0; i<32; i++ ) {
@@ -921,7 +918,7 @@ TEST_F(VisitorOperationTest, failure_on_all_nodes) {
}
TEST_F(VisitorOperationTest, visit_in_chunks) {
- enableDistributorClusterState("distributor:1 storage:1");
+ enable_cluster_state("distributor:1 storage:1");
for (int i = 0; i < 9; ++i) {
addNodesToBucketDB(document::BucketId(30, i << 16), "0=1/1/1/t");
@@ -966,7 +963,7 @@ TEST_F(VisitorOperationTest, visit_in_chunks) {
std::unique_ptr<VisitorOperation>
VisitorOperationTest::startOperationWith2StorageNodeVisitors(bool inconsistent)
{
- enableDistributorClusterState("distributor:1 storage:3");
+ enable_cluster_state("distributor:1 storage:3");
addNodesToBucketDB(document::BucketId(17, 1), "0=1/1/1/t");
addNodesToBucketDB(document::BucketId(17, 1ULL << 16 | 1), "1=1/1/1/t");
@@ -1026,7 +1023,7 @@ TEST_F(VisitorOperationTest, skip_failed_sub_buckets_when_visiting_inconsistent)
// having it hard-coded to 2000 ms as was the case earlier.
TEST_F(VisitorOperationTest, queue_timeout_is_factor_of_total_timeout) {
document::BucketId id(uint64_t(0x400000000000007b));
- enableDistributorClusterState("distributor:1 storage:2");
+ enable_cluster_state("distributor:1 storage:2");
addNodesToBucketDB(id, "0=1/1/1/t,1=1/1/1/t");
auto op = createOpWithDefaultConfig(
@@ -1044,7 +1041,7 @@ VisitorOperationTest::do_visitor_roundtrip_with_statistics(
const api::ReturnCode& result)
{
document::BucketId id(0x400000000000007bULL);
- enableDistributorClusterState("distributor:1 storage:1");
+ enable_cluster_state("distributor:1 storage:1");
addNodesToBucketDB(id, "0=1/1/1/t");
auto op = createOpWithDefaultConfig(
@@ -1073,7 +1070,7 @@ TEST_F(VisitorOperationTest, metrics_are_updated_with_visitor_statistics_upon_re
}
TEST_F(VisitorOperationTest, statistical_metrics_not_updated_on_wrong_distribution) {
- setupDistributor(1, 100, "distributor:100 storage:2");
+ setup_stripe(1, 100, "distributor:100 storage:2");
document::BucketId id(uint64_t(0x400000000000127b));
ASSERT_EQ("CreateVisitorReply(last=BucketId(0x0000000000000000)) "
@@ -1092,7 +1089,7 @@ TEST_F(VisitorOperationTest, statistical_metrics_not_updated_on_wrong_distributi
TEST_F(VisitorOperationTest, assigning_put_lock_access_token_sets_special_visitor_parameter) {
document::BucketId id(0x400000000000007bULL);
- enableDistributorClusterState("distributor:1 storage:1");
+ enable_cluster_state("distributor:1 storage:1");
addNodesToBucketDB(id, "0=1/1/1/t");
auto op = createOpWithDefaultConfig(createVisitorCommand("metricstats", id, nullId));
diff --git a/storage/src/tests/frameworkimpl/status/CMakeLists.txt b/storage/src/tests/frameworkimpl/status/CMakeLists.txt
index 0c0049656d1..eece5f29f29 100644
--- a/storage/src/tests/frameworkimpl/status/CMakeLists.txt
+++ b/storage/src/tests/frameworkimpl/status/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(storage_status_gtest_runner_app TEST
SOURCES
diff --git a/storage/src/tests/frameworkimpl/status/htmltabletest.cpp b/storage/src/tests/frameworkimpl/status/htmltabletest.cpp
index 132dee55d93..22babc5d100 100644
--- a/storage/src/tests/frameworkimpl/status/htmltabletest.cpp
+++ b/storage/src/tests/frameworkimpl/status/htmltabletest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/frameworkimpl/thread/htmltable.h>
#include <gtest/gtest.h>
diff --git a/storage/src/tests/frameworkimpl/status/statustest.cpp b/storage/src/tests/frameworkimpl/status/statustest.cpp
index 7c259f00899..2e136977026 100644
--- a/storage/src/tests/frameworkimpl/status/statustest.cpp
+++ b/storage/src/tests/frameworkimpl/status/statustest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storageframework/defaultimplementation/component/componentregisterimpl.h>
#include <vespa/storage/frameworkimpl/status/statuswebserver.h>
diff --git a/storage/src/tests/persistence/CMakeLists.txt b/storage/src/tests/persistence/CMakeLists.txt
index 971d7b8f410..8c0e7fdb11c 100644
--- a/storage/src/tests/persistence/CMakeLists.txt
+++ b/storage/src/tests/persistence/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(storage_persistence_gtest_runner_app TEST
SOURCES
diff --git a/storage/src/tests/persistence/apply_bucket_diff_entry_result_test.cpp b/storage/src/tests/persistence/apply_bucket_diff_entry_result_test.cpp
index 4bca987152e..a9f2acc0fdb 100644
--- a/storage/src/tests/persistence/apply_bucket_diff_entry_result_test.cpp
+++ b/storage/src/tests/persistence/apply_bucket_diff_entry_result_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/persistence/apply_bucket_diff_entry_result.h>
#include <vespa/document/base/documentid.h>
diff --git a/storage/src/tests/persistence/bucketownershipnotifiertest.cpp b/storage/src/tests/persistence/bucketownershipnotifiertest.cpp
index 57fc54ed299..b6488590cea 100644
--- a/storage/src/tests/persistence/bucketownershipnotifiertest.cpp
+++ b/storage/src/tests/persistence/bucketownershipnotifiertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <tests/common/message_sender_stub.h>
#include <tests/common/teststorageapp.h>
diff --git a/storage/src/tests/persistence/common/CMakeLists.txt b/storage/src/tests/persistence/common/CMakeLists.txt
index cca1fa68e3a..63638db6b6b 100644
--- a/storage/src/tests/persistence/common/CMakeLists.txt
+++ b/storage/src/tests/persistence/common/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage_testpersistence_common TEST
SOURCES
filestortestfixture.cpp
diff --git a/storage/src/tests/persistence/common/filestortestfixture.cpp b/storage/src/tests/persistence/common/filestortestfixture.cpp
index bb4237e20da..8ab1790d9bc 100644
--- a/storage/src/tests/persistence/common/filestortestfixture.cpp
+++ b/storage/src/tests/persistence/common/filestortestfixture.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/persistence/messages.h>
#include <vespa/storage/persistence/filestorage/filestormanager.h>
diff --git a/storage/src/tests/persistence/common/filestortestfixture.h b/storage/src/tests/persistence/common/filestortestfixture.h
index 8bb3cf8b9fe..1a92a2c1944 100644
--- a/storage/src/tests/persistence/common/filestortestfixture.h
+++ b/storage/src/tests/persistence/common/filestortestfixture.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <tests/common/dummystoragelink.h>
diff --git a/storage/src/tests/persistence/common/persistenceproviderwrapper.cpp b/storage/src/tests/persistence/common/persistenceproviderwrapper.cpp
index 21a94a3e957..a174d305c27 100644
--- a/storage/src/tests/persistence/common/persistenceproviderwrapper.cpp
+++ b/storage/src/tests/persistence/common/persistenceproviderwrapper.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "persistenceproviderwrapper.h"
#include <vespa/document/fieldvalue/document.h>
diff --git a/storage/src/tests/persistence/common/persistenceproviderwrapper.h b/storage/src/tests/persistence/common/persistenceproviderwrapper.h
index 085a60c0e86..d90fa7b2eaa 100644
--- a/storage/src/tests/persistence/common/persistenceproviderwrapper.h
+++ b/storage/src/tests/persistence/common/persistenceproviderwrapper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::PersistenceProviderWrapper
*
diff --git a/storage/src/tests/persistence/filestorage/CMakeLists.txt b/storage/src/tests/persistence/filestorage/CMakeLists.txt
index 33d20e97cb1..c9623e991e0 100644
--- a/storage/src/tests/persistence/filestorage/CMakeLists.txt
+++ b/storage/src/tests/persistence/filestorage/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(storage_filestorage_gtest_runner_app TEST
SOURCES
diff --git a/storage/src/tests/persistence/filestorage/deactivatebucketstest.cpp b/storage/src/tests/persistence/filestorage/deactivatebucketstest.cpp
index a48d797d626..597bb4b07ff 100644
--- a/storage/src/tests/persistence/filestorage/deactivatebucketstest.cpp
+++ b/storage/src/tests/persistence/filestorage/deactivatebucketstest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storageapi/message/bucket.h>
#include <vespa/storageapi/message/state.h>
diff --git a/storage/src/tests/persistence/filestorage/deletebuckettest.cpp b/storage/src/tests/persistence/filestorage/deletebuckettest.cpp
index 81c9525b78f..5de25ca2987 100644
--- a/storage/src/tests/persistence/filestorage/deletebuckettest.cpp
+++ b/storage/src/tests/persistence/filestorage/deletebuckettest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
#include <vespa/storageapi/message/bucket.h>
diff --git a/storage/src/tests/persistence/filestorage/filestormanagertest.cpp b/storage/src/tests/persistence/filestorage/filestormanagertest.cpp
index 891c0e5dace..cd496605a6c 100644
--- a/storage/src/tests/persistence/filestorage/filestormanagertest.cpp
+++ b/storage/src/tests/persistence/filestorage/filestormanagertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <tests/common/dummystoragelink.h>
#include <tests/common/testhelper.h>
diff --git a/storage/src/tests/persistence/filestorage/filestormodifiedbucketstest.cpp b/storage/src/tests/persistence/filestorage/filestormodifiedbucketstest.cpp
index e21dde006dc..c6ee69f2bf2 100644
--- a/storage/src/tests/persistence/filestorage/filestormodifiedbucketstest.cpp
+++ b/storage/src/tests/persistence/filestorage/filestormodifiedbucketstest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storageapi/message/bucket.h>
#include <vespa/storage/persistence/filestorage/modifiedbucketchecker.h>
diff --git a/storage/src/tests/persistence/filestorage/forwardingmessagesender.h b/storage/src/tests/persistence/filestorage/forwardingmessagesender.h
index 30f1bff1969..c4cdea5a566 100644
--- a/storage/src/tests/persistence/filestorage/forwardingmessagesender.h
+++ b/storage/src/tests/persistence/filestorage/forwardingmessagesender.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storage/common/messagesender.h>
diff --git a/storage/src/tests/persistence/filestorage/mergeblockingtest.cpp b/storage/src/tests/persistence/filestorage/mergeblockingtest.cpp
index 2710d766f5d..0b12092ae20 100644
--- a/storage/src/tests/persistence/filestorage/mergeblockingtest.cpp
+++ b/storage/src/tests/persistence/filestorage/mergeblockingtest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/test/make_document_bucket.h>
#include <vespa/storage/persistence/messages.h>
diff --git a/storage/src/tests/persistence/filestorage/modifiedbucketcheckertest.cpp b/storage/src/tests/persistence/filestorage/modifiedbucketcheckertest.cpp
index 732cc402641..9130b469794 100644
--- a/storage/src/tests/persistence/filestorage/modifiedbucketcheckertest.cpp
+++ b/storage/src/tests/persistence/filestorage/modifiedbucketcheckertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <tests/common/testhelper.h>
#include <tests/common/dummystoragelink.h>
diff --git a/storage/src/tests/persistence/filestorage/operationabortingtest.cpp b/storage/src/tests/persistence/filestorage/operationabortingtest.cpp
index e0ccc175c11..c51357cacd1 100644
--- a/storage/src/tests/persistence/filestorage/operationabortingtest.cpp
+++ b/storage/src/tests/persistence/filestorage/operationabortingtest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/persistence/messages.h>
#include <vespa/storageapi/message/bucket.h>
diff --git a/storage/src/tests/persistence/filestorage/sanitycheckeddeletetest.cpp b/storage/src/tests/persistence/filestorage/sanitycheckeddeletetest.cpp
index 8c9ea11f1c8..ef71f0ae5f0 100644
--- a/storage/src/tests/persistence/filestorage/sanitycheckeddeletetest.cpp
+++ b/storage/src/tests/persistence/filestorage/sanitycheckeddeletetest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storageapi/message/bucket.h>
#include <vespa/persistence/spi/test.h>
diff --git a/storage/src/tests/persistence/filestorage/service_layer_host_info_reporter_test.cpp b/storage/src/tests/persistence/filestorage/service_layer_host_info_reporter_test.cpp
index e5ba04f789b..b613216b1cf 100644
--- a/storage/src/tests/persistence/filestorage/service_layer_host_info_reporter_test.cpp
+++ b/storage/src/tests/persistence/filestorage/service_layer_host_info_reporter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/persistence/filestorage/service_layer_host_info_reporter.h>
#include <tests/common/hostreporter/util.h>
@@ -30,8 +30,7 @@ get_attribute_usage_element(const vespalib::Slime& root, const vespalib::string&
return AttributeResourceUsage(usage, name.make_string());
}
-const vespalib::string attr_es_name("doctype.subdb.esattr");
-const vespalib::string attr_mv_name("doctype.subdb.mvattr");
+const vespalib::string attr_name("doctype.subdb.attr.enum-store");
}
@@ -43,12 +42,12 @@ struct ServiceLayerHostInfoReporterTest : ::testing::Test {
ServiceLayerHostInfoReporterTest();
~ServiceLayerHostInfoReporterTest();
- void notify(double disk_usage, double memory_usage, const AttributeResourceUsage &attribute_enum_store_usage, const AttributeResourceUsage &attribute_multivalue_usage) {
+ void notify(double disk_usage, double memory_usage, const AttributeResourceUsage &attribute_address_space_usage) {
auto& listener = static_cast<spi::IResourceUsageListener&>(_reporter);
- listener.update_resource_usage(ResourceUsage(disk_usage, memory_usage, attribute_enum_store_usage, attribute_multivalue_usage));
+ listener.update_resource_usage(ResourceUsage(disk_usage, memory_usage, attribute_address_space_usage));
}
void notify(double disk_usage, double memory_usage) {
- notify(disk_usage, memory_usage, {0.0, ""}, {0.0, ""});
+ notify(disk_usage, memory_usage, {0.0, ""});
}
void set_noise_level(double level) {
_reporter.set_noise_level(level);
@@ -60,7 +59,8 @@ struct ServiceLayerHostInfoReporterTest : ::testing::Test {
ResourceUsage get_slime_usage() {
vespalib::Slime root;
util::reporterToSlime(_reporter, root);
- return ResourceUsage(get_usage_element(root, "disk"), get_usage_element(root, "memory"), get_attribute_usage_element(root, "attribute-enum-store"), get_attribute_usage_element(root, "attribute-multi-value"));
+ return ResourceUsage(get_usage_element(root, "disk"), get_usage_element(root, "memory"),
+ get_attribute_usage_element(root, "attribute-address-space"));
}
};
@@ -97,12 +97,9 @@ TEST_F(ServiceLayerHostInfoReporterTest, request_almost_immediate_node_state_as_
EXPECT_EQ(3, requested_almost_immediate_replies());
EXPECT_EQ(ResourceUsage(0.8, 0.7), get_old_usage());
EXPECT_EQ(ResourceUsage(0.7999, 0.6999), get_usage());
- notify(0.8, 0.7, {0.1, attr_es_name}, {});
- EXPECT_EQ(ResourceUsage(0.8, 0.7, {0.1, attr_es_name}, {}), get_old_usage());
- EXPECT_EQ(ResourceUsage(0.8, 0.7, {0.1, attr_es_name}, {}), get_usage());
- notify(0.8, 0.7, {0.1, attr_es_name}, {0.2, attr_mv_name});
- EXPECT_EQ(ResourceUsage(0.8, 0.7, {0.1, attr_es_name}, {0.2, attr_mv_name}), get_old_usage());
- EXPECT_EQ(ResourceUsage(0.8, 0.7, {0.1, attr_es_name}, {0.2, attr_mv_name}), get_usage());
+ notify(0.8, 0.7, {0.1, attr_name});
+ EXPECT_EQ(ResourceUsage(0.8, 0.7, {0.1, attr_name}), get_old_usage());
+ EXPECT_EQ(ResourceUsage(0.8, 0.7, {0.1, attr_name}), get_usage());
}
TEST_F(ServiceLayerHostInfoReporterTest, can_set_noise_level)
@@ -125,25 +122,14 @@ TEST_F(ServiceLayerHostInfoReporterTest, can_set_noise_level)
}
TEST_F(ServiceLayerHostInfoReporterTest,
- first_valid_attribute_enum_store_sample_triggers_immediate_node_state_when_below_noise_level)
+ first_valid_attribute_address_space_sample_triggers_immediate_node_state_when_below_noise_level)
{
set_noise_level(0.02);
constexpr double usage_below_noise_level = 0.019;
- notify(0.0, 0.0, {usage_below_noise_level, attr_es_name}, {});
+ notify(0.0, 0.0, {usage_below_noise_level, attr_name});
EXPECT_EQ(1, requested_almost_immediate_replies());
- EXPECT_EQ(ResourceUsage(0.0, 0.0, {usage_below_noise_level, attr_es_name}, {}), get_old_usage());
- EXPECT_EQ(ResourceUsage(0.0, 0.0, {usage_below_noise_level, attr_es_name}, {}), get_usage());
-}
-
-TEST_F(ServiceLayerHostInfoReporterTest,
- first_valid_attribute_multi_value_sample_triggers_immediate_node_state_when_below_noise_level)
-{
- set_noise_level(0.02);
- constexpr double usage_below_noise_level = 0.019;
- notify(0.0, 0.0, {}, {usage_below_noise_level, attr_mv_name});
- EXPECT_EQ(1, requested_almost_immediate_replies());
- EXPECT_EQ(ResourceUsage(0.0, 0.0, {}, {usage_below_noise_level, attr_mv_name}), get_old_usage());
- EXPECT_EQ(ResourceUsage(0.0, 0.0, {}, {usage_below_noise_level, attr_mv_name}), get_usage());
+ EXPECT_EQ(ResourceUsage(0.0, 0.0, {usage_below_noise_level, attr_name}), get_old_usage());
+ EXPECT_EQ(ResourceUsage(0.0, 0.0, {usage_below_noise_level, attr_name}), get_usage());
}
TEST_F(ServiceLayerHostInfoReporterTest, json_report_generated)
@@ -151,8 +137,8 @@ TEST_F(ServiceLayerHostInfoReporterTest, json_report_generated)
EXPECT_EQ(ResourceUsage(0.0, 0.0), get_slime_usage());
notify(0.5, 0.4);
EXPECT_EQ(ResourceUsage(0.5, 0.4), get_slime_usage());
- notify(0.5, 0.4, {0.3, attr_es_name}, {0.2, attr_mv_name});
- EXPECT_EQ(ResourceUsage(0.5, 0.4, {0.3, attr_es_name}, {0.2, attr_mv_name}), get_slime_usage());
+ notify(0.5, 0.4, {0.3, attr_name});
+ EXPECT_EQ(ResourceUsage(0.5, 0.4, {0.3, attr_name}), get_slime_usage());
}
}
diff --git a/storage/src/tests/persistence/filestorage/singlebucketjointest.cpp b/storage/src/tests/persistence/filestorage/singlebucketjointest.cpp
index cda052c787a..7d3b4450d37 100644
--- a/storage/src/tests/persistence/filestorage/singlebucketjointest.cpp
+++ b/storage/src/tests/persistence/filestorage/singlebucketjointest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
#include <vespa/storageapi/message/bucket.h>
diff --git a/storage/src/tests/persistence/has_mask_remapper_test.cpp b/storage/src/tests/persistence/has_mask_remapper_test.cpp
index de87797fb26..89914b75bca 100644
--- a/storage/src/tests/persistence/has_mask_remapper_test.cpp
+++ b/storage/src/tests/persistence/has_mask_remapper_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/persistence/filestorage/has_mask_remapper.h>
#include <gtest/gtest.h>
diff --git a/storage/src/tests/persistence/mergehandlertest.cpp b/storage/src/tests/persistence/mergehandlertest.cpp
index 45d431890f5..fa989410137 100644
--- a/storage/src/tests/persistence/mergehandlertest.cpp
+++ b/storage/src/tests/persistence/mergehandlertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/testdocman.h>
#include <vespa/storage/persistence/mergehandler.h>
diff --git a/storage/src/tests/persistence/persistencequeuetest.cpp b/storage/src/tests/persistence/persistencequeuetest.cpp
index 61719b569d6..2557fa537f5 100644
--- a/storage/src/tests/persistence/persistencequeuetest.cpp
+++ b/storage/src/tests/persistence/persistencequeuetest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/persistence/dummyimpl/dummypersistence.h>
#include <tests/persistence/common/filestortestfixture.h>
diff --git a/storage/src/tests/persistence/persistencetestutils.cpp b/storage/src/tests/persistence/persistencetestutils.cpp
index 9e779c5904b..4085288b45f 100644
--- a/storage/src/tests/persistence/persistencetestutils.cpp
+++ b/storage/src/tests/persistence/persistencetestutils.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "persistencetestutils.h"
#include <vespa/document/datatype/documenttype.h>
diff --git a/storage/src/tests/persistence/persistencetestutils.h b/storage/src/tests/persistence/persistencetestutils.h
index b7d52bcf241..d7bf5b2f73f 100644
--- a/storage/src/tests/persistence/persistencetestutils.h
+++ b/storage/src/tests/persistence/persistencetestutils.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <tests/common/teststorageapp.h>
diff --git a/storage/src/tests/persistence/persistencethread_splittest.cpp b/storage/src/tests/persistence/persistencethread_splittest.cpp
index 9da72440274..e06d81e4cd4 100644
--- a/storage/src/tests/persistence/persistencethread_splittest.cpp
+++ b/storage/src/tests/persistence/persistencethread_splittest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/persistence/persistencehandler.h>
#include <vespa/storageapi/message/bucketsplitting.h>
diff --git a/storage/src/tests/persistence/processalltest.cpp b/storage/src/tests/persistence/processalltest.cpp
index 7ac9c01dabd..80047a1797c 100644
--- a/storage/src/tests/persistence/processalltest.cpp
+++ b/storage/src/tests/persistence/processalltest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/testdocman.h>
#include <vespa/storage/persistence/processallhandler.h>
diff --git a/storage/src/tests/persistence/provider_error_wrapper_test.cpp b/storage/src/tests/persistence/provider_error_wrapper_test.cpp
index d4d26a68844..9864c324dd8 100644
--- a/storage/src/tests/persistence/provider_error_wrapper_test.cpp
+++ b/storage/src/tests/persistence/provider_error_wrapper_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/persistence/spi/test.h>
#include <tests/persistence/persistencetestutils.h>
diff --git a/storage/src/tests/persistence/splitbitdetectortest.cpp b/storage/src/tests/persistence/splitbitdetectortest.cpp
index e1a1b6cf11b..d4e84836a5a 100644
--- a/storage/src/tests/persistence/splitbitdetectortest.cpp
+++ b/storage/src/tests/persistence/splitbitdetectortest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/stringfmt.h>
#include <vespa/storage/persistence/splitbitdetector.h>
diff --git a/storage/src/tests/persistence/testandsettest.cpp b/storage/src/tests/persistence/testandsettest.cpp
index 18c083bba82..a0f4942c89a 100644
--- a/storage/src/tests/persistence/testandsettest.cpp
+++ b/storage/src/tests/persistence/testandsettest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// @author Vegard Sjonfjell
#include <vespa/storage/persistence/persistencehandler.h>
#include <tests/persistence/persistencetestutils.h>
diff --git a/storage/src/tests/pstack_testrunner b/storage/src/tests/pstack_testrunner
index 1e23951d82a..151aaec7e1a 100755
--- a/storage/src/tests/pstack_testrunner
+++ b/storage/src/tests/pstack_testrunner
@@ -1,5 +1,5 @@
#!/usr/bin/perl -w
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
use strict;
diff --git a/storage/src/tests/storageserver/CMakeLists.txt b/storage/src/tests/storageserver/CMakeLists.txt
index b3c2257c3d9..4e0b9a2c4de 100644
--- a/storage/src/tests/storageserver/CMakeLists.txt
+++ b/storage/src/tests/storageserver/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage_teststorageserver TEST
SOURCES
testvisitormessagesession.cpp
diff --git a/storage/src/tests/storageserver/bouncertest.cpp b/storage/src/tests/storageserver/bouncertest.cpp
index 03f2ace84fb..2b87fd3cabf 100644
--- a/storage/src/tests/storageserver/bouncertest.cpp
+++ b/storage/src/tests/storageserver/bouncertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storageapi/message/bucket.h>
#include <vespa/storageapi/message/state.h>
diff --git a/storage/src/tests/storageserver/changedbucketownershiphandlertest.cpp b/storage/src/tests/storageserver/changedbucketownershiphandlertest.cpp
index a1314479147..c96deaff321 100644
--- a/storage/src/tests/storageserver/changedbucketownershiphandlertest.cpp
+++ b/storage/src/tests/storageserver/changedbucketownershiphandlertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <tests/common/teststorageapp.h>
#include <tests/common/testhelper.h>
diff --git a/storage/src/tests/storageserver/communicationmanagertest.cpp b/storage/src/tests/storageserver/communicationmanagertest.cpp
index b352c06d1d0..3e08a6d3901 100644
--- a/storage/src/tests/storageserver/communicationmanagertest.cpp
+++ b/storage/src/tests/storageserver/communicationmanagertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/storageserver/communicationmanager.h>
diff --git a/storage/src/tests/storageserver/configurable_bucket_resolver_test.cpp b/storage/src/tests/storageserver/configurable_bucket_resolver_test.cpp
index e0f85142d7d..f2e3c20c550 100644
--- a/storage/src/tests/storageserver/configurable_bucket_resolver_test.cpp
+++ b/storage/src/tests/storageserver/configurable_bucket_resolver_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/storageserver/configurable_bucket_resolver.h>
#include <vespa/document/base/documentid.h>
diff --git a/storage/src/tests/storageserver/documentapiconvertertest.cpp b/storage/src/tests/storageserver/documentapiconvertertest.cpp
index a1293a842c1..ae4ff1c1b21 100644
--- a/storage/src/tests/storageserver/documentapiconvertertest.cpp
+++ b/storage/src/tests/storageserver/documentapiconvertertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config/subscription/configuri.h>
#include <vespa/document/base/testdocrepo.h>
diff --git a/storage/src/tests/storageserver/mergethrottlertest.cpp b/storage/src/tests/storageserver/mergethrottlertest.cpp
index dfeaee031ba..568eee1e92c 100644
--- a/storage/src/tests/storageserver/mergethrottlertest.cpp
+++ b/storage/src/tests/storageserver/mergethrottlertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/document_runnable.h>
#include <vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.h>
#include <tests/common/testhelper.h>
@@ -146,6 +146,7 @@ struct MergeThrottlerTest : Test {
api::ReturnCode::Result expectedResultCode);
void fill_throttler_queue_with_n_commands(uint16_t throttler_index, size_t queued_count);
+ void receive_chained_merge_with_full_queue(bool disable_queue_limits);
};
MergeThrottlerTest::MergeThrottlerTest() = default;
@@ -179,12 +180,12 @@ MergeThrottlerTest::SetUp()
void
MergeThrottlerTest::TearDown()
{
- for (std::size_t i = 0; i < _topLinks.size(); ++i) {
- if (_topLinks[i]->getState() == StorageLink::OPENED) {
- _topLinks[i]->close();
- _topLinks[i]->flush();
+ for (auto& link : _topLinks) {
+ if (link->getState() == StorageLink::OPENED) {
+ link->close();
+ link->flush();
}
- _topLinks[i] = std::shared_ptr<DummyStorageLink>();
+ link.reset();
}
_topLinks.clear();
_bottomLinks.clear();
@@ -202,18 +203,18 @@ checkChain(const StorageMessage::SP& msg,
const MergeBucketCommand& cmd =
dynamic_cast<const MergeBucketCommand&>(*msg);
- if (cmd.getChain().size() != static_cast<std::size_t>(std::distance(first, end))) {
+ if (cmd.getChain().size() != static_cast<size_t>(std::distance(first, end))) {
return false;
}
return std::equal(cmd.getChain().begin(), cmd.getChain().end(), first);
}
-void waitUntilMergeQueueIs(MergeThrottler& throttler, std::size_t sz, int timeout)
+void waitUntilMergeQueueIs(MergeThrottler& throttler, size_t sz, int timeout)
{
const auto start = std::chrono::steady_clock::now();
while (true) {
- std::size_t count;
+ size_t count;
{
std::lock_guard lock(throttler.getStateLock());
count = throttler.getMergeQueue().size();
@@ -404,10 +405,7 @@ TEST_F(MergeThrottlerTest, chain) {
TEST_F(MergeThrottlerTest, with_source_only_node) {
BucketId bid(14, 0x1337);
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(0);
- nodes.push_back(2);
- nodes.push_back(MergeBucketCommand::Node(1, true));
+ std::vector<MergeBucketCommand::Node> nodes({{0}, {2}, {1, true}});
auto cmd = std::make_shared<MergeBucketCommand>(makeDocumentBucket(bid), nodes, UINT_MAX, 123);
cmd->setAddress(StorageMessageAddress::create(&_Storage, lib::NodeType::STORAGE, 0));
@@ -451,10 +449,7 @@ TEST_F(MergeThrottlerTest, with_source_only_node) {
TEST_F(MergeThrottlerTest, legacy_42_distributor_behavior) {
BucketId bid(32, 0xfeef00);
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(0);
- nodes.push_back(1);
- nodes.push_back(2);
+ std::vector<MergeBucketCommand::Node> nodes({{0}, {1}, {2}});
auto cmd = std::make_shared<MergeBucketCommand>(makeDocumentBucket(bid), nodes, 1234);
// Send to node 1, which is not the lowest index
@@ -489,10 +484,7 @@ TEST_F(MergeThrottlerTest, legacy_42_distributor_behavior) {
TEST_F(MergeThrottlerTest, legacy_42_distributor_behavior_does_not_take_ownership) {
BucketId bid(32, 0xfeef00);
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(0);
- nodes.push_back(1);
- nodes.push_back(2);
+ std::vector<MergeBucketCommand::Node> nodes({{0}, {1}, {2}});
auto cmd = std::make_shared<MergeBucketCommand>(makeDocumentBucket(bid), nodes, 1234);
// Send to node 1, which is not the lowest index
@@ -538,13 +530,8 @@ TEST_F(MergeThrottlerTest, legacy_42_distributor_behavior_does_not_take_ownershi
TEST_F(MergeThrottlerTest, end_of_chain_execution_does_not_take_ownership) {
BucketId bid(32, 0xfeef00);
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(2);
- nodes.push_back(1);
- nodes.push_back(0);
- std::vector<uint16_t> chain;
- chain.push_back(0);
- chain.push_back(1);
+ std::vector<MergeBucketCommand::Node> nodes({{2}, {1}, {0}});
+ std::vector<uint16_t> chain({0, 1});
auto cmd = std::make_shared<MergeBucketCommand>(makeDocumentBucket(bid), nodes, 1234, 1, chain);
// Send to last node, which is not the lowest index
@@ -590,10 +577,7 @@ TEST_F(MergeThrottlerTest, end_of_chain_execution_does_not_take_ownership) {
TEST_F(MergeThrottlerTest, resend_handling) {
BucketId bid(32, 0xbadbed);
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(0);
- nodes.push_back(1);
- nodes.push_back(2);
+ std::vector<MergeBucketCommand::Node> nodes({{0}, {1}, {2}});
auto cmd = std::make_shared<MergeBucketCommand>(makeDocumentBucket(bid), nodes, 1234);
cmd->setAddress(StorageMessageAddress::create(&_Storage, lib::NodeType::STORAGE, 1));
@@ -640,13 +624,10 @@ TEST_F(MergeThrottlerTest, resend_handling) {
TEST_F(MergeThrottlerTest, priority_queuing) {
// Fill up all active merges
- std::size_t maxPending = _throttlers[0]->getThrottlePolicy().getMaxPendingCount();
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(0);
- nodes.push_back(1);
- nodes.push_back(2);
+ size_t maxPending = _throttlers[0]->getThrottlePolicy().getMaxPendingCount();
+ std::vector<MergeBucketCommand::Node> nodes({{0}, {1}, {2}});
ASSERT_GE(maxPending, 4u);
- for (std::size_t i = 0; i < maxPending; ++i) {
+ for (size_t i = 0; i < maxPending; ++i) {
auto cmd = std::make_shared<MergeBucketCommand>(
makeDocumentBucket(BucketId(32, 0xf00baa00 + i)), nodes, 1234);
cmd->setPriority(100);
@@ -661,8 +642,7 @@ TEST_F(MergeThrottlerTest, priority_queuing) {
int priorities[4] = { 200, 150, 120, 240 };
int sortedPris[4] = { 120, 150, 200, 240 };
for (int i = 0; i < 4; ++i) {
- std::shared_ptr<MergeBucketCommand> cmd(
- new MergeBucketCommand(makeDocumentBucket(BucketId(32, i)), nodes, 1234));
+ auto cmd = std::make_shared<MergeBucketCommand>(makeDocumentBucket(BucketId(32, i)), nodes, 1234);
cmd->setPriority(priorities[i]);
_topLinks[0]->sendDown(cmd);
}
@@ -670,7 +650,7 @@ TEST_F(MergeThrottlerTest, priority_queuing) {
waitUntilMergeQueueIs(*_throttlers[0], 4, _messageWaitTime);
// Remove all but 4 forwarded merges
- for (std::size_t i = 0; i < maxPending - 4; ++i) {
+ for (size_t i = 0; i < maxPending - 4; ++i) {
_topLinks[0]->getAndRemoveMessage(MessageType::MERGEBUCKET);
}
ASSERT_EQ(0, _topLinks[0]->getNumCommands());
@@ -701,11 +681,8 @@ TEST_F(MergeThrottlerTest, command_in_queue_duplicate_of_known_merge) {
// Fill up all active merges and 1 queued one
size_t maxPending = _throttlers[0]->getThrottlePolicy().getMaxPendingCount();
ASSERT_LT(maxPending, 100);
- for (std::size_t i = 0; i < maxPending + 1; ++i) {
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(0);
- nodes.push_back(2 + i);
- nodes.push_back(5 + i);
+ for (size_t i = 0; i < maxPending + 1; ++i) {
+ std::vector<MergeBucketCommand::Node> nodes({{0}, {uint16_t(2 + i)}, {uint16_t(5 + i)}});
auto cmd = std::make_shared<MergeBucketCommand>(
makeDocumentBucket(BucketId(32, 0xf00baa00 + i)), nodes, 1234);
cmd->setPriority(100 - i);
@@ -718,19 +695,14 @@ TEST_F(MergeThrottlerTest, command_in_queue_duplicate_of_known_merge) {
// Add a merge for the same bucket twice to the queue
{
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(0);
- nodes.push_back(12);
- nodes.push_back(123);
+ std::vector<MergeBucketCommand::Node> nodes({{0}, {12}, {123}});
auto cmd = std::make_shared<MergeBucketCommand>(
makeDocumentBucket(BucketId(32, 0xf000feee)), nodes, 1234);
_topLinks[0]->sendDown(cmd);
}
{
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(0);
- nodes.push_back(124); // Different node set doesn't matter
- nodes.push_back(14);
+ // Different node set doesn't matter
+ std::vector<MergeBucketCommand::Node> nodes({{0}, {124}, {14}});
auto cmd = std::make_shared<MergeBucketCommand>(
makeDocumentBucket(BucketId(32, 0xf000feee)), nodes, 1234);
_topLinks[0]->sendDown(cmd);
@@ -782,10 +754,7 @@ TEST_F(MergeThrottlerTest, command_in_queue_duplicate_of_known_merge) {
// This is not a scenario that should ever actually happen, but for
// the sake of robustness, include it anyway.
TEST_F(MergeThrottlerTest, invalid_receiver_node) {
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(1);
- nodes.push_back(5);
- nodes.push_back(9);
+ std::vector<MergeBucketCommand::Node> nodes({{1}, {5}, {9}});
auto cmd = std::make_shared<MergeBucketCommand>(
makeDocumentBucket(BucketId(32, 0xf00baaaa)), nodes, 1234);
@@ -807,11 +776,8 @@ TEST_F(MergeThrottlerTest, forward_queued_merge) {
// Fill up all active merges and then 3 queued ones
size_t maxPending = _throttlers[0]->getThrottlePolicy().getMaxPendingCount();
ASSERT_LT(maxPending, 100);
- for (std::size_t i = 0; i < maxPending + 3; ++i) {
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(0);
- nodes.push_back(2 + i);
- nodes.push_back(5 + i);
+ for (size_t i = 0; i < maxPending + 3; ++i) {
+ std::vector<MergeBucketCommand::Node> nodes({{0}, {uint16_t(2 + i)}, {uint16_t(5 + i)}});
auto cmd = std::make_shared<MergeBucketCommand>(
makeDocumentBucket(BucketId(32, 0xf00baa00 + i)), nodes, 1234);
cmd->setPriority(100 - i);
@@ -871,11 +837,8 @@ TEST_F(MergeThrottlerTest, execute_queued_merge) {
// Fill up all active merges and then 3 queued ones
size_t maxPending = throttler.getThrottlePolicy().getMaxPendingCount();
ASSERT_LT(maxPending, 100);
- for (std::size_t i = 0; i < maxPending + 3; ++i) {
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(1);
- nodes.push_back(5 + i);
- nodes.push_back(7 + i);
+ for (size_t i = 0; i < maxPending + 3; ++i) {
+ std::vector<MergeBucketCommand::Node> nodes({{1}, {uint16_t(5 + i)}, {uint16_t(7 + i)}});
auto cmd = std::make_shared<MergeBucketCommand>(
makeDocumentBucket(BucketId(32, 0xf00baa00 + i)), nodes, 1234, 1);
cmd->setPriority(250 - i + 5);
@@ -889,11 +852,8 @@ TEST_F(MergeThrottlerTest, execute_queued_merge) {
// Sneak in a higher priority message that is bound to be executed
// on the given node
{
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(1);
- nodes.push_back(0);
- std::vector<uint16_t> chain;
- chain.push_back(0);
+ std::vector<MergeBucketCommand::Node> nodes({{1}, {0}});
+ std::vector<uint16_t> chain({0});
auto cmd = std::make_shared<MergeBucketCommand>(
makeDocumentBucket(BucketId(32, 0x1337)), nodes, 1234, 1, chain);
cmd->setPriority(0);
@@ -945,13 +905,10 @@ TEST_F(MergeThrottlerTest, execute_queued_merge) {
TEST_F(MergeThrottlerTest, flush) {
// Fill up all active merges and then 3 queued ones
- std::size_t maxPending = _throttlers[0]->getThrottlePolicy().getMaxPendingCount();
+ size_t maxPending = _throttlers[0]->getThrottlePolicy().getMaxPendingCount();
ASSERT_LT(maxPending, 100);
- for (std::size_t i = 0; i < maxPending + 3; ++i) {
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(0);
- nodes.push_back(1);
- nodes.push_back(2);
+ for (size_t i = 0; i < maxPending + 3; ++i) {
+ std::vector<MergeBucketCommand::Node> nodes({{0}, {1}, {2}});
auto cmd = std::make_shared<MergeBucketCommand>(
makeDocumentBucket(BucketId(32, 0xf00baa00 + i)), nodes, 1234, 1);
_topLinks[0]->sendDown(cmd);
@@ -987,14 +944,8 @@ TEST_F(MergeThrottlerTest, flush) {
// properly, it will attempt to forward this node again with a bogus
// index. This should be implicitly handled by checking for a full node
TEST_F(MergeThrottlerTest, unseen_merge_with_node_in_chain) {
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(0);
- nodes.push_back(5);
- nodes.push_back(9);
- std::vector<uint16_t> chain;
- chain.push_back(0);
- chain.push_back(5);
- chain.push_back(9);
+ std::vector<MergeBucketCommand::Node> nodes({{0}, {5}, {9}});
+ std::vector<uint16_t> chain({0, 5, 9});
auto cmd = std::make_shared<MergeBucketCommand>(
makeDocumentBucket(BucketId(32, 0xdeadbeef)), nodes, 1234, 1, chain);
@@ -1036,11 +987,8 @@ TEST_F(MergeThrottlerTest, merge_with_newer_cluster_state_flushes_outdated_queue
size_t maxPending = _throttlers[0]->getThrottlePolicy().getMaxPendingCount();
ASSERT_LT(maxPending, 100);
std::vector<api::StorageMessage::Id> ids;
- for (std::size_t i = 0; i < maxPending + 3; ++i) {
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(0);
- nodes.push_back(1);
- nodes.push_back(2);
+ for (size_t i = 0; i < maxPending + 3; ++i) {
+ std::vector<MergeBucketCommand::Node> nodes({{0}, {1}, {2}});
auto cmd = std::make_shared<MergeBucketCommand>(
makeDocumentBucket(BucketId(32, 0xf00baa00 + i)), nodes, 1234, 1);
ids.push_back(cmd->getMsgId());
@@ -1053,10 +1001,7 @@ TEST_F(MergeThrottlerTest, merge_with_newer_cluster_state_flushes_outdated_queue
// Send down merge with newer system state
{
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(0);
- nodes.push_back(1);
- nodes.push_back(2);
+ std::vector<MergeBucketCommand::Node> nodes({{0}, {1}, {2}});
auto cmd = std::make_shared<MergeBucketCommand>(
makeDocumentBucket(BucketId(32, 0x12345678)), nodes, 1234, 2);
ids.push_back(cmd->getMsgId());
@@ -1084,11 +1029,8 @@ TEST_F(MergeThrottlerTest, updated_cluster_state_flushes_outdated_queued) {
size_t maxPending = _throttlers[0]->getThrottlePolicy().getMaxPendingCount();
ASSERT_LT(maxPending, 100);
std::vector<api::StorageMessage::Id> ids;
- for (std::size_t i = 0; i < maxPending + 3; ++i) {
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(0);
- nodes.push_back(1);
- nodes.push_back(2);
+ for (size_t i = 0; i < maxPending + 3; ++i) {
+ std::vector<MergeBucketCommand::Node> nodes({{0}, {1}, {2}});
auto cmd = std::make_shared<MergeBucketCommand>(
makeDocumentBucket(BucketId(32, 0xf00baa00 + i)), nodes, 1234, 2);
ids.push_back(cmd->getMsgId());
@@ -1125,11 +1067,8 @@ TEST_F(MergeThrottlerTest, legacy_42_merges_do_not_trigger_flush) {
// Fill up all active merges and then 1 queued one
size_t maxPending = _throttlers[0]->getThrottlePolicy().getMaxPendingCount();
ASSERT_LT(maxPending, 100);
- for (std::size_t i = 0; i < maxPending + 1; ++i) {
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(0);
- nodes.push_back(1);
- nodes.push_back(2);
+ for (size_t i = 0; i < maxPending + 1; ++i) {
+ std::vector<MergeBucketCommand::Node> nodes({{0}, {1}, {2}});
auto cmd = std::make_shared<MergeBucketCommand>(
makeDocumentBucket(BucketId(32, 0xf00baa00 + i)), nodes, 1234, 1);
_topLinks[0]->sendDown(cmd);
@@ -1149,10 +1088,7 @@ TEST_F(MergeThrottlerTest, legacy_42_merges_do_not_trigger_flush) {
// Send down a merge with a cluster state version of 0, which should
// be ignored and queued as usual
{
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(0);
- nodes.push_back(1);
- nodes.push_back(2);
+ std::vector<MergeBucketCommand::Node> nodes({{0}, {1}, {2}});
auto cmd = std::make_shared<MergeBucketCommand>(
makeDocumentBucket(BucketId(32, 0xbaaadbed)), nodes, 1234, 0);
_topLinks[0]->sendDown(cmd);
@@ -1174,10 +1110,7 @@ TEST_F(MergeThrottlerTest, outdated_cluster_state_merges_are_rejected_on_arrival
// Send down a merge with a cluster state version of 9, which should
// be rejected
{
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(0);
- nodes.push_back(1);
- nodes.push_back(2);
+ std::vector<MergeBucketCommand::Node> nodes({{0}, {1}, {2}});
auto cmd = std::make_shared<MergeBucketCommand>(
makeDocumentBucket(BucketId(32, 0xfeef00)), nodes, 1234, 9);
_topLinks[0]->sendDown(cmd);
@@ -1199,12 +1132,8 @@ TEST_F(MergeThrottlerTest, outdated_cluster_state_merges_are_rejected_on_arrival
TEST_F(MergeThrottlerTest, unknown_merge_with_self_in_chain) {
BucketId bid(32, 0xbadbed);
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(0);
- nodes.push_back(1);
- nodes.push_back(2);
- std::vector<uint16_t> chain;
- chain.push_back(0);
+ std::vector<MergeBucketCommand::Node> nodes({{0}, {1}, {2}});
+ std::vector<uint16_t> chain({0});
auto cmd = std::make_shared<MergeBucketCommand>(makeDocumentBucket(bid), nodes, 1234, 1, chain);
cmd->setAddress(StorageMessageAddress::create(&_Storage, lib::NodeType::STORAGE, 1));
@@ -1217,16 +1146,14 @@ TEST_F(MergeThrottlerTest, unknown_merge_with_self_in_chain) {
static_cast<MergeBucketReply&>(*reply).getResult().getResult());
}
-TEST_F(MergeThrottlerTest, busy_returned_on_full_queue) {
+TEST_F(MergeThrottlerTest, busy_returned_on_full_queue_for_merges_sent_from_distributors) {
size_t maxPending = _throttlers[0]->getThrottlePolicy().getMaxPendingCount();
size_t maxQueue = _throttlers[0]->getMaxQueueSize();
ASSERT_EQ(20, maxQueue);
ASSERT_LT(maxPending, 100);
- for (std::size_t i = 0; i < maxPending + maxQueue; ++i) {
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(0);
- nodes.push_back(1);
- nodes.push_back(2);
+ for (size_t i = 0; i < maxPending + maxQueue; ++i) {
+ std::vector<MergeBucketCommand::Node> nodes({{0}, {1}, {2}});
+ // No chain set, i.e. merge command is freshly squeezed from a distributor.
auto cmd = std::make_shared<MergeBucketCommand>(
makeDocumentBucket(BucketId(32, 0xf00000 + i)), nodes, 1234, 1);
_topLinks[0]->sendDown(cmd);
@@ -1241,10 +1168,7 @@ TEST_F(MergeThrottlerTest, busy_returned_on_full_queue) {
_topLinks[0]->getRepliesOnce();
// Send down another merge which should be immediately busy-returned
{
- std::vector<MergeBucketCommand::Node> nodes;
- nodes.push_back(0);
- nodes.push_back(1);
- nodes.push_back(2);
+ std::vector<MergeBucketCommand::Node> nodes({{0}, {1}, {2}});
auto cmd = std::make_shared<MergeBucketCommand>(
makeDocumentBucket(BucketId(32, 0xf000baaa)), nodes, 1234, 1);
_topLinks[0]->sendDown(cmd);
@@ -1262,6 +1186,50 @@ TEST_F(MergeThrottlerTest, busy_returned_on_full_queue) {
EXPECT_EQ(1, _throttlers[0]->getMetrics().local.failures.busy.getValue());
}
+void
+MergeThrottlerTest::receive_chained_merge_with_full_queue(bool disable_queue_limits)
+{
+ // Note: uses node with index 1 to not be the first node in chain
+ _throttlers[1]->set_disable_queue_limits_for_chained_merges(disable_queue_limits);
+ size_t max_pending = _throttlers[1]->getThrottlePolicy().getMaxPendingCount();
+ size_t max_enqueued = _throttlers[1]->getMaxQueueSize();
+ for (size_t i = 0; i < max_pending + max_enqueued; ++i) {
+ std::vector<MergeBucketCommand::Node> nodes({{1}, {2}, {3}});
+ // No chain set, i.e. merge command is freshly squeezed from a distributor.
+ auto cmd = std::make_shared<MergeBucketCommand>(
+ makeDocumentBucket(BucketId(32, 0xf00000 + i)), nodes, 1234, 1);
+ _topLinks[1]->sendDown(cmd);
+ }
+ _topLinks[1]->waitForMessages(max_pending, _messageWaitTime);
+ waitUntilMergeQueueIs(*_throttlers[1], max_enqueued, _messageWaitTime);
+
+ // Clear all forwarded merges
+ _topLinks[1]->getRepliesOnce();
+ // Send down another merge with non-empty chain. It should _not_ be busy bounced
+ // (if limits disabled) as it has already been accepted into another node's merge window.
+ {
+ std::vector<MergeBucketCommand::Node> nodes({{0}, {1}, {2}});
+ auto cmd = std::make_shared<MergeBucketCommand>(
+ makeDocumentBucket(BucketId(32, 0xf000baaa)), nodes, 1234, 1);
+ cmd->setChain(std::vector<uint16_t>({0})); // Forwarded from node 0
+ _topLinks[1]->sendDown(cmd);
+ }
+}
+
+TEST_F(MergeThrottlerTest, forwarded_merges_not_busy_bounced_even_if_queue_is_full_if_chained_limits_disabled) {
+ ASSERT_NO_FATAL_FAILURE(receive_chained_merge_with_full_queue(true));
+ size_t max_enqueued = _throttlers[1]->getMaxQueueSize();
+ waitUntilMergeQueueIs(*_throttlers[1], max_enqueued + 1, _messageWaitTime);
+}
+
+TEST_F(MergeThrottlerTest, forwarded_merges_busy_bounced_if_queue_is_full_and_chained_limits_enforced) {
+ ASSERT_NO_FATAL_FAILURE(receive_chained_merge_with_full_queue(false));
+
+ _topLinks[1]->waitForMessage(MessageType::MERGEBUCKET_REPLY, _messageWaitTime);
+ auto reply = _topLinks[1]->getAndRemoveMessage(MessageType::MERGEBUCKET_REPLY);
+ EXPECT_EQ(ReturnCode::BUSY, static_cast<MergeBucketReply&>(*reply).getResult().getResult());
+}
+
TEST_F(MergeThrottlerTest, broken_cycle) {
std::vector<MergeBucketCommand::Node> nodes;
nodes.push_back(1);
diff --git a/storage/src/tests/storageserver/priorityconvertertest.cpp b/storage/src/tests/storageserver/priorityconvertertest.cpp
index af0b35e0869..2f79a14af58 100644
--- a/storage/src/tests/storageserver/priorityconvertertest.cpp
+++ b/storage/src/tests/storageserver/priorityconvertertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/documentapi/documentapi.h>
#include <vespa/storage/storageserver/priorityconverter.h>
diff --git a/storage/src/tests/storageserver/rpc/CMakeLists.txt b/storage/src/tests/storageserver/rpc/CMakeLists.txt
index 808ad8711ee..db1ffd3f77d 100644
--- a/storage/src/tests/storageserver/rpc/CMakeLists.txt
+++ b/storage/src/tests/storageserver/rpc/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(storage_storageserver_rpc_gtest_runner_app TEST
SOURCES
caching_rpc_target_resolver_test.cpp
diff --git a/storage/src/tests/storageserver/rpc/caching_rpc_target_resolver_test.cpp b/storage/src/tests/storageserver/rpc/caching_rpc_target_resolver_test.cpp
index 1bbc1ec7aef..3eec21aae64 100644
--- a/storage/src/tests/storageserver/rpc/caching_rpc_target_resolver_test.cpp
+++ b/storage/src/tests/storageserver/rpc/caching_rpc_target_resolver_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/slobrok/imirrorapi.h>
#include <vespa/storage/storageserver/rpc/caching_rpc_target_resolver.h>
diff --git a/storage/src/tests/storageserver/rpc/cluster_controller_rpc_api_service_test.cpp b/storage/src/tests/storageserver/rpc/cluster_controller_rpc_api_service_test.cpp
index 7179a6c35fc..8bfe9c1e692 100644
--- a/storage/src/tests/storageserver/rpc/cluster_controller_rpc_api_service_test.cpp
+++ b/storage/src/tests/storageserver/rpc/cluster_controller_rpc_api_service_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/bucket/fixed_bucket_spaces.h>
#include <vespa/fnet/frt/rpcrequest.h>
diff --git a/storage/src/tests/storageserver/rpc/gtest_runner.cpp b/storage/src/tests/storageserver/rpc/gtest_runner.cpp
index f3f903a8b46..ff1c0366478 100644
--- a/storage/src/tests/storageserver/rpc/gtest_runner.cpp
+++ b/storage/src/tests/storageserver/rpc/gtest_runner.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/storage/src/tests/storageserver/rpc/message_codec_provider_test.cpp b/storage/src/tests/storageserver/rpc/message_codec_provider_test.cpp
index 67474f86df0..ec42558d9f1 100644
--- a/storage/src/tests/storageserver/rpc/message_codec_provider_test.cpp
+++ b/storage/src/tests/storageserver/rpc/message_codec_provider_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/storageserver/rpc/message_codec_provider.h>
#include <vespa/storageapi/mbusprot/protocolserialization7.h>
#include <vespa/document/base/testdocman.h>
diff --git a/storage/src/tests/storageserver/rpc/storage_api_rpc_service_test.cpp b/storage/src/tests/storageserver/rpc/storage_api_rpc_service_test.cpp
index 0b33da39c41..47d7d9fbdeb 100644
--- a/storage/src/tests/storageserver/rpc/storage_api_rpc_service_test.cpp
+++ b/storage/src/tests/storageserver/rpc/storage_api_rpc_service_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <tests/common/testhelper.h>
#include <vespa/document/base/testdocman.h>
diff --git a/storage/src/tests/storageserver/service_layer_error_listener_test.cpp b/storage/src/tests/storageserver/service_layer_error_listener_test.cpp
index ec38e09a673..acc3e49e345 100644
--- a/storage/src/tests/storageserver/service_layer_error_listener_test.cpp
+++ b/storage/src/tests/storageserver/service_layer_error_listener_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/storageserver/service_layer_error_listener.h>
#include <vespa/storage/storageserver/mergethrottler.h>
diff --git a/storage/src/tests/storageserver/statemanagertest.cpp b/storage/src/tests/storageserver/statemanagertest.cpp
index a263f971c8a..fc22759139b 100644
--- a/storage/src/tests/storageserver/statemanagertest.cpp
+++ b/storage/src/tests/storageserver/statemanagertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/metrics/metricmanager.h>
#include <vespa/storageapi/message/bucket.h>
diff --git a/storage/src/tests/storageserver/statereportertest.cpp b/storage/src/tests/storageserver/statereportertest.cpp
index 15b5a912ed5..16d313ce5d1 100644
--- a/storage/src/tests/storageserver/statereportertest.cpp
+++ b/storage/src/tests/storageserver/statereportertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storageframework/defaultimplementation/clock/fakeclock.h>
#include <vespa/storage/persistence/filestorage/filestormanager.h>
diff --git a/storage/src/tests/storageserver/testvisitormessagesession.cpp b/storage/src/tests/storageserver/testvisitormessagesession.cpp
index e0cf53d284b..369e175b205 100644
--- a/storage/src/tests/storageserver/testvisitormessagesession.cpp
+++ b/storage/src/tests/storageserver/testvisitormessagesession.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <tests/storageserver/testvisitormessagesession.h>
#include <vespa/storageframework/defaultimplementation/clock/realclock.h>
diff --git a/storage/src/tests/storageserver/testvisitormessagesession.h b/storage/src/tests/storageserver/testvisitormessagesession.h
index d43fb4ab90a..548d4c0b69a 100644
--- a/storage/src/tests/storageserver/testvisitormessagesession.h
+++ b/storage/src/tests/storageserver/testvisitormessagesession.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/tests/visiting/CMakeLists.txt b/storage/src/tests/visiting/CMakeLists.txt
index c244c3d9998..2faa3e72c9f 100644
--- a/storage/src/tests/visiting/CMakeLists.txt
+++ b/storage/src/tests/visiting/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(storage_visiting_gtest_runner_app TEST
SOURCES
diff --git a/storage/src/tests/visiting/commandqueuetest.cpp b/storage/src/tests/visiting/commandqueuetest.cpp
index 359a242ff5d..ac4251ba21e 100644
--- a/storage/src/tests/visiting/commandqueuetest.cpp
+++ b/storage/src/tests/visiting/commandqueuetest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storageframework/defaultimplementation/clock/fakeclock.h>
#include <vespa/storage/visiting/commandqueue.h>
diff --git a/storage/src/tests/visiting/memory_bounded_trace_test.cpp b/storage/src/tests/visiting/memory_bounded_trace_test.cpp
index e43fa702fb5..59e28bb43fc 100644
--- a/storage/src/tests/visiting/memory_bounded_trace_test.cpp
+++ b/storage/src/tests/visiting/memory_bounded_trace_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/visiting/memory_bounded_trace.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/storage/src/tests/visiting/visitormanagertest.cpp b/storage/src/tests/visiting/visitormanagertest.cpp
index c29bb4a4da8..abd871dad23 100644
--- a/storage/src/tests/visiting/visitormanagertest.cpp
+++ b/storage/src/tests/visiting/visitormanagertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/datatype/datatype.h>
#include <vespa/document/fieldvalue/intfieldvalue.h>
diff --git a/storage/src/tests/visiting/visitortest.cpp b/storage/src/tests/visiting/visitortest.cpp
index a8c317655ca..494af8a0eff 100644
--- a/storage/src/tests/visiting/visitortest.cpp
+++ b/storage/src/tests/visiting/visitortest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config/common/exceptions.h>
#include <vespa/document/fieldvalue/intfieldvalue.h>
diff --git a/storage/src/vespa/storage/CMakeLists.txt b/storage/src/vespa/storage/CMakeLists.txt
index 100118b5133..d7fca273229 100644
--- a/storage/src/vespa/storage/CMakeLists.txt
+++ b/storage/src/vespa/storage/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage
SOURCES
$<TARGET_OBJECTS:storage_bucketdb>
diff --git a/storage/src/vespa/storage/bucketdb/CMakeLists.txt b/storage/src/vespa/storage/bucketdb/CMakeLists.txt
index 20510d895e7..fe60426325c 100644
--- a/storage/src/vespa/storage/bucketdb/CMakeLists.txt
+++ b/storage/src/vespa/storage/bucketdb/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage_bucketdb OBJECT
SOURCES
btree_bucket_database.cpp
diff --git a/storage/src/vespa/storage/bucketdb/abstract_bucket_map.h b/storage/src/vespa/storage/bucketdb/abstract_bucket_map.h
index bf46f7c3992..983fdbfb93c 100644
--- a/storage/src/vespa/storage/bucketdb/abstract_bucket_map.h
+++ b/storage/src/vespa/storage/bucketdb/abstract_bucket_map.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "read_guard.h"
diff --git a/storage/src/vespa/storage/bucketdb/btree_lockable_map.cpp b/storage/src/vespa/storage/bucketdb/btree_lockable_map.cpp
index 0be197f0ae3..06a0a9968a8 100644
--- a/storage/src/vespa/storage/bucketdb/btree_lockable_map.cpp
+++ b/storage/src/vespa/storage/bucketdb/btree_lockable_map.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "btree_lockable_map.hpp"
#include <vespa/vespalib/datastore/buffer_type.hpp>
diff --git a/storage/src/vespa/storage/bucketdb/btree_lockable_map.h b/storage/src/vespa/storage/bucketdb/btree_lockable_map.h
index 5667c75c5d7..3cc3249e6e0 100644
--- a/storage/src/vespa/storage/bucketdb/btree_lockable_map.h
+++ b/storage/src/vespa/storage/bucketdb/btree_lockable_map.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "abstract_bucket_map.h"
diff --git a/storage/src/vespa/storage/bucketdb/btree_lockable_map.hpp b/storage/src/vespa/storage/bucketdb/btree_lockable_map.hpp
index 5f137029915..1c0f9ec7a59 100644
--- a/storage/src/vespa/storage/bucketdb/btree_lockable_map.hpp
+++ b/storage/src/vespa/storage/bucketdb/btree_lockable_map.hpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "btree_lockable_map.h"
diff --git a/storage/src/vespa/storage/bucketdb/bucketcopy.cpp b/storage/src/vespa/storage/bucketdb/bucketcopy.cpp
index 5884caf1421..69844c8957b 100644
--- a/storage/src/vespa/storage/bucketdb/bucketcopy.cpp
+++ b/storage/src/vespa/storage/bucketdb/bucketcopy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketcopy.h"
#include <sstream>
diff --git a/storage/src/vespa/storage/bucketdb/bucketcopy.h b/storage/src/vespa/storage/bucketdb/bucketcopy.h
index 3e93e4594a6..e8d1db1d824 100644
--- a/storage/src/vespa/storage/bucketdb/bucketcopy.h
+++ b/storage/src/vespa/storage/bucketdb/bucketcopy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storageapi/buckets/bucketinfo.h>
diff --git a/storage/src/vespa/storage/bucketdb/bucketdatabase.cpp b/storage/src/vespa/storage/bucketdb/bucketdatabase.cpp
index f2a561b83eb..8ba01593eca 100644
--- a/storage/src/vespa/storage/bucketdb/bucketdatabase.cpp
+++ b/storage/src/vespa/storage/bucketdb/bucketdatabase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketdatabase.h"
#include <sstream>
diff --git a/storage/src/vespa/storage/bucketdb/bucketdatabase.h b/storage/src/vespa/storage/bucketdb/bucketdatabase.h
index 9ca231a26d2..d3d9c34c7fc 100644
--- a/storage/src/vespa/storage/bucketdb/bucketdatabase.h
+++ b/storage/src/vespa/storage/bucketdb/bucketdatabase.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Interface for bucket database implementations in the distributor.
*/
diff --git a/storage/src/vespa/storage/bucketdb/bucketinfo.cpp b/storage/src/vespa/storage/bucketdb/bucketinfo.cpp
index 17efa1658ce..dcf49b4d022 100644
--- a/storage/src/vespa/storage/bucketdb/bucketinfo.cpp
+++ b/storage/src/vespa/storage/bucketdb/bucketinfo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketinfo.h"
#include "bucketinfo.hpp"
#include <vespa/storage/storageutil/utils.h>
diff --git a/storage/src/vespa/storage/bucketdb/bucketinfo.h b/storage/src/vespa/storage/bucketdb/bucketinfo.h
index 533192eda89..cc34cfa2879 100644
--- a/storage/src/vespa/storage/bucketdb/bucketinfo.h
+++ b/storage/src/vespa/storage/bucketdb/bucketinfo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bucketcopy.h"
@@ -9,7 +9,7 @@ namespace storage {
namespace distributor {
class DistributorStripeTestUtil;
- class DistributorTestUtil;
+ class TopLevelDistributorTestUtil;
}
enum class TrustedUpdate {
@@ -204,7 +204,7 @@ public:
private:
friend class distributor::DistributorStripeTestUtil;
- friend class distributor::DistributorTestUtil;
+ friend class distributor::TopLevelDistributorTestUtil;
/**
* Returns the bucket copy struct for the given node, null if nonexisting
diff --git a/storage/src/vespa/storage/bucketdb/bucketmanager.cpp b/storage/src/vespa/storage/bucketdb/bucketmanager.cpp
index 4680414baa1..9edac8d79ff 100644
--- a/storage/src/vespa/storage/bucketdb/bucketmanager.cpp
+++ b/storage/src/vespa/storage/bucketdb/bucketmanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketmanager.h"
#include "minimumusedbitstracker.h"
diff --git a/storage/src/vespa/storage/bucketdb/bucketmanager.h b/storage/src/vespa/storage/bucketdb/bucketmanager.h
index f234ab2dd77..eacd0c8ca6a 100644
--- a/storage/src/vespa/storage/bucketdb/bucketmanager.h
+++ b/storage/src/vespa/storage/bucketdb/bucketmanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Storage link handling requests concerning buckets.
*
diff --git a/storage/src/vespa/storage/bucketdb/bucketmanagermetrics.cpp b/storage/src/vespa/storage/bucketdb/bucketmanagermetrics.cpp
index b6d09679aee..41a655564f5 100644
--- a/storage/src/vespa/storage/bucketdb/bucketmanagermetrics.cpp
+++ b/storage/src/vespa/storage/bucketdb/bucketmanagermetrics.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketmanagermetrics.h"
#include <vespa/document/bucket/fixed_bucket_spaces.h>
diff --git a/storage/src/vespa/storage/bucketdb/bucketmanagermetrics.h b/storage/src/vespa/storage/bucketdb/bucketmanagermetrics.h
index e2d8dc69f9b..a856a9bf9a1 100644
--- a/storage/src/vespa/storage/bucketdb/bucketmanagermetrics.h
+++ b/storage/src/vespa/storage/bucketdb/bucketmanagermetrics.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/bucketdb/const_iterator.h b/storage/src/vespa/storage/bucketdb/const_iterator.h
index ae251754c58..4ebb280a844 100644
--- a/storage/src/vespa/storage/bucketdb/const_iterator.h
+++ b/storage/src/vespa/storage/bucketdb/const_iterator.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdint>
diff --git a/storage/src/vespa/storage/bucketdb/db_merger.h b/storage/src/vespa/storage/bucketdb/db_merger.h
index 4bda7ecff4d..4f916349682 100644
--- a/storage/src/vespa/storage/bucketdb/db_merger.h
+++ b/storage/src/vespa/storage/bucketdb/db_merger.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/bucket/bucketid.h>
diff --git a/storage/src/vespa/storage/bucketdb/generic_btree_bucket_database.cpp b/storage/src/vespa/storage/bucketdb/generic_btree_bucket_database.cpp
index b4b8c6e54b9..250c783f57e 100644
--- a/storage/src/vespa/storage/bucketdb/generic_btree_bucket_database.cpp
+++ b/storage/src/vespa/storage/bucketdb/generic_btree_bucket_database.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "generic_btree_bucket_database.h"
namespace storage::bucketdb {
diff --git a/storage/src/vespa/storage/bucketdb/generic_btree_bucket_database.h b/storage/src/vespa/storage/bucketdb/generic_btree_bucket_database.h
index f9d9f4f7861..77e71bb4f0c 100644
--- a/storage/src/vespa/storage/bucketdb/generic_btree_bucket_database.h
+++ b/storage/src/vespa/storage/bucketdb/generic_btree_bucket_database.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "const_iterator.h"
diff --git a/storage/src/vespa/storage/bucketdb/generic_btree_bucket_database.hpp b/storage/src/vespa/storage/bucketdb/generic_btree_bucket_database.hpp
index aafb4286d7d..7b0d147df0d 100644
--- a/storage/src/vespa/storage/bucketdb/generic_btree_bucket_database.hpp
+++ b/storage/src/vespa/storage/bucketdb/generic_btree_bucket_database.hpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "generic_btree_bucket_database.h"
diff --git a/storage/src/vespa/storage/bucketdb/minimumusedbitstracker.h b/storage/src/vespa/storage/bucketdb/minimumusedbitstracker.h
index dd7891fccc1..881f7ed33cb 100644
--- a/storage/src/vespa/storage/bucketdb/minimumusedbitstracker.h
+++ b/storage/src/vespa/storage/bucketdb/minimumusedbitstracker.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <algorithm>
diff --git a/storage/src/vespa/storage/bucketdb/read_guard.h b/storage/src/vespa/storage/bucketdb/read_guard.h
index 68a0c8578a8..1ec73169fe2 100644
--- a/storage/src/vespa/storage/bucketdb/read_guard.h
+++ b/storage/src/vespa/storage/bucketdb/read_guard.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "const_iterator.h"
diff --git a/storage/src/vespa/storage/bucketdb/stor-bucket-init.def b/storage/src/vespa/storage/bucketdb/stor-bucket-init.def
index 3517afabd44..c3344e324a5 100644
--- a/storage/src/vespa/storage/bucketdb/stor-bucket-init.def
+++ b/storage/src/vespa/storage/bucketdb/stor-bucket-init.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content.core
# The maximum number of alien files found during init that should be stored in
diff --git a/storage/src/vespa/storage/bucketdb/stor-bucketdb.def b/storage/src/vespa/storage/bucketdb/stor-bucketdb.def
index 470dd3afbf0..6e0c7b0ce24 100644
--- a/storage/src/vespa/storage/bucketdb/stor-bucketdb.def
+++ b/storage/src/vespa/storage/bucketdb/stor-bucketdb.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content.core
## Number of elements to retrieve in one bucket info chunk
diff --git a/storage/src/vespa/storage/bucketdb/storagebucketinfo.h b/storage/src/vespa/storage/bucketdb/storagebucketinfo.h
index f8732b7914b..abca7e947af 100644
--- a/storage/src/vespa/storage/bucketdb/storagebucketinfo.h
+++ b/storage/src/vespa/storage/bucketdb/storagebucketinfo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/bucketdb/storbucketdb.cpp b/storage/src/vespa/storage/bucketdb/storbucketdb.cpp
index 63e00d3804c..d80c6734c36 100644
--- a/storage/src/vespa/storage/bucketdb/storbucketdb.cpp
+++ b/storage/src/vespa/storage/bucketdb/storbucketdb.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "storbucketdb.h"
#include "btree_lockable_map.h"
diff --git a/storage/src/vespa/storage/bucketdb/storbucketdb.h b/storage/src/vespa/storage/bucketdb/storbucketdb.h
index cf6401d9478..fb54ac074d3 100644
--- a/storage/src/vespa/storage/bucketdb/storbucketdb.h
+++ b/storage/src/vespa/storage/bucketdb/storbucketdb.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "abstract_bucket_map.h"
diff --git a/storage/src/vespa/storage/bucketdb/striped_btree_lockable_map.cpp b/storage/src/vespa/storage/bucketdb/striped_btree_lockable_map.cpp
index 90f7ec5ae7b..eaedb91a56c 100644
--- a/storage/src/vespa/storage/bucketdb/striped_btree_lockable_map.cpp
+++ b/storage/src/vespa/storage/bucketdb/striped_btree_lockable_map.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "striped_btree_lockable_map.hpp"
namespace storage::bucketdb {
diff --git a/storage/src/vespa/storage/bucketdb/striped_btree_lockable_map.h b/storage/src/vespa/storage/bucketdb/striped_btree_lockable_map.h
index 73b5c37ab8b..d7af9f8b6bd 100644
--- a/storage/src/vespa/storage/bucketdb/striped_btree_lockable_map.h
+++ b/storage/src/vespa/storage/bucketdb/striped_btree_lockable_map.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "btree_lockable_map.h"
diff --git a/storage/src/vespa/storage/bucketdb/striped_btree_lockable_map.hpp b/storage/src/vespa/storage/bucketdb/striped_btree_lockable_map.hpp
index 310a9d5154b..2a14286c6b1 100644
--- a/storage/src/vespa/storage/bucketdb/striped_btree_lockable_map.hpp
+++ b/storage/src/vespa/storage/bucketdb/striped_btree_lockable_map.hpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "striped_btree_lockable_map.h"
diff --git a/storage/src/vespa/storage/common/CMakeLists.txt b/storage/src/vespa/storage/common/CMakeLists.txt
index ae428929946..33efbb571fd 100644
--- a/storage/src/vespa/storage/common/CMakeLists.txt
+++ b/storage/src/vespa/storage/common/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage_common OBJECT
SOURCES
bucket_stripe_utils.cpp
diff --git a/storage/src/vespa/storage/common/bucket_resolver.h b/storage/src/vespa/storage/common/bucket_resolver.h
index f1e334807bf..0b8e8b18430 100644
--- a/storage/src/vespa/storage/common/bucket_resolver.h
+++ b/storage/src/vespa/storage/common/bucket_resolver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/bucket/bucket.h>
diff --git a/storage/src/vespa/storage/common/bucket_stripe_utils.cpp b/storage/src/vespa/storage/common/bucket_stripe_utils.cpp
index 10667e79678..d66ef9e55ea 100644
--- a/storage/src/vespa/storage/common/bucket_stripe_utils.cpp
+++ b/storage/src/vespa/storage/common/bucket_stripe_utils.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucket_stripe_utils.h"
#include <vespa/vespalib/util/alloc.h>
@@ -39,7 +39,8 @@ calc_num_stripe_bits(uint32_t n_stripes) noexcept
return result;
}
-uint32_t adjusted_num_stripes(uint32_t n_stripes) noexcept
+uint32_t
+adjusted_num_stripes(uint32_t n_stripes) noexcept
{
if (n_stripes > 1) {
if (n_stripes > MaxStripes) {
@@ -50,4 +51,18 @@ uint32_t adjusted_num_stripes(uint32_t n_stripes) noexcept
return n_stripes;
}
+uint32_t
+tune_num_stripes_based_on_cpu_cores(uint32_t cpu_cores) noexcept
+{
+ // This should match the calculation used when node flavor is available:
+ // config-model/src/main/java/com/yahoo/vespa/model/content/Distributor.java
+ if (cpu_cores <= 16) {
+ return 1;
+ } else if (cpu_cores <= 64) {
+ return 2;
+ } else {
+ return 4;
+ }
+}
+
}
diff --git a/storage/src/vespa/storage/common/bucket_stripe_utils.h b/storage/src/vespa/storage/common/bucket_stripe_utils.h
index 96f1247a09f..4d922baac06 100644
--- a/storage/src/vespa/storage/common/bucket_stripe_utils.h
+++ b/storage/src/vespa/storage/common/bucket_stripe_utils.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -31,5 +31,10 @@ uint8_t calc_num_stripe_bits(uint32_t n_stripes) noexcept;
*/
[[nodiscard]] uint32_t adjusted_num_stripes(uint32_t n_stripes) noexcept;
+/**
+ * Tune the number of stripes based on the number of CPU cores.
+ */
+uint32_t tune_num_stripes_based_on_cpu_cores(uint32_t cpu_cores) noexcept;
+
}
diff --git a/storage/src/vespa/storage/common/bucket_utils.h b/storage/src/vespa/storage/common/bucket_utils.h
index 019cb7e1c5b..fc556a92d4f 100644
--- a/storage/src/vespa/storage/common/bucket_utils.h
+++ b/storage/src/vespa/storage/common/bucket_utils.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/common/bucketmessages.cpp b/storage/src/vespa/storage/common/bucketmessages.cpp
index 796d07ad9ef..1523ad1b0ef 100644
--- a/storage/src/vespa/storage/common/bucketmessages.cpp
+++ b/storage/src/vespa/storage/common/bucketmessages.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketmessages.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/storage/src/vespa/storage/common/bucketmessages.h b/storage/src/vespa/storage/common/bucketmessages.h
index 836be73862d..ca3b28188ec 100644
--- a/storage/src/vespa/storage/common/bucketmessages.h
+++ b/storage/src/vespa/storage/common/bucketmessages.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/persistence/spi/result.h>
diff --git a/storage/src/vespa/storage/common/cluster_context.h b/storage/src/vespa/storage/common/cluster_context.h
index a7d8ab0a2e5..c159accb101 100644
--- a/storage/src/vespa/storage/common/cluster_context.h
+++ b/storage/src/vespa/storage/common/cluster_context.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/common/content_bucket_db_options.h b/storage/src/vespa/storage/common/content_bucket_db_options.h
index 60c5f04b8c6..b8c9cc6cdf4 100644
--- a/storage/src/vespa/storage/common/content_bucket_db_options.h
+++ b/storage/src/vespa/storage/common/content_bucket_db_options.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdint>
diff --git a/storage/src/vespa/storage/common/content_bucket_space.cpp b/storage/src/vespa/storage/common/content_bucket_space.cpp
index da2f78e2a6a..56bab9c6edc 100644
--- a/storage/src/vespa/storage/common/content_bucket_space.cpp
+++ b/storage/src/vespa/storage/common/content_bucket_space.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "content_bucket_space.h"
diff --git a/storage/src/vespa/storage/common/content_bucket_space.h b/storage/src/vespa/storage/common/content_bucket_space.h
index 98f287a3154..63379d6b8ee 100644
--- a/storage/src/vespa/storage/common/content_bucket_space.h
+++ b/storage/src/vespa/storage/common/content_bucket_space.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/bucket/bucketspace.h>
diff --git a/storage/src/vespa/storage/common/content_bucket_space_repo.cpp b/storage/src/vespa/storage/common/content_bucket_space_repo.cpp
index a76ad9576e0..bddfa812657 100644
--- a/storage/src/vespa/storage/common/content_bucket_space_repo.cpp
+++ b/storage/src/vespa/storage/common/content_bucket_space_repo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "content_bucket_space_repo.h"
#include <vespa/document/bucket/fixed_bucket_spaces.h>
diff --git a/storage/src/vespa/storage/common/content_bucket_space_repo.h b/storage/src/vespa/storage/common/content_bucket_space_repo.h
index 01698eb6e01..7038e9cb1aa 100644
--- a/storage/src/vespa/storage/common/content_bucket_space_repo.h
+++ b/storage/src/vespa/storage/common/content_bucket_space_repo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "content_bucket_space.h"
diff --git a/storage/src/vespa/storage/common/distributorcomponent.cpp b/storage/src/vespa/storage/common/distributorcomponent.cpp
index c5fe099635b..29138b5b718 100644
--- a/storage/src/vespa/storage/common/distributorcomponent.cpp
+++ b/storage/src/vespa/storage/common/distributorcomponent.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/common/distributorcomponent.h>
diff --git a/storage/src/vespa/storage/common/distributorcomponent.h b/storage/src/vespa/storage/common/distributorcomponent.h
index 403ffa3376c..06bb49a6090 100644
--- a/storage/src/vespa/storage/common/distributorcomponent.h
+++ b/storage/src/vespa/storage/common/distributorcomponent.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::DistributorStripeComponent
* \ingroup common
@@ -41,17 +41,17 @@ namespace lib {
class IdealNodeCalculator;
}
-typedef vespa::config::content::core::internal::InternalStorDistributormanagerType DistributorConfig;
-typedef vespa::config::content::core::internal::InternalStorVisitordispatcherType VisitorConfig;
+using DistributorConfig = vespa::config::content::core::internal::InternalStorDistributormanagerType;
+using VisitorConfig = vespa::config::content::core::internal::InternalStorVisitordispatcherType;
struct UniqueTimeCalculator {
- virtual ~UniqueTimeCalculator() {}
+ virtual ~UniqueTimeCalculator() = default;
[[nodiscard]] virtual api::Timestamp generate_unique_timestamp() = 0;
};
struct DistributorManagedComponent
{
- virtual ~DistributorManagedComponent() {}
+ virtual ~DistributorManagedComponent() = default;
virtual void setTimeCalculator(UniqueTimeCalculator&) = 0;
virtual void setDistributorConfig(const DistributorConfig&)= 0;
diff --git a/storage/src/vespa/storage/common/doneinitializehandler.h b/storage/src/vespa/storage/common/doneinitializehandler.h
index b9ea9165afa..41566f493b1 100644
--- a/storage/src/vespa/storage/common/doneinitializehandler.h
+++ b/storage/src/vespa/storage/common/doneinitializehandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::DoneInitializeHandler
*
diff --git a/storage/src/vespa/storage/common/global_bucket_space_distribution_converter.cpp b/storage/src/vespa/storage/common/global_bucket_space_distribution_converter.cpp
index 8db96e19b82..9f9bbf4992e 100644
--- a/storage/src/vespa/storage/common/global_bucket_space_distribution_converter.cpp
+++ b/storage/src/vespa/storage/common/global_bucket_space_distribution_converter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "global_bucket_space_distribution_converter.h"
#include <vespa/vdslib/distribution/distribution.h>
diff --git a/storage/src/vespa/storage/common/global_bucket_space_distribution_converter.h b/storage/src/vespa/storage/common/global_bucket_space_distribution_converter.h
index 2237aed406c..9efca576469 100644
--- a/storage/src/vespa/storage/common/global_bucket_space_distribution_converter.h
+++ b/storage/src/vespa/storage/common/global_bucket_space_distribution_converter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/common/hostreporter/CMakeLists.txt b/storage/src/vespa/storage/common/hostreporter/CMakeLists.txt
index 5c98e4fa7da..04006b3994b 100644
--- a/storage/src/vespa/storage/common/hostreporter/CMakeLists.txt
+++ b/storage/src/vespa/storage/common/hostreporter/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage_hostreporter OBJECT
SOURCES
hostinfo.cpp
diff --git a/storage/src/vespa/storage/common/hostreporter/hostinfo.cpp b/storage/src/vespa/storage/common/hostreporter/hostinfo.cpp
index 566bd5b21f8..f15885769e6 100644
--- a/storage/src/vespa/storage/common/hostreporter/hostinfo.cpp
+++ b/storage/src/vespa/storage/common/hostreporter/hostinfo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "hostinfo.h"
#include "hostreporter.h"
diff --git a/storage/src/vespa/storage/common/hostreporter/hostinfo.h b/storage/src/vespa/storage/common/hostreporter/hostinfo.h
index 61a220d55b0..b33375bba2e 100644
--- a/storage/src/vespa/storage/common/hostreporter/hostinfo.h
+++ b/storage/src/vespa/storage/common/hostreporter/hostinfo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/common/hostreporter/hostreporter.h b/storage/src/vespa/storage/common/hostreporter/hostreporter.h
index 87e8a21e078..115115328cc 100644
--- a/storage/src/vespa/storage/common/hostreporter/hostreporter.h
+++ b/storage/src/vespa/storage/common/hostreporter/hostreporter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/jsonstream.h>
diff --git a/storage/src/vespa/storage/common/hostreporter/kernelmetrictool.cpp b/storage/src/vespa/storage/common/hostreporter/kernelmetrictool.cpp
index aa985f282f1..d831a404654 100644
--- a/storage/src/vespa/storage/common/hostreporter/kernelmetrictool.cpp
+++ b/storage/src/vespa/storage/common/hostreporter/kernelmetrictool.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "kernelmetrictool.h"
#include <vespa/vespalib/io/fileutil.h>
diff --git a/storage/src/vespa/storage/common/hostreporter/kernelmetrictool.h b/storage/src/vespa/storage/common/hostreporter/kernelmetrictool.h
index 80a2b2738bc..df961c882e1 100644
--- a/storage/src/vespa/storage/common/hostreporter/kernelmetrictool.h
+++ b/storage/src/vespa/storage/common/hostreporter/kernelmetrictool.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* This file contains various tools for use by reporters when fetching os information.
*/
diff --git a/storage/src/vespa/storage/common/hostreporter/versionreporter.cpp b/storage/src/vespa/storage/common/hostreporter/versionreporter.cpp
index d1f7b2d81e7..20d19178684 100644
--- a/storage/src/vespa/storage/common/hostreporter/versionreporter.cpp
+++ b/storage/src/vespa/storage/common/hostreporter/versionreporter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "versionreporter.h"
#include <vespa/vespalib/component/vtag.h>
diff --git a/storage/src/vespa/storage/common/hostreporter/versionreporter.h b/storage/src/vespa/storage/common/hostreporter/versionreporter.h
index 138f31b0f8d..37b68aaf105 100644
--- a/storage/src/vespa/storage/common/hostreporter/versionreporter.h
+++ b/storage/src/vespa/storage/common/hostreporter/versionreporter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#ifndef STORAGE_SRC_CPP_STORAGE_COMMON_HOSTREPORTER_VERSIONREPORTER_H_
#define STORAGE_SRC_CPP_STORAGE_COMMON_HOSTREPORTER_VERSIONREPORTER_H_
diff --git a/storage/src/vespa/storage/common/i_storage_chain_builder.h b/storage/src/vespa/storage/common/i_storage_chain_builder.h
index 8f4708ad7ac..5276fa35070 100644
--- a/storage/src/vespa/storage/common/i_storage_chain_builder.h
+++ b/storage/src/vespa/storage/common/i_storage_chain_builder.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/common/messagebucket.cpp b/storage/src/vespa/storage/common/messagebucket.cpp
index 3aa90138f36..73b83936e98 100644
--- a/storage/src/vespa/storage/common/messagebucket.cpp
+++ b/storage/src/vespa/storage/common/messagebucket.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "messagebucket.h"
#include "statusmessages.h"
diff --git a/storage/src/vespa/storage/common/messagebucket.h b/storage/src/vespa/storage/common/messagebucket.h
index c383a14d541..b84c36bf08c 100644
--- a/storage/src/vespa/storage/common/messagebucket.h
+++ b/storage/src/vespa/storage/common/messagebucket.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/bucket/bucket.h>
diff --git a/storage/src/vespa/storage/common/messagesender.cpp b/storage/src/vespa/storage/common/messagesender.cpp
index 3dfbbb67d31..7d5a548d2f2 100644
--- a/storage/src/vespa/storage/common/messagesender.cpp
+++ b/storage/src/vespa/storage/common/messagesender.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "messagesender.h"
#include <vespa/storageapi/messageapi/storagemessage.h>
#include <vespa/storageapi/messageapi/storagereply.h>
diff --git a/storage/src/vespa/storage/common/messagesender.h b/storage/src/vespa/storage/common/messagesender.h
index 839dbcb91dc..57db86e2258 100644
--- a/storage/src/vespa/storage/common/messagesender.h
+++ b/storage/src/vespa/storage/common/messagesender.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::MessageSender
* @ingroup common
diff --git a/storage/src/vespa/storage/common/node_identity.cpp b/storage/src/vespa/storage/common/node_identity.cpp
index 2ad940b7b20..f517da8acfe 100644
--- a/storage/src/vespa/storage/common/node_identity.cpp
+++ b/storage/src/vespa/storage/common/node_identity.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "node_identity.h"
diff --git a/storage/src/vespa/storage/common/node_identity.h b/storage/src/vespa/storage/common/node_identity.h
index ea2edb98cdd..77399f78d0c 100644
--- a/storage/src/vespa/storage/common/node_identity.h
+++ b/storage/src/vespa/storage/common/node_identity.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/common/nodestateupdater.h b/storage/src/vespa/storage/common/nodestateupdater.h
index 17f193decb4..dd9840b22f6 100644
--- a/storage/src/vespa/storage/common/nodestateupdater.h
+++ b/storage/src/vespa/storage/common/nodestateupdater.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::NodeStateUpdater
* @ingroup common
diff --git a/storage/src/vespa/storage/common/reindexing_constants.cpp b/storage/src/vespa/storage/common/reindexing_constants.cpp
index 1c72f9a9d64..d4d27eb5d88 100644
--- a/storage/src/vespa/storage/common/reindexing_constants.cpp
+++ b/storage/src/vespa/storage/common/reindexing_constants.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "reindexing_constants.h"
namespace storage {
diff --git a/storage/src/vespa/storage/common/reindexing_constants.h b/storage/src/vespa/storage/common/reindexing_constants.h
index 7552ab332b1..91f45e44c86 100644
--- a/storage/src/vespa/storage/common/reindexing_constants.h
+++ b/storage/src/vespa/storage/common/reindexing_constants.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace storage {
diff --git a/storage/src/vespa/storage/common/servicelayercomponent.cpp b/storage/src/vespa/storage/common/servicelayercomponent.cpp
index b6cd9bc4aae..ca9fb3a45cb 100644
--- a/storage/src/vespa/storage/common/servicelayercomponent.cpp
+++ b/storage/src/vespa/storage/common/servicelayercomponent.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "servicelayercomponent.h"
diff --git a/storage/src/vespa/storage/common/servicelayercomponent.h b/storage/src/vespa/storage/common/servicelayercomponent.h
index 1f1e26dbee4..3eaec863aa5 100644
--- a/storage/src/vespa/storage/common/servicelayercomponent.h
+++ b/storage/src/vespa/storage/common/servicelayercomponent.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::ServiceLayerComponent
* \ingroup common
diff --git a/storage/src/vespa/storage/common/statusmessages.cpp b/storage/src/vespa/storage/common/statusmessages.cpp
index 6f825965a38..011ea30f86a 100644
--- a/storage/src/vespa/storage/common/statusmessages.cpp
+++ b/storage/src/vespa/storage/common/statusmessages.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "statusmessages.h"
#include <ostream>
diff --git a/storage/src/vespa/storage/common/statusmessages.h b/storage/src/vespa/storage/common/statusmessages.h
index 9fd68be7b62..336df137e41 100644
--- a/storage/src/vespa/storage/common/statusmessages.h
+++ b/storage/src/vespa/storage/common/statusmessages.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Internal command used by visitor and filestor framework to gather partial
* status from message processing threads.
diff --git a/storage/src/vespa/storage/common/statusmetricconsumer.cpp b/storage/src/vespa/storage/common/statusmetricconsumer.cpp
index 3dfa96cb0df..561d7cbdd6f 100644
--- a/storage/src/vespa/storage/common/statusmetricconsumer.cpp
+++ b/storage/src/vespa/storage/common/statusmetricconsumer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "statusmetricconsumer.h"
#include <boost/lexical_cast.hpp>
diff --git a/storage/src/vespa/storage/common/statusmetricconsumer.h b/storage/src/vespa/storage/common/statusmetricconsumer.h
index 8d38c72d162..3da6bd3151a 100644
--- a/storage/src/vespa/storage/common/statusmetricconsumer.h
+++ b/storage/src/vespa/storage/common/statusmetricconsumer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::StatusMetricConsumer
diff --git a/storage/src/vespa/storage/common/storage_chain_builder.cpp b/storage/src/vespa/storage/common/storage_chain_builder.cpp
index 45878f452cb..72961b5e855 100644
--- a/storage/src/vespa/storage/common/storage_chain_builder.cpp
+++ b/storage/src/vespa/storage/common/storage_chain_builder.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "storage_chain_builder.h"
#include "storagelink.h"
diff --git a/storage/src/vespa/storage/common/storage_chain_builder.h b/storage/src/vespa/storage/common/storage_chain_builder.h
index ce4087e0bd0..9d969ab354d 100644
--- a/storage/src/vespa/storage/common/storage_chain_builder.h
+++ b/storage/src/vespa/storage/common/storage_chain_builder.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/common/storagecomponent.cpp b/storage/src/vespa/storage/common/storagecomponent.cpp
index b0ccacf487b..e48368a89cd 100644
--- a/storage/src/vespa/storage/common/storagecomponent.cpp
+++ b/storage/src/vespa/storage/common/storagecomponent.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "storagecomponent.h"
#include <vespa/vespalib/util/exceptions.h>
diff --git a/storage/src/vespa/storage/common/storagecomponent.h b/storage/src/vespa/storage/common/storagecomponent.h
index 4fda62929e7..061d17fa031 100644
--- a/storage/src/vespa/storage/common/storagecomponent.h
+++ b/storage/src/vespa/storage/common/storagecomponent.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::StorageComponent
* \ingroup common
diff --git a/storage/src/vespa/storage/common/storagelink.cpp b/storage/src/vespa/storage/common/storagelink.cpp
index 8e889e5cc0b..b94ef03fad5 100644
--- a/storage/src/vespa/storage/common/storagelink.cpp
+++ b/storage/src/vespa/storage/common/storagelink.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "storagelink.h"
#include "bucketmessages.h"
diff --git a/storage/src/vespa/storage/common/storagelink.h b/storage/src/vespa/storage/common/storagelink.h
index ee6525c8288..2111dbadbc4 100644
--- a/storage/src/vespa/storage/common/storagelink.h
+++ b/storage/src/vespa/storage/common/storagelink.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::StorageLink
* @ingroup common
diff --git a/storage/src/vespa/storage/common/storagelinkqueued.cpp b/storage/src/vespa/storage/common/storagelinkqueued.cpp
index 036a1269958..2f116738c28 100644
--- a/storage/src/vespa/storage/common/storagelinkqueued.cpp
+++ b/storage/src/vespa/storage/common/storagelinkqueued.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "storagelinkqueued.hpp"
#include <vespa/log/log.h>
diff --git a/storage/src/vespa/storage/common/storagelinkqueued.h b/storage/src/vespa/storage/common/storagelinkqueued.h
index 25b6c4fd1b6..74434c0116b 100644
--- a/storage/src/vespa/storage/common/storagelinkqueued.h
+++ b/storage/src/vespa/storage/common/storagelinkqueued.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::StorageLinkQueued
* @ingroup common
diff --git a/storage/src/vespa/storage/common/storagelinkqueued.hpp b/storage/src/vespa/storage/common/storagelinkqueued.hpp
index d194adabb92..01b6ae4a370 100644
--- a/storage/src/vespa/storage/common/storagelinkqueued.hpp
+++ b/storage/src/vespa/storage/common/storagelinkqueued.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/common/vectorprinter.h b/storage/src/vespa/storage/common/vectorprinter.h
index 80aade5ec19..62daba9bd70 100644
--- a/storage/src/vespa/storage/common/vectorprinter.h
+++ b/storage/src/vespa/storage/common/vectorprinter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vector>
diff --git a/storage/src/vespa/storage/common/visitorfactory.h b/storage/src/vespa/storage/common/visitorfactory.h
index c77ca64102b..48b9dd6d15f 100644
--- a/storage/src/vespa/storage/common/visitorfactory.h
+++ b/storage/src/vespa/storage/common/visitorfactory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::VisitorFactory
*
diff --git a/storage/src/vespa/storage/config/CMakeLists.txt b/storage/src/vespa/storage/config/CMakeLists.txt
index 4a20d510043..58996592677 100644
--- a/storage/src/vespa/storage/config/CMakeLists.txt
+++ b/storage/src/vespa/storage/config/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage_storageconfig OBJECT
SOURCES
distributorconfiguration.cpp
diff --git a/storage/src/vespa/storage/config/distributorconfiguration.cpp b/storage/src/vespa/storage/config/distributorconfiguration.cpp
index 90fbb35d18d..6de3f5a4698 100644
--- a/storage/src/vespa/storage/config/distributorconfiguration.cpp
+++ b/storage/src/vespa/storage/config/distributorconfiguration.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "distributorconfiguration.h"
#include <vespa/document/select/parser.h>
#include <vespa/document/select/traversingvisitor.h>
diff --git a/storage/src/vespa/storage/config/distributorconfiguration.h b/storage/src/vespa/storage/config/distributorconfiguration.h
index 7aa10893b80..e50b2cf7771 100644
--- a/storage/src/vespa/storage/config/distributorconfiguration.h
+++ b/storage/src/vespa/storage/config/distributorconfiguration.h
@@ -1,8 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
-#include "config-stor-distributormanager.h"
-#include "config-stor-visitordispatcher.h"
+#include <vespa/storage/config/config-stor-distributormanager.h>
+#include <vespa/storage/config/config-stor-visitordispatcher.h>
#include <vespa/vespalib/stllike/hash_set.h>
#include <vespa/storage/common/storagecomponent.h>
#include <vespa/vespalib/util/time.h>
diff --git a/storage/src/vespa/storage/config/rpc-provider.def b/storage/src/vespa/storage/config/rpc-provider.def
index f54b0e00fe4..03e356fb6a3 100644
--- a/storage/src/vespa/storage/config/rpc-provider.def
+++ b/storage/src/vespa/storage/config/rpc-provider.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content.core
connectspec string default="tcp/localhost:17777" restart
diff --git a/storage/src/vespa/storage/config/stor-bouncer.def b/storage/src/vespa/storage/config/stor-bouncer.def
index 6af5ee078e9..0e409a5027d 100644
--- a/storage/src/vespa/storage/config/stor-bouncer.def
+++ b/storage/src/vespa/storage/config/stor-bouncer.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content.core
## Whether or not the bouncer should stop external load from
diff --git a/storage/src/vespa/storage/config/stor-bucketmover.def b/storage/src/vespa/storage/config/stor-bucketmover.def
index 1fc200f83ca..80192c37ed7 100644
--- a/storage/src/vespa/storage/config/stor-bucketmover.def
+++ b/storage/src/vespa/storage/config/stor-bucketmover.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content.core
## Minimum time between bucket database iterations in the bucket mover. The
diff --git a/storage/src/vespa/storage/config/stor-communicationmanager.def b/storage/src/vespa/storage/config/stor-communicationmanager.def
index 70b8d3ca2b7..65a3cd718ec 100644
--- a/storage/src/vespa/storage/config/stor-communicationmanager.def
+++ b/storage/src/vespa/storage/config/stor-communicationmanager.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content.core
mbusport int default=-1 restart
diff --git a/storage/src/vespa/storage/config/stor-distributormanager.def b/storage/src/vespa/storage/config/stor-distributormanager.def
index 887761ab3b5..3b324d6ddd2 100644
--- a/storage/src/vespa/storage/config/stor-distributormanager.def
+++ b/storage/src/vespa/storage/config/stor-distributormanager.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content.core
## Maximum number of ideal state operations scheduled by a distributor.
@@ -274,6 +274,9 @@ prioritize_global_bucket_merges bool default=true
## than 1.
max_activation_inhibited_out_of_sync_groups int default=0
-## TODO STRIPE document
-## If 0, legacy single stripe behavior is used. Currently supports 0 or 1.
+## Specifies the number of stripes over which a distributor internally distributes
+## its buckets and operation processing. Every stripe receives its own thread.
+## If <= 0, the number of stripes is inferred automatically based on the number of
+## CPU cores available. If > 0, the number of stripes is explicitly overridden.
+## Stripe counts must be a power of two.
num_distributor_stripes int default=0 restart
diff --git a/storage/src/vespa/storage/config/stor-integritychecker.def b/storage/src/vespa/storage/config/stor-integritychecker.def
index 657537ac015..80685cbb58f 100644
--- a/storage/src/vespa/storage/config/stor-integritychecker.def
+++ b/storage/src/vespa/storage/config/stor-integritychecker.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content.core
## Minutes after midnight when integrity checker is allowed to start running.
diff --git a/storage/src/vespa/storage/config/stor-messageforwarder.def b/storage/src/vespa/storage/config/stor-messageforwarder.def
index 4a3f481e659..b17e6ddae3b 100644
--- a/storage/src/vespa/storage/config/stor-messageforwarder.def
+++ b/storage/src/vespa/storage/config/stor-messageforwarder.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content.core
route string default="" restart
diff --git a/storage/src/vespa/storage/config/stor-opslogger.def b/storage/src/vespa/storage/config/stor-opslogger.def
index 3ba2c621427..581e6fe0aeb 100644
--- a/storage/src/vespa/storage/config/stor-opslogger.def
+++ b/storage/src/vespa/storage/config/stor-opslogger.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content.core
targetfile string default="" restart
diff --git a/storage/src/vespa/storage/config/stor-prioritymapping.def b/storage/src/vespa/storage/config/stor-prioritymapping.def
index decf4c68ee2..421d5216371 100644
--- a/storage/src/vespa/storage/config/stor-prioritymapping.def
+++ b/storage/src/vespa/storage/config/stor-prioritymapping.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content.core
highest int default=50
diff --git a/storage/src/vespa/storage/config/stor-server.def b/storage/src/vespa/storage/config/stor-server.def
index ceb25e099b2..6611c3cba91 100644
--- a/storage/src/vespa/storage/config/stor-server.def
+++ b/storage/src/vespa/storage/config/stor-server.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content.core
## Root directory for all files related to this storage node.
@@ -45,6 +45,14 @@ max_merge_queue_size int default=1024
## "source only", as merges do not cause mutations on such nodes.
resource_exhaustion_merge_back_pressure_duration_secs double default=30.0
+## If true, received merges that have already been accepted into the pending
+## merge window on at least one node will not be restricted by the configured
+## max_merge_queue_size limit. They will be allowed to enqueue regardless of
+## the current queue size. This avoids wasting the time spent being accepted
+## into merge windows, which would happen if the merge were to be bounced with
+## a busy-reply that would subsequently be unwound through the entire merge chain.
+disable_queue_limits_for_chained_merges bool default=false
+
## Whether the deadlock detector should be enabled or not. If disabled, it will
## still run, but it will never actually abort the process it is running in.
enable_dead_lock_detector bool default=false restart
diff --git a/storage/src/vespa/storage/config/stor-status.def b/storage/src/vespa/storage/config/stor-status.def
index 640a03299c2..f32617bb348 100644
--- a/storage/src/vespa/storage/config/stor-status.def
+++ b/storage/src/vespa/storage/config/stor-status.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content.core
httpport int default=0 restart
diff --git a/storage/src/vespa/storage/config/stor-visitordispatcher.def b/storage/src/vespa/storage/config/stor-visitordispatcher.def
index 2e418c97989..78d3f0ae093 100644
--- a/storage/src/vespa/storage/config/stor-visitordispatcher.def
+++ b/storage/src/vespa/storage/config/stor-visitordispatcher.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content.core
# For any given client visitor operation, this specifies a maximum fan-out
diff --git a/storage/src/vespa/storage/distributor/CMakeLists.txt b/storage/src/vespa/storage/distributor/CMakeLists.txt
index eba76c91af0..52171406ebf 100644
--- a/storage/src/vespa/storage/distributor/CMakeLists.txt
+++ b/storage/src/vespa/storage/distributor/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage_distributor
SOURCES
activecopy.cpp
@@ -8,12 +8,10 @@ vespa_add_library(storage_distributor
bucket_space_distribution_context.cpp
bucket_space_state_map.cpp
bucket_spaces_stats_provider.cpp
- bucketdbupdater.cpp
bucketgctimecalculator.cpp
bucketlistmerger.cpp
clusterinformation.cpp
crypto_uuid_generator.cpp
- distributor.cpp
distributor_bucket_space.cpp
distributor_bucket_space_repo.cpp
distributor_component.cpp
@@ -52,6 +50,8 @@ vespa_add_library(storage_distributor
statusreporterdelegate.cpp
stripe_bucket_db_updater.cpp
throttlingoperationstarter.cpp
+ top_level_bucket_db_updater.cpp
+ top_level_distributor.cpp
update_metric_set.cpp
visitormetricsset.cpp
$<TARGET_OBJECTS:storage_distributoroperation>
diff --git a/storage/src/vespa/storage/distributor/activecopy.cpp b/storage/src/vespa/storage/distributor/activecopy.cpp
index e1e88116921..71fcc77bd0b 100644
--- a/storage/src/vespa/storage/distributor/activecopy.cpp
+++ b/storage/src/vespa/storage/distributor/activecopy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "activecopy.h"
diff --git a/storage/src/vespa/storage/distributor/activecopy.h b/storage/src/vespa/storage/distributor/activecopy.h
index 7ad3649d738..ee679519a19 100644
--- a/storage/src/vespa/storage/distributor/activecopy.h
+++ b/storage/src/vespa/storage/distributor/activecopy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/distributor/blockingoperationstarter.cpp b/storage/src/vespa/storage/distributor/blockingoperationstarter.cpp
index e9b53e35b61..be0d2cd55f2 100644
--- a/storage/src/vespa/storage/distributor/blockingoperationstarter.cpp
+++ b/storage/src/vespa/storage/distributor/blockingoperationstarter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "blockingoperationstarter.h"
diff --git a/storage/src/vespa/storage/distributor/blockingoperationstarter.h b/storage/src/vespa/storage/distributor/blockingoperationstarter.h
index 180e617d08d..fd35a8e4ec8 100644
--- a/storage/src/vespa/storage/distributor/blockingoperationstarter.h
+++ b/storage/src/vespa/storage/distributor/blockingoperationstarter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "operationstarter.h"
diff --git a/storage/src/vespa/storage/distributor/bucket_ownership_flags.h b/storage/src/vespa/storage/distributor/bucket_ownership_flags.h
index 8745309595e..a72aa33265e 100644
--- a/storage/src/vespa/storage/distributor/bucket_ownership_flags.h
+++ b/storage/src/vespa/storage/distributor/bucket_ownership_flags.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdint>
diff --git a/storage/src/vespa/storage/distributor/bucket_space_distribution_configs.cpp b/storage/src/vespa/storage/distributor/bucket_space_distribution_configs.cpp
index da5769411d4..e20703c3232 100644
--- a/storage/src/vespa/storage/distributor/bucket_space_distribution_configs.cpp
+++ b/storage/src/vespa/storage/distributor/bucket_space_distribution_configs.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucket_space_distribution_configs.h"
#include <vespa/document/bucket/fixed_bucket_spaces.h>
#include <vespa/storage/common/global_bucket_space_distribution_converter.h>
diff --git a/storage/src/vespa/storage/distributor/bucket_space_distribution_configs.h b/storage/src/vespa/storage/distributor/bucket_space_distribution_configs.h
index 9ebd8ef9732..09ae2b6f659 100644
--- a/storage/src/vespa/storage/distributor/bucket_space_distribution_configs.h
+++ b/storage/src/vespa/storage/distributor/bucket_space_distribution_configs.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/bucket/bucketspace.h>
diff --git a/storage/src/vespa/storage/distributor/bucket_space_state_map.cpp b/storage/src/vespa/storage/distributor/bucket_space_state_map.cpp
index 63c408f7e1e..3caf8801577 100644
--- a/storage/src/vespa/storage/distributor/bucket_space_state_map.cpp
+++ b/storage/src/vespa/storage/distributor/bucket_space_state_map.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucket_space_state_map.h"
#include <vespa/document/bucket/fixed_bucket_spaces.h>
@@ -32,6 +32,22 @@ BucketSpaceStateMap::BucketSpaceStateMap()
_map.emplace(document::FixedBucketSpaces::global_space(), std::make_unique<BucketSpaceState>());
}
+const BucketSpaceState&
+BucketSpaceStateMap::get(document::BucketSpace space) const
+{
+ auto itr = _map.find(space);
+ assert(itr != _map.end());
+ return *itr->second;
+}
+
+BucketSpaceState&
+BucketSpaceStateMap::get(document::BucketSpace space)
+{
+ auto itr = _map.find(space);
+ assert(itr != _map.end());
+ return *itr->second;
+}
+
void
BucketSpaceStateMap::set_cluster_state(std::shared_ptr<const lib::ClusterState> cluster_state)
{
diff --git a/storage/src/vespa/storage/distributor/bucket_space_state_map.h b/storage/src/vespa/storage/distributor/bucket_space_state_map.h
index 57eac9eac0d..28990fbd3dc 100644
--- a/storage/src/vespa/storage/distributor/bucket_space_state_map.h
+++ b/storage/src/vespa/storage/distributor/bucket_space_state_map.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/bucket/bucketspace.h>
@@ -16,7 +16,6 @@ namespace storage::distributor {
/**
* Represents cluster state and distribution for a given bucket space.
- * TODO STRIPE: Make DistributorBucketSpace inherit this class.
*/
class BucketSpaceState {
private:
@@ -64,6 +63,9 @@ public:
StateMap::const_iterator begin() const { return _map.begin(); }
StateMap::const_iterator end() const { return _map.end(); }
+ const BucketSpaceState& get(document::BucketSpace space) const;
+ BucketSpaceState& get(document::BucketSpace space);
+
void set_cluster_state(std::shared_ptr<const lib::ClusterState> cluster_state);
void set_distribution(std::shared_ptr<const lib::Distribution> distribution);
diff --git a/storage/src/vespa/storage/distributor/bucket_spaces_stats_provider.cpp b/storage/src/vespa/storage/distributor/bucket_spaces_stats_provider.cpp
index 2b12d437aaa..29525be7403 100644
--- a/storage/src/vespa/storage/distributor/bucket_spaces_stats_provider.cpp
+++ b/storage/src/vespa/storage/distributor/bucket_spaces_stats_provider.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucket_spaces_stats_provider.h"
diff --git a/storage/src/vespa/storage/distributor/bucket_spaces_stats_provider.h b/storage/src/vespa/storage/distributor/bucket_spaces_stats_provider.h
index c8ba04ed1ab..eee56d92576 100644
--- a/storage/src/vespa/storage/distributor/bucket_spaces_stats_provider.h
+++ b/storage/src/vespa/storage/distributor/bucket_spaces_stats_provider.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/storage/src/vespa/storage/distributor/bucketdb/CMakeLists.txt b/storage/src/vespa/storage/distributor/bucketdb/CMakeLists.txt
index baa4073a76f..2a01c0237ff 100644
--- a/storage/src/vespa/storage/distributor/bucketdb/CMakeLists.txt
+++ b/storage/src/vespa/storage/distributor/bucketdb/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage_distributor_bucketdb OBJECT
SOURCES
bucketdbmetricupdater.cpp
diff --git a/storage/src/vespa/storage/distributor/bucketdb/bucketdbmetricupdater.cpp b/storage/src/vespa/storage/distributor/bucketdb/bucketdbmetricupdater.cpp
index 51eda0f948b..fc6c957b737 100644
--- a/storage/src/vespa/storage/distributor/bucketdb/bucketdbmetricupdater.cpp
+++ b/storage/src/vespa/storage/distributor/bucketdb/bucketdbmetricupdater.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketdbmetricupdater.h"
#include <vespa/storage/distributor/distributormetricsset.h>
diff --git a/storage/src/vespa/storage/distributor/bucketdb/bucketdbmetricupdater.h b/storage/src/vespa/storage/distributor/bucketdb/bucketdbmetricupdater.h
index 766307f49c2..2edb86cbaa2 100644
--- a/storage/src/vespa/storage/distributor/bucketdb/bucketdbmetricupdater.h
+++ b/storage/src/vespa/storage/distributor/bucketdb/bucketdbmetricupdater.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/distributor/bucketgctimecalculator.cpp b/storage/src/vespa/storage/distributor/bucketgctimecalculator.cpp
index a066f421236..792530514b5 100644
--- a/storage/src/vespa/storage/distributor/bucketgctimecalculator.cpp
+++ b/storage/src/vespa/storage/distributor/bucketgctimecalculator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketgctimecalculator.h"
diff --git a/storage/src/vespa/storage/distributor/bucketgctimecalculator.h b/storage/src/vespa/storage/distributor/bucketgctimecalculator.h
index 4ff85e568c8..201173c661a 100644
--- a/storage/src/vespa/storage/distributor/bucketgctimecalculator.h
+++ b/storage/src/vespa/storage/distributor/bucketgctimecalculator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <chrono>
diff --git a/storage/src/vespa/storage/distributor/bucketlistmerger.cpp b/storage/src/vespa/storage/distributor/bucketlistmerger.cpp
index fcb6ba2e862..b5d30547e40 100644
--- a/storage/src/vespa/storage/distributor/bucketlistmerger.cpp
+++ b/storage/src/vespa/storage/distributor/bucketlistmerger.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketlistmerger.h"
diff --git a/storage/src/vespa/storage/distributor/bucketlistmerger.h b/storage/src/vespa/storage/distributor/bucketlistmerger.h
index 1db2bc55f5c..670c6804a77 100644
--- a/storage/src/vespa/storage/distributor/bucketlistmerger.h
+++ b/storage/src/vespa/storage/distributor/bucketlistmerger.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/bucket/bucketid.h>
diff --git a/storage/src/vespa/storage/distributor/bucketownership.h b/storage/src/vespa/storage/distributor/bucketownership.h
index 4b1e7b22be1..46b38b46bf7 100644
--- a/storage/src/vespa/storage/distributor/bucketownership.h
+++ b/storage/src/vespa/storage/distributor/bucketownership.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cassert>
diff --git a/storage/src/vespa/storage/distributor/cluster_state_bundle_activation_listener.h b/storage/src/vespa/storage/distributor/cluster_state_bundle_activation_listener.h
new file mode 100644
index 00000000000..7bdd9b91bc1
--- /dev/null
+++ b/storage/src/vespa/storage/distributor/cluster_state_bundle_activation_listener.h
@@ -0,0 +1,24 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+namespace storage::lib { class ClusterStateBundle; }
+
+namespace storage::distributor {
+
+/**
+ * Listener where on_cluster_state_bundle_activated() is invoked by the top-level
+ * bucket DB updater component upon a cluster state activation edge.
+ *
+ * Thread/concurrency note: this listener is always invoked from the top-level
+ * distributor thread and in a context where all stripe threads are paused.
+ * This means the callee must not directly or indirectly try to pause stripe
+ * threads itself, but it may safely modify shared state since no stripe threads
+ * are active.
+ */
+class ClusterStateBundleActivationListener {
+public:
+ virtual ~ClusterStateBundleActivationListener() = default;
+ virtual void on_cluster_state_bundle_activated(const lib::ClusterStateBundle&,
+ bool has_bucket_ownership_transfer) = 0;
+};
+
+}
diff --git a/storage/src/vespa/storage/distributor/clusterinformation.cpp b/storage/src/vespa/storage/distributor/clusterinformation.cpp
index 96e94c92819..c9f9723bef6 100644
--- a/storage/src/vespa/storage/distributor/clusterinformation.cpp
+++ b/storage/src/vespa/storage/distributor/clusterinformation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "clusterinformation.h"
#include <vespa/vdslib/distribution/distribution.h>
diff --git a/storage/src/vespa/storage/distributor/clusterinformation.h b/storage/src/vespa/storage/distributor/clusterinformation.h
index feb88008f7d..21da0a9918a 100644
--- a/storage/src/vespa/storage/distributor/clusterinformation.h
+++ b/storage/src/vespa/storage/distributor/clusterinformation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/bucket/bucketid.h>
diff --git a/storage/src/vespa/storage/distributor/crypto_uuid_generator.cpp b/storage/src/vespa/storage/distributor/crypto_uuid_generator.cpp
index 3f9ab0b529d..44255bb4d1f 100644
--- a/storage/src/vespa/storage/distributor/crypto_uuid_generator.cpp
+++ b/storage/src/vespa/storage/distributor/crypto_uuid_generator.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "crypto_uuid_generator.h"
#include <vespa/vespalib/crypto/random.h>
diff --git a/storage/src/vespa/storage/distributor/crypto_uuid_generator.h b/storage/src/vespa/storage/distributor/crypto_uuid_generator.h
index 40d2bd732b7..226faa4c4c7 100644
--- a/storage/src/vespa/storage/distributor/crypto_uuid_generator.h
+++ b/storage/src/vespa/storage/distributor/crypto_uuid_generator.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "uuid_generator.h"
diff --git a/storage/src/vespa/storage/distributor/delegatedstatusrequest.h b/storage/src/vespa/storage/distributor/delegatedstatusrequest.h
index c3d2a70ee8b..7760294e589 100644
--- a/storage/src/vespa/storage/distributor/delegatedstatusrequest.h
+++ b/storage/src/vespa/storage/distributor/delegatedstatusrequest.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storageframework/generic/status/statusreporter.h>
diff --git a/storage/src/vespa/storage/distributor/distributor.cpp b/storage/src/vespa/storage/distributor/distributor.cpp
deleted file mode 100644
index 6f9cbf3b0f2..00000000000
--- a/storage/src/vespa/storage/distributor/distributor.cpp
+++ /dev/null
@@ -1,826 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-//
-#include "blockingoperationstarter.h"
-#include "bucket_space_distribution_configs.h"
-#include "bucketdbupdater.h"
-#include "distributor.h"
-#include "distributor_bucket_space.h"
-#include "distributor_status.h"
-#include "distributor_stripe.h"
-#include "distributor_stripe_pool.h"
-#include "distributor_stripe_thread.h"
-#include "distributor_total_metrics.h"
-#include "idealstatemetricsset.h"
-#include "multi_threaded_stripe_access_guard.h"
-#include "operation_sequencer.h"
-#include "ownership_transfer_safe_time_point_calculator.h"
-#include "throttlingoperationstarter.h"
-#include <vespa/document/bucket/fixed_bucket_spaces.h>
-#include <vespa/storage/common/bucket_stripe_utils.h>
-#include <vespa/storage/common/global_bucket_space_distribution_converter.h>
-#include <vespa/storage/common/hostreporter/hostinfo.h>
-#include <vespa/storage/common/node_identity.h>
-#include <vespa/storage/common/nodestateupdater.h>
-#include <vespa/storage/config/distributorconfiguration.h>
-#include <vespa/storage/distributor/maintenance/simplebucketprioritydatabase.h>
-#include <vespa/storageapi/message/persistence.h>
-#include <vespa/storageapi/message/visitor.h>
-#include <vespa/storageframework/generic/status/xmlstatusreporter.h>
-#include <vespa/vdslib/distribution/distribution.h>
-#include <vespa/vespalib/util/memoryusage.h>
-#include <vespa/vespalib/util/time.h>
-#include <algorithm>
-
-#include <vespa/log/log.h>
-LOG_SETUP(".distributor-main");
-
-using namespace std::chrono_literals;
-
-namespace storage::distributor {
-
-/* TODO STRIPE
- * - need a DistributorStripeComponent per stripe
- * - or better, remove entirely!
- * - probably also DistributorStripeInterface since it's used to send
- * - metrics aggregation
- * - host info aggregation..!!
- * - handled if Distributor getMinReplica etc delegates to stripes?
- * - these are already thread safe
- * - status aggregation
- */
-Distributor::Distributor(DistributorComponentRegister& compReg,
- const NodeIdentity& node_identity,
- framework::TickingThreadPool& threadPool,
- DistributorStripePool& stripe_pool,
- DoneInitializeHandler& doneInitHandler,
- uint32_t num_distributor_stripes,
- HostInfo& hostInfoReporterRegistrar,
- ChainedMessageSender* messageSender)
- : StorageLink("distributor"),
- framework::StatusReporter("distributor", "Distributor"),
- _comp_reg(compReg),
- _use_legacy_mode(num_distributor_stripes == 0),
- _metrics(std::make_shared<DistributorMetricSet>()),
- _total_metrics(_use_legacy_mode ? std::shared_ptr<DistributorTotalMetrics>() :
- std::make_shared<DistributorTotalMetrics>(num_distributor_stripes)),
- _ideal_state_metrics(_use_legacy_mode ? std::make_shared<IdealStateMetricSet>() : std::shared_ptr<IdealStateMetricSet>()),
- _ideal_state_total_metrics(_use_legacy_mode ? std::shared_ptr<IdealStateTotalMetrics>() :
- std::make_shared<IdealStateTotalMetrics>(num_distributor_stripes)),
- _messageSender(messageSender),
- _n_stripe_bits(0),
- _stripe(std::make_unique<DistributorStripe>(compReg,
- _use_legacy_mode ? *_metrics : _total_metrics->stripe(0),
- _use_legacy_mode ? *_ideal_state_metrics : _ideal_state_total_metrics->stripe(0),
- node_identity, threadPool,
- doneInitHandler, *this, *this, _use_legacy_mode)),
- _stripe_pool(stripe_pool),
- _stripes(),
- _stripe_accessor(),
- _random_stripe_gen(),
- _random_stripe_gen_mutex(),
- _message_queue(),
- _fetched_messages(),
- _component(*this, compReg, "distributor"),
- _ideal_state_component(compReg, "Ideal state manager"),
- _total_config(_component.total_distributor_config_sp()),
- _bucket_db_updater(),
- _distributorStatusDelegate(compReg, *this, *this),
- _bucket_db_status_delegate(),
- _threadPool(threadPool),
- _status_to_do(),
- _fetched_status_requests(),
- _stripe_scan_notify_mutex(),
- _stripe_scan_stats(),
- _last_host_info_send_time(),
- _host_info_send_delay(1000ms),
- _tickResult(framework::ThreadWaitInfo::NO_MORE_CRITICAL_WORK_KNOWN),
- _metricUpdateHook(*this),
- _hostInfoReporter(*this, *this),
- _distribution(),
- _next_distribution(),
- _current_internal_config_generation(_component.internal_config_generation())
-{
- _component.registerMetric(_use_legacy_mode ? *_metrics : *_total_metrics);
- _ideal_state_component.registerMetric(_use_legacy_mode ? *_ideal_state_metrics :
- *_ideal_state_total_metrics);
- _component.registerMetricUpdateHook(_metricUpdateHook, framework::SecondTime(0));
- if (!_use_legacy_mode) {
- assert(num_distributor_stripes == adjusted_num_stripes(num_distributor_stripes));
- _n_stripe_bits = calc_num_stripe_bits(num_distributor_stripes);
- LOG(info, "Setting up distributor with %u stripes using %u stripe bits",
- num_distributor_stripes, _n_stripe_bits); // TODO STRIPE remove once legacy gone
- _stripe_accessor = std::make_unique<MultiThreadedStripeAccessor>(_stripe_pool);
- _bucket_db_updater = std::make_unique<BucketDBUpdater>(_component, _component,
- *this, *this,
- _component.getDistribution(),
- *_stripe_accessor);
- _stripes.emplace_back(std::move(_stripe));
- for (size_t i = 1; i < num_distributor_stripes; ++i) {
- _stripes.emplace_back(std::make_unique<DistributorStripe>(compReg,
- _total_metrics->stripe(i),
- _ideal_state_total_metrics->stripe(i),
- node_identity, threadPool,
- doneInitHandler, *this, *this, _use_legacy_mode, i));
- }
- _stripe_scan_stats.resize(num_distributor_stripes);
- _distributorStatusDelegate.registerStatusPage();
- _bucket_db_status_delegate = std::make_unique<StatusReporterDelegate>(compReg, *this, *_bucket_db_updater);
- _bucket_db_status_delegate->registerStatusPage();
- }
- _hostInfoReporter.enableReporting(config().getEnableHostInfoReporting());
- hostInfoReporterRegistrar.registerReporter(&_hostInfoReporter);
- propagateDefaultDistribution(_component.getDistribution());
-};
-
-Distributor::~Distributor()
-{
- // XXX: why is there no _component.unregisterMetricUpdateHook()?
- closeNextLink();
-}
-
-DistributorMetricSet&
-Distributor::getMetrics()
-{
- return _use_legacy_mode ? *_metrics : _total_metrics->bucket_db_updater_metrics();
-}
-
-// TODO STRIPE figure out how to handle inspection functions used by tests when legacy mode no longer exists.
-// All functions below that assert on _use_legacy_mode are only currently used by tests
-
-bool
-Distributor::isInRecoveryMode() const noexcept {
- assert(_use_legacy_mode); // TODO STRIPE
- return _stripe->isInRecoveryMode();
-}
-
-const PendingMessageTracker&
-Distributor::getPendingMessageTracker() const {
- assert(_use_legacy_mode); // TODO STRIPE
- return _stripe->getPendingMessageTracker();
-}
-
-PendingMessageTracker&
-Distributor::getPendingMessageTracker() {
- assert(_use_legacy_mode); // TODO STRIPE
- return _stripe->getPendingMessageTracker();
-}
-
-DistributorBucketSpaceRepo&
-Distributor::getBucketSpaceRepo() noexcept {
- assert(_use_legacy_mode); // TODO STRIPE
- return _stripe->getBucketSpaceRepo();
-}
-
-const DistributorBucketSpaceRepo&
-Distributor::getBucketSpaceRepo() const noexcept {
- assert(_use_legacy_mode); // TODO STRIPE
- return _stripe->getBucketSpaceRepo();
-}
-
-DistributorBucketSpaceRepo&
-Distributor::getReadOnlyBucketSpaceRepo() noexcept {
- assert(_use_legacy_mode); // TODO STRIPE
- return _stripe->getReadOnlyBucketSpaceRepo();
-}
-
-const DistributorBucketSpaceRepo&
-Distributor::getReadyOnlyBucketSpaceRepo() const noexcept {
- assert(_use_legacy_mode); // TODO STRIPE
- return _stripe->getReadOnlyBucketSpaceRepo();;
-}
-
-storage::distributor::DistributorStripeComponent&
-Distributor::distributor_component() noexcept {
- assert(_use_legacy_mode); // TODO STRIPE
- // TODO STRIPE We need to grab the stripe's component since tests like to access
- // these things uncomfortably directly.
- return _stripe->_component;
-}
-
-StripeBucketDBUpdater&
-Distributor::bucket_db_updater() {
- assert(_use_legacy_mode); // TODO STRIPE
- return _stripe->bucket_db_updater();
-}
-
-const StripeBucketDBUpdater&
-Distributor::bucket_db_updater() const {
- assert(_use_legacy_mode); // TODO STRIPE
- return _stripe->bucket_db_updater();
-}
-
-IdealStateManager&
-Distributor::ideal_state_manager() {
- assert(_use_legacy_mode); // TODO STRIPE
- return _stripe->ideal_state_manager();
-}
-
-const IdealStateManager&
-Distributor::ideal_state_manager() const {
- assert(_use_legacy_mode); // TODO STRIPE
- return _stripe->ideal_state_manager();
-}
-
-ExternalOperationHandler&
-Distributor::external_operation_handler() {
- assert(_use_legacy_mode); // TODO STRIPE
- return _stripe->external_operation_handler();
-}
-
-const ExternalOperationHandler&
-Distributor::external_operation_handler() const {
- assert(_use_legacy_mode); // TODO STRIPE
- return _stripe->external_operation_handler();
-}
-
-BucketDBMetricUpdater&
-Distributor::bucket_db_metric_updater() const noexcept {
- assert(_use_legacy_mode); // TODO STRIPE
- return _stripe->_bucketDBMetricUpdater;
-}
-
-const DistributorConfiguration&
-Distributor::getConfig() const {
- assert(_use_legacy_mode); // TODO STRIPE
- return _stripe->getConfig();
-}
-
-std::chrono::steady_clock::duration
-Distributor::db_memory_sample_interval() const noexcept {
- assert(_use_legacy_mode); // TODO STRIPE
- return _stripe->db_memory_sample_interval();
-}
-
-void
-Distributor::setNodeStateUp()
-{
- NodeStateUpdater::Lock::SP lock(_component.getStateUpdater().grabStateChangeLock());
- lib::NodeState ns(*_component.getStateUpdater().getReportedNodeState());
- ns.setState(lib::State::UP);
- _component.getStateUpdater().setReportedNodeState(ns);
-}
-
-void
-Distributor::onOpen()
-{
- LOG(debug, "Distributor::onOpen invoked");
- setNodeStateUp();
- framework::MilliSecTime maxProcessingTime(60 * 1000);
- framework::MilliSecTime waitTime(1000);
- if (_component.getDistributorConfig().startDistributorThread) {
- _threadPool.addThread(*this);
- _threadPool.start(_component.getThreadPool());
- if (!_use_legacy_mode) {
- std::vector<TickableStripe*> pool_stripes;
- for (auto& stripe : _stripes) {
- pool_stripes.push_back(stripe.get());
- }
- _stripe_pool.start(pool_stripes);
- }
- } else {
- LOG(warning, "Not starting distributor thread as it's configured to "
- "run. Unless you are just running a test tool, this is a "
- "fatal error.");
- }
-}
-
-void Distributor::onClose() {
- // Note: In a running system this function is called by the main thread in StorageApp as part of shutdown.
- // The distributor and stripe thread pools are already stopped at this point.
- LOG(debug, "Distributor::onClose invoked");
- if (_use_legacy_mode) {
- _stripe->flush_and_close();
- } else {
- // Tests may run with multiple stripes but without threads (for determinism's sake),
- // so only try to flush stripes if a pool is running.
- // TODO STRIPE probably also need to flush when running tests to handle any explicit close-tests.
- if (_stripe_pool.stripe_count() > 0) {
- assert(_stripe_pool.is_stopped());
- for (auto& thread : _stripe_pool) {
- thread->stripe().flush_and_close();
- }
- }
- assert(_bucket_db_updater);
- _bucket_db_updater->flush();
- }
-}
-
-void
-Distributor::sendUp(const std::shared_ptr<api::StorageMessage>& msg)
-{
- if (_messageSender) {
- _messageSender->sendUp(msg);
- } else {
- StorageLink::sendUp(msg);
- }
-}
-
-void
-Distributor::sendDown(const std::shared_ptr<api::StorageMessage>& msg)
-{
- if (_messageSender) {
- _messageSender->sendDown(msg);
- } else {
- StorageLink::sendDown(msg);
- }
-}
-
-namespace {
-
-bool should_be_handled_by_top_level_bucket_db_updater(const api::StorageMessage& msg) noexcept {
- switch (msg.getType().getId()) {
- case api::MessageType::SETSYSTEMSTATE_ID:
- case api::MessageType::GETNODESTATE_ID:
- case api::MessageType::ACTIVATE_CLUSTER_STATE_VERSION_ID:
- return true;
- case api::MessageType::REQUESTBUCKETINFO_REPLY_ID:
- // Top-level component should only handle replies for full bucket info fetches.
- // Bucket-specific requests should go to the stripes that sent them.
- return dynamic_cast<const api::RequestBucketInfoReply&>(msg).full_bucket_fetch();
- default:
- return false;
- }
-}
-
-document::BucketId
-get_bucket_id_for_striping(const api::StorageMessage& msg, const DistributorNodeContext& node_ctx)
-{
- if (!msg.getBucketId().isSet()) {
- // Calculate a bucket id (dependent on the message type) to dispatch the message to the correct distributor stripe.
- switch (msg.getType().getId()) {
- case api::MessageType::PUT_ID:
- case api::MessageType::UPDATE_ID:
- case api::MessageType::REMOVE_ID:
- return node_ctx.bucket_id_factory().getBucketId(dynamic_cast<const api::TestAndSetCommand&>(msg).getDocumentId());
- case api::MessageType::REQUESTBUCKETINFO_REPLY_ID:
- return dynamic_cast<const api::RequestBucketInfoReply&>(msg).super_bucket_id();
- case api::MessageType::GET_ID:
- return node_ctx.bucket_id_factory().getBucketId(dynamic_cast<const api::GetCommand&>(msg).getDocumentId());
- case api::MessageType::VISITOR_CREATE_ID:
- return dynamic_cast<const api::CreateVisitorCommand&>(msg).super_bucket_id();
- case api::MessageType::VISITOR_CREATE_REPLY_ID:
- return dynamic_cast<const api::CreateVisitorReply&>(msg).super_bucket_id();
- default:
- return msg.getBucketId();
- }
- }
- return msg.getBucketId();
-}
-
-}
-
-uint32_t
-Distributor::random_stripe_idx()
-{
- std::lock_guard lock(_random_stripe_gen_mutex);
- return _random_stripe_gen.nextUint32() % _stripes.size();
-}
-
-uint32_t
-Distributor::stripe_of_bucket_id(const document::BucketId& bucket_id, const api::StorageMessage& msg)
-{
- if (!bucket_id.isSet()) {
- LOG(error, "Message (%s) has a bucket id (%s) that is not set. Cannot route to stripe",
- msg.toString(true).c_str(), bucket_id.toString().c_str());
- }
- assert(bucket_id.isSet());
- if (bucket_id.getUsedBits() < spi::BucketLimits::MinUsedBits) {
- if (msg.getType().getId() == api::MessageType::VISITOR_CREATE_ID) {
- // This message will eventually be bounced with api::ReturnCode::WRONG_DISTRIBUTION,
- // so we can just route it to a random distributor stripe.
- return random_stripe_idx();
- }
- }
- return storage::stripe_of_bucket_key(bucket_id.toKey(), _n_stripe_bits);
-}
-
-bool
-Distributor::onDown(const std::shared_ptr<api::StorageMessage>& msg)
-{
- // TODO STRIPE can we route both requests and responses that are BucketCommand|Reply based on their bucket alone?
- // that covers most operations already...
- if (_use_legacy_mode) {
- return _stripe->handle_or_enqueue_message(msg);
- } else {
- if (should_be_handled_by_top_level_bucket_db_updater(*msg)) {
- dispatch_to_main_distributor_thread_queue(msg);
- return true;
- }
- auto bucket_id = get_bucket_id_for_striping(*msg, _component);
- uint32_t stripe_idx = stripe_of_bucket_id(bucket_id, *msg);
- MBUS_TRACE(msg->getTrace(), 9,
- vespalib::make_string("Distributor::onDown(): Dispatch message to stripe %u", stripe_idx));
- bool handled = _stripes[stripe_idx]->handle_or_enqueue_message(msg);
- if (handled) {
- _stripe_pool.stripe_thread(stripe_idx).notify_event_has_triggered();
- }
- return handled;
- }
-}
-
-bool
-Distributor::handleReply(const std::shared_ptr<api::StorageReply>& reply)
-{
- // TODO STRIPE this is used by tests. Do we need to invoke top-level BucketDBUpdater for any of them?
- assert(_use_legacy_mode);
- return _stripe->handleReply(reply);
-}
-
-// TODO STRIPE we need to reintroduce the top-level message queue...
-bool
-Distributor::handleMessage(const std::shared_ptr<api::StorageMessage>& msg)
-{
- assert(_use_legacy_mode); // TODO STRIPE
- return _stripe->handleMessage(msg);
-}
-
-const DistributorConfiguration&
-Distributor::config() const
-{
- return *_total_config;
-}
-
-void
-Distributor::sendCommand(const std::shared_ptr<api::StorageCommand>& cmd)
-{
- sendUp(cmd);
-}
-
-void
-Distributor::sendReply(const std::shared_ptr<api::StorageReply>& reply)
-{
- sendUp(reply);
-}
-
-const lib::ClusterStateBundle&
-Distributor::getClusterStateBundle() const
-{
- assert(_use_legacy_mode); // TODO STRIPE
- // TODO STRIPE must offer a single unifying state across stripes
- return _stripe->getClusterStateBundle();
-}
-
-void
-Distributor::enableClusterStateBundle(const lib::ClusterStateBundle& state)
-{
- assert(_use_legacy_mode); // TODO STRIPE
- // TODO STRIPE make test injection/force-function
- _stripe->enableClusterStateBundle(state);
-}
-
-void
-Distributor::storageDistributionChanged()
-{
- if (!_use_legacy_mode) {
- if (!_distribution || (*_component.getDistribution() != *_distribution)) {
- LOG(debug, "Distribution changed to %s, must re-fetch bucket information",
- _component.getDistribution()->toString().c_str());
- _next_distribution = _component.getDistribution(); // FIXME this is not thread safe
- } else {
- LOG(debug, "Got distribution change, but the distribution %s was the same as before: %s",
- _component.getDistribution()->toString().c_str(),
- _distribution->toString().c_str());
- }
- } else {
- // May happen from any thread.
- _stripe->storage_distribution_changed();
- }
-}
-
-void
-Distributor::enableNextDistribution()
-{
- if (!_use_legacy_mode) {
- if (_next_distribution) {
- _distribution = _next_distribution;
- _next_distribution = std::shared_ptr<lib::Distribution>();
- auto new_configs = BucketSpaceDistributionConfigs::from_default_distribution(_distribution);
- _bucket_db_updater->storage_distribution_changed(new_configs);
- }
- } else {
- _stripe->enableNextDistribution();
- }
-}
-
-// TODO STRIPE only used by tests to directly inject new distribution config
-// - actually, also by ctor
-void
-Distributor::propagateDefaultDistribution(
- std::shared_ptr<const lib::Distribution> distribution)
-{
- // TODO STRIPE cannot directly access stripe when not in legacy mode!
- if (_use_legacy_mode) {
- _stripe->propagateDefaultDistribution(std::move(distribution));
- } else {
- // Should only be called at ctor time, at which point the pool is not yet running.
- assert(_stripe_pool.stripe_count() == 0);
- auto new_configs = BucketSpaceDistributionConfigs::from_default_distribution(std::move(distribution));
- for (auto& stripe : _stripes) {
- stripe->update_distribution_config(new_configs);
- }
- }
-}
-
-std::unordered_map<uint16_t, uint32_t>
-Distributor::getMinReplica() const
-{
- if (_use_legacy_mode) {
- return _stripe->getMinReplica();
- } else {
- std::unordered_map<uint16_t, uint32_t> result;
- for (const auto& stripe : _stripes) {
- merge_min_replica_stats(result, stripe->getMinReplica());
- }
- return result;
- }
-}
-
-BucketSpacesStatsProvider::PerNodeBucketSpacesStats
-Distributor::getBucketSpacesStats() const
-{
- if (_use_legacy_mode) {
- return _stripe->getBucketSpacesStats();
- } else {
- BucketSpacesStatsProvider::PerNodeBucketSpacesStats result;
- for (const auto& stripe : _stripes) {
- merge_per_node_bucket_spaces_stats(result, stripe->getBucketSpacesStats());
- }
- return result;
- }
-}
-
-SimpleMaintenanceScanner::PendingMaintenanceStats
-Distributor::pending_maintenance_stats() const {
- if (_use_legacy_mode) {
- return _stripe->pending_maintenance_stats();
- } else {
- SimpleMaintenanceScanner::PendingMaintenanceStats result;
- for (const auto& stripe : _stripes) {
- result.merge(stripe->pending_maintenance_stats());
- }
- return result;
- }
-}
-
-void
-Distributor::propagateInternalScanMetricsToExternal()
-{
- if (_use_legacy_mode) {
- _stripe->propagateInternalScanMetricsToExternal();
- } else {
- for (auto &stripe : _stripes) {
- stripe->propagateInternalScanMetricsToExternal();
- }
- _total_metrics->aggregate();
- _ideal_state_total_metrics->aggregate();
- }
-}
-
-void
-Distributor::scanAllBuckets()
-{
- assert(_use_legacy_mode); // TODO STRIPE
- _stripe->scanAllBuckets();
-}
-
-void
-Distributor::dispatch_to_main_distributor_thread_queue(const std::shared_ptr<api::StorageMessage>& msg)
-{
- MBUS_TRACE(msg->getTrace(), 9, "Distributor: Added to main thread message queue");
- framework::TickingLockGuard guard(_threadPool.freezeCriticalTicks());
- _message_queue.emplace_back(msg);
- guard.broadcast();
-}
-
-void
-Distributor::fetch_external_messages()
-{
- assert(!_use_legacy_mode);
- assert(_fetched_messages.empty());
- _fetched_messages.swap(_message_queue);
-}
-
-void
-Distributor::process_fetched_external_messages()
-{
- assert(!_use_legacy_mode);
- for (auto& msg : _fetched_messages) {
- MBUS_TRACE(msg->getTrace(), 9, "Distributor: Processing message in main thread");
- if (!msg->callHandler(*_bucket_db_updater, msg)) {
- MBUS_TRACE(msg->getTrace(), 9, "Distributor: Not handling it. Sending further down");
- sendDown(msg);
- }
- }
- if (!_fetched_messages.empty()) {
- _fetched_messages.clear();
- signal_work_was_done();
- }
-}
-
-framework::ThreadWaitInfo
-Distributor::doCriticalTick(framework::ThreadIndex idx)
-{
- _tickResult = framework::ThreadWaitInfo::NO_MORE_CRITICAL_WORK_KNOWN;
- if (!_use_legacy_mode) {
- enableNextDistribution();
- fetch_status_requests();
- fetch_external_messages();
- }
- // Propagates any new configs down to stripe(s)
- enableNextConfig();
- if (_use_legacy_mode) {
- _stripe->doCriticalTick(idx);
- _tickResult.merge(_stripe->_tickResult);
- }
- return _tickResult;
-}
-
-framework::ThreadWaitInfo
-Distributor::doNonCriticalTick(framework::ThreadIndex idx)
-{
- if (_use_legacy_mode) {
- _stripe->doNonCriticalTick(idx);
- _tickResult = _stripe->_tickResult;
- } else {
- _tickResult = framework::ThreadWaitInfo::NO_MORE_CRITICAL_WORK_KNOWN;
- handle_status_requests();
- process_fetched_external_messages();
- send_host_info_if_appropriate();
- _bucket_db_updater->resend_delayed_messages();
- }
- return _tickResult;
-}
-
-void
-Distributor::enableNextConfig() // TODO STRIPE rename to enable_next_config_if_changed()?
-{
- // Only lazily trigger a config propagation and internal update if something has _actually changed_.
- if (_component.internal_config_generation() != _current_internal_config_generation) {
- _total_config = _component.total_distributor_config_sp();
- if (!_use_legacy_mode) {
- auto guard = _stripe_accessor->rendezvous_and_hold_all();
- guard->update_total_distributor_config(_component.total_distributor_config_sp());
- } else {
- _stripe->update_total_distributor_config(_component.total_distributor_config_sp());
- }
- _hostInfoReporter.enableReporting(config().getEnableHostInfoReporting());
- _current_internal_config_generation = _component.internal_config_generation();
- }
- if (_use_legacy_mode) {
- // TODO STRIPE remove these once tests are fixed to trigger reconfig properly
- _hostInfoReporter.enableReporting(getConfig().getEnableHostInfoReporting());
- _stripe->enableNextConfig(); // TODO STRIPE avoid redundant call
- }
-}
-
-
-void
-Distributor::notify_stripe_wants_to_send_host_info(uint16_t stripe_index)
-{
- LOG(debug, "Stripe %u has signalled an intent to send host info out-of-band", stripe_index);
- std::lock_guard lock(_stripe_scan_notify_mutex);
- assert(!_use_legacy_mode);
- assert(stripe_index < _stripe_scan_stats.size());
- auto& stats = _stripe_scan_stats[stripe_index];
- stats.wants_to_send_host_info = true;
- stats.has_reported_in_at_least_once = true;
- // TODO STRIPE consider if we want to wake up distributor thread here. Will be rechecked
- // every nth millisecond anyway. Not really an issue for out-of-band CC notifications.
-}
-
-bool
-Distributor::may_send_host_info_on_behalf_of_stripes([[maybe_unused]] std::lock_guard<std::mutex>& held_lock) noexcept
-{
- bool any_stripe_wants_to_send = false;
- for (const auto& stats : _stripe_scan_stats) {
- if (!stats.has_reported_in_at_least_once) {
- // If not all stripes have reported in at least once, they have not all completed their
- // first recovery mode pass through their DBs. To avoid sending partial stats to the cluster
- // controller, we wait with sending the first out-of-band host info reply until they have all
- // reported in.
- return false;
- }
- any_stripe_wants_to_send |= stats.wants_to_send_host_info;
- }
- return any_stripe_wants_to_send;
-}
-
-void
-Distributor::send_host_info_if_appropriate()
-{
- const auto now = _component.getClock().getMonotonicTime();
- std::lock_guard lock(_stripe_scan_notify_mutex);
-
- if (may_send_host_info_on_behalf_of_stripes(lock)) {
- if ((now - _last_host_info_send_time) >= _host_info_send_delay) {
- LOG(debug, "Sending GetNodeState replies to cluster controllers on behalf of stripes");
- _component.getStateUpdater().immediately_send_get_node_state_replies();
- _last_host_info_send_time = now;
- for (auto& stats : _stripe_scan_stats) {
- stats.wants_to_send_host_info = false;
- }
- }
- }
-}
-
-void
-Distributor::fetch_status_requests()
-{
- if (_fetched_status_requests.empty()) {
- _fetched_status_requests.swap(_status_to_do);
- }
-}
-
-void
-Distributor::handle_status_requests()
-{
- for (auto& s : _fetched_status_requests) {
- s->getReporter().reportStatus(s->getStream(), s->getPath());
- s->notifyCompleted();
- }
- if (!_fetched_status_requests.empty()) {
- _fetched_status_requests.clear();
- signal_work_was_done();
- }
-}
-
-void
-Distributor::signal_work_was_done()
-{
- _tickResult = framework::ThreadWaitInfo::MORE_WORK_ENQUEUED;
-}
-
-vespalib::string
-Distributor::getReportContentType(const framework::HttpUrlPath& path) const
-{
- assert(!_use_legacy_mode);
- if (path.hasAttribute("page")) {
- if (path.getAttribute("page") == "buckets") {
- return "text/html";
- } else {
- return "application/xml";
- }
- } else {
- return "text/html";
- }
-}
-
-std::string
-Distributor::getActiveIdealStateOperations() const
-{
- assert(_use_legacy_mode);
- return _stripe->getActiveIdealStateOperations();
-}
-
-bool
-Distributor::reportStatus(std::ostream& out,
- const framework::HttpUrlPath& path) const
-{
- assert(!_use_legacy_mode);
- if (!path.hasAttribute("page") || path.getAttribute("page") == "buckets") {
- framework::PartlyHtmlStatusReporter htmlReporter(*this);
- htmlReporter.reportHtmlHeader(out, path);
- if (!path.hasAttribute("page")) {
- out << "<a href=\"?page=pending\">Count of pending messages to storage nodes</a><br>\n"
- << "<a href=\"?page=buckets\">List all buckets, highlight non-ideal state</a><br>\n";
- } else {
- auto guard = _stripe_accessor->rendezvous_and_hold_all();
- const auto& op_ctx = _component;
- for (const auto& space : op_ctx.bucket_space_repo()) {
- out << "<h2>" << document::FixedBucketSpaces::to_string(space.first) << " - " << space.first << "</h2>\n";
- guard->report_bucket_db_status(space.first, out);
- }
- }
- htmlReporter.reportHtmlFooter(out, path);
- } else {
- framework::PartlyXmlStatusReporter xmlReporter(*this, out, path);
- using namespace vespalib::xml;
- std::string page(path.getAttribute("page"));
-
- if (page == "pending") {
- auto guard = _stripe_accessor->rendezvous_and_hold_all();
- auto stats = guard->pending_operation_stats();
- xmlReporter << XmlTag("pending")
- << XmlAttribute("externalload", stats.external_load_operations)
- << XmlAttribute("maintenance", stats.maintenance_operations)
- << XmlEndTag();
- }
- }
- return true;
-}
-
-bool
-Distributor::handleStatusRequest(const DelegatedStatusRequest& request) const
-{
- assert(!_use_legacy_mode);
- auto wrappedRequest = std::make_shared<DistributorStatus>(request);
- {
- framework::TickingLockGuard guard(_threadPool.freezeCriticalTicks());
- _status_to_do.push_back(wrappedRequest);
- guard.broadcast();
- }
- wrappedRequest->waitForCompletion();
- return true;
-}
-
-}
diff --git a/storage/src/vespa/storage/distributor/distributor_bucket_space.cpp b/storage/src/vespa/storage/distributor/distributor_bucket_space.cpp
index 37e7dc86e43..7293f9f7acc 100644
--- a/storage/src/vespa/storage/distributor/distributor_bucket_space.cpp
+++ b/storage/src/vespa/storage/distributor/distributor_bucket_space.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "distributor_bucket_space.h"
#include "bucketownership.h"
@@ -22,8 +22,8 @@ DistributorBucketSpace::DistributorBucketSpace()
{
}
-DistributorBucketSpace::DistributorBucketSpace(uint16_t node_index, bool use_bucket_db)
- : _bucketDatabase(use_bucket_db ? std::make_unique<BTreeBucketDatabase>() : std::unique_ptr<BTreeBucketDatabase>()),
+DistributorBucketSpace::DistributorBucketSpace(uint16_t node_index)
+ : _bucketDatabase(std::make_unique<BTreeBucketDatabase>()),
_clusterState(),
_distribution(),
_node_index(node_index),
@@ -50,7 +50,7 @@ DistributorBucketSpace::enumerate_available_nodes()
_distribution_bits = _clusterState->getDistributionBitCount();
auto node_count = _clusterState->getNodeCount(lib::NodeType::STORAGE);
if (_pending_cluster_state) {
- _distribution_bits = std::min(_distribution_bits, _pending_cluster_state->getDistributionBitCount());
+ _distribution_bits = std::max(_distribution_bits, _pending_cluster_state->getDistributionBitCount());
node_count = std::min(node_count, _pending_cluster_state->getNodeCount(lib::NodeType::STORAGE));
}
std::vector<bool> nodes(node_count);
diff --git a/storage/src/vespa/storage/distributor/distributor_bucket_space.h b/storage/src/vespa/storage/distributor/distributor_bucket_space.h
index 8898039eb02..32da78f9972 100644
--- a/storage/src/vespa/storage/distributor/distributor_bucket_space.h
+++ b/storage/src/vespa/storage/distributor/distributor_bucket_space.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bucketownership.h"
@@ -47,8 +47,7 @@ class DistributorBucketSpace {
bool owns_bucket_in_state(const lib::Distribution& distribution, const lib::ClusterState& cluster_state, document::BucketId bucket) const;
public:
explicit DistributorBucketSpace();
- // TODO STRIPE: Remove the use_bucket_db parameter when legacy mode is gone.
- explicit DistributorBucketSpace(uint16_t node_index, bool use_bucket_db = true);
+ explicit DistributorBucketSpace(uint16_t node_index);
~DistributorBucketSpace();
DistributorBucketSpace(const DistributorBucketSpace&) = delete;
diff --git a/storage/src/vespa/storage/distributor/distributor_bucket_space_repo.cpp b/storage/src/vespa/storage/distributor/distributor_bucket_space_repo.cpp
index 368483d3f2d..09468b55430 100644
--- a/storage/src/vespa/storage/distributor/distributor_bucket_space_repo.cpp
+++ b/storage/src/vespa/storage/distributor/distributor_bucket_space_repo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "distributor_bucket_space_repo.h"
#include "distributor_bucket_space.h"
@@ -13,11 +13,11 @@ using document::BucketSpace;
namespace storage::distributor {
-DistributorBucketSpaceRepo::DistributorBucketSpaceRepo(uint16_t node_index, bool use_bucket_db)
+DistributorBucketSpaceRepo::DistributorBucketSpaceRepo(uint16_t node_index)
: _map()
{
- add(document::FixedBucketSpaces::default_space(), std::make_unique<DistributorBucketSpace>(node_index, use_bucket_db));
- add(document::FixedBucketSpaces::global_space(), std::make_unique<DistributorBucketSpace>(node_index, use_bucket_db));
+ add(document::FixedBucketSpaces::default_space(), std::make_unique<DistributorBucketSpace>(node_index));
+ add(document::FixedBucketSpaces::global_space(), std::make_unique<DistributorBucketSpace>(node_index));
}
DistributorBucketSpaceRepo::~DistributorBucketSpaceRepo() = default;
diff --git a/storage/src/vespa/storage/distributor/distributor_bucket_space_repo.h b/storage/src/vespa/storage/distributor/distributor_bucket_space_repo.h
index e7552f058d8..ab1e235ae35 100644
--- a/storage/src/vespa/storage/distributor/distributor_bucket_space_repo.h
+++ b/storage/src/vespa/storage/distributor/distributor_bucket_space_repo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/bucket/bucketspace.h>
@@ -19,8 +19,7 @@ private:
BucketSpaceMap _map;
public:
- // TODO STRIPE: Remove the use_bucket_db parameter when legacy mode is gone.
- explicit DistributorBucketSpaceRepo(uint16_t node_index, bool use_bucket_db = true);
+ explicit DistributorBucketSpaceRepo(uint16_t node_index);
~DistributorBucketSpaceRepo();
DistributorBucketSpaceRepo(const DistributorBucketSpaceRepo&&) = delete;
diff --git a/storage/src/vespa/storage/distributor/distributor_component.cpp b/storage/src/vespa/storage/distributor/distributor_component.cpp
index e01d7e7cb6d..51674fdbf89 100644
--- a/storage/src/vespa/storage/distributor/distributor_component.cpp
+++ b/storage/src/vespa/storage/distributor/distributor_component.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "distributor_bucket_space.h"
#include "distributor_bucket_space_repo.h"
@@ -11,8 +11,7 @@ DistributorComponent::DistributorComponent(DistributorInterface& distributor,
const std::string& name)
: storage::DistributorComponent(comp_reg, name),
_distributor(distributor),
- _bucket_space_repo(std::make_unique<DistributorBucketSpaceRepo>(node_index(), false)),
- _read_only_bucket_space_repo(std::make_unique<DistributorBucketSpaceRepo>(node_index(), false))
+ _bucket_space_states()
{
}
diff --git a/storage/src/vespa/storage/distributor/distributor_component.h b/storage/src/vespa/storage/distributor/distributor_component.h
index 68db5a3c483..34fd08140e0 100644
--- a/storage/src/vespa/storage/distributor/distributor_component.h
+++ b/storage/src/vespa/storage/distributor/distributor_component.h
@@ -1,7 +1,8 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
+#include "bucket_space_state_map.h"
#include "distributor_interface.h"
#include "distributor_node_context.h"
#include "distributor_operation_context.h"
@@ -22,9 +23,8 @@ class DistributorComponent : public storage::DistributorComponent,
public DistributorOperationContext {
private:
DistributorInterface& _distributor;
- // TODO STRIPE: When legacy mode is removed, replace this with BucketSpaceStateMap.
- std::unique_ptr<DistributorBucketSpaceRepo> _bucket_space_repo;
- std::unique_ptr<DistributorBucketSpaceRepo> _read_only_bucket_space_repo;
+ BucketSpaceStateMap _bucket_space_states;
+
public:
DistributorComponent(DistributorInterface& distributor,
@@ -45,23 +45,15 @@ public:
api::Timestamp generate_unique_timestamp() override {
return getUniqueTimestamp();
}
- const DistributorBucketSpaceRepo& bucket_space_repo() const noexcept override {
- return *_bucket_space_repo;
- }
- DistributorBucketSpaceRepo& bucket_space_repo() noexcept override {
- return *_bucket_space_repo;
- }
- const DistributorBucketSpaceRepo& read_only_bucket_space_repo() const noexcept override {
- return *_read_only_bucket_space_repo;
+ const BucketSpaceStateMap& bucket_space_states() const noexcept override {
+ return _bucket_space_states;
}
- DistributorBucketSpaceRepo& read_only_bucket_space_repo() noexcept override {
- return *_read_only_bucket_space_repo;
+ BucketSpaceStateMap& bucket_space_states() noexcept override {
+ return _bucket_space_states;
}
const storage::DistributorConfiguration& distributor_config() const noexcept override {
return _distributor.config();
}
-
-
};
}
diff --git a/storage/src/vespa/storage/distributor/distributor_host_info_reporter.cpp b/storage/src/vespa/storage/distributor/distributor_host_info_reporter.cpp
index 3a588179eb9..bb7e573c980 100644
--- a/storage/src/vespa/storage/distributor/distributor_host_info_reporter.cpp
+++ b/storage/src/vespa/storage/distributor/distributor_host_info_reporter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucket_spaces_stats_provider.h"
#include "distributor_host_info_reporter.h"
diff --git a/storage/src/vespa/storage/distributor/distributor_host_info_reporter.h b/storage/src/vespa/storage/distributor/distributor_host_info_reporter.h
index cfffb54799f..6680059b3d6 100644
--- a/storage/src/vespa/storage/distributor/distributor_host_info_reporter.h
+++ b/storage/src/vespa/storage/distributor/distributor_host_info_reporter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storage/common/hostreporter/hostreporter.h>
diff --git a/storage/src/vespa/storage/distributor/distributor_interface.h b/storage/src/vespa/storage/distributor/distributor_interface.h
index aa9dfd37909..083c49f4ae3 100644
--- a/storage/src/vespa/storage/distributor/distributor_interface.h
+++ b/storage/src/vespa/storage/distributor/distributor_interface.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "distributormessagesender.h"
diff --git a/storage/src/vespa/storage/distributor/distributor_node_context.h b/storage/src/vespa/storage/distributor/distributor_node_context.h
index 805e54342dc..ad082a5a9e5 100644
--- a/storage/src/vespa/storage/distributor/distributor_node_context.h
+++ b/storage/src/vespa/storage/distributor/distributor_node_context.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/distributor/distributor_operation_context.h b/storage/src/vespa/storage/distributor/distributor_operation_context.h
index e0d481a322a..934c5e364d8 100644
--- a/storage/src/vespa/storage/distributor/distributor_operation_context.h
+++ b/storage/src/vespa/storage/distributor/distributor_operation_context.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -6,10 +6,10 @@
#include <vespa/storageapi/defs.h>
namespace storage { class DistributorConfiguration; }
-namespace storage::lib { class ClusterStateBundle; }
namespace storage::distributor {
+class BucketSpaceStateMap;
class DistributorBucketSpaceRepo;
/**
@@ -19,11 +19,8 @@ class DistributorOperationContext {
public:
virtual ~DistributorOperationContext() {}
virtual api::Timestamp generate_unique_timestamp() = 0;
- // TODO STRIPE: Access to bucket space repos is only temporary at this level.
- virtual const DistributorBucketSpaceRepo& bucket_space_repo() const noexcept = 0;
- virtual DistributorBucketSpaceRepo& bucket_space_repo() noexcept = 0;
- virtual const DistributorBucketSpaceRepo& read_only_bucket_space_repo() const noexcept = 0;
- virtual DistributorBucketSpaceRepo& read_only_bucket_space_repo() noexcept = 0;
+ virtual const BucketSpaceStateMap& bucket_space_states() const noexcept = 0;
+ virtual BucketSpaceStateMap& bucket_space_states() noexcept = 0;
virtual const DistributorConfiguration& distributor_config() const noexcept = 0;
};
diff --git a/storage/src/vespa/storage/distributor/distributor_status.cpp b/storage/src/vespa/storage/distributor/distributor_status.cpp
index 811608822d8..7ad41d1b945 100644
--- a/storage/src/vespa/storage/distributor/distributor_status.cpp
+++ b/storage/src/vespa/storage/distributor/distributor_status.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "distributor_status.h"
#include "delegatedstatusrequest.h"
diff --git a/storage/src/vespa/storage/distributor/distributor_status.h b/storage/src/vespa/storage/distributor/distributor_status.h
index df405075308..7e9c542992a 100644
--- a/storage/src/vespa/storage/distributor/distributor_status.h
+++ b/storage/src/vespa/storage/distributor/distributor_status.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/distributor/distributor_stripe.cpp b/storage/src/vespa/storage/distributor/distributor_stripe.cpp
index 837193a1e7c..d87b2db1638 100644
--- a/storage/src/vespa/storage/distributor/distributor_stripe.cpp
+++ b/storage/src/vespa/storage/distributor/distributor_stripe.cpp
@@ -1,14 +1,15 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "blockingoperationstarter.h"
-#include "distributor_stripe.h"
-#include "distributor_status.h"
#include "distributor_bucket_space.h"
+#include "distributor_status.h"
+#include "distributor_stripe.h"
#include "distributormetricsset.h"
#include "idealstatemetricsset.h"
-#include "stripe_host_info_notifier.h"
#include "operation_sequencer.h"
#include "ownership_transfer_safe_time_point_calculator.h"
+#include "storage_node_up_states.h"
+#include "stripe_host_info_notifier.h"
#include "throttlingoperationstarter.h"
#include <vespa/document/bucket/fixed_bucket_spaces.h>
#include <vespa/storage/common/global_bucket_space_distribution_converter.h>
@@ -28,24 +29,15 @@ using namespace std::chrono_literals;
namespace storage::distributor {
-/* TODO STRIPE
- * - need a DistributorStripeComponent per stripe
- * - or better, remove entirely!
- * - probably also DistributorStripeInterface since it's used to send
- * - metrics aggregation
- */
DistributorStripe::DistributorStripe(DistributorComponentRegister& compReg,
DistributorMetricSet& metrics,
IdealStateMetricSet& ideal_state_metrics,
const NodeIdentity& node_identity,
- framework::TickingThreadPool& threadPool,
- DoneInitializeHandler& doneInitHandler,
ChainedMessageSender& messageSender,
StripeHostInfoNotifier& stripe_host_info_notifier,
- bool use_legacy_mode,
+ const bool& done_initializing_ref,
uint32_t stripe_index)
: DistributorStripeInterface(),
- framework::StatusReporter("distributor", "Distributor"),
_clusterStateBundle(lib::ClusterState()),
_bucketSpaceRepo(std::make_unique<DistributorBucketSpaceRepo>(node_identity.node_index())),
_readOnlyBucketSpaceRepo(std::make_unique<DistributorBucketSpaceRepo>(node_identity.node_index())),
@@ -55,10 +47,8 @@ DistributorStripe::DistributorStripe(DistributorComponentRegister& compReg,
_operationOwner(*this, _component.getClock()),
_maintenanceOperationOwner(*this, _component.getClock()),
_operation_sequencer(std::make_unique<OperationSequencer>()),
- _pendingMessageTracker(compReg),
- _bucketDBUpdater(_component, _component, *this, *this, use_legacy_mode),
- _distributorStatusDelegate(compReg, *this, *this),
- _bucketDBStatusDelegate(compReg, *this, _bucketDBUpdater),
+ _pendingMessageTracker(compReg, stripe_index),
+ _bucketDBUpdater(_component, _component, *this, *this),
_idealStateManager(_component, _component, ideal_state_metrics),
_messageSender(messageSender),
_stripe_host_info_notifier(stripe_host_info_notifier),
@@ -66,9 +56,7 @@ DistributorStripe::DistributorStripe(DistributorComponentRegister& compReg,
*_operation_sequencer, *this, _component,
_idealStateManager, _operationOwner),
_external_message_mutex(),
- _threadPool(threadPool),
- _doneInitializeHandler(doneInitHandler),
- _doneInitializing(false),
+ _done_initializing_ref(done_initializing_ref),
_bucketPriorityDb(std::make_unique<SimpleBucketPriorityDatabase>()),
_scanner(std::make_unique<SimpleMaintenanceScanner>(*_bucketPriorityDb, _idealStateManager, *_bucketSpaceRepo)),
_throttlingStarter(std::make_unique<ThrottlingOperationStarter>(_maintenanceOperationOwner)),
@@ -87,14 +75,10 @@ DistributorStripe::DistributorStripe(DistributorComponentRegister& compReg,
_db_memory_sample_interval(30s),
_last_db_memory_sample_time_point(),
_inhibited_maintenance_tick_count(0),
- _must_send_updated_host_info(false),
- _use_legacy_mode(use_legacy_mode),
- _stripe_index(stripe_index)
+ _stripe_index(stripe_index),
+ _non_activation_maintenance_is_inhibited(false),
+ _must_send_updated_host_info(false)
{
- if (use_legacy_mode) {
- _distributorStatusDelegate.registerStatusPage();
- _bucketDBStatusDelegate.registerStatusPage();
- }
propagateDefaultDistribution(_component.getDistribution());
propagateClusterStates();
};
@@ -178,15 +162,8 @@ DistributorStripe::handle_or_enqueue_message(const std::shared_ptr<api::StorageM
if (_externalOperationHandler.try_handle_message_outside_main_thread(msg)) {
return true;
}
- MBUS_TRACE(msg->getTrace(), 9,
- vespalib::make_string("DistributorStripe[%u]: Added to message queue. Thread state: ", _stripe_index)
- + _threadPool.getStatus());
- if (_use_legacy_mode) {
- // TODO STRIPE remove
- framework::TickingLockGuard guard(_threadPool.freezeCriticalTicks());
- _messageQueue.push_back(msg);
- guard.broadcast();
- } else {
+ MBUS_TRACE(msg->getTrace(), 9, vespalib::make_string("DistributorStripe[%u]: Added to message queue.", _stripe_index));
+ {
std::lock_guard lock(_external_message_mutex);
_messageQueue.push_back(msg);
// Caller has the responsibility to wake up correct stripe
@@ -299,10 +276,6 @@ DistributorStripe::enableClusterStateBundle(const lib::ClusterStateBundle& state
propagateClusterStates();
const auto& baseline_state = *state.getBaselineClusterState();
- if (!_doneInitializing && (baseline_state.getNodeState(my_node).getState() == lib::State::UP)) {
- _doneInitializing = true;
- _doneInitializeHandler.notifyDoneInitializing();
- }
enterRecoveryMode();
// Clear all active messages on nodes that are down.
@@ -319,17 +292,6 @@ DistributorStripe::enableClusterStateBundle(const lib::ClusterStateBundle& state
}
}
}
-
- if (_bucketDBUpdater.bucketOwnershipHasChanged()) {
- using TimePoint = OwnershipTransferSafeTimePointCalculator::TimePoint;
- // Note: this assumes that std::chrono::system_clock and the framework
- // system clock have the same epoch, which should be a reasonable
- // assumption.
- const auto now = TimePoint(std::chrono::milliseconds(
- _component.getClock().getTimeInMillis().getTime()));
- _externalOperationHandler.rejectFeedBeforeTimeReached(
- _ownershipSafeTimeCalc->safeTimePoint(now));
- }
}
OperationRoutingSnapshot DistributorStripe::read_snapshot_for_bucket(const document::Bucket& bucket) const {
@@ -364,9 +326,8 @@ DistributorStripe::leaveRecoveryMode()
if (isInRecoveryMode()) {
LOG(debug, "Leaving recovery mode");
// FIXME don't use shared metric for this
- _metrics.recoveryModeTime.addValue(
- _recoveryTimeStarted.getElapsedTimeAsDouble());
- if (_doneInitializing) {
+ _metrics.recoveryModeTime.addValue(_recoveryTimeStarted.getElapsedTimeAsDouble());
+ if (_done_initializing_ref) {
_must_send_updated_host_info = true;
}
}
@@ -405,28 +366,6 @@ void DistributorStripe::invalidate_bucket_spaces_stats() {
}
void
-DistributorStripe::storage_distribution_changed()
-{
- assert(_use_legacy_mode);
- if (!_distribution.get()
- || *_component.getDistribution() != *_distribution)
- {
- LOG(debug,
- "Distribution changed to %s, must refetch bucket information",
- _component.getDistribution()->toString().c_str());
-
- // FIXME this is not thread safe
- _nextDistribution = _component.getDistribution();
- } else {
- LOG(debug,
- "Got distribution change, but the distribution %s was the same as "
- "before: %s",
- _component.getDistribution()->toString().c_str(),
- _distribution->toString().c_str());
- }
-}
-
-void
DistributorStripe::recheckBucketInfo(uint16_t nodeIdx, const document::Bucket &bucket) {
_bucketDBUpdater.recheckBucketInfo(nodeIdx, bucket);
}
@@ -484,21 +423,6 @@ DistributorStripe::checkBucketForSplit(document::BucketSpace bucketSpace,
}
}
-// TODO STRIPE must only be called when operating in legacy single stripe mode!
-// In other cases, distribution config switching is controlled by top-level distributor, not via framework(tm).
-void
-DistributorStripe::enableNextDistribution()
-{
- assert(_use_legacy_mode);
- if (_nextDistribution.get()) {
- _distribution = _nextDistribution;
- propagateDefaultDistribution(_distribution);
- _nextDistribution = std::shared_ptr<lib::Distribution>();
- // TODO conditional on whether top-level DB updater is in charge
- _bucketDBUpdater.storageDistributionChanged();
- }
-}
-
// TODO STRIPE must be invoked by top-level bucket db updater probably
void
DistributorStripe::propagateDefaultDistribution(
@@ -514,7 +438,6 @@ DistributorStripe::propagateDefaultDistribution(
// Only called when stripe is in rendezvous freeze
void
DistributorStripe::update_distribution_config(const BucketSpaceDistributionConfigs& new_configs) {
- assert(!_use_legacy_mode);
auto default_distr = new_configs.get_or_nullptr(document::FixedBucketSpaces::default_space());
auto global_distr = new_configs.get_or_nullptr(document::FixedBucketSpaces::global_space());
assert(default_distr && global_distr);
@@ -635,8 +558,14 @@ DistributorStripe::propagateInternalScanMetricsToExternal()
// All shared values are written when _metricLock is held, so no races.
if (_bucketDBMetricUpdater.hasCompletedRound()) {
- _bucketDbStats.propagateMetrics(_idealStateManager.getMetrics(), getMetrics());
- _idealStateManager.getMetrics().setPendingOperations(_maintenanceStats.global.pending);
+ auto& ideal_state_metrics = _idealStateManager.getMetrics();
+ _bucketDbStats.propagateMetrics(ideal_state_metrics, getMetrics());
+ ideal_state_metrics.setPendingOperations(_maintenanceStats.global.pending);
+ const auto& total_stats = _maintenanceStats.perNodeStats.total_replica_stats();
+ ideal_state_metrics.buckets_replicas_moving_out.set(total_stats.movingOut);
+ ideal_state_metrics.buckets_replicas_copying_out.set(total_stats.copyingOut);
+ ideal_state_metrics.buckets_replicas_copying_in.set(total_stats.copyingIn);
+ ideal_state_metrics.buckets_replicas_syncing.set(total_stats.syncing);
}
}
@@ -746,11 +675,7 @@ DistributorStripe::scanNextBucket()
void DistributorStripe::send_updated_host_info_if_required() {
if (_must_send_updated_host_info) {
- if (_use_legacy_mode) {
- _component.getStateUpdater().immediately_send_get_node_state_replies();
- } else {
- _stripe_host_info_notifier.notify_stripe_wants_to_send_host_info(_stripe_index);
- }
+ _stripe_host_info_notifier.notify_stripe_wants_to_send_host_info(_stripe_index);
_must_send_updated_host_info = false;
}
}
@@ -760,33 +685,21 @@ DistributorStripe::startNextMaintenanceOperation()
{
_throttlingStarter->setMaxPendingRange(getConfig().getMinPendingMaintenanceOps(),
getConfig().getMaxPendingMaintenanceOps());
- _scheduler->tick(_schedulingMode);
-}
-
-// TODO STRIPE begone with this!
-framework::ThreadWaitInfo
-DistributorStripe::doCriticalTick(framework::ThreadIndex)
-{
- _tickResult = framework::ThreadWaitInfo::NO_MORE_CRITICAL_WORK_KNOWN;
- assert(_use_legacy_mode);
- enableNextDistribution();
- enableNextConfig();
- fetchStatusRequests();
- fetchExternalMessages();
- return _tickResult;
+ auto effective_scheduling_mode = ((_schedulingMode == MaintenanceScheduler::RECOVERY_SCHEDULING_MODE) ||
+ non_activation_maintenance_is_inhibited())
+ ? MaintenanceScheduler::RECOVERY_SCHEDULING_MODE
+ : MaintenanceScheduler::NORMAL_SCHEDULING_MODE;
+ _scheduler->tick(effective_scheduling_mode);
}
framework::ThreadWaitInfo
DistributorStripe::doNonCriticalTick(framework::ThreadIndex)
{
_tickResult = framework::ThreadWaitInfo::NO_MORE_CRITICAL_WORK_KNOWN;
- if (!_use_legacy_mode) {
+ {
std::lock_guard lock(_external_message_mutex);
fetchExternalMessages();
}
- if (_use_legacy_mode) {
- handleStatusRequests();
- }
startExternalOperations();
if (initializing()) {
_bucketDBUpdater.resendDelayedMessages();
@@ -809,7 +722,6 @@ DistributorStripe::doNonCriticalTick(framework::ThreadIndex)
}
bool DistributorStripe::tick() {
- assert(!_use_legacy_mode);
auto wait_info = doNonCriticalTick(framework::ThreadIndex(0));
return !wait_info.waitWanted(); // If we don't want to wait, we presumably did some useful stuff.
}
@@ -828,14 +740,6 @@ void DistributorStripe::mark_maintenance_tick_as_no_longer_inhibited() noexcept
}
void
-DistributorStripe::enableNextConfig()
-{
- assert(_use_legacy_mode);
- propagate_config_snapshot_to_internal_components();
-
-}
-
-void
DistributorStripe::update_total_distributor_config(std::shared_ptr<const DistributorConfiguration> config)
{
_total_config = std::move(config);
@@ -856,52 +760,12 @@ DistributorStripe::propagate_config_snapshot_to_internal_components()
}
void
-DistributorStripe::fetchStatusRequests()
-{
- assert(_use_legacy_mode);
- if (_fetchedStatusRequests.empty()) {
- _fetchedStatusRequests.swap(_statusToDo);
- }
-}
-
-void
DistributorStripe::fetchExternalMessages()
{
assert(_fetchedMessages.empty());
_fetchedMessages.swap(_messageQueue);
}
-void
-DistributorStripe::handleStatusRequests()
-{
- assert(_use_legacy_mode);
- uint32_t sz = _fetchedStatusRequests.size();
- for (uint32_t i = 0; i < sz; ++i) {
- auto& s = *_fetchedStatusRequests[i];
- s.getReporter().reportStatus(s.getStream(), s.getPath());
- s.notifyCompleted();
- }
- _fetchedStatusRequests.clear();
- if (sz > 0) {
- signalWorkWasDone();
- }
-}
-
-vespalib::string
-DistributorStripe::getReportContentType(const framework::HttpUrlPath& path) const
-{
- assert(_use_legacy_mode);
- if (path.hasAttribute("page")) {
- if (path.getAttribute("page") == "buckets") {
- return "text/html";
- } else {
- return "application/xml";
- }
- } else {
- return "text/html";
- }
-}
-
std::string
DistributorStripe::getActiveIdealStateOperations() const
{
@@ -914,54 +778,6 @@ DistributorStripe::getActiveOperations() const
return _operationOwner.toString();
}
-// TODO STRIPE remove this; delegated to top-level Distributor only
-bool
-DistributorStripe::reportStatus(std::ostream& out,
- const framework::HttpUrlPath& path) const
-{
- assert(_use_legacy_mode);
- if (!path.hasAttribute("page") || path.getAttribute("page") == "buckets") {
- framework::PartlyHtmlStatusReporter htmlReporter(*this);
- htmlReporter.reportHtmlHeader(out, path);
- if (!path.hasAttribute("page")) {
- out << "<a href=\"?page=pending\">Count of pending messages to storage nodes</a><br>\n"
- << "<a href=\"?page=buckets\">List all buckets, highlight non-ideal state</a><br>\n";
- } else {
- const_cast<IdealStateManager&>(_idealStateManager)
- .getBucketStatus(out);
- }
- htmlReporter.reportHtmlFooter(out, path);
- } else {
- framework::PartlyXmlStatusReporter xmlReporter(*this, out, path);
- using namespace vespalib::xml;
- std::string page(path.getAttribute("page"));
-
- if (page == "pending") {
- xmlReporter << XmlTag("pending")
- << XmlAttribute("externalload", _operationOwner.size())
- << XmlAttribute("maintenance",_maintenanceOperationOwner.size())
- << XmlEndTag();
- }
- }
-
- return true;
-}
-
-// TODO STRIPE remove this; delegated to top-level Distributor only
-bool
-DistributorStripe::handleStatusRequest(const DelegatedStatusRequest& request) const
-{
- assert(_use_legacy_mode);
- auto wrappedRequest = std::make_shared<DistributorStatus>(request);
- {
- framework::TickingLockGuard guard(_threadPool.freezeCriticalTicks());
- _statusToDo.push_back(wrappedRequest);
- guard.broadcast();
- }
- wrappedRequest->waitForCompletion();
- return true;
-}
-
StripeAccessGuard::PendingOperationStats
DistributorStripe::pending_operation_stats() const
{
@@ -981,10 +797,20 @@ DistributorStripe::clear_pending_cluster_state_bundle()
}
void
-DistributorStripe::enable_cluster_state_bundle(const lib::ClusterStateBundle& new_state)
+DistributorStripe::enable_cluster_state_bundle(const lib::ClusterStateBundle& new_state,
+ bool has_bucket_ownership_change)
{
// TODO STRIPE replace legacy func
enableClusterStateBundle(new_state);
+ if (has_bucket_ownership_change) {
+ using TimePoint = OwnershipTransferSafeTimePointCalculator::TimePoint;
+ // Note: this assumes that std::chrono::system_clock and the framework
+ // system clock have the same epoch, which should be a reasonable
+ // assumption.
+ const auto now = TimePoint(std::chrono::milliseconds(_component.getClock().getTimeInMillis().getTime()));
+ _externalOperationHandler.rejectFeedBeforeTimeReached(_ownershipSafeTimeCalc->safeTimePoint(now));
+ }
+ _bucketDBUpdater.handle_activated_cluster_state_bundle(); // Triggers resending of queued requests
}
void
diff --git a/storage/src/vespa/storage/distributor/distributor_stripe.h b/storage/src/vespa/storage/distributor/distributor_stripe.h
index 9deb0754a1f..5ba682d46e3 100644
--- a/storage/src/vespa/storage/distributor/distributor_stripe.h
+++ b/storage/src/vespa/storage/distributor/distributor_stripe.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -22,6 +22,7 @@
#include <vespa/storageapi/message/state.h>
#include <vespa/storageframework/generic/metric/metricupdatehook.h>
#include <vespa/storageframework/generic/thread/tickingthread.h>
+#include <atomic>
#include <mutex>
#include <queue>
#include <unordered_map>
@@ -45,12 +46,14 @@ class StripeHostInfoNotifier;
class ThrottlingOperationStarter;
/**
- * TODO STRIPE add class comment.
+ * A DistributorStripe encapsulates client operation handling and maintenance of a subset of the
+ * bucket space that the full distributor has responsibility for.
+ *
+ * Each distributor stripe is responsible for a completely disjoint subset of the bucket space of all
+ * other distributor stripes in the process (and transitively, in the entire cluster).
*/
class DistributorStripe final
: public DistributorStripeInterface,
- public StatusDelegator,
- public framework::StatusReporter,
public MinReplicaProvider,
public BucketSpacesStatsProvider,
public NonTrackingMessageSender,
@@ -61,11 +64,9 @@ public:
DistributorMetricSet& metrics,
IdealStateMetricSet& ideal_state_metrics,
const NodeIdentity& node_identity,
- framework::TickingThreadPool&,
- DoneInitializeHandler&,
ChainedMessageSender& messageSender,
StripeHostInfoNotifier& stripe_host_info_notifier,
- bool use_legacy_mode,
+ const bool& done_initializing_ref,
uint32_t stripe_index = 0);
~DistributorStripe() override;
@@ -109,24 +110,15 @@ public:
*/
void notifyDistributionChangeEnabled() override;
- void storage_distribution_changed();
-
void recheckBucketInfo(uint16_t nodeIdx, const document::Bucket &bucket) override;
bool handleReply(const std::shared_ptr<api::StorageReply>& reply) override;
- // StatusReporter implementation
- vespalib::string getReportContentType(const framework::HttpUrlPath&) const override;
- bool reportStatus(std::ostream&, const framework::HttpUrlPath&) const override;
-
- bool handleStatusRequest(const DelegatedStatusRequest& request) const override;
-
StripeAccessGuard::PendingOperationStats pending_operation_stats() const override;
std::string getActiveIdealStateOperations() const;
std::string getActiveOperations() const;
- framework::ThreadWaitInfo doCriticalTick(framework::ThreadIndex);
framework::ThreadWaitInfo doNonCriticalTick(framework::ThreadIndex);
/**
@@ -147,7 +139,7 @@ public:
void handleCompletedMerge(const std::shared_ptr<api::MergeBucketReply>& reply) override;
bool initializing() const override {
- return !_doneInitializing;
+ return !_done_initializing_ref;
}
const DistributorConfiguration& getConfig() const override {
@@ -191,23 +183,28 @@ public:
return _db_memory_sample_interval;
}
+ void inhibit_non_activation_maintenance_operations(bool inhibit) noexcept {
+ _non_activation_maintenance_is_inhibited.store(inhibit, std::memory_order_relaxed);
+ }
+
+ bool non_activation_maintenance_is_inhibited() const noexcept {
+ return _non_activation_maintenance_is_inhibited.load(std::memory_order_relaxed);
+ }
+
bool tick() override;
private:
- // TODO STRIPE: reduce number of friends. DistributorStripe too popular for its own good.
- friend class Distributor;
+ friend class TopLevelDistributor;
friend class DistributorStripeTestUtil;
- friend class DistributorTestUtil;
- friend class LegacyBucketDBUpdaterTest;
friend class MetricUpdateHook;
friend class MultiThreadedStripeAccessGuard;
friend struct DistributorStripeTest;
- friend struct LegacyDistributorTest;
+ friend struct TopLevelDistributorTest;
+ friend class TopLevelDistributorTestUtil;
bool handleMessage(const std::shared_ptr<api::StorageMessage>& msg);
bool isMaintenanceReply(const api::StorageReply& reply) const;
- void handleStatusRequests();
void send_shutdown_abort_reply(const std::shared_ptr<api::StorageMessage>&);
void handle_or_propagate_message(const std::shared_ptr<api::StorageMessage>& msg);
void startExternalOperations();
@@ -240,8 +237,6 @@ private:
bool should_inhibit_current_maintenance_scan_tick() const noexcept;
void mark_current_maintenance_tick_as_inhibited() noexcept;
void mark_maintenance_tick_as_no_longer_inhibited() noexcept;
- void enableNextConfig();
- void fetchStatusRequests();
void fetchExternalMessages();
void startNextMaintenanceOperation();
void signalWorkWasDone();
@@ -256,7 +251,6 @@ private:
bool generateOperation(const std::shared_ptr<api::StorageMessage>& msg,
Operation::SP& operation);
- void enableNextDistribution(); // TODO STRIPE remove once legacy is gone
void propagateDefaultDistribution(std::shared_ptr<const lib::Distribution>); // TODO STRIPE remove once legacy is gone
void propagateClusterStates();
@@ -272,7 +266,8 @@ private:
void update_total_distributor_config(std::shared_ptr<const DistributorConfiguration> config) override;
void set_pending_cluster_state_bundle(const lib::ClusterStateBundle& pending_state) override;
void clear_pending_cluster_state_bundle() override;
- void enable_cluster_state_bundle(const lib::ClusterStateBundle& new_state) override;
+ void enable_cluster_state_bundle(const lib::ClusterStateBundle& new_state,
+ bool has_bucket_ownership_change) override;
void notify_distribution_change_enabled() override;
PotentialDataLossReport remove_superfluous_buckets(document::BucketSpace bucket_space,
const lib::ClusterState& new_state,
@@ -308,15 +303,12 @@ private:
std::unique_ptr<OperationSequencer> _operation_sequencer;
PendingMessageTracker _pendingMessageTracker;
StripeBucketDBUpdater _bucketDBUpdater;
- StatusReporterDelegate _distributorStatusDelegate;
- StatusReporterDelegate _bucketDBStatusDelegate;
IdealStateManager _idealStateManager;
ChainedMessageSender& _messageSender;
StripeHostInfoNotifier& _stripe_host_info_notifier;
ExternalOperationHandler _externalOperationHandler;
std::shared_ptr<lib::Distribution> _distribution;
- std::shared_ptr<lib::Distribution> _nextDistribution;
using MessageQueue = std::vector<std::shared_ptr<api::StorageMessage>>;
struct IndirectHigherPriority {
@@ -334,13 +326,7 @@ private:
MessageQueue _messageQueue;
ClientRequestPriorityQueue _client_request_priority_queue;
MessageQueue _fetchedMessages;
- framework::TickingThreadPool& _threadPool;
-
- mutable std::vector<std::shared_ptr<DistributorStatus>> _statusToDo;
- mutable std::vector<std::shared_ptr<DistributorStatus>> _fetchedStatusRequests;
-
- DoneInitializeHandler& _doneInitializeHandler;
- bool _doneInitializing;
+ const bool& _done_initializing_ref;
std::unique_ptr<BucketPriorityDatabase> _bucketPriorityDb;
std::unique_ptr<SimpleMaintenanceScanner> _scanner;
@@ -365,9 +351,9 @@ private:
std::chrono::steady_clock::duration _db_memory_sample_interval;
std::chrono::steady_clock::time_point _last_db_memory_sample_time_point;
size_t _inhibited_maintenance_tick_count;
- bool _must_send_updated_host_info;
- bool _use_legacy_mode;
uint32_t _stripe_index;
+ std::atomic<bool> _non_activation_maintenance_is_inhibited;
+ bool _must_send_updated_host_info;
};
}
diff --git a/storage/src/vespa/storage/distributor/distributor_stripe_component.cpp b/storage/src/vespa/storage/distributor/distributor_stripe_component.cpp
index 59029dec66a..f2d2afb8fee 100644
--- a/storage/src/vespa/storage/distributor/distributor_stripe_component.cpp
+++ b/storage/src/vespa/storage/distributor/distributor_stripe_component.cpp
@@ -1,9 +1,10 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "distributor_stripe_component.h"
#include "distributor_bucket_space_repo.h"
#include "distributor_bucket_space.h"
#include "pendingmessagetracker.h"
+#include "storage_node_up_states.h"
#include <vespa/document/select/parser.h>
#include <vespa/vdslib/state/cluster_state_bundle.h>
#include <vespa/vdslib/state/clusterstate.h>
diff --git a/storage/src/vespa/storage/distributor/distributor_stripe_component.h b/storage/src/vespa/storage/distributor/distributor_stripe_component.h
index e47d73cc4df..b274e21ac7c 100644
--- a/storage/src/vespa/storage/distributor/distributor_stripe_component.h
+++ b/storage/src/vespa/storage/distributor/distributor_stripe_component.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "distributor_node_context.h"
diff --git a/storage/src/vespa/storage/distributor/distributor_stripe_interface.h b/storage/src/vespa/storage/distributor/distributor_stripe_interface.h
index 24db212c120..4f39dd7e5bc 100644
--- a/storage/src/vespa/storage/distributor/distributor_stripe_interface.h
+++ b/storage/src/vespa/storage/distributor/distributor_stripe_interface.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bucketgctimecalculator.h"
diff --git a/storage/src/vespa/storage/distributor/distributor_stripe_operation_context.h b/storage/src/vespa/storage/distributor/distributor_stripe_operation_context.h
index 518c83d7ffa..5919261ab43 100644
--- a/storage/src/vespa/storage/distributor/distributor_stripe_operation_context.h
+++ b/storage/src/vespa/storage/distributor/distributor_stripe_operation_context.h
@@ -1,10 +1,9 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bucketgctimecalculator.h"
#include "bucketownership.h"
-#include "distributor_operation_context.h"
#include "operation_routing_snapshot.h"
#include <vespa/document/bucket/bucketspace.h>
#include <vespa/storage/bucketdb/bucketdatabase.h>
@@ -12,6 +11,7 @@
#include <vespa/storageapi/defs.h>
namespace document { class Bucket; }
+namespace storage::lib { class ClusterStateBundle; }
namespace storage::distributor {
@@ -20,9 +20,17 @@ class PendingMessageTracker;
/**
* Interface with functionality that is used when handling distributor stripe operations.
*/
-class DistributorStripeOperationContext : public DistributorOperationContext {
+class DistributorStripeOperationContext {
public:
virtual ~DistributorStripeOperationContext() = default;
+
+ virtual api::Timestamp generate_unique_timestamp() = 0;
+ virtual const DistributorBucketSpaceRepo& bucket_space_repo() const noexcept = 0;
+ virtual DistributorBucketSpaceRepo& bucket_space_repo() noexcept = 0;
+ virtual const DistributorBucketSpaceRepo& read_only_bucket_space_repo() const noexcept = 0;
+ virtual DistributorBucketSpaceRepo& read_only_bucket_space_repo() noexcept = 0;
+ virtual const DistributorConfiguration& distributor_config() const noexcept = 0;
+
virtual void update_bucket_database(const document::Bucket& bucket,
const BucketCopy& changed_node,
uint32_t update_flags = 0) = 0;
diff --git a/storage/src/vespa/storage/distributor/distributor_stripe_pool.cpp b/storage/src/vespa/storage/distributor/distributor_stripe_pool.cpp
index 13162de4208..eca81b5d52b 100644
--- a/storage/src/vespa/storage/distributor/distributor_stripe_pool.cpp
+++ b/storage/src/vespa/storage/distributor/distributor_stripe_pool.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "distributor_stripe_pool.h"
#include "distributor_stripe_thread.h"
#include <vespa/storage/common/bucket_stripe_utils.h>
@@ -7,7 +7,7 @@
namespace storage::distributor {
-DistributorStripePool::DistributorStripePool()
+DistributorStripePool::DistributorStripePool(bool test_mode, PrivateCtorTag)
: _thread_pool(512_Ki),
_n_stripe_bits(0),
_stripes(),
@@ -17,17 +17,30 @@ DistributorStripePool::DistributorStripePool()
_parked_threads(0),
_bootstrap_tick_wait_duration(1ms),
_bootstrap_ticks_before_wait(10),
+ _single_threaded_test_mode(test_mode),
_stopped(false)
{}
+DistributorStripePool::DistributorStripePool()
+ : DistributorStripePool(false, PrivateCtorTag())
+{}
+
DistributorStripePool::~DistributorStripePool() {
if (!_stopped) {
stop_and_join();
}
}
+std::unique_ptr<DistributorStripePool>
+DistributorStripePool::make_non_threaded_pool_for_testing() {
+ return std::make_unique<DistributorStripePool>(true, PrivateCtorTag());
+}
+
void DistributorStripePool::park_all_threads() noexcept {
assert(!_stripes.empty());
+ if (_single_threaded_test_mode) {
+ return;
+ }
// Thread pool is not dynamic and signal_wants_park() is thread safe.
for (auto& s : _stripes) {
s->signal_wants_park();
@@ -37,6 +50,9 @@ void DistributorStripePool::park_all_threads() noexcept {
}
void DistributorStripePool::unpark_all_threads() noexcept {
+ if (_single_threaded_test_mode) {
+ return;
+ }
// Thread pool is not dynamic and unpark_thread() is thread safe.
for (auto& s : _stripes) {
s->unpark_thread();
@@ -58,7 +74,17 @@ TickableStripe& DistributorStripePool::stripe_of_key(uint64_t key) noexcept {
return stripe_thread(stripe_of_bucket_key(key, _n_stripe_bits)).stripe();
}
+void DistributorStripePool::notify_stripe_event_has_triggered(size_t stripe_idx) noexcept {
+ if (_single_threaded_test_mode) {
+ return;
+ }
+ stripe_thread(stripe_idx).notify_event_has_triggered();
+}
+
void DistributorStripePool::park_thread_until_released(DistributorStripeThread& thread) noexcept {
+ if (_single_threaded_test_mode) {
+ return;
+ }
std::unique_lock lock(_mutex);
assert(_parked_threads < _threads.size());
++_parked_threads;
@@ -88,19 +114,25 @@ void DistributorStripePool::start(const std::vector<TickableStripe*>& stripes) {
new_stripe->set_ticks_before_wait(_bootstrap_ticks_before_wait);
_stripes.emplace_back(std::move(new_stripe));
}
+ if (_single_threaded_test_mode) {
+ return; // We want all the control structures in place, but none of the actual OS threads.
+ }
for (auto& s : _stripes) {
_threads.emplace_back(_thread_pool.NewThread(s.get()));
}
}
void DistributorStripePool::stop_and_join() {
+ _stopped = true;
+ if (_single_threaded_test_mode) {
+ return;
+ }
for (auto& s : _stripes) {
s->signal_should_stop();
}
for (auto* t : _threads) {
t->Join();
}
- _stopped = true;
}
void DistributorStripePool::set_tick_wait_duration(vespalib::duration new_tick_wait_duration) noexcept {
diff --git a/storage/src/vespa/storage/distributor/distributor_stripe_pool.h b/storage/src/vespa/storage/distributor/distributor_stripe_pool.h
index 75328479296..605ca34a2b2 100644
--- a/storage/src/vespa/storage/distributor/distributor_stripe_pool.h
+++ b/storage/src/vespa/storage/distributor/distributor_stripe_pool.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/fastos/thread.h>
@@ -46,15 +46,20 @@ class DistributorStripePool {
size_t _parked_threads; // Must be protected by _park_mutex
vespalib::duration _bootstrap_tick_wait_duration;
uint32_t _bootstrap_ticks_before_wait;
+ bool _single_threaded_test_mode;
bool _stopped;
friend class DistributorStripeThread;
+ struct PrivateCtorTag{};
public:
using const_iterator = StripeVector::const_iterator;
+ DistributorStripePool(bool test_mode, PrivateCtorTag);
DistributorStripePool();
~DistributorStripePool();
+ static std::unique_ptr<DistributorStripePool> make_non_threaded_pool_for_testing();
+
// Set up the stripe pool with a 1-1 relationship between the provided
// stripes and running threads. Can only be called once per pool.
//
@@ -78,6 +83,7 @@ public:
[[nodiscard]] DistributorStripeThread& stripe_thread(size_t idx) noexcept {
return *_stripes[idx];
}
+ void notify_stripe_event_has_triggered(size_t stripe_idx) noexcept;
[[nodiscard]] const TickableStripe& stripe_of_key(uint64_t key) const noexcept;
[[nodiscard]] TickableStripe& stripe_of_key(uint64_t key) noexcept;
[[nodiscard]] size_t stripe_count() const noexcept { return _stripes.size(); }
diff --git a/storage/src/vespa/storage/distributor/distributor_stripe_thread.cpp b/storage/src/vespa/storage/distributor/distributor_stripe_thread.cpp
index 372736b8d7d..9ff189ee9cb 100644
--- a/storage/src/vespa/storage/distributor/distributor_stripe_thread.cpp
+++ b/storage/src/vespa/storage/distributor/distributor_stripe_thread.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "distributor_stripe_thread.h"
#include "distributor_stripe.h"
#include "distributor_stripe_pool.h"
diff --git a/storage/src/vespa/storage/distributor/distributor_stripe_thread.h b/storage/src/vespa/storage/distributor/distributor_stripe_thread.h
index 60f10889afd..7015d27a53e 100644
--- a/storage/src/vespa/storage/distributor/distributor_stripe_thread.h
+++ b/storage/src/vespa/storage/distributor/distributor_stripe_thread.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/fastos/thread.h>
diff --git a/storage/src/vespa/storage/distributor/distributor_total_metrics.cpp b/storage/src/vespa/storage/distributor/distributor_total_metrics.cpp
index 510b1df2ff3..bb4bdfcbac7 100644
--- a/storage/src/vespa/storage/distributor/distributor_total_metrics.cpp
+++ b/storage/src/vespa/storage/distributor/distributor_total_metrics.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "distributor_total_metrics.h"
diff --git a/storage/src/vespa/storage/distributor/distributor_total_metrics.h b/storage/src/vespa/storage/distributor/distributor_total_metrics.h
index f0457fe64c3..dc25db7d028 100644
--- a/storage/src/vespa/storage/distributor/distributor_total_metrics.h
+++ b/storage/src/vespa/storage/distributor/distributor_total_metrics.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/distributor/distributormessagesender.cpp b/storage/src/vespa/storage/distributor/distributormessagesender.cpp
index 3afd2ea8139..c095b8a19a1 100644
--- a/storage/src/vespa/storage/distributor/distributormessagesender.cpp
+++ b/storage/src/vespa/storage/distributor/distributormessagesender.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "distributormessagesender.h"
#include <vespa/storageapi/messageapi/storagecommand.h>
diff --git a/storage/src/vespa/storage/distributor/distributormessagesender.h b/storage/src/vespa/storage/distributor/distributormessagesender.h
index c5a164ed036..198427078d6 100644
--- a/storage/src/vespa/storage/distributor/distributormessagesender.h
+++ b/storage/src/vespa/storage/distributor/distributormessagesender.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storage/common/cluster_context.h>
diff --git a/storage/src/vespa/storage/distributor/distributormetricsset.cpp b/storage/src/vespa/storage/distributor/distributormetricsset.cpp
index c95f74fd421..c3f94c4b281 100644
--- a/storage/src/vespa/storage/distributor/distributormetricsset.cpp
+++ b/storage/src/vespa/storage/distributor/distributormetricsset.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "distributormetricsset.h"
#include <vespa/vespalib/util/memoryusage.h>
diff --git a/storage/src/vespa/storage/distributor/distributormetricsset.h b/storage/src/vespa/storage/distributor/distributormetricsset.h
index 89d34fd6474..ac140b85282 100644
--- a/storage/src/vespa/storage/distributor/distributormetricsset.h
+++ b/storage/src/vespa/storage/distributor/distributormetricsset.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "persistence_operation_metric_set.h"
diff --git a/storage/src/vespa/storage/distributor/document_selection_parser.h b/storage/src/vespa/storage/distributor/document_selection_parser.h
index bc4021c0ccd..3e7e0209429 100644
--- a/storage/src/vespa/storage/distributor/document_selection_parser.h
+++ b/storage/src/vespa/storage/distributor/document_selection_parser.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/distributor/externaloperationhandler.cpp b/storage/src/vespa/storage/distributor/externaloperationhandler.cpp
index 2bc779aa47e..90906e2bdf1 100644
--- a/storage/src/vespa/storage/distributor/externaloperationhandler.cpp
+++ b/storage/src/vespa/storage/distributor/externaloperationhandler.cpp
@@ -1,8 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucket_space_distribution_context.h"
#include "crypto_uuid_generator.h"
-#include "distributor.h"
+#include "top_level_distributor.h"
#include "distributor_bucket_space.h"
#include "distributor_bucket_space_repo.h"
#include "externaloperationhandler.h"
diff --git a/storage/src/vespa/storage/distributor/externaloperationhandler.h b/storage/src/vespa/storage/distributor/externaloperationhandler.h
index fc1aa00ea65..076b182abdd 100644
--- a/storage/src/vespa/storage/distributor/externaloperationhandler.h
+++ b/storage/src/vespa/storage/distributor/externaloperationhandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/bucket/bucketid.h>
@@ -16,7 +16,7 @@ namespace storage { class PersistenceOperationMetricSet; }
namespace storage::distributor {
class DistributorMetricSet;
-class Distributor;
+class TopLevelDistributor;
class MaintenanceOperationGenerator;
class DirectDispatchSender;
class SequencingHandle;
diff --git a/storage/src/vespa/storage/distributor/ideal_service_layer_nodes_bundle.cpp b/storage/src/vespa/storage/distributor/ideal_service_layer_nodes_bundle.cpp
index 069be02eb10..315b7f3dd52 100644
--- a/storage/src/vespa/storage/distributor/ideal_service_layer_nodes_bundle.cpp
+++ b/storage/src/vespa/storage/distributor/ideal_service_layer_nodes_bundle.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "ideal_service_layer_nodes_bundle.h"
#include <vespa/vdslib/distribution/idealnodecalculator.h>
diff --git a/storage/src/vespa/storage/distributor/ideal_service_layer_nodes_bundle.h b/storage/src/vespa/storage/distributor/ideal_service_layer_nodes_bundle.h
index 2fd1bc8ad4b..2d77cf0c996 100644
--- a/storage/src/vespa/storage/distributor/ideal_service_layer_nodes_bundle.h
+++ b/storage/src/vespa/storage/distributor/ideal_service_layer_nodes_bundle.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vector>
diff --git a/storage/src/vespa/storage/distributor/ideal_state_total_metrics.cpp b/storage/src/vespa/storage/distributor/ideal_state_total_metrics.cpp
index 65dcad468fc..bb4dfc3f047 100644
--- a/storage/src/vespa/storage/distributor/ideal_state_total_metrics.cpp
+++ b/storage/src/vespa/storage/distributor/ideal_state_total_metrics.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "ideal_state_total_metrics.h"
diff --git a/storage/src/vespa/storage/distributor/ideal_state_total_metrics.h b/storage/src/vespa/storage/distributor/ideal_state_total_metrics.h
index c3207baa2f0..5c3d8bb0a93 100644
--- a/storage/src/vespa/storage/distributor/ideal_state_total_metrics.h
+++ b/storage/src/vespa/storage/distributor/ideal_state_total_metrics.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/distributor/idealstatemanager.cpp b/storage/src/vespa/storage/distributor/idealstatemanager.cpp
index 65e018765fe..a2e97938a73 100644
--- a/storage/src/vespa/storage/distributor/idealstatemanager.cpp
+++ b/storage/src/vespa/storage/distributor/idealstatemanager.cpp
@@ -1,8 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "idealstatemanager.h"
#include "statecheckers.h"
-#include "distributor.h"
+#include "top_level_distributor.h"
#include "idealstatemetricsset.h"
#include <vespa/vespalib/stllike/asciistream.h>
#include <vespa/storage/storageserver/storagemetricsset.h>
@@ -21,8 +21,7 @@ using document::BucketSpace;
using storage::lib::Node;
using storage::lib::NodeType;
-namespace storage {
-namespace distributor {
+namespace storage::distributor {
IdealStateManager::IdealStateManager(
const DistributorNodeContext& node_ctx,
@@ -298,5 +297,4 @@ void IdealStateManager::getBucketStatus(std::ostream& out) const {
}
}
-} // distributor
-} // storage
+} // storage::distributor
diff --git a/storage/src/vespa/storage/distributor/idealstatemanager.h b/storage/src/vespa/storage/distributor/idealstatemanager.h
index c0fa7dd70ab..69f6b6dc670 100644
--- a/storage/src/vespa/storage/distributor/idealstatemanager.h
+++ b/storage/src/vespa/storage/distributor/idealstatemanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "distributor_stripe_component.h"
diff --git a/storage/src/vespa/storage/distributor/idealstatemetricsset.cpp b/storage/src/vespa/storage/distributor/idealstatemetricsset.cpp
index fd193ad6fd8..5d712f643f3 100644
--- a/storage/src/vespa/storage/distributor/idealstatemetricsset.cpp
+++ b/storage/src/vespa/storage/distributor/idealstatemetricsset.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "idealstatemetricsset.h"
namespace storage {
@@ -86,7 +86,21 @@ IdealStateMetricSet::IdealStateMetricSet()
{{"logdefault"},{"yamasdefault"}},
"The number of buckets that we are rechecking for "
"ideal state operations", this),
- startOperationsLatency("start_operations_latency", {}, "Time used in startOperations()", this),
+ buckets_replicas_moving_out("bucket_replicas_moving_out",
+ {{"logdefault"},{"yamasdefault"}},
+ "Bucket replicas that should be moved out, e.g. retirement case or node "
+ "added to cluster that has higher ideal state priority.", this),
+ buckets_replicas_copying_in("bucket_replicas_copying_in",
+ {{"logdefault"},{"yamasdefault"}},
+ "Bucket replicas that should be copied in, e.g. node does not have a "
+ "replica for a bucket that it is in ideal state for", this),
+ buckets_replicas_copying_out("bucket_replicas_copying_out",
+ {{"logdefault"},{"yamasdefault"}},
+ "Bucket replicas that should be copied out, e.g. node is in ideal state "
+ "but might have to provide data other nodes in a merge", this),
+ buckets_replicas_syncing("bucket_replicas_syncing",
+ {{"logdefault"},{"yamasdefault"}},
+ "Bucket replicas that need syncing due to mismatching metadata", this),
nodesPerMerge("nodes_per_merge", {}, "The number of nodes involved in a single merge operation.", this)
{
createOperationMetrics();
diff --git a/storage/src/vespa/storage/distributor/idealstatemetricsset.h b/storage/src/vespa/storage/distributor/idealstatemetricsset.h
index c1fb39bb50a..7f9090ffc39 100644
--- a/storage/src/vespa/storage/distributor/idealstatemetricsset.h
+++ b/storage/src/vespa/storage/distributor/idealstatemetricsset.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/metrics/metricset.h>
@@ -38,8 +38,11 @@ public:
metrics::LongValueMetric buckets_toomanycopies;
metrics::LongValueMetric buckets;
metrics::LongValueMetric buckets_notrusted;
- metrics::LongValueMetric buckets_rechecking;
- metrics::LongAverageMetric startOperationsLatency;
+ metrics::LongValueMetric buckets_rechecking; // TODO remove, not used (but exposed by VespaMetricSet)
+ metrics::LongValueMetric buckets_replicas_moving_out;
+ metrics::LongValueMetric buckets_replicas_copying_in;
+ metrics::LongValueMetric buckets_replicas_copying_out;
+ metrics::LongValueMetric buckets_replicas_syncing;
metrics::DoubleAverageMetric nodesPerMerge;
void createOperationMetrics();
diff --git a/storage/src/vespa/storage/distributor/maintenance/CMakeLists.txt b/storage/src/vespa/storage/distributor/maintenance/CMakeLists.txt
index ee2651c4c04..57ed480ac47 100644
--- a/storage/src/vespa/storage/distributor/maintenance/CMakeLists.txt
+++ b/storage/src/vespa/storage/distributor/maintenance/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage_distributormaintenance OBJECT
SOURCES
maintenancescheduler.cpp
diff --git a/storage/src/vespa/storage/distributor/maintenance/bucketprioritydatabase.h b/storage/src/vespa/storage/distributor/maintenance/bucketprioritydatabase.h
index ec7b7791c11..c19268d461a 100644
--- a/storage/src/vespa/storage/distributor/maintenance/bucketprioritydatabase.h
+++ b/storage/src/vespa/storage/distributor/maintenance/bucketprioritydatabase.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "prioritizedbucket.h"
diff --git a/storage/src/vespa/storage/distributor/maintenance/maintenanceoperation.h b/storage/src/vespa/storage/distributor/maintenance/maintenanceoperation.h
index a1cdaf57119..625422baafb 100644
--- a/storage/src/vespa/storage/distributor/maintenance/maintenanceoperation.h
+++ b/storage/src/vespa/storage/distributor/maintenance/maintenanceoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storage/distributor/operations/operation.h>
diff --git a/storage/src/vespa/storage/distributor/maintenance/maintenanceoperationgenerator.h b/storage/src/vespa/storage/distributor/maintenance/maintenanceoperationgenerator.h
index 3cf6ad33694..d33f95ecc4e 100644
--- a/storage/src/vespa/storage/distributor/maintenance/maintenanceoperationgenerator.h
+++ b/storage/src/vespa/storage/distributor/maintenance/maintenanceoperationgenerator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vector>
diff --git a/storage/src/vespa/storage/distributor/maintenance/maintenancepriority.h b/storage/src/vespa/storage/distributor/maintenance/maintenancepriority.h
index ad82022b216..aa4f7b715f9 100644
--- a/storage/src/vespa/storage/distributor/maintenance/maintenancepriority.h
+++ b/storage/src/vespa/storage/distributor/maintenance/maintenancepriority.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace storage::distributor {
diff --git a/storage/src/vespa/storage/distributor/maintenance/maintenancepriorityandtype.h b/storage/src/vespa/storage/distributor/maintenance/maintenancepriorityandtype.h
index 4e272bf03cc..68602958815 100644
--- a/storage/src/vespa/storage/distributor/maintenance/maintenancepriorityandtype.h
+++ b/storage/src/vespa/storage/distributor/maintenance/maintenancepriorityandtype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storage/distributor/maintenance/maintenanceoperation.h>
diff --git a/storage/src/vespa/storage/distributor/maintenance/maintenanceprioritygenerator.h b/storage/src/vespa/storage/distributor/maintenance/maintenanceprioritygenerator.h
index bf32fd4ccc1..c9c3cb53956 100644
--- a/storage/src/vespa/storage/distributor/maintenance/maintenanceprioritygenerator.h
+++ b/storage/src/vespa/storage/distributor/maintenance/maintenanceprioritygenerator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vector>
diff --git a/storage/src/vespa/storage/distributor/maintenance/maintenancescanner.h b/storage/src/vespa/storage/distributor/maintenance/maintenancescanner.h
index 412fe91d690..3d5280e3b5a 100644
--- a/storage/src/vespa/storage/distributor/maintenance/maintenancescanner.h
+++ b/storage/src/vespa/storage/distributor/maintenance/maintenancescanner.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/bucket/bucketspace.h>
diff --git a/storage/src/vespa/storage/distributor/maintenance/maintenancescheduler.cpp b/storage/src/vespa/storage/distributor/maintenance/maintenancescheduler.cpp
index 6e502a0ef39..ee5e1278c50 100644
--- a/storage/src/vespa/storage/distributor/maintenance/maintenancescheduler.cpp
+++ b/storage/src/vespa/storage/distributor/maintenance/maintenancescheduler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "maintenancescheduler.h"
#include "maintenanceoperationgenerator.h"
diff --git a/storage/src/vespa/storage/distributor/maintenance/maintenancescheduler.h b/storage/src/vespa/storage/distributor/maintenance/maintenancescheduler.h
index acb0c555f49..33eb97292bb 100644
--- a/storage/src/vespa/storage/distributor/maintenance/maintenancescheduler.h
+++ b/storage/src/vespa/storage/distributor/maintenance/maintenancescheduler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storage/distributor/maintenance/prioritizedbucket.h>
diff --git a/storage/src/vespa/storage/distributor/maintenance/node_maintenance_stats_tracker.cpp b/storage/src/vespa/storage/distributor/maintenance/node_maintenance_stats_tracker.cpp
index 4e7f7d9d89d..5a6dedf8db4 100644
--- a/storage/src/vespa/storage/distributor/maintenance/node_maintenance_stats_tracker.cpp
+++ b/storage/src/vespa/storage/distributor/maintenance/node_maintenance_stats_tracker.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "node_maintenance_stats_tracker.h"
#include <ostream>
@@ -34,9 +34,9 @@ merge_bucket_spaces_stats(NodeMaintenanceStatsTracker::BucketSpacesStats& dest,
void
NodeMaintenanceStatsTracker::merge(const NodeMaintenanceStatsTracker& rhs)
{
- for (const auto& entry : rhs._stats) {
+ for (const auto& entry : rhs._node_stats) {
auto node_index = entry.first;
- merge_bucket_spaces_stats(_stats[node_index], entry.second);
+ merge_bucket_spaces_stats(_node_stats[node_index], entry.second);
}
}
diff --git a/storage/src/vespa/storage/distributor/maintenance/node_maintenance_stats_tracker.h b/storage/src/vespa/storage/distributor/maintenance/node_maintenance_stats_tracker.h
index 6399e53089b..eb00c8076ea 100644
--- a/storage/src/vespa/storage/distributor/maintenance/node_maintenance_stats_tracker.h
+++ b/storage/src/vespa/storage/distributor/maintenance/node_maintenance_stats_tracker.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <unordered_map>
@@ -50,7 +50,8 @@ public:
using PerNodeStats = std::unordered_map<uint16_t, BucketSpacesStats>;
private:
- PerNodeStats _stats;
+ PerNodeStats _node_stats;
+ NodeMaintenanceStats _total_stats;
static const NodeMaintenanceStats _emptyNodeMaintenanceStats;
public:
@@ -58,23 +59,28 @@ public:
~NodeMaintenanceStatsTracker();
void incMovingOut(uint16_t node, document::BucketSpace bucketSpace) {
- ++_stats[node][bucketSpace].movingOut;
+ ++_node_stats[node][bucketSpace].movingOut;
+ ++_total_stats.movingOut;
}
void incSyncing(uint16_t node, document::BucketSpace bucketSpace) {
- ++_stats[node][bucketSpace].syncing;
+ ++_node_stats[node][bucketSpace].syncing;
+ ++_total_stats.syncing;
}
void incCopyingIn(uint16_t node, document::BucketSpace bucketSpace) {
- ++_stats[node][bucketSpace].copyingIn;
+ ++_node_stats[node][bucketSpace].copyingIn;
+ ++_total_stats.copyingIn;
}
void incCopyingOut(uint16_t node, document::BucketSpace bucketSpace) {
- ++_stats[node][bucketSpace].copyingOut;
+ ++_node_stats[node][bucketSpace].copyingOut;
+ ++_total_stats.copyingOut;
}
void incTotal(uint16_t node, document::BucketSpace bucketSpace) {
- ++_stats[node][bucketSpace].total;
+ ++_node_stats[node][bucketSpace].total;
+ ++_total_stats.total;
}
/**
@@ -82,8 +88,8 @@ public:
* if none have been recorded yet
*/
const NodeMaintenanceStats& forNode(uint16_t node, document::BucketSpace bucketSpace) const {
- auto nodeItr = _stats.find(node);
- if (nodeItr != _stats.end()) {
+ auto nodeItr = _node_stats.find(node);
+ if (nodeItr != _node_stats.end()) {
auto bucketSpaceItr = nodeItr->second.find(bucketSpace);
if (bucketSpaceItr != nodeItr->second.end()) {
return bucketSpaceItr->second;
@@ -93,11 +99,18 @@ public:
}
const PerNodeStats& perNodeStats() const {
- return _stats;
+ return _node_stats;
+ }
+
+ // Note: the total statistics are across all replicas across all buckets across all bucket spaces.
+ // That means it's possible for a single bucket to count more than once, up to once per replica.
+ // So this should not be treated as a bucket-level statistic.
+ const NodeMaintenanceStats& total_replica_stats() const noexcept {
+ return _total_stats;
}
bool operator==(const NodeMaintenanceStatsTracker& rhs) const {
- return _stats == rhs._stats;
+ return _node_stats == rhs._node_stats;
}
void merge(const NodeMaintenanceStatsTracker& rhs);
};
diff --git a/storage/src/vespa/storage/distributor/maintenance/prioritizedbucket.cpp b/storage/src/vespa/storage/distributor/maintenance/prioritizedbucket.cpp
index 14fa6d058c1..48014959f3c 100644
--- a/storage/src/vespa/storage/distributor/maintenance/prioritizedbucket.cpp
+++ b/storage/src/vespa/storage/distributor/maintenance/prioritizedbucket.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "prioritizedbucket.h"
#include <iostream>
diff --git a/storage/src/vespa/storage/distributor/maintenance/prioritizedbucket.h b/storage/src/vespa/storage/distributor/maintenance/prioritizedbucket.h
index d6d68a956be..77f117803ec 100644
--- a/storage/src/vespa/storage/distributor/maintenance/prioritizedbucket.h
+++ b/storage/src/vespa/storage/distributor/maintenance/prioritizedbucket.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <iosfwd>
diff --git a/storage/src/vespa/storage/distributor/maintenance/simplebucketprioritydatabase.cpp b/storage/src/vespa/storage/distributor/maintenance/simplebucketprioritydatabase.cpp
index fa1a632d355..547cf26583a 100644
--- a/storage/src/vespa/storage/distributor/maintenance/simplebucketprioritydatabase.cpp
+++ b/storage/src/vespa/storage/distributor/maintenance/simplebucketprioritydatabase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simplebucketprioritydatabase.h"
#include <iostream>
diff --git a/storage/src/vespa/storage/distributor/maintenance/simplebucketprioritydatabase.h b/storage/src/vespa/storage/distributor/maintenance/simplebucketprioritydatabase.h
index db02c248980..ff5ebd9c6bb 100644
--- a/storage/src/vespa/storage/distributor/maintenance/simplebucketprioritydatabase.h
+++ b/storage/src/vespa/storage/distributor/maintenance/simplebucketprioritydatabase.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bucketprioritydatabase.h"
diff --git a/storage/src/vespa/storage/distributor/maintenance/simplemaintenancescanner.cpp b/storage/src/vespa/storage/distributor/maintenance/simplemaintenancescanner.cpp
index 2bfce9569cc..cb60e3eb0fc 100644
--- a/storage/src/vespa/storage/distributor/maintenance/simplemaintenancescanner.cpp
+++ b/storage/src/vespa/storage/distributor/maintenance/simplemaintenancescanner.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simplemaintenancescanner.h"
#include <vespa/storage/distributor/distributor_bucket_space.h>
#include <ostream>
diff --git a/storage/src/vespa/storage/distributor/maintenance/simplemaintenancescanner.h b/storage/src/vespa/storage/distributor/maintenance/simplemaintenancescanner.h
index 69e63fd4c65..a66cae11477 100644
--- a/storage/src/vespa/storage/distributor/maintenance/simplemaintenancescanner.h
+++ b/storage/src/vespa/storage/distributor/maintenance/simplemaintenancescanner.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "maintenancescanner.h"
diff --git a/storage/src/vespa/storage/distributor/messageguard.h b/storage/src/vespa/storage/distributor/messageguard.h
index b2be0cc67ff..2ed75d22577 100644
--- a/storage/src/vespa/storage/distributor/messageguard.h
+++ b/storage/src/vespa/storage/distributor/messageguard.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "pendingclusterstate.h"
diff --git a/storage/src/vespa/storage/distributor/messagetracker.cpp b/storage/src/vespa/storage/distributor/messagetracker.cpp
index 315af4f0c31..93db31bdc29 100644
--- a/storage/src/vespa/storage/distributor/messagetracker.cpp
+++ b/storage/src/vespa/storage/distributor/messagetracker.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "messagetracker.h"
#include <vespa/storageapi/messageapi/bucketcommand.h>
diff --git a/storage/src/vespa/storage/distributor/messagetracker.h b/storage/src/vespa/storage/distributor/messagetracker.h
index 1513e2b935a..d3d6899a854 100644
--- a/storage/src/vespa/storage/distributor/messagetracker.h
+++ b/storage/src/vespa/storage/distributor/messagetracker.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storage/common/cluster_context.h>
diff --git a/storage/src/vespa/storage/distributor/min_replica_provider.cpp b/storage/src/vespa/storage/distributor/min_replica_provider.cpp
index c9929940560..f503672af39 100644
--- a/storage/src/vespa/storage/distributor/min_replica_provider.cpp
+++ b/storage/src/vespa/storage/distributor/min_replica_provider.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "min_replica_provider.h"
diff --git a/storage/src/vespa/storage/distributor/min_replica_provider.h b/storage/src/vespa/storage/distributor/min_replica_provider.h
index ba946cd5a7f..56fd1e8fc81 100644
--- a/storage/src/vespa/storage/distributor/min_replica_provider.h
+++ b/storage/src/vespa/storage/distributor/min_replica_provider.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <stdint.h>
diff --git a/storage/src/vespa/storage/distributor/multi_threaded_stripe_access_guard.cpp b/storage/src/vespa/storage/distributor/multi_threaded_stripe_access_guard.cpp
index 80af41e57ad..1a44b79ac3a 100644
--- a/storage/src/vespa/storage/distributor/multi_threaded_stripe_access_guard.cpp
+++ b/storage/src/vespa/storage/distributor/multi_threaded_stripe_access_guard.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "multi_threaded_stripe_access_guard.h"
#include "distributor_stripe.h"
#include "distributor_stripe_pool.h"
@@ -51,9 +51,11 @@ void MultiThreadedStripeAccessGuard::clear_pending_cluster_state_bundle() {
});
}
-void MultiThreadedStripeAccessGuard::enable_cluster_state_bundle(const lib::ClusterStateBundle& new_state) {
+void MultiThreadedStripeAccessGuard::enable_cluster_state_bundle(const lib::ClusterStateBundle& new_state,
+ bool has_bucket_ownership_change)
+{
for_each_stripe([&](TickableStripe& stripe) {
- stripe.enable_cluster_state_bundle(new_state);
+ stripe.enable_cluster_state_bundle(new_state, has_bucket_ownership_change);
});
}
@@ -138,8 +140,11 @@ void MultiThreadedStripeAccessGuard::report_bucket_db_status(document::BucketSpa
StripeAccessGuard::PendingOperationStats
MultiThreadedStripeAccessGuard::pending_operation_stats() const {
- // TODO STRIPE multiple stripes
- return first_stripe().pending_operation_stats();
+ StripeAccessGuard::PendingOperationStats stats(0, 0);
+ for_each_stripe([&](const TickableStripe& stripe) {
+ stats.merge(stripe.pending_operation_stats());
+ });
+ return stats;
}
void MultiThreadedStripeAccessGuard::report_single_bucket_requests(vespalib::xml::XmlOutputStream& xos) const {
@@ -154,14 +159,6 @@ void MultiThreadedStripeAccessGuard::report_delayed_single_bucket_requests(vespa
});
}
-TickableStripe& MultiThreadedStripeAccessGuard::first_stripe() noexcept {
- return _stripe_pool.stripe_thread(0).stripe();
-}
-
-const TickableStripe& MultiThreadedStripeAccessGuard::first_stripe() const noexcept {
- return _stripe_pool.stripe_thread(0).stripe();
-}
-
template <typename Func>
void MultiThreadedStripeAccessGuard::for_each_stripe(Func&& f) {
for (auto& stripe_thread : _stripe_pool) {
diff --git a/storage/src/vespa/storage/distributor/multi_threaded_stripe_access_guard.h b/storage/src/vespa/storage/distributor/multi_threaded_stripe_access_guard.h
index da5fd8e5f37..53799fa338b 100644
--- a/storage/src/vespa/storage/distributor/multi_threaded_stripe_access_guard.h
+++ b/storage/src/vespa/storage/distributor/multi_threaded_stripe_access_guard.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "stripe_access_guard.h"
@@ -34,7 +34,8 @@ public:
void update_distribution_config(const BucketSpaceDistributionConfigs& new_configs) override;
void set_pending_cluster_state_bundle(const lib::ClusterStateBundle& pending_state) override;
void clear_pending_cluster_state_bundle() override;
- void enable_cluster_state_bundle(const lib::ClusterStateBundle& new_state) override;
+ void enable_cluster_state_bundle(const lib::ClusterStateBundle& new_state,
+ bool has_bucket_ownership_change) override;
void notify_distribution_change_enabled() override;
PotentialDataLossReport remove_superfluous_buckets(document::BucketSpace bucket_space,
@@ -59,10 +60,6 @@ public:
void report_delayed_single_bucket_requests(vespalib::xml::XmlOutputStream& xos) const override;
private:
- // TODO STRIPE remove once multi threaded stripe support is implemented
- TickableStripe& first_stripe() noexcept;
- const TickableStripe& first_stripe() const noexcept;
-
template <typename Func>
void for_each_stripe(Func&& f);
diff --git a/storage/src/vespa/storage/distributor/nodeinfo.cpp b/storage/src/vespa/storage/distributor/nodeinfo.cpp
index 9430f1691e0..44a4670bd54 100644
--- a/storage/src/vespa/storage/distributor/nodeinfo.cpp
+++ b/storage/src/vespa/storage/distributor/nodeinfo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "nodeinfo.h"
#include <vespa/storageframework/generic/clock/clock.h>
diff --git a/storage/src/vespa/storage/distributor/nodeinfo.h b/storage/src/vespa/storage/distributor/nodeinfo.h
index a28a8965714..0e1b04561fb 100644
--- a/storage/src/vespa/storage/distributor/nodeinfo.h
+++ b/storage/src/vespa/storage/distributor/nodeinfo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::distributor::NodeInfo
* \ingroup distributor
diff --git a/storage/src/vespa/storage/distributor/operation_sequencer.cpp b/storage/src/vespa/storage/distributor/operation_sequencer.cpp
index 234952c1e34..e9374b9d54b 100644
--- a/storage/src/vespa/storage/distributor/operation_sequencer.cpp
+++ b/storage/src/vespa/storage/distributor/operation_sequencer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "operation_sequencer.h"
#include <vespa/document/base/documentid.h>
diff --git a/storage/src/vespa/storage/distributor/operation_sequencer.h b/storage/src/vespa/storage/distributor/operation_sequencer.h
index 72a6f547a0d..dd38df9267e 100644
--- a/storage/src/vespa/storage/distributor/operation_sequencer.h
+++ b/storage/src/vespa/storage/distributor/operation_sequencer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/base/globalid.h>
diff --git a/storage/src/vespa/storage/distributor/operationowner.cpp b/storage/src/vespa/storage/distributor/operationowner.cpp
index c201d894079..c118209353b 100644
--- a/storage/src/vespa/storage/distributor/operationowner.cpp
+++ b/storage/src/vespa/storage/distributor/operationowner.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "operationowner.h"
#include <vespa/storage/distributor/operations/operation.h>
diff --git a/storage/src/vespa/storage/distributor/operationowner.h b/storage/src/vespa/storage/distributor/operationowner.h
index c469b35a8dc..d4afdf2cce7 100644
--- a/storage/src/vespa/storage/distributor/operationowner.h
+++ b/storage/src/vespa/storage/distributor/operationowner.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "sentmessagemap.h"
diff --git a/storage/src/vespa/storage/distributor/operations/CMakeLists.txt b/storage/src/vespa/storage/distributor/operations/CMakeLists.txt
index 4b970b0e9bc..5c6a1f3d84c 100644
--- a/storage/src/vespa/storage/distributor/operations/CMakeLists.txt
+++ b/storage/src/vespa/storage/distributor/operations/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage_distributoroperation OBJECT
SOURCES
operation.cpp
diff --git a/storage/src/vespa/storage/distributor/operations/external/CMakeLists.txt b/storage/src/vespa/storage/distributor/operations/external/CMakeLists.txt
index 57a5a6cdde5..8556815b241 100644
--- a/storage/src/vespa/storage/distributor/operations/external/CMakeLists.txt
+++ b/storage/src/vespa/storage/distributor/operations/external/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage_distributoroperationexternal OBJECT
SOURCES
getoperation.cpp
diff --git a/storage/src/vespa/storage/distributor/operations/external/getoperation.cpp b/storage/src/vespa/storage/distributor/operations/external/getoperation.cpp
index db84575db31..06872cadde6 100644
--- a/storage/src/vespa/storage/distributor/operations/external/getoperation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/external/getoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "getoperation.h"
#include <vespa/storage/distributor/distributor_node_context.h>
#include <vespa/storage/distributor/distributormetricsset.h>
diff --git a/storage/src/vespa/storage/distributor/operations/external/getoperation.h b/storage/src/vespa/storage/distributor/operations/external/getoperation.h
index 10d457922c9..943a92f4b36 100644
--- a/storage/src/vespa/storage/distributor/operations/external/getoperation.h
+++ b/storage/src/vespa/storage/distributor/operations/external/getoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "newest_replica.h"
diff --git a/storage/src/vespa/storage/distributor/operations/external/newest_replica.cpp b/storage/src/vespa/storage/distributor/operations/external/newest_replica.cpp
index 2520db3e57a..4632501d59b 100644
--- a/storage/src/vespa/storage/distributor/operations/external/newest_replica.cpp
+++ b/storage/src/vespa/storage/distributor/operations/external/newest_replica.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "newest_replica.h"
#include <ostream>
diff --git a/storage/src/vespa/storage/distributor/operations/external/newest_replica.h b/storage/src/vespa/storage/distributor/operations/external/newest_replica.h
index ec2b73e52ab..5fcb719aee2 100644
--- a/storage/src/vespa/storage/distributor/operations/external/newest_replica.h
+++ b/storage/src/vespa/storage/distributor/operations/external/newest_replica.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/bucket/bucketid.h>
diff --git a/storage/src/vespa/storage/distributor/operations/external/putoperation.cpp b/storage/src/vespa/storage/distributor/operations/external/putoperation.cpp
index 9d9a04e9dcc..cecca947cce 100644
--- a/storage/src/vespa/storage/distributor/operations/external/putoperation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/external/putoperation.cpp
@@ -1,16 +1,17 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "putoperation.h"
#include <vespa/document/fieldvalue/document.h>
#include <vespa/storage/distributor/activecopy.h>
+#include <vespa/storage/distributor/distributor_bucket_space.h>
#include <vespa/storage/distributor/operationtargetresolverimpl.h>
#include <vespa/storage/distributor/pendingmessagetracker.h>
+#include <vespa/storage/distributor/storage_node_up_states.h>
#include <vespa/storageapi/message/persistence.h>
+#include <vespa/vdslib/distribution/distribution.h>
#include <vespa/vdslib/distribution/idealnodecalculatorimpl.h>
#include <vespa/vdslib/state/clusterstate.h>
-#include <vespa/storage/distributor/distributor_bucket_space.h>
-#include <vespa/vdslib/distribution/distribution.h>
#include <algorithm>
#include <vespa/log/log.h>
diff --git a/storage/src/vespa/storage/distributor/operations/external/putoperation.h b/storage/src/vespa/storage/distributor/operations/external/putoperation.h
index 57ae2e3ba9f..d6d24815f60 100644
--- a/storage/src/vespa/storage/distributor/operations/external/putoperation.h
+++ b/storage/src/vespa/storage/distributor/operations/external/putoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/distributor/operations/external/read_for_write_visitor_operation.cpp b/storage/src/vespa/storage/distributor/operations/external/read_for_write_visitor_operation.cpp
index 1d6b0fed6f9..7fb8890572a 100644
--- a/storage/src/vespa/storage/distributor/operations/external/read_for_write_visitor_operation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/external/read_for_write_visitor_operation.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "read_for_write_visitor_operation.h"
#include "visitoroperation.h"
diff --git a/storage/src/vespa/storage/distributor/operations/external/read_for_write_visitor_operation.h b/storage/src/vespa/storage/distributor/operations/external/read_for_write_visitor_operation.h
index 28474bd52f1..dac9ed49bd3 100644
--- a/storage/src/vespa/storage/distributor/operations/external/read_for_write_visitor_operation.h
+++ b/storage/src/vespa/storage/distributor/operations/external/read_for_write_visitor_operation.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storage/distributor/operations/operation.h>
diff --git a/storage/src/vespa/storage/distributor/operations/external/removelocationoperation.cpp b/storage/src/vespa/storage/distributor/operations/external/removelocationoperation.cpp
index 54bc6782893..5fd42021a63 100644
--- a/storage/src/vespa/storage/distributor/operations/external/removelocationoperation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/external/removelocationoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "removelocationoperation.h"
#include <vespa/storageapi/message/removelocation.h>
diff --git a/storage/src/vespa/storage/distributor/operations/external/removelocationoperation.h b/storage/src/vespa/storage/distributor/operations/external/removelocationoperation.h
index 8cac26c5669..1f951904ea1 100644
--- a/storage/src/vespa/storage/distributor/operations/external/removelocationoperation.h
+++ b/storage/src/vespa/storage/distributor/operations/external/removelocationoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storage/distributor/operations/operation.h>
diff --git a/storage/src/vespa/storage/distributor/operations/external/removeoperation.cpp b/storage/src/vespa/storage/distributor/operations/external/removeoperation.cpp
index 6626e6f7171..7beb95451e9 100644
--- a/storage/src/vespa/storage/distributor/operations/external/removeoperation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/external/removeoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "removeoperation.h"
#include <vespa/storageapi/message/persistence.h>
#include <vespa/storage/distributor/distributor_bucket_space.h>
diff --git a/storage/src/vespa/storage/distributor/operations/external/removeoperation.h b/storage/src/vespa/storage/distributor/operations/external/removeoperation.h
index 2ac26b0d719..53de79ac9b3 100644
--- a/storage/src/vespa/storage/distributor/operations/external/removeoperation.h
+++ b/storage/src/vespa/storage/distributor/operations/external/removeoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storage/distributor/operations/sequenced_operation.h>
diff --git a/storage/src/vespa/storage/distributor/operations/external/statbucketlistoperation.cpp b/storage/src/vespa/storage/distributor/operations/external/statbucketlistoperation.cpp
index 12d1cc3f216..8dd291c19bb 100644
--- a/storage/src/vespa/storage/distributor/operations/external/statbucketlistoperation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/external/statbucketlistoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "statbucketlistoperation.h"
#include <vespa/storageapi/message/stat.h>
#include <vespa/storage/distributor/maintenance/maintenanceoperationgenerator.h>
diff --git a/storage/src/vespa/storage/distributor/operations/external/statbucketlistoperation.h b/storage/src/vespa/storage/distributor/operations/external/statbucketlistoperation.h
index 831ebe0f9ce..9dcab1ee0f6 100644
--- a/storage/src/vespa/storage/distributor/operations/external/statbucketlistoperation.h
+++ b/storage/src/vespa/storage/distributor/operations/external/statbucketlistoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/hdr_abort.h>
diff --git a/storage/src/vespa/storage/distributor/operations/external/statbucketoperation.cpp b/storage/src/vespa/storage/distributor/operations/external/statbucketoperation.cpp
index 9c97f12b89a..20cd8c67c29 100644
--- a/storage/src/vespa/storage/distributor/operations/external/statbucketoperation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/external/statbucketoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "statbucketoperation.h"
#include <vespa/storage/distributor/distributor_stripe_component.h>
#include <vespa/storageapi/message/persistence.h>
diff --git a/storage/src/vespa/storage/distributor/operations/external/statbucketoperation.h b/storage/src/vespa/storage/distributor/operations/external/statbucketoperation.h
index d0c299d88bc..44215d2c68f 100644
--- a/storage/src/vespa/storage/distributor/operations/external/statbucketoperation.h
+++ b/storage/src/vespa/storage/distributor/operations/external/statbucketoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class StatCallback
* @ingroup distributor
diff --git a/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.cpp b/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.cpp
index db30fcc7196..563c2d573cd 100644
--- a/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "getoperation.h"
#include "putoperation.h"
diff --git a/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.h b/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.h
index ff49e2068a6..aa59a457eb7 100644
--- a/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.h
+++ b/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "newest_replica.h"
diff --git a/storage/src/vespa/storage/distributor/operations/external/updateoperation.cpp b/storage/src/vespa/storage/distributor/operations/external/updateoperation.cpp
index fbdd26b9eff..3aa231e1790 100644
--- a/storage/src/vespa/storage/distributor/operations/external/updateoperation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/external/updateoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "updateoperation.h"
#include <vespa/document/fieldvalue/document.h>
diff --git a/storage/src/vespa/storage/distributor/operations/external/updateoperation.h b/storage/src/vespa/storage/distributor/operations/external/updateoperation.h
index 533992e926c..46eba48e328 100644
--- a/storage/src/vespa/storage/distributor/operations/external/updateoperation.h
+++ b/storage/src/vespa/storage/distributor/operations/external/updateoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storage/distributor/persistencemessagetracker.h>
diff --git a/storage/src/vespa/storage/distributor/operations/external/visitoroperation.cpp b/storage/src/vespa/storage/distributor/operations/external/visitoroperation.cpp
index 7679d4bc0e5..42411d53d52 100644
--- a/storage/src/vespa/storage/distributor/operations/external/visitoroperation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/external/visitoroperation.cpp
@@ -1,9 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "visitoroperation.h"
#include <vespa/storage/common/reindexing_constants.h>
#include <vespa/storage/storageserver/storagemetricsset.h>
-#include <vespa/storage/distributor/distributor.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
#include <vespa/storage/distributor/distributor_bucket_space.h>
#include <vespa/storage/distributor/bucketownership.h>
#include <vespa/storage/distributor/operations/external/visitororder.h>
diff --git a/storage/src/vespa/storage/distributor/operations/external/visitoroperation.h b/storage/src/vespa/storage/distributor/operations/external/visitoroperation.h
index 9ea4cdfc4ae..c38c463a313 100644
--- a/storage/src/vespa/storage/distributor/operations/external/visitoroperation.h
+++ b/storage/src/vespa/storage/distributor/operations/external/visitoroperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storage/distributor/operations/operation.h>
diff --git a/storage/src/vespa/storage/distributor/operations/external/visitororder.h b/storage/src/vespa/storage/distributor/operations/external/visitororder.h
index f33500bfc1f..21dc8b1c6c6 100644
--- a/storage/src/vespa/storage/distributor/operations/external/visitororder.h
+++ b/storage/src/vespa/storage/distributor/operations/external/visitororder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <climits>
#include <vespa/document/bucket/bucketid.h>
diff --git a/storage/src/vespa/storage/distributor/operations/idealstate/CMakeLists.txt b/storage/src/vespa/storage/distributor/operations/idealstate/CMakeLists.txt
index 43a157f7d90..9de938b37b2 100644
--- a/storage/src/vespa/storage/distributor/operations/idealstate/CMakeLists.txt
+++ b/storage/src/vespa/storage/distributor/operations/idealstate/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage_distributoroperationidealstate OBJECT
SOURCES
garbagecollectionoperation.cpp
diff --git a/storage/src/vespa/storage/distributor/operations/idealstate/garbagecollectionoperation.cpp b/storage/src/vespa/storage/distributor/operations/idealstate/garbagecollectionoperation.cpp
index f611968b481..fbe1c142b09 100644
--- a/storage/src/vespa/storage/distributor/operations/idealstate/garbagecollectionoperation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/idealstate/garbagecollectionoperation.cpp
@@ -1,9 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "garbagecollectionoperation.h"
#include <vespa/storage/distributor/idealstatemanager.h>
#include <vespa/storage/distributor/idealstatemetricsset.h>
-#include <vespa/storage/distributor/distributor.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
#include <vespa/storage/distributor/distributor_bucket_space.h>
#include <vespa/storageapi/message/removelocation.h>
diff --git a/storage/src/vespa/storage/distributor/operations/idealstate/garbagecollectionoperation.h b/storage/src/vespa/storage/distributor/operations/idealstate/garbagecollectionoperation.h
index 01ef607912c..2e010a61bde 100644
--- a/storage/src/vespa/storage/distributor/operations/idealstate/garbagecollectionoperation.h
+++ b/storage/src/vespa/storage/distributor/operations/idealstate/garbagecollectionoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "idealstateoperation.h"
diff --git a/storage/src/vespa/storage/distributor/operations/idealstate/idealstateoperation.cpp b/storage/src/vespa/storage/distributor/operations/idealstate/idealstateoperation.cpp
index ad5467d9156..7265afee84a 100644
--- a/storage/src/vespa/storage/distributor/operations/idealstate/idealstateoperation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/idealstate/idealstateoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "idealstateoperation.h"
#include <vespa/storage/distributor/idealstatemanager.h>
#include <vespa/storage/distributor/pendingmessagetracker.h>
diff --git a/storage/src/vespa/storage/distributor/operations/idealstate/idealstateoperation.h b/storage/src/vespa/storage/distributor/operations/idealstate/idealstateoperation.h
index d41640b468e..9ff0fb126f6 100644
--- a/storage/src/vespa/storage/distributor/operations/idealstate/idealstateoperation.h
+++ b/storage/src/vespa/storage/distributor/operations/idealstate/idealstateoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storage/distributor/maintenance/maintenanceoperation.h>
diff --git a/storage/src/vespa/storage/distributor/operations/idealstate/joinoperation.cpp b/storage/src/vespa/storage/distributor/operations/idealstate/joinoperation.cpp
index 15d3129b309..e4130f28eee 100644
--- a/storage/src/vespa/storage/distributor/operations/idealstate/joinoperation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/idealstate/joinoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "joinoperation.h"
#include <vespa/storageapi/message/bucketsplitting.h>
diff --git a/storage/src/vespa/storage/distributor/operations/idealstate/joinoperation.h b/storage/src/vespa/storage/distributor/operations/idealstate/joinoperation.h
index 4515092cfef..d8f77d89b8a 100644
--- a/storage/src/vespa/storage/distributor/operations/idealstate/joinoperation.h
+++ b/storage/src/vespa/storage/distributor/operations/idealstate/joinoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "idealstateoperation.h"
diff --git a/storage/src/vespa/storage/distributor/operations/idealstate/mergelimiter.cpp b/storage/src/vespa/storage/distributor/operations/idealstate/mergelimiter.cpp
index 13931c73e3c..722fdaea1a4 100644
--- a/storage/src/vespa/storage/distributor/operations/idealstate/mergelimiter.cpp
+++ b/storage/src/vespa/storage/distributor/operations/idealstate/mergelimiter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mergelimiter.h"
#include <cassert>
diff --git a/storage/src/vespa/storage/distributor/operations/idealstate/mergelimiter.h b/storage/src/vespa/storage/distributor/operations/idealstate/mergelimiter.h
index 1cca0cc7895..6558aaf7f04 100644
--- a/storage/src/vespa/storage/distributor/operations/idealstate/mergelimiter.h
+++ b/storage/src/vespa/storage/distributor/operations/idealstate/mergelimiter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/distributor/operations/idealstate/mergemetadata.cpp b/storage/src/vespa/storage/distributor/operations/idealstate/mergemetadata.cpp
index a3c94525fb1..c5487511296 100644
--- a/storage/src/vespa/storage/distributor/operations/idealstate/mergemetadata.cpp
+++ b/storage/src/vespa/storage/distributor/operations/idealstate/mergemetadata.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mergemetadata.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/storage/src/vespa/storage/distributor/operations/idealstate/mergemetadata.h b/storage/src/vespa/storage/distributor/operations/idealstate/mergemetadata.h
index 2e4c61b10d5..446ab0407ca 100644
--- a/storage/src/vespa/storage/distributor/operations/idealstate/mergemetadata.h
+++ b/storage/src/vespa/storage/distributor/operations/idealstate/mergemetadata.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/distributor/operations/idealstate/mergeoperation.cpp b/storage/src/vespa/storage/distributor/operations/idealstate/mergeoperation.cpp
index 749787c51b9..7008cb36666 100644
--- a/storage/src/vespa/storage/distributor/operations/idealstate/mergeoperation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/idealstate/mergeoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mergeoperation.h"
#include <vespa/document/bucket/fixed_bucket_spaces.h>
#include <vespa/storage/distributor/idealstatemanager.h>
diff --git a/storage/src/vespa/storage/distributor/operations/idealstate/mergeoperation.h b/storage/src/vespa/storage/distributor/operations/idealstate/mergeoperation.h
index 945b9318482..2be98785fdb 100644
--- a/storage/src/vespa/storage/distributor/operations/idealstate/mergeoperation.h
+++ b/storage/src/vespa/storage/distributor/operations/idealstate/mergeoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/distributor/operations/idealstate/removebucketoperation.cpp b/storage/src/vespa/storage/distributor/operations/idealstate/removebucketoperation.cpp
index f6458bc0522..9a57722dc7e 100644
--- a/storage/src/vespa/storage/distributor/operations/idealstate/removebucketoperation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/idealstate/removebucketoperation.cpp
@@ -1,8 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "removebucketoperation.h"
#include <vespa/storage/distributor/idealstatemanager.h>
-#include <vespa/storage/distributor/distributor.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
#include <vespa/storage/distributor/distributor_bucket_space.h>
#include <vespa/log/log.h>
diff --git a/storage/src/vespa/storage/distributor/operations/idealstate/removebucketoperation.h b/storage/src/vespa/storage/distributor/operations/idealstate/removebucketoperation.h
index a9d7f4ebf04..a0d496f948a 100644
--- a/storage/src/vespa/storage/distributor/operations/idealstate/removebucketoperation.h
+++ b/storage/src/vespa/storage/distributor/operations/idealstate/removebucketoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "idealstateoperation.h"
diff --git a/storage/src/vespa/storage/distributor/operations/idealstate/setbucketstateoperation.cpp b/storage/src/vespa/storage/distributor/operations/idealstate/setbucketstateoperation.cpp
index 88e53f7da06..76fb6829609 100644
--- a/storage/src/vespa/storage/distributor/operations/idealstate/setbucketstateoperation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/idealstate/setbucketstateoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "setbucketstateoperation.h"
#include <vespa/storage/distributor/idealstatemanager.h>
diff --git a/storage/src/vespa/storage/distributor/operations/idealstate/setbucketstateoperation.h b/storage/src/vespa/storage/distributor/operations/idealstate/setbucketstateoperation.h
index 5c13aaf5c05..18160ba4d84 100644
--- a/storage/src/vespa/storage/distributor/operations/idealstate/setbucketstateoperation.h
+++ b/storage/src/vespa/storage/distributor/operations/idealstate/setbucketstateoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "idealstateoperation.h"
diff --git a/storage/src/vespa/storage/distributor/operations/idealstate/splitoperation.cpp b/storage/src/vespa/storage/distributor/operations/idealstate/splitoperation.cpp
index d7f03740e4d..649503cf0f5 100644
--- a/storage/src/vespa/storage/distributor/operations/idealstate/splitoperation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/idealstate/splitoperation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "splitoperation.h"
#include <vespa/storage/distributor/idealstatemanager.h>
diff --git a/storage/src/vespa/storage/distributor/operations/idealstate/splitoperation.h b/storage/src/vespa/storage/distributor/operations/idealstate/splitoperation.h
index 5581edf41bd..ee957309088 100644
--- a/storage/src/vespa/storage/distributor/operations/idealstate/splitoperation.h
+++ b/storage/src/vespa/storage/distributor/operations/idealstate/splitoperation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "idealstateoperation.h"
diff --git a/storage/src/vespa/storage/distributor/operations/operation.cpp b/storage/src/vespa/storage/distributor/operations/operation.cpp
index bcc9a36b010..60c9cd0db97 100644
--- a/storage/src/vespa/storage/distributor/operations/operation.cpp
+++ b/storage/src/vespa/storage/distributor/operations/operation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "operation.h"
#include <vespa/storage/common/distributorcomponent.h>
diff --git a/storage/src/vespa/storage/distributor/operations/operation.h b/storage/src/vespa/storage/distributor/operations/operation.h
index 18f7214c498..e3d452a90dc 100644
--- a/storage/src/vespa/storage/distributor/operations/operation.h
+++ b/storage/src/vespa/storage/distributor/operations/operation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vdslib/state/nodetype.h>
diff --git a/storage/src/vespa/storage/distributor/operations/sequenced_operation.h b/storage/src/vespa/storage/distributor/operations/sequenced_operation.h
index 28d558b2da4..5f4c0b0b6e9 100644
--- a/storage/src/vespa/storage/distributor/operations/sequenced_operation.h
+++ b/storage/src/vespa/storage/distributor/operations/sequenced_operation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "operation.h"
diff --git a/storage/src/vespa/storage/distributor/operationstarter.h b/storage/src/vespa/storage/distributor/operationstarter.h
index 75c794db7c7..21def2eedeb 100644
--- a/storage/src/vespa/storage/distributor/operationstarter.h
+++ b/storage/src/vespa/storage/distributor/operationstarter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/storage/src/vespa/storage/distributor/operationtargetresolver.cpp b/storage/src/vespa/storage/distributor/operationtargetresolver.cpp
index fa4697f7861..6362e6fa2ed 100644
--- a/storage/src/vespa/storage/distributor/operationtargetresolver.cpp
+++ b/storage/src/vespa/storage/distributor/operationtargetresolver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "operationtargetresolver.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/storage/src/vespa/storage/distributor/operationtargetresolver.h b/storage/src/vespa/storage/distributor/operationtargetresolver.h
index 20666ea254c..ea8c901fbeb 100644
--- a/storage/src/vespa/storage/distributor/operationtargetresolver.h
+++ b/storage/src/vespa/storage/distributor/operationtargetresolver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \brief Interface to deduct what bucket copies to send load to.
*
diff --git a/storage/src/vespa/storage/distributor/operationtargetresolverimpl.cpp b/storage/src/vespa/storage/distributor/operationtargetresolverimpl.cpp
index 7e2da056b5a..86b469fe471 100644
--- a/storage/src/vespa/storage/distributor/operationtargetresolverimpl.cpp
+++ b/storage/src/vespa/storage/distributor/operationtargetresolverimpl.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "operationtargetresolverimpl.h"
#include "distributor_bucket_space.h"
diff --git a/storage/src/vespa/storage/distributor/operationtargetresolverimpl.h b/storage/src/vespa/storage/distributor/operationtargetresolverimpl.h
index a23c8ba7f59..9ff65475fa4 100644
--- a/storage/src/vespa/storage/distributor/operationtargetresolverimpl.h
+++ b/storage/src/vespa/storage/distributor/operationtargetresolverimpl.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/distributor/outdated_nodes.h b/storage/src/vespa/storage/distributor/outdated_nodes.h
index fddb1806d82..cef799ee4aa 100644
--- a/storage/src/vespa/storage/distributor/outdated_nodes.h
+++ b/storage/src/vespa/storage/distributor/outdated_nodes.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/distributor/outdated_nodes_map.h b/storage/src/vespa/storage/distributor/outdated_nodes_map.h
index 8d08b20732b..218af20646d 100644
--- a/storage/src/vespa/storage/distributor/outdated_nodes_map.h
+++ b/storage/src/vespa/storage/distributor/outdated_nodes_map.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/distributor/ownership_transfer_safe_time_point_calculator.cpp b/storage/src/vespa/storage/distributor/ownership_transfer_safe_time_point_calculator.cpp
index a6954c973b6..6a03b2aa9bd 100644
--- a/storage/src/vespa/storage/distributor/ownership_transfer_safe_time_point_calculator.cpp
+++ b/storage/src/vespa/storage/distributor/ownership_transfer_safe_time_point_calculator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "ownership_transfer_safe_time_point_calculator.h"
#include <thread>
@@ -7,8 +7,7 @@ namespace storage {
namespace distributor {
OwnershipTransferSafeTimePointCalculator::TimePoint
-OwnershipTransferSafeTimePointCalculator::safeTimePoint(
- TimePoint now) const
+OwnershipTransferSafeTimePointCalculator::safeTimePoint(TimePoint now) const
{
if (_max_cluster_clock_skew.count() == 0) {
return TimePoint{};
@@ -27,8 +26,7 @@ OwnershipTransferSafeTimePointCalculator::safeTimePoint(
// adding the max skew. This prevents generating time stamps within
// the same whole second as another distributor already has done for
// any of the buckets a node now owns.
- auto now_sec = std::chrono::duration_cast<std::chrono::seconds>(
- now.time_since_epoch());
+ auto now_sec = std::chrono::duration_cast<std::chrono::seconds>(now.time_since_epoch());
return TimePoint(now_sec + std::chrono::seconds(1) + _max_cluster_clock_skew);
}
diff --git a/storage/src/vespa/storage/distributor/ownership_transfer_safe_time_point_calculator.h b/storage/src/vespa/storage/distributor/ownership_transfer_safe_time_point_calculator.h
index 407757d83ff..9e1409854b5 100644
--- a/storage/src/vespa/storage/distributor/ownership_transfer_safe_time_point_calculator.h
+++ b/storage/src/vespa/storage/distributor/ownership_transfer_safe_time_point_calculator.h
@@ -1,11 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <chrono>
-namespace storage {
-namespace distributor {
+namespace storage::distributor {
/**
* When bucket ownership changes in a cluster, there exists a time period
@@ -25,7 +24,6 @@ namespace distributor {
* equal to or lower than this. The stop-gap also breaks down if, in fact,
* the clock skew is higher than the expected one.
*
- * This is an interface to avoid having to do real wall-clocks in unit tests.
*/
class OwnershipTransferSafeTimePointCalculator {
std::chrono::seconds _max_cluster_clock_skew;
@@ -47,4 +45,3 @@ public:
};
}
-}
diff --git a/storage/src/vespa/storage/distributor/pending_bucket_space_db_transition.cpp b/storage/src/vespa/storage/distributor/pending_bucket_space_db_transition.cpp
index 335d070ad7b..591f2a41b62 100644
--- a/storage/src/vespa/storage/distributor/pending_bucket_space_db_transition.cpp
+++ b/storage/src/vespa/storage/distributor/pending_bucket_space_db_transition.cpp
@@ -1,9 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include "pending_bucket_space_db_transition.h"
+#include "bucket_space_state_map.h"
#include "clusterinformation.h"
+#include "pending_bucket_space_db_transition.h"
#include "pendingclusterstate.h"
-#include "distributor_bucket_space.h"
#include "stripe_access_guard.h"
#include <vespa/vdslib/distribution/distribution.h>
#include <vespa/vdslib/state/clusterstate.h>
@@ -19,7 +19,7 @@ using lib::NodeType;
using lib::NodeState;
PendingBucketSpaceDbTransition::PendingBucketSpaceDbTransition(document::BucketSpace bucket_space,
- DistributorBucketSpace &distributorBucketSpace,
+ const BucketSpaceState &bucket_space_state,
bool distributionChanged,
const OutdatedNodes &outdatedNodes,
std::shared_ptr<const ClusterInformation> clusterInfo,
@@ -31,10 +31,10 @@ PendingBucketSpaceDbTransition::PendingBucketSpaceDbTransition(document::BucketS
_missingEntries(),
_clusterInfo(std::move(clusterInfo)),
_outdatedNodes(newClusterState.getNodeCount(NodeType::STORAGE)),
- _prevClusterState(distributorBucketSpace.getClusterState()),
+ _prevClusterState(bucket_space_state.get_cluster_state()),
_newClusterState(newClusterState),
_creationTimestamp(creationTimestamp),
- _distributorBucketSpace(distributorBucketSpace),
+ _bucket_space_state(bucket_space_state),
_distributorIndex(_clusterInfo->getDistributorIndex()),
_bucketOwnershipTransfer(distributionChanged),
_rejectedRequests()
@@ -217,24 +217,11 @@ PendingBucketSpaceDbTransition::DbMerger::addToInserter(BucketDatabase::Trailing
inserter.insert_at_end(bucket_id, e);
}
-// TODO STRIPE remove legacy single stripe stuff
-void
-PendingBucketSpaceDbTransition::mergeIntoBucketDatabase()
-{
- BucketDatabase &db(_distributorBucketSpace.getBucketDatabase());
- std::sort(_entries.begin(), _entries.end());
-
- const auto& dist = _distributorBucketSpace.getDistribution();
- DbMerger merger(_creationTimestamp, dist, _newClusterState, _clusterInfo->getStorageUpStates(), _outdatedNodes, _entries);
-
- db.merge(merger);
-}
-
void
PendingBucketSpaceDbTransition::merge_into_bucket_databases(StripeAccessGuard& guard)
{
std::sort(_entries.begin(), _entries.end());
- const auto& dist = _distributorBucketSpace.getDistribution();
+ const auto& dist = _bucket_space_state.get_distribution();
guard.merge_entries_into_db(_bucket_space, _creationTimestamp, dist, _newClusterState,
_clusterInfo->getStorageUpStates(), _outdatedNodes, _entries);
}
@@ -296,7 +283,7 @@ PendingBucketSpaceDbTransition::nodeWasUpButNowIsDown(const lib::State& old,
bool
PendingBucketSpaceDbTransition::nodeInSameGroupAsSelf(uint16_t index) const
{
- const auto &dist(_distributorBucketSpace.getDistribution());
+ const auto &dist(_bucket_space_state.get_distribution());
if (dist.getNodeGraph().getGroupForNode(index) ==
dist.getNodeGraph().getGroupForNode(_distributorIndex)) {
LOG(debug,
@@ -317,7 +304,7 @@ PendingBucketSpaceDbTransition::nodeNeedsOwnershipTransferFromGroupDown(
uint16_t nodeIndex,
const lib::ClusterState& state) const
{
- const auto &dist(_distributorBucketSpace.getDistribution());
+ const auto &dist(_bucket_space_state.get_distribution());
if (!dist.distributorAutoOwnershipTransferOnWholeGroupDown()) {
return false; // Not doing anything for downed groups.
}
diff --git a/storage/src/vespa/storage/distributor/pending_bucket_space_db_transition.h b/storage/src/vespa/storage/distributor/pending_bucket_space_db_transition.h
index f7766cb265d..bce0c9bdc93 100644
--- a/storage/src/vespa/storage/distributor/pending_bucket_space_db_transition.h
+++ b/storage/src/vespa/storage/distributor/pending_bucket_space_db_transition.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "pending_bucket_space_db_transition_entry.h"
@@ -16,9 +16,9 @@ class State;
namespace storage::distributor {
+class BucketSpaceState;
class ClusterInformation;
class PendingClusterState;
-class DistributorBucketSpace;
class StripeAccessGuard;
/**
@@ -50,7 +50,7 @@ private:
const lib::ClusterState& _prevClusterState;
const lib::ClusterState& _newClusterState;
const api::Timestamp _creationTimestamp;
- DistributorBucketSpace& _distributorBucketSpace;
+ const BucketSpaceState& _bucket_space_state;
uint16_t _distributorIndex;
bool _bucketOwnershipTransfer;
std::unordered_map<uint16_t, size_t> _rejectedRequests;
@@ -126,7 +126,7 @@ public:
};
PendingBucketSpaceDbTransition(document::BucketSpace bucket_space,
- DistributorBucketSpace &distributorBucketSpace,
+ const BucketSpaceState &bucket_space_state,
bool distributionChanged,
const OutdatedNodes &outdatedNodes,
std::shared_ptr<const ClusterInformation> clusterInfo,
@@ -135,7 +135,6 @@ public:
~PendingBucketSpaceDbTransition();
// Merges all the results with the corresponding bucket database.
- void mergeIntoBucketDatabase();
void merge_into_bucket_databases(StripeAccessGuard& guard);
// Adds the info from the reply to our list of information.
diff --git a/storage/src/vespa/storage/distributor/pending_bucket_space_db_transition_entry.h b/storage/src/vespa/storage/distributor/pending_bucket_space_db_transition_entry.h
index 785419e78cf..fba337cb841 100644
--- a/storage/src/vespa/storage/distributor/pending_bucket_space_db_transition_entry.h
+++ b/storage/src/vespa/storage/distributor/pending_bucket_space_db_transition_entry.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/bucket/bucketid.h>
diff --git a/storage/src/vespa/storage/distributor/pendingclusterstate.cpp b/storage/src/vespa/storage/distributor/pendingclusterstate.cpp
index 77760174253..1c1c9f4a431 100644
--- a/storage/src/vespa/storage/distributor/pendingclusterstate.cpp
+++ b/storage/src/vespa/storage/distributor/pendingclusterstate.cpp
@@ -1,13 +1,12 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include "pendingclusterstate.h"
+#include "bucket_space_state_map.h"
#include "pending_bucket_space_db_transition.h"
-#include "bucketdbupdater.h"
-#include "distributor_bucket_space_repo.h"
-#include "distributor_bucket_space.h"
-#include <vespa/storageframework/defaultimplementation/clock/realclock.h>
-#include <vespa/storage/common/global_bucket_space_distribution_converter.h>
+#include "pendingclusterstate.h"
+#include "top_level_bucket_db_updater.h"
#include <vespa/document/bucket/fixed_bucket_spaces.h>
+#include <vespa/storage/common/global_bucket_space_distribution_converter.h>
+#include <vespa/storageframework/defaultimplementation/clock/realclock.h>
#include <vespa/vdslib/distribution/distribution.h>
#include <vespa/vespalib/util/xmlstream.hpp>
#include <climits>
@@ -27,7 +26,7 @@ PendingClusterState::PendingClusterState(
const framework::Clock& clock,
const ClusterInformation::CSP& clusterInfo,
DistributorMessageSender& sender,
- DistributorBucketSpaceRepo& bucketSpaceRepo,
+ const BucketSpaceStateMap& bucket_space_states,
const std::shared_ptr<api::SetSystemStateCommand>& newStateCmd,
const OutdatedNodesMap &outdatedNodesMap,
api::Timestamp creationTimestamp)
@@ -41,7 +40,7 @@ PendingClusterState::PendingClusterState(
_clusterInfo(clusterInfo),
_creationTimestamp(creationTimestamp),
_sender(sender),
- _bucketSpaceRepo(bucketSpaceRepo),
+ _bucket_space_states(bucket_space_states),
_clusterStateVersion(_cmd->getClusterStateBundle().getVersion()),
_isVersionedTransition(true),
_bucketOwnershipTransfer(false),
@@ -55,7 +54,7 @@ PendingClusterState::PendingClusterState(
const framework::Clock& clock,
const ClusterInformation::CSP& clusterInfo,
DistributorMessageSender& sender,
- DistributorBucketSpaceRepo& bucketSpaceRepo,
+ const BucketSpaceStateMap& bucket_space_states,
api::Timestamp creationTimestamp)
: _requestedNodes(clusterInfo->getStorageNodeCount()),
_prevClusterStateBundle(clusterInfo->getClusterStateBundle()),
@@ -64,7 +63,7 @@ PendingClusterState::PendingClusterState(
_clusterInfo(clusterInfo),
_creationTimestamp(creationTimestamp),
_sender(sender),
- _bucketSpaceRepo(bucketSpaceRepo),
+ _bucket_space_states(bucket_space_states),
_clusterStateVersion(0),
_isVersionedTransition(false),
_bucketOwnershipTransfer(true),
@@ -80,7 +79,7 @@ void
PendingClusterState::initializeBucketSpaceTransitions(bool distributionChanged, const OutdatedNodesMap &outdatedNodesMap)
{
OutdatedNodes emptyOutdatedNodes;
- for (auto &elem : _bucketSpaceRepo) {
+ for (const auto &elem : _bucket_space_states) {
auto onItr = outdatedNodesMap.find(elem.first);
const auto &outdatedNodes = (onItr == outdatedNodesMap.end()) ? emptyOutdatedNodes : onItr->second;
auto pendingTransition =
@@ -100,8 +99,7 @@ PendingClusterState::initializeBucketSpaceTransitions(bool distributionChanged,
void
PendingClusterState::logConstructionInformation() const
{
- const auto &distributorBucketSpace(_bucketSpaceRepo.get(document::FixedBucketSpaces::default_space()));
- const auto &distribution(distributorBucketSpace.getDistribution());
+ const auto &distribution = _bucket_space_states.get(document::FixedBucketSpaces::default_space()).get_distribution();
LOG(debug,
"New PendingClusterState constructed with previous cluster "
"state '%s', new cluster state '%s', distribution config "
@@ -190,8 +188,7 @@ PendingClusterState::requestBucketInfoFromStorageNodesWithChangedState()
void
PendingClusterState::requestNode(BucketSpaceAndNode bucketSpaceAndNode)
{
- const auto &distributorBucketSpace(_bucketSpaceRepo.get(bucketSpaceAndNode.bucketSpace));
- const auto &distribution(distributorBucketSpace.getDistribution());
+ const auto &distribution = _bucket_space_states.get(bucketSpaceAndNode.bucketSpace).get_distribution();
vespalib::string distributionHash;
// TODO remove on Vespa 8 - this is a workaround for https://github.com/vespa-engine/vespa/issues/8475
bool sendLegacyHash = false;
@@ -207,10 +204,10 @@ PendingClusterState::requestNode(BucketSpaceAndNode bucketSpaceAndNode)
if (!sendLegacyHash) {
distributionHash = distribution.getNodeGraph().getDistributionConfigHash();
} else {
- const auto& defaultSpace = _bucketSpaceRepo.get(document::FixedBucketSpaces::default_space());
+ const auto& defaultSpace = _bucket_space_states.get(document::FixedBucketSpaces::default_space());
// Generate legacy distribution hash explicitly.
auto legacyGlobalDistr = GlobalBucketSpaceDistributionConverter::convert_to_global(
- defaultSpace.getDistribution(), true/*use legacy mode*/);
+ defaultSpace.get_distribution(), true/*use legacy mode*/);
distributionHash = legacyGlobalDistr->getNodeGraph().getDistributionConfigHash();
LOG(debug, "Falling back to sending legacy hash to node %u: %s",
bucketSpaceAndNode.node, distributionHash.c_str());
@@ -323,14 +320,6 @@ PendingClusterState::requestNodesToString() const
}
void
-PendingClusterState::mergeIntoBucketDatabases()
-{
- for (auto &elem : _pendingTransitions) {
- elem.second->mergeIntoBucketDatabase();
- }
-}
-
-void
PendingClusterState::merge_into_bucket_databases(StripeAccessGuard& guard)
{
for (auto &elem : _pendingTransitions) {
diff --git a/storage/src/vespa/storage/distributor/pendingclusterstate.h b/storage/src/vespa/storage/distributor/pendingclusterstate.h
index af0c85fab95..0d07730d9ee 100644
--- a/storage/src/vespa/storage/distributor/pendingclusterstate.h
+++ b/storage/src/vespa/storage/distributor/pendingclusterstate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "pending_bucket_space_db_transition_entry.h"
@@ -15,13 +15,13 @@
namespace storage::distributor {
+class BucketSpaceStateMap;
class DistributorMessageSender;
class PendingBucketSpaceDbTransition;
-class DistributorBucketSpaceRepo;
class StripeAccessGuard;
/**
- * Class used by BucketDBUpdater to track request bucket info
+ * Class used by TopLevelBucketDBUpdater to track request bucket info
* messages sent to the storage nodes.
*/
class PendingClusterState : public vespalib::XmlSerializable {
@@ -45,14 +45,14 @@ public:
const framework::Clock& clock,
const ClusterInformation::CSP& clusterInfo,
DistributorMessageSender& sender,
- DistributorBucketSpaceRepo& bucketSpaceRepo,
+ const BucketSpaceStateMap& bucket_space_states,
const std::shared_ptr<api::SetSystemStateCommand>& newStateCmd,
const OutdatedNodesMap &outdatedNodesMap,
api::Timestamp creationTimestamp)
{
// Naked new due to private constructor
return std::unique_ptr<PendingClusterState>(new PendingClusterState(
- clock, clusterInfo, sender, bucketSpaceRepo,
+ clock, clusterInfo, sender, bucket_space_states,
newStateCmd, outdatedNodesMap, creationTimestamp));
}
@@ -64,12 +64,12 @@ public:
const framework::Clock& clock,
const ClusterInformation::CSP& clusterInfo,
DistributorMessageSender& sender,
- DistributorBucketSpaceRepo& bucketSpaceRepo,
+ const BucketSpaceStateMap& bucket_space_states,
api::Timestamp creationTimestamp)
{
// Naked new due to private constructor
return std::unique_ptr<PendingClusterState>(new PendingClusterState(
- clock, clusterInfo, sender, bucketSpaceRepo, creationTimestamp));
+ clock, clusterInfo, sender, bucket_space_states, creationTimestamp));
}
PendingClusterState(const PendingClusterState &) = delete;
@@ -146,7 +146,6 @@ public:
/**
* Merges all the results with the corresponding bucket databases.
*/
- void mergeIntoBucketDatabases();
void merge_into_bucket_databases(StripeAccessGuard& guard);
// Get pending transition for a specific bucket space. Only used by unit test.
@@ -169,7 +168,7 @@ private:
const framework::Clock&,
const ClusterInformation::CSP& clusterInfo,
DistributorMessageSender& sender,
- DistributorBucketSpaceRepo& bucketSpaceRepo,
+ const BucketSpaceStateMap& bucket_space_states,
const std::shared_ptr<api::SetSystemStateCommand>& newStateCmd,
const OutdatedNodesMap &outdatedNodesMap,
api::Timestamp creationTimestamp);
@@ -182,7 +181,7 @@ private:
const framework::Clock&,
const ClusterInformation::CSP& clusterInfo,
DistributorMessageSender& sender,
- DistributorBucketSpaceRepo& bucketSpaceRepo,
+ const BucketSpaceStateMap& bucket_space_states,
api::Timestamp creationTimestamp);
struct BucketSpaceAndNode {
@@ -229,7 +228,7 @@ private:
api::Timestamp _creationTimestamp;
DistributorMessageSender& _sender;
- DistributorBucketSpaceRepo& _bucketSpaceRepo;
+ const BucketSpaceStateMap& _bucket_space_states;
uint32_t _clusterStateVersion;
bool _isVersionedTransition;
bool _bucketOwnershipTransfer;
diff --git a/storage/src/vespa/storage/distributor/pendingmessagetracker.cpp b/storage/src/vespa/storage/distributor/pendingmessagetracker.cpp
index cb76b6d50b2..533493a79a2 100644
--- a/storage/src/vespa/storage/distributor/pendingmessagetracker.cpp
+++ b/storage/src/vespa/storage/distributor/pendingmessagetracker.cpp
@@ -1,6 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "pendingmessagetracker.h"
#include <vespa/vespalib/stllike/asciistream.h>
+#include <vespa/vespalib/util/stringfmt.h>
#include <map>
#include <algorithm>
@@ -9,11 +10,13 @@ LOG_SETUP(".pendingmessages");
namespace storage::distributor {
-PendingMessageTracker::PendingMessageTracker(framework::ComponentRegister& cr)
- : framework::HtmlStatusReporter("pendingmessages", "Pending messages to storage nodes"),
+PendingMessageTracker::PendingMessageTracker(framework::ComponentRegister& cr, uint32_t stripe_index)
+ : framework::HtmlStatusReporter(vespalib::make_string("pendingmessages%u", stripe_index),
+ vespalib::make_string("Pending messages to storage nodes (stripe %u)", stripe_index)),
_component(cr, "pendingmessagetracker"),
_nodeInfo(_component.getClock()),
_nodeBusyDuration(60),
+ _deferred_read_tasks(),
_lock()
{
_component.registerStatusPage(*this);
diff --git a/storage/src/vespa/storage/distributor/pendingmessagetracker.h b/storage/src/vespa/storage/distributor/pendingmessagetracker.h
index 13d83157150..8f5f05d8a1a 100644
--- a/storage/src/vespa/storage/distributor/pendingmessagetracker.h
+++ b/storage/src/vespa/storage/distributor/pendingmessagetracker.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "nodeinfo.h"
@@ -77,7 +77,7 @@ public:
*/
using TimePoint = std::chrono::milliseconds;
- explicit PendingMessageTracker(framework::ComponentRegister&);
+ explicit PendingMessageTracker(framework::ComponentRegister&, uint32_t stripe_index);
~PendingMessageTracker() override;
void insert(const std::shared_ptr<api::StorageMessage>&);
diff --git a/storage/src/vespa/storage/distributor/persistence_operation_metric_set.cpp b/storage/src/vespa/storage/distributor/persistence_operation_metric_set.cpp
index 96d8ef66db3..9a7e2aba5e4 100644
--- a/storage/src/vespa/storage/distributor/persistence_operation_metric_set.cpp
+++ b/storage/src/vespa/storage/distributor/persistence_operation_metric_set.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "distributormetricsset.h"
#include <vespa/storageapi/messageapi/returncode.h>
diff --git a/storage/src/vespa/storage/distributor/persistence_operation_metric_set.h b/storage/src/vespa/storage/distributor/persistence_operation_metric_set.h
index d3e022c08b8..d42e6fa308c 100644
--- a/storage/src/vespa/storage/distributor/persistence_operation_metric_set.h
+++ b/storage/src/vespa/storage/distributor/persistence_operation_metric_set.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/distributor/persistencemessagetracker.cpp b/storage/src/vespa/storage/distributor/persistencemessagetracker.cpp
index 746a0012d0d..8cacbb0bf5a 100644
--- a/storage/src/vespa/storage/distributor/persistencemessagetracker.cpp
+++ b/storage/src/vespa/storage/distributor/persistencemessagetracker.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "persistencemessagetracker.h"
#include "distributor_bucket_space_repo.h"
diff --git a/storage/src/vespa/storage/distributor/persistencemessagetracker.h b/storage/src/vespa/storage/distributor/persistencemessagetracker.h
index 3d7838d2a45..e65325cff20 100644
--- a/storage/src/vespa/storage/distributor/persistencemessagetracker.h
+++ b/storage/src/vespa/storage/distributor/persistencemessagetracker.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "distributor_stripe_component.h"
diff --git a/storage/src/vespa/storage/distributor/potential_data_loss_report.h b/storage/src/vespa/storage/distributor/potential_data_loss_report.h
index a5fb0adae62..c232ce2f5ff 100644
--- a/storage/src/vespa/storage/distributor/potential_data_loss_report.h
+++ b/storage/src/vespa/storage/distributor/potential_data_loss_report.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdint>
diff --git a/storage/src/vespa/storage/distributor/sentmessagemap.cpp b/storage/src/vespa/storage/distributor/sentmessagemap.cpp
index 6f1db429b97..44dd4fbde89 100644
--- a/storage/src/vespa/storage/distributor/sentmessagemap.cpp
+++ b/storage/src/vespa/storage/distributor/sentmessagemap.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sentmessagemap.h"
#include <vespa/storage/distributor/operations/operation.h>
diff --git a/storage/src/vespa/storage/distributor/sentmessagemap.h b/storage/src/vespa/storage/distributor/sentmessagemap.h
index e84920b88d7..1ed7a4cd8c2 100644
--- a/storage/src/vespa/storage/distributor/sentmessagemap.h
+++ b/storage/src/vespa/storage/distributor/sentmessagemap.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <map>
diff --git a/storage/src/vespa/storage/distributor/simpleclusterinformation.h b/storage/src/vespa/storage/distributor/simpleclusterinformation.h
index 554ef0dbb5c..339465da3ff 100644
--- a/storage/src/vespa/storage/distributor/simpleclusterinformation.h
+++ b/storage/src/vespa/storage/distributor/simpleclusterinformation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "clusterinformation.h"
diff --git a/storage/src/vespa/storage/distributor/statechecker.cpp b/storage/src/vespa/storage/distributor/statechecker.cpp
index 049e39fa3fc..d1241f0bf66 100644
--- a/storage/src/vespa/storage/distributor/statechecker.cpp
+++ b/storage/src/vespa/storage/distributor/statechecker.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "statechecker.h"
#include "distributor_bucket_space.h"
#include "distributor_stripe_component.h"
@@ -58,7 +58,7 @@ StateChecker::Result::createStoredResult(
IdealStateOperation::UP operation,
MaintenancePriority::Priority priority)
{
- return Result(std::unique_ptr<ResultImpl>(new StoredResultImpl(std::move(operation), MaintenancePriority(priority))));
+ return Result(std::make_unique<StoredResultImpl>(std::move(operation), MaintenancePriority(priority)));
}
StateChecker::Context::Context(const DistributorNodeContext& node_ctx_in,
@@ -79,8 +79,7 @@ StateChecker::Context::Context(const DistributorNodeContext& node_ctx_in,
db(distributorBucketSpace.getBucketDatabase()),
stats(statsTracker)
{
- // TODO STRIPE use existing cache for computing ideal storage nodes for bucket
- idealState = distribution.getIdealStorageNodes(systemState, bucket.getBucketId());
+ idealState = distributorBucketSpace.get_ideal_service_layer_nodes_bundle(bucket.getBucketId()).get_available_nonretired_or_maintenance_nodes();
unorderedIdealState.insert(idealState.begin(), idealState.end());
}
diff --git a/storage/src/vespa/storage/distributor/statechecker.h b/storage/src/vespa/storage/distributor/statechecker.h
index 47d5a5b55ed..3f938238ce7 100644
--- a/storage/src/vespa/storage/distributor/statechecker.h
+++ b/storage/src/vespa/storage/distributor/statechecker.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bucketgctimecalculator.h"
diff --git a/storage/src/vespa/storage/distributor/statecheckers.cpp b/storage/src/vespa/storage/distributor/statecheckers.cpp
index 49b07a6f356..053f5956b10 100644
--- a/storage/src/vespa/storage/distributor/statecheckers.cpp
+++ b/storage/src/vespa/storage/distributor/statecheckers.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "statecheckers.h"
#include "activecopy.h"
diff --git a/storage/src/vespa/storage/distributor/statecheckers.h b/storage/src/vespa/storage/distributor/statecheckers.h
index 0e39436c67c..32e6623785f 100644
--- a/storage/src/vespa/storage/distributor/statecheckers.h
+++ b/storage/src/vespa/storage/distributor/statecheckers.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "idealstatemanager.h"
diff --git a/storage/src/vespa/storage/distributor/statusdelegator.h b/storage/src/vespa/storage/distributor/statusdelegator.h
index 058553177fd..0a4f3e63472 100644
--- a/storage/src/vespa/storage/distributor/statusdelegator.h
+++ b/storage/src/vespa/storage/distributor/statusdelegator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace storage {
diff --git a/storage/src/vespa/storage/distributor/statusreporterdelegate.cpp b/storage/src/vespa/storage/distributor/statusreporterdelegate.cpp
index 2ecf1801f08..41fc85baca5 100644
--- a/storage/src/vespa/storage/distributor/statusreporterdelegate.cpp
+++ b/storage/src/vespa/storage/distributor/statusreporterdelegate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "statusreporterdelegate.h"
diff --git a/storage/src/vespa/storage/distributor/statusreporterdelegate.h b/storage/src/vespa/storage/distributor/statusreporterdelegate.h
index fbabec70914..0acf9b16edb 100644
--- a/storage/src/vespa/storage/distributor/statusreporterdelegate.h
+++ b/storage/src/vespa/storage/distributor/statusreporterdelegate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "delegatedstatusrequest.h"
diff --git a/storage/src/vespa/storage/distributor/storage_node_up_states.h b/storage/src/vespa/storage/distributor/storage_node_up_states.h
index a68b275e31d..e7cffc0002b 100644
--- a/storage/src/vespa/storage/distributor/storage_node_up_states.h
+++ b/storage/src/vespa/storage/distributor/storage_node_up_states.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/distributor/stripe_access_guard.h b/storage/src/vespa/storage/distributor/stripe_access_guard.h
index a1779a4eb4f..bfc53c0ed82 100644
--- a/storage/src/vespa/storage/distributor/stripe_access_guard.h
+++ b/storage/src/vespa/storage/distributor/stripe_access_guard.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bucket_space_distribution_configs.h"
@@ -37,7 +37,8 @@ public:
virtual void update_distribution_config(const BucketSpaceDistributionConfigs& new_configs) = 0;
virtual void set_pending_cluster_state_bundle(const lib::ClusterStateBundle& pending_state) = 0;
virtual void clear_pending_cluster_state_bundle() = 0;
- virtual void enable_cluster_state_bundle(const lib::ClusterStateBundle& new_state) = 0;
+ virtual void enable_cluster_state_bundle(const lib::ClusterStateBundle& new_state,
+ bool has_bucket_ownership_change) = 0;
virtual void notify_distribution_change_enabled() = 0;
virtual PotentialDataLossReport remove_superfluous_buckets(document::BucketSpace bucket_space,
@@ -56,14 +57,18 @@ public:
virtual void update_read_snapshot_after_activation(const lib::ClusterStateBundle& activated_state) = 0;
virtual void clear_read_only_bucket_repo_databases() = 0;
- // TODO STRIPE: Add merge() function.
struct PendingOperationStats {
size_t external_load_operations;
size_t maintenance_operations;
PendingOperationStats(size_t external_load_operations_in,
- size_t maintenance_operations_in)
+ size_t maintenance_operations_in) noexcept
: external_load_operations(external_load_operations_in),
maintenance_operations(maintenance_operations_in) {}
+
+ void merge(const PendingOperationStats& rhs) noexcept {
+ external_load_operations += rhs.external_load_operations;
+ maintenance_operations += rhs.maintenance_operations;
+ }
};
// Functions used for state reporting
diff --git a/storage/src/vespa/storage/distributor/stripe_bucket_db_updater.cpp b/storage/src/vespa/storage/distributor/stripe_bucket_db_updater.cpp
index 95272752ace..47eab46569e 100644
--- a/storage/src/vespa/storage/distributor/stripe_bucket_db_updater.cpp
+++ b/storage/src/vespa/storage/distributor/stripe_bucket_db_updater.cpp
@@ -1,9 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "stripe_bucket_db_updater.h"
#include "bucket_db_prune_elision.h"
#include "bucket_space_distribution_context.h"
-#include "distributor.h"
+#include "top_level_distributor.h"
#include "distributor_bucket_space.h"
#include "distributormetricsset.h"
#include "pending_bucket_space_db_transition.h"
@@ -31,25 +31,19 @@ namespace storage::distributor {
StripeBucketDBUpdater::StripeBucketDBUpdater(const DistributorNodeContext& node_ctx,
DistributorStripeOperationContext& op_ctx,
DistributorStripeInterface& owner,
- DistributorMessageSender& sender,
- bool use_legacy_mode)
+ DistributorMessageSender& sender)
: framework::StatusReporter("bucketdb", "Bucket DB Updater"),
_node_ctx(node_ctx),
_op_ctx(op_ctx),
_distributor_interface(owner),
_delayedRequests(),
_sentMessages(),
- _pendingClusterState(),
- _history(),
_sender(sender),
_enqueuedRechecks(),
- _outdatedNodesMap(),
- _transitionTimer(_node_ctx.clock()),
_stale_reads_enabled(false),
_active_distribution_contexts(),
_explicit_transition_read_guard(),
- _distribution_context_mutex(),
- _use_legacy_mode(use_legacy_mode)
+ _distribution_context_mutex()
{
for (auto& elem : _op_ctx.bucket_space_repo()) {
_active_distribution_contexts.emplace(
@@ -102,7 +96,7 @@ void
StripeBucketDBUpdater::print(std::ostream& out, bool verbose, const std::string& indent) const
{
(void) verbose; (void) indent;
- out << "BucketDBUpdater";
+ out << "StripeBucketDBUpdater";
}
bool
@@ -170,6 +164,12 @@ StripeBucketDBUpdater::recheckBucketInfo(uint32_t nodeIdx,
sendRequestBucketInfo(nodeIdx, bucket, std::shared_ptr<MergeReplyGuard>());
}
+void
+StripeBucketDBUpdater::handle_activated_cluster_state_bundle()
+{
+ sendAllQueuedBucketRechecks();
+}
+
namespace {
class ReadOnlyDbMergingInserter : public BucketDatabase::MergingProcessor {
@@ -217,66 +217,18 @@ public:
}
-void
-StripeBucketDBUpdater::removeSuperfluousBuckets(
- const lib::ClusterStateBundle& newState,
- bool is_distribution_config_change)
-{
- assert(_use_legacy_mode);
- const bool move_to_read_only_db = shouldDeferStateEnabling();
- const char* up_states = storage_node_up_states();
- for (auto& elem : _op_ctx.bucket_space_repo()) {
- const auto& newDistribution(elem.second->getDistribution());
- const auto& oldClusterState(elem.second->getClusterState());
- const auto& new_cluster_state = newState.getDerivedClusterState(elem.first);
-
- // Running a full DB sweep is expensive, so if the cluster state transition does
- // not actually indicate that buckets should possibly be removed, we elide it entirely.
- if (!is_distribution_config_change
- && db_pruning_may_be_elided(oldClusterState, *new_cluster_state, up_states))
- {
- LOG(debug, "[bucket space '%s']: eliding DB pruning for state transition '%s' -> '%s'",
- document::FixedBucketSpaces::to_string(elem.first).data(),
- oldClusterState.toString().c_str(), new_cluster_state->toString().c_str());
- continue;
- }
-
- auto& bucketDb(elem.second->getBucketDatabase());
- auto& readOnlyDb(_op_ctx.read_only_bucket_space_repo().get(elem.first).getBucketDatabase());
-
- // Remove all buckets not belonging to this distributor, or
- // being on storage nodes that are no longer up.
- MergingNodeRemover proc(
- oldClusterState,
- *new_cluster_state,
- _node_ctx.node_index(),
- newDistribution,
- up_states,
- move_to_read_only_db);
-
- bucketDb.merge(proc);
- if (move_to_read_only_db) {
- ReadOnlyDbMergingInserter read_only_merger(proc.getNonOwnedEntries());
- readOnlyDb.merge(read_only_merger);
- }
- maybe_inject_simulated_db_pruning_delay();
- }
-}
-
PotentialDataLossReport
StripeBucketDBUpdater::remove_superfluous_buckets(
document::BucketSpace bucket_space,
const lib::ClusterState& new_state,
bool is_distribution_change)
{
- assert(!_use_legacy_mode);
(void)is_distribution_change; // TODO remove if not needed
const bool move_to_read_only_db = shouldDeferStateEnabling();
const char* up_states = storage_node_up_states();
auto& s = _op_ctx.bucket_space_repo().get(bucket_space);
const auto& new_distribution = s.getDistribution();
- const auto& old_cluster_state = s.getClusterState();
// Elision of DB sweep is done at a higher level, so we don't have to do that here.
auto& bucket_db = s.getBucketDatabase();
auto& read_only_db = _op_ctx.read_only_bucket_space_repo().get(bucket_space).getBucketDatabase();
@@ -284,7 +236,6 @@ StripeBucketDBUpdater::remove_superfluous_buckets(
// Remove all buckets not belonging to this distributor, or
// being on storage nodes that are no longer up.
MergingNodeRemover proc(
- old_cluster_state,
new_state,
_node_ctx.node_index(),
new_distribution,
@@ -297,7 +248,7 @@ StripeBucketDBUpdater::remove_superfluous_buckets(
read_only_db.merge(read_only_merger);
}
PotentialDataLossReport report;
- report.buckets = proc.removed_buckets();
+ report.buckets = proc.removed_buckets();
report.documents = proc.removed_documents();
return report;
}
@@ -311,7 +262,6 @@ StripeBucketDBUpdater::merge_entries_into_db(document::BucketSpace bucket_space,
const std::unordered_set<uint16_t>& outdated_nodes,
const std::vector<dbtransition::Entry>& entries)
{
- assert(!_use_legacy_mode);
auto& s = _op_ctx.bucket_space_repo().get(bucket_space);
auto& bucket_db = s.getBucketDatabase();
@@ -320,44 +270,6 @@ StripeBucketDBUpdater::merge_entries_into_db(document::BucketSpace bucket_space,
bucket_db.merge(merger);
}
-namespace {
-
-void maybe_sleep_for(std::chrono::milliseconds ms) {
- if (ms.count() > 0) {
- std::this_thread::sleep_for(ms);
- }
-}
-
-}
-
-void
-StripeBucketDBUpdater::maybe_inject_simulated_db_pruning_delay() {
- maybe_sleep_for(_op_ctx.distributor_config().simulated_db_pruning_latency());
-}
-
-void
-StripeBucketDBUpdater::maybe_inject_simulated_db_merging_delay() {
- maybe_sleep_for(_op_ctx.distributor_config().simulated_db_merging_latency());
-}
-
-void
-StripeBucketDBUpdater::ensureTransitionTimerStarted()
-{
- // Don't overwrite start time if we're already processing a state, as
- // that will make transition times appear artificially low.
- if (!hasPendingClusterState()) {
- _transitionTimer = framework::MilliSecTimer(
- _node_ctx.clock());
- }
-}
-
-void
-StripeBucketDBUpdater::completeTransitionTimer()
-{
- _distributor_interface.getMetrics()
- .stateTransitionTime.addValue(_transitionTimer.getElapsedTimeAsDouble());
-}
-
void
StripeBucketDBUpdater::clearReadOnlyBucketRepoDatabases()
{
@@ -366,46 +278,6 @@ StripeBucketDBUpdater::clearReadOnlyBucketRepoDatabases()
}
}
-void
-StripeBucketDBUpdater::storageDistributionChanged()
-{
- ensureTransitionTimerStarted();
-
- removeSuperfluousBuckets(_op_ctx.cluster_state_bundle(), true);
-
- auto clusterInfo = std::make_shared<const SimpleClusterInformation>(
- _node_ctx.node_index(),
- _op_ctx.cluster_state_bundle(),
- storage_node_up_states());
- _pendingClusterState = PendingClusterState::createForDistributionChange(
- _node_ctx.clock(),
- std::move(clusterInfo),
- _sender,
- _op_ctx.bucket_space_repo(),
- _op_ctx.generate_unique_timestamp());
- _outdatedNodesMap = _pendingClusterState->getOutdatedNodesMap();
- _op_ctx.bucket_space_repo().set_pending_cluster_state_bundle(_pendingClusterState->getNewClusterStateBundle());
-}
-
-void
-StripeBucketDBUpdater::replyToPreviousPendingClusterStateIfAny()
-{
- if (_pendingClusterState.get() && _pendingClusterState->hasCommand()) {
- _distributor_interface.getMessageSender().sendUp(
- std::make_shared<api::SetSystemStateReply>(*_pendingClusterState->getCommand()));
- }
-}
-
-void
-StripeBucketDBUpdater::replyToActivationWithActualVersion(
- const api::ActivateClusterStateVersionCommand& cmd,
- uint32_t actualVersion)
-{
- auto reply = std::make_shared<api::ActivateClusterStateVersionReply>(cmd);
- reply->setActualVersion(actualVersion);
- _distributor_interface.getMessageSender().sendUp(reply); // TODO let API accept rvalues
-}
-
void StripeBucketDBUpdater::update_read_snapshot_before_db_pruning() {
std::lock_guard lock(_distribution_context_mutex);
for (auto& elem : _op_ctx.bucket_space_repo()) {
@@ -422,7 +294,6 @@ void StripeBucketDBUpdater::update_read_snapshot_before_db_pruning() {
}
}
-
void StripeBucketDBUpdater::update_read_snapshot_after_db_pruning(const lib::ClusterStateBundle& new_state) {
std::lock_guard lock(_distribution_context_mutex);
const auto old_default_state = _op_ctx.bucket_space_repo().get(
@@ -461,88 +332,6 @@ void StripeBucketDBUpdater::update_read_snapshot_after_activation(const lib::Clu
}
}
-bool
-StripeBucketDBUpdater::onSetSystemState(
- const std::shared_ptr<api::SetSystemStateCommand>& cmd)
-{
- assert(_use_legacy_mode);
- LOG(debug,
- "Received new cluster state %s",
- cmd->getSystemState().toString().c_str());
-
- const lib::ClusterStateBundle oldState = _op_ctx.cluster_state_bundle();
- const lib::ClusterStateBundle& state = cmd->getClusterStateBundle();
-
- if (state == oldState) {
- return false;
- }
- ensureTransitionTimerStarted();
- // Separate timer since _transition_timer might span multiple pending states.
- framework::MilliSecTimer process_timer(_node_ctx.clock());
- update_read_snapshot_before_db_pruning();
- const auto& bundle = cmd->getClusterStateBundle();
- removeSuperfluousBuckets(bundle, false);
- update_read_snapshot_after_db_pruning(bundle);
- replyToPreviousPendingClusterStateIfAny();
-
- auto clusterInfo = std::make_shared<const SimpleClusterInformation>(
- _node_ctx.node_index(),
- _op_ctx.cluster_state_bundle(),
- storage_node_up_states());
- _pendingClusterState = PendingClusterState::createForClusterStateChange(
- _node_ctx.clock(),
- std::move(clusterInfo),
- _sender,
- _op_ctx.bucket_space_repo(),
- cmd,
- _outdatedNodesMap,
- _op_ctx.generate_unique_timestamp());
- _outdatedNodesMap = _pendingClusterState->getOutdatedNodesMap();
-
- _distributor_interface.getMetrics().set_cluster_state_processing_time.addValue(
- process_timer.getElapsedTimeAsDouble());
-
- _op_ctx.bucket_space_repo().set_pending_cluster_state_bundle(_pendingClusterState->getNewClusterStateBundle());
- if (isPendingClusterStateCompleted()) {
- processCompletedPendingClusterState();
- }
- return true;
-}
-
-bool
-StripeBucketDBUpdater::onActivateClusterStateVersion(const std::shared_ptr<api::ActivateClusterStateVersionCommand>& cmd)
-{
- assert(_use_legacy_mode);
- if (hasPendingClusterState() && _pendingClusterState->isVersionedTransition()) {
- const auto pending_version = _pendingClusterState->clusterStateVersion();
- if (pending_version == cmd->version()) {
- if (isPendingClusterStateCompleted()) {
- assert(_pendingClusterState->isDeferred());
- activatePendingClusterState();
- } else {
- LOG(error, "Received cluster state activation for pending version %u "
- "without pending state being complete yet. This is not expected, "
- "as no activation should be sent before all distributors have "
- "reported that state processing is complete.", pending_version);
- replyToActivationWithActualVersion(*cmd, 0); // Invalid version, will cause re-send (hopefully when completed).
- return true;
- }
- } else {
- replyToActivationWithActualVersion(*cmd, pending_version);
- return true;
- }
- } else if (shouldDeferStateEnabling()) {
- // Likely just a resend, but log warn for now to get a feel of how common it is.
- LOG(warning, "Received cluster state activation command for version %u, which "
- "has no corresponding pending state. Likely resent operation.", cmd->version());
- } else {
- LOG(debug, "Received cluster state activation command for version %u, but distributor "
- "config does not have deferred activation enabled. Treating as no-op.", cmd->version());
- }
- // Fall through to next link in call chain that cares about this message.
- return false;
-}
-
StripeBucketDBUpdater::MergeReplyGuard::~MergeReplyGuard()
{
if (_reply) {
@@ -640,30 +429,9 @@ bool
StripeBucketDBUpdater::onRequestBucketInfoReply(
const std::shared_ptr<api::RequestBucketInfoReply> & repl)
{
- if (pendingClusterStateAccepted(repl)) {
- return true;
- }
return processSingleBucketInfoReply(repl);
}
-bool
-StripeBucketDBUpdater::pendingClusterStateAccepted(
- const std::shared_ptr<api::RequestBucketInfoReply> & repl)
-{
- if (_pendingClusterState.get()
- && _pendingClusterState->onRequestBucketInfoReply(repl))
- {
- if (isPendingClusterStateCompleted()) {
- processCompletedPendingClusterState();
- }
- return true;
- }
- LOG(spam,
- "Reply %s was not accepted by pending cluster state",
- repl->toString().c_str());
- return false;
-}
-
void
StripeBucketDBUpdater::handleSingleBucketInfoFailure(
const std::shared_ptr<api::RequestBucketInfoReply>& repl,
@@ -682,9 +450,6 @@ StripeBucketDBUpdater::handleSingleBucketInfoFailure(
void
StripeBucketDBUpdater::resendDelayedMessages()
{
- if (_pendingClusterState) {
- _pendingClusterState->resendDelayedMessages();
- }
if (_delayedRequests.empty()) {
return; // Don't fetch time if not needed
}
@@ -797,100 +562,11 @@ StripeBucketDBUpdater::updateDatabase(document::BucketSpace bucketSpace, uint16_
}
}
-bool
-StripeBucketDBUpdater::isPendingClusterStateCompleted() const
-{
- return _pendingClusterState.get() && _pendingClusterState->done();
-}
-
-void
-StripeBucketDBUpdater::processCompletedPendingClusterState()
-{
- if (_pendingClusterState->isDeferred()) {
- LOG(debug, "Deferring completion of pending cluster state version %u until explicitly activated",
- _pendingClusterState->clusterStateVersion());
- assert(_pendingClusterState->hasCommand()); // Deferred transitions should only ever be created by state commands.
- // Sending down SetSystemState command will reach the state manager and a reply
- // will be auto-sent back to the cluster controller in charge. Once this happens,
- // it will send an explicit activation command once all distributors have reported
- // that their pending cluster states have completed.
- // A booting distributor will treat itself as "system Up" before the state has actually
- // taken effect via activation. External operation handler will keep operations from
- // actually being scheduled until state has been activated. The external operation handler
- // needs to be explicitly aware of the case where no state has yet to be activated.
- _distributor_interface.getMessageSender().sendDown(
- _pendingClusterState->getCommand());
- _pendingClusterState->clearCommand();
- return;
- }
- // Distribution config change or non-deferred cluster state. Immediately activate
- // the pending state without being told to do so explicitly.
- activatePendingClusterState();
-}
-
-void
-StripeBucketDBUpdater::activatePendingClusterState()
-{
- framework::MilliSecTimer process_timer(_node_ctx.clock());
-
- _pendingClusterState->mergeIntoBucketDatabases();
- maybe_inject_simulated_db_merging_delay();
-
- if (_pendingClusterState->isVersionedTransition()) {
- LOG(debug, "Activating pending cluster state version %u", _pendingClusterState->clusterStateVersion());
- enableCurrentClusterStateBundleInDistributor();
- if (_pendingClusterState->hasCommand()) {
- _distributor_interface.getMessageSender().sendDown(
- _pendingClusterState->getCommand());
- }
- addCurrentStateToClusterStateHistory();
- } else {
- LOG(debug, "Activating pending distribution config");
- // TODO distribution changes cannot currently be deferred as they are not
- // initiated by the cluster controller!
- _distributor_interface.notifyDistributionChangeEnabled();
- }
-
- update_read_snapshot_after_activation(_pendingClusterState->getNewClusterStateBundle());
- _pendingClusterState.reset();
- _outdatedNodesMap.clear();
- _op_ctx.bucket_space_repo().clear_pending_cluster_state_bundle(); // TODO also read only bucket space..?
- sendAllQueuedBucketRechecks();
- completeTransitionTimer();
- clearReadOnlyBucketRepoDatabases();
-
- _distributor_interface.getMetrics().activate_cluster_state_processing_time.addValue(
- process_timer.getElapsedTimeAsDouble());
-}
-
-void
-StripeBucketDBUpdater::enableCurrentClusterStateBundleInDistributor()
-{
- const lib::ClusterStateBundle& state(
- _pendingClusterState->getNewClusterStateBundle());
-
- LOG(debug,
- "BucketDBUpdater finished processing state %s",
- state.getBaselineClusterState()->toString().c_str());
-
- _distributor_interface.enableClusterStateBundle(state);
-}
-
void StripeBucketDBUpdater::simulate_cluster_state_bundle_activation(const lib::ClusterStateBundle& activated_state) {
update_read_snapshot_after_activation(activated_state);
_distributor_interface.enableClusterStateBundle(activated_state);
}
-void
-StripeBucketDBUpdater::addCurrentStateToClusterStateHistory()
-{
- _history.push_back(_pendingClusterState->getSummary());
-
- if (_history.size() > 50) {
- _history.pop_front();
- }
-}
-
vespalib::string
StripeBucketDBUpdater::getReportContentType(const framework::HttpUrlPath&) const
{
@@ -927,7 +603,7 @@ StripeBucketDBUpdater::reportStatus(std::ostream& out,
using namespace vespalib::xml;
XmlOutputStream xos(out);
// FIXME(vekterli): have to do this manually since we cannot inherit
- // directly from XmlStatusReporter due to data races when BucketDBUpdater
+ // directly from XmlStatusReporter due to data races when StripeBucketDBUpdater
// gets status requests directly.
xos << XmlTag("status")
<< XmlAttribute("id", BUCKETDB)
@@ -946,19 +622,7 @@ StripeBucketDBUpdater::reportXmlStatus(vespalib::xml::XmlOutputStream& xos,
<< XmlTag("systemstate_active")
<< XmlContent(_op_ctx.cluster_state_bundle().getBaselineClusterState()->toString())
<< XmlEndTag();
- if (_pendingClusterState) {
- xos << *_pendingClusterState;
- }
- xos << XmlTag("systemstate_history");
- for (auto i(_history.rbegin()), e(_history.rend()); i != e; ++i) {
- xos << XmlTag("change")
- << XmlAttribute("from", i->_prevClusterState)
- << XmlAttribute("to", i->_newClusterState)
- << XmlAttribute("processingtime", i->_processingTime)
- << XmlEndTag();
- }
- xos << XmlEndTag()
- << XmlTag("single_bucket_requests");
+ xos << XmlTag("single_bucket_requests");
report_single_bucket_requests(xos);
xos << XmlEndTag()
<< XmlTag("delayed_single_bucket_requests");
@@ -984,14 +648,12 @@ StripeBucketDBUpdater::report_delayed_single_bucket_requests(vespalib::xml::XmlO
}
StripeBucketDBUpdater::MergingNodeRemover::MergingNodeRemover(
- const lib::ClusterState& oldState,
const lib::ClusterState& s,
uint16_t localIndex,
const lib::Distribution& distribution,
const char* upStates,
bool track_non_owned_entries)
- : _oldState(oldState),
- _state(s),
+ : _state(s),
_available_nodes(),
_nonOwnedBuckets(),
_removed_buckets(0),
@@ -1134,15 +796,6 @@ StripeBucketDBUpdater::MergingNodeRemover::storage_node_is_available(uint16_t in
return ((index < _available_nodes.size()) && _available_nodes[index]);
}
-StripeBucketDBUpdater::MergingNodeRemover::~MergingNodeRemover()
-{
- if (_removed_buckets != 0) {
- LOGBM(info, "After cluster state change %s, %zu buckets no longer "
- "have available replicas. %zu documents in these buckets will "
- "be unavailable until nodes come back up",
- _oldState.getTextualDifference(_state).c_str(),
- _removed_buckets, _removed_documents);
- }
-}
+StripeBucketDBUpdater::MergingNodeRemover::~MergingNodeRemover() = default;
} // distributor
diff --git a/storage/src/vespa/storage/distributor/stripe_bucket_db_updater.h b/storage/src/vespa/storage/distributor/stripe_bucket_db_updater.h
index cf2be06bda9..0837a3bc1f3 100644
--- a/storage/src/vespa/storage/distributor/stripe_bucket_db_updater.h
+++ b/storage/src/vespa/storage/distributor/stripe_bucket_db_updater.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bucketlistmerger.h"
@@ -35,25 +35,21 @@ class StripeBucketDBUpdater final
public api::MessageHandler
{
public:
- using OutdatedNodesMap = dbtransition::OutdatedNodesMap;
StripeBucketDBUpdater(const DistributorNodeContext& node_ctx,
DistributorStripeOperationContext& op_ctx,
DistributorStripeInterface& owner,
- DistributorMessageSender& sender,
- bool use_legacy_mode);
+ DistributorMessageSender& sender);
~StripeBucketDBUpdater() override;
void flush();
const lib::ClusterState* pendingClusterStateOrNull(const document::BucketSpace&) const;
void recheckBucketInfo(uint32_t nodeIdx, const document::Bucket& bucket);
+ void handle_activated_cluster_state_bundle();
- bool onSetSystemState(const std::shared_ptr<api::SetSystemStateCommand>& cmd) override;
- bool onActivateClusterStateVersion(const std::shared_ptr<api::ActivateClusterStateVersionCommand>& cmd) override;
bool onRequestBucketInfoReply(const std::shared_ptr<api::RequestBucketInfoReply> & repl) override;
bool onMergeBucketReply(const std::shared_ptr<api::MergeBucketReply>& reply) override;
bool onNotifyBucketChange(const std::shared_ptr<api::NotifyBucketChangeCommand>&) override;
void resendDelayedMessages();
- void storageDistributionChanged();
vespalib::string reportXmlStatus(vespalib::xml::XmlOutputStream&, const framework::HttpUrlPath&) const;
vespalib::string getReportContentType(const framework::HttpUrlPath&) const override;
@@ -67,16 +63,6 @@ public:
const DistributorNodeContext& node_context() const { return _node_ctx; }
DistributorStripeOperationContext& operation_context() { return _op_ctx; }
- /**
- * Returns whether the current PendingClusterState indicates that there has
- * been a transfer of bucket ownership amongst the distributors in the
- * cluster. This method only makes sense to call when _pending_cluster_state
- * is active, such as from within a enableClusterState() call.
- */
- bool bucketOwnershipHasChanged() const {
- return ((_pendingClusterState.get() != nullptr)
- && _pendingClusterState->hasBucketOwnershipTransfer());
- }
void set_stale_reads_enabled(bool enabled) noexcept {
_stale_reads_enabled.store(enabled, std::memory_order_relaxed);
}
@@ -143,7 +129,6 @@ private:
};
friend class DistributorStripeTestUtil;
- friend class DistributorTestUtil;
// TODO refactor and rewire to avoid needing this direct meddling
friend class DistributorStripe;
@@ -154,13 +139,9 @@ private:
bool shouldDeferStateEnabling() const noexcept;
bool hasPendingClusterState() const;
- bool pendingClusterStateAccepted(const std::shared_ptr<api::RequestBucketInfoReply>& repl);
bool processSingleBucketInfoReply(const std::shared_ptr<api::RequestBucketInfoReply>& repl);
void handleSingleBucketInfoFailure(const std::shared_ptr<api::RequestBucketInfoReply>& repl,
const BucketRequest& req);
- bool isPendingClusterStateCompleted() const;
- void processCompletedPendingClusterState();
- void activatePendingClusterState();
void mergeBucketInfoWithDatabase(const std::shared_ptr<api::RequestBucketInfoReply>& repl,
const BucketRequest& req);
void convertBucketInfoToBucketList(const std::shared_ptr<api::RequestBucketInfoReply>& repl,
@@ -169,8 +150,6 @@ private:
const std::shared_ptr<MergeReplyGuard>& mergeReply);
void addBucketInfoForNode(const BucketDatabase::Entry& e, uint16_t node,
BucketListMerger::BucketList& existing) const;
- void ensureTransitionTimerStarted();
- void completeTransitionTimer();
void clearReadOnlyBucketRepoDatabases();
/**
* Adds all buckets contained in the bucket database
@@ -187,15 +166,10 @@ private:
*/
void updateDatabase(document::BucketSpace bucketSpace, uint16_t node, BucketListMerger& merger);
- void updateState(const lib::ClusterState& oldState, const lib::ClusterState& newState);
-
void update_read_snapshot_before_db_pruning();
- void removeSuperfluousBuckets(const lib::ClusterStateBundle& newState,
- bool is_distribution_config_change);
void update_read_snapshot_after_db_pruning(const lib::ClusterStateBundle& new_state);
void update_read_snapshot_after_activation(const lib::ClusterStateBundle& activated_state);
- // TODO STRIPE only called when stripe guard is held
PotentialDataLossReport remove_superfluous_buckets(document::BucketSpace bucket_space,
const lib::ClusterState& new_state,
bool is_distribution_change);
@@ -207,26 +181,15 @@ private:
const std::unordered_set<uint16_t>& outdated_nodes,
const std::vector<dbtransition::Entry>& entries);
- void replyToPreviousPendingClusterStateIfAny();
- void replyToActivationWithActualVersion(
- const api::ActivateClusterStateVersionCommand& cmd,
- uint32_t actualVersion);
-
- void enableCurrentClusterStateBundleInDistributor();
- void addCurrentStateToClusterStateHistory();
void enqueueRecheckUntilPendingStateEnabled(uint16_t node, const document::Bucket&);
void sendAllQueuedBucketRechecks();
- void maybe_inject_simulated_db_pruning_delay();
- void maybe_inject_simulated_db_merging_delay();
-
/**
Removes all copies of buckets that are on nodes that are down.
*/
class MergingNodeRemover : public BucketDatabase::MergingProcessor {
public:
- MergingNodeRemover(const lib::ClusterState& oldState,
- const lib::ClusterState& s,
+ MergingNodeRemover(const lib::ClusterState& s,
uint16_t localIndex,
const lib::Distribution& distribution,
const char* upStates,
@@ -248,44 +211,38 @@ private:
bool has_unavailable_nodes(const BucketDatabase::Entry&) const;
bool storage_node_is_available(uint16_t index) const noexcept;
- const lib::ClusterState _oldState;
- const lib::ClusterState _state;
- std::vector<bool> _available_nodes;
+ const lib::ClusterState _state;
+ std::vector<bool> _available_nodes;
std::vector<BucketDatabase::Entry> _nonOwnedBuckets;
- size_t _removed_buckets;
- size_t _removed_documents;
-
- uint16_t _localIndex;
- const lib::Distribution& _distribution;
- const char* _upStates;
- bool _track_non_owned_entries;
-
- mutable uint64_t _cachedDecisionSuperbucket;
- mutable bool _cachedOwned;
+ size_t _removed_buckets;
+ size_t _removed_documents;
+ uint16_t _localIndex;
+ const lib::Distribution& _distribution;
+ const char* _upStates;
+ bool _track_non_owned_entries;
+ mutable uint64_t _cachedDecisionSuperbucket;
+ mutable bool _cachedOwned;
};
- const DistributorNodeContext& _node_ctx;
- DistributorStripeOperationContext& _op_ctx;
- DistributorStripeInterface& _distributor_interface;
- std::deque<std::pair<framework::MilliSecTime, BucketRequest> > _delayedRequests;
- std::map<uint64_t, BucketRequest> _sentMessages;
- std::unique_ptr<PendingClusterState> _pendingClusterState;
- std::list<PendingClusterState::Summary> _history;
- DistributorMessageSender& _sender;
- std::set<EnqueuedBucketRecheck> _enqueuedRechecks;
- OutdatedNodesMap _outdatedNodesMap;
- framework::MilliSecTimer _transitionTimer;
- std::atomic<bool> _stale_reads_enabled;
using DistributionContexts = std::unordered_map<document::BucketSpace,
std::shared_ptr<BucketSpaceDistributionContext>,
document::BucketSpace::hash>;
- DistributionContexts _active_distribution_contexts;
using DbGuards = std::unordered_map<document::BucketSpace,
std::shared_ptr<BucketDatabase::ReadGuard>,
document::BucketSpace::hash>;
- DbGuards _explicit_transition_read_guard;
- mutable std::mutex _distribution_context_mutex;
- bool _use_legacy_mode;
+ using DelayedRequestsQueue = std::deque<std::pair<framework::MilliSecTime, BucketRequest>>;
+
+ const DistributorNodeContext& _node_ctx;
+ DistributorStripeOperationContext& _op_ctx;
+ DistributorStripeInterface& _distributor_interface;
+ DelayedRequestsQueue _delayedRequests;
+ std::map<uint64_t, BucketRequest> _sentMessages;
+ DistributorMessageSender& _sender;
+ std::set<EnqueuedBucketRecheck> _enqueuedRechecks;
+ std::atomic<bool> _stale_reads_enabled;
+ DistributionContexts _active_distribution_contexts;
+ DbGuards _explicit_transition_read_guard;
+ mutable std::mutex _distribution_context_mutex;
};
}
diff --git a/storage/src/vespa/storage/distributor/stripe_host_info_notifier.h b/storage/src/vespa/storage/distributor/stripe_host_info_notifier.h
index 3f10188827a..f3cccef6c6d 100644
--- a/storage/src/vespa/storage/distributor/stripe_host_info_notifier.h
+++ b/storage/src/vespa/storage/distributor/stripe_host_info_notifier.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdint>
diff --git a/storage/src/vespa/storage/distributor/throttlingoperationstarter.cpp b/storage/src/vespa/storage/distributor/throttlingoperationstarter.cpp
index 9e3230a0f34..7f05a102c9a 100644
--- a/storage/src/vespa/storage/distributor/throttlingoperationstarter.cpp
+++ b/storage/src/vespa/storage/distributor/throttlingoperationstarter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "throttlingoperationstarter.h"
#include <cassert>
diff --git a/storage/src/vespa/storage/distributor/throttlingoperationstarter.h b/storage/src/vespa/storage/distributor/throttlingoperationstarter.h
index e25141be214..e63fead8458 100644
--- a/storage/src/vespa/storage/distributor/throttlingoperationstarter.h
+++ b/storage/src/vespa/storage/distributor/throttlingoperationstarter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "operationstarter.h"
diff --git a/storage/src/vespa/storage/distributor/tickable_stripe.h b/storage/src/vespa/storage/distributor/tickable_stripe.h
index 8d077455a48..d58b1e2e6aa 100644
--- a/storage/src/vespa/storage/distributor/tickable_stripe.h
+++ b/storage/src/vespa/storage/distributor/tickable_stripe.h
@@ -1,7 +1,7 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
-#include "stripe_access_guard.h" // TODO STRIPE break up
+#include "stripe_access_guard.h"
namespace storage::lib {
class ClusterState;
@@ -39,7 +39,8 @@ public:
virtual void update_distribution_config(const BucketSpaceDistributionConfigs& new_configs) = 0;
virtual void set_pending_cluster_state_bundle(const lib::ClusterStateBundle& pending_state) = 0;
virtual void clear_pending_cluster_state_bundle() = 0;
- virtual void enable_cluster_state_bundle(const lib::ClusterStateBundle& new_state) = 0;
+ virtual void enable_cluster_state_bundle(const lib::ClusterStateBundle& new_state,
+ bool has_bucket_ownership_change) = 0;
virtual void notify_distribution_change_enabled() = 0;
virtual PotentialDataLossReport remove_superfluous_buckets(document::BucketSpace bucket_space,
diff --git a/storage/src/vespa/storage/distributor/bucketdbupdater.cpp b/storage/src/vespa/storage/distributor/top_level_bucket_db_updater.cpp
index e407d57fd43..8fc6d7576c9 100644
--- a/storage/src/vespa/storage/distributor/bucketdbupdater.cpp
+++ b/storage/src/vespa/storage/distributor/top_level_bucket_db_updater.cpp
@@ -1,10 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include "bucketdbupdater.h"
+#include "top_level_bucket_db_updater.h"
#include "bucket_db_prune_elision.h"
#include "bucket_space_distribution_configs.h"
#include "bucket_space_distribution_context.h"
-#include "distributor.h"
+#include "top_level_distributor.h"
#include "distributor_bucket_space.h"
#include "distributormetricsset.h"
#include "simpleclusterinformation.h"
@@ -27,14 +27,16 @@ using document::BucketSpace;
namespace storage::distributor {
-BucketDBUpdater::BucketDBUpdater(const DistributorNodeContext& node_ctx,
- DistributorOperationContext& op_ctx,
- DistributorInterface& distributor_interface,
- ChainedMessageSender& chained_sender,
- std::shared_ptr<const lib::Distribution> bootstrap_distribution,
- StripeAccessor& stripe_accessor)
+TopLevelBucketDBUpdater::TopLevelBucketDBUpdater(const DistributorNodeContext& node_ctx,
+ DistributorOperationContext& op_ctx,
+ DistributorInterface& distributor_interface,
+ ChainedMessageSender& chained_sender,
+ std::shared_ptr<const lib::Distribution> bootstrap_distribution,
+ StripeAccessor& stripe_accessor,
+ ClusterStateBundleActivationListener* state_activation_listener)
: framework::StatusReporter("bucketdb", "Bucket DB Updater"),
_stripe_accessor(stripe_accessor),
+ _state_activation_listener(state_activation_listener),
_active_state_bundle(lib::ClusterState()),
_node_ctx(node_ctx),
_op_ctx(op_ctx),
@@ -48,83 +50,74 @@ BucketDBUpdater::BucketDBUpdater(const DistributorNodeContext& node_ctx,
_stale_reads_enabled(false)
{
// FIXME STRIPE top-level Distributor needs a proper way to track the current cluster state bundle!
- propagate_active_state_bundle_internally();
+ propagate_active_state_bundle_internally(true); // We're just starting up so assume ownership transfer.
bootstrap_distribution_config(bootstrap_distribution);
}
-BucketDBUpdater::~BucketDBUpdater() = default;
+TopLevelBucketDBUpdater::~TopLevelBucketDBUpdater() = default;
void
-BucketDBUpdater::propagate_active_state_bundle_internally() {
- for (auto* repo : {&_op_ctx.bucket_space_repo(), &_op_ctx.read_only_bucket_space_repo()}) {
- for (auto& iter : *repo) {
- iter.second->setClusterState(_active_state_bundle.getDerivedClusterState(iter.first));
- }
+TopLevelBucketDBUpdater::propagate_active_state_bundle_internally(bool has_bucket_ownership_transfer) {
+ for (auto& elem : _op_ctx.bucket_space_states()) {
+ elem.second->set_cluster_state(_active_state_bundle.getDerivedClusterState(elem.first));
+ }
+ if (_state_activation_listener) {
+ _state_activation_listener->on_cluster_state_bundle_activated(_active_state_bundle, has_bucket_ownership_transfer);
}
}
void
-BucketDBUpdater::bootstrap_distribution_config(std::shared_ptr<const lib::Distribution> distribution) {
+TopLevelBucketDBUpdater::bootstrap_distribution_config(std::shared_ptr<const lib::Distribution> distribution) {
auto global_distr = GlobalBucketSpaceDistributionConverter::convert_to_global(*distribution);
- for (auto* repo : {&_op_ctx.bucket_space_repo(), &_op_ctx.read_only_bucket_space_repo()}) {
- repo->get(document::FixedBucketSpaces::default_space()).setDistribution(distribution);
- repo->get(document::FixedBucketSpaces::global_space()).setDistribution(global_distr);
- }
+ _op_ctx.bucket_space_states().get(document::FixedBucketSpaces::default_space()).set_distribution(distribution);
+ _op_ctx.bucket_space_states().get(document::FixedBucketSpaces::global_space()).set_distribution(global_distr);
// TODO STRIPE do we need to bootstrap the stripes as well here? Or do they do this on their own volition?
// ... need to take a guard if so, so can probably not be done at ctor time..?
}
void
-BucketDBUpdater::propagate_distribution_config(const BucketSpaceDistributionConfigs& configs) {
- for (auto* repo : {&_op_ctx.bucket_space_repo(), &_op_ctx.read_only_bucket_space_repo()}) {
- if (auto distr = configs.get_or_nullptr(document::FixedBucketSpaces::default_space())) {
- repo->get(document::FixedBucketSpaces::default_space()).setDistribution(distr);
- }
- if (auto distr = configs.get_or_nullptr(document::FixedBucketSpaces::global_space())) {
- repo->get(document::FixedBucketSpaces::global_space()).setDistribution(distr);
- }
+TopLevelBucketDBUpdater::propagate_distribution_config(const BucketSpaceDistributionConfigs& configs) {
+ if (auto distr = configs.get_or_nullptr(document::FixedBucketSpaces::default_space())) {
+ _op_ctx.bucket_space_states().get(document::FixedBucketSpaces::default_space()).set_distribution(distr);
+ }
+ if (auto distr = configs.get_or_nullptr(document::FixedBucketSpaces::global_space())) {
+ _op_ctx.bucket_space_states().get(document::FixedBucketSpaces::global_space()).set_distribution(distr);
}
}
-// FIXME what about bucket DB replica update timestamp allocations?! Replace with u64 counter..?
-// Must at the very least ensure we use stripe-local TS generation for DB inserts...! i.e. no global TS
-// Or do we have to touch these at all here? Just defer all this via stripe interface?
void
-BucketDBUpdater::flush()
+TopLevelBucketDBUpdater::flush()
{
- // TODO STRIPE: Consider if this must flush_and_close() all stripes
}
void
-BucketDBUpdater::print(std::ostream& out, bool verbose, const std::string& indent) const
+TopLevelBucketDBUpdater::print(std::ostream& out, bool verbose, const std::string& indent) const
{
(void) verbose; (void) indent;
- out << "BucketDBUpdater";
+ out << "TopLevelBucketDBUpdater";
}
bool
-BucketDBUpdater::should_defer_state_enabling() const noexcept
+TopLevelBucketDBUpdater::should_defer_state_enabling() const noexcept
{
return stale_reads_enabled();
}
bool
-BucketDBUpdater::has_pending_cluster_state() const
+TopLevelBucketDBUpdater::has_pending_cluster_state() const
{
return static_cast<bool>(_pending_cluster_state);
}
void
-BucketDBUpdater::remove_superfluous_buckets(
+TopLevelBucketDBUpdater::remove_superfluous_buckets(
StripeAccessGuard& guard,
const lib::ClusterStateBundle& new_state,
bool is_distribution_config_change)
{
const char* up_states = storage_node_up_states();
- // TODO STRIPE explicit space -> config mapping, don't get via repo
- // ... but we need to get the current cluster state per space..!
- for (auto& elem : _op_ctx.bucket_space_repo()) {
- const auto& old_cluster_state(elem.second->getClusterState());
+ for (auto& elem : _op_ctx.bucket_space_states()) {
+ const auto& old_cluster_state(elem.second->get_cluster_state());
const auto& new_cluster_state = new_state.getDerivedClusterState(elem.first);
// Running a full DB sweep is expensive, so if the cluster state transition does
@@ -137,8 +130,6 @@ BucketDBUpdater::remove_superfluous_buckets(
old_cluster_state.toString().c_str(), new_cluster_state->toString().c_str());
continue;
}
- // TODO STRIPE should we also pass old state and distr config? Must ensure we're in sync with stripe...
- // .. but config is set synchronously via the guard upon pending state creation edge
auto maybe_lost = guard.remove_superfluous_buckets(elem.first, *new_cluster_state, is_distribution_config_change);
if (maybe_lost.buckets != 0) {
LOGBM(info, "After cluster state change %s, %zu buckets no longer "
@@ -162,17 +153,17 @@ void maybe_sleep_for(std::chrono::milliseconds ms) {
}
void
-BucketDBUpdater::maybe_inject_simulated_db_pruning_delay() {
+TopLevelBucketDBUpdater::maybe_inject_simulated_db_pruning_delay() {
maybe_sleep_for(_op_ctx.distributor_config().simulated_db_pruning_latency());
}
void
-BucketDBUpdater::maybe_inject_simulated_db_merging_delay() {
+TopLevelBucketDBUpdater::maybe_inject_simulated_db_merging_delay() {
maybe_sleep_for(_op_ctx.distributor_config().simulated_db_merging_latency());
}
void
-BucketDBUpdater::ensure_transition_timer_started()
+TopLevelBucketDBUpdater::ensure_transition_timer_started()
{
// Don't overwrite start time if we're already processing a state, as
// that will make transition times appear artificially low.
@@ -182,14 +173,14 @@ BucketDBUpdater::ensure_transition_timer_started()
}
void
-BucketDBUpdater::complete_transition_timer()
+TopLevelBucketDBUpdater::complete_transition_timer()
{
_distributor_interface.metrics()
.stateTransitionTime.addValue(_transition_timer.getElapsedTimeAsDouble());
}
void
-BucketDBUpdater::storage_distribution_changed(const BucketSpaceDistributionConfigs& configs)
+TopLevelBucketDBUpdater::storage_distribution_changed(const BucketSpaceDistributionConfigs& configs)
{
propagate_distribution_config(configs);
ensure_transition_timer_started();
@@ -207,15 +198,15 @@ BucketDBUpdater::storage_distribution_changed(const BucketSpaceDistributionConfi
_node_ctx.clock(),
std::move(clusterInfo),
_sender,
- _op_ctx.bucket_space_repo(), // TODO STRIPE cannot use!
- _op_ctx.generate_unique_timestamp()); // TODO STRIPE must ensure no stripes can generate < this
+ _op_ctx.bucket_space_states(),
+ _op_ctx.generate_unique_timestamp());
_outdated_nodes_map = _pending_cluster_state->getOutdatedNodesMap();
guard->set_pending_cluster_state_bundle(_pending_cluster_state->getNewClusterStateBundle());
}
void
-BucketDBUpdater::reply_to_previous_pending_cluster_state_if_any()
+TopLevelBucketDBUpdater::reply_to_previous_pending_cluster_state_if_any()
{
if (_pending_cluster_state.get() && _pending_cluster_state->hasCommand()) {
_chained_sender.sendUp(
@@ -224,7 +215,7 @@ BucketDBUpdater::reply_to_previous_pending_cluster_state_if_any()
}
void
-BucketDBUpdater::reply_to_activation_with_actual_version(
+TopLevelBucketDBUpdater::reply_to_activation_with_actual_version(
const api::ActivateClusterStateVersionCommand& cmd,
uint32_t actualVersion)
{
@@ -234,7 +225,7 @@ BucketDBUpdater::reply_to_activation_with_actual_version(
}
bool
-BucketDBUpdater::onSetSystemState(
+TopLevelBucketDBUpdater::onSetSystemState(
const std::shared_ptr<api::SetSystemStateCommand>& cmd)
{
LOG(debug, "Received new cluster state %s",
@@ -264,7 +255,7 @@ BucketDBUpdater::onSetSystemState(
_node_ctx.clock(),
std::move(clusterInfo),
_sender,
- _op_ctx.bucket_space_repo(), // TODO STRIPE remove
+ _op_ctx.bucket_space_states(),
cmd,
_outdated_nodes_map,
_op_ctx.generate_unique_timestamp()); // FIXME STRIPE must be atomic across all threads
@@ -281,7 +272,7 @@ BucketDBUpdater::onSetSystemState(
}
bool
-BucketDBUpdater::onActivateClusterStateVersion(const std::shared_ptr<api::ActivateClusterStateVersionCommand>& cmd)
+TopLevelBucketDBUpdater::onActivateClusterStateVersion(const std::shared_ptr<api::ActivateClusterStateVersionCommand>& cmd)
{
if (has_pending_cluster_state() && _pending_cluster_state->isVersionedTransition()) {
const auto pending_version = _pending_cluster_state->clusterStateVersion();
@@ -315,7 +306,7 @@ BucketDBUpdater::onActivateClusterStateVersion(const std::shared_ptr<api::Activa
}
bool
-BucketDBUpdater::onRequestBucketInfoReply(
+TopLevelBucketDBUpdater::onRequestBucketInfoReply(
const std::shared_ptr<api::RequestBucketInfoReply>& repl)
{
if (pending_cluster_state_accepted(repl)) {
@@ -325,7 +316,7 @@ BucketDBUpdater::onRequestBucketInfoReply(
}
bool
-BucketDBUpdater::pending_cluster_state_accepted(
+TopLevelBucketDBUpdater::pending_cluster_state_accepted(
const std::shared_ptr<api::RequestBucketInfoReply>& repl)
{
if (_pending_cluster_state.get()
@@ -343,7 +334,7 @@ BucketDBUpdater::pending_cluster_state_accepted(
}
void
-BucketDBUpdater::resend_delayed_messages()
+TopLevelBucketDBUpdater::resend_delayed_messages()
{
if (_pending_cluster_state) {
_pending_cluster_state->resendDelayedMessages();
@@ -351,13 +342,13 @@ BucketDBUpdater::resend_delayed_messages()
}
bool
-BucketDBUpdater::is_pending_cluster_state_completed() const
+TopLevelBucketDBUpdater::is_pending_cluster_state_completed() const
{
return _pending_cluster_state.get() && _pending_cluster_state->done();
}
void
-BucketDBUpdater::process_completed_pending_cluster_state(StripeAccessGuard& guard)
+TopLevelBucketDBUpdater::process_completed_pending_cluster_state(StripeAccessGuard& guard)
{
if (_pending_cluster_state->isDeferred()) {
LOG(debug, "Deferring completion of pending cluster state version %u until explicitly activated",
@@ -381,7 +372,7 @@ BucketDBUpdater::process_completed_pending_cluster_state(StripeAccessGuard& guar
}
void
-BucketDBUpdater::activate_pending_cluster_state(StripeAccessGuard& guard)
+TopLevelBucketDBUpdater::activate_pending_cluster_state(StripeAccessGuard& guard)
{
framework::MilliSecTimer process_timer(_node_ctx.clock());
@@ -414,29 +405,31 @@ BucketDBUpdater::activate_pending_cluster_state(StripeAccessGuard& guard)
}
void
-BucketDBUpdater::enable_current_cluster_state_bundle_in_distributor_and_stripes(StripeAccessGuard& guard)
+TopLevelBucketDBUpdater::enable_current_cluster_state_bundle_in_distributor_and_stripes(StripeAccessGuard& guard)
{
const lib::ClusterStateBundle& state = _pending_cluster_state->getNewClusterStateBundle();
_active_state_bundle = _pending_cluster_state->getNewClusterStateBundle();
- propagate_active_state_bundle_internally();
- LOG(debug, "BucketDBUpdater finished processing state %s",
- state.getBaselineClusterState()->toString().c_str());
+ guard.enable_cluster_state_bundle(state, _pending_cluster_state->hasBucketOwnershipTransfer());
+ propagate_active_state_bundle_internally(_pending_cluster_state->hasBucketOwnershipTransfer());
- guard.enable_cluster_state_bundle(state);
+ LOG(debug, "TopLevelBucketDBUpdater finished processing state %s",
+ state.getBaselineClusterState()->toString().c_str());
}
-void BucketDBUpdater::simulate_cluster_state_bundle_activation(const lib::ClusterStateBundle& activated_state) {
+void TopLevelBucketDBUpdater::simulate_cluster_state_bundle_activation(const lib::ClusterStateBundle& activated_state,
+ bool has_bucket_ownership_transfer)
+{
auto guard = _stripe_accessor.rendezvous_and_hold_all();
- guard->enable_cluster_state_bundle(activated_state);
+ guard->enable_cluster_state_bundle(activated_state, has_bucket_ownership_transfer);
_active_state_bundle = activated_state;
- propagate_active_state_bundle_internally();
+ propagate_active_state_bundle_internally(has_bucket_ownership_transfer);
}
void
-BucketDBUpdater::add_current_state_to_cluster_state_history()
+TopLevelBucketDBUpdater::add_current_state_to_cluster_state_history()
{
_history.push_back(_pending_cluster_state->getSummary());
@@ -446,7 +439,7 @@ BucketDBUpdater::add_current_state_to_cluster_state_history()
}
vespalib::string
-BucketDBUpdater::getReportContentType(const framework::HttpUrlPath&) const
+TopLevelBucketDBUpdater::getReportContentType(const framework::HttpUrlPath&) const
{
return "text/xml";
}
@@ -460,13 +453,13 @@ const vespalib::string BUCKETDB_UPDATER = "Bucket Database Updater";
}
bool
-BucketDBUpdater::reportStatus(std::ostream& out,
- const framework::HttpUrlPath& path) const
+TopLevelBucketDBUpdater::reportStatus(std::ostream& out,
+ const framework::HttpUrlPath& path) const
{
using namespace vespalib::xml;
XmlOutputStream xos(out);
// FIXME(vekterli): have to do this manually since we cannot inherit
- // directly from XmlStatusReporter due to data races when BucketDBUpdater
+ // directly from XmlStatusReporter due to data races when TopLevelBucketDBUpdater
// gets status requests directly.
xos << XmlTag("status")
<< XmlAttribute("id", BUCKETDB)
@@ -477,8 +470,8 @@ BucketDBUpdater::reportStatus(std::ostream& out,
}
vespalib::string
-BucketDBUpdater::report_xml_status(vespalib::xml::XmlOutputStream& xos,
- const framework::HttpUrlPath&) const
+TopLevelBucketDBUpdater::report_xml_status(vespalib::xml::XmlOutputStream& xos,
+ const framework::HttpUrlPath&) const
{
using namespace vespalib::xml;
xos << XmlTag("bucketdb")
diff --git a/storage/src/vespa/storage/distributor/bucketdbupdater.h b/storage/src/vespa/storage/distributor/top_level_bucket_db_updater.h
index 787f0362da6..f35991c20f3 100644
--- a/storage/src/vespa/storage/distributor/bucketdbupdater.h
+++ b/storage/src/vespa/storage/distributor/top_level_bucket_db_updater.h
@@ -1,8 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bucketlistmerger.h"
-#include "distributor_stripe_component.h"
+#include "distributor_component.h"
#include "distributormessagesender.h"
#include "messageguard.h"
#include "operation_routing_snapshot.h"
@@ -28,22 +28,24 @@ namespace storage::distributor {
struct BucketSpaceDistributionConfigs;
class BucketSpaceDistributionContext;
+class ClusterStateBundleActivationListener;
class DistributorInterface;
class StripeAccessor;
class StripeAccessGuard;
-class BucketDBUpdater : public framework::StatusReporter,
- public api::MessageHandler
+class TopLevelBucketDBUpdater : public framework::StatusReporter,
+ public api::MessageHandler
{
public:
using OutdatedNodesMap = dbtransition::OutdatedNodesMap;
- BucketDBUpdater(const DistributorNodeContext& node_ctx,
- DistributorOperationContext& op_ctx,
- DistributorInterface& distributor_interface,
- ChainedMessageSender& chained_sender,
- std::shared_ptr<const lib::Distribution> bootstrap_distribution,
- StripeAccessor& stripe_accessor);
- ~BucketDBUpdater() override;
+ TopLevelBucketDBUpdater(const DistributorNodeContext& node_ctx,
+ DistributorOperationContext& op_ctx,
+ DistributorInterface& distributor_interface,
+ ChainedMessageSender& chained_sender,
+ std::shared_ptr<const lib::Distribution> bootstrap_distribution,
+ StripeAccessor& stripe_accessor,
+ ClusterStateBundleActivationListener* state_activation_listener);
+ ~TopLevelBucketDBUpdater() override;
void flush();
@@ -73,11 +75,12 @@ public:
private:
friend class DistributorStripeTestUtil;
- friend class DistributorTestUtil;
- // Only to be used by tests that want to ensure both the BucketDBUpdater _and_ the Distributor
+ friend class TopLevelDistributorTestUtil;
+ // Only to be used by tests that want to ensure both the TopLevelBucketDBUpdater _and_ the Distributor
// components agree on the currently active cluster state bundle.
// Transitively invokes Distributor::enableClusterStateBundle
- void simulate_cluster_state_bundle_activation(const lib::ClusterStateBundle& activated_state);
+ void simulate_cluster_state_bundle_activation(const lib::ClusterStateBundle& activated_state,
+ bool has_bucket_ownership_transfer = false);
bool should_defer_state_enabling() const noexcept;
bool has_pending_cluster_state() const;
@@ -100,13 +103,14 @@ private:
void enable_current_cluster_state_bundle_in_distributor_and_stripes(StripeAccessGuard& guard);
void add_current_state_to_cluster_state_history();
- void propagate_active_state_bundle_internally();
+ void propagate_active_state_bundle_internally(bool has_bucket_ownership_transfer);
void maybe_inject_simulated_db_pruning_delay();
void maybe_inject_simulated_db_merging_delay();
// TODO STRIPE remove once distributor component dependencies have been pruned
StripeAccessor& _stripe_accessor;
+ ClusterStateBundleActivationListener* _state_activation_listener;
lib::ClusterStateBundle _active_state_bundle;
const DistributorNodeContext& _node_ctx;
diff --git a/storage/src/vespa/storage/distributor/top_level_distributor.cpp b/storage/src/vespa/storage/distributor/top_level_distributor.cpp
new file mode 100644
index 00000000000..4bc2f141462
--- /dev/null
+++ b/storage/src/vespa/storage/distributor/top_level_distributor.cpp
@@ -0,0 +1,645 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+//
+#include "blockingoperationstarter.h"
+#include "bucket_space_distribution_configs.h"
+#include "top_level_bucket_db_updater.h"
+#include "top_level_distributor.h"
+#include "distributor_bucket_space.h"
+#include "distributor_status.h"
+#include "distributor_stripe.h"
+#include "distributor_stripe_pool.h"
+#include "distributor_stripe_thread.h"
+#include "distributor_total_metrics.h"
+#include "multi_threaded_stripe_access_guard.h"
+#include "operation_sequencer.h"
+#include "ownership_transfer_safe_time_point_calculator.h"
+#include "throttlingoperationstarter.h"
+#include <vespa/document/bucket/fixed_bucket_spaces.h>
+#include <vespa/storage/common/bucket_stripe_utils.h>
+#include <vespa/storage/common/global_bucket_space_distribution_converter.h>
+#include <vespa/storage/common/hostreporter/hostinfo.h>
+#include <vespa/storage/common/node_identity.h>
+#include <vespa/storage/common/nodestateupdater.h>
+#include <vespa/storage/config/distributorconfiguration.h>
+#include <vespa/storageapi/message/persistence.h>
+#include <vespa/storageapi/message/visitor.h>
+#include <vespa/storageframework/generic/status/xmlstatusreporter.h>
+#include <vespa/vdslib/distribution/distribution.h>
+#include <vespa/vespalib/util/memoryusage.h>
+#include <algorithm>
+
+#include <vespa/log/log.h>
+LOG_SETUP(".distributor-main");
+
+using namespace std::chrono_literals;
+
+namespace storage::distributor {
+
+TopLevelDistributor::TopLevelDistributor(DistributorComponentRegister& compReg,
+ const NodeIdentity& node_identity,
+ framework::TickingThreadPool& threadPool,
+ DistributorStripePool& stripe_pool,
+ DoneInitializeHandler& done_init_handler,
+ uint32_t num_distributor_stripes,
+ HostInfo& hostInfoReporterRegistrar,
+ ChainedMessageSender* messageSender)
+ : StorageLink("distributor"),
+ framework::StatusReporter("distributor", "Distributor"),
+ _node_identity(node_identity),
+ _comp_reg(compReg),
+ _done_init_handler(done_init_handler),
+ _done_initializing(false),
+ _total_metrics(std::make_shared<DistributorTotalMetrics>(num_distributor_stripes)),
+ _ideal_state_total_metrics(std::make_shared<IdealStateTotalMetrics>(num_distributor_stripes)),
+ _messageSender(messageSender),
+ _n_stripe_bits(0),
+ _stripe_pool(stripe_pool),
+ _stripes(),
+ _stripe_accessor(),
+ _random_stripe_gen(),
+ _random_stripe_gen_mutex(),
+ _message_queue(),
+ _fetched_messages(),
+ _component(*this, compReg, "distributor"),
+ _ideal_state_component(compReg, "Ideal state manager"),
+ _total_config(_component.total_distributor_config_sp()),
+ _bucket_db_updater(),
+ _distributorStatusDelegate(compReg, *this, *this),
+ _bucket_db_status_delegate(),
+ _threadPool(threadPool),
+ _status_to_do(),
+ _fetched_status_requests(),
+ _stripe_scan_notify_mutex(),
+ _stripe_scan_stats(),
+ _last_host_info_send_time(),
+ _host_info_send_delay(1000ms),
+ _maintenance_safe_time_point(),
+ _maintenance_safe_time_delay(1s),
+ _tickResult(framework::ThreadWaitInfo::NO_MORE_CRITICAL_WORK_KNOWN),
+ _metricUpdateHook(*this),
+ _hostInfoReporter(*this, *this),
+ _distribution(),
+ _next_distribution(),
+ _current_internal_config_generation(_component.internal_config_generation())
+{
+ _component.registerMetric(*_total_metrics);
+ _ideal_state_component.registerMetric(*_ideal_state_total_metrics);
+ _component.registerMetricUpdateHook(_metricUpdateHook, framework::SecondTime(0));
+
+ assert(num_distributor_stripes == adjusted_num_stripes(num_distributor_stripes));
+ _n_stripe_bits = calc_num_stripe_bits(num_distributor_stripes);
+ LOG(debug, "Setting up distributor with %u stripes using %u stripe bits",
+ num_distributor_stripes, _n_stripe_bits);
+ _stripe_accessor = std::make_unique<MultiThreadedStripeAccessor>(_stripe_pool);
+ _bucket_db_updater = std::make_unique<TopLevelBucketDBUpdater>(_component, _component,
+ *this, *this,
+ _component.getDistribution(),
+ *_stripe_accessor,
+ this);
+ for (size_t i = 0; i < num_distributor_stripes; ++i) {
+ _stripes.emplace_back(std::make_unique<DistributorStripe>(compReg,
+ _total_metrics->stripe(i),
+ _ideal_state_total_metrics->stripe(i),
+ node_identity,
+ *this, *this,
+ _done_initializing, i));
+ }
+ _stripe_scan_stats.resize(num_distributor_stripes);
+ _distributorStatusDelegate.registerStatusPage();
+ _bucket_db_status_delegate = std::make_unique<StatusReporterDelegate>(compReg, *this, *_bucket_db_updater);
+ _bucket_db_status_delegate->registerStatusPage();
+
+ _hostInfoReporter.enableReporting(config().getEnableHostInfoReporting());
+ hostInfoReporterRegistrar.registerReporter(&_hostInfoReporter);
+ propagateDefaultDistribution(_component.getDistribution());
+};
+
+TopLevelDistributor::~TopLevelDistributor()
+{
+ // XXX: why is there no _component.unregisterMetricUpdateHook()?
+ closeNextLink();
+}
+
+DistributorMetricSet&
+TopLevelDistributor::getMetrics()
+{
+ return _total_metrics->bucket_db_updater_metrics();
+}
+
+void
+TopLevelDistributor::setNodeStateUp()
+{
+ NodeStateUpdater::Lock::SP lock(_component.getStateUpdater().grabStateChangeLock());
+ lib::NodeState ns(*_component.getStateUpdater().getReportedNodeState());
+ ns.setState(lib::State::UP);
+ _component.getStateUpdater().setReportedNodeState(ns);
+}
+
+void
+TopLevelDistributor::onOpen()
+{
+ LOG(debug, "Distributor::onOpen invoked");
+ setNodeStateUp();
+ if (_component.getDistributorConfig().startDistributorThread) {
+ _threadPool.addThread(*this);
+ _threadPool.start(_component.getThreadPool());
+ start_stripe_pool();
+ } else {
+ LOG(warning, "Not starting distributor thread as it's configured to "
+ "run. Unless you are just running a test tool, this is a "
+ "fatal error.");
+ }
+}
+
+void TopLevelDistributor::onClose() {
+ // Note: In a running system this function is called by the main thread in StorageApp as part of shutdown.
+ // The distributor and stripe thread pools are already stopped at this point.
+ LOG(debug, "Distributor::onClose invoked");
+ // Tests may run with multiple stripes but without threads (for determinism's sake),
+ // so only try to flush stripes if a pool is running.
+ // TODO STRIPE probably also need to flush when running tests to handle any explicit close-tests.
+ if (_stripe_pool.stripe_count() > 0) {
+ assert(_stripe_pool.is_stopped());
+ for (auto& thread : _stripe_pool) {
+ thread->stripe().flush_and_close();
+ }
+ }
+ assert(_bucket_db_updater);
+ _bucket_db_updater->flush();
+}
+
+void
+TopLevelDistributor::start_stripe_pool()
+{
+ std::vector<TickableStripe*> pool_stripes;
+ for (auto& stripe : _stripes) {
+ pool_stripes.push_back(stripe.get());
+ }
+ _stripe_pool.start(pool_stripes); // If unit testing, this won't actually start any OS threads
+}
+
+void
+TopLevelDistributor::sendUp(const std::shared_ptr<api::StorageMessage>& msg)
+{
+ if (_messageSender) {
+ _messageSender->sendUp(msg);
+ } else {
+ StorageLink::sendUp(msg);
+ }
+}
+
+void
+TopLevelDistributor::sendDown(const std::shared_ptr<api::StorageMessage>& msg)
+{
+ if (_messageSender) {
+ _messageSender->sendDown(msg);
+ } else {
+ StorageLink::sendDown(msg);
+ }
+}
+
+namespace {
+
+bool should_be_handled_by_top_level_bucket_db_updater(const api::StorageMessage& msg) noexcept {
+ switch (msg.getType().getId()) {
+ case api::MessageType::SETSYSTEMSTATE_ID:
+ case api::MessageType::GETNODESTATE_ID:
+ case api::MessageType::ACTIVATE_CLUSTER_STATE_VERSION_ID:
+ return true;
+ case api::MessageType::REQUESTBUCKETINFO_REPLY_ID:
+ // Top-level component should only handle replies for full bucket info fetches.
+ // Bucket-specific requests should go to the stripes that sent them.
+ return dynamic_cast<const api::RequestBucketInfoReply&>(msg).full_bucket_fetch();
+ default:
+ return false;
+ }
+}
+
+document::BucketId
+get_bucket_id_for_striping(const api::StorageMessage& msg, const DistributorNodeContext& node_ctx)
+{
+ if (!msg.getBucketId().isSet()) {
+ // Calculate a bucket id (dependent on the message type) to dispatch the message to the correct distributor stripe.
+ switch (msg.getType().getId()) {
+ case api::MessageType::PUT_ID:
+ case api::MessageType::UPDATE_ID:
+ case api::MessageType::REMOVE_ID:
+ return node_ctx.bucket_id_factory().getBucketId(dynamic_cast<const api::TestAndSetCommand&>(msg).getDocumentId());
+ case api::MessageType::REQUESTBUCKETINFO_REPLY_ID:
+ return dynamic_cast<const api::RequestBucketInfoReply&>(msg).super_bucket_id();
+ case api::MessageType::GET_ID:
+ return node_ctx.bucket_id_factory().getBucketId(dynamic_cast<const api::GetCommand&>(msg).getDocumentId());
+ case api::MessageType::VISITOR_CREATE_ID:
+ return dynamic_cast<const api::CreateVisitorCommand&>(msg).super_bucket_id();
+ case api::MessageType::VISITOR_CREATE_REPLY_ID:
+ return dynamic_cast<const api::CreateVisitorReply&>(msg).super_bucket_id();
+ default:
+ return msg.getBucketId();
+ }
+ }
+ return msg.getBucketId();
+}
+
+}
+
+uint32_t
+TopLevelDistributor::random_stripe_idx()
+{
+ std::lock_guard lock(_random_stripe_gen_mutex);
+ return _random_stripe_gen.nextUint32() % _stripes.size();
+}
+
+uint32_t
+TopLevelDistributor::stripe_of_bucket_id(const document::BucketId& bucket_id, const api::StorageMessage& msg)
+{
+ if (!bucket_id.isSet()) {
+ LOG(error, "Message (%s) has a bucket id (%s) that is not set. Cannot route to stripe",
+ msg.toString(true).c_str(), bucket_id.toString().c_str());
+ }
+ assert(bucket_id.isSet());
+ if (bucket_id.getUsedBits() < spi::BucketLimits::MinUsedBits) {
+ if (msg.getType().getId() == api::MessageType::VISITOR_CREATE_ID) {
+ // This message will eventually be bounced with api::ReturnCode::WRONG_DISTRIBUTION,
+ // so we can just route it to a random distributor stripe.
+ return random_stripe_idx();
+ }
+ }
+ return storage::stripe_of_bucket_key(bucket_id.toKey(), _n_stripe_bits);
+}
+
+bool
+TopLevelDistributor::onDown(const std::shared_ptr<api::StorageMessage>& msg)
+{
+ if (should_be_handled_by_top_level_bucket_db_updater(*msg)) {
+ dispatch_to_main_distributor_thread_queue(msg);
+ return true;
+ }
+ auto bucket_id = get_bucket_id_for_striping(*msg, _component);
+ uint32_t stripe_idx = stripe_of_bucket_id(bucket_id, *msg);
+ MBUS_TRACE(msg->getTrace(), 9,
+ vespalib::make_string("Distributor::onDown(): Dispatch message to stripe %u", stripe_idx));
+ bool handled = _stripes[stripe_idx]->handle_or_enqueue_message(msg);
+ if (handled) {
+ _stripe_pool.notify_stripe_event_has_triggered(stripe_idx);
+ }
+ return handled;
+}
+
+const DistributorConfiguration&
+TopLevelDistributor::config() const
+{
+ return *_total_config;
+}
+
+void
+TopLevelDistributor::sendCommand(const std::shared_ptr<api::StorageCommand>& cmd)
+{
+ sendUp(cmd);
+}
+
+void
+TopLevelDistributor::sendReply(const std::shared_ptr<api::StorageReply>& reply)
+{
+ sendUp(reply);
+}
+
+void
+TopLevelDistributor::storageDistributionChanged()
+{
+ if (!_distribution || (*_component.getDistribution() != *_distribution)) {
+ LOG(debug, "Distribution changed to %s, must re-fetch bucket information",
+ _component.getDistribution()->toString().c_str());
+ _next_distribution = _component.getDistribution(); // FIXME this is not thread safe
+ } else {
+ LOG(debug, "Got distribution change, but the distribution %s was the same as before: %s",
+ _component.getDistribution()->toString().c_str(),
+ _distribution->toString().c_str());
+ }
+}
+
+void
+TopLevelDistributor::enableNextDistribution()
+{
+ if (_next_distribution) {
+ _distribution = _next_distribution;
+ _next_distribution = std::shared_ptr<lib::Distribution>();
+ auto new_configs = BucketSpaceDistributionConfigs::from_default_distribution(_distribution);
+ _bucket_db_updater->storage_distribution_changed(new_configs);
+ }
+}
+
+// TODO STRIPE only used by tests to directly inject new distribution config
+// - actually, also by ctor
+void
+TopLevelDistributor::propagateDefaultDistribution(
+ std::shared_ptr<const lib::Distribution> distribution)
+{
+ // Should only be called at ctor time, at which point the pool is not yet running.
+ assert(_stripe_pool.stripe_count() == 0);
+ auto new_configs = BucketSpaceDistributionConfigs::from_default_distribution(std::move(distribution));
+ for (auto& stripe : _stripes) {
+ stripe->update_distribution_config(new_configs);
+ }
+}
+
+std::unordered_map<uint16_t, uint32_t>
+TopLevelDistributor::getMinReplica() const
+{
+ std::unordered_map<uint16_t, uint32_t> result;
+ for (const auto& stripe : _stripes) {
+ merge_min_replica_stats(result, stripe->getMinReplica());
+ }
+ return result;
+}
+
+BucketSpacesStatsProvider::PerNodeBucketSpacesStats
+TopLevelDistributor::getBucketSpacesStats() const
+{
+ BucketSpacesStatsProvider::PerNodeBucketSpacesStats result;
+ for (const auto& stripe : _stripes) {
+ merge_per_node_bucket_spaces_stats(result, stripe->getBucketSpacesStats());
+ }
+ return result;
+}
+
+SimpleMaintenanceScanner::PendingMaintenanceStats
+TopLevelDistributor::pending_maintenance_stats() const {
+ SimpleMaintenanceScanner::PendingMaintenanceStats result;
+ for (const auto& stripe : _stripes) {
+ result.merge(stripe->pending_maintenance_stats());
+ }
+ return result;
+}
+
+void
+TopLevelDistributor::propagateInternalScanMetricsToExternal()
+{
+ for (auto &stripe : _stripes) {
+ stripe->propagateInternalScanMetricsToExternal();
+ }
+ _total_metrics->aggregate();
+ _ideal_state_total_metrics->aggregate();
+}
+
+void
+TopLevelDistributor::dispatch_to_main_distributor_thread_queue(const std::shared_ptr<api::StorageMessage>& msg)
+{
+ MBUS_TRACE(msg->getTrace(), 9, "Distributor: Added to main thread message queue");
+ framework::TickingLockGuard guard(_threadPool.freezeCriticalTicks());
+ _message_queue.emplace_back(msg);
+ guard.broadcast();
+}
+
+void
+TopLevelDistributor::fetch_external_messages()
+{
+ assert(_fetched_messages.empty());
+ _fetched_messages.swap(_message_queue);
+}
+
+void
+TopLevelDistributor::process_fetched_external_messages()
+{
+ for (auto& msg : _fetched_messages) {
+ MBUS_TRACE(msg->getTrace(), 9, "Distributor: Processing message in main thread");
+ if (!msg->callHandler(*_bucket_db_updater, msg)) {
+ MBUS_TRACE(msg->getTrace(), 9, "Distributor: Not handling it. Sending further down");
+ sendDown(msg);
+ }
+ }
+ if (!_fetched_messages.empty()) {
+ _fetched_messages.clear();
+ signal_work_was_done();
+ }
+}
+
+framework::ThreadWaitInfo
+TopLevelDistributor::doCriticalTick([[maybe_unused]] framework::ThreadIndex idx)
+{
+ _tickResult = framework::ThreadWaitInfo::NO_MORE_CRITICAL_WORK_KNOWN;
+ enableNextDistribution();
+ fetch_status_requests();
+ fetch_external_messages();
+ // Propagates any new configs down to stripe(s)
+ enable_next_config_if_changed();
+ un_inhibit_maintenance_if_safe_time_passed();
+
+ return _tickResult;
+}
+
+framework::ThreadWaitInfo
+TopLevelDistributor::doNonCriticalTick([[maybe_unused]] framework::ThreadIndex idx)
+{
+ _tickResult = framework::ThreadWaitInfo::NO_MORE_CRITICAL_WORK_KNOWN;
+ handle_status_requests();
+ process_fetched_external_messages();
+ send_host_info_if_appropriate();
+ _bucket_db_updater->resend_delayed_messages();
+ return _tickResult;
+}
+
+void
+TopLevelDistributor::enable_next_config_if_changed()
+{
+ // Only lazily trigger a config propagation and internal update if something has _actually changed_.
+ if (_component.internal_config_generation() != _current_internal_config_generation) {
+ _total_config = _component.total_distributor_config_sp();
+ {
+ auto guard = _stripe_accessor->rendezvous_and_hold_all();
+ guard->update_total_distributor_config(_component.total_distributor_config_sp());
+ }
+ _hostInfoReporter.enableReporting(config().getEnableHostInfoReporting());
+ _maintenance_safe_time_delay = _total_config->getMaxClusterClockSkew();
+ _current_internal_config_generation = _component.internal_config_generation();
+ }
+}
+
+void
+TopLevelDistributor::un_inhibit_maintenance_if_safe_time_passed()
+{
+ if (_maintenance_safe_time_point.time_since_epoch().count() != 0) {
+ using TimePoint = OwnershipTransferSafeTimePointCalculator::TimePoint;
+ const auto now = TimePoint(std::chrono::seconds(_component.clock().getTimeInSeconds().getTime()));
+ if (now >= _maintenance_safe_time_point) {
+ // Thread safe. Relaxed store is fine; stripes will eventually observe new flag status.
+ for (auto& stripe : _stripes) {
+ stripe->inhibit_non_activation_maintenance_operations(false);
+ }
+ _maintenance_safe_time_point = TimePoint{};
+ LOG(debug, "Marked all stripes as no longer inhibiting non-activation maintenance operations");
+ }
+ }
+}
+
+void
+TopLevelDistributor::notify_stripe_wants_to_send_host_info(uint16_t stripe_index)
+{
+ assert(_done_initializing);
+ LOG(debug, "Stripe %u has signalled an intent to send host info out-of-band", stripe_index);
+ std::lock_guard lock(_stripe_scan_notify_mutex);
+ assert(stripe_index < _stripe_scan_stats.size());
+ auto& stats = _stripe_scan_stats[stripe_index];
+ stats.wants_to_send_host_info = true;
+ stats.has_reported_in_at_least_once = true;
+ // TODO STRIPE consider if we want to wake up distributor thread here. Will be rechecked
+ // every nth millisecond anyway. Not really an issue for out-of-band CC notifications.
+}
+
+bool
+TopLevelDistributor::may_send_host_info_on_behalf_of_stripes([[maybe_unused]] std::lock_guard<std::mutex>& held_lock) noexcept
+{
+ bool any_stripe_wants_to_send = false;
+ for (const auto& stats : _stripe_scan_stats) {
+ if (!stats.has_reported_in_at_least_once) {
+ // If not all stripes have reported in at least once, they have not all completed their
+ // first recovery mode pass through their DBs. To avoid sending partial stats to the cluster
+ // controller, we wait with sending the first out-of-band host info reply until they have all
+ // reported in.
+ return false;
+ }
+ any_stripe_wants_to_send |= stats.wants_to_send_host_info;
+ }
+ return any_stripe_wants_to_send;
+}
+
+void
+TopLevelDistributor::send_host_info_if_appropriate()
+{
+ const auto now = _component.getClock().getMonotonicTime();
+ std::lock_guard lock(_stripe_scan_notify_mutex);
+
+ if (may_send_host_info_on_behalf_of_stripes(lock)) {
+ if ((now - _last_host_info_send_time) >= _host_info_send_delay) {
+ LOG(debug, "Sending GetNodeState replies to cluster controllers on behalf of stripes");
+ _component.getStateUpdater().immediately_send_get_node_state_replies();
+ _last_host_info_send_time = now;
+ for (auto& stats : _stripe_scan_stats) {
+ stats.wants_to_send_host_info = false;
+ }
+ }
+ }
+}
+
+void
+TopLevelDistributor::on_cluster_state_bundle_activated(const lib::ClusterStateBundle& new_bundle,
+ bool has_bucket_ownership_transfer)
+{
+ lib::Node my_node(lib::NodeType::DISTRIBUTOR, getDistributorIndex());
+ if (!_done_initializing && (new_bundle.getBaselineClusterState()->getNodeState(my_node).getState() == lib::State::UP)) {
+ _done_initializing = true;
+ _done_init_handler.notifyDoneInitializing();
+ }
+ if (has_bucket_ownership_transfer && _maintenance_safe_time_delay.count() > 0) {
+ OwnershipTransferSafeTimePointCalculator safe_time_calc(_maintenance_safe_time_delay);
+ using TimePoint = OwnershipTransferSafeTimePointCalculator::TimePoint;
+ const auto now = TimePoint(std::chrono::milliseconds(_component.getClock().getTimeInMillis().getTime()));
+ _maintenance_safe_time_point = safe_time_calc.safeTimePoint(now);
+ // All stripes are in a waiting pattern and will observe this on their next tick.
+ // Memory visibility enforced by all stripes being held under a mutex by our caller.
+ for (auto& stripe : _stripes) {
+ stripe->inhibit_non_activation_maintenance_operations(true);
+ }
+ }
+ LOG(debug, "Activated new state version in distributor: %s", new_bundle.toString().c_str());
+}
+
+void
+TopLevelDistributor::fetch_status_requests()
+{
+ if (_fetched_status_requests.empty()) {
+ _fetched_status_requests.swap(_status_to_do);
+ }
+}
+
+void
+TopLevelDistributor::handle_status_requests()
+{
+ for (auto& s : _fetched_status_requests) {
+ s->getReporter().reportStatus(s->getStream(), s->getPath());
+ s->notifyCompleted();
+ }
+ if (!_fetched_status_requests.empty()) {
+ _fetched_status_requests.clear();
+ signal_work_was_done();
+ }
+}
+
+void
+TopLevelDistributor::signal_work_was_done()
+{
+ _tickResult = framework::ThreadWaitInfo::MORE_WORK_ENQUEUED;
+}
+
+bool
+TopLevelDistributor::work_was_done() const noexcept
+{
+ return !_tickResult.waitWanted();
+}
+
+vespalib::string
+TopLevelDistributor::getReportContentType(const framework::HttpUrlPath& path) const
+{
+ if (path.hasAttribute("page")) {
+ if (path.getAttribute("page") == "buckets") {
+ return "text/html";
+ } else {
+ return "application/xml";
+ }
+ } else {
+ return "text/html";
+ }
+}
+
+bool
+TopLevelDistributor::reportStatus(std::ostream& out,
+ const framework::HttpUrlPath& path) const
+{
+ if (!path.hasAttribute("page") || path.getAttribute("page") == "buckets") {
+ framework::PartlyHtmlStatusReporter htmlReporter(*this);
+ htmlReporter.reportHtmlHeader(out, path);
+ if (!path.hasAttribute("page")) {
+ out << "<p>Distributor stripes: " << _stripes.size() << "</p>\n"
+ << "<p>\n"
+ << "<a href=\"?page=pending\">Count of pending messages to storage nodes</a><br>\n"
+ << "<a href=\"?page=buckets\">List all buckets, highlight non-ideal state</a><br>\n"
+ << "</p>\n";
+ } else {
+ auto guard = _stripe_accessor->rendezvous_and_hold_all();
+ const auto& op_ctx = _component;
+ for (const auto& space : op_ctx.bucket_space_states()) {
+ out << "<h2>" << document::FixedBucketSpaces::to_string(space.first) << " - " << space.first << "</h2>\n";
+ guard->report_bucket_db_status(space.first, out);
+ }
+ }
+ htmlReporter.reportHtmlFooter(out, path);
+ } else {
+ framework::PartlyXmlStatusReporter xmlReporter(*this, out, path);
+ using namespace vespalib::xml;
+ std::string page(path.getAttribute("page"));
+
+ if (page == "pending") {
+ auto guard = _stripe_accessor->rendezvous_and_hold_all();
+ auto stats = guard->pending_operation_stats();
+ xmlReporter << XmlTag("pending")
+ << XmlAttribute("externalload", stats.external_load_operations)
+ << XmlAttribute("maintenance", stats.maintenance_operations)
+ << XmlEndTag();
+ }
+ }
+ return true;
+}
+
+bool
+TopLevelDistributor::handleStatusRequest(const DelegatedStatusRequest& request) const
+{
+ auto wrappedRequest = std::make_shared<DistributorStatus>(request);
+ {
+ framework::TickingLockGuard guard(_threadPool.freezeCriticalTicks());
+ _status_to_do.push_back(wrappedRequest);
+ guard.broadcast();
+ }
+ wrappedRequest->waitForCompletion();
+ return true;
+}
+
+}
diff --git a/storage/src/vespa/storage/distributor/distributor.h b/storage/src/vespa/storage/distributor/top_level_distributor.h
index 8a522a34be1..64e431c9d4e 100644
--- a/storage/src/vespa/storage/distributor/distributor.h
+++ b/storage/src/vespa/storage/distributor/top_level_distributor.h
@@ -1,9 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bucket_spaces_stats_provider.h"
-#include "bucketdbupdater.h"
+#include "cluster_state_bundle_activation_listener.h"
+#include "top_level_bucket_db_updater.h"
#include "distributor_component.h"
#include "distributor_host_info_reporter.h"
#include "distributor_interface.h"
@@ -20,6 +21,7 @@
#include <vespa/storage/common/distributorcomponent.h>
#include <vespa/storage/common/doneinitializehandler.h>
#include <vespa/storage/common/messagesender.h>
+#include <vespa/storage/common/node_identity.h>
#include <vespa/storage/distributor/bucketdb/bucketdbmetricupdater.h>
#include <vespa/storage/distributor/maintenance/maintenancescheduler.h>
#include <vespa/storageapi/message/state.h>
@@ -33,14 +35,13 @@
namespace storage {
struct DoneInitializeHandler;
class HostInfo;
- class NodeIdentity;
}
namespace storage::distributor {
class BlockingOperationStarter;
class BucketPriorityDatabase;
-class BucketDBUpdater;
+class TopLevelBucketDBUpdater;
class DistributorBucketSpaceRepo;
class DistributorStatus;
class DistributorStripe;
@@ -52,7 +53,7 @@ class OwnershipTransferSafeTimePointCalculator;
class SimpleMaintenanceScanner;
class ThrottlingOperationStarter;
-class Distributor final
+class TopLevelDistributor final
: public StorageLink,
public DistributorInterface,
public StatusDelegator,
@@ -60,19 +61,20 @@ class Distributor final
public framework::TickingThread,
public MinReplicaProvider,
public BucketSpacesStatsProvider,
- public StripeHostInfoNotifier
+ public StripeHostInfoNotifier,
+ public ClusterStateBundleActivationListener
{
public:
- Distributor(DistributorComponentRegister&,
- const NodeIdentity& node_identity,
- framework::TickingThreadPool&,
- DistributorStripePool& stripe_pool,
- DoneInitializeHandler&,
- uint32_t num_distributor_stripes,
- HostInfo& hostInfoReporterRegistrar,
- ChainedMessageSender* = nullptr);
+ TopLevelDistributor(DistributorComponentRegister&,
+ const NodeIdentity& node_identity,
+ framework::TickingThreadPool&,
+ DistributorStripePool& stripe_pool,
+ DoneInitializeHandler&,
+ uint32_t num_distributor_stripes,
+ HostInfo& hostInfoReporterRegistrar,
+ ChainedMessageSender* = nullptr);
- ~Distributor() override;
+ ~TopLevelDistributor() override;
void onOpen() override;
void onClose() override;
@@ -80,8 +82,14 @@ public:
void sendUp(const std::shared_ptr<api::StorageMessage>&) override;
void sendDown(const std::shared_ptr<api::StorageMessage>&) override;
+ void start_stripe_pool();
+
DistributorMetricSet& getMetrics();
+ const NodeIdentity& node_identity() const noexcept { return _node_identity; }
+
+ [[nodiscard]] bool done_initializing() const noexcept { return _done_initializing; }
+
// Implements DistributorInterface and DistributorMessageSender.
DistributorMetricSet& metrics() override { return getMetrics(); }
const DistributorConfiguration& config() const override;
@@ -93,8 +101,6 @@ public:
void storageDistributionChanged() override;
- bool handleReply(const std::shared_ptr<api::StorageReply>& reply);
-
// StatusReporter implementation
vespalib::string getReportContentType(const framework::HttpUrlPath&) const override;
bool reportStatus(std::ostream&, const framework::HttpUrlPath&) const override;
@@ -111,7 +117,7 @@ public:
class MetricUpdateHook : public framework::MetricUpdateHook
{
public:
- MetricUpdateHook(Distributor& self)
+ MetricUpdateHook(TopLevelDistributor& self)
: _self(self)
{
}
@@ -121,46 +127,17 @@ public:
}
private:
- Distributor& _self;
+ TopLevelDistributor& _self;
};
private:
friend class DistributorStripeTestUtil;
- friend class DistributorTestUtil;
- friend class LegacyBucketDBUpdaterTest;
+ friend class TopLevelDistributorTestUtil;
friend class MetricUpdateHook;
friend struct DistributorStripeTest;
- friend struct LegacyDistributorTest;
+ friend struct TopLevelDistributorTest;
void setNodeStateUp();
- bool handleMessage(const std::shared_ptr<api::StorageMessage>& msg);
-
- /**
- * Enables a new cluster state. Used by tests to bypass BucketDBUpdater.
- */
- void enableClusterStateBundle(const lib::ClusterStateBundle& clusterStateBundle);
-
- // Accessors used by tests
- std::string getActiveIdealStateOperations() const;
- const lib::ClusterStateBundle& getClusterStateBundle() const;
- const DistributorConfiguration& getConfig() const;
- bool isInRecoveryMode() const noexcept;
- PendingMessageTracker& getPendingMessageTracker();
- const PendingMessageTracker& getPendingMessageTracker() const;
- DistributorBucketSpaceRepo& getBucketSpaceRepo() noexcept;
- const DistributorBucketSpaceRepo& getBucketSpaceRepo() const noexcept;
- DistributorBucketSpaceRepo& getReadOnlyBucketSpaceRepo() noexcept;
- const DistributorBucketSpaceRepo& getReadyOnlyBucketSpaceRepo() const noexcept;
- storage::distributor::DistributorStripeComponent& distributor_component() noexcept;
- std::chrono::steady_clock::duration db_memory_sample_interval() const noexcept;
-
- StripeBucketDBUpdater& bucket_db_updater();
- const StripeBucketDBUpdater& bucket_db_updater() const;
- IdealStateManager& ideal_state_manager();
- const IdealStateManager& ideal_state_manager() const;
- ExternalOperationHandler& external_operation_handler();
- const ExternalOperationHandler& external_operation_handler() const;
- BucketDBMetricUpdater& bucket_db_metric_updater() const noexcept;
/**
* Return a copy of the latest min replica data, see MinReplicaProvider.
@@ -175,13 +152,14 @@ private:
* Takes metric lock.
*/
void propagateInternalScanMetricsToExternal();
- void scanAllBuckets();
- void enableNextConfig();
+ void enable_next_config_if_changed();
void fetch_status_requests();
void handle_status_requests();
void signal_work_was_done();
+ [[nodiscard]] bool work_was_done() const noexcept;
void enableNextDistribution();
void propagateDefaultDistribution(std::shared_ptr<const lib::Distribution>);
+ void un_inhibit_maintenance_if_safe_time_passed();
void dispatch_to_main_distributor_thread_queue(const std::shared_ptr<api::StorageMessage>& msg);
void fetch_external_messages();
@@ -193,6 +171,10 @@ private:
uint32_t random_stripe_idx();
uint32_t stripe_of_bucket_id(const document::BucketId& bucket_id, const api::StorageMessage& msg);
+ // ClusterStateBundleActivationListener impl:
+ void on_cluster_state_bundle_activated(const lib::ClusterStateBundle& new_bundle,
+ bool has_bucket_ownership_transfer) override;
+
struct StripeScanStats {
bool wants_to_send_host_info = false;
bool has_reported_in_at_least_once = false;
@@ -200,16 +182,14 @@ private:
using MessageQueue = std::vector<std::shared_ptr<api::StorageMessage>>;
+ const NodeIdentity _node_identity;
DistributorComponentRegister& _comp_reg;
- const bool _use_legacy_mode;
- std::shared_ptr<DistributorMetricSet> _metrics;
+ DoneInitializeHandler& _done_init_handler;
+ bool _done_initializing;
std::shared_ptr<DistributorTotalMetrics> _total_metrics;
- std::shared_ptr<IdealStateMetricSet> _ideal_state_metrics;
- std::shared_ptr<IdealStateTotalMetrics> _ideal_state_total_metrics;
+ std::shared_ptr<IdealStateTotalMetrics> _ideal_state_total_metrics;
ChainedMessageSender* _messageSender;
- // TODO STRIPE multiple stripes...! This is for proof of concept of wiring.
uint8_t _n_stripe_bits;
- std::unique_ptr<DistributorStripe> _stripe;
DistributorStripePool& _stripe_pool;
std::vector<std::unique_ptr<DistributorStripe>> _stripes;
std::unique_ptr<StripeAccessor> _stripe_accessor;
@@ -220,7 +200,7 @@ private:
distributor::DistributorComponent _component;
storage::DistributorComponent _ideal_state_component;
std::shared_ptr<const DistributorConfiguration> _total_config;
- std::unique_ptr<BucketDBUpdater> _bucket_db_updater;
+ std::unique_ptr<TopLevelBucketDBUpdater> _bucket_db_updater;
StatusReporterDelegate _distributorStatusDelegate;
std::unique_ptr<StatusReporterDelegate> _bucket_db_status_delegate;
framework::TickingThreadPool& _threadPool;
@@ -230,6 +210,10 @@ private:
std::vector<StripeScanStats> _stripe_scan_stats; // Indices are 1-1 with _stripes entries
std::chrono::steady_clock::time_point _last_host_info_send_time;
std::chrono::milliseconds _host_info_send_delay;
+ // Ideally this would use steady_clock, but for now let's use the same semantics as
+ // feed blocking during safe time periods.
+ std::chrono::system_clock::time_point _maintenance_safe_time_point;
+ std::chrono::seconds _maintenance_safe_time_delay;
framework::ThreadWaitInfo _tickResult;
MetricUpdateHook _metricUpdateHook;
DistributorHostInfoReporter _hostInfoReporter;
diff --git a/storage/src/vespa/storage/distributor/update_metric_set.cpp b/storage/src/vespa/storage/distributor/update_metric_set.cpp
index fbb5d700aa9..70374cab6d2 100644
--- a/storage/src/vespa/storage/distributor/update_metric_set.cpp
+++ b/storage/src/vespa/storage/distributor/update_metric_set.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "update_metric_set.h"
diff --git a/storage/src/vespa/storage/distributor/update_metric_set.h b/storage/src/vespa/storage/distributor/update_metric_set.h
index e31ec714adf..4171a8c32da 100644
--- a/storage/src/vespa/storage/distributor/update_metric_set.h
+++ b/storage/src/vespa/storage/distributor/update_metric_set.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "persistence_operation_metric_set.h"
diff --git a/storage/src/vespa/storage/distributor/uuid_generator.h b/storage/src/vespa/storage/distributor/uuid_generator.h
index ae133d83fd4..f193b16810b 100644
--- a/storage/src/vespa/storage/distributor/uuid_generator.h
+++ b/storage/src/vespa/storage/distributor/uuid_generator.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/storage/src/vespa/storage/distributor/visitormetricsset.cpp b/storage/src/vespa/storage/distributor/visitormetricsset.cpp
index 3ca92c7df79..c449b82e93c 100644
--- a/storage/src/vespa/storage/distributor/visitormetricsset.cpp
+++ b/storage/src/vespa/storage/distributor/visitormetricsset.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "visitormetricsset.h"
diff --git a/storage/src/vespa/storage/distributor/visitormetricsset.h b/storage/src/vespa/storage/distributor/visitormetricsset.h
index 93258c9a416..35e03faf279 100644
--- a/storage/src/vespa/storage/distributor/visitormetricsset.h
+++ b/storage/src/vespa/storage/distributor/visitormetricsset.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "persistence_operation_metric_set.h"
diff --git a/storage/src/vespa/storage/frameworkimpl/component/CMakeLists.txt b/storage/src/vespa/storage/frameworkimpl/component/CMakeLists.txt
index cfac0c25686..6be47375b17 100644
--- a/storage/src/vespa/storage/frameworkimpl/component/CMakeLists.txt
+++ b/storage/src/vespa/storage/frameworkimpl/component/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage_component OBJECT
SOURCES
distributorcomponentregisterimpl.cpp
diff --git a/storage/src/vespa/storage/frameworkimpl/component/distributorcomponentregisterimpl.cpp b/storage/src/vespa/storage/frameworkimpl/component/distributorcomponentregisterimpl.cpp
index 629ebb68c43..2c0fc771ee7 100644
--- a/storage/src/vespa/storage/frameworkimpl/component/distributorcomponentregisterimpl.cpp
+++ b/storage/src/vespa/storage/frameworkimpl/component/distributorcomponentregisterimpl.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "distributorcomponentregisterimpl.h"
#include <vespa/vespalib/util/exceptions.h>
#include <vespa/vdslib/state/cluster_state_bundle.h>
diff --git a/storage/src/vespa/storage/frameworkimpl/component/distributorcomponentregisterimpl.h b/storage/src/vespa/storage/frameworkimpl/component/distributorcomponentregisterimpl.h
index 8a2e4eef491..5a85bc3f4ee 100644
--- a/storage/src/vespa/storage/frameworkimpl/component/distributorcomponentregisterimpl.h
+++ b/storage/src/vespa/storage/frameworkimpl/component/distributorcomponentregisterimpl.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::framework::DistributorComponentRegisterImpl
* \ingroup component
diff --git a/storage/src/vespa/storage/frameworkimpl/component/servicelayercomponentregisterimpl.cpp b/storage/src/vespa/storage/frameworkimpl/component/servicelayercomponentregisterimpl.cpp
index d2b6578c66b..7732bd1fd35 100644
--- a/storage/src/vespa/storage/frameworkimpl/component/servicelayercomponentregisterimpl.cpp
+++ b/storage/src/vespa/storage/frameworkimpl/component/servicelayercomponentregisterimpl.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "servicelayercomponentregisterimpl.h"
#include <vespa/vespalib/util/exceptions.h>
diff --git a/storage/src/vespa/storage/frameworkimpl/component/servicelayercomponentregisterimpl.h b/storage/src/vespa/storage/frameworkimpl/component/servicelayercomponentregisterimpl.h
index 6bed5e82fd3..cc8501c8027 100644
--- a/storage/src/vespa/storage/frameworkimpl/component/servicelayercomponentregisterimpl.h
+++ b/storage/src/vespa/storage/frameworkimpl/component/servicelayercomponentregisterimpl.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::framework::StorageComponentRegisterImpl
* \ingroup component
diff --git a/storage/src/vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.cpp b/storage/src/vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.cpp
index 72dfd30fee3..6a26b8451c5 100644
--- a/storage/src/vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.cpp
+++ b/storage/src/vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "storagecomponentregisterimpl.h"
#include <vespa/vespalib/util/exceptions.h>
diff --git a/storage/src/vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.h b/storage/src/vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.h
index 70ee110ed87..0b1447de49b 100644
--- a/storage/src/vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.h
+++ b/storage/src/vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::framework::StorageComponentRegisterImpl
* \ingroup component
diff --git a/storage/src/vespa/storage/frameworkimpl/status/CMakeLists.txt b/storage/src/vespa/storage/frameworkimpl/status/CMakeLists.txt
index 46d89aad714..064e292c46e 100644
--- a/storage/src/vespa/storage/frameworkimpl/status/CMakeLists.txt
+++ b/storage/src/vespa/storage/frameworkimpl/status/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage_status OBJECT
SOURCES
statuswebserver.cpp
diff --git a/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.cpp b/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.cpp
index 818d374d775..45dd44d0245 100644
--- a/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.cpp
+++ b/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "statuswebserver.h"
#include <vespa/storageframework/storageframework.h>
diff --git a/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.h b/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.h
index 5955339d43b..f4bf2534036 100644
--- a/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.h
+++ b/storage/src/vespa/storage/frameworkimpl/status/statuswebserver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::Status
* @ingroup storageserver
diff --git a/storage/src/vespa/storage/frameworkimpl/thread/CMakeLists.txt b/storage/src/vespa/storage/frameworkimpl/thread/CMakeLists.txt
index 17cdf431a57..81852e0c861 100644
--- a/storage/src/vespa/storage/frameworkimpl/thread/CMakeLists.txt
+++ b/storage/src/vespa/storage/frameworkimpl/thread/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage_thread OBJECT
SOURCES
appkiller.cpp
diff --git a/storage/src/vespa/storage/frameworkimpl/thread/appkiller.cpp b/storage/src/vespa/storage/frameworkimpl/thread/appkiller.cpp
index f2c5c7cf981..5353335aae8 100644
--- a/storage/src/vespa/storage/frameworkimpl/thread/appkiller.cpp
+++ b/storage/src/vespa/storage/frameworkimpl/thread/appkiller.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storage/frameworkimpl/thread/appkiller.h>
diff --git a/storage/src/vespa/storage/frameworkimpl/thread/appkiller.h b/storage/src/vespa/storage/frameworkimpl/thread/appkiller.h
index 736e91ebbfe..54078b8d8b7 100644
--- a/storage/src/vespa/storage/frameworkimpl/thread/appkiller.h
+++ b/storage/src/vespa/storage/frameworkimpl/thread/appkiller.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::AppKiller
* @ingroup thread
diff --git a/storage/src/vespa/storage/frameworkimpl/thread/deadlockdetector.cpp b/storage/src/vespa/storage/frameworkimpl/thread/deadlockdetector.cpp
index c1a0006a5ec..c49a2961a3e 100644
--- a/storage/src/vespa/storage/frameworkimpl/thread/deadlockdetector.cpp
+++ b/storage/src/vespa/storage/frameworkimpl/thread/deadlockdetector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "deadlockdetector.h"
#include "htmltable.h"
diff --git a/storage/src/vespa/storage/frameworkimpl/thread/deadlockdetector.h b/storage/src/vespa/storage/frameworkimpl/thread/deadlockdetector.h
index e012c33c17b..1ef70063206 100644
--- a/storage/src/vespa/storage/frameworkimpl/thread/deadlockdetector.h
+++ b/storage/src/vespa/storage/frameworkimpl/thread/deadlockdetector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::DeadLockDetector
* @ingroup common
diff --git a/storage/src/vespa/storage/frameworkimpl/thread/htmltable.cpp b/storage/src/vespa/storage/frameworkimpl/thread/htmltable.cpp
index 7596e221092..34d3d680ae1 100644
--- a/storage/src/vespa/storage/frameworkimpl/thread/htmltable.cpp
+++ b/storage/src/vespa/storage/frameworkimpl/thread/htmltable.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "htmltable.h"
diff --git a/storage/src/vespa/storage/frameworkimpl/thread/htmltable.h b/storage/src/vespa/storage/frameworkimpl/thread/htmltable.h
index 85e9438edcb..1aee514a560 100644
--- a/storage/src/vespa/storage/frameworkimpl/thread/htmltable.h
+++ b/storage/src/vespa/storage/frameworkimpl/thread/htmltable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/persistence/CMakeLists.txt b/storage/src/vespa/storage/persistence/CMakeLists.txt
index 647d7fa1098..083e0406ef0 100644
--- a/storage/src/vespa/storage/persistence/CMakeLists.txt
+++ b/storage/src/vespa/storage/persistence/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage_spersistence OBJECT
SOURCES
apply_bucket_diff_entry_complete.cpp
diff --git a/storage/src/vespa/storage/persistence/apply_bucket_diff_entry_complete.cpp b/storage/src/vespa/storage/persistence/apply_bucket_diff_entry_complete.cpp
index 7f1665a92bb..6d6d56351ec 100644
--- a/storage/src/vespa/storage/persistence/apply_bucket_diff_entry_complete.cpp
+++ b/storage/src/vespa/storage/persistence/apply_bucket_diff_entry_complete.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "apply_bucket_diff_entry_complete.h"
#include <vespa/persistence/spi/result.h>
diff --git a/storage/src/vespa/storage/persistence/apply_bucket_diff_entry_complete.h b/storage/src/vespa/storage/persistence/apply_bucket_diff_entry_complete.h
index f492727b0e6..d1794666e54 100644
--- a/storage/src/vespa/storage/persistence/apply_bucket_diff_entry_complete.h
+++ b/storage/src/vespa/storage/persistence/apply_bucket_diff_entry_complete.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/persistence/apply_bucket_diff_entry_result.cpp b/storage/src/vespa/storage/persistence/apply_bucket_diff_entry_result.cpp
index d582168fcf9..abd09d647a5 100644
--- a/storage/src/vespa/storage/persistence/apply_bucket_diff_entry_result.cpp
+++ b/storage/src/vespa/storage/persistence/apply_bucket_diff_entry_result.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "apply_bucket_diff_entry_result.h"
#include <vespa/persistence/spi/result.h>
diff --git a/storage/src/vespa/storage/persistence/apply_bucket_diff_entry_result.h b/storage/src/vespa/storage/persistence/apply_bucket_diff_entry_result.h
index f7653cd35a5..f2213070831 100644
--- a/storage/src/vespa/storage/persistence/apply_bucket_diff_entry_result.h
+++ b/storage/src/vespa/storage/persistence/apply_bucket_diff_entry_result.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/persistence/asynchandler.cpp b/storage/src/vespa/storage/persistence/asynchandler.cpp
index 7f8da8e76e7..4a28e650fac 100644
--- a/storage/src/vespa/storage/persistence/asynchandler.cpp
+++ b/storage/src/vespa/storage/persistence/asynchandler.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "asynchandler.h"
#include "persistenceutil.h"
diff --git a/storage/src/vespa/storage/persistence/asynchandler.h b/storage/src/vespa/storage/persistence/asynchandler.h
index 2d6b37a1cdd..23f3605dca1 100644
--- a/storage/src/vespa/storage/persistence/asynchandler.h
+++ b/storage/src/vespa/storage/persistence/asynchandler.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "types.h"
diff --git a/storage/src/vespa/storage/persistence/bucketownershipnotifier.cpp b/storage/src/vespa/storage/persistence/bucketownershipnotifier.cpp
index 4178b2bb947..784bb583fb8 100644
--- a/storage/src/vespa/storage/persistence/bucketownershipnotifier.cpp
+++ b/storage/src/vespa/storage/persistence/bucketownershipnotifier.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketownershipnotifier.h"
#include <vespa/storage/common/nodestateupdater.h>
diff --git a/storage/src/vespa/storage/persistence/bucketownershipnotifier.h b/storage/src/vespa/storage/persistence/bucketownershipnotifier.h
index f3e3f60b633..06cdfcdbd4e 100644
--- a/storage/src/vespa/storage/persistence/bucketownershipnotifier.h
+++ b/storage/src/vespa/storage/persistence/bucketownershipnotifier.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vector>
diff --git a/storage/src/vespa/storage/persistence/bucketprocessor.cpp b/storage/src/vespa/storage/persistence/bucketprocessor.cpp
index d86ff18a11d..39ad18175e6 100644
--- a/storage/src/vespa/storage/persistence/bucketprocessor.cpp
+++ b/storage/src/vespa/storage/persistence/bucketprocessor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketprocessor.h"
#include <vespa/document/fieldset/fieldsets.h>
diff --git a/storage/src/vespa/storage/persistence/bucketprocessor.h b/storage/src/vespa/storage/persistence/bucketprocessor.h
index c4ebcce6165..c605a9338e3 100644
--- a/storage/src/vespa/storage/persistence/bucketprocessor.h
+++ b/storage/src/vespa/storage/persistence/bucketprocessor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Class that simplifies operations where we want to iterate through all
* the documents in a bucket (possibly with a document selection) and do
diff --git a/storage/src/vespa/storage/persistence/diskthread.h b/storage/src/vespa/storage/persistence/diskthread.h
index 08862c4251a..2d10349ae64 100644
--- a/storage/src/vespa/storage/persistence/diskthread.h
+++ b/storage/src/vespa/storage/persistence/diskthread.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class DiskThread
* @ingroup persistence
diff --git a/storage/src/vespa/storage/persistence/fieldvisitor.cpp b/storage/src/vespa/storage/persistence/fieldvisitor.cpp
index ace99dec276..1bdf83250c2 100644
--- a/storage/src/vespa/storage/persistence/fieldvisitor.cpp
+++ b/storage/src/vespa/storage/persistence/fieldvisitor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// @author Vegard Sjonfjell
#include "fieldvisitor.h"
diff --git a/storage/src/vespa/storage/persistence/fieldvisitor.h b/storage/src/vespa/storage/persistence/fieldvisitor.h
index 688874742a6..3216a360c82 100644
--- a/storage/src/vespa/storage/persistence/fieldvisitor.h
+++ b/storage/src/vespa/storage/persistence/fieldvisitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// @author Vegard Sjonfjell
#pragma once
diff --git a/storage/src/vespa/storage/persistence/filestorage/CMakeLists.txt b/storage/src/vespa/storage/persistence/filestorage/CMakeLists.txt
index 537470a5be0..b23ec142448 100644
--- a/storage/src/vespa/storage/persistence/filestorage/CMakeLists.txt
+++ b/storage/src/vespa/storage/persistence/filestorage/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage_filestorpersistence OBJECT
SOURCES
filestorhandlerimpl.cpp
diff --git a/storage/src/vespa/storage/persistence/filestorage/debugverifications.h b/storage/src/vespa/storage/persistence/filestorage/debugverifications.h
index 3eb9fe584dc..d35e59322d5 100644
--- a/storage/src/vespa/storage/persistence/filestorage/debugverifications.h
+++ b/storage/src/vespa/storage/persistence/filestorage/debugverifications.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::DebugVerifications
* @ingroup filestorage
diff --git a/storage/src/vespa/storage/persistence/filestorage/filestorhandler.h b/storage/src/vespa/storage/persistence/filestorage/filestorhandler.h
index 6171b3bd23d..0dcb8539bff 100644
--- a/storage/src/vespa/storage/persistence/filestorage/filestorhandler.h
+++ b/storage/src/vespa/storage/persistence/filestorage/filestorhandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::FileStorHandler
diff --git a/storage/src/vespa/storage/persistence/filestorage/filestorhandlerimpl.cpp b/storage/src/vespa/storage/persistence/filestorage/filestorhandlerimpl.cpp
index 7762918405d..62f9fa12a21 100644
--- a/storage/src/vespa/storage/persistence/filestorage/filestorhandlerimpl.cpp
+++ b/storage/src/vespa/storage/persistence/filestorage/filestorhandlerimpl.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "filestorhandlerimpl.h"
#include "filestormetrics.h"
diff --git a/storage/src/vespa/storage/persistence/filestorage/filestorhandlerimpl.h b/storage/src/vespa/storage/persistence/filestorage/filestorhandlerimpl.h
index cfea488aff0..a3dc316cdde 100644
--- a/storage/src/vespa/storage/persistence/filestorage/filestorhandlerimpl.h
+++ b/storage/src/vespa/storage/persistence/filestorage/filestorhandlerimpl.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::FileStorHandlerImpl
* \ingroup storage
diff --git a/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp b/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp
index f1063bf9c10..ddcab0f3659 100644
--- a/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp
+++ b/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "filestormanager.h"
#include "filestorhandlerimpl.h"
diff --git a/storage/src/vespa/storage/persistence/filestorage/filestormanager.h b/storage/src/vespa/storage/persistence/filestorage/filestormanager.h
index ee4276cb21e..76cb31f32d4 100644
--- a/storage/src/vespa/storage/persistence/filestorage/filestormanager.h
+++ b/storage/src/vespa/storage/persistence/filestorage/filestormanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::FileStorManager
* @ingroup filestorage
diff --git a/storage/src/vespa/storage/persistence/filestorage/filestormetrics.cpp b/storage/src/vespa/storage/persistence/filestorage/filestormetrics.cpp
index 2c7b74cebbd..cb7e141f5db 100644
--- a/storage/src/vespa/storage/persistence/filestorage/filestormetrics.cpp
+++ b/storage/src/vespa/storage/persistence/filestorage/filestormetrics.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "filestormetrics.h"
#include <vespa/metrics/summetric.hpp>
#include <sstream>
diff --git a/storage/src/vespa/storage/persistence/filestorage/filestormetrics.h b/storage/src/vespa/storage/persistence/filestorage/filestormetrics.h
index f3b9d07c322..8f7f79add00 100644
--- a/storage/src/vespa/storage/persistence/filestorage/filestormetrics.h
+++ b/storage/src/vespa/storage/persistence/filestorage/filestormetrics.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::FileStorMetrics
* @ingroup filestorage
diff --git a/storage/src/vespa/storage/persistence/filestorage/has_mask_remapper.cpp b/storage/src/vespa/storage/persistence/filestorage/has_mask_remapper.cpp
index 9a9265bb03e..1b91e6d1fbc 100644
--- a/storage/src/vespa/storage/persistence/filestorage/has_mask_remapper.cpp
+++ b/storage/src/vespa/storage/persistence/filestorage/has_mask_remapper.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "has_mask_remapper.h"
#include <vespa/vespalib/stllike/hash_map.h>
diff --git a/storage/src/vespa/storage/persistence/filestorage/has_mask_remapper.h b/storage/src/vespa/storage/persistence/filestorage/has_mask_remapper.h
index 6daf4bc8e75..9238f0cb7f0 100644
--- a/storage/src/vespa/storage/persistence/filestorage/has_mask_remapper.h
+++ b/storage/src/vespa/storage/persistence/filestorage/has_mask_remapper.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storageapi/message/bucket.h>
diff --git a/storage/src/vespa/storage/persistence/filestorage/merge_handler_metrics.cpp b/storage/src/vespa/storage/persistence/filestorage/merge_handler_metrics.cpp
index ee2a2d933c3..4d4b28125f4 100644
--- a/storage/src/vespa/storage/persistence/filestorage/merge_handler_metrics.cpp
+++ b/storage/src/vespa/storage/persistence/filestorage/merge_handler_metrics.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "merge_handler_metrics.h"
#include <vespa/metrics/metricset.h>
diff --git a/storage/src/vespa/storage/persistence/filestorage/merge_handler_metrics.h b/storage/src/vespa/storage/persistence/filestorage/merge_handler_metrics.h
index bd1a6251ff6..d9404e0ca12 100644
--- a/storage/src/vespa/storage/persistence/filestorage/merge_handler_metrics.h
+++ b/storage/src/vespa/storage/persistence/filestorage/merge_handler_metrics.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/metrics/valuemetric.h>
diff --git a/storage/src/vespa/storage/persistence/filestorage/mergestatus.cpp b/storage/src/vespa/storage/persistence/filestorage/mergestatus.cpp
index d75f09dfb3c..febac5b87e5 100644
--- a/storage/src/vespa/storage/persistence/filestorage/mergestatus.cpp
+++ b/storage/src/vespa/storage/persistence/filestorage/mergestatus.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mergestatus.h"
#include "has_mask_remapper.h"
diff --git a/storage/src/vespa/storage/persistence/filestorage/mergestatus.h b/storage/src/vespa/storage/persistence/filestorage/mergestatus.h
index 97a66ef56c1..b28ca4e373a 100644
--- a/storage/src/vespa/storage/persistence/filestorage/mergestatus.h
+++ b/storage/src/vespa/storage/persistence/filestorage/mergestatus.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/persistence/spi/context.h>
diff --git a/storage/src/vespa/storage/persistence/filestorage/modifiedbucketchecker.cpp b/storage/src/vespa/storage/persistence/filestorage/modifiedbucketchecker.cpp
index f09ebf27c3d..3ad34a94726 100644
--- a/storage/src/vespa/storage/persistence/filestorage/modifiedbucketchecker.cpp
+++ b/storage/src/vespa/storage/persistence/filestorage/modifiedbucketchecker.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "modifiedbucketchecker.h"
#include "filestormanager.h"
diff --git a/storage/src/vespa/storage/persistence/filestorage/modifiedbucketchecker.h b/storage/src/vespa/storage/persistence/filestorage/modifiedbucketchecker.h
index 62bfd38ff3e..6a8b9e5c008 100644
--- a/storage/src/vespa/storage/persistence/filestorage/modifiedbucketchecker.h
+++ b/storage/src/vespa/storage/persistence/filestorage/modifiedbucketchecker.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storage/common/content_bucket_space_repo.h>
diff --git a/storage/src/vespa/storage/persistence/filestorage/service_layer_host_info_reporter.cpp b/storage/src/vespa/storage/persistence/filestorage/service_layer_host_info_reporter.cpp
index 97244582f50..658a23c3035 100644
--- a/storage/src/vespa/storage/persistence/filestorage/service_layer_host_info_reporter.cpp
+++ b/storage/src/vespa/storage/persistence/filestorage/service_layer_host_info_reporter.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "service_layer_host_info_reporter.h"
#include <vespa/persistence/spi/resource_usage.h>
@@ -18,8 +18,7 @@ namespace {
const vespalib::string memory_label("memory");
const vespalib::string disk_label("disk");
-const vespalib::string attribute_enum_store_label("attribute-enum-store");
-const vespalib::string attribute_multi_value_label("attribute-multi-value");
+const vespalib::string attribute_address_space_label("attribute-address-space");
void write_usage(vespalib::JsonStream& output, const vespalib::string &label, double value)
{
@@ -40,18 +39,13 @@ bool want_immediate_report(const spi::ResourceUsage& old_usage, const spi::Resou
{
auto disk_usage_diff = fabs(new_usage.get_disk_usage() - old_usage.get_disk_usage());
auto memory_usage_diff = fabs(new_usage.get_memory_usage() - old_usage.get_memory_usage());
- auto enum_store_diff = fabs(new_usage.get_attribute_enum_store_usage().get_usage() - old_usage.get_attribute_enum_store_usage().get_usage());
- auto multivalue_diff = fabs(new_usage.get_attribute_multivalue_usage().get_usage() - old_usage.get_attribute_multivalue_usage().get_usage());
- bool enum_store_got_valid = !old_usage.get_attribute_enum_store_usage().valid() &&
- new_usage.get_attribute_enum_store_usage().valid();
- bool multivalue_got_valid = !old_usage.get_attribute_multivalue_usage().valid() &&
- new_usage.get_attribute_multivalue_usage().valid();
+ auto address_space_diff = fabs(new_usage.get_attribute_address_space_usage().get_usage() - old_usage.get_attribute_address_space_usage().get_usage());
+ bool address_space_got_valid = !old_usage.get_attribute_address_space_usage().valid() &&
+ new_usage.get_attribute_address_space_usage().valid();
return ((disk_usage_diff > noise_level) ||
(memory_usage_diff > noise_level) ||
- (enum_store_diff > noise_level) ||
- (multivalue_diff > noise_level) ||
- enum_store_got_valid ||
- multivalue_got_valid);
+ (address_space_diff > noise_level) ||
+ address_space_got_valid);
}
}
@@ -121,8 +115,7 @@ ServiceLayerHostInfoReporter::report(vespalib::JsonStream& output)
LOG(debug, "report(): usage=%s", to_string(usage).c_str());
write_usage(output, memory_label, usage.get_memory_usage());
write_usage(output, disk_label, usage.get_disk_usage());
- write_attribute_usage(output, attribute_enum_store_label, usage.get_attribute_enum_store_usage());
- write_attribute_usage(output, attribute_multi_value_label, usage.get_attribute_multivalue_usage());
+ write_attribute_usage(output, attribute_address_space_label, usage.get_attribute_address_space_usage());
}
output << End();
output << End();
diff --git a/storage/src/vespa/storage/persistence/filestorage/service_layer_host_info_reporter.h b/storage/src/vespa/storage/persistence/filestorage/service_layer_host_info_reporter.h
index cc3af71fc26..1c254588b8a 100644
--- a/storage/src/vespa/storage/persistence/filestorage/service_layer_host_info_reporter.h
+++ b/storage/src/vespa/storage/persistence/filestorage/service_layer_host_info_reporter.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/persistence/spi/resource_usage_listener.h>
diff --git a/storage/src/vespa/storage/persistence/mergehandler.cpp b/storage/src/vespa/storage/persistence/mergehandler.cpp
index 004a6a798a9..18e1c3d8d5a 100644
--- a/storage/src/vespa/storage/persistence/mergehandler.cpp
+++ b/storage/src/vespa/storage/persistence/mergehandler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mergehandler.h"
#include "persistenceutil.h"
@@ -649,14 +649,12 @@ namespace {
void findCandidates(MergeStatus& status, uint16_t active_nodes_mask, bool constrictHasMask, uint16_t hasMask,
uint16_t newHasMask, api::ApplyBucketDiffCommand& cmd)
{
- uint32_t chunkSize = 0;
for (const auto& entry : status.diff) {
uint16_t entry_has_mask = (entry._hasMask & active_nodes_mask);
if ((entry_has_mask == 0u) ||
(constrictHasMask && (entry_has_mask != hasMask))) {
continue;
}
- chunkSize += entry._bodySize + entry._headerSize;
cmd.getDiff().emplace_back(entry);
if (constrictHasMask) {
cmd.getDiff().back()._entry._hasMask = newHasMask;
diff --git a/storage/src/vespa/storage/persistence/mergehandler.h b/storage/src/vespa/storage/persistence/mergehandler.h
index 17a961a3982..17b0ff29b4b 100644
--- a/storage/src/vespa/storage/persistence/mergehandler.h
+++ b/storage/src/vespa/storage/persistence/mergehandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::MergeHandler
*
diff --git a/storage/src/vespa/storage/persistence/messages.cpp b/storage/src/vespa/storage/persistence/messages.cpp
index 42285556530..c6f7442cfdc 100644
--- a/storage/src/vespa/storage/persistence/messages.cpp
+++ b/storage/src/vespa/storage/persistence/messages.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "messages.h"
#include <ostream>
diff --git a/storage/src/vespa/storage/persistence/messages.h b/storage/src/vespa/storage/persistence/messages.h
index d8cfb3ac445..594506f53ba 100644
--- a/storage/src/vespa/storage/persistence/messages.h
+++ b/storage/src/vespa/storage/persistence/messages.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storageapi/message/internal.h>
diff --git a/storage/src/vespa/storage/persistence/persistencehandler.cpp b/storage/src/vespa/storage/persistence/persistencehandler.cpp
index 38ffd2c57e7..5315d3ec0bc 100644
--- a/storage/src/vespa/storage/persistence/persistencehandler.cpp
+++ b/storage/src/vespa/storage/persistence/persistencehandler.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "persistencehandler.h"
diff --git a/storage/src/vespa/storage/persistence/persistencehandler.h b/storage/src/vespa/storage/persistence/persistencehandler.h
index 9e5eefa8c7e..a800d1d4053 100644
--- a/storage/src/vespa/storage/persistence/persistencehandler.h
+++ b/storage/src/vespa/storage/persistence/persistencehandler.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/persistence/persistencethread.cpp b/storage/src/vespa/storage/persistence/persistencethread.cpp
index b4eedbb97f3..f9da4d63d7f 100644
--- a/storage/src/vespa/storage/persistence/persistencethread.cpp
+++ b/storage/src/vespa/storage/persistence/persistencethread.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "persistencethread.h"
#include "persistencehandler.h"
diff --git a/storage/src/vespa/storage/persistence/persistencethread.h b/storage/src/vespa/storage/persistence/persistencethread.h
index 9022ab5a862..c460c43aec6 100644
--- a/storage/src/vespa/storage/persistence/persistencethread.h
+++ b/storage/src/vespa/storage/persistence/persistencethread.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/persistence/persistenceutil.cpp b/storage/src/vespa/storage/persistence/persistenceutil.cpp
index b50abce528a..3f3d59c11aa 100644
--- a/storage/src/vespa/storage/persistence/persistenceutil.cpp
+++ b/storage/src/vespa/storage/persistence/persistenceutil.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "persistenceutil.h"
#include <vespa/persistence/spi/persistenceprovider.h>
diff --git a/storage/src/vespa/storage/persistence/persistenceutil.h b/storage/src/vespa/storage/persistence/persistenceutil.h
index b60d3fd8d5d..4cc2657ea56 100644
--- a/storage/src/vespa/storage/persistence/persistenceutil.h
+++ b/storage/src/vespa/storage/persistence/persistenceutil.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "types.h"
diff --git a/storage/src/vespa/storage/persistence/processallhandler.cpp b/storage/src/vespa/storage/persistence/processallhandler.cpp
index 26cd757196f..9308ae2a807 100644
--- a/storage/src/vespa/storage/persistence/processallhandler.cpp
+++ b/storage/src/vespa/storage/persistence/processallhandler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "processallhandler.h"
#include "bucketprocessor.h"
diff --git a/storage/src/vespa/storage/persistence/processallhandler.h b/storage/src/vespa/storage/persistence/processallhandler.h
index 47fcd2f28b2..7a6156a95c7 100644
--- a/storage/src/vespa/storage/persistence/processallhandler.h
+++ b/storage/src/vespa/storage/persistence/processallhandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "types.h"
diff --git a/storage/src/vespa/storage/persistence/provider_error_wrapper.cpp b/storage/src/vespa/storage/persistence/provider_error_wrapper.cpp
index ada57b66f41..471d3d62a35 100644
--- a/storage/src/vespa/storage/persistence/provider_error_wrapper.cpp
+++ b/storage/src/vespa/storage/persistence/provider_error_wrapper.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "provider_error_wrapper.h"
#include "persistenceutil.h"
diff --git a/storage/src/vespa/storage/persistence/provider_error_wrapper.h b/storage/src/vespa/storage/persistence/provider_error_wrapper.h
index b7c9204caf1..d23cce9172a 100644
--- a/storage/src/vespa/storage/persistence/provider_error_wrapper.h
+++ b/storage/src/vespa/storage/persistence/provider_error_wrapper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::ProviderErrorWrapper
*
diff --git a/storage/src/vespa/storage/persistence/simplemessagehandler.cpp b/storage/src/vespa/storage/persistence/simplemessagehandler.cpp
index 9c31a1c81bc..b4c09f09e63 100644
--- a/storage/src/vespa/storage/persistence/simplemessagehandler.cpp
+++ b/storage/src/vespa/storage/persistence/simplemessagehandler.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simplemessagehandler.h"
#include "persistenceutil.h"
diff --git a/storage/src/vespa/storage/persistence/simplemessagehandler.h b/storage/src/vespa/storage/persistence/simplemessagehandler.h
index 311d8244654..9f00f67684d 100644
--- a/storage/src/vespa/storage/persistence/simplemessagehandler.h
+++ b/storage/src/vespa/storage/persistence/simplemessagehandler.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/persistence/splitbitdetector.cpp b/storage/src/vespa/storage/persistence/splitbitdetector.cpp
index e004c6ff36b..bd472868e06 100644
--- a/storage/src/vespa/storage/persistence/splitbitdetector.cpp
+++ b/storage/src/vespa/storage/persistence/splitbitdetector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "splitbitdetector.h"
#include "bucketprocessor.h"
diff --git a/storage/src/vespa/storage/persistence/splitbitdetector.h b/storage/src/vespa/storage/persistence/splitbitdetector.h
index 22261c03f46..490844b17d5 100644
--- a/storage/src/vespa/storage/persistence/splitbitdetector.h
+++ b/storage/src/vespa/storage/persistence/splitbitdetector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Iterates metadata in the bucket using the SPI, and analyze where we need to
* split in order to split the bucket in two pieces. Possible results include.
diff --git a/storage/src/vespa/storage/persistence/splitjoinhandler.cpp b/storage/src/vespa/storage/persistence/splitjoinhandler.cpp
index 756f9edc3dd..0856f45c3ff 100644
--- a/storage/src/vespa/storage/persistence/splitjoinhandler.cpp
+++ b/storage/src/vespa/storage/persistence/splitjoinhandler.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "splitjoinhandler.h"
#include "persistenceutil.h"
diff --git a/storage/src/vespa/storage/persistence/splitjoinhandler.h b/storage/src/vespa/storage/persistence/splitjoinhandler.h
index 408838e3715..ddfa22b154c 100644
--- a/storage/src/vespa/storage/persistence/splitjoinhandler.h
+++ b/storage/src/vespa/storage/persistence/splitjoinhandler.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/persistence/testandsethelper.cpp b/storage/src/vespa/storage/persistence/testandsethelper.cpp
index 00a48d83e3a..9396e95c152 100644
--- a/storage/src/vespa/storage/persistence/testandsethelper.cpp
+++ b/storage/src/vespa/storage/persistence/testandsethelper.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// @author Vegard Sjonfjell
#include "testandsethelper.h"
diff --git a/storage/src/vespa/storage/persistence/testandsethelper.h b/storage/src/vespa/storage/persistence/testandsethelper.h
index c037cd196e9..82710e523c4 100644
--- a/storage/src/vespa/storage/persistence/testandsethelper.h
+++ b/storage/src/vespa/storage/persistence/testandsethelper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// @author Vegard Sjonfjell
#pragma once
diff --git a/storage/src/vespa/storage/persistence/types.cpp b/storage/src/vespa/storage/persistence/types.cpp
index 2a925cd90eb..3bf116bb2ee 100644
--- a/storage/src/vespa/storage/persistence/types.cpp
+++ b/storage/src/vespa/storage/persistence/types.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "types.h"
diff --git a/storage/src/vespa/storage/persistence/types.h b/storage/src/vespa/storage/persistence/types.h
index b36155bde8f..8dff11468a0 100644
--- a/storage/src/vespa/storage/persistence/types.h
+++ b/storage/src/vespa/storage/persistence/types.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <iosfwd>
diff --git a/storage/src/vespa/storage/storageserver/CMakeLists.txt b/storage/src/vespa/storage/storageserver/CMakeLists.txt
index 538bff5b9f0..1706b858256 100644
--- a/storage/src/vespa/storage/storageserver/CMakeLists.txt
+++ b/storage/src/vespa/storage/storageserver/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage_storageserver
SOURCES
diff --git a/storage/src/vespa/storage/storageserver/applicationgenerationfetcher.h b/storage/src/vespa/storage/storageserver/applicationgenerationfetcher.h
index ab26dbc11c0..2a1783d13da 100644
--- a/storage/src/vespa/storage/storageserver/applicationgenerationfetcher.h
+++ b/storage/src/vespa/storage/storageserver/applicationgenerationfetcher.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::ApplicationGenerationFetcher
* \ingroup storageserver
diff --git a/storage/src/vespa/storage/storageserver/bouncer.cpp b/storage/src/vespa/storage/storageserver/bouncer.cpp
index de9033b8d0e..ea14a1b7492 100644
--- a/storage/src/vespa/storage/storageserver/bouncer.cpp
+++ b/storage/src/vespa/storage/storageserver/bouncer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bouncer.h"
#include "bouncer_metrics.h"
@@ -132,7 +132,7 @@ Bouncer::rejectCommandWithTooHighClockSkew(api::StorageMessage& msg,
auto& as_cmd = dynamic_cast<api::StorageCommand&>(msg);
std::ostringstream ost;
ost << "Message " << msg.getType() << " is more than "
- << maxClockSkewInSeconds << " seconds in the future";
+ << maxClockSkewInSeconds << " seconds in the future, set up NTP.";
append_node_identity(ost);
LOGBP(warning, "Rejecting operation from distributor %u: %s",
as_cmd.getSourceIndex(), ost.str().c_str());
diff --git a/storage/src/vespa/storage/storageserver/bouncer.h b/storage/src/vespa/storage/storageserver/bouncer.h
index 9f9d82217df..e6ddfe7ad49 100644
--- a/storage/src/vespa/storage/storageserver/bouncer.h
+++ b/storage/src/vespa/storage/storageserver/bouncer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::Bouncer
* @ingroup storageserver
diff --git a/storage/src/vespa/storage/storageserver/bouncer_metrics.cpp b/storage/src/vespa/storage/storageserver/bouncer_metrics.cpp
index 5f3ba5a236d..5ee62bd6aee 100644
--- a/storage/src/vespa/storage/storageserver/bouncer_metrics.cpp
+++ b/storage/src/vespa/storage/storageserver/bouncer_metrics.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bouncer_metrics.h"
diff --git a/storage/src/vespa/storage/storageserver/bouncer_metrics.h b/storage/src/vespa/storage/storageserver/bouncer_metrics.h
index a2831092926..f9647fd4a5e 100644
--- a/storage/src/vespa/storage/storageserver/bouncer_metrics.h
+++ b/storage/src/vespa/storage/storageserver/bouncer_metrics.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.cpp b/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.cpp
index 6b121dd9a9e..ee58710e585 100644
--- a/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.cpp
+++ b/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "changedbucketownershiphandler.h"
#include <vespa/storageapi/message/state.h>
diff --git a/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.h b/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.h
index 3455108119e..ddf8516ed6e 100644
--- a/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.h
+++ b/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/bucket/bucketid.h>
diff --git a/storage/src/vespa/storage/storageserver/communicationmanager.cpp b/storage/src/vespa/storage/storageserver/communicationmanager.cpp
index 7de1b7d869e..c09908e93c7 100644
--- a/storage/src/vespa/storage/storageserver/communicationmanager.cpp
+++ b/storage/src/vespa/storage/storageserver/communicationmanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "communicationmanager.h"
#include "rpcrequestwrapper.h"
diff --git a/storage/src/vespa/storage/storageserver/communicationmanager.h b/storage/src/vespa/storage/storageserver/communicationmanager.h
index 5a828e49678..c899cee3e14 100644
--- a/storage/src/vespa/storage/storageserver/communicationmanager.h
+++ b/storage/src/vespa/storage/storageserver/communicationmanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class CommunicationManager
* @ingroup storageserver
diff --git a/storage/src/vespa/storage/storageserver/communicationmanagermetrics.cpp b/storage/src/vespa/storage/storageserver/communicationmanagermetrics.cpp
index 8df19ba6639..1783f15d67d 100644
--- a/storage/src/vespa/storage/storageserver/communicationmanagermetrics.cpp
+++ b/storage/src/vespa/storage/storageserver/communicationmanagermetrics.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "communicationmanagermetrics.h"
diff --git a/storage/src/vespa/storage/storageserver/communicationmanagermetrics.h b/storage/src/vespa/storage/storageserver/communicationmanagermetrics.h
index 2e439bc9266..990c19e3264 100644
--- a/storage/src/vespa/storage/storageserver/communicationmanagermetrics.h
+++ b/storage/src/vespa/storage/storageserver/communicationmanagermetrics.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class CommunicationManagerMetrics
* \ingroup storageserver
diff --git a/storage/src/vespa/storage/storageserver/config_logging.cpp b/storage/src/vespa/storage/storageserver/config_logging.cpp
index 0996636fff5..1b7fa3773af 100644
--- a/storage/src/vespa/storage/storageserver/config_logging.cpp
+++ b/storage/src/vespa/storage/storageserver/config_logging.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "config_logging.h"
#include <vespa/config/configgen/configinstance.h>
diff --git a/storage/src/vespa/storage/storageserver/config_logging.h b/storage/src/vespa/storage/storageserver/config_logging.h
index 94ef27a784c..8c6811cc637 100644
--- a/storage/src/vespa/storage/storageserver/config_logging.h
+++ b/storage/src/vespa/storage/storageserver/config_logging.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/storageserver/configurable_bucket_resolver.cpp b/storage/src/vespa/storage/storageserver/configurable_bucket_resolver.cpp
index 79e32551560..2e10a7c4836 100644
--- a/storage/src/vespa/storage/storageserver/configurable_bucket_resolver.cpp
+++ b/storage/src/vespa/storage/storageserver/configurable_bucket_resolver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/documentid.h>
#include <vespa/document/bucket/fixed_bucket_spaces.h>
diff --git a/storage/src/vespa/storage/storageserver/configurable_bucket_resolver.h b/storage/src/vespa/storage/storageserver/configurable_bucket_resolver.h
index 34e30aaea48..995e253f22c 100644
--- a/storage/src/vespa/storage/storageserver/configurable_bucket_resolver.h
+++ b/storage/src/vespa/storage/storageserver/configurable_bucket_resolver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config-bucketspaces.h>
diff --git a/storage/src/vespa/storage/storageserver/distributornode.cpp b/storage/src/vespa/storage/storageserver/distributornode.cpp
index 51fa0c01c96..b7016220531 100644
--- a/storage/src/vespa/storage/storageserver/distributornode.cpp
+++ b/storage/src/vespa/storage/storageserver/distributornode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "distributornode.h"
#include "bouncer.h"
@@ -7,7 +7,7 @@
#include "statemanager.h"
#include <vespa/storage/common/hostreporter/hostinfo.h>
#include <vespa/storage/common/i_storage_chain_builder.h>
-#include <vespa/storage/distributor/distributor.h>
+#include <vespa/storage/distributor/top_level_distributor.h>
#include <vespa/storage/distributor/distributor_stripe_pool.h>
#include <vespa/vespalib/util/exceptions.h>
@@ -26,7 +26,9 @@ DistributorNode::DistributorNode(
: StorageNode(configUri, context, generationFetcher,
std::make_unique<HostInfo>(),
!communicationManager ? NORMAL : SINGLE_THREADED_TEST_MODE),
- _threadPool(framework::TickingThreadPool::createDefault("distributor")),
+ // TODO STRIPE: Change waitTime default to 100ms when legacy mode is removed.
+ _threadPool(framework::TickingThreadPool::createDefault("distributor",
+ (num_distributor_stripes > 0) ? 100ms : 5ms)),
_stripe_pool(std::make_unique<distributor::DistributorStripePool>()),
_context(context),
_timestamp_mutex(),
@@ -103,7 +105,7 @@ DistributorNode::createChain(IStorageChainBuilder &builder)
// Distributor instance registers a host info reporter with the state
// manager, which is safe since the lifetime of said state manager
// extends to the end of the process.
- builder.add(std::make_unique<storage::distributor::Distributor>
+ builder.add(std::make_unique<storage::distributor::TopLevelDistributor>
(dcr, *_node_identity, *_threadPool, *_stripe_pool, getDoneInitializeHandler(),
_num_distributor_stripes,
stateManager->getHostInfo()));
@@ -127,9 +129,9 @@ DistributorNode::generate_unique_timestamp()
"%u timestamps were generated within this time period.",
SanityCheckMaxWallClockSecondSkew, now_seconds,_timestamp_second_counter,
_intra_second_pseudo_usec_counter);
- abort();
+ std::_Exit(65);
}
- assert(_intra_second_pseudo_usec_counter < 1'000'000);
+ assert(_intra_second_pseudo_usec_counter < 999'999);
++_intra_second_pseudo_usec_counter;
} else {
_timestamp_second_counter = now_seconds;
diff --git a/storage/src/vespa/storage/storageserver/distributornode.h b/storage/src/vespa/storage/storageserver/distributornode.h
index 21e9589b760..8d36d1d8bc5 100644
--- a/storage/src/vespa/storage/storageserver/distributornode.h
+++ b/storage/src/vespa/storage/storageserver/distributornode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::DistributorNode
* \ingroup storageserver
diff --git a/storage/src/vespa/storage/storageserver/distributornodecontext.cpp b/storage/src/vespa/storage/storageserver/distributornodecontext.cpp
index 55af608e626..c74490a18aa 100644
--- a/storage/src/vespa/storage/storageserver/distributornodecontext.cpp
+++ b/storage/src/vespa/storage/storageserver/distributornodecontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "distributornodecontext.h"
diff --git a/storage/src/vespa/storage/storageserver/distributornodecontext.h b/storage/src/vespa/storage/storageserver/distributornodecontext.h
index 3e3541498c0..b00274431ad 100644
--- a/storage/src/vespa/storage/storageserver/distributornodecontext.h
+++ b/storage/src/vespa/storage/storageserver/distributornodecontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::DistributorNodeContext
* @ingroup storageserver
diff --git a/storage/src/vespa/storage/storageserver/documentapiconverter.cpp b/storage/src/vespa/storage/storageserver/documentapiconverter.cpp
index 70f47d8108b..d95349fc88b 100644
--- a/storage/src/vespa/storage/storageserver/documentapiconverter.cpp
+++ b/storage/src/vespa/storage/storageserver/documentapiconverter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentapiconverter.h"
#include "priorityconverter.h"
diff --git a/storage/src/vespa/storage/storageserver/documentapiconverter.h b/storage/src/vespa/storage/storageserver/documentapiconverter.h
index 3a70e0f4b78..98c3bd66dbc 100644
--- a/storage/src/vespa/storage/storageserver/documentapiconverter.h
+++ b/storage/src/vespa/storage/storageserver/documentapiconverter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/documentapi/messagebus/messages/documentmessage.h>
diff --git a/storage/src/vespa/storage/storageserver/mergethrottler.cpp b/storage/src/vespa/storage/storageserver/mergethrottler.cpp
index 1761abfc097..fa9ab22c1cb 100644
--- a/storage/src/vespa/storage/storageserver/mergethrottler.cpp
+++ b/storage/src/vespa/storage/storageserver/mergethrottler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mergethrottler.h"
#include <vespa/storage/common/nodestateupdater.h>
@@ -171,21 +171,6 @@ MergeThrottler::MergeNodeSequence::chainContainsIndex(uint16_t idx) const
return false;
}
-std::string
-MergeThrottler::MergeNodeSequence::getSequenceString() const
-{
- std::ostringstream oss;
- oss << '[';
- for (std::size_t i = 0; i < _cmd.getNodes().size(); ++i) {
- if (i > 0) {
- oss << ", ";
- }
- oss << _cmd.getNodes()[i].index;
- }
- oss << ']';
- return oss.str();
-}
-
MergeThrottler::MergeThrottler(
const config::ConfigUri & configUri,
StorageComponentRegister& compReg)
@@ -194,17 +179,18 @@ MergeThrottler::MergeThrottler(
_merges(),
_queue(),
_maxQueueSize(1024),
- _throttlePolicy(new mbus::StaticThrottlePolicy()),
+ _throttlePolicy(std::make_unique<mbus::StaticThrottlePolicy>()),
_queueSequence(0),
_messageLock(),
_stateLock(),
_configFetcher(configUri.getContext()),
- _metrics(new Metrics),
+ _metrics(std::make_unique<Metrics>()),
_component(compReg, "mergethrottler"),
_thread(),
_rendezvous(RENDEZVOUS_NONE),
_throttle_until_time(),
_backpressure_duration(std::chrono::seconds(30)),
+ _disable_queue_limits_for_chained_merges(false),
_closing(false)
{
_throttlePolicy->setMaxPendingCount(20);
@@ -240,6 +226,7 @@ MergeThrottler::configure(std::unique_ptr<vespa::config::content::core::StorServ
_maxQueueSize = newConfig->maxMergeQueueSize;
_backpressure_duration = std::chrono::duration_cast<std::chrono::steady_clock::duration>(
std::chrono::duration<double>(newConfig->resourceExhaustionMergeBackPressureDurationSecs));
+ _disable_queue_limits_for_chained_merges = newConfig->disableQueueLimitsForChainedMerges;
}
MergeThrottler::~MergeThrottler()
@@ -299,29 +286,26 @@ MergeThrottler::onFlush(bool /*downwards*/)
// Abort active merges, queued and up/down pending
std::vector<api::StorageMessage::SP> flushable;
- ActiveMergeMap::iterator mergeEnd = _merges.end();
- for (ActiveMergeMap::iterator i = _merges.begin(); i != mergeEnd; ++i) {
+ for (auto& merge : _merges) {
// Only generate a reply if the throttler owns the command
- if (i->second.getMergeCmd().get()) {
- flushable.push_back(i->second.getMergeCmd());
+ if (merge.second.getMergeCmd().get()) {
+ flushable.push_back(merge.second.getMergeCmd());
} else {
LOG(debug, "Not generating flush-reply for %s since we don't "
- "own the command", i->first.toString().c_str());
+ "own the command", merge.first.toString().c_str());
}
DummyMbusMessage<mbus::Reply> dummyReply;
_throttlePolicy->processReply(dummyReply);
}
- MergePriorityQueue::iterator queueEnd = _queue.end();
- for (MergePriorityQueue::iterator i = _queue.begin(); i != queueEnd; ++i) {
- flushable.push_back(i->_msg);
+ for (auto& entry : _queue) {
+ flushable.push_back(entry._msg);
}
-
// Just pass-through everything in the up-queue, since the messages
// are either replies or commands _we_ have sent and thus cannot
// send a meaningful reply for
- for (std::size_t i = 0; i < _messagesUp.size(); ++i) {
- msgGuard.sendUp(_messagesUp[i]);
+ for (auto& msg : _messagesUp) {
+ msgGuard.sendUp(msg);
}
std::back_insert_iterator<
@@ -329,28 +313,21 @@ MergeThrottler::onFlush(bool /*downwards*/)
> inserter(flushable);
std::copy(_messagesDown.begin(), _messagesDown.end(), inserter);
- for (std::size_t i = 0; i < flushable.size(); ++i) {
+ for (auto& msg : flushable) {
// Down-bound merge may be a reply, in which case we ignore it
// since we can't actually do anything with it now
- if (flushable[i]->getType() == api::MessageType::MERGEBUCKET) {
- std::shared_ptr<api::MergeBucketReply> reply(
- std::make_shared<api::MergeBucketReply>(
- static_cast<const api::MergeBucketCommand&>(
- *flushable[i])));
- reply->setResult(api::ReturnCode(api::ReturnCode::ABORTED,
- "Storage node is shutting down"));
- LOG(debug, "Aborted merge since we're flushing: %s",
- flushable[i]->toString().c_str());
+ if (msg->getType() == api::MessageType::MERGEBUCKET) {
+ auto reply = std::make_shared<api::MergeBucketReply>(static_cast<const api::MergeBucketCommand&>(*msg));
+ reply->setResult(api::ReturnCode(api::ReturnCode::ABORTED, "Storage node is shutting down"));
+ LOG(debug, "Aborted merge since we're flushing: %s", msg->toString().c_str());
msgGuard.sendUp(reply);
} else {
- assert(flushable[i]->getType() == api::MessageType::MERGEBUCKET_REPLY);
- LOG(debug, "Ignored merge reply since we're flushing: %s",
- flushable[i]->toString().c_str());
+ assert(msg->getType() == api::MessageType::MERGEBUCKET_REPLY);
+ LOG(debug, "Ignored merge reply since we're flushing: %s", msg->toString().c_str());
}
}
- LOG(debug, "Flushed %zu unfinished or pending merge operations",
- flushable.size());
+ LOG(debug, "Flushed %zu unfinished or pending merge operations", flushable.size());
_merges.clear();
_queue.clear();
@@ -398,8 +375,8 @@ MergeThrottler::getNextQueuedMerge()
return api::StorageMessage::SP();
}
- MergePriorityQueue::iterator iter = _queue.begin();
- MergePriorityQueue::value_type entry = *iter;
+ auto iter = _queue.begin();
+ auto entry = *iter;
entry._startTimer.stop(_metrics->averageQueueWaitingTime);
_queue.erase(iter);
return entry._msg;
@@ -416,7 +393,7 @@ MergeThrottler::enqueueMerge(
if (!validateNewMerge(mergeCmd, nodeSeq, msgGuard)) {
return;
}
- _queue.insert(MergePriorityQueue::value_type(msg, _queueSequence++));
+ _queue.emplace(msg, _queueSequence++);
_metrics->queueSize.set(_queue.size());
}
@@ -450,7 +427,7 @@ MergeThrottler::rejectMergeIfOutdated(
{
return false;
}
- std::ostringstream oss;
+ vespalib::asciistream oss;
oss << "Rejected merge due to outdated cluster state; merge has "
<< "version " << cmd.getClusterStateVersion()
<< ", storage node has version "
@@ -555,10 +532,10 @@ MergeThrottler::attemptProcessNextQueuedMerge(
LOG(spam, "Processing queued merge %s", msg->toString().c_str());
processNewMergeCommand(msg, msgGuard);
} else {
- std::stringstream oss;
- oss << "Queued merge " << *msg << " is out of date; it has already "
- "been started by someone else since it was queued";
- LOG(debug, "%s", oss.str().c_str());
+ vespalib::asciistream oss;
+ oss << "Queued merge " << msg->toString() << " is out of date; it has already "
+ "been started by someone else since it was queued";
+ LOG(debug, "%s", oss.c_str());
sendReply(dynamic_cast<const api::MergeBucketCommand&>(*msg),
api::ReturnCode(api::ReturnCode::BUSY, oss.str()),
msgGuard, _metrics->chaining);
@@ -568,8 +545,7 @@ MergeThrottler::attemptProcessNextQueuedMerge(
if (_queue.empty()) {
LOG(spam, "Queue empty - no merges to process");
} else {
- LOG(spam, "Merges queued, but throttle policy disallows further "
- "merges at this time");
+ LOG(spam, "Merges queued, but throttle policy disallows further merges at this time");
}
}
return false;
@@ -703,6 +679,13 @@ bool MergeThrottler::backpressure_mode_active() const {
return backpressure_mode_active_no_lock();
}
+bool MergeThrottler::allow_merge_with_queue_full(const api::MergeBucketCommand& cmd) const noexcept {
+ // We let any merge through that has already passed through at least one other node's merge
+ // window, as that has already taken up a logical resource slot on all those nodes. Busy-bouncing
+ // a merge at that point would undo a great amount of thumb-twiddling and waiting.
+ return (_disable_queue_limits_for_chained_merges && !cmd.getChain().empty());
+}
+
// Must be run from worker thread
void
MergeThrottler::handleMessageDown(
@@ -732,7 +715,7 @@ MergeThrottler::handleMessageDown(
processCycledMergeCommand(msg, msgGuard);
} else if (canProcessNewMerge()) {
processNewMergeCommand(msg, msgGuard);
- } else if (_queue.size() < _maxQueueSize) {
+ } else if ((_queue.size() < _maxQueueSize) || allow_merge_with_queue_full(mergeCmd)) {
enqueueMerge(msg, msgGuard); // Queue for later processing
} else {
// No more room at the inn. Return BUSY so that the
@@ -1258,6 +1241,12 @@ MergeThrottler::markActiveMergesAsAborted(uint32_t minimumStateVersion)
}
void
+MergeThrottler::set_disable_queue_limits_for_chained_merges(bool disable_limits) noexcept {
+ std::lock_guard lock(_stateLock);
+ _disable_queue_limits_for_chained_merges = disable_limits;
+}
+
+void
MergeThrottler::print(std::ostream& out, bool /*verbose*/,
const std::string& /*indent*/) const
{
diff --git a/storage/src/vespa/storage/storageserver/mergethrottler.h b/storage/src/vespa/storage/storageserver/mergethrottler.h
index 0c608f29196..9b0fb125b2f 100644
--- a/storage/src/vespa/storage/storageserver/mergethrottler.h
+++ b/storage/src/vespa/storage/storageserver/mergethrottler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::MergeThrottler
* @ingroup storageserver
@@ -172,6 +172,7 @@ private:
RendezvousState _rendezvous;
mutable std::chrono::steady_clock::time_point _throttle_until_time;
std::chrono::steady_clock::duration _backpressure_duration;
+ bool _disable_queue_limits_for_chained_merges;
bool _closing;
public:
/**
@@ -209,9 +210,9 @@ public:
// For unit testing only
const mbus::StaticThrottlePolicy& getThrottlePolicy() const { return *_throttlePolicy; }
mbus::StaticThrottlePolicy& getThrottlePolicy() { return *_throttlePolicy; }
+ void set_disable_queue_limits_for_chained_merges(bool disable_limits) noexcept;
// For unit testing only
- std::mutex & getMonitor() { return _messageLock; }
- std::mutex & getStateLock() { return _stateLock; }
+ std::mutex& getStateLock() { return _stateLock; }
Metrics& getMetrics() { return *_metrics; }
std::size_t getMaxQueueSize() const { return _maxQueueSize; }
@@ -261,7 +262,6 @@ private:
* pairwise compares equally to the vector of sorted node indices
*/
bool isChainCompleted() const;
- std::string getSequenceString() const;
};
/**
@@ -347,6 +347,7 @@ private:
bool merge_has_this_node_as_source_only_node(const api::MergeBucketCommand& cmd) const;
bool backpressure_mode_active_no_lock() const;
void backpressure_bounce_all_queued_merges(MessageGuard& guard);
+ bool allow_merge_with_queue_full(const api::MergeBucketCommand& cmd) const noexcept;
void sendReply(const api::MergeBucketCommand& cmd,
const api::ReturnCode& result,
diff --git a/storage/src/vespa/storage/storageserver/message_dispatcher.h b/storage/src/vespa/storage/storageserver/message_dispatcher.h
index e483d55f753..b6fad66b8b9 100644
--- a/storage/src/vespa/storage/storageserver/message_dispatcher.h
+++ b/storage/src/vespa/storage/storageserver/message_dispatcher.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/storage/src/vespa/storage/storageserver/messagesink.cpp b/storage/src/vespa/storage/storageserver/messagesink.cpp
index ab8f5922c9b..94762e545d9 100644
--- a/storage/src/vespa/storage/storageserver/messagesink.cpp
+++ b/storage/src/vespa/storage/storageserver/messagesink.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "messagesink.h"
#include <vespa/storageapi/message/persistence.h>
diff --git a/storage/src/vespa/storage/storageserver/messagesink.h b/storage/src/vespa/storage/storageserver/messagesink.h
index 960865caefb..d98d0439b48 100644
--- a/storage/src/vespa/storage/storageserver/messagesink.h
+++ b/storage/src/vespa/storage/storageserver/messagesink.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::MessageSink
* @ingroup storageserver
diff --git a/storage/src/vespa/storage/storageserver/opslogger.cpp b/storage/src/vespa/storage/storageserver/opslogger.cpp
index 3e1fc34d470..244813775a1 100644
--- a/storage/src/vespa/storage/storageserver/opslogger.cpp
+++ b/storage/src/vespa/storage/storageserver/opslogger.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "opslogger.h"
#include <vespa/storageapi/message/persistence.h>
diff --git a/storage/src/vespa/storage/storageserver/opslogger.h b/storage/src/vespa/storage/storageserver/opslogger.h
index cecadf9ed1d..cf39f51279d 100644
--- a/storage/src/vespa/storage/storageserver/opslogger.h
+++ b/storage/src/vespa/storage/storageserver/opslogger.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::OpsLogger
diff --git a/storage/src/vespa/storage/storageserver/priorityconverter.cpp b/storage/src/vespa/storage/storageserver/priorityconverter.cpp
index d4dbe943664..1c11edea796 100644
--- a/storage/src/vespa/storage/storageserver/priorityconverter.cpp
+++ b/storage/src/vespa/storage/storageserver/priorityconverter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "priorityconverter.h"
#include <vespa/documentapi/messagebus/documentprotocol.h>
diff --git a/storage/src/vespa/storage/storageserver/priorityconverter.h b/storage/src/vespa/storage/storageserver/priorityconverter.h
index 08669c672d5..0dcd66645cb 100644
--- a/storage/src/vespa/storage/storageserver/priorityconverter.h
+++ b/storage/src/vespa/storage/storageserver/priorityconverter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/storageserver/rpc/CMakeLists.txt b/storage/src/vespa/storage/storageserver/rpc/CMakeLists.txt
index 7e2f4c9c82c..e014f570455 100644
--- a/storage/src/vespa/storage/storageserver/rpc/CMakeLists.txt
+++ b/storage/src/vespa/storage/storageserver/rpc/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
find_package(Protobuf REQUIRED)
PROTOBUF_GENERATE_CPP(storage_storageserver_rpc_PROTOBUF_SRCS storage_storageserver_rpc_PROTOBUF_HDRS
diff --git a/storage/src/vespa/storage/storageserver/rpc/caching_rpc_target_resolver.cpp b/storage/src/vespa/storage/storageserver/rpc/caching_rpc_target_resolver.cpp
index 743225c6209..cfd3d1e4bc1 100644
--- a/storage/src/vespa/storage/storageserver/rpc/caching_rpc_target_resolver.cpp
+++ b/storage/src/vespa/storage/storageserver/rpc/caching_rpc_target_resolver.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "caching_rpc_target_resolver.h"
#include "shared_rpc_resources.h"
#include <vespa/fnet/frt/target.h>
diff --git a/storage/src/vespa/storage/storageserver/rpc/caching_rpc_target_resolver.h b/storage/src/vespa/storage/storageserver/rpc/caching_rpc_target_resolver.h
index 0d91b8e5a8a..f6c9eb75e12 100644
--- a/storage/src/vespa/storage/storageserver/rpc/caching_rpc_target_resolver.h
+++ b/storage/src/vespa/storage/storageserver/rpc/caching_rpc_target_resolver.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "rpc_target.h"
diff --git a/storage/src/vespa/storage/storageserver/rpc/cluster_controller_api_rpc_service.cpp b/storage/src/vespa/storage/storageserver/rpc/cluster_controller_api_rpc_service.cpp
index 60a0fdac341..be0239c1370 100644
--- a/storage/src/vespa/storage/storageserver/rpc/cluster_controller_api_rpc_service.cpp
+++ b/storage/src/vespa/storage/storageserver/rpc/cluster_controller_api_rpc_service.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "cluster_controller_api_rpc_service.h"
#include "shared_rpc_resources.h"
#include "slime_cluster_state_bundle_codec.h"
diff --git a/storage/src/vespa/storage/storageserver/rpc/cluster_controller_api_rpc_service.h b/storage/src/vespa/storage/storageserver/rpc/cluster_controller_api_rpc_service.h
index d5e753ff04b..f0bc96f5753 100644
--- a/storage/src/vespa/storage/storageserver/rpc/cluster_controller_api_rpc_service.h
+++ b/storage/src/vespa/storage/storageserver/rpc/cluster_controller_api_rpc_service.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/fnet/frt/invokable.h>
diff --git a/storage/src/vespa/storage/storageserver/rpc/cluster_state_bundle_codec.h b/storage/src/vespa/storage/storageserver/rpc/cluster_state_bundle_codec.h
index ea6ef2649d0..530d1bd00bd 100644
--- a/storage/src/vespa/storage/storageserver/rpc/cluster_state_bundle_codec.h
+++ b/storage/src/vespa/storage/storageserver/rpc/cluster_state_bundle_codec.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/storageserver/rpc/encoded_cluster_state_bundle.h b/storage/src/vespa/storage/storageserver/rpc/encoded_cluster_state_bundle.h
index 92e66aab378..54419bb60cc 100644
--- a/storage/src/vespa/storage/storageserver/rpc/encoded_cluster_state_bundle.h
+++ b/storage/src/vespa/storage/storageserver/rpc/encoded_cluster_state_bundle.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/storageserver/rpc/message_codec_provider.cpp b/storage/src/vespa/storage/storageserver/rpc/message_codec_provider.cpp
index 8a75466365a..0d3536a9492 100644
--- a/storage/src/vespa/storage/storageserver/rpc/message_codec_provider.cpp
+++ b/storage/src/vespa/storage/storageserver/rpc/message_codec_provider.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "message_codec_provider.h"
#include <vespa/storageapi/mbusprot/protocolserialization7.h>
#include <mutex>
diff --git a/storage/src/vespa/storage/storageserver/rpc/message_codec_provider.h b/storage/src/vespa/storage/storageserver/rpc/message_codec_provider.h
index f8585abe3f5..ddad9e4c7aa 100644
--- a/storage/src/vespa/storage/storageserver/rpc/message_codec_provider.h
+++ b/storage/src/vespa/storage/storageserver/rpc/message_codec_provider.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/storage/src/vespa/storage/storageserver/rpc/protobuf/rpc_envelope.proto b/storage/src/vespa/storage/storageserver/rpc/protobuf/rpc_envelope.proto
index 2eab6068bad..20d3821f802 100644
--- a/storage/src/vespa/storage/storageserver/rpc/protobuf/rpc_envelope.proto
+++ b/storage/src/vespa/storage/storageserver/rpc/protobuf/rpc_envelope.proto
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
syntax = "proto3";
option cc_enable_arenas = true;
diff --git a/storage/src/vespa/storage/storageserver/rpc/rpc_envelope_proto.h b/storage/src/vespa/storage/storageserver/rpc/rpc_envelope_proto.h
index dbc048cd504..ded22d8c06a 100644
--- a/storage/src/vespa/storage/storageserver/rpc/rpc_envelope_proto.h
+++ b/storage/src/vespa/storage/storageserver/rpc/rpc_envelope_proto.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -7,6 +7,6 @@
#pragma GCC diagnostic ignored "-Wsuggest-override"
#endif
-#include "rpc_envelope.pb.h"
+#include <vespa/storage/storageserver/rpc/rpc_envelope.pb.h>
#pragma GCC diagnostic pop
diff --git a/storage/src/vespa/storage/storageserver/rpc/rpc_target.h b/storage/src/vespa/storage/storageserver/rpc/rpc_target.h
index af93e7101ca..fb6aa6c9643 100644
--- a/storage/src/vespa/storage/storageserver/rpc/rpc_target.h
+++ b/storage/src/vespa/storage/storageserver/rpc/rpc_target.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/storage/src/vespa/storage/storageserver/rpc/rpc_target_factory.h b/storage/src/vespa/storage/storageserver/rpc/rpc_target_factory.h
index 14c356652e1..080bcc909b9 100644
--- a/storage/src/vespa/storage/storageserver/rpc/rpc_target_factory.h
+++ b/storage/src/vespa/storage/storageserver/rpc/rpc_target_factory.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/storage/src/vespa/storage/storageserver/rpc/rpc_target_pool.cpp b/storage/src/vespa/storage/storageserver/rpc/rpc_target_pool.cpp
index d8671ee3783..0c338a4ff5d 100644
--- a/storage/src/vespa/storage/storageserver/rpc/rpc_target_pool.cpp
+++ b/storage/src/vespa/storage/storageserver/rpc/rpc_target_pool.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rpc_target.h"
#include "rpc_target_pool.h"
diff --git a/storage/src/vespa/storage/storageserver/rpc/rpc_target_pool.h b/storage/src/vespa/storage/storageserver/rpc/rpc_target_pool.h
index 01c899c47db..419b67d58c2 100644
--- a/storage/src/vespa/storage/storageserver/rpc/rpc_target_pool.h
+++ b/storage/src/vespa/storage/storageserver/rpc/rpc_target_pool.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.cpp b/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.cpp
index db4cddce032..ba3196bfcda 100644
--- a/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.cpp
+++ b/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rpc_target.h"
#include "shared_rpc_resources.h"
#include <vespa/fastos/thread.h>
diff --git a/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.h b/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.h
index 1fdd0f2648b..a30fcdc4ea7 100644
--- a/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.h
+++ b/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "rpc_target_factory.h"
diff --git a/storage/src/vespa/storage/storageserver/rpc/slime_cluster_state_bundle_codec.cpp b/storage/src/vespa/storage/storageserver/rpc/slime_cluster_state_bundle_codec.cpp
index 6d0392151b7..1c5b38967cc 100644
--- a/storage/src/vespa/storage/storageserver/rpc/slime_cluster_state_bundle_codec.cpp
+++ b/storage/src/vespa/storage/storageserver/rpc/slime_cluster_state_bundle_codec.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "slime_cluster_state_bundle_codec.h"
#include <vespa/document/bucket/fixed_bucket_spaces.h>
diff --git a/storage/src/vespa/storage/storageserver/rpc/slime_cluster_state_bundle_codec.h b/storage/src/vespa/storage/storageserver/rpc/slime_cluster_state_bundle_codec.h
index 0c25de5faa5..035197d2bd9 100644
--- a/storage/src/vespa/storage/storageserver/rpc/slime_cluster_state_bundle_codec.h
+++ b/storage/src/vespa/storage/storageserver/rpc/slime_cluster_state_bundle_codec.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/storageserver/rpc/storage_api_rpc_service.cpp b/storage/src/vespa/storage/storageserver/rpc/storage_api_rpc_service.cpp
index 4a5bbfec8c4..06323199341 100644
--- a/storage/src/vespa/storage/storageserver/rpc/storage_api_rpc_service.cpp
+++ b/storage/src/vespa/storage/storageserver/rpc/storage_api_rpc_service.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "caching_rpc_target_resolver.h"
#include "message_codec_provider.h"
diff --git a/storage/src/vespa/storage/storageserver/rpc/storage_api_rpc_service.h b/storage/src/vespa/storage/storageserver/rpc/storage_api_rpc_service.h
index 7fc382fda07..94bf663837c 100644
--- a/storage/src/vespa/storage/storageserver/rpc/storage_api_rpc_service.h
+++ b/storage/src/vespa/storage/storageserver/rpc/storage_api_rpc_service.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "rpc_target.h"
diff --git a/storage/src/vespa/storage/storageserver/rpcrequestwrapper.cpp b/storage/src/vespa/storage/storageserver/rpcrequestwrapper.cpp
index 2a083a2d704..59676c09e49 100644
--- a/storage/src/vespa/storage/storageserver/rpcrequestwrapper.cpp
+++ b/storage/src/vespa/storage/storageserver/rpcrequestwrapper.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rpcrequestwrapper.h"
#include <vespa/fnet/frt/rpcrequest.h>
diff --git a/storage/src/vespa/storage/storageserver/rpcrequestwrapper.h b/storage/src/vespa/storage/storageserver/rpcrequestwrapper.h
index e07163613ea..20720bc195f 100644
--- a/storage/src/vespa/storage/storageserver/rpcrequestwrapper.h
+++ b/storage/src/vespa/storage/storageserver/rpcrequestwrapper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdint>
diff --git a/storage/src/vespa/storage/storageserver/service_layer_error_listener.cpp b/storage/src/vespa/storage/storageserver/service_layer_error_listener.cpp
index e26549a3b37..e41a947b6fb 100644
--- a/storage/src/vespa/storage/storageserver/service_layer_error_listener.cpp
+++ b/storage/src/vespa/storage/storageserver/service_layer_error_listener.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "service_layer_error_listener.h"
#include <vespa/storage/common/storagecomponent.h>
diff --git a/storage/src/vespa/storage/storageserver/service_layer_error_listener.h b/storage/src/vespa/storage/storageserver/service_layer_error_listener.h
index 5dd01329ff4..25bd7c6b5e1 100644
--- a/storage/src/vespa/storage/storageserver/service_layer_error_listener.h
+++ b/storage/src/vespa/storage/storageserver/service_layer_error_listener.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/storageserver/servicelayernode.cpp b/storage/src/vespa/storage/storageserver/servicelayernode.cpp
index 15ff731d328..d9b15fdac65 100644
--- a/storage/src/vespa/storage/storageserver/servicelayernode.cpp
+++ b/storage/src/vespa/storage/storageserver/servicelayernode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "servicelayernode.h"
#include "bouncer.h"
diff --git a/storage/src/vespa/storage/storageserver/servicelayernode.h b/storage/src/vespa/storage/storageserver/servicelayernode.h
index ef835ec9f8a..8f36e1d8748 100644
--- a/storage/src/vespa/storage/storageserver/servicelayernode.h
+++ b/storage/src/vespa/storage/storageserver/servicelayernode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::ServiceLayerNode
* \ingroup storageserver
diff --git a/storage/src/vespa/storage/storageserver/servicelayernodecontext.cpp b/storage/src/vespa/storage/storageserver/servicelayernodecontext.cpp
index 4e4e18a7f01..544477c7ca5 100644
--- a/storage/src/vespa/storage/storageserver/servicelayernodecontext.cpp
+++ b/storage/src/vespa/storage/storageserver/servicelayernodecontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "servicelayernodecontext.h"
diff --git a/storage/src/vespa/storage/storageserver/servicelayernodecontext.h b/storage/src/vespa/storage/storageserver/servicelayernodecontext.h
index 0f2ca2a9048..79bc0b2c3ae 100644
--- a/storage/src/vespa/storage/storageserver/servicelayernodecontext.h
+++ b/storage/src/vespa/storage/storageserver/servicelayernodecontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::ServiceLayerNodeContext
* @ingroup storageserver
diff --git a/storage/src/vespa/storage/storageserver/statemanager.cpp b/storage/src/vespa/storage/storageserver/statemanager.cpp
index 68ba9199f7b..7596bdf1b84 100644
--- a/storage/src/vespa/storage/storageserver/statemanager.cpp
+++ b/storage/src/vespa/storage/storageserver/statemanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "statemanager.h"
#include "storagemetricsset.h"
diff --git a/storage/src/vespa/storage/storageserver/statemanager.h b/storage/src/vespa/storage/storageserver/statemanager.h
index 9f2853456e5..7f8320567bf 100644
--- a/storage/src/vespa/storage/storageserver/statemanager.h
+++ b/storage/src/vespa/storage/storageserver/statemanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::StateManager
* @ingroup storageserver
diff --git a/storage/src/vespa/storage/storageserver/statereporter.cpp b/storage/src/vespa/storage/storageserver/statereporter.cpp
index aab8c840ad7..b2337ae1223 100644
--- a/storage/src/vespa/storage/storageserver/statereporter.cpp
+++ b/storage/src/vespa/storage/storageserver/statereporter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "statereporter.h"
#include <vespa/metrics/jsonwriter.h>
diff --git a/storage/src/vespa/storage/storageserver/statereporter.h b/storage/src/vespa/storage/storageserver/statereporter.h
index 72c2b856612..71ac1f3fdfd 100644
--- a/storage/src/vespa/storage/storageserver/statereporter.h
+++ b/storage/src/vespa/storage/storageserver/statereporter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::StateReporter
diff --git a/storage/src/vespa/storage/storageserver/storagemetricsset.cpp b/storage/src/vespa/storage/storageserver/storagemetricsset.cpp
index 6ed5c1ab650..40070ec019c 100644
--- a/storage/src/vespa/storage/storageserver/storagemetricsset.cpp
+++ b/storage/src/vespa/storage/storageserver/storagemetricsset.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "storagemetricsset.h"
#include <vespa/document/fieldvalue/serializablearray.h>
diff --git a/storage/src/vespa/storage/storageserver/storagemetricsset.h b/storage/src/vespa/storage/storageserver/storagemetricsset.h
index 7e8284fc734..b472afbceed 100644
--- a/storage/src/vespa/storage/storageserver/storagemetricsset.h
+++ b/storage/src/vespa/storage/storageserver/storagemetricsset.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/storageserver/storagenode.cpp b/storage/src/vespa/storage/storageserver/storagenode.cpp
index bf517bd6869..2e199db1f07 100644
--- a/storage/src/vespa/storage/storageserver/storagenode.cpp
+++ b/storage/src/vespa/storage/storageserver/storagenode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "communicationmanager.h"
#include "config_logging.h"
diff --git a/storage/src/vespa/storage/storageserver/storagenode.h b/storage/src/vespa/storage/storageserver/storagenode.h
index 44b87f4b61c..74a070cb105 100644
--- a/storage/src/vespa/storage/storageserver/storagenode.h
+++ b/storage/src/vespa/storage/storageserver/storagenode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::StorageNode
* @ingroup storageserver
diff --git a/storage/src/vespa/storage/storageserver/storagenodecontext.cpp b/storage/src/vespa/storage/storageserver/storagenodecontext.cpp
index 49390d4e579..df087208425 100644
--- a/storage/src/vespa/storage/storageserver/storagenodecontext.cpp
+++ b/storage/src/vespa/storage/storageserver/storagenodecontext.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "storagenodecontext.h"
diff --git a/storage/src/vespa/storage/storageserver/storagenodecontext.h b/storage/src/vespa/storage/storageserver/storagenodecontext.h
index 34afac43ab3..91953e7092f 100644
--- a/storage/src/vespa/storage/storageserver/storagenodecontext.h
+++ b/storage/src/vespa/storage/storageserver/storagenodecontext.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::StorageNodeContext
* @ingroup storageserver
diff --git a/storage/src/vespa/storage/storageserver/tls_statistics_metrics_wrapper.cpp b/storage/src/vespa/storage/storageserver/tls_statistics_metrics_wrapper.cpp
index b1d6459bc1d..5e281152b2b 100644
--- a/storage/src/vespa/storage/storageserver/tls_statistics_metrics_wrapper.cpp
+++ b/storage/src/vespa/storage/storageserver/tls_statistics_metrics_wrapper.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tls_statistics_metrics_wrapper.h"
diff --git a/storage/src/vespa/storage/storageserver/tls_statistics_metrics_wrapper.h b/storage/src/vespa/storage/storageserver/tls_statistics_metrics_wrapper.h
index 85a8584a591..7bb51acd1fe 100644
--- a/storage/src/vespa/storage/storageserver/tls_statistics_metrics_wrapper.h
+++ b/storage/src/vespa/storage/storageserver/tls_statistics_metrics_wrapper.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/metrics/metricset.h>
diff --git a/storage/src/vespa/storage/storageutil/CMakeLists.txt b/storage/src/vespa/storage/storageutil/CMakeLists.txt
index b2f6016a341..48af8a77656 100644
--- a/storage/src/vespa/storage/storageutil/CMakeLists.txt
+++ b/storage/src/vespa/storage/storageutil/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage_storageutil OBJECT
SOURCES
bloomfilter.cpp
diff --git a/storage/src/vespa/storage/storageutil/bloomfilter.cpp b/storage/src/vespa/storage/storageutil/bloomfilter.cpp
index 76213ee614a..3afa9a8bbf2 100644
--- a/storage/src/vespa/storage/storageutil/bloomfilter.cpp
+++ b/storage/src/vespa/storage/storageutil/bloomfilter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bloomfilter.h"
#include <cstdlib>
diff --git a/storage/src/vespa/storage/storageutil/bloomfilter.h b/storage/src/vespa/storage/storageutil/bloomfilter.h
index 9ab11151deb..f79ce879954 100644
--- a/storage/src/vespa/storage/storageutil/bloomfilter.h
+++ b/storage/src/vespa/storage/storageutil/bloomfilter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <stdio.h>
#include <inttypes.h>
diff --git a/storage/src/vespa/storage/storageutil/distributorstatecache.h b/storage/src/vespa/storage/storageutil/distributorstatecache.h
index 96040f3d949..8c4d07e39bf 100644
--- a/storage/src/vespa/storage/storageutil/distributorstatecache.h
+++ b/storage/src/vespa/storage/storageutil/distributorstatecache.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vdslib/state/clusterstate.h>
diff --git a/storage/src/vespa/storage/storageutil/resumeguard.h b/storage/src/vespa/storage/storageutil/resumeguard.h
index a6fdcbbe506..f121779e577 100644
--- a/storage/src/vespa/storage/storageutil/resumeguard.h
+++ b/storage/src/vespa/storage/storageutil/resumeguard.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace storage {
diff --git a/storage/src/vespa/storage/storageutil/utils.h b/storage/src/vespa/storage/storageutil/utils.h
index c7403dad00d..debb7e71ace 100644
--- a/storage/src/vespa/storage/storageutil/utils.h
+++ b/storage/src/vespa/storage/storageutil/utils.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vector>
diff --git a/storage/src/vespa/storage/tools/CMakeLists.txt b/storage/src/vespa/storage/tools/CMakeLists.txt
index 44b041f97e0..e5b48a3b39f 100644
--- a/storage/src/vespa/storage/tools/CMakeLists.txt
+++ b/storage/src/vespa/storage/tools/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(storage_getidealstate_app
SOURCES
getidealstate.cpp
diff --git a/storage/src/vespa/storage/tools/generate_distribution_doc.sh b/storage/src/vespa/storage/tools/generate_distribution_doc.sh
index cc19a1c0edd..38e9786649d 100755
--- a/storage/src/vespa/storage/tools/generate_distribution_doc.sh
+++ b/storage/src/vespa/storage/tools/generate_distribution_doc.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
./generatedistributionbits -s -r 1 -b 32 --html > distbitreport.html
./generatedistributionbits -s -r 2 -b 32 --html >> distbitreport.html
./generatedistributionbits -s -r 2 -b 32 --highrange --html >> distbitreport.html
diff --git a/storage/src/vespa/storage/tools/generatedistributionbits.cpp b/storage/src/vespa/storage/tools/generatedistributionbits.cpp
index 21cf8a064e1..3d30ad7d593 100644
--- a/storage/src/vespa/storage/tools/generatedistributionbits.cpp
+++ b/storage/src/vespa/storage/tools/generatedistributionbits.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/bucket/bucketidfactory.h>
#include <vespa/vespalib/util/programoptions.h>
diff --git a/storage/src/vespa/storage/tools/getidealstate.cpp b/storage/src/vespa/storage/tools/getidealstate.cpp
index 02f0d658df9..5b17fa63b5a 100644
--- a/storage/src/vespa/storage/tools/getidealstate.cpp
+++ b/storage/src/vespa/storage/tools/getidealstate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/bucket/bucketidfactory.h>
#include <vespa/vdslib/distribution/distribution.h>
diff --git a/storage/src/vespa/storage/tools/storage-cmd.cpp b/storage/src/vespa/storage/tools/storage-cmd.cpp
index 472d87c4f9d..0f3cde759c5 100644
--- a/storage/src/vespa/storage/tools/storage-cmd.cpp
+++ b/storage/src/vespa/storage/tools/storage-cmd.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fnet/frt/rpcrequest.h>
#include <vespa/fnet/frt/supervisor.h>
#include <vespa/fnet/frt/target.h>
diff --git a/storage/src/vespa/storage/visiting/CMakeLists.txt b/storage/src/vespa/storage/visiting/CMakeLists.txt
index 27c8b8853b8..06b29252f2b 100644
--- a/storage/src/vespa/storage/visiting/CMakeLists.txt
+++ b/storage/src/vespa/storage/visiting/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storage_visitor OBJECT
SOURCES
${CMAKE_CURRENT_BINARY_DIR}/config-stor-visitor.h
diff --git a/storage/src/vespa/storage/visiting/commandqueue.h b/storage/src/vespa/storage/visiting/commandqueue.h
index 1ff46b9cafd..70f5b2421c3 100644
--- a/storage/src/vespa/storage/visiting/commandqueue.h
+++ b/storage/src/vespa/storage/visiting/commandqueue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class CommandQueue
* @ingroup visiting
diff --git a/storage/src/vespa/storage/visiting/countvisitor.cpp b/storage/src/vespa/storage/visiting/countvisitor.cpp
index f00b333581e..e20699aa799 100644
--- a/storage/src/vespa/storage/visiting/countvisitor.cpp
+++ b/storage/src/vespa/storage/visiting/countvisitor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "countvisitor.h"
#include <vespa/document/fieldvalue/document.h>
diff --git a/storage/src/vespa/storage/visiting/countvisitor.h b/storage/src/vespa/storage/visiting/countvisitor.h
index 93eae898029..4c436b3d07c 100644
--- a/storage/src/vespa/storage/visiting/countvisitor.h
+++ b/storage/src/vespa/storage/visiting/countvisitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::CountVisitor
* @ingroup visitors
diff --git a/storage/src/vespa/storage/visiting/dumpvisitorsingle.cpp b/storage/src/vespa/storage/visiting/dumpvisitorsingle.cpp
index f52b549de42..704aaa219cb 100644
--- a/storage/src/vespa/storage/visiting/dumpvisitorsingle.cpp
+++ b/storage/src/vespa/storage/visiting/dumpvisitorsingle.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dumpvisitorsingle.h"
#include <vespa/document/update/documentupdate.h>
diff --git a/storage/src/vespa/storage/visiting/dumpvisitorsingle.h b/storage/src/vespa/storage/visiting/dumpvisitorsingle.h
index ccfc8a5a3cf..81f4ab7e989 100644
--- a/storage/src/vespa/storage/visiting/dumpvisitorsingle.h
+++ b/storage/src/vespa/storage/visiting/dumpvisitorsingle.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::DumpVisitorSingle
* @ingroup visitors
diff --git a/storage/src/vespa/storage/visiting/memory_bounded_trace.cpp b/storage/src/vespa/storage/visiting/memory_bounded_trace.cpp
index 05bb026f238..4381bf46e1f 100644
--- a/storage/src/vespa/storage/visiting/memory_bounded_trace.cpp
+++ b/storage/src/vespa/storage/visiting/memory_bounded_trace.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "memory_bounded_trace.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/storage/src/vespa/storage/visiting/memory_bounded_trace.h b/storage/src/vespa/storage/visiting/memory_bounded_trace.h
index 2c75c809af6..ddc7ce3de3b 100644
--- a/storage/src/vespa/storage/visiting/memory_bounded_trace.h
+++ b/storage/src/vespa/storage/visiting/memory_bounded_trace.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/visiting/messagebusvisitormessagesession.h b/storage/src/vespa/storage/visiting/messagebusvisitormessagesession.h
index 74b5ea04559..ea9aa1f166e 100644
--- a/storage/src/vespa/storage/visiting/messagebusvisitormessagesession.h
+++ b/storage/src/vespa/storage/visiting/messagebusvisitormessagesession.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::MessageBusVisitorMessageSession
*
diff --git a/storage/src/vespa/storage/visiting/messages.h b/storage/src/vespa/storage/visiting/messages.h
index ebb5481801a..817cff9c006 100644
--- a/storage/src/vespa/storage/visiting/messages.h
+++ b/storage/src/vespa/storage/visiting/messages.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Messages used internally within visitor implementation. Sent from visitor
* manager to visitor threads, to avoid any locking issues generated by calling
diff --git a/storage/src/vespa/storage/visiting/recoveryvisitor.cpp b/storage/src/vespa/storage/visiting/recoveryvisitor.cpp
index 1ac0248961a..df965f93ae6 100644
--- a/storage/src/vespa/storage/visiting/recoveryvisitor.cpp
+++ b/storage/src/vespa/storage/visiting/recoveryvisitor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "recoveryvisitor.h"
diff --git a/storage/src/vespa/storage/visiting/recoveryvisitor.h b/storage/src/vespa/storage/visiting/recoveryvisitor.h
index fd296c30361..045c8aeb484 100644
--- a/storage/src/vespa/storage/visiting/recoveryvisitor.h
+++ b/storage/src/vespa/storage/visiting/recoveryvisitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::RecoveryVisitor
* @ingroup visitors
diff --git a/storage/src/vespa/storage/visiting/reindexing_visitor.cpp b/storage/src/vespa/storage/visiting/reindexing_visitor.cpp
index 5577bcd00ae..528f83e29cc 100644
--- a/storage/src/vespa/storage/visiting/reindexing_visitor.cpp
+++ b/storage/src/vespa/storage/visiting/reindexing_visitor.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "reindexing_visitor.h"
#include <vespa/document/fieldvalue/document.h>
#include <vespa/documentapi/messagebus/messages/putdocumentmessage.h>
diff --git a/storage/src/vespa/storage/visiting/reindexing_visitor.h b/storage/src/vespa/storage/visiting/reindexing_visitor.h
index 0fdba607134..9bde9903617 100644
--- a/storage/src/vespa/storage/visiting/reindexing_visitor.h
+++ b/storage/src/vespa/storage/visiting/reindexing_visitor.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "visitor.h"
diff --git a/storage/src/vespa/storage/visiting/stor-visitor.def b/storage/src/vespa/storage/visiting/stor-visitor.def
index ef3c0cd6113..4e495d1ddd8 100644
--- a/storage/src/vespa/storage/visiting/stor-visitor.def
+++ b/storage/src/vespa/storage/visiting/stor-visitor.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.content.core
## Number of separate threads that runs visitors.
diff --git a/storage/src/vespa/storage/visiting/testvisitor.cpp b/storage/src/vespa/storage/visiting/testvisitor.cpp
index 9c1e04ecbbd..b5ace673e48 100644
--- a/storage/src/vespa/storage/visiting/testvisitor.cpp
+++ b/storage/src/vespa/storage/visiting/testvisitor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "testvisitor.h"
#include <vespa/documentapi/messagebus/messages/visitor.h>
diff --git a/storage/src/vespa/storage/visiting/testvisitor.h b/storage/src/vespa/storage/visiting/testvisitor.h
index e09f34a0bea..482b1347faa 100644
--- a/storage/src/vespa/storage/visiting/testvisitor.h
+++ b/storage/src/vespa/storage/visiting/testvisitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::TestVisitor
* @ingroup visitors
diff --git a/storage/src/vespa/storage/visiting/visitor.cpp b/storage/src/vespa/storage/visiting/visitor.cpp
index e69721e8177..dfb78122e07 100644
--- a/storage/src/vespa/storage/visiting/visitor.cpp
+++ b/storage/src/vespa/storage/visiting/visitor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "visitor.h"
#include "visitormetrics.h"
diff --git a/storage/src/vespa/storage/visiting/visitor.h b/storage/src/vespa/storage/visiting/visitor.h
index d6b4c4b9381..52b2d586c78 100644
--- a/storage/src/vespa/storage/visiting/visitor.h
+++ b/storage/src/vespa/storage/visiting/visitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::Visitor
* @ingroup storageserver
diff --git a/storage/src/vespa/storage/visiting/visitormanager.cpp b/storage/src/vespa/storage/visiting/visitormanager.cpp
index bc77fd268d5..8450fab5dcb 100644
--- a/storage/src/vespa/storage/visiting/visitormanager.cpp
+++ b/storage/src/vespa/storage/visiting/visitormanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "visitormanager.h"
#include "messages.h"
diff --git a/storage/src/vespa/storage/visiting/visitormanager.h b/storage/src/vespa/storage/visiting/visitormanager.h
index a2e70374821..32237de7f36 100644
--- a/storage/src/vespa/storage/visiting/visitormanager.h
+++ b/storage/src/vespa/storage/visiting/visitormanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::VisitorManager
* @ingroup storageserver
diff --git a/storage/src/vespa/storage/visiting/visitormessagesession.h b/storage/src/vespa/storage/visiting/visitormessagesession.h
index 1f00fc448db..fc11c1dee81 100644
--- a/storage/src/vespa/storage/visiting/visitormessagesession.h
+++ b/storage/src/vespa/storage/visiting/visitormessagesession.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::VisitorMessageSession
*/
diff --git a/storage/src/vespa/storage/visiting/visitormessagesessionfactory.h b/storage/src/vespa/storage/visiting/visitormessagesessionfactory.h
index 308bf1959a8..683588f19ab 100644
--- a/storage/src/vespa/storage/visiting/visitormessagesessionfactory.h
+++ b/storage/src/vespa/storage/visiting/visitormessagesessionfactory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/visiting/visitormetrics.cpp b/storage/src/vespa/storage/visiting/visitormetrics.cpp
index c35e0ab77ef..8fed61c1ec7 100644
--- a/storage/src/vespa/storage/visiting/visitormetrics.cpp
+++ b/storage/src/vespa/storage/visiting/visitormetrics.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "visitormetrics.h"
#include <vespa/vespalib/util/exceptions.h>
diff --git a/storage/src/vespa/storage/visiting/visitormetrics.h b/storage/src/vespa/storage/visiting/visitormetrics.h
index 52b29a3a234..a7c3cb9585a 100644
--- a/storage/src/vespa/storage/visiting/visitormetrics.h
+++ b/storage/src/vespa/storage/visiting/visitormetrics.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storage/src/vespa/storage/visiting/visitorthread.cpp b/storage/src/vespa/storage/visiting/visitorthread.cpp
index 918a0ce2ee3..16b4abf5b34 100644
--- a/storage/src/vespa/storage/visiting/visitorthread.cpp
+++ b/storage/src/vespa/storage/visiting/visitorthread.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "visitorthread.h"
#include "messages.h"
diff --git a/storage/src/vespa/storage/visiting/visitorthread.h b/storage/src/vespa/storage/visiting/visitorthread.h
index 6df4ddd8819..ebae51ed2b2 100644
--- a/storage/src/vespa/storage/visiting/visitorthread.h
+++ b/storage/src/vespa/storage/visiting/visitorthread.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class VisitorThread
* @ingroup visiting
diff --git a/storage/src/vespa/storage/visiting/visitorthreadmetrics.cpp b/storage/src/vespa/storage/visiting/visitorthreadmetrics.cpp
index df58d14c81e..af871cc8296 100644
--- a/storage/src/vespa/storage/visiting/visitorthreadmetrics.cpp
+++ b/storage/src/vespa/storage/visiting/visitorthreadmetrics.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "visitorthreadmetrics.h"
diff --git a/storage/src/vespa/storage/visiting/visitorthreadmetrics.h b/storage/src/vespa/storage/visiting/visitorthreadmetrics.h
index e58e1f01f59..5dc2c310ccc 100644
--- a/storage/src/vespa/storage/visiting/visitorthreadmetrics.h
+++ b/storage/src/vespa/storage/visiting/visitorthreadmetrics.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/metrics/valuemetric.h>
diff --git a/storageapi/CMakeLists.txt b/storageapi/CMakeLists.txt
index e393f1c0d15..d8e00cc35bf 100644
--- a/storageapi/CMakeLists.txt
+++ b/storageapi/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/storageapi/src/tests/CMakeLists.txt b/storageapi/src/tests/CMakeLists.txt
index 1f77345c1a3..18d2b34f499 100644
--- a/storageapi/src/tests/CMakeLists.txt
+++ b/storageapi/src/tests/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(storageapi_gtest_runner_app TEST
SOURCES
diff --git a/storageapi/src/tests/buckets/CMakeLists.txt b/storageapi/src/tests/buckets/CMakeLists.txt
index 08cd5f1d53b..651b27618a6 100644
--- a/storageapi/src/tests/buckets/CMakeLists.txt
+++ b/storageapi/src/tests/buckets/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storageapi_testbuckets
SOURCES
bucketinfotest.cpp
diff --git a/storageapi/src/tests/buckets/bucketinfotest.cpp b/storageapi/src/tests/buckets/bucketinfotest.cpp
index c861f961626..25648fa7e96 100644
--- a/storageapi/src/tests/buckets/bucketinfotest.cpp
+++ b/storageapi/src/tests/buckets/bucketinfotest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storageapi/buckets/bucketinfo.h>
#include <gtest/gtest.h>
diff --git a/storageapi/src/tests/mbusprot/CMakeLists.txt b/storageapi/src/tests/mbusprot/CMakeLists.txt
index 49c9887dcff..48469cfd9ea 100644
--- a/storageapi/src/tests/mbusprot/CMakeLists.txt
+++ b/storageapi/src/tests/mbusprot/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storageapi_testmbusprot
SOURCES
storageprotocoltest.cpp
diff --git a/storageapi/src/tests/mbusprot/storageprotocoltest.cpp b/storageapi/src/tests/mbusprot/storageprotocoltest.cpp
index c1f9cf9efdc..a6021a7cfd2 100644
--- a/storageapi/src/tests/mbusprot/storageprotocoltest.cpp
+++ b/storageapi/src/tests/mbusprot/storageprotocoltest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storageapi/message/persistence.h>
#include <vespa/storageapi/message/bucket.h>
diff --git a/storageapi/src/tests/messageapi/CMakeLists.txt b/storageapi/src/tests/messageapi/CMakeLists.txt
index 50f0b306191..5bc89dea4fc 100644
--- a/storageapi/src/tests/messageapi/CMakeLists.txt
+++ b/storageapi/src/tests/messageapi/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storageapi_testmessageapi
SOURCES
storage_message_address_test.cpp
diff --git a/storageapi/src/tests/messageapi/storage_message_address_test.cpp b/storageapi/src/tests/messageapi/storage_message_address_test.cpp
index edcf795368a..ea59fefc924 100644
--- a/storageapi/src/tests/messageapi/storage_message_address_test.cpp
+++ b/storageapi/src/tests/messageapi/storage_message_address_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storageapi/messageapi/storagemessage.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/storageapi/src/vespa/storageapi/CMakeLists.txt b/storageapi/src/vespa/storageapi/CMakeLists.txt
index 90eb6dd9eca..7018bbc1b55 100644
--- a/storageapi/src/vespa/storageapi/CMakeLists.txt
+++ b/storageapi/src/vespa/storageapi/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storageapi
SOURCES
diff --git a/storageapi/src/vespa/storageapi/app/CMakeLists.txt b/storageapi/src/vespa/storageapi/app/CMakeLists.txt
index 8e98f065c5a..90e5567d705 100644
--- a/storageapi/src/vespa/storageapi/app/CMakeLists.txt
+++ b/storageapi/src/vespa/storageapi/app/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(storageapi_getbucketid_app
SOURCES
getbucketid.cpp
diff --git a/storageapi/src/vespa/storageapi/app/getbucketid.cpp b/storageapi/src/vespa/storageapi/app/getbucketid.cpp
index 4f6552ac3f0..21f7912d1a1 100644
--- a/storageapi/src/vespa/storageapi/app/getbucketid.cpp
+++ b/storageapi/src/vespa/storageapi/app/getbucketid.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/bucket/bucketidfactory.h>
#include <vespa/document/base/documentid.h>
#include <iostream>
diff --git a/storageapi/src/vespa/storageapi/buckets/CMakeLists.txt b/storageapi/src/vespa/storageapi/buckets/CMakeLists.txt
index ca4988a7de1..ee087f6f566 100644
--- a/storageapi/src/vespa/storageapi/buckets/CMakeLists.txt
+++ b/storageapi/src/vespa/storageapi/buckets/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storageapi_buckets OBJECT
SOURCES
bucketinfo.cpp
diff --git a/storageapi/src/vespa/storageapi/buckets/bucketinfo.cpp b/storageapi/src/vespa/storageapi/buckets/bucketinfo.cpp
index 4c3b290d4d7..ff2f40e736b 100644
--- a/storageapi/src/vespa/storageapi/buckets/bucketinfo.cpp
+++ b/storageapi/src/vespa/storageapi/buckets/bucketinfo.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketinfo.h"
#include <vespa/vespalib/stllike/asciistream.h>
#include <vespa/vespalib/util/xmlstream.h>
diff --git a/storageapi/src/vespa/storageapi/buckets/bucketinfo.h b/storageapi/src/vespa/storageapi/buckets/bucketinfo.h
index 7e6e7a2aed2..d7b407185f6 100644
--- a/storageapi/src/vespa/storageapi/buckets/bucketinfo.h
+++ b/storageapi/src/vespa/storageapi/buckets/bucketinfo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class BucketInfo
* @ingroup bucket
diff --git a/storageapi/src/vespa/storageapi/defs.h b/storageapi/src/vespa/storageapi/defs.h
index 531a1b13120..9ee9fdf2218 100644
--- a/storageapi/src/vespa/storageapi/defs.h
+++ b/storageapi/src/vespa/storageapi/defs.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \file defs.h
*
diff --git a/storageapi/src/vespa/storageapi/mbusprot/CMakeLists.txt b/storageapi/src/vespa/storageapi/mbusprot/CMakeLists.txt
index ce5294a7470..43c1da32502 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/CMakeLists.txt
+++ b/storageapi/src/vespa/storageapi/mbusprot/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
find_package(Protobuf REQUIRED)
PROTOBUF_GENERATE_CPP(storageapi_PROTOBUF_SRCS storageapi_PROTOBUF_HDRS
diff --git a/storageapi/src/vespa/storageapi/mbusprot/oldreturncodemapper.h b/storageapi/src/vespa/storageapi/mbusprot/oldreturncodemapper.h
index c04f200920a..40e09f23697 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/oldreturncodemapper.h
+++ b/storageapi/src/vespa/storageapi/mbusprot/oldreturncodemapper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \brief Maps return code values used between 4.2 and 5.0
*/
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protobuf/inspect.proto b/storageapi/src/vespa/storageapi/mbusprot/protobuf/inspect.proto
index 1bf833e4bf6..c3f4b1263a1 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protobuf/inspect.proto
+++ b/storageapi/src/vespa/storageapi/mbusprot/protobuf/inspect.proto
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
syntax = "proto3";
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protobuf_includes.h b/storageapi/src/vespa/storageapi/mbusprot/protobuf_includes.h
index 289e5dc355c..f5111ae8061 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protobuf_includes.h
+++ b/storageapi/src/vespa/storageapi/mbusprot/protobuf_includes.h
@@ -8,9 +8,9 @@
#pragma GCC diagnostic ignored "-Wsuggest-override"
#endif
-#include "feed.pb.h"
-#include "inspect.pb.h"
-#include "visiting.pb.h"
-#include "maintenance.pb.h"
+#include <vespa/storageapi/mbusprot/feed.pb.h>
+#include <vespa/storageapi/mbusprot/inspect.pb.h>
+#include <vespa/storageapi/mbusprot/visiting.pb.h>
+#include <vespa/storageapi/mbusprot/maintenance.pb.h>
#pragma GCC diagnostic pop
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.cpp b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.cpp
index a53bd415c8e..4614659c458 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "protocolserialization4_2.h"
#include "serializationhelper.h"
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.h b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.h
index 569ff99c11f..653e9ded85a 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.h
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/bucket/bucket.h>
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp
index c57b991eb36..1bea0ea74c9 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "protocolserialization4_2.h"
#include "oldreturncodemapper.h"
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.h b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.h
index 3ae1770f3c2..b8a20e9e401 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.h
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "legacyprotocolserialization.h"
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp
index 61a35a98f1b..cc7363af7bc 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "protocolserialization5_0.h"
#include "serializationhelper.h"
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.h b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.h
index 8d38db89a08..8de2edab17f 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.h
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "protocolserialization4_2.h"
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp
index b289c1661a0..97ceceac33d 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "protocolserialization5_1.h"
#include "serializationhelper.h"
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.h b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.h
index b46257a2182..bfad492e653 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.h
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "protocolserialization5_0.h"
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_2.cpp b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_2.cpp
index ee577881d82..10aa9d69fbc 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_2.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_2.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// @author Vegard Sjonfjell
#include "protocolserialization5_2.h"
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_2.h b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_2.h
index 50200edcbcf..e56b9942fa5 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_2.h
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_2.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// @author Vegard Sjonfjell
#pragma once
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization6_0.cpp b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization6_0.cpp
index cd66928877c..799aff8f8b3 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization6_0.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization6_0.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "protocolserialization6_0.h"
#include "serializationhelper.h"
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization6_0.h b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization6_0.h
index efce45ce844..5467cf6c5d2 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization6_0.h
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization6_0.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storageapi/src/vespa/storageapi/mbusprot/serializationhelper.h b/storageapi/src/vespa/storageapi/mbusprot/serializationhelper.h
index 24cc3e4371d..457a6178704 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/serializationhelper.h
+++ b/storageapi/src/vespa/storageapi/mbusprot/serializationhelper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/fastos/types.h>
diff --git a/storageapi/src/vespa/storageapi/mbusprot/storagecommand.cpp b/storageapi/src/vespa/storageapi/mbusprot/storagecommand.cpp
index 8d97efafde6..34fd0992adb 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/storagecommand.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/storagecommand.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "storagecommand.h"
namespace storage::mbusprot {
diff --git a/storageapi/src/vespa/storageapi/mbusprot/storagecommand.h b/storageapi/src/vespa/storageapi/mbusprot/storagecommand.h
index ef1d5082a04..e65c0295e31 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/storagecommand.h
+++ b/storageapi/src/vespa/storageapi/mbusprot/storagecommand.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "storagemessage.h"
diff --git a/storageapi/src/vespa/storageapi/mbusprot/storagemessage.h b/storageapi/src/vespa/storageapi/mbusprot/storagemessage.h
index edeab31ec8a..61323222b89 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/storagemessage.h
+++ b/storageapi/src/vespa/storageapi/mbusprot/storagemessage.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storageapi/messageapi/storagemessage.h>
diff --git a/storageapi/src/vespa/storageapi/mbusprot/storageprotocol.cpp b/storageapi/src/vespa/storageapi/mbusprot/storageprotocol.cpp
index f6e68b3dd04..3cf54860f7c 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/storageprotocol.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/storageprotocol.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "storageprotocol.h"
#include "serializationhelper.h"
#include "storagecommand.h"
diff --git a/storageapi/src/vespa/storageapi/mbusprot/storageprotocol.h b/storageapi/src/vespa/storageapi/mbusprot/storageprotocol.h
index ad9ee908424..3f36ac42117 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/storageprotocol.h
+++ b/storageapi/src/vespa/storageapi/mbusprot/storageprotocol.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "protocolserialization5_2.h"
diff --git a/storageapi/src/vespa/storageapi/mbusprot/storagereply.cpp b/storageapi/src/vespa/storageapi/mbusprot/storagereply.cpp
index 596af6a79d4..1db6912dd33 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/storagereply.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/storagereply.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "storagereply.h"
#include "storagecommand.h"
diff --git a/storageapi/src/vespa/storageapi/mbusprot/storagereply.h b/storageapi/src/vespa/storageapi/mbusprot/storagereply.h
index fc0425369d1..538b7caa678 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/storagereply.h
+++ b/storageapi/src/vespa/storageapi/mbusprot/storagereply.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "storagemessage.h"
diff --git a/storageapi/src/vespa/storageapi/message/CMakeLists.txt b/storageapi/src/vespa/storageapi/message/CMakeLists.txt
index cde9183482f..2a761921dff 100644
--- a/storageapi/src/vespa/storageapi/message/CMakeLists.txt
+++ b/storageapi/src/vespa/storageapi/message/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storageapi_message OBJECT
SOURCES
datagram.cpp
diff --git a/storageapi/src/vespa/storageapi/message/bucket.cpp b/storageapi/src/vespa/storageapi/message/bucket.cpp
index 0f03c63ca93..867cfccfaf9 100644
--- a/storageapi/src/vespa/storageapi/message/bucket.cpp
+++ b/storageapi/src/vespa/storageapi/message/bucket.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucket.h"
#include <vespa/document/fieldvalue/document.h>
diff --git a/storageapi/src/vespa/storageapi/message/bucket.h b/storageapi/src/vespa/storageapi/message/bucket.h
index 98445745753..c24ed55d7a8 100644
--- a/storageapi/src/vespa/storageapi/message/bucket.h
+++ b/storageapi/src/vespa/storageapi/message/bucket.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @file bucketinfo.h
*
diff --git a/storageapi/src/vespa/storageapi/message/bucketsplitting.cpp b/storageapi/src/vespa/storageapi/message/bucketsplitting.cpp
index 60c338d4d61..784ba6edbd1 100644
--- a/storageapi/src/vespa/storageapi/message/bucketsplitting.cpp
+++ b/storageapi/src/vespa/storageapi/message/bucketsplitting.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketsplitting.h"
#include <ostream>
diff --git a/storageapi/src/vespa/storageapi/message/bucketsplitting.h b/storageapi/src/vespa/storageapi/message/bucketsplitting.h
index 66ebae6497c..584cdfd5638 100644
--- a/storageapi/src/vespa/storageapi/message/bucketsplitting.h
+++ b/storageapi/src/vespa/storageapi/message/bucketsplitting.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storageapi/buckets/bucketinfo.h>
diff --git a/storageapi/src/vespa/storageapi/message/datagram.cpp b/storageapi/src/vespa/storageapi/message/datagram.cpp
index 3376761ee41..546e0edecc1 100644
--- a/storageapi/src/vespa/storageapi/message/datagram.cpp
+++ b/storageapi/src/vespa/storageapi/message/datagram.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "datagram.h"
#include <ostream>
diff --git a/storageapi/src/vespa/storageapi/message/datagram.h b/storageapi/src/vespa/storageapi/message/datagram.h
index 0c221a3270a..e0f5a9f7b30 100644
--- a/storageapi/src/vespa/storageapi/message/datagram.h
+++ b/storageapi/src/vespa/storageapi/message/datagram.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "visitor.h"
diff --git a/storageapi/src/vespa/storageapi/message/documentsummary.cpp b/storageapi/src/vespa/storageapi/message/documentsummary.cpp
index 1d81c6a4c16..6909b4d223c 100644
--- a/storageapi/src/vespa/storageapi/message/documentsummary.cpp
+++ b/storageapi/src/vespa/storageapi/message/documentsummary.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentsummary.h"
#include <ostream>
diff --git a/storageapi/src/vespa/storageapi/message/documentsummary.h b/storageapi/src/vespa/storageapi/message/documentsummary.h
index 1cf24d6a4cb..5e2c1af3cfd 100644
--- a/storageapi/src/vespa/storageapi/message/documentsummary.h
+++ b/storageapi/src/vespa/storageapi/message/documentsummary.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "visitor.h"
diff --git a/storageapi/src/vespa/storageapi/message/internal.cpp b/storageapi/src/vespa/storageapi/message/internal.cpp
index bb09a5c00c7..5e1daaaf3be 100644
--- a/storageapi/src/vespa/storageapi/message/internal.cpp
+++ b/storageapi/src/vespa/storageapi/message/internal.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "internal.h"
#include <ostream>
diff --git a/storageapi/src/vespa/storageapi/message/internal.h b/storageapi/src/vespa/storageapi/message/internal.h
index af50abba005..e0fee3e5494 100644
--- a/storageapi/src/vespa/storageapi/message/internal.h
+++ b/storageapi/src/vespa/storageapi/message/internal.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @file internal.h
*
diff --git a/storageapi/src/vespa/storageapi/message/persistence.cpp b/storageapi/src/vespa/storageapi/message/persistence.cpp
index b877a7f29db..41a53449b67 100644
--- a/storageapi/src/vespa/storageapi/message/persistence.cpp
+++ b/storageapi/src/vespa/storageapi/message/persistence.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "persistence.h"
#include <vespa/document/fieldvalue/document.h>
diff --git a/storageapi/src/vespa/storageapi/message/persistence.h b/storageapi/src/vespa/storageapi/message/persistence.h
index 309093d64e1..1d8cfd9d277 100644
--- a/storageapi/src/vespa/storageapi/message/persistence.h
+++ b/storageapi/src/vespa/storageapi/message/persistence.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @file persistence.h
*
diff --git a/storageapi/src/vespa/storageapi/message/queryresult.cpp b/storageapi/src/vespa/storageapi/message/queryresult.cpp
index bf81083b954..b5d29cf4e02 100644
--- a/storageapi/src/vespa/storageapi/message/queryresult.cpp
+++ b/storageapi/src/vespa/storageapi/message/queryresult.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "queryresult.h"
#include <ostream>
diff --git a/storageapi/src/vespa/storageapi/message/queryresult.h b/storageapi/src/vespa/storageapi/message/queryresult.h
index 0e30a3addf8..c3bbbdc47ce 100644
--- a/storageapi/src/vespa/storageapi/message/queryresult.h
+++ b/storageapi/src/vespa/storageapi/message/queryresult.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "visitor.h"
diff --git a/storageapi/src/vespa/storageapi/message/removelocation.cpp b/storageapi/src/vespa/storageapi/message/removelocation.cpp
index 49c9d22f5ee..7b7ed894b2c 100644
--- a/storageapi/src/vespa/storageapi/message/removelocation.cpp
+++ b/storageapi/src/vespa/storageapi/message/removelocation.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "removelocation.h"
#include <ostream>
diff --git a/storageapi/src/vespa/storageapi/message/removelocation.h b/storageapi/src/vespa/storageapi/message/removelocation.h
index 812cc8c413b..276b090cc57 100644
--- a/storageapi/src/vespa/storageapi/message/removelocation.h
+++ b/storageapi/src/vespa/storageapi/message/removelocation.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/storageapi/defs.h>
diff --git a/storageapi/src/vespa/storageapi/message/searchresult.cpp b/storageapi/src/vespa/storageapi/message/searchresult.cpp
index 4299109e6b5..b2cf04b0410 100644
--- a/storageapi/src/vespa/storageapi/message/searchresult.cpp
+++ b/storageapi/src/vespa/storageapi/message/searchresult.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "searchresult.h"
#include <ostream>
diff --git a/storageapi/src/vespa/storageapi/message/searchresult.h b/storageapi/src/vespa/storageapi/message/searchresult.h
index 466b60cc0d7..4795876102d 100644
--- a/storageapi/src/vespa/storageapi/message/searchresult.h
+++ b/storageapi/src/vespa/storageapi/message/searchresult.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "visitor.h"
diff --git a/storageapi/src/vespa/storageapi/message/stat.cpp b/storageapi/src/vespa/storageapi/message/stat.cpp
index 8d47b7703dc..3b97f4f5541 100644
--- a/storageapi/src/vespa/storageapi/message/stat.cpp
+++ b/storageapi/src/vespa/storageapi/message/stat.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "stat.h"
#include <ostream>
diff --git a/storageapi/src/vespa/storageapi/message/stat.h b/storageapi/src/vespa/storageapi/message/stat.h
index e25cb4596c9..0797ae43799 100644
--- a/storageapi/src/vespa/storageapi/message/stat.h
+++ b/storageapi/src/vespa/storageapi/message/stat.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storageapi/src/vespa/storageapi/message/state.cpp b/storageapi/src/vespa/storageapi/message/state.cpp
index 071dba16b91..23bd766ac2a 100644
--- a/storageapi/src/vespa/storageapi/message/state.cpp
+++ b/storageapi/src/vespa/storageapi/message/state.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "state.h"
#include <vespa/storageapi/messageapi/storagemessage.h>
diff --git a/storageapi/src/vespa/storageapi/message/state.h b/storageapi/src/vespa/storageapi/message/state.h
index 91c4707e7c1..aa562c77ef9 100644
--- a/storageapi/src/vespa/storageapi/message/state.h
+++ b/storageapi/src/vespa/storageapi/message/state.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storageapi/src/vespa/storageapi/message/visitor.cpp b/storageapi/src/vespa/storageapi/message/visitor.cpp
index ec7fb1dc2d4..fb3274273ac 100644
--- a/storageapi/src/vespa/storageapi/message/visitor.cpp
+++ b/storageapi/src/vespa/storageapi/message/visitor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "visitor.h"
#include <vespa/document/fieldset/fieldsets.h>
diff --git a/storageapi/src/vespa/storageapi/message/visitor.h b/storageapi/src/vespa/storageapi/message/visitor.h
index 1313b275e95..e6835405768 100644
--- a/storageapi/src/vespa/storageapi/message/visitor.h
+++ b/storageapi/src/vespa/storageapi/message/visitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @file storageapi/message/visitor.h
*
diff --git a/storageapi/src/vespa/storageapi/messageapi/CMakeLists.txt b/storageapi/src/vespa/storageapi/messageapi/CMakeLists.txt
index fe6cb4df11a..6454bb1de7d 100644
--- a/storageapi/src/vespa/storageapi/messageapi/CMakeLists.txt
+++ b/storageapi/src/vespa/storageapi/messageapi/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storageapi_messageapi OBJECT
SOURCES
bucketcommand.cpp
diff --git a/storageapi/src/vespa/storageapi/messageapi/bucketcommand.cpp b/storageapi/src/vespa/storageapi/messageapi/bucketcommand.cpp
index 5c041649484..c75267f560d 100644
--- a/storageapi/src/vespa/storageapi/messageapi/bucketcommand.cpp
+++ b/storageapi/src/vespa/storageapi/messageapi/bucketcommand.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketcommand.h"
#include <ostream>
diff --git a/storageapi/src/vespa/storageapi/messageapi/bucketcommand.h b/storageapi/src/vespa/storageapi/messageapi/bucketcommand.h
index a308c23d047..605653681b5 100644
--- a/storageapi/src/vespa/storageapi/messageapi/bucketcommand.h
+++ b/storageapi/src/vespa/storageapi/messageapi/bucketcommand.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::api::BucketCommand
* @ingroup messageapi
diff --git a/storageapi/src/vespa/storageapi/messageapi/bucketinfocommand.cpp b/storageapi/src/vespa/storageapi/messageapi/bucketinfocommand.cpp
index 914ce13b496..8d5ad85b8aa 100644
--- a/storageapi/src/vespa/storageapi/messageapi/bucketinfocommand.cpp
+++ b/storageapi/src/vespa/storageapi/messageapi/bucketinfocommand.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketinfocommand.h"
#include <ostream>
diff --git a/storageapi/src/vespa/storageapi/messageapi/bucketinfocommand.h b/storageapi/src/vespa/storageapi/messageapi/bucketinfocommand.h
index 814ae33bfe3..0f6627328a9 100644
--- a/storageapi/src/vespa/storageapi/messageapi/bucketinfocommand.h
+++ b/storageapi/src/vespa/storageapi/messageapi/bucketinfocommand.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::api::BucketInfoCommand
* @ingroup messageapi
diff --git a/storageapi/src/vespa/storageapi/messageapi/bucketinforeply.cpp b/storageapi/src/vespa/storageapi/messageapi/bucketinforeply.cpp
index 3f64a133b5f..6eb5f96e888 100644
--- a/storageapi/src/vespa/storageapi/messageapi/bucketinforeply.cpp
+++ b/storageapi/src/vespa/storageapi/messageapi/bucketinforeply.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketinforeply.h"
#include <ostream>
diff --git a/storageapi/src/vespa/storageapi/messageapi/bucketinforeply.h b/storageapi/src/vespa/storageapi/messageapi/bucketinforeply.h
index a9f206787cb..961e63a7ac8 100644
--- a/storageapi/src/vespa/storageapi/messageapi/bucketinforeply.h
+++ b/storageapi/src/vespa/storageapi/messageapi/bucketinforeply.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::api::BucketInfoReply
* @ingroup messageapi
diff --git a/storageapi/src/vespa/storageapi/messageapi/bucketreply.cpp b/storageapi/src/vespa/storageapi/messageapi/bucketreply.cpp
index 895b6dcef24..08b5effbd11 100644
--- a/storageapi/src/vespa/storageapi/messageapi/bucketreply.cpp
+++ b/storageapi/src/vespa/storageapi/messageapi/bucketreply.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bucketreply.h"
#include "bucketcommand.h"
diff --git a/storageapi/src/vespa/storageapi/messageapi/bucketreply.h b/storageapi/src/vespa/storageapi/messageapi/bucketreply.h
index 7a00befc913..e7ded37c14d 100644
--- a/storageapi/src/vespa/storageapi/messageapi/bucketreply.h
+++ b/storageapi/src/vespa/storageapi/messageapi/bucketreply.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::api::BucketReply
* @ingroup messageapi
diff --git a/storageapi/src/vespa/storageapi/messageapi/maintenancecommand.cpp b/storageapi/src/vespa/storageapi/messageapi/maintenancecommand.cpp
index 3ec7c61da67..91551be0987 100644
--- a/storageapi/src/vespa/storageapi/messageapi/maintenancecommand.cpp
+++ b/storageapi/src/vespa/storageapi/messageapi/maintenancecommand.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "maintenancecommand.h"
diff --git a/storageapi/src/vespa/storageapi/messageapi/maintenancecommand.h b/storageapi/src/vespa/storageapi/messageapi/maintenancecommand.h
index 1b149780c9d..6bb36d0d32f 100644
--- a/storageapi/src/vespa/storageapi/messageapi/maintenancecommand.h
+++ b/storageapi/src/vespa/storageapi/messageapi/maintenancecommand.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "bucketinfocommand.h"
diff --git a/storageapi/src/vespa/storageapi/messageapi/messagehandler.h b/storageapi/src/vespa/storageapi/messageapi/messagehandler.h
index 17b3413b59f..9ba8542e9db 100644
--- a/storageapi/src/vespa/storageapi/messageapi/messagehandler.h
+++ b/storageapi/src/vespa/storageapi/messageapi/messagehandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::api::MessageHandler
* @ingroup messageapi
diff --git a/storageapi/src/vespa/storageapi/messageapi/returncode.cpp b/storageapi/src/vespa/storageapi/messageapi/returncode.cpp
index e2184e19a33..ef587968515 100644
--- a/storageapi/src/vespa/storageapi/messageapi/returncode.cpp
+++ b/storageapi/src/vespa/storageapi/messageapi/returncode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "returncode.h"
#include <ostream>
diff --git a/storageapi/src/vespa/storageapi/messageapi/returncode.h b/storageapi/src/vespa/storageapi/messageapi/returncode.h
index 478aa455c85..f60cbe2b840 100644
--- a/storageapi/src/vespa/storageapi/messageapi/returncode.h
+++ b/storageapi/src/vespa/storageapi/messageapi/returncode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::api::ReturnCode
* @ingroup messageapi
diff --git a/storageapi/src/vespa/storageapi/messageapi/storagecommand.cpp b/storageapi/src/vespa/storageapi/messageapi/storagecommand.cpp
index 397c869f4fb..1e797ba4792 100644
--- a/storageapi/src/vespa/storageapi/messageapi/storagecommand.cpp
+++ b/storageapi/src/vespa/storageapi/messageapi/storagecommand.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "storagecommand.h"
#include <vespa/vespalib/util/exceptions.h>
diff --git a/storageapi/src/vespa/storageapi/messageapi/storagecommand.h b/storageapi/src/vespa/storageapi/messageapi/storagecommand.h
index bd55ee57a8f..b4157c7860a 100644
--- a/storageapi/src/vespa/storageapi/messageapi/storagecommand.h
+++ b/storageapi/src/vespa/storageapi/messageapi/storagecommand.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::api::StorageCommand
* @ingroup messageapi
diff --git a/storageapi/src/vespa/storageapi/messageapi/storagemessage.cpp b/storageapi/src/vespa/storageapi/messageapi/storagemessage.cpp
index 892e7199cf3..db5c86af989 100644
--- a/storageapi/src/vespa/storageapi/messageapi/storagemessage.cpp
+++ b/storageapi/src/vespa/storageapi/messageapi/storagemessage.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "storagemessage.h"
#include <vespa/messagebus/routing/verbatimdirective.h>
diff --git a/storageapi/src/vespa/storageapi/messageapi/storagemessage.h b/storageapi/src/vespa/storageapi/messageapi/storagemessage.h
index 610e7e179b4..71567192bd9 100644
--- a/storageapi/src/vespa/storageapi/messageapi/storagemessage.h
+++ b/storageapi/src/vespa/storageapi/messageapi/storagemessage.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::api::StorageMessage
diff --git a/storageapi/src/vespa/storageapi/messageapi/storagereply.cpp b/storageapi/src/vespa/storageapi/messageapi/storagereply.cpp
index b5cbd3eae54..a6fefe57e08 100644
--- a/storageapi/src/vespa/storageapi/messageapi/storagereply.cpp
+++ b/storageapi/src/vespa/storageapi/messageapi/storagereply.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "storagereply.h"
#include "storagecommand.h"
diff --git a/storageapi/src/vespa/storageapi/messageapi/storagereply.h b/storageapi/src/vespa/storageapi/messageapi/storagereply.h
index e423e3b5bf9..9128617096d 100644
--- a/storageapi/src/vespa/storageapi/messageapi/storagereply.h
+++ b/storageapi/src/vespa/storageapi/messageapi/storagereply.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::api::StorageReply
* @ingroup messageapi
diff --git a/storageframework/CMakeLists.txt b/storageframework/CMakeLists.txt
index db6a14d0386..b6e3855e96d 100644
--- a/storageframework/CMakeLists.txt
+++ b/storageframework/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/storageframework/src/tests/CMakeLists.txt b/storageframework/src/tests/CMakeLists.txt
index 9e3a7fa1707..fdda595125a 100644
--- a/storageframework/src/tests/CMakeLists.txt
+++ b/storageframework/src/tests/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Runner for unit tests written in gtest.
# NOTE: All new test classes should be added here.
diff --git a/storageframework/src/tests/clock/CMakeLists.txt b/storageframework/src/tests/clock/CMakeLists.txt
index 1eb2a54776c..46015e48cb2 100644
--- a/storageframework/src/tests/clock/CMakeLists.txt
+++ b/storageframework/src/tests/clock/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storageframework_testclock
SOURCES
timetest.cpp
diff --git a/storageframework/src/tests/clock/timetest.cpp b/storageframework/src/tests/clock/timetest.cpp
index 1bbd075ffb2..e1270156aa0 100644
--- a/storageframework/src/tests/clock/timetest.cpp
+++ b/storageframework/src/tests/clock/timetest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storageframework/generic/clock/time.h>
#include <vespa/storageframework/defaultimplementation/clock/fakeclock.h>
diff --git a/storageframework/src/tests/thread/CMakeLists.txt b/storageframework/src/tests/thread/CMakeLists.txt
index 4eba6eaf68f..d50f5933c51 100644
--- a/storageframework/src/tests/thread/CMakeLists.txt
+++ b/storageframework/src/tests/thread/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storageframework_testthread
SOURCES
tickingthreadtest.cpp
diff --git a/storageframework/src/tests/thread/taskthreadtest.cpp b/storageframework/src/tests/thread/taskthreadtest.cpp
index 5d729190841..b7d7de3239e 100644
--- a/storageframework/src/tests/thread/taskthreadtest.cpp
+++ b/storageframework/src/tests/thread/taskthreadtest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storageframework/generic/thread/taskthread.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/storageframework/src/tests/thread/tickingthreadtest.cpp b/storageframework/src/tests/thread/tickingthreadtest.cpp
index b877f08474d..4d6ce76a676 100644
--- a/storageframework/src/tests/thread/tickingthreadtest.cpp
+++ b/storageframework/src/tests/thread/tickingthreadtest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/storageframework/defaultimplementation/clock/realclock.h>
#include <vespa/storageframework/defaultimplementation/component/testcomponentregister.h>
diff --git a/storageframework/src/vespa/storageframework/CMakeLists.txt b/storageframework/src/vespa/storageframework/CMakeLists.txt
index c431ee8d5fc..fcc858ee1eb 100644
--- a/storageframework/src/vespa/storageframework/CMakeLists.txt
+++ b/storageframework/src/vespa/storageframework/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storageframework INTERFACE
SOURCES
INSTALL lib64
diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/CMakeLists.txt b/storageframework/src/vespa/storageframework/defaultimplementation/CMakeLists.txt
index ea6a7e15543..b10bb014c0c 100644
--- a/storageframework/src/vespa/storageframework/defaultimplementation/CMakeLists.txt
+++ b/storageframework/src/vespa/storageframework/defaultimplementation/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storageframework_defaultimplementation
SOURCES
$<TARGET_OBJECTS:storageframework_clockimpl>
diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/clock/CMakeLists.txt b/storageframework/src/vespa/storageframework/defaultimplementation/clock/CMakeLists.txt
index 33c70b98dfe..9e22f36e6c3 100644
--- a/storageframework/src/vespa/storageframework/defaultimplementation/clock/CMakeLists.txt
+++ b/storageframework/src/vespa/storageframework/defaultimplementation/clock/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storageframework_clockimpl OBJECT
SOURCES
realclock.cpp
diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/clock/fakeclock.cpp b/storageframework/src/vespa/storageframework/defaultimplementation/clock/fakeclock.cpp
index e29b2392d92..d02cecd79bb 100644
--- a/storageframework/src/vespa/storageframework/defaultimplementation/clock/fakeclock.cpp
+++ b/storageframework/src/vespa/storageframework/defaultimplementation/clock/fakeclock.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fakeclock.h"
namespace storage {
diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/clock/fakeclock.h b/storageframework/src/vespa/storageframework/defaultimplementation/clock/fakeclock.h
index 24132f710fd..f4cdcf2b8ce 100644
--- a/storageframework/src/vespa/storageframework/defaultimplementation/clock/fakeclock.h
+++ b/storageframework/src/vespa/storageframework/defaultimplementation/clock/fakeclock.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::framework::FakeClock
* \ingroup test
diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/clock/realclock.cpp b/storageframework/src/vespa/storageframework/defaultimplementation/clock/realclock.cpp
index 810eced1b3e..0303481feb5 100644
--- a/storageframework/src/vespa/storageframework/defaultimplementation/clock/realclock.cpp
+++ b/storageframework/src/vespa/storageframework/defaultimplementation/clock/realclock.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "realclock.h"
#include <sys/time.h>
diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/clock/realclock.h b/storageframework/src/vespa/storageframework/defaultimplementation/clock/realclock.h
index d0e04f3f449..a4b80a990c9 100644
--- a/storageframework/src/vespa/storageframework/defaultimplementation/clock/realclock.h
+++ b/storageframework/src/vespa/storageframework/defaultimplementation/clock/realclock.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::RealClock
* \ingroup frameworkimpl
diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/component/CMakeLists.txt b/storageframework/src/vespa/storageframework/defaultimplementation/component/CMakeLists.txt
index 3d1af0db312..5181d709dc3 100644
--- a/storageframework/src/vespa/storageframework/defaultimplementation/component/CMakeLists.txt
+++ b/storageframework/src/vespa/storageframework/defaultimplementation/component/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storageframework_componentimpl OBJECT
SOURCES
componentregisterimpl.cpp
diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.cpp b/storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.cpp
index ec73150b3f2..0da02b15a11 100644
--- a/storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.cpp
+++ b/storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "componentregisterimpl.h"
#include <vespa/storageframework/storageframework.h>
diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.h b/storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.h
index c7b74ec631a..6cfae8086fc 100644
--- a/storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.h
+++ b/storageframework/src/vespa/storageframework/defaultimplementation/component/componentregisterimpl.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::ComponentRegisterImpl
* \ingroup component
diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/component/testcomponentregister.cpp b/storageframework/src/vespa/storageframework/defaultimplementation/component/testcomponentregister.cpp
index 5c8e70f2773..945e264aaea 100644
--- a/storageframework/src/vespa/storageframework/defaultimplementation/component/testcomponentregister.cpp
+++ b/storageframework/src/vespa/storageframework/defaultimplementation/component/testcomponentregister.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "testcomponentregister.h"
#include <cassert>
diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/component/testcomponentregister.h b/storageframework/src/vespa/storageframework/defaultimplementation/component/testcomponentregister.h
index 4983d5dcdfc..bd4afa6c9ad 100644
--- a/storageframework/src/vespa/storageframework/defaultimplementation/component/testcomponentregister.h
+++ b/storageframework/src/vespa/storageframework/defaultimplementation/component/testcomponentregister.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::TestComponentRegister
* \ingroup component
diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/thread/CMakeLists.txt b/storageframework/src/vespa/storageframework/defaultimplementation/thread/CMakeLists.txt
index ba7fb36c19a..950bc527ece 100644
--- a/storageframework/src/vespa/storageframework/defaultimplementation/thread/CMakeLists.txt
+++ b/storageframework/src/vespa/storageframework/defaultimplementation/thread/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storageframework_threadimpl OBJECT
SOURCES
threadimpl.cpp
diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/thread/threadimpl.cpp b/storageframework/src/vespa/storageframework/defaultimplementation/thread/threadimpl.cpp
index 32c14a2e6a2..f5deb25f983 100644
--- a/storageframework/src/vespa/storageframework/defaultimplementation/thread/threadimpl.cpp
+++ b/storageframework/src/vespa/storageframework/defaultimplementation/thread/threadimpl.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "threadimpl.h"
#include "threadpoolimpl.h"
diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/thread/threadimpl.h b/storageframework/src/vespa/storageframework/defaultimplementation/thread/threadimpl.h
index a5331ceffd1..3a24b79bda8 100644
--- a/storageframework/src/vespa/storageframework/defaultimplementation/thread/threadimpl.h
+++ b/storageframework/src/vespa/storageframework/defaultimplementation/thread/threadimpl.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/thread/threadpoolimpl.cpp b/storageframework/src/vespa/storageframework/defaultimplementation/thread/threadpoolimpl.cpp
index e9466c4c3de..7846c917631 100644
--- a/storageframework/src/vespa/storageframework/defaultimplementation/thread/threadpoolimpl.cpp
+++ b/storageframework/src/vespa/storageframework/defaultimplementation/thread/threadpoolimpl.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "threadpoolimpl.h"
#include "threadimpl.h"
diff --git a/storageframework/src/vespa/storageframework/defaultimplementation/thread/threadpoolimpl.h b/storageframework/src/vespa/storageframework/defaultimplementation/thread/threadpoolimpl.h
index 47e07b1c06e..dc80803b57f 100644
--- a/storageframework/src/vespa/storageframework/defaultimplementation/thread/threadpoolimpl.h
+++ b/storageframework/src/vespa/storageframework/defaultimplementation/thread/threadpoolimpl.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/storageframework/src/vespa/storageframework/generic/CMakeLists.txt b/storageframework/src/vespa/storageframework/generic/CMakeLists.txt
index 5df9963304d..2507fc8cf41 100644
--- a/storageframework/src/vespa/storageframework/generic/CMakeLists.txt
+++ b/storageframework/src/vespa/storageframework/generic/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storageframework_generic
SOURCES
$<TARGET_OBJECTS:storageframework_component>
diff --git a/storageframework/src/vespa/storageframework/generic/clock/CMakeLists.txt b/storageframework/src/vespa/storageframework/generic/clock/CMakeLists.txt
index ee7bd2ebfa5..c95860f26fe 100644
--- a/storageframework/src/vespa/storageframework/generic/clock/CMakeLists.txt
+++ b/storageframework/src/vespa/storageframework/generic/clock/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storageframework_clock OBJECT
SOURCES
time.cpp
diff --git a/storageframework/src/vespa/storageframework/generic/clock/clock.h b/storageframework/src/vespa/storageframework/generic/clock/clock.h
index 8ff049428bc..becd17da8a8 100644
--- a/storageframework/src/vespa/storageframework/generic/clock/clock.h
+++ b/storageframework/src/vespa/storageframework/generic/clock/clock.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::framework::Clock
* \ingroup clock
diff --git a/storageframework/src/vespa/storageframework/generic/clock/time.cpp b/storageframework/src/vespa/storageframework/generic/clock/time.cpp
index 7ead5e50077..7bf3fca3835 100644
--- a/storageframework/src/vespa/storageframework/generic/clock/time.cpp
+++ b/storageframework/src/vespa/storageframework/generic/clock/time.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "time.hpp"
#include "clock.h"
diff --git a/storageframework/src/vespa/storageframework/generic/clock/time.h b/storageframework/src/vespa/storageframework/generic/clock/time.h
index 811c6cfceb0..9140ee67332 100644
--- a/storageframework/src/vespa/storageframework/generic/clock/time.h
+++ b/storageframework/src/vespa/storageframework/generic/clock/time.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <boost/operators.hpp>
diff --git a/storageframework/src/vespa/storageframework/generic/clock/time.hpp b/storageframework/src/vespa/storageframework/generic/clock/time.hpp
index 5553a7bb0f5..2cc3fb7be9d 100644
--- a/storageframework/src/vespa/storageframework/generic/clock/time.hpp
+++ b/storageframework/src/vespa/storageframework/generic/clock/time.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "time.h"
diff --git a/storageframework/src/vespa/storageframework/generic/clock/timer.h b/storageframework/src/vespa/storageframework/generic/clock/timer.h
index 4cf79e6a7f7..2642a6decc4 100644
--- a/storageframework/src/vespa/storageframework/generic/clock/timer.h
+++ b/storageframework/src/vespa/storageframework/generic/clock/timer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::framework::Timer
* \ingroup clock
diff --git a/storageframework/src/vespa/storageframework/generic/component/CMakeLists.txt b/storageframework/src/vespa/storageframework/generic/component/CMakeLists.txt
index c251c15699b..69e639b89db 100644
--- a/storageframework/src/vespa/storageframework/generic/component/CMakeLists.txt
+++ b/storageframework/src/vespa/storageframework/generic/component/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storageframework_component OBJECT
SOURCES
component.cpp
diff --git a/storageframework/src/vespa/storageframework/generic/component/component.cpp b/storageframework/src/vespa/storageframework/generic/component/component.cpp
index 44468bfead3..82ca40f780d 100644
--- a/storageframework/src/vespa/storageframework/generic/component/component.cpp
+++ b/storageframework/src/vespa/storageframework/generic/component/component.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "component.h"
#include "componentregister.h"
diff --git a/storageframework/src/vespa/storageframework/generic/component/component.h b/storageframework/src/vespa/storageframework/generic/component/component.h
index ae00f9e289f..b7d07243f73 100644
--- a/storageframework/src/vespa/storageframework/generic/component/component.h
+++ b/storageframework/src/vespa/storageframework/generic/component/component.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::framework::Component
* \ingroup component
diff --git a/storageframework/src/vespa/storageframework/generic/component/componentregister.h b/storageframework/src/vespa/storageframework/generic/component/componentregister.h
index 06d5c19866f..da6aa3b51de 100644
--- a/storageframework/src/vespa/storageframework/generic/component/componentregister.h
+++ b/storageframework/src/vespa/storageframework/generic/component/componentregister.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::framework::ComponentRegister
* \ingroup component
diff --git a/storageframework/src/vespa/storageframework/generic/component/managedcomponent.h b/storageframework/src/vespa/storageframework/generic/component/managedcomponent.h
index 94a44e1b2e8..4cd142420cd 100644
--- a/storageframework/src/vespa/storageframework/generic/component/managedcomponent.h
+++ b/storageframework/src/vespa/storageframework/generic/component/managedcomponent.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::framework::ManagedComponent
* \ingroup component
diff --git a/storageframework/src/vespa/storageframework/generic/metric/CMakeLists.txt b/storageframework/src/vespa/storageframework/generic/metric/CMakeLists.txt
index 698a26cbef8..5881159862e 100644
--- a/storageframework/src/vespa/storageframework/generic/metric/CMakeLists.txt
+++ b/storageframework/src/vespa/storageframework/generic/metric/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storageframework_metric INTERFACE
SOURCES
INSTALL lib64
diff --git a/storageframework/src/vespa/storageframework/generic/metric/metricregistrator.h b/storageframework/src/vespa/storageframework/generic/metric/metricregistrator.h
index 53988651cbc..1129bf29e45 100644
--- a/storageframework/src/vespa/storageframework/generic/metric/metricregistrator.h
+++ b/storageframework/src/vespa/storageframework/generic/metric/metricregistrator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::framework::MetricRegistrator
* \ingroup metric
diff --git a/storageframework/src/vespa/storageframework/generic/metric/metricupdatehook.h b/storageframework/src/vespa/storageframework/generic/metric/metricupdatehook.h
index 6292fe9a598..b45713cd0ce 100644
--- a/storageframework/src/vespa/storageframework/generic/metric/metricupdatehook.h
+++ b/storageframework/src/vespa/storageframework/generic/metric/metricupdatehook.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::framework::MetricUpdateHook
* \ingroup metric
diff --git a/storageframework/src/vespa/storageframework/generic/status/CMakeLists.txt b/storageframework/src/vespa/storageframework/generic/status/CMakeLists.txt
index dfcc1b7cab4..a629e632b78 100644
--- a/storageframework/src/vespa/storageframework/generic/status/CMakeLists.txt
+++ b/storageframework/src/vespa/storageframework/generic/status/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storageframework_status OBJECT
SOURCES
statusreporter.cpp
diff --git a/storageframework/src/vespa/storageframework/generic/status/htmlstatusreporter.cpp b/storageframework/src/vespa/storageframework/generic/status/htmlstatusreporter.cpp
index c195a83038e..9b7c4919403 100644
--- a/storageframework/src/vespa/storageframework/generic/status/htmlstatusreporter.cpp
+++ b/storageframework/src/vespa/storageframework/generic/status/htmlstatusreporter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "htmlstatusreporter.h"
diff --git a/storageframework/src/vespa/storageframework/generic/status/htmlstatusreporter.h b/storageframework/src/vespa/storageframework/generic/status/htmlstatusreporter.h
index de871e6a17c..4ffba20a3fa 100644
--- a/storageframework/src/vespa/storageframework/generic/status/htmlstatusreporter.h
+++ b/storageframework/src/vespa/storageframework/generic/status/htmlstatusreporter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::framework::HtmlStatusReporter
* \ingroup component
diff --git a/storageframework/src/vespa/storageframework/generic/status/httpurlpath.cpp b/storageframework/src/vespa/storageframework/generic/status/httpurlpath.cpp
index 10691d37b9e..b55b6dee06e 100644
--- a/storageframework/src/vespa/storageframework/generic/status/httpurlpath.cpp
+++ b/storageframework/src/vespa/storageframework/generic/status/httpurlpath.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "httpurlpath.h"
#include <vespa/vespalib/text/stringtokenizer.h>
diff --git a/storageframework/src/vespa/storageframework/generic/status/httpurlpath.h b/storageframework/src/vespa/storageframework/generic/status/httpurlpath.h
index 2b22c6a1063..4835365259f 100644
--- a/storageframework/src/vespa/storageframework/generic/status/httpurlpath.h
+++ b/storageframework/src/vespa/storageframework/generic/status/httpurlpath.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Utility class to parse the url-path part of an HTTP URL.
* Used by status module.
diff --git a/storageframework/src/vespa/storageframework/generic/status/statusreporter.cpp b/storageframework/src/vespa/storageframework/generic/status/statusreporter.cpp
index c7d025b060f..7314dddde7f 100644
--- a/storageframework/src/vespa/storageframework/generic/status/statusreporter.cpp
+++ b/storageframework/src/vespa/storageframework/generic/status/statusreporter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "statusreporter.h"
diff --git a/storageframework/src/vespa/storageframework/generic/status/statusreporter.h b/storageframework/src/vespa/storageframework/generic/status/statusreporter.h
index 8d58467a221..cc48bb841fd 100644
--- a/storageframework/src/vespa/storageframework/generic/status/statusreporter.h
+++ b/storageframework/src/vespa/storageframework/generic/status/statusreporter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::framework::StatusReporter
* \ingroup component
diff --git a/storageframework/src/vespa/storageframework/generic/status/statusreportermap.h b/storageframework/src/vespa/storageframework/generic/status/statusreportermap.h
index a92a3b86954..8d72215df49 100644
--- a/storageframework/src/vespa/storageframework/generic/status/statusreportermap.h
+++ b/storageframework/src/vespa/storageframework/generic/status/statusreportermap.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::framework::StatusReporterMap
* \ingroup status
diff --git a/storageframework/src/vespa/storageframework/generic/status/xmlstatusreporter.cpp b/storageframework/src/vespa/storageframework/generic/status/xmlstatusreporter.cpp
index 31b56e5330d..258a3ea53de 100644
--- a/storageframework/src/vespa/storageframework/generic/status/xmlstatusreporter.cpp
+++ b/storageframework/src/vespa/storageframework/generic/status/xmlstatusreporter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "xmlstatusreporter.h"
#include <cassert>
diff --git a/storageframework/src/vespa/storageframework/generic/status/xmlstatusreporter.h b/storageframework/src/vespa/storageframework/generic/status/xmlstatusreporter.h
index 36c6b87321a..eff5a44148e 100644
--- a/storageframework/src/vespa/storageframework/generic/status/xmlstatusreporter.h
+++ b/storageframework/src/vespa/storageframework/generic/status/xmlstatusreporter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::framework::XmlStatusReporter
* \ingroup component
diff --git a/storageframework/src/vespa/storageframework/generic/thread/CMakeLists.txt b/storageframework/src/vespa/storageframework/generic/thread/CMakeLists.txt
index 8facb8c1e04..a392725b771 100644
--- a/storageframework/src/vespa/storageframework/generic/thread/CMakeLists.txt
+++ b/storageframework/src/vespa/storageframework/generic/thread/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storageframework_thread OBJECT
SOURCES
thread.cpp
diff --git a/storageframework/src/vespa/storageframework/generic/thread/runnable.h b/storageframework/src/vespa/storageframework/generic/thread/runnable.h
index a2615694e7c..b1fd2eae237 100644
--- a/storageframework/src/vespa/storageframework/generic/thread/runnable.h
+++ b/storageframework/src/vespa/storageframework/generic/thread/runnable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::framework::Runnable
* \ingroup thread
diff --git a/storageframework/src/vespa/storageframework/generic/thread/taskthread.h b/storageframework/src/vespa/storageframework/generic/thread/taskthread.h
index 100147f6158..49f61fa0f13 100644
--- a/storageframework/src/vespa/storageframework/generic/thread/taskthread.h
+++ b/storageframework/src/vespa/storageframework/generic/thread/taskthread.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Implementation of ticking threads for performing prioritized tasks.
* Implements critical section and a prioritized queue for communication
diff --git a/storageframework/src/vespa/storageframework/generic/thread/thread.cpp b/storageframework/src/vespa/storageframework/generic/thread/thread.cpp
index ee92753a23c..388ac93a9b5 100644
--- a/storageframework/src/vespa/storageframework/generic/thread/thread.cpp
+++ b/storageframework/src/vespa/storageframework/generic/thread/thread.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "thread.h"
diff --git a/storageframework/src/vespa/storageframework/generic/thread/thread.h b/storageframework/src/vespa/storageframework/generic/thread/thread.h
index e37bba4c723..f11c1fbcf91 100644
--- a/storageframework/src/vespa/storageframework/generic/thread/thread.h
+++ b/storageframework/src/vespa/storageframework/generic/thread/thread.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::framework::Thread
* \ingroup thread
diff --git a/storageframework/src/vespa/storageframework/generic/thread/threadpool.cpp b/storageframework/src/vespa/storageframework/generic/thread/threadpool.cpp
index 208c849234c..29be5fb07a2 100644
--- a/storageframework/src/vespa/storageframework/generic/thread/threadpool.cpp
+++ b/storageframework/src/vespa/storageframework/generic/thread/threadpool.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "threadpool.h"
diff --git a/storageframework/src/vespa/storageframework/generic/thread/threadpool.h b/storageframework/src/vespa/storageframework/generic/thread/threadpool.h
index c21e5c8b1b8..7a8ff47f669 100644
--- a/storageframework/src/vespa/storageframework/generic/thread/threadpool.h
+++ b/storageframework/src/vespa/storageframework/generic/thread/threadpool.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::framework::ThreadPool
* \ingroup thread
diff --git a/storageframework/src/vespa/storageframework/generic/thread/tickingthread.cpp b/storageframework/src/vespa/storageframework/generic/thread/tickingthread.cpp
index 258306b6416..867247c1d68 100644
--- a/storageframework/src/vespa/storageframework/generic/thread/tickingthread.cpp
+++ b/storageframework/src/vespa/storageframework/generic/thread/tickingthread.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tickingthread.h"
#include "threadpool.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/storageframework/src/vespa/storageframework/generic/thread/tickingthread.h b/storageframework/src/vespa/storageframework/generic/thread/tickingthread.h
index 0649d914c75..1265ebd7203 100644
--- a/storageframework/src/vespa/storageframework/generic/thread/tickingthread.h
+++ b/storageframework/src/vespa/storageframework/generic/thread/tickingthread.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* This file contains a utility function to handle threads doing a lot of
* single ticks. It brings the following functionality:
@@ -78,6 +78,7 @@ struct ThreadLock {
struct TickingThreadPool : public ThreadLock {
using UP = std::unique_ptr<TickingThreadPool>;
+ // TODO STRIPE: Change waitTime default to 100ms when legacy mode is removed.
static TickingThreadPool::UP createDefault(
vespalib::stringref name,
vespalib::duration waitTime = 5ms,
diff --git a/storageframework/src/vespa/storageframework/storageframework.h b/storageframework/src/vespa/storageframework/storageframework.h
index 4ab36fa099f..12d4f504d30 100644
--- a/storageframework/src/vespa/storageframework/storageframework.h
+++ b/storageframework/src/vespa/storageframework/storageframework.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
*
* This file includes the most common parts used by the framework.
diff --git a/storageserver/CMakeLists.txt b/storageserver/CMakeLists.txt
index 32afe9c4ad3..628dc9ece3e 100644
--- a/storageserver/CMakeLists.txt
+++ b/storageserver/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/storageserver/src/apps/storaged/CMakeLists.txt b/storageserver/src/apps/storaged/CMakeLists.txt
index 2de4398f04c..3fb02b5d1b9 100644
--- a/storageserver/src/apps/storaged/CMakeLists.txt
+++ b/storageserver/src/apps/storaged/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(storageserver_storaged_app
SOURCES
storage.cpp
diff --git a/storageserver/src/apps/storaged/forcelink.cpp b/storageserver/src/apps/storaged/forcelink.cpp
index ede10f6e4ae..c2ec2b1fd24 100644
--- a/storageserver/src/apps/storaged/forcelink.cpp
+++ b/storageserver/src/apps/storaged/forcelink.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/forcelink.h>
#include <vespa/documentapi/documentapi.h>
diff --git a/storageserver/src/apps/storaged/forcelink.h b/storageserver/src/apps/storaged/forcelink.h
index feec862ca53..c0a4498dde8 100644
--- a/storageserver/src/apps/storaged/forcelink.h
+++ b/storageserver/src/apps/storaged/forcelink.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \file forcelink.h
*
diff --git a/storageserver/src/apps/storaged/storage.cpp b/storageserver/src/apps/storaged/storage.cpp
index 6fd672574c6..2c79ebf700b 100644
--- a/storageserver/src/apps/storaged/storage.cpp
+++ b/storageserver/src/apps/storaged/storage.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::StorageApp
* \ingroup serverapp
diff --git a/storageserver/src/tests/CMakeLists.txt b/storageserver/src/tests/CMakeLists.txt
index d12a07dacb5..2817130abed 100644
--- a/storageserver/src/tests/CMakeLists.txt
+++ b/storageserver/src/tests/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(storageserver_gtest_runner_app TEST
SOURCES
diff --git a/storageserver/src/tests/storageservertest.cpp b/storageserver/src/tests/storageservertest.cpp
index 363dc6240dd..a7fa0b03799 100644
--- a/storageserver/src/tests/storageservertest.cpp
+++ b/storageserver/src/tests/storageservertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <tests/testhelper.h>
#include <vespa/storage/storageserver/distributornode.h>
diff --git a/storageserver/src/tests/testhelper.cpp b/storageserver/src/tests/testhelper.cpp
index 39935770897..879645bdab3 100644
--- a/storageserver/src/tests/testhelper.cpp
+++ b/storageserver/src/tests/testhelper.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <tests/testhelper.h>
#include <vespa/vespalib/io/fileutil.h>
diff --git a/storageserver/src/tests/testhelper.h b/storageserver/src/tests/testhelper.h
index a0d5da20eb8..7b0cc855b59 100644
--- a/storageserver/src/tests/testhelper.h
+++ b/storageserver/src/tests/testhelper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <fstream>
diff --git a/storageserver/src/vespa/storageserver/app/CMakeLists.txt b/storageserver/src/vespa/storageserver/app/CMakeLists.txt
index 251fae8d572..2be219c508c 100644
--- a/storageserver/src/vespa/storageserver/app/CMakeLists.txt
+++ b/storageserver/src/vespa/storageserver/app/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(storageserver_storageapp STATIC
SOURCES
process.cpp
diff --git a/storageserver/src/vespa/storageserver/app/distributorprocess.cpp b/storageserver/src/vespa/storageserver/app/distributorprocess.cpp
index 45802df8866..ba13f2aeb91 100644
--- a/storageserver/src/vespa/storageserver/app/distributorprocess.cpp
+++ b/storageserver/src/vespa/storageserver/app/distributorprocess.cpp
@@ -1,10 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "distributorprocess.h"
#include <vespa/config/helper/configgetter.hpp>
#include <vespa/storage/common/bucket_stripe_utils.h>
#include <vespa/storage/common/i_storage_chain_builder.h>
#include <vespa/storage/common/storagelink.h>
+#include <thread>
#include <vespa/log/log.h>
LOG_SETUP(".process.distributor");
@@ -36,14 +37,19 @@ DistributorProcess::shutdown()
namespace {
uint32_t
-adjusted_num_distributor_stripes(uint32_t cfg_n_stripes)
+adjusted_num_distributor_stripes(int32_t cfg_n_stripes)
{
- uint32_t adjusted_n_stripes = storage::adjusted_num_stripes(cfg_n_stripes);
- if (adjusted_n_stripes != cfg_n_stripes) {
- LOG(warning, "Configured number of distributor stripes (%u) is not valid. Adjusting to a valid value (%u)",
- cfg_n_stripes, adjusted_n_stripes);
+ if (cfg_n_stripes <= 0) {
+ uint32_t cpu_cores = std::thread::hardware_concurrency();
+ return storage::tune_num_stripes_based_on_cpu_cores(cpu_cores);
+ } else {
+ uint32_t adjusted_n_stripes = storage::adjusted_num_stripes(cfg_n_stripes);
+ if (adjusted_n_stripes != static_cast<uint32_t>(cfg_n_stripes)) {
+ LOG(warning, "Configured number of distributor stripes (%d) is not valid. Adjusting to a valid value (%u)",
+ cfg_n_stripes, adjusted_n_stripes);
+ }
+ return adjusted_n_stripes;
}
- return adjusted_n_stripes;
}
}
diff --git a/storageserver/src/vespa/storageserver/app/distributorprocess.h b/storageserver/src/vespa/storageserver/app/distributorprocess.h
index f07082c0d21..678f131d275 100644
--- a/storageserver/src/vespa/storageserver/app/distributorprocess.h
+++ b/storageserver/src/vespa/storageserver/app/distributorprocess.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::DistributorProcess
*
diff --git a/storageserver/src/vespa/storageserver/app/dummyservicelayerprocess.cpp b/storageserver/src/vespa/storageserver/app/dummyservicelayerprocess.cpp
index 338ae45714e..9b4f058ea2b 100644
--- a/storageserver/src/vespa/storageserver/app/dummyservicelayerprocess.cpp
+++ b/storageserver/src/vespa/storageserver/app/dummyservicelayerprocess.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dummyservicelayerprocess.h"
diff --git a/storageserver/src/vespa/storageserver/app/dummyservicelayerprocess.h b/storageserver/src/vespa/storageserver/app/dummyservicelayerprocess.h
index dc4e3286d0e..197443816f6 100644
--- a/storageserver/src/vespa/storageserver/app/dummyservicelayerprocess.h
+++ b/storageserver/src/vespa/storageserver/app/dummyservicelayerprocess.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::DummyServiceLayerProcess
*
diff --git a/storageserver/src/vespa/storageserver/app/process.cpp b/storageserver/src/vespa/storageserver/app/process.cpp
index df5e8f4a10e..9ec1ed2bd10 100644
--- a/storageserver/src/vespa/storageserver/app/process.cpp
+++ b/storageserver/src/vespa/storageserver/app/process.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "process.h"
#include <vespa/document/repo/document_type_repo_factory.h>
diff --git a/storageserver/src/vespa/storageserver/app/process.h b/storageserver/src/vespa/storageserver/app/process.h
index a5c5b656677..5f22906896b 100644
--- a/storageserver/src/vespa/storageserver/app/process.h
+++ b/storageserver/src/vespa/storageserver/app/process.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::Process
*
diff --git a/storageserver/src/vespa/storageserver/app/servicelayerprocess.cpp b/storageserver/src/vespa/storageserver/app/servicelayerprocess.cpp
index 7c7816f33ac..e6af40a552d 100644
--- a/storageserver/src/vespa/storageserver/app/servicelayerprocess.cpp
+++ b/storageserver/src/vespa/storageserver/app/servicelayerprocess.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "servicelayerprocess.h"
#include <vespa/config/helper/configgetter.hpp>
diff --git a/storageserver/src/vespa/storageserver/app/servicelayerprocess.h b/storageserver/src/vespa/storageserver/app/servicelayerprocess.h
index 63776c02a52..f62db4c2fcf 100644
--- a/storageserver/src/vespa/storageserver/app/servicelayerprocess.h
+++ b/storageserver/src/vespa/storageserver/app/servicelayerprocess.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::ServiceLayerProcess
*
diff --git a/streamingvisitors/CMakeLists.txt b/streamingvisitors/CMakeLists.txt
index 819bf1b94f5..5f5e16fc6c3 100644
--- a/streamingvisitors/CMakeLists.txt
+++ b/streamingvisitors/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/streamingvisitors/doc/SearchVisitorProtocol.html b/streamingvisitors/doc/SearchVisitorProtocol.html
index aa2217444bf..b6277b1c715 100644
--- a/streamingvisitors/doc/SearchVisitorProtocol.html
+++ b/streamingvisitors/doc/SearchVisitorProtocol.html
@@ -1,5 +1,5 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<HTML>
<HEAD>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
diff --git a/streamingvisitors/src/tests/hitcollector/CMakeLists.txt b/streamingvisitors/src/tests/hitcollector/CMakeLists.txt
index 3316d032bd4..f25ab348265 100644
--- a/streamingvisitors/src/tests/hitcollector/CMakeLists.txt
+++ b/streamingvisitors/src/tests/hitcollector/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(streamingvisitors_hitcollector_test_app TEST
SOURCES
hitcollector_test.cpp
diff --git a/streamingvisitors/src/tests/hitcollector/hitcollector_test.cpp b/streamingvisitors/src/tests/hitcollector/hitcollector_test.cpp
index 087a3be86d3..c8e2bef1016 100644
--- a/streamingvisitors/src/tests/hitcollector/hitcollector_test.cpp
+++ b/streamingvisitors/src/tests/hitcollector/hitcollector_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/document/fieldvalue/fieldvalues.h>
diff --git a/streamingvisitors/src/tests/querywrapper/CMakeLists.txt b/streamingvisitors/src/tests/querywrapper/CMakeLists.txt
index 35c67d9ad21..7cae60e6a11 100644
--- a/streamingvisitors/src/tests/querywrapper/CMakeLists.txt
+++ b/streamingvisitors/src/tests/querywrapper/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(streamingvisitors_querywrapper_test_app TEST
SOURCES
querywrapper_test.cpp
diff --git a/streamingvisitors/src/tests/querywrapper/querywrapper_test.cpp b/streamingvisitors/src/tests/querywrapper/querywrapper_test.cpp
index 5357b8d8113..ff6bd4b2f87 100644
--- a/streamingvisitors/src/tests/querywrapper/querywrapper_test.cpp
+++ b/streamingvisitors/src/tests/querywrapper/querywrapper_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/query/tree/querybuilder.h>
diff --git a/streamingvisitors/src/tests/searchvisitor/CMakeLists.txt b/streamingvisitors/src/tests/searchvisitor/CMakeLists.txt
index 1833d2e68c0..fdbd60ce30a 100644
--- a/streamingvisitors/src/tests/searchvisitor/CMakeLists.txt
+++ b/streamingvisitors/src/tests/searchvisitor/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(streamingvisitors_searchvisitor_test_app TEST
SOURCES
searchvisitor_test.cpp
diff --git a/streamingvisitors/src/tests/searchvisitor/searchvisitor_test.cpp b/streamingvisitors/src/tests/searchvisitor/searchvisitor_test.cpp
index 216e02c5edd..b6244521a46 100644
--- a/streamingvisitors/src/tests/searchvisitor/searchvisitor_test.cpp
+++ b/streamingvisitors/src/tests/searchvisitor/searchvisitor_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/testdocrepo.h>
#include <vespa/document/repo/documenttyperepo.h>
diff --git a/streamingvisitors/src/vespa/searchvisitor/CMakeLists.txt b/streamingvisitors/src/vespa/searchvisitor/CMakeLists.txt
index 802ff035c4a..e8f85fc987e 100644
--- a/streamingvisitors/src/vespa/searchvisitor/CMakeLists.txt
+++ b/streamingvisitors/src/vespa/searchvisitor/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(streamingvisitors_searchvisitor
SOURCES
hitcollector.cpp
diff --git a/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp b/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp
index de8a6c707e5..d11659cfb77 100644
--- a/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp
+++ b/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "hitcollector.h"
#include <vespa/searchlib/fef/feature_resolver.h>
diff --git a/streamingvisitors/src/vespa/searchvisitor/hitcollector.h b/streamingvisitors/src/vespa/searchvisitor/hitcollector.h
index d032d99ec70..a7bfa5a51b1 100644
--- a/streamingvisitors/src/vespa/searchvisitor/hitcollector.h
+++ b/streamingvisitors/src/vespa/searchvisitor/hitcollector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/streamingvisitors/src/vespa/searchvisitor/indexenvironment.cpp b/streamingvisitors/src/vespa/searchvisitor/indexenvironment.cpp
index 481e8c37fbe..0131dc5639c 100644
--- a/streamingvisitors/src/vespa/searchvisitor/indexenvironment.cpp
+++ b/streamingvisitors/src/vespa/searchvisitor/indexenvironment.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "indexenvironment.h"
diff --git a/streamingvisitors/src/vespa/searchvisitor/indexenvironment.h b/streamingvisitors/src/vespa/searchvisitor/indexenvironment.h
index 7bc706f21ce..3bcf1cc43a5 100644
--- a/streamingvisitors/src/vespa/searchvisitor/indexenvironment.h
+++ b/streamingvisitors/src/vespa/searchvisitor/indexenvironment.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/streamingvisitors/src/vespa/searchvisitor/queryenvironment.cpp b/streamingvisitors/src/vespa/searchvisitor/queryenvironment.cpp
index 814ad69ff87..076b847b32e 100644
--- a/streamingvisitors/src/vespa/searchvisitor/queryenvironment.cpp
+++ b/streamingvisitors/src/vespa/searchvisitor/queryenvironment.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "queryenvironment.h"
#include <vespa/searchlib/common/geo_location.h>
diff --git a/streamingvisitors/src/vespa/searchvisitor/queryenvironment.h b/streamingvisitors/src/vespa/searchvisitor/queryenvironment.h
index c606ea7495e..a61cdc5ae58 100644
--- a/streamingvisitors/src/vespa/searchvisitor/queryenvironment.h
+++ b/streamingvisitors/src/vespa/searchvisitor/queryenvironment.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/streamingvisitors/src/vespa/searchvisitor/querytermdata.cpp b/streamingvisitors/src/vespa/searchvisitor/querytermdata.cpp
index 8ec285abfcb..52b5e4551e9 100644
--- a/streamingvisitors/src/vespa/searchvisitor/querytermdata.cpp
+++ b/streamingvisitors/src/vespa/searchvisitor/querytermdata.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "querytermdata.h"
diff --git a/streamingvisitors/src/vespa/searchvisitor/querytermdata.h b/streamingvisitors/src/vespa/searchvisitor/querytermdata.h
index cabfd5accc9..21328fc7beb 100644
--- a/streamingvisitors/src/vespa/searchvisitor/querytermdata.h
+++ b/streamingvisitors/src/vespa/searchvisitor/querytermdata.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/streamingvisitors/src/vespa/searchvisitor/querywrapper.cpp b/streamingvisitors/src/vespa/searchvisitor/querywrapper.cpp
index 6a3c381e16d..6a2f9f8f736 100644
--- a/streamingvisitors/src/vespa/searchvisitor/querywrapper.cpp
+++ b/streamingvisitors/src/vespa/searchvisitor/querywrapper.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "querywrapper.h"
diff --git a/streamingvisitors/src/vespa/searchvisitor/querywrapper.h b/streamingvisitors/src/vespa/searchvisitor/querywrapper.h
index e569010ffe7..5a277a12318 100644
--- a/streamingvisitors/src/vespa/searchvisitor/querywrapper.h
+++ b/streamingvisitors/src/vespa/searchvisitor/querywrapper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/streamingvisitors/src/vespa/searchvisitor/rankmanager.cpp b/streamingvisitors/src/vespa/searchvisitor/rankmanager.cpp
index 2c5f5eeb1b7..ed5d0a88bb1 100644
--- a/streamingvisitors/src/vespa/searchvisitor/rankmanager.cpp
+++ b/streamingvisitors/src/vespa/searchvisitor/rankmanager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rankmanager.h"
#include <vespa/searchlib/features/setup.h>
diff --git a/streamingvisitors/src/vespa/searchvisitor/rankmanager.h b/streamingvisitors/src/vespa/searchvisitor/rankmanager.h
index f408872d578..bdf839ab824 100644
--- a/streamingvisitors/src/vespa/searchvisitor/rankmanager.h
+++ b/streamingvisitors/src/vespa/searchvisitor/rankmanager.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp
index 2d3a9b17d33..ac74f7791db 100644
--- a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp
+++ b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "querytermdata.h"
#include "rankprocessor.h"
diff --git a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h
index 03a3f0cb338..3a2a28b0ee5 100644
--- a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h
+++ b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/streamingvisitors/src/vespa/searchvisitor/searchenvironment.cpp b/streamingvisitors/src/vespa/searchvisitor/searchenvironment.cpp
index 614d11aabfa..09018538f95 100644
--- a/streamingvisitors/src/vespa/searchvisitor/searchenvironment.cpp
+++ b/streamingvisitors/src/vespa/searchvisitor/searchenvironment.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "searchenvironment.h"
#include <vespa/vespalib/stllike/hash_map.hpp>
@@ -16,8 +16,8 @@ __thread SearchEnvironment::EnvMap * SearchEnvironment::_localEnvMap=0;
SearchEnvironment::Env::Env(const vespalib::string & muffens, const config::ConfigUri & configUri, Fast_NormalizeWordFolder & wf) :
_configId(configUri.getConfigId()),
_configurer(std::make_unique<config::SimpleConfigRetriever>(createKeySet(configUri.getConfigId()), configUri.getContext()), this),
- _vsmAdapter(new VSMAdapter(muffens, _configId, wf)),
- _rankManager(new RankManager(_vsmAdapter.get()))
+ _vsmAdapter(std::make_unique<VSMAdapter>(muffens, _configId, wf)),
+ _rankManager(std::make_unique<RankManager>(_vsmAdapter.get()))
{
_configurer.start();
diff --git a/streamingvisitors/src/vespa/searchvisitor/searchenvironment.h b/streamingvisitors/src/vespa/searchvisitor/searchenvironment.h
index 3dce03e9402..f08dd6052f1 100644
--- a/streamingvisitors/src/vespa/searchvisitor/searchenvironment.h
+++ b/streamingvisitors/src/vespa/searchvisitor/searchenvironment.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp
index 5e1e95b4681..cc6323c3053 100644
--- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp
+++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "querytermdata.h"
#include "searchenvironment.h"
@@ -180,7 +180,7 @@ SearchVisitor::SearchVisitor(StorageComponent& component,
_hitCount(0),
_hitsRejectedCount(0),
_query(),
- _queryResult(new documentapi::QueryResultMessage()),
+ _queryResult(std::make_unique<documentapi::QueryResultMessage>()),
_fieldSearcherMap(),
_docTypeMapping(),
_fieldSearchSpecMap(),
@@ -192,10 +192,10 @@ SearchVisitor::SearchVisitor(StorageComponent& component,
_groupingList(),
_attributeFields(),
_sortList(),
- _searchBuffer(new vsm::SearcherBuf()),
+ _searchBuffer(std::make_shared<vsm::SearcherBuf>()),
_tmpSortBuffer(256),
- _documentIdAttributeBacking(new search::SingleStringExtAttribute("[docid]") ),
- _rankAttributeBacking(new search::SingleFloatExtAttribute("[rank]") ),
+ _documentIdAttributeBacking(std::make_shared<search::SingleStringExtAttribute>("[docid]") ),
+ _rankAttributeBacking(std::make_shared<search::SingleFloatExtAttribute>("[rank]") ),
_documentIdAttribute(dynamic_cast<search::SingleStringExtAttribute &>(*_documentIdAttributeBacking)),
_rankAttribute(dynamic_cast<search::SingleFloatExtAttribute &>(*_rankAttributeBacking)),
_shouldFillRankAttribute(false),
@@ -680,8 +680,8 @@ SearchVisitor::setupScratchDocument(const StringFieldIdTMap & fieldsInQuery)
void
SearchVisitor::setupDocsumObjects()
{
- std::unique_ptr<DocsumFilter> docsumFilter(new DocsumFilter(_vsmAdapter->getDocsumTools(),
- _rankController.getRankProcessor()->getHitCollector()));
+ auto docsumFilter = std::make_unique<DocsumFilter>(_vsmAdapter->getDocsumTools(),
+ _rankController.getRankProcessor()->getHitCollector());
docsumFilter->init(_fieldSearchSpecMap.nameIdMap(), *_fieldPathMap);
docsumFilter->setSnippetModifiers(_snippetModifierManager.getModifiers());
_summaryGenerator.setFilter(std::move(docsumFilter));
@@ -815,7 +815,7 @@ SearchVisitor::setupGrouping(const std::vector<char> & groupingBlob)
uint32_t numGroupings(0);
is >> numGroupings;
for(size_t i(0); i < numGroupings; i++) {
- std::unique_ptr<Grouping> ag(new Grouping());
+ auto ag = std::make_unique<Grouping>();
ag->deserialize(is);
GroupingList::value_type groupingPtr(ag.release());
Grouping & grouping = *groupingPtr;
@@ -882,7 +882,7 @@ SearchVisitor::handleDocuments(const document::BucketId&,
const document::DocumentType* defaultDocType = _docTypeMapping.getDefaultDocumentType();
assert(defaultDocType);
for (const auto & entry : entries) {
- StorageDocument::UP document(new StorageDocument(entry->releaseDocument(), _fieldPathMap, highestFieldNo));
+ auto document = std::make_unique<StorageDocument>(entry->releaseDocument(), _fieldPathMap, highestFieldNo);
try {
if (defaultDocType != nullptr
diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h
index eb3879863a5..dff263b8418 100644
--- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h
+++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/tenant-base/pom.xml b/tenant-base/pom.xml
index b7f0a8324d6..43bc614478f 100644
--- a/tenant-base/pom.xml
+++ b/tenant-base/pom.xml
@@ -291,6 +291,17 @@
<vespaVersion>${vespa.runtime.version}</vespaVersion>
</properties>
</profile>
+ <profile>
+ <id>ossrh-deploy-vespa</id>
+ <activation>
+ <activeByDefault>false</activeByDefault>
+ </activation>
+ <properties>
+ <maven.deploy.skip>true</maven.deploy.skip>
+ <maven.javadoc.skip>true</maven.javadoc.skip>
+ <skipNexusStagingDeployMojo>true</skipNexusStagingDeployMojo>
+ </properties>
+ </profile>
</profiles>
<build>
diff --git a/tenant-cd-api/CMakeLists.txt b/tenant-cd-api/CMakeLists.txt
index 971aa974aa2..d5155ec34d1 100644
--- a/tenant-cd-api/CMakeLists.txt
+++ b/tenant-cd-api/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(tenant-cd-api)
diff --git a/tenant-cd-api/pom.xml b/tenant-cd-api/pom.xml
index cd0f4fd0015..e45fd7e9586 100644
--- a/tenant-cd-api/pom.xml
+++ b/tenant-cd-api/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/IntegrationTest.java b/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/IntegrationTest.java
index f9dc15df32e..6f359a23675 100644
--- a/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/IntegrationTest.java
+++ b/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/IntegrationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.cd;
import org.junit.jupiter.api.Tag;
diff --git a/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/ProductionTest.java b/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/ProductionTest.java
index 100626ee091..49854b804f8 100644
--- a/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/ProductionTest.java
+++ b/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/ProductionTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.cd;
import org.junit.jupiter.api.Tag;
diff --git a/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/StagingSetup.java b/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/StagingSetup.java
index e7000933b9e..7e2bada75f6 100644
--- a/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/StagingSetup.java
+++ b/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/StagingSetup.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.cd;
import org.junit.jupiter.api.Tag;
diff --git a/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/StagingTest.java b/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/StagingTest.java
index 711c95a12fb..671c7ae1788 100644
--- a/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/StagingTest.java
+++ b/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/StagingTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.cd;
import org.junit.jupiter.api.Tag;
diff --git a/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/SystemTest.java b/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/SystemTest.java
index 525771d2f55..89f0e010479 100644
--- a/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/SystemTest.java
+++ b/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/SystemTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.cd;
import org.junit.jupiter.api.Tag;
diff --git a/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/internal/TestRuntimeProvider.java b/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/internal/TestRuntimeProvider.java
index 8a12c5de862..7dae40b5836 100644
--- a/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/internal/TestRuntimeProvider.java
+++ b/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/internal/TestRuntimeProvider.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.cd.internal;
import ai.vespa.hosted.cd.TestRuntime;
diff --git a/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/internal/package-info.java b/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/internal/package-info.java
index c907e4321e1..777340daffc 100644
--- a/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/internal/package-info.java
+++ b/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/internal/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author mortent
diff --git a/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/package-info.java b/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/package-info.java
index 11a72b0337a..57010d2b0e2 100644
--- a/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/package-info.java
+++ b/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/tenant-cd-api/src/main/java/org/junit/jupiter/api/condition/package-info.java b/tenant-cd-api/src/main/java/org/junit/jupiter/api/condition/package-info.java
index 3050bf4ae2b..7d14bb7fd18 100644
--- a/tenant-cd-api/src/main/java/org/junit/jupiter/api/condition/package-info.java
+++ b/tenant-cd-api/src/main/java/org/junit/jupiter/api/condition/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/tenant-cd-api/src/main/java/org/junit/jupiter/api/extension/package-info.java b/tenant-cd-api/src/main/java/org/junit/jupiter/api/extension/package-info.java
index f9ae5d43779..14080a1cb51 100644
--- a/tenant-cd-api/src/main/java/org/junit/jupiter/api/extension/package-info.java
+++ b/tenant-cd-api/src/main/java/org/junit/jupiter/api/extension/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/tenant-cd-api/src/main/java/org/junit/jupiter/api/function/package-info.java b/tenant-cd-api/src/main/java/org/junit/jupiter/api/function/package-info.java
index 85d265b8bb7..cd0efd44e3c 100644
--- a/tenant-cd-api/src/main/java/org/junit/jupiter/api/function/package-info.java
+++ b/tenant-cd-api/src/main/java/org/junit/jupiter/api/function/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/tenant-cd-api/src/main/java/org/junit/jupiter/api/io/package-info.java b/tenant-cd-api/src/main/java/org/junit/jupiter/api/io/package-info.java
index 7c9c7d5e2be..84b43e8e243 100644
--- a/tenant-cd-api/src/main/java/org/junit/jupiter/api/io/package-info.java
+++ b/tenant-cd-api/src/main/java/org/junit/jupiter/api/io/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/tenant-cd-api/src/main/java/org/junit/jupiter/api/package-info.java b/tenant-cd-api/src/main/java/org/junit/jupiter/api/package-info.java
index c5dc3a8d73b..da5e4f19c1f 100644
--- a/tenant-cd-api/src/main/java/org/junit/jupiter/api/package-info.java
+++ b/tenant-cd-api/src/main/java/org/junit/jupiter/api/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/tenant-cd-api/src/main/java/org/junit/jupiter/api/parallel/package-info.java b/tenant-cd-api/src/main/java/org/junit/jupiter/api/parallel/package-info.java
index c0aa6a69a98..be7342d2f29 100644
--- a/tenant-cd-api/src/main/java/org/junit/jupiter/api/parallel/package-info.java
+++ b/tenant-cd-api/src/main/java/org/junit/jupiter/api/parallel/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/tenant-cd-commons/README.md b/tenant-cd-commons/README.md
index d627be59fa6..f6f3faa2da7 100644
--- a/tenant-cd-commons/README.md
+++ b/tenant-cd-commons/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# tenant-cd-commons
Contains shared implementations of APIs/interfaces of `tenant-cd-api`.
diff --git a/tenant-cd-commons/pom.xml b/tenant-cd-commons/pom.xml
index c8c53a29af2..1d76654fbf7 100644
--- a/tenant-cd-commons/pom.xml
+++ b/tenant-cd-commons/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/HttpDeployment.java b/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/HttpDeployment.java
index 90a33bcb513..347d772b148 100644
--- a/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/HttpDeployment.java
+++ b/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/HttpDeployment.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.cd.commons;
import ai.vespa.hosted.cd.Deployment;
diff --git a/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/HttpEndpoint.java b/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/HttpEndpoint.java
index ab7a9abaa74..fdca5c6e69b 100644
--- a/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/HttpEndpoint.java
+++ b/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/HttpEndpoint.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.cd.commons;
import ai.vespa.hosted.cd.Endpoint;
diff --git a/testutil/pom.xml b/testutil/pom.xml
index 543a0fbf5eb..26bb3056e2f 100644
--- a/testutil/pom.xml
+++ b/testutil/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/testutil/src/main/java/com/yahoo/test/LinePatternMatcher.java b/testutil/src/main/java/com/yahoo/test/LinePatternMatcher.java
index 53138367afc..855a0bc851e 100644
--- a/testutil/src/main/java/com/yahoo/test/LinePatternMatcher.java
+++ b/testutil/src/main/java/com/yahoo/test/LinePatternMatcher.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.test;
import org.hamcrest.BaseMatcher;
diff --git a/testutil/src/main/java/com/yahoo/test/ManualClock.java b/testutil/src/main/java/com/yahoo/test/ManualClock.java
index ba7d9698d72..e49c7df3882 100644
--- a/testutil/src/main/java/com/yahoo/test/ManualClock.java
+++ b/testutil/src/main/java/com/yahoo/test/ManualClock.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.test;
import com.google.inject.Inject;
@@ -18,7 +18,7 @@ import java.util.concurrent.atomic.AtomicReference;
*/
public class ManualClock extends Clock {
- private AtomicReference<Instant> currentTime = new AtomicReference<>(Instant.now());
+ private final AtomicReference<Instant> currentTime = new AtomicReference<>(Instant.now());
@Inject
public ManualClock() {}
@@ -35,6 +35,11 @@ public class ManualClock extends Clock {
currentTime.updateAndGet(time -> time.plus(temporal));
}
+ /** Move time backwards by the given amount */
+ public void retreat(TemporalAmount temporal) {
+ currentTime.updateAndGet(time -> time.minus(temporal));
+ }
+
public void setInstant(Instant time) {
currentTime.set(time);
}
diff --git a/testutil/src/main/java/com/yahoo/test/Matchers.java b/testutil/src/main/java/com/yahoo/test/Matchers.java
index f0043573c37..f8ec26785a2 100644
--- a/testutil/src/main/java/com/yahoo/test/Matchers.java
+++ b/testutil/src/main/java/com/yahoo/test/Matchers.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.test;
import org.hamcrest.BaseMatcher;
diff --git a/testutil/src/main/java/com/yahoo/test/OrderTester.java b/testutil/src/main/java/com/yahoo/test/OrderTester.java
index 2c47c868cb1..577f83efa62 100644
--- a/testutil/src/main/java/com/yahoo/test/OrderTester.java
+++ b/testutil/src/main/java/com/yahoo/test/OrderTester.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.test;
import java.util.ArrayList;
diff --git a/testutil/src/main/java/com/yahoo/test/PartialOrderTester.java b/testutil/src/main/java/com/yahoo/test/PartialOrderTester.java
index 6152cbf5b25..ed92171542c 100644
--- a/testutil/src/main/java/com/yahoo/test/PartialOrderTester.java
+++ b/testutil/src/main/java/com/yahoo/test/PartialOrderTester.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.test;
import static org.junit.Assert.assertEquals;
diff --git a/testutil/src/main/java/com/yahoo/test/TotalOrderTester.java b/testutil/src/main/java/com/yahoo/test/TotalOrderTester.java
index 05a8545d606..850369fbc2e 100644
--- a/testutil/src/main/java/com/yahoo/test/TotalOrderTester.java
+++ b/testutil/src/main/java/com/yahoo/test/TotalOrderTester.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.test;
import static org.junit.Assert.assertEquals;
diff --git a/testutil/src/main/java/com/yahoo/test/json/JsonTestHelper.java b/testutil/src/main/java/com/yahoo/test/json/JsonTestHelper.java
index 829ad206e4e..08afb2fd95f 100644
--- a/testutil/src/main/java/com/yahoo/test/json/JsonTestHelper.java
+++ b/testutil/src/main/java/com/yahoo/test/json/JsonTestHelper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.test.json;
import com.fasterxml.jackson.core.JsonProcessingException;
diff --git a/testutil/src/main/java/com/yahoo/vespa/test/file/TestFileSystem.java b/testutil/src/main/java/com/yahoo/vespa/test/file/TestFileSystem.java
index 1de62297e0a..bd2f3161209 100644
--- a/testutil/src/main/java/com/yahoo/vespa/test/file/TestFileSystem.java
+++ b/testutil/src/main/java/com/yahoo/vespa/test/file/TestFileSystem.java
@@ -1,5 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.test.file;
import com.google.common.jimfs.Configuration;
@@ -12,11 +11,11 @@ import java.nio.file.FileSystem;
public class TestFileSystem {
public static FileSystem create() {
// This configuration is based on Configuration.unix(), except:
- // - Use "posix" attribute view which is necessary for permissions, owner, and group.
+ // - Use custom attribute provider view which is necessary for uid and gid.
Configuration configuration = Configuration.builder(PathType.unix())
.setRoots("/")
.setWorkingDirectory("/work")
- .setAttributeViews("posix")
+ .addAttributeProvider(new UnixUidGidAttributeProvider())
.setSupportedFeatures(Feature.LINKS, Feature.SYMBOLIC_LINKS, Feature.SECURE_DIRECTORY_STREAM, Feature.FILE_CHANNEL)
.build();
return Jimfs.newFileSystem(configuration);
diff --git a/testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java b/testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java
new file mode 100644
index 00000000000..2b1b0231b4f
--- /dev/null
+++ b/testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.yahoo.vespa.test.file;
+
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.jimfs.AttributeProvider;
+import com.google.common.jimfs.File;
+import com.google.common.jimfs.FileLookup;
+
+import java.nio.file.attribute.FileAttributeView;
+import java.nio.file.attribute.FileTime;
+import java.nio.file.attribute.GroupPrincipal;
+import java.nio.file.attribute.PosixFilePermission;
+import java.nio.file.attribute.UserPrincipal;
+import java.util.Optional;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * Same as {@code com.google.common.jimfs.UnixAttributeProvider} except that getUniqueId() will return user
+ * if user is a numerical string.
+ */
+public class UnixUidGidAttributeProvider extends AttributeProvider {
+
+ private static final ImmutableSet<String> ATTRIBUTES = ImmutableSet.of("uid", "ino", "dev", "nlink", "rdev", "ctime", "mode", "gid");
+ private static final ImmutableSet<String> INHERITED_VIEWS = ImmutableSet.of("basic", "owner", "posix");
+
+ private final AtomicInteger uidGenerator = new AtomicInteger();
+ private final ConcurrentMap<UserPrincipal, Integer> idCache = new ConcurrentHashMap<>();
+
+ @Override
+ public String name() {
+ return "unix";
+ }
+
+ @Override
+ public ImmutableSet<String> inherits() {
+ return INHERITED_VIEWS;
+ }
+
+ @Override
+ public ImmutableSet<String> fixedAttributes() {
+ return ATTRIBUTES;
+ }
+
+ @Override
+ public Class<UnixFileAttributeView> viewType() {
+ return UnixFileAttributeView.class;
+ }
+
+ @Override
+ public UnixFileAttributeView view(FileLookup lookup, ImmutableMap<String, FileAttributeView> inheritedViews) {
+ throw new UnsupportedOperationException();
+ }
+
+ private int getUniqueId(UserPrincipal user) {
+ return idCache.computeIfAbsent(user, id -> maybeNumber(id.getName()).orElseGet(uidGenerator::incrementAndGet));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Object get(File file, String attribute) {
+ switch (attribute) {
+ case "uid":
+ UserPrincipal user = (UserPrincipal) file.getAttribute("owner", "owner");
+ return getUniqueId(user);
+ case "gid":
+ GroupPrincipal group = (GroupPrincipal) file.getAttribute("posix", "group");
+ return getUniqueId(group);
+ case "mode":
+ Set<PosixFilePermission> permissions =
+ (Set<PosixFilePermission>) file.getAttribute("posix", "permissions");
+ return toMode(permissions);
+ case "ctime":
+ return FileTime.fromMillis(file.getCreationTime());
+ case "rdev":
+ return 0L;
+ case "dev":
+ return 1L;
+ case "ino":
+ return file.id();
+ case "nlink":
+ return file.links();
+ default:
+ return null;
+ }
+ }
+
+ @Override
+ public void set(File file, String view, String attribute, Object value, boolean create) {
+ throw unsettable(view, attribute);
+ }
+
+ @SuppressWarnings("OctalInteger")
+ private static int toMode(Set<PosixFilePermission> permissions) {
+ int result = 0;
+ for (PosixFilePermission permission : permissions) {
+ checkNotNull(permission);
+ switch (permission) {
+ case OWNER_READ:
+ result |= 0400;
+ break;
+ case OWNER_WRITE:
+ result |= 0200;
+ break;
+ case OWNER_EXECUTE:
+ result |= 0100;
+ break;
+ case GROUP_READ:
+ result |= 0040;
+ break;
+ case GROUP_WRITE:
+ result |= 0020;
+ break;
+ case GROUP_EXECUTE:
+ result |= 0010;
+ break;
+ case OTHERS_READ:
+ result |= 0004;
+ break;
+ case OTHERS_WRITE:
+ result |= 0002;
+ break;
+ case OTHERS_EXECUTE:
+ result |= 0001;
+ break;
+ default:
+ throw new AssertionError(); // no other possible values
+ }
+ }
+ return result;
+ }
+
+ interface UnixFileAttributeView extends FileAttributeView {}
+
+ private static Optional<Integer> maybeNumber(String str) {
+ try {
+ return Optional.of(Integer.parseInt(str));
+ } catch (NumberFormatException e) {
+ return Optional.empty();
+ }
+ }
+}
diff --git a/testutil/src/test/java/com/yahoo/test/MatchersTestCase.java b/testutil/src/test/java/com/yahoo/test/MatchersTestCase.java
index 6b4d975b98a..165e030b13b 100644
--- a/testutil/src/test/java/com/yahoo/test/MatchersTestCase.java
+++ b/testutil/src/test/java/com/yahoo/test/MatchersTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.test;
import static org.junit.Assert.assertEquals;
diff --git a/testutil/src/test/java/com/yahoo/test/OrderTesterTest.java b/testutil/src/test/java/com/yahoo/test/OrderTesterTest.java
index 8376fb5e72e..2fa24d65b2b 100644
--- a/testutil/src/test/java/com/yahoo/test/OrderTesterTest.java
+++ b/testutil/src/test/java/com/yahoo/test/OrderTesterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.test;
import org.junit.Test;
diff --git a/valgrind-suppressions.txt b/valgrind-suppressions.txt
index b40f0957454..75a7b256b35 100644
--- a/valgrind-suppressions.txt
+++ b/valgrind-suppressions.txt
@@ -2,6 +2,24 @@
NPTL keeps a cache of thread stacks, and metadata for thread local storage is not freed for threads in that cache
Memcheck:Leak
fun:calloc
+ fun:UnknownInlinedFun
+ fun:allocate_dtv
+ fun:_dl_allocate_tls
+ fun:pthread_create@@GLIBC_2.2.5
+}
+{
+ NPTL keeps a cache of thread stacks, and metadata for thread local storage is not freed for threads in that cache
+ Memcheck:Leak
+ fun:calloc
+ fun:allocate_dtv
+ fun:_dl_allocate_tls
+ fun:allocate_stack
+ fun:pthread_create@@GLIBC_2.2.5
+}
+{
+ NPTL keeps a cache of thread stacks, and metadata for thread local storage is not freed for threads in that cache
+ Memcheck:Leak
+ fun:calloc
fun:_dl_allocate_tls
fun:pthread_create@@GLIBC_2.2.5
}
@@ -289,6 +307,16 @@
...
}
{
+ Needed to avoid leak errors on static wchar strings when using the fastos process proxy
+ Memcheck:Leak
+ match-leak-kinds: possible
+ fun:_Znwm
+ fun:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_
+ ...
+ fun:__static_initialization_and_destruction_0
+ ...
+}
+{
Apparent memory leak on Fedora 28.
Memcheck:Leak
match-leak-kinds: possible
diff --git a/vbench/CMakeLists.txt b/vbench/CMakeLists.txt
index 66637e6bfc5..04a326cfb04 100644
--- a/vbench/CMakeLists.txt
+++ b/vbench/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/vbench/src/apps/dumpurl/CMakeLists.txt b/vbench/src/apps/dumpurl/CMakeLists.txt
index 5e7a483fb61..ed950e96237 100644
--- a/vbench/src/apps/dumpurl/CMakeLists.txt
+++ b/vbench/src/apps/dumpurl/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_dumpurl_app
SOURCES
dumpurl.cpp
diff --git a/vbench/src/apps/dumpurl/dumpurl.cpp b/vbench/src/apps/dumpurl/dumpurl.cpp
index 5a0c1ab8e2c..515f4b5ae3e 100644
--- a/vbench/src/apps/dumpurl/dumpurl.cpp
+++ b/vbench/src/apps/dumpurl/dumpurl.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vbench/http/http_result_handler.h>
#include <vbench/http/server_spec.h>
diff --git a/vbench/src/apps/vbench/CMakeLists.txt b/vbench/src/apps/vbench/CMakeLists.txt
index ee66230981b..0d3aad5833e 100644
--- a/vbench/src/apps/vbench/CMakeLists.txt
+++ b/vbench/src/apps/vbench/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_app
SOURCES
vbench.cpp
diff --git a/vbench/src/apps/vbench/run.sh b/vbench/src/apps/vbench/run.sh
index e18263a8fff..032e42aace8 100755
--- a/vbench/src/apps/vbench/run.sh
+++ b/vbench/src/apps/vbench/run.sh
@@ -1,3 +1,3 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
env $(make ldl) ./vbench --input input.txt --qps 2 --host www.host.com --port 80
diff --git a/vbench/src/apps/vbench/vbench.cpp b/vbench/src/apps/vbench/vbench.cpp
index 4b3419b2f50..00499519dcc 100644
--- a/vbench/src/apps/vbench/vbench.cpp
+++ b/vbench/src/apps/vbench/vbench.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/signalhandler.h>
#include <vespa/vespalib/util/programoptions.h>
#include <vespa/vespalib/util/thread.h>
diff --git a/vbench/src/tests/app_dumpurl/CMakeLists.txt b/vbench/src/tests/app_dumpurl/CMakeLists.txt
index 2c3498d4d54..e97e3c19efb 100644
--- a/vbench/src/tests/app_dumpurl/CMakeLists.txt
+++ b/vbench/src/tests/app_dumpurl/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_app_dumpurl_test_app TEST
SOURCES
app_dumpurl_test.cpp
diff --git a/vbench/src/tests/app_dumpurl/app_dumpurl_test.cpp b/vbench/src/tests/app_dumpurl/app_dumpurl_test.cpp
index d19a5a323f2..0d5ee1e507c 100644
--- a/vbench/src/tests/app_dumpurl/app_dumpurl_test.cpp
+++ b/vbench/src/tests/app_dumpurl/app_dumpurl_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
#include <vespa/vespalib/util/child_process.h>
diff --git a/vbench/src/tests/app_vbench/CMakeLists.txt b/vbench/src/tests/app_vbench/CMakeLists.txt
index 5f32524905b..6afbfc7389f 100644
--- a/vbench/src/tests/app_vbench/CMakeLists.txt
+++ b/vbench/src/tests/app_vbench/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_app_vbench_test_app TEST
SOURCES
app_vbench_test.cpp
diff --git a/vbench/src/tests/app_vbench/app_vbench_test.cpp b/vbench/src/tests/app_vbench/app_vbench_test.cpp
index 0e89d30e853..f48c6fe0b05 100644
--- a/vbench/src/tests/app_vbench/app_vbench_test.cpp
+++ b/vbench/src/tests/app_vbench/app_vbench_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
#include <vespa/vespalib/util/child_process.h>
diff --git a/vbench/src/tests/benchmark_headers/CMakeLists.txt b/vbench/src/tests/benchmark_headers/CMakeLists.txt
index 77008bf0783..2e06ee00759 100644
--- a/vbench/src/tests/benchmark_headers/CMakeLists.txt
+++ b/vbench/src/tests/benchmark_headers/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_benchmark_headers_test_app TEST
SOURCES
benchmark_headers_test.cpp
diff --git a/vbench/src/tests/benchmark_headers/benchmark_headers_test.cpp b/vbench/src/tests/benchmark_headers/benchmark_headers_test.cpp
index d7c126806c8..4b2c2cfbf3b 100644
--- a/vbench/src/tests/benchmark_headers/benchmark_headers_test.cpp
+++ b/vbench/src/tests/benchmark_headers/benchmark_headers_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
diff --git a/vbench/src/tests/dispatcher/CMakeLists.txt b/vbench/src/tests/dispatcher/CMakeLists.txt
index 76d6b082950..e2e8944e823 100644
--- a/vbench/src/tests/dispatcher/CMakeLists.txt
+++ b/vbench/src/tests/dispatcher/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_dispatcher_test_app TEST
SOURCES
dispatcher_test.cpp
diff --git a/vbench/src/tests/dispatcher/dispatcher_test.cpp b/vbench/src/tests/dispatcher/dispatcher_test.cpp
index 82ab4083d05..b2c002e3e50 100644
--- a/vbench/src/tests/dispatcher/dispatcher_test.cpp
+++ b/vbench/src/tests/dispatcher/dispatcher_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
diff --git a/vbench/src/tests/dropped_tagger/CMakeLists.txt b/vbench/src/tests/dropped_tagger/CMakeLists.txt
index b23fdbd2254..1f5710589f8 100644
--- a/vbench/src/tests/dropped_tagger/CMakeLists.txt
+++ b/vbench/src/tests/dropped_tagger/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_dropped_tagger_test_app TEST
SOURCES
dropped_tagger_test.cpp
diff --git a/vbench/src/tests/dropped_tagger/dropped_tagger_test.cpp b/vbench/src/tests/dropped_tagger/dropped_tagger_test.cpp
index 108daf1fad7..f1ea5dfee11 100644
--- a/vbench/src/tests/dropped_tagger/dropped_tagger_test.cpp
+++ b/vbench/src/tests/dropped_tagger/dropped_tagger_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
diff --git a/vbench/src/tests/handler_thread/CMakeLists.txt b/vbench/src/tests/handler_thread/CMakeLists.txt
index 49fa1ba1724..b43a5ecf2c7 100644
--- a/vbench/src/tests/handler_thread/CMakeLists.txt
+++ b/vbench/src/tests/handler_thread/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_handler_thread_test_app TEST
SOURCES
handler_thread_test.cpp
diff --git a/vbench/src/tests/handler_thread/handler_thread_test.cpp b/vbench/src/tests/handler_thread/handler_thread_test.cpp
index 9420fc7feba..fd7d630f705 100644
--- a/vbench/src/tests/handler_thread/handler_thread_test.cpp
+++ b/vbench/src/tests/handler_thread/handler_thread_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
diff --git a/vbench/src/tests/hex_number/CMakeLists.txt b/vbench/src/tests/hex_number/CMakeLists.txt
index 6edb12ac45e..9fa17d7ca14 100644
--- a/vbench/src/tests/hex_number/CMakeLists.txt
+++ b/vbench/src/tests/hex_number/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_hex_number_test_app TEST
SOURCES
hex_number_test.cpp
diff --git a/vbench/src/tests/hex_number/hex_number_test.cpp b/vbench/src/tests/hex_number/hex_number_test.cpp
index 053cce78c7d..5e739666f7a 100644
--- a/vbench/src/tests/hex_number/hex_number_test.cpp
+++ b/vbench/src/tests/hex_number/hex_number_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
diff --git a/vbench/src/tests/http_client/CMakeLists.txt b/vbench/src/tests/http_client/CMakeLists.txt
index 40990ded2a4..7b80715b3f7 100644
--- a/vbench/src/tests/http_client/CMakeLists.txt
+++ b/vbench/src/tests/http_client/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_http_client_test_app TEST
SOURCES
http_client_test.cpp
diff --git a/vbench/src/tests/http_client/http_client_test.cpp b/vbench/src/tests/http_client/http_client_test.cpp
index 1398b1ebc74..9cb93a77ec0 100644
--- a/vbench/src/tests/http_client/http_client_test.cpp
+++ b/vbench/src/tests/http_client/http_client_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
#include <vespa/vespalib/net/crypto_engine.h>
diff --git a/vbench/src/tests/http_connection/CMakeLists.txt b/vbench/src/tests/http_connection/CMakeLists.txt
index 1865327a9fb..1e0df285038 100644
--- a/vbench/src/tests/http_connection/CMakeLists.txt
+++ b/vbench/src/tests/http_connection/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_http_connection_test_app TEST
SOURCES
http_connection_test.cpp
diff --git a/vbench/src/tests/http_connection/http_connection_test.cpp b/vbench/src/tests/http_connection/http_connection_test.cpp
index e3044978b2b..43ca460d0df 100644
--- a/vbench/src/tests/http_connection/http_connection_test.cpp
+++ b/vbench/src/tests/http_connection/http_connection_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
#include <vespa/vespalib/net/crypto_engine.h>
diff --git a/vbench/src/tests/http_connection_pool/CMakeLists.txt b/vbench/src/tests/http_connection_pool/CMakeLists.txt
index 616247f108b..e9357be98a9 100644
--- a/vbench/src/tests/http_connection_pool/CMakeLists.txt
+++ b/vbench/src/tests/http_connection_pool/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_http_connection_pool_test_app TEST
SOURCES
http_connection_pool_test.cpp
diff --git a/vbench/src/tests/http_connection_pool/http_connection_pool_test.cpp b/vbench/src/tests/http_connection_pool/http_connection_pool_test.cpp
index 08d44057dfc..77bb75beda6 100644
--- a/vbench/src/tests/http_connection_pool/http_connection_pool_test.cpp
+++ b/vbench/src/tests/http_connection_pool/http_connection_pool_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
#include <vespa/vespalib/net/crypto_engine.h>
diff --git a/vbench/src/tests/input_file_reader/CMakeLists.txt b/vbench/src/tests/input_file_reader/CMakeLists.txt
index d7fda15e0ca..797d02ef945 100644
--- a/vbench/src/tests/input_file_reader/CMakeLists.txt
+++ b/vbench/src/tests/input_file_reader/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_input_file_reader_test_app TEST
SOURCES
input_file_reader_test.cpp
diff --git a/vbench/src/tests/input_file_reader/input_file_reader_test.cpp b/vbench/src/tests/input_file_reader/input_file_reader_test.cpp
index 6072158802c..7ced0cd8923 100644
--- a/vbench/src/tests/input_file_reader/input_file_reader_test.cpp
+++ b/vbench/src/tests/input_file_reader/input_file_reader_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vbench/test/all.h>
diff --git a/vbench/src/tests/latency_analyzer/CMakeLists.txt b/vbench/src/tests/latency_analyzer/CMakeLists.txt
index 286ddd7d462..ccb7afc8839 100644
--- a/vbench/src/tests/latency_analyzer/CMakeLists.txt
+++ b/vbench/src/tests/latency_analyzer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_latency_analyzer_test_app TEST
SOURCES
latency_analyzer_test.cpp
diff --git a/vbench/src/tests/latency_analyzer/latency_analyzer_test.cpp b/vbench/src/tests/latency_analyzer/latency_analyzer_test.cpp
index 7a5730211a8..47991dde039 100644
--- a/vbench/src/tests/latency_analyzer/latency_analyzer_test.cpp
+++ b/vbench/src/tests/latency_analyzer/latency_analyzer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
diff --git a/vbench/src/tests/line_reader/CMakeLists.txt b/vbench/src/tests/line_reader/CMakeLists.txt
index 65b2860cfb3..34ac27b01c7 100644
--- a/vbench/src/tests/line_reader/CMakeLists.txt
+++ b/vbench/src/tests/line_reader/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_line_reader_test_app TEST
SOURCES
line_reader_test.cpp
diff --git a/vbench/src/tests/line_reader/line_reader_test.cpp b/vbench/src/tests/line_reader/line_reader_test.cpp
index b6986b0072c..facc918b254 100644
--- a/vbench/src/tests/line_reader/line_reader_test.cpp
+++ b/vbench/src/tests/line_reader/line_reader_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
diff --git a/vbench/src/tests/qps_analyzer/CMakeLists.txt b/vbench/src/tests/qps_analyzer/CMakeLists.txt
index faf4b634d56..f731e04a757 100644
--- a/vbench/src/tests/qps_analyzer/CMakeLists.txt
+++ b/vbench/src/tests/qps_analyzer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_qps_analyzer_test_app TEST
SOURCES
qps_analyzer_test.cpp
diff --git a/vbench/src/tests/qps_analyzer/qps_analyzer_test.cpp b/vbench/src/tests/qps_analyzer/qps_analyzer_test.cpp
index 6b7fa957679..6470538b859 100644
--- a/vbench/src/tests/qps_analyzer/qps_analyzer_test.cpp
+++ b/vbench/src/tests/qps_analyzer/qps_analyzer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
diff --git a/vbench/src/tests/qps_tagger/CMakeLists.txt b/vbench/src/tests/qps_tagger/CMakeLists.txt
index 6373fdc38ce..75cb4d57fbe 100644
--- a/vbench/src/tests/qps_tagger/CMakeLists.txt
+++ b/vbench/src/tests/qps_tagger/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_qps_tagger_test_app TEST
SOURCES
qps_tagger_test.cpp
diff --git a/vbench/src/tests/qps_tagger/qps_tagger_test.cpp b/vbench/src/tests/qps_tagger/qps_tagger_test.cpp
index 00488cacbd5..fc429e4f1ac 100644
--- a/vbench/src/tests/qps_tagger/qps_tagger_test.cpp
+++ b/vbench/src/tests/qps_tagger/qps_tagger_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
diff --git a/vbench/src/tests/request_dumper/CMakeLists.txt b/vbench/src/tests/request_dumper/CMakeLists.txt
index ae1c6b69e2d..b77fe612512 100644
--- a/vbench/src/tests/request_dumper/CMakeLists.txt
+++ b/vbench/src/tests/request_dumper/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_request_dumper_test_app TEST
SOURCES
request_dumper_test.cpp
diff --git a/vbench/src/tests/request_dumper/request_dumper_test.cpp b/vbench/src/tests/request_dumper/request_dumper_test.cpp
index 70a89576f5f..2697e88a8b9 100644
--- a/vbench/src/tests/request_dumper/request_dumper_test.cpp
+++ b/vbench/src/tests/request_dumper/request_dumper_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
diff --git a/vbench/src/tests/request_generator/CMakeLists.txt b/vbench/src/tests/request_generator/CMakeLists.txt
index 46a8d3deb98..e7dc7102c17 100644
--- a/vbench/src/tests/request_generator/CMakeLists.txt
+++ b/vbench/src/tests/request_generator/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_request_generator_test_app TEST
SOURCES
request_generator_test.cpp
diff --git a/vbench/src/tests/request_generator/request_generator_test.cpp b/vbench/src/tests/request_generator/request_generator_test.cpp
index 531a820dffc..c6a34b8d911 100644
--- a/vbench/src/tests/request_generator/request_generator_test.cpp
+++ b/vbench/src/tests/request_generator/request_generator_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vbench/test/all.h>
diff --git a/vbench/src/tests/request_sink/CMakeLists.txt b/vbench/src/tests/request_sink/CMakeLists.txt
index e734457d57f..f2db58a0c5f 100644
--- a/vbench/src/tests/request_sink/CMakeLists.txt
+++ b/vbench/src/tests/request_sink/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_request_sink_test_app TEST
SOURCES
request_sink_test.cpp
diff --git a/vbench/src/tests/request_sink/request_sink_test.cpp b/vbench/src/tests/request_sink/request_sink_test.cpp
index 539767c015b..23560f09243 100644
--- a/vbench/src/tests/request_sink/request_sink_test.cpp
+++ b/vbench/src/tests/request_sink/request_sink_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
diff --git a/vbench/src/tests/server_spec/CMakeLists.txt b/vbench/src/tests/server_spec/CMakeLists.txt
index 91aff5501a0..d734632bea8 100644
--- a/vbench/src/tests/server_spec/CMakeLists.txt
+++ b/vbench/src/tests/server_spec/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_server_spec_test_app TEST
SOURCES
server_spec_test.cpp
diff --git a/vbench/src/tests/server_spec/server_spec_test.cpp b/vbench/src/tests/server_spec/server_spec_test.cpp
index 1ba985f48f1..fb535e87ba2 100644
--- a/vbench/src/tests/server_spec/server_spec_test.cpp
+++ b/vbench/src/tests/server_spec/server_spec_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
diff --git a/vbench/src/tests/server_tagger/CMakeLists.txt b/vbench/src/tests/server_tagger/CMakeLists.txt
index fc29e2d4e9f..ff4ce5c4087 100644
--- a/vbench/src/tests/server_tagger/CMakeLists.txt
+++ b/vbench/src/tests/server_tagger/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_server_tagger_test_app TEST
SOURCES
server_tagger_test.cpp
diff --git a/vbench/src/tests/server_tagger/server_tagger_test.cpp b/vbench/src/tests/server_tagger/server_tagger_test.cpp
index 1532034ab57..a8edda35614 100644
--- a/vbench/src/tests/server_tagger/server_tagger_test.cpp
+++ b/vbench/src/tests/server_tagger/server_tagger_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
diff --git a/vbench/src/tests/socket/CMakeLists.txt b/vbench/src/tests/socket/CMakeLists.txt
index 619656aadf2..67455bd6a2a 100644
--- a/vbench/src/tests/socket/CMakeLists.txt
+++ b/vbench/src/tests/socket/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_socket_test_app TEST
SOURCES
socket_test.cpp
diff --git a/vbench/src/tests/socket/socket_test.cpp b/vbench/src/tests/socket/socket_test.cpp
index bcdaecdc7dc..94ad0eef5af 100644
--- a/vbench/src/tests/socket/socket_test.cpp
+++ b/vbench/src/tests/socket/socket_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
#include <vespa/vespalib/net/crypto_engine.h>
diff --git a/vbench/src/tests/taint/CMakeLists.txt b/vbench/src/tests/taint/CMakeLists.txt
index 2cffe187bf7..32fb3a60088 100644
--- a/vbench/src/tests/taint/CMakeLists.txt
+++ b/vbench/src/tests/taint/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_taint_test_app TEST
SOURCES
taint_test.cpp
diff --git a/vbench/src/tests/taint/taint_test.cpp b/vbench/src/tests/taint/taint_test.cpp
index bb0b2ad017a..c484191b1e2 100644
--- a/vbench/src/tests/taint/taint_test.cpp
+++ b/vbench/src/tests/taint/taint_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
diff --git a/vbench/src/tests/time_queue/CMakeLists.txt b/vbench/src/tests/time_queue/CMakeLists.txt
index e784871bf66..8ce426f2ea6 100644
--- a/vbench/src/tests/time_queue/CMakeLists.txt
+++ b/vbench/src/tests/time_queue/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_time_queue_test_app TEST
SOURCES
time_queue_test.cpp
diff --git a/vbench/src/tests/time_queue/time_queue_test.cpp b/vbench/src/tests/time_queue/time_queue_test.cpp
index 47c1afbfaa9..1b0fd4ce01f 100644
--- a/vbench/src/tests/time_queue/time_queue_test.cpp
+++ b/vbench/src/tests/time_queue/time_queue_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
diff --git a/vbench/src/tests/timer/CMakeLists.txt b/vbench/src/tests/timer/CMakeLists.txt
index 750133cc5c2..22775b515f0 100644
--- a/vbench/src/tests/timer/CMakeLists.txt
+++ b/vbench/src/tests/timer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vbench_timer_test_app TEST
SOURCES
timer_test.cpp
diff --git a/vbench/src/tests/timer/timer_test.cpp b/vbench/src/tests/timer/timer_test.cpp
index 8e73a6882ab..43e7b76caa0 100644
--- a/vbench/src/tests/timer/timer_test.cpp
+++ b/vbench/src/tests/timer/timer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
diff --git a/vbench/src/vbench/CMakeLists.txt b/vbench/src/vbench/CMakeLists.txt
index 87de59ec56a..d11d023e40e 100644
--- a/vbench/src/vbench/CMakeLists.txt
+++ b/vbench/src/vbench/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vbench
SOURCES
$<TARGET_OBJECTS:vbench_core>
diff --git a/vbench/src/vbench/core/CMakeLists.txt b/vbench/src/vbench/core/CMakeLists.txt
index 2e821031183..de919464c41 100644
--- a/vbench/src/vbench/core/CMakeLists.txt
+++ b/vbench/src/vbench/core/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vbench_core OBJECT
SOURCES
closeable.cpp
diff --git a/vbench/src/vbench/core/Doxyfile b/vbench/src/vbench/core/Doxyfile
index 3475ac48ac7..2b7a0a133ff 100644
--- a/vbench/src/vbench/core/Doxyfile
+++ b/vbench/src/vbench/core/Doxyfile
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Doxyfile 1.3.9.1
# This file describes the settings to be used by the documentation system
diff --git a/vbench/src/vbench/core/closeable.cpp b/vbench/src/vbench/core/closeable.cpp
index 8f29d7da122..91f051aa13a 100644
--- a/vbench/src/vbench/core/closeable.cpp
+++ b/vbench/src/vbench/core/closeable.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "closeable.h"
diff --git a/vbench/src/vbench/core/closeable.h b/vbench/src/vbench/core/closeable.h
index cffe91e12da..038fdcbbb1c 100644
--- a/vbench/src/vbench/core/closeable.h
+++ b/vbench/src/vbench/core/closeable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/core/dispatcher.cpp b/vbench/src/vbench/core/dispatcher.cpp
index ae878bfb9b3..48a29930609 100644
--- a/vbench/src/vbench/core/dispatcher.cpp
+++ b/vbench/src/vbench/core/dispatcher.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dispatcher.h"
diff --git a/vbench/src/vbench/core/dispatcher.h b/vbench/src/vbench/core/dispatcher.h
index 21db6c931a4..47098ab38d8 100644
--- a/vbench/src/vbench/core/dispatcher.h
+++ b/vbench/src/vbench/core/dispatcher.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/core/dispatcher.hpp b/vbench/src/vbench/core/dispatcher.hpp
index 9a985797967..aa5afcd6d67 100644
--- a/vbench/src/vbench/core/dispatcher.hpp
+++ b/vbench/src/vbench/core/dispatcher.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/thread.h>
diff --git a/vbench/src/vbench/core/handler.cpp b/vbench/src/vbench/core/handler.cpp
index 5f6127f6a32..84ba37e68df 100644
--- a/vbench/src/vbench/core/handler.cpp
+++ b/vbench/src/vbench/core/handler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "handler.h"
diff --git a/vbench/src/vbench/core/handler.h b/vbench/src/vbench/core/handler.h
index 6e5c3b379a5..ec8dedd4359 100644
--- a/vbench/src/vbench/core/handler.h
+++ b/vbench/src/vbench/core/handler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/core/handler_thread.cpp b/vbench/src/vbench/core/handler_thread.cpp
index 0681d50742f..287c51e656f 100644
--- a/vbench/src/vbench/core/handler_thread.cpp
+++ b/vbench/src/vbench/core/handler_thread.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "handler_thread.h"
diff --git a/vbench/src/vbench/core/handler_thread.h b/vbench/src/vbench/core/handler_thread.h
index 87bc19d86f8..b4aaf08eee8 100644
--- a/vbench/src/vbench/core/handler_thread.h
+++ b/vbench/src/vbench/core/handler_thread.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/core/handler_thread.hpp b/vbench/src/vbench/core/handler_thread.hpp
index ee13ca73c43..3d1dc423411 100644
--- a/vbench/src/vbench/core/handler_thread.hpp
+++ b/vbench/src/vbench/core/handler_thread.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace vbench {
diff --git a/vbench/src/vbench/core/input_file_reader.cpp b/vbench/src/vbench/core/input_file_reader.cpp
index ede7692cb44..b33bd380a6c 100644
--- a/vbench/src/vbench/core/input_file_reader.cpp
+++ b/vbench/src/vbench/core/input_file_reader.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "input_file_reader.h"
diff --git a/vbench/src/vbench/core/input_file_reader.h b/vbench/src/vbench/core/input_file_reader.h
index 7def1542a32..715b19a1191 100644
--- a/vbench/src/vbench/core/input_file_reader.h
+++ b/vbench/src/vbench/core/input_file_reader.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/core/line_reader.cpp b/vbench/src/vbench/core/line_reader.cpp
index fe2dc6f624f..ac1b97d2924 100644
--- a/vbench/src/vbench/core/line_reader.cpp
+++ b/vbench/src/vbench/core/line_reader.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "line_reader.h"
diff --git a/vbench/src/vbench/core/line_reader.h b/vbench/src/vbench/core/line_reader.h
index 0f4b0d40ede..ed85c454e01 100644
--- a/vbench/src/vbench/core/line_reader.h
+++ b/vbench/src/vbench/core/line_reader.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/core/provider.cpp b/vbench/src/vbench/core/provider.cpp
index b5ad275ecd7..70311a55293 100644
--- a/vbench/src/vbench/core/provider.cpp
+++ b/vbench/src/vbench/core/provider.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "provider.h"
diff --git a/vbench/src/vbench/core/provider.h b/vbench/src/vbench/core/provider.h
index 0b17a0415cb..e3b0fd63fae 100644
--- a/vbench/src/vbench/core/provider.h
+++ b/vbench/src/vbench/core/provider.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/core/socket.cpp b/vbench/src/vbench/core/socket.cpp
index ed92eb73f02..401a2b90996 100644
--- a/vbench/src/vbench/core/socket.cpp
+++ b/vbench/src/vbench/core/socket.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "socket.h"
#include <vespa/vespalib/net/socket_options.h>
diff --git a/vbench/src/vbench/core/socket.h b/vbench/src/vbench/core/socket.h
index 4b5721c0fb7..ec0e9a7b5eb 100644
--- a/vbench/src/vbench/core/socket.h
+++ b/vbench/src/vbench/core/socket.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/core/stream.cpp b/vbench/src/vbench/core/stream.cpp
index 0f316111c06..f9004a648e9 100644
--- a/vbench/src/vbench/core/stream.cpp
+++ b/vbench/src/vbench/core/stream.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "stream.h"
diff --git a/vbench/src/vbench/core/stream.h b/vbench/src/vbench/core/stream.h
index d3bf416e466..f6cfdc31ed7 100644
--- a/vbench/src/vbench/core/stream.h
+++ b/vbench/src/vbench/core/stream.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/core/string.cpp b/vbench/src/vbench/core/string.cpp
index 3a9ed24563f..7e6c54b757c 100644
--- a/vbench/src/vbench/core/string.cpp
+++ b/vbench/src/vbench/core/string.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "string.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/vbench/src/vbench/core/string.h b/vbench/src/vbench/core/string.h
index 9c5c8cf4292..0c374d2711a 100644
--- a/vbench/src/vbench/core/string.h
+++ b/vbench/src/vbench/core/string.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/core/taint.cpp b/vbench/src/vbench/core/taint.cpp
index 0ec225f7bef..3a37f731709 100644
--- a/vbench/src/vbench/core/taint.cpp
+++ b/vbench/src/vbench/core/taint.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "taint.h"
diff --git a/vbench/src/vbench/core/taint.h b/vbench/src/vbench/core/taint.h
index 8130466eb7f..fa42d3c4035 100644
--- a/vbench/src/vbench/core/taint.h
+++ b/vbench/src/vbench/core/taint.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/core/taintable.cpp b/vbench/src/vbench/core/taintable.cpp
index 2341e4d9103..18455dc1456 100644
--- a/vbench/src/vbench/core/taintable.cpp
+++ b/vbench/src/vbench/core/taintable.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "taintable.h"
diff --git a/vbench/src/vbench/core/taintable.h b/vbench/src/vbench/core/taintable.h
index 4e7a2567cfc..6e22f4e9e96 100644
--- a/vbench/src/vbench/core/taintable.h
+++ b/vbench/src/vbench/core/taintable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/core/time_queue.cpp b/vbench/src/vbench/core/time_queue.cpp
index caa86ea5749..2fa7ed4c4d8 100644
--- a/vbench/src/vbench/core/time_queue.cpp
+++ b/vbench/src/vbench/core/time_queue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "time_queue.h"
diff --git a/vbench/src/vbench/core/time_queue.h b/vbench/src/vbench/core/time_queue.h
index 079aa1fc7f7..84cb6351a72 100644
--- a/vbench/src/vbench/core/time_queue.h
+++ b/vbench/src/vbench/core/time_queue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/core/time_queue.hpp b/vbench/src/vbench/core/time_queue.hpp
index ddbf574e3c2..6c75cdca711 100644
--- a/vbench/src/vbench/core/time_queue.hpp
+++ b/vbench/src/vbench/core/time_queue.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace vbench {
diff --git a/vbench/src/vbench/core/timer.cpp b/vbench/src/vbench/core/timer.cpp
index 5e934f59275..894415c5db5 100644
--- a/vbench/src/vbench/core/timer.cpp
+++ b/vbench/src/vbench/core/timer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "timer.h"
diff --git a/vbench/src/vbench/core/timer.h b/vbench/src/vbench/core/timer.h
index fbb7b6f10ef..6fd45f52764 100644
--- a/vbench/src/vbench/core/timer.h
+++ b/vbench/src/vbench/core/timer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/http/CMakeLists.txt b/vbench/src/vbench/http/CMakeLists.txt
index 237dd6ee7da..9b5e7495046 100644
--- a/vbench/src/vbench/http/CMakeLists.txt
+++ b/vbench/src/vbench/http/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vbench_http OBJECT
SOURCES
benchmark_headers.cpp
diff --git a/vbench/src/vbench/http/benchmark_headers.cpp b/vbench/src/vbench/http/benchmark_headers.cpp
index 5c89f1754e5..d40de8da01d 100644
--- a/vbench/src/vbench/http/benchmark_headers.cpp
+++ b/vbench/src/vbench/http/benchmark_headers.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "benchmark_headers.h"
#include <map>
diff --git a/vbench/src/vbench/http/benchmark_headers.h b/vbench/src/vbench/http/benchmark_headers.h
index 04b29813760..66f2180b1ee 100644
--- a/vbench/src/vbench/http/benchmark_headers.h
+++ b/vbench/src/vbench/http/benchmark_headers.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/http/hex_number.cpp b/vbench/src/vbench/http/hex_number.cpp
index bc14051fb83..51b0ae90866 100644
--- a/vbench/src/vbench/http/hex_number.cpp
+++ b/vbench/src/vbench/http/hex_number.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "hex_number.h"
diff --git a/vbench/src/vbench/http/hex_number.h b/vbench/src/vbench/http/hex_number.h
index 95b2c34eda1..024ffb55f69 100644
--- a/vbench/src/vbench/http/hex_number.h
+++ b/vbench/src/vbench/http/hex_number.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/http/http_client.cpp b/vbench/src/vbench/http/http_client.cpp
index 3d13b7431de..4b87c6bb283 100644
--- a/vbench/src/vbench/http/http_client.cpp
+++ b/vbench/src/vbench/http/http_client.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "http_client.h"
#include "hex_number.h"
diff --git a/vbench/src/vbench/http/http_client.h b/vbench/src/vbench/http/http_client.h
index 9feb3167611..d38f55c2f37 100644
--- a/vbench/src/vbench/http/http_client.h
+++ b/vbench/src/vbench/http/http_client.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/http/http_connection.cpp b/vbench/src/vbench/http/http_connection.cpp
index 610e24f3c74..3c294f13911 100644
--- a/vbench/src/vbench/http/http_connection.cpp
+++ b/vbench/src/vbench/http/http_connection.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "http_connection.h"
diff --git a/vbench/src/vbench/http/http_connection.h b/vbench/src/vbench/http/http_connection.h
index fe768b3dbfe..b0224b5f83d 100644
--- a/vbench/src/vbench/http/http_connection.h
+++ b/vbench/src/vbench/http/http_connection.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/http/http_connection_pool.cpp b/vbench/src/vbench/http/http_connection_pool.cpp
index b949279b7d3..1f705bd7703 100644
--- a/vbench/src/vbench/http/http_connection_pool.cpp
+++ b/vbench/src/vbench/http/http_connection_pool.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "http_connection_pool.h"
diff --git a/vbench/src/vbench/http/http_connection_pool.h b/vbench/src/vbench/http/http_connection_pool.h
index f5c279e7efe..6c938abd692 100644
--- a/vbench/src/vbench/http/http_connection_pool.h
+++ b/vbench/src/vbench/http/http_connection_pool.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/http/http_result_handler.cpp b/vbench/src/vbench/http/http_result_handler.cpp
index f962de349d2..ea835cae239 100644
--- a/vbench/src/vbench/http/http_result_handler.cpp
+++ b/vbench/src/vbench/http/http_result_handler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "http_result_handler.h"
diff --git a/vbench/src/vbench/http/http_result_handler.h b/vbench/src/vbench/http/http_result_handler.h
index 7b41c6196b3..71a3c772275 100644
--- a/vbench/src/vbench/http/http_result_handler.h
+++ b/vbench/src/vbench/http/http_result_handler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/http/server_spec.cpp b/vbench/src/vbench/http/server_spec.cpp
index d1b3bf32112..737af4f15d4 100644
--- a/vbench/src/vbench/http/server_spec.cpp
+++ b/vbench/src/vbench/http/server_spec.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "server_spec.h"
diff --git a/vbench/src/vbench/http/server_spec.h b/vbench/src/vbench/http/server_spec.h
index b1502c5ca4b..1a4fed51c12 100644
--- a/vbench/src/vbench/http/server_spec.h
+++ b/vbench/src/vbench/http/server_spec.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/test/CMakeLists.txt b/vbench/src/vbench/test/CMakeLists.txt
index c9ff18127b2..a713211e74b 100644
--- a/vbench/src/vbench/test/CMakeLists.txt
+++ b/vbench/src/vbench/test/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vbench_test STATIC
SOURCES
request_receptor.cpp
diff --git a/vbench/src/vbench/test/all.h b/vbench/src/vbench/test/all.h
index 6d56f00dd25..2b6be245e71 100644
--- a/vbench/src/vbench/test/all.h
+++ b/vbench/src/vbench/test/all.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// This file was generated by create-all-h.sh
diff --git a/vbench/src/vbench/test/create-all-h.sh b/vbench/src/vbench/test/create-all-h.sh
index 5f7424f0290..158a8b4c198 100644
--- a/vbench/src/vbench/test/create-all-h.sh
+++ b/vbench/src/vbench/test/create-all-h.sh
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#!/bin/sh
cd $(dirname $0)
@@ -6,7 +6,7 @@ out="all.h"
exec > $out
year=$(date +%Y)
cat <<EOF
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// This file was generated by $(basename $0)
diff --git a/vbench/src/vbench/test/request_receptor.cpp b/vbench/src/vbench/test/request_receptor.cpp
index d02e7ca767c..33c9bf5ad57 100644
--- a/vbench/src/vbench/test/request_receptor.cpp
+++ b/vbench/src/vbench/test/request_receptor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "request_receptor.h"
diff --git a/vbench/src/vbench/test/request_receptor.h b/vbench/src/vbench/test/request_receptor.h
index e67093dc681..15262b64906 100644
--- a/vbench/src/vbench/test/request_receptor.h
+++ b/vbench/src/vbench/test/request_receptor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/test/simple_http_result_handler.cpp b/vbench/src/vbench/test/simple_http_result_handler.cpp
index 07ee5fb9a70..5b18ec3c20c 100644
--- a/vbench/src/vbench/test/simple_http_result_handler.cpp
+++ b/vbench/src/vbench/test/simple_http_result_handler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simple_http_result_handler.h"
diff --git a/vbench/src/vbench/test/simple_http_result_handler.h b/vbench/src/vbench/test/simple_http_result_handler.h
index d8185aae363..1d78cacbfa3 100644
--- a/vbench/src/vbench/test/simple_http_result_handler.h
+++ b/vbench/src/vbench/test/simple_http_result_handler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/vbench/CMakeLists.txt b/vbench/src/vbench/vbench/CMakeLists.txt
index 7c88326abc0..99a23d50b84 100644
--- a/vbench/src/vbench/vbench/CMakeLists.txt
+++ b/vbench/src/vbench/vbench/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vbench_vbench_vbench OBJECT
SOURCES
analyzer.cpp
diff --git a/vbench/src/vbench/vbench/analyzer.cpp b/vbench/src/vbench/vbench/analyzer.cpp
index f18412dc224..8cc215eb1df 100644
--- a/vbench/src/vbench/vbench/analyzer.cpp
+++ b/vbench/src/vbench/vbench/analyzer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "analyzer.h"
diff --git a/vbench/src/vbench/vbench/analyzer.h b/vbench/src/vbench/vbench/analyzer.h
index 72ad795fc24..cddae612fe9 100644
--- a/vbench/src/vbench/vbench/analyzer.h
+++ b/vbench/src/vbench/vbench/analyzer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/vbench/dropped_tagger.cpp b/vbench/src/vbench/vbench/dropped_tagger.cpp
index a8d0164e16f..f0f75fa6710 100644
--- a/vbench/src/vbench/vbench/dropped_tagger.cpp
+++ b/vbench/src/vbench/vbench/dropped_tagger.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dropped_tagger.h"
diff --git a/vbench/src/vbench/vbench/dropped_tagger.h b/vbench/src/vbench/vbench/dropped_tagger.h
index e6dbee5a0f0..5c421783cb1 100644
--- a/vbench/src/vbench/vbench/dropped_tagger.h
+++ b/vbench/src/vbench/vbench/dropped_tagger.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/vbench/generator.cpp b/vbench/src/vbench/vbench/generator.cpp
index f88785d435e..b7b72ba2eeb 100644
--- a/vbench/src/vbench/vbench/generator.cpp
+++ b/vbench/src/vbench/vbench/generator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "generator.h"
diff --git a/vbench/src/vbench/vbench/generator.h b/vbench/src/vbench/vbench/generator.h
index dc826e930db..527e03f24c5 100644
--- a/vbench/src/vbench/vbench/generator.h
+++ b/vbench/src/vbench/vbench/generator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/vbench/ignore_before.cpp b/vbench/src/vbench/vbench/ignore_before.cpp
index 01ded22529c..ed3833a1ffb 100644
--- a/vbench/src/vbench/vbench/ignore_before.cpp
+++ b/vbench/src/vbench/vbench/ignore_before.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "ignore_before.h"
diff --git a/vbench/src/vbench/vbench/ignore_before.h b/vbench/src/vbench/vbench/ignore_before.h
index 48b7e08cd26..52d9c218384 100644
--- a/vbench/src/vbench/vbench/ignore_before.h
+++ b/vbench/src/vbench/vbench/ignore_before.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/vbench/latency_analyzer.cpp b/vbench/src/vbench/vbench/latency_analyzer.cpp
index 73b59d03a84..f5514d988c5 100644
--- a/vbench/src/vbench/vbench/latency_analyzer.cpp
+++ b/vbench/src/vbench/vbench/latency_analyzer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "latency_analyzer.h"
#include <cmath>
diff --git a/vbench/src/vbench/vbench/latency_analyzer.h b/vbench/src/vbench/vbench/latency_analyzer.h
index de726e54f0f..fac1be5ef4d 100644
--- a/vbench/src/vbench/vbench/latency_analyzer.h
+++ b/vbench/src/vbench/vbench/latency_analyzer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/vbench/native_factory.cpp b/vbench/src/vbench/vbench/native_factory.cpp
index b418e644af2..0040c87cb0c 100644
--- a/vbench/src/vbench/vbench/native_factory.cpp
+++ b/vbench/src/vbench/vbench/native_factory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "native_factory.h"
diff --git a/vbench/src/vbench/vbench/native_factory.h b/vbench/src/vbench/vbench/native_factory.h
index 8b75fd3544d..663072a2966 100644
--- a/vbench/src/vbench/vbench/native_factory.h
+++ b/vbench/src/vbench/vbench/native_factory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/vbench/qps_analyzer.cpp b/vbench/src/vbench/vbench/qps_analyzer.cpp
index 2c9415a4372..5307fee2fee 100644
--- a/vbench/src/vbench/vbench/qps_analyzer.cpp
+++ b/vbench/src/vbench/vbench/qps_analyzer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "qps_analyzer.h"
diff --git a/vbench/src/vbench/vbench/qps_analyzer.h b/vbench/src/vbench/vbench/qps_analyzer.h
index 75d197ecafd..d5323032f2d 100644
--- a/vbench/src/vbench/vbench/qps_analyzer.h
+++ b/vbench/src/vbench/vbench/qps_analyzer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/vbench/qps_tagger.cpp b/vbench/src/vbench/vbench/qps_tagger.cpp
index 0aa533cae4e..18baead998b 100644
--- a/vbench/src/vbench/vbench/qps_tagger.cpp
+++ b/vbench/src/vbench/vbench/qps_tagger.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "qps_tagger.h"
diff --git a/vbench/src/vbench/vbench/qps_tagger.h b/vbench/src/vbench/vbench/qps_tagger.h
index 0b5f2b81ff1..a32229542a4 100644
--- a/vbench/src/vbench/vbench/qps_tagger.h
+++ b/vbench/src/vbench/vbench/qps_tagger.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/vbench/request.cpp b/vbench/src/vbench/vbench/request.cpp
index c7698436613..77b63c9f394 100644
--- a/vbench/src/vbench/vbench/request.cpp
+++ b/vbench/src/vbench/vbench/request.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "request.h"
diff --git a/vbench/src/vbench/vbench/request.h b/vbench/src/vbench/vbench/request.h
index d434c0c7ed5..a913977a325 100644
--- a/vbench/src/vbench/vbench/request.h
+++ b/vbench/src/vbench/vbench/request.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/vbench/request_dumper.cpp b/vbench/src/vbench/vbench/request_dumper.cpp
index 81928bbe14b..248ecfdccf5 100644
--- a/vbench/src/vbench/vbench/request_dumper.cpp
+++ b/vbench/src/vbench/vbench/request_dumper.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "request_dumper.h"
diff --git a/vbench/src/vbench/vbench/request_dumper.h b/vbench/src/vbench/vbench/request_dumper.h
index 7943519fd19..d6d9c7d5174 100644
--- a/vbench/src/vbench/vbench/request_dumper.h
+++ b/vbench/src/vbench/vbench/request_dumper.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/vbench/request_generator.cpp b/vbench/src/vbench/vbench/request_generator.cpp
index 0b30fc4af4c..9b475b00fc6 100644
--- a/vbench/src/vbench/vbench/request_generator.cpp
+++ b/vbench/src/vbench/vbench/request_generator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "request_generator.h"
diff --git a/vbench/src/vbench/vbench/request_generator.h b/vbench/src/vbench/vbench/request_generator.h
index 5e52d140a30..d088edafd33 100644
--- a/vbench/src/vbench/vbench/request_generator.h
+++ b/vbench/src/vbench/vbench/request_generator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/vbench/request_scheduler.cpp b/vbench/src/vbench/vbench/request_scheduler.cpp
index 9cd778789ec..80aec6c308e 100644
--- a/vbench/src/vbench/vbench/request_scheduler.cpp
+++ b/vbench/src/vbench/vbench/request_scheduler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "request_scheduler.h"
diff --git a/vbench/src/vbench/vbench/request_scheduler.h b/vbench/src/vbench/vbench/request_scheduler.h
index 69be0bba6ca..0776f69ceaa 100644
--- a/vbench/src/vbench/vbench/request_scheduler.h
+++ b/vbench/src/vbench/vbench/request_scheduler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/vbench/request_sink.cpp b/vbench/src/vbench/vbench/request_sink.cpp
index 95dba096f90..f6046e1ae4e 100644
--- a/vbench/src/vbench/vbench/request_sink.cpp
+++ b/vbench/src/vbench/vbench/request_sink.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "request_sink.h"
diff --git a/vbench/src/vbench/vbench/request_sink.h b/vbench/src/vbench/vbench/request_sink.h
index 52e66daec58..14d0a803f9c 100644
--- a/vbench/src/vbench/vbench/request_sink.h
+++ b/vbench/src/vbench/vbench/request_sink.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/vbench/server_tagger.cpp b/vbench/src/vbench/vbench/server_tagger.cpp
index 50a8219eb2a..e5c7cf057d6 100644
--- a/vbench/src/vbench/vbench/server_tagger.cpp
+++ b/vbench/src/vbench/vbench/server_tagger.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "server_tagger.h"
diff --git a/vbench/src/vbench/vbench/server_tagger.h b/vbench/src/vbench/vbench/server_tagger.h
index eb0eafff144..b356de7281b 100644
--- a/vbench/src/vbench/vbench/server_tagger.h
+++ b/vbench/src/vbench/vbench/server_tagger.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/vbench/tagger.cpp b/vbench/src/vbench/vbench/tagger.cpp
index 25a95d7ab22..820db426cd3 100644
--- a/vbench/src/vbench/vbench/tagger.cpp
+++ b/vbench/src/vbench/vbench/tagger.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tagger.h"
diff --git a/vbench/src/vbench/vbench/tagger.h b/vbench/src/vbench/vbench/tagger.h
index 42811493ed6..2fa6b411e1d 100644
--- a/vbench/src/vbench/vbench/tagger.h
+++ b/vbench/src/vbench/vbench/tagger.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/vbench/vbench.cpp b/vbench/src/vbench/vbench/vbench.cpp
index 58854af705e..d636f7a1cd7 100644
--- a/vbench/src/vbench/vbench/vbench.cpp
+++ b/vbench/src/vbench/vbench/vbench.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "vbench.h"
#include <vespa/vespalib/util/exceptions.h>
diff --git a/vbench/src/vbench/vbench/vbench.h b/vbench/src/vbench/vbench/vbench.h
index 0b60555cd60..ddcc316f9e6 100644
--- a/vbench/src/vbench/vbench/vbench.h
+++ b/vbench/src/vbench/vbench/vbench.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vbench/src/vbench/vbench/worker.cpp b/vbench/src/vbench/vbench/worker.cpp
index d5ea58d6b42..a64956f710b 100644
--- a/vbench/src/vbench/vbench/worker.cpp
+++ b/vbench/src/vbench/vbench/worker.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "worker.h"
#include <vbench/http/http_client.h>
diff --git a/vbench/src/vbench/vbench/worker.h b/vbench/src/vbench/vbench/worker.h
index 2aaaa86bf2a..e40f7cd5300 100644
--- a/vbench/src/vbench/vbench/worker.h
+++ b/vbench/src/vbench/vbench/worker.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vdslib/CMakeLists.txt b/vdslib/CMakeLists.txt
index b66f53a4e19..4f0e97ae07d 100644
--- a/vdslib/CMakeLists.txt
+++ b/vdslib/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/vdslib/pom.xml b/vdslib/pom.xml
index 8907b0958f3..a7e10ce7f78 100644
--- a/vdslib/pom.xml
+++ b/vdslib/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/BucketDistribution.java b/vdslib/src/main/java/com/yahoo/vdslib/BucketDistribution.java
index cc35286ce2d..c49fdb93d20 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/BucketDistribution.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/BucketDistribution.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib;
import com.yahoo.document.BucketId;
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/DocumentSummary.java b/vdslib/src/main/java/com/yahoo/vdslib/DocumentSummary.java
index 970c571850e..4ba343acef4 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/DocumentSummary.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/DocumentSummary.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib;
import com.yahoo.vespa.objects.BufferSerializer;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/MetaEntry.java b/vdslib/src/main/java/com/yahoo/vdslib/MetaEntry.java
index d0e75d63ea1..a05f746fe48 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/MetaEntry.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/MetaEntry.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib;
import com.yahoo.io.GrowableByteBuffer;
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/SearchResult.java b/vdslib/src/main/java/com/yahoo/vdslib/SearchResult.java
index 11ad1df3180..e263c292bc8 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/SearchResult.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/SearchResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib;
import com.yahoo.vespa.objects.BufferSerializer;
import com.yahoo.vespa.objects.Deserializer;
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/VisitorStatistics.java b/vdslib/src/main/java/com/yahoo/vdslib/VisitorStatistics.java
index 9eb183e9283..f3bf6f4ed38 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/VisitorStatistics.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/VisitorStatistics.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib;
public class VisitorStatistics {
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/distribution/ConfiguredNode.java b/vdslib/src/main/java/com/yahoo/vdslib/distribution/ConfiguredNode.java
index 0fbf23f7200..92cf8b025e9 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/distribution/ConfiguredNode.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/distribution/ConfiguredNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib.distribution;
/**
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 81e0e3e86c6..04a577db554 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/distribution/Distribution.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/distribution/Distribution.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib.distribution;
import com.yahoo.collections.BobHash;
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/distribution/Group.java b/vdslib/src/main/java/com/yahoo/vdslib/distribution/Group.java
index 458ab6e291c..b926ee3be8d 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/distribution/Group.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/distribution/Group.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib.distribution;
import java.util.*;
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/distribution/GroupVisitor.java b/vdslib/src/main/java/com/yahoo/vdslib/distribution/GroupVisitor.java
index 0bf0a367ffd..df5a6e5a9d1 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/distribution/GroupVisitor.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/distribution/GroupVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib.distribution;
public interface GroupVisitor {
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/distribution/RandomGen.java b/vdslib/src/main/java/com/yahoo/vdslib/distribution/RandomGen.java
index 09492c7d7a6..472322f4e80 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/distribution/RandomGen.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/distribution/RandomGen.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib.distribution;
public class RandomGen extends java.util.Random {
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/distribution/package-info.java b/vdslib/src/main/java/com/yahoo/vdslib/distribution/package-info.java
index 7be87f6fb54..a7a673f8ae6 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/distribution/package-info.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/distribution/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vdslib.distribution;
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/package-info.java b/vdslib/src/main/java/com/yahoo/vdslib/package-info.java
index 9afe8156dbd..e4f73913b95 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/package-info.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vdslib;
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/state/ClusterState.java b/vdslib/src/main/java/com/yahoo/vdslib/state/ClusterState.java
index c536fc0f4cd..e8af249422f 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/state/ClusterState.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/state/ClusterState.java
@@ -1,14 +1,15 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib.state;
import com.yahoo.text.StringUtilities;
import java.text.ParseException;
-import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.StringTokenizer;
-import java.util.TreeMap;
-import java.util.TreeSet;
/**
* Be careful about changing this class, as it mirrors the ClusterState in C++.
@@ -18,25 +19,183 @@ public class ClusterState implements Cloneable {
private static final NodeState DEFAULT_STORAGE_UP_NODE_STATE = new NodeState(NodeType.STORAGE, State.UP);
private static final NodeState DEFAULT_DISTRIBUTOR_UP_NODE_STATE = new NodeState(NodeType.DISTRIBUTOR, State.UP);
+ private static final NodeState DEFAULT_STORAGE_DOWN_NODE_STATE = new NodeState(NodeType.STORAGE, State.DOWN);
+ private static final NodeState DEFAULT_DISTRIBUTOR_DOWN_NODE_STATE = new NodeState(NodeType.DISTRIBUTOR, State.DOWN);
- private int version = 0;
- private State state = State.DOWN;
- // nodeStates maps each of the non-up nodes that have an index <= the node count for its type.
- private Map<Node, NodeState> nodeStates = new TreeMap<>();
+ /**
+ * Maintains a bitset where all non-down nodes have a bit set. All nodes that differs from defaultUp
+ * and defaultDown are store explicit in a hash map.
+ */
+ private static class Nodes {
+ private int logicalNodeCount;
+ private final NodeType type;
+ private final BitSet upNodes;
+ private final Map<Integer, NodeState> nodeStates = new HashMap<>();
+ Nodes(NodeType type) {
+ this.type = type;
+ upNodes = new BitSet();
+ }
+ Nodes(Nodes b) {
+ logicalNodeCount = b.logicalNodeCount;
+ type = b.type;
+ upNodes = (BitSet) b.upNodes.clone();
+ b.nodeStates.forEach((key, value) -> nodeStates.put(key, value.clone()));
+ }
+
+ void updateMaxIndex(int index) {
+ if (index > logicalNodeCount) {
+ upNodes.set(logicalNodeCount, index);
+ logicalNodeCount = index;
+ }
+ }
+
+ int getLogicalNodeCount() { return logicalNodeCount; }
+
+ NodeState getNodeState(int index) {
+ NodeState ns = nodeStates.get(index);
+ if (ns != null) return ns;
+ return (index >= getLogicalNodeCount() || ! upNodes.get(index))
+ ? new NodeState(type, State.DOWN)
+ : new NodeState(type, State.UP);
+ }
+
+ private void validateInput(Node node, NodeState ns) {
+ ns.verifyValidInSystemState(node.getType());
+ if (node.getType() != type) {
+ throw new IllegalArgumentException("NodeType '" + node.getType() + "' differs from '" + type + "'");
+ }
+ }
+
+ void setNodeState(Node node, NodeState ns) {
+ validateInput(node, ns);
+ int index = node.getIndex();
+ if (index >= logicalNodeCount) {
+ logicalNodeCount = index + 1;
+ }
+ setNodeStateInternal(index, ns);
+ }
+
+ void addNodeState(Node node, NodeState ns) {
+ validateInput(node, ns);
+ int index = node.getIndex();
+ updateMaxIndex(index + 1);
+ setNodeStateInternal(index, ns);
+ }
+
+ private static boolean equalsWithDescription(NodeState a, NodeState b) {
+ // This is due to NodeState.equals considers semantic equality, and description is not part of that.
+ return a.equals(b) && ((a.getState() != State.DOWN) || a.getDescription().equals(b.getDescription()));
+ }
+
+ private void setNodeStateInternal(int index, NodeState ns) {
+ nodeStates.remove(index);
+ if (ns.getState() == State.DOWN) {
+ upNodes.clear(index);
+ if ( ! equalsWithDescription(defaultDown(), ns)) {
+ nodeStates.put(index, ns);
+ }
+ } else {
+ upNodes.set(index);
+ if ( ! equalsWithDescription(defaultUp(), ns)) {
+ nodeStates.put(index, ns);
+ }
+ }
+ }
+
+ boolean similarToImpl(Nodes other, final NodeStateCmp nodeStateCmp) {
+ // TODO verify behavior of C++ impl against this
+ if (logicalNodeCount != other.logicalNodeCount) return false;
+ if (type != other.type) return false;
+ if ( ! upNodes.equals(other.upNodes)) return false;
+ for (Integer node : unionNodeSetWith(other.nodeStates.keySet())) {
+ final NodeState lhs = nodeStates.get(node);
+ final NodeState rhs = other.nodeStates.get(node);
+ if (!nodeStateCmp.similar(type, lhs, rhs)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private Set<Integer> unionNodeSetWith(final Set<Integer> otherNodes) {
+ final Set<Integer> unionNodeSet = new HashSet<>(nodeStates.keySet());
+ unionNodeSet.addAll(otherNodes);
+ return unionNodeSet;
+ }
+
+ @Override
+ public String toString() { return toString(false); }
+
+ String toString(boolean verbose) {
+ StringBuilder sb = new StringBuilder();
+
+ int nodeCount = verbose ? getLogicalNodeCount() : upNodes.length();
+ if ( nodeCount > 0 ) {
+ sb.append(type == NodeType.DISTRIBUTOR ? " distributor:" : " storage:").append(nodeCount);
+ for (int i = 0; i < nodeCount; i++) {
+ String nodeState = getNodeState(i).serialize(i, verbose);
+ if (!nodeState.isEmpty()) {
+ sb.append(' ').append(nodeState);
+ }
+ }
+ }
+ return sb.toString();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (! (obj instanceof Nodes)) return false;
+ Nodes b = (Nodes) obj;
+ if (logicalNodeCount != b.logicalNodeCount) return false;
+ if (type != b.type) return false;
+ if (!upNodes.equals(b.upNodes)) return false;
+ if (!nodeStates.equals(b.nodeStates)) return false;
+ return true;
+ }
- // TODO: Change to one count for distributor and one for storage, rather than an array
- // TODO: RenameFunction, this is not the highest node count but the highest index
- private ArrayList<Integer> nodeCount = new ArrayList<>(2);
+ @Override
+ public int hashCode() {
+ return Objects.hash(logicalNodeCount, type, nodeStates, upNodes);
+ }
+ private NodeState defaultDown() {
+ return type == NodeType.STORAGE
+ ? DEFAULT_STORAGE_DOWN_NODE_STATE
+ : DEFAULT_DISTRIBUTOR_DOWN_NODE_STATE;
+ }
+ private NodeState defaultUp() {
+ return defaultUpNodeState(type);
+ }
+ }
+ private int version = 0;
+ private State state = State.DOWN;
private String description = "";
private int distributionBits = 16;
+ private final Nodes distributorNodes;
+ private final Nodes storageNodes;
+
public ClusterState(String serialized) throws ParseException {
- nodeCount.add(0);
- nodeCount.add(0);
+ distributorNodes = new Nodes(NodeType.DISTRIBUTOR);
+ storageNodes = new Nodes(NodeType.STORAGE);
deserialize(serialized);
}
+ public ClusterState(ClusterState b) {
+ version = b.version;
+ state = b.state;
+ description = b.description;
+ distributionBits = b.distributionBits;
+ distributorNodes = new Nodes(b.distributorNodes);
+ storageNodes = new Nodes(b.storageNodes);
+ }
+
+ private Nodes getNodes(NodeType type) {
+ return (type == NodeType.STORAGE)
+ ? storageNodes
+ : (type == NodeType.DISTRIBUTOR) ? distributorNodes : null;
+ }
+
/**
* Parse a given cluster state string into a returned ClusterState instance, wrapping any
* parse exceptions in a RuntimeException.
@@ -54,20 +213,7 @@ public class ClusterState implements Cloneable {
}
public ClusterState clone() {
- try{
- ClusterState state = (ClusterState) super.clone();
- state.nodeStates = new TreeMap<>();
- for (Map.Entry<Node, NodeState> entry : nodeStates.entrySet()) {
- state.nodeStates.put(entry.getKey(), entry.getValue().clone());
- }
- state.nodeCount = new ArrayList<>(2);
- state.nodeCount.add(nodeCount.get(0));
- state.nodeCount.add(nodeCount.get(1));
- return state;
- } catch (CloneNotSupportedException e) {
- assert(false); // Should never happen
- return null;
- }
+ return new ClusterState(this);
}
@Override
@@ -77,8 +223,8 @@ public class ClusterState implements Cloneable {
if (version != other.version
|| !state.equals(other.state)
|| distributionBits != other.distributionBits
- || !nodeCount.equals(other.nodeCount)
- || !nodeStates.equals(other.nodeStates))
+ || !distributorNodes.equals(other.distributorNodes)
+ || !storageNodes.equals(other.storageNodes))
{
return false;
}
@@ -87,7 +233,7 @@ public class ClusterState implements Cloneable {
@Override
public int hashCode() {
- return java.util.Objects.hash(version, state, distributionBits, nodeCount, nodeStates);
+ return java.util.Objects.hash(version, state, distributionBits, distributorNodes, storageNodes);
}
@FunctionalInterface
@@ -106,7 +252,7 @@ public class ClusterState implements Cloneable {
return similarToImpl(other, this::normalizedNodeStateSimilarToIgnoringInitProgress);
}
- private boolean similarToImpl(final ClusterState other, final NodeStateCmp nodeStateCmp) {
+ private boolean similarToImpl(ClusterState other, final NodeStateCmp nodeStateCmp) {
if (other == this) {
return true; // We're definitely similar to ourselves.
}
@@ -119,23 +265,11 @@ public class ClusterState implements Cloneable {
if (!metaInformationSimilarTo(other)) {
return false;
}
- // TODO verify behavior of C++ impl against this
- for (Node node : unionNodeSetWith(other.nodeStates.keySet())) {
- final NodeState lhs = nodeStates.get(node);
- final NodeState rhs = other.nodeStates.get(node);
- if (!nodeStateCmp.similar(node.getType(), lhs, rhs)) {
- return false;
- }
- }
+ if ( !distributorNodes.similarToImpl(other.distributorNodes, nodeStateCmp)) return false;
+ if ( !storageNodes.similarToImpl(other.storageNodes, nodeStateCmp)) return false;
return true;
}
- private Set<Node> unionNodeSetWith(final Set<Node> otherNodes) {
- final Set<Node> unionNodeSet = new TreeSet<>(nodeStates.keySet());
- unionNodeSet.addAll(otherNodes);
- return unionNodeSet;
- }
-
private boolean metaInformationSimilarTo(final ClusterState other) {
if (version != other.version || !state.equals(other.state)) {
return false;
@@ -143,7 +277,7 @@ public class ClusterState implements Cloneable {
if (distributionBits != other.distributionBits) {
return false;
}
- return nodeCount.equals(other.nodeCount);
+ return true;
}
private boolean normalizedNodeStateSimilarTo(final NodeType nodeType, final NodeState lhs, final NodeState rhs) {
@@ -178,12 +312,7 @@ public class ClusterState implements Cloneable {
void addNodeState() throws ParseException {
if (!empty) {
NodeState ns = NodeState.deserialize(node.getType(), sb.toString());
- if (!ns.equals(defaultUpNodeState(node.getType()))) {
- nodeStates.put(node, ns);
- }
- if (nodeCount.get(node.getType().ordinal()) <= node.getIndex()) {
- nodeCount.set(node.getType().ordinal(), node.getIndex() + 1);
- }
+ getNodes(node.getType()).addNodeState(node, ns);
}
empty = true;
sb = new StringBuilder();
@@ -257,9 +386,7 @@ public class ClusterState implements Cloneable {
} catch (Exception e) {
throw new ParseException("Illegal node count '" + value + "' in state: " + serialized, 0);
}
- if (nodeCount > this.nodeCount.get(nodeType.ordinal())) {
- this.nodeCount.set(nodeType.ordinal(), nodeCount);
- }
+ getNodes(nodeType).updateMaxIndex(nodeCount);
continue;
}
int dot2 = key.indexOf('.', dot + 1);
@@ -269,8 +396,8 @@ public class ClusterState implements Cloneable {
} else {
node = new Node(nodeType, Integer.valueOf(key.substring(dot + 1, dot2)));
}
- if (node.getIndex() >= this.nodeCount.get(nodeType.ordinal())) {
- throw new ParseException("Cannot index " + nodeType + " node " + node.getIndex() + " of " + this.nodeCount.get(nodeType.ordinal()) + " in state: " + serialized, 0);
+ if (node.getIndex() >= getNodeCount(nodeType)) {
+ throw new ParseException("Cannot index " + nodeType + " node " + node.getIndex() + " of " + getNodeCount(nodeType) + " in state: " + serialized, 0);
}
if (!nodeData.node.equals(node)) {
nodeData.addNodeState();
@@ -289,7 +416,6 @@ public class ClusterState implements Cloneable {
// Ignore unknown nodeStates
}
nodeData.addNodeState();
- removeLastNodesDownWithoutReason();
}
public String getTextualDifference(ClusterState other) {
@@ -363,7 +489,7 @@ public class ClusterState implements Cloneable {
* E.g. if node X is down and without description, but nodex X-1 is up, then Y is 1.
* The node count for distributors is then X + 1 - Y.
*/
- public int getNodeCount(NodeType type) { return nodeCount.get(type.ordinal()); }
+ public int getNodeCount(NodeType type) { return getNodes(type).getLogicalNodeCount(); }
/**
* Returns the state of a node.
@@ -371,9 +497,7 @@ public class ClusterState implements Cloneable {
* and DOWN otherwise.
*/
public NodeState getNodeState(Node node) {
- if (node.getIndex() >= nodeCount.get(node.getType().ordinal()))
- return new NodeState(node.getType(), State.DOWN);
- return nodeStates.getOrDefault(node, new NodeState(node.getType(), State.UP));
+ return getNodes(node.getType()).getNodeState(node.getIndex());
}
/**
@@ -383,35 +507,7 @@ public class ClusterState implements Cloneable {
*/
public void setNodeState(Node node, NodeState newState) {
newState.verifyValidInSystemState(node.getType());
- if (node.getIndex() >= nodeCount.get(node.getType().ordinal())) {
- for (int i= nodeCount.get(node.getType().ordinal()); i<node.getIndex(); ++i) {
- nodeStates.put(new Node(node.getType(), i), new NodeState(node.getType(), State.DOWN));
- }
- nodeCount.set(node.getType().ordinal(), node.getIndex() + 1);
- }
- if (newState.equals(new NodeState(node.getType(), State.UP))) {
- nodeStates.remove(node);
- } else {
- nodeStates.put(node, newState);
- }
- if (newState.getState().equals(State.DOWN)) {
- // We might be setting the last node down, so we can remove some states
- removeLastNodesDownWithoutReason();
- }
- }
-
- private void removeLastNodesDownWithoutReason() {
- for (NodeType nodeType : NodeType.values()) {
- for (int index = nodeCount.get(nodeType.ordinal()) - 1; index >= 0; --index) {
- Node node = new Node(nodeType, index);
- NodeState nodeState = nodeStates.get(node);
- if (nodeState == null) break; // Node not existing is up
- if ( ! nodeState.getState().equals(State.DOWN)) break; // Node not down can not be removed
- if (nodeState.hasDescription()) break; // Node have reason to be down. Don't remove node as we will forget reason
- nodeStates.remove(node);
- nodeCount.set(nodeType.ordinal(), node.getIndex());
- }
- }
+ getNodes(node.getType()).setNodeState(node, newState);
}
public String getDescription() { return description; }
@@ -440,35 +536,9 @@ public class ClusterState implements Cloneable {
sb.append(" bits:").append(distributionBits);
}
- int distributorNodeCount = getNodeCount(NodeType.DISTRIBUTOR);
- int storageNodeCount = getNodeCount(NodeType.STORAGE);
- // If not printing verbose, we're not printing descriptions, so we can remove tailing nodes that are down that has descriptions too
- if (!verbose) {
- while (distributorNodeCount > 0 && getNodeState(new Node(NodeType.DISTRIBUTOR, distributorNodeCount - 1)).getState().equals(State.DOWN)) --distributorNodeCount;
- while (storageNodeCount > 0 && getNodeState(new Node(NodeType.STORAGE, storageNodeCount - 1)).getState().equals(State.DOWN)) --storageNodeCount;
- }
- if (distributorNodeCount > 0){
- sb.append(" distributor:").append(distributorNodeCount);
- for (Map.Entry<Node, NodeState> entry : nodeStates.entrySet()) {
- if (entry.getKey().getType().equals(NodeType.DISTRIBUTOR) && entry.getKey().getIndex() < distributorNodeCount) {
- String nodeState = entry.getValue().serialize(entry.getKey().getIndex(), verbose);
- if (!nodeState.isEmpty()) {
- sb.append(' ').append(nodeState);
- }
- }
- }
- }
- if (storageNodeCount > 0){
- sb.append(" storage:").append(storageNodeCount);
- for (Map.Entry<Node, NodeState> entry : nodeStates.entrySet()) {
- if (entry.getKey().getType().equals(NodeType.STORAGE) && entry.getKey().getIndex() < storageNodeCount) {
- String nodeState = entry.getValue().serialize(entry.getKey().getIndex(), verbose);
- if (!nodeState.isEmpty()) {
- sb.append(' ').append(nodeState);
- }
- }
- }
- }
+ sb.append(distributorNodes.toString(verbose));
+ sb.append(storageNodes.toString(verbose));
+
if (sb.length() > 0) { // Remove first space if not empty
sb.deleteCharAt(0);
}
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/state/Diff.java b/vdslib/src/main/java/com/yahoo/vdslib/state/Diff.java
index 7d495b4a2f2..f4eb9ff8dde 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/state/Diff.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/state/Diff.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib.state;
import java.util.LinkedList;
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/state/Node.java b/vdslib/src/main/java/com/yahoo/vdslib/state/Node.java
index 89bdcc53748..0147ab0d056 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/state/Node.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/state/Node.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib.state;
/**
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/state/NodeState.java b/vdslib/src/main/java/com/yahoo/vdslib/state/NodeState.java
index 0edf30bc1ff..9f6efd7b5e0 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/state/NodeState.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/state/NodeState.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib.state;
import com.yahoo.text.StringUtilities;
@@ -51,6 +51,7 @@ public class NodeState implements Cloneable {
public boolean equals(Object o) {
if (!(o instanceof NodeState)) { return false; }
NodeState ns = (NodeState) o;
+ // Note that 'description' is not considered as it carries semantics.
if (state != ns.state
|| Math.abs(capacity - ns.capacity) > 0.0000000001
|| Math.abs(initProgress - ns.initProgress) > 0.0000000001
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/state/NodeType.java b/vdslib/src/main/java/com/yahoo/vdslib/state/NodeType.java
index f099d90c0c7..1472525a1ea 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/state/NodeType.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/state/NodeType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib.state;
public enum NodeType {
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/state/State.java b/vdslib/src/main/java/com/yahoo/vdslib/state/State.java
index 6a6bab2ac66..d4baff5861a 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/state/State.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/state/State.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib.state;
import java.util.ArrayList;
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/state/package-info.java b/vdslib/src/main/java/com/yahoo/vdslib/state/package-info.java
index 3ca4fc5d1da..6b9edfd8f43 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/state/package-info.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/state/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vdslib.state;
diff --git a/vdslib/src/test/java/com/yahoo/vdslib/BucketDistributionTestCase.java b/vdslib/src/test/java/com/yahoo/vdslib/BucketDistributionTestCase.java
index b4f3a58c373..7257bf0cc7f 100644
--- a/vdslib/src/test/java/com/yahoo/vdslib/BucketDistributionTestCase.java
+++ b/vdslib/src/test/java/com/yahoo/vdslib/BucketDistributionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib;
import com.yahoo.document.BucketId;
diff --git a/vdslib/src/test/java/com/yahoo/vdslib/SearchResultTestCase.java b/vdslib/src/test/java/com/yahoo/vdslib/SearchResultTestCase.java
index c583735418e..3f3e8fd0f8b 100644
--- a/vdslib/src/test/java/com/yahoo/vdslib/SearchResultTestCase.java
+++ b/vdslib/src/test/java/com/yahoo/vdslib/SearchResultTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib;
import org.junit.Test;
diff --git a/vdslib/src/test/java/com/yahoo/vdslib/distribution/CrossPlatformTestFactory.java b/vdslib/src/test/java/com/yahoo/vdslib/distribution/CrossPlatformTestFactory.java
index 7dadd9560b5..70a11ff530f 100644
--- a/vdslib/src/test/java/com/yahoo/vdslib/distribution/CrossPlatformTestFactory.java
+++ b/vdslib/src/test/java/com/yahoo/vdslib/distribution/CrossPlatformTestFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib.distribution;
import java.io.BufferedReader;
diff --git a/vdslib/src/test/java/com/yahoo/vdslib/distribution/DistributionTestCase.java b/vdslib/src/test/java/com/yahoo/vdslib/distribution/DistributionTestCase.java
index 0d34cd70953..bd1511acdbd 100644
--- a/vdslib/src/test/java/com/yahoo/vdslib/distribution/DistributionTestCase.java
+++ b/vdslib/src/test/java/com/yahoo/vdslib/distribution/DistributionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib.distribution;
import com.yahoo.vespa.config.content.StorDistributionConfig;
diff --git a/vdslib/src/test/java/com/yahoo/vdslib/distribution/DistributionTestFactory.java b/vdslib/src/test/java/com/yahoo/vdslib/distribution/DistributionTestFactory.java
index ed2104e03bc..225bc17c552 100644
--- a/vdslib/src/test/java/com/yahoo/vdslib/distribution/DistributionTestFactory.java
+++ b/vdslib/src/test/java/com/yahoo/vdslib/distribution/DistributionTestFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib.distribution;
import com.yahoo.config.subscription.ConfigGetter;
diff --git a/vdslib/src/test/java/com/yahoo/vdslib/distribution/GroupTestCase.java b/vdslib/src/test/java/com/yahoo/vdslib/distribution/GroupTestCase.java
index d1f270eb40b..353f2bf4ebc 100644
--- a/vdslib/src/test/java/com/yahoo/vdslib/distribution/GroupTestCase.java
+++ b/vdslib/src/test/java/com/yahoo/vdslib/distribution/GroupTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib.distribution;
import org.junit.Test;
diff --git a/vdslib/src/test/java/com/yahoo/vdslib/state/ClusterStateTestCase.java b/vdslib/src/test/java/com/yahoo/vdslib/state/ClusterStateTestCase.java
index dbc8888cfda..77dd37b3ebf 100644
--- a/vdslib/src/test/java/com/yahoo/vdslib/state/ClusterStateTestCase.java
+++ b/vdslib/src/test/java/com/yahoo/vdslib/state/ClusterStateTestCase.java
@@ -1,9 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib.state;
import org.junit.Test;
import java.text.ParseException;
+import java.util.BitSet;
import java.util.function.BiFunction;
import static org.junit.Assert.assertEquals;
@@ -311,6 +312,17 @@ public class ClusterStateTestCase{
}
@Test
+ public void testBitSet() {
+ BitSet b = new BitSet();
+ assertEquals(0, b.length());
+ b.set(7);
+ b.set(107);
+ assertEquals(108, b.length());
+ b.clear(107);
+ assertEquals(8, b.length());
+ }
+
+ @Test
public void testVersionAndClusterStates() throws ParseException {
ClusterState state = new ClusterState("version:4 cluster:i distributor:2 .1.s:i storage:2 .0.s:i .0.i:0.345");
assertEquals(4, state.getVersion());
diff --git a/vdslib/src/test/java/com/yahoo/vdslib/state/NodeStateTestCase.java b/vdslib/src/test/java/com/yahoo/vdslib/state/NodeStateTestCase.java
index a6d9778cdd3..1ce3655b394 100644
--- a/vdslib/src/test/java/com/yahoo/vdslib/state/NodeStateTestCase.java
+++ b/vdslib/src/test/java/com/yahoo/vdslib/state/NodeStateTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib.state;
import org.junit.Test;
diff --git a/vdslib/src/test/java/com/yahoo/vdslib/state/NodeTest.java b/vdslib/src/test/java/com/yahoo/vdslib/state/NodeTest.java
index ce0af6254cb..971b4782ab0 100644
--- a/vdslib/src/test/java/com/yahoo/vdslib/state/NodeTest.java
+++ b/vdslib/src/test/java/com/yahoo/vdslib/state/NodeTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vdslib.state;
import org.junit.Test;
diff --git a/vdslib/src/tests/CMakeLists.txt b/vdslib/src/tests/CMakeLists.txt
index 9b74e18a668..aa46b24a33a 100644
--- a/vdslib/src/tests/CMakeLists.txt
+++ b/vdslib/src/tests/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Runner for unit tests written in gtest.
# NOTE: All new test classes should be added here.
diff --git a/vdslib/src/tests/container/CMakeLists.txt b/vdslib/src/tests/container/CMakeLists.txt
index eab09b3e4c9..775d4b0b8fa 100644
--- a/vdslib/src/tests/container/CMakeLists.txt
+++ b/vdslib/src/tests/container/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vdslib_containertest
SOURCES
parameterstest.cpp
diff --git a/vdslib/src/tests/container/documentsummarytest.cpp b/vdslib/src/tests/container/documentsummarytest.cpp
index 1a74e2970a3..4021faf5962 100644
--- a/vdslib/src/tests/container/documentsummarytest.cpp
+++ b/vdslib/src/tests/container/documentsummarytest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/testdocman.h>
#include <vespa/vdslib/container/documentsummary.h>
diff --git a/vdslib/src/tests/container/parameterstest.cpp b/vdslib/src/tests/container/parameterstest.cpp
index 95a29fb97be..07416f13913 100644
--- a/vdslib/src/tests/container/parameterstest.cpp
+++ b/vdslib/src/tests/container/parameterstest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vdslib/container/parameters.h>
#include <vespa/vespalib/util/growablebytebuffer.h>
diff --git a/vdslib/src/tests/container/searchresulttest.cpp b/vdslib/src/tests/container/searchresulttest.cpp
index 76cbe0b8ceb..8433a6008a1 100644
--- a/vdslib/src/tests/container/searchresulttest.cpp
+++ b/vdslib/src/tests/container/searchresulttest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/base/testdocman.h>
#include <vespa/vdslib/container/searchresult.h>
diff --git a/vdslib/src/tests/distribution/CMakeLists.txt b/vdslib/src/tests/distribution/CMakeLists.txt
index d2af1924793..c4ae8b0291c 100644
--- a/vdslib/src/tests/distribution/CMakeLists.txt
+++ b/vdslib/src/tests/distribution/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vdslib_testdistribution
SOURCES
distributiontest.cpp
diff --git a/vdslib/src/tests/distribution/distributiontest.cpp b/vdslib/src/tests/distribution/distributiontest.cpp
index 7210ebd960d..6b77f47b4cd 100644
--- a/vdslib/src/tests/distribution/distributiontest.cpp
+++ b/vdslib/src/tests/distribution/distributiontest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config-stor-distribution.h>
#include <vespa/config/helper/configfetcher.h>
diff --git a/vdslib/src/tests/distribution/grouptest.cpp b/vdslib/src/tests/distribution/grouptest.cpp
index 130efe15432..bdef7234c3e 100644
--- a/vdslib/src/tests/distribution/grouptest.cpp
+++ b/vdslib/src/tests/distribution/grouptest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vdslib/distribution/group.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/vdslib/src/tests/distribution/idealnodecalculatorimpltest.cpp b/vdslib/src/tests/distribution/idealnodecalculatorimpltest.cpp
index 5bca51f8111..4159491097c 100644
--- a/vdslib/src/tests/distribution/idealnodecalculatorimpltest.cpp
+++ b/vdslib/src/tests/distribution/idealnodecalculatorimpltest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/config-stor-distribution.h>
#include <vespa/vdslib/distribution/idealnodecalculatorimpl.h>
diff --git a/vdslib/src/tests/state/CMakeLists.txt b/vdslib/src/tests/state/CMakeLists.txt
index 20143ec1cee..306bda5dc6c 100644
--- a/vdslib/src/tests/state/CMakeLists.txt
+++ b/vdslib/src/tests/state/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vdslib_teststate
SOURCES
cluster_state_bundle_test.cpp
diff --git a/vdslib/src/tests/state/cluster_state_bundle_test.cpp b/vdslib/src/tests/state/cluster_state_bundle_test.cpp
index 75a37218913..d88a15c593f 100644
--- a/vdslib/src/tests/state/cluster_state_bundle_test.cpp
+++ b/vdslib/src/tests/state/cluster_state_bundle_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vdslib/state/cluster_state_bundle.h>
#include <vespa/vdslib/state/clusterstate.h>
diff --git a/vdslib/src/tests/state/clusterstatetest.cpp b/vdslib/src/tests/state/clusterstatetest.cpp
index 2dda26f8882..a08ec007f55 100644
--- a/vdslib/src/tests/state/clusterstatetest.cpp
+++ b/vdslib/src/tests/state/clusterstatetest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/bucket/bucketidfactory.h>
#include <vespa/vdslib/state/clusterstate.h>
#include <vespa/vdslib/state/random.h>
diff --git a/vdslib/src/tests/state/generate_plots.sh b/vdslib/src/tests/state/generate_plots.sh
index 1031f6ca343..c9f11af3dee 100755
--- a/vdslib/src/tests/state/generate_plots.sh
+++ b/vdslib/src/tests/state/generate_plots.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
yum ls gnuplot &> /dev/null
diff --git a/vdslib/src/tests/state/grouptest.cpp b/vdslib/src/tests/state/grouptest.cpp
index 5e51c139133..cd4dc0eab5a 100644
--- a/vdslib/src/tests/state/grouptest.cpp
+++ b/vdslib/src/tests/state/grouptest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vdslib/distribution/group.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/vdslib/src/tests/state/nodestatetest.cpp b/vdslib/src/tests/state/nodestatetest.cpp
index 370c20eef8d..000542e77fe 100644
--- a/vdslib/src/tests/state/nodestatetest.cpp
+++ b/vdslib/src/tests/state/nodestatetest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vdslib/state/nodestate.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/vdslib/src/vespa/vdslib/CMakeLists.txt b/vdslib/src/vespa/vdslib/CMakeLists.txt
index ea19664a45f..550fc711d13 100644
--- a/vdslib/src/vespa/vdslib/CMakeLists.txt
+++ b/vdslib/src/vespa/vdslib/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vdslib
SOURCES
$<TARGET_OBJECTS:vdslib_container>
diff --git a/vdslib/src/vespa/vdslib/container/CMakeLists.txt b/vdslib/src/vespa/vdslib/container/CMakeLists.txt
index 614c08e5947..4763604a44d 100644
--- a/vdslib/src/vespa/vdslib/container/CMakeLists.txt
+++ b/vdslib/src/vespa/vdslib/container/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vdslib_container OBJECT
SOURCES
dummycppfile.cpp
diff --git a/vdslib/src/vespa/vdslib/container/documentsummary.cpp b/vdslib/src/vespa/vdslib/container/documentsummary.cpp
index c7b8fc84026..74497b4ad32 100644
--- a/vdslib/src/vespa/vdslib/container/documentsummary.cpp
+++ b/vdslib/src/vespa/vdslib/container/documentsummary.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documentsummary.h"
#include <vespa/vespalib/util/growablebytebuffer.h>
diff --git a/vdslib/src/vespa/vdslib/container/documentsummary.h b/vdslib/src/vespa/vdslib/container/documentsummary.h
index 375546920ec..2c23e51319b 100644
--- a/vdslib/src/vespa/vdslib/container/documentsummary.h
+++ b/vdslib/src/vespa/vdslib/container/documentsummary.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/memory.h>
diff --git a/vdslib/src/vespa/vdslib/container/dummycppfile.cpp b/vdslib/src/vespa/vdslib/container/dummycppfile.cpp
index 30acaa11622..cb71ec9f7d7 100644
--- a/vdslib/src/vespa/vdslib/container/dummycppfile.cpp
+++ b/vdslib/src/vespa/vdslib/container/dummycppfile.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// This file exist because make make can't install headers from a directory
// without having a cpp file to build..
diff --git a/vdslib/src/vespa/vdslib/container/parameters.cpp b/vdslib/src/vespa/vdslib/container/parameters.cpp
index 9c843df1caa..85ba6318f7c 100644
--- a/vdslib/src/vespa/vdslib/container/parameters.cpp
+++ b/vdslib/src/vespa/vdslib/container/parameters.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "parameters.hpp"
#include <vespa/document/util/bytebuffer.h>
diff --git a/vdslib/src/vespa/vdslib/container/parameters.h b/vdslib/src/vespa/vdslib/container/parameters.h
index 61649b29bbe..34568cc85cb 100644
--- a/vdslib/src/vespa/vdslib/container/parameters.h
+++ b/vdslib/src/vespa/vdslib/container/parameters.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class storage::api::Parameters
* @ingroup messageapi
diff --git a/vdslib/src/vespa/vdslib/container/parameters.hpp b/vdslib/src/vespa/vdslib/container/parameters.hpp
index d7ad1d266cb..a00c66e04f4 100644
--- a/vdslib/src/vespa/vdslib/container/parameters.hpp
+++ b/vdslib/src/vespa/vdslib/container/parameters.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "parameters.h"
diff --git a/vdslib/src/vespa/vdslib/container/searchresult.cpp b/vdslib/src/vespa/vdslib/container/searchresult.cpp
index 67790f42ea8..12d5544d6ef 100644
--- a/vdslib/src/vespa/vdslib/container/searchresult.cpp
+++ b/vdslib/src/vespa/vdslib/container/searchresult.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "searchresult.h"
#include <vespa/document/util/bytebuffer.h>
diff --git a/vdslib/src/vespa/vdslib/container/searchresult.h b/vdslib/src/vespa/vdslib/container/searchresult.h
index fc893f6b5be..6b6e0aaae12 100644
--- a/vdslib/src/vespa/vdslib/container/searchresult.h
+++ b/vdslib/src/vespa/vdslib/container/searchresult.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/memory.h>
diff --git a/vdslib/src/vespa/vdslib/container/visitorstatistics.cpp b/vdslib/src/vespa/vdslib/container/visitorstatistics.cpp
index e236cfb1646..4dc043c4654 100644
--- a/vdslib/src/vespa/vdslib/container/visitorstatistics.cpp
+++ b/vdslib/src/vespa/vdslib/container/visitorstatistics.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "visitorstatistics.h"
#include <ostream>
diff --git a/vdslib/src/vespa/vdslib/container/visitorstatistics.h b/vdslib/src/vespa/vdslib/container/visitorstatistics.h
index 746910d8447..f4e03b00bee 100644
--- a/vdslib/src/vespa/vdslib/container/visitorstatistics.h
+++ b/vdslib/src/vespa/vdslib/container/visitorstatistics.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/util/printable.h>
diff --git a/vdslib/src/vespa/vdslib/defs.h b/vdslib/src/vespa/vdslib/defs.h
index 18610d1e218..f1c6a417b69 100644
--- a/vdslib/src/vespa/vdslib/defs.h
+++ b/vdslib/src/vespa/vdslib/defs.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vdslib/src/vespa/vdslib/distribution/CMakeLists.txt b/vdslib/src/vespa/vdslib/distribution/CMakeLists.txt
index 44693b42fe8..0d9342291e8 100644
--- a/vdslib/src/vespa/vdslib/distribution/CMakeLists.txt
+++ b/vdslib/src/vespa/vdslib/distribution/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vdslib_distribution OBJECT
SOURCES
distribution.cpp
diff --git a/vdslib/src/vespa/vdslib/distribution/distribution.cpp b/vdslib/src/vespa/vdslib/distribution/distribution.cpp
index c5b9ec855d9..7322c31d858 100644
--- a/vdslib/src/vespa/vdslib/distribution/distribution.cpp
+++ b/vdslib/src/vespa/vdslib/distribution/distribution.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "distribution.h"
#include "distribution_config_util.h"
diff --git a/vdslib/src/vespa/vdslib/distribution/distribution.h b/vdslib/src/vespa/vdslib/distribution/distribution.h
index aef48b0c09c..c09d8400b3a 100644
--- a/vdslib/src/vespa/vdslib/distribution/distribution.h
+++ b/vdslib/src/vespa/vdslib/distribution/distribution.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class storage::lib::Distribution
* \ingroup distribution
diff --git a/vdslib/src/vespa/vdslib/distribution/distribution_config_util.cpp b/vdslib/src/vespa/vdslib/distribution/distribution_config_util.cpp
index e700dd4e379..5f0f65a6153 100644
--- a/vdslib/src/vespa/vdslib/distribution/distribution_config_util.cpp
+++ b/vdslib/src/vespa/vdslib/distribution/distribution_config_util.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "distribution_config_util.h"
#include <vespa/vespalib/text/stringtokenizer.h>
diff --git a/vdslib/src/vespa/vdslib/distribution/distribution_config_util.h b/vdslib/src/vespa/vdslib/distribution/distribution_config_util.h
index 3466b16f275..b7bb0a1c01c 100644
--- a/vdslib/src/vespa/vdslib/distribution/distribution_config_util.h
+++ b/vdslib/src/vespa/vdslib/distribution/distribution_config_util.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vdslib/src/vespa/vdslib/distribution/group.cpp b/vdslib/src/vespa/vdslib/distribution/group.cpp
index 45f8f0f8aea..537b4635e75 100644
--- a/vdslib/src/vespa/vdslib/distribution/group.cpp
+++ b/vdslib/src/vespa/vdslib/distribution/group.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "group.h"
diff --git a/vdslib/src/vespa/vdslib/distribution/group.h b/vdslib/src/vespa/vdslib/distribution/group.h
index 63a69301c06..5767f55d20a 100644
--- a/vdslib/src/vespa/vdslib/distribution/group.h
+++ b/vdslib/src/vespa/vdslib/distribution/group.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class vdslib::Group
*
diff --git a/vdslib/src/vespa/vdslib/distribution/idealnodecalculator.h b/vdslib/src/vespa/vdslib/distribution/idealnodecalculator.h
index a8c41a5b657..8f9061ec545 100644
--- a/vdslib/src/vespa/vdslib/distribution/idealnodecalculator.h
+++ b/vdslib/src/vespa/vdslib/distribution/idealnodecalculator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* An interface to implement for a calculator calcuting ideal state. It should
* be easy to wrap this calculator in a cache. Thus options that seldom change,
diff --git a/vdslib/src/vespa/vdslib/distribution/idealnodecalculatorimpl.cpp b/vdslib/src/vespa/vdslib/distribution/idealnodecalculatorimpl.cpp
index c9732f1af8b..da34ec4526a 100644
--- a/vdslib/src/vespa/vdslib/distribution/idealnodecalculatorimpl.cpp
+++ b/vdslib/src/vespa/vdslib/distribution/idealnodecalculatorimpl.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "idealnodecalculatorimpl.h"
#include "distribution.h"
diff --git a/vdslib/src/vespa/vdslib/distribution/idealnodecalculatorimpl.h b/vdslib/src/vespa/vdslib/distribution/idealnodecalculatorimpl.h
index 4b55a732aee..9b36f1094fd 100644
--- a/vdslib/src/vespa/vdslib/distribution/idealnodecalculatorimpl.h
+++ b/vdslib/src/vespa/vdslib/distribution/idealnodecalculatorimpl.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* A cache for an ideal nodes implementation. Making it cheap for localized
* access, regardless of real implementation.
diff --git a/vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.cpp b/vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.cpp
index 863ac45baa8..d9ecc60862b 100644
--- a/vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.cpp
+++ b/vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "redundancygroupdistribution.h"
#include <vespa/vespalib/util/exceptions.h>
diff --git a/vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.h b/vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.h
index ab0efcc8a2c..c7b1a3a05f7 100644
--- a/vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.h
+++ b/vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Helper class to represent the redundancy arrays from config, dividing
* copies between groups, like 2|1|*.
diff --git a/vdslib/src/vespa/vdslib/state/CMakeLists.txt b/vdslib/src/vespa/vdslib/state/CMakeLists.txt
index f6bff6ce9a7..8d4e994da93 100644
--- a/vdslib/src/vespa/vdslib/state/CMakeLists.txt
+++ b/vdslib/src/vespa/vdslib/state/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vdslib_state OBJECT
SOURCES
nodetype.cpp
diff --git a/vdslib/src/vespa/vdslib/state/cluster_state_bundle.cpp b/vdslib/src/vespa/vdslib/state/cluster_state_bundle.cpp
index 803a0e29018..0da172fc789 100644
--- a/vdslib/src/vespa/vdslib/state/cluster_state_bundle.cpp
+++ b/vdslib/src/vespa/vdslib/state/cluster_state_bundle.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/document/bucket/fixed_bucket_spaces.h>
#include "cluster_state_bundle.h"
diff --git a/vdslib/src/vespa/vdslib/state/cluster_state_bundle.h b/vdslib/src/vespa/vdslib/state/cluster_state_bundle.h
index e9098018a24..ad9e07407a0 100644
--- a/vdslib/src/vespa/vdslib/state/cluster_state_bundle.h
+++ b/vdslib/src/vespa/vdslib/state/cluster_state_bundle.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vdslib/src/vespa/vdslib/state/clusterstate.cpp b/vdslib/src/vespa/vdslib/state/clusterstate.cpp
index cc863fd6f48..e58389e1475 100644
--- a/vdslib/src/vespa/vdslib/state/clusterstate.cpp
+++ b/vdslib/src/vespa/vdslib/state/clusterstate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "clusterstate.h"
#include <vespa/vespalib/text/stringtokenizer.h>
diff --git a/vdslib/src/vespa/vdslib/state/clusterstate.h b/vdslib/src/vespa/vdslib/state/clusterstate.h
index 6f196f04626..5fc4680e172 100644
--- a/vdslib/src/vespa/vdslib/state/clusterstate.h
+++ b/vdslib/src/vespa/vdslib/state/clusterstate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class vdslib::ClusterState
* @ingroup state
diff --git a/vdslib/src/vespa/vdslib/state/node.cpp b/vdslib/src/vespa/vdslib/state/node.cpp
index f52ebad605e..641ca106af0 100644
--- a/vdslib/src/vespa/vdslib/state/node.cpp
+++ b/vdslib/src/vespa/vdslib/state/node.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "node.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/vdslib/src/vespa/vdslib/state/node.h b/vdslib/src/vespa/vdslib/state/node.h
index 293ed8defa5..2e33e54c638 100644
--- a/vdslib/src/vespa/vdslib/state/node.h
+++ b/vdslib/src/vespa/vdslib/state/node.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class vdslib::Node
*
diff --git a/vdslib/src/vespa/vdslib/state/nodestate.cpp b/vdslib/src/vespa/vdslib/state/nodestate.cpp
index 96ba4ac556f..a7c5476456a 100644
--- a/vdslib/src/vespa/vdslib/state/nodestate.cpp
+++ b/vdslib/src/vespa/vdslib/state/nodestate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "nodestate.h"
diff --git a/vdslib/src/vespa/vdslib/state/nodestate.h b/vdslib/src/vespa/vdslib/state/nodestate.h
index f0ae7012dcb..f65a0275d4b 100644
--- a/vdslib/src/vespa/vdslib/state/nodestate.h
+++ b/vdslib/src/vespa/vdslib/state/nodestate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class vdslib::NodeState
*
diff --git a/vdslib/src/vespa/vdslib/state/nodetype.cpp b/vdslib/src/vespa/vdslib/state/nodetype.cpp
index 7a52dbf6116..ba83f105626 100644
--- a/vdslib/src/vespa/vdslib/state/nodetype.cpp
+++ b/vdslib/src/vespa/vdslib/state/nodetype.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "nodetype.h"
#include <vespa/vespalib/util/exceptions.h>
diff --git a/vdslib/src/vespa/vdslib/state/nodetype.h b/vdslib/src/vespa/vdslib/state/nodetype.h
index 86d683384e6..0eea364590a 100644
--- a/vdslib/src/vespa/vdslib/state/nodetype.h
+++ b/vdslib/src/vespa/vdslib/state/nodetype.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class vdslib::NodeType
*
diff --git a/vdslib/src/vespa/vdslib/state/random.h b/vdslib/src/vespa/vdslib/state/random.h
index 8344f89d600..28efcc33893 100644
--- a/vdslib/src/vespa/vdslib/state/random.h
+++ b/vdslib/src/vespa/vdslib/state/random.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/random.h>
diff --git a/vdslib/src/vespa/vdslib/state/state.cpp b/vdslib/src/vespa/vdslib/state/state.cpp
index 03997470188..e8f243b1a1e 100644
--- a/vdslib/src/vespa/vdslib/state/state.cpp
+++ b/vdslib/src/vespa/vdslib/state/state.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vdslib/state/state.h>
diff --git a/vdslib/src/vespa/vdslib/state/state.h b/vdslib/src/vespa/vdslib/state/state.h
index d49795dc22d..5a223d39560 100644
--- a/vdslib/src/vespa/vdslib/state/state.h
+++ b/vdslib/src/vespa/vdslib/state/state.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @class vdslib::State
*
diff --git a/vdstestlib/CMakeLists.txt b/vdstestlib/CMakeLists.txt
index 8fd97fe8168..d0a921672c2 100644
--- a/vdstestlib/CMakeLists.txt
+++ b/vdstestlib/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/vdstestlib/src/tests/dirconfig/CMakeLists.txt b/vdstestlib/src/tests/dirconfig/CMakeLists.txt
index 05a4f0e6b00..f36d1a5f5b7 100644
--- a/vdstestlib/src/tests/dirconfig/CMakeLists.txt
+++ b/vdstestlib/src/tests/dirconfig/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vdstestlib_dirconfig_test_app TEST
SOURCES
dirconfigtest.cpp
diff --git a/vdstestlib/src/tests/dirconfig/dirconfigtest.cpp b/vdstestlib/src/tests/dirconfig/dirconfigtest.cpp
index f985150e497..e363c67486c 100644
--- a/vdstestlib/src/tests/dirconfig/dirconfigtest.cpp
+++ b/vdstestlib/src/tests/dirconfig/dirconfigtest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/exceptions.h>
diff --git a/vdstestlib/src/vespa/vdstestlib/CMakeLists.txt b/vdstestlib/src/vespa/vdstestlib/CMakeLists.txt
index 86ca3461302..0d001307ae5 100644
--- a/vdstestlib/src/vespa/vdstestlib/CMakeLists.txt
+++ b/vdstestlib/src/vespa/vdstestlib/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vdstestlib
SOURCES
$<TARGET_OBJECTS:vdstestlib_vdstestlib_config>
diff --git a/vdstestlib/src/vespa/vdstestlib/config/CMakeLists.txt b/vdstestlib/src/vespa/vdstestlib/config/CMakeLists.txt
index 90b7c95fe50..996e7b69ac8 100644
--- a/vdstestlib/src/vespa/vdstestlib/config/CMakeLists.txt
+++ b/vdstestlib/src/vespa/vdstestlib/config/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vdstestlib_vdstestlib_config OBJECT
SOURCES
dirconfig.cpp
diff --git a/vdstestlib/src/vespa/vdstestlib/config/dirconfig.cpp b/vdstestlib/src/vespa/vdstestlib/config/dirconfig.cpp
index 6cd9a132d5e..9276f0d7c41 100644
--- a/vdstestlib/src/vespa/vdstestlib/config/dirconfig.cpp
+++ b/vdstestlib/src/vespa/vdstestlib/config/dirconfig.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dirconfig.hpp"
diff --git a/vdstestlib/src/vespa/vdstestlib/config/dirconfig.h b/vdstestlib/src/vespa/vdstestlib/config/dirconfig.h
index c0a1571f52c..2b041f4cd34 100644
--- a/vdstestlib/src/vespa/vdstestlib/config/dirconfig.h
+++ b/vdstestlib/src/vespa/vdstestlib/config/dirconfig.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class vdstestlib::DirConfig
* \ingroup config
diff --git a/vdstestlib/src/vespa/vdstestlib/config/dirconfig.hpp b/vdstestlib/src/vespa/vdstestlib/config/dirconfig.hpp
index 5d127879e34..5d7dadc2579 100644
--- a/vdstestlib/src/vespa/vdstestlib/config/dirconfig.hpp
+++ b/vdstestlib/src/vespa/vdstestlib/config/dirconfig.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespa-application-maven-plugin/README.md b/vespa-application-maven-plugin/README.md
index 8207d47f739..18ecbd8256b 100644
--- a/vespa-application-maven-plugin/README.md
+++ b/vespa-application-maven-plugin/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Vespa application plugin
Maven Plugin for assembling a vespa application package.
diff --git a/vespa-application-maven-plugin/pom.xml b/vespa-application-maven-plugin/pom.xml
index 6ac964f9bc9..362e9745256 100644
--- a/vespa-application-maven-plugin/pom.xml
+++ b/vespa-application-maven-plugin/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/vespa-application-maven-plugin/src/main/java/com/yahoo/container/plugin/mojo/ApplicationMojo.java b/vespa-application-maven-plugin/src/main/java/com/yahoo/container/plugin/mojo/ApplicationMojo.java
index f93ee2feaa1..1bbdfc9914a 100644
--- a/vespa-application-maven-plugin/src/main/java/com/yahoo/container/plugin/mojo/ApplicationMojo.java
+++ b/vespa-application-maven-plugin/src/main/java/com/yahoo/container/plugin/mojo/ApplicationMojo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.mojo;
import org.apache.commons.io.FileUtils;
diff --git a/vespa-application-maven-plugin/src/main/java/com/yahoo/container/plugin/mojo/Compression.java b/vespa-application-maven-plugin/src/main/java/com/yahoo/container/plugin/mojo/Compression.java
index e8d398393a9..f793df23558 100644
--- a/vespa-application-maven-plugin/src/main/java/com/yahoo/container/plugin/mojo/Compression.java
+++ b/vespa-application-maven-plugin/src/main/java/com/yahoo/container/plugin/mojo/Compression.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.mojo;
import java.io.File;
diff --git a/vespa-athenz/CMakeLists.txt b/vespa-athenz/CMakeLists.txt
index c9c9f83efee..5c5fa370796 100644
--- a/vespa-athenz/CMakeLists.txt
+++ b/vespa-athenz/CMakeLists.txt
@@ -1,3 +1,3 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(vespa-athenz)
install_config_definitions()
diff --git a/vespa-athenz/README.md b/vespa-athenz/README.md
index 8085f217ce2..1d76cd59bf3 100644
--- a/vespa-athenz/README.md
+++ b/vespa-athenz/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# vespa-athenz
Contains common Athenz related interfaces and utility classes, packaged as a bundle with Athenz ZMS/ZTS client libraries.
diff --git a/vespa-athenz/pom.xml b/vespa-athenz/pom.xml
index 1b03891f313..d714c57417e 100644
--- a/vespa-athenz/pom.xml
+++ b/vespa-athenz/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzAssertion.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzAssertion.java
new file mode 100644
index 00000000000..23d1b4dfc7e
--- /dev/null
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzAssertion.java
@@ -0,0 +1,80 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.athenz.api;
+
+import java.util.Objects;
+import java.util.Optional;
+import java.util.OptionalLong;
+
+/**
+ * @author bjorncs
+ */
+public class AthenzAssertion {
+
+ public enum Effect { ALLOW, DENY }
+
+ private final Long id;
+ private final Effect effect;
+ private final AthenzRole role;
+ private final AthenzResourceName resource;
+ private final String action;
+
+ private AthenzAssertion(Builder builder) {
+ this.id = builder.id;
+ this.effect = builder.effect;
+ this.role = builder.role;
+ this.resource = builder.resource;
+ this.action = builder.action;
+ }
+
+ public OptionalLong id() { return id == null ? OptionalLong.empty() : OptionalLong.of(id); }
+ public Optional<Effect> effect() { return Optional.ofNullable(effect); }
+ public AthenzRole role() { return role; }
+ public AthenzResourceName resource() { return resource; }
+ public String action() { return action; }
+
+ public static Builder newBuilder(AthenzRole role, AthenzResourceName resource, String action) {
+ return new Builder(role, resource, action);
+ }
+
+ public static class Builder {
+ private Long id;
+ private Effect effect;
+ private AthenzRole role;
+ private AthenzResourceName resource;
+ private String action;
+
+ private Builder(AthenzRole role, AthenzResourceName resource, String action) {
+ this.role = role;
+ this.resource = resource;
+ this.action = action;
+ }
+
+ public Builder id(long id) { this.id = id; return this; }
+ public Builder effect(Effect effect) { this.effect = effect; return this; }
+ public AthenzAssertion build() { return new AthenzAssertion(this); }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ AthenzAssertion that = (AthenzAssertion) o;
+ return Objects.equals(id, that.id) && effect == that.effect && Objects.equals(role, that.role) && Objects.equals(resource, that.resource) && Objects.equals(action, that.action);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, effect, role, resource, action);
+ }
+
+ @Override
+ public String toString() {
+ return "AthenzAssertion{" +
+ "id=" + id +
+ ", effect=" + effect +
+ ", role=" + role +
+ ", resource=" + resource +
+ ", action='" + action + '\'' +
+ '}';
+ }
+}
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzDomain.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzDomain.java
index 72d7785c282..769e81d7732 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzDomain.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzDomain.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.api;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzGroup.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzGroup.java
index 2608af381a2..fcd3708dc3f 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzGroup.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzGroup.java
@@ -1,10 +1,10 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.api;
import java.util.Objects;
-public class AthenzGroup {
+public class AthenzGroup implements AthenzIdentity {
private final AthenzDomain domain;
private final String groupName;
@@ -38,4 +38,19 @@ public class AthenzGroup {
public int hashCode() {
return Objects.hash(domain, groupName);
}
+
+ @Override
+ public AthenzDomain getDomain() {
+ return domain;
+ }
+
+ @Override
+ public String getName() {
+ return groupName;
+ }
+
+ @Override
+ public String getFullName() {
+ return getDomainName() + ":group." + getName();
+ }
}
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzIdentity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzIdentity.java
index f9eff903425..14d0cddc61f 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzIdentity.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzIdentity.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.api;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzPolicy.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzPolicy.java
new file mode 100644
index 00000000000..40436432c47
--- /dev/null
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzPolicy.java
@@ -0,0 +1,42 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.athenz.api;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * @author bjorncs
+ */
+public class AthenzPolicy {
+ private final String name;
+ private final List<AthenzAssertion> assertions;
+
+ public AthenzPolicy(String name, List<AthenzAssertion> assertions) {
+ this.assertions = List.copyOf(assertions);
+ this.name = name;
+ }
+
+ public String name() { return name; }
+ public List<AthenzAssertion> assertions() { return assertions; }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ AthenzPolicy that = (AthenzPolicy) o;
+ return Objects.equals(name, that.name) && Objects.equals(assertions, that.assertions);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, assertions);
+ }
+
+ @Override
+ public String toString() {
+ return "AthenzPolicy{" +
+ "name='" + name + '\'' +
+ ", assertions=" + assertions +
+ '}';
+ }
+}
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzPrincipal.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzPrincipal.java
index 2330b1e439f..60205884623 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzPrincipal.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzPrincipal.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.api;
import java.security.Principal;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzResourceGroup.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzResourceGroup.java
index 2825cf57c7b..fd13eef46e0 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzResourceGroup.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzResourceGroup.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.api;
import java.util.Objects;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzResourceName.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzResourceName.java
index f7aa2affc86..d5c161a3f9a 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzResourceName.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzResourceName.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.api;
import java.util.Objects;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzRole.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzRole.java
index 4e432768298..6f1e3bb7cda 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzRole.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzRole.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.api;
import java.util.Objects;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzRoleCertificate.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzRoleCertificate.java
index ec19e08dc8d..9a7a3c7ca80 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzRoleCertificate.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzRoleCertificate.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.api;
import java.security.PrivateKey;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzService.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzService.java
index 1cf19151b2e..6fd0bba46a0 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzService.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzService.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.api;
import com.yahoo.vespa.athenz.utils.AthenzIdentities;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzUser.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzUser.java
index 720a5289454..daf3ef25479 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzUser.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzUser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.api;
import com.yahoo.vespa.athenz.utils.AthenzIdentities;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/NToken.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/NToken.java
index 27fc0b553a0..f3e7b7f4058 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/NToken.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/NToken.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.api;
import java.util.Objects;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/OktaAccessToken.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/OktaAccessToken.java
index b6d34bce4e4..80f769f7fcd 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/OktaAccessToken.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/OktaAccessToken.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.api;
import java.util.Objects;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/ZToken.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/ZToken.java
index 1d3f6f92498..c3c2756b226 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/ZToken.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/ZToken.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.api;
import com.yahoo.athenz.auth.token.RoleToken;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/package-info.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/package-info.java
index ddba56395d2..ba08a4702c3 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/package-info.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/aws/AwsCredentials.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/aws/AwsCredentials.java
index b5473929184..8e9d00d7fa5 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/aws/AwsCredentials.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/aws/AwsCredentials.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.aws;
import com.yahoo.vespa.athenz.api.AthenzDomain;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/aws/package-info.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/aws/package-info.java
index 9fdba43a96f..6545a0e9c03 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/aws/package-info.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/aws/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author mpolden
*/
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/ErrorHandler.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/ErrorHandler.java
index 19e55d3a680..d170f5d242d 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/ErrorHandler.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/ErrorHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client;
public interface ErrorHandler {
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/ClientBase.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/ClientBase.java
index acf580d7e1b..a49ea166f2d 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/ClientBase.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/ClientBase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.common;
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -34,7 +34,7 @@ import java.util.logging.Logger;
*/
public abstract class ClientBase implements AutoCloseable {
- private static final Logger logger = Logger.getLogger(ClientBase.class.getName());
+ protected final Logger logger = Logger.getLogger(getClass().getName());
private static final ObjectMapper objectMapper = new ObjectMapper().registerModule(new JavaTimeModule());
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/bindings/ErrorResponseEntity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/bindings/ErrorResponseEntity.java
index acbb831194e..b7499ff892d 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/bindings/ErrorResponseEntity.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/bindings/ErrorResponseEntity.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.common.bindings;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/serializers/Pkcs10CsrSerializer.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/serializers/Pkcs10CsrSerializer.java
index 9b26f5f2517..99e21b4adfc 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/serializers/Pkcs10CsrSerializer.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/serializers/Pkcs10CsrSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.common.serializers;
import com.fasterxml.jackson.core.JsonGenerator;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/serializers/X509CertificateDeserializer.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/serializers/X509CertificateDeserializer.java
index f948115d4f2..7d431f350c5 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/serializers/X509CertificateDeserializer.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/serializers/X509CertificateDeserializer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.common.serializers;
import com.fasterxml.jackson.core.JsonParser;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/serializers/X509CertificateListDeserializer.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/serializers/X509CertificateListDeserializer.java
index baa56512a62..0806d4c27d1 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/serializers/X509CertificateListDeserializer.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/serializers/X509CertificateListDeserializer.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.common.serializers;
import com.fasterxml.jackson.core.JsonParser;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/serializers/package-info.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/serializers/package-info.java
index f1fe2a75b1b..df35cc395ee 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/serializers/package-info.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/common/serializers/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/package-info.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/package-info.java
index 7c152d3e88a..cff326e521c 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/package-info.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.athenz.client;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/DefaultZmsClient.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/DefaultZmsClient.java
index 7503b5a39ed..4a3dc30d7ed 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/DefaultZmsClient.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/DefaultZmsClient.java
@@ -1,11 +1,14 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zms;
+import com.yahoo.vespa.athenz.api.AthenzAssertion;
import com.yahoo.vespa.athenz.api.AthenzDomain;
import com.yahoo.vespa.athenz.api.AthenzGroup;
import com.yahoo.vespa.athenz.api.AthenzIdentity;
+import com.yahoo.vespa.athenz.api.AthenzPolicy;
import com.yahoo.vespa.athenz.api.AthenzResourceName;
import com.yahoo.vespa.athenz.api.AthenzRole;
+import com.yahoo.vespa.athenz.api.AthenzService;
import com.yahoo.vespa.athenz.api.AthenzUser;
import com.yahoo.vespa.athenz.api.OktaAccessToken;
import com.yahoo.vespa.athenz.api.OktaIdentityToken;
@@ -16,8 +19,11 @@ import com.yahoo.vespa.athenz.client.zms.bindings.AssertionEntity;
import com.yahoo.vespa.athenz.client.zms.bindings.DomainListResponseEntity;
import com.yahoo.vespa.athenz.client.zms.bindings.MembershipEntity;
import com.yahoo.vespa.athenz.client.zms.bindings.PolicyEntity;
-import com.yahoo.vespa.athenz.client.zms.bindings.ProviderResourceGroupRolesRequestEntity;
+import com.yahoo.vespa.athenz.client.zms.bindings.ResourceGroupRolesEntity;
+import com.yahoo.vespa.athenz.client.zms.bindings.ResponseListEntity;
import com.yahoo.vespa.athenz.client.zms.bindings.RoleEntity;
+import com.yahoo.vespa.athenz.client.zms.bindings.ServiceEntity;
+import com.yahoo.vespa.athenz.client.zms.bindings.ServiceListResponseEntity;
import com.yahoo.vespa.athenz.client.zms.bindings.TenancyRequestEntity;
import com.yahoo.vespa.athenz.identity.ServiceIdentityProvider;
import com.yahoo.vespa.athenz.utils.AthenzIdentities;
@@ -31,12 +37,12 @@ import javax.net.ssl.SSLContext;
import java.net.URI;
import java.time.Instant;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
-import java.util.Objects;
+import java.util.Map;
import java.util.Optional;
-import java.util.OptionalInt;
+import java.util.OptionalLong;
import java.util.Set;
-import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collectors;
@@ -96,7 +102,7 @@ public class DefaultZmsClient extends ClientBase implements ZmsClient {
HttpUriRequest request = RequestBuilder.put()
.setUri(uri)
.addHeader(createCookieHeaderWithOktaTokens(identityToken, accessToken))
- .setEntity(toJsonStringEntity(new ProviderResourceGroupRolesRequestEntity(providerService, tenantDomain, roleActions, resourceGroup)))
+ .setEntity(toJsonStringEntity(new ResourceGroupRolesEntity(providerService, tenantDomain, roleActions, resourceGroup)))
.build();
execute(request, response -> readEntity(response, Void.class)); // Note: The ZMS API will actually return a json object that is similar to ProviderResourceGroupRolesRequestEntity
}
@@ -113,6 +119,31 @@ public class DefaultZmsClient extends ClientBase implements ZmsClient {
}
@Override
+ public void createTenantResourceGroup(AthenzDomain tenantDomain, AthenzIdentity provider, String resourceGroup,
+ Set<RoleAction> roleActions) {
+ URI uri = zmsUrl.resolve(String.format("domain/%s/service/%s/tenant/%s/resourceGroup/%s",
+ provider.getDomainName(), provider.getName(), tenantDomain.getName(), resourceGroup));
+ HttpUriRequest request = RequestBuilder.put()
+ .setUri(uri)
+ .setEntity(toJsonStringEntity(
+ new ResourceGroupRolesEntity(provider, tenantDomain, roleActions, resourceGroup)))
+ .build();
+ execute(request, response -> readEntity(response, Void.class));
+ }
+
+ @Override
+ public Set<RoleAction> getTenantResourceGroups(AthenzDomain tenantDomain, AthenzIdentity provider,
+ String resourceGroup) {
+ URI uri = zmsUrl.resolve(String.format("domain/%s/service/%s/tenant/%s/resourceGroup/%s",
+ provider.getDomainName(), provider.getName(), tenantDomain.getName(), resourceGroup));
+ HttpUriRequest request = RequestBuilder.get()
+ .setUri(uri)
+ .build();
+ ResourceGroupRolesEntity result = execute(request, response -> readEntity(response, ResourceGroupRolesEntity.class));
+ return result.roles.stream().map(rgr -> new RoleAction(rgr.role, rgr.action)).collect(Collectors.toSet());
+ }
+
+ @Override
public void addRoleMember(AthenzRole role, AthenzIdentity member, Optional<String> reason) {
URI uri = zmsUrl.resolve(String.format("domain/%s/role/%s/member/%s", role.domain().getName(), role.roleName(), member.getFullName()));
MembershipEntity membership = new MembershipEntity.RoleMembershipEntity(member.getFullName(), true, role.roleName(), null);
@@ -183,6 +214,17 @@ public class DefaultZmsClient extends ClientBase implements ZmsClient {
}
@Override
+ public void createPolicy(AthenzDomain athenzDomain, String athenzPolicy) {
+ URI uri = zmsUrl.resolve(String.format("domain/%s/policy/%s",
+ athenzDomain.getName(), athenzPolicy));
+ StringEntity entity = toJsonStringEntity(Map.of("name", athenzPolicy, "assertions", List.of()));
+ HttpUriRequest request = RequestBuilder.put(uri)
+ .setEntity(entity)
+ .build();
+ execute(request, response -> readEntity(response, Void.class));
+ }
+
+ @Override
public void addPolicyRule(AthenzDomain athenzDomain, String athenzPolicy, String action, AthenzResourceName resourceName, AthenzRole athenzRole) {
URI uri = zmsUrl.resolve(String.format("domain/%s/policy/%s/assertion",
athenzDomain.getName(), athenzPolicy));
@@ -202,18 +244,18 @@ public class DefaultZmsClient extends ClientBase implements ZmsClient {
.build();
PolicyEntity policyEntity = execute(request, response -> readEntity(response, PolicyEntity.class));
- OptionalInt assertionId = policyEntity.getAssertions().stream()
+ OptionalLong assertionId = policyEntity.getAssertions().stream()
.filter(assertionEntity -> assertionEntity.getAction().equals(action) &&
assertionEntity.getResource().equals(resourceName.toResourceNameString()) &&
assertionEntity.getRole().equals(athenzRole.toResourceNameString()))
- .mapToInt(AssertionEntity::getId).findFirst();
+ .mapToLong(AssertionEntity::getId).findFirst();
if (assertionId.isEmpty()) {
return false;
}
uri = zmsUrl.resolve(String.format("domain/%s/policy/%s/assertion/%d",
- athenzDomain.getName(), athenzPolicy, assertionId.getAsInt()));
+ athenzDomain.getName(), athenzPolicy, assertionId.getAsLong()));
request = RequestBuilder.delete()
.setUri(uri)
@@ -224,30 +266,57 @@ public class DefaultZmsClient extends ClientBase implements ZmsClient {
}
@Override
- public List<AthenzUser> listPendingRoleApprovals(AthenzRole athenzRole) {
+ public Optional<AthenzPolicy> getPolicy(AthenzDomain domain, String name) {
+ var uri = zmsUrl.resolve(String.format("domain/%s/policy/%s", domain.getName(), name));
+ HttpUriRequest request = RequestBuilder.get().setUri(uri).build();
+ PolicyEntity entity;
+ try {
+ entity = execute(request, response -> readEntity(response, PolicyEntity.class));
+ } catch (ZmsClientException e) {
+ if (e.getErrorCode() == 404) return Optional.empty();
+ throw e;
+ }
+ List<AthenzAssertion> assertions = entity.getAssertions().stream()
+ .map(a -> AthenzAssertion.newBuilder(
+ AthenzRole.fromResourceNameString(a.getRole()),
+ AthenzResourceName.fromString(a.getResource()),
+ a.getAction())
+ .id(a.getId())
+ .build())
+ .collect(toList());
+ return Optional.of(new AthenzPolicy(entity.getName(), assertions));
+ }
+
+ @Override
+ public Map<AthenzUser, String> listPendingRoleApprovals(AthenzRole athenzRole) {
URI uri = zmsUrl.resolve(String.format("domain/%s/role/%s?pending=true", athenzRole.domain().getName(), athenzRole.roleName()));
HttpUriRequest request = RequestBuilder.get()
.setUri(uri)
.build();
RoleEntity roleEntity = execute(request, response -> readEntity(response, RoleEntity.class));
+
return roleEntity.roleMembers().stream()
.filter(RoleEntity.Member::pendingApproval)
- .map(RoleEntity.Member::memberName)
- .map(AthenzIdentities::from)
- .filter(identity -> AthenzIdentities.USER_PRINCIPAL_DOMAIN.equals(identity.getDomain()))
- .map(AthenzUser.class::cast)
- .collect(Collectors.toList());
+ .filter(re -> AthenzIdentities.USER_PRINCIPAL_DOMAIN.equals(AthenzIdentities.from(re.memberName()).getDomain()))
+ .collect(Collectors.toUnmodifiableMap(
+ m -> (AthenzUser) AthenzIdentities.from(m.memberName()),
+ RoleEntity.Member::auditRef));
}
@Override
- public void approvePendingRoleMembership(AthenzRole athenzRole, AthenzUser athenzUser, Instant expiry) {
+ public void approvePendingRoleMembership(AthenzRole athenzRole, AthenzUser athenzUser, Instant expiry, Optional<String> reason) {
URI uri = zmsUrl.resolve(String.format("domain/%s/role/%s/member/%s/decision", athenzRole.domain().getName(), athenzRole.roleName(), athenzUser.getFullName()));
MembershipEntity membership = new MembershipEntity.RoleMembershipEntity(athenzUser.getFullName(), true, athenzRole.roleName(), Long.toString(expiry.getEpochSecond()));
- HttpUriRequest request = RequestBuilder.put()
+
+ var requestBuilder = RequestBuilder.put()
.setUri(uri)
- .setEntity(toJsonStringEntity(membership))
- .build();
- execute(request, response -> readEntity(response, Void.class));
+ .setEntity(toJsonStringEntity(membership));
+
+ if (reason.filter(s -> !s.isBlank()).isPresent()) {
+ requestBuilder.addHeader("Y-Audit-Ref", reason.get());
+ }
+
+ execute(requestBuilder.build(), response -> readEntity(response, Void.class));
}
@Override
@@ -261,6 +330,61 @@ public class DefaultZmsClient extends ClientBase implements ZmsClient {
.collect(Collectors.toList());
}
+ @Override
+ public List<AthenzService> listServices(AthenzDomain athenzDomain) {
+ URI uri = zmsUrl.resolve(String.format("domain/%s/service", athenzDomain.getName()));
+ ServiceListResponseEntity execute = execute(RequestBuilder.get(uri).build(), response -> readEntity(response, ServiceListResponseEntity.class));
+
+ return execute.services.stream()
+ .map(serviceName -> new AthenzService(athenzDomain, serviceName))
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public void createOrUpdateService(AthenzService athenzService) {
+ URI uri = zmsUrl.resolve(String.format("domain/%s/service/%s", athenzService.getDomainName(), athenzService.getName()));
+
+ var serviceEntity = new ServiceEntity(athenzService.getFullName());
+
+ var request = RequestBuilder.put(uri)
+ .setEntity(toJsonStringEntity(serviceEntity))
+ .build();
+ execute(request, response -> readEntity(response, Void.class));
+ }
+
+ @Override
+ public void deleteService(AthenzService athenzService) {
+ URI uri = zmsUrl.resolve(String.format("domain/%s/service/%s", athenzService.getDomainName(), athenzService.getName()));
+ execute(RequestBuilder.delete(uri).build(), response -> readEntity(response, Void.class));
+ }
+
+ @Override
+ public void createRole(AthenzRole role, Map<String, Object> attributes) {
+ URI uri = zmsUrl.resolve(String.format("domain/%s/role/%s", role.domain().getName(), role.roleName()));
+ HashMap<String, Object> finalAttributes = new HashMap<>(attributes);
+ finalAttributes.put("name", role.roleName());
+ var request = RequestBuilder.put(uri)
+ .setEntity(toJsonStringEntity(finalAttributes))
+ .build();
+ execute(request, response -> readEntity(response, Void.class));
+ }
+
+ @Override
+ public Set<AthenzRole> listRoles(AthenzDomain domain) {
+ var uri = zmsUrl.resolve(String.format("domain/%s/role", domain.getName()));
+ ResponseListEntity listResponse = execute(RequestBuilder.get(uri).build(), response -> readEntity(response, ResponseListEntity.class));
+ return listResponse.entity.stream()
+ .map(name -> new AthenzRole(domain, name))
+ .collect(Collectors.toSet());
+ }
+
+ @Override
+ public Set<String> listPolicies(AthenzDomain domain) {
+ var uri = zmsUrl.resolve(String.format("domain/%s/policy", domain.getName()));
+ ResponseListEntity listResponse = execute(RequestBuilder.get(uri).build(), response -> readEntity(response, ResponseListEntity.class));
+ return Set.copyOf(listResponse.entity);
+ }
+
private static Header createCookieHeaderWithOktaTokens(OktaIdentityToken identityToken, OktaAccessToken accessToken) {
return new BasicHeader("Cookie", String.format("okta_at=%s; okta_it=%s", accessToken.token(), identityToken.token()));
}
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/RoleAction.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/RoleAction.java
index 405dd1aa56a..dbd35715534 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/RoleAction.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/RoleAction.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zms;
import com.yahoo.vespa.athenz.api.AthenzRole;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/ZmsClient.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/ZmsClient.java
index 03afc9278cc..823b5843115 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/ZmsClient.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/ZmsClient.java
@@ -1,17 +1,20 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zms;
import com.yahoo.vespa.athenz.api.AthenzDomain;
import com.yahoo.vespa.athenz.api.AthenzGroup;
import com.yahoo.vespa.athenz.api.AthenzIdentity;
+import com.yahoo.vespa.athenz.api.AthenzPolicy;
import com.yahoo.vespa.athenz.api.AthenzResourceName;
import com.yahoo.vespa.athenz.api.AthenzRole;
+import com.yahoo.vespa.athenz.api.AthenzService;
import com.yahoo.vespa.athenz.api.AthenzUser;
import com.yahoo.vespa.athenz.api.OktaAccessToken;
import com.yahoo.vespa.athenz.api.OktaIdentityToken;
import java.time.Instant;
import java.util.List;
+import java.util.Map;
import java.util.Optional;
import java.util.Set;
@@ -32,6 +35,12 @@ public interface ZmsClient extends AutoCloseable {
void deleteProviderResourceGroup(AthenzDomain tenantDomain, AthenzIdentity providerService, String resourceGroup,
OktaIdentityToken identityToken, OktaAccessToken accessToken);
+ /** For manual tenancy provisioning - only creates roles/policies on provider domain */
+ void createTenantResourceGroup(AthenzDomain tenantDomain, AthenzIdentity provider, String resourceGroup,
+ Set<RoleAction> roleActions);
+
+ Set<RoleAction> getTenantResourceGroups(AthenzDomain tenantDomain, AthenzIdentity provider, String resourceGroup);
+
void addRoleMember(AthenzRole role, AthenzIdentity member, Optional<String> reason);
void deleteRoleMember(AthenzRole role, AthenzIdentity member);
@@ -44,15 +53,31 @@ public interface ZmsClient extends AutoCloseable {
boolean hasAccess(AthenzResourceName resource, String action, AthenzIdentity identity);
+ void createPolicy(AthenzDomain athenzDomain, String athenzPolicy);
+
void addPolicyRule(AthenzDomain athenzDomain, String athenzPolicy, String action, AthenzResourceName resourceName, AthenzRole athenzRole);
boolean deletePolicyRule(AthenzDomain athenzDomain, String athenzPolicy, String action, AthenzResourceName resourceName, AthenzRole athenzRole);
- List<AthenzUser> listPendingRoleApprovals(AthenzRole athenzRole);
+ Optional<AthenzPolicy> getPolicy(AthenzDomain domain, String name);
- void approvePendingRoleMembership(AthenzRole athenzRole, AthenzUser athenzUser, Instant expiry);
+ Map<AthenzUser, String> listPendingRoleApprovals(AthenzRole athenzRole);
+
+ void approvePendingRoleMembership(AthenzRole athenzRole, AthenzUser athenzUser, Instant expiry, Optional<String> reason);
List<AthenzIdentity> listMembers(AthenzRole athenzRole);
+ List<AthenzService> listServices(AthenzDomain athenzDomain);
+
+ void createOrUpdateService(AthenzService athenzService);
+
+ void deleteService(AthenzService athenzService);
+
+ void createRole(AthenzRole role, Map<String, Object> properties);
+
+ Set<AthenzRole> listRoles(AthenzDomain domain);
+
+ Set<String> listPolicies(AthenzDomain domain);
+
void close();
}
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/ZmsClientException.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/ZmsClientException.java
index f1b3ab8e7da..0c2f80dba2c 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/ZmsClientException.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/ZmsClientException.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zms;
/**
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/AccessResponseEntity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/AccessResponseEntity.java
index dcc17bc807a..507300f9bc9 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/AccessResponseEntity.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/AccessResponseEntity.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zms.bindings;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/AssertionEntity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/AssertionEntity.java
index 824aa3b4606..4ef83760b5a 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/AssertionEntity.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/AssertionEntity.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zms.bindings;
import com.fasterxml.jackson.annotation.JsonIgnore;
@@ -16,7 +16,7 @@ public class AssertionEntity {
private final String role;
private final String resource;
private final String action;
- private final Integer id;
+ private final Long id;
public AssertionEntity(String role, String resource, String action) {
@@ -26,7 +26,7 @@ public class AssertionEntity {
public AssertionEntity(@JsonProperty("role") String role,
@JsonProperty("resource") String resource,
@JsonProperty("action") String action,
- @JsonProperty("id") Integer id) {
+ @JsonProperty("id") Long id) {
this.role = role;
this.resource = resource;
this.action = action;
@@ -46,7 +46,7 @@ public class AssertionEntity {
}
@JsonIgnore
- public int getId() {
+ public long getId() {
return id;
}
}
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/DomainListResponseEntity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/DomainListResponseEntity.java
index 938d85dd74f..42194cdf947 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/DomainListResponseEntity.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/DomainListResponseEntity.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zms.bindings;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/MembershipEntity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/MembershipEntity.java
index 33acf0e1c90..d679433a23d 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/MembershipEntity.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/MembershipEntity.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zms.bindings;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/PolicyEntity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/PolicyEntity.java
index ebc0997cb09..4be82daee43 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/PolicyEntity.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/PolicyEntity.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zms.bindings;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/ProviderResourceGroupRolesRequestEntity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/ProviderResourceGroupRolesRequestEntity.java
deleted file mode 100644
index a67bd4dcad6..00000000000
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/ProviderResourceGroupRolesRequestEntity.java
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.athenz.client.zms.bindings;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.yahoo.vespa.athenz.api.AthenzDomain;
-import com.yahoo.vespa.athenz.api.AthenzIdentity;
-import com.yahoo.vespa.athenz.api.AthenzService;
-import com.yahoo.vespa.athenz.client.zms.RoleAction;
-
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import static java.util.stream.Collectors.toList;
-
-/**
- * @author bjorncs
- */
-public class ProviderResourceGroupRolesRequestEntity {
-
- @JsonProperty("domain")
- private final String domain;
-
- @JsonProperty("service")
- private final String service;
-
- @JsonProperty("tenant")
- private final String tenant;
-
- @JsonProperty("roles")
- private final List<TenantRoleAction> roles;
-
- @JsonProperty("resourceGroup")
- private final String resourceGroup;
-
- public ProviderResourceGroupRolesRequestEntity(AthenzIdentity providerService, AthenzDomain tenantDomain, Set<RoleAction> rolesActions, String resourceGroup) {
- this.domain = providerService.getDomainName();
- this.service = providerService.getName();
- this.tenant = tenantDomain.getName();
- this.roles = rolesActions.stream().map(roleAction -> new TenantRoleAction(roleAction.getRoleName(), roleAction.getAction())).collect(toList());
- this.resourceGroup = resourceGroup;
- }
-
- public static class TenantRoleAction {
- @JsonProperty("role")
- private final String role;
-
- @JsonProperty("action")
- private final String action;
-
- public TenantRoleAction(String role, String action) {
- this.role = role;
- this.action = action;
- }
- }
-}
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/ResourceGroupRolesEntity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/ResourceGroupRolesEntity.java
new file mode 100644
index 00000000000..31773f85229
--- /dev/null
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/ResourceGroupRolesEntity.java
@@ -0,0 +1,70 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.athenz.client.zms.bindings;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.yahoo.vespa.athenz.api.AthenzDomain;
+import com.yahoo.vespa.athenz.api.AthenzIdentity;
+import com.yahoo.vespa.athenz.client.zms.RoleAction;
+
+import java.util.List;
+import java.util.Set;
+
+import static java.util.stream.Collectors.toList;
+
+/**
+ * @author bjorncs
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ResourceGroupRolesEntity {
+
+ @JsonProperty("domain")
+ public final String domain;
+
+ @JsonProperty("service")
+ public final String service;
+
+ @JsonProperty("tenant")
+ public final String tenant;
+
+ @JsonProperty("roles")
+ public final List<TenantRoleAction> roles;
+
+ @JsonProperty("resourceGroup")
+ public final String resourceGroup;
+
+ @JsonCreator
+ public ResourceGroupRolesEntity(@JsonProperty("domain") String domain,
+ @JsonProperty("service") String service,
+ @JsonProperty("tenant") String tenant,
+ @JsonProperty("roles") List<TenantRoleAction> roles,
+ @JsonProperty("resourceGroup") String resourceGroup) {
+ this.domain = domain;
+ this.service = service;
+ this.tenant = tenant;
+ this.roles = roles;
+ this.resourceGroup = resourceGroup;
+ }
+
+ public ResourceGroupRolesEntity(AthenzIdentity providerService, AthenzDomain tenantDomain, Set<RoleAction> rolesActions, String resourceGroup) {
+ this.domain = providerService.getDomainName();
+ this.service = providerService.getName();
+ this.tenant = tenantDomain.getName();
+ this.roles = rolesActions.stream().map(roleAction -> new TenantRoleAction(roleAction.getRoleName(), roleAction.getAction())).collect(toList());
+ this.resourceGroup = resourceGroup;
+ }
+
+ public static class TenantRoleAction {
+ @JsonProperty("role")
+ public final String role;
+
+ @JsonProperty("action")
+ public final String action;
+
+ public TenantRoleAction(String role, String action) {
+ this.role = role;
+ this.action = action;
+ }
+ }
+}
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/ResponseListEntity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/ResponseListEntity.java
new file mode 100644
index 00000000000..fa64430cd11
--- /dev/null
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/ResponseListEntity.java
@@ -0,0 +1,19 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+package com.yahoo.vespa.athenz.client.zms.bindings;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.List;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ResponseListEntity {
+ public final List<String> entity;
+
+ @JsonCreator
+ public ResponseListEntity(@JsonProperty("names") List<String> entity) {
+ this.entity = entity;
+ }
+}
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/RoleEntity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/RoleEntity.java
index 5babe292138..28b1f5d3206 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/RoleEntity.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/RoleEntity.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zms.bindings;
@@ -35,12 +35,14 @@ public class RoleEntity {
private final String memberName;
private final boolean active;
private final boolean approved;
+ private final String auditRef;
@JsonCreator
- public Member(@JsonProperty("memberName") String memberName, @JsonProperty("active") boolean active, @JsonProperty("approved") boolean approved) {
+ public Member(@JsonProperty("memberName") String memberName, @JsonProperty("active") boolean active, @JsonProperty("approved") boolean approved, @JsonProperty("auditRef") String auditRef) {
this.memberName = memberName;
this.active = active;
this.approved = approved;
+ this.auditRef = auditRef;
}
public String memberName() {
@@ -50,5 +52,9 @@ public class RoleEntity {
public boolean pendingApproval() {
return !approved;
}
+
+ public String auditRef() {
+ return auditRef;
+ }
}
}
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/ServiceEntity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/ServiceEntity.java
new file mode 100644
index 00000000000..c8d2c5faa80
--- /dev/null
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/ServiceEntity.java
@@ -0,0 +1,25 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.athenz.client.zms.bindings;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonGetter;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * @author andreer
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ServiceEntity {
+ public final String name;
+
+ @JsonCreator
+ public ServiceEntity(@JsonProperty("name") String name) {
+ this.name = name;
+ }
+
+ @JsonGetter("name")
+ public String name() {
+ return name;
+ }
+}
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/ServiceListResponseEntity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/ServiceListResponseEntity.java
new file mode 100644
index 00000000000..39aca41ab18
--- /dev/null
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/ServiceListResponseEntity.java
@@ -0,0 +1,21 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.athenz.client.zms.bindings;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.List;
+
+/**
+ * @author andreer
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ServiceListResponseEntity {
+ public final List<String> services;
+
+ @JsonCreator
+ public ServiceListResponseEntity(@JsonProperty("names") List<String> services) {
+ this.services = services;
+ }
+}
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/TenancyRequestEntity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/TenancyRequestEntity.java
index 6e1987130f2..913f1011595 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/TenancyRequestEntity.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/bindings/TenancyRequestEntity.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zms.bindings;
import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/package-info.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/package-info.java
index c7e8297fe7f..7c706ad4f35 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/package-info.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/DefaultZtsClient.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/DefaultZtsClient.java
index 24234757590..2eea5d3151a 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/DefaultZtsClient.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/DefaultZtsClient.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zts;
import com.yahoo.security.Pkcs10Csr;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/Identity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/Identity.java
index 455f3c06d1d..50f22269a37 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/Identity.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/Identity.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zts;
import java.security.cert.X509Certificate;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/InstanceIdentity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/InstanceIdentity.java
index 34548351b23..169e64d7fe6 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/InstanceIdentity.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/InstanceIdentity.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zts;
import com.yahoo.vespa.athenz.api.NToken;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/ZtsClient.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/ZtsClient.java
index baeb4271905..e52abc4193b 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/ZtsClient.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/ZtsClient.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zts;
import com.yahoo.security.Pkcs10Csr;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/ZtsClientException.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/ZtsClientException.java
index 0b0d6914fea..3b2dd435e54 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/ZtsClientException.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/ZtsClientException.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zts;
/**
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/IdentityRefreshRequestEntity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/IdentityRefreshRequestEntity.java
index 0704fef2ae3..ed928b45ee0 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/IdentityRefreshRequestEntity.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/IdentityRefreshRequestEntity.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zts.bindings;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/IdentityResponseEntity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/IdentityResponseEntity.java
index f36858ef7b8..9a6691ed236 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/IdentityResponseEntity.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/IdentityResponseEntity.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zts.bindings;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/InstanceIdentityCredentials.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/InstanceIdentityCredentials.java
index b9baba85ea1..d90a622dd76 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/InstanceIdentityCredentials.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/InstanceIdentityCredentials.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zts.bindings;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/InstanceRefreshInformation.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/InstanceRefreshInformation.java
index f6c359c09a8..ce56e6cb60d 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/InstanceRefreshInformation.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/InstanceRefreshInformation.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zts.bindings;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/InstanceRegisterInformation.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/InstanceRegisterInformation.java
index cd272ccf685..54f60ee05f8 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/InstanceRegisterInformation.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/InstanceRegisterInformation.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zts.bindings;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/RoleCertificateRequestEntity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/RoleCertificateRequestEntity.java
index 16dd1d914ef..777e91e7bac 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/RoleCertificateRequestEntity.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/RoleCertificateRequestEntity.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zts.bindings;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/RoleCertificateResponseEntity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/RoleCertificateResponseEntity.java
index cd9a12c0074..1ee79727efc 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/RoleCertificateResponseEntity.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/RoleCertificateResponseEntity.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zts.bindings;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/RoleTokenResponseEntity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/RoleTokenResponseEntity.java
index ec5cdc26ec1..b30a2c214f8 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/RoleTokenResponseEntity.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/RoleTokenResponseEntity.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zts.bindings;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/TenantDomainsResponseEntity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/TenantDomainsResponseEntity.java
index 0c69aac318c..60eeebd384e 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/TenantDomainsResponseEntity.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/bindings/TenantDomainsResponseEntity.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zts.bindings;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/package-info.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/package-info.java
index cffe22ae1c0..9222096a70c 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/package-info.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/utils/IdentityCsrGenerator.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/utils/IdentityCsrGenerator.java
index d1383bd04fd..26fb7819bfd 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/utils/IdentityCsrGenerator.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/utils/IdentityCsrGenerator.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zts.utils;
import com.yahoo.vespa.athenz.api.AthenzIdentity;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/utils/RoleCsrGenerator.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/utils/RoleCsrGenerator.java
index 102bfd82646..92be935d293 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/utils/RoleCsrGenerator.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/utils/RoleCsrGenerator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.client.zts.utils;
import com.yahoo.security.Pkcs10Csr;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/utils/package-info.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/utils/package-info.java
index baca71bc187..8d770304451 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/utils/package-info.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/utils/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/ServiceIdentityProvider.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/ServiceIdentityProvider.java
index f6888acb018..9d6c9f5e8d5 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/ServiceIdentityProvider.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/ServiceIdentityProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.identity;
import com.yahoo.container.jdisc.athenz.AthenzIdentityProvider;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/ServiceIdentitySslSocketFactory.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/ServiceIdentitySslSocketFactory.java
index 85432b77908..768d0fc05e2 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/ServiceIdentitySslSocketFactory.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/ServiceIdentitySslSocketFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.identity;
import javax.net.ssl.SSLContext;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/SiaIdentityProvider.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/SiaIdentityProvider.java
index 9f9bd8be955..9f34640228b 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/SiaIdentityProvider.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/SiaIdentityProvider.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.identity;
import com.google.inject.Inject;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/package-info.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/package-info.java
index da31e72a1fa..1c7c1fa059c 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/package-info.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author mortent
*/
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/EntityBindingsMapper.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/EntityBindingsMapper.java
index 5fb61ba659e..acc558405dd 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/EntityBindingsMapper.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/EntityBindingsMapper.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.identityprovider.api;
import com.fasterxml.jackson.core.JsonProcessingException;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/IdentityDocumentClient.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/IdentityDocumentClient.java
index 9d903ff0c89..5a0f77ec765 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/IdentityDocumentClient.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/IdentityDocumentClient.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.identityprovider.api;
/**
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/IdentityType.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/IdentityType.java
index 4ca2e34a618..25070500ba5 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/IdentityType.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/IdentityType.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.identityprovider.api;
import java.util.Arrays;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/SignedIdentityDocument.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/SignedIdentityDocument.java
index 694981ae23b..06227237d2e 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/SignedIdentityDocument.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/SignedIdentityDocument.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.identityprovider.api;
import com.yahoo.vespa.athenz.api.AthenzService;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/VespaUniqueInstanceId.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/VespaUniqueInstanceId.java
index cc7b862a6dd..97181e44747 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/VespaUniqueInstanceId.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/VespaUniqueInstanceId.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.identityprovider.api;
import java.util.Objects;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/bindings/SignedIdentityDocumentEntity.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/bindings/SignedIdentityDocumentEntity.java
index e6b74d9df4c..c9448a2d97a 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/bindings/SignedIdentityDocumentEntity.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/bindings/SignedIdentityDocumentEntity.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.identityprovider.api.bindings;
import com.fasterxml.jackson.annotation.JsonCreator;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/bindings/package-info.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/bindings/package-info.java
index 462cde4a543..72e047eb53e 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/bindings/package-info.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/bindings/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/package-info.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/package-info.java
index e5419b94a19..2bab451a663 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/package-info.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzCredentials.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzCredentials.java
index d4494c1bd26..0da15569aba 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzCredentials.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzCredentials.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.identityprovider.client;
import com.yahoo.vespa.athenz.identityprovider.api.SignedIdentityDocument;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzCredentialsService.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzCredentialsService.java
index 612f9caa691..91b95cb6084 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzCredentialsService.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzCredentialsService.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.identityprovider.client;
import com.yahoo.container.core.identity.IdentityConfig;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/CsrGenerator.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/CsrGenerator.java
index f73a52b373b..518f77ae79c 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/CsrGenerator.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/CsrGenerator.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.identityprovider.client;
import com.yahoo.vespa.athenz.api.AthenzIdentity;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/DefaultIdentityDocumentClient.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/DefaultIdentityDocumentClient.java
index c99e40732bb..8a587592c71 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/DefaultIdentityDocumentClient.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/DefaultIdentityDocumentClient.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.identityprovider.client;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/IdentityDocumentSigner.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/IdentityDocumentSigner.java
index a28ab788fc1..1c1dcb655c0 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/IdentityDocumentSigner.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/IdentityDocumentSigner.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.identityprovider.client;
import com.yahoo.security.SignatureUtils;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/package-info.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/package-info.java
index 69b52af9742..35ee0b38b8e 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/package-info.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author mortent
*/
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/tls/AthenzIdentityVerifier.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/tls/AthenzIdentityVerifier.java
index 6bec4bc9a82..e440d79a159 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/tls/AthenzIdentityVerifier.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/tls/AthenzIdentityVerifier.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.tls;
import com.yahoo.vespa.athenz.api.AthenzIdentity;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/tls/AthenzX509CertificateUtils.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/tls/AthenzX509CertificateUtils.java
index bec21a5b25f..5f75ace6ac5 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/tls/AthenzX509CertificateUtils.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/tls/AthenzX509CertificateUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.tls;
import com.yahoo.vespa.athenz.api.AthenzIdentity;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/tls/package-info.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/tls/package-info.java
index f1fa2c35bc6..e4b9763ce5a 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/tls/package-info.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/tls/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/utils/AthenzIdentities.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/utils/AthenzIdentities.java
index 5e01d0cddfc..ae0feaa2857 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/utils/AthenzIdentities.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/utils/AthenzIdentities.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.utils;
import com.yahoo.security.X509CertificateUtils;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/utils/SiaUtils.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/utils/SiaUtils.java
index 894c04df233..596bc45d127 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/utils/SiaUtils.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/utils/SiaUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.utils;
import com.yahoo.vespa.athenz.api.AthenzIdentity;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/utils/package-info.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/utils/package-info.java
index 07fe46a4d2c..4efd38825f1 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/utils/package-info.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/utils/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/zpe/AuthorizationResult.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/zpe/AuthorizationResult.java
index 13991199a1f..09910f09416 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/zpe/AuthorizationResult.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/zpe/AuthorizationResult.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.zpe;
import com.yahoo.athenz.zpe.AuthZpeClient.AccessCheckStatus;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/zpe/DefaultZpe.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/zpe/DefaultZpe.java
index 4c5dc6c96b4..5bf25e3e6be 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/zpe/DefaultZpe.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/zpe/DefaultZpe.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.zpe;
import com.yahoo.athenz.auth.token.AccessToken;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/zpe/Zpe.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/zpe/Zpe.java
index f639480821d..1ab32946b43 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/zpe/Zpe.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/zpe/Zpe.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.zpe;
import com.yahoo.vespa.athenz.api.AthenzAccessToken;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/zpe/package-info.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/zpe/package-info.java
index 341eb887021..9ee372603e9 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/zpe/package-info.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/zpe/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/vespa-athenz/src/main/resources/configdefinitions/vespa.athenz.identity.sia-provider.def b/vespa-athenz/src/main/resources/configdefinitions/vespa.athenz.identity.sia-provider.def
index 77310d0c91e..de3757ed20f 100644
--- a/vespa-athenz/src/main/resources/configdefinitions/vespa.athenz.identity.sia-provider.def
+++ b/vespa-athenz/src/main/resources/configdefinitions/vespa.athenz.identity.sia-provider.def
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.athenz.identity
athenzDomain string
diff --git a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/api/AthenzDomainTest.java b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/api/AthenzDomainTest.java
index 3ce9a8b3431..ff3d8d20797 100644
--- a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/api/AthenzDomainTest.java
+++ b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/api/AthenzDomainTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.api;
import org.junit.Test;
diff --git a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/api/AthenzResourceNameTest.java b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/api/AthenzResourceNameTest.java
index 3ff5e9e683a..ececa45d5fb 100644
--- a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/api/AthenzResourceNameTest.java
+++ b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/api/AthenzResourceNameTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.api;
import org.junit.Test;
diff --git a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/aws/AwsCredentialsTest.java b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/aws/AwsCredentialsTest.java
index 5467504285b..39ab8294409 100644
--- a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/aws/AwsCredentialsTest.java
+++ b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/aws/AwsCredentialsTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.aws;
import com.yahoo.vespa.athenz.api.AwsTemporaryCredentials;
diff --git a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identity/SiaIdentityProviderTest.java b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identity/SiaIdentityProviderTest.java
index b7db502b1d0..4e3c81c0f39 100644
--- a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identity/SiaIdentityProviderTest.java
+++ b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identity/SiaIdentityProviderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.identity;
import com.yahoo.security.KeyAlgorithm;
diff --git a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identityprovider/api/VespaUniqueInstanceIdTest.java b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identityprovider/api/VespaUniqueInstanceIdTest.java
index 72b86c1a7a1..81f2d2a08cb 100644
--- a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identityprovider/api/VespaUniqueInstanceIdTest.java
+++ b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identityprovider/api/VespaUniqueInstanceIdTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.identityprovider.api;
import org.junit.Test;
diff --git a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzIdentityProviderImplTest.java b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzIdentityProviderImplTest.java
index 71438eda4b7..21f2c84710a 100644
--- a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzIdentityProviderImplTest.java
+++ b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzIdentityProviderImplTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.identityprovider.client;
import com.yahoo.container.core.identity.IdentityConfig;
diff --git a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identityprovider/client/IdentityDocumentSignerTest.java b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identityprovider/client/IdentityDocumentSignerTest.java
index 4ad58a766e8..246a49a88c3 100644
--- a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identityprovider/client/IdentityDocumentSignerTest.java
+++ b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identityprovider/client/IdentityDocumentSignerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.identityprovider.client;
import com.yahoo.security.KeyAlgorithm;
diff --git a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identityprovider/client/InstanceCsrGeneratorTest.java b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identityprovider/client/InstanceCsrGeneratorTest.java
index 8b6d2f06777..fc0b0a9c85f 100644
--- a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identityprovider/client/InstanceCsrGeneratorTest.java
+++ b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/identityprovider/client/InstanceCsrGeneratorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.identityprovider.client;
import com.yahoo.security.KeyAlgorithm;
diff --git a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/utils/AthenzIdentitiesTest.java b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/utils/AthenzIdentitiesTest.java
index 301012ab635..1b5dc3b7a71 100644
--- a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/utils/AthenzIdentitiesTest.java
+++ b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/utils/AthenzIdentitiesTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.utils;
import com.yahoo.vespa.athenz.api.AthenzDomain;
diff --git a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/utils/AthenzIdentityVerifierTest.java b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/utils/AthenzIdentityVerifierTest.java
index 679476abe12..5b699be4088 100644
--- a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/utils/AthenzIdentityVerifierTest.java
+++ b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/utils/AthenzIdentityVerifierTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.utils;
import com.yahoo.security.KeyAlgorithm;
diff --git a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/utils/SiaUtilsTest.java b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/utils/SiaUtilsTest.java
index 85ce3641226..62c187b8c2c 100644
--- a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/utils/SiaUtilsTest.java
+++ b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/utils/SiaUtilsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.athenz.utils;
import com.yahoo.vespa.athenz.api.AthenzIdentity;
diff --git a/vespa-documentgen-plugin/etc/complex/book.sd b/vespa-documentgen-plugin/etc/complex/book.sd
index 6d6145cb10b..68cb2e0b2ad 100644
--- a/vespa-documentgen-plugin/etc/complex/book.sd
+++ b/vespa-documentgen-plugin/etc/complex/book.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search book {
document book inherits common {
struct ss0 {
diff --git a/vespa-documentgen-plugin/etc/complex/common.sd b/vespa-documentgen-plugin/etc/complex/common.sd
index e0505eba05b..d07f8ca9281 100644
--- a/vespa-documentgen-plugin/etc/complex/common.sd
+++ b/vespa-documentgen-plugin/etc/complex/common.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search common {
document common {
field uri type string {
diff --git a/vespa-documentgen-plugin/etc/complex/common2.sd b/vespa-documentgen-plugin/etc/complex/common2.sd
index e32d3ed6751..65984ed8658 100644
--- a/vespa-documentgen-plugin/etc/complex/common2.sd
+++ b/vespa-documentgen-plugin/etc/complex/common2.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search common2 {
document {
field com2 type string {
diff --git a/vespa-documentgen-plugin/etc/complex/music2.sd b/vespa-documentgen-plugin/etc/complex/music2.sd
index 2e2d96ecdec..327fbeec04b 100644
--- a/vespa-documentgen-plugin/etc/complex/music2.sd
+++ b/vespa-documentgen-plugin/etc/complex/music2.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music2 {
document music2 inherits common {
field artist type string {
diff --git a/vespa-documentgen-plugin/etc/complex/music3.sd b/vespa-documentgen-plugin/etc/complex/music3.sd
index 8bd612268df..aae9fc9097e 100644
--- a/vespa-documentgen-plugin/etc/complex/music3.sd
+++ b/vespa-documentgen-plugin/etc/complex/music3.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music3 {
document music3 inherits music2, common2 {
field mu3 type string {
diff --git a/vespa-documentgen-plugin/etc/complex/video.sd b/vespa-documentgen-plugin/etc/complex/video.sd
index 0b0298a162c..5d1f9c66d8d 100644
--- a/vespa-documentgen-plugin/etc/complex/video.sd
+++ b/vespa-documentgen-plugin/etc/complex/video.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search video {
document video inherits common {
field director type string {
diff --git a/vespa-documentgen-plugin/etc/localapp/book.sd b/vespa-documentgen-plugin/etc/localapp/book.sd
index 72faa934aa6..58a3c121261 100644
--- a/vespa-documentgen-plugin/etc/localapp/book.sd
+++ b/vespa-documentgen-plugin/etc/localapp/book.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search book {
document book inherits common {
struct ss0 {
diff --git a/vespa-documentgen-plugin/etc/localapp/common.sd b/vespa-documentgen-plugin/etc/localapp/common.sd
index 724897b4e7f..ab55e08af0f 100644
--- a/vespa-documentgen-plugin/etc/localapp/common.sd
+++ b/vespa-documentgen-plugin/etc/localapp/common.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search common {
document common {
field uri type string {
diff --git a/vespa-documentgen-plugin/etc/localapp/music.sd b/vespa-documentgen-plugin/etc/localapp/music.sd
index e00e046f511..cdcfdea6b75 100644
--- a/vespa-documentgen-plugin/etc/localapp/music.sd
+++ b/vespa-documentgen-plugin/etc/localapp/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music inherits common {
field artist type string {
diff --git a/vespa-documentgen-plugin/etc/localapp/video.sd b/vespa-documentgen-plugin/etc/localapp/video.sd
index fc7f58298c1..2f1f1f84512 100644
--- a/vespa-documentgen-plugin/etc/localapp/video.sd
+++ b/vespa-documentgen-plugin/etc/localapp/video.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search video {
document video inherits common {
field director type string {
diff --git a/vespa-documentgen-plugin/etc/music/music.sd b/vespa-documentgen-plugin/etc/music/music.sd
index 5295b1bf449..205614db67d 100644
--- a/vespa-documentgen-plugin/etc/music/music.sd
+++ b/vespa-documentgen-plugin/etc/music/music.sd
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# A basic search definition - called music, should be saved to music.sd
search music {
diff --git a/vespa-documentgen-plugin/pom.xml b/vespa-documentgen-plugin/pom.xml
index 7aee1e4265a..7fe11cb1e10 100644
--- a/vespa-documentgen-plugin/pom.xml
+++ b/vespa-documentgen-plugin/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/vespa-documentgen-plugin/src/main/java/com/yahoo/vespa/Annotation.java b/vespa-documentgen-plugin/src/main/java/com/yahoo/vespa/Annotation.java
index 465abae9504..b81459f0baf 100644
--- a/vespa-documentgen-plugin/src/main/java/com/yahoo/vespa/Annotation.java
+++ b/vespa-documentgen-plugin/src/main/java/com/yahoo/vespa/Annotation.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa;
/**
diff --git a/vespa-documentgen-plugin/src/main/java/com/yahoo/vespa/DocumentGenMojo.java b/vespa-documentgen-plugin/src/main/java/com/yahoo/vespa/DocumentGenMojo.java
index 3b9babf1782..39dc6240b84 100644
--- a/vespa-documentgen-plugin/src/main/java/com/yahoo/vespa/DocumentGenMojo.java
+++ b/vespa-documentgen-plugin/src/main/java/com/yahoo/vespa/DocumentGenMojo.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa;
import com.yahoo.collections.Pair;
diff --git a/vespa-documentgen-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml b/vespa-documentgen-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml
index 7b320a4dcaa..d674decb008 100644
--- a/vespa-documentgen-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml
+++ b/vespa-documentgen-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
diff --git a/vespa-documentgen-plugin/src/test/java/com/yahoo/vespa/DocumentGenTest.java b/vespa-documentgen-plugin/src/test/java/com/yahoo/vespa/DocumentGenTest.java
index a65701fe261..3aaaf52e54a 100644
--- a/vespa-documentgen-plugin/src/test/java/com/yahoo/vespa/DocumentGenTest.java
+++ b/vespa-documentgen-plugin/src/test/java/com/yahoo/vespa/DocumentGenTest.java
@@ -1,11 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa;
import com.yahoo.document.DataType;
import com.yahoo.document.StructDataType;
import com.yahoo.document.WeightedSetDataType;
import com.yahoo.searchdefinition.Search;
-import org.junit.Ignore;
import org.junit.Test;
import java.io.File;
diff --git a/vespa-feed-client-cli/CMakeLists.txt b/vespa-feed-client-cli/CMakeLists.txt
index 1d4966ac4a2..7b0160a62a5 100644
--- a/vespa-feed-client-cli/CMakeLists.txt
+++ b/vespa-feed-client-cli/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(vespa-feed-client-cli)
vespa_install_script(src/main/sh/vespa-feed-client.sh vespa-feed-client bin)
diff --git a/vespa-feed-client-cli/pom.xml b/vespa-feed-client-cli/pom.xml
index ebbea35f4a4..930d31beb6c 100644
--- a/vespa-feed-client-cli/pom.xml
+++ b/vespa-feed-client-cli/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -13,7 +13,6 @@
<version>7-SNAPSHOT</version>
<properties>
- <maven.javadoc.skip>true</maven.javadoc.skip>
<!-- Used by internal properties that are still using JDK8-->
<maven.compiler.release>8</maven.compiler.release>
</properties>
diff --git a/vespa-feed-client-cli/src/main/java/ai/vespa/feed/client/CliArguments.java b/vespa-feed-client-cli/src/main/java/ai/vespa/feed/client/CliArguments.java
index 0f6d125f764..0de81d2de36 100644
--- a/vespa-feed-client-cli/src/main/java/ai/vespa/feed/client/CliArguments.java
+++ b/vespa-feed-client-cli/src/main/java/ai/vespa/feed/client/CliArguments.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import org.apache.commons.cli.CommandLine;
diff --git a/vespa-feed-client-cli/src/main/java/ai/vespa/feed/client/CliClient.java b/vespa-feed-client-cli/src/main/java/ai/vespa/feed/client/CliClient.java
index 19d1e4332d3..e40b543f26a 100644
--- a/vespa-feed-client-cli/src/main/java/ai/vespa/feed/client/CliClient.java
+++ b/vespa-feed-client-cli/src/main/java/ai/vespa/feed/client/CliClient.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import ai.vespa.feed.client.JsonFeeder.ResultCallback;
@@ -15,6 +15,7 @@ import java.nio.file.Files;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicReference;
/**
@@ -24,6 +25,8 @@ import java.util.concurrent.atomic.AtomicReference;
*/
public class CliClient {
+ private static final JsonFactory factory = new JsonFactory().disable(JsonGenerator.Feature.AUTO_CLOSE_TARGET);
+
private final PrintStream systemOut;
private final PrintStream systemError;
private final InputStream systemIn;
@@ -59,27 +62,33 @@ public class CliClient {
JsonFeeder feeder = createJsonFeeder(feedClient, cliArgs)) {
CountDownLatch latch = new CountDownLatch(1);
AtomicReference<FeedException> fatal = new AtomicReference<>();
+ AtomicLong successes = new AtomicLong();
+ AtomicLong failures = new AtomicLong();
long startNanos = System.nanoTime();
- feeder.feedMany(in, new ResultCallback() {
- @Override public void onNextResult(Result result, FeedException error) { handleResult(result, error, cliArgs); }
- @Override public void onError(FeedException error) { fatal.set(error); latch.countDown(); }
- @Override public void onComplete() { latch.countDown(); }
- });
if (cliArgs.showProgress()) {
Thread progressPrinter = new Thread(() -> {
try {
while ( ! latch.await(10, TimeUnit.SECONDS)) {
- synchronized (printMonitor) { printBenchmarkResult(System.nanoTime() - startNanos, feedClient.stats(), systemError);}
+ synchronized (printMonitor) {
+ printBenchmarkResult(System.nanoTime() - startNanos, successes.get(), failures.get(), feedClient.stats(), systemError);
+ }
}
}
catch (InterruptedException | IOException ignored) { } // doesn't happen
- });
+ }, "progress-printer");
progressPrinter.setDaemon(true);
progressPrinter.start();
}
+
+ feeder.feedMany(in, new ResultCallback() {
+ @Override public void onNextResult(Result result, FeedException error) { handleResult(result, error, successes, failures, cliArgs); }
+ @Override public void onError(FeedException error) { fatal.set(error); latch.countDown(); }
+ @Override public void onComplete() { latch.countDown(); }
+ });
latch.await();
+
if (cliArgs.benchmarkModeEnabled()) {
- printBenchmarkResult(System.nanoTime() - startNanos, feedClient.stats(), systemOut);
+ printBenchmarkResult(System.nanoTime() - startNanos, successes.get(), failures.get(), feedClient.stats(), systemOut);
}
if (fatal.get() != null) throw fatal.get();
}
@@ -91,8 +100,9 @@ public class CliClient {
}
}
- private void handleResult(Result result, FeedException error, CliArguments args) {
+ private void handleResult(Result result, FeedException error, AtomicLong successes, AtomicLong failures, CliArguments args) {
if (error != null) {
+ failures.incrementAndGet();
if (args.showErrors()) synchronized (printMonitor) {
systemError.println(error.getMessage());
if (error instanceof ResultException) ((ResultException) error).getTrace().ifPresent(systemError::println);
@@ -100,6 +110,7 @@ public class CliClient {
}
}
else {
+ successes.incrementAndGet();
if (args.showSuccesses()) synchronized (printMonitor) {
systemError.println(result.documentId() + ": " + result.type());
result.traceMessage().ifPresent(systemError::println);
@@ -149,24 +160,30 @@ public class CliClient {
@Override public boolean verify(String hostname, SSLSession session) { return true; }
}
- static void printBenchmarkResult(long durationNanos, OperationStats stats, OutputStream systemOut) throws IOException {
- JsonFactory factory = new JsonFactory();
- long okCount = stats.successes();
- long errorCount = stats.requests() - okCount;
- double throughput = okCount * 1e9 / Math.max(1, durationNanos);
+ static void printBenchmarkResult(long durationNanos, long successes, long failures,
+ OperationStats stats, OutputStream systemOut) throws IOException {
try (JsonGenerator generator = factory.createGenerator(systemOut).useDefaultPrettyPrinter()) {
generator.writeStartObject();
- generator.writeNumberField("feeder.runtime", durationNanos / 1_000_000);
- generator.writeNumberField("feeder.okcount", okCount);
- generator.writeNumberField("feeder.errorcount", errorCount);
- generator.writeNumberField("feeder.throughput", throughput);
- generator.writeNumberField("feeder.minlatency", stats.minLatencyMillis());
- generator.writeNumberField("feeder.avglatency", stats.averageLatencyMillis());
- generator.writeNumberField("feeder.maxlatency", stats.maxLatencyMillis());
- generator.writeNumberField("feeder.bytessent", stats.bytesSent());
- generator.writeNumberField("feeder.bytesreceived", stats.bytesReceived());
-
- generator.writeObjectFieldStart("feeder.responsecodes");
+
+ writeFloatField(generator, "feeder.seconds", durationNanos * 1e-9, 3);
+ generator.writeNumberField("feeder.ok.count", successes);
+ writeFloatField(generator, "feeder.ok.rate", successes * 1e9 / Math.max(1, durationNanos), 3);
+ generator.writeNumberField("feeder.error.count", failures);
+ generator.writeNumberField("feeder.inflight.count", stats.inflight());
+
+ generator.writeNumberField("http.request.count", stats.requests());
+ generator.writeNumberField("http.request.bytes", stats.bytesSent());
+
+ generator.writeNumberField("http.exception.count", stats.exceptions());
+
+ generator.writeNumberField("http.response.count", stats.responses());
+ generator.writeNumberField("http.response.bytes", stats.bytesReceived());
+ generator.writeNumberField("http.response.error.count", stats.responses() - stats.successes());
+ writeFloatField(generator, "http.response.latency.millis.min", stats.minLatencyMillis(), 3);
+ writeFloatField(generator, "http.response.latency.millis.avg", stats.averageLatencyMillis(), 3);
+ writeFloatField(generator, "http.response.latency.millis.max", stats.maxLatencyMillis(), 3);
+
+ generator.writeObjectFieldStart("http.response.code.counts");
for (Map.Entry<Integer, Long> entry : stats.responsesByCode().entrySet())
generator.writeNumberField(Integer.toString(entry.getKey()), entry.getValue());
generator.writeEndObject();
@@ -175,4 +192,9 @@ public class CliClient {
}
}
+ private static void writeFloatField(JsonGenerator generator, String name, double value, int precision) throws IOException {
+ generator.writeFieldName(name);
+ generator.writeNumber(String.format("%." + precision + "f", value));
+ }
+
}
diff --git a/vespa-feed-client-cli/src/main/javadoc/README b/vespa-feed-client-cli/src/main/javadoc/README
new file mode 100644
index 00000000000..6695538e308
--- /dev/null
+++ b/vespa-feed-client-cli/src/main/javadoc/README
@@ -0,0 +1 @@
+No javadoc available for module \ No newline at end of file
diff --git a/vespa-feed-client-cli/src/main/sh/vespa-feed-client-standalone.sh b/vespa-feed-client-cli/src/main/sh/vespa-feed-client-standalone.sh
index 57077205d18..b236a516691 100755
--- a/vespa-feed-client-cli/src/main/sh/vespa-feed-client-standalone.sh
+++ b/vespa-feed-client-cli/src/main/sh/vespa-feed-client-standalone.sh
@@ -1,9 +1,9 @@
#!/usr/bin/env sh
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
exec java \
-Djava.awt.headless=true \
-Xms128m -Xmx2048m \
--add-opens=java.base/sun.security.ssl=ALL-UNNAMED \
--Djava.util.logging.config.file=logging.properties \
--cp vespa-feed-client-cli-jar-with-dependencies.jar ai.vespa.feed.client.CliClient "$@"
+-Djava.util.logging.config.file=`dirname $0`/logging.properties \
+-cp `dirname $0`/vespa-feed-client-cli-jar-with-dependencies.jar ai.vespa.feed.client.CliClient "$@"
diff --git a/vespa-feed-client-cli/src/main/sh/vespa-feed-client.sh b/vespa-feed-client-cli/src/main/sh/vespa-feed-client.sh
index 43cde0894b9..fbd172e7423 100755
--- a/vespa-feed-client-cli/src/main/sh/vespa-feed-client.sh
+++ b/vespa-feed-client-cli/src/main/sh/vespa-feed-client.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/vespa-feed-client-cli/src/maven/create-zip.xml b/vespa-feed-client-cli/src/maven/create-zip.xml
index 45bbbea9f2d..df89da0633f 100644
--- a/vespa-feed-client-cli/src/maven/create-zip.xml
+++ b/vespa-feed-client-cli/src/maven/create-zip.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
diff --git a/vespa-feed-client-cli/src/test/java/ai/vespa/feed/client/CliArgumentsTest.java b/vespa-feed-client-cli/src/test/java/ai/vespa/feed/client/CliArgumentsTest.java
index 5300329656e..79aa5b1acfa 100644
--- a/vespa-feed-client-cli/src/test/java/ai/vespa/feed/client/CliArgumentsTest.java
+++ b/vespa-feed-client-cli/src/test/java/ai/vespa/feed/client/CliArgumentsTest.java
@@ -1,4 +1,4 @@
-package ai.vespa.feed.client;// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package ai.vespa.feed.client;// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import org.junit.jupiter.api.Test;
diff --git a/vespa-feed-client/CMakeLists.txt b/vespa-feed-client/CMakeLists.txt
index 7e6346c81cb..05c9ec571fb 100644
--- a/vespa-feed-client/CMakeLists.txt
+++ b/vespa-feed-client/CMakeLists.txt
@@ -1 +1 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
diff --git a/vespa-feed-client/abi-spec.json b/vespa-feed-client/abi-spec.json
index e1fddfeefef..808fe152fee 100644
--- a/vespa-feed-client/abi-spec.json
+++ b/vespa-feed-client/abi-spec.json
@@ -80,7 +80,8 @@
],
"methods": [
"public void success()",
- "public void failure()",
+ "public void failure(ai.vespa.feed.client.HttpResponse)",
+ "public void failure(java.lang.Throwable)",
"public abstract ai.vespa.feed.client.FeedClient$CircuitBreaker$State state()"
],
"fields": [
@@ -196,7 +197,8 @@
"methods": [
"public void <init>(java.time.Duration, java.time.Duration)",
"public void success()",
- "public void failure()",
+ "public void failure(ai.vespa.feed.client.HttpResponse)",
+ "public void failure(java.lang.Throwable)",
"public ai.vespa.feed.client.FeedClient$CircuitBreaker$State state()"
],
"fields": []
diff --git a/vespa-feed-client/pom.xml b/vespa-feed-client/pom.xml
index 7d4938c6fb0..cf2da78c4a9 100644
--- a/vespa-feed-client/pom.xml
+++ b/vespa-feed-client/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/ApacheCluster.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/ApacheCluster.java
index bf407c60075..52d7af2fb31 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/ApacheCluster.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/ApacheCluster.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
@@ -18,12 +18,14 @@ import org.apache.hc.core5.util.Timeout;
import javax.net.ssl.SSLContext;
import java.io.IOException;
import java.net.URI;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicInteger;
+import static java.nio.charset.StandardCharsets.UTF_8;
import static org.apache.hc.core5.http.ssl.TlsCiphers.excludeH2Blacklisted;
import static org.apache.hc.core5.http.ssl.TlsCiphers.excludeWeak;
@@ -161,6 +163,12 @@ class ApacheCluster implements Cluster {
return wrapped.getBodyBytes();
}
+ @Override
+ public String toString() {
+ return "HTTP response with code " + code() +
+ (body() != null ? " and body '" + new String(body(), UTF_8) + "'" : "");
+ }
+
}
}
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/BenchmarkingCluster.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/BenchmarkingCluster.java
index 840219a6bf1..05ff6e99308 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/BenchmarkingCluster.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/BenchmarkingCluster.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import java.util.HashMap;
@@ -82,13 +82,14 @@ public class BenchmarkingCluster implements Cluster {
if (responsesByCode[code] > 0)
responses.put(code, responsesByCode[code]);
- return new OperationStats(requests.get(),
+ long requests = this.requests.get();
+ return new OperationStats(requests,
responses,
exceptions,
- requests.get() - results,
- this.responses == 0 ? 0 : totalLatencyMillis / this.responses,
- minLatencyMillis,
- maxLatencyMillis,
+ requests - results,
+ this.responses == 0 ? -1 : totalLatencyMillis / this.responses,
+ this.responses == 0 ? -1 : minLatencyMillis,
+ this.responses == 0 ? -1 : maxLatencyMillis,
bytesSent,
bytesReceived);
}
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/Cluster.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/Cluster.java
index ed45f25b2c7..57c028426fe 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/Cluster.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/Cluster.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import java.io.Closeable;
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/DocumentId.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/DocumentId.java
index 39fc9fb28e0..a0722f1f6dc 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/DocumentId.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/DocumentId.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import java.util.Objects;
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/DryrunCluster.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/DryrunCluster.java
index 9e6ad0150c7..282e4e14285 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/DryrunCluster.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/DryrunCluster.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import java.nio.charset.StandardCharsets;
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/DynamicThrottler.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/DynamicThrottler.java
index b0279d27bf8..a379a8b066b 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/DynamicThrottler.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/DynamicThrottler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import java.util.Arrays;
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/FeedClient.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/FeedClient.java
index 65ce8efe107..d463c611d6a 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/FeedClient.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/FeedClient.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import java.io.Closeable;
@@ -22,18 +22,19 @@ public interface FeedClient extends Closeable {
/**
* Send a document put with the given parameters, returning a future with the result of the operation.
* Exceptional completion will use be an instance of {@link FeedException} or one of its sub-classes.
- * */
+ */
CompletableFuture<Result> put(DocumentId documentId, String documentJson, OperationParameters params);
/**
* Send a document update with the given parameters, returning a future with the result of the operation.
* Exceptional completion will use be an instance of {@link FeedException} or one of its sub-classes.
- * */
+ */
CompletableFuture<Result> update(DocumentId documentId, String updateJson, OperationParameters params);
- /** Send a document remove with the given parameters, returning a future with the result of the operation.
- * Exceptional completion will use be an instance of {@link FeedException} or one of its sub-classes.
- * */
+ /**
+ * Send a document remove with the given parameters, returning a future with the result of the operation.
+ * Exceptional completion will use be an instance of {@link FeedException} or one of its sub-classes.
+ */
CompletableFuture<Result> remove(DocumentId documentId, OperationParameters params);
/** Returns a snapshot of the stats for this feed client, such as requests made, and responses by status. */
@@ -68,8 +69,11 @@ public interface FeedClient extends Closeable {
/** Called by the client whenever a successful response is obtained. */
default void success() { }
- /** Called by the client whenever a transient or fatal error occurs. */
- default void failure() { }
+ /** Called by the client whenever an error HTTP response is received. */
+ default void failure(HttpResponse response) { }
+
+ /** Called by the client whenever an exception occurs trying to obtain a HTTP response. */
+ default void failure(Throwable cause) { }
/** The current state of the circuit breaker. */
State state();
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/FeedClientBuilder.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/FeedClientBuilder.java
index d85fd7bfa2b..cdf55f0ba7e 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/FeedClientBuilder.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/FeedClientBuilder.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import javax.net.ssl.HostnameVerifier;
@@ -37,7 +37,7 @@ public class FeedClientBuilder {
int connectionsPerEndpoint = 4;
int maxStreamsPerConnection = 4096;
FeedClient.RetryStrategy retryStrategy = defaultRetryStrategy;
- FeedClient.CircuitBreaker circuitBreaker = new GracePeriodCircuitBreaker(Duration.ofSeconds(1), Duration.ofMinutes(10));
+ FeedClient.CircuitBreaker circuitBreaker = new GracePeriodCircuitBreaker(Duration.ofSeconds(10), Duration.ofMinutes(10));
Path certificateFile;
Path privateKeyFile;
Path caCertificatesFile;
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/FeedException.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/FeedException.java
index 54e11d3a185..1936eb09418 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/FeedException.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/FeedException.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import java.util.Optional;
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/GracePeriodCircuitBreaker.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/GracePeriodCircuitBreaker.java
index c319bfca252..042d0266de2 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/GracePeriodCircuitBreaker.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/GracePeriodCircuitBreaker.java
@@ -1,14 +1,16 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import java.time.Duration;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
+import java.util.concurrent.atomic.AtomicReference;
import java.util.function.LongSupplier;
import java.util.logging.Logger;
import static java.util.Objects.requireNonNull;
import static java.util.logging.Level.FINE;
+import static java.util.logging.Level.INFO;
import static java.util.logging.Level.WARNING;
/**
@@ -25,6 +27,7 @@ public class GracePeriodCircuitBreaker implements FeedClient.CircuitBreaker {
private final AtomicBoolean halfOpen = new AtomicBoolean(false);
private final AtomicBoolean open = new AtomicBoolean(false);
private final LongSupplier clock;
+ private final AtomicReference<String> detail = new AtomicReference<>();
private final long graceMillis;
private final long doomMillis;
@@ -52,18 +55,32 @@ public class GracePeriodCircuitBreaker implements FeedClient.CircuitBreaker {
}
@Override
- public void failure() {
- failingSinceMillis.compareAndSet(NEVER, clock.getAsLong());
+ public void failure(HttpResponse response) {
+ failure(response.toString());
+ }
+
+ @Override
+ public void failure(Throwable cause) {
+ failure(cause.getMessage());
+ }
+
+ private void failure(String detail) {
+ if (failingSinceMillis.compareAndSet(NEVER, clock.getAsLong()))
+ this.detail.set(detail);
}
@Override
public State state() {
long failingMillis = clock.getAsLong() - failingSinceMillis.get();
if (failingMillis > graceMillis && halfOpen.compareAndSet(false, true))
- log.log(FINE, "Circuit breaker is now half-open");
+ log.log(INFO, "Circuit breaker is now half-open, as no requests have succeeded for the " +
+ "last " + failingMillis + "ms. The server will be pinged to see if it recovers, " +
+ "but this client will give up if no successes are observed within " + doomMillis + "ms. " +
+ "First failure was '" + detail.get() + "'.");
if (failingMillis > doomMillis && open.compareAndSet(false, true))
- log.log(WARNING, "Circuit breaker is now open");
+ log.log(WARNING, "Circuit breaker is now open, after " + doomMillis + "ms of failing request, " +
+ "and this client will give up and abort its remaining feed operations.");
return open.get() ? State.OPEN : halfOpen.get() ? State.HALF_OPEN : State.CLOSED;
}
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpFeedClient.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpFeedClient.java
index 95208d06208..9c423c6fc34 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpFeedClient.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpFeedClient.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import com.fasterxml.jackson.core.JsonFactory;
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpRequest.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpRequest.java
index 8da2f46def2..48defd71ea8 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpRequest.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpRequest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import java.util.Map;
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpRequestStrategy.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpRequestStrategy.java
index 485e6f03908..cf65a874f3b 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpRequestStrategy.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpRequestStrategy.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import ai.vespa.feed.client.FeedClient.CircuitBreaker;
@@ -135,7 +135,7 @@ class HttpRequestStrategy implements RequestStrategy {
* or the user has turned off retries for this type of operation.
*/
private boolean retry(HttpRequest request, Throwable thrown, int attempt) {
- breaker.failure();
+ breaker.failure(thrown);
if ( (thrown instanceof IOException) // General IO problems.
|| (thrown instanceof CancellationException) // TLS session disconnect.
|| (thrown instanceof CancelledKeyException)) { // Selection cancelled.
@@ -163,9 +163,9 @@ class HttpRequestStrategy implements RequestStrategy {
return true;
}
- breaker.failure();
logResponse(FINE, response, request, attempt);
if (response.code() == 500 || response.code() == 502 || response.code() == 504) { // Hopefully temporary errors.
+ breaker.failure(response);
return retry(request, attempt);
}
@@ -239,13 +239,13 @@ class HttpRequestStrategy implements RequestStrategy {
@Override
public CompletableFuture<HttpResponse> enqueue(DocumentId documentId, HttpRequest request) {
RetriableFuture<HttpResponse> result = new RetriableFuture<>(); // Carries the aggregate result of the operation, including retries.
- CompletableFuture<HttpResponse> vessel = new CompletableFuture<>(); // Holds the computation of a single dispatch to the HTTP client.
- RetriableFuture<HttpResponse> previous = inflightById.put(documentId, result);
if (destroyed.get()) {
result.complete();
return result;
}
+ CompletableFuture<HttpResponse> vessel = new CompletableFuture<>(); // Holds the computation of a single dispatch to the HTTP client.
+ RetriableFuture<HttpResponse> previous = inflightById.put(documentId, result);
if (previous == null) {
acquireSlot();
offer(request, vessel);
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpResponse.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpResponse.java
index b1dd54240eb..07fdb2d7257 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpResponse.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/HttpResponse.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
interface HttpResponse {
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/JsonFeeder.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/JsonFeeder.java
index 653457fdd9f..2d7caea9f26 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/JsonFeeder.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/JsonFeeder.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import ai.vespa.feed.client.FeedClient.OperationType;
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/OperationParameters.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/OperationParameters.java
index 8c20a37d224..0ec40e114df 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/OperationParameters.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/OperationParameters.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import java.time.Duration;
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/OperationParseException.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/OperationParseException.java
index 15ba024bb4e..f60368dd67f 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/OperationParseException.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/OperationParseException.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
/**
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/OperationStats.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/OperationStats.java
index abba0f15880..ab2faf245d8 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/OperationStats.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/OperationStats.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import java.util.Map;
@@ -53,46 +53,57 @@ public class OperationStats {
bytesReceived - initial.bytesReceived);
}
+ /** Number of HTTP requests attempted. */
public long requests() {
return requests;
}
+ /** Number of HTTP responses received. */
public long responses() {
- return requests - inflight;
+ return requests - inflight - exceptions;
}
+ /** Number of 200 OK HTTP responses received. */
public long successes() {
return responsesByCode.getOrDefault(200, 0L);
}
+ /** Number of HTTP responses by status code. */
public Map<Integer, Long> responsesByCode() {
return responsesByCode;
}
+ /** Number of exceptions (instead of responses). */
public long exceptions() {
return exceptions;
}
+ /** Number of attempted requests which haven't yielded a response or exception yet. */
public long inflight() {
return inflight;
}
+ /** Average request-response latency, or -1. */
public long averageLatencyMillis() {
return averageLatencyMillis;
}
+ /** Minimum request-response latency, or -1. */
public long minLatencyMillis() {
return minLatencyMillis;
}
+ /** Maximum request-response latency, or -1. */
public long maxLatencyMillis() {
return maxLatencyMillis;
}
+ /** Number of bytes sent, for HTTP requests with a response. */
public long bytesSent() {
return bytesSent;
}
+ /** Number of bytes received in HTTP responses. */
public long bytesReceived() {
return bytesReceived;
}
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/RequestStrategy.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/RequestStrategy.java
index a1101eb0ebb..9a97f7daa66 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/RequestStrategy.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/RequestStrategy.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import ai.vespa.feed.client.FeedClient.CircuitBreaker.State;
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/Result.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/Result.java
index 790b5cf0b4a..5ff3fd0a219 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/Result.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/Result.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import java.util.Optional;
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/ResultException.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/ResultException.java
index 6b235e5e7ab..d9eaff40d74 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/ResultException.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/ResultException.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import java.util.Optional;
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/ResultParseException.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/ResultParseException.java
index 3d7caae89fa..947ab9f0560 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/ResultParseException.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/ResultParseException.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
/**
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/SslContextBuilder.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/SslContextBuilder.java
index 9c863c51111..f5e13eccd56 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/SslContextBuilder.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/SslContextBuilder.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/StaticThrottler.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/StaticThrottler.java
index c5b36746b6d..5137a18d923 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/StaticThrottler.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/StaticThrottler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import java.util.concurrent.CompletableFuture;
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/Throttler.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/Throttler.java
index fa1660d99e6..f2453c27879 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/Throttler.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/Throttler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import java.util.concurrent.CompletableFuture;
diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/package-info.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/package-info.java
index e058b9b921e..daab16a9ff2 100644
--- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/package-info.java
+++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author bjorncs
*/
diff --git a/vespa-feed-client/src/main/sh/vespa-version-generator.sh b/vespa-feed-client/src/main/sh/vespa-version-generator.sh
index 7203212297a..5aafb3e2bf7 100755
--- a/vespa-feed-client/src/main/sh/vespa-version-generator.sh
+++ b/vespa-feed-client/src/main/sh/vespa-version-generator.sh
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Extracts the current version number (V_TAG_COMPONENT) from vtag.map and outputs this into a Java class.
# This replaces vespajlib/../VersionTagger.java as this module cannot depend on that, nor the dependencies
diff --git a/vespa-feed-client/src/test/java/ai/vespa/feed/client/GracePeriodCircuitBreakerTest.java b/vespa-feed-client/src/test/java/ai/vespa/feed/client/GracePeriodCircuitBreakerTest.java
index 9b30ebfd0aa..8eaffc3e9be 100644
--- a/vespa-feed-client/src/test/java/ai/vespa/feed/client/GracePeriodCircuitBreakerTest.java
+++ b/vespa-feed-client/src/test/java/ai/vespa/feed/client/GracePeriodCircuitBreakerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import ai.vespa.feed.client.FeedClient.CircuitBreaker;
@@ -22,6 +22,7 @@ class GracePeriodCircuitBreakerTest {
AtomicLong now = new AtomicLong(0);
long SECOND = 1000;
CircuitBreaker breaker = new GracePeriodCircuitBreaker(now::get, Duration.ofSeconds(1), Duration.ofMinutes(1));
+ Throwable error = new Error();
assertEquals(CLOSED, breaker.state(), "Initial state is closed");
@@ -34,7 +35,7 @@ class GracePeriodCircuitBreakerTest {
now.addAndGet(100 * SECOND);
assertEquals(CLOSED, breaker.state(), "State is closed some time after a success");
- breaker.failure();
+ breaker.failure(error);
assertEquals(CLOSED, breaker.state(), "State is closed right after a failure");
now.addAndGet(SECOND);
@@ -46,7 +47,7 @@ class GracePeriodCircuitBreakerTest {
breaker.success();
assertEquals(CLOSED, breaker.state(), "State is closed after a new success");
- breaker.failure();
+ breaker.failure(error);
now.addAndGet(60 * SECOND);
assertEquals(HALF_OPEN, breaker.state(), "State is half-open until doom period has passed");
diff --git a/vespa-feed-client/src/test/java/ai/vespa/feed/client/HttpFeedClientTest.java b/vespa-feed-client/src/test/java/ai/vespa/feed/client/HttpFeedClientTest.java
index fe079270f9b..d92958a5838 100644
--- a/vespa-feed-client/src/test/java/ai/vespa/feed/client/HttpFeedClientTest.java
+++ b/vespa-feed-client/src/test/java/ai/vespa/feed/client/HttpFeedClientTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import org.junit.jupiter.api.Test;
diff --git a/vespa-feed-client/src/test/java/ai/vespa/feed/client/HttpRequestStrategyTest.java b/vespa-feed-client/src/test/java/ai/vespa/feed/client/HttpRequestStrategyTest.java
index c40735b3b2a..11b844f2c69 100644
--- a/vespa-feed-client/src/test/java/ai/vespa/feed/client/HttpRequestStrategyTest.java
+++ b/vespa-feed-client/src/test/java/ai/vespa/feed/client/HttpRequestStrategyTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import ai.vespa.feed.client.FeedClient.CircuitBreaker;
diff --git a/vespa-feed-client/src/test/java/ai/vespa/feed/client/JsonFeederTest.java b/vespa-feed-client/src/test/java/ai/vespa/feed/client/JsonFeederTest.java
index 88a9a71c73e..e4fb5cb5bef 100644
--- a/vespa-feed-client/src/test/java/ai/vespa/feed/client/JsonFeederTest.java
+++ b/vespa-feed-client/src/test/java/ai/vespa/feed/client/JsonFeederTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import org.junit.jupiter.api.Test;
diff --git a/vespa-feed-client/src/test/java/ai/vespa/feed/client/SslContextBuilderTest.java b/vespa-feed-client/src/test/java/ai/vespa/feed/client/SslContextBuilderTest.java
index 5d3923d086c..79d8ea609ce 100644
--- a/vespa-feed-client/src/test/java/ai/vespa/feed/client/SslContextBuilderTest.java
+++ b/vespa-feed-client/src/test/java/ai/vespa/feed/client/SslContextBuilderTest.java
@@ -1,4 +1,4 @@
-package ai.vespa.feed.client;// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package ai.vespa.feed.client;// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import org.bouncycastle.cert.jcajce.JcaX509CertificateConverter;
import org.bouncycastle.cert.jcajce.JcaX509v3CertificateBuilder;
diff --git a/vespa-feed-client/src/test/java/ai/vespa/feed/client/examples/JsonFileFeederExample.java b/vespa-feed-client/src/test/java/ai/vespa/feed/client/examples/JsonFileFeederExample.java
index 3b633c38132..b951fb62fb5 100644
--- a/vespa-feed-client/src/test/java/ai/vespa/feed/client/examples/JsonFileFeederExample.java
+++ b/vespa-feed-client/src/test/java/ai/vespa/feed/client/examples/JsonFileFeederExample.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client.examples;
import ai.vespa.feed.client.DocumentId;
diff --git a/vespa-feed-client/src/test/java/ai/vespa/feed/client/examples/JsonStreamFeederExample.java b/vespa-feed-client/src/test/java/ai/vespa/feed/client/examples/JsonStreamFeederExample.java
index cbe0e213907..3d4ce150fcf 100644
--- a/vespa-feed-client/src/test/java/ai/vespa/feed/client/examples/JsonStreamFeederExample.java
+++ b/vespa-feed-client/src/test/java/ai/vespa/feed/client/examples/JsonStreamFeederExample.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client.examples;
import ai.vespa.feed.client.DocumentId;
diff --git a/vespa-feed-client/src/test/java/ai/vespa/feed/client/examples/SimpleExample.java b/vespa-feed-client/src/test/java/ai/vespa/feed/client/examples/SimpleExample.java
index 5ece9051e41..4e6473a6568 100644
--- a/vespa-feed-client/src/test/java/ai/vespa/feed/client/examples/SimpleExample.java
+++ b/vespa-feed-client/src/test/java/ai/vespa/feed/client/examples/SimpleExample.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client.examples;
import ai.vespa.feed.client.DocumentId;
diff --git a/vespa-hadoop/pom.xml b/vespa-hadoop/pom.xml
index 39f10d84f9b..8d56aad1f1e 100644
--- a/vespa-hadoop/pom.xml
+++ b/vespa-hadoop/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/vespa-hadoop/src/main/java/ai/vespa/feed/client/DryrunResult.java b/vespa-hadoop/src/main/java/ai/vespa/feed/client/DryrunResult.java
index 5974a8df271..74baf9f1065 100644
--- a/vespa-hadoop/src/main/java/ai/vespa/feed/client/DryrunResult.java
+++ b/vespa-hadoop/src/main/java/ai/vespa/feed/client/DryrunResult.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.feed.client;
import ai.vespa.feed.client.Result.Type;
diff --git a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/LegacyVespaRecordWriter.java b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/LegacyVespaRecordWriter.java
index b716c55beb5..19e98e8373d 100644
--- a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/LegacyVespaRecordWriter.java
+++ b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/LegacyVespaRecordWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hadoop.mapreduce;
import com.fasterxml.jackson.core.JsonFactory;
diff --git a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaOutputCommitter.java b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaOutputCommitter.java
index 82bd7063760..6cb4ef45a96 100644
--- a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaOutputCommitter.java
+++ b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaOutputCommitter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hadoop.mapreduce;
import org.apache.hadoop.mapreduce.JobContext;
diff --git a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaOutputFormat.java b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaOutputFormat.java
index f80c28424f2..9dd21aee557 100644
--- a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaOutputFormat.java
+++ b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaOutputFormat.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hadoop.mapreduce;
import com.yahoo.vespa.hadoop.mapreduce.util.VespaConfiguration;
diff --git a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaRecordWriter.java b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaRecordWriter.java
index e1ab19eab75..ecac9f67615 100644
--- a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaRecordWriter.java
+++ b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaRecordWriter.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hadoop.mapreduce;
import ai.vespa.feed.client.FeedClient;
diff --git a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaSimpleJsonInputFormat.java b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaSimpleJsonInputFormat.java
index 62dd9069b59..f9bcba96a69 100644
--- a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaSimpleJsonInputFormat.java
+++ b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/VespaSimpleJsonInputFormat.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hadoop.mapreduce;
import com.fasterxml.jackson.core.JsonFactory;
diff --git a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/package-info.java b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/package-info.java
index c39cac45cb6..22a742566cd 100644
--- a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/package-info.java
+++ b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* com.yahoo.vespa.hadoop.mapreduce contains classes and utilities
* to enable feeding directly to Vespa endpoints from mapreduce.
diff --git a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/TupleTools.java b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/TupleTools.java
index c572b6a0771..5147dc3496c 100644
--- a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/TupleTools.java
+++ b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/TupleTools.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hadoop.mapreduce.util;
import org.apache.pig.ResourceSchema;
diff --git a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/VespaConfiguration.java b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/VespaConfiguration.java
index 1be794f8e11..fad14532d38 100644
--- a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/VespaConfiguration.java
+++ b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/VespaConfiguration.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hadoop.mapreduce.util;
import com.yahoo.vespa.http.client.config.FeedParams;
diff --git a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/VespaCounters.java b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/VespaCounters.java
index 4029eaf27ec..63b4b6600fd 100644
--- a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/VespaCounters.java
+++ b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/VespaCounters.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hadoop.mapreduce.util;
import org.apache.hadoop.mapreduce.Counter;
diff --git a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/VespaHttpClient.java b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/VespaHttpClient.java
index 17cdd548589..c7ed52a01c0 100644
--- a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/VespaHttpClient.java
+++ b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/VespaHttpClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hadoop.mapreduce.util;
import com.fasterxml.jackson.databind.JsonNode;
diff --git a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/VespaQuerySchema.java b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/VespaQuerySchema.java
index 636afddbed8..cfaff44addb 100644
--- a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/VespaQuerySchema.java
+++ b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/mapreduce/util/VespaQuerySchema.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hadoop.mapreduce.util;
import com.fasterxml.jackson.databind.JsonNode;
diff --git a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/package-info.java b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/package-info.java
index a3b0726a786..41c621d2877 100644
--- a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/package-info.java
+++ b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* com.yahoo.vespa.hadoop contains classes and utilities
* to enable feeding directly to Vespa endpoints from pig and mapreduce.
diff --git a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperation.java b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperation.java
index b6fe19f8cde..c95aa02215f 100644
--- a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperation.java
+++ b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hadoop.pig;
import com.fasterxml.jackson.core.JsonEncoding;
diff --git a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaQuery.java b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaQuery.java
index 4c2722ce7d9..1d50f2909a2 100644
--- a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaQuery.java
+++ b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaQuery.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hadoop.pig;
import com.fasterxml.jackson.databind.JsonNode;
diff --git a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaSimpleJsonLoader.java b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaSimpleJsonLoader.java
index 9b3489a3668..9dc294ce243 100644
--- a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaSimpleJsonLoader.java
+++ b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaSimpleJsonLoader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hadoop.pig;
import com.yahoo.vespa.hadoop.mapreduce.VespaSimpleJsonInputFormat;
diff --git a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaStorage.java b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaStorage.java
index 0ef90214f41..96a95351bb5 100644
--- a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaStorage.java
+++ b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaStorage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hadoop.pig;
import com.yahoo.vespa.hadoop.mapreduce.VespaOutputFormat;
diff --git a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/package-info.java b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/package-info.java
index dc82670bed1..686765ac047 100644
--- a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/package-info.java
+++ b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* com.yahoo.vespa.hadoop.pig contains classes and utilities
* to enable feeding directly to Vespa endpoints from pig.
diff --git a/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/MapReduceTest.java b/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/MapReduceTest.java
index fa7965acbc1..d56cd818de2 100644
--- a/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/MapReduceTest.java
+++ b/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/MapReduceTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hadoop.pig;
import com.fasterxml.jackson.core.JsonEncoding;
diff --git a/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperationTest.java b/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperationTest.java
index db2fab9b05e..e3eabfe9bf7 100644
--- a/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperationTest.java
+++ b/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperationTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hadoop.pig;
import org.apache.pig.data.BagFactory;
diff --git a/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaQueryTest.java b/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaQueryTest.java
index b0e2dd32c04..a0b549a737f 100644
--- a/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaQueryTest.java
+++ b/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaQueryTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hadoop.pig;
import com.sun.net.httpserver.HttpServer;
diff --git a/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaStorageTest.java b/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaStorageTest.java
index 3565db37126..f690e767194 100644
--- a/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaStorageTest.java
+++ b/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaStorageTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hadoop.pig;
import com.yahoo.vespa.hadoop.mapreduce.util.VespaConfiguration;
diff --git a/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/util/MockQueryHandler.java b/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/util/MockQueryHandler.java
index ab571b284e9..64c160ea14c 100644
--- a/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/util/MockQueryHandler.java
+++ b/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/util/MockQueryHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hadoop.util;
import com.fasterxml.jackson.core.JsonEncoding;
diff --git a/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/util/TupleToolsTest.java b/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/util/TupleToolsTest.java
index 93e6a0abfdd..b4ccbdf2183 100644
--- a/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/util/TupleToolsTest.java
+++ b/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/util/TupleToolsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hadoop.util;
import com.yahoo.vespa.hadoop.mapreduce.util.TupleTools;
diff --git a/vespa-hadoop/src/test/pig/feed_create_operations.pig b/vespa-hadoop/src/test/pig/feed_create_operations.pig
index 53a5712d0f2..4583c095133 100644
--- a/vespa-hadoop/src/test/pig/feed_create_operations.pig
+++ b/vespa-hadoop/src/test/pig/feed_create_operations.pig
@@ -1,4 +1,4 @@
--- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-- REGISTER vespa-hadoop.jar -- Not needed in tests
-- Create valid Vespa put operations
diff --git a/vespa-hadoop/src/test/pig/feed_create_operations_short_form.pig b/vespa-hadoop/src/test/pig/feed_create_operations_short_form.pig
index ccede2a30b9..0f0e63d843a 100644
--- a/vespa-hadoop/src/test/pig/feed_create_operations_short_form.pig
+++ b/vespa-hadoop/src/test/pig/feed_create_operations_short_form.pig
@@ -1,4 +1,4 @@
--- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-- REGISTER vespa-hadoop.jar -- Not needed in tests
-- Transform tabular data to a Vespa document operation JSON format
diff --git a/vespa-hadoop/src/test/pig/feed_multiline_operations.pig b/vespa-hadoop/src/test/pig/feed_multiline_operations.pig
index bd232c49cb3..1971270cbdc 100644
--- a/vespa-hadoop/src/test/pig/feed_multiline_operations.pig
+++ b/vespa-hadoop/src/test/pig/feed_multiline_operations.pig
@@ -1,4 +1,4 @@
--- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-- REGISTER vespa-hadoop.jar -- Not needed in tests
-- Define short name for VespaJsonLoader
diff --git a/vespa-hadoop/src/test/pig/feed_operations.pig b/vespa-hadoop/src/test/pig/feed_operations.pig
index d2d1af4c417..48873fde87a 100644
--- a/vespa-hadoop/src/test/pig/feed_operations.pig
+++ b/vespa-hadoop/src/test/pig/feed_operations.pig
@@ -1,4 +1,4 @@
--- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-- REGISTER vespa-hadoop.jar -- Not needed in tests
-- Define short name for VespaStorage
diff --git a/vespa-hadoop/src/test/pig/feed_operations_with_json_loader.pig b/vespa-hadoop/src/test/pig/feed_operations_with_json_loader.pig
index a1788db8570..da58fe3c678 100644
--- a/vespa-hadoop/src/test/pig/feed_operations_with_json_loader.pig
+++ b/vespa-hadoop/src/test/pig/feed_operations_with_json_loader.pig
@@ -1,4 +1,4 @@
--- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-- REGISTER vespa-hadoop.jar -- Not needed in tests
-- Define short name for VespaJsonLoader
diff --git a/vespa-hadoop/src/test/pig/feed_operations_xml.pig b/vespa-hadoop/src/test/pig/feed_operations_xml.pig
index 835c2a033e3..4e5057f4909 100644
--- a/vespa-hadoop/src/test/pig/feed_operations_xml.pig
+++ b/vespa-hadoop/src/test/pig/feed_operations_xml.pig
@@ -1,4 +1,4 @@
--- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-- REGISTER vespa-hadoop.jar -- Not needed in tests
-- Define short name for VespaStorage
diff --git a/vespa-hadoop/src/test/pig/feed_visit_data.pig b/vespa-hadoop/src/test/pig/feed_visit_data.pig
index 28d7d4be353..59d144b53dc 100644
--- a/vespa-hadoop/src/test/pig/feed_visit_data.pig
+++ b/vespa-hadoop/src/test/pig/feed_visit_data.pig
@@ -1,4 +1,4 @@
--- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-- REGISTER vespa-hadoop.jar -- Not needed in tests
-- Define short name for VespaStorage
diff --git a/vespa-hadoop/src/test/pig/query.pig b/vespa-hadoop/src/test/pig/query.pig
index ee8e0d3848e..96caa5cd0c4 100644
--- a/vespa-hadoop/src/test/pig/query.pig
+++ b/vespa-hadoop/src/test/pig/query.pig
@@ -1,4 +1,4 @@
--- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-- REGISTER vespa-hadoop.jar -- Not needed in tests
-- Define Vespa query for retrieving blog posts
diff --git a/vespa-hadoop/src/test/pig/query_alt_root.pig b/vespa-hadoop/src/test/pig/query_alt_root.pig
index 18ead97dde1..2884b4a600f 100644
--- a/vespa-hadoop/src/test/pig/query_alt_root.pig
+++ b/vespa-hadoop/src/test/pig/query_alt_root.pig
@@ -1,4 +1,4 @@
--- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-- REGISTER vespa-hadoop.jar -- Not needed in tests
-- Define Vespa query for retrieving blog posts
diff --git a/vespa-hadoop/src/test/resources/operations_data.xml b/vespa-hadoop/src/test/resources/operations_data.xml
index d8399675211..db02b6bee73 100644
--- a/vespa-hadoop/src/test/resources/operations_data.xml
+++ b/vespa-hadoop/src/test/resources/operations_data.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<vespafeed>
<document documenttype="music" documentid="id:music:music::http://music.yahoo.com/a-ha/Scoundrel+Days"> <url>http://music.yahoo.com/a-ha/Scoundrel+Days</url> <title><![CDATA[Scoundrel Days]]></title> <artist><![CDATA[a-ha]]></artist> <year>0</year> <popularity>290</popularity> </document>
<document documenttype="music" documentid="id:music:music::http://music.yahoo.com/Accept/Restless+And+Wild"> <url>http://music.yahoo.com/Accept/Restless+And+Wild</url> <title><![CDATA[Restless And Wild]]></title> <artist><![CDATA[Accept]]></artist> <year>0</year> <popularity>75</popularity> </document>
diff --git a/vespa-http-client/CMakeLists.txt b/vespa-http-client/CMakeLists.txt
index 511b4a4c985..40d7070eca3 100644
--- a/vespa-http-client/CMakeLists.txt
+++ b/vespa-http-client/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(vespa-http-client)
diff --git a/vespa-http-client/pom.xml b/vespa-http-client/pom.xml
index 19161e720ba..644ee38367e 100644
--- a/vespa-http-client/pom.xml
+++ b/vespa-http-client/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -60,9 +60,28 @@
<dependency>
<!-- Needed for Vespa TLS configuration. Standard jar artifact -->
<groupId>com.yahoo.vespa</groupId>
- <artifactId>http-utils</artifactId>
+ <artifactId>vespajlib</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
+ <exclusions>
+ <!-- Optimization: exclude artifacts that are not used by this module -->
+ <exclusion>
+ <groupId>io.airlift</groupId>
+ <artifactId>aircompressor</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>net.java.dev.jna</groupId>
+ <artifactId>jna</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-exec</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.lz4</groupId>
+ <artifactId>lz4-java</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<!-- Needed for Vespa TLS configuration. -->
diff --git a/vespa-http-client/src/main/bin/versiontagger.sh b/vespa-http-client/src/main/bin/versiontagger.sh
index 05682c3f940..f4e4c23e50a 100755
--- a/vespa-http-client/src/main/bin/versiontagger.sh
+++ b/vespa-http-client/src/main/bin/versiontagger.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# Extracts the current version number (V_TAG_COMPONENT) from vtag.map and outputs this into a Java class.
# This replaces vespajlib/../VersionTagger.java as this module cannot depend on that, nor the dependencies
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedClient.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedClient.java
index 8c2c1405fa0..0b16f37744a 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedClient.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedClient.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client;
import com.yahoo.vespa.http.client.core.JsonReader;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedClientFactory.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedClientFactory.java
index 62c15fcea27..842cf503f3a 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedClientFactory.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedClientFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedConnectException.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedConnectException.java
index 7ef585e814f..c2f3bb089c5 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedConnectException.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedConnectException.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client;
import com.yahoo.vespa.http.client.config.Endpoint;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedEndpointException.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedEndpointException.java
index 3a67c80224f..b696864749c 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedEndpointException.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedEndpointException.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client;
import com.yahoo.vespa.http.client.config.Endpoint;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedProtocolException.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedProtocolException.java
index dd5aa902c1a..b428259fdf1 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedProtocolException.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/FeedProtocolException.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client;
import com.yahoo.vespa.http.client.config.Endpoint;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/Result.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/Result.java
index 16374ec07cc..4cc4c762ccf 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/Result.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/Result.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client;
import com.yahoo.vespa.http.client.config.Endpoint;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/Session.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/Session.java
index 3089717c260..8c79aa90517 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/Session.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/Session.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client;
import java.io.OutputStream;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/SessionFactory.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/SessionFactory.java
index b7423f75c87..159a4e78289 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/SessionFactory.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/SessionFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client;
import com.yahoo.vespa.http.client.config.Cluster;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/SimpleLoggerResultCallback.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/SimpleLoggerResultCallback.java
index 7023e8be9a3..fcc3e04af78 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/SimpleLoggerResultCallback.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/SimpleLoggerResultCallback.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client;
import java.io.PrintStream;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/Cluster.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/Cluster.java
index fccb79c77b4..4f72c380e59 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/Cluster.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/Cluster.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.config;
import java.util.ArrayList;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/ConnectionParams.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/ConnectionParams.java
index 733e5bca424..00cc2512ae3 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/ConnectionParams.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/ConnectionParams.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.config;
import com.fasterxml.jackson.annotation.JsonIgnore;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/Endpoint.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/Endpoint.java
index 6a421370517..ae0cf19a3d1 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/Endpoint.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/Endpoint.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.config;
import java.io.Serializable;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/FeedParams.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/FeedParams.java
index 200bedb90da..19a28bbacaf 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/FeedParams.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/FeedParams.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.config;
import com.google.common.annotations.Beta;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/SessionParams.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/SessionParams.java
index 218727be221..e8052fa7faa 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/SessionParams.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/SessionParams.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.config;
import java.util.ArrayList;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/package-info.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/package-info.java
index 8300720e3ea..9c07e819e90 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/package-info.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Settings for creating clients/sessions.
*
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/Document.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/Document.java
index 98fd2f9da84..07262a60dd8 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/Document.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/Document.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core;
import java.io.IOException;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/Encoder.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/Encoder.java
index 7bb65827b51..e4781dc3a3f 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/Encoder.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/Encoder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core;
/**
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/EndpointResult.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/EndpointResult.java
index b04248f98a5..94d7237422a 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/EndpointResult.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/EndpointResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core;
import com.yahoo.vespa.http.client.Result;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/ErrorCode.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/ErrorCode.java
index 08926d529c5..4e739218319 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/ErrorCode.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/ErrorCode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core;
/**
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/Exceptions.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/Exceptions.java
index 1388effcec3..9ff3f793756 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/Exceptions.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/Exceptions.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core;
/**
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/Headers.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/Headers.java
index 9cb42356209..d41f42ef652 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/Headers.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/Headers.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core;
/**
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/JsonReader.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/JsonReader.java
index f4ac3326158..34b6d8b9144 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/JsonReader.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/JsonReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core;
import com.fasterxml.jackson.core.JsonFactory;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/OperationStatus.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/OperationStatus.java
index f3e2c8669e9..ee6d96aa600 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/OperationStatus.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/OperationStatus.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core;
import com.google.common.base.Splitter;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/ServerResponseException.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/ServerResponseException.java
index e3b0a0ab2cf..d5a09d2566c 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/ServerResponseException.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/ServerResponseException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core;
/**
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/ThrottlePolicy.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/ThrottlePolicy.java
index ee107a7d4d2..101bd001fb8 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/ThrottlePolicy.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/ThrottlePolicy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core;
import static java.lang.Math.abs;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/XmlFeedReader.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/XmlFeedReader.java
index 2c2489cf234..349959f496e 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/XmlFeedReader.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/XmlFeedReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core;
import com.yahoo.vespa.http.client.FeedClient;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/api/FeedClientImpl.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/api/FeedClientImpl.java
index a950cb545de..29ca1e2d4fd 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/api/FeedClientImpl.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/api/FeedClientImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.api;
import com.yahoo.vespa.http.client.FeedClient;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/api/MultiClusterSessionOutputStream.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/api/MultiClusterSessionOutputStream.java
index e09cecf7161..27fc22b9675 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/api/MultiClusterSessionOutputStream.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/api/MultiClusterSessionOutputStream.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.api;
import com.yahoo.vespa.http.client.core.Document;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/api/SessionImpl.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/api/SessionImpl.java
index a68d7eb7524..05b66ac4a46 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/api/SessionImpl.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/api/SessionImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.api;
import com.yahoo.vespa.http.client.FeedClient;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ApacheGatewayConnection.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ApacheGatewayConnection.java
index 68cca286dac..37e9961417d 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ApacheGatewayConnection.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ApacheGatewayConnection.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.communication;
import ai.vespa.util.http.hc4.VespaHttpClientBuilder;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ApacheGatewayConnectionFactory.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ApacheGatewayConnectionFactory.java
index 31ec8aa06a2..0b02626d6e8 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ApacheGatewayConnectionFactory.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ApacheGatewayConnectionFactory.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.communication;
import com.yahoo.vespa.http.client.config.ConnectionParams;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ByteBufferInputStream.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ByteBufferInputStream.java
index d951666090a..f88519c2615 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ByteBufferInputStream.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ByteBufferInputStream.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.communication;
import java.io.IOException;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ClusterConnection.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ClusterConnection.java
index 9dc214fb93d..ef5b7afd16a 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ClusterConnection.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/ClusterConnection.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.communication;
import com.fasterxml.jackson.core.JsonGenerator;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/DocumentQueue.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/DocumentQueue.java
index 3536013e043..8164534ca37 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/DocumentQueue.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/DocumentQueue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.communication;
import com.yahoo.vespa.http.client.core.Document;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/DryRunGatewayConnection.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/DryRunGatewayConnection.java
index 9ef3e5eee15..a6f6992b238 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/DryRunGatewayConnection.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/DryRunGatewayConnection.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.communication;
import com.yahoo.vespa.http.client.config.Endpoint;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/DryRunGatewayConnectionFactory.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/DryRunGatewayConnectionFactory.java
index a234dba6b8e..01bec563889 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/DryRunGatewayConnectionFactory.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/DryRunGatewayConnectionFactory.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.communication;
import com.yahoo.vespa.http.client.config.Endpoint;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/EndpointIOException.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/EndpointIOException.java
index d8efeea93bc..34b8ef76068 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/EndpointIOException.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/EndpointIOException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.communication;
import com.yahoo.vespa.http.client.config.Endpoint;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/EndpointResultQueue.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/EndpointResultQueue.java
index 473dfd4b702..c877daeeb2a 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/EndpointResultQueue.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/EndpointResultQueue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.communication;
import com.yahoo.vespa.http.client.FeedEndpointException;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/GatewayConnection.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/GatewayConnection.java
index ce1edb83fa2..25057a1dead 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/GatewayConnection.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/GatewayConnection.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.communication;
import com.yahoo.vespa.http.client.config.Endpoint;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/GatewayConnectionFactory.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/GatewayConnectionFactory.java
index d27aa850995..4988b73510f 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/GatewayConnectionFactory.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/GatewayConnectionFactory.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.communication;
/**
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/GatewayThrottler.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/GatewayThrottler.java
index 189fd348c0e..41a1b6a7e87 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/GatewayThrottler.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/GatewayThrottler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.communication;
import java.util.concurrent.ThreadLocalRandom;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/IOThread.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/IOThread.java
index 4ceb10d4852..aeb164227f1 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/IOThread.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/communication/IOThread.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.communication;
import com.yahoo.vespa.http.client.FeedConnectException;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/ConcurrentDocumentOperationBlocker.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/ConcurrentDocumentOperationBlocker.java
index 366675d083c..79a04d8f043 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/ConcurrentDocumentOperationBlocker.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/ConcurrentDocumentOperationBlocker.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.operationProcessor;
import java.util.concurrent.Semaphore;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/DocumentSendInfo.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/DocumentSendInfo.java
index 27ad88c123e..b72a6c67398 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/DocumentSendInfo.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/DocumentSendInfo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.operationProcessor;
import com.yahoo.vespa.http.client.Result;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/EndPointResultFactory.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/EndPointResultFactory.java
index 3d662eca3e7..9af63f6637a 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/EndPointResultFactory.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/EndPointResultFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.operationProcessor;
import com.yahoo.vespa.http.client.Result;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/IncompleteResultsThrottler.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/IncompleteResultsThrottler.java
index ebeee802303..a88d5af8094 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/IncompleteResultsThrottler.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/IncompleteResultsThrottler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.operationProcessor;
import com.yahoo.vespa.http.client.core.ThrottlePolicy;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationProcessor.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationProcessor.java
index 90d07104fef..6633fca6ca0 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationProcessor.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.operationProcessor;
import com.google.common.collect.ArrayListMultimap;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationStats.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationStats.java
index c571b5d418b..1eebe593062 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationStats.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationStats.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.operationProcessor;
import com.fasterxml.jackson.core.JsonGenerator;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/package-info.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/package-info.java
index 211397476bd..13d4e768daf 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/package-info.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/core/package-info.java
@@ -1,2 +1,2 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/package-info.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/package-info.java
index c54c19a2eb1..958d3793875 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/package-info.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Programmatic API for feeding to Vespa clusters independently of the
* cluster configuration.
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/CommandLineArguments.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/CommandLineArguments.java
index 83113722814..4ccae25f2da 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/CommandLineArguments.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/CommandLineArguments.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.runner;
import com.google.common.base.Splitter;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/FormatInputStream.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/FormatInputStream.java
index 5bf48019785..6be11fcbfc2 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/FormatInputStream.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/FormatInputStream.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.runner;
import com.fasterxml.jackson.core.JsonFactory;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/Runner.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/Runner.java
index 926b4cf8c79..60047993f0e 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/Runner.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/Runner.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.runner;
import com.yahoo.vespa.http.client.FeedClient;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/package-info.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/package-info.java
index 00012f0f52f..8be767d67cf 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/package-info.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/package-info.java
@@ -1,2 +1,2 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.runner;
diff --git a/vespa-http-client/src/test/java/ExampleUsageFeedClientTest.java b/vespa-http-client/src/test/java/ExampleUsageFeedClientTest.java
index 6110c04e85f..2ca2ea4d14a 100644
--- a/vespa-http-client/src/test/java/ExampleUsageFeedClientTest.java
+++ b/vespa-http-client/src/test/java/ExampleUsageFeedClientTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import com.yahoo.vespa.http.client.FeedClient;
import com.yahoo.vespa.http.client.FeedClientFactory;
import com.yahoo.vespa.http.client.Result;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/FeedClientTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/FeedClientTest.java
index b70fbaf3096..ca956110a34 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/FeedClientTest.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/FeedClientTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client;
import com.yahoo.vespa.http.client.config.Cluster;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/ManualClock.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/ManualClock.java
index b32d1eaa859..72edba7adb3 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/ManualClock.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/ManualClock.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client;
import java.time.Clock;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/Server.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/Server.java
index 79a91d0b5f3..078606274d6 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/Server.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/Server.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client;
import org.eclipse.jetty.server.ServerConnector;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/SimpleLoggerResultCallbackTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/SimpleLoggerResultCallbackTest.java
index 4985a8156cc..3582ab2696f 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/SimpleLoggerResultCallbackTest.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/SimpleLoggerResultCallbackTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client;
import org.junit.Test;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/TestDocument.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/TestDocument.java
index 90ca09251bc..67b3fc7653d 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/TestDocument.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/TestDocument.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client;
/**
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/TestUtils.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/TestUtils.java
index b44385e11ff..b27fbba3e96 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/TestUtils.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/TestUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client;
import java.io.IOException;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/config/ClusterTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/config/ClusterTest.java
index 0bc4e5951f2..f4c12974f6d 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/config/ClusterTest.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/config/ClusterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.config;
import org.junit.Test;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/config/ConnectionParamsTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/config/ConnectionParamsTest.java
index bca43902b9e..3fcc73e3cdc 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/config/ConnectionParamsTest.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/config/ConnectionParamsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.config;
import org.junit.Test;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/config/EndpointTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/config/EndpointTest.java
index e59e0ebb471..415a7746b3a 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/config/EndpointTest.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/config/EndpointTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.config;
import org.junit.Test;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/config/FeedParamsTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/config/FeedParamsTest.java
index 3af73dbf47a..82e0b4deac0 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/config/FeedParamsTest.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/config/FeedParamsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.config;
import org.junit.Test;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/DocumentTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/DocumentTest.java
index ee2f021df6a..8f707f2426e 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/DocumentTest.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/DocumentTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core;
import org.junit.Test;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/EncoderTestCase.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/EncoderTestCase.java
index dba81365c93..aa926578a94 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/EncoderTestCase.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/EncoderTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core;
import static org.junit.Assert.*;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/OperationProcessorTester.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/OperationProcessorTester.java
index 9b563e193d5..2e6efffdd2c 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/OperationProcessorTester.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/OperationProcessorTester.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core;
import com.yahoo.vespa.http.client.FeedClient;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/ThrottlePolicyTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/ThrottlePolicyTest.java
index 1d2bdf71b59..d5a4d09fb8f 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/ThrottlePolicyTest.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/ThrottlePolicyTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core;
import org.junit.Test;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/XmlFeedReaderTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/XmlFeedReaderTest.java
index 925f3105878..e71cee0f4c2 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/XmlFeedReaderTest.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/XmlFeedReaderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core;
import com.fasterxml.jackson.databind.JsonNode;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/api/FeedClientImplTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/api/FeedClientImplTest.java
index b8470fd489f..283c1169440 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/api/FeedClientImplTest.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/api/FeedClientImplTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.api;
import org.junit.Test;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/ApacheGatewayConnectionTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/ApacheGatewayConnectionTest.java
index 511e40c1c88..2597ddddd88 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/ApacheGatewayConnectionTest.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/ApacheGatewayConnectionTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.communication;
import com.yahoo.vespa.http.client.TestUtils;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/ByteBufferInputStreamTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/ByteBufferInputStreamTest.java
index a58faee38c2..9845768280e 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/ByteBufferInputStreamTest.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/ByteBufferInputStreamTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.communication;
import com.yahoo.vespa.http.client.core.communication.ByteBufferInputStream;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/CloseableQTestCase.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/CloseableQTestCase.java
index af354b8feea..227f4a5239c 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/CloseableQTestCase.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/CloseableQTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.communication;
import com.yahoo.vespa.http.client.core.Document;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/EndpointResultQueueTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/EndpointResultQueueTest.java
index 55961e4aa0e..78ccfed3dbc 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/EndpointResultQueueTest.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/EndpointResultQueueTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.communication;
import com.yahoo.vespa.http.client.Result;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/GatewayThrottlerTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/GatewayThrottlerTest.java
index 988e25a1ccc..780947b525a 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/GatewayThrottlerTest.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/GatewayThrottlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.communication;
import org.junit.Before;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/IOThreadTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/IOThreadTest.java
index bddfecdfe65..9984e43374a 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/IOThreadTest.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/communication/IOThreadTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.communication;
import com.yahoo.vespa.http.client.core.OperationProcessorTester;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/operationProcessor/ConcurrentDocumentOperationBlockerTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/operationProcessor/ConcurrentDocumentOperationBlockerTest.java
index 5803b138cd4..cd5da6b8589 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/operationProcessor/ConcurrentDocumentOperationBlockerTest.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/operationProcessor/ConcurrentDocumentOperationBlockerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.operationProcessor;
import com.yahoo.vespa.http.client.core.operationProcessor.ConcurrentDocumentOperationBlocker;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/operationProcessor/IncompleteResultsThrottlerTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/operationProcessor/IncompleteResultsThrottlerTest.java
index 9ea66b57fb3..82337cd4dcf 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/operationProcessor/IncompleteResultsThrottlerTest.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/operationProcessor/IncompleteResultsThrottlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.operationProcessor;
import com.yahoo.vespa.http.client.ManualClock;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationProcessorTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationProcessorTest.java
index e4ae138054d..7799f6089db 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationProcessorTest.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/core/operationProcessor/OperationProcessorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.core.operationProcessor;
import com.yahoo.vespa.http.client.Result;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/handlers/V3MockParsingRequestHandler.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/handlers/V3MockParsingRequestHandler.java
index 45c51d7226e..bf4d4d0800b 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/handlers/V3MockParsingRequestHandler.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/handlers/V3MockParsingRequestHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.handlers;
import com.yahoo.vespa.http.client.core.Encoder;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/runner/CommandLineArgumentsTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/runner/CommandLineArgumentsTest.java
index 174ac5b0d26..55f6af9ed32 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/runner/CommandLineArgumentsTest.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/runner/CommandLineArgumentsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.runner;
import com.yahoo.vespa.http.client.config.Cluster;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/runner/FormatInputStreamTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/runner/FormatInputStreamTest.java
index b0fbb140681..9c77ed9a6d9 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/runner/FormatInputStreamTest.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/runner/FormatInputStreamTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.runner;
import org.junit.Test;
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/runner/JsonReaderTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/runner/JsonReaderTest.java
index e2046fe17a6..779e4713ce2 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/runner/JsonReaderTest.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/runner/JsonReaderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.client.runner;
import com.yahoo.vespa.http.client.FeedClient;
diff --git a/vespa-http-client/src/test/resources/vespacorpfeed-prod-sample.xml b/vespa-http-client/src/test/resources/vespacorpfeed-prod-sample.xml
index f04830fce49..95f0e4b1961 100644
--- a/vespa-http-client/src/test/resources/vespacorpfeed-prod-sample.xml
+++ b/vespa-http-client/src/test/resources/vespacorpfeed-prod-sample.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<vespafeed>
<document documenttype="vespacorp" documentid="id:vespacorp:vespacorp::7138bc793a096a78b86a6501ae0c6e7b">
<threadId>f5078d76c7541ab15387ab62fef22a01</threadId>
diff --git a/vespa-http-client/src/test/resources/xml-challenge.xml b/vespa-http-client/src/test/resources/xml-challenge.xml
index dc5e0ee536d..55e368732d7 100644
--- a/vespa-http-client/src/test/resources/xml-challenge.xml
+++ b/vespa-http-client/src/test/resources/xml-challenge.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<vespafeed>
<document documenttype="biz" transformver="5681" documentid="id:lsbe:biz::21336977"><attrlist><![CDATA[<other_urls><n>2</n><l><m><url>http://www.facebook.com/pages/City-of-Sunnyvale-California/132586463442411</url><URLTYPE>facebook</URLTYPE></m><m><url>http://www.twitter.com/CityofSunnyvale</url><URLTYPE>twitter</URLTYPE></m></l></other_urls><toc>19,22,36,42,48,74</toc><website><m><src>GRID</src><url>http://www.sunnyvale.ca.gov/</url></m></website><neighbor>Downtown|Sunnyvale Town Center</neighbor><woeId>Zip:12797147;DMA:24701119;State:2347563</woeId><consumersubmit><addbyuser>0</addbyuser></consumersubmit>]]></attrlist></document>
diff --git a/vespa-http-client/src/test/resources/xml-challenge2.xml b/vespa-http-client/src/test/resources/xml-challenge2.xml
index 5224beb55d7..7ed0be68dea 100644
--- a/vespa-http-client/src/test/resources/xml-challenge2.xml
+++ b/vespa-http-client/src/test/resources/xml-challenge2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<vespafeed>
<document documenttype="biz" transformver="5681" documentid="id:lsbe:biz::21336977"><version_index>1395987733</version_index><attrlist>&lt;other_urls&gt;&lt;n&gt;2&lt;/n&gt;&lt;l&gt;&lt;m&gt;&lt;url&gt;http://www.facebook.com/pages/City-of-Sunnyvale-California/132586463442411&lt;/url&gt;&lt;URLTYPE&gt;facebook&lt;/URLTYPE&gt;&lt;/m&gt;&lt;m&gt;&lt;url&gt;http://www.twitter.com/CityofSunnyvale&lt;/url&gt;&lt;URLTYPE&gt;twitter&lt;/URLTYPE&gt;&lt;/m&gt;&lt;/l&gt;&lt;/other_urls&gt;&lt;toc&gt;19,22,36,42,48,74&lt;/toc&gt;&lt;website&gt;&lt;m&gt;&lt;src&gt;GRID&lt;/src&gt;&lt;url&gt;http://www.sunnyvale.ca.gov/&lt;/url&gt;&lt;/m&gt;&lt;/website&gt;&lt;neighbor&gt;Downtown|Sunnyvale Town Center&lt;/neighbor&gt;&lt;woeId&gt;Zip:12797147;DMA:24701119;State:2347563&lt;/woeId&gt;&lt;consumersubmit&gt;&lt;addbyuser&gt;0&lt;/addbyuser&gt;&lt;/consumersubmit&gt;</attrlist><dispycat>96929308:City Hall:1|96927047:Government:1</dispycat><ip_hoo5>0|0|0|0|0|0|0|0</ip_hoo5><ip_popularity_features>0.01401179941|0.0780352748154|0.0|0.00020|0.00008</ip_popularity_features><s1>&lt;CTS&gt;96925679 96927047 96929308&lt;/CTS&gt;&lt;S_CNSUMR_SUBMT&gt;0&lt;/S_CNSUMR_SUBMT&gt;&lt;DR_PLUS4&gt;7619&lt;/DR_PLUS4&gt;</s1><ll>-122037613;37371072</ll><stat>1 3 4 6 7 8 11 12 13 14 15 16 33 34 36 41 42 43 44 46 48 49 50 51 57 58 59 60 71 72 73 74 75 76 77 80 81 82 83 85 86 87 131 132 134 137 138 139 140 141 143 144 159 181 183 184 192 193 196 197 198 204</stat><uri>21336977</uri><title>sch | sunnyvalecity | sunnyvalecityhall | hall | city | sunnyvale</title><dtitle>Sunnyvale City Hall</dtitle><ip_hoo2>0|0|0|0|0|0|0|0</ip_hoo2><citystate>Sunnyvale CA</citystate><nhelpreview>0</nhelpreview><ll_long>-122037613</ll_long><ip_custombyte>7|57|103</ip_custombyte><prior_rating>0</prior_rating><ip_hoo4>0|0|0|0|0|0|0|0</ip_hoo4><ip_ycatid2>96929308|96927047</ip_ycatid2><ftitle>20</ftitle><ip_ycat_primary_id>96929308|96927047</ip_ycat_primary_id><ip_eid>NAV=17555658|PSOXSOCIALURL=21336977|INFOUSA=102028107</ip_eid><zip>94086</zip><prior_nreview>0</prior_nreview><ip_customweights>780|33|.09102564102564102|49.732394366197184|121739|3060000|717|1860|716|1860|459|1400|457|1400|114|913|-1|-1|-1|-1|0.0862069|0.12267753</ip_customweights><type>POI</type><enhanced>1</enhanced><ip_normtitle>sunnyvale city hall</ip_normtitle><primary_url>http://www.sunnyvale.ca.gov/</primary_url><ip_hoo1>0|0|0|0|0|0|0|0</ip_hoo1><dma>24701119</dma><city>Sunnyvale</city><ip_catkey>city hall|government</ip_catkey><prior_nrating>0</prior_nrating><lcw_ext><item weight="0">0</item></lcw_ext><pop0>0</pop0><ll_lat>37371072</ll_lat><phone>4087307500</phone><dispfeaturef>17</dispfeaturef><ip_ycat_primary>City Hall|Government</ip_ycat_primary><ip_hoo6>0|0|0|0|0|0|0|0</ip_hoo6><ip_ycat_primary_synonyms>county government|marriage licenses|us government|government-office|government relations firms|government agencies|government relations|marriage license|city government departments|city government|federal government|usgovernment|council of governments|governmentoffices|government offices|government officials|government-contract consultants|governments offices</ip_ycat_primary_synonyms><ip_dcat>City Hall|Government</ip_dcat><listing_status>103</listing_status><lcw_pcat><item weight="7071">96929308</item><item weight="7071">96927047</item></lcw_pcat><pop_keyword_portion><item weight="2">3053931</item><item weight="1">99043162</item><item weight="57">-734328434</item><item weight="6">-1164754482</item><item weight="33">-1164681749</item><item weight="10000">-1491073460</item><item weight="5000">1098856921</item><item weight="5000">90458857</item><item weight="10000">-1956199191</item><item weight="10000">-2015626891</item><item weight="10000">38487508</item><item weight="1428">-1384211533</item><item weight="588">-995864441</item><item weight="6666">-350418064</item><item weight="112">-1493944221</item></pop_keyword_portion><stat2>2 3 4 5 7 8 10 11 21 24 31 42 44 45 46 47 48 50 51 53 54 56 57 69 92 112 121 123 128 129 134 154 195 205 232 238 242</stat2><desc> </desc><ip_rating>0</ip_rating><lcw><item weight="5745">96927047</item><item weight="8186">96929308</item></lcw><pop_keyword_certainty><item weight="5425">3053931</item><item weight="5344">99043162</item><item weight="7105">-734328434</item><item weight="5140">-1164754482</item><item weight="6766">-1164681749</item><item weight="10000">-1491073460</item><item weight="9587">1098856921</item><item weight="9587">90458857</item><item weight="10000">-1956199191</item><item weight="10000">-2015626891</item><item weight="10000">38487508</item><item weight="8842">-1384211533</item><item weight="9120">-995864441</item><item weight="9621">-350418064</item><item weight="7429">-1493944221</item></pop_keyword_certainty><q>9</q><isactive>1</isactive><ip_ycat2gc>96929308|96927047</ip_ycat2gc><ip_hoo0>0|0|0|0|0|0|0|0</ip_hoo0><language>en</language><nreview>0</nreview><ip_pycatnames>Government &amp; Community</ip_pycatnames><ip_catkey_click>marriage license</ip_catkey_click><country_code>us</country_code><state>CA</state><ip_hoo3>0|0|0|0|0|0|0|0</ip_hoo3><version_pub>1346889600</version_pub><ip_ycat_primary_cp_desc>CITY GOVERNMENT-EXECUTIVE OFFICES</ip_ycat_primary_cp_desc><crossst>2|All America Way|Charles St</crossst><ip_dcatkey>us government|government relations firms|marriage license|federal government|council of governments|governmentoffices|government officials|government-contract consultants|governments offices|county government|marriage licenses|government-office|government agencies|government relations|city government departments|city government|usgovernment|government offices</ip_dcatkey><dispambiancef>7</dispambiancef><ip_ycatid1>96925679</ip_ycatid1><paid_listing_status>0</paid_listing_status><lcw_norm>0.5640622</lcw_norm><webkeyword>city sunnyvale twitter jobs news contact us about codes policies charter municipal code council policy general plan maps directions map hall external link library public safety parks golf courses swimming pools tennis center transportation area resources community resource guide frequently requested english spanish budget documents data demographics business economic profile learn new resident information sheet this site privacy what hot topics plastic bag ban amendment ballot measures elections firearms retail study issue review committee medical marijuana dispensary horizon downtown redevelopment sustainability consolidation lute update manager updates meetings agendas next meeting february boards commissions latest publications fall activity winter quarterly report current job openings bid on projects open bids around cited as american top potential upcoming events issues workshop feb offices are closed more event calendar government agenda watch making presentation at arts bicycle pedestrian board trustees building appeals heritage preservation housing human recreation personnel planning other agencies county santa clara state california clerk page campaign ethics departments attorney development environmental nova workforce finance technology works living get card search catalog manage your account getting involved volunteering neighborhood associations classes activities out now playing performing shopping dining in centers columbia senior guides unemployed residents infrastructure traffic trees street maintenance garbage recycling smart station extra tags affordable assistance water supply pollution control plant police fire emergency preparedness alarms enforcement animal crime prevention records recruiting permits special residential non one stop permit checks fees encroachment tree removal doing starting facts figures bidding process shop auto row available commercial properties licenses reports links division newsroom recent releases apple occupy president day holiday closures meet local author francisco jimenez reads muslim door arrest made fatal hit run le jazz copper wire theft hits television broadcast schedule social media follow want apply license block party sign up service call tee times facility reservations compost pay my utility bill fines violation graffiti pothole web dispose old medication waste hazardous trash find department places dine volunteer access file claim help improve list something missing from that would make it even useful let know we welcome suggestions friday share comments tuesday strategic featured telephone scam claims be computer has received complaints apparent phone which caller identifies himself representing victim windows system transmitting bad does not these kind calls have if receive type desk officer gary announced will join ranks high tech businesses located square foot town office mathilda mckinley avenues important step forward said entire benefit see yet another large gain project read planned by pg along caribbean drive remove number mostly eucalyptus measure underground gas pipeline young replacement planted median controls during work or go amp presidents facilities including monday observance all parking regulations enforced except where signs specifically exempt holidays collection continue normal posted edition gives tip leading burglars vargas elementary school partnership marathon club kids led streetlight free healthy toddler workshops electronic commission change please note dates do typical due construction chambers scheduled wednesday artists applications hands festival participate may downloading click here download application acclaimed quartet performs gypsy la reinhardt version internationally recognized san perform valentine weekend concert style theatre saturday silicon valley diverse religions cultures been celebrated each year reading choices continues select provocative relevant theme off air channel broadcasts equipment upgrade allowing compliant standards begin broadcasting again no down time so missed vehicle versus accident occurred intersection sequoia reed avenue january driver black struck benjamin lin did major investigation team developed significant leads case identification seizure warrant was issued popular register november networks google divider final eir sales hazard mitigation subscribe notifications feed icon olive ave ca logo can check stay touch used maintained communications questions fine print terms use</webkeyword><ip_provider>NAV|PSOXSOCIALURL|INFOUSA</ip_provider><nrating>0</nrating><ratingfgc>0</ratingfgc><ip_ycat2>96925679</ip_ycat2><spaid>N</spaid><ip_cat>GOVERNMENTOFFICES|OFFICES|HALL|GOVERNMENT|DEPARTMENTS|GOVERNMENTS|CONSULTANTS|OFFICIALS|RELATIONS|USGOVERNMENT|OFFICE|CONTRACT|COUNCIL|CITY|COMMUNITY|FIRMS|AGENCIES|COUNTY</ip_cat><ip_neighborhood>downtownsunnyvaleca|sunnyvaletowncentersunnyvaleca</ip_neighborhood><addrhash>068B74475DB0D415</addrhash><webtext>City of Sunnyvale: Home * Twitter * | * Jobs * | * News * | * eNotify * | * RSS * | * Contact Us Home About The City Codes and Policies City Charter Municipal Code Council Policy General Plan Maps and Directions Map of Sunnyvale City Hall external link Library Public Safety City Parks Golf Courses Swimming Pools Tennis Center Public Transportation Area Resources Community Resource Guide to Frequently Requested Services: English (pdf) | Spanish (pdf) City Budget Budget Documents Data and Demographics Business Demographics Economic Profile (pdf) Learn about Sunnyvale New Resident Guide City Council Information Sheet About This Site About the Site Site Map Privacy Policy Contact Us Whats New Hot Topics Plastic Bag Ban Charter Amendment Ballot Measures City Council Elections Firearms Retail Study Issue Charter Review Committee Medical Marijuana Dispensary Study Horizon 2035 Downtown Redevelopment Onizuka / BRAC Sustainability General Plan Consolidation LUTE Update City Managers Updates Meetings and Agendas Next Council Meeting: February 7 Council Meetings Boards and Commissions Latest Publications Fall Activity Guide Winter 2012 Quarterly Report 2010 New Resident Guide Jobs Current Job Openings Bid on Projects Current Open Bids Around the City Sunnyvale Cited As American City with Top Economic Potential Upcoming Events February 3 - Council Budget/Study Issues Workshop Feb 20 - City Offices are closed More Events on the Community Event Calendar Government City Council About Council Current Council Agenda Councilmembers Council Meeting Agendas Watch Council Meetings Online Making a Presentation at Council Boards and Commissions About Boards and Commissions Current Openings Arts Bicycle and Pedestrian Board of Library Trustees Building Code Appeals Heritage Preservation Housing and Human Services Parks and Recreation Personnel Planning Sustainability Study Issues 2012 Study Issues 2011 Study Issues 2010 Study Issues 2009 Study Issues Other Agencies County of Santa Clara external link State of California external link Codes and Policies City Charter Municipal Code Council Policy General Plan Elections City Clerk Elections Page Campaign Ethics Guide Departments City Attorney City Manager Community Development Community Services Environmental Services NOVA Workforce Services Finance Human Resources Information Technology Public Safety Public Works Sunnyvale Public Library Living Library Library Home Page Get a Library Card Search the Library Catalog Manage Your Library Account Getting Involved Volunteering Neighborhood Associations Recreation Golf Tennis Parks Classes and Activities Swimming Out and About Now Playing at the Performing Arts Center Shopping and Dining in Sunnyvale Community Event Calendar Community Centers Columbia Neighborhood Center Sunnyvale Community Center Sunnyvale Senior Center Resource Guides Resources for Unemployed Residents Community Resource Guide to Frequently Requested Services: English (pdf) | Spanish (pdf) Services City Infrastructure Traffic and Transportation Trees Street Maintenance Garbage and Recycling SMaRT Station Garbage and Recycling Services Extra Garbage Tags Housing Affordable Housing and Community Assistance Water Water Supply Water Pollution Control Plant (WPCP) Public Safety Police Fire Emergency Preparedness Alarms Code Enforcement Animal Control Crime Prevention Public Safety Records Public Safety Recruiting Permits Special Event Permits Residential Permits Non-residential Permits E-Onestop One-Stop Permit Center Permits, Plan Checks and Fees Encroachment Permits Tree Removal Permits Doing Business Sunnyvale for Business Starting a Business in Sunnyvale Facts and Figures Doing Business in Sunnyvale Economic Development Downtown Development Bid on Sunnyvale Projects The Bidding Process Current Open Bids Shop Sunnyvale Sunnyvale Auto Row Business Resources Available Commercial Properties E-One Stop Permit Center Business Licenses Business News and Reports Business Links Building Division Planning Division Newsroom Recent News Releases Apple to Occupy New Downtown Sunnyvale Offices Presidents Day Holiday Closures Meet Sunnyvale Local Author Francisco Jimenez Sunnyvale Reads the Muslim Next Door Arrest Made in Fatal Sunnyvale Hit-And-Run Le Jazz Hot in Sunnyvale February 11 Copper Wire Theft Hits City of Sunnyvale More News Releases Publications Quarterly Report Activity Guide Senior Activity Guide New Resident Guide Campaign Ethics Guide On Television KSUN Broadcast Schedule Social Media Follow Us on Twitter City of Sunnyvale Facebook Page I Want To . Apply For: Job Openings Boards and Commissions Business License Permits Animal License Special Event Permit Block Party Sign Up For: Garbage Service Recycling Service On-Call Garbage/Recycling Service Recreation Classes Golf Tee Times Facility Reservations Compost Workshop Pay For: My Utility Bill Library Fines Report: Code Violation Graffiti Pothole Public Safety Issue Traffic Issue General Issue Web Site Issue Dispose of: Old Medication E-Waste Other Hazardous Waste Extra Trash Find: Building Permits City Hall external link City Parks Sunnyvale Community Center Columbia Neighborhood Center Sunnyvale Senior Center Sunnyvale Public Library Department of Public Safety Places to Shop and Dine Watch: Council Meetings Online Other: Volunteer in the City Access Public Records File a Claim Help Improve This List Is something missing from this list that would make it an even more useful resource? Let us know! We welcome your suggestions. Contact us online. Friday, February 10, 2012 Share Your Comments Next Council Meeting * Tuesday, February 7, 2012 * Council Agendas * Watch the Meeting Online * Watch the Meeting on KSUN-15 * About Council Upcoming Events * February 10 - Strategic Planning Workshop * February 20 - City Holiday - Offices closed * Community Events Calendar Recent News Releases Apple to Occupy New Downtown Sunnyvale Offices Presidents Day Holiday Closures Meet Sunnyvale Local Author Francisco Jimenez Sunnyvale Reads the Muslim Next Door Arrest Made in Fatal Sunnyvale Hit-And-Run Le Jazz Hot in Sunnyvale February 11 More News Releases Featured City News Telephone Scam Claims to be from Sunnyvale Computer Department The City has received complaints of an apparent phone scam in which the caller identifies himself as representing the Sunnyvale Computer Department. The caller claims the victims computers Windows system is transmitting bad data. City of Sunnyvale does not make these kind of calls to the public and does not have a Computer Department. If you receive this type of scam call, report the call to a Public Safety Desk Officer at (408) 730-7110.Learn More Telephone Scam Claims to be from &#34;Sunnyvale Computer Department&#34; Apple to occupy new downtown Sunnyvale offices Sunnyvale City Manager Gary Luebbers has announced that Apple will join the ranks of high-tech businesses located in downtown Sunnyvale. Apple will occupy the new 156,000 square-foot Town Center Office building at Mathilda and McKinley avenues. ?This is an important step forward,? said Luebbers. Our entire community will benefit as we see yet another large gain in the Town Center redevelopment project.? Read more Learn More Apple to occupy new downtown Sunnyvale offices Tree Removal Planned by PG&amp;E along Caribbean Drive PG&amp;E will remove a number of large trees ? mostly eucalyptus ? along Caribbean Drive, February 6 ? 15. This is a safety measure for the underground gas pipeline. Young replacement trees will planted in the median; watch for traffic controls during this work. For more information, call PG&amp;E at (800) 743-5000 or go to http://pge.com/myhome/customerservice/Learn More Tree Removal Planned by PG&amp;amp;E along Caribbean Drive City Closed for Presidents Day Sunnyvale City offices and facilities, including the Sunnyvale Public Library, Community Center, Senior Center and Columbia Neighborhood Center will be closed Monday, February 20, in observance of the Presidents Day holiday. All traffic and parking regulations will be enforced, except for parking where signs specifically exempt holidays. Trash collection will continue on a normal schedule. Learn More City Closed for Presidents Day Latest City Managers Blog Posted In the latest edition of the City Managers Blog, Gary Luebbers gives an update on the 2012 Study Issues, a public tip leading to the arrest of local burglars, the Vargas Elementary School partnership with Public Safety for a Marathon Club for kids, latest street updates and the LED Streetlight project, free healthy toddler workshops at the Library, a new electronic Job Board from NOVA, and more Learn More Latest City Managers Blog Posted Planning Commission February Meeting Schedule Change PLEASE NOTE: The February Planning Commission meeting dates do not follow the typical schedule due to construction in the Council Chambers. The February Planning Commission Meetings are scheduled for: * MONDAY, FEBRUARY 6, 2012 * WEDNESDAY, FEBRUARY 29, 2012 Learn More Planning Commission February Meeting Schedule Change Artists Applications for 2012 Hands on the Arts Festival Now Posted Applications for artists to participate in the 2012 Hands on the Arts Festival in Sunnyvale on May 19 are now available for downloading. Click here to read more and download the application Learn More Artists Applications for 2012 Hands on the Arts Festival Now Posted Le Jazz Hot in Sunnyvale February 11 Acclaimed quartet performs Gypsy jazz la Django Reinhardt Le Jazz Hot, the quartet version of internationally recognized Le Hot Club of San Francisco, will perform a Valentine?s weekend concert of Django Reinhardt-style Gypsy jazz at Sunnyvale Theatre on Saturday, February 11, at 8 p.m. Read more Learn More Le Jazz Hot in Sunnyvale February 11 Sunnyvale Reads The Muslim Next Door Silicon Valley?s diverse religions and cultures have been celebrated each year by reading choices from Silicon Valley Reads, which continues to select provocative topics relevant to Santa Clara County. The theme for Silicon Valley Reads 2012 is ?Muslim and American.? Read more Learn More Sunnyvale Reads &#34;The Muslim Next Door&#34; KSUN-15 Off Air February 8-27 for Ugrades The Citys public access channel KSUN-15, which broadcasts Council and Planning Commission meetings, will be off-air starting February 8 to get an equipment upgrade, allowing the system to be compliant with current broadcast standards. KSUN will begin broadcasting again on February 27. No meetings are planned during this down time so no broadcasts will be missed. Learn More KSUN-15 Off Air February 8-27 for Ugrades Arrest Made in Fatal Hit-and-Run in Sunnyvale A fatal vehicle versus pedestrian accident occurred at the intersection of Sequoia Drive and Reed Avenue in Sunnyvale on January 5. The driver of a black SUV struck 72-year-old Benjamin Lin and did not stop. The Major Accident Investigation Team (MAIT) developed significant leads in the case which led to the identification of the driver and seizure of the vehicle. On January 19, a $500,000 arrest warrant was issued. Read more Learn More Arrest Made in Fatal Hit-and-Run in Sunnyvale Popular Links * Jobs * Sunnyvale Public Library * Register for Classes and Activities * Recycling and Garbage Information * Volunteer * Maps and Directions * Pay Your Utility Bill Online * November 2011 Library Events Calendar in PDF Pay Your Utility Bill Online Utility Bill Online Pay Doing Business * Bid on City Projects * Economic Development * Business Licenses * Apply for Permits Online Social Networks * +1 us on Google+ * City of Sunnyvale Twitter Account * City of Sunnyvale Facebook Page divider Hot Topics * Tennis Center * Plastic Bag Ban Final EIR * Firearms Sales Study Issue * Sunnyvale Works! * Downtown Development * Sustainability * Onizuka / BRAC * Local Hazard Mitigation Plan (LMPH) Subscribe * e-Notifications * City Managers Blog * RSS Feed * RSS Feed icon City of Sunnyvale (408) 730-7500 * Sunnyvale City Hall * 456 W. Olive Ave. * Sunnyvale, CA 94086 * TDD (408) 730-7501 * Map and Directions * City of Sunnyvale Logo Cant Find It? * Or check out the SITE MAP! Stay In Touch * Contact Us * Follow us on Twitter Frequently-Used Links * Jobs with the City * Library * Garbage and Recycling * Downtown Redevelopment * Economic Development * Register for Classes and Activities About the City * Welcome to Sunnyvale * City Charter and Policies * City Council * City Departments * New Resident Guide About the Web Site The City of Sunnyvale Web Site is maintained by the Sunnyvale Communications Office and the Department of Information Technology. Questions? Contact Us. The Fine Print * Privacy Policy * Terms of Use 2010 City of Sunnyvale</webtext><ip_keyword>[ ca ]</ip_keyword><addr>456 W Olive Ave</addr></document>
</vespafeed>
diff --git a/vespa-http-client/src/test/resources/xml-challenge3.xml b/vespa-http-client/src/test/resources/xml-challenge3.xml
index be93ea64e0f..be0f789f870 100644
--- a/vespa-http-client/src/test/resources/xml-challenge3.xml
+++ b/vespa-http-client/src/test/resources/xml-challenge3.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<vespafeed>
<document documenttype="biz" transformver="5681" documentid="id:lsbe:biz::21336977"><attrlist>'&apos;</attrlist></document></vespafeed>
diff --git a/vespa-maven-plugin/pom.xml b/vespa-maven-plugin/pom.xml
index 0910f38d5e5..427c98f26d2 100644
--- a/vespa-maven-plugin/pom.xml
+++ b/vespa-maven-plugin/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/AbstractVespaMojo.java b/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/AbstractVespaMojo.java
index ad10c1af608..89597a2352a 100644
--- a/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/AbstractVespaMojo.java
+++ b/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/AbstractVespaMojo.java
@@ -12,6 +12,7 @@ import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
import java.net.URI;
+import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Optional;
@@ -90,19 +91,32 @@ public abstract class AbstractVespaMojo extends AbstractMojo {
.orElseThrow(() -> new MojoExecutionException("'instance' must be specified as a parameter or project property"));
id = ApplicationId.from(tenant, application, instance);
+ Optional<Path> apiKeyPath = apiKeyPath(tenant);
if ( ! isNullOrBlank(apiKey)) {
controller = ControllerHttpClient.withSignatureKey(URI.create(endpoint), apiKey, id);
}
- else if ( ! isNullOrBlank(apiKeyFile)) {
+ else if (apiKeyPath.isPresent()) {
controller = isNullOrBlank(apiCertificateFile)
- ? ControllerHttpClient.withSignatureKey(URI.create(endpoint), Paths.get(apiKeyFile), id)
- : ControllerHttpClient.withKeyAndCertificate(URI.create(endpoint), Paths.get(apiKeyFile), Paths.get(apiCertificateFile));
+ ? ControllerHttpClient.withSignatureKey(URI.create(endpoint), apiKeyPath.get(), id)
+ : ControllerHttpClient.withKeyAndCertificate(URI.create(endpoint), apiKeyPath.get(), Paths.get(apiCertificateFile));
}
else {
throw new IllegalArgumentException("One of the properties 'apiKey' or 'apiKeyFile' is required.");
}
}
+ private Optional<Path> apiKeyPath(String tenant) {
+ if (!isNullOrBlank(apiKeyFile)) return Optional.of(Paths.get(apiKeyFile));
+
+ Path cliApiKeyFile = Optional.ofNullable(System.getenv("VESPA_CLI_HOME"))
+ .map(Paths::get)
+ .orElseGet(() -> Paths.get(System.getProperty("user.home"), ".vespa"))
+ .resolve(tenant + ".api-key.pem");
+ if (Files.exists(cliApiKeyFile)) return Optional.of(cliApiKeyFile);
+
+ return Optional.empty();
+ }
+
protected String projectPathOf(String first, String... rest) {
return project.getBasedir().toPath().resolve(Path.of(first, rest)).toString();
}
@@ -132,4 +146,5 @@ public abstract class AbstractVespaMojo extends AbstractMojo {
.filter(s -> !s.isBlank())
.isEmpty();
}
+
}
diff --git a/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/GenerateTestDescriptorMojo.java b/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/GenerateTestDescriptorMojo.java
index 69c0e343872..0b2c9857ca7 100644
--- a/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/GenerateTestDescriptorMojo.java
+++ b/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/GenerateTestDescriptorMojo.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.plugin;
import ai.vespa.hosted.api.TestDescriptor;
diff --git a/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/TestAnnotationAnalyzer.java b/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/TestAnnotationAnalyzer.java
index 36c61a9c08a..5eb49b37813 100644
--- a/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/TestAnnotationAnalyzer.java
+++ b/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/TestAnnotationAnalyzer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.hosted.plugin;
diff --git a/vespa-maven-plugin/src/test/resources/effective-services/dev.xml b/vespa-maven-plugin/src/test/resources/effective-services/dev.xml
index c3a863dfc63..b8813f40711 100644
--- a/vespa-maven-plugin/src/test/resources/effective-services/dev.xml
+++ b/vespa-maven-plugin/src/test/resources/effective-services/dev.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. --><services xmlns:deploy="vespa">
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. --><services xmlns:deploy="vespa">
<container>
<component id="good-service-client">
<config>
diff --git a/vespa-maven-plugin/src/test/resources/effective-services/prod_us-east-3.xml b/vespa-maven-plugin/src/test/resources/effective-services/prod_us-east-3.xml
index ce5459b71b7..1c71b17a21a 100644
--- a/vespa-maven-plugin/src/test/resources/effective-services/prod_us-east-3.xml
+++ b/vespa-maven-plugin/src/test/resources/effective-services/prod_us-east-3.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. --><services xmlns:deploy="vespa">
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. --><services xmlns:deploy="vespa">
<container>
<component id="good-service-client">
<config>
diff --git a/vespa-maven-plugin/src/test/resources/effective-services/prod_us-west-1.xml b/vespa-maven-plugin/src/test/resources/effective-services/prod_us-west-1.xml
index 66b8073c7af..66b6425a8cb 100644
--- a/vespa-maven-plugin/src/test/resources/effective-services/prod_us-west-1.xml
+++ b/vespa-maven-plugin/src/test/resources/effective-services/prod_us-west-1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. --><services xmlns:deploy="vespa">
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. --><services xmlns:deploy="vespa">
<container>
<component id="good-service-client">
<config>
diff --git a/vespa-maven-plugin/src/test/resources/effective-services/services.xml b/vespa-maven-plugin/src/test/resources/effective-services/services.xml
index fb41d8adf9d..de896d5c7bb 100644
--- a/vespa-maven-plugin/src/test/resources/effective-services/services.xml
+++ b/vespa-maven-plugin/src/test/resources/effective-services/services.xml
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services xmlns:deploy="vespa">
<container>
<component id="good-service-client">
diff --git a/vespa-maven-plugin/src/test/resources/effective-services/test_us-east-1.xml b/vespa-maven-plugin/src/test/resources/effective-services/test_us-east-1.xml
index 93f94751907..1109e378414 100644
--- a/vespa-maven-plugin/src/test/resources/effective-services/test_us-east-1.xml
+++ b/vespa-maven-plugin/src/test/resources/effective-services/test_us-east-1.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<services xmlns:deploy="vespa">
<container>
<component id="good-service-client">
diff --git a/vespa-osgi-testrunner/CMakeLists.txt b/vespa-osgi-testrunner/CMakeLists.txt
index e9c592c81a9..e803531f003 100644
--- a/vespa-osgi-testrunner/CMakeLists.txt
+++ b/vespa-osgi-testrunner/CMakeLists.txt
@@ -1,3 +1,3 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(vespa-osgi-testrunner)
install_config_definitions()
diff --git a/vespa-osgi-testrunner/pom.xml b/vespa-osgi-testrunner/pom.xml
index 43365d569c2..845d0d31af4 100644
--- a/vespa-osgi-testrunner/pom.xml
+++ b/vespa-osgi-testrunner/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/JunitRunner.java b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/JunitRunner.java
index ae81b36fe59..87b98c8efc1 100644
--- a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/JunitRunner.java
+++ b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/JunitRunner.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.testrunner;
import ai.vespa.cloud.Environment;
diff --git a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/TestReport.java b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/TestReport.java
index 807c9907c06..9a1200d0bf3 100644
--- a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/TestReport.java
+++ b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/TestReport.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.testrunner;
import com.yahoo.exception.ExceptionUtils;
diff --git a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/TestRunner.java b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/TestRunner.java
index 210d05691de..31474d6c348 100644
--- a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/TestRunner.java
+++ b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/TestRunner.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.testrunner;
import ai.vespa.hosted.api.TestDescriptor;
diff --git a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/TestRunnerHandler.java b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/TestRunnerHandler.java
index f32714ec4da..4c359071fc9 100644
--- a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/TestRunnerHandler.java
+++ b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/TestRunnerHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.testrunner;
import ai.vespa.hosted.api.TestDescriptor;
diff --git a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/VespaJunitLogListener.java b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/VespaJunitLogListener.java
index a3c64a63365..7079d89c424 100644
--- a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/VespaJunitLogListener.java
+++ b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/VespaJunitLogListener.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.testrunner;
diff --git a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/legacy/LegacyTestRunner.java b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/legacy/LegacyTestRunner.java
index 9f1a68218f0..418ab7fe5d0 100644
--- a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/legacy/LegacyTestRunner.java
+++ b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/legacy/LegacyTestRunner.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.testrunner.legacy;
import java.util.Collection;
diff --git a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/legacy/TestProfile.java b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/legacy/TestProfile.java
index 59576209043..ad65d150874 100644
--- a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/legacy/TestProfile.java
+++ b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/legacy/TestProfile.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.testrunner.legacy;
/**
diff --git a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/legacy/package-info.java b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/legacy/package-info.java
index 49f6cef0c22..6f6a8c819a6 100644
--- a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/legacy/package-info.java
+++ b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/legacy/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author mortent
diff --git a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/package-info.java b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/package-info.java
index 2606b3f839d..f02b9c8c5da 100644
--- a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/package-info.java
+++ b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author mortent
diff --git a/vespa-osgi-testrunner/src/main/resources/configdefinitions/junit-test-runner.def b/vespa-osgi-testrunner/src/main/resources/configdefinitions/junit-test-runner.def
index 20a01014803..7671096477e 100644
--- a/vespa-osgi-testrunner/src/main/resources/configdefinitions/junit-test-runner.def
+++ b/vespa-osgi-testrunner/src/main/resources/configdefinitions/junit-test-runner.def
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package=com.yahoo.vespa.testrunner
artifactsPath path
diff --git a/vespa-osgi-testrunner/src/test/java/com/yahoo/vespa/testrunner/TestRunnerHandlerTest.java b/vespa-osgi-testrunner/src/test/java/com/yahoo/vespa/testrunner/TestRunnerHandlerTest.java
index 16f1c7de0ff..0caac95ed34 100644
--- a/vespa-osgi-testrunner/src/test/java/com/yahoo/vespa/testrunner/TestRunnerHandlerTest.java
+++ b/vespa-osgi-testrunner/src/test/java/com/yahoo/vespa/testrunner/TestRunnerHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.testrunner;
import ai.vespa.hosted.api.TestDescriptor;
diff --git a/vespa_feed_perf/CMakeLists.txt b/vespa_feed_perf/CMakeLists.txt
index da598187ccf..094ad04cbea 100644
--- a/vespa_feed_perf/CMakeLists.txt
+++ b/vespa_feed_perf/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(vespa_feed_perf)
vespa_install_script(src/main/sh/vespa-feed-perf vespa-feed-perf bin)
diff --git a/vespa_feed_perf/pom.xml b/vespa_feed_perf/pom.xml
index a4edd9cda2c..6c25b4f6329 100644
--- a/vespa_feed_perf/pom.xml
+++ b/vespa_feed_perf/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/FeederParams.java b/vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/FeederParams.java
index cad8bb7b312..0ecc4198e46 100644
--- a/vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/FeederParams.java
+++ b/vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/FeederParams.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.feed.perf;
import com.yahoo.messagebus.routing.Route;
diff --git a/vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java b/vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java
index 3ee5f1df37e..4f8129dc76d 100644
--- a/vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java
+++ b/vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.feed.perf;
import com.yahoo.concurrent.ThreadFactoryFactory;
diff --git a/vespa_feed_perf/src/main/sh/vespa-feed-perf b/vespa_feed_perf/src/main/sh/vespa-feed-perf
index d6ccf0e4fc5..d890497b25c 100755
--- a/vespa_feed_perf/src/main/sh/vespa-feed-perf
+++ b/vespa_feed_perf/src/main/sh/vespa-feed-perf
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/FeederParamsTest.java b/vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/FeederParamsTest.java
index 6f575038f75..fbb38083aad 100644
--- a/vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/FeederParamsTest.java
+++ b/vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/FeederParamsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.feed.perf;
import com.yahoo.messagebus.routing.Route;
diff --git a/vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/SimpleFeederTest.java b/vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/SimpleFeederTest.java
index a51c020c770..5380796086a 100644
--- a/vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/SimpleFeederTest.java
+++ b/vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/SimpleFeederTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.feed.perf;
import com.yahoo.document.serialization.DeserializationException;
diff --git a/vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/SimpleServer.java b/vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/SimpleServer.java
index 058a2636cf0..c2b3e9e4680 100644
--- a/vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/SimpleServer.java
+++ b/vespa_feed_perf/src/test/java/com/yahoo/vespa/feed/perf/SimpleServer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.feed.perf;
import com.yahoo.document.DocumentTypeManager;
diff --git a/vespa_jersey2/CMakeLists.txt b/vespa_jersey2/CMakeLists.txt
index f4f6c44202c..f75d54991fc 100644
--- a/vespa_jersey2/CMakeLists.txt
+++ b/vespa_jersey2/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_java_artifact_dependencies(vespa_jersey2)
diff --git a/vespa_jersey2/pom.xml b/vespa_jersey2/pom.xml
index c39b92cd371..c27555ab3d6 100644
--- a/vespa_jersey2/pom.xml
+++ b/vespa_jersey2/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
@@ -20,14 +20,6 @@
<artifactId>javax.ws.rs-api</artifactId>
</dependency>
<dependency>
- <groupId>org.glassfish.jersey.containers</groupId>
- <artifactId>jersey-container-servlet-core</artifactId>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jersey.containers</groupId>
- <artifactId>jersey-container-servlet</artifactId>
- </dependency>
- <dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<exclusions>
@@ -63,6 +55,27 @@
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
+
+ <dependency>
+ <!-- Previously pulled in by jersey-container-servlet-core. Contains packages imported by
+ jersey-entity-filtering, which is used by jersey-media-json-jackson, which is used by hosted Vespa
+ framework bundles, July 2021. -->
+ <groupId>org.glassfish.jersey.core</groupId>
+ <artifactId>jersey-server</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.glassfish.jersey.media</groupId>
+ <artifactId>jersey-media-jaxb</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <!-- Previously pulled in by jersey-container-servlet-core.
+ Contains packages imported by hosted user applications, July 2021. -->
+ <groupId>javax.validation</groupId>
+ <artifactId>validation-api</artifactId>
+ </dependency>
</dependencies>
<build>
diff --git a/vespabase/CMakeLists.txt b/vespabase/CMakeLists.txt
index f6716006f88..d709a4b90d2 100644
--- a/vespabase/CMakeLists.txt
+++ b/vespabase/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_install_script(src/start-cbinaries.sh vespa-get-config bin)
vespa_install_script(src/start-cbinaries.sh vespa-verify-ranksetup bin)
vespa_install_script(src/start-cbinaries.sh vespa-config-status bin)
diff --git a/vespabase/conf/default-env.txt.in b/vespabase/conf/default-env.txt.in
index 374bbd020dd..56926e32186 100644
--- a/vespabase/conf/default-env.txt.in
+++ b/vespabase/conf/default-env.txt.in
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
fallback VESPA_HOME @CMAKE_INSTALL_PREFIX@
override VESPA_USER @VESPA_USER@
override VESPA_UNPRIVILEGED @VESPA_UNPRIVILEGED@
diff --git a/vespabase/src/Defaults.pm b/vespabase/src/Defaults.pm
index d413b7db815..85a5ce664d1 100644
--- a/vespabase/src/Defaults.pm
+++ b/vespabase/src/Defaults.pm
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# utility functions for reading and setting environment defaults
diff --git a/vespabase/src/common-env.sh b/vespabase/src/common-env.sh
index efdfa261509..cd8c7c604ad 100755
--- a/vespabase/src/common-env.sh
+++ b/vespabase/src/common-env.sh
@@ -1,5 +1,5 @@
#! /bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# common environment setup for vespa scripts
# put these two lines in all scripts:
@@ -122,6 +122,9 @@ populate_environment
export LD_LIBRARY_PATH=$VESPA_HOME/lib64
export MALLOC_ARENA_MAX=1
+# Prefer newer gdb and pstack
+prepend_path /opt/rh/gcc-toolset-10/root/usr/bin
+
# Maven is needed for tester applications
prepend_path "$VESPA_HOME/local/maven/bin"
prepend_path "$VESPA_HOME/bin64"
@@ -289,3 +292,31 @@ log_debug_message () {
log_warning_message () {
log_message "warning" "$*" 1>&2
}
+
+get_numa_ctl_cmd () {
+ if ! type numactl &> /dev/null; then
+ echo "FATAL: Could not find required program numactl."
+ exit 1
+ fi
+
+ if numactl --interleave all echo &> /dev/null; then
+ # We are allowed to use numactl
+ numnodes=$(numactl --hardware 2>/dev/null |
+ grep available |
+ awk '$3 == "nodes" { print $2 }')
+
+ if [ "$VESPA_AFFINITY_CPU_SOCKET" ] &&
+ [ "$numnodes" -gt 1 ]
+ then
+ node=$(($VESPA_AFFINITY_CPU_SOCKET % $numnodes))
+ numactlcmd="numactl --cpunodebind=$node --membind=$node"
+ else
+ numactlcmd="numactl --interleave all"
+ fi
+ else
+ numactlcmd=""
+ fi
+
+ echo $numactlcmd
+}
+
diff --git a/vespabase/src/rhel-prestart.sh b/vespabase/src/rhel-prestart.sh
index d84122898a3..395a3e3d91d 100755
--- a/vespabase/src/rhel-prestart.sh
+++ b/vespabase/src/rhel-prestart.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/vespabase/src/start-cbinaries.sh b/vespabase/src/start-cbinaries.sh
index f17829aa081..52c4c5a0de8 100755
--- a/vespabase/src/start-cbinaries.sh
+++ b/vespabase/src/start-cbinaries.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
@@ -163,29 +163,13 @@ configure_vespa_malloc () {
fi
}
-configure_numa_ctl () {
- numactl=""
- if numactl --interleave all true &> /dev/null; then
- # We are allowed to use numactl
- numactl="numactl --interleave all"
- if [ "$VESPA_AFFINITY_CPU_SOCKET" ]; then
- numcpu=`numactl --hardware 2>/dev/null | grep available | cut -d' ' -f2`
- if [ "$numcpu" ] && [ "$numcpu" -gt 1 ]; then
- log_debug_message "Starting $0 with affinity $VESPA_AFFINITY_CPU_SOCKET out of $numcpu"
- node=$(($VESPA_AFFINITY_CPU_SOCKET % $numcpu))
- numactl="numactl --cpunodebind=$node --membind=$node"
- fi
- fi
- fi
-}
-
configure_valgrind
configure_huge_pages
configure_use_madvise
configure_vespa_malloc
if $no_valgrind ; then
- configure_numa_ctl
+ numactl=$(get_numa_ctl_cmd)
ulimit -c unlimited
log_debug_message "Starting $0 with : " \
$numactl env LD_PRELOAD=$LD_PRELOAD $0-bin "$@"
diff --git a/vespabase/src/start-tool.sh b/vespabase/src/start-tool.sh
index b3811939ad7..6e04db7450e 100755
--- a/vespabase/src/start-tool.sh
+++ b/vespabase/src/start-tool.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/vespabase/src/start-vespa-base.sh b/vespabase/src/start-vespa-base.sh
index fdda5f85198..d7e9b6f8f1d 100755
--- a/vespabase/src/start-vespa-base.sh
+++ b/vespabase/src/start-vespa-base.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/vespabase/src/stop-vespa-base.sh b/vespabase/src/stop-vespa-base.sh
index f30faad65ee..f6dacf32076 100755
--- a/vespabase/src/stop-vespa-base.sh
+++ b/vespabase/src/stop-vespa-base.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/vespabase/src/vespa-configserver.service.in b/vespabase/src/vespa-configserver.service.in
index 7ee170bbdca..4c9a1648e91 100644
--- a/vespabase/src/vespa-configserver.service.in
+++ b/vespabase/src/vespa-configserver.service.in
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
[Unit]
Description=Vertical Search Platform Config Server
After=network.target
diff --git a/vespabase/src/vespa-start-configserver.sh b/vespabase/src/vespa-start-configserver.sh
index d6f401ad5d0..8bdfc9560df 100755
--- a/vespabase/src/vespa-start-configserver.sh
+++ b/vespabase/src/vespa-start-configserver.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/vespabase/src/vespa-start-services.sh b/vespabase/src/vespa-start-services.sh
index 42a98511258..9e79f9ae961 100755
--- a/vespabase/src/vespa-start-services.sh
+++ b/vespabase/src/vespa-start-services.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/vespabase/src/vespa-stop-configserver.sh b/vespabase/src/vespa-stop-configserver.sh
index 116c1f14617..71e07b0a384 100755
--- a/vespabase/src/vespa-stop-configserver.sh
+++ b/vespabase/src/vespa-stop-configserver.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/vespabase/src/vespa-stop-services.sh b/vespabase/src/vespa-stop-services.sh
index 441717c2a71..7c355e07575 100755
--- a/vespabase/src/vespa-stop-services.sh
+++ b/vespabase/src/vespa-stop-services.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/vespabase/src/vespa.service.in b/vespabase/src/vespa.service.in
index 3c32f2c2cab..0b1887b8a78 100644
--- a/vespabase/src/vespa.service.in
+++ b/vespabase/src/vespa.service.in
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
[Unit]
Description=Vertical Search Platform
After=network.target
diff --git a/vespaclient-container-plugin/CMakeLists.txt b/vespaclient-container-plugin/CMakeLists.txt
index 4c8a8647b23..57f0847d64a 100644
--- a/vespaclient-container-plugin/CMakeLists.txt
+++ b/vespaclient-container-plugin/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(vespaclient-container-plugin)
diff --git a/vespaclient-container-plugin/pom.xml b/vespaclient-container-plugin/pom.xml
index 17443b11b6a..ab3fef08e00 100644
--- a/vespaclient-container-plugin/pom.xml
+++ b/vespaclient-container-plugin/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!-- Implementation of document-api in the container. -->
<!-- TODO: Rename to container-documentapi -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -42,17 +42,34 @@
<artifactId>vespa-http-client</artifactId>
<version>${project.version}</version>
<exclusions>
+ <!-- Exclude artifacts that are provided by Jdisc container -->
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
+ <artifactId>*</artifactId>
</exclusion>
<exclusion>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
+ <groupId>com.fasterxml.jackson.datatype</groupId>
+ <artifactId>*</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.fasterxml.jackson.module</groupId>
+ <artifactId>*</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.yahoo.vespa</groupId>
+ <artifactId>security-utils</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpcore</artifactId>
+ <artifactId>*</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.bouncycastle</groupId>
+ <artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java
index 770aa9bdb81..aa96b0932c3 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.restapi.resource;
import com.fasterxml.jackson.core.JsonFactory;
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/RestApi.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/RestApi.java
index abe791eed1b..8cc054eb96c 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/RestApi.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/RestApi.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.restapi.resource;
import com.google.inject.Inject;
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/package-info.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/package-info.java
index e78065f814e..164bd414883 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/package-info.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.document.restapi.resource;
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/documentapi/metrics/DocumentApiMetrics.java b/vespaclient-container-plugin/src/main/java/com/yahoo/documentapi/metrics/DocumentApiMetrics.java
index 4dbe1381e34..890f06dd094 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/documentapi/metrics/DocumentApiMetrics.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/documentapi/metrics/DocumentApiMetrics.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.metrics;
import com.google.common.cache.Cache;
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/documentapi/metrics/DocumentOperationStatus.java b/vespaclient-container-plugin/src/main/java/com/yahoo/documentapi/metrics/DocumentOperationStatus.java
index c665eca1cac..522652212a9 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/documentapi/metrics/DocumentOperationStatus.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/documentapi/metrics/DocumentOperationStatus.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.metrics;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/documentapi/metrics/DocumentOperationType.java b/vespaclient-container-plugin/src/main/java/com/yahoo/documentapi/metrics/DocumentOperationType.java
index a478cbe3edb..a5ba0f3c622 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/documentapi/metrics/DocumentOperationType.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/documentapi/metrics/DocumentOperationType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.metrics;
import com.yahoo.documentapi.messagebus.protocol.PutDocumentMessage;
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/ClientFeederV3.java b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/ClientFeederV3.java
index 6e9f3cc590e..d57ef11f2d3 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/ClientFeederV3.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/ClientFeederV3.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
import com.yahoo.container.jdisc.HttpRequest;
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/ClientState.java b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/ClientState.java
index d09787906cb..13a12f707d9 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/ClientState.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/ClientState.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
import com.yahoo.jdisc.Metric;
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/DocumentOperationMessageV3.java b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/DocumentOperationMessageV3.java
index 6df6bba5a59..25bf5815907 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/DocumentOperationMessageV3.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/DocumentOperationMessageV3.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
import com.yahoo.document.DocumentPut;
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/ErrorHttpResponse.java b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/ErrorHttpResponse.java
index 76361d5f84e..a12cd1ec089 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/ErrorHttpResponse.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/ErrorHttpResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
import com.yahoo.container.jdisc.HttpResponse;
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedHandler.java b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedHandler.java
index 0a07e978868..4b01835ea3c 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedHandler.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
import com.yahoo.collections.Tuple2;
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedHandlerV3.java b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedHandlerV3.java
index 3143b66e094..8ec05f158c9 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedHandlerV3.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedHandlerV3.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
import com.yahoo.concurrent.ThreadFactoryFactory;
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReaderFactory.java b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReaderFactory.java
index 81b08d5fb25..069ccfd84f0 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReaderFactory.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReaderFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
import com.yahoo.document.DocumentTypeManager;
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReplyReader.java b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReplyReader.java
index 5c0c4ffaf3d..11fd97f2a1d 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReplyReader.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReplyReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
import java.util.Set;
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedResponse.java b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedResponse.java
index dd820a1dd85..3e2a4a8795f 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedResponse.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
import com.yahoo.container.jdisc.HttpResponse;
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeederSettings.java b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeederSettings.java
index 0e112c49c37..eec6c3f5164 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeederSettings.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeederSettings.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
import com.yahoo.container.jdisc.HttpRequest;
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/MetricNames.java b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/MetricNames.java
index 6b52a81323d..8cd628a83d9 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/MetricNames.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/MetricNames.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
/**
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/ReplyContext.java b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/ReplyContext.java
index b8cabe5cc48..aa2651595ef 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/ReplyContext.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/ReplyContext.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
import com.yahoo.vespa.http.client.core.OperationStatus;
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/StreamReaderV3.java b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/StreamReaderV3.java
index 69f810ad4c7..4ddc430b35f 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/StreamReaderV3.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/StreamReaderV3.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
import com.yahoo.container.jdisc.HttpRequest;
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/UnknownClientException.java b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/UnknownClientException.java
index 58bebd64011..5324b86a98a 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/UnknownClientException.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/UnknownClientException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
/**
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/package-info.java b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/package-info.java
index d5b29b8abea..ea01137d9af 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/package-info.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Server side of programmatic API for feeding into Vespa from outside of the
* clusters. Not a public API, not meant for direct use.
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/util/ByteLimitedInputStream.java b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/util/ByteLimitedInputStream.java
index 260b57b2112..270ebe7796b 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/util/ByteLimitedInputStream.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/util/ByteLimitedInputStream.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server.util;
import java.io.IOException;
diff --git a/vespaclient-container-plugin/src/main/resources/configdefinitions/document-operation-executor.def b/vespaclient-container-plugin/src/main/resources/configdefinitions/document-operation-executor.def
index 6850b5213a1..55cc83e6b8b 100644
--- a/vespaclient-container-plugin/src/main/resources/configdefinitions/document-operation-executor.def
+++ b/vespaclient-container-plugin/src/main/resources/configdefinitions/document-operation-executor.def
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package=com.yahoo.document.restapi
# Duration for which resender thread sleeps after an operation is throttled
diff --git a/vespaclient-container-plugin/src/test/cfg/music.sd b/vespaclient-container-plugin/src/test/cfg/music.sd
index a289f5a686b..75a1918de5b 100644
--- a/vespaclient-container-plugin/src/test/cfg/music.sd
+++ b/vespaclient-container-plugin/src/test/cfg/music.sd
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
search music {
document music {
field artist type string { }
diff --git a/vespaclient-container-plugin/src/test/files/feedhandler/test10.xml b/vespaclient-container-plugin/src/test/files/feedhandler/test10.xml
index 3c05dabc401..ee028e1adc1 100644
--- a/vespaclient-container-plugin/src/test/files/feedhandler/test10.xml
+++ b/vespaclient-container-plugin/src/test/files/feedhandler/test10.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!--
Document : test10.xml
diff --git a/vespaclient-container-plugin/src/test/files/feedhandler/test10b.xml b/vespaclient-container-plugin/src/test/files/feedhandler/test10b.xml
index bd33d365e2f..f77a21f0dc5 100644
--- a/vespaclient-container-plugin/src/test/files/feedhandler/test10b.xml
+++ b/vespaclient-container-plugin/src/test/files/feedhandler/test10b.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<!--
Document : test10.xml
diff --git a/vespaclient-container-plugin/src/test/files/feedhandler/test_bogus_docid.xml b/vespaclient-container-plugin/src/test/files/feedhandler/test_bogus_docid.xml
index 25a19319206..0ea74722521 100644
--- a/vespaclient-container-plugin/src/test/files/feedhandler/test_bogus_docid.xml
+++ b/vespaclient-container-plugin/src/test/files/feedhandler/test_bogus_docid.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<vespafeed>
<document documenttype="news" documentid="id:ns:news::http://news10a">
diff --git a/vespaclient-container-plugin/src/test/files/feedhandler/test_bogus_docid_first.xml b/vespaclient-container-plugin/src/test/files/feedhandler/test_bogus_docid_first.xml
index cfff6f3d8fb..3ae470abbae 100755
--- a/vespaclient-container-plugin/src/test/files/feedhandler/test_bogus_docid_first.xml
+++ b/vespaclient-container-plugin/src/test/files/feedhandler/test_bogus_docid_first.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<vespafeed>
<document documenttype="news" documentid="foobar:news:http://news12">
<url>testUrl2</url>
diff --git a/vespaclient-container-plugin/src/test/files/feedhandler/test_bogus_xml.xml b/vespaclient-container-plugin/src/test/files/feedhandler/test_bogus_xml.xml
index bd705d50b57..65831a4a785 100755
--- a/vespaclient-container-plugin/src/test/files/feedhandler/test_bogus_xml.xml
+++ b/vespaclient-container-plugin/src/test/files/feedhandler/test_bogus_xml.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<vespafeed>
<document documenttype="news" documentid="id:ns:news::http://news10a">
diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java b/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java
index 29ae7f52265..96700f08823 100644
--- a/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java
+++ b/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.document.restapi.resource;
import com.yahoo.cloud.config.ClusterListConfig;
diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/DummyMetric.java b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/DummyMetric.java
index a185b03f7af..1cdac87f3df 100644
--- a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/DummyMetric.java
+++ b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/DummyMetric.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
import com.yahoo.jdisc.Metric;
diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedHandlerCompressionTest.java b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedHandlerCompressionTest.java
index 8a48a71ab2d..01784226c9e 100644
--- a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedHandlerCompressionTest.java
+++ b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedHandlerCompressionTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
import com.yahoo.container.jdisc.HttpRequest;
diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedHandlerTest.java b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedHandlerTest.java
index c1cb368cdbd..00df7c8b6fa 100644
--- a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedHandlerTest.java
+++ b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
import com.yahoo.container.handler.threadpool.ContainerThreadPool;
import com.yahoo.container.jdisc.RequestHandlerTestDriver;
diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedHandlerV3Test.java b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedHandlerV3Test.java
index 1e835750039..1fd6425f945 100644
--- a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedHandlerV3Test.java
+++ b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedHandlerV3Test.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
import com.google.common.base.Splitter;
diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedReaderFactoryTestCase.java b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedReaderFactoryTestCase.java
index 47f057013b7..6b0bd1c9518 100644
--- a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedReaderFactoryTestCase.java
+++ b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/FeedReaderFactoryTestCase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
import com.yahoo.document.DocumentTypeManager;
diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/MetaStream.java b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/MetaStream.java
index d0ebd1e6ee3..4dce8cb4e7d 100644
--- a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/MetaStream.java
+++ b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/MetaStream.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
import com.yahoo.text.Utf8;
diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/MockNetwork.java b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/MockNetwork.java
index 6282c238b4a..7d3c0bb74ca 100644
--- a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/MockNetwork.java
+++ b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/MockNetwork.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
import java.util.List;
diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/MockReply.java b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/MockReply.java
index f1c38b090a6..1cb00160bbd 100644
--- a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/MockReply.java
+++ b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/MockReply.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
import com.yahoo.messagebus.Reply;
diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/VersionsTestCase.java b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/VersionsTestCase.java
index 128664dda9e..a13f4f79ca9 100644
--- a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/VersionsTestCase.java
+++ b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/VersionsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server;
import com.yahoo.collections.Tuple2;
diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/util/ByteLimitedInputStreamTestCase.java b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/util/ByteLimitedInputStreamTestCase.java
index 3dd8145ec73..ed571c6baff 100644
--- a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/util/ByteLimitedInputStreamTestCase.java
+++ b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/util/ByteLimitedInputStreamTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.http.server.util;
import org.junit.Test;
diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/vespaxmlparser/MockFeedReaderFactory.java b/vespaclient-container-plugin/src/test/java/com/yahoo/vespaxmlparser/MockFeedReaderFactory.java
index df1d5505632..513892af213 100644
--- a/vespaclient-container-plugin/src/test/java/com/yahoo/vespaxmlparser/MockFeedReaderFactory.java
+++ b/vespaclient-container-plugin/src/test/java/com/yahoo/vespaxmlparser/MockFeedReaderFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaxmlparser;
import com.yahoo.document.DocumentTypeManager;
diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/vespaxmlparser/MockReader.java b/vespaclient-container-plugin/src/test/java/com/yahoo/vespaxmlparser/MockReader.java
index eabbb2dab20..c751849b84e 100644
--- a/vespaclient-container-plugin/src/test/java/com/yahoo/vespaxmlparser/MockReader.java
+++ b/vespaclient-container-plugin/src/test/java/com/yahoo/vespaxmlparser/MockReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaxmlparser;
import com.yahoo.document.Document;
diff --git a/vespaclient-core/CMakeLists.txt b/vespaclient-core/CMakeLists.txt
index 7bb25e6a420..f8d34754c41 100644
--- a/vespaclient-core/CMakeLists.txt
+++ b/vespaclient-core/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_config_definitions()
diff --git a/vespaclient-core/pom.xml b/vespaclient-core/pom.xml
index 98d324b062e..43c8700a06a 100644
--- a/vespaclient-core/pom.xml
+++ b/vespaclient-core/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/vespaclient-core/src/main/java/com/yahoo/clientmetrics/ClientMetrics.java b/vespaclient-core/src/main/java/com/yahoo/clientmetrics/ClientMetrics.java
index ff54f3d4063..fa900f12607 100755
--- a/vespaclient-core/src/main/java/com/yahoo/clientmetrics/ClientMetrics.java
+++ b/vespaclient-core/src/main/java/com/yahoo/clientmetrics/ClientMetrics.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.clientmetrics;
import java.util.HashMap;
diff --git a/vespaclient-core/src/main/java/com/yahoo/clientmetrics/MessageTypeMetricSet.java b/vespaclient-core/src/main/java/com/yahoo/clientmetrics/MessageTypeMetricSet.java
index 45b1a11b4af..46ad5ebfab6 100644
--- a/vespaclient-core/src/main/java/com/yahoo/clientmetrics/MessageTypeMetricSet.java
+++ b/vespaclient-core/src/main/java/com/yahoo/clientmetrics/MessageTypeMetricSet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.clientmetrics;
import com.yahoo.documentapi.messagebus.protocol.DocumentIgnoredReply;
diff --git a/vespaclient-core/src/main/java/com/yahoo/clientmetrics/RouteMetricSet.java b/vespaclient-core/src/main/java/com/yahoo/clientmetrics/RouteMetricSet.java
index 21efd53d7a5..ebf6246b034 100644
--- a/vespaclient-core/src/main/java/com/yahoo/clientmetrics/RouteMetricSet.java
+++ b/vespaclient-core/src/main/java/com/yahoo/clientmetrics/RouteMetricSet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.clientmetrics;
import com.yahoo.messagebus.Reply;
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedapi/DummySessionFactory.java b/vespaclient-core/src/main/java/com/yahoo/feedapi/DummySessionFactory.java
index 4e9e17d0b5f..e53e4811012 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedapi/DummySessionFactory.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedapi/DummySessionFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.feedapi;
import com.yahoo.document.Document;
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedapi/FeedContext.java b/vespaclient-core/src/main/java/com/yahoo/feedapi/FeedContext.java
index 2d35adfab75..9540de1ab84 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedapi/FeedContext.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedapi/FeedContext.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.feedapi;
import com.yahoo.document.DocumentTypeManager;
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedapi/Feeder.java b/vespaclient-core/src/main/java/com/yahoo/feedapi/Feeder.java
index 19d074a0ead..cd888b11d64 100644
--- a/vespaclient-core/src/main/java/com/yahoo/feedapi/Feeder.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedapi/Feeder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.feedapi;
import java.io.InputStream;
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedapi/FeederOptions.java b/vespaclient-core/src/main/java/com/yahoo/feedapi/FeederOptions.java
index addc6d41645..262ab4c7bbe 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedapi/FeederOptions.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedapi/FeederOptions.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.feedapi;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedapi/JsonFeeder.java b/vespaclient-core/src/main/java/com/yahoo/feedapi/JsonFeeder.java
index f301cd29c6b..f9aa6ff4a61 100644
--- a/vespaclient-core/src/main/java/com/yahoo/feedapi/JsonFeeder.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedapi/JsonFeeder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.feedapi;
import java.io.InputStream;
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedapi/MessageBusSessionFactory.java b/vespaclient-core/src/main/java/com/yahoo/feedapi/MessageBusSessionFactory.java
index 5e52da23c12..514669fe0ac 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedapi/MessageBusSessionFactory.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedapi/MessageBusSessionFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.feedapi;
import com.yahoo.cloud.config.SlobroksConfig;
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedapi/MessageProcessor.java b/vespaclient-core/src/main/java/com/yahoo/feedapi/MessageProcessor.java
index f0fb7d924e8..5ff44066d5b 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedapi/MessageProcessor.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedapi/MessageProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.feedapi;
import com.yahoo.messagebus.Message;
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedapi/MessagePropertyProcessor.java b/vespaclient-core/src/main/java/com/yahoo/feedapi/MessagePropertyProcessor.java
index 113f82e1566..edf51d1bcd6 100644
--- a/vespaclient-core/src/main/java/com/yahoo/feedapi/MessagePropertyProcessor.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedapi/MessagePropertyProcessor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.feedapi;
import com.yahoo.concurrent.SystemTimer;
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedapi/SendSession.java b/vespaclient-core/src/main/java/com/yahoo/feedapi/SendSession.java
index 4c187a198ac..152e9c5d189 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedapi/SendSession.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedapi/SendSession.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.feedapi;
import com.yahoo.messagebus.Message;
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedapi/SessionFactory.java b/vespaclient-core/src/main/java/com/yahoo/feedapi/SessionFactory.java
index 52583052ddf..c8b855a6c61 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedapi/SessionFactory.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedapi/SessionFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.feedapi;
import com.yahoo.messagebus.ReplyHandler;
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedapi/SharedSender.java b/vespaclient-core/src/main/java/com/yahoo/feedapi/SharedSender.java
index 997b575612e..f3c76c4de3d 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedapi/SharedSender.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedapi/SharedSender.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.feedapi;
import com.yahoo.concurrent.SystemTimer;
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedapi/SimpleFeedAccess.java b/vespaclient-core/src/main/java/com/yahoo/feedapi/SimpleFeedAccess.java
index 98609650432..ba267fe2fef 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedapi/SimpleFeedAccess.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedapi/SimpleFeedAccess.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.feedapi;
import com.yahoo.document.Document;
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedapi/SingleSender.java b/vespaclient-core/src/main/java/com/yahoo/feedapi/SingleSender.java
index d78e3a62302..6adc8a2299a 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedapi/SingleSender.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedapi/SingleSender.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.feedapi;
import com.yahoo.document.Document;
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedapi/VespaFeedSender.java b/vespaclient-core/src/main/java/com/yahoo/feedapi/VespaFeedSender.java
index a1666a83856..5453f5301ff 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedapi/VespaFeedSender.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedapi/VespaFeedSender.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.feedapi;
import com.yahoo.vespaxmlparser.FeedOperation;
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedapi/XMLFeeder.java b/vespaclient-core/src/main/java/com/yahoo/feedapi/XMLFeeder.java
index 9bd2d66fa91..9a86a170bba 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedapi/XMLFeeder.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedapi/XMLFeeder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.feedapi;
import com.yahoo.document.DocumentTypeManager;
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedhandler/FeedResponse.java b/vespaclient-core/src/main/java/com/yahoo/feedhandler/FeedResponse.java
index 58cceb2d8ee..dd95e1dc202 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedhandler/FeedResponse.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedhandler/FeedResponse.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.feedhandler;
import com.yahoo.clientmetrics.RouteMetricSet;
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandler.java b/vespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandler.java
index 892f3763805..afe09e06a8f 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandler.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.feedhandler;
import com.yahoo.clientmetrics.RouteMetricSet;
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerBase.java b/vespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerBase.java
index 532f10663b9..0ef0bf7a3ec 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerBase.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerBase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.feedhandler;
import com.yahoo.container.jdisc.HttpRequest;
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedhandler/package-info.java b/vespaclient-core/src/main/java/com/yahoo/feedhandler/package-info.java
index 14b8e4e1ea7..34cf58a2294 100644
--- a/vespaclient-core/src/main/java/com/yahoo/feedhandler/package-info.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedhandler/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Exported not as an API, but specifically for SSBE.
*/
diff --git a/vespaclient-core/src/main/java/com/yahoo/vespaclient/ClusterDef.java b/vespaclient-core/src/main/java/com/yahoo/vespaclient/ClusterDef.java
index c2f99689caf..c3ca900486c 100644
--- a/vespaclient-core/src/main/java/com/yahoo/vespaclient/ClusterDef.java
+++ b/vespaclient-core/src/main/java/com/yahoo/vespaclient/ClusterDef.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaclient;
public class ClusterDef {
diff --git a/vespaclient-core/src/main/java/com/yahoo/vespaclient/ClusterList.java b/vespaclient-core/src/main/java/com/yahoo/vespaclient/ClusterList.java
index 2c3a0b72ed5..d60463df581 100644
--- a/vespaclient-core/src/main/java/com/yahoo/vespaclient/ClusterList.java
+++ b/vespaclient-core/src/main/java/com/yahoo/vespaclient/ClusterList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaclient;
import com.yahoo.cloud.config.ClusterListConfig;
diff --git a/vespaclient-core/src/main/resources/configdefinitions/vespaclient.config.feeder.def b/vespaclient-core/src/main/resources/configdefinitions/vespaclient.config.feeder.def
index a376a4807a7..a2a5a14e542 100644
--- a/vespaclient-core/src/main/resources/configdefinitions/vespaclient.config.feeder.def
+++ b/vespaclient-core/src/main/resources/configdefinitions/vespaclient.config.feeder.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespaclient.config
## Whether or not to abort if there are document-related errors.
diff --git a/vespaclient-core/src/test/java/com/yahoo/feedapi/FeederOptionsTestCase.java b/vespaclient-core/src/test/java/com/yahoo/feedapi/FeederOptionsTestCase.java
index cb33b71424d..f83f26fb0e2 100644
--- a/vespaclient-core/src/test/java/com/yahoo/feedapi/FeederOptionsTestCase.java
+++ b/vespaclient-core/src/test/java/com/yahoo/feedapi/FeederOptionsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.feedapi;
import org.junit.Test;
diff --git a/vespaclient-java/CMakeLists.txt b/vespaclient-java/CMakeLists.txt
index b9240adee8a..c8f48a8b332 100644
--- a/vespaclient-java/CMakeLists.txt
+++ b/vespaclient-java/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(vespaclient-java)
vespa_install_script(src/main/sh/vespa-document-statistics.sh vespa-document-statistics bin)
diff --git a/vespaclient-java/README.md b/vespaclient-java/README.md
index 400180af333..b82e31bddcf 100644
--- a/vespaclient-java/README.md
+++ b/vespaclient-java/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# Vespa Java command line utilities
This package provides several command line utilities written Java.
diff --git a/vespaclient-java/pom.xml b/vespaclient-java/pom.xml
index 566b48ba933..613176509d9 100644
--- a/vespaclient-java/pom.xml
+++ b/vespaclient-java/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/vespaclient-java/src/main/java/com/yahoo/dummyreceiver/DummyReceiver.java b/vespaclient-java/src/main/java/com/yahoo/dummyreceiver/DummyReceiver.java
index a32aa75d994..cd524c07f73 100755
--- a/vespaclient-java/src/main/java/com/yahoo/dummyreceiver/DummyReceiver.java
+++ b/vespaclient-java/src/main/java/com/yahoo/dummyreceiver/DummyReceiver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.dummyreceiver;
import com.yahoo.concurrent.DaemonThreadFactory;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespafeeder/Arguments.java b/vespaclient-java/src/main/java/com/yahoo/vespafeeder/Arguments.java
index a231582fb5d..8f5db4adf97 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespafeeder/Arguments.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespafeeder/Arguments.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespafeeder;
import com.yahoo.vespa.config.content.LoadTypeConfig;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespafeeder/BenchmarkProgressPrinter.java b/vespaclient-java/src/main/java/com/yahoo/vespafeeder/BenchmarkProgressPrinter.java
index 66934b35adc..da6ba80da36 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespafeeder/BenchmarkProgressPrinter.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespafeeder/BenchmarkProgressPrinter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespafeeder;
import com.yahoo.clientmetrics.MessageTypeMetricSet;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespafeeder/FileRequest.java b/vespaclient-java/src/main/java/com/yahoo/vespafeeder/FileRequest.java
index c43350cafe8..9d03a186ed8 100755
--- a/vespaclient-java/src/main/java/com/yahoo/vespafeeder/FileRequest.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespafeeder/FileRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespafeeder;
import java.io.File;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespafeeder/InputStreamRequest.java b/vespaclient-java/src/main/java/com/yahoo/vespafeeder/InputStreamRequest.java
index d00f43e8027..e3c61dd26e9 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespafeeder/InputStreamRequest.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespafeeder/InputStreamRequest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespafeeder;
import com.yahoo.container.jdisc.HttpRequest;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespafeeder/ProgressPrinter.java b/vespaclient-java/src/main/java/com/yahoo/vespafeeder/ProgressPrinter.java
index 84fe1691e4b..bdbe211c1e2 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespafeeder/ProgressPrinter.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespafeeder/ProgressPrinter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespafeeder;
import com.yahoo.clientmetrics.MessageTypeMetricSet;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespafeeder/VespaFeeder.java b/vespaclient-java/src/main/java/com/yahoo/vespafeeder/VespaFeeder.java
index 100aba3a917..1208a18205f 100755
--- a/vespaclient-java/src/main/java/com/yahoo/vespafeeder/VespaFeeder.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespafeeder/VespaFeeder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespafeeder;
import com.yahoo.clientmetrics.RouteMetricSet;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespaget/ClientParameters.java b/vespaclient-java/src/main/java/com/yahoo/vespaget/ClientParameters.java
index 1d37f1b394e..d3431818b63 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespaget/ClientParameters.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespaget/ClientParameters.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaget;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespaget/CommandLineOptions.java b/vespaclient-java/src/main/java/com/yahoo/vespaget/CommandLineOptions.java
index 45fb4e54f0a..0eef559da3f 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespaget/CommandLineOptions.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespaget/CommandLineOptions.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaget;
import com.yahoo.document.fieldset.AllFields;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespaget/DocumentAccessFactory.java b/vespaclient-java/src/main/java/com/yahoo/vespaget/DocumentAccessFactory.java
index 2b846f61c0b..bfded1b2863 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespaget/DocumentAccessFactory.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespaget/DocumentAccessFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaget;
import com.yahoo.documentapi.messagebus.MessageBusDocumentAccess;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespaget/DocumentRetriever.java b/vespaclient-java/src/main/java/com/yahoo/vespaget/DocumentRetriever.java
index ebed1685a5f..044e4d913c3 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespaget/DocumentRetriever.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespaget/DocumentRetriever.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaget;
import com.yahoo.document.Document;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespaget/DocumentRetrieverException.java b/vespaclient-java/src/main/java/com/yahoo/vespaget/DocumentRetrieverException.java
index ea7b3a1cae6..e8dc44988ea 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespaget/DocumentRetrieverException.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespaget/DocumentRetrieverException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaget;
/**
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespaget/Main.java b/vespaclient-java/src/main/java/com/yahoo/vespaget/Main.java
index da688c80252..fd2c9e964f7 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespaget/Main.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespaget/Main.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaget;
import com.yahoo.documentapi.messagebus.loadtypes.LoadTypeSet;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespastat/BucketStatsException.java b/vespaclient-java/src/main/java/com/yahoo/vespastat/BucketStatsException.java
index 0edecae7ddb..9ad0faea538 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespastat/BucketStatsException.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespastat/BucketStatsException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespastat;
/**
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespastat/BucketStatsPrinter.java b/vespaclient-java/src/main/java/com/yahoo/vespastat/BucketStatsPrinter.java
index 2b271af5289..372527d9171 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespastat/BucketStatsPrinter.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespastat/BucketStatsPrinter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespastat;
import com.yahoo.document.BucketId;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespastat/BucketStatsRetriever.java b/vespaclient-java/src/main/java/com/yahoo/vespastat/BucketStatsRetriever.java
index e2acdfdc1c3..381de459231 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespastat/BucketStatsRetriever.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespastat/BucketStatsRetriever.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespastat;
import com.yahoo.document.BucketId;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespastat/ClientParameters.java b/vespaclient-java/src/main/java/com/yahoo/vespastat/ClientParameters.java
index 3a51e9c858f..b6839504e80 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespastat/ClientParameters.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespastat/ClientParameters.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespastat;
import com.yahoo.document.FixedBucketSpaces;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespastat/CommandLineOptions.java b/vespaclient-java/src/main/java/com/yahoo/vespastat/CommandLineOptions.java
index 6c54dd5106b..5b08efdcb8f 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespastat/CommandLineOptions.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespastat/CommandLineOptions.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespastat;
import com.yahoo.document.FixedBucketSpaces;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespastat/DocumentAccessFactory.java b/vespaclient-java/src/main/java/com/yahoo/vespastat/DocumentAccessFactory.java
index 8df30d89c27..f11c882faa0 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespastat/DocumentAccessFactory.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespastat/DocumentAccessFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespastat;
import com.yahoo.documentapi.messagebus.MessageBusDocumentAccess;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespastat/Main.java b/vespaclient-java/src/main/java/com/yahoo/vespastat/Main.java
index c7698a81667..8f0ecab7ff4 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespastat/Main.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespastat/Main.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespastat;
import java.util.logging.Level;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespasummarybenchmark/VespaSummaryBenchmark.java b/vespaclient-java/src/main/java/com/yahoo/vespasummarybenchmark/VespaSummaryBenchmark.java
index fbfb16dd021..49a8c7fc583 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespasummarybenchmark/VespaSummaryBenchmark.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespasummarybenchmark/VespaSummaryBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespasummarybenchmark;
import com.yahoo.compress.CompressionType;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespavisit/StdOutVisitorHandler.java b/vespaclient-java/src/main/java/com/yahoo/vespavisit/StdOutVisitorHandler.java
index bfd8d47eb09..ee8aa903d33 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespavisit/StdOutVisitorHandler.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespavisit/StdOutVisitorHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespavisit;
import com.yahoo.document.BucketId;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisit.java b/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisit.java
index adfbb246a9e..f74f7397ae3 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisit.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisit.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespavisit;
import com.yahoo.document.FixedBucketSpaces;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisitHandler.java b/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisitHandler.java
index e652dc86ab2..ea861399e76 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisitHandler.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisitHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespavisit;
import com.yahoo.documentapi.ProgressToken;
diff --git a/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisitTarget.java b/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisitTarget.java
index a1dec70f9df..d1fbde7dd42 100644
--- a/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisitTarget.java
+++ b/vespaclient-java/src/main/java/com/yahoo/vespavisit/VdsVisitTarget.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespavisit;
import com.yahoo.documentapi.DocumentAccess;
diff --git a/vespaclient-java/src/main/sh/vespa-destination.sh b/vespaclient-java/src/main/sh/vespa-destination.sh
index 5400f15e67a..607972ac28c 100755
--- a/vespaclient-java/src/main/sh/vespa-destination.sh
+++ b/vespaclient-java/src/main/sh/vespa-destination.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/vespaclient-java/src/main/sh/vespa-document-statistics.sh b/vespaclient-java/src/main/sh/vespa-document-statistics.sh
index c27aae1d0f2..0dbeabf5f35 100755
--- a/vespaclient-java/src/main/sh/vespa-document-statistics.sh
+++ b/vespaclient-java/src/main/sh/vespa-document-statistics.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/vespaclient-java/src/main/sh/vespa-feeder.sh b/vespaclient-java/src/main/sh/vespa-feeder.sh
index 2e856034295..1572ba804fe 100755
--- a/vespaclient-java/src/main/sh/vespa-feeder.sh
+++ b/vespaclient-java/src/main/sh/vespa-feeder.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
@@ -81,6 +81,6 @@ java \
-XX:ThreadStackSize=512 \
-XX:MaxJavaStackTraceDepth=1000000 \
-Djava.library.path=${VESPA_HOME}/libexec64/native:${VESPA_HOME}/lib64 \
--XX:MaxDirectMemorySize=32m -Djava.awt.headless=true \
+-XX:MaxDirectMemorySize=64m -Djava.awt.headless=true \
-Xms128m -Xmx1024m $(getJavaOptionsIPV46) \
-cp ${VESPA_HOME}/lib/jars/vespaclient-java-jar-with-dependencies.jar com.yahoo.vespafeeder.VespaFeeder "$@"
diff --git a/vespaclient-java/src/main/sh/vespa-get.sh b/vespaclient-java/src/main/sh/vespa-get.sh
index da4f8694d29..6aebfa4fde1 100644
--- a/vespaclient-java/src/main/sh/vespa-get.sh
+++ b/vespaclient-java/src/main/sh/vespa-get.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/vespaclient-java/src/main/sh/vespa-query-profile-dump-tool.sh b/vespaclient-java/src/main/sh/vespa-query-profile-dump-tool.sh
index 151ce6103d7..4c68bf8a3ce 100755
--- a/vespaclient-java/src/main/sh/vespa-query-profile-dump-tool.sh
+++ b/vespaclient-java/src/main/sh/vespa-query-profile-dump-tool.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/vespaclient-java/src/main/sh/vespa-stat.sh b/vespaclient-java/src/main/sh/vespa-stat.sh
index 400d85263d3..3aaadff16ae 100644
--- a/vespaclient-java/src/main/sh/vespa-stat.sh
+++ b/vespaclient-java/src/main/sh/vespa-stat.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/vespaclient-java/src/main/sh/vespa-summary-benchmark.sh b/vespaclient-java/src/main/sh/vespa-summary-benchmark.sh
index 0f48b1659af..9a85cf00aa5 100755
--- a/vespaclient-java/src/main/sh/vespa-summary-benchmark.sh
+++ b/vespaclient-java/src/main/sh/vespa-summary-benchmark.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/vespaclient-java/src/main/sh/vespa-visit-target.1 b/vespaclient-java/src/main/sh/vespa-visit-target.1
index 38880bcce1d..aeca07b8c24 100644
--- a/vespaclient-java/src/main/sh/vespa-visit-target.1
+++ b/vespaclient-java/src/main/sh/vespa-visit-target.1
@@ -1,4 +1,4 @@
-.\" Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+.\" Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
.TH VESPA-VISIT-TARGET 1 2008-03-07 "Vespa" "Vespa Documentation"
.SH NAME
vespa-visit-target \- An endpoint for documents visited from a Vespa installation
diff --git a/vespaclient-java/src/main/sh/vespa-visit-target.sh b/vespaclient-java/src/main/sh/vespa-visit-target.sh
index 416f3feac8c..906011a373a 100755
--- a/vespaclient-java/src/main/sh/vespa-visit-target.sh
+++ b/vespaclient-java/src/main/sh/vespa-visit-target.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/vespaclient-java/src/main/sh/vespa-visit.1 b/vespaclient-java/src/main/sh/vespa-visit.1
index 5ed40b1a410..cb6471c85a9 100644
--- a/vespaclient-java/src/main/sh/vespa-visit.1
+++ b/vespaclient-java/src/main/sh/vespa-visit.1
@@ -1,4 +1,4 @@
-.\" Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+.\" Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
.TH VESPA-VISIT 1 2008-03-07 "Vespa" "Vespa Documentation"
.SH NAME
vespa-visit \- Visit documents from a Vespa installation
diff --git a/vespaclient-java/src/main/sh/vespa-visit.sh b/vespaclient-java/src/main/sh/vespa-visit.sh
index e4fec2857fe..06c79ee8127 100755
--- a/vespaclient-java/src/main/sh/vespa-visit.sh
+++ b/vespaclient-java/src/main/sh/vespa-visit.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/vespaclient-java/src/test/files/myfeed.xml b/vespaclient-java/src/test/files/myfeed.xml
index 7011089f340..9799941624f 100644
--- a/vespaclient-java/src/test/files/myfeed.xml
+++ b/vespaclient-java/src/test/files/myfeed.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<vespafeed>
<document documentid="id:test:news::foo" documenttype="news"/>
<update documentid="id:test:news::foo" documenttype="news"/>
diff --git a/vespaclient-java/src/test/java/com/yahoo/vespafeeder/BenchmarkProgressPrinterTest.java b/vespaclient-java/src/test/java/com/yahoo/vespafeeder/BenchmarkProgressPrinterTest.java
index 5545ffb7bd7..5edc9429c74 100644
--- a/vespaclient-java/src/test/java/com/yahoo/vespafeeder/BenchmarkProgressPrinterTest.java
+++ b/vespaclient-java/src/test/java/com/yahoo/vespafeeder/BenchmarkProgressPrinterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespafeeder;
import com.yahoo.clientmetrics.RouteMetricSet;
diff --git a/vespaclient-java/src/test/java/com/yahoo/vespafeeder/ProgressPrinterTest.java b/vespaclient-java/src/test/java/com/yahoo/vespafeeder/ProgressPrinterTest.java
index 29154b0892a..f1e81fdd3c6 100644
--- a/vespaclient-java/src/test/java/com/yahoo/vespafeeder/ProgressPrinterTest.java
+++ b/vespaclient-java/src/test/java/com/yahoo/vespafeeder/ProgressPrinterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespafeeder;
import com.yahoo.clientmetrics.RouteMetricSet;
diff --git a/vespaclient-java/src/test/java/com/yahoo/vespafeeder/VespaFeederTestCase.java b/vespaclient-java/src/test/java/com/yahoo/vespafeeder/VespaFeederTestCase.java
index 44083ab74a9..642805f9927 100644
--- a/vespaclient-java/src/test/java/com/yahoo/vespafeeder/VespaFeederTestCase.java
+++ b/vespaclient-java/src/test/java/com/yahoo/vespafeeder/VespaFeederTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespafeeder;
import java.io.BufferedInputStream;
diff --git a/vespaclient-java/src/test/java/com/yahoo/vespaget/CommandLineOptionsTest.java b/vespaclient-java/src/test/java/com/yahoo/vespaget/CommandLineOptionsTest.java
index 20d12d3f55f..b7fd1f535f0 100644
--- a/vespaclient-java/src/test/java/com/yahoo/vespaget/CommandLineOptionsTest.java
+++ b/vespaclient-java/src/test/java/com/yahoo/vespaget/CommandLineOptionsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaget;
import com.yahoo.document.fieldset.AllFields;
diff --git a/vespaclient-java/src/test/java/com/yahoo/vespaget/DocumentRetrieverTest.java b/vespaclient-java/src/test/java/com/yahoo/vespaget/DocumentRetrieverTest.java
index 8820658fa02..b0207c7620b 100644
--- a/vespaclient-java/src/test/java/com/yahoo/vespaget/DocumentRetrieverTest.java
+++ b/vespaclient-java/src/test/java/com/yahoo/vespaget/DocumentRetrieverTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespaget;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/vespaclient-java/src/test/java/com/yahoo/vespastat/BucketStatsPrinterTest.java b/vespaclient-java/src/test/java/com/yahoo/vespastat/BucketStatsPrinterTest.java
index fb5fb3accc9..8120e2f1d77 100644
--- a/vespaclient-java/src/test/java/com/yahoo/vespastat/BucketStatsPrinterTest.java
+++ b/vespaclient-java/src/test/java/com/yahoo/vespastat/BucketStatsPrinterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespastat;
import com.yahoo.document.BucketId;
diff --git a/vespaclient-java/src/test/java/com/yahoo/vespastat/BucketStatsRetrieverTest.java b/vespaclient-java/src/test/java/com/yahoo/vespastat/BucketStatsRetrieverTest.java
index 7035c54c906..39f8968d209 100644
--- a/vespaclient-java/src/test/java/com/yahoo/vespastat/BucketStatsRetrieverTest.java
+++ b/vespaclient-java/src/test/java/com/yahoo/vespastat/BucketStatsRetrieverTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespastat;
import com.yahoo.document.BucketId;
diff --git a/vespaclient-java/src/test/java/com/yahoo/vespastat/CommandLineOptionsTest.java b/vespaclient-java/src/test/java/com/yahoo/vespastat/CommandLineOptionsTest.java
index 857e6d934fd..4bfe9b68b65 100644
--- a/vespaclient-java/src/test/java/com/yahoo/vespastat/CommandLineOptionsTest.java
+++ b/vespaclient-java/src/test/java/com/yahoo/vespastat/CommandLineOptionsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespastat;
import org.junit.Test;
diff --git a/vespaclient-java/src/test/java/com/yahoo/vespavisit/StdOutVisitorHandlerTest.java b/vespaclient-java/src/test/java/com/yahoo/vespavisit/StdOutVisitorHandlerTest.java
index 7c68b7c4767..854d7ae9ad3 100644
--- a/vespaclient-java/src/test/java/com/yahoo/vespavisit/StdOutVisitorHandlerTest.java
+++ b/vespaclient-java/src/test/java/com/yahoo/vespavisit/StdOutVisitorHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespavisit;
import com.yahoo.documentapi.VisitorDataHandler;
diff --git a/vespaclient-java/src/test/java/com/yahoo/vespavisit/VdsVisitTargetTestCase.java b/vespaclient-java/src/test/java/com/yahoo/vespavisit/VdsVisitTargetTestCase.java
index fc52dba547f..42526a38df5 100644
--- a/vespaclient-java/src/test/java/com/yahoo/vespavisit/VdsVisitTargetTestCase.java
+++ b/vespaclient-java/src/test/java/com/yahoo/vespavisit/VdsVisitTargetTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespavisit;
import org.junit.Test;
diff --git a/vespaclient-java/src/test/java/com/yahoo/vespavisit/VdsVisitTestCase.java b/vespaclient-java/src/test/java/com/yahoo/vespavisit/VdsVisitTestCase.java
index f4d58a671f1..55ac7761da3 100644
--- a/vespaclient-java/src/test/java/com/yahoo/vespavisit/VdsVisitTestCase.java
+++ b/vespaclient-java/src/test/java/com/yahoo/vespavisit/VdsVisitTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespavisit;
import com.yahoo.document.fieldset.DocIdOnly;
diff --git a/vespaclient/CMakeLists.txt b/vespaclient/CMakeLists.txt
index b0f4b2190f9..2a43ea804a3 100644
--- a/vespaclient/CMakeLists.txt
+++ b/vespaclient/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
vespadefaults
diff --git a/vespaclient/bin/vdsgetsystemstate.sh b/vespaclient/bin/vdsgetsystemstate.sh
index 16d2935e414..ffdcbbc8ec5 100755
--- a/vespaclient/bin/vdsgetsystemstate.sh
+++ b/vespaclient/bin/vdsgetsystemstate.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
echo "WARNING: This binary has been renamed from vdsgetsystemstate to "
echo " vdsgetclusterstate. Currently, this script calls the other. "
diff --git a/vespaclient/man/vespastat.1 b/vespaclient/man/vespastat.1
index 40f0687137c..73c54b4d252 100644
--- a/vespaclient/man/vespastat.1
+++ b/vespaclient/man/vespastat.1
@@ -1,4 +1,4 @@
-.\" Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+.\" Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
.TH VESPASTAT 1 2008-08-29 "Vespa" "Vespa Documentation"
.SH NAME
vespastat \- Shows status of a given document in Vespa
diff --git a/vespaclient/src/perl/bin/GetClusterState.pl b/vespaclient/src/perl/bin/GetClusterState.pl
index 385ae6cca89..c462eb77ade 100755
--- a/vespaclient/src/perl/bin/GetClusterState.pl
+++ b/vespaclient/src/perl/bin/GetClusterState.pl
@@ -1,5 +1,5 @@
#!/usr/bin/env perl
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN perl environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/vespaclient/src/perl/bin/GetNodeState.pl b/vespaclient/src/perl/bin/GetNodeState.pl
index 2bedf6b7fc2..03947e22199 100755
--- a/vespaclient/src/perl/bin/GetNodeState.pl
+++ b/vespaclient/src/perl/bin/GetNodeState.pl
@@ -1,5 +1,5 @@
#!/usr/bin/env perl
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN perl environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/vespaclient/src/perl/bin/SetNodeState.pl b/vespaclient/src/perl/bin/SetNodeState.pl
index 880809b3c23..4375aa96112 100755
--- a/vespaclient/src/perl/bin/SetNodeState.pl
+++ b/vespaclient/src/perl/bin/SetNodeState.pl
@@ -1,5 +1,5 @@
#!/usr/bin/env perl
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN perl environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/vespaclient/src/perl/lib/Yahoo/Vespa/ArgParser.pm b/vespaclient/src/perl/lib/Yahoo/Vespa/ArgParser.pm
index 3b53ca93430..5abcd0b1fbb 100644
--- a/vespaclient/src/perl/lib/Yahoo/Vespa/ArgParser.pm
+++ b/vespaclient/src/perl/lib/Yahoo/Vespa/ArgParser.pm
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# Argument parser.
#
diff --git a/vespaclient/src/perl/lib/Yahoo/Vespa/Bin/GetClusterState.pm b/vespaclient/src/perl/lib/Yahoo/Vespa/Bin/GetClusterState.pm
index 0351f3a8022..afb36a418ae 100644
--- a/vespaclient/src/perl/lib/Yahoo/Vespa/Bin/GetClusterState.pm
+++ b/vespaclient/src/perl/lib/Yahoo/Vespa/Bin/GetClusterState.pm
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package Yahoo::Vespa::Bin::GetClusterState;
diff --git a/vespaclient/src/perl/lib/Yahoo/Vespa/Bin/GetNodeState.pm b/vespaclient/src/perl/lib/Yahoo/Vespa/Bin/GetNodeState.pm
index de75252276d..35b3f49649e 100644
--- a/vespaclient/src/perl/lib/Yahoo/Vespa/Bin/GetNodeState.pm
+++ b/vespaclient/src/perl/lib/Yahoo/Vespa/Bin/GetNodeState.pm
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package Yahoo::Vespa::Bin::GetNodeState;
diff --git a/vespaclient/src/perl/lib/Yahoo/Vespa/Bin/SetNodeState.pm b/vespaclient/src/perl/lib/Yahoo/Vespa/Bin/SetNodeState.pm
index ffa70890934..b1daebff03c 100644
--- a/vespaclient/src/perl/lib/Yahoo/Vespa/Bin/SetNodeState.pm
+++ b/vespaclient/src/perl/lib/Yahoo/Vespa/Bin/SetNodeState.pm
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package Yahoo::Vespa::Bin::SetNodeState;
diff --git a/vespaclient/src/perl/lib/Yahoo/Vespa/ClusterController.pm b/vespaclient/src/perl/lib/Yahoo/Vespa/ClusterController.pm
index 7b9cb7ee554..9b594d780fe 100644
--- a/vespaclient/src/perl/lib/Yahoo/Vespa/ClusterController.pm
+++ b/vespaclient/src/perl/lib/Yahoo/Vespa/ClusterController.pm
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# Handles Rest API requests to State Rest API in cluster controller, making
# wanted data programmatically available.
diff --git a/vespaclient/src/perl/lib/Yahoo/Vespa/ClusterState.pm b/vespaclient/src/perl/lib/Yahoo/Vespa/ClusterState.pm
index c59caf2db98..3c1b9acf4d1 100644
--- a/vespaclient/src/perl/lib/Yahoo/Vespa/ClusterState.pm
+++ b/vespaclient/src/perl/lib/Yahoo/Vespa/ClusterState.pm
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# Defines structs to represent a cluster state
#
diff --git a/vespaclient/src/perl/lib/Yahoo/Vespa/ConsoleOutput.pm b/vespaclient/src/perl/lib/Yahoo/Vespa/ConsoleOutput.pm
index 06747e0797d..60db964e7f7 100644
--- a/vespaclient/src/perl/lib/Yahoo/Vespa/ConsoleOutput.pm
+++ b/vespaclient/src/perl/lib/Yahoo/Vespa/ConsoleOutput.pm
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# Output handler
#
diff --git a/vespaclient/src/perl/lib/Yahoo/Vespa/ContentNodeSelection.pm b/vespaclient/src/perl/lib/Yahoo/Vespa/ContentNodeSelection.pm
index 13d8d8ea5f9..0886cb50da0 100644
--- a/vespaclient/src/perl/lib/Yahoo/Vespa/ContentNodeSelection.pm
+++ b/vespaclient/src/perl/lib/Yahoo/Vespa/ContentNodeSelection.pm
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# This module implements a way to select a subset of nodes from a Vespa
# application.
diff --git a/vespaclient/src/perl/lib/Yahoo/Vespa/Http.pm b/vespaclient/src/perl/lib/Yahoo/Vespa/Http.pm
index d907e89fa54..6b5e5380540 100644
--- a/vespaclient/src/perl/lib/Yahoo/Vespa/Http.pm
+++ b/vespaclient/src/perl/lib/Yahoo/Vespa/Http.pm
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# Simple HTTP wrapper library
#
diff --git a/vespaclient/src/perl/lib/Yahoo/Vespa/Json.pm b/vespaclient/src/perl/lib/Yahoo/Vespa/Json.pm
index be6b7b108da..d811c24ed7b 100644
--- a/vespaclient/src/perl/lib/Yahoo/Vespa/Json.pm
+++ b/vespaclient/src/perl/lib/Yahoo/Vespa/Json.pm
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# Minimal JSON wrapper.
#
diff --git a/vespaclient/src/perl/lib/Yahoo/Vespa/Utils.pm b/vespaclient/src/perl/lib/Yahoo/Vespa/Utils.pm
index 7da65a568b1..609ec97f385 100644
--- a/vespaclient/src/perl/lib/Yahoo/Vespa/Utils.pm
+++ b/vespaclient/src/perl/lib/Yahoo/Vespa/Utils.pm
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# Some simple utilities to allow unit tests to mock behavior.
#
diff --git a/vespaclient/src/perl/lib/Yahoo/Vespa/VespaModel.pm b/vespaclient/src/perl/lib/Yahoo/Vespa/VespaModel.pm
index 18af0bbdecd..844ab6653b0 100644
--- a/vespaclient/src/perl/lib/Yahoo/Vespa/VespaModel.pm
+++ b/vespaclient/src/perl/lib/Yahoo/Vespa/VespaModel.pm
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# Vespa model
#
diff --git a/vespaclient/src/perl/test/Generic/UseTest.pl b/vespaclient/src/perl/test/Generic/UseTest.pl
index 43036dd121a..3b56873c775 100644
--- a/vespaclient/src/perl/test/Generic/UseTest.pl
+++ b/vespaclient/src/perl/test/Generic/UseTest.pl
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# That that all perl files use strict and warnings
#
diff --git a/vespaclient/src/perl/test/TestUtils/OutputCapturer.pm b/vespaclient/src/perl/test/TestUtils/OutputCapturer.pm
index 2d8e092a468..b6c67c81ed7 100644
--- a/vespaclient/src/perl/test/TestUtils/OutputCapturer.pm
+++ b/vespaclient/src/perl/test/TestUtils/OutputCapturer.pm
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package TestUtils::OutputCapturer;
diff --git a/vespaclient/src/perl/test/TestUtils/VespaTest.pm b/vespaclient/src/perl/test/TestUtils/VespaTest.pm
index 68b822dceb1..92a3cd0b1e0 100644
--- a/vespaclient/src/perl/test/TestUtils/VespaTest.pm
+++ b/vespaclient/src/perl/test/TestUtils/VespaTest.pm
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package TestUtils::VespaTest;
diff --git a/vespaclient/src/perl/test/Yahoo/Vespa/ArgParserTest.pl b/vespaclient/src/perl/test/Yahoo/Vespa/ArgParserTest.pl
index 55f3acd8631..870f31c1dfa 100644
--- a/vespaclient/src/perl/test/Yahoo/Vespa/ArgParserTest.pl
+++ b/vespaclient/src/perl/test/Yahoo/Vespa/ArgParserTest.pl
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
use Test::More;
diff --git a/vespaclient/src/perl/test/Yahoo/Vespa/Bin/GetClusterStateTest.pl b/vespaclient/src/perl/test/Yahoo/Vespa/Bin/GetClusterStateTest.pl
index 6c970433896..6e2ec20c712 100644
--- a/vespaclient/src/perl/test/Yahoo/Vespa/Bin/GetClusterStateTest.pl
+++ b/vespaclient/src/perl/test/Yahoo/Vespa/Bin/GetClusterStateTest.pl
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
use Test::More;
use strict;
diff --git a/vespaclient/src/perl/test/Yahoo/Vespa/Bin/GetNodeStateTest.pl b/vespaclient/src/perl/test/Yahoo/Vespa/Bin/GetNodeStateTest.pl
index 8834e530693..626be8d37e7 100644
--- a/vespaclient/src/perl/test/Yahoo/Vespa/Bin/GetNodeStateTest.pl
+++ b/vespaclient/src/perl/test/Yahoo/Vespa/Bin/GetNodeStateTest.pl
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
use Test::More;
use strict;
diff --git a/vespaclient/src/perl/test/Yahoo/Vespa/Bin/SetNodeStateTest.pl b/vespaclient/src/perl/test/Yahoo/Vespa/Bin/SetNodeStateTest.pl
index 97e335e1313..7546c8f4ef6 100644
--- a/vespaclient/src/perl/test/Yahoo/Vespa/Bin/SetNodeStateTest.pl
+++ b/vespaclient/src/perl/test/Yahoo/Vespa/Bin/SetNodeStateTest.pl
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
use Test::More;
use strict;
diff --git a/vespaclient/src/perl/test/Yahoo/Vespa/ClusterControllerTest.pl b/vespaclient/src/perl/test/Yahoo/Vespa/ClusterControllerTest.pl
index 97efb986754..a833fad4087 100644
--- a/vespaclient/src/perl/test/Yahoo/Vespa/ClusterControllerTest.pl
+++ b/vespaclient/src/perl/test/Yahoo/Vespa/ClusterControllerTest.pl
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
use Test::More;
use Data::Dumper;
diff --git a/vespaclient/src/perl/test/Yahoo/Vespa/ConsoleOutputTest.pl b/vespaclient/src/perl/test/Yahoo/Vespa/ConsoleOutputTest.pl
index 925e0136b9e..2089bf80d8e 100644
--- a/vespaclient/src/perl/test/Yahoo/Vespa/ConsoleOutputTest.pl
+++ b/vespaclient/src/perl/test/Yahoo/Vespa/ConsoleOutputTest.pl
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
use Test::More;
diff --git a/vespaclient/src/perl/test/Yahoo/Vespa/HttpTest.pl b/vespaclient/src/perl/test/Yahoo/Vespa/HttpTest.pl
index 1f3d16559b6..1e3e97bb829 100644
--- a/vespaclient/src/perl/test/Yahoo/Vespa/HttpTest.pl
+++ b/vespaclient/src/perl/test/Yahoo/Vespa/HttpTest.pl
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# Tests of the Http wrapper library..
#
diff --git a/vespaclient/src/perl/test/Yahoo/Vespa/JsonTest.pl b/vespaclient/src/perl/test/Yahoo/Vespa/JsonTest.pl
index 687fd6dc56d..b0eb7962b33 100644
--- a/vespaclient/src/perl/test/Yahoo/Vespa/JsonTest.pl
+++ b/vespaclient/src/perl/test/Yahoo/Vespa/JsonTest.pl
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# Tests of the Json wrapper library..
#
diff --git a/vespaclient/src/perl/test/Yahoo/Vespa/Mocks/ClusterControllerMock.pm b/vespaclient/src/perl/test/Yahoo/Vespa/Mocks/ClusterControllerMock.pm
index fc46c7471a6..cb642dbc629 100644
--- a/vespaclient/src/perl/test/Yahoo/Vespa/Mocks/ClusterControllerMock.pm
+++ b/vespaclient/src/perl/test/Yahoo/Vespa/Mocks/ClusterControllerMock.pm
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package Yahoo::Vespa::Mocks::ClusterControllerMock;
use strict;
diff --git a/vespaclient/src/perl/test/Yahoo/Vespa/Mocks/HttpClientMock.pm b/vespaclient/src/perl/test/Yahoo/Vespa/Mocks/HttpClientMock.pm
index d2eb5c22180..2840da9899a 100644
--- a/vespaclient/src/perl/test/Yahoo/Vespa/Mocks/HttpClientMock.pm
+++ b/vespaclient/src/perl/test/Yahoo/Vespa/Mocks/HttpClientMock.pm
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# Switched the backend implementation of the Vespa::Http library, such that
# requests are sent here rather than onto the network. Register handlers here
diff --git a/vespaclient/src/perl/test/Yahoo/Vespa/Mocks/HttpServerMock.pm b/vespaclient/src/perl/test/Yahoo/Vespa/Mocks/HttpServerMock.pm
index 1e71af32d1d..00a6f1526b2 100644
--- a/vespaclient/src/perl/test/Yahoo/Vespa/Mocks/HttpServerMock.pm
+++ b/vespaclient/src/perl/test/Yahoo/Vespa/Mocks/HttpServerMock.pm
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# A mock of an HTTP server, such that HTTP client library can be tested.
#
diff --git a/vespaclient/src/perl/test/Yahoo/Vespa/Mocks/VespaModelMock.pm b/vespaclient/src/perl/test/Yahoo/Vespa/Mocks/VespaModelMock.pm
index 6bdf2e33456..63ff9f767d1 100644
--- a/vespaclient/src/perl/test/Yahoo/Vespa/Mocks/VespaModelMock.pm
+++ b/vespaclient/src/perl/test/Yahoo/Vespa/Mocks/VespaModelMock.pm
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package Yahoo::Vespa::Mocks::VespaModelMock;
diff --git a/vespaclient/src/perl/test/Yahoo/Vespa/VespaModelTest.pl b/vespaclient/src/perl/test/Yahoo/Vespa/VespaModelTest.pl
index 465979c41f1..d1c1a1bb0d9 100644
--- a/vespaclient/src/perl/test/Yahoo/Vespa/VespaModelTest.pl
+++ b/vespaclient/src/perl/test/Yahoo/Vespa/VespaModelTest.pl
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
use Test::More;
use Yahoo::Vespa::Mocks::VespaModelMock;
diff --git a/vespaclient/src/perl/test/testrunner.pl b/vespaclient/src/perl/test/testrunner.pl
index 8cde98ef3d3..8dca35ad91d 100644
--- a/vespaclient/src/perl/test/testrunner.pl
+++ b/vespaclient/src/perl/test/testrunner.pl
@@ -1,5 +1,5 @@
#!/usr/bin/perl -w
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#
# Searches around in test dir to find test binaries and run them. Sadly these
diff --git a/vespaclient/src/vespa/vespaclient/clusterlist/CMakeLists.txt b/vespaclient/src/vespa/vespaclient/clusterlist/CMakeLists.txt
index 06b6b01d9d7..0d6891f518d 100644
--- a/vespaclient/src/vespa/vespaclient/clusterlist/CMakeLists.txt
+++ b/vespaclient/src/vespa/vespaclient/clusterlist/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespaclient_clusterlist STATIC
SOURCES
clusterlist.cpp
diff --git a/vespaclient/src/vespa/vespaclient/clusterlist/clusterlist.cpp b/vespaclient/src/vespa/vespaclient/clusterlist/clusterlist.cpp
index caede101858..de8500b3e26 100644
--- a/vespaclient/src/vespa/vespaclient/clusterlist/clusterlist.cpp
+++ b/vespaclient/src/vespa/vespaclient/clusterlist/clusterlist.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "clusterlist.h"
#include <vespa/config/config.h>
diff --git a/vespaclient/src/vespa/vespaclient/clusterlist/clusterlist.h b/vespaclient/src/vespa/vespaclient/clusterlist/clusterlist.h
index 69f4b5ce6bf..72e5aba1c61 100644
--- a/vespaclient/src/vespa/vespaclient/clusterlist/clusterlist.h
+++ b/vespaclient/src/vespa/vespaclient/clusterlist/clusterlist.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/config-cluster-list.h>
diff --git a/vespaclient/src/vespa/vespaclient/vdsstates/CMakeLists.txt b/vespaclient/src/vespa/vespaclient/vdsstates/CMakeLists.txt
index f99344065d8..01367a788ae 100644
--- a/vespaclient/src/vespa/vespaclient/vdsstates/CMakeLists.txt
+++ b/vespaclient/src/vespa/vespaclient/vdsstates/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespaclient_vdsgetnodestate_app
SOURCES
statesapp.cpp
diff --git a/vespaclient/src/vespa/vespaclient/vdsstates/statesapp.cpp b/vespaclient/src/vespa/vespaclient/vdsstates/statesapp.cpp
index 833a4eb5468..ad0a42e0c4e 100644
--- a/vespaclient/src/vespa/vespaclient/vdsstates/statesapp.cpp
+++ b/vespaclient/src/vespa/vespaclient/vdsstates/statesapp.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/defaults.h>
#include <vespa/slobrok/sbmirror.h>
diff --git a/vespaclient/src/vespa/vespaclient/vesparoute/CMakeLists.txt b/vespaclient/src/vespa/vespaclient/vesparoute/CMakeLists.txt
index dca2445c935..3b342387d01 100644
--- a/vespaclient/src/vespa/vespaclient/vesparoute/CMakeLists.txt
+++ b/vespaclient/src/vespa/vespaclient/vesparoute/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespaclient_vesparoute_app
SOURCES
application.cpp
diff --git a/vespaclient/src/vespa/vespaclient/vesparoute/application.cpp b/vespaclient/src/vespa/vespaclient/vesparoute/application.cpp
index 468c6b859ed..aaa588c0353 100644
--- a/vespaclient/src/vespa/vespaclient/vesparoute/application.cpp
+++ b/vespaclient/src/vespa/vespaclient/vesparoute/application.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "application.h"
diff --git a/vespaclient/src/vespa/vespaclient/vesparoute/application.h b/vespaclient/src/vespa/vespaclient/vesparoute/application.h
index 89f025472f5..93b287b4559 100644
--- a/vespaclient/src/vespa/vespaclient/vesparoute/application.h
+++ b/vespaclient/src/vespa/vespaclient/vesparoute/application.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/fastos/app.h>
diff --git a/vespaclient/src/vespa/vespaclient/vesparoute/main.cpp b/vespaclient/src/vespa/vespaclient/vesparoute/main.cpp
index 45ab3b7237f..bc55cc18366 100644
--- a/vespaclient/src/vespa/vespaclient/vesparoute/main.cpp
+++ b/vespaclient/src/vespa/vespaclient/vesparoute/main.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "application.h"
#include <vespa/vespalib/util/signalhandler.h>
diff --git a/vespaclient/src/vespa/vespaclient/vesparoute/mynetwork.cpp b/vespaclient/src/vespa/vespaclient/vesparoute/mynetwork.cpp
index cc0d37a9d34..c06f6cf8ce0 100644
--- a/vespaclient/src/vespa/vespaclient/vesparoute/mynetwork.cpp
+++ b/vespaclient/src/vespa/vespaclient/vesparoute/mynetwork.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mynetwork.h"
#include <vespa/messagebus/sendproxy.h>
diff --git a/vespaclient/src/vespa/vespaclient/vesparoute/mynetwork.h b/vespaclient/src/vespa/vespaclient/vesparoute/mynetwork.h
index 846df394db0..85c481995cd 100644
--- a/vespaclient/src/vespa/vespaclient/vesparoute/mynetwork.h
+++ b/vespaclient/src/vespa/vespaclient/vesparoute/mynetwork.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/messagebus/network/rpcnetwork.h>
diff --git a/vespaclient/src/vespa/vespaclient/vesparoute/params.cpp b/vespaclient/src/vespa/vespaclient/vesparoute/params.cpp
index ded7013ccc9..5c02d4f56a8 100644
--- a/vespaclient/src/vespa/vespaclient/vesparoute/params.cpp
+++ b/vespaclient/src/vespa/vespaclient/vesparoute/params.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "params.h"
diff --git a/vespaclient/src/vespa/vespaclient/vesparoute/params.h b/vespaclient/src/vespa/vespaclient/vesparoute/params.h
index b16ac40212b..0251e6f84fc 100644
--- a/vespaclient/src/vespa/vespaclient/vesparoute/params.h
+++ b/vespaclient/src/vespa/vespaclient/vesparoute/params.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <string>
diff --git a/vespajlib/CMakeLists.txt b/vespajlib/CMakeLists.txt
index 7235535ace8..a22e8c636e1 100644
--- a/vespajlib/CMakeLists.txt
+++ b/vespajlib/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_java_artifact(vespajlib)
diff --git a/vespajlib/abi-spec.json b/vespajlib/abi-spec.json
index 199291ac276..c426195bc37 100644
--- a/vespajlib/abi-spec.json
+++ b/vespajlib/abi-spec.json
@@ -658,6 +658,7 @@
"public static void logAndDie(java.lang.String, boolean)",
"public static void logAndDie(java.lang.String, java.lang.Throwable)",
"public static void logAndDie(java.lang.String, java.lang.Throwable, boolean)",
+ "public static void dumpHeap(java.lang.String, boolean)",
"public static void dumpThreads()"
],
"fields": []
@@ -1179,6 +1180,7 @@
"public com.yahoo.tensor.Tensor matmul(com.yahoo.tensor.Tensor, java.lang.String)",
"public com.yahoo.tensor.Tensor softmax(java.lang.String)",
"public com.yahoo.tensor.Tensor xwPlusB(com.yahoo.tensor.Tensor, com.yahoo.tensor.Tensor, java.lang.String)",
+ "public com.yahoo.tensor.Tensor expand(java.lang.String)",
"public com.yahoo.tensor.Tensor argmax(java.lang.String)",
"public com.yahoo.tensor.Tensor argmin(java.lang.String)",
"public static com.yahoo.tensor.Tensor diag(com.yahoo.tensor.TensorType)",
@@ -1202,6 +1204,7 @@
"public com.yahoo.tensor.Tensor notEqual(com.yahoo.tensor.Tensor)",
"public com.yahoo.tensor.Tensor approxEqual(com.yahoo.tensor.Tensor)",
"public com.yahoo.tensor.Tensor bit(com.yahoo.tensor.Tensor)",
+ "public com.yahoo.tensor.Tensor hamming(com.yahoo.tensor.Tensor)",
"public com.yahoo.tensor.Tensor avg()",
"public com.yahoo.tensor.Tensor avg(java.lang.String)",
"public com.yahoo.tensor.Tensor avg(java.util.List)",
@@ -1697,6 +1700,21 @@
],
"fields": []
},
+ "com.yahoo.tensor.functions.Expand": {
+ "superClass": "com.yahoo.tensor.functions.CompositeTensorFunction",
+ "interfaces": [],
+ "attributes": [
+ "public"
+ ],
+ "methods": [
+ "public void <init>(com.yahoo.tensor.functions.TensorFunction, java.lang.String)",
+ "public java.util.List arguments()",
+ "public com.yahoo.tensor.functions.TensorFunction withArguments(java.util.List)",
+ "public com.yahoo.tensor.functions.PrimitiveTensorFunction toPrimitive()",
+ "public java.lang.String toString(com.yahoo.tensor.functions.ToStringContext)"
+ ],
+ "fields": []
+ },
"com.yahoo.tensor.functions.Generate": {
"superClass": "com.yahoo.tensor.functions.PrimitiveTensorFunction",
"interfaces": [],
@@ -2051,6 +2069,22 @@
],
"fields": []
},
+ "com.yahoo.tensor.functions.ScalarFunctions$Constant": {
+ "superClass": "java.lang.Object",
+ "interfaces": [
+ "java.util.function.Function"
+ ],
+ "attributes": [
+ "public"
+ ],
+ "methods": [
+ "public void <init>(double)",
+ "public java.lang.Double apply(java.util.List)",
+ "public java.lang.String toString()",
+ "public bridge synthetic java.lang.Object apply(java.lang.Object)"
+ ],
+ "fields": []
+ },
"com.yahoo.tensor.functions.ScalarFunctions$Cos": {
"superClass": "java.lang.Object",
"interfaces": [
@@ -2188,6 +2222,22 @@
],
"fields": []
},
+ "com.yahoo.tensor.functions.ScalarFunctions$Hamming": {
+ "superClass": "java.lang.Object",
+ "interfaces": [
+ "java.util.function.DoubleBinaryOperator"
+ ],
+ "attributes": [
+ "public"
+ ],
+ "methods": [
+ "public void <init>()",
+ "public static double hamming(double, double)",
+ "public double applyAsDouble(double, double)",
+ "public java.lang.String toString()"
+ ],
+ "fields": []
+ },
"com.yahoo.tensor.functions.ScalarFunctions$LeakyRelu": {
"superClass": "java.lang.Object",
"interfaces": [
@@ -2556,6 +2606,7 @@
"public static java.util.function.DoubleBinaryOperator pow()",
"public static java.util.function.DoubleBinaryOperator squareddifference()",
"public static java.util.function.DoubleBinaryOperator subtract()",
+ "public static java.util.function.DoubleBinaryOperator hamming()",
"public static java.util.function.DoubleUnaryOperator abs()",
"public static java.util.function.DoubleUnaryOperator acos()",
"public static java.util.function.DoubleUnaryOperator asin()",
@@ -2584,7 +2635,8 @@
"public static java.util.function.DoubleUnaryOperator selu(double, double)",
"public static java.util.function.Function random()",
"public static java.util.function.Function equal(java.util.List)",
- "public static java.util.function.Function sum(java.util.List)"
+ "public static java.util.function.Function sum(java.util.List)",
+ "public static java.util.function.Function constant(double)"
],
"fields": []
},
diff --git a/vespajlib/developernotes/CharClassStats.java b/vespajlib/developernotes/CharClassStats.java
index 87aa5590d0d..1a75607a479 100644
--- a/vespajlib/developernotes/CharClassStats.java
+++ b/vespajlib/developernotes/CharClassStats.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import java.util.*;
diff --git a/vespajlib/developernotes/CopyOnWriteHashMapBenchmark.java b/vespajlib/developernotes/CopyOnWriteHashMapBenchmark.java
index 7393eb04c7b..81a78510eea 100644
--- a/vespajlib/developernotes/CopyOnWriteHashMapBenchmark.java
+++ b/vespajlib/developernotes/CopyOnWriteHashMapBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
import java.util.ArrayList;
diff --git a/vespajlib/developernotes/ThreadLocalDirectoryBenchmark.java b/vespajlib/developernotes/ThreadLocalDirectoryBenchmark.java
index f7f4191667d..1e3a12aa574 100644
--- a/vespajlib/developernotes/ThreadLocalDirectoryBenchmark.java
+++ b/vespajlib/developernotes/ThreadLocalDirectoryBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
diff --git a/vespajlib/developernotes/Utf8MicroBencmark.java b/vespajlib/developernotes/Utf8MicroBencmark.java
index 22f7ae7ed3d..ac1e26732cf 100644
--- a/vespajlib/developernotes/Utf8MicroBencmark.java
+++ b/vespajlib/developernotes/Utf8MicroBencmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
/**
diff --git a/vespajlib/developernotes/XMLMicroBenchmark.java b/vespajlib/developernotes/XMLMicroBenchmark.java
index f5f92815d65..42f42853b44 100644
--- a/vespajlib/developernotes/XMLMicroBenchmark.java
+++ b/vespajlib/developernotes/XMLMicroBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
/**
diff --git a/vespajlib/developernotes/XMLWriterMicroBenchmark.java b/vespajlib/developernotes/XMLWriterMicroBenchmark.java
index a6db2959b4c..0196f6fb595 100644
--- a/vespajlib/developernotes/XMLWriterMicroBenchmark.java
+++ b/vespajlib/developernotes/XMLWriterMicroBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import com.yahoo.io.ByteWriter;
diff --git a/vespajlib/pom.xml b/vespajlib/pom.xml
index af3db750a71..7b054ad74db 100644
--- a/vespajlib/pom.xml
+++ b/vespajlib/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -51,10 +51,32 @@
</dependency>
<dependency>
<groupId>com.yahoo.vespa</groupId>
+ <artifactId>security-utils</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.yahoo.vespa</groupId>
<artifactId>yolean</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents.client5</groupId>
+ <artifactId>httpclient5</artifactId>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
<!-- test scope -->
<dependency>
@@ -109,6 +131,7 @@
<compilerArgs>
<arg>-Xlint:all</arg>
<arg>-Xlint:-try</arg>
+ <arg>-Xlint:-serial</arg>
<arg>-Werror</arg>
</compilerArgs>
</configuration>
diff --git a/http-utils/src/main/java/ai/vespa/util/http/hc4/VespaHttpClientBuilder.java b/vespajlib/src/main/java/ai/vespa/util/http/hc4/VespaHttpClientBuilder.java
index 53bf7b866af..53bf7b866af 100644
--- a/http-utils/src/main/java/ai/vespa/util/http/hc4/VespaHttpClientBuilder.java
+++ b/vespajlib/src/main/java/ai/vespa/util/http/hc4/VespaHttpClientBuilder.java
diff --git a/vespajlib/src/main/java/ai/vespa/util/http/hc4/package-info.java b/vespajlib/src/main/java/ai/vespa/util/http/hc4/package-info.java
new file mode 100644
index 00000000000..fce7be4f321
--- /dev/null
+++ b/vespajlib/src/main/java/ai/vespa/util/http/hc4/package-info.java
@@ -0,0 +1,5 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+@ExportPackage
+package ai.vespa.util.http.hc4;
+
+import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/http-utils/src/main/java/ai/vespa/util/http/hc4/retry/DelaySupplier.java b/vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/DelaySupplier.java
index b202966c412..b202966c412 100644
--- a/http-utils/src/main/java/ai/vespa/util/http/hc4/retry/DelaySupplier.java
+++ b/vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/DelaySupplier.java
diff --git a/http-utils/src/main/java/ai/vespa/util/http/hc4/retry/DelayedConnectionLevelRetryHandler.java b/vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/DelayedConnectionLevelRetryHandler.java
index 3ba92c08e30..3ba92c08e30 100644
--- a/http-utils/src/main/java/ai/vespa/util/http/hc4/retry/DelayedConnectionLevelRetryHandler.java
+++ b/vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/DelayedConnectionLevelRetryHandler.java
diff --git a/http-utils/src/main/java/ai/vespa/util/http/hc4/retry/DelayedResponseLevelRetryHandler.java b/vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/DelayedResponseLevelRetryHandler.java
index d4ceb44a3ab..d4ceb44a3ab 100644
--- a/http-utils/src/main/java/ai/vespa/util/http/hc4/retry/DelayedResponseLevelRetryHandler.java
+++ b/vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/DelayedResponseLevelRetryHandler.java
diff --git a/http-utils/src/main/java/ai/vespa/util/http/hc4/retry/RetryConsumer.java b/vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/RetryConsumer.java
index c168f7d50c9..c168f7d50c9 100644
--- a/http-utils/src/main/java/ai/vespa/util/http/hc4/retry/RetryConsumer.java
+++ b/vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/RetryConsumer.java
diff --git a/http-utils/src/main/java/ai/vespa/util/http/hc4/retry/RetryFailedConsumer.java b/vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/RetryFailedConsumer.java
index 801c8a5af2f..801c8a5af2f 100644
--- a/http-utils/src/main/java/ai/vespa/util/http/hc4/retry/RetryFailedConsumer.java
+++ b/vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/RetryFailedConsumer.java
diff --git a/http-utils/src/main/java/ai/vespa/util/http/hc4/retry/RetryPredicate.java b/vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/RetryPredicate.java
index 45c5ef0d623..45c5ef0d623 100644
--- a/http-utils/src/main/java/ai/vespa/util/http/hc4/retry/RetryPredicate.java
+++ b/vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/RetryPredicate.java
diff --git a/http-utils/src/main/java/ai/vespa/util/http/hc4/retry/Sleeper.java b/vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/Sleeper.java
index f593561888d..f593561888d 100644
--- a/http-utils/src/main/java/ai/vespa/util/http/hc4/retry/Sleeper.java
+++ b/vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/Sleeper.java
diff --git a/vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/package-info.java b/vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/package-info.java
new file mode 100644
index 00000000000..85e60b1a2fa
--- /dev/null
+++ b/vespajlib/src/main/java/ai/vespa/util/http/hc4/retry/package-info.java
@@ -0,0 +1,5 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+@ExportPackage
+package ai.vespa.util.http.hc4.retry;
+
+import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/http-utils/src/main/java/ai/vespa/util/http/hc5/HttpToHttpsRoutePlanner.java b/vespajlib/src/main/java/ai/vespa/util/http/hc5/HttpToHttpsRoutePlanner.java
index 92cc35fc354..962e6b32947 100644
--- a/http-utils/src/main/java/ai/vespa/util/http/hc5/HttpToHttpsRoutePlanner.java
+++ b/vespajlib/src/main/java/ai/vespa/util/http/hc5/HttpToHttpsRoutePlanner.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.util.http.hc5;
import org.apache.hc.client5.http.HttpRoute;
diff --git a/http-utils/src/main/java/ai/vespa/util/http/hc5/VespaAsyncHttpClientBuilder.java b/vespajlib/src/main/java/ai/vespa/util/http/hc5/VespaAsyncHttpClientBuilder.java
index 50af29f92aa..91810b50778 100644
--- a/http-utils/src/main/java/ai/vespa/util/http/hc5/VespaAsyncHttpClientBuilder.java
+++ b/vespajlib/src/main/java/ai/vespa/util/http/hc5/VespaAsyncHttpClientBuilder.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.util.http.hc5;
import com.yahoo.security.tls.MixedMode;
diff --git a/http-utils/src/main/java/ai/vespa/util/http/hc5/VespaHttpClientBuilder.java b/vespajlib/src/main/java/ai/vespa/util/http/hc5/VespaHttpClientBuilder.java
index e01d278ff38..52f7ad9b56b 100644
--- a/http-utils/src/main/java/ai/vespa/util/http/hc5/VespaHttpClientBuilder.java
+++ b/vespajlib/src/main/java/ai/vespa/util/http/hc5/VespaHttpClientBuilder.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.util.http.hc5;
import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
diff --git a/vespajlib/src/main/java/ai/vespa/util/http/hc5/package-info.java b/vespajlib/src/main/java/ai/vespa/util/http/hc5/package-info.java
new file mode 100644
index 00000000000..9efed72a167
--- /dev/null
+++ b/vespajlib/src/main/java/ai/vespa/util/http/hc5/package-info.java
@@ -0,0 +1,5 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+@ExportPackage
+package ai.vespa.util.http.hc5;
+
+import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/vespajlib/src/main/java/com/yahoo/api/annotations/PackageMarker.java b/vespajlib/src/main/java/com/yahoo/api/annotations/PackageMarker.java
index 3985f01c33f..c6040653726 100644
--- a/vespajlib/src/main/java/com/yahoo/api/annotations/PackageMarker.java
+++ b/vespajlib/src/main/java/com/yahoo/api/annotations/PackageMarker.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.api.annotations;
import java.lang.annotation.Retention;
diff --git a/vespajlib/src/main/java/com/yahoo/binaryprefix/BinaryPrefix.java b/vespajlib/src/main/java/com/yahoo/binaryprefix/BinaryPrefix.java
index e01b7d4e142..64121756e5c 100644
--- a/vespajlib/src/main/java/com/yahoo/binaryprefix/BinaryPrefix.java
+++ b/vespajlib/src/main/java/com/yahoo/binaryprefix/BinaryPrefix.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.binaryprefix;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/binaryprefix/BinaryScaledAmount.java b/vespajlib/src/main/java/com/yahoo/binaryprefix/BinaryScaledAmount.java
index cecc15e6ced..ec2886d32bb 100644
--- a/vespajlib/src/main/java/com/yahoo/binaryprefix/BinaryScaledAmount.java
+++ b/vespajlib/src/main/java/com/yahoo/binaryprefix/BinaryScaledAmount.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.binaryprefix;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/binaryprefix/package-info.java b/vespajlib/src/main/java/com/yahoo/binaryprefix/package-info.java
index 0cfd9606776..85ca9c04656 100644
--- a/vespajlib/src/main/java/com/yahoo/binaryprefix/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/binaryprefix/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.binaryprefix;
diff --git a/vespajlib/src/main/java/com/yahoo/collections/AbstractFilteringList.java b/vespajlib/src/main/java/com/yahoo/collections/AbstractFilteringList.java
index 2b7f4027fbc..11489288eae 100644
--- a/vespajlib/src/main/java/com/yahoo/collections/AbstractFilteringList.java
+++ b/vespajlib/src/main/java/com/yahoo/collections/AbstractFilteringList.java
@@ -13,6 +13,7 @@ import java.util.Map;
import java.util.Optional;
import java.util.Random;
import java.util.Set;
+import java.util.Spliterator;
import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.function.Predicate;
@@ -112,6 +113,11 @@ public abstract class AbstractFilteringList<Type, ListType extends AbstractFilte
return items.iterator();
}
+ @Override
+ public Spliterator<Type> spliterator() {
+ return items.spliterator();
+ }
+
/** Returns the items in this shuffled using random as source of randomness */
public final ListType shuffle(Random random) {
ArrayList<Type> shuffled = new ArrayList<>(items);
diff --git a/vespajlib/src/main/java/com/yahoo/collections/ArraySet.java b/vespajlib/src/main/java/com/yahoo/collections/ArraySet.java
index dee8417f15b..c8f685e75c2 100644
--- a/vespajlib/src/main/java/com/yahoo/collections/ArraySet.java
+++ b/vespajlib/src/main/java/com/yahoo/collections/ArraySet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import java.util.Arrays;
diff --git a/vespajlib/src/main/java/com/yahoo/collections/BobHash.java b/vespajlib/src/main/java/com/yahoo/collections/BobHash.java
index e13ee38c9f5..cb5e88b3131 100644
--- a/vespajlib/src/main/java/com/yahoo/collections/BobHash.java
+++ b/vespajlib/src/main/java/com/yahoo/collections/BobHash.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import com.yahoo.text.Utf8;
diff --git a/vespajlib/src/main/java/com/yahoo/collections/ByteArrayComparator.java b/vespajlib/src/main/java/com/yahoo/collections/ByteArrayComparator.java
index d8b964a2a3c..d184ad50da2 100644
--- a/vespajlib/src/main/java/com/yahoo/collections/ByteArrayComparator.java
+++ b/vespajlib/src/main/java/com/yahoo/collections/ByteArrayComparator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/collections/CollectionComparator.java b/vespajlib/src/main/java/com/yahoo/collections/CollectionComparator.java
index e4b3756c3ae..5754718b66e 100644
--- a/vespajlib/src/main/java/com/yahoo/collections/CollectionComparator.java
+++ b/vespajlib/src/main/java/com/yahoo/collections/CollectionComparator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import java.util.Collection;
diff --git a/vespajlib/src/main/java/com/yahoo/collections/CollectionUtil.java b/vespajlib/src/main/java/com/yahoo/collections/CollectionUtil.java
index 35af30df64b..1154df1db83 100644
--- a/vespajlib/src/main/java/com/yahoo/collections/CollectionUtil.java
+++ b/vespajlib/src/main/java/com/yahoo/collections/CollectionUtil.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import java.util.ArrayList;
diff --git a/vespajlib/src/main/java/com/yahoo/collections/Comparables.java b/vespajlib/src/main/java/com/yahoo/collections/Comparables.java
index e638b1fcd75..5952c5ec012 100644
--- a/vespajlib/src/main/java/com/yahoo/collections/Comparables.java
+++ b/vespajlib/src/main/java/com/yahoo/collections/Comparables.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
diff --git a/vespajlib/src/main/java/com/yahoo/collections/CopyOnWriteHashMap.java b/vespajlib/src/main/java/com/yahoo/collections/CopyOnWriteHashMap.java
index 857b7cc6acd..e03f30d868a 100644
--- a/vespajlib/src/main/java/com/yahoo/collections/CopyOnWriteHashMap.java
+++ b/vespajlib/src/main/java/com/yahoo/collections/CopyOnWriteHashMap.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import java.util.AbstractMap;
@@ -9,7 +9,7 @@ import java.util.Map;
import java.util.Set;
/**
- * A hashmap wrapper which defers cloning of the enclosed map until it is written.
+ * A hashmap wrapper which defers cloning of the enclosed map until it is written to.
* Use this to make clones cheap in maps which are often not further modified.
* <p>
* As with regular maps, this can only be used safely if the content of the map is immutable.
diff --git a/vespajlib/src/main/java/com/yahoo/collections/FreezableArrayList.java b/vespajlib/src/main/java/com/yahoo/collections/FreezableArrayList.java
index 9200eec8a92..1a765beaa3b 100644
--- a/vespajlib/src/main/java/com/yahoo/collections/FreezableArrayList.java
+++ b/vespajlib/src/main/java/com/yahoo/collections/FreezableArrayList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import java.util.Collection;
diff --git a/vespajlib/src/main/java/com/yahoo/collections/Hashlet.java b/vespajlib/src/main/java/com/yahoo/collections/Hashlet.java
index 322c4f01e84..ef31c38cc5a 100644
--- a/vespajlib/src/main/java/com/yahoo/collections/Hashlet.java
+++ b/vespajlib/src/main/java/com/yahoo/collections/Hashlet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
diff --git a/vespajlib/src/main/java/com/yahoo/collections/IntArrayComparator.java b/vespajlib/src/main/java/com/yahoo/collections/IntArrayComparator.java
index dec19097d3c..b4122c3a311 100644
--- a/vespajlib/src/main/java/com/yahoo/collections/IntArrayComparator.java
+++ b/vespajlib/src/main/java/com/yahoo/collections/IntArrayComparator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/collections/LazyMap.java b/vespajlib/src/main/java/com/yahoo/collections/LazyMap.java
index 6e18120d69a..d8fc77cf6a0 100644
--- a/vespajlib/src/main/java/com/yahoo/collections/LazyMap.java
+++ b/vespajlib/src/main/java/com/yahoo/collections/LazyMap.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import java.util.AbstractMap;
diff --git a/vespajlib/src/main/java/com/yahoo/collections/LazySet.java b/vespajlib/src/main/java/com/yahoo/collections/LazySet.java
index d89a61fd2c4..4daa671cea3 100644
--- a/vespajlib/src/main/java/com/yahoo/collections/LazySet.java
+++ b/vespajlib/src/main/java/com/yahoo/collections/LazySet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import java.util.AbstractSet;
diff --git a/vespajlib/src/main/java/com/yahoo/collections/ListMap.java b/vespajlib/src/main/java/com/yahoo/collections/ListMap.java
index 86ff9eacb8e..3f6321cb3d9 100644
--- a/vespajlib/src/main/java/com/yahoo/collections/ListMap.java
+++ b/vespajlib/src/main/java/com/yahoo/collections/ListMap.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import com.google.common.collect.ImmutableList;
diff --git a/vespajlib/src/main/java/com/yahoo/collections/ListenableArrayList.java b/vespajlib/src/main/java/com/yahoo/collections/ListenableArrayList.java
index 44569471049..6fbf03925cb 100644
--- a/vespajlib/src/main/java/com/yahoo/collections/ListenableArrayList.java
+++ b/vespajlib/src/main/java/com/yahoo/collections/ListenableArrayList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import java.util.ArrayList;
diff --git a/vespajlib/src/main/java/com/yahoo/collections/MD5.java b/vespajlib/src/main/java/com/yahoo/collections/MD5.java
index 7be3179356b..de50b1d7410 100644
--- a/vespajlib/src/main/java/com/yahoo/collections/MD5.java
+++ b/vespajlib/src/main/java/com/yahoo/collections/MD5.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import com.yahoo.text.Utf8;
diff --git a/vespajlib/src/main/java/com/yahoo/collections/MethodCache.java b/vespajlib/src/main/java/com/yahoo/collections/MethodCache.java
index 252199ad5c8..ef64a2e344a 100644
--- a/vespajlib/src/main/java/com/yahoo/collections/MethodCache.java
+++ b/vespajlib/src/main/java/com/yahoo/collections/MethodCache.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import com.yahoo.concurrent.CopyOnWriteHashMap;
diff --git a/vespajlib/src/main/java/com/yahoo/collections/Pair.java b/vespajlib/src/main/java/com/yahoo/collections/Pair.java
index 3c593ab0fe9..baddcedd38c 100644
--- a/vespajlib/src/main/java/com/yahoo/collections/Pair.java
+++ b/vespajlib/src/main/java/com/yahoo/collections/Pair.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import java.util.Objects;
diff --git a/vespajlib/src/main/java/com/yahoo/collections/TinyIdentitySet.java b/vespajlib/src/main/java/com/yahoo/collections/TinyIdentitySet.java
index 9779aea0e4a..831fddd7de8 100644
--- a/vespajlib/src/main/java/com/yahoo/collections/TinyIdentitySet.java
+++ b/vespajlib/src/main/java/com/yahoo/collections/TinyIdentitySet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import java.util.Arrays;
diff --git a/vespajlib/src/main/java/com/yahoo/collections/Tuple2.java b/vespajlib/src/main/java/com/yahoo/collections/Tuple2.java
index 684781a358c..c95e643a588 100644
--- a/vespajlib/src/main/java/com/yahoo/collections/Tuple2.java
+++ b/vespajlib/src/main/java/com/yahoo/collections/Tuple2.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/collections/package-info.java b/vespajlib/src/main/java/com/yahoo/collections/package-info.java
index 49ac95fbee5..03b5b9e0f8d 100644
--- a/vespajlib/src/main/java/com/yahoo/collections/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/collections/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.collections;
diff --git a/vespajlib/src/main/java/com/yahoo/compress/CompressionType.java b/vespajlib/src/main/java/com/yahoo/compress/CompressionType.java
index 36deb318ae8..50022256478 100644
--- a/vespajlib/src/main/java/com/yahoo/compress/CompressionType.java
+++ b/vespajlib/src/main/java/com/yahoo/compress/CompressionType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.compress;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/compress/Compressor.java b/vespajlib/src/main/java/com/yahoo/compress/Compressor.java
index ad51ac1ca38..846fed48755 100644
--- a/vespajlib/src/main/java/com/yahoo/compress/Compressor.java
+++ b/vespajlib/src/main/java/com/yahoo/compress/Compressor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.compress;
import net.jpountz.lz4.LZ4Compressor;
@@ -82,33 +82,45 @@ public class Compressor {
* @throws IllegalArgumentException if the compression type is not supported
*/
public Compression compress(CompressionType requestedCompression, byte[] data, Optional<Integer> uncompressedSize) {
+ return compress(requestedCompression, data, 0, uncompressedSize.orElse(data.length));
+ }
+ public Compression compress(CompressionType requestedCompression, byte[] data, int offset, int len) {
switch (requestedCompression) {
case NONE:
- data = uncompressedSize.isPresent() ? Arrays.copyOf(data, uncompressedSize.get()) : data;
- return new Compression(CompressionType.NONE, data.length, data);
+ return compact(CompressionType.NONE, data, offset, len);
case LZ4:
- int dataSize = uncompressedSize.isPresent() ? uncompressedSize.get() : data.length;
- if (dataSize < compressMinSizeBytes) return new Compression(CompressionType.INCOMPRESSIBLE, dataSize, data);
- byte[] compressedData = getCompressor().compress(data, 0, dataSize);
- if (compressedData.length + 8 >= dataSize * compressionThresholdFactor)
- return new Compression(CompressionType.INCOMPRESSIBLE, dataSize, data);
- return new Compression(CompressionType.LZ4, dataSize, compressedData);
+ if (len < compressMinSizeBytes) {
+ return compact(CompressionType.INCOMPRESSIBLE, data, offset, len);
+ }
+ byte[] compressedData = getCompressor().compress(data, offset, len);
+ if (compressedData.length + 8 >= len * compressionThresholdFactor) {
+ return compact(CompressionType.INCOMPRESSIBLE, data, offset, len);
+ }
+ return new Compression(CompressionType.LZ4, len, compressedData);
case ZSTD:
- int dataLength = uncompressedSize.orElse(data.length);
- if (dataLength < compressMinSizeBytes) return new Compression(CompressionType.INCOMPRESSIBLE, dataLength, data);
- byte[] compressed = zstdCompressor.compress(data, 0, dataLength);
- return new Compression(CompressionType.ZSTD, dataLength, compressed);
+ if (len < compressMinSizeBytes) {
+ return compact(CompressionType.INCOMPRESSIBLE, data, offset, len);
+ }
+ byte[] compressed = zstdCompressor.compress(data, offset, len);
+ return new Compression(CompressionType.ZSTD, len, compressed);
default:
throw new IllegalArgumentException(requestedCompression + " is not supported");
}
}
+
+ private Compression compact(CompressionType type, byte[] data, int offset, int len) {
+ if ((offset != 0) || (len != data.length)) {
+ data = Arrays.copyOfRange(data, offset, offset + len);
+ }
+ return new Compression(type, len, data);
+ }
private LZ4Compressor getCompressor() {
return level < 7 ? factory.fastCompressor() : factory.highCompressor();
}
/** Compresses some data using the requested compression type */
- public Compression compress(CompressionType requestedCompression, byte[] data) { return compress(requestedCompression, data, Optional.empty()); }
+ public Compression compress(CompressionType requestedCompression, byte[] data) { return compress(requestedCompression, data, 0, data.length); }
/** Compresses some data using the compression type of this compressor */
- public Compression compress(byte[] data, int uncompressedSize) { return compress(type, data, Optional.of(uncompressedSize)); }
+ public Compression compress(byte[] data, int uncompressedSize) { return compress(type, data, 0, uncompressedSize); }
/** Compresses some data using the compression type of this compressor */
public Compression compress(byte[] data) { return compress(type, data, Optional.empty()); }
diff --git a/vespajlib/src/main/java/com/yahoo/compress/IntegerCompressor.java b/vespajlib/src/main/java/com/yahoo/compress/IntegerCompressor.java
index b1ab207f887..982ca309015 100644
--- a/vespajlib/src/main/java/com/yahoo/compress/IntegerCompressor.java
+++ b/vespajlib/src/main/java/com/yahoo/compress/IntegerCompressor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.compress;
import java.nio.ByteBuffer;
diff --git a/vespajlib/src/main/java/com/yahoo/compress/ZstdCompressor.java b/vespajlib/src/main/java/com/yahoo/compress/ZstdCompressor.java
index 72ccb730db7..004c1d2a017 100644
--- a/vespajlib/src/main/java/com/yahoo/compress/ZstdCompressor.java
+++ b/vespajlib/src/main/java/com/yahoo/compress/ZstdCompressor.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.compress;
import java.util.Arrays;
diff --git a/vespajlib/src/main/java/com/yahoo/compress/ZstdOuputStream.java b/vespajlib/src/main/java/com/yahoo/compress/ZstdOuputStream.java
index e81bcf6a465..c423f4c76bf 100644
--- a/vespajlib/src/main/java/com/yahoo/compress/ZstdOuputStream.java
+++ b/vespajlib/src/main/java/com/yahoo/compress/ZstdOuputStream.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.compress;
import java.io.IOException;
diff --git a/vespajlib/src/main/java/com/yahoo/compress/package-info.java b/vespajlib/src/main/java/com/yahoo/compress/package-info.java
index 04f95884dfc..90e09b5f5f7 100644
--- a/vespajlib/src/main/java/com/yahoo/compress/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/compress/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.compress;
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/CompletableFutures.java b/vespajlib/src/main/java/com/yahoo/concurrent/CompletableFutures.java
index b1fa6a9438d..2dab634d8be 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/CompletableFutures.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/CompletableFutures.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
import java.util.List;
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/CopyOnWriteHashMap.java b/vespajlib/src/main/java/com/yahoo/concurrent/CopyOnWriteHashMap.java
index aff2b6af2f0..c2b9feb4daa 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/CopyOnWriteHashMap.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/CopyOnWriteHashMap.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
import java.util.Collection;
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/DaemonThreadFactory.java b/vespajlib/src/main/java/com/yahoo/concurrent/DaemonThreadFactory.java
index 6c5dd5e3ba5..3e84970764a 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/DaemonThreadFactory.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/DaemonThreadFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
import java.util.concurrent.Executors;
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/EventBarrier.java b/vespajlib/src/main/java/com/yahoo/concurrent/EventBarrier.java
index 6289ac1b459..a25c5711ccf 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/EventBarrier.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/EventBarrier.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/LocalInstance.java b/vespajlib/src/main/java/com/yahoo/concurrent/LocalInstance.java
index 1f886c6f34a..e52e80963f3 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/LocalInstance.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/LocalInstance.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
import com.yahoo.concurrent.ThreadLocalDirectory.ObservableUpdater;
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/Lock.java b/vespajlib/src/main/java/com/yahoo/concurrent/Lock.java
index 3b1919a987d..48ec39a08ad 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/Lock.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/Lock.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
import java.util.concurrent.locks.ReentrantLock;
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/Locks.java b/vespajlib/src/main/java/com/yahoo/concurrent/Locks.java
index ab167392329..44bcec4f0eb 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/Locks.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/Locks.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
import com.google.common.util.concurrent.UncheckedTimeoutException;
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/Receiver.java b/vespajlib/src/main/java/com/yahoo/concurrent/Receiver.java
index 4d2e28d9f25..ace822e071f 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/Receiver.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/Receiver.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
import com.yahoo.collections.Tuple2;
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/SystemTimer.java b/vespajlib/src/main/java/com/yahoo/concurrent/SystemTimer.java
index aab3dd75f39..7e32ca25dc4 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/SystemTimer.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/SystemTimer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
import java.util.concurrent.TimeUnit;
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/ThreadFactoryFactory.java b/vespajlib/src/main/java/com/yahoo/concurrent/ThreadFactoryFactory.java
index 748922f9677..10c057421af 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/ThreadFactoryFactory.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/ThreadFactoryFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
import java.util.HashMap;
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/ThreadLocalDirectory.java b/vespajlib/src/main/java/com/yahoo/concurrent/ThreadLocalDirectory.java
index 016ad167e98..069d3952178 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/ThreadLocalDirectory.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/ThreadLocalDirectory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
import java.util.ArrayList;
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/ThreadRobustList.java b/vespajlib/src/main/java/com/yahoo/concurrent/ThreadRobustList.java
index c253b76e457..18fec46a888 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/ThreadRobustList.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/ThreadRobustList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
import java.util.Arrays;
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/Timer.java b/vespajlib/src/main/java/com/yahoo/concurrent/Timer.java
index 9097da53bd4..1793e860af8 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/Timer.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/Timer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/classlock/ClassLock.java b/vespajlib/src/main/java/com/yahoo/concurrent/classlock/ClassLock.java
index c4dbcebf9cb..fc43fcc3116 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/classlock/ClassLock.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/classlock/ClassLock.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent.classlock;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/classlock/ClassLocking.java b/vespajlib/src/main/java/com/yahoo/concurrent/classlock/ClassLocking.java
index c9712d5db54..f06ef662de5 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/classlock/ClassLocking.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/classlock/ClassLocking.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent.classlock;
import java.util.HashMap;
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/classlock/LockInterruptException.java b/vespajlib/src/main/java/com/yahoo/concurrent/classlock/LockInterruptException.java
index b7ee10e201b..ea61e87cd80 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/classlock/LockInterruptException.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/classlock/LockInterruptException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent.classlock;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/classlock/package-info.java b/vespajlib/src/main/java/com/yahoo/concurrent/classlock/package-info.java
index 010af471f03..25a3272bef6 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/classlock/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/classlock/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.concurrent.classlock;
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobControl.java b/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobControl.java
index 2a682bcb4db..19086eda1e3 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobControl.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobControl.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent.maintenance;
import com.yahoo.transaction.Mutex;
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobControlState.java b/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobControlState.java
index f5bfeee8d0e..8ff26561293 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobControlState.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobControlState.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent.maintenance;
import com.yahoo.transaction.Mutex;
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobMetrics.java b/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobMetrics.java
index da5a596edea..705176e8f3e 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobMetrics.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobMetrics.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent.maintenance;
import java.util.concurrent.ConcurrentHashMap;
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java b/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java
index 3a5c7e3421d..1bf84035c82 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent.maintenance;
import com.google.common.util.concurrent.UncheckedTimeoutException;
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/package-info.java b/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/package-info.java
index 71890d86c31..3d0f60d5179 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author mpolden
*/
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/package-info.java b/vespajlib/src/main/java/com/yahoo/concurrent/package-info.java
index 631b1e6c3bb..19fdaeb24e1 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.concurrent;
diff --git a/vespajlib/src/main/java/com/yahoo/data/access/ArrayTraverser.java b/vespajlib/src/main/java/com/yahoo/data/access/ArrayTraverser.java
index a3f202e940f..9d86e7f02c9 100644
--- a/vespajlib/src/main/java/com/yahoo/data/access/ArrayTraverser.java
+++ b/vespajlib/src/main/java/com/yahoo/data/access/ArrayTraverser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.data.access;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/data/access/Inspectable.java b/vespajlib/src/main/java/com/yahoo/data/access/Inspectable.java
index 69151048e78..362c6e8f69e 100644
--- a/vespajlib/src/main/java/com/yahoo/data/access/Inspectable.java
+++ b/vespajlib/src/main/java/com/yahoo/data/access/Inspectable.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.data.access;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/data/access/Inspector.java b/vespajlib/src/main/java/com/yahoo/data/access/Inspector.java
index bb4487e68d6..faab40537e1 100644
--- a/vespajlib/src/main/java/com/yahoo/data/access/Inspector.java
+++ b/vespajlib/src/main/java/com/yahoo/data/access/Inspector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.data.access;
diff --git a/vespajlib/src/main/java/com/yahoo/data/access/ObjectTraverser.java b/vespajlib/src/main/java/com/yahoo/data/access/ObjectTraverser.java
index 5d5435979d4..45f1d280b34 100644
--- a/vespajlib/src/main/java/com/yahoo/data/access/ObjectTraverser.java
+++ b/vespajlib/src/main/java/com/yahoo/data/access/ObjectTraverser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.data.access;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/data/access/Type.java b/vespajlib/src/main/java/com/yahoo/data/access/Type.java
index f533615cfb6..f0c3f91f386 100644
--- a/vespajlib/src/main/java/com/yahoo/data/access/Type.java
+++ b/vespajlib/src/main/java/com/yahoo/data/access/Type.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.data.access;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/data/access/package-info.java b/vespajlib/src/main/java/com/yahoo/data/access/package-info.java
index 8107b784f1f..e5b66ca2009 100644
--- a/vespajlib/src/main/java/com/yahoo/data/access/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/data/access/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.data.access;
diff --git a/vespajlib/src/main/java/com/yahoo/data/access/simple/JsonRender.java b/vespajlib/src/main/java/com/yahoo/data/access/simple/JsonRender.java
index 9f662c77c59..f2a0a05e6d3 100644
--- a/vespajlib/src/main/java/com/yahoo/data/access/simple/JsonRender.java
+++ b/vespajlib/src/main/java/com/yahoo/data/access/simple/JsonRender.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.data.access.simple;
import com.yahoo.data.access.ArrayTraverser;
diff --git a/vespajlib/src/main/java/com/yahoo/data/access/simple/Value.java b/vespajlib/src/main/java/com/yahoo/data/access/simple/Value.java
index 2f619fc55af..182865bd950 100644
--- a/vespajlib/src/main/java/com/yahoo/data/access/simple/Value.java
+++ b/vespajlib/src/main/java/com/yahoo/data/access/simple/Value.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.data.access.simple;
diff --git a/vespajlib/src/main/java/com/yahoo/data/access/simple/package-info.java b/vespajlib/src/main/java/com/yahoo/data/access/simple/package-info.java
index 1d90e5439e6..b5614d3575b 100644
--- a/vespajlib/src/main/java/com/yahoo/data/access/simple/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/data/access/simple/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.data.access.simple;
diff --git a/vespajlib/src/main/java/com/yahoo/data/access/slime/SlimeAdapter.java b/vespajlib/src/main/java/com/yahoo/data/access/slime/SlimeAdapter.java
index ec9435391ff..3dc7e80fd05 100644
--- a/vespajlib/src/main/java/com/yahoo/data/access/slime/SlimeAdapter.java
+++ b/vespajlib/src/main/java/com/yahoo/data/access/slime/SlimeAdapter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.data.access.slime;
diff --git a/vespajlib/src/main/java/com/yahoo/data/access/slime/package-info.java b/vespajlib/src/main/java/com/yahoo/data/access/slime/package-info.java
index 0036f4a3e3e..d60effb50dc 100644
--- a/vespajlib/src/main/java/com/yahoo/data/access/slime/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/data/access/slime/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.data.access.slime;
diff --git a/vespajlib/src/main/java/com/yahoo/errorhandling/Results.java b/vespajlib/src/main/java/com/yahoo/errorhandling/Results.java
index 95f7b00aed1..89dd44cb9fc 100644
--- a/vespajlib/src/main/java/com/yahoo/errorhandling/Results.java
+++ b/vespajlib/src/main/java/com/yahoo/errorhandling/Results.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.errorhandling;
import com.google.common.collect.ImmutableList;
diff --git a/vespajlib/src/main/java/com/yahoo/errorhandling/package-info.java b/vespajlib/src/main/java/com/yahoo/errorhandling/package-info.java
index d578b81b520..2cc938e9c14 100644
--- a/vespajlib/src/main/java/com/yahoo/errorhandling/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/errorhandling/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.errorhandling;
diff --git a/vespajlib/src/main/java/com/yahoo/geo/BoundingBoxParser.java b/vespajlib/src/main/java/com/yahoo/geo/BoundingBoxParser.java
index 69baa119fde..d686a564d99 100644
--- a/vespajlib/src/main/java/com/yahoo/geo/BoundingBoxParser.java
+++ b/vespajlib/src/main/java/com/yahoo/geo/BoundingBoxParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.geo;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/geo/DegreesParser.java b/vespajlib/src/main/java/com/yahoo/geo/DegreesParser.java
index 58164801c7c..986baf82bd2 100644
--- a/vespajlib/src/main/java/com/yahoo/geo/DegreesParser.java
+++ b/vespajlib/src/main/java/com/yahoo/geo/DegreesParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.geo;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/geo/DistanceParser.java b/vespajlib/src/main/java/com/yahoo/geo/DistanceParser.java
index 1ae68afa4ac..13bff614d83 100644
--- a/vespajlib/src/main/java/com/yahoo/geo/DistanceParser.java
+++ b/vespajlib/src/main/java/com/yahoo/geo/DistanceParser.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.geo;
diff --git a/vespajlib/src/main/java/com/yahoo/geo/OneDegreeParser.java b/vespajlib/src/main/java/com/yahoo/geo/OneDegreeParser.java
index cf23a24e702..5b14606bb39 100644
--- a/vespajlib/src/main/java/com/yahoo/geo/OneDegreeParser.java
+++ b/vespajlib/src/main/java/com/yahoo/geo/OneDegreeParser.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.geo;
diff --git a/vespajlib/src/main/java/com/yahoo/geo/ParsedDegree.java b/vespajlib/src/main/java/com/yahoo/geo/ParsedDegree.java
index 84b87614182..695d78eadfc 100644
--- a/vespajlib/src/main/java/com/yahoo/geo/ParsedDegree.java
+++ b/vespajlib/src/main/java/com/yahoo/geo/ParsedDegree.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.geo;
diff --git a/vespajlib/src/main/java/com/yahoo/geo/ZCurve.java b/vespajlib/src/main/java/com/yahoo/geo/ZCurve.java
index aa4adbbb6a5..d53ab72b199 100644
--- a/vespajlib/src/main/java/com/yahoo/geo/ZCurve.java
+++ b/vespajlib/src/main/java/com/yahoo/geo/ZCurve.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.geo;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/geo/package-info.java b/vespajlib/src/main/java/com/yahoo/geo/package-info.java
index 555c8944758..409572a32d4 100644
--- a/vespajlib/src/main/java/com/yahoo/geo/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/geo/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.geo;
diff --git a/vespajlib/src/main/java/com/yahoo/io/AbstractByteWriter.java b/vespajlib/src/main/java/com/yahoo/io/AbstractByteWriter.java
index 46a05f0d89f..e97abe4a80a 100644
--- a/vespajlib/src/main/java/com/yahoo/io/AbstractByteWriter.java
+++ b/vespajlib/src/main/java/com/yahoo/io/AbstractByteWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.io;
import com.yahoo.text.GenericWriter;
diff --git a/vespajlib/src/main/java/com/yahoo/io/BufferChain.java b/vespajlib/src/main/java/com/yahoo/io/BufferChain.java
index 509fd509711..c3dec43764b 100644
--- a/vespajlib/src/main/java/com/yahoo/io/BufferChain.java
+++ b/vespajlib/src/main/java/com/yahoo/io/BufferChain.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.io;
import com.yahoo.text.AbstractUtf8Array;
diff --git a/vespajlib/src/main/java/com/yahoo/io/ByteWriter.java b/vespajlib/src/main/java/com/yahoo/io/ByteWriter.java
index a14e448f922..df457990bbe 100644
--- a/vespajlib/src/main/java/com/yahoo/io/ByteWriter.java
+++ b/vespajlib/src/main/java/com/yahoo/io/ByteWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.io;
import com.yahoo.text.Utf8;
diff --git a/vespajlib/src/main/java/com/yahoo/io/FatalErrorHandler.java b/vespajlib/src/main/java/com/yahoo/io/FatalErrorHandler.java
index 80d96c816ea..a491d7ee2cb 100644
--- a/vespajlib/src/main/java/com/yahoo/io/FatalErrorHandler.java
+++ b/vespajlib/src/main/java/com/yahoo/io/FatalErrorHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/* -*- c-basic-offset: 4 -*-
*
* $Id$
diff --git a/vespajlib/src/main/java/com/yahoo/io/GrowableBufferOutputStream.java b/vespajlib/src/main/java/com/yahoo/io/GrowableBufferOutputStream.java
index cb695b1640f..ef598f70175 100644
--- a/vespajlib/src/main/java/com/yahoo/io/GrowableBufferOutputStream.java
+++ b/vespajlib/src/main/java/com/yahoo/io/GrowableBufferOutputStream.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.io;
import java.nio.channels.WritableByteChannel;
diff --git a/vespajlib/src/main/java/com/yahoo/io/GrowableByteBuffer.java b/vespajlib/src/main/java/com/yahoo/io/GrowableByteBuffer.java
index ae03c8601e7..cf728d69d18 100644
--- a/vespajlib/src/main/java/com/yahoo/io/GrowableByteBuffer.java
+++ b/vespajlib/src/main/java/com/yahoo/io/GrowableByteBuffer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.io;
import com.yahoo.text.Utf8;
diff --git a/vespajlib/src/main/java/com/yahoo/io/HexDump.java b/vespajlib/src/main/java/com/yahoo/io/HexDump.java
index 02e0ff11b1a..d023299d510 100644
--- a/vespajlib/src/main/java/com/yahoo/io/HexDump.java
+++ b/vespajlib/src/main/java/com/yahoo/io/HexDump.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.io;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/io/IOUtils.java b/vespajlib/src/main/java/com/yahoo/io/IOUtils.java
index fa32ec1ff9c..116ef7c804f 100644
--- a/vespajlib/src/main/java/com/yahoo/io/IOUtils.java
+++ b/vespajlib/src/main/java/com/yahoo/io/IOUtils.java
@@ -1,9 +1,26 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.io;
-import java.io.*;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.UncheckedIOException;
+import java.io.Writer;
import java.nio.channels.FileChannel;
+import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.NoSuchFileException;
import java.util.List;
@@ -19,7 +36,7 @@ import java.nio.ByteBuffer;
*/
public abstract class IOUtils {
- static private final Charset utf8Charset = Charset.forName("utf-8");
+ static private final Charset utf8Charset = StandardCharsets.UTF_8;
/** Closes a writer, or does nothing if the writer is null */
public static void closeWriter(Writer writer) {
@@ -341,7 +358,7 @@ public abstract class IOUtils {
public static String readFile(File file) throws IOException {
try {
if (file == null) return null;
- return new String(Files.readAllBytes(file.toPath()), "utf-8");
+ return Files.readString(file.toPath(), utf8Charset);
}
catch (NoSuchFileException e) {
throw new NoSuchFileException("Could not find file '" + file.getAbsolutePath() + "'");
@@ -370,9 +387,7 @@ public abstract class IOUtils {
if (lengthL>Integer.MAX_VALUE)
throw new IllegalArgumentException("File too big for byte array: "+file.getCanonicalPath());
- InputStream in = null;
- try {
- in = new FileInputStream(file);
+ try (InputStream in = new FileInputStream(file)) {
int length = (int)lengthL;
byte[] array = new byte[length];
int offset = 0;
@@ -381,10 +396,6 @@ public abstract class IOUtils {
offset += count;
return array;
}
- finally {
- if (in != null)
- in.close();
- }
}
/**
diff --git a/vespajlib/src/main/java/com/yahoo/io/NativeIO.java b/vespajlib/src/main/java/com/yahoo/io/NativeIO.java
index 109b7ff7943..34e68edcedd 100644
--- a/vespajlib/src/main/java/com/yahoo/io/NativeIO.java
+++ b/vespajlib/src/main/java/com/yahoo/io/NativeIO.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.io;
import java.io.File;
diff --git a/vespajlib/src/main/java/com/yahoo/io/TeeInputStream.java b/vespajlib/src/main/java/com/yahoo/io/TeeInputStream.java
index cf4af87da45..c199fedf395 100644
--- a/vespajlib/src/main/java/com/yahoo/io/TeeInputStream.java
+++ b/vespajlib/src/main/java/com/yahoo/io/TeeInputStream.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.io;
import java.io.InputStream;
diff --git a/vespajlib/src/main/java/com/yahoo/io/WritableByteTransmitter.java b/vespajlib/src/main/java/com/yahoo/io/WritableByteTransmitter.java
index da10affb765..78551b5a578 100644
--- a/vespajlib/src/main/java/com/yahoo/io/WritableByteTransmitter.java
+++ b/vespajlib/src/main/java/com/yahoo/io/WritableByteTransmitter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.io;
import java.io.IOException;
diff --git a/vespajlib/src/main/java/com/yahoo/io/package-info.java b/vespajlib/src/main/java/com/yahoo/io/package-info.java
index 1c8519e4a6b..9ad5c87b95a 100644
--- a/vespajlib/src/main/java/com/yahoo/io/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/io/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.io;
diff --git a/vespajlib/src/main/java/com/yahoo/io/reader/NamedReader.java b/vespajlib/src/main/java/com/yahoo/io/reader/NamedReader.java
index 2cfc45c784c..3129ddba638 100644
--- a/vespajlib/src/main/java/com/yahoo/io/reader/NamedReader.java
+++ b/vespajlib/src/main/java/com/yahoo/io/reader/NamedReader.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.io.reader;
import com.google.common.annotations.Beta;
diff --git a/vespajlib/src/main/java/com/yahoo/io/reader/package-info.java b/vespajlib/src/main/java/com/yahoo/io/reader/package-info.java
index f8d48882d2d..ddd1cb90153 100644
--- a/vespajlib/src/main/java/com/yahoo/io/reader/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/io/reader/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* The classes in this package are not intended for external use.
*/
diff --git a/vespajlib/src/main/java/com/yahoo/javacc/FastCharStream.java b/vespajlib/src/main/java/com/yahoo/javacc/FastCharStream.java
index 96dc03865e3..b7571b89b39 100644
--- a/vespajlib/src/main/java/com/yahoo/javacc/FastCharStream.java
+++ b/vespajlib/src/main/java/com/yahoo/javacc/FastCharStream.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.javacc;
import java.io.IOException;
diff --git a/vespajlib/src/main/java/com/yahoo/javacc/UnicodeUtilities.java b/vespajlib/src/main/java/com/yahoo/javacc/UnicodeUtilities.java
index 7bb6b907f59..61bd69882c8 100644
--- a/vespajlib/src/main/java/com/yahoo/javacc/UnicodeUtilities.java
+++ b/vespajlib/src/main/java/com/yahoo/javacc/UnicodeUtilities.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.javacc;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/javacc/package-info.java b/vespajlib/src/main/java/com/yahoo/javacc/package-info.java
index 93f45377c50..031209c224a 100644
--- a/vespajlib/src/main/java/com/yahoo/javacc/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/javacc/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.javacc;
diff --git a/vespajlib/src/main/java/com/yahoo/lang/CachedSupplier.java b/vespajlib/src/main/java/com/yahoo/lang/CachedSupplier.java
index 49b8dbdca8a..3cedfe53d48 100644
--- a/vespajlib/src/main/java/com/yahoo/lang/CachedSupplier.java
+++ b/vespajlib/src/main/java/com/yahoo/lang/CachedSupplier.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.lang;
import java.time.Clock;
diff --git a/vespajlib/src/main/java/com/yahoo/lang/MutableBoolean.java b/vespajlib/src/main/java/com/yahoo/lang/MutableBoolean.java
index 17501b17bd0..65db3931196 100644
--- a/vespajlib/src/main/java/com/yahoo/lang/MutableBoolean.java
+++ b/vespajlib/src/main/java/com/yahoo/lang/MutableBoolean.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.lang;
/**
@@ -22,6 +22,12 @@ public class MutableBoolean {
public void orSet(boolean value) { this.value |= value; }
+ public boolean getAndSet(boolean newValue) {
+ boolean prev = value;
+ value = newValue;
+ return prev;
+ }
+
@Override
public String toString() { return Boolean.toString(value); }
diff --git a/vespajlib/src/main/java/com/yahoo/lang/MutableInteger.java b/vespajlib/src/main/java/com/yahoo/lang/MutableInteger.java
index e2da62b6098..8f05bc68448 100644
--- a/vespajlib/src/main/java/com/yahoo/lang/MutableInteger.java
+++ b/vespajlib/src/main/java/com/yahoo/lang/MutableInteger.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.lang;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/lang/MutableLong.java b/vespajlib/src/main/java/com/yahoo/lang/MutableLong.java
index 36d3a8a6343..cf2047f8256 100644
--- a/vespajlib/src/main/java/com/yahoo/lang/MutableLong.java
+++ b/vespajlib/src/main/java/com/yahoo/lang/MutableLong.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.lang;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/lang/SettableOptional.java b/vespajlib/src/main/java/com/yahoo/lang/SettableOptional.java
index cccdb5f302d..73af544dd4b 100644
--- a/vespajlib/src/main/java/com/yahoo/lang/SettableOptional.java
+++ b/vespajlib/src/main/java/com/yahoo/lang/SettableOptional.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.lang;
import java.util.NoSuchElementException;
diff --git a/vespajlib/src/main/java/com/yahoo/lang/package-info.java b/vespajlib/src/main/java/com/yahoo/lang/package-info.java
index 273d3c22355..a4bba977bfc 100644
--- a/vespajlib/src/main/java/com/yahoo/lang/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/lang/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.lang;
diff --git a/vespajlib/src/main/java/com/yahoo/net/HostName.java b/vespajlib/src/main/java/com/yahoo/net/HostName.java
index 0982373db09..5b820cd996e 100644
--- a/vespajlib/src/main/java/com/yahoo/net/HostName.java
+++ b/vespajlib/src/main/java/com/yahoo/net/HostName.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.net;
import java.util.Optional;
diff --git a/vespajlib/src/main/java/com/yahoo/net/URI.java b/vespajlib/src/main/java/com/yahoo/net/URI.java
index 491fab5205e..8fbaa3cd4f7 100644
--- a/vespajlib/src/main/java/com/yahoo/net/URI.java
+++ b/vespajlib/src/main/java/com/yahoo/net/URI.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.net;
import java.util.ArrayList;
diff --git a/vespajlib/src/main/java/com/yahoo/net/UriTools.java b/vespajlib/src/main/java/com/yahoo/net/UriTools.java
index b865cedf45c..55a94884a57 100644
--- a/vespajlib/src/main/java/com/yahoo/net/UriTools.java
+++ b/vespajlib/src/main/java/com/yahoo/net/UriTools.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.net;
import java.net.URI;
diff --git a/vespajlib/src/main/java/com/yahoo/net/Url.java b/vespajlib/src/main/java/com/yahoo/net/Url.java
index 73584b4bc4e..e6e7512c9f8 100644
--- a/vespajlib/src/main/java/com/yahoo/net/Url.java
+++ b/vespajlib/src/main/java/com/yahoo/net/Url.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.net;
import java.util.regex.Matcher;
diff --git a/vespajlib/src/main/java/com/yahoo/net/UrlToken.java b/vespajlib/src/main/java/com/yahoo/net/UrlToken.java
index 602a9b2014a..c53b6e0c666 100644
--- a/vespajlib/src/main/java/com/yahoo/net/UrlToken.java
+++ b/vespajlib/src/main/java/com/yahoo/net/UrlToken.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.net;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/net/UrlTokenizer.java b/vespajlib/src/main/java/com/yahoo/net/UrlTokenizer.java
index 860107a4cc3..1c5621e9b71 100644
--- a/vespajlib/src/main/java/com/yahoo/net/UrlTokenizer.java
+++ b/vespajlib/src/main/java/com/yahoo/net/UrlTokenizer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.net;
import java.util.HashMap;
diff --git a/vespajlib/src/main/java/com/yahoo/net/package-info.java b/vespajlib/src/main/java/com/yahoo/net/package-info.java
index ba5e8fbae95..6f2c2106257 100644
--- a/vespajlib/src/main/java/com/yahoo/net/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/net/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.net;
diff --git a/vespajlib/src/main/java/com/yahoo/osgi/maven/ProjectBundleClassPaths.java b/vespajlib/src/main/java/com/yahoo/osgi/maven/ProjectBundleClassPaths.java
deleted file mode 100644
index 5d64548e4b9..00000000000
--- a/vespajlib/src/main/java/com/yahoo/osgi/maven/ProjectBundleClassPaths.java
+++ /dev/null
@@ -1,128 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.osgi.maven;
-
-import com.yahoo.slime.Cursor;
-import com.yahoo.slime.Inspector;
-import com.yahoo.slime.JsonFormat;
-import com.yahoo.slime.Slime;
-import com.yahoo.slime.SlimeUtils;
-
-import java.io.BufferedOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * Represents the bundles in a maven project and the classpath elements
- * corresponding to code that would end up in the bundle.
- *
- * @author Tony Vaagenes
- * @author bjorncs
- */
-
-public class ProjectBundleClassPaths {
- public static final String CLASSPATH_MAPPINGS_FILENAME = "bundle-plugin.bundle-classpath-mappings.json";
-
- public final BundleClasspathMapping mainBundle;
- public final List<BundleClasspathMapping> providedDependencies;
-
- public ProjectBundleClassPaths(BundleClasspathMapping mainBundle,
- List<BundleClasspathMapping> providedDependencies) {
- this.mainBundle = mainBundle;
- this.providedDependencies = providedDependencies;
- }
-
- public static void save(Path path, ProjectBundleClassPaths mappings) throws IOException {
- Files.createDirectories(path.getParent());
- try (OutputStream out = new BufferedOutputStream(Files.newOutputStream(path))) {
- save(out, mappings);
- }
- }
-
- static void save(OutputStream out, ProjectBundleClassPaths mappings) throws IOException {
- Slime slime = new Slime();
- Cursor rootCursor = slime.setObject();
- Cursor mainBundleCursor = rootCursor.setObject("mainBundle");
- BundleClasspathMapping.save(mainBundleCursor, mappings.mainBundle);
- Cursor dependenciesCursor = rootCursor.setArray("providedDependencies");
- mappings.providedDependencies
- .forEach(d -> BundleClasspathMapping.save(dependenciesCursor.addObject(), d));
- new JsonFormat(false).encode(out, slime);
- }
-
- public static ProjectBundleClassPaths load(Path path) throws IOException {
- byte[] bytes = Files.readAllBytes(path);
- return load(bytes);
- }
-
- static ProjectBundleClassPaths load(byte[] bytes) {
- Inspector inspector = SlimeUtils.jsonToSlime(bytes).get();
- BundleClasspathMapping mainBundle = BundleClasspathMapping.load(inspector.field("mainBundle"));
- Inspector dependenciesInspector = inspector.field("providedDependencies");
- List<BundleClasspathMapping> providedDependencies = new ArrayList<>();
- for (int i = 0; i < dependenciesInspector.entries(); i++) {
- providedDependencies.add(BundleClasspathMapping.load(dependenciesInspector.entry(i)));
- }
- return new ProjectBundleClassPaths(mainBundle, providedDependencies);
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- ProjectBundleClassPaths that = (ProjectBundleClassPaths) o;
- return Objects.equals(mainBundle, that.mainBundle) &&
- Objects.equals(providedDependencies, that.providedDependencies);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(mainBundle, providedDependencies);
- }
-
- public static class BundleClasspathMapping {
- public final String bundleSymbolicName;
- public final List<String> classPathElements;
-
- public BundleClasspathMapping(String bundleSymbolicName,
- List<String> classPathElements) {
- this.bundleSymbolicName = bundleSymbolicName;
- this.classPathElements = classPathElements;
- }
-
- static void save(Cursor rootCursor, BundleClasspathMapping mapping) {
- rootCursor.setString("bundleSymbolicName", mapping.bundleSymbolicName);
- Cursor arrayCursor = rootCursor.setArray("classPathElements");
- mapping.classPathElements.forEach(arrayCursor::addString);
- }
-
- static BundleClasspathMapping load(Inspector inspector) {
- String bundleSymoblicName = inspector.field("bundleSymbolicName").asString();
- Inspector elementsInspector = inspector.field("classPathElements");
- List<String> classPathElements = new ArrayList<>();
- for (int i = 0; i < elementsInspector.entries(); i++) {
- classPathElements.add(elementsInspector.entry(i).asString());
- }
- return new BundleClasspathMapping(bundleSymoblicName, classPathElements);
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- BundleClasspathMapping that = (BundleClasspathMapping) o;
- return Objects.equals(bundleSymbolicName, that.bundleSymbolicName) &&
- Objects.equals(classPathElements, that.classPathElements);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(bundleSymbolicName, classPathElements);
- }
- }
-
-}
diff --git a/vespajlib/src/main/java/com/yahoo/path/Path.java b/vespajlib/src/main/java/com/yahoo/path/Path.java
index 135cea06906..3254c081f31 100644
--- a/vespajlib/src/main/java/com/yahoo/path/Path.java
+++ b/vespajlib/src/main/java/com/yahoo/path/Path.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.path;
import com.google.common.annotations.Beta;
diff --git a/vespajlib/src/main/java/com/yahoo/path/package-info.java b/vespajlib/src/main/java/com/yahoo/path/package-info.java
index 3d5cec016d6..42020989520 100644
--- a/vespajlib/src/main/java/com/yahoo/path/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/path/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@PublicApi // Mainly because it's imported by config-model-fat
@ExportPackage
package com.yahoo.path;
diff --git a/vespajlib/src/main/java/com/yahoo/protect/ClassValidator.java b/vespajlib/src/main/java/com/yahoo/protect/ClassValidator.java
index c297a9dddf7..ed0b1c05d4d 100644
--- a/vespajlib/src/main/java/com/yahoo/protect/ClassValidator.java
+++ b/vespajlib/src/main/java/com/yahoo/protect/ClassValidator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.protect;
import java.lang.reflect.Method;
diff --git a/vespajlib/src/main/java/com/yahoo/protect/ErrorMessage.java b/vespajlib/src/main/java/com/yahoo/protect/ErrorMessage.java
index 1fb64c126a8..07aabe6043b 100644
--- a/vespajlib/src/main/java/com/yahoo/protect/ErrorMessage.java
+++ b/vespajlib/src/main/java/com/yahoo/protect/ErrorMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.protect;
diff --git a/vespajlib/src/main/java/com/yahoo/protect/Process.java b/vespajlib/src/main/java/com/yahoo/protect/Process.java
index 4d2fafd4665..1a462f1042e 100644
--- a/vespajlib/src/main/java/com/yahoo/protect/Process.java
+++ b/vespajlib/src/main/java/com/yahoo/protect/Process.java
@@ -1,7 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.protect;
+import com.sun.management.HotSpotDiagnosticMXBean;
+import javax.management.MBeanServer;
+import java.io.IOException;
+import java.lang.management.ManagementFactory;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Level;
@@ -70,6 +74,20 @@ public final class Process {
}
}
+ public static void dumpHeap(String filePath, boolean live) {
+ log.log(Level.INFO, "Will dump the heap to '" + filePath + "', with the live = " + live);
+ try {
+ getHotspotMXBean().dumpHeap(filePath, live);
+ } catch (IOException e) {
+ log.log(Level.WARNING, "Failed writing heap dump:", e);
+ }
+ }
+
+ private static HotSpotDiagnosticMXBean getHotspotMXBean() throws IOException {
+ MBeanServer server = ManagementFactory.getPlatformMBeanServer();
+ return ManagementFactory.newPlatformMXBeanProxy(
+ server, "com.sun.management:type=HotSpotDiagnostic", HotSpotDiagnosticMXBean.class);
+ }
public static void dumpThreads() {
boolean alreadyDumpingThreads = busyDumpingThreads.getAndSet(true);
diff --git a/vespajlib/src/main/java/com/yahoo/protect/Validator.java b/vespajlib/src/main/java/com/yahoo/protect/Validator.java
index ee4a93c2f01..a5d99a29f88 100644
--- a/vespajlib/src/main/java/com/yahoo/protect/Validator.java
+++ b/vespajlib/src/main/java/com/yahoo/protect/Validator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.protect;
diff --git a/vespajlib/src/main/java/com/yahoo/protect/package-info.java b/vespajlib/src/main/java/com/yahoo/protect/package-info.java
index 4d59615502f..f3dbeaea819 100644
--- a/vespajlib/src/main/java/com/yahoo/protect/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/protect/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Input validators, integrity checkers, error messages
* and similar classes.
diff --git a/vespajlib/src/main/java/com/yahoo/reflection/Casting.java b/vespajlib/src/main/java/com/yahoo/reflection/Casting.java
index 49c2a690057..ea11980b385 100644
--- a/vespajlib/src/main/java/com/yahoo/reflection/Casting.java
+++ b/vespajlib/src/main/java/com/yahoo/reflection/Casting.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.reflection;
import java.util.Optional;
diff --git a/vespajlib/src/main/java/com/yahoo/reflection/package-info.java b/vespajlib/src/main/java/com/yahoo/reflection/package-info.java
index c28f2552f3f..fbf6e87af8c 100644
--- a/vespajlib/src/main/java/com/yahoo/reflection/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/reflection/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Package for reflection utility methods.
* @author Tony Vaagenes
diff --git a/vespajlib/src/main/java/com/yahoo/slime/ArrayInserter.java b/vespajlib/src/main/java/com/yahoo/slime/ArrayInserter.java
index 84e42d83de8..993556922d0 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/ArrayInserter.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/ArrayInserter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/slime/ArrayTraverser.java b/vespajlib/src/main/java/com/yahoo/slime/ArrayTraverser.java
index ba7392cff5a..fd3528f7d03 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/ArrayTraverser.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/ArrayTraverser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/slime/ArrayValue.java b/vespajlib/src/main/java/com/yahoo/slime/ArrayValue.java
index c8a7f2253bb..6450982540f 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/ArrayValue.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/ArrayValue.java
@@ -1,7 +1,6 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
-
final class ArrayValue extends Value {
private int capacity = 16;
@@ -10,16 +9,16 @@ final class ArrayValue extends Value {
private final SymbolTable names;
public ArrayValue(SymbolTable names) { this.names = names; }
- public final Type type() { return Type.ARRAY; }
- public final int children() { return used; }
- public final int entries() { return used; }
- public final Value entry(int index) {
+ public Type type() { return Type.ARRAY; }
+ public int children() { return used; }
+ public int entries() { return used; }
+ public Value entry(int index) {
return (index < used) ? values[index] : NixValue.invalid();
}
- public final void accept(Visitor v) { v.visitArray(this); }
+ public void accept(Visitor v) { v.visitArray(this); }
- public final void traverse(ArrayTraverser at) {
+ public void traverse(ArrayTraverser at) {
for (int i = 0; i < used; i++) {
at.entry(i, values[i]);
}
@@ -32,7 +31,7 @@ final class ArrayValue extends Value {
System.arraycopy(v, 0, values, 0, used);
}
- protected final Value addLeaf(Value value) {
+ protected Value addLeaf(Value value) {
if (used == capacity) {
grow();
}
@@ -40,6 +39,7 @@ final class ArrayValue extends Value {
return value;
}
- public final Value addArray() { return addLeaf(new ArrayValue(names)); }
- public final Value addObject() { return addLeaf(new ObjectValue(names)); }
+ public Value addArray() { return addLeaf(new ArrayValue(names)); }
+ public Value addObject() { return addLeaf(new ObjectValue(names)); }
+
}
diff --git a/vespajlib/src/main/java/com/yahoo/slime/BinaryDecoder.java b/vespajlib/src/main/java/com/yahoo/slime/BinaryDecoder.java
index ecee5e9504e..383fd626a62 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/BinaryDecoder.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/BinaryDecoder.java
@@ -1,7 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
-import static com.yahoo.slime.BinaryFormat.*;
+
+import static com.yahoo.slime.BinaryFormat.decode_double;
+import static com.yahoo.slime.BinaryFormat.decode_meta;
+import static com.yahoo.slime.BinaryFormat.decode_type;
+import static com.yahoo.slime.BinaryFormat.decode_zigzag;
final class BinaryDecoder {
BufferedInput in;
@@ -135,9 +139,7 @@ final class BinaryDecoder {
void decodeValue(Inserter inserter) {
byte b = in.getByte();
- Cursor cursor = decodeValue(inserter,
- decode_type(b),
- decode_meta(b));
+ Cursor cursor = decodeValue(inserter, decode_type(b), decode_meta(b));
if (!cursor.valid()) {
in.fail("failed to decode value");
}
diff --git a/vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java b/vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java
index 4d9fdbba6d4..0d848e83bab 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java
@@ -1,28 +1,30 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
-import static com.yahoo.slime.BinaryFormat.*;
+import static com.yahoo.slime.BinaryFormat.encode_double;
+import static com.yahoo.slime.BinaryFormat.encode_type_and_meta;
+import static com.yahoo.slime.BinaryFormat.encode_zigzag;
final class BinaryEncoder implements
ArrayTraverser, ObjectSymbolTraverser
{
- BufferedOutput out;
+ private final BufferedOutput out;
- public BinaryEncoder(int capacity) {
- out = new BufferedOutput(capacity);
+ BinaryEncoder() {
+ this(new BufferedOutput());
}
-
- public BinaryEncoder() {
- out = new BufferedOutput();
+ BinaryEncoder(BufferedOutput output) {
+ out = output;
}
- public byte[] encode(Slime slime) {
+ BufferedOutput encode(Slime slime) {
out.reset();
encodeSymbolTable(slime);
encodeValue(slime.get());
- return out.toArray();
+ return out;
}
+
void encode_cmpr_long(long value) {
byte next = (byte)(value & 0x7f);
value >>>= 7; // unsigned shift
diff --git a/vespajlib/src/main/java/com/yahoo/slime/BinaryFormat.java b/vespajlib/src/main/java/com/yahoo/slime/BinaryFormat.java
index c212500eca7..b397d4c2982 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/BinaryFormat.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/BinaryFormat.java
@@ -1,6 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
+import com.yahoo.compress.Compressor;
+
/**
* Class for serializing Slime data into binary format, or deserializing
* the binary format into a Slime object.
@@ -40,8 +42,17 @@ public class BinaryFormat {
* @return a new byte array with just the encoded slime.
**/
public static byte[] encode(Slime slime) {
- BinaryEncoder encoder = new BinaryEncoder();
- return encoder.encode(slime);
+ return new BinaryEncoder().encode(slime).toArray();
+ }
+
+ /**
+ * Take a Slime object and serialize it into binary format, and compresses it.
+ * @param slime the object which is to be serialized.
+ * @param compressor the compressor to use.
+ * @return a new byte array with just the encoded and compressed slime.
+ **/
+ public static Compressor.Compression encode_and_compress(Slime slime, Compressor compressor) {
+ return new BinaryEncoder().encode(slime).compress(compressor);
}
/**
diff --git a/vespajlib/src/main/java/com/yahoo/slime/BoolValue.java b/vespajlib/src/main/java/com/yahoo/slime/BoolValue.java
index da57a7474be..00f3adf82a1 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/BoolValue.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/BoolValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
final class BoolValue extends Value {
diff --git a/vespajlib/src/main/java/com/yahoo/slime/BufferedInput.java b/vespajlib/src/main/java/com/yahoo/slime/BufferedInput.java
index 8a647269697..ddbb25196b5 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/BufferedInput.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/BufferedInput.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
final class BufferedInput {
@@ -19,17 +19,17 @@ final class BufferedInput {
position = end;
}
- public BufferedInput(byte[] bytes) {
+ BufferedInput(byte[] bytes) {
this(bytes, 0, bytes.length);
}
- public BufferedInput(byte[] bytes, int offset, int length) {
+ BufferedInput(byte[] bytes, int offset, int length) {
this.source = bytes;
this.start = offset;
position = offset;
this.end = offset + length;
}
- public final byte getByte() {
+ byte getByte() {
if (position == end) {
fail("underflow");
return 0;
@@ -37,31 +37,31 @@ final class BufferedInput {
return source[position++];
}
- public boolean failed() {
+ boolean failed() {
return failReason != null;
}
- public boolean eof() {
+ boolean eof() {
return this.position == this.end;
}
- public String getErrorMessage() {
+ String getErrorMessage() {
return failReason;
}
- public int getConsumedSize() {
+ int getConsumedSize() {
return failed() ? 0 : position - start;
}
- public byte[] getOffending() {
+ byte[] getOffending() {
byte[] ret = new byte[failPos-start];
System.arraycopy(source, start, ret, 0, failPos-start);
return ret;
}
- public final byte [] getBacking() { return source; }
- public final int getPosition() { return position; }
- public final void skip(int size) {
+ byte [] getBacking() { return source; }
+ int getPosition() { return position; }
+ void skip(int size) {
if (position + size > end) {
fail("underflow");
} else {
@@ -69,7 +69,7 @@ final class BufferedInput {
}
}
- public final byte[] getBytes(int size) {
+ byte[] getBytes(int size) {
if (position + size > end) {
fail("underflow");
return new byte[0];
diff --git a/vespajlib/src/main/java/com/yahoo/slime/BufferedOutput.java b/vespajlib/src/main/java/com/yahoo/slime/BufferedOutput.java
index 26c76de4bc1..2fb74033bf3 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/BufferedOutput.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/BufferedOutput.java
@@ -1,22 +1,26 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
+import com.yahoo.compress.Compressor;
+
+import java.nio.charset.Charset;
+
final class BufferedOutput {
private byte[] buf;
private int capacity;
private int pos;
- public BufferedOutput(int cap) {
- capacity = (cap < 64) ? 64 : cap;
+ BufferedOutput(int cap) {
+ capacity = Math.max(cap, 64);
buf = new byte[capacity];
}
- public BufferedOutput() {
+ BufferedOutput() {
this(4096);
}
- public void reset() {
+ void reset() {
pos = 0;
}
@@ -31,27 +35,33 @@ final class BufferedOutput {
}
}
- public int position() { return pos; }
+ int position() { return pos; }
- final void put(byte b) {
+ void put(byte b) {
reserve(1);
buf[pos++] = b;
}
- final void absolutePut(int position, byte b) {
+ void absolutePut(int position, byte b) {
buf[position] = b;
}
- final void put(byte[] bytes) {
+ void put(byte[] bytes) {
reserve(bytes.length);
for (byte b : bytes) {
buf[pos++] = b;
}
}
- public byte[] toArray() {
+ byte[] toArray() {
byte[] ret = new byte[pos];
System.arraycopy(buf, 0, ret, 0, pos);
return ret;
}
+ public String toString(Charset charset) {
+ return new String(buf, 0, pos, charset);
+ }
+ Compressor.Compression compress(Compressor compressor) {
+ return compressor.compress(buf, pos);
+ }
}
diff --git a/vespajlib/src/main/java/com/yahoo/slime/Cursor.java b/vespajlib/src/main/java/com/yahoo/slime/Cursor.java
index 7c3b8908703..2696e923bd5 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/Cursor.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/Cursor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/slime/DataValue.java b/vespajlib/src/main/java/com/yahoo/slime/DataValue.java
index 9cb48405219..5081b3fdbc7 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/DataValue.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/DataValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
final class DataValue extends Value {
diff --git a/vespajlib/src/main/java/com/yahoo/slime/DoubleValue.java b/vespajlib/src/main/java/com/yahoo/slime/DoubleValue.java
index 0d21801563a..22b685d5419 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/DoubleValue.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/DoubleValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
final class DoubleValue extends Value {
diff --git a/vespajlib/src/main/java/com/yahoo/slime/Inserter.java b/vespajlib/src/main/java/com/yahoo/slime/Inserter.java
index 21f641914d8..7a7e5ba6f84 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/Inserter.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/Inserter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/slime/Inspector.java b/vespajlib/src/main/java/com/yahoo/slime/Inspector.java
index 7af7accaf49..d72a8888b2c 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/Inspector.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/Inspector.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/slime/JsonDecoder.java b/vespajlib/src/main/java/com/yahoo/slime/JsonDecoder.java
index b7f11f53cd5..d6818907bf3 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/JsonDecoder.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/JsonDecoder.java
@@ -1,11 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
import com.yahoo.text.Text;
-import com.yahoo.text.Utf8;
-import java.io.ByteArrayOutputStream;
import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
/**
* A port of the C++ json decoder intended to be fast.
@@ -20,7 +19,7 @@ public class JsonDecoder {
private final SlimeInserter slimeInserter = new SlimeInserter(null);
private final ArrayInserter arrayInserter = new ArrayInserter(null);
private final ObjectInserter objectInserter = new ObjectInserter(null, null);
- private final ByteArrayOutputStream buf = new ByteArrayOutputStream();
+ private final BufferedOutput buf = new BufferedOutput();
private static final byte[] TRUE = {'t', 'r', 'u', 'e'};
private static final byte[] FALSE = {'f', 'a', 'l', 's', 'e'};
@@ -86,15 +85,15 @@ public class JsonDecoder {
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
case '+': case '-':
- buf.write(c);
+ buf.put(c);
next();
break;
default:
if (likelyFloatingPoint) {
- double num = Double.parseDouble(Utf8.toString(buf.toByteArray()));
+ double num = Double.parseDouble(buf.toString(StandardCharsets.UTF_8));
inserter.insertDOUBLE(num);
} else {
- long num = Long.parseLong(Utf8.toString(buf.toByteArray()));
+ long num = Long.parseLong(buf.toString(StandardCharsets.UTF_8));
inserter.insertLONG(num);
}
return;
@@ -103,8 +102,8 @@ public class JsonDecoder {
}
private void expect(byte[] expected) {
- for (int i = 0; i < expected.length; i++) {
- if ( ! skip(expected[i])) {
+ for (byte b : expected) {
+ if ( ! skip(b)) {
in.fail("Unexpected " + characterToReadableString(c));
return;
}
@@ -150,9 +149,9 @@ public class JsonDecoder {
default:
for (;;) {
switch (c) {
- case ':': case ' ': case '\t': case '\n': case '\r': case '\0': return Utf8.toString(buf.toByteArray());
+ case ':': case ' ': case '\t': case '\n': case '\r': case '\0': return buf.toString(StandardCharsets.UTF_8);
default:
- buf.write(c);
+ buf.put(c);
next();
break;
}
@@ -176,13 +175,13 @@ public class JsonDecoder {
next();
switch (c) {
case '"': case '\\': case '/': case '\'':
- buf.write(c);
+ buf.put(c);
break;
- case 'b': buf.write((byte) '\b'); break;
- case 'f': buf.write((byte) '\f'); break;
- case 'n': buf.write((byte) '\n'); break;
- case 'r': buf.write((byte) '\r'); break;
- case 't': buf.write((byte) '\t'); break;
+ case 'b': buf.put((byte) '\b'); break;
+ case 'f': buf.put((byte) '\f'); break;
+ case 'n': buf.put((byte) '\n'); break;
+ case 'r': buf.put((byte) '\r'); break;
+ case 't': buf.put((byte) '\t'); break;
case 'u': writeUtf8(dequoteUtf16(), buf, 0xffffff80); continue;
default:
in.fail("Invalid quoted char(" + c + ")");
@@ -193,34 +192,34 @@ public class JsonDecoder {
case '"': case '\'':
if (c == quote) {
next();
- return Utf8.toString(buf.toByteArray());
+ return buf.toString(StandardCharsets.UTF_8);
} else {
- buf.write(c);
+ buf.put(c);
next();
}
break;
case '\0':
in.fail("Unterminated string");
- return Utf8.toString(buf.toByteArray());
+ return buf.toString(StandardCharsets.UTF_8);
default:
- buf.write(c);
+ buf.put(c);
next();
break;
}
}
}
- private static void writeUtf8(long codepoint, ByteArrayOutputStream buf, long mask) {
+ private static void writeUtf8(long codepoint, BufferedOutput buf, long mask) {
if ((codepoint & mask) == 0) {
- buf.write((byte) ((mask << 1) | codepoint));
+ buf.put((byte) ((mask << 1) | codepoint));
} else {
writeUtf8(codepoint >> 6, buf, mask >> (2 - ((mask >> 6) & 0x1)));
- buf.write((byte) (0x80 | (codepoint & 0x3f)));
+ buf.put((byte) (0x80 | (codepoint & 0x3f)));
}
}
- private static byte[] unicodeStart = {'\\', 'u'};
+ private final static byte[] unicodeStart = {'\\', 'u'};
private long dequoteUtf16() {
next();
long codepoint = readHexValue(4);
diff --git a/vespajlib/src/main/java/com/yahoo/slime/JsonFormat.java b/vespajlib/src/main/java/com/yahoo/slime/JsonFormat.java
index c4c82609df7..e7a96695922 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/JsonFormat.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/JsonFormat.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
import com.yahoo.io.AbstractByteWriter;
diff --git a/vespajlib/src/main/java/com/yahoo/slime/JsonParseException.java b/vespajlib/src/main/java/com/yahoo/slime/JsonParseException.java
index 6c42f7d38c1..9d75f368458 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/JsonParseException.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/JsonParseException.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/slime/LongValue.java b/vespajlib/src/main/java/com/yahoo/slime/LongValue.java
index e4910133674..62752f2b27c 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/LongValue.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/LongValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
final class LongValue extends Value {
diff --git a/vespajlib/src/main/java/com/yahoo/slime/NixValue.java b/vespajlib/src/main/java/com/yahoo/slime/NixValue.java
index 0e343058772..b65cd1dabbf 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/NixValue.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/NixValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
final class NixValue extends Value {
diff --git a/vespajlib/src/main/java/com/yahoo/slime/ObjectSymbolInserter.java b/vespajlib/src/main/java/com/yahoo/slime/ObjectSymbolInserter.java
index 0fa66245643..c5c18943926 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/ObjectSymbolInserter.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/ObjectSymbolInserter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/slime/ObjectSymbolTraverser.java b/vespajlib/src/main/java/com/yahoo/slime/ObjectSymbolTraverser.java
index 8a112320e2b..90ca9bc70cd 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/ObjectSymbolTraverser.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/ObjectSymbolTraverser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/slime/ObjectTraverser.java b/vespajlib/src/main/java/com/yahoo/slime/ObjectTraverser.java
index e4c7f068926..6597d3b82f3 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/ObjectTraverser.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/ObjectTraverser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/slime/ObjectValue.java b/vespajlib/src/main/java/com/yahoo/slime/ObjectValue.java
index a0b497470c0..33d2e5be4ed 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/ObjectValue.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/ObjectValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/slime/Slime.java b/vespajlib/src/main/java/com/yahoo/slime/Slime.java
index 83934e0c206..c45b48cf743 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/Slime.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/Slime.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/slime/SlimeFormat.java b/vespajlib/src/main/java/com/yahoo/slime/SlimeFormat.java
index ab4501a1e69..3db659196c9 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/SlimeFormat.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/SlimeFormat.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
import java.io.IOException;
diff --git a/vespajlib/src/main/java/com/yahoo/slime/SlimeInserter.java b/vespajlib/src/main/java/com/yahoo/slime/SlimeInserter.java
index 30ebb5d2a3d..bbd280751d6 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/SlimeInserter.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/SlimeInserter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/slime/SlimeUtils.java b/vespajlib/src/main/java/com/yahoo/slime/SlimeUtils.java
index 4a53d70ff38..d4999f5c256 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/SlimeUtils.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/SlimeUtils.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
import java.io.ByteArrayOutputStream;
@@ -133,6 +133,10 @@ public class SlimeUtils {
return Instant.ofEpochMilli(field.asLong());
}
+ public static Duration duration(Inspector field) {
+ return Duration.ofMillis(field.asLong());
+ }
+
public static Optional<String> optionalString(Inspector inspector) {
return Optional.of(inspector.asString()).filter(s -> !s.isEmpty());
}
diff --git a/vespajlib/src/main/java/com/yahoo/slime/StringValue.java b/vespajlib/src/main/java/com/yahoo/slime/StringValue.java
index e5b7a7c6c1b..fbd4e150f7e 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/StringValue.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/StringValue.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/slime/SymbolTable.java b/vespajlib/src/main/java/com/yahoo/slime/SymbolTable.java
index c87778272c8..0e498aa72e7 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/SymbolTable.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/SymbolTable.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/slime/Type.java b/vespajlib/src/main/java/com/yahoo/slime/Type.java
index de188b687c5..7d2b309157e 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/Type.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/Type.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/slime/Utf8Codec.java b/vespajlib/src/main/java/com/yahoo/slime/Utf8Codec.java
index 86b4acdd3a8..73be9620c22 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/Utf8Codec.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/Utf8Codec.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
import com.yahoo.text.Utf8;
diff --git a/vespajlib/src/main/java/com/yahoo/slime/Utf8Value.java b/vespajlib/src/main/java/com/yahoo/slime/Utf8Value.java
index 2e73c0e0aab..3ddcf4e4e24 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/Utf8Value.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/Utf8Value.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/slime/Value.java b/vespajlib/src/main/java/com/yahoo/slime/Value.java
index 9d325fc7fb6..181dc033f3f 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/Value.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/Value.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
diff --git a/vespajlib/src/main/java/com/yahoo/slime/Visitor.java b/vespajlib/src/main/java/com/yahoo/slime/Visitor.java
index 9e0bd254db8..5372e9cbf6f 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/Visitor.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/Visitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/slime/package-info.java b/vespajlib/src/main/java/com/yahoo/slime/package-info.java
index 3666657bd02..6cc5ffaa18d 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* SLIME: 'Schema-Less Interface/Model/Exchange'. Slime is a way to
* handle schema-less structured data to be used as part of interfaces
diff --git a/vespajlib/src/main/java/com/yahoo/stream/CustomCollectors.java b/vespajlib/src/main/java/com/yahoo/stream/CustomCollectors.java
index 9abe577aeb5..ad941213af9 100644
--- a/vespajlib/src/main/java/com/yahoo/stream/CustomCollectors.java
+++ b/vespajlib/src/main/java/com/yahoo/stream/CustomCollectors.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.stream;
import java.util.LinkedHashMap;
diff --git a/vespajlib/src/main/java/com/yahoo/stream/package-info.java b/vespajlib/src/main/java/com/yahoo/stream/package-info.java
index d63ef622c00..2523e6ac68d 100644
--- a/vespajlib/src/main/java/com/yahoo/stream/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/stream/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Package for stream utility methods.
* @author gjoranv
diff --git a/vespajlib/src/main/java/com/yahoo/system/CommandLineParser.java b/vespajlib/src/main/java/com/yahoo/system/CommandLineParser.java
index bd3d1fd2e03..0689e634cf4 100644
--- a/vespajlib/src/main/java/com/yahoo/system/CommandLineParser.java
+++ b/vespajlib/src/main/java/com/yahoo/system/CommandLineParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.system;
import java.util.*;
diff --git a/vespajlib/src/main/java/com/yahoo/system/ForceLoad.java b/vespajlib/src/main/java/com/yahoo/system/ForceLoad.java
index e4f4d22aa8d..d627a4324d9 100644
--- a/vespajlib/src/main/java/com/yahoo/system/ForceLoad.java
+++ b/vespajlib/src/main/java/com/yahoo/system/ForceLoad.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.system;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/system/ForceLoadError.java b/vespajlib/src/main/java/com/yahoo/system/ForceLoadError.java
index 75eaaa2bbe2..b85fb1b303c 100644
--- a/vespajlib/src/main/java/com/yahoo/system/ForceLoadError.java
+++ b/vespajlib/src/main/java/com/yahoo/system/ForceLoadError.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.system;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/system/ProcessExecuter.java b/vespajlib/src/main/java/com/yahoo/system/ProcessExecuter.java
index c455929bf51..b705cc081a5 100644
--- a/vespajlib/src/main/java/com/yahoo/system/ProcessExecuter.java
+++ b/vespajlib/src/main/java/com/yahoo/system/ProcessExecuter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.system;
import java.io.IOException;
diff --git a/vespajlib/src/main/java/com/yahoo/system/execution/ProcessExecutor.java b/vespajlib/src/main/java/com/yahoo/system/execution/ProcessExecutor.java
index d79ab7bd0b5..1f3482300ed 100644
--- a/vespajlib/src/main/java/com/yahoo/system/execution/ProcessExecutor.java
+++ b/vespajlib/src/main/java/com/yahoo/system/execution/ProcessExecutor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.system.execution;
import org.apache.commons.exec.CommandLine;
diff --git a/vespajlib/src/main/java/com/yahoo/system/execution/ProcessResult.java b/vespajlib/src/main/java/com/yahoo/system/execution/ProcessResult.java
index b3ed4d6d07f..ee0e2805915 100644
--- a/vespajlib/src/main/java/com/yahoo/system/execution/ProcessResult.java
+++ b/vespajlib/src/main/java/com/yahoo/system/execution/ProcessResult.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.system.execution;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/system/execution/package-info.java b/vespajlib/src/main/java/com/yahoo/system/execution/package-info.java
index cc47ae8193a..88993e2eb08 100644
--- a/vespajlib/src/main/java/com/yahoo/system/execution/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/system/execution/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.system.execution;
diff --git a/vespajlib/src/main/java/com/yahoo/system/package-info.java b/vespajlib/src/main/java/com/yahoo/system/package-info.java
index a86abc132a9..8d57af2bd7a 100644
--- a/vespajlib/src/main/java/com/yahoo/system/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/system/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.system;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/DimensionSizes.java b/vespajlib/src/main/java/com/yahoo/tensor/DimensionSizes.java
index 632501c7d08..f74e5ba3d97 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/DimensionSizes.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/DimensionSizes.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor;
import java.util.Arrays;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java b/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java
index d822a5c6b8b..0e919d828ed 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor;
import com.google.common.collect.ImmutableList;
@@ -401,8 +401,6 @@ public abstract class IndexedTensor implements Tensor {
TensorType type();
-
-
/** Sets a value by its <i>standard value order</i> index */
void cellByDirectIndex(long index, double value);
@@ -414,7 +412,7 @@ public abstract class IndexedTensor implements Tensor {
/** A bound builder can create the double array directly */
public static abstract class BoundBuilder extends Builder implements DirectIndexBuilder {
- private DimensionSizes sizes;
+ private final DimensionSizes sizes;
private static DimensionSizes dimensionSizesOf(TensorType type) {
DimensionSizes.Builder b = new DimensionSizes.Builder(type.dimensions().size());
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/MappedTensor.java b/vespajlib/src/main/java/com/yahoo/tensor/MappedTensor.java
index 996fad8a19d..09e93d80bd9 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/MappedTensor.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/MappedTensor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor;
import com.google.common.collect.ImmutableMap;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java b/vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java
index 6307acb88b4..418e9efdffb 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/PartialAddress.java b/vespajlib/src/main/java/com/yahoo/tensor/PartialAddress.java
index 84f26d96725..25f62ffa53d 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/PartialAddress.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/PartialAddress.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor;
import java.util.Arrays;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java b/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java
index ab475e25387..c4588b79fa9 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java
@@ -1,7 +1,6 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor;
-import com.yahoo.tensor.evaluation.TypeContext;
import com.yahoo.tensor.functions.Argmax;
import com.yahoo.tensor.functions.Argmin;
import com.yahoo.tensor.functions.CellCast;
@@ -20,7 +19,7 @@ import com.yahoo.tensor.functions.Reduce;
import com.yahoo.tensor.functions.Rename;
import com.yahoo.tensor.functions.Softmax;
import com.yahoo.tensor.functions.XwPlusB;
-import com.yahoo.text.Ascii7BitMatcher;
+import com.yahoo.tensor.functions.Expand;
import java.util.ArrayList;
import java.util.Arrays;
@@ -35,7 +34,7 @@ import java.util.function.DoubleUnaryOperator;
import java.util.function.Function;
import java.util.stream.Collectors;
-import static com.yahoo.text.Ascii7BitMatcher.charsAndNumbers;
+import static com.yahoo.tensor.functions.ScalarFunctions.Hamming;
/**
* A multidimensional array which can be used in computations.
@@ -209,6 +208,10 @@ public interface Tensor {
return new XwPlusB<>(new ConstantTensor<>(this), new ConstantTensor<>(w), new ConstantTensor<>(b), dimension).evaluate();
}
+ default Tensor expand(String dimension) {
+ return new Expand<>(new ConstantTensor<>(this), dimension).evaluate();
+ }
+
default Tensor argmax(String dimension) {
return new Argmax<>(new ConstantTensor<>(this), dimension).evaluate();
}
@@ -241,6 +244,7 @@ public interface Tensor {
default Tensor notEqual(Tensor argument) { return join(argument, (a, b) -> ( a != b ? 1.0 : 0.0)); }
default Tensor approxEqual(Tensor argument) { return join(argument, (a, b) -> ( approxEquals(a,b) ? 1.0 : 0.0)); }
default Tensor bit(Tensor argument) { return join(argument, (a,b) -> ((int)b < 8 && (int)b >= 0 && ((int)a & (1 << (int)b)) != 0) ? 1.0 : 0.0); }
+ default Tensor hamming(Tensor argument) { return join(argument, (a,b) -> Hamming.hamming(a,b)); }
default Tensor avg() { return avg(Collections.emptyList()); }
default Tensor avg(String dimension) { return avg(Collections.singletonList(dimension)); }
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java b/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java
index 71ed347219e..27e752f1180 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor;
import java.util.Arrays;
@@ -91,7 +91,7 @@ public abstract class TensorAddress implements Comparable<TensorAddress> {
return b.toString();
}
- /** Returns a label as a string with approriate quoting/escaping when necessary */
+ /** Returns a label as a string with appropriate quoting/escaping when necessary */
public static String labelToString(String label) {
if (TensorType.labelMatcher.matches(label)) return label; // no quoting
if (label.contains("'")) return "\"" + label + "\"";
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/TensorParser.java b/vespajlib/src/main/java/com/yahoo/tensor/TensorParser.java
index 0a1d9b6cf6e..32b36c5c5cb 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/TensorParser.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/TensorParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor;
import java.util.ArrayList;
@@ -124,15 +124,30 @@ class TensorParser {
if (type.isEmpty())
throw new IllegalArgumentException("The dense tensor form requires an explicit tensor type " +
"on the form 'tensor(dimensions):...");
- if (type.get().dimensions().stream().anyMatch(d -> (d.size().isEmpty())))
- throw new IllegalArgumentException("The dense tensor form requires a tensor type containing " +
- "only dense dimensions with a given size");
- IndexedTensor.BoundBuilder builder = (IndexedTensor.BoundBuilder) IndexedTensor.Builder.of(type.get());
- new DenseValueParser(valueString, dimensionOrder, builder).parse();
+ IndexedTensor.Builder builder = IndexedTensor.Builder.of(type.get());
+
+ if (type.get().dimensions().stream().anyMatch(d -> (d.size().isEmpty()))) {
+ new UnboundDenseValueParser(valueString, builder).parse();
+ return checkBoundDimensionSizes(builder.build());
+ }
+
+ new DenseValueParser(valueString, dimensionOrder, (IndexedTensor.BoundBuilder) builder).parse();
return builder.build();
}
+ private static Tensor checkBoundDimensionSizes(IndexedTensor tensor) {
+ TensorType type = tensor.type();
+ for (int i = 0; i < type.dimensions().size(); ++i) {
+ TensorType.Dimension dimension = type.dimensions().get(i);
+ if (dimension.size().isPresent() && dimension.size().get() != tensor.dimensionSizes().size(i)) {
+ throw new IllegalArgumentException("Unexpected size " + tensor.dimensionSizes().size(i) +
+ " for dimension " + dimension.name() + " for type " + type);
+ }
+ }
+ return tensor;
+ }
+
private static abstract class ValueParser {
protected final String string;
@@ -299,6 +314,64 @@ class TensorParser {
}
/**
+ * Parses unbound tensor short forms - e.g. tensor(x[],y[]):[[1,2,3],[4,5,6]]
+ */
+ private static class UnboundDenseValueParser extends ValueParser {
+
+ private final IndexedTensor.Builder builder;
+ private final long[] indexes;
+
+ public UnboundDenseValueParser(String string, IndexedTensor.Builder builder) {
+ super(string);
+ this.builder = builder;
+ this.indexes = new long[builder.type().dimensions().size()];
+ }
+
+ public void parse() {
+ consumeList(0);
+ }
+
+ private void consumeList(int dimension) {
+ consume('[');
+ indexes[dimension] = 0;
+ while ( ! atListEnd() ) {
+ if (isInnerMostDimension(dimension)) {
+ consumeNumber();
+ } else {
+ consumeList(dimension + 1);
+ }
+ indexes[dimension]++;
+ consumeOptional(',');
+ }
+ consume(']');
+ }
+
+ private void consumeNumber() {
+ Number number = consumeNumber(builder.type().valueType());
+ switch (builder.type().valueType()) {
+ case DOUBLE: builder.cell((Double)number, indexes); break;
+ case FLOAT: builder.cell((Float)number, indexes); break;
+ case BFLOAT16: builder.cell((Float)number, indexes); break;
+ case INT8: builder.cell((Float)number, indexes); break;
+ }
+ }
+
+ private boolean isInnerMostDimension(int dimension) {
+ return dimension == (indexes.length - 1);
+ }
+
+ protected boolean atListEnd() {
+ skipSpace();
+ if (position >= string.length()) {
+ throw new IllegalArgumentException("At value position " + position + ": Expected a ']'" +
+ " but got the end of the string");
+ }
+ return string.charAt(position) == ']';
+ }
+
+ }
+
+ /**
* Parses mixed tensor short forms {a:[1,2], ...} AND 1d mapped tensor short form {a:b, ...}.
*/
private static class MixedValueParser extends ValueParser {
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java b/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java
index 7867a53b8da..5b23d5d92ae 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor;
import com.google.common.collect.ImmutableList;
@@ -187,7 +187,7 @@ public class TensorType {
}
/**
- * Returns whether or not this type can simply be renamed to
+ * Returns whether this type can simply be renamed to
* the given type. This is the same as being assignable, but disregarding
* dimension names.
*/
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/TensorTypeParser.java b/vespajlib/src/main/java/com/yahoo/tensor/TensorTypeParser.java
index 4fdb0906740..f1d19ae91ab 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/TensorTypeParser.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/TensorTypeParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor;
import java.util.ArrayList;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/TypeResolver.java b/vespajlib/src/main/java/com/yahoo/tensor/TypeResolver.java
index 2bb9a99d6e5..dad93734b22 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/TypeResolver.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/TypeResolver.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/evaluation/EvaluationContext.java b/vespajlib/src/main/java/com/yahoo/tensor/evaluation/EvaluationContext.java
index 6e6b42cc1cd..fdd1ecc04f4 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/evaluation/EvaluationContext.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/evaluation/EvaluationContext.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.evaluation;
import com.yahoo.tensor.Tensor;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/evaluation/MapEvaluationContext.java b/vespajlib/src/main/java/com/yahoo/tensor/evaluation/MapEvaluationContext.java
index f684987476f..e4294ab2fa7 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/evaluation/MapEvaluationContext.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/evaluation/MapEvaluationContext.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.evaluation;
import com.yahoo.tensor.Tensor;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/evaluation/TypeContext.java b/vespajlib/src/main/java/com/yahoo/tensor/evaluation/TypeContext.java
index 84d82b624ba..29cd8b0044e 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/evaluation/TypeContext.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/evaluation/TypeContext.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.evaluation;
import com.yahoo.tensor.TensorType;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/evaluation/VariableTensor.java b/vespajlib/src/main/java/com/yahoo/tensor/evaluation/VariableTensor.java
index 8ea82aa4a79..a376536015a 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/evaluation/VariableTensor.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/evaluation/VariableTensor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.evaluation;
import com.yahoo.tensor.Tensor;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/evaluation/package-info.java b/vespajlib/src/main/java/com/yahoo/tensor/evaluation/package-info.java
index baa4b6e6a01..29d2f717b5c 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/evaluation/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/evaluation/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Tensor data types
*
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Argmax.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Argmax.java
index a4b68a662da..16ca7104f8d 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Argmax.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Argmax.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.google.common.collect.ImmutableList;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Argmin.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Argmin.java
index ad14bc1f1f2..fcdc1233550 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Argmin.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Argmin.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.google.common.collect.ImmutableList;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/CellCast.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/CellCast.java
index fe8b2f417aa..8c6c27e171a 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/CellCast.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/CellCast.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.yahoo.tensor.Tensor;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/CompositeTensorFunction.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/CompositeTensorFunction.java
index eacc4493035..d22a406fdf9 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/CompositeTensorFunction.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/CompositeTensorFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.yahoo.tensor.Tensor;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Concat.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Concat.java
index ebb4dbcc3b6..32a4c8cd2ff 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Concat.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Concat.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.google.common.collect.ImmutableList;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/ConstantTensor.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/ConstantTensor.java
index bb7481f7c64..1544369ba2f 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/ConstantTensor.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/ConstantTensor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.yahoo.tensor.Tensor;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Diag.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Diag.java
index 203331a1c0d..2c0fa483021 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Diag.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Diag.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.yahoo.tensor.TensorType;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Expand.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Expand.java
new file mode 100644
index 00000000000..8fc246a7d9d
--- /dev/null
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Expand.java
@@ -0,0 +1,48 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.tensor.functions;
+
+import com.yahoo.tensor.TensorType;
+import com.yahoo.tensor.evaluation.Name;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * The <i>expand</i> tensor function returns a tensor with a new dimension of
+ * size 1 is added, equivalent to "tensor * tensor(dim_name[1])(1)".
+ *
+ * @author lesters
+ */
+public class Expand<NAMETYPE extends Name> extends CompositeTensorFunction<NAMETYPE> {
+
+ private final TensorFunction<NAMETYPE> argument;
+ private final String dimensionName;
+
+ public Expand(TensorFunction<NAMETYPE> argument, String dimension) {
+ this.argument = argument;
+ this.dimensionName = dimension;
+ }
+
+ @Override
+ public List<TensorFunction<NAMETYPE>> arguments() { return Collections.singletonList(argument); }
+
+ @Override
+ public TensorFunction<NAMETYPE> withArguments(List<TensorFunction<NAMETYPE>> arguments) {
+ if (arguments.size() != 1)
+ throw new IllegalArgumentException("Expand must have 1 argument, got " + arguments.size());
+ return new Expand<>(arguments.get(0), dimensionName);
+ }
+
+ @Override
+ public PrimitiveTensorFunction<NAMETYPE> toPrimitive() {
+ TensorType type = new TensorType.Builder(TensorType.Value.INT8).indexed(dimensionName, 1).build();
+ Generate<NAMETYPE> expansion = new Generate<>(type, ScalarFunctions.constant(1.0));
+ return new Join<>(expansion, argument, ScalarFunctions.multiply());
+ }
+
+ @Override
+ public String toString(ToStringContext context) {
+ return "expand(" + argument.toString(context) + ", " + dimensionName + ")";
+ }
+
+}
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Generate.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Generate.java
index 1a12c7a6370..89e981df49e 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Generate.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Generate.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.yahoo.tensor.DimensionSizes;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Join.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Join.java
index 0cbcfbb7ad6..0d4aeb5c37d 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Join.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Join.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.google.common.collect.ImmutableList;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/L1Normalize.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/L1Normalize.java
index ed4da6678ce..903d0b2dcd9 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/L1Normalize.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/L1Normalize.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.yahoo.tensor.evaluation.Name;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/L2Normalize.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/L2Normalize.java
index 93b2b377176..c862aa4eaf6 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/L2Normalize.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/L2Normalize.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.yahoo.tensor.evaluation.Name;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Map.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Map.java
index 77c23f2e603..40620cb95fe 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Map.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Map.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.yahoo.tensor.Tensor;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Matmul.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Matmul.java
index 54bfdd4a732..810e01011fe 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Matmul.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Matmul.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.google.common.collect.ImmutableList;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/PrimitiveTensorFunction.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/PrimitiveTensorFunction.java
index 99117bb250e..7693383b000 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/PrimitiveTensorFunction.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/PrimitiveTensorFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.yahoo.tensor.evaluation.Name;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Random.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Random.java
index b459b1a8ddd..8cf1964585a 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Random.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Random.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.yahoo.tensor.TensorType;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Range.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Range.java
index 00d0e4b4818..7d5b11d6672 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Range.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Range.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.yahoo.tensor.TensorType;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Reduce.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Reduce.java
index 879daefaf72..79209fd8f09 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Reduce.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Reduce.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.google.common.collect.ImmutableList;
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 83807a20ec9..9b56fefb5f0 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/ReduceJoin.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/ReduceJoin.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.google.common.collect.ImmutableList;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Rename.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Rename.java
index fc1e7737d83..67ede7f6540 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Rename.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Rename.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.google.common.collect.ImmutableList;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/ScalarFunctions.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/ScalarFunctions.java
index 3ee9e67cdd6..517f6683cbf 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/ScalarFunctions.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/ScalarFunctions.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.google.common.collect.ImmutableList;
@@ -33,6 +33,7 @@ public class ScalarFunctions {
public static DoubleBinaryOperator pow() { return new Pow(); }
public static DoubleBinaryOperator squareddifference() { return new SquaredDifference(); }
public static DoubleBinaryOperator subtract() { return new Subtract(); }
+ public static DoubleBinaryOperator hamming() { return new Hamming(); }
public static DoubleUnaryOperator abs() { return new Abs(); }
public static DoubleUnaryOperator acos() { return new Acos(); }
@@ -65,6 +66,7 @@ public class ScalarFunctions {
public static Function<List<Long>, Double> random() { return new Random(); }
public static Function<List<Long>, Double> equal(List<String> argumentNames) { return new EqualElements(argumentNames); }
public static Function<List<Long>, Double> sum(List<String> argumentNames) { return new SumElements(argumentNames); }
+ public static Function<List<Long>, Double> constant(double value) { return new Constant(value); }
// Binary operators -----------------------------------------------------------------------------
@@ -152,6 +154,26 @@ public class ScalarFunctions {
public String toString() { return "f(a,b)(a - b)"; }
}
+
+ public static class Hamming implements DoubleBinaryOperator {
+ public static double hamming(double left, double right) {
+ double distance = 0;
+ byte a = (byte) left;
+ byte b = (byte) right;
+ for (int i = 0; i < 8; i++) {
+ byte bit = (byte) (1 << i);
+ if ((a & bit) != (b & bit)) {
+ distance += 1;
+ }
+ }
+ return distance;
+ }
+ @Override
+ public double applyAsDouble(double left, double right) { return hamming(left, right); }
+ @Override
+ public String toString() { return "f(a,b)(hamming(a,b))"; }
+ }
+
// Unary operators ------------------------------------------------------------------------------
@@ -472,4 +494,19 @@ public class ScalarFunctions {
}
}
+ public static class Constant implements Function<List<Long>, Double> {
+ private final double value;
+
+ public Constant(double value) {
+ this.value = value;
+ }
+ @Override
+ public Double apply(List<Long> values) {
+ return value;
+ }
+ @Override
+ public String toString() { return Double.toString(value); }
+ }
+
+
}
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Softmax.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Softmax.java
index 755711a4d44..13420a12e8f 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Softmax.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Softmax.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.google.common.collect.ImmutableList;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/TensorFunction.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/TensorFunction.java
index 5c0d0a99441..81d3692bd94 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/TensorFunction.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/TensorFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.yahoo.tensor.Tensor;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/ToStringContext.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/ToStringContext.java
index 634ba4fe6ab..1c8da9a1dca 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/ToStringContext.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/ToStringContext.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/XwPlusB.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/XwPlusB.java
index 53e23674617..112a0d43796 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/XwPlusB.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/XwPlusB.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.google.common.collect.ImmutableList;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/package-info.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/package-info.java
index 3b6c6dd3162..d2cb701b483 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Tensor function evaluation
*
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/package-info.java b/vespajlib/src/main/java/com/yahoo/tensor/package-info.java
index 6c2cb03d261..f20c6327797 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Tensor data types
*
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/serialization/BinaryFormat.java b/vespajlib/src/main/java/com/yahoo/tensor/serialization/BinaryFormat.java
index 4ae25596a2b..af8d2af0db8 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/serialization/BinaryFormat.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/serialization/BinaryFormat.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.serialization;
import com.yahoo.io.GrowableByteBuffer;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/serialization/DenseBinaryFormat.java b/vespajlib/src/main/java/com/yahoo/tensor/serialization/DenseBinaryFormat.java
index 1567c95c9fa..530636f430c 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/serialization/DenseBinaryFormat.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/serialization/DenseBinaryFormat.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.serialization;
import com.yahoo.io.GrowableByteBuffer;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/serialization/JsonFormat.java b/vespajlib/src/main/java/com/yahoo/tensor/serialization/JsonFormat.java
index 461e73e3611..d7758f309db 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/serialization/JsonFormat.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/serialization/JsonFormat.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.serialization;
import com.yahoo.lang.MutableInteger;
@@ -9,13 +9,23 @@ import com.yahoo.slime.JsonDecoder;
import com.yahoo.slime.ObjectTraverser;
import com.yahoo.slime.Slime;
import com.yahoo.slime.Type;
+import com.yahoo.tensor.DimensionSizes;
import com.yahoo.tensor.IndexedTensor;
+import com.yahoo.tensor.MappedTensor;
import com.yahoo.tensor.MixedTensor;
import com.yahoo.tensor.Tensor;
import com.yahoo.tensor.TensorAddress;
import com.yahoo.tensor.TensorType;
+import com.yahoo.tensor.evaluation.Name;
+import com.yahoo.tensor.functions.ConstantTensor;
+import com.yahoo.tensor.functions.Slice;
+import java.util.ArrayList;
+import java.util.HashSet;
import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
/**
* Writes tensors on the JSON format used in Vespa tensor document fields:
@@ -44,6 +54,37 @@ public class JsonFormat {
return com.yahoo.slime.JsonFormat.toJsonBytes(slime);
}
+ /** Serializes the given tensor type and value into a short-form JSON format */
+ public static byte[] encodeShortForm(Tensor tensor) {
+ Slime slime = new Slime();
+ Cursor root = slime.setObject();
+ root.setString("type", tensor.type().toString());
+
+ // Encode as nested lists if indexed tensor
+ if (tensor instanceof IndexedTensor) {
+ IndexedTensor denseTensor = (IndexedTensor) tensor;
+ encodeValues(denseTensor, root.setArray("values"), new long[denseTensor.dimensionSizes().dimensions()], 0);
+ }
+
+ // Short form for a single mapped dimension
+ else if (tensor instanceof MappedTensor && tensor.type().dimensions().size() == 1) {
+ encodeSingleDimensionCells((MappedTensor) tensor, root);
+ }
+
+ // Short form for a mixed tensor
+ else if (tensor instanceof MixedTensor &&
+ tensor.type().dimensions().stream().filter(TensorType.Dimension::isMapped).count() >= 1) {
+ encodeBlocks((MixedTensor) tensor, root);
+ }
+
+ // No other short forms exist: default to standard cell address output
+ else {
+ encodeCells(tensor, root);
+ }
+
+ return com.yahoo.slime.JsonFormat.toJsonBytes(slime);
+ }
+
private static void encodeCells(Tensor tensor, Cursor rootObject) {
Cursor cellsArray = rootObject.setArray("cells");
for (Iterator<Tensor.Cell> i = tensor.cellIterator(); i.hasNext(); ) {
@@ -54,11 +95,78 @@ public class JsonFormat {
}
}
+ private static void encodeSingleDimensionCells(MappedTensor tensor, Cursor cursor) {
+ Cursor cells = cursor.setObject("cells");
+ if (tensor.type().dimensions().size() > 1)
+ throw new IllegalStateException("JSON encode of mapped tensor can only contain a single dimension");
+ tensor.cells().forEach((k,v) -> cells.setDouble(k.label(0), v));
+ }
+
private static void encodeAddress(TensorType type, TensorAddress address, Cursor addressObject) {
for (int i = 0; i < address.size(); i++)
addressObject.setString(type.dimensions().get(i).name(), address.label(i));
}
+ private static void encodeValues(IndexedTensor tensor, Cursor cursor, long[] indexes, int dimension) {
+ DimensionSizes sizes = tensor.dimensionSizes();
+ for (indexes[dimension] = 0; indexes[dimension] < sizes.size(dimension); ++indexes[dimension]) {
+ if (dimension < (sizes.dimensions() - 1)) {
+ encodeValues(tensor, cursor.addArray(), indexes, dimension + 1);
+ } else {
+ cursor.addDouble(tensor.get(indexes));
+ }
+ }
+ }
+
+ private static void encodeBlocks(MixedTensor tensor, Cursor cursor) {
+ var mappedDimensions = tensor.type().dimensions().stream().filter(d -> d.isMapped())
+ .map(d -> TensorType.Dimension.mapped(d.name())).collect(Collectors.toList());
+ if (mappedDimensions.size() < 1) {
+ throw new IllegalArgumentException("Should be ensured by caller");
+ }
+ cursor = (mappedDimensions.size() == 1) ? cursor.setObject("blocks") : cursor.setArray("blocks");
+
+ // Create tensor type for mapped dimensions subtype
+ TensorType mappedSubType = new TensorType.Builder(mappedDimensions).build();
+
+ // Find all unique indices for the mapped dimensions
+ Set<TensorAddress> denseSubSpaceAddresses = new HashSet<>();
+ tensor.cellIterator().forEachRemaining((cell) -> {
+ denseSubSpaceAddresses.add(subAddress(cell.getKey(), mappedSubType, tensor.type()));
+ });
+
+ // Slice out dense subspace of each and encode dense subspace as a list
+ for (TensorAddress denseSubSpaceAddress : denseSubSpaceAddresses) {
+ IndexedTensor denseSubspace = (IndexedTensor) sliceSubAddress(tensor, denseSubSpaceAddress, mappedSubType);
+
+ if (mappedDimensions.size() == 1) {
+ encodeValues(denseSubspace, cursor.setArray(denseSubSpaceAddress.label(0)), new long[denseSubspace.dimensionSizes().dimensions()], 0);
+ } else {
+ Cursor block = cursor.addObject();
+ encodeAddress(mappedSubType, denseSubSpaceAddress, block.setObject("address"));
+ encodeValues(denseSubspace, block.setArray("values"), new long[denseSubspace.dimensionSizes().dimensions()], 0);
+ }
+
+ }
+ }
+
+ private static TensorAddress subAddress(TensorAddress address, TensorType subType, TensorType origType) {
+ TensorAddress.Builder builder = new TensorAddress.Builder(subType);
+ for (TensorType.Dimension dim : subType.dimensions()) {
+ builder.add(dim.name(), address.label(origType.indexOfDimension(dim.name()).
+ orElseThrow(() -> new IllegalStateException("Could not find mapped dimension index"))));
+ }
+ return builder.build();
+ }
+
+ private static Tensor sliceSubAddress(Tensor tensor, TensorAddress subAddress, TensorType subType) {
+ List<Slice.DimensionValue<Name>> sliceDims = new ArrayList<>(subAddress.size());
+ for (int i = 0; i < subAddress.size(); ++i) {
+ sliceDims.add(new Slice.DimensionValue<>(subType.dimensions().get(i).name(), subAddress.label(i)));
+ }
+ return new Slice<>(new ConstantTensor<>(tensor), sliceDims).evaluate();
+ }
+
/** Deserializes the given tensor from JSON format */
// NOTE: This must be kept in sync with com.yahoo.document.json.readers.TensorReader in the document module
public static Tensor decode(TensorType type, byte[] jsonTensorValue) {
@@ -72,17 +180,17 @@ public class JsonFormat {
else if (root.field("blocks").valid())
decodeBlocks(root.field("blocks"), builder);
else if (builder.type().dimensions().stream().anyMatch(d -> d.isIndexed())) // sparse can be empty
- throw new IllegalArgumentException("Expected a tensor value to contain either 'cells' or 'values'");
+ throw new IllegalArgumentException("Expected a tensor value to contain either 'cells' or 'values' or 'blocks'");
return builder.build();
}
private static void decodeCells(Inspector cells, Tensor.Builder builder) {
- if ( cells.type() == Type.ARRAY)
+ if (cells.type() == Type.ARRAY)
cells.traverse((ArrayTraverser) (__, cell) -> decodeCell(cell, builder));
else if (cells.type() == Type.OBJECT)
cells.traverse((ObjectTraverser) (key, value) -> decodeSingleDimensionCell(key, value, builder));
else
- throw new IllegalArgumentException("Excepted 'cells' to contain an array or obejct, not " + cells.type());
+ throw new IllegalArgumentException("Excepted 'cells' to contain an array or object, not " + cells.type());
}
private static void decodeCell(Inspector cell, Tensor.Builder builder) {
@@ -106,18 +214,23 @@ public class JsonFormat {
IndexedTensor.BoundBuilder indexedBuilder = (IndexedTensor.BoundBuilder)builder;
if (values.type() == Type.STRING) {
double[] decoded = decodeHexString(values.asString(), builder.type().valueType());
+ if (decoded.length == 0)
+ throw new IllegalArgumentException("The 'values' string does not contain any values");
for (int i = 0; i < decoded.length; i++) {
indexedBuilder.cellByDirectIndex(i, decoded[i]);
}
return;
}
- if ( values.type() != Type.ARRAY)
+ if (values.type() != Type.ARRAY)
throw new IllegalArgumentException("Excepted 'values' to contain an array, not " + values.type());
+ if (values.entries() == 0)
+ throw new IllegalArgumentException("The 'values' array does not contain any values");
MutableInteger index = new MutableInteger(0);
values.traverse((ArrayTraverser) (__, value) -> {
- if (value.type() != Type.LONG && value.type() != Type.DOUBLE)
+ if (value.type() != Type.LONG && value.type() != Type.DOUBLE) {
throw new IllegalArgumentException("Excepted the values array to contain numbers, not " + value.type());
+ }
indexedBuilder.cellByDirectIndex(index.next(), value.asDouble());
});
}
@@ -145,7 +258,7 @@ public class JsonFormat {
private static void decodeSingleDimensionBlock(String key, Inspector value, MixedTensor.BoundBuilder mixedBuilder) {
if (value.type() != Type.ARRAY)
- throw new IllegalArgumentException("Expected an item in a 'blocks' array to be an object, not " + value.type());
+ throw new IllegalArgumentException("Expected an item in a 'blocks' array to be an array, not " + value.type());
mixedBuilder.block(asAddress(key, mixedBuilder.type().mappedSubtype()),
decodeValues(value, mixedBuilder));
}
@@ -234,9 +347,15 @@ public class JsonFormat {
private static double[] decodeValues(Inspector valuesField, MixedTensor.BoundBuilder mixedBuilder) {
double[] values = new double[(int)mixedBuilder.denseSubspaceSize()];
if (valuesField.type() == Type.ARRAY) {
+ if (valuesField.entries() == 0) {
+ throw new IllegalArgumentException("The 'block' value array does not contain any values");
+ }
valuesField.traverse((ArrayTraverser) (index, value) -> values[index] = decodeNumeric(value));
} else if (valuesField.type() == Type.STRING) {
double[] decoded = decodeHexString(valuesField.asString(), mixedBuilder.type().valueType());
+ if (decoded.length == 0) {
+ throw new IllegalArgumentException("The 'block' value string does not contain any values");
+ }
for (int i = 0; i < decoded.length; i++) {
values[i] = decoded[i];
}
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/serialization/MixedBinaryFormat.java b/vespajlib/src/main/java/com/yahoo/tensor/serialization/MixedBinaryFormat.java
index 6cb9a63fe68..2a55ac658b1 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/serialization/MixedBinaryFormat.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/serialization/MixedBinaryFormat.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.serialization;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/serialization/SparseBinaryFormat.java b/vespajlib/src/main/java/com/yahoo/tensor/serialization/SparseBinaryFormat.java
index 763b722a90c..8c235a53bec 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/serialization/SparseBinaryFormat.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/serialization/SparseBinaryFormat.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.serialization;
import com.yahoo.io.GrowableByteBuffer;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/serialization/TypedBinaryFormat.java b/vespajlib/src/main/java/com/yahoo/tensor/serialization/TypedBinaryFormat.java
index be04be80ed9..eddb90ea84c 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/serialization/TypedBinaryFormat.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/serialization/TypedBinaryFormat.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.serialization;
import com.yahoo.io.GrowableByteBuffer;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/serialization/package-info.java b/vespajlib/src/main/java/com/yahoo/tensor/serialization/package-info.java
index 058a78e39e4..b9c771a5b5b 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/serialization/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/serialization/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.tensor.serialization;
diff --git a/vespajlib/src/main/java/com/yahoo/text/AbstractUtf8Array.java b/vespajlib/src/main/java/com/yahoo/text/AbstractUtf8Array.java
index 23db166478e..4994479047e 100644
--- a/vespajlib/src/main/java/com/yahoo/text/AbstractUtf8Array.java
+++ b/vespajlib/src/main/java/com/yahoo/text/AbstractUtf8Array.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import java.nio.ByteBuffer;
diff --git a/vespajlib/src/main/java/com/yahoo/text/Ascii.java b/vespajlib/src/main/java/com/yahoo/text/Ascii.java
index 85636234f4e..9b9f8c8df46 100644
--- a/vespajlib/src/main/java/com/yahoo/text/Ascii.java
+++ b/vespajlib/src/main/java/com/yahoo/text/Ascii.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import java.io.ByteArrayOutputStream;
diff --git a/vespajlib/src/main/java/com/yahoo/text/BooleanParser.java b/vespajlib/src/main/java/com/yahoo/text/BooleanParser.java
index 52534af07b5..944872777d1 100644
--- a/vespajlib/src/main/java/com/yahoo/text/BooleanParser.java
+++ b/vespajlib/src/main/java/com/yahoo/text/BooleanParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/text/CaseInsensitiveIdentifier.java b/vespajlib/src/main/java/com/yahoo/text/CaseInsensitiveIdentifier.java
index 807120faa65..d0c2a27cdee 100644
--- a/vespajlib/src/main/java/com/yahoo/text/CaseInsensitiveIdentifier.java
+++ b/vespajlib/src/main/java/com/yahoo/text/CaseInsensitiveIdentifier.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/text/DataTypeIdentifier.java b/vespajlib/src/main/java/com/yahoo/text/DataTypeIdentifier.java
index bbf4d864e09..d6d0cbca624 100644
--- a/vespajlib/src/main/java/com/yahoo/text/DataTypeIdentifier.java
+++ b/vespajlib/src/main/java/com/yahoo/text/DataTypeIdentifier.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/text/ForwardWriter.java b/vespajlib/src/main/java/com/yahoo/text/ForwardWriter.java
index 887f469c370..3fb2e37649c 100644
--- a/vespajlib/src/main/java/com/yahoo/text/ForwardWriter.java
+++ b/vespajlib/src/main/java/com/yahoo/text/ForwardWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import java.io.IOException;
diff --git a/vespajlib/src/main/java/com/yahoo/text/GenericWriter.java b/vespajlib/src/main/java/com/yahoo/text/GenericWriter.java
index 3a395b1aa6f..29f0f2d4fc5 100644
--- a/vespajlib/src/main/java/com/yahoo/text/GenericWriter.java
+++ b/vespajlib/src/main/java/com/yahoo/text/GenericWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import java.io.IOException;
diff --git a/vespajlib/src/main/java/com/yahoo/text/HTML.java b/vespajlib/src/main/java/com/yahoo/text/HTML.java
index 0ae69287ff8..c7295695414 100644
--- a/vespajlib/src/main/java/com/yahoo/text/HTML.java
+++ b/vespajlib/src/main/java/com/yahoo/text/HTML.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
diff --git a/vespajlib/src/main/java/com/yahoo/text/Identifier.java b/vespajlib/src/main/java/com/yahoo/text/Identifier.java
index 1746ab7b2bb..3ca61368fcb 100644
--- a/vespajlib/src/main/java/com/yahoo/text/Identifier.java
+++ b/vespajlib/src/main/java/com/yahoo/text/Identifier.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/text/JSON.java b/vespajlib/src/main/java/com/yahoo/text/JSON.java
index 2757bd7945c..6f8ef9a289f 100644
--- a/vespajlib/src/main/java/com/yahoo/text/JSON.java
+++ b/vespajlib/src/main/java/com/yahoo/text/JSON.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import com.yahoo.slime.Slime;
diff --git a/vespajlib/src/main/java/com/yahoo/text/JSONWriter.java b/vespajlib/src/main/java/com/yahoo/text/JSONWriter.java
index ec7843e4413..bf89d9c4547 100644
--- a/vespajlib/src/main/java/com/yahoo/text/JSONWriter.java
+++ b/vespajlib/src/main/java/com/yahoo/text/JSONWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import java.io.IOException;
diff --git a/vespajlib/src/main/java/com/yahoo/text/JavaWriterWriter.java b/vespajlib/src/main/java/com/yahoo/text/JavaWriterWriter.java
index 9608847ae9f..cfbcf7353d3 100644
--- a/vespajlib/src/main/java/com/yahoo/text/JavaWriterWriter.java
+++ b/vespajlib/src/main/java/com/yahoo/text/JavaWriterWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import java.io.IOException;
diff --git a/vespajlib/src/main/java/com/yahoo/text/Lowercase.java b/vespajlib/src/main/java/com/yahoo/text/Lowercase.java
index 6304f7f0a39..32cc7eec102 100644
--- a/vespajlib/src/main/java/com/yahoo/text/Lowercase.java
+++ b/vespajlib/src/main/java/com/yahoo/text/Lowercase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import java.util.Locale;
diff --git a/vespajlib/src/main/java/com/yahoo/text/LowercaseIdentifier.java b/vespajlib/src/main/java/com/yahoo/text/LowercaseIdentifier.java
index 031d3ccd264..0091fed2a67 100644
--- a/vespajlib/src/main/java/com/yahoo/text/LowercaseIdentifier.java
+++ b/vespajlib/src/main/java/com/yahoo/text/LowercaseIdentifier.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/text/MapParser.java b/vespajlib/src/main/java/com/yahoo/text/MapParser.java
index 2a9fe148194..cd0ff19afd1 100644
--- a/vespajlib/src/main/java/com/yahoo/text/MapParser.java
+++ b/vespajlib/src/main/java/com/yahoo/text/MapParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import java.util.HashMap;
diff --git a/vespajlib/src/main/java/com/yahoo/text/PositionedString.java b/vespajlib/src/main/java/com/yahoo/text/PositionedString.java
index d1c0f06b97e..9285f8ba8af 100644
--- a/vespajlib/src/main/java/com/yahoo/text/PositionedString.java
+++ b/vespajlib/src/main/java/com/yahoo/text/PositionedString.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/text/SimpleMapParser.java b/vespajlib/src/main/java/com/yahoo/text/SimpleMapParser.java
index d71b73c6f9f..185f2e34ab8 100644
--- a/vespajlib/src/main/java/com/yahoo/text/SimpleMapParser.java
+++ b/vespajlib/src/main/java/com/yahoo/text/SimpleMapParser.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/text/StringUtilities.java b/vespajlib/src/main/java/com/yahoo/text/StringUtilities.java
index 370d079b3ec..0b6d707e0fd 100644
--- a/vespajlib/src/main/java/com/yahoo/text/StringUtilities.java
+++ b/vespajlib/src/main/java/com/yahoo/text/StringUtilities.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import com.google.common.collect.ImmutableSet;
diff --git a/vespajlib/src/main/java/com/yahoo/text/Text.java b/vespajlib/src/main/java/com/yahoo/text/Text.java
index d147c4d7dc8..662100aa8ea 100644
--- a/vespajlib/src/main/java/com/yahoo/text/Text.java
+++ b/vespajlib/src/main/java/com/yahoo/text/Text.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import java.util.Locale;
diff --git a/vespajlib/src/main/java/com/yahoo/text/Utf8.java b/vespajlib/src/main/java/com/yahoo/text/Utf8.java
index b81f0447d04..a71406582fa 100644
--- a/vespajlib/src/main/java/com/yahoo/text/Utf8.java
+++ b/vespajlib/src/main/java/com/yahoo/text/Utf8.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import java.io.IOException;
diff --git a/vespajlib/src/main/java/com/yahoo/text/Utf8Array.java b/vespajlib/src/main/java/com/yahoo/text/Utf8Array.java
index a628c2f6744..75498ecc69c 100644
--- a/vespajlib/src/main/java/com/yahoo/text/Utf8Array.java
+++ b/vespajlib/src/main/java/com/yahoo/text/Utf8Array.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
diff --git a/vespajlib/src/main/java/com/yahoo/text/Utf8PartialArray.java b/vespajlib/src/main/java/com/yahoo/text/Utf8PartialArray.java
index 94adc203f40..7f76d17ce8e 100644
--- a/vespajlib/src/main/java/com/yahoo/text/Utf8PartialArray.java
+++ b/vespajlib/src/main/java/com/yahoo/text/Utf8PartialArray.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/text/Utf8String.java b/vespajlib/src/main/java/com/yahoo/text/Utf8String.java
index f19ad48feab..1530f7effff 100644
--- a/vespajlib/src/main/java/com/yahoo/text/Utf8String.java
+++ b/vespajlib/src/main/java/com/yahoo/text/Utf8String.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
diff --git a/vespajlib/src/main/java/com/yahoo/text/XML.java b/vespajlib/src/main/java/com/yahoo/text/XML.java
index 35fc41ab988..c6f235f486c 100644
--- a/vespajlib/src/main/java/com/yahoo/text/XML.java
+++ b/vespajlib/src/main/java/com/yahoo/text/XML.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import java.io.File;
diff --git a/vespajlib/src/main/java/com/yahoo/text/XMLWriter.java b/vespajlib/src/main/java/com/yahoo/text/XMLWriter.java
index 1427fdfc428..6f0932514e6 100644
--- a/vespajlib/src/main/java/com/yahoo/text/XMLWriter.java
+++ b/vespajlib/src/main/java/com/yahoo/text/XMLWriter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import java.io.Writer;
diff --git a/vespajlib/src/main/java/com/yahoo/text/package-info.java b/vespajlib/src/main/java/com/yahoo/text/package-info.java
index adffd7e0e91..70b892e55ae 100644
--- a/vespajlib/src/main/java/com/yahoo/text/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/text/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.text;
diff --git a/vespajlib/src/main/java/com/yahoo/time/TimeBudget.java b/vespajlib/src/main/java/com/yahoo/time/TimeBudget.java
index b3750440493..cf69cfb4fcd 100644
--- a/vespajlib/src/main/java/com/yahoo/time/TimeBudget.java
+++ b/vespajlib/src/main/java/com/yahoo/time/TimeBudget.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.time;
import com.google.common.util.concurrent.UncheckedTimeoutException;
diff --git a/vespajlib/src/main/java/com/yahoo/time/package-info.java b/vespajlib/src/main/java/com/yahoo/time/package-info.java
index 1b24da17655..1b8a4f4b8b8 100644
--- a/vespajlib/src/main/java/com/yahoo/time/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/time/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.time;
diff --git a/vespajlib/src/main/java/com/yahoo/transaction/AbstractTransaction.java b/vespajlib/src/main/java/com/yahoo/transaction/AbstractTransaction.java
index 836647e9b4e..150d29982ea 100644
--- a/vespajlib/src/main/java/com/yahoo/transaction/AbstractTransaction.java
+++ b/vespajlib/src/main/java/com/yahoo/transaction/AbstractTransaction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.transaction;
import java.util.ArrayList;
diff --git a/vespajlib/src/main/java/com/yahoo/transaction/Mutex.java b/vespajlib/src/main/java/com/yahoo/transaction/Mutex.java
index f258aa2961e..8a1ed7fc828 100644
--- a/vespajlib/src/main/java/com/yahoo/transaction/Mutex.java
+++ b/vespajlib/src/main/java/com/yahoo/transaction/Mutex.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.transaction;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/transaction/NestedTransaction.java b/vespajlib/src/main/java/com/yahoo/transaction/NestedTransaction.java
index af22cb77690..25e6222486c 100644
--- a/vespajlib/src/main/java/com/yahoo/transaction/NestedTransaction.java
+++ b/vespajlib/src/main/java/com/yahoo/transaction/NestedTransaction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.transaction;
import java.util.ArrayList;
diff --git a/vespajlib/src/main/java/com/yahoo/transaction/Transaction.java b/vespajlib/src/main/java/com/yahoo/transaction/Transaction.java
index f95bbaf93b0..926b851579c 100644
--- a/vespajlib/src/main/java/com/yahoo/transaction/Transaction.java
+++ b/vespajlib/src/main/java/com/yahoo/transaction/Transaction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.transaction;
import java.util.List;
diff --git a/vespajlib/src/main/java/com/yahoo/transaction/package-info.java b/vespajlib/src/main/java/com/yahoo/transaction/package-info.java
index 01b9b86314f..3b61875bd77 100644
--- a/vespajlib/src/main/java/com/yahoo/transaction/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/transaction/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.transaction;
diff --git a/vespajlib/src/main/java/com/yahoo/vespa/VersionTagger.java b/vespajlib/src/main/java/com/yahoo/vespa/VersionTagger.java
index 004e584a4a9..8f089bfc8d6 100644
--- a/vespajlib/src/main/java/com/yahoo/vespa/VersionTagger.java
+++ b/vespajlib/src/main/java/com/yahoo/vespa/VersionTagger.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa;
import java.io.BufferedReader;
diff --git a/vespajlib/src/main/java/com/yahoo/vespa/objects/BufferSerializer.java b/vespajlib/src/main/java/com/yahoo/vespa/objects/BufferSerializer.java
index 26a38cfbe3d..1bf71f51112 100644
--- a/vespajlib/src/main/java/com/yahoo/vespa/objects/BufferSerializer.java
+++ b/vespajlib/src/main/java/com/yahoo/vespa/objects/BufferSerializer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.objects;
import com.yahoo.io.GrowableByteBuffer;
diff --git a/vespajlib/src/main/java/com/yahoo/vespa/objects/Deserializer.java b/vespajlib/src/main/java/com/yahoo/vespa/objects/Deserializer.java
index fe042d19109..d8ee9308146 100644
--- a/vespajlib/src/main/java/com/yahoo/vespa/objects/Deserializer.java
+++ b/vespajlib/src/main/java/com/yahoo/vespa/objects/Deserializer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.objects;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/vespa/objects/FieldBase.java b/vespajlib/src/main/java/com/yahoo/vespa/objects/FieldBase.java
index c53ae206949..2d7864977fa 100644
--- a/vespajlib/src/main/java/com/yahoo/vespa/objects/FieldBase.java
+++ b/vespajlib/src/main/java/com/yahoo/vespa/objects/FieldBase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.objects;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/vespa/objects/Identifiable.java b/vespajlib/src/main/java/com/yahoo/vespa/objects/Identifiable.java
index 78fad5f5867..8c11a0cbda1 100644
--- a/vespajlib/src/main/java/com/yahoo/vespa/objects/Identifiable.java
+++ b/vespajlib/src/main/java/com/yahoo/vespa/objects/Identifiable.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.objects;
import com.yahoo.collections.Pair;
diff --git a/vespajlib/src/main/java/com/yahoo/vespa/objects/Ids.java b/vespajlib/src/main/java/com/yahoo/vespa/objects/Ids.java
index 02ae6a58bf7..93bfa3f0dde 100644
--- a/vespajlib/src/main/java/com/yahoo/vespa/objects/Ids.java
+++ b/vespajlib/src/main/java/com/yahoo/vespa/objects/Ids.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.objects;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/vespa/objects/ObjectDumper.java b/vespajlib/src/main/java/com/yahoo/vespa/objects/ObjectDumper.java
index 4d8b5012c81..14e1943206b 100755
--- a/vespajlib/src/main/java/com/yahoo/vespa/objects/ObjectDumper.java
+++ b/vespajlib/src/main/java/com/yahoo/vespa/objects/ObjectDumper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.objects;
import com.yahoo.vespa.objects.ObjectVisitor;
diff --git a/vespajlib/src/main/java/com/yahoo/vespa/objects/ObjectOperation.java b/vespajlib/src/main/java/com/yahoo/vespa/objects/ObjectOperation.java
index 4a26564c2ca..1eff5c0120b 100755
--- a/vespajlib/src/main/java/com/yahoo/vespa/objects/ObjectOperation.java
+++ b/vespajlib/src/main/java/com/yahoo/vespa/objects/ObjectOperation.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.objects;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/vespa/objects/ObjectPredicate.java b/vespajlib/src/main/java/com/yahoo/vespa/objects/ObjectPredicate.java
index d25d7c58dd0..a555c7688ae 100755
--- a/vespajlib/src/main/java/com/yahoo/vespa/objects/ObjectPredicate.java
+++ b/vespajlib/src/main/java/com/yahoo/vespa/objects/ObjectPredicate.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.objects;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/vespa/objects/ObjectVisitor.java b/vespajlib/src/main/java/com/yahoo/vespa/objects/ObjectVisitor.java
index a362cc670ee..6b28dfc3f03 100755
--- a/vespajlib/src/main/java/com/yahoo/vespa/objects/ObjectVisitor.java
+++ b/vespajlib/src/main/java/com/yahoo/vespa/objects/ObjectVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.objects;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/vespa/objects/Selectable.java b/vespajlib/src/main/java/com/yahoo/vespa/objects/Selectable.java
index e60bb664d7d..407e784cd9c 100644
--- a/vespajlib/src/main/java/com/yahoo/vespa/objects/Selectable.java
+++ b/vespajlib/src/main/java/com/yahoo/vespa/objects/Selectable.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.objects;
/**
diff --git a/vespajlib/src/main/java/com/yahoo/vespa/objects/Serializer.java b/vespajlib/src/main/java/com/yahoo/vespa/objects/Serializer.java
index 96519ae4b0b..4dc27392caa 100644
--- a/vespajlib/src/main/java/com/yahoo/vespa/objects/Serializer.java
+++ b/vespajlib/src/main/java/com/yahoo/vespa/objects/Serializer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.objects;
import java.nio.ByteBuffer;
diff --git a/vespajlib/src/main/java/com/yahoo/vespa/objects/package-info.java b/vespajlib/src/main/java/com/yahoo/vespa/objects/package-info.java
index babf700e822..ea0274b281e 100644
--- a/vespajlib/src/main/java/com/yahoo/vespa/objects/package-info.java
+++ b/vespajlib/src/main/java/com/yahoo/vespa/objects/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.vespa.objects;
diff --git a/vespajlib/src/main/java/net/jpountz/lz4/package-info.java b/vespajlib/src/main/java/net/jpountz/lz4/package-info.java
index 3536beff420..478f666dab4 100644
--- a/vespajlib/src/main/java/net/jpountz/lz4/package-info.java
+++ b/vespajlib/src/main/java/net/jpountz/lz4/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage(version = @Version(major = 1, minor = 7, micro = 1))
package net.jpountz.lz4;
import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/http-utils/src/test/java/ai/vespa/util/http/hc4/VespaHttpClientBuilderTest.java b/vespajlib/src/test/java/ai/vespa/util/http/hc4/VespaHttpClientBuilderTest.java
index 58aa70b69b1..58aa70b69b1 100644
--- a/http-utils/src/test/java/ai/vespa/util/http/hc4/VespaHttpClientBuilderTest.java
+++ b/vespajlib/src/test/java/ai/vespa/util/http/hc4/VespaHttpClientBuilderTest.java
diff --git a/http-utils/src/test/java/ai/vespa/util/http/hc4/retry/DelayedConnectionLevelRetryHandlerTest.java b/vespajlib/src/test/java/ai/vespa/util/http/hc4/retry/DelayedConnectionLevelRetryHandlerTest.java
index 7330a91d75c..7330a91d75c 100644
--- a/http-utils/src/test/java/ai/vespa/util/http/hc4/retry/DelayedConnectionLevelRetryHandlerTest.java
+++ b/vespajlib/src/test/java/ai/vespa/util/http/hc4/retry/DelayedConnectionLevelRetryHandlerTest.java
diff --git a/http-utils/src/test/java/ai/vespa/util/http/hc4/retry/DelayedResponseLevelRetryHandlerTest.java b/vespajlib/src/test/java/ai/vespa/util/http/hc4/retry/DelayedResponseLevelRetryHandlerTest.java
index 514eae56fe8..adbc445de1a 100644
--- a/http-utils/src/test/java/ai/vespa/util/http/hc4/retry/DelayedResponseLevelRetryHandlerTest.java
+++ b/vespajlib/src/test/java/ai/vespa/util/http/hc4/retry/DelayedResponseLevelRetryHandlerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.util.http.hc4.retry;
import org.apache.http.HttpResponse;
diff --git a/http-utils/src/test/java/ai/vespa/util/http/hc5/HttpToHttpsRoutePlannerTest.java b/vespajlib/src/test/java/ai/vespa/util/http/hc5/HttpToHttpsRoutePlannerTest.java
index 58dc25fdf1a..78c413fba56 100644
--- a/http-utils/src/test/java/ai/vespa/util/http/hc5/HttpToHttpsRoutePlannerTest.java
+++ b/vespajlib/src/test/java/ai/vespa/util/http/hc5/HttpToHttpsRoutePlannerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.util.http.hc5;
import org.apache.hc.client5.http.HttpRoute;
diff --git a/vespajlib/src/test/java/com/yahoo/binaryprefix/BinaryScaledAmountTestCase.java b/vespajlib/src/test/java/com/yahoo/binaryprefix/BinaryScaledAmountTestCase.java
index dd4a2dee8b2..58f08518a21 100644
--- a/vespajlib/src/test/java/com/yahoo/binaryprefix/BinaryScaledAmountTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/binaryprefix/BinaryScaledAmountTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.binaryprefix;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/collections/ArraySetTestCase.java b/vespajlib/src/test/java/com/yahoo/collections/ArraySetTestCase.java
index 4e8398a3ef5..bd34f731de0 100644
--- a/vespajlib/src/test/java/com/yahoo/collections/ArraySetTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/collections/ArraySetTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import static org.junit.Assert.assertEquals;
diff --git a/vespajlib/src/test/java/com/yahoo/collections/BobHashTestCase.java b/vespajlib/src/test/java/com/yahoo/collections/BobHashTestCase.java
index f1835119d7e..36f88059dac 100644
--- a/vespajlib/src/test/java/com/yahoo/collections/BobHashTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/collections/BobHashTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/collections/ByteArrayComparatorTestCase.java b/vespajlib/src/test/java/com/yahoo/collections/ByteArrayComparatorTestCase.java
index 60761b1e530..0dba538c185 100644
--- a/vespajlib/src/test/java/com/yahoo/collections/ByteArrayComparatorTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/collections/ByteArrayComparatorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/collections/CollectionComparatorTestCase.java b/vespajlib/src/test/java/com/yahoo/collections/CollectionComparatorTestCase.java
index ed24a8585b6..ad7ddf4ff73 100644
--- a/vespajlib/src/test/java/com/yahoo/collections/CollectionComparatorTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/collections/CollectionComparatorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/collections/CollectionUtilTest.java b/vespajlib/src/test/java/com/yahoo/collections/CollectionUtilTest.java
index 30dd0b99d33..b96408f0877 100644
--- a/vespajlib/src/test/java/com/yahoo/collections/CollectionUtilTest.java
+++ b/vespajlib/src/test/java/com/yahoo/collections/CollectionUtilTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import org.junit.Before;
diff --git a/vespajlib/src/test/java/com/yahoo/collections/CollectionsBenchMark.java b/vespajlib/src/test/java/com/yahoo/collections/CollectionsBenchMark.java
index 3377bdd3eba..f577dcad302 100644
--- a/vespajlib/src/test/java/com/yahoo/collections/CollectionsBenchMark.java
+++ b/vespajlib/src/test/java/com/yahoo/collections/CollectionsBenchMark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import java.util.*;
import java.util.concurrent.ExecutorService;
diff --git a/vespajlib/src/test/java/com/yahoo/collections/ComparablesTest.java b/vespajlib/src/test/java/com/yahoo/collections/ComparablesTest.java
index 0ec9cd2d8f7..cdaead85d55 100644
--- a/vespajlib/src/test/java/com/yahoo/collections/ComparablesTest.java
+++ b/vespajlib/src/test/java/com/yahoo/collections/ComparablesTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
diff --git a/vespajlib/src/test/java/com/yahoo/collections/CopyOnWriteHashMapTestCase.java b/vespajlib/src/test/java/com/yahoo/collections/CopyOnWriteHashMapTestCase.java
index 4c18ff6b3c4..2072247bf96 100644
--- a/vespajlib/src/test/java/com/yahoo/collections/CopyOnWriteHashMapTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/collections/CopyOnWriteHashMapTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/collections/FreezableArrayListListener.java b/vespajlib/src/test/java/com/yahoo/collections/FreezableArrayListListener.java
index daaf7e8f470..d6da122d611 100644
--- a/vespajlib/src/test/java/com/yahoo/collections/FreezableArrayListListener.java
+++ b/vespajlib/src/test/java/com/yahoo/collections/FreezableArrayListListener.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/collections/HashletTestCase.java b/vespajlib/src/test/java/com/yahoo/collections/HashletTestCase.java
index 2307b2cbca9..59f0583cbd4 100644
--- a/vespajlib/src/test/java/com/yahoo/collections/HashletTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/collections/HashletTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/collections/IntArrayComparatorTestCase.java b/vespajlib/src/test/java/com/yahoo/collections/IntArrayComparatorTestCase.java
index 93cd55e961c..556836b0fbf 100644
--- a/vespajlib/src/test/java/com/yahoo/collections/IntArrayComparatorTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/collections/IntArrayComparatorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/collections/LazyMapTest.java b/vespajlib/src/test/java/com/yahoo/collections/LazyMapTest.java
index f7ca8ae17b7..760b094e8da 100644
--- a/vespajlib/src/test/java/com/yahoo/collections/LazyMapTest.java
+++ b/vespajlib/src/test/java/com/yahoo/collections/LazyMapTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/collections/LazySetTest.java b/vespajlib/src/test/java/com/yahoo/collections/LazySetTest.java
index a37f61a9198..32b3f77529a 100644
--- a/vespajlib/src/test/java/com/yahoo/collections/LazySetTest.java
+++ b/vespajlib/src/test/java/com/yahoo/collections/LazySetTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/collections/ListMapTestCase.java b/vespajlib/src/test/java/com/yahoo/collections/ListMapTestCase.java
index 9a44f8601b9..ca0b315c330 100644
--- a/vespajlib/src/test/java/com/yahoo/collections/ListMapTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/collections/ListMapTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/collections/ListenableArrayListTestCase.java b/vespajlib/src/test/java/com/yahoo/collections/ListenableArrayListTestCase.java
index 0be9185ae71..e2446314a54 100644
--- a/vespajlib/src/test/java/com/yahoo/collections/ListenableArrayListTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/collections/ListenableArrayListTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/collections/MD5TestCase.java b/vespajlib/src/test/java/com/yahoo/collections/MD5TestCase.java
index 3be483106f2..7ddb49ede77 100644
--- a/vespajlib/src/test/java/com/yahoo/collections/MD5TestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/collections/MD5TestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/collections/TinyIdentitySetTestCase.java b/vespajlib/src/test/java/com/yahoo/collections/TinyIdentitySetTestCase.java
index 98aaaf267e8..c3c1038816c 100644
--- a/vespajlib/src/test/java/com/yahoo/collections/TinyIdentitySetTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/collections/TinyIdentitySetTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import static org.junit.Assert.assertEquals;
diff --git a/vespajlib/src/test/java/com/yahoo/collections/TupleTestCase.java b/vespajlib/src/test/java/com/yahoo/collections/TupleTestCase.java
index f277caba9fc..7287ee54d8f 100644
--- a/vespajlib/src/test/java/com/yahoo/collections/TupleTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/collections/TupleTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.collections;
import static org.junit.Assert.*;
diff --git a/vespajlib/src/test/java/com/yahoo/compress/CompressorTest.java b/vespajlib/src/test/java/com/yahoo/compress/CompressorTest.java
index 0c6af48deb8..ad0043647da 100644
--- a/vespajlib/src/test/java/com/yahoo/compress/CompressorTest.java
+++ b/vespajlib/src/test/java/com/yahoo/compress/CompressorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.compress;
import org.junit.jupiter.api.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/compress/IntegerCompressorTest.java b/vespajlib/src/test/java/com/yahoo/compress/IntegerCompressorTest.java
index 2c88080b879..5a5cb2745d2 100644
--- a/vespajlib/src/test/java/com/yahoo/compress/IntegerCompressorTest.java
+++ b/vespajlib/src/test/java/com/yahoo/compress/IntegerCompressorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.compress;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/compress/LZ4CompressorTest.java b/vespajlib/src/test/java/com/yahoo/compress/LZ4CompressorTest.java
index d5830fe7629..09925b64b94 100644
--- a/vespajlib/src/test/java/com/yahoo/compress/LZ4CompressorTest.java
+++ b/vespajlib/src/test/java/com/yahoo/compress/LZ4CompressorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.compress;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/compress/ZstdCompressorTest.java b/vespajlib/src/test/java/com/yahoo/compress/ZstdCompressorTest.java
index f38ce4ad953..e65f02b960b 100644
--- a/vespajlib/src/test/java/com/yahoo/compress/ZstdCompressorTest.java
+++ b/vespajlib/src/test/java/com/yahoo/compress/ZstdCompressorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.compress;
import org.junit.jupiter.api.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/compress/ZstdOuputStreamTest.java b/vespajlib/src/test/java/com/yahoo/compress/ZstdOuputStreamTest.java
index 5d35eb10215..5f6140271ad 100644
--- a/vespajlib/src/test/java/com/yahoo/compress/ZstdOuputStreamTest.java
+++ b/vespajlib/src/test/java/com/yahoo/compress/ZstdOuputStreamTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.compress;
import org.junit.jupiter.api.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/concurrent/CompletableFuturesTest.java b/vespajlib/src/test/java/com/yahoo/concurrent/CompletableFuturesTest.java
index c2e82c1085f..d3fb450f5b9 100644
--- a/vespajlib/src/test/java/com/yahoo/concurrent/CompletableFuturesTest.java
+++ b/vespajlib/src/test/java/com/yahoo/concurrent/CompletableFuturesTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
import org.junit.jupiter.api.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/concurrent/CopyOnWriteHashMapTest.java b/vespajlib/src/test/java/com/yahoo/concurrent/CopyOnWriteHashMapTest.java
index f7dae5320f7..21570f9f4ed 100644
--- a/vespajlib/src/test/java/com/yahoo/concurrent/CopyOnWriteHashMapTest.java
+++ b/vespajlib/src/test/java/com/yahoo/concurrent/CopyOnWriteHashMapTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/concurrent/EventBarrierTestCase.java b/vespajlib/src/test/java/com/yahoo/concurrent/EventBarrierTestCase.java
index ad537237307..f6893e4e587 100644
--- a/vespajlib/src/test/java/com/yahoo/concurrent/EventBarrierTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/concurrent/EventBarrierTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/concurrent/ExecutorsTestCase.java b/vespajlib/src/test/java/com/yahoo/concurrent/ExecutorsTestCase.java
index 0666a085d51..707445efc5b 100644
--- a/vespajlib/src/test/java/com/yahoo/concurrent/ExecutorsTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/concurrent/ExecutorsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
import static org.junit.Assert.assertEquals;
diff --git a/vespajlib/src/test/java/com/yahoo/concurrent/ReceiverTestCase.java b/vespajlib/src/test/java/com/yahoo/concurrent/ReceiverTestCase.java
index 206c98c53be..97ae21be258 100644
--- a/vespajlib/src/test/java/com/yahoo/concurrent/ReceiverTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/concurrent/ReceiverTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
import static org.junit.Assert.*;
diff --git a/vespajlib/src/test/java/com/yahoo/concurrent/ThreadFactoryFactoryTest.java b/vespajlib/src/test/java/com/yahoo/concurrent/ThreadFactoryFactoryTest.java
index da27ed3f7c2..aa974438935 100644
--- a/vespajlib/src/test/java/com/yahoo/concurrent/ThreadFactoryFactoryTest.java
+++ b/vespajlib/src/test/java/com/yahoo/concurrent/ThreadFactoryFactoryTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/concurrent/ThreadLocalDirectoryTestCase.java b/vespajlib/src/test/java/com/yahoo/concurrent/ThreadLocalDirectoryTestCase.java
index 42e2f4f5f7a..da494fabdb4 100644
--- a/vespajlib/src/test/java/com/yahoo/concurrent/ThreadLocalDirectoryTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/concurrent/ThreadLocalDirectoryTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
import static org.junit.Assert.*;
diff --git a/vespajlib/src/test/java/com/yahoo/concurrent/ThreadRobustListTestCase.java b/vespajlib/src/test/java/com/yahoo/concurrent/ThreadRobustListTestCase.java
index adeb8846993..c7ef2b19f6e 100644
--- a/vespajlib/src/test/java/com/yahoo/concurrent/ThreadRobustListTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/concurrent/ThreadRobustListTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
import static org.junit.Assert.assertEquals;
diff --git a/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/JobControlStateMock.java b/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/JobControlStateMock.java
index 28c701a67db..191d2f2ee5a 100644
--- a/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/JobControlStateMock.java
+++ b/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/JobControlStateMock.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent.maintenance;
import com.yahoo.transaction.Mutex;
diff --git a/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/JobControlTest.java b/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/JobControlTest.java
index 5700be36413..62fcd885494 100644
--- a/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/JobControlTest.java
+++ b/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/JobControlTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent.maintenance;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/MaintainerTest.java b/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/MaintainerTest.java
index 7c196dc6627..7f2f0deea66 100644
--- a/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/MaintainerTest.java
+++ b/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/MaintainerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent.maintenance;
import com.google.common.util.concurrent.UncheckedTimeoutException;
diff --git a/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/TestMaintainer.java b/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/TestMaintainer.java
index a109064e101..1946f688df6 100644
--- a/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/TestMaintainer.java
+++ b/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/TestMaintainer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent.maintenance;
import java.time.Duration;
diff --git a/vespajlib/src/test/java/com/yahoo/data/access/InspectorConformanceTestBase.java b/vespajlib/src/test/java/com/yahoo/data/access/InspectorConformanceTestBase.java
index c0c287ddfb9..5d4a0dca694 100644
--- a/vespajlib/src/test/java/com/yahoo/data/access/InspectorConformanceTestBase.java
+++ b/vespajlib/src/test/java/com/yahoo/data/access/InspectorConformanceTestBase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.data.access;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/data/access/simple/SimpleConformanceTestCase.java b/vespajlib/src/test/java/com/yahoo/data/access/simple/SimpleConformanceTestCase.java
index daf62ca3ec1..454008bc0e8 100644
--- a/vespajlib/src/test/java/com/yahoo/data/access/simple/SimpleConformanceTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/data/access/simple/SimpleConformanceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.data.access.simple;
diff --git a/vespajlib/src/test/java/com/yahoo/data/access/slime/SlimeConformanceTestCase.java b/vespajlib/src/test/java/com/yahoo/data/access/slime/SlimeConformanceTestCase.java
index 57842e87e6c..66c05968401 100644
--- a/vespajlib/src/test/java/com/yahoo/data/access/slime/SlimeConformanceTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/data/access/slime/SlimeConformanceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.data.access.slime;
diff --git a/vespajlib/src/test/java/com/yahoo/geo/BoundingBoxParserTestCase.java b/vespajlib/src/test/java/com/yahoo/geo/BoundingBoxParserTestCase.java
index f6fed9d33ed..907a899f278 100644
--- a/vespajlib/src/test/java/com/yahoo/geo/BoundingBoxParserTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/geo/BoundingBoxParserTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.geo;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/geo/DegreesParserTestCase.java b/vespajlib/src/test/java/com/yahoo/geo/DegreesParserTestCase.java
index 2f12305cbb8..b68517fe219 100644
--- a/vespajlib/src/test/java/com/yahoo/geo/DegreesParserTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/geo/DegreesParserTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.geo;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/geo/OneDegreeParserTestCase.java b/vespajlib/src/test/java/com/yahoo/geo/OneDegreeParserTestCase.java
index b0da6a0a131..4f3bc471e8d 100644
--- a/vespajlib/src/test/java/com/yahoo/geo/OneDegreeParserTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/geo/OneDegreeParserTestCase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.geo;
diff --git a/vespajlib/src/test/java/com/yahoo/geo/ZCurveTestCase.java b/vespajlib/src/test/java/com/yahoo/geo/ZCurveTestCase.java
index b1a6149f956..b152e65da57 100644
--- a/vespajlib/src/test/java/com/yahoo/geo/ZCurveTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/geo/ZCurveTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.geo;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/io/ByteWriterTestCase.java b/vespajlib/src/test/java/com/yahoo/io/ByteWriterTestCase.java
index c6278133d4c..476bbe0570f 100644
--- a/vespajlib/src/test/java/com/yahoo/io/ByteWriterTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/io/ByteWriterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// 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.assertArrayEquals;
diff --git a/vespajlib/src/test/java/com/yahoo/io/FatalErrorHandlerTestCase.java b/vespajlib/src/test/java/com/yahoo/io/FatalErrorHandlerTestCase.java
index eee151b4b57..1999323af6b 100644
--- a/vespajlib/src/test/java/com/yahoo/io/FatalErrorHandlerTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/io/FatalErrorHandlerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// 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.*;
diff --git a/vespajlib/src/test/java/com/yahoo/io/FileReadTestCase.java b/vespajlib/src/test/java/com/yahoo/io/FileReadTestCase.java
index 1acd225b18a..ce94d4f90e8 100644
--- a/vespajlib/src/test/java/com/yahoo/io/FileReadTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/io/FileReadTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.io;
import org.junit.Test;
@@ -17,14 +17,14 @@ public class FileReadTestCase {
public void testReadByteArray() throws IOException {
byte[] thisFile = IOUtils.readFileBytes(new File("src/test/java/com/yahoo/io/FileReadTestCase.java"));
String str = new String(thisFile, Charset.forName("US-ASCII"));
- assertTrue(str.startsWith("// Copyright 2017 Yahoo Holdings."));
+ assertTrue(str.startsWith("// Copyright Yahoo."));
assertTrue(str.endsWith("// Yeppers\n"));
}
@Test
public void testReadString() throws IOException {
String str = IOUtils.readFile(new File("src/test/java/com/yahoo/io/FileReadTestCase.java"));
- assertTrue(str.startsWith("// Copyright 2017 Yahoo Holdings."));
+ assertTrue(str.startsWith("// Copyright Yahoo."));
assertTrue(str.endsWith("// Yeppers\n"));
}
diff --git a/vespajlib/src/test/java/com/yahoo/io/GrowableBufferOutputStreamTestCase.java b/vespajlib/src/test/java/com/yahoo/io/GrowableBufferOutputStreamTestCase.java
index 001023f62a4..9c905979131 100644
--- a/vespajlib/src/test/java/com/yahoo/io/GrowableBufferOutputStreamTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/io/GrowableBufferOutputStreamTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.io;
import java.nio.channels.WritableByteChannel;
diff --git a/vespajlib/src/test/java/com/yahoo/io/GrowableByteBufferTestCase.java b/vespajlib/src/test/java/com/yahoo/io/GrowableByteBufferTestCase.java
index 1dbc7661164..8be0b90ad51 100644
--- a/vespajlib/src/test/java/com/yahoo/io/GrowableByteBufferTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/io/GrowableByteBufferTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.io;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/io/HexDumpTestCase.java b/vespajlib/src/test/java/com/yahoo/io/HexDumpTestCase.java
index dcea8101d9c..20a91fe43cc 100644
--- a/vespajlib/src/test/java/com/yahoo/io/HexDumpTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/io/HexDumpTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.io;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/io/IOUtilsTestCase.java b/vespajlib/src/test/java/com/yahoo/io/IOUtilsTestCase.java
index 8955bd9ea05..1e4f6a6391f 100644
--- a/vespajlib/src/test/java/com/yahoo/io/IOUtilsTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/io/IOUtilsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.io;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/io/NativeIOTestCase.java b/vespajlib/src/test/java/com/yahoo/io/NativeIOTestCase.java
index 365786e1c2e..1d9c650684f 100644
--- a/vespajlib/src/test/java/com/yahoo/io/NativeIOTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/io/NativeIOTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.io;
import com.sun.jna.Platform;
diff --git a/vespajlib/src/test/java/com/yahoo/io/TeeInputStreamTest.java b/vespajlib/src/test/java/com/yahoo/io/TeeInputStreamTest.java
index 14e56c46912..7b944e92d48 100644
--- a/vespajlib/src/test/java/com/yahoo/io/TeeInputStreamTest.java
+++ b/vespajlib/src/test/java/com/yahoo/io/TeeInputStreamTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.io;
import java.io.*;
diff --git a/vespajlib/src/test/java/com/yahoo/io/reader/NamedReaderTestCase.java b/vespajlib/src/test/java/com/yahoo/io/reader/NamedReaderTestCase.java
index 6eb23277075..671b8a0fa9b 100644
--- a/vespajlib/src/test/java/com/yahoo/io/reader/NamedReaderTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/io/reader/NamedReaderTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.io.reader;
import java.io.IOException;
diff --git a/vespajlib/src/test/java/com/yahoo/javacc/FastCharStreamTestCase.java b/vespajlib/src/test/java/com/yahoo/javacc/FastCharStreamTestCase.java
index 5d768ee3b93..e0caad5adf5 100644
--- a/vespajlib/src/test/java/com/yahoo/javacc/FastCharStreamTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/javacc/FastCharStreamTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.javacc;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/javacc/UnicodeUtilitiesTestCase.java b/vespajlib/src/test/java/com/yahoo/javacc/UnicodeUtilitiesTestCase.java
index abeb42ca2e2..d49583ec8f5 100644
--- a/vespajlib/src/test/java/com/yahoo/javacc/UnicodeUtilitiesTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/javacc/UnicodeUtilitiesTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.javacc;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/lang/CachedSupplierTest.java b/vespajlib/src/test/java/com/yahoo/lang/CachedSupplierTest.java
index 342d76b43d6..914f842d842 100644
--- a/vespajlib/src/test/java/com/yahoo/lang/CachedSupplierTest.java
+++ b/vespajlib/src/test/java/com/yahoo/lang/CachedSupplierTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.lang;
import com.yahoo.test.ManualClock;
diff --git a/vespajlib/src/test/java/com/yahoo/net/HostNameTestCase.java b/vespajlib/src/test/java/com/yahoo/net/HostNameTestCase.java
index ef7239b24d1..ee26b357db8 100644
--- a/vespajlib/src/test/java/com/yahoo/net/HostNameTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/net/HostNameTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.net;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/net/URITestCase.java b/vespajlib/src/test/java/com/yahoo/net/URITestCase.java
index 7b7c8356437..e111160fa8f 100644
--- a/vespajlib/src/test/java/com/yahoo/net/URITestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/net/URITestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.net;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/net/UriToolsTestCase.java b/vespajlib/src/test/java/com/yahoo/net/UriToolsTestCase.java
index 3e4cd70a352..690541320f7 100644
--- a/vespajlib/src/test/java/com/yahoo/net/UriToolsTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/net/UriToolsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.net;
import static org.junit.Assert.*;
diff --git a/vespajlib/src/test/java/com/yahoo/net/UrlTestCase.java b/vespajlib/src/test/java/com/yahoo/net/UrlTestCase.java
index 51a058cabf6..fc3620c5cde 100644
--- a/vespajlib/src/test/java/com/yahoo/net/UrlTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/net/UrlTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.net;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/net/UrlTokenTestCase.java b/vespajlib/src/test/java/com/yahoo/net/UrlTokenTestCase.java
index 5ad81a387fd..feab88b30d9 100644
--- a/vespajlib/src/test/java/com/yahoo/net/UrlTokenTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/net/UrlTokenTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.net;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/net/UrlTokenizerTestCase.java b/vespajlib/src/test/java/com/yahoo/net/UrlTokenizerTestCase.java
index 1e6b27e675b..bf431140bdb 100644
--- a/vespajlib/src/test/java/com/yahoo/net/UrlTokenizerTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/net/UrlTokenizerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.net;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/osgi/maven/ProjectBundleClassPathsTest.java b/vespajlib/src/test/java/com/yahoo/osgi/maven/ProjectBundleClassPathsTest.java
deleted file mode 100644
index 44a6a2eee8d..00000000000
--- a/vespajlib/src/test/java/com/yahoo/osgi/maven/ProjectBundleClassPathsTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.osgi.maven;
-
-import com.yahoo.osgi.maven.ProjectBundleClassPaths.BundleClasspathMapping;
-import org.junit.Test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-
-import static java.util.Arrays.asList;
-import static org.junit.Assert.assertEquals;
-
-/**
- * @author bjorncs
- */
-public class ProjectBundleClassPathsTest {
-
- @Test
- public void bundle_classpaths_serializes_correctly_to_json() throws IOException {
- ProjectBundleClassPaths projectBundleClassPaths =
- new ProjectBundleClassPaths(
- new BundleClasspathMapping("main-bundle-name", asList("classpath-elem-0-1", "classpath-elem-0-2")),
- asList(
- new BundleClasspathMapping(
- "main-bundle-dep1",
- asList("classpath-elem-1-1", "classpath-elem-1-2")),
- new BundleClasspathMapping(
- "main-bundle-dep2",
- asList("classpath-elem-2-1", "classpath-elem-2-2"))));
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- ProjectBundleClassPaths.save(out, projectBundleClassPaths);
- ProjectBundleClassPaths deserialized = ProjectBundleClassPaths.load(out.toByteArray());
- assertEquals(projectBundleClassPaths, deserialized);
- }
-
-}
diff --git a/vespajlib/src/test/java/com/yahoo/path/PathTest.java b/vespajlib/src/test/java/com/yahoo/path/PathTest.java
index a9e4e78e190..aa09c491586 100644
--- a/vespajlib/src/test/java/com/yahoo/path/PathTest.java
+++ b/vespajlib/src/test/java/com/yahoo/path/PathTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.path;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/protect/TestErrorMessage.java b/vespajlib/src/test/java/com/yahoo/protect/TestErrorMessage.java
index 58a35b2bddf..583d3132c17 100644
--- a/vespajlib/src/test/java/com/yahoo/protect/TestErrorMessage.java
+++ b/vespajlib/src/test/java/com/yahoo/protect/TestErrorMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.protect;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/protect/ValidatorTestCase.java b/vespajlib/src/test/java/com/yahoo/protect/ValidatorTestCase.java
index e4549968ebd..1bc720e460a 100644
--- a/vespajlib/src/test/java/com/yahoo/protect/ValidatorTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/protect/ValidatorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.protect;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/reflection/CastingTest.java b/vespajlib/src/test/java/com/yahoo/reflection/CastingTest.java
index 1f23fc95357..f2fa14e8958 100644
--- a/vespajlib/src/test/java/com/yahoo/reflection/CastingTest.java
+++ b/vespajlib/src/test/java/com/yahoo/reflection/CastingTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.reflection;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/slime/BinaryFormatTestCase.java b/vespajlib/src/test/java/com/yahoo/slime/BinaryFormatTestCase.java
index 7cf4bddaa01..19ded5c8db1 100644
--- a/vespajlib/src/test/java/com/yahoo/slime/BinaryFormatTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/slime/BinaryFormatTestCase.java
@@ -1,35 +1,42 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
+import com.yahoo.compress.CompressionType;
+import com.yahoo.compress.Compressor;
import org.junit.Test;
-import static org.junit.Assert.assertTrue;
+import static com.yahoo.slime.BinaryFormat.decode_double;
+import static com.yahoo.slime.BinaryFormat.decode_meta;
+import static com.yahoo.slime.BinaryFormat.decode_type;
+import static com.yahoo.slime.BinaryFormat.decode_zigzag;
+import static com.yahoo.slime.BinaryFormat.encode_double;
+import static com.yahoo.slime.BinaryFormat.encode_type_and_meta;
+import static com.yahoo.slime.BinaryFormat.encode_zigzag;
+import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
-import static org.hamcrest.CoreMatchers.*;
-import static com.yahoo.slime.BinaryFormat.*;
public class BinaryFormatTestCase {
static final int TYPE_LIMIT = 8;
static final int META_LIMIT = 32;
- static final int MAX_CMPR_SIZE = 10;
static final int MAX_NUM_SIZE = 8;
- static final byte enc_t_and_sz(Type t, int size) {
+ static byte enc_t_and_sz(Type t, int size) {
assert size <= 30;
return encode_type_and_meta(t.ID, size + 1);
}
- static final byte enc_t_and_m(Type t, int meta) {
+ static byte enc_t_and_m(Type t, int meta) {
assert meta <= 31;
return encode_type_and_meta(t.ID, meta);
}
void verify_cmpr_long(long value, byte[] expect) {
- BinaryEncoder bof = new BinaryEncoder();
+ BufferedOutput output = new BufferedOutput();
+ BinaryEncoder bof = new BinaryEncoder(output);
bof.encode_cmpr_long(value);
- byte[] actual = bof.out.toArray();
+ byte[] actual = output.toArray();
assertThat(actual, is(expect));
BinaryDecoder bif = new BinaryDecoder();
@@ -41,6 +48,10 @@ public class BinaryFormatTestCase {
// was verifyBasic
void verifyEncoding(Slime slime, byte[] expect) {
assertThat(BinaryFormat.encode(slime), is(expect));
+ Compressor compressor = new Compressor(CompressionType.LZ4, 3, 2, 0);
+ Compressor.Compression result = BinaryFormat.encode_and_compress(slime, compressor);
+ byte [] decompressed = compressor.decompress(result);
+ assertThat(decompressed, is(expect));
verifyMultiEncode(expect);
}
@@ -223,13 +234,11 @@ public class BinaryFormatTestCase {
expect.put(encode_type_and_meta((int)type, (int)(size +1)));
} else {
expect.put(type);
- BinaryEncoder encoder = new BinaryEncoder();
- encoder.out = expect;
+ BinaryEncoder encoder = new BinaryEncoder(expect);
encoder.encode_cmpr_long(size);
}
{
- BinaryEncoder encoder = new BinaryEncoder();
- encoder.out = actual;
+ BinaryEncoder encoder = new BinaryEncoder(actual);
encoder.write_type_and_size(type, size);
}
assertThat(actual.toArray(), is(expect.toArray()));
@@ -273,14 +282,14 @@ public class BinaryFormatTestCase {
byte[] expect = expbuf.toArray();
// test output:
- BinaryEncoder bof = new BinaryEncoder();
- bof.out = new BufferedOutput();
+ BufferedOutput output = new BufferedOutput();
+ BinaryEncoder bof = new BinaryEncoder(output);
if (hi != 0) {
bof.write_type_and_bytes_be(type, bits);
} else {
bof.write_type_and_bytes_le(type, bits);
}
- byte[] actual = bof.out.toArray();
+ byte[] actual = output.toArray();
assertThat(actual, is(expect));
// test input:
@@ -530,9 +539,8 @@ public class BinaryFormatTestCase {
2, enc_t_and_sz(Type.DATA, 4), // f
'd', 'a', 't', 'a'
};
- Slime slime = new Slime();
BinaryDecoder decoder = new BinaryDecoder();
- slime = decoder.decode(data);
+ Slime slime = decoder.decode(data);
int consumed = decoder.in.getConsumedSize();
assertThat(consumed, is(data.length));
Cursor c = slime.get();
diff --git a/vespajlib/src/test/java/com/yahoo/slime/JsonBenchmark.java b/vespajlib/src/test/java/com/yahoo/slime/JsonBenchmark.java
index 0f846c1a132..0359d720d37 100644
--- a/vespajlib/src/test/java/com/yahoo/slime/JsonBenchmark.java
+++ b/vespajlib/src/test/java/com/yahoo/slime/JsonBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
import com.fasterxml.jackson.core.JsonFactory;
diff --git a/vespajlib/src/test/java/com/yahoo/slime/JsonFormatTestCase.java b/vespajlib/src/test/java/com/yahoo/slime/JsonFormatTestCase.java
index 44aa4ab2ff7..67a11f8be5a 100644
--- a/vespajlib/src/test/java/com/yahoo/slime/JsonFormatTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/slime/JsonFormatTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
import com.yahoo.text.Utf8;
diff --git a/vespajlib/src/test/java/com/yahoo/slime/SlimeTestCase.java b/vespajlib/src/test/java/com/yahoo/slime/SlimeTestCase.java
index f3be33009b0..33abfe39345 100644
--- a/vespajlib/src/test/java/com/yahoo/slime/SlimeTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/slime/SlimeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/slime/SlimeUtilsTest.java b/vespajlib/src/test/java/com/yahoo/slime/SlimeUtilsTest.java
index 5757202aaf1..67311d75029 100644
--- a/vespajlib/src/test/java/com/yahoo/slime/SlimeUtilsTest.java
+++ b/vespajlib/src/test/java/com/yahoo/slime/SlimeUtilsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
import com.yahoo.text.Utf8;
diff --git a/vespajlib/src/test/java/com/yahoo/slime/VisitorTestCase.java b/vespajlib/src/test/java/com/yahoo/slime/VisitorTestCase.java
index c3bd45203ff..916cddac56b 100644
--- a/vespajlib/src/test/java/com/yahoo/slime/VisitorTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/slime/VisitorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/stream/CustomCollectorsTest.java b/vespajlib/src/test/java/com/yahoo/stream/CustomCollectorsTest.java
index d9d53d59be6..6a0e6366775 100644
--- a/vespajlib/src/test/java/com/yahoo/stream/CustomCollectorsTest.java
+++ b/vespajlib/src/test/java/com/yahoo/stream/CustomCollectorsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.stream;
import com.google.common.collect.Lists;
diff --git a/vespajlib/src/test/java/com/yahoo/system/Bar.java b/vespajlib/src/test/java/com/yahoo/system/Bar.java
index 30f43817802..ea01aa8ac95 100644
--- a/vespajlib/src/test/java/com/yahoo/system/Bar.java
+++ b/vespajlib/src/test/java/com/yahoo/system/Bar.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.system;
/**
diff --git a/vespajlib/src/test/java/com/yahoo/system/CommandLineParserTestCase.java b/vespajlib/src/test/java/com/yahoo/system/CommandLineParserTestCase.java
index 5553414cfca..355c219920c 100644
--- a/vespajlib/src/test/java/com/yahoo/system/CommandLineParserTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/system/CommandLineParserTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.system;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/system/Foo.java b/vespajlib/src/test/java/com/yahoo/system/Foo.java
index 18e108fa909..f996893393c 100644
--- a/vespajlib/src/test/java/com/yahoo/system/Foo.java
+++ b/vespajlib/src/test/java/com/yahoo/system/Foo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.system;
/**
diff --git a/vespajlib/src/test/java/com/yahoo/system/ForceLoadTestCase.java b/vespajlib/src/test/java/com/yahoo/system/ForceLoadTestCase.java
index 81395c3c765..53e97b3c219 100644
--- a/vespajlib/src/test/java/com/yahoo/system/ForceLoadTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/system/ForceLoadTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.system;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/system/ProcessExecuterTestCase.java b/vespajlib/src/test/java/com/yahoo/system/ProcessExecuterTestCase.java
index c7651d46933..a7308828397 100644
--- a/vespajlib/src/test/java/com/yahoo/system/ProcessExecuterTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/system/ProcessExecuterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.system;
import com.yahoo.collections.Pair;
diff --git a/vespajlib/src/test/java/com/yahoo/system/execution/ProcessExecutorTest.java b/vespajlib/src/test/java/com/yahoo/system/execution/ProcessExecutorTest.java
index 82da255182d..6a09b80fe13 100644
--- a/vespajlib/src/test/java/com/yahoo/system/execution/ProcessExecutorTest.java
+++ b/vespajlib/src/test/java/com/yahoo/system/execution/ProcessExecutorTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.system.execution;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/tensor/IndexedTensorTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/IndexedTensorTestCase.java
index 1a5bae9b02c..c71240541cf 100644
--- a/vespajlib/src/test/java/com/yahoo/tensor/IndexedTensorTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/tensor/IndexedTensorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/tensor/MappedTensorTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/MappedTensorTestCase.java
index 2699e4642e2..7bb02f03735 100644
--- a/vespajlib/src/test/java/com/yahoo/tensor/MappedTensorTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/tensor/MappedTensorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor;
import com.google.common.collect.Sets;
diff --git a/vespajlib/src/test/java/com/yahoo/tensor/MatrixDotProductBenchmark.java b/vespajlib/src/test/java/com/yahoo/tensor/MatrixDotProductBenchmark.java
index c334c58042c..63eef172d2e 100644
--- a/vespajlib/src/test/java/com/yahoo/tensor/MatrixDotProductBenchmark.java
+++ b/vespajlib/src/test/java/com/yahoo/tensor/MatrixDotProductBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor;
import com.yahoo.tensor.evaluation.MapEvaluationContext;
diff --git a/vespajlib/src/test/java/com/yahoo/tensor/MixedTensorTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/MixedTensorTestCase.java
index 29dc1544abe..50f2bc5efff 100644
--- a/vespajlib/src/test/java/com/yahoo/tensor/MixedTensorTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/tensor/MixedTensorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor;
diff --git a/vespajlib/src/test/java/com/yahoo/tensor/TensorFunctionBenchmark.java b/vespajlib/src/test/java/com/yahoo/tensor/TensorFunctionBenchmark.java
index b3c6fbc6862..013615e4594 100644
--- a/vespajlib/src/test/java/com/yahoo/tensor/TensorFunctionBenchmark.java
+++ b/vespajlib/src/test/java/com/yahoo/tensor/TensorFunctionBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor;
import com.yahoo.tensor.evaluation.MapEvaluationContext;
diff --git a/vespajlib/src/test/java/com/yahoo/tensor/TensorParserTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/TensorParserTestCase.java
index 431e4b06263..53df95ec2e8 100644
--- a/vespajlib/src/test/java/com/yahoo/tensor/TensorParserTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/tensor/TensorParserTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor;
import org.junit.Test;
@@ -150,6 +150,53 @@ public class TensorParserTestCase {
Tensor.from("tensor(key{},y[2],x[3]):{key1:[[1,2,3],[4,5,6]], key2:[[7,8,9],[10,11,12]]}"));
}
+ @Test
+ public void testUnboundShortFormParsing() {
+ assertEquals(Tensor.from("tensor(x[]):[1.0, 2.0]"),
+ Tensor.Builder.of(TensorType.fromSpec("tensor(x[])")).cell(1.0, 0).cell(2.0, 1).build());
+ assertEquals(Tensor.from("tensor<float>(x[]):[1.0, 2.0]"),
+ Tensor.Builder.of(TensorType.fromSpec("tensor<float>(x[])")).cell(1.0, 0).cell(2.0, 1).build());
+ assertEquals(Tensor.from("tensor<int8>(x[]):[1.0, 2.0]"),
+ Tensor.Builder.of(TensorType.fromSpec("tensor<int8>(x[])")).cell(1.0, 0).cell(2.0, 1).build());
+ assertEquals(Tensor.from("tensor<bfloat16>(x[]):[1.0, 2.0]"),
+ Tensor.Builder.of(TensorType.fromSpec("tensor<bfloat16>(x[])")).cell(1.0, 0).cell(2.0, 1).build());
+
+ assertEquals(Tensor.from("tensor(x[],y[]):[[1,2,3,4]]"),
+ Tensor.Builder.of(TensorType.fromSpec("tensor(x[],y[])"))
+ .cell(1.0, 0, 0).cell(2.0, 0, 1).cell(3.0, 0, 2).cell(4.0, 0, 3).build());
+ assertEquals(Tensor.from("tensor(x[],y[]):[[1,2],[3,4]]"),
+ Tensor.Builder.of(TensorType.fromSpec("tensor(x[],y[])"))
+ .cell(1.0, 0, 0).cell(2.0, 0, 1).cell(3.0, 1, 0).cell(4.0, 1, 1).build());
+ assertEquals(Tensor.from("tensor(x[],y[]):[[1],[2],[3],[4]]"),
+ Tensor.Builder.of(TensorType.fromSpec("tensor(x[],y[])"))
+ .cell(1.0, 0, 0).cell(2.0, 1, 0).cell(3.0, 2, 0).cell(4.0, 3, 0).build());
+ assertEquals(Tensor.from("tensor(x[],y[],z[]):[[[1,2],[3,4]]]"),
+ Tensor.Builder.of(TensorType.fromSpec("tensor(x[],y[],z[])"))
+ .cell(1.0, 0, 0, 0).cell(2.0, 0, 0, 1).cell(3.0, 0, 1, 0).cell(4.0, 0, 1, 1).build());
+ assertEquals(Tensor.from("tensor(x[],y[],z[]):[[[1],[2],[3],[4]]]"),
+ Tensor.Builder.of(TensorType.fromSpec("tensor(x[],y[],z[])"))
+ .cell(1.0, 0, 0, 0).cell(2.0, 0, 1, 0).cell(3.0, 0, 2, 0).cell(4.0, 0, 3, 0).build());
+ assertEquals(Tensor.from("tensor(x[],y[],z[]):[[[1,2,3,4]]]"),
+ Tensor.Builder.of(TensorType.fromSpec("tensor(x[],y[],z[])"))
+ .cell(1.0, 0, 0, 0).cell(2.0, 0, 0, 1).cell(3.0, 0, 0, 2).cell(4.0, 0, 0, 3).build());
+ assertEquals(Tensor.from("tensor(x[],y[],z[]):[[[1]],[[2]],[[3]],[[4]]]"),
+ Tensor.Builder.of(TensorType.fromSpec("tensor(x[],y[],z[])"))
+ .cell(1.0, 0, 0, 0).cell(2.0, 1, 0, 0).cell(3.0, 2, 0, 0).cell(4.0, 3, 0, 0).build());
+ assertEquals(Tensor.from("tensor(x[],y[],z[]):[[[1, 2]],[[3, 4]]]"),
+ Tensor.Builder.of(TensorType.fromSpec("tensor(x[],y[],z[])"))
+ .cell(1.0, 0, 0, 0).cell(2.0, 0, 0, 1).cell(3.0, 1, 0, 0).cell(4.0, 1, 0, 1).build());
+
+ assertEquals(Tensor.from("tensor(x[],y[],z[4]):[[[1,2,3,4]]]"),
+ Tensor.Builder.of(TensorType.fromSpec("tensor(x[],y[],z[])"))
+ .cell(1.0, 0, 0, 0).cell(2.0, 0, 0, 1).cell(3.0, 0, 0, 2).cell(4.0, 0, 0, 3).build());
+ assertEquals(Tensor.from("tensor(x[2],y[],z[2]):[[[1, 2]],[[3, 4]]]"),
+ Tensor.Builder.of(TensorType.fromSpec("tensor(x[],y[],z[])"))
+ .cell(1.0, 0, 0, 0).cell(2.0, 0, 0, 1).cell(3.0, 1, 0, 0).cell(4.0, 1, 0, 1).build());
+
+ assertIllegal("Unexpected size 2 for dimension y for type tensor(x[],y[3])",
+ "tensor(x[],y[3]):[[1,2],[3,4]]");
+ }
+
private void assertDense(Tensor expectedTensor, String denseFormat) {
assertEquals(denseFormat, expectedTensor, Tensor.from(denseFormat));
assertEquals(denseFormat, expectedTensor.toString());
diff --git a/vespajlib/src/test/java/com/yahoo/tensor/TensorTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/TensorTestCase.java
index 572dc433d71..fd33cf97220 100644
--- a/vespajlib/src/test/java/com/yahoo/tensor/TensorTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/tensor/TensorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor;
import com.google.common.collect.ImmutableList;
diff --git a/vespajlib/src/test/java/com/yahoo/tensor/TensorTypeTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/TensorTypeTestCase.java
index caa125dfef7..c5009fa3ab2 100644
--- a/vespajlib/src/test/java/com/yahoo/tensor/TensorTypeTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/tensor/TensorTypeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/tensor/TypeResolverTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/TypeResolverTestCase.java
index f0be02a1b53..055603c5f59 100644
--- a/vespajlib/src/test/java/com/yahoo/tensor/TypeResolverTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/tensor/TypeResolverTestCase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor;
diff --git a/vespajlib/src/test/java/com/yahoo/tensor/functions/CellCastTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/functions/CellCastTestCase.java
index c2957df4ac1..a4bc13cff69 100644
--- a/vespajlib/src/test/java/com/yahoo/tensor/functions/CellCastTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/tensor/functions/CellCastTestCase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.yahoo.tensor.Tensor;
diff --git a/vespajlib/src/test/java/com/yahoo/tensor/functions/ConcatTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/functions/ConcatTestCase.java
index 023beb6fb0d..b847c6cf115 100644
--- a/vespajlib/src/test/java/com/yahoo/tensor/functions/ConcatTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/tensor/functions/ConcatTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.yahoo.tensor.Tensor;
diff --git a/vespajlib/src/test/java/com/yahoo/tensor/functions/JoinTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/functions/JoinTestCase.java
index f11c068bd74..e654bd22e21 100644
--- a/vespajlib/src/test/java/com/yahoo/tensor/functions/JoinTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/tensor/functions/JoinTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.yahoo.tensor.Tensor;
diff --git a/vespajlib/src/test/java/com/yahoo/tensor/functions/MatmulTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/functions/MatmulTestCase.java
index 9e3cd834cb8..fb4cb659624 100644
--- a/vespajlib/src/test/java/com/yahoo/tensor/functions/MatmulTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/tensor/functions/MatmulTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.google.common.collect.ImmutableList;
diff --git a/vespajlib/src/test/java/com/yahoo/tensor/functions/ReduceTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/functions/ReduceTestCase.java
index f96852df377..bccc2f7c0aa 100644
--- a/vespajlib/src/test/java/com/yahoo/tensor/functions/ReduceTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/tensor/functions/ReduceTestCase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.yahoo.tensor.Tensor;
diff --git a/vespajlib/src/test/java/com/yahoo/tensor/functions/ScalarFunctionsTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/functions/ScalarFunctionsTestCase.java
index 5890bac6c96..ca588d7a17b 100644
--- a/vespajlib/src/test/java/com/yahoo/tensor/functions/ScalarFunctionsTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/tensor/functions/ScalarFunctionsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
diff --git a/vespajlib/src/test/java/com/yahoo/tensor/functions/TensorFunctionTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/functions/TensorFunctionTestCase.java
index 05f7d27907c..ce165474a53 100644
--- a/vespajlib/src/test/java/com/yahoo/tensor/functions/TensorFunctionTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/tensor/functions/TensorFunctionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.functions;
import com.yahoo.tensor.TensorType;
diff --git a/vespajlib/src/test/java/com/yahoo/tensor/serialization/DenseBinaryFormatTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/serialization/DenseBinaryFormatTestCase.java
index 3c79b0c769c..f6dfa370ff4 100644
--- a/vespajlib/src/test/java/com/yahoo/tensor/serialization/DenseBinaryFormatTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/tensor/serialization/DenseBinaryFormatTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.serialization;
import com.yahoo.io.GrowableByteBuffer;
diff --git a/vespajlib/src/test/java/com/yahoo/tensor/serialization/JsonFormatTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/serialization/JsonFormatTestCase.java
index 011c4b1fe12..1c884186879 100644
--- a/vespajlib/src/test/java/com/yahoo/tensor/serialization/JsonFormatTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/tensor/serialization/JsonFormatTestCase.java
@@ -1,6 +1,7 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.serialization;
+import com.yahoo.tensor.IndexedTensor;
import com.yahoo.tensor.Tensor;
import com.yahoo.tensor.TensorType;
import org.junit.Test;
@@ -67,6 +68,21 @@ public class JsonFormatTestCase {
}
@Test
+ public void testDisallowedEmptyDenseTensor() {
+ TensorType type = TensorType.fromSpec("tensor(x[3])");
+ assertDecodeFails(type, "{\"values\":[]}", "The 'values' array does not contain any values");
+ assertDecodeFails(type, "{\"values\":\"\"}", "The 'values' string does not contain any values");
+ }
+
+ @Test
+ public void testDisallowedEmptyMixedTensor() {
+ TensorType type = TensorType.fromSpec("tensor(x{},y[3])");
+ assertDecodeFails(type, "{\"blocks\":{ \"a\": [] } }", "The 'block' value array does not contain any values");
+ assertDecodeFails(type, "{\"blocks\":[ {\"address\":{\"x\":\"a\"}, \"values\": [] } ] }",
+ "The 'block' value array does not contain any values");
+ }
+
+ @Test
public void testDenseTensorInDenseForm() {
Tensor.Builder builder = Tensor.Builder.of(TensorType.fromSpec("tensor(x[2],y[3])"));
builder.cell().label("x", 0).label("y", 0).value(2.0);
@@ -82,6 +98,65 @@ public class JsonFormatTestCase {
}
@Test
+ public void testEncodeIndexedShortForm() {
+ assertEncodeShortForm("tensor(x[]):[1.0, 2.0]",
+ "{\"type\":\"tensor(x[])\",\"values\":[1.0,2.0]}");
+ assertEncodeShortForm("tensor<float>(x[]):[1.0, 2.0]",
+ "{\"type\":\"tensor<float>(x[])\",\"values\":[1.0,2.0]}");
+ assertEncodeShortForm("tensor(x[],y[]):[[1,2,3,4]]",
+ "{\"type\":\"tensor(x[],y[])\",\"values\":[[1.0,2.0,3.0,4.0]]}");
+ assertEncodeShortForm("tensor(x[],y[]):[[1,2],[3,4]]",
+ "{\"type\":\"tensor(x[],y[])\",\"values\":[[1.0,2.0],[3.0,4.0]]}");
+ assertEncodeShortForm("tensor(x[],y[]):[[1],[2],[3],[4]]",
+ "{\"type\":\"tensor(x[],y[])\",\"values\":[[1.0],[2.0],[3.0],[4.0]]}");
+ assertEncodeShortForm("tensor(x[],y[],z[]):[[[1,2],[3,4]]]",
+ "{\"type\":\"tensor(x[],y[],z[])\",\"values\":[[[1.0,2.0],[3.0,4.0]]]}");
+ assertEncodeShortForm("tensor(x[],y[],z[]):[[[1],[2],[3],[4]]]",
+ "{\"type\":\"tensor(x[],y[],z[])\",\"values\":[[[1.0],[2.0],[3.0],[4.0]]]}");
+ assertEncodeShortForm("tensor(x[],y[],z[]):[[[1,2,3,4]]]",
+ "{\"type\":\"tensor(x[],y[],z[])\",\"values\":[[[1.0,2.0,3.0,4.0]]]}");
+ assertEncodeShortForm("tensor(x[],y[],z[]):[[[1]],[[2]],[[3]],[[4]]]",
+ "{\"type\":\"tensor(x[],y[],z[])\",\"values\":[[[1.0]],[[2.0]],[[3.0]],[[4.0]]]}");
+ assertEncodeShortForm("tensor(x[],y[],z[2]):[[[1, 2]],[[3, 4]]]",
+ "{\"type\":\"tensor(x[],y[],z[2])\",\"values\":[[[1.0,2.0]],[[3.0,4.0]]]}");
+ }
+
+ @Test
+ public void testEncodeMappedSingleDimensionShortForm() {
+ assertEncodeShortForm("tensor(x{}):{}",
+ "{\"type\":\"tensor(x{})\",\"cells\":{}}");
+ assertEncodeShortForm("tensor(x{}):{a:1,b:2}",
+ "{\"type\":\"tensor(x{})\",\"cells\":{\"a\":1.0,\"b\":2.0}}");
+ // Multiple mapped dimensions: no short form available
+ assertEncodeShortForm("tensor(x{},y{}):{{x:a,y:b}:1,{x:c,y:d}:2}",
+ "{\"type\":\"tensor(x{},y{})\",\"cells\":[{\"address\":{\"x\":\"a\",\"y\":\"b\"},\"value\":1.0},{\"address\":{\"x\":\"c\",\"y\":\"d\"},\"value\":2.0}]}");
+ }
+
+ @Test
+ public void testEncodeMixedShortForm() {
+ assertEncodeShortForm("tensor(x{},y[2]):{a:[1,2], b:[3,4] }",
+ "{\"type\":\"tensor(x{},y[2])\",\"blocks\":{\"a\":[1.0,2.0],\"b\":[3.0,4.0]}}");
+ assertEncodeShortForm("tensor(x[2],y{}):{a:[1,2], b:[3,4] }",
+ "{\"type\":\"tensor(x[2],y{})\",\"blocks\":{\"a\":[1.0,2.0],\"b\":[3.0,4.0]}}");
+ assertEncodeShortForm("tensor(x{},y[2],z[2]):{a:[[1,2],[3,4]], b:[[5,6],[7,8]] }",
+ "{\"type\":\"tensor(x{},y[2],z[2])\",\"blocks\":{\"a\":[[1.0,2.0],[3.0,4.0]],\"b\":[[5.0,6.0],[7.0,8.0]]}}");
+ assertEncodeShortForm("tensor(x[1],y{},z[4]):{a:[[1,2,3,4]], b:[[5,6,7,8]] }",
+ "{\"type\":\"tensor(x[1],y{},z[4])\",\"blocks\":{\"a\":[[1.0,2.0,3.0,4.0]],\"b\":[[5.0,6.0,7.0,8.0]]}}");
+ assertEncodeShortForm("tensor(x[4],y[1],z{}):{a:[[1],[2],[3],[4]], b:[[5],[6],[7],[8]] }",
+ "{\"type\":\"tensor(x[4],y[1],z{})\",\"blocks\":{\"a\":[[1.0],[2.0],[3.0],[4.0]],\"b\":[[5.0],[6.0],[7.0],[8.0]]}}");
+ assertEncodeShortForm("tensor(a[2],b[2],c{},d[2]):{a:[[[1,2], [3,4]], [[5,6], [7,8]]], b:[[[1,2], [3,4]], [[5,6], [7,8]]] }",
+ "{\"type\":\"tensor(a[2],b[2],c{},d[2])\",\"blocks\":{" +
+ "\"a\":[[[1.0,2.0],[3.0,4.0]],[[5.0,6.0],[7.0,8.0]]]," +
+ "\"b\":[[[1.0,2.0],[3.0,4.0]],[[5.0,6.0],[7.0,8.0]]]}}");
+
+ // Multiple mapped dimensions
+ assertEncodeShortForm("tensor(x{},y{},z[2]):{{x:a,y:0,z:0}:1, {x:a,y:0,z:1}:2, {x:b,y:1,z:0}:3, {x:b,y:1,z:1}:4 }",
+ "{\"type\":\"tensor(x{},y{},z[2])\",\"blocks\":[{\"address\":{\"x\":\"a\",\"y\":\"0\"},\"values\":[1.0,2.0]},{\"address\":{\"x\":\"b\",\"y\":\"1\"},\"values\":[3.0,4.0]}]}");
+ assertEncodeShortForm("tensor(x{},y[2],z{}):{{x:a,y:0,z:0}:1, {x:a,y:1,z:0}:2, {x:b,y:0,z:1}:3, {x:b,y:1,z:1}:4 }",
+ "{\"type\":\"tensor(x{},y[2],z{})\",\"blocks\":[{\"address\":{\"x\":\"a\",\"z\":\"0\"},\"values\":[1.0,2.0]},{\"address\":{\"x\":\"b\",\"z\":\"1\"},\"values\":[3.0,4.0]}]}");
+ }
+
+ @Test
public void testInt8VectorInHexForm() {
Tensor.Builder builder = Tensor.Builder.of(TensorType.fromSpec("tensor<int8>(x[2],y[3])"));
builder.cell().label("x", 0).label("y", 0).value(2.0);
@@ -274,4 +349,18 @@ public class JsonFormatTestCase {
assertEncodeDecode(Tensor.from("tensor<int8>(x[2],y[2]):[2,3,5,8]"));
}
+ private void assertEncodeShortForm(String tensor, String expected) {
+ byte[] json = JsonFormat.encodeShortForm(Tensor.from(tensor));
+ assertEquals(expected, new String(json, StandardCharsets.UTF_8));
+ }
+
+ private void assertDecodeFails(TensorType type, String format, String msg) {
+ try {
+ Tensor decoded = JsonFormat.decode(type, format.getBytes(StandardCharsets.UTF_8));
+ fail("Did not get exception as expected, decoded as: " + decoded);
+ } catch (IllegalArgumentException e) {
+ assertEquals(e.getMessage(), msg);
+ }
+ }
+
}
diff --git a/vespajlib/src/test/java/com/yahoo/tensor/serialization/MixedBinaryFormatTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/serialization/MixedBinaryFormatTestCase.java
index e9f8c81f21b..ca3e7ae39b9 100644
--- a/vespajlib/src/test/java/com/yahoo/tensor/serialization/MixedBinaryFormatTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/tensor/serialization/MixedBinaryFormatTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.serialization;
diff --git a/vespajlib/src/test/java/com/yahoo/tensor/serialization/SerializationTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/serialization/SerializationTestCase.java
index 066a63b6d90..e3896e8a2d0 100644
--- a/vespajlib/src/test/java/com/yahoo/tensor/serialization/SerializationTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/tensor/serialization/SerializationTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.serialization;
diff --git a/vespajlib/src/test/java/com/yahoo/tensor/serialization/SparseBinaryFormatTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/serialization/SparseBinaryFormatTestCase.java
index 2a622b73513..0e64ab74a49 100644
--- a/vespajlib/src/test/java/com/yahoo/tensor/serialization/SparseBinaryFormatTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/tensor/serialization/SparseBinaryFormatTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor.serialization;
import com.yahoo.io.GrowableByteBuffer;
diff --git a/vespajlib/src/test/java/com/yahoo/text/AsciiTest.java b/vespajlib/src/test/java/com/yahoo/text/AsciiTest.java
index af5528a6c7c..fe6d17e7c08 100644
--- a/vespajlib/src/test/java/com/yahoo/text/AsciiTest.java
+++ b/vespajlib/src/test/java/com/yahoo/text/AsciiTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/text/Benchmark.java b/vespajlib/src/test/java/com/yahoo/text/Benchmark.java
index 9569adcf9f0..292503f462a 100644
--- a/vespajlib/src/test/java/com/yahoo/text/Benchmark.java
+++ b/vespajlib/src/test/java/com/yahoo/text/Benchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
// import com.google.common.base.Preconditions;
diff --git a/vespajlib/src/test/java/com/yahoo/text/BooleanParserTestCase.java b/vespajlib/src/test/java/com/yahoo/text/BooleanParserTestCase.java
index 7e59eb21650..50d41cb1910 100644
--- a/vespajlib/src/test/java/com/yahoo/text/BooleanParserTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/text/BooleanParserTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import static org.junit.Assert.assertFalse;
diff --git a/vespajlib/src/test/java/com/yahoo/text/CaseInsensitiveIdentifierTestCase.java b/vespajlib/src/test/java/com/yahoo/text/CaseInsensitiveIdentifierTestCase.java
index 1f6e9538290..b25d5fdda07 100644
--- a/vespajlib/src/test/java/com/yahoo/text/CaseInsensitiveIdentifierTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/text/CaseInsensitiveIdentifierTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
diff --git a/vespajlib/src/test/java/com/yahoo/text/DataTypeIdentifierTestCase.java b/vespajlib/src/test/java/com/yahoo/text/DataTypeIdentifierTestCase.java
index 7380b2976f2..93f65a6acf9 100644
--- a/vespajlib/src/test/java/com/yahoo/text/DataTypeIdentifierTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/text/DataTypeIdentifierTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/text/ForwardWriterTestCase.java b/vespajlib/src/test/java/com/yahoo/text/ForwardWriterTestCase.java
index b3f7d234c59..5de43f31959 100644
--- a/vespajlib/src/test/java/com/yahoo/text/ForwardWriterTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/text/ForwardWriterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import static org.junit.Assert.assertEquals;
diff --git a/vespajlib/src/test/java/com/yahoo/text/GenericWriterTestCase.java b/vespajlib/src/test/java/com/yahoo/text/GenericWriterTestCase.java
index 8d5f310fe73..2ef7824cc4b 100644
--- a/vespajlib/src/test/java/com/yahoo/text/GenericWriterTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/text/GenericWriterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import static org.junit.Assert.*;
diff --git a/vespajlib/src/test/java/com/yahoo/text/HTMLTestCase.java b/vespajlib/src/test/java/com/yahoo/text/HTMLTestCase.java
index 1799c4ccba9..4d9a3f26c0b 100644
--- a/vespajlib/src/test/java/com/yahoo/text/HTMLTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/text/HTMLTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/text/IdentifierTestCase.java b/vespajlib/src/test/java/com/yahoo/text/IdentifierTestCase.java
index 59de6521b5c..3d56fd0bd40 100644
--- a/vespajlib/src/test/java/com/yahoo/text/IdentifierTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/text/IdentifierTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/text/JSONTest.java b/vespajlib/src/test/java/com/yahoo/text/JSONTest.java
index fbd0f9d0403..68a0ae86587 100644
--- a/vespajlib/src/test/java/com/yahoo/text/JSONTest.java
+++ b/vespajlib/src/test/java/com/yahoo/text/JSONTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/text/JSONWriterTestCase.java b/vespajlib/src/test/java/com/yahoo/text/JSONWriterTestCase.java
index a7fe7cd880b..247eaf93b66 100644
--- a/vespajlib/src/test/java/com/yahoo/text/JSONWriterTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/text/JSONWriterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/text/JsonMicroBenchmarkTestCase.java b/vespajlib/src/test/java/com/yahoo/text/JsonMicroBenchmarkTestCase.java
index 8c8d2f78245..c37faf258ab 100644
--- a/vespajlib/src/test/java/com/yahoo/text/JsonMicroBenchmarkTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/text/JsonMicroBenchmarkTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import static org.junit.Assert.*;
diff --git a/vespajlib/src/test/java/com/yahoo/text/LowercaseIdentifierTestCase.java b/vespajlib/src/test/java/com/yahoo/text/LowercaseIdentifierTestCase.java
index 1bf1c9646b0..0c24ec5e6f4 100644
--- a/vespajlib/src/test/java/com/yahoo/text/LowercaseIdentifierTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/text/LowercaseIdentifierTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/text/LowercaseTestCase.java b/vespajlib/src/test/java/com/yahoo/text/LowercaseTestCase.java
index a1379594ba0..70374adbb16 100644
--- a/vespajlib/src/test/java/com/yahoo/text/LowercaseTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/text/LowercaseTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import org.junit.Ignore;
diff --git a/vespajlib/src/test/java/com/yahoo/text/MapParserMicroBenchmark.java b/vespajlib/src/test/java/com/yahoo/text/MapParserMicroBenchmark.java
index f5f3f3fcc92..71c0e95c339 100644
--- a/vespajlib/src/test/java/com/yahoo/text/MapParserMicroBenchmark.java
+++ b/vespajlib/src/test/java/com/yahoo/text/MapParserMicroBenchmark.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import java.util.HashMap;
diff --git a/vespajlib/src/test/java/com/yahoo/text/MapParserTestCase.java b/vespajlib/src/test/java/com/yahoo/text/MapParserTestCase.java
index 65cfd57abf7..56205653a00 100644
--- a/vespajlib/src/test/java/com/yahoo/text/MapParserTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/text/MapParserTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/text/StringAppendMicroBenchmarkTest.java b/vespajlib/src/test/java/com/yahoo/text/StringAppendMicroBenchmarkTest.java
index 912c5513f2e..0c9632f7458 100644
--- a/vespajlib/src/test/java/com/yahoo/text/StringAppendMicroBenchmarkTest.java
+++ b/vespajlib/src/test/java/com/yahoo/text/StringAppendMicroBenchmarkTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/text/StringUtilitiesTest.java b/vespajlib/src/test/java/com/yahoo/text/StringUtilitiesTest.java
index aa38689d35b..b1ec37cb7d7 100644
--- a/vespajlib/src/test/java/com/yahoo/text/StringUtilitiesTest.java
+++ b/vespajlib/src/test/java/com/yahoo/text/StringUtilitiesTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import java.util.Arrays;
diff --git a/vespajlib/src/test/java/com/yahoo/text/TextTestCase.java b/vespajlib/src/test/java/com/yahoo/text/TextTestCase.java
index 9579388beb8..a2cb2158278 100644
--- a/vespajlib/src/test/java/com/yahoo/text/TextTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/text/TextTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/text/Utf8ArrayTestCase.java b/vespajlib/src/test/java/com/yahoo/text/Utf8ArrayTestCase.java
index dcc9774d8b7..4b16695bf9f 100644
--- a/vespajlib/src/test/java/com/yahoo/text/Utf8ArrayTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/text/Utf8ArrayTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import static org.junit.Assert.*;
diff --git a/vespajlib/src/test/java/com/yahoo/text/Utf8TestCase.java b/vespajlib/src/test/java/com/yahoo/text/Utf8TestCase.java
index 97d0717dc0b..9e43cb3c6ea 100644
--- a/vespajlib/src/test/java/com/yahoo/text/Utf8TestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/text/Utf8TestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import com.google.common.collect.ImmutableMap;
diff --git a/vespajlib/src/test/java/com/yahoo/text/XMLTestCase.java b/vespajlib/src/test/java/com/yahoo/text/XMLTestCase.java
index a495a685cfa..a54827d4d13 100644
--- a/vespajlib/src/test/java/com/yahoo/text/XMLTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/text/XMLTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/text/XMLWriterTestCase.java b/vespajlib/src/test/java/com/yahoo/text/XMLWriterTestCase.java
index d6cab8e7faa..6235969ca69 100644
--- a/vespajlib/src/test/java/com/yahoo/text/XMLWriterTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/text/XMLWriterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
import org.junit.After;
diff --git a/vespajlib/src/test/java/com/yahoo/time/TimeBudgetTest.java b/vespajlib/src/test/java/com/yahoo/time/TimeBudgetTest.java
index b422c3b34fd..bad95883df9 100644
--- a/vespajlib/src/test/java/com/yahoo/time/TimeBudgetTest.java
+++ b/vespajlib/src/test/java/com/yahoo/time/TimeBudgetTest.java
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.time;
import com.google.common.util.concurrent.UncheckedTimeoutException;
diff --git a/vespajlib/src/test/java/com/yahoo/transaction/NestedTransactionTestCase.java b/vespajlib/src/test/java/com/yahoo/transaction/NestedTransactionTestCase.java
index 60facf7e4af..2bcadc5e536 100644
--- a/vespajlib/src/test/java/com/yahoo/transaction/NestedTransactionTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/transaction/NestedTransactionTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.transaction;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/vespa/objects/BigIdClass.java b/vespajlib/src/test/java/com/yahoo/vespa/objects/BigIdClass.java
index 35bfbbc2078..3e8fb5b2cfd 100644
--- a/vespajlib/src/test/java/com/yahoo/vespa/objects/BigIdClass.java
+++ b/vespajlib/src/test/java/com/yahoo/vespa/objects/BigIdClass.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.objects;
import java.nio.ByteBuffer;
diff --git a/vespajlib/src/test/java/com/yahoo/vespa/objects/FieldBaseTestCase.java b/vespajlib/src/test/java/com/yahoo/vespa/objects/FieldBaseTestCase.java
index 7a6a53ceeec..40792ac05c1 100644
--- a/vespajlib/src/test/java/com/yahoo/vespa/objects/FieldBaseTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/vespa/objects/FieldBaseTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.objects;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/vespa/objects/FooBarIdClass.java b/vespajlib/src/test/java/com/yahoo/vespa/objects/FooBarIdClass.java
index 23a570b80fb..4d0b34981c7 100644
--- a/vespajlib/src/test/java/com/yahoo/vespa/objects/FooBarIdClass.java
+++ b/vespajlib/src/test/java/com/yahoo/vespa/objects/FooBarIdClass.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.objects;
import java.util.List;
diff --git a/vespajlib/src/test/java/com/yahoo/vespa/objects/ObjectDumperTestCase.java b/vespajlib/src/test/java/com/yahoo/vespa/objects/ObjectDumperTestCase.java
index 991f50f4633..7694548344c 100644
--- a/vespajlib/src/test/java/com/yahoo/vespa/objects/ObjectDumperTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/vespa/objects/ObjectDumperTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.objects;
import org.junit.Test;
diff --git a/vespajlib/src/test/java/com/yahoo/vespa/objects/SerializeTestCase.java b/vespajlib/src/test/java/com/yahoo/vespa/objects/SerializeTestCase.java
index 154e7d27bcc..ce4f6846248 100644
--- a/vespajlib/src/test/java/com/yahoo/vespa/objects/SerializeTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/vespa/objects/SerializeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.objects;
import com.yahoo.io.GrowableByteBuffer;
diff --git a/vespajlib/src/test/java/com/yahoo/vespa/objects/SomeIdClass.java b/vespajlib/src/test/java/com/yahoo/vespa/objects/SomeIdClass.java
index 31e3668ca6f..2fa4aeb91f3 100644
--- a/vespajlib/src/test/java/com/yahoo/vespa/objects/SomeIdClass.java
+++ b/vespajlib/src/test/java/com/yahoo/vespa/objects/SomeIdClass.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.objects;
public class SomeIdClass extends Identifiable
diff --git a/vespalib/CMakeLists.txt b/vespalib/CMakeLists.txt
index 5cf06093977..472696131d2 100644
--- a/vespalib/CMakeLists.txt
+++ b/vespalib/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
@@ -64,6 +64,7 @@ vespa_define_module(
src/tests/hwaccelrated
src/tests/io/fileutil
src/tests/io/mapped_file_input
+ src/tests/issue
src/tests/latch
src/tests/left_right_heap
src/tests/make_fixture_macros
@@ -139,6 +140,7 @@ vespa_define_module(
src/tests/util/file_area_freelist
src/tests/util/generationhandler
src/tests/util/generationhandler_stress
+ src/tests/util/hamming
src/tests/util/md5
src/tests/util/mmap_file_allocator
src/tests/util/mmap_file_allocator_factory
diff --git a/vespalib/src/Doxyfile b/vespalib/src/Doxyfile
index 63ec6ef9dee..0d63f28039d 100644
--- a/vespalib/src/Doxyfile
+++ b/vespalib/src/Doxyfile
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = vespalib
PROJECT_NUMBER =
diff --git a/vespalib/src/apps/make_fixture_macros/CMakeLists.txt b/vespalib/src/apps/make_fixture_macros/CMakeLists.txt
index 488690bbbe2..eba7d5aa36b 100644
--- a/vespalib/src/apps/make_fixture_macros/CMakeLists.txt
+++ b/vespalib/src/apps/make_fixture_macros/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_make_fixture_macros_app
SOURCES
make_fixture_macros.cpp
diff --git a/vespalib/src/apps/make_fixture_macros/make_fixture_macros.cpp b/vespalib/src/apps/make_fixture_macros/make_fixture_macros.cpp
index 4138708943e..239c56dde86 100644
--- a/vespalib/src/apps/make_fixture_macros/make_fixture_macros.cpp
+++ b/vespalib/src/apps/make_fixture_macros/make_fixture_macros.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <cstdio>
#include <cstdlib>
@@ -145,7 +145,7 @@ int main(int argc, char **argv) {
return 1;
}
int n = std::max(3, atoi(argv[1]));
- fprintf(stdout, "// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.\n");
+ fprintf(stdout, "// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.\n");
fprintf(stdout, "// macros for up to %d test fixtures, generated by "
"vespalib/testkit/make_fixture_macros\n\n", n);
for (int i = 0; i <= n; ++i) {
diff --git a/vespalib/src/apps/vespa-detect-hostname/CMakeLists.txt b/vespalib/src/apps/vespa-detect-hostname/CMakeLists.txt
index 51d2ba3b0b0..95c6fc20fb3 100644
--- a/vespalib/src/apps/vespa-detect-hostname/CMakeLists.txt
+++ b/vespalib/src/apps/vespa-detect-hostname/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_vespa-detect-hostname_app
SOURCES
detect_hostname.cpp
diff --git a/vespalib/src/apps/vespa-detect-hostname/detect_hostname.cpp b/vespalib/src/apps/vespa-detect-hostname/detect_hostname.cpp
index 86f615f407b..935884af989 100644
--- a/vespalib/src/apps/vespa-detect-hostname/detect_hostname.cpp
+++ b/vespalib/src/apps/vespa-detect-hostname/detect_hostname.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <stdio.h>
#include <stdlib.h>
diff --git a/vespalib/src/apps/vespa-drop-file-from-cache/CMakeLists.txt b/vespalib/src/apps/vespa-drop-file-from-cache/CMakeLists.txt
index 409fd5bb725..9cfa71b5e75 100644
--- a/vespalib/src/apps/vespa-drop-file-from-cache/CMakeLists.txt
+++ b/vespalib/src/apps/vespa-drop-file-from-cache/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_vespa-drop-file-from-cache_app
SOURCES
drop_file_from_cache.cpp
diff --git a/vespalib/src/apps/vespa-drop-file-from-cache/drop_file_from_cache.cpp b/vespalib/src/apps/vespa-drop-file-from-cache/drop_file_from_cache.cpp
index 280edf729b6..79f42ea2a5a 100644
--- a/vespalib/src/apps/vespa-drop-file-from-cache/drop_file_from_cache.cpp
+++ b/vespalib/src/apps/vespa-drop-file-from-cache/drop_file_from_cache.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <cstdio>
#include <cerrno>
diff --git a/vespalib/src/apps/vespa-validate-hostname/CMakeLists.txt b/vespalib/src/apps/vespa-validate-hostname/CMakeLists.txt
index 7ffa7d763ec..9d90b98bf3a 100644
--- a/vespalib/src/apps/vespa-validate-hostname/CMakeLists.txt
+++ b/vespalib/src/apps/vespa-validate-hostname/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_vespa-validate-hostname_app
SOURCES
validate_hostname.cpp
diff --git a/vespalib/src/apps/vespa-validate-hostname/validate_hostname.cpp b/vespalib/src/apps/vespa-validate-hostname/validate_hostname.cpp
index 88c2d07dd29..025f22b31aa 100644
--- a/vespalib/src/apps/vespa-validate-hostname/validate_hostname.cpp
+++ b/vespalib/src/apps/vespa-validate-hostname/validate_hostname.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <stdio.h>
#include <stdlib.h>
diff --git a/vespalib/src/tests/alloc/CMakeLists.txt b/vespalib/src/tests/alloc/CMakeLists.txt
index 779c1b33e9f..26fdf5dcfce 100644
--- a/vespalib/src/tests/alloc/CMakeLists.txt
+++ b/vespalib/src/tests/alloc/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_alloc_test_app TEST
SOURCES
alloc_test.cpp
diff --git a/vespalib/src/tests/alloc/alloc_test.cpp b/vespalib/src/tests/alloc/alloc_test.cpp
index 52b11e7dbc0..2b6d3ee4613 100644
--- a/vespalib/src/tests/alloc/alloc_test.cpp
+++ b/vespalib/src/tests/alloc/alloc_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/alloc.h>
diff --git a/vespalib/src/tests/alloc/allocate_and_core.cpp b/vespalib/src/tests/alloc/allocate_and_core.cpp
index 7b72f35ac0e..5d0af33845d 100644
--- a/vespalib/src/tests/alloc/allocate_and_core.cpp
+++ b/vespalib/src/tests/alloc/allocate_and_core.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/alloc.h>
#include <string.h>
#include <cassert>
diff --git a/vespalib/src/tests/approx/CMakeLists.txt b/vespalib/src/tests/approx/CMakeLists.txt
index 6f11e925123..c8c39e556f4 100644
--- a/vespalib/src/tests/approx/CMakeLists.txt
+++ b/vespalib/src/tests/approx/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_approx_test_app TEST
SOURCES
approx_test.cpp
diff --git a/vespalib/src/tests/approx/approx_test.cpp b/vespalib/src/tests/approx/approx_test.cpp
index 3bc0e297f27..0ad9eb0ebfa 100644
--- a/vespalib/src/tests/approx/approx_test.cpp
+++ b/vespalib/src/tests/approx/approx_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/approx.h>
#include <limits>
diff --git a/vespalib/src/tests/array/CMakeLists.txt b/vespalib/src/tests/array/CMakeLists.txt
index b068da06587..18cb5c2b95e 100644
--- a/vespalib/src/tests/array/CMakeLists.txt
+++ b/vespalib/src/tests/array/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_array_test_app TEST
SOURCES
array_test.cpp
diff --git a/vespalib/src/tests/array/array_test.cpp b/vespalib/src/tests/array/array_test.cpp
index e5294b3243b..719623c9401 100644
--- a/vespalib/src/tests/array/array_test.cpp
+++ b/vespalib/src/tests/array/array_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/stllike/string.h>
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/vespalib/src/tests/arrayqueue/CMakeLists.txt b/vespalib/src/tests/arrayqueue/CMakeLists.txt
index f462dab41b5..33e743539b1 100644
--- a/vespalib/src/tests/arrayqueue/CMakeLists.txt
+++ b/vespalib/src/tests/arrayqueue/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_arrayqueue_test_app TEST
SOURCES
arrayqueue.cpp
diff --git a/vespalib/src/tests/arrayqueue/arrayqueue.cpp b/vespalib/src/tests/arrayqueue/arrayqueue.cpp
index 5178da30eca..ff957bd60f4 100644
--- a/vespalib/src/tests/arrayqueue/arrayqueue.cpp
+++ b/vespalib/src/tests/arrayqueue/arrayqueue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/arrayqueue.hpp>
diff --git a/vespalib/src/tests/arrayref/CMakeLists.txt b/vespalib/src/tests/arrayref/CMakeLists.txt
index c851ff3e277..d0416ba0f02 100644
--- a/vespalib/src/tests/arrayref/CMakeLists.txt
+++ b/vespalib/src/tests/arrayref/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_arrayref_test_app TEST
SOURCES
arrayref_test.cpp
diff --git a/vespalib/src/tests/arrayref/arrayref_test.cpp b/vespalib/src/tests/arrayref/arrayref_test.cpp
index ad11d9b6ba4..bd8646b2f99 100644
--- a/vespalib/src/tests/arrayref/arrayref_test.cpp
+++ b/vespalib/src/tests/arrayref/arrayref_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/arrayref.h>
diff --git a/vespalib/src/tests/assert/CMakeLists.txt b/vespalib/src/tests/assert/CMakeLists.txt
index 3c9780f1ec4..47346ac7a9a 100644
--- a/vespalib/src/tests/assert/CMakeLists.txt
+++ b/vespalib/src/tests/assert/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_assert_test_app TEST
SOURCES
diff --git a/vespalib/src/tests/assert/assert_test.cpp b/vespalib/src/tests/assert/assert_test.cpp
index 8b770f0f3eb..49f4d2194f4 100644
--- a/vespalib/src/tests/assert/assert_test.cpp
+++ b/vespalib/src/tests/assert/assert_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/child_process.h>
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/vespalib/src/tests/assert/asserter.cpp b/vespalib/src/tests/assert/asserter.cpp
index 640464889c0..8d528315132 100644
--- a/vespalib/src/tests/assert/asserter.cpp
+++ b/vespalib/src/tests/assert/asserter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/assert.h>
#include <cassert>
#include <cstdlib>
diff --git a/vespalib/src/tests/barrier/CMakeLists.txt b/vespalib/src/tests/barrier/CMakeLists.txt
index f85560e7dfa..8a176a0cac4 100644
--- a/vespalib/src/tests/barrier/CMakeLists.txt
+++ b/vespalib/src/tests/barrier/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_barrier_test_app TEST
SOURCES
barrier_test.cpp
diff --git a/vespalib/src/tests/barrier/barrier_test.cpp b/vespalib/src/tests/barrier/barrier_test.cpp
index 2340476d4e0..4b3ed6b09a0 100644
--- a/vespalib/src/tests/barrier/barrier_test.cpp
+++ b/vespalib/src/tests/barrier/barrier_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/barrier.h>
diff --git a/vespalib/src/tests/benchmark_timer/CMakeLists.txt b/vespalib/src/tests/benchmark_timer/CMakeLists.txt
index 400d42e2f5e..73cde73b3ac 100644
--- a/vespalib/src/tests/benchmark_timer/CMakeLists.txt
+++ b/vespalib/src/tests/benchmark_timer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_benchmark_timer_test_app
SOURCES
benchmark_timer_test.cpp
diff --git a/vespalib/src/tests/benchmark_timer/benchmark_timer_test.cpp b/vespalib/src/tests/benchmark_timer/benchmark_timer_test.cpp
index a1781abca81..1d411aa0986 100644
--- a/vespalib/src/tests/benchmark_timer/benchmark_timer_test.cpp
+++ b/vespalib/src/tests/benchmark_timer/benchmark_timer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/benchmark_timer.h>
#include <thread>
diff --git a/vespalib/src/tests/box/CMakeLists.txt b/vespalib/src/tests/box/CMakeLists.txt
index 378fc66a3ff..b08c997ece4 100644
--- a/vespalib/src/tests/box/CMakeLists.txt
+++ b/vespalib/src/tests/box/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_box_test_app TEST
SOURCES
box_test.cpp
diff --git a/vespalib/src/tests/box/box_test.cpp b/vespalib/src/tests/box/box_test.cpp
index 53ec9462d55..b45aa0c3a30 100644
--- a/vespalib/src/tests/box/box_test.cpp
+++ b/vespalib/src/tests/box/box_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/box.h>
diff --git a/vespalib/src/tests/btree/CMakeLists.txt b/vespalib/src/tests/btree/CMakeLists.txt
index 160c4d78a4e..09ff1afa6f5 100644
--- a/vespalib/src/tests/btree/CMakeLists.txt
+++ b/vespalib/src/tests/btree/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_btree_test_app TEST
SOURCES
btree_test.cpp
diff --git a/vespalib/src/tests/btree/btree_store/CMakeLists.txt b/vespalib/src/tests/btree/btree_store/CMakeLists.txt
index 2913267bea2..538d9764362 100644
--- a/vespalib/src/tests/btree/btree_store/CMakeLists.txt
+++ b/vespalib/src/tests/btree/btree_store/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_btree_store_test_app TEST
SOURCES
btree_store_test.cpp
diff --git a/vespalib/src/tests/btree/btree_store/btree_store_test.cpp b/vespalib/src/tests/btree/btree_store/btree_store_test.cpp
index 7eaf298ab40..e7d923d0e87 100644
--- a/vespalib/src/tests/btree/btree_store/btree_store_test.cpp
+++ b/vespalib/src/tests/btree/btree_store/btree_store_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/btree/btreestore.h>
#include <vespa/vespalib/btree/btreenodeallocator.hpp>
diff --git a/vespalib/src/tests/btree/btree_test.cpp b/vespalib/src/tests/btree/btree_test.cpp
index 640d07f7439..4af0b9672f2 100644
--- a/vespalib/src/tests/btree/btree_test.cpp
+++ b/vespalib/src/tests/btree/btree_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <string>
#include <vespa/vespalib/btree/btreeroot.h>
diff --git a/vespalib/src/tests/btree/btreeaggregation_test.cpp b/vespalib/src/tests/btree/btreeaggregation_test.cpp
index d077d5ee4a7..b1198e3828d 100644
--- a/vespalib/src/tests/btree/btreeaggregation_test.cpp
+++ b/vespalib/src/tests/btree/btreeaggregation_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/btree/btreeroot.h>
#include <vespa/vespalib/btree/btreebuilder.h>
diff --git a/vespalib/src/tests/btree/frozenbtree_test.cpp b/vespalib/src/tests/btree/frozenbtree_test.cpp
index a56a2d1bcac..01748b9edeb 100644
--- a/vespalib/src/tests/btree/frozenbtree_test.cpp
+++ b/vespalib/src/tests/btree/frozenbtree_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#define DEBUG_FROZENBTREE
#define LOG_FROZENBTREEXX
diff --git a/vespalib/src/tests/btree/iteratespeed.cpp b/vespalib/src/tests/btree/iteratespeed.cpp
index c93968a7da8..115024209b2 100644
--- a/vespalib/src/tests/btree/iteratespeed.cpp
+++ b/vespalib/src/tests/btree/iteratespeed.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/btree/btreeroot.h>
#include <vespa/vespalib/btree/btreebuilder.h>
diff --git a/vespalib/src/tests/child_process/CMakeLists.txt b/vespalib/src/tests/child_process/CMakeLists.txt
index f0b078d2dfc..b0503f7b08c 100644
--- a/vespalib/src/tests/child_process/CMakeLists.txt
+++ b/vespalib/src/tests/child_process/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_child_process_test_app TEST
SOURCES
child_process_test.cpp
diff --git a/vespalib/src/tests/child_process/child_process_test.cpp b/vespalib/src/tests/child_process/child_process_test.cpp
index ada29cd370d..d8ed707c1bf 100644
--- a/vespalib/src/tests/child_process/child_process_test.cpp
+++ b/vespalib/src/tests/child_process/child_process_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/child_process.h>
diff --git a/vespalib/src/tests/component/CMakeLists.txt b/vespalib/src/tests/component/CMakeLists.txt
index 934e4b00981..ef15dcc826d 100644
--- a/vespalib/src/tests/component/CMakeLists.txt
+++ b/vespalib/src/tests/component/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_component_test_app TEST
SOURCES
component.cpp
diff --git a/vespalib/src/tests/component/component.cpp b/vespalib/src/tests/component/component.cpp
index c64d65857e2..fddf7dd33aa 100644
--- a/vespalib/src/tests/component/component.cpp
+++ b/vespalib/src/tests/component/component.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("component_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/vespalib/src/tests/compress/CMakeLists.txt b/vespalib/src/tests/compress/CMakeLists.txt
index 75951e157f2..57348a8f85d 100644
--- a/vespalib/src/tests/compress/CMakeLists.txt
+++ b/vespalib/src/tests/compress/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_compress_test_app TEST
SOURCES
compress_test.cpp
diff --git a/vespalib/src/tests/compress/compress_test.cpp b/vespalib/src/tests/compress/compress_test.cpp
index af5940f4755..58133861d36 100644
--- a/vespalib/src/tests/compress/compress_test.cpp
+++ b/vespalib/src/tests/compress/compress_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/compress.h>
diff --git a/vespalib/src/tests/compression/CMakeLists.txt b/vespalib/src/tests/compression/CMakeLists.txt
index c5738733218..e54c3b2aa78 100644
--- a/vespalib/src/tests/compression/CMakeLists.txt
+++ b/vespalib/src/tests/compression/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_compression_test_app TEST
SOURCES
compression_test.cpp
diff --git a/vespalib/src/tests/compression/compression_test.cpp b/vespalib/src/tests/compression/compression_test.cpp
index ebd02d13875..eb1fce0a683 100644
--- a/vespalib/src/tests/compression/compression_test.cpp
+++ b/vespalib/src/tests/compression/compression_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/stllike/string.h>
diff --git a/vespalib/src/tests/data/databuffer/CMakeLists.txt b/vespalib/src/tests/data/databuffer/CMakeLists.txt
index f1c6c7c1862..9d8188c19d6 100644
--- a/vespalib/src/tests/data/databuffer/CMakeLists.txt
+++ b/vespalib/src/tests/data/databuffer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_data_databuffer_test_app TEST
SOURCES
databuffer_test.cpp
diff --git a/vespalib/src/tests/data/databuffer/databuffer_test.cpp b/vespalib/src/tests/data/databuffer/databuffer_test.cpp
index 80f3e9e9b86..5eedef416b0 100644
--- a/vespalib/src/tests/data/databuffer/databuffer_test.cpp
+++ b/vespalib/src/tests/data/databuffer/databuffer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/size_literals.h>
diff --git a/vespalib/src/tests/data/input_reader/CMakeLists.txt b/vespalib/src/tests/data/input_reader/CMakeLists.txt
index 7fd02f7c489..50ef9acc0da 100644
--- a/vespalib/src/tests/data/input_reader/CMakeLists.txt
+++ b/vespalib/src/tests/data/input_reader/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_input_reader_test_app TEST
SOURCES
input_reader_test.cpp
diff --git a/vespalib/src/tests/data/input_reader/input_reader_test.cpp b/vespalib/src/tests/data/input_reader/input_reader_test.cpp
index 535c188d01e..aefc8736cc8 100644
--- a/vespalib/src/tests/data/input_reader/input_reader_test.cpp
+++ b/vespalib/src/tests/data/input_reader/input_reader_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/data/memory_input.h>
#include <vespa/vespalib/data/input_reader.h>
diff --git a/vespalib/src/tests/data/lz4_encode_decode/CMakeLists.txt b/vespalib/src/tests/data/lz4_encode_decode/CMakeLists.txt
index 9f4efeede97..eeceac135f2 100644
--- a/vespalib/src/tests/data/lz4_encode_decode/CMakeLists.txt
+++ b/vespalib/src/tests/data/lz4_encode_decode/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_lz4_encode_decode_test_app TEST
SOURCES
lz4_encode_decode_test.cpp
diff --git a/vespalib/src/tests/data/lz4_encode_decode/lz4_encode_decode_test.cpp b/vespalib/src/tests/data/lz4_encode_decode/lz4_encode_decode_test.cpp
index 5f81677a732..67f704b1265 100644
--- a/vespalib/src/tests/data/lz4_encode_decode/lz4_encode_decode_test.cpp
+++ b/vespalib/src/tests/data/lz4_encode_decode/lz4_encode_decode_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/data/lz4_output_encoder.h>
#include <vespa/vespalib/data/lz4_input_decoder.h>
diff --git a/vespalib/src/tests/data/memory_input/CMakeLists.txt b/vespalib/src/tests/data/memory_input/CMakeLists.txt
index 4118ca8b537..fa095727e5a 100644
--- a/vespalib/src/tests/data/memory_input/CMakeLists.txt
+++ b/vespalib/src/tests/data/memory_input/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_memory_input_test_app TEST
SOURCES
memory_input_test.cpp
diff --git a/vespalib/src/tests/data/memory_input/memory_input_test.cpp b/vespalib/src/tests/data/memory_input/memory_input_test.cpp
index b4e8855162d..eb61409e28d 100644
--- a/vespalib/src/tests/data/memory_input/memory_input_test.cpp
+++ b/vespalib/src/tests/data/memory_input/memory_input_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/data/memory_input.h>
diff --git a/vespalib/src/tests/data/output_writer/CMakeLists.txt b/vespalib/src/tests/data/output_writer/CMakeLists.txt
index fa41bcbd0de..bc947835aec 100644
--- a/vespalib/src/tests/data/output_writer/CMakeLists.txt
+++ b/vespalib/src/tests/data/output_writer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_output_writer_test_app TEST
SOURCES
output_writer_test.cpp
diff --git a/vespalib/src/tests/data/output_writer/output_writer_test.cpp b/vespalib/src/tests/data/output_writer/output_writer_test.cpp
index c897c08a7c2..fe583958219 100644
--- a/vespalib/src/tests/data/output_writer/output_writer_test.cpp
+++ b/vespalib/src/tests/data/output_writer/output_writer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/data/simple_buffer.h>
#include <vespa/vespalib/data/output_writer.h>
diff --git a/vespalib/src/tests/data/simple_buffer/CMakeLists.txt b/vespalib/src/tests/data/simple_buffer/CMakeLists.txt
index 5f83943df44..9a567c57195 100644
--- a/vespalib/src/tests/data/simple_buffer/CMakeLists.txt
+++ b/vespalib/src/tests/data/simple_buffer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_simple_buffer_test_app TEST
SOURCES
simple_buffer_test.cpp
diff --git a/vespalib/src/tests/data/simple_buffer/simple_buffer_test.cpp b/vespalib/src/tests/data/simple_buffer/simple_buffer_test.cpp
index 4ddf05e77d1..15f8dcb657c 100644
--- a/vespalib/src/tests/data/simple_buffer/simple_buffer_test.cpp
+++ b/vespalib/src/tests/data/simple_buffer/simple_buffer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/data/simple_buffer.h>
diff --git a/vespalib/src/tests/data/smart_buffer/CMakeLists.txt b/vespalib/src/tests/data/smart_buffer/CMakeLists.txt
index e7468f4f508..3eada53c254 100644
--- a/vespalib/src/tests/data/smart_buffer/CMakeLists.txt
+++ b/vespalib/src/tests/data/smart_buffer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_smart_buffer_test_app TEST
SOURCES
smart_buffer_test.cpp
diff --git a/vespalib/src/tests/data/smart_buffer/smart_buffer_test.cpp b/vespalib/src/tests/data/smart_buffer/smart_buffer_test.cpp
index fda097a3cfe..c461da1fcf7 100644
--- a/vespalib/src/tests/data/smart_buffer/smart_buffer_test.cpp
+++ b/vespalib/src/tests/data/smart_buffer/smart_buffer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/data/smart_buffer.h>
diff --git a/vespalib/src/tests/datastore/array_store/CMakeLists.txt b/vespalib/src/tests/datastore/array_store/CMakeLists.txt
index 857ff2cd1f7..54fe5cb0246 100644
--- a/vespalib/src/tests/datastore/array_store/CMakeLists.txt
+++ b/vespalib/src/tests/datastore/array_store/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_array_store_test_app TEST
SOURCES
array_store_test.cpp
diff --git a/vespalib/src/tests/datastore/array_store/array_store_test.cpp b/vespalib/src/tests/datastore/array_store/array_store_test.cpp
index 417d8b80d87..dbd6d41f5e6 100644
--- a/vespalib/src/tests/datastore/array_store/array_store_test.cpp
+++ b/vespalib/src/tests/datastore/array_store/array_store_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/test/datastore/buffer_stats.h>
#include <vespa/vespalib/test/datastore/memstats.h>
@@ -18,8 +18,15 @@ using generation_t = vespalib::GenerationHandler::generation_t;
using MemStats = vespalib::datastore::test::MemStats;
using BufferStats = vespalib::datastore::test::BufferStats;
+namespace {
+
constexpr float ALLOC_GROW_FACTOR = 0.2;
+EntryRef as_entry_ref(const EntryRef& ref) noexcept { return ref; }
+EntryRef as_entry_ref(const AtomicEntryRef& ref) noexcept { return ref.load_relaxed(); }
+
+}
+
template <typename EntryT, typename RefT = EntryRefT<19> >
struct Fixture
{
@@ -115,19 +122,20 @@ struct Fixture
store.transferHoldLists(generation++);
store.trimHoldLists(generation);
}
+ template <typename TestedRefType>
void compactWorst(bool compactMemory, bool compactAddressSpace) {
ICompactionContext::UP ctx = store.compactWorst(compactMemory, compactAddressSpace);
- std::vector<EntryRef> refs;
+ std::vector<TestedRefType> refs;
for (auto itr = refStore.begin(); itr != refStore.end(); ++itr) {
- refs.push_back(itr->first);
+ refs.emplace_back(itr->first);
}
- std::vector<EntryRef> compactedRefs = refs;
- ctx->compact(ArrayRef<EntryRef>(compactedRefs));
+ std::vector<TestedRefType> compactedRefs = refs;
+ ctx->compact(ArrayRef<TestedRefType>(compactedRefs));
ReferenceStore compactedRefStore;
for (size_t i = 0; i < refs.size(); ++i) {
- ASSERT_EQUAL(0u, compactedRefStore.count(compactedRefs[i]));
- ASSERT_EQUAL(1u, refStore.count(refs[i]));
- compactedRefStore.insert(std::make_pair(compactedRefs[i], refStore[refs[i]]));
+ ASSERT_EQUAL(0u, compactedRefStore.count(as_entry_ref(compactedRefs[i])));
+ ASSERT_EQUAL(1u, refStore.count(as_entry_ref(refs[i])));
+ compactedRefStore.insert(std::make_pair(as_entry_ref(compactedRefs[i]), refStore[as_entry_ref(refs[i])]));
}
refStore = compactedRefStore;
}
@@ -150,13 +158,13 @@ TEST("require that we test with trivial and non-trivial types")
TEST_F("control static sizes", NumberFixture(3)) {
#ifdef _LIBCPP_VERSION
- EXPECT_EQUAL(400u, sizeof(f.store));
+ EXPECT_EQUAL(424u, sizeof(f.store));
EXPECT_EQUAL(296u, sizeof(NumberFixture::ArrayStoreType::DataStoreType));
#else
- EXPECT_EQUAL(432u, sizeof(f.store));
+ EXPECT_EQUAL(456u, sizeof(f.store));
EXPECT_EQUAL(328u, sizeof(NumberFixture::ArrayStoreType::DataStoreType));
#endif
- EXPECT_EQUAL(72u, sizeof(NumberFixture::ArrayStoreType::SmallArrayType));
+ EXPECT_EQUAL(96u, sizeof(NumberFixture::ArrayStoreType::SmallArrayType));
MemoryUsage usage = f.store.getMemoryUsage();
EXPECT_EQUAL(960u, usage.allocatedBytes());
EXPECT_EQUAL(32u, usage.usedBytes());
@@ -252,7 +260,11 @@ TEST_F("require that new underlying buffer is allocated when current is full", S
TEST_DO(f.assertStoreContent());
}
-TEST_F("require that the buffer with most dead space is compacted", NumberFixture(2))
+namespace {
+
+template <typename TestedRefType>
+void
+test_compaction(NumberFixture &f)
{
EntryRef size1Ref = f.add({1});
EntryRef size2Ref = f.add({2,2});
@@ -267,7 +279,7 @@ TEST_F("require that the buffer with most dead space is compacted", NumberFixtur
uint32_t size3BufferId = f.getBufferId(size3Ref);
EXPECT_EQUAL(3u, f.refStore.size());
- f.compactWorst(true, false);
+ f.compactWorst<TestedRefType>(true, false);
EXPECT_EQUAL(3u, f.refStore.size());
f.assertStoreContent();
@@ -281,6 +293,18 @@ TEST_F("require that the buffer with most dead space is compacted", NumberFixtur
EXPECT_TRUE(f.store.bufferState(size2Ref).isFree());
}
+}
+
+TEST_F("require that the buffer with most dead space is compacted (EntryRef vector)", NumberFixture(2))
+{
+ test_compaction<EntryRef>(f);
+}
+
+TEST_F("require that the buffer with most dead space is compacted (AtomicEntryRef vector)", NumberFixture(2))
+{
+ test_compaction<AtomicEntryRef>(f);
+}
+
namespace {
void testCompaction(NumberFixture &f, bool compactMemory, bool compactAddressSpace)
@@ -300,7 +324,7 @@ void testCompaction(NumberFixture &f, bool compactMemory, bool compactAddressSpa
uint32_t size3BufferId = f.getBufferId(size3Ref);
EXPECT_EQUAL(3u, f.refStore.size());
- f.compactWorst(compactMemory, compactAddressSpace);
+ f.compactWorst<EntryRef>(compactMemory, compactAddressSpace);
EXPECT_EQUAL(3u, f.refStore.size());
f.assertStoreContent();
diff --git a/vespalib/src/tests/datastore/array_store_config/CMakeLists.txt b/vespalib/src/tests/datastore/array_store_config/CMakeLists.txt
index a5638462748..e0d4ce5525f 100644
--- a/vespalib/src/tests/datastore/array_store_config/CMakeLists.txt
+++ b/vespalib/src/tests/datastore/array_store_config/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_array_store_config_test_app TEST
SOURCES
array_store_config_test.cpp
diff --git a/vespalib/src/tests/datastore/array_store_config/array_store_config_test.cpp b/vespalib/src/tests/datastore/array_store_config/array_store_config_test.cpp
index a2a1ee91d57..f5cfea0c327 100644
--- a/vespalib/src/tests/datastore/array_store_config/array_store_config_test.cpp
+++ b/vespalib/src/tests/datastore/array_store_config/array_store_config_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/datastore/entryref.h>
diff --git a/vespalib/src/tests/datastore/buffer_type/CMakeLists.txt b/vespalib/src/tests/datastore/buffer_type/CMakeLists.txt
index d3618c998e3..387de7e45f9 100644
--- a/vespalib/src/tests/datastore/buffer_type/CMakeLists.txt
+++ b/vespalib/src/tests/datastore/buffer_type/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_buffer_type_test_app TEST
SOURCES
buffer_type_test.cpp
diff --git a/vespalib/src/tests/datastore/buffer_type/buffer_type_test.cpp b/vespalib/src/tests/datastore/buffer_type/buffer_type_test.cpp
index d647a659eb6..a31dfffc25b 100644
--- a/vespalib/src/tests/datastore/buffer_type/buffer_type_test.cpp
+++ b/vespalib/src/tests/datastore/buffer_type/buffer_type_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/datastore/buffer_type.h>
#include <vespa/vespalib/testkit/testapp.h>
@@ -49,7 +49,7 @@ struct Fixture {
}
~Fixture() {
for (auto& setup : setups) {
- bufferType.onHold(&setup._usedElems, &setup._deadElems);
+ bufferType.onHold(setup._bufferId, &setup._usedElems, &setup._deadElems);
bufferType.onFree(setup._usedElems);
}
}
@@ -130,40 +130,40 @@ TEST("require that arrays to alloc is capped to min arrays")
TEST_DO(assertArraysToAlloc(17, Setup().used(34 * 4).needed(4).minArrays(16)));
}
-TEST("arrays to alloc considers used elements across all active buffers (no resizing)")
+TEST("arrays to alloc considers used elements across all active buffers of same type (no resizing)")
{
Fixture f(Setup().used(6 * 4));
f.assertArraysToAlloc(6 * 0.5);
- f.add_setup(Setup().used(8 * 4));
+ f.add_setup(Setup().used(8 * 4).bufferId(2));
f.assertArraysToAlloc((6 + 8) * 0.5);
- f.add_setup(Setup().used(10 * 4));
+ f.add_setup(Setup().used(10 * 4).bufferId(3));
f.assertArraysToAlloc((6 + 8 + 10) * 0.5);
}
-TEST("arrays to alloc only considers used elements in current buffer when resizing")
+TEST("arrays to alloc considers used elements across all active buffers of same type when resizing")
{
Fixture f(Setup().used(6 * 4));
f.assertArraysToAlloc(6 * 0.5);
- f.add_setup(Setup().used(8 * 4).resizing(true));
- f.assertArraysToAlloc(8 + 8 * 0.5);
+ f.add_setup(Setup().used(8 * 4).resizing(true).bufferId(2));
+ f.assertArraysToAlloc(8 + (6 + 8) * 0.5);
}
-TEST("arrays to alloc considers (and subtracts) dead elements across all active buffers (no resizing)")
+TEST("arrays to alloc considers (and subtracts) dead elements across all active buffers of same type (no resizing)")
{
Fixture f(Setup().used(6 * 4).dead(2 * 4));
f.assertArraysToAlloc((6 - 2) * 0.5);
- f.add_setup(Setup().used(12 * 4).dead(4 * 4));
+ f.add_setup(Setup().used(12 * 4).dead(4 * 4).bufferId(2));
f.assertArraysToAlloc((6 - 2 + 12 - 4) * 0.5);
- f.add_setup(Setup().used(20 * 4).dead(6 * 4));
+ f.add_setup(Setup().used(20 * 4).dead(6 * 4).bufferId(3));
f.assertArraysToAlloc((6 - 2 + 12 - 4 + 20 - 6) * 0.5);
}
-TEST("arrays to alloc only considers (and subtracts) dead elements in current buffer when resizing")
+TEST("arrays to alloc considers (and subtracts) dead elements across all active buffers of same type when resizing")
{
Fixture f(Setup().used(6 * 4).dead(2 * 4));
f.assertArraysToAlloc((6 - 2) * 0.5);
- f.add_setup(Setup().used(12 * 4).dead(4 * 4).resizing(true));
- f.assertArraysToAlloc(12 + (12 - 4) * 0.5);
+ f.add_setup(Setup().used(12 * 4).dead(4 * 4).resizing(true).bufferId(2));
+ f.assertArraysToAlloc(12 + (6 - 2 + 12 - 4) * 0.5);
}
TEST_MAIN() { TEST_RUN_ALL(); }
diff --git a/vespalib/src/tests/datastore/datastore/CMakeLists.txt b/vespalib/src/tests/datastore/datastore/CMakeLists.txt
index 42944211ad9..e922a03ba07 100644
--- a/vespalib/src/tests/datastore/datastore/CMakeLists.txt
+++ b/vespalib/src/tests/datastore/datastore/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_datastore_test_app TEST
SOURCES
datastore_test.cpp
diff --git a/vespalib/src/tests/datastore/datastore/datastore_test.cpp b/vespalib/src/tests/datastore/datastore/datastore_test.cpp
index 90281acb0d3..2e2728781f4 100644
--- a/vespalib/src/tests/datastore/datastore/datastore_test.cpp
+++ b/vespalib/src/tests/datastore/datastore/datastore_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/datastore/datastore.h>
#include <vespa/vespalib/datastore/datastore.hpp>
@@ -55,6 +55,7 @@ public:
using GrowthStats = std::vector<int>;
+using BufferStats = std::vector<int>;
constexpr float ALLOC_GROW_FACTOR = 0.4;
constexpr size_t HUGE_PAGE_ARRAY_SIZE = (MemoryAllocator::HUGEPAGE_SIZE / sizeof(int));
@@ -123,6 +124,19 @@ public:
++i;
}
}
+ BufferStats getBuffers(size_t bufs) {
+ BufferStats buffers;
+ while (buffers.size() < bufs) {
+ RefType iRef = (_type.getArraySize() == 1) ?
+ (_store.template allocator<DataType>(_typeId).alloc().ref) :
+ (_store.template allocator<DataType>(_typeId).allocArray(_type.getArraySize()).ref);
+ int buffer_id = iRef.bufferId();
+ if (buffers.empty() || buffers.back() != buffer_id) {
+ buffers.push_back(buffer_id);
+ }
+ }
+ return buffers;
+ }
vespalib::MemoryUsage getMemoryUsage() const { return _store.getMemoryUsage(); }
};
@@ -563,16 +577,16 @@ TEST(DataStoreTest, require_that_buffer_growth_works)
assertGrowStats({ 4, 4, 4, 4, 8, 16, 16, 32, 64, 64 },
{ 4 }, 20, 4, 0);
// Resize if buffer size is less than 4, min size 0
- assertGrowStats({ 4, 4, 4, 4, 8, 16, 16, 32, 64, 64 },
+ assertGrowStats({ 4, 4, 8, 32, 32, 64, 64, 128, 128, 128 },
{ 0, 1, 2, 4 }, 4, 0, 4);
// Always switch to new buffer, min size 16
assertGrowStats({ 16, 16, 16, 32, 32, 64, 128, 128, 128 },
{ 16 }, 68, 16, 0);
// Resize if buffer size is less than 16, min size 0
- assertGrowStats({ 16, 16, 16, 32, 32, 64, 128, 128, 128 },
+ assertGrowStats({ 16, 32, 32, 128, 128, 128, 128, 128, 128 },
{ 0, 1, 2, 4, 8, 16 }, 4, 0, 16);
// Resize if buffer size is less than 16, min size 4
- assertGrowStats({ 16, 16, 16, 32, 32, 64, 128, 128, 128 },
+ assertGrowStats({ 16, 32, 32, 128, 128, 128, 128, 128, 128 },
{ 4, 8, 16 }, 20, 4, 16);
// Always switch to new buffer, min size 0
assertGrowStats({ 1, 1, 1, 1, 1, 2, 2, 4, 8, 8, 16, 32 },
@@ -580,7 +594,7 @@ TEST(DataStoreTest, require_that_buffer_growth_works)
// Buffers with sizes larger than the huge page size of the mmap allocator.
ASSERT_EQ(524288u, HUGE_PAGE_ARRAY_SIZE);
- assertGrowStats({ 262144, 262144, 262144, 524288, 524288, 524288 * 2, 524288 * 3, 524288 * 4, 524288 * 5, 524288 * 5 },
+ assertGrowStats({ 262144, 524288, 524288, 524288 * 3, 524288 * 3, 524288 * 5, 524288 * 5, 524288 * 5, 524288 * 5, 524288 * 5 },
{ 0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144 },
4, 0, HUGE_PAGE_ARRAY_SIZE / 2, HUGE_PAGE_ARRAY_SIZE * 5);
}
@@ -614,12 +628,12 @@ TEST(DataStoreTest, require_that_offset_in_EntryRefT_is_within_bounds_when_alloc
* 4) Cap bytes to alloc to the max offset EntryRef can handle.
* The max bytes to alloc is: maxArrays * arraySize * elementSize.
*/
- assertGrowStats<uint8_t>({8192,8192,8192,16384,16384,32768,65536,65536,98304,98304,98304,98304}, 3);
- assertGrowStats<uint8_t>({16384,16384,16384,32768,32768,65536,131072,131072,163840,163840,163840,163840}, 5);
- assertGrowStats<uint8_t>({16384,16384,16384,32768,32768,65536,131072,131072,229376,229376,229376,229376}, 7);
- assertGrowStats<uint32_t>({8192,8192,8192,16384,16384,32768,65536,65536,98304,98304,98304,98304}, 3);
- assertGrowStats<uint32_t>({16384,16384,16384,32768,32768,65536,131072,131072,163840,163840,163840,163840}, 5);
- assertGrowStats<uint32_t>({16384,16384,16384,32768,32768,65536,131072,131072,229376,229376,229376,229376}, 7);
+ assertGrowStats<uint8_t>({8192,16384,16384,65536,65536,98304,98304,98304,98304,98304,98304,98304}, 3);
+ assertGrowStats<uint8_t>({16384,16384,65536,65536,131072,131072,163840,163840,163840,163840,163840,163840}, 5);
+ assertGrowStats<uint8_t>({16384,32768,32768,131072,131072,229376,229376,229376,229376,229376,229376,229376}, 7);
+ assertGrowStats<uint32_t>({8192,16384,16384,65536,65536,98304,98304,98304,98304,98304,98304,98304}, 3);
+ assertGrowStats<uint32_t>({16384,16384,65536,65536,131072,131072,163840,163840,163840,163840,163840,163840}, 5);
+ assertGrowStats<uint32_t>({16384,32768,32768,131072,131072,229376,229376,229376,229376,229376,229376,229376}, 7);
}
namespace {
@@ -666,8 +680,24 @@ TEST(DataStoreTest, can_set_memory_allocator)
EXPECT_EQ(AllocStats(3, 3), stats);
}
+namespace {
+
+void
+assertBuffers(BufferStats exp_buffers, size_t num_arrays_for_new_buffer)
+{
+ EXPECT_EQ(exp_buffers, IntGrowStore(1, 1, 1024, num_arrays_for_new_buffer).getBuffers(exp_buffers.size()));
+}
+
+}
+
+TEST(DataStoreTest, can_reuse_active_buffer_as_primary_buffer)
+{
+ assertBuffers({ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 0);
+ assertBuffers({ 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3}, 16);
+}
+
TEST(DataStoreTest, control_static_sizes) {
- EXPECT_EQ(72, sizeof(BufferTypeBase));
+ EXPECT_EQ(96, sizeof(BufferTypeBase));
EXPECT_EQ(32, sizeof(BufferState::FreeList));
EXPECT_EQ(1, sizeof(BufferState::State));
EXPECT_EQ(144, sizeof(BufferState));
diff --git a/vespalib/src/tests/datastore/fixed_size_hash_map/CMakeLists.txt b/vespalib/src/tests/datastore/fixed_size_hash_map/CMakeLists.txt
index 6b324b93bcb..8d702c9ed0a 100644
--- a/vespalib/src/tests/datastore/fixed_size_hash_map/CMakeLists.txt
+++ b/vespalib/src/tests/datastore/fixed_size_hash_map/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_fixed_size_hash_map_test_app
SOURCES
fixed_size_hash_map_test.cpp
diff --git a/vespalib/src/tests/datastore/fixed_size_hash_map/fixed_size_hash_map_test.cpp b/vespalib/src/tests/datastore/fixed_size_hash_map/fixed_size_hash_map_test.cpp
index b32a9baf90c..417b92af9ac 100644
--- a/vespalib/src/tests/datastore/fixed_size_hash_map/fixed_size_hash_map_test.cpp
+++ b/vespalib/src/tests/datastore/fixed_size_hash_map/fixed_size_hash_map_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/datastore/fixed_size_hash_map.h>
#include <vespa/vespalib/datastore/unique_store_allocator.h>
diff --git a/vespalib/src/tests/datastore/sharded_hash_map/CMakeLists.txt b/vespalib/src/tests/datastore/sharded_hash_map/CMakeLists.txt
index f94b952f4a3..eb075fd844c 100644
--- a/vespalib/src/tests/datastore/sharded_hash_map/CMakeLists.txt
+++ b/vespalib/src/tests/datastore/sharded_hash_map/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_sharded_hash_map_test_app
SOURCES
sharded_hash_map_test.cpp
diff --git a/vespalib/src/tests/datastore/sharded_hash_map/sharded_hash_map_test.cpp b/vespalib/src/tests/datastore/sharded_hash_map/sharded_hash_map_test.cpp
index 67195ecd8dd..799f2c79dd4 100644
--- a/vespalib/src/tests/datastore/sharded_hash_map/sharded_hash_map_test.cpp
+++ b/vespalib/src/tests/datastore/sharded_hash_map/sharded_hash_map_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/datastore/sharded_hash_map.h>
#include <vespa/vespalib/datastore/unique_store_allocator.h>
diff --git a/vespalib/src/tests/datastore/unique_store/CMakeLists.txt b/vespalib/src/tests/datastore/unique_store/CMakeLists.txt
index a9f96b8d492..244490beb00 100644
--- a/vespalib/src/tests/datastore/unique_store/CMakeLists.txt
+++ b/vespalib/src/tests/datastore/unique_store/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_unique_store_test_app TEST
SOURCES
unique_store_test.cpp
diff --git a/vespalib/src/tests/datastore/unique_store/unique_store_test.cpp b/vespalib/src/tests/datastore/unique_store/unique_store_test.cpp
index d9b3d25a908..ccb18f13871 100644
--- a/vespalib/src/tests/datastore/unique_store/unique_store_test.cpp
+++ b/vespalib/src/tests/datastore/unique_store/unique_store_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/datastore/unique_store.hpp>
#include <vespa/vespalib/datastore/unique_store_remapper.h>
#include <vespa/vespalib/datastore/unique_store_string_allocator.hpp>
diff --git a/vespalib/src/tests/detect_type_benchmark/CMakeLists.txt b/vespalib/src/tests/detect_type_benchmark/CMakeLists.txt
index 279622dd452..4320c793267 100644
--- a/vespalib/src/tests/detect_type_benchmark/CMakeLists.txt
+++ b/vespalib/src/tests/detect_type_benchmark/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_detect_type_benchmark_app TEST
SOURCES
detect_type_benchmark.cpp
diff --git a/vespalib/src/tests/detect_type_benchmark/detect_type_benchmark.cpp b/vespalib/src/tests/detect_type_benchmark/detect_type_benchmark.cpp
index 71c4a7856c8..22454cb4b01 100644
--- a/vespalib/src/tests/detect_type_benchmark/detect_type_benchmark.cpp
+++ b/vespalib/src/tests/detect_type_benchmark/detect_type_benchmark.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/benchmark_timer.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/vespalib/src/tests/dotproduct/CMakeLists.txt b/vespalib/src/tests/dotproduct/CMakeLists.txt
index 922333c1eaa..d82b5472840 100644
--- a/vespalib/src/tests/dotproduct/CMakeLists.txt
+++ b/vespalib/src/tests/dotproduct/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_dotproductbenchmark_app
SOURCES
dotproductbenchmark.cpp
diff --git a/vespalib/src/tests/dotproduct/dotproductbenchmark.cpp b/vespalib/src/tests/dotproduct/dotproductbenchmark.cpp
index e95e8a5c58b..77bdbf6f58b 100644
--- a/vespalib/src/tests/dotproduct/dotproductbenchmark.cpp
+++ b/vespalib/src/tests/dotproduct/dotproductbenchmark.cpp
@@ -1,10 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/hwaccelrated/iaccelrated.h>
#include <vespa/vespalib/stllike/string.h>
#include <vespa/vespalib/stllike/hash_map.h>
#include <iostream>
#include <vector>
#include <thread>
+#include <functional>
using namespace vespalib;
using vespalib::hwaccelrated::IAccelrated;
@@ -106,6 +107,8 @@ SparseBenchmark::SparseBenchmark(size_t numDocs, size_t numValues, size_t numQue
}
SparseBenchmark::~SparseBenchmark() = default;
+std::function<void(int64_t)> use_sum = [](int64_t) noexcept { };
+
class UnorderedSparseBenchmark : public SparseBenchmark
{
private:
@@ -124,6 +127,7 @@ private:
sum += static_cast<int64_t>(_values[offset + i]._value) * it->second;
}
}
+ use_sum(sum);
}
map _query;
};
@@ -154,6 +158,7 @@ private:
sum += static_cast<int64_t>(_values[offset + b]._value) * _query[a]._value;
}
}
+ use_sum(sum);
}
std::vector<P> _query;
};
diff --git a/vespalib/src/tests/drop-file-from-cache/CMakeLists.txt b/vespalib/src/tests/drop-file-from-cache/CMakeLists.txt
index d6f4a51a4c5..dd6214ffc75 100644
--- a/vespalib/src/tests/drop-file-from-cache/CMakeLists.txt
+++ b/vespalib/src/tests/drop-file-from-cache/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_drop_file_from_cache_test_app TEST
SOURCES
drop_file_from_cache_test.cpp
diff --git a/vespalib/src/tests/drop-file-from-cache/drop_file_from_cache_test.cpp b/vespalib/src/tests/drop-file-from-cache/drop_file_from_cache_test.cpp
index 787e46cfd91..e3344fb4106 100644
--- a/vespalib/src/tests/drop-file-from-cache/drop_file_from_cache_test.cpp
+++ b/vespalib/src/tests/drop-file-from-cache/drop_file_from_cache_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/child_process.h>
diff --git a/vespalib/src/tests/dual_merge_director/CMakeLists.txt b/vespalib/src/tests/dual_merge_director/CMakeLists.txt
index 3cd09f8fa36..5eb73a02789 100644
--- a/vespalib/src/tests/dual_merge_director/CMakeLists.txt
+++ b/vespalib/src/tests/dual_merge_director/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_dual_merge_director_test_app TEST
SOURCES
dual_merge_director_test.cpp
diff --git a/vespalib/src/tests/dual_merge_director/dual_merge_director_test.cpp b/vespalib/src/tests/dual_merge_director/dual_merge_director_test.cpp
index 3dc111fd010..f7a27674e34 100644
--- a/vespalib/src/tests/dual_merge_director/dual_merge_director_test.cpp
+++ b/vespalib/src/tests/dual_merge_director/dual_merge_director_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/dual_merge_director.h>
diff --git a/vespalib/src/tests/eventbarrier/CMakeLists.txt b/vespalib/src/tests/eventbarrier/CMakeLists.txt
index 3cda30d0268..1723f041660 100644
--- a/vespalib/src/tests/eventbarrier/CMakeLists.txt
+++ b/vespalib/src/tests/eventbarrier/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_eventbarrier_test_app TEST
SOURCES
eventbarrier.cpp
diff --git a/vespalib/src/tests/eventbarrier/eventbarrier.cpp b/vespalib/src/tests/eventbarrier/eventbarrier.cpp
index 692acc1abf4..e558b80e7ce 100644
--- a/vespalib/src/tests/eventbarrier/eventbarrier.cpp
+++ b/vespalib/src/tests/eventbarrier/eventbarrier.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/eventbarrier.hpp>
diff --git a/vespalib/src/tests/exception_classes/CMakeLists.txt b/vespalib/src/tests/exception_classes/CMakeLists.txt
index 58a1fc5cad7..41fa3b847fc 100644
--- a/vespalib/src/tests/exception_classes/CMakeLists.txt
+++ b/vespalib/src/tests/exception_classes/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_exception_classes_test_app TEST
SOURCES
exception_classes_test.cpp
diff --git a/vespalib/src/tests/exception_classes/caught_uncaught.cpp b/vespalib/src/tests/exception_classes/caught_uncaught.cpp
index 48f5f0f41ae..9f760cfb88b 100644
--- a/vespalib/src/tests/exception_classes/caught_uncaught.cpp
+++ b/vespalib/src/tests/exception_classes/caught_uncaught.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/exceptions.h>
using namespace vespalib;
diff --git a/vespalib/src/tests/exception_classes/exception_classes_test.cpp b/vespalib/src/tests/exception_classes/exception_classes_test.cpp
index c718987aae9..2741fe20161 100644
--- a/vespalib/src/tests/exception_classes/exception_classes_test.cpp
+++ b/vespalib/src/tests/exception_classes/exception_classes_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/exceptions.h>
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/vespalib/src/tests/exception_classes/mmap.cpp b/vespalib/src/tests/exception_classes/mmap.cpp
index 2a6896bb0e0..fdb67ddeae2 100644
--- a/vespalib/src/tests/exception_classes/mmap.cpp
+++ b/vespalib/src/tests/exception_classes/mmap.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/alloc.h>
#include <vector>
#include <cassert>
diff --git a/vespalib/src/tests/exception_classes/silenceuncaught_test.cpp b/vespalib/src/tests/exception_classes/silenceuncaught_test.cpp
index 89030a19cd6..db1ead00986 100644
--- a/vespalib/src/tests/exception_classes/silenceuncaught_test.cpp
+++ b/vespalib/src/tests/exception_classes/silenceuncaught_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/exception.h>
#include <vespa/vespalib/util/child_process.h>
diff --git a/vespalib/src/tests/executor/CMakeLists.txt b/vespalib/src/tests/executor/CMakeLists.txt
index e01a4a9762f..fbd72ad4a81 100644
--- a/vespalib/src/tests/executor/CMakeLists.txt
+++ b/vespalib/src/tests/executor/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_threadstackexecutor_test_app TEST
SOURCES
threadstackexecutor_test.cpp
diff --git a/vespalib/src/tests/executor/blocking_executor_stress.cpp b/vespalib/src/tests/executor/blocking_executor_stress.cpp
index 27367f6677c..7292e374559 100644
--- a/vespalib/src/tests/executor/blocking_executor_stress.cpp
+++ b/vespalib/src/tests/executor/blocking_executor_stress.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/blockingthreadstackexecutor.h>
#include <vespa/vespalib/util/executor.h>
diff --git a/vespalib/src/tests/executor/blockingthreadstackexecutor_test.cpp b/vespalib/src/tests/executor/blockingthreadstackexecutor_test.cpp
index e26a0931090..d811ded9e95 100644
--- a/vespalib/src/tests/executor/blockingthreadstackexecutor_test.cpp
+++ b/vespalib/src/tests/executor/blockingthreadstackexecutor_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/testkit/time_bomb.h>
#include <vespa/vespalib/util/blockingthreadstackexecutor.h>
diff --git a/vespalib/src/tests/executor/executor_test.cpp b/vespalib/src/tests/executor/executor_test.cpp
index f6d3a4b5e1d..e9ce517dce0 100644
--- a/vespalib/src/tests/executor/executor_test.cpp
+++ b/vespalib/src/tests/executor/executor_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/lambdatask.h>
diff --git a/vespalib/src/tests/executor/stress_test.cpp b/vespalib/src/tests/executor/stress_test.cpp
index 01873fa0480..869cc05fa4b 100644
--- a/vespalib/src/tests/executor/stress_test.cpp
+++ b/vespalib/src/tests/executor/stress_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/executor.h>
diff --git a/vespalib/src/tests/executor/threadstackexecutor_test.cpp b/vespalib/src/tests/executor/threadstackexecutor_test.cpp
index a830a7a6c2b..63c6856afd2 100644
--- a/vespalib/src/tests/executor/threadstackexecutor_test.cpp
+++ b/vespalib/src/tests/executor/threadstackexecutor_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/threadstackexecutor.h>
diff --git a/vespalib/src/tests/explore_modern_cpp/CMakeLists.txt b/vespalib/src/tests/explore_modern_cpp/CMakeLists.txt
index 90788b790e0..df997e7af4f 100644
--- a/vespalib/src/tests/explore_modern_cpp/CMakeLists.txt
+++ b/vespalib/src/tests/explore_modern_cpp/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_explore_modern_cpp_test_app TEST
SOURCES
explore_modern_cpp_test.cpp
diff --git a/vespalib/src/tests/explore_modern_cpp/explore_modern_cpp_test.cpp b/vespalib/src/tests/explore_modern_cpp/explore_modern_cpp_test.cpp
index 29a82138d29..e259178d460 100644
--- a/vespalib/src/tests/explore_modern_cpp/explore_modern_cpp_test.cpp
+++ b/vespalib/src/tests/explore_modern_cpp/explore_modern_cpp_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <functional>
diff --git a/vespalib/src/tests/false/CMakeLists.txt b/vespalib/src/tests/false/CMakeLists.txt
index 62722c86404..9eb90f56cbf 100644
--- a/vespalib/src/tests/false/CMakeLists.txt
+++ b/vespalib/src/tests/false/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_false_test_app
SOURCES
false.cpp
diff --git a/vespalib/src/tests/false/false.cpp b/vespalib/src/tests/false/false.cpp
index 4b8417c32b3..4b41f819022 100644
--- a/vespalib/src/tests/false/false.cpp
+++ b/vespalib/src/tests/false/false.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("false_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/vespalib/src/tests/fiddle/CMakeLists.txt b/vespalib/src/tests/fiddle/CMakeLists.txt
index 5ad80452c5e..732699e75d8 100644
--- a/vespalib/src/tests/fiddle/CMakeLists.txt
+++ b/vespalib/src/tests/fiddle/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_fiddle_test_app TEST
SOURCES
fiddle_test.cpp
diff --git a/vespalib/src/tests/fiddle/fiddle_test.cpp b/vespalib/src/tests/fiddle/fiddle_test.cpp
index 443c5eabd7d..681d941f748 100644
--- a/vespalib/src/tests/fiddle/fiddle_test.cpp
+++ b/vespalib/src/tests/fiddle/fiddle_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/fiddle.h>
diff --git a/vespalib/src/tests/gencnt/CMakeLists.txt b/vespalib/src/tests/gencnt/CMakeLists.txt
index 564106724a1..05391f50c8b 100644
--- a/vespalib/src/tests/gencnt/CMakeLists.txt
+++ b/vespalib/src/tests/gencnt/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_gencnt_test_app TEST
SOURCES
gencnt_test.cpp
diff --git a/vespalib/src/tests/gencnt/gencnt_test.cpp b/vespalib/src/tests/gencnt/gencnt_test.cpp
index a81399449da..b42d943568f 100644
--- a/vespalib/src/tests/gencnt/gencnt_test.cpp
+++ b/vespalib/src/tests/gencnt/gencnt_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("gencnt_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/vespalib/src/tests/guard/CMakeLists.txt b/vespalib/src/tests/guard/CMakeLists.txt
index b053150b8cb..918d8581a1a 100644
--- a/vespalib/src/tests/guard/CMakeLists.txt
+++ b/vespalib/src/tests/guard/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_guard_test_app TEST
SOURCES
guard_test.cpp
diff --git a/vespalib/src/tests/guard/guard_test.cpp b/vespalib/src/tests/guard/guard_test.cpp
index 9889f466edb..9e5e7e55cc6 100644
--- a/vespalib/src/tests/guard/guard_test.cpp
+++ b/vespalib/src/tests/guard/guard_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/guard.h>
diff --git a/vespalib/src/tests/host_name/CMakeLists.txt b/vespalib/src/tests/host_name/CMakeLists.txt
index 9fbb36e79c9..7bc0170b726 100644
--- a/vespalib/src/tests/host_name/CMakeLists.txt
+++ b/vespalib/src/tests/host_name/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_host_name_test_app TEST
SOURCES
host_name_test.cpp
diff --git a/vespalib/src/tests/host_name/host_name_test.cpp b/vespalib/src/tests/host_name/host_name_test.cpp
index 442da2ac2e8..ca5aebe8c95 100644
--- a/vespalib/src/tests/host_name/host_name_test.cpp
+++ b/vespalib/src/tests/host_name/host_name_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/host_name.h>
#include <vespa/vespalib/util/child_process.h>
diff --git a/vespalib/src/tests/hwaccelrated/CMakeLists.txt b/vespalib/src/tests/hwaccelrated/CMakeLists.txt
index 49501341098..960ae840995 100644
--- a/vespalib/src/tests/hwaccelrated/CMakeLists.txt
+++ b/vespalib/src/tests/hwaccelrated/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_hwaccelrated_test_app TEST
SOURCES
hwaccelrated_test.cpp
diff --git a/vespalib/src/tests/hwaccelrated/hwaccelrated_test.cpp b/vespalib/src/tests/hwaccelrated/hwaccelrated_test.cpp
index 421f3f6f520..3d66769c15a 100644
--- a/vespalib/src/tests/hwaccelrated/hwaccelrated_test.cpp
+++ b/vespalib/src/tests/hwaccelrated/hwaccelrated_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/hwaccelrated/iaccelrated.h>
diff --git a/vespalib/src/tests/io/fileutil/CMakeLists.txt b/vespalib/src/tests/io/fileutil/CMakeLists.txt
index 853343689c3..18bf6a5f1fb 100644
--- a/vespalib/src/tests/io/fileutil/CMakeLists.txt
+++ b/vespalib/src/tests/io/fileutil/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_fileutil_test_app TEST
SOURCES
fileutiltest.cpp
diff --git a/vespalib/src/tests/io/fileutil/fileutiltest.cpp b/vespalib/src/tests/io/fileutil/fileutiltest.cpp
index 6f0308a3003..189bfef349b 100644
--- a/vespalib/src/tests/io/fileutil/fileutiltest.cpp
+++ b/vespalib/src/tests/io/fileutil/fileutiltest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/io/fileutil.h>
#include <vespa/vespalib/testkit/test_kit.h>
#include <iostream>
diff --git a/vespalib/src/tests/io/mapped_file_input/CMakeLists.txt b/vespalib/src/tests/io/mapped_file_input/CMakeLists.txt
index 664d99676d6..a8667e5446e 100644
--- a/vespalib/src/tests/io/mapped_file_input/CMakeLists.txt
+++ b/vespalib/src/tests/io/mapped_file_input/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_mapped_file_input_test_app TEST
SOURCES
mapped_file_input_test.cpp
diff --git a/vespalib/src/tests/io/mapped_file_input/mapped_file_input_test.cpp b/vespalib/src/tests/io/mapped_file_input/mapped_file_input_test.cpp
index 45c1f98f990..c787f7f9144 100644
--- a/vespalib/src/tests/io/mapped_file_input/mapped_file_input_test.cpp
+++ b/vespalib/src/tests/io/mapped_file_input/mapped_file_input_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/io/mapped_file_input.h>
diff --git a/vespalib/src/tests/issue/CMakeLists.txt b/vespalib/src/tests/issue/CMakeLists.txt
new file mode 100644
index 00000000000..7c8147979d7
--- /dev/null
+++ b/vespalib/src/tests/issue/CMakeLists.txt
@@ -0,0 +1,9 @@
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(vespalib_issue_test_app TEST
+ SOURCES
+ issue_test.cpp
+ DEPENDS
+ vespalib
+ GTest::GTest
+)
+vespa_add_test(NAME vespalib_issue_test_app COMMAND vespalib_issue_test_app)
diff --git a/vespalib/src/tests/issue/issue_test.cpp b/vespalib/src/tests/issue/issue_test.cpp
new file mode 100644
index 00000000000..01b151da482
--- /dev/null
+++ b/vespalib/src/tests/issue/issue_test.cpp
@@ -0,0 +1,68 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include <vespa/vespalib/util/issue.h>
+#include <vespa/vespalib/gtest/gtest.h>
+
+using namespace vespalib;
+
+struct MyHandler : Issue::Handler {
+ std::vector<vespalib::string> list;
+ void handle(const Issue &issue) override {
+ list.push_back(issue.message());
+ }
+};
+
+std::vector<vespalib::string> make_list(std::vector<vespalib::string> list) {
+ return list;
+}
+
+TEST(IssueTest, log_issue_not_captured) {
+ Issue::report(Issue("this should be logged"));
+}
+
+TEST(IssueTest, capture_an_issue) {
+ MyHandler my_handler;
+ {
+ Issue::report(Issue("this should be logged"));
+ Issue::Binding my_binding = Issue::listen(my_handler);
+ Issue::report(Issue("this should be captured"));
+ }
+ Issue::report(Issue("this should also be logged"));
+ EXPECT_EQ(my_handler.list, make_list({"this should be captured"}));
+}
+
+TEST(IssueTest, capture_issues_with_nested_bindings) {
+ MyHandler my_handler1;
+ MyHandler my_handler2;
+ {
+ Issue::report(Issue("this should be logged"));
+ auto my_binding1 = Issue::listen(my_handler1);
+ Issue::report(Issue("issue1"));
+ {
+ auto my_binding2 = Issue::listen(my_handler2);
+ Issue::report(Issue("issue2"));
+ }
+ Issue::report(Issue("issue3"));
+ }
+ Issue::report(Issue("this should also be logged"));
+ EXPECT_EQ(my_handler1.list, make_list({"issue1", "issue3"}));
+ EXPECT_EQ(my_handler2.list, make_list({"issue2"}));
+}
+
+TEST(IssueTest, handler_can_be_bound_multiple_times) {
+ MyHandler my_handler;
+ {
+ Issue::report(Issue("this should be logged"));
+ auto my_binding1 = Issue::listen(my_handler);
+ Issue::report(Issue("issue1"));
+ {
+ auto my_binding2 = Issue::listen(my_handler);
+ Issue::report(Issue("issue2"));
+ }
+ Issue::report(Issue("issue3"));
+ }
+ Issue::report(Issue("this should also be logged"));
+ EXPECT_EQ(my_handler.list, make_list({"issue1", "issue2", "issue3"}));
+}
+
+GTEST_MAIN_RUN_ALL_TESTS()
diff --git a/vespalib/src/tests/latch/CMakeLists.txt b/vespalib/src/tests/latch/CMakeLists.txt
index 57a67d74868..a25c65bd8bb 100644
--- a/vespalib/src/tests/latch/CMakeLists.txt
+++ b/vespalib/src/tests/latch/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_latch_test_app TEST
SOURCES
latch_test.cpp
diff --git a/vespalib/src/tests/latch/latch_test.cpp b/vespalib/src/tests/latch/latch_test.cpp
index a0daf7ef7d5..4f5092a6f26 100644
--- a/vespalib/src/tests/latch/latch_test.cpp
+++ b/vespalib/src/tests/latch/latch_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/testkit/time_bomb.h>
diff --git a/vespalib/src/tests/left_right_heap/CMakeLists.txt b/vespalib/src/tests/left_right_heap/CMakeLists.txt
index d2eac4f1802..52ab8920e4e 100644
--- a/vespalib/src/tests/left_right_heap/CMakeLists.txt
+++ b/vespalib/src/tests/left_right_heap/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_left_right_heap_test_app TEST
SOURCES
left_right_heap_test.cpp
diff --git a/vespalib/src/tests/left_right_heap/left_right_heap_bench.cpp b/vespalib/src/tests/left_right_heap/left_right_heap_bench.cpp
index 6c643696615..b8e0b36ae01 100644
--- a/vespalib/src/tests/left_right_heap/left_right_heap_bench.cpp
+++ b/vespalib/src/tests/left_right_heap/left_right_heap_bench.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/left_right_heap.h>
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/vespalib/src/tests/left_right_heap/left_right_heap_test.cpp b/vespalib/src/tests/left_right_heap/left_right_heap_test.cpp
index 1503d0882ba..26997ce2147 100644
--- a/vespalib/src/tests/left_right_heap/left_right_heap_test.cpp
+++ b/vespalib/src/tests/left_right_heap/left_right_heap_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/left_right_heap.h>
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/vespalib/src/tests/make_fixture_macros/CMakeLists.txt b/vespalib/src/tests/make_fixture_macros/CMakeLists.txt
index 9244fa4435b..63d2fe11bef 100644
--- a/vespalib/src/tests/make_fixture_macros/CMakeLists.txt
+++ b/vespalib/src/tests/make_fixture_macros/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_make_fixture_macros_test_app TEST
SOURCES
make_fixture_macros_test.cpp
diff --git a/vespalib/src/tests/make_fixture_macros/make_fixture_macros_test.cpp b/vespalib/src/tests/make_fixture_macros/make_fixture_macros_test.cpp
index db7a51222b7..0264a5aad0e 100644
--- a/vespalib/src/tests/make_fixture_macros/make_fixture_macros_test.cpp
+++ b/vespalib/src/tests/make_fixture_macros/make_fixture_macros_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/child_process.h>
diff --git a/vespalib/src/tests/memory/CMakeLists.txt b/vespalib/src/tests/memory/CMakeLists.txt
index b98e07fd353..cceaca0102f 100644
--- a/vespalib/src/tests/memory/CMakeLists.txt
+++ b/vespalib/src/tests/memory/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_memory_test_app TEST
SOURCES
memory_test.cpp
diff --git a/vespalib/src/tests/memory/memory_test.cpp b/vespalib/src/tests/memory/memory_test.cpp
index a60776a2a76..d39fbd672ea 100644
--- a/vespalib/src/tests/memory/memory_test.cpp
+++ b/vespalib/src/tests/memory/memory_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/memory.h>
diff --git a/vespalib/src/tests/net/async_resolver/CMakeLists.txt b/vespalib/src/tests/net/async_resolver/CMakeLists.txt
index 8023bd3055a..416b199f3d7 100644
--- a/vespalib/src/tests/net/async_resolver/CMakeLists.txt
+++ b/vespalib/src/tests/net/async_resolver/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_async_resolver_test_app TEST
SOURCES
async_resolver_test.cpp
diff --git a/vespalib/src/tests/net/async_resolver/async_resolver_test.cpp b/vespalib/src/tests/net/async_resolver/async_resolver_test.cpp
index 8f3cad135ec..6e8e6e5f761 100644
--- a/vespalib/src/tests/net/async_resolver/async_resolver_test.cpp
+++ b/vespalib/src/tests/net/async_resolver/async_resolver_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/testkit/time_bomb.h>
diff --git a/vespalib/src/tests/net/crypto_socket/CMakeLists.txt b/vespalib/src/tests/net/crypto_socket/CMakeLists.txt
index 52e64abc128..66728254ea7 100644
--- a/vespalib/src/tests/net/crypto_socket/CMakeLists.txt
+++ b/vespalib/src/tests/net/crypto_socket/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_crypto_socket_test_app TEST
SOURCES
crypto_socket_test.cpp
diff --git a/vespalib/src/tests/net/crypto_socket/crypto_socket_test.cpp b/vespalib/src/tests/net/crypto_socket/crypto_socket_test.cpp
index ca1d5559bce..439afb49041 100644
--- a/vespalib/src/tests/net/crypto_socket/crypto_socket_test.cpp
+++ b/vespalib/src/tests/net/crypto_socket/crypto_socket_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/testkit/time_bomb.h>
diff --git a/vespalib/src/tests/net/selector/CMakeLists.txt b/vespalib/src/tests/net/selector/CMakeLists.txt
index 15b4acddc34..0dc35ef9af0 100644
--- a/vespalib/src/tests/net/selector/CMakeLists.txt
+++ b/vespalib/src/tests/net/selector/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_selector_test_app TEST
SOURCES
selector_test.cpp
diff --git a/vespalib/src/tests/net/selector/selector_test.cpp b/vespalib/src/tests/net/selector/selector_test.cpp
index d13821ce2d0..49ccbcdd88a 100644
--- a/vespalib/src/tests/net/selector/selector_test.cpp
+++ b/vespalib/src/tests/net/selector/selector_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/testkit/time_bomb.h>
#include <vespa/vespalib/net/socket_address.h>
diff --git a/vespalib/src/tests/net/send_fd/CMakeLists.txt b/vespalib/src/tests/net/send_fd/CMakeLists.txt
index 3875e208793..ffbdb77c5d0 100644
--- a/vespalib/src/tests/net/send_fd/CMakeLists.txt
+++ b/vespalib/src/tests/net/send_fd/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_send_fd_test_app TEST
SOURCES
send_fd_test.cpp
diff --git a/vespalib/src/tests/net/send_fd/send_fd_test.cpp b/vespalib/src/tests/net/send_fd/send_fd_test.cpp
index cc367996bd6..90cc3924cdc 100644
--- a/vespalib/src/tests/net/send_fd/send_fd_test.cpp
+++ b/vespalib/src/tests/net/send_fd/send_fd_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/testkit/time_bomb.h>
diff --git a/vespalib/src/tests/net/socket/CMakeLists.txt b/vespalib/src/tests/net/socket/CMakeLists.txt
index 4417cbfbc3b..9101317b1be 100644
--- a/vespalib/src/tests/net/socket/CMakeLists.txt
+++ b/vespalib/src/tests/net/socket/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_socket_test_app TEST
SOURCES
socket_test.cpp
diff --git a/vespalib/src/tests/net/socket/socket_client.cpp b/vespalib/src/tests/net/socket/socket_client.cpp
index 1db76d6564e..0932e69af11 100644
--- a/vespalib/src/tests/net/socket/socket_client.cpp
+++ b/vespalib/src/tests/net/socket/socket_client.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/net/socket_spec.h>
#include <vespa/vespalib/net/server_socket.h>
#include <vespa/vespalib/net/socket.h>
diff --git a/vespalib/src/tests/net/socket/socket_server.cpp b/vespalib/src/tests/net/socket/socket_server.cpp
index 10ae37ca1a9..b382d48378f 100644
--- a/vespalib/src/tests/net/socket/socket_server.cpp
+++ b/vespalib/src/tests/net/socket/socket_server.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/net/socket_spec.h>
#include <vespa/vespalib/net/server_socket.h>
#include <vespa/vespalib/net/socket.h>
diff --git a/vespalib/src/tests/net/socket/socket_test.cpp b/vespalib/src/tests/net/socket/socket_test.cpp
index e3b13b69884..ce95646adb2 100644
--- a/vespalib/src/tests/net/socket/socket_test.cpp
+++ b/vespalib/src/tests/net/socket/socket_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/testkit/time_bomb.h>
#include <vespa/vespalib/net/selector.h>
diff --git a/vespalib/src/tests/net/socket_spec/CMakeLists.txt b/vespalib/src/tests/net/socket_spec/CMakeLists.txt
index ba5832b7783..c804a815961 100644
--- a/vespalib/src/tests/net/socket_spec/CMakeLists.txt
+++ b/vespalib/src/tests/net/socket_spec/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_socket_spec_test_app TEST
SOURCES
socket_spec_test.cpp
diff --git a/vespalib/src/tests/net/socket_spec/socket_spec_test.cpp b/vespalib/src/tests/net/socket_spec/socket_spec_test.cpp
index f2da6b70bf3..508559893c2 100644
--- a/vespalib/src/tests/net/socket_spec/socket_spec_test.cpp
+++ b/vespalib/src/tests/net/socket_spec/socket_spec_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/net/socket_spec.h>
diff --git a/vespalib/src/tests/net/sync_crypto_socket/CMakeLists.txt b/vespalib/src/tests/net/sync_crypto_socket/CMakeLists.txt
index e66e62b68d0..20b2b692b6d 100644
--- a/vespalib/src/tests/net/sync_crypto_socket/CMakeLists.txt
+++ b/vespalib/src/tests/net/sync_crypto_socket/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_sync_crypto_socket_test_app TEST
SOURCES
sync_crypto_socket_test.cpp
diff --git a/vespalib/src/tests/net/sync_crypto_socket/sync_crypto_socket_test.cpp b/vespalib/src/tests/net/sync_crypto_socket/sync_crypto_socket_test.cpp
index 8a4961b786b..6f62df8d78f 100644
--- a/vespalib/src/tests/net/sync_crypto_socket/sync_crypto_socket_test.cpp
+++ b/vespalib/src/tests/net/sync_crypto_socket/sync_crypto_socket_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/testkit/time_bomb.h>
diff --git a/vespalib/src/tests/net/tls/auto_reloading_tls_crypto_engine/CMakeLists.txt b/vespalib/src/tests/net/tls/auto_reloading_tls_crypto_engine/CMakeLists.txt
index c3361ee1fa3..7a6bee1e944 100644
--- a/vespalib/src/tests/net/tls/auto_reloading_tls_crypto_engine/CMakeLists.txt
+++ b/vespalib/src/tests/net/tls/auto_reloading_tls_crypto_engine/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_net_tls_auto_reloading_tls_crypto_engine_test_app TEST
SOURCES
auto_reloading_tls_crypto_engine_test.cpp
diff --git a/vespalib/src/tests/net/tls/auto_reloading_tls_crypto_engine/auto_reloading_tls_crypto_engine_test.cpp b/vespalib/src/tests/net/tls/auto_reloading_tls_crypto_engine/auto_reloading_tls_crypto_engine_test.cpp
index 4631f19807e..6662b2a4e41 100644
--- a/vespalib/src/tests/net/tls/auto_reloading_tls_crypto_engine/auto_reloading_tls_crypto_engine_test.cpp
+++ b/vespalib/src/tests/net/tls/auto_reloading_tls_crypto_engine/auto_reloading_tls_crypto_engine_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/io/fileutil.h>
#include <vespa/vespalib/net/tls/auto_reloading_tls_crypto_engine.h>
diff --git a/vespalib/src/tests/net/tls/direct_buffer_bio/CMakeLists.txt b/vespalib/src/tests/net/tls/direct_buffer_bio/CMakeLists.txt
index cbce4d3651f..1e459f552c0 100644
--- a/vespalib/src/tests/net/tls/direct_buffer_bio/CMakeLists.txt
+++ b/vespalib/src/tests/net/tls/direct_buffer_bio/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_net_tls_direct_buffer_bio_test_app TEST
SOURCES
direct_buffer_bio_test.cpp
diff --git a/vespalib/src/tests/net/tls/direct_buffer_bio/direct_buffer_bio_test.cpp b/vespalib/src/tests/net/tls/direct_buffer_bio/direct_buffer_bio_test.cpp
index a51cfb688c1..c3c73b772ec 100644
--- a/vespalib/src/tests/net/tls/direct_buffer_bio/direct_buffer_bio_test.cpp
+++ b/vespalib/src/tests/net/tls/direct_buffer_bio/direct_buffer_bio_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/net/tls/impl/direct_buffer_bio.h>
#include <vespa/vespalib/stllike/string.h>
#include <vespa/vespalib/testkit/test_kit.h>
diff --git a/vespalib/src/tests/net/tls/openssl_impl/CMakeLists.txt b/vespalib/src/tests/net/tls/openssl_impl/CMakeLists.txt
index 799e2291d7c..5f2911032e2 100644
--- a/vespalib/src/tests/net/tls/openssl_impl/CMakeLists.txt
+++ b/vespalib/src/tests/net/tls/openssl_impl/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_net_tls_openssl_impl_test_app TEST
SOURCES
openssl_impl_test.cpp
diff --git a/vespalib/src/tests/net/tls/openssl_impl/openssl_impl_test.cpp b/vespalib/src/tests/net/tls/openssl_impl/openssl_impl_test.cpp
index 92099e9a602..45e9c92343e 100644
--- a/vespalib/src/tests/net/tls/openssl_impl/openssl_impl_test.cpp
+++ b/vespalib/src/tests/net/tls/openssl_impl/openssl_impl_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/crypto/private_key.h>
#include <vespa/vespalib/crypto/x509_certificate.h>
#include <vespa/vespalib/testkit/test_kit.h>
diff --git a/vespalib/src/tests/net/tls/policy_checking_certificate_verifier/CMakeLists.txt b/vespalib/src/tests/net/tls/policy_checking_certificate_verifier/CMakeLists.txt
index 5e11a93ac09..a9bd063f702 100644
--- a/vespalib/src/tests/net/tls/policy_checking_certificate_verifier/CMakeLists.txt
+++ b/vespalib/src/tests/net/tls/policy_checking_certificate_verifier/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_net_tls_policy_checking_certificate_verifier_test_app TEST
SOURCES
policy_checking_certificate_verifier_test.cpp
diff --git a/vespalib/src/tests/net/tls/policy_checking_certificate_verifier/policy_checking_certificate_verifier_test.cpp b/vespalib/src/tests/net/tls/policy_checking_certificate_verifier/policy_checking_certificate_verifier_test.cpp
index 9a7e1b1b585..e129ef2a389 100644
--- a/vespalib/src/tests/net/tls/policy_checking_certificate_verifier/policy_checking_certificate_verifier_test.cpp
+++ b/vespalib/src/tests/net/tls/policy_checking_certificate_verifier/policy_checking_certificate_verifier_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/net/tls/transport_security_options.h>
#include <vespa/vespalib/net/tls/policy_checking_certificate_verifier.h>
#include <vespa/vespalib/test/peer_policy_utils.h>
diff --git a/vespalib/src/tests/net/tls/protocol_snooping/CMakeLists.txt b/vespalib/src/tests/net/tls/protocol_snooping/CMakeLists.txt
index 1489859fe48..c7dd9ec8e82 100644
--- a/vespalib/src/tests/net/tls/protocol_snooping/CMakeLists.txt
+++ b/vespalib/src/tests/net/tls/protocol_snooping/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_net_tls_protocol_snooping_test_app TEST
SOURCES
protocol_snooping_test.cpp
diff --git a/vespalib/src/tests/net/tls/protocol_snooping/protocol_snooping_test.cpp b/vespalib/src/tests/net/tls/protocol_snooping/protocol_snooping_test.cpp
index 2d203047835..fa7d9bfea47 100644
--- a/vespalib/src/tests/net/tls/protocol_snooping/protocol_snooping_test.cpp
+++ b/vespalib/src/tests/net/tls/protocol_snooping/protocol_snooping_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/net/tls/protocol_snooping.h>
diff --git a/vespalib/src/tests/net/tls/transport_options/CMakeLists.txt b/vespalib/src/tests/net/tls/transport_options/CMakeLists.txt
index ee1e2477708..379fbc16ba8 100644
--- a/vespalib/src/tests/net/tls/transport_options/CMakeLists.txt
+++ b/vespalib/src/tests/net/tls/transport_options/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_net_tls_transport_options_test_app TEST
SOURCES
transport_options_reading_test.cpp
diff --git a/vespalib/src/tests/net/tls/transport_options/transport_options_reading_test.cpp b/vespalib/src/tests/net/tls/transport_options/transport_options_reading_test.cpp
index a2bced3f7b4..be2c63b03f2 100644
--- a/vespalib/src/tests/net/tls/transport_options/transport_options_reading_test.cpp
+++ b/vespalib/src/tests/net/tls/transport_options/transport_options_reading_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/io/fileutil.h>
#include <vespa/vespalib/net/tls/transport_security_options.h>
#include <vespa/vespalib/net/tls/transport_security_options_reading.h>
diff --git a/vespalib/src/tests/objects/nbostream/CMakeLists.txt b/vespalib/src/tests/objects/nbostream/CMakeLists.txt
index fa8abdb3b96..0edd408d77b 100644
--- a/vespalib/src/tests/objects/nbostream/CMakeLists.txt
+++ b/vespalib/src/tests/objects/nbostream/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_nbostream_test_app TEST
SOURCES
nbostream_test.cpp
diff --git a/vespalib/src/tests/objects/nbostream/nbostream_test.cpp b/vespalib/src/tests/objects/nbostream/nbostream_test.cpp
index 3db57808bde..5d7f5c0504b 100644
--- a/vespalib/src/tests/objects/nbostream/nbostream_test.cpp
+++ b/vespalib/src/tests/objects/nbostream/nbostream_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/objects/nbostream.h>
diff --git a/vespalib/src/tests/optimized/CMakeLists.txt b/vespalib/src/tests/optimized/CMakeLists.txt
index 03074df064a..88babca0ce7 100644
--- a/vespalib/src/tests/optimized/CMakeLists.txt
+++ b/vespalib/src/tests/optimized/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_optimized_test_app TEST
SOURCES
optimized_test.cpp
diff --git a/vespalib/src/tests/optimized/optimized_test.cpp b/vespalib/src/tests/optimized/optimized_test.cpp
index 2146cb9353f..2fcb8c5b393 100644
--- a/vespalib/src/tests/optimized/optimized_test.cpp
+++ b/vespalib/src/tests/optimized/optimized_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/optimized.h>
diff --git a/vespalib/src/tests/portal/CMakeLists.txt b/vespalib/src/tests/portal/CMakeLists.txt
index 3c39f286a15..a61009f6cc8 100644
--- a/vespalib/src/tests/portal/CMakeLists.txt
+++ b/vespalib/src/tests/portal/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_portal_test_app TEST
SOURCES
portal_test.cpp
diff --git a/vespalib/src/tests/portal/handle_manager/CMakeLists.txt b/vespalib/src/tests/portal/handle_manager/CMakeLists.txt
index b12b72f9ad6..2a35edc5374 100644
--- a/vespalib/src/tests/portal/handle_manager/CMakeLists.txt
+++ b/vespalib/src/tests/portal/handle_manager/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_handle_manager_test_app TEST
SOURCES
handle_manager_test.cpp
diff --git a/vespalib/src/tests/portal/handle_manager/handle_manager_test.cpp b/vespalib/src/tests/portal/handle_manager/handle_manager_test.cpp
index 844622577e2..d5fc9c86b2c 100644
--- a/vespalib/src/tests/portal/handle_manager/handle_manager_test.cpp
+++ b/vespalib/src/tests/portal/handle_manager/handle_manager_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/testkit/time_bomb.h>
diff --git a/vespalib/src/tests/portal/http_request/CMakeLists.txt b/vespalib/src/tests/portal/http_request/CMakeLists.txt
index 00dbf356634..a371138c63d 100644
--- a/vespalib/src/tests/portal/http_request/CMakeLists.txt
+++ b/vespalib/src/tests/portal/http_request/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_portal_http_request_test_app TEST
SOURCES
http_request_test.cpp
diff --git a/vespalib/src/tests/portal/http_request/http_request_test.cpp b/vespalib/src/tests/portal/http_request/http_request_test.cpp
index 047fde5750c..7435fdf795e 100644
--- a/vespalib/src/tests/portal/http_request/http_request_test.cpp
+++ b/vespalib/src/tests/portal/http_request/http_request_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/portal/http_request.h>
diff --git a/vespalib/src/tests/portal/portal_test.cpp b/vespalib/src/tests/portal/portal_test.cpp
index d708f81bdde..2e68e7033db 100644
--- a/vespalib/src/tests/portal/portal_test.cpp
+++ b/vespalib/src/tests/portal/portal_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/testkit/time_bomb.h>
diff --git a/vespalib/src/tests/portal/reactor/CMakeLists.txt b/vespalib/src/tests/portal/reactor/CMakeLists.txt
index 2ed829fcfc0..60a1d81ca41 100644
--- a/vespalib/src/tests/portal/reactor/CMakeLists.txt
+++ b/vespalib/src/tests/portal/reactor/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_reactor_test_app TEST
SOURCES
reactor_test.cpp
diff --git a/vespalib/src/tests/portal/reactor/reactor_test.cpp b/vespalib/src/tests/portal/reactor/reactor_test.cpp
index b14bb1dbd3f..82d4d8d3794 100644
--- a/vespalib/src/tests/portal/reactor/reactor_test.cpp
+++ b/vespalib/src/tests/portal/reactor/reactor_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/testkit/time_bomb.h>
diff --git a/vespalib/src/tests/printable/CMakeLists.txt b/vespalib/src/tests/printable/CMakeLists.txt
index 76adaa208fd..5cf6b46b669 100644
--- a/vespalib/src/tests/printable/CMakeLists.txt
+++ b/vespalib/src/tests/printable/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_printabletest_app TEST
SOURCES
printabletest.cpp
diff --git a/vespalib/src/tests/printable/printabletest.cpp b/vespalib/src/tests/printable/printabletest.cpp
index 8a91445460c..55b4359b0cf 100644
--- a/vespalib/src/tests/printable/printabletest.cpp
+++ b/vespalib/src/tests/printable/printabletest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/printable.h>
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/vespalib/src/tests/priority_queue/CMakeLists.txt b/vespalib/src/tests/priority_queue/CMakeLists.txt
index eb8e52a2c82..7e64747392c 100644
--- a/vespalib/src/tests/priority_queue/CMakeLists.txt
+++ b/vespalib/src/tests/priority_queue/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_priority_queue_test_app TEST
SOURCES
priority_queue_test.cpp
diff --git a/vespalib/src/tests/priority_queue/priority_queue_test.cpp b/vespalib/src/tests/priority_queue/priority_queue_test.cpp
index af8dd853c6c..444ab55947c 100644
--- a/vespalib/src/tests/priority_queue/priority_queue_test.cpp
+++ b/vespalib/src/tests/priority_queue/priority_queue_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("priority_queue_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/vespalib/src/tests/random/CMakeLists.txt b/vespalib/src/tests/random/CMakeLists.txt
index 80b01fe5745..9ceff8cb4ef 100644
--- a/vespalib/src/tests/random/CMakeLists.txt
+++ b/vespalib/src/tests/random/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_random_test_app TEST
SOURCES
random_test.cpp
diff --git a/vespalib/src/tests/random/Tr.java b/vespalib/src/tests/random/Tr.java
index d9403036747..7b2a26dff55 100644
--- a/vespalib/src/tests/random/Tr.java
+++ b/vespalib/src/tests/random/Tr.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
import java.util.*;
class Tr
diff --git a/vespalib/src/tests/random/friendfinder.cpp b/vespalib/src/tests/random/friendfinder.cpp
index b7a1ed4712b..9ac75012191 100644
--- a/vespalib/src/tests/random/friendfinder.cpp
+++ b/vespalib/src/tests/random/friendfinder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/random.h>
#include <vespa/vespalib/stllike/string.h>
#include <vespa/vespalib/locale/c.h>
diff --git a/vespalib/src/tests/random/random_test.cpp b/vespalib/src/tests/random/random_test.cpp
index 7076cf530ab..2946e411efa 100644
--- a/vespalib/src/tests/random/random_test.cpp
+++ b/vespalib/src/tests/random/random_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/random.h>
diff --git a/vespalib/src/tests/referencecounter/CMakeLists.txt b/vespalib/src/tests/referencecounter/CMakeLists.txt
index e3ed7988843..ee909b48281 100644
--- a/vespalib/src/tests/referencecounter/CMakeLists.txt
+++ b/vespalib/src/tests/referencecounter/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_referencecounter_test_app TEST
SOURCES
referencecounter_test.cpp
diff --git a/vespalib/src/tests/referencecounter/referencecounter_test.cpp b/vespalib/src/tests/referencecounter/referencecounter_test.cpp
index 4d7f0edc7e7..99dd455bcc8 100644
--- a/vespalib/src/tests/referencecounter/referencecounter_test.cpp
+++ b/vespalib/src/tests/referencecounter/referencecounter_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("referencecounter_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/vespalib/src/tests/regex/CMakeLists.txt b/vespalib/src/tests/regex/CMakeLists.txt
index 6b48e2ab5bf..55e888c2f6d 100644
--- a/vespalib/src/tests/regex/CMakeLists.txt
+++ b/vespalib/src/tests/regex/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_regex_test_app TEST
SOURCES
regex.cpp
diff --git a/vespalib/src/tests/regex/regex.cpp b/vespalib/src/tests/regex/regex.cpp
index 0ca877ab006..471ba84a68f 100644
--- a/vespalib/src/tests/regex/regex.cpp
+++ b/vespalib/src/tests/regex/regex.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/regex/regex.h>
#include <vespa/vespalib/util/regexp.h>
diff --git a/vespalib/src/tests/rendezvous/CMakeLists.txt b/vespalib/src/tests/rendezvous/CMakeLists.txt
index 0d21ba327de..57cacbf4add 100644
--- a/vespalib/src/tests/rendezvous/CMakeLists.txt
+++ b/vespalib/src/tests/rendezvous/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_rendezvous_test_app TEST
SOURCES
rendezvous_test.cpp
diff --git a/vespalib/src/tests/rendezvous/rendezvous_test.cpp b/vespalib/src/tests/rendezvous/rendezvous_test.cpp
index 6a3e87563ed..616824af7f1 100644
--- a/vespalib/src/tests/rendezvous/rendezvous_test.cpp
+++ b/vespalib/src/tests/rendezvous/rendezvous_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/rendezvous.h>
#include <vespa/vespalib/util/time.h>
diff --git a/vespalib/src/tests/require/CMakeLists.txt b/vespalib/src/tests/require/CMakeLists.txt
index 8853d4fac26..e5d4ef0749f 100644
--- a/vespalib/src/tests/require/CMakeLists.txt
+++ b/vespalib/src/tests/require/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_require_test_app TEST
SOURCES
require_test.cpp
diff --git a/vespalib/src/tests/require/require_test.cpp b/vespalib/src/tests/require/require_test.cpp
index b31cbd33723..8b542e41905 100644
--- a/vespalib/src/tests/require/require_test.cpp
+++ b/vespalib/src/tests/require/require_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/require.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/vespalib/src/tests/runnable_pair/CMakeLists.txt b/vespalib/src/tests/runnable_pair/CMakeLists.txt
index 88361c66ba2..8d5c2c9d182 100644
--- a/vespalib/src/tests/runnable_pair/CMakeLists.txt
+++ b/vespalib/src/tests/runnable_pair/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_runnable_pair_test_app TEST
SOURCES
runnable_pair_test.cpp
diff --git a/vespalib/src/tests/runnable_pair/runnable_pair_test.cpp b/vespalib/src/tests/runnable_pair/runnable_pair_test.cpp
index 9cd93a851a0..9f71ad3b2e8 100644
--- a/vespalib/src/tests/runnable_pair/runnable_pair_test.cpp
+++ b/vespalib/src/tests/runnable_pair/runnable_pair_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/runnable_pair.h>
diff --git a/vespalib/src/tests/sha1/CMakeLists.txt b/vespalib/src/tests/sha1/CMakeLists.txt
index ea49ea744da..84bd7bc1fcd 100644
--- a/vespalib/src/tests/sha1/CMakeLists.txt
+++ b/vespalib/src/tests/sha1/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_sha1_test_app TEST
SOURCES
sha1_test.cpp
diff --git a/vespalib/src/tests/sha1/rfc_sha1.cpp b/vespalib/src/tests/sha1/rfc_sha1.cpp
index eed58c67db7..decff309e78 100644
--- a/vespalib/src/tests/sha1/rfc_sha1.cpp
+++ b/vespalib/src/tests/sha1/rfc_sha1.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/* Copied from RFC 3174, Licensed under the Internet Society RFC License */
/*
diff --git a/vespalib/src/tests/sha1/rfc_sha1.h b/vespalib/src/tests/sha1/rfc_sha1.h
index 45ab74551fe..a43477b10da 100644
--- a/vespalib/src/tests/sha1/rfc_sha1.h
+++ b/vespalib/src/tests/sha1/rfc_sha1.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/* Copied from RFC 3174, Licensed under the Internet Society RFC License */
/*
diff --git a/vespalib/src/tests/sha1/sha1_test.cpp b/vespalib/src/tests/sha1/sha1_test.cpp
index 28136a5e847..5b4974b3712 100644
--- a/vespalib/src/tests/sha1/sha1_test.cpp
+++ b/vespalib/src/tests/sha1/sha1_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include "rfc_sha1.h"
diff --git a/vespalib/src/tests/shared_string_repo/CMakeLists.txt b/vespalib/src/tests/shared_string_repo/CMakeLists.txt
index 3911deb9e91..9b788d9cbb7 100644
--- a/vespalib/src/tests/shared_string_repo/CMakeLists.txt
+++ b/vespalib/src/tests/shared_string_repo/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_shared_string_repo_test_app TEST
SOURCES
shared_string_repo_test.cpp
diff --git a/vespalib/src/tests/shared_string_repo/shared_string_repo_test.cpp b/vespalib/src/tests/shared_string_repo/shared_string_repo_test.cpp
index 3f36bbf6401..81c8271f755 100644
--- a/vespalib/src/tests/shared_string_repo/shared_string_repo_test.cpp
+++ b/vespalib/src/tests/shared_string_repo/shared_string_repo_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/shared_string_repo.h>
#include <vespa/vespalib/util/rendezvous.h>
diff --git a/vespalib/src/tests/sharedptr/CMakeLists.txt b/vespalib/src/tests/sharedptr/CMakeLists.txt
index 864e63cda8f..b25a4827979 100644
--- a/vespalib/src/tests/sharedptr/CMakeLists.txt
+++ b/vespalib/src/tests/sharedptr/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_ptrholder_test_app TEST
SOURCES
ptrholder.cpp
diff --git a/vespalib/src/tests/sharedptr/ptrholder.cpp b/vespalib/src/tests/sharedptr/ptrholder.cpp
index 020c58f6157..c1436efa6b4 100644
--- a/vespalib/src/tests/sharedptr/ptrholder.cpp
+++ b/vespalib/src/tests/sharedptr/ptrholder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/ptrholder.h>
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/vespalib/src/tests/signalhandler/CMakeLists.txt b/vespalib/src/tests/signalhandler/CMakeLists.txt
index 78f792115f8..aa7a92d65b4 100644
--- a/vespalib/src/tests/signalhandler/CMakeLists.txt
+++ b/vespalib/src/tests/signalhandler/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_signalhandler_test_app TEST
SOURCES
signalhandler_test.cpp
diff --git a/vespalib/src/tests/signalhandler/signalhandler_test.cpp b/vespalib/src/tests/signalhandler/signalhandler_test.cpp
index b11cc5746d9..ba70fafddb3 100644
--- a/vespalib/src/tests/signalhandler/signalhandler_test.cpp
+++ b/vespalib/src/tests/signalhandler/signalhandler_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/signalhandler.h>
diff --git a/vespalib/src/tests/signalhandler/victim.cpp b/vespalib/src/tests/signalhandler/victim.cpp
index fd03019cf82..e28739a393d 100644
--- a/vespalib/src/tests/signalhandler/victim.cpp
+++ b/vespalib/src/tests/signalhandler/victim.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/signalhandler.h>
#include <cstdio>
diff --git a/vespalib/src/tests/simple_thread_bundle/CMakeLists.txt b/vespalib/src/tests/simple_thread_bundle/CMakeLists.txt
index cbfaecbc7b8..5376f62fb65 100644
--- a/vespalib/src/tests/simple_thread_bundle/CMakeLists.txt
+++ b/vespalib/src/tests/simple_thread_bundle/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_simple_thread_bundle_test_app TEST
SOURCES
simple_thread_bundle_test.cpp
diff --git a/vespalib/src/tests/simple_thread_bundle/simple_thread_bundle_test.cpp b/vespalib/src/tests/simple_thread_bundle/simple_thread_bundle_test.cpp
index 178a6c49fca..b808635a8cc 100644
--- a/vespalib/src/tests/simple_thread_bundle/simple_thread_bundle_test.cpp
+++ b/vespalib/src/tests/simple_thread_bundle/simple_thread_bundle_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/simple_thread_bundle.h>
#include <vespa/vespalib/util/exceptions.h>
diff --git a/vespalib/src/tests/simple_thread_bundle/threading_speed_test.cpp b/vespalib/src/tests/simple_thread_bundle/threading_speed_test.cpp
index 7e8bcdcc5f4..13b0d003909 100644
--- a/vespalib/src/tests/simple_thread_bundle/threading_speed_test.cpp
+++ b/vespalib/src/tests/simple_thread_bundle/threading_speed_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/simple_thread_bundle.h>
#include <vespa/vespalib/util/size_literals.h>
diff --git a/vespalib/src/tests/slime/CMakeLists.txt b/vespalib/src/tests/slime/CMakeLists.txt
index 086d8a15af7..8bdfd4b72bd 100644
--- a/vespalib/src/tests/slime/CMakeLists.txt
+++ b/vespalib/src/tests/slime/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_slime_test_app TEST
SOURCES
slime_test.cpp
diff --git a/vespalib/src/tests/slime/external_data_value/CMakeLists.txt b/vespalib/src/tests/slime/external_data_value/CMakeLists.txt
index df4cb8a23c3..8f8356b4c53 100644
--- a/vespalib/src/tests/slime/external_data_value/CMakeLists.txt
+++ b/vespalib/src/tests/slime/external_data_value/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_external_data_value_test_app TEST
SOURCES
external_data_value_test.cpp
diff --git a/vespalib/src/tests/slime/external_data_value/external_data_value_test.cpp b/vespalib/src/tests/slime/external_data_value/external_data_value_test.cpp
index acf937c840d..da2e8908b2e 100644
--- a/vespalib/src/tests/slime/external_data_value/external_data_value_test.cpp
+++ b/vespalib/src/tests/slime/external_data_value/external_data_value_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/data/slime/slime.h>
diff --git a/vespalib/src/tests/slime/json_slime_benchmark.cpp b/vespalib/src/tests/slime/json_slime_benchmark.cpp
index 36987843492..22c5bcf786b 100644
--- a/vespalib/src/tests/slime/json_slime_benchmark.cpp
+++ b/vespalib/src/tests/slime/json_slime_benchmark.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/data/slime/slime.h>
#include <vespa/vespalib/data/simple_buffer.h>
#include <vespa/vespalib/testkit/test_kit.h>
diff --git a/vespalib/src/tests/slime/slime_binary_format_test.cpp b/vespalib/src/tests/slime/slime_binary_format_test.cpp
index 37ce6d5dfdf..459826d691e 100644
--- a/vespalib/src/tests/slime/slime_binary_format_test.cpp
+++ b/vespalib/src/tests/slime/slime_binary_format_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/data/slime/slime.h>
#include <vespa/vespalib/data/simple_buffer.h>
diff --git a/vespalib/src/tests/slime/slime_inject_test.cpp b/vespalib/src/tests/slime/slime_inject_test.cpp
index fe7d1eb2118..76544ae7d8b 100644
--- a/vespalib/src/tests/slime/slime_inject_test.cpp
+++ b/vespalib/src/tests/slime/slime_inject_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/data/slime/slime.h>
#include <vespa/vespalib/data/slime/strfmt.h>
diff --git a/vespalib/src/tests/slime/slime_json_format_test.cpp b/vespalib/src/tests/slime/slime_json_format_test.cpp
index df2f8b2e30b..9e1040b36ad 100644
--- a/vespalib/src/tests/slime/slime_json_format_test.cpp
+++ b/vespalib/src/tests/slime/slime_json_format_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/data/slime/slime.h>
#include <vespa/vespalib/data/input.h>
diff --git a/vespalib/src/tests/slime/slime_test.cpp b/vespalib/src/tests/slime/slime_test.cpp
index 6e7b3689004..cd80fa9b984 100644
--- a/vespalib/src/tests/slime/slime_test.cpp
+++ b/vespalib/src/tests/slime/slime_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/data/slime/slime.h>
diff --git a/vespalib/src/tests/slime/summary-feature-benchmark/CMakeLists.txt b/vespalib/src/tests/slime/summary-feature-benchmark/CMakeLists.txt
index 28823cb5539..5c90410b80e 100644
--- a/vespalib/src/tests/slime/summary-feature-benchmark/CMakeLists.txt
+++ b/vespalib/src/tests/slime/summary-feature-benchmark/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_summary-feature-benchmark_app
SOURCES
summary-feature-benchmark.cpp
diff --git a/vespalib/src/tests/slime/summary-feature-benchmark/summary-feature-benchmark.cpp b/vespalib/src/tests/slime/summary-feature-benchmark/summary-feature-benchmark.cpp
index a7f6aa06e26..5396e2854ab 100644
--- a/vespalib/src/tests/slime/summary-feature-benchmark/summary-feature-benchmark.cpp
+++ b/vespalib/src/tests/slime/summary-feature-benchmark/summary-feature-benchmark.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/size_literals.h>
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/vespalib/src/tests/slime/type_traits.cpp b/vespalib/src/tests/slime/type_traits.cpp
index 8eba8e46c86..1f5dd350c28 100644
--- a/vespalib/src/tests/slime/type_traits.cpp
+++ b/vespalib/src/tests/slime/type_traits.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "type_traits.h"
diff --git a/vespalib/src/tests/slime/type_traits.h b/vespalib/src/tests/slime/type_traits.h
index 5e0679da52b..c5729478efb 100644
--- a/vespalib/src/tests/slime/type_traits.h
+++ b/vespalib/src/tests/slime/type_traits.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/tests/small_vector/CMakeLists.txt b/vespalib/src/tests/small_vector/CMakeLists.txt
index 22bd739ccc8..7b82aa42082 100644
--- a/vespalib/src/tests/small_vector/CMakeLists.txt
+++ b/vespalib/src/tests/small_vector/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_small_vector_test_app TEST
SOURCES
small_vector_test.cpp
diff --git a/vespalib/src/tests/small_vector/small_vector_test.cpp b/vespalib/src/tests/small_vector/small_vector_test.cpp
index 6d8238fefb4..2118a3c492f 100644
--- a/vespalib/src/tests/small_vector/small_vector_test.cpp
+++ b/vespalib/src/tests/small_vector/small_vector_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/small_vector.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/vespalib/src/tests/spin_lock/CMakeLists.txt b/vespalib/src/tests/spin_lock/CMakeLists.txt
index e36a4952d03..399efa4a764 100644
--- a/vespalib/src/tests/spin_lock/CMakeLists.txt
+++ b/vespalib/src/tests/spin_lock/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_spin_lock_test_app TEST
SOURCES
spin_lock_test.cpp
diff --git a/vespalib/src/tests/spin_lock/spin_lock_test.cpp b/vespalib/src/tests/spin_lock/spin_lock_test.cpp
index 3542bd5d51f..54ad354f584 100644
--- a/vespalib/src/tests/spin_lock/spin_lock_test.cpp
+++ b/vespalib/src/tests/spin_lock/spin_lock_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/spin_lock.h>
#include <vespa/vespalib/util/benchmark_timer.h>
diff --git a/vespalib/src/tests/stash/CMakeLists.txt b/vespalib/src/tests/stash/CMakeLists.txt
index 4b6e7729e6b..272ad711122 100644
--- a/vespalib/src/tests/stash/CMakeLists.txt
+++ b/vespalib/src/tests/stash/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_stash_test_app TEST
SOURCES
stash.cpp
diff --git a/vespalib/src/tests/stash/stash.cpp b/vespalib/src/tests/stash/stash.cpp
index 5c5aff54227..f59cd4c4838 100644
--- a/vespalib/src/tests/stash/stash.cpp
+++ b/vespalib/src/tests/stash/stash.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/size_literals.h>
#include <vespa/vespalib/util/stash.h>
diff --git a/vespalib/src/tests/stllike/CMakeLists.txt b/vespalib/src/tests/stllike/CMakeLists.txt
index 08c2e280c60..80509c565c6 100644
--- a/vespalib/src/tests/stllike/CMakeLists.txt
+++ b/vespalib/src/tests/stllike/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_hash_test_app TEST
SOURCES
hash_test.cpp
diff --git a/vespalib/src/tests/stllike/asciistream_test.cpp b/vespalib/src/tests/stllike/asciistream_test.cpp
index c9435edea45..be0bc1cb694 100644
--- a/vespalib/src/tests/stllike/asciistream_test.cpp
+++ b/vespalib/src/tests/stllike/asciistream_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/vespalib/src/tests/stllike/hash_test.cpp b/vespalib/src/tests/stllike/hash_test.cpp
index 5643fac52bf..5cba6f73e10 100644
--- a/vespalib/src/tests/stllike/hash_test.cpp
+++ b/vespalib/src/tests/stllike/hash_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/stllike/hash_set.hpp>
diff --git a/vespalib/src/tests/stllike/hashtable_test.cpp b/vespalib/src/tests/stllike/hashtable_test.cpp
index ac364fdf0df..74490e413d1 100644
--- a/vespalib/src/tests/stllike/hashtable_test.cpp
+++ b/vespalib/src/tests/stllike/hashtable_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for hashtable.
#include <vespa/vespalib/stllike/hashtable.hpp>
diff --git a/vespalib/src/tests/stllike/lookup_benchmark.cpp b/vespalib/src/tests/stllike/lookup_benchmark.cpp
index b3ce8c29a18..5d6c4eca7ba 100644
--- a/vespalib/src/tests/stllike/lookup_benchmark.cpp
+++ b/vespalib/src/tests/stllike/lookup_benchmark.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <cstddef>
#include <cstdlib>
#include <cstdio>
diff --git a/vespalib/src/tests/stllike/replace_variable_test.cpp b/vespalib/src/tests/stllike/replace_variable_test.cpp
index 46aa768013a..11f8398509c 100644
--- a/vespalib/src/tests/stllike/replace_variable_test.cpp
+++ b/vespalib/src/tests/stllike/replace_variable_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/stllike/replace_variable.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/vespalib/src/tests/stllike/string_test.cpp b/vespalib/src/tests/stllike/string_test.cpp
index fcce1386ebc..95846e765f6 100644
--- a/vespalib/src/tests/stllike/string_test.cpp
+++ b/vespalib/src/tests/stllike/string_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/stllike/string.h>
diff --git a/vespalib/src/tests/stllike/uniq_by_sort_map_hash.cpp b/vespalib/src/tests/stllike/uniq_by_sort_map_hash.cpp
index faee7680426..86c3dc1411c 100644
--- a/vespalib/src/tests/stllike/uniq_by_sort_map_hash.cpp
+++ b/vespalib/src/tests/stllike/uniq_by_sort_map_hash.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <stddef.h>
#include <stdlib.h>
#include <stdio.h>
diff --git a/vespalib/src/tests/stllike/vector_map_test.cpp b/vespalib/src/tests/stllike/vector_map_test.cpp
index 153e6861317..59766c7592e 100644
--- a/vespalib/src/tests/stllike/vector_map_test.cpp
+++ b/vespalib/src/tests/stllike/vector_map_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// Unit tests for hashtable.
#include <vespa/log/log.h>
diff --git a/vespalib/src/tests/stringfmt/CMakeLists.txt b/vespalib/src/tests/stringfmt/CMakeLists.txt
index 8b27816d05a..530e573b8c0 100644
--- a/vespalib/src/tests/stringfmt/CMakeLists.txt
+++ b/vespalib/src/tests/stringfmt/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_stringfmt_test_app TEST
SOURCES
fmt.cpp
diff --git a/vespalib/src/tests/stringfmt/fmt.cpp b/vespalib/src/tests/stringfmt/fmt.cpp
index e941c185e2f..68e0ec78c25 100644
--- a/vespalib/src/tests/stringfmt/fmt.cpp
+++ b/vespalib/src/tests/stringfmt/fmt.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/stringfmt.h>
#include <vespa/vespalib/testkit/test_kit.h>
diff --git a/vespalib/src/tests/sync/CMakeLists.txt b/vespalib/src/tests/sync/CMakeLists.txt
index c02312ba5c9..f0e5a2390ad 100644
--- a/vespalib/src/tests/sync/CMakeLists.txt
+++ b/vespalib/src/tests/sync/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_sync_test_app TEST
SOURCES
sync_test.cpp
diff --git a/vespalib/src/tests/sync/sync_test.cpp b/vespalib/src/tests/sync/sync_test.cpp
index e58135d8723..1a850174760 100644
--- a/vespalib/src/tests/sync/sync_test.cpp
+++ b/vespalib/src/tests/sync/sync_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/gate.h>
diff --git a/vespalib/src/tests/testapp-debug/CMakeLists.txt b/vespalib/src/tests/testapp-debug/CMakeLists.txt
index 6b1f9657cc4..8d60cd01ee1 100644
--- a/vespalib/src/tests/testapp-debug/CMakeLists.txt
+++ b/vespalib/src/tests/testapp-debug/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_testapp-debug_test_app TEST
SOURCES
testapp-debug.cpp
diff --git a/vespalib/src/tests/testapp-debug/debugtest.cpp b/vespalib/src/tests/testapp-debug/debugtest.cpp
index 901f186ba29..2ff7affc323 100644
--- a/vespalib/src/tests/testapp-debug/debugtest.cpp
+++ b/vespalib/src/tests/testapp-debug/debugtest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
using namespace vespalib;
diff --git a/vespalib/src/tests/testapp-debug/testapp-debug.cpp b/vespalib/src/tests/testapp-debug/testapp-debug.cpp
index 0083200ac51..18b41b1ca61 100644
--- a/vespalib/src/tests/testapp-debug/testapp-debug.cpp
+++ b/vespalib/src/tests/testapp-debug/testapp-debug.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
using namespace vespalib;
diff --git a/vespalib/src/tests/testapp-generic/CMakeLists.txt b/vespalib/src/tests/testapp-generic/CMakeLists.txt
index 6fc2f9c912e..0fd43b2eb59 100644
--- a/vespalib/src/tests/testapp-generic/CMakeLists.txt
+++ b/vespalib/src/tests/testapp-generic/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_testapp-generic_test_app TEST
SOURCES
testapp-generic.cpp
diff --git a/vespalib/src/tests/testapp-generic/testapp-generic.cpp b/vespalib/src/tests/testapp-generic/testapp-generic.cpp
index fcc266d1122..7c11c8277fc 100644
--- a/vespalib/src/tests/testapp-generic/testapp-generic.cpp
+++ b/vespalib/src/tests/testapp-generic/testapp-generic.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/stringfmt.h>
#include <stdexcept>
diff --git a/vespalib/src/tests/testapp-main/CMakeLists.txt b/vespalib/src/tests/testapp-main/CMakeLists.txt
index 9d669a746b3..0280c2bdf34 100644
--- a/vespalib/src/tests/testapp-main/CMakeLists.txt
+++ b/vespalib/src/tests/testapp-main/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_testapp-main_test_app TEST
SOURCES
testapp-main_test.cpp
diff --git a/vespalib/src/tests/testapp-main/testapp-main_test.cpp b/vespalib/src/tests/testapp-main/testapp-main_test.cpp
index db8714dbcd1..da2312e55b0 100644
--- a/vespalib/src/tests/testapp-main/testapp-main_test.cpp
+++ b/vespalib/src/tests/testapp-main/testapp-main_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
void subtest() {
diff --git a/vespalib/src/tests/testapp-state/CMakeLists.txt b/vespalib/src/tests/testapp-state/CMakeLists.txt
index 3ffdcccea5f..bbb64cc54dc 100644
--- a/vespalib/src/tests/testapp-state/CMakeLists.txt
+++ b/vespalib/src/tests/testapp-state/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_testapp-state_test_app TEST
SOURCES
testapp-state.cpp
diff --git a/vespalib/src/tests/testapp-state/statetest.cpp b/vespalib/src/tests/testapp-state/statetest.cpp
index eaa02aec079..c59dae8619d 100644
--- a/vespalib/src/tests/testapp-state/statetest.cpp
+++ b/vespalib/src/tests/testapp-state/statetest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
using namespace vespalib;
diff --git a/vespalib/src/tests/testapp-state/testapp-state.cpp b/vespalib/src/tests/testapp-state/testapp-state.cpp
index 683476a5525..2ade38917f1 100644
--- a/vespalib/src/tests/testapp-state/testapp-state.cpp
+++ b/vespalib/src/tests/testapp-state/testapp-state.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
using namespace vespalib;
diff --git a/vespalib/src/tests/testkit-mt/CMakeLists.txt b/vespalib/src/tests/testkit-mt/CMakeLists.txt
index b0e8ef636ae..0b59ce94b8f 100644
--- a/vespalib/src/tests/testkit-mt/CMakeLists.txt
+++ b/vespalib/src/tests/testkit-mt/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_testkit-mt_test_app TEST
SOURCES
testkit-mt_test.cpp
diff --git a/vespalib/src/tests/testkit-mt/testkit-mt_test.cpp b/vespalib/src/tests/testkit-mt/testkit-mt_test.cpp
index 63dec3f0432..385a69eba57 100644
--- a/vespalib/src/tests/testkit-mt/testkit-mt_test.cpp
+++ b/vespalib/src/tests/testkit-mt/testkit-mt_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
using namespace vespalib;
diff --git a/vespalib/src/tests/testkit-subset/CMakeLists.txt b/vespalib/src/tests/testkit-subset/CMakeLists.txt
index a7c5cfe66f8..ac87e0477eb 100644
--- a/vespalib/src/tests/testkit-subset/CMakeLists.txt
+++ b/vespalib/src/tests/testkit-subset/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_testkit-subset_test_app TEST
SOURCES
testkit-subset_test.cpp
diff --git a/vespalib/src/tests/testkit-subset/testkit-subset_extra.cpp b/vespalib/src/tests/testkit-subset/testkit-subset_extra.cpp
index d7a66a28f08..d46ba5fb7c6 100644
--- a/vespalib/src/tests/testkit-subset/testkit-subset_extra.cpp
+++ b/vespalib/src/tests/testkit-subset/testkit-subset_extra.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
TEST("will pass extra") {
diff --git a/vespalib/src/tests/testkit-subset/testkit-subset_test.cpp b/vespalib/src/tests/testkit-subset/testkit-subset_test.cpp
index 2c37436a133..5f3692f11d9 100644
--- a/vespalib/src/tests/testkit-subset/testkit-subset_test.cpp
+++ b/vespalib/src/tests/testkit-subset/testkit-subset_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
TEST("will pass main") {
diff --git a/vespalib/src/tests/testkit-subset/testkit-subset_test.sh b/vespalib/src/tests/testkit-subset/testkit-subset_test.sh
index 80fcdbefd29..9c5c7222efe 100755
--- a/vespalib/src/tests/testkit-subset/testkit-subset_test.sh
+++ b/vespalib/src/tests/testkit-subset/testkit-subset_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
if [ -z "$SOURCE_DIRECTORY" ]; then
diff --git a/vespalib/src/tests/testkit-testhook/CMakeLists.txt b/vespalib/src/tests/testkit-testhook/CMakeLists.txt
index 4febe6ebb75..6402f281494 100644
--- a/vespalib/src/tests/testkit-testhook/CMakeLists.txt
+++ b/vespalib/src/tests/testkit-testhook/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_testkit-testhook_test_app TEST
SOURCES
testkit-testhook_test.cpp
diff --git a/vespalib/src/tests/testkit-testhook/testkit-testhook_test.cpp b/vespalib/src/tests/testkit-testhook/testkit-testhook_test.cpp
index df7916dd56d..fb19b82ed2a 100644
--- a/vespalib/src/tests/testkit-testhook/testkit-testhook_test.cpp
+++ b/vespalib/src/tests/testkit-testhook/testkit-testhook_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <stdexcept>
diff --git a/vespalib/src/tests/testkit-time_bomb/CMakeLists.txt b/vespalib/src/tests/testkit-time_bomb/CMakeLists.txt
index 58ada65eb93..9896df70b39 100644
--- a/vespalib/src/tests/testkit-time_bomb/CMakeLists.txt
+++ b/vespalib/src/tests/testkit-time_bomb/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_testkit-time_bomb_test_app TEST
SOURCES
testkit-time_bomb_test.cpp
diff --git a/vespalib/src/tests/testkit-time_bomb/testkit-time_bomb_test.cpp b/vespalib/src/tests/testkit-time_bomb/testkit-time_bomb_test.cpp
index 5496fedb703..2c43ed574c5 100644
--- a/vespalib/src/tests/testkit-time_bomb/testkit-time_bomb_test.cpp
+++ b/vespalib/src/tests/testkit-time_bomb/testkit-time_bomb_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/testkit/time_bomb.h>
diff --git a/vespalib/src/tests/text/lowercase/CMakeLists.txt b/vespalib/src/tests/text/lowercase/CMakeLists.txt
index 14f27c340a2..846f811cc24 100644
--- a/vespalib/src/tests/text/lowercase/CMakeLists.txt
+++ b/vespalib/src/tests/text/lowercase/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_lowercase_test_app TEST
SOURCES
lowercase_test.cpp
diff --git a/vespalib/src/tests/text/lowercase/lowercase_test.cpp b/vespalib/src/tests/text/lowercase/lowercase_test.cpp
index cd9aeb49bf9..8117dc20666 100644
--- a/vespalib/src/tests/text/lowercase/lowercase_test.cpp
+++ b/vespalib/src/tests/text/lowercase/lowercase_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("lowercase_test");
#include <vespa/vespalib/testkit/test_kit.h>
diff --git a/vespalib/src/tests/text/lowercase/to-c-code.pl b/vespalib/src/tests/text/lowercase/to-c-code.pl
index e8832569c31..7dffcfad349 100755
--- a/vespalib/src/tests/text/lowercase/to-c-code.pl
+++ b/vespalib/src/tests/text/lowercase/to-c-code.pl
@@ -1,5 +1,5 @@
#!/usr/bin/env perl
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# input looks like:
# lowercase( 65 )= 97
diff --git a/vespalib/src/tests/text/stringtokenizer/CMakeLists.txt b/vespalib/src/tests/text/stringtokenizer/CMakeLists.txt
index 7cd69778bd5..6841c18f5d0 100644
--- a/vespalib/src/tests/text/stringtokenizer/CMakeLists.txt
+++ b/vespalib/src/tests/text/stringtokenizer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_stringtokenizer_test_app TEST
SOURCES
stringtokenizer_test.cpp
diff --git a/vespalib/src/tests/text/stringtokenizer/stringtokenizer_test.cpp b/vespalib/src/tests/text/stringtokenizer/stringtokenizer_test.cpp
index 5992dd898be..67e76dbd60b 100644
--- a/vespalib/src/tests/text/stringtokenizer/stringtokenizer_test.cpp
+++ b/vespalib/src/tests/text/stringtokenizer/stringtokenizer_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("stringtokenizer_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/vespalib/src/tests/text/utf8/CMakeLists.txt b/vespalib/src/tests/text/utf8/CMakeLists.txt
index af8258b8544..85110956776 100644
--- a/vespalib/src/tests/text/utf8/CMakeLists.txt
+++ b/vespalib/src/tests/text/utf8/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_utf8_test_app TEST
SOURCES
utf8_test.cpp
diff --git a/vespalib/src/tests/text/utf8/make_url.cpp b/vespalib/src/tests/text/utf8/make_url.cpp
index fe674548885..631738fb8a1 100644
--- a/vespalib/src/tests/text/utf8/make_url.cpp
+++ b/vespalib/src/tests/text/utf8/make_url.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/text/utf8.h>
void printCodepoint(unsigned long codepoint)
diff --git a/vespalib/src/tests/text/utf8/utf8_test.cpp b/vespalib/src/tests/text/utf8/utf8_test.cpp
index a44c0a7560b..aab781cfb80 100644
--- a/vespalib/src/tests/text/utf8/utf8_test.cpp
+++ b/vespalib/src/tests/text/utf8/utf8_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/vespalib/src/tests/thread/CMakeLists.txt b/vespalib/src/tests/thread/CMakeLists.txt
index 395668085d7..020286ad606 100644
--- a/vespalib/src/tests/thread/CMakeLists.txt
+++ b/vespalib/src/tests/thread/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_thread_test_app TEST
SOURCES
thread_test.cpp
diff --git a/vespalib/src/tests/thread/thread_test.cpp b/vespalib/src/tests/thread/thread_test.cpp
index 5820f329b4f..43951b4b734 100644
--- a/vespalib/src/tests/thread/thread_test.cpp
+++ b/vespalib/src/tests/thread/thread_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/thread.h>
diff --git a/vespalib/src/tests/time/CMakeLists.txt b/vespalib/src/tests/time/CMakeLists.txt
index 99addccf12d..829021a9c52 100644
--- a/vespalib/src/tests/time/CMakeLists.txt
+++ b/vespalib/src/tests/time/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_time_box_test_app TEST
SOURCES
time_box_test.cpp
diff --git a/vespalib/src/tests/time/time_box_test.cpp b/vespalib/src/tests/time/time_box_test.cpp
index 32ac68e7254..b9581f46795 100644
--- a/vespalib/src/tests/time/time_box_test.cpp
+++ b/vespalib/src/tests/time/time_box_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/time/time_box.h>
#include <thread>
diff --git a/vespalib/src/tests/trace/CMakeLists.txt b/vespalib/src/tests/trace/CMakeLists.txt
index bea6db18bf9..a632d419b4b 100644
--- a/vespalib/src/tests/trace/CMakeLists.txt
+++ b/vespalib/src/tests/trace/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_trace_test_app TEST
SOURCES
trace.cpp
diff --git a/vespalib/src/tests/trace/trace.cpp b/vespalib/src/tests/trace/trace.cpp
index 992317b0289..bfa81ec1f79 100644
--- a/vespalib/src/tests/trace/trace.cpp
+++ b/vespalib/src/tests/trace/trace.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/trace/trace.h>
#include <vespa/vespalib/trace/tracevisitor.h>
diff --git a/vespalib/src/tests/trace/trace_serialization.cpp b/vespalib/src/tests/trace/trace_serialization.cpp
index 3182e46061a..e39762bfd1b 100644
--- a/vespalib/src/tests/trace/trace_serialization.cpp
+++ b/vespalib/src/tests/trace/trace_serialization.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/trace/tracenode.h>
#include <vespa/vespalib/trace/slime_trace_serializer.h>
diff --git a/vespalib/src/tests/traits/CMakeLists.txt b/vespalib/src/tests/traits/CMakeLists.txt
index 36b3237cedd..225bbee2006 100644
--- a/vespalib/src/tests/traits/CMakeLists.txt
+++ b/vespalib/src/tests/traits/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_traits_test_app TEST
SOURCES
traits_test.cpp
diff --git a/vespalib/src/tests/traits/traits_test.cpp b/vespalib/src/tests/traits/traits_test.cpp
index 7751327df75..c898f3b1892 100644
--- a/vespalib/src/tests/traits/traits_test.cpp
+++ b/vespalib/src/tests/traits/traits_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/traits.h>
#include <vespa/vespalib/util/arrayqueue.hpp>
diff --git a/vespalib/src/tests/true/CMakeLists.txt b/vespalib/src/tests/true/CMakeLists.txt
index 3626924b92f..abacaa315d0 100644
--- a/vespalib/src/tests/true/CMakeLists.txt
+++ b/vespalib/src/tests/true/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_true_test_app TEST
SOURCES
true.cpp
diff --git a/vespalib/src/tests/true/true.cpp b/vespalib/src/tests/true/true.cpp
index 7447b4a7a7d..8dee60ddd40 100644
--- a/vespalib/src/tests/true/true.cpp
+++ b/vespalib/src/tests/true/true.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("true_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/vespalib/src/tests/tutorial/CMakeLists.txt b/vespalib/src/tests/tutorial/CMakeLists.txt
index 414f54c0c78..22234428ea5 100644
--- a/vespalib/src/tests/tutorial/CMakeLists.txt
+++ b/vespalib/src/tests/tutorial/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_make_tutorial_app TEST
SOURCES
make_tutorial.cpp
diff --git a/vespalib/src/tests/tutorial/checks/CMakeLists.txt b/vespalib/src/tests/tutorial/checks/CMakeLists.txt
index 1884cc9885c..2fd99079a57 100644
--- a/vespalib/src/tests/tutorial/checks/CMakeLists.txt
+++ b/vespalib/src/tests/tutorial/checks/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_checks_test_app
SOURCES
checks_test.cpp
diff --git a/vespalib/src/tests/tutorial/checks/checks_test.cpp b/vespalib/src/tests/tutorial/checks/checks_test.cpp
index 364aaa08745..b72a5d53519 100644
--- a/vespalib/src/tests/tutorial/checks/checks_test.cpp
+++ b/vespalib/src/tests/tutorial/checks/checks_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <stdexcept>
diff --git a/vespalib/src/tests/tutorial/compare-tutorials.sh b/vespalib/src/tests/tutorial/compare-tutorials.sh
index fe8cef1b87d..152394fce83 100755
--- a/vespalib/src/tests/tutorial/compare-tutorials.sh
+++ b/vespalib/src/tests/tutorial/compare-tutorials.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
if [ -z "$SOURCE_DIRECTORY" ]; then
diff --git a/vespalib/src/tests/tutorial/fixtures/CMakeLists.txt b/vespalib/src/tests/tutorial/fixtures/CMakeLists.txt
index 99ac35bbcb1..3226dd0f476 100644
--- a/vespalib/src/tests/tutorial/fixtures/CMakeLists.txt
+++ b/vespalib/src/tests/tutorial/fixtures/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_fixtures_test_app TEST
SOURCES
fixtures_test.cpp
diff --git a/vespalib/src/tests/tutorial/fixtures/fixtures_test.cpp b/vespalib/src/tests/tutorial/fixtures/fixtures_test.cpp
index 6035d641bed..588384606d3 100644
--- a/vespalib/src/tests/tutorial/fixtures/fixtures_test.cpp
+++ b/vespalib/src/tests/tutorial/fixtures/fixtures_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
struct Fixture {
diff --git a/vespalib/src/tests/tutorial/make_example.sh b/vespalib/src/tests/tutorial/make_example.sh
index e6198477f7b..9891443e41f 100755
--- a/vespalib/src/tests/tutorial/make_example.sh
+++ b/vespalib/src/tests/tutorial/make_example.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
dirname=`dirname $1`
filename=`basename $1`
unset VALGRIND
diff --git a/vespalib/src/tests/tutorial/make_source.sh b/vespalib/src/tests/tutorial/make_source.sh
index ff85b0e0920..85b89662144 100755
--- a/vespalib/src/tests/tutorial/make_source.sh
+++ b/vespalib/src/tests/tutorial/make_source.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
filename=$1
echo "<h2>$filename</h2>"
echo "<pre class=\"prettyprint linenums\">"
diff --git a/vespalib/src/tests/tutorial/make_tutorial.cpp b/vespalib/src/tests/tutorial/make_tutorial.cpp
index de0eb585e3c..46292a81005 100644
--- a/vespalib/src/tests/tutorial/make_tutorial.cpp
+++ b/vespalib/src/tests/tutorial/make_tutorial.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/child_process.h>
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/vespalib/src/tests/tutorial/minimal/CMakeLists.txt b/vespalib/src/tests/tutorial/minimal/CMakeLists.txt
index c2099114532..7fc65eb9d22 100644
--- a/vespalib/src/tests/tutorial/minimal/CMakeLists.txt
+++ b/vespalib/src/tests/tutorial/minimal/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_minimal_test_app TEST
SOURCES
minimal_test.cpp
diff --git a/vespalib/src/tests/tutorial/minimal/minimal_test.cpp b/vespalib/src/tests/tutorial/minimal/minimal_test.cpp
index daa2b00f7c5..79f52d01cb3 100644
--- a/vespalib/src/tests/tutorial/minimal/minimal_test.cpp
+++ b/vespalib/src/tests/tutorial/minimal/minimal_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
TEST_MAIN() {}
diff --git a/vespalib/src/tests/tutorial/simple/CMakeLists.txt b/vespalib/src/tests/tutorial/simple/CMakeLists.txt
index a3a9644d5b5..2717f5131b3 100644
--- a/vespalib/src/tests/tutorial/simple/CMakeLists.txt
+++ b/vespalib/src/tests/tutorial/simple/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_simple_test_app TEST
SOURCES
simple_test.cpp
diff --git a/vespalib/src/tests/tutorial/simple/simple_test.cpp b/vespalib/src/tests/tutorial/simple/simple_test.cpp
index 3e888cbed03..8a056004841 100644
--- a/vespalib/src/tests/tutorial/simple/simple_test.cpp
+++ b/vespalib/src/tests/tutorial/simple/simple_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
TEST("require something") {
diff --git a/vespalib/src/tests/tutorial/style.inc b/vespalib/src/tests/tutorial/style.inc
index df33b0dad95..a55478e47f1 100644
--- a/vespalib/src/tests/tutorial/style.inc
+++ b/vespalib/src/tests/tutorial/style.inc
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
<style type="text/css">
body {
diff --git a/vespalib/src/tests/tutorial/threads/CMakeLists.txt b/vespalib/src/tests/tutorial/threads/CMakeLists.txt
index 126b68d53a6..e9a08b62c6a 100644
--- a/vespalib/src/tests/tutorial/threads/CMakeLists.txt
+++ b/vespalib/src/tests/tutorial/threads/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_threads_test_app TEST
SOURCES
threads_test.cpp
diff --git a/vespalib/src/tests/tutorial/threads/threads_test.cpp b/vespalib/src/tests/tutorial/threads/threads_test.cpp
index 993acc75597..36696561165 100644
--- a/vespalib/src/tests/tutorial/threads/threads_test.cpp
+++ b/vespalib/src/tests/tutorial/threads/threads_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
TEST_MT_F("multiple threads", 2, std::vector<size_t>(num_threads)) {
diff --git a/vespalib/src/tests/tutorial/tutorial.html b/vespalib/src/tests/tutorial/tutorial.html
index f7020c5feed..5a9f9cb8a8a 100644
--- a/vespalib/src/tests/tutorial/tutorial.html
+++ b/vespalib/src/tests/tutorial/tutorial.html
@@ -1,10 +1,10 @@
<!DOCTYPE html>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Vespa Test Framework Tutorial</title>
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
<style type="text/css">
body {
@@ -80,7 +80,7 @@ The minimal test application looks like this:
<div class="example" id="minimal">
<h2>minimal_test.cpp</h2>
<pre class="prettyprint linenums">
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include &lt;vespa/vespalib/testkit/test_kit.h&gt;
TEST_MAIN() {}
@@ -109,7 +109,7 @@ Example with two tests, each containing a single check:
<div class="example" id="simple">
<h2>simple_test.cpp</h2>
<pre class="prettyprint linenums">
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include &lt;vespa/vespalib/testkit/test_kit.h&gt;
TEST(&quot;require something&quot;) {
@@ -150,7 +150,7 @@ terminate execution of the current test if it fails.
<div class="example" id="checks">
<h2>checks_test.cpp</h2>
<pre class="prettyprint linenums">
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include &lt;vespa/vespalib/testkit/test_kit.h&gt;
#include &lt;stdexcept&gt;
@@ -227,7 +227,7 @@ an object.
<div class="example" id="fixtures">
<h2>fixtures_test.cpp</h2>
<pre class="prettyprint linenums">
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include &lt;vespa/vespalib/testkit/test_kit.h&gt;
struct Fixture {
@@ -285,7 +285,7 @@ thread invoking it until all threads have invoked it.
<div class="example" id="threads">
<h2>threads_test.cpp</h2>
<pre class="prettyprint linenums">
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include &lt;vespa/vespalib/testkit/test_kit.h&gt;
TEST_MT_F(&quot;multiple threads&quot;, 2, std::vector&lt;size_t&gt;(num_threads)) {
@@ -324,7 +324,7 @@ threads_test.cpp: info: CONCLUSION: PASS
<div class="example" id="../box">
<h2>box_test.cpp</h2>
<pre class="prettyprint linenums">
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include &lt;vespa/vespalib/testkit/test_kit.h&gt;
#include &lt;vespa/vespalib/util/box.h&gt;
@@ -371,7 +371,7 @@ box_test.cpp: info: CONCLUSION: PASS
<div class="example" id="../barrier">
<h2>barrier_test.cpp</h2>
<pre class="prettyprint linenums">
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include &lt;vespa/vespalib/testkit/test_kit.h&gt;
#include &lt;vespa/vespalib/util/barrier.h&gt;
@@ -446,7 +446,7 @@ barrier_test.cpp: info: CONCLUSION: PASS
<div class="example" id="../dual_merge_director">
<h2>dual_merge_director_test.cpp</h2>
<pre class="prettyprint linenums">
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include &lt;vespa/vespalib/testkit/test_kit.h&gt;
#include &lt;vespa/vespalib/util/dual_merge_director.h&gt;
diff --git a/vespalib/src/tests/tutorial/tutorial_source.html b/vespalib/src/tests/tutorial/tutorial_source.html
index 0131457c42b..ad444a8ca2a 100644
--- a/vespalib/src/tests/tutorial/tutorial_source.html
+++ b/vespalib/src/tests/tutorial/tutorial_source.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<html lang="en">
<head>
<meta charset="utf-8" />
diff --git a/vespalib/src/tests/tutorial/xml_escape.cpp b/vespalib/src/tests/tutorial/xml_escape.cpp
index a13f08e8eb4..852da2438ba 100644
--- a/vespalib/src/tests/tutorial/xml_escape.cpp
+++ b/vespalib/src/tests/tutorial/xml_escape.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <unistd.h>
#include <stdio.h>
#include <string.h>
diff --git a/vespalib/src/tests/typify/CMakeLists.txt b/vespalib/src/tests/typify/CMakeLists.txt
index efbc28bf700..dc19946b6f7 100644
--- a/vespalib/src/tests/typify/CMakeLists.txt
+++ b/vespalib/src/tests/typify/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_typify_test_app TEST
SOURCES
typify_test.cpp
diff --git a/vespalib/src/tests/typify/typify_test.cpp b/vespalib/src/tests/typify/typify_test.cpp
index 4c3f1c512ca..3e2ce999e5a 100644
--- a/vespalib/src/tests/typify/typify_test.cpp
+++ b/vespalib/src/tests/typify/typify_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/typify.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/vespalib/src/tests/unwind_message/CMakeLists.txt b/vespalib/src/tests/unwind_message/CMakeLists.txt
index 92295ada035..9fd5e8aa77d 100644
--- a/vespalib/src/tests/unwind_message/CMakeLists.txt
+++ b/vespalib/src/tests/unwind_message/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_unwind_message_test_app TEST
SOURCES
unwind_message_test.cpp
diff --git a/vespalib/src/tests/unwind_message/unwind_message_test.cpp b/vespalib/src/tests/unwind_message/unwind_message_test.cpp
index 84245189842..f9f4824f317 100644
--- a/vespalib/src/tests/unwind_message/unwind_message_test.cpp
+++ b/vespalib/src/tests/unwind_message/unwind_message_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/unwind_message.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/vespalib/src/tests/util/bfloat16/CMakeLists.txt b/vespalib/src/tests/util/bfloat16/CMakeLists.txt
index 39a42e6f148..fe40bf72a14 100644
--- a/vespalib/src/tests/util/bfloat16/CMakeLists.txt
+++ b/vespalib/src/tests/util/bfloat16/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_bfloat16_test_app TEST
SOURCES
bfloat16_test.cpp
diff --git a/vespalib/src/tests/util/bfloat16/bfloat16_test.cpp b/vespalib/src/tests/util/bfloat16/bfloat16_test.cpp
index d8bb93d7972..69e61fc530b 100644
--- a/vespalib/src/tests/util/bfloat16/bfloat16_test.cpp
+++ b/vespalib/src/tests/util/bfloat16/bfloat16_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/bfloat16.h>
#include <vespa/vespalib/objects/nbostream.h>
diff --git a/vespalib/src/tests/util/file_area_freelist/CMakeLists.txt b/vespalib/src/tests/util/file_area_freelist/CMakeLists.txt
index a0961adbba8..13e821d1f95 100644
--- a/vespalib/src/tests/util/file_area_freelist/CMakeLists.txt
+++ b/vespalib/src/tests/util/file_area_freelist/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_file_area_freelist_test_app TEST
SOURCES
file_area_freelist_test.cpp
diff --git a/vespalib/src/tests/util/file_area_freelist/file_area_freelist_test.cpp b/vespalib/src/tests/util/file_area_freelist/file_area_freelist_test.cpp
index aecad4e12cf..9a51be3b817 100644
--- a/vespalib/src/tests/util/file_area_freelist/file_area_freelist_test.cpp
+++ b/vespalib/src/tests/util/file_area_freelist/file_area_freelist_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/file_area_freelist.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/vespalib/src/tests/util/generationhandler/CMakeLists.txt b/vespalib/src/tests/util/generationhandler/CMakeLists.txt
index 5e0c4a45adb..677d5caa0e6 100644
--- a/vespalib/src/tests/util/generationhandler/CMakeLists.txt
+++ b/vespalib/src/tests/util/generationhandler/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_generationhandler_test_app TEST
SOURCES
generationhandler_test.cpp
diff --git a/vespalib/src/tests/util/generationhandler/generationhandler_test.cpp b/vespalib/src/tests/util/generationhandler/generationhandler_test.cpp
index 3edfa75ca52..07805a6942c 100644
--- a/vespalib/src/tests/util/generationhandler/generationhandler_test.cpp
+++ b/vespalib/src/tests/util/generationhandler/generationhandler_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/generationhandler.h>
diff --git a/vespalib/src/tests/util/generationhandler_stress/CMakeLists.txt b/vespalib/src/tests/util/generationhandler_stress/CMakeLists.txt
index 9d1c7419b3c..569db489e3c 100644
--- a/vespalib/src/tests/util/generationhandler_stress/CMakeLists.txt
+++ b/vespalib/src/tests/util/generationhandler_stress/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_generation_handler_stress_test_app
SOURCES
generation_handler_stress_test.cpp
diff --git a/vespalib/src/tests/util/generationhandler_stress/generation_handler_stress_test.cpp b/vespalib/src/tests/util/generationhandler_stress/generation_handler_stress_test.cpp
index f606b7aa39e..8cea96e0f68 100644
--- a/vespalib/src/tests/util/generationhandler_stress/generation_handler_stress_test.cpp
+++ b/vespalib/src/tests/util/generationhandler_stress/generation_handler_stress_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/log.h>
LOG_SETUP("generation_handler_stress_test");
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/vespalib/src/tests/util/hamming/CMakeLists.txt b/vespalib/src/tests/util/hamming/CMakeLists.txt
new file mode 100644
index 00000000000..3247f6417b2
--- /dev/null
+++ b/vespalib/src/tests/util/hamming/CMakeLists.txt
@@ -0,0 +1,9 @@
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(vespalib_hamming_test_app TEST
+ SOURCES
+ hamming_test.cpp
+ DEPENDS
+ vespalib
+ GTest::GTest
+)
+vespa_add_test(NAME vespalib_hamming_test_app COMMAND vespalib_hamming_test_app)
diff --git a/vespalib/src/tests/util/hamming/hamming_test.cpp b/vespalib/src/tests/util/hamming/hamming_test.cpp
new file mode 100644
index 00000000000..83cf1d4d846
--- /dev/null
+++ b/vespalib/src/tests/util/hamming/hamming_test.cpp
@@ -0,0 +1,97 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include <vespa/vespalib/util/binary_hamming_distance.h>
+#include <vespa/vespalib/util/require.h>
+#include <vespa/vespalib/gtest/gtest.h>
+#include <cstdlib>
+#include <cstring>
+#include <vector>
+
+using namespace vespalib;
+
+constexpr size_t ALIGN = 8;
+constexpr size_t ALLOC_SZ = 256;
+
+void flip_one_bit(void *memory, const void *other_memory, size_t sz) {
+ auto buf = (uint8_t *)memory;
+ auto other_buf = (const uint8_t *)other_memory;
+ while (true) {
+ size_t byte_idx = random() % sz;
+ size_t bit_idx = random() % 8;
+ uint8_t cmp = other_buf[byte_idx];
+ uint8_t old = buf[byte_idx];
+ uint8_t bit = 1u << bit_idx;
+ if ((old & bit) == (cmp & bit)) {
+ uint8_t new_val = old ^ bit;
+ REQUIRE(old != new_val);
+ buf[byte_idx] = new_val;
+ return;
+ }
+ }
+}
+
+std::vector<void *> allocated;
+
+void *my_alloc(int unalignment = 0) {
+ void *mem;
+ int r = posix_memalign(&mem, ALIGN, ALLOC_SZ);
+ REQUIRE_EQ(0, r);
+ allocated.push_back(mem);
+ uintptr_t addr = (uintptr_t) mem;
+ addr += unalignment;
+ return (void *)addr;
+}
+
+void check_with_flipping(void *mem_a, void *mem_b, size_t sz) {
+ memset(mem_a, 0, sz);
+ memset(mem_b, 0, sz);
+ size_t dist = 0;
+ EXPECT_EQ(binary_hamming_distance(mem_a, mem_b, sz), dist);
+ while (dist * 2 < sz) {
+ flip_one_bit(mem_a, mem_b, sz);
+ ++dist;
+ EXPECT_EQ(binary_hamming_distance(mem_a, mem_b, sz), dist);
+ flip_one_bit(mem_b, mem_a, sz);
+ ++dist;
+ EXPECT_EQ(binary_hamming_distance(mem_a, mem_b, sz), dist);
+ }
+}
+
+void check_with_sizes(void *mem_a, void *mem_b) {
+ for (size_t sz : { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 32, 63, 64, 65 }) {
+ check_with_flipping(mem_a, mem_b, sz);
+ }
+}
+
+TEST(BinaryHammingTest, aligned_usage) {
+ void *mem_a = my_alloc(0);
+ void *mem_b = my_alloc(0);
+ check_with_sizes(mem_a, mem_b);
+}
+
+TEST(BinaryHammingTest, one_unaligned) {
+ void *mem_a = my_alloc(3);
+ void *mem_b = my_alloc(0);
+ check_with_sizes(mem_a, mem_b);
+}
+
+TEST(BinaryHammingTest, other_unaligned) {
+ void *mem_a = my_alloc(0);
+ void *mem_b = my_alloc(7);
+ check_with_sizes(mem_a, mem_b);
+}
+
+TEST(BinaryHammingTest, both_unaligned) {
+ void *mem_a = my_alloc(2);
+ void *mem_b = my_alloc(6);
+ check_with_sizes(mem_a, mem_b);
+}
+
+int main(int argc, char* argv[]) {
+ ::testing::InitGoogleTest(&argc, argv);
+ int r = RUN_ALL_TESTS();
+ for (void * mem : allocated) {
+ free(mem);
+ }
+ return r;
+}
diff --git a/vespalib/src/tests/util/md5/CMakeLists.txt b/vespalib/src/tests/util/md5/CMakeLists.txt
index 7c3d1874275..a36c1444e2d 100644
--- a/vespalib/src/tests/util/md5/CMakeLists.txt
+++ b/vespalib/src/tests/util/md5/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_md5_test_app TEST
SOURCES
md5_test.cpp
diff --git a/vespalib/src/tests/util/md5/md5_test.cpp b/vespalib/src/tests/util/md5/md5_test.cpp
index 6061f138566..c4bf2ec923b 100644
--- a/vespalib/src/tests/util/md5/md5_test.cpp
+++ b/vespalib/src/tests/util/md5/md5_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/util/md5.h>
#include <vespa/vespalib/stllike/string.h>
diff --git a/vespalib/src/tests/util/mmap_file_allocator/CMakeLists.txt b/vespalib/src/tests/util/mmap_file_allocator/CMakeLists.txt
index 00ce5f52fd7..c055b75ff17 100644
--- a/vespalib/src/tests/util/mmap_file_allocator/CMakeLists.txt
+++ b/vespalib/src/tests/util/mmap_file_allocator/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_mmap_file_allocator_test_app TEST
SOURCES
mmap_file_allocator_test.cpp
diff --git a/vespalib/src/tests/util/mmap_file_allocator/mmap_file_allocator_test.cpp b/vespalib/src/tests/util/mmap_file_allocator/mmap_file_allocator_test.cpp
index 0d6e7718b86..545733a1ebd 100644
--- a/vespalib/src/tests/util/mmap_file_allocator/mmap_file_allocator_test.cpp
+++ b/vespalib/src/tests/util/mmap_file_allocator/mmap_file_allocator_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/mmap_file_allocator.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/vespalib/src/tests/util/mmap_file_allocator_factory/CMakeLists.txt b/vespalib/src/tests/util/mmap_file_allocator_factory/CMakeLists.txt
index c6122659a22..8e754575623 100644
--- a/vespalib/src/tests/util/mmap_file_allocator_factory/CMakeLists.txt
+++ b/vespalib/src/tests/util/mmap_file_allocator_factory/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_mmap_file_allocator_factory_test_app TEST
SOURCES
mmap_file_allocator_factory_test.cpp
diff --git a/vespalib/src/tests/util/mmap_file_allocator_factory/mmap_file_allocator_factory_test.cpp b/vespalib/src/tests/util/mmap_file_allocator_factory/mmap_file_allocator_factory_test.cpp
index f5c0317f623..9e822962d10 100644
--- a/vespalib/src/tests/util/mmap_file_allocator_factory/mmap_file_allocator_factory_test.cpp
+++ b/vespalib/src/tests/util/mmap_file_allocator_factory/mmap_file_allocator_factory_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/mmap_file_allocator_factory.h>
#include <vespa/vespalib/util/mmap_file_allocator.h>
diff --git a/vespalib/src/tests/util/rcuvector/CMakeLists.txt b/vespalib/src/tests/util/rcuvector/CMakeLists.txt
index 8aa07763bef..60e8dc60d43 100644
--- a/vespalib/src/tests/util/rcuvector/CMakeLists.txt
+++ b/vespalib/src/tests/util/rcuvector/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_rcuvector_test_app TEST
SOURCES
rcuvector_test.cpp
diff --git a/vespalib/src/tests/util/rcuvector/rcuvector_test.cpp b/vespalib/src/tests/util/rcuvector/rcuvector_test.cpp
index d0f319d4a0b..9ad0e95667b 100644
--- a/vespalib/src/tests/util/rcuvector/rcuvector_test.cpp
+++ b/vespalib/src/tests/util/rcuvector/rcuvector_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/rcuvector.h>
diff --git a/vespalib/src/tests/util/reusable_set/CMakeLists.txt b/vespalib/src/tests/util/reusable_set/CMakeLists.txt
index 530d3d0f405..fa67311db6f 100644
--- a/vespalib/src/tests/util/reusable_set/CMakeLists.txt
+++ b/vespalib/src/tests/util/reusable_set/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_reusable_set_test_app TEST
SOURCES
reusable_set_test.cpp
diff --git a/vespalib/src/tests/util/reusable_set/reusable_set_test.cpp b/vespalib/src/tests/util/reusable_set/reusable_set_test.cpp
index 26c3345c71e..fb3e73d03ed 100644
--- a/vespalib/src/tests/util/reusable_set/reusable_set_test.cpp
+++ b/vespalib/src/tests/util/reusable_set/reusable_set_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/reusable_set_pool.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/vespalib/src/tests/util/size_literals/CMakeLists.txt b/vespalib/src/tests/util/size_literals/CMakeLists.txt
index b23b5e4f9a6..178eed6b9d4 100644
--- a/vespalib/src/tests/util/size_literals/CMakeLists.txt
+++ b/vespalib/src/tests/util/size_literals/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_size_literals_test_app TEST
SOURCES
size_literals_test.cpp
diff --git a/vespalib/src/tests/util/size_literals/size_literals_test.cpp b/vespalib/src/tests/util/size_literals/size_literals_test.cpp
index 86c4866442b..65f015c9962 100644
--- a/vespalib/src/tests/util/size_literals/size_literals_test.cpp
+++ b/vespalib/src/tests/util/size_literals/size_literals_test.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/size_literals.h>
#include <vespa/vespalib/gtest/gtest.h>
diff --git a/vespalib/src/tests/valgrind/CMakeLists.txt b/vespalib/src/tests/valgrind/CMakeLists.txt
index 955ab1857ef..bc99cf1c457 100644
--- a/vespalib/src/tests/valgrind/CMakeLists.txt
+++ b/vespalib/src/tests/valgrind/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_valgrind_test_app TEST
SOURCES
valgrind_test.cpp
diff --git a/vespalib/src/tests/valgrind/valgrind_test.cpp b/vespalib/src/tests/valgrind/valgrind_test.cpp
index df3171e7eb1..933c5f69596 100644
--- a/vespalib/src/tests/valgrind/valgrind_test.cpp
+++ b/vespalib/src/tests/valgrind/valgrind_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/valgrind.h>
diff --git a/vespalib/src/tests/websocket/CMakeLists.txt b/vespalib/src/tests/websocket/CMakeLists.txt
index 64d363e8814..8581523a98e 100644
--- a/vespalib/src/tests/websocket/CMakeLists.txt
+++ b/vespalib/src/tests/websocket/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_websocket_test_app TEST
SOURCES
websocket_test.cpp
diff --git a/vespalib/src/tests/websocket/index.html b/vespalib/src/tests/websocket/index.html
index 191dd152ed4..144d42be14d 100644
--- a/vespalib/src/tests/websocket/index.html
+++ b/vespalib/src/tests/websocket/index.html
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<html>
<h1>Websocket server</h1>
<a href="test.html">run test</a>
diff --git a/vespalib/src/tests/websocket/test.html b/vespalib/src/tests/websocket/test.html
index 04f8159de6f..f898cfb8da3 100644
--- a/vespalib/src/tests/websocket/test.html
+++ b/vespalib/src/tests/websocket/test.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<meta charset="utf-8" />
diff --git a/vespalib/src/tests/websocket/websocket_server.cpp b/vespalib/src/tests/websocket/websocket_server.cpp
index d8fe3b849e5..7a9cf46cb5f 100644
--- a/vespalib/src/tests/websocket/websocket_server.cpp
+++ b/vespalib/src/tests/websocket/websocket_server.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/websocket/websocket_server.h>
#include <vespa/vespalib/util/host_name.h>
diff --git a/vespalib/src/tests/websocket/websocket_test.cpp b/vespalib/src/tests/websocket/websocket_test.cpp
index d9cd70c09d1..5b346df4243 100644
--- a/vespalib/src/tests/websocket/websocket_test.cpp
+++ b/vespalib/src/tests/websocket/websocket_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/net/socket_spec.h>
#include <vespa/vespalib/websocket/handler.h>
diff --git a/vespalib/src/tests/zcurve/CMakeLists.txt b/vespalib/src/tests/zcurve/CMakeLists.txt
index b9786a832fd..7a48bba4006 100644
--- a/vespalib/src/tests/zcurve/CMakeLists.txt
+++ b/vespalib/src/tests/zcurve/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalib_zcurve_test_app TEST
SOURCES
zcurve_test.cpp
diff --git a/vespalib/src/tests/zcurve/zcurve_ranges_test.cpp b/vespalib/src/tests/zcurve/zcurve_ranges_test.cpp
index b0af41667c1..4ab0a0c183b 100644
--- a/vespalib/src/tests/zcurve/zcurve_ranges_test.cpp
+++ b/vespalib/src/tests/zcurve/zcurve_ranges_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/geo/zcurve.h>
#include <vector>
diff --git a/vespalib/src/tests/zcurve/zcurve_test.cpp b/vespalib/src/tests/zcurve/zcurve_test.cpp
index 67f6a622ff0..56af4693ce4 100644
--- a/vespalib/src/tests/zcurve/zcurve_test.cpp
+++ b/vespalib/src/tests/zcurve/zcurve_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/geo/zcurve.h>
diff --git a/vespalib/src/vespa/vespalib/CMakeLists.txt b/vespalib/src/vespa/vespalib/CMakeLists.txt
index 92149d3f0ea..738e0c6c766 100644
--- a/vespalib/src/vespa/vespalib/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalib
SOURCES
$<TARGET_OBJECTS:vespalib_vespalib_btree>
diff --git a/vespalib/src/vespa/vespalib/btree/CMakeLists.txt b/vespalib/src/vespa/vespalib/btree/CMakeLists.txt
index 73cfebab786..0ca4cafad23 100644
--- a/vespalib/src/vespa/vespalib/btree/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/btree/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalib_vespalib_btree OBJECT
SOURCES
btree_key_data.cpp
diff --git a/vespalib/src/vespa/vespalib/btree/btree.h b/vespalib/src/vespa/vespalib/btree/btree.h
index f40483d4cdd..2b03e70fbdf 100644
--- a/vespalib/src/vespa/vespalib/btree/btree.h
+++ b/vespalib/src/vespa/vespalib/btree/btree.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btree.hpp b/vespalib/src/vespa/vespalib/btree/btree.hpp
index 43c2e19811b..c4a588bc63e 100644
--- a/vespalib/src/vespa/vespalib/btree/btree.hpp
+++ b/vespalib/src/vespa/vespalib/btree/btree.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btree_key_data.cpp b/vespalib/src/vespa/vespalib/btree/btree_key_data.cpp
index b9d72c207f1..0be2fec4651 100644
--- a/vespalib/src/vespa/vespalib/btree/btree_key_data.cpp
+++ b/vespalib/src/vespa/vespalib/btree/btree_key_data.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "btree_key_data.h"
diff --git a/vespalib/src/vespa/vespalib/btree/btree_key_data.h b/vespalib/src/vespa/vespalib/btree/btree_key_data.h
index 5d4929694d5..73f9a069109 100644
--- a/vespalib/src/vespa/vespalib/btree/btree_key_data.h
+++ b/vespalib/src/vespa/vespalib/btree/btree_key_data.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreeaggregator.cpp b/vespalib/src/vespa/vespalib/btree/btreeaggregator.cpp
index 2cad83577a0..ddcdf9f0dbf 100644
--- a/vespalib/src/vespa/vespalib/btree/btreeaggregator.cpp
+++ b/vespalib/src/vespa/vespalib/btree/btreeaggregator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "btreeaggregator.hpp"
#include "minmaxaggrcalc.h"
diff --git a/vespalib/src/vespa/vespalib/btree/btreeaggregator.h b/vespalib/src/vespa/vespalib/btree/btreeaggregator.h
index ece6370e5fa..8a15d1ca34f 100644
--- a/vespalib/src/vespa/vespalib/btree/btreeaggregator.h
+++ b/vespalib/src/vespa/vespalib/btree/btreeaggregator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreeaggregator.hpp b/vespalib/src/vespa/vespalib/btree/btreeaggregator.hpp
index 2a04d7316b7..9c99b907e64 100644
--- a/vespalib/src/vespa/vespalib/btree/btreeaggregator.hpp
+++ b/vespalib/src/vespa/vespalib/btree/btreeaggregator.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreebuilder.cpp b/vespalib/src/vespa/vespalib/btree/btreebuilder.cpp
index 3201fb70eee..c4495b19cbd 100644
--- a/vespalib/src/vespa/vespalib/btree/btreebuilder.cpp
+++ b/vespalib/src/vespa/vespalib/btree/btreebuilder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "btreenode.hpp"
#include "btreebuilder.hpp"
diff --git a/vespalib/src/vespa/vespalib/btree/btreebuilder.h b/vespalib/src/vespa/vespalib/btree/btreebuilder.h
index ecc67a6ad6c..87ac0c31796 100644
--- a/vespalib/src/vespa/vespalib/btree/btreebuilder.h
+++ b/vespalib/src/vespa/vespalib/btree/btreebuilder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreebuilder.hpp b/vespalib/src/vespa/vespalib/btree/btreebuilder.hpp
index 0374d46a7c3..5abe2b2cebd 100644
--- a/vespalib/src/vespa/vespalib/btree/btreebuilder.hpp
+++ b/vespalib/src/vespa/vespalib/btree/btreebuilder.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreeinserter.cpp b/vespalib/src/vespa/vespalib/btree/btreeinserter.cpp
index 7eb786d4ffe..5807c249fdb 100644
--- a/vespalib/src/vespa/vespalib/btree/btreeinserter.cpp
+++ b/vespalib/src/vespa/vespalib/btree/btreeinserter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "btreeinserter.h"
#include "btreenodeallocator.h"
diff --git a/vespalib/src/vespa/vespalib/btree/btreeinserter.h b/vespalib/src/vespa/vespalib/btree/btreeinserter.h
index 6fb859e488e..bc433954d2a 100644
--- a/vespalib/src/vespa/vespalib/btree/btreeinserter.h
+++ b/vespalib/src/vespa/vespalib/btree/btreeinserter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreeinserter.hpp b/vespalib/src/vespa/vespalib/btree/btreeinserter.hpp
index 434bb0db931..b5980e53f93 100644
--- a/vespalib/src/vespa/vespalib/btree/btreeinserter.hpp
+++ b/vespalib/src/vespa/vespalib/btree/btreeinserter.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreeiterator.cpp b/vespalib/src/vespa/vespalib/btree/btreeiterator.cpp
index 1dc0c6056ba..93e4a15b47d 100644
--- a/vespalib/src/vespa/vespalib/btree/btreeiterator.cpp
+++ b/vespalib/src/vespa/vespalib/btree/btreeiterator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "btreeiterator.hpp"
#include "btreenode.hpp"
diff --git a/vespalib/src/vespa/vespalib/btree/btreeiterator.h b/vespalib/src/vespa/vespalib/btree/btreeiterator.h
index 21d232db31a..325ce0e0e47 100644
--- a/vespalib/src/vespa/vespalib/btree/btreeiterator.h
+++ b/vespalib/src/vespa/vespalib/btree/btreeiterator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreeiterator.hpp b/vespalib/src/vespa/vespalib/btree/btreeiterator.hpp
index 2102abbf10c..2348e770e9d 100644
--- a/vespalib/src/vespa/vespalib/btree/btreeiterator.hpp
+++ b/vespalib/src/vespa/vespalib/btree/btreeiterator.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreenode.cpp b/vespalib/src/vespa/vespalib/btree/btreenode.cpp
index c723b31d706..46a38922fdb 100644
--- a/vespalib/src/vespa/vespalib/btree/btreenode.cpp
+++ b/vespalib/src/vespa/vespalib/btree/btreenode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "btreenode.hpp"
diff --git a/vespalib/src/vespa/vespalib/btree/btreenode.h b/vespalib/src/vespa/vespalib/btree/btreenode.h
index 561a85e8826..d8752d77f0b 100644
--- a/vespalib/src/vespa/vespalib/btree/btreenode.h
+++ b/vespalib/src/vespa/vespalib/btree/btreenode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreenode.hpp b/vespalib/src/vespa/vespalib/btree/btreenode.hpp
index b44315f480a..547dd6f5f3f 100644
--- a/vespalib/src/vespa/vespalib/btree/btreenode.hpp
+++ b/vespalib/src/vespa/vespalib/btree/btreenode.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreenodeallocator.cpp b/vespalib/src/vespa/vespalib/btree/btreenodeallocator.cpp
index ef9634d4bad..7e7427616f8 100644
--- a/vespalib/src/vespa/vespalib/btree/btreenodeallocator.cpp
+++ b/vespalib/src/vespa/vespalib/btree/btreenodeallocator.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "btreenodeallocator.hpp"
#include <vespa/vespalib/util/array.hpp>
diff --git a/vespalib/src/vespa/vespalib/btree/btreenodeallocator.h b/vespalib/src/vespa/vespalib/btree/btreenodeallocator.h
index a6341c50f96..93615ddef82 100644
--- a/vespalib/src/vespa/vespalib/btree/btreenodeallocator.h
+++ b/vespalib/src/vespa/vespalib/btree/btreenodeallocator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreenodeallocator.hpp b/vespalib/src/vespa/vespalib/btree/btreenodeallocator.hpp
index 59a7d391563..81262f560c7 100644
--- a/vespalib/src/vespa/vespalib/btree/btreenodeallocator.hpp
+++ b/vespalib/src/vespa/vespalib/btree/btreenodeallocator.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreenodestore.cpp b/vespalib/src/vespa/vespalib/btree/btreenodestore.cpp
index c81856b62b2..e84d7eaf3ad 100644
--- a/vespalib/src/vespa/vespalib/btree/btreenodestore.cpp
+++ b/vespalib/src/vespa/vespalib/btree/btreenodestore.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "btreenodestore.hpp"
#include "btreerootbase.h"
diff --git a/vespalib/src/vespa/vespalib/btree/btreenodestore.h b/vespalib/src/vespa/vespalib/btree/btreenodestore.h
index 81017447580..70a9ba6c73c 100644
--- a/vespalib/src/vespa/vespalib/btree/btreenodestore.h
+++ b/vespalib/src/vespa/vespalib/btree/btreenodestore.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreenodestore.hpp b/vespalib/src/vespa/vespalib/btree/btreenodestore.hpp
index 2e2c8f471d1..ff4fa59cd74 100644
--- a/vespalib/src/vespa/vespalib/btree/btreenodestore.hpp
+++ b/vespalib/src/vespa/vespalib/btree/btreenodestore.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreeremover.cpp b/vespalib/src/vespa/vespalib/btree/btreeremover.cpp
index 5a5b014a817..d39b5fd3ea2 100644
--- a/vespalib/src/vespa/vespalib/btree/btreeremover.cpp
+++ b/vespalib/src/vespa/vespalib/btree/btreeremover.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "btreeremover.h"
#include "btreenodeallocator.h"
diff --git a/vespalib/src/vespa/vespalib/btree/btreeremover.h b/vespalib/src/vespa/vespalib/btree/btreeremover.h
index 2a5068f9f6d..0295d001f54 100644
--- a/vespalib/src/vespa/vespalib/btree/btreeremover.h
+++ b/vespalib/src/vespa/vespalib/btree/btreeremover.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreeremover.hpp b/vespalib/src/vespa/vespalib/btree/btreeremover.hpp
index 72923fc5b7b..e0e41c1dd2d 100644
--- a/vespalib/src/vespa/vespalib/btree/btreeremover.hpp
+++ b/vespalib/src/vespa/vespalib/btree/btreeremover.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreeroot.cpp b/vespalib/src/vespa/vespalib/btree/btreeroot.cpp
index e1dd8c95456..bead7d7bd47 100644
--- a/vespalib/src/vespa/vespalib/btree/btreeroot.cpp
+++ b/vespalib/src/vespa/vespalib/btree/btreeroot.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "btreeroot.h"
#include "btreenodeallocator.h"
diff --git a/vespalib/src/vespa/vespalib/btree/btreeroot.h b/vespalib/src/vespa/vespalib/btree/btreeroot.h
index dc3507fc5d5..32b27b01dbc 100644
--- a/vespalib/src/vespa/vespalib/btree/btreeroot.h
+++ b/vespalib/src/vespa/vespalib/btree/btreeroot.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreeroot.hpp b/vespalib/src/vespa/vespalib/btree/btreeroot.hpp
index 3cfd1cb49ea..6ca3720921a 100644
--- a/vespalib/src/vespa/vespalib/btree/btreeroot.hpp
+++ b/vespalib/src/vespa/vespalib/btree/btreeroot.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreerootbase.cpp b/vespalib/src/vespa/vespalib/btree/btreerootbase.cpp
index 35aa420378c..d991985370b 100644
--- a/vespalib/src/vespa/vespalib/btree/btreerootbase.cpp
+++ b/vespalib/src/vespa/vespalib/btree/btreerootbase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "btreerootbase.h"
#include "btreerootbase.hpp"
diff --git a/vespalib/src/vespa/vespalib/btree/btreerootbase.h b/vespalib/src/vespa/vespalib/btree/btreerootbase.h
index f1f44b6aae6..ff523afb554 100644
--- a/vespalib/src/vespa/vespalib/btree/btreerootbase.h
+++ b/vespalib/src/vespa/vespalib/btree/btreerootbase.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreerootbase.hpp b/vespalib/src/vespa/vespalib/btree/btreerootbase.hpp
index 97f84c0ccf3..025fed3853a 100644
--- a/vespalib/src/vespa/vespalib/btree/btreerootbase.hpp
+++ b/vespalib/src/vespa/vespalib/btree/btreerootbase.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreestore.cpp b/vespalib/src/vespa/vespalib/btree/btreestore.cpp
index 5a85500bf01..14f34d0ba50 100644
--- a/vespalib/src/vespa/vespalib/btree/btreestore.cpp
+++ b/vespalib/src/vespa/vespalib/btree/btreestore.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "btreestore.hpp"
#include "btreeiterator.hpp"
diff --git a/vespalib/src/vespa/vespalib/btree/btreestore.h b/vespalib/src/vespa/vespalib/btree/btreestore.h
index 0125d74cfc8..82913987e44 100644
--- a/vespalib/src/vespa/vespalib/btree/btreestore.h
+++ b/vespalib/src/vespa/vespalib/btree/btreestore.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreestore.hpp b/vespalib/src/vespa/vespalib/btree/btreestore.hpp
index 9cde2979f68..15c546a0368 100644
--- a/vespalib/src/vespa/vespalib/btree/btreestore.hpp
+++ b/vespalib/src/vespa/vespalib/btree/btreestore.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/btreetraits.h b/vespalib/src/vespa/vespalib/btree/btreetraits.h
index 84732629a21..22b8addee86 100644
--- a/vespalib/src/vespa/vespalib/btree/btreetraits.h
+++ b/vespalib/src/vespa/vespalib/btree/btreetraits.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/minmaxaggrcalc.h b/vespalib/src/vespa/vespalib/btree/minmaxaggrcalc.h
index 8ad03a8270c..17a26ef29be 100644
--- a/vespalib/src/vespa/vespalib/btree/minmaxaggrcalc.h
+++ b/vespalib/src/vespa/vespalib/btree/minmaxaggrcalc.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/minmaxaggregated.h b/vespalib/src/vespa/vespalib/btree/minmaxaggregated.h
index ec675f80325..4b7a8a85db3 100644
--- a/vespalib/src/vespa/vespalib/btree/minmaxaggregated.h
+++ b/vespalib/src/vespa/vespalib/btree/minmaxaggregated.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/noaggrcalc.h b/vespalib/src/vespa/vespalib/btree/noaggrcalc.h
index ab11e9c689a..9c8e47b4355 100644
--- a/vespalib/src/vespa/vespalib/btree/noaggrcalc.h
+++ b/vespalib/src/vespa/vespalib/btree/noaggrcalc.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/btree/noaggregated.h b/vespalib/src/vespa/vespalib/btree/noaggregated.h
index 13793c6327f..c25f423bdc6 100644
--- a/vespalib/src/vespa/vespalib/btree/noaggregated.h
+++ b/vespalib/src/vespa/vespalib/btree/noaggregated.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/component/CMakeLists.txt b/vespalib/src/vespa/vespalib/component/CMakeLists.txt
index aa264a6cec8..c7234656084 100644
--- a/vespalib/src/vespa/vespalib/component/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/component/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalib_vespalib_component OBJECT
SOURCES
version.cpp
diff --git a/vespalib/src/vespa/vespalib/component/version.cpp b/vespalib/src/vespa/vespalib/component/version.cpp
index b0f14bc18f3..7204af028f4 100644
--- a/vespalib/src/vespa/vespalib/component/version.cpp
+++ b/vespalib/src/vespa/vespalib/component/version.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "version.h"
#include <vespa/vespalib/util/exceptions.h>
diff --git a/vespalib/src/vespa/vespalib/component/version.h b/vespalib/src/vespa/vespalib/component/version.h
index 8a9892fab76..a5c6fe756ae 100644
--- a/vespalib/src/vespa/vespalib/component/version.h
+++ b/vespalib/src/vespa/vespalib/component/version.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/vespalib/src/vespa/vespalib/component/versionspecification.cpp b/vespalib/src/vespa/vespalib/component/versionspecification.cpp
index 6400097c9bf..68ce3dbbd27 100644
--- a/vespalib/src/vespa/vespalib/component/versionspecification.cpp
+++ b/vespalib/src/vespa/vespalib/component/versionspecification.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "version.h"
#include "versionspecification.h"
diff --git a/vespalib/src/vespa/vespalib/component/versionspecification.h b/vespalib/src/vespa/vespalib/component/versionspecification.h
index 88d825011f3..6137244a0f8 100644
--- a/vespalib/src/vespa/vespalib/component/versionspecification.h
+++ b/vespalib/src/vespa/vespalib/component/versionspecification.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "version.h"
diff --git a/vespalib/src/vespa/vespalib/component/vtag.cpp b/vespalib/src/vespa/vespalib/component/vtag.cpp
index 7c67d1dd188..92e0ae64f46 100644
--- a/vespalib/src/vespa/vespalib/component/vtag.cpp
+++ b/vespalib/src/vespa/vespalib/component/vtag.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "vtag.h"
#include <cstdio>
diff --git a/vespalib/src/vespa/vespalib/component/vtag.h b/vespalib/src/vespa/vespalib/component/vtag.h
index e7ccbf1a8ea..2829c6012f9 100644
--- a/vespalib/src/vespa/vespalib/component/vtag.h
+++ b/vespalib/src/vespa/vespalib/component/vtag.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "version.h"
diff --git a/vespalib/src/vespa/vespalib/crypto/crypto_exception.cpp b/vespalib/src/vespa/vespalib/crypto/crypto_exception.cpp
index 226d8664de6..751214f1630 100644
--- a/vespalib/src/vespa/vespalib/crypto/crypto_exception.cpp
+++ b/vespalib/src/vespa/vespalib/crypto/crypto_exception.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "crypto_exception.h"
diff --git a/vespalib/src/vespa/vespalib/crypto/crypto_exception.h b/vespalib/src/vespa/vespalib/crypto/crypto_exception.h
index 0d0dcc8ceec..49002fd8f15 100644
--- a/vespalib/src/vespa/vespalib/crypto/crypto_exception.h
+++ b/vespalib/src/vespa/vespalib/crypto/crypto_exception.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/exception.h>
diff --git a/vespalib/src/vespa/vespalib/crypto/openssl_typedefs.h b/vespalib/src/vespa/vespalib/crypto/openssl_typedefs.h
index 2986a4515f7..036d938c158 100644
--- a/vespalib/src/vespa/vespalib/crypto/openssl_typedefs.h
+++ b/vespalib/src/vespa/vespalib/crypto/openssl_typedefs.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/vespalib/src/vespa/vespalib/crypto/random.cpp b/vespalib/src/vespa/vespalib/crypto/random.cpp
index 49200706839..67d333a0d92 100644
--- a/vespalib/src/vespa/vespalib/crypto/random.cpp
+++ b/vespalib/src/vespa/vespalib/crypto/random.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "random.h"
#include <openssl/rand.h>
diff --git a/vespalib/src/vespa/vespalib/crypto/random.h b/vespalib/src/vespa/vespalib/crypto/random.h
index a97f8df2bc2..a5bb62b9264 100644
--- a/vespalib/src/vespa/vespalib/crypto/random.h
+++ b/vespalib/src/vespa/vespalib/crypto/random.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstddef>
diff --git a/vespalib/src/vespa/vespalib/data/CMakeLists.txt b/vespalib/src/vespa/vespalib/data/CMakeLists.txt
index 517d0cd198f..39ff0661c1f 100644
--- a/vespalib/src/vespa/vespalib/data/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/data/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalib_vespalib_data OBJECT
SOURCES
databuffer.cpp
diff --git a/vespalib/src/vespa/vespalib/data/databuffer.cpp b/vespalib/src/vespa/vespalib/data/databuffer.cpp
index 6b98226e50e..8640a369267 100644
--- a/vespalib/src/vespa/vespalib/data/databuffer.cpp
+++ b/vespalib/src/vespa/vespalib/data/databuffer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "databuffer.h"
#include <algorithm>
#include <cstdio>
diff --git a/vespalib/src/vespa/vespalib/data/databuffer.h b/vespalib/src/vespa/vespalib/data/databuffer.h
index 93da2b92379..f15cba92eed 100644
--- a/vespalib/src/vespa/vespalib/data/databuffer.h
+++ b/vespalib/src/vespa/vespalib/data/databuffer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstring>
diff --git a/vespalib/src/vespa/vespalib/data/input.cpp b/vespalib/src/vespa/vespalib/data/input.cpp
index ca8cafcb818..f8ca4490333 100644
--- a/vespalib/src/vespa/vespalib/data/input.cpp
+++ b/vespalib/src/vespa/vespalib/data/input.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "input.h"
diff --git a/vespalib/src/vespa/vespalib/data/input.h b/vespalib/src/vespa/vespalib/data/input.h
index c215dd33e9e..c086e1a9772 100644
--- a/vespalib/src/vespa/vespalib/data/input.h
+++ b/vespalib/src/vespa/vespalib/data/input.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/input_reader.cpp b/vespalib/src/vespa/vespalib/data/input_reader.cpp
index 1cb49e32e55..356d04c3dfd 100644
--- a/vespalib/src/vespa/vespalib/data/input_reader.cpp
+++ b/vespalib/src/vespa/vespalib/data/input_reader.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "input_reader.h"
#include "input.h"
diff --git a/vespalib/src/vespa/vespalib/data/input_reader.h b/vespalib/src/vespa/vespalib/data/input_reader.h
index 41c42327b6c..97ac54e8d06 100644
--- a/vespalib/src/vespa/vespalib/data/input_reader.h
+++ b/vespalib/src/vespa/vespalib/data/input_reader.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/lz4_input_decoder.cpp b/vespalib/src/vespa/vespalib/data/lz4_input_decoder.cpp
index 3e3f4bb7a8e..38b0777ad34 100644
--- a/vespalib/src/vespa/vespalib/data/lz4_input_decoder.cpp
+++ b/vespalib/src/vespa/vespalib/data/lz4_input_decoder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "lz4_input_decoder.h"
#include <lz4frame.h>
diff --git a/vespalib/src/vespa/vespalib/data/lz4_input_decoder.h b/vespalib/src/vespa/vespalib/data/lz4_input_decoder.h
index b29b809838d..7d316c084c5 100644
--- a/vespalib/src/vespa/vespalib/data/lz4_input_decoder.h
+++ b/vespalib/src/vespa/vespalib/data/lz4_input_decoder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/lz4_output_encoder.cpp b/vespalib/src/vespa/vespalib/data/lz4_output_encoder.cpp
index c9a24648e18..93dce029a64 100644
--- a/vespalib/src/vespa/vespalib/data/lz4_output_encoder.cpp
+++ b/vespalib/src/vespa/vespalib/data/lz4_output_encoder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "lz4_output_encoder.h"
#include <lz4frame.h>
diff --git a/vespalib/src/vespa/vespalib/data/lz4_output_encoder.h b/vespalib/src/vespa/vespalib/data/lz4_output_encoder.h
index 58fc03cc320..a7457b8f572 100644
--- a/vespalib/src/vespa/vespalib/data/lz4_output_encoder.h
+++ b/vespalib/src/vespa/vespalib/data/lz4_output_encoder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/memory.cpp b/vespalib/src/vespa/vespalib/data/memory.cpp
index 8ebb150da8c..7a10f4eb2d7 100644
--- a/vespalib/src/vespa/vespalib/data/memory.cpp
+++ b/vespalib/src/vespa/vespalib/data/memory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "memory.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/vespalib/src/vespa/vespalib/data/memory.h b/vespalib/src/vespa/vespalib/data/memory.h
index 422435a8a2c..2765309f4c3 100644
--- a/vespalib/src/vespa/vespalib/data/memory.h
+++ b/vespalib/src/vespa/vespalib/data/memory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/memory_input.cpp b/vespalib/src/vespa/vespalib/data/memory_input.cpp
index 9625193c570..07ad58af15c 100644
--- a/vespalib/src/vespa/vespalib/data/memory_input.cpp
+++ b/vespalib/src/vespa/vespalib/data/memory_input.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "memory_input.h"
diff --git a/vespalib/src/vespa/vespalib/data/memory_input.h b/vespalib/src/vespa/vespalib/data/memory_input.h
index d03cb8087cc..1e884b1c836 100644
--- a/vespalib/src/vespa/vespalib/data/memory_input.h
+++ b/vespalib/src/vespa/vespalib/data/memory_input.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/memorydatastore.cpp b/vespalib/src/vespa/vespalib/data/memorydatastore.cpp
index 1f8c72a5a64..6951da217c7 100644
--- a/vespalib/src/vespa/vespalib/data/memorydatastore.cpp
+++ b/vespalib/src/vespa/vespalib/data/memorydatastore.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/data/memorydatastore.h>
#include <vespa/vespalib/util/array.hpp>
diff --git a/vespalib/src/vespa/vespalib/data/memorydatastore.h b/vespalib/src/vespa/vespalib/data/memorydatastore.h
index fa6113279da..58057a34376 100644
--- a/vespalib/src/vespa/vespalib/data/memorydatastore.h
+++ b/vespalib/src/vespa/vespalib/data/memorydatastore.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/alloc.h>
diff --git a/vespalib/src/vespa/vespalib/data/output.cpp b/vespalib/src/vespa/vespalib/data/output.cpp
index c3a0269a941..bf80b2e4301 100644
--- a/vespalib/src/vespa/vespalib/data/output.cpp
+++ b/vespalib/src/vespa/vespalib/data/output.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "output.h"
diff --git a/vespalib/src/vespa/vespalib/data/output.h b/vespalib/src/vespa/vespalib/data/output.h
index 449b254c104..cbf6fbc140a 100644
--- a/vespalib/src/vespa/vespalib/data/output.h
+++ b/vespalib/src/vespa/vespalib/data/output.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/output_writer.cpp b/vespalib/src/vespa/vespalib/data/output_writer.cpp
index 21b8f78da02..d657c10d273 100644
--- a/vespalib/src/vespa/vespalib/data/output_writer.cpp
+++ b/vespalib/src/vespa/vespalib/data/output_writer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "output_writer.h"
#include "output.h"
diff --git a/vespalib/src/vespa/vespalib/data/output_writer.h b/vespalib/src/vespa/vespalib/data/output_writer.h
index 1e8afac0dfa..c95f13ad704 100644
--- a/vespalib/src/vespa/vespalib/data/output_writer.h
+++ b/vespalib/src/vespa/vespalib/data/output_writer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/simple_buffer.cpp b/vespalib/src/vespa/vespalib/data/simple_buffer.cpp
index 7e3c5022fc5..38692552575 100644
--- a/vespalib/src/vespa/vespalib/data/simple_buffer.cpp
+++ b/vespalib/src/vespa/vespalib/data/simple_buffer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simple_buffer.h"
#include <cassert>
diff --git a/vespalib/src/vespa/vespalib/data/simple_buffer.h b/vespalib/src/vespa/vespalib/data/simple_buffer.h
index 3bcb43a3856..f91235894ae 100644
--- a/vespalib/src/vespa/vespalib/data/simple_buffer.h
+++ b/vespalib/src/vespa/vespalib/data/simple_buffer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/CMakeLists.txt b/vespalib/src/vespa/vespalib/data/slime/CMakeLists.txt
index 46a8d410878..bccd94cb2c1 100644
--- a/vespalib/src/vespa/vespalib/data/slime/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/data/slime/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalib_vespalib_data_slime OBJECT
SOURCES
array_traverser.cpp
diff --git a/vespalib/src/vespa/vespalib/data/slime/array_traverser.cpp b/vespalib/src/vespa/vespalib/data/slime/array_traverser.cpp
index bbf967c9f4d..c6a35644a01 100644
--- a/vespalib/src/vespa/vespalib/data/slime/array_traverser.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/array_traverser.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "array_traverser.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/array_traverser.h b/vespalib/src/vespa/vespalib/data/slime/array_traverser.h
index 534aa42b58c..0255149cd36 100644
--- a/vespalib/src/vespa/vespalib/data/slime/array_traverser.h
+++ b/vespalib/src/vespa/vespalib/data/slime/array_traverser.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/array_value.cpp b/vespalib/src/vespa/vespalib/data/slime/array_value.cpp
index e34c352b4fd..9505742dd25 100644
--- a/vespalib/src/vespa/vespalib/data/slime/array_value.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/array_value.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "array_value.h"
#include "array_traverser.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/array_value.h b/vespalib/src/vespa/vespalib/data/slime/array_value.h
index 99b00b884b0..b1b257e8476 100644
--- a/vespalib/src/vespa/vespalib/data/slime/array_value.h
+++ b/vespalib/src/vespa/vespalib/data/slime/array_value.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/basic_value.cpp b/vespalib/src/vespa/vespalib/data/slime/basic_value.cpp
index 9e96cd7bcf6..46525c4e6bd 100644
--- a/vespalib/src/vespa/vespalib/data/slime/basic_value.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/basic_value.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "basic_value.h"
#include <vespa/vespalib/util/stash.h>
diff --git a/vespalib/src/vespa/vespalib/data/slime/basic_value.h b/vespalib/src/vespa/vespalib/data/slime/basic_value.h
index 20183999d8f..43adc39be60 100644
--- a/vespalib/src/vespa/vespalib/data/slime/basic_value.h
+++ b/vespalib/src/vespa/vespalib/data/slime/basic_value.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/basic_value_factory.cpp b/vespalib/src/vespa/vespalib/data/slime/basic_value_factory.cpp
index df87921557b..db9c21ba0a6 100644
--- a/vespalib/src/vespa/vespalib/data/slime/basic_value_factory.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/basic_value_factory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "basic_value_factory.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/basic_value_factory.h b/vespalib/src/vespa/vespalib/data/slime/basic_value_factory.h
index e7b2a9dd806..4fa10fa70f1 100644
--- a/vespalib/src/vespa/vespalib/data/slime/basic_value_factory.h
+++ b/vespalib/src/vespa/vespalib/data/slime/basic_value_factory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/binary_format.cpp b/vespalib/src/vespa/vespalib/data/slime/binary_format.cpp
index 2eb6173b1e5..947dbce7ba0 100644
--- a/vespalib/src/vespa/vespalib/data/slime/binary_format.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/binary_format.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "binary_format.h"
#include "slime.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/binary_format.h b/vespalib/src/vespa/vespalib/data/slime/binary_format.h
index 5c653207420..33355a3773b 100644
--- a/vespalib/src/vespa/vespalib/data/slime/binary_format.h
+++ b/vespalib/src/vespa/vespalib/data/slime/binary_format.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/convenience.cpp b/vespalib/src/vespa/vespalib/data/slime/convenience.cpp
index 56592f06151..efd1af773a1 100644
--- a/vespalib/src/vespa/vespalib/data/slime/convenience.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/convenience.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "convenience.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/convenience.h b/vespalib/src/vespa/vespalib/data/slime/convenience.h
index 0f68bb8257b..daed574ca77 100644
--- a/vespalib/src/vespa/vespalib/data/slime/convenience.h
+++ b/vespalib/src/vespa/vespalib/data/slime/convenience.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/cursor.cpp b/vespalib/src/vespa/vespalib/data/slime/cursor.cpp
index f34b49d8621..3f5090abf51 100644
--- a/vespalib/src/vespa/vespalib/data/slime/cursor.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/cursor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "cursor.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/cursor.h b/vespalib/src/vespa/vespalib/data/slime/cursor.h
index 6f926de85b6..a58f38c6315 100644
--- a/vespalib/src/vespa/vespalib/data/slime/cursor.h
+++ b/vespalib/src/vespa/vespalib/data/slime/cursor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/empty_value_factory.cpp b/vespalib/src/vespa/vespalib/data/slime/empty_value_factory.cpp
index f6573ad26c4..25a0ed2c1ab 100644
--- a/vespalib/src/vespa/vespalib/data/slime/empty_value_factory.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/empty_value_factory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "empty_value_factory.h"
#include "object_value.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/empty_value_factory.h b/vespalib/src/vespa/vespalib/data/slime/empty_value_factory.h
index c92b7ed1c68..dd13bb41f1f 100644
--- a/vespalib/src/vespa/vespalib/data/slime/empty_value_factory.h
+++ b/vespalib/src/vespa/vespalib/data/slime/empty_value_factory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/external_data_value.cpp b/vespalib/src/vespa/vespalib/data/slime/external_data_value.cpp
index 1004f8aab24..1bfec40b348 100644
--- a/vespalib/src/vespa/vespalib/data/slime/external_data_value.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/external_data_value.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "external_data_value.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/external_data_value.h b/vespalib/src/vespa/vespalib/data/slime/external_data_value.h
index 3acfb1350bd..f67d8135a3d 100644
--- a/vespalib/src/vespa/vespalib/data/slime/external_data_value.h
+++ b/vespalib/src/vespa/vespalib/data/slime/external_data_value.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/external_data_value_factory.cpp b/vespalib/src/vespa/vespalib/data/slime/external_data_value_factory.cpp
index 592ddcdb519..a96da032b85 100644
--- a/vespalib/src/vespa/vespalib/data/slime/external_data_value_factory.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/external_data_value_factory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "external_data_value_factory.h"
#include "external_data_value.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/external_data_value_factory.h b/vespalib/src/vespa/vespalib/data/slime/external_data_value_factory.h
index be85f28aebe..b8a85f63084 100644
--- a/vespalib/src/vespa/vespalib/data/slime/external_data_value_factory.h
+++ b/vespalib/src/vespa/vespalib/data/slime/external_data_value_factory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/external_memory.cpp b/vespalib/src/vespa/vespalib/data/slime/external_memory.cpp
index 3ffe4102d67..e59738983b3 100644
--- a/vespalib/src/vespa/vespalib/data/slime/external_memory.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/external_memory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "external_memory.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/external_memory.h b/vespalib/src/vespa/vespalib/data/slime/external_memory.h
index aafbb8efcb8..1a7dd85d15b 100644
--- a/vespalib/src/vespa/vespalib/data/slime/external_memory.h
+++ b/vespalib/src/vespa/vespalib/data/slime/external_memory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/inject.cpp b/vespalib/src/vespa/vespalib/data/slime/inject.cpp
index 610d0e0041b..aef242b1d07 100644
--- a/vespalib/src/vespa/vespalib/data/slime/inject.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/inject.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "inject.h"
#include "cursor.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/inject.h b/vespalib/src/vespa/vespalib/data/slime/inject.h
index e7d67c1f94c..02127d73f3e 100644
--- a/vespalib/src/vespa/vespalib/data/slime/inject.h
+++ b/vespalib/src/vespa/vespalib/data/slime/inject.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/inserter.cpp b/vespalib/src/vespa/vespalib/data/slime/inserter.cpp
index 7e64800eefc..94be5d41465 100644
--- a/vespalib/src/vespa/vespalib/data/slime/inserter.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/inserter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "inserter.h"
#include "slime.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/inserter.h b/vespalib/src/vespa/vespalib/data/slime/inserter.h
index deddb5671c3..2334f5d64b5 100644
--- a/vespalib/src/vespa/vespalib/data/slime/inserter.h
+++ b/vespalib/src/vespa/vespalib/data/slime/inserter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/inspector.cpp b/vespalib/src/vespa/vespalib/data/slime/inspector.cpp
index b4e4118f74d..2302aec873b 100644
--- a/vespalib/src/vespa/vespalib/data/slime/inspector.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/inspector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "inspector.h"
#include "object_traverser.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/inspector.h b/vespalib/src/vespa/vespalib/data/slime/inspector.h
index 1d8250785d2..f8f6b8b6dee 100644
--- a/vespalib/src/vespa/vespalib/data/slime/inspector.h
+++ b/vespalib/src/vespa/vespalib/data/slime/inspector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/json_format.cpp b/vespalib/src/vespa/vespalib/data/slime/json_format.cpp
index 080e3b8da48..b0c66d4cb88 100644
--- a/vespalib/src/vespa/vespalib/data/slime/json_format.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/json_format.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "strfmt.h"
#include "json_format.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/json_format.h b/vespalib/src/vespa/vespalib/data/slime/json_format.h
index e12aa452a98..fcb3b9d448d 100644
--- a/vespalib/src/vespa/vespalib/data/slime/json_format.h
+++ b/vespalib/src/vespa/vespalib/data/slime/json_format.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/make_dist.sh b/vespalib/src/vespa/vespalib/data/slime/make_dist.sh
index 28b6e5fd311..9af955b6875 100755
--- a/vespalib/src/vespa/vespalib/data/slime/make_dist.sh
+++ b/vespalib/src/vespa/vespalib/data/slime/make_dist.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
echo "generating Slime Mobile Edition ..."
diff --git a/vespalib/src/vespa/vespalib/data/slime/named_symbol_inserter.cpp b/vespalib/src/vespa/vespalib/data/slime/named_symbol_inserter.cpp
index 6bc7f41f626..6905b7034c7 100644
--- a/vespalib/src/vespa/vespalib/data/slime/named_symbol_inserter.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/named_symbol_inserter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "named_symbol_inserter.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/named_symbol_inserter.h b/vespalib/src/vespa/vespalib/data/slime/named_symbol_inserter.h
index 9752040d3e8..e8bc939332a 100644
--- a/vespalib/src/vespa/vespalib/data/slime/named_symbol_inserter.h
+++ b/vespalib/src/vespa/vespalib/data/slime/named_symbol_inserter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/named_symbol_lookup.cpp b/vespalib/src/vespa/vespalib/data/slime/named_symbol_lookup.cpp
index 0abec18b118..4a0a129ebff 100644
--- a/vespalib/src/vespa/vespalib/data/slime/named_symbol_lookup.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/named_symbol_lookup.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "named_symbol_lookup.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/named_symbol_lookup.h b/vespalib/src/vespa/vespalib/data/slime/named_symbol_lookup.h
index 9027625dd9d..685592039cf 100644
--- a/vespalib/src/vespa/vespalib/data/slime/named_symbol_lookup.h
+++ b/vespalib/src/vespa/vespalib/data/slime/named_symbol_lookup.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/nix_value.cpp b/vespalib/src/vespa/vespalib/data/slime/nix_value.cpp
index 1d291e66059..5c7a65e2101 100644
--- a/vespalib/src/vespa/vespalib/data/slime/nix_value.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/nix_value.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "nix_value.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/nix_value.h b/vespalib/src/vespa/vespalib/data/slime/nix_value.h
index 0524e39507e..d232b227cf1 100644
--- a/vespalib/src/vespa/vespalib/data/slime/nix_value.h
+++ b/vespalib/src/vespa/vespalib/data/slime/nix_value.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/object_traverser.cpp b/vespalib/src/vespa/vespalib/data/slime/object_traverser.cpp
index bf14de368fc..8f20bcaab5f 100644
--- a/vespalib/src/vespa/vespalib/data/slime/object_traverser.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/object_traverser.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "object_traverser.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/object_traverser.h b/vespalib/src/vespa/vespalib/data/slime/object_traverser.h
index e59cb911a74..77ace305f67 100644
--- a/vespalib/src/vespa/vespalib/data/slime/object_traverser.h
+++ b/vespalib/src/vespa/vespalib/data/slime/object_traverser.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/object_value.cpp b/vespalib/src/vespa/vespalib/data/slime/object_value.cpp
index 25a5d762825..e8434834d9c 100644
--- a/vespalib/src/vespa/vespalib/data/slime/object_value.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/object_value.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "object_value.h"
#include "object_traverser.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/object_value.h b/vespalib/src/vespa/vespalib/data/slime/object_value.h
index a26027f9e0d..c89ad22f62a 100644
--- a/vespalib/src/vespa/vespalib/data/slime/object_value.h
+++ b/vespalib/src/vespa/vespalib/data/slime/object_value.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/resolved_symbol.cpp b/vespalib/src/vespa/vespalib/data/slime/resolved_symbol.cpp
index f3a733d7164..38d65db0fd8 100644
--- a/vespalib/src/vespa/vespalib/data/slime/resolved_symbol.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/resolved_symbol.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "resolved_symbol.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/resolved_symbol.h b/vespalib/src/vespa/vespalib/data/slime/resolved_symbol.h
index 714230bdf94..c6b09ea11b7 100644
--- a/vespalib/src/vespa/vespalib/data/slime/resolved_symbol.h
+++ b/vespalib/src/vespa/vespalib/data/slime/resolved_symbol.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/root_value.cpp b/vespalib/src/vespa/vespalib/data/slime/root_value.cpp
index f910c6ac4cf..835537dac4a 100644
--- a/vespalib/src/vespa/vespalib/data/slime/root_value.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/root_value.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "root_value.h"
#include "object_value.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/root_value.h b/vespalib/src/vespa/vespalib/data/slime/root_value.h
index ed1c97b7d60..b61325e9cd0 100644
--- a/vespalib/src/vespa/vespalib/data/slime/root_value.h
+++ b/vespalib/src/vespa/vespalib/data/slime/root_value.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/slime.cpp b/vespalib/src/vespa/vespalib/data/slime/slime.cpp
index ad6344ced8c..3afcb192f9d 100644
--- a/vespalib/src/vespa/vespalib/data/slime/slime.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/slime.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "slime.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/slime.h b/vespalib/src/vespa/vespalib/data/slime/slime.h
index ee3222b2e8d..6a977b009a4 100644
--- a/vespalib/src/vespa/vespalib/data/slime/slime.h
+++ b/vespalib/src/vespa/vespalib/data/slime/slime.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/strfmt.cpp b/vespalib/src/vespa/vespalib/data/slime/strfmt.cpp
index d0dd14e94f9..bebab35bb55 100644
--- a/vespalib/src/vespa/vespalib/data/slime/strfmt.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/strfmt.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "strfmt.h"
#include <stdarg.h>
diff --git a/vespalib/src/vespa/vespalib/data/slime/strfmt.h b/vespalib/src/vespa/vespalib/data/slime/strfmt.h
index 367491adff5..e1a24ce505d 100644
--- a/vespalib/src/vespa/vespalib/data/slime/strfmt.h
+++ b/vespalib/src/vespa/vespalib/data/slime/strfmt.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/symbol.cpp b/vespalib/src/vespa/vespalib/data/slime/symbol.cpp
index 73000ae6b91..076154d6e6a 100644
--- a/vespalib/src/vespa/vespalib/data/slime/symbol.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/symbol.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "symbol.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/symbol.h b/vespalib/src/vespa/vespalib/data/slime/symbol.h
index 020fc8bc827..3bce727fad9 100644
--- a/vespalib/src/vespa/vespalib/data/slime/symbol.h
+++ b/vespalib/src/vespa/vespalib/data/slime/symbol.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/symbol_inserter.cpp b/vespalib/src/vespa/vespalib/data/slime/symbol_inserter.cpp
index 2cb3e2daa70..a56dc8c1db5 100644
--- a/vespalib/src/vespa/vespalib/data/slime/symbol_inserter.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/symbol_inserter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "symbol_inserter.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/symbol_inserter.h b/vespalib/src/vespa/vespalib/data/slime/symbol_inserter.h
index 3d993988f84..4858a115b80 100644
--- a/vespalib/src/vespa/vespalib/data/slime/symbol_inserter.h
+++ b/vespalib/src/vespa/vespalib/data/slime/symbol_inserter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/symbol_lookup.cpp b/vespalib/src/vespa/vespalib/data/slime/symbol_lookup.cpp
index c29b8b0bfa6..d40e2d2bd03 100644
--- a/vespalib/src/vespa/vespalib/data/slime/symbol_lookup.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/symbol_lookup.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "symbol_lookup.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/symbol_lookup.h b/vespalib/src/vespa/vespalib/data/slime/symbol_lookup.h
index 8e8c531b1c7..092d3334836 100644
--- a/vespalib/src/vespa/vespalib/data/slime/symbol_lookup.h
+++ b/vespalib/src/vespa/vespalib/data/slime/symbol_lookup.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/symbol_table.cpp b/vespalib/src/vespa/vespalib/data/slime/symbol_table.cpp
index a7de28932f3..a3313516c64 100644
--- a/vespalib/src/vespa/vespalib/data/slime/symbol_table.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/symbol_table.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "symbol_table.h"
#include <vespa/vespalib/stllike/hash_map.hpp>
diff --git a/vespalib/src/vespa/vespalib/data/slime/symbol_table.h b/vespalib/src/vespa/vespalib/data/slime/symbol_table.h
index 30599d76597..40200faaca7 100644
--- a/vespalib/src/vespa/vespalib/data/slime/symbol_table.h
+++ b/vespalib/src/vespa/vespalib/data/slime/symbol_table.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/type.cpp b/vespalib/src/vespa/vespalib/data/slime/type.cpp
index fba7836ab16..651bd2cc802 100644
--- a/vespalib/src/vespa/vespalib/data/slime/type.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/type.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "type.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/type.h b/vespalib/src/vespa/vespalib/data/slime/type.h
index b508a59d14e..915e80ca7f7 100644
--- a/vespalib/src/vespa/vespalib/data/slime/type.h
+++ b/vespalib/src/vespa/vespalib/data/slime/type.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/value.cpp b/vespalib/src/vespa/vespalib/data/slime/value.cpp
index f7c37d73652..1844bc4f4b9 100644
--- a/vespalib/src/vespa/vespalib/data/slime/value.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/value.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "value.h"
#include "nix_value.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/value.h b/vespalib/src/vespa/vespalib/data/slime/value.h
index 930c182924e..8ac62f1d97c 100644
--- a/vespalib/src/vespa/vespalib/data/slime/value.h
+++ b/vespalib/src/vespa/vespalib/data/slime/value.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/slime/value_factory.cpp b/vespalib/src/vespa/vespalib/data/slime/value_factory.cpp
index 70088e8ca80..e6e9329b410 100644
--- a/vespalib/src/vespa/vespalib/data/slime/value_factory.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/value_factory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "value_factory.h"
diff --git a/vespalib/src/vespa/vespalib/data/slime/value_factory.h b/vespalib/src/vespa/vespalib/data/slime/value_factory.h
index b3072778f2a..238ddd21c36 100644
--- a/vespalib/src/vespa/vespalib/data/slime/value_factory.h
+++ b/vespalib/src/vespa/vespalib/data/slime/value_factory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/smart_buffer.cpp b/vespalib/src/vespa/vespalib/data/smart_buffer.cpp
index 4c3a3e6f379..c0ccc9177da 100644
--- a/vespalib/src/vespa/vespalib/data/smart_buffer.cpp
+++ b/vespalib/src/vespa/vespalib/data/smart_buffer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "smart_buffer.h"
#include <cassert>
diff --git a/vespalib/src/vespa/vespalib/data/smart_buffer.h b/vespalib/src/vespa/vespalib/data/smart_buffer.h
index c63c948b07d..eb817e71bbf 100644
--- a/vespalib/src/vespa/vespalib/data/smart_buffer.h
+++ b/vespalib/src/vespa/vespalib/data/smart_buffer.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/data/writable_memory.cpp b/vespalib/src/vespa/vespalib/data/writable_memory.cpp
index 92f7c122095..c42795247d0 100644
--- a/vespalib/src/vespa/vespalib/data/writable_memory.cpp
+++ b/vespalib/src/vespa/vespalib/data/writable_memory.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "writable_memory.h"
diff --git a/vespalib/src/vespa/vespalib/data/writable_memory.h b/vespalib/src/vespa/vespalib/data/writable_memory.h
index 682ab34c021..81c70eba7e7 100644
--- a/vespalib/src/vespa/vespalib/data/writable_memory.h
+++ b/vespalib/src/vespa/vespalib/data/writable_memory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/CMakeLists.txt b/vespalib/src/vespa/vespalib/datastore/CMakeLists.txt
index b028a040f8d..6c6f5258555 100644
--- a/vespalib/src/vespa/vespalib/datastore/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/datastore/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalib_vespalib_datastore OBJECT
SOURCES
array_store.cpp
diff --git a/vespalib/src/vespa/vespalib/datastore/allocator.h b/vespalib/src/vespa/vespalib/datastore/allocator.h
index 30755a50716..297270af0f5 100644
--- a/vespalib/src/vespa/vespalib/datastore/allocator.h
+++ b/vespalib/src/vespa/vespalib/datastore/allocator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/allocator.hpp b/vespalib/src/vespa/vespalib/datastore/allocator.hpp
index a5ebed3f3fc..9b69be49b8e 100644
--- a/vespalib/src/vespa/vespalib/datastore/allocator.hpp
+++ b/vespalib/src/vespa/vespalib/datastore/allocator.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/array_store.cpp b/vespalib/src/vespa/vespalib/datastore/array_store.cpp
index 9ff9e3c10bb..0e03b36d2f9 100644
--- a/vespalib/src/vespa/vespalib/datastore/array_store.cpp
+++ b/vespalib/src/vespa/vespalib/datastore/array_store.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "array_store.hpp"
#include "buffer_type.hpp"
diff --git a/vespalib/src/vespa/vespalib/datastore/array_store.h b/vespalib/src/vespa/vespalib/datastore/array_store.h
index 37f09b26205..3ba0caae5b9 100644
--- a/vespalib/src/vespa/vespalib/datastore/array_store.h
+++ b/vespalib/src/vespa/vespalib/datastore/array_store.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/array_store.hpp b/vespalib/src/vespa/vespalib/datastore/array_store.hpp
index 5409c21594c..5600c64eb3d 100644
--- a/vespalib/src/vespa/vespalib/datastore/array_store.hpp
+++ b/vespalib/src/vespa/vespalib/datastore/array_store.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -157,6 +157,20 @@ public:
}
}
}
+ void compact(vespalib::ArrayRef<AtomicEntryRef> refs) override {
+ if (!_bufferIdsToCompact.empty()) {
+ for (auto &ref : refs) {
+ if (ref.load_relaxed().valid()) {
+ RefT internalRef(ref.load_relaxed());
+ if (compactingBuffer(internalRef.bufferId())) {
+ EntryRef newRef = _store.add(_store.get(ref.load_relaxed()));
+ std::atomic_thread_fence(std::memory_order_release);
+ ref.store_release(newRef);
+ }
+ }
+ }
+ }
+ }
};
}
diff --git a/vespalib/src/vespa/vespalib/datastore/array_store_config.cpp b/vespalib/src/vespa/vespalib/datastore/array_store_config.cpp
index 21d7ed9f114..ec51f5813ac 100644
--- a/vespalib/src/vespa/vespalib/datastore/array_store_config.cpp
+++ b/vespalib/src/vespa/vespalib/datastore/array_store_config.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "array_store_config.h"
#include <cassert>
diff --git a/vespalib/src/vespa/vespalib/datastore/array_store_config.h b/vespalib/src/vespa/vespalib/datastore/array_store_config.h
index 64c5b8df5ee..36f52154b7b 100644
--- a/vespalib/src/vespa/vespalib/datastore/array_store_config.h
+++ b/vespalib/src/vespa/vespalib/datastore/array_store_config.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/buffer_type.cpp b/vespalib/src/vespa/vespalib/datastore/buffer_type.cpp
index 22e44fe665d..372370bc2d5 100644
--- a/vespalib/src/vespa/vespalib/datastore/buffer_type.cpp
+++ b/vespalib/src/vespa/vespalib/datastore/buffer_type.cpp
@@ -1,8 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "atomic_entry_ref.h"
#include "buffer_type.hpp"
#include <cassert>
+#include <cmath>
namespace vespalib::datastore {
@@ -31,10 +32,10 @@ BufferTypeBase::BufferTypeBase(uint32_t arraySize,
_maxArrays(maxArrays),
_numArraysForNewBuffer(std::min(numArraysForNewBuffer, maxArrays)),
_allocGrowFactor(allocGrowFactor),
- _activeBuffers(0),
_holdBuffers(0),
_holdUsedElems(0),
- _aggr_counts()
+ _aggr_counts(),
+ _active_buffers()
{
}
@@ -47,10 +48,10 @@ BufferTypeBase::BufferTypeBase(uint32_t arraySize,
BufferTypeBase::~BufferTypeBase()
{
- assert(_activeBuffers == 0);
assert(_holdBuffers == 0);
assert(_holdUsedElems == 0);
assert(_aggr_counts.empty());
+ assert(_active_buffers.empty());
}
ElemCount
@@ -62,8 +63,9 @@ BufferTypeBase::getReservedElements(uint32_t bufferId) const
void
BufferTypeBase::onActive(uint32_t bufferId, ElemCount* usedElems, ElemCount* deadElems, void* buffer)
{
- ++_activeBuffers;
_aggr_counts.add_buffer(usedElems, deadElems);
+ assert(std::find(_active_buffers.begin(), _active_buffers.end(), bufferId) == _active_buffers.end());
+ _active_buffers.emplace_back(bufferId);
size_t reservedElems = getReservedElements(bufferId);
if (reservedElems != 0u) {
initializeReservedElements(buffer, reservedElems);
@@ -73,10 +75,12 @@ BufferTypeBase::onActive(uint32_t bufferId, ElemCount* usedElems, ElemCount* dea
}
void
-BufferTypeBase::onHold(const ElemCount* usedElems, const ElemCount* deadElems)
+BufferTypeBase::onHold(uint32_t buffer_id, const ElemCount* usedElems, const ElemCount* deadElems)
{
- --_activeBuffers;
++_holdBuffers;
+ auto itr = std::find(_active_buffers.begin(), _active_buffers.end(), buffer_id);
+ assert(itr != _active_buffers.end());
+ _active_buffers.erase(itr);
_aggr_counts.remove_buffer(usedElems, deadElems);
_holdUsedElems += *usedElems;
}
@@ -89,6 +93,17 @@ BufferTypeBase::onFree(ElemCount usedElems)
_holdUsedElems -= usedElems;
}
+void
+BufferTypeBase::resume_primary_buffer(uint32_t buffer_id, ElemCount* used_elems, ElemCount* dead_elems)
+{
+ auto itr = std::find(_active_buffers.begin(), _active_buffers.end(), buffer_id);
+ assert(itr != _active_buffers.end());
+ _active_buffers.erase(itr);
+ _active_buffers.emplace_back(buffer_id);
+ _aggr_counts.remove_buffer(used_elems, dead_elems);
+ _aggr_counts.add_buffer(used_elems, dead_elems);
+}
+
const alloc::MemoryAllocator*
BufferTypeBase::get_memory_allocator() const
{
@@ -107,22 +122,22 @@ size_t
BufferTypeBase::calcArraysToAlloc(uint32_t bufferId, ElemCount elemsNeeded, bool resizing) const
{
size_t reservedElems = getReservedElements(bufferId);
+ BufferCounts last_bc;
BufferCounts bc;
if (resizing) {
if (!_aggr_counts.empty()) {
- bc = _aggr_counts.last_buffer();
+ last_bc = _aggr_counts.last_buffer();
}
- } else {
- bc = _aggr_counts.all_buffers();
}
+ bc = _aggr_counts.all_buffers();
assert((bc.used_elems % _arraySize) == 0);
assert((bc.dead_elems % _arraySize) == 0);
assert(bc.used_elems >= bc.dead_elems);
- size_t neededArrays = (elemsNeeded + (resizing ? bc.used_elems : reservedElems) + _arraySize - 1) / _arraySize;
+ size_t neededArrays = (elemsNeeded + (resizing ? last_bc.used_elems : reservedElems) + _arraySize - 1) / _arraySize;
size_t liveArrays = (bc.used_elems - bc.dead_elems) / _arraySize;
size_t growArrays = (liveArrays * _allocGrowFactor);
- size_t usedArrays = bc.used_elems / _arraySize;
+ size_t usedArrays = last_bc.used_elems / _arraySize;
size_t wantedArrays = std::max((resizing ? usedArrays : 0u) + growArrays,
static_cast<size_t>(_minArrays));
@@ -137,6 +152,21 @@ BufferTypeBase::calcArraysToAlloc(uint32_t bufferId, ElemCount elemsNeeded, bool
return result;
}
+uint32_t
+BufferTypeBase::get_scaled_num_arrays_for_new_buffer() const
+{
+ uint32_t active_buffers_count = get_active_buffers_count();
+ if (active_buffers_count <= 1u || _numArraysForNewBuffer == 0u) {
+ return _numArraysForNewBuffer;
+ }
+ double scale_factor = std::pow(1.0 + _allocGrowFactor, active_buffers_count - 1);
+ double scaled_result = _numArraysForNewBuffer * scale_factor;
+ if (scaled_result >= _maxArrays) {
+ return _maxArrays;
+ }
+ return scaled_result;
+}
+
BufferTypeBase::AggregatedBufferCounts::AggregatedBufferCounts()
: _counts()
{
diff --git a/vespalib/src/vespa/vespalib/datastore/buffer_type.h b/vespalib/src/vespa/vespalib/datastore/buffer_type.h
index c901025e69c..7d041646ca5 100644
--- a/vespalib/src/vespa/vespalib/datastore/buffer_type.h
+++ b/vespalib/src/vespa/vespalib/datastore/buffer_type.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -61,8 +61,9 @@ public:
virtual void cleanHold(void *buffer, size_t offset, ElemCount numElems, CleanContext cleanCtx) = 0;
size_t getArraySize() const { return _arraySize; }
virtual void onActive(uint32_t bufferId, ElemCount* usedElems, ElemCount* deadElems, void* buffer);
- void onHold(const ElemCount* usedElems, const ElemCount* deadElems);
+ void onHold(uint32_t buffer_id, const ElemCount* usedElems, const ElemCount* deadElems);
virtual void onFree(ElemCount usedElems);
+ void resume_primary_buffer(uint32_t buffer_id, ElemCount* used_elems, ElemCount* dead_elems);
virtual const alloc::MemoryAllocator* get_memory_allocator() const;
/**
@@ -72,9 +73,11 @@ public:
void clampMaxArrays(uint32_t maxArrays);
- uint32_t getActiveBuffers() const { return _activeBuffers; }
+ uint32_t get_active_buffers_count() const { return _active_buffers.size(); }
+ const std::vector<uint32_t>& get_active_buffers() const noexcept { return _active_buffers; }
size_t getMaxArrays() const { return _maxArrays; }
- uint32_t getNumArraysForNewBuffer() const { return _numArraysForNewBuffer; }
+ uint32_t get_scaled_num_arrays_for_new_buffer() const;
+ uint32_t get_num_arrays_for_new_buffer() const noexcept { return _numArraysForNewBuffer; }
protected:
struct BufferCounts {
@@ -120,6 +123,7 @@ protected:
uint32_t _holdBuffers;
size_t _holdUsedElems; // Number of used elements in all held buffers for this type.
AggregatedBufferCounts _aggr_counts;
+ std::vector<uint32_t> _active_buffers;
};
/**
diff --git a/vespalib/src/vespa/vespalib/datastore/buffer_type.hpp b/vespalib/src/vespa/vespalib/datastore/buffer_type.hpp
index 502008ec842..ae2659ef65b 100644
--- a/vespalib/src/vespa/vespalib/datastore/buffer_type.hpp
+++ b/vespalib/src/vespa/vespalib/datastore/buffer_type.hpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/bufferstate.cpp b/vespalib/src/vespa/vespalib/datastore/bufferstate.cpp
index 68606c5ea19..df5e350c8dd 100644
--- a/vespalib/src/vespa/vespalib/datastore/bufferstate.cpp
+++ b/vespalib/src/vespa/vespalib/datastore/bufferstate.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bufferstate.h"
#include <vespa/vespalib/util/memory_allocator.h>
@@ -138,7 +138,7 @@ BufferState::onActive(uint32_t bufferId, uint32_t typeId,
void
-BufferState::onHold()
+BufferState::onHold(uint32_t buffer_id)
{
assert(_state == ACTIVE);
assert(_typeHandler != nullptr);
@@ -148,7 +148,7 @@ BufferState::onHold()
assert(_holdElems <= (_usedElems - _deadElems));
_deadElems = 0;
_holdElems = _usedElems; // Put everyting on hold
- _typeHandler->onHold(&_usedElems, &_deadElems);
+ _typeHandler->onHold(buffer_id, &_usedElems, &_deadElems);
if ( ! isFreeListEmpty()) {
removeFromFreeListList();
FreeList().swap(_freeList);
@@ -191,7 +191,7 @@ BufferState::onFree(void *&buffer)
void
-BufferState::dropBuffer(void *&buffer)
+BufferState::dropBuffer(uint32_t buffer_id, void *&buffer)
{
if (_state == FREE) {
assert(buffer == nullptr);
@@ -199,7 +199,7 @@ BufferState::dropBuffer(void *&buffer)
}
assert(buffer != nullptr || _allocElems == 0);
if (_state == ACTIVE) {
- onHold();
+ onHold(buffer_id);
}
if (_state == HOLD) {
onFree(buffer);
@@ -301,5 +301,11 @@ BufferState::fallbackResize(uint32_t bufferId,
std::atomic_thread_fence(std::memory_order_release);
}
+void
+BufferState::resume_primary_buffer(uint32_t buffer_id)
+{
+ _typeHandler->resume_primary_buffer(buffer_id, &_usedElems, &_deadElems);
+}
+
}
diff --git a/vespalib/src/vespa/vespalib/datastore/bufferstate.h b/vespalib/src/vespa/vespalib/datastore/bufferstate.h
index f8738f17daa..ee06c928f54 100644
--- a/vespalib/src/vespa/vespalib/datastore/bufferstate.h
+++ b/vespalib/src/vespa/vespalib/datastore/bufferstate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -99,7 +99,7 @@ public:
/**
* Transition from ACTIVE to HOLD state.
*/
- void onHold();
+ void onHold(uint32_t buffer_id);
/**
* Transition from HOLD to FREE state.
@@ -157,7 +157,7 @@ public:
void cleanHold(void *buffer, size_t offset, ElemCount numElems) {
_typeHandler->cleanHold(buffer, offset, numElems, BufferTypeBase::CleanContext(_extraUsedBytes, _extraHoldBytes));
}
- void dropBuffer(void *&buffer);
+ void dropBuffer(uint32_t buffer_id, void *&buffer);
uint32_t getTypeId() const { return _typeId; }
uint32_t getArraySize() const { return _arraySize; }
size_t getDeadElems() const { return _deadElems; }
@@ -192,6 +192,7 @@ public:
FreeList &freeList() { return _freeList; }
const FreeListList *freeListList() const { return _freeListList; }
FreeListList *freeListList() { return _freeListList; }
+ void resume_primary_buffer(uint32_t buffer_id);
};
diff --git a/vespalib/src/vespa/vespalib/datastore/datastore.cpp b/vespalib/src/vespa/vespalib/datastore/datastore.cpp
index 1b2b010c4ed..1c68b79453e 100644
--- a/vespalib/src/vespa/vespalib/datastore/datastore.cpp
+++ b/vespalib/src/vespa/vespalib/datastore/datastore.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "datastore.h"
#include "datastore.hpp"
diff --git a/vespalib/src/vespa/vespalib/datastore/datastore.h b/vespalib/src/vespa/vespalib/datastore/datastore.h
index fa8e734b005..d8bb0fb3d0f 100644
--- a/vespalib/src/vespa/vespalib/datastore/datastore.h
+++ b/vespalib/src/vespa/vespalib/datastore/datastore.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/datastore.hpp b/vespalib/src/vespa/vespalib/datastore/datastore.hpp
index dd99b025907..81027196a75 100644
--- a/vespalib/src/vespa/vespalib/datastore/datastore.hpp
+++ b/vespalib/src/vespa/vespalib/datastore/datastore.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/datastorebase.cpp b/vespalib/src/vespa/vespalib/datastore/datastorebase.cpp
index cce0b0695c2..b5cab50bc33 100644
--- a/vespalib/src/vespa/vespalib/datastore/datastorebase.cpp
+++ b/vespalib/src/vespa/vespalib/datastore/datastorebase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "datastore.h"
#include <vespa/vespalib/util/array.hpp>
@@ -120,17 +120,64 @@ DataStoreBase::switch_primary_buffer(uint32_t typeId, size_t elemsNeeded)
_primary_buffer_ids[typeId] = buffer_id;
}
+bool
+DataStoreBase::consider_grow_active_buffer(uint32_t type_id, size_t elems_needed)
+{
+ auto type_handler = _typeHandlers[type_id];
+ uint32_t buffer_id = _primary_buffer_ids[type_id];
+ uint32_t active_buffers_count = type_handler->get_active_buffers_count();
+ constexpr uint32_t min_active_buffers = 4u;
+ if (active_buffers_count < min_active_buffers) {
+ return false;
+ }
+ if (type_handler->get_num_arrays_for_new_buffer() == 0u) {
+ return false;
+ }
+ assert(!_states[buffer_id].getCompacting());
+ uint32_t min_buffer_id = buffer_id;
+ size_t min_used = _states[buffer_id].size();
+ uint32_t checked_active_buffers = 1u;
+ for (auto &alt_buffer_id : type_handler->get_active_buffers()) {
+ if (alt_buffer_id != buffer_id && !_states[alt_buffer_id].getCompacting()) {
+ ++checked_active_buffers;
+ if (_states[alt_buffer_id].size() < min_used) {
+ min_buffer_id = alt_buffer_id;
+ min_used = _states[alt_buffer_id].size();
+ }
+ }
+ }
+ if (checked_active_buffers < min_active_buffers) {
+ return false;
+ }
+ auto array_size = type_handler->getArraySize();
+ if (elems_needed + min_used > type_handler->getMaxArrays() * array_size) {
+ return false;
+ }
+ if (min_buffer_id != buffer_id) {
+ // Resume another active buffer for same type as primary buffer
+ _primary_buffer_ids[type_id] = min_buffer_id;
+ _states[min_buffer_id].resume_primary_buffer(min_buffer_id);
+ }
+ return true;
+}
+
void
DataStoreBase::switch_or_grow_primary_buffer(uint32_t typeId, size_t elemsNeeded)
{
auto typeHandler = _typeHandlers[typeId];
uint32_t arraySize = typeHandler->getArraySize();
- size_t numArraysForNewBuffer = typeHandler->getNumArraysForNewBuffer();
+ size_t numArraysForNewBuffer = typeHandler->get_scaled_num_arrays_for_new_buffer();
size_t numEntriesForNewBuffer = numArraysForNewBuffer * arraySize;
uint32_t bufferId = _primary_buffer_ids[typeId];
if (elemsNeeded + _states[bufferId].size() >= numEntriesForNewBuffer) {
- // Don't try to resize existing buffer, new buffer will be large enough
- switch_primary_buffer(typeId, elemsNeeded);
+ if (consider_grow_active_buffer(typeId, elemsNeeded)) {
+ bufferId = _primary_buffer_ids[typeId];
+ if (elemsNeeded > _states[bufferId].remaining()) {
+ fallbackResize(bufferId, elemsNeeded);
+ }
+ } else {
+ switch_primary_buffer(typeId, elemsNeeded);
+ }
} else {
fallbackResize(bufferId, elemsNeeded);
}
@@ -214,7 +261,7 @@ DataStoreBase::dropBuffers()
{
uint32_t numBuffers = _buffers.size();
for (uint32_t bufferId = 0; bufferId < numBuffers; ++bufferId) {
- _states[bufferId].dropBuffer(_buffers[bufferId].getBuffer());
+ _states[bufferId].dropBuffer(bufferId, _buffers[bufferId].getBuffer());
}
_genHolder.clearHoldLists();
}
@@ -234,7 +281,7 @@ DataStoreBase::getMemoryUsage() const
void
DataStoreBase::holdBuffer(uint32_t bufferId)
{
- _states[bufferId].onHold();
+ _states[bufferId].onHold(bufferId);
size_t holdBytes = 0u; // getMemStats() still accounts held buffers
GenerationHeldBase::UP hold(new BufferHold(holdBytes, *this, bufferId));
_genHolder.hold(std::move(hold));
@@ -398,6 +445,7 @@ void
DataStoreBase::finishCompact(const std::vector<uint32_t> &toHold)
{
for (uint32_t bufferId : toHold) {
+ assert(_states[bufferId].getCompacting());
holdBuffer(bufferId);
}
}
@@ -429,13 +477,10 @@ DataStoreBase::startCompactWorstBuffer(uint32_t typeId)
{
uint32_t buffer_id = get_primary_buffer_id(typeId);
const BufferTypeBase *typeHandler = _typeHandlers[typeId];
- assert(typeHandler->getActiveBuffers() >= 1u);
- if (typeHandler->getActiveBuffers() == 1u) {
+ assert(typeHandler->get_active_buffers_count() >= 1u);
+ if (typeHandler->get_active_buffers_count() == 1u) {
// Single active buffer for type, no need for scan
- _states[buffer_id].setCompacting();
- _states[buffer_id].disableElemHoldList();
- disableFreeList(buffer_id);
- switch_primary_buffer(typeId, 0u);
+ markCompacting(buffer_id);
return buffer_id;
}
// Multiple active buffers for type, must perform full scan
@@ -452,6 +497,7 @@ DataStoreBase::startCompactWorstBuffer(uint32_t initWorstBufferId, BufferStateAc
for (uint32_t bufferId = 0; bufferId < _numBuffers; ++bufferId) {
const auto &state = getBufferState(bufferId);
if (filterFunc(state)) {
+ assert(!state.getCompacting());
size_t deadElems = state.getDeadElems() - state.getTypeHandler()->getReservedElements(bufferId);
if (deadElems > worstDeadElems) {
worstBufferId = bufferId;
@@ -472,6 +518,7 @@ DataStoreBase::markCompacting(uint32_t bufferId)
if ((bufferId == buffer_id) || primary_buffer_too_dead(getBufferState(buffer_id))) {
switch_primary_buffer(typeId, 0u);
}
+ assert(!state.getCompacting());
state.setCompacting();
state.disableElemHoldList();
state.setFreeListList(nullptr);
diff --git a/vespalib/src/vespa/vespalib/datastore/datastorebase.h b/vespalib/src/vespa/vespalib/datastore/datastorebase.h
index 5a50dba6a3c..6903ae12c9c 100644
--- a/vespalib/src/vespa/vespalib/datastore/datastorebase.h
+++ b/vespalib/src/vespa/vespalib/datastore/datastorebase.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -232,6 +232,7 @@ public:
*/
void switch_primary_buffer(uint32_t typeId, size_t elemsNeeded);
+ bool consider_grow_active_buffer(uint32_t type_id, size_t elems_needed);
void switch_or_grow_primary_buffer(uint32_t typeId, size_t elemsNeeded);
vespalib::MemoryUsage getMemoryUsage() const;
diff --git a/vespalib/src/vespa/vespalib/datastore/entryref.cpp b/vespalib/src/vespa/vespalib/datastore/entryref.cpp
index 0551e617283..9fe75f205fd 100644
--- a/vespalib/src/vespa/vespalib/datastore/entryref.cpp
+++ b/vespalib/src/vespa/vespalib/datastore/entryref.cpp
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "entryref.hpp"
#include <vespa/vespalib/stllike/asciistream.h>
@@ -8,6 +8,7 @@ namespace vespalib::datastore {
template EntryRefT<24u, 8u>::EntryRefT(size_t, uint32_t);
template EntryRefT<31u, 1u>::EntryRefT(size_t, uint32_t);
template EntryRefT<22u,10u>::EntryRefT(size_t, uint32_t);
+template EntryRefT<20u,12u>::EntryRefT(size_t, uint32_t);
template EntryRefT<19u,13u>::EntryRefT(size_t, uint32_t);
template EntryRefT<18u, 6u>::EntryRefT(size_t, uint32_t);
template EntryRefT<15u,17u>::EntryRefT(size_t, uint32_t);
diff --git a/vespalib/src/vespa/vespalib/datastore/entryref.h b/vespalib/src/vespa/vespalib/datastore/entryref.h
index 01f473fcf17..ddbc677fc18 100644
--- a/vespalib/src/vespa/vespalib/datastore/entryref.h
+++ b/vespalib/src/vespa/vespalib/datastore/entryref.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/entryref.hpp b/vespalib/src/vespa/vespalib/datastore/entryref.hpp
index 34b8d5355e3..ba82b8869b9 100644
--- a/vespalib/src/vespa/vespalib/datastore/entryref.hpp
+++ b/vespalib/src/vespa/vespalib/datastore/entryref.hpp
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/fixed_size_hash_map.cpp b/vespalib/src/vespa/vespalib/datastore/fixed_size_hash_map.cpp
index 18476dc64a5..9f56938f49c 100644
--- a/vespalib/src/vespa/vespalib/datastore/fixed_size_hash_map.cpp
+++ b/vespalib/src/vespa/vespalib/datastore/fixed_size_hash_map.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fixed_size_hash_map.h"
#include "entry_comparator.h"
diff --git a/vespalib/src/vespa/vespalib/datastore/fixed_size_hash_map.h b/vespalib/src/vespa/vespalib/datastore/fixed_size_hash_map.h
index 101dd1bead3..f6990646c0c 100644
--- a/vespalib/src/vespa/vespalib/datastore/fixed_size_hash_map.h
+++ b/vespalib/src/vespa/vespalib/datastore/fixed_size_hash_map.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/free_list_allocator.h b/vespalib/src/vespa/vespalib/datastore/free_list_allocator.h
index ae8b1bb1c72..cf899a76712 100644
--- a/vespalib/src/vespa/vespalib/datastore/free_list_allocator.h
+++ b/vespalib/src/vespa/vespalib/datastore/free_list_allocator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/free_list_allocator.hpp b/vespalib/src/vespa/vespalib/datastore/free_list_allocator.hpp
index c73576a619e..3faae71427e 100644
--- a/vespalib/src/vespa/vespalib/datastore/free_list_allocator.hpp
+++ b/vespalib/src/vespa/vespalib/datastore/free_list_allocator.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/handle.h b/vespalib/src/vespa/vespalib/datastore/handle.h
index 46908325ad9..690e71228d9 100644
--- a/vespalib/src/vespa/vespalib/datastore/handle.h
+++ b/vespalib/src/vespa/vespalib/datastore/handle.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/i_compaction_context.h b/vespalib/src/vespa/vespalib/datastore/i_compaction_context.h
index 72b473adf4a..d4854c4988b 100644
--- a/vespalib/src/vespa/vespalib/datastore/i_compaction_context.h
+++ b/vespalib/src/vespa/vespalib/datastore/i_compaction_context.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -16,6 +16,7 @@ struct ICompactionContext {
using UP = std::unique_ptr<ICompactionContext>;
virtual ~ICompactionContext() {}
virtual void compact(vespalib::ArrayRef<EntryRef> refs) = 0;
+ virtual void compact(vespalib::ArrayRef<AtomicEntryRef> refs) = 0;
};
}
diff --git a/vespalib/src/vespa/vespalib/datastore/i_unique_store_dictionary_read_snapshot.h b/vespalib/src/vespa/vespalib/datastore/i_unique_store_dictionary_read_snapshot.h
index b1ea05ffa4d..dc2187a843b 100644
--- a/vespalib/src/vespa/vespalib/datastore/i_unique_store_dictionary_read_snapshot.h
+++ b/vespalib/src/vespa/vespalib/datastore/i_unique_store_dictionary_read_snapshot.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/raw_allocator.h b/vespalib/src/vespa/vespalib/datastore/raw_allocator.h
index e09639f08e9..c10c8152e72 100644
--- a/vespalib/src/vespa/vespalib/datastore/raw_allocator.h
+++ b/vespalib/src/vespa/vespalib/datastore/raw_allocator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/raw_allocator.hpp b/vespalib/src/vespa/vespalib/datastore/raw_allocator.hpp
index 797566f923d..a17c3a28ced 100644
--- a/vespalib/src/vespa/vespalib/datastore/raw_allocator.hpp
+++ b/vespalib/src/vespa/vespalib/datastore/raw_allocator.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/sharded_hash_map.cpp b/vespalib/src/vespa/vespalib/datastore/sharded_hash_map.cpp
index c2f1bf29deb..b7766d8a4e3 100644
--- a/vespalib/src/vespa/vespalib/datastore/sharded_hash_map.cpp
+++ b/vespalib/src/vespa/vespalib/datastore/sharded_hash_map.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sharded_hash_map.h"
#include "fixed_size_hash_map.h"
diff --git a/vespalib/src/vespa/vespalib/datastore/sharded_hash_map.h b/vespalib/src/vespa/vespalib/datastore/sharded_hash_map.h
index a75e7baac5e..0f20c6a6e30 100644
--- a/vespalib/src/vespa/vespalib/datastore/sharded_hash_map.h
+++ b/vespalib/src/vespa/vespalib/datastore/sharded_hash_map.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/unique_store.cpp b/vespalib/src/vespa/vespalib/datastore/unique_store.cpp
index 6af5159f667..0d740c30c84 100644
--- a/vespalib/src/vespa/vespalib/datastore/unique_store.cpp
+++ b/vespalib/src/vespa/vespalib/datastore/unique_store.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "unique_store.hpp"
#include "buffer_type.hpp"
diff --git a/vespalib/src/vespa/vespalib/datastore/unique_store.h b/vespalib/src/vespa/vespalib/datastore/unique_store.h
index d0a12ddd290..38643d84be0 100644
--- a/vespalib/src/vespa/vespalib/datastore/unique_store.h
+++ b/vespalib/src/vespa/vespalib/datastore/unique_store.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/unique_store.hpp b/vespalib/src/vespa/vespalib/datastore/unique_store.hpp
index cb8619831e1..85894cfa7dd 100644
--- a/vespalib/src/vespa/vespalib/datastore/unique_store.hpp
+++ b/vespalib/src/vespa/vespalib/datastore/unique_store.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/unique_store_btree_dictionary_read_snapshot.h b/vespalib/src/vespa/vespalib/datastore/unique_store_btree_dictionary_read_snapshot.h
index 2f958744f5f..c9a57e545f8 100644
--- a/vespalib/src/vespa/vespalib/datastore/unique_store_btree_dictionary_read_snapshot.h
+++ b/vespalib/src/vespa/vespalib/datastore/unique_store_btree_dictionary_read_snapshot.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/unique_store_btree_dictionary_read_snapshot.hpp b/vespalib/src/vespa/vespalib/datastore/unique_store_btree_dictionary_read_snapshot.hpp
index 8fb542b2999..e2b05dcf481 100644
--- a/vespalib/src/vespa/vespalib/datastore/unique_store_btree_dictionary_read_snapshot.hpp
+++ b/vespalib/src/vespa/vespalib/datastore/unique_store_btree_dictionary_read_snapshot.hpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/unique_store_builder.h b/vespalib/src/vespa/vespalib/datastore/unique_store_builder.h
index cbafdbafd4f..1cae8bc8d1d 100644
--- a/vespalib/src/vespa/vespalib/datastore/unique_store_builder.h
+++ b/vespalib/src/vespa/vespalib/datastore/unique_store_builder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/unique_store_builder.hpp b/vespalib/src/vespa/vespalib/datastore/unique_store_builder.hpp
index d54b86558be..9eb61e96ae9 100644
--- a/vespalib/src/vespa/vespalib/datastore/unique_store_builder.hpp
+++ b/vespalib/src/vespa/vespalib/datastore/unique_store_builder.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/unique_store_enumerator.h b/vespalib/src/vespa/vespalib/datastore/unique_store_enumerator.h
index d7ea449754c..744e00674d6 100644
--- a/vespalib/src/vespa/vespalib/datastore/unique_store_enumerator.h
+++ b/vespalib/src/vespa/vespalib/datastore/unique_store_enumerator.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/unique_store_enumerator.hpp b/vespalib/src/vespa/vespalib/datastore/unique_store_enumerator.hpp
index c4443978a5d..83e9b10c6d6 100644
--- a/vespalib/src/vespa/vespalib/datastore/unique_store_enumerator.hpp
+++ b/vespalib/src/vespa/vespalib/datastore/unique_store_enumerator.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/unique_store_hash_dictionary_read_snapshot.h b/vespalib/src/vespa/vespalib/datastore/unique_store_hash_dictionary_read_snapshot.h
index 947d8e00f95..3a3aeb7ab64 100644
--- a/vespalib/src/vespa/vespalib/datastore/unique_store_hash_dictionary_read_snapshot.h
+++ b/vespalib/src/vespa/vespalib/datastore/unique_store_hash_dictionary_read_snapshot.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/datastore/unique_store_hash_dictionary_read_snapshot.hpp b/vespalib/src/vespa/vespalib/datastore/unique_store_hash_dictionary_read_snapshot.hpp
index 4353b415aa4..302336f462c 100644
--- a/vespalib/src/vespa/vespalib/datastore/unique_store_hash_dictionary_read_snapshot.hpp
+++ b/vespalib/src/vespa/vespalib/datastore/unique_store_hash_dictionary_read_snapshot.hpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/geo/CMakeLists.txt b/vespalib/src/vespa/vespalib/geo/CMakeLists.txt
index b2b01907ca1..e7968336152 100644
--- a/vespalib/src/vespa/vespalib/geo/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/geo/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalib_vespalib_geo OBJECT
SOURCES
zcurve.cpp
diff --git a/vespalib/src/vespa/vespalib/geo/zcurve.cpp b/vespalib/src/vespa/vespalib/geo/zcurve.cpp
index 00ce7ee18c6..c6a8aa77681 100644
--- a/vespalib/src/vespa/vespalib/geo/zcurve.cpp
+++ b/vespalib/src/vespa/vespalib/geo/zcurve.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/geo/zcurve.h>
#include <vespa/vespalib/util/priority_queue.h>
diff --git a/vespalib/src/vespa/vespalib/geo/zcurve.h b/vespalib/src/vespa/vespalib/geo/zcurve.h
index bd76b78ea23..7830f00733e 100644
--- a/vespalib/src/vespa/vespalib/geo/zcurve.h
+++ b/vespalib/src/vespa/vespalib/geo/zcurve.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/hwaccelrated/CMakeLists.txt b/vespalib/src/vespa/vespalib/hwaccelrated/CMakeLists.txt
index c5797cbd432..d5a3ab429a9 100644
--- a/vespalib/src/vespa/vespalib/hwaccelrated/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/hwaccelrated/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
set(ACCEL_FILES "avx2.cpp" "avx512.cpp")
diff --git a/vespalib/src/vespa/vespalib/hwaccelrated/avx2.cpp b/vespalib/src/vespa/vespalib/hwaccelrated/avx2.cpp
index 8588a5510f7..6a6421ad016 100644
--- a/vespalib/src/vespa/vespalib/hwaccelrated/avx2.cpp
+++ b/vespalib/src/vespa/vespalib/hwaccelrated/avx2.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "avx2.h"
#include "avxprivate.hpp"
diff --git a/vespalib/src/vespa/vespalib/hwaccelrated/avx2.h b/vespalib/src/vespa/vespalib/hwaccelrated/avx2.h
index b6f3d299748..44752dd9270 100644
--- a/vespalib/src/vespa/vespalib/hwaccelrated/avx2.h
+++ b/vespalib/src/vespa/vespalib/hwaccelrated/avx2.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/hwaccelrated/avx512.cpp b/vespalib/src/vespa/vespalib/hwaccelrated/avx512.cpp
index 4dade08e77a..94a6637a072 100644
--- a/vespalib/src/vespa/vespalib/hwaccelrated/avx512.cpp
+++ b/vespalib/src/vespa/vespalib/hwaccelrated/avx512.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "avx512.h"
#include "avxprivate.hpp"
diff --git a/vespalib/src/vespa/vespalib/hwaccelrated/avx512.h b/vespalib/src/vespa/vespalib/hwaccelrated/avx512.h
index a54d57407b2..826cf63be70 100644
--- a/vespalib/src/vespa/vespalib/hwaccelrated/avx512.h
+++ b/vespalib/src/vespa/vespalib/hwaccelrated/avx512.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/hwaccelrated/avxprivate.hpp b/vespalib/src/vespa/vespalib/hwaccelrated/avxprivate.hpp
index 04859a9e565..2e6bccd1857 100644
--- a/vespalib/src/vespa/vespalib/hwaccelrated/avxprivate.hpp
+++ b/vespalib/src/vespa/vespalib/hwaccelrated/avxprivate.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/hwaccelrated/generic.cpp b/vespalib/src/vespa/vespalib/hwaccelrated/generic.cpp
index f9dfaacf626..fb6ec167cf4 100644
--- a/vespalib/src/vespa/vespalib/hwaccelrated/generic.cpp
+++ b/vespalib/src/vespa/vespalib/hwaccelrated/generic.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "generic.h"
#include "private_helpers.hpp"
diff --git a/vespalib/src/vespa/vespalib/hwaccelrated/generic.h b/vespalib/src/vespa/vespalib/hwaccelrated/generic.h
index 2335b40fe85..c6b75bbcaf0 100644
--- a/vespalib/src/vespa/vespalib/hwaccelrated/generic.h
+++ b/vespalib/src/vespa/vespalib/hwaccelrated/generic.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/hwaccelrated/iaccelrated.cpp b/vespalib/src/vespa/vespalib/hwaccelrated/iaccelrated.cpp
index 674efe75c17..b4f7eb5cd96 100644
--- a/vespalib/src/vespa/vespalib/hwaccelrated/iaccelrated.cpp
+++ b/vespalib/src/vespa/vespalib/hwaccelrated/iaccelrated.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "iaccelrated.h"
#include "generic.h"
diff --git a/vespalib/src/vespa/vespalib/hwaccelrated/iaccelrated.h b/vespalib/src/vespa/vespalib/hwaccelrated/iaccelrated.h
index 2594a48dd33..afb2024b322 100644
--- a/vespalib/src/vespa/vespalib/hwaccelrated/iaccelrated.h
+++ b/vespalib/src/vespa/vespalib/hwaccelrated/iaccelrated.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/hwaccelrated/private_helpers.hpp b/vespalib/src/vespa/vespalib/hwaccelrated/private_helpers.hpp
index 65b4c717681..824e0e1ebd9 100644
--- a/vespalib/src/vespa/vespalib/hwaccelrated/private_helpers.hpp
+++ b/vespalib/src/vespa/vespalib/hwaccelrated/private_helpers.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/io/CMakeLists.txt b/vespalib/src/vespa/vespalib/io/CMakeLists.txt
index 7ad736635e6..e1d86776a94 100644
--- a/vespalib/src/vespa/vespalib/io/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/io/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalib_vespalib_io OBJECT
SOURCES
fileutil.cpp
diff --git a/vespalib/src/vespa/vespalib/io/fileutil.cpp b/vespalib/src/vespa/vespalib/io/fileutil.cpp
index 9c6cca68e02..9994e0d0d6f 100644
--- a/vespalib/src/vespa/vespalib/io/fileutil.cpp
+++ b/vespalib/src/vespa/vespalib/io/fileutil.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fileutil.h"
#include <vespa/vespalib/util/exceptions.h>
diff --git a/vespalib/src/vespa/vespalib/io/fileutil.h b/vespalib/src/vespa/vespalib/io/fileutil.h
index 59994819600..d9e1a00345f 100644
--- a/vespalib/src/vespa/vespalib/io/fileutil.h
+++ b/vespalib/src/vespa/vespalib/io/fileutil.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @file fileutil.h
*
diff --git a/vespalib/src/vespa/vespalib/io/mapped_file_input.cpp b/vespalib/src/vespa/vespalib/io/mapped_file_input.cpp
index b69cadb7957..854ca29c66a 100644
--- a/vespalib/src/vespa/vespalib/io/mapped_file_input.cpp
+++ b/vespalib/src/vespa/vespalib/io/mapped_file_input.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mapped_file_input.h"
#include <fcntl.h>
diff --git a/vespalib/src/vespa/vespalib/io/mapped_file_input.h b/vespalib/src/vespa/vespalib/io/mapped_file_input.h
index f5ca0152014..132c289cdd3 100644
--- a/vespalib/src/vespa/vespalib/io/mapped_file_input.h
+++ b/vespalib/src/vespa/vespalib/io/mapped_file_input.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/locale/CMakeLists.txt b/vespalib/src/vespa/vespalib/locale/CMakeLists.txt
index d5b9e94439b..539eba6c132 100644
--- a/vespalib/src/vespa/vespalib/locale/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/locale/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalib_vespalib_locale OBJECT
SOURCES
c.cpp
diff --git a/vespalib/src/vespa/vespalib/locale/c.cpp b/vespalib/src/vespa/vespalib/locale/c.cpp
index 74e7485f158..f6d71857d5a 100644
--- a/vespalib/src/vespa/vespalib/locale/c.cpp
+++ b/vespalib/src/vespa/vespalib/locale/c.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "c.h"
#include "locale.h"
diff --git a/vespalib/src/vespa/vespalib/locale/c.h b/vespalib/src/vespa/vespalib/locale/c.h
index 08cf6185e7f..87f7bd2d9d8 100644
--- a/vespalib/src/vespa/vespalib/locale/c.h
+++ b/vespalib/src/vespa/vespalib/locale/c.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/locale/locale.cpp b/vespalib/src/vespa/vespalib/locale/locale.cpp
index fe6fc383d33..63fafc36105 100644
--- a/vespalib/src/vespa/vespalib/locale/locale.cpp
+++ b/vespalib/src/vespa/vespalib/locale/locale.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "locale.h"
#include <cassert>
diff --git a/vespalib/src/vespa/vespalib/locale/locale.h b/vespalib/src/vespa/vespalib/locale/locale.h
index ed3ca560630..c8f68d74e3f 100644
--- a/vespalib/src/vespa/vespalib/locale/locale.h
+++ b/vespalib/src/vespa/vespalib/locale/locale.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/net/CMakeLists.txt b/vespalib/src/vespa/vespalib/net/CMakeLists.txt
index a71da833e16..e3eb32d3775 100644
--- a/vespalib/src/vespa/vespalib/net/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/net/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
set(VESPA_EPOLL_FLAVOUR "emulated_epoll.cpp")
diff --git a/vespalib/src/vespa/vespalib/net/async_resolver.cpp b/vespalib/src/vespa/vespalib/net/async_resolver.cpp
index d775f99ce77..f66d34d4174 100644
--- a/vespalib/src/vespa/vespalib/net/async_resolver.cpp
+++ b/vespalib/src/vespa/vespalib/net/async_resolver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "async_resolver.h"
#include "socket_spec.h"
diff --git a/vespalib/src/vespa/vespalib/net/async_resolver.h b/vespalib/src/vespa/vespalib/net/async_resolver.h
index 3ead0802234..28d04e76c16 100644
--- a/vespalib/src/vespa/vespalib/net/async_resolver.h
+++ b/vespalib/src/vespa/vespalib/net/async_resolver.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/net/crypto_engine.cpp b/vespalib/src/vespa/vespalib/net/crypto_engine.cpp
index a59bc6a9869..d2b02e7cc7c 100644
--- a/vespalib/src/vespa/vespalib/net/crypto_engine.cpp
+++ b/vespalib/src/vespa/vespalib/net/crypto_engine.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "crypto_engine.h"
#include <vespa/vespalib/data/smart_buffer.h>
diff --git a/vespalib/src/vespa/vespalib/net/crypto_engine.h b/vespalib/src/vespa/vespalib/net/crypto_engine.h
index 71511b8a552..d6de53bd3e0 100644
--- a/vespalib/src/vespa/vespalib/net/crypto_engine.h
+++ b/vespalib/src/vespa/vespalib/net/crypto_engine.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/net/crypto_socket.cpp b/vespalib/src/vespa/vespalib/net/crypto_socket.cpp
index 416e21d483a..8d3116339a3 100644
--- a/vespalib/src/vespa/vespalib/net/crypto_socket.cpp
+++ b/vespalib/src/vespa/vespalib/net/crypto_socket.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "crypto_socket.h"
diff --git a/vespalib/src/vespa/vespalib/net/crypto_socket.h b/vespalib/src/vespa/vespalib/net/crypto_socket.h
index 91af71296de..a6ed6553bbe 100644
--- a/vespalib/src/vespa/vespalib/net/crypto_socket.h
+++ b/vespalib/src/vespa/vespalib/net/crypto_socket.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/net/selector.cpp b/vespalib/src/vespa/vespalib/net/selector.cpp
index 0dcc852cf3a..8f4155b08ba 100644
--- a/vespalib/src/vespa/vespalib/net/selector.cpp
+++ b/vespalib/src/vespa/vespalib/net/selector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "selector.h"
diff --git a/vespalib/src/vespa/vespalib/net/selector.h b/vespalib/src/vespa/vespalib/net/selector.h
index 24b3abc806e..9b278189215 100644
--- a/vespalib/src/vespa/vespalib/net/selector.h
+++ b/vespalib/src/vespa/vespalib/net/selector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/net/server_socket.cpp b/vespalib/src/vespa/vespalib/net/server_socket.cpp
index 2928a9a72b0..33764fc153c 100644
--- a/vespalib/src/vespa/vespalib/net/server_socket.cpp
+++ b/vespalib/src/vespa/vespalib/net/server_socket.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "server_socket.h"
#include "socket_spec.h"
diff --git a/vespalib/src/vespa/vespalib/net/server_socket.h b/vespalib/src/vespa/vespalib/net/server_socket.h
index af6f0a31175..5dd59bf6559 100644
--- a/vespalib/src/vespa/vespalib/net/server_socket.h
+++ b/vespalib/src/vespa/vespalib/net/server_socket.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/net/socket.cpp b/vespalib/src/vespa/vespalib/net/socket.cpp
index 47070b33bf4..fbec473f1fb 100644
--- a/vespalib/src/vespa/vespalib/net/socket.cpp
+++ b/vespalib/src/vespa/vespalib/net/socket.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "socket.h"
#include "socket_spec.h"
diff --git a/vespalib/src/vespa/vespalib/net/socket.h b/vespalib/src/vespa/vespalib/net/socket.h
index 974347d52b7..dd6112cedce 100644
--- a/vespalib/src/vespa/vespalib/net/socket.h
+++ b/vespalib/src/vespa/vespalib/net/socket.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/net/socket_address.cpp b/vespalib/src/vespa/vespalib/net/socket_address.cpp
index dee56c78c5e..c1fb1cb0858 100644
--- a/vespalib/src/vespa/vespalib/net/socket_address.cpp
+++ b/vespalib/src/vespa/vespalib/net/socket_address.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "socket_address.h"
#include <vespa/vespalib/util/size_literals.h>
diff --git a/vespalib/src/vespa/vespalib/net/socket_address.h b/vespalib/src/vespa/vespalib/net/socket_address.h
index 543af44a56e..6dfe843c12e 100644
--- a/vespalib/src/vespa/vespalib/net/socket_address.h
+++ b/vespalib/src/vespa/vespalib/net/socket_address.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/net/socket_handle.cpp b/vespalib/src/vespa/vespalib/net/socket_handle.cpp
index aaaad1624bb..a2580f6fec8 100644
--- a/vespalib/src/vespa/vespalib/net/socket_handle.cpp
+++ b/vespalib/src/vespa/vespalib/net/socket_handle.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "socket_handle.h"
#include <sys/socket.h>
diff --git a/vespalib/src/vespa/vespalib/net/socket_handle.h b/vespalib/src/vespa/vespalib/net/socket_handle.h
index 0bf3f6b43c7..b4893191188 100644
--- a/vespalib/src/vespa/vespalib/net/socket_handle.h
+++ b/vespalib/src/vespa/vespalib/net/socket_handle.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/net/socket_options.cpp b/vespalib/src/vespa/vespalib/net/socket_options.cpp
index b1bee85e7ee..29e20362a01 100644
--- a/vespalib/src/vespa/vespalib/net/socket_options.cpp
+++ b/vespalib/src/vespa/vespalib/net/socket_options.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "socket_options.h"
diff --git a/vespalib/src/vespa/vespalib/net/socket_options.h b/vespalib/src/vespa/vespalib/net/socket_options.h
index d9015ff7a1c..7768abd4703 100644
--- a/vespalib/src/vespa/vespalib/net/socket_options.h
+++ b/vespalib/src/vespa/vespalib/net/socket_options.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/net/socket_spec.cpp b/vespalib/src/vespa/vespalib/net/socket_spec.cpp
index d1dd81a454a..c8d1f6eb04b 100644
--- a/vespalib/src/vespa/vespalib/net/socket_spec.cpp
+++ b/vespalib/src/vespa/vespalib/net/socket_spec.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "socket_spec.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/vespalib/src/vespa/vespalib/net/socket_spec.h b/vespalib/src/vespa/vespalib/net/socket_spec.h
index 4e3dddf6814..ef41a471480 100644
--- a/vespalib/src/vespa/vespalib/net/socket_spec.h
+++ b/vespalib/src/vespa/vespalib/net/socket_spec.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/net/sync_crypto_socket.cpp b/vespalib/src/vespa/vespalib/net/sync_crypto_socket.cpp
index 3aa2d3b0683..023b96f04a4 100644
--- a/vespalib/src/vespa/vespalib/net/sync_crypto_socket.cpp
+++ b/vespalib/src/vespa/vespalib/net/sync_crypto_socket.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sync_crypto_socket.h"
#include <cassert>
diff --git a/vespalib/src/vespa/vespalib/net/sync_crypto_socket.h b/vespalib/src/vespa/vespalib/net/sync_crypto_socket.h
index 36fcfe12ed9..a93fbb6426f 100644
--- a/vespalib/src/vespa/vespalib/net/sync_crypto_socket.h
+++ b/vespalib/src/vespa/vespalib/net/sync_crypto_socket.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/net/tls/CMakeLists.txt b/vespalib/src/vespa/vespalib/net/tls/CMakeLists.txt
index b7801f40959..f1e64241533 100644
--- a/vespalib/src/vespa/vespalib/net/tls/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/net/tls/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalib_vespalib_net_tls OBJECT
SOURCES
authorization_mode.cpp
diff --git a/vespalib/src/vespa/vespalib/net/tls/authorization_mode.cpp b/vespalib/src/vespa/vespalib/net/tls/authorization_mode.cpp
index 05110db0571..6fcb38b4ca5 100644
--- a/vespalib/src/vespa/vespalib/net/tls/authorization_mode.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/authorization_mode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "authorization_mode.h"
diff --git a/vespalib/src/vespa/vespalib/net/tls/authorization_mode.h b/vespalib/src/vespa/vespalib/net/tls/authorization_mode.h
index a4d33db7311..6835cdea9e9 100644
--- a/vespalib/src/vespa/vespalib/net/tls/authorization_mode.h
+++ b/vespalib/src/vespa/vespalib/net/tls/authorization_mode.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <iosfwd>
diff --git a/vespalib/src/vespa/vespalib/net/tls/auto_reloading_tls_crypto_engine.cpp b/vespalib/src/vespa/vespalib/net/tls/auto_reloading_tls_crypto_engine.cpp
index bdb2402adbc..7d0d94b3627 100644
--- a/vespalib/src/vespa/vespalib/net/tls/auto_reloading_tls_crypto_engine.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/auto_reloading_tls_crypto_engine.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "auto_reloading_tls_crypto_engine.h"
#include "statistics.h"
diff --git a/vespalib/src/vespa/vespalib/net/tls/auto_reloading_tls_crypto_engine.h b/vespalib/src/vespa/vespalib/net/tls/auto_reloading_tls_crypto_engine.h
index 1b80b782daf..b379fd75b99 100644
--- a/vespalib/src/vespa/vespalib/net/tls/auto_reloading_tls_crypto_engine.h
+++ b/vespalib/src/vespa/vespalib/net/tls/auto_reloading_tls_crypto_engine.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/net/tls/certificate_verification_callback.h b/vespalib/src/vespa/vespalib/net/tls/certificate_verification_callback.h
index 7ea4d22bab4..dec00486dcd 100644
--- a/vespalib/src/vespa/vespalib/net/tls/certificate_verification_callback.h
+++ b/vespalib/src/vespa/vespalib/net/tls/certificate_verification_callback.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "peer_credentials.h"
diff --git a/vespalib/src/vespa/vespalib/net/tls/crypto_codec.cpp b/vespalib/src/vespa/vespalib/net/tls/crypto_codec.cpp
index d3ac975d90a..408f916bcb1 100644
--- a/vespalib/src/vespa/vespalib/net/tls/crypto_codec.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/crypto_codec.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "crypto_codec.h"
#include <vespa/vespalib/net/tls/impl/openssl_crypto_codec_impl.h>
#include <vespa/vespalib/net/tls/impl/openssl_tls_context_impl.h>
diff --git a/vespalib/src/vespa/vespalib/net/tls/crypto_codec.h b/vespalib/src/vespa/vespalib/net/tls/crypto_codec.h
index 787485b47be..7448bf49799 100644
--- a/vespalib/src/vespa/vespalib/net/tls/crypto_codec.h
+++ b/vespalib/src/vespa/vespalib/net/tls/crypto_codec.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/net/socket_address.h>
diff --git a/vespalib/src/vespa/vespalib/net/tls/crypto_codec_adapter.cpp b/vespalib/src/vespa/vespalib/net/tls/crypto_codec_adapter.cpp
index 4c0533a409a..03170ae0f68 100644
--- a/vespalib/src/vespa/vespalib/net/tls/crypto_codec_adapter.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/crypto_codec_adapter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "crypto_codec_adapter.h"
#include <assert.h>
diff --git a/vespalib/src/vespa/vespalib/net/tls/crypto_codec_adapter.h b/vespalib/src/vespa/vespalib/net/tls/crypto_codec_adapter.h
index 11c87d3b7e9..1d5b57dc9b2 100644
--- a/vespalib/src/vespa/vespalib/net/tls/crypto_codec_adapter.h
+++ b/vespalib/src/vespa/vespalib/net/tls/crypto_codec_adapter.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/net/tls/impl/CMakeLists.txt b/vespalib/src/vespa/vespalib/net/tls/impl/CMakeLists.txt
index d69da590311..87040aec8f4 100644
--- a/vespalib/src/vespa/vespalib/net/tls/impl/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/net/tls/impl/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalib_vespalib_net_tls_impl OBJECT
SOURCES
direct_buffer_bio.cpp
diff --git a/vespalib/src/vespa/vespalib/net/tls/impl/direct_buffer_bio.cpp b/vespalib/src/vespa/vespalib/net/tls/impl/direct_buffer_bio.cpp
index d7d02534242..5182aca73ba 100644
--- a/vespalib/src/vespa/vespalib/net/tls/impl/direct_buffer_bio.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/impl/direct_buffer_bio.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "direct_buffer_bio.h"
#include <vespa/vespalib/crypto/crypto_exception.h>
#include <vespa/vespalib/util/backtrace.h>
diff --git a/vespalib/src/vespa/vespalib/net/tls/impl/direct_buffer_bio.h b/vespalib/src/vespa/vespalib/net/tls/impl/direct_buffer_bio.h
index 8492bf2c436..17d31a43267 100644
--- a/vespalib/src/vespa/vespalib/net/tls/impl/direct_buffer_bio.h
+++ b/vespalib/src/vespa/vespalib/net/tls/impl/direct_buffer_bio.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/crypto/openssl_typedefs.h>
diff --git a/vespalib/src/vespa/vespalib/net/tls/impl/openssl_crypto_codec_impl.cpp b/vespalib/src/vespa/vespalib/net/tls/impl/openssl_crypto_codec_impl.cpp
index 1d87a50190e..db705e7644a 100644
--- a/vespalib/src/vespa/vespalib/net/tls/impl/openssl_crypto_codec_impl.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/impl/openssl_crypto_codec_impl.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "openssl_crypto_codec_impl.h"
#include "openssl_tls_context_impl.h"
#include "direct_buffer_bio.h"
@@ -369,7 +369,8 @@ HandshakeResult OpenSslCryptoCodecImpl::do_handshake_and_consume_peer_input_byte
LOG(error, "SSL handshake is not completed even though no more peer data is requested");
return handshake_failed();
}
- LOG(debug, "SSL_do_handshake() is complete, using protocol %s", SSL_get_version(_ssl.get()));
+ LOG(debug, "SSL_do_handshake() with %s is complete, using protocol %s",
+ _peer_address.spec().c_str(), SSL_get_version(_ssl.get()));
ConnectionStatistics::get(_mode == Mode::Server).inc_tls_connections();
return handshake_consumed_bytes_and_is_complete(static_cast<size_t>(consumed));
} else {
diff --git a/vespalib/src/vespa/vespalib/net/tls/impl/openssl_crypto_codec_impl.h b/vespalib/src/vespa/vespalib/net/tls/impl/openssl_crypto_codec_impl.h
index 80f3e12786a..34ca31a8f6c 100644
--- a/vespalib/src/vespa/vespalib/net/tls/impl/openssl_crypto_codec_impl.h
+++ b/vespalib/src/vespa/vespalib/net/tls/impl/openssl_crypto_codec_impl.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/crypto/openssl_typedefs.h>
diff --git a/vespalib/src/vespa/vespalib/net/tls/impl/openssl_tls_context_impl.cpp b/vespalib/src/vespa/vespalib/net/tls/impl/openssl_tls_context_impl.cpp
index d4d2f394782..40e4e1adbcf 100644
--- a/vespalib/src/vespa/vespalib/net/tls/impl/openssl_tls_context_impl.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/impl/openssl_tls_context_impl.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "iana_cipher_map.h"
#include "openssl_tls_context_impl.h"
#include "openssl_crypto_codec_impl.h"
diff --git a/vespalib/src/vespa/vespalib/net/tls/impl/openssl_tls_context_impl.h b/vespalib/src/vespa/vespalib/net/tls/impl/openssl_tls_context_impl.h
index badfe8306d1..b84a599dead 100644
--- a/vespalib/src/vespa/vespalib/net/tls/impl/openssl_tls_context_impl.h
+++ b/vespalib/src/vespa/vespalib/net/tls/impl/openssl_tls_context_impl.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/crypto/openssl_typedefs.h>
diff --git a/vespalib/src/vespa/vespalib/net/tls/maybe_tls_crypto_engine.cpp b/vespalib/src/vespa/vespalib/net/tls/maybe_tls_crypto_engine.cpp
index f7f0284bded..91dc64e4165 100644
--- a/vespalib/src/vespa/vespalib/net/tls/maybe_tls_crypto_engine.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/maybe_tls_crypto_engine.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "maybe_tls_crypto_engine.h"
#include "maybe_tls_crypto_socket.h"
diff --git a/vespalib/src/vespa/vespalib/net/tls/maybe_tls_crypto_engine.h b/vespalib/src/vespa/vespalib/net/tls/maybe_tls_crypto_engine.h
index ece7d094c54..8c8a4452c80 100644
--- a/vespalib/src/vespa/vespalib/net/tls/maybe_tls_crypto_engine.h
+++ b/vespalib/src/vespa/vespalib/net/tls/maybe_tls_crypto_engine.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/net/tls/maybe_tls_crypto_socket.cpp b/vespalib/src/vespa/vespalib/net/tls/maybe_tls_crypto_socket.cpp
index 3035387e4f0..be692e8df35 100644
--- a/vespalib/src/vespa/vespalib/net/tls/maybe_tls_crypto_socket.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/maybe_tls_crypto_socket.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "maybe_tls_crypto_socket.h"
#include "statistics.h"
diff --git a/vespalib/src/vespa/vespalib/net/tls/maybe_tls_crypto_socket.h b/vespalib/src/vespa/vespalib/net/tls/maybe_tls_crypto_socket.h
index 2768bc0fc52..ba706cb3cd7 100644
--- a/vespalib/src/vespa/vespalib/net/tls/maybe_tls_crypto_socket.h
+++ b/vespalib/src/vespa/vespalib/net/tls/maybe_tls_crypto_socket.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/net/tls/peer_credentials.cpp b/vespalib/src/vespa/vespalib/net/tls/peer_credentials.cpp
index b7e6fd2224e..e00d4804fbe 100644
--- a/vespalib/src/vespa/vespalib/net/tls/peer_credentials.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/peer_credentials.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "peer_credentials.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/vespalib/src/vespa/vespalib/net/tls/peer_credentials.h b/vespalib/src/vespa/vespalib/net/tls/peer_credentials.h
index fb43796052e..636d643a62f 100644
--- a/vespalib/src/vespa/vespalib/net/tls/peer_credentials.h
+++ b/vespalib/src/vespa/vespalib/net/tls/peer_credentials.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/vespalib/src/vespa/vespalib/net/tls/peer_policies.cpp b/vespalib/src/vespa/vespalib/net/tls/peer_policies.cpp
index 3a136b8147d..149ad01b947 100644
--- a/vespalib/src/vespa/vespalib/net/tls/peer_policies.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/peer_policies.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "peer_policies.h"
#include <vespa/vespalib/regex/regex.h>
diff --git a/vespalib/src/vespa/vespalib/net/tls/peer_policies.h b/vespalib/src/vespa/vespalib/net/tls/peer_policies.h
index aeb8dd17f64..c5721858518 100644
--- a/vespalib/src/vespa/vespalib/net/tls/peer_policies.h
+++ b/vespalib/src/vespa/vespalib/net/tls/peer_policies.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/vespalib/src/vespa/vespalib/net/tls/policy_checking_certificate_verifier.cpp b/vespalib/src/vespa/vespalib/net/tls/policy_checking_certificate_verifier.cpp
index 94b1f82bb22..e2c45ad7358 100644
--- a/vespalib/src/vespa/vespalib/net/tls/policy_checking_certificate_verifier.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/policy_checking_certificate_verifier.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "policy_checking_certificate_verifier.h"
diff --git a/vespalib/src/vespa/vespalib/net/tls/policy_checking_certificate_verifier.h b/vespalib/src/vespa/vespalib/net/tls/policy_checking_certificate_verifier.h
index 44db335eed6..fd1ff5ac5a6 100644
--- a/vespalib/src/vespa/vespalib/net/tls/policy_checking_certificate_verifier.h
+++ b/vespalib/src/vespa/vespalib/net/tls/policy_checking_certificate_verifier.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "authorization_mode.h"
diff --git a/vespalib/src/vespa/vespalib/net/tls/protocol_snooping.cpp b/vespalib/src/vespa/vespalib/net/tls/protocol_snooping.cpp
index 26e3d7240bd..c954e35bcb6 100644
--- a/vespalib/src/vespa/vespalib/net/tls/protocol_snooping.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/protocol_snooping.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "protocol_snooping.h"
#include <vespa/vespalib/util/size_literals.h>
#include <iostream>
diff --git a/vespalib/src/vespa/vespalib/net/tls/protocol_snooping.h b/vespalib/src/vespa/vespalib/net/tls/protocol_snooping.h
index f53e136e597..b7376526c5e 100644
--- a/vespalib/src/vespa/vespalib/net/tls/protocol_snooping.h
+++ b/vespalib/src/vespa/vespalib/net/tls/protocol_snooping.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <iosfwd>
diff --git a/vespalib/src/vespa/vespalib/net/tls/statistics.cpp b/vespalib/src/vespa/vespalib/net/tls/statistics.cpp
index d11aa60266e..a308a20bf2f 100644
--- a/vespalib/src/vespa/vespalib/net/tls/statistics.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/statistics.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "statistics.h"
diff --git a/vespalib/src/vespa/vespalib/net/tls/statistics.h b/vespalib/src/vespa/vespalib/net/tls/statistics.h
index 1fce4f48b0c..3e94ed95590 100644
--- a/vespalib/src/vespa/vespalib/net/tls/statistics.h
+++ b/vespalib/src/vespa/vespalib/net/tls/statistics.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <atomic>
diff --git a/vespalib/src/vespa/vespalib/net/tls/tls_context.cpp b/vespalib/src/vespa/vespalib/net/tls/tls_context.cpp
index 5b57414fde4..436722224d2 100644
--- a/vespalib/src/vespa/vespalib/net/tls/tls_context.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/tls_context.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tls_context.h"
#include <vespa/vespalib/net/tls/impl/openssl_tls_context_impl.h>
#include <vespa/vespalib/net/tls/policy_checking_certificate_verifier.h>
diff --git a/vespalib/src/vespa/vespalib/net/tls/tls_context.h b/vespalib/src/vespa/vespalib/net/tls/tls_context.h
index ea2a652a701..15cddc950ff 100644
--- a/vespalib/src/vespa/vespalib/net/tls/tls_context.h
+++ b/vespalib/src/vespa/vespalib/net/tls/tls_context.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "authorization_mode.h"
diff --git a/vespalib/src/vespa/vespalib/net/tls/tls_crypto_engine.cpp b/vespalib/src/vespa/vespalib/net/tls/tls_crypto_engine.cpp
index 99862e83dbf..119b4b93a54 100644
--- a/vespalib/src/vespa/vespalib/net/tls/tls_crypto_engine.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/tls_crypto_engine.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tls_crypto_engine.h"
#include "crypto_codec.h"
diff --git a/vespalib/src/vespa/vespalib/net/tls/tls_crypto_engine.h b/vespalib/src/vespa/vespalib/net/tls/tls_crypto_engine.h
index 444a817b357..13a514f6954 100644
--- a/vespalib/src/vespa/vespalib/net/tls/tls_crypto_engine.h
+++ b/vespalib/src/vespa/vespalib/net/tls/tls_crypto_engine.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/net/tls/tls_crypto_socket.cpp b/vespalib/src/vespa/vespalib/net/tls/tls_crypto_socket.cpp
index ee93827898e..54cc226159e 100644
--- a/vespalib/src/vespa/vespalib/net/tls/tls_crypto_socket.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/tls_crypto_socket.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tls_crypto_socket.h"
diff --git a/vespalib/src/vespa/vespalib/net/tls/tls_crypto_socket.h b/vespalib/src/vespa/vespalib/net/tls/tls_crypto_socket.h
index c98af6ee651..0d036fdad4b 100644
--- a/vespalib/src/vespa/vespalib/net/tls/tls_crypto_socket.h
+++ b/vespalib/src/vespa/vespalib/net/tls/tls_crypto_socket.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/net/tls/transport_security_options.cpp b/vespalib/src/vespa/vespalib/net/tls/transport_security_options.cpp
index 47b0e1e0a43..3b3fdd579d1 100644
--- a/vespalib/src/vespa/vespalib/net/tls/transport_security_options.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/transport_security_options.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "transport_security_options.h"
#include <openssl/crypto.h>
diff --git a/vespalib/src/vespa/vespalib/net/tls/transport_security_options.h b/vespalib/src/vespa/vespalib/net/tls/transport_security_options.h
index e0a48fc6cf5..84fc9c1cbbe 100644
--- a/vespalib/src/vespa/vespalib/net/tls/transport_security_options.h
+++ b/vespalib/src/vespa/vespalib/net/tls/transport_security_options.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/net/tls/transport_security_options_reading.cpp b/vespalib/src/vespa/vespalib/net/tls/transport_security_options_reading.cpp
index 2c10b3838af..2e80135813d 100644
--- a/vespalib/src/vespa/vespalib/net/tls/transport_security_options_reading.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/transport_security_options_reading.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "transport_security_options_reading.h"
#include <vespa/vespalib/data/slime/slime.h>
#include <vespa/vespalib/util/exceptions.h>
diff --git a/vespalib/src/vespa/vespalib/net/tls/transport_security_options_reading.h b/vespalib/src/vespa/vespalib/net/tls/transport_security_options_reading.h
index 800b3b5ed0d..743aba0078f 100644
--- a/vespalib/src/vespa/vespalib/net/tls/transport_security_options_reading.h
+++ b/vespalib/src/vespa/vespalib/net/tls/transport_security_options_reading.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "transport_security_options.h"
diff --git a/vespalib/src/vespa/vespalib/objects/CMakeLists.txt b/vespalib/src/vespa/vespalib/objects/CMakeLists.txt
index 8da326fa9ed..a4b2192d98f 100644
--- a/vespalib/src/vespa/vespalib/objects/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/objects/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalib_vespalib_objects OBJECT
SOURCES
nbostream.cpp
diff --git a/vespalib/src/vespa/vespalib/objects/hexdump.cpp b/vespalib/src/vespa/vespalib/objects/hexdump.cpp
index e141baaafd7..9ff1878d748 100644
--- a/vespalib/src/vespa/vespalib/objects/hexdump.cpp
+++ b/vespalib/src/vespa/vespalib/objects/hexdump.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "hexdump.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/vespalib/src/vespa/vespalib/objects/hexdump.h b/vespalib/src/vespa/vespalib/objects/hexdump.h
index 0290d7b7e8f..402b33d822b 100644
--- a/vespalib/src/vespa/vespalib/objects/hexdump.h
+++ b/vespalib/src/vespa/vespalib/objects/hexdump.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/vespalib/src/vespa/vespalib/objects/nbo.h b/vespalib/src/vespa/vespalib/objects/nbo.h
index eefa4d121e0..a7466444318 100644
--- a/vespalib/src/vespa/vespalib/objects/nbo.h
+++ b/vespalib/src/vespa/vespalib/objects/nbo.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <arpa/inet.h>
diff --git a/vespalib/src/vespa/vespalib/objects/nbostream.cpp b/vespalib/src/vespa/vespalib/objects/nbostream.cpp
index 871c88b5465..1ef63bc5322 100644
--- a/vespalib/src/vespa/vespalib/objects/nbostream.cpp
+++ b/vespalib/src/vespa/vespalib/objects/nbostream.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "nbostream.h"
#include "hexdump.h"
#include <vespa/vespalib/util/exceptions.h>
diff --git a/vespalib/src/vespa/vespalib/objects/nbostream.h b/vespalib/src/vespa/vespalib/objects/nbostream.h
index 7119645622f..cc4f91d91b4 100644
--- a/vespalib/src/vespa/vespalib/objects/nbostream.h
+++ b/vespalib/src/vespa/vespalib/objects/nbostream.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vector>
diff --git a/vespalib/src/vespa/vespalib/portal/CMakeLists.txt b/vespalib/src/vespa/vespalib/portal/CMakeLists.txt
index cb27aafdcf1..1ca1f6d99a9 100644
--- a/vespalib/src/vespa/vespalib/portal/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/portal/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalib_vespalib_portal OBJECT
SOURCES
handle_manager.cpp
diff --git a/vespalib/src/vespa/vespalib/portal/handle_manager.cpp b/vespalib/src/vespa/vespalib/portal/handle_manager.cpp
index b78541deb19..b21674fc427 100644
--- a/vespalib/src/vespa/vespalib/portal/handle_manager.cpp
+++ b/vespalib/src/vespa/vespalib/portal/handle_manager.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "handle_manager.h"
diff --git a/vespalib/src/vespa/vespalib/portal/handle_manager.h b/vespalib/src/vespa/vespalib/portal/handle_manager.h
index 8b3456dc75c..b8969fe8b67 100644
--- a/vespalib/src/vespa/vespalib/portal/handle_manager.h
+++ b/vespalib/src/vespa/vespalib/portal/handle_manager.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/portal/http_connection.cpp b/vespalib/src/vespa/vespalib/portal/http_connection.cpp
index cf12ad4e8d5..fc9e8f200cc 100644
--- a/vespalib/src/vespa/vespalib/portal/http_connection.cpp
+++ b/vespalib/src/vespa/vespalib/portal/http_connection.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "http_connection.h"
#include <vespa/vespalib/data/output_writer.h>
diff --git a/vespalib/src/vespa/vespalib/portal/http_connection.h b/vespalib/src/vespa/vespalib/portal/http_connection.h
index 5deb4d5e81f..4cc973b1f29 100644
--- a/vespalib/src/vespa/vespalib/portal/http_connection.h
+++ b/vespalib/src/vespa/vespalib/portal/http_connection.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/portal/http_request.cpp b/vespalib/src/vespa/vespalib/portal/http_request.cpp
index abd690897c6..a44c36aa3cb 100644
--- a/vespalib/src/vespa/vespalib/portal/http_request.cpp
+++ b/vespalib/src/vespa/vespalib/portal/http_request.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "http_request.h"
diff --git a/vespalib/src/vespa/vespalib/portal/http_request.h b/vespalib/src/vespa/vespalib/portal/http_request.h
index 39467c3b248..93c9726c97c 100644
--- a/vespalib/src/vespa/vespalib/portal/http_request.h
+++ b/vespalib/src/vespa/vespalib/portal/http_request.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/portal/listener.cpp b/vespalib/src/vespa/vespalib/portal/listener.cpp
index 1c4478dcd63..1cf38cdac58 100644
--- a/vespalib/src/vespa/vespalib/portal/listener.cpp
+++ b/vespalib/src/vespa/vespalib/portal/listener.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "listener.h"
#include <vespa/vespalib/util/exceptions.h>
diff --git a/vespalib/src/vespa/vespalib/portal/listener.h b/vespalib/src/vespa/vespalib/portal/listener.h
index e2c20477f04..eaf758ee773 100644
--- a/vespalib/src/vespa/vespalib/portal/listener.h
+++ b/vespalib/src/vespa/vespalib/portal/listener.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/portal/portal.cpp b/vespalib/src/vespa/vespalib/portal/portal.cpp
index a6d44348e5e..aabcc60bb28 100644
--- a/vespalib/src/vespa/vespalib/portal/portal.cpp
+++ b/vespalib/src/vespa/vespalib/portal/portal.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "portal.h"
#include "http_connection.h"
diff --git a/vespalib/src/vespa/vespalib/portal/portal.h b/vespalib/src/vespa/vespalib/portal/portal.h
index 5ac2d85a6e3..955c9130c35 100644
--- a/vespalib/src/vespa/vespalib/portal/portal.h
+++ b/vespalib/src/vespa/vespalib/portal/portal.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/portal/reactor.cpp b/vespalib/src/vespa/vespalib/portal/reactor.cpp
index 52a59f617fb..b83d80b5a9f 100644
--- a/vespalib/src/vespa/vespalib/portal/reactor.cpp
+++ b/vespalib/src/vespa/vespalib/portal/reactor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "reactor.h"
#include <cassert>
diff --git a/vespalib/src/vespa/vespalib/portal/reactor.h b/vespalib/src/vespa/vespalib/portal/reactor.h
index 408f358d31b..5ffbb23cd39 100644
--- a/vespalib/src/vespa/vespalib/portal/reactor.h
+++ b/vespalib/src/vespa/vespalib/portal/reactor.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/regex/CMakeLists.txt b/vespalib/src/vespa/vespalib/regex/CMakeLists.txt
index 1034dbf6086..5c2947a1822 100644
--- a/vespalib/src/vespa/vespalib/regex/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/regex/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalib_vespalib_regex OBJECT
SOURCES
regex.cpp
diff --git a/vespalib/src/vespa/vespalib/regex/regex.cpp b/vespalib/src/vespa/vespalib/regex/regex.cpp
index 97e9512fbc6..a904ed4d4ee 100644
--- a/vespalib/src/vespa/vespalib/regex/regex.cpp
+++ b/vespalib/src/vespa/vespalib/regex/regex.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "regex.h"
#include <re2/re2.h>
diff --git a/vespalib/src/vespa/vespalib/regex/regex.h b/vespalib/src/vespa/vespalib/regex/regex.h
index 0b096bef53e..6a4d6bc47fc 100644
--- a/vespalib/src/vespa/vespalib/regex/regex.h
+++ b/vespalib/src/vespa/vespalib/regex/regex.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/vespalib/src/vespa/vespalib/stllike/CMakeLists.txt b/vespalib/src/vespa/vespalib/stllike/CMakeLists.txt
index f8b9e90dc62..dfa6fea0d1b 100644
--- a/vespalib/src/vespa/vespalib/stllike/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/stllike/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalib_vespalib_stllike OBJECT
SOURCES
asciistream.cpp
diff --git a/vespalib/src/vespa/vespalib/stllike/allocator.h b/vespalib/src/vespa/vespalib/stllike/allocator.h
index 0a890973e09..b34533740a2 100644
--- a/vespalib/src/vespa/vespalib/stllike/allocator.h
+++ b/vespalib/src/vespa/vespalib/stllike/allocator.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -13,7 +13,6 @@ namespace vespalib {
*/
template <typename T>
class allocator_large {
- using PtrAndSize = alloc::MemoryAllocator::PtrAndSize;
public:
allocator_large() noexcept : _allocator(alloc::MemoryAllocator::select_allocator()) {}
using value_type = T;
diff --git a/vespalib/src/vespa/vespalib/stllike/asciistream.cpp b/vespalib/src/vespa/vespalib/stllike/asciistream.cpp
index 61d58e6e2a9..8e4a0e7567a 100644
--- a/vespalib/src/vespa/vespalib/stllike/asciistream.cpp
+++ b/vespalib/src/vespa/vespalib/stllike/asciistream.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "asciistream.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/vespalib/src/vespa/vespalib/stllike/asciistream.h b/vespalib/src/vespa/vespalib/stllike/asciistream.h
index ca16deaa4c3..6a4b4378634 100644
--- a/vespalib/src/vespa/vespalib/stllike/asciistream.h
+++ b/vespalib/src/vespa/vespalib/stllike/asciistream.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/vespalib/src/vespa/vespalib/stllike/hash_fun.cpp b/vespalib/src/vespa/vespalib/stllike/hash_fun.cpp
index 84882d763d6..04eee6801cc 100644
--- a/vespalib/src/vespa/vespalib/stllike/hash_fun.cpp
+++ b/vespalib/src/vespa/vespalib/stllike/hash_fun.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "hash_fun.h"
#include <xxhash.h>
diff --git a/vespalib/src/vespa/vespalib/stllike/hash_fun.h b/vespalib/src/vespa/vespalib/stllike/hash_fun.h
index 089e8b14039..4900fcd5a2b 100644
--- a/vespalib/src/vespa/vespalib/stllike/hash_fun.h
+++ b/vespalib/src/vespa/vespalib/stllike/hash_fun.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/vespalib/src/vespa/vespalib/stllike/hash_map.cpp b/vespalib/src/vespa/vespalib/stllike/hash_map.cpp
index 54564010d35..9540a47eec3 100644
--- a/vespalib/src/vespa/vespalib/stllike/hash_map.cpp
+++ b/vespalib/src/vespa/vespalib/stllike/hash_map.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "hash_map.hpp"
#include "hash_map_equal.hpp"
diff --git a/vespalib/src/vespa/vespalib/stllike/hash_map.h b/vespalib/src/vespa/vespalib/stllike/hash_map.h
index a262a05a5c2..9e7525bdb77 100644
--- a/vespalib/src/vespa/vespalib/stllike/hash_map.h
+++ b/vespalib/src/vespa/vespalib/stllike/hash_map.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "hashtable.h"
diff --git a/vespalib/src/vespa/vespalib/stllike/hash_map.hpp b/vespalib/src/vespa/vespalib/stllike/hash_map.hpp
index 567893534b0..3ab300c8f1b 100644
--- a/vespalib/src/vespa/vespalib/stllike/hash_map.hpp
+++ b/vespalib/src/vespa/vespalib/stllike/hash_map.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "hash_map_insert.hpp"
diff --git a/vespalib/src/vespa/vespalib/stllike/hash_map_equal.hpp b/vespalib/src/vespa/vespalib/stllike/hash_map_equal.hpp
index 9a8fc274e41..77659a89b98 100644
--- a/vespalib/src/vespa/vespalib/stllike/hash_map_equal.hpp
+++ b/vespalib/src/vespa/vespalib/stllike/hash_map_equal.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "hash_map.h"
diff --git a/vespalib/src/vespa/vespalib/stllike/hash_map_insert.hpp b/vespalib/src/vespa/vespalib/stllike/hash_map_insert.hpp
index 7db8ebaeab6..56fc0013b27 100644
--- a/vespalib/src/vespa/vespalib/stllike/hash_map_insert.hpp
+++ b/vespalib/src/vespa/vespalib/stllike/hash_map_insert.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "hash_map.h"
diff --git a/vespalib/src/vespa/vespalib/stllike/hash_set.cpp b/vespalib/src/vespa/vespalib/stllike/hash_set.cpp
index dac4789ac6a..8812af426bf 100644
--- a/vespalib/src/vespa/vespalib/stllike/hash_set.cpp
+++ b/vespalib/src/vespa/vespalib/stllike/hash_set.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "hash_set.hpp"
#include <vespa/vespalib/util/array_equal.hpp>
diff --git a/vespalib/src/vespa/vespalib/stllike/hash_set.h b/vespalib/src/vespa/vespalib/stllike/hash_set.h
index 3d4df823064..0a811d54bf9 100644
--- a/vespalib/src/vespa/vespalib/stllike/hash_set.h
+++ b/vespalib/src/vespa/vespalib/stllike/hash_set.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "hashtable.h"
diff --git a/vespalib/src/vespa/vespalib/stllike/hash_set.hpp b/vespalib/src/vespa/vespalib/stllike/hash_set.hpp
index 892d0d28fb6..2a0617d7d45 100644
--- a/vespalib/src/vespa/vespalib/stllike/hash_set.hpp
+++ b/vespalib/src/vespa/vespalib/stllike/hash_set.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "hash_set_insert.hpp"
diff --git a/vespalib/src/vespa/vespalib/stllike/hash_set_insert.hpp b/vespalib/src/vespa/vespalib/stllike/hash_set_insert.hpp
index 7354897c768..6d5b7ed8b05 100644
--- a/vespalib/src/vespa/vespalib/stllike/hash_set_insert.hpp
+++ b/vespalib/src/vespa/vespalib/stllike/hash_set_insert.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/stllike/hashtable.cpp b/vespalib/src/vespa/vespalib/stllike/hashtable.cpp
index 1b62149d96e..9f0d0137e66 100644
--- a/vespalib/src/vespa/vespalib/stllike/hashtable.cpp
+++ b/vespalib/src/vespa/vespalib/stllike/hashtable.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/stllike/hashtable.hpp>
#include <algorithm>
diff --git a/vespalib/src/vespa/vespalib/stllike/hashtable.h b/vespalib/src/vespa/vespalib/stllike/hashtable.h
index ede18f89dc2..af98ad0beb4 100644
--- a/vespalib/src/vespa/vespalib/stllike/hashtable.h
+++ b/vespalib/src/vespa/vespalib/stllike/hashtable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/array.h>
diff --git a/vespalib/src/vespa/vespalib/stllike/hashtable.hpp b/vespalib/src/vespa/vespalib/stllike/hashtable.hpp
index 494dc223f5b..52ca9e87247 100644
--- a/vespalib/src/vespa/vespalib/stllike/hashtable.hpp
+++ b/vespalib/src/vespa/vespalib/stllike/hashtable.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "hashtable.h"
diff --git a/vespalib/src/vespa/vespalib/stllike/lexical_cast.h b/vespalib/src/vespa/vespalib/stllike/lexical_cast.h
index ce3f601ae52..21659b697e2 100644
--- a/vespalib/src/vespa/vespalib/stllike/lexical_cast.h
+++ b/vespalib/src/vespa/vespalib/stllike/lexical_cast.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/vespalib/src/vespa/vespalib/stllike/replace_variable.cpp b/vespalib/src/vespa/vespalib/stllike/replace_variable.cpp
index fbbcff48963..00b9e3ccb4c 100644
--- a/vespalib/src/vespa/vespalib/stllike/replace_variable.cpp
+++ b/vespalib/src/vespa/vespalib/stllike/replace_variable.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "replace_variable.h"
#include "asciistream.h"
diff --git a/vespalib/src/vespa/vespalib/stllike/replace_variable.h b/vespalib/src/vespa/vespalib/stllike/replace_variable.h
index 8caf1c54bfd..9828851ddf1 100644
--- a/vespalib/src/vespa/vespalib/stllike/replace_variable.h
+++ b/vespalib/src/vespa/vespalib/stllike/replace_variable.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "string.h"
diff --git a/vespalib/src/vespa/vespalib/stllike/string.cpp b/vespalib/src/vespa/vespalib/stllike/string.cpp
index 4ec324ceef0..67e89d013cc 100644
--- a/vespalib/src/vespa/vespalib/stllike/string.cpp
+++ b/vespalib/src/vespa/vespalib/stllike/string.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/stllike/string.hpp>
#include <ostream>
diff --git a/vespalib/src/vespa/vespalib/stllike/string.h b/vespalib/src/vespa/vespalib/stllike/string.h
index 73d8a9d7de3..79c9d50b164 100644
--- a/vespalib/src/vespa/vespalib/stllike/string.h
+++ b/vespalib/src/vespa/vespalib/stllike/string.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <string>
diff --git a/vespalib/src/vespa/vespalib/stllike/string.hpp b/vespalib/src/vespa/vespalib/stllike/string.hpp
index 50d5717871e..7a438353e85 100644
--- a/vespalib/src/vespa/vespalib/stllike/string.hpp
+++ b/vespalib/src/vespa/vespalib/stllike/string.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "string.h"
#include <vespa/vespalib/util/alloc.h>
#include <cassert>
diff --git a/vespalib/src/vespa/vespalib/stllike/vector_map.h b/vespalib/src/vespa/vespalib/stllike/vector_map.h
index d9c5fd44bea..eba50ecbb89 100644
--- a/vespalib/src/vespa/vespalib/stllike/vector_map.h
+++ b/vespalib/src/vespa/vespalib/stllike/vector_map.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vector>
diff --git a/vespalib/src/vespa/vespalib/test/CMakeLists.txt b/vespalib/src/vespa/vespalib/test/CMakeLists.txt
index 23f19a5ac17..d658b28f94b 100644
--- a/vespalib/src/vespa/vespalib/test/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/test/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalib_vespalib_test OBJECT
SOURCES
make_tls_options_for_testing.cpp
diff --git a/vespalib/src/vespa/vespalib/test/btree/aggregated_printer.h b/vespalib/src/vespa/vespalib/test/btree/aggregated_printer.h
index 0be569491b1..c1e814a0231 100644
--- a/vespalib/src/vespa/vespalib/test/btree/aggregated_printer.h
+++ b/vespalib/src/vespa/vespalib/test/btree/aggregated_printer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/test/btree/btree_printer.h b/vespalib/src/vespa/vespalib/test/btree/btree_printer.h
index cd29f373bda..acac4df90c8 100644
--- a/vespalib/src/vespa/vespalib/test/btree/btree_printer.h
+++ b/vespalib/src/vespa/vespalib/test/btree/btree_printer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/test/btree/data_printer.h b/vespalib/src/vespa/vespalib/test/btree/data_printer.h
index c87b3aad949..9067f674ae4 100644
--- a/vespalib/src/vespa/vespalib/test/btree/data_printer.h
+++ b/vespalib/src/vespa/vespalib/test/btree/data_printer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/test/chunked_input.h b/vespalib/src/vespa/vespalib/test/chunked_input.h
index e85d33a9459..ca65cd420ac 100644
--- a/vespalib/src/vespa/vespalib/test/chunked_input.h
+++ b/vespalib/src/vespa/vespalib/test/chunked_input.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/data/input.h>
diff --git a/vespalib/src/vespa/vespalib/test/datastore/memstats.h b/vespalib/src/vespa/vespalib/test/datastore/memstats.h
index 04e7e6d9090..dc6a0e887ee 100644
--- a/vespalib/src/vespa/vespalib/test/datastore/memstats.h
+++ b/vespalib/src/vespa/vespalib/test/datastore/memstats.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/test/insertion_operators.h b/vespalib/src/vespa/vespalib/test/insertion_operators.h
index ccdfeff1059..4e6dfae03d0 100644
--- a/vespalib/src/vespa/vespalib/test/insertion_operators.h
+++ b/vespalib/src/vespa/vespalib/test/insertion_operators.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <map>
diff --git a/vespalib/src/vespa/vespalib/test/make_tls_options_for_testing.cpp b/vespalib/src/vespa/vespalib/test/make_tls_options_for_testing.cpp
index ad46e7272cb..29043dc42a5 100644
--- a/vespalib/src/vespa/vespalib/test/make_tls_options_for_testing.cpp
+++ b/vespalib/src/vespa/vespalib/test/make_tls_options_for_testing.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "make_tls_options_for_testing.h"
#include <vespa/vespalib/crypto/private_key.h>
diff --git a/vespalib/src/vespa/vespalib/test/make_tls_options_for_testing.h b/vespalib/src/vespa/vespalib/test/make_tls_options_for_testing.h
index 41e5d7cc86d..055d9cbdfa6 100644
--- a/vespalib/src/vespa/vespalib/test/make_tls_options_for_testing.h
+++ b/vespalib/src/vespa/vespalib/test/make_tls_options_for_testing.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/test/memory_allocator_observer.cpp b/vespalib/src/vespa/vespalib/test/memory_allocator_observer.cpp
index 8b773284e65..ba23970f0ea 100644
--- a/vespalib/src/vespa/vespalib/test/memory_allocator_observer.cpp
+++ b/vespalib/src/vespa/vespalib/test/memory_allocator_observer.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "memory_allocator_observer.h"
#include <iostream>
diff --git a/vespalib/src/vespa/vespalib/test/memory_allocator_observer.h b/vespalib/src/vespa/vespalib/test/memory_allocator_observer.h
index b4371c12b2d..0ad07535f62 100644
--- a/vespalib/src/vespa/vespalib/test/memory_allocator_observer.h
+++ b/vespalib/src/vespa/vespalib/test/memory_allocator_observer.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/test/peer_policy_utils.cpp b/vespalib/src/vespa/vespalib/test/peer_policy_utils.cpp
index 0520db6a93c..724efa63e47 100644
--- a/vespalib/src/vespa/vespalib/test/peer_policy_utils.cpp
+++ b/vespalib/src/vespa/vespalib/test/peer_policy_utils.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "peer_policy_utils.h"
diff --git a/vespalib/src/vespa/vespalib/test/peer_policy_utils.h b/vespalib/src/vespa/vespalib/test/peer_policy_utils.h
index 4ff0f828b0d..fe382f01b50 100644
--- a/vespalib/src/vespa/vespalib/test/peer_policy_utils.h
+++ b/vespalib/src/vespa/vespalib/test/peer_policy_utils.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/net/tls/peer_policies.h>
diff --git a/vespalib/src/vespa/vespalib/test/socket_options_verifier.h b/vespalib/src/vespa/vespalib/test/socket_options_verifier.h
index 8f9901e8acc..34110d076ae 100644
--- a/vespalib/src/vespa/vespalib/test/socket_options_verifier.h
+++ b/vespalib/src/vespa/vespalib/test/socket_options_verifier.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/testkit/CMakeLists.txt b/vespalib/src/vespa/vespalib/testkit/CMakeLists.txt
index ab1a3714463..5ce374da58b 100644
--- a/vespalib/src/vespa/vespalib/testkit/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/testkit/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalib_vespalib_testkit OBJECT
SOURCES
test_comparators.cpp
diff --git a/vespalib/src/vespa/vespalib/testkit/generated_fixture_macros.h b/vespalib/src/vespa/vespalib/testkit/generated_fixture_macros.h
index af4a9a6aa87..cc69b534f4c 100644
--- a/vespalib/src/vespa/vespalib/testkit/generated_fixture_macros.h
+++ b/vespalib/src/vespa/vespalib/testkit/generated_fixture_macros.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// macros for up to 9 test fixtures, generated by vespalib/testkit/make_fixture_macros
// common test macro implementation for 0 test fixtures BEGIN
diff --git a/vespalib/src/vespa/vespalib/testkit/progctl.sh b/vespalib/src/vespa/vespalib/testkit/progctl.sh
index 3ab4e4135a1..eddfcd9e1ba 100755
--- a/vespalib/src/vespa/vespalib/testkit/progctl.sh
+++ b/vespalib/src/vespa/vespalib/testkit/progctl.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# define prog entry (called from progdefs file)
# $1 - program name
diff --git a/vespalib/src/vespa/vespalib/testkit/test_comparators.cpp b/vespalib/src/vespa/vespalib/testkit/test_comparators.cpp
index b30b3aaa421..1a084102ca8 100644
--- a/vespalib/src/vespa/vespalib/testkit/test_comparators.cpp
+++ b/vespalib/src/vespa/vespalib/testkit/test_comparators.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "test_comparators.h"
diff --git a/vespalib/src/vespa/vespalib/testkit/test_comparators.h b/vespalib/src/vespa/vespalib/testkit/test_comparators.h
index 164e486cf4a..d6115c11b7b 100644
--- a/vespalib/src/vespa/vespalib/testkit/test_comparators.h
+++ b/vespalib/src/vespa/vespalib/testkit/test_comparators.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/testkit/test_hook.cpp b/vespalib/src/vespa/vespalib/testkit/test_hook.cpp
index afc0792e729..109f70bd2ad 100644
--- a/vespalib/src/vespa/vespalib/testkit/test_hook.cpp
+++ b/vespalib/src/vespa/vespalib/testkit/test_hook.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "test_hook.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/vespalib/src/vespa/vespalib/testkit/test_hook.h b/vespalib/src/vespa/vespalib/testkit/test_hook.h
index 706a1c9f741..30a3ae875d1 100644
--- a/vespalib/src/vespa/vespalib/testkit/test_hook.h
+++ b/vespalib/src/vespa/vespalib/testkit/test_hook.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/testkit/test_kit.h b/vespalib/src/vespa/vespalib/testkit/test_kit.h
index 0587396ceda..940fee649c8 100644
--- a/vespalib/src/vespa/vespalib/testkit/test_kit.h
+++ b/vespalib/src/vespa/vespalib/testkit/test_kit.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/testkit/test_macros.h b/vespalib/src/vespa/vespalib/testkit/test_macros.h
index 18376b9dbaa..5ee8e170ef0 100644
--- a/vespalib/src/vespa/vespalib/testkit/test_macros.h
+++ b/vespalib/src/vespa/vespalib/testkit/test_macros.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/testkit/test_master.cpp b/vespalib/src/vespa/vespalib/testkit/test_master.cpp
index 60e51ac3a91..64282d23d6a 100644
--- a/vespalib/src/vespa/vespalib/testkit/test_master.cpp
+++ b/vespalib/src/vespa/vespalib/testkit/test_master.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "test_master.h"
#include <vespa/vespalib/util/barrier.h>
diff --git a/vespalib/src/vespa/vespalib/testkit/test_master.h b/vespalib/src/vespa/vespalib/testkit/test_master.h
index c20982b994d..01ea94c074d 100644
--- a/vespalib/src/vespa/vespalib/testkit/test_master.h
+++ b/vespalib/src/vespa/vespalib/testkit/test_master.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/testkit/test_master.hpp b/vespalib/src/vespa/vespalib/testkit/test_master.hpp
index 245c128b788..7d9b2e1fddc 100644
--- a/vespalib/src/vespa/vespalib/testkit/test_master.hpp
+++ b/vespalib/src/vespa/vespalib/testkit/test_master.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <sstream>
diff --git a/vespalib/src/vespa/vespalib/testkit/test_state_guard.cpp b/vespalib/src/vespa/vespalib/testkit/test_state_guard.cpp
index 53808e572af..0c3cb2e2f07 100644
--- a/vespalib/src/vespa/vespalib/testkit/test_state_guard.cpp
+++ b/vespalib/src/vespa/vespalib/testkit/test_state_guard.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "test_state_guard.h"
diff --git a/vespalib/src/vespa/vespalib/testkit/test_state_guard.h b/vespalib/src/vespa/vespalib/testkit/test_state_guard.h
index cd13ac6b719..bb59e0de14d 100644
--- a/vespalib/src/vespa/vespalib/testkit/test_state_guard.h
+++ b/vespalib/src/vespa/vespalib/testkit/test_state_guard.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/testkit/testapp.cpp b/vespalib/src/vespa/vespalib/testkit/testapp.cpp
index 4f4594e07c3..4a7f0fd20e7 100644
--- a/vespalib/src/vespa/vespalib/testkit/testapp.cpp
+++ b/vespalib/src/vespa/vespalib/testkit/testapp.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "testapp.h"
diff --git a/vespalib/src/vespa/vespalib/testkit/testapp.h b/vespalib/src/vespa/vespalib/testkit/testapp.h
index b7bd28bd5cf..facb0857e8c 100644
--- a/vespalib/src/vespa/vespalib/testkit/testapp.h
+++ b/vespalib/src/vespa/vespalib/testkit/testapp.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "test_kit.h"
diff --git a/vespalib/src/vespa/vespalib/testkit/time_bomb.cpp b/vespalib/src/vespa/vespalib/testkit/time_bomb.cpp
index 2d75fcdd18f..22cd535f434 100644
--- a/vespalib/src/vespa/vespalib/testkit/time_bomb.cpp
+++ b/vespalib/src/vespa/vespalib/testkit/time_bomb.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "time_bomb.h"
#include <vespa/log/log.h>
diff --git a/vespalib/src/vespa/vespalib/testkit/time_bomb.h b/vespalib/src/vespa/vespalib/testkit/time_bomb.h
index 8412e4b8661..a88aeeadd9a 100644
--- a/vespalib/src/vespa/vespalib/testkit/time_bomb.h
+++ b/vespalib/src/vespa/vespalib/testkit/time_bomb.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/text/CMakeLists.txt b/vespalib/src/vespa/vespalib/text/CMakeLists.txt
index 924ab00d03f..f9897c27210 100644
--- a/vespalib/src/vespa/vespalib/text/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/text/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalib_vespalib_text OBJECT
SOURCES
lowercase.cpp
diff --git a/vespalib/src/vespa/vespalib/text/lowercase.cpp b/vespalib/src/vespa/vespalib/text/lowercase.cpp
index 7296819084b..604027d2687 100644
--- a/vespalib/src/vespa/vespalib/text/lowercase.cpp
+++ b/vespalib/src/vespa/vespalib/text/lowercase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "lowercase.h"
#include <vespa/vespalib/text/utf8.h>
diff --git a/vespalib/src/vespa/vespalib/text/lowercase.h b/vespalib/src/vespa/vespalib/text/lowercase.h
index d007ac37b3e..e0ed742c3c5 100644
--- a/vespalib/src/vespa/vespalib/text/lowercase.h
+++ b/vespalib/src/vespa/vespalib/text/lowercase.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// $Id$
diff --git a/vespalib/src/vespa/vespalib/text/stringtokenizer.cpp b/vespalib/src/vespa/vespalib/text/stringtokenizer.cpp
index 8b6cc79f26b..133260e0634 100644
--- a/vespalib/src/vespa/vespalib/text/stringtokenizer.cpp
+++ b/vespalib/src/vespa/vespalib/text/stringtokenizer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "stringtokenizer.h"
diff --git a/vespalib/src/vespa/vespalib/text/stringtokenizer.h b/vespalib/src/vespa/vespalib/text/stringtokenizer.h
index f1111eee7de..e88c8c04b51 100644
--- a/vespalib/src/vespa/vespalib/text/stringtokenizer.h
+++ b/vespalib/src/vespa/vespalib/text/stringtokenizer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @version $Id$
* @author Haakon Humberset
diff --git a/vespalib/src/vespa/vespalib/text/utf8.cpp b/vespalib/src/vespa/vespalib/text/utf8.cpp
index 58b587d45b5..cae2bbae682 100644
--- a/vespalib/src/vespa/vespalib/text/utf8.cpp
+++ b/vespalib/src/vespa/vespalib/text/utf8.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "utf8.h"
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/vespalib/src/vespa/vespalib/text/utf8.h b/vespalib/src/vespa/vespalib/text/utf8.h
index e65aaee9708..aa0e7c2f680 100644
--- a/vespalib/src/vespa/vespalib/text/utf8.h
+++ b/vespalib/src/vespa/vespalib/text/utf8.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// $Id$
#pragma once
diff --git a/vespalib/src/vespa/vespalib/time/CMakeLists.txt b/vespalib/src/vespa/vespalib/time/CMakeLists.txt
index a742228932e..9521f48b119 100644
--- a/vespalib/src/vespa/vespalib/time/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/time/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalib_vespalib_time OBJECT
SOURCES
time_box.cpp
diff --git a/vespalib/src/vespa/vespalib/time/time_box.cpp b/vespalib/src/vespa/vespalib/time/time_box.cpp
index 1924256201e..b10f4295d9c 100644
--- a/vespalib/src/vespa/vespalib/time/time_box.cpp
+++ b/vespalib/src/vespa/vespalib/time/time_box.cpp
@@ -1,2 +1,2 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "time_box.h"
diff --git a/vespalib/src/vespa/vespalib/time/time_box.h b/vespalib/src/vespa/vespalib/time/time_box.h
index 20f52e0ba70..b8ea049f786 100644
--- a/vespalib/src/vespa/vespalib/time/time_box.h
+++ b/vespalib/src/vespa/vespalib/time/time_box.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <chrono>
diff --git a/vespalib/src/vespa/vespalib/trace/CMakeLists.txt b/vespalib/src/vespa/vespalib/trace/CMakeLists.txt
index 5028de1490c..7c83b2c096a 100644
--- a/vespalib/src/vespa/vespalib/trace/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/trace/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalib_vespalib_trace OBJECT
SOURCES
trace.cpp
diff --git a/vespalib/src/vespa/vespalib/trace/slime_trace_deserializer.cpp b/vespalib/src/vespa/vespalib/trace/slime_trace_deserializer.cpp
index eea59f2164f..658dba76687 100644
--- a/vespalib/src/vespa/vespalib/trace/slime_trace_deserializer.cpp
+++ b/vespalib/src/vespa/vespalib/trace/slime_trace_deserializer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/trace/slime_trace_deserializer.h>
#include <vespa/vespalib/trace/slime_trace_serializer.h>
#include <vespa/vespalib/trace/tracenode.h>
diff --git a/vespalib/src/vespa/vespalib/trace/slime_trace_deserializer.h b/vespalib/src/vespa/vespalib/trace/slime_trace_deserializer.h
index 6dbe13caa40..783ba38a947 100644
--- a/vespalib/src/vespa/vespalib/trace/slime_trace_deserializer.h
+++ b/vespalib/src/vespa/vespalib/trace/slime_trace_deserializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/data/slime/slime.h>
diff --git a/vespalib/src/vespa/vespalib/trace/slime_trace_serializer.cpp b/vespalib/src/vespa/vespalib/trace/slime_trace_serializer.cpp
index ccf5d50517a..1d18170f555 100644
--- a/vespalib/src/vespa/vespalib/trace/slime_trace_serializer.cpp
+++ b/vespalib/src/vespa/vespalib/trace/slime_trace_serializer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "slime_trace_serializer.h"
#include "trace.h"
#include <cassert>
diff --git a/vespalib/src/vespa/vespalib/trace/slime_trace_serializer.h b/vespalib/src/vespa/vespalib/trace/slime_trace_serializer.h
index 1d5b5638f48..61b36a121ef 100644
--- a/vespalib/src/vespa/vespalib/trace/slime_trace_serializer.h
+++ b/vespalib/src/vespa/vespalib/trace/slime_trace_serializer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/trace/tracevisitor.h>
diff --git a/vespalib/src/vespa/vespalib/trace/trace.cpp b/vespalib/src/vespa/vespalib/trace/trace.cpp
index be370aebbd2..91480a58dba 100644
--- a/vespalib/src/vespa/vespalib/trace/trace.cpp
+++ b/vespalib/src/vespa/vespalib/trace/trace.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/trace/trace.h>
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/vespalib/src/vespa/vespalib/trace/trace.h b/vespalib/src/vespa/vespalib/trace/trace.h
index fbeb4f2fda8..f6645f922b3 100644
--- a/vespalib/src/vespa/vespalib/trace/trace.h
+++ b/vespalib/src/vespa/vespalib/trace/trace.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "tracenode.h"
diff --git a/vespalib/src/vespa/vespalib/trace/tracelevel.h b/vespalib/src/vespa/vespalib/trace/tracelevel.h
index e104ceaf97b..43d6938f851 100644
--- a/vespalib/src/vespa/vespalib/trace/tracelevel.h
+++ b/vespalib/src/vespa/vespalib/trace/tracelevel.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace vespalib {
diff --git a/vespalib/src/vespa/vespalib/trace/tracenode.cpp b/vespalib/src/vespa/vespalib/trace/tracenode.cpp
index 02883eda808..072d76d8f32 100644
--- a/vespalib/src/vespa/vespalib/trace/tracenode.cpp
+++ b/vespalib/src/vespa/vespalib/trace/tracenode.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "tracenode.h"
#include "tracevisitor.h"
diff --git a/vespalib/src/vespa/vespalib/trace/tracenode.h b/vespalib/src/vespa/vespalib/trace/tracenode.h
index 7a7cdb89c69..1abf440ea53 100644
--- a/vespalib/src/vespa/vespalib/trace/tracenode.h
+++ b/vespalib/src/vespa/vespalib/trace/tracenode.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/vespalib/src/vespa/vespalib/trace/tracevisitor.h b/vespalib/src/vespa/vespalib/trace/tracevisitor.h
index f5b840b5660..1556adffc5d 100644
--- a/vespalib/src/vespa/vespalib/trace/tracevisitor.h
+++ b/vespalib/src/vespa/vespalib/trace/tracevisitor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace vespalib {
diff --git a/vespalib/src/vespa/vespalib/util/CMakeLists.txt b/vespalib/src/vespa/vespalib/util/CMakeLists.txt
index 17fc14d0e9e..9e2917775f0 100644
--- a/vespalib/src/vespa/vespalib/util/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/util/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalib_vespalib_util OBJECT
SOURCES
active.cpp
@@ -11,6 +11,7 @@ vespa_add_library(vespalib_vespalib_util OBJECT
barrier.cpp
benchmark_timer.cpp
bfloat16.cpp
+ binary_hamming_distance.cpp
blockingthreadstackexecutor.cpp
box.cpp
child_process.cpp
@@ -28,6 +29,7 @@ vespa_add_library(vespalib_vespalib_util OBJECT
generationholder.cpp
hdr_abort.cpp
host_name.cpp
+ issue.cpp
joinable.cpp
latch.cpp
left_right_heap.cpp
diff --git a/vespalib/src/vespa/vespalib/util/active.cpp b/vespalib/src/vespa/vespalib/util/active.cpp
index 0eeb25b0f64..48785c74b79 100644
--- a/vespalib/src/vespa/vespalib/util/active.cpp
+++ b/vespalib/src/vespa/vespalib/util/active.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "active.h"
diff --git a/vespalib/src/vespa/vespalib/util/active.h b/vespalib/src/vespa/vespalib/util/active.h
index ddd2e236206..1fbff9514d7 100644
--- a/vespalib/src/vespa/vespalib/util/active.h
+++ b/vespalib/src/vespa/vespalib/util/active.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/address_space.cpp b/vespalib/src/vespa/vespalib/util/address_space.cpp
index 113e4ba1478..67548a506d0 100644
--- a/vespalib/src/vespa/vespalib/util/address_space.cpp
+++ b/vespalib/src/vespa/vespalib/util/address_space.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "address_space.h"
#include <ostream>
@@ -6,6 +6,13 @@
namespace vespalib {
+AddressSpace::AddressSpace()
+ : _used(0),
+ _dead(0),
+ _limit(0)
+{
+}
+
AddressSpace::AddressSpace(size_t used_, size_t dead_, size_t limit_)
: _used(used_),
_dead(dead_),
diff --git a/vespalib/src/vespa/vespalib/util/address_space.h b/vespalib/src/vespa/vespalib/util/address_space.h
index 98ffdac9599..948217bfd2b 100644
--- a/vespalib/src/vespa/vespalib/util/address_space.h
+++ b/vespalib/src/vespa/vespalib/util/address_space.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
@@ -18,6 +18,7 @@ private:
size_t _limit;
public:
+ AddressSpace();
AddressSpace(size_t used_, size_t dead_, size_t limit_);
size_t used() const { return _used; }
size_t dead() const { return _dead; }
diff --git a/vespalib/src/vespa/vespalib/util/alloc.cpp b/vespalib/src/vespa/vespalib/util/alloc.cpp
index 5f1faa785ba..69f2eedcecb 100644
--- a/vespalib/src/vespa/vespalib/util/alloc.cpp
+++ b/vespalib/src/vespa/vespalib/util/alloc.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "alloc.h"
#include "memory_allocator.h"
#include "round_up_to_page_size.h"
@@ -199,9 +199,10 @@ void createAlignedAutoAllocators(AutoAllocatorsMap & map, size_t mmapLimit) {
AutoAllocatorsMap
createAutoAllocators() {
+ constexpr size_t allowed_huge_pages_limits[] = {1,2,4,8,16,32,64,128,256};
AutoAllocatorsMap map;
- map.reserve(3*5);
- for (size_t pages : {1,2,4,8,16}) {
+ map.reserve(3 * sizeof(allowed_huge_pages_limits)/sizeof(allowed_huge_pages_limits[0]));
+ for (size_t pages : allowed_huge_pages_limits) {
size_t mmapLimit = pages * MemoryAllocator::HUGEPAGE_SIZE;
createAlignedAutoAllocators(map, mmapLimit);
}
diff --git a/vespalib/src/vespa/vespalib/util/alloc.h b/vespalib/src/vespa/vespalib/util/alloc.h
index a97e8c9f25e..d25fb6f6a7c 100644
--- a/vespalib/src/vespa/vespalib/util/alloc.h
+++ b/vespalib/src/vespa/vespalib/util/alloc.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "optimized.h"
diff --git a/vespalib/src/vespa/vespalib/util/approx.cpp b/vespalib/src/vespa/vespalib/util/approx.cpp
index 34b61eda44a..0c2d258fd90 100644
--- a/vespalib/src/vespa/vespalib/util/approx.cpp
+++ b/vespalib/src/vespa/vespalib/util/approx.cpp
@@ -1,2 +1,2 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "approx.h"
diff --git a/vespalib/src/vespa/vespalib/util/approx.h b/vespalib/src/vespa/vespalib/util/approx.h
index 8c6baa648ea..0920680364c 100644
--- a/vespalib/src/vespa/vespalib/util/approx.h
+++ b/vespalib/src/vespa/vespalib/util/approx.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/array.cpp b/vespalib/src/vespa/vespalib/util/array.cpp
index 0a05555b82e..4de989a0ab5 100644
--- a/vespalib/src/vespa/vespalib/util/array.cpp
+++ b/vespalib/src/vespa/vespalib/util/array.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "array.hpp"
#include "array_equal.hpp"
diff --git a/vespalib/src/vespa/vespalib/util/array.h b/vespalib/src/vespa/vespalib/util/array.h
index 1fdf3471fbb..30d87cd98f6 100644
--- a/vespalib/src/vespa/vespalib/util/array.h
+++ b/vespalib/src/vespa/vespalib/util/array.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "alloc.h"
diff --git a/vespalib/src/vespa/vespalib/util/array.hpp b/vespalib/src/vespa/vespalib/util/array.hpp
index 8eb33af2a3a..e9070f5759c 100644
--- a/vespalib/src/vespa/vespalib/util/array.hpp
+++ b/vespalib/src/vespa/vespalib/util/array.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "array.h"
diff --git a/vespalib/src/vespa/vespalib/util/array_equal.hpp b/vespalib/src/vespa/vespalib/util/array_equal.hpp
index 5d4a557d69f..3b3aab6280b 100644
--- a/vespalib/src/vespa/vespalib/util/array_equal.hpp
+++ b/vespalib/src/vespa/vespalib/util/array_equal.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "array.h"
diff --git a/vespalib/src/vespa/vespalib/util/arrayqueue.hpp b/vespalib/src/vespa/vespalib/util/arrayqueue.hpp
index 9af446e7a0f..73e70e7fd89 100644
--- a/vespalib/src/vespa/vespalib/util/arrayqueue.hpp
+++ b/vespalib/src/vespa/vespalib/util/arrayqueue.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/arrayref.h b/vespalib/src/vespa/vespalib/util/arrayref.h
index 2433f9251cf..db3b39f400d 100644
--- a/vespalib/src/vespa/vespalib/util/arrayref.h
+++ b/vespalib/src/vespa/vespalib/util/arrayref.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "array.h"
diff --git a/vespalib/src/vespa/vespalib/util/arraysize.h b/vespalib/src/vespa/vespalib/util/arraysize.h
index 97c8d911598..d444ec6e597 100644
--- a/vespalib/src/vespa/vespalib/util/arraysize.h
+++ b/vespalib/src/vespa/vespalib/util/arraysize.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/assert.cpp b/vespalib/src/vespa/vespalib/util/assert.cpp
index 0482d873f7f..4844f6346fe 100644
--- a/vespalib/src/vespa/vespalib/util/assert.cpp
+++ b/vespalib/src/vespa/vespalib/util/assert.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "assert.h"
#include <vespa/defaults.h>
diff --git a/vespalib/src/vespa/vespalib/util/assert.h b/vespalib/src/vespa/vespalib/util/assert.h
index 698fa6774c1..0fe242e2eea 100644
--- a/vespalib/src/vespa/vespalib/util/assert.h
+++ b/vespalib/src/vespa/vespalib/util/assert.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/backtrace.cpp b/vespalib/src/vespa/vespalib/util/backtrace.cpp
index ee7f39597a6..2241c292565 100644
--- a/vespalib/src/vespa/vespalib/util/backtrace.cpp
+++ b/vespalib/src/vespa/vespalib/util/backtrace.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/backtrace.h>
#include <vespa/vespalib/util/memory.h>
diff --git a/vespalib/src/vespa/vespalib/util/backtrace.h b/vespalib/src/vespa/vespalib/util/backtrace.h
index 2568ef7d834..558657f8a59 100644
--- a/vespalib/src/vespa/vespalib/util/backtrace.h
+++ b/vespalib/src/vespa/vespalib/util/backtrace.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/vespalib/src/vespa/vespalib/util/barrier.cpp b/vespalib/src/vespa/vespalib/util/barrier.cpp
index 32f63424ae1..32e98cb54c3 100644
--- a/vespalib/src/vespa/vespalib/util/barrier.cpp
+++ b/vespalib/src/vespa/vespalib/util/barrier.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "barrier.h"
diff --git a/vespalib/src/vespa/vespalib/util/barrier.h b/vespalib/src/vespa/vespalib/util/barrier.h
index 3eeb0cb5837..5f19bafd292 100644
--- a/vespalib/src/vespa/vespalib/util/barrier.h
+++ b/vespalib/src/vespa/vespalib/util/barrier.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/benchmark_timer.cpp b/vespalib/src/vespa/vespalib/util/benchmark_timer.cpp
index ac5617b8268..53cebaa3724 100644
--- a/vespalib/src/vespa/vespalib/util/benchmark_timer.cpp
+++ b/vespalib/src/vespa/vespalib/util/benchmark_timer.cpp
@@ -1,2 +1,2 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "benchmark_timer.h"
diff --git a/vespalib/src/vespa/vespalib/util/benchmark_timer.h b/vespalib/src/vespa/vespalib/util/benchmark_timer.h
index 8e0821d6127..d91d58069fa 100644
--- a/vespalib/src/vespa/vespalib/util/benchmark_timer.h
+++ b/vespalib/src/vespa/vespalib/util/benchmark_timer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <chrono>
diff --git a/vespalib/src/vespa/vespalib/util/bfloat16.cpp b/vespalib/src/vespa/vespalib/util/bfloat16.cpp
index 5713ea66886..fb60f282c17 100644
--- a/vespalib/src/vespa/vespalib/util/bfloat16.cpp
+++ b/vespalib/src/vespa/vespalib/util/bfloat16.cpp
@@ -1,3 +1,3 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bfloat16.h"
diff --git a/vespalib/src/vespa/vespalib/util/bfloat16.h b/vespalib/src/vespa/vespalib/util/bfloat16.h
index 573f94ec89f..a94f3fc5b06 100644
--- a/vespalib/src/vespa/vespalib/util/bfloat16.h
+++ b/vespalib/src/vespa/vespalib/util/bfloat16.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/binary_hamming_distance.cpp b/vespalib/src/vespa/vespalib/util/binary_hamming_distance.cpp
new file mode 100644
index 00000000000..cbf940c9f0c
--- /dev/null
+++ b/vespalib/src/vespa/vespalib/util/binary_hamming_distance.cpp
@@ -0,0 +1,33 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include "binary_hamming_distance.h"
+#include <cstdint>
+
+namespace vespalib {
+
+size_t binary_hamming_distance(const void *lhs, const void *rhs, size_t sz) {
+ uintptr_t addr_a = (uintptr_t) lhs;
+ uintptr_t addr_b = (uintptr_t) rhs;
+ size_t sum = 0;
+ size_t i = 0;
+ static_assert(sizeof(uint64_t) == 8);
+ bool aligned = ((addr_a & 0x7) == 0) && ((addr_b & 0x7) == 0);
+ if (__builtin_expect(aligned, true)) {
+ const uint64_t *words_a = static_cast<const uint64_t *>(lhs);
+ const uint64_t *words_b = static_cast<const uint64_t *>(rhs);
+ for (; i * 8 + 7 < sz; ++i) {
+ uint64_t xor_bits = words_a[i] ^ words_b[i];
+ sum += __builtin_popcountl(xor_bits);
+ }
+ }
+ if (__builtin_expect((i * 8 < sz), false)) {
+ const uint8_t *bytes_a = static_cast<const uint8_t *>(lhs);
+ const uint8_t *bytes_b = static_cast<const uint8_t *>(rhs);
+ for (i *= 8; i < sz; ++i) {
+ uint64_t xor_bits = bytes_a[i] ^ bytes_b[i];
+ sum += __builtin_popcountl(xor_bits);
+ }
+ }
+ return sum;
+};
+
+}
diff --git a/vespalib/src/vespa/vespalib/util/binary_hamming_distance.h b/vespalib/src/vespa/vespalib/util/binary_hamming_distance.h
new file mode 100644
index 00000000000..ce8c8dacdf9
--- /dev/null
+++ b/vespalib/src/vespa/vespalib/util/binary_hamming_distance.h
@@ -0,0 +1,14 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#pragma once
+#include <cstddef>
+namespace vespalib {
+/**
+ * Compute Hamming distance between two binary blobs
+ *
+ * @param lhs a blob (to interpret as a bitvector with sz*8 bits)
+ * @param rhs a blob (to interpret as a bitvector with sz*8 bits)
+ * @param sz number of bytes in each blob
+ * @return number of bits that differ when comparing the two blobs
+ **/
+size_t binary_hamming_distance(const void *lhs, const void *rhs, size_t sz);
+}
diff --git a/vespalib/src/vespa/vespalib/util/blockingthreadstackexecutor.cpp b/vespalib/src/vespa/vespalib/util/blockingthreadstackexecutor.cpp
index 45e64773ea7..a80af57d900 100644
--- a/vespalib/src/vespa/vespalib/util/blockingthreadstackexecutor.cpp
+++ b/vespalib/src/vespa/vespalib/util/blockingthreadstackexecutor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "blockingthreadstackexecutor.h"
diff --git a/vespalib/src/vespa/vespalib/util/blockingthreadstackexecutor.h b/vespalib/src/vespa/vespalib/util/blockingthreadstackexecutor.h
index 63e25d1554b..7a095f8c70a 100644
--- a/vespalib/src/vespa/vespalib/util/blockingthreadstackexecutor.h
+++ b/vespalib/src/vespa/vespalib/util/blockingthreadstackexecutor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/bobhash.h b/vespalib/src/vespa/vespalib/util/bobhash.h
index 60cbe2cbca3..f19b07fddb9 100644
--- a/vespalib/src/vespa/vespalib/util/bobhash.h
+++ b/vespalib/src/vespa/vespalib/util/bobhash.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <stdint.h>
diff --git a/vespalib/src/vespa/vespalib/util/box.cpp b/vespalib/src/vespa/vespalib/util/box.cpp
index b99822196ef..c91833024cc 100644
--- a/vespalib/src/vespa/vespalib/util/box.cpp
+++ b/vespalib/src/vespa/vespalib/util/box.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "box.h"
diff --git a/vespalib/src/vespa/vespalib/util/box.h b/vespalib/src/vespa/vespalib/util/box.h
index efa5d9653f1..4e0afc733fa 100644
--- a/vespalib/src/vespa/vespalib/util/box.h
+++ b/vespalib/src/vespa/vespalib/util/box.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/buffer.h b/vespalib/src/vespa/vespalib/util/buffer.h
index 52178bdb8ef..e5a09dbf300 100644
--- a/vespalib/src/vespa/vespalib/util/buffer.h
+++ b/vespalib/src/vespa/vespalib/util/buffer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstddef>
diff --git a/vespalib/src/vespa/vespalib/util/child_process.cpp b/vespalib/src/vespa/vespalib/util/child_process.cpp
index 9233932336f..7193a445f9a 100644
--- a/vespalib/src/vespa/vespalib/util/child_process.cpp
+++ b/vespalib/src/vespa/vespalib/util/child_process.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "guard.h"
#include "child_process.h"
diff --git a/vespalib/src/vespa/vespalib/util/child_process.h b/vespalib/src/vespa/vespalib/util/child_process.h
index 2edf0e03638..646a2c7c6c9 100644
--- a/vespalib/src/vespa/vespalib/util/child_process.h
+++ b/vespalib/src/vespa/vespalib/util/child_process.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/classname.cpp b/vespalib/src/vespa/vespalib/util/classname.cpp
index 16d0e8cfe77..f1dd9de6686 100644
--- a/vespalib/src/vespa/vespalib/util/classname.cpp
+++ b/vespalib/src/vespa/vespalib/util/classname.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/classname.h>
#include <cxxabi.h>
diff --git a/vespalib/src/vespa/vespalib/util/classname.h b/vespalib/src/vespa/vespalib/util/classname.h
index d29d639a5b9..2b35d6c1762 100644
--- a/vespalib/src/vespa/vespalib/util/classname.h
+++ b/vespalib/src/vespa/vespalib/util/classname.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/vespalib/src/vespa/vespalib/util/compress.cpp b/vespalib/src/vespa/vespalib/util/compress.cpp
index 12f511f9062..ed237da1b28 100644
--- a/vespalib/src/vespa/vespalib/util/compress.cpp
+++ b/vespalib/src/vespa/vespalib/util/compress.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "compress.h"
#include "stringfmt.h"
diff --git a/vespalib/src/vespa/vespalib/util/compress.h b/vespalib/src/vespa/vespalib/util/compress.h
index 2bab2083b34..8218a0a43db 100644
--- a/vespalib/src/vespa/vespalib/util/compress.h
+++ b/vespalib/src/vespa/vespalib/util/compress.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/compressionconfig.h b/vespalib/src/vespa/vespalib/util/compressionconfig.h
index 88563c181a1..c868d2e611d 100644
--- a/vespalib/src/vespa/vespalib/util/compressionconfig.h
+++ b/vespalib/src/vespa/vespalib/util/compressionconfig.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cmath>
diff --git a/vespalib/src/vespa/vespalib/util/compressor.cpp b/vespalib/src/vespa/vespalib/util/compressor.cpp
index 9e059a9a29b..c477b021956 100644
--- a/vespalib/src/vespa/vespalib/util/compressor.cpp
+++ b/vespalib/src/vespa/vespalib/util/compressor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "lz4compressor.h"
#include "zstdcompressor.h"
diff --git a/vespalib/src/vespa/vespalib/util/compressor.h b/vespalib/src/vespa/vespalib/util/compressor.h
index 3a8938c888e..fd29c028af2 100644
--- a/vespalib/src/vespa/vespalib/util/compressor.h
+++ b/vespalib/src/vespa/vespalib/util/compressor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "compressionconfig.h"
diff --git a/vespalib/src/vespa/vespalib/util/count_down_latch.h b/vespalib/src/vespa/vespalib/util/count_down_latch.h
index 54b36b414d6..d543d773909 100644
--- a/vespalib/src/vespa/vespalib/util/count_down_latch.h
+++ b/vespalib/src/vespa/vespalib/util/count_down_latch.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/destructor_callbacks.cpp b/vespalib/src/vespa/vespalib/util/destructor_callbacks.cpp
index edb8381e64d..faafd3a510a 100644
--- a/vespalib/src/vespa/vespalib/util/destructor_callbacks.cpp
+++ b/vespalib/src/vespa/vespalib/util/destructor_callbacks.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "destructor_callbacks.h"
#include "gate.h"
diff --git a/vespalib/src/vespa/vespalib/util/destructor_callbacks.h b/vespalib/src/vespa/vespalib/util/destructor_callbacks.h
index 211105127cf..7fc15e0185e 100644
--- a/vespalib/src/vespa/vespalib/util/destructor_callbacks.h
+++ b/vespalib/src/vespa/vespalib/util/destructor_callbacks.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/dual_merge_director.cpp b/vespalib/src/vespa/vespalib/util/dual_merge_director.cpp
index 7a88c79bc3c..fa6596bc2b8 100644
--- a/vespalib/src/vespa/vespalib/util/dual_merge_director.cpp
+++ b/vespalib/src/vespa/vespalib/util/dual_merge_director.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "dual_merge_director.h"
diff --git a/vespalib/src/vespa/vespalib/util/dual_merge_director.h b/vespalib/src/vespa/vespalib/util/dual_merge_director.h
index 9fa220b26c4..ab6210a0804 100644
--- a/vespalib/src/vespa/vespalib/util/dual_merge_director.h
+++ b/vespalib/src/vespa/vespalib/util/dual_merge_director.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/error.cpp b/vespalib/src/vespa/vespalib/util/error.cpp
index 0bc1e896398..5304061f75a 100644
--- a/vespalib/src/vespa/vespalib/util/error.cpp
+++ b/vespalib/src/vespa/vespalib/util/error.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/error.h>
#include <system_error>
diff --git a/vespalib/src/vespa/vespalib/util/error.h b/vespalib/src/vespa/vespalib/util/error.h
index 4bf4a560563..509f1bda283 100644
--- a/vespalib/src/vespa/vespalib/util/error.h
+++ b/vespalib/src/vespa/vespalib/util/error.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/eventbarrier.hpp b/vespalib/src/vespa/vespalib/util/eventbarrier.hpp
index 79dcf131985..20a31c89512 100644
--- a/vespalib/src/vespa/vespalib/util/eventbarrier.hpp
+++ b/vespalib/src/vespa/vespalib/util/eventbarrier.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/exception.cpp b/vespalib/src/vespa/vespalib/util/exception.cpp
index 684cc547d67..89011ae04b5 100644
--- a/vespalib/src/vespa/vespalib/util/exception.cpp
+++ b/vespalib/src/vespa/vespalib/util/exception.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "exception.h"
diff --git a/vespalib/src/vespa/vespalib/util/exception.h b/vespalib/src/vespa/vespalib/util/exception.h
index 6fb53c035eb..7571025b6ef 100644
--- a/vespalib/src/vespa/vespalib/util/exception.h
+++ b/vespalib/src/vespa/vespalib/util/exception.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/exceptions.cpp b/vespalib/src/vespa/vespalib/util/exceptions.cpp
index e680a0318c7..8fb50a9403c 100644
--- a/vespalib/src/vespa/vespalib/util/exceptions.cpp
+++ b/vespalib/src/vespa/vespalib/util/exceptions.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "exceptions.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/vespalib/src/vespa/vespalib/util/exceptions.h b/vespalib/src/vespa/vespalib/util/exceptions.h
index 0525af31338..c1afaf0122a 100644
--- a/vespalib/src/vespa/vespalib/util/exceptions.h
+++ b/vespalib/src/vespa/vespalib/util/exceptions.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @file exceptions.h
* @ingroup util
diff --git a/vespalib/src/vespa/vespalib/util/executor.h b/vespalib/src/vespa/vespalib/util/executor.h
index ce610f4e84c..6ef8f182ec4 100644
--- a/vespalib/src/vespa/vespalib/util/executor.h
+++ b/vespalib/src/vespa/vespalib/util/executor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/executor_stats.h b/vespalib/src/vespa/vespalib/util/executor_stats.h
index 9b941095c27..49d83c96714 100644
--- a/vespalib/src/vespa/vespalib/util/executor_stats.h
+++ b/vespalib/src/vespa/vespalib/util/executor_stats.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/fiddle.h b/vespalib/src/vespa/vespalib/util/fiddle.h
index ef6760ed389..20a13ff4654 100644
--- a/vespalib/src/vespa/vespalib/util/fiddle.h
+++ b/vespalib/src/vespa/vespalib/util/fiddle.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/file_area_freelist.cpp b/vespalib/src/vespa/vespalib/util/file_area_freelist.cpp
index 5edebcac1ad..4894ddfa2fd 100644
--- a/vespalib/src/vespa/vespalib/util/file_area_freelist.cpp
+++ b/vespalib/src/vespa/vespalib/util/file_area_freelist.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "file_area_freelist.h"
#include <cassert>
diff --git a/vespalib/src/vespa/vespalib/util/file_area_freelist.h b/vespalib/src/vespa/vespalib/util/file_area_freelist.h
index f19dfdd7de3..00820c680ed 100644
--- a/vespalib/src/vespa/vespalib/util/file_area_freelist.h
+++ b/vespalib/src/vespa/vespalib/util/file_area_freelist.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/gate.h b/vespalib/src/vespa/vespalib/util/gate.h
index 5505a3676df..c914a4f0911 100644
--- a/vespalib/src/vespa/vespalib/util/gate.h
+++ b/vespalib/src/vespa/vespalib/util/gate.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/gencnt.cpp b/vespalib/src/vespa/vespalib/util/gencnt.cpp
index ad82cf2e67c..3c468bfd2c4 100644
--- a/vespalib/src/vespa/vespalib/util/gencnt.cpp
+++ b/vespalib/src/vespa/vespalib/util/gencnt.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "gencnt.h"
#include <cassert>
diff --git a/vespalib/src/vespa/vespalib/util/gencnt.h b/vespalib/src/vespa/vespalib/util/gencnt.h
index 72882cdcc2e..41d29e9e9ad 100644
--- a/vespalib/src/vespa/vespalib/util/gencnt.h
+++ b/vespalib/src/vespa/vespalib/util/gencnt.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdint>
diff --git a/vespalib/src/vespa/vespalib/util/generationhandler.cpp b/vespalib/src/vespa/vespalib/util/generationhandler.cpp
index 60195659eb9..23e9c9ce8ac 100644
--- a/vespalib/src/vespa/vespalib/util/generationhandler.cpp
+++ b/vespalib/src/vespa/vespalib/util/generationhandler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "generationhandler.h"
#include <cassert>
diff --git a/vespalib/src/vespa/vespalib/util/generationhandler.h b/vespalib/src/vespa/vespalib/util/generationhandler.h
index 1ba1baa7210..e03a3d24734 100644
--- a/vespalib/src/vespa/vespalib/util/generationhandler.h
+++ b/vespalib/src/vespa/vespalib/util/generationhandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/generationholder.cpp b/vespalib/src/vespa/vespalib/util/generationholder.cpp
index 136b392971c..122edf23da1 100644
--- a/vespalib/src/vespa/vespalib/util/generationholder.cpp
+++ b/vespalib/src/vespa/vespalib/util/generationholder.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "generationholder.h"
#include <cassert>
diff --git a/vespalib/src/vespa/vespalib/util/generationholder.h b/vespalib/src/vespa/vespalib/util/generationholder.h
index 54c66650f50..1ca2e54a84d 100644
--- a/vespalib/src/vespa/vespalib/util/generationholder.h
+++ b/vespalib/src/vespa/vespalib/util/generationholder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/guard.h b/vespalib/src/vespa/vespalib/util/guard.h
index bc45ff404f9..32237a59d9a 100644
--- a/vespalib/src/vespa/vespalib/util/guard.h
+++ b/vespalib/src/vespa/vespalib/util/guard.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/hdr_abort.cpp b/vespalib/src/vespa/vespalib/util/hdr_abort.cpp
index e0c46992f3b..eec995c4e76 100644
--- a/vespalib/src/vespa/vespalib/util/hdr_abort.cpp
+++ b/vespalib/src/vespa/vespalib/util/hdr_abort.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "hdr_abort.h"
#include <cstdlib>
diff --git a/vespalib/src/vespa/vespalib/util/hdr_abort.h b/vespalib/src/vespa/vespalib/util/hdr_abort.h
index c2c24ada574..48d65b37e17 100644
--- a/vespalib/src/vespa/vespalib/util/hdr_abort.h
+++ b/vespalib/src/vespa/vespalib/util/hdr_abort.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace vespalib {
diff --git a/vespalib/src/vespa/vespalib/util/host_name.cpp b/vespalib/src/vespa/vespalib/util/host_name.cpp
index 98ac2c80183..31213ac405b 100644
--- a/vespalib/src/vespa/vespalib/util/host_name.cpp
+++ b/vespalib/src/vespa/vespalib/util/host_name.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "host_name.h"
#include <vespa/defaults.h>
diff --git a/vespalib/src/vespa/vespalib/util/host_name.h b/vespalib/src/vespa/vespalib/util/host_name.h
index c799617a994..5a592771d53 100644
--- a/vespalib/src/vespa/vespalib/util/host_name.h
+++ b/vespalib/src/vespa/vespalib/util/host_name.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/idestructorcallback.h b/vespalib/src/vespa/vespalib/util/idestructorcallback.h
index 7b1dd9ed7f5..afae47effad 100644
--- a/vespalib/src/vespa/vespalib/util/idestructorcallback.h
+++ b/vespalib/src/vespa/vespalib/util/idestructorcallback.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/vespalib/src/vespa/vespalib/util/inline.h b/vespalib/src/vespa/vespalib/util/inline.h
index 86933a95347..9ecee12046f 100644
--- a/vespalib/src/vespa/vespalib/util/inline.h
+++ b/vespalib/src/vespa/vespalib/util/inline.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/issue.cpp b/vespalib/src/vespa/vespalib/util/issue.cpp
new file mode 100644
index 00000000000..9526d8d6bcd
--- /dev/null
+++ b/vespalib/src/vespa/vespalib/util/issue.cpp
@@ -0,0 +1,65 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "issue.h"
+
+#include <vespa/log/log.h>
+LOG_SETUP(".vespalib.issue");
+
+namespace vespalib {
+
+namespace {
+
+using Link = Issue::Binding::Link;
+
+struct LogIssues : Issue::Handler {
+ void handle(const Issue &issue) override {
+ LOG(warning, "issue not captured: %s", issue.message().c_str());
+ }
+};
+
+Link *get_root() {
+ static LogIssues log_issues;
+ static Link root{log_issues, nullptr};
+ return &root;
+}
+
+Link **get_head() {
+ thread_local Link *head = get_root();
+ return &head;
+}
+
+} // <unnamed>
+
+Issue::Issue(const vespalib::string &message)
+ : _message(message)
+{
+}
+
+Issue::Binding::Binding(Handler &handler)
+ : _link{handler, nullptr}
+{
+ Link **head = get_head();
+ _link.next = *head;
+ *head = &_link;
+}
+
+Issue::Binding::~Binding()
+{
+ Link **head = get_head();
+ LOG_ASSERT(*head == &_link);
+ *head = (*head)->next;
+}
+
+void
+Issue::report(const Issue &issue)
+{
+ (*get_head())->handler.handle(issue);
+}
+
+Issue::Binding
+Issue::listen(Handler &handler)
+{
+ return Binding(handler);
+}
+
+}
diff --git a/vespalib/src/vespa/vespalib/util/issue.h b/vespalib/src/vespa/vespalib/util/issue.h
new file mode 100644
index 00000000000..7cb4ebaff59
--- /dev/null
+++ b/vespalib/src/vespa/vespalib/util/issue.h
@@ -0,0 +1,66 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/vespalib/stllike/string.h>
+
+namespace vespalib {
+
+/**
+ * An Issue is an error encountered during program execution that will
+ * not affect the program flow. It is like an exception that is not
+ * (re-)thrown, but rather logged as a warning, or like an error that
+ * augments the computation result instead of replacing it. Issues are
+ * reported by the code identifying that something is wrong; similar
+ * to logging a warning. Issues are handled by an Issue::Handler that
+ * is bound to the current thread; similar to try/catch used by
+ * exceptions, but rather than disrupting the program flow we only
+ * capture any issues encountered along the way. Thread-local data
+ * structures are used to match the reporting of an issue with its
+ * appropriate handler, making it possible to handle issues across
+ * arbitrary synchronous API boundaries without changing the APIs to
+ * explicitly wire all issues through them.
+ *
+ * An Issue object represents a single issue. The static 'report'
+ * function is used to report an issue. The static 'listen' function
+ * is used to bind an Issue::Handler to the current thread using a
+ * special object that should reside on the stack and unbinds the
+ * handler when destructed. Handler bindings can be nested. Issue
+ * reports will be routed to the last handler bound to the thread.
+ *
+ * Note that the objects binding handlers to threads must not be
+ * destructed out of order; just let them go out of scope.
+ **/
+class Issue
+{
+private:
+ vespalib::string _message;
+public:
+ Issue(const vespalib::string &message);
+ const vespalib::string &message() const { return _message; }
+ struct Handler {
+ virtual void handle(const Issue &issue) = 0;
+ virtual ~Handler() = default;
+ };
+ class Binding
+ {
+ public:
+ struct Link {
+ Handler &handler;
+ Link *next;
+ };
+ private:
+ Link _link;
+ public:
+ Binding(Handler &handler);
+ Binding(Binding &&) = delete;
+ Binding(const Binding &) = delete;
+ Binding &operator=(Binding &&) = delete;
+ Binding &operator=(const Binding &) = delete;
+ ~Binding();
+ };
+ static void report(const Issue &issue);
+ static Binding listen(Handler &handler);
+};
+
+}
diff --git a/vespalib/src/vespa/vespalib/util/joinable.cpp b/vespalib/src/vespa/vespalib/util/joinable.cpp
index 41c661083e0..58112660389 100644
--- a/vespalib/src/vespa/vespalib/util/joinable.cpp
+++ b/vespalib/src/vespa/vespalib/util/joinable.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "joinable.h"
diff --git a/vespalib/src/vespa/vespalib/util/joinable.h b/vespalib/src/vespa/vespalib/util/joinable.h
index 3a4727ea150..275ae740d26 100644
--- a/vespalib/src/vespa/vespalib/util/joinable.h
+++ b/vespalib/src/vespa/vespalib/util/joinable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/lambdatask.h b/vespalib/src/vespa/vespalib/util/lambdatask.h
index 35543407aaa..070b06f31b5 100644
--- a/vespalib/src/vespa/vespalib/util/lambdatask.h
+++ b/vespalib/src/vespa/vespalib/util/lambdatask.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "executor.h"
diff --git a/vespalib/src/vespa/vespalib/util/latch.cpp b/vespalib/src/vespa/vespalib/util/latch.cpp
index 3c86b4d214e..ce98b95d4c3 100644
--- a/vespalib/src/vespa/vespalib/util/latch.cpp
+++ b/vespalib/src/vespa/vespalib/util/latch.cpp
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "latch.h"
diff --git a/vespalib/src/vespa/vespalib/util/latch.h b/vespalib/src/vespa/vespalib/util/latch.h
index 73336111c0c..3ae49aeb11f 100644
--- a/vespalib/src/vespa/vespalib/util/latch.h
+++ b/vespalib/src/vespa/vespalib/util/latch.h
@@ -1,4 +1,4 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/left_right_heap.cpp b/vespalib/src/vespa/vespalib/util/left_right_heap.cpp
index 812e41d338d..db3b3df56e9 100644
--- a/vespalib/src/vespa/vespalib/util/left_right_heap.cpp
+++ b/vespalib/src/vespa/vespalib/util/left_right_heap.cpp
@@ -1,3 +1,3 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "left_right_heap.h"
diff --git a/vespalib/src/vespa/vespalib/util/left_right_heap.h b/vespalib/src/vespa/vespalib/util/left_right_heap.h
index de9751886e5..9fa352308c6 100644
--- a/vespalib/src/vespa/vespalib/util/left_right_heap.h
+++ b/vespalib/src/vespa/vespalib/util/left_right_heap.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/left_right_heap.hpp b/vespalib/src/vespa/vespalib/util/left_right_heap.hpp
index 93f6241caf0..381ab09c73b 100644
--- a/vespalib/src/vespa/vespalib/util/left_right_heap.hpp
+++ b/vespalib/src/vespa/vespalib/util/left_right_heap.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <algorithm>
diff --git a/vespalib/src/vespa/vespalib/util/lz4compressor.cpp b/vespalib/src/vespa/vespalib/util/lz4compressor.cpp
index 366609ce7bf..d33b7339c4b 100644
--- a/vespalib/src/vespa/vespalib/util/lz4compressor.cpp
+++ b/vespalib/src/vespa/vespalib/util/lz4compressor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "lz4compressor.h"
#include <vespa/vespalib/util/alloc.h>
diff --git a/vespalib/src/vespa/vespalib/util/lz4compressor.h b/vespalib/src/vespa/vespalib/util/lz4compressor.h
index 558088a914c..e723fce80cf 100644
--- a/vespalib/src/vespa/vespalib/util/lz4compressor.h
+++ b/vespalib/src/vespa/vespalib/util/lz4compressor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "compressor.h"
diff --git a/vespalib/src/vespa/vespalib/util/macro.h b/vespalib/src/vespa/vespalib/util/macro.h
index 506c1a59e54..7f4e8ce79c5 100644
--- a/vespalib/src/vespa/vespalib/util/macro.h
+++ b/vespalib/src/vespa/vespalib/util/macro.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/md5.c b/vespalib/src/vespa/vespalib/util/md5.c
index 35319ac7e59..a57f2e18e6b 100644
--- a/vespalib/src/vespa/vespalib/util/md5.c
+++ b/vespalib/src/vespa/vespalib/util/md5.c
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* The above copyright notice applies to changes made to code derived from
* (original license follows):
diff --git a/vespalib/src/vespa/vespalib/util/md5.h b/vespalib/src/vespa/vespalib/util/md5.h
index 9ed50f8382f..f61aaee1962 100644
--- a/vespalib/src/vespa/vespalib/util/md5.h
+++ b/vespalib/src/vespa/vespalib/util/md5.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/memory.h b/vespalib/src/vespa/vespalib/util/memory.h
index 2e0d631725a..0391a7730f5 100644
--- a/vespalib/src/vespa/vespalib/util/memory.h
+++ b/vespalib/src/vespa/vespalib/util/memory.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/memory_allocator.h b/vespalib/src/vespa/vespalib/util/memory_allocator.h
index 5db99dee326..d7a000e75b4 100644
--- a/vespalib/src/vespa/vespalib/util/memory_allocator.h
+++ b/vespalib/src/vespa/vespalib/util/memory_allocator.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/memoryusage.cpp b/vespalib/src/vespa/vespalib/util/memoryusage.cpp
index 6d6f93c3be0..d48802027ad 100644
--- a/vespalib/src/vespa/vespalib/util/memoryusage.cpp
+++ b/vespalib/src/vespa/vespalib/util/memoryusage.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "memoryusage.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/vespalib/src/vespa/vespalib/util/memoryusage.h b/vespalib/src/vespa/vespalib/util/memoryusage.h
index cc245ee69e9..6429528b0eb 100644
--- a/vespalib/src/vespa/vespalib/util/memoryusage.h
+++ b/vespalib/src/vespa/vespalib/util/memoryusage.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/mmap_file_allocator.cpp b/vespalib/src/vespa/vespalib/util/mmap_file_allocator.cpp
index ff11caf31e9..c685aec1f84 100644
--- a/vespalib/src/vespa/vespalib/util/mmap_file_allocator.cpp
+++ b/vespalib/src/vespa/vespalib/util/mmap_file_allocator.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mmap_file_allocator.h"
#include "round_up_to_page_size.h"
diff --git a/vespalib/src/vespa/vespalib/util/mmap_file_allocator.h b/vespalib/src/vespa/vespalib/util/mmap_file_allocator.h
index 0d459bc2134..3b7b0039fab 100644
--- a/vespalib/src/vespa/vespalib/util/mmap_file_allocator.h
+++ b/vespalib/src/vespa/vespalib/util/mmap_file_allocator.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/mmap_file_allocator_factory.cpp b/vespalib/src/vespa/vespalib/util/mmap_file_allocator_factory.cpp
index 89dc825282c..5197a4af1c6 100644
--- a/vespalib/src/vespa/vespalib/util/mmap_file_allocator_factory.cpp
+++ b/vespalib/src/vespa/vespalib/util/mmap_file_allocator_factory.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "mmap_file_allocator_factory.h"
#include "mmap_file_allocator.h"
diff --git a/vespalib/src/vespa/vespalib/util/mmap_file_allocator_factory.h b/vespalib/src/vespa/vespalib/util/mmap_file_allocator_factory.h
index b2586787845..ffa2b0929ca 100644
--- a/vespalib/src/vespa/vespalib/util/mmap_file_allocator_factory.h
+++ b/vespalib/src/vespa/vespalib/util/mmap_file_allocator_factory.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/noncopyable.hpp b/vespalib/src/vespa/vespalib/util/noncopyable.hpp
index 49a72d4a01b..bedd1a776f0 100644
--- a/vespalib/src/vespa/vespalib/util/noncopyable.hpp
+++ b/vespalib/src/vespa/vespalib/util/noncopyable.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace vespalib {
diff --git a/vespalib/src/vespa/vespalib/util/optimized.h b/vespalib/src/vespa/vespalib/util/optimized.h
index 6c6d1b12a71..96566276f36 100644
--- a/vespalib/src/vespa/vespalib/util/optimized.h
+++ b/vespalib/src/vespa/vespalib/util/optimized.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/overview.h b/vespalib/src/vespa/vespalib/util/overview.h
index d67a6a33998..74bf0a33310 100644
--- a/vespalib/src/vespa/vespalib/util/overview.h
+++ b/vespalib/src/vespa/vespalib/util/overview.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*! \mainpage Vespalib - C++ utility library for Vespa components
*
* \section intro_sec Introduction
diff --git a/vespalib/src/vespa/vespalib/util/printable.cpp b/vespalib/src/vespa/vespalib/util/printable.cpp
index a1621e87431..e2a56c7d70f 100644
--- a/vespalib/src/vespa/vespalib/util/printable.cpp
+++ b/vespalib/src/vespa/vespalib/util/printable.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "printable.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/vespalib/src/vespa/vespalib/util/printable.h b/vespalib/src/vespa/vespalib/util/printable.h
index 427452074c3..533760362a6 100644
--- a/vespalib/src/vespa/vespalib/util/printable.h
+++ b/vespalib/src/vespa/vespalib/util/printable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class vespalib::Printable
* \ingroup util
diff --git a/vespalib/src/vespa/vespalib/util/printable.hpp b/vespalib/src/vespa/vespalib/util/printable.hpp
index 931a6212924..579b6744cff 100644
--- a/vespalib/src/vespa/vespalib/util/printable.hpp
+++ b/vespalib/src/vespa/vespalib/util/printable.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "printable.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/vespalib/src/vespa/vespalib/util/priority_queue.cpp b/vespalib/src/vespa/vespalib/util/priority_queue.cpp
index 62568df1109..bc626526edc 100644
--- a/vespalib/src/vespa/vespalib/util/priority_queue.cpp
+++ b/vespalib/src/vespa/vespalib/util/priority_queue.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "priority_queue.h"
diff --git a/vespalib/src/vespa/vespalib/util/priority_queue.h b/vespalib/src/vespa/vespalib/util/priority_queue.h
index 114d142747e..207e091a67e 100644
--- a/vespalib/src/vespa/vespalib/util/priority_queue.h
+++ b/vespalib/src/vespa/vespalib/util/priority_queue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/ptrholder.h b/vespalib/src/vespa/vespalib/util/ptrholder.h
index be528ba25db..de2c4b6941e 100644
--- a/vespalib/src/vespa/vespalib/util/ptrholder.h
+++ b/vespalib/src/vespa/vespalib/util/ptrholder.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/rand48.h b/vespalib/src/vespa/vespalib/util/rand48.h
index c82ae42684b..05290585f6d 100644
--- a/vespalib/src/vespa/vespalib/util/rand48.h
+++ b/vespalib/src/vespa/vespalib/util/rand48.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/random.cpp b/vespalib/src/vespa/vespalib/util/random.cpp
index 50ff41e3407..0b6115aceb9 100644
--- a/vespalib/src/vespa/vespalib/util/random.cpp
+++ b/vespalib/src/vespa/vespalib/util/random.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "random.h"
#include <cmath>
diff --git a/vespalib/src/vespa/vespalib/util/random.h b/vespalib/src/vespa/vespalib/util/random.h
index 1413c8de922..07c395ef232 100644
--- a/vespalib/src/vespa/vespalib/util/random.h
+++ b/vespalib/src/vespa/vespalib/util/random.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstdint>
diff --git a/vespalib/src/vespa/vespalib/util/rcuvector.cpp b/vespalib/src/vespa/vespalib/util/rcuvector.cpp
index 4c3c7e45709..e75836218e6 100644
--- a/vespalib/src/vespa/vespalib/util/rcuvector.cpp
+++ b/vespalib/src/vespa/vespalib/util/rcuvector.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "rcuvector.hpp"
diff --git a/vespalib/src/vespa/vespalib/util/rcuvector.h b/vespalib/src/vespa/vespalib/util/rcuvector.h
index 1ccfba2bb23..0396ee0d459 100644
--- a/vespalib/src/vespa/vespalib/util/rcuvector.h
+++ b/vespalib/src/vespa/vespalib/util/rcuvector.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/rcuvector.hpp b/vespalib/src/vespa/vespalib/util/rcuvector.hpp
index 8a5a828cfcb..9d7c8ea57d6 100644
--- a/vespalib/src/vespa/vespalib/util/rcuvector.hpp
+++ b/vespalib/src/vespa/vespalib/util/rcuvector.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/referencecounter.h b/vespalib/src/vespa/vespalib/util/referencecounter.h
index 63353d51cf8..28bc927fe03 100644
--- a/vespalib/src/vespa/vespalib/util/referencecounter.h
+++ b/vespalib/src/vespa/vespalib/util/referencecounter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @file referencecounter.h
* @author Thomas F. Gundersen
diff --git a/vespalib/src/vespa/vespalib/util/regexp.cpp b/vespalib/src/vespa/vespalib/util/regexp.cpp
index 0d0c7b69b12..52030387476 100644
--- a/vespalib/src/vespa/vespalib/util/regexp.cpp
+++ b/vespalib/src/vespa/vespalib/util/regexp.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <sys/types.h>
#include <regex.h>
diff --git a/vespalib/src/vespa/vespalib/util/regexp.h b/vespalib/src/vespa/vespalib/util/regexp.h
index 74a69fee361..a6891bd2114 100644
--- a/vespalib/src/vespa/vespalib/util/regexp.h
+++ b/vespalib/src/vespa/vespalib/util/regexp.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/vespalib/src/vespa/vespalib/util/rendezvous.h b/vespalib/src/vespa/vespalib/util/rendezvous.h
index e7259117272..6121b3f3dd6 100644
--- a/vespalib/src/vespa/vespalib/util/rendezvous.h
+++ b/vespalib/src/vespa/vespalib/util/rendezvous.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/rendezvous.hpp b/vespalib/src/vespa/vespalib/util/rendezvous.hpp
index 284b536460a..a22e05fac3f 100644
--- a/vespalib/src/vespa/vespalib/util/rendezvous.hpp
+++ b/vespalib/src/vespa/vespalib/util/rendezvous.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "exceptions.h"
#include <cassert>
diff --git a/vespalib/src/vespa/vespalib/util/require.cpp b/vespalib/src/vespa/vespalib/util/require.cpp
index 170e37ef21f..ce79bfce4bb 100644
--- a/vespalib/src/vespa/vespalib/util/require.cpp
+++ b/vespalib/src/vespa/vespalib/util/require.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "require.h"
#include <vespa/vespalib/stllike/asciistream.h>
diff --git a/vespalib/src/vespa/vespalib/util/require.h b/vespalib/src/vespa/vespalib/util/require.h
index 1d2069aa226..d21c8677ef0 100644
--- a/vespalib/src/vespa/vespalib/util/require.h
+++ b/vespalib/src/vespa/vespalib/util/require.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/reusable_set.cpp b/vespalib/src/vespa/vespalib/util/reusable_set.cpp
index 395fbf505ba..22b8903ccc7 100644
--- a/vespalib/src/vespa/vespalib/util/reusable_set.cpp
+++ b/vespalib/src/vespa/vespalib/util/reusable_set.cpp
@@ -1,3 +1,3 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "reusable_set.h"
diff --git a/vespalib/src/vespa/vespalib/util/reusable_set.h b/vespalib/src/vespa/vespalib/util/reusable_set.h
index 92a68a68bd6..081cad05df3 100644
--- a/vespalib/src/vespa/vespalib/util/reusable_set.h
+++ b/vespalib/src/vespa/vespalib/util/reusable_set.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/reusable_set_handle.cpp b/vespalib/src/vespa/vespalib/util/reusable_set_handle.cpp
index e69fc1b8abd..e7d5aef0eda 100644
--- a/vespalib/src/vespa/vespalib/util/reusable_set_handle.cpp
+++ b/vespalib/src/vespa/vespalib/util/reusable_set_handle.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "reusable_set_handle.h"
#include "reusable_set_pool.h"
diff --git a/vespalib/src/vespa/vespalib/util/reusable_set_handle.h b/vespalib/src/vespa/vespalib/util/reusable_set_handle.h
index be230fdc60d..77a2e3a69d5 100644
--- a/vespalib/src/vespa/vespalib/util/reusable_set_handle.h
+++ b/vespalib/src/vespa/vespalib/util/reusable_set_handle.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/reusable_set_pool.cpp b/vespalib/src/vespa/vespalib/util/reusable_set_pool.cpp
index ed4c8a4af46..c59c2220457 100644
--- a/vespalib/src/vespa/vespalib/util/reusable_set_pool.cpp
+++ b/vespalib/src/vespa/vespalib/util/reusable_set_pool.cpp
@@ -1,3 +1,3 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "reusable_set_pool.h"
diff --git a/vespalib/src/vespa/vespalib/util/reusable_set_pool.h b/vespalib/src/vespa/vespalib/util/reusable_set_pool.h
index 1af2b76dedc..65a0630f4ac 100644
--- a/vespalib/src/vespa/vespalib/util/reusable_set_pool.h
+++ b/vespalib/src/vespa/vespalib/util/reusable_set_pool.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/round_up_to_page_size.cpp b/vespalib/src/vespa/vespalib/util/round_up_to_page_size.cpp
index a2d25decfcb..14a5558e419 100644
--- a/vespalib/src/vespa/vespalib/util/round_up_to_page_size.cpp
+++ b/vespalib/src/vespa/vespalib/util/round_up_to_page_size.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "round_up_to_page_size.h"
#include <unistd.h>
diff --git a/vespalib/src/vespa/vespalib/util/round_up_to_page_size.h b/vespalib/src/vespa/vespalib/util/round_up_to_page_size.h
index 103d3a35f9e..e3e99470f04 100644
--- a/vespalib/src/vespa/vespalib/util/round_up_to_page_size.h
+++ b/vespalib/src/vespa/vespalib/util/round_up_to_page_size.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/runnable.cpp b/vespalib/src/vespa/vespalib/util/runnable.cpp
index d2c5281ce05..c67c4696d88 100644
--- a/vespalib/src/vespa/vespalib/util/runnable.cpp
+++ b/vespalib/src/vespa/vespalib/util/runnable.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "runnable.h"
diff --git a/vespalib/src/vespa/vespalib/util/runnable.h b/vespalib/src/vespa/vespalib/util/runnable.h
index 9d6481fbb19..43144ebc2cd 100644
--- a/vespalib/src/vespa/vespalib/util/runnable.h
+++ b/vespalib/src/vespa/vespalib/util/runnable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/runnable_pair.cpp b/vespalib/src/vespa/vespalib/util/runnable_pair.cpp
index a5bd2750fc6..d0574b53d76 100644
--- a/vespalib/src/vespa/vespalib/util/runnable_pair.cpp
+++ b/vespalib/src/vespa/vespalib/util/runnable_pair.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "runnable_pair.h"
diff --git a/vespalib/src/vespa/vespalib/util/runnable_pair.h b/vespalib/src/vespa/vespalib/util/runnable_pair.h
index f33733eea18..ee3afe797bb 100644
--- a/vespalib/src/vespa/vespalib/util/runnable_pair.h
+++ b/vespalib/src/vespa/vespalib/util/runnable_pair.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/sequence.cpp b/vespalib/src/vespa/vespalib/util/sequence.cpp
index 73443776e5e..0349241b323 100644
--- a/vespalib/src/vespa/vespalib/util/sequence.cpp
+++ b/vespalib/src/vespa/vespalib/util/sequence.cpp
@@ -1,3 +1,3 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sequence.h"
diff --git a/vespalib/src/vespa/vespalib/util/sequence.h b/vespalib/src/vespa/vespalib/util/sequence.h
index e0ac526cd06..7d24d2256b0 100644
--- a/vespalib/src/vespa/vespalib/util/sequence.h
+++ b/vespalib/src/vespa/vespalib/util/sequence.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/sha1.cpp b/vespalib/src/vespa/vespalib/util/sha1.cpp
index 78f97d083b7..6ae87a5838a 100644
--- a/vespalib/src/vespa/vespalib/util/sha1.cpp
+++ b/vespalib/src/vespa/vespalib/util/sha1.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sha1.h"
diff --git a/vespalib/src/vespa/vespalib/util/sha1.h b/vespalib/src/vespa/vespalib/util/sha1.h
index c76f2fac206..bec4804ce95 100644
--- a/vespalib/src/vespa/vespalib/util/sha1.h
+++ b/vespalib/src/vespa/vespalib/util/sha1.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/shared_string_repo.cpp b/vespalib/src/vespa/vespalib/util/shared_string_repo.cpp
index c4a3ed4170a..e46d5474eb9 100644
--- a/vespalib/src/vespa/vespalib/util/shared_string_repo.cpp
+++ b/vespalib/src/vespa/vespalib/util/shared_string_repo.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "shared_string_repo.h"
diff --git a/vespalib/src/vespa/vespalib/util/shared_string_repo.h b/vespalib/src/vespa/vespalib/util/shared_string_repo.h
index 29067060af0..ec65b942d88 100644
--- a/vespalib/src/vespa/vespalib/util/shared_string_repo.h
+++ b/vespalib/src/vespa/vespalib/util/shared_string_repo.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/sig_catch.cpp b/vespalib/src/vespa/vespalib/util/sig_catch.cpp
index 48bf8fbb05d..e73dc10c2b0 100644
--- a/vespalib/src/vespa/vespalib/util/sig_catch.cpp
+++ b/vespalib/src/vespa/vespalib/util/sig_catch.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sig_catch.h"
#include "signalhandler.h"
diff --git a/vespalib/src/vespa/vespalib/util/sig_catch.h b/vespalib/src/vespa/vespalib/util/sig_catch.h
index 96c74ee4d07..83cf7b5a70e 100644
--- a/vespalib/src/vespa/vespalib/util/sig_catch.h
+++ b/vespalib/src/vespa/vespalib/util/sig_catch.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/signalhandler.cpp b/vespalib/src/vespa/vespalib/util/signalhandler.cpp
index c4fb7cfa517..cd3e900ffe7 100644
--- a/vespalib/src/vespa/vespalib/util/signalhandler.cpp
+++ b/vespalib/src/vespa/vespalib/util/signalhandler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "signalhandler.h"
#include <cassert>
diff --git a/vespalib/src/vespa/vespalib/util/signalhandler.h b/vespalib/src/vespa/vespalib/util/signalhandler.h
index f34ddba5530..abd9a8bc572 100644
--- a/vespalib/src/vespa/vespalib/util/signalhandler.h
+++ b/vespalib/src/vespa/vespalib/util/signalhandler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <csignal>
diff --git a/vespalib/src/vespa/vespalib/util/simple_thread_bundle.cpp b/vespalib/src/vespa/vespalib/util/simple_thread_bundle.cpp
index 4f93f891cf8..80bbb3a7ad2 100644
--- a/vespalib/src/vespa/vespalib/util/simple_thread_bundle.cpp
+++ b/vespalib/src/vespa/vespalib/util/simple_thread_bundle.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "simple_thread_bundle.h"
#include "exceptions.h"
diff --git a/vespalib/src/vespa/vespalib/util/simple_thread_bundle.h b/vespalib/src/vespa/vespalib/util/simple_thread_bundle.h
index 40844b277f1..f0aaccc2525 100644
--- a/vespalib/src/vespa/vespalib/util/simple_thread_bundle.h
+++ b/vespalib/src/vespa/vespalib/util/simple_thread_bundle.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/size_literals.h b/vespalib/src/vespa/vespalib/util/size_literals.h
index f11893342e5..0fdbfaeae00 100644
--- a/vespalib/src/vespa/vespalib/util/size_literals.h
+++ b/vespalib/src/vespa/vespalib/util/size_literals.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/small_vector.cpp b/vespalib/src/vespa/vespalib/util/small_vector.cpp
index cc2cabdb275..8757f5fce72 100644
--- a/vespalib/src/vespa/vespalib/util/small_vector.cpp
+++ b/vespalib/src/vespa/vespalib/util/small_vector.cpp
@@ -1,3 +1,3 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "small_vector.h"
diff --git a/vespalib/src/vespa/vespalib/util/small_vector.h b/vespalib/src/vespa/vespalib/util/small_vector.h
index 568122f562a..c1549ef725d 100644
--- a/vespalib/src/vespa/vespalib/util/small_vector.h
+++ b/vespalib/src/vespa/vespalib/util/small_vector.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/spin_lock.h b/vespalib/src/vespa/vespalib/util/spin_lock.h
index 01e1794b3e5..abc2b89106f 100644
--- a/vespalib/src/vespa/vespalib/util/spin_lock.h
+++ b/vespalib/src/vespa/vespalib/util/spin_lock.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <atomic>
#include <thread>
diff --git a/vespalib/src/vespa/vespalib/util/stash.cpp b/vespalib/src/vespa/vespalib/util/stash.cpp
index daff7b7c575..9e982588294 100644
--- a/vespalib/src/vespa/vespalib/util/stash.cpp
+++ b/vespalib/src/vespa/vespalib/util/stash.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "stash.h"
#include <algorithm>
diff --git a/vespalib/src/vespa/vespalib/util/stash.h b/vespalib/src/vespa/vespalib/util/stash.h
index 0186d1e54b9..50945bf3cf2 100644
--- a/vespalib/src/vespa/vespalib/util/stash.h
+++ b/vespalib/src/vespa/vespalib/util/stash.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/string_hash.cpp b/vespalib/src/vespa/vespalib/util/string_hash.cpp
index 631eb771844..572ba765743 100644
--- a/vespalib/src/vespa/vespalib/util/string_hash.cpp
+++ b/vespalib/src/vespa/vespalib/util/string_hash.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "string_hash.h"
diff --git a/vespalib/src/vespa/vespalib/util/string_hash.h b/vespalib/src/vespa/vespalib/util/string_hash.h
index 0362bd1d07f..14a5a85a009 100644
--- a/vespalib/src/vespa/vespalib/util/string_hash.h
+++ b/vespalib/src/vespa/vespalib/util/string_hash.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/string_id.h b/vespalib/src/vespa/vespalib/util/string_id.h
index 371caf8bf95..7a72feee64a 100644
--- a/vespalib/src/vespa/vespalib/util/string_id.h
+++ b/vespalib/src/vespa/vespalib/util/string_id.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/stringfmt.cpp b/vespalib/src/vespa/vespalib/util/stringfmt.cpp
index 3c5ebce355c..e0f5326c09a 100644
--- a/vespalib/src/vespa/vespalib/util/stringfmt.cpp
+++ b/vespalib/src/vespa/vespalib/util/stringfmt.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "stringfmt.h"
#include <cassert>
diff --git a/vespalib/src/vespa/vespalib/util/stringfmt.h b/vespalib/src/vespa/vespalib/util/stringfmt.h
index 1009f3d9275..ec295572499 100644
--- a/vespalib/src/vespa/vespalib/util/stringfmt.h
+++ b/vespalib/src/vespa/vespalib/util/stringfmt.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/stllike/string.h>
diff --git a/vespalib/src/vespa/vespalib/util/syncable.h b/vespalib/src/vespa/vespalib/util/syncable.h
index 0b009263646..8dd75216259 100644
--- a/vespalib/src/vespa/vespalib/util/syncable.h
+++ b/vespalib/src/vespa/vespalib/util/syncable.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/thread.cpp b/vespalib/src/vespa/vespalib/util/thread.cpp
index aa7b8ed3bb3..c02a7a3b063 100644
--- a/vespalib/src/vespa/vespalib/util/thread.cpp
+++ b/vespalib/src/vespa/vespalib/util/thread.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "thread.h"
#include "time.h"
diff --git a/vespalib/src/vespa/vespalib/util/thread.h b/vespalib/src/vespa/vespalib/util/thread.h
index 71b81645efa..8873f23ee98 100644
--- a/vespalib/src/vespa/vespalib/util/thread.h
+++ b/vespalib/src/vespa/vespalib/util/thread.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/thread_bundle.cpp b/vespalib/src/vespa/vespalib/util/thread_bundle.cpp
index f1f8ec2a217..7068224229e 100644
--- a/vespalib/src/vespa/vespalib/util/thread_bundle.cpp
+++ b/vespalib/src/vespa/vespalib/util/thread_bundle.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "thread_bundle.h"
diff --git a/vespalib/src/vespa/vespalib/util/thread_bundle.h b/vespalib/src/vespa/vespalib/util/thread_bundle.h
index d5f62c5e2de..32b7d32b2a7 100644
--- a/vespalib/src/vespa/vespalib/util/thread_bundle.h
+++ b/vespalib/src/vespa/vespalib/util/thread_bundle.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/threadexecutor.h b/vespalib/src/vespa/vespalib/util/threadexecutor.h
index 7d06007d7be..9ab7aacfc4b 100644
--- a/vespalib/src/vespa/vespalib/util/threadexecutor.h
+++ b/vespalib/src/vespa/vespalib/util/threadexecutor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/threadstackexecutor.cpp b/vespalib/src/vespa/vespalib/util/threadstackexecutor.cpp
index bd76dcd0219..a975db04a2e 100644
--- a/vespalib/src/vespa/vespalib/util/threadstackexecutor.cpp
+++ b/vespalib/src/vespa/vespalib/util/threadstackexecutor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "threadstackexecutor.h"
diff --git a/vespalib/src/vespa/vespalib/util/threadstackexecutor.h b/vespalib/src/vespa/vespalib/util/threadstackexecutor.h
index 2280154f1a2..687ecfbac0b 100644
--- a/vespalib/src/vespa/vespalib/util/threadstackexecutor.h
+++ b/vespalib/src/vespa/vespalib/util/threadstackexecutor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/threadstackexecutorbase.cpp b/vespalib/src/vespa/vespalib/util/threadstackexecutorbase.cpp
index 01546b80d66..32e47f366cc 100644
--- a/vespalib/src/vespa/vespalib/util/threadstackexecutorbase.cpp
+++ b/vespalib/src/vespa/vespalib/util/threadstackexecutorbase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "threadstackexecutorbase.h"
#include <vespa/fastos/thread.h>
diff --git a/vespalib/src/vespa/vespalib/util/threadstackexecutorbase.h b/vespalib/src/vespa/vespalib/util/threadstackexecutorbase.h
index c0653c19516..59ed385b4f4 100644
--- a/vespalib/src/vespa/vespalib/util/threadstackexecutorbase.h
+++ b/vespalib/src/vespa/vespalib/util/threadstackexecutorbase.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/traits.h b/vespalib/src/vespa/vespalib/util/traits.h
index 2f04a679e72..7c39fd67812 100644
--- a/vespalib/src/vespa/vespalib/util/traits.h
+++ b/vespalib/src/vespa/vespalib/util/traits.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/trinary.h b/vespalib/src/vespa/vespalib/util/trinary.h
index 33d8c670008..5ca1f8a7cc2 100644
--- a/vespalib/src/vespa/vespalib/util/trinary.h
+++ b/vespalib/src/vespa/vespalib/util/trinary.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/typify.h b/vespalib/src/vespa/vespalib/util/typify.h
index 0d84d1756a5..4d97c1a458c 100644
--- a/vespalib/src/vespa/vespalib/util/typify.h
+++ b/vespalib/src/vespa/vespalib/util/typify.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/unwind_message.cpp b/vespalib/src/vespa/vespalib/util/unwind_message.cpp
index 5598f0068a5..3789ae0d9e9 100644
--- a/vespalib/src/vespa/vespalib/util/unwind_message.cpp
+++ b/vespalib/src/vespa/vespalib/util/unwind_message.cpp
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "unwind_message.h"
#include <exception>
diff --git a/vespalib/src/vespa/vespalib/util/unwind_message.h b/vespalib/src/vespa/vespalib/util/unwind_message.h
index 43300ab830a..752719c4f74 100644
--- a/vespalib/src/vespa/vespalib/util/unwind_message.h
+++ b/vespalib/src/vespa/vespalib/util/unwind_message.h
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/util/valgrind.cpp b/vespalib/src/vespa/vespalib/util/valgrind.cpp
index cbb6cc808fc..8e12a766f45 100644
--- a/vespalib/src/vespa/vespalib/util/valgrind.cpp
+++ b/vespalib/src/vespa/vespalib/util/valgrind.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/util/valgrind.h>
#include <cassert>
diff --git a/vespalib/src/vespa/vespalib/util/valgrind.h b/vespalib/src/vespa/vespalib/util/valgrind.h
index ebb2cd00234..12f5127e3a4 100644
--- a/vespalib/src/vespa/vespalib/util/valgrind.h
+++ b/vespalib/src/vespa/vespalib/util/valgrind.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <sys/types.h>
diff --git a/vespalib/src/vespa/vespalib/util/zstdcompressor.cpp b/vespalib/src/vespa/vespalib/util/zstdcompressor.cpp
index 931f727ad6c..1b0562985d8 100644
--- a/vespalib/src/vespa/vespalib/util/zstdcompressor.cpp
+++ b/vespalib/src/vespa/vespalib/util/zstdcompressor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "zstdcompressor.h"
#include <vespa/vespalib/util/alloc.h>
diff --git a/vespalib/src/vespa/vespalib/util/zstdcompressor.h b/vespalib/src/vespa/vespalib/util/zstdcompressor.h
index 0d84b8e7ca4..1a141ab2b0f 100644
--- a/vespalib/src/vespa/vespalib/util/zstdcompressor.h
+++ b/vespalib/src/vespa/vespalib/util/zstdcompressor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "compressor.h"
diff --git a/vespalib/src/vespa/vespalib/websocket/CMakeLists.txt b/vespalib/src/vespa/vespalib/websocket/CMakeLists.txt
index 32b0f660342..1aee013d2bc 100644
--- a/vespalib/src/vespa/vespalib/websocket/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/websocket/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalib_vespalib_websocket OBJECT
SOURCES
acceptor.cpp
diff --git a/vespalib/src/vespa/vespalib/websocket/acceptor.cpp b/vespalib/src/vespa/vespalib/websocket/acceptor.cpp
index 4ba1bf3b908..a8fbb0e4231 100644
--- a/vespalib/src/vespa/vespalib/websocket/acceptor.cpp
+++ b/vespalib/src/vespa/vespalib/websocket/acceptor.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "acceptor.h"
#include <vespa/vespalib/net/socket_spec.h>
diff --git a/vespalib/src/vespa/vespalib/websocket/acceptor.h b/vespalib/src/vespa/vespalib/websocket/acceptor.h
index 544f6ae8c7c..711c9684161 100644
--- a/vespalib/src/vespa/vespalib/websocket/acceptor.h
+++ b/vespalib/src/vespa/vespalib/websocket/acceptor.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/websocket/buffer.cpp b/vespalib/src/vespa/vespalib/websocket/buffer.cpp
index b61fb08ad80..c35fd4a3597 100644
--- a/vespalib/src/vespa/vespalib/websocket/buffer.cpp
+++ b/vespalib/src/vespa/vespalib/websocket/buffer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "buffer.h"
diff --git a/vespalib/src/vespa/vespalib/websocket/buffer.h b/vespalib/src/vespa/vespalib/websocket/buffer.h
index bd3382498fe..382c60d0b0c 100644
--- a/vespalib/src/vespa/vespalib/websocket/buffer.h
+++ b/vespalib/src/vespa/vespalib/websocket/buffer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/websocket/connection.cpp b/vespalib/src/vespa/vespalib/websocket/connection.cpp
index 5962575ac9d..173839f376b 100644
--- a/vespalib/src/vespa/vespalib/websocket/connection.cpp
+++ b/vespalib/src/vespa/vespalib/websocket/connection.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "connection.h"
#include <vespa/vespalib/util/size_literals.h>
diff --git a/vespalib/src/vespa/vespalib/websocket/connection.h b/vespalib/src/vespa/vespalib/websocket/connection.h
index 66d189093ee..fdfcd227f98 100644
--- a/vespalib/src/vespa/vespalib/websocket/connection.h
+++ b/vespalib/src/vespa/vespalib/websocket/connection.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/websocket/frame.cpp b/vespalib/src/vespa/vespalib/websocket/frame.cpp
index 6bd6fab058c..d742d95698b 100644
--- a/vespalib/src/vespa/vespalib/websocket/frame.cpp
+++ b/vespalib/src/vespa/vespalib/websocket/frame.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "frame.h"
diff --git a/vespalib/src/vespa/vespalib/websocket/frame.h b/vespalib/src/vespa/vespalib/websocket/frame.h
index a978b0b938f..17a9d2008e8 100644
--- a/vespalib/src/vespa/vespalib/websocket/frame.h
+++ b/vespalib/src/vespa/vespalib/websocket/frame.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/websocket/handler.cpp b/vespalib/src/vespa/vespalib/websocket/handler.cpp
index ba4a3307c1f..bbff65447d8 100644
--- a/vespalib/src/vespa/vespalib/websocket/handler.cpp
+++ b/vespalib/src/vespa/vespalib/websocket/handler.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "handler.h"
diff --git a/vespalib/src/vespa/vespalib/websocket/handler.h b/vespalib/src/vespa/vespalib/websocket/handler.h
index bb0dead3f7c..8919f4bfdcc 100644
--- a/vespalib/src/vespa/vespalib/websocket/handler.h
+++ b/vespalib/src/vespa/vespalib/websocket/handler.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/websocket/key.cpp b/vespalib/src/vespa/vespalib/websocket/key.cpp
index 972133417fe..0760c10fe31 100644
--- a/vespalib/src/vespa/vespalib/websocket/key.cpp
+++ b/vespalib/src/vespa/vespalib/websocket/key.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "key.h"
#include <vespa/vespalib/util/sha1.h>
diff --git a/vespalib/src/vespa/vespalib/websocket/key.h b/vespalib/src/vespa/vespalib/websocket/key.h
index f15ca690f20..76062594f38 100644
--- a/vespalib/src/vespa/vespalib/websocket/key.h
+++ b/vespalib/src/vespa/vespalib/websocket/key.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/websocket/request.cpp b/vespalib/src/vespa/vespalib/websocket/request.cpp
index 98a6631bfcb..44b05d9947e 100644
--- a/vespalib/src/vespa/vespalib/websocket/request.cpp
+++ b/vespalib/src/vespa/vespalib/websocket/request.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "request.h"
#include <cassert>
diff --git a/vespalib/src/vespa/vespalib/websocket/request.h b/vespalib/src/vespa/vespalib/websocket/request.h
index 9ba82e0d04c..fb4dc25b0ab 100644
--- a/vespalib/src/vespa/vespalib/websocket/request.h
+++ b/vespalib/src/vespa/vespalib/websocket/request.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalib/src/vespa/vespalib/websocket/websocket_server.cpp b/vespalib/src/vespa/vespalib/websocket/websocket_server.cpp
index d3ef13e78d7..dc9b38cd87c 100644
--- a/vespalib/src/vespa/vespalib/websocket/websocket_server.cpp
+++ b/vespalib/src/vespa/vespalib/websocket/websocket_server.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "websocket_server.h"
#include "connection.h"
diff --git a/vespalib/src/vespa/vespalib/websocket/websocket_server.h b/vespalib/src/vespa/vespalib/websocket/websocket_server.h
index 03b3da72134..f30daafb726 100644
--- a/vespalib/src/vespa/vespalib/websocket/websocket_server.h
+++ b/vespalib/src/vespa/vespalib/websocket/websocket_server.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalog/CMakeLists.txt b/vespalog/CMakeLists.txt
index a2f48da0597..45410a1d29d 100644
--- a/vespalog/CMakeLists.txt
+++ b/vespalog/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
vespadefaults
diff --git a/vespalog/pom.xml b/vespalog/pom.xml
index 10000d380a0..d867da2180e 100644
--- a/vespalog/pom.xml
+++ b/vespalog/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/vespalog/src/Log.pm b/vespalog/src/Log.pm
index b87f8150ee7..e7fec75f74a 100644
--- a/vespalog/src/Log.pm
+++ b/vespalog/src/Log.pm
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package Log;
require 5.006_001;
diff --git a/vespalog/src/logctl/CMakeLists.txt b/vespalog/src/logctl/CMakeLists.txt
index 0d5c516603d..1c1a88cd3f6 100644
--- a/vespalog/src/logctl/CMakeLists.txt
+++ b/vespalog/src/logctl/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalog_vespa-logctl_app
SOURCES
logctl.cpp
diff --git a/vespalog/src/logctl/logctl.cpp b/vespalog/src/logctl/logctl.cpp
index 14137a79687..208cf1588bf 100644
--- a/vespalog/src/logctl/logctl.cpp
+++ b/vespalog/src/logctl/logctl.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/defaults.h>
#include <vespa/log/control-file.h>
diff --git a/vespalog/src/logger/CMakeLists.txt b/vespalog/src/logger/CMakeLists.txt
index b282d60afa9..aa194ac6e10 100644
--- a/vespalog/src/logger/CMakeLists.txt
+++ b/vespalog/src/logger/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalog_vlogconv_app
SOURCES
logger.cpp
diff --git a/vespalog/src/logger/llreader.cpp b/vespalog/src/logger/llreader.cpp
index 376d216e9a9..cb25b6747bf 100644
--- a/vespalog/src/logger/llreader.cpp
+++ b/vespalog/src/logger/llreader.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
diff --git a/vespalog/src/logger/llreader.h b/vespalog/src/logger/llreader.h
index d751a9f3870..1fadf2c6ae0 100644
--- a/vespalog/src/logger/llreader.h
+++ b/vespalog/src/logger/llreader.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/llparser.h>
#include <stdexcept>
diff --git a/vespalog/src/logger/logger.cpp b/vespalog/src/logger/logger.cpp
index 0b33f251797..cc6b196b55b 100644
--- a/vespalog/src/logger/logger.cpp
+++ b/vespalog/src/logger/logger.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
diff --git a/vespalog/src/logger/logreplay.c b/vespalog/src/logger/logreplay.c
index 7a920a916a4..f11df2b12de 100644
--- a/vespalog/src/logger/logreplay.c
+++ b/vespalog/src/logger/logreplay.c
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <sys/types.h>
#include <sys/time.h>
#include <stdio.h>
diff --git a/vespalog/src/logger/runserver.cpp b/vespalog/src/logger/runserver.cpp
index 7b86eba31aa..c74806a8b5b 100644
--- a/vespalog/src/logger/runserver.cpp
+++ b/vespalog/src/logger/runserver.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <cstdlib>
#include <cstring>
#include <cstdio>
diff --git a/vespalog/src/main/java/com/yahoo/log/DefaultLevelController.java b/vespalog/src/main/java/com/yahoo/log/DefaultLevelController.java
index 42f73099091..58e93c96ec9 100644
--- a/vespalog/src/main/java/com/yahoo/log/DefaultLevelController.java
+++ b/vespalog/src/main/java/com/yahoo/log/DefaultLevelController.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import java.util.logging.Level;
diff --git a/vespalog/src/main/java/com/yahoo/log/FileLogTarget.java b/vespalog/src/main/java/com/yahoo/log/FileLogTarget.java
index c2717bd9cbc..313fbbe074b 100644
--- a/vespalog/src/main/java/com/yahoo/log/FileLogTarget.java
+++ b/vespalog/src/main/java/com/yahoo/log/FileLogTarget.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import java.io.*;
diff --git a/vespalog/src/main/java/com/yahoo/log/InvalidLogFormatException.java b/vespalog/src/main/java/com/yahoo/log/InvalidLogFormatException.java
index 49e0ced7a57..31d308ccda1 100644
--- a/vespalog/src/main/java/com/yahoo/log/InvalidLogFormatException.java
+++ b/vespalog/src/main/java/com/yahoo/log/InvalidLogFormatException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
/**
diff --git a/vespalog/src/main/java/com/yahoo/log/LevelController.java b/vespalog/src/main/java/com/yahoo/log/LevelController.java
index 0efe0d4e7c1..2a549c0dd4f 100644
--- a/vespalog/src/main/java/com/yahoo/log/LevelController.java
+++ b/vespalog/src/main/java/com/yahoo/log/LevelController.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import java.util.logging.Level;
diff --git a/vespalog/src/main/java/com/yahoo/log/LevelControllerRepo.java b/vespalog/src/main/java/com/yahoo/log/LevelControllerRepo.java
index 364420796d3..372b3d44e9e 100644
--- a/vespalog/src/main/java/com/yahoo/log/LevelControllerRepo.java
+++ b/vespalog/src/main/java/com/yahoo/log/LevelControllerRepo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
/**
diff --git a/vespalog/src/main/java/com/yahoo/log/LogFileDb.java b/vespalog/src/main/java/com/yahoo/log/LogFileDb.java
index d9ca8f4653e..24761a49c04 100644
--- a/vespalog/src/main/java/com/yahoo/log/LogFileDb.java
+++ b/vespalog/src/main/java/com/yahoo/log/LogFileDb.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import static java.nio.charset.StandardCharsets.UTF_8;
diff --git a/vespalog/src/main/java/com/yahoo/log/LogLevel.java b/vespalog/src/main/java/com/yahoo/log/LogLevel.java
index 83f3da7e354..602a0603bef 100644
--- a/vespalog/src/main/java/com/yahoo/log/LogLevel.java
+++ b/vespalog/src/main/java/com/yahoo/log/LogLevel.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import java.util.Collections;
diff --git a/vespalog/src/main/java/com/yahoo/log/LogMessage.java b/vespalog/src/main/java/com/yahoo/log/LogMessage.java
index 1736352493e..f48ae97850a 100644
--- a/vespalog/src/main/java/com/yahoo/log/LogMessage.java
+++ b/vespalog/src/main/java/com/yahoo/log/LogMessage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import com.yahoo.log.event.Event;
diff --git a/vespalog/src/main/java/com/yahoo/log/LogMessageTimeComparator.java b/vespalog/src/main/java/com/yahoo/log/LogMessageTimeComparator.java
index 469f808546f..7132dbfbc7f 100644
--- a/vespalog/src/main/java/com/yahoo/log/LogMessageTimeComparator.java
+++ b/vespalog/src/main/java/com/yahoo/log/LogMessageTimeComparator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import java.io.Serializable;
diff --git a/vespalog/src/main/java/com/yahoo/log/LogSetup.java b/vespalog/src/main/java/com/yahoo/log/LogSetup.java
index df642f23075..932c993b19e 100644
--- a/vespalog/src/main/java/com/yahoo/log/LogSetup.java
+++ b/vespalog/src/main/java/com/yahoo/log/LogSetup.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import java.io.File;
diff --git a/vespalog/src/main/java/com/yahoo/log/LogTarget.java b/vespalog/src/main/java/com/yahoo/log/LogTarget.java
index 065d10977b4..5cc5fd06137 100644
--- a/vespalog/src/main/java/com/yahoo/log/LogTarget.java
+++ b/vespalog/src/main/java/com/yahoo/log/LogTarget.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import java.io.OutputStream;
diff --git a/vespalog/src/main/java/com/yahoo/log/LogUtil.java b/vespalog/src/main/java/com/yahoo/log/LogUtil.java
index 40e13b77414..3b726d9acf8 100644
--- a/vespalog/src/main/java/com/yahoo/log/LogUtil.java
+++ b/vespalog/src/main/java/com/yahoo/log/LogUtil.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
/**
diff --git a/vespalog/src/main/java/com/yahoo/log/MappedLevelController.java b/vespalog/src/main/java/com/yahoo/log/MappedLevelController.java
index 9a2276191b4..b602de25c7f 100644
--- a/vespalog/src/main/java/com/yahoo/log/MappedLevelController.java
+++ b/vespalog/src/main/java/com/yahoo/log/MappedLevelController.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import com.yahoo.text.Utf8;
diff --git a/vespalog/src/main/java/com/yahoo/log/MappedLevelControllerRepo.java b/vespalog/src/main/java/com/yahoo/log/MappedLevelControllerRepo.java
index 53f4de4f264..1e074445b44 100644
--- a/vespalog/src/main/java/com/yahoo/log/MappedLevelControllerRepo.java
+++ b/vespalog/src/main/java/com/yahoo/log/MappedLevelControllerRepo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import com.yahoo.text.Utf8;
diff --git a/vespalog/src/main/java/com/yahoo/log/RejectFilter.java b/vespalog/src/main/java/com/yahoo/log/RejectFilter.java
index 0cfd9cf414c..c018645327a 100644
--- a/vespalog/src/main/java/com/yahoo/log/RejectFilter.java
+++ b/vespalog/src/main/java/com/yahoo/log/RejectFilter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import java.util.ArrayList;
diff --git a/vespalog/src/main/java/com/yahoo/log/StderrLogTarget.java b/vespalog/src/main/java/com/yahoo/log/StderrLogTarget.java
index 32f06701db4..bc91d7e76b4 100644
--- a/vespalog/src/main/java/com/yahoo/log/StderrLogTarget.java
+++ b/vespalog/src/main/java/com/yahoo/log/StderrLogTarget.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import java.io.OutputStream;
diff --git a/vespalog/src/main/java/com/yahoo/log/StdoutLogTarget.java b/vespalog/src/main/java/com/yahoo/log/StdoutLogTarget.java
index 6b22ee7028a..6a1cd9ac672 100644
--- a/vespalog/src/main/java/com/yahoo/log/StdoutLogTarget.java
+++ b/vespalog/src/main/java/com/yahoo/log/StdoutLogTarget.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import java.io.OutputStream;
diff --git a/vespalog/src/main/java/com/yahoo/log/UncloseableOutputStream.java b/vespalog/src/main/java/com/yahoo/log/UncloseableOutputStream.java
index 65b1526fbf3..827c1c373f8 100644
--- a/vespalog/src/main/java/com/yahoo/log/UncloseableOutputStream.java
+++ b/vespalog/src/main/java/com/yahoo/log/UncloseableOutputStream.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import java.io.IOException;
diff --git a/vespalog/src/main/java/com/yahoo/log/Util.java b/vespalog/src/main/java/com/yahoo/log/Util.java
index 776d13c1186..bcbe5bbae4a 100644
--- a/vespalog/src/main/java/com/yahoo/log/Util.java
+++ b/vespalog/src/main/java/com/yahoo/log/Util.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import static com.yahoo.vespa.defaults.Defaults.getDefaults;
diff --git a/vespalog/src/main/java/com/yahoo/log/VespaFormat.java b/vespalog/src/main/java/com/yahoo/log/VespaFormat.java
index 90e16f6408e..19e898155f4 100644
--- a/vespalog/src/main/java/com/yahoo/log/VespaFormat.java
+++ b/vespalog/src/main/java/com/yahoo/log/VespaFormat.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import java.time.Instant;
diff --git a/vespalog/src/main/java/com/yahoo/log/VespaFormatter.java b/vespalog/src/main/java/com/yahoo/log/VespaFormatter.java
index 314e0ae49e6..db4e131c530 100644
--- a/vespalog/src/main/java/com/yahoo/log/VespaFormatter.java
+++ b/vespalog/src/main/java/com/yahoo/log/VespaFormatter.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// $Id$
package com.yahoo.log;
diff --git a/vespalog/src/main/java/com/yahoo/log/VespaLevelControllerRepo.java b/vespalog/src/main/java/com/yahoo/log/VespaLevelControllerRepo.java
index 8526d9cc502..b1a3305daae 100644
--- a/vespalog/src/main/java/com/yahoo/log/VespaLevelControllerRepo.java
+++ b/vespalog/src/main/java/com/yahoo/log/VespaLevelControllerRepo.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import com.yahoo.text.Utf8;
diff --git a/vespalog/src/main/java/com/yahoo/log/VespaLogHandler.java b/vespalog/src/main/java/com/yahoo/log/VespaLogHandler.java
index 32b1003c20c..c0dac86dd26 100644
--- a/vespalog/src/main/java/com/yahoo/log/VespaLogHandler.java
+++ b/vespalog/src/main/java/com/yahoo/log/VespaLogHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import java.io.UnsupportedEncodingException;
diff --git a/vespalog/src/main/java/com/yahoo/log/event/Collection.java b/vespalog/src/main/java/com/yahoo/log/event/Collection.java
index efd70742e2f..5556878fd11 100644
--- a/vespalog/src/main/java/com/yahoo/log/event/Collection.java
+++ b/vespalog/src/main/java/com/yahoo/log/event/Collection.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log.event;
/**
diff --git a/vespalog/src/main/java/com/yahoo/log/event/Count.java b/vespalog/src/main/java/com/yahoo/log/event/Count.java
index 1915e151908..c7c48130a47 100644
--- a/vespalog/src/main/java/com/yahoo/log/event/Count.java
+++ b/vespalog/src/main/java/com/yahoo/log/event/Count.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log.event;
/**
diff --git a/vespalog/src/main/java/com/yahoo/log/event/CountGroup.java b/vespalog/src/main/java/com/yahoo/log/event/CountGroup.java
index 2ff2aada38d..a65a38095a0 100755
--- a/vespalog/src/main/java/com/yahoo/log/event/CountGroup.java
+++ b/vespalog/src/main/java/com/yahoo/log/event/CountGroup.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log.event;
public class CountGroup extends Event {
diff --git a/vespalog/src/main/java/com/yahoo/log/event/Crash.java b/vespalog/src/main/java/com/yahoo/log/event/Crash.java
index 7732938b809..3cb6b6c0232 100644
--- a/vespalog/src/main/java/com/yahoo/log/event/Crash.java
+++ b/vespalog/src/main/java/com/yahoo/log/event/Crash.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log.event;
/**
diff --git a/vespalog/src/main/java/com/yahoo/log/event/Event.java b/vespalog/src/main/java/com/yahoo/log/event/Event.java
index a897292af91..8ec8c528db7 100644
--- a/vespalog/src/main/java/com/yahoo/log/event/Event.java
+++ b/vespalog/src/main/java/com/yahoo/log/event/Event.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log.event;
import com.yahoo.log.LogLevel;
diff --git a/vespalog/src/main/java/com/yahoo/log/event/Histogram.java b/vespalog/src/main/java/com/yahoo/log/event/Histogram.java
index ba7ad41c145..f118c0f0bab 100755
--- a/vespalog/src/main/java/com/yahoo/log/event/Histogram.java
+++ b/vespalog/src/main/java/com/yahoo/log/event/Histogram.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log.event;
public class Histogram extends Event {
diff --git a/vespalog/src/main/java/com/yahoo/log/event/MalformedEventException.java b/vespalog/src/main/java/com/yahoo/log/event/MalformedEventException.java
index 432a0a25149..a9f9774fd9f 100644
--- a/vespalog/src/main/java/com/yahoo/log/event/MalformedEventException.java
+++ b/vespalog/src/main/java/com/yahoo/log/event/MalformedEventException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log.event;
public class MalformedEventException extends Exception {
diff --git a/vespalog/src/main/java/com/yahoo/log/event/Progress.java b/vespalog/src/main/java/com/yahoo/log/event/Progress.java
index e16dbce7b2d..f63b7981ddf 100644
--- a/vespalog/src/main/java/com/yahoo/log/event/Progress.java
+++ b/vespalog/src/main/java/com/yahoo/log/event/Progress.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log.event;
/**
diff --git a/vespalog/src/main/java/com/yahoo/log/event/Reloaded.java b/vespalog/src/main/java/com/yahoo/log/event/Reloaded.java
index 8f976588446..bf63ab4c4c6 100644
--- a/vespalog/src/main/java/com/yahoo/log/event/Reloaded.java
+++ b/vespalog/src/main/java/com/yahoo/log/event/Reloaded.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log.event;
/**
diff --git a/vespalog/src/main/java/com/yahoo/log/event/Reloading.java b/vespalog/src/main/java/com/yahoo/log/event/Reloading.java
index 617e2881b0c..c7683f6276f 100644
--- a/vespalog/src/main/java/com/yahoo/log/event/Reloading.java
+++ b/vespalog/src/main/java/com/yahoo/log/event/Reloading.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log.event;
/**
diff --git a/vespalog/src/main/java/com/yahoo/log/event/Started.java b/vespalog/src/main/java/com/yahoo/log/event/Started.java
index 4fa3853daaf..41b6f8f369a 100644
--- a/vespalog/src/main/java/com/yahoo/log/event/Started.java
+++ b/vespalog/src/main/java/com/yahoo/log/event/Started.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log.event;
/**
diff --git a/vespalog/src/main/java/com/yahoo/log/event/Starting.java b/vespalog/src/main/java/com/yahoo/log/event/Starting.java
index 8c3dee28271..aa4141eb788 100644
--- a/vespalog/src/main/java/com/yahoo/log/event/Starting.java
+++ b/vespalog/src/main/java/com/yahoo/log/event/Starting.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log.event;
/**
diff --git a/vespalog/src/main/java/com/yahoo/log/event/State.java b/vespalog/src/main/java/com/yahoo/log/event/State.java
index 154fa585b34..6b9479a6518 100755
--- a/vespalog/src/main/java/com/yahoo/log/event/State.java
+++ b/vespalog/src/main/java/com/yahoo/log/event/State.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log.event;
public class State extends Event {
diff --git a/vespalog/src/main/java/com/yahoo/log/event/Stopped.java b/vespalog/src/main/java/com/yahoo/log/event/Stopped.java
index 7964a956b28..e40d67ed790 100644
--- a/vespalog/src/main/java/com/yahoo/log/event/Stopped.java
+++ b/vespalog/src/main/java/com/yahoo/log/event/Stopped.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log.event;
/**
diff --git a/vespalog/src/main/java/com/yahoo/log/event/Stopping.java b/vespalog/src/main/java/com/yahoo/log/event/Stopping.java
index 1bc2f91f4e9..9c1f534b6a7 100644
--- a/vespalog/src/main/java/com/yahoo/log/event/Stopping.java
+++ b/vespalog/src/main/java/com/yahoo/log/event/Stopping.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log.event;
/**
diff --git a/vespalog/src/main/java/com/yahoo/log/event/Unknown.java b/vespalog/src/main/java/com/yahoo/log/event/Unknown.java
index e9fa1a2e530..12305f1059b 100644
--- a/vespalog/src/main/java/com/yahoo/log/event/Unknown.java
+++ b/vespalog/src/main/java/com/yahoo/log/event/Unknown.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log.event;
/**
diff --git a/vespalog/src/main/java/com/yahoo/log/event/Value.java b/vespalog/src/main/java/com/yahoo/log/event/Value.java
index f694627bb12..f549b9f4f07 100644
--- a/vespalog/src/main/java/com/yahoo/log/event/Value.java
+++ b/vespalog/src/main/java/com/yahoo/log/event/Value.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log.event;
/**
diff --git a/vespalog/src/main/java/com/yahoo/log/event/ValueGroup.java b/vespalog/src/main/java/com/yahoo/log/event/ValueGroup.java
index cbd7a758eda..d164e4c15fd 100755
--- a/vespalog/src/main/java/com/yahoo/log/event/ValueGroup.java
+++ b/vespalog/src/main/java/com/yahoo/log/event/ValueGroup.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log.event;
public class ValueGroup extends Event {
diff --git a/vespalog/src/main/java/com/yahoo/log/event/package-info.java b/vespalog/src/main/java/com/yahoo/log/event/package-info.java
index 5a4106f61e5..158f89b065b 100644
--- a/vespalog/src/main/java/com/yahoo/log/event/package-info.java
+++ b/vespalog/src/main/java/com/yahoo/log/event/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.log.event;
diff --git a/vespalog/src/main/java/com/yahoo/log/package-info.java b/vespalog/src/main/java/com/yahoo/log/package-info.java
index 7e44b3efbc9..7b2dbb59f69 100644
--- a/vespalog/src/main/java/com/yahoo/log/package-info.java
+++ b/vespalog/src/main/java/com/yahoo/log/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.log;
diff --git a/vespalog/src/test/CMakeLists.txt b/vespalog/src/test/CMakeLists.txt
index 53442b8f7b7..bfa09b4de60 100644
--- a/vespalog/src/test/CMakeLists.txt
+++ b/vespalog/src/test/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalog_bufferedlogtest_app TEST
SOURCES
bufferedlogtest.cpp
diff --git a/vespalog/src/test/bufferedlogskiptest.cpp b/vespalog/src/test/bufferedlogskiptest.cpp
index 55815480e97..56f59541eaf 100644
--- a/vespalog/src/test/bufferedlogskiptest.cpp
+++ b/vespalog/src/test/bufferedlogskiptest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/bufferedlogger.h>
diff --git a/vespalog/src/test/bufferedlogskiptest_test.sh b/vespalog/src/test/bufferedlogskiptest_test.sh
index b80048bf019..c583fb6ee1c 100755
--- a/vespalog/src/test/bufferedlogskiptest_test.sh
+++ b/vespalog/src/test/bufferedlogskiptest_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
rm -f bufferedlogskiptest.log
VESPA_LOG_TARGET="file:bufferedlogskiptest.log" VESPA_LOG_LEVEL="all -spam" ./vespalog_bufferedlogskiptest_app bufferedlogskiptest.log
diff --git a/vespalog/src/test/bufferedlogtest.cpp b/vespalog/src/test/bufferedlogtest.cpp
index 4035e98653f..39990a26b2a 100644
--- a/vespalog/src/test/bufferedlogtest.cpp
+++ b/vespalog/src/test/bufferedlogtest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/bufferedlogger.h>
diff --git a/vespalog/src/test/bufferedlogtest.logger1.cpp b/vespalog/src/test/bufferedlogtest.logger1.cpp
index dde5f2edbb5..18d632268eb 100644
--- a/vespalog/src/test/bufferedlogtest.logger1.cpp
+++ b/vespalog/src/test/bufferedlogtest.logger1.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/bufferedlogger.h>
#include "bufferedlogtest.logger1.h"
diff --git a/vespalog/src/test/bufferedlogtest.logger1.h b/vespalog/src/test/bufferedlogtest.logger1.h
index 1ec8f9acad4..a8530c93dbb 100644
--- a/vespalog/src/test/bufferedlogtest.logger1.h
+++ b/vespalog/src/test/bufferedlogtest.logger1.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalog/src/test/bufferedlogtest.logger2.cpp b/vespalog/src/test/bufferedlogtest.logger2.cpp
index 992eeb70481..5703286c20e 100644
--- a/vespalog/src/test/bufferedlogtest.logger2.cpp
+++ b/vespalog/src/test/bufferedlogtest.logger2.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/bufferedlogger.h>
#include "bufferedlogtest.logger2.h"
diff --git a/vespalog/src/test/bufferedlogtest.logger2.h b/vespalog/src/test/bufferedlogtest.logger2.h
index cd88d8ea0be..aa3f132347a 100644
--- a/vespalog/src/test/bufferedlogtest.logger2.h
+++ b/vespalog/src/test/bufferedlogtest.logger2.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vespalog/src/test/bufferedlogtest_test.sh b/vespalog/src/test/bufferedlogtest_test.sh
index 0f973816a54..64a680f8979 100755
--- a/vespalog/src/test/bufferedlogtest_test.sh
+++ b/vespalog/src/test/bufferedlogtest_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
rm -f bufferedlogtest.log
VESPA_LOG_TARGET="file:bufferedlogtest.log" ./vespalog_bufferedlogtest_app bufferedlogtest.log
diff --git a/vespalog/src/test/java/com/yahoo/log/FileLogTargetTest.java b/vespalog/src/test/java/com/yahoo/log/FileLogTargetTest.java
index 63fe2fd8d70..34d8ec33093 100644
--- a/vespalog/src/test/java/com/yahoo/log/FileLogTargetTest.java
+++ b/vespalog/src/test/java/com/yahoo/log/FileLogTargetTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import org.junit.Test;
diff --git a/vespalog/src/test/java/com/yahoo/log/LogFileDbTest.java b/vespalog/src/test/java/com/yahoo/log/LogFileDbTest.java
index 021a12774e9..a4a6920abb6 100644
--- a/vespalog/src/test/java/com/yahoo/log/LogFileDbTest.java
+++ b/vespalog/src/test/java/com/yahoo/log/LogFileDbTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import java.io.File;
diff --git a/vespalog/src/test/java/com/yahoo/log/LogLevelTestCase.java b/vespalog/src/test/java/com/yahoo/log/LogLevelTestCase.java
index aa9a2b36221..fe34c219e19 100644
--- a/vespalog/src/test/java/com/yahoo/log/LogLevelTestCase.java
+++ b/vespalog/src/test/java/com/yahoo/log/LogLevelTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import java.util.Set;
diff --git a/vespalog/src/test/java/com/yahoo/log/LogMessageTestCase.java b/vespalog/src/test/java/com/yahoo/log/LogMessageTestCase.java
index 15618329ba3..da8162e9ad1 100644
--- a/vespalog/src/test/java/com/yahoo/log/LogMessageTestCase.java
+++ b/vespalog/src/test/java/com/yahoo/log/LogMessageTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import com.yahoo.log.event.Event;
diff --git a/vespalog/src/test/java/com/yahoo/log/LogSetupTestCase.java b/vespalog/src/test/java/com/yahoo/log/LogSetupTestCase.java
index d1863d1ad6d..6b0912a78d5 100644
--- a/vespalog/src/test/java/com/yahoo/log/LogSetupTestCase.java
+++ b/vespalog/src/test/java/com/yahoo/log/LogSetupTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import org.junit.Before;
diff --git a/vespalog/src/test/java/com/yahoo/log/LogUtilTest.java b/vespalog/src/test/java/com/yahoo/log/LogUtilTest.java
index 6012d731ee7..96717e9ac88 100644
--- a/vespalog/src/test/java/com/yahoo/log/LogUtilTest.java
+++ b/vespalog/src/test/java/com/yahoo/log/LogUtilTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import org.junit.Test;
diff --git a/vespalog/src/test/java/com/yahoo/log/RejectFilterTest.java b/vespalog/src/test/java/com/yahoo/log/RejectFilterTest.java
index 281b464abfe..311359a37a0 100644
--- a/vespalog/src/test/java/com/yahoo/log/RejectFilterTest.java
+++ b/vespalog/src/test/java/com/yahoo/log/RejectFilterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import org.junit.Test;
diff --git a/vespalog/src/test/java/com/yahoo/log/TimeComparatorTestCase.java b/vespalog/src/test/java/com/yahoo/log/TimeComparatorTestCase.java
index 5b7f5a878e4..b2a96667c32 100644
--- a/vespalog/src/test/java/com/yahoo/log/TimeComparatorTestCase.java
+++ b/vespalog/src/test/java/com/yahoo/log/TimeComparatorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import java.util.Iterator;
diff --git a/vespalog/src/test/java/com/yahoo/log/UncloseableOutputStreamTestCase.java b/vespalog/src/test/java/com/yahoo/log/UncloseableOutputStreamTestCase.java
index 9e462a72e9c..95889a01e67 100644
--- a/vespalog/src/test/java/com/yahoo/log/UncloseableOutputStreamTestCase.java
+++ b/vespalog/src/test/java/com/yahoo/log/UncloseableOutputStreamTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import org.junit.Test;
diff --git a/vespalog/src/test/java/com/yahoo/log/UtilTestCase.java b/vespalog/src/test/java/com/yahoo/log/UtilTestCase.java
index 760382b5c62..096672d8858 100644
--- a/vespalog/src/test/java/com/yahoo/log/UtilTestCase.java
+++ b/vespalog/src/test/java/com/yahoo/log/UtilTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import org.junit.Test;
diff --git a/vespalog/src/test/java/com/yahoo/log/VespaFormatterTestCase.java b/vespalog/src/test/java/com/yahoo/log/VespaFormatterTestCase.java
index d3d1d52c1d5..913bcafdd44 100644
--- a/vespalog/src/test/java/com/yahoo/log/VespaFormatterTestCase.java
+++ b/vespalog/src/test/java/com/yahoo/log/VespaFormatterTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import org.junit.Before;
diff --git a/vespalog/src/test/java/com/yahoo/log/VespaLevelControllerRepoTest.java b/vespalog/src/test/java/com/yahoo/log/VespaLevelControllerRepoTest.java
index 9d04e079f55..264938fcd24 100644
--- a/vespalog/src/test/java/com/yahoo/log/VespaLevelControllerRepoTest.java
+++ b/vespalog/src/test/java/com/yahoo/log/VespaLevelControllerRepoTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import org.junit.Test;
diff --git a/vespalog/src/test/java/com/yahoo/log/VespaLogHandlerTestCase.java b/vespalog/src/test/java/com/yahoo/log/VespaLogHandlerTestCase.java
index 7a45cd8b1fb..9b2af866f65 100644
--- a/vespalog/src/test/java/com/yahoo/log/VespaLogHandlerTestCase.java
+++ b/vespalog/src/test/java/com/yahoo/log/VespaLogHandlerTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log;
import org.junit.After;
diff --git a/vespalog/src/test/java/com/yahoo/log/event/EventTestCase.java b/vespalog/src/test/java/com/yahoo/log/event/EventTestCase.java
index c644f8296fe..b3890f860c9 100644
--- a/vespalog/src/test/java/com/yahoo/log/event/EventTestCase.java
+++ b/vespalog/src/test/java/com/yahoo/log/event/EventTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log.event;
import java.util.logging.Logger;
diff --git a/vespalog/src/test/java/com/yahoo/log/event/SingleHandler.java b/vespalog/src/test/java/com/yahoo/log/event/SingleHandler.java
index 829a4b89430..292d5b63a55 100644
--- a/vespalog/src/test/java/com/yahoo/log/event/SingleHandler.java
+++ b/vespalog/src/test/java/com/yahoo/log/event/SingleHandler.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.log.event;
import java.util.logging.Handler;
diff --git a/vespalog/src/test/logtest.cpp b/vespalog/src/test/logtest.cpp
index a95bea9e31c..bdbb5af0e94 100644
--- a/vespalog/src/test/logtest.cpp
+++ b/vespalog/src/test/logtest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <sys/types.h>
#include <stdlib.h>
#include <unistd.h>
diff --git a/vespalog/src/test/rejectfiltertest.cpp b/vespalog/src/test/rejectfiltertest.cpp
index 3125c05b959..4c413d1de2d 100644
--- a/vespalog/src/test/rejectfiltertest.cpp
+++ b/vespalog/src/test/rejectfiltertest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/log/reject-filter.h>
#include <sys/types.h>
diff --git a/vespalog/src/test/simple/CMakeLists.txt b/vespalog/src/test/simple/CMakeLists.txt
index cf74560ea71..821e453a362 100644
--- a/vespalog/src/test/simple/CMakeLists.txt
+++ b/vespalog/src/test/simple/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalog_simple_test_app TEST
SOURCES
logtest.cpp
diff --git a/vespalog/src/test/simple/logtest.cpp b/vespalog/src/test/simple/logtest.cpp
index 7951b488052..9e3d99cf0ed 100644
--- a/vespalog/src/test/simple/logtest.cpp
+++ b/vespalog/src/test/simple/logtest.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <sys/types.h>
#include <stdlib.h>
#include <unistd.h>
diff --git a/vespalog/src/test/threads/CMakeLists.txt b/vespalog/src/test/threads/CMakeLists.txt
index 8b326cb3b0e..00de16ff005 100644
--- a/vespalog/src/test/threads/CMakeLists.txt
+++ b/vespalog/src/test/threads/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespalog_threads_test_app TEST
SOURCES
testthreads.cpp
diff --git a/vespalog/src/test/threads/testthreads.cpp b/vespalog/src/test/threads/testthreads.cpp
index aef7f844c7e..f95db5ecc10 100644
--- a/vespalog/src/test/threads/testthreads.cpp
+++ b/vespalog/src/test/threads/testthreads.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fastos/app.h>
#include <vespa/fastos/thread.h>
#include <vespa/log/bufferedlogger.h>
diff --git a/vespalog/src/vespa-logfmt/logfilter.c b/vespalog/src/vespa-logfmt/logfilter.c
index 1af97751011..5c3bd428e87 100644
--- a/vespalog/src/vespa-logfmt/logfilter.c
+++ b/vespalog/src/vespa-logfmt/logfilter.c
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
diff --git a/vespalog/src/vespa-logfmt/vespa-logfmt.1 b/vespalog/src/vespa-logfmt/vespa-logfmt.1
index b2023816694..09e7485f044 100644
--- a/vespalog/src/vespa-logfmt/vespa-logfmt.1
+++ b/vespalog/src/vespa-logfmt/vespa-logfmt.1
@@ -1,4 +1,4 @@
-.\" Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+.\" Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
.\" $Id: logfmt.1,v 1.12 2007-06-19 09:37:25 daljord Exp $
.\"
.Dd Jun 7, 2017
diff --git a/vespalog/src/vespa-logfmt/vespa-logfmt.pl b/vespalog/src/vespa-logfmt/vespa-logfmt.pl
index 78e06aa5845..611af47715c 100755
--- a/vespalog/src/vespa-logfmt/vespa-logfmt.pl
+++ b/vespalog/src/vespa-logfmt/vespa-logfmt.pl
@@ -1,5 +1,5 @@
#!/usr/bin/env perl
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
sub findhome {
# Try the VESPA_HOME env variable
diff --git a/vespalog/src/vespa/log/CMakeLists.txt b/vespalog/src/vespa/log/CMakeLists.txt
index 585d5927c1c..1b68a53ad3d 100644
--- a/vespalog/src/vespa/log/CMakeLists.txt
+++ b/vespalog/src/vespa/log/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespalog
SOURCES
exceptions.cpp
diff --git a/vespalog/src/vespa/log/bufferedlogger.cpp b/vespalog/src/vespa/log/bufferedlogger.cpp
index 63663e0705b..607c8f06766 100644
--- a/vespalog/src/vespa/log/bufferedlogger.cpp
+++ b/vespalog/src/vespa/log/bufferedlogger.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "bufferedlogger.h"
#include <boost/multi_index_container.hpp>
diff --git a/vespalog/src/vespa/log/bufferedlogger.h b/vespalog/src/vespa/log/bufferedlogger.h
index 9081ab8f9cf..d31425921f4 100644
--- a/vespalog/src/vespa/log/bufferedlogger.h
+++ b/vespalog/src/vespa/log/bufferedlogger.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* \class ns_log::BufferedLogger
* \ingroup log
diff --git a/vespalog/src/vespa/log/component.cpp b/vespalog/src/vespa/log/component.cpp
index 3d0e675d029..fdb50a83245 100644
--- a/vespalog/src/vespa/log/component.cpp
+++ b/vespalog/src/vespa/log/component.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <cstdio>
#include "log.h"
diff --git a/vespalog/src/vespa/log/component.h b/vespalog/src/vespa/log/component.h
index e84ea384474..bcb4a4f6e4f 100644
--- a/vespalog/src/vespa/log/component.h
+++ b/vespalog/src/vespa/log/component.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace ns_log {
diff --git a/vespalog/src/vespa/log/control-file.cpp b/vespalog/src/vespa/log/control-file.cpp
index aead7c456ef..77ad1d0ec73 100644
--- a/vespalog/src/vespa/log/control-file.cpp
+++ b/vespalog/src/vespa/log/control-file.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <sys/types.h>
#include <cstdlib>
#include <cstring>
diff --git a/vespalog/src/vespa/log/control-file.h b/vespalog/src/vespa/log/control-file.h
index b5ae3c19b2f..6f302c7a97c 100644
--- a/vespalog/src/vespa/log/control-file.h
+++ b/vespalog/src/vespa/log/control-file.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "log.h"
diff --git a/vespalog/src/vespa/log/create-multiarg-file.pl b/vespalog/src/vespa/log/create-multiarg-file.pl
index 54093b1915b..f2d60afeba3 100755
--- a/vespalog/src/vespa/log/create-multiarg-file.pl
+++ b/vespalog/src/vespa/log/create-multiarg-file.pl
@@ -1,5 +1,5 @@
#!/usr/bin/env perl
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# This script generates multi-argument functions for sending some events.
diff --git a/vespalog/src/vespa/log/event-count-multiarg.cpp b/vespalog/src/vespa/log/event-count-multiarg.cpp
index e4f47b09ee1..139e050ecf4 100644
--- a/vespalog/src/vespa/log/event-count-multiarg.cpp
+++ b/vespalog/src/vespa/log/event-count-multiarg.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// This file was generated like this:
// ./create-multiarg-file.pl count 2 10 "const char *name" "double value"
// Do not modify this file manually!
diff --git a/vespalog/src/vespa/log/event-count-multiarg.h b/vespalog/src/vespa/log/event-count-multiarg.h
index 3d4e7ec077f..0019245329f 100644
--- a/vespalog/src/vespa/log/event-count-multiarg.h
+++ b/vespalog/src/vespa/log/event-count-multiarg.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// This file was generated like this:
// ./create-multiarg-file.pl count 2 10 "const char *name" "double value"
// Don not modify this file manually!
diff --git a/vespalog/src/vespa/log/event-value-multiarg.cpp b/vespalog/src/vespa/log/event-value-multiarg.cpp
index 5b01a8d5509..faaf0a1fde9 100644
--- a/vespalog/src/vespa/log/event-value-multiarg.cpp
+++ b/vespalog/src/vespa/log/event-value-multiarg.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// This file was generated like this:
// ./create-multiarg-file.pl value 2 10 "const char *name" "double value"
// Do not modify this file manually!
diff --git a/vespalog/src/vespa/log/event-value-multiarg.h b/vespalog/src/vespa/log/event-value-multiarg.h
index a12d589e4f9..a84f56291f9 100644
--- a/vespalog/src/vespa/log/event-value-multiarg.h
+++ b/vespalog/src/vespa/log/event-value-multiarg.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// This file was generated like this:
// ./create-multiarg-file.pl value 2 10 "const char *name" "double value"
// Don not modify this file manually!
diff --git a/vespalog/src/vespa/log/internal.cpp b/vespalog/src/vespa/log/internal.cpp
index 0974ad08463..eb2739d7b0e 100644
--- a/vespalog/src/vespa/log/internal.cpp
+++ b/vespalog/src/vespa/log/internal.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <sys/types.h>
#include <stdarg.h>
#include <cstdio>
diff --git a/vespalog/src/vespa/log/internal.h b/vespalog/src/vespa/log/internal.h
index b7095706d58..c9081b72ce9 100644
--- a/vespalog/src/vespa/log/internal.h
+++ b/vespalog/src/vespa/log/internal.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstring>
diff --git a/vespalog/src/vespa/log/llparser.cpp b/vespalog/src/vespa/log/llparser.cpp
index ae1af3e6416..4d0294ca20e 100644
--- a/vespalog/src/vespa/log/llparser.cpp
+++ b/vespalog/src/vespa/log/llparser.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "log-target.h"
#include "llparser.h"
diff --git a/vespalog/src/vespa/log/llparser.h b/vespalog/src/vespa/log/llparser.h
index 590826bd1ad..257969e7216 100644
--- a/vespalog/src/vespa/log/llparser.h
+++ b/vespalog/src/vespa/log/llparser.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/log/log.h>
diff --git a/vespalog/src/vespa/log/lock.cpp b/vespalog/src/vespa/log/lock.cpp
index 1cb260d30c9..eb768103d04 100644
--- a/vespalog/src/vespa/log/lock.cpp
+++ b/vespalog/src/vespa/log/lock.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
diff --git a/vespalog/src/vespa/log/lock.h b/vespalog/src/vespa/log/lock.h
index 1f519ac4779..2d20f544486 100644
--- a/vespalog/src/vespa/log/lock.h
+++ b/vespalog/src/vespa/log/lock.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <sys/types.h>
diff --git a/vespalog/src/vespa/log/log-assert.cpp b/vespalog/src/vespa/log/log-assert.cpp
index 28fac730189..4b6469d4527 100644
--- a/vespalog/src/vespa/log/log-assert.cpp
+++ b/vespalog/src/vespa/log/log-assert.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "log.h"
#include <cstdio>
diff --git a/vespalog/src/vespa/log/log-target-fd.cpp b/vespalog/src/vespa/log/log-target-fd.cpp
index 8eda1ff5b33..cb1b2e792b4 100644
--- a/vespalog/src/vespa/log/log-target-fd.cpp
+++ b/vespalog/src/vespa/log/log-target-fd.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <sys/types.h>
#include <unistd.h>
#include <cstring>
diff --git a/vespalog/src/vespa/log/log-target-fd.h b/vespalog/src/vespa/log/log-target-fd.h
index 06d498f858f..fa8df8ce8ed 100644
--- a/vespalog/src/vespa/log/log-target-fd.h
+++ b/vespalog/src/vespa/log/log-target-fd.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "log-target.h"
diff --git a/vespalog/src/vespa/log/log-target-file.cpp b/vespalog/src/vespa/log/log-target-file.cpp
index ef41a2cc1bd..4337d6b5bbb 100644
--- a/vespalog/src/vespa/log/log-target-file.cpp
+++ b/vespalog/src/vespa/log/log-target-file.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <unistd.h>
#include <cstring>
#include <fcntl.h>
diff --git a/vespalog/src/vespa/log/log-target-file.h b/vespalog/src/vespa/log/log-target-file.h
index 0d3857207d7..55e1dc3d952 100644
--- a/vespalog/src/vespa/log/log-target-file.h
+++ b/vespalog/src/vespa/log/log-target-file.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "log-target.h"
diff --git a/vespalog/src/vespa/log/log-target.cpp b/vespalog/src/vespa/log/log-target.cpp
index 9a543a3eeff..4ac037354e1 100644
--- a/vespalog/src/vespa/log/log-target.cpp
+++ b/vespalog/src/vespa/log/log-target.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <cstring>
#include <cassert>
diff --git a/vespalog/src/vespa/log/log-target.h b/vespalog/src/vespa/log/log-target.h
index 84835622dff..478ec7acbe8 100644
--- a/vespalog/src/vespa/log/log-target.h
+++ b/vespalog/src/vespa/log/log-target.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
/* This is a virtual base class for all log targets.
diff --git a/vespalog/src/vespa/log/log.cpp b/vespalog/src/vespa/log/log.cpp
index 47f7377ac4d..a7394b5848b 100644
--- a/vespalog/src/vespa/log/log.cpp
+++ b/vespalog/src/vespa/log/log.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "log.h"
LOG_SETUP_INDIRECT(".log", "$Id$");
@@ -102,11 +102,9 @@ Logger::setTarget()
void
Logger::ensurePrefix(const char *name)
{
- const char *start = name;
if (name[0] != '\0' && name[0] != '.') {
const char *end = strchr(name, '.');
int len = end ? end - name : strlen(name);
- start += len;
if (_prefix[0]) {
// Make sure the prefix already set is identical to this one
diff --git a/vespalog/src/vespa/log/log.h b/vespalog/src/vespa/log/log.h
index c69916f695a..48cc4211ffc 100644
--- a/vespalog/src/vespa/log/log.h
+++ b/vespalog/src/vespa/log/log.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <memory>
diff --git a/vespalog/src/vespa/log/mknm.pl b/vespalog/src/vespa/log/mknm.pl
index d7fc9a0bbbc..9aa2f6310ce 100755
--- a/vespalog/src/vespa/log/mknm.pl
+++ b/vespalog/src/vespa/log/mknm.pl
@@ -1,5 +1,5 @@
#!/usr/bin/perl
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
while (<>) {
if ( s/.*\benum\s+LogLevel\s*\{// ) {
diff --git a/vespalog/src/vespa/log/reject-filter.cpp b/vespalog/src/vespa/log/reject-filter.cpp
index 445a8cc7f89..d1eb581c27a 100644
--- a/vespalog/src/vespa/log/reject-filter.cpp
+++ b/vespalog/src/vespa/log/reject-filter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <sys/types.h>
#include <cstring>
#include <cstdlib>
diff --git a/vespalog/src/vespa/log/reject-filter.h b/vespalog/src/vespa/log/reject-filter.h
index 9bd7fbbafe7..d0ebc6004ef 100644
--- a/vespalog/src/vespa/log/reject-filter.h
+++ b/vespalog/src/vespa/log/reject-filter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/log/log.h>
diff --git a/vespamalloc/CMakeLists.txt b/vespamalloc/CMakeLists.txt
index 4246d72a943..395e7ec6d5a 100644
--- a/vespamalloc/CMakeLists.txt
+++ b/vespamalloc/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
add_compile_options(-fvisibility=hidden)
add_definitions(-DPARANOID_LEVEL=0)
diff --git a/vespamalloc/bin/parsememorydump.pl b/vespamalloc/bin/parsememorydump.pl
index a1183f185ea..95c70859b9a 100755
--- a/vespamalloc/bin/parsememorydump.pl
+++ b/vespamalloc/bin/parsememorydump.pl
@@ -1,5 +1,5 @@
#!/usr/bin/perl -w
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# This is a tool to parse the output given by vespamalloc when dumping all
# memory usage with stacktraces.
diff --git a/vespamalloc/src/tests/CMakeLists.txt b/vespamalloc/src/tests/CMakeLists.txt
index 41faebfeb92..42a46777990 100644
--- a/vespamalloc/src/tests/CMakeLists.txt
+++ b/vespamalloc/src/tests/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespamalloc_test_app
SOURCES
test.cpp
diff --git a/vespamalloc/src/tests/allocfree/CMakeLists.txt b/vespamalloc/src/tests/allocfree/CMakeLists.txt
index 70e929c95fe..cbb851e878d 100644
--- a/vespamalloc/src/tests/allocfree/CMakeLists.txt
+++ b/vespamalloc/src/tests/allocfree/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespamalloc_creatingmanythreads_test_app
SOURCES
creatingmanythreads.cpp
diff --git a/vespamalloc/src/tests/allocfree/allocfree.cpp b/vespamalloc/src/tests/allocfree/allocfree.cpp
index 4f79ba6bccb..2b603fdd033 100644
--- a/vespamalloc/src/tests/allocfree/allocfree.cpp
+++ b/vespamalloc/src/tests/allocfree/allocfree.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "producerconsumer.h"
#include <vespa/vespalib/testkit/testapp.h>
#include <map>
diff --git a/vespamalloc/src/tests/allocfree/allocfree_benchmark.sh b/vespamalloc/src/tests/allocfree/allocfree_benchmark.sh
index 2baceb5a974..42eb047eaa1 100755
--- a/vespamalloc/src/tests/allocfree/allocfree_benchmark.sh
+++ b/vespamalloc/src/tests/allocfree/allocfree_benchmark.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
TIME=/usr/bin/time
diff --git a/vespamalloc/src/tests/allocfree/allocfree_test.sh b/vespamalloc/src/tests/allocfree/allocfree_test.sh
index 810a66f632b..fc9899a7c6c 100755
--- a/vespamalloc/src/tests/allocfree/allocfree_test.sh
+++ b/vespamalloc/src/tests/allocfree/allocfree_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
TIME=/usr/bin/time
diff --git a/vespamalloc/src/tests/allocfree/creatingmanythreads.cpp b/vespamalloc/src/tests/allocfree/creatingmanythreads.cpp
index 3a049d06025..f11444f9d0a 100644
--- a/vespamalloc/src/tests/allocfree/creatingmanythreads.cpp
+++ b/vespamalloc/src/tests/allocfree/creatingmanythreads.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/log/log.h>
diff --git a/vespamalloc/src/tests/allocfree/generate_testtable.sh b/vespamalloc/src/tests/allocfree/generate_testtable.sh
index 98e52a6694e..f8a975d72c3 100755
--- a/vespamalloc/src/tests/allocfree/generate_testtable.sh
+++ b/vespamalloc/src/tests/allocfree/generate_testtable.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
base=$1
echo "No threads test. Test difference of static linkage, shared and debug versus glibc"
diff --git a/vespamalloc/src/tests/allocfree/linklist.cpp b/vespamalloc/src/tests/allocfree/linklist.cpp
index af44ec3430b..ea6eab44555 100644
--- a/vespamalloc/src/tests/allocfree/linklist.cpp
+++ b/vespamalloc/src/tests/allocfree/linklist.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "producerconsumer.h"
#include <vespa/vespalib/testkit/testapp.h>
#include <vespamalloc/malloc/allocchunk.h>
@@ -39,7 +39,7 @@ public:
size_t size() const { return 0; }
bool allocated() const { return false; }
int threadId() const { return 0; }
- void info(FILE *, unsigned level=0) const { level = 0; }
+ void info(FILE *, unsigned level=0) const { (void) level; }
Stack * callStack() { return NULL; }
size_t callStackLen() const { return 0; }
diff --git a/vespamalloc/src/tests/allocfree/producerconsumer.cpp b/vespamalloc/src/tests/allocfree/producerconsumer.cpp
index 2751c8a1f2c..7edd1495fde 100644
--- a/vespamalloc/src/tests/allocfree/producerconsumer.cpp
+++ b/vespamalloc/src/tests/allocfree/producerconsumer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "producerconsumer.h"
namespace vespalib {
diff --git a/vespamalloc/src/tests/allocfree/producerconsumer.h b/vespamalloc/src/tests/allocfree/producerconsumer.h
index 5457e3e5c66..23fb95facd8 100644
--- a/vespamalloc/src/tests/allocfree/producerconsumer.h
+++ b/vespamalloc/src/tests/allocfree/producerconsumer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vector>
diff --git a/vespamalloc/src/tests/allocfree/queue.h b/vespamalloc/src/tests/allocfree/queue.h
index 354f99932db..5585ec96f4b 100644
--- a/vespamalloc/src/tests/allocfree/queue.h
+++ b/vespamalloc/src/tests/allocfree/queue.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vespalib/util/guard.h>
diff --git a/vespamalloc/src/tests/allocfree/realloc.cpp b/vespamalloc/src/tests/allocfree/realloc.cpp
index 9bbc4718b41..739664989c8 100644
--- a/vespamalloc/src/tests/allocfree/realloc.cpp
+++ b/vespamalloc/src/tests/allocfree/realloc.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/vespamalloc/src/tests/allocfree/timeusage.sh b/vespamalloc/src/tests/allocfree/timeusage.sh
index 38fd80afc69..77e9922e591 100755
--- a/vespamalloc/src/tests/allocfree/timeusage.sh
+++ b/vespamalloc/src/tests/allocfree/timeusage.sh
@@ -1,3 +1,3 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
grep "CPU" |grep "elapsed" | sed "s/user / user /g" | sed "s/system / system /g" | sed "s/elapsed / elapsed /g" | sed "s/CPU / CPU /g" | awk '{print $1 ";\t" $3 ";\t" $7 ";"}'
diff --git a/vespamalloc/src/tests/doubledelete/CMakeLists.txt b/vespamalloc/src/tests/doubledelete/CMakeLists.txt
index 2017a242d1b..c33e2c3df17 100644
--- a/vespamalloc/src/tests/doubledelete/CMakeLists.txt
+++ b/vespamalloc/src/tests/doubledelete/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespamalloc_doubledelete_test_app TEST
SOURCES
doubledelete.cpp
diff --git a/vespamalloc/src/tests/doubledelete/doubledelete.cpp b/vespamalloc/src/tests/doubledelete/doubledelete.cpp
index 299583456cf..bd04be2da5d 100644
--- a/vespamalloc/src/tests/doubledelete/doubledelete.cpp
+++ b/vespamalloc/src/tests/doubledelete/doubledelete.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <stdlib.h>
void *savedptr;
diff --git a/vespamalloc/src/tests/doubledelete/doubledelete_test.sh b/vespamalloc/src/tests/doubledelete/doubledelete_test.sh
index ab0b4943b11..500ac84030c 100755
--- a/vespamalloc/src/tests/doubledelete/doubledelete_test.sh
+++ b/vespamalloc/src/tests/doubledelete/doubledelete_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
LD_PRELOAD=../../../src/vespamalloc/libvespamalloc.so ./vespamalloc_doubledelete_test_app
diff --git a/vespamalloc/src/tests/doubledelete/expectsignal.cpp b/vespamalloc/src/tests/doubledelete/expectsignal.cpp
index a0f6561889a..e9b71649268 100644
--- a/vespamalloc/src/tests/doubledelete/expectsignal.cpp
+++ b/vespamalloc/src/tests/doubledelete/expectsignal.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/child_process.h>
#include <sys/wait.h>
diff --git a/vespamalloc/src/tests/overwrite/CMakeLists.txt b/vespamalloc/src/tests/overwrite/CMakeLists.txt
index 9f8274ea2ce..a51ac757baa 100644
--- a/vespamalloc/src/tests/overwrite/CMakeLists.txt
+++ b/vespamalloc/src/tests/overwrite/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespamalloc_overwrite_test_app TEST
SOURCES
overwrite.cpp
diff --git a/vespamalloc/src/tests/overwrite/expectsignal.cpp b/vespamalloc/src/tests/overwrite/expectsignal.cpp
index 2b37499f85d..904cedd479f 100644
--- a/vespamalloc/src/tests/overwrite/expectsignal.cpp
+++ b/vespamalloc/src/tests/overwrite/expectsignal.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/child_process.h>
#include <sys/wait.h>
diff --git a/vespamalloc/src/tests/overwrite/overwrite.cpp b/vespamalloc/src/tests/overwrite/overwrite.cpp
index 1919a75ab00..151207e95fa 100644
--- a/vespamalloc/src/tests/overwrite/overwrite.cpp
+++ b/vespamalloc/src/tests/overwrite/overwrite.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
using namespace vespalib;
diff --git a/vespamalloc/src/tests/overwrite/overwrite_test.sh b/vespamalloc/src/tests/overwrite/overwrite_test.sh
index 05b1836e94e..dd28f2d9c86 100755
--- a/vespamalloc/src/tests/overwrite/overwrite_test.sh
+++ b/vespamalloc/src/tests/overwrite/overwrite_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
LD_PRELOAD=../../../src/vespamalloc/libvespamalloc.so ./vespamalloc_overwrite_test_app
diff --git a/vespamalloc/src/tests/stacktrace/CMakeLists.txt b/vespamalloc/src/tests/stacktrace/CMakeLists.txt
index 0cc0107ce84..575898b4261 100644
--- a/vespamalloc/src/tests/stacktrace/CMakeLists.txt
+++ b/vespamalloc/src/tests/stacktrace/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespamalloc_stacktrace_test_app TEST
SOURCES
stacktrace.cpp
diff --git a/vespamalloc/src/tests/stacktrace/stacktrace.cpp b/vespamalloc/src/tests/stacktrace/stacktrace.cpp
index 37322994586..b28a9653d27 100644
--- a/vespamalloc/src/tests/stacktrace/stacktrace.cpp
+++ b/vespamalloc/src/tests/stacktrace/stacktrace.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <cstdlib>
#include <cstdio>
#include <pthread.h>
diff --git a/vespamalloc/src/tests/test.cpp b/vespamalloc/src/tests/test.cpp
index 899c37d0c0e..e19e119bb33 100644
--- a/vespamalloc/src/tests/test.cpp
+++ b/vespamalloc/src/tests/test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/fastos/thread.h>
#include <cstdlib>
diff --git a/vespamalloc/src/tests/test1/CMakeLists.txt b/vespamalloc/src/tests/test1/CMakeLists.txt
index 42e168c4736..71e9ce272f9 100644
--- a/vespamalloc/src/tests/test1/CMakeLists.txt
+++ b/vespamalloc/src/tests/test1/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespamalloc_testatomic_app TEST
SOURCES
testatomic.cpp
diff --git a/vespamalloc/src/tests/test1/new_test.cpp b/vespamalloc/src/tests/test1/new_test.cpp
index a82badbbbdc..5230869145d 100644
--- a/vespamalloc/src/tests/test1/new_test.cpp
+++ b/vespamalloc/src/tests/test1/new_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/log/log.h>
#include <malloc.h>
diff --git a/vespamalloc/src/tests/test1/testatomic.cpp b/vespamalloc/src/tests/test1/testatomic.cpp
index 9e44bc8a913..1f0b2acaeef 100644
--- a/vespamalloc/src/tests/test1/testatomic.cpp
+++ b/vespamalloc/src/tests/test1/testatomic.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespamalloc/malloc/allocchunk.h>
diff --git a/vespamalloc/src/tests/test2/CMakeLists.txt b/vespamalloc/src/tests/test2/CMakeLists.txt
index cc4a7fe8ada..82149cdb8b6 100644
--- a/vespamalloc/src/tests/test2/CMakeLists.txt
+++ b/vespamalloc/src/tests/test2/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespamalloc_testgraph_app TEST
SOURCES
testgraph.cpp
diff --git a/vespamalloc/src/tests/test2/testgraph.cpp b/vespamalloc/src/tests/test2/testgraph.cpp
index ae0c468b185..9aa3020f0be 100644
--- a/vespamalloc/src/tests/test2/testgraph.cpp
+++ b/vespamalloc/src/tests/test2/testgraph.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespamalloc/util/index.h>
#include <vespamalloc/util/callgraph.h>
#include <vespamalloc/util/callstack.h>
diff --git a/vespamalloc/src/tests/thread/CMakeLists.txt b/vespamalloc/src/tests/thread/CMakeLists.txt
index 53d61f4aa76..50314516dd5 100644
--- a/vespamalloc/src/tests/thread/CMakeLists.txt
+++ b/vespamalloc/src/tests/thread/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vespamalloc_thread_test_app TEST
SOURCES
thread.cpp
diff --git a/vespamalloc/src/tests/thread/racemanythreads.cpp b/vespamalloc/src/tests/thread/racemanythreads.cpp
index 656a7ef487a..8b09d3154bb 100644
--- a/vespamalloc/src/tests/thread/racemanythreads.cpp
+++ b/vespamalloc/src/tests/thread/racemanythreads.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <unistd.h>
diff --git a/vespamalloc/src/tests/thread/thread.cpp b/vespamalloc/src/tests/thread/thread.cpp
index 04be3b38b3d..b101b862268 100644
--- a/vespamalloc/src/tests/thread/thread.cpp
+++ b/vespamalloc/src/tests/thread/thread.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <atomic>
diff --git a/vespamalloc/src/tests/thread/thread_test.sh b/vespamalloc/src/tests/thread/thread_test.sh
index b2e91840711..45734bab3a7 100755
--- a/vespamalloc/src/tests/thread/thread_test.sh
+++ b/vespamalloc/src/tests/thread/thread_test.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
set -e
echo "Trying to find limit for processes:"
diff --git a/vespamalloc/src/vespamalloc/CMakeLists.txt b/vespamalloc/src/vespamalloc/CMakeLists.txt
index 1fe550ad95a..8ee0f150fb1 100644
--- a/vespamalloc/src/vespamalloc/CMakeLists.txt
+++ b/vespamalloc/src/vespamalloc/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespamalloc
SOURCES
$<TARGET_OBJECTS:vespamalloc_malloc>
diff --git a/vespamalloc/src/vespamalloc/malloc/CMakeLists.txt b/vespamalloc/src/vespamalloc/malloc/CMakeLists.txt
index 615096d22b6..cfa8018e25f 100644
--- a/vespamalloc/src/vespamalloc/malloc/CMakeLists.txt
+++ b/vespamalloc/src/vespamalloc/malloc/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespamalloc_malloc OBJECT
SOURCES
malloc.cpp
diff --git a/vespamalloc/src/vespamalloc/malloc/allocchunk.cpp b/vespamalloc/src/vespamalloc/malloc/allocchunk.cpp
index fb95018e94e..e76f737166d 100644
--- a/vespamalloc/src/vespamalloc/malloc/allocchunk.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/allocchunk.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "allocchunk.h"
namespace vespamalloc {
diff --git a/vespamalloc/src/vespamalloc/malloc/allocchunk.h b/vespamalloc/src/vespamalloc/malloc/allocchunk.h
index ed0b52c7b73..efacb0a2085 100644
--- a/vespamalloc/src/vespamalloc/malloc/allocchunk.h
+++ b/vespamalloc/src/vespamalloc/malloc/allocchunk.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "common.h"
diff --git a/vespamalloc/src/vespamalloc/malloc/common.cpp b/vespamalloc/src/vespamalloc/malloc/common.cpp
index 32d474a8e92..eab023d12fa 100644
--- a/vespamalloc/src/vespamalloc/malloc/common.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/common.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "common.h"
#include <pthread.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/common.h b/vespamalloc/src/vespamalloc/malloc/common.h
index 2bb7df58957..421575ac587 100644
--- a/vespamalloc/src/vespamalloc/malloc/common.h
+++ b/vespamalloc/src/vespamalloc/malloc/common.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <new>
diff --git a/vespamalloc/src/vespamalloc/malloc/datasegment.cpp b/vespamalloc/src/vespamalloc/malloc/datasegment.cpp
index e8feb39b70c..a8ff04793e7 100644
--- a/vespamalloc/src/vespamalloc/malloc/datasegment.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/datasegment.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespamalloc/malloc/datasegment.hpp>
#include <vespamalloc/malloc/memblock.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/datasegment.h b/vespamalloc/src/vespamalloc/malloc/datasegment.h
index 3bd87ca343f..dc81178150a 100644
--- a/vespamalloc/src/vespamalloc/malloc/datasegment.h
+++ b/vespamalloc/src/vespamalloc/malloc/datasegment.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <climits>
diff --git a/vespamalloc/src/vespamalloc/malloc/datasegment.hpp b/vespamalloc/src/vespamalloc/malloc/datasegment.hpp
index 3fb56c6feb3..75ca07a5cf4 100644
--- a/vespamalloc/src/vespamalloc/malloc/datasegment.hpp
+++ b/vespamalloc/src/vespamalloc/malloc/datasegment.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespamalloc/malloc/datasegment.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/datasegmentd.cpp b/vespamalloc/src/vespamalloc/malloc/datasegmentd.cpp
index cc4a936ffd0..c285f03fcf3 100644
--- a/vespamalloc/src/vespamalloc/malloc/datasegmentd.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/datasegmentd.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespamalloc/malloc/datasegment.hpp>
#include <vespamalloc/malloc/memblockboundscheck_d.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/datasegmentdst.cpp b/vespamalloc/src/vespamalloc/malloc/datasegmentdst.cpp
index 269fb71bb8f..cb5b9c0981c 100644
--- a/vespamalloc/src/vespamalloc/malloc/datasegmentdst.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/datasegmentdst.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespamalloc/malloc/datasegment.hpp>
#include <vespamalloc/malloc/memblockboundscheck_dst.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/globalpool.cpp b/vespamalloc/src/vespamalloc/malloc/globalpool.cpp
index 455a304acdf..1d7f63516ca 100644
--- a/vespamalloc/src/vespamalloc/malloc/globalpool.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/globalpool.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespamalloc/malloc/globalpool.hpp>
#include <vespamalloc/malloc/memblock.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/globalpool.h b/vespamalloc/src/vespamalloc/malloc/globalpool.h
index 98f19efae31..a6b398bc1f1 100644
--- a/vespamalloc/src/vespamalloc/malloc/globalpool.h
+++ b/vespamalloc/src/vespamalloc/malloc/globalpool.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "common.h"
diff --git a/vespamalloc/src/vespamalloc/malloc/globalpool.hpp b/vespamalloc/src/vespamalloc/malloc/globalpool.hpp
index cd0546933ae..65e9af2fe52 100644
--- a/vespamalloc/src/vespamalloc/malloc/globalpool.hpp
+++ b/vespamalloc/src/vespamalloc/malloc/globalpool.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "globalpool.h"
diff --git a/vespamalloc/src/vespamalloc/malloc/globalpoold.cpp b/vespamalloc/src/vespamalloc/malloc/globalpoold.cpp
index 5816b0855b5..04db8c8ca85 100644
--- a/vespamalloc/src/vespamalloc/malloc/globalpoold.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/globalpoold.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespamalloc/malloc/globalpool.hpp>
#include <vespamalloc/malloc/memblockboundscheck_d.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/globalpooldst.cpp b/vespamalloc/src/vespamalloc/malloc/globalpooldst.cpp
index 8bd757019ba..9bd960e44f1 100644
--- a/vespamalloc/src/vespamalloc/malloc/globalpooldst.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/globalpooldst.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespamalloc/malloc/globalpool.hpp>
#include <vespamalloc/malloc/memblockboundscheck_dst.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/malloc.cpp b/vespamalloc/src/vespamalloc/malloc/malloc.cpp
index 8efff973fa1..75c06c04859 100644
--- a/vespamalloc/src/vespamalloc/malloc/malloc.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/malloc.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespamalloc/malloc/malloc.h>
#include <vespamalloc/malloc/memorywatcher.h>
#include <vespamalloc/malloc/memblock.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/malloc.h b/vespamalloc/src/vespamalloc/malloc/malloc.h
index f9a749c006e..8e0a39e944b 100644
--- a/vespamalloc/src/vespamalloc/malloc/malloc.h
+++ b/vespamalloc/src/vespamalloc/malloc/malloc.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "common.h"
diff --git a/vespamalloc/src/vespamalloc/malloc/mallocd.cpp b/vespamalloc/src/vespamalloc/malloc/mallocd.cpp
index 038715e4231..f54093582b9 100644
--- a/vespamalloc/src/vespamalloc/malloc/mallocd.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/mallocd.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespamalloc/malloc/mallocd.h>
#include <vespamalloc/malloc/memblockboundscheck_d.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/mallocd.h b/vespamalloc/src/vespamalloc/malloc/mallocd.h
index 5952ff00687..01b120058bb 100644
--- a/vespamalloc/src/vespamalloc/malloc/mallocd.h
+++ b/vespamalloc/src/vespamalloc/malloc/mallocd.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespamalloc/malloc/memblockboundscheck.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/mallocdst.h b/vespamalloc/src/vespamalloc/malloc/mallocdst.h
index 92a37997292..ef7bedd3e58 100644
--- a/vespamalloc/src/vespamalloc/malloc/mallocdst.h
+++ b/vespamalloc/src/vespamalloc/malloc/mallocdst.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespamalloc/malloc/mallocd.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/mallocdst16.cpp b/vespamalloc/src/vespamalloc/malloc/mallocdst16.cpp
index 67d3869ed34..03206bcdf90 100644
--- a/vespamalloc/src/vespamalloc/malloc/mallocdst16.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/mallocdst16.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespamalloc/malloc/mallocdst.h>
namespace vespamalloc {
diff --git a/vespamalloc/src/vespamalloc/malloc/mallocdst16_nl.cpp b/vespamalloc/src/vespamalloc/malloc/mallocdst16_nl.cpp
index e1bd28cac48..41f78c5222c 100644
--- a/vespamalloc/src/vespamalloc/malloc/mallocdst16_nl.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/mallocdst16_nl.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespamalloc/malloc/mallocdst.h>
namespace vespamalloc {
diff --git a/vespamalloc/src/vespamalloc/malloc/memblock.cpp b/vespamalloc/src/vespamalloc/malloc/memblock.cpp
index 6fb45957a18..6851488bf9b 100644
--- a/vespamalloc/src/vespamalloc/malloc/memblock.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/memblock.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespamalloc/malloc/memblock.hpp>
namespace vespamalloc {
diff --git a/vespamalloc/src/vespamalloc/malloc/memblock.h b/vespamalloc/src/vespamalloc/malloc/memblock.h
index 8ad56921b37..7a7ee7c71f0 100644
--- a/vespamalloc/src/vespamalloc/malloc/memblock.h
+++ b/vespamalloc/src/vespamalloc/malloc/memblock.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespamalloc/util/callstack.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/memblock.hpp b/vespamalloc/src/vespamalloc/malloc/memblock.hpp
index 57b5a8cac51..ffd27d2dfbc 100644
--- a/vespamalloc/src/vespamalloc/malloc/memblock.hpp
+++ b/vespamalloc/src/vespamalloc/malloc/memblock.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespamalloc/malloc/memblock.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/memblockboundscheck.cpp b/vespamalloc/src/vespamalloc/malloc/memblockboundscheck.cpp
index d147bd5ba41..a0847ef3295 100644
--- a/vespamalloc/src/vespamalloc/malloc/memblockboundscheck.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/memblockboundscheck.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#ifndef _VESPAMALLOC_MALLOC_MEMBLOCKBOUNDSCHECK_HPP_
#define _VESPAMALLOC_MALLOC_MEMBLOCKBOUNDSCHECK_HPP_
diff --git a/vespamalloc/src/vespamalloc/malloc/memblockboundscheck.h b/vespamalloc/src/vespamalloc/malloc/memblockboundscheck.h
index 7ffac7c2108..8c734f6dbd3 100644
--- a/vespamalloc/src/vespamalloc/malloc/memblockboundscheck.h
+++ b/vespamalloc/src/vespamalloc/malloc/memblockboundscheck.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespamalloc/malloc/common.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/memblockboundscheck.hpp b/vespamalloc/src/vespamalloc/malloc/memblockboundscheck.hpp
index d4890fac187..3d06879264c 100644
--- a/vespamalloc/src/vespamalloc/malloc/memblockboundscheck.hpp
+++ b/vespamalloc/src/vespamalloc/malloc/memblockboundscheck.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespamalloc/malloc/memblockboundscheck.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/memblockboundscheck_d.cpp b/vespamalloc/src/vespamalloc/malloc/memblockboundscheck_d.cpp
index 73ec07800ff..3ecb2d77030 100644
--- a/vespamalloc/src/vespamalloc/malloc/memblockboundscheck_d.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/memblockboundscheck_d.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespamalloc/malloc/memblockboundscheck_d.h>
#include <vespamalloc/malloc/memblockboundscheck.hpp>
diff --git a/vespamalloc/src/vespamalloc/malloc/memblockboundscheck_d.h b/vespamalloc/src/vespamalloc/malloc/memblockboundscheck_d.h
index 9dd089a7100..7bf87f96568 100644
--- a/vespamalloc/src/vespamalloc/malloc/memblockboundscheck_d.h
+++ b/vespamalloc/src/vespamalloc/malloc/memblockboundscheck_d.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespamalloc/malloc/memblockboundscheck.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/memblockboundscheck_dst.cpp b/vespamalloc/src/vespamalloc/malloc/memblockboundscheck_dst.cpp
index e4f9be3eccd..3ed13b184bd 100644
--- a/vespamalloc/src/vespamalloc/malloc/memblockboundscheck_dst.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/memblockboundscheck_dst.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespamalloc/malloc/memblockboundscheck_dst.h>
#include <vespamalloc/malloc/memblockboundscheck.hpp>
diff --git a/vespamalloc/src/vespamalloc/malloc/memblockboundscheck_dst.h b/vespamalloc/src/vespamalloc/malloc/memblockboundscheck_dst.h
index 65fcb982737..fa85c9fae83 100644
--- a/vespamalloc/src/vespamalloc/malloc/memblockboundscheck_dst.h
+++ b/vespamalloc/src/vespamalloc/malloc/memblockboundscheck_dst.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespamalloc/malloc/memblockboundscheck.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/memorywatcher.h b/vespamalloc/src/vespamalloc/malloc/memorywatcher.h
index b56200e2ab2..242dd5d9fcc 100644
--- a/vespamalloc/src/vespamalloc/malloc/memorywatcher.h
+++ b/vespamalloc/src/vespamalloc/malloc/memorywatcher.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <stdio.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/mmap.cpp b/vespamalloc/src/vespamalloc/malloc/mmap.cpp
index bd67bbef710..c10fea4a535 100644
--- a/vespamalloc/src/vespamalloc/malloc/mmap.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/mmap.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <sys/types.h>
#include <sys/mman.h>
#include <dlfcn.h>
@@ -46,10 +46,8 @@ static bool isFromVespaMalloc(const void * addr)
void * local_mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset)
{
static mmap_function real_func = NULL;
- // This is a dirty trick for use with vespamalloc as there can be
- // no allocations before the initial mmap from vespamalloc has succeded.
if (real_func == NULL) {
- real_func = (mmap_function) _dl_sym (RTLD_NEXT, "mmap", __builtin_return_address (0));
+ real_func = (mmap_function) dlsym (RTLD_NEXT, "mmap");
if (real_func == NULL) {
fprintf (stderr, "Could not find the mmap function!\n");
abort();
diff --git a/vespamalloc/src/vespamalloc/malloc/overload.h b/vespamalloc/src/vespamalloc/malloc/overload.h
index f3805327823..09d36a477e7 100644
--- a/vespamalloc/src/vespamalloc/malloc/overload.h
+++ b/vespamalloc/src/vespamalloc/malloc/overload.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <dlfcn.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/stat.h b/vespamalloc/src/vespamalloc/malloc/stat.h
index ca456452415..b8e51e4ec7b 100644
--- a/vespamalloc/src/vespamalloc/malloc/stat.h
+++ b/vespamalloc/src/vespamalloc/malloc/stat.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
namespace vespamalloc {
diff --git a/vespamalloc/src/vespamalloc/malloc/threadlist.cpp b/vespamalloc/src/vespamalloc/malloc/threadlist.cpp
index 5a09ac86503..c608b92cf00 100644
--- a/vespamalloc/src/vespamalloc/malloc/threadlist.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/threadlist.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespamalloc/malloc/threadlist.hpp>
#include <vespamalloc/malloc/memblock.h>
#include <vespamalloc/malloc/stat.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/threadlist.h b/vespamalloc/src/vespamalloc/malloc/threadlist.h
index 91409eb2c95..c95760dc015 100644
--- a/vespamalloc/src/vespamalloc/malloc/threadlist.h
+++ b/vespamalloc/src/vespamalloc/malloc/threadlist.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "threadpool.h"
diff --git a/vespamalloc/src/vespamalloc/malloc/threadlist.hpp b/vespamalloc/src/vespamalloc/malloc/threadlist.hpp
index 24f9fc4388c..8a2cb1de879 100644
--- a/vespamalloc/src/vespamalloc/malloc/threadlist.hpp
+++ b/vespamalloc/src/vespamalloc/malloc/threadlist.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "threadlist.h"
diff --git a/vespamalloc/src/vespamalloc/malloc/threadlistd.cpp b/vespamalloc/src/vespamalloc/malloc/threadlistd.cpp
index 226c15e46dd..f43b12941f3 100644
--- a/vespamalloc/src/vespamalloc/malloc/threadlistd.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/threadlistd.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespamalloc/malloc/threadlist.hpp>
#include <vespamalloc/malloc/memblockboundscheck_d.h>
#include <vespamalloc/malloc/stat.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/threadlistdst.cpp b/vespamalloc/src/vespamalloc/malloc/threadlistdst.cpp
index c05eeeff918..8f934261175 100644
--- a/vespamalloc/src/vespamalloc/malloc/threadlistdst.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/threadlistdst.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespamalloc/malloc/threadlist.hpp>
#include <vespamalloc/malloc/memblockboundscheck_dst.h>
#include <vespamalloc/malloc/stat.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/threadpool.cpp b/vespamalloc/src/vespamalloc/malloc/threadpool.cpp
index 7c3579d4b81..ebeb550896d 100644
--- a/vespamalloc/src/vespamalloc/malloc/threadpool.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/threadpool.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespamalloc/malloc/threadpool.hpp>
#include <vespamalloc/malloc/memblock.h>
#include <vespamalloc/malloc/stat.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/threadpool.h b/vespamalloc/src/vespamalloc/malloc/threadpool.h
index 493369a4441..ac4f5bb8551 100644
--- a/vespamalloc/src/vespamalloc/malloc/threadpool.h
+++ b/vespamalloc/src/vespamalloc/malloc/threadpool.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <atomic>
diff --git a/vespamalloc/src/vespamalloc/malloc/threadpool.hpp b/vespamalloc/src/vespamalloc/malloc/threadpool.hpp
index b4ce1b6d6d0..7e86c3f691a 100644
--- a/vespamalloc/src/vespamalloc/malloc/threadpool.hpp
+++ b/vespamalloc/src/vespamalloc/malloc/threadpool.hpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespamalloc/malloc/threadpool.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/threadpoold.cpp b/vespamalloc/src/vespamalloc/malloc/threadpoold.cpp
index 69f103d48ca..ad54cf212f2 100644
--- a/vespamalloc/src/vespamalloc/malloc/threadpoold.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/threadpoold.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespamalloc/malloc/threadpool.hpp>
#include <vespamalloc/malloc/memblockboundscheck_d.h>
#include <vespamalloc/malloc/stat.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/threadpooldst.cpp b/vespamalloc/src/vespamalloc/malloc/threadpooldst.cpp
index 42ca6a8407e..6422581601e 100644
--- a/vespamalloc/src/vespamalloc/malloc/threadpooldst.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/threadpooldst.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespamalloc/malloc/threadpool.hpp>
#include <vespamalloc/malloc/memblockboundscheck_dst.h>
#include <vespamalloc/malloc/stat.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/threadproxy.cpp b/vespamalloc/src/vespamalloc/malloc/threadproxy.cpp
index 1fb2a92c71d..c271b041d07 100644
--- a/vespamalloc/src/vespamalloc/malloc/threadproxy.cpp
+++ b/vespamalloc/src/vespamalloc/malloc/threadproxy.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "threadproxy.h"
#include <dlfcn.h>
diff --git a/vespamalloc/src/vespamalloc/malloc/threadproxy.h b/vespamalloc/src/vespamalloc/malloc/threadproxy.h
index 79449111e31..80ec3dadbfe 100644
--- a/vespamalloc/src/vespamalloc/malloc/threadproxy.h
+++ b/vespamalloc/src/vespamalloc/malloc/threadproxy.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "common.h"
diff --git a/vespamalloc/src/vespamalloc/util/CMakeLists.txt b/vespamalloc/src/vespamalloc/util/CMakeLists.txt
index b174f93b81f..c622be47a6a 100644
--- a/vespamalloc/src/vespamalloc/util/CMakeLists.txt
+++ b/vespamalloc/src/vespamalloc/util/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vespamalloc_util OBJECT
SOURCES
callstack.cpp
diff --git a/vespamalloc/src/vespamalloc/util/callgraph.h b/vespamalloc/src/vespamalloc/util/callgraph.h
index 6499cc989d4..94df3bd5e92 100644
--- a/vespamalloc/src/vespamalloc/util/callgraph.h
+++ b/vespamalloc/src/vespamalloc/util/callgraph.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <stdio.h>
diff --git a/vespamalloc/src/vespamalloc/util/callstack.cpp b/vespamalloc/src/vespamalloc/util/callstack.cpp
index e072dda91c4..9be2aa8133e 100644
--- a/vespamalloc/src/vespamalloc/util/callstack.cpp
+++ b/vespamalloc/src/vespamalloc/util/callstack.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <dlfcn.h>
#include <ctype.h>
#include <vespamalloc/util/callstack.h>
diff --git a/vespamalloc/src/vespamalloc/util/callstack.h b/vespamalloc/src/vespamalloc/util/callstack.h
index 99eed6fd88a..89feb01c4b2 100644
--- a/vespamalloc/src/vespamalloc/util/callstack.h
+++ b/vespamalloc/src/vespamalloc/util/callstack.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <stdio.h>
diff --git a/vespamalloc/src/vespamalloc/util/index.h b/vespamalloc/src/vespamalloc/util/index.h
index aef0efb5942..b690b5b4abc 100644
--- a/vespamalloc/src/vespamalloc/util/index.h
+++ b/vespamalloc/src/vespamalloc/util/index.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstddef>
diff --git a/vespamalloc/src/vespamalloc/util/osmem.cpp b/vespamalloc/src/vespamalloc/util/osmem.cpp
index f4fbb376265..bcc39074b9f 100644
--- a/vespamalloc/src/vespamalloc/util/osmem.cpp
+++ b/vespamalloc/src/vespamalloc/util/osmem.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespamalloc/util/osmem.h>
#include <stdio.h>
#include <fcntl.h>
diff --git a/vespamalloc/src/vespamalloc/util/osmem.h b/vespamalloc/src/vespamalloc/util/osmem.h
index 2faf3c9b181..52821af041e 100644
--- a/vespamalloc/src/vespamalloc/util/osmem.h
+++ b/vespamalloc/src/vespamalloc/util/osmem.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cctype>
diff --git a/vespamalloc/src/vespamalloc/util/stream.cpp b/vespamalloc/src/vespamalloc/util/stream.cpp
index fda60260394..4bf2e9aed9e 100644
--- a/vespamalloc/src/vespamalloc/util/stream.cpp
+++ b/vespamalloc/src/vespamalloc/util/stream.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "stream.h"
#include <algorithm>
#include <stdio.h>
diff --git a/vespamalloc/src/vespamalloc/util/stream.h b/vespamalloc/src/vespamalloc/util/stream.h
index bd3423bfba7..5d9750be827 100644
--- a/vespamalloc/src/vespamalloc/util/stream.h
+++ b/vespamalloc/src/vespamalloc/util/stream.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <cstring>
diff --git a/vespamalloc/src/vespamalloc/util/traceutil.cpp b/vespamalloc/src/vespamalloc/util/traceutil.cpp
index 149124a06be..49cde544732 100644
--- a/vespamalloc/src/vespamalloc/util/traceutil.cpp
+++ b/vespamalloc/src/vespamalloc/util/traceutil.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespamalloc/util/traceutil.h>
#include <algorithm>
diff --git a/vespamalloc/src/vespamalloc/util/traceutil.h b/vespamalloc/src/vespamalloc/util/traceutil.h
index 513dfdf8c80..15fb8e221c8 100644
--- a/vespamalloc/src/vespamalloc/util/traceutil.h
+++ b/vespamalloc/src/vespamalloc/util/traceutil.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <dlfcn.h>
diff --git a/vsm/CMakeLists.txt b/vsm/CMakeLists.txt
index eb163e8b675..e1607ff27aa 100644
--- a/vsm/CMakeLists.txt
+++ b/vsm/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_define_module(
DEPENDS
fastos
diff --git a/vsm/pom.xml b/vsm/pom.xml
index eb06ea1a35b..2cc777be593 100644
--- a/vsm/pom.xml
+++ b/vsm/pom.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
diff --git a/vsm/src/tests/charbuffer/CMakeLists.txt b/vsm/src/tests/charbuffer/CMakeLists.txt
index 76aa74a9b2c..43eb6a8114f 100644
--- a/vsm/src/tests/charbuffer/CMakeLists.txt
+++ b/vsm/src/tests/charbuffer/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vsm_charbuffer_test_app TEST
SOURCES
charbuffer.cpp
diff --git a/vsm/src/tests/charbuffer/charbuffer.cpp b/vsm/src/tests/charbuffer/charbuffer.cpp
index 061b5efd268..736d35459cb 100644
--- a/vsm/src/tests/charbuffer/charbuffer.cpp
+++ b/vsm/src/tests/charbuffer/charbuffer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vsm/common/charbuffer.h>
diff --git a/vsm/src/tests/docsum/CMakeLists.txt b/vsm/src/tests/docsum/CMakeLists.txt
index f2379026a44..aec2637b3ad 100644
--- a/vsm/src/tests/docsum/CMakeLists.txt
+++ b/vsm/src/tests/docsum/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vsm_docsum_test_app TEST
SOURCES
docsum.cpp
diff --git a/vsm/src/tests/docsum/docsum.cpp b/vsm/src/tests/docsum/docsum.cpp
index fa75e6eefed..35553c6f98c 100644
--- a/vsm/src/tests/docsum/docsum.cpp
+++ b/vsm/src/tests/docsum/docsum.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/document/fieldvalue/fieldvalues.h>
#include <vespa/document/datatype/structdatatype.h>
diff --git a/vsm/src/tests/document/CMakeLists.txt b/vsm/src/tests/document/CMakeLists.txt
index ad89363d906..819d300280f 100644
--- a/vsm/src/tests/document/CMakeLists.txt
+++ b/vsm/src/tests/document/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vsm_document_test_app TEST
SOURCES
document.cpp
diff --git a/vsm/src/tests/document/document.cpp b/vsm/src/tests/document/document.cpp
index bb18c4b0a91..1e97d232a64 100644
--- a/vsm/src/tests/document/document.cpp
+++ b/vsm/src/tests/document/document.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/document/fieldvalue/fieldvalues.h>
diff --git a/vsm/src/tests/searcher/CMakeLists.txt b/vsm/src/tests/searcher/CMakeLists.txt
index 69a2dcfb2de..9e0bf0391ef 100644
--- a/vsm/src/tests/searcher/CMakeLists.txt
+++ b/vsm/src/tests/searcher/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vsm_searcher_test_app TEST
SOURCES
searcher_test.cpp
diff --git a/vsm/src/tests/searcher/searcher_test.cpp b/vsm/src/tests/searcher/searcher_test.cpp
index 2a57f01be83..34fa66eaa90 100644
--- a/vsm/src/tests/searcher/searcher_test.cpp
+++ b/vsm/src/tests/searcher/searcher_test.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
diff --git a/vsm/src/tests/textutil/CMakeLists.txt b/vsm/src/tests/textutil/CMakeLists.txt
index e8a0c414e53..83d4d8b00d6 100644
--- a/vsm/src/tests/textutil/CMakeLists.txt
+++ b/vsm/src/tests/textutil/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_executable(vsm_textutil_test_app TEST
SOURCES
textutil.cpp
diff --git a/vsm/src/tests/textutil/textutil.cpp b/vsm/src/tests/textutil/textutil.cpp
index 77d13ec3461..2a1390eaa01 100644
--- a/vsm/src/tests/textutil/textutil.cpp
+++ b/vsm/src/tests/textutil/textutil.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/fastlib/text/unicodeutil.h>
diff --git a/vsm/src/vespa/vsm/CMakeLists.txt b/vsm/src/vespa/vsm/CMakeLists.txt
index 309d07d13ec..8ceabbe494f 100644
--- a/vsm/src/vespa/vsm/CMakeLists.txt
+++ b/vsm/src/vespa/vsm/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vsm
SOURCES
$<TARGET_OBJECTS:vsm_vconfig>
diff --git a/vsm/src/vespa/vsm/common/CMakeLists.txt b/vsm/src/vespa/vsm/common/CMakeLists.txt
index 06223d86a4b..4570a9b581e 100644
--- a/vsm/src/vespa/vsm/common/CMakeLists.txt
+++ b/vsm/src/vespa/vsm/common/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vsm_vsmcommon OBJECT
SOURCES
charbuffer.cpp
diff --git a/vsm/src/vespa/vsm/common/charbuffer.cpp b/vsm/src/vespa/vsm/common/charbuffer.cpp
index b050d3cc40b..b8fbb5c8846 100644
--- a/vsm/src/vespa/vsm/common/charbuffer.cpp
+++ b/vsm/src/vespa/vsm/common/charbuffer.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "charbuffer.h"
#include <cstring>
diff --git a/vsm/src/vespa/vsm/common/charbuffer.h b/vsm/src/vespa/vsm/common/charbuffer.h
index ad2c3a2bd33..08618a9b973 100644
--- a/vsm/src/vespa/vsm/common/charbuffer.h
+++ b/vsm/src/vespa/vsm/common/charbuffer.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vector>
diff --git a/vsm/src/vespa/vsm/common/docsum.h b/vsm/src/vespa/vsm/common/docsum.h
index 00f99a20eaa..49b84cb0783 100644
--- a/vsm/src/vespa/vsm/common/docsum.h
+++ b/vsm/src/vespa/vsm/common/docsum.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "document.h"
diff --git a/vsm/src/vespa/vsm/common/document.cpp b/vsm/src/vespa/vsm/common/document.cpp
index 7e4713e672c..a345c82ce2d 100644
--- a/vsm/src/vespa/vsm/common/document.cpp
+++ b/vsm/src/vespa/vsm/common/document.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "document.h"
#include <vespa/vespalib/stllike/asciistream.h>
#include <vespa/vespalib/stllike/hash_map.hpp>
diff --git a/vsm/src/vespa/vsm/common/document.h b/vsm/src/vespa/vsm/common/document.h
index 341f06d28e9..8c11d27072b 100644
--- a/vsm/src/vespa/vsm/common/document.h
+++ b/vsm/src/vespa/vsm/common/document.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchlib/query/base.h>
diff --git a/vsm/src/vespa/vsm/common/documenttypemapping.cpp b/vsm/src/vespa/vsm/common/documenttypemapping.cpp
index 679f3d968bd..2379103653e 100644
--- a/vsm/src/vespa/vsm/common/documenttypemapping.cpp
+++ b/vsm/src/vespa/vsm/common/documenttypemapping.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "documenttypemapping.h"
#include <vespa/document/repo/documenttyperepo.h>
diff --git a/vsm/src/vespa/vsm/common/documenttypemapping.h b/vsm/src/vespa/vsm/common/documenttypemapping.h
index 5aae71672fe..607b40cec47 100644
--- a/vsm/src/vespa/vsm/common/documenttypemapping.h
+++ b/vsm/src/vespa/vsm/common/documenttypemapping.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vsm/common/storagedocument.h>
diff --git a/vsm/src/vespa/vsm/common/fieldmodifier.cpp b/vsm/src/vespa/vsm/common/fieldmodifier.cpp
index e84efe18bc1..b39afd83b5a 100644
--- a/vsm/src/vespa/vsm/common/fieldmodifier.cpp
+++ b/vsm/src/vespa/vsm/common/fieldmodifier.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fieldmodifier.h"
#include <vespa/vespalib/stllike/hash_map.hpp>
diff --git a/vsm/src/vespa/vsm/common/fieldmodifier.h b/vsm/src/vespa/vsm/common/fieldmodifier.h
index 9baf211d8ce..60e480fa237 100644
--- a/vsm/src/vespa/vsm/common/fieldmodifier.h
+++ b/vsm/src/vespa/vsm/common/fieldmodifier.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/fieldvalue/fieldvalue.h>
diff --git a/vsm/src/vespa/vsm/common/storagedocument.cpp b/vsm/src/vespa/vsm/common/storagedocument.cpp
index fbcb8176325..a0d666268f5 100644
--- a/vsm/src/vespa/vsm/common/storagedocument.cpp
+++ b/vsm/src/vespa/vsm/common/storagedocument.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "storagedocument.h"
#include <vespa/document/fieldvalue/arrayfieldvalue.h>
diff --git a/vsm/src/vespa/vsm/common/storagedocument.h b/vsm/src/vespa/vsm/common/storagedocument.h
index b313c2156a5..46a3e2f3251 100644
--- a/vsm/src/vespa/vsm/common/storagedocument.h
+++ b/vsm/src/vespa/vsm/common/storagedocument.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "document.h"
diff --git a/vsm/src/vespa/vsm/config/CMakeLists.txt b/vsm/src/vespa/vsm/config/CMakeLists.txt
index c0e16c52de2..fea0bafe6b2 100644
--- a/vsm/src/vespa/vsm/config/CMakeLists.txt
+++ b/vsm/src/vespa/vsm/config/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vsm_vconfig OBJECT
SOURCES
DEPENDS
diff --git a/vsm/src/vespa/vsm/config/vsm-cfif.h b/vsm/src/vespa/vsm/config/vsm-cfif.h
index 810522cfe45..22033aee232 100644
--- a/vsm/src/vespa/vsm/config/vsm-cfif.h
+++ b/vsm/src/vespa/vsm/config/vsm-cfif.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vsm/config/config-vsmfields.h>
diff --git a/vsm/src/vespa/vsm/config/vsm.def b/vsm/src/vespa/vsm/config/vsm.def
index c446efe5588..1971f9e9574 100644
--- a/vsm/src/vespa/vsm/config/vsm.def
+++ b/vsm/src/vespa/vsm/config/vsm.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search.vsm
## The document model for the documents used as input for the VSM
diff --git a/vsm/src/vespa/vsm/config/vsmfields.def b/vsm/src/vespa/vsm/config/vsmfields.def
index ca48692b526..21d7d72eb0b 100644
--- a/vsm/src/vespa/vsm/config/vsmfields.def
+++ b/vsm/src/vespa/vsm/config/vsmfields.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search.vsm
## Level of verification applied to the documents received.
diff --git a/vsm/src/vespa/vsm/config/vsmsummary.def b/vsm/src/vespa/vsm/config/vsmsummary.def
index 4664371faba..5eb96624826 100644
--- a/vsm/src/vespa/vsm/config/vsmsummary.def
+++ b/vsm/src/vespa/vsm/config/vsmsummary.def
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=vespa.config.search.vsm
## The name of the result class that should be generated for documents
diff --git a/vsm/src/vespa/vsm/searcher/CMakeLists.txt b/vsm/src/vespa/vsm/searcher/CMakeLists.txt
index 3589e9e3baf..0fab39c5586 100644
--- a/vsm/src/vespa/vsm/searcher/CMakeLists.txt
+++ b/vsm/src/vespa/vsm/searcher/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
set(SSE2_FILES "fold.cpp")
diff --git a/vsm/src/vespa/vsm/searcher/boolfieldsearcher.cpp b/vsm/src/vespa/vsm/searcher/boolfieldsearcher.cpp
index 88342cb8d3b..8c9b556e593 100644
--- a/vsm/src/vespa/vsm/searcher/boolfieldsearcher.cpp
+++ b/vsm/src/vespa/vsm/searcher/boolfieldsearcher.cpp
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "boolfieldsearcher.h"
#include <vespa/document/fieldvalue/boolfieldvalue.h>
diff --git a/vsm/src/vespa/vsm/searcher/boolfieldsearcher.h b/vsm/src/vespa/vsm/searcher/boolfieldsearcher.h
index 5ff4b14ffd1..f6afef9e507 100644
--- a/vsm/src/vespa/vsm/searcher/boolfieldsearcher.h
+++ b/vsm/src/vespa/vsm/searcher/boolfieldsearcher.h
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "fieldsearcher.h"
diff --git a/vsm/src/vespa/vsm/searcher/fieldsearcher.cpp b/vsm/src/vespa/vsm/searcher/fieldsearcher.cpp
index 74e55c958fe..b48c5e7d493 100644
--- a/vsm/src/vespa/vsm/searcher/fieldsearcher.cpp
+++ b/vsm/src/vespa/vsm/searcher/fieldsearcher.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fieldsearcher.h"
#include <vespa/vsm/vsm/fieldsearchspec.h>
#include <vespa/document/fieldvalue/arrayfieldvalue.h>
diff --git a/vsm/src/vespa/vsm/searcher/fieldsearcher.h b/vsm/src/vespa/vsm/searcher/fieldsearcher.h
index d3cb5415ec1..eb1f3ddd524 100644
--- a/vsm/src/vespa/vsm/searcher/fieldsearcher.h
+++ b/vsm/src/vespa/vsm/searcher/fieldsearcher.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/fieldvalue/iteratorhandler.h>
diff --git a/vsm/src/vespa/vsm/searcher/floatfieldsearcher.cpp b/vsm/src/vespa/vsm/searcher/floatfieldsearcher.cpp
index 6043a88fc22..02d8bd8c12a 100644
--- a/vsm/src/vespa/vsm/searcher/floatfieldsearcher.cpp
+++ b/vsm/src/vespa/vsm/searcher/floatfieldsearcher.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "floatfieldsearcher.h"
diff --git a/vsm/src/vespa/vsm/searcher/floatfieldsearcher.h b/vsm/src/vespa/vsm/searcher/floatfieldsearcher.h
index efbdb961081..98018fbf4a3 100644
--- a/vsm/src/vespa/vsm/searcher/floatfieldsearcher.h
+++ b/vsm/src/vespa/vsm/searcher/floatfieldsearcher.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "fieldsearcher.h"
diff --git a/vsm/src/vespa/vsm/searcher/fold.cpp b/vsm/src/vespa/vsm/searcher/fold.cpp
index a8ec5ee5ef2..bd2392d3ad6 100644
--- a/vsm/src/vespa/vsm/searcher/fold.cpp
+++ b/vsm/src/vespa/vsm/searcher/fold.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
//
#include "fold.h"
diff --git a/vsm/src/vespa/vsm/searcher/fold.h b/vsm/src/vespa/vsm/searcher/fold.h
index 7104a66fbfe..578b883484f 100644
--- a/vsm/src/vespa/vsm/searcher/fold.h
+++ b/vsm/src/vespa/vsm/searcher/fold.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vsm/common/document.h>
diff --git a/vsm/src/vespa/vsm/searcher/futf8strchrfieldsearcher.cpp b/vsm/src/vespa/vsm/searcher/futf8strchrfieldsearcher.cpp
index 3acf065a8f1..fc5d77de419 100644
--- a/vsm/src/vespa/vsm/searcher/futf8strchrfieldsearcher.cpp
+++ b/vsm/src/vespa/vsm/searcher/futf8strchrfieldsearcher.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "futf8strchrfieldsearcher.h"
#ifdef __x86_64__
diff --git a/vsm/src/vespa/vsm/searcher/futf8strchrfieldsearcher.h b/vsm/src/vespa/vsm/searcher/futf8strchrfieldsearcher.h
index 4876654a2b6..900ab4c9120 100644
--- a/vsm/src/vespa/vsm/searcher/futf8strchrfieldsearcher.h
+++ b/vsm/src/vespa/vsm/searcher/futf8strchrfieldsearcher.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "utf8strchrfieldsearcher.h"
diff --git a/vsm/src/vespa/vsm/searcher/intfieldsearcher.cpp b/vsm/src/vespa/vsm/searcher/intfieldsearcher.cpp
index f4e68c60119..8cfb8e6df14 100644
--- a/vsm/src/vespa/vsm/searcher/intfieldsearcher.cpp
+++ b/vsm/src/vespa/vsm/searcher/intfieldsearcher.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "intfieldsearcher.h"
using search::streaming::QueryTerm;
diff --git a/vsm/src/vespa/vsm/searcher/intfieldsearcher.h b/vsm/src/vespa/vsm/searcher/intfieldsearcher.h
index 47fde7cd0ad..a2b17a87f4b 100644
--- a/vsm/src/vespa/vsm/searcher/intfieldsearcher.h
+++ b/vsm/src/vespa/vsm/searcher/intfieldsearcher.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "fieldsearcher.h"
diff --git a/vsm/src/vespa/vsm/searcher/strchrfieldsearcher.cpp b/vsm/src/vespa/vsm/searcher/strchrfieldsearcher.cpp
index ccc37340ff7..1c4ff78ff4a 100644
--- a/vsm/src/vespa/vsm/searcher/strchrfieldsearcher.cpp
+++ b/vsm/src/vespa/vsm/searcher/strchrfieldsearcher.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "strchrfieldsearcher.h"
#include <vespa/document/fieldvalue/stringfieldvalue.h>
diff --git a/vsm/src/vespa/vsm/searcher/strchrfieldsearcher.h b/vsm/src/vespa/vsm/searcher/strchrfieldsearcher.h
index 15f7c177afe..0155c79cddf 100644
--- a/vsm/src/vespa/vsm/searcher/strchrfieldsearcher.h
+++ b/vsm/src/vespa/vsm/searcher/strchrfieldsearcher.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "fieldsearcher.h"
diff --git a/vsm/src/vespa/vsm/searcher/utf8exactstringfieldsearcher.cpp b/vsm/src/vespa/vsm/searcher/utf8exactstringfieldsearcher.cpp
index 2105ceec426..977602a691c 100644
--- a/vsm/src/vespa/vsm/searcher/utf8exactstringfieldsearcher.cpp
+++ b/vsm/src/vespa/vsm/searcher/utf8exactstringfieldsearcher.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "utf8exactstringfieldsearcher.h"
using search::byte;
diff --git a/vsm/src/vespa/vsm/searcher/utf8exactstringfieldsearcher.h b/vsm/src/vespa/vsm/searcher/utf8exactstringfieldsearcher.h
index f6595d917aa..744974a6cf6 100644
--- a/vsm/src/vespa/vsm/searcher/utf8exactstringfieldsearcher.h
+++ b/vsm/src/vespa/vsm/searcher/utf8exactstringfieldsearcher.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vsm/searcher/utf8stringfieldsearcherbase.h>
diff --git a/vsm/src/vespa/vsm/searcher/utf8flexiblestringfieldsearcher.cpp b/vsm/src/vespa/vsm/searcher/utf8flexiblestringfieldsearcher.cpp
index a6fb4794cc4..9aef99f9fa1 100644
--- a/vsm/src/vespa/vsm/searcher/utf8flexiblestringfieldsearcher.cpp
+++ b/vsm/src/vespa/vsm/searcher/utf8flexiblestringfieldsearcher.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "utf8flexiblestringfieldsearcher.h"
#include <vespa/log/log.h>
diff --git a/vsm/src/vespa/vsm/searcher/utf8flexiblestringfieldsearcher.h b/vsm/src/vespa/vsm/searcher/utf8flexiblestringfieldsearcher.h
index deea42ff5c1..63931af0036 100644
--- a/vsm/src/vespa/vsm/searcher/utf8flexiblestringfieldsearcher.h
+++ b/vsm/src/vespa/vsm/searcher/utf8flexiblestringfieldsearcher.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vsm/searcher/utf8stringfieldsearcherbase.h>
diff --git a/vsm/src/vespa/vsm/searcher/utf8strchrfieldsearcher.cpp b/vsm/src/vespa/vsm/searcher/utf8strchrfieldsearcher.cpp
index eb3dc3540a1..0d93009655c 100644
--- a/vsm/src/vespa/vsm/searcher/utf8strchrfieldsearcher.cpp
+++ b/vsm/src/vespa/vsm/searcher/utf8strchrfieldsearcher.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "utf8strchrfieldsearcher.h"
using search::streaming::QueryTerm;
diff --git a/vsm/src/vespa/vsm/searcher/utf8strchrfieldsearcher.h b/vsm/src/vespa/vsm/searcher/utf8strchrfieldsearcher.h
index a175ae8b48a..1687a1a18c0 100644
--- a/vsm/src/vespa/vsm/searcher/utf8strchrfieldsearcher.h
+++ b/vsm/src/vespa/vsm/searcher/utf8strchrfieldsearcher.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "utf8stringfieldsearcherbase.h"
diff --git a/vsm/src/vespa/vsm/searcher/utf8stringfieldsearcherbase.cpp b/vsm/src/vespa/vsm/searcher/utf8stringfieldsearcherbase.cpp
index 4055a886421..148cdf2c0c3 100644
--- a/vsm/src/vespa/vsm/searcher/utf8stringfieldsearcherbase.cpp
+++ b/vsm/src/vespa/vsm/searcher/utf8stringfieldsearcherbase.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "utf8stringfieldsearcherbase.h"
#include <cassert>
diff --git a/vsm/src/vespa/vsm/searcher/utf8stringfieldsearcherbase.h b/vsm/src/vespa/vsm/searcher/utf8stringfieldsearcherbase.h
index c0aa21a248d..f540a7ac457 100644
--- a/vsm/src/vespa/vsm/searcher/utf8stringfieldsearcherbase.h
+++ b/vsm/src/vespa/vsm/searcher/utf8stringfieldsearcherbase.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "strchrfieldsearcher.h"
diff --git a/vsm/src/vespa/vsm/searcher/utf8substringsearcher.cpp b/vsm/src/vespa/vsm/searcher/utf8substringsearcher.cpp
index 03b79bb2ae2..fd327d3a3df 100644
--- a/vsm/src/vespa/vsm/searcher/utf8substringsearcher.cpp
+++ b/vsm/src/vespa/vsm/searcher/utf8substringsearcher.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vsm/searcher/utf8substringsearcher.h>
diff --git a/vsm/src/vespa/vsm/searcher/utf8substringsearcher.h b/vsm/src/vespa/vsm/searcher/utf8substringsearcher.h
index b284b1bf76c..1c463c28847 100644
--- a/vsm/src/vespa/vsm/searcher/utf8substringsearcher.h
+++ b/vsm/src/vespa/vsm/searcher/utf8substringsearcher.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vsm/searcher/utf8strchrfieldsearcher.h>
diff --git a/vsm/src/vespa/vsm/searcher/utf8substringsnippetmodifier.cpp b/vsm/src/vespa/vsm/searcher/utf8substringsnippetmodifier.cpp
index d2ae8ad89fa..be02a58cfda 100644
--- a/vsm/src/vespa/vsm/searcher/utf8substringsnippetmodifier.cpp
+++ b/vsm/src/vespa/vsm/searcher/utf8substringsnippetmodifier.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "utf8substringsnippetmodifier.h"
#include <cassert>
diff --git a/vsm/src/vespa/vsm/searcher/utf8substringsnippetmodifier.h b/vsm/src/vespa/vsm/searcher/utf8substringsnippetmodifier.h
index bac183dd1d5..0127a7f2827 100644
--- a/vsm/src/vespa/vsm/searcher/utf8substringsnippetmodifier.h
+++ b/vsm/src/vespa/vsm/searcher/utf8substringsnippetmodifier.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "utf8stringfieldsearcherbase.h"
diff --git a/vsm/src/vespa/vsm/searcher/utf8suffixstringfieldsearcher.cpp b/vsm/src/vespa/vsm/searcher/utf8suffixstringfieldsearcher.cpp
index 93a78554620..3495d46b85b 100644
--- a/vsm/src/vespa/vsm/searcher/utf8suffixstringfieldsearcher.cpp
+++ b/vsm/src/vespa/vsm/searcher/utf8suffixstringfieldsearcher.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "utf8suffixstringfieldsearcher.h"
using search::byte;
diff --git a/vsm/src/vespa/vsm/searcher/utf8suffixstringfieldsearcher.h b/vsm/src/vespa/vsm/searcher/utf8suffixstringfieldsearcher.h
index 999c85a7f12..0640ac22da5 100644
--- a/vsm/src/vespa/vsm/searcher/utf8suffixstringfieldsearcher.h
+++ b/vsm/src/vespa/vsm/searcher/utf8suffixstringfieldsearcher.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vsm/searcher/utf8stringfieldsearcherbase.h>
diff --git a/vsm/src/vespa/vsm/vsm/CMakeLists.txt b/vsm/src/vespa/vsm/vsm/CMakeLists.txt
index df7d2e52b8c..adc00b341a3 100644
--- a/vsm/src/vespa/vsm/vsm/CMakeLists.txt
+++ b/vsm/src/vespa/vsm/vsm/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
vespa_add_library(vsm_vsmbase OBJECT
SOURCES
docsumfieldspec.cpp
diff --git a/vsm/src/vespa/vsm/vsm/docsumconfig.cpp b/vsm/src/vespa/vsm/vsm/docsumconfig.cpp
index fb25df83ded..656e9eed132 100644
--- a/vsm/src/vespa/vsm/vsm/docsumconfig.cpp
+++ b/vsm/src/vespa/vsm/vsm/docsumconfig.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vsm/vsm/docsumconfig.h>
#include <vespa/searchsummary/docsummary/docsumfieldwriter.h>
diff --git a/vsm/src/vespa/vsm/vsm/docsumconfig.h b/vsm/src/vespa/vsm/vsm/docsumconfig.h
index 8be9324b9d6..11010c04e90 100644
--- a/vsm/src/vespa/vsm/vsm/docsumconfig.h
+++ b/vsm/src/vespa/vsm/vsm/docsumconfig.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vsm/src/vespa/vsm/vsm/docsumfieldspec.cpp b/vsm/src/vespa/vsm/vsm/docsumfieldspec.cpp
index 1440b894934..ba8310a9879 100644
--- a/vsm/src/vespa/vsm/vsm/docsumfieldspec.cpp
+++ b/vsm/src/vespa/vsm/vsm/docsumfieldspec.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "docsumfieldspec.h"
namespace vsm {
diff --git a/vsm/src/vespa/vsm/vsm/docsumfieldspec.h b/vsm/src/vespa/vsm/vsm/docsumfieldspec.h
index c6a2dfda30a..5acef140468 100644
--- a/vsm/src/vespa/vsm/vsm/docsumfieldspec.h
+++ b/vsm/src/vespa/vsm/vsm/docsumfieldspec.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/searchsummary/docsummary/resultclass.h>
diff --git a/vsm/src/vespa/vsm/vsm/docsumfilter.cpp b/vsm/src/vespa/vsm/vsm/docsumfilter.cpp
index 3794e78cf5b..d6dcdee0eb4 100644
--- a/vsm/src/vespa/vsm/vsm/docsumfilter.cpp
+++ b/vsm/src/vespa/vsm/vsm/docsumfilter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "docsumfilter.h"
#include "slimefieldwriter.h"
diff --git a/vsm/src/vespa/vsm/vsm/docsumfilter.h b/vsm/src/vespa/vsm/vsm/docsumfilter.h
index 2d1ab6984e4..e6f7ae3e6fe 100644
--- a/vsm/src/vespa/vsm/vsm/docsumfilter.h
+++ b/vsm/src/vespa/vsm/vsm/docsumfilter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vsm/src/vespa/vsm/vsm/fieldsearchspec.cpp b/vsm/src/vespa/vsm/vsm/fieldsearchspec.cpp
index 5f66d550174..8fe85a9023a 100644
--- a/vsm/src/vespa/vsm/vsm/fieldsearchspec.cpp
+++ b/vsm/src/vespa/vsm/vsm/fieldsearchspec.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "fieldsearchspec.h"
#include <vespa/vsm/searcher/utf8flexiblestringfieldsearcher.h>
diff --git a/vsm/src/vespa/vsm/vsm/fieldsearchspec.h b/vsm/src/vespa/vsm/vsm/fieldsearchspec.h
index 59fe737d480..7b78a8634e0 100644
--- a/vsm/src/vespa/vsm/vsm/fieldsearchspec.h
+++ b/vsm/src/vespa/vsm/vsm/fieldsearchspec.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/vsm/searcher/fieldsearcher.h>
diff --git a/vsm/src/vespa/vsm/vsm/flattendocsumwriter.cpp b/vsm/src/vespa/vsm/vsm/flattendocsumwriter.cpp
index 5bf50b81c3a..821434a4ed6 100644
--- a/vsm/src/vespa/vsm/vsm/flattendocsumwriter.cpp
+++ b/vsm/src/vespa/vsm/vsm/flattendocsumwriter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "flattendocsumwriter.h"
#include <vespa/document/fieldvalue/fieldvalues.h>
diff --git a/vsm/src/vespa/vsm/vsm/flattendocsumwriter.h b/vsm/src/vespa/vsm/vsm/flattendocsumwriter.h
index df04b8a7cdf..47c6f1e75d0 100644
--- a/vsm/src/vespa/vsm/vsm/flattendocsumwriter.h
+++ b/vsm/src/vespa/vsm/vsm/flattendocsumwriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include <vespa/document/fieldvalue/fieldvalue.h>
diff --git a/vsm/src/vespa/vsm/vsm/slimefieldwriter.cpp b/vsm/src/vespa/vsm/vsm/slimefieldwriter.cpp
index 22f6925dab3..231be9b6f73 100644
--- a/vsm/src/vespa/vsm/vsm/slimefieldwriter.cpp
+++ b/vsm/src/vespa/vsm/vsm/slimefieldwriter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "slimefieldwriter.h"
#include <vespa/searchlib/util/slime_output_raw_buf_adapter.h>
diff --git a/vsm/src/vespa/vsm/vsm/slimefieldwriter.h b/vsm/src/vespa/vsm/vsm/slimefieldwriter.h
index aea1f47bca7..b5adac8985f 100644
--- a/vsm/src/vespa/vsm/vsm/slimefieldwriter.h
+++ b/vsm/src/vespa/vsm/vsm/slimefieldwriter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "docsumfieldspec.h"
diff --git a/vsm/src/vespa/vsm/vsm/snippetmodifier.cpp b/vsm/src/vespa/vsm/vsm/snippetmodifier.cpp
index d3c952f78a4..127302311f9 100644
--- a/vsm/src/vespa/vsm/vsm/snippetmodifier.cpp
+++ b/vsm/src/vespa/vsm/vsm/snippetmodifier.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "snippetmodifier.h"
#include <vespa/document/fieldvalue/stringfieldvalue.h>
diff --git a/vsm/src/vespa/vsm/vsm/snippetmodifier.h b/vsm/src/vespa/vsm/vsm/snippetmodifier.h
index 81b8c447341..4718ab8783a 100644
--- a/vsm/src/vespa/vsm/vsm/snippetmodifier.h
+++ b/vsm/src/vespa/vsm/vsm/snippetmodifier.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "fieldsearchspec.h"
diff --git a/vsm/src/vespa/vsm/vsm/vsm-adapter.cpp b/vsm/src/vespa/vsm/vsm/vsm-adapter.cpp
index db238279fa3..784b5ea38ba 100644
--- a/vsm/src/vespa/vsm/vsm/vsm-adapter.cpp
+++ b/vsm/src/vespa/vsm/vsm/vsm-adapter.cpp
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "vsm-adapter.h"
#include "docsumconfig.h"
diff --git a/vsm/src/vespa/vsm/vsm/vsm-adapter.h b/vsm/src/vespa/vsm/vsm/vsm-adapter.h
index f6895dd71a6..dacf01aec08 100644
--- a/vsm/src/vespa/vsm/vsm/vsm-adapter.h
+++ b/vsm/src/vespa/vsm/vsm/vsm-adapter.h
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
diff --git a/vtag.cmake b/vtag.cmake
index a7aaf433024..7d447e5e0f9 100644
--- a/vtag.cmake
+++ b/vtag.cmake
@@ -1,4 +1,4 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
if(NOT EXISTS "${CMAKE_CURRENT_LIST_DIR}/dist/vtag.map")
message(FATAL_ERROR "dist/vtag.map does not exist, please run bootstrap.sh before configuring cmake" )
endif()
diff --git a/yolean/README.sh b/yolean/README.sh
index daf40c474e2..628d5a6a2dd 100755
--- a/yolean/README.sh
+++ b/yolean/README.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
if [ -z ${VERSION} ]; then
echo "Environment VERSION not set." >&2
exit 1;
diff --git a/yolean/abi-spec.json b/yolean/abi-spec.json
index 85aaaf5f64e..45ba75d736d 100644
--- a/yolean/abi-spec.json
+++ b/yolean/abi-spec.json
@@ -12,6 +12,19 @@
],
"fields": []
},
+ "com.yahoo.yolean.Exceptions$RunnableThrowingInterruptedException": {
+ "superClass": "java.lang.Object",
+ "interfaces": [],
+ "attributes": [
+ "public",
+ "interface",
+ "abstract"
+ ],
+ "methods": [
+ "public abstract void run()"
+ ],
+ "fields": []
+ },
"com.yahoo.yolean.Exceptions$SupplierThrowingIOException": {
"superClass": "java.lang.Object",
"interfaces": [],
@@ -36,6 +49,8 @@
"public static java.lang.String toMessageString(java.lang.Throwable)",
"public static java.util.Optional findCause(java.lang.Throwable, java.lang.Class)",
"public static void uncheck(com.yahoo.yolean.Exceptions$RunnableThrowingIOException)",
+ "public static void uncheckInterrupted(com.yahoo.yolean.Exceptions$RunnableThrowingInterruptedException)",
+ "public static void uncheckInterruptedAndRestoreFlag(com.yahoo.yolean.Exceptions$RunnableThrowingInterruptedException)",
"public static varargs void uncheck(com.yahoo.yolean.Exceptions$RunnableThrowingIOException, java.lang.String, java.lang.String[])",
"public static void uncheckAndIgnore(com.yahoo.yolean.Exceptions$RunnableThrowingIOException, java.lang.Class)",
"public static java.lang.Object uncheck(com.yahoo.yolean.Exceptions$SupplierThrowingIOException)",
@@ -45,6 +60,23 @@
],
"fields": []
},
+ "com.yahoo.yolean.UncheckedInterruptedException": {
+ "superClass": "java.lang.RuntimeException",
+ "interfaces": [],
+ "attributes": [
+ "public"
+ ],
+ "methods": [
+ "public void <init>(java.lang.String, java.lang.InterruptedException, boolean)",
+ "public void <init>(java.lang.InterruptedException, boolean)",
+ "public void <init>(java.lang.String, boolean)",
+ "public void <init>(java.lang.String, java.lang.InterruptedException)",
+ "public void <init>(java.lang.InterruptedException)",
+ "public java.lang.InterruptedException getCause()",
+ "public bridge synthetic java.lang.Throwable getCause()"
+ ],
+ "fields": []
+ },
"com.yahoo.yolean.chain.After": {
"superClass": "java.lang.Object",
"interfaces": [
@@ -232,6 +264,25 @@
],
"fields": []
},
+ "com.yahoo.yolean.concurrent.Sleeper": {
+ "superClass": "java.lang.Object",
+ "interfaces": [],
+ "attributes": [
+ "public",
+ "interface",
+ "abstract"
+ ],
+ "methods": [
+ "public void sleep(java.time.Duration)",
+ "public void sleepChecked(java.time.Duration)",
+ "public void sleep(long)",
+ "public abstract void sleepChecked(long)"
+ ],
+ "fields": [
+ "public static final com.yahoo.yolean.concurrent.Sleeper DEFAULT",
+ "public static final com.yahoo.yolean.concurrent.Sleeper NOOP"
+ ]
+ },
"com.yahoo.yolean.concurrent.ThreadRobustList": {
"superClass": "java.lang.Object",
"interfaces": [
diff --git a/yolean/pom.xml b/yolean/pom.xml
index 9f55027a220..68313e3e1a8 100644
--- a/yolean/pom.xml
+++ b/yolean/pom.xml
@@ -1,4 +1,4 @@
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
diff --git a/yolean/src/main/java/com/yahoo/yolean/Exceptions.java b/yolean/src/main/java/com/yahoo/yolean/Exceptions.java
index c377ee3ac37..89b4e76368b 100644
--- a/yolean/src/main/java/com/yahoo/yolean/Exceptions.java
+++ b/yolean/src/main/java/com/yahoo/yolean/Exceptions.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean;
import java.io.IOException;
@@ -70,6 +70,22 @@ public class Exceptions {
}
}
+ public static void uncheckInterrupted(RunnableThrowingInterruptedException runnable) {
+ try {
+ runnable.run();
+ } catch (InterruptedException e) {
+ throw new UncheckedInterruptedException(e, false);
+ }
+ }
+
+ public static void uncheckInterruptedAndRestoreFlag(RunnableThrowingInterruptedException runnable) {
+ try {
+ runnable.run();
+ } catch (InterruptedException e) {
+ throw new UncheckedInterruptedException(e, true);
+ }
+ }
+
/**
* Wraps any IOException thrown from a runnable in an UncheckedIOException w/message.
*/
@@ -110,6 +126,8 @@ public class Exceptions {
void run() throws IOException;
}
+ @FunctionalInterface public interface RunnableThrowingInterruptedException { void run() throws InterruptedException; }
+
/**
* Wraps any IOException thrown from a supplier in an UncheckedIOException.
*/
diff --git a/yolean/src/main/java/com/yahoo/yolean/UncheckedInterruptedException.java b/yolean/src/main/java/com/yahoo/yolean/UncheckedInterruptedException.java
new file mode 100644
index 00000000000..d3317b5fb26
--- /dev/null
+++ b/yolean/src/main/java/com/yahoo/yolean/UncheckedInterruptedException.java
@@ -0,0 +1,27 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.yolean;
+
+/**
+ * Wraps an {@link InterruptedException} with an unchecked exception.
+ *
+ * @author bjorncs
+ */
+public class UncheckedInterruptedException extends RuntimeException {
+
+ public UncheckedInterruptedException(String message, InterruptedException cause, boolean restoreInterruptFlag) {
+ super(message, cause);
+ if (restoreInterruptFlag) Thread.currentThread().interrupt();
+ }
+
+ public UncheckedInterruptedException(InterruptedException cause, boolean restoreInterruptFlags) {
+ this(cause.toString(), cause, restoreInterruptFlags);
+ }
+
+ public UncheckedInterruptedException(String message, boolean restoreInterruptFlag) { this(message, null, false); }
+
+ public UncheckedInterruptedException(String message, InterruptedException cause) { this(message, cause, false); }
+
+ public UncheckedInterruptedException(InterruptedException cause) { this(cause.toString(), cause, false); }
+
+ @Override public InterruptedException getCause() { return (InterruptedException) super.getCause(); }
+}
diff --git a/yolean/src/main/java/com/yahoo/yolean/chain/After.java b/yolean/src/main/java/com/yahoo/yolean/chain/After.java
index c1385c9259f..a02408bb616 100644
--- a/yolean/src/main/java/com/yahoo/yolean/chain/After.java
+++ b/yolean/src/main/java/com/yahoo/yolean/chain/After.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.chain;
import java.lang.annotation.ElementType;
diff --git a/yolean/src/main/java/com/yahoo/yolean/chain/Before.java b/yolean/src/main/java/com/yahoo/yolean/chain/Before.java
index 004fa20cdf6..7bbba8ded5f 100644
--- a/yolean/src/main/java/com/yahoo/yolean/chain/Before.java
+++ b/yolean/src/main/java/com/yahoo/yolean/chain/Before.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.chain;
import java.lang.annotation.ElementType;
diff --git a/yolean/src/main/java/com/yahoo/yolean/chain/Chain.java b/yolean/src/main/java/com/yahoo/yolean/chain/Chain.java
index 4d638847ed9..2252becc688 100644
--- a/yolean/src/main/java/com/yahoo/yolean/chain/Chain.java
+++ b/yolean/src/main/java/com/yahoo/yolean/chain/Chain.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.chain;
import com.google.common.collect.ImmutableList;
diff --git a/yolean/src/main/java/com/yahoo/yolean/chain/ChainBuilder.java b/yolean/src/main/java/com/yahoo/yolean/chain/ChainBuilder.java
index 35d37f860e4..c758054faa9 100644
--- a/yolean/src/main/java/com/yahoo/yolean/chain/ChainBuilder.java
+++ b/yolean/src/main/java/com/yahoo/yolean/chain/ChainBuilder.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.chain;
import java.util.ArrayList;
diff --git a/yolean/src/main/java/com/yahoo/yolean/chain/ChainCycleException.java b/yolean/src/main/java/com/yahoo/yolean/chain/ChainCycleException.java
index 022f8f47b43..f29020321c8 100644
--- a/yolean/src/main/java/com/yahoo/yolean/chain/ChainCycleException.java
+++ b/yolean/src/main/java/com/yahoo/yolean/chain/ChainCycleException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.chain;
import com.google.common.collect.ImmutableList;
diff --git a/yolean/src/main/java/com/yahoo/yolean/chain/Dependencies.java b/yolean/src/main/java/com/yahoo/yolean/chain/Dependencies.java
index 33d6dcd40c4..47efee6ac16 100644
--- a/yolean/src/main/java/com/yahoo/yolean/chain/Dependencies.java
+++ b/yolean/src/main/java/com/yahoo/yolean/chain/Dependencies.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.chain;
import java.lang.annotation.Annotation;
diff --git a/yolean/src/main/java/com/yahoo/yolean/chain/DirectedGraph.java b/yolean/src/main/java/com/yahoo/yolean/chain/DirectedGraph.java
index ec719178e50..acab42a7090 100644
--- a/yolean/src/main/java/com/yahoo/yolean/chain/DirectedGraph.java
+++ b/yolean/src/main/java/com/yahoo/yolean/chain/DirectedGraph.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.chain;
import java.util.ArrayList;
diff --git a/yolean/src/main/java/com/yahoo/yolean/chain/EnumeratedIdentitySet.java b/yolean/src/main/java/com/yahoo/yolean/chain/EnumeratedIdentitySet.java
index 3fd6621bc83..feece288bad 100644
--- a/yolean/src/main/java/com/yahoo/yolean/chain/EnumeratedIdentitySet.java
+++ b/yolean/src/main/java/com/yahoo/yolean/chain/EnumeratedIdentitySet.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.chain;
import java.lang.reflect.Array;
diff --git a/yolean/src/main/java/com/yahoo/yolean/chain/Provides.java b/yolean/src/main/java/com/yahoo/yolean/chain/Provides.java
index 54d0fbcbfbe..b8bf40686cb 100644
--- a/yolean/src/main/java/com/yahoo/yolean/chain/Provides.java
+++ b/yolean/src/main/java/com/yahoo/yolean/chain/Provides.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.chain;
import java.lang.annotation.ElementType;
diff --git a/yolean/src/main/java/com/yahoo/yolean/chain/Vertex.java b/yolean/src/main/java/com/yahoo/yolean/chain/Vertex.java
index 0e3647c7121..e48a3fea197 100644
--- a/yolean/src/main/java/com/yahoo/yolean/chain/Vertex.java
+++ b/yolean/src/main/java/com/yahoo/yolean/chain/Vertex.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.chain;
/**
diff --git a/yolean/src/main/java/com/yahoo/yolean/chain/package-info.java b/yolean/src/main/java/com/yahoo/yolean/chain/package-info.java
index 332f12eb6c0..e767e192ad7 100644
--- a/yolean/src/main/java/com/yahoo/yolean/chain/package-info.java
+++ b/yolean/src/main/java/com/yahoo/yolean/chain/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi package com.yahoo.yolean.chain;
diff --git a/yolean/src/main/java/com/yahoo/yolean/concurrent/ConcurrentResourcePool.java b/yolean/src/main/java/com/yahoo/yolean/concurrent/ConcurrentResourcePool.java
index a00de4866d0..fae01e8ac34 100644
--- a/yolean/src/main/java/com/yahoo/yolean/concurrent/ConcurrentResourcePool.java
+++ b/yolean/src/main/java/com/yahoo/yolean/concurrent/ConcurrentResourcePool.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.concurrent;
import java.util.Iterator;
diff --git a/yolean/src/main/java/com/yahoo/yolean/concurrent/CopyOnWriteHashMap.java b/yolean/src/main/java/com/yahoo/yolean/concurrent/CopyOnWriteHashMap.java
index b3599903714..536d9ab15c1 100644
--- a/yolean/src/main/java/com/yahoo/yolean/concurrent/CopyOnWriteHashMap.java
+++ b/yolean/src/main/java/com/yahoo/yolean/concurrent/CopyOnWriteHashMap.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.concurrent;
import java.util.Collection;
diff --git a/yolean/src/main/java/com/yahoo/yolean/concurrent/ResourceFactory.java b/yolean/src/main/java/com/yahoo/yolean/concurrent/ResourceFactory.java
index 3a99b189ed8..584647198a5 100644
--- a/yolean/src/main/java/com/yahoo/yolean/concurrent/ResourceFactory.java
+++ b/yolean/src/main/java/com/yahoo/yolean/concurrent/ResourceFactory.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.concurrent;
import java.util.function.Supplier;
diff --git a/yolean/src/main/java/com/yahoo/yolean/concurrent/ResourcePool.java b/yolean/src/main/java/com/yahoo/yolean/concurrent/ResourcePool.java
index 40c5ca3b6c2..75f8c961349 100644
--- a/yolean/src/main/java/com/yahoo/yolean/concurrent/ResourcePool.java
+++ b/yolean/src/main/java/com/yahoo/yolean/concurrent/ResourcePool.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.concurrent;
import java.util.ArrayDeque;
diff --git a/yolean/src/main/java/com/yahoo/yolean/concurrent/Sleeper.java b/yolean/src/main/java/com/yahoo/yolean/concurrent/Sleeper.java
new file mode 100644
index 00000000000..530be935bc1
--- /dev/null
+++ b/yolean/src/main/java/com/yahoo/yolean/concurrent/Sleeper.java
@@ -0,0 +1,29 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.yolean.concurrent;
+
+import com.yahoo.yolean.UncheckedInterruptedException;
+
+import java.time.Duration;
+
+import static com.yahoo.yolean.Exceptions.uncheckInterrupted;
+
+/**
+ * An abstraction used for mocking {@link Thread#sleep(long)} in unit tests.
+ *
+ * @author bjorncs
+ */
+public interface Sleeper {
+ default void sleep(Duration duration) throws UncheckedInterruptedException {
+ uncheckInterrupted(() -> sleepChecked(duration.toMillis()));
+ }
+
+ default void sleepChecked(Duration duration) throws InterruptedException { sleepChecked(duration.toMillis()); }
+
+ default void sleep(long millis) throws UncheckedInterruptedException { uncheckInterrupted(() -> sleepChecked(millis)); }
+
+ void sleepChecked(long millis) throws InterruptedException;
+
+ Sleeper DEFAULT = Thread::sleep;
+ Sleeper NOOP = millis -> {};
+
+}
diff --git a/yolean/src/main/java/com/yahoo/yolean/concurrent/ThreadRobustList.java b/yolean/src/main/java/com/yahoo/yolean/concurrent/ThreadRobustList.java
index 72020bbaf88..978ee87d20c 100644
--- a/yolean/src/main/java/com/yahoo/yolean/concurrent/ThreadRobustList.java
+++ b/yolean/src/main/java/com/yahoo/yolean/concurrent/ThreadRobustList.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.concurrent;
import java.util.Arrays;
diff --git a/yolean/src/main/java/com/yahoo/yolean/concurrent/package-info.java b/yolean/src/main/java/com/yahoo/yolean/concurrent/package-info.java
index 8702b786a6e..1e89d85714e 100644
--- a/yolean/src/main/java/com/yahoo/yolean/concurrent/package-info.java
+++ b/yolean/src/main/java/com/yahoo/yolean/concurrent/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.yolean.concurrent;
diff --git a/yolean/src/main/java/com/yahoo/yolean/function/ThrowingConsumer.java b/yolean/src/main/java/com/yahoo/yolean/function/ThrowingConsumer.java
index abd6cf5da08..0860c7c34b4 100644
--- a/yolean/src/main/java/com/yahoo/yolean/function/ThrowingConsumer.java
+++ b/yolean/src/main/java/com/yahoo/yolean/function/ThrowingConsumer.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.function;
import java.util.Objects;
diff --git a/yolean/src/main/java/com/yahoo/yolean/function/ThrowingFunction.java b/yolean/src/main/java/com/yahoo/yolean/function/ThrowingFunction.java
index f068963f752..6e459509b1d 100644
--- a/yolean/src/main/java/com/yahoo/yolean/function/ThrowingFunction.java
+++ b/yolean/src/main/java/com/yahoo/yolean/function/ThrowingFunction.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.function;
import java.util.Objects;
diff --git a/yolean/src/main/java/com/yahoo/yolean/function/ThrowingSupplier.java b/yolean/src/main/java/com/yahoo/yolean/function/ThrowingSupplier.java
index b11698dee4d..348c1c739ee 100644
--- a/yolean/src/main/java/com/yahoo/yolean/function/ThrowingSupplier.java
+++ b/yolean/src/main/java/com/yahoo/yolean/function/ThrowingSupplier.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.function;
/**
diff --git a/yolean/src/main/java/com/yahoo/yolean/function/package-info.java b/yolean/src/main/java/com/yahoo/yolean/function/package-info.java
index 75ad6952fb2..e55b39c478f 100644
--- a/yolean/src/main/java/com/yahoo/yolean/function/package-info.java
+++ b/yolean/src/main/java/com/yahoo/yolean/function/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author oyving
*/
diff --git a/yolean/src/main/java/com/yahoo/yolean/package-info.java b/yolean/src/main/java/com/yahoo/yolean/package-info.java
index eabe084cc32..c9f2b088688 100644
--- a/yolean/src/main/java/com/yahoo/yolean/package-info.java
+++ b/yolean/src/main/java/com/yahoo/yolean/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.yolean;
diff --git a/yolean/src/main/java/com/yahoo/yolean/system/CatchSignals.java b/yolean/src/main/java/com/yahoo/yolean/system/CatchSignals.java
index 3f0d6f3fbdd..572d8fba122 100644
--- a/yolean/src/main/java/com/yahoo/yolean/system/CatchSignals.java
+++ b/yolean/src/main/java/com/yahoo/yolean/system/CatchSignals.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.system;
import java.lang.reflect.Constructor;
diff --git a/yolean/src/main/java/com/yahoo/yolean/system/package-info.java b/yolean/src/main/java/com/yahoo/yolean/system/package-info.java
index e21cafdaae8..cf3a4f33e1a 100644
--- a/yolean/src/main/java/com/yahoo/yolean/system/package-info.java
+++ b/yolean/src/main/java/com/yahoo/yolean/system/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.yolean.system;
diff --git a/yolean/src/main/java/com/yahoo/yolean/trace/TraceNode.java b/yolean/src/main/java/com/yahoo/yolean/trace/TraceNode.java
index 878c0337b20..fd19c1b1388 100644
--- a/yolean/src/main/java/com/yahoo/yolean/trace/TraceNode.java
+++ b/yolean/src/main/java/com/yahoo/yolean/trace/TraceNode.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.trace;
import com.yahoo.yolean.concurrent.ThreadRobustList;
diff --git a/yolean/src/main/java/com/yahoo/yolean/trace/TraceVisitor.java b/yolean/src/main/java/com/yahoo/yolean/trace/TraceVisitor.java
index 23525b65571..1b3507777b7 100644
--- a/yolean/src/main/java/com/yahoo/yolean/trace/TraceVisitor.java
+++ b/yolean/src/main/java/com/yahoo/yolean/trace/TraceVisitor.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.trace;
/**
diff --git a/yolean/src/main/java/com/yahoo/yolean/trace/package-info.java b/yolean/src/main/java/com/yahoo/yolean/trace/package-info.java
index 431c03539b7..dabc8217025 100644
--- a/yolean/src/main/java/com/yahoo/yolean/trace/package-info.java
+++ b/yolean/src/main/java/com/yahoo/yolean/trace/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi
package com.yahoo.yolean.trace;
diff --git a/yolean/src/test/java/com/yahoo/yolean/ExceptionsTestCase.java b/yolean/src/test/java/com/yahoo/yolean/ExceptionsTestCase.java
index cd06d14bb55..53cf3efe363 100644
--- a/yolean/src/test/java/com/yahoo/yolean/ExceptionsTestCase.java
+++ b/yolean/src/test/java/com/yahoo/yolean/ExceptionsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean;
import org.junit.Test;
diff --git a/yolean/src/test/java/com/yahoo/yolean/chain/ChainBuilderTest.java b/yolean/src/test/java/com/yahoo/yolean/chain/ChainBuilderTest.java
index 84467283398..349ba8998bd 100644
--- a/yolean/src/test/java/com/yahoo/yolean/chain/ChainBuilderTest.java
+++ b/yolean/src/test/java/com/yahoo/yolean/chain/ChainBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.chain;
import org.junit.Test;
diff --git a/yolean/src/test/java/com/yahoo/yolean/chain/ChainTest.java b/yolean/src/test/java/com/yahoo/yolean/chain/ChainTest.java
index da9ae2c38e3..84038170f7c 100644
--- a/yolean/src/test/java/com/yahoo/yolean/chain/ChainTest.java
+++ b/yolean/src/test/java/com/yahoo/yolean/chain/ChainTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.chain;
import org.junit.Test;
diff --git a/yolean/src/test/java/com/yahoo/yolean/chain/DirectedGraphTest.java b/yolean/src/test/java/com/yahoo/yolean/chain/DirectedGraphTest.java
index b37c57b536b..6b9b29729c7 100644
--- a/yolean/src/test/java/com/yahoo/yolean/chain/DirectedGraphTest.java
+++ b/yolean/src/test/java/com/yahoo/yolean/chain/DirectedGraphTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.chain;
import org.junit.Before;
diff --git a/yolean/src/test/java/com/yahoo/yolean/chain/EnumeratedIdentitySetTest.java b/yolean/src/test/java/com/yahoo/yolean/chain/EnumeratedIdentitySetTest.java
index 30951f88162..66b2fc84f39 100644
--- a/yolean/src/test/java/com/yahoo/yolean/chain/EnumeratedIdentitySetTest.java
+++ b/yolean/src/test/java/com/yahoo/yolean/chain/EnumeratedIdentitySetTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.chain;
import org.junit.Test;
diff --git a/yolean/src/test/java/com/yahoo/yolean/concurrent/CopyOnWriteHashMapTest.java b/yolean/src/test/java/com/yahoo/yolean/concurrent/CopyOnWriteHashMapTest.java
index 234b682d118..3f2526172a9 100644
--- a/yolean/src/test/java/com/yahoo/yolean/concurrent/CopyOnWriteHashMapTest.java
+++ b/yolean/src/test/java/com/yahoo/yolean/concurrent/CopyOnWriteHashMapTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.concurrent;
import org.junit.Test;
diff --git a/yolean/src/test/java/com/yahoo/yolean/concurrent/ThreadRobustListTestCase.java b/yolean/src/test/java/com/yahoo/yolean/concurrent/ThreadRobustListTestCase.java
index 6fbb72c91cf..c2edaf1fb00 100644
--- a/yolean/src/test/java/com/yahoo/yolean/concurrent/ThreadRobustListTestCase.java
+++ b/yolean/src/test/java/com/yahoo/yolean/concurrent/ThreadRobustListTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.concurrent;
import org.junit.Test;
diff --git a/yolean/src/test/java/com/yahoo/yolean/system/CatchSignalsTestCase.java b/yolean/src/test/java/com/yahoo/yolean/system/CatchSignalsTestCase.java
index e68ce334f31..66a27235088 100644
--- a/yolean/src/test/java/com/yahoo/yolean/system/CatchSignalsTestCase.java
+++ b/yolean/src/test/java/com/yahoo/yolean/system/CatchSignalsTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.system;
import org.junit.Test;
diff --git a/yolean/src/test/java/com/yahoo/yolean/trace/TraceNodeTestCase.java b/yolean/src/test/java/com/yahoo/yolean/trace/TraceNodeTestCase.java
index 84d1e78d1af..3019b646867 100644
--- a/yolean/src/test/java/com/yahoo/yolean/trace/TraceNodeTestCase.java
+++ b/yolean/src/test/java/com/yahoo/yolean/trace/TraceNodeTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.trace;
import org.junit.Test;
diff --git a/yolean/src/test/java/com/yahoo/yolean/trace/TraceVisitorTestCase.java b/yolean/src/test/java/com/yahoo/yolean/trace/TraceVisitorTestCase.java
index 86373710045..4eaa5b0241e 100644
--- a/yolean/src/test/java/com/yahoo/yolean/trace/TraceVisitorTestCase.java
+++ b/yolean/src/test/java/com/yahoo/yolean/trace/TraceVisitorTestCase.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.yolean.trace;
import org.junit.Test;
diff --git a/zkfacade/CMakeLists.txt b/zkfacade/CMakeLists.txt
index 6610356c0fd..4ea012aa9a5 100644
--- a/zkfacade/CMakeLists.txt
+++ b/zkfacade/CMakeLists.txt
@@ -1,2 +1,2 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(zkfacade)
diff --git a/zkfacade/pom.xml b/zkfacade/pom.xml
index 7140c490460..fd02410d03f 100644
--- a/zkfacade/pom.xml
+++ b/zkfacade/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/CompletionTimeoutException.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/CompletionTimeoutException.java
index 1518449627c..ab8defe5440 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/CompletionTimeoutException.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/CompletionTimeoutException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator;
/**
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/ConnectionSpec.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/ConnectionSpec.java
index 4409291419a..022932bef89 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/ConnectionSpec.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/ConnectionSpec.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator;
import com.yahoo.net.HostName;
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java
index 414a18eb56d..b82978836d5 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator;
import com.google.inject.Inject;
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/CuratorCompletionWaiter.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/CuratorCompletionWaiter.java
index af269fc2ad5..241ffbfd4d3 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/CuratorCompletionWaiter.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/CuratorCompletionWaiter.java
@@ -1,14 +1,14 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator;
-import java.util.ArrayList;
-import java.util.logging.Level;
import com.yahoo.path.Path;
import java.time.Clock;
import java.time.Duration;
import java.time.Instant;
+import java.util.ArrayList;
import java.util.List;
+import java.util.logging.Level;
/**
* Implementation of a Barrier that handles the case where more than number of members can call synchronize. If
@@ -55,13 +55,14 @@ class CuratorCompletionWaiter implements Curator.CompletionWaiter {
private List<String> awaitInternal(Duration timeout) throws Exception {
Instant startTime = clock.instant();
Instant endTime = startTime.plus(timeout);
+
List<String> respondents = new ArrayList<>();
do {
respondents.clear();
respondents.addAll(curator.framework().getChildren().forPath(barrierPath));
- if (log.isLoggable(Level.FINE)) {
- log.log(Level.FINE, respondents.size() + "/" + curator.zooKeeperEnsembleCount() + " responded: " +
- respondents + ", all participants: " + curator.zooKeeperEnsembleConnectionSpec());
+ if (log.isLoggable(Level.FINER)) {
+ log.log(Level.FINER, respondents.size() + "/" + curator.zooKeeperEnsembleCount() + " responded: " +
+ respondents + ", all participants: " + curator.zooKeeperEnsembleConnectionSpec());
}
// First, check if all config servers responded
@@ -110,8 +111,15 @@ class CuratorCompletionWaiter implements Curator.CompletionWaiter {
public static Curator.CompletionWaiter createAndInitialize(Curator curator, Path parentPath, String waiterNode, String id) {
Path waiterPath = parentPath.append(waiterNode);
+
+ String debugMessage = log.isLoggable(Level.FINE) ? "Recreating ZK path " + waiterPath : null;
+ if (debugMessage != null) log.fine(debugMessage);
+
curator.delete(waiterPath);
curator.createAtomically(waiterPath);
+
+ if (debugMessage != null) log.fine(debugMessage + ": Done");
+
return new CuratorCompletionWaiter(curator, waiterPath.getAbsolute(), id, Clock.systemUTC());
}
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/Lock.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/Lock.java
index 6c96748f92b..4b0ea433cdd 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/Lock.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/Lock.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator;
import com.google.common.util.concurrent.UncheckedTimeoutException;
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 ab6a17fd7d3..9c72c17cbc0 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/NodeCacheWrapper.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/NodeCacheWrapper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator;
import org.apache.curator.framework.CuratorFramework;
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 e069034e1d8..a93c01915ca 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/PathChildrenCacheWrapper.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/PathChildrenCacheWrapper.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator;
import com.yahoo.path.Path;
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/api/VespaCurator.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/api/VespaCurator.java
index 0b6fa55719e..dc717f6d65d 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/api/VespaCurator.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/api/VespaCurator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.api;
import com.yahoo.path.Path;
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/api/package-info.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/api/package-info.java
index 679dd3750cb..6d0dd884e71 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/api/package-info.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/api/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* @author mpolden
*/
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MemoryFileSystem.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MemoryFileSystem.java
index aabfa95b884..689e81c2d94 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MemoryFileSystem.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MemoryFileSystem.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.mock;
import java.io.IOException;
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCurator.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCurator.java
index 26f1c336874..bd3389b8d4d 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCurator.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCurator.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.mock;
import com.google.inject.Inject;
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 f968b2b5098..a307080dedf 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
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.mock;
import com.google.common.util.concurrent.UncheckedTimeoutException;
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/package-info.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/package-info.java
index 6f21d15daf2..a61745f0b17 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/package-info.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.curator.mock;
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/package-info.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/package-info.java
index 777da5988eb..ede5ef402a5 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/package-info.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
@PublicApi // TODO: Revoke this on Vespa 8.
package com.yahoo.vespa.curator;
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/recipes/CuratorCounter.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/recipes/CuratorCounter.java
index dd49b2595a4..27aefb1e257 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/recipes/CuratorCounter.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/recipes/CuratorCounter.java
@@ -1,6 +1,7 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.recipes;
+import com.yahoo.path.Path;
import com.yahoo.vespa.curator.Curator;
import org.apache.curator.framework.recipes.atomic.AtomicValue;
import org.apache.curator.framework.recipes.atomic.DistributedAtomicLong;
@@ -9,15 +10,14 @@ import org.apache.curator.framework.recipes.atomic.DistributedAtomicLong;
* A distributed atomic counter.
*
* @author Ulf Lilleengen
- * @since 5.1
*/
public class CuratorCounter {
private final DistributedAtomicLong counter;
- private final String counterPath;
+ private final Path counterPath;
- public CuratorCounter(Curator curator, String counterPath) {
- this.counter = curator.createAtomicCounter(counterPath);
+ public CuratorCounter(Curator curator, Path counterPath) {
+ this.counter = curator.createAtomicCounter(counterPath.getAbsolute());
this.counterPath = counterPath;
}
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/recipes/CuratorLockException.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/recipes/CuratorLockException.java
index dd1cfde811b..8e62c4c0141 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/recipes/CuratorLockException.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/recipes/CuratorLockException.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.recipes;
/**
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/recipes/package-info.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/recipes/package-info.java
index 369a63161b5..8abead38a8d 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/recipes/package-info.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/recipes/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.curator.recipes;
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LatencyMetrics.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LatencyMetrics.java
index 3bfb1fca4d9..0d5320c387a 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LatencyMetrics.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LatencyMetrics.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.stats;
import java.time.Duration;
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LatencyStats.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LatencyStats.java
index 0dc6e5ffb70..367d5ab2b9f 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LatencyStats.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LatencyStats.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.stats;
import java.time.Duration;
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LockAttempt.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LockAttempt.java
index a7a75a283f1..887e2cd2700 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LockAttempt.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LockAttempt.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.stats;
import java.time.Duration;
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LockAttemptSamples.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LockAttemptSamples.java
index 81435acb5e1..18e49b4dd5b 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LockAttemptSamples.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LockAttemptSamples.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.stats;
import java.util.Comparator;
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LockMetrics.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LockMetrics.java
index ce3676433cd..a3dab469401 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LockMetrics.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LockMetrics.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.stats;
import com.yahoo.vespa.curator.stats.LatencyStats.ActiveInterval;
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LockStats.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LockStats.java
index 0c51cfc685d..e4f78a4f9e9 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LockStats.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/LockStats.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.stats;
import java.util.Comparator;
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/RecordedLockAttempts.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/RecordedLockAttempts.java
index 668258028f2..6492d969427 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/RecordedLockAttempts.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/RecordedLockAttempts.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.stats;
import java.time.Duration;
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/ThreadLockStats.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/ThreadLockStats.java
index 6438dcb77b7..d4511bd04fb 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/ThreadLockStats.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/ThreadLockStats.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.stats;
import com.yahoo.vespa.curator.Lock;
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/package-info.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/package-info.java
index 15a81ffea70..83d45a7209d 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/package-info.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/stats/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.curator.stats;
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 fe005a83581..e46056bd286 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
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.transaction;
import com.yahoo.path.Path;
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 66db3da9b83..97353eb0537 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
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.transaction;
import com.yahoo.path.Path;
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 f6c6984dc62..fbc6c95f1c5 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
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.transaction;
import com.yahoo.transaction.Transaction;
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorOperations.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorOperations.java
index 94384c46922..59ee322beb3 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorOperations.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorOperations.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.transaction;
import com.yahoo.path.Path;
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 a26e0776f36..418cf45eb78 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
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.transaction;
import com.yahoo.path.Path;
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 92972c99194..4e5b911f66b 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
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.transaction;
import com.yahoo.transaction.AbstractTransaction;
@@ -62,7 +62,7 @@ public class CuratorTransaction extends AbstractTransaction {
}
((CuratorTransactionFinal) transaction).commit();
} catch (Exception e) {
- throw new IllegalStateException(e);
+ throw new IllegalStateException("Failed to commit " + toString(), e);
}
}
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/TransactionChanges.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/TransactionChanges.java
index 9ca618bae08..33f2abc8f8b 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/TransactionChanges.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/TransactionChanges.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.transaction;
import java.util.HashSet;
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/package-info.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/package-info.java
index 3e11dc0ec3a..f624c70a879 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/package-info.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.curator.transaction;
diff --git a/zkfacade/src/main/java/org/apache/curator/Dummy.java b/zkfacade/src/main/java/org/apache/curator/Dummy.java
index 8fad7da5762..0156903b167 100644
--- a/zkfacade/src/main/java/org/apache/curator/Dummy.java
+++ b/zkfacade/src/main/java/org/apache/curator/Dummy.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package org.apache.curator;
/**
diff --git a/zkfacade/src/main/java/org/apache/curator/framework/api/package-info.java b/zkfacade/src/main/java/org/apache/curator/framework/api/package-info.java
index 3bf1d2192bd..a69eae10090 100644
--- a/zkfacade/src/main/java/org/apache/curator/framework/api/package-info.java
+++ b/zkfacade/src/main/java/org/apache/curator/framework/api/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage(version = @Version(major = 5, minor = 1, micro = 0))
package org.apache.curator.framework.api;
import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/zkfacade/src/main/java/org/apache/curator/framework/api/transaction/package-info.java b/zkfacade/src/main/java/org/apache/curator/framework/api/transaction/package-info.java
index 487d9b87e4e..e1ccdc6e633 100644
--- a/zkfacade/src/main/java/org/apache/curator/framework/api/transaction/package-info.java
+++ b/zkfacade/src/main/java/org/apache/curator/framework/api/transaction/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage(version = @Version(major = 5, minor = 1, micro = 0))
package org.apache.curator.framework.api.transaction;
import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/zkfacade/src/main/java/org/apache/curator/framework/listen/package-info.java b/zkfacade/src/main/java/org/apache/curator/framework/listen/package-info.java
index 076022b2240..b00e283665d 100644
--- a/zkfacade/src/main/java/org/apache/curator/framework/listen/package-info.java
+++ b/zkfacade/src/main/java/org/apache/curator/framework/listen/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage(version = @Version(major = 5, minor = 1, micro = 0))
package org.apache.curator.framework.listen;
import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/zkfacade/src/main/java/org/apache/curator/framework/package-info.java b/zkfacade/src/main/java/org/apache/curator/framework/package-info.java
index bfb643627d2..4903ca4cd85 100644
--- a/zkfacade/src/main/java/org/apache/curator/framework/package-info.java
+++ b/zkfacade/src/main/java/org/apache/curator/framework/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage(version = @Version(major = 5, minor = 1, micro = 0))
package org.apache.curator.framework;
import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/zkfacade/src/main/java/org/apache/curator/framework/recipes/atomic/package-info.java b/zkfacade/src/main/java/org/apache/curator/framework/recipes/atomic/package-info.java
index d40a238a5c6..1e161f470a8 100644
--- a/zkfacade/src/main/java/org/apache/curator/framework/recipes/atomic/package-info.java
+++ b/zkfacade/src/main/java/org/apache/curator/framework/recipes/atomic/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage(version = @Version(major = 5, minor = 1, micro = 0))
package org.apache.curator.framework.recipes.atomic;
import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/zkfacade/src/main/java/org/apache/curator/framework/recipes/barriers/package-info.java b/zkfacade/src/main/java/org/apache/curator/framework/recipes/barriers/package-info.java
index 58c56692adb..e848d129e62 100644
--- a/zkfacade/src/main/java/org/apache/curator/framework/recipes/barriers/package-info.java
+++ b/zkfacade/src/main/java/org/apache/curator/framework/recipes/barriers/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage(version = @Version(major = 5, minor = 1, micro = 0))
package org.apache.curator.framework.recipes.barriers;
import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/zkfacade/src/main/java/org/apache/curator/framework/recipes/cache/package-info.java b/zkfacade/src/main/java/org/apache/curator/framework/recipes/cache/package-info.java
index 7ed48f808c0..949e3036011 100644
--- a/zkfacade/src/main/java/org/apache/curator/framework/recipes/cache/package-info.java
+++ b/zkfacade/src/main/java/org/apache/curator/framework/recipes/cache/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage(version = @Version(major = 5, minor = 1, micro = 0))
package org.apache.curator.framework.recipes.cache;
import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/zkfacade/src/main/java/org/apache/curator/framework/recipes/locks/package-info.java b/zkfacade/src/main/java/org/apache/curator/framework/recipes/locks/package-info.java
index 834f7eb11f5..52dcc9df1e0 100644
--- a/zkfacade/src/main/java/org/apache/curator/framework/recipes/locks/package-info.java
+++ b/zkfacade/src/main/java/org/apache/curator/framework/recipes/locks/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage(version = @Version(major = 5, minor = 1, micro = 0))
package org.apache.curator.framework.recipes.locks;
import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/zkfacade/src/main/java/org/apache/curator/framework/state/package-info.java b/zkfacade/src/main/java/org/apache/curator/framework/state/package-info.java
index 22c3075161a..dd27bd8fc4d 100644
--- a/zkfacade/src/main/java/org/apache/curator/framework/state/package-info.java
+++ b/zkfacade/src/main/java/org/apache/curator/framework/state/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage(version = @Version(major = 5, minor = 1, micro = 0))
package org.apache.curator.framework.state;
import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/zkfacade/src/main/java/org/apache/curator/package-info.java b/zkfacade/src/main/java/org/apache/curator/package-info.java
index 7248986dcde..17ef18393d0 100644
--- a/zkfacade/src/main/java/org/apache/curator/package-info.java
+++ b/zkfacade/src/main/java/org/apache/curator/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage(version = @Version(major = 5, minor = 1, micro = 0))
package org.apache.curator;
import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/zkfacade/src/main/java/org/apache/curator/retry/package-info.java b/zkfacade/src/main/java/org/apache/curator/retry/package-info.java
index cebabfd75a0..e898600c1a5 100644
--- a/zkfacade/src/main/java/org/apache/curator/retry/package-info.java
+++ b/zkfacade/src/main/java/org/apache/curator/retry/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage(version = @Version(major = 5, minor = 1, micro = 0))
package org.apache.curator.retry;
import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/zkfacade/src/main/java/org/apache/zookeeper/client/package-info.java b/zkfacade/src/main/java/org/apache/zookeeper/client/package-info.java
index e8c8623647a..e6b860f5f5c 100644
--- a/zkfacade/src/main/java/org/apache/zookeeper/client/package-info.java
+++ b/zkfacade/src/main/java/org/apache/zookeeper/client/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Required for export of {@link org.apache.zookeeper.client.ZKClientConfig}.
*
diff --git a/zkfacade/src/main/java/org/apache/zookeeper/common/package-info.java b/zkfacade/src/main/java/org/apache/zookeeper/common/package-info.java
index 3da12af57ec..2b81622fb42 100644
--- a/zkfacade/src/main/java/org/apache/zookeeper/common/package-info.java
+++ b/zkfacade/src/main/java/org/apache/zookeeper/common/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Required for export of {@link org.apache.zookeeper.client.ZKClientConfig} (which inherits from {@link org.apache.zookeeper.common.ZKConfig}).
*
diff --git a/zkfacade/src/main/java/org/apache/zookeeper/data/package-info.java b/zkfacade/src/main/java/org/apache/zookeeper/data/package-info.java
index bcc8eac69dd..0fe587931fa 100644
--- a/zkfacade/src/main/java/org/apache/zookeeper/data/package-info.java
+++ b/zkfacade/src/main/java/org/apache/zookeeper/data/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage(version = @Version(major = 3, minor = 4, micro = 6))
package org.apache.zookeeper.data;
diff --git a/zkfacade/src/main/java/org/apache/zookeeper/package-info.java b/zkfacade/src/main/java/org/apache/zookeeper/package-info.java
index daa8bc8f7b9..9585d391ce1 100644
--- a/zkfacade/src/main/java/org/apache/zookeeper/package-info.java
+++ b/zkfacade/src/main/java/org/apache/zookeeper/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage(version = @Version(major = 3, minor = 4, micro = 6))
package org.apache.zookeeper;
diff --git a/zkfacade/src/main/java/org/apache/zookeeper/server/quorum/package-info.java b/zkfacade/src/main/java/org/apache/zookeeper/server/quorum/package-info.java
index 833193c52bb..eaabdbf7a52 100644
--- a/zkfacade/src/main/java/org/apache/zookeeper/server/quorum/package-info.java
+++ b/zkfacade/src/main/java/org/apache/zookeeper/server/quorum/package-info.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
* Required for export of {@link org.apache.zookeeper.client.ZKClientConfig} (which inherits from {@link org.apache.zookeeper.common.ZKConfig}).
*
diff --git a/zkfacade/src/test/java/com/yahoo/vespa/curator/ConnectionSpecTest.java b/zkfacade/src/test/java/com/yahoo/vespa/curator/ConnectionSpecTest.java
index a518d8df843..6e833088f0d 100644
--- a/zkfacade/src/test/java/com/yahoo/vespa/curator/ConnectionSpecTest.java
+++ b/zkfacade/src/test/java/com/yahoo/vespa/curator/ConnectionSpecTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator;
import com.yahoo.net.HostName;
diff --git a/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorCompletionWaiterTest.java b/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorCompletionWaiterTest.java
index 54bba4aa619..8b635d2efdf 100644
--- a/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorCompletionWaiterTest.java
+++ b/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorCompletionWaiterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator;
import com.yahoo.path.Path;
diff --git a/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorCounterTest.java b/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorCounterTest.java
index 6b85953a1ff..f33151ed9b1 100644
--- a/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorCounterTest.java
+++ b/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorCounterTest.java
@@ -1,9 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator;
import com.yahoo.vespa.curator.mock.MockCurator;
import org.apache.curator.framework.recipes.atomic.DistributedAtomicLong;
import org.junit.Test;
+
import static org.junit.Assert.assertEquals;
/**
@@ -14,9 +15,9 @@ public class CuratorCounterTest {
@Test
public void testCounter() throws Exception {
DistributedAtomicLong counter = new MockCurator().createAtomicCounter("/mycounter");
- counter.initialize(4l);
- assertEquals(4l, counter.get().postValue().longValue());
- assertEquals(5l, counter.increment().postValue().longValue());
+ counter.initialize(4L);
+ assertEquals(4L, counter.get().postValue().longValue());
+ assertEquals(5L, counter.increment().postValue().longValue());
}
}
diff --git a/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorTest.java b/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorTest.java
index 96619258ed3..c4e0cfd3b83 100644
--- a/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorTest.java
+++ b/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator;
import com.yahoo.cloud.config.CuratorConfig;
diff --git a/zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LatencyStatsTest.java b/zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LatencyStatsTest.java
index 44d9e6e73ba..acf71156276 100644
--- a/zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LatencyStatsTest.java
+++ b/zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LatencyStatsTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.stats;
import com.yahoo.vespa.curator.stats.LatencyStats.ActiveInterval;
diff --git a/zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockAttemptSamplesTest.java b/zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockAttemptSamplesTest.java
index e54e340deb5..8bee489e0b5 100644
--- a/zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockAttemptSamplesTest.java
+++ b/zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockAttemptSamplesTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.stats;
import org.junit.Test;
diff --git a/zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockTest.java b/zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockTest.java
index 6c2625e8309..607ab4004a7 100644
--- a/zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockTest.java
+++ b/zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.curator.stats;
import com.google.common.util.concurrent.UncheckedTimeoutException;
diff --git a/zookeeper-client-common/README.md b/zookeeper-client-common/README.md
index 9f8952a0cd3..e6f60aebc39 100644
--- a/zookeeper-client-common/README.md
+++ b/zookeeper-client-common/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
# zookeeper-client-common
Shared client configuration logic for ZooKeeper clients
diff --git a/zookeeper-client-common/src/main/java/com/yahoo/vespa/zookeeper/client/VespaSslContextProvider.java b/zookeeper-client-common/src/main/java/com/yahoo/vespa/zookeeper/client/VespaSslContextProvider.java
index 209e08db6cc..b1076328b87 100644
--- a/zookeeper-client-common/src/main/java/com/yahoo/vespa/zookeeper/client/VespaSslContextProvider.java
+++ b/zookeeper-client-common/src/main/java/com/yahoo/vespa/zookeeper/client/VespaSslContextProvider.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper.client;
import com.yahoo.security.tls.TlsContext;
diff --git a/zookeeper-client-common/src/main/java/com/yahoo/vespa/zookeeper/client/ZkClientConfigBuilder.java b/zookeeper-client-common/src/main/java/com/yahoo/vespa/zookeeper/client/ZkClientConfigBuilder.java
index 6ae7fe26cd7..e329754e8e5 100644
--- a/zookeeper-client-common/src/main/java/com/yahoo/vespa/zookeeper/client/ZkClientConfigBuilder.java
+++ b/zookeeper-client-common/src/main/java/com/yahoo/vespa/zookeeper/client/ZkClientConfigBuilder.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper.client;
import com.yahoo.security.tls.MixedMode;
diff --git a/zookeeper-client-common/src/test/java/com/yahoo/vespa/zookeeper/client/ZkClientConfigBuilderTest.java b/zookeeper-client-common/src/test/java/com/yahoo/vespa/zookeeper/client/ZkClientConfigBuilderTest.java
index 48bfb7ffdd8..7ffce79b67a 100644
--- a/zookeeper-client-common/src/test/java/com/yahoo/vespa/zookeeper/client/ZkClientConfigBuilderTest.java
+++ b/zookeeper-client-common/src/test/java/com/yahoo/vespa/zookeeper/client/ZkClientConfigBuilderTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper.client;
import com.yahoo.security.tls.TlsContext;
diff --git a/zookeeper-command-line-client/pom.xml b/zookeeper-command-line-client/pom.xml
index 50301914e41..f1fc49dcb1c 100644
--- a/zookeeper-command-line-client/pom.xml
+++ b/zookeeper-command-line-client/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/zookeeper-command-line-client/src/main/java/com/yahoo/vespa/zookeeper/cli/FourLetterWordMain.java b/zookeeper-command-line-client/src/main/java/com/yahoo/vespa/zookeeper/cli/FourLetterWordMain.java
index b54fd9ead25..9d2cdc1c4b8 100644
--- a/zookeeper-command-line-client/src/main/java/com/yahoo/vespa/zookeeper/cli/FourLetterWordMain.java
+++ b/zookeeper-command-line-client/src/main/java/com/yahoo/vespa/zookeeper/cli/FourLetterWordMain.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper.cli;
import com.yahoo.vespa.zookeeper.client.ZkClientConfigBuilder;
diff --git a/zookeeper-command-line-client/src/main/java/com/yahoo/vespa/zookeeper/cli/Main.java b/zookeeper-command-line-client/src/main/java/com/yahoo/vespa/zookeeper/cli/Main.java
index 1bc1a21a237..3c89e5105ca 100644
--- a/zookeeper-command-line-client/src/main/java/com/yahoo/vespa/zookeeper/cli/Main.java
+++ b/zookeeper-command-line-client/src/main/java/com/yahoo/vespa/zookeeper/cli/Main.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper.cli;
import com.yahoo.vespa.zookeeper.client.ZkClientConfigBuilder;
diff --git a/zookeeper-command-line-client/src/main/sh/vespa-zkcat b/zookeeper-command-line-client/src/main/sh/vespa-zkcat
index e156fbb109e..425fd06171f 100755
--- a/zookeeper-command-line-client/src/main/sh/vespa-zkcat
+++ b/zookeeper-command-line-client/src/main/sh/vespa-zkcat
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/zookeeper-command-line-client/src/main/sh/vespa-zkcli b/zookeeper-command-line-client/src/main/sh/vespa-zkcli
index 0406e3d89c2..75de99f3366 100755
--- a/zookeeper-command-line-client/src/main/sh/vespa-zkcli
+++ b/zookeeper-command-line-client/src/main/sh/vespa-zkcli
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/zookeeper-command-line-client/src/main/sh/vespa-zkctl b/zookeeper-command-line-client/src/main/sh/vespa-zkctl
index 88165a1ed38..06d32848128 100755
--- a/zookeeper-command-line-client/src/main/sh/vespa-zkctl
+++ b/zookeeper-command-line-client/src/main/sh/vespa-zkctl
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/zookeeper-command-line-client/src/main/sh/vespa-zkflw b/zookeeper-command-line-client/src/main/sh/vespa-zkflw
index e543bd4e69d..f0619004579 100644
--- a/zookeeper-command-line-client/src/main/sh/vespa-zkflw
+++ b/zookeeper-command-line-client/src/main/sh/vespa-zkflw
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/zookeeper-command-line-client/src/main/sh/vespa-zkls b/zookeeper-command-line-client/src/main/sh/vespa-zkls
index c290d2ff3ac..dca81c55831 100755
--- a/zookeeper-command-line-client/src/main/sh/vespa-zkls
+++ b/zookeeper-command-line-client/src/main/sh/vespa-zkls
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# BEGIN environment bootstrap section
# Do not edit between here and END as this section should stay identical in all scripts
diff --git a/zookeeper-server/CMakeLists.txt b/zookeeper-server/CMakeLists.txt
index 9dee07390b5..17c8bdf993a 100644
--- a/zookeeper-server/CMakeLists.txt
+++ b/zookeeper-server/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
add_subdirectory(zookeeper-server-common)
add_subdirectory(zookeeper-server-3.6.2)
add_subdirectory(zookeeper-server-3.6.3)
diff --git a/zookeeper-server/pom.xml b/zookeeper-server/pom.xml
index 919e2b99848..771fc53593f 100644
--- a/zookeeper-server/pom.xml
+++ b/zookeeper-server/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/zookeeper-server/zookeeper-server-3.6.2/CMakeLists.txt b/zookeeper-server/zookeeper-server-3.6.2/CMakeLists.txt
index 1167067ec73..ac2e9df3acd 100644
--- a/zookeeper-server/zookeeper-server-3.6.2/CMakeLists.txt
+++ b/zookeeper-server/zookeeper-server-3.6.2/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(zookeeper-server-3.6.2)
# Needs to be included when this is the wanted default version (and symlinks for other versions need to be removed)
#install_symlink(lib/jars/zookeeper-server-3.6.2-jar-with-dependencies.jar lib/jars/zookeeper-server-jar-with-dependencies.jar)
diff --git a/zookeeper-server/zookeeper-server-3.6.2/pom.xml b/zookeeper-server/zookeeper-server-3.6.2/pom.xml
index e40ba8fa161..e3c18f07077 100644
--- a/zookeeper-server/zookeeper-server-3.6.2/pom.xml
+++ b/zookeeper-server/zookeeper-server-3.6.2/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java b/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java
index 0b08966e241..c002ffa72ce 100644
--- a/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java
+++ b/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import com.google.inject.Inject;
diff --git a/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaMtlsAuthenticationProvider.java b/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaMtlsAuthenticationProvider.java
index 7a0efbb6c24..66742b0e05b 100644
--- a/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaMtlsAuthenticationProvider.java
+++ b/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaMtlsAuthenticationProvider.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import org.apache.zookeeper.KeeperException;
diff --git a/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaQuorumPeer.java b/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaQuorumPeer.java
index 113669b2e76..4d499633841 100644
--- a/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaQuorumPeer.java
+++ b/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaQuorumPeer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import com.yahoo.protect.Process;
diff --git a/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java b/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java
index d92527fb5fd..2235d659307 100644
--- a/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java
+++ b/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import com.yahoo.vespa.zookeeper.client.ZkClientConfigBuilder;
diff --git a/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java b/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java
index 430aab802c2..8f3a5a91a43 100644
--- a/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java
+++ b/zookeeper-server/zookeeper-server-3.6.2/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import com.google.inject.Inject;
diff --git a/zookeeper-server/zookeeper-server-3.6.2/src/main/java/org/apache/zookeeper/common/NetUtils.java b/zookeeper-server/zookeeper-server-3.6.2/src/main/java/org/apache/zookeeper/common/NetUtils.java
index 79d063ba70a..33ec9b1303a 100644
--- a/zookeeper-server/zookeeper-server-3.6.2/src/main/java/org/apache/zookeeper/common/NetUtils.java
+++ b/zookeeper-server/zookeeper-server-3.6.2/src/main/java/org/apache/zookeeper/common/NetUtils.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
diff --git a/zookeeper-server/zookeeper-server-3.6.2/src/main/java/org/apache/zookeeper/server/VespaNettyServerCnxnFactory.java b/zookeeper-server/zookeeper-server-3.6.2/src/main/java/org/apache/zookeeper/server/VespaNettyServerCnxnFactory.java
index 7efec454667..fdfe0fe8467 100644
--- a/zookeeper-server/zookeeper-server-3.6.2/src/main/java/org/apache/zookeeper/server/VespaNettyServerCnxnFactory.java
+++ b/zookeeper-server/zookeeper-server-3.6.2/src/main/java/org/apache/zookeeper/server/VespaNettyServerCnxnFactory.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package org.apache.zookeeper.server;
import com.yahoo.vespa.zookeeper.Configurator;
diff --git a/zookeeper-server/zookeeper-server-3.6.3/CMakeLists.txt b/zookeeper-server/zookeeper-server-3.6.3/CMakeLists.txt
index af216e0e8c2..9e6e235f6b4 100644
--- a/zookeeper-server/zookeeper-server-3.6.3/CMakeLists.txt
+++ b/zookeeper-server/zookeeper-server-3.6.3/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
install_fat_java_artifact(zookeeper-server-3.6.3)
# Needs to be included when this is the wanted default version (and symlinks for other versions need to be removed)
install_symlink(lib/jars/zookeeper-server-3.6.3-jar-with-dependencies.jar lib/jars/zookeeper-server-jar-with-dependencies.jar)
diff --git a/zookeeper-server/zookeeper-server-3.6.3/pom.xml b/zookeeper-server/zookeeper-server-3.6.3/pom.xml
index 3074f3d2117..f7e6f512f7c 100644
--- a/zookeeper-server/zookeeper-server-3.6.3/pom.xml
+++ b/zookeeper-server/zookeeper-server-3.6.3/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java b/zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java
index 0b08966e241..c002ffa72ce 100644
--- a/zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java
+++ b/zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import com.google.inject.Inject;
diff --git a/zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/VespaMtlsAuthenticationProvider.java b/zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/VespaMtlsAuthenticationProvider.java
index 7a0efbb6c24..66742b0e05b 100644
--- a/zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/VespaMtlsAuthenticationProvider.java
+++ b/zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/VespaMtlsAuthenticationProvider.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import org.apache.zookeeper.KeeperException;
diff --git a/zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/VespaQuorumPeer.java b/zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/VespaQuorumPeer.java
index c4062c64dd4..47ec03367c1 100644
--- a/zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/VespaQuorumPeer.java
+++ b/zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/VespaQuorumPeer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import com.yahoo.protect.Process;
diff --git a/zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java b/zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java
index b41b80d6f93..27aa18c64c7 100644
--- a/zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java
+++ b/zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import com.yahoo.vespa.zookeeper.client.ZkClientConfigBuilder;
diff --git a/zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java b/zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java
index 430aab802c2..8f3a5a91a43 100644
--- a/zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java
+++ b/zookeeper-server/zookeeper-server-3.6.3/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import com.google.inject.Inject;
diff --git a/zookeeper-server/zookeeper-server-3.6.3/src/main/java/org/apache/zookeeper/common/NetUtils.java b/zookeeper-server/zookeeper-server-3.6.3/src/main/java/org/apache/zookeeper/common/NetUtils.java
index 79d063ba70a..33ec9b1303a 100644
--- a/zookeeper-server/zookeeper-server-3.6.3/src/main/java/org/apache/zookeeper/common/NetUtils.java
+++ b/zookeeper-server/zookeeper-server-3.6.3/src/main/java/org/apache/zookeeper/common/NetUtils.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
diff --git a/zookeeper-server/zookeeper-server-3.6.3/src/main/java/org/apache/zookeeper/server/VespaNettyServerCnxnFactory.java b/zookeeper-server/zookeeper-server-3.6.3/src/main/java/org/apache/zookeeper/server/VespaNettyServerCnxnFactory.java
index 7efec454667..fdfe0fe8467 100644
--- a/zookeeper-server/zookeeper-server-3.6.3/src/main/java/org/apache/zookeeper/server/VespaNettyServerCnxnFactory.java
+++ b/zookeeper-server/zookeeper-server-3.6.3/src/main/java/org/apache/zookeeper/server/VespaNettyServerCnxnFactory.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package org.apache.zookeeper.server;
import com.yahoo.vespa.zookeeper.Configurator;
diff --git a/zookeeper-server/zookeeper-server-common/pom.xml b/zookeeper-server/zookeeper-server-common/pom.xml
index b05136cd151..a9f74cb1d0e 100644
--- a/zookeeper-server/zookeeper-server-common/pom.xml
+++ b/zookeeper-server/zookeeper-server-common/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
diff --git a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Configurator.java b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Configurator.java
index 863374f40f6..f95704f8b58 100644
--- a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Configurator.java
+++ b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Configurator.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import com.yahoo.cloud.config.ZookeeperServerConfig;
diff --git a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/DummyVespaZooKeeperServer.java b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/DummyVespaZooKeeperServer.java
index c0b5b7c035f..2e0fcae2007 100644
--- a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/DummyVespaZooKeeperServer.java
+++ b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/DummyVespaZooKeeperServer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import com.google.inject.Inject;
diff --git a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/ExponentialBackoff.java b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/ExponentialBackoff.java
index 9f3ca594d38..851b0ce40df 100644
--- a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/ExponentialBackoff.java
+++ b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/ExponentialBackoff.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import java.time.Duration;
diff --git a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/QuorumPeer.java b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/QuorumPeer.java
index 010b6546443..56befd4df4e 100644
--- a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/QuorumPeer.java
+++ b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/QuorumPeer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import java.nio.file.Path;
diff --git a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/ReconfigException.java b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/ReconfigException.java
index 765bff474a8..5e16b6644a1 100644
--- a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/ReconfigException.java
+++ b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/ReconfigException.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
/**
diff --git a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java
index f0318ddfcad..d4223e4d815 100644
--- a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java
+++ b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import com.google.inject.Inject;
diff --git a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Sleeper.java b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Sleeper.java
index f09e82628f1..480fc6ab89c 100644
--- a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Sleeper.java
+++ b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Sleeper.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import java.time.Duration;
diff --git a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaSslContextProvider.java b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaSslContextProvider.java
index b65cb9faf53..89a0fa8a924 100644
--- a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaSslContextProvider.java
+++ b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaSslContextProvider.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import com.yahoo.security.tls.TlsContext;
diff --git a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdmin.java b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdmin.java
index 1a7bf483ac5..8809dca0def 100644
--- a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdmin.java
+++ b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdmin.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import java.time.Duration;
diff --git a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServer.java b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServer.java
index bb64fcc16ce..68fcbcc4983 100644
--- a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServer.java
+++ b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServer.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import java.nio.file.Path;
diff --git a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperRunner.java b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperRunner.java
index db8db1ac4b7..0a5595bf455 100644
--- a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperRunner.java
+++ b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperRunner.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import com.yahoo.cloud.config.ZookeeperServerConfig;
diff --git a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/package-info.java b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/package-info.java
index 470d1350f9c..3a8831199b4 100644
--- a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/package-info.java
+++ b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/package-info.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
@ExportPackage
package com.yahoo.vespa.zookeeper;
diff --git a/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ConfiguratorTest.java b/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ConfiguratorTest.java
index ae84ff12b3b..d2361853436 100644
--- a/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ConfiguratorTest.java
+++ b/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ConfiguratorTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import com.yahoo.cloud.config.ZookeeperServerConfig;
diff --git a/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ExponentialBackoffTest.java b/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ExponentialBackoffTest.java
index 65e367f8ae8..f3328acbacc 100644
--- a/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ExponentialBackoffTest.java
+++ b/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ExponentialBackoffTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import org.junit.Test;
diff --git a/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java b/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java
index a9c9d65e957..1211624e3d6 100644
--- a/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java
+++ b/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java
@@ -1,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
import com.yahoo.cloud.config.ZookeeperServerConfig;